專利名稱:支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)、電子設(shè)備技術(shù)領(lǐng)域,特別涉及一種支持同時(shí)多線程的超長(zhǎng)指 令字處理器結(jié)構(gòu)。
背景技術(shù):
微處理器是一個(gè)集成在一片上的半導(dǎo)體集成電路,包括對(duì)一系列算術(shù)邏輯操作的 控制和執(zhí)行?,F(xiàn)代處理器設(shè)計(jì)的優(yōu)化通常的途徑有如下三種1、提高處理器主頻,縮短每條指令執(zhí)行時(shí)間。2、優(yōu)化編譯器,采用效率更高的指令。3、指令級(jí)并行技術(shù)(ILP)。處理器的更高性能由于不能從傳統(tǒng)結(jié)構(gòu)中得到解決,因此提出了各種提高性能的 策略。其中提高時(shí)鐘頻率和編譯器優(yōu)化的效果是有限的,最好的方法是提高并行性,當(dāng)前高 性能處理器結(jié)構(gòu)的主要特點(diǎn)就是采用了各種并行處理技術(shù)。指令級(jí)并行(ILP)就是通過(guò)探 究程序的并行性,在每個(gè)指令周期中并行執(zhí)行指令來(lái)提高每條指令的平均執(zhí)行時(shí)間。從指令級(jí)并行的方向出發(fā),產(chǎn)生了多發(fā)射處理器的概念。多發(fā)射處理器在每個(gè)周 期可以發(fā)射多條可以并行執(zhí)行的指令,分發(fā)到各個(gè)執(zhí)行單元上同時(shí)執(zhí)行。多發(fā)射處理器有 兩種超標(biāo)量和超長(zhǎng)指令字(VLIW)。超標(biāo)量處理器利用硬件動(dòng)態(tài)發(fā)現(xiàn)并行性,VLIW則利用 編譯器靜態(tài)地開發(fā)并行性。VLIW微處理器以其硬件控制簡(jiǎn)單和具有開發(fā)指令級(jí)并行性的巨大潛力而著稱。 VLIW處理器為了保證指令能夠并行執(zhí)行,通常具有多個(gè)功能單元。例如,一個(gè)8發(fā)射的VLIW 處理器通常具有8個(gè)功能單元來(lái)保證并行指令的執(zhí)行。但是,單個(gè)程序有限的指令級(jí)并行 度會(huì)導(dǎo)致處理器功能單元利用率不高的情況,進(jìn)一步加大發(fā)射寬度只會(huì)加重這種情況。處 理器資源的浪費(fèi)分為水平浪費(fèi)和垂直浪費(fèi)。當(dāng)多發(fā)射處理器不能發(fā)現(xiàn)足夠的指令來(lái)填滿發(fā) 射槽時(shí)就產(chǎn)生了水平浪費(fèi)(Horizontal Waste)。此外當(dāng)資源沖突造成多發(fā)射處理器在接下 來(lái)的時(shí)鐘周期中不能發(fā)射指令,則造成了垂直浪費(fèi)(Vertical Waste)。實(shí)際上在很多工作負(fù)載中都存在著不同程度的線程級(jí)的并行性。因此,研究人員 提出利用線程級(jí)并行(TLP)的方式來(lái)提高處理器資源利用率?,F(xiàn)有的支持多線程的處理器有三種基本形式重疊式多線程(interleaved multithreading)處理器、單片多處理器(CMP)、同時(shí)多線程(SMT)。其中重疊式多線程處理 器每個(gè)周期只能發(fā)射來(lái)自一個(gè)線程的指令。多個(gè)線程的指令流交替占據(jù)指令發(fā)射槽。重疊 式多線程按照線程調(diào)度方式還可以分為細(xì)粒度多線程(fine-grained multithreading)和 粗粒度(coarse-grained multithreading)多線程。細(xì)粒度多線程在每個(gè)時(shí)鐘周期都進(jìn)行 上下文切換,粗粒度多線程則只在線程遇到長(zhǎng)延時(shí)操作時(shí)才進(jìn)行線程切換。重疊式多線程 只能消除處理器資源的垂直浪費(fèi)。而CMP和SMT都可以使不同線程的指令同時(shí)運(yùn)行,同時(shí) 減小資源的水平浪費(fèi)和垂直浪費(fèi)。CMP讓不同的處理器核運(yùn)行不同的線程從而實(shí)現(xiàn)同時(shí)多 線程。而SMT允許在一個(gè)周期內(nèi)發(fā)射來(lái)自不同線程的指令,從而填滿指令發(fā)射槽,提高資源
4利用率。與SMT相比,CMP方式在維護(hù)Cache —致性上需要有額外開銷。為了提高指令并行度,現(xiàn)有的VLIW處理器通常具有較大的發(fā)射寬度。但是,由于 程序的并行性有限,以及編譯器并行調(diào)度的效率有限,造成指令發(fā)射槽有較大的水平浪費(fèi)。 例如,一個(gè)8發(fā)射的VLIW處理器,在編譯器效率有限的情況下,每周期能夠?qū)嶋H并行執(zhí)行的 指令數(shù)通常小于發(fā)射寬度的一半,與4發(fā)射處理器的效果基本相同。在運(yùn)行多線程程序時(shí), 由于水平浪費(fèi)無(wú)法解決,仍然無(wú)法充分利用處理器資源。
發(fā)明內(nèi)容
本發(fā)明的目的旨在至少解決上述的技術(shù)缺陷之一。為此,本發(fā)明的一個(gè)目的在于提出一種支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié) 構(gòu),該結(jié)構(gòu)通過(guò)對(duì)發(fā)射寬度較大的單個(gè)VLIW豐富的功能單元重新分配,且采用多線程共享 數(shù)據(jù)緩存的方式,能夠最大程度的解決處理器資源浪費(fèi)的問(wèn)題。為達(dá)到上述目的,本發(fā)明提出了一種支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu), 包括相互并行的至少兩個(gè)指令處理流水線結(jié)構(gòu),其中,每個(gè)所述指令處理流水線結(jié)構(gòu)包 括指令獲取模塊,所述指令獲取模塊用于獲取指令信息;與所述指令獲取模塊對(duì)應(yīng)的指 令分發(fā)模塊,所述指令分發(fā)模塊用于接收所述指令獲取模塊獲取的指令信息并進(jìn)行分配; 與所述指令分發(fā)模塊對(duì)應(yīng)的指令執(zhí)行模塊,所述指令執(zhí)行模塊包括多個(gè)指令執(zhí)行單元,其 中,所述指令執(zhí)行單元為指令執(zhí)行單元A、指令執(zhí)行單元D、指令執(zhí)行單元M和指令執(zhí)行單元 F,其中,所述指令執(zhí)行單元A、指令執(zhí)行單元D、指令單元M和指令執(zhí)行單元F用于執(zhí)行所述 指令分發(fā)模塊分發(fā)的相應(yīng)指令信息,以得到執(zhí)行結(jié)果;通用寄存器堆,所述通用寄存器堆用 于存儲(chǔ)相應(yīng)執(zhí)行單元A、執(zhí)行單元M和執(zhí)行單元D的執(zhí)行結(jié)果;浮點(diǎn)寄存器堆,所述浮點(diǎn)寄 存器堆用于存儲(chǔ)相應(yīng)執(zhí)行單元D和執(zhí)行單元F的執(zhí)行結(jié)果;和控制寄存器堆,所述控制寄存 器堆用于存儲(chǔ)指令的控制信號(hào),其中,所述控制信號(hào)控制指令的執(zhí)行方式。在本發(fā)明的一個(gè)實(shí)施例中,所述指令獲取模塊包括第一指令獲取單元、第二指令 獲取單元、第三指令獲取單元和第四指令獲取單元,所述指令分發(fā)模塊包括第一指令分發(fā) 單元、第二指令分發(fā)單元、第三指令分發(fā)單元和第四指令分發(fā)單元,其中,所述第一指令獲 取單元、第二指令獲取單元、第三指令獲取單元和第四指令獲取單元在每個(gè)時(shí)鐘周期分別 對(duì)應(yīng)于所述第一指令分發(fā)單元、第二指令分發(fā)單元、第三指令分發(fā)單元和第四指令分發(fā)單 元中的一個(gè)指令分發(fā)單元,以在當(dāng)前時(shí)鐘周期為對(duì)應(yīng)的第一指令分發(fā)單元、第二指令分發(fā) 單元、第三指令分發(fā)單元和第四指令分發(fā)單元提供指令信息。在本發(fā)明的一個(gè)實(shí)施例中,所述第一指令分發(fā)單元、第二指令分發(fā)單元、第三指令 分發(fā)單元和第四指令分發(fā)單元的指令信息依次組成指令流序列,且所述指令流序列中的每 個(gè)指令信息包括執(zhí)行單元選擇位,其中,所述執(zhí)行單元選擇位用于判斷所述指令流序列中 每個(gè)指令信息選擇的指令執(zhí)行單元。在本發(fā)明的一個(gè)實(shí)施例中,根據(jù)依次選擇所述指令執(zhí)行單元A、指令執(zhí)行單元D、 指令執(zhí)行單元M和指令執(zhí)行單元F的順序,在一個(gè)執(zhí)行周期中,在所述指令流序列中按次序 選擇最多的指令信息作為分發(fā)的并行指令同時(shí)分發(fā)給對(duì)應(yīng)的所述指令執(zhí)行單元。在本發(fā)明的一個(gè)實(shí)施例中,在下一個(gè)執(zhí)行周期中,在所述指令流序列的剩余指令 信息中按次序選擇最多的指令信息作為分發(fā)的并行指令同時(shí)分發(fā)給對(duì)應(yīng)的所述指令執(zhí)行單元。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)所述指令流序列中沒(méi)有剩余的指令信息,所述指令 流序列的指令信息分發(fā)結(jié)束。在本發(fā)明的一個(gè)實(shí)施例中,所述指令執(zhí)行單元A用于完成算術(shù)邏輯運(yùn)算以及移位 運(yùn)算;所述指令執(zhí)行單元M用于完成乘法運(yùn)算以及部分算術(shù)邏輯操作和位操作;所述指令 執(zhí)行單元D用于實(shí)現(xiàn)存儲(chǔ)器的存取以及實(shí)現(xiàn)程序的跳轉(zhuǎn),還用于完成部分算術(shù)邏輯運(yùn)算; 所述指令執(zhí)行單元F用于完成浮點(diǎn)及向量運(yùn)算,還用于部分邏輯操作和位操作。在本發(fā)明的一個(gè)實(shí)施例中,所述相互并行的指令處理流水線結(jié)構(gòu)之間共享數(shù)據(jù)緩 存。在本發(fā)明的一個(gè)實(shí)施例中,所述通用寄存器堆與所述浮點(diǎn)寄存器堆通過(guò)所述執(zhí)行 單元D進(jìn)行數(shù)據(jù)傳輸。在本發(fā)明的一個(gè)實(shí)施例中,所述通用寄存器為64位通用寄存器、所述浮點(diǎn)寄存器 為128位浮點(diǎn)寄存器。通過(guò)本發(fā)明實(shí)施例提供的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),能夠更充分 的利用處理器的資源,增強(qiáng)了線程的訪問(wèn)效率,從而提高處理器的執(zhí)行速度。本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變 得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變 得明顯和容易理解,其中圖Ia-Ib為傳統(tǒng)8發(fā)射VLIW處理器與本發(fā)明實(shí)施例的處理器結(jié)構(gòu)執(zhí)行雙線程的 比較示意圖;圖2為傳統(tǒng)8發(fā)射VLIW處理器結(jié)構(gòu)圖;圖3為本發(fā)明實(shí)施例的支持同時(shí)多線程超長(zhǎng)指令字處理器結(jié)構(gòu)圖;和圖4為本發(fā)明實(shí)施例的指令流序列示意圖。
具體實(shí)施例方式下面詳細(xì)描述本發(fā)明的全部實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始 至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參 考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。本發(fā)明實(shí)施例是針對(duì)處理器執(zhí)行多線程程序效率不高而提出的一種支持同時(shí)多 線程的超長(zhǎng)指令字處理器結(jié)構(gòu),該處理器結(jié)構(gòu)具有操作性更高的優(yōu)點(diǎn),在支持多線程的同 時(shí),提高了 VLIW處理器的資源利用率,提高指令執(zhí)行效率,縮短整個(gè)線程的執(zhí)行時(shí)間,使處 理器資源得到了更加充分的利用,從而使該處理器結(jié)構(gòu)在性能方面有更強(qiáng)的競(jìng)爭(zhēng)力。以下實(shí)施例為在傳統(tǒng)8發(fā)射VLIW處理器的基礎(chǔ)上,針對(duì)8發(fā)射VLIW處理器的不 足而提出的一種對(duì)8發(fā)射VLIW處理器的處理單元的重新分配。為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提出了一種支持同時(shí)多線程的超長(zhǎng)指令字處理 器結(jié)構(gòu)。該結(jié)構(gòu)將發(fā)射寬度較大的VLIW處理器(在本發(fā)明的實(shí)施例中以8發(fā)射VLIW處理器為例)的資源重新分配,設(shè)計(jì)多條并行獨(dú)立流水線,每條流水線采用較小的發(fā)射寬度, 在本發(fā)明的優(yōu)選實(shí)施例中,采用4發(fā)射寬度。由于該處理器相比8發(fā)射VLIW處理器具有較 少的功能單元。從而在執(zhí)行多線程負(fù)載時(shí),該處理器可以有更高的資源利用率,更高的并行 性,從而提高處理器性能。在本發(fā)明的實(shí)施例中,該處理器采用32位指令編碼,同時(shí)支持定 點(diǎn)、浮點(diǎn)運(yùn)算,向量運(yùn)算。本發(fā)明實(shí)施例的相互并行的指令處理流水線結(jié)構(gòu)的每個(gè)流水線都有各自獨(dú)立的 PC,從而從各自PC的私有程序緩存中取指令。具體地,每個(gè)流水線包含一份通用寄存器堆、 浮點(diǎn)寄存器堆、控制寄存器堆、以及功能單元的復(fù)制。該處理器的單個(gè)流水線只能使用自己 的功能單元,訪問(wèn)自己的寄存器堆,不能利用其他處理器的資源。通過(guò)將寄存器堆復(fù)制,不 會(huì)降低單個(gè)線程的性能。多個(gè)流水線共享數(shù)據(jù)緩存,數(shù)據(jù)緩存采用多端口設(shè)計(jì),因此不需要 維護(hù)緩存一致性。由于該處理器結(jié)構(gòu)的每個(gè)指令處理流水線結(jié)構(gòu)有各自獨(dú)立的PC,所以在運(yùn)行多線 程負(fù)載時(shí),通過(guò)線程調(diào)度程序,可以為多個(gè)流水線各分配一個(gè)線程。每個(gè)指令處理流水線結(jié) 構(gòu)的取指單元根據(jù)各自的PC分別從單個(gè)線程取指,從而能夠同時(shí)運(yùn)行多個(gè)線程。并且每個(gè) 指令處理流水線結(jié)構(gòu)功能上完全獨(dú)立,處理各自的停頓或中斷操作。由于多個(gè)指令處理流 水線結(jié)構(gòu)共享數(shù)據(jù)Cache,從而可以通過(guò)共享數(shù)據(jù)實(shí)現(xiàn)多個(gè)線程間的通訊。從本發(fā)明的實(shí)施例中可分析出該種結(jié)構(gòu)VLIW處理器的優(yōu)勢(shì)有三點(diǎn)1、把發(fā)射寬度較大的單個(gè)VLIW豐富的功能單元重新分配,采用多個(gè)發(fā)射寬度更 小的流水線,不僅能夠支持同時(shí)多線程,還可以有效的減小VLIW處理器資源的水平浪費(fèi)。 根據(jù)應(yīng)用負(fù)載線程級(jí)并行程度的不同,處理器可以設(shè)計(jì)不同的流水線數(shù)目,從而最大程度 提升處理器性能。如圖1(a)所示,為雙線程在傳統(tǒng)8發(fā)射VLIW處理器中的運(yùn)行的情況,由 于指令并行度有限,傳統(tǒng)8發(fā)射VLIW處理器在執(zhí)行多線程程序時(shí),只能采用交替方式。處 理器資源在每個(gè)周期都有較大的水平浪費(fèi)(圖Ia中的空白部分)。而在本發(fā)明的優(yōu)選實(shí)施 例中,本發(fā)明提出的處理器結(jié)構(gòu)如圖1(b)所示,為采用本發(fā)明實(shí)施例的處理器執(zhí)行雙線程 的運(yùn)行情況。從圖中能夠看出,采用此種分拆流水線的結(jié)構(gòu)在執(zhí)行多線程程序時(shí),兩個(gè)線程 的指令在各自的流水線上同時(shí)執(zhí)行,比傳統(tǒng)8發(fā)射的VLIW處理器具有更高的資源利用率, 執(zhí)行同樣的程序需要更少的周期。2、與CMP模式的多線程相比,該結(jié)構(gòu)的VLIW的多線程共享數(shù)據(jù)緩存,免去了維護(hù) Cache 一致性的硬件開銷。3、將發(fā)射寬度分拆為并行的η個(gè)部分,使得對(duì)指令Cache數(shù)據(jù)位寬的要求降低為 原先的1/n,從而可以簡(jiǎn)化Cache設(shè)計(jì),提高單個(gè)線程訪存效率。為了對(duì)本發(fā)明實(shí)施例提出的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu)有更清楚 的理解,以下參考附圖2、3、4詳細(xì)描述根據(jù)本發(fā)明實(shí)施例的支持同時(shí)多線程的超長(zhǎng)指令字 處理器結(jié)構(gòu)的工作原理。為了能夠?qū)Ρ景l(fā)明實(shí)施例的處理器結(jié)構(gòu)有更深刻的理解,首先對(duì)傳統(tǒng)的8發(fā)射 VLIW處理器結(jié)構(gòu)作簡(jiǎn)單介紹。如圖2所示,為傳統(tǒng)8發(fā)射VLIW處理器結(jié)構(gòu)圖。該傳統(tǒng)的8發(fā) 射VLIW處理器結(jié)構(gòu)包含指令獲取模塊(Instruction Fetch),指令分發(fā)模塊(Instruction Dispatch),八個(gè)指令執(zhí)行單元(AO, Al,MO, Ml, DO, Dl, F0, Fl),64*64bits的通用寄存器堆 和64*128bits的浮點(diǎn)寄存器堆和控制寄存器堆(控制寄存器堆在圖中未示出),并且該傳統(tǒng)8發(fā)射VLIW處理器存儲(chǔ)系統(tǒng)包括一個(gè)數(shù)據(jù)緩存(Data cache)和一個(gè)程序緩存(Program cache)。在該傳統(tǒng)8發(fā)射VLIW處理器結(jié)構(gòu)中,并行指令通過(guò)分發(fā)模塊直接把執(zhí)行指令分配 給8個(gè)功能單元。相比于傳統(tǒng)的8發(fā)射VLIW處理器機(jī)構(gòu),本發(fā)明優(yōu)選實(shí)施例的處理器結(jié)構(gòu)將傳統(tǒng)8 發(fā)射VLIW處理器資源進(jìn)行拆分,如圖3所示,為本發(fā)明實(shí)施例的支持同時(shí)多線程超長(zhǎng)指令 字處理器結(jié)構(gòu)圖。在組織方式上該支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu)具有兩個(gè)獨(dú)立 的指令處理流水線結(jié)構(gòu),每個(gè)指令處理流水線結(jié)構(gòu)獨(dú)立運(yùn)行一個(gè)線程,因此能夠保證處理 器同時(shí)運(yùn)行兩個(gè)線程,從而實(shí)現(xiàn)對(duì)同時(shí)多線程(SMT)的支持。每個(gè)指令處理流水線結(jié)構(gòu)包 含指令獲取模塊301 (Instruction Fetch),指令分發(fā)模塊302 (Instruction Dispatch),指 令執(zhí)行模塊303(A,M,D,F(xiàn)),通用寄存器304,浮點(diǎn)寄存器305和程序緩存306。在本發(fā)明的 優(yōu)選實(shí)施例中,指令獲取模塊301包括第一指令獲取單元、第二指令獲取單元、第三指令獲 取單元和第四指令獲取單元,第一指令獲取單元、第二指令獲取單元、第三指令獲取單元和 第四指令獲取單元用于獲取地址連續(xù)的4條指令,指令分發(fā)模塊302包括第一指令分發(fā)單 元、第二指令分發(fā)單元、第三指令分發(fā)單元和第四指令分發(fā)單元,第一指令分發(fā)單元、第二 指令分發(fā)單元、第三指令分發(fā)單元和第四指令分發(fā)單元一方面用于接收來(lái)自于相應(yīng)第一指 令獲取單元、第二指令獲取單元、第三指令獲取單元和第四指令獲取單元獲取的指令信息, 另一方面的作用是在一個(gè)執(zhí)行周期中,在所述指令流序列中按次序選擇最多的指令信息作 為分發(fā)的并行指令同時(shí)分發(fā)給對(duì)應(yīng)的指令執(zhí)行模塊303,而指令執(zhí)行模塊303包括指令執(zhí) 行單元A、指令執(zhí)行單元D、指令執(zhí)行單元M和指令執(zhí)行單元F,通用寄存器304的作用為存 儲(chǔ)指令執(zhí)行單元A、指令執(zhí)行單元D、指令執(zhí)行單元M的執(zhí)行結(jié)果,浮點(diǎn)寄存器的作用為存儲(chǔ) 指令執(zhí)行單元D、指令執(zhí)行單元F的執(zhí)行結(jié)果。以下對(duì)各個(gè)模塊做詳細(xì)的介紹。1指令獲取模塊(INSTRUNCTIONS FETCH)。指令獲取模塊301的功能是產(chǎn)生下條指令地址,從指令存儲(chǔ)中讀取相應(yīng)指令,并 將讀取的指令送給指令分發(fā)單元。每個(gè)時(shí)鐘周期可以從各自私有的程序程序緩存306中讀 取4條地址連續(xù)的指令,取指包為128bits。為指令分發(fā)模塊302提供讀取的指令。指令獲 取模塊301共有四級(jí)流水線,分別為指令地址產(chǎn)生、指令地址發(fā)送、等待和指令讀取。2指令分發(fā)模塊(INSTRUNCTIONS DISPATCH)。指令分發(fā)模塊302的功能是將取指單元取回的指令分發(fā)給各指令執(zhí)行單元,分發(fā) 單元一個(gè)周期可以從取指單元中獲得一個(gè)取指包,16bytes指令。指令分發(fā)單元的輸入為一 個(gè)取指包寄存器,輸出為各功能單元指令寄存器中的值,以及指令分發(fā)完畢指示信號(hào)。整個(gè) 模塊為一級(jí)流水。3指令執(zhí)行模塊(INSTRUNCTIONS EXECUTE)。指令執(zhí)行模塊303的功能是各個(gè)指令執(zhí)行單元用來(lái)執(zhí)行特定的指令,功能單元可 分為兩部分解碼和執(zhí)行,解碼在一個(gè)周期完成,執(zhí)行需要花費(fèi)一到多個(gè)周期不等。由于指令分發(fā)模塊302在某一時(shí)刻對(duì)指令執(zhí)行模塊分發(fā)多個(gè)并行執(zhí)行的指令,因 此,需要對(duì)指令流序列的執(zhí)行是否能夠并行執(zhí)行做進(jìn)一步的判定。判定條件為處理器通過(guò)指令中功能單元選擇位來(lái)完成指令并行的判定。在本發(fā)明的實(shí)施例 中,如圖4所示,為本發(fā)明實(shí)施例的指令流序列的示意圖。其中,指令根據(jù)各自執(zhí)行單元選擇位的不同選擇不同的執(zhí)行單元。如在本發(fā)明的一個(gè)具體例子中,00表示選擇A單元,01表 示選擇M單元,10表示選擇D單元,11表示選擇F單元。該處理器在一個(gè)執(zhí)行包內(nèi)根據(jù)指 令的高兩位(功能單元選擇位),按照AMDF的順序按次序選擇升序排列最長(zhǎng)的指令序列作 為分發(fā)的并行指令。如圖4的指令流序列insO最高位為00,insl為01,ins2為01,ins3 為10,ins4為00,ins5為00,ins6為00。根據(jù)并行處理原則,處理器在cycleO執(zhí)行insO, insl ;cyclel 執(zhí)行 ins2, ins3 ;cycle3 執(zhí)行 ins4, cycle4 執(zhí)行 ins5, cycle5 執(zhí)行 ins6。以下對(duì)各個(gè)指令執(zhí)行單元做進(jìn)一步的介紹。1、指令執(zhí)行單元A。A單元是處理器中完成算術(shù)邏輯運(yùn)算以及移位運(yùn)算的單元。A單元中共有兩級(jí)級(jí) 流水線解碼、執(zhí)行。解碼階段的功能是接受指令、并根據(jù)指令產(chǎn)生其余各部分的控制碼。 執(zhí)行階段接受兩個(gè)操作數(shù),然后根據(jù)其控制代碼對(duì)兩個(gè)操作數(shù)進(jìn)行相應(yīng)的運(yùn)算,并在執(zhí)行 階段結(jié)束時(shí)將運(yùn)算結(jié)果寫入目標(biāo)寄存器。2、指令執(zhí)行單元D。D單元的主要功能是實(shí)現(xiàn)存儲(chǔ)器的存取以及實(shí)現(xiàn)程序的跳轉(zhuǎn),同時(shí)它也可以完成 部分算術(shù)邏輯運(yùn)算。D單元共分為解碼單元、操作數(shù)選擇單元、ALU執(zhí)行單元和目標(biāo)寄存器 寫使能信號(hào)產(chǎn)生單元等四大部分。D單元中共有兩級(jí)流水線解碼、執(zhí)行。D單元中執(zhí)行存 儲(chǔ)器操作分4級(jí)流水線進(jìn)行,El為地址產(chǎn)生級(jí),E2為地址發(fā)送級(jí),E3為等待LlD Cache處 理級(jí),E4為獲取數(shù)據(jù)和寄存器回寫或存儲(chǔ)器寫入級(jí)。3、指令執(zhí)行單元M。M單元是處理器中完成乘法運(yùn)算的單元,可以完成32位乘法、16位乘法、8位乘法 等運(yùn)算,以及部分算術(shù)邏輯操作和位操作。M單元共分為解碼單元、流水線控制旁路單元,乘 法運(yùn)算單元、算術(shù)邏輯單元、目標(biāo)寄存器寫使能信號(hào)產(chǎn)生單元等部分。M單元中實(shí)現(xiàn)乘法功 能需要三級(jí)流水線解碼,乘法執(zhí)行一級(jí)和乘法執(zhí)行二級(jí)。M單元中實(shí)現(xiàn)算術(shù)邏輯操作以及 位操作需要兩級(jí)流水線解碼,執(zhí)行。執(zhí)行不同的指令采用不同的流水線結(jié)構(gòu)。4、指令執(zhí)行單元F。F單元是處理器中完成浮點(diǎn)及向量運(yùn)算的單元,可以完成單精度、雙精度等運(yùn)算, 以及部分邏輯操作和位操作。F單元共分為解碼單元、流水線控制旁路單元,乘法運(yùn)算單元、 算術(shù)邏輯單元、目標(biāo)寄存器寫使能信號(hào)產(chǎn)生單元等部分。作為處理器結(jié)構(gòu),控制寄存器堆是必不可少的,本發(fā)明實(shí)施例的控制寄存器堆中 各個(gè)控制寄存器的大概功能介紹如表1所示。
權(quán)利要求
1. 一種支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),其特征在于,包括相互并行的至少兩個(gè)指令處理流水線結(jié)構(gòu),其中,每個(gè)所述指令處理流水線結(jié)構(gòu)包括指令獲取模塊,所述指令獲取模塊用于獲取指令信息;與所述指令獲取模塊對(duì)應(yīng)的指令分發(fā)模塊,所述指令分發(fā)模塊用于接收所述指令獲取 模塊獲取的指令信息并進(jìn)行分配;與所述指令分發(fā)模塊對(duì)應(yīng)的指令執(zhí)行模塊,所述指令執(zhí)行模塊包括多個(gè)指令執(zhí)行單 元,其中,所述指令執(zhí)行單元為指令執(zhí)行單元A、指令執(zhí)行單元D、指令執(zhí)行單元M和指令執(zhí) 行單元F,其中,所述指令執(zhí)行單元A、指令執(zhí)行單元D、指令單元M和指令執(zhí)行單元F用于執(zhí) 行所述指令分發(fā)模塊分發(fā)的相應(yīng)指令信息,以得到執(zhí)行結(jié)果;通用寄存器堆,所述通用寄存器堆用于存儲(chǔ)相應(yīng)執(zhí)行單元A、執(zhí)行單元M和執(zhí)行單元D 的執(zhí)行結(jié)果;浮點(diǎn)寄存器堆,所述浮點(diǎn)寄存器堆用于存儲(chǔ)相應(yīng)執(zhí)行單元D和執(zhí)行單元F的執(zhí)行結(jié)果;和控制寄存器堆,所述控制寄存器堆用于存儲(chǔ)指令的控制信號(hào),其中,所述控制信號(hào)控制 指令的執(zhí)行方式。
2.如權(quán)利要求1所述的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),其特征在于,所述 指令獲取模塊包括第一指令獲取單元、第二指令獲取單元、第三指令獲取單元和第四指令 獲取單元,所述指令分發(fā)模塊包括第一指令分發(fā)單元、第二指令分發(fā)單元、第三指令分發(fā)單 元和第四指令分發(fā)單元,其中,所述第一指令獲取單元、第二指令獲取單元、第三指令獲取 單元和第四指令獲取單元在每個(gè)時(shí)鐘周期分別對(duì)應(yīng)于所述第一指令分發(fā)單元、第二指令分 發(fā)單元、第三指令分發(fā)單元和第四指令分發(fā)單元中的一個(gè)指令分發(fā)單元,以在當(dāng)前時(shí)鐘周 期為對(duì)應(yīng)的第一指令分發(fā)單元、第二指令分發(fā)單元、第三指令分發(fā)單元和第四指令分發(fā)單 元提供指令信息。
3.如權(quán)利要求2所述的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),其特征在于,所述 第一指令分發(fā)單元、第二指令分發(fā)單元、第三指令分發(fā)單元和第四指令分發(fā)單元的指令信 息依次組成指令流序列,且所述指令流序列中的每個(gè)指令信息包括執(zhí)行單元選擇位,其中, 所述執(zhí)行單元選擇位用于判斷所述指令流序列中每個(gè)指令信息選擇的指令執(zhí)行單元。
4.如權(quán)利要求3所述的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),其特征在于,根據(jù) 依次選擇所述指令執(zhí)行單元A、指令執(zhí)行單元D、指令執(zhí)行單元M和指令執(zhí)行單元F的順序, 在一個(gè)執(zhí)行周期中,在所述指令流序列中按次序選擇最多的指令信息作為分發(fā)的并行指令 同時(shí)分發(fā)給對(duì)應(yīng)的所述指令執(zhí)行單元。
5.如權(quán)利要求4所述的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),其特征在于,在下 一個(gè)執(zhí)行周期中,在所述指令流序列的剩余指令信息中按次序選擇最多的指令信息作為分 發(fā)的并行指令同時(shí)分發(fā)給對(duì)應(yīng)的所述指令執(zhí)行單元。
6.如權(quán)利要求5所述的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),其特征在于,當(dāng)所 述指令流序列中沒(méi)有剩余的指令信息,所述指令流序列的指令信息分發(fā)結(jié)束。
7.如權(quán)利要求1-6中任一項(xiàng)所述的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),其特征 在于,所述指令執(zhí)行單元A用于完成算術(shù)邏輯運(yùn)算以及移位運(yùn)算; 所述指令執(zhí)行單元M用于完成乘法運(yùn)算以及部分算術(shù)邏輯操作和位操作; 所述指令執(zhí)行單元D用于實(shí)現(xiàn)存儲(chǔ)器的存取以及實(shí)現(xiàn)程序的跳轉(zhuǎn),還用于完成部分算 術(shù)邏輯運(yùn)算;所述指令執(zhí)行單元F用于完成浮點(diǎn)及向量運(yùn)算,還用于部分邏輯操作和位操作。
8.如權(quán)利要求1所述的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),其特征在于,所述 相互并行的指令處理流水線結(jié)構(gòu)之間共享數(shù)據(jù)緩存。
9.如權(quán)利要求1所述的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),其特征在于,所述 通用寄存器堆與所述浮點(diǎn)寄存器堆通過(guò)所述執(zhí)行單元D進(jìn)行數(shù)據(jù)傳輸。
10.如權(quán)利要求1所述的支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),其特征在于,所述 通用寄存器為64位通用寄存器、所述浮點(diǎn)寄存器為128位浮點(diǎn)寄存器。
全文摘要
本發(fā)明提出一種支持同時(shí)多線程的超長(zhǎng)指令字處理器結(jié)構(gòu),包括相互并行的至少兩個(gè)指令處理流水線結(jié)構(gòu),其中,每個(gè)所述指令處理流水線結(jié)構(gòu)包括指令獲取模塊,用于獲取指令信息;指令分發(fā)模塊,用于接收指令獲取模塊獲取的指令信息并進(jìn)行分配;指令執(zhí)行模塊,包括指令執(zhí)行單元A、D、M和F,其中,指令執(zhí)行單元A、D、M和F用于執(zhí)行指令信息;通用寄存器堆用于存儲(chǔ)相應(yīng)執(zhí)行單元A、M和D的執(zhí)行結(jié)果;浮點(diǎn)寄存器堆,用于存儲(chǔ)相應(yīng)執(zhí)行單元D和F的執(zhí)行結(jié)果;和控制寄存器堆。通過(guò)該結(jié)構(gòu)能夠更充分的利用處理器的資源,增強(qiáng)了線程的訪問(wèn)效率,提高處理器的處理速度。
文檔編號(hào)G06F15/80GK102004719SQ20101054753
公開日2011年4月6日 申請(qǐng)日期2010年11月16日 優(yōu)先權(quán)日2010年11月16日
發(fā)明者何虎, 白無(wú) 申請(qǐng)人:清華大學(xué)