版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系我們

[科普中國(guó)]-文件地址寄存器

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識(shí)科普陣地
收藏

文件地址寄存器,是計(jì)算機(jī)系統(tǒng)中信息存儲(chǔ)的基本單元,是關(guān)于某個(gè)主題的信息的集合,以此用來(lái)保存當(dāng)前CPU所訪問(wèn)的內(nèi)存單元的地址。

40nm工藝多端口寄存器文件設(shè)計(jì)介紹了40mn工藝下一款16x36b7讀6寫(xiě)的寄存器文件全定制設(shè)計(jì),采用讀寫(xiě)陣列分離策略,支持32位和36位兩種寫(xiě)入操作。為了解決多個(gè)讀端口讀同一地址時(shí)讀出過(guò)慢的問(wèn)題,提出了一種基于與或非邏輯搭建的16選1讀出電路。讀寫(xiě)陣列分離的應(yīng)用,壓縮了讀出位線的線長(zhǎng),提高了讀出速度。版圖后的模擬結(jié)果表明,在TypicalCorner工作條件下,寄存器文件相對(duì)于讀地址變化的讀出延時(shí)為217ps,寫(xiě)后讀延時(shí)為440ps,平均功耗為11.18mW。1

整體電 路設(shè)計(jì)寄存器文件尋寬度為4位,位寬為36位,支持32位寫(xiě)入或36位寫(xiě)入,低32位寫(xiě)數(shù)據(jù)由低位寫(xiě)使能信號(hào)控制寫(xiě)入,高4位數(shù)據(jù)由低位寫(xiě)使能和高位寫(xiě)使能共同控制寫(xiě)入。32位寫(xiě)入時(shí),讀相應(yīng)的存儲(chǔ)單元時(shí)低32位為新寫(xiě)入的值,高4位為原存儲(chǔ)單元中的值;36位寫(xiě)入時(shí),讀相應(yīng)的存儲(chǔ)單元時(shí)36位數(shù)據(jù)為新寫(xiě)入的值。

數(shù)據(jù)流向中,讀地址經(jīng)4-16譯碼,譯出16條讀字線,控制數(shù)據(jù)讀出;寫(xiě)地址在寫(xiě)使能、寫(xiě)譯碼時(shí)鐘控制下經(jīng)4-16譯碼譯出16條寫(xiě)字線,控制低32位數(shù)據(jù)寫(xiě)入,該寫(xiě)字線和高4位寫(xiě)使能相與,產(chǎn)生高4位寫(xiě)字線,控制高4位數(shù)據(jù)寫(xiě)入;寫(xiě)數(shù)據(jù)在寫(xiě)數(shù)據(jù)門(mén)控時(shí)鐘控制下鎖存,在寫(xiě)字線控制下寫(xiě)入存儲(chǔ)單元。1

讀存儲(chǔ)陣列設(shè)計(jì)為了加快寄存器文件的讀出速度,提出了一種基于與或非邏輯搭建的16選1讀出電路;同時(shí)把讀使能從讀譯碼器中移除,從而把讀使能從讀關(guān)鍵路徑上移走;陣列讀寫(xiě)分離后,讀出位線線長(zhǎng)壓縮了約一半的高度,減小了讀出位線負(fù)載,從而提高了讀出速度。

基于與或非邏輯搭建的16選1電路,相較于基于傳輸門(mén)搭建的16選1電路,該設(shè)計(jì)的好處是支持多端口讀同一地址,且不影響讀出延時(shí)?;谂c或非門(mén)邏輯搭建的16選1電路中,主要由2個(gè)8選1電路、一級(jí)兩輸人或非門(mén)再加一級(jí)反相器組成。 其中8選1電路由4個(gè)AOI電路和一級(jí)四輸入與非門(mén)組成。 選擇字線(rwl)有且只有一條有效,分別和reg相與。 只有reg信號(hào)和rwl同時(shí)為1,輸出Q才為1; 否則輸出Q為0。

版圖設(shè)計(jì)寄存器文件版圖面積為296μmx85μm。 寄存器文件中,版圖結(jié)構(gòu)按功能進(jìn)行劃分,主要包括以下幾個(gè)部分:中間部分從上至下依次為讀地址輸人反相器、寫(xiě)地址寫(xiě)使能鎖存器、讀寫(xiě)地址譯碼器;左右兩側(cè)從上至下依次是電源地解耦電容填充單元、寫(xiě)數(shù)據(jù)鎖存器、讀寫(xiě)陣列。讀地址在輸入處增加一級(jí)反相器,減小了其輸入線負(fù)載;讀寫(xiě)分離策略的應(yīng)用,使讀出位線線長(zhǎng)由57μm減小到26μm,降低了讀出位線負(fù)載;讀出最后一級(jí)反相器置于讀寫(xiě)陣列之上,使各讀出端口輸出驅(qū)動(dòng)能力相當(dāng)。1

