亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

多線程流水線指令解碼器的方法和設(shè)備的制作方法

文檔序號(hào):6638246閱讀:216來源:國(guó)知局
專利名稱:多線程流水線指令解碼器的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及計(jì)算機(jī)處理器的指令解碼,具體涉及微處理器流水線指令解碼器。
背景技術(shù)
基本的指令解碼器和指令解碼技術(shù)應(yīng)用在中央處理器和微處理器中已經(jīng)是眾所周知的。隨著設(shè)計(jì)的進(jìn)步,指令解碼器變得更為復(fù)雜,不僅包括順序處理指令的流水線寄存器,還具備緩沖器,暫時(shí)存儲(chǔ)先被解碼的指令,同時(shí)使得其它指令繼續(xù)被處理。但是,緩沖器容量受到限制并且能夠被填滿,因此更多的指令不能被存進(jìn)去。在現(xiàn)有技術(shù)中,當(dāng)一個(gè)緩沖器裝滿后,整個(gè)指令解碼流水線將被延遲。在微處理器中,延遲也可以因?yàn)槠渌虬l(fā)生,如當(dāng)一個(gè)子系統(tǒng)不能夠處理在前的子系統(tǒng)提供的大量數(shù)據(jù)時(shí),這樣數(shù)據(jù)不會(huì)丟失。實(shí)質(zhì)上,當(dāng)在指令解碼流水線上不能解碼更多的指令時(shí),一個(gè)指令解碼流水線被延遲。
現(xiàn)有技術(shù)的處理器中,如果一個(gè)指令解碼器流水線上的指令失效或者無效時(shí),就像出現(xiàn)在超高速緩沖存儲(chǔ)器中一樣的問題,指令需要被清除。清除實(shí)際上是使指令無效,以便他們能夠被有效的指令覆蓋或者被忽視?,F(xiàn)有技術(shù)中的處理器中,全部指令包括有效指令在指令解碼流水線上以整體被清除(也就是被無效)。在這種情況下,被清除的有效指令必須重新輸入到指令解碼流水線的開始部分,重新開始解碼處理。當(dāng)在現(xiàn)有技術(shù)的處理器流水線中中出現(xiàn)無效或失效時(shí),象這樣的整體的清除易于延遲執(zhí)行處理。
減少處理器功率消耗是一個(gè)主要的考慮因素。在現(xiàn)有技術(shù)中為了節(jié)省功率,關(guān)閉運(yùn)行單元中的同步電路的全部功能塊的時(shí)鐘。就是說,這些時(shí)鐘信號(hào)在全部功能塊中被設(shè)置成一個(gè)穩(wěn)定的狀態(tài)。為了完成上述操作,在現(xiàn)有技術(shù)中使用電源關(guān)閉控制邏輯決定什么時(shí)候整個(gè)功能塊是空閑的并且能夠關(guān)閉時(shí)鐘。因?yàn)殛P(guān)閉同步電路的時(shí)鐘,包括時(shí)鐘信號(hào)在內(nèi)的全部信號(hào)都不會(huì)改變狀態(tài)。在這種情況下,晶體管不必對(duì)信號(hào)線上的相關(guān)電容充電和放電,這樣就節(jié)省了功率。然而,因?yàn)檎麄€(gè)功能塊中的時(shí)鐘都被關(guān)閉,現(xiàn)有技術(shù)中的處理器必須等待直到這些功能塊的所有功能被完成。這使得現(xiàn)有技術(shù)的處理器幾乎不可能關(guān)閉功能塊的時(shí)鐘,整個(gè)期間功率很少被節(jié)省。
克服現(xiàn)有技術(shù)中處理器的這些和其他一些限制是被希望的。
發(fā)明概述本發(fā)明包括如同權(quán)利要求描述的方法,設(shè)備和系統(tǒng)。
本發(fā)明一個(gè)實(shí)施例中簡(jiǎn)要的說明,微處理器包括一個(gè)指令解碼器,解碼指令多線程。指令解碼器包括一個(gè)指令解碼流水線。指令解碼流水線解碼每個(gè)與每個(gè)線程相關(guān)的輸入指令。指令解碼流水線還保存一個(gè)線程指示和一個(gè)與在指令解碼流水線上被解碼的每個(gè)指令平行的有效指示。
在這里,其它的具體實(shí)施例也被表示,描述和要求。
幅圖說明附

