以讀代寫的存儲器糾錯方法
【專利摘要】本發(fā)明提供一種以讀代寫的存儲器糾錯方法,主要解決了現(xiàn)有ECC編碼過程中由于數(shù)據(jù)屏蔽的存在,導(dǎo)致不能順利進行編碼產(chǎn)生監(jiān)督位或產(chǎn)生監(jiān)督位需增加存儲陣列面積的問題。該以讀代寫的存儲器糾錯方法,包括以下步驟,讀入外部數(shù)據(jù),若存在數(shù)據(jù)屏蔽,則將未被屏蔽的外部數(shù)據(jù)寫入存儲陣列,同時將與被屏蔽的數(shù)據(jù)相應(yīng)的數(shù)據(jù)從存儲陣列中讀出,然后再將寫入的外部數(shù)據(jù)與讀出的數(shù)據(jù)合并,ECC編碼電路用此合并后的數(shù)據(jù)通過設(shè)定的規(guī)則產(chǎn)生相應(yīng)的監(jiān)督位,新的數(shù)據(jù)和監(jiān)督位被寫入存儲整列并完全代替之前存儲的信息;該以讀代寫的存儲器糾錯方法解決了數(shù)據(jù)屏蔽對ECC的影響,可以復(fù)用存儲器已有的讀寫電路,只需加入DM對讀的控制。
【專利說明】以讀代寫的存儲器糾錯方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種存儲器糾錯方法,具體涉及一種以讀代寫的存儲器糾錯方法。
【背景技術(shù)】
[0002]ECC(ErrorCorrectionCode糾錯碼)被用來檢測和糾正出錯的數(shù)據(jù)。資料顯示有很多種算法可支持ECC,例如最常用的漢明碼(HammingCode), 8位(bit)數(shù)據(jù)需要4位監(jiān)督位(paritybit),64位數(shù)據(jù)需要7位監(jiān)督位??赏ㄟ^數(shù)據(jù)長度以及所需要檢測和糾正的位數(shù)選取合適的算法。
[0003]對于不同的DDR結(jié)構(gòu)(DDR1/2/3),典型的數(shù)據(jù)讀取(streamin-and-out)預(yù)取數(shù)據(jù)長度有32位、64位以及128位。一種合理的折中解決辦法可以對64位數(shù)據(jù)使用7位或者8位的監(jiān)督位(根據(jù)不同的ECC算法),如圖1和圖2所示。
[0004]但對于DRAM來說要實現(xiàn)檢測和糾正的功能并不是那么簡單,因為DM數(shù)據(jù)屏蔽(Data Mask)的存在。也就是說,在把數(shù)據(jù)從外部寫入存儲單元的時候,某一個或者多個字節(jié)(byte)可能會被屏蔽掉,使之不會改寫存儲單元里已經(jīng)存儲的數(shù)據(jù)。這就使得ECC的編碼過程不能順利進行去產(chǎn)生監(jiān)督位,如圖3所示。為了解決這個問題,最簡單的方法是把64位數(shù)據(jù)分成8組,每組8位數(shù)據(jù)(一個字節(jié)),剛好是DM的屏蔽長度,這樣就不會受到DM的影響。但是由于每8位數(shù)據(jù)需要4位的監(jiān)督位,那就會導(dǎo)致整個存儲陣列的面積需要增加50%,使得DRAM的成本極大增加,所以需要解決DM帶來的問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種以讀代寫的存儲器糾錯方法,主要解決了現(xiàn)有ECC編碼過程中由于數(shù)據(jù)屏蔽的存在,導(dǎo)致不能順利進行編碼產(chǎn)生監(jiān)督位或產(chǎn)生監(jiān)督位需增加存儲陣列面積的問題。
[0006]本發(fā)明的技術(shù)解決方案如下:
[0007]該以讀代寫的存儲器糾錯方法,包括以下步驟:
[0008]I]讀入外部數(shù)據(jù),并判斷是否存在數(shù)據(jù)屏蔽,若存在數(shù)據(jù)屏蔽則進入步驟2處理,若不存在數(shù)據(jù)屏蔽則進入步驟3處理:
[0009]2]由于存在數(shù)據(jù)屏蔽,則將未被屏蔽的外部數(shù)據(jù)寫入存儲陣列,同時將與被屏蔽的數(shù)據(jù)相應(yīng)的數(shù)據(jù)從存儲陣列中讀出,然后再將寫入的外部數(shù)據(jù)與讀出的數(shù)據(jù)合并,ECC編碼電路用此合并后的數(shù)據(jù)通過設(shè)定的規(guī)則產(chǎn)生相應(yīng)的監(jiān)督位,新的數(shù)據(jù)和監(jiān)督位被寫入存儲整列并完全代替之前存儲的信息;
[0010]3]由于并不存在數(shù)據(jù)屏蔽,所以外部數(shù)據(jù)直接寫入,ECC編碼電路用此外部數(shù)據(jù)通過設(shè)定的規(guī)則產(chǎn)生相應(yīng)的監(jiān)督位,新的數(shù)據(jù)和監(jiān)督位被寫入存儲整列并完全代替之前存儲的信息。
[0011]也可以不對外部數(shù)據(jù)進行是否存在數(shù)據(jù)屏蔽的判斷,直接進行下述步驟:
[0012]讀入存在數(shù)據(jù)屏蔽的外部數(shù)據(jù),將未被屏蔽的外部數(shù)據(jù)寫入存儲陣列,同時將與被屏蔽的數(shù)據(jù)相應(yīng)的數(shù)據(jù)從存儲陣列中讀出,然后再將寫入的外部數(shù)據(jù)與讀出的數(shù)據(jù)合并,ECC編碼電路用此合并后的數(shù)據(jù)通過設(shè)定的規(guī)則產(chǎn)生相應(yīng)的監(jiān)督位,新的數(shù)據(jù)和監(jiān)督位被寫入存儲整列并完全代替之前存儲的信息。
[0013]本發(fā)明的優(yōu)點在于:
[0014]該以讀代寫的存儲器糾錯方法解決了數(shù)據(jù)屏蔽對ECC的影響,可以復(fù)用存儲器已有的讀寫電路,只需加入DM對讀的控制。
【專利附圖】
【附圖說明】
[0015]圖1為現(xiàn)有ECC外部數(shù)據(jù)寫入流程圖;
[0016]圖2為現(xiàn)有ECC外部數(shù)據(jù)讀出流程圖;
[0017]圖3為現(xiàn)有帶數(shù)據(jù)屏蔽的ECC外部數(shù)據(jù)寫入流程圖;
[0018]圖4為本發(fā)明原理圖;
[0019]圖5為本發(fā)明參考圖3的原理圖。
【具體實施方式】
[0020]結(jié)合圖1,現(xiàn)有ECC編碼可按照下面的步驟進行:
[0021]首先,64位從外部來的數(shù)據(jù)被直接寫入(圖1的A);
[0022]其次,ECC編碼(encoding)電路用此64位外部數(shù)據(jù)通過一定的規(guī)則產(chǎn)生7位或者8位的監(jiān)督位(圖1的B);
[0023]再次,新的64位數(shù)據(jù)和7/8位監(jiān)督位被寫入存儲陣列并完全代替之前存儲的信息(圖1的C)。
[0024]結(jié)合圖2,現(xiàn)有ECC的解碼和糾正按照下面的步驟進行:
[0025]首先,64位數(shù)據(jù)和7/8位監(jiān)督位從存儲陣列讀出(圖2的C)。
[0026]其次,監(jiān)督位將通過一定的規(guī)則去解碼(decoding)判斷數(shù)據(jù)是否有錯,如果有錯是哪位有錯并去糾正(correction)錯誤的數(shù)據(jù)(圖2的B)。
[0027]再次,解碼后的數(shù)據(jù)被讀出(圖2的A)。
[0028]結(jié)合圖3,現(xiàn)有帶DM的ECC編碼按照下面的步驟進行,但目前在有DM的情況下,ECC的編碼不能正常工作:
[0029]首先,外部64位數(shù)據(jù)中有56位需要從外面而來(圖3的A),其余8位被DM,不寫入存儲陣列。
[0030]其次,監(jiān)督位仍由外部的64位數(shù)據(jù)產(chǎn)生(圖3的B)。
[0031]再次,在存儲陣列中,64位中的56位被寫入的外部數(shù)據(jù)代替,64位中其余的8位仍保留原有信息。此時的監(jiān)督位相對這64位數(shù)據(jù)來說是一個完全錯誤的監(jiān)督位(圖3的C)。
[0032]以下結(jié)合圖4及實施例對本發(fā)明進行詳述:
[0033]當(dāng)有DM發(fā)生時,可把外部數(shù)據(jù)分為兩種:一種是沒被屏蔽的,如圖4中的A ;—種是被屏蔽的,如圖4中的B。對于A來說,可以直接用來進行ECC的編碼,并被寫入存儲陣列中,如圖4中的C。對于被屏蔽的部分,不進行寫操作,而是進行讀操作,把相應(yīng)的數(shù)據(jù)從存儲陣列中讀出來,如圖4中的D,把數(shù)據(jù)A和數(shù)據(jù)D —起進行ECC編碼操作,編碼結(jié)果E送入存儲陣列。這樣可保證在同一個字線下存儲的數(shù)據(jù)和ECC編碼是一一對應(yīng)的,解決DM帶來的問題。
[0034]如圖5所示:
[0035]如果仍用圖3的例子,解決方法可以用圖5表示。其中56位外部數(shù)據(jù)A沒有被屏蔽,被寫入存儲陣列C ;8位外部數(shù)據(jù)B被屏蔽,從存儲陣列讀出相應(yīng)的8位數(shù)據(jù)D ;ECC由數(shù)據(jù)A和數(shù)據(jù)D編碼產(chǎn)生E并寫入存儲陣列。
【權(quán)利要求】
1.一種以讀代寫的存儲器糾錯方法,包括以下步驟: 1]讀入外部數(shù)據(jù),并判斷是否存在數(shù)據(jù)屏蔽,若存在數(shù)據(jù)屏蔽則進入步驟2處理,若不存在數(shù)據(jù)屏蔽則進入步驟3處理: 2]由于存在數(shù)據(jù)屏蔽,則將未被屏蔽的外部數(shù)據(jù)寫入存儲陣列,同時將與被屏蔽的數(shù)據(jù)相應(yīng)的數(shù)據(jù)從存儲陣列中讀出,然后再將寫入的外部數(shù)據(jù)與讀出的數(shù)據(jù)合并,ECC編碼電路用此合并后的數(shù)據(jù)通過設(shè)定的規(guī)則產(chǎn)生相應(yīng)的監(jiān)督位,新的數(shù)據(jù)和監(jiān)督位被寫入存儲整列并完全代替之前存儲的信息; 3]由于并不存在數(shù)據(jù)屏蔽,所以外部數(shù)據(jù)直接寫入,ECC編碼電路用此外部數(shù)據(jù)通過設(shè)定的規(guī)則產(chǎn)生相應(yīng)的監(jiān)督位,新的數(shù)據(jù)和監(jiān)督位被寫入存儲整列并完全代替之前存儲的信息。
2.一種以讀代寫的存儲器糾錯方法,包括以下步驟: 讀入存在數(shù)據(jù)屏蔽的外部數(shù)據(jù),將未被屏蔽的外部數(shù)據(jù)寫入存儲陣列,同時將與被屏蔽的數(shù)據(jù)相應(yīng)的數(shù)據(jù)從存儲陣列中讀出,然后再將寫入的外部數(shù)據(jù)與讀出的數(shù)據(jù)合并,ECC編碼電路用此合并后的數(shù)據(jù)通過設(shè)定的規(guī)則產(chǎn)生相應(yīng)的監(jiān)督位,新的數(shù)據(jù)和監(jiān)督位被寫入存儲整列并完全代替之前存儲的信息。
【文檔編號】G11C29/42GK103594120SQ201310537688
【公開日】2014年2月19日 申請日期:2013年10月31日 優(yōu)先權(quán)日:2013年10月31日
【發(fā)明者】亞歷山大 申請人:西安華芯半導(dǎo)體有限公司