寫(xiě)時(shí)序第0位(低32位代表)寫(xiě)數(shù)據(jù)寫(xiě)時(shí)序相位關(guān)系、第35位( 高4位代 表)寫(xiě)數(shù)據(jù)寫(xiě)時(shí)序相位關(guān)系中,第0位和笫35位相比,寫(xiě)數(shù)據(jù)從寫(xiě)數(shù)據(jù)鎖存時(shí)鐘clk_wdata開(kāi)啟到寫(xiě)數(shù)據(jù)鎖存分別約為163Ps、169ps;從寫(xiě)地址鎖存時(shí)鐘clk_ we開(kāi)啟到寫(xiě)字線開(kāi)啟分別約為157.6Ps、198Ps。

寫(xiě)時(shí)序主要需要滿足以下兩個(gè)要求:

(1)寫(xiě)譯碼時(shí)鐘要晚于寫(xiě)鎖存后地址開(kāi)啟,否則會(huì)先對(duì)舊地址譯碼,后對(duì)新地址譯碼,可能產(chǎn)生寫(xiě)字線毛刺。 由第0位(低32位代表) 寫(xiě)數(shù)據(jù)寫(xiě)時(shí)序相位關(guān)系、第35位(高4位代表)寫(xiě)數(shù)據(jù)寫(xiě)時(shí)序相位關(guān)系可知寫(xiě)地址鎖存時(shí)鐘clk_we滿足晚于寫(xiě)鎖存后地址w0_addr_latChed開(kāi)啟,且寫(xiě)字線也沒(méi)有毛刺,滿足正確的寫(xiě)時(shí)序要求;

(2) 寫(xiě)字線要晚于寫(xiě)鎖存后數(shù)據(jù)開(kāi)啟,否則會(huì)先寫(xiě)入舊值后寫(xiě)入新值,造成功耗的浪費(fèi)。由第0位(低32位代表)寫(xiě)數(shù)據(jù)寫(xiě)時(shí)序相位關(guān)系、第35位(高4位代表)寫(xiě)數(shù)據(jù)寫(xiě)時(shí)序相位關(guān)系可知寫(xiě)字線w0_wl_right的開(kāi)啟時(shí)間晚于笫0位寫(xiě)鎖存后數(shù)據(jù)w0_data_latched,寫(xiě)字線w0_wl_left的開(kāi)啟時(shí)間晚于第35位寫(xiě)鎖存后數(shù)據(jù)w0_data_latched滿足正確的寫(xiě)時(shí)序要求。

讀時(shí)序讀地址到數(shù)據(jù)讀出時(shí)序版圖模擬波形中,從讀地址變化到讀字線r1_wl_left有效約為129.1pS,而從讀字線r1_wl_left有效到讀數(shù)據(jù)r1_rf_data讀出約為197.8Ps。

低32位和高4位寫(xiě)后讀延時(shí)版圖模擬波形中:對(duì)于低32位,clk上升沿到來(lái)時(shí),到低32位寫(xiě)字線w2_wl_right產(chǎn)生約需324Ps,寫(xiě)字線有效到寫(xiě)數(shù)據(jù)寫(xiě)入存儲(chǔ)單元reg4中,約需58.4Ps,從reg4有效到低32位讀出數(shù)據(jù)r1 —rf—data讀出延時(shí)約為269.3ps,故低32位從clk上升沿到r1_rf_data讀出延時(shí)約為651.7ps。

對(duì)于高4位,clk上升沿到來(lái)時(shí),到高4位寫(xiě)字線w2_wl_left產(chǎn)生約需375.9PS,寫(xiě)字線有效到寫(xiě)數(shù)據(jù)寫(xiě)入存儲(chǔ)單元reg4中約需56.3ps,從reg4有效到高4位讀出數(shù)據(jù)r1_rf_data讀出延時(shí)約為271.6ps,故高4位從clk上升沿到r1_rf_data讀出延時(shí)約為703.8ps。1

適用于多核處理器的擴(kuò)展寄存器文件設(shè)計(jì)針對(duì)處理器中可用寄存器數(shù)量有限的問(wèn)題,提出一種適用于多核處理器的擴(kuò)展寄存器文件設(shè)計(jì)方案。采用多組結(jié)構(gòu)進(jìn)行硬件設(shè)計(jì),將通信端口映射在擴(kuò)展寄存器地址空間上,以實(shí)現(xiàn)寄存器尋址核間通信機(jī)制,引入兼具底層指令與高層封裝的混合軟件配置方案,改進(jìn)軟件編譯流程。評(píng)估結(jié)果表明,該方案將可用寄存器文件的數(shù)量增加一倍,核間通信指令數(shù)目減少50%,系統(tǒng)吞吐率得到優(yōu)化。2

