專利名稱:一種失效地址處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機領(lǐng)域,尤其涉及一種失效地址處理方法及裝置。
背景技術(shù):
計算機系統(tǒng)一般由處理器、內(nèi)存、輸入設(shè)備、輸出設(shè)備和總線五個部分組成,其中內(nèi)存用來保存處理器運行所需的指令和數(shù)據(jù)。內(nèi)存一般是用半導(dǎo)體工藝的動態(tài)隨機存儲器(Dynamic Random Access Memory, DRAM)實現(xiàn)的,為了便于更換常常將內(nèi)存做成包含多個DRAM芯片的內(nèi)存條形式。為了能夠使內(nèi)存條的可靠性提高,內(nèi)存條上往往還增加了 I或2個錯誤檢測和糾正(Error Checking and Correction, ECC)校驗芯片。在現(xiàn)有技術(shù)中,當(dāng)程序訪問內(nèi)存時,若內(nèi)存中的數(shù)據(jù)出現(xiàn)一個比特的錯誤,可以通 過ECC校驗碼檢測出來并加以糾正,使計算機可以繼續(xù)正常運行,并且由電可擦可編程只讀存儲器(Electrically Erasable Programmable Read-Only Memory, EEPR0M)記錄下失效地址。但是當(dāng)錯誤超過一個比特時,由于超過了 ECC的糾錯能力,ECC校驗芯片只能將錯誤檢測出來但無法進行糾正,導(dǎo)致系統(tǒng)運行錯誤,在檢測到錯誤后也要將失效地址記錄在EEPROM中。記錄失效地址是為了在系統(tǒng)重新啟動過程中,不再使用失效地址對應(yīng)的存儲單元,保證程序正常運行。在實現(xiàn)上述信息存儲的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在如下問題由于系統(tǒng)重新啟動后不加區(qū)分的屏蔽已記錄的失效地址,造成內(nèi)存存儲資源的浪費。
發(fā)明內(nèi)容
本發(fā)明的實施例提供一種失效地址處理方法及裝置,可以在保證內(nèi)存讀寫正確的同時,有效提高內(nèi)存資源的利用率。本發(fā)明的第一方面,提供一種失效地址處理方法,應(yīng)用于基本輸入輸出系統(tǒng)(Basic Input Output System, BIOS)啟動階段,所述方法包括讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址;其中,所述失效地址是由操作系統(tǒng)(Operating System,OS)在運行過程中檢測到出現(xiàn)失效的單元后存儲的,所述第二存儲器為非易失性存儲器;當(dāng)判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址。結(jié)合第一方面,在一種可能的實現(xiàn)方式中,在所述讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址之后,所述的失效地址處理方法還包括判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型,所述失效類型包括軟失效和硬失效;判斷所述失效地址的分配類型,所述分配類型包括動態(tài)分配和靜態(tài)分配。結(jié)合第一方面和上述可能的實現(xiàn)方式,在另一種可能的實現(xiàn)方式中,所述方法還包括
當(dāng)判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為軟失效時,則從所述第二存儲器中刪除所述失效地址。結(jié)合第一方面和上述可能的實現(xiàn)方式,在另一種可能的實現(xiàn)方式中,所述方法還包括當(dāng)判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為靜態(tài)分配時,則啟動保護機制。結(jié)合第一方面和上述可能的實現(xiàn)方式,在另一種可能的實現(xiàn)方式中,所述判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型,包括對所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元進行寫入和讀取測試;其中,所述寫入和讀取測試為在所述存儲單元中寫入數(shù)據(jù),再從所述存儲單元中讀取數(shù)據(jù);
若所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)一致,則所述存儲單元為軟失效;若所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)不一致,則所述存儲單元為硬失效。結(jié)合第一方面和上述可能的實現(xiàn)方式,在另一種可能的實現(xiàn)方式中,所述第一存儲器包括動態(tài)隨機存儲器DRAM,所述第二存儲器包括電可擦可編程只讀存儲器EEPROM或者flash存儲器。結(jié)合第一方面和上述可能的實現(xiàn)方式,在另一種可能的實現(xiàn)方式中,所述啟動保護機制包括提示警告并停止運行;或提示警告并重啟系統(tǒng);所述屏蔽所述失效地址包括將所述失效地址所在的頁面地址范圍設(shè)置為保留屬性,以便OS對所述第一存儲器進行讀寫操作時不再使用所述頁面地址范圍。結(jié)合第一方面和上述可能的實現(xiàn)方式,在另一種可能的實現(xiàn)方式中,動態(tài)分配的地址包括0S進程占用的地址空間、用戶進程占用的地址空間和輸入/輸出I/o設(shè)備的收發(fā)緩沖區(qū);靜態(tài)分配的地址包括0S內(nèi)核占用的地址空間、BIOS緩沖區(qū)和視頻緩沖區(qū)。本發(fā)明的第二方面,提供一種失效地址處理裝置,應(yīng)用于BIOS啟動階段,該裝置包括讀取單元,用于讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址;其中,所述失效地址是由操作系統(tǒng)OS在運行過程中檢測到出現(xiàn)失效的單元后存儲的,所述第二存儲器為非易失性存儲器;屏蔽單元,用于當(dāng)判斷所述讀取單元讀取的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效,且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址。結(jié)合第二方面,在一種可能實現(xiàn)方式中,所述的失效地址處理裝置,還包括第一判斷單元,用于在所述讀取單元讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址之后,判斷所述讀取單元讀取的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型,所述失效類型包括軟失效和硬失效;第二判斷單元,用于判斷所述失效地址的分配類型,所述分配類型包括動態(tài)分配和靜態(tài)分配。結(jié)合第二方面和上述可能的實現(xiàn)方式,在另一種可能的實現(xiàn)方式中,所述的失效地址處理裝置還包括刪除單元,用于當(dāng)所述第一判斷單元判斷的所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為軟失效時,從所述第二存儲器中刪除所述失效地址。結(jié)合第二方面和上述可能的實現(xiàn)方式,在另一種可能實現(xiàn)方式中,所述的失效地址處理裝置,還包括保護單元,用于當(dāng)所述第一判斷單元判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效,且所述第二判斷單元判斷的所述失效地址的分配類型為靜態(tài)分配時,啟動保護機制。結(jié)合第二方面和上述可能的實現(xiàn)方式,在另一種可能實現(xiàn)方式中,所述第一判斷單元,包括 測試模塊,用于對所述讀取單元讀取的失效地址對應(yīng)的存儲單元進行寫入和讀取測試;其中,所述寫入和讀取測試為在所述存儲單元中寫入數(shù)據(jù),再從所述存儲單元中讀取數(shù)據(jù);當(dāng)所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)一致時,確定所述存儲單元為軟失效;當(dāng)所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)不一致時,確定所述存儲單元為硬失效。結(jié)合第二方面和上述可能的實現(xiàn)方式,在另一種可能實現(xiàn)方式中,所述第一存儲器包括動態(tài)隨機存儲器DRAM,所述第二存儲器包括電可擦可編程只讀存儲器EEPROM或者flash存儲器。結(jié)合第二方面和上述可能的實現(xiàn)方式,在另一種可能實現(xiàn)方式中,所述保護單元具體用于提示警告并停止運行;或提示警告并重啟系統(tǒng);所述屏蔽單元具體用于將所述失效地址所在的頁面地址范圍設(shè)置為保留屬性,以便OS對所述第一存儲器進行讀寫操作時不再使用所述頁面地址范圍。結(jié)合第二方面和上述可能的實現(xiàn)方式,在另一種可能實現(xiàn)方式中,動態(tài)分配的地址包括0S進程占用的地址空間、用戶進程占用的地址空間和輸入/輸出I/o設(shè)備的收發(fā)緩沖區(qū);靜態(tài)分配的地址包括0S內(nèi)核占用的地址空間、BIOS緩沖區(qū)和視頻緩沖區(qū)。本發(fā)明提供的一種失效地址處理方法及裝置,當(dāng)記錄的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址,與現(xiàn)有技術(shù)中直接將所有失效地址對應(yīng)的存儲單元均設(shè)置為保留屬性相比,區(qū)分軟失效地址和硬失效地址,僅將硬失效的動態(tài)分配地址進行屏蔽,避免了內(nèi)存讀寫出錯,并且內(nèi)存中軟失效的地址空間可繼續(xù)使用,提高了內(nèi)存空間的利用率。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實施例I提供的一種失效地址處理方法流程圖;圖2為本發(fā)明實施例2提供的一種失效地址處理方法流程圖;圖3為本發(fā)明實施例3提供的一種失效地址處理裝置組成示意圖;圖4為本發(fā)明實施例3提供的另一種失效地址處理裝置組成示意圖;圖5為本發(fā)明實施例4提供的一種失效地址處理裝置圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。實施例I本發(fā)明實施例提供一種失效地址處理方法,應(yīng)用于基本輸入輸出系統(tǒng)(BasicInput Output System, BIOS)啟動階段,如圖I所示,該方法可以包括101、讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址。其中,計算機系統(tǒng)復(fù)位后,BIOS先開始運行。BIOS從第二存儲器中讀取存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址,并對其進行讀寫測試和地址匹配。所述失效 地址是由操作系統(tǒng)(Operating System, OS)在運行過程中檢測到出現(xiàn)失效的單元后存儲的。102、當(dāng)判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址。其中,BIOS從第二存儲器中讀取存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址后,對其進行讀寫測試,判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型是軟失效還是硬失效。如果是硬失效則會對失效地址進行地址匹配,匹配所述失效地址是否屬于OS動態(tài)分配的內(nèi)存空間范圍,如果該地址屬于OS動態(tài)分配的內(nèi)存空間范圍,則屏蔽該失效地址;如果該地址屬于OS靜態(tài)分配的內(nèi)存空間范圍,則啟動保護機制。具體的,OS是指一個軟件運行環(huán)境,可以基于這個環(huán)境為用戶進程(如用戶啟動的應(yīng)用程序的進程)以及外圍設(shè)備的收發(fā)緩沖區(qū)(如網(wǎng)卡用于發(fā)送或接收數(shù)據(jù)的緩存)分配內(nèi)存空間。所述屏蔽所述失效地址包括將所述失效地址所在的頁面地址范圍設(shè)置為保留屬性,以便OS對所述第一存儲器進行動態(tài)存儲分配時不再使用所述頁面地址范圍。也就是說,OS在分配內(nèi)存空間的時候,就不會用到這些地址。需要說明的是,BIOS從第二存儲器中讀取存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址后,也可以先對失效地址進行地址匹配,再對該失效地址進行讀寫測試,根據(jù)匹配結(jié)果和測試結(jié)果,如果判斷出該失效地址對應(yīng)的出現(xiàn)失效的存儲單元不屬于支持動態(tài)分配的內(nèi)存空間范圍即所述失效地址的分配類型為靜態(tài)分配且所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元為硬失效,則啟動保護機制。本發(fā)明提供的失效地址處理方法,當(dāng)記錄的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址,與現(xiàn)有技術(shù)中直接將所有失效地址對應(yīng)的存儲單元均設(shè)置為保留屬性相比,區(qū)分軟失效地址和硬失效地址,僅將硬失效的動態(tài)分配地址進行屏蔽,避免了內(nèi)存讀寫出錯,并且內(nèi)存中軟失效的地址空間可繼續(xù)使用,提高了內(nèi)存空間的利用率。實施例2本發(fā)明實施例提供一種失效地址處理方法,如圖2所示,該方法可以包括201、當(dāng)訪問第一存儲器失效時,將發(fā)生失效的失效地址存儲至第二存儲器中;其中,所述失效包括軟失效和硬失效。其中,第一存儲器包括DRAM,所述第二存儲器包括EEPROM或flash。內(nèi)存是計算機系統(tǒng)的組成部分之一,主要用來保存處理器運行所需的指令和數(shù)據(jù)。為了便于更換常做成包含多個DRAM芯片的內(nèi)存條的形式,在內(nèi)存條上除了有DRAM芯片之外,還有一個小容量的EEPROM芯片,EEPROM芯片可以通過I2C總線來訪問。EEPROM芯片里面保存著DRAM芯片的地址線位數(shù)、數(shù)據(jù)線寬度、時序參數(shù)等信息,具體格式有業(yè)界標(biāo)準(zhǔn),本發(fā)明在此不作詳細贅述,處理器可以根據(jù)這些信息來配置內(nèi)存控制器,保證對內(nèi)存條的正常訪問。EEPROM芯片的容量一般是256個字節(jié),保存以上所述DRAM芯片的相關(guān)信息只需要128個字節(jié),所以剩余空間可以用來記錄內(nèi)存條上DRAM芯片的失效地址。在計算機運行的過程中,當(dāng)處理器訪問第一存儲器失效時,處理器會將發(fā)生失效 的失效地址存儲至第二存儲器中。具體的可以是當(dāng)程序訪問內(nèi)存時,處理器都會將數(shù)據(jù)和對應(yīng)的校驗位一起讀取并按照ECC算法進行校驗,如果數(shù)據(jù)中存在錯誤并且可以糾正,例如只有一個比特出錯,那么先將錯誤糾正得到正確的數(shù)據(jù)然后將失效地址記錄到第二存儲器中,此時計算機就可以繼續(xù)正常運行。但是數(shù)據(jù)出錯有可能是軟失效也有可能是硬失效,而在操作系統(tǒng)運行的過程中有些內(nèi)存空間受保護,因此不能在檢測到數(shù)據(jù)出錯后立即進行測試,而是要等到系統(tǒng)重啟后在BIOS階段進行測試,區(qū)分出該失效是硬失效還是軟失效。如果錯誤較多超出了 ECC算法的糾錯能力,例如同時出現(xiàn)了兩個或者兩個以上的比特錯誤,那么只能檢測到失效地址而無法恢復(fù)正確數(shù)據(jù),此時也需要記錄失效地址,由于此時系統(tǒng)已經(jīng)無法繼續(xù)運行,所以必須重啟系統(tǒng)??梢岳斫獾氖?,記錄失效地址是為了能夠在正常重啟時進行測試,將硬失效的地址所在頁面設(shè)置為不可用,避免重啟后繼續(xù)使用,否則一旦數(shù)據(jù)出錯積累超出ECC糾錯能力就會造成故障。如果同一地址在重啟之前被多次訪問,會出現(xiàn)同一地址被記錄多次的情況,因此在記錄地址之前需要先確認是否已經(jīng)記錄過,從而減少EEPROM空間的占用。202、BI0S系統(tǒng)重啟后,讀取所述第二存儲器中存儲的所述第一存儲器中出現(xiàn)失效的存儲單元的失效地址。其中,在系統(tǒng)復(fù)位結(jié)束后,BIOS先開始運行,對計算機中各種芯片執(zhí)行測試和初始化,例如處理器、橋片和各種輸入/輸出設(shè)備。緊接著BIOS會從第二存儲器中讀取內(nèi)存條的容量、時序參數(shù)并配置好內(nèi)存控制器,以便于對內(nèi)存條進行讀寫操作。然后BIOS判斷第二存儲器中是否保存了失效的存儲單元的地址信息,如果有保存,讀取第二存儲器中存儲的第一存儲器的失效地址。并且在讀取到失效地址后,會直接進行下一步的處理,即讀到一個失效地址處理一個,直至第二存儲器中記錄的第一存儲器的失效的存儲單元處理完成。在BIOS開始運行時還會特別準(zhǔn)備一個表格,例如E820表,E820表可以基于第二存儲器中存儲的第一存儲器的失效地址設(shè)置各個失效地址對應(yīng)的地址范圍的屬性,其中E820表中會列出各段內(nèi)存空間的地址范圍和屬性,例如保留(reserved)或可用(usable),以便于在操作系統(tǒng)啟動后根據(jù)E820表中標(biāo)記的訪問權(quán)限來使用內(nèi)存空間,使得系統(tǒng)可以正常的運行。其中,可以知道的是,在現(xiàn)有技術(shù)中,E820表的表項數(shù)目是有限的,由程序設(shè)計決定,例如32、64個,同時EEPROM剩余的存儲空間也是有限的,因此可以設(shè)定兩個閾值,第一閾值是E820表中記錄硬失效單元所在頁面地址范圍的表項數(shù),第二閾值是EEPROM中保存的失效地址數(shù)(包括硬失效和軟失效)。如果出現(xiàn)的失效的存儲單元過多,例如操作系統(tǒng)運行期間發(fā)生了多次內(nèi)存數(shù)據(jù)出錯,使得記錄到EEPROM中的項目總數(shù)超出了第二閾值,或者在BIOS啟動階段通過讀寫測試識別出的硬失效對應(yīng)的頁面總數(shù)超出了第一閾值,則可以
上報故障告警。由于內(nèi)存空間保留的基本單位是4KB頁面大小,因此在BIOS進行讀寫測試期間,如果多個失效地址位于同一個頁面,而且至少有一個失效的存儲單元是硬失效,則可以只在EEPROM中保留一個記錄。203、對所述失效地址對應(yīng)的存儲單元進行寫入和讀取測試,確定所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型;若所述出現(xiàn)失效的存儲單元的失效類型為軟失效,則執(zhí)行步驟204 ;若所述出現(xiàn)失效的存儲單元的失效類型為硬失效,則執(zhí)行步驟205。其中,當(dāng)讀出第二存儲器中保存了失效的存儲單元的地址信息時,會根據(jù)讀取的第二存儲器中存儲的第一存儲器的失效地址,對所述失效地址對應(yīng)的存儲單元進行寫入和 讀取測試,確定所述失效地址對應(yīng)的存儲單元的失效類型,其中,內(nèi)存中的數(shù)據(jù)錯誤一般存在以下幾種可能(I)生產(chǎn)缺陷。DRAM芯片在生產(chǎn)過程中由于工藝缺陷而產(chǎn)生少量的失效存儲單元,這些單元無法正確讀寫,稱為硬失效。(2)器件損傷。DRAM芯片在運行過程中由于電應(yīng)力而產(chǎn)生少量的失效存儲單元,這些單元也無法正確讀寫,同樣是硬失效。(3)比特跳變。由于工作環(huán)境中存在的宇宙射線、電源波動、信號串?dāng)_等,這些外界因素都會使少量的存儲單元信息發(fā)生跳變,例如從I變?yōu)?,這種失效只影響存儲單元保存的信息,存儲單元本身仍然可以正常讀寫,這種情況稱為軟失效。可以看出,根據(jù)所述失效的存儲單元是否可以正常的讀寫就可以區(qū)分出該失效的存儲單元是硬失效還是軟失效。所述寫入和讀取測試為在所述存儲單元中寫入數(shù)據(jù),再從所述存儲單元中讀取數(shù)據(jù)。當(dāng)所述失效地址對應(yīng)的存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)一致時,確定所述存儲單元為軟失效;當(dāng)所述失效地址對應(yīng)的存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)不一致時,確定所述存儲單元為硬失效。204、從所述第二存儲器中刪除所述失效地址。其中,當(dāng)BIOS根據(jù)讀寫測試的結(jié)果,判斷出該失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為軟失效,那么BIOS將會把該失效地址從第二存儲器中刪除。這是因為對于軟失效來說,它的發(fā)生是由于外界因素的影響導(dǎo)致的,是存在隨機性的,存儲單元本身并沒有失效,因此這類失效地址對應(yīng)的出現(xiàn)失效的存儲單元仍可以繼續(xù)使用。所以本發(fā)明對失效地址的類型進行判斷,將由于外界因素的影響導(dǎo)致數(shù)據(jù)錯誤的軟失效的失效地址刪除,使得讀寫正常的存儲單元可以繼續(xù)使用,與現(xiàn)有技術(shù)相比,提高了內(nèi)存的存儲空間利用率。進一步,為了避免設(shè)備因內(nèi)存地址失效而發(fā)生嚴重錯誤,本發(fā)明的方法還可以包括以下步驟205、判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的分配類型;若所述失效地址的分配類型為靜態(tài)分配,則執(zhí)行步驟206 ;若所述失效地址的分配類型為動態(tài)分配,則執(zhí)行步驟207。其中,當(dāng)BIOS根據(jù)讀寫測試的結(jié)果,判斷出該失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效時,可以進一步判斷該失效地址對應(yīng)的出現(xiàn)失效的存儲單元的分配類型,這是因為對于硬失效來說,如果存儲單元存在物理故障,它所在的頁面不能繼續(xù)使用,需要設(shè)置為保留屬性。但是對處理器來說,整個內(nèi)存空間的用途有一定規(guī)劃,有些內(nèi)存空間是操作系統(tǒng)可以動態(tài)分配的,例如I/o設(shè)備的收發(fā)緩沖區(qū)、OS進程占用的地址空間和用戶進程占用的地址空間等。如果支持動態(tài)分配的內(nèi)存單元發(fā)生了失效,可以由BIOS設(shè)置為保留屬性,這樣操作系統(tǒng)啟動后就獲取不到已屏蔽的地址空間,就不會使用這些地址空間,不影響正常運行。但是如果是靜態(tài)分配的內(nèi)存單元發(fā)生失效的話,OS會因為無法訪問這些靜態(tài)分配的地址空間而出錯,影響設(shè)備的正常工作。206、啟動保護機制。其中,在BIOS根據(jù)第二存儲器中保存的失效地址判斷出該失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效,并且所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的分配類型為靜態(tài)分配時,BIOS會啟動保護機制。所述保護機制可以是提示警告并停止運行,也可以是提示警告并且重新啟動系統(tǒng),或者也可以將該失效地址寫入到閃存等存儲器中,以便后續(xù)排錯和維修。例如,OS內(nèi)核是在BIOS啟動階段由BIOS加載到內(nèi)存中固定地址 的,不能支持動態(tài)分配的地址,如果這段地址范圍內(nèi)有存儲單元出現(xiàn)錯誤,就會影響設(shè)備的正常工作,只能上報告警并停止BIOS的繼續(xù)運行。207、將所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元所在的頁面地址范圍設(shè)置為保留屬性,以便OS進行地址分配時不使用所述頁面地址范圍對應(yīng)的存儲頁面。其中,在BIOS根據(jù)第二存儲器中保存的失效地址的頁面范圍判斷出該失效地址對應(yīng)的出現(xiàn)失效的存儲單元的分配類型為動態(tài)分配時,BIOS會將所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元所在頁面地址范圍加入BIOS提前準(zhǔn)備好的E820表中并且設(shè)置為保留屬性,這樣在系統(tǒng)啟動后操作系統(tǒng)就不會繼續(xù)使用這段內(nèi)存空間,保證了系統(tǒng)在重啟后的正常運行。在檢測到該失效地址的分配類型為動態(tài)分配且所述失效地址的失效類型為硬失效,并將其加入E820表中設(shè)置為保留屬性后,BIOS會繼續(xù)檢測第二存儲器中是否還存在失效地址,若存在則繼續(xù)執(zhí)行步驟202-207,直到第二存儲器中記錄的失效地址全部處理完成。需要說明的是,本發(fā)明實施例中步驟203確定失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型和步驟205判斷失效地址對應(yīng)的出現(xiàn)失效的存儲單元的分配類型的順序可以調(diào)換,即也可以先判斷失效地址對應(yīng)的出現(xiàn)失效的存儲單元的分配類型,再確定失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型。本發(fā)明實施例在此不做限定。本發(fā)明提供的一種失效地址處理方法,當(dāng)記錄的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址,與現(xiàn)有技術(shù)中直接將所有失效地址對應(yīng)的存儲單元均設(shè)置為保留屬性相比,區(qū)分軟失效地址和硬失效地址,僅將硬失效的動態(tài)分配地址進行屏蔽,避免了內(nèi)存讀寫出錯,并且內(nèi)存中軟失效的地址空間可繼續(xù)使用,提高了內(nèi)存空間的利用率。并且,當(dāng)失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為靜態(tài)分配時,啟動保護機制,與現(xiàn)有技術(shù)中直接將所有失效地址對應(yīng)的存儲單元均設(shè)置為保留屬性相比,將靜態(tài)分配的地址識別出來,提前啟動保護機制,避免處理器繼續(xù)運行發(fā)生嚴重錯誤。實施例3本發(fā)明實施例提供一種失效地址處理裝置,應(yīng)用于BIOS啟動階段,如圖3所示,包括讀取單元31和屏蔽單元32。讀取單元31,用于讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址;其中,所述失效地址是由操作系統(tǒng)OS在運行過程中檢測到出現(xiàn)失效的單元后存儲的,所述第二存儲器為非易失性存儲器。屏蔽單元32,用于當(dāng)判斷所述讀取單元31讀取的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效,且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地
址。 進一步的,如圖4所示,該失效地址處理裝置還可以包括第一判斷單元33、第二判斷單元34。第一判斷單元33,用于在所述讀取單元31讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址之后,判斷所述讀取單元31讀取的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型,所述失效類型包括軟失效和硬失效。第二判斷單元34,用于判斷所述失效地址的分配類型,所述分配類型包括動態(tài)分配和靜態(tài)分配進一步的,所述的失效地址處理裝置還可以包括刪除單元35。刪除單元35,用于在所述第一判斷單元33判斷的所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為軟失效時,從所述第二存儲器中刪除所述失效地址。進一步的,該失效地址處理裝置還可以包括保護單元36。保護單元36,用于當(dāng)所述第一判斷單元33判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效,且所述第二判斷單元34判斷的所述失效地址的分配類型為靜態(tài)分配時,啟動保護機制。進一步的,該第一判斷單元33,包括測試模塊331。測試模塊331,用于對所述讀取單元31讀取的失效地址對應(yīng)的存儲單元進行寫入和讀取測試;其中,所述寫入和讀取測試為在所述存儲單元中寫入數(shù)據(jù),再從所述存儲單元中讀取數(shù)據(jù);當(dāng)所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)一致時,確定所述存儲單元為軟失效;當(dāng)所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)不一致時,確定所述存儲單元為硬失效。進一步的,所述第一存儲器包括動態(tài)隨機存儲器DRAM,所述第二存儲器包括電可擦可編程只讀存儲器EEPROM或者flash存儲器。進一步的,所述保護單元36具體用于提示警告并停止運行,或提示警告并重啟系統(tǒng)。所述屏蔽單元32具體用于將所述失效地址所在的頁面地址范圍設(shè)置為保留屬性,以便OS對所述第一存儲器進行讀寫操作時不再使用所述頁面地址范圍。進一步的,動態(tài)分配的地址包括OS進程占用的地址空間、用戶進程占用的地址空間和輸入/輸出I/o設(shè)備的收發(fā)緩沖區(qū);靜態(tài)分配的地址包括0S內(nèi)核占用的地址空間、BIOS緩沖區(qū)和視頻緩沖區(qū)。本發(fā)明提供的一種失效地址處理裝置,當(dāng)記錄的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址,與現(xiàn)有技術(shù)中直接將所有失效地址對應(yīng)的存儲單元均設(shè)置為保留屬性相比,區(qū)分軟失效地址和硬失效地址,僅將硬失效的動態(tài)分配地址進行屏蔽,避免了內(nèi)存讀寫出錯,并且內(nèi)存中軟失效的地址空間可繼續(xù)使用,提高了內(nèi)存空間的利用率。并且,當(dāng)所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為靜態(tài)分配時,啟動保護機制,與現(xiàn)有技術(shù)中直接將所有失效地址對應(yīng)的存儲單元均設(shè)置為保留屬性相比,將靜態(tài)分配的地址識別出來,提前啟動保護機制,避免處理器繼續(xù)運行發(fā)生嚴重錯誤。實施例4 本發(fā)明實施例還提供一種失效地址處理裝置,如圖5所示,包括處理器51、第一存儲器52、第二存儲器53和BIOS存儲器54,該裝置可以是PC或者服務(wù)器,或者其他設(shè)備。在本實施例中,所述BIOS存儲器54存儲有BIOS程序代碼,處理器51上電后從所述BIOS存儲器54中讀取這些BIOS程序代碼,處理器51執(zhí)行這些程序代碼的具體實現(xiàn)如下處理器51,用于讀取第二存儲器53中存儲的第一存儲器52中出現(xiàn)失效的存儲單元的失效地址。其中,所述失效地址是由操作系統(tǒng)OS在運行過程中檢測到出現(xiàn)失效的單元后存儲的,所述第二存儲器為非易失性存儲器。所述處理器51,還用于當(dāng)所述處理器51讀取的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為靜態(tài)分配時,啟動保護機制。所述處理器51,還用于當(dāng)所述失效地址對應(yīng)的存儲單元為硬失效且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址。后續(xù)處理器51啟動OS后,在OS運行過程中若檢測到出現(xiàn)失效的存儲單元可將失效地址存儲到第二存儲器53中。進一步的,所述處理器51,還用于在讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址之后,判斷讀取的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型,所述失效類型包括軟失效和硬失效,并判斷所述失效地址的分配類型,所述分配類型包括動態(tài)分配和靜態(tài)分配。進一步的,所述處理器51,還用于在判斷的所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為軟失效時,從所述第二存儲器53中刪除所述失效地址。進一步的,所述處理器51,還用于當(dāng)判斷的所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為靜態(tài)分配時,啟動保護機制。進一步的,所述處理器51還用于對讀取的失效地址對應(yīng)的存儲單元進行寫入和讀取測試;其中,所述寫入和讀取測試為在所述存儲單元中寫入數(shù)據(jù),再從所述存儲單元中讀取數(shù)據(jù);當(dāng)所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)一致時,確定所述存儲單元為軟失效;當(dāng)所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)不一致時,確定所述存儲單元為硬失效。進一步的,所述第一存儲器52包括動態(tài)隨機存儲器DRAM,所述第二存儲器53包括電可擦可編程只讀存儲器EEPROM或者flash存儲器。進一步的,所述啟動單元36具體用于提示警告并停止運行,或提示警告并重啟系統(tǒng)。所述屏蔽單元32具體用于將所述失效地址所在的頁面地址范圍設(shè)置為保留屬性,以便OS對所述第一存儲器進行讀寫操作時不再使用所述頁面地址范圍。
進一步的,動態(tài)分配的地址包括OS進程占用的地址空間、用戶進程占用的地址空間和輸入/輸出I/o設(shè)備的收發(fā)緩沖區(qū);靜態(tài)分配的地址包括0S內(nèi)核占用的地址空間、BIOS緩沖區(qū)和視頻緩沖區(qū)。本發(fā)明提供的一種失效地址處理裝置,當(dāng)記錄的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址,與現(xiàn)有技術(shù)中直接將所有失效地址對應(yīng)的存儲單元均設(shè)置為保留屬性相比,區(qū)分軟失效地址和硬失效地址,僅將硬失效的動態(tài)分配地址進行屏蔽,避免了內(nèi)存讀寫出錯,并且內(nèi)存中軟失效的地址空間可繼續(xù)使用,提高了內(nèi)存空間的利用率。并且,當(dāng)所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為靜態(tài)分配時,啟動保護機制,與現(xiàn)有技術(shù)中直接將所有失效地址對應(yīng)的存儲單元均設(shè)置為保留屬性相比,將靜態(tài)分配的地址識別出來,提前啟動保護機制,避免 處理器繼續(xù)運行發(fā)生嚴重錯誤。通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計算機的軟盤,硬盤或光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準(zhǔn)。
權(quán)利要求
1.一種失效地址處理方法,其特征在于,應(yīng)用于基本輸入輸出系統(tǒng)BIOS啟動階段,所述方法包括 讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址;其中,所述失效地址由操作系統(tǒng)OS在運行過程中檢測到出現(xiàn)失效的單元后存儲,所述第二存儲器為非易失性存儲器; 當(dāng)判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效,且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址。
2.根據(jù)權(quán)利要求I所述的失效地址處理方法,其特征在于,在所述讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址之后,所述方法還包括 判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型,所述失效類型包括軟失效和硬失效; 判斷所述失效地址的分配類型,所述分配類型包括動態(tài)分配和靜態(tài)分配。
3.根據(jù)權(quán)利要求2所述的失效地址處理方法,其特征在于,所述方法還包括 當(dāng)判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為軟失效時,則從所述第二存儲器中刪除所述失效地址。
4.根據(jù)權(quán)利要求I所述的失效地址處理方法,其特征在于,還包括 當(dāng)判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效,且所述失效地址的分配類型為靜態(tài)分配時,則啟動保護機制。
5.根據(jù)權(quán)利要求2所述的失效地址處理方法,其特征在于,所述判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型,包括 對所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元進行寫入和讀取測試;其中,所述寫入和讀取測試為在所述存儲單元中寫入數(shù)據(jù),再從所述存儲單元中讀取數(shù)據(jù); 若所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)一致,則所述存儲單元為軟失效; 若所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)不一致,則所述存儲單元為硬失效。
6.根據(jù)權(quán)利要求1-5中任一項所述的失效地址處理方法,其特征在于,所述第一存儲器包括動態(tài)隨機存儲器DRAM,所述第二存儲器包括電可擦可編程只讀存儲器EEPROM或者flash存儲器。
7.根據(jù)權(quán)利要求4所述的失效地址處理方法,其特征在于, 所述啟動保護機制包括提示警告并停止運行;或提示警告并重啟系統(tǒng); 所述屏蔽所述失效地址包括將所述失效地址所在的頁面地址范圍設(shè)置為保留屬性,以便OS對所述第一存儲器進行讀寫操作時不再使用所述頁面地址范圍。
8.根據(jù)權(quán)利要求2所述的失效地址處理方法,其特征在于, 動態(tài)分配的地址包括0S進程占用的地址空間、用戶進程占用的地址空間和輸入/輸出I/O設(shè)備的收發(fā)緩沖區(qū); 靜態(tài)分配的地址包括0S內(nèi)核占用的地址空間、BIOS緩沖區(qū)和視頻緩沖區(qū)。
9.一種失效地址處理裝置,其特征在于,應(yīng)用于基本輸入輸出系統(tǒng)BIOS啟動階段,所述裝置包括 讀取單元,用于讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址;其中,所述失效地址由操作系統(tǒng)OS在運行過程中檢測到出現(xiàn)失效的單元后存儲,所述第二存儲器為非易失性存儲器; 屏蔽單元,用于當(dāng)判斷所述讀取單元讀取的失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效,且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址。
10.根據(jù)權(quán)利要求9所述的失效地址處理裝置,其特征在于,還包括 第一判斷單元,用于在所述讀取單元讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址之后,判斷所述讀取單元讀取的失效地址對應(yīng)的出現(xiàn)失效的存儲單兀的失效類型,所述失效類型包括軟失效和硬失效; 第二判斷單元,用于判斷所述失效地址的分配類型,所述分配類型包括動態(tài)分配和靜態(tài)分配。
11.根據(jù)權(quán)利要求10所述的失效地址處理裝置,其特征在于,還包括 刪除單元,用于當(dāng)所述第一判斷單元判斷的所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為軟失效時,從所述第二存儲器中刪除所述失效地址。
12.根據(jù)權(quán)利要求9所述的失效地址處理裝置,其特征在于,還包括 保護單元,用于當(dāng)所述第一判斷單元判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效,且所述第二判斷單元判斷的所述失效地址的分配類型為靜態(tài)分配時,啟動保護機制。
13.根據(jù)權(quán)利要求10所述的失效地址處理裝置,其特征在于,所述第一判斷單元,包括 測試模塊,用于對所述讀取單元讀取的失效地址對應(yīng)的存儲單元進行寫入和讀取測試;其中,所述寫入和讀取測試為在所述存儲單元中寫入數(shù)據(jù),再從所述存儲單元中讀取數(shù)據(jù);當(dāng)所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)一致時,確定所述存儲單元為軟失效;當(dāng)所述存儲單元中讀取的數(shù)據(jù)與寫入的數(shù)據(jù)不一致時,確定所述存儲單元為硬失效。
14.根據(jù)權(quán)利要求9-13中任一項所述的失效地址處理裝置,其特征在于,所述第一存儲器包括動態(tài)隨機存儲器DRAM,所述第二存儲器包括電可擦可編程只讀存儲器EEPROM或者flash存儲器。
15.根據(jù)權(quán)利要求12所述的失效地址處理裝置,其特征在于, 所述保護單元具體用于提示警告并停止運行;或提示警告并重啟系統(tǒng); 所述屏蔽單元具體用于將所述失效地址所在的頁面地址范圍設(shè)置為保留屬性,以便OS對所述第一存儲器進行讀寫操作時不再使用所述頁面地址范圍。
16.根據(jù)權(quán)利要求10所述的失效地址的處理裝置,其特征在于, 動態(tài)分配的地址包括os進程占用的地址空間、用戶進程占用的地址空間和輸入/輸出I/o設(shè)備的收發(fā)緩沖區(qū); 靜態(tài)分配的地址包括0S內(nèi)核占用的地址空間、BIOS緩沖區(qū)和視頻緩沖區(qū)。
全文摘要
本發(fā)明實施例提供一種失效地址處理方法及裝置,涉及計算機領(lǐng)域,可以在保證內(nèi)存讀寫正確的同時,有效提高內(nèi)存資源的利用率。具體方案為讀取第二存儲器中存儲的第一存儲器中出現(xiàn)失效的存儲單元的失效地址,其中,所述失效地址由操作系統(tǒng)OS在運行過程中檢測到出現(xiàn)失效的單元后存儲,所述第二存儲器為非易失性存儲器;當(dāng)判斷所述失效地址對應(yīng)的出現(xiàn)失效的存儲單元的失效類型為硬失效且所述失效地址的分配類型為動態(tài)分配時,屏蔽所述失效地址。本發(fā)明主要用于BIOS啟動階段失效地址的處理過程中。
文檔編號G06F11/07GK102968353SQ201210417018
公開日2013年3月13日 申請日期2012年10月26日 優(yōu)先權(quán)日2012年10月26日
發(fā)明者李延松 申請人:華為技術(shù)有限公司