專利名稱:用于數(shù)據(jù)處理系統(tǒng)中的高速緩存的可編程錯誤動作的制作方法
技術(shù)領(lǐng)域:
本公開一般地涉及數(shù)據(jù)處理系統(tǒng),更具體地涉及用于高速緩存的可編程錯誤動作。
背景技術(shù):
隨著尺寸縮小和存儲器容量增加,高速緩存中的軟錯誤正日益成為問題。這些軟錯誤涉及諸如由于電離輻射的影響而導致的存儲在高速緩存中的數(shù)據(jù)的改變。這些改變導致不太可靠的高速緩存,其可能特別是在安全關(guān)鍵的系統(tǒng)諸如防鎖制動系統(tǒng)、駕駛輔助系統(tǒng)等中存在問題。即,在這種系統(tǒng)內(nèi),可能要求高標準或可靠性。
本發(fā)明通過舉例示出并且不由附圖限制,其中,類似參考數(shù)字表示類似元件。為了簡單和清楚起見,圖中的元件被示出并且不必須按照比例繪制。圖1以框圖形式示出根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)處理系統(tǒng);圖2以框圖形式示出根據(jù)本發(fā)明的一個實施例的圖1的數(shù)據(jù)處理系統(tǒng)內(nèi)的高速緩存的一部分;圖3以示意圖形式示出根據(jù)本發(fā)明的一個實施例的使用圖2的高速緩存的錯誤動作控制寄存器;圖4和圖5以表格形式示出根據(jù)本發(fā)明的一個實施例的圖3的錯誤動作控制寄存器的多種字段的描述;圖6以框圖形式示出根據(jù)本發(fā)明的一個實施例的圖2的高速緩存的一部分;以及圖7以流程圖形式示出根據(jù)本發(fā)明的一個實施例的用于操作圖1的數(shù)據(jù)處理系統(tǒng)的方法。
具體實施例方式在數(shù)據(jù)處理系統(tǒng)內(nèi),當檢測到高速緩存中的軟錯誤時,可以采用不同錯誤動作。在一個實施例中,高速緩存控制電路包括用戶可編程控制寄存器,其包括高速緩存錯誤動作 (CEA)字段,該字段用于存儲控制值,該控制值允許響應(yīng)于檢測到高速緩存軟錯誤動態(tài)選擇將采用的錯誤動作。例如,在一個實施例中,用戶可以對CEA字段的控制值進行編程,以允許響應(yīng)于檢測到的錯誤執(zhí)行透明操作或非透明操作。用戶可編程控制寄存器用于響應(yīng)于檢測到的錯誤選擇將被采用的不同錯誤動作提供了靈活機制,以評價和克服這些軟錯誤。例如,在執(zhí)行的關(guān)鍵領(lǐng)域中,諸如在執(zhí)行安全關(guān)鍵的應(yīng)用期間,可以希望軟錯誤的透明修補, 而在執(zhí)行其他類型的應(yīng)用期間或在其他模式下,希望可以攔截和報告軟錯誤用于改進的監(jiān)控。從而,用戶可編程控制寄存器允許在數(shù)據(jù)處理系統(tǒng)的操作期間,動態(tài)改變高速緩存錯誤對處理器的透明度。如在此使用的,術(shù)語“總線”用于指可以用于傳送一種或多種類型的信息諸如數(shù)據(jù)、地址、控制、或狀態(tài)的多個信號或?qū)w。在此所述的導體可以關(guān)于單個導體、多個導體、 單向?qū)w、或雙向?qū)w示出或描述。然而,不同實施例可以改變導體的實現(xiàn)。例如,可以使用獨立單向?qū)w而不是雙向?qū)w,反之亦然。而且,多個導體可以用連續(xù)或以時間復用方式傳送多個信號的單個導體代替。類似地,承載多個信號的單個導體可以分為承載這些信號的子集的多個不同導體。從而,存在用于傳送信號的多種選項。當涉及將信號、狀態(tài)位、或類似裝置分別譯為其邏輯真或邏輯假狀態(tài)時,在此使用術(shù)語“斷言”或“設(shè)置”以及“否定”(或者“解除斷言”或“清除”)。如果邏輯真狀態(tài)是邏輯電平1,則邏輯假狀態(tài)是邏輯電平0。并且,如果邏輯真狀態(tài)是邏輯電平0,則邏輯假狀態(tài)是邏輯電平1。圖1以框圖形式示出根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)處理系統(tǒng)10。數(shù)據(jù)處理系統(tǒng) 10包括處理模塊12、系統(tǒng)總線14、存儲器16和多個外圍設(shè)備,諸如外圍設(shè)備18、外圍設(shè)備 20,并且在一些實施例中,使外圍設(shè)備18與外圍設(shè)備20分離的由圖1中的點表示的附加外圍設(shè)備。存儲器16是通過在一種形式中具有多個導體的雙向?qū)w連接至系統(tǒng)總線14的系統(tǒng)存儲器。在所示的形式中,外圍設(shè)備18和20中的每個都通過雙向多個導體連接至系統(tǒng)總線14,處理模塊12也是如此。處理模塊12包括經(jīng)由具有多個導體的雙向總線連接至系統(tǒng)總線14的總線接口單元22。總線接口單元22經(jīng)由雙向?qū)w連接至內(nèi)部總線對。內(nèi)部總線M是多個導體通信總線。經(jīng)由相應(yīng)雙向?qū)w連接至內(nèi)部總線M的是高速緩存沈、存儲器觀、以及處理器30。處理器30實現(xiàn)數(shù)據(jù)處理操作。高速緩存沈、存儲器觀、以及處理器30中的每個都經(jīng)由相應(yīng)雙向?qū)w連接至內(nèi)部總線。在一個實施例中,處理器30可以直接連接至高速緩存沈而不經(jīng)由內(nèi)部總線M。在另一實施例中,除經(jīng)由內(nèi)部總線M連接之外,處理器30可以經(jīng)由專用接口直接連接。其他實施例可以使用連接處理器30、高速緩存 26、以及存儲器觀的不同方法??商鎿Q地,存儲器觀可以不存在于處理模塊12中。注意, 存儲器觀和存儲器16可以是任何類型的存儲器,并且外圍設(shè)備18和20中的每個都可以是任何類型的外圍設(shè)備或裝置。在一個實施例中,所有數(shù)據(jù)處理系統(tǒng)10都在單個集成電路上??商鎿Q地,數(shù)據(jù)處理系統(tǒng)10可以使用多于一個集成電路實現(xiàn)。在一個實施例中,至少所有處理模塊12都在單個集成電路上。在操作中,處理模塊12用于通過執(zhí)行多個數(shù)據(jù)處理指令實現(xiàn)多種數(shù)據(jù)處理功能。 高速緩存26是用于處理器30所需的經(jīng)常使用的信息的臨時數(shù)據(jù)存儲。在一個實施例中, 高速緩存26是組相關(guān)聯(lián)的高速緩存。在一個實施例中,高速緩存沈可以是存儲指令信息的指令高速緩存。在另一實施例中,高速緩存26可以是存儲數(shù)據(jù)信息(例如,運算信息) 的數(shù)據(jù)高速緩存。在另一實施例中,高速緩存26可以是能夠存儲多種類型信息(諸如,指令信息和數(shù)據(jù)信息(例如,運算信息))的統(tǒng)一的高速緩存。不在高速緩存26內(nèi)的由處理器30所需的信息被存儲在存儲器觀或存儲器16中。在一個實施例中,存儲器觀可以稱為內(nèi)部存儲器,其中,其在處理模塊12內(nèi)部,而存儲器16可以稱為外部存儲器,其中,其在處理模塊12外部??偩€接口單元22僅是處理模塊12和系統(tǒng)總線14之間的多個接口單元中的一個??偩€接口單元22用于協(xié)調(diào)與通過處理器30的指令執(zhí)行相關(guān)的信息流??刂菩畔⒑蛷膱?zhí)行指令得到的數(shù)據(jù)經(jīng)由總線接口單元22在處理器30和系統(tǒng)總線14之間交換。注意,處理模塊12和數(shù)據(jù)處理系統(tǒng)10可以包括任意數(shù)量的高速緩存,其可以包括任何類型的高速緩存,諸如數(shù)據(jù)高速緩存、指令高速緩存、一級高速緩存、二級高速緩存等。在此提供的關(guān)于錯誤動作控制寄存器及其使用的描述可以應(yīng)用于數(shù)據(jù)處理系統(tǒng)10內(nèi)的任何高速緩存。在一個實施例中,每個高速緩存或者每個高速緩存子集都具有其自己的錯誤動作控制寄存器,或者用于當檢測到軟錯誤時,選擇將被采用的錯誤動作的其自己的CEA 字段。在另一實施例中,一個或多個高速緩存可以共享錯誤動作控制寄存器或者錯誤動作控制寄存器內(nèi)的CEA字段。圖2示出根據(jù)一個實施例的圖1的高速緩存沈的一部分。高速緩存沈的可選實施例可以使用與圖2中所示不同的結(jié)構(gòu)。圖2中所示的高速緩存沈的部分具有“N”組和 8路,并且可以稱為多路高速緩存或者多路組相關(guān)聯(lián)的高速緩存。從而,高速緩存沈可以被描述為具有N組,每組都具有8路。在可選實施例中,高速緩存沈可以具有任意數(shù)量的組和任意數(shù)量的路。注意,如在此所述的,高速緩存行是指高速緩存路和組的交叉。例如, 路0包括N個高速緩存行,每個均對應(yīng)于組0至組N-I中的一個。從而,當選擇路用于代替時,一個或多個高速緩存行(其由索引部分四選擇,將在以下描述)中的信息實際被替換。 即,整個路可以不被替換,而是僅一個或多個特定行。在所示實施例中,高速緩存電路21是在多個高速緩存行或條目中的每個中存儲信息的存儲電路。例如,高速緩存電路21包括標簽、狀態(tài)、高速緩存數(shù)據(jù)、以及用于高速緩存行或條目的保護字段。地址25從處理器30提供。地址25包括標簽部分27、索引部分四、偏移量部分32。索引部分四被提供給高速緩存電路21,其指示特定高速緩存行(即, 組0至組N-I中的一個)。比較電路23被連接以接收標簽部分27,并且被連接至高速緩存電路21,以接收標簽和狀態(tài)信息。基于所接收的該信息,比較電路23確定是否存在高速緩存命中或高速緩存丟失。在所示實施例中,被標記為HIT_WAY
34的多個命中/丟失信號被提供給高速緩存控制電路38。每個HIT_WAY
34信號都指示在高速緩存電路21中是否存在用于其相應(yīng)路的高速緩存命中。除了或者代替高速緩存命中信號,可選實施例可以使用高速緩存丟失信號。高速緩存控制電路38通過導體或者信號36和39連接至高速緩存電路21。包括索引部分四的來自處理器30的地址25也被提供給高速緩存控制電路38,用于指示特定高速緩存行(即,組0至組N-I中的一個),以及用于提供用于其它控制操作的標簽27和偏移量32部分。高速緩存控制電路38包括錯誤動作控制寄存器48、輸出選擇邏輯37、以及錯誤控制電路66。錯誤動作控制寄存器48連接至錯誤控制電路66,并且錯誤控制電路連接至輸出選擇邏輯37。錯誤控制電路66還將一個或多個錯誤指示符提供給總線M。輸出選擇邏輯將信息提供給總線對。高速緩存控制電路38也被連接以從總線M接收信息。錯誤控制電路66包括用于高速緩存電路21中的每路的錯誤控制電路路0錯誤控制電路至路7錯誤控制電路。以下將更詳細描述的錯誤控制電路66執(zhí)行用于高速緩存 26的錯誤檢測和選擇性錯誤校正。高速緩存控制電路38還可以包括執(zhí)行其他高速緩存功能的其他電路,在本領(lǐng)域中應(yīng)該很好理解,從而在此不更加詳細地描述該其他電路。還參考圖2,索引部分四被用于選擇高速緩存電路21中的組。來自高速緩存電路21的標簽信息與標簽27進行比較,并且通過來自高速緩存電路21的狀態(tài)信息(例如, 有效位)限定。比較和限定(例如,匹配和有效)的結(jié)果確定高速緩存命中是否發(fā)生。如上所述,每個HIT_WAY
34信號都指示在高速緩存電路21中是否存在用于其相應(yīng)路的高速緩存命中。
在對高速緩存沈的讀取訪問的情況下,當高速緩存命中時,經(jīng)由導體39將導致高速緩存命中的高速緩存數(shù)據(jù)和高速緩存行的保護字段提供給高速緩存控制電路38。在錯誤控制電路66內(nèi)用于導致高速緩存命中的路的相應(yīng)錯誤控制電路使用接收到的保護信息對接收到的高速緩存數(shù)據(jù)執(zhí)行錯誤檢測和/或校正。使用錯誤動作控制寄存器48內(nèi)的設(shè)置, 選擇使用的錯誤檢測和/或校正方案,以下將參考圖6更詳細地描述。而且,如果檢測到錯誤,則在錯誤控制電路66內(nèi)用于導致高速緩存命中的路的相應(yīng)錯誤控制電路使用錯誤動作控制寄存器48內(nèi)的設(shè)置,以響應(yīng)于檢測到的錯誤確定將被采用的錯誤動作,以下將更詳細地描述。然后,高速緩存數(shù)據(jù)可以經(jīng)由輸出選擇邏輯被提供給總線對,其中,輸出選擇邏輯使用HIT_WAY
34來選擇錯誤控制電路66內(nèi)用于導致高速緩存命中的路的相應(yīng)錯誤控制電路的輸出。注意,如果還執(zhí)行錯誤校正,則校正后的高速緩存數(shù)據(jù)將經(jīng)由輸出選擇邏輯37輸出,而不是從高速緩存電路21提供的數(shù)據(jù)。而且,注意,一個或多個錯誤指示符還可以經(jīng)由輸出選擇邏輯37被提供給總線24,以指示錯誤是否已經(jīng)發(fā)生。而且,如果提供校正后的高速緩存數(shù)據(jù),則一個或多個錯誤指示符可以是否定的,以指示提供的高速緩存數(shù)據(jù)不存在錯誤(由于其已經(jīng)被校正)。在這種情況下,檢測到的錯誤對于處理器30是透明的。在對高速緩存沈?qū)懺L問的情況下,當高速緩存命中時,可以通過高速緩存控制電路38從總線M接收信息(例如,用于存儲到高速緩存電路21的高速緩存數(shù)據(jù))。高速緩存數(shù)據(jù)可以通過經(jīng)由導體39將新數(shù)據(jù)合并至高速緩存電路21的合適高速緩存行,由高速緩存控制電路38提供用于存儲。而且,高速緩存控制電路38可以適當?shù)馗赂咚倬彺嫘械臓顟B(tài)字段。狀態(tài)信息可以包括狀態(tài),諸如指示高速緩存行有效的有效(V)標簽,以及指示高速緩存行關(guān)于位于存儲器16或存儲器觀中的副本被修改的臟(D)標簽。如現(xiàn)有技術(shù)中已知的,還可以實現(xiàn)其他狀態(tài)標簽。(注意,由于在本領(lǐng)域中已經(jīng)很了解,所以未示出用于接收高速緩存數(shù)據(jù)并且將其路由至導致命中的高速緩存電路21內(nèi)的行并且更新狀態(tài)信息的特定電路)。接收到的高速緩存數(shù)據(jù)還被提供給錯誤控制電路66,使得錯誤控制電路66(如由HIT_WAY
34選擇的)內(nèi)的相應(yīng)錯誤控制電路可以生成合適的更新后的保護信息,以下將參考圖6更詳細地描述。還可以通過高速緩存控制電路38提供該相應(yīng)的保護信息以及接收到的高速緩存數(shù)據(jù),用于存儲到導致高速緩存行命中的高速緩存電路21的合適高速緩存行。注意,如果還執(zhí)行錯誤校正,則校正后的接收到的高速緩存數(shù)據(jù)(如果檢測到錯誤)將被提供用于存儲回高速緩存電路21,以與合并后的存儲數(shù)據(jù)一起用于寫訪問。在高速緩存丟失的情況下,高速緩存控制電路38內(nèi)的分配邏輯(未示出)識別用于替換的高速緩存行并且更新高速緩存行。高速緩存分配的任何已知方法可以被用于選擇用于替換的高速緩存行,諸如,例如輪轉(zhuǎn)方法、最近使用的偽最少(PLRU)方法等。當高速緩存丟失時,用于存儲到新分配的高速緩存行的新高速緩存數(shù)據(jù)通過總線M被提供給高速緩存控制電路38。然后,新高速緩存數(shù)據(jù)經(jīng)由導體39被提供以用于存儲到高速緩存電路 21的新分配的高速緩存行。而且,高速緩存控制電路38可以適當?shù)厣蔂顟B(tài)信息,用于存儲到新分配的高速緩存行的狀態(tài)字段的。(注意,用于接收高速緩存數(shù)據(jù)并將其路由到電路21中新分配的高速緩存行并且生成用于新分配的高速緩存行的狀態(tài)信息的特定電路未示出,這是因為其在本領(lǐng)域中很好理解)。新高速緩存數(shù)據(jù)還被提供給錯誤控制電路66,使得錯誤控制電路66內(nèi)的相應(yīng)錯誤控制電路(對應(yīng)于由代替邏輯49選擇的路,其包括新分配的高速緩存行)可以生成合適的保護信息,以下將參考圖6更詳細地描述。該相應(yīng)保護信息以及接收到的高速緩存數(shù)據(jù)還可以通過高速緩存控制電路38提供,用于存儲到高速緩存電路21的新分配的高速緩存行。在所示的實施例中,高速緩存控制電路38還將控制信號36提供給高速緩存電路 21 (例如,用于讀/寫控制)。例如,在處理器30的控制下,高速緩存控制電路38可以更新高速緩存電路21。例如,處理器30可以執(zhí)行特定高速緩存指令,以更新狀態(tài)信息。而且,在一個實施例中,在處理器30的控制下,高速緩存控制電路38諸如經(jīng)由特定高速緩存指令或者經(jīng)由到特定目的寄存器指令的移動,可以更新錯誤動作控制寄存器48,例如以在檢測到錯誤時動態(tài)地改變將執(zhí)行的錯誤動作。雖然圖2示出了可以用于實現(xiàn)圖1的高速緩存沈的一部分的特定電路,但是可選實施例可以使用任何理想電路??梢允褂枚喾N電路實現(xiàn)。圖 2中所示的電路僅用于示出一個可能實施例。圖3以示意圖形式示出錯誤動作控制寄存器48的一個實施例,其包括3位高速緩存錯誤動作(CEA)字段、1位高速緩存錯誤檢驗啟用(CECE)字段、2位高速緩存錯誤檢測類型(CEDT)字段、1位高速緩存無效(CINV)字段、以及1位高速緩存啟用(CE)字段。圖4和圖5以表格形式示出圖3中所示的錯誤動作控制寄存器48的字段的描述。例如,CEA是指示當高速緩存錯誤由錯誤控制電路66檢測時,將采用什么錯誤動作的3位字段。圖4示出用于CEA字段的多種編碼的一個實例。在一個實施例中,當CEA字段具有值000時,錯誤檢測導致機器檢查異常,其然后可以由軟件中斷處理器處理。例如, 高速緩存26的內(nèi)容可以由使用可用高速緩存陣列訪問機制的軟件檢驗。例如,在一個實施例中,對高速緩存陣列的訪問可以通過對導致錯誤的高速緩存行的高速緩存標簽、狀態(tài)、保護和數(shù)據(jù)部分的內(nèi)容的存儲器映射訪問而被作出??商鎿Q地,對高速緩存陣列的訪問可以通過一個或多個測試訪問寄存器或者直接高速緩存訪問控制和數(shù)據(jù)寄存器作出,以獲得高速緩存行的狀態(tài)。以此方式,錯誤的檢測被報告給處理器30,導致處理器機器檢查異?;蜍浖幚淼闹袛?,并且從而錯誤的檢測對于處理器30是非透明的。在一個實施例中,以不修改高速緩存的內(nèi)容來生成機器檢查異常,其中,異常允許登記檢測到的錯誤并且檢查高速緩存內(nèi)的存儲信息,以收集關(guān)于檢測到的錯誤的信息。然后,軟件可以登記任何期望的統(tǒng)計信息或關(guān)于錯誤的類型的其他信息、或者檢測到的錯誤與數(shù)據(jù)處理系統(tǒng)10的其他狀態(tài)的關(guān)系。在一個實施例中,據(jù)此,軟件可以執(zhí)行一個或多個校正操作,以允許通過中斷程序的處理器繼續(xù)執(zhí)行。在一個實施例中,當CEA字段具有值001時,錯誤檢測導致自動無效操作,其中,例如,導致高速緩存錯誤的高速緩存行被無效。在一個實施例中,即使導致高速緩存錯誤的高速緩存行不導致高速緩存命中,導致高速緩存錯誤的高速緩存行也被無效。這可以通過否定導致高速緩存錯誤的高速緩存行的狀態(tài)字段的有效位而作出。而且,不生成機器檢查異常,從而提供透明操作,其中,該錯誤動作對于處理器30是透明的。在該情況下,在一個實施例中,高速緩存行的無效導致發(fā)生高速緩存丟失,而不是發(fā)出軟件異常的信號,并且高速緩存行可以從存儲器16或存儲器觀重新填充,從而消除了軟錯誤,并且允許處理以沒有異常來正常進行,導致透明操作。在一個實施例中,當CEA字段具有值010時,錯誤檢測導致機器檢查異常和自動無效。該錯誤動作允許通過機器檢查異常登記錯誤的發(fā)生,并且通過使導致高速緩存錯誤的高速緩存行無效,排除相同錯誤的再次發(fā)生。排除錯誤的再次發(fā)生可以防止機器檢查異常處理器遭受相同錯誤并且在循環(huán)中變?yōu)樽枞那闆r。在一個實施例中,CEA字段的該設(shè)置 (其導致機器檢查異常和自動無效)被用作“重新執(zhí)行”在產(chǎn)生問題的行(即,包括錯誤的高速緩存行)被無效之后檢測錯誤的指令的機制。即,在一個實施例中,采用機器檢查異常的效果導致正被執(zhí)行的指令將被抑制,并且來自機器檢查異常的正常軟件返回機制導致在被無效之后指令被重新執(zhí)行。這可以簡化路線的一些實現(xiàn),諸如對導致錯誤檢測的數(shù)據(jù)高速緩存的訪問,使得硬件不必須指出特定路,以在檢測到錯誤之后重新執(zhí)行指令。在一個實施例中,當CEA字段具有值011時,如果高速緩存行是干凈高速緩存行 (其中,干凈高速緩存行是與諸如存儲器觀或16這樣的存儲器一致的高速緩存行,從而包括與存儲器中的相應(yīng)位置相同的數(shù)據(jù)),則錯誤檢測導致自動無效。然而,如果高速緩存行是臟高速緩存行時(即,修改后的高速緩存行,其中,高速緩存行與存儲器不一致,從而包括關(guān)于存儲在存儲器觀或16中的相應(yīng)位置處的數(shù)據(jù)被修改的數(shù)據(jù)),則錯誤檢測導致機器檢查異常,并且高速緩存行保留不變。注意,在這種情況下,如果臟高速緩存行被無效,則由于存儲器觀或16中的相應(yīng)存儲器位置不包括存儲在臟高速緩存行中的最新數(shù)據(jù),失去存儲器一致性。在一個實施例中,避免臟行的無效允許軟件錯誤處理器嘗試達到可恢復狀態(tài),用于臟行遇到軟錯誤的情況,但是對于軟錯誤發(fā)生在干凈行上的正常情況,操作以透明方式繼續(xù)進行。在一個實施例中,當CEA字段具有值100時,錯誤檢測導致自動校正(諸如,通過錯誤校正方案)。在該實例中,錯誤動作不包括高速緩存行無效,并且不生成機器檢查異常。 該錯誤動作提供錯誤發(fā)生的最透明。即,該錯誤動作提供高速緩存錯誤到處理器30的最大透明。在一個實施例中,當CEA字段具有值101時,錯誤檢測導致自動校正(諸如,通過錯誤校正方案),并且導致機器檢查異常。以此方式,即使錯誤可以被透明地校正,錯誤的可見性經(jīng)由機器檢查異常被提供給處理器30。在所示實施例中,用于CEA字段的值110和111被保留用于可能的未來使用。從而,可以看出CEA字段如何能夠提供高速緩存錯誤到處理器30的透明度的變化等級。例如, 在圖4的實施例中,提供最透明度的錯誤動作是與CEA值001或110相關(guān)的那些,其中,執(zhí)行自動無效或者執(zhí)行自動校正。在這些情況的一個中,錯誤檢測對于處理器30是透明的, 其中,處理器30的操作不由于高速緩存錯誤而被中斷或者干擾。然而,包括生成機器檢查異常的錯誤動作是非透明的。這些非透明動作可以允許登記或者與將執(zhí)行的錯誤發(fā)生相關(guān)的其他軟件處理。還參考圖4,CECE是禁用或啟用高速緩存錯誤檢驗的1位字段。例如,當CECE字段具有值0時,禁用錯誤檢驗。例如,在這種情況下,所有錯誤控制電路66都可能不能執(zhí)行任何錯誤檢測和/或校正。例如,當CECE字段具有值1時,啟用錯誤檢驗。在這種情況下,啟用錯誤控制電路66,并且錯誤控制電路66根據(jù)錯誤動作控制寄存器48中的其他設(shè)置(諸如,CEA和CEDT字段)操作。CEDT是指示將執(zhí)行的高速緩存錯誤檢測的類型的2位字段。 例如,當CEDT字段具有值00時,選擇奇偶檢驗錯誤檢測(例如,單個位錯誤檢測),并且當 CEDT字段具有值01時,選擇錯誤檢測碼(EDC)錯誤檢測(例如,多個位錯誤檢測)。在EDC 的情況下,注意,可以執(zhí)行或者可以不執(zhí)行錯誤校正碼(ECC)操作。例如,CEA字段的設(shè)置將幫助確定是否將執(zhí)行錯誤校正。在圖5中,CINV字段是指示高速緩存無效操作是否將被執(zhí)行的1位字段。例如, 當CINV字段具有值0時,不執(zhí)行高速緩存無效,但是當CINV字段具有值1時,執(zhí)行高速緩存無效操作。例如,當設(shè)置為“1”時,高速緩存無效操作由硬件啟動。一旦完成,該位就被重置為“0”。在一個實施例中,在無效操作進行中時寫入“1”將導致未定義的操作,并且在無效操作進行中時將“0”寫入該位將被忽略。而且,在一個實施例中,不管CE字段的值如何,高速緩存無效操作都發(fā)生。還參考圖5,CE字段是指示高速緩存是否被啟用的1位字段。例如,當CE字段具有值0時,高速緩存被禁用,并且高速緩存查找不被執(zhí)行用于處理器訪問。然而,其他高速緩存控制操作仍然可用。當CE字段具有值1時,高速緩存被啟用。在可選實施例中,根據(jù)需要,錯誤動作控制寄存器48可以包括更多或更少字段, 并且每個字段可以包括更多或更少位。雖然圖2中示出了高速緩存沈的一種類型的結(jié)構(gòu), 但是高速緩存26的可選實施例可以使用任何期望的或合適的結(jié)構(gòu)。圖2中所示的結(jié)構(gòu)僅是一種可能的代表性結(jié)構(gòu)??梢允褂迷试S期望的高速緩存錯誤動作的任何高速緩存結(jié)構(gòu)。圖6示出根據(jù)本發(fā)明的一個實施例的表示高速緩存沈的一部分的電路31。電路 31包括存儲器存儲電路40,其表示高速緩存電路21的路0的部分。存儲器存儲電路40包括多個庫和保護存儲(protection storage) 45。在所示實施例中,存儲器存儲電路40包括 8個庫庫0 42,庫1 43,…庫7 44??蛇x實施例可以包括任何數(shù)量的庫。在所示實施例中,庫0-7表示路0的高速緩存數(shù)據(jù)部分,其中,每個庫都是1字節(jié)寬,并且保護存儲45表示路0的保護部分。庫0-7中的每個都存儲N個字節(jié),一個字節(jié)對應(yīng)于組0至N-I中的每個。從而,在所示實施例中,具有8個庫,路0的每個高速緩存數(shù)據(jù)字段都存儲雙字。如果路0的每個高速緩存數(shù)據(jù)字段存儲多于雙字,則當需要時,電路40應(yīng)該包括更多庫、或者更寬庫,并且當需要時,應(yīng)該包括更大保護存儲。還要注意,圖3在此的描述類似地應(yīng)用于路 0-7中的每個。電路31包括路0錯誤控制電路,其是錯誤控制電路66的一部分。路0錯誤控制電路雙向連接至存儲器存儲電路40 (到高速緩存電路21的路0的部分),并且包括路0選擇邏輯60、模式邏輯50 (其被連接以從錯誤動作控制寄存器48接收信息)、共享異-ORO(OR) 樹52、以及錯誤檢測和校正邏輯M (其也被連接,以從錯誤動作控制寄存器48接收信息)。 模式邏輯50基于錯誤動作控制寄存器48的CEDT字段的值,將模式指示符62輸出至路0 選擇邏輯60的控制輸入。在一個實施例中,模式62指示什么錯誤檢測模式電路31正在操作。例如,在所示實施例中,基于控制寄存器48中的CEDT控制字段的值,模式62指示電路 31是在EDC模式(多個位錯誤檢測)下操作還是在奇偶檢驗?zāi)J?單個位錯誤檢測)下操作。注意,在一個實施例中,當高速緩存錯誤檢驗被啟用時(當CECE字段具有值1時),模式指示符62基于CEDT控制字段的值被輸出。然而,在一個實施例中,當CECE控制字段指示高速緩存錯誤檢驗沒有被啟用時(當CECE字段具有值0時),模式62被設(shè)置成使得路0 選擇邏輯60從電路40而不是錯誤檢測和校正邏輯M選擇輸出,并且禁用錯誤檢測和校正邏輯M。在EDC模式下,保護存儲45的每個條目都為庫0_7內(nèi)的相應(yīng)條目存儲相應(yīng)檢驗位。例如,保護存儲45的第一條目存儲與存儲在庫0-7中的每個的第一條目中的數(shù)據(jù)對應(yīng)的檢驗位。在奇偶檢驗?zāi)J较拢Wo存儲45的每個條目都存儲與庫0-7的每個中的條目對應(yīng)的奇偶檢驗位。例如,在奇偶檢驗?zāi)J较?,保護存儲45的第一條目為庫0-7的每個中的第一條目存儲奇偶檢驗位。從而,在其中存在8個庫的所示實施例中,保護存儲45的每個條目都存儲奇偶檢驗的8位,每一個用于庫0-7中的每個。在一個實施例中,這些相同的8 位被用于在EDC模式下為在庫0-7中的集體的64位數(shù)據(jù)存儲檢驗位56。在EDC模式下,共享XOR樹52被連接以從庫0至庫7中的每個并且從保護存儲45 接收信息。在EDC模式下,共享XOR樹52基于從高速緩存控制電路38的其他部分接收的信息(其可以來自總線對)、或者從庫0-7中的每個中的特定條目接收的信息、或者兩者的結(jié)合,生成被提供給保護存儲45用于存儲在相應(yīng)條目中的檢驗位56。而且,在EDC模式下, 共享XOR樹52基于從庫0-7中的每個中的特定條目接收的信息和來自保護存儲45的相應(yīng)檢驗位,生成被提供給校正邏輯M的校正子位58。在EDC模式下,錯誤檢測和校正邏輯M 還從庫0-7中的每個中的特定條目接收信息,并且使用相應(yīng)校正子位58執(zhí)行多個位錯誤檢測。如果檢測到錯誤,則控制電路66執(zhí)行由錯誤動作控制寄存器48的CEA字段指示的錯誤動作。如果CEA字段指示自動校正將發(fā)生(諸如,當CEA字段具有值100或101時),則錯誤檢測和校正邏輯M還校正接收到的信息,并且將校正后的信息從庫0-7的特定條目提供至路0選擇邏輯60。從而,路0選擇邏輯60基于模式62的值,將校正邏輯M的輸出提供到輸出選擇邏輯37 (如果在自動校正將被執(zhí)行的EDC模式下),或者直接將庫0-7中的一個或多個的輸出提供到輸出選擇邏輯37 (如果在自動校正將不執(zhí)行的EDC模式下或者在奇偶檢驗?zāi)J较?。當高速緩存命中在路0中發(fā)生時,輸出選擇邏輯37選擇路0選擇邏輯60的輸出以提供給總線對。注意,在奇偶檢驗?zāi)J较?,相?yīng)奇偶檢驗位還可以從保護存儲45提供給輸出選擇邏輯37。而且,錯誤檢測和校正邏輯M可以將錯誤指示符提供給總線24,以指示錯誤是否發(fā)生。在一個實施例中,由CEA字段的值指示的錯誤動作的其他部分可以通過錯誤控制電路66的其他部分、高速緩存控制電路38、或處理器30或其結(jié)合執(zhí)行。例如,基于錯誤指示符或者響應(yīng)于錯誤指示符,當由CEA字段指示時,可以生成機器檢查異常,或者可以執(zhí)行自動無效。從而,對于在奇偶檢驗?zāi)J较碌母咚倬彺婷凶x取操作,或者當用EDC操作時,選擇邏輯60將庫0-7中的一個或多個的訪問條目的輸出以及相應(yīng)奇偶檢驗位提供給輸出選擇邏輯37。對于在ECC模式下的高速緩存命中讀取操作,選擇邏輯60將錯誤檢測和校正邏輯M的輸出提供給輸出選擇邏輯37。對于奇偶檢驗?zāi)J较碌母咚倬彺婷袑懭氩僮骰蛘弋斣谄媾紮z驗?zāi)J较赂咚倬彺鎭G失時執(zhí)行的高速緩存分配操作,寫入數(shù)據(jù)被直接提供給庫 0-7中的一個或多個中的條目,其由寫入操作訪問地址尋址。即,可以對庫0-7中的任何數(shù)量的庫執(zhí)行寫入,并且在共享XOR樹52中生成之后,在保護存儲45的相應(yīng)條目中的相應(yīng)奇偶檢驗位還基于每位被更新。以此方式,如果僅一個庫被寫入以作為寫入操作的結(jié)果,則僅保護存儲45的相應(yīng)條目中的一位被更新。在奇偶檢驗?zāi)J较缕媾紮z驗位的更新可以以已知方式通過控制邏輯66 (未示出)內(nèi)的邏輯執(zhí)行。對于在EDC模式下的全部寫入操作,其中,所有庫0-7都被寫入(即,其中,全部高速緩存數(shù)據(jù)字段被寫入),不需要執(zhí)行讀取-修改-寫入(RMW)操作。以此方式,可以通過一次或單次訪問(例如,在單個處理器周期或者單個時鐘周期)執(zhí)行全部寫入操作(寫入到存儲器存儲電路40的所有庫)。在這種情況下,寫入數(shù)據(jù)被提供給由全部寫入操作訪問地址尋址的庫0-7中的每個條目。寫入數(shù)據(jù)還被提供給共享XOR樹52,其生成相應(yīng)檢驗位并且經(jīng)由檢驗位56將它們提供給保護存儲45,用于存儲在相應(yīng)條目中。在一個實施例中, 共享XOR樹52是組合邏輯,其中,當將寫入數(shù)據(jù)寫入到庫0-7時,在相同處理器或者時鐘周期中可以完成檢驗位的生成和寫回。對于EDC模式下的部分寫入操作,其中,不是所有庫0-7都被寫入,需要讀取_修改-寫入(RMW)。從而,對不是所有庫0-7(即,少于全部高速緩存數(shù)據(jù)字段)執(zhí)行寫入操作要求多次訪問(例如,多個處理器周期或者時鐘周期),并且不能像在全部寫入操作的情況下一樣通過單次訪問執(zhí)行。由于實現(xiàn)讀取-修改-寫入操作的復雜性,在一些實施例中可能不支持對不是所有庫0-7的寫入操作。圖7以流程圖形式示出根據(jù)本發(fā)明的一個實施例的用于操作圖1的數(shù)據(jù)處理系統(tǒng) 10的方法。該方法開始于框70,錯誤動作被設(shè)置為執(zhí)行自動校正并且不報告(關(guān)于以上關(guān)于圖4提供的CEA字段的實例,在框70中,CEA字段可以被設(shè)置為控制值100)。然后,流程進行至框72,其中,執(zhí)行關(guān)鍵應(yīng)用部分。由于不報告錯誤(例如,不生成機器檢查異常)并且不要求錯誤的登記,所以利用最大透明度執(zhí)行關(guān)鍵應(yīng)用部分。以此方式,錯誤檢測和校正功能對處理器30是透明的。然后,流程進行至框74,其中,錯誤動作被設(shè)置成執(zhí)行具有報告的自動校正(關(guān)于以上關(guān)于圖4提供的CEA字段的實例,在框74中,CEA字段可以被設(shè)置為控制值101)。然后,流程進行至框76,其中,執(zhí)行具有最大可見度(即,最小透明度)的診斷應(yīng)用。在這種情況下,由于最小透明度,當這種錯誤通過例如生成機器檢查異常發(fā)生時, 錯誤被校正但是處理器30被告知。例如,在一個實施例中,診斷應(yīng)用可以通過改變電源電壓(VDD)、頻率、訪問模式等來加壓操作極限參數(shù)。從而,通過動態(tài)地改變CEA字段的值,可以為不同類型的應(yīng)用實現(xiàn)多種等級的透明度(即,對處理器30的多種等級的可見度)。例如,在一個實施例中,可以限定時間間隔,其具有第一部分(從時間0到中間時間)以及第二部分(從中間時間到時間X),如沿著圖7的流程圖的左側(cè)所示的。在一個實施例中,該時間間隔可以重復,使得每次重復時間間隔,利用最小可見度和最大透明度在時間間隔的第一部分期間執(zhí)行關(guān)鍵應(yīng)用部分,并且利用最大可見度和最小透明度在時間間隔的第二部分期間執(zhí)行診斷應(yīng)用。從而,CEA字段的設(shè)置可以被用于允許特定時間間隔(其然后可以重復)內(nèi)的不同類型的應(yīng)用之間的透明度和錯誤動作的改變。到現(xiàn)在,應(yīng)該想到,已經(jīng)提供了通過響應(yīng)于高速緩存中的軟錯誤的檢測動態(tài)地改變將被執(zhí)行的錯誤動作,來改變對處理器30的透明度的等級的方法。這可以例如通過寄存器內(nèi)的用戶可編程控制字段(諸如,CEA字段,當需要時,其可以被修改)的使用,以改變所采用的錯誤動作來實現(xiàn)。例如,可以在執(zhí)行不同類型的應(yīng)用之前改變錯誤動作,使得當在高速緩存中檢測到軟錯誤時,不同類型的應(yīng)用涉及不同等級的透明度。從而,控制字段(諸如,CEA字段)的使用可以允許靈活機制估計并且克服軟錯誤。由于在極大程度上,實現(xiàn)本發(fā)明的裝置由本領(lǐng)域技術(shù)人員已知的電子組件和電路構(gòu)成,所以如上所述,為于理解和判斷本發(fā)明的基本概念并且為了不模糊或脫離本發(fā)明的教導,除了認為必須時,都不在任何更大范圍內(nèi)解釋電路詳情。在適當?shù)臅r候,上述實施例中的一些可以使用多種不同信息處理系統(tǒng)實現(xiàn)。例如, 雖然圖1及其論述描述典型信息處理結(jié)構(gòu),但是該典型結(jié)構(gòu)僅用于在論述本發(fā)明的多個方面時提供有用參考。當然,為了論述的目的,該結(jié)構(gòu)的描述已經(jīng)被簡化,并且其僅是可以根據(jù)本發(fā)明使用的多種不同類型的合適結(jié)構(gòu)之一。本領(lǐng)域技術(shù)人員將認識到,邏輯框之間的邊界僅是示意性的,并且可選實施例可以合并邏輯框或電路元件,或者強制將功能的可選分解加于多種邏輯塊或電路元件。從而,將明白,在此描述的結(jié)構(gòu)僅是實例,并且實際上,可以實現(xiàn)完成相同功能的多種其他結(jié)構(gòu)。在理論上,但是仍然具有明確的意義,實現(xiàn)相同功能的組件的任何布置都有效地“相關(guān)”,使得實現(xiàn)期望的功能。因此,為了實現(xiàn)特定功能在此結(jié)合的任何兩個組件都可以看做相互“相關(guān)”,使得實現(xiàn)期望的功能,而不管結(jié)構(gòu)或中間組件如何。同樣地,如此相關(guān)的任何兩個組件也可以被看做相互“可操作地連接”、或者“可操作地耦合”以實現(xiàn)期望的功能。還例如,在一個實施例中,數(shù)據(jù)處理系統(tǒng)10的所示元件是位于單個集成電路或者相同設(shè)備內(nèi)的電路??商鎿Q地,數(shù)據(jù)處理系統(tǒng)10可以包括任何數(shù)量的獨立集成電路或者相互互聯(lián)的獨立設(shè)備。例如,存儲器16可以位于與處理模塊12相同的集成電路上或者在獨立集成電路上、或者位于分散地獨立于數(shù)據(jù)處理系統(tǒng)10的其他元件的另一外圍設(shè)備或者從屬設(shè)備內(nèi)。外圍設(shè)備18和20還可以位于獨立集成電路或設(shè)備上。還例如,數(shù)據(jù)處理系統(tǒng)10或其部分可以是物理電路的軟件或代碼表示或者可變換為物理電路的邏輯表示。這樣,數(shù)據(jù)處理系統(tǒng)10可以以任何合適類型的硬件描述語言表達。而且,本領(lǐng)域技術(shù)人員將認識到,上述操作的功能之間的邊界僅是示意性的。多個操作的功能可以結(jié)合到單個操作中,和/或單個操作的功能可以分配在另外的操作中。而且,可選實施例可以包括特定操作的多個實例,并且操作的順序在多種其他實施例中可以改變。在此所述的所有或一些軟件可以是例如從計算機可讀介質(zhì)諸如存儲器16或其他計算機系統(tǒng)上的其他介質(zhì)接收的數(shù)據(jù)處理系統(tǒng)10的元件。這種計算機可讀介質(zhì)可以永久地、可拆除地或者遠程地連接至信息處理系統(tǒng)諸如數(shù)據(jù)處理系統(tǒng)10。計算機可讀介質(zhì)可以包括但不限于例如以下任何數(shù)量的介質(zhì)磁性存儲介質(zhì),包括光盤和磁帶存儲介質(zhì);光學存儲介質(zhì),諸如,光盤介質(zhì)(例如,CD-R0M、CD-R等)和數(shù)字視頻盤存儲介質(zhì);非易失性存儲器存儲介質(zhì),包括基于半導體的存儲器單元,諸如,F(xiàn)LASH存儲器、EEPROM、EPROM、ROM ;鐵磁數(shù)字存儲器;MRAM ;易失性存儲介質(zhì),包括寄存器、緩存或高速緩存、主存儲器、RAM等;以及數(shù)據(jù)發(fā)送介質(zhì),包括計算機網(wǎng)絡(luò)、點到點電信設(shè)備、以及載波發(fā)送介質(zhì),僅以這些為例。在一個實施例中,數(shù)據(jù)處理系統(tǒng)10是計算機系統(tǒng),諸如個人計算機系統(tǒng)。其他實施例可以包括不同類型的計算機系統(tǒng)。計算機系統(tǒng)是可以被設(shè)計成給一個或多個用戶提供獨立計算功率的信息處理系統(tǒng)。計算機系統(tǒng)可以以多種形式建立,包括但不限于主機、微型計算機、服務(wù)器、工作站、個人計算機、筆記本、個人數(shù)字助理、電子游戲、自動和其他嵌入式系統(tǒng)、手機和多種其他無線設(shè)備。典型計算機系統(tǒng)包括至少一個處理單元、相關(guān)存儲器和多個輸入/輸出(I/O)設(shè)備。計算機系統(tǒng)根據(jù)程序處理信息并且經(jīng)由I/O設(shè)備產(chǎn)生因此得到的輸出信息。程序是指令的列表,諸如特定應(yīng)用程序和/或操作系統(tǒng)。計算機程序通常被內(nèi)部存儲在計算機可讀存儲介質(zhì)上或者經(jīng)由計算機可讀發(fā)送介質(zhì)被發(fā)送至計算機系統(tǒng)。計算機進程通常包括執(zhí)行(運行)程序或者程序的一部分、當前程序值和狀態(tài)信息、以及由操作系統(tǒng)使用以管理處理的執(zhí)行的資源。父進程可以創(chuàng)建其他子進程,以幫助執(zhí)行父進程的整體功能。由于父進程特別創(chuàng)建子進程,以執(zhí)行父進程的整體功能的一部分,所以由子進程(以及孫輩進程等) 執(zhí)行的功能有時可以被描述為由父進程執(zhí)行。雖然參考特定實施例描述了本發(fā)明,但是在不脫離在以下權(quán)利要求中闡述的本發(fā)明的范圍內(nèi)可以作出多種修改和改變。例如,在地址字段中使用的多個位可以根據(jù)系統(tǒng)要求被修改。從而,說明書和附圖被認為是示意性的而不是限制性的,并且所有這種修改都旨在包括在本發(fā)明的范圍內(nèi)。在此關(guān)于特定實施例描述的任何益處、優(yōu)點或問題的解決方案都不旨在構(gòu)建為任何或所有權(quán)利要求的關(guān)鍵的所要求的或者基本的特征或元件。在此使用的術(shù)語“連接”不旨在限制為直接連接或者機械連接。而且,在此使用的術(shù)語“一個”被限定一個或多于一個。而且,權(quán)利要求中的引入語諸如“至少一個”和“一個或多個”的使用應(yīng)該不被構(gòu)建為暗示即使當相同權(quán)利要求包括引入語“一個或多個”或者“至少一個”以及諸如“一個”的不定冠詞時,由不定冠詞“一個”引入另一權(quán)利要求元件將包括這種引入的權(quán)利要求元件的任何特定權(quán)利要求限制到僅包括一個這種元件的發(fā)明。同樣也適用于定冠詞。除非另外說明,諸如“第一”和“第二”的術(shù)語被用于在這種術(shù)語描述的元件之間進行任意區(qū)分。從而,這些術(shù)語不必須用于指示這種元件的時間或其他優(yōu)先順序。以下是本發(fā)明的多種實施例。第1項包括數(shù)據(jù)處理系統(tǒng),其包括處理器、連接至處理器的高速緩存、以及連接至高速緩存的高速緩存控制電路。高速緩存控制電路進一步包括用戶可編程錯誤動作控制寄存器,用于存儲用于當檢測到高速緩存錯誤時選擇將被采用的多個錯誤動作中的一個的控制值,其中,由用戶選擇的控制值的第一值以不發(fā)生異常來實現(xiàn)包括高速緩存錯誤的高速緩存行的自動無效,并且由用戶選擇的控制值的第二值以發(fā)生異常來執(zhí)行包括高速緩存錯誤的高速緩存行的自動無效,并且其中,用戶對確定將采用的錯誤動作是透明操作還是非透明操作的控制值進行動態(tài)編程。第2項包括第1項的數(shù)據(jù)處理系統(tǒng),其中,用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值以不修改高速緩存的內(nèi)容來生成異常,該異常允許登記檢測到的錯誤并且檢查高速緩存內(nèi)的存儲信息,以收集關(guān)于檢測到的錯誤的信息。 第3項包括第1項的數(shù)據(jù)處理系統(tǒng),其中,用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值以沒有與檢測到的錯誤相關(guān)的信息的無效并且不生成異常來實現(xiàn)檢測到的錯誤的自動校正。第4項包括第1項的數(shù)據(jù)處理系統(tǒng),其中,用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值實現(xiàn)檢測到的錯誤的自動校正并且生成異常。第5項包括第1項的數(shù)據(jù)處理系統(tǒng),其中,當在時間間隔的第一部分期間,控制值被設(shè)置為第一值時,利用高速緩存錯誤對處理器的透明度執(zhí)行應(yīng)用的第一部分,并且當在時間間隔的第二部分期間,控制值被設(shè)置為第二值時,其中,以高速緩存錯誤對處理器可見來執(zhí)行應(yīng)用的第二部分。第6項包括第 1項的數(shù)據(jù)處理系統(tǒng),其中,如果高速緩存行是干凈高速緩存行,用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值實現(xiàn)包括高速緩存錯誤的高速緩存行的自動無效,并且如果高速緩存行是臟高速緩存行,則生成異常并且高速緩存行保留不變。第7項包括第1項的數(shù)據(jù)處理系統(tǒng),其中,用戶可編程錯誤動作控制寄存器進一步包括第二控制值,第二控制值控制高速緩存控制電路的錯誤檢測的啟動。第8項包括以下方法,包括將處理器連接至高速緩存;將高速緩存控制電路連接
15至高速緩存,用于執(zhí)行高速緩存內(nèi)的信息的錯誤檢測;以及將用戶可編程錯誤動作控制寄存器連接至高速緩存控制電路。用戶可編程錯誤動作控制寄存器存儲用于當檢測到高速緩存錯誤時選擇將被采用的多個錯誤動作中的一個的控制值,其中,由用戶選擇的控制值的第一值以不發(fā)生異常來實現(xiàn)包括高速緩存錯誤的高速緩存行的自動無效,并且由用戶選擇的控制值的第二值以發(fā)生異常來實現(xiàn)包括高速緩存錯誤的高速緩存行的自動無效,并且其中,用戶對確定將被采用的錯誤動作是透明操作還是非透明操作的控制值進行動態(tài)編程。 第9項包括第8項的方法,并且進一步包括分配用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值,以在不修改高速緩存的內(nèi)容的情況下生成異常,該異常允許登記檢測到的錯誤并且檢查高速緩存內(nèi)的存儲信息,以收集關(guān)于檢測到的錯誤的信息。第10項包括第8項的方法,并且進一步包括分配用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值,用于以沒有與檢測到的錯誤相關(guān)的信息的無效并且不生成異常來實現(xiàn)檢測到的錯誤的自動校正。第11項包括第8項的方法,并且進一步包括分配用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值,以實現(xiàn)檢測到的錯誤的自動校正并且生成異常。第12項包括第8項的方法,并且進一步包括在時間間隔的第一部分期間將控制值設(shè)置為第一值,其中,利用高速緩存錯誤對處理器的透明度執(zhí)行應(yīng)用的第一部分;并且在時間間隔的第二部分期間將控制值設(shè)置為第二值,其中,以高速緩存錯誤對處理器可見來執(zhí)行應(yīng)用的第二部分。第13項包括第8項的方法,并且進一步包括在用戶可編程錯誤動作控制寄存器中提供第二控制值,第二控制值控制高速緩存控制電路的錯誤檢測的啟動。第14項包括第8項的方法,并且進一步包括分配用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值,從而,如果高速緩存行是干凈高速緩存行,則實現(xiàn)包括高速緩存錯誤的高速緩存行的自動無效,并且如果高速緩存行是臟高速緩存行,則生成異常并且保留高速緩存行不變。
第15項包括數(shù)據(jù)處理系統(tǒng),其包括處理器、連接至處理器的高速緩存、以及連接至高速緩存的高速緩存控制電路。高速緩存控制電路執(zhí)行錯誤檢測,并且進一步包括用戶可編程錯誤動作控制寄存器,用于存儲用于當檢測到高速緩存錯誤時將選擇被采用的一種類型的錯誤動作的控制值。第16項包括第15項的數(shù)據(jù)處理系統(tǒng),其中,可編程錯誤動作控制寄存器的控制值進一步包括第一值,允許處理對處理器透明的高速緩存錯誤;以及第二值,允許通過采用控制器可見的異常來處理高速緩存錯誤。第17項包括第16項的數(shù)據(jù)處理系統(tǒng),其中,用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值以不修改高速緩存的內(nèi)容來生成異常,該異常允許登記檢測到的錯誤并且檢查高速緩存內(nèi)的存儲信息,以收集關(guān)于檢測到的錯誤的信息。第18項包括第16項的數(shù)據(jù)處理系統(tǒng),其中,用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值以沒有與檢測到的錯誤相關(guān)的信息的無效并且不生成異常來實現(xiàn)檢測到的錯誤的自動校正。第19項包括第16項的數(shù)據(jù)處理系統(tǒng),其中,用戶可編程錯誤動作控制寄存器內(nèi)的控制值的第三值實現(xiàn)檢測到的錯誤的自動校正并且生成異常。第20項包括第16項的數(shù)據(jù)處理系統(tǒng),其中,在時間間隔的第一部分期間,控制值被設(shè)置為第一值,其中,利用高速緩存錯誤對處理器的透明度執(zhí)行應(yīng)用的第一部分,并且在時間間隔的第二部分期間,控制值被設(shè)置為第二值,其中,以高速緩存錯誤對處理器可見來執(zhí)行應(yīng)用的第二部分。
權(quán)利要求
1.一種數(shù)據(jù)處理系統(tǒng),包括處理器;高速緩存,連接至所述處理器;以及高速緩存控制電路,連接至所述高速緩存,所述高速緩存控制電路執(zhí)行錯誤檢測,所述高速緩存控制電路進一步包括用戶可編程錯誤動作控制寄存器,用于存儲控制值,所述控制值用于當檢測到高速緩存錯誤時選擇將被采用的多個錯誤動作中的一個,其中,由用戶選擇的所述控制值的第一值以不發(fā)生異常來實現(xiàn)包括所述高速緩存錯誤的高速緩存行的自動無效,并且由所述用戶選擇的所述控制值的第二值以發(fā)生異常來實現(xiàn)包括所述高速緩存錯誤的高速緩存行的自動無效,其中,所述用戶對確定將被采用的錯誤動作是透明操作還是非透明操作的所述控制值進行動態(tài)編程。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中,所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值以不修改所述高速緩存的內(nèi)容來生成異常,所述異常允許登記檢測到的錯誤并且檢查所述高速緩存內(nèi)的存儲信息,以收集關(guān)于所述檢測到的錯誤的信息。
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中,所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值以沒有與檢測到的錯誤相關(guān)的信息的無效并且不生成異常來實現(xiàn)所述檢測到的錯誤的自動校正。
4.根據(jù)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中,所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值實現(xiàn)檢測到的錯誤的自動校正并且生成異常。
5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中,當在時間間隔的第一部分期間,所述控制值被設(shè)置為所述第一值時,以高速緩存錯誤對所述處理器的透明來執(zhí)行應(yīng)用的第一部分,并且當在所述時間間隔的第二部分期間,所述控制值被設(shè)置為所述第二值時,以高速緩存錯誤對所述處理器可見來執(zhí)行所述應(yīng)用的第二部分。
6.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中,如果包括所述高速緩存錯誤的所述高速緩存行是干凈高速緩存行,則所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值實現(xiàn)所述高速緩存行的自動無效,并且如果所述高速緩存行是臟高速緩存行,則生成異常并且保留所述高速緩存行不改變。
7.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中,所述用戶可編程錯誤動作控制寄存器進一步包括第二控制值,所述第二控制值控制所述高速緩存控制電路的所述錯誤檢測的啟用。
8.一種方法,包括 將處理器連接至高速緩存;將高速緩存控制電路連接至所述高速緩存,用于執(zhí)行所述高速緩存內(nèi)的信息的錯誤檢測;以及將用戶可編程錯誤動作控制寄存器連接至所述高速緩存控制電路,所述用戶可編程錯誤動作控制寄存器存儲控制值,所述控制值用于當檢測到高速緩存錯誤時選擇將被采用的多個錯誤動作中的一個,其中,由用戶選擇的所述控制值的第一值以不發(fā)生異常來實現(xiàn)包括所述高速緩存錯誤的高速緩存行的自動無效,并且由所述用戶選擇的所述控制值的第二值以發(fā)生異常來實現(xiàn)包括所述高速緩存錯誤的高速緩存行的自動無效,其中,所述用戶對確定將被采用的錯誤動作是透明操作還是非透明操作的所述控制值進行動態(tài)編程。
9.根據(jù)權(quán)利要求8所述的方法,進一步包括分配所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值,以在不修改所述高速緩存的內(nèi)容的情況下生成異常,所述異常允許登記檢測到的錯誤并且檢查所述高速緩存內(nèi)的存儲信息,以收集關(guān)于所述檢測到的錯誤的信息。
10.根據(jù)權(quán)利要求8所述的方法,進一步包括分配在所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值,以在沒有與檢測到的錯誤相關(guān)的信息的無效并且不生成異常的情況下,實現(xiàn)所述檢測到的錯誤的自動校正。
11.根據(jù)權(quán)利要求8所述的方法,進一步包括分配在所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值,以實現(xiàn)檢測到的錯誤的自動校正并且生成異常。
12.根據(jù)權(quán)利要求8所述的方法,進一步包括在時間間隔的第一部分期間,將所述控制值設(shè)置為所述第一值,其中,以高速緩存錯誤對所述處理器的透明來執(zhí)行應(yīng)用的第一部分;以及在所述時間間隔的第二部分期間,將所述控制值設(shè)置為所述第二值,其中,以高速緩存錯誤對所述處理器可見來執(zhí)行所述應(yīng)用的第二部分。
13.根據(jù)權(quán)利要求8所述的方法,進一步包括在所述用戶可編程錯誤動作控制寄存器中提供第二控制值,所述第二控制值控制所述高速緩存控制電路的所述錯誤檢測的啟用。
14.根據(jù)權(quán)利要求8所述的方法,進一步包括如果包括所述高速緩存錯誤的所述高速緩存行是干凈高速緩存行,則分配所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值,以實現(xiàn)所述高速緩存行的自動無效, 并且如果所述高速緩存行是臟高速緩存行,則生成異常并且保留所述高速緩存行不改變。
15.一種數(shù)據(jù)處理系統(tǒng),包括處理器;高速緩存,連接至所述處理器;以及高速緩存控制電路,連接至所述高速緩存,所述高速緩存控制電路執(zhí)行錯誤檢測,所述高速緩存控制電路進一步包括用戶可編程錯誤動作控制寄存器,用于存儲控制值,所述控制值用于當檢測到高速緩存錯誤時選擇將被采用的一種類型的錯誤動作。
16.根據(jù)權(quán)利要求15所述的數(shù)據(jù)處理系統(tǒng),其中,所述可編程錯誤動作控制寄存器的所述控制值進一步包括第一值,允許處理對所述處理器透明的高速緩存錯誤;以及第二值,允許通過采用對所述處理器可見的異常來處理所述高速緩存錯誤。
17.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理系統(tǒng),其中,所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值以不修改所述高速緩存的內(nèi)容來生成異常,所述異常允許登記檢測到的錯誤,并且檢查所述高速緩存內(nèi)的存儲信息,以收集關(guān)于所述檢測到的錯誤的信肩、ο
18.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理系統(tǒng),其中,所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值以沒有與檢測到的錯誤相關(guān)的信息的無效并且不生成異常來實現(xiàn)所述檢測到的錯誤的自動校正。
19.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理系統(tǒng),其中,所述用戶可編程錯誤動作控制寄存器內(nèi)的所述控制值的第三值實現(xiàn)檢測到的錯誤的自動校正并且生成異常。
20.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理系統(tǒng),其中,在時間間隔的第一部分期間,所述控制值被設(shè)置為第一值,其中,以高速緩存錯誤對所述處理器的透明來執(zhí)行應(yīng)用的第一部分, 并且在所述時間間隔的第二部分期間,所述控制值被設(shè)置為所述第二值,其中,以高速緩存錯誤對所述處理器可見來執(zhí)行所述應(yīng)用的第二部分。
全文摘要
數(shù)據(jù)處理系統(tǒng)(10)和操作方法,數(shù)據(jù)處理系統(tǒng)具有連接至高速緩存(26)的處理器(30)。高速緩存控制電路(38)連接至高速緩存并且執(zhí)行錯誤檢測。用戶可編程錯誤動作控制寄存器(48)存儲用于當檢測到高速緩存錯誤時選擇將被采用的一種類型的錯誤動作的控制值??刂浦档牡谝恢翟试S處理對處理器透明的高速緩存錯誤,并且第二值允許通過采用對處理器可見的異常來處理高速緩存錯誤。響應(yīng)于控制值的其他值,可以采用對檢測到的錯誤的多種代替動作,包括錯誤校正或高速緩存行無效。
文檔編號G06F11/08GK102216904SQ200980146148
公開日2011年10月12日 申請日期2009年10月29日 優(yōu)先權(quán)日2008年11月18日
發(fā)明者加里·L·惠森亨特, 威廉·C·莫耶 申請人:飛思卡爾半導體公司