TWI696180B - Solid state storage device using prediction function - Google Patents
Solid state storage device using prediction function 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
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
Description
本發明是有關於一種固態儲存裝置,且特別是有關於一種使用預測方程式的固態儲存裝置。The present invention relates to a solid-state storage device, and in particular to a solid-state storage device using predictive equations.
眾所周知,固態儲存裝置 (Solid State Storage Device,簡稱SSD) 已經非常廣泛的應用於各種電子產品,例如SD卡、固態硬碟等等。固態儲存裝置中包括一非揮發性記憶體(non-volatile memory)。當資料寫入非揮發性記憶體後,一旦固態儲存裝置的電源被關閉,資料仍可保存在非揮發性記憶體中。As we all know, Solid State Storage Device (SSD) has been widely used in various electronic products, such as SD cards, solid state drives, etc. The solid-state storage device includes a non-volatile memory (non-volatile memory). After the data is written to the non-volatile memory, once the power of the solid-state storage device is turned off, the data can still be stored in the non-volatile memory.
美國專利US 9,922,706揭露一種使用狀態預測方法的固態儲存裝置。其利用預測方程式(prediction function)來預估固態儲存裝置中非揮發性記憶體在未來時間點的狀態,並且預測適當的解碼流程或者提供適當的讀取電壓。US Patent No. 9,922,706 discloses a solid-state storage device using a state prediction method. It uses a prediction function to predict the state of the non-volatile memory in the solid-state storage device at a future point in time, and predicts an appropriate decoding process or provides an appropriate read voltage.
請參照第1圖,其所繪示為習知固態儲存裝置示意圖。固態儲存裝置100經由一外部匯流排115連接至主機(host)110。其中,外部匯流排115可為USB匯流排、SATA匯流排、PCIe匯流排、M.2匯流排或者U.2匯流排等等。Please refer to FIG. 1, which is a schematic diagram of a conventional solid-state storage device. The solid-state storage device 100 is connected to a
固態儲存裝置100中包括一控制器120、緩衝器130與一非揮發性記憶體150。控制器120連接至非揮發性記憶體150與緩衝器130。其中,非揮發性記憶體150由多個晶粒(die)11~14組合而成,這些晶粒11~14可為反及閘快閃晶粒(NAND flash die)。另外,緩衝器130可為動態隨機存取記憶體(DRAM)。The solid-state storage device 100 includes a controller 120, a buffer 130, and a non-volatile memory 150. The controller 120 is connected to the non-volatile memory 150 and the buffer 130. The non-volatile memory 150 is composed of a plurality of dies 11-14, and these dies 11-14 can be NAND flash die. In addition, the buffer 130 may be a dynamic random access memory (DRAM).
控制器120中更包括一錯誤校正碼電路(ECC電路)124、方程式儲存電路126以及一指令佇列(command queue)128。其中,指令佇列128可以暫存多個運算指令(operation command),例如編程運算(program operation)、讀取運算(read operation)、抹除運算(erase operation)。另外,控制器120可將指令佇列128中的運算指令傳遞至非揮發性記憶體150。The controller 120 further includes an error correction code circuit (ECC circuit) 124, an
舉例來說,當主機110發出寫入指令(write command)以及寫入資料時,控制器120根據寫入指令來產生編程運算(program operation)暫存於指令佇列128。再者,ECC電路124對寫入資料進行ECC編碼動作,成為編碼的寫入資料(encoded write data)並暫存於緩衝器130。最後,控制器120將編程運算以及編碼的寫入資料傳遞至非揮發性記憶體150,使得編碼的寫入資料儲存至非揮發性記憶體150。For example, when the
當主機110發出讀取指令(read command)時,控制器120根據讀取指令來產生讀取運算(read operation)暫存於指令佇列128。當控制器120將讀取運算傳遞至非揮發性記憶體150後,非揮發性記憶體150即傳遞編碼的讀取資料(encoded read data)至控制器120。接著,ECC電路124對編碼的讀取資料進行解碼動作後產生讀取資料(read date)並暫存於緩衝器130。最後,讀取資料即被傳遞至主機110。When the
基本上,控制器120利用編程運算可將編碼的寫入資料儲存至特定的晶粒11~14中,或者將編碼的寫入資料散布於所有的晶粒11~14中。另外,控制器120也可以利用讀取運算,由特定的晶粒中11~14中或者由所有的晶粒11~14中來取得編碼的讀取資料。Basically, the controller 120 can store the encoded write data in the specific dies 11-14 using programming operations, or distribute the encoded write data in all the dies 11-14. In addition, the controller 120 may also use the reading operation to obtain the encoded reading data from the specific dies 11-14 or all the dies 11-14.
當然,控制器120也可以在適當時機產生抹除運算(erase operation)暫存於指令佇列128中。當抹除運算傳遞至非揮發性記憶體150時,非揮發性記憶體150中特定晶粒11~14中特定區塊內的資料即被抹除,或者所有晶粒11~14中特定區塊內的資料即被抹除。Of course, the controller 120 may also generate an erase operation at an appropriate timing and temporarily store it in the
一般來說,固態儲存裝置100出廠,且非揮發性記憶體150並經過多次編程、讀取與抹除之後,非揮發性記憶體150的特性變差,可能造成資料流失(loss)。此時,由非揮發性記憶體150中取得之編碼的讀取資料無法通過解碼動作,也無法產生正確的讀取資料傳遞至主機,並導致讀取失敗(read fail)。Generally speaking, after the solid-state storage device 100 is shipped from the factory and the non-volatile memory 150 has been programmed, read, and erased many times, the characteristics of the non-volatile memory 150 are deteriorated, which may cause data loss. At this time, the encoded read data obtained from the non-volatile memory 150 cannot pass the decoding operation, nor can it generate correct read data and pass it to the host, and cause read failure (read fail).
為了預防固態儲存裝置100發生讀取失敗,控制器120中的方程式儲存電路(function storage circuit)126內儲存多個預測方程式(prediction function)。預測方程式可以根據非揮發性記憶體150的各種參數來預測非揮發性記憶體150未來一段時間之後(例如三天後、一星期後或者一個月後)的狀態。如果預測方程式判斷出未來一段時間後,非揮發性記憶體150的狀態可能影響固態儲存裝置100的效能,則控制器120可以提前進行修正。例如,修改解碼動作中的解碼流程、修改讀取電壓、將預測出即將損壞區塊內的資料移動至其他區塊。In order to prevent the solid-state storage device 100 from failing to read, a plurality of prediction functions are stored in the
換言之,固態儲存裝置100出廠之後,在運作的過程中,控制器120會持續蒐集非揮發性記憶體150內各個區塊(block)的多個參數,並將這些參數輸入預測方程式並且獲得對應的預測結果。其中,非揮發性記憶體150的參數可為區塊的錯誤位元(error bit)數目、編程時間(program time)、抹除時間(erase time)、即時解碼流程(例如硬式解碼或者式軟式解碼流程)、非揮發性記憶體150的操作溫度、讀取電壓偏移(read voltage shift)等等。In other words, after the solid-state storage device 100 is shipped from the factory, during operation, the controller 120 continuously collects a plurality of parameters of each block in the non-volatile memory 150, and inputs these parameters into the prediction equation and obtains the corresponding forecast result. The parameters of the non-volatile memory 150 can be the number of error bits of the block, program time, erase time, and real-time decoding process (such as hard decoding or soft decoding) Process), the operating temperature of the non-volatile memory 150, read voltage shift, etc.
為了蒐集非揮發性記憶體150的參數,控制器120會自行產生讀取運算並暫存於指令佇列128。當非揮發性記憶體150根據讀取運算而將編碼的讀取資料傳遞至控制器120後,ECC電路124會對編碼的讀取資料進行解碼動作,而執行解碼動作的過程中所出現的解碼內容則會暫存於緩衝器130中。再者,控制器120讀取緩衝器130中的所有解碼內容,並計算出預測方程式所需的參數。之後,控制器120再將計算出的參數輸入預測方程式並且獲得對應的預測結果。基本上,解碼內容可包括,但不限定於:錯誤位元的數目、編程時間、抹除時間、即時解碼流程或者操作溫度等等。In order to collect the parameters of the non-volatile memory 150, the controller 120 will automatically generate a read operation and temporarily store it in the
請參照第2圖,其所繪示為習知指令佇列示意圖。控制器120可根據主機110的讀取指令來產生對應之主機的讀取運算(Host read operation)並暫存於指令佇列128中。另外,為了蒐集非揮發性記憶體150的資訊,控制器120也可產生蒐集用讀取運算(Collection read operation)並暫存於指令佇列128中。Please refer to FIG. 2, which is a schematic diagram of a conventional command queue. The controller 120 can generate a corresponding host read operation (Host read operation) according to the read command of the
基本上,控制器120不會依序將讀取運算傳遞至非揮發性記憶體150。控制器120會根據晶粒11~14是否在忙碌(busy)而以不定次序(out of order)的方式傳遞讀取運算至非揮發性記憶體150。舉例來說,當晶粒11正在忙碌時,控制器120不會傳遞關於晶粒11的讀取運算至非揮發性記憶體150。當晶粒13不忙碌(not busy)或閒置(idle)時,控制器120即由指令佇列128中傳遞關於晶粒13的讀取運算至非揮發性記憶體150。當然,指令佇列128中也可以暫存編程運算以及抹除運算。Basically, the controller 120 does not sequentially transfer the read operation to the non-volatile memory 150. The controller 120 transfers the read operation to the non-volatile memory 150 in an out of order according to whether the dies 11-14 are busy. For example, when the
由於控制器120以不定次序(out of order)的方式傳遞讀取運算至非揮發性記憶體150。因此,控制器120也必須區別非揮發性記憶體150回傳之內容是屬於主機110之編碼的讀取資料或者蒐集用之編碼的讀取資料。於進行解碼動作並產生讀取資料後,主機100要求的讀取資料即可傳遞至主機100。The controller 120 transfers the read operation to the non-volatile memory 150 in an out of order manner. Therefore, the controller 120 must also distinguish whether the content returned by the non-volatile memory 150 is the encoded read data belonging to the
再者,蒐集用的讀取資料則不需要傳遞至主機100,控制器120將執行解碼動作的過程中所出現的解碼內容暫存於緩衝器130中。Furthermore, the collected reading data does not need to be transferred to the host 100, and the controller 120 temporarily stores the decoded content that appears during the decoding operation in the buffer 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。For example, assume that one block in the non-volatile memory 150 has 1024 pages, and each page has 4 ECC codewords. In order to collect the decoded content of a block, the controller 120 must generate 4096 (1024×4) collection read operations to the
明顯地,為了要預測一個區塊的狀態,控制器120需要在緩衝器130中設定16384個位元組的空間來暫存解碼內容。如果控制器120需要預測多個區塊的狀況,則會佔用到大部分的緩衝器130空間。Obviously, in order to predict the state of a block, the controller 120 needs to set a space of 16384 bytes in the buffer 130 to temporarily store the decoded content. If the controller 120 needs to predict the status of multiple blocks, it will occupy most of the buffer 130 space.
另外,控制器120也必須多次讀取緩衝器130中的所有解碼內容,並計算出預測方程式所需的參數。因此,固態儲存裝置100的總體效能會下降。In addition, the controller 120 must also read all the decoded content in the buffer 130 multiple times and calculate the parameters required for the prediction equation. Therefore, the overall performance of the solid-state storage device 100 will decrease.
本發明為一種固態儲存裝置,包括:一非揮發性記憶體,包括複數個晶粒;一緩衝器;一控制器,連接至該非揮發性記憶體與該緩衝器,該控制器包括一錯誤校正碼電路、一方程式儲存電路、一暫存器組與一指令佇列;其中,該控制器產生多個蒐集用讀取運算,暫存於該指令佇列,並傳遞至該非揮發性記憶體;該非揮發性記憶體根據每一該蒐集用讀取運算產生對應的一編碼的讀取資料傳遞至該控制器;其中,該錯誤校正碼電路對該編碼的讀取資料進行解碼動作後產生一解碼內容,且該解碼內容中的一第一對應數目傳遞至該暫存器組中的一第一暫存器;其中,當該些編碼的讀取資料進行解碼動作後,該第一暫存器儲存的一數值即為一第一參數,輸入該方程式儲存電路中的一預測方程式。The present invention is a solid-state storage device, including: a non-volatile memory, including a plurality of dies; a buffer; a controller, connected to the non-volatile memory and the buffer, the controller includes an error correction A code circuit, a program storage circuit, a register group, and a command queue; wherein, the controller generates a plurality of read operations for collection, temporarily stores in the command queue, and passes it to the non-volatile memory; The non-volatile memory generates a corresponding coded reading data corresponding to each collection reading operation to the controller; wherein, the error correction code circuit performs a decoding operation on the coded reading data to generate a decoding Content, and a first corresponding number in the decoded content is transferred to a first register in the register group; wherein, when the encoded read data is decoded, the first register A stored value is a first parameter, and a predictive equation in the equation storage circuit is input.
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下。In order to have a better understanding of the above and other aspects of the present invention, the embodiments are specifically described below and described in detail in conjunction with the accompanying drawings.
為了要改善習知固態儲存裝置為了計算預測方程式所需的參數而導致固態儲存裝置效能下降的問題,本發明提出一種固態儲存裝置,在讀取運算中建立多個設定欄位用以控制對應暫存器之運作。In order to improve the problem that the performance of the conventional solid-state storage device in order to calculate the parameters required for predicting the equation reduces the performance of the solid-state storage device, the present invention proposes a solid-state storage device that creates multiple setting fields in the reading operation to control the corresponding temporary The operation of the memory.
請參照第3圖,其所繪示為本發明固態儲存裝置示意圖。固態儲存裝置300經由一外部匯流排115連接至主機(host)110。其中,外部匯流排115可為USB匯流排、SATA匯流排、PCIe匯流排、M.2匯流排或者U.2匯流排等等。Please refer to FIG. 3, which is a schematic diagram of the solid-state storage device of the present invention. The solid-state storage device 300 is connected to the
固態儲存裝置300中包括一控制器320、緩衝器130與一非揮發性記憶體150。控制器320連接至非揮發性記憶體150與緩衝器130。其中,非揮發性記憶體150由多個晶粒(die)11~14組合而成,這些晶粒11~14可為反及閘快閃晶粒(NAND flash die)。另外,緩衝器130可為動態隨機存取記憶體(DRAM)。The solid-state storage device 300 includes a controller 320, a buffer 130, and a non-volatile memory 150. The controller 320 is connected to the non-volatile memory 150 and the buffer 130. The non-volatile memory 150 is composed of a plurality of dies 11-14, and these dies 11-14 can be NAND flash die. In addition, the buffer 130 may be a dynamic random access memory (DRAM).
控制器320中更包括一暫存器組330、一錯誤校正碼電路(ECC電路)124、方程式儲存電路126以及一指令佇列(command queue)328。其中,指令佇列328可以暫存多個運算指令(operation command),例如編程運算(program operation)、讀取運算(read operation)、抹除運算(erase operation)。另外,控制器320可將指令佇列328中的運算指令傳遞至非揮發性記憶體150。The controller 320 further includes a
相同地,當主機110發出寫入指令或者讀取指令時,控制器320可對應地產生編程運算或者讀取運算並暫存於指令佇列328中。控制器320可將指令佇列328中的編程運算或者讀取運算傳遞至非揮發性記憶體150。其詳細的運作,此處不再贅述。Similarly, when the
基本上,控制器320利用編程運算可將編碼的寫入資料儲存至特定的晶粒11~14中,或者將編碼的寫入資料散布於所有的晶粒11~14中。另外,控制器320也可以利用讀取運算,由特定的晶粒中11~14中或者由所有的晶粒11~14中來取得編碼的讀取資料。Basically, the controller 320 can store the encoded write data in the specific dies 11-14 by programming operations, or distribute the encoded write data in all the dies 11-14. In addition, the controller 320 may also use the reading operation to obtain the encoded reading data from the specific dies 11-14 or all the dies 11-14.
當然,控制器320也可以在適當時機產生抹除運算(erase operation)暫存於指令佇列328中。當抹除運算傳遞至非揮發性記憶體150時,非揮發性記憶體150中特定晶粒11~14中特定區塊內的資料即被抹除,或者所有晶粒11~14中特定區塊內的資料即被抹除。Of course, the controller 320 may also generate an erase operation at an appropriate timing and temporarily store it in the
當固態儲存裝置300出廠之後,在運作的過程中,控制器320會持續蒐集非揮發性記憶體150內各個區塊(block)的多個參數,並將這些參數輸入預測方程式並且獲得對應的預測結果。其中,非揮發性記憶體150的參數可為區塊的錯誤位元(error bit)數目、編程時間(program time)、抹除時間(erase time)、即時解碼流程(例如硬式解碼或者式軟式解碼流程)、非揮發性記憶體150的操作溫度、讀取電壓偏移(read voltage shift)等等。After the solid-state storage device 300 is shipped from the factory, during operation, the controller 320 will continuously collect multiple parameters of each block in the non-volatile memory 150, and input these parameters into the prediction equation and obtain the corresponding prediction result. The parameters of the non-volatile memory 150 can be the number of error bits of the block, program time, erase time, and real-time decoding process (such as hard decoding or soft decoding) Process), the operating temperature of the non-volatile memory 150, read voltage shift, etc.
根據本發明的實施例,於控制器320產生的讀取運算中增加多個設定欄位,並搭配暫存器組中的至少一暫存器,用以持續記錄解碼內容,亦可暫停或重置(reset)暫存器的內容。According to an embodiment of the present invention, a plurality of setting fields are added to the read operation generated by the controller 320, and at least one register in the register group is used to continuously record the decoded content, and can also be paused or Reset the contents of the register.
請參照第4圖,其所繪示為本發明指令佇列中讀取運算與暫存器的運作關係第一實施例。基本上,控制器320根據主機110的讀取指令來產生對應之主機的讀取運算(Host read operation)並暫存於指令佇列328中。另外,為了蒐集非揮發性記憶體150的資訊,控制器320也可產生蒐集用讀取運算(Collection read operation)並暫存於指令佇列328中。Please refer to FIG. 4, which illustrates a first embodiment of the operation relationship between the read operation and the register in the command queue of the present invention. Basically, the controller 320 generates a corresponding host read operation (Host read operation) according to the read command of the
如第4圖所示,控制器320產生的讀取運算中更包括二個位元(bit),一個位元代表重置致能(reset enable)欄位,另一個位元代表蒐集致能(collection enable)欄位。重置致能欄位以及蒐集致能欄位設定為"1"時,代表致能(enable);重置致能欄位以及蒐集致能欄位設定為"0"時,代表禁能(disable)。As shown in FIG. 4, the read operation generated by the controller 320 further includes two bits. One bit represents the reset enable field, and the other bit represents the collection enable ( collection enable) field. When the reset enable field and the collection enable field are set to "1", it means enable (enable); when the reset enable field and the collection enable field are set to "0", it means disable (disable ).
舉例來說,假設控制器320欲將一特定區塊的錯誤位元總數(error bit count)作為非揮發性記憶體150的參數並輸入預測方程式,則控制器可利用暫存器組330中的一累加暫存器(accumulator resistor)330a來獲得錯誤位元總數。詳細運作流程說明如下。For example, if the controller 320 wants to use the error bit count of a particular block as a parameter of the non-volatile memory 150 and input the prediction equation, the controller can use the
假設非揮性記憶體150中一個區塊有1024個頁、每個頁有4個ECC碼字(ECC codeword)。為了要蒐集一個區塊的錯誤位元總數,控制器320產生4096(1024×4)個蒐集用讀取運算至指令佇列328,並傳遞至非揮發性記憶體150用以讀取4096個ECC碼字(ECC codeword)。Suppose a block in the non-volatile memory 150 has 1024 pages, and each page has 4 ECC codewords. In order to collect the total number of erroneous bits of a block, the controller 320 generates 4096 (1024×4) collection read operations to the
如第4圖所示,指令佇列328中包括蒐集用讀取運算以及主機用讀取運算。其中,索引1(index 1)的蒐集用讀取運算中,重置致能欄位設定為"1"且蒐集致能欄位設定為"1",代表累加暫存器330a被重置(reset),並開始累加錯誤位元。因此,根據索引1的蒐集用讀取運算,ECC電路對非揮發性記憶體150傳回的ECC碼字進行解碼動作後,其解碼內容中包括38個錯誤位元(error bits)會被記錄於累加暫存器330a中。此時,累加暫存器330a中記錄的數值為38。As shown in FIG. 4, the
再者,索引2(index 2)的蒐集用讀取運算中,重置致能欄位設定為"0"且蒐集致能欄位設定為"1",代表累加暫存器330a不會被重置,並持續累加錯誤位元。因此,根據索引2的蒐集用讀取運算,ECC電路對非揮發性記憶體150傳回的ECC碼字進行解碼動作後,其解碼內容中包括36個錯誤位元(error bits)即被累加於累加暫存器330a中。此時,累加暫存器330a記錄的數值為74。In addition, in the read operation for collection of index 2 (index 2), the reset enable field is set to "0" and the collect enable field is set to "1", indicating that the
再者,索引3(index 3)的主機用讀取運算中,重置致能欄位設定為"0"且蒐集致能欄位設定為"0",代表累加暫存器330a不會被重置,也不會累加錯誤位元。因此,根據索引3的主機用讀取運算,ECC電路對非揮發性記憶體150傳回的ECC碼字進行解碼動作後,其解碼內容中不論有多少錯誤位元,皆不會被累加於累加暫存器330a中。此時,累加暫存器330a記錄的數值維持為74。同理,後續索引4~6的主機用讀取運算,累加暫存器330a記錄的數值也維持為74。In addition, in the index 3 (index 3) host read operation, the reset enable field is set to "0" and the collection enable field is set to "0", indicating that the
再者,索引7(index 7)的蒐集用讀取運算中,重置致能欄位設定為"0"且蒐集致能欄位設定為"1",代表累加暫存器330a不會被重置,並持續累加錯誤位元。因此,根據索引7的蒐集用讀取運算,ECC電路對非揮發性記憶體150傳回的ECC碼字進行解碼動作後,其解碼內容中包括31個錯誤位元(error bits)即被累加於累加暫存器330a中。此時,累加暫存器330a記錄的數值為105。In addition, in the read operation for the collection of index 7 (index 7), the reset enable field is set to "0" and the collect enable field is set to "1", indicating that the
依此類推,當控制器320產生的4096個蒐集用讀取運算由指令佇列328傳遞至非揮發性記憶體150後,累加暫存器330a內所記錄的數值即為該區塊的錯誤位元總數。而控制器320即直接讀取累加暫存器330a中的數值,並作為預測方程式的一個參數,輸入預測方程式。By analogy, after the 4096 collection read operations generated by the controller 320 are transferred from the
如第5圖所示,其為本發明固態儲存裝置第一實施例的參數計算流程圖。首先,控制器320經過一特定時間之後啟動(步驟S502),此特定時間可為例如10小時,或者一天。亦即,固態儲存裝置300運作10小時之後,即利用預測方程式來預測非揮發性記憶體150的狀態。As shown in FIG. 5, it is a flowchart of parameter calculation of the first embodiment of the solid-state storage device of the present invention. First, the controller 320 starts after a specific time (step S502), which may be, for example, 10 hours, or one day. That is, after the solid-state storage device 300 is operated for 10 hours, the state of the non-volatile memory 150 is predicted using the prediction equation.
接著,產生多個蒐集用讀取運算,暫存於該指令佇列,並傳遞至該非揮發性記憶體150(步驟S504)。接著,非揮發性記憶體150會將每一個蒐集用讀取運算所對應之編碼的讀取資料回傳至控制器320(步驟 S506)。Next, multiple read operations for collection are generated, temporarily stored in the command queue, and transferred to the non-volatile memory 150 (step S504). Then, the non-volatile memory 150 returns the encoded read data corresponding to each collected read operation to the controller 320 (step S506).
接著,控制器320中的ECC電路124會對每一個編碼的讀取資料進行解碼動作後產生一解碼內容,且解碼內容中的一第一對應數目傳遞至該暫存器組中的一第一暫存器(步驟S508)。如第4圖的範例,解碼內容中包括錯誤位元數目,而錯誤位元數目即傳遞至累加暫存器330a。Then, the
之後,當所有編碼的讀取資料進行解碼動作後,該第一暫存器儲存的一數值即為一第一參數,輸入該方程式儲存電路中的一預測方程式(步驟S510)。如第4圖的範例,所有解碼內容中的錯誤位元數目皆傳遞至累加暫存器330a後,累加暫存器330a內所記錄的數值即為該區塊的錯誤位元總數。而控制器320即直接讀取累加暫存器330a中的數值,並作為預測方程式的一個參數,輸入預測方程式。After that, after all the encoded read data are decoded, a value stored in the first register is a first parameter, and a predictive equation in the equation storage circuit is input (step S510). As shown in the example in FIG. 4, after all the error bits in the decoded content are transferred to the
根據以上的說明可知,本發明的固態儲存裝置300中,控制器320不需在緩衝器130中設定特定的空間來暫存解碼內容,也不需要再讀取並計算緩衝器130中的解碼內容即可獲得預測方程式的參數。因此,可以大幅度地提升固態儲存裝置300的效能。According to the above description, in the solid-state storage device 300 of the present invention, the controller 320 does not need to set a specific space in the buffer 130 to temporarily store the decoded content, nor does it need to read and calculate the decoded content in the buffer 130 The parameters of the prediction equation can be obtained. Therefore, the performance of the solid-state storage device 300 can be greatly improved.
上述的參數係以錯誤位元的總數為例來說明,但是本發明並不限定於此。利用相同的暫存器控制方式,更可以在讀取運算中增加一個緩衝器選擇(register selection)欄位,以利用暫存器組330中的多個暫存器來蒐集各種參數。The above parameters are described by taking the total number of error bits as an example, but the present invention is not limited to this. Using the same register control method, a register selection field can be added to the read operation to use the multiple registers in the
請參照第6圖,其所繪示為本發明指令佇列中讀取運算與暫存器的運作關係第二實施例。控制器320產生的讀取運算中更包括七個位元(bit),一個位元代表重置致能(reset enable)欄位,一個位元代表蒐集致能(collection enable)欄位、另五個位元為暫存器選擇欄位(register selection),用來選擇暫存器組330中的特定暫存器。Please refer to FIG. 6, which illustrates a second embodiment of the operation relationship between the read operation and the register in the command queue of the present invention. The read operation generated by the controller 320 further includes seven bits, one bit represents the reset enable field, one bit represents the collection enable field, and the other five Each bit is a register selection field (register selection) used to select a specific register in the
舉例來說,暫存器組330中至少包括五個暫存器,每個暫存器可以根據解碼內容來計算不同的參數。如第6圖所示,暫存器a可用來計算錯誤位元總數(error bit count)、暫存器b可用來計算錯誤位元的變異數(error bit variance)、暫存器c可用來計算解碼失敗的總數(decide fail count)、暫存器d可計算忙碌的總時間(busy time)、暫存器e可計算ECC碼字的總數(ECC codeword count)。For example, the
假設控制器320選擇的預測方程式需要輸入的參數包括:錯誤位元總數、錯誤位元變異數、以及ECC碼字總數。則控制器320可將讀取運算中暫存器選擇欄位設定為"11001"。亦即,動作暫存器a、暫存器b與暫存器e,不動作暫存器c與暫存器d。詳細運作流程說明如下。It is assumed that the parameters to be input by the prediction equation selected by the controller 320 include the total number of erroneous bits, the number of erroneous bit variations, and the total number of ECC code words. Then, the controller 320 may set the register selection field in the reading operation to "11001". That is, the register a, the register b, and the register e are operated, and the register c and the register d are not operated. The detailed operation process is described below.
如第6圖所示,索引1(index 1)的蒐集用讀取運算中,重置致能欄位設定為"1"、蒐集致能欄位設定為"1"且暫存器選擇欄位設定為"11001"。因此,暫存器a、暫存器b與暫存器e動作。另外,暫存器a、暫存器b與暫存器e被重置(reset),且各別開始蒐集錯誤位元的數目、錯誤位元的變異數以及ECC碼字的數目。另外,控制器320可根據解碼內容,將錯誤位元數目傳遞至暫存器a,將錯誤位元的變異數傳遞至暫存器b,將ECC碼字的數目傳遞至暫存器d。As shown in Figure 6, in the read operation for the collection of index 1 (index 1), the reset enable field is set to "1", the collect enable field is set to "1" and the register selection field Set to "11001". Therefore, the register a, the register b, and the register e operate. In addition, the register a, the register b, and the register e are reset, and the number of erroneous bits, the number of variability of the erroneous bits, and the number of ECC codewords are separately collected. In addition, the controller 320 may transfer the number of erroneous bits to the register a according to the decoded content, the variability of the error bit to the register b, and the number of ECC codewords to the register d.
另外,索引2(index 1)的蒐集用讀取運算中,重置致能欄位設定為"0"、蒐集致能欄位設定為"1"且暫存器選擇欄位設定為"11001"。因此,暫存器a、暫存器b與暫存器e繼續蒐集錯誤位元的數目、錯誤位元的變異數以及ECC碼字的數目。In addition, in the read operation for collection of index 2 (index 1), the reset enable field is set to "0", the collect enable field is set to "1" and the register selection field is set to "11001" . Therefore, the register a, the register b, and the register e continue to collect the number of erroneous bits, the variability of the erroneous bits, and the number of ECC codewords.
再者,索引3~索引6(index 3~index 6)的主機用讀取運算中,重置致能欄位設定為"0"、蒐集致能欄位設定為"0"、暫存器選擇欄位設定為"00000",代表暫存器a、暫存器b與暫存器e不會蒐集對應的錯誤位元數目、錯誤位元的變異數以及ECC碼字的數目。In addition, in the read operation of the host for
再者,索引7(index 7)的蒐集用讀取運算中,重置致能欄位設定為"0"、蒐集致能欄位設定為"1"且暫存器選擇欄位設定為"11001"。因此,暫存器a、暫存器b與暫存器e繼續蒐集錯誤位元數目、錯誤位元的變異數以及ECC碼字的數目。Furthermore, in the read operation for the index 7 (index 7) collection, the reset enable field is set to "0", the collect enable field is set to "1" and the register selection field is set to "11001" ". Therefore, the register a, the register b, and the register e continue to collect the number of error bits, the number of variations of the error bits, and the number of ECC codewords.
依此類推,當控制器320產生的4096個蒐集用讀取運算,由指令佇列328傳遞至非揮發性記憶體150後,暫存器a的數值即為錯誤位元總數,暫存器b的數值即為錯誤位元的變異數,暫存器e的數值即為ECC碼字的總數。換言之,控制器320即直接讀取暫存器a、暫存器b、暫存器e的數值,並作為預測方程式的三個參數,輸入預測方程式。By analogy, when the 4096 read operations generated by the controller 320 are transferred from the
換言之,第二實施例可設定多個暫存器來接收解碼內容中的多個對應數目,例如錯誤位元數目、錯誤位元的變異數以及ECC碼字的數目,並獲得預測方程式所需要的多個參數。In other words, the second embodiment can set multiple registers to receive multiple corresponding numbers in the decoded content, such as the number of error bits, the number of error bit errors, and the number of ECC codewords, and obtain the prediction equation Multiple parameters.
當然,上述之第二實施例也可以再增加一位元的蒐集及結束欄位(collection end),並成為本發明之第三實施例。請參照第7圖,其所繪示為本發明指令佇列中讀取運算與暫存器的運作關係第三實施例。其中,當蒐集結束欄位被設定("1")時,代表該蒐集用讀取運算為最後一個搜集用讀取運算。當蒐集結束欄位未被設定("0")時,代表該蒐集用讀取運算為不是最後一個搜集用讀取運算。Of course, the above-mentioned second embodiment can also add a one-bit collection and end field (collection end), and become the third embodiment of the present invention. Please refer to FIG. 7, which illustrates a third embodiment of the operation relationship between the read operation and the register in the command queue of the present invention. Among them, when the collection end field is set ("1"), it means that the collection read operation is the last collection read operation. When the collection end field is not set ("0"), it means that the collection read operation is not the last collection read operation.
如第7圖所示,假設蒐集一個區塊的錯誤位元總數,控制器320產生4096(1024×4)個蒐集用讀取運算至指令佇列328,而最後一個蒐集用讀取運算儲存於的指令佇列328的索引5000之位置。因此,索引5000位置的蒐集用讀取運算,其蒐集結束欄位設定為"1",並且索引5000位置之前的蒐集用讀取運算,其蒐集結束欄位設定為"0"。As shown in FIG. 7, assuming that the total number of erroneous bits of a block is collected, the controller 320 generates 4096 (1024×4) collection read operations to the
根據本發明的第三實施例,當蒐集結束欄位設定為"1"的蒐集用讀取運算傳遞至非揮發性記憶體時,控制器320也會被通知指令佇列328已經傳遞了4096個蒐集用讀取運算。此時,暫存器a的數值即為錯誤位元總數,暫存器b的數值即為錯誤位元的變異數,暫存器e的數值即為ECC碼字的總數。換言之,控制器320即直接讀取暫存器a、暫存器b、暫存器e的數值,並作為預測方程式的三個參數,輸入預測方程式。According to the third embodiment of the present invention, when the read operation for collecting is set to "1" in the collecting end field and transferred to the non-volatile memory, the controller 320 will also be notified that the
利用相同的暫存器控制方式,更可以在讀取運算中增加一個群組選擇(group selection)欄位,以利用暫存器組330中的特定暫存器群來蒐集特定晶粒中的各種參數。Using the same register control method, a group selection field can be added to the read operation to use the specific register group in the
請參照第8圖,其所繪示為本發明指令佇列中讀取運算與暫存器的運作關係第四實施例。控制器320產生的讀取運算中更包括九個位元(bit),一個位元代表重置致能(reset enable)欄位,一個位元代表蒐集致能(collection enable)欄位、五個位元為暫存器選擇欄位(register selection)、另二個位元為群組選擇欄位(group selection),用來選擇暫存器組330中特定群的暫存器。Please refer to FIG. 8, which illustrates a fourth embodiment of the operation relationship between the read operation and the register in the command queue of the present invention. The read operation generated by the controller 320 further includes nine bits, one bit represents the reset enable field, one bit represents the collection enable field, and five The bit is a register selection field (register selection), and the other two bits are a group selection field (group selection), used to select a specific group of registers in the
舉例來說,暫存器組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。For example, the
再者,暫存器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)。In addition, registers a0~a3 can be used to calculate the total error bit count (error bit count), registers b0~b3 can be used to calculate the error bit variance (error bit variance), temporary Register c0 ~ register c3 can be used to calculate the total number of decoding failure (decide fail count), register d0 ~ register d3 can calculate the total busy time (busy time), register e0 ~ register e3 The total number of ECC codewords can be calculated.
根據本發明的實施例,控制器320可以利用不同暫存器群來計算不同晶粒的參數。舉例來說,利用第(00) 暫存器群來蒐集晶粒11的參數,利用第(11)暫存器群來蒐集晶粒12的參數,依此類推。According to an embodiment of the present invention, the controller 320 may use different register groups to calculate parameters of different die. For example, the (00)th register group is used to collect the parameters of the die 11, the (11)th register group is used to collect the parameters of the die 12, and so on.
舉例來說,控制器320選擇第(10)暫存器群來蒐集特定晶粒中特定區塊的錯誤位元總數、錯誤位元變異數、以及ECC碼字總數。因此,控制器320將讀取運算中暫存器選擇欄位設定為"11001"並將群組選擇欄位設定為"10"。亦即,動作第(10)暫存器群中的暫存器a2、暫存器b2與暫存器e2,不動作暫存器c2與暫存器d2。詳細運作流程說明如下。For example, the controller 320 selects the (10)th register group to collect the total number of erroneous bits, the number of erroneous bit variations, and the total number of ECC codewords for a specific block in a specific die. Therefore, the controller 320 sets the register selection field in the reading operation to "11001" and sets the group selection field to "10". That is, the register a2, the register b2, and the register e2 in the (10)th register group are operated, and the register c2 and the register d2 are not operated. The detailed operation process is described below.
相同的運作原理,在第7圖的索引1(index 1)、索引2(index 1)與索引7 (index 7)的蒐集用讀取運算,控制器320可根據解碼內容,將錯誤位元數目傳遞至暫存器a2,將錯誤位元的變異數傳遞至暫存器b2,將ECC碼字的數目傳遞至暫存器e2。With the same operation principle, in the index 1 (index 1), index 2 (index 1) and index 7 (index 7) of FIG. 7 are collected for reading operation, the controller 320 can determine the number of erroneous bits according to the decoded content It is transferred to the register a2, the variability of the error bit is transferred to the register b2, and the number of ECC codewords is transferred to the register e2.
再者,索引3~索引6(index 3~index 6)的主機用讀取運算中,暫存器a2、暫存器b2與暫存器e2不會蒐集對應的錯誤位元數目、錯誤位元的變異數以及ECC碼字的數目。In addition, in the read operation of the
依此類推,當控制器320產生的4096個蒐集用讀取運算由指令佇列328傳遞至非揮發性記憶體150後,暫存器a2的數值即為錯誤位元總數,暫存器b2的數值即為錯誤位元的變異數,暫存器e2的數值即為ECC碼字的總數。換言之,控制器320即直接讀取暫存器a2、暫存器b2、暫存器e2的數值,並作為預測方程式的三個參數,輸入預測方程式。By analogy, after the 4096 collection read operations generated by the controller 320 are transferred from the
根據以上的說明可知,本發明的固態儲存裝置300中,控制器320不需在緩衝器130中設定特定的空間來暫存解碼內容,也不需要再讀取並計算緩衝器130中的解碼內容即可獲得預測方程式的參數。因此,可以大幅度地提升固態儲存裝置300的效能。According to the above description, in the solid-state storage device 300 of the present invention, the controller 320 does not need to set a specific space in the buffer 130 to temporarily store the decoded content, nor does it need to read and calculate the decoded content in the buffer 130 The parameters of the prediction equation can be obtained. Therefore, the performance of the solid-state storage device 300 can be greatly improved.
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。In summary, although the present invention has been disclosed as above with examples, it is not intended to limit the present invention. Those with ordinary knowledge in the technical field to which the present invention belongs can make various modifications and retouching without departing from the spirit and scope of the present invention. Therefore, the scope of protection of the present invention shall be deemed as defined by the scope of the attached patent application.
11~14:晶粒
100、300:固態儲存裝置
110:主機
115:外部匯流排
120、320:控制器
124:ECC電路
126:方程式儲存電路
128、328:指令佇列
130:緩衝器
150:非揮發性記憶體
330:暫存器組11~14: grain
100, 300: solid state storage devices
110: host
115: External bus
120, 320: controller
124: ECC circuit
126:
第1圖為習知固態儲存裝置示意圖。 第2圖為習知指令佇列示意圖。 第3圖為本發明固態儲存裝置示意圖。 第4圖為本發明指令佇列中讀取運算與暫存器的運作關係第一實施例。 第5圖為本發明固態儲存裝置第一實施例的參數計算流程圖。 第6圖為本發明指令佇列中讀取運算與暫存器的運作關係第二實施例。 第7圖為本發明指令佇列中讀取運算與暫存器的運作關係第三實施例。 第8圖為本發明指令佇列中讀取運算與暫存器的運作關係第四實施例。 Figure 1 is a schematic diagram of a conventional solid-state storage device. Figure 2 is a schematic diagram of a conventional command queue. FIG. 3 is a schematic diagram of the solid-state storage device of the present invention. FIG. 4 is a first embodiment of the operation relationship between the read operation and the register in the command queue of the present invention. FIG. 5 is a flowchart of parameter calculation of the first embodiment of the solid-state storage device of the present invention. FIG. 6 is a second embodiment of the operation relationship between the read operation and the register in the command queue of the present invention. FIG. 7 is a third embodiment of the operation relationship between the read operation and the register in the command queue of the present invention. FIG. 8 is a fourth embodiment of the operation relationship between the read operation and the register in the command queue of the present invention.
11~14:晶粒 11~14: grain
110:主機 110: host
115:外部匯流排 115: External bus
124:ECC電路 124: ECC circuit
126:方程式儲存電路 126: Equation storage circuit
130:緩衝器 130: buffer
150:非揮發性記憶體 150: Non-volatile memory
300:固態儲存裝置 300: solid state storage device
320:控制器 320: controller
328:指令佇列 328: Command Queue
330:暫存器組 330: register group
Claims (8)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108117771A TWI696180B (en) | 2019-05-23 | 2019-05-23 | Solid state storage device using prediction function |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108117771A TWI696180B (en) | 2019-05-23 | 2019-05-23 | Solid state storage device using prediction function |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI696180B true TWI696180B (en) | 2020-06-11 |
TW202044260A TW202044260A (en) | 2020-12-01 |
Family
ID=72176148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108117771A TWI696180B (en) | 2019-05-23 | 2019-05-23 | Solid state storage device using prediction function |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI696180B (en) |
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 (en) * | 2016-05-31 | 2017-12-08 | 光宝电子(广州)有限公司 | Solid state storage device and its trend prediction method |
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/en 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 (en) * | 2016-05-31 | 2017-12-08 | 光宝电子(广州)有限公司 | Solid state storage device and its trend prediction method |
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 (en) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5185156B2 (en) | Memory controller and semiconductor memory device | |
JP5540969B2 (en) | Nonvolatile memory device, memory controller, and memory system | |
US20190340125A1 (en) | Apparatuses and methods to perform continuous read operations | |
TWI534618B (en) | Mapping table updating method, memory control circuit unit and memory storage device | |
US8719491B2 (en) | Encoding flash memory data with a randomizer using different seeds for different sectors | |
US8099543B2 (en) | Methods of operarting memory devices within a communication protocol standard timeout requirement | |
US10283216B2 (en) | Data storage device and data maintenance method thereof | |
US9304900B2 (en) | Data reading method, memory controller, and memory storage device | |
TWI571882B (en) | Wear leveling method, memory control circuit unit and memory storage device | |
TWI656442B (en) | Method for access control in a memory device, and memory device and controller thereof | |
JP2010218634A (en) | Error detector/corrector, memory controller, and semiconductor memory device | |
US20160132384A1 (en) | Data reading method, memory storage device and memory controlling circuit unit | |
CN106155582B (en) | Non-volatile memory device and controller | |
TWI442406B (en) | Method for enhancing verification efficiency regarding error handling mechanism of a controller of a flash memory, and associated memory device and controller thereof | |
CN111984458B (en) | Solid state storage device using predictive equations | |
TWI696180B (en) | Solid state storage device using prediction function | |
US11294598B2 (en) | Storage devices having minimum write sizes of data | |
JP2010097600A (en) | Semiconductor recording device | |
JP2007058940A (en) | Storage device, file storage device, and computer system | |
JP2011134031A (en) | Semiconductor recording device and semiconductor recording system | |
JP4582078B2 (en) | Memory controller, flash memory system, and flash memory control method | |
CN105573662B (en) | Data writing method, memory control circuit unit, and memory storage device | |
JP2011065313A (en) | Storage device | |
CN106980464B (en) | System optimization method using oversampled reads | |
JP2011060415A (en) | Nonvolatile semiconductor storage device and data storage system |