本發(fā)明涉及一種存儲(chǔ)器架構(gòu),且特別涉及一種具有糾錯(cuò)碼功能的存儲(chǔ)器架構(gòu)。
背景技術(shù):
對(duì)于存儲(chǔ)器裝置的基本架構(gòu),其包含記憶胞陣列以及多種外圍電路以存取記憶胞陣列的記憶胞。記憶胞陣列是存儲(chǔ)數(shù)據(jù)的核心部分。然而,存儲(chǔ)于記憶胞陣列中的數(shù)據(jù)可能有錯(cuò)誤,其數(shù)據(jù)的一個(gè)位可能會(huì)從原本要寫(xiě)入的位被翻轉(zhuǎn)。當(dāng)數(shù)據(jù)對(duì)記憶胞陣列要被寫(xiě)入或是讀出時(shí),為了修正在記憶胞陣列中的錯(cuò)誤位,糾錯(cuò)碼(error-correctingcode,ecc)電路會(huì)被使用,根據(jù)奇偶(parity)校驗(yàn)以檢測(cè)錯(cuò)誤位接著修正此錯(cuò)誤位。
多種演算方法可以被使用在ecc電路。對(duì)于其中的一種演算方法,其是以校驗(yàn)例如32位的數(shù)據(jù)組中的“1”的數(shù)量為偶數(shù)為根據(jù)。然而當(dāng)記憶胞陣列的記憶胞原始數(shù)據(jù)都是“1”,例如是ffff-ffff時(shí),其中一個(gè)字是由四個(gè)位構(gòu)成,一個(gè)“f”代表“1111”的四個(gè)位,則ecc電路可能會(huì)改變初始數(shù)據(jù)。
ecc電路對(duì)數(shù)據(jù)“ffff-ffff”所造成的錯(cuò)誤如下。舉一例,對(duì)于具有32位i/o的ecc電路,其會(huì)有六個(gè)修正碼,或是位。當(dāng)數(shù)據(jù)“ffff-ffff”的32位輸入到ecc電路進(jìn)行加密(encryption)時(shí),經(jīng)過(guò)ecc加密后的數(shù)據(jù)總共會(huì)具有38位,其中已包含“011000”的六位而得到“3f-ffff-ffd8”,其會(huì)被存儲(chǔ)到記憶胞陣列。然后,“3f-ffff-ffd8”的數(shù)據(jù)從記憶胞陣列被讀出。在實(shí)際輸出前,“3f-ffff-ffd8”的數(shù)據(jù)會(huì)進(jìn)入ecc電路進(jìn)行解密(decryption),以移除ecc而得到32位的“ffff-ffff”的輸出數(shù)據(jù)。然而,存儲(chǔ)器剛出廠時(shí),從記憶胞陣列被讀出的數(shù)據(jù)是“3f-ffff-ffff”,而不是“3f-ffff-ffd8”。這會(huì)造成第一次讀出的是失敗。這種情況特別可能存在于初始數(shù)據(jù)為“ffff-ffff”時(shí)。
如何有效解決上述的議題,對(duì)于ecc電路的設(shè)計(jì)是需要被考慮的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供具有ecc功能的存儲(chǔ)器架構(gòu),其中ecc功能可以維持其功能,但是對(duì)于輸入到ecc電路的數(shù)據(jù)會(huì)被反相,而從ecc電路輸出的數(shù)據(jù)也會(huì)被反相。
在一實(shí)施例,本發(fā)明提供一種具有糾錯(cuò)碼功能的存儲(chǔ)器架構(gòu)。該存儲(chǔ)器架構(gòu)包括記憶胞陣列,用以存儲(chǔ)多位的數(shù)據(jù)。糾錯(cuò)碼(ecc)電路,用以對(duì)具有糾錯(cuò)碼的通過(guò)數(shù)據(jù)加密或解密。第一控制電路,連接于該ecc電路與該記憶胞陣列之間。第二控制電路,連接于該ecc電路與數(shù)據(jù)輸入/輸出(i/o)端之間。當(dāng)該i/o端的輸入數(shù)據(jù)要被寫(xiě)入到該記憶胞陣列時(shí),該第二控制電路在該輸入數(shù)據(jù)進(jìn)入該ecc電路進(jìn)行加密之前對(duì)該輸入數(shù)據(jù)反相,以及該第一控制電路對(duì)該ecc電路的輸出反相,而寫(xiě)入到該記憶胞陣列。當(dāng)該記憶胞陣列的輸出數(shù)據(jù)要被讀出時(shí),該輸出數(shù)據(jù)在進(jìn)入該ecc電路進(jìn)行解密之前由該第一控制電路反相,以及該第二控制電路對(duì)該ecc電路的輸出反相,而當(dāng)作讀出數(shù)據(jù)。
在一實(shí)施例,對(duì)于所述的存儲(chǔ)器架構(gòu),該ecc電路是漢明碼(hammingcode)ecc電路。
在另一實(shí)施例,對(duì)于所述的存儲(chǔ)器架構(gòu),該輸入數(shù)據(jù)包含一字節(jié),以及該多個(gè)位被分成多個(gè)群,該多個(gè)群是兩兩相交,且該ecc電路提供多個(gè)奇偶位以對(duì)每一個(gè)該群修正使得具有“1”的位的總數(shù)量為偶數(shù)。
在另一實(shí)施例,對(duì)于所述的存儲(chǔ)器架構(gòu),該ecc電路包含加密電路與解密電路,以分別構(gòu)成加密路徑與解密路徑。
在另一實(shí)施例,對(duì)于所述的存儲(chǔ)器架構(gòu),該第一控制電路在分別的該加密電路與該解密電路中包含第一反相器與第二反相器,其中該第一反相器對(duì)該ecc電路的該輸出反相以寫(xiě)入到該記憶胞陣列,以及該第二反相器對(duì)從該記憶胞陣列的該輸出數(shù)據(jù)反相以進(jìn)入到該ecc電路進(jìn)行解密。該第二控制電路在分別的該加密電路與該解密電路中包含第三反相器與第四反相器,其中該第三反相器對(duì)該輸入數(shù)據(jù)反相以進(jìn)入到該ecc電路進(jìn)行加密,以及該第四反相器對(duì)經(jīng)該ecc電路解密后的該輸出反相以提供該讀出數(shù)據(jù)。
在另一實(shí)施例,對(duì)于所述的存儲(chǔ)器架構(gòu),該加密路徑與該解密路徑被多功處理,如此該第一到第四反相器的至少兩個(gè)是共用相同的一個(gè)反相器。
在另一實(shí)施例,本發(fā)明提供一種存儲(chǔ)器裝置的操作方法,其中該存儲(chǔ)器裝置包含記憶胞陣列、糾錯(cuò)碼(ecc)電路、第一控制電路及第二控制電路。該ecc電路用以對(duì)具有糾錯(cuò)碼的通過(guò)數(shù)據(jù)加密或解密。該操作方法包括:連接該第一控制電路在該ecc電路與該記憶胞陣列之間;連接該第二控制電路在該ecc電路與數(shù)據(jù)輸入/輸出(i/o)端之間;當(dāng)從該i/o端來(lái)的一字節(jié)的輸入數(shù)據(jù)要被寫(xiě)入到該記憶胞陣列時(shí)進(jìn)行程序模式,該第二控制電路在該輸入數(shù)據(jù)進(jìn)入該ecc電路進(jìn)行加密之前對(duì)該輸入數(shù)據(jù)反相,以及該第一控制電路對(duì)該ecc電路的輸出反相,而寫(xiě)入到該記憶胞陣列;以及當(dāng)該記憶胞陣列的輸出數(shù)據(jù)要被讀出時(shí)進(jìn)行讀出模式,對(duì)該輸出數(shù)據(jù)在進(jìn)入該ecc電路進(jìn)行解密之前由該第一控制電路反相,以及該第二控制電路對(duì)該ecc電路的輸出反相,而當(dāng)作讀出數(shù)據(jù)。
在另一實(shí)施例,對(duì)于所述的操作方法,該ecc電路是漢明碼(hammingcode)ecc電路,以進(jìn)行加密處理與解密處理。
在另一實(shí)施例,對(duì)于所述的操作方法,該輸入數(shù)據(jù)包含一字節(jié),以及該多個(gè)位被分成多個(gè)群,該多個(gè)群是兩兩相交,且該ecc電路提供多個(gè)奇偶位以對(duì)每一個(gè)該群修正使得具有“1”的位的總數(shù)量為偶數(shù)。
在另一實(shí)施例,對(duì)于所述的操作方法,其還包括提供具有加密電路與解密電路的該ecc電路,以分別構(gòu)成加密路徑與解密路徑。
在另一實(shí)施例,對(duì)于所述的操作方法,其還包括提供在該加密電路與該解密電路中分別具有第一反相器與第二反相器的該第一控制電路,其中該第一反相器對(duì)該ecc電路的該輸出反相以寫(xiě)入到該記憶胞陣列,以及該第二反相器對(duì)從該記憶胞陣列的該輸出數(shù)據(jù)反相以進(jìn)入到該ecc電路進(jìn)行解密;更提供在該加密電路與該解密電路中分別具有第三反相器與第四反相器的該第二控制電路,其中該第三反相器對(duì)該輸入數(shù)據(jù)反相以進(jìn)入到該ecc電路進(jìn)行加密,以及該第四反相器對(duì)經(jīng)該ecc電路解密后的該輸出反相以提供該讀出數(shù)據(jù)。
在另一實(shí)施例,對(duì)于所述的操作方法,其還包括對(duì)該加密路徑與該解密路徑進(jìn)行多功處理,如此該第一到第四反相器的至少兩個(gè)是共用相同的一個(gè)反相器。
在另一實(shí)施例,本發(fā)明提供一種操作存儲(chǔ)器裝置的方法。此方法包括:在程序模式下接收輸入數(shù)據(jù);藉由控制電路對(duì)該輸入數(shù)據(jù)反相,成為第一反相數(shù)據(jù);提供糾錯(cuò)碼(ecc)電路,以接收該第一反相數(shù)據(jù)以進(jìn)行加密與輸出加密數(shù)據(jù);藉由該控制電路對(duì)該加密數(shù)據(jù)反相及寫(xiě)入到記憶胞陣列;在讀出模式下使用該控制電路,以對(duì)從該記憶胞陣列讀出的輸出數(shù)據(jù)反相成第二反相數(shù)據(jù);藉由該ecc電路對(duì)該第二反相數(shù)據(jù)解密;以及藉由該控制電路,對(duì)該解密數(shù)據(jù)反相成為讀出數(shù)據(jù)。
在另一實(shí)施例,對(duì)于所述的方法,該控制電路對(duì)應(yīng)加密與解密包含多個(gè)反相器,以對(duì)通過(guò)數(shù)據(jù)反相。
在另一實(shí)施例,對(duì)于所述的方法,其還包括對(duì)該加密路徑與該解密路徑進(jìn)行多功處理,如此該第一到第四反相器的至少兩個(gè)是共用相同的一個(gè)反相器。
在另一實(shí)施例,對(duì)于所述的方法,其中該輸入數(shù)據(jù)包含一字節(jié),以及該多個(gè)位被分成多個(gè)群,該多個(gè)群是兩兩相交,且該ecc電路提供多個(gè)奇偶位以對(duì)每一個(gè)該群修正使得具有“1”的位的總數(shù)量為偶數(shù)。
附圖說(shuō)明
包含附圖是以進(jìn)一步理解本發(fā)明,且附圖并入本說(shuō)明書(shū)中并且構(gòu)成本說(shuō)明書(shū)的一部分。附圖說(shuō)明本發(fā)明的實(shí)施例,并且與描述一起用于解釋本發(fā)明的原理。
圖1依據(jù)本發(fā)明一實(shí)施例,繪示存儲(chǔ)器架構(gòu)示意圖。
圖2依據(jù)本發(fā)明一實(shí)施例,繪示操作ecc的電路架構(gòu)示意圖。
圖3依據(jù)本發(fā)明一實(shí)施例,繪示ecc產(chǎn)生奇偶位的機(jī)制示意圖。
圖4依據(jù)本發(fā)明一實(shí)施例,繪示ecc修正錯(cuò)誤位的機(jī)制示意圖。
圖5依據(jù)本發(fā)明一實(shí)施例,繪示ecc操作加密的機(jī)制示意圖。
圖6依據(jù)本發(fā)明一實(shí)施例,繪示ecc操作解密的機(jī)制示意圖。
附圖標(biāo)號(hào)說(shuō)明
50:存儲(chǔ)器裝置
100:記憶胞陣列
102:驅(qū)動(dòng)器
104:y電路/感應(yīng)放大器
106:感應(yīng)放大器控制電路
108:控制器
110:ecc電路
112:ecc電路
112a:加密路徑
112b:解密路徑
113:模擬電路
114:控制電路
114a、114b:反相器
115:電源開(kāi)關(guān)
116:控制電路
116a、116b:反相器
117:高電壓系統(tǒng)(電荷泵)
具體實(shí)施方式
以下舉一些實(shí)施例配合附圖來(lái)較詳細(xì)說(shuō)明本發(fā)明。在附圖中相同的構(gòu)件符號(hào)代表相同或相似的構(gòu)件。
本發(fā)明提出一種ecc操作,其可以避免ecc的錯(cuò)誤,其特別可能發(fā)生于存取存儲(chǔ)在記憶胞陣列的初始數(shù)據(jù)。此ecc可以維持其功能,但是對(duì)于輸入到ecc電路的數(shù)據(jù)會(huì)被反相,而從ecc電路輸出的數(shù)據(jù)也會(huì)被反相。
提供的多個(gè)實(shí)施例是用來(lái)描述本發(fā)明,但是不是用來(lái)限制本發(fā)明。
圖1依據(jù)本發(fā)明一實(shí)施例,繪示存儲(chǔ)器架構(gòu)示意圖。參閱圖1,存儲(chǔ)器裝置50一般包括記憶胞陣列100及多種外圍元件來(lái)控制與存取記憶胞陣列100。這些外圍元件于一實(shí)施例可以包括驅(qū)動(dòng)器102、y電路/感應(yīng)放大器104、感應(yīng)放大器控制電路(sactl)106、控制器(ctl)108、ecc電路110、模擬電路113、電源開(kāi)關(guān)115以及高電壓系統(tǒng)117。多個(gè)終端點(diǎn)例如控制總線、地址總線及輸入/輸出(i/o)總線等,也被提供來(lái)與外部的主機(jī)互通以存取記憶胞陣列100。存儲(chǔ)器裝置50的基本架構(gòu)與操作是本技術(shù)領(lǐng)域一般可知的技術(shù),于此不予詳細(xì)描述。
然而,本發(fā)明是關(guān)于ecc電路110的操作。以下的描述將針對(duì)本發(fā)明提出的ecc電路110的功能進(jìn)行描述。
要被寫(xiě)入記憶胞陣列100而存儲(chǔ)的輸入數(shù)據(jù)din,會(huì)先通過(guò)ecc電路110以ecc來(lái)加密,其中ecc電路110可以產(chǎn)生修正碼,其在之后的數(shù)據(jù)有發(fā)生錯(cuò)誤位時(shí)就可以修正此錯(cuò)誤位。ecc電路110于是輸出此數(shù)據(jù)data,其是實(shí)際被寫(xiě)入記憶胞陣列100而存儲(chǔ)。另一方面,當(dāng)輸出數(shù)據(jù)out從記憶胞陣列100要被外部主機(jī)讀出時(shí),輸出數(shù)據(jù)out也會(huì)進(jìn)入ecc電路110進(jìn)行解密,接著輸出當(dāng)作讀取數(shù)據(jù)pdout。
本發(fā)明所提出具有修改結(jié)構(gòu)的ecc電路110,可以避免當(dāng)數(shù)據(jù)的值是ffff-ffff時(shí)所可能發(fā)生的錯(cuò)誤。圖2依據(jù)本發(fā)明一實(shí)施例,繪示操作ecc的電路架構(gòu)示意圖。
參閱圖2,ecc電路110是在i/o端與記憶胞陣列100之間的中間元件。本發(fā)明不需要修改原始的ecc電路112。然而,本發(fā)明加入控制電路,其在一范例中為了方便配置可以包括第一控制電路114與第二控制電路116。ecc電路112可以被分為加密路徑(en)112a與解密路徑(de)112b。如此,如本發(fā)明所提出的ecc電路110具有第一控制電路114連接于ecc電路112與記憶胞陣列100之間,且第二控制電路116連接于ecc電路112與數(shù)據(jù)i/o端。
當(dāng)從數(shù)據(jù)i/o端來(lái)的輸入數(shù)據(jù)din要被寫(xiě)入到記憶胞陣列100,第二控制電路116在輸入數(shù)據(jù)din要通過(guò)加密路徑112a進(jìn)入ecc電路112進(jìn)行加密之前,將輸入數(shù)據(jù)din反相,而第一控制電路114對(duì)從ecc電路112的輸出反相成為數(shù)據(jù),標(biāo)示為data,而通過(guò)在y電路/感應(yīng)放大器104中的寫(xiě)入電路而寫(xiě)入到記憶胞陣列100。當(dāng)如標(biāo)示為out的輸出數(shù)據(jù)從記憶胞陣列100被在y電路/感應(yīng)放大器104中的感應(yīng)放大器讀出。輸出數(shù)據(jù)out在通過(guò)解密路徑112b進(jìn)入ecc電路112進(jìn)行解密之前被第一控制電路114反相,并且第二控制電路116對(duì)從ecc電路112的輸出反相而視為讀出數(shù)據(jù),如pdout的標(biāo)示。
更詳細(xì)地,第一控制電路114包括第一反相器114a與第二反相器114b分別在加密路徑112a與解密路徑112b中,其中第一反相器114a對(duì)從ecc電路112的輸出反相以寫(xiě)入到記憶胞陣列100,以及第二反相器114b對(duì)從記憶胞陣列100讀出的輸出數(shù)據(jù)反相以進(jìn)入到ecc電路112進(jìn)行解密。另一方面,第二控制電路116包含第三反相器116a與第四反相器116b,分別在加密路徑112a與解密路徑112b中,其中第三反相器116a對(duì)輸入數(shù)據(jù)din反相,以進(jìn)入ecc電路112進(jìn)行解密,且第四反相器116b對(duì)從ecc電路112經(jīng)解密后的輸出反相,以提供讀出數(shù)據(jù)pdout。
在描述本發(fā)明所提出的ecc電路110的效果之前,先提供ecc的操作范例。圖3依據(jù)本發(fā)明一實(shí)施例,繪示ecc產(chǎn)生奇偶位的機(jī)制示意圖。參閱圖3,以傳送由四個(gè)位所構(gòu)成的字節(jié)為例,例如是1101,以及三個(gè)位被加入當(dāng)作奇偶位。總共7個(gè)位被傳送,其中這7個(gè)位被編號(hào)成1到7的碼號(hào)。此7個(gè)位例如被分成三群a、b、c。這些群是兩兩相交,其關(guān)系如左上所示。其結(jié)果,碼號(hào)1-7的碼值是1101010,其中前面四個(gè)位代表數(shù)據(jù)。在ecc加密中,每一個(gè)群有四個(gè)位且需要符合“1”的總數(shù)量為偶數(shù)。
圖4依據(jù)本發(fā)明一實(shí)施例,繪示ecc修正錯(cuò)誤位的機(jī)制示意圖。參閱圖4,要被傳送的數(shù)據(jù)需要是1101010,如左上所示。然而,存儲(chǔ)在記憶胞陣列100的數(shù)據(jù)可能是1101000。ecc電路112,例如是(7,4)漢明碼(hammingcode)電路,可以將1101000的數(shù)據(jù)解密為1101010。這是因?yàn)槿篵有奇數(shù)個(gè)位是“1”,因此在碼號(hào)6的奇偶位會(huì)被修正為“1”。于此,依照在(7,4)漢明碼(ha電路的操作,位的總數(shù)量為7,但是僅有四個(gè)位是原始要被傳送。
接著描述本發(fā)明提出的ecc電路110的操作機(jī)制。圖5依據(jù)本發(fā)明一實(shí)施例,繪示ecc操作加密的機(jī)制示意圖。參閱圖5,對(duì)于要加密的一個(gè)特殊情形,其輸入數(shù)據(jù)din的所有位剛好全都是“1”,例如32位的ffff-ffff。反相器116a將數(shù)據(jù)反相成反相數(shù)據(jù)dinb,其是0000-0000,于是進(jìn)入到ecc電路112的加密路徑112a。因?yàn)閿?shù)據(jù)是“0”,其仍符合位為“1”的數(shù)量是偶數(shù)的條件。奇偶位會(huì)維持“0”,而不必加入“1”的位。于是,38個(gè)位都是“0”的數(shù)據(jù)被再次被反相器114a反相成為3f-fff-fff的數(shù)據(jù)data,其要被寫(xiě)入記憶胞陣列100。
圖6依據(jù)本發(fā)明一實(shí)施例,繪示ecc操作解密的機(jī)制示意圖。參閱圖6,數(shù)據(jù)從記憶胞陣列100被讀出以進(jìn)行解密。于是,由記憶胞陣列100讀出的輸出數(shù)據(jù)out的所有38位都是“1”,如3f-ffff-ffff。再一次,反相器114b將數(shù)據(jù)out反相成數(shù)據(jù)outb,其接著進(jìn)入到ecc電路112的解密路徑112b。于此,數(shù)據(jù)outb的所有位都是“0”,如此ecc電路112不會(huì)改變數(shù)據(jù)而將為“0”的所有位輸出。再一次,反相器116b將“0”的所有位反相成“1”,當(dāng)作讀出數(shù)據(jù)pdout,其在移除ecc后會(huì)維持原始的ffff-ffff的形式。
需要注意的是,多個(gè)反相器被用來(lái)描述其機(jī)制。然而,因?yàn)榉聪嗥鞫际窍嗤墓δ埽绱诉@些反相器可以共用相同的一個(gè)反相器。換句話說(shuō),通過(guò)路徑的安排以及使用多功器,第一與第三反相器可以共用相同的一個(gè)反相器,而第二與第四反相器可以共用相同的一個(gè)反相器。甚至,第一到第四反相器也可以共用相同的一個(gè)反相器,其中路徑的選擇機(jī)制需要被加入。換句話說(shuō),加密路徑112a與解密路徑112b的每一個(gè)會(huì)涉及兩次的反相操作,其中的硬件的安排不必限制于前面所舉的實(shí)施例。
此ecc電路可以避免當(dāng)初始數(shù)據(jù)的位被設(shè)為“1”時(shí),其數(shù)據(jù)被寫(xiě)入與讀出時(shí)的不一致。ecc電路可以與其他類型的ecc電路相容,這是因?yàn)閮纱蔚姆聪嗵幚聿粫?huì)改變其他類型的ecc電路的結(jié)果。
雖然本發(fā)明已以實(shí)施例公開(kāi)如上,然其并非用以限定本發(fā)明,本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的更動(dòng)與潤(rùn)飾,故本發(fā)明的保護(hù)范圍當(dāng)視所附權(quán)利要求書(shū)界定范圍為準(zhǔn)。