欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

通過選擇重新執(zhí)行來檢測瞬態(tài)錯誤的制作方法

文檔序號:6570644閱讀:227來源:國知局

專利名稱::通過選擇重新執(zhí)行來檢測瞬態(tài)錯誤的制作方法
技術(shù)領(lǐng)域
:本發(fā)明的一些實施例涉及半導(dǎo)體器件中錯誤的檢測,更具體地說,涉及處理器中錯誤的檢測。
背景技術(shù)
:瞬態(tài)錯誤經(jīng)常稱為邏輯錯誤,構(gòu)成處理器中不斷增長的錯誤來源。由于器件尺寸的縮小和工作電壓的降低,這些器件更容易受到宇宙粒子的撞擊和參數(shù)變化的傷害。這樣的事件可能使瞬態(tài)錯誤發(fā)生,后者隨機(jī)發(fā)生而且可能影響處理器所實現(xiàn)的執(zhí)行。隨著各代半導(dǎo)體生產(chǎn)工藝的發(fā)展,對邏輯錯誤越加敏感。人們已經(jīng)釆用某些機(jī)制來修正這些邏輯錯誤。通常,這些措施包括為數(shù)據(jù)的冗余操作提供冗余途徑。然而,這樣的冗余途徑可能顯著地增加處理器的體積和功耗,導(dǎo)致其效率惡化。另一方面,某些解決方案引導(dǎo)多線程方式同時進(jìn)行(SMT"同時多線程"),以檢測錯誤。采用這樣的解決方案,臨時地編程為或組織成兩個獨立執(zhí)行的路徑(例如,SMT核的兩個線程)。所得到的數(shù)據(jù)進(jìn)行對比,以核實其一致性。若結(jié)果不一致,則就是邏輯錯誤的跡象,且該錯誤被檢測出。但是,在錯誤檢測上依賴于某些物理部件或硬件,而不是運行其它處理過程,且在對結(jié)果的比較和線程的協(xié)調(diào)提供支持時存在復(fù)雜性,處理效率惡化顯著。圖1是表示本發(fā)明一個實施例的方法的流程圖2是表示本發(fā)明一個實施例的一般處理器的體系結(jié)構(gòu)或結(jié)構(gòu)的框圖3另_表示本發(fā)明一個實施例的處理器的框圖,圖4是表示本發(fā)明一個實施例的多處理器系統(tǒng)的框圖;而圖5是表示本發(fā)明一個實施例的適合于新的選擇指令執(zhí)行的處理器的一部分的框圖。具體實施例方式在各實施例中,處理器中的邏輯錯誤可凈支檢測,并可采取適當(dāng)?shù)拇胧﹣硇拚@樣的錯誤。所述邏輯錯誤的檢測可以在盡可能不增大復(fù)雜性或功耗的情況下實現(xiàn)。另一方面,一些實施例可利用現(xiàn)有的處理器結(jié)構(gòu)來完成錯誤的檢測。或者,可增加最小數(shù)量的附加物理裝置或硬件即可實現(xiàn)邏輯錯誤的檢測。為了實現(xiàn)邏輯錯誤的檢測,可以根據(jù)不同的參數(shù)在該處理器序列的一個分段,有選擇地重現(xiàn)或重新執(zhí)行一些指令。例如,可以有選擇地只重現(xiàn)那些特別可能出現(xiàn)邏輯錯誤(例如,根據(jù)其大小和/或在處理器中時間的長短)的指令。用這種方式可以在對效率影響最小的情況下檢測數(shù)量相當(dāng)大的邏輯錯誤。根據(jù)本發(fā)明一個實施例,邏輯錯誤的檢測可以用不同方式實施。在某些實施例中,可以借助于一種或多種檢測錯誤的算法,用現(xiàn)有的處理器結(jié)構(gòu)來完成邏輯錯誤的檢測。在其他實施例中,在處理器中可以具有檢測邏輯錯誤用控制器和邏輯元件和/或附加的功能。在一個高的層次上,邏輯錯誤的檢測可以這樣實施,識別處理器序列的一個分段中對邏輯錯誤特別脆弱的指令,并重新執(zhí)行這些指令。若最初的指令執(zhí)行結(jié)果和該指令重新執(zhí)行的結(jié)果一致,則指示沒有任何邏輯錯誤。反之,若結(jié)果不同,則指示有邏輯錯誤,并可以采取恢復(fù)機(jī)制,以消除該錯誤。指令的脆弱性在很大程度上取決于一條指令在處理器中占用的區(qū)域和在處理器內(nèi)傳輸?shù)臅r間。例如,許多指令在其實現(xiàn)之前在處理器內(nèi)使用大量周期,而其他一些指令穿過該序列分段而不占用空間盡管占一個周期時間。不僅如此,并非所有指令都使用相同的硬件裝置。為了覆蓋邏輯錯誤的檢測,可以重現(xiàn)更脆弱的指令,從而以對效率影響最小的方式對錯誤提供盡可能大的覆蓋。在一個實施例中,在實現(xiàn)指令的時刻(即退出指令時)重現(xiàn)脆弱的指令,然后該指令離開序列分段。在該實施例中,處理器內(nèi)部可以包括一組運算邏輯單元(ALU),目的是當(dāng)脆弱的指令達(dá)到重排序中間存儲寄存器(ROB-"reorderbuffer":重排序緩沖器)的上部時,例如,通過指令的重新執(zhí)行來有效解救脆弱指令。由于在其生存期間,不同的指令在處理器中占用不同的存儲量且使用不同的時間量,各指令對邏輯錯誤的脆弱性是不同的。如果識別出一些指令為更脆弱,則有可能用最低的指令重現(xiàn)等級在邏輯錯誤的檢測中獲得高的覆蓋。這樣,就可用最小的電路裝置、最小的功耗,在對處理效率影響最小的情況下,在錯誤檢測中獲得最大量的覆蓋。在不同的實施例中,指令對邏輯錯誤的脆弱性可能取決于指令類型(例如,裝入、存儲、分支、運算)、在處理器內(nèi)部(或處理器的特定組成部分)的指令耗時和指令的其他特性(例如,源數(shù)據(jù)的就緒、臨近區(qū)域狹窄以及因此具有較少的位數(shù))。在處理器的組成部分中并非所有的指令都占用同樣的空間。例如,裝入和存儲指令可將排序中間存儲寄存器索引存儲在其條目中,而其他指令則不利用這個區(qū)域。同樣地,存儲和分支指令不產(chǎn)生任何結(jié)果(因此不為它們分配任何目的地寄存器),并且,在形式上不使用存儲目的地寄存器索引的發(fā)送或提交隊列區(qū)域。沒有利用這些位也就沒有對粒子撞擊的脆弱性,因此降低了該指令的脆弱性。提交隊列的條目中某些位的脆弱性狀態(tài),也可取決于超標(biāo)量序列分段的插入變化即動態(tài)。若當(dāng)指令#^送到提交隊列內(nèi)部時,一條指令的源已經(jīng)準(zhǔn)備就緒,則提交隊列內(nèi)的源的標(biāo)記區(qū)域晃晚弱的。類似地,使用識別立即區(qū)域上的窄操作數(shù)的技術(shù),可以將指令的立即區(qū)域的相當(dāng)大部分變?yōu)椴淮嗳?,以此降低該指令總體的脆弱性。接著,參照圖1,該圖是說明本發(fā)明一個實施例的方法的流程圖。如圖1所示,方法IO可以從將時間標(biāo)記或時間戳與一條指令相關(guān)聯(lián)(方框15)開始。例如,處理器的端頭或前端可以將一個時間標(biāo)記與其狀態(tài)為位于諸如重排序中間存儲寄存器(ROB)等中間存儲寄存器內(nèi)的下一條指令相關(guān)聯(lián)。在不同的實施例中,這些指令可以對應(yīng)于微操作或顯微(pops)操作,盡管在其他實施例中,錯誤的檢測可在指令的細(xì)分(sub-divisionales)或可分的不同層次上實現(xiàn)。雖然這里聯(lián)系特定處理器結(jié)構(gòu)進(jìn)行描述,但應(yīng)明白,本發(fā)明的范圍不限于此,瞬態(tài)錯誤的檢測也可以在其他地方實現(xiàn)。此外,盡管這里描迷為將時間標(biāo)記與一條指令隨著進(jìn)入處理器的前端的指令相關(guān)聯(lián),但時間標(biāo)記也可以在處理器序列分段的其它點上與指令關(guān)聯(lián)。接著,還是參照圖1,可在處理器的序列分段內(nèi)注入指令(方框20)。據(jù)此,當(dāng)該指令為其執(zhí)行而臨時地進(jìn)行組織時,該指令可在處理器的序列分段上執(zhí)行(方框25)。執(zhí)行后,可以在取指令的瞬間計算該指令的脆弱性(方框30)。例如,當(dāng)其執(zhí)行結(jié)束且等待達(dá)到ROB的上部而退出(就是說,直到該指令在時間上4支老為止)時,ROB上指令的狀態(tài)設(shè)定為對于實現(xiàn)就緒??稍诖怂查g計算該指令對邏輯錯誤的脆弱性。上述計算在不同的實施例中可采用許多不同的形式。該計算可以考慮該指令耗用的處理器區(qū)域以及該指令在處理器上存在的時間長短或持續(xù)時間。因此,可以考慮基于時間標(biāo)記的信息,以及該指令的寬度(包括不同的指令區(qū)域、源的信息等)。接著,可以確定,為該指令確定的脆弱性等級或程度是否大于閾值(菱形框35)。該閾值可以根據(jù)用途建立,并在某些實施例中,可以是一個根據(jù)該處理器效率所要達(dá)到的程度而調(diào)整的閾值。若該指令的脆弱性等級低于該閾值,則控制過程進(jìn)到方框40,其中該指令退出。方法10就如此結(jié)束。反之,若在菱形框35中判定,該指令的脆弱性等級大于該閾值,則控制過程進(jìn)到方框45。這里,該指令可重復(fù)執(zhí)行(方框45)。在某些實施例中,該指令可在處理器的同一序列分段上重現(xiàn)并重新執(zhí)行或?qū)嵤?,但在另一些實施方式中可設(shè)置一個或多個附加的功能單元來重新執(zhí)行。重新執(zhí)行后,可將最初的結(jié)果與重新執(zhí)行的結(jié)果加以比較,以確定結(jié)果是否一致(菱形框50)。若一致,則表明不存在任何瞬態(tài)錯誤,于是,控制過程進(jìn)到方框40(如前已說明),在其中該指令退出。相反,若在菱形框50中判定為有區(qū)別,則控制過程進(jìn)到方框55。如此,在方框55中指示瞬態(tài)錯誤。這種指示可釆取多種不同的形式,其中包括向處理器的某個控制邏輯元件或其他類似位置發(fā)送信號。根椐所指示的錯誤,采用適當(dāng)?shù)幕謴?fù)機(jī)制(方框60)。在不同的實施例中,該恢復(fù)機(jī)制可以不同,并可以包括該指令的重新執(zhí)行,對處理器的各種裝置中的某些或全部進(jìn)行一次"清洗"或刷新,或采取其它類似的恢復(fù)機(jī)制。盡管用這個實施例進(jìn)行了描述,或具體說明了圖1的實施例,但應(yīng)明白,本發(fā)明的范圍不受此限定。如前所述,這些實施例可在不同的處理器體系結(jié)構(gòu)或結(jié)構(gòu)上實施。為說明之目的,圖2是表示本發(fā)明一個實施例的一般處理器的體系結(jié)構(gòu)的才匡圖。如圖2所示,該處理器100可以^^殳于裝置外的處理器。但是,本發(fā)明的范圍不限于此,也可以在該裝置內(nèi)的一個機(jī)構(gòu)上實現(xiàn)另一些實施例。處理器100包括前端110,它可以接收指令信息并將該信息解碼為一個或多個顯微操作或微操作,以便于執(zhí)行。前端IIO連接到指令臨時組織單元120,它能臨時地組織該指令在一些執(zhí)行單元130中的一個選定單元上執(zhí)行。這些單元可以改變,而在某些實施例中,它可以是整數(shù)、浮點數(shù)、單指令多數(shù)據(jù)(SIMD-"singleinstructionmultipledata")的產(chǎn)生單元和其他類似的執(zhí)行單元。另一方面,在某些實施例中,可以代表一個或多個按照本發(fā)明一個實施例的附加的冗余執(zhí)行單元,目的是完成邏輯錯誤的檢測。還是參照圖2,當(dāng)這些指令在一個選定的執(zhí)行單元上執(zhí)行時,這些指令可以提供給指令退出/驗證單元140。該單元140可用來退出指令(它們在處理器的該序列分段內(nèi)按不同的順序執(zhí)行),并在命令中發(fā)送根據(jù)程序的順序退出。根據(jù)本發(fā)明一個實施例,該單元140還可設(shè)計成以另外的方式實現(xiàn)邏輯錯誤的檢測。具體地說,在退出的時刻,每一個被判定為其等級或程度大于給定閾值的容易出邏輯錯誤的指令,例如都可在執(zhí)行單元230內(nèi)的一個附加執(zhí)行單元上重新執(zhí)行。根據(jù)該重新執(zhí)行的結(jié)果,或者確認(rèn)指令最初的結(jié)果并該取指令,或者指示一個邏輯錯誤并實現(xiàn)適當(dāng)?shù)幕謴?fù)機(jī)制。盡管用圖2的高層次的體系結(jié)構(gòu)作了描述,但應(yīng)明白,本發(fā)明的范圍并不受此限定,應(yīng)考慮到存在各種具體的變化。接著,參照圖3即本發(fā)明實施例之一的處理器的更詳細(xì)的框圖。如圖3所示,處理器200可以包括執(zhí)行指令用的不同裝置。圖3所示的處理器200可對應(yīng)于一個單核處理器,或者,也可以在其他實施例中對應(yīng)于一個多核處理器中的多個核或許多核中的一個。如圖3所示,處理器200可以包括前端210,它包含不同的裝置。在圖3的實施例中,它可以為ROB215,后者耦合到號碼再分配單元220,該單元220得到指令,并在處理器寄存器堆中存在的大量物理寄存器上,在指令內(nèi)重新分配邏輯寄存器的號碼。這些指令可以從號碼再分配裝置220耦合到軌跡或跟蹤高速緩存225,后者連接到用來幫助預(yù)測執(zhí)行分支的分支預(yù)測裝置230。連接到微指令翻譯裝置或機(jī)器(MITE-"microinstructiontranslationengine:微指令翻譯引擎")238,目的是向序列微組織器235提供翻譯后的指令,后者本身連接到一個統(tǒng)一的高速緩存240(例如,1級或2級高速緩存)。數(shù)據(jù)的高速緩存268也可以連接到統(tǒng)一的高速緩存240,還連接到一個裝入隊列267a和存儲隊列267b。還是參照圖3,可以向執(zhí)行單元250提供重新編號的指令,執(zhí)行單元包括提交隊列252,它接收輸入指令并將它們存儲到存儲隊列和一些功能單元中的一個臨時組織。提交隊列252還連^t妄到一對寄存器堆,即浮點(FP:floatingpoint)寄存器堆254和整數(shù)寄存器堆256。當(dāng)選定的寄存器堆上出現(xiàn)指令所需的源數(shù)據(jù)時,該指令可隨著^皮臨時組織在一些功能單元之一中而^皮執(zhí)行,為便于說明,在圖3上表示為兩個。具體地說,可以有第一執(zhí)行單元260和第二執(zhí)行單元265,它們可以分別對應(yīng)于一個浮點邏輯單元或一個整數(shù)邏輯單元。該指令的執(zhí)行結(jié)果可以經(jīng)由互連網(wǎng)絡(luò)270傳輸?shù)讲煌恢?。例如,在給定的體系結(jié)構(gòu)中,所得到的數(shù)據(jù)可以送回寄存器堆254和256、裝入隊列267a、存儲隊列267b和/或可在返回時提供給ROB215。另一方面,所得到的數(shù)據(jù)可以提供給指令驗證單元280。根據(jù)本發(fā)明的一個實施例,該單元280可以實現(xiàn)對邏輯錯誤的檢測。如上所述,指令驗證單元280可連接到互連網(wǎng)絡(luò)270,此外,還可連接到ROB215。在不同的實施例中,指令驗證單元280可以包括不同的裝置,其中包括具有類似于ROB215的配置的中間存儲寄存器。在一個實施例中,指令驗證單元280可以包括重新核查源的中間存儲寄存器(RSB-"rechecksourcebuffer:復(fù)查源緩沖器"),它可以是ROB215的擴(kuò)展。就是說,RSB可以是一個具有先進(jìn)先出(FIFO-"first-in-first-out")結(jié)構(gòu)的中間存儲寄存器,它包括與ROB215相同的條目數(shù)。在其他實施例中,用以驗證指令的中間存儲寄存器可以簡單地充當(dāng)ROB215。在一個實施例中,ROB215的各個條目(正如指令驗證單元280中的中間存儲寄存器那樣,如果存在)可以釆取以下給出的表l中說明的方式表l<table>tableseeoriginaldocumentpage12</column></row><table>如表1所示,ROB215的每個條目可以包括不同的區(qū)域。具體地說,又如表1所示,每個條目可包括一個可對應(yīng)于微操作或顯微操作的指令區(qū)域。此外,每個條目可以包括源標(biāo)簽,目的是識別所需要的數(shù)據(jù)位置。另外,每個條目可以包括一個時間戳或時間標(biāo)記,用以指示該輸入在ROB215建立的瞬間。最后,如表1所示,每個條目可以包括一個結(jié)果區(qū)域,其中存儲該指令的結(jié)果。盡管用此實施例并以具體的表1的實現(xiàn)方式作了描述,但應(yīng)明白,本發(fā)明的范圍不限于此,而且ROB或RSB的條目可以包括附加的或不同的區(qū)域。指令驗證單元280此外還可包括其專用于執(zhí)行選定的指令的適當(dāng)?shù)墓δ軉卧?85(或者,也可使用現(xiàn)有的可用功能單元)。RSB可為指令的全體保存所產(chǎn)生的結(jié)果值、備選碼和該指令的源標(biāo)簽,以在指令實現(xiàn)的時刻查驗該指令的結(jié)果(或方向,若涉及存儲操作或分支),看該指令是否識別為脆弱的。為了實現(xiàn)邏輯錯誤的檢測,指令驗證單元280可另外包括微控制器、邏輯部件或其它裝置。具體地說,該裝置可以接收一條指令,例如在實現(xiàn)的時刻接收,并為該指令確定脆弱性量度。盡管這種脆弱性量度可以釆取許多不同的形式,但是在一個實施例中,指令驗證單元280可根據(jù)下式計算而確定該指令脆弱性的程度或等級指令的脆弱性等級=占用的位區(qū)域x使用的時間(式1)該指令的脆弱性等級可根據(jù)該指令所占用的位區(qū)域,包括它的源識別符、目的地識別符等不同的區(qū)域,乘以該指令所使用的處理器時間,例如,這可以對應(yīng)于該指令在該處理器上使用的時間,例如,根據(jù)一個時間標(biāo)記測量,從該指令最初插入ROB215起直至該指令實現(xiàn)的時間。在其他實施例中,脆弱性的量度可根據(jù)占用的位區(qū)域和所使用的時間中的一個或這些值的不同組合來確定。指令的這種脆弱性等級可與一個闊值比較。作為實用示例,假定閾值為1,000。若平均一條指令覆蓋50位的脆弱位空間,則在提交隊列中經(jīng)過20多個周期的任何一條指令均通過選擇性重現(xiàn)而被重新執(zhí)行。對于一長串從屬關(guān)系或長等待時間的運行,諸如浮點除法,這樣的延遲是適當(dāng)?shù)?。在不同的實施例中,該閾值可以在很寬的范圍?nèi)變化。例如,零閾值引起全部指令的重新執(zhí)行,而大的閾值(例如5,000)可僅使小部分(例如低于10%)指令重新執(zhí)行。在一個實施例中,可釆用一個適當(dāng)?shù)恼壑蚤撝?,000。如果脆弱性等級低于閾值而不一致,則該指令就正常執(zhí)行,且指令驗證單元280不進(jìn)行任何附加動作。如果不是如此,而是確定指令的脆弱性等級高于所選的闊值,則該指令對瞬態(tài)錯誤具有^^大的脆弱性。如果該指令的脆弱性值高,這意味著該指令占用大量的位和/或會較長時間地在部件中通過,這使得該指令脆弱性大。在各種不同實施例中,恰好重復(fù)這些指令來應(yīng)對超出所選脆弱性閾值的情況。以這樣的方式,通過重復(fù)最少的指令來實現(xiàn)最大量的錯誤覆蓋。在取指令的過程中進(jìn)行指令的脆弱性分析時,通過過濾而去除哪些非體系結(jié)構(gòu)上正確執(zhí)行(ACE-"architecturallycorrectexecution")的指令和在到達(dá)實現(xiàn)階段之前就已從序列分段退出的指令。如此,在得到指令的瞬間就可很精確地收集到指令的脆弱性信息,正確地了解該指令在處理器內(nèi)移動的時間量以及占用的空間量。在不同的實施例中,指令驗證單元280可在取得該指令的信息時重新執(zhí)行該指令,取得該指令的源數(shù)據(jù)并將其提供給與指令驗證單元280相關(guān)的一個或多個附加功能單元85。在不同的實施例中,脆弱的指令通過使用存儲在RSB內(nèi)的信息執(zhí)行或重新執(zhí)行。在一個實施例中,源寄存器標(biāo)簽存儲在RSB中,并用來存取寄存器堆254和256,以便為其驗證而收集源數(shù)據(jù)。為了驗證目的,這些寄存器堆可包括兩個附加的存取或讀出端口(每個源操作數(shù)一個端口)。供選定重新執(zhí)行用的存取寄存器堆254和256可用這種方式,來覆蓋在該指令處于提交隊列252內(nèi)而源標(biāo)簽對于粒子撞擊具脆弱性時產(chǎn)生的錯誤。備選方案是,源的值可在第一次讀出時存入RSB,以免在寄存器堆上具有附加的端口。指令重新執(zhí)行的結(jié)果重新送回到指令驗證單元280,在那里該重新執(zhí)行的結(jié)果與最初的結(jié)果比較。若兩個結(jié)果一致,則指令驗證單元280上不采取任何附加動作而退出該指令。但是,若這些結(jié)果不一致,則表明出現(xiàn)一個瞬態(tài)錯誤,指令驗證單元280可向處理器200內(nèi)一個或多個位置發(fā)出邏輯錯誤的信號。在這一瞬間,處理器200可以實現(xiàn)一個錯誤恢復(fù)機(jī)制。例如,若兩個結(jié)果不一致,則指令驗證單元280可以啟動一次處理器刷新,從失效的指令開始重新執(zhí)行。盡管用具體為圖3是實現(xiàn)方式的這個實施例作了描述,但應(yīng)明白,本發(fā)明的范圍不限于此。在某些實施例中可以有一些優(yōu)化??梢圆粡腞OB的頭部(cabecera)或在其他的退出位置唯一地驗證該指令,而在每個周期中驗證一個以上的指令。另一方面,可以在實踐中采用多個閾值和一個效率量度,用以識別由于該驗證而使處理器效率損失的一些時間期間。在這樣的時間期間,只重新執(zhí)行十分脆弱的指令。作為其示例,在效率低的時間,該閾值可以設(shè)置得更高,以降低提交重新執(zhí)行的指令數(shù)。另外,可使用自適應(yīng)的閾值等級,它根據(jù)處理器的狀態(tài)(例如,4昔誤成本或比例、效率、能力等)修改。因此,取決于處理器給定狀態(tài),可以從若干個不同的脆弱性閾值中選擇一個與算出的指令脆弱性值進(jìn)行比較。在某些實施例中,可以利用根據(jù)本發(fā)明的一個實施例的錯誤檢測,與諸如刷新和重新初始化或窄值識別等脆弱性減少技術(shù)結(jié)合。一個序列分段的刷新和重新初始化,例如在集成電路或芯片外部的高速緩存失效之后,可降低大量指令對瞬態(tài)錯誤的脆弱性,縮短在提交隊列內(nèi)通過的時間,并可因此減少通過瞬態(tài)錯誤的檢測而重新執(zhí)行的指令數(shù)。此外,可以建立更低的閾值等級,以在實施刷新和重新初始化機(jī)制或其他脆弱性降低技術(shù)時,提高錯誤覆蓋面??梢栽诙鄠€不同的系統(tǒng)類型上實現(xiàn)這些實施例。接著,參照圖4,該圖是說明根據(jù)本發(fā)明的一個實施例的多處理器系統(tǒng)的框圖。如圖4所示,該多處理器系統(tǒng)是一個點到點互連系統(tǒng),并包括經(jīng)由點到點互連450連接的第一處理器470和第二處理器480,但在其他實施例中可采用其他形式的互連。如圖4所示,處理器470和480中的每一個都可以是多核處理器,包括處理器的第一和第二核(即處理器核474a和474b,以及處理器核484a和484b)。盡管在該圖中為了簡明起見而沒有示出,但根據(jù)本發(fā)明的一個實施例,笫一處理器470和笫二處理器480(具體地說,其內(nèi)部的核)可以包括識別和驗證脆弱指令的邏輯元件來檢測邏輯錯誤。第一處理器470還包括一個存儲器的集中與控制裝置(MCH-"memorycontrollerhub:內(nèi)存控制集線器")472和點到點接口(P-P)476和478。類似地,第二處理器480包括一個MCH482和P-P接口486和488。如圖4所示,MCH472和482將處理器連接到各自的存儲器,就是說,可以將作為主存的各部分的存儲器432和存儲器434局部地固定到相應(yīng)的處理器。第一處理器470和第二處理器480可以通過P-P互連452和454連接到芯片裝置490。如圖4所示,該芯片裝置490包括P-P接口494和498。此外,芯片裝置490包括一個接口492,用以將芯片裝置490與高性能圖形處理器438連接。在一個實施例中,可以利用高級圖形端口(AGP-"AdvancedGraphicsPort:高級圖形端口")439來連接圖形發(fā)生裝置438和芯片裝置490。AGP總線439符合1998年5月4日由加利福尼亞SantaClara的IntelCorporation出版的圖形加速端口4妄口頭見格(修改版2.0)(Es/e")7<%fc/d"<ieZ她/^z<ie/we他血gr浙cosace/erad叫i^v/w'dw20)。作為另一方案,點到點互連439可以連接這些部件。而芯片裝置490可以經(jīng)由接口496連接到第一總線416。在一個實施例中,第一總線416可以是根據(jù)注明日期為1995年6月的修改版2.7)的PC1局部總線規(guī)格的外圍部件互連總線(PCI-"PeripheralComponentInterconnect:外圍部件互連"),或者是一個諸如PCI快速總線或其他輸入/輸出(1/0)互連總線等總線,^(旦本發(fā)明的范圍不限于此。如圖4所示,連同將第一總線416連接到第二總線420的總線橋418,可以將不同的輸7v/輸出裝置414連接到第一總線416,在一個實施例中,第二總線420可以是引線數(shù)少(LPC-"lowpincount:低引線數(shù))的總線??梢詫⒉煌难b置,例如,包括鍵盤/鼠標(biāo)422、通信裝置426和數(shù)據(jù)存儲單元連接到第二總線420,在一個實施例中,可以包括編碼430。此外,可以將音頻輸入/輸出連"J妻到第二總線420。注意,也可以采用其他體系結(jié)構(gòu)。例如,可以不用圖4的點到點體系結(jié)構(gòu),一個系統(tǒng)可以實現(xiàn)分支或多端點的總線或者類似的體系結(jié)構(gòu)。另一方面,應(yīng)該明白,在不同的實施例中,可以實現(xiàn)不同的處理器結(jié)構(gòu)和不同的指令選擇性重現(xiàn)方式。在某些實施例中,指令可以在在指令可能要退出和實際上退出之間的時間窗口內(nèi)重新進(jìn)行選擇性執(zhí)行??梢杂貌煌绞竭M(jìn)行所述的指令選擇性重新提交。接著,參照圖5,該圖是表示根據(jù)本發(fā)明的一個實施例對指令進(jìn)行選擇性重新執(zhí)行的處理器的一部分的框圖。如圖5所示,處理器500包括一個提交隊列510,該隊列通過內(nèi)部總線505連接以接收下一指令。如圖5所示,另外還可連接一個選擇隊列520來接收下一指令。再有,這些指令還可提供給ROB515。如圖5所示的附加方式,提交隊列510和選擇隊列520連接到選擇器525,它可以從這些隊列選擇一條指令,以將其傳送到寄存器堆530,它本身又可以連接到一個或多個執(zhí)行單元540。如圖5所示,執(zhí)行單元540另外還連接到ROB515。只要有一個用來"t丸行的端口,就可從選擇隊列520發(fā)送并執(zhí)行一條指令(提交隊列510中的其副本(contrapartida)已被發(fā)送)。當(dāng)一條指令執(zhí)行結(jié)束時,結(jié)果存儲在ROB515中。當(dāng)該指令完成重復(fù)執(zhí)行時,其結(jié)果與最初存儲的結(jié)果比較,以進(jìn)行驗證。若ROB515的頭部對實現(xiàn)就緒,但未被確認(rèn),則可以中斷或中止該實現(xiàn)。在某些實施例中,ROB515可以給每個條目增加某個區(qū)域(例如,一個比較位、一個確認(rèn)位、一個錯誤檢測位,以及存儲該結(jié)果用的位)。但是,在其他實施例中,可使用一組不同的排序進(jìn)行上述存儲,當(dāng)將ROB的一個條目分配給一條新的指令時,重新建立該條目的附加區(qū)域。當(dāng)該指令結(jié)束其執(zhí)行時,將其結(jié)果寫入kOB515。當(dāng)最初的指令完成時,該結(jié)果可以寫入并建立比較位。接著,第二條指令(即重現(xiàn)指令)在執(zhí)行時遇到該已建立的比較位,并使存儲的值與該重新執(zhí)行的結(jié)果比較并在ROB的條目上建立一個確認(rèn)位。比較結(jié)果存儲在該錯誤檢測位上,以指示結(jié)果是否一致。作為比較位的備選分案,可以是一個與該指令關(guān)聯(lián)的位,用以識別所涉及的是最初的指令還是重現(xiàn)的指令。也正如前面闡明的,當(dāng)一條指令位于提交隊列510時,也存儲在該選擇隊列520中。存在于選擇隊列520的各個條目可以包括任選的編碼、源標(biāo)簽(用以從該寄存器堆530讀出源數(shù)據(jù)(fbentes))、ROB的一個條目識別符以及一個指示重新發(fā)送或提交是否就緒的狀態(tài)位。注意,提交隊列510的條目還可將其條目對應(yīng)于選擇隊列520存儲,同樣,將其條目對應(yīng)于ROB515存儲。一旦最初的指令被從提交隊列510發(fā)送,就對其條目發(fā)出對應(yīng)于選擇隊列510的信號,以建立其狀態(tài)位。選擇隊列520的條目總數(shù)可以與ROB515的條目數(shù)相同。注意,選擇隊列520的等待時間對于處理效率并不關(guān)鍵;因此,在功率方面可以用車支緩'隻的設(shè)計實現(xiàn),并包括采用低功率的晶體管。選擇器525可以是一個多路器,它在來自提交隊列510和選擇隊列520的指令之間進(jìn)行選擇。在不同的實施例中,選擇器525可以對來自提交隊列510的指令給予優(yōu)先。選擇隊列520可以在已建立狀態(tài)位的指令中選擇一條指令,以將其傳送給選擇器525,這可以用一系列端口實現(xiàn)(既然它不是關(guān)鍵路線或路徑,便不影響周期時間),或者借助于在多個存儲體(bancos)上的配置,就是說,用如提交端口那么多的存儲體形成選擇隊列520,使得只是存儲體的較老的指令可以竟?fàn)幍蕉丝?。在有一個端口空閑時,來自選擇隊列520的指令就^皮發(fā)送;在相反的情況下,則等待。正如前面解釋的,一條指令對瞬態(tài)錯誤的脆弱性取決于其占用的區(qū)域和在處理器中通過的時間。當(dāng)選擇隊列520的一個條目具有已建立的狀態(tài)位時,可將其脆弱性值與一個閾值比較。注意,了解一條指令通過提交隊列510要多少周期,因為該指令同時分配給提交隊列510和選擇隊列520。這樣,在選擇隊列520中的該處與接收建立狀態(tài)位用的信號之間經(jīng)過的時間可以用來作為所使用的時間量度。若脆弱性值低于閾值,則可以釋放該選擇隊列520的條目,并相應(yīng)地為ROB的條目建立確認(rèn)位,并在ROB的條目上重新建立4昔誤檢測位。在某些實施例中,可以用時間(例如,借助于時間戳或時間標(biāo)記)作為脆弱性值,代替區(qū)域與時間的乘積。為了確認(rèn)之目的,如前說明,ROB515的每個條目都可包含一個確認(rèn)位。若尚未建立該確認(rèn)位,則該指令實現(xiàn)可以中止來等待確i^。即使該確認(rèn)位符合,該指令只是在其錯誤檢測位已建立時對其實現(xiàn)就緒。在其錯誤檢測位已建立的情況下,可采取不同的動作。例如,可以刷新該序列分段,以重新執(zhí)行該失效的指令,或引起一個異常。對于分支預(yù)測失敗,可以清除在提交隊列510和選擇隊列520中未^皮確認(rèn)的條目??捎迷谔峤魂犃?10上使用的同一機(jī)制來清除選擇隊列520的條目。注意,冗余硬件本身可能易受粒子撞擊。但是,其脆弱性為零。就是說,若與選擇隊列520產(chǎn)生撞擊,則執(zhí)行一條錯指令,該指令可能給出一個虛假的正確。撞擊可能擊中ROB條目指示符或ROB515確認(rèn)位,這可能造成僵局,因為ROB515的頭部等待祐—確認(rèn)。這或者可以通過選擇隊列520的進(jìn)入ROB的條目識別符的對比加以保護(hù),或者增加一個自動發(fā)現(xiàn)失效的定時器來消除,而且若該指令的實現(xiàn)在多于給定周期數(shù)的期間被中止,則該指令可以^皮刪除并重新初始化。這些實施例可以用編碼實現(xiàn)并且可以存儲在存儲該指令的存儲介質(zhì)中,可以利用來對系統(tǒng)進(jìn)行編程,以實施這些指令。存儲^h質(zhì)可以包括但不限于軟盤、光盤、CD只讀存儲器(CD-ROM)、可重寫CD(CD-RW)、磁光盤等任何類型的盤片;如動態(tài)隨機(jī)存取存儲器(DRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)等隨機(jī)訪問存儲器(RAM)、諸如可擦可編程只讀存儲器(EPROM)、脈沖刷新存儲器、電可擦除可編程只讀存儲器(EEPROM)等半導(dǎo)體器件;磁卡或光卡;或任何其他類型適宜于存儲電子指令的介質(zhì)。盡管本發(fā)明聯(lián)系數(shù)量有限的實施例進(jìn)行了描述,但本領(lǐng)域技術(shù)人員由此出發(fā)當(dāng)會意識到大量的修改或改變。本權(quán)利要求書擬覆蓋所有本發(fā)明的真實精神和范圍內(nèi)的修改和變化。權(quán)利要求1.一種方法,包括確定在處理器中實現(xiàn)或執(zhí)行的一條指令的脆弱性程度或等級,以使所述脆弱性等級對應(yīng)于所述指令出現(xiàn)邏輯錯誤的幾率;以及若所述脆弱性等級超出某個閾值,則重新執(zhí)行所述指令。2.根據(jù)權(quán)利要求l的方法,還包括在與已執(zhí)行了該指令的處理器的第一執(zhí)行單元不同的處理器執(zhí)行單元上重新執(zhí)行所述指令。3.根據(jù)權(quán)利要求l的方法,還包括若所述脆弱性等級^f氐于所述閾值,則不重新執(zhí)行所述指令。4.根據(jù)權(quán)利要求l的方法,還包括根據(jù)所述指令占用的處理器區(qū)域和與所述指令的生存時間相關(guān)聯(lián)的時間周期這二者中的至少其一,確定所述脆弱性等級。5.根據(jù)權(quán)利要求4的方法,還包括用一個與所述指令相關(guān)聯(lián)的時間戳或時間標(biāo)記來確定所述時間周期。6.根據(jù)權(quán)利要求l的方法,還包括確定重新執(zhí)行所述指令的結(jié)果是否與所述指令的結(jié)果一致;若不一致則刷新所述處理器。7.—種裝置,包括至少一個寄存器堆和至少一個連接到所述至少一個寄存器堆的執(zhí)行單元;以及一個指令驗證單元,用來確定對于由所述執(zhí)行單元執(zhí)-f亍的所述指令的瞬態(tài)錯誤的脆弱性。8.根據(jù)權(quán)利要求7的裝置,其中,所述指令驗證單元包括中間存儲寄存器,用來存儲指令和相關(guān)聯(lián)的源數(shù)據(jù)的標(biāo)簽;以及至少一個執(zhí)行單元,連接到所述中間存儲寄存器以重新執(zhí)行一些脆弱指令。9.根據(jù)權(quán)利要求8的裝置,其中,所述指令驗證單元還包括邏輯元件,用以根據(jù)所述指令用的區(qū)域值和所述指令用的時間值這二者中的至少其一,確定一條指令的脆弱性程度或等級。10.根據(jù)權(quán)利要求9的裝置,其中,所述邏輯元件根據(jù)與該指令相關(guān)聯(lián)的時間戳或時間標(biāo)記確定所述時間值。11.根據(jù)權(quán)利要求9的裝置,其中,若所述脆弱性等級大于某一閾值,則所述邏輯元件將所述指令提供給至少一個執(zhí)行單元以將它重新執(zhí)行。12.根據(jù)權(quán)利要求ll的裝置,其中,所述閾值可根據(jù)選定的處理效率調(diào)整,使所述閾值設(shè)定得更高而適合于更高的處理效率等級。13.根據(jù)權(quán)利要求ll的裝置,還包括一個指令退出單元,以在所述指令的重新執(zhí)行與指令的最初執(zhí)行相一致時,由所述取指令退出單元退出該指令。14.一種制品,包括機(jī)器可讀存儲介質(zhì)并包含一些指令,這些指令若由機(jī)器實現(xiàn)或執(zhí)行則使所述機(jī)器完成包括如下步驟的方法在處理器中執(zhí)行一條指令,以獲得初始結(jié)果;在所述指令對瞬態(tài)錯誤脆弱的情況下,在處理器中重新執(zhí)行一條指令,以取得重新執(zhí)行的結(jié)果;以及將所述初始結(jié)果與所述重新執(zhí)行的結(jié)果進(jìn)^f亍比較。15.根據(jù)權(quán)利要求14的制品,其中,所述方法還包括在所述指令對所述邏輯錯誤不脆弱的情況下,在指令退出階段退出所述指令而不重新執(zhí)行所述指令。16.根據(jù)權(quán)利要求14的制品,其中,所述方法還包括若所述比專交表明不相一致,則刷新所述處理器。17.根據(jù)權(quán)利要求14的制品,其中,所述方法還包括根椐所述指令的耗用區(qū)域和所述指令在所述處理器上的持續(xù)時間這二者中的至少其一,確定所述指令是否對邏輯錯誤脆弱。18.根據(jù)權(quán)利要求17的制品,其中,所述方法還包括用所述區(qū)域和所述持續(xù)時間計算脆弱性值;并將所述脆弱性值與某一閾值比較,并根據(jù)所述比較確定是否重新執(zhí)行該指令。19.一種系統(tǒng),包括處理器,包含至少一個用以執(zhí)行一條指令的執(zhí)行單元,以使得所述處理器還包含一個冗余執(zhí)行單元,用來在所述指令對瞬態(tài)錯誤脆弱的情況下重新執(zhí)行所述指令;以及動態(tài)隨機(jī)存取存儲器(DRAM),連接于所述處理器。20.根據(jù)權(quán)利要求19的系統(tǒng),其中,所述處理器還包含一個指令驗證器,用來量化所述指令對瞬態(tài)錯誤的脆弱性。21.根據(jù)權(quán)利要求20的系統(tǒng),其中,所迷指令驗證器根據(jù)所述指令大小和所述指令在該處理器中的生存時間這二者中的至少其一,確定是否重新執(zhí)行所述指令。22.根據(jù)權(quán)利要求21的系統(tǒng),其中,所述指令驗證器將基于所述指令大小和所述生存時間的所述指令的脆弱性值與某一閾值比較,若所述脆弱性值大于所述閾值,就啟動所述重新執(zhí)行。23.根據(jù)權(quán)利要求22的系統(tǒng),其中,所述閾值是一個自適應(yīng)閾值,且所述系統(tǒng)根據(jù)選定的處理效率來調(diào)整所述閾值。24.根據(jù)權(quán)利要求22的系統(tǒng),其中,若所述處理器實施減少一些指令的脆弱性的技術(shù),則所述系統(tǒng)一定會降低所述閾值。25.根據(jù)權(quán)利要求20的系統(tǒng),其中,所述指令驗證器須在所述指令退出階段確定是否要重新執(zhí)行所述指令。26.根據(jù)權(quán)利要求20的系統(tǒng),其中,所述指令驗證器包含中間存儲寄存器,用來存儲與在所述處理器上執(zhí)行的指令對應(yīng)的一些條目。27.根據(jù)權(quán)利要求26的系統(tǒng),其中,所述一些條目包含與相應(yīng)的指令插入所述處理器的瞬間對應(yīng)的時間標(biāo)記區(qū)域。28.根據(jù)權(quán)利要求27的系統(tǒng),其中,所述指令驗證器用時間標(biāo)記區(qū)域來確定是否要重新執(zhí)行所述指令。29.根據(jù)權(quán)利要求19的系統(tǒng),其中,在所述指令重新^l行的結(jié)果與所述指令的結(jié)果不一致的情況下,所述系統(tǒng)刷新所述處理器的至少一部分。全文摘要在一個實施例中,本發(fā)明包括一種方法,用來確定一條由處理器執(zhí)行的指令的脆弱性程度或等級,并若該脆弱性等級超出某一閾值,用來重新執(zhí)行該指令。該脆弱性等級可以對應(yīng)于該指令在處于處理器內(nèi)時出現(xiàn)邏輯錯誤的幾率。描述了其他實施例并提出了權(quán)利要求。文檔編號G06F11/14GK101416163SQ200680054141公開日2009年4月22日申請日期2006年3月31日優(yōu)先權(quán)日2006年3月31日發(fā)明者A·岡薩雷斯,J·阿韋拉,O·埃爾京,O·昂薩爾,X·貝拉申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
集安市| 霍城县| 三门峡市| 鹤岗市| 石景山区| 庐江县| 红安县| 星座| 阿图什市| 汉寿县| 张家口市| 娄烦县| 舟山市| 龙游县| 固镇县| 西丰县| 东港市| 手游| 天祝| 波密县| 分宜县| 渭源县| 宁城县| 开远市| 宝丰县| 静安区| 富锦市| 望都县| 常宁市| 元谋县| 峨边| 邢台市| 姚安县| 松滋市| 凤山市| 天津市| 慈溪市| 综艺| 平谷区| 正蓝旗| 平昌县|