亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種消息式內(nèi)存模組的訪存方法和裝置制造方法

文檔序號:6765037閱讀:196來源:國知局
一種消息式內(nèi)存模組的訪存方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種消息式內(nèi)存模組的訪存裝置,包括:讀寫模塊,用于將當(dāng)前讀寫周期內(nèi)待存儲的SCBC存儲到對應(yīng)的DRAM中;處理模塊,用于對一個內(nèi)存行中的每個SCBC分別計算一組檢錯碼,對一個內(nèi)存行中的全部SCBC計算一組糾錯碼;所述讀寫模塊,還用于將檢錯碼存儲在該內(nèi)存行的第(M+2)個DRAM中,將糾錯碼存儲在該內(nèi)存行的第Z個DRAM中,Z為正整數(shù)且1≤Z≤(M+1),連續(xù)(M+1)個內(nèi)存行中的糾錯碼分別存儲在不同的DRAM中。本發(fā)明實施例還提供相應(yīng)的方法。本發(fā)明技術(shù)方案以SCBC為基本讀寫單位進行細(xì)粒度編碼保護,支持可變粒度訪存,可以實現(xiàn)對單個DRAM中任意多位錯誤進行糾錯。
【專利說明】一種消息式內(nèi)存模組的訪存方法和裝置

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信【技術(shù)領(lǐng)域】,具體涉及一種消息式內(nèi)存模組的訪存方法和裝置。

【背景技術(shù)】
[0002] 在計算機系統(tǒng)運行中,內(nèi)存的可靠性起著舉足輕重的作用,一方面,隨著系統(tǒng)配置 內(nèi)存的數(shù)目越來越多,內(nèi)存系統(tǒng)的失效率會成冪指數(shù)級上升;另一方面,隨著低電壓工作模 式技術(shù)的引進,內(nèi)存發(fā)生錯誤的可能性增大,錯誤數(shù)目會增多。
[0003] 錯誤檢查和糾正(Error Checking and Correcting,ECC)內(nèi)存是當(dāng)前普遍采用的 一種內(nèi)存可靠性解決方案。ECC內(nèi)存,即帶有ECC校驗碼的內(nèi)存模組,其基本思想是以內(nèi)存 模組位寬為基本單位進行數(shù)據(jù)保護,以內(nèi)存模組位寬為64位為例,每次寫入64位數(shù)據(jù)的同 時為該數(shù)據(jù)計算8位的校驗位存儲于獨立的ECC芯片中,這64個數(shù)據(jù)位與8個校驗位一并 組成72位ECC字,這種編碼方式可以對72位ECC字中任意一位出錯進行糾正,但是,對于 兩位出錯的情況,就只能檢測而不能糾正,對于更多位出錯的情況,則更加無能為力了。
[0004] IBM公司在ECC內(nèi)存的基礎(chǔ)上提出了 Chipkill內(nèi)存技術(shù)。Chipkill內(nèi)存的設(shè)計 原理基于內(nèi)存錯誤的集聚效應(yīng)傾向于發(fā)生在同一塊動態(tài)隨機存取存儲器(Dynamic Random Access Memory,DRAM)芯片上,Chipkill技術(shù)能容忍任意一個DRAM芯片的失效。Chipkill 內(nèi)存的內(nèi)存控制器(Memory Controller,MC)需要同時控制四個帶有ECC的雙列直插式內(nèi) 存模組(Dual Inline Memory Module,DIMM)協(xié)同工作,MC的位寬由4個72位的ECC字組 成,在每個ECC字內(nèi)部都可以糾檢一位錯誤,每個DMM上的DRAM芯片的位寬必須是4位, 經(jīng)過仔細(xì)地設(shè)計使同一塊DRAM芯片的4位輸入輸出分別映射到4個不同的ECC字中,通 過這樣的設(shè)計即使一片DRAM芯片的4個管腳的數(shù)據(jù)全部出錯,4個不同的ECC字也可以 將其恢復(fù),也就是說Chipkill技術(shù)可以容忍任意一個DIMM上任意的一個DRAM芯片損壞。 Chipkill技術(shù)通過更寬的MC位寬和更大粒度的數(shù)據(jù)編碼取得了較高的可靠性,但是,該技 術(shù)理論上只能用于4位位寬的DRAM芯片,缺乏靈活性,且過大粒度的數(shù)據(jù)編碼導(dǎo)致它每次 讀取的數(shù)據(jù)遠(yuǎn)遠(yuǎn)大于實際訪存請求的數(shù)據(jù),造成了大量不必要的功耗損失。


