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

用于處理指令的方法、處理器以及系統(tǒng)的制作方法

文檔序號(hào):6628236閱讀:253來源:國(guó)知局
專利名稱:用于處理指令的方法、處理器以及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及一種計(jì)算機(jī)系統(tǒng),本發(fā)明更特別地涉及一種在處理器內(nèi)分配程序指令的方法以及改進(jìn)型處理器設(shè)計(jì)。
背景技術(shù)
高性能計(jì)算機(jī)系統(tǒng)采用多處理器執(zhí)行嵌入諸如軟件應(yīng)用程序和操作系統(tǒng)的計(jì)算機(jī)程序內(nèi)的各種程序指令。圖1示出典型的多處理器系統(tǒng)10。計(jì)算機(jī)系統(tǒng)10具有一個(gè)或者多個(gè)被排列在一個(gè)或者多個(gè)處理器組中的處理單元,在所示的系統(tǒng)中,在處理器組14中有4個(gè)處理單元12a、12b、12c和12d。通過系統(tǒng)總線或者結(jié)構(gòu)總線(fabric bus)16,該處理單元與系統(tǒng)10的其它部件通信。結(jié)構(gòu)總線16連接到系統(tǒng)存儲(chǔ)器20以及各種外圍設(shè)備22。通過JTAG接口或者其它外部業(yè)務(wù)端口,業(yè)務(wù)處理器18a、18b連接到處理單元12。可以選擇性地利用處理器橋接器24使其它處理器組互連。系統(tǒng)10還可以包括固件(未示出),該固件存儲(chǔ)系統(tǒng)的基本輸入/輸出邏輯,以及每當(dāng)首先接通計(jì)算機(jī)系統(tǒng)(引導(dǎo))時(shí)從外圍設(shè)備之一上查找并裝載操作系統(tǒng)。
系統(tǒng)存儲(chǔ)器20(隨機(jī)存取存儲(chǔ)器,即,RAM)在易失(臨時(shí))狀態(tài)下存儲(chǔ)處理單元使用的程序指令和操作數(shù)數(shù)據(jù)。通過,例如,采用PCI主橋接器的外圍部件互連(PCI)局部總線,外圍設(shè)備22可以連接到結(jié)構(gòu)總線16。PCI橋接器提供短等待時(shí)間通路,通過該通路,處理單元12a、12b、12c和12d可以訪問映像到總線存儲(chǔ)器或者I/O地址空間內(nèi)的任何位置的PCI器件。PCI主橋接器22還提供高帶寬通路,以使PCI器件訪問RAM 20。這種PCI器件可以包括網(wǎng)絡(luò)適配器;小型計(jì)算機(jī)系統(tǒng)接口(SCSI)適配器,有助于與永久存儲(chǔ)器件(即,硬盤)互連;以及擴(kuò)展總線橋接器,例如,行業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)擴(kuò)展總線,用于連接到輸入/輸出(I/O)設(shè)備,該輸入/輸出(I/O)設(shè)備包括鍵盤、與顯示器相連的圖形適配器以及與顯示器一起使用的圖形指示設(shè)備(鼠標(biāo))。
在對(duì)稱多處理器(SMP)計(jì)算機(jī)上,所有的處理單元12a、12b、12c和12d通常相同,即,它們都公共的指令和協(xié)議集合或子集來工作,而且它們通常具有同樣的體系結(jié)構(gòu)。與對(duì)處理單元12a所示的相同,每個(gè)處理單元可以分別包括一個(gè)或者多個(gè)處理器核心26a、26b,為了使計(jì)算機(jī)運(yùn)行,它們執(zhí)行程序指令。典型的處理器核心包括國(guó)際商業(yè)機(jī)器公司銷售的PowerTM處理器,它包括單集成電路超標(biāo)量微處理器,該單集成電路超標(biāo)量微處理器具有全部由集成電路系統(tǒng)構(gòu)成的各種執(zhí)行單元(定點(diǎn)單元、浮點(diǎn)單元以及裝載/存儲(chǔ)單元)、寄存器、緩沖器、存儲(chǔ)器以及其它功能單元。處理器核心可以根據(jù)精簡(jiǎn)指令計(jì)算(RISC)技術(shù)工作,而且它們可以采用流水線或者無序執(zhí)行指令,以進(jìn)一步提高超標(biāo)量體系結(jié)構(gòu)的性能。
每個(gè)處理器核心26a、26b可以分別包括利用高速存儲(chǔ)器件實(shí)現(xiàn)的板上(L1)緩存器(通常分離指令緩存器和數(shù)據(jù)緩存器)。緩存器通常用于臨時(shí)存儲(chǔ)可能被處理器重復(fù)訪問的數(shù)值,以通過避免從系統(tǒng)存儲(chǔ)器20裝載該數(shù)值的較長(zhǎng)步長(zhǎng),加速處理過程。處理單元可以包括另一個(gè)緩存器,即,第二級(jí)(L2)緩存器28,它與存儲(chǔ)控制器30一起支持兩個(gè)分別作為核心26a和26b的一部分的L1緩存器。還可以設(shè)置其它緩存器級(jí),例如,可以通過結(jié)構(gòu)總線16訪問的L3緩存器32。從最高級(jí)(L1)到最低級(jí)(L3)的每個(gè)緩存器級(jí)可以順序存儲(chǔ)更多的信息,但是損失是存取時(shí)間長(zhǎng)。例如,該處理器核心上的板上L1緩存器可以具有128千字節(jié)存儲(chǔ)容量的存儲(chǔ)器,L2緩存器28可以具有512千字節(jié)的存儲(chǔ)容量,L3緩存器32可以具有2兆字節(jié)的節(jié)存儲(chǔ)容量。為了有助于修理/更換有缺陷的處理單元部件,可以以可替換電路板或者類似現(xiàn)場(chǎng)可替換單元(FRU)的方式,構(gòu)造每個(gè)處理單元12a、12b、12c和12d,該可替換電路板或者類似現(xiàn)場(chǎng)可替換單元可以以模塊方式容易地?fù)Q入安裝到系統(tǒng)10上或者從系統(tǒng)10換出。
在超標(biāo)量體系結(jié)構(gòu)中,可以以有序或者無序方式完成指令。有序完成意味著某個(gè)指令之前分配的所有指令完成之前不完成所述指令。無序完成意味著只要滿足預(yù)定規(guī)則,在某個(gè)指令之前分配的所有指令已經(jīng)完成之前允許完成所述指令。在流水線超標(biāo)量處理器上,首先取指令,解碼指令,然后緩存指令。在資源和操作數(shù)可用時(shí),可以將指令分配到執(zhí)行單元。此外,根據(jù)關(guān)于所采取的分支的預(yù)測(cè),推測(cè)取指令和分配指令。結(jié)果是改變執(zhí)行階段的指令池,通過將最終結(jié)果寫入系統(tǒng)存儲(chǔ)器分層結(jié)構(gòu)沒有完成所有指令。由于資源可用,而且消除各分支,所以指令按照程序順序(program order)完成,因此,保留以程序順序執(zhí)行指令的機(jī)器的外部特征(appearance)。通過對(duì)處理器內(nèi)的硬件進(jìn)行修改,例如,通過使一個(gè)處理器核心內(nèi)具有多個(gè)執(zhí)行單元,可以進(jìn)一步提高整體指令吞吐量。
可以獨(dú)立利用被稱為硬件多線程的另一種技術(shù)執(zhí)行被稱為線程或者上下文的較短序列的指令。當(dāng)處理器因?yàn)槎喾N原因之一而停止并且不能繼續(xù)處理或者執(zhí)行這些線程之一時(shí),該處理器可以轉(zhuǎn)換到另一個(gè)線程。計(jì)算機(jī)處理器體系結(jié)構(gòu)技術(shù)領(lǐng)域內(nèi)的技術(shù)人員使用的術(shù)語“多線程”與使用該術(shù)語的軟件不同,在軟件中,將一個(gè)任務(wù)細(xì)分為多個(gè)有關(guān)線程。軟件多線程實(shí)際上包括操作系統(tǒng),在發(fā)生線程轉(zhuǎn)換之前,該操作系統(tǒng)管理數(shù)據(jù)并使寄存器中的數(shù)據(jù)存儲(chǔ)到主內(nèi)存,而且保持有關(guān)指令和相關(guān)指令的程序順序。軟件多線程既不需要,而且也不涉及硬件多線程,反之亦然。硬件多線程控制硬件體系結(jié)構(gòu)寄存器、執(zhí)行單元以及流水線處理器,以保持處理器硬件內(nèi)的一個(gè)或者多個(gè)獨(dú)立執(zhí)行指令集(線程)的狀態(tài)。在多任務(wù)系統(tǒng)中,例如,可以由不同任務(wù)、由軟件多線程系統(tǒng)編譯的不同線程或者由不同I/O處理器獲得硬件線程。在硬件多線程的每個(gè)例子中,可以使一個(gè)以上的線程獨(dú)立地保持在處理器寄存器中。
同時(shí)多線程(SMT)是一種處理器設(shè)計(jì),它將硬件多線程與超標(biāo)量處理器技術(shù)相結(jié)合,以使多個(gè)線程在每個(gè)周期發(fā)出指令。與在給定周期僅一個(gè)硬件上下文(即,線程)是活動(dòng)的其它硬件多線程體系結(jié)構(gòu)不同,SMT允許所有線程上下文同時(shí)爭(zhēng)用和共享處理器資源。此外,與缺少每線程指令級(jí)并行性(per-thread instruction-level parallelism)(ILP)的傳統(tǒng)超標(biāo)量處理器不同,同時(shí)多線程利用多個(gè)線程對(duì)單線程低ILP進(jìn)行補(bǔ)償。性能結(jié)果是顯著的較高指令吞吐量,而且程序加速工作負(fù)荷的變化,該工作負(fù)荷包括商用數(shù)據(jù)庫(kù)、萬維網(wǎng)服務(wù)器以及多程序環(huán)境和并行環(huán)境下的科學(xué)應(yīng)用。
利用SMT處理,也存在一些性能缺點(diǎn)。由于時(shí)序和復(fù)雜性,在典型的SMT處理器上,在同一個(gè)周期內(nèi)不能分配兩個(gè)線程。換句話說,在給定的周期內(nèi)可以分配一個(gè)線程,而且只能分配該線程,因此,爭(zhēng)用資源的另一個(gè)線程等待輪到它的分配。
如果分配的線程未用盡所有資源(例如,執(zhí)行單元),則一個(gè)或者多個(gè)執(zhí)行單元可能處于空閑,因?yàn)椋峙涞木€程沒有足夠的指令饋送到所有執(zhí)行單元。例如,如果在該處理器中有兩個(gè)定點(diǎn)單元(FXU)和兩個(gè)裝載/存儲(chǔ)單元(LSU),而且如果分配的線程僅具有兩個(gè)要分配的定點(diǎn)指令,則在這兩個(gè)FXU執(zhí)行指令時(shí),這兩個(gè)LSU將在一個(gè)周期內(nèi)處于空閑。這種低效率可能在處理器內(nèi)產(chǎn)生瓶頸,而且降低系統(tǒng)的總體處理吞吐量。
因此,希望開發(fā)一種在SMT處理器上處理指令的改進(jìn)型方法,以提高有效分配帶寬。如果該方法可以更有效利用現(xiàn)有處理器硬件,而不過度增加開銷,則該方法更加有利。

