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