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