亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種可重構(gòu)寄存器堆及其設(shè)計(jì)方法

文檔序號:6583599閱讀:466來源:國知局
專利名稱:一種可重構(gòu)寄存器堆及其設(shè)計(jì)方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)微處理器結(jié)構(gòu),并且更具體地涉及一種具有很好的兼容性的計(jì)算機(jī)微處理器結(jié)構(gòu)和一種具有很好的兼容性的微處理器可重構(gòu)寄存器堆。
背景技術(shù)
微處理器在其50多年地歷史中取得了迅猛的發(fā)展,市場上涌現(xiàn)出各種各樣不同體系結(jié)構(gòu)的微處理器,應(yīng)用領(lǐng)域遍及日常生活、辦公自動化、金融財(cái)會、國防建設(shè)、航空航天等各個(gè)方面,微處理器的發(fā)展水平已經(jīng)不僅僅關(guān)系到科技領(lǐng)域本身,而且關(guān)系到國計(jì)民生。由于歷史的原因和科技發(fā)展速度不同,目前在通用微處理器領(lǐng)域,以Intel、IBM、HP、SUN等公司為首的芯片產(chǎn)品在市場上占據(jù)了壟斷性的地位,絕大部分的用于通用計(jì)算機(jī)的軟件產(chǎn)品都是基于上述體系結(jié)構(gòu)而開發(fā)的。這為后來的體系結(jié)構(gòu)設(shè)計(jì)者帶來巨大的壓力。雖然從長遠(yuǎn)來看,兼容性不是必須的,但如果新的體系結(jié)構(gòu)不具備兼容性特點(diǎn),它將無法繼承已有的軟件財(cái)富,尤其是當(dāng)前市場上已經(jīng)為人們所習(xí)慣的最常用的軟件產(chǎn)品,所有的軟件都要重新設(shè)計(jì),這樣必然削弱其市場競爭力。因此,解決兼容性問題成為設(shè)計(jì)新的體系結(jié)構(gòu)面臨的首要問題之一。
由于微處理器在所有集成電路中最為復(fù)雜,設(shè)計(jì)成本最高,往往需要多年的研究與設(shè)計(jì),因此絕大部分的微處理器制造商拒絕透露他們產(chǎn)品的任何內(nèi)部工作以防止其它公司抄襲其芯片設(shè)計(jì)。這樣,對于后來的芯片設(shè)計(jì)者而言,兼容性問題的解決將更加困難。
目前芯片設(shè)計(jì)中解決兼容性問題的方案主要有如下幾類
以Itanium為代表的通用處理器由于是Intel公司本身開發(fā)的新產(chǎn)品,因此在其初期采用的策略是利用不同的硬件分別執(zhí)行IA-32(X86系列處理器采用的體系結(jié)構(gòu))和IA-64(Itanium處理器采用的體系結(jié)構(gòu))的指令,以實(shí)現(xiàn)指令級兼容;
以AMD為代表的通用微處理器是純粹的兼容機(jī),即本身不設(shè)計(jì)新的體系結(jié)構(gòu),而是直接根據(jù)X86芯片的說明書和指令集,從最底層開始設(shè)計(jì),最終的芯片可以模仿前者的功能,從而保證指令級的兼容。這樣,大部分的設(shè)計(jì)和開發(fā)工作可以通過逆向工程得以避免,即由產(chǎn)品來推導(dǎo)出設(shè)計(jì)。
以Transmeta,E2K等為代表的通用微處理器,解決兼容性問題的方式是通過軟件完成對目標(biāo)指令流(如X86)的分析、譯碼,并產(chǎn)生VLIW的分子流,動態(tài)地將目標(biāo)指令翻譯到機(jī)器自身的指令集合上,利用自身硬件的并行特性來實(shí)現(xiàn)程序的高效執(zhí)行。在保證指令級兼容的同時(shí)保持自身的特點(diǎn)。
對于新的體系結(jié)構(gòu)設(shè)計(jì)者而言,由于知識產(chǎn)權(quán)的問題和產(chǎn)品設(shè)計(jì)的保密特征,Itanium的解決兼容性問題的方案顯然不可??;AMD的解決兼容性問題的方案是直接模仿,不涉及自身體系結(jié)構(gòu)問題。而且對于上述體系結(jié)構(gòu)的微處理器,體系界面每增加一條指令都意味著芯片規(guī)模的增加,而且體系結(jié)構(gòu)一旦確定則實(shí)現(xiàn)的指令集合也隨之確定,芯片設(shè)計(jì)完畢后,就不能再增加指令,芯片產(chǎn)品的生命期短,對兼容設(shè)計(jì)也十分不利,因?yàn)橐嫒荻喾N其它體系結(jié)構(gòu)的處理器時(shí)將付出太大的代價(jià)。
Transmeta的解決兼容性問題的方案雖然可以保持新的體系結(jié)構(gòu)特征,但完全以軟件來進(jìn)行指令轉(zhuǎn)換導(dǎo)致的效率損失比較大。
因而,現(xiàn)有技術(shù)中存在著發(fā)明一種新的具有兼容性的體系結(jié)構(gòu)的需要,該體系結(jié)構(gòu)在能以更高的效率實(shí)現(xiàn)對目前市場上主流處理器的指令級兼容的同時(shí)保持自身特點(diǎn),即在新體系結(jié)構(gòu)的基礎(chǔ)上設(shè)計(jì)的軟件產(chǎn)品能得到最高效率的執(zhí)行。
具有“顯式硬件并行”特性的MISC(宏指令集計(jì)算機(jī))體系結(jié)構(gòu)為解決該問題提供了一種可能的方式,該體系結(jié)構(gòu)的重要特點(diǎn)在于算子是指令的最小單位,硬件單元通過算子界面直接顯現(xiàn)給軟件。由于算子的控制粒度通常小于一般的RISC指令,使得MISC的指令設(shè)計(jì)的靈活性大大高于其它體系結(jié)構(gòu)的設(shè)計(jì),而且由于算子可以通過拼裝、延時(shí)、排序、替換等宏加工方式組成可變長宏指令,因而可以大大提高指令執(zhí)行的并行度和執(zhí)行效率。與現(xiàn)有的微處理器體系結(jié)構(gòu)相比,MISC體系結(jié)構(gòu)更加有利于優(yōu)化編譯器的開發(fā),以及用戶自定義指令的實(shí)現(xiàn),使得指令在高效執(zhí)行的同時(shí)可以滿足更廣泛的應(yīng)用需求。但MISC體系結(jié)構(gòu)在過去的研究中不具備兼容性的設(shè)計(jì),使得其應(yīng)用范圍受到一定的限制。為了解決MISC體系結(jié)構(gòu)的兼容性問題,有兩種思路,一種是直接的指令轉(zhuǎn)換,一種是由硬件可重構(gòu)設(shè)計(jì)支持的指令轉(zhuǎn)換。兩者的差別在于后者將目標(biāo)兼容指令映射到根據(jù)該指令集合設(shè)計(jì)的可重構(gòu)硬件上進(jìn)行執(zhí)行,這樣可以利用硬件執(zhí)行的高效率來減少代碼轉(zhuǎn)換過程中的效率損失,同時(shí)利用MISC可變長宏指令的宏加工特性進(jìn)一步提高執(zhí)行的執(zhí)行效率,從而保證高效實(shí)現(xiàn)指令級的兼容。因而采用由可重構(gòu)硬件支持的指令轉(zhuǎn)換來解決指令級兼容問題具有更大的優(yōu)勢??芍貥?gòu)硬件在指令上的反映是為不同兼容目標(biāo)設(shè)計(jì)的算子,即可以由不同作用的算子來控制同一個(gè)硬件單元。該方法的核心在于可重構(gòu)部件的設(shè)計(jì)。
可重構(gòu)寄存器堆是上述可重構(gòu)硬件中最關(guān)鍵的部分之一。寄存器堆位于計(jì)算機(jī)存儲層次的最高層,是處理器內(nèi)部的重要部件,是數(shù)據(jù)交換的重要場所,由于現(xiàn)代先進(jìn)計(jì)算機(jī)多采用寄存器-寄存器型的指令結(jié)構(gòu),寄存器堆的結(jié)構(gòu)和性能是決定其整體性能的關(guān)鍵因素。微電子工藝發(fā)展的不平衡使得處理器和存儲器之間的性能差距不斷擴(kuò)大,是寄存器堆研究受到日益廣泛關(guān)注的另一個(gè)原因,合理的寄存器堆設(shè)計(jì)可以有效地減少對存儲器的訪問量。MISC可重構(gòu)寄存器堆的設(shè)計(jì)是MISC微處理器設(shè)計(jì)的重要組成部分,它對全面實(shí)現(xiàn)具有兼容性的MISC體系有著重要的意義。

