存取快閃存儲器中儲存單元的方法以及使用該方法的裝置制造方法【專利摘要】本發(fā)明的實(shí)施例提出一種存取快閃存儲器中儲存單元的方法,由仲裁單元執(zhí)行,包含下列步驟。以第一批次傳送數(shù)據(jù)至每一儲存單元存取接口所連接的第一儲存單元后,發(fā)送寫入命令給每一第一儲存單元,使得第一儲存單元開始寫入作業(yè)。于第一儲存單元的寫入作業(yè)期間,以第二批次傳送數(shù)據(jù)至每一儲存單元存取接口所連接的第二儲存單元?!緦@f明】存取快閃存儲器中儲存單元的方法以及使用該方法的裝置【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明關(guān)連于一種快閃存儲器裝置,特別是一種存取快閃存儲器中儲存單元的方法以及使用該方法的裝置?!?br>背景技術(shù):
】[0002]快閃存儲器(flashmemory)中的記憶單元(memorycells)可能于多次的存取后失效。此外,也可能于生產(chǎn)過程中,會因?yàn)榉蹓m或是光罩問題,使得儲存單元中的一整列(column)的數(shù)據(jù)都無法正確存取。因此,本發(fā)明提出一種存取快閃記憶單元的方法以及使用該方法的裝置,用以保護(hù)快閃存儲器中儲存的數(shù)據(jù)。【
發(fā)明內(nèi)容】[0003]本發(fā)明的實(shí)施例提出一種存取快閃存儲器中儲存單元的方法,由仲裁單元執(zhí)行,包含下列步驟。以第一批次傳送數(shù)據(jù)至每一儲存單元存取接口所連接的第一儲存單元后,發(fā)送寫入命令給每一第一儲存單元,使得第一儲存單元開始寫入作業(yè)。于第一儲存單元的寫入作業(yè)期間,以第二批次傳送數(shù)據(jù)至每一儲存單元存取接口所連接的第二儲存單元。[0004]本發(fā)明的實(shí)施例提出一種存取快閃存儲器中的儲存單元的裝置,包含多個(gè)儲存單元存取接口以及仲裁單元。仲裁單元耦接至儲存單元存取接口,以第一批次傳送數(shù)據(jù)至每一儲存單元存取接口所連接的第一儲存單元后,發(fā)送寫入命令給每一第一儲存單元,使得第一儲存單元開始寫入作業(yè);以及于第一儲存單元的寫入作業(yè)期間,以第二批次傳送數(shù)據(jù)至每一儲存單元存取接口所連接的第二儲存單元。【專利附圖】【附圖說明】[0005]圖1是依據(jù)本發(fā)明實(shí)施例的快閃存儲器中的儲存單元示意圖。[0006]圖2是依據(jù)本發(fā)明實(shí)施例的快閃存儲器的系統(tǒng)架構(gòu)示意圖。[0007]圖3是依據(jù)本發(fā)明實(shí)施例的快閃存儲器的存取接口示意圖。[0008]圖4是依據(jù)本發(fā)明實(shí)施例的邏輯數(shù)據(jù)儲存示意圖。[0009]圖5A是依據(jù)本發(fā)明實(shí)施例應(yīng)用于每一區(qū)段的數(shù)據(jù)儲存示意圖。[0010]圖5B是依據(jù)本發(fā)明實(shí)施例的二維錯誤修正碼示意圖。[0011]圖6是依據(jù)本發(fā)明實(shí)施例的用以執(zhí)行寫入作業(yè)的系統(tǒng)方塊圖。[0012]圖7A及7B是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于處理單元中的數(shù)據(jù)寫入方法流程圖。[0013]圖8是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于儲存單元存取接口中的數(shù)據(jù)寫入方法流程圖。[0014]圖9是依據(jù)本發(fā)明實(shí)施例的用以執(zhí)行讀取作業(yè)的系統(tǒng)方塊圖。[0015]圖10是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于區(qū)段解碼單元中的數(shù)據(jù)讀取方法流程圖。[0016]圖11是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于處理單元中的數(shù)據(jù)讀取方法流程圖。[0017]圖12是依據(jù)本發(fā)明實(shí)施例的用以執(zhí)行寫入作業(yè)的系統(tǒng)方塊圖。[0018]圖13是依據(jù)本發(fā)明實(shí)施例的一個(gè)儲存單元中的三層式單元區(qū)塊的示意圖。[0019]圖14是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于處理單元中的寫入方法流程圖。[0020]圖15是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于處理單元中的寫入方法流程圖。[0021]圖16A是依據(jù)本發(fā)明實(shí)施例的眾多單層式單元的臨界電壓分布示意圖。[0022]圖16B是依據(jù)本發(fā)明實(shí)施例的眾多多層式單元的臨界電壓分布示意圖。[0023]圖16C是依據(jù)本發(fā)明實(shí)施例的眾多三層式單元的臨界電壓分布示意圖。[0024]圖17A至17C是顯示依據(jù)本發(fā)明實(shí)施例的經(jīng)三次寫入操作后的一個(gè)字線上的眾多單層式單元的臨界電壓分布示意圖。[0025]圖18A是依據(jù)本發(fā)明實(shí)施例的使用RS(48,45)垂直錯誤修正碼的獨(dú)立磁盤冗余陣列群組的數(shù)據(jù)擺放示意圖。[0026]圖18B是依據(jù)本發(fā)明實(shí)施例的使用RS(96,93)垂直錯誤修正碼的獨(dú)立磁盤冗余陣列群組的數(shù)據(jù)擺放示意圖。[0027]圖19A至19B是依據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)寫入時(shí)序圖。[0028]圖20A至20D是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于處理單元中的寫入數(shù)據(jù)方法流程圖。[0029]圖21是依據(jù)本發(fā)明實(shí)施例的字線寫入順序示意圖。【具體實(shí)施方式】[0030]本發(fā)明實(shí)施例提出一種存取快閃存儲器中儲存單元的方法以及使用該方法的裝置,用以編碼即將儲存至儲存單元的數(shù)據(jù),以及解碼從儲存單元中讀取的數(shù)據(jù)。圖1是依據(jù)本發(fā)明實(shí)施例的快閃存儲器中的儲存單元示意圖。儲存單元10包含由MxN個(gè)存儲器單元(memorycells)組成的陣列(array)110,而每一個(gè)存儲器單元儲存至少一個(gè)比特(bit)的信息??扉W存儲器可以是N0R型快閃存儲器(NORflashmemory)、NAND型快閃存儲器,或其他種類的快閃存儲器。為了正確存取信息,行解碼單元120用以選擇存儲器單元陣列110中指定的行,而列編碼單元130用以選擇指定行中一定數(shù)量的比特組的數(shù)據(jù)作為輸出。地址單元140提供行信息給行解碼器120,其中定義了選擇存儲器單元陣列110中的那些行。相似地,列解碼器130則根據(jù)地址單元140提供的列信息,選擇存儲器單元陣列110的指定行中一定數(shù)量的列進(jìn)行讀取或?qū)懭氩僮?。行可稱為字線(wordline),列可稱為位線(bitline)。數(shù)據(jù)緩存器(databuffer)150可處存從存儲器單元陣列110讀取出的數(shù)據(jù),或欲寫入存儲器單元陣列110中的數(shù)據(jù)。存儲器單元可為單層式單元(single-levelcells,SLCs)、多層式單兀(mult1-levelcells,MLCs)或三層式單兀(triple-levelcells,TLCs)。[0031]一個(gè)單層式單元中可表示兩個(gè)狀態(tài),其中之一為于浮柵(floatinggate)中擁有零電荷(zerocharge)以及抹除后尚未寫入的狀態(tài)(通常定義為”1”的狀態(tài)),而另一則為于浮柵中擁有一些數(shù)量的負(fù)電荷(negativecharge)的狀態(tài)(通常定義為”0”的狀態(tài))。擁有負(fù)電荷的柵會讓此單元中的晶體管的臨界電壓(thresholdvoltage)增加,亦即是當(dāng)施加此電壓至晶體管的控制柵(controlgate)時(shí)可造成晶體管導(dǎo)通。一種可行的讀取儲存比特方式為檢查此單元中的臨界電壓。如果此臨界電壓處于較高的狀態(tài),則比特值為”0”。如果此臨界電壓處于較低的狀態(tài),則比特值為”1”。圖16A是依據(jù)本發(fā)明實(shí)施例的眾多單層式單元的臨界電壓分布示意圖。因?yàn)榭扉W存儲器中的存儲器單元間的特性及操作結(jié)果并不會完全一致(例如,因?yàn)殡s質(zhì)濃度的微小變異或硅結(jié)構(gòu)上的缺陷),雖然使用相同的寫入作業(yè)至所有的存儲器單元,卻不能讓所有的存儲器單元擁有完全一致的臨界電壓。因此,臨界電壓的分布如圖16A所示。狀態(tài)”1”的單層式單元通常擁有負(fù)臨界電壓,使得大部分的單元擁有接近于左峰的中心電壓,而少部分的單元則擁有較高或較低于左峰中心電壓的臨界電壓。相似地,狀態(tài)”0”的單層式單元通常擁有正臨界電壓,使得大部分的單元擁有接近于右峰的中心電壓,而少部分的單元擁有較高或較低于右峰中心電壓的臨界電壓。[0032]雖然多層式單元從字面上表示為擁有多于二個(gè)電壓位準(zhǔn)的狀態(tài),也就是,每個(gè)單元可表示多于一個(gè)比特的信息,但目前大多的多層式單元只表示二個(gè)比特的信息,從而提供如下所示的范例。單一個(gè)多層式單元使用四個(gè)不同狀態(tài)中的一者來儲存二個(gè)比特的信息,其中的一個(gè)比特稱為最低比特(LeastSignificantBit,LSB),另一個(gè)比特則稱為最高比特(MostSignificantBit,MSB)。由于一個(gè)存儲器單元的狀態(tài)使用臨界電壓來表示,多層式單元的臨界電壓會有四個(gè)不同的有效區(qū)間。圖16B是依據(jù)本發(fā)明實(shí)施例的眾多多層式單元的臨界電壓分布示意圖。預(yù)期的分布擁有四個(gè)峰,每一者相應(yīng)于一個(gè)狀態(tài)。相似地,單一個(gè)三層式單元使用八個(gè)不同狀態(tài)中的一者來儲存三個(gè)比特的信息,其中的一個(gè)比特稱為最低比特,另一個(gè)比特稱為中間比特(CenterSignificantBit,CSB),而最后一個(gè)比特稱為最高比特。三層式單元的臨界電壓會有八個(gè)不同的有效區(qū)間。圖16C是依據(jù)本發(fā)明實(shí)施例的眾多三層式單元的臨界電壓分布示意圖。預(yù)期的分布擁有八個(gè)峰,每一者相應(yīng)于一個(gè)狀態(tài)。需注意的是,本發(fā)明也可應(yīng)用在每個(gè)存儲器單元支援超過三個(gè)比特的快閃存儲器裝置中。[0033]圖2是依據(jù)本發(fā)明實(shí)施例的快閃存儲器的系統(tǒng)架構(gòu)示意圖??扉W存儲器的系統(tǒng)架構(gòu)20中包含控制器200,用以寫入數(shù)據(jù)到儲存單元10中的指定地址,以及從儲存單元10中的指定地址讀取數(shù)據(jù)。詳細(xì)來說,控制單元210通過儲存單元存取接口230寫入數(shù)據(jù)到儲存單元10中的指定地址,以及從儲存單元10中的指定地址讀取數(shù)據(jù)。系統(tǒng)架構(gòu)20使用數(shù)個(gè)電子信號來協(xié)調(diào)控制器200與儲存單元10間的數(shù)據(jù)與命令傳遞,包含數(shù)據(jù)線(dataline)、時(shí)鐘信號(clocksignal)與控制信號(controlsignal)。數(shù)據(jù)線可用以傳遞命令、地址、讀出及寫入的數(shù)據(jù);控制信號線可用以傳遞芯片致能(chipenable,CE)、地址提取致能(addresslatchenable,ALE)、命令提取致能(commandlatchenable,CLE)、寫入致能(writeenable,WE)等控制信號。儲存單元存取接口230可采用雙倍數(shù)據(jù)率(doubledatarate,DDR)通訊協(xié)定與儲存單元10溝通,例如,開放NAND快閃(openNANDflashinterface,0NFI)、雙倍數(shù)據(jù)率開關(guān)(DDRtoggle)或其他接口。控制單元210另可使用處理單元存取接口250通過指定通訊協(xié)定與其他電子裝置進(jìn)行溝通,例如,通用串行總線(universalserialbus,USB)、先進(jìn)技術(shù)附著(advancedtechnologyattachment,ΑΤΑ)、串行先進(jìn)技術(shù)附著(serialadvancedtechnologyattachment,SATA)、快速周邊兀件互聯(lián)(peripheralcomponentinterconnectexpress,PC1-E)或其他接口。[0034]一個(gè)快閃儲存裝置(flashstorage)可包含多個(gè)儲存單元10,每一個(gè)儲存單元實(shí)施于一個(gè)管芯(die)上,具有各自獨(dú)立的接口與儲存單元存取接口230溝通。于存取大量數(shù)據(jù)時(shí),這些存取儲存單元的操作(例如,讀取或?qū)懭氩僮?可以被流水線化(pipelined),提升存取效率。圖3是依據(jù)本發(fā)明實(shí)施例的快閃存儲器的存取接口示意圖??扉W儲存裝置300可包含j+Ι個(gè)通道(channel),每一個(gè)通道包含i+Ι個(gè)儲存單元。換句話說,i+Ι個(gè)儲存單元分享同一個(gè)通道。例如,當(dāng)快閃儲存裝置300包含8個(gè)通道(j=7)且每一個(gè)通道包含8個(gè)儲存單元(i=7)時(shí),快閃儲存裝置300—共擁有64個(gè)儲存單元10[0..j][0..1]??扉W存儲器的控制單元可使用快閃儲存裝置300所提供的電子信號310[0..j][0..1]中的一者,將數(shù)據(jù)儲存至指定的儲存單元,以及/或從指定的儲存單元讀取數(shù)據(jù)。每個(gè)儲存單元擁有獨(dú)立的芯片致能(CE)控制信號。換句話說,當(dāng)欲對指定儲存單元存取接口(又可稱為通道)所連接的指定儲存單元進(jìn)行數(shù)據(jù)存取時(shí),需要致能相應(yīng)的芯片致能控制信號。熟習(xí)此技藝人士可在快閃儲存裝置300中使用任意數(shù)目的通道,而每一通道可包含任意數(shù)目的儲存單元,本發(fā)明并不因此而受限。[0035]為了確保儲存訊息(message)的正確性,可加上儲存二維的錯誤修正碼(two-dimens1nalerrorcorrect1ncode,ECC)來保護(hù)。圖4是依據(jù)本發(fā)明實(shí)施例的邏輯數(shù)據(jù)儲存示意圖。(j+l)x(i+l)個(gè)儲存單元中可包含用以儲存錯誤修正碼的1個(gè)(例如,1=1、2或3個(gè))儲存單元,其中所儲存的碼又可稱為垂直錯誤修正碼(verticalECC)。每一個(gè)垂直錯誤修正碼根據(jù)其他(j+l)x(i+l)_l個(gè)儲存單元中相應(yīng)地址的值產(chǎn)生。垂直錯誤修正碼可以是單同比特修正碼(singleparitycorrect1n,SPC)、RS碼(Reed-Solomoncode)或其他可提供修正錯誤功能的碼。例如,當(dāng)i=7,j=7且1=1時(shí),儲存單元10[7][7]可儲存SPC(64,63)的錯誤修正碼。當(dāng)i=7,j=7且1=2時(shí),儲存單元10[7][6]及10[7][7]可儲存RS(64,62)的錯誤修正碼。當(dāng)i=7,j=7且1=3時(shí),儲存單元10[7][5]、10[7][6]及10[7][7]可儲存RS(64,61)的錯誤修正碼。垂直錯誤修正碼用來提供儲存單元層次的保護(hù),也就是,當(dāng)其中的一個(gè)儲存單元失效時(shí),使用垂直錯誤修正碼以及其他儲存單元中所儲存正確的值可回復(fù)儲存于失效的儲存單元中的所有的值。其他不儲存垂直錯誤修正碼的儲存單元中,除了儲存訊息外,更儲存水平錯誤修正碼(horizontalECC)。每一個(gè)儲存單元中的每條字線可儲存k+1(例如k=31)個(gè)區(qū)段(sector)的數(shù)據(jù)。以上所述的k+Ι個(gè)區(qū)段又可統(tǒng)稱為一個(gè)頁面(page)。例如,針對指定一條字線,儲存單元10[0][0]可儲存區(qū)段410[0][0][0]至區(qū)段410[0][0][k]的數(shù)據(jù),儲存單元10[0][i]可儲存區(qū)段410[0][i][0]至區(qū)段410[0][i][k]的數(shù)據(jù),儲存單元10[j][i]可儲存區(qū)段410[j][i][0]至區(qū)段410[j][i][k]的數(shù)據(jù)。區(qū)段410[0][0][0]至區(qū)段410[0][0][k]、區(qū)段410[0][1][0]至區(qū)段410[0][i][k]或410[j][i][0]至區(qū)段410[j][i][k]又可稱為一個(gè)芯片致能區(qū)段(CEsector)。圖5A是依據(jù)本發(fā)明實(shí)施例應(yīng)用于每一區(qū)段的數(shù)據(jù)儲存示意圖。區(qū)段410[0..j][0..i][0..k]中的任一者可包含訊息510與水平錯誤修正碼530。訊息長度是固定的,例如1K字節(jié)(bytes)。水平錯誤修正碼530根據(jù)訊息510中的值產(chǎn)生。水平錯誤修正碼可以是單同比特修正碼、RS碼或其他可提供修正錯誤功能的碼。水平錯誤修正碼提供區(qū)段層次的保護(hù),也就是,當(dāng)訊息中有可容許數(shù)量個(gè)值發(fā)生錯誤時(shí),使用水平錯誤修正碼以及同一區(qū)段中所儲存其他正確的訊息值可還原這些錯誤的值。圖5B是依據(jù)本發(fā)明實(shí)施例的二維錯誤修正碼示意圖。其中,每一個(gè)區(qū)段中包含了訊息及水平錯誤修正碼,例如,區(qū)段410[0][0][0]中包含了訊息510[0][0][0]以及用來修正訊息中的錯誤的水平錯誤修正碼530[0][0][0]。假設(shè)1=1,也就是僅使用一個(gè)儲存單元來儲存垂直錯誤修正碼。區(qū)塊510[j][i][0]儲存用以修正訊息510[0][0][0]至訊息510[j-1][i][0]中的錯誤比特的垂直修正碼,而區(qū)塊530[j][i][0]儲存用以修正水平錯誤修正碼530[0][0][0]至水平錯誤修正碼530[j-1][i][0]中的錯誤比特的垂直錯誤修正碼。當(dāng)一個(gè)區(qū)塊中的錯誤比特太多或者是儲存單元發(fā)生硬件錯誤而造成水平錯誤修正碼無法還原此區(qū)塊中的訊息時(shí),則可使用垂直錯誤修正碼加上其他區(qū)塊中正確的訊息來嘗試還原此區(qū)塊中的訊息。以上所述區(qū)塊加上用來保護(hù)區(qū)塊中的值的垂直錯誤修正碼可稱為一個(gè)獨(dú)立磁盤冗余陣列群組(RedundantArrayofIndependentDisk,RAIDgroup)。[0036]圖6是依據(jù)本發(fā)明實(shí)施例的用以執(zhí)行寫入作業(yè)的系統(tǒng)方塊圖。處理單元610可使用多種方式實(shí)施,例如以專用硬體電路或通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運(yùn)算能力的處理器),并且在執(zhí)行程序碼或軟件時(shí),提供之后所描述的功能。從其他電子裝置所接收的欲寫入至指定儲存單元的訊息,會由處理單元存取接口250通過直接存儲器訪問(DMA,DirectMemoryAccess)控制器623儲存至動態(tài)隨機(jī)存取存儲器620。儲存單元10[0][0]至10[j][i]中的任一者可包含多個(gè)單層式單元。多路復(fù)用器640可預(yù)設(shè)為耦接動態(tài)隨機(jī)存取存儲器620以及緩存器650。當(dāng)處理單元610檢測到動態(tài)隨機(jī)存取存儲器(DRAM-DynamicRandomAccessMemory)620已儲存一定長度的訊息時(shí),例如,32K比特組,指示直接存儲器訪問控制器621將動態(tài)隨機(jī)存取存儲器620中儲存的訊息經(jīng)由多路復(fù)用器640儲存至緩存器650,并同時(shí)儲存至磁盤陣列編碼單元630中的緩存器(未顯示)。磁盤陣列編碼單元630可使用已知的錯誤修正碼編碼方法依據(jù)目前的儲存結(jié)果以及新接收到的訊息來產(chǎn)生垂直錯誤修正碼,例如SPC(64,63)、RS(64,62)、RS(64,61)的錯誤修正碼。處理單元610可包含兩個(gè)計(jì)數(shù)器(counter),一為訊息計(jì)數(shù)器用以數(shù)算已經(jīng)輸出的訊息次數(shù),另一為錯誤修正碼計(jì)數(shù)器用以數(shù)算已經(jīng)輸出的垂直錯誤修正碼次數(shù)。當(dāng)處理單元610中的訊息計(jì)數(shù)器數(shù)算到已輸出的訊息次數(shù)到達(dá)一個(gè)閾值時(shí),控制多路復(fù)用器640用以將磁盤陣列編碼單元630耦接上緩存器650,并且指示磁盤陣列編碼單元630將編碼完成的垂直錯誤修正碼以一或多個(gè)批次輸出至緩存器650。當(dāng)處理單元610中的錯誤修正碼計(jì)數(shù)器數(shù)算到已輸出的次數(shù)到達(dá)一個(gè)閾值時(shí),控制多路復(fù)用器640用以將動態(tài)隨機(jī)存取存儲器620耦接上緩存器650,用以繼續(xù)后續(xù)的訊息儲存作業(yè)。例如,當(dāng)使用RS(64,61)的錯誤修正碼時(shí),處理單元610會在訊息計(jì)數(shù)器數(shù)算已輸出訊息的次數(shù)達(dá)到61次時(shí),控制多路復(fù)用器640用以將磁盤陣列編碼單元630耦接上緩存器650,并將訊息計(jì)數(shù)器重設(shè)為0;接著,處理單元610會在錯誤修正碼計(jì)數(shù)器數(shù)算已輸出錯誤修正碼的次數(shù)達(dá)到3次時(shí),控制多路復(fù)用器640用以將動態(tài)隨機(jī)存取存儲器620耦接上緩存器650,并將錯誤修正碼計(jì)數(shù)器重設(shè)為0。于每次控制動態(tài)隨機(jī)存取存儲器620或磁盤陣列編碼單元630的數(shù)據(jù)輸出后,處理單元610控制仲裁單元660讀取緩存器650中的區(qū)段或垂直錯誤修正碼的值并通過適當(dāng)?shù)膬Υ鎲卧嫒〗涌?例如,儲存單元存取接口230[0]至230[j]中的一者)寫入讀取的値至相應(yīng)的儲存單元(例如,儲存單元10[0][0]至10[j][i]中的一者)。仲裁單元660可拉起(activate)適當(dāng)?shù)膬Υ鎲卧嫒〗涌谥邢鄳?yīng)儲存單元的芯片致能信號,并且通過儲存單元存取接口中的數(shù)據(jù)線將讀取的值及寫入地址傳給相應(yīng)的儲存單元。每一個(gè)儲存單元存取接口(例如,儲存單元存取接口230[0]至230[j])另包含水平錯誤修正碼電路,用以分批次地讀取緩存器650中的數(shù)據(jù)(可能為訊息或垂直錯誤修正碼),并據(jù)以產(chǎn)生水平錯誤修正碼。詳細(xì)而言,當(dāng)儲存單元存取接口每次從緩存器650讀取指定長度的訊息后,例如1K字節(jié),依據(jù)讀取的訊息510產(chǎn)生水平錯誤修正碼530。儲存單元存取接口接著將訊息510以及產(chǎn)生的水平錯誤修正碼530寫入至指定的儲存單元中的指定地址。[0037]圖7A及7B是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于處理單元中的數(shù)據(jù)寫入方法流程圖。于一個(gè)獨(dú)立磁盤冗余陣列群組的寫入作業(yè)中,處理單元610首先將訊息計(jì)數(shù)器以及錯誤修正碼計(jì)數(shù)器設(shè)為0(步驟S711),以及控制多路復(fù)用器640以耦接動態(tài)隨機(jī)存取存儲器620至緩存器650(步驟S713)。接著,反復(fù)執(zhí)行一個(gè)包含步驟S721至S731的循環(huán)直到一個(gè)獨(dú)立磁盤冗余陣列群組中的訊息都寫入到指定的儲存單元中,例如,儲存單元10[0][0]至10[j][1-1]。詳細(xì)而言,處理單元610于檢測到動態(tài)隨機(jī)存取存儲器620已儲存指定長度的新訊息后,例如,32K字節(jié)(步驟S721),指示直接存儲器訪問控制器621將動態(tài)隨機(jī)存取存儲器620中儲存的訊息經(jīng)由多路復(fù)用器640儲存至緩存器650,并同時(shí)儲存至磁盤陣列編碼單元630中的緩存器(未顯示)(步驟S723)。接著,處理單元610控制仲裁單元660讀取緩存器650中的值并通過適當(dāng)?shù)膬Υ鎲卧嫒〗涌?例如,儲存單元存取接口230[0]至230[j]中的一者)寫入讀取的値至相應(yīng)的儲存單元(例如,儲存單元10[0][0]至10[j][i]中的一者)(步驟S725)。處理單元610將訊息計(jì)數(shù)器加一后(步驟S727),判斷訊息計(jì)數(shù)器的值是否超過閾值,例如,(j+l)x(i+l)-l-l(步驟S731)。若是,則繼續(xù)執(zhí)行步驟S733至S751,用以寫入獨(dú)立磁盤冗余陣列群組中的垂直錯誤修正碼;否則,回到步驟S721,用以寫入獨(dú)立磁盤冗余陣列群組中未完成的訊息。[0038]為寫入獨(dú)立磁盤冗余陣列群組中的垂直錯誤修正碼,處理單元610控制多路復(fù)用器640以耦接磁盤陣列編碼單元630至緩存器650(步驟S733)。接著,反復(fù)執(zhí)行一個(gè)包含步驟S741至S751的循環(huán)直到獨(dú)立磁盤冗余陣列群組中的垂直錯誤修正碼都寫入到指定的儲存單元中,例如,儲存單元10[j][1-1+l]至10[j][i]。詳而言之,處理單元610指示磁盤陣列編碼單元630將指定長度(例如,32K比特組)的垂直錯誤修正碼經(jīng)由多路復(fù)用器640輸出至緩存器650(步驟S741)。接著,處理單元610控制仲裁單元660讀取緩存器650中的值并通過適當(dāng)?shù)膬Υ鎲卧嫒〗涌?例如,儲存單元存取接口230[j])寫入讀取的値至相應(yīng)的儲存單元中的指定地址(例如,儲存單元10[j][1-1+l]至10[j][i]中的一者)(步驟S743)。處理單元610將錯誤修正碼計(jì)數(shù)器加一后(步驟S745),判斷錯誤修正碼計(jì)數(shù)器的值是否超過閾值,例如,1-1(步驟S751)。若是,則回到步驟S711繼續(xù)下一個(gè)獨(dú)立磁盤冗余陣列群組的寫入作業(yè);否則,回到步驟S741,用以寫入獨(dú)立磁盤冗余陣列群組中未完成的垂直錯誤修正碼。[0039]圖8是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于儲存單元存取接口中的數(shù)據(jù)寫入方法流程圖。此方法可應(yīng)用于儲存單元存取接口230[0]至230[j]中的一者。當(dāng)儲存單元存取接口由仲裁單元660接收到將特定長度的訊息(例如,32K比特組的訊息)寫入儲存單元的指示后(步驟S811),反復(fù)執(zhí)行一個(gè)包含步驟S821至S831的數(shù)據(jù)寫入循環(huán)直到完成所有的寫入作業(yè)。詳細(xì)來說,針對每一回合的寫入作業(yè),儲存單元存取接口從仲裁單元660取得指定長度的訊息(例如,1K比特組的訊息)(步驟S821),依據(jù)取得的訊息產(chǎn)生水平錯誤修正碼(步驟S823),以及將訊息及產(chǎn)生的水平錯誤修正碼寫入指定儲存單元中的指定字線的下一個(gè)區(qū)段的地址(步驟S825)。于此須注意的是,于步驟S825中,若為第一回合的寫入作業(yè),則將讀取的訊息及產(chǎn)生的水平錯誤修正碼寫入指定字線的第一個(gè)區(qū)段的地址。接著,儲存單元存取接口判斷是否完成所有的寫入作業(yè)(步驟S831)。若是,則結(jié)束整個(gè)流程;否則,回到步驟S821用以進(jìn)行下一回合的寫入作業(yè)。圖19A是依據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)寫入時(shí)序圖。儲存單元存取接口230[0]至230[3]分別以通道CH0至CH3表示,而連接至每個(gè)儲存單元存取接口的儲存單元分別以CEO至CE3表示。圖19A是寫入一個(gè)頁面PG0的數(shù)據(jù)(包含訊息及水平錯誤修正碼,或者是垂直錯誤修正碼)至所有儲存單元10[0][0]至10[3][3]中的第一個(gè)字線WL0的例子。仲裁單元660通過通道CH0至CH3依序?qū)㈨撁鍼G0的數(shù)據(jù)傳送到每個(gè)通道所連接的第一個(gè)儲存單元CEO中的緩存器(未顯示),接著,發(fā)送寫入命令給所有連接的儲存單元CE0,用以開始實(shí)際的寫入作業(yè)。當(dāng)儲存單元CEO中的任一者接收到寫入命令后,隨即進(jìn)入忙碌狀態(tài)(busystate)來將緩存器中的頁面PG0的數(shù)據(jù)寫入到字線WL0中的單層式單元。當(dāng)所有儲存單元CEO開始實(shí)際的數(shù)據(jù)寫入作業(yè)時(shí),通道CH0至CH3處于可用狀態(tài),使得仲裁單元660可利用通道CH0至CH3依序?qū)㈨撁鍼G0的數(shù)據(jù)傳送到每個(gè)通道所連接的第二個(gè)儲存單元CE1中的緩存器(未顯示)。熟習(xí)此技藝人士可觀察到由于使用以上的獨(dú)立磁盤冗余陣列群組的數(shù)據(jù)擺放方式,使得通道CH0至CH3具有較少的閑置時(shí)間,并得以有效利用來傳送數(shù)據(jù)至儲存單元。[0040]圖9是依據(jù)本發(fā)明實(shí)施例的用以執(zhí)行讀取作業(yè)的系統(tǒng)方塊圖。處理單元910可使用多種方式實(shí)施,例如以專用硬體電路或通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運(yùn)算能力的處理器),并且在執(zhí)行程序碼或軟體時(shí),提供之后所描述的功能。儲存單元10[0][0]至10[j][i]中的任一者可包含多個(gè)單層式單元。儲存單元存取接口(230[0]至230[j]中的一者)讀取相應(yīng)的儲存單元中一個(gè)區(qū)段的值后,會將讀取的內(nèi)容傳到區(qū)段解碼單元960。區(qū)段解碼單元960首先利用其中的水平錯誤修正碼檢查其中的訊息是否有錯誤,若是,則嘗試使用其中的水平錯誤修正碼進(jìn)行修正。當(dāng)訊息內(nèi)容正確或已經(jīng)修正成功后,區(qū)段解碼單元960舍棄水平錯誤修正碼,將訊息內(nèi)容儲存至緩存器950中,使得其他電子裝置可經(jīng)由處理單元存取接口250讀取解碼后的訊息。當(dāng)區(qū)段解碼單元960使用其中的水平錯誤修正碼還沒辦法修正訊息中的錯誤時(shí),會發(fā)訊息通知處理單元910,訊息中包含發(fā)生錯誤但無法復(fù)原的區(qū)段地址等信息。接著,處理單元910會啟動垂直修正程序。于垂直修正程序中,處理單元910先取得此區(qū)段地址所屬的獨(dú)立磁盤冗余陣列群組的信息,并找出可用來復(fù)原此錯誤區(qū)段地址中的訊息的所有其他區(qū)段地址(包含儲存垂直錯誤修正碼的區(qū)段地址)。例如,請參考圖5B,假設(shè)區(qū)段410[0][0][0]中的訊息510[0][0][0]包含了即使使用水平錯誤修正碼530[0][0][0]還無法修正的錯誤時(shí),其他可用來嘗試進(jìn)行修正的區(qū)段為410[0][1][0]至410[j][i][0]。接著,處理單元910指示區(qū)段解碼單元960垂直修正程序已啟動,決定相應(yīng)于無法修正的區(qū)段的其他區(qū)段,并且指示儲存單元存取接口230[0]至230[j]讀取指定的其他區(qū)段的值。當(dāng)垂直修正程序啟動時(shí),區(qū)段解碼單元960會通過儲存單元存取接口230[0]至230[j]依序獲得指定區(qū)段的值,并在解碼完成后傳送給磁盤陣列解碼單元930。磁盤陣列解碼單元930可使用所有所需區(qū)段的數(shù)據(jù)(包含原始訊息以及垂直錯誤修正碼)來復(fù)原先前無法修正的錯誤,并將復(fù)原的結(jié)果傳送至緩存器950,使得其他電子裝置可經(jīng)由處理單元存取接口250讀取修正后的訊息。須注意的是,圖9的處理單元910與圖6的處理單元610可為同一個(gè)處理單元,本發(fā)明并不因此受限。[0041]圖10是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于區(qū)段解碼單元中的數(shù)據(jù)讀取方法流程圖。區(qū)段解碼單元960從儲存單元存取接口230[0]至230[j]中的一者獲得一個(gè)區(qū)段的值后(步驟S1010),使用其中的水平錯誤修正碼檢查其中的訊息是否正確(步驟S1020)。若正確(步驟S1020中〃是”的路徑),則將原始的訊息儲存于緩存器950中(步驟S1070);否則(步驟S1020中〃否”的路徑),嘗試使用其中的水平錯誤修正碼修正訊息中存在的錯誤(步驟S1030)。接著,區(qū)段解碼單元960決定是否修正成功(步驟S1040)。若成功(步驟S1040中〃是”的路徑),則將修正后的訊息儲存于緩存器950中(步驟S1070);否則(步驟S1040中〃否”的路徑),發(fā)訊息給處理單元910用以通知此區(qū)段的錯誤無法使用水平錯誤修正碼回復(fù)(步驟S1050)。[0042]圖11是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于處理單元中的數(shù)據(jù)讀取方法流程圖。處理單元910從區(qū)段解碼單元接收指定區(qū)段無法使用水平錯誤修正碼回復(fù)的通知后(步驟S1110),決定屬于相同獨(dú)立磁盤冗余陣列群組中的其他區(qū)段地址(步驟S1120)。例如,請參考圖5B,當(dāng)區(qū)段410[0][0][0]無法使用其中的水平錯誤修正碼510[0][0][0]回復(fù)時(shí),處理單元910決定屬于相同獨(dú)立磁盤冗余陣列群組中的其他區(qū)段為410[0][1][0]至410[j][i][0]。指示區(qū)段解碼單元960及磁盤陣列解碼單元930垂直修正程序已經(jīng)啟動(步驟S1130)。當(dāng)區(qū)段解碼單元960接收到指示后,會將由儲存單元存取接口230[0]至230[j]中的一者所讀取的指定的值解碼完成,并且輸出至磁盤陣列解碼單元930,而非儲存于緩存器950中。接著,處理單元910反復(fù)地執(zhí)行一個(gè)區(qū)段內(nèi)容讀取的循環(huán),用以指示儲存單元存取接口230[0]至230[j]讀取上述指定區(qū)段的內(nèi)容。于循環(huán)中,處理單元910指示指定的儲存單元存取接口讀取下一個(gè)區(qū)段的內(nèi)容(步驟S1140)。受指示的儲存單元存取接口會將讀取的結(jié)果傳送至區(qū)段解碼單元960。區(qū)段解碼單元960解碼出其中的訊息后,傳送至磁盤陣列解碼單元930,而磁盤陣列解碼單元930則根據(jù)先前的解碼結(jié)果以及新接收到的訊息產(chǎn)生一個(gè)新的解碼結(jié)果。當(dāng)處理單元910從受指示的儲存單元存取接口或區(qū)段解碼單元960接收到讀取完成的通知后(步驟S1150),決定是否完成屬于相同獨(dú)立磁盤冗余陣列群組中所有其他區(qū)段的訊息讀取作業(yè)(步驟S1160)。若是(步驟S1160中〃是”的路徑),則結(jié)束循環(huán);否則(步驟S1160中〃否”的路徑),指示指定的儲存單元存取接口繼續(xù)讀取下一個(gè)區(qū)段的內(nèi)容(步驟S1140)。當(dāng)循環(huán)結(jié)束時(shí),處理單元910指示區(qū)段解碼單元960及磁盤陣列解碼單元930垂直修正程序已經(jīng)結(jié)束(步驟S1170)。當(dāng)區(qū)段解碼單元960接收到垂直修正程序已經(jīng)結(jié)束的指示后,會將之后完成解碼的值儲存于緩存器950中,而非輸出至磁盤陣列解碼單元930。另一方面,當(dāng)磁盤陣列解碼單元930接收到指示后,將目前的解碼結(jié)果儲存于緩存器950,作為指定區(qū)段的回復(fù)結(jié)果。[0043]圖12是依據(jù)本發(fā)明實(shí)施例的用以執(zhí)行寫入作業(yè)的系統(tǒng)方塊圖。處理單元1210可使用多種方式實(shí)施,例如以專用硬件電路或通用硬件(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運(yùn)算能力的處理器),并且在執(zhí)行程序碼或軟件時(shí),提供之后所描述的功能。儲存單元10[0][0]至10[j][i]中的任一者可包含多個(gè)記憶單元,而每一個(gè)記憶單元可以三層式單元實(shí)施。處理單元1210可控制儲存單元存取接口230用以將儲存于緩存器1250中的值寫入至儲存單元10[0][0]至10[j][i]中的一者。針對每一個(gè)儲存單元,處理單元1210可逐字線(wordline)寫入值,其中,一個(gè)字線上可儲存多頁(pages)的值。雖然以下以一個(gè)字線包含三頁的值為例,但熟習(xí)此技藝人士也可修改為于一個(gè)字線上寫入更多或更少頁的值,本發(fā)明并不以此受限。一頁可包含8K、16K、32K或64K字節(jié)(Bytes)的訊息。由于三層式單元會被鄰近字線的寫入操作影響而使得原先儲存的電荷泄漏,或吸入更多的電荷,造成臨界電壓改變,所以,需要重復(fù)數(shù)次的寫入操作以避免因以上問題造成單元中代表的儲存值發(fā)生變化。以下說明的技術(shù)方案也可稱為粗略至細(xì)致(F&F,foggyandfind)的寫入方法。圖17A至17C是顯示依據(jù)本發(fā)明實(shí)施例的經(jīng)三次寫入操作后的一個(gè)字線上的眾多單層式單元的臨界電壓分布示意圖。經(jīng)過第一次寫入操作后,臨界電壓分布如圖17A中的實(shí)線所示。從圖17A中可觀察出經(jīng)過第一次粗略的寫入作業(yè)后,臨界電壓分布無法產(chǎn)生具區(qū)別性的八個(gè)狀態(tài)。而接著,當(dāng)鄰近的字線進(jìn)行寫入操作時(shí),將影響此字線上的三層式單元原先儲存的電荷,讓臨界電壓分布變得更糟。影響后的臨界電壓分布如圖17A中的虛線所示。為了讓三層式單元中實(shí)際儲存的電荷數(shù)目更接近理想值,進(jìn)行第二次寫入操作,而第二次寫入操作后的臨界電壓分布如圖17B中的實(shí)線所示。從圖17B中可觀察出經(jīng)過第二次的寫入作業(yè)后,臨界電壓分布可以產(chǎn)出稍具區(qū)別性的八個(gè)狀態(tài)。但是,當(dāng)受到鄰近字線的后續(xù)寫入操作影響時(shí),此臨界電壓分布中的八個(gè)狀態(tài)間又產(chǎn)生些許重疊。影響后的臨界電壓分布如圖17B中的虛線所示。為了再次調(diào)整受到影響的結(jié)果,此字線會再進(jìn)行第三次的寫入作業(yè),讓臨界電壓分布中的八個(gè)狀態(tài)間可擁有較寬的間隔。經(jīng)過第三次寫入作業(yè)后的臨界電壓分布請參考圖17C。參考回圖12,于此架構(gòu)中,假設(shè)緩存器1250的容量可儲存三個(gè)頁面的值,因此需要動態(tài)隨機(jī)存取存儲器1240先暫存通過處理單元存取接口250從其他電子裝置傳來的九個(gè)頁面的值。處理單元1210可指示直接存儲器訪問控制器(directmemoryaccess,DMAcontroller)1220將處理單兀存取接口250上的值儲存至動態(tài)隨機(jī)存取存儲器1240中的指定地址,而新接收的一個(gè)頁面的值會覆寫掉其中最早儲存的頁面的值。需注意的是,被覆寫掉的頁面的值已經(jīng)經(jīng)過三次寫入后穩(wěn)定地被儲存于指定的儲存單元中。動態(tài)隨機(jī)存取存儲器1240可整合至包含元件230[0..j]、250、1210、1230及1250的系統(tǒng)級芯片中(systemonchip,SOC),或者是實(shí)施于獨(dú)立的芯片。于實(shí)際的寫入作業(yè)中,處理單元1210可指示直接存儲器訪問控制器1230從動態(tài)隨機(jī)存取存儲器1240讀取三個(gè)頁面的值并儲存至緩存器1250中,接著通過儲存單元存取接口230[0]至230[j]中的一者,將緩存器1250中的值寫入指定儲存單元中的指定字線上的三層式單元。圖13是依據(jù)本發(fā)明實(shí)施例的一個(gè)儲存單元中的三層式單元區(qū)塊(TLCblock)的示意圖。三層式單元區(qū)塊1300可包含總數(shù)為192個(gè)頁面的值,頁面標(biāo)號為PG0至PG191。每個(gè)字線上可儲存三個(gè)頁面的值,字線標(biāo)號為WL0至WL63。請參考圖16C,每個(gè)字線上的所有三層式單元中指示的最低比特,集合起來成為一個(gè)頁面的值。類似地,所有三層式單元中指示的中間比特以及最高比特,分別集合起來成為另二個(gè)頁面的值。為了讓儲存的值能夠穩(wěn)定,處理單元1210除了要將動態(tài)隨機(jī)存取存儲器1240中最近接收到的三個(gè)頁面的值寫入三層式單元區(qū)塊1300以外,還需要使用兩個(gè)批次從動態(tài)隨機(jī)存取存儲器1240讀取之前曾經(jīng)寫入過的六個(gè)頁面的值至緩存器250,并使用指定的儲存單元存取接口寫入到指定儲存單元中的指定字線上的三層式單元。例如,寫入頁面PG6至PG8至字線WL2上的三層式單元后,處理單元1210更指示直接存儲器訪問控制器1230從動態(tài)隨機(jī)存取存儲器1240讀取頁面PG0至PG2的值并儲存至緩存器250中,并使用儲存單元存取接口230將緩存器250中的值寫入字線WL0上的記憶單元,接著,指示直接存儲器訪問控制器1230從動態(tài)隨機(jī)存取存儲器1240讀取頁面PG3至PG5的值并儲存至緩存器250中,并使用儲存單元存取接口230將緩存器250中的值寫入字線WL1上的記憶單元。圖21是依據(jù)本發(fā)明實(shí)施例的字線寫入順序示意圖。此針對單一儲存單元的寫入順序可記錄于查找表(lookuptable)2100中,用以讓處理單元1210據(jù)以決定每次欲寫入的字線或頁面。查找表中包含三欄,分別記錄每一個(gè)字線WL0至WL63于第一次、第二次及第三次寫入間的順序。由于三層式單元中的值需要重復(fù)寫入數(shù)次后才會穩(wěn)定,因此當(dāng)處理單元1210通過處理單元存取接口250接收到其他電子裝置發(fā)出的數(shù)據(jù)讀取命令時(shí),需要先判斷儲存單元中儲存的值是否已經(jīng)穩(wěn)定。若是,則通過指定的儲存單元存取接口230[0]至230[j]中的一者讀取指定儲存單元中的指定地址的值,并回復(fù)給請求的電子裝置;若否,則從動態(tài)隨機(jī)存取存儲器1240中讀取欲儲存至指定儲存單元中的指定地址的值,并回復(fù)給請求的電子裝置。于此須注意的是,關(guān)于動態(tài)隨機(jī)存取存儲器1240所暫存的值將儲存于何儲存單元中的何地址的信息可儲存于動態(tài)隨機(jī)存取存儲器1240或暫存器(register,未顯示)中,并且處理單元1210可通過此信息來判斷其他電子裝置欲讀取的值是否已穩(wěn)定地儲存于指定的儲存單元中。詳而言之,如果動態(tài)隨機(jī)存取存儲器1240或暫存器中儲存的信息中指出動態(tài)隨機(jī)存取存儲器1240所暫存一部份的值將儲存于讀取地址,則代表欲讀取的值尚未穩(wěn)定地儲存于儲存單元中。[0044]圖14是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于處理單元中的寫入方法流程圖。當(dāng)處理單元1210通過處理單元存取接口250接收到其他電子裝置發(fā)出的寫入命令及寫入地址后(步驟S1410),指示直接存儲器訪問控制器1220將欲寫入的值由處理單元存取接口250搬至動態(tài)隨機(jī)存取存儲器1240(步驟S1420)。判斷是否已經(jīng)接收完指定數(shù)目的頁面的值(步驟S1430),例如,第η至n+2頁的值,若是,進(jìn)行實(shí)際的寫入作業(yè)(步驟S1440至步驟S1470);否則,繼續(xù)通過處理單元存取接口250接收尚未傳送完的值(步驟S1410至步驟S1420)。于實(shí)際的寫入作業(yè)中,處理單元1210指示直接存儲器訪問控制器1230將最近暫存于動態(tài)隨機(jī)存取存儲器1240中指定數(shù)目的頁面的值儲存至緩存器1250(步驟S1440),指示儲存單元存取接口230將緩存器1250中的值寫入指定儲存單元中的指定字線上的三層式單元(步驟S1450)。接著,為了讓先前已寫入的值避免受到這次寫入作業(yè)的影響,處理單元1210更使用二個(gè)的批次來指示直接存儲器訪問控制器1230將暫存于動態(tài)隨機(jī)存取存儲器1240中最近已寫入至儲存單元的六個(gè)頁面的值再次儲存至緩存器1250。詳而言之,處理單元1210指示直接存儲器訪問控制器1230將暫存于動態(tài)隨機(jī)存取存儲器1240中的前第三至第一頁的值儲存至緩存器1250,例如,第n-3至η-l頁的值,并指示指定的儲存單元存取接口將緩存器1250中的值再次寫入指定儲存單元中的指定字線上的三層式單元(步驟S1460),以及,處理單元1210指示直接存儲器訪問控制器1230將暫存于動態(tài)隨機(jī)存取存儲器1240中的前第六至第四頁的值儲存至緩存器1250,例如,第n-3至η-l頁的值,并指示指定的儲存單元存取接口將緩存器1250中的值再次寫入指定儲存單元中的指定字線上的三層式單元(步驟S1470)。[0045]圖15是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于處理單元中的寫入方法流程圖。當(dāng)處理單元1210通過處理單元存取接口250接收到其他電子裝置發(fā)出的讀取命令及讀取地址后(步驟S1510),判斷欲讀取地址的值是否尚未穩(wěn)定地儲存于儲存單元中(步驟S1520)。若是,指示直接存儲器訪問控制器1220從動態(tài)隨機(jī)存取存儲器1240讀取請求的值并通過處理單元存取接口250回復(fù)給請求的電子裝置(步驟S1530);否則,通過儲存單元存取接口從儲存單元讀出指定地址的值(步驟S1540),并且將讀出的值通過處理單元存取接口250回復(fù)給請求的電子裝置(步驟S1550)。[0046]為了保護(hù)三層式單元中所儲存的數(shù)據(jù)(包含訊息及水平錯誤修正碼),可更儲存垂直錯誤修正碼而形成二維錯誤修正碼的保護(hù)。為了提升寫入數(shù)據(jù)的效率,本發(fā)明實(shí)施例提出一種新的訊息以及錯誤修正碼的擺放方式。圖18A是依據(jù)本發(fā)明實(shí)施例的使用RS(48,45)垂直錯誤修正碼的獨(dú)立磁盤冗余陣列群組的數(shù)據(jù)擺放示意圖。假設(shè)i=3,j=3且每條字線可儲存三個(gè)頁面的訊息及水平錯誤修正碼,或三個(gè)頁面的垂直錯誤修正碼。總共16個(gè)儲存單元10[0][0]至10[3][3]中的第一條字線WL0中所儲存48個(gè)頁面,可以形成一個(gè)獨(dú)立磁盤冗余陣列群組。其中,于儲存單元10[3][3]中的第一條字線WLO(陰影部分)中儲存3個(gè)頁面的垂直錯誤修正碼。圖18B是依據(jù)本發(fā)明實(shí)施例的使用RS(96,93)垂直錯誤修正碼的獨(dú)立磁盤冗余陣列群組的數(shù)據(jù)擺放示意圖。總共16個(gè)儲存單元10[0][0]至10[3][3]中的第一及第二條字線WL0及WL1中所儲存96個(gè)頁面,可以形成一個(gè)獨(dú)立磁盤冗余陣列群組。其中,于儲存單元10[3][3]中的第二條字線WL1(陰影部分)中儲存三個(gè)頁面的垂直錯誤修正碼。由于一個(gè)獨(dú)立磁盤冗余陣列群組中的各頁面數(shù)據(jù)被分開擺放在不同的實(shí)體儲存單元中,可避免當(dāng)其中的一個(gè)儲存單元發(fā)生不可回復(fù)的硬體錯誤時(shí)所造成數(shù)據(jù)不可回復(fù)的情形。此外,以上所述的擺放方式也可提升數(shù)據(jù)寫入的效率。請參考圖6。處理單元610可指示仲裁單元660以事先定義的順序?qū)?shù)據(jù)寫入每個(gè)儲存單元中的第一條字線。圖19B是依據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)寫入時(shí)序圖。儲存單元存取接口230[0]至230[3]分別以通道CH0至CH3表示,而連接至每個(gè)儲存單元存取接口的儲存單元分別以CEO至CE3表示。圖19B是寫入三個(gè)頁面PG0、PG1及PG2的數(shù)據(jù)(包含訊息及水平錯誤修正碼,或者是垂直錯誤修正碼)至所有儲存單元10[0][0]至10[3][3]中的第一個(gè)字線WL0的例子。仲裁單元660通過通道CH0至CH3依序?qū)⑷齻€(gè)頁面PG0、PG1及PG2的數(shù)據(jù)傳送到每個(gè)通道所連接的第一個(gè)儲存單元CEO中的緩存器(未顯示),接著,發(fā)送寫入命令給所有連接的儲存單元CE0,用以開始實(shí)際的寫入作業(yè)。當(dāng)儲存單元CEO中的任一者接收到寫入命令后,隨即進(jìn)入忙碌狀態(tài)(busystate)來將緩存器中三個(gè)頁面PGO、PG1及PG2的數(shù)據(jù)寫入到字線WL0中的三層式單元。當(dāng)所有儲存單元CEO開始實(shí)際的數(shù)據(jù)寫入作業(yè)時(shí),通道CH0至CH3處于可用狀態(tài),使得仲裁單元660可利用通道CH0至CH3依序?qū)⑷齻€(gè)頁面PGO、PG1及PG2的數(shù)據(jù)傳送到每個(gè)通道所連接的第二個(gè)儲存單元CE1中的緩存器(未顯示)。熟習(xí)此技藝人士可觀察到由于使用以上的獨(dú)立磁盤冗余陣列群組的數(shù)據(jù)擺放方式,使得通道CH0至CH3具有較少的閑置時(shí)間,并得以有效利用來傳送數(shù)據(jù)至儲存單元。[0047]圖6所示架構(gòu)中的儲存單元10[0][0]至10[j][i]也可以修改為包含多個(gè)三層式單元。圖20A至20D是依據(jù)本發(fā)明實(shí)施例的執(zhí)行于處理單元中的寫入數(shù)據(jù)方法流程圖。于一個(gè)獨(dú)立磁盤冗余陣列群組的寫入作業(yè)中,處理單元610首先將訊息計(jì)數(shù)器以及錯誤修正碼計(jì)數(shù)器設(shè)為0(步驟S2011),以及控制多路復(fù)用器640以耦接動態(tài)隨機(jī)存取存儲器620至緩存器650(步驟S2013)。接著,反復(fù)執(zhí)行一個(gè)包含步驟S2021至S2087的循環(huán)直到一個(gè)獨(dú)立磁盤冗余陣列群組中的訊息都寫入到指定的儲存單元中,例如,圖18A所示的儲存單元10[0][0]至10[3][3]的字線WL0,或者,圖18B所示的儲存單元10[0][0]至10[3][3]的字線WL0及WL1。[0048]步驟S2021至步驟S2031為寫入數(shù)據(jù)至所有儲存單元中的特定字線的準(zhǔn)備步驟。處理單元610使用變量q來決定此次寫入所使用的儲存單元存取接口為哪一個(gè),以及使用變量P來決定寫入至此儲存單元存取接口中的第幾個(gè)儲存單元。為了讓儲存于三層式單元中的值能夠穩(wěn)定,可以參考如圖14所描述的字線寫入方法,讓每個(gè)字線都能夠反復(fù)且交錯地寫入三次。于每一個(gè)字線的第一個(gè)儲存單元寫入作業(yè)中,設(shè)變量P=0及q=0(步驟S2021)。針對儲存單元10[q][p],處理單元610決定欲寫入的字線或頁面,例如,字線WL0或頁面PG0至PG2(步驟S2023)。處理單元610可參考如圖21所示的寫入順序以決定欲寫入的字線或頁面。接著,選擇性地將訊息計(jì)數(shù)器維持為0或MAXixMAXjxn,以及將錯誤修正碼計(jì)數(shù)器設(shè)為0,其中常數(shù)MAXj代表儲存單元存取接口的總數(shù),常數(shù)MAXi代表連結(jié)于每一個(gè)儲存單元存取接口的儲存單元總數(shù),變量η則代表已經(jīng)完成的字線總數(shù)(步驟S2025)。以圖18Β所示的使用RS(96,93)錯誤修正碼的獨(dú)立磁盤冗余陣列群組的數(shù)據(jù)擺放為例,當(dāng)這次寫入作業(yè)關(guān)聯(lián)于字線WLO時(shí),則將訊息計(jì)數(shù)器維持為0。當(dāng)這次寫入作業(yè)關(guān)聯(lián)于字線WL1時(shí),則將訊息計(jì)數(shù)器設(shè)為4x4x1=16。[0049]步驟S2031至S2035則用來寫入訊息及水平錯誤修正碼至指定的儲存單元10[q][P]。處理單元610指示直接存儲器訪問控制器621將動態(tài)隨機(jī)存取存儲器620中儲存的三個(gè)頁面訊息經(jīng)由多路復(fù)用器640儲存至緩存器650,并同時(shí)儲存至磁盤陣列編碼單元630中的緩存器(未顯示)(步驟S2031)。接著,處理單元610控制仲裁單元660讀取緩存器650中的值并指示儲存單元存取接口230[q]寫入至儲存單元10[q][p](步驟S2033)。接著,處理單元610將訊息計(jì)數(shù)器加三(步驟S2035)。針對所有儲存單元的寫入時(shí)序可參考圖19的說明。[0050]步驟S2041、S2081至S2087用以決定下一次寫入作業(yè)是針對哪一個(gè)儲存單元存取接口及儲存單元。當(dāng)處理單元610判斷訊息計(jì)數(shù)器的值小于閾值后(步驟S2041中”否”的路徑),將變量q加一(步驟S2081)。以圖18B所示的使用RS(96,93)錯誤修正碼的獨(dú)立磁盤冗余陣列群組的數(shù)據(jù)擺放為例,訊息計(jì)數(shù)器的值小過閾值(如93)則代表一個(gè)獨(dú)立磁盤冗余陣列群組中的訊息尚未全部寫完。接著,判斷變量q是否大于或等于常數(shù)MAXj(步驟S2083),若否,則此流程繼續(xù)進(jìn)行至步驟S2031;若是,則將變量p加一并將變量q設(shè)為0(步驟S2085),并接著判斷變量p是否大于或等于常數(shù)MAXi(步驟S2087)。當(dāng)變量p大于或等于常數(shù)MAXi時(shí)(步驟S2087中”是”的路徑),代表所有的儲存單元中的指定字線已經(jīng)寫入完成,流程繼續(xù)進(jìn)行至步驟S2021,用以繼續(xù)下一個(gè)字線的寫入作業(yè)。否則(步驟S2087中”否”的路徑),流程繼續(xù)進(jìn)行至步驟S2031。[0051]由于垂直錯誤修正碼也要被寫入三次才會穩(wěn)定,本發(fā)明實(shí)施例提出一種程序,用以暫存第一次產(chǎn)生的垂直錯誤修正碼于動態(tài)隨機(jī)存取存儲器620中,并且于后續(xù)重新寫入時(shí)直接從動態(tài)隨機(jī)存取存儲器620中取得已經(jīng)產(chǎn)生的垂直錯誤修正碼,而不需要重新計(jì)算。以圖18B所示的使用RS(96,93)錯誤修正碼的獨(dú)立磁盤冗余陣列群組的數(shù)據(jù)擺放為例,另一種實(shí)施方式,當(dāng)磁盤陣列編碼單元630要產(chǎn)生相應(yīng)于儲存單元10[3][3]的字線WL1的垂直錯誤修正碼時(shí),可從動態(tài)隨機(jī)存取存儲器620重新載入欲儲存于16個(gè)儲存單元中的字線WL0及WL1中的值來產(chǎn)生垂直錯誤修正碼,然而,這將耗費(fèi)大量的時(shí)間。步驟S2051至S2079用以寫入垂直錯誤修正碼至指定的儲存單元10[q][p]。當(dāng)處理單元610判斷訊息計(jì)數(shù)器的值大于或等于閾值后(步驟S2041中”是”的路徑),將變量p加一(步驟S2051)。接著,判斷此獨(dú)立磁盤冗余陣列群組的垂直錯誤修正碼是否已產(chǎn)生過(步驟S2053),是則讓儲存單元存取接口230[q]取得動態(tài)隨機(jī)存取存儲器620中暫存的先前計(jì)算結(jié)果,并寫入至儲存單元10[q][p](步驟S2061至S2068);否則,讓儲存單元存取接口230[q]取得磁盤陣列編碼單元630的編碼結(jié)果,并寫入至儲存單元10[q][p](步驟S2071至S2079)。[0052]如步驟S2071至S2079所示的循環(huán)會反復(fù)執(zhí)行直到所有由磁盤陣列編碼單元630所產(chǎn)生的垂直錯誤修正碼都寫入至指定的儲存單元中。詳細(xì)而言,處理單元610控制多路復(fù)用器640用以耦接磁盤陣列編碼單元630與緩存器650(步驟S2071),并指示磁盤陣列編碼單元630將三頁的垂直錯誤修正碼經(jīng)由多路復(fù)用器640輸出至緩存器650,并且指示直接存儲器訪問控制器621將磁盤陣列編碼單元630中的緩存器(未顯示)的計(jì)算結(jié)果儲存至動態(tài)隨機(jī)存取存儲器620中(步驟S2073)。接著,處理單元610控制仲裁單元660以讀取緩存器650中的值并指示儲存單元存取接口230[q]寫入至儲存單元10[q][p]中的指定字線(步驟S2075)。處理單元610將錯誤修正碼計(jì)數(shù)器加三后(步驟S2076),判斷錯誤修正碼計(jì)數(shù)器的值是否大于或等于閾值,例如,常數(shù)1(步驟S2077)。若是,則繼續(xù)進(jìn)行步驟S2069;否則,將變量p加一后(步驟S2079),回到步驟S2073,用以寫入獨(dú)立磁盤冗余陣列群組中未完成的垂直錯誤修正碼。[0053]如步驟S2061至S2068所示的循環(huán)會反復(fù)執(zhí)行直到所有于動態(tài)隨機(jī)存取存儲器620所暫存的垂直錯誤修正碼都寫入至指定的儲存單元中。詳細(xì)而言,處理單元610指示直接存儲器訪問控制器621將動態(tài)隨機(jī)存取存儲器620中暫存的三頁垂直錯誤修正碼經(jīng)由多路復(fù)用器640儲存至緩存器650(步驟S2061)。接著,處理單元610控制仲裁單元660以指示儲存單元存取接口230[q]讀取緩存器650中的值并寫入至儲存單元10[q][p]中的指定字線(步驟S2063)。處理單元610將錯誤修正碼計(jì)數(shù)器加三后(步驟S2065),判斷錯誤修正碼計(jì)數(shù)器的值是否大于或等于閾值,例如,1(步驟S2067)。若是,則繼續(xù)進(jìn)行步驟S2069;否則,將變量p加一后(步驟S2068),回到步驟S2061,用以寫入獨(dú)立磁盤冗余陣列群組中未完成的垂直錯誤修正碼。最后,處理器單元610判斷是否完成所有的寫入作業(yè)(步驟S2069),是則結(jié)束整個(gè)數(shù)據(jù)寫入處理;否則控制多路復(fù)用器640用以耦接動態(tài)隨機(jī)存取存儲器620與緩存器650后(步驟S2080),回到步驟S2021,用以繼續(xù)進(jìn)行下一個(gè)獨(dú)立磁盤冗余陣列群組的數(shù)據(jù)寫入作業(yè)。步驟S2033、S2063與S2075的技術(shù)細(xì)節(jié)可參考圖8的說明。[0054]雖然圖1至3、圖6、圖9及圖12中包含了以上描述的元件,但不排除在不違反發(fā)明的精神下,使用更多其他的附加元件,已達(dá)成更佳的技術(shù)效果。此外,雖然圖7A至7B、圖8、圖10至11、圖14至15以及圖20A至20D的流程圖采用指定的順序來執(zhí)行,但是在不違法發(fā)明精神的情況下,熟習(xí)此技藝人士可以在達(dá)到相同效果的前提下,修改這些步驟間的順序,所以,本發(fā)明并不局限于僅使用如上所述的順序。此外,熟習(xí)此技藝人士亦可以將若干步驟整合為一個(gè)步驟,或者是除了這些步驟外,循序或平行地執(zhí)行更多步驟,本發(fā)明也不因此而局限。[0055]雖然本發(fā)明使用以上實(shí)施例進(jìn)行說明,但需要注意的是,這些描述并非用以限縮本發(fā)明。相反地,此發(fā)明涵蓋了熟習(xí)此技藝人士顯而易見的修改與相似設(shè)置。所以,申請權(quán)利要求范圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設(shè)置。[0056]【符號說明】[0057]10儲存單元;[0058]110存儲器單元陣列;[0059]120行解碼單元;[0060]130列編碼單元;[0061]140地址單元;[0062]150數(shù)據(jù)緩存器;[0063]20快閃存儲器的系統(tǒng)架構(gòu);[0064]200控制器;[0065]210控制單元;[0066]230儲存單元存取接口;[0067]250處理單元存取接口;[0068]300快閃儲存裝置;[0069]10[0][0]?10[j][i]儲存單元;[0070]310[0][0]?310[j][i]電子信號;[0071]230[0]?230[j]儲存單元存取接口;[0072]410[0][0][0]?410[j][i][k]區(qū)段數(shù)據(jù);[0073]510訊息;[0074]530水平錯誤修正碼;[0075]510[0][0][0]?510[j][i][0]訊息;[0076]530[0][0][0]?530[j][i][0]水平錯誤修正碼;[0077]610處理單元;[0078]620動態(tài)隨機(jī)存取存儲器;[0079]621、623直接存儲器訪問控制器;[0080]630磁盤陣列編碼單元;[0081]640多路復(fù)用器;[0082]650緩存器;[0083]660仲裁單元;[0084]S711?S751方法步驟;[0085]S811?S831方法步驟;[0086]910處理單元;[0087]930磁盤陣列解碼單元;[0088]950緩存器;[0089]960區(qū)段解碼單元;[0090]S1010?SlO1方法步驟;[0091]S1110?S1170方法步驟;[0092]1210處理單元;[0093]1220,1230直接存儲器訪問控制器;[0094]1240動態(tài)隨機(jī)存取存儲器;[0095]1250緩存器;[0096]1300三層式單元區(qū)塊;[0097]PG0?PG191頁面;[0098]WL0?WL63字線:[0099]S1410?S1470方法步驟;[0100]S1510?S1550方法步驟;[0101]LSB最低比特;[0102]CSB中間比特;[0103]MSB最聞比特;[0104]10[0][0]?10[3][3]儲存單元;[0105]CH0?CH3通道;[0106]CEO?CE3連接至特定通道的儲存單元;[0107]S2011?S2087方法步驟;[0108]2100字線寫入順序查找表?!緳?quán)利要求】1.一種存取快閃存儲器中儲存單元的方法,由一仲裁單元執(zhí)行,包含:以一第一批次傳送數(shù)據(jù)至每一儲存單元存取接口所連接的一第一儲存單元后,發(fā)送一寫入命令給每一上述第一儲存單元,使得上述第一儲存單元開始寫入作業(yè);以及于上述第一儲存單元的寫入作業(yè)期間,以一第二批次傳送數(shù)據(jù)至每一上述儲存單元存取接口所連接的一第二儲存單元。2.如權(quán)利要求1所述的存取快閃存儲器中儲存單元的方法,其特征在于,上述第一儲存單元以及上述第二儲存單元中的一者包含多個(gè)單層式單元或三層式單元。3.如權(quán)利要求1所述的存取快閃存儲器中儲存單元的方法,其特征在于,傳送至上述第一儲存單元或上述第二儲存單元中的上述數(shù)據(jù)中包含一訊息或一垂直錯誤修正碼。4.如權(quán)利要求3所述的存取快閃存儲器中儲存單元的方法,其特征在于,每一上述儲存單元存取接口依據(jù)上述訊息或上述垂直錯誤修正碼產(chǎn)生一水平錯誤修正碼,并且將上述訊息以及關(guān)聯(lián)于上述訊息的上述水平錯誤修正碼,或上述垂直錯誤修正碼以及關(guān)聯(lián)于上述垂直錯誤修正碼的上述水平錯誤修正碼寫入至上述第一儲存單元或上述第二儲存單元。5.如權(quán)利要求4所述的存取快閃存儲器中儲存單元的方法,其特征在于,上述訊息、上述垂直錯誤修正碼以及上述水平錯誤修正碼形成一獨(dú)立磁盤冗余陣列群組。6.如權(quán)利要求1所述的存取快閃存儲器中儲存單元的方法,其特征在于,當(dāng)上述第一儲存單元或上述第二儲存單元接收到上述寫入命令后,進(jìn)入忙碌狀態(tài)用以將上述數(shù)據(jù)寫入至一字線上的存儲器單元。7.如權(quán)利要求1所述的存取快閃存儲器中儲存單元的方法,其特征在于,傳送至上述第一儲存單元中的一者的上述數(shù)據(jù)中包含一訊息,以及傳送至上述第二儲存單元中的一者的上述數(shù)據(jù)中包含一垂直錯誤修正碼。8.如權(quán)利要求7所述的存取快閃存儲器中儲存單元的方法,其特征在于,上述第一儲存單元以及上述第二儲存單元實(shí)施于不同的管芯上。9.如權(quán)利要求1所述的存取快閃存儲器中儲存單元的方法,其特征在于,上述第一儲存單元以及上述第二儲存單元擁有獨(dú)立的芯片致能控制信號。10.一種存取快閃存儲器中的儲存單元的裝置,包含:多個(gè)儲存單元存取接口;以及一仲裁單元,耦接至上述儲存單元存取接口,以一第一批次傳送數(shù)據(jù)至每一上述儲存單元存取接口所連接的一第一儲存單元后,發(fā)送一寫入命令給每一上述第一儲存單元,使得上述第一儲存單元開始寫入作業(yè);以及于上述第一儲存單元的寫入作業(yè)期間,以一第二批次傳送數(shù)據(jù)至每一上述儲存單元存取接口所連接的一第二儲存單元。11.如權(quán)利要求10所述的存取快閃存儲器中的儲存單元的裝置,其特征在于,上述第一儲存單元以及上述第二儲存單元中的一者包含多個(gè)單層式單元或三層式單元。12.如權(quán)利要求10所述的存取快閃存儲器中的儲存單元的裝置,其特征在于,傳送至上述第一儲存單元或上述第二儲存單元中的上述數(shù)據(jù)中包含一訊息或一垂直錯誤修正碼。13.如權(quán)利要求12所述的存取快閃存儲器中的儲存單元的裝置,其特征在于,每一上述儲存單元存取接口依據(jù)上述訊息或上述垂直錯誤修正碼產(chǎn)生一水平錯誤修正碼,并且將上述訊息以及關(guān)聯(lián)于上述訊息的上述水平錯誤修正碼,或上述垂直錯誤修正碼以及關(guān)聯(lián)于上述垂直錯誤修正碼的上述水平錯誤修正碼寫入至上述第一儲存單元或上述第二儲存單JLiο14.如權(quán)利要求13所述的存取快閃存儲器中的儲存單元的裝置,其特征在于,上述訊息、上述垂直錯誤修正碼以及上述水平錯誤修正碼形成一獨(dú)立磁盤冗余陣列群組。15.如權(quán)利要求10所述的存取快閃存儲器中的儲存單元的裝置,其特征在于,當(dāng)上述第一儲存單元或上述第二儲存單元接收到上述寫入命令后,進(jìn)入忙碌狀態(tài)用以將上述數(shù)據(jù)寫入至一字線上的存儲器單元。16.如權(quán)利要求10所述的存取快閃存儲器中的儲存單元的裝置,其特征在于,傳送至上述第一儲存單元中的一者的上述數(shù)據(jù)中包含一訊息,以及傳送至上述第二儲存單元中的一者的上述數(shù)據(jù)中包含一垂直錯誤修正碼。17.如權(quán)利要求16所述的存取快閃存儲器中的儲存單元的裝置,其特征在于,上述第一儲存單元以及上述第二儲存單元實(shí)施于不同的管芯上。18.如權(quán)利要求10所述的存取快閃存儲器中的儲存單元的裝置,其特征在于,上述第一儲存單元以及上述第二儲存單元擁有獨(dú)立的芯片致能控制信號?!疚臋n編號】G11C16/02GK104425018SQ201410322436【公開日】2015年3月18日申請日期:2014年7月8日優(yōu)先權(quán)日:2013年8月23日【發(fā)明者】楊宗杰,沈揚(yáng)智,許勝一申請人:慧榮科技股份有限公司