CN111984458B - 使用预测方程式的固态储存装置 - Google Patents
使用预测方程式的固态储存装置 Download PDFInfo
- Publication number
- CN111984458B CN111984458B CN201910436830.1A CN201910436830A CN111984458B CN 111984458 B CN111984458 B CN 111984458B CN 201910436830 A CN201910436830 A CN 201910436830A CN 111984458 B CN111984458 B CN 111984458B
- Authority
- CN
- China
- Prior art keywords
- register
- controller
- storage device
- state storage
- read
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- 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可以暂存多个运算指令(operationcommand),例如编程运算(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也可产生搜集用读取运算(Collectionread 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个比特组(4bytes)的解码内容。换言之,控制器120会收到16384(4096×4byte)个比特组的解码内容,并暂存于缓冲器130。
明显地,为了要预测一个区块的状态,控制器120需要在缓冲器130中设定16384个比特组的空间来暂存解码内容。如果控制器120需要预测多个区块的状况,则会占用到大部分的缓冲器130空间。
另外,控制器120也必须多次读取缓冲器130中的所有解码内容,并计算出预测方程式所需的参数。因此,固态储存装置100的总体效能会下降。
发明内容
本发明的目的在于提供一种固态储存装置,包括:一非挥发性记忆体,包括多个芯片;一缓冲器;一控制器,连接至该非挥发性记忆体与该缓冲器,该控制器包括一错误校正码电路、一方程式储存电路、一暂存器组与一指令队列;其中,该控制器产生多个搜集用读取运算,暂存于该指令队列,并传递至该非挥发性记忆体;该非挥发性记忆体根据每一该搜集用读取运算产生对应的一编码的读取数据传递至该控制器;其中,该错误校正码电路对该编码的读取数据进行解码动作后产生一解码内容,且该解码内容中的一第一对应数目传递至该暂存器组中的一第一暂存器;其中,当该些编码的读取数据进行解码动作后,该第一暂存器储存的一数值即为一第一参数,输入该方程式储存电路中的一预测方程式。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为现有固态储存装置示意图;
图2为现有指令队列示意图;
图3为本发明固态储存装置示意图;
图4为本发明指令队列中读取运算与暂存器的运作关系第一实施例;
图5为本发明固态储存装置第一实施例的参数计算流程图;
图6为本发明指令队列中读取运算与暂存器的运作关系第二实施例;
图7为本发明指令队列中读取运算与暂存器的运作关系第三实施例;
图8为本发明指令队列中读取运算与暂存器的运作关系第四实施例。
其中,附图标记
11~14:芯片
100、300:固态储存装置
110:主机
115:外部总线
120、320:控制器
124:ECC电路
126:方程式储存电路
128、328:指令队列
130:缓冲器
150:非挥发性记忆体
330:暂存器组
具体实施方式
为了要改善现有固态储存装置为了计算预测方程式所需的参数而导致固态储存装置效能下降的问题,本发明提出一种固态储存装置,在读取运算中建立多个设定栏位用以控制对应暂存器的运作。
请参照图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)、读取运算(readoperation)、抹除运算(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的读取指令来产生对应的主机的读取运算(Hostread 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码字(ECCcodeword)。为了要搜集一个区块的错误比特总数,控制器320产生4096(1024×4)个搜集用读取运算至指令队列328,并传递至非挥发性记忆体150用以读取4096个ECC码字(ECCcodeword)。
如图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),一个比特代表重置致能(resetenable)栏位,一个比特代表搜集致能(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码字的数目,并获得预测方程式所需要的多个参数。
当然,上述的第二实施例也可以再增加一比特的搜集及结束栏位(collectionend),并成为本发明的第三实施例。请参照图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的数值,并作为预测方程式的三个参数,输入预测方程式。
利用相同的暂存器控制方式,更可以在读取运算中增加一个群组选择(groupselection)栏位,以利用暂存器组330中的特定暂存器群来搜集特定芯片中的各种参数。
请参照图8,其所绘示为本发明指令队列中读取运算与暂存器的运作关系第四实施例。控制器320产生的读取运算中更包括九个比特(bit),一个比特代表重置致能(resetenable)栏位,一个比特代表搜集致能(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(index7)的搜集用读取运算,控制器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的效能。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
1.一种使用预测方程式的固态储存装置,其特征在于,包括:
一非挥发性记忆体,包括多个芯片;
一缓冲器;
一控制器,连接至该非挥发性记忆体与该缓冲器,该控制器包括一错误校正码电路、一方程式储存电路、一暂存器组与一指令队列;
其中,该控制器产生多个搜集用读取运算,暂存于该指令队列,并传递至该非挥发性记忆体;该非挥发性记忆体根据每一该搜集用读取运算产生对应的一编码的读取数据传递至该控制器;
其中,该错误校正码电路对第一个搜集用读取运算产生的第一读取数据进行解码动作后产生一第一解码内容,且该第一解码内容中的一第一参数的数目传递至该暂存器组中的一第一累加暂存器;
其中,当所有读取数据进行解码动作后,且对应解码后产生的该些解码内容中的第一参数的数目传递至该第一累加暂存器后,该第一累加暂存器储存的一数值即为该第一参数的总数,该总数输入该方程式储存电路中的一预测方程式。
2.根据权利要求1所述的固态储存装置,其特征在于,该搜集用读取运算中包括一重置致能栏位与一搜集致能栏位;当该重置致能栏位被致能时,该第一累加暂存器被重置;以及,当该搜集致能栏位被致能时,该些解码内容中的该第一参数的数目输入该第一累加暂存器。
3.根据权利要求1所述的固态储存装置,其特征在于,该第一参数的数目为下列其中之一:错误比特的数目、错误比特的变异数、解码失败的数目、忙碌总时间或者ECC码字的数目。
4.根据权利要求3所述的固态储存装置,其特征在于,该搜集用读取运算中更包括一暂存器选择栏位,该暂存器选择栏位可选择该暂存器组中的该第一累加暂存器与一第二累加暂存器。
5.根据权利要求4所述的固态储存装置,其特征在于,该错误校正码电路对该第一读取数据进行解码动作后产该第一解码内容,且该第一解码内容中的该第一参数的数目传递至该第一累加暂存器,且该第一解码内容中的一第二参数的数目传递至该第二累加暂存器。
6.根据权利要求4所述的固态储存装置,其特征在于,该搜集用读取运算中更包括一群组选择栏位,该群组选择栏位可选择该暂存器组中一第一累加暂存器群中的该第一累加暂存器与该第二累加暂存器。
7.根据权利要求6所述的固态储存装置,其特征在于,该错误校正码电路对该第一读取数据进行解码动作后产该第一解码内容,且该第一解码内容中的该第一参数的数目传递至该第一累加暂存器,且该第一解码内容中的一第二参数的数目传递至该第二累加暂存器。
8.根据权利要求1所述的固态储存装置,其特征在于,该搜集用读取运算中包括一搜集结束栏;该控制器产生的该些搜集用读取运算中,最后一个搜集用读取运算的该搜集结束栏被设定;以及,当该搜集结束栏被设定的该搜集用读取运算传递至该该非挥发性记忆体后,该控制器被通知该第一累加暂存器储存的该数值为该第一参数的总数,该总数用以输入该方程式储存电路中的该预测方程式。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910436830.1A CN111984458B (zh) | 2019-05-23 | 2019-05-23 | 使用预测方程式的固态储存装置 |
US16/521,620 US10802913B1 (en) | 2019-05-23 | 2019-07-25 | Solid state storage device using prediction function |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910436830.1A CN111984458B (zh) | 2019-05-23 | 2019-05-23 | 使用预测方程式的固态储存装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984458A CN111984458A (zh) | 2020-11-24 |
CN111984458B true CN111984458B (zh) | 2023-07-07 |
Family
ID=72750317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910436830.1A Active CN111984458B (zh) | 2019-05-23 | 2019-05-23 | 使用预测方程式的固态储存装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10802913B1 (zh) |
CN (1) | CN111984458B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7137612B2 (ja) * | 2020-12-24 | 2022-09-14 | 株式会社日立製作所 | 分散型ストレージシステム、データ復旧方法、及びデータ処理プログラム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012038245A (ja) * | 2010-08-11 | 2012-02-23 | Univ Of Tokyo | 制御装置およびデータ記憶装置 |
CN107452421A (zh) * | 2016-05-31 | 2017-12-08 | 光宝电子(广州)有限公司 | 固态储存装置及其状态预测方法 |
CN109285582A (zh) * | 2017-07-19 | 2019-01-29 | 三星电子株式会社 | 存储器系统、非暂时性计算机可读介质及错误校验与校正的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3270441B2 (ja) * | 2000-01-26 | 2002-04-02 | 埼玉日本電気株式会社 | 時分割多元接続方式での誤りビット訂正方法及びその回路 |
GB2395097B (en) * | 2002-11-07 | 2005-11-09 | Motorola Inc | A decoder apparatus and method of decoding therefor |
JP2007335012A (ja) * | 2006-06-15 | 2007-12-27 | Fujitsu Ltd | 制御装置および記憶装置 |
JP2008046791A (ja) * | 2006-08-14 | 2008-02-28 | Fujitsu Ltd | 記憶装置、ファームウェア更新方法、及び制御装置 |
US9037937B2 (en) * | 2010-10-06 | 2015-05-19 | Cleversafe, Inc. | Relaying data transmitted as encoded data slices |
US9318166B2 (en) * | 2011-07-22 | 2016-04-19 | SanDisk Technologies, Inc. | Systems and methods of storing data |
JP2018045387A (ja) * | 2016-09-13 | 2018-03-22 | 東芝メモリ株式会社 | メモリシステム |
-
2019
- 2019-05-23 CN CN201910436830.1A patent/CN111984458B/zh active Active
- 2019-07-25 US US16/521,620 patent/US10802913B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012038245A (ja) * | 2010-08-11 | 2012-02-23 | Univ Of Tokyo | 制御装置およびデータ記憶装置 |
CN107452421A (zh) * | 2016-05-31 | 2017-12-08 | 光宝电子(广州)有限公司 | 固态储存装置及其状态预测方法 |
CN109285582A (zh) * | 2017-07-19 | 2019-01-29 | 三星电子株式会社 | 存储器系统、非暂时性计算机可读介质及错误校验与校正的方法 |
Non-Patent Citations (1)
Title |
---|
Nonvolatile logic-in-memory LSI using cycle-based power gating and its application to motion-vector prediction;Natsui M, Suzuki D, Sakimura N, et al.;《IEEE Journal of Solid-State Circuits, 2014》;第50卷(第2期);476-489 * |
Also Published As
Publication number | Publication date |
---|---|
CN111984458A (zh) | 2020-11-24 |
US10802913B1 (en) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112052188B (zh) | 运用于固态存储装置的电脑系统的数据处理方法 | |
KR101949879B1 (ko) | 동적 소거 블록 그룹화 메커니즘을 가진 데이터 스토리지 시스템 및 이것의 작동 방법 | |
CN102163458B (zh) | 半导体存储器装置 | |
US9176859B2 (en) | Systems and methods for improving the performance of non-volatile memory operations | |
US8495283B2 (en) | Nonvolatile memory device, memory system comprising nonvolatile memory device, and wear leveling method for nonvolatile memory device | |
US8719491B2 (en) | Encoding flash memory data with a randomizer using different seeds for different sectors | |
KR101679530B1 (ko) | 이용 가능한 메모리 공간에 기초한 이중화 저장 장치 구성의 선택 | |
US10283216B2 (en) | Data storage device and data maintenance method thereof | |
US9423960B2 (en) | Methods of operating memory devices within a communication protocol standard timeout requirement | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
US9304900B2 (en) | Data reading method, memory controller, and memory storage device | |
US9582224B2 (en) | Memory control circuit unit, memory storage apparatus and data accessing method | |
TWI571882B (zh) | 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置 | |
US8706953B2 (en) | Data storage device and method performing background operation with selected data compression | |
TW201931366A (zh) | 資料儲存裝置以及非揮發式記憶體操作方法 | |
CN102132354A (zh) | 闪存中的数据的快速低功率读取 | |
TWI656442B (zh) | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 | |
US9304907B2 (en) | Data management method, memory control circuit unit and memory storage apparatus | |
US20130332653A1 (en) | Memory management method, and memory controller and memory storage device using the same | |
CN113360336A (zh) | 用于预测顺序命令操作的功率的存储器系统及其操作方法 | |
CN111984458B (zh) | 使用预测方程式的固态储存装置 | |
CN110767253B (zh) | 固态储存装置及其读取表管理方法 | |
TWI696180B (zh) | 使用預測方程式的固態儲存裝置 | |
JP2011134031A (ja) | 半導体記録装置および半導体記録システム | |
CN107562655B (zh) | 一种数据存储方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |