專利名稱:數(shù)據(jù)錯誤修復方法、裝置和設備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)錯誤修復方法、裝置和設備。
背景技術(shù):
內(nèi)存作為計算機系統(tǒng)中必備的部件,通常以內(nèi)存條的形式存在于不同架構(gòu)的系統(tǒng)中。在系統(tǒng)運行過程中,內(nèi)存可能發(fā)生硬失效或軟失效。硬失效是指由于硬件問題引入的無法恢復的數(shù)據(jù)錯誤,軟失效是指由于數(shù)據(jù)跳變而引入的可以由上、下電或者重啟進行恢復的數(shù)據(jù)錯誤。而為了維護系統(tǒng)的正常運行,需要對硬失效和軟失效引入的數(shù)據(jù)錯誤進行修復?,F(xiàn)有技術(shù)中的修復方法一般通過在內(nèi)存條上增加ECC (Error Checking andCorrection,錯誤檢測和糾正)校驗芯片進行,當內(nèi)存的數(shù)據(jù)出現(xiàn)數(shù)據(jù)錯誤,ECC檢測到該數(shù)據(jù)錯誤后,輸出正確的數(shù)據(jù)給用戶。在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:ECC僅是根據(jù)數(shù)據(jù)錯誤向用戶輸出正確的數(shù)據(jù),而不對內(nèi)存中的錯誤數(shù)據(jù)進行任何修復動作。通過ECC不能有效區(qū)分硬失效和軟失效,進而不能對錯誤數(shù)據(jù)修復,使得錯誤數(shù)據(jù)的累積而容易造成系統(tǒng)掛死、系統(tǒng)無法啟動等,影響正常業(yè)務的進行。
發(fā)明內(nèi)容
為了解決軟、硬失效的區(qū)分和處理問題,本發(fā)明實施例提供了一種數(shù)據(jù)錯誤修復方法、裝置和設備。所述技術(shù)方案如下:第一方面,提供了一種數(shù)據(jù)錯誤修復方法,所述方法包括:判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù);如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。結(jié)合第一方面,本發(fā)明實施例的第一種可能實現(xiàn)方式中,如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復,包括:如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中存在相同的物理地址,確定所述相同的物理地址對應的數(shù)據(jù)錯誤的失效類型為硬失效。結(jié)合第一方面,本發(fā)明實施例的第二種可能實現(xiàn)方式中,如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復,包括:如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,進行內(nèi)存巡檢;在結(jié)束巡檢之后,判斷所述內(nèi)存中的數(shù)據(jù)錯誤是否已被修復;
如果所述數(shù)據(jù)錯誤未被修復,確定所述數(shù)據(jù)錯誤的失效類型為硬失效;如果所述數(shù)據(jù)錯誤已被修復,確定所述數(shù)據(jù)錯誤的失效類型為軟失效。結(jié)合第一方面,本發(fā)明實施例的第三種可能實現(xiàn)方式中,如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,進行內(nèi)存巡檢,包括:如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,將所述預設計數(shù)器中的物理地址轉(zhuǎn)換成巡檢地址;根據(jù)所述巡檢地址對應的所述內(nèi)存中的數(shù)據(jù)進行巡檢。結(jié)合第一方面,本發(fā)明實施例的第四種可能實現(xiàn)方式中,如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復之后,所述方法還包括:當確定所述內(nèi)存的失效類型為硬失效時,獲取所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址;觸發(fā)警報,以便提示用戶更換所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址對應的內(nèi)存。結(jié)合第一方面,本發(fā)明實施例的第五種可能實現(xiàn)方式中,判斷內(nèi)存中預設計數(shù)器是否溢出之前,所述方法還包括:當內(nèi)存中發(fā)生數(shù)據(jù)錯誤時,獲取發(fā)生數(shù)據(jù)錯誤的物理地址;將所述發(fā)生數(shù)據(jù)錯誤的物理地址存儲至內(nèi)存中,并對所述發(fā)生數(shù)據(jù)錯誤的物理地址進行數(shù)據(jù)回寫。第二方面,提供了一種數(shù)據(jù)錯誤修復裝置,所述裝置包括:判斷模塊,用于判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù);確定模塊,用于如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。結(jié)合第二方面,本發(fā)明實施例的第一種可能實現(xiàn)方式中,所述確定模塊用于如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中存在相同的物理地址,確定所述相同的物理地址對應的數(shù)據(jù)錯誤的失效類型為硬失效。結(jié)合第二方面,本發(fā)明實施例的第二種可能實現(xiàn)方式中,所述確定模塊包括:巡檢單元,用于如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,進行內(nèi)存巡檢;判斷單元,用于在結(jié)束巡檢之后,判斷所述內(nèi)存中的數(shù)據(jù)錯誤是否已被修復;確定單元,用于如果所述數(shù)據(jù)錯誤未被修復,確定所述數(shù)據(jù)錯誤的失效類型為硬失效;所述確定單元,用于如果所述數(shù)據(jù)錯誤已被修復,確定所述數(shù)據(jù)錯誤的失效類型為軟失效。結(jié)合第二方面,本發(fā)明實施例的第三種可能實現(xiàn)方式中,所述巡檢單元包括:巡檢地址轉(zhuǎn)換子單元,用于如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,將所述預設計數(shù)器中的物理地址轉(zhuǎn)換成巡檢地址;巡檢子單元,用于根據(jù)所述巡檢地址對應的所述內(nèi)存中的數(shù)據(jù)進行巡檢。
結(jié)合第二方面,本發(fā)明實施例的第四種可能實現(xiàn)方式中,所述裝置還包括:硬失效物理地址獲取模塊,用于當確定所述內(nèi)存的失效類型為硬失效時,獲取所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址;觸發(fā)模塊,用于觸發(fā)警報,以便提示用戶更換所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址對應的內(nèi)存。結(jié)合第二方面,本發(fā)明實施例的第五種可能實現(xiàn)方式中,所述裝置還包括:數(shù)據(jù)錯誤物理地址獲取模塊,用于當內(nèi)存中發(fā)生數(shù)據(jù)錯誤時,獲取發(fā)生數(shù)據(jù)錯誤的物理地址;存儲模塊,用于將所述發(fā)生數(shù)據(jù)錯誤的物理地址存儲至內(nèi)存中;回寫模塊,用于對所述發(fā)生數(shù)據(jù)錯誤的物理地址進行數(shù)據(jù)回寫。第三方面,提供了一種數(shù)據(jù)錯誤修復設備,所述設備包括:內(nèi)存,用于存儲數(shù)據(jù)以及發(fā)生數(shù)據(jù)錯誤的物理地址;處理器,用于判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù);所述處理器,還用于如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:本發(fā)明實施例提供的數(shù)據(jù)錯誤修復方法、裝置和設備,通過判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù);如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。采用本發(fā)明實施例提供的技術(shù)方案,可以有效區(qū)分內(nèi)存的失效類型,并根據(jù)失效類型進行修復,避免了數(shù)據(jù)錯誤累積造成的系統(tǒng)掛死或無法啟動等情況,保證了業(yè)務的正常進行。
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實施例中提供的一種數(shù)據(jù)錯誤修復方法流程圖;圖2是本發(fā)明實施例中提供的一種數(shù)據(jù)錯誤修復方法流程圖;圖3是本發(fā)明實施例中提供的一種數(shù)據(jù)錯誤修復裝置結(jié)構(gòu)示意圖;圖4是本發(fā)明實施例中提供的一種數(shù)據(jù)錯誤修復設備結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。本發(fā)明實施例中,終端設備指向用戶提供數(shù)據(jù)處理功能、語音和/或數(shù)據(jù)連通性的設備,包括無線終端或有線終端。無線終端可以是具有無線連接功能的手持式設備、或連接到無線調(diào)制解調(diào)器的其他處理設備,經(jīng)無線接入網(wǎng)與一個或多個核心網(wǎng)進行通信的移動終端。例如,無線終端可以是移動電話(或稱為“蜂窩”電話)和具有移動終端的計算機。又如,無線終端也可以是便攜式、袖珍式、手持式、計算機內(nèi)置的或者車載的移動裝置。再如,無線終端可以為移動站(英文為:mobile station)、接入點(英文為:access point)、或用戶裝備(英文為:user equipment,簡稱UE)等。圖1是本發(fā)明實施例中提供的一種數(shù)據(jù)錯誤修復方法流程圖,本發(fā)明實施例的執(zhí)行主體是終端設備,參見圖1,該方法包括:101:判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于存儲所述內(nèi)存發(fā)生數(shù)據(jù)錯誤的物理地址;其中,預設計數(shù)器是預先設置在內(nèi)存中的空間,該預設計數(shù)器的大小由技術(shù)人員在設計過程中進行設定,本發(fā)明實施例對此不作具體限定。優(yōu)選地,該預設計數(shù)器每隔一定時間間隔對ECC寄存器進行讀取,當讀取到ECC寄存器中的標識位表示內(nèi)存中的數(shù)據(jù)存在錯誤時,將該預設計數(shù)器的值加I。進一步地,每隔預設時長,該預設計數(shù)器的值減1,預設時長大于讀取的時間間隔。當預設計數(shù)器的數(shù)值超過溢出門限時,該預設計數(shù)器溢出。其中,該預設計數(shù)器涉及到的讀取的時間間隔、預設時長以及溢出門限等參數(shù)可以由技術(shù)人員進行設置,本發(fā)明實施例對此不作具體限定。終端設備判斷內(nèi)存中預設計數(shù)器是否溢出時,可以由預設計數(shù)器的值超出溢出門限時觸發(fā)相應的指令,在接收到預設計數(shù)器在溢出時觸發(fā)相應的指令時,確定預設計數(shù)器溢出,否則,確定該預設計數(shù)器未溢出。優(yōu)選地,該數(shù)據(jù)錯誤為單比特錯誤,當預設計數(shù)器溢出時,需要判斷內(nèi)存中存儲的發(fā)生單比特數(shù)據(jù)錯誤的物理地址對應的數(shù)據(jù)的失效類型,并加以處理,以防止多比特數(shù)據(jù)錯誤的發(fā)生;當預設計數(shù)器未溢出時,內(nèi)存中存儲的發(fā)生單比特數(shù)據(jù)錯誤的物理地址數(shù)量較少,可以不對內(nèi)存中存儲的物理地址對應的數(shù)據(jù)進行處理。102:如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。其中,內(nèi)存的失效類型分為軟失效和硬失效。軟失效的數(shù)據(jù)錯誤可以進行回寫,即將正確的數(shù)據(jù)寫至該軟失效對應的物理地址中;硬失效的數(shù)據(jù)錯誤不能進行回寫,只能通過人工的方式進行對應內(nèi)存的更換。如果所述預設計數(shù)器溢出,終端設備需要對內(nèi)存中存儲的物理地址對應的內(nèi)存的失效類型進行判斷,以確定內(nèi)存的失效類型。終端設備可以對內(nèi)存中存儲的物理地址對應的數(shù)據(jù)進行反復讀取,判斷內(nèi)存中存儲的物理地址對應的數(shù)據(jù)是否被修復,如果該數(shù)據(jù)被修復,則該物理地址對應的內(nèi)存的失效類型為軟失效;如果該數(shù)據(jù)未被修復,則該物理地址對應的內(nèi)存的失效類型為硬失效。如,當對一個物理地址對應數(shù)據(jù)進行多次讀取后,通過檢測獲知該物理地址對應的數(shù)據(jù)仍然存在錯誤,則該物理地址對應的內(nèi)存的失效類型為硬失效。優(yōu)選地,判斷內(nèi)存中存儲的物理地址對應的數(shù)據(jù)是否被修復可以由ECC寄存器進行檢測獲知。當確定內(nèi)存中存儲的物理地址對應失效類型為軟失效時,則將正確的數(shù)據(jù)回寫至該軟失效對應的物理地址中,當確定內(nèi)存中存儲的物理地址對應失效類型為硬失效時,則無法將正確的數(shù)據(jù)回寫至該硬失效對應的物理地址中,相應的,提示用戶該內(nèi)存錯誤為硬失效,需要人工對該物理地址對應的內(nèi)存進行更換,以防止多比特錯誤累積造成系統(tǒng)掛死等問題。本發(fā)明實施例提供的數(shù)據(jù)錯誤修復方法,通過判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù);如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。采用本發(fā)明實施例提供的技術(shù)方案,可以有效區(qū)分內(nèi)存的失效類型,并根據(jù)失效類型進行修復,避免了數(shù)據(jù)錯誤累積造成的系統(tǒng)掛死或無法啟動等情況,保證了業(yè)務的正常進行。圖2是本發(fā)明實施例中提供的一種數(shù)據(jù)錯誤修復方法流程圖,本發(fā)明實施例的執(zhí)行主體是終端設備,數(shù)據(jù)錯誤為單比特數(shù)據(jù)錯誤為例進行說明。參見圖2,該方法包括:201:當內(nèi)存中發(fā)生數(shù)據(jù)錯誤時,獲取發(fā)生數(shù)據(jù)錯誤的物理地址;當內(nèi)存中發(fā)生單比特數(shù)據(jù)錯誤時,終端設備根據(jù)ECC檢測到的單比特數(shù)據(jù)錯誤,獲取單比特數(shù)據(jù)錯誤對應的物理地址。202:將所述發(fā)生數(shù)據(jù)錯誤的物理地址存儲至內(nèi)存中,并對所述發(fā)生數(shù)據(jù)錯誤的物理地址進行數(shù)據(jù)回寫;具體地,終端設備在獲取到發(fā)生數(shù)據(jù)錯誤的物理地址后,將該發(fā)生數(shù)據(jù)錯誤的物理地址存儲至內(nèi)存的同時,啟動需求清除(Demand Scrubbing)功能,在發(fā)生單比特數(shù)據(jù)錯誤的物理地址中回寫正確的數(shù)據(jù),以實現(xiàn)對單比特數(shù)據(jù)錯誤的修復。當該發(fā)生的單比特數(shù)據(jù)錯誤對應的失效類型為軟失效時,理想狀態(tài)下,該需求清除功能可以將正確的數(shù)據(jù)回寫,當該發(fā)生的單比特數(shù)據(jù)錯誤對應的失效類型為硬失效時,該需求清除功能不能將正確的數(shù)據(jù)回寫。因此,終端設備需要進一步判斷發(fā)生單比特數(shù)據(jù)錯誤的內(nèi)存的失效類型,如果是軟失效,則單比特數(shù)據(jù)錯誤已經(jīng)被修復,如果是硬失效,則單比特數(shù)據(jù)錯誤未被修復,還需后續(xù)進一步處理。203:判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù),如果是,執(zhí)行步驟204,如果否,繼續(xù)執(zhí)行該步驟203 ;當預設計數(shù)器的值大于溢出門限,該預設計數(shù)器溢出。需要說明的是,當預設計數(shù)器未溢出時,則不進行后續(xù)步驟,終端設備繼續(xù)判斷預設計數(shù)器是否溢出。步驟201-202為可選步驟,將所述發(fā)生數(shù)據(jù)錯誤的物理地址存儲至內(nèi)存可以作為步驟203的觸發(fā)條件,當對發(fā)生數(shù)據(jù)錯誤的物理地址進行存儲時,執(zhí)行步驟203,而在本發(fā)明提供的另一實施例中,還可以是每隔預設時長執(zhí)行步驟203,而不以對發(fā)生單比特錯誤并對發(fā)生數(shù)據(jù)錯誤的物理地址進行存儲為觸發(fā)條件。204:判斷所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中是否存在相同的物理地址,如果是,執(zhí)行步驟205,如果否,執(zhí)行步驟206 ;如果預設計數(shù)器溢出,終端設備讀取該內(nèi)存中存儲的各個發(fā)生數(shù)據(jù)錯誤的物理地址,判斷各個發(fā)生數(shù)據(jù)錯誤的物理地址中是否存在相同的物理地址。如果判斷過程中確定存在兩個或者兩個以上相同的物理地址,則可以確定內(nèi)存中存在相同的物理地址,如果不存在兩個或者兩個以上相同的物理地址,則可以確定內(nèi)存中不存在相同的物理地址。205:如果所述內(nèi)存中存在相同的物理地址,確定所述相同的物理地址對應的單比特數(shù)據(jù)錯誤的失效類型為硬失效,執(zhí)行步驟211 ;根據(jù)步驟202可知,對于軟失效來說,在獲取到發(fā)生單比特數(shù)據(jù)錯誤的物理地址后,將該發(fā)生單比特數(shù)據(jù)錯誤的物理地址存儲至內(nèi)存的同時,啟動需求清除(DemandScrubbing)功能,通過需求清除功能在發(fā)生單比特數(shù)據(jù)錯誤的物理地址中寫入正確的數(shù)據(jù)。因此,如果該發(fā)生單比特數(shù)據(jù)錯誤的失效類型為軟失效時,該發(fā)生單比特數(shù)據(jù)錯誤的物理地址中將被寫入正確的數(shù)據(jù),當再次對該物理地址進行檢測時,該物理地址中的數(shù)據(jù)正確,則不將該物理地址寫入內(nèi)存,也即是發(fā)生軟失效的物理地址僅會在內(nèi)存中存儲一次;而如果該發(fā)生單比特數(shù)據(jù)錯誤的失效類型為硬失效時,由于數(shù)據(jù)回寫不能將正確的數(shù)據(jù)寫入該發(fā)生單比特數(shù)據(jù)錯誤的物理地址中,導致該物理地址的錯誤數(shù)據(jù)未能被修復,當再次對該物理地址進行檢測時,該物理地址將再次被寫入內(nèi)存,因此,當該發(fā)生單比特數(shù)據(jù)錯誤的失效類型為硬失效時,該發(fā)生單比特數(shù)據(jù)錯誤的物理地址可能會多次存儲在內(nèi)存中。由于發(fā)生單比特數(shù)據(jù)錯誤的物理地址可能會多次存儲在內(nèi)存中,如果內(nèi)存中存在兩個或兩個以上相同的物理地址,確定該相同的物理地址對應的單比特數(shù)據(jù)錯誤的失效類型為硬失效。206:如果所述內(nèi)存中不存在相同的物理地址,將所述內(nèi)存中的發(fā)生數(shù)據(jù)錯誤的物理地址轉(zhuǎn)換成巡檢地址;當終端設備啟動巡檢清除Patrol Scrubbing功能時,根據(jù)轉(zhuǎn)換的巡檢地址對該巡檢地址對應的內(nèi)存數(shù)據(jù)進行巡檢。終端設備將內(nèi)存中的發(fā)生數(shù)據(jù)錯誤的物理地址轉(zhuǎn)換成巡檢地址,便于根據(jù)該巡檢地址進行巡檢。具體地,將所述內(nèi)存中的發(fā)生數(shù)據(jù)錯誤的物理地址轉(zhuǎn)換成巡檢地址包括:終端設備判斷內(nèi)存中的發(fā)生數(shù)據(jù)錯誤的物理地址是否為內(nèi)存地址,如果確定該內(nèi)存中的發(fā)生數(shù)據(jù)錯誤的物理地址是內(nèi)存地址,則讀取DRAM_RULE寄存器確定該內(nèi)存所在的socket ;查詢TADO-TAD11寄存器確定Channel ID ;根據(jù)RIRWAYNESS寄存器和riri IvXoffset可以確定故障的 DIMM、Rank ID 和 Rank 內(nèi)部地址,根據(jù)獲取的 socket ID、Channel ID、DIMM、RankID和Rank地址獲取巡檢地址。終端設備根據(jù)物理地址獲取巡檢地址的過程為本領(lǐng)域技術(shù)人員所熟知,本發(fā)明實施例不再贅述。如果內(nèi)存中不存在相同的物理地址,則該內(nèi)存中存儲的物理地址對應的單比特數(shù)據(jù)錯誤的類型可能是軟失效也可能是硬失效。207:根據(jù)所述巡檢地址對應的所述內(nèi)存中的數(shù)據(jù)進行巡檢;具體地,終端設備停止系統(tǒng)自動的巡檢清除Patrol Scrubbing,將轉(zhuǎn)換后的巡檢地址寫入SCRUBADDRESSLO寄存器和SCRUBADDRESSHI寄存器,使能巡檢,根據(jù)SCRUBADDRESSLO寄存器和SCRUBADDRESSHI寄存器對轉(zhuǎn)換后的巡檢地址對應的內(nèi)存中的數(shù)據(jù)的巡檢。在巡檢過程中,如果巡檢地址對應的內(nèi)存數(shù)據(jù)存在數(shù)據(jù)錯誤,對該巡檢地址對應的內(nèi)存中的數(shù)據(jù)進行回寫;如果巡檢地址對應的內(nèi)存中數(shù)據(jù)正確,則不對該數(shù)據(jù)進行任何處理。步驟206-207是如果所述內(nèi)存中不存在相同的物理地址,進行內(nèi)存巡檢的過程。
208:在結(jié)束巡檢之后,判斷所述內(nèi)存中的單比特數(shù)據(jù)錯誤是否已被修復,如果是,執(zhí)行步驟209,如果否,執(zhí)行步驟210 ;在終端設備對內(nèi)存中和巡檢地址對應的數(shù)據(jù)巡檢結(jié)束后,讀取ECC寄存器中的標志著是否存在單比特數(shù)據(jù)錯誤的標識位,如果ECC寄存器中的標識位表明巡檢地址對應內(nèi)存中的數(shù)據(jù)存在錯誤,說明內(nèi)存中的單比特數(shù)據(jù)錯誤未被修復;如果ECC寄存器中的標識位表明巡檢地址對應內(nèi)存中的數(shù)據(jù)沒有錯誤,說明內(nèi)存中的單比特數(shù)據(jù)錯誤已被修復。209:如果所述單比特數(shù)據(jù)錯誤已被修復,確定所述單比特數(shù)據(jù)錯誤的失效類型為軟失效,結(jié)束;如果根據(jù)ECC寄存器中的標識位確定內(nèi)存中的單比特數(shù)據(jù)錯誤已被修復,說明在終端設備啟動需求清除(Demand Scrubbing)功能過程中,該單比特數(shù)據(jù)錯誤被糾正,確定該單比特數(shù)據(jù)錯誤的失效類型為軟失效。210:如果所述單比特數(shù)據(jù)錯誤未被修復,確定所述單比特數(shù)據(jù)錯誤的失效類型為硬失效;如果根據(jù)ECC寄存器中的標識位確定內(nèi)存中的單比特數(shù)據(jù)錯誤未被修復,說明在終端設備啟動需求清除(Demand Scrubbing)功能過程中,該單比特數(shù)據(jù)錯誤未被糾正,確定該單比特數(shù)據(jù)錯誤的失效類型為硬失效。211:當確定所述內(nèi)存的失效類型為硬失效時,獲取所述失效類型為硬失效的單比特數(shù)據(jù)錯誤的物理地址;當確定所述內(nèi)存的失效類型為硬失效時,終端設備獲取所述失效類型為硬失效的單比特數(shù)據(jù)錯誤的物理地址的過程可以為以下任一項:(I)終端設備通過對內(nèi)存中的相同物理地址檢測,當存在相同的物理地址時確定內(nèi)存的失效類型為硬失效時,終端設備直接讀取該相同的物理地址;(2)終端設備通對巡檢地址對應的數(shù)據(jù)進行巡檢,當巡檢后根據(jù)ECC寄存器中的標志位確定所述內(nèi)存的失效類型為硬失效時,終端設備從操作系統(tǒng)OS的mcelog文件中獲取該硬失效對應的數(shù)據(jù)的物理地址。212:觸發(fā)警報,以便提示用戶更換所述失效類型為硬失效的單比特數(shù)據(jù)錯誤的物理地址對應的內(nèi)存。優(yōu)選地,終端設備獲取到失效類型為硬失效的單比特數(shù)據(jù)錯誤的物理地址后,在顯示屏幕上顯示所述失效類型為硬失效的單比特數(shù)據(jù)錯誤的物理地址,并觸發(fā)警報,使得用戶在獲知該信息后,對失效類型為硬失效的單比特數(shù)據(jù)錯誤的物理地址對應的內(nèi)存進行更換,避免硬失效的單比特數(shù)據(jù)錯誤累積,造成系統(tǒng)掛死,防止內(nèi)存問題在單板集中復位或者升級時大量爆發(fā)。步驟204-212是如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復的過程。需要說明的是,本發(fā)明實施例的執(zhí)行主體還可以是終端設備中的內(nèi)存控制器。本發(fā)明實施例提供的數(shù)據(jù)錯誤修復方法,通過判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù);如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復采用本發(fā)明實施例提供的技術(shù)方案,可以有效區(qū)分內(nèi)存的失效類型,并根據(jù)失效類型進行修復,避免了數(shù)據(jù)錯誤累積造成的系統(tǒng)掛死或無法啟動等情況,保證了業(yè)務的正常進行。圖3是本發(fā)明實施例中提供的一種數(shù)據(jù)錯誤修復裝置結(jié)構(gòu)示意圖,參見圖3,該裝置包括:判斷模塊301,用于判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù);確定模塊302,用于如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。所述確定模塊302用于如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中存在相同的物理地址,確定所述相同的物理地址對應的數(shù)據(jù)錯誤的失效類型為硬失效。所述確定模塊302包括:巡檢單元,用于如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,進行內(nèi)存巡檢;判斷單元,用于在結(jié)束巡檢之后,判斷所述內(nèi)存中的數(shù)據(jù)錯誤是否已被修復;確定單元,用于如果所述數(shù)據(jù)錯誤未被修復,確定所述數(shù)據(jù)錯誤的失效類型為硬失效;所述確定單元,用于如果所述數(shù)據(jù)錯誤已被修復,確定所述數(shù)據(jù)錯誤的失效類型為軟失效。所述巡檢單元包括:巡檢地址轉(zhuǎn)換子單元,用于如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,將所述預設計數(shù)器中的物理地址轉(zhuǎn)換成巡檢地址;巡檢子單元,用于根據(jù)所述巡檢地址對應的所述內(nèi)存中的數(shù)據(jù)進行巡檢。所述裝置還包括:硬失效物理地址獲取模塊303,用于當確定所述內(nèi)存的失效類型為硬失效時,獲取所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址;觸發(fā)模塊304,用于觸發(fā)警報,以便提示用戶更換所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址對應的內(nèi)存。所述裝置還包括:數(shù)據(jù)錯誤物理地址獲取模塊305,用于當內(nèi)存中發(fā)生數(shù)據(jù)錯誤時,獲取發(fā)生數(shù)據(jù)錯誤的物理地址;存儲模塊306,用于將所述發(fā)生數(shù)據(jù)錯誤的物理地址存儲至內(nèi)存中;回寫模塊307,用于對所述發(fā)生數(shù)據(jù)錯誤的物理地址進行數(shù)據(jù)回寫。本發(fā)明實施例提供的數(shù)據(jù)錯誤修復裝置,通過判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù);如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。采用本發(fā)明實施例提供的技術(shù)方案,可以有效區(qū)分內(nèi)存的失效類型,并根據(jù)失效類型進行修復,避免了數(shù)據(jù)錯誤累積造成的系統(tǒng)掛死或無法啟動等情況,保證了業(yè)務的正常進行。需要說明的是:上述實施例提供的數(shù)據(jù)錯誤修復裝置在數(shù)據(jù)錯誤修復時,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的數(shù)據(jù)錯誤修復裝置與數(shù)據(jù)錯誤修復方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。圖4是本發(fā)明實施例中提供的一種數(shù)據(jù)錯誤修復設備結(jié)構(gòu)示意圖。參見圖4,該數(shù)據(jù)錯誤修復設備包括:處理器401和內(nèi)存402,處理器401,用于判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存402發(fā)生數(shù)據(jù)錯誤進行計數(shù);處理器401,用于如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存402的失效類型,以便后續(xù)進行相應地修復。內(nèi)存402,用于存儲數(shù)據(jù)以及發(fā)生數(shù)據(jù)錯誤的物理地址。處理器401,用于如果所述內(nèi)存402中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中存在相同的物理地址,確定所述相同的物理地址對應的數(shù)據(jù)錯誤的失效類型為硬失效。處理器401,用于如果所述內(nèi)存402中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,進行內(nèi)存巡檢;處理器401,用于在結(jié)束巡檢之后,判斷所述內(nèi)存402中的數(shù)據(jù)錯誤是否已被修復;處理器401,用于如果所述數(shù)據(jù)錯誤未被修復,確定所述數(shù)據(jù)錯誤的失效類型為硬失效;處理器401,用于如果所述數(shù)據(jù)錯誤已被修復,確定所述數(shù)據(jù)錯誤的失效類型為軟失效。處理器401,用于如果所述內(nèi)存402中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,將所述預設計數(shù)器中的物理地址轉(zhuǎn)換成巡檢地址;處理器401,用于根據(jù)所述巡檢地址對應的所述內(nèi)存402中的數(shù)據(jù)進行巡檢。處理器401,用于當確定所述內(nèi)存402的失效類型為硬失效時,獲取所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址;處理器401,用于觸發(fā)警報,以便提示用戶更換所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址對應的內(nèi)存402。處理器401,用于當內(nèi)存402中發(fā)生數(shù)據(jù)錯誤時,獲取發(fā)生數(shù)據(jù)錯誤的物理地址;處理器401,用于將所述發(fā)生數(shù)據(jù)錯誤的物理地址存儲至內(nèi)存402中,并對所述發(fā)生數(shù)據(jù)錯誤的物理地址進行數(shù)據(jù)回寫。本發(fā)明實施例提供的數(shù)據(jù)錯誤修復設備,通過判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù);如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。采用本發(fā)明實施例提供的技術(shù)方案,可以有效區(qū)分內(nèi)存的失效類型,并根據(jù)失效類型進行修復,避免了數(shù)據(jù)錯誤累積造成的系統(tǒng)掛死或無法啟動等情況,保證了業(yè)務的正常進行。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)錯誤修復方法,其特征在于,所述方法包括: 判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù); 如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復,包括: 如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中存在相同的物理地址,確定所述相同的物理地址對應的數(shù)據(jù)錯誤的失效類型為硬失效。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復,包括: 如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,進行內(nèi)存巡檢; 在結(jié)束巡檢之后,判斷所述內(nèi)存中的數(shù)據(jù)錯誤是否已被修復; 如果所述數(shù)據(jù)錯誤未被修復,確定所述數(shù)據(jù)錯誤的失效類型為硬失效; 如果所述數(shù)據(jù)錯誤已被修復,確定所述數(shù)據(jù)錯誤的失效類型為軟失效。
4.根據(jù)權(quán)利要 求3所述的方法,其特征在于,如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,進行內(nèi)存巡檢,包括: 如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,將所述預設計數(shù)器中的物理地址轉(zhuǎn)換成巡檢地址; 根據(jù)所述巡檢地址對應的所述內(nèi)存中的數(shù)據(jù)進行巡檢。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復之后,所述方法還包括: 當確定所述內(nèi)存的失效類型為硬失效時,獲取所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址; 觸發(fā)警報,以便提示用戶更換所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址對應的內(nèi)存。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,判斷內(nèi)存中預設計數(shù)器是否溢出之前,所述方法還包括: 當內(nèi)存中發(fā)生數(shù)據(jù)錯誤時,獲取發(fā)生數(shù)據(jù)錯誤的物理地址; 將所述發(fā)生數(shù)據(jù)錯誤的物理地址存儲至內(nèi)存中,并對所述發(fā)生數(shù)據(jù)錯誤的物理地址進行數(shù)據(jù)回寫。
7.一種數(shù)據(jù)錯誤修復裝置,其特征在于,所述裝置包括: 判斷模塊,用于判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù); 確定模塊,用于如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述確定模塊用于如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中存在相同的物理地址,確定所述相同的物理地址對應的數(shù)據(jù)錯誤的失效類型為硬失效。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述確定模塊包括: 巡檢單元,用于如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,進行內(nèi)存巡檢; 判斷單元,用于在結(jié)束巡檢之后,判斷所述內(nèi)存中的數(shù)據(jù)錯誤是否已被修復; 確定單元,用于如果所述數(shù)據(jù)錯誤未被修復,確定所述數(shù)據(jù)錯誤的失效類型為硬失效; 所述確定單元,用于如果所述數(shù)據(jù)錯誤已被修復,確定所述數(shù)據(jù)錯誤的失效類型為軟失效。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述巡檢單元包括: 巡檢地址轉(zhuǎn)換子單元,用于如果所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址中不存在相同的物理地址,將所述預設計數(shù)器中的物理地址轉(zhuǎn)換成巡檢地址; 巡檢子單元,用于根據(jù)所述巡檢地址對應的所述內(nèi)存中的數(shù)據(jù)進行巡檢。
11.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 硬失效物理地址獲取 模塊,用于當確定所述內(nèi)存的失效類型為硬失效時,獲取所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址; 觸發(fā)模塊,用于觸發(fā)警報,以便提示用戶更換所述失效類型為硬失效的數(shù)據(jù)錯誤的物理地址對應的內(nèi)存。
12.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 數(shù)據(jù)錯誤物理地址獲取模塊,用于當內(nèi)存中發(fā)生數(shù)據(jù)錯誤時,獲取發(fā)生數(shù)據(jù)錯誤的物理地址; 存儲模塊,用于將所述發(fā)生數(shù)據(jù)錯誤的物理地址存儲至內(nèi)存中; 回寫模塊,用于對所述發(fā)生數(shù)據(jù)錯誤的物理地址進行數(shù)據(jù)回寫。
13.一種數(shù)據(jù)錯誤修復設備,其特征在于,所述設備包括: 內(nèi)存,用于存儲數(shù)據(jù)以及發(fā)生數(shù)據(jù)錯誤的物理地址; 處理器,用于判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù); 所述處理器,還用于如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)錯誤修復方法、裝置和設備,屬于終端設備領(lǐng)域。所述方法包括判斷內(nèi)存中預設計數(shù)器是否溢出,所述預設計數(shù)器用于對所述內(nèi)存發(fā)生數(shù)據(jù)錯誤進行計數(shù);如果所述預設計數(shù)器溢出,根據(jù)所述內(nèi)存中存儲的發(fā)生數(shù)據(jù)錯誤的物理地址,確定所述內(nèi)存的失效類型,以便后續(xù)進行相應地修復。本發(fā)明通過根據(jù)所述預設存儲空間中存儲的物理地址有效區(qū)分內(nèi)存的失效類型,并根據(jù)失效類型進行修復,避免了數(shù)據(jù)錯誤累積造成的系統(tǒng)掛死或無法啟動等情況,保證了業(yè)務的正常進行。
文檔編號G06F11/14GK103218275SQ20131010531
公開日2013年7月24日 申請日期2013年3月28日 優(yōu)先權(quán)日2013年3月28日
發(fā)明者傅汝丹 申請人:華為技術(shù)有限公司