檔案地址暫存器

檔案地址暫存器

檔案地址暫存器,是計算機系統中信息存儲的基本單元,是關於某個主題的信息的集合,以此用來保存當前CPU所訪問的記憶體單元的地址。

基本介紹

  • 中文名:檔案地址暫存器
  • 外文名:File address register
  • 套用:計算機工程
40nm工藝多連線埠暫存器檔案設計,整體電 路設計,讀存儲陣列設計,版圖設計,寫時序,讀時序,適用於多核處理器的擴展暫存器檔案設計,多組結構,核間通信機制,底層配置指令,高層封裝函式,

40nm工藝多連線埠暫存器檔案設計

介紹了40mn工藝下一款16x36b7讀6寫的暫存器檔案全定製設計,採用讀寫陣列分離策略,支持32位和36位兩種寫入操作。為了解決多個讀連線埠讀同一地址時讀出過慢的問題,提出了一種基於與或非邏輯搭建的16選1讀出電路。讀寫陣列分離的套用,壓縮了讀出位線的線長,提高了讀出速度。版圖後的模擬結果表明,在TypicalCorner工作條件下,暫存器檔案相對於讀地址變化的讀出延時為217ps,寫後讀延時為440ps,平均功耗為11.18mW。

整體電 路設計

暫存器檔案尋寬度為4位,位寬為36位,支持32位寫入或36位寫入,低32位寫數據由低位寫使能信號控制寫入,高4位數據由低位寫使能和高位寫使能共同控制寫入。32位寫入時,讀相應的存儲單元時低32位為新寫入的值,高4位為原存儲單元中的值;36位寫入時,讀相應的存儲單元時36位數據為新寫入的值。
數據流向中,讀地址經4-16解碼,譯出16條讀字線,控制數據讀出;寫地址在寫使能、寫解碼時鐘控制下經4-16解碼譯出16條寫字線,控制低32位數據寫入,該寫字線和高4位寫使能相與,產生高4位寫字線,控制高4位數據寫入;寫數據在寫數據門控時鐘控制下鎖存,在寫字線控制下寫入存儲單元。

讀存儲陣列設計

為了加快暫存器檔案的讀出速度,提出了一種基於與或非邏輯搭建的16選1讀出電路;同時把讀使能從讀解碼器中移除,從而把讀使能從讀關鍵路徑上移走;陣列讀寫分離後,讀出位線線長壓縮了約一半的高度,減小了讀出位線負載,從而提高了讀出速度。
基於與或非邏輯搭建的16選1電路,相較於基於傳輸門搭建的16選1電路,該設計的好處是支持多連線埠讀同一地址,且不影響讀出延時。基於與或非門邏輯搭建的16選1電路中,主要由2個8選1電路、一級兩輸人或非門再加一級反相器組成。 其中8選1電路由4個AOI電路和一級四輸入與非門組成。 選擇字線(rwl<15:0>)有且只有一條有效,分別和reg<15:0>相與。 只有reg信號和rwl同時為1,輸出Q才為1; 否則輸出Q為0。

版圖設計

暫存器檔案版圖面積為296μmx85μm。 暫存器檔案中,版圖結構按功能進行劃分,主要包括以下幾個部分:中間部分從上至下依次為讀地址輸人反相器、寫地址寫使能鎖存器、讀寫地址解碼器;左右兩側從上至下依次是電源地解耦電容填充單元、寫數據鎖存器、讀寫陣列。讀地址在輸入處增加一級反相器,減小了其輸入線負載;讀寫分離策略的套用,使讀出位線線長由57μm減小到26μm,降低了讀出位線負載;讀出最後一級反相器置於讀寫陣列之上,使各讀出連線埠輸出驅動能力相當。

寫時序

