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