異步時(shí)鐘控制的寄存器堆讀隔離方法
【專(zhuān)利摘要】本發(fā)明屬于微處理器【技術(shù)領(lǐng)域】,具體為一種異步時(shí)鐘控制的寄存器堆讀隔離方法。本發(fā)明基于一個(gè)包含基本流水線(xiàn)結(jié)構(gòu)的微處理器構(gòu)架,在訪(fǎng)問(wèn)寄存器堆流水級(jí)時(shí),檢測(cè)是否需要對(duì)寄存器堆進(jìn)行讀操作,如果發(fā)現(xiàn)對(duì)寄存器堆的讀操作是無(wú)用的(無(wú)用的讀操作包括兩種情況:指令本身不需要訪(fǎng)問(wèn)寄存器堆,以及所需要的操作數(shù)可以通過(guò)反饋網(wǎng)絡(luò)獲?。?,則通過(guò)一個(gè)局部的異步時(shí)鐘網(wǎng)絡(luò)來(lái)保持住給寄存器堆的讀地址,使之不變,由于寄存器堆的讀操作是異步讀出,則若地址保持不變,相應(yīng)的邏輯就不會(huì)翻轉(zhuǎn),從而降低了無(wú)用的讀寄存器堆功耗。
【專(zhuān)利說(shuō)明】異步時(shí)鐘控制的寄存器堆讀隔離方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于微處理器【技術(shù)領(lǐng)域】,具體涉及一種異步時(shí)鐘控制的寄存器堆讀隔離方法。
【背景技術(shù)】
[0002]寄存器堆是處理器中第一級(jí)存儲(chǔ)單元,是現(xiàn)代微處理器的核心部件,由于對(duì)寄存器堆的訪(fǎng)問(wèn)呈現(xiàn)出高速、高頻的特點(diǎn),是的寄存器堆的功耗和功耗密度都相當(dāng)大,以至于成為了微處理器的能量消耗主要部件和功耗熱點(diǎn)。高能耗對(duì)微處理器特別是嵌入式應(yīng)用領(lǐng)域的微處理器提出了挑戰(zhàn),而功耗熱點(diǎn)更會(huì)導(dǎo)致電路穩(wěn)定性和壽命下降。因此,研究降低寄存器堆功耗有十分重要的現(xiàn)實(shí)意義。
[0003]圖1展示了傳統(tǒng)的6級(jí)流水線(xiàn)的微處理器結(jié)構(gòu)圖。包括了取指令級(jí)、譯碼級(jí)、執(zhí)行級(jí)、訪(fǎng)存儲(chǔ)器級(jí)、對(duì)齊級(jí)和寫(xiě)回級(jí)。
[0004]在傳統(tǒng)的微處理器架構(gòu)中,對(duì)于寄存器堆的讀沒(méi)有專(zhuān)門(mén)的電路進(jìn)行隔離,就算實(shí)際指令執(zhí)行過(guò)程中發(fā)現(xiàn)了無(wú)用的讀操作,也不會(huì)屏蔽對(duì)寄存器堆的讀操作,從而導(dǎo)致了不必要的能量消耗,針對(duì)這個(gè)缺點(diǎn),需要對(duì)寄存器堆的讀進(jìn)行檢測(cè),一旦發(fā)現(xiàn)無(wú)用的讀操作則對(duì)寄存器堆的讀進(jìn)行屏蔽,降低功耗。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種能夠降低寄存器堆讀功耗的異步時(shí)鐘控制的寄存器堆讀隔離方法。
[0006]本發(fā)明通過(guò)檢測(cè)無(wú)用的寄存器堆讀操作,然后利用局部的異步時(shí)鐘網(wǎng)絡(luò)進(jìn)行寄存器堆讀地址的維持,減少邏輯的翻轉(zhuǎn),從而降低寄存器堆的讀功耗,同時(shí)也降低寄存器堆的功耗密度,提高電路的穩(wěn)定性和壽命。
[0007]本發(fā)明提供的異步時(shí)鐘控制的寄存器堆讀隔離方法,是基于一個(gè)包含基本流水線(xiàn)結(jié)構(gòu)的微處理器構(gòu)架,該微處理器包括取指令級(jí)、譯碼級(jí)、執(zhí)行級(jí)、訪(fǎng)存儲(chǔ)器級(jí)、對(duì)齊級(jí)和寫(xiě)回級(jí)(如圖1所示);本發(fā)明方法的基本思路是:在訪(fǎng)問(wèn)寄存器堆流水級(jí)時(shí),檢測(cè)是否需要對(duì)寄存器堆進(jìn)行讀操作,如果發(fā)現(xiàn)對(duì)寄存器堆的讀操作是無(wú)用的(無(wú)用的讀操作包括兩種情況:指令本身不需要訪(fǎng)問(wèn)寄存器堆,以及所需要的操作數(shù)可以通過(guò)反饋網(wǎng)絡(luò)獲取),則通過(guò)一個(gè)局部的異步時(shí)鐘網(wǎng)絡(luò)來(lái)保持住給寄存器堆的讀地址,使之不變,由于寄存器堆的讀操作是異步讀出(換言之,給地址即可讀出數(shù)據(jù)),則若地址保持不變,相應(yīng)的邏輯就不會(huì)翻轉(zhuǎn),從而降低了無(wú)用的讀寄存器堆功耗。
[0008]為此,在上述微處理器架構(gòu)的基礎(chǔ)上,在譯碼級(jí)增加一個(gè)判斷邏輯,如在圖2中,指令中的兩個(gè)源操作數(shù)為Rs和Rt。以Rs為示例,“需要讀取Rs”這個(gè)邏輯給出O (當(dāng)需要讀取Rs),否則這一邏輯給出I (當(dāng)不需要讀取Rs),“Rs反饋得到”這個(gè)邏輯給出I (當(dāng)可以反饋得到Rs),否則這一邏輯給出0(當(dāng)不可以反饋得到Rs),然后再將這兩個(gè)邏輯的輸出結(jié)果進(jìn)行一個(gè)“或”操作;Rt與Rs類(lèi)似;以此做為譯碼級(jí)增加的是否需要訪(fǎng)問(wèn)寄存器堆判斷邏輯;同時(shí)還需要在譯碼級(jí)增加一個(gè)控制寄存器堆地址輸入端口的控制邏輯和局部的異步時(shí)鐘網(wǎng)絡(luò),如在圖2中,所述的控制邏輯由一個(gè)2選I的數(shù)據(jù)選擇器和一個(gè)觸發(fā)器DFF構(gòu)成,選擇器的“ I ”輸入端選擇DFF的輸出端Q的值,而“O”輸入端選擇“Rs/Rt地址值”,選擇器的控制端信號(hào)來(lái)自上述的“或”邏輯門(mén)的輸出端,選擇器的選擇結(jié)果輸入到DFF的數(shù)據(jù)輸入端D ;局部時(shí)鐘加在DFF的時(shí)鐘輸入端(DFF框中左下角三角形所示的輸入端),如圖2下方的波形所示,局部時(shí)鐘與系統(tǒng)時(shí)鐘有一個(gè)與設(shè)計(jì)時(shí)序相適應(yīng)的固定相差延遲。于是,所述的異步時(shí)鐘控制的寄存器堆讀隔離方法,具體步驟為:
由譯碼級(jí)的判斷邏輯,判斷指令中的兩個(gè)源操作數(shù)(如Rs和Rt)是否需要從寄存器堆中獲取,判斷的依據(jù)為:一種情況是指令執(zhí)行本身不需要用到兩個(gè)源操作數(shù)(如Rs或者Rt),另一種情況是所需要的操作數(shù)能夠從執(zhí)行級(jí)、訪(fǎng)存級(jí)或者對(duì)齊級(jí)反饋,一旦這兩種情況中的任何一種被確認(rèn),則對(duì)兩個(gè)源操作數(shù)(如Rs和Rt)的寄存器堆讀操作進(jìn)行屏蔽;
所述屏蔽的具體措施是,通過(guò)局部的異步時(shí)鐘網(wǎng)絡(luò)將譯碼級(jí)割裂成兩段,給寄存器堆的地址輸入信號(hào)由局部的異步時(shí)鐘控制,在需要屏蔽寄存器堆時(shí),將相應(yīng)的地址信號(hào)進(jìn)行隔離。
[0009]本發(fā)明中,所述隔離的具體方法是,基于選擇器-觸發(fā)器的保持電路,當(dāng)需要隔離時(shí),給寄存器堆的地址選擇其前一個(gè)時(shí)鐘周期的值,否則選擇由譯碼電路給出的地址值。
[0010]本發(fā)明中,局部異步時(shí)鐘網(wǎng)絡(luò)的生成采用全定制的方法,利用反相器鏈?zhǔn)止ご罱ㄟ@個(gè)局部的時(shí)鐘網(wǎng)絡(luò),生成的本地時(shí)鐘與全局時(shí)鐘具有與設(shè)計(jì)時(shí)序要求相適應(yīng)的固定相位偏差。
[0011]本發(fā)明方法可以進(jìn)一步歸納為:
(1)由譯碼級(jí)的判斷邏輯,判斷是否需要對(duì)兩個(gè)源操作數(shù)進(jìn)行讀取,不需要讀取則認(rèn)為對(duì)寄存器堆進(jìn)行屏蔽,屏蔽的條件為:(i),指令本身不需要該操作數(shù),(ii),所需要的操作數(shù)可以從后面的執(zhí)行級(jí)、訪(fǎng)存級(jí)或?qū)R級(jí)反饋得到;
(2)如果確認(rèn)上述的隔離條件成立,則采用基于選擇器-觸發(fā)器的保持電路,當(dāng)需要隔離時(shí),該保持電路將給寄存器堆的地址值保持不變,否則選擇由譯碼電路給出的地址值;
(3 )觸發(fā)(2 )中所述的保持電路的時(shí)鐘由本地異步時(shí)鐘網(wǎng)絡(luò)產(chǎn)生,本地異步時(shí)鐘網(wǎng)絡(luò)由手工定制得到,采用反相器鏈形式搭建,生成的時(shí)鐘網(wǎng)絡(luò)與全局時(shí)鐘網(wǎng)絡(luò)具有與設(shè)計(jì)要求相適應(yīng)的固定相位偏差。
[0012]本發(fā)明方法能夠在譯碼級(jí)檢測(cè)到不必要的寄存器堆讀操作。
[0013]與現(xiàn)有的架構(gòu)相比,本發(fā)明提供的異步時(shí)鐘控制的寄存器堆讀隔離方法,能夠有效地檢測(cè)并隔離無(wú)用的寄存器堆讀操作,從而降低了寄存器堆的功耗和功耗密度,在硬件上開(kāi)銷(xiāo)是少量的寄存器(用以搭建選擇器-觸發(fā)器的隔離電路)和簡(jiǎn)單的邏輯,實(shí)驗(yàn)表明這些開(kāi)銷(xiāo)均可以忽略不計(jì)。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0014]圖1是傳統(tǒng)的6級(jí)流水線(xiàn)微處理器架構(gòu)。
[0015]圖2是異步時(shí)鐘控制的寄存器堆讀隔離方法的總體架構(gòu)。
[0016]圖3是無(wú)用的寄存器堆讀操作的具體判斷邏輯。
[0017]圖4是確定局部時(shí)鐘網(wǎng)絡(luò)與系統(tǒng)時(shí)鐘偏差的參數(shù)t_delay的確定。[0018]圖5是局部異步時(shí)鐘網(wǎng)絡(luò)的電路圖和仿真結(jié)果。
【具體實(shí)施方式】
[0019]下面通過(guò)實(shí)例進(jìn)一步描述本發(fā)明提供的異步時(shí)鐘控制的寄存器堆讀隔離方法。
[0020]圖2展示了異步時(shí)鐘控制的寄存器堆讀隔離方法的總體架構(gòu)。與圖1傳統(tǒng)的結(jié)構(gòu)相比,該結(jié)構(gòu)增加了無(wú)用讀的判斷邏輯,從而決定是否對(duì)寄存器堆進(jìn)行讀操作,增加了一個(gè)局部的異步時(shí)鐘網(wǎng)絡(luò),進(jìn)行控制對(duì)寄存器堆的地址輸入信號(hào),如果斷言某一個(gè)讀操作無(wú)效,則通過(guò)選擇器-觸發(fā)器的電路將相應(yīng)的寄存器堆地址輸入端口的地址保持住,從而無(wú)用的邏輯翻轉(zhuǎn)被屏蔽,避免了無(wú)用的功耗開(kāi)銷(xiāo)。
[0021]圖3展示了對(duì)無(wú)用的寄存器堆讀邏輯的判斷。實(shí)際的邏輯設(shè)計(jì)中,主要要對(duì)兩種情況進(jìn)行區(qū)分,其一是指令執(zhí)行本身不需要讀取寄存器堆,在本發(fā)明中,我們對(duì)R型指令和I型指令進(jìn)行區(qū)分,對(duì)于R型指令,其兩個(gè)操作數(shù)均要從寄存器堆中獲取,而對(duì)于I型指令,由于其中一個(gè)操作數(shù)來(lái)自立即數(shù),只有一個(gè)操作數(shù)Rs需要訪(fǎng)問(wèn)寄存器堆。第二種情況是,所需要的操作數(shù)可以從后面的反饋網(wǎng)絡(luò)中獲取,在圖3中,給出了一個(gè)利用反饋網(wǎng)絡(luò)獲取操作數(shù)的例子,簡(jiǎn)而言之,只要當(dāng)前指令在譯碼級(jí),而其前導(dǎo)指令還在執(zhí)行級(jí)、訪(fǎng)存級(jí)或者對(duì)齊級(jí),并且前導(dǎo)指令的目的操作寄存器作為當(dāng)前譯碼級(jí)指令的源操作寄存器,那么當(dāng)前指令的源操作寄存器就被認(rèn)為可以從前饋網(wǎng)絡(luò)中獲取(圖3中,$1分別在執(zhí)行級(jí)、訪(fǎng)存級(jí)和對(duì)齊級(jí)被反饋到其后續(xù)指令的譯碼級(jí))。這兩種情況只要任何一種產(chǎn)生就可以屏蔽掉對(duì)寄存器堆的讀操作。
[0022]圖4展示了確定局部的異步時(shí)鐘網(wǎng)絡(luò)與全局系統(tǒng)時(shí)鐘網(wǎng)絡(luò)的時(shí)間偏差的參數(shù)七_(dá)delay的計(jì)算。如圖4所示,t_delay包括了流水線(xiàn)級(jí)間寄存器的時(shí)鐘到數(shù)據(jù)的延遲時(shí)間clk_Q,判斷是否需要讀寄存器堆的邏輯時(shí)間logic,寄存器堆地址控制寄存器的建立時(shí)間setup,另外一般為了保證時(shí)序的正確,需要留一定的時(shí)間余量margin。因此,這里的t_delay = clk_Q + logic + setup + margin ;每個(gè)參數(shù)的確定要根據(jù)實(shí)際的工藝特征以及要求實(shí)現(xiàn)的系統(tǒng)性能指標(biāo)來(lái)綜合確定。
[0023]圖5展示了在圖4基礎(chǔ)上進(jìn)行設(shè)計(jì)的局部時(shí)鐘網(wǎng)絡(luò),可以采用小規(guī)模的全定制電路設(shè)計(jì)策略,或者直接在布局不線(xiàn)后的網(wǎng)表上進(jìn)行手工的添加buffer (由反相器拼湊)來(lái)達(dá)到與系統(tǒng)時(shí)鐘偏差為t_delay的目標(biāo),具體設(shè)計(jì)需要根據(jù)實(shí)際的參數(shù)進(jìn)行仿真確定。本發(fā)明中所確定的t_delay為300ps,相應(yīng)的實(shí)驗(yàn)仿真結(jié)果也在圖5中展示了。
【權(quán)利要求】
1.一種異步時(shí)鐘控制的寄存器堆讀隔離方法,基于一個(gè)包含基本流水線(xiàn)結(jié)構(gòu)的微處理器構(gòu)架,該微處理器包括取指令級(jí)、譯碼級(jí)、執(zhí)行級(jí)、訪(fǎng)存儲(chǔ)器級(jí)、對(duì)齊級(jí)和寫(xiě)回級(jí),其特征在于:在上述微處理器架構(gòu)的基礎(chǔ)上,在譯碼級(jí)增加一個(gè)判斷邏輯,用于是否需要訪(fǎng)問(wèn)寄存器堆的邏輯判斷;同時(shí)還提供一個(gè)在譯碼級(jí)控制寄存器堆地址輸入端口的控制邏輯和局部的異步時(shí)鐘網(wǎng)絡(luò),于是,所述方法的具體步驟為: 由譯碼級(jí)的判斷邏輯,判斷指令中的兩個(gè)源操作數(shù)是否需要從寄存器堆中獲取,判斷的依據(jù)為:一種情況是指令執(zhí)行本身不需要用到兩個(gè)源操作數(shù),另一種情況是所需要的源操作數(shù)能夠從執(zhí)行級(jí)、訪(fǎng)存級(jí)或者對(duì)齊級(jí)反饋,一旦這兩種情況中的任何一種被確認(rèn),則對(duì)兩個(gè)源操作數(shù)的寄存器堆讀操作進(jìn)行屏蔽: 屏蔽的具體措施是,通過(guò)局部的異步時(shí)鐘網(wǎng)絡(luò)將譯碼級(jí)割裂成兩段,給寄存器堆的地址輸入信號(hào)由局部的異步時(shí)鐘控制,在需要屏蔽寄存器堆的讀操作時(shí),將相應(yīng)的地址信號(hào)進(jìn)行隔離。
2.根據(jù)權(quán)利要求1所述的異步時(shí)鐘控制的寄存器堆讀隔離方法,其特征在于所述將相應(yīng)的地址信號(hào)進(jìn)行隔離的具體措施是:采用基于選擇器-觸發(fā)器的保持電路,如果上述隔離條件成立,則該保持電路給寄存器堆的地址保持不變,從而寄存器堆不會(huì)被讀訪(fǎng)問(wèn)。
【文檔編號(hào)】G06F12/14GK103440210SQ201310365831
【公開(kāi)日】2013年12月11日 申請(qǐng)日期:2013年8月21日 優(yōu)先權(quán)日:2013年8月21日
【發(fā)明者】虞志益, 俞政, 于學(xué)球, 張家杰, 曾曉洋 申請(qǐng)人:復(fù)旦大學(xué)