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

實(shí)時(shí)系統(tǒng)的容錯(cuò)處理器的制造方法

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