TWI696180B - 使用預測方程式的固態儲存裝置 - Google Patents
使用預測方程式的固態儲存裝置 Download PDFInfo
- Publication number
- TWI696180B TWI696180B TW108117771A TW108117771A TWI696180B TW I696180 B TWI696180 B TW I696180B TW 108117771 A TW108117771 A TW 108117771A TW 108117771 A TW108117771 A TW 108117771A TW I696180 B TWI696180 B TW I696180B
- Authority
- TW
- Taiwan
- Prior art keywords
- register
- collection
- controller
- volatile memory
- storage device
- Prior art date
Links
- 239000007787 solid Substances 0.000 title abstract description 7
- 238000012937 correction Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 abstract description 6
- 238000009825 accumulation Methods 0.000 description 19
- 238000000034 method Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
一種使用預測方程式的固態儲存裝置。在固態裝置中,控制器產生多個蒐集用讀取運算,暫存於指令佇列,並傳遞至非揮發性記憶體。非揮發性記憶體根據每一該蒐集用讀取運算產生對應的一編碼的讀取資料傳遞至該控制器。接著,錯誤校正碼電路對該編碼的讀取資料進行解碼動作後產生一解碼內容,且該解碼內容中的一第一對應數目傳遞至該暫存器組中的一第一暫存器。當該些編碼的讀取資料進行解碼動作後,該第一暫存器儲存的一數值即為一第一參數,輸入該方程式儲存電路中的一預測方程式。
Description
本發明是有關於一種固態儲存裝置,且特別是有關於一種使用預測方程式的固態儲存裝置。
眾所周知,固態儲存裝置 (Solid State Storage Device,簡稱SSD) 已經非常廣泛的應用於各種電子產品,例如SD卡、固態硬碟等等。固態儲存裝置中包括一非揮發性記憶體(non-volatile memory)。當資料寫入非揮發性記憶體後,一旦固態儲存裝置的電源被關閉,資料仍可保存在非揮發性記憶體中。
美國專利US 9,922,706揭露一種使用狀態預測方法的固態儲存裝置。其利用預測方程式(prediction function)來預估固態儲存裝置中非揮發性記憶體在未來時間點的狀態,並且預測適當的解碼流程或者提供適當的讀取電壓。
請參照第1圖,其所繪示為習知固態儲存裝置示意圖。固態儲存裝置100經由一外部匯流排115連接至主機(host)110。其中,外部匯流排115可為USB匯流排、SATA匯流排、PCIe匯流排、M.2匯流排或者U.2匯流排等等。
固態儲存裝置100中包括一控制器120、緩衝器130與一非揮發性記憶體150。控制器120連接至非揮發性記憶體150與緩衝器130。其中,非揮發性記憶體150由多個晶粒(die)11~14組合而成,這些晶粒11~14可為反及閘快閃晶粒(NAND flash die)。另外,緩衝器130可為動態隨機存取記憶體(DRAM)。
控制器120中更包括一錯誤校正碼電路(ECC電路)124、方程式儲存電路126以及一指令佇列(command queue)128。其中,指令佇列128可以暫存多個運算指令(operation command),例如編程運算(program operation)、讀取運算(read operation)、抹除運算(erase operation)。另外,控制器120可將指令佇列128中的運算指令傳遞至非揮發性記憶體150。
舉例來說,當主機110發出寫入指令(write command)以及寫入資料時,控制器120根據寫入指令來產生編程運算(program operation)暫存於指令佇列128。再者,ECC電路124對寫入資料進行ECC編碼動作,成為編碼的寫入資料(encoded write data)並暫存於緩衝器130。最後,控制器120將編程運算以及編碼的寫入資料傳遞至非揮發性記憶體150,使得編碼的寫入資料儲存至非揮發性記憶體150。
當主機110發出讀取指令(read command)時,控制器120根據讀取指令來產生讀取運算(read operation)暫存於指令佇列128。當控制器120將讀取運算傳遞至非揮發性記憶體150後,非揮發性記憶體150即傳遞編碼的讀取資料(encoded read data)至控制器120。接著,ECC電路124對編碼的讀取資料進行解碼動作後產生讀取資料(read date)並暫存於緩衝器130。最後,讀取資料即被傳遞至主機110。
基本上,控制器120利用編程運算可將編碼的寫入資料儲存至特定的晶粒11~14中,或者將編碼的寫入資料散布於所有的晶粒11~14中。另外,控制器120也可以利用讀取運算,由特定的晶粒中11~14中或者由所有的晶粒11~14中來取得編碼的讀取資料。
當然,控制器120也可以在適當時機產生抹除運算(erase operation)暫存於指令佇列128中。當抹除運算傳遞至非揮發性記憶體150時,非揮發性記憶體150中特定晶粒11~14中特定區塊內的資料即被抹除,或者所有晶粒11~14中特定區塊內的資料即被抹除。
一般來說,固態儲存裝置100出廠,且非揮發性記憶體150並經過多次編程、讀取與抹除之後,非揮發性記憶體150的特性變差,可能造成資料流失(loss)。此時,由非揮發性記憶體150中取得之編碼的讀取資料無法通過解碼動作,也無法產生正確的讀取資料傳遞至主機,並導致讀取失敗(read fail)。
為了預防固態儲存裝置100發生讀取失敗,控制器120中的方程式儲存電路(function storage circuit)126內儲存多個預測方程式(prediction function)。預測方程式可以根據非揮發性記憶體150的各種參數來預測非揮發性記憶體150未來一段時間之後(例如三天後、一星期後或者一個月後)的狀態。如果預測方程式判斷出未來一段時間後,非揮發性記憶體150的狀態可能影響固態儲存裝置100的效能,則控制器120可以提前進行修正。例如,修改解碼動作中的解碼流程、修改讀取電壓、將預測出即將損壞區塊內的資料移動至其他區塊。
換言之,固態儲存裝置100出廠之後,在運作的過程中,控制器120會持續蒐集非揮發性記憶體150內各個區塊(block)的多個參數,並將這些參數輸入預測方程式並且獲得對應的預測結果。其中,非揮發性記憶體150的參數可為區塊的錯誤位元(error bit)數目、編程時間(program time)、抹除時間(erase time)、即時解碼流程(例如硬式解碼或者式軟式解碼流程)、非揮發性記憶體150的操作溫度、讀取電壓偏移(read voltage shift)等等。
為了蒐集非揮發性記憶體150的參數,控制器120會自行產生讀取運算並暫存於指令佇列128。當非揮發性記憶體150根據讀取運算而將編碼的讀取資料傳遞至控制器120後,ECC電路124會對編碼的讀取資料進行解碼動作,而執行解碼動作的過程中所出現的解碼內容則會暫存於緩衝器130中。再者,控制器120讀取緩衝器130中的所有解碼內容,並計算出預測方程式所需的參數。之後,控制器120再將計算出的參數輸入預測方程式並且獲得對應的預測結果。基本上,解碼內容可包括,但不限定於:錯誤位元的數目、編程時間、抹除時間、即時解碼流程或者操作溫度等等。
請參照第2圖,其所繪示為習知指令佇列示意圖。控制器120可根據主機110的讀取指令來產生對應之主機的讀取運算(Host read operation)並暫存於指令佇列128中。另外,為了蒐集非揮發性記憶體150的資訊,控制器120也可產生蒐集用讀取運算(Collection read operation)並暫存於指令佇列128中。
基本上,控制器120不會依序將讀取運算傳遞至非揮發性記憶體150。控制器120會根據晶粒11~14是否在忙碌(busy)而以不定次序(out of order)的方式傳遞讀取運算至非揮發性記憶體150。舉例來說,當晶粒11正在忙碌時,控制器120不會傳遞關於晶粒11的讀取運算至非揮發性記憶體150。當晶粒13不忙碌(not busy)或閒置(idle)時,控制器120即由指令佇列128中傳遞關於晶粒13的讀取運算至非揮發性記憶體150。當然,指令佇列128中也可以暫存編程運算以及抹除運算。
由於控制器120以不定次序(out of order)的方式傳遞讀取運算至非揮發性記憶體150。因此,控制器120也必須區別非揮發性記憶體150回傳之內容是屬於主機110之編碼的讀取資料或者蒐集用之編碼的讀取資料。於進行解碼動作並產生讀取資料後,主機100要求的讀取資料即可傳遞至主機100。
再者,蒐集用的讀取資料則不需要傳遞至主機100,控制器120將執行解碼動作的過程中所出現的解碼內容暫存於緩衝器130中。
舉例來說,假設非揮性記憶體150中一個區塊有1024個頁、每個頁有4個ECC碼字(ECC codeword)。為了要蒐集一個區塊的解碼內容,控制器120必須產生4096(1024×4)個蒐集用讀取運算至指令佇列128,並傳遞至非揮發性記憶體150用以讀取4096個ECC碼字(ECC codeword)。再者,非揮發性記憶體150針對每一個ECC碼字進行解碼動作後,會產生4個位元組(4 bytes)的解碼內容。換言之,控制器120會收到16384(4096×4 byte)個位元組的解碼內容,並暫存於緩衝器130。
明顯地,為了要預測一個區塊的狀態,控制器120需要在緩衝器130中設定16384個位元組的空間來暫存解碼內容。如果控制器120需要預測多個區塊的狀況,則會佔用到大部分的緩衝器130空間。
另外,控制器120也必須多次讀取緩衝器130中的所有解碼內容,並計算出預測方程式所需的參數。因此,固態儲存裝置100的總體效能會下降。
本發明為一種固態儲存裝置,包括:一非揮發性記憶體,包括複數個晶粒;一緩衝器;一控制器,連接至該非揮發性記憶體與該緩衝器,該控制器包括一錯誤校正碼電路、一方程式儲存電路、一暫存器組與一指令佇列;其中,該控制器產生多個蒐集用讀取運算,暫存於該指令佇列,並傳遞至該非揮發性記憶體;該非揮發性記憶體根據每一該蒐集用讀取運算產生對應的一編碼的讀取資料傳遞至該控制器;其中,該錯誤校正碼電路對該編碼的讀取資料進行解碼動作後產生一解碼內容,且該解碼內容中的一第一對應數目傳遞至該暫存器組中的一第一暫存器;其中,當該些編碼的讀取資料進行解碼動作後,該第一暫存器儲存的一數值即為一第一參數,輸入該方程式儲存電路中的一預測方程式。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下。
為了要改善習知固態儲存裝置為了計算預測方程式所需的參數而導致固態儲存裝置效能下降的問題,本發明提出一種固態儲存裝置,在讀取運算中建立多個設定欄位用以控制對應暫存器之運作。
請參照第3圖,其所繪示為本發明固態儲存裝置示意圖。固態儲存裝置300經由一外部匯流排115連接至主機(host)110。其中,外部匯流排115可為USB匯流排、SATA匯流排、PCIe匯流排、M.2匯流排或者U.2匯流排等等。
固態儲存裝置300中包括一控制器320、緩衝器130與一非揮發性記憶體150。控制器320連接至非揮發性記憶體150與緩衝器130。其中,非揮發性記憶體150由多個晶粒(die)11~14組合而成,這些晶粒11~14可為反及閘快閃晶粒(NAND flash die)。另外,緩衝器130可為動態隨機存取記憶體(DRAM)。
控制器320中更包括一暫存器組330、一錯誤校正碼電路(ECC電路)124、方程式儲存電路126以及一指令佇列(command queue)328。其中,指令佇列328可以暫存多個運算指令(operation command),例如編程運算(program operation)、讀取運算(read operation)、抹除運算(erase operation)。另外,控制器320可將指令佇列328中的運算指令傳遞至非揮發性記憶體150。
相同地,當主機110發出寫入指令或者讀取指令時,控制器320可對應地產生編程運算或者讀取運算並暫存於指令佇列328中。控制器320可將指令佇列328中的編程運算或者讀取運算傳遞至非揮發性記憶體150。其詳細的運作,此處不再贅述。
基本上,控制器320利用編程運算可將編碼的寫入資料儲存至特定的晶粒11~14中,或者將編碼的寫入資料散布於所有的晶粒11~14中。另外,控制器320也可以利用讀取運算,由特定的晶粒中11~14中或者由所有的晶粒11~14中來取得編碼的讀取資料。
當然,控制器320也可以在適當時機產生抹除運算(erase operation)暫存於指令佇列328中。當抹除運算傳遞至非揮發性記憶體150時,非揮發性記憶體150中特定晶粒11~14中特定區塊內的資料即被抹除,或者所有晶粒11~14中特定區塊內的資料即被抹除。
當固態儲存裝置300出廠之後,在運作的過程中,控制器320會持續蒐集非揮發性記憶體150內各個區塊(block)的多個參數,並將這些參數輸入預測方程式並且獲得對應的預測結果。其中,非揮發性記憶體150的參數可為區塊的錯誤位元(error bit)數目、編程時間(program time)、抹除時間(erase time)、即時解碼流程(例如硬式解碼或者式軟式解碼流程)、非揮發性記憶體150的操作溫度、讀取電壓偏移(read voltage shift)等等。
根據本發明的實施例,於控制器320產生的讀取運算中增加多個設定欄位,並搭配暫存器組中的至少一暫存器,用以持續記錄解碼內容,亦可暫停或重置(reset)暫存器的內容。
請參照第4圖,其所繪示為本發明指令佇列中讀取運算與暫存器的運作關係第一實施例。基本上,控制器320根據主機110的讀取指令來產生對應之主機的讀取運算(Host read operation)並暫存於指令佇列328中。另外,為了蒐集非揮發性記憶體150的資訊,控制器320也可產生蒐集用讀取運算(Collection read operation)並暫存於指令佇列328中。
如第4圖所示,控制器320產生的讀取運算中更包括二個位元(bit),一個位元代表重置致能(reset enable)欄位,另一個位元代表蒐集致能(collection enable)欄位。重置致能欄位以及蒐集致能欄位設定為"1"時,代表致能(enable);重置致能欄位以及蒐集致能欄位設定為"0"時,代表禁能(disable)。
舉例來說,假設控制器320欲將一特定區塊的錯誤位元總數(error bit count)作為非揮發性記憶體150的參數並輸入預測方程式,則控制器可利用暫存器組330中的一累加暫存器(accumulator resistor)330a來獲得錯誤位元總數。詳細運作流程說明如下。
假設非揮性記憶體150中一個區塊有1024個頁、每個頁有4個ECC碼字(ECC codeword)。為了要蒐集一個區塊的錯誤位元總數,控制器320產生4096(1024×4)個蒐集用讀取運算至指令佇列328,並傳遞至非揮發性記憶體150用以讀取4096個ECC碼字(ECC codeword)。
如第4圖所示,指令佇列328中包括蒐集用讀取運算以及主機用讀取運算。其中,索引1(index 1)的蒐集用讀取運算中,重置致能欄位設定為"1"且蒐集致能欄位設定為"1",代表累加暫存器330a被重置(reset),並開始累加錯誤位元。因此,根據索引1的蒐集用讀取運算,ECC電路對非揮發性記憶體150傳回的ECC碼字進行解碼動作後,其解碼內容中包括38個錯誤位元(error bits)會被記錄於累加暫存器330a中。此時,累加暫存器330a中記錄的數值為38。
再者,索引2(index 2)的蒐集用讀取運算中,重置致能欄位設定為"0"且蒐集致能欄位設定為"1",代表累加暫存器330a不會被重置,並持續累加錯誤位元。因此,根據索引2的蒐集用讀取運算,ECC電路對非揮發性記憶體150傳回的ECC碼字進行解碼動作後,其解碼內容中包括36個錯誤位元(error bits)即被累加於累加暫存器330a中。此時,累加暫存器330a記錄的數值為74。
再者,索引3(index 3)的主機用讀取運算中,重置致能欄位設定為"0"且蒐集致能欄位設定為"0",代表累加暫存器330a不會被重置,也不會累加錯誤位元。因此,根據索引3的主機用讀取運算,ECC電路對非揮發性記憶體150傳回的ECC碼字進行解碼動作後,其解碼內容中不論有多少錯誤位元,皆不會被累加於累加暫存器330a中。此時,累加暫存器330a記錄的數值維持為74。同理,後續索引4~6的主機用讀取運算,累加暫存器330a記錄的數值也維持為74。
再者,索引7(index 7)的蒐集用讀取運算中,重置致能欄位設定為"0"且蒐集致能欄位設定為"1",代表累加暫存器330a不會被重置,並持續累加錯誤位元。因此,根據索引7的蒐集用讀取運算,ECC電路對非揮發性記憶體150傳回的ECC碼字進行解碼動作後,其解碼內容中包括31個錯誤位元(error bits)即被累加於累加暫存器330a中。此時,累加暫存器330a記錄的數值為105。
依此類推,當控制器320產生的4096個蒐集用讀取運算由指令佇列328傳遞至非揮發性記憶體150後,累加暫存器330a內所記錄的數值即為該區塊的錯誤位元總數。而控制器320即直接讀取累加暫存器330a中的數值,並作為預測方程式的一個參數,輸入預測方程式。
如第5圖所示,其為本發明固態儲存裝置第一實施例的參數計算流程圖。首先,控制器320經過一特定時間之後啟動(步驟S502),此特定時間可為例如10小時,或者一天。亦即,固態儲存裝置300運作10小時之後,即利用預測方程式來預測非揮發性記憶體150的狀態。
接著,產生多個蒐集用讀取運算,暫存於該指令佇列,並傳遞至該非揮發性記憶體150(步驟S504)。接著,非揮發性記憶體150會將每一個蒐集用讀取運算所對應之編碼的讀取資料回傳至控制器320(步驟 S506)。
接著,控制器320中的ECC電路124會對每一個編碼的讀取資料進行解碼動作後產生一解碼內容,且解碼內容中的一第一對應數目傳遞至該暫存器組中的一第一暫存器(步驟S508)。如第4圖的範例,解碼內容中包括錯誤位元數目,而錯誤位元數目即傳遞至累加暫存器330a。
之後,當所有編碼的讀取資料進行解碼動作後,該第一暫存器儲存的一數值即為一第一參數,輸入該方程式儲存電路中的一預測方程式(步驟S510)。如第4圖的範例,所有解碼內容中的錯誤位元數目皆傳遞至累加暫存器330a後,累加暫存器330a內所記錄的數值即為該區塊的錯誤位元總數。而控制器320即直接讀取累加暫存器330a中的數值,並作為預測方程式的一個參數,輸入預測方程式。
根據以上的說明可知,本發明的固態儲存裝置300中,控制器320不需在緩衝器130中設定特定的空間來暫存解碼內容,也不需要再讀取並計算緩衝器130中的解碼內容即可獲得預測方程式的參數。因此,可以大幅度地提升固態儲存裝置300的效能。
上述的參數係以錯誤位元的總數為例來說明,但是本發明並不限定於此。利用相同的暫存器控制方式,更可以在讀取運算中增加一個緩衝器選擇(register selection)欄位,以利用暫存器組330中的多個暫存器來蒐集各種參數。
請參照第6圖,其所繪示為本發明指令佇列中讀取運算與暫存器的運作關係第二實施例。控制器320產生的讀取運算中更包括七個位元(bit),一個位元代表重置致能(reset enable)欄位,一個位元代表蒐集致能(collection enable)欄位、另五個位元為暫存器選擇欄位(register selection),用來選擇暫存器組330中的特定暫存器。
舉例來說,暫存器組330中至少包括五個暫存器,每個暫存器可以根據解碼內容來計算不同的參數。如第6圖所示,暫存器a可用來計算錯誤位元總數(error bit count)、暫存器b可用來計算錯誤位元的變異數(error bit variance)、暫存器c可用來計算解碼失敗的總數(decide fail count)、暫存器d可計算忙碌的總時間(busy time)、暫存器e可計算ECC碼字的總數(ECC codeword count)。
假設控制器320選擇的預測方程式需要輸入的參數包括:錯誤位元總數、錯誤位元變異數、以及ECC碼字總數。則控制器320可將讀取運算中暫存器選擇欄位設定為"11001"。亦即,動作暫存器a、暫存器b與暫存器e,不動作暫存器c與暫存器d。詳細運作流程說明如下。
如第6圖所示,索引1(index 1)的蒐集用讀取運算中,重置致能欄位設定為"1"、蒐集致能欄位設定為"1"且暫存器選擇欄位設定為"11001"。因此,暫存器a、暫存器b與暫存器e動作。另外,暫存器a、暫存器b與暫存器e被重置(reset),且各別開始蒐集錯誤位元的數目、錯誤位元的變異數以及ECC碼字的數目。另外,控制器320可根據解碼內容,將錯誤位元數目傳遞至暫存器a,將錯誤位元的變異數傳遞至暫存器b,將ECC碼字的數目傳遞至暫存器d。
另外,索引2(index 1)的蒐集用讀取運算中,重置致能欄位設定為"0"、蒐集致能欄位設定為"1"且暫存器選擇欄位設定為"11001"。因此,暫存器a、暫存器b與暫存器e繼續蒐集錯誤位元的數目、錯誤位元的變異數以及ECC碼字的數目。
再者,索引3~索引6(index 3~index 6)的主機用讀取運算中,重置致能欄位設定為"0"、蒐集致能欄位設定為"0"、暫存器選擇欄位設定為"00000",代表暫存器a、暫存器b與暫存器e不會蒐集對應的錯誤位元數目、錯誤位元的變異數以及ECC碼字的數目。
再者,索引7(index 7)的蒐集用讀取運算中,重置致能欄位設定為"0"、蒐集致能欄位設定為"1"且暫存器選擇欄位設定為"11001"。因此,暫存器a、暫存器b與暫存器e繼續蒐集錯誤位元數目、錯誤位元的變異數以及ECC碼字的數目。
依此類推,當控制器320產生的4096個蒐集用讀取運算,由指令佇列328傳遞至非揮發性記憶體150後,暫存器a的數值即為錯誤位元總數,暫存器b的數值即為錯誤位元的變異數,暫存器e的數值即為ECC碼字的總數。換言之,控制器320即直接讀取暫存器a、暫存器b、暫存器e的數值,並作為預測方程式的三個參數,輸入預測方程式。
換言之,第二實施例可設定多個暫存器來接收解碼內容中的多個對應數目,例如錯誤位元數目、錯誤位元的變異數以及ECC碼字的數目,並獲得預測方程式所需要的多個參數。
當然,上述之第二實施例也可以再增加一位元的蒐集及結束欄位(collection end),並成為本發明之第三實施例。請參照第7圖,其所繪示為本發明指令佇列中讀取運算與暫存器的運作關係第三實施例。其中,當蒐集結束欄位被設定("1")時,代表該蒐集用讀取運算為最後一個搜集用讀取運算。當蒐集結束欄位未被設定("0")時,代表該蒐集用讀取運算為不是最後一個搜集用讀取運算。
如第7圖所示,假設蒐集一個區塊的錯誤位元總數,控制器320產生4096(1024×4)個蒐集用讀取運算至指令佇列328,而最後一個蒐集用讀取運算儲存於的指令佇列328的索引5000之位置。因此,索引5000位置的蒐集用讀取運算,其蒐集結束欄位設定為"1",並且索引5000位置之前的蒐集用讀取運算,其蒐集結束欄位設定為"0"。
根據本發明的第三實施例,當蒐集結束欄位設定為"1"的蒐集用讀取運算傳遞至非揮發性記憶體時,控制器320也會被通知指令佇列328已經傳遞了4096個蒐集用讀取運算。此時,暫存器a的數值即為錯誤位元總數,暫存器b的數值即為錯誤位元的變異數,暫存器e的數值即為ECC碼字的總數。換言之,控制器320即直接讀取暫存器a、暫存器b、暫存器e的數值,並作為預測方程式的三個參數,輸入預測方程式。
利用相同的暫存器控制方式,更可以在讀取運算中增加一個群組選擇(group selection)欄位,以利用暫存器組330中的特定暫存器群來蒐集特定晶粒中的各種參數。
請參照第8圖,其所繪示為本發明指令佇列中讀取運算與暫存器的運作關係第四實施例。控制器320產生的讀取運算中更包括九個位元(bit),一個位元代表重置致能(reset enable)欄位,一個位元代表蒐集致能(collection enable)欄位、五個位元為暫存器選擇欄位(register selection)、另二個位元為群組選擇欄位(group selection),用來選擇暫存器組330中特定群的暫存器。
舉例來說,暫存器組330中包括二十個暫存器,五個暫存器組成一群(group),共有四個暫存器群。如第6圖所示,第(00) 暫存器群中包括暫存器a0、暫存器b0、暫存器c0、暫存器d0、暫存器e0;第(01) 暫存器群中包括暫存器a1、暫存器b1、暫存器c1、暫存器d1、暫存器e1;第(10) 暫存器群中包括暫存器a2、暫存器b2、暫存器c2、暫存器d2、暫存器e2;第(11) 暫存器群中包括暫存器a3、暫存器b3、暫存器c3、暫存器d3、暫存器e3。
再者,暫存器a0~暫存器a3可用來計算錯誤位元總數(error bit count)、暫存器b0~暫存器b3可用來計算錯誤位元的變異數(error bit variance)、暫存器c0~暫存器c3可用來計算解碼失敗的總數(decide fail count)、暫存器d0~暫存器d3可計算忙碌的總時間(busy time)、暫存器e0~暫存器e3可計算ECC碼字的總數(ECC codeword count)。
根據本發明的實施例,控制器320可以利用不同暫存器群來計算不同晶粒的參數。舉例來說,利用第(00) 暫存器群來蒐集晶粒11的參數,利用第(11)暫存器群來蒐集晶粒12的參數,依此類推。
舉例來說,控制器320選擇第(10)暫存器群來蒐集特定晶粒中特定區塊的錯誤位元總數、錯誤位元變異數、以及ECC碼字總數。因此,控制器320將讀取運算中暫存器選擇欄位設定為"11001"並將群組選擇欄位設定為"10"。亦即,動作第(10)暫存器群中的暫存器a2、暫存器b2與暫存器e2,不動作暫存器c2與暫存器d2。詳細運作流程說明如下。
相同的運作原理,在第7圖的索引1(index 1)、索引2(index 1)與索引7 (index 7)的蒐集用讀取運算,控制器320可根據解碼內容,將錯誤位元數目傳遞至暫存器a2,將錯誤位元的變異數傳遞至暫存器b2,將ECC碼字的數目傳遞至暫存器e2。
再者,索引3~索引6(index 3~index 6)的主機用讀取運算中,暫存器a2、暫存器b2與暫存器e2不會蒐集對應的錯誤位元數目、錯誤位元的變異數以及ECC碼字的數目。
依此類推,當控制器320產生的4096個蒐集用讀取運算由指令佇列328傳遞至非揮發性記憶體150後,暫存器a2的數值即為錯誤位元總數,暫存器b2的數值即為錯誤位元的變異數,暫存器e2的數值即為ECC碼字的總數。換言之,控制器320即直接讀取暫存器a2、暫存器b2、暫存器e2的數值,並作為預測方程式的三個參數,輸入預測方程式。
根據以上的說明可知,本發明的固態儲存裝置300中,控制器320不需在緩衝器130中設定特定的空間來暫存解碼內容,也不需要再讀取並計算緩衝器130中的解碼內容即可獲得預測方程式的參數。因此,可以大幅度地提升固態儲存裝置300的效能。
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
11~14:晶粒
100、300:固態儲存裝置
110:主機
115:外部匯流排
120、320:控制器
124:ECC電路
126:方程式儲存電路
128、328:指令佇列
130:緩衝器
150:非揮發性記憶體
330:暫存器組
第1圖為習知固態儲存裝置示意圖。
第2圖為習知指令佇列示意圖。
第3圖為本發明固態儲存裝置示意圖。
第4圖為本發明指令佇列中讀取運算與暫存器的運作關係第一實施例。
第5圖為本發明固態儲存裝置第一實施例的參數計算流程圖。
第6圖為本發明指令佇列中讀取運算與暫存器的運作關係第二實施例。
第7圖為本發明指令佇列中讀取運算與暫存器的運作關係第三實施例。
第8圖為本發明指令佇列中讀取運算與暫存器的運作關係第四實施例。
11~14:晶粒
110:主機
115:外部匯流排
124:ECC電路
126:方程式儲存電路
130:緩衝器
150:非揮發性記憶體
300:固態儲存裝置
320:控制器
328:指令佇列
330:暫存器組
Claims (8)
- 一種固態儲存裝置,包括: 一非揮發性記憶體,包括複數個晶粒; 一緩衝器; 一控制器,連接至該非揮發性記憶體與該緩衝器,該控制器包括一錯誤校正碼電路、一方程式儲存電路、一暫存器組與一指令佇列; 其中,該控制器產生多個蒐集用讀取運算,暫存於該指令佇列,並傳遞至該非揮發性記憶體;該非揮發性記憶體根據每一該蒐集用讀取運算產生對應的一編碼的讀取資料傳遞至該控制器; 其中,該錯誤校正碼電路對該編碼的讀取資料進行解碼動作後產生一解碼內容,且該解碼內容中的一第一對應數目傳遞至該暫存器組中的一第一暫存器; 其中,當該些編碼的讀取資料進行解碼動作後,該第一暫存器儲存的一數值即為一第一參數,輸入該方程式儲存電路中的一預測方程式。
- 如申請專利範圍第1項所述之固態儲存裝置,其中該蒐集用讀取運算中包括一重置致能欄位與一蒐集致能欄位;當該重置致能欄位被致能時,該第一暫存器被重置;以及,當該蒐集致能欄位被致能時,該第一對應數目輸入該第一暫存器。
- 如申請專利範圍第1項所述之固態儲存裝置,其中該第一對應數目為錯誤位元的數目、錯誤位元的變異數、解碼失敗的數目、忙碌總時間或者ECC碼字的數目。
- 如申請專利範圍第3項所述之固態儲存裝置,其中該蒐集用讀取運算中更包括一暫存器選擇欄位,該暫存器選擇欄位可選擇該暫存器組中的該第一暫存器與一第二暫存器。
- 如申請專利範圍第4項所述之固態儲存裝置,其中該錯誤校正碼電路對該編碼的讀取資料進行解碼動作後產該解碼內容,且該解碼內容中的該第一對應數目傳遞至該第一暫存器,且一第二對應數目傳遞至該第二暫存器。
- 如申請專利範圍第4項所述之固態儲存裝置,其中該蒐集用讀取運算中更包括一群組選擇欄位,該群組選擇欄位可選擇該暫存器組中一第一暫存器群中的該第一暫存器與一第二暫存器。
- 如申請專利範圍第6項所述之固態儲存裝置,其中該錯誤校正碼電路對該編碼的讀取資料進行解碼動作後產該解碼內容,且該解碼內容中的該第一對應數目傳遞至該第一暫存器,且一第二對應數目傳遞至該第二暫存器。
- 如申請專利範圍第1項所述之固態儲存裝置,其中該蒐集用讀取運算中包括一蒐集結束欄;該控制器產生的該些蒐集用讀取運算中,最後一個蒐集用讀取運算的該蒐集結束欄被設定;以及,當該蒐集結束欄被設定的該蒐集用讀取運算傳遞至該該非揮發性記憶體後,該控制器被通知該第一暫存器儲存的該數值為該第一參數,用以輸入該方程式儲存電路中的該預測方程式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW108117771A TWI696180B (zh) | 2019-05-23 | 2019-05-23 | 使用預測方程式的固態儲存裝置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW108117771A TWI696180B (zh) | 2019-05-23 | 2019-05-23 | 使用預測方程式的固態儲存裝置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI696180B true TWI696180B (zh) | 2020-06-11 |
| TW202044260A TW202044260A (zh) | 2020-12-01 |
Family
ID=72176148
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW108117771A TWI696180B (zh) | 2019-05-23 | 2019-05-23 | 使用預測方程式的固態儲存裝置 |
Country Status (1)
| Country | Link |
|---|---|
| TW (1) | TWI696180B (zh) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20010010088A1 (en) * | 2000-01-26 | 2001-07-26 | Takeshi Anzai | Error bit correcting method for use in time-division multiple access system and bit correcting circuit |
| US6453440B1 (en) * | 1999-08-04 | 2002-09-17 | Sun Microsystems, Inc. | System and method for detecting double-bit errors and for correcting errors due to component failures |
| US20140281678A1 (en) * | 2013-03-14 | 2014-09-18 | Kabushiki Kaisha Toshiba | Memory controller and memory system |
| CN107452421A (zh) * | 2016-05-31 | 2017-12-08 | 光宝电子(广州)有限公司 | 固态储存装置及其状态预测方法 |
| US20190095274A1 (en) * | 2017-09-26 | 2019-03-28 | Silicon Motion, Inc. | Methods and apparatuses for proactive ecc failure handling |
-
2019
- 2019-05-23 TW TW108117771A patent/TWI696180B/zh active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6453440B1 (en) * | 1999-08-04 | 2002-09-17 | Sun Microsystems, Inc. | System and method for detecting double-bit errors and for correcting errors due to component failures |
| US20010010088A1 (en) * | 2000-01-26 | 2001-07-26 | Takeshi Anzai | Error bit correcting method for use in time-division multiple access system and bit correcting circuit |
| US20140281678A1 (en) * | 2013-03-14 | 2014-09-18 | Kabushiki Kaisha Toshiba | Memory controller and memory system |
| CN107452421A (zh) * | 2016-05-31 | 2017-12-08 | 光宝电子(广州)有限公司 | 固态储存装置及其状态预测方法 |
| US9922706B2 (en) * | 2016-05-31 | 2018-03-20 | Lite-On Electronics (Guangzhou) Limited | Solid state storage device using state prediction method |
| US20190095274A1 (en) * | 2017-09-26 | 2019-03-28 | Silicon Motion, Inc. | Methods and apparatuses for proactive ecc failure handling |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202044260A (zh) | 2020-12-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5185156B2 (ja) | メモリコントローラおよび半導体記憶装置 | |
| JP5540969B2 (ja) | 不揮発性メモリ装置、メモリコントローラ、およびメモリシステム | |
| TWI534618B (zh) | 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置 | |
| US8719491B2 (en) | Encoding flash memory data with a randomizer using different seeds for different sectors | |
| US8489805B2 (en) | Memory devices operated within a communication protocol standard timeout requirement | |
| CN101930402B (zh) | 具有检错/纠错电路的非挥发存储器及其读写方法 | |
| US9507658B2 (en) | Data reading method, memory storage device and memory controlling circuit unit | |
| TWI571882B (zh) | 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置 | |
| JP2010218634A (ja) | 誤り検出訂正器、メモリコントローラおよび半導体記憶装置 | |
| TWI656442B (zh) | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 | |
| CN114730247B (zh) | 具有数据的最小写入大小的存储设备 | |
| CN106155582B (zh) | 非挥发性储存装置与控制器 | |
| TWI442406B (zh) | 針對一快閃記憶體的控制器之錯誤管理機制來提升驗證效率之方法以及相關之記憶裝置及其控制器 | |
| JP2010097600A (ja) | 半導体記録装置 | |
| CN111984458B (zh) | 使用预测方程式的固态储存装置 | |
| TWI696180B (zh) | 使用預測方程式的固態儲存裝置 | |
| JP2007058940A (ja) | 記憶装置、ファイル記憶装置、およびコンピュータシステム | |
| CN105573662B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
| JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| CN106980464B (zh) | 利用过采样读取的系统最优化方法 | |
| JP2011065313A (ja) | ストレージデバイス | |
| JP2011060415A (ja) | 不揮発性半導体記憶装置及びデータ記憶システム | |
| US10261692B1 (en) | Non-volatile memory and erase controlling method thereof | |
| TWI673719B (zh) | 在快閃記憶體上提升存取效能之控制方法 | |
| CN108984109A (zh) | 在闪存上提升存取效能的控制方法 |