專利名稱:用于分配數(shù)據(jù)通路的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及例如電路設(shè)計中數(shù)據(jù)通路的分配。
背景技術(shù):
在電路設(shè)計中,設(shè)計者首先要有一個其中包含有電路功能的算法說明的行為描述。高層次綜合將一種超大規(guī)模集成(VLSI)電路的行為描述轉(zhuǎn)換成一個結(jié)構(gòu)的,寄存器傳輸級(register-transfer level----RTL)的實施方式。該RTL實施方式描述了宏模塊(如,功能單元、寄存器、復(fù)用器、總線、存儲塊等)和隨機(jī)邏輯之間的互接。
時序電路的行為描述幾乎不包含電路的逐周期行為(cycle-by-cyclebehaviour)或者是其結(jié)構(gòu)實施方式。高層次綜合(high-levelsynthesis----HLS)工具典型地會將一行為描述編輯成一個合適的中間格式,如控制數(shù)據(jù)流圖(Control-Data Flow Graph----CDFG)。CDFG中的頂點表示行為描述中的不同操作。數(shù)據(jù)及控制邊緣用來表示操作與控制流之間的數(shù)據(jù)依賴。
高層次綜合工具典型地要進(jìn)行下面的一項或多項工作變換、模塊選擇、時鐘選擇、調(diào)度、資源分配和指派(也被稱為資源的共享或硬件共享)。調(diào)度是通過給一個或多個時鐘周期或控制步驟分配操作來確定出設(shè)計的逐周期行為。分配確定用來實施行為描述的每一類硬件資源的數(shù)目。指派涉及的是每一個變量(以及所對應(yīng)的操作)與所分配寄存器中的一個(以及所對應(yīng)的功能單元)的綁定。
在VLSI電路中,無論何時電路中的信號進(jìn)行邏輯轉(zhuǎn)換,此時存在的動態(tài)元件通常決定了功率的消耗。然而,每一時鐘周期期間,不是電路的所有部分都必須起作用。同樣地,已經(jīng)基于抑制或消除不必要信號轉(zhuǎn)換來提出了多種低功率設(shè)計技術(shù)。一般來講,用來指該技術(shù)的術(shù)語是功率管理。在數(shù)據(jù)通路分配的情況下,能夠?qū)⒐β使芾碛糜谑褂孟铝屑夹g(shù)的數(shù)據(jù)通路分配i)操作數(shù)的隔離將透明鎖存器插入到嵌入式組合邏輯塊,和附加的控制電路的輸入端,以檢測邏輯塊的空閑狀況。將控制電路的輸出用來使邏輯塊輸入端的鎖存器失效使之不能改變數(shù)值。由此,將前一周期輸入的數(shù)值保留在考慮中邏輯塊的輸入端,消除了不必要功率消耗。
操作數(shù)隔離技術(shù)有兩個缺點。用于檢測各個子電路空閑狀況的信號通常到的很晚(例如,由于每一個控制器狀態(tài)中嵌套條件的存在,空閑狀況可能取決于比較器從數(shù)據(jù)通路的輸出)。因此,必須加上的時延約束(即,透明鎖存器的啟動信號就必須在其數(shù)據(jù)輸入能夠變化前安置好)通常不能滿足,因此就會使抑制無效。此外,在功能單元前插入透明鎖存器會導(dǎo)致電路關(guān)鍵通路的額外延遲,這一點在信號和圖像處理這樣既需要快速又需要高功效的場合中可能會令人無法接受。
ii)用于低功率VLSI設(shè)計的受約束的寄存器共享技術(shù)根據(jù)Raghunathan等人的、授權(quán)日為2001年2月27日的美國專利文獻(xiàn)US6195786B1,可通過約束數(shù)據(jù)通路分配中寄存器的共享來避免虛操作。在該方案中,將寄存器的智能共享進(jìn)行分配,這樣共享一個公共寄存器的某些操作的輸出變量不會導(dǎo)致其他功能單元輸入的不必要開關(guān)。
數(shù)據(jù)通路的分配采用的是完善的功率管理,至少是到現(xiàn)在其涉及到虛的切換動作,該分配要求將每一個功能單元的輸入連接到寄存器,這些寄存器還沒有連接到其它功能單元輸入。這種嚴(yán)格的要求導(dǎo)致功率節(jié)省和面積開銷的體系結(jié)構(gòu),該機(jī)構(gòu)與共享資源的量以及CDFG的性能呈正比變化。在約束的寄存器共享中,以重復(fù)方式出現(xiàn)在一個功能單元的一個輸入端的數(shù)值序列對應(yīng)于v1_1,v2_1,...,vi_1,并且以重復(fù)方式出現(xiàn)在該功能單元的另一個輸入端的數(shù)值序列對應(yīng)于v1_2,v2_2,...,vi_2,在這些序列處,接著在任何時鐘周期中出現(xiàn)在該功能單元輸入端的數(shù)值就對應(yīng)于某數(shù)值對(vj_1,vj_2),1≤j≤i。
圖1所示為兩個寄存器的非約束使用的示例。圖2是一寄存器約束共享的示例。在圖1中,第一寄存器R1在第一時鐘周期給一個運算邏輯單元(arithmetic logic unit----ALU)提供一個第一變量A,并且在第一時鐘周期之后的第二時鐘周期給一個乘法器(MULT)提供第二變量B,該乘法器同時也從其它地方接收一個輸入。在圖2所示的一個寄存器約束共享的情況下,需額外提供一個第二寄存器R2。第一寄存器R1在第一時鐘周期將第一變量A提供給運算邏輯單元(ALU),并且第二寄存器R2在第二時鐘周期將第二變量B提供給乘法器(MULT)。這樣就通過對共享的約束避免了虛的開關(guān)(spurious switching activities)動作。然而,這樣會導(dǎo)致寄存器數(shù)量的增加。
約束的寄存器共享據(jù)報告能夠節(jié)省功率8.4%到33.0%,面積開銷從-4.0%到6.4%。相關(guān)的文獻(xiàn)由上述美國專利文獻(xiàn)US6195786B1的發(fā)明人,G.Lakshminarayana,A.Raghunanthan,N.K.Jha,和S.Dey于1999年3月在IEEE Trans.VLSI System,vol.7,no.1,pp.7-15上發(fā)表,“Power managementin high level synthesis”。在該文獻(xiàn)中,報道在面積開銷為0%到13.8%時處的功率減少(其平均為23.05,標(biāo)準(zhǔn)偏差為13.3%)具有帶通示例,該示例是在59、72和86周期的通量約束下測試的。值得注意的是,功率的節(jié)省和面積開銷隨著采樣周期的增加而增加,這是因為增加的采樣周期推動增加的寄存器共享,這一點會導(dǎo)致虛操作執(zhí)行的增加。為了消除虛操作,就必須比嚴(yán)格的性能約束設(shè)計在很大程度上禁止寄存器共享。
約束的寄存器共享管理,盡管導(dǎo)致很好的節(jié)能效果,但其面積開銷取決于數(shù)據(jù)流圖的特性。對于一個帶有多個共享操作和變量的數(shù)據(jù)流圖(DFG)來說,這種分配方案中的面積開銷很大。巨大的面積開銷伴隨著DFG的受約束的寄存器共享管理,其中操作的許多輸出變量都延伸到后續(xù)操作步驟中的多個操作,即操作具有連接到其它操作上的輸入。這一點在這種變量的寄存器共享所帶來的虛切換動作的可能更高時更是如此。受約束的寄存器共享的剛性條件不會給研發(fā)人員提供靈活性來形成RTL設(shè)計,這些設(shè)計使用的寄存器少于在數(shù)據(jù)通路分配階段中所需要的數(shù)量。
晶片的成本通常正比于其面積的四倍。因此在成本上最有效的方式是形成面積最小的RTL設(shè)計從而降低生產(chǎn)成本。然而,隨著便攜式或移動式計算和通訊設(shè)備如膝上或掌上電腦、移動電話、無線調(diào)制器、手持式視頻游戲等的出現(xiàn),功率耗散變成所有RTL設(shè)計中另一個主要的考慮點。在集成電路中過多的功耗不僅不利于這些設(shè)備在便攜環(huán)境的使用,同時也會產(chǎn)生過熱的問題,從而使芯片的性能降格和使其壽命下降。為了控制其溫度水平,高功率芯片需要專門和昂貴的封裝以及散熱裝置。在將多個晶體管集成到一個芯片或者一個多芯片模塊上時,過多的功耗是一個限制性因素。
芯片設(shè)計中面積及功率的要求隨著芯片所用場合的不同而有很大地區(qū)別。對于便攜式設(shè)備以及高密度微電子器件來說,VLSI電路的功率耗散是一個重要的問題。對于非便攜式設(shè)備以及低密度微電子器件來說,相比于母晶片面積的問題,功率耗散的問題考慮地更少一些。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供了一種數(shù)據(jù)通路分配的方法。該方法包括形成資源的初始分配并確定資源的分配是否滿足一個預(yù)定的第一約束。如果該約束不能滿足,那么基于較低面積使用以及較低功率使用之間的折衷,形成一個修訂的資源分配。針對該第一約束生成并測試修訂的分配,直到滿足該第一約束。
根據(jù)本發(fā)明的另一個方面,提供了一種用于數(shù)據(jù)通路分配的裝置。該裝置包括用來形成資源的一個初始分配的裝置和用來確定資源的分配是否滿足至少一個預(yù)定約束的裝置,該至少一個預(yù)定約束至少包括預(yù)定面積約束和預(yù)定功率使用中的一個。該裝置還包括裝置,用來基于所用面積和所用功率中更低的一個以及所用面積和所用功率中更高的一個之間的折衷形成一個修訂的資源分配。該裝置進(jìn)一步包括用來確定修訂后的分配是否滿足至少的一個預(yù)定約束的裝置。此外該裝置還包括裝置,用來控制該裝置從而生成修訂后的分配并確定修訂后的分配是否滿足至少一個預(yù)定的約束,直到滿足至少一個約束。
根據(jù)本發(fā)明的一個進(jìn)一步的方面,提供一種用于數(shù)據(jù)通路分配的裝置,其能根據(jù)本發(fā)明的第一個方面進(jìn)行操作。
根據(jù)仍然是本發(fā)明的另一個方面,提供了一種計算機(jī)程序產(chǎn)品以便進(jìn)行數(shù)據(jù)通路分配,該產(chǎn)品具有一個記錄在一計算機(jī)可讀介質(zhì)上的計算機(jī)程序。該計算機(jī)程序產(chǎn)品包括用來形成資源初始分配的計算機(jī)程序代碼裝置,以及用來確定該資源分配是否滿足至少一個預(yù)定約束的計算機(jī)程序代碼裝置,該至少一個預(yù)定約束至少包括一個預(yù)定面積約束以及一個預(yù)定功率使用中的一個。該產(chǎn)品還包括計算機(jī)程序代碼裝置,用于基于面積使用和功率使用中較低的一個以及面積使用和功率使用中較高的一個之間的折衷來形成一個修訂的資源分配。該產(chǎn)品進(jìn)一步包括計算機(jī)程序代碼裝置,用于確定修訂后的分配是否滿足該至少一個預(yù)定約束。此外該產(chǎn)品還包括計算機(jī)程序代碼模塊,其用來控制該裝置從而生成修訂后的分配并確定修訂后的分配是否滿足該至少的一個預(yù)定約束,直到滿足該至少一個約束。
再一次根據(jù)本發(fā)明的一個方面,提供了一種用于數(shù)據(jù)通路分配的計算機(jī)程序產(chǎn)品,其具有一個記錄在計算機(jī)可讀介質(zhì)上的計算機(jī)程序,該產(chǎn)品能根據(jù)本發(fā)明的第一個方面的方法進(jìn)行操作。
本發(fā)明的實施例能夠被用來給高層次綜合工具提供交互式界面,從而確定優(yōu)化技術(shù)的優(yōu)先級,并生成具有面積及功耗特性的電路,這些特性屬于研發(fā)人員所確定的約束之內(nèi),用于對芯片的發(fā)展要求進(jìn)行分類。
下面參照附圖并結(jié)合本發(fā)明非限定性的示例來描述本發(fā)明,其中圖1所示為兩個功能單元和兩個寄存器的已知的、非約束的寄存器使用;圖2所示為兩個功能單元和一個寄存器的已知的、受約束的寄存器使用;圖3為涉及本發(fā)明一實施例操作的流程圖縱覽;
圖4是顯示功率和面積使用之間折衷的曲線圖;圖5是一個循環(huán)的示圖,其帶有多個嵌套循環(huán);圖6顯示ALU和轉(zhuǎn)換器之間受約束寄存器的使用;圖7是一個用來確定一循環(huán)切換的重復(fù)次數(shù)的編輯器指令的使用情況;圖8是數(shù)據(jù)通路分配中優(yōu)化的流程圖,其中的面積享有更高的優(yōu)先級;圖9是數(shù)據(jù)通路分配中優(yōu)化的流程圖,其中的功率享有更高的優(yōu)先級;圖10的流程圖展示的是一數(shù)據(jù)通路分配的過程;圖11的流程圖展示的是一模塊分配的過程;圖12的流程圖展示的是一寄存器分配的過程;圖13示意性地展示了具有交疊周期的變量組;圖14是一雙向圖,其展示了變量到寄存器之間可能的分配情況;圖15展示的是一計算機(jī)系統(tǒng),用來實現(xiàn)與該實施例相關(guān)的裝置和過程。
優(yōu)選實施例所描述的實施例采用的是被稱為有缺陷的功率管理。該實施例使用一種折衷,該折衷存在于多個寄存器共享所引起的改善的面積使用,與增加的多個寄存器共享所伴隨的功率管理成本之間。
本發(fā)明的所述實施例在高層次綜合的數(shù)據(jù)通路分配優(yōu)化階段是有用的,其具有模塊分配(操作到功能單元的綁定)和寄存器分配(變量到寄存器的綁定)。將改進(jìn)的功率管理和所用的寄存器數(shù)目之間的折衷成本比較以產(chǎn)生優(yōu)選的分配,該比較優(yōu)選地是在每個分配階段,通過功率管理成本方程來進(jìn)行。研發(fā)人員能夠通過功率和面積約束的指示以及它們相關(guān)的優(yōu)選優(yōu)先級來決定分配形式。此外,研發(fā)人員能夠用他的頻率知識來影響分配,通過編輯器指令,在高級抽象時迭代該循環(huán)。
在功率管理方面,用于面積的虛功率(spurious power)的折衷對調(diào)用頻率較少的循環(huán),即較少深入嵌套的循環(huán)和很少調(diào)用的循環(huán)來說是比較不重要的。此外,用于面積的虛功率的折衷對消耗相對較少功率的功能單元來說也是比較不重要的。這樣,很少調(diào)用并且具有較少深入嵌套的循環(huán)中的變量,與那些更加經(jīng)常調(diào)用并且具有更多深入嵌套的循環(huán)中的變量相比,就被分配了較低的功率管理成本。這樣就能適應(yīng)寄存器的分配,使面積的功率朝著那些很少調(diào)用并且具有較少深入嵌套的循環(huán)中的變量折衷,因為它們對電路功率的消耗具有較少的作用。
該用戶可干涉分配過程,在主實施例中,通過編輯器指令的使用,能使用戶指定例如一高級C抽象中某一特定基本塊的開關(guān)速率。該編輯器指令能使用戶影響分配過程,并使功率管理成本的指派正比于該用戶指定的成本。
所述實施例還可用一雙向賦權(quán)算法來分配數(shù)據(jù)通路。所分配的寄存器的數(shù)目由雙向賦權(quán)來自動確定,該賦權(quán)是基于與曲線邊緣關(guān)聯(lián)的權(quán)重。這些權(quán)重用面積和功率成本以及加權(quán)因素進(jìn)行模型化,其中的加權(quán)因素反映的是某特定設(shè)計中面積和功率之間相對的重要性。
在功率管理和面積之間的折衷與功率和面積的加權(quán)因子一起模型化,并在數(shù)據(jù)通路分配的過程中啟發(fā)地確定。這就導(dǎo)致了一個有缺陷功率管理的方案,從而在多個數(shù)據(jù)通路分配階段引導(dǎo)分配,從而產(chǎn)生降低的功率耗散配置。
所述實施例可用來重復(fù)地生成RTL設(shè)計。對于一個在數(shù)據(jù)通路分配優(yōu)化中具有面積作為它的優(yōu)先級的電路來說,這種重復(fù)起始于一個具有最佳寄存器共享的設(shè)計。該設(shè)計重復(fù)終止于在所估計的功率位于研發(fā)人員所指定的范圍之內(nèi)的時候。對于一個在數(shù)據(jù)通路分配優(yōu)化中具有功率作為它的優(yōu)先級的電路來說,RTL設(shè)計重復(fù)地生成一個具有最小功率耗散的RTL設(shè)計,產(chǎn)生完美的功率管理作為其初始的方案。該設(shè)計階段終止于所估計的面積落在研發(fā)人員在用戶界面中所指定的范圍之內(nèi)的時候。
圖3涉及本發(fā)明一實施例操作的流程圖縱覽,從而基于給定的約束和優(yōu)化的優(yōu)先級產(chǎn)生硬件設(shè)計。
提供電路的行為描述(步驟S10)。功率及面積約束是輸入(步驟S12)??梢允怯蓹C(jī)器或者由用戶通過用戶界面諸如鍵盤或圖形化用戶界面來輸入。功率和面積約束指定了設(shè)計電路最大允許的功耗和最大允許的面積。最優(yōu)化優(yōu)先級是輸入(步驟S14)。該最優(yōu)化優(yōu)先級可由機(jī)器或由用戶通過用戶界面如鍵盤或圖形化用戶界面來輸入。該最優(yōu)化優(yōu)先級指定了是減少面積還是減少功耗更重要。
提供用于電路設(shè)計變量的開關(guān)頻率(步驟S16)。這通常是在高層次抽象輸入處(如C資源)通過編輯器指令的方式進(jìn)行,該指令給行為綜合工具如HLS編輯器提供頻率。由用戶定義或者是由編輯器的上相(upper phase)計算出來的該開關(guān)頻率,在虛功率耗散計算的資源分配階段使用,其中的虛功率耗散由那些導(dǎo)致缺陷功率管理體系結(jié)構(gòu)的寄存器共享引入。
使用例如HLS編輯器的輸入約束和最優(yōu)化優(yōu)先級來對行為描述進(jìn)行分析(步驟S18)。通過任意一種已知的方式來對中間表示進(jìn)行優(yōu)化(步驟S20)。用來優(yōu)化中間表示的一般技術(shù)包括軟件流水、循環(huán)展開、指令并行調(diào)度、力矢量調(diào)度等。這些方法通常合起來優(yōu)化中間表示。用變量的開關(guān)頻率來調(diào)度數(shù)據(jù)流圖(DFG)(步驟S22)。將分析的描述進(jìn)行編輯來調(diào)度DFG。
生成初始的功率和面積加權(quán)(步驟S24)?;谀繕?biāo)設(shè)計的最優(yōu)化優(yōu)先級,將一個初始最大加權(quán)因子指派給與較高最優(yōu)化優(yōu)先級相關(guān)的成本,并且將一個初始最小加權(quán)因子指派給較低的最優(yōu)化優(yōu)先級。這樣,該初始分配就完全偏離于較高優(yōu)先級的最優(yōu)化標(biāo)準(zhǔn)。
對當(dāng)前的權(quán)重,在電路設(shè)計中給模塊和寄存器進(jìn)行分配(步驟S26),正如后面所述的那樣,以RTL設(shè)計的形式導(dǎo)出一個建議的體系結(jié)構(gòu)(步驟S28)。相對于所定義的輸入約束來評估該體系結(jié)構(gòu),它是否落在那些約束之中(步驟S30)?如果有一個約束得不到滿足,那么就調(diào)節(jié)加權(quán)因子(步驟S32)從而朝該約束的方向形成一個設(shè)計。由此,如果該體系結(jié)構(gòu)不能滿足面積約束,那么就提高面積的加權(quán)因子和/或降低功率的加權(quán)因子。程序轉(zhuǎn)向步驟S26以形成一個新的體系結(jié)構(gòu)用于評估。另一方面,如果在步驟S30中兩個約束都得到滿足,那么程序就停下來,當(dāng)前的體系結(jié)構(gòu)就作為最終的體系結(jié)構(gòu)(步驟S34)。由此,當(dāng)給定的約束得到滿足時,硬件的生成以及評估程序就停止下來。
面積和功率之間的關(guān)系圖4是電路設(shè)計中所用功率與面積的曲線。曲線上的線和點示意性地表示了典型地功率使用和面積之間是如何相互變化的。寄存器分配中硬件共享最大并且所用面積最小的一點由“X”表示。從功率管理的角度來看,最佳設(shè)計點以及所用的最大的面積使用由“O”表示。線40、42展示的是功率(從功率管理的角度來看)和寄存器共享(及因此的面積)程度之間的折衷。
彎曲的點線40展示的是通常的次功率及面積的設(shè)計軌跡,其中不仔細(xì)控制面積和功率之間的折衷。彎曲的實線42展示的是通常最佳的設(shè)計軌跡,其通過寄存器的智能分配達(dá)到當(dāng)前最佳的功率管理和寄存器共享。虛線44展示的是一設(shè)計軌跡,其例如使用了如下文所述的循環(huán)嵌套信息來達(dá)到次佳的功率管理和寄存器共享。
采用智能的寄存器分配,面積的減少相對于功率的增加在最初的努力中更大了,從而偏離了完美功率管理的設(shè)計。
較不深入嵌套循環(huán)的體系結(jié)構(gòu)相比于那些內(nèi)嵌套循環(huán)的體系結(jié)構(gòu)對功率消耗的貢獻(xiàn)要少一些。由最外層循環(huán)的寄存器共享所產(chǎn)生的虛動作對功率消耗的貢獻(xiàn)最少。功率對面積節(jié)約的折衷應(yīng)該因此從最少使用的體系結(jié)構(gòu)開始。圖5展示的是一個帶有多個嵌套循環(huán)的循環(huán)。圖5展示了用于電路算法一次重復(fù)時使用的次數(shù)變量的數(shù)量。對于最外層嵌套循環(huán),該變量使用了n次。對于第二級嵌套循環(huán)來說,該變量開關(guān)m*n次。對于第三級嵌套循環(huán)來說,將變量以n*m*k的速率開關(guān),以此類推。所用功率的貢獻(xiàn)正比于所用變量的速率。由此,在用功率交換寄存器面積時,通過缺陷功率管理,應(yīng)當(dāng)共享開關(guān)頻率最少的變量,因為它們對功率消耗的貢獻(xiàn)最少。因此,對設(shè)計點折衷曲線42和44上是傾斜較小的靠近完美管理體系結(jié)構(gòu)。由于在功率對面積折衷時耗盡了開關(guān)頻率較少的寄存器,因此單位功率折衷的面積成本會增加,因此當(dāng)設(shè)計遠(yuǎn)離完美功率管理體系結(jié)構(gòu)時,導(dǎo)致折衷曲線增加的梯度。
對用于數(shù)據(jù)通路分配的變量的寄存器共享所引來的虛動作數(shù)量有貢獻(xiàn)的因素,通過檢查這些因素,進(jìn)一步管理以優(yōu)化面積和功率管理之間的折衷是可能的。在分配哪一個寄存器共享從而減少由共享使用所引起的虛動作中,能夠作出更好的決定。
假定有等量的開關(guān)切換用于功能單元,那么通過共享功能單元之間的寄存器,能夠?qū)⑻搫幼鞅3值阶钚?,該功能單元對輸入向量中的等同變化使用較少的開關(guān)。圖6展示了一個加法器(ALU)和一個轉(zhuǎn)換器之間寄存器的共享。通過共享加法器和轉(zhuǎn)換器之間共用的輸入寄存器引入的虛開關(guān),由此帶來的功率耗散比如圖1所示,通過共享加法器和乘法器之間共用的輸入寄存器帶來的虛開關(guān)所帶來的功率耗散要小得多,圖1中假設(shè)轉(zhuǎn)換器和乘法器候選者之間的虛開關(guān)相同。
通過所有寄存器共享所引起的虛動作累積的數(shù)量,用作一個準(zhǔn)則,從而獲得不同變量之間寄存器共享最小的功耗。最有成本效率共享產(chǎn)生圖4所示彎曲實線42的設(shè)計軌跡。
由此,寄存器的智能分配,在一功率管理方案中為面積交換功率,這一點允許研發(fā)人員形成沿著或者接近最佳功率面積折衷曲線的設(shè)計,從而來平衡特定約束中功率和面積最小化這兩個對立的目標(biāo)。
編輯器指令編輯器指令能使電路研發(fā)人員很好控制數(shù)據(jù)通路分配的過程。將編輯器指令插入到一功能源代碼的開始,并允許該用戶指定該特定功能的開關(guān)速率。這個注解(編譯指令(pragma))功能能使用戶用優(yōu)化器來使功率的減少朝著較少調(diào)用循環(huán)中的變量對面積進(jìn)行折衷。
圖7給出了這種指令使用情況一個示例,其用C源代碼寫成,其中用戶能夠?qū)ψ⒔狻?pragma switch_iterations(Iteration_number)”指派一個重復(fù)的次數(shù)。當(dāng)研發(fā)人員未在給定的循環(huán)中插入一編輯器指令時,該編輯器就給缺省值指派一個已知的“Iteration_number”。該缺省值由前面所用的重復(fù)次數(shù)導(dǎo)出,例如所有前面已知重復(fù)次數(shù)的平均值(或者恰是它們最后幾個的平均值,例如最后的5個)。參見圖7,如果n是100,那么編輯器就自動將“Iteration_number”指定為100。如果n在輸入程序執(zhí)行流程的前幾個步驟中被指定,并且未被編輯器測定,那么用戶通過編輯器指令所指定的“Iteration_number”就可用來構(gòu)成一特定循環(huán)中的開關(guān)速率。
參見公式3來描述本信息在功率管理成本方程中的使用。
數(shù)據(jù)通路功率&面積的優(yōu)化功率及面積優(yōu)化是根據(jù)指定的設(shè)置自動進(jìn)行的,這些設(shè)置是i)優(yōu)化(面積/功率)的優(yōu)先級;ii)面積約束(如,在面積單元如平方毫米內(nèi));和iii)功率約束(如,在功率測定單位如μW內(nèi))。
在數(shù)據(jù)通路分配中,假定調(diào)度當(dāng)場(priori)已經(jīng)進(jìn)行了。對分配來說時鐘和電壓是固定的?;ヂ?lián)分配只用多路器,這是因為總線互聯(lián)有各種缺點i)隨著芯片尺寸的增大,兩個互聯(lián)遠(yuǎn)離的可能性增加,將它們組合起來可以產(chǎn)生運行長距離的總線。充分利用的總線的長度傾向于線性地增加芯片的尺寸,這樣會損傷性能,同時會提高成本(參見F.Brewer和D.Gajski于1990年7月在IEEE Trans.ComputerAided Design,vol.9上發(fā)表的“ChippeA system forconstraint driven behavioural synthesis”);以及ii)總線式的體系結(jié)構(gòu)不太容易進(jìn)行測試。
平面布置信息并不用在分配中,一般來講因為較少的功能硬件單元和較少的寄存器產(chǎn)生具有較低配線成本的設(shè)計。這一點可由下面的文獻(xiàn)來確定W.E.Donath于1979年4月在IEEE Trans.Circuits and Systems,vol.26上發(fā)表的“Placement and average interconnection lengths of compute logic”,W.R.Heller、C.G.His和W.F.Mikhail于1984年8月在IEEE Design and Test,vol.1上發(fā)表的“Wireability-Designing wiring space for chips and chippackages”,1989年1月在IEEE Trans.Computer-Aided-Design,vol.8上的發(fā)表的“Techniques for area estimation of VLSI layouts”,Minjoong Rim、Ashutosh Mujumdar、Rajiv Jain和Renato De Loene于1994年6月在IEEETransactions on VLSI System,vol.2.No.2上發(fā)表的“Optimal and HeuristicAlgorithms for Solving the Binding Problem”。
在一整數(shù)線性規(guī)劃(Integer Linear Programming----ILP)方程中使用多標(biāo)準(zhǔn)優(yōu)化來解決數(shù)據(jù)通路分配問題,這就是圖3流程圖中步驟S26的一個部分。用來對面積和功率共同優(yōu)化的這個ILP方程參見下面的公式1。
minx∈CF(x)=Kpowerfpower(x)Kareafarea(x)---(1)]]>其中fpower(x)是功率的成本公式farea(x)是面積的成本公式C={用于寄存器分配時最大變量密度處寄存器最小數(shù)目的約束,或者是用于模塊分配時最大操作密度處功能單元最小數(shù)目的約束}Kpower是fpower(x)的權(quán)重,以及Karea是farea(x)的權(quán)重與每一種可能分配相關(guān)的成本均用來生成一個矩陣。由匈牙利方法得到最好的結(jié)果,即用于所分配的每一個操作、變量等的最小總成本。
圖8是數(shù)據(jù)通路分配的一例最優(yōu)方案,其中面積具有更高的優(yōu)先級。圖9是數(shù)據(jù)通路分配的一例最優(yōu)方案,其中功率具有更高的優(yōu)先級。
對圖8來說,通過寄存器分配來確定初始方案的特征,該分配通過最大的寄存器共享獲得最佳的面積。因此,功率的加權(quán)因子Kpowet一開始設(shè)置為1,而面積加權(quán)因子Karea則設(shè)置為MAX_WEIGHT(步驟S102----圖3中步驟S24的一個特例)。基于當(dāng)前的權(quán)重,形成一個數(shù)據(jù)通路分配(步驟S14----圖3中步驟S26和S28的一個概括)。用一個隨機(jī)的或者是預(yù)選的輸入位模式40,例如用一個RTL功率評估工具,利用預(yù)定單元庫的功率使用信息,來接著評估電路的功率消耗(步驟S106)。確定所評估的功率是否小于預(yù)設(shè)的功率約束(步驟S18----圖3中步驟S30的一部分)。如果功率消耗超過了功率約束,通過第一次啟發(fā)確定的步進(jìn)值α增加Kpower,并且通過第二次啟發(fā)確定步進(jìn)值β減少Karea(步驟S110----圖3中步驟S32的一個特例)。為新的權(quán)重,重復(fù)該數(shù)據(jù)通路分配過程(步驟S104)。如果所評估的功率耗散小于步驟S108的約束量,那么就用例如Synopsis DC編輯器來評估用于當(dāng)前通路分配的面積(步驟S112)。確定該面積是否小于預(yù)設(shè)的面積約束(步驟S114)。如果該面積超過了所允許的面積,那么對于所輸入的約束來說沒有方案是可行的(S116)并且程序結(jié)束。如果面積落在所允許的面積之內(nèi),那么當(dāng)前的數(shù)據(jù)通路分配是輸出(S118)并且程序結(jié)束。
下面來描述用于確定步進(jìn)值的啟發(fā)式方法的示例,該步進(jìn)值用于模擬中的每一次重復(fù)。
首先是選擇Karea和Kpower的最大值,這樣它們在與成本(公式1中的fpower(x)和farea(x)相乘時就不會溢出(超過32位)。在本示例中,Karea和Kpower的最大值封頂?shù)?000。兩個極端設(shè)計,一個是Karea設(shè)定到1同時Kpower設(shè)定到最大權(quán)重(1000),另一個是Karea設(shè)定到最大權(quán)重(1000)同時Kpower設(shè)定到1,兩個設(shè)計所需寄存器數(shù)目的差首先通過兩次模擬確定出來。這兩個設(shè)計配置(一個用于完美的功率管理方案,另一個用于最不完美的功率管理方案)所需寄存器數(shù)目的差顯示了,在整個優(yōu)化空間中模擬所能獲得的寄存器數(shù)目的最大結(jié)果范圍。該范圍表示的是優(yōu)化結(jié)果的不同。
該權(quán)重區(qū)域(1到最大,在本實施例中就是1000)首先被分成N個區(qū)域,其中用于優(yōu)化軌跡每一個區(qū)域的約束在每一個特定權(quán)重區(qū)域的模擬開始之前被確定出來。如果精確度越高,那么N就越大。在本示例中,N選為4,同時為步進(jìn)值α和β將權(quán)重區(qū)域(近乎)均勻地分為{1,250,500,750,1000}。1用作第一數(shù)值,因此對于端點的設(shè)計優(yōu)化來說,仍需考慮優(yōu)先級較低的對象(功率或面積)。如果將0指定為不重要對象的權(quán)重,那么編輯器不執(zhí)行分配,該分配在所有用于某些情況處,優(yōu)化較不重要的目標(biāo),這些情況是較重要目標(biāo)候選者的成本是相同的。
在前兩個區(qū)域交點處,即在本實施例中權(quán)重(Karea為250,Kpower為750)的地方所需寄存器的最大數(shù)目要第一個確定。第一區(qū)域的結(jié)果范圍由該交點處所需寄存器的最大數(shù)目以及初始權(quán)重(1,1000)所獲得的寄存器的最大數(shù)目的差獲得。然后用設(shè)計軌跡兩個極值處設(shè)計所獲得的最大結(jié)果范圍(即(1,1000)到(1000,1))來規(guī)格化第一區(qū)域的結(jié)果范圍。為第一區(qū)域模擬的重復(fù)所選擇的步進(jìn)值通過下面的操作來獲得,即將規(guī)格化的結(jié)果范圍平均分成所需規(guī)格變化的步驟(即,每一個變量均應(yīng)將寄存器的數(shù)目改變一定比例的結(jié)果范圍),這里假定權(quán)重和范圍之間為線性關(guān)系。例如,如果第一區(qū)域{(1,1000),(250,750)}的結(jié)果范圍為10%,是模擬結(jié)果最大范圍{(1,1000),(1000,1)}的0.1,并且0.02是在每次重復(fù)所要求的結(jié)果中預(yù)期規(guī)劃的變化(即寄存器的數(shù)目應(yīng)發(fā)生的變化是結(jié)果范圍(1,1000),(1000,1)中寄存器數(shù)目的2%),那么將每次重復(fù)的步進(jìn)值設(shè)定為250的五分之一(0.02/0.1),即α和β均為50。
如果在第一區(qū)域內(nèi){(1,1000),(250,750)}沒有確定出合適的通路分配方案,那么就為第二區(qū)域{(250,750),(500,500)}確定出一組新的步進(jìn)值,并且如果需要的話以此類推到第三及第四的區(qū)域。
根據(jù)上述的啟發(fā)式方法,步進(jìn)值α和β很可能會根據(jù)啟發(fā)式確定的結(jié)果每重復(fù)幾次(在第一區(qū)域的頭五次之后)就會變化。選擇地,該步進(jìn)值也保持不變,例如α和β始終都是50。步進(jìn)值α和β并非必須是相同的。
面積對同樣數(shù)量的功率節(jié)省的折衷在開始會很小,其會隨著設(shè)計偏離圖4中的點“X”而逐漸增加。這是因為將最頻繁使用的變量從初始折衷中的共享寄存器約束出來,這樣對于固定單位的面積來說產(chǎn)生大的功率節(jié)約。這種設(shè)計重復(fù)直到預(yù)定的功率約束得到滿足才停止。這種方案的結(jié)果就是這樣的一種體系結(jié)構(gòu),其具有最佳的面積,并且用最小的面積折衷最大可能的功率節(jié)約從而滿足預(yù)定的功率約束。
圖9展示了一個優(yōu)化中功率具有優(yōu)先級的方案。該初始方案的特征是具有完美功率管理的數(shù)據(jù)通路分配。Karea設(shè)置為1,而Kpower設(shè)置為MAX WEIGHT(步驟S122----圖3中步驟S24的一個特例)?;诋?dāng)前的權(quán)重,形成一個數(shù)據(jù)通路分配(步驟S124----圖3中步驟S26和S28的一個概括)。然后例如用一個Synopsis DC編輯器來評估并分析所生成RTL的面積(步驟S126)。確定該面積是否小于預(yù)設(shè)的面積約束(步驟S128----圖3中步驟S30的一部分)。如果該面積超過了面積約束,通過第一次啟發(fā)確定的步進(jìn)值α減少Kpower,并且通過第二次啟發(fā)確定步進(jìn)值β增加Karea(步驟S130----圖3中步驟S32的一個特例)。用新的權(quán)重來重復(fù)該數(shù)據(jù)通路分配過程(步驟S124)。如果面積小于根據(jù)步驟S128的約束量,那么就評估當(dāng)前數(shù)據(jù)通路分配的功率耗散(步驟S132)。例如通過一個RTL功率評估工具來使用一個隨機(jī)的或者是預(yù)選的輸入位模式40,和由一個預(yù)先定義的單元庫得到的功率使用信息。確定所評估的功率消耗是否小于預(yù)設(shè)的功率約束(步驟S134)。如果所評估的功率超過了所允許的功率,那么對于所輸入的約束來說沒有可行的解決方案(S136),程序結(jié)束。如果所評估的功率落在所允許的功率之內(nèi),那么就輸出當(dāng)前的數(shù)據(jù)通路分配(S138),程序結(jié)束。
上述步進(jìn)值可用前述同樣的方式或其它方式計算出來,或者也可保持為常數(shù)。
功率對一固定單位面積的折衷成本隨著設(shè)計遠(yuǎn)離圖4中的點“O”而不斷增加,其中的點“O”是具有最佳功率的設(shè)計。這是因為很少使用的變量用在寄存器共享中從而在最初用功率對面積折衷,由此會犧牲不完美管理體系結(jié)構(gòu)的最小功率耗散。由于很少使用的體系結(jié)構(gòu)被犧牲從而使功率對面積進(jìn)行折衷,因此功率對同樣單位面積的折衷成本會增加。該設(shè)計方案會形成一個最佳的功率管理體系結(jié)構(gòu),其用最小的功率來折衷最大的面積節(jié)約,從而滿足預(yù)定的面積約束。
數(shù)據(jù)通路分配程序如前面參照圖8和9分別在步驟S104和S124所描述的流程一樣,圖10的流程圖所展示的是一個用來實現(xiàn)ILP方程(公式1)所描述約束的數(shù)據(jù)通路分配流程。在數(shù)據(jù)通路分配中所要完成的子任務(wù)是模塊分配(操作到功能單元的系結(jié))和寄存器分配(變量到寄存器的系結(jié))。在本示例中,模塊分配實現(xiàn)之后是寄存器分配,當(dāng)然其也可同時進(jìn)行或者以其它方式進(jìn)行。
收集用于每一個變量的操作數(shù)據(jù)(步驟S202),這是有關(guān)操作的信息,在這些操作中這些變量被導(dǎo)出(Op_from)到使用(Op_destinations)這些變量的操作中。收集用于每一項操作的變量數(shù)據(jù)(步驟S204),這是有關(guān)通過每一項操作使用并且導(dǎo)出的變量信息。從對每一個變量的操作數(shù)據(jù)的分析,給每一個變量指派一個開始時間和一個終止時間(步驟S206)。給每一項操作指派一個開始時間和一個終止時間(步驟S208)。
這些操作首先根據(jù)所需的功能即通過模塊類型進(jìn)行分組。需要同一模塊類型的操作,即那些能夠共享相同功能單元的操作,根據(jù)它們的壽命和終止時間(基于開始及終止),將這些操作分成組(步驟S210)。這些操作首先是根據(jù)其開始時間向上排序。相互無法共享的一組操作根據(jù)其排序進(jìn)行分配(當(dāng)且僅當(dāng)它們的壽命重疊的時候,兩個操作是非共享的)。確定所需每一類模塊的數(shù)目(步驟S212)。對于可能的每一類模塊來說,所需的數(shù)目是能夠共享該類模塊的操作的最大數(shù)目,這些操作在任何一個控制步驟中同時存在。每一類模塊的總數(shù)目可多于,但不能少于使用該類模塊的任一組操作中操作的最大數(shù)目。然后將模塊分配給不同的操作(步驟S214)。
根據(jù)變量的壽命和終止時間(基于開始和終止時間)對變量進(jìn)行分組(步驟S216)。這些變量首先根據(jù)其開始時間向上排序。不能共享同一寄存器的一組變量根據(jù)其排序進(jìn)行分配(當(dāng)且僅當(dāng)兩個變量的壽命重疊時,這兩個變量不能共享同一個寄存器)。確定所需的寄存器的數(shù)目(步驟S218)。所需的數(shù)目至少是任一控制步驟中能夠同時存在的變量的最大數(shù)目。寄存器的總數(shù)目可多于但不能少于任一組變量中變量的最大數(shù)目。然后將寄存器分配給不同的變量(S220)。
現(xiàn)在參照圖11描述分配模塊步驟(圖10中的步驟S214)的一個示例。
將所有這些模塊類型均分配一個模塊類型數(shù)目。能夠共享一個共有功能單元的模塊按模塊類型進(jìn)行分組。同一模塊類型的所有模塊均具有相同的等待時間(從開始到終止的時間)。分配給這些模塊類型的模塊類型數(shù)目均按照等待時間下降的順序進(jìn)行分配。即,等待時間最高的模塊類型具有最低的模塊類型數(shù)目(即0),并且等待時間最低的模塊類型具有最高的模塊類型數(shù)目。將等待時間相同的模塊類型隨機(jī)地分配兩個不同且連續(xù)的數(shù)目,同樣每一模塊類型的每一組操作均分配一個數(shù)。
分配模塊程序的開始是設(shè)定所要分配的第一模塊類型,模塊類型=0(步驟S302)。檢查當(dāng)前的模塊類型數(shù)目是否高于最后一個(其可能是最高的一個)模塊類型數(shù)目(步驟S304)。如果當(dāng)前的模塊類型數(shù)目不高于最后模塊數(shù)目,為當(dāng)前模塊類型步驟S306,將當(dāng)前的操作組的數(shù)目設(shè)定到0。當(dāng)前模塊類型的當(dāng)前操作組數(shù)目中的所有操作均指派給當(dāng)前模塊類型的一個不同功能單元(步驟S308)。對于當(dāng)前的操作組來說,該模塊按等待時間下降的順序進(jìn)行分配(步驟S310)。
檢查當(dāng)前的操作組數(shù)目是否高于最后一個(其可能是最高的一個)操作組數(shù)目(步驟S312)。如果當(dāng)前的模塊類型數(shù)目高于最后的操作組數(shù)目,那么當(dāng)前模塊類型數(shù)目就加一(步驟S314),并且程序返回到步驟S304。如果新的當(dāng)前模塊類型數(shù)目不高于最后模塊類型的數(shù)目,那么第一操作組中使用了下一模塊類型模塊的操作就分配給所述的下一類型模塊(通過步驟S308)。
如果在步驟S312當(dāng)前的操作組數(shù)目不高于最后一個操作組數(shù)目,那么為模塊分配構(gòu)造一個矩陣或曲線圖(步驟S316)。該矩陣或曲線圖基于已有的模塊分配(對第一操作組以及到目前為止處理過的任何其它操作組)以及當(dāng)前的操作組數(shù)目進(jìn)行構(gòu)造。解決所有的分配問題(步驟S318)從而為當(dāng)前模塊類型到目前為止處理過的所有組形成一個分配。
然后使當(dāng)前的操作組數(shù)目加一(步驟S320),同時程序返回到步驟S312。
如果模塊分配程序循環(huán)通過所有的模塊類型,在步驟S304將會發(fā)現(xiàn)該模塊類型數(shù)目大于最后一個或者是最高一個模塊類型,并且該模塊分配程序為所有的模塊類型都輸出這種模塊分配(步驟S322)。
按等待時間下降的順序為操作實現(xiàn)模塊分配。這是因為對于等待時間較長的操作來說模塊壽命交疊的機(jī)會要高于等待時間較短的操作。對于等待時間較短的操作來說,為較長等待時間的操作所分配的實際功能單元是用于分析而不是用在操作本身。
通過使用用雙向賦權(quán)法按組給功能單元,將可共享功能單元的操作分配給組。在一加權(quán)的雙向曲線圖中,構(gòu)造一個WB=(S,T,E)來解決匹配的問題,其中曲線的每一個節(jié)點si∈S(tj∈T)均表示一個操作opi∈OP(功能單元fuj∈FU),并且當(dāng)且僅當(dāng)opi能分配給fuj時,在si和tj之間具有一個加權(quán)的邊緣eij(即,已經(jīng)系結(jié)到fuj上的操作中沒有一個操作的壽命與opi的壽命交疊)。與一邊緣eij相關(guān)的權(quán)重wij則根據(jù)面積和功率成本方程以及各自相關(guān)加權(quán)因子計算出來(采用公式1并且如下所述參照公式2和3)。每一個模塊組的分配都模型成一加權(quán)雙向曲線圖的一個匹配問題,其通過公知的匈牙利方法(Hungarian Method)[C.H.Padadimitriou和K.Steiglitz于1982年在Prentice-Hall公開的Combinatorial Optimisation]來解決,這一點例如后面參見圖2所描述的那樣。
曲線邊緣的功率和面積成本合起來與權(quán)重呈線性關(guān)系,其中的權(quán)重作為成本的加權(quán)系數(shù)來分配的。接著就能進(jìn)行雙向賦權(quán)(Bipartite WeightedAssignments)了。
現(xiàn)在參見圖12來描述分配寄存器步驟(圖10中的步驟S220)的一個示例。
將當(dāng)前的變量組數(shù)目設(shè)定到0(步驟S352)。當(dāng)前變量組中的所有操作均指派給一個不同的寄存器(步驟S354)。然后將當(dāng)前的變量組數(shù)目加一(步驟S356)。
檢查當(dāng)前的變量組數(shù)目是否超過最后一個變量組數(shù)目(步驟S358)。如果在步驟S358當(dāng)前的變量組數(shù)目沒超過最后一個變量組數(shù)目,那么為寄存器分配構(gòu)造一個矩陣或曲線圖(步驟S360)。該矩陣或曲線圖是基于現(xiàn)有寄存器分配(第一變量組以及到目前為止處理過的任何其它變量組)以及當(dāng)前的變量組構(gòu)造的。解決所有的分配問題(步驟S362)從而給到目前為止已處理過的所有變量組形成一種分配。
然后將當(dāng)前的變量組數(shù)目加一(步驟S364),程序返回到步驟S358,如果下一個變量組數(shù)目沒超過最高的變量組數(shù)目,那么從這個步驟為下一個變量組生成寄存器分配。
一旦寄存器分配程序循環(huán)經(jīng)過了所有的變量組,那么步驟S358會發(fā)現(xiàn)該變量組數(shù)目大于最后一個(最高一個)變量組數(shù)目,并且寄存器分配程序輸出寄存器分配(步驟S366)。
這些變量還可用雙向賦權(quán)按組分配給寄存器。每一個寄存器組的分配也可模擬成一加權(quán)雙向曲線圖的一個匹配問題,并通過公知的匈牙利方法來解決。對輸入DFG中所有的操作和變量進(jìn)行雙向賦權(quán),然后將所生成的RTL設(shè)計對照用戶定義的輸入約束進(jìn)行評估。
通過分配寄存器子組中的新結(jié)點數(shù)等于變量子組中的結(jié)點數(shù),該資源分配能夠自動確定出資源分配中所用寄存器的數(shù)目。寄存器的數(shù)目超過一特定分配所需的寄存器的數(shù)目能使功率管理更好。為特殊的加權(quán)系數(shù)對,和與之相關(guān)的面積和功率邊緣成本方程,所分配的寄存器的總數(shù)目由一個雙向賦權(quán)的結(jié)果來確定。
成本方程模塊分配---面積成本計算(圖11的步驟S316)在模塊分配中唯一能夠改變的相關(guān)面積成本是那些因多路器(MUX)數(shù)量而帶來的成本。因此,在模塊分配中,公式1中所用的面積的成本方程farea(x)就是下面的公式farea(x)=(多路器面積成本之和) [2]對于該實施方式來說,功能單元在可能的地方始終共享。這里沒有分配額外的功能單元,這一點與寄存器分配中為了實現(xiàn)完美的功率管理可提供額外的寄存器不同。模塊分配階段是一個決定如何來共享功能單元的階段,因此在它們的輸入以及在寄存器的輸入,形成最少的MUX功率使用以及最佳的功率管理配置。
通過采用雙向賦權(quán)目標(biāo),可將寄存器以及功能單元輸入端的多路器(MUX)的數(shù)目保持下降。一項操作中輸入和輸出變量對MUX面積的要求將在模塊分配面積成本方程中被評估,即下面公式3所指的wij,其由圖11中步驟S316來生成。對于一項操作到一個功能單元的每一個分配來說,首先都是用公式3來評估寄存器輸入處直接MUX成本(盡管該寄存器直到寄存器分配階段才分配,但該寄存器必須在模塊分配階段就識別出來,因此其能計入成本)。然后用公式3來計算出功能單元輸入端涉及的暗含成本。
wij=((Overlap(opi,opj))‾*[(Overlap(vari,varj)|((Opi==Opj).Overlap(Opi,Opj))‾‾)*]]>CMUX]+Overlap(opi,opj)*MAX]]>[3]其中i,j分別為比較式中候選操作和模塊的標(biāo)引;vari,varj均為變量(操作的輸入或輸出);CMUX是MUX所評估的成本(例如基于MUX的位寬度);MAX是一個最大值,在匹配不可能的時候分配該值,因為這些操作不能共享相同的功能單元(該值不應(yīng)高到令所表示的成本引起溢出的程度);Overlap()在變量,或者當(dāng)變量為輸入變量時變量所到達(dá)的操作,或者對于一個輸出變量來說變量所經(jīng)過的操作具有交疊壽命時返回1,否則返回0;opi,opj分別為比較式中候選的操作以及模塊過去分配的操作;Op,當(dāng)變量為輸入到模塊的變量時其是該變量所抵達(dá)的操作,或者當(dāng)變量為模塊的輸出變量時其是該變量經(jīng)過的操作。
在到模塊一個輸入的該輸入端處,當(dāng)經(jīng)過該模塊的那些變量來自不同的操作時會生產(chǎn)直接(explicit)MUX成本。在一模塊的輸出端,有一個暗含(implicit)的MUX成本要分配給那些不經(jīng)過一共用功能單元的組合,從而鼓勵那些跨越其它組合并經(jīng)過一個共用功能單元的模塊進(jìn)行共享。這是因為如果那些經(jīng)過一個共用功能單元的操作被分配給不同的模塊,那么會產(chǎn)生MUX成本。該MUX成本在這里僅僅是暗含的,因為它們不是必然產(chǎn)生的,即當(dāng)組合中沒有任何一個是由經(jīng)過共用功能單元的變量組成的時候,就不會產(chǎn)生該MUX成本。然而,該成本是否實際發(fā)生只有到選擇了一特定模塊并分配了寄存器時才能確定下來。如果該暗含成本不能確定,那么改變的實施例就可將它們忽略掉。
如果這些操作的壽命交疊,那些這些模塊就不能共享。因此其結(jié)果始終是最大值Overlap(opi,opj)=1因此((Overlap(opi,opj))‾=0]]>這樣唯一的結(jié)果就是1*MAX=MAX。
如果這些操作的壽命沒有交疊,那么Overlap(opi,opj)=0,因此Overlap(opi,opj)*MAX=0。然而,這里仍有MUX面積成本。這一點取決于這些操作的變量的壽命是否有交疊,這些操作的壽命是否有交疊以及同一操作是否用于兩個變量。
如果這些操作的變量的壽命有交疊,那么Overlap(vari,varj)=1。如果前面或后面操作的壽命有交疊,那么((Overlap(opi,opj))‾=0,]]>因此(Opi==Opj).Overlap(opi,opj)‾‾=1.]]>如果前面或后面的操作或者是變量的壽命有交疊并且這些操作本身的壽命沒有交疊,那么結(jié)果就是1*1*CMUX=CMUX。
如果所用是相同的操作,那么(Opi==Opj)=1。如果這些操作的壽命沒有交疊并且這些變量的壽命也沒有交疊,那么((Overlap(opi,opj))‾=1,]]>因此(Opi==Opj).Overlap(opi,opj)‾‾=0]]>并且Overlap(vari,varj)=0。因此該MUX面積的成本就是零。
當(dāng)這些變量的壽命有交疊時MUX是必須的,因為它們不能共享一個共用寄存器。如果這些變量的壽命沒有交疊,那么這些變量能夠共享一個共用的寄存器。在一共享寄存器的輸入處,如果這些變量分配給一共用功能單元后面的寄存器,那么就避免了一個MUX的成本。這一點只有在那些能夠共享一功能單元的類似操作后面的變量并且這些操作均不具有交疊壽命時才有可能。在一功能單元的輸入處,如果輸入到該功能單元的變量分配給了一個共用的寄存器,那么就能避免一個MUX的成本。
模塊分配功率成本方程(圖11的步驟S316)能夠在模塊分配中變化的相關(guān)功率成本是指那些因多路器(MUX)分配以及功率管理成本所帶來的成本。因此,在模塊分配中,在公式1中使用的功率方程,即fpower(x)由下式確定fpower(x)=(功率管理成本之和)+(多路器功率成本之和) [4]模塊分配中因MUX增加的總功率正比于該MUX面積的增加。該MUX面積的增加可由上面的公式3導(dǎo)出。
下面是對那些能夠共享功能單元的同樣操作計算出功率管理成本,其中的功能單元是分配給前面一操作組中同類的一項操作的功能單元。在功率管理成本計算中需要滿足的前提條件是,用于寄存器共享的候選輸出變量的壽命與過去分配的一個模塊的輸出變量沒有交疊,這是因為模塊分配需考慮到寄存器的分配,因此功能單元的分配方式應(yīng)能使寄存器分配達(dá)到最佳的功率管理。
與功率相關(guān)的成本方程涉及到寄存器共享所引入的虛動作的計算。這種計算的實現(xiàn)需考慮到共享所涉及變量的開關(guān)活動率(switching activity)以及由這些變量所引入到功能單元的虛功率耗散,其中的功能單元在這些變量準(zhǔn)備共享一個共用寄存器時連接到所共享的寄存器上。有關(guān)開關(guān)活動率的信息由設(shè)計人員例如通過編輯器指令來提供,或者是如前所述那樣自動提供。由第一變量所引入的虛動作是由第一變量的開關(guān)活動率再乘上其它變量操作的功率因數(shù)計算出來,其中的其它變量是與第一變量共享一個寄存器的那些變量。模塊分配充分利用這些信息從而以一種有利于寄存器分配的方式來共享這些模塊。
其中Var1是到利益目的操作的第一輸入變量;Var2是到利益目的操作的第二輸入變量;SA是該變量相對于所有變量的開關(guān)活動率;n是目的操作的數(shù)目;以及Power是指不能與其它變量的任意目的操作共享的操作規(guī)格化功率消耗(虛動作)。
寄存器在其輸入變化時進(jìn)行開關(guān)切換。然而,對于功能單元輸出切換時的整個功率耗散來說,無論該輸出是否鎖定到一個共享的還是不共享的寄存器,這些寄存器的功耗仍保持不變,即仍有一個寄存器將不得不切換。另一方面,現(xiàn)有的多路器會消耗功率,并且這些多路器使整個功率消耗不同。功率管理的成本是指那些僅僅與非必要功能單元切換相關(guān)的成本。它們與寄存器切換或多路器切換的功率損失沒有關(guān)系。
參見圖1和6,公式5用來使一模塊分配朝著產(chǎn)生低功率管理成本的方向進(jìn)行。變量A的目的操作是一個ADDER(ALU)。變量B和C分別具有目的操作MULTIPLIER和SHIFTER。變量B和C的開關(guān)速率與變量A的相同。分配任務(wù)有利于較低功率管理成本。如果變量A與變量C而不是變量B共享一個共用寄存器,就會有一個較低功率管理成本,這是因為Powershifter低于Powermultiplier。
進(jìn)一步參見公式5,如果變量1的目的操作與變量2的相同,并且這兩項操作沒有交疊的壽命(即,這兩項操作可由同一個功能單元來實現(xiàn)),那么就沒有功率管理成本發(fā)生,這是因為通過寄存器共享不會引入虛動作(即,“Poweri”對公式5右側(cè)的兩個成分來說均為零)。
如前所述,程序外嵌套循環(huán)的開關(guān)活動率要低于象上面談到的內(nèi)嵌套循環(huán)的開關(guān)活動率。因此公式5就使為面積節(jié)省的不完美功率管理向較低活動循環(huán)的折衷。
用于寄存器分配的面積和功率的成本方程(圖12中的步驟S360)用于寄存器分配的面積和功率的成本方程類似于前面參照公式3和5所描述的那樣。那些用于成本方程的操作均由通過模塊分配所指定的功能單元所代替。
寄存器分配----面積成本計算在寄存器分配中能夠變化的相關(guān)面積成本是指那些因多路器(MUX)數(shù)目和寄存器數(shù)目帶來的成本。因此,在寄存器分配中,公式1中所用面積成本方程farea(x)確定如下farea(x)=(多路器面積成本之和)+(寄存器面積成本之和) [6]如果一個寄存器由兩個從不同功能單元過來的變量共享,那么會出現(xiàn)一MUX成本。同樣,如果有兩個變量傳到了一個共用的功能單元但不共享同一個寄存器,那么就會出現(xiàn)一MUX成本。所分配的寄存器輸入和輸出變量所需要的MUX面積按照下面公式7a和7b所示的寄存器分配面積成本方程中的xij進(jìn)行評估。
xij=((Overlap(i,j))‾*[((fui==fuj).Overlap(fui,fuj)‾‾)*CMUX]+Overlap(i,j)*MAX---[7a]]]>其中i是當(dāng)前分配中指定給寄存器的變量;j是在前次寄存器分配中如果該寄存器共享那么已指定給該寄存器的其中一個變量;CMUX是所評估的MUX的成本(例如基于MUX的位寬度);MAX是一個最大值,在匹配不可能的時候分配該值,因為這些操作不能共享相同的功能單元(該值不應(yīng)高到令所表示的成本引起溢出的程度);Overlap()在這些變量或者這些變量傳到或傳自的功能單元具有交疊壽命時返回1,否則返回0;fu所分配的功能單元,變量從寄存器傳到該功能單元,或者是該變量從該功能單元傳到寄存器。
在該寄存器的輸入端這里,當(dāng)那些傳到寄存器的變量來自不同的功能單元時會產(chǎn)生一個直接的MUX成本。在寄存器的輸出端,有一個暗含的MUX成本要分配給那些不經(jīng)過一共用功能單元的組合,從而鼓勵對那些跨越其它組合并傳給一個共用功能單元的變量進(jìn)行寄存器共享。這是因為如果那些傳給一個共用功能單元的變量被分配給不同的寄存器,就會產(chǎn)生一個MUX成本。該成本是暗含的,因為它們可以不是必然產(chǎn)生的,例如,如果這些組合中沒有一個組合是由那些傳給共用功能單元的變量構(gòu)成時,就不會產(chǎn)生該MUX成本。然而,該成本是否實際發(fā)生只有到整組寄存器被分配時才能確定下來。如果該暗含成本不能確定,那么其它的實施例就可將它們忽略掉。
如果這些變量i,j的壽命交疊,Overlap(i,j)=1。因此((Overlap(i,j))=0。這樣該結(jié)果始終都至少是1*MAX=MAX。
如果這些變量i,j的壽命沒有交疊,那么Overlap(i,j)=0,因此Overlap(i,j)*MAX=0。然而,這里仍可以有MUX面積成本。這一點取決于這些操作的壽命是否有交疊以及同一功能單元是否已被分配給兩個變量。
如果用于這些變量i,j的功能單元的壽命有交疊,那么((Overlap(fui,fuj))‾=0,]]>因此(fui==fuj).Overlap(fui,fuj)‾‾=1.]]>如果這些變量i,j的壽命沒有交疊,那么結(jié)果就是1*1*CMUX=CMUX。
如果用于這些變量i,J的兩個功能單元相同,那么(fui==fuj)=1。如果用于這些變量i,j的功能單元的壽命沒有交疊,那么((Overlap(fui,fuj))‾=1,]]>因此(fui==fuj).Overlap(fui,fuj)‾‾=0.]]>因此由該共享寄存器所帶來的MUX的面積成本就是零。
在對所產(chǎn)生的暗含成本進(jìn)行評估時,如果變量i傳到或傳自的功能單元與變量j的相同,其中的變量j已被分配給前一次寄存器分配中的一個不同的寄存器,那么暗含成本為(fui==fuj)*CMUX=1*CMUX=CMUX。
未分配寄存器即一個新分配寄存器的輸入和輸出變量所需要的MUX面積,按下面公式7b所示的寄存器分配面積成本方程xij進(jìn)行評估xij=[((fui==fuj))*CMUX][7b]如果傳給同一功能單元的變量不共享一個共用寄存器,那么會產(chǎn)生一個MUX成本。
寄存器分配——功率成本計算在寄存器分配中能夠變化的功率成本是指那些因多路器(MUX)分配以及功率管理成本帶來的成本。由此,在寄存器分配中,公式1中使用的功率成本方程即fpoweu(x)由下式確定fpoweu(x)=(功率管理成本之和)+(多路器功率成本之和) [8]寄存器分配中因MUX功率成本帶來的總功率的增加正比于該MUX面積的增加。MUX面積的增加可由上面的公式7導(dǎo)出。
其中Var1是分配給該寄存器的變量;Var2是本寄存器前面使用的變量;SA是該變量相對于所有變量的開關(guān)活動率;n是目的操作的數(shù)目;以及Power是指所分配的不能被兩個變量共享的功能單元的規(guī)格化的功率消耗。
與功率相關(guān)的成本方程涉及到寄存器共享所引入的虛動作的計算。這種計算的實現(xiàn)需考慮到共享所涉及變量的開關(guān)活動率,以及由這些變量引入到功能單元的虛功率耗散,其中的功能單元連接在這些共享的寄存器上。有關(guān)開關(guān)活動率的信息由設(shè)計人員例如通過編輯器指令來提供,或者是如前所述那樣自動提供。由第一變量所引入的虛動作是由第一變量的開關(guān)活動率再乘上其它變量功能單元的功率因數(shù)計算出來,其中的其它變量是與第一變量共享一個寄存器的那些變量。
所需寄存器的最小數(shù)目就是任一時刻所用寄存器的最大數(shù)目。這可包括用于兩組或多組中所需的變量,如果變量在時間上交疊。然而,這會導(dǎo)致功率成本的增加。另一方面,所設(shè)計電路可給每一個變量使用一個不同的寄存器。這樣會使功耗降低但會使面積成本變大。本實施例可解決與將變量分配給不同寄存器相關(guān)的成本(根據(jù)面積和功率管理哪一個更為重要而采用權(quán)重來分配成本),然后可解決哪一種分配組合能產(chǎn)生最佳的結(jié)果。該過程以組為基礎(chǔ)通過組來解決這個問題。由此,在一組中變量到寄存器的所有可能的分配都被前面組的分配所限定。任意一組的潛在候選者包括到目前為止所有已被分配的寄存器,即到該特殊分配為止所用過的寄存器數(shù)目的集合,再加上與當(dāng)前組中變量數(shù)目相等的寄存器的數(shù)目。然而,某一分配會因壽命的交疊而無法進(jìn)行。在這種情況下,與該組合相關(guān)的成本就會很高,其至少是上面公式7的MAX的值。
通過權(quán)重的自動寄存器數(shù)目確定的示例圖13示意性地展示了在多個控制步驟(S1到S4)中有壽命的變量,這些變量被分成多個變量組(組0到組3)。在寄存器到變量組0的初始分配之后,給組1中變量的分配并非一定需要額外的寄存器,因為組1中變量的總數(shù)少于組0中的變量,并且組0中變量的數(shù)目與組1中變量的數(shù)目相同或更多,組0中變量與組1中變量的壽命沒有交疊。更為精確地講,在本例中,組0中有三個變量的壽命與組1中三個變量的壽命沒有交疊。然而,對于本方案來講,為了得到完美的功率管理(僅相對于不完美的功率管理),對該分配來說可獲得的作為候選的寄存器的總數(shù)目是八個而不是五個。(組0的五個,以及用來實現(xiàn)完美功率管理分配的另外三個寄存器)。
下面提供自動寄存器分配的一個示例。本方案自動得到結(jié)論為了更好的功率管理而使用額外的寄存器;以及考慮到功率和面積之間折衷所用的額外寄存器的數(shù)目。
現(xiàn)在來考慮表1所示的一個模塊分配的結(jié)果。對于圖13中組0中的寄存器分配來說,變量a、b、c、d和e分別分配給R1、R2、R3、R4和R5(圖12中的步驟S354)。這是因為在第一組分配的過程中沒有成本。
表1模塊分配結(jié)果
表2組1的成本分配
在本實施例中,該矩陣實際為一方陣。為了在該組中變量之外的欄中的輸入,生成高數(shù)值的錯誤計算。這一點來平衡該矩陣。如果該問題是平衡的,那么匈牙利算法就能產(chǎn)生一個錯誤的結(jié)果。
組1中的變量f、g和h不能使用寄存器R1或R2,因為在變量f到h首次使用時,組0中的變量a和b仍使用著這些寄存器。將這些分配表現(xiàn)為通過包含一個由上面的公式7產(chǎn)生的很高的結(jié)果是不可能的。此外,在變量f首次使用時寄存器R3和R4仍分別被變量c和d使用著。然而,當(dāng)變量g和h首次使用時情況就變了。因此,在上面的表2中,寄存器R3和R4中的變量g和h有數(shù)值。
每一種組合的成本輸入均是Karea(直接面積成本+暗含面積成本-公式7a)+Kpower(功率成本-公式8)。例如對于具有寄存器R4的變量g組合來說直接面積成本=[((Overlap(i,j))‾*[((fui==fuj).Overlap(fui,fuj)‾‾)*CMUX]+Overlap(i,j)*MAX]+0]]>=[(0‾)*(0).(0)‾‾*CMUX]+(0)*MAX]]]>[6]由于共享變量沒有交疊,功能單元沒有交疊,因此相同的功能單元沒有分配給兩個共享的變量。
=1*1*CMUX=CMUX暗含面積成本=[((Overlap(i,j))‾*[((fui==fuj).Overlap(fui,fuj)‾‾)*CMUX]+Overlap(i,j)*MAX]+0]]>=[(0‾)*(0).(0)‾‾*CMUX]+(0)*MAX,]]>[6]由于共享變量沒有交疊,功能單元沒有交疊,因此相同的功能單元沒有分配給兩個共享的變量。
=1*1*CMUX_implicit=CMUX_implicit
這里沒有額外的與使用了寄存器R4的變量g相關(guān)聯(lián)的寄存器面積成本,因為總之R4將會出現(xiàn),其會被組0中的變量d用到。然而,由于寄存器共享就意味著現(xiàn)在就需要多路器,因此這里有一個MUX面積成本。暗含的MUX面積成本僅用于面積成本的計算。該暗含的MUX面積成本在功率成本管理中甩出,因為該成本并非必然產(chǎn)生。
=SA(g.)Power(FU1<<)+SA(d).Power(FU1*)+Power(CMUX)]]>[8]由于寄存器R4已分配給組0中的變量d,因此變量d的開關(guān)活動率是相關(guān)的,因為其是變量d所用目的功能單元虛動作的功率消耗,即轉(zhuǎn)換器(shifter)1(表1中),并且寄存器共享必須要有MUX的功率成本。
對于指定給R6的變量f來說,這里有寄存器面積成本,因為這是R6第一次被分配。這里還有一個MUX成本,因為變量f的目的與變量e的目的相同,變量e已分配給寄存器R5。此外,這里還會有一個與MUX相關(guān)的功率成本。
對于指定給R8的變量h來說,這里有寄存器面積成本,因為這是R8第一次被分配。然而,這里沒有功率管理成本(至少是從本分配來講沒有),因為寄存器R8未被其它任何一個可能由此具有不同目的模塊的變量共享。
采用前述方法,對于一個寄存器分配來說,寄存器面積成本和功率管理成本中至少有一個始終為零。然而,這里在有功率管理成本的同時可能會有一個MUX面積成本。該寄存器要么是被二次分配從而使這里沒有額外的寄存器面積成本但可能會有MUX面積成本,要么是被第一次分配,此時該寄存器不被共享并且這里將沒有功率管理成本。
當(dāng)Karea與Kpower相比非常大時,變量f、g和h指定給R3、R4和R5(也可不按該順序)并且不需額外的寄存器R6、R7和R8,會導(dǎo)致更小的面積但不完美的功率管理。變量f將被分配給R5,因為這種分配只有CMUX成本。匈牙利算法會基于下面兩種不同的分配組合的功率成本的比較結(jié)果自動確定出變量g和h在寄存器R3和R4之間的分配以便實現(xiàn)最佳的功率管理成本
SA(g).Power(FU4+)+SA(c).Power(FU1*)+SA(h).Power(FU1<<)+SA(d).Power(FU1/)+Power(CMUX)和SA(g).Power(FU4+)+SA(c).Power(FU1/)+SA(g).Power(FU1<<)+SA(d).Power(FU1*)+Power(CMUX)另一方面,當(dāng)Kpower比Karea大許多時,變量f、g和變量h指定給三個新的寄存器R6、R7和R8。實際的分配可能是隨機(jī)的,因為這里僅有面積成本需要考慮,并且該面積成本對于每一個寄存器來說都是一樣的。作為選擇,例如在該成本相同的地方,將較低數(shù)目的變量指定給較低數(shù)目的寄存器,并且在所用寄存器數(shù)目中沒有空隙。
下面來考慮Kpower和Karea的數(shù)值形成成本矩陣粗略相等的情況。變量f要么分配給寄存器R5,要么分配給來自{R6,R7,R8}的一個新的寄存器,變量g和h的可能分配結(jié)果如下變量g指定給R3,變量h指定給R4或者是{R6,R7或R8}中還未被指定的一個新的寄存器;變量g指定給R4,變量h指定給R3或者是{R6,R7或R8}中還未被指定的一個新的寄存器;變量g和h指定給{R6,R7和R8}中還未被指定的兩個新的寄存器。
在任意一種情況下,變量g或h均不指定給R5,因為如果與MUX相關(guān)聯(lián)的成本低于與寄存器相關(guān)聯(lián)的成本,那么總的計算始終都是變量f在寄存器R5時其成本要低于變量g或h分配到那里的情況。
在上述示例中,MUX的成本均與MUX具有兩個輸入并且每一個輸入都具有相同位寬度(例如32位)時的情況相同。該Reg_Costs同樣也是對R6到R8來說其與這些寄存器同時僅用于一個變量相同。
匈牙利算法解決了雙向賦權(quán)中的分配,使整個存在的成本降到最小。功率和面積權(quán)重用來引導(dǎo)該分配。該實施例的原理是與約束和指出的優(yōu)先級相關(guān),自動確定所要分配的寄存器的數(shù)目。
圖14是一例雙向圖,其展示了組1中變量被分配之后圖13中組2中變量到寄存器的可能的分配情況。在一雙向圖中,節(jié)點集合被分成兩個分開的子集合。每條邊緣連接不同子集合中的兩個節(jié)點。在圖13所示第二組的寄存器分配中,本圖中兩個子集合具有兩個集合,寄存器集合R={r1,r2,r3,r4,r5,r6,r7,r8}和變量集合V={vf,vg,vh},如圖14所示。在寄存器已經(jīng)分配有變量的地方,圖14相關(guān)的節(jié)點中就出現(xiàn)變量的數(shù)字。該圖有一邊緣的集合,其表示可能的匹配E={e3,g,e3,h,e4,g,e4,h,e5,f,e5,g,e5,h,e6,f,e6,g,e6,h,e7,f,e7,g,e7,h}。將每一個變量與一寄存器匹配的問題定型為一個經(jīng)典任務(wù)分配問題。那些沒有任何共用末端節(jié)點的最大邊緣子集合被定義為該圖的最大匹配,這里圖的最大邊緣-權(quán)重匹配是與其邊緣權(quán)重最大總和的最大匹配。這有助于確保這些連線在權(quán)重雙向賦權(quán)中不會與其它的邊緣競爭,因為它們不是有效邊緣。
上述實施例的裝置和方法可在一計算機(jī)系統(tǒng)400上,例如圖15所示系統(tǒng)上實現(xiàn)。這些實施例可用作一個軟件,如能夠在計算機(jī)系統(tǒng)400并且指令計算機(jī)系統(tǒng)400來進(jìn)行上述實施例方法的計算機(jī)程序。
計算機(jī)系統(tǒng)400包括一計算機(jī)模塊402,輸入模塊如鍵盤404和鼠標(biāo)406多個輸出設(shè)備如顯示器408和打印機(jī)410。
該計算機(jī)模塊402通過一個合適的收發(fā)設(shè)備414來與計算機(jī)網(wǎng)絡(luò)412相連,從而能夠接入例如互聯(lián)網(wǎng)或者是其它的網(wǎng)絡(luò)系統(tǒng)如局域網(wǎng)(LAN)或者是廣域網(wǎng)(WAN)。
本例中的計算機(jī)模塊402包括;一個處理器418,一個隨機(jī)存取器(RAM)420以及一個只讀存貯器(ROM)422。該計算機(jī)模塊402還包括多個輸入/輸出(I/O)接口,如一個到顯示器408的I/O接口424以及一個到鍵盤404的I/O接口426。該鍵盤404例如可由芯片設(shè)計人員使用來指示功率和面積約束,以及它們在優(yōu)化中的重要級從而芯片適應(yīng)不同的優(yōu)化要求。
計算機(jī)模塊402中的部分通常通過一個總線428以本領(lǐng)域技術(shù)人員公知的方式進(jìn)行通訊。
該應(yīng)用程序通常提供給該計算機(jī)系統(tǒng)400的用戶,編碼在數(shù)據(jù)存貯介質(zhì)如CD-ROM或者是軟盤上,并通過與數(shù)據(jù)存貯設(shè)備的相應(yīng)數(shù)據(jù)存貯介質(zhì)驅(qū)動器430來讀取。該應(yīng)用程序由處理器418讀取并由其在執(zhí)行中控制。程序數(shù)據(jù)的中間存貯可通過RAM420來實現(xiàn)。
效果用來產(chǎn)生高層次綜合寄存器傳輸級設(shè)計的方法和裝置利用了數(shù)據(jù)通路分配中功率耗散和面積使用之間的折衷。功率耗散和面積約束以及兩者之間的優(yōu)先級是輸入。根據(jù)所指定的優(yōu)先級和指定的約束,用一個算法來自動決定所要使用的寄存器的數(shù)目。功率管理方程可用來引導(dǎo)分配過程從而用較低的功率管理成本換來寄存器面積的等量節(jié)約。多規(guī)范優(yōu)化整數(shù)線性規(guī)劃用來與啟示方式確定的功率和面積權(quán)重一起來適應(yīng)芯片設(shè)計的不同要求。使用雙向賦權(quán)通過成本方程和匈牙利算法來確定每一階段所用寄存器的數(shù)目。
現(xiàn)代的芯片設(shè)計迎合了各種需要的應(yīng)用。用于便攜設(shè)備的芯片以及高密度的芯片在其研發(fā)中功率是首要的優(yōu)化目標(biāo)。另一方面,在非便攜應(yīng)用中的芯片的研發(fā)中,面積的考慮通常在功率之前。上述實施例提供了一種交互工具,其能使用戶指定數(shù)據(jù)通路分配優(yōu)化(面積/功率)的優(yōu)先級,以及各自所需滿足的約束(面積和功率)。這些交互工具能使用戶基于芯片所用的場合以及加在其上的約束來確定數(shù)據(jù)通路的分配。
上述實施例通過提供一種機(jī)制,該機(jī)制能沿著一個最佳的功率-面積折衷設(shè)計軌跡,用功率管理成本交換面積,從而減少了現(xiàn)有技術(shù)中的某些問題。功率管理成本方程能調(diào)整這種分配來用最小的功率管理成本交換等量的面積,其中將變量的開關(guān)速率以及模塊不完美管理的功率損失用作該方程中的參數(shù)。在面積優(yōu)先的優(yōu)化中,重復(fù)的數(shù)據(jù)通路分配形成了一種體系結(jié)構(gòu),其用最小的面積交換功率從而實現(xiàn)用戶通過用戶界面指定的功率約束。在功率優(yōu)先的優(yōu)化中,重復(fù)的數(shù)據(jù)通路分配形成了一種體系結(jié)構(gòu),其用最小的功率交換面積從而實現(xiàn)用戶通過用戶界面指定的面積約束。
該數(shù)據(jù)通路分配用雙向賦權(quán)來實現(xiàn),并以匈牙利算法來解決這些分配的匹配問題。該匈牙利算法復(fù)雜度O(n3)很低,因此分配并不耗時。
上面的實施例是參照一個電子電路如解碼器或編碼器的數(shù)據(jù)通路分配來描述的。然而,上述方法也可用來給其它電路如光學(xué)/光子電路分配數(shù)據(jù)通路,顯然這很容易被本領(lǐng)域技術(shù)人員所理解。
前面公開了用來分配數(shù)據(jù)通路的方法和裝置。其中只描述了幾個實施例,但本領(lǐng)域技術(shù)人員都清楚在本發(fā)明構(gòu)思的范圍內(nèi)還有許多的變化和/或修訂。
權(quán)利要求
1.一種數(shù)據(jù)通路分配的方法,其包括(a)生成資源的一個初始分配;(b)確定該資源分配是否滿足預(yù)定的第一約束;并且如果該約束得不到滿足;(c)基于面積使用和功率使用中較低的一個以及面積使用和功率使用中較高的另一個之間的折衷,生成一個修訂的資源分配;以及重復(fù)(b)和(c)直到確定該第一約束得到滿足。
2.如權(quán)利要求1的方法,其中生成資源初始分配包括,以較低面積和較低功率使用之間的優(yōu)先級為基礎(chǔ)來分配資源。
3.如權(quán)利要求2的方法,其中如果優(yōu)先級是較低面積超過較低功率,生成資源初始分配包括,以高數(shù)量的寄存器共享為基礎(chǔ)來分配資源。
4.如權(quán)利要求3的方法,其中如果優(yōu)先級是較低面積超過較低功率,生成資源初始分配包括,以盡可能多的寄存器共享為基礎(chǔ)來分配資源。
5.如權(quán)利要求2至4之一的方法,其中如果優(yōu)先級是較低面積超過較低功率,重復(fù)地生成一個修訂的資源分配包括,重復(fù)地提高面積使用并減少功率使用,直到第一約束得到滿足。
6.如權(quán)利要求2至5之一的方法,其中如果優(yōu)先級是較低功率超過較低面積,生成資源初始分配包括,以良好的功率管理為基礎(chǔ)來分配資源。
7.如權(quán)利要求6的方法,其中如果優(yōu)先級是較低功率超過較低面積,生成資源初始分配包括,以完美的功率管理為基礎(chǔ)來分配資源。
8.如權(quán)利要求2至7之一的方法,其中如果優(yōu)先級是較低功率超過較低面積,重復(fù)地生成一個修訂的資源分配包括,重復(fù)地提高功率使用并減少面積使用直到第一約束得到滿足。
9.如權(quán)利要求2至8之一的方法,進(jìn)一步包括輸入較低面積和較低功率使用之間的優(yōu)先級。
10.如權(quán)利要求2至9之一的方法,其中如果優(yōu)先級是較低功率超過較低面積,那么就在較高的面積使用對較低的功率使用之間進(jìn)行折衷。
11.如權(quán)利要求2至10之一的方法,其中如果優(yōu)先級是較低面積超過較低功率,那么就在較高的功率使用對較低的面積使用之間進(jìn)行折衷。
12.如權(quán)利要求11任何一個的方法,其中為了較低面積使用而接受較高的功率使用包括,在寄存器之間分配更多將被共享的變量。
13.如權(quán)利要求12的方法,其中與使用頻率較高的變量相比,將使用頻率較低的變量作為將被分配的目標(biāo),將在產(chǎn)生修訂資源分配的較早重復(fù)中的寄存器之間進(jìn)行共享。
14.如權(quán)利要求12或13的方法,其中那些用于操作的變量,這些操作功率消耗較高,與這樣的變量相比,用于操作的變量,這些操作的功率消耗較低,將這些變量作為將被分配的目標(biāo),將在產(chǎn)生修訂資源分配的較早重復(fù)中的寄存器之間進(jìn)行共享。
15.如權(quán)利要求10或如權(quán)利要求11至14之一當(dāng)其至少從屬于權(quán)利要求10時的方法,其中為了較低功率使用而接受較高面積使用包括,分配更多的變量,這些變量在寄存器之間共享從而將寄存器分開。
16.如權(quán)利要求15的方法,其中使用頻率較多的變量相比于使用頻率較少的變量在生成一個修訂資源分配的較早重復(fù)中作為將被分配的目標(biāo)從而將寄存器分開。
17.如權(quán)利要求15或16的方法,其中那些用于操作的變量,這些操作功率消耗較低,與這樣的變量相比,那些用于操作的變量,這些操作的功率消耗較高,將這些變量作為將被分配的目標(biāo),從而將在產(chǎn)生修訂資源分配中較早重復(fù)中的寄存器分開。
18.如前述任一權(quán)利要求的方法,其中生成一修訂資源分配包括,確定一個與多個可能分配相關(guān)聯(lián)的成本,并基于相關(guān)聯(lián)的成本選擇一個分配。
19.如權(quán)利要求18的方法,其中基于相關(guān)聯(lián)的成本選擇一個分配包括,選擇相關(guān)成本最較低的分配。
20.如前述任一權(quán)利要求的方法,其中給功率使用一個功率權(quán)重,并且成本與資源的分配相關(guān)聯(lián),資源分配是基于與該分配相關(guān)的功率使用和功率權(quán)重。
21.如前述任一權(quán)利要求的方法,其中給面積使用一個面積權(quán)重,并且成本與資源的分配相關(guān)聯(lián),資源分配是基于與該分配相關(guān)的面積使用和面積權(quán)重。
22.如權(quán)利要求20或21的方法,當(dāng)其至少從屬于權(quán)利要求18時,其中生成一個修訂資源分配進(jìn)一步包括,改變該權(quán)重或者至少一個權(quán)重。
23.如前述任一權(quán)利要求的方法,其進(jìn)一步包括在確定面積和功率之間的折衷時,使用用于變量的開關(guān)活動率開關(guān)活動率。
24.如權(quán)利要求23的方法,其進(jìn)一步包括輸入有關(guān)變量開關(guān)活動率的信息。
25.如權(quán)利要求24的方法,其中的開關(guān)活動率由用戶通過編輯器指令輸入。
26.如權(quán)利要求23或24的方法,其進(jìn)一步包括自動確定用于變量的開關(guān)活動率。
27.如權(quán)利要求26的方法,其中開關(guān)活動率的缺省值在這些數(shù)值沒有輸入時確定出來。
28.如權(quán)利要求23至27之一的方法,其進(jìn)一步包括,從在2個變量之間共享一個共用寄存器來計算相關(guān)功率耗散成本,對這2個變量之間的任何一個,通過將該變量的開關(guān)速率與一個功能單元的功率量度相乘,該功能單元與另一個變量相連,從而指示在共享過程中引入的虛功率耗散。計
29.如權(quán)利要求28的方法,其中相應(yīng)的功率耗散成本按照下式計算出來 其中Var1是分配給該寄存器的變量;Var2是本寄存器前面使用的變量;SA是該變量相對于所有變量的開關(guān)活動率;n是目標(biāo)操作的數(shù)目;以及Power是指所分配的不能被兩個變量共享的功能單元的規(guī)格化的功率耗散。
30.如前述任一權(quán)利要求的方法,其中生成資源分配包括,分別將數(shù)據(jù)通路中的操作和變量分配給模塊和寄存器。
31.如權(quán)利要求30的方法,進(jìn)一步包括,生成能夠使用相同模塊的操作的組。
32.如權(quán)利要求30或31的方法,進(jìn)一步包括,生成操作組,其中的操作在給模塊分配操作時其壽命存在交疊。
33.如權(quán)利要求31和32的方法,其中通過使用相同模塊以及交疊壽命是否有交疊將該操作分成組。
34.如權(quán)利要求30至33之一的方法,其進(jìn)一步包括生成變量族,其中在給模塊分配變量時具有交疊的壽命。
35.如前述任一權(quán)利要求的方法,其進(jìn)一步包括為到功能單元操作的不同分配,確定相應(yīng)的面積成本。
36.如前述任一權(quán)利要求的方法,其進(jìn)一步包括為到寄存器變量的不同分配,確定相應(yīng)的面積成本。
37.如權(quán)利要求36的方法,其中的面積成本包括寄存器的面積成本。
38.如權(quán)利要求35至37之一的方法,其中的面積成本包括多路器的面積成本。
39.如權(quán)利要求35至38之一的方法,其中的面積成本包括一特定分配中的直接面積成本。
40.如權(quán)利要求39的方法,其中的面積成本進(jìn)一步包括一特定分配中的暗含面積成本。
41.如前述任一權(quán)利要求的方法,其中生成資源的分配進(jìn)一步包括使用具有功率和面積使用的權(quán)重的雙向賦權(quán)分配。
42.如權(quán)利要求41的方法,其進(jìn)一步包括在生成一個修訂的資源分配時,改變功率和面積使用的相應(yīng)權(quán)重。
43.如前述任一權(quán)利要求的方法,其中生成資源的分配進(jìn)一步包括用匈牙利算法來解決分配匹配問題。
44.如前述任一權(quán)利要求的方法,其中在較低面積使用和較低功率使用之間的折衷包括通過滿足下式來共同優(yōu)化面積和功率minx∈CF(x)=Kpowerfpower(x)Kareafarea(x)---(1)]]>其中fpower(x)是功率的成本公式farea(x)是面積的成本公式C={最大變量密度處寄存器或功能單元最小數(shù)目的約束}Kpower是fpower(x)的權(quán)重,以及Karea是farea(x)的權(quán)重
45.如前述任一權(quán)利要求的方法,其中預(yù)定的第一約束是預(yù)定的面積約束和預(yù)定的功率使用約束中的一個。
46.如權(quán)利要求45的方法,其中一預(yù)定的第二約束是預(yù)定的面積約束和預(yù)定的功率使用約束中的另一個,并且(b)進(jìn)一步包括確定是否滿足預(yù)定的第二約束。
47.如權(quán)利要求45的方法,其中一預(yù)定的第二約束是預(yù)定的面積約束和預(yù)定的功率使用約束中的另一個,并且進(jìn)一步包括,在確定第一約束已經(jīng)滿足之后,確定是否滿足預(yù)定的第二約束。
48.如前述任一權(quán)利要求的方法,其進(jìn)一步包括至少輸入預(yù)定的第一約束。
49.如前述任一權(quán)利要求的方法,其是一種由一個給定的數(shù)據(jù)流圖(CFG)來進(jìn)行數(shù)據(jù)通路分配的方法。
50.如前述任一權(quán)利要求的方法,其是一種給一電路進(jìn)行數(shù)據(jù)通路分配的方法。
51.如前述任一權(quán)利要求的方法,其是一種給一電子電路進(jìn)行數(shù)據(jù)通路分配的方法。
52.一種數(shù)據(jù)通路分配的方法,其實際上如前文參照附圖所描述并顯示在附圖中的那樣。
53.一種用來數(shù)據(jù)通路分配的裝置,其包括裝置,用來形成資源的一個初始分配;裝置,用來確定該資源分配是否滿足至少一個預(yù)定的約束,該至少的一個預(yù)定約束至少包括一預(yù)定面積約束以及一預(yù)定功率使用中的一個;裝置,用來基于面積使用和功率使用中較低的一個以及面積使用和功率使用中較高的一個之間的折衷,形成一個修訂的資源分配;裝置,用來確定修訂后的分配是否滿足至少的一個預(yù)定約束;以及裝置,用來控制該裝置從而生成修訂的分配并確定修訂的分配是否滿足至少一個預(yù)定約束,直到該至少一個約束得到滿足為止。
54.一種裝置,其能根據(jù)權(quán)利要求1至52之一的方法進(jìn)行操作。
55.如權(quán)利要求53的裝置,其能根據(jù)權(quán)利要求1至52之一的方法進(jìn)行操作。
56.一種用于數(shù)據(jù)通路分配的裝置,將其構(gòu)造和布置從而實際上如前文參照附圖所描述并顯示在附圖中的那樣操作。
57.一種計算機(jī)程序產(chǎn)品,用來進(jìn)行數(shù)據(jù)通路分配,該產(chǎn)品具有一個記錄在一計算機(jī)可讀介質(zhì)上的計算機(jī)程序,所述計算機(jī)程序產(chǎn)品包括用來形成資料初始分配的計算機(jī)程序代碼裝置;用來確定該資料分配是否滿足至少一個預(yù)定約束的計算機(jī)程序代碼裝置,該至少的一個預(yù)定約束至少包括一預(yù)定面積約束以及一預(yù)定功率使用約束中的一個;計算機(jī)程序代碼裝置,用來基于面積使用和功率使用中較低的一個以及面積使用和功率使用中較高的另一個之間的折衷形成一個修訂的資源分配;計算機(jī)程序代碼模塊,用來確定修訂后的分配是否滿足該至少的一個預(yù)定約束;以及計算機(jī)程序代碼模塊,用來控制該裝置從而生成修訂后的分配并確定修訂后的分配是否滿足該至少的一個預(yù)定約束,直到該至少的一個約束得到滿足為止。
58.一種用于數(shù)據(jù)通路分配的計算機(jī)程序產(chǎn)品,具有一個記錄在一計算機(jī)可讀介質(zhì)上的計算機(jī)程序,并且該產(chǎn)品能根據(jù)權(quán)利要求1至52之一的方法進(jìn)行操作。
全文摘要
一種用來產(chǎn)生高層次綜合寄存器傳輸級設(shè)計的方法和裝置,采用數(shù)據(jù)通路分配中功率耗散和面積使用之間的折衷。功率耗散和面積約束以及兩者之間的優(yōu)先級是輸入。根據(jù)該指定的優(yōu)先級和指定的約束,一種算法自動確定所用寄存器的數(shù)目。可用功率管理方程來調(diào)整分配過程從而用較低的功率管理成本交換寄存器面積中的等量節(jié)省。多規(guī)格優(yōu)化整數(shù)線性規(guī)劃與啟發(fā)式確定出來的功率和面積權(quán)重一起使用,從而適應(yīng)芯片設(shè)計的不同需要。使用雙向賦權(quán)通過成本方程和匈牙利算法來確定每一階段所用寄存器的數(shù)目。
文檔編號G06F17/50GK1957352SQ200480043146
公開日2007年5月2日 申請日期2004年11月19日 優(yōu)先權(quán)日2004年5月24日
發(fā)明者維·理·紐, 蒂恩·平·川華 申請人:松下電器產(chǎn)業(yè)株式會社