多組結(jié)構(gòu)采取多組結(jié)構(gòu)的寄存器文件具有良好的低功耗特性。主要原因是,每組寄存器數(shù)目越小,對(duì)應(yīng)的地址位線翻轉(zhuǎn)電容也越小,寄存器訪問(wèn)的動(dòng)態(tài)功耗也越低。其次,在RISC體系結(jié)構(gòu)下,不同寄存器的訪問(wèn)頻率并不相同,32個(gè)寄存器中4個(gè)~10個(gè)寄存器占據(jù)了總訪問(wèn)次數(shù)80%~90%。因此,將這些被頻繁訪問(wèn)的寄存器單獨(dú)成組,可有效降低整體寄存器的地址譯碼開(kāi)銷(xiāo),從而降低功耗。

設(shè)計(jì)中采取了8個(gè)字一組的多組結(jié)構(gòu)。根據(jù)應(yīng)用需求,寄存器組的個(gè)數(shù)可從4組擴(kuò)展到8組,即32個(gè)字?jǐn)U展到64個(gè)字。其中,采取8個(gè)字一組的原因有:首先,RISC架構(gòu)下允許32個(gè)寄存器地址空間,可供選擇的有4個(gè)字一組、8個(gè)字一組與16個(gè)字一組,4個(gè)字一組的面積開(kāi)銷(xiāo)顯著增加,16個(gè)字一組的翻轉(zhuǎn)電容較大,因此,功耗也較大。8個(gè)字一組是在面積與功耗之間的折中方案。其次,活躍寄存器的個(gè)數(shù)為4個(gè)~10個(gè),采取8個(gè)字一組方式與實(shí)際的應(yīng)用更為匹配。擴(kuò)展寄存器文件數(shù)據(jù)讀通道和擴(kuò)展寄存器文件數(shù)據(jù)寫(xiě)通道中,分別顯示了8組擴(kuò)展方案情況下24號(hào)寄存器與25號(hào)寄存器分別與FIFO讀口、寫(xiě)口復(fù)用;

由擴(kuò)展寄存器文件數(shù)據(jù)讀通道和擴(kuò)展寄存器文件數(shù)據(jù)寫(xiě)通道可知,寄存器配置位保證了每次只有4個(gè)寄存器組處于允許訪問(wèn)狀態(tài)。如$0~$7寄存器組和$32~$39寄存器組每次只有一組處于允許訪問(wèn)狀態(tài),由相應(yīng)的寄存器配置位進(jìn)行配置。類似的,其他3對(duì)寄存器組也由相應(yīng)的配置位控制。2

核間通信機(jī)制擴(kuò)展寄存器文件所應(yīng)用的多核處理器平臺(tái)采用2維Mesh拓?fù)浣Y(jié)構(gòu)的片上網(wǎng)絡(luò),共有4×4,共計(jì)16個(gè)處理器節(jié)點(diǎn)。數(shù)據(jù)經(jīng)由異步時(shí)鐘FIFO由左上的處理器節(jié)點(diǎn)流入,同樣由異步時(shí)鐘FIFO從右下的節(jié)點(diǎn)流出。每個(gè)處理器節(jié)點(diǎn)包括RISC處理器核、指令存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、輸入與輸出FIFO、路由以及提出的擴(kuò)展寄存器文件。其中,輸入與輸出FIFO是該處理器節(jié)點(diǎn)與外部進(jìn)行通信的窗口,數(shù)據(jù)通過(guò)FIFO與路由進(jìn)行交互,各個(gè)處理器節(jié)點(diǎn)的路由交互連接

成片上網(wǎng)絡(luò),采取的路由算法為X-Y防死鎖路由算法。一般地,處理器核訪問(wèn)FIFO的方法是將其端口映射到自身的數(shù)據(jù)存儲(chǔ)器地址空間上,通過(guò)load與store指令進(jìn)行訪問(wèn)。流水線中l(wèi)oad和store指令的執(zhí)行需要2個(gè)~3個(gè)時(shí)鐘周期,因此,這種方法的時(shí)鐘延遲較大。在擴(kuò)展寄存器文件基礎(chǔ)上提出了一種更為簡(jiǎn)便的方法,將FIFO端口映射到擴(kuò)展寄存器文件地址空間上,從而實(shí)現(xiàn)對(duì)FIFO的快速訪問(wèn),并顯著減少核間通信所需指令數(shù)。此外,實(shí)際應(yīng)用中24號(hào)和25號(hào)寄存器訪問(wèn)次數(shù)較少,因此,將其分別作為FIFO讀端口與FIFO寫(xiě)端口的映射地址,由1bit配置位來(lái)控制。2

