本技術涉及存儲設備的容錯領域,涉及基于糾錯碼的動態(tài)調(diào)整方法及芯片。
背景技術:
1、隨著信息技術的發(fā)展,對存儲設備的數(shù)據(jù)處理速度和數(shù)據(jù)準確性要求不斷提高。在眾多存儲設備中,內(nèi)存是最為關鍵的部件之一。然而,內(nèi)存受到雜散輻射、電氣干擾等多種因素的影響,容易出現(xiàn)數(shù)據(jù)錯誤。中國發(fā)明專利cn202011496194.0公開的一種mbist電路系統(tǒng)對芯片內(nèi)部的存儲器進行自測的方式包括,通過對比測試激勵數(shù)據(jù)和從內(nèi)置的sram讀取的測試響應數(shù)據(jù)來獲得測試結(jié)果,雖然mbist電路系統(tǒng)可復用于不同類型sram存儲器進行測試,但缺少對糾錯碼(error?correcting?code,ecc)的應用機制,無法通過對讀取的數(shù)據(jù)進行糾錯校驗來克服前述數(shù)據(jù)錯誤。
2、為了減少這些錯誤,內(nèi)存通常使用糾錯碼(error?correcting?code,ecc)技術來檢測并修正位錯誤,但目前的內(nèi)存控制器采用固定的糾錯碼進行數(shù)據(jù)糾錯,或者需要由數(shù)據(jù)存儲的可靠性影響因素及運行設備的電氣狀態(tài)共同決定唯一一種糾錯方案選擇結(jié)果,因此應用于同一芯片中的糾錯策略比較單一,也不能根據(jù)所存儲的數(shù)據(jù)類型或數(shù)據(jù)的實際讀寫情況動態(tài)調(diào)整糾錯能力,可能不適應不同數(shù)據(jù)編碼方式的時間及所需的工作功率,不利于運用芯片內(nèi)存資源去正確存儲數(shù)據(jù)。
技術實現(xiàn)思路
1、本技術公開基于糾錯碼的動態(tài)調(diào)整方法及芯片,具體的技術方案如下:
2、基于糾錯碼的動態(tài)調(diào)整方法,包括:內(nèi)存控制器分別根據(jù)數(shù)據(jù)重要級、運行負載和/或數(shù)據(jù)錯誤標志信息,對當前糾錯策略等級進行調(diào)整,以通過調(diào)用與調(diào)整后的當前糾錯策略等級相對應的糾錯碼進行校驗;其中,數(shù)據(jù)重要級、運行負載以及數(shù)據(jù)錯誤標志信息分別支持對所述當前糾錯策略等級進行調(diào)整,以依次選擇不同糾錯策略等級作為調(diào)整后的當前糾錯策略等級,并實現(xiàn)當前糾錯策略等級對應的糾錯碼在不同糾錯策略等級對應的糾錯碼之間進行轉(zhuǎn)換;其中,運行負載和數(shù)據(jù)重要級均是外部反饋給內(nèi)存控制器;內(nèi)存控制器根據(jù)預先寫入內(nèi)存模塊的數(shù)據(jù)所采用的糾錯策略等級進行多次檢錯的過程中,配置得到所述數(shù)據(jù)錯誤標志信息。
3、與現(xiàn)有技術相比,本技術可以綜合數(shù)據(jù)重要級、運行負載以及數(shù)據(jù)錯誤標志信息當中部分條件或全部條件進行所述當前糾錯策略等級的有限次調(diào)整,且數(shù)據(jù)重要級、運行負載以及數(shù)據(jù)錯誤標志信息可以先后調(diào)整所述當前糾錯策略等級,從而在有限數(shù)量的條件發(fā)生有限的變化的情況下,本技術公開的內(nèi)存控制器自動作出糾錯策略等級及其對應的糾錯碼的切換,約束所述當前糾錯策略等級切換的等級類型、切換時間以及編解碼時間,相對于單一環(huán)境因素加快糾錯碼自動切換和減輕功率負載,而且,本技術支持往所述內(nèi)存模塊寫入數(shù)據(jù)的較為接近的一段時間內(nèi)多次對所述當前糾錯策略等級進行自適應調(diào)整,滿足所述內(nèi)存模塊在不同編解碼時間或不同負載運行環(huán)境下的存儲安全要求,提高數(shù)據(jù)在內(nèi)存模塊中存儲的可靠性,保證糾錯碼對數(shù)據(jù)的自動校驗工作可靠進行。
4、進一步地,所述內(nèi)存控制器分別根據(jù)數(shù)據(jù)重要級、運行負載和/或數(shù)據(jù)錯誤標志信息,對當前糾錯策略等級進行調(diào)整的方法包括:若中央處理單元反饋給內(nèi)存控制器的數(shù)據(jù)重要級提高,則內(nèi)存控制器將當前糾錯策略等級提升,使提升后的糾錯策略等級對應的糾錯碼轉(zhuǎn)換為用于糾正更多錯誤的數(shù)據(jù)位的糾錯碼;和/或,若中央處理單元反饋給內(nèi)存控制器的運行負載降低,則內(nèi)存控制器將當前糾錯策略等級提升,使提升后的糾錯策略等級對應的糾錯碼轉(zhuǎn)換為用于糾正更多錯誤的數(shù)據(jù)位的糾錯碼;和/或,若內(nèi)存控制器檢測到數(shù)據(jù)錯誤標志信息置為有效標志位,則內(nèi)存控制器將當前糾錯策略等級提升,使提升后的糾錯策略等級對應的糾錯碼轉(zhuǎn)換為用于糾正更多錯誤的數(shù)據(jù)位的糾錯碼。
5、進一步地,所述內(nèi)存控制器向所述內(nèi)存模塊寫入數(shù)據(jù)之前,若所述中央處理單元判斷到用于寫入內(nèi)存模塊的數(shù)據(jù)的數(shù)據(jù)重要級提高,則將重要性標志位置為有效標志位并反饋給所述內(nèi)存控制器,觸發(fā)所述內(nèi)存控制器控制所述當前糾錯策略等級提升一級;若所述中央處理單元判斷到所需寫入的數(shù)據(jù)的數(shù)據(jù)重要級降低,則將重要性標志位置為無效標志位并反饋給所述內(nèi)存控制器,觸發(fā)所述內(nèi)存控制器控制所述當前糾錯策略等級降低一級;和/或,所述中央處理單元向所述內(nèi)存控制器反饋的運行負載降低時,將負載標志位置為有效標志位并反饋給所述內(nèi)存控制器,觸發(fā)所述內(nèi)存控制器控制所述當前糾錯策略等級提升一級;所述中央處理單元向所述內(nèi)存控制器反饋的運行負載升高時,將負載標志位置為無效標志位并反饋給所述內(nèi)存控制器,觸發(fā)所述內(nèi)存控制器控制所述當前糾錯策略等級降低一級;和/或,所述內(nèi)存控制器從所述內(nèi)存模塊讀取數(shù)據(jù),并檢測是否出現(xiàn)錯誤數(shù)據(jù);在檢測到出現(xiàn)錯誤數(shù)據(jù)時,將數(shù)據(jù)錯誤標志信息置為有效標志位,控制所述當前糾錯策略等級提升一次;在檢測到出現(xiàn)一次錯誤數(shù)據(jù)后,若在連續(xù)讀取一定次數(shù)的數(shù)據(jù)的過程中保持檢測不出現(xiàn)錯誤數(shù)據(jù),則將數(shù)據(jù)錯誤標志信息置為無效標志位,觸發(fā)所述內(nèi)存控制器控制所述當前糾錯策略等級降低,使在所述數(shù)據(jù)錯誤標志信息由無效標志位翻轉(zhuǎn)為有效標志位后,所述當前糾錯策略等級每連續(xù)讀取一定次數(shù)的數(shù)據(jù)則調(diào)整一次。
6、綜上所述,數(shù)據(jù)重要級越高,所述運行負載越小,越需要提升所述當前糾錯策略等級,提高所述內(nèi)存模塊存儲數(shù)據(jù)的安全性;而數(shù)據(jù)重要級越低,所述運行負載越大,越需要降低所述當前糾錯策略等級,所述當前糾錯策略等級越低,對應的糾錯碼所需處理的數(shù)據(jù)中的冗余數(shù)據(jù)位越少,編解碼時間減小,運行功率降低的同時也能保障一定的數(shù)據(jù)存儲安全;并且,檢測到出現(xiàn)錯誤數(shù)據(jù)后,通過設置連續(xù)讀取一定次數(shù)的數(shù)據(jù)的過程來約束所述當前糾錯策略等級的提升次數(shù),以實現(xiàn)在保證所述內(nèi)存模塊存儲數(shù)據(jù)的安全性的同時也降低編解碼時間和運行功率。
7、進一步地,所述檢測是否出現(xiàn)錯誤數(shù)據(jù)的方法包括:所述內(nèi)存控制器按照與當前糾錯策略等級相對應的編碼規(guī)則控制待寫入數(shù)據(jù)進行編碼,獲得編碼數(shù)據(jù),再將編碼數(shù)據(jù)寫入所述內(nèi)存模塊;若所述內(nèi)存控制器從所述內(nèi)存模塊讀取所述編碼數(shù)據(jù),則按照與所述當前糾錯策略等級相對應的解碼規(guī)則,對讀取到的所述編碼數(shù)據(jù)進行解碼,獲得解碼結(jié)果;若解碼結(jié)果等于所述待寫入數(shù)據(jù),則檢測到不出現(xiàn)錯誤數(shù)據(jù);若解碼結(jié)果不等于所述待寫入數(shù)據(jù),則檢測到出現(xiàn)錯誤數(shù)據(jù)。
8、進一步地,所述內(nèi)存控制器啟動向所述內(nèi)存模塊第一次寫入數(shù)據(jù)之前,先設置參考糾錯策略等級,其中,與參考糾錯策略等級相對應的編碼規(guī)則是預先確定;然后調(diào)用與參考糾錯策略等級相對應的編碼規(guī)則對數(shù)據(jù)進行編碼,再將編碼后的數(shù)據(jù)寫入所述內(nèi)存模塊,以完成向所述內(nèi)存模塊第一次寫入數(shù)據(jù);若所述內(nèi)存控制器從內(nèi)存模塊第一次讀取數(shù)據(jù),則按照與參考糾錯策略等級相對應的解碼規(guī)則對第一次讀取的數(shù)據(jù)進行解碼,獲得解碼結(jié)果;再檢測解碼結(jié)果是否出現(xiàn)錯誤數(shù)據(jù),并將參考糾錯策略等級更新為所述當前糾錯策略等級;然后分別根據(jù)數(shù)據(jù)重要級、運行負載和/或數(shù)據(jù)錯誤標志信息,對所述當前糾錯策略等級進行調(diào)整;其中,向所述內(nèi)存模塊第一次寫入數(shù)據(jù)的寫地址和從內(nèi)存模塊第一次讀取數(shù)據(jù)的讀地址是相同;其中,調(diào)用與參考糾錯策略等級相對應的編碼規(guī)則對數(shù)據(jù)進行編碼,得到的編碼后的數(shù)據(jù)是與參考糾錯策略等級相對應的糾錯碼,與參考糾錯策略等級相對應的糾錯碼被配置為糾正至少一個錯誤的數(shù)據(jù)位。從而在對所述內(nèi)存模塊實施第一次讀寫操作后,實現(xiàn)分別根據(jù)數(shù)據(jù)重要級、運行負載和/或數(shù)據(jù)錯誤標志信息,從參考糾錯策略等級開始調(diào)整所述當前糾錯策略等級。
9、進一步地,在內(nèi)存控制器根據(jù)數(shù)據(jù)錯誤標志信息對當前糾錯策略等級進行調(diào)整的過程中,包括:所述內(nèi)存控制器每次從內(nèi)存模塊讀取數(shù)據(jù)時,若檢測到出現(xiàn)錯誤數(shù)據(jù),則將數(shù)據(jù)錯誤標志信息置為有效標志位并保持為有效標志位以觸發(fā)所述內(nèi)存控制器對當前糾錯策略等級提升一級,并將不出現(xiàn)錯誤數(shù)據(jù)的次數(shù)清零;然后,若檢測到不出現(xiàn)數(shù)據(jù)錯誤且數(shù)據(jù)錯誤標志信息置為有效標志位,則統(tǒng)計不出現(xiàn)錯誤數(shù)據(jù)的次數(shù),直至統(tǒng)計到連續(xù)不出現(xiàn)錯誤數(shù)據(jù)的次數(shù)達到預設測試次數(shù),則確定在連續(xù)讀取一定次數(shù)的數(shù)據(jù)的過程中保持檢測到不出現(xiàn)錯誤數(shù)據(jù),并將數(shù)據(jù)錯誤標志信息置為無效標志位,并控制所述當前糾錯策略等級降低,同時停止統(tǒng)計不出現(xiàn)錯誤數(shù)據(jù)的次數(shù);其中,一定次數(shù)大于或等于所述預設測試次數(shù);每當數(shù)據(jù)錯誤標志信息由無效標志位翻轉(zhuǎn)為有效標志位后,在所述連續(xù)讀取一定次數(shù)的數(shù)據(jù)的過程中,若保持檢測到不出現(xiàn)錯誤數(shù)據(jù),則所述內(nèi)存控制器對當前糾錯策略等級保持不變;其中,所述內(nèi)存控制器從內(nèi)存模塊中讀取的數(shù)據(jù)是預先按照與當前糾錯策略等級對應的編碼規(guī)則編碼得到。
10、進一步地,在檢測到出現(xiàn)錯誤數(shù)據(jù)后,若所述內(nèi)存控制器在連續(xù)讀取一定次數(shù)的數(shù)據(jù)的過程中再次檢測到出現(xiàn)錯誤數(shù)據(jù),則將數(shù)據(jù)錯誤標志信息置為有效標志位但保持當前糾錯策略等級不變,并將所需統(tǒng)計的不出現(xiàn)錯誤數(shù)據(jù)的次數(shù)清零,然后,在檢測到不出現(xiàn)數(shù)據(jù)錯誤且數(shù)據(jù)錯誤標志信息置為有效標志位,則統(tǒng)計不出現(xiàn)錯誤數(shù)據(jù)的次數(shù),直至統(tǒng)計到連續(xù)不出現(xiàn)錯誤數(shù)據(jù)的次數(shù)達到預設測試次數(shù),則將數(shù)據(jù)錯誤標志信息置為無效標志位,并控制所述當前糾錯策略等級降低一級,同時停止統(tǒng)計不出現(xiàn)錯誤數(shù)據(jù)的次數(shù),直至重新檢測到出現(xiàn)錯誤數(shù)據(jù),再將數(shù)據(jù)錯誤標志信息置為有效標志位,并將不出現(xiàn)錯誤數(shù)據(jù)的次數(shù)清零,以開始在下一輪連續(xù)讀取一定次數(shù)的數(shù)據(jù)的過程中檢測是否出現(xiàn)錯誤數(shù)據(jù)。
11、因此,第一次出現(xiàn)錯誤數(shù)據(jù)并標記所述數(shù)據(jù)錯誤標志信息為有效標志位后,可以提升所述當前糾錯策略等級一次,且統(tǒng)計沒有出現(xiàn)錯誤數(shù)據(jù)的次數(shù);若根據(jù)預先寫入內(nèi)存模塊的數(shù)據(jù)所調(diào)用的糾錯策略等級進行一輪多次檢錯均沒有出現(xiàn)錯誤數(shù)據(jù),則可以標記所述數(shù)據(jù)錯誤標志信息為無效標志位,進而可以降低所述當前糾錯策略等級一級;若根據(jù)預先寫入內(nèi)存模塊的數(shù)據(jù)所調(diào)用的糾錯策略等級進行一輪多次檢錯期間(或在連續(xù)讀取一定次數(shù)的數(shù)據(jù)的過程中)再次檢測到出現(xiàn)錯誤數(shù)據(jù),則可以控制所述當前糾錯策略等級不變,并清空沒有出現(xiàn)錯誤數(shù)據(jù)的次數(shù),重新進行一輪多次檢錯,如此循環(huán)可以估計所述內(nèi)存模塊發(fā)生數(shù)據(jù)存儲錯誤的概率,即所述內(nèi)存模塊故障的概率,則內(nèi)存控制器記錄最近一段時間的內(nèi)存模塊的錯誤事件情況,自適應地調(diào)整所述當前糾錯策略等級,以實現(xiàn)自動完成不同糾錯策略等級對應的糾錯碼之間的轉(zhuǎn)換,保證數(shù)據(jù)存儲的可靠性,也縮短編解碼時間和降低編解碼功率,提升內(nèi)存模塊的讀寫吞吐率。
12、進一步地,所述內(nèi)存控制器分別根據(jù)數(shù)據(jù)重要級、運行負載和/或數(shù)據(jù)錯誤標志信息,對當前糾錯策略等級進行調(diào)整的方法包括:所述內(nèi)存控制器向所述內(nèi)存模塊中寫入數(shù)據(jù)的情況下,所述內(nèi)存控制器先后根據(jù)數(shù)據(jù)重要級、運行負載和所述數(shù)據(jù)錯誤標志信息對所述當前糾錯策略等級進行至多三次調(diào)整,使內(nèi)存控制器調(diào)用與調(diào)整后的當前糾錯策略等級相對應的編碼規(guī)則對數(shù)據(jù)進行編碼,再將編碼后的數(shù)據(jù)存入所述內(nèi)存模塊;其中,數(shù)據(jù)重要級、運行負載以及所述數(shù)據(jù)錯誤標志信息均是僅支持對所述當前糾錯策略等級進行至多一次調(diào)整。實現(xiàn)對不同糾錯碼作動態(tài)調(diào)用。
13、進一步地,所述內(nèi)存控制器先后根據(jù)數(shù)據(jù)重要級、運行負載和所述數(shù)據(jù)錯誤標志信息對所述當前糾錯策略等級進行三次調(diào)整的方法包括:先檢測到數(shù)據(jù)重要級提高,則對所述當前糾錯策略等級從初始糾錯策略等級開始提升一級,得到第一糾錯策略等級;其中,初始糾錯策略等級是預先設置的等級是最低的一種糾錯策略等級;然后檢測到運行負載降低,則對所述第一糾錯策略等級提升一級,得到第二糾錯策略等級;然后檢測到所述數(shù)據(jù)錯誤標志信息置為有效標志位,則對所述第二糾錯策略等級提升一級,得到第三糾錯策略等級,實現(xiàn)對所述當前糾錯策略等級進行三次調(diào)整,實現(xiàn)對所述當前糾錯策略等級進行三次調(diào)整。
14、進一步地,與初始糾錯策略等級相對應的糾錯碼是奇偶校驗碼;與第一糾錯策略等級相對應的糾錯碼是漢明校驗碼;與第二糾錯策略等級相對應的糾錯碼是reed-slolmon碼;與第三糾錯策略等級相對應的糾錯碼是ldpc碼或mds碼。從而提供三種糾錯策略等級(三種不同編碼強度的糾錯策略等級)對應的糾錯碼,適用于所述內(nèi)存模塊在三種不同風險環(huán)境下安全可靠地存儲數(shù)據(jù)和校驗數(shù)據(jù)。
15、一種芯片,該芯片用于執(zhí)行所述動態(tài)調(diào)整方法;該芯片至少包括中央處理單元和內(nèi)存控制器,該芯片的內(nèi)部或外部設置內(nèi)存模塊;內(nèi)存控制器與中央處理單元連接,內(nèi)存控制器用于接收中央處理單元反饋的數(shù)據(jù)重要級和運行負載;內(nèi)存控制器與內(nèi)存模塊連接,內(nèi)存控制器用于對內(nèi)存模塊進行數(shù)據(jù)的讀取操作和寫入操作;內(nèi)存控制器,用于分別根據(jù)數(shù)據(jù)重要級、運行負載和/或數(shù)據(jù)錯誤標志信息,對當前糾錯策略等級進行調(diào)整。本技術公開的芯片利用監(jiān)控到的數(shù)據(jù)重要級、運行負載以及數(shù)據(jù)錯誤標志信息當中部分條件或全部條件進行所述當前糾錯策略等級的多次調(diào)整,從而自適應地調(diào)整出各種糾錯策略等級以進行編碼存儲和檢錯反饋,能夠騰出芯片內(nèi)存存儲不穩(wěn)定的一段讀取時間以檢測所需寫入的數(shù)據(jù)出現(xiàn)的數(shù)據(jù)錯誤,從而以所述數(shù)據(jù)錯誤標志信息的變化頻率為基準,避免在內(nèi)存存儲數(shù)據(jù)不穩(wěn)定的情況下頻繁變換多種糾錯碼,而是配合數(shù)據(jù)重要級及運行負載進行所述當前糾錯策略等級的動態(tài)調(diào)整,緩解所述內(nèi)存模塊在存儲數(shù)據(jù)過程中發(fā)生的故障,也提升糾錯策略等級及其對應的糾錯碼的應用靈活性,增強糾檢錯能力的環(huán)境適應性。
16、進一步地,所述內(nèi)存控制器包括ecc編碼單元和ecc解碼單元;ecc編碼單元,用于根據(jù)所述調(diào)整后的當前糾錯策略等級,調(diào)用相對應的編碼規(guī)則對有效存儲數(shù)據(jù)進行編碼,得到編碼數(shù)據(jù),然后將有效存儲數(shù)據(jù)、編碼數(shù)據(jù)塊以及糾錯策略信息傳給內(nèi)存模塊;其中,糾錯策略信息用于表示所述調(diào)整后的當前糾錯策略等級及其對應的編碼規(guī)則,編碼數(shù)據(jù)是所述調(diào)整后的當前糾錯策略等級對應的糾錯碼;ecc解碼單元,用于從內(nèi)存模塊讀取所述糾錯策略信息、所述編碼數(shù)據(jù)和所述有效存儲數(shù)據(jù),再基于所述糾錯策略信息調(diào)用所述調(diào)整后的當前糾錯策略等級對應的解碼規(guī)則,再根據(jù)所述調(diào)整后的當前糾錯策略等級對應的解碼規(guī)則對所述編碼數(shù)據(jù)進行解碼,獲得解碼數(shù)據(jù);ecc解碼單元,還用于判斷解碼數(shù)據(jù)與有效存儲數(shù)據(jù)是否相同;當判斷到解碼數(shù)據(jù)與有效存儲數(shù)據(jù)相同時,將解碼數(shù)據(jù)傳輸給所述中央處理單元;當判斷到解碼數(shù)據(jù)與有效存儲數(shù)據(jù)不相同時,根據(jù)所述調(diào)整后的當前糾錯策略等級對應的糾錯碼對解碼數(shù)據(jù)進行糾正,獲得可靠數(shù)據(jù),再將可靠數(shù)據(jù)傳輸給所述中央處理單元。