[發(fā)明專利]用于處理不可糾正的內(nèi)存錯(cuò)誤的方法及非瞬態(tài)處理器可讀介質(zhì)有效
| 申請?zhí)枺?/td> | 201280076003.2 | 申請日: | 2012-09-25 |
| 公開(公告)號: | CN104685474B | 公開(公告)日: | 2018-04-20 |
| 發(fā)明(設(shè)計(jì))人: | 安德魯·克里斯托弗·沃爾頓 | 申請(專利權(quán))人: | 慧與發(fā)展有限責(zé)任合伙企業(yè) |
| 主分類號: | G06F11/08 | 分類號: | G06F11/08;G06F12/16 |
| 代理公司: | 北京德琦知識產(chǎn)權(quán)代理有限公司11018 | 代理人: | 柴德海,康泉 |
| 地址: | 美國德*** | 國省代碼: | 暫無信息 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 包括 不可 糾正 錯(cuò)誤 地址 范圍 通知 | ||
背景技術(shù)
機(jī)器校驗(yàn)架構(gòu)是一種可以在現(xiàn)代計(jì)算系統(tǒng)中用于檢測故障(如內(nèi)存中的故障)的技術(shù)。在許多計(jì)算系統(tǒng)中,通過糾錯(cuò)碼(ECC)保護(hù)內(nèi)存。通常使用的糾錯(cuò)碼能夠檢測和糾正單比特錯(cuò)誤。在多比特錯(cuò)誤的情況下,ECC能夠檢測該錯(cuò)誤,但不能糾正該錯(cuò)誤。在使用機(jī)器校驗(yàn)架構(gòu)的系統(tǒng)中,當(dāng)發(fā)現(xiàn)包括不可糾正的錯(cuò)誤的內(nèi)存位置時(shí),在該內(nèi)存位置中設(shè)置被稱為毒藥簽名(poison signature)或簡稱毒藥(poison)的特殊值。該毒藥簽名一般通過操縱ECC比特來產(chǎn)生。數(shù)據(jù)中不可糾正的錯(cuò)誤可以由內(nèi)存控制器、CPU緩存、IO設(shè)備或在任意多個(gè)其它元件中被識別,并且那些元件中的任意元件能夠在該數(shù)據(jù)中生成毒藥簽名。
系統(tǒng)能夠長期運(yùn)行,即使存在毒藥。但是,當(dāng)中央處理單元(CPU)嘗試使用包括毒藥的內(nèi)存位置時(shí),處理器可能產(chǎn)生機(jī)器校驗(yàn)異常。該機(jī)器校驗(yàn)異常可以由計(jì)算設(shè)備的固件或操作系統(tǒng)截獲。在一些情況下,不能夠采取糾正措施,并且整個(gè)系統(tǒng)可能崩潰。但是,在其它情況下,操作系統(tǒng)能夠采取恢復(fù)措施。例如,操作系統(tǒng)可以殺掉正在使用被確定包括毒藥的內(nèi)存位置的特定進(jìn)程。
附圖說明
圖1是根據(jù)本文描述的技術(shù)的系統(tǒng)的示例。
圖2是用于處理不可糾正的內(nèi)存錯(cuò)誤的概要流程圖的示例。
圖3是用于基于不可糾正的錯(cuò)誤的檢測來初始化內(nèi)存的概要流程圖的示例。
圖4是操作系統(tǒng)清理內(nèi)存地址范圍的概要流程圖的示例。
圖5是用于處理由不可糾正的內(nèi)存錯(cuò)誤導(dǎo)致的可恢復(fù)錯(cuò)誤和不可恢復(fù)錯(cuò)誤的概要流程圖的示例。
圖6是用于檢測毒藥消耗的概要流程圖的示例。
圖7是用于檢測毒藥和從該毒藥恢復(fù)的概要流程圖的示例。
具體實(shí)施方式
毒藥(poison)在機(jī)器校驗(yàn)架構(gòu)系統(tǒng)中的使用對檢測包括不可糾正的錯(cuò)誤的內(nèi)存及防止CPU使用包括錯(cuò)誤的內(nèi)存是非常有用的。在一些情況下,內(nèi)存可以包括由軟件使用的數(shù)據(jù)值。損壞的數(shù)據(jù)值的使用可以導(dǎo)致獲得不正確的結(jié)果。在其它情況下,內(nèi)存位置可以包括待由CPU執(zhí)行的指令。在這種情況下,該內(nèi)存位置中包括的指令基本上是隨機(jī)指令,因?yàn)椴荒艽_定錯(cuò)誤如何修改該指令。利用ECC,損壞的指令可以被識別出,但不一定被糾正。
如上面提到的,當(dāng)接收到機(jī)器校驗(yàn)異常時(shí),由操作系統(tǒng)采取的典型動作是清除正在使用受影響的內(nèi)存位置的進(jìn)程。通常,清除該進(jìn)程意味著停止該進(jìn)程的操作并且釋放已分配給該進(jìn)程的所有資源,如內(nèi)存。但是,當(dāng)僅清除進(jìn)程時(shí),由于毒藥的存在,產(chǎn)生數(shù)個(gè)問題。產(chǎn)生的一個(gè)問題是,一旦操作系統(tǒng)清除該進(jìn)程,由該進(jìn)程使用的內(nèi)存便處于未知狀態(tài)。內(nèi)存可能包括更多錯(cuò)誤,在這種情況下,由不同進(jìn)程嘗試使用該內(nèi)存會導(dǎo)致附加機(jī)器校驗(yàn)異常。另一問題是由該進(jìn)程使用的內(nèi)存可能具有毒藥并且如果OS將該內(nèi)存區(qū)域分配給另一進(jìn)程,則該進(jìn)程可能進(jìn)入該有毒藥的內(nèi)存。當(dāng)前系統(tǒng)中的操作系統(tǒng)通常不充分了解內(nèi)存控制器清理被清除的進(jìn)程的具有毒藥的內(nèi)存。
操作系統(tǒng)有兩個(gè)選擇。第一,可以聲明由被清除的進(jìn)程使用的內(nèi)存不可用。在這種情況下,操作系統(tǒng)不再嘗試使用該內(nèi)存。在重啟之間長時(shí)間運(yùn)行的系統(tǒng)中,隨著越來越多進(jìn)程被清除以及它們的內(nèi)存資源被標(biāo)記為不可用,這可以導(dǎo)致在內(nèi)存映射中出現(xiàn)大量間斷。在第二選擇中,操作系統(tǒng)可以清除該進(jìn)程,但是允許繼續(xù)使用該內(nèi)存,盡管最初可能存在與導(dǎo)致該毒藥的內(nèi)存硬件相關(guān)的實(shí)際問題。如果不采取措施來確保該內(nèi)存沒有毒藥以及沒有會導(dǎo)致未糾正錯(cuò)誤的故障,則盲目地重新使用內(nèi)存可以導(dǎo)致產(chǎn)生附加機(jī)器校驗(yàn)。
上面的討論假定最初可以清除正在使用包括錯(cuò)誤的內(nèi)存的進(jìn)程。如果在敏感進(jìn)程(如操作系統(tǒng)內(nèi)核)中檢測到毒藥,則清除進(jìn)程通常導(dǎo)致系統(tǒng)崩潰。在許多情況中,操作系統(tǒng)的設(shè)計(jì)者提供在清除關(guān)鍵進(jìn)程(如內(nèi)核)時(shí)由該關(guān)鍵進(jìn)程使用的內(nèi)存的內(nèi)存轉(zhuǎn)儲(dump)。該轉(zhuǎn)儲允許專家分析在故障時(shí)該關(guān)鍵進(jìn)程正在做什么以及更好地調(diào)試該故障。但是,如果由關(guān)鍵進(jìn)程使用的內(nèi)存包括附加錯(cuò)誤,則訪問該內(nèi)存以轉(zhuǎn)儲內(nèi)容的僅有動作可以導(dǎo)致附加的機(jī)器校驗(yàn)異常。
進(jìn)一步加重由毒藥導(dǎo)致的機(jī)器校驗(yàn)異常的問題是純粹的毒藥產(chǎn)生不是清除進(jìn)程的自身原因。例如,當(dāng)嘗試預(yù)獲取CPU緩存的緩存行時(shí),內(nèi)存控制器可以檢測內(nèi)存中的錯(cuò)誤。然后,內(nèi)存控制器可以用毒藥簽名替代包含該錯(cuò)誤的內(nèi)存并加載帶有該毒藥簽名的緩存。此時(shí),系統(tǒng)知道已經(jīng)產(chǎn)生毒藥,但是無法確定該毒藥是否以及何時(shí)將被消耗(consume)。例如,進(jìn)程可以從不嘗試訪問所預(yù)獲取的緩存行,因此從不產(chǎn)生機(jī)器校驗(yàn)異常。此外,系統(tǒng)沒有明確方法來確定通過清除消耗該毒藥的進(jìn)程,操作系統(tǒng)是否能夠從該毒藥的消耗中恢復(fù)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于慧與發(fā)展有限責(zé)任合伙企業(yè),未經(jīng)慧與發(fā)展有限責(zé)任合伙企業(yè)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201280076003.2/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測;錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過測試作故障硬件的檢測或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過處理作錯(cuò)誤檢測、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過軟件的測試或調(diào)試防止錯(cuò)誤