發(fā)明內(nèi)容
因此本發(fā)明的目的是解決上述關(guān)于實(shí)現(xiàn)兼容性的問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種用于兼容目的的算子提取方法,所述方法的特征在于包括以下步驟
(1)對目標(biāo)兼容指令集合功能進(jìn)行分析;
(2)根據(jù)兼容目標(biāo)指令集合功能分析的結(jié)果,將由同一類部件完成的功能排列在一起,重新編碼,成為功能算子的操作碼;將源操作數(shù)獨(dú)立成為路由算子,對應(yīng)于寄存器堆的讀端口;將目的操作數(shù)獨(dú)立成為數(shù)據(jù)算子的目的寄存器域;將必須同時(shí)控制多個(gè)部件執(zhí)行的操作設(shè)計(jì)為復(fù)合算子;
(3)至少部分根據(jù)兼容目標(biāo)指令集合功能分析的結(jié)果確定內(nèi)部通路;
(4)根據(jù)內(nèi)部通路確定路由算子和數(shù)據(jù)算子的數(shù)量;
(5)確定功能算子的數(shù)據(jù)來源域和數(shù)據(jù)算子的數(shù)據(jù)來源域。
為了實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種具有兼容性的可重構(gòu)部件設(shè)計(jì)方法,其特征在于包括以下步驟
(1)根據(jù)不同兼容目標(biāo)的算子集合分別進(jìn)行硬件設(shè)計(jì),分別確定滿足各算子集合功能的硬件資源、連接關(guān)系、控制關(guān)系和時(shí)序關(guān)系;
(2)將根據(jù)不同兼容目標(biāo)體系得出的部件設(shè)計(jì)進(jìn)行形式化描述;
(3)將部件的形式化描述進(jìn)行疊加優(yōu)化;
將實(shí)現(xiàn)功能集合不全相同的同類部件進(jìn)行操作(OP)疊加,且不同功能集合不同時(shí)有效時(shí)(串行疊加),根據(jù)如下規(guī)則疊加
<資源規(guī)則>滿足OP集合串行疊加的資源需求是完成所有OP在不同時(shí)標(biāo)下所需要的對應(yīng)資源的并集;
<連接規(guī)則>串行疊加(完成多種功能的電路描述進(jìn)行疊加,但在同一時(shí)刻只有一種功能有效)時(shí),相同的數(shù)據(jù)來源可以合并,不同的數(shù)據(jù)來源并行排列,同時(shí)改變相應(yīng)的選通控制條件;
<控制規(guī)則>滿足OP串行疊加的控制描述為疊加前各OP的控制描述的并集,對相同操作的新的控制條件為原條件的或關(guān)系;
<時(shí)序規(guī)則>OP串行疊加后的關(guān)鍵路徑為疊加前各OP的關(guān)鍵路徑與各自增加的開關(guān)電路的延時(shí)值之和的最大值。
(4)將以上形式化描述轉(zhuǎn)變?yōu)殡娐吩O(shè)計(jì)。
為了實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種可重構(gòu)寄存器堆,至少具有兩種工作模式,其特征在于包括一個(gè)寄存器堆地址轉(zhuǎn)換及選擇部件,一個(gè)寄存器堆和一個(gè)數(shù)據(jù)輸入選擇部件,其中指令中的寄存器讀寫地址經(jīng)過寄存器堆地址轉(zhuǎn)換及選擇部件轉(zhuǎn)換成對應(yīng)模式的寄存堆的物理地址來控制寄存器堆的讀寫,對應(yīng)模式的輸入數(shù)據(jù)經(jīng)過數(shù)據(jù)輸入選擇部件被寫入寄存器堆。
為了實(shí)現(xiàn)上述目的,本發(fā)明還提供了在一個(gè)兼容體系的微處理器中,一種可重構(gòu)寄存器堆的工作方法,其特征在于包括步驟
根據(jù)所要兼容的寄存器堆的工作方式將指令算子中的寄存器地址的若干低位輸入全局寄存器堆;
根據(jù)所要兼容的寄存器堆的工作方式將指令算子中的寄存器地址輸入地址轉(zhuǎn)換部件中相應(yīng)的地址轉(zhuǎn)換子部件從而產(chǎn)生訪問窗口寄存器堆的地址;
當(dāng)要寫寄存器時(shí),還根據(jù)所要兼容的寄存器堆的工作方式選擇合適的數(shù)據(jù)輸入并根據(jù)相應(yīng)的寫使能信號將數(shù)據(jù)寫入全局寄存器堆或窗口寄存器堆;
當(dāng)要讀寄存器時(shí),若高位地址全為零,則輸出從全局寄存器堆讀出的數(shù)據(jù);若高位地址不全為零,則輸出從窗口寄存器堆讀出的數(shù)據(jù)。
本發(fā)明的具有兼容性的微處理器體系結(jié)構(gòu)的總體設(shè)計(jì)思想是將優(yōu)化編譯技術(shù)和處理器的可重構(gòu)設(shè)計(jì)技術(shù)結(jié)合起來,利用可重構(gòu)硬件設(shè)計(jì)支持可重構(gòu)指令設(shè)計(jì),以實(shí)現(xiàn)對目標(biāo)指令集合的兼容及其高效執(zhí)行。
為此,本發(fā)明提供了一種可重構(gòu)的計(jì)算系統(tǒng)設(shè)計(jì)方法。所謂體系可重構(gòu)設(shè)計(jì)是指體系能夠根據(jù)不同的兼容目標(biāo)處理器體系結(jié)構(gòu)而重新組織,從而實(shí)現(xiàn)不同兼容目標(biāo)處理器的功能。該設(shè)計(jì)方法包括
1)指令集可重構(gòu);
2)存儲模型可重構(gòu);
3)中斷與標(biāo)識模型可重構(gòu);
4)寄存器堆可重構(gòu);
5)流水線可重構(gòu)
指令集的可重構(gòu)是實(shí)現(xiàn)指令級兼容的基礎(chǔ)。存儲模型、中斷標(biāo)識模型、寄存器堆、流水線的可重構(gòu)是對指令級可重構(gòu)的硬件支持。指令集重構(gòu)是為實(shí)現(xiàn)不同應(yīng)用需求而進(jìn)行的必要步驟,硬件重構(gòu)的實(shí)現(xiàn)過程是基于理論模型的硬件疊加和優(yōu)化過程。指令集重構(gòu)在體系界面上表現(xiàn)為不同算子的組合方式。硬件重構(gòu)在體系結(jié)構(gòu)界面上表現(xiàn)為不同類型的算子,由優(yōu)化編譯器來保證在兼容某一特定類型的體系結(jié)構(gòu)時(shí)只有相同類型的算子可以參與指令轉(zhuǎn)換過程。
將本發(fā)明的體系結(jié)構(gòu)用于微處理器體系設(shè)計(jì)中時(shí),其它體系結(jié)構(gòu)的指令經(jīng)過優(yōu)化編譯器進(jìn)行二進(jìn)制代碼轉(zhuǎn)換和代碼壓縮處理后,可以在可重構(gòu)硬件上得到高效的執(zhí)行,同時(shí)使得基于該體系結(jié)構(gòu)的面向應(yīng)用的指令設(shè)計(jì)成為可能。
本發(fā)明特別涉及一種具有兼容特性的基于顯式硬件單元控制(EHCC)思想的指令結(jié)構(gòu),其特征在于
1.指令集合由指令格式和算子集合構(gòu)成;
2.指令格式至少包括三個(gè)部分格式控制域CBFF、算子段控制域CONTROL和算子域,其中格式控制域用來標(biāo)志不同的指令格式,算子段控制域與算子槽一一對應(yīng),由算子段控制域確定算子槽中的算子編碼為該算子槽對應(yīng)的算子集合中具體算子的編號。
3.算子是指令控制的最小單位,在實(shí)現(xiàn)上是對應(yīng)于硬件可控節(jié)點(diǎn)的控制編碼表示,是能完成一定功能的硬件單元在體系結(jié)構(gòu)界面上的反映。每一個(gè)算子執(zhí)行的結(jié)果將完成一個(gè)具有一定功能的操作。按照作用方式的不同,算子分為功能算子、數(shù)據(jù)算子、路由算子和復(fù)合算子四類。其結(jié)構(gòu)和功能說明如下功能算子包括功能控制域、源操作數(shù)控制域、操作數(shù)寬度控制域,用于功能單元(由數(shù)據(jù)通路可控節(jié)點(diǎn)和執(zhí)行部件可控節(jié)點(diǎn)構(gòu)成的能完成一個(gè)功能操作的硬件單元)的控制;數(shù)據(jù)算子包括源操作數(shù)控制域、目的操作數(shù)控制域和操作段控制域,用于數(shù)據(jù)單元(由數(shù)據(jù)通路可控節(jié)點(diǎn)和寄存可控節(jié)點(diǎn)的組合構(gòu)成的能完成一個(gè)數(shù)據(jù)存貯的硬件單元)的控制;路由算子包括源操作數(shù)控制域,用于路由單元(單純由輸入數(shù)據(jù)通路和開關(guān)電路構(gòu)成的能完成一個(gè)開關(guān)控制的硬件單元)的控制;復(fù)合算子包括功能控制域,用于復(fù)合單元(由不可分割的若干功能單元或數(shù)據(jù)單元構(gòu)成的能完成一種特定功能的硬件單元)的控制,所謂復(fù)合單元是指,所謂“不可分割”是指單元中的部分可控節(jié)點(diǎn)受控時(shí)不能產(chǎn)生具有意義的動作,只有當(dāng)單元中所有可控節(jié)點(diǎn)受控時(shí),才產(chǎn)生具有確定意義的動作。
4.按照設(shè)計(jì)目的不同,算子集合分為兩類一類是面向應(yīng)用需求,為了高效解決應(yīng)用問題而自行設(shè)計(jì)的;一類是為了實(shí)現(xiàn)兼容目的,根據(jù)兼容目標(biāo)指令集的功能而進(jìn)行的,該類算子編碼與兼容目標(biāo)指令集合之間存在確定的對應(yīng)關(guān)系,即兼容目標(biāo)指令集合中的任何一條指令可以表示為算子集合中的一個(gè)算子或者多個(gè)算子的拼裝。
5.算子可以包含延時(shí)、排序、替換域;其中延時(shí)域表明該算子可以延時(shí)幾個(gè)周期執(zhí)行,排序域表明算子執(zhí)行的順序,替換域表明該算子需要重復(fù)執(zhí)行的次數(shù)。
以上具有兼容性的顯式硬件單元控制的指令結(jié)構(gòu)提供了一種實(shí)現(xiàn)指令級兼容的新途徑。兼容目標(biāo)指令集經(jīng)過優(yōu)化編譯器的處理直接轉(zhuǎn)換為與硬件單元相對應(yīng)的算子組合,然后由優(yōu)化編譯器中與機(jī)器相關(guān)的部分進(jìn)行優(yōu)化和代碼壓縮(拼裝,延時(shí)、排序、替換),形成可變長宏指令字(VLMIW)的算子流,在具有兼容性的可重構(gòu)部件上高效執(zhí)行。基于算子的指令設(shè)計(jì)方法還為用戶根據(jù)應(yīng)用設(shè)計(jì)新的指令提供了方便。
本發(fā)明的顯著優(yōu)勢在于體系界面不僅反映硬件當(dāng)前能夠完成的功能集合,而且完全反映硬件資源的情況,包括各種硬件的數(shù)量、應(yīng)用特性、連接關(guān)系等,并提供方法,使用戶能夠基于硬件特性設(shè)計(jì)實(shí)現(xiàn)完成指令功能的流程。在這樣的結(jié)構(gòu)中,硬件基本成分,包括功能單元、寄存器、數(shù)據(jù)通路、控制單元等直接暴露給用戶,并為用戶在指令界面上提供直接控制手段,使用戶能夠通過對硬件單元的直接控制,最有效地完成期望的功能。其結(jié)果是,在硬件設(shè)計(jì)確定時(shí)指令集合最基本指令和語義繁衍規(guī)則、語用規(guī)則、語法規(guī)則被確定;指令集合中的每個(gè)成分可以由硬件直接實(shí)現(xiàn),執(zhí)行效率高。
本發(fā)明的另一顯著優(yōu)勢在于便于實(shí)現(xiàn)對多種目標(biāo)指令集合的兼容,根據(jù)不同兼容目標(biāo)指令集合而提取的算子可以分配在不同的算子槽中,通過宏加工規(guī)則(延時(shí)、拼裝、排序、替換)組合成為面向不同兼容目標(biāo)體系結(jié)構(gòu)的指令。
本發(fā)明的另一顯著優(yōu)勢在于指令格式可以水平擴(kuò)展,有利于大量并行處理部件的并行執(zhí)行;
本發(fā)明的另一顯著優(yōu)勢在于算子的粒度比通常指令的粒度小,便于面向應(yīng)用需求構(gòu)造新的指令,結(jié)構(gòu)靈活,適應(yīng)性強(qiáng)。
本發(fā)明的另一顯著優(yōu)勢在于算子的組合方式可以發(fā)生變化,即可以通過延時(shí)、拼裝、排序、替換等手段改變算子執(zhí)行的時(shí)間,可以大大減少指令代碼所占用的空間。
本發(fā)明的另一主要目的是揭示一種用于兼容目的的算子提取方法,所述方法的特征在于包括以下步驟
(1)目標(biāo)兼容指令集合功能分析。
(2)將由同一類部件完成的功能排列在一起,重新編碼,成為功能算子的操作碼;將源操作數(shù)獨(dú)立成為路由算子,對應(yīng)于寄存器堆的讀端口;將目的操作數(shù)獨(dú)立成為數(shù)據(jù)算子的目的寄存器域;將必須同時(shí)控制多個(gè)部件執(zhí)行的操作設(shè)計(jì)為復(fù)合算子。
(3)設(shè)計(jì)內(nèi)部通路。
(4)確定路由算子和數(shù)據(jù)算子的數(shù)量。
(5)確定功能算子的數(shù)據(jù)來源域和數(shù)據(jù)算子的數(shù)據(jù)來源域。
本發(fā)明的算子設(shè)計(jì)方法采用正向設(shè)計(jì),即根據(jù)應(yīng)用需求(兼容目標(biāo)指令)推導(dǎo)算子設(shè)計(jì),為可重構(gòu)硬件的設(shè)計(jì)提供了依據(jù)。
本發(fā)明的顯著優(yōu)勢在于算子設(shè)計(jì)依據(jù)兼容目標(biāo)指令進(jìn)行,保證算子或者算子的組合的執(zhí)行效果與兼容目標(biāo)指令一致。
本發(fā)明的另一顯著優(yōu)勢在于根據(jù)兼容目標(biāo)指令設(shè)計(jì)的算子可以進(jìn)行重新組合,從而可以構(gòu)造新的指令。
本發(fā)明的另一顯著優(yōu)勢在于算子的個(gè)數(shù)可變,即硬件單元的數(shù)量可變,便于利用硬件單元的復(fù)制來增加指令執(zhí)行的并行度,提高指令執(zhí)行的效率,并且使該體系結(jié)構(gòu)具有更好的可擴(kuò)展性。
本發(fā)明的另一個(gè)主要目的是提供一種全局寄存器和窗口寄存器相分離的寄存器窗口結(jié)構(gòu)以及提供一種對上述寄存器堆進(jìn)行控制的方法。設(shè)寄存器窗口中的體系可見寄存器個(gè)數(shù)為2a,所述寄存器窗口結(jié)構(gòu)的特征在于包括
一個(gè)全局寄存器堆,包括2b個(gè)寄存器,b為自然數(shù),b<a,全局寄存器堆的讀寫地址寬度為b位;
一個(gè)窗口寄存器堆,包括2m個(gè)物理寄存器,m為自然數(shù),對于固定窗口而言,必須滿足m=b+1+k,k為自然數(shù),2k為固定窗口的個(gè)數(shù),對于移動窗口,必須滿足2m≥2a-2b,窗口寄存器堆的讀寫地址寬度為m位;
一個(gè)窗口寄存器堆地址轉(zhuǎn)換部件,根據(jù)指令功能,將指令中寬度為a的地址轉(zhuǎn)換為訪問窗口寄存器堆的寬度為m位的物理地址;
一個(gè)輸出數(shù)據(jù)選擇部件,在全局寄存器堆的輸出數(shù)據(jù)和窗口寄存器堆的輸出數(shù)據(jù)之間進(jìn)行選擇,輸出正確數(shù)據(jù)。
所述寄存器堆的控制方法的特征在于包括以下步驟
(1)寄存器堆中所有寄存器、控制固定窗口的當(dāng)前窗口指針CWP、控制移動窗口的棧底指針BOF的復(fù)位值均為0;
(2)根據(jù)指令譯碼結(jié)果確定數(shù)據(jù)的操作方式,進(jìn)行地址分離和變換。寄存器窗口可以分為固定窗口(窗口內(nèi)的輸入寄存器、輸出寄存器、局部寄存器個(gè)數(shù)固定)和移動窗口兩類(窗口內(nèi)的輸入寄存器、輸出寄存器、局部寄存器個(gè)數(shù)可由軟件設(shè)定),原理分別如下
(21)固定窗口地址計(jì)算
(211)全局寄存器堆讀寫地址
寄存器堆物理地址=指令中的寄存器地址的低位[b-1:0]
(212)窗口寄存器堆物理地址
(2121)當(dāng)CWP的修改方式是步驟411所述的方式一時(shí),
物理地址=(指令中的寄存器地址-2b)+{CWP,0}m
其中(CWP,0}m表示將CWP的有效值算術(shù)左移得到的m位地址。
(2122)當(dāng)CWP的修改方式是步驟411所述的方式二時(shí),
物理地址=(指令中的寄存器地址-2b)+{CWP補(bǔ),0}m
其中{CWP補(bǔ),0}m表示將CWP的有效值求補(bǔ),再進(jìn)行算術(shù)左移得
到的m位地址。
(22)移動窗口
全局寄存器堆物理地址=指令中的寄存器地址的低位[b-1:0]
窗口寄存器堆物理地址=(指令中的寄存器地址-2b)+BOF
其中BOF為當(dāng)前移動窗口的第一個(gè)寄存器的物理地址。
(3)完成寄存器堆讀寫操作
(31)當(dāng)寄存器堆寫操作有效時(shí),在寫地址使能信號控制下,對全局寄存器堆的寫操作和對窗口寄存器堆的寫操作兩者之間只有一個(gè)有效,判斷條件如下
(311)寄存器寫操作有效,且指令中的寄存器地址[a-1:b]為全0,則對訪問全局寄存器堆的寫地址使能信號有效,對窗口寄存器堆的的寫地址使能信號無效;
(312)寄存器寫操作有效,且指令中的寄存器地址[a-1:b]不全為0,則對窗口寄存器堆的寫地址使能信號有效,對全局寄存器堆的寫地址使能信號無效;
(32)當(dāng)寄存器堆讀操作有效時(shí),對全局寄存器堆和窗口寄存器堆的讀操作同時(shí)進(jìn)行,最后根據(jù)讀地址高位是否為0的判定條件選擇有效讀出數(shù)據(jù)輸出
(321)指令中的寄存器地址[a-1:b]為全0,選擇全局寄存器堆的讀出數(shù)據(jù)輸出;
(322)指令中的寄存器地址[a-1:b]不全為0,選擇窗口寄存器堆的讀出數(shù)據(jù)輸出;
(4)根據(jù)指令和計(jì)數(shù)器的初值,修改當(dāng)前窗口指針CWP或者當(dāng)前棧底指針BOF
(41)固定窗口的CWP修改方式
(411)方式一
(4111)SAVE操作有效時(shí),CWPn+1=CWPn-1
(4112)RESTORE操作有效時(shí),恢復(fù)最近一次SAVE操作之
前的CWP,CWPn+1=CWPn+1
(411)方式二
(4111)SAVE操作有效時(shí),CWPn+1=CWPn+1
(4112)RESTORE操作有效時(shí),恢復(fù)最近一次SAVE操作之
前的CWP,CWPn+1=CWPn-1
(42)移動窗口的BOF修改方式
(421)CALL操作有效時(shí),BOFn+1=BOFn+SOLn
(422)RETURN操作有效時(shí),恢復(fù)最近一次CALL操作之前的
BOF,BOFn+1=BOFn-SOLn-1
本發(fā)明的獨(dú)到優(yōu)勢在于全局寄存器和窗口寄存器獨(dú)立編址,可以簡化實(shí)現(xiàn)窗口寄存器堆中寄存器數(shù)目為2m時(shí)的寄存器窗口設(shè)計(jì),窗口寄存器地址指針的計(jì)算可以直接用無符號的加法完成,無需求模操作,簡化了電路設(shè)計(jì)。
本發(fā)明的另一獨(dú)到優(yōu)勢在于本方法同時(shí)適用于固定窗口和移動窗口的設(shè)計(jì),應(yīng)用范圍廣。
本發(fā)明另一個(gè)主要目的是提供一種基于查表法的旋轉(zhuǎn)寄存器地址生成部件及其控制方法。設(shè)寄存器堆包含2n(n為自然數(shù))個(gè)物理寄存器,旋轉(zhuǎn)域的大小為2m的SOR倍,m為非負(fù)整數(shù),且m≤n,SOR=1~s,s為自然數(shù)且s≤2n-m,所述地址生成部件的特征在于包括
一個(gè)旋轉(zhuǎn)基寄存器(RRB)控制部件,旋轉(zhuǎn)基寄存器位寬為n位,復(fù)位值為0,每完成一次疊代,RRB寄存器值減一,旋轉(zhuǎn)基寄存器RRB還可以在指令控制下清零;
一級加法部件,完成指令中的寄存器地址(位寬n位)與RRB寄存器的加法操作;
一個(gè)由寄存器或ROM構(gòu)成的硬件查表電路,該表的行標(biāo)是位寬為n-m的全排列,列標(biāo)是SOR域,表項(xiàng)為行標(biāo)對列標(biāo)的取模。
所述控制方法的特征在于包括如下步驟
(1)復(fù)位
RRB寄存器的復(fù)位值為0,當(dāng)使用寄存器設(shè)計(jì)查表電路時(shí),查表電路中表項(xiàng)的復(fù)位值為取模值;
(2)由旋轉(zhuǎn)域設(shè)置指令中的旋轉(zhuǎn)域倍數(shù)SOR(取值1~s,該值算術(shù)左移m位得到旋轉(zhuǎn)域)控制相應(yīng)相應(yīng)列的表項(xiàng)的選擇;
(3)指令地址與RRB的輸出值相加,加法的結(jié)果中低m位[m-1:0]直接作為旋轉(zhuǎn)地址的低m位[m-1:0],高n-m位地址[n-1:m]輸入查表電路;
(4)以步驟3的輸出地址的高n-m位[n-1:m]和SOR為索引進(jìn)行查表操作,將得到的表項(xiàng)作為旋轉(zhuǎn)地址的高n-m位地址[n-1:m],與步驟3中加法結(jié)果的低m位[m-1:0]組合,成為最終的旋轉(zhuǎn)寄存器物理地址;
(5)在指令控制下RRB遞減或清0。
(51)當(dāng)軟件流水循環(huán)分支標(biāo)識有效時(shí),RRB自動減1;
(52)當(dāng)清RRB指令有效時(shí),RRB清0。
寄存器旋轉(zhuǎn)是由RAU,B.R.等人于1989年在Cydra5巨型機(jī)的研究中率先提出的,其目的是為了支持軟件流水的模調(diào)度,寄存器旋轉(zhuǎn)的通用公式為(寄存器地址+RRB)mod旋轉(zhuǎn)域
與通常的用模運(yùn)算求旋轉(zhuǎn)寄存器物理地址的方法相比,本發(fā)明的電路設(shè)計(jì)結(jié)構(gòu)簡單,效率高。對上述公式稍加改變
(寄存器地址+RRB-2n)mod旋轉(zhuǎn)域+2n
即可實(shí)現(xiàn)在同一個(gè)寄存器堆中保證2n個(gè)寄存器為靜態(tài)寄存器,不發(fā)生旋轉(zhuǎn)。地址生成部件與上述類似,只增加對定值2n的各一次加減操作,控制方法則完全一致。
本發(fā)明的獨(dú)到優(yōu)勢在于基于查表法的寄存器旋轉(zhuǎn),可以避免寄存器旋轉(zhuǎn)地址計(jì)算過程中的求模操作,大大簡化電路實(shí)現(xiàn),并可快速獲得旋轉(zhuǎn)地址。
本發(fā)明的另一獨(dú)到優(yōu)勢在于旋轉(zhuǎn)域可以為2m的倍數(shù),是一種通用的方法。
本發(fā)明的另一目的是揭示一種具有兼容性的可重構(gòu)部件設(shè)計(jì)方法,其特征在于包括以下步驟
(1)根據(jù)不同兼容目標(biāo)的算子集合分別進(jìn)行硬件設(shè)計(jì),分別確定滿足各算子集合功能的硬件資源、連接關(guān)系、控制關(guān)系和時(shí)序關(guān)系;
(2)將根據(jù)不同兼容目標(biāo)體系得出的部件設(shè)計(jì)進(jìn)行形式化描述;
(3)將部件的形式化描述進(jìn)行疊加;
(4)將以上形式化描述轉(zhuǎn)變?yōu)殡娐吩O(shè)計(jì)。
通過疊加設(shè)計(jì)規(guī)則和聚類分析技術(shù)得到的可重構(gòu)部件的結(jié)構(gòu)可以根據(jù)不同類型的算子流重新組合,實(shí)現(xiàn)這種硬件重新組合的算子組合可以支持不同體系的指令集合的功能。在完成指令級兼容的同時(shí),可以節(jié)省硬件資源。
本發(fā)明的顯著優(yōu)勢在于能夠?qū)哂屑嫒菪缘目芍貥?gòu)部件的設(shè)計(jì)進(jìn)行一致性的規(guī)范描述;
本發(fā)明的另一顯著優(yōu)勢在于能夠建立統(tǒng)一的設(shè)計(jì)規(guī)則,廣泛地用于同類部件的設(shè)計(jì);
本發(fā)明的另一顯著優(yōu)勢在于具備可重構(gòu)部件設(shè)計(jì)需要的可繁衍的資源,并對該資源進(jìn)行分配、組織和控制;
本發(fā)明的另一主要目的是提供一種具有兼容性的可重構(gòu)部件,尤其是一種可重構(gòu)寄存器堆。其特征在于包括
一個(gè)寄存器堆,至少包括兩個(gè)讀端口和一個(gè)寫端口;
一個(gè)地址選擇部件,其輸入為實(shí)現(xiàn)不同功能寄存器堆操作的地址指針,其輸出為當(dāng)前操作下有效的地址指針,輸出地址的個(gè)數(shù)為輸入中為完成同一功能所需要的地址個(gè)數(shù)的最大值;以及
一個(gè)輸入數(shù)據(jù)選擇部件,其輸入為實(shí)現(xiàn)不同功能寄存器堆操作的寫入數(shù)據(jù),其輸出為當(dāng)前操作下有效的寫入數(shù)據(jù),輸出數(shù)據(jù)的個(gè)數(shù)為輸入中為完成同一功能所需要的數(shù)據(jù)個(gè)數(shù)的最大值。
本發(fā)明的可重構(gòu)寄存器堆在普通寄存器堆的基礎(chǔ)上增加了地址選擇部件和輸入數(shù)據(jù)選擇部件,來實(shí)現(xiàn)不同功能需求的寄存器堆地址和輸入數(shù)據(jù)的控制,就使得同一個(gè)寄存器堆可以滿足不同算子的功能需求。
本發(fā)明的獨(dú)到優(yōu)勢在于實(shí)現(xiàn)寄存器堆的功能重構(gòu)需要的硬件僅為為實(shí)現(xiàn)各功能所需要的硬件集合的并集和兩個(gè)選擇部件,硬件開銷?。?br> 本發(fā)明的另一獨(dú)到優(yōu)勢在于地址選擇和數(shù)據(jù)選擇部件的輸入根據(jù)兼容目標(biāo)的不同進(jìn)行增減,具有很好的可擴(kuò)展性。


圖1a為AMD類型的微處理器實(shí)現(xiàn)兼容的方法簡圖1b為Itanium類型的微處理器實(shí)現(xiàn)兼容的方法簡圖1c為Transmeta類型的微處理器實(shí)現(xiàn)兼容的方法簡圖1d為本發(fā)明的體系結(jié)構(gòu)實(shí)現(xiàn)兼容的方法簡圖2為利用本發(fā)明設(shè)計(jì)的兼容機(jī)的指令執(zhí)行方式;
圖3為MISC指令結(jié)構(gòu)示意圖4a為與功能算子相對應(yīng)的功能單元示意圖4b為與數(shù)據(jù)算子相對應(yīng)的數(shù)據(jù)單元示意圖4c為與路由算子相對應(yīng)的路由單元示意圖4d為與復(fù)合算子相對應(yīng)的復(fù)合單元示意圖5為SPARC指令與MISC指令轉(zhuǎn)換示意圖6為具有兼容性的可重構(gòu)部件的設(shè)計(jì)流程;
圖7為兼容目標(biāo)指令分析和算子提取流程;
圖8a為可重構(gòu)兼容部件設(shè)計(jì)的資源規(guī)則;
圖8b為可重構(gòu)兼容部件設(shè)計(jì)的連接規(guī)則;
圖8c為可重構(gòu)兼容部件設(shè)計(jì)的控制規(guī)則;
圖8d為可重構(gòu)兼容部件設(shè)計(jì)的時(shí)序規(guī)則;
圖9為根據(jù)本發(fā)明設(shè)計(jì)的具有兼容性的可重構(gòu)寄存器部件外框圖9a為上述寄存器堆用作隨機(jī)讀寫寄存器堆時(shí)的體系結(jié)構(gòu)特征;
圖9b為上述寄存器堆用作寄存器窗口時(shí)的體系結(jié)構(gòu)特征;
圖9c為上述寄存器堆用作移動寄存器窗口及旋轉(zhuǎn)寄存器時(shí)的體系結(jié)構(gòu)特征;
圖9d為分支指令中控制定循環(huán)的CTOP,CEXIT操作執(zhí)行過程;
圖9e為分支指令中控制不定循環(huán)的WTOP,WEXIT操作執(zhí)行過程;
圖10為全局寄存器與窗口寄存器分離的寄存器窗口結(jié)構(gòu)示意圖10a為將圖10的結(jié)構(gòu)用于固定窗口設(shè)計(jì)時(shí)的窗口寄存器堆地址生成部件示意圖10b為根據(jù)圖10a所述結(jié)構(gòu)實(shí)現(xiàn)的由8個(gè)窗口組成的SPARC V9通用寄存器窗口的地址轉(zhuǎn)換實(shí)施范例;
圖10c為將圖10的結(jié)構(gòu)用于移動窗口設(shè)計(jì)時(shí)的窗口寄存器堆地址生成結(jié)構(gòu)示意圖10d為根據(jù)圖10c所述結(jié)構(gòu)實(shí)現(xiàn)的由128個(gè)物理寄存器組成的Itanium通用寄存器堆的堆棧區(qū)的地址轉(zhuǎn)換實(shí)施范例;
圖11為基于查表法的旋轉(zhuǎn)寄存器地址生成部件示意圖11a為包含128個(gè)64位寄存器的具有3個(gè)讀寫端口(兩讀一寫)的寄存器堆的基于查表法的旋轉(zhuǎn)寄存器地址生成部件示意圖11b為旋轉(zhuǎn)域?yàn)?的1-12倍時(shí),查表電路的表頭與表項(xiàng);
圖11c為在移動寄存器窗口的基礎(chǔ)上設(shè)計(jì)的旋轉(zhuǎn)寄存器地址轉(zhuǎn)換部件示意圖12為可重構(gòu)寄存器堆的結(jié)構(gòu)示意圖12a為具有寄存器窗口、移動寄存器窗口及旋轉(zhuǎn)寄存器兩種工作模式的可重構(gòu)寄存器堆模塊結(jié)構(gòu)框圖12b為圖12a中全局寄存器堆的結(jié)構(gòu)圖12c為圖12a中地址選擇部件和數(shù)據(jù)輸出選擇部件結(jié)構(gòu)圖12d為具有隨機(jī)讀寫寄存器堆、寄存器窗口、移動寄存器窗口及旋轉(zhuǎn)寄存器三種工作模式的可重構(gòu)寄存器堆模塊結(jié)構(gòu)框圖。
圖12e為圖12d中的地址選擇部件結(jié)構(gòu)圖12f為圖12d中的輸入數(shù)據(jù)選擇部件和輸出數(shù)據(jù)選擇部件結(jié)構(gòu)圖。
以下參照附圖詳細(xì)描述本發(fā)明的具體實(shí)施方式