第0位(低32位代表)寫數據寫時序相位關係、第35位( 高4位代 表)寫數據寫時序相位關係中,第0位和笫35位相比,寫數據從寫數據鎖存時鐘clk_wdata開啟到寫數據鎖存分別約為163Ps、169ps;從寫地址鎖存時鐘clk_ we開啟到寫字線開啟分別約為157.6Ps、198Ps。
寫時序主要需要滿足以下兩個要求:
(1)寫解碼時鐘要晚於寫鎖存後地址開啟,否則會先對舊地址解碼,後對新地址解碼,可能產生寫字線毛刺。 由第0位(低32位代表) 寫數據寫時序相位關係、第35位(高4位代表)寫數據寫時序相位關係可知寫地址鎖存時鐘clk_we滿足晚於寫鎖存後地址w0_addr_latChed<2>開啟,且寫字線也沒有毛刺,滿足正確的寫時序要求;
(2) 寫字線要晚於寫鎖存後數據開啟,否則會先寫入舊值後寫入新值,造成功耗的浪費。由第0位(低32位代表)寫數據寫時序相位關係、第35位(高4位代表)寫數據寫時序相位關係可知寫字線w0_wl_right<5>的開啟時間晚於笫0位寫鎖存後數據w0_data_latched<0>,寫字線w0_wl_left<5>的開啟時間晚於第35位寫鎖存後數據w0_data_latched<35>滿足正確的寫時序要求。

讀時序

讀地址到數據讀出時序版圖模擬波形中,從讀地址變化到讀字線r1_wl_left<13>有效約為129.1pS,而從讀字線r1_wl_left<13>有效到讀數據r1_rf_data<13>讀出約為197.8Ps。
低32位和高4位寫後讀延時版圖模擬波形中:對於低32位,clk上升沿到來時,到低32位寫字線w2_wl_right<4>產生約需324Ps,寫字線有效到寫數據寫入存儲單元reg4<4>中,約需58.4Ps,從reg4<4>有效到低32位讀出數據r1 —rf—data<4>讀出延時約為269.3ps,故低32位從clk上升沿到r1_rf_data<4>讀出延時約為651.7ps。
對於高4位,clk上升沿到來時,到高4位寫字線w2_wl_left<4>產生約需375.9PS,寫字線有效到寫數據寫入存儲單元reg4<33>中約需56.3ps,從reg4<33>有效到高4位讀出數據r1_rf_data<33>讀出延時約為271.6ps,故高4位從clk上升沿到r1_rf_data<4>讀出延時約為703.8ps。

適用於多核處理器的擴展暫存器檔案設計

針對處理器中可用暫存器數量有限的問題,提出一種適用於多核處理器的擴展暫存器檔案設計方案。採用多組結構進行硬體設計,將通信連線埠映射在擴展暫存器地址空間上,以實現暫存器定址核間通信機制,引入兼具底層指令與高層封裝的混合軟體配置方案,改進軟體編譯流程。評估結果表明,該方案將可用暫存器檔案的數量增加一倍,核間通信指令數目減少50%,系統吞吐率得到最佳化。

多組結構

採取多組結構的暫存器檔案具有良好的低功耗特性。主要原因是,每組暫存器數目越小,對應的地址位線翻轉電容也越小,暫存器訪問的動態功耗也越低。其次,在RISC體系結構下,不同暫存器的訪問頻率並不相同,32個暫存器中4個~10個暫存器占據了總訪問次數80%~90%。因此,將這些被頻繁訪問的暫存器單獨成組,可有效降低整體暫存器的地址解碼開銷,從而降低功耗。
設計中採取了8個字一組的多組結構。根據套用需求,暫存器組的個數可從4組擴展到8組,即32個字擴展到64個字。其中,採取8個字一組的原因有:首先,RISC架構下允許32個暫存器地址空間,可供選擇的有4個字一組、8個字一組與16個字一組,4個字一組的面積開銷顯著增加,16個字一組的翻轉電容較大,因此,功耗也較大。8個字一組是在面積與功耗之間的折中方案。其次,活躍暫存器的個數為4個~10個,採取8個字一組方式與實際的套用更為匹配。擴展暫存器檔案數據讀通道和擴展暫存器檔案數據寫通道中,分別顯示了8組擴展方案情況下24號暫存器與25號暫存器分別與FIFO讀口、寫口復用;
由擴展暫存器檔案數據讀通道和擴展暫存器檔案數據寫通道可知,暫存器配置位保證了每次只有4個暫存器組處於允許訪問狀態。如$0~$7暫存器組和$32~$39暫存器組每次只有一組處於允許訪問狀態,由相應的暫存器配置位進行配置。類似的,其他3對暫存器組也由相應的配置位控制。