【發(fā)明內(nèi)容】

[0005] 本發(fā)明實施例提供一種消息式內(nèi)存模組的訪存方法和裝置,以提供一種低功耗 的、高可靠性的、可變粒度的內(nèi)存訪存容錯解決方案。
[0006] 本發(fā)明第一方面提供一種消息式內(nèi)存模組的訪存裝置,所述內(nèi)存模組包括(M+2) 塊動態(tài)隨機存取存儲器DRAM,M等于2的m次方,m為正整數(shù);每塊DRAM中存儲的可在一個 讀寫周期內(nèi)訪存的數(shù)據(jù)稱為單芯片突發(fā)簇SCBC,全部DRAM中存儲的可在同一個讀寫周期 內(nèi)訪存的數(shù)據(jù)的集合形成一個內(nèi)存行;
[0007] 所述裝置包括:
[0008] 讀寫模塊,用于將當(dāng)前讀寫周期內(nèi)待存儲的SCBC存儲到對應(yīng)的DRAM中且位于當(dāng) 前內(nèi)存行中,用于存儲SCBC的所述DRAM不包括第(M+2 )個DRAM ;
[0009] 處理模塊,用于對一個內(nèi)存行中的每個SCBC分別計算一組檢錯碼,對一個內(nèi)存行 中的全部SCBC計算一組糾錯碼;
[0010] 所述讀寫模塊,還用于將對一個內(nèi)存行計算得到的檢錯碼存儲在該內(nèi)存行的第 (M+2)個DRAM中,將對一個內(nèi)存行計算得到的糾錯碼存儲在該內(nèi)存行的第Z個DRAM中,Z 為正整數(shù)且1彡Z彡(M+1),連續(xù)(M+1)個內(nèi)存行中的糾錯碼分別存儲在不同的DRAM中。 [0011] 在第一種可能的實現(xiàn)方式中,所述處理模塊,還用于在收到讀訪存請求時,指示所 述讀寫模塊從當(dāng)前的內(nèi)存行中讀取需要的SCBC以及對應(yīng)的檢錯碼,根據(jù)所述檢錯碼對讀 取到的SCBC進行校驗,判斷是否有SCBC錯誤,在判斷有SCBC錯誤時,獲取發(fā)生錯誤的SCBC 的個數(shù),若有且僅有一個SCBC發(fā)生錯誤,則指示所述讀取模塊讀取該內(nèi)存行的所有數(shù)據(jù), 根據(jù)該內(nèi)存行中的糾錯碼與其它未發(fā)生錯誤的SCBC,對發(fā)生的錯誤的SCBC進行恢復(fù)。
[0012] 結(jié)合第一方面或者第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式 中,所述處理模塊,還用于在收到寫訪存請求時,首先判斷待寫入的第二SCBC的個數(shù)X是否 小于等于M/2 ;若X小于等于M/2,則指示所述讀寫模塊讀取當(dāng)前的內(nèi)存行中存儲的第一檢 錯碼和第一糾錯碼以及待寫入第二SCBC的X個DRAM中存儲的X個第一 SCBC,根據(jù)所述第 一檢錯碼判斷是否有第一 SCBC錯誤,沒有第一 SCBC錯誤時,計算所述X個第二SCBC的第 二檢錯碼,以及根據(jù)所述第一糾錯碼和所述X個第一 SCBC以及所述X個第二SCBC計算第 二糾錯碼,指示所述讀寫模塊將所述X個第二SCBC和第二糾錯碼以及第二檢錯碼寫入對應(yīng) 的DRAM中;若X大于M/2,則指示所述讀寫模塊讀取當(dāng)前的內(nèi)存行中存儲的第一檢錯碼和 第一糾錯碼以及不應(yīng)被寫入第二SCBC的(M-X)個DRAM中存儲的第一 SCBC,根據(jù)所述第一 檢錯碼判斷是否有第一 SCBC錯誤,沒有第一 SCBC錯誤時,計算所述X個第二SCBC的第二 檢錯碼,以及根據(jù)(M-X)個第一 SCBC和X個第二SCBC計算第二糾錯碼,指示所述讀寫模塊 將所述X個第二SCBC和第二糾錯碼以及第二檢錯碼寫入對應(yīng)的DRAM中。
[0013] 結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述處理 模塊,還用于在判斷有第一 SCBC錯誤時,獲取發(fā)生錯誤的第一 SCBC的個數(shù),若有且僅有一 個第一 SCBC發(fā)生錯誤,則指示所述讀取模塊讀取該內(nèi)存行的所有數(shù)據(jù),根據(jù)該內(nèi)存行中的 糾錯碼與其它未發(fā)生錯誤的SCBC,對發(fā)生的錯誤的第一 SCBC進行恢復(fù)。
[0014] 本發(fā)明第二方面提供一種消息式內(nèi)存模組的訪存方法,所述內(nèi)存模組包括(M+2) 塊動態(tài)隨機存取存儲器DRAM,M等于2的m次方,m為正整數(shù);每塊DRAM中存儲的可在一個 讀寫周期內(nèi)訪存的數(shù)據(jù)稱為單芯片突發(fā)簇SCBC,全部DRAM中存儲的可在同一個讀寫周期 內(nèi)訪存的數(shù)據(jù)的集合形成一個內(nèi)存行;
[0015] 所述方法包括:
[0016] 將當(dāng)前讀寫周期內(nèi)待存儲的SCBC存儲到對應(yīng)的DRAM中且位于當(dāng)前內(nèi)存行中,用 于存儲SCBC的所述DRAM不包括第(M+2)個DRAM ;
[0017] 對一個內(nèi)存行中的每個SCBC分別計算一組檢錯碼,對一個內(nèi)存行中的全部SCBC 計算一組糾錯碼;
[0018] 將對一個內(nèi)存行計算得到的檢錯碼存儲在該內(nèi)存行的第(M+2)個DRAM中,將對 一個內(nèi)存行計算得到的糾錯碼存儲在該內(nèi)存行的第Z個DRAM中,Z為正整數(shù)且1 < Z < (M+1),連續(xù)(M+1)個內(nèi)存行中的糾錯碼分別存儲在不同的DRAM中。
[0019] 在第一種可能的實現(xiàn)方式中,所述方法還包括:在收到讀訪存請求時,從當(dāng)前的內(nèi) 存行中讀取需要的SCBC以及對應(yīng)的檢錯碼,根據(jù)所述檢錯碼對讀取到的SCBC進行校驗,判 斷是否有SCBC錯誤,在判斷有SCBC錯誤時,獲取發(fā)生錯誤的SCBC的個數(shù),若有且僅有一個 SCBC發(fā)生錯誤,則讀取該內(nèi)存行的所有數(shù)據(jù),根據(jù)該內(nèi)存行中的糾錯碼與其它未發(fā)生錯誤 的SCBC,對發(fā)生的錯誤的SCBC進行恢復(fù)。
[0020] 結(jié)合第一方面或者第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式 中,所述方法還包括:在收到寫訪存請求時,判斷待寫入的第二SCBC的個數(shù)X是否小于等 于M/2 ;若X小于等于M/2,則讀取當(dāng)前的內(nèi)存行中存儲的第一檢錯碼和第一糾錯碼以及待 寫入第二SCBC的X個DRAM中存儲的X個第一 SCBC,根據(jù)所述第一檢錯碼判斷是否有第一 SCBC錯誤,沒有第一 SCBC錯誤時,計算所述X個第二SCBC的第二檢錯碼,以及根據(jù)所述第 一糾錯碼和所述X個第一 SCBC以及所述X個第二SCBC計算第二糾錯碼,將所述X個第二 SCBC和第二糾錯碼以及第二檢錯碼寫入對應(yīng)的DRAM中;若X大于M/2,則讀取當(dāng)前的內(nèi)存 行中存儲的第一檢錯碼和第一糾錯碼以及不應(yīng)被寫入第二SCBC的(M-X)個DRAM中存儲的 第一 SCBC,根據(jù)所述第一檢錯碼判斷是否有第一 SCBC錯誤,沒有第一 SCBC錯誤時,計算所 述X個第二SCBC的第二檢錯碼,以及根據(jù)(M-X)個第一 SCBC和X個第二SCBC計算第二糾 錯碼,將所述X個第二SCBC和第二糾錯碼以及第二檢錯碼寫入對應(yīng)的DRAM中。
[0021] 結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述的判 斷是否有SCBC錯誤之后還包括:獲取發(fā)生錯誤的第一 SCBC的個數(shù),若有且僅有一個第一 SCBC發(fā)生錯誤,則讀取該內(nèi)存行的所有數(shù)據(jù),根據(jù)該內(nèi)存行中的糾錯碼與其它未發(fā)生錯誤 的SCBC,對發(fā)生的錯誤的第一 SCBC進行恢復(fù)。
[0022] 本發(fā)明實施例技術(shù)方案以SCBC為基本讀寫單位進行細(xì)粒度編碼保護,但對于 SCBC的大小沒有特別限定,S卩,對DRAM內(nèi)存芯片的位寬和突發(fā)長度不做限定,因此可以支 持可變粒度訪存,并且,利用獨立的DRAM存儲檢錯碼可以對不同訪存粒度實現(xiàn)檢錯,檢錯 碼配合糾錯碼可以實現(xiàn)對單個DRAM中任意多位錯誤進行糾錯,是一種低功耗高可靠性的 解決方案。

