新四季網

失速控制的製作方法

2023-04-25 02:10:16

專利名稱:失速控制的製作方法
技術領域:
本發明涉及處理機和操作處理機的方法。本發明在並行流水線處理機,如非常長的指令字(VLIW)處理機中有特殊的應用。
高性能處理機用稱為流水線式的技術增加處理指令的速率。流水線是通過在若干個階段中執行一個指令,在單個流水線級中執行每個階段進行工作的。指令通過連續的流水線級流動,所有部分地完成的指令在每個處理機的時鐘周期上向前移動一級。當諸指令到達流水線的終端時完成對它們的執行。
諸處理機試圖使諸流水線在所有的時間中都是滿的,這樣來保證指令完成的高速率。然而,由於某種原因一個指令可能在單個時鐘周期中不能通過一條流水線的諸級中的一級,例如,因為它需要接入慢存儲器或許者計算一個多周期工作。我們將這種情況稱為失速(stall)。當一條流水線的級i失速時,就會阻止在級i-1的指令向前行進,即便在級i-1的指令本身並不失速。反過來這又使級i-2失速,如此一直到級0(第1級)。當在級i有失速時,一個信號流動到在流水線中的所有的從0到i-1的級,使它們在流水線時鐘信號的下一個有效邊沿前失速。
一些處理機結構提供兩條或更多條並行流水線,用於同時處理不同的指令(或一個指令的不同部分)。在這種情形中,必須將失速信號分布到所有的流水線,以便保證並行地發出的諸指令也能並行地完成。然而,傳播這樣一個全局的失速信號的延遲可能限制處理機的工作時鐘頻率。而且,這樣一個信號必須經過的距離隨著加入更多的流水線而增加。所以一個具有較多流水線的處理機需要一個較慢時鐘頻率,於是使進一步增加流水線實現高的總處理能力的努力受到挫折。
本發明就是要力圖克服上述的諸缺點。
根據本發明的第1方面,我們提供包括下列裝置的處理機多條流水線,每條流水線都具有多個流水線級用於在連續的時鐘周期上執行指令;和失速裝置,用於響應在任何一條流水線中產生的失速信號在所有的流水線中使指令的執行失速。
其中用失速裝置使在一條不產生失速信號的流水線中的一個指令的執行在一條產生失速信號的流水線中的一個指令的執行後面至少一個時鐘周期上失速,並在這條不產生失速信號的流水線中在這條產生失速信號的流水線中的失速後面至少一個時鐘周期上解除失速。
在不同的時鐘周期在不同的流水線中使指令執行失速可以得到附加的時間,利用該時間使失速信號從這條產生失速信號的流水線分布到其它的流水線。這樣可以使處理機以比其它情況更高的速度運行。通過比在流水線中產生失速信號的失速晚至少一個時鐘周期釋放在流水線中不產生失速信號的失速,在不同的流水線中的各指令在一個或多個時鐘周期的不同步之後可以回到對準狀態。優先地,從失速釋放的相應的流水線之間的時鐘周期的數目與被失速的相應的流水線之間的時鐘周期的數目相等。
本發明可以用於一個處理機流水線的全部或任何一部分。作為例子,每條流水線可以包括一個或多個地址計算級,一個指令提取級,一個指令解碼級,一個指令執行級,和/或其它的級或子級。
如果兩個或更多的流水線同時產生一個失速信號,不必響應於另一流水線產生的失速信號對每一流水線進行失速。這是因為每一流水線可以實現適當的失速。如果每一條流水線也響應於由另一流水線產生的失速信號被失速,可能發生多於需要的失速。於是,失速裝置可以被安排成使得當在第一流水線的一個流水線級從第二流水線接收到一個失速信號時,如果該流水線級響應於由第一流水線產生的失速信號在前一周期中失速,在第一流水線中的該流水線級中的指令的執行不被失速。
失速裝置可以被安排成使得當一條流水線在級i產生一個失速信號時,使包括那條流水線的級i在內的所有的級都失速。在這種方式中,使在一條流水線中的諸較前面的諸級失速以便防止在一條流水線中的諸指令相互復蓋。不需要使較後面的諸級失速,從而較後面的諸級中的諸指令可以如通常那樣地繼續通過流水線前進,雖然,如果需要的話,也可以使所有的或一些較後面的級失速。
可以如此安排失速裝置,使得當一條流水線在級i產生失速信號時,在一個給定的時鐘周期上使直到和包括那條流水線的級i的所有的級都失速,在所述給定的時鐘循後面的m個時鐘周期上使直到和包括一條不產生失速信號的流水線的級i+m的所有的級都失速,其中m是大於或等於1的整數。假定在一條不產生失速信號的流水線中後面的m個時鐘周期上使直到級i+m的所有的級都失速,則使在那條流水線中的與在產生失速信號的流水線中的諸失速的指令相對應的諸指令失速。
處理機可以包括多個流水線群集,每個群集包括多條流水線。在這種情形中,可以安排失速裝置使在同一個時鐘周期中在一個群集內的諸流水線中的指令執行失速。
優先地,在工作中,並行地(也就是說在一個特定的時間周期中)進入各條流水線中的諸指令並行地離開諸流水線。可以在不同流水線中執行不同的指令。例如,處理機可以是一個VLIW處理機,其中將來自一個VLIW指令包的諸指令並行地發送給諸流水線。
每條流水線可以包括至少一個執行級,在該執行級中一個指令至少可以被部分地執行。可以使諸流水線響應失速信號不被清洗那樣地安排處理機。
優先地將失速控裝置分布在兩個或更多個流水線級之間。這能夠允許每個流水線級對它自己的失速進行控制。這樣一種安排能夠容易地使失速機構按比例放大以便根據需要包括更多的流水線或流水線級。
於是,兩個或多個流水線級的每個都可以與用於控制那個流水線級的失速的失速控制電路結合起來。可以安排在每個流水線級中的失速控制電路產生一個用於使另一條流水線失速的全局失速信號,並接收來自另一條流水線的一個全局失速信號用於使與失速控制電路結合的流水線級失速。可以這樣安排失速控制電路,如果結合的流水線級受到來自在另一條流水線中的同一個級或後面的級的全局失速,則不產生全局失速信號。這能夠有助於保證在不同流水線中的諸指令在兩條或多條流水線同時產生諸失速信號的情形中正確地對準。優先地在兩條或多條流水線中的每一條中的失速控制電路基本上是相同的。
可以這樣安排處理機使得如果在一個流水線級中存在一個泡則不使那個流水線級失速。甚至當在其它情況下使諸指令失速時,這也能夠允許諸指令向前移動進入一個泡。
根據本發明的第2方面,我們提供一個包括多條流水線的處理機,每條流水線都具有多個流水線級用於對通過諸流水線的信息執行一系列工作,兩個或多個流水線級每個都有相結合的失速控制電路用於控制那個流水線級的失速,該控制電路包括用於產生一個保持信號的裝置,該保持信號或者響應由那個流水線級產生的一個局域失速信號或者響應由另一條流水線產生的一個全局失速信號使結合的流水線級失速;用於產生全局失速信號的裝置,該全局失速信號響應所述的局域失速信號使另一條流水線失速;和用於延遲全局失速信號的裝置,使得在認定保持信號後面的一個給定數目的時鐘周期上認定全局失速信號,而且在解除保持信號後面的相同數目的時鐘周期上解除全局失速信號。
第1方面的任何特點都可以加到第2方面中。
我們也提供相應的諸方法,這樣在本發明的第3方面提供了一個操作處理機的方法,該處理機包括多條流水線,每條流水線都有多個用於在諸連續時鐘周期上執行諸指令的流水線級,每條流水線都能夠產生一個失速信號,該方法包括在一條流水線中產生一個失速信號;在產生失速信號的流水線中使一個指令的執行失速;在不產生失速信號的流水線中在後面的至少一個時鐘周期上使一個指令的執行失速;解除在產生失速信號的流水線中的失速;和在後面的至少一個時鐘周期上解除在不產生失速信號的流水線中的失速。
處理機的任何特點都可以作為方法的特點並且反之亦然。
根據本發明的第4方面,我們提供一個處理機,它包括多條流水線,每條流水線都具有多個流水線級用於在諸連續的時鐘周期上執行指令;和失速控制電路,它對諸流水線中的諸指令的失速進行控制;其中用失速控制電路在一條產生失速信號的流水線中的一個指令的執行後面至少一個時鐘周期上使在一條不產生失速信號的流水線中的一個指令的執行失速,和在這條產生失速信號的流水線中的失速後面至少一個時鐘周期上解除在這條不產生失速信號的流水線中的失速。
根據本發明的第5方面,我們提供一個處理機,它包括多條流水線,每條流水線都具有多個流水線級,這些流水線級對通過諸流水線的信息進行一系列工作,兩個或多個流水線級每個都有相結合的失速控制電路,該電路控制那個流水線級的失速,該控制電路包括一個產生保持信號的電路部分,該保持信號或者響應由那個流水線級產生的一個局域失速信號或者響應由另一條流水線產生的一個全局失速信號使結合的流水線級失速;一個產生一個全局失速信號的電路部分,該全局失速信號響應所述的局域失速信號使另一條流水線失速;和一個延遲全局失速信號的電路部分,使得在認定保持信號後面的給定數目的時鐘周期上認定全局失速信號,而且在解除保持信號後面的相同數目的時鐘周期上解除全局失速信號。
現在我們將參照所附諸圖單純用例子描述本發明的諸優先的特點,其中

