專利名稱::減少對于存儲數(shù)據(jù)軟件錯誤的脆弱性的制作方法減少對于^^^t據(jù)軟件^^的,性狄領域本說明書的內(nèi)容涉及數(shù)據(jù)處理,特別1據(jù)處理設備中的4射吳緩和。背景狄f錄絲電路制造技術(shù)的iJi,殺迷續(xù)提^^只更小、工作電壓更低的微型處S^^^f^:據(jù)處理設備。這些設備的生產(chǎn)商和用戶趟^^受到軟件或程序4射吳現(xiàn)象的影響。當a粒子和高能量的中子石封童M電路并JL^電路節(jié)點上^^1^f渚負荷時,軟^H射吳就會勝。如果電荷iL^^夠大的話,其結(jié)果一個節(jié)點上的電壓可以4&fC^一種邏4沐態(tài)的電平改變?yōu)榱硪环N不同的邏棒R態(tài)的電平?;瞉5種情況下,那個節(jié)點絲的信息就會赴變化。總之,軟#4射吳組的增加是與絲電路的^^口i宿小相一致的。因為,當電路密度提高時,粒子碰撞電壓節(jié)點的可能t生f&曾加。同樣地,Ptt工作電壓的減小,4樣不同邏豐^j犬態(tài)的電壓電平之間的差別就會縮小。那樣,僅需較小的能*^可改變電路節(jié)點的邏豐^R態(tài),從而會產(chǎn)生更多的軟^H晉i吳。pl4當或FiUL引起軟件^i吳的粒子是極其困難的,所以,數(shù)據(jù)處理設備經(jīng)常設有糾錯碼、奇^f交驗或期W支術(shù)支持(支撐系統(tǒng)),或者期也一些檢測技術(shù),并JDT時僅需軟件錯i吳的改正。取決于所使用的特定技^i亥技術(shù)所實施的范圍,支持的^^午設備i^更件的增加和性能的斷氐。^i則和糾錯能力僅限于一、二個位4射吳。因此,需^~些備選的4射吳緩^4支術(shù)是,它們可讓^i:才居處理設備設計師們作出不同的^f口能力選擇。^^發(fā)明通過典型范例i^f亍說明,JL不受附圖的限定。圖1表示本發(fā)明在一個具有^iE輯單元和窄值確定邏輯單元的處理器中的實施方式。圖2表示本發(fā)明在一個具有WC輯單it^零字節(jié)確定邏輯單元的處理器中實施方式。圖3表示本發(fā)明在一個具有冗余<#^£輯單#窄值確定邏輯單元的處理器中的實施方式。圖4^^本發(fā)明在一個具有冗^"^C輯單iL^零字節(jié)確定il輯單元的處理器中的實施方式。圖5表示^^發(fā)明的減少^^窄值^^^^i居^^H射吳的^t弱性的方法的另一實施方式。圖6表示本發(fā)明的^^一種檢測并糾正^A窄值的^^數(shù)據(jù)軟^H晉溪的方法的實施方式。圖7表示本發(fā)明在包括可替換部分的減少存儲數(shù)據(jù)軟件錯i吳的M^性的方法中的實施方式。圖8表示本發(fā)明在數(shù)據(jù)處理系統(tǒng)中的實施方式。M實施方式下面^^i續(xù)說朋面對數(shù)據(jù)^t軟^Hfi吳,一種裝置和方法來減少其脆弱性的實施方式。為了更透徹的s^本發(fā)明,以下的說明提出許多特有的細節(jié)-例如^fj^l輯單元的配置。但是,,村支術(shù)專家來沈,本發(fā)明可以刊、渚實踐而不需要這樣的特定細節(jié)。補充一點,對一些纟斜勾、電路、技a熟知的類似方面的情況,紅未作詳盡的說明,以鋭給本發(fā)明帶"必要的費解。4賴本發(fā)明的實施方式可以減少存4者數(shù)據(jù)的軟件或禾踏錯i吳的^t弱性,其中利用了這樣的實際情況在位lfc^面,數(shù)據(jù)處^置中佳月的很多數(shù)據(jù)值比寄存器、隊列、緩沖器、數(shù)才斜W"鎖存器或提供^ft的^f^^E輯單元更窄。因此,這些窄值經(jīng)常被符號擴M通過期也方iO以擴展,結(jié)果,位單元中的數(shù)據(jù)^#并不是數(shù)據(jù)處理設備正確#^亍所需要的。本發(fā)明的實施方式旨在實現(xiàn)如下兩點當數(shù)據(jù)不需要時就忽略^it些位單元中含有的數(shù)據(jù)軟件錯溪,并JMf^些位單元用來冗^i^fi者^f^t據(jù),以4吏那些翁3居在面臨^^H^i吳時減少膽弱性。本發(fā)明的實施方式可以單獨或者同^^^r測技術(shù)、糾錯技^緩械術(shù)結(jié)"^]。圖1表示本發(fā)明在處理器100中的一種實施方式。處理器100可以是M不同類型處理器中的^f射可一種,如Pentium⑧系列處理器、Itanium⑧系列處理器或英特爾公司的其^^:理器系列,或者^f可ifJU的或期4^司的處理器。盡管圖1示出了在一個處理器中實現(xiàn)的發(fā)明,4S^發(fā)明也可在<封可^^^據(jù)處理部件或設備中<賴,如芯片組、包括主系統(tǒng)內(nèi)存或石^^^器的^frf可型號的,器、總線和互i^,以及"f^T^4^f口發(fā)送信息的裝置。,器100包括^il4樣元110,它可以^]于,的^f^f可iC^^t/牛或電路,如同一^f存器、指令或期破型的隊列或緩沖器,一種數(shù)據(jù)或^^也高速緩存,一種數(shù)寺>1##或期也鎖存器,或^f錄型的^^置,其中,數(shù)據(jù)可以是4樹一種形式的信息,包括由^r^制^iW封可^W也方式^^的指令。邏輯^f諸110可以由4^f可類型的存^t元件組成,:H貞存器和觸發(fā)器。^^說明書中,用"0"(或"零位")和'T,(或1)擬笛述位的值,前者可以是^^邏幹40,,、或斷開或無效狀態(tài)的任f可電壓或電平,而后者可以是卩;<^一個邏輯"1"或連接或有效狀態(tài)的任何電平。如^一個字節(jié)、字或4封可^^_據(jù)量的所有位具有"0"值,則該數(shù)據(jù)量可被描述為具有零值。在圖1的實財式中,^f^E輯單元110^7^i者一個數(shù)據(jù)^H殳計的,在數(shù)據(jù)字中一個字由4個字節(jié)構(gòu)成,一個字節(jié)由8個^fii且成。但是,在^f也實施方式中,相應的^^l輯單元可以設計i^lf封可^f^:據(jù)量或數(shù)凈劇直大小,一個數(shù)據(jù)字可以由^f封可^^it量的字節(jié)和位構(gòu)成。存^iC輯單元110包括字節(jié)0的^!il輯單元120、字節(jié)1的^^il輯單元121、字節(jié)2的^[*£輯單元122、字節(jié)3的^i諸邏輯單元123和指示符^^^14樣元130。字節(jié)0、字節(jié)l、字節(jié)2和字節(jié)3的存儲邏輯單元120、121、122和123各自用來4^者數(shù)據(jù)字的相應部分,#實施方式中為一個字節(jié)。^實施方式中,字節(jié)0的^f^E輯單元120用于^"數(shù)據(jù)字的最低字節(jié),字節(jié)1^#邏輯單元121旨^^第二低字節(jié),字節(jié)2的存^il輯單元122用于^fet低的第三低字節(jié),字節(jié)3的4^£#^元123用^m高字節(jié)。處理器100同樣包含確定邏輯單元140。該確定邏豐樣元140可以是確定要^#^^£輯單元110中的數(shù)據(jù)字的狀態(tài)的^f可邏輯或電路。林實施方式中,該狀態(tài)是數(shù)據(jù)字是一個窄值,處,窄11A^符號擴展的數(shù)據(jù)字。例如,數(shù)悟字'too00000oooooooooooooooo010101or^^ioioior字節(jié)的符號擴展形式,在該形式中,字節(jié)的更高有效位中^f躺的"0"指示該字節(jié)U^L—個je數(shù),。另一*'子,"iiiiiniiiiiiiiiiiimiiiioioior,是'iioioior字節(jié)的符號擴展形式,在該形式中,字節(jié)的最高有效位中^if]的"r指示該字節(jié)il^一個負數(shù)。^^發(fā)明范圍內(nèi)也可能^^H封可一種編碼形式,如4躺二的才卜;馬il一的^M馬。在圖1的實施方式中,確定邏輯單元140包括字節(jié)1的tb4交器141、字節(jié)2的tb4支器142和字節(jié)3的tb^支器143。141、142和143字節(jié)tk4交器中的[個可包括每個f立的"異或"門,旨在確定相關(guān)字節(jié)的每個位是否與數(shù)據(jù)字的字節(jié)O的最高的位相同?;蛘?,確定邏輯單元140可以包括頭"零"檢測器和/或頭"一"檢測器,它們由邏輯系列或電路系列的配置動態(tài)地形成,或以^^可其他類型系列形成,以確定某個清況的存在?;蛘撸耆梢詫崿F(xiàn)在實踐中用任何^fe^決辦法來確定一種狀態(tài)的存在。確定邏輯單元140能夠說明這樣的狀態(tài)是否存在,例如,林實施方式中,^t^(^l輯單元110中的數(shù)據(jù)字是否為窄值。也fMi兌,字節(jié)1、字節(jié)2和字節(jié)3的每^f立^L否與字節(jié)0的最高絲同。指示符^^il^4元130用來4^確定邏輯單元140產(chǎn)生的結(jié)果。#實-施方式中,用唯一的位字段(指示符位)來顯示相應的數(shù)據(jù)字是否為窄值。一到目應的一個數(shù)據(jù)字和指示符^4入^^輯單元110中,由于粒子的碰撞或^f也^f牛,^filiE輯單元110—個或更多的位上就會產(chǎn)生軟fH射吳。因此,處理器100也包^~用于選#^選#^£輯單元150,^^擇^#邏輯單元110的高字節(jié)的內(nèi)M這些字節(jié)的替^f直。該選捧以指示符^lil輯單元130的內(nèi)容為勤出。如果指示符^t邏輯單元130的內(nèi)^>表明^^者^#^^£車辱#>元110中的數(shù)據(jù)字是窄值,那末,當數(shù)據(jù)被讀iMl由^l輯單元110以^^也方錄供時,實際上只讀取字節(jié)0的^f^iC輯單元120的內(nèi)容。為高字節(jié)提供的值,是通過將從字節(jié)0的^it^^元120讀到的數(shù)^ii行符號擴展而獲得的。以這種方式,可以忽略一個或多個窄值的高字節(jié)的軟"fH昔誤。選#^£輯單元150可包括由指示符^lil輯單元130的內(nèi)容控制的多路器,例如,一個^f立的多絲用來提供在字節(jié)l、字節(jié)2和字節(jié)3的^^£輯單元121、122或123的相應位中存儲的位值,或者提供字節(jié)0的存^iE輯單元120最高位置務賭的位值。另外的或M的方M,選#^£輯單元150可包括多if錄,用于提供上述信息,i^e^^更件中永久^i:的邏^f直"o或r,it^如下描述的備選實施方式中可^J^。本發(fā)明可以有不同的備選實施方式。例如,確定邏輯單元140可確定高字節(jié)中的每個字節(jié)的佳jl否為零;指示符^C輯單元130可包fe^—的位用來表明高字節(jié)中的每個字節(jié)的a^:零;以^it4^1輯單元150可給高字節(jié)中的每個字節(jié)提供零的替4射直。或者,確定邏輯單元140也可確定高字節(jié)中每個字節(jié)的^^位的〗i^否為l;指示符^^iE輯單元130可包才^^一的位g明高字節(jié)中的每個字節(jié)的每個位的mi;以及選#^#^元150可給高字節(jié)中每個字節(jié)的每個位;f是供l的替換值?;蛘?,確定邏l樣元140也可確定前面的兩種可能性,指示符^f^l輯單元130可包括一個位用^4Ji月高字節(jié)中的每個字節(jié)的a^零,且另一個4i4明高字節(jié)中的每個字節(jié)的所有位的佶是l,而選4W輯單元150可提供適當?shù)奶?射直。圖2說明另一個備急實施方式。圖2示出了含有^^iC輯單元210的處理器200。扭匕實施方式以X^下面描述的^^可^f也實施方式中,可以^^HS可類型的處理器和^il輯單元,并JL4^il^4元可在處理器內(nèi)的任何功能中飢^iE輯單元210^i舌字節(jié)0的^^iC輯單元220、字節(jié)1的^f^C輯單元221、字節(jié)2的#^者邏輯單元222、字節(jié)3的萄^iH輯單元223、字節(jié)0的指示符^l邏輯單元230、字節(jié)1的指示符^^il輯單元231、字節(jié)2的指示符^#邏輯單元232和字節(jié)3的指示符^f^il輯單元233。處理器200也包括字節(jié)0的確定邏輯單元240、字節(jié)1的確定邏輯單元241、字節(jié)2的確定邏輯單元242和字節(jié)3的確定邏輯單元243。它們中的[個邏輯都用來確定e^入Wl輯單元210中的相應的數(shù)據(jù)字的字節(jié)是否與斜目同。如果是這樣,那^字節(jié)0的指示符^£輯單元230、字節(jié)l的指示符^E輯單元231、字節(jié)2的指示符^^1輯單元232或在字節(jié)3的指示符^(*1£輯單元233中的相應的指示^f主f招必議。處理器200也包括字節(jié)0的選#^£#4元250、字節(jié)1的選#^輯單元251、字節(jié)2的選#^£輯單元252和字節(jié)3的選#^1輯單元253。它們中的每一邏輯可用于選^^^ill^元210的相應字節(jié)的內(nèi)$^1選#^1些字節(jié)的替才射直。該選擇以相應的指示符^^£#^元230、231、231和233的內(nèi)容為基礎。扭匕實施方式中,替^fi^一個零字節(jié)。在另一實施方式中,確定邏輯單it^確定已存入的一個lt據(jù)字的字節(jié)的每個位;l否與1相同,替^f直可以是值"mmir,。在圖2的實施方式中,可以替^ft^字節(jié),包4^iL低字節(jié)或^i可字節(jié)組合。在圖3中示出了本發(fā)明的另一實施方式。圖3包括處理器300,其中包含^fjl^輯單元310,該^f^C豐4^元310^"有字節(jié)0的^filil輯單l320、字節(jié)1的存^iE輯單元321、字節(jié)2的4^1輯單元322、字節(jié)3的4^£輯單元323和指示符^!£輯單元330。處理器300也包含確定邏輯單元340,用來確定^l存的數(shù)據(jù)字是否為一個窄值,就象前面所描述的。如果確定邏輯單元340確定該數(shù)據(jù)字是一個窄值,則指示符^^^輯單元330中的指示4主f&皮設定。處理器300還包^it"^l輯單元350,而選#^£輯單元350又包^^#^£豐樣元351、352和353。選#^£輯單元351選#^存入字節(jié)1的^^t^輯單元321的數(shù)據(jù)字的字節(jié)0或字節(jié)1;選#^1#^元352選#^存/^字節(jié)2的^j諸邏輯單元322字節(jié)0或字節(jié)2;以及選#^£輯單元353選#^存入字節(jié)3的存^iE輯單元323的字節(jié)0或字節(jié)3。在每種情況下,如果確定邏輯單元340決定要存入的數(shù)據(jù)字是一個窄值,#>^4入字節(jié)0。因此,可以萄儲字節(jié)0的冗余副本,以使才全測和糾jE^件^i^^可能,如下i^斤描述的那樣。處理器300還包^^#^輯單元360,而選#^輯舉元360又含有選#^£輯單元361、362和363。選#^##~元361選擇字節(jié)1的^H^1豐4^元321的內(nèi)M—個替^f直;選#^£1樣元362選擇字節(jié)2的#^£輯單元322的內(nèi)M—個替^f直;選#1£輯單元363選擇字節(jié)3的^^£輯單元323的內(nèi)絲一個替才射直。每^S^擇以指示符^iE輯單元330的內(nèi)容為勤出,這樣,在指示^f錄明賴的數(shù)據(jù)字是一個窄值的情況下,^^##^{直。如^:低字節(jié)的最高位是零,則替纟射直全是零,如:低字節(jié)的最高位是1,則替4射直都是l。備選的方紋,既然最低字節(jié)在每個期也字節(jié)位置上進行重復,那么每個字節(jié)的替#^直就可通過#^個字節(jié)的最高位復制到相應字節(jié)的每個期*4立在^i也實施方式中,確定邏輯單元340可確定如絲高字節(jié)的所有4i^是O,那替^f直就全都是0;確定邏輯單元340還可以確定如M高字節(jié)的所有^Jp是l,則替4射直就全都是1;并且確定邏輯單元340可確^:否出現(xiàn)兩幹清況中的^""種情況,可以利用財?shù)奶?射直。處理器300還包括4射吳邏輯單元370,它可實現(xiàn)4射吳檢測或《射吳糾正。錯行4射吳銜則,可以用多種方式進行t嫩,如^^個高字節(jié)與最低字節(jié)tb^支、將每個字節(jié)同^f^^個字節(jié)tM交,或用^^T^f也方式進行i^4交。如^il些tb^支中的^f可一種確定字節(jié)中的^f可一個字節(jié)與另外一些字節(jié)不一致,錯誤邏輯單元370就可用^[可熟知的解決方法古處聿來指示從#^£輯單元310讀出的數(shù)據(jù)中的4射吳,》n產(chǎn)生古tf章或異常。tb4交可在僅當指示符^^邏輯單元330的內(nèi)容示出£>#^者了窄值時進行,或者可以獨立于指示符^[*1£輯單元330的內(nèi)^ii行而將J^緣果忽略,除非指示符^filil輯單元330指示£>##了一個窄值。處理器300還包^""條數(shù)據(jù)5^圣380,用以讀出數(shù)l^f口將它們/A4^C輯單元310辯ij另""if點。才艮據(jù)前面所述,4^吳邏輯單元370通過tb4交而完成4射吳的糾正,如果出現(xiàn)一致性上的某些錯誤,出自字節(jié)的數(shù)據(jù)與其它字節(jié)不同時就可忽略。例如,如果來自字節(jié)0的^£##"元320、字節(jié)1的存^£豐禪元321和字節(jié)2的存^!輯單元322的所有數(shù)據(jù)都是一樣的,但來自字節(jié)3的^(^^輯單元323的數(shù)據(jù)^^不同的,因此來自字節(jié)3的^l^輯單元323的數(shù)據(jù)可祝忽略。來自字節(jié)0的^il^^元320的數(shù)據(jù)可被讀樹U數(shù)據(jù)路徑380,作為已務賭的數(shù)據(jù)字的字節(jié)0?;蛘?,如^自字節(jié)1的存"^^輯單元321、字節(jié)2的存^[£輯單元322和字節(jié)3的W^豐樣元323的數(shù)據(jù)都是相同的,但來自字節(jié)0的存^1£#^元320的數(shù)據(jù)是不同的,那來自字節(jié)0的存^il輯單元320的數(shù)據(jù)可以一丸忽略,并且可將數(shù)據(jù)從字節(jié)4^£輯單元1讀出到數(shù)據(jù)i斜圣380,作為e^的數(shù)據(jù)字的字節(jié)0的值。注意,前面所描述的tb^可以檢查出多^H射吳。例如,來自字節(jié)0的存儲邏輯單元320、字節(jié)1的^t邏輯單元321和字節(jié)2的^f^E輯單元322的數(shù)據(jù)全都相同,^f旦來自字節(jié)3的^*1£#^元323兩個比特位置有^t據(jù)不同,這將被^L^雙位錯誤。或者,來自字節(jié)0的肩^£##~元320和字節(jié)1的^il輯單元321的數(shù)據(jù)是同樣的,而來自字節(jié)2的^f^C輯單元322的數(shù)據(jù)不同于在一個比特位置的數(shù)悟,且來自字節(jié)3的萄^1輯單元323的數(shù)據(jù)不同于另一不同比特位置的數(shù)據(jù),那就^夸^支^L^^M立lt"誤。據(jù)此,接下來的表格說明,可才財射射吳邏輯單元370檢測的4射吳數(shù)目^f立置而取的動作。前四列的值^J^"每列開頭指明的字節(jié)的镅誤數(shù)目。就如M中看到的那樣,本發(fā)明的實施方i^:非常理想的,它們使多位4射吳的檢測和糾正威力可能。<table>tableseeoriginaldocumentpage14</column></row><table>圖4表示本發(fā)明的另一實施方式。圖4包括一個處理器400,該處理器包^>^£輯單元410,而^1£輯單元410^"有字節(jié)0的^^ill輯單元420、字節(jié)l的W1輯單元421、字節(jié)2的^f諸邏輯單元422、字節(jié)3的萄^£輯單元423、指示符^£輯單元431、指示符^1輯單元432和指示符^"^邏輯單元433。處理器400還包括確定邏輯單元440、441、442和443,由它們確定^別存入字節(jié)O的#^£輯單元420、字節(jié)l的^iC輯單元421、字節(jié)2的存如果確定邏輯單元440、441、442或443確定對應的字節(jié)是零字節(jié),則就分別在指示符^^iE輯單元430、431、432和433中相應地調(diào)整指示位。處理器400還包^i&^l輯單元450、451、452和453。如果確定邏輯單元440確定字節(jié)0不是一個零字節(jié),選#^輯單元450就^^##1據(jù)字的字節(jié)0存入字節(jié)0的^il輯單元420,il^選擇字節(jié)1,如果字節(jié)0是零字節(jié)但字節(jié)1不l如果確定邏輯單元441確定字節(jié)1不是一個零字節(jié),選#^£輯單元451#^4##1據(jù)字的字節(jié)1存入字節(jié)1存^£輯單元421,或是選擇字節(jié)0,如果字節(jié)1是零字節(jié)但字節(jié)0不l這樣,字節(jié)0的^t邏輯單元420和字節(jié)1的存^1豐祥元421就^7^^且,以讓一個為另一個提供冗余存賭。剿以的情況是,如果確定邏輯單元442確定字節(jié)2不是一個零字節(jié),選擇邏輯單元4521^4#^據(jù)字的字節(jié)2存入字節(jié)2的^iC輯單元422,或選擇字節(jié)3,如果字節(jié)2是零字節(jié)但字節(jié)3不l如果確定邏輯單元443確定字節(jié)3不A^零字節(jié),那選#^£輯單元453,^fc^擇^t據(jù)字的字節(jié)3存入字節(jié)3的^#邏輯單元423,或選擇字節(jié)2,如果字節(jié)3是零字節(jié)但字節(jié)2不l處理器400還包^^#^£輯單元460、461、462和463。在指示符^f^C輯單元430表明在字節(jié)0的存^il輯單元420中存有零字節(jié)的情況下,選擇邏輯單元460選#^一個零字節(jié)的替4射直,以可從字節(jié)0的存^C輯單元420讀出,替換否則,字節(jié)O的^fi者邏輯單元420的內(nèi)容,招皮讀取。在指示符存^[£輯單元431表明在字節(jié)1的存^i^樣元421中存有零字節(jié)的情況下,選#^^4元461就選擇一個零字節(jié)的替換值以可從字節(jié)1的^£輯單元421讀出,否則,字節(jié)l的^t邏輯單元421的內(nèi)容f^皮讀取。在指示符^fi者邏豐祥元432中表明在字節(jié)2的存^itl祥元422中存有零字節(jié)的情況下,選#^£輯單元462^^擇一個零字節(jié)替^f直,以可從字節(jié)2的^^il輯單元422讀出,否則,字節(jié)2的^^邏豐樣元422的內(nèi)容l^皮讀取。替換在指示符^il輯單元433表明字節(jié)3的肩^iE輯單元'423存有一個零字節(jié)的情況下,選#^£輯單元463Ife^擇一個零字節(jié)替^f直,以可從字節(jié)3423^il輯單元讀出,否則,字節(jié)3的^^il輯單元423的內(nèi)容,&皮讀取。在其它實施方式中,也可^^以或另夕卜iai^用這樣的方式,替換確定邏輯單元440、441、442和443可確^_否高字節(jié)的所有^^卩是1,且替#射直可以是銷的l。處理器400還包^l射吳邏4禪元470和4射吳邏輯單元472。錯誤邏輯單元470可通過字節(jié)0的存儲邏輯單元420的內(nèi)容與字節(jié)1的存儲邏輯單元421內(nèi)容的比較來實現(xiàn)錯誤檢測。如果它們不一致,就指示存儲邏輯單元410的讀出數(shù)據(jù)中存在錯誤。錯誤邏輯單元472可通過字節(jié)2的存儲邏輯單元422的內(nèi)容與字節(jié)3的存儲邏輯單元423的內(nèi)容比較來實現(xiàn)錯誤檢測,如果它們不一致,就指示存儲輯單元410的讀出數(shù)據(jù)中存在錯誤。第一個比較可僅在指示符存儲邏輯單元430或431的內(nèi)容表明存有冗余值(就是說,檢測出一個零字節(jié))時才進行。第二個比較可僅在指示符存儲邏輯單元432或433的內(nèi)容表明存有冗余直時才進行?;蛘?,這些比較可以與指示符存儲邏輯單元430、431、432和433的內(nèi)容無關(guān)地進行,但其結(jié)果被忽略,除非在相應的指示符存儲邏輯單元表明存入有冗余值時忽略。其它實施方式可提供不同的字節(jié)組配。例如,字節(jié)0和字節(jié)2之間可相互組配,字節(jié)1和字節(jié)3之間可相互組配,或者,可將2個以上字節(jié)的存儲邏輯單元組配在一起,從而能進行糾誤。本發(fā)明的任何上述實施方式或任何其它實施方式可將字存儲邏輯單元劃分到分字(sub-palabras/sub"Word)存儲邏輯單元。分字大小的選擇可取決于給定理器中窄值或零值的典型大小,并且涉及到一個窄值或零值被檢測到時,在可檢測到的窄值或零值數(shù)量與被保護或可用于冗余比特數(shù)之間的折衷。除前面提及的窄值定義外,—個窄值也可以是包含任何數(shù)量的比特任何數(shù)據(jù)字,這些字節(jié)的值對于正確的實施或體系結(jié)構(gòu)狀態(tài)是不需要的。所需要的窄值部分才M窄值的需求部分.另一方面,如上所述,窄值或零值指示位對軟件錯誤而言是脆弱的,所以,最好用ECC或奇偶性來保護。但是,在一些拔忽略的字節(jié)沒有被用于冗余存儲的實施方式中,當錯誤將從表示字節(jié)被忽略的敏感位置交換時,這些位中的某一位的錯誤不會危及正確的體系結(jié)構(gòu)狀態(tài),因為在那種情況下,字節(jié)將被如同不存在所述位而讀出。圖5表示用以減少存儲數(shù)據(jù)對軟件或程序錯誤的脆弱性的方法500的本發(fā)明的實施方式。在步驟(510中查證一個字存入到處理器中的數(shù)據(jù),確定它是否為窄值。如果是窄值,該步驟520中窄值指示符就"iU,在步驟530中,數(shù)據(jù)字被務賭。在步驟540中,窄值指示符被讀取,以確定要M^ft器讀取的數(shù)據(jù)字是否為窄值。如果不是,在步驟550中所有數(shù)據(jù)字被讀出。如果是,在步驟560中數(shù)據(jù)字的最低字節(jié)被讀出,并站步驟570中,最低字節(jié)被符號擴展或延長以提供高字節(jié)。圖6表示用以減少^fi者數(shù)據(jù)的軟件4射吳的il^弱性的本發(fā)明的方法600的本發(fā)明的一個實施方式。在步驟610中,查證要存A^h理器中的一個數(shù)據(jù)字以確定它是否為窄值。如果是,則在步驟620中,一個窄值指示符被"&i以表示存入的數(shù)據(jù)字是窄值。在步驟621中,為數(shù)據(jù)字的每個字節(jié)在每個^l位置存入最低字節(jié)。如果不是,則在步驟630中,斜目應的^t位置存入數(shù)據(jù)字的每個字節(jié)。在步驟640中,讀取窄值指示符以確定要/X^器讀出的數(shù)據(jù)字是否為窄值。如果不是,則在步驟650中,^^數(shù)據(jù)字被讀出。如果是,則在步驟660中數(shù)據(jù)字每個^ft位置的內(nèi)^^支讀出。在步驟661,#-些^#位置的內(nèi)紹另一些進行tb^支。如^4在一致性,則在步驟670中,才細符號擴^J:低4#位置的內(nèi)容以提供完整的數(shù)據(jù)字。如果不一致,則在步驟671中,"i刊古有多少不一致以確定4射^_否可糾正。如果可糾正,則在步驟672中讀出不^l昔誤的4^位置的內(nèi)容,^i行符號擴展,從而使4射吳得到糾正。如果不能糾正,則在步驟673中指出數(shù)據(jù)字中存在4射吳。.圖7表示用以減少^^者^:凈居對^^H射吳的M^性的方法700的;^發(fā)明"一個實施方式。在步驟710中,^i正要存A^h理器的一個數(shù)據(jù)字,確定它^_否含有一個可替換部分,該部分可以是一個零字節(jié)替換iM到可其中每個位的值與其它所有位ii^^一才羊的部分,或是可被事先確定的替辟值所替換的任何其它部分。在圖7的實施方式中,數(shù)據(jù)字包^"HS氐字節(jié)和二個高字節(jié),該高字節(jié)被^i正以確定它們是否為可替換的。如果可替換,則在步驟720中iU—個指示符,用a明要存入的數(shù)據(jù)字含有一個可替換部分。在步驟721中,該低字節(jié)被存入低字節(jié)的存儲位置。在步驟722中,#|氏字節(jié)的冗余副^#入高字節(jié)的^fil"位置。如果不是,則在步驟730中,數(shù)據(jù)字的每個字節(jié)被存入相應的4^者位置。在步驟740中,讀取指示符以確定要/A^諸器讀出的數(shù)據(jù)字是否含有可替換部分。如果不含有,則在步驟750中將完整的數(shù)據(jù)字讀出。如果含有,貝'J在步驟760中讀出低字節(jié)^ft位置的內(nèi)容,并在步驟761中,讀出高字節(jié)賴位置的內(nèi)容。在步驟762中,^f氐字節(jié)^^者位置的內(nèi)^高字節(jié)^^者位置的內(nèi)^ii行比較,如果存在一致性,則在步驟770中就為高字節(jié)提供替換值。如果沒有一致性,則在步驟771中指示數(shù)據(jù)字中有4射吳。^^發(fā)明范圍內(nèi),圖5、6、和7所示的方法可以按不同的順序才Af亍,可以省略所示的步驟,可以補充附加步驟,或者可以是包含重排、組合、省略和附加的組合。例如在圖6中,如果才W亍不帶糾4躺4射吳檢測,步驟671和672(分別負責確定^^^否可糾正的^i行糾錯)就可省略。圖8表示本發(fā)明在系統(tǒng)800中的實施方式。系統(tǒng)800包含處理器810和系統(tǒng)內(nèi)存820。才財居前面所述,處理器810可以AJi述的^f可處理器。系統(tǒng)內(nèi)存820可以是<封可類型的賴器,例如以半"!1^》1^^々^^^^^1、靜態(tài)或動態(tài),器,由脈中(快閃型)^^的,器,或者以半"^^為J^出的只讀,器,磁盤或光盤。在系統(tǒng)800中,系統(tǒng)內(nèi)存820可^要存M理器810^fitil輯單元的數(shù)據(jù)字的來源,或者可^7處理器810的^^£##"元的可讀數(shù)據(jù)字的目標?!赹i可配置中,處理器810與系統(tǒng)內(nèi)存820均可相互連接,通過4沐總線組合或直接或,^十點連接,以及與^f可其它元件的媒^ii接。系統(tǒng)800可以含有^l可數(shù)量的總線,如同一^卜圍總線或M^部分,如圖8中沒有示出的輸入/輸出設備。處理器IOO、200、300或400,或4封可根據(jù)本發(fā)明實施古式i殳計的部件或其它部分,從其創(chuàng)始到才對以到制造可以分成;M^階段進^i殳計。代表一種設計的數(shù)據(jù)可用不同的方iC^達設計。首先,作為^^對以中可利用結(jié)果,硬件或物錄置可以通過"f躺一種硬件描述語言或其它功淑葛數(shù)語言絲示。附加或備選的方M,在設計過程的某些階段,可能會產(chǎn)生在具有il輯和/或晶^^管門的電路M^莫型。另一方面,在某些步驟大部^i殳計而恕)J可通過^R^不同裝置實際安放的數(shù)據(jù)^i^f封莫型化的程度。在<賴常規(guī)半"!^^生產(chǎn)技術(shù)的情況下,表示裝置安放模型(deviceplacementmodel)的數(shù)據(jù)可以A^L^I來生產(chǎn)M電路的掩碼的不同掩碼層的^#特征^#^^不存在的數(shù)據(jù)。在<封可設計表示中,數(shù)據(jù)以機器可讀介質(zhì)的形式被務賭。機器可讀介質(zhì)可以是被調(diào)制或以^j也方式傳i^斤述信息的光波或電波、^fi者器或者基于石tt光的^^介質(zhì)如4#盤片。這些介質(zhì)中的^f可一種可以"攜帶"或"指示"用于本發(fā)明實施方式的設計或^j也信息,如同4射吳'1^1例程中的指令。當指示或攜帶信息的電載波被傳送時,在電信號的副本、緩沖或轉(zhuǎn)發(fā)被l^f亍的私復內(nèi),一^N斤的副本可被制作。于是,A^t信或網(wǎng)絡的^^商的操怍,可以^1進行一個制品的復制才辦,例如,載波、本發(fā)明的實^4支術(shù)。以上描述了用以減少^^數(shù)據(jù)的軟件4射吳的裝置和方法。盡管已參照附圖就某些實施方式作了描述,但一定要衝尋這些實施方式^J]于說明而不在廣義J^寸本發(fā)明加以限制。本發(fā)明不僅限于ei苗i^口展示的具體結(jié)構(gòu)和配置,因為通ii^f所公開內(nèi)容的研究,本領域"fit技枉員能^t出樹不同的修改。在技^ii^'fcl的4^支術(shù)領域,難以預測其進一步的皿,利用這些技^ii^i^斤/zHf的實施方式可容易i脈其配置和細節(jié)上得到說,而不脫離^/^Hf的原則和后附的^又禾J"^求的范圍。權(quán)利要求1.一種裝置,包括第一存儲邏輯單元,用以存儲數(shù)據(jù)字的第一部分;第二存儲邏輯單元,用以存儲數(shù)據(jù)字的第二部分;確定邏輯單元,用以確定數(shù)據(jù)字的狀態(tài);第三存儲邏輯單元,用以存儲所述確定邏輯單元產(chǎn)生的結(jié)果;以及選擇邏輯單元,用以基于第三存儲邏輯單元的內(nèi)容選擇第二存儲邏輯單元的內(nèi)容和取決于第一存儲邏輯單元的預定位的內(nèi)容的替換值這二者之一。2.才財居權(quán)矛虔求1的裝置,其中,所述數(shù)據(jù)字的第~~^分:據(jù)字的最賄效部分。3.才財居權(quán)矛虔求1的裝置,其中,所述數(shù)據(jù)字的狀態(tài)所述數(shù)據(jù)字的第二部分的每一位的值均與所述數(shù)據(jù)字的第-"^分的最高有效位的值相同。4.才財居權(quán)矛虔求1的裝置,其中,所述替換值的^-位等于第一賴il輯單元的所述預定位的內(nèi)容。5.才財居權(quán)矛虔求1的裝置,其中,第一WE輯單元的所述預定位用^ft所述數(shù)據(jù)字的第""^分的最高有效位。6.才財居權(quán)矛漆求1的裝置,其中,第一^4#第>=^^£輯單元包M下列^^貞之一中寄存器、發(fā)出隊列、數(shù)據(jù)高速緩存^:才^##鎖存器。7.—種裝置,包拾第一^£#^元,用以^^數(shù)據(jù)字的第4分;第>^^£輯單元,用以^l所述數(shù)據(jù)字的第一^^^t據(jù)字的第二部效二者之一;確定邏輯單元,用以確定所iil^居字的狀態(tài);第^W^樣元,用以賴所述確定邏輯單元產(chǎn)生的結(jié)果;第"""it被輯單元,用以基于所述確定邏輯單元產(chǎn)生的結(jié)果而選擇所述數(shù)據(jù)字的第-~#^^所述數(shù)據(jù)字的第二部^1二者之一,以存Af>^#^£輯單元;以及第二選#^£#^元,用以基于第三^il輯單元的內(nèi)容而選擇所述第二^^iE輯單元的內(nèi)^t^射l^二者^^一。8.才財居權(quán)矛虔求7的裝置,其中,所述數(shù)據(jù)字的狀態(tài)是所述數(shù)據(jù)字的第二部分的^-位的值與所述數(shù)據(jù)字的第二部分的^"其它位的^f勤目同。9.才財居權(quán)禾'漆求7的裝置,其中,所述數(shù)據(jù)字的狀態(tài)是所述數(shù)據(jù)字的第二部分的獻零。10.根據(jù)權(quán)矛J^"求7的裝置,其中,所述替才射i^J:。11.才財居權(quán)矛決求7的裝置,其中,所錄一^E輯單it^笫J^f諸邏輯單元包襯下列^^頁之一中寄存器、發(fā)出隊列、數(shù)據(jù)高速緩存和數(shù)凈別呆持鎖存器。12.才財居權(quán)矛]^求7的裝置,還包括4射吳檢測邏##"元,用以對第一存^^£輯單^口第^^£#^元的內(nèi)^ii行tb^支。13.才艮據(jù)權(quán)矛虔求12的裝置,其中,所述4射吳檢測邏豐禪^艮據(jù)第三^H諸邏輯單元的內(nèi)彰寸第一^^£輯單元和第>=>##邏##"元的內(nèi)^ii行比較。14.4財居權(quán)矛j^求7的裝置,還包拴第四WE輯單元,用以,所述數(shù)據(jù)字的第一^^^數(shù)據(jù)字的第三部終二者之一;第三選擇邏輯單元基于確定邏輯單元產(chǎn)生的結(jié)果^it擇所述數(shù)據(jù)字的第^^#所述數(shù)據(jù)字的第三部^1二者之一,以存入第四存^l^輯單元;數(shù)據(jù)^4圣,用以從第一^^iE輯單元讀出儲^[直;以及糾4t^輯單元,用以對第一^C輯單元、第>=*^£輯單>1^口第四存^E輯單元的內(nèi)^ii行tb4交,如果第《^_#^£輯單元的內(nèi)容與第一#^£輯單元的內(nèi)容不同而與第四^fi者邏輯單元的內(nèi)^目同,則向所述數(shù)據(jù)3各經(jīng)提4^第二^^iC4辱單元的內(nèi)容以^^,第""^4^;lil輯單元的內(nèi)容。15.—種方法,包4t確定要賴的數(shù)據(jù)字是窄值;^fi者所述窄值的所需部分;,關(guān)于所^^/^*:^^^窄<直的指示;>^4#器讀出所述窄值的所需部分;以及給窄值的其^#分提供替樹直。16.根據(jù)權(quán)禾'J^求15的方法,還包括以冗余方^4M所述窄值的所需部分。17.根據(jù)權(quán)牙'虔求16的方法,還包括/XW器讀出所述以冗^iC4入的窄值的所需部分;以及將所述窄值的所需部分與以冗余方iC4入的窄值部^i行tb^支,以查證銜吳的存在。18.根據(jù)權(quán)矛j^求17的方法,還包拾提供所述以冗余方^4/v的窄值的所需部分以代替,器中的所述窄值的所需部分,從而糾正所述窄值的所需部分中的4晉誤。19.一種方法,包4舌確定^"存入的lt據(jù)字包^^不可^^灸部^^可^"換部分;-賴所述不可替換部分;^f錄數(shù)不可替換部分的冗余副本;務賭關(guān)于已^t數(shù)據(jù)表示一個包含可替換部分的數(shù)據(jù)字的指示;乂>^|器讀出所述不可替換部分;,A4^器讀出所述不可替換部分的冗余副本;以及將來自,器的所述不可替換部分和來自務賭器的所述不可替纟灸部分的冗余副^ii行tb4交,以^^正4fi吳的^^。20.根據(jù)權(quán)矛虔求19的方法,其中,所述可替換部分具有零值。21.—種系統(tǒng),包4t^fi者器;以及處理器,其中包舍第一^f^^輯單元,用以^f諸數(shù)據(jù)字的第^分;第^W1輯單元,用以,所述數(shù)據(jù)字的第二部分;確定邏輯單元,用以確定所述數(shù)據(jù)字的狀態(tài);第^4^iC輯單元,用以^ft所述確定邏輯單元產(chǎn)生的結(jié)果;以及選#^£輯單元,用以基于第三_^^£輯單元的內(nèi)容^^擇笫^^^輯單元的內(nèi)^^^u夾于第一4^il輯單元的預定位的替^f直這二者之一。全文摘要本發(fā)明涉及用以減少對于數(shù)據(jù)存儲的軟件或程序錯誤的脆弱性的裝置和方法。在一個實施方式中,一種裝置包括邏輯存貯單元、邏輯確定單元和邏輯選擇單元。上述邏輯確定單元用來確定數(shù)據(jù)字的狀態(tài)。上述邏輯存貯單元包括用以存貯數(shù)據(jù)字的第一部分、數(shù)據(jù)字的第二部分和由確定邏輯單元產(chǎn)生的結(jié)果的邏輯單元。上述邏輯選擇單元根據(jù)用于存貯結(jié)果的邏輯存貯單元的內(nèi)容來選擇數(shù)據(jù)字的第二部分存貯邏輯單元的內(nèi)容或替換值。上述替換值取決于邏輯存貯數(shù)據(jù)字的第一部分的存儲邏輯單元的預定位的內(nèi)容。文檔編號G06F11/20GK101317157SQ200580051803公開日2008年12月3日申請日期2005年10月10日優(yōu)先權(quán)日2005年10月10日發(fā)明者A·岡薩雷斯,O·埃爾京,O·翁薩爾,X·貝拉申請人:英特爾公司