【專利附圖】

【附圖說明】
[0023] 圖1是本發(fā)明實施例提供的消息式內(nèi)存模組的訪存裝置的示意圖;
[0024] 圖2是本發(fā)明實施例提供的消息式內(nèi)存模組的訪存裝置的原理圖;
[0025] 圖3是本發(fā)明實施例提供的消息式內(nèi)存模組的訪存方法的流程圖;
[0026] 圖4a和4b是本發(fā)明實施例提供的內(nèi)存控制系統(tǒng)的示意圖。

【具體實施方式】
[0027] 本發(fā)明實施例提供一種消息式內(nèi)存模組的訪存方法,以提供一種低功耗的、高可 靠性的、可變粒度的內(nèi)存訪存容錯解決方案。本發(fā)明實施例還提供相應(yīng)的裝置。以下分別 進行詳細(xì)說明。
[0028] 實施例一、
[0029] 請參考圖1,本發(fā)明實施例提供一種消息式內(nèi)存模組的訪存裝置。該裝置可以部署 在內(nèi)存模組的外圍控制電路中,也可以部署在內(nèi)存控制器中;內(nèi)存控制器則可以集成中央 處理器(CentralProcessingUnit,CPU)中或者集成在計算機主板上。
[0030] 所說的內(nèi)存模組具體可以是DIMM,該DIMM包括多個DRAM。本文中假定DRAM的位 寬為N位,N等于2的n次方,n為正整數(shù);DRAM的突發(fā)長度(Burst Length,BL)為Q,Q為 正整數(shù),優(yōu)選Q等于2的若干次方,例如等于4或8 ;假定DMM包括(M+2)塊DRAM,(MXN) 即是整個內(nèi)存模組的位寬,由于計算機內(nèi)存模組位寬(MXN) -般是2的若干次方,例如通 常是32或64,因此,M也是2的若干次方,可以記M等于2的m次方,m為正整數(shù);在計算機 內(nèi)存模組的位寬已確定時,可以根據(jù)單個DRAM的位寬確定所需要的DRAM的個數(shù)。
[0031] 本實施例中,每塊DRAM中存儲的可在一個讀寫周期內(nèi)訪存的數(shù)據(jù)稱為單芯片突 發(fā)族(Single Chip Burst Cluster,SCBC),每個 SCBC包括(NXQ)bit 數(shù)據(jù),全部 DRAM 中存 儲的可在同一個讀寫周期內(nèi)訪存的數(shù)據(jù)即SCBC的集合形成一個內(nèi)存行。每一塊DRAM也可 以視為一個內(nèi)存列。換句話說,一個內(nèi)存行表不一個讀寫周期,一個內(nèi)存列表不一塊DRAM。
[0032] 所說的訪存裝置100包括讀寫模塊110和處理模塊120 ;其中,
[0033] 所述讀寫模塊110,用于將當(dāng)前讀寫周期內(nèi)待存儲的SCBC存儲到對應(yīng)的DRAM中且 位于當(dāng)前內(nèi)存行中,用于存儲SCBC的DRAM不包括第(M+2 )個DRAM ; -個讀寫周期內(nèi)待存儲 的SCBC的個數(shù)不超過M ;
[0034] 所述處理模塊120,用于對一個內(nèi)存行中的每個SCBC分別計算一組檢錯碼,對一 個內(nèi)存行中的全部SCBC計算一組糾錯碼;
[0035] 所述讀寫模塊110,還用于將對一個內(nèi)存行計算得到的檢錯碼存儲在該內(nèi)存行的 第(M+2)個DRAM中,將對一個內(nèi)存行計算得到的糾錯碼存儲在該內(nèi)存行的第Z個DRAM中, Z為正整數(shù)且1彡Z彡M+1),連續(xù)(M+1)個內(nèi)存行中的糾錯碼分別存儲在不同的DRAM中。
[0036] 可選的,所述處理模塊120,還用于在收到讀訪存請求時,指示所述讀寫模塊從當(dāng) 前的內(nèi)存行中讀取需要的SCBC以及對應(yīng)的檢錯碼,根據(jù)所述檢錯碼對讀取到的SCBC進行 校驗,判斷是否有SCBC錯誤,在判斷有SCBC錯誤時,獲取發(fā)生錯誤的SCBC的個數(shù),若有且 僅有一個SCBC發(fā)生錯誤,則指示所述讀取模塊讀取該內(nèi)存行的所有數(shù)據(jù),根據(jù)該內(nèi)存行中 的糾錯碼與其它未發(fā)生錯誤的SCBC,對發(fā)生的錯誤的SCBC進行恢復(fù)。若有兩個或者兩個以 上SCBC發(fā)生錯誤,則處理模塊120向主控設(shè)備例如內(nèi)存控制器報告不可恢復(fù)錯誤。
[0037] 可選的,所述處理模塊120,還用于首先判斷待寫入的第二SCBC的個數(shù)X是否小 于等于M/2 ;若X小于等于M/2,則指示所述讀寫模塊讀取當(dāng)前的內(nèi)存行中存儲的第一檢錯 碼和第一糾錯碼以及待寫入第二SCBC的X個DRAM中存儲的X個第一 SCBC,根據(jù)所述第一 檢錯碼判斷是否有第一 SCBC錯誤,沒有第一 SCBC錯誤時,計算所述X個第二SCBC的第二 檢錯碼,以及根據(jù)所述第一糾錯碼和所述X個第一 SCBC以及所述X個第二SCBC計算第二 糾錯碼,指示所述讀寫模塊將所述X個第二SCBC和第二糾錯碼以及第二檢錯碼寫入對應(yīng)的 DRAM中;若X大于M/2,則指示所述讀寫模塊讀取當(dāng)前的內(nèi)存行中存儲的第一檢錯碼和第一 糾錯碼以及不應(yīng)被寫入第二SCBC的(M-X)個DRAM中存儲的第一 SCBC,根據(jù)所述第一檢錯 碼判斷是否有第一 SCBC錯誤,沒有第一 SCBC錯誤時,計算所述X個第二SCBC的第二檢錯 碼,以及根據(jù)(M-X)個第一 SCBC和X個第二SCBC計算第二糾錯碼,指示所述讀寫模塊將所 述X個第二SCBC和第二糾錯碼以及第二檢錯碼寫入對應(yīng)的DRAM中。
[0038] 進一步的,所述處理模塊120,還用于在判斷有第一 SCBC錯誤時,獲取發(fā)生錯誤的 第一 SCBC的個數(shù),若有且僅有一個第一 SCBC發(fā)生錯誤,則指示所述讀取模塊讀取該內(nèi)存 行的所有數(shù)據(jù),根據(jù)該內(nèi)存行中的糾錯碼與其它未發(fā)生錯誤的SCBC,對發(fā)生的錯誤的第一 SCBC進行恢復(fù)。在有兩個以上DRAM中的SCBC發(fā)生錯誤時,所述處理模塊120向主控設(shè)備 例如內(nèi)存控制器報告不可恢復(fù)錯誤。
[0039] 上述的第一 SCBC、第一糾錯碼和第一檢錯碼可以理解為當(dāng)前存儲的SCBC、糾錯碼 和檢錯碼;第二SCBC、第二糾錯碼和第二檢錯碼則是將要重新寫入的SCBC、糾錯碼和檢錯 碼,這些數(shù)據(jù)將會覆蓋上述的第一 SCBC、第一糾錯碼和第一檢錯碼。
[0040] 一般的,目前計算機系統(tǒng)的內(nèi)存模組通常是64位,假設(shè)選用位寬N定于8的DRAM, 則用于存儲SCBC的DRAM的數(shù)量應(yīng)為64除以8等于8。下面,以M和N均等于8為例,對本 發(fā)明實施例裝置做進一步詳細(xì)說明:
[0041] 當(dāng)M和N均等于8時,所述內(nèi)存模組的數(shù)據(jù)編碼結(jié)構(gòu)如圖2所示,圖中10列分別 表不第一至第(M+2)DRAM。其中,第(M+2)DRAM即圖中最后一列用于存放檢錯碼,第一至第 (M+l )DRAM中的一塊DRAM用于存放糾錯碼,另外八塊DRAM用于存放SCBC。假設(shè)每塊DRAM 的突發(fā)長度也是8位,則每個SCBC包括8bit*8=64bit數(shù)據(jù)。圖中,用Data (D)表示訪存 數(shù)據(jù),用Parity (P)表示糾錯碼,用Checksum (C)表示檢錯碼。同一個內(nèi)存行中存儲的 SCBC分別用D0?D7表示,連續(xù)(M+1)個內(nèi)存行中存儲的糾錯碼分別用P0?P8表示,連續(xù) (M+1)個內(nèi)存行中存儲的檢錯碼分別用C0?C8表示。廣義上,所述的訪存數(shù)據(jù),糾錯碼和 檢錯碼都是SCBC,但在本文中,所述SCBC專指所述的訪存數(shù)據(jù)(D)。
[0042] 本實施例中的容錯編碼分為檢錯碼和糾錯碼兩部分,其中,檢錯碼部分的計算包 括:對同一內(nèi)存行上的8個SCBC依次計算校驗和,校驗和的算法可以采用8位模2加法或 8位二進制反碼和,每個SCBC計算得到8位校驗碼,同一行的8個SCBC計算得到64位校驗 碼,存儲在專用的第(M+2) DRAM芯片的第一內(nèi)存行對應(yīng)位置,作為檢錯碼;糾錯碼部分的計 算包括:對同一內(nèi)存行中8個SCBC的對應(yīng)位進行異或運算,運算產(chǎn)生64位奇偶校驗碼,即 所述糾錯碼P,如D0?D7對應(yīng)位異或得到糾錯碼P0存儲在第(M+1) DRAM的同一行;需要 指出,連續(xù)多個內(nèi)存行的糾錯碼分別存儲在不同的DRAM,呈條帶狀分布于第一至第(M+1) DRAM的內(nèi)存數(shù)據(jù)區(qū)用以糾錯。
[0043] 糾錯碼呈條帶狀分布設(shè)計的原因在于:如果所有內(nèi)存行的糾錯碼P都保存在同一 個DRAM芯片上,當(dāng)連續(xù)寫數(shù)據(jù)時都需要更新該芯片上相對應(yīng)位置的糾錯碼P,會使該DRAM 芯片成為訪問熱點,導(dǎo)致兩個寫操作之間延遲增加,更新性能下降;并且,寫入糾錯碼P時, 需要預(yù)讀整個內(nèi)存行上存儲的全部數(shù)據(jù),會進一步導(dǎo)致性能下降;而通過使糾錯碼呈條帶 狀分布,可以解決上述問題。
[0044] 容錯編碼詳細(xì)的配置參數(shù)如表1所示。
[0045] 表 1
[0046]

