專利名稱:將進(jìn)程刪除錯(cuò)誤引向應(yīng)用程序的制作方法
背景本發(fā)明的實(shí)施例一般涉及處理處理器中的錯(cuò)誤。
來自瞬時(shí)故障的單個(gè)比特翻轉(zhuǎn)或錯(cuò)誤是微處理器設(shè)計(jì)中的關(guān)鍵挑戰(zhàn)。該故障源于來自宇宙射線的高能粒子—諸如中子和來自封裝材料的阿爾法粒子—當(dāng)它們經(jīng)過半導(dǎo)體器件時(shí)產(chǎn)生電子—空穴對(duì)。晶體管源和擴(kuò)散節(jié)點(diǎn)可收集這些電荷。足夠量的累積電荷會(huì)改變邏輯裝置的狀態(tài)—諸如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元、鎖存器或門電路—從而將邏輯錯(cuò)誤引入電子電路的運(yùn)作中。因?yàn)檫@種錯(cuò)誤不反映器件的永久性故障,所以其被稱作軟錯(cuò)誤或瞬時(shí)錯(cuò)誤。
隨著片載晶體管的數(shù)量持續(xù)增加,軟錯(cuò)誤已變成微處理器設(shè)計(jì)者的增加的負(fù)擔(dān)。對(duì)于接著的幾個(gè)技術(shù)代來說,每個(gè)鎖存或SRAM比特的原始錯(cuò)誤率可設(shè)計(jì)成粗略地保持恒定或者稍許減少。因此,除非添加錯(cuò)誤保護(hù)機(jī)制或使用更魯棒的技術(shù)(諸如完全耗盡硅上絕緣體),在每個(gè)后續(xù)代中,微處理器的軟錯(cuò)誤率會(huì)按添加到半導(dǎo)體器件上的器件數(shù)量成比例地增加。
可以根據(jù)其影響和檢測(cè)及對(duì)其校正的能力將比特錯(cuò)誤分類。某些位錯(cuò)誤可以被分類成“良性錯(cuò)誤”,因?yàn)樗鼈儾槐蛔x取、不要緊或者可以在使用它們之前將其糾正。多數(shù)隱伏形式的錯(cuò)誤是靜數(shù)據(jù)破壞,其中錯(cuò)誤不被檢測(cè)且使得系統(tǒng)產(chǎn)生錯(cuò)誤輸出。為了避免靜數(shù)據(jù)破壞,設(shè)計(jì)者常采用錯(cuò)誤檢測(cè)機(jī)制,諸如奇偶。錯(cuò)誤糾正技術(shù)還可用于修復(fù)檢測(cè)出的錯(cuò)誤,盡管這種技術(shù)不能在所有情況下應(yīng)用。檢測(cè)錯(cuò)誤但不糾正之的能力可避免生成不正確輸出(通過在產(chǎn)生不正確輸出前關(guān)閉受影響的進(jìn)程),但它不能提供機(jī)制用于在出現(xiàn)這種錯(cuò)誤時(shí)恢復(fù)和繼續(xù)執(zhí)行受影響的進(jìn)程。這類錯(cuò)誤被稱作檢測(cè)出的不可恢復(fù)錯(cuò)誤(DUE,或DUE錯(cuò)誤,或DUE事件)。
可根據(jù)DUE錯(cuò)誤是否導(dǎo)致操作系統(tǒng)和/或另一種機(jī)制刪除受錯(cuò)誤影響的一個(gè)或多個(gè)用戶進(jìn)程或者DUE錯(cuò)誤是否導(dǎo)致使整個(gè)機(jī)器(包括所有進(jìn)程)崩潰而將DUE錯(cuò)誤進(jìn)一步細(xì)分,以避免數(shù)據(jù)破壞。第一種可以稱作“進(jìn)程刪除DUE”錯(cuò)誤。第二種可以稱作“系統(tǒng)刪除DUE”錯(cuò)誤。進(jìn)程刪除DUE優(yōu)于系統(tǒng)刪除DUE,因?yàn)檫M(jìn)程刪除DUE允許系統(tǒng)繼續(xù)運(yùn)行和服務(wù)不受錯(cuò)誤影響的進(jìn)程。
為了解決瞬時(shí)故障引起的軟錯(cuò)誤,微處理器設(shè)計(jì)者可包括各種錯(cuò)誤保護(hù)特點(diǎn)??墒褂玫谋Wo(hù)特點(diǎn)的實(shí)例是奇偶、糾錯(cuò)碼(ECC)、循環(huán)冗余校驗(yàn)(CRC)、鎖定步進(jìn)、輻射固化單元和硅上絕緣體制造技術(shù)。
錯(cuò)誤保護(hù)特點(diǎn)也可包含于軟件中。某些軟件程序可涉及極其復(fù)雜的計(jì)算,即使在最快的可用計(jì)算機(jī)上也要運(yùn)行幾周或幾個(gè)月。為了減少硬件錯(cuò)誤的影響(可能使程序或整個(gè)系統(tǒng)崩潰),某些程序可執(zhí)行錯(cuò)誤恢復(fù)技術(shù),諸如應(yīng)用層檢查點(diǎn),以便在完成最終計(jì)算前倘若程序或系統(tǒng)崩潰的情況下避免丟失其所有中間計(jì)算。檢查點(diǎn)可加入應(yīng)用程序或進(jìn)程,從而程序周期性地保存其狀態(tài)。隨后,如果諸如進(jìn)程刪除DUE的錯(cuò)誤導(dǎo)致應(yīng)用程序或進(jìn)程被刪除、停止或關(guān)閉時(shí),可通過從檢查點(diǎn)重啟該應(yīng)用程序或進(jìn)程的執(zhí)行而進(jìn)行恢復(fù)。
在遇到進(jìn)程刪除DUE錯(cuò)誤時(shí),常規(guī)計(jì)算機(jī)系統(tǒng)向操作系統(tǒng)通知沒有別的選擇只能刪除受錯(cuò)誤影響的程序。不幸地,常規(guī)計(jì)算機(jī)系統(tǒng)不向硬件錯(cuò)誤(諸如進(jìn)程刪除DUE)提供引回到應(yīng)用層進(jìn)程,以允許應(yīng)用程序觸發(fā)或處理其自己的恢復(fù)。因此,當(dāng)應(yīng)用程序崩潰時(shí),會(huì)損失寶貴的計(jì)算時(shí)間以等待用戶干預(yù)和重啟程序。
因此,需要將進(jìn)程刪除錯(cuò)誤引向應(yīng)用程序。
通過附圖中的實(shí)例而非限制說明本發(fā)明的各種實(shí)施例,其中相似標(biāo)號(hào)表示相似元件。
圖1A是根據(jù)本發(fā)明一個(gè)實(shí)施例的錯(cuò)誤檢測(cè)和記入單元的框圖。
圖1B是根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)和應(yīng)用層錯(cuò)誤處理單元的框圖。
圖1C是根據(jù)本發(fā)明一個(gè)實(shí)施例的應(yīng)用層錯(cuò)誤處理單元的框圖。
圖1D是說明根據(jù)本發(fā)明一個(gè)實(shí)施例的應(yīng)用層錯(cuò)誤處理方法的流程圖。
圖2是說明根據(jù)本發(fā)明一個(gè)實(shí)施例的錯(cuò)誤處理方法的流程圖。
圖3是可使用本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)的框圖。
具體實(shí)施例方式
描述了用于將過程刪除錯(cuò)誤引向應(yīng)用程序的方法、裝置和系統(tǒng)。在以下描述中,為了說明,闡述了許多具體細(xì)節(jié),以提高本發(fā)明實(shí)施例的透徹理解。但本領(lǐng)域熟練技術(shù)人員顯見的是可以在沒有這些具體細(xì)節(jié)的情況下事實(shí)本發(fā)明的實(shí)施例。在其它情況中,結(jié)構(gòu)和裝置按框圖形式示出以避免使本發(fā)明實(shí)施例模糊。
說明書中對(duì)“一個(gè)實(shí)施例”或“一實(shí)施例”的引用表示結(jié)合實(shí)施例描述的特定特點(diǎn)、結(jié)構(gòu)或特征包含于本發(fā)明的至少一個(gè)實(shí)施例中。說明書中各處短語(yǔ)“在一個(gè)實(shí)施例中”的出現(xiàn)不必都涉及相同的實(shí)施例。
現(xiàn)在參考圖1A,其示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的錯(cuò)誤檢測(cè)和記入(posting)單元100的框圖。錯(cuò)誤檢測(cè)和記入單元100可包括錯(cuò)誤檢測(cè)單元102來檢測(cè)處理器中的硬件錯(cuò)誤,諸如軟或瞬時(shí)錯(cuò)誤。在一個(gè)實(shí)施例中,錯(cuò)誤檢測(cè)單元102可包括在處理器的各部分中的奇偶校驗(yàn)器。在一個(gè)實(shí)施例中,錯(cuò)誤檢測(cè)單元102可包括處理器中的各種錯(cuò)誤檢測(cè)機(jī)制。
操作系統(tǒng)可將進(jìn)程標(biāo)識(shí)符分配給處理器或由處理器執(zhí)行的程序。在一個(gè)實(shí)施例中,與進(jìn)程或程序有關(guān)的處理器中的每個(gè)地址可具有相同的進(jìn)程標(biāo)識(shí)符。錯(cuò)誤檢測(cè)和記入單元100可包括進(jìn)程標(biāo)識(shí)符(ID)單元103,以使進(jìn)程標(biāo)識(shí)符與處理器中的某些或所有硬件單元相關(guān)聯(lián)。在一個(gè)實(shí)施例中,進(jìn)程ID單元103使進(jìn)程標(biāo)識(shí)符與進(jìn)程或程序執(zhí)行中涉及的每個(gè)處理器硬件單元相關(guān)聯(lián)。在一個(gè)實(shí)施例中,進(jìn)程ID單元103使進(jìn)程標(biāo)識(shí)符與進(jìn)程或程序執(zhí)行中涉及的每個(gè)處理器硬件單元相關(guān)聯(lián)并使進(jìn)程標(biāo)識(shí)符與同進(jìn)程或程序相關(guān)的處理器中的每個(gè)地址相關(guān)聯(lián)。例如,進(jìn)程標(biāo)識(shí)符可與地址一起存儲(chǔ)于處理器的存儲(chǔ)緩沖器、合并緩沖器和轉(zhuǎn)換緩沖器。存儲(chǔ)緩沖器可用于保存由處理器推測(cè)地將被執(zhí)行的存儲(chǔ)指令。合并緩沖器可用于將對(duì)高速緩存的多個(gè)寫入收集成單個(gè)高速緩存塊,隨后將一個(gè)或多個(gè)高速緩存塊寫到高速緩存,而非分開寫入各個(gè)數(shù)據(jù)字。轉(zhuǎn)換緩沖器可用于處理器中,以便將虛擬地址轉(zhuǎn)換成物理地址。存儲(chǔ)與處理器中的地址相關(guān)的進(jìn)程標(biāo)識(shí)符可允許檢測(cè)錯(cuò)誤與它們的相應(yīng)進(jìn)程或程序相關(guān)。
仍參考圖1A,在一個(gè)實(shí)施例中,分配的進(jìn)程標(biāo)識(shí)符可連同它們所分配的每個(gè)地址一起流過處理器,以使與程序或進(jìn)程相關(guān)的處理器中的每個(gè)地址都伴隨有進(jìn)程標(biāo)識(shí)符。當(dāng)錯(cuò)誤檢測(cè)單元102檢測(cè)出錯(cuò)誤時(shí),相關(guān)進(jìn)程標(biāo)識(shí)符可用于確定哪個(gè)程序或進(jìn)程與該錯(cuò)誤相關(guān)。識(shí)別由錯(cuò)誤影響的應(yīng)用程序或進(jìn)程可允許僅刪除應(yīng)用程序或進(jìn)程(例如,進(jìn)程刪除DUE,代替系統(tǒng)刪除DUE),且根據(jù)本發(fā)明的實(shí)施例還可用于調(diào)用或觸發(fā)應(yīng)用層錯(cuò)誤恢復(fù)機(jī)制。
錯(cuò)誤檢測(cè)和記入單元100可包括錯(cuò)誤記入單元104,以便存儲(chǔ)與檢測(cè)出的錯(cuò)誤相關(guān)聯(lián)的記入的進(jìn)程標(biāo)識(shí)符(ID)106和記入的錯(cuò)誤信息108。在一個(gè)實(shí)施例中,記入的錯(cuò)誤信息108可包括與每個(gè)檢測(cè)錯(cuò)誤相關(guān)聯(lián)的錯(cuò)誤類型。在一個(gè)實(shí)施例中,記入的錯(cuò)誤信息108可包括與每個(gè)檢測(cè)錯(cuò)誤相關(guān)聯(lián)的地址。在一個(gè)實(shí)施例中,記入的錯(cuò)誤信息108可包括關(guān)于每個(gè)檢測(cè)錯(cuò)誤在處理器中哪里出現(xiàn)(例如哪個(gè)處理器結(jié)構(gòu)或單元)的信息。記入的錯(cuò)誤信息108可包括與識(shí)別、分析和/或處理檢測(cè)錯(cuò)誤有關(guān)的其它類型的信息。
仍參考圖1A,在一個(gè)實(shí)施例中,錯(cuò)誤記入單元104記入(或使之可用)記入的進(jìn)程ID 106和相關(guān)記入的錯(cuò)誤信息108,從而處理器中的其它錯(cuò)誤單元可確定何時(shí)檢測(cè)出錯(cuò)誤以及與檢測(cè)出的錯(cuò)誤相關(guān)的進(jìn)程。在一個(gè)實(shí)施例中,錯(cuò)誤記入單元104可使記入的進(jìn)程ID 106和相關(guān)記入的錯(cuò)誤信息108分別在信號(hào)112和116上可用。在一個(gè)實(shí)施例中,通過發(fā)出一讀取信號(hào)110,記入的進(jìn)程ID 106和有關(guān)記入的錯(cuò)誤信息108可從錯(cuò)誤記入單元104讀取。在一個(gè)實(shí)施例中,錯(cuò)誤記入單元104可生成錯(cuò)誤標(biāo)記114,以便提供一標(biāo)記或警告,表示在錯(cuò)誤記入單元104中記入了一個(gè)或多個(gè)檢測(cè)錯(cuò)誤。
在一個(gè)實(shí)施例中,圖1A的錯(cuò)誤檢測(cè)和記入單元100可與圖1B所示的系統(tǒng)和應(yīng)用層錯(cuò)誤處理單元140組合。
現(xiàn)在參考圖1B,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)和應(yīng)用層錯(cuò)誤處理單元140的框圖。系統(tǒng)和應(yīng)用層錯(cuò)誤處理單元140可包括系統(tǒng)層錯(cuò)誤單元120和應(yīng)用層單元150。系統(tǒng)層錯(cuò)誤單元120可從錯(cuò)誤記入單元104分別經(jīng)由信號(hào)112、116和114接收記入的進(jìn)程ID 106、相關(guān)記入的錯(cuò)誤信息108和錯(cuò)誤標(biāo)記114。在一個(gè)實(shí)施例中,在聲明錯(cuò)誤標(biāo)記114時(shí),系統(tǒng)層錯(cuò)誤單元120可讀取(通過發(fā)出讀取信號(hào)110)記入的進(jìn)程ID 106和有關(guān)記入的錯(cuò)誤信息108。
在一個(gè)實(shí)施例中,系統(tǒng)層錯(cuò)誤單元120可基于記入的進(jìn)程ID 106和相關(guān)記入的錯(cuò)誤信息108確定記入的錯(cuò)誤是否與應(yīng)用程序或進(jìn)程有關(guān),如果是,則將記入的進(jìn)程ID 106和相關(guān)記入的錯(cuò)誤信息108在信號(hào)124上轉(zhuǎn)發(fā)到應(yīng)用層單元150。在一個(gè)實(shí)施例中,如果確定檢測(cè)出的錯(cuò)誤與系統(tǒng)層進(jìn)程相關(guān)聯(lián)或者出于某些原因應(yīng)在系統(tǒng)層被處理,則系統(tǒng)層錯(cuò)誤單元120可生成系統(tǒng)層錯(cuò)誤中斷122。
仍參考圖1B,應(yīng)用層單元150可包括應(yīng)用層錯(cuò)誤單元130和應(yīng)用層中斷處理機(jī)134。應(yīng)用層錯(cuò)誤單元130可基于轉(zhuǎn)發(fā)的記入進(jìn)程ID 106和相關(guān)的記入錯(cuò)誤信息108確定哪個(gè)應(yīng)用程序或進(jìn)程與檢測(cè)出的錯(cuò)誤有關(guān)以及應(yīng)如何處理該錯(cuò)誤。例如,應(yīng)用層錯(cuò)誤單元130可確定應(yīng)用程序是否具有其自己的錯(cuò)誤恢復(fù)算法(諸如應(yīng)用層檢查點(diǎn)),是否應(yīng)使用一般應(yīng)用層錯(cuò)誤處理器,和/或是否需要?jiǎng)h除應(yīng)用程序。在一個(gè)實(shí)施例中,應(yīng)用層錯(cuò)誤單元130可生成應(yīng)用層錯(cuò)誤中斷132,以觸發(fā)應(yīng)用層中斷處理機(jī)134,從而執(zhí)行合適的錯(cuò)誤恢復(fù)和對(duì)與檢測(cè)出的錯(cuò)誤相關(guān)聯(lián)的應(yīng)用程序或進(jìn)程的處理。
在一個(gè)實(shí)施例中,應(yīng)用層中斷處理機(jī)134可用是同與錯(cuò)誤相關(guān)的應(yīng)用程序相關(guān)聯(lián)的應(yīng)用層錯(cuò)誤處理機(jī)。在一個(gè)實(shí)施例中,通過基于應(yīng)用層檢查點(diǎn)啟動(dòng)恢復(fù)和重新運(yùn)行操作,應(yīng)用層中斷處理機(jī)134可啟動(dòng)或觸發(fā)由錯(cuò)誤影響的應(yīng)用的恢復(fù)。在一個(gè)實(shí)施例中,應(yīng)用層中斷處理機(jī)134向操作系統(tǒng)登記。
在一個(gè)實(shí)施例中,圖1A的錯(cuò)誤檢測(cè)和記入單元100可與圖1C所示的應(yīng)用層單元150組合。
現(xiàn)在參考圖1C,記入的進(jìn)程ID 106、相關(guān)記入的錯(cuò)誤信息108和錯(cuò)誤標(biāo)記114可分別經(jīng)由信號(hào)112、116和114直接提供給應(yīng)用層錯(cuò)誤單元130,而非從系統(tǒng)層錯(cuò)誤單元120轉(zhuǎn)發(fā),如圖1B所示。例如,當(dāng)較少劇烈的錯(cuò)誤處理措施可能時(shí),可以這么作以防止系統(tǒng)層錯(cuò)誤單元10不必要地刪除應(yīng)用程序或使系統(tǒng)崩潰。例如,系統(tǒng)層錯(cuò)誤單元120和其它系統(tǒng)層錯(cuò)誤機(jī)制會(huì)不知不覺地關(guān)閉具有檢查點(diǎn)和重啟能力的應(yīng)用程序或者在應(yīng)用層恢復(fù)是可能的情況下使系統(tǒng)崩潰。
現(xiàn)在參考圖1D,示出了說明根據(jù)本發(fā)明一個(gè)實(shí)施例的應(yīng)用層錯(cuò)誤處理方法160的流程圖。該方法包括用于程序(諸如應(yīng)用程序或進(jìn)程)的輪詢機(jī)制,以確定檢測(cè)出的錯(cuò)誤何時(shí)與該程序相關(guān)聯(lián)。該方法從應(yīng)用程序的啟動(dòng)(框162)和應(yīng)用程序的執(zhí)行(框164)開始。例如,用戶可以在計(jì)算機(jī)系統(tǒng)上啟動(dòng)復(fù)雜計(jì)算天氣預(yù)報(bào)程序的執(zhí)行。
應(yīng)用程序可周期性地輪詢記入的錯(cuò)誤信息(框166)并確定任何檢測(cè)出的錯(cuò)誤是否與應(yīng)用程序相關(guān)聯(lián)(菱形168)。在一個(gè)實(shí)施例中,應(yīng)用程序可通過將記入的進(jìn)程ID 106(圖1A的)與應(yīng)用程序的分配進(jìn)程標(biāo)識(shí)符進(jìn)行比較來確定任何記入的錯(cuò)誤是否與應(yīng)用程序相關(guān)聯(lián)。在一個(gè)實(shí)施例中,記入的進(jìn)程ID 106和相關(guān)記入的錯(cuò)誤信息108可存入錯(cuò)誤記入單元104并由應(yīng)用程序通過發(fā)出讀取信號(hào)110(圖1A)讀取。在一個(gè)實(shí)施例中,應(yīng)用程序可在消逝時(shí)間后周期性地進(jìn)行輪詢。在一個(gè)實(shí)施例中,應(yīng)用程序可在所有存儲(chǔ)或未高速緩存負(fù)載指令之前進(jìn)行輪詢,以防止靜(silent)數(shù)據(jù)破壞泄漏。
如果輪詢沒有識(shí)別出與應(yīng)用程序相關(guān)聯(lián)的錯(cuò)誤(菱形168),則該方法可返回到應(yīng)用程序的正常執(zhí)行(框164)。如果輪詢識(shí)別出與應(yīng)用程序相關(guān)聯(lián)的錯(cuò)誤(菱形168),則它可啟動(dòng)應(yīng)用層錯(cuò)誤處理機(jī)(框170)。在一個(gè)實(shí)施例中,應(yīng)用層錯(cuò)誤處理機(jī)(框170)可具有檢查點(diǎn)和重啟算法,且應(yīng)用程序可在檢查點(diǎn)處重啟應(yīng)用(框172)并從這點(diǎn)繼續(xù)程序的執(zhí)行(框164)。在一個(gè)實(shí)施例中,應(yīng)用層錯(cuò)誤處理機(jī)(框170)可防止應(yīng)用程序在檢查點(diǎn)處重啟應(yīng)用(框172)之前被刪除、停止或關(guān)閉。按此方式,通過具有進(jìn)程刪除DUE錯(cuò)誤的硬件引導(dǎo)到應(yīng)用程序的錯(cuò)誤恢復(fù)例程,應(yīng)用程序能觸發(fā)其自己的恢復(fù)。
現(xiàn)在參考圖2,示出了說明根據(jù)本發(fā)明一個(gè)實(shí)施例的錯(cuò)誤處理方法200的流程圖。該方法通過檢測(cè)處理器中的錯(cuò)誤(框202),諸如軟或瞬時(shí)硬件錯(cuò)誤,隨后確定檢測(cè)出的錯(cuò)誤是否是可糾正的(菱形204)而開始。如果是,則通過諸如ECC的糾錯(cuò)機(jī)制或算法糾正錯(cuò)誤(框206)。如果檢測(cè)出的錯(cuò)誤是不可糾正的,則進(jìn)程標(biāo)識(shí)符和與錯(cuò)誤相關(guān)聯(lián)的錯(cuò)誤信息被記入或者使其在系統(tǒng)中可用(框208)??缮慑e(cuò)誤標(biāo)記(框210),以便提供關(guān)于檢測(cè)出的錯(cuò)誤的警報(bào)。在一個(gè)實(shí)施例中,錯(cuò)誤標(biāo)記可使系統(tǒng)層和/或應(yīng)用層錯(cuò)誤單元評(píng)估所記入的錯(cuò)誤。
仍參考圖2,可分析記入的錯(cuò)誤信息,以確定在應(yīng)用層(例如,通過應(yīng)用層錯(cuò)誤處理機(jī)制)還是在系統(tǒng)層(例如,通過操作系統(tǒng)或其它系統(tǒng)層錯(cuò)誤處理機(jī)制)處理檢測(cè)出的錯(cuò)誤(菱形212)。通過生成系統(tǒng)層錯(cuò)誤中斷(框214)并啟動(dòng)系統(tǒng)層錯(cuò)誤處理機(jī)(框216)在系統(tǒng)層處理檢測(cè)出的錯(cuò)誤。通過生成應(yīng)用層錯(cuò)誤中斷(框218)并啟動(dòng)應(yīng)用層錯(cuò)誤處理器(框220)在應(yīng)用層處理檢測(cè)出的錯(cuò)誤。如果包含于應(yīng)用中,則可啟動(dòng)應(yīng)用層錯(cuò)誤恢復(fù)例程來恢復(fù)與檢測(cè)出的錯(cuò)誤有關(guān)的應(yīng)用(框222)。例如,應(yīng)用的檢查點(diǎn)和重啟能力可用于重啟應(yīng)用的檢查點(diǎn)。在一個(gè)實(shí)施例中,應(yīng)用層錯(cuò)誤處理器(框220)和/或應(yīng)用層恢復(fù)例程(框222)可防止由硬件錯(cuò)誤(諸如進(jìn)程刪除DUE錯(cuò)誤)破壞的應(yīng)用被刪除。在一個(gè)實(shí)施例中,應(yīng)用層錯(cuò)誤處理機(jī)(框220)和/或應(yīng)用層恢復(fù)例程(框222)可允許由硬件錯(cuò)誤(諸如進(jìn)程刪除DUE錯(cuò)誤)破壞的應(yīng)用經(jīng)由應(yīng)用層恢復(fù)例程觸發(fā)其自己的恢復(fù)。
可用在邏輯電路、狀態(tài)機(jī)、微碼或其組合中實(shí)現(xiàn)實(shí)施例??捎么a實(shí)現(xiàn)實(shí)施例,且其可以存儲(chǔ)于存有指令的存儲(chǔ)媒介上,可用于編程計(jì)算機(jī)系統(tǒng)以執(zhí)行所述指令。存儲(chǔ)媒介可包括,但不限于,任何類型的盤,包括軟盤、光盤、緊致盤只讀存儲(chǔ)器(CD-ROM)、可重寫緊致盤(CD-RW)和磁光盤,諸如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、可擦可編程只讀存儲(chǔ)器(EPROM)、閃存、電可擦可編程只讀存儲(chǔ)器(EEPROM)、磁或光卡的半導(dǎo)體器件或者適于存儲(chǔ)電子指令的任何類型的媒體。
實(shí)例性實(shí)施例可以合適的計(jì)算機(jī)系統(tǒng)執(zhí)行的軟件形式實(shí)現(xiàn),所述計(jì)算機(jī)系統(tǒng)配置有硬件裝置的合適組合。圖3是可使用本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)的框圖。
現(xiàn)在參考圖3,示出了可使用本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)300的框圖。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)300包括處理器310,它可包括通用或?qū)S锰幚砥?,諸如微處理器、微控制器、可編程門陣列(PGA)等。如這里所使用的,術(shù)語(yǔ)“計(jì)算機(jī)系統(tǒng)”可表示任何類型的基于處理器的系統(tǒng),諸如臺(tái)式計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、膝上計(jì)算機(jī)等,或者其它類型的主機(jī)系統(tǒng)。
處理器310可包括錯(cuò)誤單元312,它可根據(jù)本發(fā)明的各種實(shí)施例來實(shí)現(xiàn)。錯(cuò)誤單元312提供了將進(jìn)程刪除錯(cuò)誤引向應(yīng)用程序的能力。在一個(gè)實(shí)施例中,如果應(yīng)用層錯(cuò)誤可由應(yīng)用層錯(cuò)誤恢復(fù)機(jī)制或算法處理,則將進(jìn)程刪除錯(cuò)誤引向應(yīng)用程序可防止相關(guān)進(jìn)程被刪除。
在一個(gè)實(shí)施例中,處理器310可在主機(jī)總線315上耦合到存儲(chǔ)器集線器330,它可以經(jīng)由存儲(chǔ)器總線325耦合到系統(tǒng)存儲(chǔ)器320(例如,動(dòng)態(tài)RAM)。存儲(chǔ)器集線器330還可在高級(jí)圖形接口(AGP)總線333上耦合到視頻控制器335,它可耦合到顯示器337。AGP總線333可符合Intel Corporation,Santa Clara,California于1998年5月4日出版的Accelerated Graphics Port InterfaceSpecification,Revision 2.0。
存儲(chǔ)器集線器330還可耦合(經(jīng)由集線器鏈接338)到輸入/輸出(I/O)集線器340,其耦合到輸入/輸出(I/O)擴(kuò)展總線342和外圍部件互連(PCI)總線344,如1995年6月的PCI Local Bus Specification,Production Version,Revision2.1所定義的。I/O擴(kuò)展總線342可耦合到I/O控制器346,它控制對(duì)一個(gè)或多個(gè)I/O設(shè)備的訪問。如圖3所示,在一個(gè)實(shí)施例中,這些裝置可包括諸如軟盤驅(qū)動(dòng)器350的存儲(chǔ)裝置和諸如鍵盤352和鼠標(biāo)354的輸入裝置。I/O集線器340例如還可耦合到硬盤驅(qū)動(dòng)器356和緊致盤(CD)驅(qū)動(dòng)器358,如圖3所示??梢岳斫?,其它存儲(chǔ)媒介也可包含在系統(tǒng)中。
PCI總線344還可耦合到各種組件,例如包括與網(wǎng)絡(luò)端口(未示出)耦合的網(wǎng)絡(luò)控制器360。附加裝置也可耦合到I/O擴(kuò)展總線342和PCI總線344,諸如與并行端口、串行端口、非易失性存儲(chǔ)器等耦合的輸入/輸出控制電路。
因此,描述了用于將進(jìn)程刪除錯(cuò)誤引向應(yīng)用程序的方法、裝置和系統(tǒng)。雖然相對(duì)于有限數(shù)量的實(shí)施例描述了本發(fā)明,但在揭示內(nèi)容的幫助下本領(lǐng)域的熟練技術(shù)人員可以理解許多修改和變型。所附權(quán)利要求書旨在覆蓋落在本發(fā)明的真實(shí)精神和范圍內(nèi)的這種修改和變型。
權(quán)利要求
1.一種裝置,其特征在于,包括進(jìn)程標(biāo)識(shí)符單元,用于使一個(gè)或多個(gè)進(jìn)程標(biāo)識(shí)符與由處理器執(zhí)行的一個(gè)或多個(gè)相應(yīng)進(jìn)程相關(guān)聯(lián);錯(cuò)誤檢測(cè)器,用于在處理器中檢測(cè)錯(cuò)誤,包括第一錯(cuò)誤,其中第一錯(cuò)誤與第一進(jìn)程和第一進(jìn)程標(biāo)識(shí)符相關(guān)聯(lián);以及錯(cuò)誤記入單元,用于記入與檢測(cè)出的錯(cuò)誤相關(guān)聯(lián)的進(jìn)程標(biāo)識(shí)符和錯(cuò)誤信息,包括與第一錯(cuò)誤相關(guān)聯(lián)的第一進(jìn)程標(biāo)識(shí)符和第一錯(cuò)誤信息。
2.如權(quán)利要求1所述的裝置,其特征在于,處理器標(biāo)識(shí)符單元用于使進(jìn)程標(biāo)識(shí)符與同進(jìn)程相關(guān)的處理器中的地址相關(guān)聯(lián),從而處理器中檢測(cè)出的錯(cuò)誤具有相關(guān)聯(lián)的進(jìn)程標(biāo)識(shí)符。
3.如權(quán)利要求1所述的裝置,其特征在于,進(jìn)一步包括應(yīng)用層錯(cuò)誤單元,用于在第一進(jìn)程是應(yīng)用層進(jìn)程的情況下產(chǎn)生應(yīng)用層中斷。
4.如權(quán)利要求3所述的裝置,其特征在于,進(jìn)一步包括與應(yīng)用層進(jìn)程相關(guān)聯(lián)的應(yīng)用層中斷處理機(jī),用于響應(yīng)于應(yīng)用層中斷在應(yīng)用層處理第一錯(cuò)誤。
5.如權(quán)利要求4所述的裝置,其特征在于,應(yīng)用層中斷處理機(jī)用于在沒有用戶干預(yù)的情況下在檢查點(diǎn)處重啟應(yīng)用層進(jìn)程。
6.如權(quán)利要求1所述的裝置,其特征在于,進(jìn)一步包括系統(tǒng)層錯(cuò)誤單元,用于響應(yīng)于第一錯(cuò)誤生成系統(tǒng)層中斷或者在第一進(jìn)程是應(yīng)用層進(jìn)程的情況下將第一錯(cuò)誤信息轉(zhuǎn)發(fā)到應(yīng)用層錯(cuò)誤單元,所述應(yīng)用層錯(cuò)誤單元用于生成應(yīng)用層中斷。
7.如權(quán)利要求6所述的裝置,其特征在于,進(jìn)一步包括系統(tǒng)層中斷處理機(jī),用于響應(yīng)于系統(tǒng)層中斷在系統(tǒng)層處理第一錯(cuò)誤;以及與應(yīng)用層進(jìn)程相關(guān)聯(lián)的應(yīng)用層中斷處理機(jī),用于響應(yīng)于應(yīng)用層中斷在應(yīng)用層處理第一錯(cuò)誤。
8.如權(quán)利要求7所述的裝置,其特征在于,應(yīng)用層中斷處理機(jī)用于在沒有用戶干預(yù)的情況下在檢查點(diǎn)處重啟應(yīng)用層進(jìn)程。
9.如權(quán)利要求1所述的裝置,其特征在于,進(jìn)一步包括輪詢單元,用于輪詢錯(cuò)誤記入單元以確定一個(gè)或多個(gè)記入的進(jìn)程標(biāo)識(shí)符是否與應(yīng)用層進(jìn)程相關(guān)聯(lián);以及與應(yīng)用層進(jìn)程相關(guān)聯(lián)的應(yīng)用層錯(cuò)誤處理機(jī),用于在第一進(jìn)程標(biāo)識(shí)符與應(yīng)用層進(jìn)程相關(guān)聯(lián)的情況下在應(yīng)用層處理第一錯(cuò)誤。
10.如權(quán)利要求9所述的裝置,其特征在于,應(yīng)用層錯(cuò)誤處理機(jī)用于在沒有用戶干預(yù)的情況下在檢查點(diǎn)重啟第一進(jìn)程。
11.一種方法,其特征在于,包括使一個(gè)或多個(gè)進(jìn)程標(biāo)識(shí)符與處理器執(zhí)行的一個(gè)或多個(gè)相應(yīng)進(jìn)程相關(guān)聯(lián);在處理器中檢測(cè)錯(cuò)誤,包括第一錯(cuò)誤,其中第一錯(cuò)誤與第一進(jìn)程以及相應(yīng)的第一進(jìn)程標(biāo)識(shí)符相關(guān)聯(lián);以及記入與檢測(cè)出的錯(cuò)誤相關(guān)聯(lián)的進(jìn)程標(biāo)識(shí)符和錯(cuò)誤信息,包括與第一錯(cuò)誤相關(guān)聯(lián)的第一進(jìn)程標(biāo)識(shí)符和第一錯(cuò)誤信息。
12.如權(quán)利要求11所述的方法,其特征在于,進(jìn)一步包括使進(jìn)程標(biāo)識(shí)符與同進(jìn)程相關(guān)聯(lián)的處理器中的地址相關(guān)聯(lián),從而處理器中檢測(cè)出的錯(cuò)誤具有相關(guān)聯(lián)的進(jìn)程標(biāo)識(shí)符。
13.如權(quán)利要求11所述的方法,其特征在于,進(jìn)一步包括如果第一進(jìn)程是應(yīng)用層進(jìn)程,則生成應(yīng)用層中斷。
14.如權(quán)利要求13所述的方法,其特征在于,進(jìn)一步包括響應(yīng)于應(yīng)用層中斷在應(yīng)用層處理第一錯(cuò)誤。
15.如權(quán)利要求14所述的方法,其特征在于,進(jìn)一步包括在沒有用戶干預(yù)的情況下在檢查點(diǎn)處重啟應(yīng)用層進(jìn)程。
16.如權(quán)利要求11所述的方法,其特征在于,進(jìn)一步包括響應(yīng)于第一錯(cuò)誤生成系統(tǒng)層中斷或者在第一進(jìn)程是應(yīng)用層進(jìn)程的情況下將第一錯(cuò)誤信息轉(zhuǎn)發(fā)到應(yīng)用層錯(cuò)誤單元,應(yīng)用層錯(cuò)誤單元生成應(yīng)用層中斷。
17.如權(quán)利要求16所述的方法,其特征在于,進(jìn)一步包括響應(yīng)于系統(tǒng)層中斷,在系統(tǒng)層處理第一錯(cuò)誤;以及響應(yīng)于應(yīng)用層中斷,在應(yīng)用層處理第一錯(cuò)誤。
18.如權(quán)利要求17所述的方法,其特征在于,進(jìn)一步包括在沒有用戶干預(yù)的情況下在檢查點(diǎn)處重啟應(yīng)用層進(jìn)程。
19.如權(quán)利要求11所述的方法,其特征在于,進(jìn)一步包括輪詢記入的進(jìn)程標(biāo)識(shí)符以確定是否一個(gè)或多個(gè)記入的進(jìn)程標(biāo)識(shí)符與應(yīng)用層進(jìn)程相關(guān)聯(lián);以及如果第一進(jìn)程標(biāo)識(shí)符與應(yīng)用層進(jìn)程相關(guān)聯(lián),則在應(yīng)用層處理第一錯(cuò)誤。
20.如權(quán)利要求19所述的方法,其特征在于,進(jìn)一步包括在沒有用戶干預(yù)的情況下在檢查點(diǎn)處重啟第一進(jìn)程。
21.一種方法,其特征在于,包括使進(jìn)程標(biāo)識(shí)符與同處理器執(zhí)行的進(jìn)程相對(duì)應(yīng)的處理器中的每個(gè)地址相關(guān)聯(lián);在處理器中檢查錯(cuò)誤,包括第一錯(cuò)誤,其中第一錯(cuò)誤與第一進(jìn)程和相應(yīng)的第一進(jìn)程標(biāo)識(shí)符相關(guān)聯(lián);生成與檢測(cè)出的錯(cuò)誤相關(guān)聯(lián)的錯(cuò)誤信息,包括與第一錯(cuò)誤相關(guān)聯(lián)的第一錯(cuò)誤信息;以及基于進(jìn)程標(biāo)識(shí)符和相關(guān)聯(lián)的錯(cuò)誤信息,確定是用系統(tǒng)層錯(cuò)誤處理機(jī)還是應(yīng)用層錯(cuò)誤處理機(jī)處理檢測(cè)出的錯(cuò)誤。
22.如權(quán)利要求21所述的方法,其特征在于,進(jìn)一步包括如果第一進(jìn)程標(biāo)識(shí)符與應(yīng)用層進(jìn)程相關(guān)聯(lián),則用應(yīng)用層錯(cuò)誤處理機(jī)處理第一錯(cuò)誤;以及如果第一進(jìn)程標(biāo)識(shí)符不與應(yīng)用層進(jìn)程相關(guān)聯(lián),則用系統(tǒng)層錯(cuò)誤處理機(jī)處理第一錯(cuò)誤。
23.如權(quán)利要求21所述的方法,其特征在于,進(jìn)一步包括如果第一進(jìn)程是應(yīng)用層進(jìn)程,則在沒有用戶干預(yù)的情況下在檢查點(diǎn)處重啟第一進(jìn)程。
24.一種系統(tǒng),其特征在于,包括處理器,用于執(zhí)行一個(gè)或多個(gè)進(jìn)程;動(dòng)態(tài)隨機(jī)存取系統(tǒng)存儲(chǔ)器,它被耦合成存儲(chǔ)由處理器使用的指令;進(jìn)程標(biāo)識(shí)符單元,用于使一個(gè)或多個(gè)相應(yīng)進(jìn)程標(biāo)識(shí)符與一個(gè)或多個(gè)進(jìn)程相關(guān)聯(lián);錯(cuò)誤檢測(cè)器,用于在處理器中檢測(cè)錯(cuò)誤,包括第一錯(cuò)誤,其中第一錯(cuò)誤與第一進(jìn)程和第一進(jìn)程標(biāo)識(shí)符相關(guān)聯(lián);以及錯(cuò)誤記入單元,用于記入與檢測(cè)出的錯(cuò)誤相關(guān)聯(lián)的進(jìn)程標(biāo)識(shí)符和錯(cuò)誤信息,包括與第一錯(cuò)誤相關(guān)聯(lián)的第一進(jìn)程標(biāo)識(shí)符和第一錯(cuò)誤信息。
25.如權(quán)利要求24所述的系統(tǒng),其特征在于,處理器標(biāo)識(shí)符單元用于使進(jìn)程標(biāo)識(shí)符與同進(jìn)程相關(guān)聯(lián)的處理器中的地址相關(guān)聯(lián),從而處理器中檢測(cè)出的錯(cuò)誤具有相關(guān)聯(lián)的進(jìn)程標(biāo)識(shí)符。
26.如權(quán)利要求24所述的系統(tǒng),其特征在于,進(jìn)一步包括應(yīng)用層錯(cuò)誤單元,用于在第一進(jìn)程是應(yīng)用層進(jìn)程的情況下產(chǎn)生應(yīng)用層中斷。
27.如權(quán)利要求24所述的系統(tǒng),其特征在于,進(jìn)一步包括系統(tǒng)層錯(cuò)誤單元,用于響應(yīng)于第一錯(cuò)誤生成系統(tǒng)層中斷或者在第一進(jìn)程是應(yīng)用層進(jìn)程的情況下將第一錯(cuò)誤信息轉(zhuǎn)發(fā)到應(yīng)用層錯(cuò)誤單元,所述應(yīng)用層錯(cuò)誤單元用于生成應(yīng)用層中斷。
28.一種包括含有指令的機(jī)器可訪問媒介的制品,所述指令在被執(zhí)行時(shí),使得系統(tǒng)輪詢處理器中與檢測(cè)出的錯(cuò)誤相對(duì)應(yīng)的進(jìn)程標(biāo)識(shí)符,以確定是否一個(gè)或多個(gè)進(jìn)程標(biāo)識(shí)符與應(yīng)用層進(jìn)程相關(guān)聯(lián);以及如果相應(yīng)的第一進(jìn)程標(biāo)識(shí)符與應(yīng)用層進(jìn)程相關(guān)聯(lián),則在應(yīng)用層處理第一檢測(cè)出的錯(cuò)誤。
29.如權(quán)利要求28所述的制品,其特征在于,進(jìn)一步包括指令,其在被執(zhí)行時(shí)使得系統(tǒng)保存應(yīng)用層進(jìn)程的狀態(tài)。
30.如權(quán)利要求29所述的制品,其特征在于,進(jìn)一步包括指令,其在被執(zhí)行時(shí)使得系統(tǒng)在沒有用戶干預(yù)的情況下恢復(fù)應(yīng)用層進(jìn)程的保存狀態(tài)。
全文摘要
一種處理器包括進(jìn)程標(biāo)識(shí)符單元,用于將進(jìn)程標(biāo)識(shí)符分配給處理器執(zhí)行的一個(gè)或多個(gè)進(jìn)程。處理器還包括錯(cuò)誤檢測(cè)器,用于檢測(cè)處理器中的錯(cuò)誤,以及錯(cuò)誤記入單元,用于記入與檢測(cè)出的錯(cuò)誤相關(guān)聯(lián)的進(jìn)程標(biāo)識(shí)符和錯(cuò)誤信息。
文檔編號(hào)G06F11/00GK1752936SQ20051010641
公開日2006年3月29日 申請(qǐng)日期2005年9月23日 優(yōu)先權(quán)日2004年9月23日
發(fā)明者S·慕克吉 申請(qǐng)人:英特爾公司