存儲(chǔ)器陣列中故障地址的數(shù)據(jù)結(jié)構(gòu)及故障地址的編碼方法
【專利摘要】一種存儲(chǔ)器陣列中故障地址的數(shù)據(jù)結(jié)構(gòu)及故障地址的編碼方法。該存儲(chǔ)器陣列中的故障地址的編碼方法,該存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2m位為一個(gè)區(qū)段被區(qū)分為多個(gè)區(qū)段,該故障地址的編碼方法包括:獲得這些區(qū)段中的一第一區(qū)段內(nèi)的N1個(gè)失效位的位置;產(chǎn)生(N1+1)位的一第一區(qū)段起始碼;以及產(chǎn)生N1個(gè)m位的故障碼接續(xù)于該第一區(qū)段起始碼之后,用以指示該第一區(qū)段中N1個(gè)失效位的位置;其中,N1為大于或等于零的整數(shù),且m為大于0的整數(shù)。
【專利說(shuō)明】
存儲(chǔ)器陣列中故障地址的數(shù)據(jù)結(jié)構(gòu)及故障地址的編碼方法
技術(shù)領(lǐng)域
[0001]本發(fā)明是有關(guān)于一種存儲(chǔ)器陣列中地址數(shù)據(jù)的編碼方法,且特別是有關(guān)于一種存儲(chǔ)器陣列中故障地址的數(shù)據(jù)結(jié)構(gòu)及故障地址的編碼方法?!颈尘凹夹g(shù)】
[0002]眾所周知,現(xiàn)今的固態(tài)儲(chǔ)存裝置(Solid State Drive,SSD) —般使用與非門閃存 (NAND flash memory)為主要存儲(chǔ)組件,而此類的閃存為一種非易失性(non-volatile)的存儲(chǔ)器組件。也就是說(shuō),當(dāng)數(shù)據(jù)寫入閃存后,一旦系統(tǒng)電源關(guān)閉,數(shù)據(jù)仍保存在閃存中。在固態(tài)儲(chǔ)存裝置中,一般會(huì)將閃存的存儲(chǔ)器陣列(memory array)區(qū)分為多個(gè)區(qū)塊(block)作為擦除單元,而每個(gè)區(qū)塊又被區(qū)分為多個(gè)頁(yè)(page)作為讀寫單元。
[0003]—般來(lái)說(shuō),在閃存制作的過(guò)程,不可避免地會(huì)有一些故障存儲(chǔ)單元(defective cell)而無(wú)法運(yùn)行。于閃存制作完成后,需要先驗(yàn)證存儲(chǔ)器陣列(memory array)中的所有存儲(chǔ)單元,并確定所有無(wú)法運(yùn)行的故障存儲(chǔ)單元的地址(address),并儲(chǔ)存于損壞區(qū)地址表 (address list of defective reg1n)。當(dāng)閃存運(yùn)行時(shí),損壞區(qū)地址表中所有地址所對(duì)應(yīng)的故障存儲(chǔ)單元即可被略過(guò)而不會(huì)被使用。再者,故障存儲(chǔ)單元又可稱為失效位(fail bit)。
[0004]在與非門閃存的存儲(chǔ)器陣列(memory array)中,一個(gè)17, 664字節(jié)(Byte)容量的頁(yè)(page),共計(jì)有 141,312(17,664X8)個(gè)位(bit),其中,141,312 大于 217 且小于 2 18。因此,利用18個(gè)位長(zhǎng)度的地址即可尋址(address)至一個(gè)頁(yè)里面的任一個(gè)位置。換句話說(shuō), 需要利用18位長(zhǎng)度的地址來(lái)記錄一個(gè)失效位的位置。
[0005]—般來(lái)說(shuō),與非門閃存制造完成后會(huì)有約1%的損壞率。因此,在一個(gè)頁(yè)的容量中約有1,414(14, 132X 1% )個(gè)失效位。為了表示出一個(gè)頁(yè)中的所有失效位,因此損壞區(qū)地址表中至少需要25, 452 (1,414X 18)位的容量來(lái)記錄一個(gè)頁(yè)里面的所有失效位的位置。
[0006]由于損壞區(qū)地址表會(huì)占去數(shù)據(jù)的儲(chǔ)存空間,為維持使用者的數(shù)據(jù)儲(chǔ)存空間,固態(tài)儲(chǔ)存裝置需額外增加閃存來(lái)儲(chǔ)存損壞區(qū)地址表,如此將造成固態(tài)儲(chǔ)存裝置的成本提高。因此,如何減少損壞區(qū)地址表的大小是目前欲解決的問(wèn)題。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的在于提出一種存儲(chǔ)器陣列中的故障地址編碼方法。利用霍夫曼碼 (Huffman code)來(lái)完成故障地址的編碼,達(dá)成利用更少的數(shù)據(jù)量來(lái)記錄相同數(shù)目的故障位。
[0008]本發(fā)明有關(guān)于一種存儲(chǔ)器陣列中的故障地址的數(shù)據(jù)結(jié)構(gòu),該存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2m位為一個(gè)區(qū)段被區(qū)分為多個(gè)區(qū)段,且該故障地址用以指出該頁(yè)中的多個(gè)失效位的位置,該故障地址的數(shù)據(jù)結(jié)構(gòu)包括:多個(gè)區(qū)段碼對(duì)應(yīng)至這些區(qū)段,其中,這些區(qū)段碼中的一第一區(qū)段碼對(duì)應(yīng)至一第一區(qū)段,且該第一區(qū)段內(nèi)具有N個(gè)失效位,該第一區(qū)段碼包括:一第一區(qū)段起始碼,具有(N+1)位;以及N個(gè)m位的故障碼,接續(xù)于該第一區(qū)段起始碼之后,用以指示該第一區(qū)段中N個(gè)失效位的位置;其中,N為大于或等于零的整數(shù),且m為大于0的整數(shù)。
[0009]本發(fā)明有關(guān)于一種存儲(chǔ)器陣列中的故障地址的編碼方法,該存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2m位為一個(gè)區(qū)段被區(qū)分為多個(gè)區(qū)段,該故障地址的編碼方法包括:獲得這些區(qū)段中的一第一區(qū)段內(nèi)的N1個(gè)失效位的位置;產(chǎn)生(N1+1)位的一第一區(qū)段起始碼;以及產(chǎn)生 N1個(gè)m位的故障碼接續(xù)于該第一區(qū)段起始碼之后,用以指示該第一區(qū)段中N1個(gè)失效位的位置;其中,N1為大于或等于零的整數(shù),且m為大于0的整數(shù)。
[0010]本發(fā)明有關(guān)于一種存儲(chǔ)器陣列中的故障地址的數(shù)據(jù)結(jié)構(gòu),該存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2m位為一個(gè)區(qū)段被區(qū)分為多個(gè)區(qū)段,且每一該區(qū)段還被區(qū)分為二個(gè)子區(qū)段,且該故障地址用以指出該頁(yè)中的多個(gè)失效位的位置,該故障地址的數(shù)據(jù)結(jié)構(gòu)包括:多個(gè)區(qū)段碼對(duì)應(yīng)至這些區(qū)段,其中,這些區(qū)段碼中的一第一區(qū)段碼對(duì)應(yīng)至一第一區(qū)段,且該第一區(qū)段內(nèi)具有(Na+Nb)個(gè)失效位的位置,其中,Na個(gè)失效位位于對(duì)應(yīng)的該第一區(qū)段內(nèi)的一第一子區(qū)段,Nb個(gè)失效位位于該第一區(qū)段內(nèi)的一第二子區(qū)段,該第一區(qū)段碼包括:一第一區(qū)段起始碼,具有(Na+Nb+1)位;一第一第一子區(qū)段失效位碼,其為Na的二進(jìn)制代碼,接續(xù)于該第一區(qū)段起始碼之后;以及Na個(gè)(m-1)位的故障碼以及Nb個(gè)(m-1)位的故障碼,接續(xù)于該第一第一子區(qū)段失效位碼之后,用以指示該第一區(qū)段中該第一子區(qū)段內(nèi)的Na個(gè)失效位的位置以及該第二子區(qū)段內(nèi)的Nb個(gè)失效位的位置;其中,Na與Nb為大于或等于零的整數(shù),且m為大于0的整數(shù)。
[0011]本發(fā)明有關(guān)于一種存儲(chǔ)器陣列中的故障地址的編碼方法,該存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2m位為一個(gè)區(qū)段被區(qū)分為多個(gè)區(qū)段,且每一該區(qū)段還被區(qū)分為二個(gè)子區(qū)段,該故障地址的編碼方法包括:獲得這些區(qū)段中的一第一區(qū)段內(nèi)的(Nal+Nbl)個(gè)失效位的位置, 其中Nal個(gè)失效位位于該第一區(qū)段內(nèi)的一第一子區(qū)段,Nbl個(gè)失效位位于該第一區(qū)段內(nèi)的一第二子區(qū)段;產(chǎn)生(Nal+Nbl+1)位的一第一區(qū)段起始碼;產(chǎn)生一第一第一子區(qū)段失效位碼,其為Nal的二進(jìn)制代碼,接續(xù)于該第一區(qū)段起始碼之后;以及產(chǎn)生Nal個(gè)(m-1)位的故障碼以及Nbl個(gè)(m-1)位的故障碼,接續(xù)于該第一第一子區(qū)段失效位碼之后,用以指示該第一區(qū)段中該第一子區(qū)段內(nèi)的Nal個(gè)失效位的位置以及該第二子區(qū)段內(nèi)的Nbl個(gè)失效位的位置;其中,Nal與Nbl為大于或等于零的整數(shù),且m為大于0的整數(shù)。
[0012]為了對(duì)本發(fā)明的上述及其它方面有更佳的了解,下文特舉較佳實(shí)施例,并結(jié)合附圖詳細(xì)說(shuō)明如下?!靖綀D說(shuō)明】
[0013]圖1A與圖1B示出了區(qū)段中出現(xiàn)失效位數(shù)目與機(jī)率的關(guān)系圖。
[0014]圖2示出了為本發(fā)明中區(qū)段起始碼的編碼實(shí)施例示意圖。
[0015]圖3示出了本發(fā)明故障地址的編碼方法第一實(shí)施例。
[0016]圖4示出了利用本發(fā)明第一實(shí)施例所完成的故障地址示意圖。
[0017]圖5示出了本發(fā)明故障地址的編碼方法第二實(shí)施例。
[0018]圖6示出了利用本發(fā)明第二實(shí)施例所完成的故障地址示意圖。
[0019]圖7示出了第二實(shí)施例中區(qū)段內(nèi)的失效位數(shù)目與子區(qū)段失效位碼的位長(zhǎng)度及區(qū)段碼所節(jié)省的位數(shù)目的示意圖?!揪唧w實(shí)施方式】
[0020]在本發(fā)明實(shí)施例提出的故障地址的數(shù)據(jù)結(jié)構(gòu)中,存儲(chǔ)器陣列中一個(gè)頁(yè)的容量被區(qū)分為多個(gè)區(qū)段(segment),并以區(qū)段為單位來(lái)記錄各個(gè)區(qū)段中的失效位的地址。換句話說(shuō), 每一個(gè)區(qū)段具有一個(gè)對(duì)應(yīng)的區(qū)段碼用以指示該區(qū)段中的失效位的地址。在本發(fā)明實(shí)施例中,每一個(gè)區(qū)段碼包含區(qū)段起始碼用以指示對(duì)應(yīng)區(qū)段中的失效位數(shù)目。在本發(fā)明一實(shí)施例中,區(qū)段起始碼可對(duì)應(yīng)于失效位數(shù)目的發(fā)生機(jī)率。
[0021]請(qǐng)參照?qǐng)D1A與圖1B,其示出了區(qū)段中出現(xiàn)失效位數(shù)目與機(jī)率的關(guān)系圖。以下是以 64位為一個(gè)區(qū)段,并將一個(gè)頁(yè)區(qū)分為多個(gè)區(qū)段(segment)為例來(lái)進(jìn)行說(shuō)明。
[0022]如圖1A與圖1B所示,經(jīng)由統(tǒng)計(jì)可知,在每個(gè)區(qū)段中隨著失效位數(shù)目的增加而呈現(xiàn)機(jī)率下降的趨勢(shì)。亦即,一個(gè)區(qū)段中出現(xiàn)零個(gè)失效位的機(jī)率最高(約為52.26% )、一個(gè)區(qū)段中出現(xiàn)一個(gè)失效位的機(jī)率次之(約為33.98% )、一個(gè)區(qū)段中出現(xiàn)二個(gè)失效位的機(jī)率再次之(約為10.81%)、一個(gè)區(qū)段中出現(xiàn)三個(gè)失效位的機(jī)率再次之(約為2.65%)。再者,一個(gè)區(qū)段中出現(xiàn)三十二個(gè)失效位的機(jī)率已經(jīng)降低至10 44。
[0023]以霍夫曼編碼理論為例,霍夫曼編碼理論是利用機(jī)率大小來(lái)作為編碼的依據(jù)。機(jī)率越高的事件(event),其編碼的位長(zhǎng)度越少;機(jī)率越低的事件,其編碼的位長(zhǎng)度越長(zhǎng)。因此,如圖3所示,其為本發(fā)明中區(qū)段起始碼的編碼實(shí)施例示意圖。其中,區(qū)段起始碼是根據(jù)失效位數(shù)目的發(fā)生機(jī)率所產(chǎn)生,并用以指示出該區(qū)段中的失效位數(shù)目。
[0024]當(dāng)區(qū)段中出現(xiàn)零個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“0”;當(dāng)區(qū)段中出現(xiàn)一個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“10” ;當(dāng)區(qū)段中出現(xiàn)二個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“110” ;當(dāng)區(qū)段中出現(xiàn)三個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“ 1110”;當(dāng)區(qū)段中出現(xiàn)四個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“11110”;當(dāng)區(qū)段中出現(xiàn)五個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“111110”;并且依此類推。換言之,區(qū)段起始碼中“1”的數(shù)目總合即為該區(qū)段中的失效位數(shù)目。再者,區(qū)段起始碼的位數(shù)目(bit number of segment start code)是由失效位的數(shù)目來(lái)決定。其中,區(qū)段起始碼的位數(shù)目為失效位的數(shù)目加1。
[0025]當(dāng)然,圖2中的區(qū)段起始碼中的數(shù)字(digit)也可以互相交換。舉例來(lái)說(shuō),當(dāng)區(qū)段中出現(xiàn)零個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“ 1” ;當(dāng)區(qū)段中出現(xiàn)一個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“01”;當(dāng)區(qū)段中出現(xiàn)二個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“001”;當(dāng)區(qū)段中出現(xiàn)三個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“0001”;當(dāng)區(qū)段中出現(xiàn)四個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“00001”; 當(dāng)區(qū)段中出現(xiàn)五個(gè)失效位時(shí),區(qū)段起始碼設(shè)定為“000001”;并且依此類推。換言之,區(qū)段起始碼中“0”的數(shù)目總合即為該區(qū)段中的失效位數(shù)目。
[0026]再者請(qǐng)參照?qǐng)D3,其示出了本發(fā)明故障地址的編碼方法第一實(shí)施例。根據(jù)本發(fā)明的第一實(shí)施例,存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2m位為一個(gè)區(qū)段區(qū)分為p個(gè)區(qū)段(segment)。因此,利用m個(gè)位長(zhǎng)度的地址即可表示一個(gè)區(qū)段里面的任一個(gè)失效位的位置。再者,每一個(gè)區(qū)段碼中包括區(qū)段起始碼與故障碼,其中,區(qū)段起始碼用以指示對(duì)應(yīng)區(qū)段中的失效位數(shù)目,而故障碼用以指示對(duì)應(yīng)區(qū)段中的失效位的位置。在本實(shí)施例中,故障碼的數(shù)目可為零個(gè)。而故障地址的數(shù)據(jù)結(jié)構(gòu)即包括所有區(qū)段碼的組合。
[0027]首先設(shè)定x = 1 (步驟S402),接著獲得第x個(gè)區(qū)段中的失效位數(shù)目Nx與位置(步驟S406),其中失效位數(shù)目Nx可為零;再者,產(chǎn)生(Nx+1)位的區(qū)段起始碼(步驟S408)以及產(chǎn)生Nx個(gè)m位的故障碼(步驟S410)。接著,結(jié)合區(qū)段起始碼以及Nx個(gè)故障碼成為第x個(gè)區(qū)段碼(步驟S412)。
[0028]當(dāng)x = p成立時(shí)(步驟S416),代表所有p個(gè)區(qū)段碼皆已完成,此時(shí)結(jié)合所有區(qū)段碼而成為故障地址(步驟S420);反之,當(dāng)x = p不成立時(shí)(步驟S416),代表尚未完成p個(gè)區(qū)段碼,因此設(shè)定x = x+1 (步驟S418),并繼續(xù)執(zhí)行步驟S406。
[0029]再者請(qǐng)參照?qǐng)D4,其示出了利用本發(fā)明第一實(shí)施例所完成的故障地址示意圖。其中,將一個(gè)頁(yè)的容量區(qū)分為多個(gè)區(qū)段(segment),例如,假設(shè)一個(gè)頁(yè)的容量為141,311Bits, 且設(shè)定每64 ( = 26)個(gè)位為一個(gè)區(qū)段。因此,一個(gè)頁(yè)共可區(qū)分為2, 208 (141,312/64)個(gè)區(qū)段。而利用6個(gè)位長(zhǎng)度的地址即可表示一個(gè)區(qū)段里面的任一個(gè)失效位的位置。
[0030]每個(gè)區(qū)段碼(segment code)中,以失效位數(shù)目來(lái)決定區(qū)段起始碼;接著,以六個(gè)位為一個(gè)故障碼用以指示出該區(qū)段中故障位的位置。舉例來(lái)說(shuō),假設(shè)一個(gè)區(qū)段的失效位數(shù)目為M,則會(huì)有M個(gè)故障碼接續(xù)于區(qū)段起始碼之后,其中M為大于或等于零的整數(shù)。
[0031]如圖4所示,第一個(gè)區(qū)段Segl中有三個(gè)失效位。因此,第一區(qū)段碼為區(qū)段起始碼 “1110”合并三個(gè)故障碼,亦即“1110[a5:a0][b5:b0][c5:c0]”。其中[a5:a0]指示出第一區(qū)段Segl中第一個(gè)故障位的位置、[b5:b0]指示出第一區(qū)段Segl中第二個(gè)故障位的位置、 [c5:c0]指示出第一區(qū)段Segl中第三個(gè)故障位的位置。
[0032]第二個(gè)區(qū)段Seg2中有一個(gè)失效位。因此,第二區(qū)段碼為區(qū)段起始碼“10”合并一個(gè)故障碼,亦即“10[d5:d0]”。其中[d5:d0]指示出第二區(qū)段Seg2中第一個(gè)故障位的位置。
[0033]第三個(gè)區(qū)段Seg3中有零個(gè)失效位。因此,第三區(qū)段碼為區(qū)段起始碼“0”合并零個(gè)故障碼,亦即“0”。
[0034]第四個(gè)區(qū)段Seg4中有四個(gè)失效位。因此,第四區(qū)段碼為區(qū)段起始碼“11110”合并四個(gè)故障碼,亦即“11110[e5:e0][f5:f0][g5:g0][h5:h0]”。其中[e5:e0]指示出第四區(qū)段Seg4中第一個(gè)故障位的位置、[f5:f0]指示出第四區(qū)段Seg4中第二個(gè)故障位的位置、 [g5:g0]指示出第四區(qū)段Seg4中第三個(gè)故障位的位置、[h5:h0]指示出第四區(qū)段Seg4中第四個(gè)故障位的位置。
[0035]利用相同的方式來(lái)進(jìn)行所有區(qū)段碼的編碼,因此第2, 207個(gè)區(qū)段Seg2207中有零個(gè)失效位。所以第2, 207區(qū)段碼為區(qū)段起始碼“0”合并零個(gè)故障碼,亦即“0”。
[0036]第2, 208個(gè)區(qū)段Seg2208中有二個(gè)失效位。因此,第2208區(qū)段碼為區(qū)段起始碼 “110”合并二個(gè)故障碼,亦即“110[15:朗[」_5:則”。其中[15:朗指示出第2,208區(qū)段 Seg2208中第一個(gè)故障位的位置、[j5: j0]指示出第2, 208區(qū)段Seg2208中第二個(gè)故障位的位置。
[0037]接著,將所有2, 208個(gè)區(qū)段碼結(jié)合之后即完成上述一個(gè)頁(yè)的故障地址的編碼。其編碼完成后的故障地址為:“ 1110[a5:a0] [b5:b0] [c5:c0] 10[d5:d0]011110[e5:e0] [f5:f0][g5:g0][h5:h0].0110[i5:1O][j5:jO]”。
[0038]舉例來(lái)說(shuō),在與非門閃存具有約1 %的損壞區(qū)時(shí),一個(gè)頁(yè)中約有 1,414(14,132X1% )個(gè)故障位。因此,為了指示出一個(gè)頁(yè)中所有故障位的位置,損壞區(qū)地址表中故障地址的長(zhǎng)度為12, 106(2,208+1,414+6X1,414)位,而故障地址可用來(lái)記錄一個(gè)頁(yè)里面的所有故障位的位置。
[0039]明顯地,在相同的故障位數(shù)目下,本發(fā)明第一實(shí)施例的故障地址的編碼方法可有效地減少紀(jì)錄所有故障位的位置的數(shù)據(jù)量。
[0040] 再者,請(qǐng)參照?qǐng)D5,其示出了本發(fā)明故障地址的編碼方法第二實(shí)施例。根據(jù)本發(fā)明的第二實(shí)施例,存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2m位為一個(gè)區(qū)段區(qū)分為p個(gè)區(qū)段(segment), 而每個(gè)區(qū)段再區(qū)分為二個(gè)子區(qū)段。因此,利用(m-1)個(gè)位長(zhǎng)度的地址即可表示一個(gè)子區(qū)段里面的任一個(gè)失效位的位置。再者,每一個(gè)區(qū)段碼中包括區(qū)段起始碼、子區(qū)段失效位碼 (sub-segment fail bit code)與故障碼,其中,區(qū)段起始碼用以指示對(duì)應(yīng)區(qū)段中的失效位數(shù)目,子區(qū)段失效位碼用以指示對(duì)應(yīng)區(qū)段的其中一個(gè)子區(qū)段中的失效位數(shù)目,而故障碼用以指示對(duì)應(yīng)區(qū)段中的失效位的位置。在本實(shí)施例中,故障碼的數(shù)目可為零個(gè)。而故障地址的數(shù)據(jù)結(jié)構(gòu)即包括所有區(qū)段碼的組合。[0041 ]首先設(shè)定x = 1 (步驟S602),接著獲得第x個(gè)區(qū)段中的失效位數(shù)目(Nax+Nbx)及位置(步驟S604),其中Nax及Nbx分別為第x個(gè)區(qū)段的各子區(qū)段中的失效位數(shù)目,且Nax 及Nbx可為零;再者,產(chǎn)生(Nax+Nbx+1)位的區(qū)段起始碼(步驟S606),將Nax的二進(jìn)制代碼(binary code)作為子區(qū)段失效位碼(步驟S608),以及產(chǎn)生Nax個(gè)(m-1)位的故障碼與Nbx個(gè)(m-1)位的故障碼(步驟S610)。接著,結(jié)合區(qū)段起始碼,子區(qū)段失效位碼以及 (Nax+Nbx)個(gè)故障碼成為第x個(gè)區(qū)段碼(步驟S612)。
[0042]當(dāng)x = p成立時(shí)(步驟S614),代表所有p個(gè)區(qū)段碼皆已完成,此時(shí)結(jié)合所有區(qū)段碼而成為故障地址(步驟S616);反之,當(dāng)x = p不成立時(shí)(步驟S614),代表尚未完成p個(gè)區(qū)段碼,因此設(shè)定x = x+1 (步驟S618),并繼續(xù)執(zhí)行步驟S604。
[0043]請(qǐng)參照?qǐng)D7,其繪示第二實(shí)施例中區(qū)段內(nèi)的失效位數(shù)目與子區(qū)段失效位碼的位長(zhǎng)度的示意圖。在本實(shí)施例中,子區(qū)段失效位碼可用以指示前半?yún)^(qū)段中的失效位數(shù)目Nax或者后半?yún)^(qū)段中的失效位數(shù)目Nbx,其中,子區(qū)段失效位碼的位長(zhǎng)度是根據(jù)區(qū)段中的失效位數(shù)目(Nax+Nbx)而決定,并以二進(jìn)制代碼(binary code)來(lái)表示。舉例來(lái)說(shuō),假設(shè)第x個(gè)區(qū)段中有1個(gè)失效位(即Nax+Nbx = 1),則其前半?yún)^(qū)段或后半?yún)^(qū)段中的失效位數(shù)目具有二種可能性,即0個(gè)失效位及1個(gè)失效位。因此,子區(qū)段失效位碼的位長(zhǎng)度設(shè)定為1,并用1個(gè)位長(zhǎng)度的二進(jìn)制法來(lái)表示前半?yún)^(qū)段或后半?yún)^(qū)段中的失效位數(shù)目。例如,子區(qū)段失效位碼“0”表示具有〇個(gè)失效位,“ 1 ”表示具有1個(gè)失效位。
[0044]再者,假設(shè)第x個(gè)區(qū)段中有2個(gè)失效位(即Nax+Nbx = 2),則其前半?yún)^(qū)段或后半?yún)^(qū)段中的失效位數(shù)目具有三種可能性,即〇個(gè)失效位、1個(gè)失效位及2個(gè)失效位。因此,其子區(qū)段失效位碼的位長(zhǎng)度設(shè)定為2,并用2個(gè)位長(zhǎng)度的二進(jìn)制法來(lái)表示前半?yún)^(qū)段或后半?yún)^(qū)段中的失效位數(shù)目。例如,子區(qū)段失效位碼“〇〇”表示具有〇個(gè)失效位,“01”表示具有1個(gè)失效位及“10”表示具有2個(gè)失效位。同理,假設(shè)第x個(gè)區(qū)段中有3個(gè)失效位(即Nax+Nbx = 3),則其前半?yún)^(qū)段或后半?yún)^(qū)段中的失效位數(shù)目具有四種可能性,即0個(gè)失效位、1個(gè)失效位、 2個(gè)失效位及3個(gè)失效位。因此,其子區(qū)段失效位碼的位長(zhǎng)度亦設(shè)定為2,并用2個(gè)位長(zhǎng)度的二進(jìn)制法來(lái)表示前半?yún)^(qū)段或后半?yún)^(qū)段中的失效位數(shù)目。例如,子區(qū)段失效位碼“00”表示具有〇個(gè)失效位,“01”表示具有1個(gè)失效位,“ 10”表示具有2個(gè)失效位及“ 11”表示具有3 個(gè)失效位。以此類推。
[0045]再者,請(qǐng)參照?qǐng)D6,其示出了利用本發(fā)明第二實(shí)施例所完成的故障地址示意圖。其中,將一個(gè)頁(yè)的容量區(qū)分為多個(gè)區(qū)段(segment),例如,假設(shè)一個(gè)頁(yè)的容量為141,311Bits, 且設(shè)定每64 ( = 26)個(gè)位為一個(gè)區(qū)段。因此,一個(gè)頁(yè)共可區(qū)分為2, 208 (141,312/64)個(gè)區(qū)段。再者,每一個(gè)區(qū)段再區(qū)分為二個(gè)子區(qū)段,亦即,前32位的前半?yún)^(qū)段與后32位的后半?yún)^(qū)段。而利用5個(gè)位長(zhǎng)度的地址即可表示二個(gè)子區(qū)段中的任一個(gè)失效位的位置。
[0046]根據(jù)本發(fā)明的第二實(shí)施例,每個(gè)區(qū)段碼(segment code)中,是以失效位數(shù)目來(lái)決定區(qū)段起始碼,以及子區(qū)段失效位碼。接著,以五個(gè)位為一個(gè)故障碼(defective code)指示出二個(gè)子區(qū)段中故障位的位置。舉例來(lái)說(shuō),假設(shè)一個(gè)區(qū)段的失效位數(shù)目為M,則該區(qū)段碼中會(huì)有M個(gè)故障碼。其中,子區(qū)段失效位碼可為前半?yún)^(qū)段中的失效位數(shù)目或者后半?yún)^(qū)段中的失效位數(shù)目,并以二進(jìn)制代碼(binary code)來(lái)表示。以下是以前半?yún)^(qū)段中的失效位數(shù)目來(lái)進(jìn)行說(shuō)明。
[0047]如圖6所示,第一個(gè)區(qū)段Segl中有三個(gè)失效位,其中二個(gè)失效位位于前半?yún)^(qū)段, 一個(gè)失效位位于后半?yún)^(qū)段。再者,由于第一個(gè)區(qū)段Segl中有三個(gè)失效位,子區(qū)段失效位碼的位長(zhǎng)度設(shè)定為2,并以2個(gè)位長(zhǎng)度的二進(jìn)制法來(lái)表示前半?yún)^(qū)段中的失效位數(shù)目。因此,第一區(qū)段碼即為區(qū)段起始碼“1110”合并子區(qū)段失效位碼“10”與三個(gè)故障碼。亦即 “111010[a4:a0] [b4:b0] [c4:c0] ”。其中,區(qū)段起始碼為“1110”代表第一區(qū)段Segl中有三個(gè)失效位;再者,子區(qū)段失效位碼為二進(jìn)制代碼“10”,亦即2,代表前半?yún)^(qū)段中有二個(gè)失效位,并通過(guò)推算可得知,后半?yún)^(qū)段中有一個(gè)失效位。因此,在接續(xù)的故障碼中,[a4:a0]指示出第一區(qū)段Segl的前半?yún)^(qū)段中第一個(gè)故障位的位置、[b4:b0]指示出第一區(qū)段Segl的前半?yún)^(qū)段中第二個(gè)故障位的位置、[c4:C〇]指示出第一區(qū)段Segl的后半?yún)^(qū)段中第一個(gè)故障位的位置。
[0048]第二個(gè)區(qū)段Seg2中有一個(gè)失效位,位于后半?yún)^(qū)段。再者,由于第二個(gè)區(qū)段Seg2中有一個(gè)失效位,子區(qū)段失效位碼的位長(zhǎng)度設(shè)定為1,并以1個(gè)位長(zhǎng)度的二進(jìn)制法來(lái)表示前半?yún)^(qū)段中的失效位數(shù)目。因此,第二區(qū)段碼即為區(qū)段起始碼“10”合并子區(qū)段失效位碼“〇”與一個(gè)故障碼。亦即“100[d4:d0]”。其中,區(qū)段起始碼為“10”代表第二區(qū)段Seg2中有一個(gè)失效位;再者,子區(qū)段失效位碼為二進(jìn)制代碼“〇”,亦即〇,代表前半?yún)^(qū)段中有零個(gè)失效位, 并通過(guò)推算可得知,后半?yún)^(qū)段中有一個(gè)失效位。因此,[d4:d0]指示出第二區(qū)段Segl的后半?yún)^(qū)段中第一個(gè)故障位的位置。
[0049]第三個(gè)區(qū)段Seg3中有零個(gè)失效位。因此,第三區(qū)段碼僅有區(qū)段起始碼,亦即“0”, 代表第三個(gè)區(qū)段Seg3中沒(méi)有任何失效位。
[0050]第四個(gè)區(qū)段Seg4中有四個(gè)失效位,其中二個(gè)失效位位于前半?yún)^(qū)段,二個(gè)失效位位于后半?yún)^(qū)段。再者,由于第四個(gè)區(qū)段Seg4中有四個(gè)失效位,子區(qū)段失效位碼的位長(zhǎng)度設(shè)定為3,并以3個(gè)位長(zhǎng)度的二進(jìn)制法來(lái)表示前半?yún)^(qū)段中的失效位數(shù)目。因此,第四區(qū)段碼即為區(qū)段起始碼“ 11110”合并子區(qū)段失效位碼“〇1〇”與三個(gè)故障碼。亦即“11110010 [e4:e0] [f4:f0] [g4:g0] [h4:h0] ”。其中,區(qū)段起始碼為“111 10”代表第四區(qū)段Seg4中有四個(gè)失效位;再者,子區(qū)段失效位碼為二進(jìn)制代碼“010”,亦即2,代表前半?yún)^(qū)段中有二個(gè)失效位,并通過(guò)推算可得知,后半?yún)^(qū)段中有二個(gè)失效位。因此,在接續(xù)的故障碼中,[e4:e〇]指示出第四區(qū)段Seg4的前半?yún)^(qū)段中第一個(gè)故障位的位置、[f4:f0]指示出第四區(qū)段Seg4的前半?yún)^(qū)段中第二個(gè)故障位的位置、[g4:g〇]指示出第四區(qū)段Seg4的后半?yún)^(qū)段中第一個(gè)故障位的位置、[h4:h0]指示出第四區(qū)段Seg4的后半?yún)^(qū)段中第二個(gè)故障位的位置。
[0051]利用相同的方式來(lái)進(jìn)行所有區(qū)段碼的編碼。因此第2, 207個(gè)區(qū)段Seg2207中有零個(gè)失效位。所以第2, 207區(qū)段碼僅有區(qū)段起始碼,亦即“0”,代表第2, 207個(gè)區(qū)段Seg2207 中沒(méi)有任何失效位。
[0052]第2, 208個(gè)區(qū)段Seg2208中有二個(gè)失效位,其中一個(gè)失效位位于前半?yún)^(qū)段,一個(gè)失效位位于后半?yún)^(qū)段。因此,第2, 208區(qū)段碼即為區(qū)段起始碼“110”合并子區(qū)段失效位碼“01” 與二個(gè)故障碼。亦即“11001[14:10][」4:川]”。其中,區(qū)段起始碼為“110”代表第2,208區(qū)段Seg2208中有二個(gè)失效位;再者,子區(qū)段失效位碼為二進(jìn)制代碼“01”,亦即1,代表前半?yún)^(qū)段中有一個(gè)失效位,并通過(guò)推算可得知,后半?yún)^(qū)段中有一個(gè)失效位。因此,在接續(xù)的故障碼中,[i4:10]指示出第2, 208區(qū)段Seg2208的前半?yún)^(qū)段中第一個(gè)故障位的位置、[j4: j0]指示出第2, 208區(qū)段Seg2208的后半?yún)^(qū)段中第一個(gè)故障位的位置。
[0053]接著,將所有2, 208個(gè)區(qū)段碼結(jié)合之后即完成上述一個(gè)頁(yè)的故障地址的編碼。其編碼完成后的故障地址為:“111〇1〇 [a4:a0] [b4:b0] [c4:c0] 100 [d4: d0]011110010 [e4:e0][f4:f0][g4:g0][h4:h0].011001[i4:1O][j4:jO]”。
[0054]第二實(shí)施例通過(guò)將每一個(gè)區(qū)段再區(qū)分為二個(gè)子區(qū)段以減少紀(jì)錄失效位的位置所需的位長(zhǎng)度,亦即減少故障碼的位數(shù),進(jìn)而縮短整體故障地址的編碼長(zhǎng)度。比較圖4與圖6 的二實(shí)施例后可知,第二實(shí)施例故障地址的編碼方法可用更少的數(shù)據(jù)量來(lái)記錄相同的故障位。舉例來(lái)說(shuō),第二實(shí)施例中的第一區(qū)段碼共計(jì)21位,而第一實(shí)施例中的第一區(qū)段碼共計(jì) 22位,亦即第二實(shí)施例節(jié)省了 1個(gè)位。其差異在于,第二實(shí)施例中,第一區(qū)段碼中的故障碼少了三個(gè)位,而子區(qū)段失效位碼多了二個(gè)位,因此可節(jié)省一個(gè)位。同理,第二實(shí)施例中的第四區(qū)段碼共計(jì)28位,而第一實(shí)施例中的第一區(qū)段碼共計(jì)29位,亦即第二實(shí)施例節(jié)省了 1個(gè)位。其差異在于,第二實(shí)施例中,第四區(qū)段碼中的故障碼少了四個(gè)位,而子區(qū)段失效位碼多了三個(gè)位,因此可節(jié)省一個(gè)位。
[0055]請(qǐng)參照?qǐng)D7,其示出了第二實(shí)施例中區(qū)段內(nèi)的失效位數(shù)目與子區(qū)段失效位碼的位長(zhǎng)度及區(qū)段碼所節(jié)省的位數(shù)目的示意圖。如圖所示,當(dāng)區(qū)段中失效位數(shù)目為1時(shí),子區(qū)段失效位碼的位長(zhǎng)度為1,因此區(qū)段碼中節(jié)省的位數(shù)目為零。當(dāng)區(qū)段中失效位數(shù)目為2時(shí),子區(qū)段失效位碼的位長(zhǎng)度為2,因此區(qū)段碼中節(jié)省的位數(shù)目為零。再者,當(dāng)區(qū)段中失效位數(shù)目為 3時(shí),子區(qū)段失效位碼的位長(zhǎng)度為2,因此區(qū)段碼中節(jié)省的位數(shù)目為1。換言之,當(dāng)區(qū)段中失效位數(shù)目大于3時(shí),都可以產(chǎn)生的位數(shù)較少的區(qū)段碼。經(jīng)由統(tǒng)計(jì),利用第二實(shí)施例所公開的故障地址編碼方法,每一頁(yè)的故障地址相較于第一實(shí)施例,大約可以減少180位,即大約減少1.5%。換言之,在具有約1%的損壞率的狀況下,根據(jù)第二實(shí)施例的公開的故障地址編碼方法,每一頁(yè)的故障地址大約為11,926位。
[0056]換言之,在相同的情況下,利用本發(fā)明第二實(shí)施例所公開的故障地址的編碼方法可以利用更少的數(shù)據(jù)量來(lái)記錄相同數(shù)目的故障位。
[0057]綜上所述,雖然本發(fā)明已以較佳實(shí)施例公開如上,然其并非用以限定本發(fā)明。本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),可作各種更改與修飾。因此,本發(fā)明的保護(hù)范圍是以本發(fā)明的權(quán)利要求為準(zhǔn)。
【主權(quán)項(xiàng)】
1.一種存儲(chǔ)器陣列中的故障地址的數(shù)據(jù)結(jié)構(gòu),該存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2m位為 一個(gè)區(qū)段被區(qū)分為多個(gè)區(qū)段,且該故障地址用以指出該頁(yè)中的多個(gè)失效位的位置,該故障 地址的數(shù)據(jù)結(jié)構(gòu)包括:多個(gè)區(qū)段碼對(duì)應(yīng)至這些區(qū)段,其中,這些區(qū)段碼中的一第一區(qū)段碼對(duì)應(yīng)至一第一區(qū)段, 且該第一區(qū)段內(nèi)具有N個(gè)失效位,該第一區(qū)段碼包括:一第一區(qū)段起始碼,具有(N+1)位,用以指示該第一區(qū)段中的失效位數(shù)目;以及N個(gè)m位的故障碼,接續(xù)于該第一區(qū)段起始碼之后,用以指示該第一區(qū)段中N個(gè)失效位 的位置;其中,N為大于或等于零的整數(shù),且m為大于0的整數(shù)。2.如權(quán)利要求1所述的故障地址的數(shù)據(jù)結(jié)構(gòu),其中該第一區(qū)段起始碼是根據(jù)失效位數(shù) 目的發(fā)生機(jī)率所決定。3.如權(quán)利要求1所述的故障地址的數(shù)據(jù)結(jié)構(gòu),其中該第一區(qū)段起始碼包括N個(gè)第一數(shù) 字接續(xù)一個(gè)第二數(shù)字,且該第一數(shù)字不同于該第二數(shù)字。4.一種存儲(chǔ)器陣列中的故障地址的編碼方法,該存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2m位為 一個(gè)區(qū)段被區(qū)分為多個(gè)區(qū)段,該故障地址的編碼方法包括:獲得這些區(qū)段中的一第一區(qū)段內(nèi)的N1個(gè)失效位的位置;產(chǎn)生(N1+1)位的一第一區(qū)段起始碼;以及產(chǎn)生N1個(gè)m位的故障碼接續(xù)于該第一區(qū)段起始碼之后,用以指示該第一區(qū)段中N1個(gè) 失效位的位置;其中,N1為大于或等于零的整數(shù),且m為大于0的整數(shù)。5.如權(quán)利要求4所述的故障地址的編碼方法,還包括:獲得這些區(qū)段中的一第二區(qū)段內(nèi)的N2個(gè)失效位的位置;產(chǎn)生(N2+1)位的一第二區(qū)段起始碼;以及產(chǎn)生N2個(gè)m位的故障碼接續(xù)于該第二區(qū)段起始碼之后,用以指示該第二區(qū)段中N2個(gè) 失效位的位置;其中,N2為大于或等于零的整數(shù)。6.如權(quán)利要求5所述的故障地址的編碼方法,其中該第一區(qū)段起始碼與該第二區(qū)段起 始碼是根據(jù)失效位數(shù)目的發(fā)生機(jī)率所決定。7.如權(quán)利要求5所述的故障地址的編碼方法,其中該第一區(qū)段起始碼包括N1個(gè)第一數(shù) 字接續(xù)一個(gè)第二數(shù)字,且該第二區(qū)段起始碼包括N2個(gè)第一數(shù)字接續(xù)一個(gè)第二數(shù)字,且該第 一數(shù)字不同于該第二數(shù)字。8.—種存儲(chǔ)器陣列中的故障地址的數(shù)據(jù)結(jié)構(gòu),該存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2m位為 一個(gè)區(qū)段被區(qū)分為多個(gè)區(qū)段,且每一該區(qū)段還被區(qū)分為二個(gè)子區(qū)段,且該故障地址用以指 出該頁(yè)中的多個(gè)失效位的位置,該故障地址的數(shù)據(jù)結(jié)構(gòu)包括:多個(gè)區(qū)段碼對(duì)應(yīng)至這些區(qū)段,其中,這些區(qū)段碼中的一第一區(qū)段碼對(duì)應(yīng)至一第一區(qū)段, 且該第一區(qū)段內(nèi)具有(Na+Nb)個(gè)失效位,其中,Na個(gè)失效位位于該第一區(qū)段內(nèi)的一第一子 區(qū)段,Nb個(gè)失效位位于該第一區(qū)段內(nèi)的一第二子區(qū)段,該第一區(qū)段碼包括:一第一區(qū)段起始碼,具有(Na+Nb+1)位;一第一第一子區(qū)段失效位碼,其為Na的二進(jìn)制代碼,接續(xù)于該第一區(qū)段起始碼之后;以及Na個(gè)(m-1)位的故障碼以及Nb個(gè)(m-1)位的故障碼,接續(xù)于該第一第一子區(qū)段失效位 碼之后,用以指示該第一區(qū)段中該第一子區(qū)段內(nèi)的Na個(gè)失效位的位置以及該第二子區(qū)段 內(nèi)的Nb個(gè)失效位的位置;其中,Na與Nb為大于或等于零的整數(shù),且m為大于0的整數(shù)。9.如權(quán)利要求8所述的故障地址的數(shù)據(jù)結(jié)構(gòu),其中該第一區(qū)段起始碼是根據(jù)失效位數(shù) 目的發(fā)生機(jī)率所決定。10.如權(quán)利要求8所述的故障地址的數(shù)據(jù)結(jié)構(gòu),其中該第一區(qū)段起始碼包括(Na+Nb)個(gè) 第一數(shù)字接續(xù)一個(gè)第二數(shù)字,且該第一數(shù)字不同于該第二數(shù)字。11.一種存儲(chǔ)器陣列中的故障地址的編碼方法,該存儲(chǔ)器陣列中一個(gè)頁(yè)的容量以2"'位 為一個(gè)區(qū)段被區(qū)分為多個(gè)區(qū)段,且每一該區(qū)段還被區(qū)分為二個(gè)子區(qū)段,該故障地址的編碼 方法包括:獲得這些區(qū)段中的一第一區(qū)段內(nèi)的(Nal+Nbl)個(gè)失效位的位置,其中Nal個(gè)失效位位 于該第一區(qū)段內(nèi)的一第一子區(qū)段,Nbl個(gè)失效位位于該第一區(qū)段內(nèi)的一第二子區(qū)段;產(chǎn)生(Nal+Nbl+1)位的一第一區(qū)段起始碼;以及產(chǎn)生一第一第一子區(qū)段失效位碼,其為Nal的二進(jìn)制代碼,接續(xù)于該第一區(qū)段起始碼 之后;產(chǎn)生Nal個(gè)(m-1)位的故障碼以及Nbl個(gè)(m-1)位的故障碼,接續(xù)于該第一第一子區(qū) 段失效位碼之后,用以指示該第一區(qū)段中該第一子區(qū)段內(nèi)的Nal個(gè)失效位的位置以及該第 二子區(qū)段內(nèi)的Nbl個(gè)失效位的位置;其中,Nal與Nbl為大于或等于零的整數(shù),且m為大于0的整數(shù)。12.如權(quán)利要求11所述的故障地址的編碼方法,還包括:獲得這些區(qū)段中的一第二區(qū)段內(nèi)的(Na2+Nb2)個(gè)失效位的位置,其中Na2個(gè)失效位位 于該第二區(qū)段內(nèi)的一第一子區(qū)段,Nb2個(gè)失效位位于該第二區(qū)段內(nèi)的一第二子區(qū)段;產(chǎn)生(Na2+Nb2+1)位的一第二區(qū)段起始碼;產(chǎn)生一第二第一子區(qū)段失效位碼,其為Na2的二進(jìn)制代碼,接續(xù)于該第二區(qū)段起始碼 之后;以及產(chǎn)生Na2個(gè)(m-1)位的故障碼以及Nb2個(gè)(m-1)位的故障碼,接續(xù)于該第二第一子區(qū) 段失效位碼之后,用以指示該第二區(qū)段中該第一子區(qū)段內(nèi)的Na2個(gè)失效位的位置以及該第 二子區(qū)段內(nèi)的Nb2個(gè)失效位的位置;其中,Na2與Nb2為大于或等于零的整數(shù)。13.如權(quán)利要求12所述的故障地址的編碼方法,其中該第一區(qū)段起始碼與該第二區(qū)段 起始碼是根據(jù)失效位數(shù)目的發(fā)生機(jī)率所決定。14.如權(quán)利要求12所述的故障地址的編碼方法,其中該第一區(qū)段起始碼包括 (Nal+Nbl)個(gè)第一數(shù)字接續(xù)一個(gè)第二數(shù)字,且該第二區(qū)段起始碼包括(Na2+Nb2)個(gè)第一數(shù) 字接續(xù)一個(gè)第二數(shù)字,且該第一數(shù)字不同于該第二數(shù)字。
【文檔編號(hào)】G11C29/12GK105989898SQ201510070780
【公開日】2016年10月5日
【申請(qǐng)日】2015年2月11日
【發(fā)明人】曾士家, 傅仁杰
【申請(qǐng)人】光寶科技股份有限公司