一種基于漢明碼存取數(shù)據(jù)的方法及集成隨機(jī)存取存儲(chǔ)器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種基于漢明碼寫入、讀取數(shù)據(jù)的方法及實(shí)現(xiàn)上述方法的集成隨機(jī)存取存儲(chǔ)器(IRAM, Integrate Random Access Memory)。
【背景技術(shù)】
[0002]本申請發(fā)明人在實(shí)現(xiàn)本申請實(shí)施例技術(shù)方案的過程中,至少發(fā)現(xiàn)相關(guān)技術(shù)中存在如下技術(shù)問題:
[0003]ECC(錯(cuò)誤檢查與糾錯(cuò),Error Checking and Correcting)校驗(yàn)是在傳統(tǒng)奇偶校驗(yàn)基礎(chǔ)上發(fā)展而來的,主要利用數(shù)據(jù)塊的行列奇偶校驗(yàn)信息生成ECC碼,檢出給定數(shù)據(jù)塊是否失真并具有對該數(shù)據(jù)塊自動(dòng)一位糾錯(cuò)的能力。它克服了傳統(tǒng)奇偶校驗(yàn)只能檢測出數(shù)據(jù)塊奇數(shù)位出錯(cuò)、校驗(yàn)碼冗長,不能糾錯(cuò)的局限性。
[0004]在計(jì)算機(jī)系統(tǒng)中,保持?jǐn)?shù)據(jù)的正確性和一致性是計(jì)算機(jī)正常工作的一個(gè)重要基礎(chǔ)。而數(shù)據(jù)在進(jìn)行儲(chǔ)存或者傳輸?shù)倪^程中,由于干擾、器件故障等原因就存在著使數(shù)據(jù)失真的可能性。因此必須采取一些措施及時(shí)檢出及糾正失真的數(shù)據(jù)。而目前的IRAM作為一種常用的大容量儲(chǔ)存設(shè)備,只能用于進(jìn)行大容量數(shù)據(jù)的存儲(chǔ),無法保證其寫入的數(shù)據(jù)或讀取的數(shù)據(jù)的準(zhǔn)確率,并且在數(shù)據(jù)發(fā)生錯(cuò)誤時(shí)無法進(jìn)行糾錯(cuò)。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實(shí)施例期望提供一種基于漢明碼寫入、讀取數(shù)據(jù)的方法及實(shí)現(xiàn)該方法的IRAM,解決了 IRAM無法保證其寫入的數(shù)據(jù)或讀取的數(shù)據(jù)的準(zhǔn)確率,并且在數(shù)據(jù)發(fā)生錯(cuò)誤時(shí)無法進(jìn)行糾錯(cuò)的問題。
[0006]本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0007]本發(fā)明實(shí)施例提供一種基于漢明碼寫入數(shù)據(jù)的方法所述方法包括:對接收到的讀寫指令進(jìn)行解析,獲取所述讀寫指令的讀寫狀態(tài);確定所述讀寫狀態(tài)為寫狀態(tài)時(shí),將所述讀寫指令攜帶的待存數(shù)據(jù)進(jìn)行錯(cuò)誤檢查與糾正ECC編碼以生成對應(yīng)的第一校驗(yàn)碼,并將所述待存數(shù)據(jù)與所述第一校驗(yàn)碼進(jìn)行存儲(chǔ)。
[0008]上述方案中,對接收到的讀寫指令進(jìn)行解析之前,將所述讀寫指令進(jìn)行格式轉(zhuǎn)換。
[0009]上述方案中,在將所述讀寫指令攜帶的待存數(shù)據(jù)進(jìn)行ECC編碼之前,判斷所述待存數(shù)據(jù)是否存在無效數(shù)據(jù);在所述待存數(shù)據(jù)存在無效數(shù)據(jù)的情況下,獲取所述讀寫指令攜帶的操作地址對應(yīng)的存儲(chǔ)數(shù)據(jù),根據(jù)所述存儲(chǔ)數(shù)據(jù)生成有效的待存數(shù)據(jù)。
[0010]本發(fā)明實(shí)施例還提供一種基于漢明碼讀取數(shù)據(jù)的方法,所述方法包括:對接收到的讀寫指令進(jìn)行解析,獲取所述讀寫指令的讀寫狀態(tài);確定所述讀寫狀態(tài)為讀狀態(tài)時(shí),根據(jù)所述讀寫指令獲取待取數(shù)據(jù),采用錯(cuò)誤檢查與糾正ECC編碼對所述待取數(shù)據(jù)進(jìn)行檢測得到檢測結(jié)果,根據(jù)所述檢測結(jié)果將所述待取數(shù)據(jù)直接發(fā)送、或?qū)⑺龃?shù)據(jù)進(jìn)行糾錯(cuò)后發(fā)送、或觸發(fā)告警。
[0011]上述方案中,對接收到的讀寫指令進(jìn)行解析之前,將所述讀寫指令進(jìn)行格式轉(zhuǎn)換。
[0012]上述方案中,根據(jù)所述讀寫指令獲取所述待取數(shù)據(jù)及所述待取數(shù)據(jù)對應(yīng)的第一校驗(yàn)碼,并將所述待取數(shù)據(jù)進(jìn)行ECC編碼以生成第二校驗(yàn)碼;相應(yīng)的,所述采用ECC編碼對所述待取數(shù)據(jù)進(jìn)行檢測得到檢測結(jié)果,根據(jù)所述檢測結(jié)果將所述待取數(shù)據(jù)直接發(fā)送、或?qū)⑺龃?shù)據(jù)進(jìn)行糾錯(cuò)后發(fā)送、或觸發(fā)告警包括:將所述第一校驗(yàn)碼與所述第二校驗(yàn)碼進(jìn)行異或操作生成異或結(jié)果;根據(jù)所述異或結(jié)果將所述待取數(shù)據(jù)直接發(fā)送、或?qū)⑺龃?shù)據(jù)進(jìn)行糾錯(cuò)后發(fā)送、或觸發(fā)告警。
[0013]上述方案中,所述根據(jù)所述檢測結(jié)果將所述待取數(shù)據(jù)直接發(fā)送、或?qū)⑺龃?shù)據(jù)進(jìn)行糾錯(cuò)后發(fā)送、或觸發(fā)告警具體為:情況一:當(dāng)所述異或結(jié)果為全O或存在單比特的1,則將所述待取數(shù)據(jù)直接發(fā)送;情況二:當(dāng)所述異或結(jié)果中O與I的個(gè)數(shù)相同,則將所述待取數(shù)據(jù)進(jìn)行糾錯(cuò)后發(fā)送;若非所述情況一和所述情況二,則觸發(fā)告警。
[0014]本發(fā)明實(shí)施例還提供一種基于漢明碼寫入數(shù)據(jù)的集成隨機(jī)存取存儲(chǔ)器IRAM,所述IRAM包括:第一控制模塊、第一ECC模塊以及第一存儲(chǔ)模塊;其中,所述第一控制模塊,用于對接收到的讀寫指令進(jìn)行解析,獲取所述讀寫指令的讀寫狀態(tài);所述第一 ECC模塊,用于確定所述讀寫狀態(tài)為寫狀態(tài)時(shí),將所述讀寫指令攜帶的待存數(shù)據(jù)進(jìn)行錯(cuò)誤檢查與糾正ECC編碼以生成對應(yīng)的第一校驗(yàn)碼;所述第一存儲(chǔ)模塊,用于存儲(chǔ)所述待存數(shù)據(jù)和所述第一校驗(yàn)碼。
[0015]上述方案中,所述第一控制模塊還用于將所述讀寫指令進(jìn)行格式轉(zhuǎn)換。
[0016]上述方案中,所述第一 ECC模塊包括:第一判斷子模塊、第一編碼子模塊;其中,所述第一判斷子模塊,用于判斷所述待存數(shù)據(jù)是否存在無效數(shù)據(jù),在所述待存數(shù)據(jù)存在無效數(shù)據(jù)的情況下,獲取所述讀寫指令攜帶的操作地址對應(yīng)的存儲(chǔ)數(shù)據(jù),根據(jù)所述存儲(chǔ)數(shù)據(jù)生成有效的待存數(shù)據(jù);所述第一編碼子模塊,用于將所述待存數(shù)據(jù)進(jìn)行ECC編碼以生成第一校驗(yàn)碼。
[0017]本發(fā)明實(shí)施例還提供一種基于漢明碼讀取數(shù)據(jù)的集成隨機(jī)存取存儲(chǔ)器IRAM,所述IRAM包括:第二控制模塊、第二 ECC模塊以及第二存儲(chǔ)模塊;其中,所述第二控制模塊,用于對接收到的讀寫指令進(jìn)行解析,獲取所述讀寫指令的讀寫狀態(tài);所述第二 ECC模塊,用于確定所述讀寫狀態(tài)為讀狀態(tài)時(shí),根據(jù)所述讀寫指令獲取待取數(shù)據(jù),采用錯(cuò)誤檢查與糾正ECC編碼對所述待取數(shù)據(jù)進(jìn)行檢測得到檢測結(jié)果,根據(jù)所述檢測結(jié)果將所述待取數(shù)據(jù)直接發(fā)送、或?qū)⑺龃?shù)據(jù)進(jìn)行糾錯(cuò)后發(fā)送、或觸發(fā)告警;所述第二存儲(chǔ)模塊,用于存儲(chǔ)所述待取數(shù)據(jù)和所述待取數(shù)據(jù)對應(yīng)的第一校驗(yàn)碼。
[0018]上述方案中,所述第二控制模塊還用于將所述讀寫指令進(jìn)行格式轉(zhuǎn)換。
[0019]上述方案中,所述第二 ECC模塊,包括:第二編碼子模塊、校驗(yàn)子模塊;其中,所述第二編碼子模塊,用于根據(jù)所述讀寫指令獲取所述待取數(shù)據(jù)及所述待取數(shù)據(jù)對應(yīng)的第一校驗(yàn)碼,并將所述待取數(shù)據(jù)進(jìn)行ECC編碼以生成第二校驗(yàn)碼;所述校驗(yàn)子模塊,用于將所述第一校驗(yàn)碼與所述第二校驗(yàn)碼進(jìn)行異或操作生成異或結(jié)果,根據(jù)所述異或結(jié)果將所述待取數(shù)據(jù)直接發(fā)送、或?qū)⑺龃?shù)據(jù)進(jìn)行糾錯(cuò)后發(fā)送、或觸發(fā)告警。
[0020]上述方案中,所述校驗(yàn)子模塊具體用于情況一:當(dāng)所述異或的結(jié)果為全O或存在單比特的I,則將所述待取數(shù)據(jù)直接發(fā)送;情況二:當(dāng)所述異或的結(jié)果中O與I的個(gè)數(shù)相同,則將所述待取數(shù)據(jù)進(jìn)行糾錯(cuò)后發(fā)送;若非所述情況一和所述情況二,則觸發(fā)告警。
[0021]本發(fā)明實(shí)施例還提供了一種基于漢明碼寫入、讀取數(shù)據(jù)的方法及實(shí)現(xiàn)該方法的IRAM,對于該寫入數(shù)據(jù)的方法,包括:對接收到的讀寫指令進(jìn)行解析,獲取所述讀寫指令的讀寫狀態(tài);確定所述讀寫狀態(tài)為寫狀態(tài)時(shí),將所述讀寫指令攜帶的待存數(shù)據(jù)進(jìn)行ECC編碼以生成對應(yīng)的第一校驗(yàn)碼,并將所述待存數(shù)據(jù)與所述第一校驗(yàn)碼進(jìn)行存儲(chǔ);對于讀取數(shù)據(jù)的方法,包括:確定所述讀寫狀態(tài)為讀狀態(tài)時(shí),根據(jù)所述讀寫指令獲取待取數(shù)據(jù),采用ECC編碼對所述待取數(shù)據(jù)進(jìn)行檢測得到檢測結(jié)果,根據(jù)所述檢測結(jié)果將所述待取數(shù)據(jù)直接發(fā)送、或?qū)⑺龃?shù)據(jù)進(jìn)行糾錯(cuò)后發(fā)送、或觸發(fā)告警。
[0022]采用本發(fā)明實(shí)施例,解決了 IRAM無法保證其寫入的數(shù)據(jù)或讀取的數(shù)據(jù)的準(zhǔn)確率,并且在數(shù)據(jù)發(fā)生錯(cuò)誤時(shí)無法進(jìn)行糾錯(cuò)的問題;同時(shí),本發(fā)明實(shí)施例的方法采用了漢明碼,克服了傳統(tǒng)奇偶校驗(yàn)只能檢出數(shù)據(jù)塊奇偶位的錯(cuò)誤,校驗(yàn)碼冗長且無法糾錯(cuò)的缺點(diǎn),通過ECC校驗(yàn)的方式完成對IRAM數(shù)