底層配置指令擴(kuò)展寄存器文件的配置依賴于5bit 配置寄存器。其中,低4bit用于對(duì)4對(duì)寄存器組進(jìn)行切換配置,最高1bit用于對(duì)FIFO端口映射的寄存器地址空間進(jìn)行配置。底層配置指令方法,為通過(guò)添加專門(mén)的指令對(duì)該寄存器文件進(jìn)行配置。配置指令的格式為regconfig mode[4:0],其中,mode[4:0]為配置信息,將被寫(xiě)入配置寄存器RegFile Config[4:0]中。配置信息的低4bit位標(biāo)明了允許訪問(wèn)的寄存器組,而最高比特位給出了FIFO讀、寫(xiě)端口的配置信息。通過(guò)該指令可以顯式地配置4對(duì)寄存器組以及FIFO讀口與FIFO寫(xiě)口。底層配置指令方法的優(yōu)點(diǎn)是直觀性與便捷性,缺點(diǎn)是使用匯編指令配置不利于高層軟件開(kāi)發(fā)人員調(diào)用,底層特性限制了該配置方法使用范圍。2

高層封裝函數(shù)由于底層配置指令限制在匯編語(yǔ)言層次,不利于高層軟件開(kāi)發(fā)人員調(diào)用,因此,本文在其基礎(chǔ)之上開(kāi)發(fā)了基于函數(shù)封裝的高層次調(diào)配置方案。針對(duì)寄存器組配置與核間通信配置問(wèn)題,抽象出switch、pack和unpack3個(gè)任務(wù)函數(shù),高層軟件開(kāi)發(fā)人員可以通過(guò)調(diào)用switch函數(shù)進(jìn)行擴(kuò)展寄存器組切換,通過(guò)調(diào)用pack函數(shù)進(jìn)行核間通信數(shù)據(jù)發(fā)送,通過(guò)調(diào)用unpack函數(shù)進(jìn)行核間通信數(shù)據(jù)接收。其中,switch函數(shù)擁有5個(gè)輸入?yún)?shù)。前4個(gè)參數(shù)用以配置寄存器組,其可取值為0或者1。0為選中第1對(duì)~第4對(duì)中的原始寄存器組;1為選中其中的擴(kuò)展寄存器組。第5個(gè)參數(shù)用以配置FIFO讀、寫(xiě)端口,可取值為0或者1.0為取消;1為建立FIFO讀寫(xiě)端口在寄存器地址空間映射關(guān)系。pack函數(shù)擁有4個(gè)輸入?yún)?shù),分別為發(fā)送數(shù)據(jù)的源處理器節(jié)點(diǎn)編號(hào)、接受數(shù)據(jù)的目的處理器節(jié)點(diǎn)編號(hào)、待發(fā)送數(shù)據(jù)包頭地址、待發(fā)送數(shù)據(jù)包長(zhǎng)度。其中,處理器節(jié)點(diǎn)編號(hào)的可取值范圍為1~16,對(duì)應(yīng)多核處理器的16個(gè)處理器節(jié)點(diǎn),數(shù)據(jù)包頭地址為待發(fā)送數(shù)據(jù)的地址指針,數(shù)據(jù)包長(zhǎng)度可取值范圍為1~255,最大支持255個(gè)字的數(shù)據(jù)包長(zhǎng)度。unpack函數(shù)擁有2個(gè)輸入?yún)?shù),分別為待接收數(shù)據(jù)包頭地址和待接收數(shù)據(jù)包長(zhǎng)度,前者為待接收數(shù)據(jù)的地址指針,后者可取值范圍為1~255,與pack函數(shù)輸入?yún)?shù)中的待發(fā)送數(shù)據(jù)包長(zhǎng)度一致。值得注意的是,抽象出的任務(wù)函數(shù)需要調(diào)用底層配置指令,因此,需要重新設(shè)計(jì)支持配置指令的編譯器或者對(duì)現(xiàn)有編譯流程進(jìn)行改進(jìn),以保證高層封裝函數(shù)的正常編譯執(zhí)行。2

本詞條內(nèi)容貢獻(xiàn)者為:

王沛 - 副教授、副研究員 - 中國(guó)科學(xué)院工程熱物理研究所