TWI552160B - 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置 - Google Patents

存取快閃記憶體中儲存單元的方法以及使用該方法的裝置 Download PDF

Info

Publication number
TWI552160B
TWI552160B TW102148369A TW102148369A TWI552160B TW I552160 B TWI552160 B TW I552160B TW 102148369 A TW102148369 A TW 102148369A TW 102148369 A TW102148369 A TW 102148369A TW I552160 B TWI552160 B TW I552160B
Authority
TW
Taiwan
Prior art keywords
storage unit
unit
segment
decoding unit
flash memory
Prior art date
Application number
TW102148369A
Other languages
English (en)
Other versions
TW201508758A (zh
Inventor
楊宗杰
Original Assignee
慧榮科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Priority to CN201710865267.0A priority Critical patent/CN107632904B/zh
Priority to CN201710368201.0A priority patent/CN107193684B/zh
Priority to CN201410322424.XA priority patent/CN104424040B/zh
Priority to US14/330,887 priority patent/US9513995B2/en
Priority to KR1020140109943A priority patent/KR101606392B1/ko
Publication of TW201508758A publication Critical patent/TW201508758A/zh
Application granted granted Critical
Publication of TWI552160B publication Critical patent/TWI552160B/zh

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Description

存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
本發明關連於一種快閃記憶體裝置,特別是一種存取快閃記憶體中儲存單元的方法以及使用該方法的裝置。
快閃記憶體(flash memory)中的記憶單元(memory cells)可能於多次的存取後失效。此外,亦可能於生產過程中,會因為粉塵或是光罩問題,使得儲存單元中的一整列(column)的資料都無法正確存取。因此,本發明提出一種存取快閃記憶單元的方法以及使用該方法的裝置,用以保護快閃記憶體中儲存的資料。
本發明的實施例提出一種存取快閃記憶體中儲存單元的方法,由處理單元執行,包含下列步驟。接收到區段中之訊息無法使用此區段中之水平錯誤修正碼進行回復的通知後,決定屬於相同獨立磁碟冗餘陣列群組中的其他區段位址。指示區段解碼單元以及磁碟陣列解碼單元有關垂直修正程序已經啟動的訊息。接著,指示多個儲存單元存取介面讀取決定之其他區段位址的內容,從而使磁碟陣列解碼單元使用讀取的內容來回復區段中的訊息。
本發明的實施例提出一種存取快閃記憶體中之儲存單元的裝置,包含區段解碼單元、磁碟陣列解碼單元以及處理單元。處理單元,耦接於區段解碼單元以及磁碟陣列解碼單元,接收到區段中之訊息無法使用此區段中之水平錯誤修正碼進行回復的通知後,決定屬於相同獨立磁碟冗餘陣列群組中的其他區段位址;指示區段解碼單元以及磁碟陣列解碼單元有關垂直修正程序已經啟動的訊息;以及指示多個儲存單元存取介面讀取決定之其他區段位址的內容,從而使磁碟陣列解碼單元使用讀取的內容來回復區段中的訊息。
10‧‧‧儲存單元
110‧‧‧記憶體單元陣列
120‧‧‧行解碼單元
130‧‧‧列編碼單元
140‧‧‧位址單元
150‧‧‧資料緩存器
20‧‧‧快閃記憶體的系統架構
200‧‧‧控制器
210‧‧‧控制單元
230‧‧‧儲存單元存取介面
250‧‧‧處理單元存取介面
300‧‧‧快閃儲存裝置
10[0][0]~10[j][i]‧‧‧儲存單元
310[0][0]~310[j][i]‧‧‧電子訊號
230[0]~230[j]‧‧‧儲存單元存取介面
410[0][0][0]~410[j][i][k]‧‧‧區段資料
510‧‧‧訊息
530‧‧‧水平錯誤修正碼
510[0][0][0]~510[j][i][0]‧‧‧訊息
530[0][0][0]~530[j][i][0]‧‧‧水平錯誤修正碼
610‧‧‧處理單元
620‧‧‧動態隨機存取記憶體
621、623‧‧‧直接記憶體存取控制器
630‧‧‧磁碟陣列編碼單元
640‧‧‧多工器
650‧‧‧緩存器
660‧‧‧仲裁單元
S711~S751‧‧‧方法步驟
S811~S831‧‧‧方法步驟
910‧‧‧處理單元
930‧‧‧磁碟陣列解碼單元
950‧‧‧緩存器
960‧‧‧區段解碼單元
S1010~S1070‧‧‧方法步驟
S1110~S1170‧‧‧方法步驟
1210‧‧‧處理單元
1220、1230‧‧‧直接記憶體存取控制器
1240‧‧‧動態隨機存取記憶體
1250‧‧‧緩存器
1300‧‧‧三層式單元區塊
PG0~PG191‧‧‧頁面
WL0~WL63‧‧‧字元線
S1410~S1470‧‧‧方法步驟
S1510~S1550‧‧‧方法步驟
LSB‧‧‧最低位元
CSB‧‧‧中間位元
MSB‧‧‧最高位元
10[0][0]~10[3][3]‧‧‧儲存單元
CH0~CH3‧‧‧通道
CE0~CE3‧‧‧連接至特定通道的儲存單元
S2011~S2087‧‧‧方法步驟
2100‧‧‧字元線寫入順序查找表
第1圖係依據本發明實施例之快閃記憶體中的儲存單元示意圖。
第2圖係依據本發明實施例之快閃記憶體的系統架構示意圖。
第3圖係依據本發明實施例之快閃記憶體的存取介面示意圖。
第4圖係依據本發明實施例的邏輯資料儲存示意圖。
第5A圖係依據本發明實施例應用於每一區段的資料儲存示意圖。
第5B圖係依據本發明實施例的二維錯誤修正碼示意圖。
第6圖係依據本發明實施例之用以執行寫入作業的系統方塊圖。
第7A及7B圖係依據本發明實施例之執行於處理單元中之 資料寫入方法流程圖。
第8圖係依據本發明實施例之執行於儲存單元存取介面中之資料寫入方法流程圖。
第9圖係依據本發明實施例之用以執行讀取作業的系統方塊圖。
第10圖係依據本發明實施例之執行於區段解碼單元中之資料讀取方法流程圖。
第11圖係依據本發明實施例之執行於處理單元中之資料讀取方法流程圖。
第12圖係依據本發明實施例之用以執行寫入作業的系統方塊圖。
第13圖係依據本發明實施例之一個儲存單元中的三層式單元區塊的示意圖。
第14圖係依據本發明實施例之執行於處理單元中之寫入方法流程圖。
第15圖係依據本發明實施例之執行於處理單元中之寫入方法流程圖。
第16A圖係依據本發明實施例之眾多單層式單元的臨界電壓分布示意圖。
第16B圖係依據本發明實施例之眾多多層式單元的臨界電壓分布示意圖。
第16C圖係依據本發明實施例之眾多三層式單元的臨界電壓分布示意圖。
第17A至17C係顯示依據本發明實施例之經三次寫入操作 後之一個字元線上的眾多三層式單元的臨界電壓分布示意圖。
第18A圖係依據本發明實施例之使用RS(48,45)垂直錯誤修正碼之獨立磁碟冗餘陣列群組的資料擺放示意圖。
第18B圖係依據本發明實施例之使用RS(96,93)垂直錯誤修正碼之獨立磁碟冗餘陣列群組的資料擺放示意圖。
第19A至19B圖係依據本發明實施例之資料寫入時序圖。
第20A至20D圖係依據本發明實施例之執行於處理單元中之寫入資料方法流程圖。
第21圖係依據本發明實施例之字元線寫入順序示意圖。
本發明實施例提出一種存取快閃記憶體中儲存單元的方法以及使用該方法的裝置,用以編碼即將儲存至儲存單元的資料,以及解碼從儲存單元中讀取的資料。第1圖係依據本發明實施例之快閃記憶體中的儲存單元示意圖。儲存單元10包含由MxN個記憶體單元(memory cells)組成的陣列(array)110,而每一個記憶體單元儲存至少一個位元(bit)的資訊。快閃記憶體可以是NOR型快閃記憶體(NOR flash memory)、NAND型快閃記憶體,或其他種類的快閃記憶體。為了正確存取資訊,行解碼單元120用以選擇記憶體單元陣列110中指定的行,而列編碼單元130用以選擇指定行中一定數量的位元組的資料作為輸出。位址單元140提供行資訊給行解碼器120,其中定義了選擇記憶體單元陣列110中的那些行。相似地,列解碼器130則根據位址單元140提供的列資訊,選擇記憶 體單元陣列110的指定行中一定數量的列進行讀取或寫入操作。行可稱為為字元線(wordline),列可稱為位元線(bitline)。資料緩存器(data buffer)150可處存從記憶體單元陣列110讀取出的資料,或欲寫入記憶體單元陣列110中的資料。記憶體單元可為單層式單元(single-level cells,SLCs)、多層式單元(multi-level cells,MLCs)或三層式單元(triple-level cells,TLCs)。
一個單層式單元中可表示兩個狀態,其中之一係為於浮閘(floating gate)中擁有零電荷(zero charge)以及抹除後尚未寫入的狀態(通常定義為”1”的狀態),而另一則為於浮閘中擁有一些數量的負電荷(negative charge)的狀態(通常定義為”0”的狀態)。擁有負電荷的閘會讓此單元中之電晶體的臨界電壓(threshold voltage)增加,亦即是當施加此電壓至電晶體的控制閘(control gate)時可造成電晶體導通。一種可行的讀取儲存位元方式為檢查此單元中的臨界電壓。如果此臨界電壓處於較高的狀態,則位元值為”0”。如果此臨界電壓處於較低的狀態,則位元值為”1”。第16A圖係依據本發明實施例之眾多單層式單元的臨界電壓分布示意圖。因為快閃記憶體中的記憶體單元間的特性及操作結果並不會完全一致(例如,因為雜質濃度的微小變異或矽結構上的缺陷),雖然使用相同的寫入作業至所有的記憶體單元,卻不能讓所有的記憶體單元擁有完全一致的臨界電壓。因此,臨界電壓的分布如第16A所示。狀態”1”的單層式單元通常擁有負臨界電壓,使得大部分的單元擁有接近於左峰的中心電壓,而少部分的單元則擁有較高或較低於左 峰中心電壓的臨界電壓。相似地,狀態”0”的單層式單元通常擁有正臨界電壓,使得大部分的單元擁有接近於右峰的中心電壓,而少部分的單元擁有較高或較低於右峰中心電壓的臨界電壓。
雖然多層式單元從字面上表示為擁有多於二個電壓位準的狀態,亦即是,每個單元可表示多於一個位元的資訊,但目前大多的多層式單元只表示二個位元的資訊,從而提供如下所示的範例。單一個多層式單元使用四個不同狀態中之一者來儲存二個位元的資訊,其中的一個位元稱為最低位元(Least Significant Bit,LSB),另一個位元則稱為最高位元(Most Significant Bit,MSB)。由於一個記憶體單元的狀態係使用臨界電壓來表示,多層式單元的臨界電壓會有四個不同的有效區間。第16B圖係依據本發明實施例之眾多多層式單元的臨界電壓分布示意圖。預期的分布擁有四個峰,每一者相應於一個狀態。相似地,單一個三層式單元使用八個不同狀態中之一者來儲存三個位元的資訊,其中的一個位元稱為最低位元,另一個位元稱為中間位元(Center Significant Bit,CSB),而最後一個位元稱為最高位元。三層式單元的臨界電壓會有八個不同的有效區間。第16C圖係依據本發明實施例之眾多三層式單元的臨界電壓分布示意圖。預期的分布擁有八個峰,每一者相應於一個狀態。需注意的是,本發明也可應用在每個記憶體單元支援超過三個位元的快閃記憶體裝置中。
第2圖係依據本發明實施例之快閃記憶體的系統架構示意圖。快閃記憶體的系統架構20中包含控制器200,用 以寫入資料到儲存單元10中的指定位址,以及從儲存單元10中的指定位址讀取資料。詳細來說,控制單元210透過儲存單元存取介面230寫入資料到儲存單元10中的指定位址,以及從儲存單元10中的指定位址讀取資料。系統架構20使用數個電子訊號來協調控制器200與儲存單元10間的資料與命令傳遞,包含資料線(data line)、時脈訊號(clock signal)與控制訊號(control signal)。資料線可用以傳遞命令、位址、讀出及寫入的資料;控制訊號線可用以傳遞晶片致能(chip enable,CE)、位址提取致能(address latch enable,ALE)、命令提取致能(command latch enable,CLE)、寫入致能(write enable,WE)等控制訊號。儲存單元存取介面230可採用雙倍資料率(double data rate,DDR)通訊協定與儲存單元10溝通,例如,開放NAND快閃(open NAND flash interface,ONFI)、雙倍資料率開關(DDR toggle)或其他介面。控制單元210另可使用處理單元存取介面250透過指定通訊協定與其他電子裝置進行溝通,例如,通用序列匯流排(universal serial bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊元件互聯(peripheral component interconnect express,PCI-E)或其他介面。
一個快閃儲存裝置(flash storage)可包含多個儲存單元10,每一個儲存單元實施於一個晶粒(die)上,具有各自獨立的介面與儲存單元存取介面230溝通。於存取大量資料時,這些存取儲存單元的操作(例如,讀取或寫入操作)可以被管線化(pipelined),提升存取效率。第3圖係依據本發明實施例之快 閃記憶體的存取介面示意圖。快閃儲存裝置300可包含j+1個通道(channel),每一個通道包含i+1個儲存單元。換句話說,i+1個儲存單元分享同一個通道。例如,當快閃儲存裝置300包含8個通道(j=7)且每一個通道包含8個儲存單元(i=7)時,快閃儲存裝置300一共擁有64個儲存單元10[0..j][0..i]。快閃記憶體的控制單元可使用快閃儲存裝置300所提供的電子訊號310[0..j][0..i]中之一者,將資料儲存至指定的儲存單元,以及/或從指定的儲存單元讀取資料。每個儲存單元擁有獨立的晶片致能(CE)控制訊號。換句話說,當欲對指定儲存單元存取介面(又可稱為通道)所連接的指定儲存單元進行資料存取時,需要致能相應的晶片致能控制訊號。熟習此技藝人士可在快閃儲存裝置300中使用任意數目的通道,而每一通道可包含任意數目的儲存單元,本發明並不因此而受限。
為了確保儲存訊息(message)的正確性,可加上儲存二維的錯誤修正碼(two-dimensional error correction code,ECC)來保護。第4圖係依據本發明實施例的邏輯資料儲存示意圖。(j+1)x(i+1)個儲存單元中可包含用以儲存錯誤修正碼的l個(例如,l=123個)儲存單元,其中所儲存的碼又可稱為垂直錯誤修正碼(vertical ECC)。每一個垂直錯誤修正碼係根據其他(j+1)x(i+1)-l個儲存單元中相應位址的值產生。垂直錯誤修正碼可以是單同位元修正碼(single parity correction,SPC)、RS碼(Reed-Solomon code)或其他可提供修正錯誤功能的碼。例如,當i=7,j=7l=1時,儲存單元10[7][7]可儲存SPC(64,63)的錯誤修正碼。當i=7,j=7l=2時,儲存單元10[7][6]及10[7][7] 可儲存RS(64,62)的錯誤修正碼。當i=7,j=7l=3時,儲存單元10[7][5]、10[7][6]及10[7][7]可儲存RS(64,61)的錯誤修正碼。垂直錯誤修正碼用來提供儲存單元層次的保護,亦即是,當其中的一個儲存單元失效時,使用垂直錯誤修正碼以及其他儲存單元中所儲存正確的值可回復儲存於失效的儲存單元中的所有的值。其他不儲存垂直錯誤修正碼的儲存單元中,除了儲存訊息外,更儲存水平錯誤修正碼(horizontal ECC)。每一個儲存單元中的每條字元線可儲存k+1(例如k=31)個區段(sector)的資料。以上所述的k+1個區段又可統稱為一個頁面(page)。例如,針對指定一條字元線,儲存單元10[0][0]可儲存區段410[0][0][0]至區段410[0][0][k]的資料,儲存單元10[0][i]可儲存區段410[0][i][0]至區段410[0][i][k]的資料,儲存單元10[j][i]可儲存區段410[j][i][0]至區段410[j][i][k]的資料。區段410[0][0][0]至區段410[0][0][k]、區段410[0][i][0]至區段410[0][i][k]或410[j][i][0]至區段410[j][i][k]又可稱為一個晶片致能區段(CE sector)。第5A圖係依據本發明實施例應用於每一區段的資料儲存示意圖。區段410[0..j][0..i][0..k]中之任一者可包含訊息510與水平錯誤修正碼530。訊息長度是固定的,例如1K位元組(bytes)。水平錯誤修正碼530係根據訊息510中的值產生。水平錯誤修正碼可以是單同位元修正碼、RS碼或其他可提供修正錯誤功能的碼。水平錯誤修正碼係提供區段層次的保護,亦即是,當訊息中有可容許數量個值發生錯誤時,使用水平錯誤修正碼以及同一區段中所儲存其他正確的訊息值可還原這些錯誤的值。第5B圖係依據本發明實施例的二維錯誤修正 碼示意圖。其中,每一個區段中包含了訊息及水平錯誤修正碼,例如,區段410[0][0][0]中包含了訊息510[0][0][0]以及用來修正訊息中的錯誤的水平錯誤修正碼530[0][0][0]。假設l=1,亦即是僅使用一個儲存單元來儲存垂直錯誤修正碼。區塊510[j][i][0]儲存用以修正訊息510[0][0][0]至訊息510[j-1][i][0]中之錯誤位元的垂直修正碼,而區塊530[j][i][0]儲存用以修正水平錯誤修正碼530[0][0][0]至水平錯誤修正碼530[j-1][i][0]中之錯誤位元的垂直錯誤修正碼。當一個區塊中的錯誤位元太多或者是儲存單元發生硬體錯誤而造成水平錯誤修正碼無法還原此區塊中的訊息時,則可使用垂直錯誤修正碼加上其他區塊中正確的訊息來嘗試還原此區塊中的訊息。以上所述區塊加上用來保護區塊中的值的垂直錯誤修正碼可稱為一個獨立磁碟冗餘陣列群組(Redundant Array of Independent Disk,RAID group)。
第6圖係依據本發明實施例之用以執行寫入作業的系統方塊圖。處理單元610可使用多種方式實施,例如以專用硬體電路或通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行程式碼或軟體時,提供之後所描述的功能。從其他電子裝置所接收之欲寫入至指定儲存單元的訊息,會由處理單元存取介面250透過直接記憶體存取(DMA,Direct Memory Access)控制器623儲存至動態隨機存取記憶體620。儲存單元10[0][0]至10[j][i]中之任一者可包含多個單層式單元。多工器640可預設為耦接動態隨機存取記憶體620以及緩存器650。當處理單元 610偵測到動態隨機存取記憶體(DRAM-Dynamic Random Access Memory)620已儲存一定長度的訊息時,例如,32K位元組,指示直接記憶體存取控制器621將動態隨機存取記憶體620中儲存的訊息經由多工器640儲存至緩存器650,並同時儲存至磁碟陣列編碼單元630中的緩存器(未顯示)。磁碟陣列編碼單元630可使用習知的錯誤修正碼編碼方法依據目前的儲存結果以及新接收到的訊息來產生垂直錯誤修正碼,例如SPC(64,63)、RS(64,62)、RS(64,61)的錯誤修正碼。處理單元610可包含兩個計數器(counter),一為訊息計數器用以數算已經輸出的訊息次數,另一為錯誤修正碼計數器用以數算已經輸出的垂直錯誤修正碼次數。當處理單元610中的訊息計數器數算到已輸出的訊息次數到達一個閥值時,控制多工器640用以將磁碟陣列編碼單元630耦接上緩存器650,並且指示磁碟陣列編碼單元630將編碼完成的垂直錯誤修正碼以一或多個批次輸出至緩存器650。當處理單元610中的錯誤修正碼計數器數算到已輸出的次數到達一個閥值時,控制多工器640用以將動態隨機存取記憶體620耦接上緩存器650,用以繼續後續的訊息儲存作業。例如,當使用RS(64,61)的錯誤修正碼時,處理單元610會在訊息計數器數算已輸出訊息的次數達到61次時,控制多工器640用以將磁碟陣列編碼單元630耦接上緩存器650,並將訊息計數器重設為0;接著,處理單元610會在錯誤修正碼計數器數算已輸出錯誤修正碼的次數達到3次時,控制多工器640用以將動態隨機存取記憶體620耦接上緩存器650,並將錯誤修正碼計數器重設為0。於每次控制動態隨機存取記憶體620或磁碟陣列編碼單 元630的資料輸出後,處理單元610控制仲裁單元660讀取緩存器650中的區段或垂直錯誤修正碼的值並透過適當的儲存單元存取介面(例如,儲存單元存取介面230[0]至230[j]中之一者)寫入讀取的值至相應的儲存單元(例如,儲存單元10[0][0]至10[j][i]中之一者)。仲裁單元660可拉起(activate)適當的儲存單元存取介面中相應儲存單元的晶片致能訊號,並且透過儲存單元存取介面中的資料線將讀取的值及寫入位址傳給相應的儲存單元。每一個儲存單元存取介面(例如,儲存單元存取介面230[0]至230[j])另包含水平錯誤修正碼電路,用以分批次地讀取緩存器650中的資料(可能為訊息或垂直錯誤修正碼),並據以產生水平錯誤修正碼。詳細而言,當儲存單元存取介面每次從緩存器650讀取指定長度的訊息後,例如1K位元組,依據讀取的訊息510產生水平錯誤修正碼530。儲存單元存取介面接著將訊息510以及產生的水平錯誤修正碼530寫入至指定的儲存單元中的指定位址。
第7A及7B圖係依據本發明實施例之執行於處理單元中之資料寫入方法流程圖。於一個獨立磁碟冗餘陣列群組的寫入作業中,處理單元610首先將訊息計數器以及錯誤修正碼計數器設為0(步驟S711),以及控制多工器640以耦接動態隨機存取記憶體620至緩存器650(步驟S713)。接著,反覆執行一個包含步驟S721至S731的迴圈直到一個獨立磁碟冗餘陣列群組中的訊息都寫入到指定的儲存單元中,例如,儲存單元10[0][0]至10[j][i-l]。詳細而言,處理單元610於偵測到動態隨機存取記憶體620已儲存指定長度的新訊息後,例如,32K位元組(步 驟S721),指示直接記憶體存取控制器621將動態隨機存取記憶體620中儲存的訊息經由多工器640儲存至緩存器650,並同時儲存至磁碟陣列編碼單元630中的緩存器(未顯示)(步驟S723)。接著,處理單元610控制仲裁單元660讀取緩存器650中的值並透過適當的儲存單元存取介面(例如,儲存單元存取介面230[0]至230[j]中之一者)寫入讀取的值至相應的儲存單元(例如,儲存單元10[0][0]至10[j][i]中之一者)(步驟S725)。處理單元610將訊息計數器加一後(步驟S727),判斷訊息計數器的值是否超過閥值,例如,(j+1)x(i+1)-l-1(步驟S731)。若是,則繼續執行步驟S733至S751,用以寫入獨立磁碟冗餘陣列群組中的垂直錯誤修正碼;否則,回到步驟S721,用以寫入獨立磁碟冗餘陣列群組中未完成的訊息。
為寫入獨立磁碟冗餘陣列群組中的垂直錯誤修正碼,處理單元610控制多工器640以耦接磁碟陣列編碼單元630至緩存器650(步驟S733)。接著,反覆執行一個包含步驟S741至S751的迴圈直到獨立磁碟冗餘陣列群組中的垂直錯誤修正碼都寫入到指定的儲存單元中,例如,儲存單元10[j][i-l+1]至10[j][i]。詳而言之,處理單元610指示磁碟陣列編碼單元630將指定長度(例如,32K位元組)的垂直錯誤修正碼經由多工器640輸出至緩存器650(步驟S741)。接著,處理單元610控制仲裁單元660讀取緩存器650中的值並透過適當的儲存單元存取介面(例如,儲存單元存取介面230[j])寫入讀取的值至相應的儲存單元中的指定位址(例如,儲存單元10[j][i-l+1]至10[j][i]中之一者)(步驟S743)。處理單元610將錯誤修正碼計數器加一 後(步驟S745),判斷錯誤修正碼計數器的值是否超過閥值,例如,l-1(步驟S751)。若是,則回到步驟S711繼續下一個獨立磁碟冗餘陣列群組的寫入作業;否則,回到步驟S741,用以寫入獨立磁碟冗餘陣列群組中未完成的垂直錯誤修正碼。
第8圖係依據本發明實施例之執行於儲存單元存取介面中之資料寫入方法流程圖。此方法可應用於儲存單元存取介面230[0]至230[j]中之一者。當儲存單元存取介面由仲裁單元660接收到將特定長度的訊息(例如,32K位元組的訊息)寫入儲存單元的指示後(步驟S811),反覆執行一個包含步驟S821至S831的資料寫入迴圈直到完成所有的寫入作業。詳細來說,針對每一回合的寫入作業,儲存單元存取介面從仲裁單元660取得指定長度的訊息(例如,1K位元組的訊息)(步驟S821),依據取得的訊息產生水平錯誤修正碼(步驟S823),以及將訊息及產生的水平錯誤修正碼寫入指定儲存單元中的指定字元線的下一個區段的位址(步驟S825)。於此須注意的是,於步驟S825中,若為第一回合的寫入作業,則將讀取的訊息及產生的水平錯誤修正碼寫入指定字元線的第一個區段的位址。接著,儲存單元存取介面判斷是否完成所有的寫入作業(步驟S831)。若是,則結束整個流程;否則,回到步驟S821用以進行下一回合的寫入作業。第19A圖係依據本發明實施例之資料寫入時序圖。儲存單元存取介面230[0]至230[3]分別以通道CH0至CH3表示,而連接至每個儲存單元存取介面的儲存單元分別以CE0至CE3表示。第19A圖係寫入一個頁面PG0的資料(包含訊息及水平錯誤修正碼,或者是垂直錯誤修正碼)至所有儲存單元 10[0][0]至10[3][3]中的第一個字元線WL0的例子。仲裁單元660透過通道CH0至CH3依序將頁面PG0的資料傳送到每個通道所連接之第一個儲存單元CE0中的緩存器(未顯示),接著,發送寫入命令給所有連接之儲存單元CE0,用以開始實際的寫入作業。當儲存單元CE0中之任一者接收到寫入命令後,隨即進入忙碌狀態(busy state)來將緩存器中的頁面PG0的資料寫入到字元線WL0中的單層式單元。當所有儲存單元CE0開始實際的資料寫入作業時,通道CH0至CH3處於可用狀態,使得仲裁單元660可利用通道CH0至CH3依序將頁面PG0的資料傳送到每個通道所連接之第二個儲存單元CE1中的緩存器(未顯示)。熟習此技藝人士可觀察到由於使用以上的獨立磁碟冗餘陣列群組之資料擺放方式,使得通道CH0至CH3具有較少的閒置時間,並得以有效利用來傳送資料至儲存單元。
第9圖係依據本發明實施例之用以執行讀取作業的系統方塊圖。處理單元910可使用多種方式實施,例如以專用硬體電路或通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行程式碼或軟體時,提供之後所描述的功能。儲存單元10[0][0]至10[j][i]中之任一者可包含多個單層式單元。儲存單元存取介面(230[0]至230[j]中之一者)讀取相應之儲存單元中一個區段的值後,會將讀取的內容傳到區段解碼單元960。區段解碼單元960首先利用其中的水平錯誤修正碼檢查其中的訊息是否有錯誤,若是,則嘗試使用其中的水平錯誤修正碼進行修正。當訊息內容正確或已經修正成功後,區段解碼單元960捨棄水平 錯誤修正碼,將訊息內容儲存至緩存器950中,使得其他電子裝置可經由處理單元存取介面250讀取解碼後的訊息。當區段解碼單元960使用其中的水平錯誤修正碼還沒辦法修正訊息中的錯誤時,會發訊息通知處理單元910,訊息中包含發生錯誤但無法復原的區段位址等資訊。接著,處理單元910會啟動垂直修正程序。於垂直修正程序中,處理單元910先取得此區段位址所屬的獨立磁碟冗餘陣列群組的資訊,並找出可用來復原此錯誤區段位址中的訊息的所有其他區段位址(包含儲存垂直錯誤修正碼的區段位址)。例如,請參考第5B圖,假設區段410[0][0][0]中的訊息510[0][0][0]包含了即使使用水平錯誤修正碼530[0][0][0]還無法修正的錯誤時,其他可用來嘗試進行修正的區段為410[0][1][0]至410[j][i][0]。接著,處理單元910指示區段解碼單元960垂直修正程序已啟動,決定相應於無法修正之區段的其他區段,並且指示儲存單元存取介面230[0]至230[j]讀取指定之其他區段的值。當垂直修正程序啟動時,區段解碼單元960會透過儲存單元存取介面230[0]至230[j]依序獲得指定區段的值,並在解碼完成後傳送給磁碟陣列解碼單元930。磁碟陣列解碼單元930可使用所有所需區段的資料(包含原始訊息以及垂直錯誤修正碼)來復原先前無法修正的錯誤,並將復原的結果傳送至緩存器950,使得其他電子裝置可經由處理單元存取介面250讀取修正後的訊息。須注意的是,第9圖的處理單元910與第6圖的處理單元610可為同一個處理單元,本發明並不因此受限。
第10圖係依據本發明實施例之執行於區段解碼單 元中之資料讀取方法流程圖。區段解碼單元960從儲存單元存取介面230[0]至230[j]中之一者獲得一個區段的值後(步驟S1010),使用其中的水平錯誤修正碼檢查其中的訊息是否正確(步驟S1020)。若正確(步驟S1020中"是”的路徑),則將原始的訊息儲存於緩存器950中(步驟S1070);否則(步驟S1020中"否”的路徑),嘗試使用其中的水平錯誤修正碼修正訊息中存在的錯誤(步驟S1030)。接著,區段解碼單元960決定是否修正成功(步驟S1040)。若成功(步驟S1040中"是”的路徑),則將修正後的訊息儲存於緩存器950中(步驟S1070);否則(步驟S1040中"否”的路徑),發訊息給處理單元910用以通知此區段的錯誤無法使用水平錯誤修正碼回復(步驟S1050)。
第11圖係依據本發明實施例之執行於處理單元中之資料讀取方法流程圖。處理單元910從區段解碼單元接收指定區段無法使用水平錯誤修正碼回復的通知後(步驟S1110),決定屬於相同獨立磁碟冗餘陣列群組中的其他區段位址(步驟S1120)。例如,請參考第5B圖,當區段410[0][0][0]無法使用其中的水平錯誤修正碼510[0][0][0]回復時,處理單元910決定屬於相同獨立磁碟冗餘陣列群組中的其他區段為410[0][1][0]至410[j][i][0]。指示區段解碼單元960及磁碟陣列解碼單元930垂直修正程序已經啟動(步驟S1130)。當區段解碼單元960接收到指示後,會將由儲存單元存取介面230[0]至230[j]中之一者所讀取之指定的值解碼完成,並且輸出至磁碟陣列解碼單元930,而非儲存於緩存器950中。接著,處理單元910反覆地執行一個區段內容讀取的迴圈,用以指示儲存單元存取介面 230[0]至230[j]讀取上述指定區段的內容。於迴圈中,處理單元910指示指定的儲存單元存取介面讀取下一個區段的內容(步驟S1140)。受指示的儲存單元存取介面會將讀取的結果傳送至區段解碼單元960。區段解碼單元960解碼出其中的訊息後,傳送至磁碟陣列解碼單元930,而磁碟陣列解碼單元930則根據先前的解碼結果以及新接收到的訊息產生一個新的解碼結果。當處理單元910從受指示之儲存單元存取介面或區段解碼單元960接收到讀取完成的通知後(步驟S1150),決定是否完成屬於相同獨立磁碟冗餘陣列群組中所有其他區段的訊息讀取作業(步驟S1160)。若是(步驟S1160中"是”的路徑),則結束迴圈;否則(步驟S1160中"否”的路徑),指示指定的儲存單元存取介面繼續讀取下一個區段的內容(步驟S1140)。當迴圈結束時,處理單元910指示區段解碼單元960及磁碟陣列解碼單元930垂直修正程序已經結束(步驟S1170)。當區段解碼單元960接收到垂直修正程序已經結束的指示後,會將之後完成解碼的值儲存於緩存器950中,而非輸出至磁碟陣列解碼單元930。另一方面,當磁碟陣列解碼單元930接收到指示後,將目前的解碼結果儲存於緩存器950,作為指定區段的回復結果。
第12圖係依據本發明實施例之用以執行寫入作業的系統方塊圖。處理單元1210可使用多種方式實施,例如以專用硬體電路或通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行程式碼或軟體時,提供之後所描述的功能。儲存單元10[0][0]至10[j][i]中之任一者可包含多個記憶單元,而每一個記憶單元 可以三層式單元實施。處理單元1210可控制儲存單元存取介面230用以將儲存於緩存器1250中的值寫入至儲存單元10[0][0]至10[j][i]中之一者。針對每一個儲存單元,處理單元1210可逐字元線(wordline)寫入值,其中,一個字元線上可儲存多頁(pages)的值。雖然以下以一個字元線包含三頁的值為例,但熟習此技藝人士亦可修改為於一個字元線上寫入更多或更少頁的值,本發明並不以此受限。一頁可包含8K、16K、32K或64K位元組(Bytes)的訊息。由於三層式單元會被鄰近字元線的寫入操作影響而使得原先儲存的電荷洩漏,或吸入更多的電荷,造成臨界電壓改變,所以,需要重複數次的寫入操作以避免因以上問題造成單元中代表的儲存值發生變化。以下說明的技術方案亦可稱為粗略至細緻(F&F,foggy and fine)的寫入方法。第17A至17C係顯示依據本發明實施例之經三次寫入操作後之一個字元線上的眾多三層式單元的臨界電壓分布示意圖。經過第一次寫入操作後,臨界電壓分布如第17A圖中的實線所示。從第17A圖中可觀察出經過第一次粗略的寫入作業後,臨界電壓分布無法產生具區別性的八個狀態。而接著,當鄰近的字元線進行寫入操作時,將影響此字元線上之三層式單元原先儲存的電荷,讓臨界電壓分布變得更糟。影響後的臨界電壓分布如第17A圖中的虛線所示。為了讓三層式單元中實際儲存的電荷數目更接近理想值,進行第二次寫入操作,而第二次寫入操作後的臨界電壓分布如第17B圖中的實線所示。從第17B圖中可觀察出經過第二次的寫入作業後,臨界電壓分布可以產出稍具區別性的八個狀態。但是,當受到鄰近字元線的後續寫入操作影響 時,此臨界電壓分布中的八個狀態間又產生些許重疊。影響後的臨界電壓分布如第17B圖中的虛線所示。為了再次調整受到影響的結果,此字元線會再進行第三次的寫入作業,讓臨界電壓分布中的八個狀態間可擁有較寬的間隔。經過第三次寫入作業後的臨界電壓分布請參考第17C圖。參考回第12圖,於此架構中,假設緩存器1250的容量可儲存三個頁面的值,因此需要動態隨機存取記憶體1240先暫存透過處理單元存取介面250從其他電子裝置傳來的九個頁面的值。處理單元1210可指示直接記憶體存取控制器(direct memory access,DMA controller)1220將處理單元存取介面250上的值儲存至動態隨機存取記憶體1240中的指定位址,而新接收之一個頁面的值會覆寫掉其中最早儲存之頁面的值。需注意的是,被覆寫掉之頁面的值已經經過三次寫入後穩定地被儲存於指定的儲存單元中。動態隨機存取記憶體1240可整合至包含元件230[0..j]、250、1210、1230及1250的系統單晶片中(system on chip,SOC),或者是實施於獨立的晶片。於實際的寫入作業中,處理單元1210可指示直接記憶體存取控制器1230從動態隨機存取記憶體1240讀取三個頁面的值並儲存至緩存器1250中,接著透過儲存單元存取介面230[0]至230[j]中之一者,將緩存器1250中的值寫入指定儲存單元中的指定字元線上的三層式單元。第13圖係依據本發明實施例之一個儲存單元中的三層式單元區塊(TLC block)的示意圖。三層式單元區塊1300可包含總數為192個頁面的值,頁面標號為PG0至PG191。每個字元線上可儲存三個頁面的值,字元線標號為WL0至WL63。請參考第16C圖,每個字元線上之所 有三層式單元中指示的最低位元,集合起來成為一個頁面的值。類似地,所有三層式單元中指示的中間位元以及最高位元,分別集合起來成為另二個頁面的值。為了讓儲存的值能夠穩定,處理單元1210除了要將動態隨機存取記憶體1240中最近接收到的三個頁面的值寫入三層式單元區塊1300以外,還需要使用兩個批次從動態隨機存取記憶體1240讀取之前曾經寫入過的六個頁面的值至緩存器250,並使用指定的儲存單元存取介面寫入到指定儲存單元中的指定字元線上的三層式單元。例如,寫入頁面PG6至PG8至字元線WL2上的三層式單元後,處理單元1210更指示直接記憶體存取控制器1230從動態隨機存取記憶體1240讀取頁面PG0至PG2的值並儲存至緩存器250中,並使用儲存單元存取介面230將緩存器250中的值寫入字元線WL0上的記憶單元,接著,指示直接記憶體存取控制器1230從動態隨機存取記憶體1240讀取頁面PG3至PG5的值並儲存至緩存器250中,並使用儲存單元存取介面230將緩存器250中的值寫入字元線WL1上的記憶單元。第21圖係依據本發明實施例之字元線寫入順序示意圖。此針對單一儲存單元的寫入順序可記錄於查找表(lookup table)2100中,用以讓處理單元1210據以決定每次欲寫入的字元線或頁面。查找表中包含三欄,分別記錄每一個字元線WL0至WL63於第一次、第二次及第三次寫入間的順序。由於三層式單元中的值需要重複寫入數次後才會穩定,因此當處理單元1210透過處理單元存取介面250接收到其他電子裝置發出的資料讀取命令時,需要先判斷儲存單元中儲存的值是否已經穩定。若是,則透過指定的儲存單元存取介面 230[0]至230[j]中之一者讀取指定儲存單元中之指定位址的值,並回覆給請求的電子裝置;若否,則從動態隨機存取記憶體1240中讀取欲儲存至指定儲存單元中之指定位址的值,並回覆給請求的電子裝置。於此須注意的是,關於動態隨機存取記憶體1240所暫存的值將儲存於何儲存單元中之何位址的資訊可儲存於動態隨機存取記憶體1240或暫存器(register,未顯示)中,並且處理單元1210可透過此資訊來判斷其他電子裝置欲讀取的值是否已穩定地儲存於指定的儲存單元中。詳而言之,如果動態隨機存取記憶體1240或暫存器中儲存的資訊中指出動態隨機存取記憶體1240所暫存一部份的值將儲存於讀取位址,則代表欲讀取的值尚未穩定地儲存於儲存單元中。
第14圖係依據本發明實施例之執行於處理單元中之寫入方法流程圖。當處理單元1210透過處理單元存取介面250接收到其他電子裝置發出的寫入命令及寫入位址後(步驟S1410),指示直接記憶體存取控制器1220將欲寫入的值由處理單元存取介面250搬至動態隨機存取記憶體1240(步驟S1420)。判斷是否已經接收完指定數目之頁面的值(步驟S1430),例如,第nn+2頁的值,若是,進行實際的寫入作業(步驟S1440至步驟S1470);否則,繼續透過處理單元存取介面250接收尚未傳送完的值(步驟S1410至步驟S1420)。於實際的寫入作業中,處理單元1210指示直接記憶體存取控制器1230將最近暫存於動態隨機存取記憶體1240中指定數目之頁面的值儲存至緩存器1250(步驟S1440),指示儲存單元存取介面230將緩存器1250中的值寫入指定儲存單元中的指定字元線上的三 層式單元(步驟S1450)。接著,為了讓先前已寫入的值避免受到這次寫入作業的影響,處理單元1210更使用二個的批次來指示直接記憶體存取控制器1230將暫存於動態隨機存取記憶體1240中最近已寫入至儲存單元的六個頁面的值再次儲存至緩存器1250。詳而言之,處理單元1210指示直接記憶體存取控制器1230將暫存於動態隨機存取記憶體1240中之前第三至第一頁的值儲存至緩存器1250,例如,第n-3n-1頁的值,並指示指定的儲存單元存取介面將緩存器1250中的值再次寫入指定儲存單元中之指定字元線上的三層式單元(步驟S1460),以及,處理單元1210指示直接記憶體存取控制器1230將暫存於動態隨機存取記憶體1240中之前第六至第四頁的值儲存至緩存器1250,例如,第n-6n-4頁的值,並指示指定的儲存單元存取介面將緩存器1250中的值再次寫入指定儲存單元中之指定字元線上的三層式單元(步驟S1470)。
第15圖係依據本發明實施例之執行於處理單元中之寫入方法流程圖。當處理單元1210透過處理單元存取介面250接收到其他電子裝置發出的讀取命令及讀取位址後(步驟S1510),判斷欲讀取位址的值是否尚未穩定地儲存於儲存單元中(步驟S1520)。若是,指示直接記憶體存取控制器1220從動態隨機存取記憶體1240讀取請求的值並透過處理單元存取介面250回覆給請求的電子裝置(步驟S1530);否則,透過儲存單元存取介面從儲存單元讀出指定位址的值(步驟S1540),並且將讀出的值透過處理單元存取介面250回覆給請求的電子裝置(步驟S1550)。
為了保護三層式單元中所儲存的資料(包含訊息及水平錯誤修正碼),可更儲存垂直錯誤修正碼而形成二維錯誤修正碼的保護。為了提升寫入資料的效率,本發明實施例提出一種新的訊息以及錯誤修正碼的擺放方式。第18A圖係依據本發明實施例之使用RS(48,45)垂直錯誤修正碼之獨立磁碟冗餘陣列群組的資料擺放示意圖。假設i=3,j=3且每條字元線可儲存三個頁面的訊息及水平錯誤修正碼,或三個頁面的垂直錯誤修正碼。總共16個儲存單元10[0][0]至10[3][3]中的第一條字元線WL0中所儲存48個頁面,可以形成一個獨立磁碟冗餘陣列群組。其中,於儲存單元10[3][3]中的第一條字元線WL0(陰影部分)中儲存3個頁面的垂直錯誤修正碼。第18B圖係依據本發明實施例之使用RS(96,93)垂直錯誤修正碼之獨立磁碟冗餘陣列群組的資料擺放示意圖。總共16個儲存單元10[0][0]至10[3][3]中的第一及第二條字元線WL0及WL1中所儲存96個頁面,可以形成一個獨立磁碟冗餘陣列群組。其中,於儲存單元10[3][3]中的第二條字元線WL1(陰影部分)中儲存三個頁面的垂直錯誤修正碼。由於一個獨立磁碟冗餘陣列群組中的各頁面資料被分開擺放在不同的實體儲存單元中,可避免當其中的一個儲存單元發生不可回復的硬體錯誤時所造成資料不可回復的情形。此外,以上所述的擺放方式也可提升資料寫入的效率。請參考第6圖。處理單元610可指示仲裁單元660以事先定義的順序將資料寫入每個儲存單元中的第一條字元線。第19B圖係依據本發明實施例之資料寫入時序圖。儲存單元存取介面230[0]至230[3]分別以通道CH0至CH3表示,而連接至每個儲存單元存取介面 的儲存單元分別以CE0至CE3表示。第19B圖係一個寫入三個頁面PG0、PG1及PG2的資料(包含訊息及水平錯誤修正碼,或者是垂直錯誤修正碼)至所有儲存單元10[0][0]至10[3][3]中的第一個字元線WL0的例子。仲裁單元660透過通道CH0至CH3依序將三個頁面PG0、PG1及PG2的資料傳送到每個通道所連接之第一個儲存單元CE0中的緩存器(未顯示),接著,發送寫入命令給所有連接之儲存單元CE0,用以開始實際的寫入作業。當儲存單元CE0中之任一者接收到寫入命令後,隨即進入忙碌狀態(busy state)來將緩存器中三個頁面PG0、PG1及PG2的資料寫入到字元線WL0中的三層式單元。當所有儲存單元CE0開始實際的資料寫入作業時,通道CH0至CH3處於可用狀態,使得仲裁單元660可利用通道CH0至CH3依序將三個頁面PG0、PG1及PG2的資料傳送到每個通道所連接之第二個儲存單元CE1。熟習此技藝人士可觀察到由於使用以上的獨立磁碟冗餘陣列群組之資料擺放方式,使得通道CH0至CH3具有較少的閒置時間,並得以有效利用來傳送資料至儲存單元。
第6圖所示架構中的儲存單元10[0][0]至10[j][i]亦可以修改為包含多個三層式單元。第20A至20D圖係依據本發明實施例之執行於處理單元中之寫入資料方法流程圖。於一個獨立磁碟冗餘陣列群組的寫入作業中,處理單元610首先將訊息計數器以及錯誤修正碼計數器設為0(步驟S2011),以及控制多工器640以耦接動態隨機存取記憶體620至緩存器650(步驟S2013)。接著,反覆執行一個包含步驟S2021至S2087的迴圈直到一個獨立磁碟冗餘陣列群組中的訊息都寫入到指定的儲存 單元中,例如,第18A圖所示之儲存單元10[0][0]至10[3][3]的字元線WL0,或者,第18B圖所示之儲存單元10[0][0]至10[3][3]的字元線WL0及WL1。
步驟S2021至步驟S2031為寫入資料至所有儲存單元中之特定字元線的準備步驟。處理單元610使用變數q來決定此次寫入所使用的儲存單元存取介面為哪一個,以及使用變數p來決定寫入至此儲存單元存取介面中的第幾個儲存單元。為了讓儲存於三層式單元中的值能夠穩定,可以參考如第14圖所描述的字元線寫入方法,讓每個字元線都能夠反覆且交錯地寫入三次。於每一個字元線的第一個儲存單元寫入作業中,設變數p=0q=0(步驟S2021)。針對儲存單元10[q][p],處理單元610決定欲寫入的字元線或頁面,例如,字元線WL0或頁面PG0至PG2(步驟S2023)。處理單元610可參考如第21圖所示的寫入順序以決定欲寫入的字元線或頁面。接著,選擇性地將訊息計數器維持為0MAXixMAXjxn,以及將錯誤修正碼計數器設為0,其中常數MAXj代表儲存單元存取介面的總數,常數MAXi代表連結於每一個儲存單元存取介面的儲存單元總數,變數n則代表已經完成的字元線總數(步驟S2025)。以第18B圖所示之使用RS(96,93)錯誤修正碼之獨立磁碟冗餘陣列群組的資料擺放為例,當這次寫入作業關聯於字元線WL0時,則將訊息計數器維持為0。當這次寫入作業關聯於字元線WL1時,則將訊息計數器設為4x4x1=16
步驟S2031至S2035則用來寫入訊息及水平錯誤修正碼至指定的儲存單元10[q][p]。處理單元610指示直接記憶體 存取控制器621將動態隨機存取記憶體620中儲存的三個頁面訊息經由多工器640儲存至緩存器650,並同時儲存至磁碟陣列編碼單元630中的緩存器(未顯示)(步驟S2031)。接著,處理單元610控制仲裁單元660讀取緩存器650中的值並指示儲存單元存取介面230[q]寫入至儲存單元10[q][p](步驟S2033)。接著,處理單元610將訊息計數器加三(步驟S2035)。針對所有儲存單元的寫入時序可參考第19圖的說明。
步驟S2041、S2081至S2087用以決定下一次寫入作業係針對哪一個儲存單元存取介面及儲存單元。當處理單元610判斷訊息計數器的值小於閥值後(步驟S2041中”否”的路徑),將變數q加一(步驟S2081)。以第18B圖所示之使用RS(96,93)錯誤修正碼之獨立磁碟冗餘陣列群組的資料擺放為例,訊息計數器的值小過閥值(如93)則代表一個獨立磁碟冗餘陣列群組中的訊息尚未全部寫完。接著,判斷變數q是否大於或等於常數MAXj(步驟S2083),若否,則此流程繼續進行至步驟S2031;若是,則將變數p加一並將變數q設為0(步驟S2085),並接著判斷變數p是否大於或等於常數MAXi(步驟S2087)。當變數p大於或等於常數MAXi時(步驟S2087中”是”的路徑),代表所有的儲存單元中的指定字元線已經寫入完成,流程繼續進行至步驟S2021,用以繼續下一個字元線的寫入作業。否則(步驟S2087中”否”的路徑),流程繼續進行至步驟S2031。
由於垂直錯誤修正碼亦要被寫入三次才會穩定,本發明實施例提出一種程序,用以暫存第一次產生的垂直錯誤修正碼於動態隨機存取記憶體620中,並且於後續重新寫入時 直接從動態隨機存取記憶體620中取得已經產生的垂直錯誤修正碼,而不需要重新計算。以第18B圖所示之使用RS(96,93)錯誤修正碼之獨立磁碟冗餘陣列群組的資料擺放為例,另一種實施方式,當磁碟陣列編碼單元630要產生相應於儲存單元10[3][3]的字元線WL1的垂直錯誤修正碼時,可從動態隨機存取記憶體620重新載入欲儲存於16個儲存單元中之字元線WL0及WL1中的值來產生垂直錯誤修正碼,然而,這將耗費大量的時間。步驟S2051至S2079係用以寫入垂直錯誤修正碼至指定的儲存單元10[q][p]。當處理單元610判斷訊息計數器的值大於或等於閥值後(步驟S2041中”是”的路徑),將變數p加一(步驟S2051)。接著,判斷此獨立磁碟冗餘陣列群組的垂直錯誤修正碼是否已產生過(步驟S2053),是則讓儲存單元存取介面230[q]取得動態隨機存取記憶體620中暫存的先前計算結果,並寫入至儲存單元10[q][p](步驟S2061至S2068);否則,讓儲存單元存取介面230[q]取得磁碟陣列編碼單元630的編碼結果,並寫入至儲存單元10[q][p](步驟S2071至S2079)。
如步驟S2071至S2079所示的迴圈會反覆執行直到所有由磁碟陣列編碼單元630所產生的垂直錯誤修正碼都寫入至指定的儲存單元中。詳細而言,處理單元610控制多工器640用以耦接磁碟陣列編碼單元630與緩存器650(步驟S2071),並指示磁碟陣列編碼單元630將三頁的垂直錯誤修正碼經由多工器640輸出至緩存器650,並且指示直接記憶體存取控制器621將磁碟陣列編碼單元630中之緩存器(未顯示)的計算結果儲存至動態隨機存取記憶體620中(步驟S2073)。接著,處理單元610 控制仲裁單元660以讀取緩存器650中的值並指示儲存單元存取介面230[q]寫入至儲存單元10[q][p]中的指定字元線(步驟S2075)。處理單元610將錯誤修正碼計數器加三後(步驟S2076),判斷錯誤修正碼計數器的值是否大於或等於閥值,例如,常數l(步驟S2077)。若是,則繼續進行步驟S2069;否則,將變數p加一後(步驟S2079),回到步驟S2073,用以寫入獨立磁碟冗餘陣列群組中未完成的垂直錯誤修正碼。
如步驟S2061至S2068所示的迴圈會反覆執行直到所有於動態隨機存取記憶體620所暫存的垂直錯誤修正碼都寫入至指定的儲存單元中。詳細而言,處理單元610指示直接記憶體存取控制器621將動態隨機存取記憶體620中暫存的三頁垂直錯誤修正碼經由多工器640儲存至緩存器650(步驟S2061)。接著,處理單元610控制仲裁單元660以指示儲存單元存取介面230[q]讀取緩存器650中的值並寫入至儲存單元10[q][p]中的指定字元線(步驟S2063)。處理單元610將錯誤修正碼計數器加三後(步驟S2065),判斷錯誤修正碼計數器的值是否大於或等於閥值,例如,l(步驟S2067)。若是,則繼續進行步驟S2069;否則,將變數p加一後(步驟S2068),回到步驟S2061,用以寫入獨立磁碟冗餘陣列群組中未完成的垂直錯誤修正碼。最後,處理器單元610判斷是否完成所有的寫入作業(步驟S2069),是則結束整個資料寫入處理;否則控制多工器640用以耦接動態隨機存取記憶體620與緩存器650後(步驟S2080),回到步驟S2021,用以繼續進行下一個獨立磁碟冗餘陣列群組的資料寫入作業。步驟S2033、S2063與S2075的技術 細節可參考第8圖的說明。
雖然第1至3圖、第6圖、第9圖及第12圖中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然第7A至7B圖、第8圖、第10至11圖、第14至15圖以及第20A至20D圖的流程圖採用指定的順序來執行,但是在不違法發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
S1110~S1170‧‧‧方法步驟

Claims (18)

  1. 一種存取快閃記憶體中儲存單元的方法,由一處理單元執行,包含:接收到一區段中之一訊息無法使用上述區段中之一水平錯誤修正碼進行回復的一通知後,決定屬於相同獨立磁碟冗餘陣列群組中的其他區段位址;指示一區段解碼單元以及一磁碟陣列解碼單元有關一垂直修正程序已經啟動的一第一資訊;以及指示多個儲存單元存取介面中之每一者,從每一上述儲存單元存取介面耦接的多個儲存單元讀取上述決定之其他區段位址的內容,其中上述決定之其他區段位址的內容中包含一垂直錯誤修正碼,上述獨立磁碟冗餘陣列群組包含上述訊息、上述水平錯誤修正碼及上述垂直錯誤修正碼,從而使上述磁碟陣列解碼單元使用上述讀取的內容來回復上述區段中的上述訊息。
  2. 如申請專利範圍第1項所述的存取快閃記憶體中儲存單元的方法,其中,上述通知由一區段解碼單元發出,上述區段解碼單元嘗試使用上述區段中的上述水平錯誤修正碼回復上述區段中的上述訊息中所發生的錯誤。
  3. 如申請專利範圍第1項所述的存取快閃記憶體中儲存單元的方法,其中,當上述區段解碼單元接收到從上述處理單元發出的上述第一資訊後,將從每一上述儲存單元存取介面讀取的內容進行解碼並且傳送至上述磁碟陣列解碼單元。
  4. 如申請專利範圍第3項所述的存取快閃記憶體中儲存單元的方法,更包含:當所有關於上述決定之其他區段位址的內容的解碼結果都已經傳送給上述磁碟陣列解碼單元時,指示上述磁碟陣列解碼單元有關上述垂直修正程序已經結束的一第二資訊。
  5. 如申請專利範圍第4項所述的存取快閃記憶體中儲存單元的方法,其中,上述磁碟陣列解碼單元於接收到上述第二資訊後,將相應於之前從上述區段解碼單元所接收到的內容的解碼結果儲存於一緩存器,作為上述區段中的上述訊息。
  6. 如申請專利範圍第5項所述的存取快閃記憶體中儲存單元的方法,其中,一電子裝置透過一處理單元存取介面讀取上述緩存器中儲存的上述區段中的上述訊息。
  7. 如申請專利範圍第4項所述的存取快閃記憶體中儲存單元的方法,更包含:當所有關於上述決定之其他區段位址的內容的解碼結果都已經傳送給上述磁碟陣列解碼單元時,指示上述區段解碼單元有關上述垂直修正程序已經結束的上述第二資訊。
  8. 如申請專利範圍第7項所述的存取快閃記憶體中儲存單元的方法,其中,上述區段解碼單元於接收到上述第二資訊後,將從每一上述儲存單元存取介面讀取的內容進行解碼並且儲存至一緩存器。
  9. 如申請專利範圍第1項所述的存取快閃記憶體中儲存單元的方法,其中,上述垂直錯誤修正碼由一磁碟陣列編碼單元 依據上述獨立磁碟冗餘陣列群組中之訊息產生。
  10. 一種存取快閃記憶體中之儲存單元的裝置,包含:一區段解碼單元;一磁碟陣列解碼單元;以及一處理單元,耦接於上述區段解碼單元以及上述磁碟陣列解碼單元,接收到一區段中之一訊息無法使用上述區段中之一水平錯誤修正碼進行回復的一通知後,決定屬於相同獨立磁碟冗餘陣列群組中的其他區段位址;指示上述區段解碼單元以及上述磁碟陣列解碼單元有關一垂直修正程序已經啟動的一第一資訊;以及指示多個儲存單元存取介面中之每一者,從每一上述儲存單元存取介面耦接的多個儲存單元讀取上述決定之其他區段位址的內容,其中上述決定之其他區段位址的內容中包含一垂直錯誤修正碼,上述獨立磁碟冗餘陣列群組包含上述訊息、上述水平錯誤修正碼及上述垂直錯誤修正碼,從而使上述磁碟陣列解碼單元使用上述讀取的內容來回復上述區段中的上述訊息。
  11. 如申請專利範圍第10項所述的存取快閃記憶體中之儲存單元的裝置,其中,上述通知由一區段解碼單元發出,上述區段解碼單元嘗試使用上述區段中的上述水平錯誤修正碼回復上述區段中的上述訊息中所發生的錯誤。
  12. 如申請專利範圍第10項所述的存取快閃記憶體中之儲存單元的裝置,其中,當上述區段解碼單元接收到從上述處理單元發出的上述第一資訊後,將從每一上述儲存單元存取介面讀取的內容進行解碼並且傳送至上述磁碟陣列解碼單 元。
  13. 如申請專利範圍第12項所述的存取快閃記憶體中之儲存單元的裝置,其中,當所有關於上述決定之其他區段位址的內容的解碼結果都已經傳送給上述磁碟陣列解碼單元時,上述處理單元指示上述磁碟陣列解碼單元有關上述垂直修正程序已經結束的一第二資訊。
  14. 如申請專利範圍第13項所述的存取快閃記憶體中之儲存單元的裝置,其中,上述磁碟陣列解碼單元於接收到上述第二資訊後,將相應於之前從上述區段解碼單元所接收到的內容的解碼結果儲存於一緩存器,作為上述區段中的上述訊息。
  15. 如申請專利範圍第14項所述的存取快閃記憶體中之儲存單元的裝置,其中,一電子裝置透過一處理單元存取介面讀取上述緩存器中儲存的上述區段中的上述訊息。
  16. 如申請專利範圍第13項所述的存取快閃記憶體中之儲存單元的裝置,其中,當所有關於上述決定之其他區段位址的內容的解碼結果都已經傳送給上述磁碟陣列解碼單元時,上述處理單元指示上述區段解碼單元有關上述垂直修正程序已經結束的上述第二資訊。
  17. 如申請專利範圍第16項所述的存取快閃記憶體中之儲存單元的裝置,其中,上述區段解碼單元於接收到上述第二資訊後,將從每一上述儲存單元存取介面讀取的內容進行解碼並且儲存至一緩存器。
  18. 如申請專利範圍第10項所述的存取快閃記憶體中之儲存單 元的裝置,更包含:一磁碟陣列編碼單元,依據上述獨立磁碟冗餘陣列群組中之訊息產生上述垂直錯誤修正碼。
TW102148369A 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置 TWI552160B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201710865267.0A CN107632904B (zh) 2013-08-23 2014-07-08 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN201710368201.0A CN107193684B (zh) 2013-08-23 2014-07-08 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN201410322424.XA CN104424040B (zh) 2013-08-23 2014-07-08 存取快闪存储器中储存单元的方法以及使用该方法的装置
US14/330,887 US9513995B2 (en) 2013-08-23 2014-07-14 Methods for accessing a storage unit of a flash memory and apparatuses using the same
KR1020140109943A KR101606392B1 (ko) 2013-08-23 2014-08-22 플래시 메모리의 저장 유닛에 액세스하기 위한 방법 및 그 방법을 사용하는 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201361869561P 2013-08-23 2013-08-23

Publications (2)

Publication Number Publication Date
TW201508758A TW201508758A (zh) 2015-03-01
TWI552160B true TWI552160B (zh) 2016-10-01

Family

ID=53186313

Family Applications (8)

Application Number Title Priority Date Filing Date
TW102148367A TWI515749B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW102148368A TWI553649B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW104130741A TWI588843B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW106108292A TWI649760B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW106108293A TWI646553B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW102148369A TWI552160B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW102148610A TWI530958B (zh) 2013-08-23 2013-12-27 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW102148611A TWI553656B (zh) 2013-08-23 2013-12-27 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置

Family Applications Before (5)

Application Number Title Priority Date Filing Date
TW102148367A TWI515749B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW102148368A TWI553649B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW104130741A TWI588843B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW106108292A TWI649760B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW106108293A TWI646553B (zh) 2013-08-23 2013-12-26 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW102148610A TWI530958B (zh) 2013-08-23 2013-12-27 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
TW102148611A TWI553656B (zh) 2013-08-23 2013-12-27 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置

Country Status (2)

Country Link
KR (1) KR101677534B1 (zh)
TW (8) TWI515749B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104425018B (zh) 2013-08-23 2019-07-23 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
TWI594245B (zh) * 2016-02-02 2017-08-01 慧榮科技股份有限公司 資料寫入工作排程方法以及使用該方法的裝置
TWI806649B (zh) * 2016-04-27 2023-06-21 慧榮科技股份有限公司 快閃記憶體裝置及快閃記憶體儲存管理方法
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
TWI614759B (zh) * 2016-04-27 2018-02-11 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置
CN107391026B (zh) 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
US10110255B2 (en) 2016-04-27 2018-10-23 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
CN111679787B (zh) 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
US10133664B2 (en) 2016-04-27 2018-11-20 Silicon Motion Inc. Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips
US10289487B2 (en) 2016-04-27 2019-05-14 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
TWI605457B (zh) 2016-11-16 2017-11-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
TWI748507B (zh) * 2020-06-08 2021-12-01 瑞昱半導體股份有限公司 資料存取系統及操作資料存取系統的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5757825A (en) * 1995-01-20 1998-05-26 Sanyo Electric Co., Ltd. Digital signal processing for controlling error correction based on the state of the control bit
US7441340B2 (en) * 2003-06-23 2008-10-28 Trimble Ab Surveying instrument with compensation for mechanical errors
WO2011082834A1 (en) * 2010-01-11 2011-07-14 Nokia Corporation Error correction
US20130104002A1 (en) * 2011-10-19 2013-04-25 Kabushiki Kaisha Toshiba Memory controller, semiconductor memory system, and memory control method
US8464095B1 (en) * 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69618509T2 (de) * 1995-07-14 2002-08-29 Sony Corp Übertragung, Aufzeichnung und Wiedergabe von Daten
JP4049297B2 (ja) * 2001-06-11 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
JP2003165248A (ja) * 2001-11-29 2003-06-10 Canon Inc 印刷制御装置および印刷制御方法
US7020757B2 (en) * 2003-03-27 2006-03-28 Hewlett-Packard Development Company, L.P. Providing an arrangement of memory devices to enable high-speed data access
US7212436B2 (en) * 2005-02-28 2007-05-01 Micron Technology, Inc. Multiple level programming in a non-volatile memory device
JP2007286813A (ja) * 2006-04-14 2007-11-01 Sony Corp メモリ制御装置、メモリ制御方法
US7617368B2 (en) * 2006-06-14 2009-11-10 Nvidia Corporation Memory interface with independent arbitration of precharge, activate, and read/write
US8041990B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
US8275945B2 (en) * 2008-02-05 2012-09-25 Spansion Llc Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer
JP2009217640A (ja) * 2008-03-11 2009-09-24 Ricoh Co Ltd データ転送制御装置
CN101286947B (zh) * 2008-05-30 2010-12-01 杭州华三通信技术有限公司 数据输出控制方法和装置
US20100082854A1 (en) * 2008-09-27 2010-04-01 Lars Rossen Real-Time/Batch Interface Arbiter
US8839255B2 (en) * 2009-07-23 2014-09-16 Empire Technology Development Llc Scheduling of threads by batch scheduling
US8176220B2 (en) * 2009-10-01 2012-05-08 Oracle America, Inc. Processor-bus-connected flash storage nodes with caching to support concurrent DMA accesses from multiple processors
US9092340B2 (en) * 2009-12-18 2015-07-28 Sandisk Technologies Inc. Method and system for achieving die parallelism through block interleaving
US8355280B2 (en) * 2010-03-09 2013-01-15 Samsung Electronics Co., Ltd. Data storage system having multi-bit memory device and operating method thereof
US8503233B2 (en) * 2010-07-07 2013-08-06 Skymedi Corporation Method of twice programming a non-volatile flash memory with a sequence
KR20120110672A (ko) * 2011-03-30 2012-10-10 주식회사 히타치엘지 데이터 스토리지 코리아 낸드 플래시 메모리의 관리 데이터 기록 장치 및 방법
TWI459389B (zh) * 2011-06-09 2014-11-01 Winbond Electronics Corp 半導體記憶體裝置、記憶體裝置讀取程式以及方法
KR101785007B1 (ko) * 2011-06-14 2017-11-07 삼성전자주식회사 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 온-칩 버퍼 프로그램 방법
KR20130010343A (ko) * 2011-07-18 2013-01-28 삼성전자주식회사 플래시 메모리 장치
JP5524279B2 (ja) * 2011-09-13 2014-06-18 株式会社東芝 情報処理装置および情報処理方法
TWI430092B (zh) * 2011-10-27 2014-03-11 Silicon Motion Inc 三階儲存單元的快閃記憶體裝置及其控制方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5757825A (en) * 1995-01-20 1998-05-26 Sanyo Electric Co., Ltd. Digital signal processing for controlling error correction based on the state of the control bit
US7441340B2 (en) * 2003-06-23 2008-10-28 Trimble Ab Surveying instrument with compensation for mechanical errors
WO2011082834A1 (en) * 2010-01-11 2011-07-14 Nokia Corporation Error correction
US20130104002A1 (en) * 2011-10-19 2013-04-25 Kabushiki Kaisha Toshiba Memory controller, semiconductor memory system, and memory control method
US8464095B1 (en) * 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance

Also Published As

Publication number Publication date
TWI646553B (zh) 2019-01-01
TW201508772A (zh) 2015-03-01
TWI649760B (zh) 2019-02-01
TW201508758A (zh) 2015-03-01
KR101677534B1 (ko) 2016-11-18
TW201508757A (zh) 2015-03-01
TW201508774A (zh) 2015-03-01
TWI530958B (zh) 2016-04-21
TWI588843B (zh) 2017-06-21
KR20150140621A (ko) 2015-12-16
TW201724101A (zh) 2017-07-01
TWI515749B (zh) 2016-01-01
TW201724100A (zh) 2017-07-01
TWI553656B (zh) 2016-10-11
TW201508756A (zh) 2015-03-01
TWI553649B (zh) 2016-10-11
TW201603047A (zh) 2016-01-16

Similar Documents

Publication Publication Date Title
TWI552160B (zh) 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置
CN108447516B (zh) 存取快闪存储器中存储单元的方法以及使用该方法的装置
CN107193684B (zh) 存取快闪存储器中储存单元的方法以及使用该方法的装置
KR101606389B1 (ko) 플래시 메모리의 저장 유닛에 액세스하기 위한 방법 및 그 방법을 사용하는 장치
KR101606192B1 (ko) 플래시 메모리의 저장 유닛에 액세스하기 위한 방법 및 그 방법을 사용하는 장치
CN110175088B (zh) 存取快闪存储器中储存单元的方法以及使用该方法的装置
TW202429460A (zh) Nand記憶體的基於虛擬資料的讀取參考電壓搜索