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

具有自我修復(fù)能力的多并行管線處理器的制作方法

文檔序號(hào):6408362閱讀:149來源:國(guó)知局
專利名稱:具有自我修復(fù)能力的多并行管線處理器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)字?jǐn)?shù)據(jù)處理硬件,尤其涉及具有用于同時(shí)處理數(shù)據(jù)的多個(gè)并行管線(multiple parallel pipeline)的高性能處理單元的設(shè)計(jì)。
背景技術(shù)
在20世紀(jì)的后半葉,開始了一種被稱作信息革命的現(xiàn)象。雖然信息革命是一種在范圍上比任何一次事件或一臺(tái)機(jī)器更廣的歷史性發(fā)展,沒有一種設(shè)備能夠比數(shù)字電子計(jì)算機(jī)更能代表信息革命。計(jì)算機(jī)系統(tǒng)的發(fā)展一定是一種革命。每年,計(jì)算機(jī)系統(tǒng)發(fā)展更快,存儲(chǔ)更多數(shù)據(jù),并且向它們的用戶提供更多的應(yīng)用。
現(xiàn)代計(jì)算機(jī)系統(tǒng)通常包括一個(gè)中央處理單元(CPU)和存儲(chǔ)、檢索(retrieve)和傳送信息所需的諸如通信總線和存儲(chǔ)器的支持性硬件。它還包括和外部世界通信所需的諸如輸入/輸出控制器或存儲(chǔ)器控制器的硬件,以及附加在其上的諸如鍵盤、顯示器、磁帶驅(qū)動(dòng)器、磁盤驅(qū)動(dòng)器、連接到網(wǎng)絡(luò)的通信線路等的設(shè)備。CPU是系統(tǒng)的心臟。它執(zhí)行包括計(jì)算機(jī)程序的指令并且指揮其它系統(tǒng)部件的操作。
從計(jì)算機(jī)的硬件的觀點(diǎn)來看,大多數(shù)系統(tǒng)基本上以相同的方式操作。處理器能夠執(zhí)行一組有限的非常簡(jiǎn)單的操作,諸如算術(shù)、邏輯比較和把數(shù)據(jù)從一個(gè)位置移動(dòng)到另一個(gè)位置。但是每個(gè)操作執(zhí)行得很快。指揮一個(gè)計(jì)算機(jī)來執(zhí)行大量這些簡(jiǎn)單操作的程序給我們一種幻覺計(jì)算機(jī)在執(zhí)行復(fù)雜的工作。用戶所感知的計(jì)算機(jī)系統(tǒng)的新的或改進(jìn)的能力是通過執(zhí)行基本上相同的一組非常簡(jiǎn)單的操作但是很快速地執(zhí)行而成為可能的。因此對(duì)計(jì)算機(jī)系統(tǒng)持續(xù)的改進(jìn)要求使這些系統(tǒng)更快。
計(jì)算機(jī)系統(tǒng)的整體速度(也被稱為“吞吐量”)可以被粗略地用每個(gè)單元時(shí)間內(nèi)所執(zhí)行的操作的數(shù)量來估計(jì)。從概念上講,對(duì)于系統(tǒng)速度的所有可能的改進(jìn)中的最簡(jiǎn)單的一個(gè)是增加各種部件的時(shí)鐘速度,特別是處理器的速度。例如,如果所有東西都能以兩倍的速度運(yùn)行,然而以完全相同的方式工作,系統(tǒng)將在一半的時(shí)間內(nèi)執(zhí)行完給定的任務(wù)。早期的從很多分離的部件構(gòu)造的計(jì)算機(jī)處理器很容易通過收縮和組合部件來實(shí)現(xiàn)顯著的速度改進(jìn),最終把整個(gè)處理器作為一個(gè)在單個(gè)芯片上的集成電路進(jìn)行封裝。減小的尺寸使得能夠提高處理器的時(shí)鐘速度,并且因此提高系統(tǒng)速度。
除了提高時(shí)鐘速度,還可以通過使用特定部件的多個(gè)復(fù)制,尤其是通過使用多個(gè)CPU來改進(jìn)系統(tǒng)的吞吐量。封裝在集成電路芯片上的單個(gè)處理器的適度的開銷使這成為實(shí)際。雖然使用多個(gè)處理器當(dāng)然有潛在的好處,但也引入了附加的結(jié)構(gòu)性問題。不深入探討這點(diǎn),我們還可以觀察到不管一個(gè)系統(tǒng)使用多個(gè)CPU或一個(gè)CPU,仍然有很多理由來改進(jìn)單個(gè)CPU的速度。如果CPU的時(shí)鐘速度給定,還可能通過增加每個(gè)時(shí)鐘周期所執(zhí)行的操作的平均數(shù)量來進(jìn)一步提高單個(gè)CPU的速度,即,每秒鐘所執(zhí)行的操作的數(shù)量。
大多數(shù)現(xiàn)代處理器采用管線和并行的概念來提高時(shí)鐘速度和/或每個(gè)時(shí)鐘周期所執(zhí)行的操作的平均數(shù)量。管線的指令執(zhí)行允許隨后的指令在前面發(fā)布的指令完成之前就開始執(zhí)行,以便一個(gè)指令的執(zhí)行和其它指令的執(zhí)行相重疊。理想來講,一個(gè)新的指令在每個(gè)時(shí)鐘周期開始,并且隨后在每個(gè)周期通過一個(gè)管線階段。由于執(zhí)行單個(gè)指令的工作被分割成較小的段,每個(gè)段在一個(gè)時(shí)鐘周期中執(zhí)行,有可能提高時(shí)鐘速度。雖然一個(gè)指令可能要經(jīng)歷多個(gè)周期或管線階段來完成,如果管線總是被占滿的,處理器也能在每個(gè)周期執(zhí)行一個(gè)指令。
某些有時(shí)被稱作“超標(biāo)量體系結(jié)構(gòu)”(superscalars)的現(xiàn)代高性能處理器設(shè)計(jì)把管線的概念擴(kuò)展到采用多個(gè)并行管線,其中每個(gè)并行管線同時(shí)在分離的數(shù)據(jù)上操作。在理想的條件下,每個(gè)指令同時(shí)導(dǎo)致數(shù)據(jù)被在每個(gè)并行管線中操作,并且因此具有和管線數(shù)量相等的潛在吞吐量乘數(shù),雖然在實(shí)際上這只是一個(gè)理論極限,因?yàn)椴豢赡茉谌魏螘r(shí)間都使管線充滿。
在一個(gè)被稱為“單指令,多數(shù)據(jù)”(SIMD)的并行管線設(shè)計(jì)的變體中,每個(gè)指令包含一個(gè)單一的適用于一組并行管線中的每一個(gè)的操作代碼。雖然每個(gè)管線在分離的數(shù)據(jù)上操作,但所執(zhí)行的操作并不是獨(dú)立的。一般,每個(gè)管線執(zhí)行相同的操作,雖然有可能某些指令操作代碼指示特定的管線執(zhí)行不同的特定操作。
在另一個(gè)被稱為“多指令,多數(shù)據(jù)”(MIMD)的并行管線設(shè)計(jì)的變體中,每個(gè)指令包含用于每個(gè)相應(yīng)管線的分離的和獨(dú)立的操作代碼,每一組適用于不同的相應(yīng)管線。當(dāng)和一個(gè)SIMD設(shè)計(jì)比較時(shí),MIMD設(shè)計(jì)允許在執(zhí)行期間更大的靈活性并且產(chǎn)生對(duì)管線的更高的利用率,這是因?yàn)槊總€(gè)管線能夠執(zhí)行獨(dú)立的操作。然而,指定在指令中每個(gè)管線的不同操作的要求顯著地增加了指令的長(zhǎng)度,并且增加了支持MIMD設(shè)計(jì)所需的硬件的復(fù)雜度。作為這樣一個(gè)抵消性考慮的結(jié)果,不能說這兩種方法中的哪一個(gè)明顯優(yōu)于另一個(gè),雖然看起來SIMD設(shè)計(jì)在當(dāng)前被更廣泛地使用。
多并行管線處理器(multiple parallel pipeline processor),不管是采用SIMD或是MIMD設(shè)計(jì),都是一個(gè)極其復(fù)雜的設(shè)備。所述多管線需要相對(duì)較大的主要是定制邏輯(custom logic)的集成電路芯片區(qū)域。在這些管線中的這些電路具有高度的切換活性(activity),并且在這些設(shè)備的典型工作頻率消耗相當(dāng)大的功率。在管線內(nèi)的功率密度,即芯片表面單位面積所消耗的功率量趨向于比在諸如高速緩存陣列和寄存器的處理器芯片的很多其它區(qū)域要大得多。這種高度的活動(dòng)和高功率消耗使得所述處理器芯片的多管線區(qū)域尤其容易發(fā)生故障。
由于指令假定所有的操作數(shù)都由它們相應(yīng)的管線同時(shí)處理,在傳統(tǒng)的多并行管線處理器中,管線的任何部分的故障(即使該故障只影響到一個(gè)管線)通常意味著處理器再也不能夠處理指令。因此,整個(gè)處理器實(shí)際上被有效中斷了(disabled)。這可能反過來導(dǎo)致系統(tǒng)故障,雖然在一些多處理器計(jì)算機(jī)系統(tǒng)中,使用剩余的能工作的處理器,系統(tǒng)能繼續(xù)操作,雖然操作在一個(gè)降低了的吞吐量上。
為了增加多管線處理器設(shè)計(jì)的成功和可接受性。期望減少處理器故障的頻率,特別是作為在管線中的某些電路故障的結(jié)果的處理器故障的頻率。存在對(duì)于改進(jìn)的周來對(duì)抗多管線處理器的薄弱點(diǎn)的設(shè)計(jì)的需求。

