本發(fā)明涉及一種具有糾錯(cuò)功能的存儲(chǔ)器以及一種存儲(chǔ)器糾錯(cuò)方法。
背景技術(shù):
ecc(errorcorrectioncode,糾錯(cuò)碼)通過(guò)在一定長(zhǎng)度數(shù)據(jù)位的基礎(chǔ)上增加監(jiān)督位來(lái)檢測(cè)和糾正出錯(cuò)的數(shù)據(jù)。具有糾錯(cuò)功能的存儲(chǔ)器的常規(guī)讀寫(xiě)過(guò)程如圖1和圖2所示,其中圖1示意性示出了寫(xiě)入過(guò)程。數(shù)據(jù)陣列1用于存儲(chǔ)數(shù)據(jù),ecc陣列2用于存儲(chǔ)ecc的監(jiān)督位。當(dāng)從系統(tǒng)將n位數(shù)據(jù)寫(xiě)入存儲(chǔ)器時(shí),將利用此n位數(shù)據(jù)通過(guò)ecc編碼模塊3生成m位監(jiān)督位,然后n位數(shù)據(jù)和m位監(jiān)督位一起寫(xiě)入相應(yīng)的存儲(chǔ)陣列。其中數(shù)據(jù)長(zhǎng)度n大于0,并小于等于存儲(chǔ)器進(jìn)行一次讀寫(xiě)操作的數(shù)據(jù)長(zhǎng)度。監(jiān)督位長(zhǎng)度m大于0,其值取決于選取的ecc算法。
圖2示意性示出了讀出過(guò)程。n位數(shù)據(jù)和m位監(jiān)督位被從相應(yīng)的存儲(chǔ)陣列中讀出,被放大之后被傳送到ecc解碼模塊4,ecc解碼模塊4可以對(duì)出錯(cuò)的數(shù)據(jù)進(jìn)行檢測(cè)和糾正,并且讀出糾正后的n位數(shù)據(jù)。
從圖1的寫(xiě)入過(guò)程可以知道,在ecc編碼模塊3生成m位監(jiān)督位時(shí),需要數(shù)據(jù)長(zhǎng)度為n的數(shù)據(jù)位,這是由所選取的ecc算法決定的。但對(duì)于存儲(chǔ)器來(lái)說(shuō),其有效的輸入數(shù)據(jù)的長(zhǎng)度不是一成不變的,例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器dram(dynamicrandomaccessmemory),其規(guī)范里就有規(guī)定,當(dāng)存在突發(fā)突變模式(burstchopmode)時(shí),其數(shù)據(jù)長(zhǎng)度就會(huì)改變,使得數(shù)據(jù)長(zhǎng)度小于n;或者對(duì)于不同數(shù)據(jù)長(zhǎng)度的結(jié)構(gòu),例如在x4,x8,x16等模式下,其數(shù)據(jù)長(zhǎng)度也會(huì)隨著外部控制而變化,使得數(shù)據(jù)長(zhǎng)度不等于n。但是一旦ecc算法選定,其對(duì)應(yīng)的ecc的編碼模塊所需要的數(shù)據(jù)長(zhǎng)度是一定的,如果數(shù)據(jù)長(zhǎng)度變化就不能順利生成ecc的監(jiān)督位。除非在這些可能遇到的所有限制條件里面找到一個(gè)最小的數(shù)據(jù)長(zhǎng)度,根據(jù)這個(gè)最小的數(shù)據(jù)長(zhǎng)度選擇ecc算法,這樣就能支持所有模式。如果這個(gè)最小的數(shù)據(jù)長(zhǎng)度是8,即使是對(duì)于最高效的漢明碼來(lái)說(shuō),最少也需要4位的監(jiān)督位,這會(huì)增加至少50%的存儲(chǔ)面積來(lái)存儲(chǔ)ecc的監(jiān)督位,這使得存儲(chǔ)器的成本大大增加,并降低了ecc算法選取的靈活性和高效性。
因此,需要提供一種兼容不同數(shù)據(jù)長(zhǎng)度的具有糾錯(cuò)功能的存儲(chǔ)器。
技術(shù)實(shí)現(xiàn)要素:
為此,在根據(jù)本發(fā)明的第一方面,提供了一種具有糾錯(cuò)功能的存儲(chǔ)器,包括:數(shù)據(jù)陣列、ecc陣列、標(biāo)志位陣列、ecc編碼模塊、ecc解碼模塊、標(biāo)志位生成模塊和標(biāo)志位檢測(cè)模塊,其中:該數(shù)據(jù)陣列被配置成存儲(chǔ)寫(xiě)入的數(shù)據(jù);該標(biāo)志位生成模塊被配置成在寫(xiě)入數(shù)據(jù)時(shí)響應(yīng)于影響寫(xiě)入的數(shù)據(jù)的長(zhǎng)度的外部控制信號(hào)生成標(biāo)志位和編碼使能信號(hào),該標(biāo)志位被存儲(chǔ)在該標(biāo)志位陣列中,該編碼使能信號(hào)用于控制該ecc編碼模塊的運(yùn)行;該ecc編碼模塊被配置成在該編碼使能信號(hào)有效時(shí)接收寫(xiě)入的數(shù)據(jù)并且根據(jù)其內(nèi)預(yù)先設(shè)置的ecc算法對(duì)寫(xiě)入的數(shù)據(jù)進(jìn)行編碼以生成監(jiān)督位;該ecc陣列被配置成存儲(chǔ)生成的監(jiān)督位;該標(biāo)志位檢測(cè)模塊被配置成在讀出數(shù)據(jù)時(shí)檢測(cè)該標(biāo)志位,并且響應(yīng)于該標(biāo)志位生成解碼使能信號(hào)用于控制該ecc解碼模塊的運(yùn)行;該ecc解碼模塊被配置成在該解碼使能信號(hào)有效時(shí)利用來(lái)自該ecc陣列的監(jiān)督位和來(lái)自數(shù)據(jù)陣列的數(shù)據(jù)檢測(cè)和糾正錯(cuò)誤的數(shù)據(jù)并且輸出經(jīng)糾正的數(shù)據(jù)。
根據(jù)一個(gè)優(yōu)選實(shí)施方案,該外部控制信號(hào)是與x4、x8、x16模式或者x4、x8以及x16模式之一與突發(fā)突變模式的組合模式對(duì)應(yīng)的信號(hào)。
根據(jù)一個(gè)優(yōu)選實(shí)施方案,當(dāng)寫(xiě)入的數(shù)據(jù)的長(zhǎng)度與ecc算法所需要的數(shù)據(jù)長(zhǎng)度一致時(shí),所生成的編碼使能信號(hào)是一個(gè)使能ecc編碼模塊運(yùn)行的編碼使能信號(hào)。
根據(jù)一個(gè)優(yōu)選實(shí)施方案,當(dāng)寫(xiě)入的數(shù)據(jù)的長(zhǎng)度與ecc算法所需要的數(shù)據(jù)長(zhǎng)度不一致時(shí),所生成的編碼使能信號(hào)是一個(gè)禁止ecc編碼模塊運(yùn)行的編碼使能信號(hào)。
根據(jù)一個(gè)優(yōu)選實(shí)施方案,在讀出數(shù)據(jù)時(shí),若標(biāo)志位所指示地址存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度與ecc算法所需要的數(shù)據(jù)長(zhǎng)度一致時(shí),所生成的解碼使能信號(hào)是一個(gè)使能ecc解碼模塊運(yùn)行的解碼使能信號(hào)。
根據(jù)一個(gè)優(yōu)選實(shí)施方案,在讀出數(shù)據(jù)時(shí),若標(biāo)志位所指示地址存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度與ecc算法所需要的數(shù)據(jù)長(zhǎng)度不一致時(shí),所生成的解碼使能信號(hào)是一個(gè)禁止ecc解碼模塊運(yùn)行的解碼使能信號(hào)。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種存儲(chǔ)器糾錯(cuò)方法,該存儲(chǔ)器包括數(shù)據(jù)陣列、ecc陣列、標(biāo)志位陣列、ecc編碼模塊、ecc解碼模塊、標(biāo)志位生成模塊和標(biāo)志位檢測(cè)模塊,該存儲(chǔ)器糾錯(cuò)方法包括:在寫(xiě)入數(shù)據(jù)時(shí),將寫(xiě)入的數(shù)據(jù)存儲(chǔ)在該數(shù)據(jù)陣列內(nèi)并且響應(yīng)于影響寫(xiě)入的數(shù)據(jù)的長(zhǎng)度的外部控制信號(hào)由該標(biāo)志位生成模塊生成標(biāo)志位和編碼使能信號(hào),在該標(biāo)志位陣列中存儲(chǔ)生成的該標(biāo)志位并且根據(jù)該編碼使能信號(hào)控制該eec編碼模塊的ecc編碼操作,其中如果該編碼使能信號(hào)有效,則根據(jù)預(yù)先設(shè)置的ecc算法對(duì)寫(xiě)入的數(shù)據(jù)進(jìn)行ecc編碼并且存儲(chǔ)通過(guò)ecc編碼產(chǎn)生的監(jiān)督位;
在讀出數(shù)據(jù)時(shí),該標(biāo)志位檢測(cè)模塊檢測(cè)該標(biāo)志位并且響應(yīng)于該標(biāo)志位生成解碼使能信號(hào)以控制ecc解碼操作,其中如果該解碼使能信號(hào)有效時(shí),則進(jìn)行ecc解碼并且讀出數(shù)據(jù),如果該解碼使能信號(hào)無(wú)效,則不進(jìn)行ecc解碼并且讀出數(shù)據(jù)。
根據(jù)一個(gè)優(yōu)選實(shí)施方案,該外部控制信號(hào)是與x4、x8、x16模式或者x4、x8、x16模式之一與突發(fā)突變模式的組合模式對(duì)應(yīng)的信號(hào)。
根據(jù)一個(gè)優(yōu)選實(shí)施方案,在寫(xiě)入數(shù)據(jù)時(shí),當(dāng)寫(xiě)入的數(shù)據(jù)的長(zhǎng)度與ecc算法所需要的數(shù)據(jù)長(zhǎng)度一致時(shí),所生成的編碼使能信號(hào)是一個(gè)使能ecc編碼模塊運(yùn)行的編碼使能信號(hào)。
根據(jù)一個(gè)優(yōu)選實(shí)施方案,在寫(xiě)入數(shù)據(jù)時(shí),當(dāng)寫(xiě)入的數(shù)據(jù)的長(zhǎng)度與ecc算法所需要的數(shù)據(jù)長(zhǎng)度不一致時(shí),所生成的編碼使能信號(hào)是一個(gè)禁止ecc編碼模塊運(yùn)行的編碼使能信號(hào)。
根據(jù)一個(gè)優(yōu)選實(shí)施方案,在讀出數(shù)據(jù)時(shí),若標(biāo)志位所指示地址存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度與ecc算法所需要的數(shù)據(jù)長(zhǎng)度一致時(shí),所生成的解碼使能信號(hào)是一個(gè)使能ecc解碼模塊運(yùn)行的解碼使能信號(hào)。
根據(jù)一個(gè)優(yōu)選實(shí)施方案,在讀出數(shù)據(jù)時(shí),若標(biāo)志位所指示地址存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度與ecc算法所需要的數(shù)據(jù)長(zhǎng)度不一致時(shí),所生成的解碼使能信號(hào)是一個(gè)禁止ecc解碼模塊運(yùn)行的解碼使能信號(hào)。
根據(jù)本發(fā)明所述的存儲(chǔ)器和存儲(chǔ)器糾錯(cuò)方法至少具有以下優(yōu)點(diǎn):適用于任何ecc算法,增加了ecc算法選取的靈活性和高效性;可兼容不同數(shù)據(jù)長(zhǎng)度;不受突發(fā)突變模式、x4、x8和x16模式的影響;可以減少功耗;以及不會(huì)影響到常規(guī)的寫(xiě)入操作和讀出操作的功能和時(shí)序。
附圖說(shuō)明
本發(fā)明的優(yōu)點(diǎn)和特征通過(guò)如下的參照附圖描述的實(shí)施方案會(huì)變得明顯,在附圖中:
圖1示意性示出了存儲(chǔ)器的寫(xiě)入過(guò)程;
圖2示意性示出了存儲(chǔ)器的讀出過(guò)程;
圖3示意性示出了根據(jù)本發(fā)明的具有糾錯(cuò)功能的存儲(chǔ)器的寫(xiě)入過(guò)程;以及
圖4示意性示出了根據(jù)本發(fā)明的具有糾錯(cuò)功能的存儲(chǔ)器的讀出過(guò)程。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅是為了便于更好地理解本發(fā)明,而并非限制本發(fā)明。
現(xiàn)在將參考圖3和圖4詳細(xì)描述本發(fā)明的具有糾錯(cuò)功能的存儲(chǔ)器。該存儲(chǔ)器總體包括數(shù)據(jù)陣列1、ecc陣列2、ecc編碼模塊3、ecc解碼模塊4、標(biāo)志位生成模塊5、標(biāo)志位陣列6和標(biāo)志位檢測(cè)模塊7。
根據(jù)本發(fā)明,數(shù)據(jù)陣列1被配置成存儲(chǔ)寫(xiě)入的數(shù)據(jù)。該標(biāo)志位生成模塊5被配置成在寫(xiě)入數(shù)據(jù)時(shí)響應(yīng)于影響寫(xiě)入的數(shù)據(jù)的長(zhǎng)度的外部控制信號(hào)(例如,與x4、x8、x16模式或者x4、x8和x16模式之一與bc模式的組合模式對(duì)應(yīng)的外部控制信號(hào))生成標(biāo)志位和編碼使能信號(hào)en,該標(biāo)志位被存儲(chǔ)在該標(biāo)志位陣列6中,該編碼使能信號(hào)en用于控制ecc編碼模塊3的運(yùn)行。ecc編碼模塊3被配置成在該編碼使能信號(hào)en有效時(shí)接收寫(xiě)入的數(shù)據(jù)并且根據(jù)其內(nèi)預(yù)先設(shè)置的ecc算法對(duì)寫(xiě)入的數(shù)據(jù)進(jìn)行編碼以生成監(jiān)督位,在編碼使能信號(hào)en無(wú)效時(shí)不進(jìn)行ecc編碼。ecc陣列2被配置成存儲(chǔ)生成的監(jiān)督位。
標(biāo)志位檢測(cè)模塊7被配置成在讀出數(shù)據(jù)時(shí)檢測(cè)該標(biāo)志位并且響應(yīng)于該標(biāo)志位生成解碼使能信號(hào)dn用于控制ecc解碼模塊4的運(yùn)行。ecc解碼模塊4被配置成在該解碼使能信號(hào)dn有效時(shí)利用來(lái)自該ecc陣列2的監(jiān)督位和來(lái)自數(shù)據(jù)陣列1的數(shù)據(jù)檢測(cè)和糾正錯(cuò)誤的數(shù)據(jù)并且輸出經(jīng)糾正的數(shù)據(jù)。
再次參考圖3,在進(jìn)行寫(xiě)入操作(也就是ecc編碼操作)時(shí),標(biāo)志位生成模塊5被用來(lái)生成標(biāo)志位。標(biāo)志位生成模塊5由突發(fā)突變(bc)、x4、x8和x16以及其它可以影響數(shù)據(jù)長(zhǎng)度的外部控制信號(hào)(未示出)控制。當(dāng)從系統(tǒng)寫(xiě)入的數(shù)據(jù)a的長(zhǎng)度與ecc算法所需要的數(shù)據(jù)長(zhǎng)度n一致時(shí)(即,當(dāng)外部控制信號(hào)的組合使得數(shù)據(jù)a的長(zhǎng)度為n時(shí)),標(biāo)志位生成模塊5生成一個(gè)標(biāo)志位(例如‘0’)和一個(gè)使能ecc編碼模塊3運(yùn)行的編碼使能信號(hào)en(即:該編碼使能信號(hào)有效),并且通過(guò)該編碼使能信號(hào)en使能ecc編碼模塊3運(yùn)行,ecc編碼模塊3將生成m位的ecc監(jiān)督位并將該監(jiān)督位寫(xiě)入相應(yīng)的ecc陣列2,如圖3中的地址0所示。
當(dāng)從系統(tǒng)寫(xiě)入的數(shù)據(jù)a的長(zhǎng)度與ecc算法所需要的數(shù)據(jù)長(zhǎng)度n不一致時(shí)(即,當(dāng)外部控制信號(hào)的組合使得數(shù)據(jù)a的長(zhǎng)度不為n時(shí)),標(biāo)志位生成模塊3生成標(biāo)志位(例如‘1’)和一個(gè)禁止ecc編碼模塊3運(yùn)行的編碼使能信號(hào)en(即:該編碼使能信號(hào)無(wú)效),并且通過(guò)該編碼使能信號(hào)en禁止ecc編碼模塊3運(yùn)行,ecc編碼模塊3將不生成ecc監(jiān)督位,這樣可以減少功耗,如圖3中的地址1和地址2所示。其中地址1中k1=n/2,地址2中k2=3*n/4,其中k1和k2表示數(shù)據(jù)的長(zhǎng)度。
再次參考圖4,在進(jìn)行讀出操作(也就是ecc解碼操作)時(shí),標(biāo)志位檢測(cè)模塊7被用來(lái)檢測(cè)標(biāo)志位陣列6存儲(chǔ)的標(biāo)志位。
若標(biāo)志位指示某個(gè)地址存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度在寫(xiě)入時(shí)為n,如地址0所示,例如標(biāo)志位為‘0’指示地址0存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度在寫(xiě)入時(shí)為n,此時(shí)標(biāo)志位檢測(cè)模塊7生成的解碼使能信號(hào)dn(即:該解碼使能信號(hào)有效)可以使能ecc解碼模塊4檢測(cè)和糾正數(shù)據(jù)a的錯(cuò)誤。
若標(biāo)志位指示某個(gè)地址存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度在寫(xiě)入時(shí)不為n,如地址1和2所示,其中地址1表示在寫(xiě)入時(shí)僅k1(k1=n/2)位數(shù)據(jù)被寫(xiě)入地址1(換言之,寫(xiě)入之后,地址1中的n位數(shù)據(jù)中存在k1位有效數(shù)據(jù)),地址2表示在寫(xiě)入時(shí)僅k2(k2=3*n/4)位數(shù)據(jù)被寫(xiě)入地址2(換言之,寫(xiě)入之后,地址2中的n位數(shù)據(jù)中存在k2位有效數(shù)據(jù)),標(biāo)志位為‘1’指示地址(諸如地址1或地址2)存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度在寫(xiě)入時(shí)不為n,換言之,指示該地址(諸如地址1或地址2)中存儲(chǔ)的數(shù)據(jù)在寫(xiě)入時(shí)沒(méi)有產(chǎn)生監(jiān)督位,此時(shí)標(biāo)志位檢測(cè)模塊7生成的解碼使能信號(hào)dn可以禁止ecc解碼模塊4運(yùn)行(即:該解碼使能信號(hào)無(wú)效),不進(jìn)行ecc解碼操作。
需要說(shuō)明的是,上面所提到的地址0、地址1和地址2僅是為了指示不同的地址,不是存儲(chǔ)器的真正的地址0、1和2。與n不一致的數(shù)據(jù)長(zhǎng)度也不僅限于k1=n/2和k2=3*n/4兩種,任何與n不一致的數(shù)據(jù)長(zhǎng)度均適用。
對(duì)本發(fā)明的以上描述,并不旨在是窮舉性的或限于所公開(kāi)的確切形式。盡管出于例示目的在本文中描述了本發(fā)明的具體實(shí)施方案和實(shí)施例,但是在不偏離本發(fā)明的精神和范圍的前提下,還可能有多種等同改型。