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