實時系統(tǒng)的容錯處理器的制造方法
【專利摘要】本發(fā)明涉及實時系統(tǒng)的容錯處理器。描述了使用在兩個或多于兩個不同的線程中運行的指令的時間和/或空間分離的容錯多線程處理器。指令由兩個或多于兩個線程中的每個取出、解碼并執(zhí)行以針對兩個或多于兩個線程中的每個產(chǎn)生一個結果。然后使用比較硬件邏輯來比較這些結果,且如果在所得到的結果之間有不匹配,則錯誤或事件產(chǎn)生。該比較被在逐個指令基礎上執(zhí)行,使得錯誤被快速地識別(且因此可被解決)。
【專利說明】實時系統(tǒng)的容錯處理器
[0001 ] 背景
[0002]容錯系統(tǒng)是被設計成甚至在存在一些錯誤的情況下也繼續(xù)工作的系統(tǒng)。這樣的系統(tǒng)因此可涉及錯誤檢查機制的冗余和使用。在實時容錯系統(tǒng)中,在計算中的錯誤可被快速識別并解決很重要。實時容錯系統(tǒng)可以例如被用在這樣的系統(tǒng)中:其中安全是關鍵的(例如汽車、飛機、航天器或核電站的控制系統(tǒng))、其中維護是頻繁的(例如對于太空應用例如在衛(wèi)星上)或其中錯誤可能有嚴重的后果(例如在金融系統(tǒng)中)。在所有這些應用中,錯誤需要被盡可能快地(例如實時地)識別和解決,因為以后矯正它們可能是不可行的或不可能的。
[0003]下面所述的實施方式不限于解決已知的容錯處理器的任何或所有缺點的實現(xiàn)。
[0004]概述
[0005]本概述被提供來以簡化的形式介紹一系列概念,其在下面在詳細描述中被進一步描述。這個概述并不打算識別所要求保護的主題的關鍵特征或本質特征,也不打算用作在確定所要求保護的主題的范圍時的幫助。
[0006]描述了使用在兩個或多于兩個不同的線程中運行的指令的時間和/或空間分離的容錯多線程處理器。指令由兩個或多于兩個線程中的每個取出、解碼并執(zhí)行以為兩個或多于兩個線程中的每個產(chǎn)生結果。然后使用比較硬件邏輯來比較這些結果,并且如果在所得到的結果之間有不匹配,則錯誤或事件產(chǎn)生。該比較在逐個指令基礎上被執(zhí)行,使得錯誤被快速識別(且因此可被解決)。
[0007]第一方面提供多線程處理器,其包括:調度器,其被在硬件邏輯中實現(xiàn)并被在第一操作模式中布置為引起使程序中的指令由多個線程中的每個取出;執(zhí)行級,其被在硬件邏輯中實現(xiàn)并被在第一操作模式中被布置為執(zhí)行指令的每個被取出的實例以產(chǎn)生指令的多個結果,多個線程中的每個線程一個結果;以及比較硬件邏輯,其被在第一操作模式中被布置為比較指令的多個結果以確定是否所有結果都匹配。
[0008]第二方面提供操作多線程處理器的方法,其包括:由多個線程中的每個取出程序中的指令;執(zhí)行指令的每個被取出的實例以產(chǎn)生指令的多個結果,多個線程中的每個線程一個結果;以及比較多個結果。
[0009]另外的方面提供:在其上編碼有用于產(chǎn)生如本文所述的處理器的計算機可讀程序代碼的計算機可讀存儲介質;在其上存儲有計算機可讀指令的非暫時性計算機可讀存儲介質,所述指令當在計算機系統(tǒng)處被執(zhí)行用于根據(jù)電路元件的定義和定義用于組合那些電路元件的規(guī)則的數(shù)據(jù)產(chǎn)生數(shù)字電路的表示時引起計算機系統(tǒng)產(chǎn)生如本文所述的處理器;以及在其上編碼有用于產(chǎn)生被配置成執(zhí)行本文所述的方法的處理器的計算機可讀程序代碼的計算機可讀存儲介質。
[0010]如將對技術人員明顯的是,優(yōu)選特征可在適當時進行組合,并可與本發(fā)明的任何方面進行組合。
[0011]附圖簡述
[0012]將參考以下的附圖通過示例的方式來描述本發(fā)明的實施方式,在附圖中:
[0013]圖1示出示例容錯多線程有序處理器的示意圖;
[0014]圖2是示出例如在圖1中示出的處理器的多線程處理器的示例容錯操作模式的流程圖;以及
[0015]圖3示出來自圖1中所示的處理器的比較硬件邏輯的示例實現(xiàn)的示意圖。
[0016]公共參考數(shù)字在全部附圖中用于指示類似的特征。
[0017]詳細描述
[0018]下面僅通過示例的方式來描述本發(fā)明的實施方式。這些示例表示
【申請人】當前已知的實施本發(fā)明的最佳方式,盡管它們不是以其這可被實現(xiàn)的僅有的方式。本描述闡述示例的功能和用于構造并操作示例的步驟的順序。然而,相同或等效的功能和順序可由不同的示例實現(xiàn)。
[0019]容錯處理器必須甚至在存在多個錯誤的情況下也繼續(xù)操作。在現(xiàn)有容錯處理器中使用的技術涉及使用多個處理器核心來執(zhí)行相同的代碼,其中結果在每個操作結束時被比較。如果結果不相同,則該比較用信號通知錯誤??蛇x地,在有多于兩個核心的場合,投票系統(tǒng)可用于決定哪個結果是正確的(即:其中由占多數(shù)的核心得到的結果被視為正確的結果)。
[0020]在本文描述了使用在單個處理器核心內的多線程(且特別是細粒度多線程)并使用在多線程處理器管線中的兩個不同線程中運行的指令的時間和/或空間分離的容錯處理器的可選設計。這導致在處理器的尺寸(或面積)和處理器的功率消耗兩者中的降低(與多個核心的使用相比較)。如下所述的容錯處理器因此可特別適合于在空間和/或功率被約束的情況下的應用(例如電池供電的便攜式計算設備、可穿戴的設備等);然而,它們還可被用在其它應用中。
[0021]圖1示出實現(xiàn)細粒度多線程并因而在每個循環(huán)上改變線程的示例容錯多線程有序處理器100的示意圖。在這個示例中,多線程處理器100是兩線程處理器(具有被表示為線程O和線程I的線程);然而,方法還可適用于具有不同數(shù)量的線程(例如四個或多于四個線程)的多線程處理器。
[0022]多線程處理器100包括多級管線,其包括取出級102、解碼級106、發(fā)布級111、執(zhí)行級109、存儲器存取級112(盡管這可在一些處理器中被省略)和寫回級114。執(zhí)行級109、存儲器存取級112(在被提供的情況下)和寫回級114被在線程之間共享,而在前端(包括取出級102、解碼級106和發(fā)布級111)中,一些元件(例如緩沖器)對每個線程是分離的(即重復的)。在各種示例中,解碼級106也可以是重復的,對每個線程有單獨的解碼級106。
[0023]取出級102被配置成從程序(以程序順序)取出如由程序計數(shù)器(PC)指示的指令。程序可被存儲在存儲器104(其可包括高速緩沖存儲器以減小訪問存儲器的時延)中。在取出級102內的調度器105(其可被稱為“管線調度器”)控制指令被取出的順序和由哪個線程取出。
[0024]解碼級106被布置成解譯已經(jīng)由取出級102取出的指令,且這一般涉及從一個或多個寄存器文件(FR)讀取,且在圖1中所示的示例中,為每個線程提供單獨的寄存器文件107、108。
[0025]發(fā)布級111選擇將被在每個循環(huán)執(zhí)行的線程并因而控制指令沿著管線被傳遞到執(zhí)行級109的順序。發(fā)布級111可因此被描述為包括第二調度器(其中第一調度器是在取出級102中的調度器105)。在一些處理器中,可省略這個發(fā)布級111(且在各種示例中,它可由共享的指令緩沖器來代替),使得指令以它們被取出的順序通過處理器管線繼續(xù)前進(且因而調度器105隱含地按其被執(zhí)行的順序來控制指令)。
[0026]執(zhí)行級109包括一個或多個功能(或執(zhí)行)單元110。每個功能單元110負責執(zhí)行指令,且功能單元可被配置成執(zhí)行特定類型的指令。例如,一個或多個功能單元110可以是加載/存儲單元、整數(shù)單元、浮點單元(FPU)、數(shù)字信號處理(SDP)/單指令多數(shù)據(jù)(snro)單元或乘積累加(MAC)單元。加載/存儲單元執(zhí)行加載和存儲存儲器指令,整數(shù)單元執(zhí)行整數(shù)指令,F(xiàn)PU執(zhí)行浮點指令,DSP/SIMD單元具有同時對多個數(shù)據(jù)點執(zhí)行相同的操作的多個處理元件,且MAC單元計算兩個數(shù)字的乘積并將該乘積加到累加器。功能單元和其中的管線可具有不同的長度和/或復雜度。例如,F(xiàn)PU管線一般比整數(shù)執(zhí)行管線長,因為它通常執(zhí)行更復雜的操作。
[0027]存儲器存取級112(在被實現(xiàn)的場合)被布置成執(zhí)行任何數(shù)據(jù)存儲器存取。
[0028]寫回級114(其還可被稱為提交級或分度單元(graduat1nunit))將指令的結果提交到寄存器/存儲器(例如到寄存器文件107、108)和/或將結果寫到輸出端(例如到輸出設備)。寫回級114包括比較硬件邏輯115,且該邏輯115的操作被在下面進行描述。
[0029]如圖1中所示以及提供單獨的寄存器文件107、108,單獨的寄存器116、117可用于為處理器110中的每個線程存儲當前PC,且單獨的指令緩沖器120、122可用于緩存在取出級和解碼級102、106之間的每個線程的指令。如上所述,在沒有第二調度器(在發(fā)布級111中)的情況下,可提供單個共享指令緩沖器(而不是單獨的指令緩沖器120、122)。
[0030]多線程處理器100還可包括不同于圖1中所示的那些功能元件的功能元件。將認識至IJ,其它處理器可以不包括圖1所示的所有功能元件(即圖1所示的功能元件中的一個或多個功能元件可被省略)。
[0031]圖1所示的處理器100可以以兩種操作模式進行操作:容錯模式(例如對于特定的程序)和非容錯或標準模式(例如對于其它程序),且在任何時間,可通過設置寄存器中的位或通過任何其它適當?shù)募夹g來選擇處理器操作的模式(即當前操作模式)。可選地,處理器100可以總是以容錯操作模式進行操作。
[0032]在非容錯或標準操作模式中,在程序中的每個指令由單個線程取出一次,且每個線程可從同一程序或從不同的程序取出指令。在這個標準操作模式中,如果處理器由于某個原因而被倒回或如果程序被執(zhí)行多于一次,則在程序中的指令僅被取出多于一次。
[0033]然而在容錯操作模式中,每個指令由兩個或多于兩個線程(例如由在圖1的處理器100中的線程O和線程I兩者)取出、解碼并隨后執(zhí)行,且在它們通過處理器管線繼續(xù)前進時,同一指令的不同實例(針對取出指令的每個線程一個實例)是交錯的。在各種示例中,每個指令可由M個線程取出,其中M 2 2,且處理器可包括N個線程,其中M,且僅僅為了下面描述的示例的目的,N=M = 2。只要已經(jīng)執(zhí)行同一指令的所有實例,就在寫回級114內的比較硬件邏輯115中比較執(zhí)行每個指令的結果(即通過執(zhí)行同一指令的M個實例中的每個而得到的M個結果),例如以最小化在錯誤出現(xiàn)和錯誤被識別出之間的任何延遲。下面參考圖2更詳細地描述容錯操作模式。
[0034]圖2是示出多線程處理器(例如圖1中所示的處理器100)的示例容錯操作模式的流程圖。在這個操作模式(其如上所述可以是處理器的唯一操作模式或處理器的多個可能的操作模式之一)中,例如在調度器105的控制下針對兩個或多于兩個線程單獨地取出每個指令(塊202)??衫鐝谋淮鎯υ诖鎯ζ髦?例如在空間上分離的位置處的存儲器104中)的同一程序的兩個(或更一般地,M個)單獨的副本取出指令,或可選地,可以只有被存儲在存儲器中的程序的單個副本,指令被從被存儲在該存儲器中的程序的單個副本取出多于一次(即M次),且錯誤糾正技術可被在存儲器內使用以處理出現(xiàn)在用于存儲程序的存儲器內的任何錯誤。
[0035]同一指令的兩個或多于兩個實例一個接一個地由不同的線程取出(S卩:其中每個線程取出同一指令的一個實例)(在塊202中)。在一些示例中,調度器可引起線程對每個指令以相同的順序取出指令的實例(例如指令I首先由線程O取出并接著由線程I取出,且然后指令2由線程O取出并接著由線程I取出),或順序可改變,只要所有實例被一個接一個地取出(例如指令I首先由線程O取出并接著由線程I取出,且然后指令2由線程I取出并接著由線程O取出)。
[0036]在各種示例中,同一指令的實例被嚴格地背對背地調度(即:一個接一個地,而在其間沒有任何其它指令);然而,在其它示例中,這可稍微放寬,使得它們被緊密地在一起進行調度(使得在提交結果并然后將它們寫到存儲器時的時延沒有明顯地增加),但不必一個接一個地緊接著被調度(例如,所有M個實例可被在M+ Δ個循環(huán)內調度,其中△是小整數(shù))。
[0037]一旦每個線程已經(jīng)取出指令的實例(在塊202中),則每個線程對指令的所取出的實例進行解碼(塊204,例如在解碼級106中,其中如果有必要,指令被緩存在指令緩沖器120、122中),且同一指令的實例然后被獨立地執(zhí)行以產(chǎn)生同一指令的多個結果(每個實例一個結果,且總共M個結果)(塊206)。在沒有第二調度器(例如在發(fā)布級111中)的情況下,每個指令的實例被實質上以與它們在管線調度器105的控制下被取出(在塊202中)的順序相同的順序執(zhí)行。
[0038]同一指令的多個(S卩M個)實例的執(zhí)行(在塊206中)可被描述為是前后緊接的,因為它們被一起并行地或一個接一個地運行。在很多示例實現(xiàn)中,M = 2(如圖1所示)。在其它示例實現(xiàn)中,M=3。然而將認識到1可以可選地是大于三的值。
[0039]一旦已經(jīng)執(zhí)行同一指令的所有實例(且因而產(chǎn)生結果),則例如在處理器管線的最后級(例如寫回級114)內的比較硬件邏輯115中對結果進行比較(塊208)。圖3示出這個比較硬件邏輯115的示例實現(xiàn)的示意圖,這個比較硬件邏輯115包括存儲當被產(chǎn)生時的進入的結果的一個或多個緩沖器302(例如M個緩沖器,每個被布置成存儲單個結果或一個緩沖器被布置成存儲M個結果或M-1個結果)和執(zhí)行結果的比較(在塊208中)的比較器邏輯304。
[0040]在所有結果(來自同一指令的每個實例)是相同的(在塊210中的“是”)的情況下,于是處理器可照常繼續(xù)并將結果提交給寄存器/存儲器和/或將結果寫到輸出設備(塊212)0
[0041]在結果不都是相同的(在塊210中的“否”)的情況下,于是在比較硬件邏輯115中的事件/錯誤觸發(fā)邏輯306可觸發(fā)事件和/或錯誤(塊214)。例如,可觸發(fā)內部管線事件或中斷(在塊214中),其引起處理器管線的清除(flushing)以及產(chǎn)生不匹配的結果的指令的重新取出和執(zhí)行(塊216),即處理器被倒回且針對特定的指令(其中所產(chǎn)生的結果不都是相同的)重復圖2的方法。
[0042]除了產(chǎn)生事件/錯誤以外或代替產(chǎn)生事件/錯誤(在塊214中),比較硬件邏輯115可使可以被稱為性能計數(shù)器的計數(shù)器遞增(塊218)。性能計數(shù)器可例如跟蹤出現(xiàn)的錯誤的數(shù)量,且這可用于觸發(fā)另外的事件(塊220)(例如在計數(shù)器值達到或超過閾值(在塊222中的“是”)的情況下錯誤標志或中斷的產(chǎn)生)。
[0043]在其中存在多于兩個線程且單個指令由多于兩個線程取出的處理器中,代替(或除了)產(chǎn)生事件/錯誤(在塊214中)和/或使性能計數(shù)器遞增(在塊218中),通過指令的占多數(shù)的實例的執(zhí)行而得到的結果可被當作是實際的(或正確的)結果并被提交給寄存器/存儲器和/或被寫到輸出設備(塊224)。
[0044]當在逐個指令基礎上執(zhí)行比較(在塊208中)時(即在每個指令已經(jīng)被執(zhí)行之后而不是在一組指令或整個程序已經(jīng)被執(zhí)行之后),可以更快地識別(并接著解決)可能在實時系統(tǒng)中特別重要的任何錯誤。例如,在無人駕駛汽車的控制中使用這樣的容錯處理器時,在錯誤可能引起故障或事故之前立即矯正錯誤很重要。
[0045]因為不同的線程(其執(zhí)行同一指令的不同實例)使用不同的寄存器,所以本文所述的方法將識別引起位在寄存器中翻轉的錯誤。
[0046]當對在處理器內的不同線程執(zhí)行同一指令的多個實例時,線程可在一些示例中共享高速緩沖存儲器,盡管在其它示例中,不同的線程可使用不同的高速緩沖存儲器。在高速緩沖存儲器被在線程之間共享的場合,時延可減小,因為如果執(zhí)行指令的實例的第一線程經(jīng)歷高速緩沖存儲器未中(miss),則執(zhí)行同一指令的其它實例的隨后的線程將經(jīng)歷高速緩沖存儲器命中。此外,在同一指令的實例被背對背調度的情況下,高速緩沖存儲器中的數(shù)據(jù)已經(jīng)發(fā)生變化(例如作為錯誤的結果)的可能性越小。錯誤糾正技術還可被在高速緩沖存儲器中使用以識別(且在一些情況下校正)任何錯誤。
[0047]在M>2的場合,可能使用投票技術(在塊224中)以在其中針對單個指令產(chǎn)生的所有的M個結果不匹配(S卩,它們不都是相同的)的情況下確定“正確的”結果(其是占多數(shù)的結果)。這減小必須使處理器管線清除并接著重新取出以及重新執(zhí)行指令的可能性。然而,當M被增加時,處理器的總處理量減小,且所以在各種示例中,可使用M=3。
[0048]為了實現(xiàn)上面所述的方法(例如容錯操作模式),處理器(例如圖1所示的處理器)包括在寫回級114中的附加的比較硬件邏輯115。此外,在管線中(例如在取出級102中且在一些示例中還在發(fā)布級111中)的一個或多個調度器(例如調度器105)被修改以通過不同的線程實現(xiàn)同一指令的不同實例的連續(xù)取出和執(zhí)行。只有對任何軟件的最小變化可能被需要。
[0049]雖然圖1示出有序多線程處理器100,但是將認識到,上面所述的方法還可被在無序處理器中實現(xiàn),只要同一指令的實例都被前后緊接地(例如并行地或連續(xù)地)實現(xiàn),且不被以不同的方式重新排序,因為這將在比較(在塊208中)可被執(zhí)行且任何錯誤可以被識別出之前增加相當大的延遲。
[0050]術語“處理器”和“計算機”在本文用于指具有處理能力使得它可執(zhí)行指令的任何設備或其部分。術語“處理器”可例如包括中央處理單元(CPU)、圖形處理單元(GPU或VPU)、物理處理單元(PPU)、無線電處理單元(RPU)、數(shù)字信號處理器(DSP)、通用處理器(例如通用GPU)、微處理器、被設計成加速在CPU外部的任務的任何處理單元等。本領域中的技術人員將認識到,這樣的處理能力被并入很多不同的設備內,且因此術語“計算機”包括機頂盒、媒體播放器、數(shù)字無線電裝置、PC、服務器、移動電話、個人數(shù)字助理和很多其它設備。
[0051 ]本領域中的技術人員將認識到,用于存儲程序指令的存儲設備可分布在整個網(wǎng)絡當中。例如,遠程計算機可存儲被描述為軟件的過程的示例。本地或終端計算機可訪問遠程計算機并下載軟件的一部分或全部以運行程序??蛇x地,本地計算機可按需要下載軟件的片段或執(zhí)行在本地終端處的一些軟件指令和在遠程計算機(或計算機網(wǎng)絡)處的一些軟件指令。本領域中的技術人員還將認識到,通過利用本領域中的技術人員已知的常規(guī)技術,軟件指令的全部或一部分可由專用電路(例如DSP、可編程邏輯陣列等)實現(xiàn)。
[0052]本文所述的方法可由被配置有軟件的計算機執(zhí)行,軟件是以被存儲在有形存儲介質上的機器可讀形式(例如以包括用于配置計算機來執(zhí)行所述方法的組成部分的計算機可讀程序代碼的計算機程序的形式或以包括適合于當程序被在計算機上運行時執(zhí)行本文所述的任何方法的所有步驟的計算機程序代碼模塊的計算機程序的形式),且其中計算機程序可被體現(xiàn)在計算機可讀存儲介質上。有形(或非暫時性)存儲介質的示例包括磁盤、拇指驅動器、存儲卡等,且并不包括傳播的信號。軟件可適合于在并行處理器或串行處理器上執(zhí)行,使得方法步驟可以被以任何適當?shù)捻樞蚧蛲瑫r執(zhí)行。
[0053]本文描述的硬件部件可由在其上編碼有計算機可讀程序代碼的非暫時性計算機可讀存儲介質產(chǎn)生。
[0054]還旨在包括“描述”或定義實現(xiàn)上面所述的模塊、功能、部件或邏輯的硬件的配置的軟件(例如HDL(硬件描述語言)軟件),如用于設計集成電路或用于配置可編程芯片以實現(xiàn)期望功能。也就是說,可提供計算機可讀存儲介質,其上編碼有用于產(chǎn)生被配置成執(zhí)行本文所述的任何方法的處理單元或用于產(chǎn)生包括本文所述的任何裝置的處理單元的計算機可讀程序代碼。也就是說,計算機系統(tǒng)可被配置成根據(jù)電路元件的定義和定義關于組合那些電路元件的規(guī)則的數(shù)據(jù)產(chǎn)生數(shù)字電路的表示,其中非暫時性計算機可讀存儲介質可在其上存儲有處理器可執(zhí)行指令,其當被在這樣的計算機系統(tǒng)處執(zhí)行時引起計算機系統(tǒng)產(chǎn)生如本文所述的處理單元。
[0055]存儲用于在實現(xiàn)所公開的方面時使用的機器可執(zhí)行數(shù)據(jù)的存儲器可以是非暫時性介質。非暫時性介質可以是易失性的或非易失性的。易失性非暫時性介質的示例包括基于半導體的存儲器,例如SRAM或DRAM??捎糜趯崿F(xiàn)非易失性存儲器的技術的示例包括光學和磁存儲器技術、閃存存儲器、相變存儲器、電阻式RAM。
[0056]對“邏輯”的特定提及指執(zhí)行一種功能或多種功能的結構。邏輯的示例包括被布置成執(zhí)行那些功能的電路。例如,這樣的電路可包括晶體管和/或在制造過程中可用的其它硬件元件。通過示例的方式,這樣的晶體管和/或其它元件可用于形成實現(xiàn)和/或包含存儲器(例如寄存器、觸發(fā)器或鎖存器、邏輯運算器(例如布爾運算、數(shù)學運算器(例如加法器、乘法器或移位器)))和互連的電路或結構。這樣的元件可被提供為定制電路或標準單元庫、宏或以其它抽象級??稍谔囟ǖ牟贾弥惺惯@樣的元件互連。邏輯可包括具有固定功能的電路,且電路可被編程以執(zhí)行一種功能或多種功能;這樣的編程可被從固件或軟件更新或控制機制提供。被識別為執(zhí)行一種功能的邏輯還可包括實現(xiàn)組成功能或子過程的邏輯。在示例中,硬件邏輯具有實現(xiàn)一個固定功能操作或多個固定功能操作、狀態(tài)機或過程的電路。
[0057]如對技術人員將明顯的是,本文給出的任何范圍或設備值可被擴展或改變而不失去所尋求的效果。
[0058]將理解,上面描述的益處和優(yōu)點可涉及一個實施方式或可涉及幾個實施方式。實施方式不限于解決任何或所有所陳述的問題的那些實施方式或具有任何或全部所陳述的益處和優(yōu)點的那些實施方式。
[0059]對“一個(an)”項的任何提及指的是那些項中的一項或多項。術語“包括”在本文用于意指包括所識別的方法塊或元件,但這樣的塊或元件并不包括排他列表,且裝置可包含額外的塊或元件,以及方法可包含額外的操作或元件。此外,塊、元件和操作本身并不隱含地是封閉的。
[0060]本文描述的方法的步驟可在適當時被以任何適當?shù)捻樞蚧蛲瑫r執(zhí)行。在附圖中的框之間的箭頭示出方法步驟的一個示例順序,但并不意欲排除其它順序或并行執(zhí)行多個步驟。此外,單獨的塊可被從任何方法刪除而不偏離本文描述的主題的精神和范圍。上面描述的任何示例的方面可與所描述的其它示例中的任一個示例的方面結合以形成另外的示例,而不失去所尋求的效果。在附圖的元件被示為由箭頭連接的場合,將理解的是,這些箭頭僅僅示出在元件之間的通信(包括數(shù)據(jù)和控制消息)的一個示例流。在元件之間的流可以在任一方向上或在兩個方向上。
[0061]將理解,僅通過示例的方式給出優(yōu)選實施方式的上述描述,以及各種修改可由本領域中的技術人員做出。雖然上文已經(jīng)以某個程度的特殊性或參考一個或多個單獨的實施例描述了各種實施例,但是本領域中的技術人員可以對所公開的實施例做出很多改變而不偏離本發(fā)明的精神或范圍。
【主權項】
1.一種多線程處理器(10),包括: 調度器(105),其被在硬件邏輯中實現(xiàn)并被在第一操作模式中布置成引起程序中的指令由多個線程中的每個取出; 執(zhí)行級(109),其被在硬件邏輯中實現(xiàn)并被在所述第一操作模式中布置成執(zhí)行所述指令的每個被取出的實例以產(chǎn)生所述指令的多個結果,所述多個線程中的每個線程一個結果;以及 比較硬件邏輯(115),其被在所述第一操作模式中布置成比較所述指令的所述多個結果以確定是否所有所述結果都匹配。2.根據(jù)權利要求1所述的多線程處理器,其中所述比較硬件邏輯還被在所述第一操作模式中布置成響應于確定所有所述結果不都匹配來觸發(fā)錯誤/事件。3.根據(jù)權利要求2所述的多線程處理器,其中所述錯誤/事件被布置成觸發(fā)所述執(zhí)行級的清除并觸發(fā)所述調度器來引起在所述程序中的所述指令被再次由所述多個線程中的每個取出。4.根據(jù)權利要求2所述的多線程處理器,其中所述錯誤/事件被布置成使在所述處理器內的性能計數(shù)器遞增。5.根據(jù)權利要求2所述的多線程處理器,其中所述多個線程包括多于兩個線程,且所述比較硬件邏輯還被在所述第一操作模式中布置成:響應于確定所有所述結果不都匹配,允許將在執(zhí)行所述指令的實例時由所述多個線程中的占多數(shù)的線程獲得的結果寫到寄存器、存儲器和/或輸出設備。6.根據(jù)權利要求1所述的多線程處理器,其中所述比較硬件邏輯還被在所述第一操作模式中布置成響應于確定所有所述結果都匹配而允許結果被寫到寄存器、存儲器和/或輸出設備。7.根據(jù)權利要求1所述的多線程處理器,其中所述比較硬件邏輯包括: 一個或多個緩沖器(302),其被布置成存儲所述指令的所述結果; 比較器硬件邏輯(304),其被配置成比較所述指令的所述結果;以及事件/錯誤觸發(fā)邏輯(306),其被布置成響應于所述比較器硬件邏輯識別出所述指令的所述結果不都是相同的而觸發(fā)錯誤/事件。8.根據(jù)權利要求1所述的多線程處理器,其中所述第一操作模式是容錯操作模式。9.根據(jù)前述權利要求中的任一項所述的多線程處理器,還包括第二操作模式,以及其中在所述第二操作模式中: 所述調度器被布置成引起程序中的指令由單個線程取出; 所述執(zhí)行級被布置成執(zhí)行所述指令的單個取出的實例以產(chǎn)生單個結果;以及 所述比較硬件邏輯被繞過。10.—種操作多線程處理器的方法,包括: 由多個線程中的每個取出程序中的指令(202); 執(zhí)行所述指令的每個被取出的實例以產(chǎn)生所述指令的多個結果,所述多個線程中的每個線程一個結果(206);以及 對所述多個結果進行比較(208)。11.根據(jù)權利要求10所述的方法,還包括: 響應于確定所述多個結果不匹配來觸發(fā)錯誤/事件(214)。12.根據(jù)權利要求11所述的方法,其中所述錯誤/事件被布置成觸發(fā)在所述處理器內的執(zhí)行級的清除并觸發(fā)在所述程序中的所述指令再次由所述多個線程中的每個取出。13.根據(jù)權利要求11所述的方法,其中所述錯誤/事件被布置成使在所述處理器內的性能計數(shù)器遞增。14.根據(jù)權利要求11所述的方法,其中所述多個線程包括多于兩個線程,且所述方法還包括: 響應于確定所有所述結果不都匹配而將由所述多個線程中的占多數(shù)的線程得到的結果寫到寄存器、存儲器和/或輸出設備(224)。15.根據(jù)權利要求10-14中的任一項所述的方法,還包括: 響應于確定所有所述結果都匹配而將所述結果寫到寄存器、存儲器和/或輸出設備(212)0
【文檔編號】G06F9/30GK106095390SQ201610245251
【公開日】2016年11月9日
【申請日】2016年4月19日 公開號201610245251.5, CN 106095390 A, CN 106095390A, CN 201610245251, CN-A-106095390, CN106095390 A, CN106095390A, CN201610245251, CN201610245251.5
【發(fā)明人】朱利安·貝利
【申請人】想象技術有限公司