圖1說明使用本發(fā)明的典型計(jì)算機(jī)的框圖;附圖2說明使用本發(fā)明的典型中央處理器的框圖;附圖3說明本發(fā)明中包括多線程流水線指令解碼器的微處理器的框圖;附圖4說明本發(fā)明多線程流水線指令解碼器的框圖;附圖5說明本發(fā)明指令解碼流水線的框圖;附圖6說明映像流水線和清除控制,延遲和關(guān)閉如附圖5中所示的指令解碼流水線中流水線階段的控制邏輯的框圖;附圖7說明在本發(fā)明中控制邏輯的控制運(yùn)算方程式;附圖8說明在本發(fā)明中指令解碼器執(zhí)行的一個(gè)氣泡擠壓示例的時(shí)序圖;附圖9說明在本發(fā)明中指令解碼器執(zhí)行的一個(gè)非阻塞延遲示例的時(shí)序圖;附圖10說明在本發(fā)明中指令解碼器執(zhí)行的一個(gè)線程清除示例的時(shí)序圖;附圖11A說明在本發(fā)明中指令解碼器執(zhí)行的機(jī)會(huì)的電源關(guān)閉的第一個(gè)示例的時(shí)序圖;附圖11B說明在本發(fā)明中指令解碼器執(zhí)行的機(jī)會(huì)的電源關(guān)閉的第二個(gè)示例的時(shí)序圖;
具體描述下面具體描述本發(fā)明,給出了大量具體的描述以提供對(duì)整個(gè)發(fā)明的完整的理解。然而,對(duì)于本領(lǐng)域的技術(shù)人員來說是顯而易見的,沒有這些具體的描述本發(fā)明也可以實(shí)現(xiàn)。在其它實(shí)例中眾所周知的方法,設(shè)備,裝置和電路不在這里具體描述,以免造本發(fā)明的不清楚。
本發(fā)明提供了一種對(duì)多線程系統(tǒng)的多線程流水線指令解碼器進(jìn)行計(jì)時(shí),清除和延遲的算法方法,可以獲得最佳的性能和最小的功耗。一個(gè)線程是一個(gè)被執(zhí)行的軟件的一個(gè)過程。軟件編譯器能夠編譯軟件程序的一部分,將它們分裂成可執(zhí)行代碼的多個(gè)平行的數(shù)據(jù)流或者是可同時(shí)執(zhí)行的多個(gè)不同的程序。每一個(gè)可執(zhí)行代碼的多個(gè)平行的數(shù)據(jù)流是一個(gè)線程。多線程平行的被執(zhí)行提供了多個(gè)任務(wù)或是提高了性能。本發(fā)明提供了指令解碼流水線,指令線程標(biāo)識(shí)的映像流水線和映像指令解碼流水線的指令有效位。線程標(biāo)識(shí)和有效位用于控制每個(gè)流水線階段的清除,計(jì)時(shí)和延遲。與一個(gè)線程相關(guān)的指令能被清除或者被延遲而不影響在解碼流水線中的其它線程指令。本發(fā)明中,僅僅當(dāng)有效指令因?yàn)樾枰钚』β氏暮脱舆t而提高時(shí),計(jì)時(shí)流水線階段。一個(gè)有效指令是被執(zhí)行單元決定可執(zhí)行的指令。一個(gè)無效指令是被決定不可執(zhí)行的指令,或是一個(gè)出錯(cuò)的指令,或是有一個(gè)異常的情況要求不被執(zhí)行。
參照附圖1,說明使用本發(fā)明的計(jì)算機(jī)100的框圖。計(jì)算機(jī)100包括一個(gè)中央處理器(CPU)101,輸入/輸出外圍設(shè)備102,例如鍵盤,調(diào)制解調(diào)器,打印機(jī),外部存儲(chǔ)設(shè)備,監(jiān)視設(shè)備103,例如示波器或是圖形顯示器。監(jiān)視設(shè)備103以人們可以理解的格式提供計(jì)算機(jī)信息,例如以視覺的或是音頻的格式。
參照附圖2,一個(gè)使用本發(fā)明中的典型的中央處理器單元101的框圖。中央處理器101包括一個(gè)微處理器201,一個(gè)盤存儲(chǔ)設(shè)備203和一個(gè)存儲(chǔ)程序指令的存儲(chǔ)器204,上述設(shè)備耦合在一起。盤存儲(chǔ)設(shè)備203可以是一個(gè)軟盤,壓縮格式盤,DVD盤,硬盤,可重寫光盤,閃存或是其它不穩(wěn)定的存儲(chǔ)設(shè)備。微處理器201和盤存儲(chǔ)設(shè)備203都能通過存儲(chǔ)器總線205從存儲(chǔ)器204中讀或是寫信息。因此,微處理器201和盤存儲(chǔ)設(shè)備203都能夠在整個(gè)程序的執(zhí)行階段改變存儲(chǔ)器204的存儲(chǔ)單元。為了盤存儲(chǔ)器203直接的做上述工作,包括一個(gè)具有直接存取存儲(chǔ)器的盤控制器,該控制器可以執(zhí)行存儲(chǔ)器的存儲(chǔ)和修改代碼。因?yàn)榭刂破骺梢灾苯訉?duì)存儲(chǔ)器存取,它是一個(gè)直接存取存儲(chǔ)器代理的例子。其它的可以直接將信息存入存儲(chǔ)器的設(shè)備也是直接存取存儲(chǔ)器代理。存儲(chǔ)器204是典型的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器或是其它類型的可重寫存儲(chǔ)器。因?yàn)橛糜诖鎯?chǔ)程序指令,在這里存儲(chǔ)器也可以作為程序存儲(chǔ)器。在初始化存儲(chǔ)在盤存儲(chǔ)器203或是存儲(chǔ)在其它設(shè)備例如輸入/輸出設(shè)備102中的程序執(zhí)行時(shí),微處理器201讀存儲(chǔ)在盤存儲(chǔ)器203或是其它設(shè)備中的程序指令,將它們寫入存儲(chǔ)器204。存儲(chǔ)在存儲(chǔ)器204中的程序指令中的一個(gè)或多個(gè)頁或者片斷被微處理器201讀出(也就是,被取出),初步解碼,并將其存入指令高速緩沖存儲(chǔ)器中(沒有在附圖2中表示出來)準(zhǔn)備執(zhí)行。存儲(chǔ)在指令緩沖器中的一些程序指令可能被讀入一個(gè)指令流水線(沒有在附圖2中表示出來)中被微處理器201執(zhí)行。
參照附圖3,其表示通過存儲(chǔ)器總線205將微處理器201耦合到存儲(chǔ)器204的框圖。微處理器201包括下一指令處理器(IP)310,一個(gè)指令轉(zhuǎn)換旁視緩沖器(ITLB)312,一個(gè)存儲(chǔ)器控制器313,一個(gè)跟蹤高指令速緩沖存儲(chǔ)器314,一個(gè)跟蹤下一指令處理器(IP)315,一個(gè)指令解碼器316,一個(gè)執(zhí)行單元318,退役單元320和其它被微處理器考慮的指令流水線中的指令存儲(chǔ)器單元。下一指令處理器(IP)310將下一組處理的指令從存儲(chǔ)器204中取出,經(jīng)解碼器316解碼后,存入跟蹤高速緩沖存儲(chǔ)器314中。微處理器201最好是一個(gè)多線程設(shè)備。這就是說,指令多線程能夠被微處理器201解碼和執(zhí)行,以支持多任務(wù)。
指令轉(zhuǎn)換旁視緩沖區(qū)(ITLB)312包含頁表地址,將地址從線性轉(zhuǎn)換成物理地址存入存儲(chǔ)器204中,以便得到一個(gè)虛擬存儲(chǔ)器。頁表地址轉(zhuǎn)換將存儲(chǔ)在物理存儲(chǔ)器204中的指令與存儲(chǔ)在跟蹤高速緩沖存儲(chǔ)器314中的指令關(guān)聯(lián)。通常地,ITLB312接收一個(gè)輸入線性地址,返回一個(gè)與存儲(chǔ)器204中指令單元有關(guān)的物理地址。
跟蹤指令高速緩沖存儲(chǔ)器314能存儲(chǔ)多個(gè)序列,或是跟蹤不同程序的已解碼的指令以提供多任務(wù)處理。在一個(gè)跟蹤指令高速緩沖存儲(chǔ)器中,一個(gè)程序(一個(gè)跟蹤痕跡)的一串指令中僅僅第一個(gè)指令有相關(guān)的地址。一串存儲(chǔ)在跟蹤高速緩沖存儲(chǔ)器中的相關(guān)指令時(shí)常地被稱為指令的一個(gè)“跟蹤痕跡”。其它的在第一個(gè)指令后面的指令被存儲(chǔ)在高速緩沖存儲(chǔ)器314中,而沒有相關(guān)的外部地址。跟蹤指令高速緩沖存儲(chǔ)器314包含能被執(zhí)行單元318使用的指令來執(zhí)行一些功能或處理。如果功能或是過程需要的指令不在指令高速緩沖存儲(chǔ)器314中,會(huì)發(fā)生一個(gè)失誤,指令必須從存儲(chǔ)器204中取出。存儲(chǔ)器控制器313和跟蹤指令高速緩沖存儲(chǔ)器314接口,以便在其中存儲(chǔ)指令。在失誤的情形,存儲(chǔ)器控制器313通過ITLB312和指令解碼器316從存儲(chǔ)器204中取出希望得到的指令,將其提供給跟蹤指令高速緩沖存儲(chǔ)器314。
參照附圖4,說明在本發(fā)明中多線程流水線指令解碼器316的框圖。指令解碼器316包括一個(gè)指令解碼流水線400,控制邏輯401,一個(gè)映像流水線402。指令解碼器316支持指令的多線程。通常的,指令解碼器316中的指令解碼流水線400接受一個(gè)輸入的指令或操作碼,將這些數(shù)據(jù)塊分成完全獨(dú)立的指令或操作碼,解碼每個(gè)指令或操作碼,執(zhí)行必須的指令處理將上述數(shù)據(jù)形成能被執(zhí)行單元理解和執(zhí)行的微操作碼(UOP),例如執(zhí)行單元318。UOP從指令解碼器316中輸出的UOP耦合到跟蹤指令高速緩沖存儲(chǔ)器314中,被執(zhí)行之前的暫時(shí)存儲(chǔ)。通常的,指令解碼流水線400包括一個(gè)或多個(gè)寄存器R1-RN,一個(gè)或多個(gè)緩沖器B1-BP和在寄存器R1-RN與緩沖器B1-BP之中放置的一個(gè)或多個(gè)邏輯階段L1-LO。寄存器R1-RN可以由D型觸發(fā)器或是有合適時(shí)鐘信號(hào)的透明鎖存器組成。邏輯階段L1-LO對(duì)操作碼進(jìn)行解碼和必須的指令處理,形成UOP。緩沖器BP在附圖4中表示,和指令解碼流水線400相關(guān),并且或許被考慮為指令高速緩沖存儲(chǔ)器的部分。
同輸入到指令解碼流水線400中的指令相關(guān)的是指令線程標(biāo)識(shí)和指令有效位。映像流水線402包含一個(gè)指令線程標(biāo)識(shí)管道支持多線程,一個(gè)用于指令有效位的管道。在首選的實(shí)施例中,指令線程標(biāo)識(shí)是一個(gè)單獨(dú)的數(shù)據(jù)位,表示和指令解碼流水線中前一個(gè)線程和后一個(gè)線程不同的指令線程。在優(yōu)選的實(shí)施例中,一個(gè)單獨(dú)的位或信標(biāo)可以被表示一個(gè)線程標(biāo)識(shí)0(Id0)和一個(gè)線程標(biāo)識(shí)1(Id1)。多個(gè)數(shù)據(jù)位用于提供更復(fù)雜的多線程標(biāo)識(shí),支持一個(gè)更復(fù)雜指令流水線。有效位和線程標(biāo)識(shí)位可以共同編碼,依次將指令有效位流水線和映像流水線的指令線程標(biāo)識(shí)流水線合并。指令線程標(biāo)識(shí)和指令有效位流經(jīng)過映像流水線402,同每一個(gè)在指令解碼流水線402中解碼的指令平行。映像流水線402為了完成這些工作,它通過包括指令線程標(biāo)識(shí)和指令有效位的寄存器R1’-RN’和緩沖器B1’-BP’,將指令解碼流水線400中的指令存儲(chǔ)單元(寄存器,緩沖器等等)鏡像。寄存器R1’-RN’和緩沖器B1’-BP’提供與R1-RN和B1-BP各自相同的存儲(chǔ)單元,設(shè)置在指令解碼流水線400上。寄存器R1’-RN’和緩沖器B1’-BP’可以由與寄存器R1-RN匹配的D型觸發(fā)器或是有合適時(shí)鐘信號(hào)的透明鎖存器組成。映像流水線402不需要可以將指令從一個(gè)階段變成下一個(gè)階段的邏輯階段L1-L0。指令線程標(biāo)識(shí)和指令有效位通過鎖存器,寄存器或是緩沖器和指令處理并行的從一個(gè)流水線階段進(jìn)入下一個(gè)流水線階段,同時(shí)控制邏輯401進(jìn)行讀取??刂七壿?01向寄存器R1-RN,R1’-RN’和緩沖器B1-BP,B1’-BP’提供時(shí)鐘信號(hào)。同一個(gè)時(shí)鐘信號(hào)被分別提供給該指令解碼流水線400和映像流水線402上的每個(gè)指令存儲(chǔ)單元(寄存器,緩沖器等等)。本發(fā)明中延遲和機(jī)會(huì)的電源關(guān)閉都會(huì)影響指令解碼流水線和映像流水線的計(jì)時(shí)。附圖4清楚地表示了指令解碼流水線400不同于映像流水線,它們可以被集成為一條流水線,被同一個(gè)時(shí)鐘信號(hào)計(jì)時(shí)。這樣,指令有效位和指令線程標(biāo)識(shí)被和在一起并與在一個(gè)流水線上的指令平行,同指令一樣在流水線的每一個(gè)流水線階段被解碼。指令有效位和指令線程標(biāo)識(shí)同指令一起以某種方式被編碼,以便在整個(gè)指令解碼過程中合并在一起。
使用一個(gè)單獨(dú)數(shù)據(jù)作為線程標(biāo)識(shí),本發(fā)明通過允許將在每個(gè)流水線階段之間指令解碼流水線400中不同線程的指令混合起來,支持多線程。使用多個(gè)數(shù)據(jù)位作為線程標(biāo)識(shí),為了同時(shí)支持在解碼流水線的每個(gè)流水線階段的多于兩個(gè)的線程,本發(fā)明將增加難度和附加可能兩倍的硬件設(shè)備。任何一種情況,使用單獨(dú)一個(gè)指令解碼器能夠支持多個(gè)線程。
參照附圖5,描述了實(shí)施例中指令解碼流水線400’的詳細(xì)框圖。優(yōu)選實(shí)施例中,一組指令或者操作碼通常是Inte1 X86型的指令,這些指令與被高級(jí)Inte1微處理器支持的與其它具體的指令或者操作碼相關(guān)的軟件相兼容。優(yōu)選實(shí)施例中,指令或者操作碼是Inte1 X86型的與軟件相兼容的指令,并被解碼成被高級(jí)執(zhí)行單元318執(zhí)行的微操作碼UOP。指令解碼流水線400’從一個(gè)緩沖器(沒有示出)中接收這些指令或者操作碼,將其轉(zhuǎn)換成被執(zhí)行單元318執(zhí)行的微操作碼UOP。通過持續(xù)的對(duì)Intel X86型的指令解碼,微處理器201保持了軟件向后的兼容性。
在優(yōu)選實(shí)施例中,指令解碼流水線400’有七個(gè)指令存儲(chǔ)單元,一個(gè)將被解碼的指令使用七個(gè)時(shí)鐘周期,并在流水線的末尾處產(chǎn)生一個(gè)微操作碼UOP。當(dāng)然,指令解碼流水線400’可以具備提供不同長(zhǎng)度的不同數(shù)量存儲(chǔ)單元。假設(shè),映像流水線402有匹配的存儲(chǔ)單元,以便指令線程標(biāo)識(shí)和指令有效位在處理方面與指令平行。優(yōu)選實(shí)施例中,指令解碼流水線能夠在給定的時(shí)間,在流水線上的第一個(gè)線程被解碼之后順序的處理多個(gè)線程。
指令解碼流水線中400’的指令存儲(chǔ)單元包括邏輯塊之間的五個(gè)寄存器501A-505E,和兩個(gè)緩沖器502A,502B。寄存器501A-505E可以由D型觸發(fā)器或是有合適時(shí)鐘信號(hào)的透明鎖存器組成。緩沖器502A,502B是存儲(chǔ)大量數(shù)據(jù)字節(jié)的數(shù)據(jù)緩沖器。優(yōu)選實(shí)施例中,指令解碼流水線400’中的邏輯功能性包括一個(gè)第一長(zhǎng)度解碼器511,第二長(zhǎng)度解碼器512,一個(gè)指令定位器513,一個(gè)故障/前綴檢測(cè)器和字段定位器/提取器514,一個(gè)指令翻譯器515,一個(gè)指令別名器516,一個(gè)微操作碼UOP調(diào)度程序517。
優(yōu)選實(shí)施例中,緩沖器502A和502B是專用于線程的緩沖器。實(shí)質(zhì)上,緩沖器502A和502B在指令解碼流水線400上形成了兩個(gè)中斷點(diǎn),因?yàn)樗鼈兡軌蛞钥勺兊乃俾瘦敵銎鋬?nèi)容(也就是,空的)。緩沖器502A置于第二長(zhǎng)度解碼器512和指令定位器513之間。緩沖器502B置于指令解碼流水線400的末尾。也可以被認(rèn)為是跟蹤指令高速緩沖存儲(chǔ)器314的組成部分。然而,緩沖器被表示為指令解碼流水線400的組成部分,來理解本發(fā)明要解決的全部問題。優(yōu)選實(shí)施例中,寄存器501A-505E是以每個(gè)不同于下一個(gè)周期的周期計(jì)時(shí)的D型觸發(fā)器。
輸入到指令解碼流水線400’的輸入指令410可以是非常長(zhǎng)的指令語句(VLIW)。VLIW輸入指令410被輸入到第一長(zhǎng)度解碼器511和第二長(zhǎng)度解碼器512中,被解碼和劃分成多個(gè)過程或者功能(也就是指令),被存入緩沖器502A中。優(yōu)選實(shí)施例中,緩沖器502A累積全部或者一部分可變長(zhǎng)度的X86指令。緩沖器502B,在指令解碼流水線400’的輸出,用于累積被存入跟蹤緩沖存儲(chǔ)器314中之前退出指令解碼流水線400’中的固定數(shù)量的微操作碼UOP。當(dāng)一個(gè)緩沖器存滿時(shí),這個(gè)緩沖器不能接收多余的指令,指令解碼流水線400’必須延遲以阻止指令的丟失。緩沖器502A和502B的每一個(gè)都能產(chǎn)生一個(gè)具有延遲線程標(biāo)識(shí)的延遲信號(hào),延遲指令解碼流水線400’。
如果必須,緩沖器502B還能夠產(chǎn)生一個(gè)具有清除線程標(biāo)識(shí)的清除信號(hào),使指令解碼流水線400’上的與清除標(biāo)識(shí)相關(guān)的指令無效。具有清除線程標(biāo)識(shí)的清除信號(hào)也可以在外部被從微處理器的前一個(gè)處理塊或是后面的處理塊傳入到指令解碼器。如果決定了一個(gè)不能被執(zhí)行單元118執(zhí)行的指令是無效的,故障/前綴檢測(cè)器和字段定位器/提取器514也可以產(chǎn)生具有清除線程標(biāo)識(shí)的清除信號(hào),而不考慮進(jìn)一步解碼的需要。另外,故障/前綴檢測(cè)器和字段定位器/提取器514或許需要附加的周期對(duì)一個(gè)給定的指令作決定。這種情況下,故障/前綴檢測(cè)器和字段定位器/提取器514可以產(chǎn)生一個(gè)具有延遲線程標(biāo)識(shí)的延遲信號(hào)。
緩沖器502A,作為一個(gè)操作緩沖器,存有為具有一個(gè)給定線程標(biāo)識(shí)的給定線程的VLIW輸入指令410的多個(gè)過程或者功能(也就是指令)。優(yōu)選實(shí)施例中,輸入指令解碼流水線400’的輸入指令410以指令的8字節(jié)塊被送入緩沖器502A。緩沖器502A接收并在三個(gè)8字節(jié)寄存器中保存三個(gè)八字節(jié)塊指令,平行的提供信息的24個(gè)字節(jié),在它的輸出提供一個(gè)指令。優(yōu)選實(shí)施例中,緩沖器502A輸出完整的Intel X86指令。被緩沖器502A產(chǎn)生的Intel X86指令可以是1個(gè)字節(jié)至15個(gè)字節(jié)之間任何長(zhǎng)度。因?yàn)镮ntel X86的指令長(zhǎng)度可變,數(shù)據(jù)能夠被緩沖器502A以比輸出速率更多的不同輸出速率接收。緩沖器502A在給定的8字節(jié)寄存器存儲(chǔ)一樣的指令塊,直到這些在寄存器中存儲(chǔ)的指令被處理。這就是說,為了將指令的每個(gè)8字節(jié)的塊寫入緩沖器502A中,必須花費(fèi)8個(gè)周期的讀出一個(gè)指令,可以花費(fèi)1個(gè)周期讀出一個(gè)指令,或者為了完成一個(gè)完整指令的輸出,緩沖器必須等待接收一個(gè)或者多個(gè)指令的8個(gè)字節(jié)塊。因此,緩沖器502A中的一個(gè)8個(gè)字節(jié)寄存器可能在有時(shí)是空閑的,同時(shí)緩沖器中502A中的三個(gè)8字節(jié)寄存器可能在其它情況時(shí)都立刻空閑。VLIW輸入指令410的多個(gè)過程或是功能(也就是指令)被緩沖器502A輸出,好像以一種類似移位寄存器先入先出FIFO方式的指令410’。多路復(fù)用器用于從存儲(chǔ)在緩沖器502A中的大量過程或者功能中為一個(gè)給定的VLIW輸入指令選擇過程或者功能,以便不必安裝一個(gè)實(shí)際存在的移位寄存器。被多路復(fù)用處理選擇的輸出指令410’被提供給指令定位器513。因?yàn)橹噶?10’為相同的線程輸出,每一個(gè)輸出指令的線程標(biāo)識(shí)被復(fù)制,直到指令的線程被完成或是從緩沖器502A中清除。緩沖器502A發(fā)出一個(gè)具有線程標(biāo)識(shí)的延遲信號(hào),直到在緩沖器502A中一個(gè)給定輸入指令410所有的過程和功能及線程被輸出到指令定位器513中或是被無效。被緩沖器502A啟動(dòng)的延遲可能延遲在前的流水線階段,第一長(zhǎng)度解碼器511和第二長(zhǎng)度解碼器512。被緩沖器502A啟動(dòng)的延遲不能延遲后面的流水線階段513-517。
UOP調(diào)度程序517調(diào)度的微操作碼在存入跟蹤指令緩沖存儲(chǔ)器314之前被緩沖器502B保存。因此,緩沖器502B經(jīng)常被稱作跟蹤緩沖緩沖器填滿緩沖器,并被認(rèn)為是跟蹤緩沖存儲(chǔ)器314的組成部分而不是指令解碼器316的組成部分。如果緩沖器502B存滿,一個(gè)延遲可被緩沖器502B啟動(dòng)。被緩沖器502B啟動(dòng)的延遲可能延遲一個(gè)或多個(gè)在前的流水線階段513-517,緩沖器502A和在前的流水線階段511和512。
根據(jù)在前的描述,第一長(zhǎng)度解碼器511和第二長(zhǎng)度解碼器512將指令410解碼和劃分成多個(gè)過程或者功能(也就是被包含在VLIW中的指令)。緩沖器502A將這些一個(gè)或多個(gè)過程或者功能作為指令410’輸出。指令定位器513為了指令解碼器進(jìn)一步的執(zhí)行處理,將指令410’定位成多個(gè)適當(dāng)?shù)谋忍囟巍9收?前綴檢測(cè)器和字段定位器/提取器514決定是否被解碼的指令能夠被執(zhí)行單元318執(zhí)行。如果可能,指令翻譯器515將X86指令轉(zhuǎn)換成一個(gè)微操作碼。指令別名器516能為一個(gè)指令別名,使解碼邏輯更簡(jiǎn)單。微操作碼調(diào)度程序517將微操作碼輸出到緩沖器502B中。微操作碼調(diào)度程序517最后檢查決定在前的指令流水線階段是否提供了一個(gè)有效的指令。
參照附圖6,表示了控制邏輯401和映像流水線402的詳細(xì)的框圖。映像流水線402包括指令有效映像流水線601和線程標(biāo)識(shí)映像流水線602。附圖6中表示的控制邏輯401包括電源關(guān)閉邏輯603,時(shí)鐘控制邏輯604,清除邏輯605A-605M,M個(gè)清除邏輯對(duì)應(yīng)于M個(gè)流水線階段,線程選擇多路復(fù)用器606A-605M,M個(gè)線程選擇多路復(fù)用器對(duì)應(yīng)于M個(gè)流水線階段。指令有效映像流水線601包括M個(gè)可復(fù)位D型鎖存器/觸發(fā)器611A-611M,如附圖6所示串聯(lián)的耦合在一起,M個(gè)可復(fù)位D型鎖存器/觸發(fā)器對(duì)應(yīng)于M個(gè)流水線階段。線程標(biāo)識(shí)映像流水線602包括M個(gè)D型鎖存器/觸發(fā)器612A-612M,如附圖6所示串聯(lián)的耦合在一起,每個(gè)對(duì)應(yīng)一個(gè)流水線階段。鎖存器/觸發(fā)器611A-611M和鎖存器612A-612M可以由D型觸發(fā)器或是有合適的時(shí)鐘信號(hào)的透明鎖存器組成,以與寄存器501A-501E和緩沖器502A-502B匹配。映像流水線402提供在一條指令解碼流水線401上具有指令的多線程的必須的裝置。映像流水線402中的D型鎖存器/觸發(fā)器611A-611M和D型鎖存器/觸發(fā)器612A-612M,保持指令解碼流水線401中每個(gè)流水線階段的每個(gè)指令各自的指令有效位416和指令線程標(biāo)識(shí)418。優(yōu)選實(shí)施例中,M的值是7,完成一個(gè)指令解碼需要至少M(fèi)個(gè)時(shí)鐘周期。
本發(fā)明中控制邏輯401實(shí)現(xiàn)的支持流水線指令解碼器400’的多線程的控制算法,具三個(gè)主要的功能部分1)有效延遲和氣泡擠壓,2)指定線程的清除,3)機(jī)會(huì)的電源關(guān)閉。參照附圖6和7,附圖7表示在附圖6中表示的控制邏輯401所執(zhí)行的控制運(yùn)算方程式。附圖6中表示的電源關(guān)閉邏輯603,對(duì)每個(gè)流水線階段執(zhí)行“任何一個(gè)流水線階段X的電源關(guān)閉”的方程式。為了執(zhí)行上述功能,電源關(guān)閉邏輯603輸入每個(gè)流水線階段的指令有效位。另外,附圖7表示了電源關(guān)閉邏輯603執(zhí)行“最后一個(gè)流水階段的前一階段的延遲(NLP)”方程和“為任何流水線階段X的延遲”的方程。為了執(zhí)行上述功能,電源關(guān)閉邏輯603還接收一個(gè)具有延遲線程標(biāo)識(shí)的線程延遲信號(hào),決定是否最后一個(gè)流水階段的前一階段的指令解碼流水線應(yīng)該被延遲。電源關(guān)閉邏輯603通過將給定的流水線階段的指令有效位與隨后的流水線的指令有效位作與運(yùn)算,處理每個(gè)流水線階段的延遲條件,進(jìn)一步用這些結(jié)果和是否最后一個(gè)流水階段的前一階段被延遲的決定作與運(yùn)算。電源關(guān)閉邏輯將每一個(gè)階段的延遲條件送入時(shí)鐘控制邏輯604。時(shí)鐘控制邏輯按照附圖7所示的“任何流水線階段X的時(shí)鐘使能”的方程選擇每個(gè)流水線階段的時(shí)鐘停止或是運(yùn)行。如果給定的流水線階段沒有延遲并且沒有電源關(guān)閉,那么給定流水線階段使得其時(shí)鐘使能,以便能在下一個(gè)周期被計(jì)時(shí)。
附圖6表示的每個(gè)流水線階段的清除邏輯605A-605M,執(zhí)行如附圖7表示的“清除任何流水線階段X”的邏輯方程。在除了最后一個(gè)流水階段的前一階段外的每個(gè)流水線階段,計(jì)算方程式?jīng)Q定是否在指令解碼流水線上平行的流水線階段應(yīng)該通過清除或是設(shè)置指令有效位指示一個(gè)無效指令而被無效。輸入到多路復(fù)用器606A-606M中的選擇信號(hào)選擇Clear(x)方程式的Clock(x)項(xiàng)還是NOT Clock(x)項(xiàng)被估計(jì),Clear(x)方程式被計(jì)算為每個(gè)流水線階段產(chǎn)生清除信號(hào)。從多路復(fù)用器606A-606M中每個(gè)輸出的每個(gè)流水線階段的清除信號(hào)被耦合進(jìn)入每個(gè)可復(fù)位D型鎖存器/觸發(fā)器611A-611M的復(fù)位端。在為給定流水線階段產(chǎn)生一個(gè)清除信號(hào)時(shí),結(jié)構(gòu)有效位被設(shè)置或是復(fù)位,指示一個(gè)在指令解碼流水線中平行的流水線階段中的無效指令。清除邏輯605A-605M的每個(gè)接收一個(gè)輸入的給定流水線階段的指令線程標(biāo)識(shí)和一個(gè)在前流水線階段的指令線程標(biāo)識(shí),計(jì)算Clear(x)方程式的項(xiàng)。另外,所有清除邏輯605A-605M接收具有清除線程標(biāo)識(shí)的清除線程信號(hào)。
舉例說明有效延遲和氣泡擠壓的功能,附圖8-10,11A,11B描述了指定線程的清除,機(jī)會(huì)的電源關(guān)閉運(yùn)算。附圖8-10,11A,11B的表示與附圖5中所示的緩沖器502A和502B之間的指令解碼流水線400’的控制相關(guān),流水線階段513-517被稱作如下面描述的流水線階段PS1-PS5,通過使用本發(fā)明中的算法歸納一個(gè)指令解碼器中任意指令解碼流水線的控制。
有效延遲和氣泡擠壓延遲一般發(fā)生在當(dāng)微處理器中任何子系統(tǒng)不再進(jìn)一步處理來自于其它子系統(tǒng)的數(shù)據(jù)時(shí)。為了避免丟失數(shù)據(jù),現(xiàn)有的微處理器子系統(tǒng)必須延遲,在指令解碼器中,延遲發(fā)生在當(dāng)在指令解碼流水線中給定的流水線階段沒有指令能被解碼時(shí)。一個(gè)阻塞延遲是指,不管線程標(biāo)識(shí)或是流水線上的指令的有效性而停止指令解碼流水線上每個(gè)流水線階段。一個(gè)非阻塞延遲是指,指定的線程或者考慮指令的有效位。非阻塞延遲那些在將被延遲的線程標(biāo)識(shí)的因素和流水線階段具有有效位的因素。例如,如果一個(gè)延遲發(fā)生在線程標(biāo)識(shí)是1時(shí),一個(gè)指令在線程標(biāo)識(shí)是0時(shí)被執(zhí)行,線程標(biāo)識(shí)是0的指令將繼續(xù)執(zhí)行,線程標(biāo)識(shí)是0的指令將繼續(xù)被指令解碼器解碼,直到一個(gè)線程標(biāo)識(shí)是1的指令進(jìn)入指令解碼流水線。一旦一個(gè)線程標(biāo)識(shí)是1的指令進(jìn)入指令解碼流水線,其被執(zhí)行延遲。阻塞延遲不考慮指令的線程標(biāo)識(shí),有效的延遲在本發(fā)明中是被指令解碼器執(zhí)行的運(yùn)算,用來減少任何延遲的影響。
一個(gè)氣泡是位于指令解碼器中的大量無效的指令。通常,氣泡是被混合入指令解碼流水線中其它指令線程的整個(gè)指令線程變?yōu)闊o效產(chǎn)生的結(jié)果。產(chǎn)生這種情況的一個(gè)例子是一個(gè)錯(cuò)誤連接的支路。本發(fā)明中,執(zhí)行氣泡擠壓運(yùn)算,通常擠出指令解碼流水線上的指令的氣泡。氣泡擠壓運(yùn)算實(shí)質(zhì)上是通過繼續(xù)計(jì)時(shí)指令被標(biāo)識(shí)無效的流水線階段直到接收一個(gè)有效的指令來完成的。對(duì)包括有效指令的一個(gè)流水線階段的計(jì)時(shí)暫時(shí)停止,直到延遲的原因被清除。無效的指令最終通過將存儲(chǔ)在流水線階段上的無效指令改寫成有效指令而被擠出。氣泡擠壓運(yùn)算繼續(xù)運(yùn)行指令解碼流水線,降低流水線其它線程的指令而不是執(zhí)行一個(gè)非智能的或是阻塞延遲。氣泡擠壓在指令解碼器中提供更高的吞吐量。
有效延遲和氣泡擠壓的運(yùn)算處理包括由可變消耗的緩沖器產(chǎn)生的指定的線程延遲。通過使用線程標(biāo)識(shí)流水線上的線程標(biāo)識(shí)和指令有效流水線上的指令有效位,算法決定是否一個(gè)與延遲相符的線程標(biāo)識(shí)的有效指令應(yīng)該在下一個(gè)周期出現(xiàn)在緩沖器中。如果是,那么在進(jìn)行緩存之前,最后一個(gè)流水線階段之前的一個(gè)階段被延遲(防止出現(xiàn)更多的指令)。在優(yōu)選實(shí)施例中,使用最后一個(gè)流水線階段之前的一個(gè)階段而不是最后的流水線階段,以便提供一個(gè)計(jì)算的周期時(shí)間。在可選的實(shí)施例中,最后一個(gè)流水線階段可以代替最后一個(gè)流水線階段之前的一個(gè)階段。任何沒有有效指令的指令解碼流水線階段不被延遲,任何在緩沖器之后的流水線階段也不被延遲。這樣允許流水線中的指令進(jìn)行直到流水線滿,同時(shí),仍然延遲最后一個(gè)流水線階段之前的一個(gè)階段以阻止指令的丟失,增加全部解碼的帶寬。如果將要進(jìn)入緩沖器中的指令數(shù)據(jù)不具有同延遲的線程一樣的線程,那么保持時(shí)鐘繼續(xù)運(yùn)行。這樣防止了有其它線程的指令被延遲,允許指令解碼流水線上的后面的有同一線程的指令繼續(xù)進(jìn)行,因此進(jìn)一步增加指令解碼器的帶寬。
參照附圖8,表示了本發(fā)明中被多線程流水線指令解碼器執(zhí)行的一個(gè)氣泡擠壓示例的時(shí)序圖。附圖8中波形801,802和803在時(shí)間上被分開一個(gè)時(shí)鐘周期。波形801是描述在time1過程中流水線階段中的指令狀態(tài)的時(shí)序圖。波形802是描述在time2中流水線階段中的指令狀態(tài)的時(shí)序圖。波形803是描述在time3中流水線階段中的指令狀態(tài)的時(shí)序圖。流水線階段中指令的指令狀態(tài)被表示超出了波形的每一個(gè)周期,一個(gè)標(biāo)記表示了線程標(biāo)識(shí)和包含在映像流水線中每個(gè)流水線階段的指令有效位。狀態(tài)X表示一個(gè)給定流水線階段的無效指令。狀態(tài)T0(標(biāo)記0),作為一個(gè)T0標(biāo)識(shí)的指令表示流水線階段的有效指令并具有為0的指令線程標(biāo)識(shí)(thread-ID=0;ID=0)。狀態(tài)T1(標(biāo)記1),稱作T1的指令表示流水線階段的有效指令并具有為1的指令線程標(biāo)識(shí)(thread-ID=1;ID=1)。與標(biāo)識(shí)T0或是T1中每一個(gè)相關(guān)的指令具有表示狀態(tài)。一個(gè)或多個(gè)省略符同指令狀態(tài)一起表示指令的期限或者一個(gè)給定流水線階段的有效條件的期限。
附圖8中,波形801有一個(gè)無效指令的氣泡,狀態(tài)X,出現(xiàn)在time1開始的流水線階段PS1和PS2中。一個(gè)指令410’,一個(gè)標(biāo)識(shí)為1(T1)的T1指令輸入到指令解碼流水線中。假設(shè)從接收到一個(gè)具有線程標(biāo)識(shí)為0的延遲信號(hào)開始一個(gè)T0的指定線程發(fā)生延遲,開始一個(gè)時(shí)鐘周期,產(chǎn)生波形802。波形802中,流水線階段PS4和PS5延遲各自的時(shí)鐘。流水線階段PS4,最后一個(gè)流水線階段的前一個(gè)階段的延遲條件能夠被如附圖7所示的“最后一個(gè)流水線階段之前的一個(gè)階段的延遲”的方程式計(jì)算,其中因?yàn)镻S4所以NLP取值為4。優(yōu)選實(shí)施例中,使用最后一個(gè)流水線階段之前的一個(gè)階段來替代最后一個(gè)流水線階段,以便在指令解碼器處理一個(gè)指令之前提供計(jì)算的周期時(shí)間。在可選的實(shí)施例中,在方程式“最后一個(gè)流水線階段之前的一個(gè)階段的延遲”中,最后最后一個(gè)流水線階段之前的一個(gè)階段替代下一個(gè)流水線階段,其中因?yàn)镻S5所以NLP取值為5。從附圖7中看出Stall(NLP)=Valid Instruction in Pipe(NLP)AND(ThreadID(NLP)=ThreadID of stall)
因?yàn)榱魉€階段PS4中標(biāo)記T0的指令是一個(gè)有效指令,和指定的T0線程延遲關(guān)聯(lián)(ThreadID=0=ThreadID of stall),存在于流水線階段PS4中存在一個(gè)延遲條件。流水線階段PS4的時(shí)鐘因此在下一個(gè)時(shí)鐘關(guān)閉,以保持指令。這些能被附圖7表示的“任何流水線階段的時(shí)鐘使能”的方程式的計(jì)算得到。
Clock(X)=NOT Stall(X)AND NOT Powerdown(X)因?yàn)檠舆t條件存在于流水線階段PS4中,它的時(shí)鐘使能信號(hào)低以停止下一個(gè)時(shí)鐘周期的時(shí)鐘。
流水線階段PS5的延遲條件,能從被附圖7表示的“延遲任何其它流水線階段X”的方程式的計(jì)算得到,其中對(duì)于PS5,X為5。
Stall(X)=Valid Instruction in Pipe(X)AND ValidInstruction in Pipe(X+1)AND StallNLP因?yàn)榱魉€階段PS5有一個(gè)有效的T0指令,估計(jì)在前的周期有一個(gè)有效的指令調(diào)度和一個(gè)延遲(NLP)條件存在;流水線階段PS5也存在延遲條件。流水線階段PS5的時(shí)鐘因此在下一個(gè)時(shí)鐘關(guān)閉同樣保持T0指令。因?yàn)榱魉€階段PS5中存在延遲條件,它的由方程式“為任何流水線階段X的時(shí)鐘使能”的計(jì)算得到的時(shí)鐘使能信號(hào)為低,以停止下一個(gè)時(shí)鐘周期的時(shí)鐘。因此,流水線階段PS4和PS5中的T0指令不會(huì)在指令解碼流水線中前進(jìn),而是被保持在流水線階段中,UOP調(diào)度程序517不調(diào)度微操作碼UOP。然而,被標(biāo)記T1表示的和一個(gè)不同線程有關(guān)的T1指令,能夠在指令解碼流水線中前進(jìn)。流水線階段PS1、PS2和PS3中的時(shí)鐘不被延遲,在time2中流水線階段PS1中的T1指令在指令解碼流水線上向前進(jìn)入波形802的流水線階段PS2。一個(gè)延遲條件不存在于波形802的time2中的流水線階段PS2中,因?yàn)樵陔S后的流水線階段PS3有無效的指令。如同波形802的表示,先前在流水線階段PS2中發(fā)現(xiàn)的無效指令已經(jīng)被一個(gè)T1指令改寫。因?yàn)樵诹魉€階段PS3指令解碼流水線上仍然存在一個(gè)無效的指令,另一個(gè)T1指令410’能夠在下一個(gè)時(shí)鐘周期從流水線階段PS1向前進(jìn)。又一個(gè)時(shí)鐘周期之后,產(chǎn)生波形803。波形803中,當(dāng)一個(gè)T1指令從流水線階段PS1向前進(jìn)入流水線階段PS2的同時(shí),先前在流水線階段PS2的T1指令向前進(jìn)入下一個(gè)流水線階段PS3。因此,波形802中存在于流水線階段PS3中的先前的第二個(gè)無效指令被從指令解碼流水線中擠壓出去。波形803中看到,因?yàn)橹噶罱獯a流水線現(xiàn)在是滿的,整個(gè)指令解碼流水線被延遲,任何流水線階段的時(shí)鐘不會(huì)計(jì)時(shí),直到T0指定的線程延遲被清除以允許UOP被調(diào)度。以這種方式,無效指令的氣泡能夠從指令解碼器中擠壓出去。
參考附圖9,表示本發(fā)明中能夠被指令解碼器執(zhí)行的一個(gè)非阻塞延遲或者有效延遲的時(shí)序圖。附圖9中波形901,902和903在時(shí)間上被分開一個(gè)時(shí)鐘周期。波形901,902和903是描述在time1,time2和time3中流水線階段中的如上述波形指示的指令狀態(tài)時(shí)序圖。指令狀態(tài)同在前的附圖8中描述的指令狀態(tài)有一致的意思。
附圖9中,指令解碼流水線中的流水線階段包含具有線程標(biāo)識(shí)是1的線程的T1指令,具有線程標(biāo)識(shí)是0的線程的T0指令,每一個(gè)被上述波形901中的標(biāo)記表示。波形901中,一個(gè)T1指令410’進(jìn)入流水線階段PS1中,另一個(gè)T1指令以一個(gè)解碼的形式被存入流水線階段PS2中。波形901中,T0指令被存入流水線階段PS3,PS4和PS5中。在又一個(gè)時(shí)鐘周期之后,波形902產(chǎn)生。波形901表示的流水線階段的每個(gè)指令都在指令解碼流水線向前進(jìn)。波形901中流水線階段PS5中在前的T0指令被流水線階段PS5在time2中分配。在波形902中,一個(gè)T1指令410’進(jìn)入流水線階段PS1中,其它的T1指令以一個(gè)解碼的形式被存入流水線階段PS2和PS3中。在波形902中,T0指令被存入流水線階段PS4和PS5中?,F(xiàn)在假設(shè)一個(gè)T1指令線程延遲信號(hào)被控制邏輯401接收,在下一個(gè)時(shí)鐘周期產(chǎn)生波形903。在波形903中,一個(gè)T0指令被存入流水線階段PS5中同時(shí)另一個(gè)T0指令被分配。在波形903中,T1指令占據(jù)流水線階段PS1,PS2,PS3和PS4。因?yàn)樵谥噶罱獯a流水線后面的流水線階段中的指令是T0指令而不是T1指令,流水線繼續(xù)計(jì)時(shí)直到一個(gè)與指定的T1線程延遲相關(guān)的T1指令到達(dá)最后一個(gè)流水線階段之前的一個(gè)流水線階段PS4。當(dāng)一個(gè)T1指令到達(dá)最后一個(gè)流水線階段之前的一個(gè)流水線階段PS4,方程式“最后一個(gè)流水線階段之前的一個(gè)流水線階段(NLP)的延遲”計(jì)算的延遲條件被滿足。占據(jù)PS5的T0指令被分配進(jìn)入跟蹤高速緩沖存儲(chǔ)器。以這種方式,延遲能夠被指令解碼器智能的處理。線程特定清除指令可能會(huì)因?yàn)樵S多原因需要被清除。實(shí)質(zhì)上,清除是使那些無效的指令無效,以便它們能被忽略或是被有效指令重寫。清除指令可能無效與指定線程標(biāo)識(shí)相關(guān)的指令的整個(gè)線程。涉及的清除的這些類型被作為指定線程的清除。線程具體的對(duì)無效指令的清除能被包括存儲(chǔ)器子系統(tǒng)(例如,本身修改代碼)的微處理器中大量功能塊,指令解碼流水線本身(例如,分支地址計(jì)算器或者X86解碼錯(cuò)誤)和退役單元320或微處理器的其它后端功能塊產(chǎn)生。本發(fā)明中,線程具體的清除運(yùn)算法則僅僅清除這些指令,必須來自于指令解碼流水線并除去其中的有效指令,實(shí)現(xiàn)繼續(xù)的解碼和微處理器的執(zhí)行。本發(fā)明中,線程具體的清除算法使用指令的有效位416和映像流水線402中指令具體線程標(biāo)識(shí)418,來為包含對(duì)應(yīng)于被清除線程的指令的這些流水線階段產(chǎn)生清除信號(hào)。這些清除信號(hào)將無效那些包含在指令解碼流水線的每個(gè)的流水線階段的對(duì)應(yīng)于被無效的線程的這些指令的有效位。一個(gè)指令解碼流水線的線程具體的清除信號(hào)允許清除指令的一個(gè)線程同時(shí)保持其它指令線程的完整無恙。完整的指令可以在指令解碼流水線上越過這些因?yàn)楸粺o效而被清除的指令向前進(jìn)。線程特定清除指令在一個(gè)延遲中被執(zhí)行,如果引起延遲的指令被清除即消除了延遲條件。在一個(gè)基于處理器設(shè)計(jì)的周期,指令解碼流水線的流水線階段被分析決定是否被延遲或是不執(zhí)行線程特定清除來消除延遲條件。實(shí)質(zhì)上,線程特定清除移除在指令解碼流水線上阻擋其它線程的線程。這樣解決了在共享同一硬件的多線程機(jī)器中發(fā)生的所謂死鎖條件的問題。一個(gè)死鎖條件的例子是,一個(gè)線程標(biāo)識(shí)為0的指令被延遲,等待線程標(biāo)識(shí)為1的指令執(zhí)行而線程標(biāo)識(shí)為0的指令又阻止線程標(biāo)識(shí)為1的指令使用資源,例如跟蹤高速緩沖存儲(chǔ)器。如果整個(gè)流水線在這種死鎖條件下被清除,將不能保證同一個(gè)條件不重現(xiàn)。線程特定清除只清除這些具有多線程共享一個(gè)硬件資源的必須被使能的流水線階段。另外,有一個(gè)全部線程清除信號(hào),通過有效的從流水線上移除所有有效指令來影響所有線程。
參考附圖10,表示本發(fā)明中能被指令解碼器執(zhí)行的一個(gè)線程指定清除的時(shí)序圖。波形1001,1002和1003在時(shí)間上彼此分開一個(gè)時(shí)鐘周期。波形1001,1002和1003是描述在time1,time2和time3中的流水線階段中的指令狀態(tài)時(shí)序圖。流水線階段的狀態(tài)被表示在每個(gè)波形周期的上面,并且和先前參考圖8的討論具有同樣的含義。
附圖10中,波形1001在流水線階段中具有兩個(gè)線程的指令T1和T0指令,如同標(biāo)記1(T1)狀態(tài)和標(biāo)記0(T0)狀態(tài)表示的。波形1001中,T0指令在流水線階段PS2和PS4。Time1時(shí)間,T1指令在流水線階段PS3和PS5。一個(gè)新指令410’,一個(gè)T1指令被輸入到指令解碼流水線中第一個(gè)流水線階段PS1中。在波形1001中,在指令解碼流水線上流水線階段PS1-PS5中所有的指令在time1中都是有效的。假設(shè)一個(gè)T1線程特定清除被接收,T1指令,這些與標(biāo)記T1表示的線程相關(guān)的指令在指令解碼流水線上的流水線階段中被無效。指令通過設(shè)置或是清除在映像流水線中適當(dāng)?shù)牧魉€階段的指令有效位被無效。波形1002中,流水線階段全部被計(jì)時(shí),將指令從波形1001中的階段移到相繼的下一個(gè)流水線階段。在流水線階段PS2和PS4中就是保持T1指令的流水線階段中的指令,現(xiàn)在都屬于如X表示的無效狀態(tài)。這能通過分析如附圖7表示的方程式“對(duì)任何流水線階段X的清除”來計(jì)算。
Clear(X)={Clock(X)AND[(ClearThread(ID0)AND(ThreadlD(X-1))=ID1))OR(ClearThread(ID1))AND(ThreadTD(X-1)=ID1))}OR{NOT Clock(X)AND[(ClearThread(ID0))AND(ThreadID(X)=ID0))OR(ClearThread(ID0)AND(ThreadID(X)=ID1))}這個(gè)方程式有兩項(xiàng),一個(gè)Clock(X)項(xiàng),另一個(gè)NOT Clock(X)項(xiàng)。作為假如時(shí)鐘不被延遲的結(jié)果,兩項(xiàng)中的Clock(X)項(xiàng)是可能引起清除的項(xiàng)。如果一個(gè)流水線階段被延遲,相關(guān)的兩個(gè)項(xiàng)中的一個(gè)NOTClock(X)項(xiàng)將計(jì)算以決定是否發(fā)生一個(gè)清除條件。在這個(gè)方程式中,清除線程(ID0)是一個(gè)線程標(biāo)識(shí)為0的線程特定清除。清除線程(ID1)是一個(gè)線程標(biāo)識(shí)為1的線程特定清除。流水線階段PS2被清除,因?yàn)椴ㄐ?001中time1的流水線階段PS1是T1指令并且一個(gè)T1線程特定清除被接收,所以在下一個(gè)時(shí)鐘周期PS2階段被清除,其指令無效為X。就是說清除線程(ID1)是T1線程特定清除,time1的PS1中指令標(biāo)識(shí)是1,所以一個(gè)清除條件存在導(dǎo)致PS2在下一個(gè)時(shí)鐘周期被清除。Time2的流水線階段PS4的清除可以被同樣的解釋,參照在前的Time1的流水線階段PS3中保持的數(shù)值。
波形1002中,流水線階段PS3和PS4保持T0指令。因?yàn)橐粋€(gè)T1線程特定清除發(fā)生,Time1的流水線階段PS5中的指令,作為一個(gè)T1指令被清除,因此,在Time2中UOP調(diào)度程序517不調(diào)度任何微操作碼。下一個(gè)時(shí)鐘周期之后,波形1003產(chǎn)生。波形1003中,流水線階段全部被計(jì)時(shí),將指令從波形1002移到相繼的下一個(gè)流水線階段。一個(gè)新的與標(biāo)記0(T0)相關(guān)的指令的線程,T0指令進(jìn)入第一個(gè)流水線階段PS1。一個(gè)被X表示的無效指令已經(jīng)移動(dòng)進(jìn)入了流水線階段PS3和PS5。T0指令被保持在流水線階段PS2和PS4中,同時(shí)在Time3中一個(gè)T0指令被UOP調(diào)度程序517調(diào)度。這種方式,發(fā)生指令解碼器中流水線階段中線程特定清除。關(guān)于其它線程的指令能夠保持在流水線階段并被沒有任何延遲的進(jìn)一步解碼。
機(jī)會(huì)的電源關(guān)閉機(jī)會(huì)的電源關(guān)閉算法一方面停止電路的整個(gè)流水線階段(每個(gè)流水線)的時(shí)鐘,以便節(jié)省功率,此不同于僅僅一個(gè)功能塊。另一方面,機(jī)會(huì)的電源關(guān)閉運(yùn)算法則停止在電路上任何流水線階段的時(shí)鐘,保持指令中將被清除的線程(每個(gè)線程)以便保持功率的線程。另一方面,機(jī)會(huì)的電源關(guān)閉算法停止整個(gè)指令解碼器和任何先前電路的時(shí)鐘,如果指令解碼器中沒有有效的指令,或者在前電路向指令解碼器提供指令(每個(gè)流水線)。時(shí)鐘控制電路能夠檢測(cè)這些條件,來決定什么時(shí)候禁止時(shí)鐘使能信號(hào)來關(guān)閉電路中一個(gè)或多個(gè)流水線階段的時(shí)鐘。因?yàn)殡娫搓P(guān)閉對(duì)于用戶來說是透明的,不會(huì)有任何性能或功能的損害,運(yùn)算是機(jī)會(huì)的。對(duì)用戶來說,機(jī)會(huì)電源關(guān)閉運(yùn)算帶來得唯一的可見效果是電源的節(jié)省。
本發(fā)明中機(jī)會(huì)電源關(guān)閉運(yùn)算使用指令有效流水線決定是否計(jì)時(shí)一個(gè)特殊的流水線階段。如果緊接在一個(gè)流水線階段前的有效指令將進(jìn)入該階段,那么接收有效指令的流水線階段被計(jì)時(shí)。如果沒有有效的指令等待,或直接在前的指令是無效的,接收無效指令的流水線階段的時(shí)鐘被關(guān)閉(就是說時(shí)鐘被停止)以節(jié)省功率。同樣的,通過檢查映像流水線的每個(gè)流水線階段中指令的有效性的信息,能夠得知什么時(shí)間整個(gè)指令流水線的每個(gè)流水線階段沒有工作,時(shí)鐘控制邏輯的信號(hào)是整體關(guān)閉指令解碼流水線的時(shí)鐘還是部分的關(guān)閉。通過以這種方式停止時(shí)鐘,指令解碼器的功耗被減少。
參考附圖11A和11B,表示本發(fā)明中指令解碼器執(zhí)行的機(jī)會(huì)的電源關(guān)閉示例的時(shí)序圖。波形1101,1102和1103是描述在time1,time2和time3中的流水線階段的狀態(tài)時(shí)序圖,彼此在時(shí)間上分開一個(gè)時(shí)鐘周期。波形1111,1112,1113,1114和1115是描述在time1,time2,time3,time4和time5各個(gè)中的流水線階段的狀態(tài)時(shí)序圖,在時(shí)間上彼此分開的一個(gè)時(shí)鐘周期。指令狀態(tài)同在前的附圖8中描述的指令狀態(tài)有一致的意思。
在附圖11A中,波形1101在流水線階段上有具有兩種線程的指令,如同標(biāo)記1(T1)狀態(tài)和標(biāo)記0(T0)狀態(tài)表示的。在波形1101中,T0指令,與線程標(biāo)記0(T0)相關(guān)的線程的指令,在流水線階段PS2和PS4中。T1指令,具有線程標(biāo)記為1的線程的指令,在流水線階段PS3和PS5中。一個(gè)新的指令410’,一個(gè)T1指令被輸入流水線階段PS1中。因?yàn)椴ㄐ?101表示的在指令解碼流水線上所有的指令在time中是有效的,所以每個(gè)流水線階段的時(shí)鐘運(yùn)行產(chǎn)生下一個(gè)周期。現(xiàn)在假設(shè)T1線程具體的清除已經(jīng)被接收,以便T1指令將要在下一個(gè)周期接收這些指令的流水線階段上被無效。
另一個(gè)時(shí)鐘周期產(chǎn)生之后,波形1102在time2形成。在波形1102中,所有流水線階段都被從波形1101計(jì)時(shí),以將指令移向相繼的下一個(gè)流水線階段。因?yàn)門1線程特定清除,本應(yīng)當(dāng)保持T1指令的流水線階段PS2和PS4,現(xiàn)在保持了被無效狀態(tài)X表示的無效指令。因?yàn)橐粋€(gè)T1線程特定清除的發(fā)生,波形1101表示的流水線上的最后一個(gè)指令是T1指令,因此被清除,因此在time2中沒有指令被UOP調(diào)度程序517調(diào)度。
為了使在指令解碼器中的機(jī)會(huì)電源關(guān)閉運(yùn)算法則起作用,一個(gè)或多個(gè)流水線階段需要包含無效的指令。如果在直接在前的流水線階段[Pipe(x-1)] 的指令中包含一個(gè)無效指令,給定的流水線階段[Pipe(x)]電源被關(guān)閉。附圖7清楚地說明了對(duì)任何流水線階段X而關(guān)閉電源的方程式。
Powerdown(X)=NOT Valid Instruction in Pipe(X-1)一個(gè)給定的流水線階段通過關(guān)閉時(shí)鐘被關(guān)閉電源。在給定的流水線階段隨后有一個(gè)無效的指令的情況下,在下一個(gè)周期計(jì)時(shí)流水線階段接收無效指令將多余的消耗功率。波形1102中,因?yàn)榱魉€階段PS2和PS4各自有如標(biāo)記X表示的無效指令,流水線階段PS3和PS5在下一個(gè)周期停止各自的時(shí)鐘。當(dāng)然,如果一個(gè)延遲條件不存在,為了進(jìn)行有效指令,緊接行時(shí)鐘停止計(jì)時(shí)的段流水線階段之后的流水線階段[Pipe(x+1)]使時(shí)鐘開始計(jì)時(shí)。波形1102中,流水線階段PS4使時(shí)鐘在下一個(gè)周期運(yùn)行,緩沖器502B將在下一個(gè)周期接收一個(gè)調(diào)度輸出。這些可以從附圖7表示為任何流水線階段X的時(shí)鐘使能的方程式中看出。
Clock(X)=NOT Stall(X)AND NOT Powerdown(X)有無效指令的流水線階段,在有有效指令的給定流水線階段之前的,有無效指令的流水線階段被繼續(xù)計(jì)時(shí),直到一個(gè)有效指令包含在其中。
波形1102中,因?yàn)樵谶@些流水線階段存在如X狀態(tài)表示的無效指令,流水線階段PS2和PS4的計(jì)時(shí)將在下一個(gè)周期運(yùn)行。以這種方式,指令解碼器繼續(xù)解碼直到有效指令被解碼為這些流水線階段。因?yàn)樗麄儽3秩鐦?biāo)記T0表示的有效指令,流水線階段PS3和PS5關(guān)閉時(shí)鐘。
又一個(gè)時(shí)鐘周期之后,波形1103在time3中形成。波形1103中,因?yàn)樵谶@些流水線階段有一個(gè)如標(biāo)記T0’狀態(tài)表示的舊指令,流水線階段PS3和PS5的時(shí)鐘將運(yùn)行產(chǎn)生下一周期,因?yàn)門0指令已經(jīng)前進(jìn)進(jìn)入下一個(gè)流水線階段。一個(gè)舊指令被一個(gè)或多個(gè)省字號(hào)表示,取決于它在同一流水線階段中被保留多少個(gè)周期。舊指令和無效指令的相同點(diǎn)是能被重寫或放棄。這與一個(gè)延遲的指令是不同的,延遲指令仍然有效并且不能被改寫。以這種方式,指令解碼器繼續(xù)解碼直到在流水線中解碼了有效指令。波形1103中,因?yàn)楸3至巳鐦?biāo)記T0表示的有效指令,流水線階段PS2和PS4在下一個(gè)周期使其時(shí)鐘停止計(jì)時(shí)。因?yàn)槿绮ㄐ?102所示流水線階段PS5在前一個(gè)時(shí)鐘周期保持了一個(gè)有效的T0指令,T0指令被UOP調(diào)度程序517調(diào)度。被輸入到流水線階段PS1中的指令410’在波形中是如X表示無效的。因此,第一流水線階段PS1的時(shí)鐘被停止以避免在下一個(gè)時(shí)鐘周期讀無效指令。
參考附圖11B,表示機(jī)會(huì)電源關(guān)閉的第二示例的時(shí)序圖。波形1111中流水線階段的指令有兩個(gè)線程,標(biāo)記1(T1)狀態(tài)和標(biāo)記0(T0)狀態(tài)。波形1111中,T0指令,與標(biāo)記0(T0)相關(guān)的線程的指令在流水線階段PS4中。T1指令,與標(biāo)記1(T1)相關(guān)的線程指令在流水線階段PS2,PS3和PS5中。一個(gè)新的指令410’,T1指令被輸入到流水線階段PS1中。因?yàn)樗缘闹噶钊绮ㄐ?111 time1所示在指令解碼流水線是有效的指令,每個(gè)流水線上的時(shí)鐘運(yùn)行產(chǎn)生下一個(gè)周期?,F(xiàn)在假設(shè)一個(gè)T1線程特定清除已經(jīng)被接收,以便T1指令在將要在下一個(gè)周期接收這些指令的流水線階段上被無效。
又一個(gè)時(shí)鐘周期之后,波形1112在time2中形成。波形1112中,流水線階段全部被計(jì)時(shí),將指令從波形1111中的階段移到相繼的下一個(gè)流水線階段。因?yàn)門1線程特定清除,否則將保持T1指令的流水線階段PS2,PS3和PS4,現(xiàn)在保持如無效狀態(tài)X表示的無效指令。因?yàn)榘l(fā)生的T1線程特定清除,波形1111表示的流水線上最后一個(gè)指令,是一個(gè)T1指令,被清除,因此在time2中UOP調(diào)度程序517不調(diào)度任何操作碼。波形1112中,因?yàn)榱魉€階段PS2,PS3和PS4各自有如標(biāo)記X表示的無效指令,流水線階段PS2,PS3和PS4在下一個(gè)周期停止各自的時(shí)鐘。流水線階段PS2使自己的時(shí)鐘運(yùn)行,為了接收一個(gè)進(jìn)入波形1112中第一流水線階段的有效的T0指令。因?yàn)榱魉€階段PS5的T0指令是有效的,緩沖器502B將在下一個(gè)周期接收一個(gè)調(diào)度輸出。
又一個(gè)時(shí)鐘周期之后,波形1113在time3中形成。波形1113中,因?yàn)樵诹魉€階段PS3有一個(gè)如標(biāo)記X’狀態(tài)表示的舊指令,其引起了在流水線階段PS2的T0指令前進(jìn)進(jìn)入下一個(gè)流水線階段,流水線階段PS3的時(shí)鐘將運(yùn)行產(chǎn)生下一周期。波形1113中,流水線階段PS2的時(shí)鐘將運(yùn)行產(chǎn)生下一周期,以接收新的目前從指令輸入410’輸入第一流水線階段PS1的T0指令。因?yàn)樵谄渲皼]有有效指令,流水線階段PS4和PS5的時(shí)鐘保持停止。在流水線階段PS4和PS5上的指令在下一周期分別老化為X’和T0’。
又一個(gè)時(shí)鐘周期之后,波形1114在時(shí)間4形成。波形1114中,因?yàn)樵诹魉€階段PS4有一個(gè)如標(biāo)記X”狀態(tài)表示的舊指令,其引起了在流水線階段PS3的T0指令前進(jìn)進(jìn)入下一個(gè)流水線階段。波形1114中,流水線階段PS2和PS3的時(shí)鐘將運(yùn)行產(chǎn)生下一周期,以接收來自于在前流水線階段的新的經(jīng)過從指令輸入410’輸入第一流水線階段PS1的T0指令。因?yàn)樵诹魉€階段PS4之前沒有有效指令,流水線階段PS5時(shí)鐘保持停止。在流水線階段PS5上的指令在下一周期老化為T0”。
又一個(gè)時(shí)鐘周期之后,波形1115在time5中形成。因?yàn)樵诹魉€階段PS5有一個(gè)如標(biāo)記T0狀態(tài)表示的舊指令,其引起了在流水線階段PS4的T0指令前進(jìn)進(jìn)入下一個(gè)流水線階段,流水線階段PS5的時(shí)鐘將運(yùn)行產(chǎn)生下一周期。波形1115中,流水線階段PS2,PS3和PS4的時(shí)鐘將運(yùn)行產(chǎn)生下一周期以接收來自于在前流水線階段的新的經(jīng)過從指令輸入410’輸入第一流水線階段PS1的T0指令。在此實(shí)施例中,流水線階段PS5能保持自身時(shí)鐘以機(jī)會(huì)電源關(guān)閉的狀態(tài)停止三個(gè)周期,流水線階段PS4能保持自身時(shí)鐘以機(jī)會(huì)電源關(guān)閉的狀態(tài)停止兩個(gè)周期,流水線階段PS3能保持自身時(shí)鐘以機(jī)會(huì)電源關(guān)閉的狀態(tài)停止一個(gè)周期,機(jī)會(huì)電源關(guān)閉條件的其它情況,功率被或多或少的保存。
有效延遲和氣泡擠壓,線程特定清除和機(jī)會(huì)電源關(guān)閉的運(yùn)算法則是有內(nèi)在聯(lián)系的。例如,使用線程特定清除信號(hào)清除一個(gè)指定的流水線階段能引起給定流水線階段的延遲被消除。另外,一個(gè)線程特定清除可以無效在某個(gè)流水線階段上的指令以提供一個(gè)機(jī)會(huì)電源關(guān)閉條件。
本發(fā)明有許多比現(xiàn)有技術(shù)先進(jìn)的地方。本發(fā)明一個(gè)先進(jìn)之處是,在處理器前端的延遲很少發(fā)生。本發(fā)明另一個(gè)先進(jìn)之處是,無效指令的“氣泡”能從指令流中擠壓出去。本發(fā)明另一個(gè)先進(jìn)之處是,能夠清除在指令解碼流水線上的一個(gè)線程指令的同時(shí)使另一個(gè)指令線程完整。本發(fā)明另一個(gè)先進(jìn)之處是,網(wǎng)絡(luò)的解碼帶寬增加。本發(fā)明另一個(gè)先進(jìn)之處是,指令解碼流水線上的流水線階段僅僅在需要前進(jìn)一個(gè)指令時(shí)被計(jì)時(shí),因此節(jié)省了功率。本發(fā)明另一個(gè)先進(jìn)之處是,指令的多線程共享同一個(gè)指令解碼器,以低的操作花費(fèi)提高了每個(gè)線程的執(zhí)行。
這些可效仿的實(shí)施例被描述并以相應(yīng)附圖表示,應(yīng)當(dāng)理解這些實(shí)施例僅僅被表示不局限于本發(fā)明的范圍,本發(fā)明不限制在這里描述的具體的結(jié)構(gòu)和安排,普通的本領(lǐng)域技術(shù)人員應(yīng)理解各種其它修改可能發(fā)生。例如,本發(fā)明不限制在其應(yīng)用僅在于Intel X86指令解碼而是應(yīng)用于任何多線程流水線解碼器。更進(jìn)一步,本發(fā)明可適合于支持多線程的微處理器中其它的功能部分或者模塊。以便減少大量的硬件支持多線程,減少功耗,減少執(zhí)行延遲的負(fù)面影響。另外,可能在硬件,固件或是結(jié)合裝置上執(zhí)行本發(fā)明或者其特征的其中一些,處理器的可讀存儲(chǔ)媒體提供所需軟件,例如,磁性的,光的或是半導(dǎo)體存儲(chǔ)器。
權(quán)利要求
1.一種用于多線程處理器的流水線指令解碼器,該流水線指令解碼器包括指令解碼流水線,用于解碼與多個(gè)指令線程相關(guān)的指令,該指令解碼流水線具有預(yù)定數(shù)目的流水線階段;與指令解碼流水線并行的有效位流水線,該有效位流水線具有與指令解碼流水線的預(yù)定數(shù)目的流水線階段并行的相同預(yù)定數(shù)目的流水線階段,把在每一流水線階段處的有效指示符與在指令解碼流水線中被解碼的每個(gè)指令關(guān)聯(lián);和與指令解碼流水線和有效位流水線并行的線程標(biāo)識(shí)流水線,該線程標(biāo)識(shí)流水線具有與指令解碼流水線和有效位流水線的預(yù)定數(shù)目的流水線階段并行的相同預(yù)定數(shù)目的流水線階段,把在每一流水線階段處的有效指示符與在指令解碼流水線中被解碼的每個(gè)指令關(guān)聯(lián)。
2.根據(jù)權(quán)利要求1所述的流水線指令解碼器還包括耦合到指令解碼流水線、有效位流水線和線程標(biāo)識(shí)流水線的流水線控制器,該流水線控制器用來獨(dú)立地控制指令解碼流水線、有效位流水線和線程標(biāo)識(shí)流水線的每個(gè)流水線階段的計(jì)時(shí)。
3.根據(jù)權(quán)利要求2所述的流水線指令解碼器,其中流水線控制器包括用于每一流水線階段的清除邏輯,該清除邏輯通過在有效位流水線的相應(yīng)流水線階段中設(shè)置有效位,以指示無效指令,來控制指令解碼流水線的每一流水線階段的指令的無效。
4.根據(jù)權(quán)利要求2所述的流水線指令解碼器,其中流水線控制器包括電源關(guān)閉邏輯,用來分析每一流水線階段的有效指示符,以決定下一流水線階段是否要被關(guān)閉,以及決定流水線階段是否要被延遲;和時(shí)鐘控制邏輯,用來決定指令解碼流水線、有效位流水線和線程標(biāo)識(shí)流水線的流水線階段的相應(yīng)時(shí)鐘信號(hào)是否要被停止,以在一個(gè)延遲中保持功率或保持?jǐn)?shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的流水線指令解碼器,其中流水線控制器的電源關(guān)閉邏輯用來分析每一流水線階段的有效位,以決定是否應(yīng)該延遲任何流水線階段,該電源關(guān)閉邏輯包括異或(XOR)門,用于將最后一個(gè)流水線階段的前一個(gè)流水線階段的線程標(biāo)識(shí)與延遲的線程標(biāo)識(shí)進(jìn)行異或運(yùn)算,以決定上述兩者是否匹配,和第一與門,用于將最后一個(gè)流水線階段的前一個(gè)流水線階段的有效位與異或門的輸出進(jìn)行與運(yùn)算,以便決定在最后一個(gè)流水線階段的前一個(gè)流水線階段之前的流水線階段是否應(yīng)該被延遲。
6.根據(jù)權(quán)利要求5所述的流水線指令解碼器,其中電源關(guān)閉邏輯還包括第二與門,用于將已經(jīng)做過決定的流水線階段的有效指示符與下一個(gè)流水線階段的有效指示符進(jìn)行與運(yùn)算,和第三與門,用于將第二與門的輸出與第一與門的輸出進(jìn)行與運(yùn)算,以便決定除了最后一個(gè)流水線階段的前一個(gè)流水線階段之外的流水線階段是否應(yīng)該被延遲。
7.根據(jù)權(quán)利要求2所述的流水線指令解碼器,其中流水線控制器用來通過對(duì)具有無效指令的流水線階段進(jìn)行連續(xù)計(jì)時(shí),一直到接收到有效指令并重寫無效指令來擠出在指令解碼流水線中的無效指令的氣泡。
8.根據(jù)權(quán)利要求2所述的流水線指令解碼器,其中流水線控制器用來通過在流水線指令解碼器內(nèi)沒有有效指令時(shí),停止流水線指令解碼器的計(jì)時(shí)來保持功率。
9.根據(jù)權(quán)利要求2所述的流水線指令解碼器,其中流水線控制器用來通過在與流水線階段相關(guān)的線程標(biāo)識(shí)指示清除的線程的指令時(shí),停止流水線階段中電路的計(jì)時(shí)來保持功率。
10.根據(jù)權(quán)利要求2所述的流水線指令解碼器,其中流水線控制器包括用來保持功率的電源關(guān)閉邏輯。
11.根據(jù)權(quán)利要求2所述的流水線指令解碼器,其中流水線控制器用來響應(yīng)于清除信號(hào),而使與線程標(biāo)識(shí)相關(guān)的指令解碼流水線中的整個(gè)線程的指令無效。
12.根據(jù)權(quán)利要求3所述的流水線指令解碼器,其中流水線控制器的每一流水線階段的清除邏輯,響應(yīng)于清除信號(hào)而使與線程標(biāo)識(shí)相關(guān)的指令解碼流水線中的整個(gè)線程的指令無效。
13.一種裝置包括指令解碼流水線,用于解碼與多個(gè)指令線程相關(guān)的指令,該指令解碼流水線具有預(yù)定數(shù)目的流水線階段;與指令解碼流水線并行的有效位流水線,該有效位流水線具有與指令解碼流水線的預(yù)定數(shù)目的流水線階段并行的相同預(yù)定數(shù)目的流水線階段,把在每一流水線階段處的有效指示符與在指令解碼流水線中被解碼的每個(gè)指令相關(guān);和與指令解碼流水線和有效位流水線并行的線程標(biāo)識(shí)流水線,該線程標(biāo)識(shí)流水線具有與指令解碼流水線和有效位流水線的預(yù)定數(shù)目的流水線階段并行的相同預(yù)定數(shù)目的流水線階段,把在每一流水線階段處的線程標(biāo)識(shí)與在指令解碼流水線中被解碼的每個(gè)指令關(guān)聯(lián);和耦合到指令解碼流水線、有效位流水線和線程標(biāo)識(shí)流水線的流水線控制器,該流水線控制器用來通過對(duì)具有無效指令的流水線階段進(jìn)行連續(xù)計(jì)時(shí),一直到接收到有效指令并重寫無效指令,來擠出在指令解碼流水線中的無效指令的氣泡。
14.根據(jù)權(quán)利要求13所述的裝置,其中流水線控制器用來通過在指令解碼流水線內(nèi)沒有有效指令時(shí)停止指令解碼流水線、有效位流水線和線程標(biāo)識(shí)流水線中的每一個(gè)的計(jì)時(shí)來保持功率。
15.根據(jù)權(quán)利要求13所述的裝置,其中流水線控制器用來通過在與流水線階段相關(guān)的線程標(biāo)識(shí)指示清除的線程的指令時(shí),停止流水線階段中電路的計(jì)時(shí)來保持功率。
16.根據(jù)權(quán)利要求13所述的裝置,其中流水線控制器用來響應(yīng)于清除信號(hào),而使與線程標(biāo)識(shí)相關(guān)的指令解碼流水線中的整個(gè)線程的指令無效。
17.一種系統(tǒng)包括存儲(chǔ)器;和耦合到存儲(chǔ)器的微處理器,該微處理器具有指令解碼器,該指令解碼器包括指令解碼流水線,用于解碼與多個(gè)指令線程相關(guān)的指令,該指令解碼流水線具有預(yù)定數(shù)目的流水線階段;與指令解碼流水線并行的有效位流水線,該有效位流水線具有與指令解碼流水線的預(yù)定數(shù)目的流水線階段并行的相同預(yù)定數(shù)目的流水線階段,把在每一流水線階段處的有效指示符與在指令解碼流水線中被解碼的每個(gè)指令相關(guān);和與指令解碼流水線和有效位流水線并行的線程標(biāo)識(shí)流水線,該線程標(biāo)識(shí)流水線具有與指令解碼流水線和有效位流水線的預(yù)定數(shù)目的流水線階段并行的相同預(yù)定數(shù)目的流水線階段,把在每一流水線階段處的線程標(biāo)識(shí)與指令解碼流水線中被解碼的每個(gè)指令相關(guān)。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中指令解碼器還包括耦合到指令解碼流水線、有效位流水線和線程標(biāo)識(shí)流水線的流水線控制器,該流水線控制器用來控制指令解碼流水線、有效位流水線和線程標(biāo)識(shí)流水線的每個(gè)流水線階段的計(jì)時(shí)。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中流水線控制器用來通過對(duì)具有無效指令的流水線階段進(jìn)行連續(xù)計(jì)時(shí),一直到接收到有效指令并改寫無效指令,來擠出在指令解碼流水線中的無效指令的氣泡。
20.根據(jù)權(quán)利要求18所述的系統(tǒng),其中流水線控制器用來通過在指令解碼器內(nèi)沒有有效指令時(shí),停止指令解碼器的每個(gè)流水線階段的計(jì)時(shí)來保持功率。
21.根據(jù)權(quán)利要求18所述的系統(tǒng),其中流水線控制器用來通過在與流水線階段相關(guān)的線程標(biāo)識(shí)指示清除的線程的指令時(shí),停止流水線階段中電路的計(jì)時(shí)來保持功率。
22.根據(jù)權(quán)利要求18所述的系統(tǒng),其中流水線控制器用來響應(yīng)于清除信號(hào),而使與線程標(biāo)識(shí)相關(guān)的指令解碼流水線中的整個(gè)線程的指令無效。
全文摘要
使用多線程傳輸?shù)闹噶罱獯a器計(jì)時(shí)、清除和延遲多線程機(jī)器中解碼流水線的指令,可以獲得最佳的性能和最小的功耗。一個(gè)映像流水線映像保持線程標(biāo)識(shí)的指令解碼流水線和指令解碼器每個(gè)流水線階段有效指令比特。線程標(biāo)識(shí)和有效的比特用于控制對(duì)指令解碼器中每個(gè)流水線階段的計(jì)時(shí)、清除和延遲。一個(gè)線程指令能夠被清除而不與在解碼流水線的其它線程指令發(fā)生沖突,在一些情況下,一個(gè)線程的指令能夠被延遲而不與在解碼流水線的其它線程指令發(fā)生沖突。本發(fā)明中,僅僅當(dāng)有效指令需要前進(jìn)以便保持功率和最小化延遲時(shí)計(jì)時(shí)流水線階段。
文檔編號(hào)G06F9/38GK1725176SQ20051009268
公開日2006年1月25日 申請(qǐng)日期2000年11月6日 優(yōu)先權(quán)日1999年12月30日
發(fā)明者J·P·杜格拉斯, D·J·德勒加尼斯, J·D·哈德利 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1