發(fā)明內(nèi)容
一種具有能夠在第一管線中檢測(cè)到故障的情況下,用第二管線代替第一管線能力的多并行管線數(shù)字處理裝置。最佳的,由多個(gè)主要管線共享冗余的管線,并且在任何主要管線發(fā)生故障的情況下,由冗余的管線承擔(dān)故障管線的功能。
在優(yōu)選實(shí)施例的一個(gè)方面,在一個(gè)陣列中的多個(gè)主要管線和一個(gè)冗余管線在物理上相鄰,每個(gè)管線(兩個(gè)在邊緣的除外)具有2個(gè)相鄰管線,每邊一個(gè)。管線故障導(dǎo)致數(shù)據(jù)在管線陣列中被移位(shift)一個(gè)位置,以繞過(by pass)故障管線。移位總是移一個(gè)位置,以維持與數(shù)據(jù)的正常的來源寄存器的嚴(yán)格相似性。因此,如果陣列中的第一管線發(fā)生故障而第五管線是冗余的,則本來第一管線的數(shù)據(jù)被移位到第二管線,本來要去第二管線的數(shù)據(jù)被移位到第三管線,并依次類推。
在優(yōu)選實(shí)施例的另一個(gè)方面,控制在管線數(shù)據(jù)的主要來源(primary source)和備用來源(secondary source)間的選擇的選擇邏輯和其它選擇邏輯,特別是用于管線各種階段的操作數(shù)來源選擇邏輯結(jié)合在一起。這個(gè)操作數(shù)來源選擇邏輯是用于繞過特定的管線邏輯或寄存器的。由于在主要來源和備用來源間的選擇被和其它選擇邏輯結(jié)合在一起,在管線數(shù)據(jù)的數(shù)據(jù)路徑中不引入或僅引入最少的附加邏輯門,所述數(shù)據(jù)路徑通常是臨界時(shí)間路徑(critical timingpath)。
在優(yōu)選實(shí)施例的另一個(gè)方面,一個(gè)冗余管線由位于一個(gè)集成電路芯片上的相應(yīng)處理器核心的多個(gè)(最好是兩個(gè))主要管線組來共享。在這種情況下,冗余的管線在物理上位于該兩個(gè)主要管線組和相鄰的兩個(gè)組之間。
根據(jù)本發(fā)明的優(yōu)選實(shí)施例構(gòu)造的冗余管線具有能夠在當(dāng)一個(gè)多管線處理器中的一個(gè)管線的一個(gè)部件部分發(fā)生故障的情況下保持處理器繼續(xù)運(yùn)行的能力。而且,由于根據(jù)優(yōu)選實(shí)施例的管線和選擇電路的配置,事實(shí)上在任何臨界時(shí)間路徑都沒有引入任何附加延遲。附加的管線占用一些芯片區(qū)域,但是不需要復(fù)制整個(gè)處理器。
參考在其中相同的附圖標(biāo)記指向相同的部分的附圖,可以最好地了解本發(fā)明的結(jié)構(gòu)和操作的細(xì)節(jié)。