發(fā)明內(nèi)容
因此,本發(fā)明的一個(gè)目的是提供在計(jì)算機(jī)系統(tǒng)的處理器內(nèi)分配程序指令的改進(jìn)型方法。
本發(fā)明的另一個(gè)目的是一種有利于在同時(shí)多線程(SMT)處理器設(shè)計(jì)內(nèi)實(shí)現(xiàn)以提高分配帶寬的方法。
本發(fā)明的又一個(gè)目的是提供一種SMT處理器的改進(jìn)型構(gòu)造。
上述目的通過具有多個(gè)硬件資源的計(jì)算機(jī)處理器內(nèi)處理指令的方法來實(shí)現(xiàn),該方法通常包括步驟至少接收第一和第二程序指令;使第一和第二資源字段分別與第一和第二程序指令相關(guān)聯(lián),其中資源字段表示執(zhí)行相應(yīng)程序指令需要哪個(gè)硬件資源;根據(jù)第一和第二資源字段,計(jì)算合并第一和第二程序指令的資源要求;以及根據(jù)計(jì)算的資源要求,確定可以用于同時(shí)執(zhí)行第一和第二程序指令的資源可用性。可以將第一和第二資源矢量分別編碼為第一和第二資源字段,而且計(jì)算過程包括解碼該資源字段,以獲得第一和第二資源矢量。可以將該資源字段存儲(chǔ)到與相應(yīng)程序指令有關(guān)的指令緩存器中。處理器以同時(shí)多線程模式工作,其中第一程序指令是第一線程的一部分,而第二程序指令是第二線程的一部分。在資源可用性等于或者大于指令組的資源要求時(shí),同時(shí)將這些指令分配到硬件資源??梢詫㈤_始位插入程序指令之一中,以確定該指令組。特別是,硬件資源可以是執(zhí)行單元,至少包括定點(diǎn)單元、裝載/存儲(chǔ)單元、浮點(diǎn)單元以及分支處理單元。因此,本發(fā)明可以同時(shí)執(zhí)行多個(gè)指令,因此,可以更有效利用硬件資源,并總體提高處理器吞吐量。
根據(jù)下面所做的詳細(xì)書面描述,本發(fā)明的上述以及其它目的、特征和優(yōu)點(diǎn)顯而易見。