【權(quán)利要求】
1. 一種消息式內(nèi)存模組的訪存裝置,其特征在于: 所述內(nèi)存模組包括(M+2)塊動態(tài)隨機存取存儲器DRAM,M等于2的m次方,m為正整數(shù); 每塊DRAM中存儲的可在一個讀寫周期內(nèi)訪存的數(shù)據(jù)稱為單芯片突發(fā)簇SCBC,全部DRAM中 存儲的可在同一個讀寫周期內(nèi)訪存的數(shù)據(jù)的集合形成一個內(nèi)存行; 所述裝置包括: 讀寫模塊,用于將當(dāng)前讀寫周期內(nèi)待存儲的SCBC存儲到對應(yīng)的DRAM中且位于當(dāng)前內(nèi) 存行中,用于存儲SCBC的所述DRAM不包括第(M+2 )個DRAM ; 處理模塊,用于對一個內(nèi)存行中的每個SCBC分別計算一組檢錯碼,對一個內(nèi)存行中的 全部SCBC計算一組糾錯碼; 所述讀寫模塊,還用于將對一個內(nèi)存行計算得到的檢錯碼存儲在該內(nèi)存行的第(M+2) 個DRAM中,將對一個內(nèi)存行計算得到的糾錯碼存儲在該內(nèi)存行的第Z個DRAM中,Z為正整 數(shù)且1《Z《(M+1),連續(xù)(M+1)個內(nèi)存行中的糾錯碼分別存儲在不同的DRAM中。
2. 根據(jù)權(quán)利要求1所述的裝置,其特征在于: 所述處理模塊,還用于在收到讀訪存請求時,指示所述讀寫模塊從當(dāng)前的內(nèi)存行中讀 取需要的SCBC W及對應(yīng)的檢錯碼,根據(jù)所述檢錯碼對讀取到的SCBC進行校驗,判斷是否有 SCBC錯誤,在判斷有SCBC錯誤時,獲取發(fā)生錯誤的SCBC的個數(shù),若有且僅有一個SCBC發(fā)生 錯誤,則指示所述讀取模塊讀取該內(nèi)存行的所有數(shù)據(jù),根據(jù)該內(nèi)存行中的糾錯碼與其它未 發(fā)生錯誤的SCBC,對發(fā)生的錯誤的SCBC進行恢復(fù)。
3. 根據(jù)權(quán)利要求1所述的裝置,其特征在于: 所述處理模塊,還用于在收到寫訪存請求時,首先判斷待寫入的第二SCBC的個數(shù)X是 否小于等于M/2; 若X小于等于M/2,則指示所述讀寫模塊讀取當(dāng)前的內(nèi)存行中存儲的第一檢錯碼和第 一糾錯碼W及待寫入第二SCBC的X個DRAM中存儲的X個第一 SCBC,根據(jù)所述第一檢錯碼 判斷是否有第一 SCBC錯誤,沒有第一 SCBC錯誤時,計算所述X個第二SCBC的第二檢錯碼, W及根據(jù)所述第一糾錯碼和所述X個第一 SCBC W及所述X個第二SCBC計算第二糾錯碼,指 示所述讀寫模塊將所述X個第二SCBC和第二糾錯碼W及第二檢錯碼寫入對應(yīng)的DRAM中; 若X大于M/2,則指示所述讀寫模塊讀取當(dāng)前的內(nèi)存行中存儲的第一檢錯碼和第一糾 錯碼W及不應(yīng)被寫入第二SCBC的(M-X)個DRAM中存儲的第一 SCBC,根據(jù)所述第一檢錯碼 判斷是否有第一 SCBC錯誤,沒有第一 SCBC錯誤時,計算所述X個第二SCBC的第二檢錯碼, W及根據(jù)(M-X)個第一 SCBC和X個第二SCBC計算第二糾錯碼,指示所述讀寫模塊將所述X 個第二SCBC和第二糾錯碼W及第二檢錯碼寫入對應(yīng)的DRAM中。
4. 根據(jù)權(quán)利要求3所述的裝置,其特征在于: 所述處理模塊,還用于在判斷有第一 SCBC錯誤時,獲取發(fā)生錯誤的第一 SCBC的個數(shù), 若有且僅有一個第一 SCBC發(fā)生錯誤,則指示所述讀取模塊讀取該內(nèi)存行的所有數(shù)據(jù),根據(jù) 該內(nèi)存行中的糾錯碼與其它未發(fā)生錯誤的SCBC,對發(fā)生的錯誤的第一 SCBC進行恢復(fù)。
5. -種消息式內(nèi)存模組的訪存方法,其特征在于: 所述內(nèi)存模組包括(M+2)塊動態(tài)隨機存取存儲器DRAM,M等于2的m次方,m為正整數(shù); 每塊DRAM中存儲的可在一個讀寫周期內(nèi)訪存的數(shù)據(jù)稱為單芯片突發(fā)簇SCBC,全部DRAM中 存儲的可在同一個讀寫周期內(nèi)訪存的數(shù)據(jù)的集合形成一個內(nèi)存行; 所述方法包括: 將當(dāng)前讀寫周期內(nèi)待存儲的SCBC存儲到對應(yīng)的DRAM中且位于當(dāng)前內(nèi)存行中,用于存 儲SCBC的所述DRAM不包括第(M+2)個DRAM ; 對一個內(nèi)存行中的每個SCBC分別計算一組檢錯碼,對一個內(nèi)存行中的全部SCBC計算 一組糾錯碼; 將對一個內(nèi)存行計算得到的檢錯碼存儲在該內(nèi)存行的第(M+2)個DRAM中,將對一個內(nèi) 存行計算得到的糾錯碼存儲在該內(nèi)存行的第Z個DRAM中,Z為正整數(shù)且1《Z《(M+1 ),連 續(xù)(M+1)個內(nèi)存行中的糾錯碼分別存儲在不同的DRAM中。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 在收到讀訪存請求時,從當(dāng)前的內(nèi)存行中讀取需要的SCBC W及對應(yīng)的檢錯碼,根據(jù)所 述檢錯碼對讀取到的SCBC進行校驗,判斷是否有SCBC錯誤,在判斷有SCBC錯誤時,獲取發(fā) 生錯誤的SCBC的個數(shù),若有且僅有一個SCBC發(fā)生錯誤,則讀取該內(nèi)存行的所有數(shù)據(jù),根據(jù) 該內(nèi)存行中的糾錯碼與其它未發(fā)生錯誤的SCBC,對發(fā)生的錯誤的SCBC進行恢復(fù)。
7. 根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 在收到寫訪存請求時,判斷待寫入的第二SCBC的個數(shù)X是否小于等于M/2 ; 若X小于等于M/2,則讀取當(dāng)前的內(nèi)存行中存儲的第一檢錯碼和第一糾錯碼W及待寫 入第二SCBC的X個DRAM中存儲的X個第一 SCBC,根據(jù)所述第一檢錯碼判斷是否有第一 SCBC錯誤,沒有第一 SCBC錯誤時,計算所述X個第二SCBC的第二檢錯碼,W及根據(jù)所述第 一糾錯碼和所述X個第一 SCBC W及所述X個第二SCBC計算第二糾錯碼,將所述X個第二 SCBC和第二糾錯碼W及第二檢錯碼寫入對應(yīng)的DRAM中; 若X大于M/2,則讀取當(dāng)前的內(nèi)存行中存儲的第一檢錯碼和第一糾錯碼W及不應(yīng)被寫 入第二SCBC的(M-X)個DRAM中存儲的第一 SCBC,根據(jù)所述第一檢錯碼判斷是否有第一 SCBC錯誤,沒有第一 SCBC錯誤時,計算所述X個第二SCBC的第二檢錯碼,W及根據(jù)(M-X) 個第一 SCBC和X個第二SCBC計算第二糾錯碼,將所述X個第二SCBC和第二糾錯碼W及第 二檢錯碼寫入對應(yīng)的DRAM中。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述的判斷是否有SCBC錯誤之后還包 括: 獲取發(fā)生錯誤的第一 SCBC的個數(shù),若有且僅有一個第一 SCBC發(fā)生錯誤,則讀取該內(nèi)存 行的所有數(shù)據(jù),根據(jù)該內(nèi)存行中的糾錯碼與其它未發(fā)生錯誤的SCBC,對發(fā)生的錯誤的第一 SCBC進行恢復(fù)。
【文檔編號】G11C29/42GK104347122SQ201310330220
【公開日】2015年2月11日 申請日期:2013年7月31日 優(yōu)先權(quán)日:2013年7月31日
【發(fā)明者】高翔, 李冰, 單書暢, 胡瑜 申請人:華為技術(shù)有限公司, 中國科學(xué)院計算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1