核間通信機制

擴展暫存器檔案所套用的多核處理器平台採用2維Mesh拓撲結構的片上網路,共有4×4,總計16個處理器節點。數據經由異步時鐘FIFO由左上的處理器節點流入,同樣由異步時鐘FIFO從右下的節點流出。每個處理器節點包括RISC處理器核、指令存儲器、數據存儲器、輸入與輸出FIFO、路由以及提出的擴展暫存器檔案。其中,輸入與輸出FIFO是該處理器節點與外部進行通信的視窗,數據通過FIFO與路由進行互動,各個處理器節點的路由互動連線
成片上網路,採取的路由算法為X-Y防死鎖路由算法。一般地,處理器核訪問FIFO的方法是將其連線埠映射到自身的數據存儲器地址空間上,通過load與store指令進行訪問。流水線中load和store指令的執行需要2個~3個時鐘周期,因此,這種方法的時鐘延遲較大。在擴展暫存器檔案基礎上提出了一種更為簡便的方法,將FIFO連線埠映射到擴展暫存器檔案地址空間上,從而實現對FIFO的快速訪問,並顯著減少核間通信所需指令數。此外,實際套用中24號和25號暫存器訪問次數較少,因此,將其分別作為FIFO讀連線埠與FIFO寫連線埠的映射地址,由1bit配置位來控制。

底層配置指令

擴展暫存器檔案的配置依賴於5bit 配置暫存器。其中,低4bit用於對4對暫存器組進行切換配置,最高1bit用於對FIFO連線埠映射的暫存器地址空間進行配置。底層配置指令方法,為通過添加專門的指令對該暫存器檔案進行配置。配置指令的格式為regconfig mode[4:0],其中,mode[4:0]為配置信息,將被寫入配置暫存器RegFile Config[4:0]中。配置信息的低4bit位標明了允許訪問的暫存器組,而最高比特位給出了FIFO讀、寫連線埠的配置信息。通過該指令可以顯式地配置4對暫存器組以及FIFO讀口與FIFO寫口。底層配置指令方法的優點是直觀性與便捷性,缺點是使用彙編指令配置不利於高層軟體開發人員調用,底層特性限制了該配置方法使用範圍。

高層封裝函式

由於底層配置指令限制在彙編語言層次,不利於高層軟體開發人員調用,因此,本文在其基礎之上開發了基於函式封裝的高層次調配置方案。針對暫存器組配置與核間通信配置問題,抽象出switch、pack和unpack3個任務函式,高層軟體開發人員可以通過調用switch函式進行擴展暫存器組切換,通過調用pack函式進行核間通信數據傳送,通過調用unpack函式進行核間通信數據接收。其中,switch函式擁有5個輸入參數。前4個參數用以配置暫存器組,其可取值為0或者1。0為選中第1對~第4對中的原始暫存器組;1為選中其中的擴展暫存器組。第5個參數用以配置FIFO讀、寫連線埠,可取值為0或者1.0為取消;1為建立FIFO讀寫連線埠在暫存器地址空間映射關係。pack函式擁有4個輸入參數,分別為傳送數據的源處理器節點編號、接受數據的目的處理器節點編號、待傳送數據包頭地址、待傳送數據包長度。其中,處理器節點編號的可取值範圍為1~16,對應多核處理器的16個處理器節點,數據包頭地址為待傳送數據的地址指針,數據包長度可取值範圍為1~255,最大支持255個字的數據包長度。unpack函式擁有2個輸入參數,分別為待接收數據包頭地址和待接收數據包長度,前者為待接收數據的地址指針,後者可取值範圍為1~255,與pack函式輸入參數中的待傳送數據包長度一致。值得注意的是,抽象出的任務函式需要調用底層配置指令,因此,需要重新設計支持配置指令的編譯器或者對現有編譯流程進行改進,以保證高層封裝函式的正常編譯執行。

相關詞條

熱門詞條

聯絡我們