通過參考附圖,本領(lǐng)域內(nèi)的技術(shù)人員可以更好地理解本發(fā)明,而且本發(fā)明的許多目的、特征和優(yōu)點(diǎn)變得顯而易見。
圖1是示出傳統(tǒng)對(duì)稱多處理器(SMP)計(jì)算機(jī)系統(tǒng)的方框圖,其中示出四個(gè)通常相同的處理單元之一的內(nèi)部細(xì)節(jié);圖2是根據(jù)本發(fā)明構(gòu)造的、具有多個(gè)執(zhí)行單元的計(jì)算機(jī)處理器的一個(gè)實(shí)施例的方框圖,該執(zhí)行單元包括定點(diǎn)單元、浮點(diǎn)單元、裝載/存儲(chǔ)單元以及分支處理單元;圖3是根據(jù)本發(fā)明的一種實(shí)現(xiàn)用于分配程序指令的圖2所示處理器使用的資源字段(resource field)的圖解表示;圖4是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例對(duì)于同時(shí)多線程(SMT)模式,支持在一個(gè)處理器周期內(nèi)分配多個(gè)線程的數(shù)據(jù)流和資源字段計(jì)算過程的方框圖;
圖5是示出根據(jù)本發(fā)明的一種實(shí)現(xiàn)分配程序指令的邏輯流的示意圖。
在不同附圖中利用同樣的參考編號(hào)表示類似或者相同的項(xiàng)目。
具體實(shí)施例方式
現(xiàn)在參考附圖,特別是參考圖2,圖2示出根據(jù)本發(fā)明構(gòu)造的計(jì)算機(jī)處理器的一個(gè)實(shí)施例40。處理器40通常包括單個(gè)集成電路超標(biāo)量微處理器,而且包括各種執(zhí)行單元、寄存器、緩沖器、存儲(chǔ)器以及其它功能單元(下面做進(jìn)一步解釋),它們均由集成電路構(gòu)成。處理器40可以根據(jù)精簡(jiǎn)指令計(jì)算(RISC)技術(shù)工作。通過處理器40內(nèi)的總線接口單元(BIU)44,處理器40連接到系統(tǒng)總線或者結(jié)構(gòu)總線42。通過參與總線仲裁,BIU 44對(duì)在處理器40與連接到系統(tǒng)總線42的其它設(shè)備,例如,主內(nèi)存(未示出)之間傳送信息進(jìn)行控制。處理器40、系統(tǒng)總線42以及連接到系統(tǒng)總線42的其它設(shè)備一起構(gòu)成主數(shù)據(jù)處理系統(tǒng)。本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員應(yīng)當(dāng)知道本發(fā)明并不局限于圖2所示的特定構(gòu)造,因?yàn)樵谌詫?shí)現(xiàn)在此公開的新穎功能性的同時(shí),可以省略一些部件,可以附加其它部件,或者設(shè)置不同互連。
BIU 44連接到處理器40內(nèi)的指令緩存器與存儲(chǔ)器管理單元(MMU)46和數(shù)據(jù)緩存器與MMU 48。緩存器,例如,指令緩存器與MMU 46和數(shù)據(jù)緩存器與MMU 48內(nèi)的緩存器可以使處理器40對(duì)先前從主內(nèi)存?zhèn)魉偷皆摼彺嫫鞯淖訑?shù)據(jù)集或者子指令集實(shí)現(xiàn)較快的存取時(shí)間,因此,提高了主數(shù)據(jù)處理系統(tǒng)的運(yùn)行速度。指令緩存器與MMU 46進(jìn)一步連接到順序取指令器50,在每個(gè)周期,該順序取指令器50均要從指令緩存器與MMU 46取指令以便執(zhí)行。順序取指令器50將從指令緩存器與MMU 46取出的分支指令發(fā)送到分支處理單元(BPU)52,用于計(jì)算下一個(gè)取指令地址,但是臨時(shí)存儲(chǔ)指令隊(duì)列54上的順序指令,供處理器40內(nèi)的其它執(zhí)行電路系統(tǒng)執(zhí)行。
除了BPU 52、處理器40內(nèi)的執(zhí)行電路系統(tǒng)還具有用于執(zhí)行順序指令的多個(gè)執(zhí)行單元,包括定點(diǎn)單元(FXU)56、裝載存儲(chǔ)單元(LSU)58、浮點(diǎn)單元(FPU)60以及其它分支處理單元(BPU)61。在每個(gè)處理器周期中,這些執(zhí)行單元56、58、60和61執(zhí)行順序指令中特定類型的一個(gè)或者多個(gè)指令。例如,利用從特定通用寄存器(GPR)62或者GPR更名緩沖器64接收的源操作數(shù),F(xiàn)XU 56執(zhí)行定點(diǎn)數(shù)學(xué)運(yùn)算和邏輯運(yùn)算,例如,加、減、“與”、“或”以及“異或”。執(zhí)行了定點(diǎn)指令后,F(xiàn)XU 56將該指令的數(shù)據(jù)結(jié)果輸出到GPR更名緩沖器64,GPR更名緩沖器64臨時(shí)存儲(chǔ)操作數(shù)數(shù)據(jù),直到通過將GPR更名緩沖器64內(nèi)的結(jié)果數(shù)據(jù)傳送到一個(gè)或者多個(gè)GPR 62,完成該指令。
FPU 60對(duì)從浮點(diǎn)寄存器(FPR)66或者FPR更名緩沖器68接收的源操作數(shù)執(zhí)行單精度和雙精度浮點(diǎn)運(yùn)算和邏輯運(yùn)算,例如,浮點(diǎn)乘法和除法。FPU 60將通過執(zhí)行浮點(diǎn)指令獲得的數(shù)據(jù)輸出到選擇的FPR更名緩沖器68,該選擇的FPR更名緩沖器68臨時(shí)存儲(chǔ)該結(jié)果數(shù)據(jù),直到通過將結(jié)果數(shù)據(jù)從FPR更名緩沖器68傳送到選擇的FPR 66。LSU 58執(zhí)行浮點(diǎn)指令和定點(diǎn)指令,這樣將數(shù)據(jù)從存儲(chǔ)器(即,數(shù)據(jù)緩存器與MMU48內(nèi)的數(shù)據(jù)緩存器或者主內(nèi)存)裝載到選擇的GPR 62或者FPR 66,或者這樣將選擇的GPR 62、GPR更名緩沖器64、FPR 66或者FPR更名緩沖器68之一輸出的數(shù)據(jù)存儲(chǔ)到系統(tǒng)存儲(chǔ)器。BPU 61執(zhí)行調(diào)節(jié)代碼控制指令和分支指令。
處理器40可以采用流水線執(zhí)行指令和無序執(zhí)行指令,以進(jìn)一步提高超標(biāo)量體系結(jié)構(gòu)的性能。因此,只要觀察到數(shù)學(xué)相關(guān)性,F(xiàn)XU 56、LSU 58、FPU 60以及BPU 61就可以以任意順序執(zhí)行指令。此外,以流水線階段順序,特別是,以5個(gè)不同流水線階段取指令、解碼/分配、執(zhí)行、結(jié)束以及完成的順序FXU 56、LSU 58以及BPU 61分別對(duì)指令進(jìn)行處理。
在取指令階段,順序取指令器50從指令緩存器與MMU 46中檢索與一個(gè)或者多個(gè)存儲(chǔ)地址有關(guān)的一個(gè)或者多個(gè)指令。順序取指令器50使從指令緩存器與MMU 46取出的順序指令存儲(chǔ)到指令隊(duì)列54上。相反,順序取指令器50移除(關(guān)閉(fold out))指令流中的分支指令,然后,將它們轉(zhuǎn)發(fā)到BPU 52,供執(zhí)行。BPU 52包括預(yù)測(cè)機(jī)構(gòu),該預(yù)測(cè)機(jī)構(gòu)可以包括動(dòng)態(tài)預(yù)測(cè)機(jī)構(gòu),例如,分支歷史表,通過預(yù)測(cè)是否取分支,它可以使BPU 52推測(cè)執(zhí)行未定條件分支指令。
在解碼/分配階段期間,分配單元70對(duì)指令隊(duì)列54上的一個(gè)或者多個(gè)指令進(jìn)行解碼,并將它們分配到執(zhí)行單元56、58、60和61,下面將做進(jìn)一步說明。此外,分配單元70對(duì)分別分配的指令結(jié)果數(shù)據(jù)分配GPR更名緩沖器64或者FPR更名緩沖器68內(nèi)的更名緩沖器。分配之后,指令還存儲(chǔ)在完成單元72的多時(shí)隙完成緩沖器上,以等待完成。在無序執(zhí)行期間,利用唯一指令標(biāo)識(shí)符,處理器40跟蹤所分配的指令的程序順序。
在執(zhí)行階段期間,在用于指出的運(yùn)算的操作數(shù)和執(zhí)行資源可用時(shí),執(zhí)行單元56、58、60和61有機(jī)會(huì)執(zhí)行從分配單元70接收的指令。執(zhí)行單元56、58、60和61優(yōu)選裝備預(yù)留站(reservation station),用于存儲(chǔ)分配到執(zhí)行單元的指令,直到操作數(shù)或者執(zhí)行資源可用。在終止執(zhí)行指令后,根據(jù)指令類型,如果存在,執(zhí)行單元56、68、60和61使數(shù)據(jù)結(jié)果存儲(chǔ)到GPR更名緩沖器64或者FPR更名緩沖器68上。然后,執(zhí)行單元56、68、60和61通知完成單元72已經(jīng)完成執(zhí)行哪些指令。最后,以從完成單元72的完成緩沖器輸出的程序順序完成各指令。通過分別將GPR更名緩沖器64和FPR更名緩沖器68輸出的指令的數(shù)據(jù)結(jié)果傳送到GPR 62和FPR 66,完成FXU 56和FPU 60執(zhí)行的指令。通過將結(jié)束的指令傳送到對(duì)其執(zhí)行指出的裝載/存儲(chǔ)操作的完成存儲(chǔ)隊(duì)列或者完成裝載隊(duì)列,完成LSU 58執(zhí)行的裝載和存儲(chǔ)指令。
在說明性實(shí)施例中,通過使多線程在每個(gè)周期發(fā)出不同指令,處理器40利用同時(shí)多線程(SMT)增強(qiáng)處理器吞吐量。在處理器40內(nèi),可以以各種方式,例如,粗粒度多線程(在執(zhí)行長(zhǎng)等待時(shí)間事件的線程經(jīng)驗(yàn)(thread experierce),例如,從存儲(chǔ)器中檢索數(shù)據(jù)和/或者指令、處理器中斷等之前,執(zhí)行一個(gè)線程)或者細(xì)粒度多線程(基于逐個(gè)周期,交錯(cuò)或者轉(zhuǎn)換各線程),執(zhí)行硬件多線程。通常,處理器40使用同時(shí)硬件多線程以在處理器上并行保持N個(gè)線程、或者N個(gè)狀態(tài),然后,同時(shí)并行執(zhí)行N個(gè)線程。分別對(duì)后面的某些寄存器(復(fù)制N次)內(nèi)的N個(gè)線程的結(jié)果,復(fù)制處理器寄存器通用寄存器、浮點(diǎn)寄存器、條件寄存器、浮點(diǎn)狀態(tài)與控制寄存器、計(jì)數(shù)寄存器、鏈路寄存器、異常寄存器、保存/恢復(fù)寄存器、專用寄存器等。如果沒有,可以復(fù)制諸如段旁視寄存器的專用緩沖器,可以利用線程號(hào)標(biāo)記每個(gè)項(xiàng)目,而且清倉(cāng)各消除轉(zhuǎn)換器上的每個(gè)項(xiàng)目。此外,還可以復(fù)制某些分支預(yù)測(cè)機(jī)構(gòu),例如,相關(guān)寄存器和返回堆棧。不需要對(duì)每個(gè)線程復(fù)制所有的處理器特征,存在一些共享的和一些復(fù)制的寄存器,以及/或者在流水線上存在一些單獨(dú)并行級(jí),或者存在該流水線的其它共享級(jí)。不需要復(fù)制處理器的某些較高級(jí)功能,例如,緩存器、指令緩沖器、存儲(chǔ)隊(duì)列、指令分配程序、功能單元或者執(zhí)行單元、流水線、轉(zhuǎn)換旁視緩沖器(TLB)或者分支歷史表。
有利的是,在SMT處理器設(shè)計(jì)中可以順序本發(fā)明,以通過增強(qiáng)將指令分配到各種執(zhí)行單元的方式,提高分配帶寬。利用每個(gè)指令將編碼的資源字段傳送到分配單元70,以指出在每次分配時(shí),每個(gè)特定指令分別使用什么資源。對(duì)給定指令的資源字段進(jìn)行編碼,然后,將它寫入指令緩存器與MMU 46(“ICache”),而且使它與該指令本身一起存儲(chǔ)到該ICache。資源可以是任意功能單元或者建造的設(shè)施,特別是指諸如FXU 56、LSU 58、FPU 60以及BPU 61的執(zhí)行單元。
圖3示出指令82的資源字段80的一種實(shí)現(xiàn)。資源字段80包括“開始”位和要求的資源位(在該例子中是3位)。開始位用于將指令組織在一起,以便同事分配多個(gè)指令。換句話說,可以利用組分配多個(gè)指令。正如下面進(jìn)一步說明的那樣,可以在寫入ICache之前,在預(yù)解碼級(jí)形成組。在解碼資源字段時(shí),被解碼的位指出該指令的資源要求(即,資源矢量82)。在該例子中,資源位被解碼為5個(gè)可能值之一,以指出下面的5個(gè)資源要求“1 FXU”;“1 LSU”;“1 FPU”;“1 BPU”;或者“2FXU”之一?!? FXU”矢量表示該指令需要使用一個(gè)(需要一個(gè)且僅需要一個(gè))FXU執(zhí)行單元;如果該值是0,則該操作不需要定點(diǎn)單元。“1LSU”矢量表示該指令需要使用一個(gè)LSU執(zhí)行單元;如果該值是0,則該操作不需要裝載/存儲(chǔ)單元。“1 FPU”矢量表示該指令需要使用一個(gè)FPU執(zhí)行單元;如果該值是0,則該操作不需要浮點(diǎn)單元。“1 BPU”矢量表示該指令需要一個(gè)BPU執(zhí)行單元;如果該值是0,則該操作不需要分支處理單元?!? FXU”矢量表示該指令需要使用兩個(gè)FXU執(zhí)行單元;如果該值是0,則該操作不需要,或者需要一個(gè)定點(diǎn)單元,如“1 FXU”位規(guī)定的那樣。因此,該例子指具有兩個(gè)FXU 56(“FXU0”和“FXU1”)的處理器。根據(jù)該實(shí)現(xiàn)和指令的類型,被解碼的資源字段的多個(gè)位可以是獲得的,以表示該指令所需資源的其它變化。
這樣形成指令組,以致可以一起分配同一個(gè)線程上的同一個(gè)組中的所有指令。該命令意味著(i)該組內(nèi)的指令之間不能相關(guān);以及(ii)該組的資源要求不能超過可用資源。例如,如果微處理器具有兩個(gè)FXU,則該指令組不能要求兩個(gè)以上的FXU來完成。對(duì)于給定的線程,在第二FXU指令之后,為了保證在一組中最多有兩個(gè)FXU指令,可以在該指令上插入開始位,以終止該組。在另一個(gè)例子中,如果在微處理器上有5個(gè)執(zhí)行單元(任意類型的),則如果在同一個(gè)正確內(nèi)可以將先前(舊的)的所有5個(gè)指令分配到5個(gè)執(zhí)行單元,則將開始位插入第六指令。因此,如果指令是組中的第一指令,則忽略開始位,而認(rèn)為該指令和要求的資源字段有效(認(rèn)為該指令本身有效)。如果指令不是該組中的第一指令,則評(píng)估該開始位,而且如果該開始位是獲得的(1),則認(rèn)為該指令和任意新指令無效,而且這些指令要求的資源字段也無效。還將開始位插入對(duì)舊指令相關(guān)的任意指令中,以確保相關(guān)指令與產(chǎn)生該結(jié)果的指令在不同組中。
圖4示出對(duì)于SMT模式,支持在同一個(gè)周期內(nèi)將兩個(gè)線程分配到FXU的數(shù)據(jù)流和資源字段計(jì)算過程。對(duì)每個(gè)指令產(chǎn)生資源位和開始位的預(yù)解碼電路76檢驗(yàn)L2緩存器,然后,將利用指令將該信息寫入ICache46。在取指令時(shí)間,將指令和這些指令的資源字段發(fā)送到指令隊(duì)列54中的指令緩沖器(IBUF),以存儲(chǔ)要分配的指令。在SMT模式下,每個(gè)線程有一個(gè)IBUF。在該例子中,在SMT模式下有兩個(gè)線程要執(zhí)行,“thread0”和“thread1”。在任意給定時(shí)間,一個(gè)線程具有較高分配優(yōu)先權(quán)(該線程被稱為主線程),而另一個(gè)線程具有較低分配優(yōu)先權(quán)(該線程被稱為輔助線程)。當(dāng)從IBUF讀出指令供分配單元70分配時(shí),還讀出這些指令的資源字段。在同一個(gè)時(shí)間讀兩個(gè)IUF。邏輯電路90分別對(duì)每個(gè)線程的資源字段進(jìn)行解碼,以確定每個(gè)線程分別需要什么資源。還讀開始位。忽略該組中第一指令的開始位。如果特定指令X的開始位是獲得的,而且指令X不是該組中的第一個(gè),則該指令以及比X新的任意指令的資源字段無效,如上所述(即,該組中比指令X舊的指令的資源字段仍有效)。然后,邏輯電路92將每個(gè)線程的解碼資源字段(資源矢量)合并在一起,以計(jì)算兩個(gè)線程所需的總資源。邏輯電路92產(chǎn)生復(fù)用器選擇信號(hào),用于正確分配指令,該復(fù)用器選擇信號(hào)保存在鎖存器94中。如果用于同時(shí)分配兩個(gè)線程的資源不足,則對(duì)線程之一產(chǎn)生“保持”信號(hào),并將該“保持”信號(hào)存儲(chǔ)到單獨(dú)鎖存器96中。然后,將指令發(fā)送到FXU分配復(fù)用器98,邏輯92產(chǎn)生的選擇信號(hào)控制該FXU分配復(fù)用器98。復(fù)用器98將選擇的指令傳送到各FXU 56。
根據(jù)兩個(gè)線程的總資源要求,可以識(shí)別幾種情況。如果兩個(gè)線程要求的總資源等于或者小于可用資源數(shù),則可以同時(shí)分配這兩個(gè)線程的所有指令。例如,如果微處理器具有兩個(gè)可用FXU執(zhí)行單元,thread0僅需要一個(gè)FXU,而thread1僅需要一個(gè)FXU,則可以在同一種周期分配兩個(gè)線程中的所有指令。如果兩個(gè)線程需要的總資源大于可用資源數(shù),則主線程將占用它所需要的所有資源,而輔助線程將占用任意剩余資源。例如,如果微處理器還具有兩個(gè)可用FXU執(zhí)行單元,thread0需要一個(gè)FXU,thread1需要兩個(gè)FXU,thread0是主線程,則仍可以在同一個(gè)周期分配兩個(gè)線程,其中thread0分配一個(gè)FXU指令,因?yàn)樗侵骶€程,而thread1只能分配其兩個(gè)FXU指令之一。輔助線程中的第二FXU指令將等待,直到適合進(jìn)行資源計(jì)算和分配的下一個(gè)周期。在另一個(gè)例子中,還是對(duì)于具有兩個(gè)可用FXU執(zhí)行單元的微處理器,如果thread0需要兩個(gè)FXU,thread1需要一個(gè)FXU,thread0是主線程,則僅分配thread0。thread0能夠分配其兩個(gè)FXU指令,因?yàn)樗侵骶€程,而thread1不能分配任何FXU指令。輔助線程中的FXU指令將等待,直到適合進(jìn)行資源計(jì)算和分配的下一個(gè)周期。
圖3和4所示實(shí)施例的描述的體系結(jié)構(gòu)僅是舉例說明,而沒有限制性意義,由于可以有比同一種類型僅兩個(gè)執(zhí)行單元多的執(zhí)行單元,因此,多個(gè)執(zhí)行單元可以是定點(diǎn)單元之外的單元。例如,在一個(gè)處理器核心中可以有4個(gè)FXU、4個(gè)LSU、4個(gè)FPU以及4個(gè)BPU。相反,可以在沒有備用執(zhí)行單元,即,僅有一個(gè)FXU、一個(gè)LSU、一個(gè)FPU以及一個(gè)BPU的系統(tǒng)內(nèi)采用本發(fā)明,因?yàn)椋景l(fā)明可以同時(shí)將多個(gè)指令分配到這些單元之任一。
圖5是示出在SMT模式下,分配兩個(gè)線程的邏輯處理流程的示意圖。該處理過程以從L2緩存器計(jì)算指令開始(100)。預(yù)解碼各指令,以產(chǎn)生其資源位和開始位(101),然后,將該信息與該指令一起寫入指令緩存器(102)。然后,對(duì)IBUF取指令(103)。進(jìn)行檢驗(yàn),以確定涉及哪個(gè)線程(thread0或者thread1)(104)。如果該指令來自thread0,則將它們寫入IBUF0(104),然后,分配單元70從IBUF0讀取該指令(106)。對(duì)每個(gè)指令的資源字段進(jìn)行解碼(108),然后,計(jì)算該指令要求的資源(110)。返回步驟102,如果該指令不是來自thread0(即,它們是thread1的一部分),則將它們寫入IBUF1(112),然后,分配單元70從IBUF1讀取這些指令(114)。以同樣的方法,對(duì)每個(gè)指令的資源字段進(jìn)行解碼(116),然后,計(jì)算該指令要求的資源(118)。從兩個(gè)線程解碼的資源矢量合并在一起,以計(jì)算兩個(gè)線程的總資源要求(120)。然后,分配邏輯確定兩個(gè)線程要求的資源是否等于或者小于可用資源(122)。如果是這樣,則分配兩個(gè)線程中的所有指令。如果不是這樣,則檢驗(yàn)?zāi)膫€(gè)線程是主線程(126)。如果thread0是主線程,則分配thread0中的所有指令,而如果存在剩余可用資源,則分配thread1中的附加指令,同時(shí)在下一個(gè)周期內(nèi)保存不能從thread1分配的指令(128)。如果thread0不是主線程(即,thread1是主線程),則對(duì)所分配的、線程1的所有指令的優(yōu)先權(quán)顛倒,而且盡可能分配thread0的附加指令,同時(shí),在下一個(gè)周期保存thread0內(nèi)的未分配附加指令(130)。
因此,通過更有效利用現(xiàn)有處理器硬件,本發(fā)明顯著改善SMT環(huán)境下的分配帶寬。這種改善僅引起在ICache 46的預(yù)解碼級(jí)少量附加硬件以及在分配單元70附加資源邏輯。
盡管參考具體實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但是并不能將本發(fā)明理解為具有限制性意義。通過參考對(duì)本發(fā)明所做的描述,所公開實(shí)施例的各種修改以及本發(fā)明的變換實(shí)施例對(duì)于本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員是顯而易見的。
例如,盡管本發(fā)明特別適合高端多處理器計(jì)算機(jī)系統(tǒng),但是,它也可以用于單處理器系統(tǒng)。因此,可以預(yù)料,在不脫離所附權(quán)利要求限定的本發(fā)明實(shí)質(zhì)范圍的情況下,可以進(jìn)行各種修改。
權(quán)利要求
1.一種在具有多個(gè)硬件資源的計(jì)算機(jī)處理器內(nèi)處理指令的方法,包括至少接收第一和第二程序指令;使第一和第二資源字段分別與第一和第二程序指令相關(guān)聯(lián),其中資源字段表示執(zhí)行相應(yīng)程序指令需要哪個(gè)硬件資源;根據(jù)第一和第二資源字段,計(jì)算合并第一和第二程序指令的資源要求;以及根據(jù)所計(jì)算的資源要求,確定可以用于同時(shí)執(zhí)行第一和第二程序指令的資源。
2.根據(jù)權(quán)利要求1所述的方法,其中所述相關(guān)聯(lián)包括將第一和第二資源矢量分別編碼為第一和第二資源字段;以及所述計(jì)算包括解碼第一和第二資源字段,以獲得第一和第二資源矢量。
3.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括將第一和第二資源字段與相應(yīng)第一和第二程序指令一起存儲(chǔ)到指令緩存器中。
4.根據(jù)權(quán)利要求1所述的方法,其中處理器以同時(shí)多線程模式工作,其中第一程序指令是第一線程的一部分,而第二程序指令是第二線程的一部分。
5.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括根據(jù)確定的資源可用性,同時(shí)將第一和第二程序指令分配到硬件資源。
6.根據(jù)權(quán)利要求1所述的方法,其中硬件資源是執(zhí)行單元,至少包括定點(diǎn)單元、裝載/存儲(chǔ)單元、浮點(diǎn)單元以及分支處理單元。
7.根據(jù)權(quán)利要求1所述的方法,其中所述確定包括將計(jì)算的資源要求與該多個(gè)硬件資源進(jìn)行比較。
8.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括通過檢驗(yàn)第一和第二資源字段,形成至少包括第一和第二指令、同時(shí)執(zhí)行的指令組。
9.根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包括將開始位至少插入程序指令之一中,以確定該指令組。
10.一種處理器,包括多個(gè)硬件資源;以及分配單元,用于將程序指令分配到所述硬件資源,所述分配單元包括指令組形成邏輯,該指令組形成邏輯計(jì)算至少合并第一和第二程序指令的資源要求,并根據(jù)所計(jì)算的資源要求,確定可以用于同時(shí)執(zhí)行合并的程序指令的資源可用性。
11.根據(jù)權(quán)利要求10所述的處理器,進(jìn)一步包括預(yù)解碼邏輯,用于使資源字段與相應(yīng)程序指令相關(guān),以指出需要哪個(gè)所述硬件資源執(zhí)行相應(yīng)程序指令。
12.根據(jù)權(quán)利要求11所述的處理器,其中通過將資源矢量編碼為相應(yīng)資源字段,所述預(yù)解碼邏輯使各資源字段相關(guān);以及所述指令組形成邏輯解碼資源字段,以獲得相應(yīng)資源矢量。
13.根據(jù)權(quán)利要求11所述的處理器,進(jìn)一步包括緩存器,用于存儲(chǔ)程序指令,并將它們送到所述分配單元,而且用于存儲(chǔ)與相應(yīng)程序指令相關(guān)的資源字段。
14.根據(jù)權(quán)利要求10所述的處理器,其中該處理器以同時(shí)多線程模式工作,其中合并程序指令中的第一程序指令是第一線程的一部分,而合并程序指令中的第二程序指令是第二線程的一部分。
15.根據(jù)權(quán)利要求10所述的處理器,其中根據(jù)確定的資源可用性,所述分配單元同時(shí)將合并的程序指令分配到硬件資源。
16.根據(jù)權(quán)利要求10所述的處理器,其中硬件資源是執(zhí)行單元,至少包括定點(diǎn)單元、裝載/存儲(chǔ)單元、浮點(diǎn)單元以及分支處理單元。
17.根據(jù)權(quán)利要求10所述的處理器,其中通過將計(jì)算的資源要求與該多個(gè)硬件資源進(jìn)行比較,所述指令組形成邏輯確定資源可用性。
18.根據(jù)權(quán)利要求11所述的處理器,其中通過檢驗(yàn)第一和第二資源字段,所述指令組形成邏輯形成至少包括第一和第二指令、同時(shí)執(zhí)行的指令組。
19.根據(jù)權(quán)利要求18所述的處理器,其中所述預(yù)解碼邏輯將開始位至少插入合并程序指令之一中,以確定該指令組。
20.一種計(jì)算機(jī)系統(tǒng),包括系統(tǒng)存儲(chǔ)器件;緩存器,連接到所述系統(tǒng)存儲(chǔ)器件;以及至少一個(gè)處理器,用于從所述緩存器接收程序指令,所述處理器具有多個(gè)硬件資源;以及指令組形成邏輯,該指令組形成邏輯計(jì)算至少合并兩個(gè)程序指令的硬件資源要求,并根據(jù)計(jì)算的資源要求,確定可以用于同時(shí)執(zhí)行合并的程序指令的硬件資源可用性。
21.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)系統(tǒng),其中所述緩存器包括預(yù)解碼邏輯,用于使資源字段與相應(yīng)程序指令相關(guān),以指出需要哪個(gè)所述硬件資源執(zhí)行相應(yīng)程序指令。
22.根據(jù)權(quán)利要求21所述的計(jì)算機(jī)系統(tǒng),其中通過將資源矢量編碼為相應(yīng)資源字段,所述預(yù)解碼邏輯使各資源字段相關(guān);以及所述指令組形成邏輯解碼資源字段,以獲得相應(yīng)資源矢量。
23.根據(jù)權(quán)利要求21所述的計(jì)算機(jī)系統(tǒng),其中所述緩存器進(jìn)一步存儲(chǔ)與相應(yīng)程序指令相關(guān)的資源字段。
24.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)系統(tǒng),其中所述處理器以同時(shí)多線程模式工作,其中合并程序指令中的第一程序指令是第一線程的一部分,而合并程序指令中的第二程序指令是第二線程的一部分。
25.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)系統(tǒng),其中所述處理器進(jìn)一步具有分配單元,根據(jù)確定的資源可用性,該分配單元同時(shí)將合并的程序指令分配到所述硬件資源。
26.根據(jù)權(quán)利要求25所述的計(jì)算機(jī)系統(tǒng),其中所述硬件資源是執(zhí)行單元,至少包括定點(diǎn)單元、裝載/存儲(chǔ)單元、浮點(diǎn)單元以及分支處理單元。
27.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)系統(tǒng),其中通過將所計(jì)算的資源要求與該多個(gè)硬件資源進(jìn)行比較,所述指令組形成邏輯確定硬件資源可用性。
28.根據(jù)權(quán)利要求21所述的計(jì)算機(jī)系統(tǒng),其中通過檢驗(yàn)第一和第二資源字段,所述指令組形成邏輯形成至少包括第一和第二指令、同時(shí)執(zhí)行的指令組。
29.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)系統(tǒng),其中所述預(yù)解碼邏輯將開始位至少插入合并程序指令之一中,以確定該指令組。
全文摘要
一種在計(jì)算機(jī)處理器內(nèi)處理指令的更有效方法,包括使資源字段與相應(yīng)程序指令相關(guān)聯(lián),其中資源字段表示執(zhí)行該程序指令需要哪個(gè)處理器硬件資源;根據(jù)其資源字段,計(jì)算合并兩個(gè)或者更多個(gè)程序指令的資源要求;以及根據(jù)所計(jì)算的資源要求,確定可以用于同時(shí)執(zhí)行被合并的程序指令的資源。可以將表示所需資源的資源矢量編碼為資源字段;以及在后面的階段解碼該資源字段,以獲得資源矢量??梢詫①Y源字段存儲(chǔ)到與相應(yīng)程序指令有關(guān)的指令緩存器中。該處理器以同時(shí)多線程模式工作,其中不同的程序指令是不同硬件線程的一部分。在可用資源等于或者大于一組指令的資源要求時(shí),可以將這些程序指令同時(shí)分配到硬件資源。
文檔編號(hào)G06F9/38GK1760826SQ20051008196
公開日2006年4月19日 申請(qǐng)日期2005年7月8日 優(yōu)先權(quán)日2004年10月14日
發(fā)明者布賴恩·威廉·柯倫, 布賴恩·R·康尼格斯伯格, 李漢魁, 戴維·阿諾德·盧卡, 鄧·考克·古因 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1