圖1是在本發明的第1實施例中一個處理機的諸部分的方框圖;圖2是一條7級流水線的示意圖;圖3表示在本發明的第1實施例中失速控制電路的諸部分;圖4是在本發明的第2實施例中一個處理機的諸部分的方框圖;圖5表示在第2實施例中失速控制電路的諸部分;圖6是表示圖5的流水線級的部分工作的狀態變遷的圖7到10表示第2實施例的工作的一個例子;圖11到14表示第2實施例的工作的另一個例子;圖15表示在本發明的第3實施例中失速控制電路的諸部分;和圖16到41表示第3實施例的工作的諸例子。
第1實施例圖1是根據本發明的第1實施例一個處理機的諸部分的方框圖。在這個實施例中,處理機是一個非常長的指令字(VLIW)處理機,它被設計得能夠執行可以分成諸較短的指令的長指令。
參照圖1,處理機1包括指令發出裝置10,調度存儲裝置12,第1和第2執行裝置14,16以及第1和第2寄存器隊列18,20。指令發出裝置10具有兩個發出槽IS1,IS2分別與執行裝置14,16連接。第1執行裝置14與第1寄存器隊列18連接,第2執行裝置16與第2寄存器隊列20連接。寄存器隊列18,20通過一條總線22相互連接。作為通過一條總線連接的兩個寄存器隊列的一個替換物,可以提供單個寄存器隊列。每個執行裝置14,16也通過總線26與一個外部存儲器24連接。在這個例子中,外部存儲器24是隨機存取存儲器(RAM),雖然它也可以是任何其它類型的存儲器。
在工作中,將一個為了執行的指令包從調度存儲裝置12傳送到指令發出裝置10。指令發出裝置10將指令包分成它的諸構成指令,並分別通過發出槽IS1,IS2將兩個指令發送到執行裝置14,16。然後執行裝置14,16同時執行不同的指令。在這種方式中,並行地處理一個長指令的不同部分。
每個執行裝置14,16用一種流水線技術使處理指令的速率達到最大。通過完成指令執行的多個階段中的每一個,流水線就像單個流水線級一樣地進行工作。諸指令以一種生產線的方式,通過諸連續的流水線級流動,所有部分完成的指令在每個處理機時鐘周期上向前移動一級。當它們達到流水線的終端時完成諸指令的執行。
圖2是一條7級流水線的示意圖。在這個示意圖中,每級的內容是已經到達流水線的那一級的指令的序號。諸流水線級可以包括,例如,諸指令讀取級,諸指令解碼級,和諸指令執行級。在流水線中的諸指令從左向右,從級0到6流動。
希望流水線在所有的時間中都是滿的,這樣來保證指令完成的高速率。然而,由於某種原因一個指令可能在單個時鐘周期中不能通過一條流水線的諸級中的一個級,例如,因為它需要接入慢存儲器或者計算一個多周期工作。我們將這種情況稱為失速。當級i失速時,就會阻止在級i-1的指令向前行進,即便在i-1級的指令本身並不失速。反過來這又使級i-2失速,如此一直到級0(第1級)。如果級0到i在時間T失速,則在時間T+1,沒有指令通過級i+1。如果在另一個周期中失速繼續存在,則在時間T+2,沒有指令通過級i+1和i+2。這些空的流水線級稱為泡(bubble)。在圖2中,在級和4中顯示出2周期的泡。
這樣設計VLIW處理機,使得並行地發送給不同流水線的諸指令也並行地完成它們的執行。如果放鬆這個規則,則已經證明很難清楚地停止一個運行過程和在某個以後的時間中再開始。於是,如果在一條流水線中存在一個失速,則每條其它的流水線必須也失速,以便保證不同指令並行地離開諸流水線。例如,如果在圖1中的執行裝置14中在流水線中存在一個失速,則在執行裝置16中的流水線也必須失速。
當在一條流水線的級i上存在一個失速時,那個級就產生一個失速信號。這個失速信號被分布到在流水線中的從0到i-1的所有級中,使它們在流水線時鐘信號的下一個有效邊沿前失速。
一個可能的用於使圖1的處理機中的其它流水線失速的方案是取來自兩條流水線的每一級的失速信號的邏輯或(「或」),並將結果分配給兩條流水線。然而,這需要在流水線時鐘信號的下一個有效邊沿前將一個全局失速信號發射給所有的流水線級。對於高速處理機,在傳播這樣一個全局失速信號中的延遲可能限制處理機的工作時鐘頻率。而且,如果為了增大處理速率而加入更多的流水線,則全局失速信號必須經過的物理距離將增加,從而甚至進一步限制了工作時鐘頻率。
根據第1實施例,通過各條流水線的諸指令可能相互不同步地到達一個級,這樣就為一個從一條流水線到另一條流水線的失速信號提供一個滿的時鐘周期。
現在參照圖3描述第1實施例的工作。圖3表示第1流水線(流水線1)的兩個級,級i和級i+1,和第2流水線(流水線2)的諸對應的級。流水線1的級i包括流水線寄存器40,處理電路42,或門44,寄存器45,46,與(「與」)門47和或門48;流水線1的級i+1包括流水線寄存器50,處理電路52,或門54,寄存器55,56,與門57和或門58;流水線2的級i包括流水線寄存器60,處理電路62,或門64,寄存器65,66,與門67和或門68;流水線2的級i+1包括流水線寄存器70,處理電路72,或門74,寄存器75,76,與門77和或門78。在這個例子中,寄存器45,55,65,75和46,56,66,76是由多個D型觸發器作成的。由一個共同的時鐘信號饋送所有的時鐘輸出。流水線1的級i和i+1是圖1中的執行裝置14的一部分,流水線2的級i和i+1是圖1中的執行裝置16的一部分。
在正常的工作中,每個處理電路42,52,62,72執行一個保持在對應的寄存器40,50,60,70中的指令的一個階段。級i的處理電路42和62並行地執行兩個屬於一個VLIW指令包的指令的階段i,級i+1的處理電路52和72同時執行兩個屬於另一個VLIW指令包的指令的階段i+1。在每個時鐘周期上,將保持在諸寄存器中的諸指令傳送到諸流水線中的下一個寄存器以便進一步處理。在這種方式中,諸指令通過諸流水線流動而所有的部分完成的指令在每個時鐘周期上向前移動一級。
如果需要使它正在執行的指令的前進失速,則每個處理電路42,52,62,72都能夠認定一個失速信號。分別將來自處理電路42,52,62,72的諸失速信號饋送到或(或)門44,54,64,74。分別將或門44,54,64,74的諸輸出信號饋送到或門48,58,68,78。或門48,58,68,78分別將諸保持信號輸出到處理電路42,52,62,72。這樣,如果諸處理電路中的一個認定一個失速信號,則通過諸對應的或門認定那個處理電路的保持信號。如果設置了輸入到一個處理電路的保持信號,則那個處理電路將失速。
也將每個或門44,54,64,74的輸出作為一個波紋(ripple)信號饋送到在同一條流水線的前一級中的相應的或門。於是諸波紋信號波紋地通過諸流水線,使得如果一個處理電路認定一個失速信號,則也認定輸入到同一條流水線中的所有前面的處理電路的諸保持信號。
也將每個或門44,54,64,74的輸出作為一個全局信號饋送到其它流水線的下一級。每個寄存器46,56,66,76從其它流水線的前一級接收這樣一個全局信號。例如,將或門44的輸出饋送到寄存器76和將或門64的輸出饋送到寄存器56。
每個寄存器46,56,66,76在它的輸入端延遲信號直到下一個時鐘周期。於是,每個寄存器46,56,66,76的輸出是來自其它流水線的前一級的全局信號,被延遲到下一個時鐘周期。通過各個與門47,57,67,77將每個寄存器46,56,66,76的輸出饋送到各個或門48,58,68,78,各個或門48,58,68,78分別將諸保持信號輸出到處理電路42,52,62,72。於是,假定設置了到與門47,57,67,77的諸其它輸出,如果一個處理電路認定一個失速信號,則將在下一個時鐘周期認定輸入到其它流水線的下一個處理電路的保持信號。
分別也將處理電路42,52,62,72的諸失速信號饋送到寄存器45,55,65,75。分別將寄存器45,55,65,75的倒相輸出饋送到與門47,57,67,77。於是,如果相應的處理電路在前一個時鐘周期中認定一個失速信號,則使每個與門47,57,67,77的輸出復位而與寄存器46,56,66,76的狀態無關。如果對應的流水線級由於一個局域產生的失速信號在前一個時鐘周期中失速,則這防止寄存器46,56,66,76產生一個失速信號。在這種方式中,如果兩條流水線在同一個時鐘周期中產生一個失速信號,則只完成一個失速。
作為一個例子,如果處理電路42在一個給定的時鐘周期中設置失速信號,則或門44和48保證那個級的保持信號被設置。一個波紋信號通過那些級的諸相應的或門流到所有的級i-1到0,使那些級中的每一個都設置保持信號。於是,在流水線時鐘信號的下一個有效邊沿前在第1流水線的所有的級0到i上設置一個保持信號,使那些級失速。然而,因為或門44的輸出被寄存器76延遲,所以不設置輸入到處理電路72的保持信號直到流水線時鐘信號信號的下下個有效邊沿為止。類似地,由於寄存器66,輸入到處理電路62的保持信號被延遲一個時鐘周期,如此等等直到第2流水線的級1。這樣,第2流水線的級0到i+1在第1流水線的級0到i後面的一個時鐘周期失速。因為當使第1流水線中的諸指令失速時在那條流水線中的諸指令將前進一級,所以需要使第2流水線的級0到i+1失速。當一條流水線的級1失速時,安排那條流水線的級0失速。
當維持對來自處理電路42的失速信號被設置時,到第1流水線的級0到i的保持信號和到第2流水線的級0到i+1的保持信號維持被設置,使那些級保持失速。當解除失速信號時,也解除到第1流水線的級0到i的保持信號,使得在那條流水線中進行通常的工作。然而,由於寄存器66,76(和在前面的諸流水線級中的諸相應的寄存器)的工作,到第2流水線的級0到i+1的諸保持信號只在下一個時鐘周期上被解除。於是,在第2流水線中在下一個時鐘周期上進行通常的工作。這個在解除失速中的一個周期延遲允許兩條流水線回到相互同步的狀態。
這樣,我們看到在兩條流水線內的各個指令可以變得不同步到一個周期,從而為在諸流水線之間傳播的失速信號提供一個滿的時鐘周期。
第1實施例具有下列主要特點1.無論哪條流水線都能夠在任何本身不是失速主體的周期中認定一個失速信號。
2.在同一條流水線中的失速級前的諸級將在與失速級相同的周期中失速,但是將使在其它流水線中的諸級在一個周期後失速。
3.當解除失速時,在那條流水線中的所有的失速級立即向前行進,但是在一個周期後才解除在其它流水線中的諸失速級。它的純效應是諸失速工作在當失速時不同步到一個級後回到對準的狀態。
4.用於控制每級失速的邏輯值對於那個級來說是局域的。可以用一個滿的時鐘周期將全局失速信號分布到其它流水線中。
我們將看到因為一條流水線的最後一級不能及時地使其它流水線失速以便防止在最後一級中的指令離開流水線,所以流水線的最後一級不能認定一個失速信號。這個問題可以或者通過使一條流水線的最後一級永遠不需要認定一個失速信號那樣地安排處理機和指令集,或者通過將一個最後的偽級加到每條流水線上來解決。
如希望的話,通過安排寄存器45,55,65,75和46,56,66,76在它們的輸入端使諸信號延遲兩個或多個時鐘周期,可以為在諸流水線之間傳播諸失速信號引入兩個或多個時鐘周期。例如,可以用兩個或多個串聯連接的D型觸發器代替圖3中的每個觸發器45,46,55,56,65,66,75,76。在這種情形中,處理機可以保證流水線的最後m級不認定一個失速信號,其中m是時鐘周期延遲數,或是可以加入的m個偽級數,或者可以用這兩個方法的組合。第2實施例圖4表示根據第2實施例的一個處理機的諸部分。參照圖4,處理機100包括一個指令發出裝置102,一個調度存儲裝置104,第1到第8執行裝置(E.U.)106,108,110,112,114,116,118,120和第1到第4寄存器隊列122,124,126,128。指令發出裝置102具有8個分別與執行裝置106到120連接的發出槽IS1到IS8。第1到第2執行裝置106,108與第1寄存器隊列122連接,第3到第4執行裝置110,112與第2寄存器隊列124連接,第5和第6執行裝置114,116與第3寄存器隊列126連接,第7和第8執行裝置118,120與第4寄存器隊列128連接。每個執行裝置通過總線134也與一個外部存儲器132,如一個RAM器件連接。
在工作中,將一個為了執行的指令包(VLIW指令包)從調度存儲裝置104發送到指令發出裝置102。指令發出裝置102將指令包分成它的諸結構指令,並通過發出槽IS1到IS8將諸指令發送到執行裝置106到120。然後執行裝置106到120同時執行屬於該指令包的不同的指令。
將執行裝置106到120分成4組,每組都有它自己的寄存器隊列。這樣做是為了減少到任何一個寄存器隊列的接入槽(slot)的數目。如果提供單個寄存器隊列,則寄存器隊列可能有太多的接入槽,這將增加到寄存器隊列的接入時間。可以將每組有一個共同寄存器隊列的執行裝置稱為一個群集。在圖4中,由執行裝置106,108和寄存器隊列122形成第1群集,由執行裝置110,112和寄存器隊列124形成第2群集,由執行裝置114,116和寄存器隊列126形成第3群集,由執行裝置118,120和寄存器隊列128形成第4群集。如果在一個群集中需要保持在另一個群集中的一個值,則通過總線130在諸群集之間傳送該值。雖然在圖4中畫出4個群集,但是按照需要可以提供或多或少的群集。每個群集可以有一個,兩個或更多個執行裝置。
如在第1實施例中那樣,每個執行裝置106到120都用流水線增加它處理指令的速率。在一個群集內的諸流水線保持相互同步,而允許在不同群集內的流水線相互有一個或多個周期的不同步。
圖5是表示在兩個流水線群集內第i級的結構的方框圖。群集的級i包括在群集內的第1流水線(流水線0)的級i,在群集內的第2流水線(流水線1)的級i,和用於控制這兩個流水線級的共同控制電路。流水線0的級i包括流水線寄存器140和處理電路142,流水線1的級i包括流水線寄存器144和處理電路146。控制電路是由失速控制邏輯電路148,寄存器150,152,154和或門156形成的。
在工作中,群集的級i可以或者是有效的,或者被在同一個群集中的級j失速,其中j≥i,或者被在另一個群集中的級l失速,其中l≥i-1。所以,群集的級i有一個狀態可變的CurrentState(當前狀態)i,該狀態指示級是活性的(A),局域失速的(L)還是全局失速的(G)。
將可變的CurrentState i的值保持在寄存器150中。寄存器150的輸入是信號的NextState(下一個狀態)i,該狀態確定級在下一個時鐘周期中處於哪個狀態。
失速控制邏輯電路148的工作受到一組狀態變遷的控制,如表1所示。在表1中,每一行表示能夠實現的一個可能的變遷,並清楚地說明了變遷能夠發生的條件。每個變遷都是從當前狀態到下一個狀態,如果討論中的級對於一個給定變遷是在當前狀態中,則發生變遷,並且諸布爾變量local(局域)和global in(全局內)的諸值如在對於那個變遷的表列值指出的那樣。當存在一個局域失速時設置局域變量,即起源於局域群集的局域變量。噹噹前級有一個未決失速時或如果在當前級後面的任何級將在下一個周期處於局域失速狀態,則該變量等於true(真)。如果任何其它的群集在前一個周期中認定它的局域信號,則設置global_in變量。
表1
一個對於每個流水線級的行為的狀態變遷圖如圖6所示。在圖6中,變遷數與表1的第1列中的數字對應。對於熟練的技術人員來說顯然可以從狀態變遷圖和/或表例行地導出適當的邏輯電路,因此在這裡不特別對其進行描述。
在工作中,流水線寄存器140保持為了用處理電路142執行的諸指令和數據,流水線寄存器144保持為了用處理電路146執行的諸指令和數據。如果由圖5中的處理電路142,146中的一個在時鐘周期T執行的一個指令的階段為了執行需要多於一個的周期,則那個處理電路認定一個失速信號。將來自兩條流水線的級i的諸失速信號饋送到或門156。或門156的輸出是一個信號stall(失速)i,它指示在那個群集中一條或多條流水線的級i是否已經認定一個失速信號。將信號stall i饋送到失速控制邏輯電路148。
根據失速i信號,失速控制邏輯電路148產生一個如下的局域信號ilocal i=(stall i或ripple i+1)當群集的級i的下一級將是L(即局域失速)時設置信號ripple(波紋)i。所以ripple i=(NextState i=L)信號ripple i+1是由群集的級i+1產生的相應信號。
如果當周期T時認定ripple i,則在同一個周期中認定ripple i-1,i-2,……,i-k,作為在級i中局域失速的結果。局域化的失速信號的波紋將在流水線最左邊的終端結束,或者如果在周期T+1(即NextState i-k=L)中某個級將不在L級中,則將較早結束。這能夠由在周期T-1中的級i-k-1上在另一個群集中的一個局域化失速產生,並在周期T中被認定的級i-k上產生global_in信號。
根據local i信號,CurrentState i信號和global_in i信號產生NextStatei信號,如表1的最後一列所示。在時鐘信號的下一個有效(active)邊沿上,將信號NextState i寄存在寄存器150中,使得在周期T+1中的信號CurrentState i等於在周期T中的信號NextState i。
如果在任何時鐘周期中的NextState i的值或為L或為G(與局域地或全局地失速相對應),則認定hold(保持)i信號。對應地,在寄存器142和144中的諸指令和數據在下一個時鐘周期中保持相同。
不同的群集通過ripple和global_in信號相互通報它們的失速狀態。對於群集C的next_global_in(下一個全局內)i信號是來自所有群集除了C的諸ripple i-1信號的邏輯或。在每個時鐘周期結束時將next_global_in i信號寄存在寄存器154中,給出信號global_in i。對於所有群集的級0的諸global_in信號總是false(假)。在每條流水線中,當那條流水線的級1失速時,安排級0失速。
例如,如果在另一個群集的級h(h≥i-1)中由處理電路在時鐘周期T中執行的指令的階段需要多於一個的周期,則在周期T中認定它的local h信號。這使在所有其它的群集中的所有級1到h+1的諸next_global_in信號在周期T結束前被認定。這反過來使失速控制邏輯電路148的global_in i信號在周期T+1中被認定。
用valid(有效)i信號指示在群集的級i中存在一個泡。例如,如果使級i-1失速,則將信號valid_out(無效)i-1設置在false,指示在級i-1中存在一個泡。在下一個時鐘周期上,將信號valid_out i-1寄存在寄存器152中,給出信號valid i。如果將valid i設置成false,則處理電路142,146不管在寄存器140,144中的指令。
這樣我們能夠看到第2實施例提供一個分布的失速方案,其中每個級局域地確定它是否需要在程序執行的每個周期上使處理機失速,並且如果在級i需要一個失速則認定失速i。如果對於級i失速邏輯值確定失速的三個原因中的任何一個需要在當前周期中使級i失速,則它認定保持信號i。對應地,級i將指令和數據保存在它的輸入寄存器中。
第2實施例具有下列主要特點1.在任何群集中的任何流水線級都能夠認定在任何本身不是失速主體的周期中的一個失速信號。
2.在同一個群集中的一個失速級前的諸級將在與該失速級相同的周期中失速,但是將使在諸其它流水線中的諸級在一個周期後失速。
3.當解除失速時,在那條流水線中的所有的失速級立即向前行進,但是在一個周期後才解除在諸其它流水線中的諸失速級。
4.用於控制每級失速的邏輯值對於那個級來說是局域的。在全局地(從一個群集到另一個)進行失速信號通信的地方,可以用一個滿的時鐘周期計算全局失速條件並將它分布到所有的群集中。
現在我們參照圖7到10描述第2實施例工作的一個例子。圖7表示在時間T=1在群集1中在指示包103上在級3中發生一個失速的情形。這時,立即從級3到級0,群集1失速,而其它的群集不失速。
圖8表示在T=2一個周期後的情形。因為通知應該在級3失速的諸其它級的一個周期延遲,直到諸其它群集被失速的這個時間都不是這樣。在指令包103已經移動到級4的那個時間前,在那些群集中從級4開始必須失速。在這個時鐘周期中,解除在群集1中的失速,所以在群集1中的諸指令可以自由地在下一個時鐘周期中向前行進。
圖9說明在時間T=3一個周期後的情形。在群集1中,指令包103到106已經向前移動和已經插入指令包107,而由於在解除全局失速中的延遲在群集0,2和3中的諸指令還沒有移動。於是在這個時鐘周期中再次使在所有的群集中的諸指令對準。如圖10所示,在時間T=4後的一個周期上,在所有群集中的諸指令如通常那樣地自由地向前行進。
現在我們參照圖11到14描述第2實施例工作的另一個例子,其中由兩個不同的群集產生一個失速信號。在這個例子中,在時間T=1由在群集1中的級3和在群集2中的級1兩者產生一個局域失速信號。
參照圖11,在T=1,的情形。群集1的級3到級0和群集2的級1和級0使局域信號被設置和使global_in信號被再設置,所以,參照圖1(變遷4),這些級的下一個狀態將被局域地失速(L)。
在時間T=2後的一個周期(圖12),群集1的級3到0和群集2的級1和0處於局域地失速狀態,而諸其它的級都處於活性狀態(A)。於是在群集1的級4中和群集2的級2中形成諸泡。由於在前一個周期中在群集1和2中發生失速,所以也在時間T=2,在群集0,2和3的級4到0和在群集1的級2到0使它們的諸global_in信號被設置。在這個例子中失速只持續一個周期。於是,參照表1,群集0和3的級4到0和群集2的級4和3將被全局地失速(G),而群集1中的級3到0和群集2中的級1到0將是活性的(A)。
在時間T=3(圖13),群集0和3的級4到0和群集2的級4和3處於全局地失速狀態。群集2的級1到0處於活性狀態,所以在這些級中的諸指令向前移動一級,以便充填在時間T=2在群集2的級2中發生的泡。因為群集2的級3和4處於全局失速狀態,在群集2的級5中形成一個新泡。由於級4到0處於全局失速狀態,所以也在群集0和3的級5中形成諸泡。因為整個群集1都處於活性狀態,所以在群集1的級4中的泡向前移動到群集1的級5。於是,在這個時鐘周期中,在所有流水線中的諸指令被再次對準。又在這個時鐘周期中,解除在群集0,2和3中餘下的諸失速(即,下一個狀態是活性的)。圖14表示在T=14在所有的群集中如通常那樣地向前行進的情形。
我們從上面所述的看到如果在同一個時鐘周期中在兩個不同的群集中產生一個失速信號,則這只是導致在諸流水線中發生一個泡。這是因為如果一個級有它的局域失速的當前狀態(L),而沒有設置局域信號,則那個級的下一個狀態是活性的(A),而與是否設置了global_in信號無關。這由表1和圖6中的變遷5表示出來。
在上述的諸例子中,我們假定在失速開始後的一個時鐘周期解除失速,使形成一個級的諸泡。然而,失速可以在一個不確定的時間周期內持續,於是與失速持續的時鐘周期數有關地可以形成兩級或多級的諸泡。
如在第1實施例中那樣,第2實施例的延遲失速方案不允許在最後一級中產生失速。這個問題可以或者通過使一條流水線的最後一級永遠不需要認定一個失速信號那樣地安排處理機和指令集,或者通過將一個最後的偽級加到每條流水線上,或者通過上述兩者來解決。
如在第1實施例中那樣,在諸群集之間分布一個全局失速信號中的延遲可以是一個或多個時鐘周期。第3實施例圖15表示在本發明的第3實施例中失速控制電路的諸部分。圖15所示的電路200用於在一個群集p中的一個流水線級i;將類似的電路提供給在諸其它的群集中的諸其它的流水線級。電路200接收來自群集p中的流水線級i的一個信號stall(i),該信號在那個級中的指令已經認定一個失速,並產生一個指示群集p中的流水線級i要失速的信號hold(保持)(i)。在對每個群集提供兩條或多條流水線的地方,通常將信號hold(i)發送到在群集中所有流水線的級i,並從來自群集中所有流水線的級i的諸失速信號的邏輯或形成stall(i)。
參照圖15,失速控制邏輯電路200包括有一個倒相輸入和一個非倒相輸入的與門202,或門204,有一個倒相輸入和一個非倒相輸入的與門206,局域保持指示器208,泡指示器210,有一個倒相輸入和一個非倒相輸入的與門212,寄存器214,或門216,或門218和有一個倒相輸入和一個非倒相輸入的與門220。
為了方便起見,將圖15所示的諸信號簡單地描述如下·b(i)是一個指示流水線級i是否包含一個泡的信號。這個信號與在第2實施例中的信號valid i的倒相對應。
·lh(i)是一個指示流水線級i是否被局域地保持,即響應在前一個周期中一個局域產生的失速信號被失速的信號。
·gs(i)是一個當存在來自在另一個群集中的流水線級i-1的全局失速時被認定的信號。
·stall(i)是一個指示是否在流水線級i中內部認定一個失速的信號。
·hold(i)是一個指示是否流水線級i被失速的信號。也將hold(i)饋送到流水線級i-1,提供一個機構,通過該機構將失速要求傳播回到較前面的流水線級。
·gp(i)是一個用於指示一個來自另一個群集的全局失速要求正在傳播回到流水線級i-1的信號。
·gr(i)是一個全局失速要求信號,將它發送回到諸其它地群集的級i-1,指示它們應該在下一個周期中失速。
·gd(i)是一個延遲的全局失速要求信號,它被延遲一個時鐘周期以便得到信號在諸群集之間傳播的時間。
在工作中,如果流水線級i不包含一個泡和下列條件中的一個是ture(真),則信號hold(i)被認定,它指示在下一個時鐘周期上流水線級i被失速·在流水線級i內局域地認定一個失速
·在同一個群集中的流水線級i+1被失速·在另一個群集中的流水線級(i-1)在前一個周期中被失速和當前的流水線級已經沒有被局域地保持。
這可以通過與門202,或門204,與門206,局域地保持指示器208和泡指示器210來實現。
泡指示器210輸出一個信號b(i),如果級i包含一個泡則b(i)為true。泡指示器210的狀態變遷表如下列的表2所示。表2
我們可以看到如果使級i-1失速而不使級i不失速,則設置下一個b(i)(它指示級i將在下一個時鐘周期中有一個泡)。如果使級i和級i-1都不失速,則將b(i)的值傳送到下一個流水線級。這由下一個b(i)等於在表2的行1和5中的b(i-1)指示出來。
局域保持指示器208輸出一個信號lh(i),如果流水線級i被局域地保持,則lh(i)為ture。如果使級i響應在前一個周期中它自己局域產生的失速信號而失速,則我們說級i被局域地保持。局域保持指示器208的狀態變遷表如下列的表3所示。
表3
可以看到如果當存在一個局域產生的失速,設置下一個lh(i)(即在下一個時鐘周期中lh(i)取的值),除了如果存在一個全局失速和現在使lh(i)復位外。在這種情形中,因為已經存在一個全局失速所以不需要產生一個局域失速。
在第3實施例中,如果下列兩個條件都是ture,則將一個全局失速要求gr(i)傳送到所有其它的群集,使那些群集從流水線級i+1開始在後面一個周期中失速·在流水線級i局域地認定一個失速·沒有一個全局失速從流水線級k,其中k>i,正在傳播出來。
這樣,如果在那個流水線級中局域地認定一個失速,則流水線級i產生一個全局失速要求gr(i),那個流水線級不受到一個也對一個或多個後面的級起作用的全局失速。這可以通過與門212來實現。
信號gr(i)在寄存器214中被延遲一個時鐘周期,產生延遲失速要求信號gd(i)。流水線級i收集來自在諸其它群集中的前一個流水線級的諸延遲的失速要求信號,並在或門216中將它們組合起來,產生全局失速信號gs(i)。
如上面提到的,如果一個來自另一個群集的全局失速正在從諸後面的流水線級沿流水線向下傳播,則流水線級i不產生一個全局失速要求。這防止在那些已經受到來自另一個群集的全局失速的級中產生第2個全局失速。這允許當一個局域失速被解除時在一個已經受到那個局域失速的(和產生了最初的全局失速的)群集中的諸指令向前行進。然後這些指令能夠向前進入當最初認定局域失速時形成的諸泡中,從而使不同的群集回到對準的狀態。
為了確定是否一個全局失速正在從一個後面的級傳播過來,將信號gp(i)從級i發送到級i-1。當流水線級i不包含一個泡和下列兩個條件中至少一個是ture時設置信號gp(i)·將一個來自另一個群集的全局失速加到這個流水線級並且不局域地保持這個流水線級。
·從級i+1將一個來自另一個群集的全局失速傳播到這個流水線級。
這可以通過圖15中的或門218和與門220來實現。
現在我們用不同的失速條件的各種不同的例子說明第3實施例的工作。圖16到20表示如何處理兩個周期失速。圖16表示在這個時間T=1的情形。在這個時間,群集1的級3認定它的失速信號。群集1立即從級3到級0失速,如由圖中的陰影線表示的那樣。然而,因為在分布全局失速信號中有一個周期的延遲,所以在這個時間其它的群集不失速。第3實施例的工作的諸例子。
圖17表示在T=2一個時鐘周期後的情形。現在由於延遲的全局失速信號從級4開始使群集0,2和3失速。因為當指令級0,1,2和3失速時在這個群集的級4,5和6中的諸指令已經向上移動一級,所以已經在群集1的級4中形成一個泡。我們假定在這個時鐘周期中仍然認定群集1的級3中的失速信號。
圖18表示在T=3在下一個時鐘周期中的情形。仍然從級3開始保持群集1,所以在那個群集的級3中已經進一步出現一個泡。從級4開始保持群集0,2和3,在那些群集的級5中出現諸泡。我們假定在這個時鐘周期中解除失速。所以從群集1移去失速,使在那個群集中的諸指令在下一個時鐘周期中自由地向前行進。然而,由於在全局失速信號中有一個周期的延遲,所以群集0,2和3保持從級4開始的失速。
圖19表示在T=4的情形。因為在前一個周期中從群集1移去失速,所以在群集1中的諸指令都向前移動一級。然而,因為群集0,2和3從級4開始失速,所以在那些群集的級0到4中的指令不移動,在級5中進一步出現一個泡。這使不同的群集回到對準的狀態。圖20表示在T=5的情形並且在鎖定步驟中的所有指令如通常那樣地進行。
圖21到24說明失速控制邏輯值如何對應多個失速要求,這些失速要求是由在不同的群集中的諸相同的流水線級同時認定的。我們假定群集1和3兩者在同一個時間認定在級3中的一個兩周期失速信號。圖21表示當失速被認定時在時間T=1的情形。群集1和3兩者立即從級3開始失速。圖22表示在時間T=2的情形。保持在群集1和3中的失速,群集0和2兩者從級4開始失速。圖23表示在時間T=3的情形。從群集1和3中移去失速,但是不從群集0和2移去失速。圖24表示在時間T=4的情形。現在在群集1和3中的諸指令已經向前移動,使它們再次與在群集0和2中的諸指令對準。已經從群集0和3移去失速,使得所有群集中的諸指令能在下一個時鐘周期上如通常那樣地自由地向前行進。
圖25和26說明如果不同的群集在不同的時間解除它們的失速要求則如何處理多個失速要求。我們假定群集1和3兩者在時間T=1在級3中認定一個失速信號如圖21所示,和群集0和2在後面一個周期中失速如圖22所示。圖25表示在時間T=3的情形。在這個周期中群集1解除它的失速,所以不再是一個局域失速的主體。然而,群集3保持它的失速,所以也保持了分布到諸其它群集的全局失速信號。因為群集1不再局域失速,所以群集1的級0到3中的諸指令需要前進一級使它們與群集0和2中的諸指令對準。這使得當解除群集3中的失速時所有的群集將對準。所以,在這個時鐘周期中群集1不失速。如上面參照圖15所作的描述那樣,這可以通過安排只有一個群集的級i被一個來自另一個群集的級i-1的全局失速所失速如果那個級不被局域地保持來實現。
圖26表示在時間T=4的情形。已經允許群集1中的諸指令前進一級,使它們現在與群集0和2中的諸指令對準。在這個周期中,在群集1中的信號lh(被局域地保持)不再是ture,所以現在將來自群集3的全局失速加到群集1以及群集0和2。然後當在將來某個時間解除群集3中的失速時,不同的群集再次以通常的方式達到對準。
圖27到30說明當從不同群集的不同級同時認定多個失速要求時失速控制邏輯值的工作。我們假定在群集0的級4和群集2的級2中同時認定失速要求。這兩個群集同時在時間T=1失速如圖27所示。
圖28表示在時間T=2的情形。由於在群集0的級4中的失速,從級5開始使群集1,2和3失速。由於這個失速在群集0的級5中已經形成一個泡。因為在這個群集中在級2中的內部失速不使在指令包102和103中的指令停止前進,所以也在群集2的級3中形成一個泡。
圖29表示在一個較後面的時間,T=6,當我們假定在群集0和2中的諸失速都被同時解除時的情形。在群集0的所有的級中立即解除失速。然而,在群集2中,只從級2開始解除失速,而級4和5保持失速。這是因為群集2的級0,1和2被局域地保持,而級4和5不是。如上面參照圖15所作的描述那樣,如果一個流水線級不被局域地保持,則這個流水線級只在響應一個全局失速信號時失速。
圖30表示在時間T=7的情形。在群集2中以前在級0到2中諸指令已經前進到級1到3,從而移去以前在級3中的泡。類似地,在群集0中以前在級0到4中的諸指令前進到級1到5,使所有的群集現在再次對準。已經移去所有的失速,使得所有群集中的指令能如通常那樣地在下一個時鐘周期上自由地向前行進。
圖31和32表示如果在同一個時間不解除諸失速要求則如何處理諸失速要求。圖18表示在T=6的情形,其中我們假定只解除了在群集2中的內部失速。結果,在這個群集中從級3開始解除失速,而級4和5保持失速。圖32表示在時間T=7的情形。因為在級2和較早的級中的諸指令向前移動,所以消除了在群集2的級3中的泡。現在響應來自群集0的級4的失速信號使群集1,2和3都失速。然後當在將來某個時間解除群集0中的失速時,不同的群集再次以通常的方式達到對準。
圖33和34表示如果在群集2中的失速前解除在群集0中的失速則上述情況將如何發生改變。我們假定在T=6解除在群集0中的失速,如圖33所示。結果,在這個周期中,群集0不失速,而群集1,2和3從級5開始失速。沒有它的內部失速,必須使群集0與群集1和3再次對準,使得當群集2解除它的失速時,所有的群集將對準。
圖34表示在時間T=7的情形。在群集0中的諸指令已經向前移動一級,使得群集0現在與群集1和3再次對準。響應來自群集2的級2的失速信號從級3開始使群集0,1和3失速。然後當在將來某個時間解除群集2中的失速時,不同的群集再次以通常的方式達到對準。
圖35到41表示兩個進一步的序列,在這些序列中產生交錯的失速要求。
圖35表示當在群集1中的級3上認定一個失速時在時間T=1的情形。圖36表示當所有其它的群集都被來自群集1的所得到的延遲失速所失速時在T=2的情形。在這個時間,群集3中的級4也認定一個失速。當任何其它的群集已經失速時,這個來自群集3的新的失速要求不需要與那些群集進行通信。如上面參照圖15所作的描述那樣,如果在那個流水線級局域地認定一個失速,和那個流水線級不受到來自在另一個群集中的相同的級或較後面的級的一個全局失速,一個流水線級產生一個全局失速要求。於是,只要認定了來自群集1的全局失速,群集3響應在級4中的局域失速不產生一個全局失速要求。實際上,如果在群集1中的失速前解除在群集3中的失速,則整個處理機就像一個失速已經在時間T=1隻從群集1產生那樣地進行工作。
圖37表示在T=3的情形。在這個時間,同時解除在群集1和3中的內部失速要求。結果,立即解除群集0中的失速。然而,因為來自群集1的延遲的全局失速仍然是有效的,所以群集3保持失速。圖38表示在T=4的情形。現在群集1已經與所有其它的群集再次對準,並且解除了在所有群集中的諸失速。於是在所有群集中的諸指令能如通常那樣地在下一個時鐘周期中向前行進。
圖39和41表示如果在群集3中的失速前解除在群集1中的失速則上述情況將如何發生改變。圖39表示在T=3的情形。在這個時間,解除在群集1中的內部失速,但是不解除在群集3中的內部失速。因為群集3不產生一個全局失速,所以現在群集1不受到任何失速。
圖40表示在T=4的情形。在群集1中的諸指令已經向前移動,使得群集1現在與其它的諸群集再次對準。來源於群集1的全局失速現在已經從群集0和2移去。然而,群集3由於它自己的內部失速而保持失速。在這個時間,因為群集3仍然受到一個局域失速,但不是一個全局失速,所以群集3產生一個全局失速要求。這個全局失速要求被延遲一個時鐘周期(被圖15中的寄存器214延遲)使得它在後面的一個時鐘周期上對諸其它群集產生作用。
圖41表示在T=5一個時鐘周期後的情形。在群集0,1和2中的諸指令已經向前移動了一級,現在將來自群集3的全局失速加到從級5開始的群集0,1和2上。從這點向前,當在將來某個時間解除群集3中的失速時,不同的群集再次以通常的方式達到對準。
雖然上述描述作為例子涉及一個VLIW處理機,但是我們認識到本發明可應用於不同於VLIW處理機的諸處理機。可以將一個體現本發明的處理機作為一個處理機「芯」包括在一個高度集成的「在一塊晶片上的系統」(SOC)中以便用於多媒體應用,網絡路由器,視頻行動電話,智能汽車,數位電視,聲音識別,3D遊戲等中。
我們將懂得上面已經單純通過例子對本發明進行了描述,並能夠在本發明的範圍內作出細節上的修改。
我們能夠獨立地或以任何適當的組合提供在上述描述中揭示的每個特點,(其中適當的)權利要求書和所附諸圖。
權利要求
1.一個處理機,它包括多條流水線,每條流水線都具有多個流水線級用於在諸連續的時鐘周期上執行一個指令;和失速裝置,用於響應在任何一條流水線中產生的一個失速信號在所有的流水線中使諸指令的執行失速。其中用失速裝置,在一條產生失速信號的流水線中的一個指令的執行後面至少一個時鐘周期上,使在一條不產生失速信號的流水線中的一個指令的執行失速,並在這條產生失速信號的流水線中的失速後面至少一個時鐘周期上,解除在這條不產生失速信號的流水線中的失速。
2.一個根據權利要求1的處理機,其中可以如此安排失速裝置,使得當在第1條流水線中的一個流水線級從第2條流水線接收一個失速信號時,如果那個流水線級響應由第1條流水線產生的一個失速信號在前一個周期中失速,則不使在第1條流水線的流水線級中的諸指令的執行失速。
3.一個根據權利要求1或2的處理機,其中可以如此安排失速裝置,使得當一條流水線在一個級i產生一個失速信號時,使直到和包括那條流水線的級i在內的所有的級都失速。
4.一個根據上述諸權利要求中任何一項的處理機,其中當一條流水線在一個級i產生一個失速信號時,使直到和包括那條流水線的級i在內的所有的級都在一個給定的時鐘周期上失速,並使直到和包括一條不產生一個失速信號的流水線的級i+m在內的所有的級都在所述的給定的時鐘周期後面的m個時鐘周期上失速。
5.一個根據上述諸權利要求中任何一項的處理機,其中該處理機包括多個流水線群集,每個群集包括多條流水線。
6.一個根據權利要求5的處理機,其中可以如此安排失速裝置,使在諸流水線中的諸指令的執行在一個群集內在同一個時鐘周期中失速。
7.一個根據權利要求5或6的處理機,其中可以如此安排失速裝置,使在諸流水線中在一個不產生失速信號的群集中的諸指令的執行在諸流水線中在一個產生失速信號的群集中的諸指令的執行後面至少一個時鐘周期上失速。
8.一個根據上述諸權利要求中任何一項的處理機,其中在工作中,並行地進入各條流水線的諸指令並行地離開諸流水線。
9.一個根據上述諸權利要求中任何一項的處理機,其中在工作中,在不同的流水線中執行不同的指令。
10.一個根據上述諸權利要求中任何一項的處理機,它是一個VLIW處理機,在該處理機中將來自一個VLIW指令包的諸指令並行地發送給諸流水線。
11.一個根據上述諸權利要求中任何一項的處理機,其中每條流水線至少包括一個執行級,在該執行級中至少部分地執行一個指令。
12.一個根據上述諸權利要求中任何一項的處理機,其中響應失速信號不清洗諸流水線。
13.一個根據上述諸權利要求中任何一項的處理機,其中將諸失速裝置分布在兩個或多個流水線級之間。
14.一個根據上述諸權利要求中任何一項的處理機,其中兩個或多個流水線級每個都有相結合的失速控制電路用於控制那個流水線級的失速。
15.一個根據權利要求14的處理機,其中如此安排在每個流水線級中的失速控制電路,使它產生一個用於使另一條流水線失速的全局失速信號,並接收一個來自另一條流水線全局失速信號用於使與失速控制電路結合的流水線級失速。
16.一個根據權利要求15的處理機,其中如果相結合的流水線級不受到來自在另一條流水線中的相同的級或較後面的級的一個全局失速,則失速控制電路不產生一個全局失速信號。
17.一個根據權利要求14到16中任何一項的處理機,其中在兩條或多條流水線的每一條中的失速控制電路基本上是相同的。
18.一個根據上述諸權利要求中任何一項的處理機,其中如果在一個流水線級中存在一個泡則不使那個流水線級失速。
19.一個處理機,它包括多條流水線,每條流水線都具有多個流水線級用於對經過諸流水線的信息執行一系列的工作,兩個或多個流水線級每個都有相結合的失速控制電路用於控制那個流水線級的失速,失速控制電路包括用於產生一個保持信號的裝置,該保持信號或者響應由那個流水線級產生的一個局域失速信號或者響應由另一條流水線產生的一個全局失速信號使結合的流水線級失速;用於產生一個全局失速信號的裝置,該全局失速信號響應所述的局域失速信號使另一條流水線失速;和用於延遲全局失速信號的裝置,使得在認定保持信號後的給定數目的時鐘周期上認定全局失速信號,而且在解除保持信號後的相同數目的時鐘周期上解除全局失速信號。
20.一個操作一個處理機的方法,該處理機包括多條流水線,每條流水線都具有多個流水線級用於在諸連續的時鐘周期上執行諸指令,每條流水線都能夠產生一個失速信號,該方法包括在諸流水線中的一條中產生一個失速信號;在產生失速信號的流水線中使一個指令的執行失速;在一條不產生失速信號的流水線中在至少一個時鐘周期後面使一個指令的執行失速;解除在產生失速信號的流水線中的失速;和至少一個時鐘周期後面解除在不產生失速信號的流水線中的失速。
全文摘要
本發明揭示了包括多條流水線的諸處理機,每條流水線都具有多個流水線級(142,146)用於在諸連續的時鐘周期上執行一個指令。諸處理機包括分布的失速控制電路(148,150,152,154),它們允許在一條流水線中的一個指令變得暫時地與在另一條流水線中的一個指令不同步。這可以得到用於分布一個全局信號,如一個全局失速信號的時間。
文檔編號G06F9/30GK1353357SQ0113782
公開日2002年6月12日 申請日期2001年11月8日 優先權日2000年11月8日
發明者卡爾-裡克·卡西姆·翁, 尼格爾·皮特·託法姆 申請人:斯羅揚有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