TWI689812B - 定位記憶體錯誤發生位置的方法 - Google Patents
定位記憶體錯誤發生位置的方法 Download PDFInfo
- Publication number
- TWI689812B TWI689812B TW107143030A TW107143030A TWI689812B TW I689812 B TWI689812 B TW I689812B TW 107143030 A TW107143030 A TW 107143030A TW 107143030 A TW107143030 A TW 107143030A TW I689812 B TWI689812 B TW I689812B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- address
- error
- location
- channel
- Prior art date
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明提供定位記憶體錯誤發生位置的方法,能精准地定位出記憶體錯誤發生的記憶體插條位置,包括:獲取記錄有記憶體錯誤的記憶體校正錯誤日誌檔,並從中提取記憶體錯誤對應的記憶體位址、MISC寄存器的值及錯誤類型。若通道上所接記憶體插條的數量大於1,則根據記憶體位址、MISC寄存器的值及錯誤類型計算得到記憶體錯誤對應的記憶體的系統位址。根據記憶體的系統位址計算得到記憶體錯誤對應的CPU位置和位於本地代理中的記憶體控制器位置,根據記憶體錯誤對應的記憶體的系統位址、記憶體錯誤對應的CPU位置和位於本地代理中的記憶體控制器位置計算得到記憶體錯誤對應的通道位置和通道位址,根據記憶體錯誤對應的通道位置和通道位址,計算得到記憶體錯誤對應的記憶體插條位置。
Description
本發明涉及記憶體技術領域,特別是涉及定位記憶體錯誤發生位置的方法、系統、及電子設備。
目前,若想定位memory correctable error(CE)發生的具體位置,就需要根據基本輸入輸出系統(Basic Input Output System,簡稱BIOS)記錄到BMC sel log的原始資料來定位。但是,memory correctable error需要達到設定的閾值(默認500),BIOS才會發log到BMC sel log中。如此,在只發生一筆memory correctable error的時候,就無法定位到其發生的具體記憶體插條位置。另外,對於另一種記憶體錯誤memory Patrol Scrub UCE Downgrades to CE error,BIOS是不會記錄到BMC SEL log中的,也就無法定位具體的記憶體插條位置。在客戶線上,記憶體錯誤是會經常發生的,如果BMC sel log中又沒有記憶體錯誤的記錄,則很難定位到發生錯誤的具體記憶體插條位置。
鑒於以上所述現有技術的缺點,本發明的目的在於提供定位記憶體錯誤發生位置的方法、系統、及電子設備,用於解決現有技術中的記憶體錯誤的發生位置難以定位的問題。
為實現上述目的及其他相關目的,本發明提供一種定位記憶體錯誤發生位置的方法,包括:S1:獲取記錄有記憶體錯誤的記憶體校正錯誤日誌檔,並從中提取所述記憶體錯誤對應的記憶體位址、MISC寄存器的值及錯誤類型;S2:判斷通道上所接記憶體插條的數量,若所述記憶體插條數量為1,則執行步驟S3;若所述記憶體插條數量大於1,則執行步驟S4;S3:根據所述記憶體校正錯誤日誌檔,計算得到所述記憶體錯誤對應的CPU位置、分塊和記憶體控制器位置,定位記憶體錯誤發生的位置,結束任務;S4:根據所述記憶體位址、所述MISC寄存器的值及所述錯誤類型,計算得到所述記憶體錯誤對應的記憶體的系統位址;S5:根據所述記憶體的系統位址,計算得到所述記憶體錯誤對應的CPU位置和位於本地代理中的記憶體控制器位置;S6:根據所述記憶體錯誤對應的記憶體的系統位址、所述記憶體錯誤對應的CPU位置和位於本地代理中的所述記憶體控制器位置,計算得到所述記憶體錯誤對應的通道位置和通道位址;S7:根據所述記憶體錯誤對應的通道位置和通道位址,計算得到所述記憶體錯誤對應的記憶體插條位置。
於本發明一實施例中,根據所述記憶體的系統位址計算所述CPU位置和位於本地代理中的記憶體控制器位置,包括:S51:運行記憶體錯誤定位腳本,按順序找到第一個接記憶體插條的節點;S52:從暫存代理中的資源位址解碼器中動態隨機存取記憶體規則寄存器找到匹配的限定位址,並判斷限定位址是否大於第一暫存檔案的位址,若是,則執行步驟S53;若否,則執行步驟S55;S53:利用資源位址解碼器對所述記憶體錯誤對應的記憶體系統位址進行解碼,包括:確定當前系統架構所支援的交錯模式的類型,根據所述交錯模式類型定義系統位址,並計算出交錯清單索引,根據所述交錯清單索引從對應的暫存代理交錯清單寄存器中讀取本地代理節點位置;S54:根據所述本地代理節點位置,計算得到所述CPU位置和位於本地代理中的所述記憶體控制器位置,執行步驟S6;S55:結束任務。
於本發明一實施例中,根據所述記憶體錯誤對應的記憶體系統位址、所述記憶體錯誤對應的CPU位置和位於本地代理中的所述記憶體控制器位置,計算得到所述記憶體錯誤對應的通道位置和通道位址,包括:S61:根據所述CPU位置和位於本地代理中的所述記憶體控制器位置讀取對應CPU的目標位址解碼器路徑寄存器的值,並判斷所述目標位址解碼器路徑中限定位址是否大於第二暫存檔案的位址,若是,則執行步驟S62;若否,則執行步驟S67;S62:讀取對應本地代理的本地系統附加寄存器位元組,根據所述本地系統附加寄存器位元組計算得到移動值;S63:讀取所述目標位址解碼器路徑寄存器中通道路徑值和CPU交錯路徑值,根據所述通道路徑值,計算得到通道交錯值;S64:根據所述通道交錯值確定所述記憶體錯誤對應的通道位置;S65:讀取目標位址解碼器通道偏移寄存器中的偏移值,並根據所述CPU交錯路徑值計算CPU路徑值;S66:根據所述記憶體系統位址、CPU路徑值、通道路徑值和所述偏移值計算得到通道位址,執行步驟S7;S67:結束任務。
於本發明一實施例中,根據所述記憶體錯誤對應的通道位置和通道位址,計算得到所述記憶體錯誤對應的記憶體插條位置,包括:S71:讀取記憶體組交錯範圍路徑限定寄存器的值,並判斷所述記憶體組交錯範圍路徑限定寄存器中的限定位址是否大於第三暫存檔案的位址,若是,則執行步驟S72;若否,則執行步驟S73;S72:讀取記憶體組交錯範圍偏移寄存器中目標記憶體組交錯位置值,根據所述目標記憶體組交錯位置值計算得到所述記憶體錯誤對應的記憶體插條位置;S73:結束任務。
為實現上述目的及其他相關目的,本發明提供一種定位記憶體錯誤發生位置的系統,包括:輸入模組,用於獲取記錄有記憶體錯誤的記憶體校正錯誤日誌檔;處理模組,用於從所述記憶體校正錯誤日誌檔中提取所述記憶體錯誤對應的記憶體位址、MISC寄存器的值及錯誤類型;判斷通道上所接記憶體插條的數量,若所述記憶體插條數量為1,則根據所述記憶體校正錯誤日誌檔,計算得到所述記憶體錯誤對應的CPU位置、分塊和記憶體控制器位置,定位記憶體錯誤發生的位置,結束任務;若所述記憶體插條數量大於1,則根據所述記憶體位址、所述MISC寄存器的值及所述錯誤類型,計算得到所述記憶體錯誤對應的記憶體的系統位址;根據所述記憶體的系統位址,計算得到所述記憶體錯誤對應的CPU位置和位於本地代理中的記憶體控制器位置;根據所述記憶體錯誤對應的記憶體的系統位址、所述記憶體錯誤對應的CPU位置和位於本地代理中的所述記憶體控制器位置,計算得到所述記憶體錯誤對應的通道位置和通道位址;根據所述記憶體錯誤對應的通道位置和通道位址,計算得到所述記憶體錯誤對應的記憶體插條位置。
於本發明一實施例中,所述處理模組根據所述記憶體的系統位址計算所述CPU位置和位於本地代理中的記憶體控制器位置的實現方式包括:運行記憶體錯誤定位腳本,按順序找到第一個接記憶體插條的節點;從暫存代理中的資源位址解碼器中動態隨機存取記憶體規則寄存器找到匹配的限定位址,並判斷限定位址是否大於第一暫存檔案的位址;若否,則結束任務;若是,則利用資源位址解碼器對所述記憶體錯誤對應的記憶體系統位址進行解碼,包括:確定當前系統架構所支援的交錯模式的類型,根據所述交錯模式類型定義系統位址,並計算出交錯清單索引,根據所述交錯清單索引從對應的暫存代理交錯清單寄存器中讀取本地代理節點位置;根據所述本地代理節點位置,計算得到所述CPU位置和位於本地代理中的所述記憶體控制器位置。
於本發明一實施例中,所述處理模組根據所述記憶體錯誤對應的記憶體系統位址、所述記憶體錯誤對應的CPU位置和位於本地代理中的所述記憶體控制器位置,計算得到所述記憶體錯誤對應的通道位置和通道位址的實現方式包括:根據所述CPU位置和位於本地代理中的所述記憶體控制器位置讀取對應CPU的目標位址解碼器路徑寄存器的值,並判斷所述目標位址解碼器路徑中限定位址是否大於第二暫存檔案的地址;若否,則結束任務;若是,則讀取對應本地代理的本地系統附加寄存器位元組,根據所述本地系統附加寄存器位元組計算得到移動值;讀取所述目標位址解碼器路徑寄存器中通道路徑值和CPU交錯路徑值,根據所述通道路徑值,計算得到通道交錯值;根據所述通道交錯值確定所述記憶體錯誤對應的通道位置;讀取目標位址解碼器通道偏移寄存器中的偏移值,並根據所述CPU交錯路徑值計算CPU路徑值;根據所述記憶體系統位址、CPU路徑值、通道路徑值和所述偏移值計算得到通道位址。
於本發明一實施例中,所述處理模組根據所述記憶體錯誤對應的通道位置和通道位址,計算得到所述記憶體錯誤對應的記憶體插條位置的實現方式包括:讀取記憶體組交錯範圍路徑限定寄存器的值,並判斷所述記憶體組交錯範圍路徑限定寄存器中的限定位址是否大於第三暫存檔案的位址;若否,則結束任務;若是,則讀取記憶體組交錯範圍偏移寄存器中目標記憶體組交錯位置值,根據所述目標記憶體組交錯位置值計算得到所述記憶體錯誤對應的記憶體插條位置。
為實現上述目的及其他相關目的,本發明提供一種儲存介質,其中儲存有電腦程式,所述電腦程式被處理器載入執行時,實現如上任一所述的定位記憶體錯誤發生位置的方法。
為實現上述目的及其他相關目的,本發明提供一種電子設備,包括:處理器及記憶體;其中,所述記憶體用於儲存電腦程式;所述處理器用於載入執行所述電腦程式,以使所述電子設備執行如上任一所述的定位記憶體錯誤發生位置的方法。
如上所述,本發明的定位記憶體錯誤發生位置的方法、系統、及電子設備,能快速、精准地定位出記憶體錯誤發生的記憶體插條位置,節約產線測試時間、客戶線上的維護時間,進而節約記憶體維修成本。
以下通過特定的具體實例說明本發明的實施方式,本領域技術人員可由本說明書所揭露的內容輕易地瞭解本發明的其他優點與功效。本發明還可以通過另外不同的具體實施方式加以實施或應用,本說明書中的各項細節也可以基於不同觀點與應用,在沒有背離本發明的精神下進行各種修飾或改變。需說明的是,在不衝突的情況下,以下實施例及實施例中的特徵可以相互組合。
需要說明的是,以下實施例中所提供的圖示僅以示意方式說明本發明的基本構想,遂圖式中僅顯示與本發明中有關的組件而非按照實際實施時的元件數目、形狀及尺寸繪製,其實際實施時各元件的型態、數量及比例可為一種隨意的改變,且其元件佈局型態也可能更為複雜。
本實施例提供一種定位記憶體錯誤發生位置的方法,以解決現有技術中記憶體錯誤的發生位置難以定位的問題。如圖1所示,本實施例中,每顆CPU有2個記憶體控制器,分別為記憶體控制器0和記憶體控制器1,每個記憶體控制器下面分別有兩個channel(即通道),分別為channel 0、channel 1、channel 2和channel 3,每個channel上又分別接有記憶體插條0,記憶體插條1和記憶體插條2。
如圖2所示,實施例的定位記憶體錯誤發生位置的方法包括以下步驟: S1:獲取記錄有記憶體錯誤的記憶體校正錯誤日誌檔,並從中提取所述記憶體錯誤對應的記憶體位址、MISC寄存器的值及錯誤類型。
目前而言,記憶體校正錯誤日誌檔(Machine Check Exception Log,簡稱mce log)會記錄記憶體錯誤的有關資訊,裡面包含了記憶體位址memory address及MISC寄存器值。從mce log表面資訊中,最多只能定位到記憶體通道的位置。一般的通道可以插2個記憶體插條,如果1個通道的一個記憶體插條報錯,就無法確定具體是哪個記憶體插條出錯。
從mce log中可以得到記憶體錯誤所對應的MISC寄存器值、記憶體位址、錯誤類型。本實施例利用mce log中的記憶體位址和MISC寄存器值,通過步驟S2~S7的計算就可以定位出出錯記憶體的具體位置。如此,便可以有效節約產線測試時間,在客戶線上維護的時間也會大大縮短,進而大幅度節省維修成本。 S2:判斷通道上所接記憶體插條的數量,若所述記憶體插條數量為1,則執行步驟S3;若所述記憶體插條數量大於1,則執行步驟S4。 S3:根據所述記憶體校正錯誤日誌檔,計算得到所述記憶體錯誤對應的CPU位置、分塊和記憶體控制器位置,定位記憶體錯誤發生的位置,結束任務。 S4:根據所述記憶體位址、所述MISC寄存器的值及所述錯誤類型,計算得到所述記憶體錯誤對應的記憶體的系統位址。 舉例而言,corrected error(CE)型記憶體錯誤和uncorrectable error(UCE)型記憶體錯誤的計算公式為: CE:SysAddress = ADDR & 0x3fffffffffc0 UCE:SysAddress=( ADDR & 0x3fffffffffff) & (~( (1<<(MISC & 0x3f) ) -1) ) 其中,ADDR是記憶體位址,MISC是MISC寄存器的值,SysAddress為記憶體的系統位址。 S5:根據所述記憶體的系統位址,計算得到所述記憶體錯誤對應的CPU位置和位於本地代理中的記憶體控制器位置。具體而言,如圖3所示,步驟S5又包括以下步驟: S51:運行記憶體錯誤定位腳本,按順序找到第一個接記憶體插條的節點; S52:從暫存代理中的資源位址解碼器中動態隨機存取記憶體規則寄存器找到匹配的限定位址,並判斷限定位址是否大於第一暫存檔案的位址,若是,則執行步驟S53;若否,則執行步驟S55。
具體而言,資源位址解碼器(Source Address Decoder,簡稱SAD)有四種:DRAM decoders(動態隨機存取記憶體解碼器)、MMIO(Memory-mapped I/O,即記憶體映射I/O) decoder、Interleave (記憶體交錯)decoder、Legacy decoder(傳統解碼器)。暫存代理中的資源位址解碼器中的動態隨機存取記憶體規則寄存器支援DRAM decoders and MMIO decoders。本實施例採用的是DRAM decoders。總共有20個DRAM decodeers,支援不同組合的DRAM配置,不同的交錯模式對應不同的暫存代理寄存器的交錯清單索引。
在按序找到第一個接記憶體插條節點Node之後,從暫存代理中的資源位址解碼器中動態隨機存取記憶體規則寄存器找到匹配的限定位址是否大於第一暫存檔案tempAddress的位址,第一暫存檔案的位址定義為上述SysAddress(即記憶體的系統位址)的一段位元組,如SysAddress[bit a1:bit b1]如果大於tempAddress,說明此處的位置與記憶體位址匹配,執行下一步驟;反之,則退出程式。
S53:利用資源位址解碼器對所述記憶體錯誤對應的記憶體系統位址進行解碼,包括:確定當前系統架構所支援的交錯模式的類型,根據所述交錯模式類型定義系統位址,並計算出交錯清單索引,根據所述交錯清單索引從對應的暫存代理交錯清單寄存器中讀取其對應的本地代理0或是本地代理1的節點位置;具體計算公式例如: mode1: interleaveListIndex = (SysAddress >> 6) & 0 mode2: interleaveListIndex = (((SysAddress >> 7) & 3) << 1) | ((SysAddress >> 9)& 1) Interleave_Mode=0 :interleaveListIndex ^= ((SysAddress >> 16) & 7) S54:根據上述已定位到的本地代理節點位置,即本地代理0或本地代理1,計算得到所述CPU位置和位於本地代理中的所述記憶體控制器位置,執行步驟S6。
承接上述,S54的具體計算公式為: SocketId =(haNodeId & 3) MemoryControllerId = (haNodeId & BIT2) >> 2 其中,SocketId為CPU位置,Memory ControllerId為記憶體控制器位置;haNodeId為本地代理節點位置。本實施例中,若定位到的是本地代理0,則可定位到記憶體控制器0;若定位到的是本地代理1,則可定位到記憶體控制器1。 S55:結束任務。
S6:根據所述記憶體錯誤對應的記憶體的系統位址、所述記憶體錯誤對應的CPU位置和位於本地代理中的所述記憶體控制器位置,計算得到所述記憶體錯誤對應的通道位置和通道位址。具體而言,如圖4所示,步驟S6又包括以下步驟: S61:根據所述CPU位置和上述已獲得的記憶體控制器位置,到相應的記憶體控制器0或記憶體控制器1中去讀取對應CPU的目標位址解碼器路徑寄存器的值,並判斷所述目標位址解碼器路徑中限定位址是否大於第二暫存檔案tempAddress的位址,第二暫存檔案的位址定義為上述SysAddress的一段位元組,如SysAddress[bit a2:bit b2]的位址,若是,則說明此處的位置與記憶體位址匹配,執行下一步驟,即執行步驟S62;若否,反之,則退出程式。 S62:讀取對應本地代理的本地系統附加寄存器位元組,根據所述本地系統附加寄存器位元組計算得到移動值; S63:讀取所述目標位址解碼器路徑寄存器中通道路徑值,定義為tad_ch_way;CPU交錯路徑值,定義為tad_skt_way,根據所述通道路徑值,計算得到通道交錯值chInterleave; 最終通道交錯值chInterleave = chInterleave % (tad_ch_way + 1)。 S64:根據所述通道交錯值確定所述記憶體錯誤對應的通道位置,即如果定位到的是本地代理0中的記憶體控制器0,則對應channel 0或channel 1,如果定位到的是本地代理1中的記憶體控制器1,則對應channel 2或channel 3。 S65:讀取目標位址解碼器通道偏移寄存器中的偏移值,定義為tad_offset,並根據所述CPU交錯路徑值計算CPU路徑值; socket_wayness = 1 << tad_skt_way 其中,socket_wayness即為CPU路徑值。 S66:根據所述記憶體系統位址、CPU路徑值、通道路徑值和所述偏移值計算得到通道位址,執行步驟S7; 具體而言,按照系統位址轉化到通道位址的定義,計算公式如下: 通道地址Ch_address = [(sysddress) / (socket_wayness * tad_ch_way)] –tad_offset。 S67:結束任務。
需要說明的是,目標位址解碼器(Target Address Decoder,簡稱TAD)根據SAD解析結果,計算出通道交錯值。每個TAD都有一個base address、address limit、address size。address limit儲存在TAD寄存器(即目標位址解碼器路徑寄存器);base address總是定義為address 0,address limit定義為:limit [n] = base [n] + size [n]。 • 0 <=physical address [45:26] <=TAD[0].Limt, when N=0 • TAD[N-1].limit +1 <= physical address [45:26] <=TAD[N].Limt; when N=1 to 11 tad_skt_way是相應CPU的記憶體被用到的交錯值,而tad_ch_way是相應通道的記憶體被用到的交錯值。 S7:根據所述記憶體錯誤對應的通道位置和通道位址,計算得到所述記憶體錯誤對應的記憶體插條位置。具體而言,如圖5所示,步驟S7又包括以下步驟: S71:讀取記憶體組交錯範圍路徑限定寄存器的值,並判斷所述記憶體組交錯範圍路徑限定寄存器中的限定位址是否大於第三暫存檔案tempAddress的位址,第三暫存檔案的位址定義為上述Ch_address的一段位元組,如Ch_address [bit c1:bit d1],若是,則執行下一步,步驟S72;若否,則退出程式。 S72:讀取記憶體組交錯範圍偏移寄存器中目標記憶體組交錯位置值,定義為rir_rnk_tgtN,根據所述目標記憶體組交錯位置值計算得到所述記憶體錯誤對應的記憶體插條位置Dimm Slot,公式為: Dimm Slot= rir_rnk_tgtN / 4 本實施例中,Dimm Slot可定位到圖1中的對應的通道channel上的記憶體插條,如記憶體插條0、記憶體插條1、記憶體插條2。 S73:結束任務。
需要說明的是,實現上述各方法實施例的全部或部分步驟可以通過電腦程式相關的硬體來完成。基於這樣的理解,本發明還提供一種電腦程式產品,包括一個或多個電腦指令。所述電腦指令可以儲存在電腦可讀儲存介質中。所述電腦可讀儲存介質可以是電腦能夠儲存的任何可用介質或者是包含一個或多個可用介質集成的伺服器、資料中心等資料存放裝置。所述可用介質可以是磁性介質(如:軟碟、硬碟、磁帶)、光介質(如:DVD)、或者半導體介質(如:固態硬碟Solid State Disk, SSD)等。
參閱圖6,本實施例提供一種定位記憶體錯誤發生位置的系統600,作為一款軟體搭載於電子設備中,以在運行時執行前述方法實施例所述的定位記憶體錯誤發生位置的方法。由於本系統實施例的技術原理與前述方法實施例的技術原理相似,因而不再對同樣的技術細節做重複性贅述。
本實施例的定位記憶體錯誤發生位置的系統600具體包括輸入模組601、處理模組602。輸入模組601用於執行前述方法實施例介紹的步驟S1,處理模組602用於執行前述方法實施例介紹的步驟S2~S7。
本領域技術人員應當理解,圖6實施例中的各個模組的劃分僅僅是一種邏輯功能的劃分,實際實現時可以全部或部分集成到一個或多個物理實體上。且這些模組可以全部以軟體通過處理元件調用的形式實現,也可以全部以硬體的形式實現,還可以部分模組通過處理元件調用軟體的形式實現,部分模組通過硬體的形式實現。例如,處理模組602可以為單獨設立的處理元件,也可以集成在某一個晶片中實現,此外,也可以以程式碼的形式儲存於記憶體中,由某一個處理元件調用並執行處理模組602的功能。其它模組的實現與之類似。這裡所述的處理元件可以是一種積體電路,具有信號的處理能力。在實現過程中,上述方法的各步驟或以上各個模組可以通過處理器元件中的硬體的集成邏輯電路或者軟體形式的指令完成。
參閱圖7,本實施例提供一種電子設備,電子設備可以是桌上型電腦、可擕式電腦、智慧手機等設備。詳細的,電子設備至少包括通過匯流排74連接的:通信介面71、處理器72、記憶體73,其中,通信介面71用於接收資料,記憶體73用於儲存電腦程式,處理器72用於執行記憶體73儲存的電腦程式,以執行前述方法實施例中的全部或部分步驟。
上述提到的系統匯流排可以是外設部件互連標準(Peripheral Pomponent Interconnect,簡稱PCI)匯流排或延伸工業標準架構(Extended Industry Standard Architecture,簡稱EISA)匯流排等。該系統匯流排可以分為位址匯流排、資料匯流排、控制匯流排等。為便於表示,圖中僅用一條粗線表示,但並不表示僅有一根匯流排或一種類型的匯流排。通信介面用於實現資料庫訪問裝置與其他設備(例如用戶端、讀寫庫和唯讀庫)之間的通信。記憶體可能包含隨機存取記憶體(Random Access Memory,簡稱RAM),也可能還包括非易失性記憶體(Non-volatile Memory),例如至少一個磁碟記憶體。
上述的處理器可以是通用處理器,包括中央處理器(Central Processing Unit,簡稱CPU)、網路處理器(Network Processor,簡稱NP)等;還可以是數位訊號處理器(Digital Signal Processing,簡稱DSP)、專用積體電路(Application Specific Integrated Circuit,簡稱ASIC)、現場可程式設計閘陣列(Field-Programmable Gate Array,簡稱FPGA)或者其他可程式設計邏輯器件、分立門或者電晶體邏輯器件、分立硬體元件。
綜上所述,本發明的定位記憶體錯誤發生位置的方法、系統、及電子設備,有效克服了現有技術中的種種缺點而具高度產業利用價值。
上述實施例僅例示性說明本發明的原理及其功效,而非用於限制本發明。任何熟悉此技術的人士皆可在不違背本發明的精神及範疇下,對上述實施例進行修飾或改變。因此,舉凡所屬技術領域中具有通常知識者在未脫離本發明所揭示的精神與技術思想下所完成的一切等效修飾或改變,仍應由本發明的權利要求所涵蓋。
600:系統
601:輸入模組
602:處理模組
71:通信接口
72:處理器
73:儲存器
74:總線
圖1顯示為本發明一實施例中的定位記憶體錯誤發生位置的運行環境示意圖。
圖2顯示為本發明一實施例中的定位記憶體錯誤發生位置的方法流程示意圖。
圖3顯示為本發明一實施例中的計算CPU位置和位於本地代理中的記憶體控制器位置的方法流程示意圖。
圖4顯示為本發明一實施例中的計算通道位置和通道位址的方法流程示意圖。
圖5顯示為本發明一實施例中的計算記憶體錯誤對應的記憶體插條位置的方法流程示意圖。
圖6顯示為本發明一實施例中的定位記憶體錯誤發生位置的系統模組示意圖。
圖7顯示為本發明一實施例中的電子設備的結構示意圖。
Claims (10)
- 一種定位記憶體錯誤發生位置的方法,包含:獲取記錄有一記憶體錯誤的一記憶體校正錯誤日誌檔,並從中提取該記憶體錯誤對應的一記憶體位址、一雜項寄存器值及一錯誤類型;判斷一通道上所接的複數個記憶體插條的數量,若該些記憶體插條數量為1,則根據該記憶體校正錯誤日誌檔,計算得到該記憶體錯誤對應的一中央處理器位置、一分塊和一記憶體控制器位置,定位該記憶體錯誤發生的位置,結束任務;若該些記憶體插條數量大於1,則根據該記憶體位址、該雜項寄存器值及該錯誤類型,計算得到該記憶體錯誤對應的一記憶體系統位址;根據該記憶體的系統位址,計算得到該記憶體錯誤對應的該中央處理器位置和位於一本地代理中的該記憶體控制器位置;根據該記憶體錯誤對應的該記憶體的系統位址、該記憶體錯誤對應的該中央處理器位置和位於本地代理中的該記憶體控制器位置,計算得到該記憶體錯誤對應的一通道位置和一通道位址;根據該記憶體錯誤對應的該通道位置和該通道位址,計算得到該記憶體錯誤對應的一記憶體插條位置。
- 如請求項1所述定位記憶體錯誤發生位置的方法,根據該記憶體的系統位址計算該中央處理器位置和位於該本地代理中的該記憶體控制器位置,包含: 運行一記憶體錯誤定位腳本,按順序找到一第一接記憶體插條的一節點;從一暫存代理中的一資源位址解碼器中動態隨機存取一記憶體規則寄存器找到匹配的一限定位址,並判斷該限定位址是否大於一第一暫存檔案的位址,若是,則利用該資源位址解碼器對該記憶體錯誤對應的一記憶體系統位址進行解碼,包括:確定當前系統架構所支援的一交錯模式的類型,根據該交錯模式類型定義系統位址,並計算出一交錯清單索引,根據該交錯清單索引從對應的該暫存代理交錯清單寄存器中讀取該本地代理節點位置;若否,則結束任務;根據該本地代理節點位置,計算得到該中央處理器位置和位於該本地代理中的該記憶體控制器位置,繼續執行。
- 如請求項2所述定位記憶體錯誤發生位置的方法,根據該記憶體錯誤對應的該記憶體系統位址、該記憶體錯誤對應的該中央處理器位置和位於本地代理中的該記憶體控制器位置,計算得到該記憶體錯誤對應的該通道位置和該通道位址,包含:根據該中央處理器位置和位於該本地代理中的該記憶體控制器位置讀取對應的該中央處理器的一目標位址解碼器路徑寄存器的值,並判斷該目標位址解碼器路徑中一限定位址是否大於一第二暫存檔案的位址,若是,則讀取對應該本地代理的一本地系統附加寄存器位元組,根據該本地系統附加寄存器位元組計算得到移動值;若否,則結束任務; 讀取該目標位址解碼器路徑寄存器中一通道路徑值和一中央處理器交錯路徑值,根據該通道路徑值,計算得到一通道交錯值;根據該通道交錯值確定該記憶體錯誤對應的一通道位置;讀取該目標位址解碼器通道偏移寄存器中的一偏移值,並根據該中央處理器交錯路徑值計算一中央處理器路徑值;根據該記憶體系統位址、該中央處理器路徑值、該通道路徑值和該偏移值計算得到一通道位址,繼續執行。
- 如請求項3所述定位記憶體錯誤發生位置的方法,根據該記憶體錯誤對應的該通道位置和該通道位址,計算得到該記憶體錯誤對應的一記憶體插條位置,包括:讀取一記憶體組交錯範圍路徑限定寄存器的值,並判斷該記憶體組交錯範圍路徑限定寄存器中的一限定位址是否大於一第三暫存檔案的位址,若是,則讀取該記憶體組交錯範圍偏移寄存器中一目標記憶體組交錯位置值,根據該目標記憶體組交錯位置值計算得到該記憶體錯誤對應的該記憶體插條位置;若否,則結束任務。
- 一種定位記憶體錯誤發生位置的系統,包括:輸入一模組,用於獲取記錄有一記憶體錯誤的一記憶體校正錯誤日誌檔;處理該模組,用於從該記憶體校正錯誤日誌檔中提取該記憶體錯誤對應的一記憶體位址、一雜項寄存器的值及一錯誤類型;判斷一通道上所接 複數個記憶體插條的數量,若該些記憶體插條數量為1,則根據該記憶體校正錯誤日誌檔,計算得到該記憶體錯誤對應的一中央處理器位置、一分塊和一記憶體控制器位置,定位該記憶體錯誤發生的位置,結束任務;若該記憶體插條數量大於1,則根據該記憶體位址、該雜項寄存器的值及該錯誤類型,計算得到該記憶體錯誤對應的一記憶體的系統位址;根據該記憶體的系統位址,計算得到該記憶體錯誤對應的該中央處理器位置和位於一本地代理中的一記憶體控制器位置;根據該記憶體錯誤對應的該記憶體的系統位址、該記憶體錯誤對應的該中央處理器位置和位於該本地代理中的該記憶體控制器位置,計算得到該記憶體錯誤對應的一通道位置和一通道位址;根據該記憶體錯誤對應的該通道位置和該通道位址,計算得到該記憶體錯誤對應的該些記憶體插條位置。
- 如請求項5所述定位記憶體錯誤發生位置的系統,該處理模組根據該記憶體的系統位址計算該中央處理器位置和位於該本地代理中的該記憶體控制器位置的實現方式包括:運行一記憶體錯誤定位腳本,按順序找到一第一個接記憶體插條的節點;從一暫存代理中的一資源位址解碼器中動態隨機存取一記憶體規則寄存器找到匹配的一限定位址,並判斷該限定位址是否大於該第一暫存檔案的位址;若否,則結束任務;若是,則利用該資源位址解碼器對該記憶體錯誤對應的該記憶體系統位址進行解碼,包含:確定當前系統架構所支援的一交錯模式的類型,根據該交錯模式類型定義一系統位址,並計算出一 交錯清單索引,根據該交錯清單索引從對應的一暫存代理交錯清單寄存器中讀取一本地代理節點位置;根據該本地代理節點位置,計算得到該中央處理器位置和位於該本地代理中的該記憶體控制器位置。
- 如請求項6所述定位記憶體錯誤發生位置的系統,該處理模組根據該記憶體錯誤對應的該記憶體系統位址、該記憶體錯誤對應的該中央處理器位置和位於該本地代理中的該記憶體控制器位置,計算得到該記憶體錯誤對應的該通道位置和該通道位址的實現方式包含:根據該中央處理器位置和位於該本地代理中的該記憶體控制器位置讀取對應該中央處理器的一目標位址解碼器路徑寄存器的值,並判斷該目標位址解碼器路徑中限定位址是否大於一第二暫存檔案的地址;若否,則結束任務;若是,則讀取對應該本地代理的一本地系統附加寄存器位元組,根據該本地系統附加寄存器位元組計算得到移動值;讀取該目標位址解碼器路徑寄存器中一通道路徑值和一中央處理器交錯路徑值,根據該通道路徑值,計算得到一通道交錯值;根據該通道交錯值確定該記憶體錯誤對應的一通道位置;讀取該目標位址解碼器通道偏移寄存器中的偏移值,並根據該中央處理器交錯路徑值計算該中央處理器路徑值;根據該記憶體系統位址、該中央處理器路徑值、該通道路徑值和該偏移值計算得到一通道位址。
- 如請求項7所述定位記憶體錯誤發生位置的系統,該處理模組根據該記憶體錯誤對應的該通道位置和該通道位址,計算得到該記憶體錯誤對應的該記憶體插條位置的實現方式包括:讀取一記憶體組交錯範圍路徑限定寄存器的值,並判斷該記憶體組交錯範圍路徑限定寄存器中的限定位址是否大於一第三暫存檔案的位址;若否,則結束任務;若是,則讀取該記憶體組交錯範圍偏移寄存器中一目標記憶體組交錯位置值,根據該目標記憶體組交錯位置值計算得到該記憶體錯誤對應的該記憶體插條位置。
- 一種儲存介質,其中儲存有一電腦程式,該電腦程式被依處理器載入執行時,實現如請求項1所述的定位記憶體錯誤發生位置的方法。
- 一種電子設備,包含:一處理器及一記憶體;其中該記憶體用於儲存一電腦程式;該處理器用於載入執行該電腦程式,以使該電子設備執行如請求項1所述的定位記憶體錯誤發生位置的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107143030A TWI689812B (zh) | 2018-11-30 | 2018-11-30 | 定位記憶體錯誤發生位置的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107143030A TWI689812B (zh) | 2018-11-30 | 2018-11-30 | 定位記憶體錯誤發生位置的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI689812B true TWI689812B (zh) | 2020-04-01 |
TW202022606A TW202022606A (zh) | 2020-06-16 |
Family
ID=71134258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107143030A TWI689812B (zh) | 2018-11-30 | 2018-11-30 | 定位記憶體錯誤發生位置的方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI689812B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW493119B (en) * | 2001-03-28 | 2002-07-01 | Via Tech Inc | Method for automatically identifying the type of memory and motherboard using the same |
TWI286321B (en) * | 2002-10-24 | 2007-09-01 | Inventec Corp | Automatic checking method of memory assembly condition |
TW200741729A (en) * | 2006-04-25 | 2007-11-01 | Mitac Int Corp | Memory detection method |
TW200805054A (en) * | 2006-07-14 | 2008-01-16 | Mitac Int Corp | Memory error simulating device and method for the same |
TW200805051A (en) * | 2006-07-14 | 2008-01-16 | Mitac Int Corp | An error-detection device for mainboards and its error-detection method |
TWM343894U (en) * | 2008-06-05 | 2008-11-01 | Golden Emperor Internat Ltd | Intelligent memory module and its status detection and adjustment device thereof |
TW200847183A (en) * | 2007-05-16 | 2008-12-01 | Inventec Corp | Method for controlling clock of memory slots |
TW200907787A (en) * | 2007-08-15 | 2009-02-16 | Inventec Corp | Method for checking read/ write function of the storage device |
TW200912937A (en) * | 2007-09-07 | 2009-03-16 | Inventec Corp | Motherboard fault-finding testing method |
TW200915330A (en) * | 2007-08-17 | 2009-04-01 | Ibm | Method for performing memory diagnostics using a programmable diagnostic memory module |
TW200923658A (en) * | 2007-11-30 | 2009-06-01 | Giga Byte Tech Co Ltd | Detection system for the peripheral apparatus |
TW200928741A (en) * | 2007-12-21 | 2009-07-01 | Inventec Corp | Method and system for warning of not insetting memory |
TW201633133A (zh) * | 2015-03-06 | 2016-09-16 | 廣達電腦股份有限公司 | 自動除錯資訊收集之方法及系統 |
-
2018
- 2018-11-30 TW TW107143030A patent/TWI689812B/zh active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW493119B (en) * | 2001-03-28 | 2002-07-01 | Via Tech Inc | Method for automatically identifying the type of memory and motherboard using the same |
TWI286321B (en) * | 2002-10-24 | 2007-09-01 | Inventec Corp | Automatic checking method of memory assembly condition |
TW200741729A (en) * | 2006-04-25 | 2007-11-01 | Mitac Int Corp | Memory detection method |
TWI335598B (en) * | 2006-04-25 | 2011-01-01 | Mitac Int Corp | Memory detection method |
TW200805051A (en) * | 2006-07-14 | 2008-01-16 | Mitac Int Corp | An error-detection device for mainboards and its error-detection method |
TW200805054A (en) * | 2006-07-14 | 2008-01-16 | Mitac Int Corp | Memory error simulating device and method for the same |
TW200847183A (en) * | 2007-05-16 | 2008-12-01 | Inventec Corp | Method for controlling clock of memory slots |
TW200907787A (en) * | 2007-08-15 | 2009-02-16 | Inventec Corp | Method for checking read/ write function of the storage device |
TW200915330A (en) * | 2007-08-17 | 2009-04-01 | Ibm | Method for performing memory diagnostics using a programmable diagnostic memory module |
TW200912937A (en) * | 2007-09-07 | 2009-03-16 | Inventec Corp | Motherboard fault-finding testing method |
TW200923658A (en) * | 2007-11-30 | 2009-06-01 | Giga Byte Tech Co Ltd | Detection system for the peripheral apparatus |
TWI351611B (zh) * | 2007-11-30 | 2011-11-01 | Giga Byte Tech Co Ltd | |
TW200928741A (en) * | 2007-12-21 | 2009-07-01 | Inventec Corp | Method and system for warning of not insetting memory |
TWM343894U (en) * | 2008-06-05 | 2008-11-01 | Golden Emperor Internat Ltd | Intelligent memory module and its status detection and adjustment device thereof |
TW201633133A (zh) * | 2015-03-06 | 2016-09-16 | 廣達電腦股份有限公司 | 自動除錯資訊收集之方法及系統 |
TWI571736B (zh) * | 2015-03-06 | 2017-02-21 | 廣達電腦股份有限公司 | 自動除錯資訊收集之方法及系統 |
Also Published As
Publication number | Publication date |
---|---|
TW202022606A (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10614905B2 (en) | System for testing memory and method thereof | |
US4005405A (en) | Error detection and correction in data processing systems | |
US8930786B2 (en) | Self-timed error correcting code evaluation system and method | |
KR20080112252A (ko) | 에러 보정 디바이스 및 그 방법 | |
KR101456976B1 (ko) | 메모리 테스트 디바이스 및 메모리 테스트 방법 | |
US20170123892A1 (en) | Parity check circuit and memory device including the same | |
CN111078462B (zh) | 数据校验方法及电路 | |
TWI779703B (zh) | 積體電路及操作其的方法 | |
US10725672B2 (en) | Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation | |
CN115292237B (zh) | 一种芯片及其数据传输方法 | |
US20190213162A1 (en) | Integrated circuit system | |
US20230221883A1 (en) | Processing-in-memory (pim) system and operating methods of the pim system | |
CN110795464A (zh) | 对象标记数据的字段校验方法、装置、终端及存储介质 | |
CN112395144A (zh) | 一种测试方法、系统、终端设备及可读存储介质 | |
TWI689812B (zh) | 定位記憶體錯誤發生位置的方法 | |
CN109508247B (zh) | 定位内存错误发生位置的方法、系统、及电子设备 | |
CN114464242B (zh) | 一种ddr测试方法、装置、控制器及存储介质 | |
CN112416639B (zh) | 一种慢盘检测方法、装置、设备及存储介质 | |
US20230393939A1 (en) | Memory address translation for data protection and recovery | |
US10192634B2 (en) | Wire order testing method and associated apparatus | |
CN114780283B (zh) | 一种故障处理的方法及装置 | |
US11714555B2 (en) | Control module and control method thereof for synchronous dynamic random access memory | |
CN116820860A (zh) | 处理器及其测试方法 | |
CN118013897A (zh) | 寄存器的验证方法及装置 | |
CN118502669A (zh) | 数据存储方法、装置及电子设备 |