一種指令級并行處理器低功耗設(shè)計(jì)優(yōu)化方法
【專利摘要】本發(fā)明涉及一種指令級并行處理器低功耗設(shè)計(jì)優(yōu)化方法,包括:利用編譯器分析輸入的應(yīng)用程式各個部分的硬件資源和并行度需求量信息,并且得到該應(yīng)用程式的基本塊,以及由這些基本塊構(gòu)成的控制流圖CFG和循環(huán)層次樹LHTs;識別區(qū)域核心;擴(kuò)大區(qū)域,把剩余的基本塊合并進(jìn)來,找出與剩余的基本塊直接相連的區(qū)域核心,比較連接這些區(qū)域核心的邊的執(zhí)行次數(shù),找出執(zhí)行次數(shù)最大的邊,并把這條最大的邊連接的基本塊合并到區(qū)域核心中,直到?jīng)]有剩余的基本塊為止;重新調(diào)度這支應(yīng)用程式,每個區(qū)域用設(shè)置好的并行度進(jìn)行調(diào)度,并在每個區(qū)域執(zhí)行前插入power gating指令,把空閑的硬件資源關(guān)斷,降低漏電功耗。本發(fā)明可以以減小漏電功耗對處理器工作性能的影響,提高ILP處理器中硬件資源的利用率。
【專利說明】一種指令級并行處理器低功耗設(shè)計(jì)優(yōu)化方法 所屬技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)技術(shù)領(lǐng)域,涉及一種低功耗設(shè)計(jì)優(yōu)化方法。
【背景技術(shù)】
[0002] 最近幾年,智能手機(jī),可穿戴式智能設(shè)備等電子產(chǎn)品迅速發(fā)展,幾乎每個人都擁有 一部電子設(shè)備,這些電子設(shè)備執(zhí)行速度可以滿足大多數(shù)用戶的使用需求,但是功耗問題卻 特別突出,經(jīng)常會影響設(shè)備的性能,操作時間;特別在互聯(lián)網(wǎng)+時代,對于計(jì)算機(jī),智能機(jī)的 性能要求越來越高,提高設(shè)備的能量效率,即在不影響設(shè)備執(zhí)行速度的前提下,降低功耗就 越來越重要。
[0003] 這些電子設(shè)備執(zhí)行速度快主要原因是指令級并行(Instruction Level Parallelism, ILP)處理器結(jié)構(gòu)的應(yīng)用,該結(jié)構(gòu)使得多條指令可以在同一時間內(nèi)同時執(zhí)行。 但是不同的應(yīng)用程式運(yùn)行在ILP處理器上時,對于硬件資源(如:功能單元和寄存器)的需求 量有很大的差異,甚至在同一支應(yīng)用程式中,不同的部分在執(zhí)行的過程中對于硬件資源的 需求量差異也很明顯,如果利用傳統(tǒng)的自始至終ILP處理器的全部硬件資源同時開啟,即以 最大的并行度執(zhí)行一支應(yīng)用程式,那么對于硬件資源需求量很小的程式必然會造成額外的 資源浪費(fèi),這些處于空閑狀態(tài)的硬件資源必然會引起額外的漏電功耗;特別是晶體管的特 征尺寸進(jìn)入深亞微米級時,漏電功耗急劇增加甚至?xí)^動態(tài)功耗,ILP處理器中這些處于 空閑狀態(tài)的硬件資源產(chǎn)生的漏電功耗必然會降低處理器工作的性能,進(jìn)而影響設(shè)備的可靠 性。
[0004]為了降低漏電功耗,電源門控(power gating)技術(shù)作為電流開關(guān)被廣泛應(yīng)用,即 通過把空閑的設(shè)備關(guān)斷來降低漏電功耗。power gating技術(shù)在應(yīng)用時面臨的巨大挑戰(zhàn)就是 使電路狀態(tài)發(fā)生轉(zhuǎn)換的過程中,會產(chǎn)生很大的耗能和延遲,這導(dǎo)致電路不能在任何時候都 隨意的開啟和關(guān)斷,power gating指令必須插入到合適的地方。但是Tabkhi于2014年提出 的AFReP算法沒有考慮power gating技術(shù)產(chǎn)生的狀態(tài)轉(zhuǎn)換的額外耗能,只是在執(zhí)行應(yīng)用程 式中每個函數(shù)前插入power gating指令,這導(dǎo)致了硬件設(shè)備頻繁開啟,即每進(jìn)入一個函數(shù) 都改變一次硬件組態(tài),硬件設(shè)備的頻繁開啟,導(dǎo)致產(chǎn)生很大的額外耗能,總體評估AFReP的 節(jié)能效果,雖然降低了漏電耗能,但是卻產(chǎn)生很大的額外耗能,效果不好。為了達(dá)到省電的 目的,必須保證節(jié)約的漏電耗能大于電路開關(guān)過程中產(chǎn)生的額外耗能,必須找到合適地方 插入power gating指令,并且應(yīng)用程式不同的地方根據(jù)需求設(shè)置合適的并行度執(zhí)行。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的是在不影響執(zhí)行時間的前提下,提供一種能降低ILP處理器中處于 空閑狀態(tài)的硬件資源產(chǎn)生的漏電功耗的優(yōu)化方法,以減小漏電功耗對處理器工作性能的影 響,提高ILP處理器中硬件資源的利用率,并且提高以ILP處理器為核心的設(shè)備的可靠性。主 要技術(shù)方案如下:
[0006] -種指令級并行處理器低功耗設(shè)計(jì)優(yōu)化方法,包括下列步驟:
[0007] (1)利用編譯器分析輸入的應(yīng)用程式各個部分的硬件資源和并行度需求量信息, 并且得到該應(yīng)用程式的基本塊,以及由這些基本塊構(gòu)成的控制流圖CFG和循環(huán)層次樹LHTs;
[0008] (2)劃分應(yīng)用程式,把應(yīng)用程式切割為不同的區(qū)域,方法如下:
[0009] 第一步,識別區(qū)域核心:找出這段應(yīng)用程式中可以形成區(qū)域核心的循環(huán),計(jì)算Tth為 設(shè)備關(guān)斷的最小空閑時間,在關(guān)斷的最小空閑時間T th內(nèi),恰好使得節(jié)約的漏電耗能等于開 關(guān)過程中產(chǎn)生的額外耗能,公式如下:
[0011]其中,Ec^rhud
為電路開關(guān)一次消耗的能量,電路處于空閑狀態(tài)消耗的漏 電功率;從底向上處理LHTs的每個循環(huán),如果有某些循環(huán)的執(zhí)行時間超過Tth,則這些循環(huán)被 識別為區(qū)域核心;
[0012]第二步,以這些循環(huán)為區(qū)域核心,擴(kuò)大區(qū)域,把剩余的基本塊合并進(jìn)來,找出與剩 余的基本塊直接相連的區(qū)域核心,比較連接這些區(qū)域核心的邊的執(zhí)行次數(shù),找出執(zhí)行次數(shù) 最大的邊,并把這條最大的邊連接的基本塊合并到區(qū)域核心中,直到?jīng)]有剩余的基本塊為 止;
[0013] (3)根據(jù)各個區(qū)域硬件資源和并行度的需求量,設(shè)置各個區(qū)域的執(zhí)行并行度為飽 和并行度,使整個應(yīng)用程式執(zhí)行過程中,根據(jù)自身需求,能不斷的調(diào)整和改變并行度;
[0014] (4)編譯器重新調(diào)度這支應(yīng)用程式,每個區(qū)域用設(shè)置好的并行度進(jìn)行調(diào)度,并在每 個區(qū)域執(zhí)行前插入power gating指令,把空閑的硬件資源關(guān)斷,降低漏電功耗。
[0015]該方法在滿足預(yù)期執(zhí)行時間的前提下,充分考慮power gating指令插入后,硬件 狀態(tài)轉(zhuǎn)換(硬件開啟和關(guān)斷轉(zhuǎn)換)過程中引起的額外的耗能和延遲,合理的劃分應(yīng)用程式, 插入power gating指令,使得一支程式不同的程序段采用不同的并行度和硬件組態(tài)執(zhí)行, 最終使得ILP處理器漏電功耗降低,并且狀態(tài)轉(zhuǎn)換引起的額外耗能也盡可能小,提高能量效 率。
【附圖說明】
[0016]圖1編譯器工作流程(技術(shù)方案)。
[0017] 圖2原始應(yīng)用程式段。
[0018] 圖3(a)應(yīng)用程式的控制流圖(b)應(yīng)用程式的循環(huán)層次樹。
[0019] 圖4(a)識別核心區(qū)域(b)合并剩余的基本塊。
[0020]圖5執(zhí)行速度與并行度的關(guān)系。
[0021] 圖6算法優(yōu)化后應(yīng)用程式段。
[0022] 圖7算法優(yōu)化后應(yīng)用程式執(zhí)行并行度。
【具體實(shí)施方式】
[0023] 本發(fā)明主要利用編譯器幫助分析和調(diào)度應(yīng)用程式的指令,分析應(yīng)用程式執(zhí)行時 間,硬件需求量,以及并行度的需求量,劃分應(yīng)用程式,并設(shè)置各個區(qū)域的并行度,在每個區(qū) 域執(zhí)行前插入power gating指令,關(guān)斷空閑的硬件設(shè)備,提高能量效率。圖1展示了編譯器 在整個方案中工作流程。下面結(jié)合附圖和實(shí)施例對本發(fā)明進(jìn)行說明。
[0024] (1)輸入一支如圖2所示的應(yīng)用程式,編譯器首先把這樣的高級語言,轉(zhuǎn)換為中間 語言的字節(jié)碼,然后利用編譯器的優(yōu)化工具,提取出這段應(yīng)用程式的CFG,LHTs,如圖3所示, 并且分析這段程式在各個并行度下的執(zhí)行時間和對于硬件資源的需求量。
[0025] (2)由于power gating指令的插入,使得硬件設(shè)備會發(fā)生開關(guān)之間的狀態(tài)轉(zhuǎn)換,在 轉(zhuǎn)換的過程中,會產(chǎn)生很大的額外的耗能和延遲,為了達(dá)到省電的目的,必須保證由于關(guān)斷 空閑設(shè)備節(jié)約的漏電耗能大于開關(guān)過程中產(chǎn)生的額外耗能,必須找到合適的地方插入 power gating指令。
[0026]第一步,識別區(qū)域核心。Tth為設(shè)備關(guān)斷的最小空閑時間,在關(guān)斷的最小空閑時間 內(nèi),恰好使得節(jié)約的漏電耗能等于開關(guān)過稈中產(chǎn)生的額外耗能。
[0028] (其中,E_rhe3ad為電路開關(guān)一次消耗的能量,PieakagA電路處于空閑狀態(tài)消耗的漏 電功率)。
[0029] 為了達(dá)到省電的目的,劃分的每個區(qū)域的執(zhí)行時間必須大于Tth,Tth通常超過100 條指令的執(zhí)行時間,而在一段程式中,超過1〇〇條指令長度的部分通常為一個循環(huán)的執(zhí)行時 間。所以從底向上遍歷整個LHTs,分析循環(huán)的執(zhí)行時間,對于葉子節(jié)點(diǎn),如果執(zhí)行時間超過 Tth,則把這個循環(huán)作為區(qū)域核心,并且分析該循環(huán)的父節(jié)點(diǎn)是否可以形成區(qū)域核心;對于非 葉子節(jié)點(diǎn),如果他的所有子節(jié)點(diǎn)中至少有兩個子節(jié)點(diǎn)已經(jīng)被識別為區(qū)域核心,則不再訪問 這個節(jié)點(diǎn),具體算法在algori thml中體現(xiàn)。例如:圖3 (b)中Lo和L2執(zhí)行時間超過Tth,貝ijLi和L2 被識別為區(qū)域核心,如圖4(a)所示,還剩下BBo和BB5沒有在任何一個區(qū)域中,需要下一步處 理。
[0030] 第二步,合并剩余的基本塊。這步采取貪心算法,找出與每個剩余的基本塊直接相 連的區(qū)域核心,比較連接這些區(qū)域核心的邊的執(zhí)行次數(shù),找出執(zhí)行次數(shù)最大的邊,并把這條 邊連接的基本塊合并到區(qū)域核心中,直到?jīng)]有剩余的基本塊為止,具體算法為algorithm2, 圖4(b)中,BBo與辦相連的邊的執(zhí)行次數(shù)為l,BB〇與辦相連的邊的執(zhí)行次數(shù)為99,所以BBo被合 并到R沖,以此類推,BB 5也被合并到此中,圖4(b)為劃分完成的區(qū)域。
[0031] (3)設(shè)置區(qū)域并行度。由于每個區(qū)域的執(zhí)行速度隨著并行度的增加,都會呈現(xiàn)圖5 所示的趨勢,執(zhí)行速度先急劇增加,后來接近不變,把使得執(zhí)行速度不變的并行度成為飽和 并行度,每個區(qū)域如果都用飽和并行度執(zhí)行代替最大并行度,那么執(zhí)行速度不會改變,但是 硬件設(shè)備會有很多空閑下來,可以利用power gating技術(shù)關(guān)斷,降低漏電耗能。把每個區(qū)域 設(shè)置為自身的飽和并行度執(zhí)行,會比用統(tǒng)一的最大并行度執(zhí)行,達(dá)到更好的省電效果。
[0032] (4)設(shè)置好并行度之后,用編譯器重新調(diào)度這支程式,在應(yīng)用程式劃分的每個區(qū)域 執(zhí)行前插入power gating指令,控制硬件設(shè)備的開啟和關(guān)斷,降低漏電耗能,提高資源利用 率。圖6為劃分好區(qū)域,并且設(shè)置合適并行度之后,插入power gating指令的程序段,圖7為 經(jīng)過算法優(yōu)化后,整個程式執(zhí)行過程中的執(zhí)行并行度,可以看到并行度在程式執(zhí)行的過程 中是不斷變化的。采取這種執(zhí)行模式,與傳統(tǒng)的自始至終都用統(tǒng)一并行度相比,可以關(guān)斷更 多的硬件設(shè)備,降低漏電耗能。
【主權(quán)項(xiàng)】
1. 一種指令級并行處理器低功耗設(shè)計(jì)優(yōu)化方法,包括下列步驟: (1) 利用編譯器分析輸入的應(yīng)用程式各個部分的硬件資源和并行度需求量信息,并且 得到該應(yīng)用程式的基本塊,以及由這些基本塊構(gòu)成的控制流圖CFG和循環(huán)層次樹LHTs; (2) 劃分應(yīng)用程式,把應(yīng)用程式切割為不同的區(qū)域,方法如下: 第一步,識別區(qū)域核心:找出這段應(yīng)用程式中可以形成區(qū)域核心的循環(huán),計(jì)算Tth為設(shè)備 關(guān)斷的最小空閑時間,在關(guān)斷的最小空閑時間Tth內(nèi),恰好使得節(jié)約的漏電耗能等于開關(guān)過 程中產(chǎn)生的額外耗能,公式如下:其中,E_rh(3ad為電路開關(guān)一次消耗的能量,PlMkage為電路處于空閑狀態(tài)消耗的漏電功 率;從底向上處理LHTs的每個循環(huán),如果有某些循環(huán)的執(zhí)行時間超過Tth,則這些循環(huán)被識別 為區(qū)域核心; 第二步,以這些循環(huán)為區(qū)域核心,擴(kuò)大區(qū)域,把剩余的基本塊合并進(jìn)來,找出與剩余的 基本塊直接相連的區(qū)域核心,比較連接這些區(qū)域核心的邊的執(zhí)行次數(shù),找出執(zhí)行次數(shù)最大 的邊,并把這條最大的邊連接的基本塊合并到區(qū)域核心中,直到?jīng)]有剩余的基本塊為止; (3) 根據(jù)各個區(qū)域硬件資源和并行度的需求量,設(shè)置各個區(qū)域的執(zhí)行并行度為飽和并 行度,使整個應(yīng)用程式執(zhí)行過程中,根據(jù)自身需求,能不斷的調(diào)整和改變并行度; 編譯器重新調(diào)度這支應(yīng)用程式,每個區(qū)域用設(shè)置好的并行度進(jìn)行調(diào)度,并在每個區(qū)域 執(zhí)行前插入power gating指令,把空閑的硬件資源關(guān)斷,降低漏電功耗。
【文檔編號】G06F1/32GK105929928SQ201610263626
【公開日】2016年9月7日
【申請日】2016年4月25日
【發(fā)明人】張為, 佟玉鳳
【申請人】天津大學(xué)