圖1a至圖1d比較四種實(shí)現(xiàn)兼容性的途徑,說明如下
同樣的問題使用不同體系結(jié)構(gòu)的處理器進(jìn)行處理,將得到同樣的結(jié)果。其基本方法是用高級語言對問題進(jìn)行描述,經(jīng)過操作系統(tǒng)的調(diào)度和優(yōu)化編譯器的編譯過程,將轉(zhuǎn)化成特定體系結(jié)構(gòu)的指令(以下簡稱體系),然后在基于此指令集合的硬件即處理器芯片(以下簡稱硬件)上執(zhí)行。
在不考慮兼容的情況下,從同一個(gè)問題出發(fā)到同一個(gè)結(jié)果有N條路徑,即
問題→體系A(chǔ)→硬件A→結(jié)果;
問題→體系B→體系B→結(jié)果;
······
問題→體系N→體系N→結(jié)果。
以下各圖中硬件B為根據(jù)不同兼容路線設(shè)計(jì)的處理器。
以AMD為代表的兼容設(shè)計(jì)路線如圖1a所示,其指令執(zhí)行的路徑為
問題→體系A(chǔ)→硬件B→結(jié)果。
這是一種純粹的兼容機(jī),本身不設(shè)計(jì)新的體系結(jié)構(gòu),而是直接根據(jù)其它處理器的體系結(jié)構(gòu),設(shè)計(jì)新的硬件,滿足其它處理器體系結(jié)構(gòu)的需求。這樣做可以使大部分的設(shè)計(jì)和開發(fā)工作通過逆向工程得以避免,但這種亦步亦趨的模式的創(chuàng)新性不足。
以Itanium為代表的微處理器的指令執(zhí)行路徑如圖1b所示,包含兩條路徑
問題→體系B→硬件B(包含硬件A)→結(jié)果;
問題→體系A(chǔ)→硬件B(包含硬件A)→結(jié)果;
即在同一芯片中集成不同的硬件分別執(zhí)行體系A(chǔ)和體系B的指令,利用跳轉(zhuǎn)指令實(shí)現(xiàn)兩者之間的轉(zhuǎn)換。第一條指令執(zhí)行路徑基于新的體系結(jié)構(gòu)B,而第二條指令執(zhí)行路徑用于兼容目的,因?yàn)橛布﨎本身集成硬件A,所以體系A(chǔ)的指令可以在硬件B上直接執(zhí)行。這種方法只適用于同一公司的產(chǎn)品設(shè)計(jì)。
以Transmeta為代表的微處理器的指令執(zhí)行路徑如圖1c所示,包含兩條路徑
問題→體系B→硬件B→結(jié)果;
問題→體系A(chǔ)→體系B→硬件B→結(jié)果;
第一條指令執(zhí)行路徑基于新的體系結(jié)構(gòu)B,而第二條指令執(zhí)行路徑用于兼容目的,先將問題轉(zhuǎn)化為體系A(chǔ)的指令,而后通過軟件來完成體系A(chǔ)和體系B的之間的指令轉(zhuǎn)換,最終的結(jié)果由硬件B譯碼執(zhí)行。這種方式的體系結(jié)構(gòu)設(shè)計(jì)可以在實(shí)現(xiàn)兼容體系A(chǔ)的同時(shí)保持自己的特點(diǎn),即可以自主設(shè)計(jì)體系B。
本方法的缺陷在于完全由軟件實(shí)現(xiàn)代碼轉(zhuǎn)換的代價(jià)較大。
MISC兼容體系結(jié)構(gòu)的指令執(zhí)行路徑如圖1d所示,可以包含N條路徑
問題→體系B→可重構(gòu)硬件B→結(jié)果;
問題→體系A(chǔ)→體系B→可重構(gòu)硬件B→結(jié)果;
問題→體系C→體系B→可重構(gòu)硬件B→結(jié)果;
······
問題→體系N→體系B→可重構(gòu)硬件B→結(jié)果;
第一條指令執(zhí)行路徑基于新的體系結(jié)構(gòu)B,后面的N-1條指令執(zhí)行路徑用于兼容目的,其特點(diǎn)在于
1.硬件B的設(shè)計(jì)是參考體系A(chǔ)、體系B、···體系N的指令集合和設(shè)計(jì)說明來設(shè)計(jì)的,硬件本身具有可重構(gòu)特性。兼容是在具有可重構(gòu)特性的兼容部件支持下實(shí)現(xiàn)的。
2.便于實(shí)現(xiàn)對多種不同體系結(jié)構(gòu)的兼容。
采用圖1d所示的方式設(shè)計(jì)的MISC兼容體系結(jié)構(gòu)的指令執(zhí)行方式如圖2所示。目標(biāo)兼容指令(源指令)通過指令轉(zhuǎn)換程序變成MISC體系結(jié)構(gòu)處理器能夠識別的在一定指令格式限制下的算子拼裝序列,該類指令在經(jīng)過代碼壓縮過程后,由具有可重構(gòu)特性的硬件進(jìn)行譯碼執(zhí)行。
下面結(jié)合圖3a和圖3b介紹MISC兼容體系結(jié)構(gòu)的指令界面。
與通常處理器的指令系統(tǒng)不同,MISC體系結(jié)構(gòu)的最小執(zhí)行成分是算子(包括功能算子,數(shù)據(jù)算子,路由算子和復(fù)合算子),每個(gè)算子對應(yīng)于一個(gè)確定的操作。指令的定義為某一特定時(shí)刻執(zhí)行的操作的集合。算子集合和算子排列規(guī)則(指令格式)是構(gòu)成該指令系統(tǒng)的兩大要素。
指令格式的總體形態(tài)如圖3a所示,包括SYS、CBFF、CONTROL和OPERATOR四個(gè)部分,其中SYS為保留位,CBFF為指令格式形態(tài)控制域,CONTROL為算子控制域,OPERATOR為算子編碼域。OPERATOR分為若干個(gè)算子段,記為Opi,每個(gè)算子段可以拼裝一個(gè)確定算子集合中的某個(gè)算子;對應(yīng)于每個(gè)算子段,CONTROL中有相應(yīng)的子格式控制域(記為CBCFi),CBCFi的編碼唯一確定了算子段Opi上拼裝的算子。譯碼器一次接受一個(gè)指令字,按照編碼制定的規(guī)則譯碼執(zhí)行。
算子按照一定的規(guī)則拼裝成指令字,但在執(zhí)行過程中,由于延時(shí)和替換等指令構(gòu)成策略,每周期實(shí)際執(zhí)行的實(shí)際指令長度可變。
有關(guān)算子的概念及結(jié)構(gòu)介紹如下。
將在功能上具有一定聯(lián)系的若干可控節(jié)點(diǎn)劃分在一起,組成一個(gè)單元,成為指令直接控制的最小單位,其編碼表示稱之為算子。
所謂可控節(jié)點(diǎn)是指硬件中能夠通過指令直接控制的器件,在寄存器堆中,可控節(jié)點(diǎn)可以是一個(gè)單獨(dú)的可讀寫的寄存器,或者一個(gè)寄存器讀/寫端口。指令的功能是控制以上被控成分中的可控節(jié)點(diǎn)集合以實(shí)現(xiàn)某種語義功能。
按照所控制的硬件單元的不同,算子可以分為功能算子、數(shù)據(jù)算子、路由算子和復(fù)合算子。指令通過四類算子來實(shí)現(xiàn)對各硬件單元的控制。
算子集合定義如下OP=FOP+DOP+ROP+COP
功能算子集合FOP定義為
FOP={(fopi,tfopi)},fopi為功能算子,tfopi為該功能算子的執(zhí)行周期。
<性質(zhì)>若(fopi,tfopi)屬于FOP,則
accri∈ACCR,若accri在t時(shí)刻值為VALUEO,t+tfopi時(shí)刻成為VALUE1;VALUE1為fopi標(biāo)識的數(shù)據(jù)來源寄存器的內(nèi)容經(jīng)fopi標(biāo)識的功能部件操作的結(jié)果。稱fopi相關(guān)于accri。
功能算子為對應(yīng)于功能單元(如圖4a所示)控制的編碼表示。功能單元(FUNCTIONAL CELL)指由數(shù)據(jù)通路可控節(jié)點(diǎn)和執(zhí)行部件可控節(jié)點(diǎn)構(gòu)成的能完成一個(gè)功能操作的硬件單元。
以能實(shí)現(xiàn)32位/64位整數(shù)加減法運(yùn)算操作的DAU算子為例,相關(guān)的可控結(jié)點(diǎn)包括兩個(gè)數(shù)據(jù)來源選通、數(shù)據(jù)寬度、操作類型。算子域構(gòu)成如下
算子中的各個(gè)域分別表示運(yùn)算的操作編碼(加、減、求絕對值、求補(bǔ)等)操作數(shù)寬度(32/64位)和兩個(gè)操作數(shù)來源的控制編碼。
數(shù)據(jù)算子集合定義為DOP={(dopi,tdopi)},dopi為數(shù)據(jù)算子,tdopi為該數(shù)據(jù)算子的執(zhí)行周期。
<性質(zhì)>若(dopi,tdopi)屬于DOP,則
comri∈COMR,若comri在t時(shí)刻值為VALUE0,t+tdopi時(shí)刻成為VALUE1;VALUE1為dopi標(biāo)識的數(shù)據(jù)來源寄存器中的值,稱dopi相關(guān)于comri;或
accri∈ACCR,若accri在t時(shí)刻值為VALUE0,t+tdopi時(shí)刻成為VALUE1,VALUE1為dopi標(biāo)識的功能部件的值,稱dopi相關(guān)于accri。
數(shù)據(jù)算子為對應(yīng)于數(shù)據(jù)單元(如圖4b所示)控制的編碼表示,數(shù)據(jù)單元(DATA CELL)指由數(shù)據(jù)通路可控節(jié)點(diǎn)和寄存可控節(jié)點(diǎn)的組合構(gòu)成的能完成一個(gè)數(shù)據(jù)存貯的硬件單元。數(shù)據(jù)單元可以是固定寬度,也可以是可變寬度的寄存器;可以是單個(gè)的寄存器,也可以是寄存器堆。從物理意義上講,數(shù)據(jù)算子對應(yīng)于硬件模型中的寄存器存儲部件(包括單個(gè)寄存器或者寄存器堆的寫端口)和數(shù)據(jù)來源控制。
例如控制寄存器組寫端口的數(shù)據(jù)算子MTN1RA,該算子具有3個(gè)域,形態(tài)如下
其中,MTN1NO表示寄存器編碼(MR0-MR7);RSMTN1RA表示第一輸入端口數(shù)據(jù)來源編碼;MFLD表示寄存器段編碼(高端,低端,全字,或者無效)。
路由算子集合定義為ROP={(ropi,tropi)},ropi為路由算子,tropi為該路由算子的執(zhí)行時(shí)間(路由算子的執(zhí)行時(shí)間一般小于一個(gè)周期)。
<性質(zhì)>若(ropi,tropi)屬于ROP,則
comri∈COMR,若comri在t時(shí)刻值為VALUE0,t+tropi時(shí)刻成為VALUE1;VALUE1為ropi標(biāo)識的數(shù)據(jù)來源寄存器中的值,稱ropi相關(guān)于comri;或
accri∈ACCR,若accri在t時(shí)刻值為VALUE0,t+tropi時(shí)刻成為VALUE1,VALUE1為ropi標(biāo)識的功能部件的值,稱ropi相關(guān)于accri。路由算子對應(yīng)于硬件模型中的路由控制。
路由算子為對應(yīng)于通路單元(如圖4c所示)控制的編碼表示。通路單元(ROUTE CELL)指單純由輸入數(shù)據(jù)通路構(gòu)成的一個(gè)路由操作單元。
以能實(shí)現(xiàn)四路總線BUS0、BUS1、BUS2和BUS3的數(shù)據(jù)來源選擇操作的路由算子PATH1為例,指令域構(gòu)成如下
其中各RS域表示控制總線BUS0、BUS1、BUS2和BUS3數(shù)據(jù)來源選通器的控制編碼。
復(fù)合算子集合的定義為COP={(copi,tcopi)},copi為復(fù)合算子,tcopi為該復(fù)合算子的執(zhí)行周期。
<性質(zhì)>若(copi,tcopi)屬于COP,則
comrj...,comri,comrj... ∈COMR,若comri,comrj..在t時(shí)刻值為VALUE0i.VALUE0j....,t+tfopi時(shí)刻成為VALUE1i.VALUE1j....;VALUE1i、VALUE1j...為copi標(biāo)識的操作的結(jié)果。稱copi相關(guān)于comri,comrj...。
復(fù)合算子為對應(yīng)于復(fù)合單元(如圖4d所示)控制的編碼表示。復(fù)合單元(COMBINED CELL)指由不可分割的若干功能單元或數(shù)據(jù)單元構(gòu)成的能完成一種特定功能的硬件單元,所謂“不可分割”是指單元中的部分可控節(jié)點(diǎn)受控時(shí)不能產(chǎn)生具有意義的動作,只有當(dāng)單元中所有可控節(jié)點(diǎn)受控時(shí),才產(chǎn)生具有確定意義的動作。例如堆棧操作算子MSTACK控制的就是一個(gè)復(fù)合單元,相關(guān)可控結(jié)點(diǎn)包括堆棧上所有的寄存器、堆棧指針來源選通器,和棧指針寄存器等。
下面結(jié)合圖5以SPARC為例,對比指令轉(zhuǎn)換前后的指令形態(tài)。圖中SPARC-V9的指令格式為32位,包括源操作數(shù)、目的操作數(shù)、指令功能控制域和指令格式控制域。轉(zhuǎn)化成MISC兼容體系結(jié)構(gòu)后,指令形態(tài)為指令格式控制域、算子段控制域和算子編碼,并可增加保留位。其中的算子為功能算子、數(shù)據(jù)算子、路由算子和復(fù)合算子等四類,分別對應(yīng)于不同硬件單元的控制。
以加法指令為例,轉(zhuǎn)換前后的指令形態(tài)如下
SPARC匯編指令A(yù)DDo2%12%o1%
編碼格式
實(shí)現(xiàn)功能將寄存器o2、12中的操作數(shù)相加,結(jié)果存入寄存器o1.
轉(zhuǎn)換后的指令形態(tài)如下
MISC匯編指令
ADD RPORT1,RPORT2||RPORT1 L1||RPORT L2||WPORT AUDD
編碼形態(tài)
其中SYS為保留位。
實(shí)現(xiàn)功能完成一個(gè)加法操作、兩個(gè)寄存器堆讀操作和一個(gè)寄存器堆寫操作,分別由加法算子DAU、路由算子PATH1和PATH1、以及寄存器堆寫算子RFW1來進(jìn)行控制。這樣,從指令界面上看,該指令反映的是加法器,寄存器堆讀端口1、寄存器讀端口2和寄存器堆寫端口1的并行控制。這種設(shè)計(jì)思想被稱為“顯式硬件單元控制(EHCC)”
圖6為具有兼容性的可重構(gòu)部件的設(shè)計(jì)流程;
設(shè)兼容目標(biāo)體系為體系A(chǔ)、體系B、···體系N,則可重構(gòu)部件的設(shè)計(jì)過程為
1.由不同體系推出該部件的形式化描述,過程如下
體系A(chǔ)→部件相關(guān)指令分析A→算子提取A→確定硬件資源A→形式化描述A;
體系B→部件相關(guān)指令分析B→算子提取B→確定硬件資源B→形式化描述B;
······
體系N→部件相關(guān)指令分析N→算子提取N→確定硬件資源N→形式化描述N;
以上過程可以并行執(zhí)行
2.將根據(jù)不同體系得出的部件形式化描述進(jìn)行串行疊加;
3.根據(jù)理論模型的疊加設(shè)計(jì)規(guī)則進(jìn)行設(shè)計(jì)優(yōu)化;
4.最終確定可重構(gòu)部件的硬件結(jié)構(gòu)。
圖7為兼容目標(biāo)指令分析和算子提取流程;
過程如下
1.分析源指令功能,將由同一類部件完成的功能排列在一起,重新編碼,成為功能算子的操作碼;
2.將源操作數(shù)獨(dú)立成為路由算子,對應(yīng)于寄存器堆的讀端口;
3.將目的操作數(shù)獨(dú)立成為數(shù)據(jù)算子的目的寄存器域;
4.根據(jù)功能,重新組織內(nèi)部通路,形成功能算子的數(shù)據(jù)來源域和數(shù)據(jù)算子的數(shù)據(jù)來源域,并最終確定路由算子和數(shù)據(jù)算子的數(shù)量;
5.將必須同時(shí)控制多個(gè)部件執(zhí)行的操作設(shè)計(jì)為復(fù)合算子;
6.進(jìn)行算子拼裝,考察是否能實(shí)現(xiàn)所有源指令的功能,如果不能實(shí)現(xiàn)則轉(zhuǎn)第1步,如果能實(shí)現(xiàn)則算子提取結(jié)束。
下面介紹部件設(shè)計(jì)過程中的模型描述和設(shè)計(jì)規(guī)則。
在MISC體系結(jié)構(gòu)中,部件的結(jié)構(gòu)、功能和使用界面可以通過一個(gè)理論模型(在此稱部件設(shè)計(jì)模型)來描述,一個(gè)部件設(shè)計(jì)模型模型定義為一個(gè)五元組,即
M=(OP,E,C,Ctrl,T)
該設(shè)計(jì)模型的五要素為
OP指操作關(guān)系集合,反映部件所實(shí)現(xiàn)的功能。以O(shè)P操作集合為基礎(chǔ)進(jìn)行設(shè)計(jì),可以得到下述E、C、Ctrl和T;
E指資源的集合,如數(shù)據(jù)通路、存儲體、邏輯、比較、條件、標(biāo)識、運(yùn)算等硬件部件以及支持重復(fù)、判定等控制行為的硬件部件。E的集合支持OP需求的實(shí)現(xiàn);
Ctrl指控制關(guān)系集合,在實(shí)現(xiàn)OP需求過程時(shí),通過控制關(guān)系Ctrl對體系結(jié)構(gòu)動態(tài)組織,Ctrl包括控制點(diǎn)和控制邏輯。Ctrl的集合支持在確定的資源E和時(shí)間T的條件下實(shí)現(xiàn)OP需求的動態(tài)控制。具體而言MISC功能部件的控制要素包括算子OPERATOR,標(biāo)識IDS以及由算子和標(biāo)識信號產(chǎn)生可控節(jié)點(diǎn)控制信號的控制邏輯;
T指以最小時(shí)間關(guān)系表現(xiàn)的資源、操作、控制和優(yōu)化的連接的集合;T是時(shí)間單位,T的集合支持OP需求。
而連接關(guān)系集合C針對前4個(gè)集合劃分,為
C=Cop+Ce+Ct+Cctrl
其中,Cop為行為連接關(guān)系集合,Ce為硬件單元的連接關(guān)系集合,Ct為時(shí)間成分連接關(guān)系,Cctrl為控制成分連接關(guān)系。
基于上述設(shè)計(jì)模型的五元組,任何一個(gè)行為或一個(gè)行為集合(記作Bi)可以從4個(gè)方面表示為
OP(Bi)Bi的功能函數(shù),定義行為Bi實(shí)施的過程;
E(Bi)Bi的資源函數(shù)。定義行為Bi在實(shí)施過程中使用的硬件資源及其數(shù)量;
CTRL(Bi)Bi的控制函數(shù),定義行為Bi在實(shí)施過程中對硬件單元的控制。
T(Bi)Bi的時(shí)間函數(shù),定義行為Bi實(shí)施過程所用的時(shí)間;
根據(jù)行為的可繁衍性和可規(guī)約性,有
OP(Bi)=op1&op2&..&opn,opi∈OP,&∈Cop
E(Bi)=e1&e2&...&en,ei∈E,&∈Ce
CTRL(Bi)=ctr11&ctr12&...&ctrln,ctrli∈CTRL,&∈Cctrl
T(Bi)=t1&t 2&....&tn,ti∈E,&∈Ct
以上各個(gè)成分的形式化描述說明如下。為敘述方便起見,將Cop、Ce、Ct、Cctrl分別與OP、E、T、CTRL結(jié)合起來說明。
1、最小操作行為集合OP及其連接關(guān)系Cop
1)OP={Opb,+}
OPb元操作集合。定義元操作為最小微操作,是功能劃分的最小成分,不可分割,如一個(gè)寄存器的賦值,一次加法操作等,其描述符為μOP。任何一個(gè)操作OP可以分解為各個(gè)不同時(shí)刻的μOP的組合,μOP之間可以重復(fù),但不同的μOP之間彼此正交。在寄存器堆的設(shè)計(jì)模型中,元操作為賦值操作(以“*”表示),是由硬件單元的一個(gè)連接實(shí)現(xiàn)的行為,任何一種寄存器操作可以用賦值元操作及其疊加(以“+”表示)來描述。
2)Cop={|,||,=>..,{*}},分別表示操作的串行、并行、選擇、重復(fù)等;
“b1|b2”即在某一具體的時(shí)刻,行為b1與行為b2中只有一個(gè)有效,b1,b2∈OPR,是一種排斥性的“或”關(guān)系,值得注意的是,“|”符號只用在描述操作之間的關(guān)系時(shí)使用,在描述操作序列時(shí),串行操作是用不同的時(shí)標(biāo)來區(qū)分的。b1,b2∈OP。
“b1||b2”表示并行執(zhí)行。即在某一具體時(shí)刻,行為b1與行為b2可以在同一時(shí)間段完成操作,b1,b2∈OP。
“b1=>b2 b3”表示條件執(zhí)行。行為b1先執(zhí)行,當(dāng)行為b1執(zhí)行結(jié)果為真時(shí),行為b2執(zhí)行,否則執(zhí)行行為b3。b1,b2,b3∈OP。
“{b1*b2}”表示重復(fù)執(zhí)行。行為b1先執(zhí)行,若行為b1執(zhí)行結(jié)果為真,則執(zhí)行行為b2,否則結(jié)束。重復(fù)該過程,直到行為b1的執(zhí)行結(jié)果為假為止,b1,b2∈OP。
2、最小硬件單元集合E及其連接關(guān)系集合Ce
1)E={e1,e2,...en},ei為一個(gè)硬件單元。
硬件單元的類型包括
(1)通路單元集合P
指構(gòu)成寄存器的抽象的數(shù)據(jù)來源控制元件,以多路選擇器為例,當(dāng)它與記憶體相連時(shí),表示為P加記憶體(或總線)的名字(大寫)以及由括號[]包括的一組線名,括號內(nèi)由符號“|”分隔的部分為選擇控制信號。例如PE[a,b,c,d|Mr]表示四選一的選擇控制,數(shù)據(jù)的去向?yàn)橛洃涹wE,四路數(shù)據(jù)來源分別為記憶體A、B、C、D,Mr為選通控制信號,對于與記憶體相連的多路選擇的輸出線名可以表示為對應(yīng)的小寫形式pe,對于與總線相連的多路選擇的輸出線名可以直接由總線名的小寫形式表示。
(2)記憶單元集合M
指構(gòu)成存儲/寄存器的抽象的數(shù)據(jù)存儲元件,記憶體(寄存器)名以大寫字母表示。如A(La)、B(Lb)、C(Lc)、R1(Lr1)、R2(Lr2)、R3(Lr3)、...,記憶體括號內(nèi)以L開頭的信號為鎖存控制信號;
(3)算術(shù)運(yùn)算單元集合AU,指能完成一定運(yùn)算功能的部件;
(4)邏輯運(yùn)算單元集合L,指能完成一定邏輯功能的部件;
(5)判斷單元集合J,指能完成比較判斷功能的部件;
(6)分支單元集合BR,指能完成分支操作的部件;
2)Ce={·,+},分別表示資源的順序使用和同時(shí)使用
ei·ej當(dāng)且僅當(dāng)ei,ej∈E,存在一個(gè)k,ei[out]與ej[in_k]間存在一條聯(lián)線;
ei+ej當(dāng)且僅當(dāng)ei,ej∈E,不存在一個(gè)k,ei[out]與ej[in_k]間存在一條聯(lián)線;
記憶體之間的連接是通過連線建立的,定義可重構(gòu)部件的輸出線名(NET名)為與表示記憶體的大寫字母相同的小寫形式。例如adder、fau、a、b、c、r1<15:0>分別用來表示加法器ADDER,浮點(diǎn)加法器FAU,寄存器A、B、C和R1<15:0>的輸出線名,其中<15:0>表示位寬,當(dāng)一個(gè)連線是由多個(gè)不同的信號組合而成時(shí),用{,}表示,例如{r1<15:8>,r0<7:0>}表示由R1和R0兩個(gè)寄存器的輸出線組合而成的新的連線,其中r1<15:8>為它的高8位,r0<7:0>為它的低8位。
3、最小時(shí)間成分集合T及其連接關(guān)系Ct
1)T=正數(shù)
2)Ct={max,+},分別表示取時(shí)間最大值和時(shí)間相加。如果OP操作關(guān)系為串行執(zhí)行,則時(shí)間關(guān)系為時(shí)間相加;如果OP操作關(guān)系為并行執(zhí)行,則時(shí)間關(guān)系為取時(shí)間的最大值。
4.最小控制成分集合CTRL及其連接關(guān)系Cctrl
1)CTRL={Operator,IDS,CtrlL}
(1)Operator表示可重構(gòu)部件的操作算子集合,由于可重構(gòu)部件能實(shí)現(xiàn)不同體系結(jié)構(gòu)的部件所具有的功能,因此同一個(gè)部件在使用界面上也是是實(shí)現(xiàn)上述功能的操作集合;
(2)IDS表示與可重構(gòu)部件相關(guān)的標(biāo)識集合,它是可重構(gòu)部件的兼容目標(biāo)所產(chǎn)生的標(biāo)識的集合;
(3)CtrlL表示對各可控節(jié)點(diǎn)的控制邏輯,控制邏輯既包含時(shí)序電路如計(jì)數(shù)器、鎖存器,又包含組合邏輯如譯碼器等,它的輸入是算子和標(biāo)識以及時(shí)鐘和中斷信號等系統(tǒng)信號,輸出為各可控節(jié)點(diǎn)上的編碼。
算子和標(biāo)識信號都用相應(yīng)的大寫形式來表示,控制邏輯中的寄存器可控節(jié)點(diǎn)由一組通路信號和鎖存信號對(MRi,LRi)來表示,MRi,LRi的產(chǎn)生邏輯由布爾代數(shù)來描述,對于通路可控節(jié)點(diǎn)由MP來表示,MP的產(chǎn)生邏輯由布爾代數(shù)描述。
2)Cctrl={·,+},分別表示順序控制和同時(shí)控制。
在進(jìn)行可重構(gòu)部件設(shè)計(jì)時(shí),存在以下設(shè)計(jì)規(guī)則
1.可重構(gòu)設(shè)計(jì)資源規(guī)則(圖8a)滿足OP集合串行疊加的資源需求是完成所有OP在不同時(shí)標(biāo)下所需要的對應(yīng)資源的并集。
2.可重構(gòu)設(shè)計(jì)連接規(guī)則(圖8b)串行疊加(完成多種功能的電路描述進(jìn)行疊加,但在同一時(shí)刻只有一種功能有效)時(shí),相同的數(shù)據(jù)來源可以合并,不同的數(shù)據(jù)來源并行排列,同時(shí)改變相應(yīng)的選通控制條件。
3.可重構(gòu)設(shè)計(jì)控制規(guī)則(圖8c)滿足OP串行疊加的控制描述為疊加前各OP的控制描述的并集,對相同操作的新的控制條件為原條件的或關(guān)系。
4.可重構(gòu)設(shè)計(jì)時(shí)序規(guī)則(圖8d)OP串行疊加后的關(guān)鍵路徑為疊加前各OP的關(guān)鍵路徑與各自增加的開關(guān)電路的延時(shí)值之和的最大值。
下面以可重構(gòu)寄存器堆部件為例介紹可重構(gòu)部件的設(shè)計(jì)方法。
定義可重構(gòu)寄存器堆為這樣的一種寄存器堆,當(dāng)使用指定范圍內(nèi)的不同類型的指令訪問該寄存器堆時(shí),它能夠適應(yīng)指令的變化而改變自身結(jié)構(gòu),使之表現(xiàn)出與所訪問的指令相同類型的硬件特性。
寄存器堆的可重構(gòu)設(shè)計(jì)是在寄存器可重構(gòu)設(shè)計(jì)理論模型的基礎(chǔ)上通過寄存器堆的設(shè)計(jì)優(yōu)化方法來實(shí)現(xiàn)的。定義寄存器堆的設(shè)計(jì)優(yōu)化為寄存器操作集合(OPSETR)在一個(gè)最優(yōu)電路(ER、CR、CTRLR)上的實(shí)現(xiàn)。寄存器堆設(shè)計(jì)優(yōu)化研究的主要內(nèi)容是OPR疊加、逐步求精過程中的優(yōu)化規(guī)則,其結(jié)果是設(shè)計(jì)優(yōu)化規(guī)則集合——RULE_DESIGN。寄存器堆可重構(gòu)設(shè)計(jì)方法是一種正向設(shè)計(jì),其核心是根據(jù)需求分析確定算子集合,這需要對該硬件結(jié)構(gòu)有足夠的了解。
圖9為可重構(gòu)寄存器堆的外框圖,該寄存器堆是在普通的具有4個(gè)隨機(jī)讀端口和4個(gè)隨機(jī)寫端口的隨機(jī)讀寫寄存器堆的基礎(chǔ)上通過硬件疊加而成的,它可以完成普通隨機(jī)讀寫寄存器堆的讀寫操作、SPARC-V9通用寄存器堆的寄存器窗口操作、Itanium通用寄存器堆的移動寄存器窗口和寄存器旋轉(zhuǎn)操作,其輸入為4個(gè)寫端口的數(shù)據(jù)來源,和完成寄存器堆隨機(jī)讀寫操作、寄存器窗口操作和移動寄存器窗口及寄存器旋轉(zhuǎn)操作的控制型號,輸出為4個(gè)讀端口的數(shù)據(jù)以及寫沖突標(biāo)識和窗口溢出標(biāo)識。上述標(biāo)識中寫沖突標(biāo)識的產(chǎn)生原因?yàn)閮蓚€(gè)寫操作的目標(biāo)地址相同;窗口溢出標(biāo)識包括上溢和下溢,當(dāng)窗口已滿時(shí),再進(jìn)行SAVE操作將產(chǎn)生上溢標(biāo)識,當(dāng)窗口已空,再進(jìn)行RESTORE操作將產(chǎn)生下溢標(biāo)識,窗口溢出后,由自陷處理程序控制寄存器堆與存儲器交換數(shù)據(jù),直到能完成所要求的操作。
圖9a為可重構(gòu)寄存器堆用作隨機(jī)讀寫寄存器堆時(shí)在體系界面上的特征。當(dāng)用作隨機(jī)讀寫寄存器堆時(shí),可重構(gòu)寄存器堆在體系界面上看,具有4個(gè)讀端口和4個(gè)寫端口,每個(gè)讀/寫端口可以訪問128個(gè)寄存器。對讀寫端口的控制是由RANDOMPATH1、RANDOMPATH2、RANDOMPATH3、RANDOMPATH4、RANDOMRFW1、RANDOMRFW2、RANDOMRFW3、RANDOMRFW4等8個(gè)算子來控制的。
RANDOMPATHi(I=1-4)算子是四個(gè)路由算子,控制4個(gè)讀端口的隨機(jī)讀操作,以RANDOMPATH1為例介紹如下
1)算子形態(tài)包含一個(gè)數(shù)據(jù)來源域RSRANDOM1<6:0>,通過第一隨機(jī)讀端口控制從包含128個(gè)寄存器的寄存器堆中選擇數(shù)據(jù)讀出;
2)匯編語法RANDRD1<數(shù)據(jù)來源>;
其中,數(shù)據(jù)來源為R0-R127。
3)操作描述
完成數(shù)據(jù)來源的選通,并將選通的結(jié)果寫入寄存器堆的輸出總線上,一個(gè)具體的操作數(shù)選通過程為由路由算子從確定的寄存器中選通數(shù)據(jù),再由功能算子或數(shù)據(jù)算子等的操作數(shù)來源控制編碼從該數(shù)據(jù)通路上取已選定的數(shù)據(jù)進(jìn)行操作。路由算子控制下選通的數(shù)據(jù)應(yīng)當(dāng)是在前一個(gè)周期穩(wěn)定的數(shù)據(jù)。路由算子所屬的總線保持最近一次PATH被調(diào)用時(shí)的狀態(tài),且總線的狀態(tài)可以在中斷時(shí)被保護(hù)和恢復(fù)。
4)使用約束配合功能算子、數(shù)據(jù)算子和復(fù)合算子。
RANDOMRFWi(i=1-4)為四個(gè)數(shù)據(jù)算子,分別控制寄存器堆的四個(gè)隨機(jī)寫端口,以RANDOMRFW1為例介紹如下
1)算子形態(tài)
其中RDRANDO1<6:0>為目的操作數(shù)地址,RSRFRANDW1<1:0>為數(shù)據(jù)來源控制信號,用于控制4路數(shù)據(jù)來源讀端口數(shù)據(jù)PRD1,功能部件結(jié)果總線AUDD,立即數(shù)IMMD和存儲端口MD0的選通。
2)匯編語法RANDWR1<目的寄存器><數(shù)據(jù)來源>
其中,目的寄存器為R0-R127,數(shù)據(jù)來源為PRD1,AUDD,IMMD和MD0。
3)操作描述
單周期算子,完成數(shù)據(jù)來源的選通,并將選通的結(jié)果寫入當(dāng)前寄存器窗口中的某一寄存器,該寄存器由算子中的目的寄存器域確定。
4)使用約束
由于所述<數(shù)據(jù)來源>定義的是“通路”,而不是用戶可見的具體寄存器,因此配合RANDOMRFW1算子,應(yīng)當(dāng)同時(shí)使用路由算子實(shí)現(xiàn)具體寄存器的選擇。
5)異常
當(dāng)兩個(gè)隨機(jī)寫算子同時(shí)作用,而且目的寄存器域相同時(shí),產(chǎn)生寫沖突異常。
圖9b為可重構(gòu)寄存器堆用作寄存器窗口時(shí)在體系界面上的特征,當(dāng)用作寄存器窗口時(shí),可重構(gòu)寄存器堆在體系結(jié)構(gòu)界面上看,是一個(gè)由8個(gè)窗口構(gòu)成的循環(huán)堆棧,其操作符合SPARC V9的規(guī)范。
SPARC-V9規(guī)范是SPARC系列中的64位處理器,由SPARCInternational的SPARC體系結(jié)構(gòu)委員會于1993年發(fā)布。對SPARC處理器來說,任何時(shí)候用戶可見的通用寄存器都為32個(gè),其中R0-R7為全局寄存器(Globals),R
為全0,只讀;R8-R15為輸出寄存器(outs),R16-R23為局部寄存器(locals);R24-R31為輸入寄存器(ins)。SPARC的通用寄存器的個(gè)數(shù)與實(shí)現(xiàn)有關(guān),可以從64個(gè)到528個(gè)不等,對應(yīng)兩組全局寄存器,和3至32個(gè)與機(jī)器相關(guān)的包含16個(gè)寄存器的寄存器組,寄存器組重疊構(gòu)成寄存器窗口,寄存器長度64位。每個(gè)寄存器窗口的輸入寄存器和輸出寄存器分別與相鄰的兩個(gè)寄存器窗口重疊,窗口號為CWP-1(CWP為當(dāng)前窗口指針)的寄存器窗口的輸出寄存器(對寄存器窗口中的物理寄存器個(gè)數(shù)NWINDOWS取模)與當(dāng)前窗口的輸入寄存器重疊,當(dāng)前窗口的輸出寄存器與窗口號為CWP+1的寄存器窗口的輸入寄存器重疊(對寄存器窗口中的物理寄存器個(gè)數(shù)NWINDOWS取模),局部寄存器對每個(gè)寄存器窗口來說是唯一的。實(shí)際軟件可用的窗口數(shù)比硬件實(shí)現(xiàn)的窗口數(shù)少1,因?yàn)樽詈笠粋€(gè)寄存器窗口的輸出與最老的一個(gè)寄存器窗口的輸入重疊將沖掉有效數(shù)據(jù)。過程調(diào)用指令(CALL和JMPL)并不改變CWP,一個(gè)過程可以被調(diào)用而不改變窗口。
寄存器窗口的控制界面是通過SPARC-V9的指令分析得到的。指令的分析過程如下。
SPARC-V9指令集合共包含135條RISC指令,指令長度32位,指令格式分4類,每種格式的指令根據(jù)各個(gè)控制域的取值不同分成不同的指令形態(tài),共有31種不同的指令形態(tài)。按照指令的功能不同可以將SPARC指令分為如下幾類存儲訪問指令、存儲同步指令、整數(shù)運(yùn)算指令、轉(zhuǎn)移控制指令、條件賦值指令、寄存器窗口管理指令、狀態(tài)寄存器訪問指令、特權(quán)寄存器訪問指令、浮點(diǎn)操作指令,與實(shí)現(xiàn)相關(guān)的指令和保留指令。
SPARC-V9通用寄存器堆相關(guān)指令分兩大類
第一類指令如存儲訪問、整數(shù)運(yùn)算、轉(zhuǎn)移控制、條件賦值、狀態(tài)寄存器訪問等,只使用寄存器窗口的普通讀寫功能,即對應(yīng)當(dāng)前活動窗口(32個(gè)用戶可見寄存器)的讀寫,對寄存器堆的操作功能比較單一;
第二類指令為寄存器窗口管理指令,完成對窗口及其狀態(tài)的控制。分別介紹如下
1.SAVE和RESTORE指令
1)匯編語法
save reg(rs1),reg_or_imm,reg(rd)
restore reg(rs1),reg_or_imm,reg(rd)
2)指令形態(tài)
或者,
3)執(zhí)行過程
SAVE指令提供一個(gè)使用新的寄存器窗口來執(zhí)行的例行程序。舊窗口的輸出寄存器OUT變?yōu)樾麓翱诘妮斎爰拇嫫鱅N,新窗口的OUT和局部寄存器LOCAL中包含的值為0或者正在執(zhí)行的過程的值,即本過程看到的是一個(gè)干凈的窗口;RESTORE指令恢復(fù)由當(dāng)前過程執(zhí)行的最后一個(gè)SAVE指令所保存的寄存器窗口。老窗口中的輸入寄存器變?yōu)樾麓翱谥械妮敵黾拇嫫?,新窗口中的輸入和局部寄存器包含前一窗口的值?br> 當(dāng)不產(chǎn)生SPILL/FILL自陷時(shí),SAVE和RESTORE指令的作用相當(dāng)于加法指令,只是它們的源操作數(shù)r(rs1)和/或r(rs2)讀自老窗口(即通過原來的當(dāng)前窗口指針CWP尋址的窗口),而加法結(jié)果寫入新窗口的r(rd)(即 由新的CWP尋址的窗口)。執(zhí)行SAVE指令將使得可保存寄存器窗口個(gè)數(shù)寄存器CANSAVE減一,可恢復(fù)寄存器窗口個(gè)數(shù)CANRESTORE增一;執(zhí)行RESTORE指令將使得寄存器CANRESTORE減一,寄存器CANSAVE增一。
4)異常
A.如果CANSAVE=0,SAVE指令的執(zhí)行將導(dǎo)致WINDOW_SPILL異常;
B.如果CANSAVE≠0,但干凈的窗口數(shù)為0,即
(CLEANWIN-CANRESTORE)=0時(shí),SAVE指令的執(zhí)行將引起
WINDOW_CLEAN異常;
C.如果CANRESTORE=0,RESTORE指令的執(zhí)行將引起WINDOW_FILL異常。
2.SAVED和RESTORED指令
1)匯編語法SAVED,RESTORED
2)指令形態(tài)
3)執(zhí)行過程
SAVED指令的執(zhí)行使得CANSAVE增一,如果OTHERWIN為0,CANRESTORE減一,如果OTHERWIN不為0,OTHERWIN減一,SAVED指令可以被SPILL自陷控制器用來表示一個(gè)窗口的SPILL已經(jīng)成功地完成;
RESTORED指令使得CANRESTORE增一,如果OTERWIN為0,CANSAVE減一,如果OTHERWIN不為0,OTHERWIN減一。此外,如果CLEANWIN不等于NWINDOWS,RESTORED指令將使CLEANWIN增一。RESTORED指令可以被FILL自陷控制器來表示一個(gè)窗口已經(jīng)被成功地FILL。
3.FLUSHW指令
1)匯編語法FLUSHW
2)指令形態(tài)
3)執(zhí)行過程當(dāng)任何一個(gè)當(dāng)前窗口之外的寄存器窗口包含有效數(shù)據(jù)時(shí),F(xiàn)LUSHW指令的執(zhí)行將通過重復(fù)SPILL自陷,使得當(dāng)前窗口以外的所有有效窗口都被溢出到存儲器。包含有效數(shù)據(jù)的寄存器窗口數(shù)用下式計(jì)算NWINDOWS-2-CANSAVE,如果計(jì)算結(jié)果為0,F(xiàn)LUSHW無效,相當(dāng)于一個(gè)空操作。
根據(jù)上述指令分析,設(shè)計(jì)可重構(gòu)寄存器堆在用作寄存器窗口時(shí)對應(yīng)的算子如下。為了簡便起見,只考慮寄存器堆的讀寫端口為3(兩讀一寫)的基本需求。
1.讀算子WINPATH1<4:0>;WINPATH2<4:0>
1)算子形態(tài)分別包含RSWIN1NO<4:0>和RSWIN2NO<4:0>兩個(gè)域,用于控制兩個(gè)讀出端口的操作,對應(yīng)于指令中的RS1和RS2域;
2)匯編語法
WINRD1<源寄存器>
WINRD2<源寄存器>
作為<源寄存器>的寄存器操作數(shù)編碼如下
其中,G0-G7表示全局寄存器(Globle),00-07表示輸出寄存器(Out),L0-L7表示局部寄存器(Local),I0-I7表示輸入寄存器(In)。
3)操作描述
完成數(shù)據(jù)來源的選通,并將選通的結(jié)果寫入寄存器堆的輸出總線上,一個(gè)具體的操作數(shù)選通過程為由路由算子從確定的寄存器中選通數(shù)據(jù),再由功能算子或數(shù)據(jù)算子等的操作數(shù)來源控制編碼從該數(shù)據(jù)通路上取已選定的數(shù)據(jù)進(jìn)行操作。路由算子控制下選通的數(shù)據(jù)應(yīng)當(dāng)是在前一個(gè)周期穩(wěn)定的數(shù)據(jù)。路由算子所屬的總線保持最近一次PATH被調(diào)用時(shí)的狀態(tài),且總線的狀態(tài)可以在中斷時(shí)被保護(hù)和恢復(fù)。
4)使用約束
配合路由算子,應(yīng)當(dāng)使用其它的功能算子、數(shù)據(jù)算子或復(fù)合算子。
2.寫算子WINRFW<6:0>,控制窗口狀態(tài)下的寫操作。
1)算子形態(tài)
其中RDWNO<4:0>為目的寄存器地址,對應(yīng)于指令中的RD域,RSRFW<1:0>為數(shù)據(jù)來源控制信號,用于控制4路數(shù)據(jù)來源讀端口數(shù)據(jù)PRD2,功能部件結(jié)果總線AUDD,立即數(shù)IMMD和存儲端口MD0的選通。
2)匯編語法WINWR<目的寄存器><數(shù)據(jù)來源>
其中,目的寄存器的操作符和地址編碼與讀算子的源寄存器相同,數(shù)據(jù)來源則為PRD2,AUDD,IMMD和MD0。
3)操作描述
單周期算子,完成數(shù)據(jù)來源的選通,并將選通的結(jié)果寫入當(dāng)前寄存器窗口中的某一寄存器,該寄存器由算子中的目的寄存器域確定。
4)使用約束
由于所述<數(shù)據(jù)來源>定義的是“通路”,而不是用戶可見的具體寄存器,因此,配合WINRFW算子,應(yīng)當(dāng)同時(shí)使用路由算子實(shí)現(xiàn)具體寄存器的選擇。
5)異常
G0恒為0,當(dāng)目的操作數(shù)為G0時(shí),操作無效。
3.DAU<5:0>算子
1)算子功能
完成64位整數(shù)的加減法、帶進(jìn)位加減法、SAVE和RESTORE。本文只討論該算子用于SAVE和RESTORE操作時(shí)的情況。
2)匯編語法
SAVEregrs1,reg_or_imm,regrd
RESTORE regrs1,reg_or_imm,regrd
3)DAU<5:0>算子格式
當(dāng)OPDAU<3:0>=1111時(shí),執(zhí)行SAVE操作;當(dāng)OPDAU<3:0>=1101時(shí),執(zhí)行RESTORE操作。
4)執(zhí)行過程描述
DAU是單周期算子。首先,進(jìn)行操作數(shù)選通,然后根據(jù)操作碼進(jìn)行64位加法運(yùn)算,用于SAVE和RESTORE時(shí),源操作數(shù)r(rs1)和/或r(rs2)讀自老窗口(即通過原來的當(dāng)前窗口指針CWP尋址的窗口),而加法結(jié)果寫入新窗口的r(rd)(即由新的CWP尋址的窗口),同時(shí)產(chǎn)生錯(cuò)誤標(biāo)識或其他標(biāo)識信號,并根據(jù)編碼決定是否修改CCR標(biāo)識寄存器。
SAVE操作提供一個(gè)使用新的寄存器窗口來執(zhí)行的例行程序(按照SPARC V9體系結(jié)構(gòu)的定義,SAVE有效時(shí)CWP加1),RESTORE操作恢復(fù)由當(dāng)前過程執(zhí)行的最后一個(gè)SAVE指令所保存的寄存器窗口(按照SPARC V9體系結(jié)構(gòu)的定義,RESTORE有效時(shí)CWP減1)。同時(shí)SAVE操作和RESTORE操作將修改狀態(tài)寄存器CANSAVE和CANRESTORE。CANSAVE用于記錄位于CWP后未被使用的寄存器窗口數(shù),CANRESTORE用來記錄在CWP之前的已經(jīng)被當(dāng)前程序使用的寄存器窗口數(shù)。SAVE操作使得寄存器CANSAVE減一,寄存器CANRESTORE增一,CANSAVE的復(fù)位值為物理窗口數(shù)減2(為當(dāng)前窗口和重疊窗口),當(dāng)CANSAVE寄存器為0時(shí),執(zhí)行SAVE操作將造成窗口上溢;RESTORE操作使得寄存器CANSAVE增一,寄存器CANRESTORE減一,CANRESTORE的復(fù)位值為0,當(dāng)CANRESTORE寄存器的值為0時(shí),執(zhí)行RESTORE操作將產(chǎn)生窗口下溢。
4.OPWIN<1:0>算子
1)算子功能管理窗口狀態(tài),執(zhí)行SAVED、RESTORED和FLUSHW操作。
2)匯編語法
SAVED
RESTORED
FLUSHWIN
3)OPWIN<1:0>算子格式
OPWIN<1:0>,編碼如下,
4)執(zhí)行過程描述
執(zhí)行SAVED操作使得CANSAVE增一;如果狀態(tài)寄存器OTHERWIN為0,CANRESTORE減一,如果OTHERWIN不為0,OTHERWIN減一,其中OTHERWIN為含當(dāng)前地址空間之外的地址空間的有效值。
執(zhí)行RESTORED操作使得CANRESTORE增一;如果OTERWIN為0,CANSAVE減一,如果OTHERWIN不為0,OTHERWIN減一。此外,如果狀態(tài)寄存器CLEANWIN不等于NWINDOWS(為物理實(shí)現(xiàn)的寄存器窗口總數(shù)),RESTORED指令將使CLEANWIN增一,其中CLEANWIN指示可以被SAVE指令使用而不會產(chǎn)生CLEAN_WIN異常的寄存器窗口數(shù)。
執(zhí)行FLUSHW操作的情況分兩種當(dāng)NWINDOWS-2-CANSAVE不為0時(shí),產(chǎn)生一個(gè)SPILL自陷,由自陷處理程序控制,在完成一個(gè)窗口的溢出后將重新執(zhí)行FLUSHW操作,直到除當(dāng)前活動窗口之外的所有寄存器窗口被溢出到存儲器;當(dāng)NWINDOWS-2-CANSAVE為0時(shí),F(xiàn)LUSHW等效于一個(gè)空操作(NOP)。
圖9c為可重構(gòu)寄存器堆用做移動寄存器窗口及旋轉(zhuǎn)寄存器時(shí)在體系界面上的特征。當(dāng)用作移動寄存器窗口及旋轉(zhuǎn)寄存器時(shí),其操作符合Itanium體系結(jié)構(gòu)的操作規(guī)范。
Itanium通用寄存器包括128個(gè)寄存器GR0-GR127,對所有權(quán)限的程序均可見,每一個(gè)寄存器為65位,最高位為NAT(Not a thing)位,用于預(yù)測異常標(biāo)識,當(dāng)NAT為1時(shí)表示寄存器包含一個(gè)延遲異常標(biāo)志,此時(shí)寄存器內(nèi)的數(shù)據(jù)是否有效與具體執(zhí)行有關(guān),本發(fā)明的可重構(gòu)寄存器堆不支持此項(xiàng)功能,因此寄存器寬度僅為64位。
Itanium通用寄存器堆中的寄存器被分為兩個(gè)子集GRO-GR31為靜態(tài)通用寄存器域,GR0為全0,只讀;GR32-GR127為堆棧通用寄存器域。靜態(tài)寄存器GR0-GR31對所有過程可見,而堆棧寄存器域中對應(yīng)于每一個(gè)過程有一個(gè)相應(yīng)的移動寄存器窗口(shifting window),窗口的大小可以由軟件定義,在0-96之間變化,窗口之間通過寄存器重疊在CALL和RETuRN操作時(shí)自動交換參數(shù),從而避免對存儲器的訪問。過程切換時(shí),靜態(tài)寄存器必須按照軟件慣例進(jìn)行SAVE和RESTORE操作,而堆棧寄存器中移動窗口的切換由硬件自動完成,不需要顯式的軟件干預(yù),寄存器的重命名對應(yīng)用程序來說是不可見的。移動窗口大小由SOF和SOL兩個(gè)參數(shù)來決定,SOF和SOL由指令設(shè)定,SOF為移動窗口的大小,初值為96,SOL為窗口中局部寄存器的個(gè)數(shù)(包括輸入寄存器和局部寄存器),初值為0,輸出寄存器的個(gè)數(shù)兩者之差。執(zhí)行CALL指令時(shí),當(dāng)前活動窗口的GR32的物理地址變?yōu)樯弦淮翱谥蠫R32的地址與上一窗口的SOL之和,新窗口的大小SOF為上一窗口的輸出寄存器域,新窗口的SOL和SOR為0。執(zhí)行RETURN指令時(shí)恢復(fù)原來的SOF和SOL。實(shí)際的物理堆棧寄存器個(gè)數(shù)是與實(shí)現(xiàn)有關(guān)的,但必須為16的偶數(shù)倍,最少為96個(gè)。
堆棧寄存器的一部分可以由軟件定義為旋轉(zhuǎn)寄存器,用來加速循環(huán)處理。當(dāng)寄存器發(fā)生旋轉(zhuǎn)時(shí),實(shí)際訪問的物理寄存器地址計(jì)算如下
物理寄存器號=(指令給出的寄存器號<6:0>+RRB)mod旋轉(zhuǎn)寄存器域。
其中,RRB為旋轉(zhuǎn)寄存器基寄存器,7位,初值為0,每完成一次疊代后減一。旋轉(zhuǎn)寄存器的旋轉(zhuǎn)域定義為從GR32開始,大小為8*SOR<3:0>,SOR可由軟件設(shè)定,初值為0,最大為12,即旋轉(zhuǎn)域的最大值為96。只有當(dāng)RRB為0時(shí),指令才能改變寄存器堆棧中旋轉(zhuǎn)域的大小。通常,由軟件保證旋轉(zhuǎn)域不與活動窗口的輸出域重疊,或者在設(shè)置輸出參數(shù)寄存器之前首先將RRB置0。
對Itanium通用寄存器堆的相關(guān)指令分析如下。
Itanium處理器采用IA-64體系結(jié)構(gòu),指令執(zhí)行以指令組為單位,指令組可以由一條或任意多條指令束(bundle)組成。每個(gè)128位的指令束包含三個(gè)41位指令槽和一個(gè)5位的模板信息域,指令41位長,分6種類型整數(shù)ALU類、非ALU整數(shù)類,存儲器類,浮點(diǎn)類,分支類和擴(kuò)展類指令,共有110多種指令形態(tài)。指令執(zhí)行從某個(gè)給定的指令束地址和某個(gè)指令槽開始,包括直到第一個(gè)stop或轉(zhuǎn)移分支為止的所有按序增長的指令槽和指令束,IA-64體系結(jié)構(gòu)允許發(fā)射不同指令束中的多條單獨(dú)的指令,也可以在一個(gè)時(shí)鐘周期發(fā)射多條指令束。IA-64指令集中與通用寄存器堆相關(guān)的指令也可以分為兩大類
第一類是對靜態(tài)寄存器和當(dāng)前移動寄存器窗口FRAME的讀寫操作,以ADD指令為例,形態(tài)如下
第二類指令實(shí)現(xiàn)對寄存器堆棧和旋轉(zhuǎn)寄存器的控制,分別介紹如下
1.Alloc Stack Frame
1)匯編語法
(qp)allocr1=ar.pfs,i,1,o,r
2)指令形態(tài)
3)執(zhí)行過程一個(gè)新的移動寄存器窗口被分配到通用寄存器堆棧上,Previous Function State(PFS)寄存器被復(fù)制到通用寄存器GR1上。移動寄存器窗口大小的改變是立即完成的,寫GR1以及隨后的其它操作都在新的移動寄存器窗口上進(jìn)行。i,1,o,r分別表示輸入寄存器、局部寄存器、輸出寄存器和旋轉(zhuǎn)寄存器的大小范圍。對于新的移動寄存器窗口,SOF(size of local frame)為i、l和o三者之和,SOL(size of local regeon)為i和1之和,輸入寄存器和局部寄存器在物理上沒有區(qū)分,旋轉(zhuǎn)域小于SOF,大小為8的倍數(shù)。
4)異常當(dāng)alloc指令試圖修改SOR(size of local rotating)域,而RRB寄存器不為0時(shí),產(chǎn)生Reserved register/Field異常;如果SOF大于96,或者SOR大于SOF,產(chǎn)生非法操作異常;如果沒有足夠的寄存器來完成移動寄存器窗口的分配,處理機(jī)將產(chǎn)生等待STORE操作的完成,并產(chǎn)生相關(guān)異常。
2.Branch
1)匯編語法
(qp)br.btype.bwh.ph.dh target25
(qp)br.btype.bwh.ph.dh b1=target25
br.btype.bwh.ph.dh target25
br.ph.dhtarget25
(qp)br.btype.bwh.ph.dhb2
(qp)br.btype.bwh.ph.dhb1=b2
(qp)br.ph.dh b2
2)指令形態(tài)
A.IP-relative分支
B.Indirect分支
3)執(zhí)行過程完成分支條件判斷,產(chǎn)生分支操作或者繼續(xù)后續(xù)操作。對于IP相關(guān)型分支,匯編中的target25為分支目標(biāo)地址標(biāo)志,實(shí)際的目標(biāo)地址為imm21=target25-IP>>4;對于indirect型分支,目標(biāo)地址為BRb2。分支的類型與功能如下表所示
各分支類說明如下
(1)cond,如果Qualifying謂詞(qp)為1,產(chǎn)生分支,否則不發(fā)生。
(2)Call,如果qp為1,產(chǎn)生分支,同時(shí)有如下操作CFM(current frame marker)、EC(尾聲計(jì)數(shù)器)和當(dāng)前權(quán)限被SAVE到PFS(previous functional state)寄存器;調(diào)用者的移動寄存器窗口被SAVE,被調(diào)用者被自動分配一個(gè)新的移動寄存器窗口,大小為調(diào)用者是輸出寄存器域;CFM中的RRB寄存器被清0;返回LINK值被寫入BR b1。
(3)return,如果qp為1,產(chǎn)生分支,同時(shí)有如下操作由PFS寄存器恢復(fù)CFM、EC和當(dāng)前權(quán)限;調(diào)用者的移動寄存器窗口被RESTORE。
(4)ctop和cexit,執(zhí)行過程如圖9d所示。操作描述如下。
ctop或cexit操作有效,
循環(huán)計(jì)數(shù)器LC不等于0,
LC減一,尾聲計(jì)數(shù)器EC不變,RRB減一,寄存器旋轉(zhuǎn);
循環(huán)計(jì)數(shù)器LC等于0
尾聲計(jì)數(shù)器EC大于1
LC不變,EC減1,RRB減1,寄存器旋轉(zhuǎn);
尾聲計(jì)數(shù)器EC等于1
LC不變,EC減1,RRB減1,寄存器旋轉(zhuǎn);
尾聲計(jì)數(shù)器EC等于0
LC不變,EC不變,RRB不變,循環(huán)退出。
(5)wtop和wexit,執(zhí)行過程如圖9e所示。操作描述如下。
謂詞寄存器PR[qp]不等于0,
尾聲計(jì)數(shù)器EC不變,RRB減一,寄存器旋轉(zhuǎn);
謂詞寄存器PR[qp]等于0
尾聲計(jì)數(shù)器EC大于1
EC減1,RRB減1,寄存器旋轉(zhuǎn);
尾聲計(jì)數(shù)器EC等于1
EC減1,RRB減1,寄存器旋轉(zhuǎn);
尾聲計(jì)數(shù)器EC等于0
EC不變,RRB不變,循環(huán)退出。
(6)cloop,LC不為0時(shí),LC減一,分支產(chǎn)生。
(7)IA,無條件轉(zhuǎn)移
3.Clear RRB
1)匯編語法
clrrrb
clrrrb.pr
2)指令形態(tài)
3)執(zhí)行過程ALL型將所有RRB(通用寄存器堆、浮點(diǎn)寄存器堆和謂詞寄存器堆)清0,PRED型只將謂詞寄存器堆的RRB寄存器清0。
4)異常該指令必須為指令組中的最后一條指令,否則產(chǎn)生非法操作錯(cuò)。
4.Cover Stack Frame
1)匯編語法cover
2)指令形態(tài)
3)執(zhí)行過程分配一個(gè)新的大小為0的堆棧移動寄存器窗口,該移動寄存器窗口中不包含任何前一移動寄存器窗口中的寄存器,RRB被復(fù)位。
4)異常該指令必須為指令組中的最后一條指令,否則產(chǎn)生非法操作錯(cuò)。
5.Flush register stack
1)匯編語法flushrs
2)指令形態(tài)
3)執(zhí)行過程所有堆棧寄存器中DIRTY域(包括所有先前過程移動寄存器窗口中尚未存入后援寄存器中的寄存器)中的寄存器被寫入后援存儲器。
4)異常該指令必須為指令組中的第一條指令,且必須位于指令束中的SLOT0和SLOT1,否則結(jié)果無定義。
6.Load register stack
1)匯編語法loadrs
2)指令形態(tài)
3)執(zhí)行過程該指令保證存儲器中位于當(dāng)前BSP指針以前的一定數(shù)量的值被寫入堆棧寄存器的DIRTY域中,所有其它寄存器被標(biāo)志為invalid,但不存入后援存儲器。LOAD的數(shù)據(jù)多少由RSC.loadrs寄存器決定,當(dāng)該寄存器為0時(shí),其效果為將當(dāng)前移動寄存器窗口以外的所有寄存器置為無效。
4)異常該指令必須為指令組中的第一條指令,且必須位于指令束中的SLOT0和SLOT1,否則結(jié)果無定義。
根據(jù)上述指令分析,設(shè)計(jì)算子如下。為了方便討論,只考慮3個(gè)寄存器端口(兩讀一寫)的基本需求,更多端口的寄存器堆算子設(shè)計(jì)方法完全相同。
1.讀算子ROTPATH1<6:0>;ROTPATH2<6:0>。
1)算子形態(tài)
分別包含RSROT1NO<6:0>和RSROT2NO<6:0>兩個(gè)域,用于控制兩個(gè)讀端口操作。
2)匯編語法
ROTRD1<源寄存器>
ROTRD2<源寄存器>
其中源寄存器為R0-R127中的任一寄存器。
3)操作描述
完成數(shù)據(jù)來源的選通,并將選通的結(jié)果寫入寄存器堆的輸出總線上,一個(gè)具體的操作數(shù)選通過程為由路由算子從確定的寄存器中選通數(shù)據(jù),再由功能算子或數(shù)據(jù)算子等的操作數(shù)來源控制編碼從該數(shù)據(jù)通路上取已選定的數(shù)據(jù)進(jìn)行操作。路由算子控制下選通的數(shù)據(jù)應(yīng)當(dāng)是在前一個(gè)周期穩(wěn)定的數(shù)據(jù)。路由算子所屬的總線保持最近一次PATH被調(diào)用時(shí)的狀態(tài),且總線的狀態(tài)可以在中斷時(shí)被保護(hù)和恢復(fù)。
4)使用約束
配合路由算子,應(yīng)當(dāng)使用其它的功能算子、數(shù)據(jù)算子或復(fù)合算子。
2.寫算子ROTRFW<8:0>,控制窗口狀態(tài)下的寫操作。
1)算子形態(tài)
其中RDRTO<6:0>為目的操作數(shù)地址,RSRFW<1:0>為數(shù)據(jù)來源控制信號,用于控制4路數(shù)據(jù)來源讀端口數(shù)據(jù)PRD3,功能部件結(jié)果總線AUDD,立即數(shù)IMMD和存儲端口MD0的選通。
2)匯編語法
ROTWR<目的寄存器><數(shù)據(jù)來源>
其中,目的寄存器為R0-R127中的任一寄存器,數(shù)據(jù)來源為PRD3,AUDD,IMMD和MD0。
3)操作描述
單周期算子,完成數(shù)據(jù)來源的選通,并將選通的結(jié)果寫入當(dāng)前寄存器窗口中的某一寄存器,該寄存器由算子中的目的寄存器域確定。
4)使用約束
由于所述<數(shù)據(jù)來源>定義的是“通路”,而不是用戶可見的具體寄存器,因此,配合ROTRFW算子,應(yīng)當(dāng)同時(shí)使用路由算子實(shí)現(xiàn)具體寄存器的選擇。
5)異常
R0恒為0,當(dāng)目的操作數(shù)為R0時(shí),操作無效。
注以上作為源操作數(shù)/目的操作數(shù)的寄存器R0-R127由7位地址順序編碼。
3.移動寄存器窗口分配算子Allocframe<17:0>
1)功能設(shè)置移動寄存器窗口長度、局部寄存器域和旋轉(zhuǎn)域的大小,旋轉(zhuǎn)域寄存器為一個(gè)4位寄存器,實(shí)際旋轉(zhuǎn)域的值為旋轉(zhuǎn)域寄存器的值左移3位。
2)算子形態(tài)
3)匯編語法
ALLOC#i,#l,#o,#r
//注sol=I+1,sof=I+1+o,sor=sor<<3。
4)操作描述
單周期算子,完成移動窗口大小及寄存器旋轉(zhuǎn)域設(shè)置,該算子執(zhí)行的結(jié)果將修改SOR,SOL和SOF寄存器。
4.分支控制算子BRANCH<3:0>
1)功能控制定循環(huán)和不定循環(huán)的分支操作。
2)算子形態(tài)
BTYPE<2:0>為類型控制域,編碼如下
RSTYPE<0>為地址來源控制域,控制地址來源為IMMD(RSTYPE<0>為0),SMDI(RSTYPE<0>為1)。
3)操作描述
對于CALL操作,將修改BOF寄存器(BOF為當(dāng)前窗口的第一個(gè)寄存器的物理地址),自動將原來的SOF-SOL區(qū)域設(shè)置成新的SOF域,窗口發(fā)生移動。
對于RETURN操作,恢復(fù)前一次的BOF、SOL和SOF,窗口反方向移動。
3)匯編語法
CTOP IMMD
CEXIT IMMD;
WTOP IMMD;
WEXIT IMMD;
CLOOP IMMD;
CALL IMMD;
CALL REG;
RETURN REG;
5.算子OPSTK<1:0>
1)功能管理堆棧狀態(tài),執(zhí)行clrrrb,cover,flushrs和Loadrs操作。
2)算子編碼
3)匯編語法
CLRRRB;
COVER;
FLUSHRS;
LOADRS;
4)執(zhí)行過程描述
CLRRRB操作有效時(shí),將RRB寄存器置0;
COVER操作有效時(shí),SOF,SOL,SOR和RRB寄存器全部清0;
FLUSHRS操作有效時(shí),如果BSP不等于BSPSTORE,執(zhí)行STORE操作;
LOADRS操作有效時(shí),所有在BSP和BSP-Number_of_Bytes之間的寄存器的值被LOAD進(jìn)寄存器堆棧,并被置為DIRTY狀態(tài)。
圖10為全局寄存器與窗口寄存器分離的寄存器窗口結(jié)構(gòu)示意圖。該寄存器窗口部件包括窗口寄存器堆地址轉(zhuǎn)換部件101,窗口寄存器堆102,全局寄存器堆103和數(shù)據(jù)輸出選擇部件104。
設(shè)寄存器窗口中的體系可見寄存器個(gè)數(shù)為2a,全局寄存器的個(gè)數(shù)為2b(b<a),則全局寄存器堆中包含的寄存器個(gè)數(shù)為2b,窗口寄存器堆中包含的物理寄存器個(gè)數(shù)為2m,對于固定窗口,m=b+1+k,k為非負(fù)整數(shù),對于移動窗口,2m≥2a-2b。
當(dāng)進(jìn)行寫操作時(shí),指令中的寄存器地址(路由算子中的寄存器源操作數(shù)和數(shù)據(jù)算子中的寄存器目的操作數(shù),位寬為a)中的經(jīng)過窗口寄存器堆地址轉(zhuǎn)換部件101轉(zhuǎn)換成符合窗口重疊特性的物理寄存器地址(位寬為m)訪問窗口寄存器堆102,同時(shí)指令地址的對應(yīng)于全局寄存器個(gè)數(shù)的低位地址[b-1:0]直接訪問全局寄存器堆103,在任一具體時(shí)刻,一個(gè)寫操作只能作用于全局寄存器堆和窗口寄存器堆兩者中的一個(gè),對寄存器堆的寫操作是否有效是通過寫地址使能信號來確定的。寫地址使能信號由寫算子使能信號和指令中寄存器地址的高位[a-1:b]進(jìn)行邏輯組合而成當(dāng)寫算子使能同時(shí)指令中寄存器地址高位為0時(shí),對全局寄存器堆的寫操作有效;寫算子使能同時(shí)指令中寄存器地址高位不全為0時(shí),對窗口寄存器的寫操作有效。全局寄存器堆和窗口寄存器堆的寫操作數(shù)據(jù)來源相同。
當(dāng)進(jìn)行讀操作時(shí),指令中的寄存器地址的[b-1:0]段直接訪問全局寄存器堆103,同時(shí)經(jīng)過窗口寄存器堆地址轉(zhuǎn)換部件101進(jìn)行地址轉(zhuǎn)換以后訪問窗口寄存器堆,地址轉(zhuǎn)換的原理與寫操作相同,由輸出數(shù)據(jù)選擇部件104從兩個(gè)分離寄存器堆的輸出數(shù)據(jù)之間選擇正確的數(shù)據(jù)輸出,輸出的條件為指令中寄存器地址的高位[a-1:b]是否為全0如果讀操作的地址高位[a-1:b]為全0,則對全局寄存器堆的讀操作有效,選擇全局寄存器堆的數(shù)據(jù)輸出;如果不為全0,則對窗口寄存器堆的讀操作有效,選擇窗口寄存器堆的數(shù)據(jù)輸出。
以上結(jié)構(gòu)不但適用于固定寄存器窗口的設(shè)計(jì),也適用于移動寄存器窗口的設(shè)計(jì)。這兩者之間的區(qū)別在于對于固定寄存器窗口的設(shè)計(jì),每個(gè)寄存器窗口中的寄存器個(gè)數(shù)以及寄存器輸入、局部和輸出域的大小固定;對于移動寄存器窗口的設(shè)計(jì),每個(gè)寄存器窗口中的寄存器個(gè)數(shù)以及寄存器局部域和輸出域大小可編程。兩者之間的聯(lián)系在于它們都包含一個(gè)全局寄存器(或稱靜態(tài)寄存器)域和一個(gè)窗口寄存器域(或稱堆棧區(qū)),全局寄存器對任意過程可見,而窗口寄存器域中的每一個(gè)窗口只對某一具體過程可見,窗口之間彼此重疊構(gòu)成一個(gè)循環(huán)堆棧,新窗口的輸入寄存器域包含舊窗口中的輸出寄存器域中的有效數(shù)據(jù),通過窗口的切換來減少對于存儲器的訪問,以提高程序的執(zhí)行效率。
以上兩種寄存器窗口的實(shí)現(xiàn)均可以采用圖10所示的部件來完成,兩者之間的差別主要在于窗口寄存器堆讀寫地址轉(zhuǎn)換部件的產(chǎn)生原理不同。圖10a和圖10b描述的是固定窗口設(shè)計(jì)中窗口寄存器堆的地址轉(zhuǎn)換部件,圖10c和圖10d描述的是移動窗口設(shè)計(jì)中窗口寄存器堆的地址轉(zhuǎn)換部件。
圖10a所示部件對應(yīng)于圖10中的窗口寄存器堆地址轉(zhuǎn)換部件101,用于固定寄存器窗口的窗口寄存器堆地址轉(zhuǎn)換。由于固定窗口的大小和寄存器輸入域、局部域和輸出域均是確定的,所以可以通過當(dāng)前窗口指針CWP唯一地確定寄存器的物理地址。固定窗口設(shè)計(jì)中的窗口寄存器堆地址轉(zhuǎn)換部件包括
CWP(當(dāng)前窗口指針)生成部件1011,其用于復(fù)位的復(fù)位值0,和用于控制CWP變化的復(fù)位信號RST、SAVE操作使能信號和RESTORE操作使能信號,其中SAVE和RESTORE信號是根據(jù)算子DAU的使能信號EDAU(低電平有效)和算子DAU的功能域進(jìn)行邏輯組合而產(chǎn)生的;其輸出為兩個(gè)不同時(shí)序的CWP的值CWP1和CWP2,分別用于讀地址和寫地址的生成,這是因?yàn)镾AVE操作和RESTORE操作的讀指針和寫指針的時(shí)序不同,即源操作數(shù)來自舊窗口(SAVE和RESTORE操作完成之前的窗口),而目的操作數(shù)來自新窗口(SAVE和RESTORE操作完成之前的窗口)。根據(jù)最新的SPARC體系結(jié)構(gòu)的定義,CWP的修改方式有兩類SPARC V8采用的方式是SAVE有效時(shí)CWP減1,RESTORE有效時(shí)CWP加1;SPARC V9采用的方式是SAVE有效時(shí)CWP加1,RESTORE有效時(shí)CWP減1。1011的具體實(shí)現(xiàn)將在圖10b中進(jìn)一步說明。
地址預(yù)處理部件1012,將指令中的各個(gè)寄存器地址減去定值2b。
CWP地址擴(kuò)展部件1013,將CWP邏輯左移,擴(kuò)充至m位,當(dāng)實(shí)現(xiàn)SPARCV9窗口地址轉(zhuǎn)換時(shí),還需要增加一次求補(bǔ)操作,以保證SAVE操作有效時(shí)CWP增一,同時(shí)第N+1窗口的輸入寄存器與第N窗口的輸出寄存器重疊。
加法部件1014。1011輸出的CWP1經(jīng)過1013的地址擴(kuò)展后的值與經(jīng)過1012預(yù)處理的讀地址在通過加法部件1014完成加法操作,得到最終的窗口寄存器堆讀操作的物理地址;1011輸出的CWP2經(jīng)過1013的地址擴(kuò)展后的值與經(jīng)過1012預(yù)處理的寫地址在通過加法部件1014完成加法操作,得到最終的窗口寄存器堆寫操作的物理地址。
圖10b以由8個(gè)窗口構(gòu)成的固定寄存器窗口的窗口寄存器堆地址轉(zhuǎn)換部件為例對圖10a作進(jìn)一步說明,其中a=5,b=3,k=3,m=b+1+k=7。每一個(gè)寄存器固定窗口包括32(2a)個(gè)寄存器,它們分別由8(2b)個(gè)全局寄存器,8個(gè)輸入寄存器、8個(gè)局部寄存器和8個(gè)輸出寄存器構(gòu)成,窗口個(gè)數(shù)為8(2k),總的物理寄存器的個(gè)數(shù)為136(2b+2m)。寄存器窗口的功能操作符合SPARC V9的規(guī)范,窗口寄存器堆地址轉(zhuǎn)換部件的實(shí)施介紹如下。
為了簡便起見,只討論兩個(gè)讀操作和一個(gè)寫操作并行執(zhí)行的情況,此時(shí)需要同時(shí)產(chǎn)生三個(gè)地址WINRP1,WINRP2和WINWP(兩讀一寫)。指令中的讀寫地址分別來自通路算子的寄存器源操作數(shù)域和數(shù)據(jù)算子的寄存器目的操作數(shù)域,地址寬度為5位,對應(yīng)于窗口中的32個(gè)寄存器。當(dāng)進(jìn)行讀寫操作時(shí),地址的低三位直接訪問全局寄存器組(包含8個(gè)寄存器),同時(shí)指令中的5位寄存器地址經(jīng)過圖10中的窗口寄存器堆地址轉(zhuǎn)換部件101轉(zhuǎn)換成符合窗口重疊規(guī)范的7位物理寄存器地址訪問圖10中的窗口寄存器堆102(包含128個(gè)寄存器)。
CWP生成部件1011’包括3個(gè)寄存器(3位,對應(yīng)于8個(gè)窗口),分別保存CWP,CWP-1和CWP+1的值,按照SPARC V9體系結(jié)構(gòu)的定義,當(dāng)SAVE操作有效時(shí)選擇CWP的增1值,當(dāng)RESTORE操作有效時(shí)選擇CWP的減1值,不進(jìn)行SAVE和RESTORE操作時(shí)選擇CWP原值,IMMD(在優(yōu)選實(shí)施方式中為0)的輸入通路用于復(fù)位,當(dāng)復(fù)位信號RST有效時(shí),選擇IMMD,CWP復(fù)位值為0。因?yàn)镾AVE和RESTORE操作的源操作數(shù)來自老窗口,而目的操作數(shù)來自新窗口,因此CWP生成部件同時(shí)輸出CWP寄存器鎖存前后的兩個(gè)值,鎖存后的值CWP1用于讀操作,鎖存前的值CWP2用于寫操作。CWP的兩個(gè)輸出值CWP1和CWP2經(jīng)過CWP地址擴(kuò)展部件1013’變?yōu)?位物理地址(在CWP后補(bǔ)4個(gè)0),因?yàn)镾PARC V9定義第n個(gè)窗口的輸入寄存器和第n-1個(gè)窗口的輸出寄存器重疊,因此在地址擴(kuò)展前增加一次求補(bǔ)操作(取反加一)。指令中寄存器的5位地址RS1,RS2和RD在經(jīng)過預(yù)處理部件1012’減去定值8后,分別與部件1013’的輸出值相加(部件1014’),得到最終的窗口寄存器堆物理地址,包括兩個(gè)讀地址WINRP1,WINRP2和一個(gè)寫物理地址WINWP。
這樣,對應(yīng)于指令給出的5位寄存器地址可以映射到全局寄存器堆GR0-GR7,和窗口寄存器堆RF00-RF7f上面,并實(shí)現(xiàn)窗口的重疊。各個(gè)窗口實(shí)際訪問的寄存器如下所示
對于0號窗口,訪問的實(shí)際寄存器為GR0-GR7,RF00-RF17;
對于1號窗口,訪問的實(shí)際寄存器為GR0-GR7,RF70-RF07;
對于2號窗口,訪問的實(shí)際寄存器為GR0-GR7,RF60-RF77;
對于3號窗口,訪問的實(shí)際寄存器為GR0-GR7,RF50-RF67;
對于4號窗口,訪問的實(shí)際寄存器為GR0-GR7,RF40-RF57;
對于5號窗口,訪問的實(shí)際寄存器為GR0-GR7,RF30-RF47;
對于6號窗口,訪問的實(shí)際寄存器為GR0-GR7,RF20-RF37;
對于7號窗口,訪問的實(shí)際寄存器為GR0-GR7,RF10-RF27。
圖10c為基于圖10所示的全局寄存器與窗口寄存器分離設(shè)計(jì)方法的另一種窗口寄存器堆讀寫地址轉(zhuǎn)換部件,由于這種窗口寄存器堆中每一個(gè)寄存器窗口中的寄存器個(gè)數(shù)可以由軟件設(shè)定,因此又稱移動寄存器窗口。移動寄存器窗口中的寄存器也包括兩個(gè)部分一部分為全局寄存器(又稱靜態(tài)寄存器),該部分寄存器對任意過程可見;另一部分為窗口寄存器,對應(yīng)于每一個(gè)具體過程的寄存器窗口各不相同,每個(gè)窗口的物理寄存器起始地址和窗口大小由BOF、SOF、SOL三個(gè)參數(shù)確定,BOF為當(dāng)前窗口的第一個(gè)寄存器的物理地址,SOF為移動窗口的大小,SOL為移動窗口中局部寄存器域的大小。SOF和SOL這兩個(gè)值都可以由軟件設(shè)定,SOL≤SOF,BOF的修改則是由硬件實(shí)現(xiàn)的,其通用修改方式為BOFn=BOFn-1+SOLn-1,其中BOFn、SOLn-1分別表示第n個(gè)移動窗口的BOF和第n-1個(gè)移動窗口的SOL值。每一個(gè)移動寄存器窗口的大小可以不同,但窗口之間通過相互重疊構(gòu)成循環(huán)堆棧,移動寄存器窗口的重疊區(qū)域當(dāng)前窗口的輸出寄存器域OUTS,由于移動寄存器窗口不在硬件上區(qū)分輸入寄存器域和輸出寄存器域,實(shí)際的輸出寄存器域由下式?jīng)Q定SOF-SOL。移動寄存器窗口的重疊方式為執(zhí)行CALL操作時(shí),當(dāng)前窗口的輸出寄存器域自動變成新窗口的SOF,同時(shí)原窗口的SOL和BOF之和變成新窗口的BOF,當(dāng)執(zhí)行ALLOC(窗口大小分配操作)操作時(shí),SOF和SOL的值可以按照指令的要求擴(kuò)大或縮??;當(dāng)執(zhí)行RETURN操作時(shí),恢復(fù)CALL操作之前的BOF、SOF和SOL。
圖10c所示部件也對應(yīng)于圖10中的窗口寄存器堆地址轉(zhuǎn)換部件101,用于移動寄存器窗口的窗口寄存器堆地址轉(zhuǎn)換。該結(jié)構(gòu)包括
預(yù)處理部件1015,將指令中的寄存器地址(包括讀/寫)減去全局寄存器的個(gè)數(shù);
BOF(當(dāng)前移動窗口的第一個(gè)寄存器的物理地址)生成部件1016,其輸入為當(dāng)前窗口的局部寄存器域SOL和控制信號CALL、RETURN操作使能信號(CALL和RETURN信號由BRANCH算子的功能域和使能信號EBRANCH邏輯組合而成);輸出為新窗口的BOF值(當(dāng)前窗口的第一個(gè)寄存器的物理地址);功能為根據(jù)指令定義修改BOF的值,BOF的復(fù)位值為0,當(dāng)CALL操作有效,BOF自動與當(dāng)前窗口的局部寄存器域SOL相加,形成新窗口的BOF值,當(dāng)RETURN操作有效時(shí),BOF恢復(fù)為前一窗口的BOF值。
加法部件1017,將部件1015的輸出值分別與1016的輸出值相加,得到窗口寄存器堆的最終物理地址(包括讀/寫),用于訪問移動寄存器窗口的窗口寄存器堆。
圖10d介紹根據(jù)本方法實(shí)現(xiàn)的Itanium移動寄存器窗口的窗口寄存器堆地址轉(zhuǎn)換部件,是對圖10c的進(jìn)一步說明。
按照Itanium體系結(jié)構(gòu)的定義,Itanium通用寄存器堆包括128個(gè)體系可見寄存器,這些通用寄存器被分為兩個(gè)子集GR0-GR31為靜態(tài)通用寄存器域;GR32-GR127為堆棧通用寄存器域。Itanium通用寄存器堆的地址轉(zhuǎn)換主要有兩類一類是移動寄存器窗口地址轉(zhuǎn)換,另一類是寄存器旋轉(zhuǎn)地址轉(zhuǎn)換。寄存器旋轉(zhuǎn)是在移動寄存器窗口的基礎(chǔ)上進(jìn)行的,旋轉(zhuǎn)僅限于對應(yīng)當(dāng)前過程的移動寄存器窗口的局部寄存器域SOL內(nèi)部(移動寄存器窗口下的寄存器旋轉(zhuǎn)將在圖11c中進(jìn)一步說明)。當(dāng)用作移動寄存器窗口時(shí),Itanium通用寄存器堆中的靜態(tài)寄存器GR0-GR31對所有過程可見,而堆棧寄存器域中對應(yīng)于每一個(gè)過程有一個(gè)相應(yīng)的移動寄存器窗口,窗口的大小可以由軟件定義,在0-96之間變化,窗口之間通過寄存器重疊在CALL和RETURN操作時(shí)自動交換參數(shù),從而避免對存儲器的訪問。移動窗口大小由SOF和SOL兩個(gè)參數(shù)來決定,SOF為移動窗口的大小,初值為96,SOL為窗口中局部寄存器的個(gè)數(shù)(包含輸入寄存器),輸出寄存器的個(gè)數(shù)兩者之差。執(zhí)行CALL操作時(shí),當(dāng)前活動窗口的GR32的物理地址BOFn變?yōu)樯弦淮翱谥蠫R32的地址BOFn-1與上一窗口的局部寄存器域SOLn-1之和,上一窗口的輸出寄存器域(SOFn-1-SOLn-1)自動變成新窗口的SOFn;執(zhí)行ALLOC操作時(shí),在指令控制下同時(shí)設(shè)置SOF、SOL和SOR三個(gè)值;執(zhí)行RETURN指令時(shí)恢復(fù)最近一次CALL操作之前的SOF和SOL。
上述Itanium通用寄存器堆可以用圖10所示部件來實(shí)現(xiàn),其中移動寄存器窗口地址轉(zhuǎn)換模塊101可以由圖10c所示的結(jié)構(gòu)來實(shí)現(xiàn),此時(shí)a=7,b=5,m=7。由于靜態(tài)寄存器對任意過程可見,因此移動窗口包含的寄存器個(gè)數(shù)的最小值為32(2b),而最大值為128(2a),總的物理寄存器的個(gè)數(shù)為160(2b+2m),具體電路如圖10d所示。為了簡便起見,只討論兩個(gè)讀操作和一個(gè)寫操作并行執(zhí)行的情況(此時(shí)需要同時(shí)產(chǎn)生三個(gè)物理地址,兩讀一寫)。
指令中的讀寫地址(RS1<6:0>、RS2<6:0>、RD<6:0>)分別來自通路算子的寄存器源操作數(shù)域和數(shù)據(jù)算子的寄存器目的操作數(shù)域,當(dāng)進(jìn)行寄存器讀寫操作時(shí),指令中寄存器讀寫地址RS1,RS2和RD的低5位直接訪問靜態(tài)寄存器堆,同時(shí)各讀寫地址(7位)經(jīng)過圖10d所示的窗口寄存器堆地址轉(zhuǎn)換部件轉(zhuǎn)換成符合窗口重疊的7位物理寄存器地址訪問窗口寄存器堆(包含128個(gè)寄存器)。由寫地址使能信號決定對全局寄存器堆的寫操作和對窗口寄存器堆的寫操作兩者之一有效,其中寫地址使能信號是由寫地址的高位RD<6:5>和寫算子使能信號組合而成的,組合條件為寫算子使能且RD<6:5>=00時(shí),對全局寄存器堆的寫操作有效,寫算子使能且RD<6:5>00時(shí),對窗口寄存器堆的寫操作有效。由讀有效信號控制數(shù)據(jù)輸出選擇裝置選擇全局寄存器堆的讀出數(shù)據(jù)和窗口寄存器堆的讀出數(shù)據(jù)兩者之一輸出,其中讀有效信號是由讀地址高位RS1<6:5>和RS2<6:5>組合成的,組合條件為RSi(i=1,2)的高兩位為0時(shí),全局寄存器堆的讀出數(shù)據(jù)有效,RSi(i=1,2)的高兩位不為0時(shí),窗口寄存器堆的讀出數(shù)據(jù)有效。
在圖10d所示的窗口寄存器堆地址轉(zhuǎn)換部件中,包括減32的預(yù)處理部件1015’,由3個(gè)7位加法器構(gòu)成的加法部件1017’,以及由一個(gè)7位加法器和一個(gè)包含N個(gè)寄存器的循環(huán)堆棧構(gòu)成的BOF生成部件1016’。BOF生成部件1016’的功能是對BOF進(jìn)行復(fù)位操作并根據(jù)指令修改BOF的值,當(dāng)CALL操作有效時(shí),BOFn=BOFn-1+SOLn-1,當(dāng)RETURN操作有效時(shí),BOF恢復(fù)為前一窗口的BOF值。部件1016’是實(shí)現(xiàn)上述功能的一種優(yōu)選結(jié)構(gòu),該結(jié)構(gòu)由一個(gè)寄存器個(gè)數(shù)可以根據(jù)需要來確定的寄存器循環(huán)堆棧構(gòu)成,圖中MUX為選通器,LAT為鎖存器,ADDER為加法器,當(dāng)執(zhí)行SAVE操作時(shí),由信號10161控制選通器選擇BOF與局部寄存器域SOL(SOL的值由根據(jù)Itanium指令提取的ALLOCFRAME算子確定,ALLOC的操作結(jié)果由相應(yīng)的寄存器保存)的相加值,刷新棧頂寄存器BOF,同時(shí)由10161和10162信號配合進(jìn)行壓棧操作;RETURN操作有效時(shí),由信號10161和10162配合進(jìn)行彈棧操作,恢復(fù)BOF的原值。其中信號10161和信號10162由CALL信號和RETURN信號邏輯組合而成,其原理是執(zhí)行CALL操作時(shí)控制選通器MUX選通左路數(shù)據(jù)來源,同時(shí)所有鎖存器打開,即執(zhí)行一個(gè)入棧操作;執(zhí)行RETURN操作時(shí),控制選通器MUX選通右路數(shù)據(jù)來源,同時(shí)所有鎖存器打開,即執(zhí)行一個(gè)出棧操作。
由于Itanium定義通用寄存器堆的堆棧區(qū)是從GR32開始的,所以對應(yīng)于指令給出的7位寄存器地址可以映射到全局寄存器堆靜態(tài)寄存器堆SR0S-SR31和窗口寄存器堆WINRF(RF00-RF7f)上面,并實(shí)現(xiàn)窗口的重疊。
圖11為基于查表法的旋轉(zhuǎn)寄存器地址生成部件示意圖。旋轉(zhuǎn)寄存器是為了適應(yīng)優(yōu)化編譯技術(shù)的發(fā)展而產(chǎn)生的一種寄存器堆控制技術(shù),用于支持軟件流水的模調(diào)度,在循環(huán)調(diào)度時(shí)消除數(shù)據(jù)的名相關(guān)。旋轉(zhuǎn)寄存器堆提供一種寄存器重命名機(jī)制,使得軟件流水構(gòu)成的新的循環(huán)中連續(xù)對指令中某一個(gè)寄存器的寫操作實(shí)際上寫入截然不同的寄存器,從而保證正確的語義。一個(gè)旋轉(zhuǎn)寄存器堆有一個(gè)與之相對應(yīng)的旋轉(zhuǎn)寄存器基寄存器(RRB)。一條指令中指定的寄存器號加上RRB值的總和,模上寄存器旋轉(zhuǎn)域,被用于實(shí)際的寄存器地址。模調(diào)度中特殊的分支操作在每一次新的迭代開始時(shí)使RRB削減,以此來為不同的迭代中的相同的操作分配不同的寄存器來存儲結(jié)果。
設(shè)寄存器堆的物理寄存器個(gè)數(shù)為2n,旋轉(zhuǎn)域倍數(shù)為SOR(Size OfRotating),實(shí)際旋轉(zhuǎn)域的大小為SOR*2m,SOR為大小可由軟件設(shè)定,取值1-s,s為自然數(shù)且s*2m<2n,m可以由體系結(jié)構(gòu)定義,m為0時(shí)SOR即為旋轉(zhuǎn)域。
圖11所示部件用于寄存器旋轉(zhuǎn)時(shí)的地址生成,該部件包括3個(gè)部件
旋轉(zhuǎn)基寄存器(RRB)生成部件111,其功能是將RRB復(fù)位以及根據(jù)指令要求完成對RRB進(jìn)行清0操作和減1操作。其輸入為控制信號CLR(控制清0操作)和旋轉(zhuǎn)有效信號ROTATING(控制RRB遞減操作);輸出為本次疊代的旋轉(zhuǎn)基RRB。當(dāng)CLR信號有效時(shí),將RRB置0。CLR信號的產(chǎn)生可能是復(fù)位RESET,也可能是指令中的清0操作(例如由根據(jù)ITANIUM指令提取的OPSTK算子控制的CLRRRB操作),ROTATING信號則是由控制特殊分支操作的算子(例如由根據(jù)ITANIUM指令提取的用于控制CTOP、CEXIT、WTOP、WEXIT操作的BRANCH算子)功能域及其使能信號進(jìn)行邏輯組合而成。
加法部件112,將指令中的寄存器地址分別與RRB相加,進(jìn)行寄存器地址旋轉(zhuǎn);
查表部件113,將112的輸出地址的高位[n-1:m]的全排列,和SOR的所有可能的取值分別作為行標(biāo)和列標(biāo),將行標(biāo)對列標(biāo)的求模作為表項(xiàng),用于不同大小的旋轉(zhuǎn)域的寄存器旋轉(zhuǎn)操作。查表的結(jié)果與加法部件112的輸出地址的低位[m-1,0]組合,形成旋轉(zhuǎn)寄存器的實(shí)際物理地址。以上行標(biāo)和列標(biāo)的選擇可以根據(jù)物理實(shí)現(xiàn)方式的不同而變化。
圖11a為上述旋轉(zhuǎn)寄存器的一個(gè)實(shí)例,在該結(jié)構(gòu)中n=7,m=3,s=12。這是一個(gè)由128(2n)個(gè)寄存器組成的寄存器堆,旋轉(zhuǎn)域可以為8(2m)的1-12倍的寄存器旋轉(zhuǎn)指針生成部件的結(jié)構(gòu)圖。為了方便起見,設(shè)寄存器堆端口數(shù)為3個(gè)(兩讀一寫)。該結(jié)構(gòu)包含一個(gè)由7位計(jì)數(shù)器組成的RRB生成部件111’,當(dāng)執(zhí)行RRB清空操作時(shí)由CLR信號控制RRB清0,當(dāng)執(zhí)行旋轉(zhuǎn)分支操作時(shí)RRB減1。在圖111’的優(yōu)選結(jié)構(gòu)中,MUX21_7為7位的選通器,DEC_7為7位的減1器,DFF_7為7位的觸發(fā)器。RRB的鎖存信號1111為CLR和ROTATING的邏輯或關(guān)系。當(dāng)復(fù)位或執(zhí)行RRB清0操作時(shí),由CLR信號選擇定值1,觸發(fā)器DFF保存減1器的輸出值0,將RRB置0;當(dāng)發(fā)生寄存器旋轉(zhuǎn)時(shí),選通器默認(rèn)選擇RRB的反饋值,觸發(fā)器DFF保存RRB的減1值,RRB遞減。
該結(jié)構(gòu)還包含一個(gè)加法部件112’和一個(gè)查表部件113’。加法部件112’用于將指令中的三個(gè)寄存器地址RS1,RS2和RD(兩讀一寫)分別與RRB相加,然后將各加法結(jié)果的高4位[6:3]和SOR(4位)的值一道作為查表電路113’的輸入,并將輸出的表項(xiàng)作為旋轉(zhuǎn)寄存器物理地址(包括兩讀一寫)的高4位[6:3],與112’的輸出地址的低三位[2:0]分別拼合成新的7位地址(包括兩讀一寫),即形成對應(yīng)于指令中寄存器地址的寄存器旋轉(zhuǎn)物理地址。
圖11b為圖11c中查表電路113’的表頭和表項(xiàng),其中列標(biāo)1131為SOR(1-12)的二進(jìn)制表示,行標(biāo)1132為112’部件輸出地址高四位的全排列,表項(xiàng)1133為行標(biāo)對列標(biāo)的取模值。行標(biāo)和列標(biāo)是可以相對而言的,表格的實(shí)現(xiàn)方式也可以為ROM或者寄存器,一種優(yōu)選的硬件實(shí)現(xiàn)方式是用12個(gè)64位寄存器來儲存求模值,當(dāng)復(fù)位時(shí),將寄存器中的數(shù)據(jù)復(fù)位為圖11b中各列的數(shù)據(jù),當(dāng)ALLOC操作確定SOR值時(shí),在SOR[3:0]控制下選通與當(dāng)前SOR對應(yīng)的一列數(shù)據(jù)(保存在一個(gè)64bit的寄存器中),當(dāng)分支指令導(dǎo)致的寄存器旋轉(zhuǎn)操作有效時(shí),僅以查表地址的高4位為索引,在該列的16個(gè)4bit的求模值中進(jìn)行選擇,得到對應(yīng)表項(xiàng)。該表項(xiàng)與查表地址的第3位合并,即成為寄存器旋轉(zhuǎn)后的物理地址。采用該方法進(jìn)行寄存器旋轉(zhuǎn)地址轉(zhuǎn)換時(shí),僅用一個(gè)十六選一的選通器的延時(shí)代價(jià)即可完成旋轉(zhuǎn)地址的求模運(yùn)算。
圖11c為將圖11b與圖10d相結(jié)合實(shí)現(xiàn)的移動窗口中的旋轉(zhuǎn)寄存器地址轉(zhuǎn)換部件的電路圖,設(shè)計(jì)該結(jié)構(gòu)的目的是為了實(shí)現(xiàn)Itanium處理器通用寄存器堆的對應(yīng)操作。如上所述,Itanium通用寄存器堆在體系結(jié)構(gòu)界面包含一個(gè)大小為32的靜態(tài)寄存器域(GR0-GR31)和一個(gè)大小為96的堆棧域(GR32-GR127)。堆棧域的寄存器由大小可編程的移動寄存器窗口組成,相鄰寄存器窗口彼此重疊構(gòu)成循環(huán)堆棧。
Itanium通用寄存器堆同時(shí)支持移動寄存器窗口和寄存器旋轉(zhuǎn)兩類操作,兩類操作的作用不同,前者的作用是通過寄存器窗口的重疊在過程切換時(shí)交換數(shù)據(jù)以減少對存儲器的訪問,后者的作用則是為了在硬件上支持軟件流水的模調(diào)度。
上述操作的效果描述如下執(zhí)行CALL操作時(shí),當(dāng)前活動窗口的GR32的物理地址BOFn變?yōu)樯弦淮翱谥蠫R32的地址BOFn-1與上一窗口的局部寄存器域SOLn-1之和,上一窗口的輸出寄存器域(SOFn-1-SOLn-1)自動變成新窗口的SOFn;執(zhí)行ALLOC操作時(shí),在指令控制下同時(shí)設(shè)置SOF、SOL和SOR三個(gè)值;執(zhí)行RETURN指令時(shí)恢復(fù)最近一次CALL操作之前的SOF和SOL;執(zhí)行軟件流水循環(huán)分支操作(CTOP,CEXIT,WTOP,WEXIT)時(shí),寄存器發(fā)生旋轉(zhuǎn),但寄存器旋轉(zhuǎn)是在移動寄存器窗口的范圍內(nèi)進(jìn)行的,旋轉(zhuǎn)域的大小為SOR*8。寄存器旋轉(zhuǎn)只能在堆棧區(qū)(窗口寄存器)進(jìn)行,旋轉(zhuǎn)域?yàn)?的1-12倍,旋轉(zhuǎn)域定義為從GR32開始。
Itanium通用寄存器堆可以用圖10所示部件來實(shí)現(xiàn),其中移動寄存器窗口部分的電路結(jié)構(gòu)已經(jīng)結(jié)合圖10d進(jìn)行過描述,由于寄存器旋轉(zhuǎn)只在窗口寄存器堆(寄存器堆棧域)內(nèi)進(jìn)行,因此當(dāng)在圖10d的基礎(chǔ)上增加寄存器旋轉(zhuǎn)功能時(shí),只需要修改窗口寄存器堆的地址轉(zhuǎn)換部件,對全局寄存器堆的訪問和對數(shù)據(jù)輸出選擇部件的控制不變。在圖10d的基礎(chǔ)上增加寄存器旋轉(zhuǎn)功能得到的窗口寄存器堆地址轉(zhuǎn)換部件的電路圖如圖11c所示,為了討論方便,只介紹兩讀一寫的三地址結(jié)構(gòu),更多的讀寫地址轉(zhuǎn)換原理相同。
在圖11c中,窗口寄存器堆的物理地址產(chǎn)生路徑有兩條。在第一條路徑中,指令中的讀寫地址(RS1<6:0>、RS2<6:0>、RD<6:0>)經(jīng)過預(yù)處理部件1015’各自減去定值32后,直接轉(zhuǎn)至旋轉(zhuǎn)地址選擇控制部件114,由控制信號1141控制選擇該值與BOF生成部件1016’輸出的BOF值相加,得到最終的物理地址,此時(shí)的物理地址僅是進(jìn)行移動寄存器窗口操作的地址,當(dāng)寄存器不發(fā)生旋轉(zhuǎn)時(shí),可選用該路徑。在第二條路徑中,指令中的讀寫地址(RS1<6:0>、RS2<6:0>、RD<6:0>)經(jīng)過預(yù)處理部件1015,各自減去定值32后,分別與RRB生成部件111’輸出的RRB值相加,以加法部件112’的輸出值的高4位和SOR為索引訪問查表電路113’,查表得到的表項(xiàng)與部件112’的輸出值的低3位拼合形成旋轉(zhuǎn)地址輸入旋轉(zhuǎn)地址選擇部件114,由控制信號1141控制選擇該路數(shù)據(jù)與BOF生成部件1016’輸出的BOF值相加,得到最終的物理地址,該地址為移動寄存器窗口內(nèi)進(jìn)行寄存器旋轉(zhuǎn)時(shí)的寄存器物理地址。
114部件為旋轉(zhuǎn)地址選擇控制部件,其控制條件為寄存器旋轉(zhuǎn)有效信號ROTATING,該信號由根據(jù)Itanium指令提取的分支算子BRANCH的功能域及BRANCH算子使能信號組合而成。當(dāng)寄存器旋轉(zhuǎn)無效時(shí),選擇上述第一條路徑產(chǎn)生物理地址,當(dāng)寄存器旋轉(zhuǎn)有效時(shí),選擇上述第二條路徑產(chǎn)生物理地址。由于是采用圖10所示的靜態(tài)寄存器與窗口寄存器分離的結(jié)構(gòu)來實(shí)現(xiàn)Itanium通用寄存器堆的移動寄存器窗口及寄存器旋轉(zhuǎn)操作的,因此寄存器GR0-GR31被映射到全局寄存器堆GPR(GPR00-GPR31)上,GR32-GR127被映射到窗口寄存器堆WINRF(RF00-RF7f)上,BOF的復(fù)位值為0,對應(yīng)于窗口寄存器堆WINRF中的第一個(gè)寄存器。
圖12為可重構(gòu)寄存器堆的結(jié)構(gòu)示意圖。一個(gè)可重構(gòu)寄存器堆至少包括三個(gè)部件
一個(gè)地址轉(zhuǎn)換及地址選擇部件121,將指令中的寄存器地址轉(zhuǎn)換為滿足體系設(shè)計(jì)要求的寄存器堆物理地址,同時(shí)控制從不同功能得到的寄存器物理地址中選擇當(dāng)前有效的操作地址,對寄存器堆進(jìn)行訪問,根據(jù)可重構(gòu)設(shè)計(jì)資源規(guī)則,部件121輸出的讀地址和寫地址的個(gè)數(shù)分別是完成每一種重構(gòu)元素所需要的讀地址和寫地址個(gè)數(shù)的并集,這意味著寄存器堆需要設(shè)置的讀寫端口數(shù)為實(shí)現(xiàn)各功能需要的讀寫端口數(shù)的并集。
一個(gè)數(shù)據(jù)輸入選擇部件122,控制從不同功能得到的寄存器寫入數(shù)據(jù)中選擇當(dāng)前有效的寫入數(shù)據(jù),與寄存器寫地址配合實(shí)現(xiàn)寄存器堆的寫操作。
一個(gè)寄存器堆部件123,根據(jù)可重構(gòu)設(shè)計(jì)資源規(guī)則,所需寄存器的個(gè)數(shù)為實(shí)現(xiàn)各功能所需要的寄存器個(gè)數(shù)的并集,寄存器堆讀寫端口的個(gè)數(shù)也為實(shí)現(xiàn)各功能所需要的寄存器堆讀寫端口個(gè)數(shù)的并集。
控制信號124為工作模式選擇信號,控制在某一確定的工作模式下,選擇符合該模式的輸入數(shù)據(jù)和讀寫地址,該信號可以由不同類功能的寄存器操作算子的使能信號組合而成,也可以通過在指令中增加工作模式控制域來實(shí)現(xiàn),當(dāng)排列順序一致時(shí),控制地址選擇和控制數(shù)據(jù)選擇的信號是相同的。
圖12a為具有寄存器窗口、移動寄存器窗口及旋轉(zhuǎn)寄存器兩種工作模式的可重構(gòu)寄存器堆結(jié)構(gòu)框圖。為了簡便起見,每種工作模式都只考慮兩讀一寫的基本需求。其中,固定窗口在體系結(jié)構(gòu)界面上包含32個(gè)寄存器,全局寄存器、輸入寄存器、局部寄存器和輸出寄存器的個(gè)數(shù)都為8;移動窗口在體系結(jié)構(gòu)界面上包含128個(gè)寄存器,其中靜態(tài)(全局)寄存器的個(gè)數(shù)為32個(gè),并能實(shí)現(xiàn)移動寄存器窗口的基礎(chǔ)上的寄存器旋轉(zhuǎn)操作,寄存器旋轉(zhuǎn)操作只能在非靜態(tài)寄存器的區(qū)域內(nèi)進(jìn)行。該寄存器堆采用圖10所示的全局寄存器與窗口寄存器分離的設(shè)計(jì)方法,包含如下部件
寄存器地址轉(zhuǎn)換及選擇部件121’,包括固定窗口地址轉(zhuǎn)換部件1211,用于在固定窗口工作模式下將指令中的寄存器地址125轉(zhuǎn)換為窗口寄存器堆的物理地址,具體轉(zhuǎn)換電路已經(jīng)在圖10b中有詳細(xì)說明;移動窗口及寄存器旋轉(zhuǎn)地址轉(zhuǎn)換部件1212,用于在移動窗口及寄存器旋轉(zhuǎn)工作模式下將指令中的寄存器地址126轉(zhuǎn)換為窗口寄存器堆的物理地址,具體轉(zhuǎn)換電路見圖11c,值得注意的是由于窗口寄存器堆中的物理寄存器對應(yīng)于指令中寄存器地址的R32-R127,因此R32的初始物理地址BOF復(fù)位值為0,對應(yīng)于窗口寄存器堆的第一個(gè)物理寄存器;地址選擇部件1213,用于在寄存器窗口和移動寄存器窗口及旋轉(zhuǎn)寄存器兩種工作模式之間選擇有效地址訪問窗口寄存器堆WINRF(RF00-RF127),地址選擇部件1213的內(nèi)部結(jié)構(gòu)將在圖12c中進(jìn)一步說明;
數(shù)據(jù)輸入選擇部件122’,用于在寄存器窗口和移動寄存器窗口及旋轉(zhuǎn)寄存器兩種工作模式之間選擇有效數(shù)據(jù)寫入全局寄存器堆GPR(GR00-GR31)或者窗口寄存器堆WINRF(RF00-RF127),由于每種模式只有一個(gè)寫端口,因此本例中該部件可以簡化為對兩個(gè)輸入數(shù)據(jù)的選擇,選擇信號124’的一種優(yōu)選設(shè)計(jì)為算子的使能信號的組合(同類操作中所有的讀寫算子使能信號的或關(guān)系,算子使能信號低電平有效),用來表明當(dāng)前操作是寄存器窗口操作還是移動寄存器窗口操作;
寄存器堆123’,由于采用圖10所示的全局寄存器堆和窗口寄存器堆分離的結(jié)構(gòu),因此寄存器堆123’包含全局寄存器堆1231、窗口寄存器堆1232和數(shù)據(jù)輸出選擇部件1233。
其中,全局寄存器堆1231,包含32個(gè)64位寄存器,2個(gè)寫端口和4個(gè)讀端口。這是因?yàn)楫?dāng)用作固定窗口時(shí),需要8個(gè)寄存器,而用作移動窗口及旋轉(zhuǎn)寄存器時(shí)需要32個(gè)寄存器,根據(jù)可重構(gòu)設(shè)計(jì)資源規(guī)則,總的寄存器數(shù)為32個(gè),讀寫端口個(gè)數(shù)為6個(gè)(4讀2寫)是因?yàn)椴煌J街g的全局寄存器堆的讀寫地址寬度不同。當(dāng)用于兼容SPARC V9固定寄存器窗口操作時(shí),全局寄存器堆的讀寫地址為地址信號125中各讀寫地址的低位WRS1[2:0]、WRS2[2:0]和WRD[2:0];當(dāng)用于兼容Itanium移動寄存器窗口操作時(shí),全局寄存器堆的讀寫地址為地址信號126中各讀寫地址的低位SWRS1[4:0]、SWRS2[4:0]和SWRD[4:0]。全局寄存器的內(nèi)部結(jié)構(gòu)將在圖12b中進(jìn)一步說明。
窗口寄存器堆1232,包含128個(gè)64位寄存器,對應(yīng)于SPARC的窗口寄存器和Itanium的通用寄存器堆棧區(qū)的物理實(shí)現(xiàn),因?yàn)閮煞N模式需要的讀寫端口數(shù)都為3(兩讀一寫),根據(jù)可重構(gòu)設(shè)計(jì)資源規(guī)則,寄存器堆的讀寫端口數(shù)為兩者的并集,即也為3個(gè)讀寫端口(兩讀一寫);
數(shù)據(jù)輸出選擇部件1233,其功能是在全局寄存器和窗口寄存器分離時(shí)在全局寄存器堆和窗口寄存器堆之間選擇正確的讀出數(shù)據(jù),數(shù)據(jù)輸出選擇部件的內(nèi)部結(jié)構(gòu)將在圖12c中進(jìn)一步描述。
圖12b為圖12a中全局寄存器堆1231的結(jié)構(gòu)圖。用作固定窗口寄存器堆時(shí),兩讀一寫的3個(gè)全局寄存器地址(3位)作用于寄存器GR0-GR7;用作移動寄存器窗口及旋轉(zhuǎn)寄存器時(shí),兩讀一寫的3個(gè)靜態(tài)寄存器地址(5位)作用于寄存器GR0-GR31。其中GR0-GR7為重疊資源,其優(yōu)選結(jié)構(gòu)見12311’,寄存器的輸入數(shù)據(jù)為兩種模式中的一個(gè),根據(jù)可重構(gòu)設(shè)計(jì)控制規(guī)則,鎖存控制條件為兩種模式鎖存控制條件的或關(guān)系,而控制寄存器GR8-GR31的鎖存信號僅與移動寄存器窗口一種工作模式有關(guān),其基本結(jié)構(gòu)如圖12312’所示。
圖12c為圖12a中地址選擇部件1213和數(shù)據(jù)輸出選擇部件1233的結(jié)構(gòu)圖。地址選擇部件分別實(shí)現(xiàn)對兩個(gè)讀地址和一個(gè)寫地址的選擇,圖中WRPi(i=1,2)和SWRPi(i=1,2)分別表示固定窗口和移動窗口及寄存器旋轉(zhuǎn)的窗口寄存器堆的讀地址,WWP和SWWP分別表示固定窗口和移動窗口及寄存器旋轉(zhuǎn)的窗口寄存器堆的寫地址,選擇條件是各自對應(yīng)的寫算子使能信號。數(shù)據(jù)輸出選擇部件分別實(shí)現(xiàn)對應(yīng)于寄存器堆某一工作模式的全局寄存器堆的兩個(gè)讀出數(shù)據(jù)和窗口寄存器堆的兩個(gè)讀出數(shù)據(jù)的選擇,選擇條件為算子的使能信號和地址高位是否為0,(信號12331和信號12332分別對應(yīng)于固定窗口和移動窗口模式下的選擇信號),圖中GPRRPORTi(i=1-4)為全局寄存器堆的輸出端口的數(shù)據(jù),其中GPRRPORT1、GPRRPORT2表示全局寄存器為GR0-GR7時(shí)的輸出數(shù)據(jù),GPRRPORT3、GPRRPORT4表示全局寄存器為GR0-GR31時(shí)的輸出數(shù)據(jù);RFRPORTi(i=1-2)為窗口寄存器堆的輸出端口的數(shù)據(jù);WRPORTi(i=1,2)表示固定窗口的最終輸出數(shù)據(jù),SWPORTi(i=1,2)表示移動窗口及寄存器旋轉(zhuǎn)的最終輸出數(shù)據(jù)。
圖12d為具有寄存器窗口、移動寄存器窗口及旋轉(zhuǎn)寄存器、隨機(jī)讀寫寄存器堆三種工作模式的可重構(gòu)寄存器堆結(jié)構(gòu)框圖。其中的隨機(jī)讀寫模式包括4個(gè)讀操作和4個(gè)寫操作的并行執(zhí)行。
該寄存器堆的基本結(jié)構(gòu)與圖12a類似,主要不同之處在于增加了隨機(jī)讀寫地址127(包括4個(gè)讀地址和4個(gè)寫地址,各7位)。根據(jù)可重構(gòu)設(shè)計(jì)資源規(guī)則,此時(shí)窗口寄存器堆1232’實(shí)際需要的讀寫端口數(shù)為8個(gè)(四讀四寫),同時(shí)需要修改地址選擇部件1213’、數(shù)據(jù)輸入部件122”、數(shù)據(jù)輸出部件的結(jié)構(gòu)1233’和地址/數(shù)據(jù)選擇控制信號124”。地址選擇部件1213’的結(jié)構(gòu)如圖12e所示,輸入的14個(gè)地址(包括對于固定寄存器窗口的2讀1寫,對于移動寄存器窗口的2讀1寫,以及對于隨機(jī)讀寫寄存器堆的4讀4寫)經(jīng)過地址選擇合并為8個(gè)讀寫地址(4讀4寫,為以上不同模式所需要的讀寫地址個(gè)數(shù)的并集),分別控制窗口寄存器堆的四個(gè)讀端口和四個(gè)寫端口,選擇條件124”的一種優(yōu)選設(shè)計(jì)為隨機(jī)讀寫算子的使能信號的邏輯或(算子使能信號低電平有效,用來表明當(dāng)前隨機(jī)讀寫操作有效),當(dāng)隨機(jī)讀寫操作無效時(shí),默認(rèn)選擇圖中的左路數(shù)據(jù);圖中RANDRPi(i=1~4)表示隨機(jī)讀地址,RANDWPi(i=1~4)表示隨機(jī)寫地址;RPi和WPi(i=1~4)分別表示最終控制窗口寄存器堆的讀寫地址。數(shù)據(jù)輸入選擇部件122”和數(shù)據(jù)輸出部件1233’的結(jié)構(gòu)如圖12f所示,圖中RANDDi(i=1~4)表示隨機(jī)寫操作的輸入數(shù)據(jù)來源,WIND表示固定窗口的輸入數(shù)據(jù)來源,SWIND表示移動寄存器窗口及寄存器旋轉(zhuǎn)的輸入數(shù)據(jù)來源,WPiD (i=1~4)表示與窗口寄存器堆寫端口對應(yīng)的數(shù)據(jù)來源,RFRPORTi(i=1~4)為對應(yīng)于窗口寄存器堆的讀端口的輸出數(shù)據(jù)。
由圖12d~圖12f可見,當(dāng)增加一種新的功能——隨機(jī)讀寫操作的同時(shí),通過寄存器堆的可重構(gòu)設(shè)計(jì),增加的硬件資源很小,而根據(jù)可重構(gòu)設(shè)計(jì)時(shí)序規(guī)則,關(guān)鍵路徑上延時(shí)的增長僅為地址和數(shù)據(jù)選擇的時(shí)間。其效果是能夠?qū)崿F(xiàn)SPARC的固定寄存器窗口以及Itanium的移動寄存器窗口及旋轉(zhuǎn)寄存器的讀寫操作,并可以增加用戶定義的寄存器操作(此處以隨機(jī)讀寫的簡單操作為例)。
雖然已經(jīng)示出和詳細(xì)描述了本發(fā)明的較佳實(shí)施方式,但是應(yīng)當(dāng)認(rèn)識到可以對本發(fā)明做出各種變化和修改而不脫離權(quán)利要求書的范圍。
權(quán)利要求
1、一種可重構(gòu)寄存器堆,至少具有兩種工作模式,其特征在于包括一個(gè)寄存器堆地址轉(zhuǎn)換及選擇部件,一個(gè)寄存器堆和一個(gè)數(shù)據(jù)輸入選擇部件,其中指令中的寄存器讀寫地址經(jīng)過寄存器堆地址轉(zhuǎn)換及選擇部件轉(zhuǎn)換成對應(yīng)模式的寄存堆的物理地址來控制寄存器堆的讀寫,對應(yīng)模式的輸入數(shù)據(jù)經(jīng)過數(shù)據(jù)輸入選擇部件被寫入寄存器堆。
2、如權(quán)利要求1所述的可重構(gòu)寄存器堆,其特征在于所述的寄存器堆地址轉(zhuǎn)換及選擇部件包括一個(gè)窗口寄存器堆地址轉(zhuǎn)換及選擇部件,所述的寄存器堆被分為一個(gè)全局寄存器堆和一個(gè)窗口寄存器堆,并且所述的可重構(gòu)寄存器堆還包括一個(gè)輸出數(shù)據(jù)選擇部件,其中指令中的寄存器讀寫地址的低位地址直接用來控制全局寄存器堆的讀寫,同時(shí)指令中的寄存器讀寫地址經(jīng)過窗口寄存器堆地址轉(zhuǎn)換機(jī)構(gòu)轉(zhuǎn)換成窗口寄存堆的物理地址來控制窗口寄存器堆的讀寫,從數(shù)據(jù)輸入選擇部件輸出的數(shù)據(jù)在一個(gè)全局寄存器堆寫地址使能信號和窗口寄存器堆寫地址使能信號的控制下或者被寫入全局寄存器堆,或者被寫入窗口寄存器堆,所述的輸出數(shù)據(jù)選擇部件用于在全局寄存器堆的輸出數(shù)據(jù)和窗口寄存器堆的輸出數(shù)據(jù)之間進(jìn)行選擇,輸出正確數(shù)據(jù)。
3、如權(quán)利要求2所述的可重構(gòu)寄存器堆,其特征在于所述的窗口寄存器堆地址轉(zhuǎn)換及選擇部件至少包括一個(gè)固定窗口地址轉(zhuǎn)換部件和一個(gè)移動窗口及寄存器旋轉(zhuǎn)地址轉(zhuǎn)換部件,和一個(gè)地址選擇部件,用于選擇所述固定窗口地址轉(zhuǎn)換部件的輸出和所述移動窗口及寄存器旋轉(zhuǎn)地址轉(zhuǎn)換部件的輸出中的一個(gè),并且所述的數(shù)據(jù)輸入選擇部件用于在寄存器窗口和移動寄存器窗口及旋轉(zhuǎn)寄存器兩種工作模式之間選擇有效數(shù)據(jù)寫入全局寄存器堆或者窗口寄存器堆。
4、如權(quán)利要求3所述的可重構(gòu)寄存器堆,其特征在于還包括隨機(jī)讀寫地址,因此,寄存器地址轉(zhuǎn)換及選擇部件和數(shù)據(jù)輸入選擇部件分別還在隨機(jī)地址及隨機(jī)輸入數(shù)據(jù)之間進(jìn)行選擇。
5、如權(quán)利要求3或4所述的可重構(gòu)寄存器堆,其特征在于所述的固定窗口寄存器堆地址轉(zhuǎn)換部件包括一個(gè)當(dāng)前窗口指針(CWP)生成部件,一個(gè)地址預(yù)處理部件,用于將指令中的各個(gè)寄存器地址減去全局寄存器的個(gè)數(shù);一個(gè)CWP地址擴(kuò)展部件,用于將CWP地址的位數(shù)擴(kuò)充成讀寫窗口寄存器堆所需的位數(shù);以及一個(gè)加法部件,用于將預(yù)處理部件的輸出和CWP地址擴(kuò)展部件的輸出相加,得到最終窗口寄存器堆讀寫操作的物理地址。
6、如權(quán)利要求3或4所述的可重構(gòu)寄存器堆,其特征在于所述的移動窗口地址轉(zhuǎn)換部件,包括預(yù)處理部件,用于將指令中的寄存器地址減去全局寄存器的個(gè)數(shù);當(dāng)前移動窗口的第一個(gè)寄存器的物理地址(BOF)生成部件;以及加法部件,用于將預(yù)處理部件的輸出值與BOF生成部件的輸出值相加,得到窗口寄存器堆的最終物理地址。
7、如權(quán)利要求3或4所述的可重構(gòu)寄存器堆,其特征在于所述的旋轉(zhuǎn)寄存器地址生成部件包括一個(gè)旋轉(zhuǎn)基寄存器(RRB)生成部件,用于將RRB復(fù)位以及根據(jù)指令要求完成對RRB進(jìn)行清0操作和減1操作;一個(gè)加法部件,用于將指令中的寄存器地址分別與RRB相加,進(jìn)行寄存器地址旋轉(zhuǎn);一個(gè)查表部件,用于不同大小的旋轉(zhuǎn)域的寄存器旋轉(zhuǎn)操作;其中查表的結(jié)果與加法部件的輸出地址的低位組合,形成旋轉(zhuǎn)寄存器的實(shí)際物理地址。
8、如權(quán)利要求3或4所述的可重構(gòu)寄存器堆,其特征在于假設(shè)固定寄存器窗口中的體系可見寄存器個(gè)數(shù)為2a1,全局寄存器的個(gè)數(shù)為2b1(b1<a1),移動寄存器窗口中的體系可見寄存器個(gè)數(shù)為為2a2,全局寄存器的個(gè)數(shù)為2b2(b2<a2),則可重構(gòu)寄存器堆的全局寄存器堆中包含的寄存器個(gè)數(shù)為2b,且b為b1和b2中的最大值,窗口寄存器堆中包含的物理寄存器個(gè)數(shù)為2m,且m同時(shí)滿足m=b1+1+k,k為非負(fù)整數(shù)以及2m≥2a2-2b2,以可以根據(jù)需要進(jìn)行固定窗口的操作或移動窗口的操作。
9、如權(quán)利要求1-4的任一個(gè)所述的可重構(gòu)寄存器堆,其特征在于所述寄存器堆的寫入端口和讀出端口分別是所述至少兩種工作模式所需的寫入端口和讀出端口的并集。
10、在一個(gè)兼容體系的微處理器中,一種可重構(gòu)寄存器堆的工作方法,其特征在于包括步驟
根據(jù)所要兼容的寄存器堆的工作方式將指令算子中的寄存器地址的若干低位輸入全局寄存器堆;
根據(jù)所要兼容的寄存器堆的工作方式將指令算子中的寄存器地址輸入地址轉(zhuǎn)換部件中相應(yīng)的地址轉(zhuǎn)換子部件從而產(chǎn)生訪問窗口寄存器堆的地址;
當(dāng)要寫寄存器時(shí),還根據(jù)所要兼容的寄存器堆的工作方式選擇合適的數(shù)據(jù)輸入并根據(jù)相應(yīng)的寫使能信號將數(shù)據(jù)寫入全局寄存器堆或窗口寄存器堆;
當(dāng)要讀寄存器時(shí),若高位地址全為零,則輸出從全局寄存器堆讀出的數(shù)據(jù);若高位地址不全為零,則輸出從窗口寄存器堆讀出的數(shù)據(jù)。
11、一種用于兼容目的的算子提取方法,所述方法的特征在于包括以下步驟
(1)對目標(biāo)兼容指令集合功能進(jìn)行分析;
(2)根據(jù)兼容目標(biāo)指令集合功能分析的結(jié)果,將由同一類部件完成的功能排列在一起,重新編碼,成為功能算子的操作碼;將源操作數(shù)獨(dú)立成為路由算子,對應(yīng)于寄存器堆的讀端口;將目的操作數(shù)獨(dú)立成為數(shù)據(jù)算子的目的寄存器域;將必須同時(shí)控制多個(gè)部件執(zhí)行的操作設(shè)計(jì)為復(fù)合算子;
(3)至少部分根據(jù)兼容目標(biāo)指令集合功能分析的結(jié)果確定內(nèi)部通路;
(4)根據(jù)內(nèi)部通路確定路由算子和數(shù)據(jù)算子的數(shù)量;
(5)確定功能算子的數(shù)據(jù)來源域和數(shù)據(jù)算子的數(shù)據(jù)來源域。
12、一種具有兼容性的可重構(gòu)部件設(shè)計(jì)方法,其特征在于包括以下步驟
(1)根據(jù)不同兼容目標(biāo)的算子集合分別進(jìn)行硬件設(shè)計(jì),分別確定滿足各算子集合功能的硬件資源、連接關(guān)系、控制關(guān)系和時(shí)序關(guān)系;
(2)將根據(jù)不同兼容目標(biāo)體系得出的部件設(shè)計(jì)進(jìn)行形式化描述;
(3)將部件的形式化描述進(jìn)行疊加優(yōu)化;
將實(shí)現(xiàn)功能集合不全相同的同類部件進(jìn)行操作(OP)疊加,且不同功能集合不同時(shí)有效時(shí)(串行疊加),根據(jù)如下規(guī)則疊加
<資源規(guī)則>滿足OP集合串行疊加的資源需求是完成所有OP在不同時(shí)標(biāo)下所需要的對應(yīng)資源的并集;
<連接規(guī)則>串行疊加(完成多種功能的電路描述進(jìn)行疊加,但在同一時(shí)刻只有一種功能有效)時(shí),相同的數(shù)據(jù)來源可以合并,不同的數(shù)據(jù)來源并行排列,同時(shí)改變相應(yīng)的選通控制條件;
<控制規(guī)則>滿足OP串行疊加的控制描述為疊加前各OP的控制描述的并集,對相同操作的新的控制條件為原條件的或關(guān)系;
<時(shí)序規(guī)則>OP串行疊加后的關(guān)鍵路徑為疊加前各OP的關(guān)鍵路徑與各自增加的開關(guān)電路的延時(shí)值之和的最大值。
(4)將以上形式化描述轉(zhuǎn)變?yōu)殡娐吩O(shè)計(jì)。
全文摘要
一種可重構(gòu)寄存器堆及其工作方法。該可重構(gòu)寄存器堆至少具有兩種工作模式,包括一個(gè)寄存器堆地址轉(zhuǎn)換及選擇部件,一個(gè)寄存器堆和一個(gè)數(shù)據(jù)輸入選擇部件,其中指令中的寄存器讀寫地址經(jīng)過寄存器堆地址轉(zhuǎn)換及選擇部件轉(zhuǎn)換成對應(yīng)模式的寄存堆的物理地址來控制寄存器堆的讀寫,對應(yīng)模式的輸入數(shù)據(jù)經(jīng)過數(shù)據(jù)輸入選擇部件被寫入寄存器堆。本發(fā)明還提供了一種用于兼容目的的算子提取方法及一種具有兼容性的可重構(gòu)部件設(shè)計(jì)方法。根據(jù)本發(fā)明,可以以很少的硬件代價(jià)實(shí)現(xiàn)對多種微處理器體系結(jié)構(gòu)的兼容。
文檔編號G06F9/06GK1469236SQ0212622
公開日2004年1月21日 申請日期2002年7月15日 優(yōu)先權(quán)日2002年7月15日
發(fā)明者王俊宇, 劉大力 申請人:北京南思達(dá)科技發(fā)展有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1