多端口寄存器堆的低功耗設(shè)計方法
寄存器堆是構(gòu)成微處理器的重要部件,緩存和傳輸操作數(shù)是它的基本作用,其性能優(yōu)劣將直接影響處理器的處理能力。隨著處理器并行處理能力的加強(qiáng),寄存器堆的端口越來越多,端口的增加不但增加了功耗,也加大了讀寫延時,限制了處理器時鐘頻率的提高,成為高性能微處理器的片上存儲瓶頸。
高速和低功耗是多端口寄存器堆的設(shè)計目標(biāo),但是兩者之間相互約束。在Motorola的M.CORE處理器中,寄存器堆的功耗占整個芯片的16%,在數(shù)據(jù)通路中的比例更是高達(dá)42%。有研究表明,寄存器堆的功耗達(dá)到整個處理器芯片功耗的25%。因此,高速低功耗的多端口寄存器堆的設(shè)計成為未來存儲器設(shè)計中極具挑戰(zhàn)性的工作。
1 寄存器堆的功耗組成
1.1 寄存器堆的總體結(jié)構(gòu)
目前寄存器堆所采用的基本組成單元是6T SRAM。寄存器堆在電路結(jié)構(gòu)上,可分為四個部分。第一是由存儲單元構(gòu)成的存儲陣列;第二是由地址緩沖器、譯碼器、字線及其驅(qū)動器構(gòu)成的地址路徑;第三是由數(shù)據(jù)緩沖器、讀寫放大器、位線及其預(yù)充電路構(gòu)成的數(shù)據(jù)路徑;第四是讀寫控制邏輯。如圖1所示。
1.2 多端口寄存器堆結(jié)構(gòu)
多端口的存儲單元一般每個端口都有自己的字線和位線,從而保證各個端口能夠同時獨立工作,以滿足指令級并行的微處理器工作要求。但是這同時也導(dǎo)致了寄存器堆功耗的迅速提高。多端口讀寫位線一般有差分式和單端式兩種,差分式讀寫以更高的數(shù)據(jù)準(zhǔn)確性和讀寫速度應(yīng)用于多數(shù)的多端口設(shè)計。其結(jié)構(gòu)如圖2所示。
1.3 多端口寄存器堆的功耗組成
1.3.1 基本單元SRAM
基本單元SRAM的功耗主要由三個部分組成。一是動態(tài)功耗,即電容充放電所消耗的功耗。二是短路功耗,即電源和地導(dǎo)通時所消耗的功耗。三是MOS管泄漏電流所引起的靜態(tài)功耗。在三種功耗中動態(tài)功耗所占比重最大,而SRAM中位線連接許多存儲體單元,其電容負(fù)載很大,位線充放電所引起的動態(tài)功耗就很大,占到總體動態(tài)功耗的80%,所以優(yōu)化位線動態(tài)功耗對整個SRAM功耗降低影響很大。
1.3.2 電路組成部分
在多流水線結(jié)構(gòu)的指令集并行微處理器中,一個時鐘周期內(nèi)可能對寄存器堆同時進(jìn)行讀寫操作,假設(shè)每個操作的功耗是獨立的,那么寄存器堆的總功耗即為每個操作所用功耗乘以單位時間內(nèi)的操作次數(shù)。每個操作的功耗是電路各部分功耗的總和:譯碼邏輯功耗,存儲陣列功耗,敏感放大器功耗,以及對敏感放大電路、預(yù)充電路和寫驅(qū)動電路控制的驅(qū)動信號的功耗。因此,要降低寄存器堆的功耗,就應(yīng)該同時從基本單元SRAM以及各個電路組成部分入手。
2 降低寄存器堆功耗的主要途徑
2.1 降低電壓擺幅
SRAM的動態(tài)功耗可由式(1)表示:
其中,α是活動因子,f是時鐘頻率,CL是負(fù)載電容,Vswing是信號擺幅,VDD是電源電壓,位線動態(tài)功耗可以用式(2)表示:
f和Cbitload分別是位線的轉(zhuǎn)換頻率和電容負(fù)載,Vswing是位線電壓擺幅,VDD是電源電壓。由(2)式可以看出在轉(zhuǎn)換頻率和電源電壓固定的條件下,可以通過減少位線電壓擺幅來優(yōu)化位線功耗,由于SRAM進(jìn)行寫操作時Vswing達(dá)到VDD,而讀操作時Vswing很小,所以Vswing研究主要在寫操作周期。
采用電荷分享方法的低位線擺幅(LVBS)低功耗SRAM結(jié)構(gòu)設(shè)計可以降低位線電壓幅值,如圖3所示,當(dāng)clk為0時,連接data_outO和data_outl的傳輸門關(guān)閉,無論data_in為何值,電荷分享驅(qū)動電路中兩個MOS管中只有一個能被打開,所以輸出data_out0和data_outl中只有一個輸出為VDD,另一個輸出則為GND。當(dāng)clk為1時,兩個MOS管同時關(guān)閉,異或非門輸出為1,傳輸門打開。只要輸出負(fù)載電容相等,根據(jù)電荷守恒定律,data_out0和data_out1的電壓都變?yōu)閂DD/2,即電壓擺幅減少了50%,根據(jù)式(1)可知,位線動態(tài)功耗降低,從而達(dá)到降低寄存器堆功耗的目的。
2.2 減小負(fù)載電容
由式(2)可知,在轉(zhuǎn)換頻率和電源電壓固定的條件下,位線功耗的優(yōu)化的另一種方法是降低位線電容,通過對存儲體陣列進(jìn)行分割,減少位線上的存儲單元數(shù)目,來實現(xiàn)負(fù)載電容的減小。而且對于大容量的寄存器堆,字線上連接的存儲單元的數(shù)目也很大,它的功耗將隨陣列列數(shù)的增加而成線性增加,而位線的延遲將隨陣列行數(shù)的增加成平方關(guān)系增大。采用字線分割和位線分割技術(shù)可以將存儲陣列進(jìn)行分塊來減小字線和位線上的負(fù)載電容及連線延遲。但是分的塊數(shù)過多又會帶來過多的輔助電路的開銷,文獻(xiàn)列出了各種陣列分割方法的功耗優(yōu)化算法,通過綜合由分塊結(jié)構(gòu)帶來的功耗節(jié)約和功耗開銷,最終確定寄存器堆的分塊結(jié)構(gòu),才能達(dá)到減小功耗的目的。
2.3 采用門控時鐘
由式(1)和式(2)可知,大部分的功耗都是由邏輯轉(zhuǎn)換期間電路中電容的充放電引起的動態(tài)功耗,因此動態(tài)的關(guān)閉處于空閑狀態(tài)邏輯的時鐘,減少電路中冗余的狀態(tài)翻轉(zhuǎn),降低開關(guān)的活動頻率f,使更多的邏輯電路單元處于未激活的狀態(tài)來降低功耗。采用門控時鐘,通過在空閑狀態(tài)隔離開時序元件和時鐘網(wǎng)絡(luò)來減少功耗,是一種降低動態(tài)功耗的有效技術(shù)。
門控時鐘是通過一個控制信號來使能寄存器的時鐘端,當(dāng)使能信號有效時時鐘翻轉(zhuǎn),否則時鐘保持穩(wěn)定,讓部分電路處于空閑狀態(tài),達(dá)到節(jié)省功耗的目的。圖4給出了門控時鐘的示意圖,圖(a)是傳統(tǒng)的寄存器設(shè)計,無論數(shù)據(jù)端輸入數(shù)據(jù)更新與否,寄存器的時鐘端始終處于翻轉(zhuǎn)狀態(tài),如果寄存器需要保持原來的狀態(tài),還需要將寄存器的輸出數(shù)據(jù)反饋回輸入端與輸入信號進(jìn)行選操作,由控制邏輯產(chǎn)生的選擇信號En決定寄存器輸出數(shù)據(jù)。圖(b)是采用門控時鐘后的電路,En作為使能信號,只有當(dāng)它有效時,寄存器實際的時鐘輸入端才會產(chǎn)生脈沖,將輸入的數(shù)據(jù)更新到寄存器。門控時鐘可以切斷空閑時鐘,減小時鐘線的負(fù)載電容,降低動態(tài)功耗。同時在控制電路的設(shè)計中,可以采用門控時鐘對分塊的存儲陣列進(jìn)行控制。通過門控時鐘控制信號使能,某一時刻僅有要使用的塊被選中激活,其他塊處于待命狀態(tài),這樣就大大降低了整個寄存器堆的功耗了。
2.4 靈敏放大器
寄存器堆中的靈敏放大器是存儲單元讀操作中的關(guān)鍵部分,高速的靈敏放大電路可以降低位線上的電壓擺幅,減小敏感放大器功耗,降低讀操作的時間。
讀操作位線功耗可由下式估算:
其中,Lcell是存儲單元的電流,Tw1是字線上脈沖的寬度。
要降低讀操作的功耗,由上式可知,只要降低Lcell和Tw1即可。而Icell必須要大于靈敏放大器工作的輸入電流。因此,盡量采用低工作電流的靈敏放大器成為減小讀操作位線功耗的重要途徑。
通常的電壓型靈敏運(yùn)放為了避免電壓的小幅擺動,往往采用層次結(jié)構(gòu),但這樣帶來的不利是延時和功耗的增加,電路變得復(fù)雜。電流型的靈敏運(yùn)放電路能夠快速檢測到位線上電流的小幅擺動,而且可以降低讀操作的功耗,成為高速SRAM設(shè)計的首選。當(dāng)它工作時,位線電平幾乎保持不變,因而基本上消除了位線電容充放電引起的功耗,但是代之以短路電流功耗,如果不對接地電流進(jìn)行限制,就會大大抵消抑制位線電容充放電帶來的功耗節(jié)省,甚至可能增加功耗。差分電流型的靈敏運(yùn)放電路能提高寄存器堆的讀取速度,并且有效地降低靈敏放大器功耗。因此,針對不同規(guī)模的寄存器堆,要選擇合適類型的靈敏放大器,才能達(dá)到高速低功耗的要求。
3 總結(jié)
多端口寄存器堆的低功耗不能僅僅針對某個單元或某個部分進(jìn)行,而應(yīng)該結(jié)合它的基本組成單元和它的電路結(jié)構(gòu),分析其功耗組成,從中找到節(jié)約功耗的有效方法。本文總結(jié)了幾種降低多端口寄存器堆功耗的方案,對各個組成電路結(jié)構(gòu),有針對性地進(jìn)行功耗優(yōu)化,包括降低字位線電壓擺幅,減小負(fù)載電容,采用門控時鐘,以及選用合適的靈敏放大器等方法,從而達(dá)到降低寄存器堆總功耗的目的。