圖1是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的利用多并行管線處理器的計(jì)算機(jī)系統(tǒng)的主要硬件部件的高層方框圖。
圖2是根據(jù)優(yōu)選實(shí)施例的具有并行管線的CPU的主要部件的高層方框圖。
圖3是根據(jù)優(yōu)選實(shí)施例的在CPU中的并行管線子單元的主要部件的高層概念圖。
圖4A和4B(這里共同稱為圖4)是根據(jù)優(yōu)選實(shí)施例的詳細(xì)示出用于支持管線數(shù)據(jù)的移位的在管線的輸入和輸出的選擇邏輯的圖。
圖5是根據(jù)優(yōu)選實(shí)施例的表示控制把數(shù)據(jù)移位到相鄰管線的硬件控制邏輯的圖。
圖6說明根據(jù)一個(gè)優(yōu)選系統(tǒng)環(huán)境的當(dāng)在處理器中多于一個(gè)管線變得無效的情況下支持選擇性的線程執(zhí)行的系統(tǒng)環(huán)境。
圖7是根據(jù)本發(fā)明的一個(gè)替換實(shí)施例的具有多個(gè)處理器核心和一個(gè)共享的冗余管線的集成電路芯片的高層圖。
具體實(shí)施例方式
參照附圖,其中相同的標(biāo)記始終表示幾個(gè)視圖的相同的部分。圖1是根據(jù)本發(fā)明的一個(gè)優(yōu)選實(shí)施例的,利用多并行管線處理器的計(jì)算機(jī)系統(tǒng)100的主要硬件部件的高層示意圖。計(jì)算機(jī)系統(tǒng)100的主要部件包括一個(gè)或多個(gè)中央處理單元(CPU)101、主存儲(chǔ)器102、終端接口111、存儲(chǔ)接口112、I/O設(shè)備接口113以及通信/網(wǎng)絡(luò)接口114,所有這些都經(jīng)由總線103、104和總線接口105相互連接用于部件間的通信。
系統(tǒng)100包含一個(gè)或多個(gè)通用可編程中央處理單元(CPUs)101A-101D,這里通常被稱為特征(feature)101。在優(yōu)選實(shí)施例中,系統(tǒng)100包含通常在大型系統(tǒng)中的多個(gè)處理器;但是,系統(tǒng)100或者也可以是單個(gè)CPU系統(tǒng)。每個(gè)處理器101執(zhí)行存儲(chǔ)在存儲(chǔ)器102中的指令,并且可以包括一級(jí)或多級(jí)在其上的(on-board)高速緩存。存儲(chǔ)器102是用于存儲(chǔ)數(shù)據(jù)和程序的隨機(jī)存取半導(dǎo)體存儲(chǔ)器。存儲(chǔ)器102在概念上是單一的單片體(monolithic entity),應(yīng)當(dāng)理解所述存儲(chǔ)器往往是一個(gè)更復(fù)雜的排列,諸如緩存架構(gòu)(hierarchy)和其它存儲(chǔ)器設(shè)備。
存儲(chǔ)器總線103提供用于在CPU 101、主存儲(chǔ)器102和I/O總線接口單元105之間傳送數(shù)據(jù)的數(shù)據(jù)通信路徑。I/O總線接口單元105還被連接到系統(tǒng)I/O總線104用于把數(shù)據(jù)從各個(gè)I/O單元傳送和傳送到各個(gè)I/O單元。I/O總線接口單元105通過系統(tǒng)I/O總線104和多個(gè)I/O接口單元111-114通信,這些I/O接口單元111-114也被稱為I/O處理器(IOPs)或I/O適配器(IOAs)。系統(tǒng)I/O總線可以是例如工業(yè)標(biāo)準(zhǔn)的PCI總線,或任何其它適當(dāng)?shù)目偩€技術(shù)。I/O接口單元支持和各種存儲(chǔ)和I/O設(shè)備的通信。例如,終端接口單元111支持附加一個(gè)或多個(gè)用戶終端121-124。存儲(chǔ)接口單元112支持附加一個(gè)或多個(gè)直接存取存儲(chǔ)設(shè)備(DASD)125-127(其通常是旋轉(zhuǎn)磁盤驅(qū)動(dòng)器存儲(chǔ)器設(shè)備,雖然它們可以或者是其它設(shè)備,包括被配置為看起來是主機(jī)的單一大型存儲(chǔ)設(shè)備的磁盤驅(qū)動(dòng)器陣列。I/O和其它設(shè)備接口113向各種其它輸入/輸出設(shè)備或其它類型的設(shè)備的任何一個(gè)提供接口。在圖1的范例實(shí)施例中示出了兩個(gè)這樣的設(shè)備,打印機(jī)128和傳真機(jī)129。應(yīng)當(dāng)理解存在很多其它這樣的可能是不同類型的設(shè)備。網(wǎng)絡(luò)接口114向提供一個(gè)或多個(gè)從系統(tǒng)100到其它數(shù)字設(shè)備和計(jì)算機(jī)系統(tǒng)的通信路徑;這些路徑可以包括例如,諸如因特網(wǎng)、局域網(wǎng)或其它網(wǎng)絡(luò)的一個(gè)或多個(gè)網(wǎng)絡(luò)130,或者可以包括遠(yuǎn)程設(shè)備通信線路、無線連接等。
應(yīng)當(dāng)理解,圖1意圖描繪在高層級(jí)的系統(tǒng)100的代表性主要部件,單個(gè)部件可以具有比圖1中所表示的更大的復(fù)雜性,可以有和圖1中所示的不同的部件或圖1中所示的那些以外的附加的部件,并且這些部件的數(shù)量、類型和配置可以變動(dòng)。在這里公開了幾個(gè)這樣的附加復(fù)雜性或附加的變動(dòng)的特定例子,應(yīng)當(dāng)理解這些僅僅是為了示例的目的并且不是必須是只能有這樣的變動(dòng)。
雖然主存儲(chǔ)器102在圖1中被示為單一的單片體,存儲(chǔ)器102在實(shí)際上可以是如現(xiàn)有技術(shù)中已知的分布式的和/或?qū)蛹?jí)結(jié)構(gòu)的。例如存儲(chǔ)器可能存在于多個(gè)級(jí)別的高速緩存中,并且這些高速緩存可以被進(jìn)一步按照功能劃分,從而一個(gè)高速緩存保留指令而另一個(gè)保留被一個(gè)處理器或多個(gè)處理器所使用的非指令數(shù)據(jù)。存儲(chǔ)器還可以被分配和與不同的CPU或是CPU組關(guān)聯(lián),如同在各種所謂的非均勻的(non-uniform)存儲(chǔ)器存取(NUMA)計(jì)算機(jī)結(jié)構(gòu)中的任何一個(gè)所知的。雖然存儲(chǔ)器總線103在圖1中被示為在多個(gè)CPU 101、主存儲(chǔ)器102和I/O總線105之間提供直接通信路徑的相對(duì)簡(jiǎn)單的單一總線結(jié)構(gòu),實(shí)際上存儲(chǔ)器總線103可以包括多個(gè)不同的總線或通信路徑,所述多個(gè)不同的總線或通信路徑可以被排列成各種任意的形狀,諸如在層級(jí)上的點(diǎn)對(duì)點(diǎn)鏈路、星形或網(wǎng)形配置、多層級(jí)總線、并行和冗余路徑等。而且,雖然I/O總線接口105和I/O總線104被示為單一的相應(yīng)單元,系統(tǒng)100可以實(shí)際上包含多個(gè)I/O總線接口單元105和/或多個(gè)I/O總線104。雖然示出了把系統(tǒng)I/O總線104從通向各種I/O設(shè)備的各種通信路徑分離開的多個(gè)I/O接口單元,作為替代可以把某些或所有的I/O設(shè)備直接連接到一個(gè)或多個(gè)系統(tǒng)I/O總線。
在圖1中描繪的計(jì)算機(jī)系統(tǒng)100具有多個(gè)附加的終端121-124,諸如可以是典型的多用戶“大型”計(jì)算機(jī)系統(tǒng)。一般,在這種情況下實(shí)際附加的設(shè)備的數(shù)量大于在圖1中所示出的那些,雖然本發(fā)明并不局限于任何特定大小的系統(tǒng)?;蛘?,計(jì)算機(jī)系統(tǒng)100可以是一般只包含單個(gè)用戶的顯示器和鍵盤輸入的單一用戶系統(tǒng),或者可以是具有很少或沒有直接的用戶接口,而是從其它計(jì)算機(jī)系統(tǒng)(客戶)接收請(qǐng)求的服務(wù)器或類似設(shè)備。
雖然在高層次說明并示出了各種系統(tǒng)部件,應(yīng)當(dāng)理解一般的計(jì)算機(jī)系統(tǒng)包含很多未示出的其它部件,而這些部件對(duì)于理解本發(fā)明并不重要。
圖2是根據(jù)一個(gè)優(yōu)選實(shí)施例的CPU 101的主要部件的高層圖,比圖1所說明的更詳細(xì)地示出了CPU 101。在這個(gè)實(shí)施例中,在圖2中示出的部件被封裝在一個(gè)單一的半導(dǎo)體芯片中。CPU 101包括指令單元部分201、執(zhí)行單元部分211、1級(jí)指令高速緩存(L1 I-高速緩存)205、1級(jí)數(shù)據(jù)高速緩存(L1 D-高速緩存)206、二級(jí)高速緩存(L2高速緩存)208以及存儲(chǔ)器接口209。一般,指令單元部分201從L1 I-高速緩存205獲得指令,對(duì)指令進(jìn)行解碼來確定要執(zhí)行的操作,并且解決分支條件來控制程序流。執(zhí)行單元211對(duì)在寄存器中的數(shù)據(jù)執(zhí)行算術(shù)和邏輯運(yùn)算,并且從L1 D-高速緩存載入或存儲(chǔ)數(shù)據(jù)。L2高速緩存208是一個(gè)二級(jí)高速緩存,一般比向L1 I-高速緩存205和L1 D-高速緩存206提供數(shù)據(jù)的L1 I-高速緩存和L1 D-高速緩存要大。L2高速緩存208連接到外部存儲(chǔ)器接口209,該外部存儲(chǔ)器接口209從一般是主存儲(chǔ)器102的外部存儲(chǔ)器位置載入數(shù)據(jù)或者把數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器位置,該外部存儲(chǔ)器位置一般是主存儲(chǔ)器102,雖然它也可能是另一級(jí)別的高速緩存。
指令單元201包括分支單元202、指令解碼/分派單元203和指令寄存器以及緩沖器204。來自L1 I-高速緩存205的指令在執(zhí)行前被載入緩沖器204。取決于CPU的設(shè)計(jì),可能有多個(gè)緩沖器(例如一個(gè)用于指令的順序序列,而其它用于指令的分支位置),其中的每個(gè)可能包含多個(gè)指令。解碼/分派單元203從緩沖器之一接收當(dāng)前要執(zhí)行的指令,并且對(duì)該指令進(jìn)行解碼以確定要執(zhí)行的操作或分支條件。分支單元202通過評(píng)估分支條件來控制程序流,并且從L1 I-高速緩存205重新填充緩沖器。
L1 I-高速緩存205和L1 D-高速緩存206是把數(shù)據(jù)提供給指令單元和執(zhí)行單元的分離的指令高速緩存和數(shù)據(jù)高速緩存。L2高速緩存是包含指令和非指令數(shù)據(jù)的非歧視性(non-discriminated)高速緩存。一般,通過指令或執(zhí)行單元,數(shù)據(jù)被從L1高速緩存取出或被存儲(chǔ)到L1高速緩存,并且如果數(shù)據(jù)不在L1高速緩存中,則從L2高速緩存208中載入L1高速緩存,而L2高速緩存208又依次從主存儲(chǔ)器102獲得該數(shù)據(jù),并且該數(shù)據(jù)隨后被從L1高速緩存?zhèn)魉偷綄?duì)應(yīng)的單元。根據(jù)處理器的設(shè)計(jì),有可能繞過L1高速緩存而從L2高速緩存208載入數(shù)據(jù)到執(zhí)行或指令寄存器。存儲(chǔ)器總線接口209處理經(jīng)過存儲(chǔ)器總線103的數(shù)據(jù)的傳送,所述數(shù)據(jù)可以是經(jīng)由總線接口105到主存儲(chǔ)器或到I/O單元的。
執(zhí)行單元211包括用于存儲(chǔ)數(shù)據(jù)的一組通用寄存器212和用于響應(yīng)于由指令單元201解碼的指令對(duì)在GP寄存器212中的數(shù)據(jù)執(zhí)行算術(shù)和邏輯運(yùn)算的整數(shù)運(yùn)算邏輯單元213。執(zhí)行單元還包括用于執(zhí)行數(shù)學(xué)密集型操作(mathematically intensive operation)的矢量/圖形子單元214。矢量/圖形單元214包括一組矢量寄存器215和用于對(duì)在矢量寄存器215中的數(shù)據(jù)進(jìn)行操作的一組并行算術(shù)/邏輯管線216。這里矢量/圖形單元214及其部件被詳細(xì)說明。雖然在這里被指為矢量/圖形單元,這僅僅是一般使用的說明。實(shí)際上,矢量/圖形單元214對(duì)數(shù)據(jù)執(zhí)行數(shù)學(xué)密集型操作,并且可以被用于任何或各種需要數(shù)學(xué)密集型操作的應(yīng)用。除了圖2中所示的部件,執(zhí)行單元還包括附加的特殊用途的寄存器和計(jì)數(shù)器、用于從高速緩存或存儲(chǔ)器取來數(shù)據(jù)或向高速緩存或存儲(chǔ)器存儲(chǔ)數(shù)據(jù)的載入和存儲(chǔ)硬件、控制硬件等。具體來說,執(zhí)行單元211可以包括與在矢量/圖形單元214中的并行管線組216分離的附加管線(未示出)。例如,整數(shù)ALU 213可以被作為一個(gè)或多個(gè)管線來實(shí)現(xiàn);執(zhí)行單元211可以包含用于在GP寄存器212或矢量寄存器215的一方和某種形式的存儲(chǔ)器(一般是L1 D-高速緩存或L2高速緩存)的另一方之間的傳送數(shù)據(jù)的一個(gè)或多個(gè)載入/存儲(chǔ)管線。諸如指令取來和解碼管線的附加管線也可以存在于處理器101中。
雖然在高層上說明和顯示了各種CPU部件,應(yīng)當(dāng)理解優(yōu)選實(shí)施例的CPU包含很多其它未示出的對(duì)于理解本發(fā)明并不重要的部件。例如,在一般的設(shè)計(jì)中需要各種附加的特殊用途存儲(chǔ)器。而且,應(yīng)當(dāng)理解圖2中的CPU僅僅是CPU架構(gòu)中的一個(gè)例子,并且CPU 101中的部件的數(shù)量、類型和配置可以存在很多的變化,除了那些已說明的部件還可能存在未示出的部件,而且并非所有所說明的部件都出現(xiàn)在CPU的設(shè)計(jì)中。例如,緩沖器和高速緩存的數(shù)量和配置可以變化;執(zhí)行單元管線的數(shù)量和功能可以變動(dòng);寄存器可以被配置在不同的陣列和組中;可以出現(xiàn)或不出現(xiàn)專用的浮點(diǎn)硬件等。
在優(yōu)選實(shí)施例中,處理器101是一個(gè)單指令多數(shù)據(jù)(SIMD)處理器。由指令單元201解碼的每個(gè)指令包含一個(gè)指定一個(gè)操作的單一操作碼,和潛在的多個(gè)操作數(shù)說明符(specifier)。在優(yōu)選實(shí)施例中,處理器包含具有4個(gè)主算術(shù)/邏輯管線(以及一個(gè)作為備份的附加算術(shù)/邏輯管線)的矢量/圖形子單元214,應(yīng)當(dāng)理解這種管線的數(shù)量可以變動(dòng)。因此,處理器101的指令集的一個(gè)子集包括由在矢量/圖形子單元中的管線216執(zhí)行的指令。管線216的每個(gè)指令包含適用于所有管線的單一操作碼。每個(gè)指令還指定在矢量寄存器215中的數(shù)據(jù)的來源和目的地。在優(yōu)選實(shí)施例中,一個(gè)指令可以包含最多三個(gè)操作數(shù)來源說明符和一個(gè)指向在矢量寄存器組215中的寄存器的目的地說明符。在優(yōu)選實(shí)施例中,每個(gè)管線組216執(zhí)行與其它任何管線(除了閑置的管線)在任何給定周期中相同的操作?;蛘呖梢詾閷?duì)應(yīng)于它們相應(yīng)位置的管線設(shè)計(jì)用于指定一個(gè)固定的、預(yù)先確定的操作的組的操作碼,其中并非所有的操作都是相同的。
處理器101也可以是一個(gè)被稱為甚長(zhǎng)指令字(Very Long Instruction Word,VLIW)或?qū)挵l(fā)送超標(biāo)量體系結(jié)構(gòu)(Wide Issue Superscalar)的多指令多數(shù)據(jù)(MIMD)處理器,其中該指令包含多個(gè)獨(dú)立的操作碼,每個(gè)操作碼對(duì)應(yīng)于相應(yīng)的管線。
根據(jù)優(yōu)選實(shí)施例,一組并行算術(shù)/邏輯管線包括一個(gè)附加的冗余管線。當(dāng)任何主要管線變得不能操作(故障)的情況下,切換邏輯使用冗余管線來提供故障主要管線的服務(wù)。
圖3是根據(jù)優(yōu)選實(shí)施例的在執(zhí)行單元211中的矢量/圖形單元214,特別是并行算術(shù)/邏輯管線和切換邏輯216的組的高層級(jí)概念圖。參照?qǐng)D3,并行管線組216包括被分別指定為Pipe0到Pipe4的5個(gè)管線301到305。最好,5個(gè)管線的每一個(gè)都和其它的相同,雖然在管線間存在區(qū)別的情況下冗余功能還是可能的。每個(gè)管線包括相應(yīng)的3個(gè)部分相應(yīng)的序列改變部分311、314、317、320和323;相應(yīng)的固定乘法/加法(FX)部分312、315、318、321和324;以及相應(yīng)的浮點(diǎn)(FP)部分313、316、319、322、325。從Pipe0到Pipe3301-304是主要管線,而Pipe4 305是備用或者冗余管線。
序列改變部分311、314、317、320和323對(duì)數(shù)據(jù)執(zhí)行移位、輪換(rotate)、插入和類似的操作。序列改變部分一般需要3到4個(gè)執(zhí)行時(shí)鐘周期(階段)。FX部分312、315、318、321和324執(zhí)行定點(diǎn)加法、減法、乘法、除法和比較。FX部分一般需要4到8個(gè)執(zhí)行周期。FP部分313、316、319、322和325執(zhí)行浮點(diǎn)加法和乘法。FP部分一般需要大約12個(gè)執(zhí)行周期。
每個(gè)管線部分基本上是一個(gè)完整的管線,即它能夠從矢量寄存器215接收多個(gè)輸入操作數(shù)并且向矢量寄存器215產(chǎn)生一個(gè)輸出。然而,對(duì)于管線只存在一組輸入和輸出寄存器,所述寄存器由所有部分共享。即,Pipe0 301的一組輸入寄存器由序列改變部分311、FX部分312和FP部分313共享。
矢量寄存器堆(register file)215是提供管線301到305所操作的數(shù)據(jù)的一排(bank)寄存器。在優(yōu)選實(shí)施例中,矢量寄存器215包含能夠被指定為矢量/圖形指令的操作數(shù)的128個(gè)通用寄存器。每個(gè)通用寄存器被分割成4個(gè)32比特的字(word),其中每個(gè)字對(duì)應(yīng)于管線組216的不同的相應(yīng)管線。在寄存器的每個(gè)32比特字都可以載入獨(dú)立數(shù)據(jù)。當(dāng)所述寄存器是在管線指令中指定的操作數(shù)時(shí),寄存器的4個(gè)32比特字的每一個(gè)同時(shí)向管線組216的相應(yīng)管線提供來源數(shù)據(jù)或從管線組216的相應(yīng)管線接收目的地?cái)?shù)據(jù)。為了由矢量/圖像單元214執(zhí)行而解碼的矢量/圖像指令可以指定在寄存器文件215中的128個(gè)通用寄存器中的任意一個(gè)作為用于管線操作的來源操作數(shù)或目的地操作數(shù)。
從程序員、編譯器或者指令集的觀點(diǎn)來看,矢量寄存器文件215只不過包含128個(gè)寄存器,其中任何一個(gè)都可以用作來源操作數(shù)或目的地操作數(shù)。然而,在物理構(gòu)造上,寄存器文件215還包含4組臨時(shí)寄存器,每個(gè)和一個(gè)相應(yīng)的管線相關(guān)聯(lián),這對(duì)于程序員、編譯器或者指令集來說是清楚的(transparent)。每組臨時(shí)寄存器包含4個(gè)寄存器,指定為VA、VB、VC和VT。臨時(shí)輸入寄存器VA、VB和VC 309A-309D(通常指定309)保存到管線的輸入數(shù)據(jù),而臨時(shí)結(jié)果寄存器VT 310A-310D(通常指定310)保存結(jié)果。將寄存器Vi指定為用于輸入到管線216的來源操作數(shù)的指令實(shí)際上導(dǎo)致在Vi中的數(shù)據(jù)被寫入到輸入寄存器組309中的諸如VA的臨時(shí)輸入寄存器,從所述臨時(shí)輸入寄存器該數(shù)據(jù)被輸入到管線。類似地,管線的輸出總是被寫入臨時(shí)寄存器VT 310,從VT310該管線的輸出被傳送到在指令中指定的目的地寄存器。這種物理構(gòu)造便利于把數(shù)據(jù)從多個(gè)來源傳送到多個(gè)可能的目標(biāo)。即,每個(gè)管線具有多個(gè)數(shù)據(jù)進(jìn)入點(diǎn)(entry point),并且具有來自每個(gè)管線的多個(gè)數(shù)據(jù)退出點(diǎn)(exit point)。創(chuàng)建從每個(gè)可能的來源寄存器到管線的每個(gè)可能的進(jìn)入點(diǎn)的直接路徑,或者創(chuàng)建從每個(gè)可能的退出點(diǎn)到每個(gè)可能的目的地寄存器的直接路徑可能涉及用于完成一個(gè)周期的過多的硬件或過多的時(shí)間。
管線301-305最好被構(gòu)造在物理上接近的一個(gè)規(guī)則陣列(regular array)中,大約如圖3所示。每組臨時(shí)寄存器309在物理上被安置在靠近相應(yīng)的主要管線。每組臨時(shí)寄存器扇出(fan out)以便向兩個(gè)管線提供輸入,這兩個(gè)管線為與其相關(guān)的主要管線以及和該主要管線相鄰并且在指定的管線順序上次高的管線。即,和主要管線Pipe0 301相關(guān)聯(lián)的每組臨時(shí)寄存器309A還向Pipel 302提供輸入;和主要管線Pipel 302相關(guān)聯(lián)的每組臨時(shí)寄存器309B還向Pipe2303提供輸入等。在到每個(gè)管線的輸入的選擇邏輯307確定是否選擇與那個(gè)管線相關(guān)聯(lián)的臨時(shí)輸入寄存器,或是與相鄰管線相關(guān)聯(lián)的一組備用(alternative)臨時(shí)寄存器。在管線301和305在管線陣列的邊緣的情況下,只能選擇一組來源寄存器。
類似地,每個(gè)管線302-305的輸出扇出(fan out)到兩個(gè)臨時(shí)結(jié)果寄存器310。管線310和305,和陣列的邊緣,只具有一個(gè)單一的目的地。選擇邏輯308確定是否選擇與結(jié)果寄存器相關(guān)聯(lián)的管線的輸出,或是備用相鄰管線的輸出,用于輸入到結(jié)果寄存器。例如,與主要管線304相關(guān)聯(lián)的臨時(shí)結(jié)果寄存器310D也能夠從冗余管線305接收結(jié)果。
在正常的操作中,管線301-304分別從輸入寄存器309A-309D接收數(shù)據(jù),并且把它們的結(jié)果分別輸出到結(jié)果寄存器310A-310D,而管線305保持空閑。在主要管線變得無法操作的情況下,所述無法操作的管線被閑置,而冗余管線305開始工作。最好,通過中斷到受影響的管線的時(shí)鐘信號(hào)來執(zhí)行閑置,這能減少在空閑管線中的功率消耗。
當(dāng)冗余管線開始工作時(shí),管線輸入和輸出被移位到陣列中單一管線以利用所述冗余管線。例如,如果管線302變得無法操作,管線302被閑置并且冗余管線305被激活。管線302的輸入寄存器309B被選擇邏輯307所選擇以便向管線303提供輸入,管線303的輸入寄存器309C被選擇邏輯307所選擇以便向管線304提供輸入,而管線304的輸入寄存器309D被選擇以便向冗余管線305提供輸入。在這種情況下,管線301繼續(xù)從寄存器309A接收器輸入。在所述輸入執(zhí)行類似的移位。即,在這個(gè)例子中,管線303的輸出被選擇邏輯308所選擇以被存儲(chǔ)在臨時(shí)結(jié)果寄存器310B中,管線304的輸出被選擇到結(jié)果寄存器310C,而管線305的輸出被選擇到結(jié)果寄存器310D。管線301的輸出繼續(xù)被放在結(jié)果寄存器310A。因此,管線303有效地承擔(dān)無法操作的管線302的功能,而通常由管線303執(zhí)行的功能被移位到管線304,而通常由管線304執(zhí)行的功能被移位到冗余管線305。
在優(yōu)選實(shí)施例中,雖然使用不同的數(shù)據(jù),在指令集中的全部指令在4個(gè)管線中執(zhí)行相同的操作。因此,控制邏輯不需要考慮被移位的輸入數(shù)據(jù)是一個(gè)管線變得無法操作的結(jié)果的事實(shí)。然而,或者可能設(shè)計(jì)一種不在所有的管線中執(zhí)行相同功能的具有有限數(shù)量的特定指令的處理器。在這種情況下,附加控制邏輯(未示出)將基于當(dāng)前分配給一個(gè)特定管線的數(shù)據(jù)選擇由該管線執(zhí)行的功能。即,如果管線302變得不能操作并且管線304承擔(dān)通常由管線303所執(zhí)行的功能,則控制邏輯還將提供移位控制信號(hào),以便管線304的表現(xiàn)和管線303的完全一樣。如果處理器101是一個(gè)指令設(shè)置為多個(gè)并行管線中的每一個(gè)指定不同的操作MIMD機(jī)器,則也可以應(yīng)用相同的原則。
雖然在理論上可以把無法操作的管線的數(shù)據(jù)直接轉(zhuǎn)移到冗余管線(在上述的例子中,把給管線302的數(shù)據(jù)轉(zhuǎn)移到管線305),如上所述在優(yōu)選實(shí)施例中的一個(gè)管線的移位被認(rèn)為具有特定的優(yōu)點(diǎn)。通過對(duì)輸入和輸出只移位一個(gè)管線,能夠最小化在寄存器309、310及其相應(yīng)管線之間的物理路徑的長(zhǎng)度。這些數(shù)據(jù)路徑趨向于是臨界時(shí)間路徑,并且因此在可能的情況下最小化所述長(zhǎng)度是重要的。此外,任何一個(gè)管線具有最多兩組替換輸入和輸出寄存器,避免了相對(duì)大的用于管線冗余的選擇輸入邏輯。最后,只移位一個(gè)管線促進(jìn)了在電路設(shè)計(jì)中的更大的常規(guī)性,使得更容易改變?cè)O(shè)計(jì)以容納不同數(shù)量的管線和不同的配置選項(xiàng)。
在圖3,選擇邏輯307被描繪為一排(bank)雙向(或單向)選擇邏輯電路,其把對(duì)應(yīng)于一個(gè)管線的矢量寄存器的32比特字或者是對(duì)應(yīng)于一個(gè)相鄰管線的相同寄存器的32比特字選擇為該管線的輸入。用于輸出的選擇邏輯308也被類似地示出。雖然可以以這種方式實(shí)現(xiàn)用于并行管線陣列的一個(gè)冗余管線,這將導(dǎo)致在管線的輸入引入附加的邏輯延遲,和在管線的輸出引入附加的邏輯延遲。在優(yōu)選實(shí)施例中,用于在輸入寄存器字的不同組之間的選擇的選擇邏輯被和其它選擇邏輯結(jié)合在一起,以便在關(guān)鍵路徑(critical path)上看不到在輸入和輸出的附加選擇邏輯延遲。
圖4A和4B(這里共同稱為圖4)根據(jù)所述優(yōu)選實(shí)施例詳細(xì)示出了當(dāng)一個(gè)發(fā)生管線變得無法操作的情況下,在支持管線數(shù)據(jù)移位的管線的輸入和輸出的選擇邏輯。管線N、X部分401是任何管線部分314-325的通用代表。即,管線N、X部分是對(duì)應(yīng)于矢量寄存器文件215的字N的部分(其可能是一個(gè)序列改變部分、一個(gè)FX部分或一個(gè)FP部分)的代表。
每個(gè)管線部分401包括三個(gè)分別對(duì)應(yīng)于寄存器VA、VB和VC的輸入選擇器402-404,所述輸入選擇器是圖3中所示的選擇邏輯307的部分。雖然簡(jiǎn)化的圖3表示用于每個(gè)管線301-305的一組選擇邏輯,應(yīng)當(dāng)記得實(shí)際上每個(gè)管線301-305實(shí)際上是一個(gè)完整的管線,并且每個(gè)管線部分能夠從矢量寄存器215的臨時(shí)輸入寄存器309直接接收輸入。因此,每個(gè)管線301-305具有自己的輸入選擇器組。
管線部分能夠從輸入寄存器309接收輸入,但是它還能從其自身或從在同一管線中的不同管線部分接收輸入。這種輸入可能來自在管線部分中的中間級(jí)(intermediate stage),或者來自管線部分中的末級(jí)(final stage)。例如,F(xiàn)X管線部分318可能從序列改變部分317或從FP部分319接收輸入;其還可能直接從自己的輸出接收輸入,或從在自身中的中間級(jí)接收輸入。然而,F(xiàn)X管線部分318不能直接從管線301、302、304或305的任何部分接收輸入。這種輸入可以通過結(jié)合來自臨時(shí)輸入寄存器39的輸入一同接收。例如,給定的指令可能從VA和VC臨時(shí)輸入寄存器取得A和C操作數(shù)(由選擇器402和404選擇),并且從不同的管線部分的輸出取得B操作數(shù)(由選擇其403選擇)。當(dāng)執(zhí)行特定的串行操作時(shí),能夠從另一個(gè)管線部分或從同一管線部分的最終或中間級(jí)接收輸入的能力繞過了矢量寄存器文件215。
對(duì)于對(duì)應(yīng)于矢量寄存器文件215的字N的通用管線N部分401來說,A操作數(shù)選擇器402從字N的VA臨時(shí)輸入寄存器接收輸入。它還從字(N-1)的VA寄存器接收輸入。它還從管線N部分401的末級(jí)406接收輸入。對(duì)于一些管線部分,它還從管線N部分401的一個(gè)或多個(gè)中間級(jí)405接收輸入。最后,它還從在同一個(gè)管線中的其它管線部分的一個(gè)或多個(gè)最末或中間級(jí)接收輸入,即,對(duì)應(yīng)于寄存器文件215的相同的字,如果管線N部分401在冗余管線中,則從在冗余管線中的其它部分接收輸入。
對(duì)于B操作數(shù)選擇器403和C操作數(shù)選擇器404來說相同的一般說明是正確的。B選擇器403除接收其它輸入之外,還接收字N的VB寄存器的輸入和字(N-1)的VB寄存器的輸入。寄存器C除接收其它輸入之外,還接收字N的VC寄存器的輸入和字(N-1)的VC寄存器的輸入。
雖然選擇器402-404的每一個(gè)的輸入的數(shù)量被表示為與在圖4中相同,實(shí)際上并非必須如此,并且某些中間或最末管線級(jí)可以被某些選擇器而不是其它的選擇器使用。然而,一般每個(gè)選擇器402-404將接收6個(gè)(half dozen)或更多的輸入??梢钥闯鋈绻芫€陣列216不包含冗余管線,并不具有數(shù)據(jù)移位的能力,則選擇器402將不會(huì)從字(N-1)的VA寄存器接收輸入,但是還將接收所有其它的輸入,并且對(duì)于選擇器403和404來說也是類似。因此,選擇字N或字N+1作為輸入的用于把數(shù)據(jù)移位到相鄰管線的選擇邏輯被結(jié)合在已經(jīng)存在的選擇邏輯中。添加冗余路徑選擇的效果在于每個(gè)選擇器402-404的輸入數(shù)量加一(例如,從7加到8)。一般,這個(gè)量在通過選擇邏輯在傳輸延遲時(shí)間上是個(gè)可忽略的影響。
輸出選擇邏輯308執(zhí)行相反的類似工作。一個(gè)單獨(dú)的選擇器(示出了其兩個(gè)407和408)和每個(gè)VT字寄存器310相關(guān)聯(lián)。選擇器407到選擇字(N-1)的目的地寄存器VT的輸入,而選擇器408到選擇字N的VT的輸入。向選擇器407和408提供管線N部分401的末級(jí)的輸出。選擇器407還接收相應(yīng)的字(N-1)的管線部分的末級(jí),而選擇器408還接收相應(yīng)的字(N+1)的管線部分的末級(jí)。由于每次序列改變,在字N的管線中的FX和FP管線部分具有一個(gè)末級(jí),每個(gè)這種末級(jí)都被輸入到選擇器407和408。此外,一個(gè)或多個(gè)中間級(jí)可以被輸入到選擇器407和408。因此,為了支持把數(shù)據(jù)從一個(gè)管線移位到另一個(gè),選擇器407、408的每個(gè)的輸入數(shù)量都翻倍了。選擇器407具有來自與字(N-1)相關(guān)聯(lián)的管線和與字N相關(guān)聯(lián)的管線的一整組輸入,而選擇器408具有來自與字N和字(N+1)相關(guān)的管線的一整組輸入。雖然每個(gè)選擇器的輸入數(shù)量都翻倍了,在一個(gè)管線和另一個(gè)管線之間的選擇還是被結(jié)合到選擇邏輯中,否則該選擇邏輯被用來作為從同一管線的不同級(jí)或部分中選擇輸出的選擇邏輯。由于在關(guān)鍵路徑上只有一個(gè)選擇器門延遲,所以對(duì)于與管線級(jí)輸出的選擇器串聯(lián)的獨(dú)立雙向選擇器,選擇器輸入的翻倍被認(rèn)為是最優(yōu)的。
圖5說明了根據(jù)優(yōu)選實(shí)施例的控制把數(shù)據(jù)移位到相鄰管線的硬件控制邏輯。如圖5所示,相應(yīng)硬件錯(cuò)誤檢測(cè)寄存器501-505分別和每個(gè)管線301-305相關(guān)聯(lián)。硬件錯(cuò)誤檢測(cè)寄存器501-505向解碼器506提供輸入。此外,包含矢量/圖形單元214的狀態(tài)(status)和控制信息的特殊矢量/圖形單元控制寄存器507包括一個(gè)輸入到解碼器506的修復(fù)使能(enable)比特(RE)。該RE比特被用來在管線故障的情況下使能/禁止數(shù)據(jù)移位;“1”表示能夠進(jìn)行移位。雖然希望移位是使能的,但在某些應(yīng)用中,特別是當(dāng)用于測(cè)試的目的時(shí),有可能希望禁止移位。解碼器506使用這些不同的輸入來產(chǎn)生用于使能/禁止管線301-305的時(shí)鐘以及用于控制選擇器307和308的控制信號(hào)。
在優(yōu)選實(shí)施例中,寄存器501-505的每一個(gè)包含指示在相應(yīng)的管線中是否檢測(cè)到無法接受的硬錯(cuò)誤的相應(yīng)的硬錯(cuò)誤比特(分別指定為HF0-HF4),即管線被認(rèn)為無法操作。寄存器501-505的每一個(gè)可以另外包括用于記錄軟錯(cuò)誤的一個(gè)或多個(gè)比特。在優(yōu)選實(shí)施例中,通過在管線的各級(jí)檢查數(shù)據(jù)量的奇偶來檢測(cè)錯(cuò)誤條件。一個(gè)孤立的奇偶錯(cuò)誤可以被認(rèn)為是“軟”錯(cuò)誤,但是如果該奇偶錯(cuò)誤在重試操作后重復(fù),或者如果該孤立的奇偶錯(cuò)誤以無法接受的頻率出現(xiàn),則該錯(cuò)誤條件將被認(rèn)為是一個(gè)“硬”錯(cuò)誤,意味著該管線無法操作,并且在寄存器501-505之一設(shè)置相應(yīng)的硬錯(cuò)誤比特。
也可以使用其它用于檢測(cè)錯(cuò)誤條件的技術(shù)以作為奇偶校驗(yàn)的補(bǔ)充或用來替代奇偶校驗(yàn)。在現(xiàn)有技術(shù)中已知有各種這樣的技術(shù),并且能夠使用任何這些不同的技術(shù)或此后開發(fā)的任何技術(shù)來檢測(cè)錯(cuò)誤條件。例如,特殊硬件能夠檢測(cè)到無效的機(jī)器狀態(tài);選擇性的微代碼指令可以用測(cè)試數(shù)據(jù)來運(yùn)行(exercise)未使用的管線來檢驗(yàn)功能;低層系統(tǒng)軟件能夠通過在空閑機(jī)器周期的管線測(cè)試數(shù)據(jù);等等。
解碼器產(chǎn)生用于選擇邏輯307、308的控制信號(hào)W、X、Y和Z,用于分別使能管線301-305的時(shí)鐘的管線使能信號(hào)Pipe0 En、Pipel En、Pipe2 En、Pipe3 En和Pipe4 En,和一個(gè)矢量/圖形單元故障(V_Fail)信號(hào)。如果超過一個(gè)管線記錄到硬錯(cuò)誤,或者主要管線之一記錄到硬錯(cuò)誤并且未設(shè)置修復(fù)使能比特,則產(chǎn)生一個(gè)V_Fail信號(hào)。在這種情況下,圖形單元的操作被認(rèn)為是不穩(wěn)定的。根據(jù)下列等式邏輯產(chǎn)生V_FailV_Fail=(HF0與HF1)或(HF0與HF2)或(HF0與HF3)或(HF0與HF4)或(HF1與HF2)或(HF1與HF3)或(HF1與HF4)或(HF2與HF3)或(HF2與HF4)或(HF3與HF4)或(HF0與<RE>)或(HF1與<RE>)或(HF2與<RE>)或(HF3與<RE>)根據(jù)下列等式產(chǎn)生選擇控制信號(hào)X、Y和ZW=HF0與<V_Fail>與REX=(HF0與<V_Fail>與RE)或(HF1與<V_Fail>與RE)Y=(HF0與<V_Fail>與RE)或(HF1與<V_Fail>與RE)或(HF2與<V_Fail>與RE)
Z=(HF0與<V_Fail>與RE)或(HF1與<V_Fail>與RE)或(HF2與<V_Fail>與RE)或(HF3與<V_Fail>與RE)換句話說,如果RE是“1”(數(shù)據(jù)移位是使能的)并且V_Fail是“0”(未檢測(cè)到無法恢復(fù)的硬故障),則每個(gè)所選信號(hào)指示任何在先管線是否發(fā)生故障(并因此應(yīng)當(dāng)移位)。類似地產(chǎn)生管線使能信號(hào)Pipe0En=<HF0>或<V_Fail>或REPipelEn=<HF1>或<V_Fail>或REPipe2En=<HF2>或<V_Fail>或REPipe3En=<HF3>或<V_Fail>或REPipe4En=Z并且因此如果主要管線發(fā)生了故障,并且V_Fail是off,并且RE被設(shè)置成on(使能數(shù)據(jù)移位),則主要管線的時(shí)鐘將被中斷(disable)而其數(shù)據(jù)被移位到另一個(gè)管線。中斷時(shí)鐘降低了在主要管線的功率的消耗。
雖然對(duì)解碼器的描述是根據(jù)其實(shí)現(xiàn)的邏輯功能進(jìn)行的,應(yīng)當(dāng)理解實(shí)際電路的實(shí)現(xiàn)可以使用并非上面的等式的直接翻譯的最優(yōu)化。
如上面關(guān)于圖4的說明,選擇邏輯307、308實(shí)際上是結(jié)合在用于在各種輸入和輸出中進(jìn)行選擇以產(chǎn)生N-路選擇的選擇邏輯中,其中N大于等于2。因此,選擇控制信號(hào)X、Y和Z僅僅是N-路選擇的控制信號(hào)中的一些,根據(jù)由管線執(zhí)行的操作產(chǎn)生其余的信號(hào)。
在操作中,使用任何上述的技術(shù)持續(xù)或定期的監(jiān)控矢量/圖形單元管線,并在相應(yīng)的硬錯(cuò)誤檢測(cè)寄存器中記錄在一個(gè)管線中的硬錯(cuò)誤。如果滿足了數(shù)據(jù)移位的條件,則清理(flush)管線,中斷檢測(cè)到錯(cuò)誤的管線,使能冗余管線,并且選擇邏輯被設(shè)置成移位數(shù)據(jù)以繞過故障管線。然后重啟管線。這些操作可以完全以硬件來實(shí)現(xiàn),不需要操作系統(tǒng)的介入。
系統(tǒng)響應(yīng)V_Fail信號(hào)所采取的行動(dòng)可以不同。在優(yōu)選的系統(tǒng)環(huán)境中,可以把包含任何矢量/圖像單元指令的所有執(zhí)行線程分配給不同的處理器,以便使產(chǎn)生V_Fail的處理器繼續(xù)操作,但是僅僅處理沒有任何矢量/圖像指令的執(zhí)行線程。圖6說明了這樣的一個(gè)系統(tǒng)環(huán)境。如圖6所示,3個(gè)處理器601-603的每一個(gè)包含一組主要管線和一個(gè)冗余管線。由每個(gè)解碼器產(chǎn)生的V_Fail信號(hào)被提供給全局故障修復(fù)控制邏輯604,其可以是在一個(gè)諸如服務(wù)處理器的分離的處理單元中。
在處理器601,Pipe3被中斷,而冗余管線Pipe4接替它的操作。否則處理器601繼續(xù)正常執(zhí)行。在處理器603,中斷Pipel和Pipe3,導(dǎo)致處理器602的V_Fail被激活。結(jié)果,全局故障修復(fù)控制邏輯產(chǎn)生一個(gè)低層軟件錯(cuò)誤修復(fù)代碼的捕捉器(trap)。該軟件錯(cuò)誤修復(fù)代碼導(dǎo)致任何具有矢量/圖形指令(使用矢量/圖形管線)的任務(wù)被換出處理器602。處理器602繼續(xù)執(zhí)行不包含這樣的指令的線程。
作為進(jìn)一步的替換,可以通過串行化管線操作僅僅使用可用管線來繼續(xù)操作處理器602。在圖6的例子中,Pipe0和Pipel的數(shù)據(jù)可以被載入矢量寄存器的字0和字2。因此每個(gè)矢量/圖形指令將需要另外的時(shí)間來完成,但是處理器能夠執(zhí)行這樣的指令。需要附加的控制硬件和/或軟件來支持這種模式的操作。
在其它多處理器架構(gòu)中,可能需要中斷產(chǎn)生V_Fail信號(hào)的處理器。如果系統(tǒng)只包含一個(gè)處理器,則V_Fail信號(hào)可能會(huì)導(dǎo)致系統(tǒng)故障。
如上所述,提供了一種用于在單一處理器中的主要管線陣列的單一冗余管線。在處理器具有4個(gè)主要管線的情況下,提供了硬件的第五管線,增加了25%的管線硬件。雖然只有該管線是冗余的,并不意味著在處理器中電路的總數(shù)量增加了25%,這仍然是一筆顯著的硬件開銷。
圖7是根據(jù)本發(fā)明的一個(gè)替換實(shí)施例的具有多處理器核心和一個(gè)共享的冗余管線的集成電路芯片的高層圖。參照?qǐng)D7,單一的集成電路芯片720包括兩個(gè)處理器核心701、702。每個(gè)處理器核心包含其自己的指令單元和執(zhí)行單元、能夠獨(dú)立于在芯片720上的其它處理器核心來處理線程。處理器701和702能夠共享諸如L2高速緩存的一些部件712。
處理器701包括矢量/圖形主要管線703-706,而處理器702包括矢量/圖形主要管線708-711。雖然所述管線未必被按比例畫出,但是管線的物理配置大約如所示。冗余管線707位于沿著兩個(gè)處理器核心的結(jié)合位置,并且和處理器701的Pipe3 706以及處理器702的Pipe3 708相鄰。在正常的操作中,不使用冗余管線707。在任何一個(gè)處理器核心的任何管線發(fā)生故障的情況下,來自那個(gè)處理器的數(shù)據(jù)被移位到冗余管線707,如上所述在單一的處理器的情況下。在處理器核心之間運(yùn)行的一對(duì)附加的控制信號(hào)(未示出)被添加以保證其它的處理器沒有已經(jīng)在使用該冗余管線。
在優(yōu)選實(shí)施例中,處理器包含多個(gè)主要管線和一個(gè)冗余管線。然而,在替換實(shí)施例中,處理器可能只包含一個(gè)主要管線。這個(gè)實(shí)施例可能并不太具有吸引力,因?yàn)槿哂嗟墓芫€沒有被共享,并且因此需要用于冗余的管線容量的翻倍。但是,如果如圖7中的替換實(shí)施例,在單個(gè)芯片上的多個(gè)處理器核心之間共享一個(gè)冗余管線,增加的冗余管線的開銷被分散到多個(gè)處理器,減少了每個(gè)處理器的開銷。例如,單個(gè)芯片可能包含兩個(gè)處理器核心,每個(gè)具有單一的專用管線,以及一個(gè)冗余的第三管線,并且在發(fā)生通常分配給那個(gè)處理器核心的管線無法操作的情況下可以由任何一個(gè)處理器核心使用。
在上述的優(yōu)選實(shí)施例中,冗余已經(jīng)被應(yīng)用到處理器的矢量/圖形子單元的多個(gè)并行管線。然而,應(yīng)當(dāng)理解與一組平行管線相關(guān)的冗余管線可以被用于其它的情形(context)。特別是,根據(jù)本發(fā)明的處理器不需要具有矢量/圖形子單元,并且可以實(shí)現(xiàn)一組并行管線作為主執(zhí)行單元的一部分。而且,并行管線可以被包含在其它單元中并且執(zhí)行其它功能。例如,一個(gè)指令單元可以具有一組用于支持多個(gè)執(zhí)行線程或用于支持多個(gè)分支條件的并行指令取來和解碼管線。而且,雖然在優(yōu)選實(shí)施例中,提供了包括冗余序列改變的部分、冗余FX部分和冗余FP部分的整個(gè)冗余管線,應(yīng)當(dāng)理解冗余可以被應(yīng)用于硬件的某些更小的部分。例如,可能只有FX部分和FP部分具有冗余。
在優(yōu)選實(shí)施例中,把一個(gè)單一的管線指定成冗余管線,而其它的管線為主要管線并且缺省設(shè)置為在使用中,在沒有管線故障的情況下,冗余的管線是空閑的。在一個(gè)替換實(shí)施例中,在沒有管線故障的情況下可以采用循環(huán)方式來輪換(rotate)所述空閑管線,以便沒有一個(gè)管線總是空閑。通過輪換空閑的管線,每個(gè)管線只被使用80%的時(shí)間。這減少了主要管線中的平均功率消耗,并且可以允許管線在一個(gè)較低的溫度下操作??梢栽谥芷诘幕A(chǔ)上執(zhí)行所述輪換,例如,大約每毫秒,或者當(dāng)達(dá)到了某些管線的指令計(jì)數(shù)之后。所述輪換將要求管線被清理,因此失去幾個(gè)時(shí)鐘周期的執(zhí)行,但是如果其大約在每毫秒被執(zhí)行,對(duì)于性能的影響將可以被忽略。
在優(yōu)選實(shí)施例中,提供了一個(gè)冗余的管線,但是作為替換也可以提供多個(gè)冗余管線,所述管線可以是單一處理器的一部分,或是由圖7中所示的不止一個(gè)處理器來共享。
雖然參照特定的替換例說明了本發(fā)明的特定實(shí)施例,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解在所附的權(quán)利要求的范圍內(nèi)可以進(jìn)行另外的形式上和細(xì)節(jié)上的變化。
權(quán)利要求
1.一種數(shù)字?jǐn)?shù)據(jù)處理裝置,其包括至少一個(gè)處理器,每個(gè)所述至少一個(gè)處理器執(zhí)行處理器可以執(zhí)行的指令的至少一個(gè)相應(yīng)線程,所述至少一個(gè)處理器共同包括(a)多個(gè)并行管線,所述多個(gè)并行管線的每一個(gè)管線具有對(duì)相應(yīng)的輸入數(shù)據(jù)執(zhí)行一則預(yù)先確定的功能的能力;和(b)控制邏輯,用于控制數(shù)據(jù)向所述多個(gè)并行管線的路由,其中所述控制邏輯響應(yīng)于檢測(cè)到所述多個(gè)并行管線的第一管線的故障,導(dǎo)致想要由所述第一管線處理的數(shù)據(jù)由所述多個(gè)并行管線的第二管線處理。
2.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理裝置,其中所述多個(gè)并行管線包括至少一個(gè)冗余管線。
3.如權(quán)利要求2所述的數(shù)字?jǐn)?shù)據(jù)處理裝置,其中所述多個(gè)并行管線包括N個(gè)主要管線和一個(gè)冗余管線,所述冗余管線在所述N個(gè)主要管線中的任何一個(gè)發(fā)生故障的情況下提供冗余功能,其中N大于等于1。
4.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理裝置,其中所述控制邏輯包括在每個(gè)相應(yīng)的管線的一個(gè)或多個(gè)輸入的選擇邏輯,所述選擇邏輯控制在用于相應(yīng)管線的管線數(shù)據(jù)的主要來源和備用來源之間的選擇。
5.如權(quán)利要求4所述的數(shù)字?jǐn)?shù)據(jù)處理裝置,其中所述選擇邏輯與用于相應(yīng)管線的一個(gè)或多個(gè)級(jí)的操作數(shù)來源選擇邏輯結(jié)合在一起。
6.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理裝置,其中所述至少一個(gè)處理器是多個(gè)處理器,所述多個(gè)處理器共享所述多個(gè)并行管線的至少一個(gè)。
7.如權(quán)利要求6所述的數(shù)字?jǐn)?shù)據(jù)處理裝置,其中所述多個(gè)處理器共享所述多個(gè)并行管線的一個(gè)冗余管線。
8.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理裝置,其中所述多個(gè)管線被配置在一個(gè)陣列中;所述控制邏輯,響應(yīng)于檢測(cè)到在所述第一管線中的故障,導(dǎo)致想要由所述第一管線處理的數(shù)據(jù)由所述第二管線處理,所述第二管線在所述陣列中與所述第一管線在物理上相鄰;和所述控制邏輯,響應(yīng)于檢測(cè)到在所述第一管線中的故障,進(jìn)一步導(dǎo)致想要由所述第二管線處理的數(shù)據(jù)由所述多個(gè)并行管線的第三管線處理,所述第三管線在所述陣列中與所述第二管線在物理上相鄰。
9.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理裝置,其中所述多個(gè)并行管線對(duì)浮點(diǎn)數(shù)據(jù)執(zhí)行算術(shù)運(yùn)算。
10.如權(quán)利要求9所述的數(shù)字?jǐn)?shù)據(jù)處理裝置,其中所述多個(gè)并行管線對(duì)包括浮點(diǎn)數(shù)據(jù)和定點(diǎn)數(shù)據(jù)的混合數(shù)據(jù)執(zhí)行算術(shù)運(yùn)算。
11.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理裝置,其還包括多個(gè)處理器;用于在所述多個(gè)處理器上執(zhí)行的存儲(chǔ)器存儲(chǔ)指令;和至少一個(gè)把所述多個(gè)處理器連接到所述存儲(chǔ)器的總線。
12.一種處理器,其包括多個(gè)并行管線,所述多個(gè)并行管線的每個(gè)管線具有對(duì)相應(yīng)的輸入數(shù)據(jù)執(zhí)行一組預(yù)先確定的功能的能力,所述多個(gè)并行管線包括至少一個(gè)冗余管線;和控制邏輯,用于控制數(shù)據(jù)向所述多個(gè)并行管線的路由,其中所述控制邏輯響應(yīng)于檢測(cè)到所述多個(gè)并行管線的第一管線的故障,導(dǎo)致想要由所述第一管線處理的數(shù)據(jù)由所述多個(gè)并行管線的第二管線處理。
13.如權(quán)利要求12所述的處理器,其中所述多個(gè)并行管線包括N個(gè)主要管線和一個(gè)冗余管線,所述冗余管線在所述N個(gè)主要管線中的任何一個(gè)發(fā)生故障的情況下提供冗余功能,其中N大于等于1。
14.如權(quán)利要求12所述的處理器,其中所述控制邏輯包括在每個(gè)相應(yīng)的管線的一個(gè)或多個(gè)輸入的選擇邏輯,所述選擇邏輯控制在用于相應(yīng)管線的管線數(shù)據(jù)的主要來源和備用來源之間的選擇。
15.如權(quán)利要求14所述的處理器,其中所述選擇邏輯與用于相應(yīng)管線的一個(gè)或多個(gè)級(jí)的操作數(shù)來源選擇邏輯結(jié)合在一起。
16.如權(quán)利要求12所述的處理器,其中,所述多個(gè)管線被配置在一個(gè)陣列中;所述控制邏輯,響應(yīng)于檢測(cè)到在所述第一管線中的故障,導(dǎo)致想要由所述第一管線處理的數(shù)據(jù)由所述第二管線處理,所述第二管線在所述陣列中與所述第一管線在物理上相鄰;和所述控制邏輯,響應(yīng)于檢測(cè)到在所述第一管線中的故障,進(jìn)一步導(dǎo)致想要由所述第二管線處理的數(shù)據(jù)由所述多個(gè)并行管線的第三管線處理,所述第三管線在所述陣列中與所述第二管線在物理上相鄰。
17.如權(quán)利要求12所述的處理器,其中所述多個(gè)并行管線對(duì)浮點(diǎn)數(shù)據(jù)執(zhí)行算術(shù)運(yùn)算。
18.如權(quán)利要求17所述的處理器,其中所述多個(gè)并行管線對(duì)包括浮點(diǎn)數(shù)據(jù)和定點(diǎn)數(shù)據(jù)的混合數(shù)據(jù)執(zhí)行算術(shù)運(yùn)算。
全文摘要
本發(fā)明公開一種具有能夠在檢測(cè)到故障的情況下,把第一管線替換成第二管線的能力的多并行管線數(shù)字處理裝置。最好的,由多個(gè)主要管線共享一個(gè)冗余管線。最好的,所述管線在一個(gè)陣列中在物理上互相相鄰。一個(gè)管線故障導(dǎo)致數(shù)據(jù)在管線的陣列中移位一個(gè)位置,以繞過故障管線,從而每個(gè)管線只有兩個(gè)數(shù)據(jù)來源,即主要來源和備用來源。最好的,控制在管線數(shù)據(jù)的主要來源和備用來源之間的選擇的選擇邏輯與其它管線操作數(shù)選擇邏輯結(jié)合在一起。
文檔編號(hào)G06F9/38GK1598762SQ20041004939
公開日2005年3月23日 申請(qǐng)日期2004年6月9日 優(yōu)先權(quán)日2003年9月18日
發(fā)明者戴維·A·盧克 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1