CN112099985A - 数据储存装置以及非挥发式存储器控制方法 - Google Patents
数据储存装置以及非挥发式存储器控制方法 Download PDFInfo
- Publication number
- CN112099985A CN112099985A CN201911235103.5A CN201911235103A CN112099985A CN 112099985 A CN112099985 A CN 112099985A CN 201911235103 A CN201911235103 A CN 201911235103A CN 112099985 A CN112099985 A CN 112099985A
- Authority
- CN
- China
- Prior art keywords
- data
- volatile memory
- crc
- offset
- controller
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 101
- 238000013500 data storage Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000013507 mapping Methods 0.000 claims abstract description 44
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 33
- 238000007726 management method Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013480 data collection Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/1044—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 with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及数据储存的映射资讯管理,具体地说涉及数据储存装置以及非挥发式存储器控制方法。所采用的映射资讯格式不包括任何无法校正标示位元(UNC bit)。一控制器提供一循环冗余校验(CRC)引擎。根据一主机下达的一无法校正标示指令(如NVMe的WriteUNC指令),该控制器操作该循环冗余校验引擎以一偏移编码种子对一数据样板编码,产生一偏移循环冗余校验码。该控制器将该偏移循环冗余校验码随该数据样板程式化至该非挥发式存储器。该数据样板必然无法通过循环冗余校验。该无法校正标示指令成功运作。
Description
技术领域
本发明有关于非挥发式存储器的控制。
背景技术
非挥发式存储器有多种形式─例如,快闪存储器(flash memory)、磁阻式随机存取存储器(Magnetoresistive RAM)、铁电随机存取存储器(Ferroelectric RAM)、电阻式随机存取存储器(Resistive RAM)、自旋转移力矩随机存取存储器(Spin Transfer Torque-RAM,STT-RAM)…等,用于长时间数据保存,可做为储存媒体实现一数据储存装置。
随着科技进步,数据储存装置的储存能力越发强大。本技术领域需要足以应付大尺寸储存的映射资讯管理技术。
发明内容
本发明所采用的映射资讯格式不须特意规划无法校正标示位元(UNC bit)。映射资讯格式因而有充裕位元数用于物理地址标示。
根据本发明一种实施方式所实现的一数据储存装置包括一非挥发式存储器以及一控制器。该控制器控制该非挥发式存储器,且包括一循环冗余校验(CRC)引擎。根据一主机下达的一无法校正标示指令(如NVMe的WriteUNC指令),该控制器操作该循环冗余校验引擎以一偏移编码种子对一数据样板编码,产生一偏移循环冗余校验码。该控制器将该偏移循环冗余校验码随该数据样板程式化至该非挥发式存储器。该数据样板必然无法通过循环冗余校验。该无法校正标示指令成功运作。
一种实施方式中,该无法校正标示指令指示一逻辑地址。该控制器偏移该逻辑地址,产生一偏移逻辑地址。该控制器操作该循环冗余校验引擎以该偏移逻辑地址作为该偏移编码种子。该数据样板可为零。
一种实施方式中,根据该主机对该逻辑地址所发出的一读取指令,该控制器自该非挥发式存储器取得该数据样板以及该偏移循环冗余校验码。该控制器操作该循环冗余校验引擎以该逻辑地址作为一编码种子。该控制器操作该循环冗余校验引擎以该编码种子对该数据样板产生一循环冗余校验码。该控制器操作该循环冗余校验引擎比对得该循环冗余校验码不同于该偏移循环冗余校验码,并不以该数据样板回应该主机。
一种实施方式中,该控制器是根据该逻辑地址的一映射资讯自该非挥发式存储器取得该数据样板以及该偏移循环冗余校验码。该映射资讯采用的一映射资讯格式不包括任何无法校正标示位元。一种实施方式中,该无法校正标示指令的标示单元小于该映射资讯格式管理的数据单元。
一种实施方式中,关于根据一逻辑地址取自该非挥发式存储器的一第一区域、且错误检查与纠正失败的一错误数据,该控制器将该错误数据以及一循环冗余校验码程式化至该非挥发式存储器的一第二区域。该循环冗余校验码是随该错误数据由该控制器自该非挥发式存储器的该第一区域读出。一种实施方式中,根据该主机对该逻辑地址要求的一读取指令,该控制器自该非挥发式存储器的该第二区域取得该错误数据以及该循环冗余校验码。该控制器操作该循环冗余校验引擎以该逻辑地址作为一编码种子。该控制器操作该循环冗余校验引擎以该编码种子对该错误数据产生一错误循环冗余校验码。该控制器操作该循环冗余校验引擎比对得该错误循环冗余校验码不同于该循环冗余校验码,并不以该错误数据回应该主机。
一种实施方式中,上述错误检查与纠正源于该主机对该非挥发式存储器的一读取指令。
一种实施方式中,上述错误检查与纠正源于该控制器对该非挥发式存储器进行的一垃圾回收。
以上存储器控制器对非挥发式存储器的操作也可以由其他结构实现。本发明更可以前述概念实现非挥发式存储器的控制方法,包括以下步骤:提供一循环冗余校验引擎;根据一主机下达的一无法校正标示指令,操作该循环冗余校验引擎以一偏移编码种子对一数据样板编码,产生一偏移循环冗余校验码;且将该偏移循环冗余校验码随该数据样板程式化至一非挥发式存储器。
下文特举实施例,并配合附图,详细说明本发明内容。
附图说明
图1图解快闪存储器一区块Blk的结构;
图2A图解传统技术所使用的一种映射资讯格式200;
图2B图解本发明一种实施方式所使用的一种映射资讯格式210;
图3为方块图,根据本发明一种实施方式图解一数据储存装置300;
图4对应一UNC标示指令(WriteUNC)图解快闪存储器302一区块上的一数据单元400;
图5为流程图,根据本发明一种实施方式图解UNC标示指令(WriteUNC)的处理流程;且
图6为流程图,根据本发明一种实施方式图解控制器304如何处理主机308的读取要求。
符号说明
200、210~映射资讯格式;
300~数据储存装置;
302~快闪存储器;
304~控制器;
306~暂存存储器;
308~主机;
310~***区块池;
312~备用区块池;
314~数据区块池;
316~数据快取空间;
318~空间,动态维护映射资讯;
320~循环冗余校验引擎;
330、332、334~数据单元以及其中数据区与元数据区;
338~数据区块;
340、342、344~数据单元以及其中数据区与元数据区;
350、352、354~数据单元以及其中数据区与元数据区;
400~数据单元;
A0~主动区块;
A1~目的区块;
LBA~逻辑地址;
S502…S508、S602…S614~步骤。
具体实施方式
以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应由权利要求书界定。
非挥发式存储器可以是快闪存储器(Flash Memory)、磁阻式随机存取存储器(Magnetoresistive RAM)、铁电随机存取存储器(Ferroelectric RAM)、电阻式存储器(Resistive RAM,RRAM)、自旋转移力矩随机存取存储器(Spin Transfer Torque-RAM,STT-RAM)…等,提供长时间数据保存的储存媒体。以下特别以快闪存储器为例进行讨论。
现今数据储存装置常以快闪存储器为储存媒体,实现记忆卡(Memory Card)、通用串行总线闪存装置(USB Flash Device)、固态硬碟(SSD)…等产品。有一种应用是采多晶片封装、将快闪存储器与其控制器包装在一起─称为嵌入式快闪存储器模组(如eMMC)。
以快闪存储器为储存媒体的数据储存装置可应用于多种电子装置中。所述电子装置包括智慧型手机、穿戴装置、平板电脑、虚拟实境设备…等。电子装置的运算模块可视为主机(Host),操作所使用的数据储存装置,以存取其中快闪存储器。
以快闪存储器为储存媒体的数据储存装置也可用于建构数据中心。例如,伺服器可操作固态硬碟(SSD)阵列形成数据中心。伺服器即可视为主机,操作所连结的固态硬碟,以存取其中快闪存储器。
快闪存储器有其特殊的储存特性,以下叙述之。
主机(Host)端是以逻辑地址(例如,逻辑区块地址LBA或全域主机页编号GHP…等)来区别数据。至于数据实际储存在快闪存储器何处,则是以映射资讯管理。
快闪存储器的物理空间是划分为多个区块(Blocks)配置使用。图1图解快闪存储器一区块Blk的结构。区块Blk包括多页面(Pages),例如,页面0…页面255。一种实施方式是根据页面编号─由低编号至高编号─循序使用一区块的储存空间。各页面包括多个区段(Sectors),例如32个区段,每一区段可储存512B长度的使用者数据。一次写入可能涉及多个区段。例如,在4KB数据管理模式下,可将8个区段视为一个数据单元(Unit),进行管理。一次写入可能涵盖8个区段(4KB)长度。16KB长度的页面可由四个数据单元(32个区段)所组成;四个数据单元的逻辑关系可能不连续。
特别是,同样逻辑地址的数据更新并非覆写至旧数据的储存空间,新版本的数据须写入空白的区段。旧空间的内容无效。一区块可能仅零星留存有效数据。由于快闪存储器的储存空间需抹除(erase)后方能再次使用,备用区块逐渐消耗。备用区块数量不足时(如,低于阈值),垃圾回收(Garbage Collection)需求产生。一区块留存的零星有效数据经垃圾回收集中到其他空间。徒留无效数据的区块则抹除释出,拉升备用区块数量,确保快闪存储器的正常使用。垃圾回收也可能使得同区块内容的逻辑关系更零散。
由前述内容可知,快闪存储器的空间配置相当复杂。一种实施方式是建立逻辑-物理地址映射表(Logical-to-Physical Addresses Mapping Table,L2P映射表),记录逻辑地址与物理地址之间的映射资讯,较佳以逻辑地址为索引,物理地址为内容,其中,物理地址例如是物理区块地址(Physical Block Address,PBA)。一种实施方式是以区块资讯Blk#、页面资讯Page#以及数据单元资讯Unit#(或偏移量offset)标示物理位置。或者,多通道(multi channel)技术更包括通道编号CH#如此物理空间标示。
图2A图解传统技术所使用的一种映射资讯格式200,包括32位元(四位元组)来记录物理地址。各位元规划如下:
位元[31]:无法校正(Uncorrectable,UNC)标示位元,用以标示映射资讯所指内容不可靠,或是技术上而言,UNC表示数据已无法透过错误检查与纠正(ECC)而予以修正,当ECC失败,UNC标示位元例如会从"0"切换成"1"。造成ECC失败的可能原因包括环境因素或时间因素所造成的物理错误,读取数据的过程中所产生的错误,也可能是数据程式化的过程中所造成的错误。
位元[30:29]:映射资讯模式(Pattern Mode)位元。一种实施方式中,主机要求写入快闪存储器的数据是先快取在一暂存存储器。待一程式化条件满足(如,快取达一定量、或定时封存),数据才从暂存存储器移至快闪存储器。因此,逻辑地址也有可能是映射到暂存存储器。映射资讯模式(Pattern Mode)显示映射资讯是指向暂存存储器、或是快闪存储器。00/01代表后续位元[28:0]标示快闪存储器的物理地址,10代表后续位元[28:0]标示暂存存储器的物理地址,11代表后续位元[28:0]为无意义的虚置(Dummy)数据。
位元[28:0]:快闪存储器或暂存存储器的物理地址,或虚置数据。
映射资讯格式200设有映射资讯模式位元[30:29],再扣掉UNC标示位元[31],仅有29位元可用于标示物理地址,这将限制数据储存装置所能提供的储存容量。
为了避免上述问题,图2B图解本发明一种实施方式所使用的一种映射资讯格式210,包括32位元(四位元组),映射资讯格式210不再包含UNC标示位元,如此一来,映射资讯格式210有更多的位元数量可用以表示物理地址,使数据储存装置所能提供的储存容量较之前的储存容量可以增加1倍,达到本发明的目的。另外,映射资讯格式210也不再包含映射资讯模式位元。以下详细描述如何不使用UNC标示位元实现无法校正(UNC)。
图3为方块图,根据本发明一种实施方式图解数据储存装置300,包括快闪存储器302、控制器304以及暂存存储器306。主机308透过控制器304操作快闪存储器302。数据储存装置300内部也可经控制器304发动快闪存储器302的最佳化操作;例如,整理快闪存储器302空间,使其发挥最大储存效能。控制器304进行运算时是以暂存存储器306暂存数据。暂存存储器306可为动态随机存取存储器(DRAM)或SRAM。
快闪存储器302包括多个区块。储存***资讯的区块称***区块池310。例如,储存映射资讯的***区块是用于映射资讯的非挥发式储存。取自备用区块池312的主动区块A0用于程式化主机308要求的写入数据。主动区块A0程式化完成后即属数据区块,推入数据区块池314。运行一段时间后,某些数据区块可能因为数据频繁更新,仅留零星的有效数据。该些数据区块将藉垃圾回收(Garbage Collection)释出,重新归类至备用区块池312。取自备用区块池312的目的区块A1即用于垃圾回收的有效数据收集。目的区块A1填满数据后,也被推入该数据区块池314。
如图所示,控制器304是先将数据快取于该暂存存储器306的数据快取空间316,再自数据快取空间316程式化至该主动区块A0。控制器304可利用暂存存储器306的空间318动态维护映射资讯。控制器304包括循环冗余校验(CRC)引擎320。主机308发下的无法校正标示指令(称UNC标示指令,例如:Write UNC指令)包括一个目标逻辑地址LBA。控制器304执行主机308所发下的UNC标示指令时,先对目标逻辑地址LBA以产生偏移逻辑地址LBA_UNC,再命令CRC引擎320将该偏移逻辑地址LBA_UNC作为编码种子,再对数据样板(Pattern)P进行编码,最后产生偏移循环冗余校验码CRC_UNC。之后,控制器304将该数据样板P以及该偏移循环冗余校验码CRC_UNC程式化至主动区块A0的闲置数据单元330,例如,将数据样板P填入闲置数据单元330的数据区332,偏移循环冗余校验码CRC_UNC则填入闲置数据单元330的元数据(Metadata)区334,完成UNC标示,也完成UNC标示指令的执行。之后,再更新目标逻辑地址LBA的映射资讯。一种实施方式中,数据样版P为"0"或是目标逻辑地址LBA所对应的物理地址中所储存的原始数据。
之后,如果主机308欲读取目标逻辑地址LBA的数据时,CRC引擎320是根据目标逻辑地址LBA作为编码种子S,并以该编码种子S对取自数据区332的数据样板P计算出CRC。此时,CRC显然不同于元数据区334所储存的偏移循环冗余校验码CRC_UNC,因此,控制器304回应预设讯息给主机308,预设讯息例如是目标逻辑地址LBA尚未记录,或目标逻辑地址LBA已被清除等。如此一来,在本发明中UNC标示指令不但被执行,且执行的结果符合UNC的精神,让目标逻辑地址LBA的数据无效化或不被采用。
一种实施方式中,主机308以读取指令要求读取目标逻辑地址LBA。控制器304自数据区块338的数据单元340取得的是错误数据D_ERR(数据区342)以及循环冗余校验码CRC(元数据区344)。控制器304对错误数据D_ERR进行ECC处理,结果为ECC失败。因应之,控制器304将错误数据D_ERR以及循环冗余校验码CRC再次程式化至主动区块A0(例如,数据单元330的数据区332以及元数据区334),完成UNC标示。之后,主机308欲读取目标逻辑地址LBA的数据时,控制器304操作CRC引擎320,根据目标逻辑地址LBA对取自数据区332的错误数据D_ERR进行计算并得到错误循环冗余校验码CRC_ERR,这显然不同于元数据区334储存的循环冗余校验码CRC,所以控制器304回应预设讯息给主机308。UNC标示使目标逻辑地址LBA的数据无效化或不被采用,符合被标示为UNC的精神。
垃圾回收(Garbage Collection)程序执行时也可能发生ECC失败的情况。一种实施方式中,控制器304以数据区块338为垃圾回收程序的来源区块(Source Block),自数据单元340取得错误数据D_ERR(数据区342)以及循环冗余校验码CRC(元数据区344),以复制到目的区块A1。复制前,控制器304对错误数据D_ERR进行ECC处理,结果为ECC失败。控制器304将错误数据D_ERR以及循环冗余校验码CRC程式化至目的区块A1上(例如,数据空间350的数据区352以及元数据区354),完成UNC标示。之后,主机308欲读取目标逻辑地址LBA的数据时,控制器304操作该CRC引擎320,根据目标逻辑地址LBA对取自数据区352的错误数据D_ERR计算出错误循环冗余校验码CRC_ERR,这显然不同于元数据区334储存的循环冗余校验码CRC,则控制器304回应预设讯息给主机308。UNC标示使目标逻辑地址LBA的数据无效化或不被采用,符合被标示为UNC的精神。
一种实施方式中,CRC引擎320是以区段长度(512B)为单位进行CRC编码。每区段对应2B长度的CRC数值。一笔数据单元长度(4KB)的数据可产生8笔的循环冗余校验码CRC。更短长度(小于4KB)的数据也可有相应的CRC数值。例如,仅512B的数据可对应1笔循环冗余校验码CRC(2B)。因此,采用循环冗余校验码CRC或偏移循环冗余校验码CRC_UNC来实行UNC标示的方法,可适用于区段长度(512B)、数据单元长度(4KB)或是其他长度的数据。本发明技术使得无法校正标示指令的标示单元小于映射资讯格式210管理的数据单元。
图4对应UNC标示指令(Write UNC)图解快闪存储器302中一个页面的一个数据单元400,数据单元400包括8个区为4KB(8*512B),分别对应至逻辑地址LBA#0~#7。该UNC标示指令包括:起始逻辑地址LBA#4,逻辑地址长度等于4,因此,控制器304需对逻辑地址LBA#0~#7中的逻辑地址LBA#4~#7进行UNC标示。如图所示,控制器304将目标逻辑地址LBA#0~#3的数据D以及循环冗余校验码CRC程式化至数据单元400的前四个区段。至于要做UNC标示的逻辑位置LBA#4~#7,控制器304操作该CRC引擎320以偏移的逻辑地址LBA#5~#8对逻辑位置LBA#4~#7的数据D进行编码,获得偏移的循环冗余校验码CRC_UNC#4~#7。控制器304将逻辑位置LBA#4~#7的数据D以及偏移的循环冗余校验码CRC_UNC#4~#7程式化至数据单元400的后四个区段,完成UNC标示指令的执行。
图5为流程图,根据本发明一种实施方式图解UNC标示指令(Write UNC)的处理流程。
步骤S502,控制器304接收来自主机308的UNC标示指令(Write UNC),其中,UNC标示指令包括目标逻辑地址。
步骤S504,控制器304产生偏移逻辑地址LBA_UNC,其中,偏移逻辑地址LBA_UNC可依据目标逻辑地址而产生,或是随机产生。
步骤S506,控制器304操作CRC引擎320以偏移逻辑地址LBA_UNC对数据样版P进行编码,获得偏移循环冗余校验码CRC_UNC,其中,数据样版P为"0"或是目标逻辑地址LBA所对应的物理地址中所储存的原始数据。
步骤S508,控制器304将数据样版P以及偏移循环冗余校验码CRC_UNC程式化至主动区块A0的闲置数据单元330。
图6为流程图,根据本发明一种实施方式图解控制器304如何处理主机308的读取要求。
步骤S602,控制器304接收来自主机308的读取指令,其中,读取指令包括目标逻辑地址LBA。
步骤S604,控制器304根据目标逻辑地址LBA以及L2P映射表取得目标逻辑地址LBA所对应的物理地址,其中,物理地址为PBA。
步骤S606,控制器304自物理地址取得数据D_read以及循环冗余校验码CRC_read。
步骤S608,控制器304操作CRC引擎320以该循环冗余校验码CRC_read对数据D_read进行编码以取得循环冗余校验码CRC_ref。
步骤S610,控制器304比对该循环冗余校验码CRC_read以及循环冗余校验码CRC_ref,如果比对结果为不相同则执行步骤S612,控制器304输出预设讯息至主机308。另外,控制器304不回传数据D_read至主机308。如果比对结果为相同则执行步骤S614,控制器304回传数据D_read给主机308,完成读取指令的执行。
以上存储器控制器304对快闪存储器302的操作设计也可以由其他结构实现。凡是根据前述概念操作快闪存储器、使映射数据省略UNC标示专属位元的技术,都属于本发明欲保护范围。本发明更可以前述概念实现非挥发式存储器的控制方法。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何熟悉本技术领域者,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当由权利要求书界定为准。
Claims (20)
1.一种数据储存装置,包括:
一非挥发式存储器;以及
一控制器,控制该非挥发式存储器,且包括一循环冗余校验引擎,
其中:
根据一主机下达的一无法校正标示指令,该控制器操作该循环冗余校验引擎以一偏移编码种子对一数据样板编码,产生一偏移循环冗余校验码;且
该控制器将该偏移循环冗余校验码随该数据样板程式化至该非挥发式存储器。
2.如权利要求1所述的数据储存装置,其特征在于:
该无法校正标示指令指示一逻辑地址;
该控制器偏移该逻辑地址,产生一偏移逻辑地址;且
该控制器操作该循环冗余校验引擎以该偏移逻辑地址作为该偏移编码种子。
3.如权利要求2所述的数据储存装置,其特征在于:
该数据样板为零。
4.如权利要求2所述的数据储存装置,其特征在于:
根据该主机对该逻辑地址所发出的一读取指令,该控制器自该非挥发式存储器取得该数据样板以及该偏移循环冗余校验码;
该控制器操作该循环冗余校验引擎以该逻辑地址作为一编码种子;
该控制器操作该循环冗余校验引擎以该编码种子对该数据样板产生一循环冗余校验码;且
该控制器操作该循环冗余校验引擎比对得该循环冗余校验码不同于该偏移循环冗余校验码,并不以该数据样板回应该主机。
5.如权利要求4所述的数据储存装置,其特征在于:
该控制器是根据该逻辑地址的一映射资讯自该非挥发式存储器取得该数据样板以及该偏移循环冗余校验码;且
该映射资讯采用的一映射资讯格式不包括任何无法校正标示位元。
6.如权利要求5所述的数据储存装置,其特征在于:
该无法校正标示指令的标示单元小于该映射资讯格式管理的数据单元。
7.如权利要求1所述的数据储存装置,其特征在于:
关于根据一逻辑地址取自该非挥发式存储器的一第一区域、且错误检查与纠正失败的一错误数据,该控制器将该错误数据以及一循环冗余校验码程式化至该非挥发式存储器的一第二区域;且
该循环冗余校验码是随该错误数据由该控制器自该非挥发式存储器的该第一区域读出。
8.如权利要求7所述的数据储存装置,其特征在于:
根据该主机对该逻辑地址要求的一读取指令,该控制器自该非挥发式存储器的该第二区域取得该错误数据以及该循环冗余校验码;
该控制器操作该循环冗余校验引擎以该逻辑地址作为一编码种子;
该控制器操作该循环冗余校验引擎以该编码种子对该错误数据产生一错误循环冗余校验码;且
该控制器操作该循环冗余校验引擎比对得该错误循环冗余校验码不同于该循环冗余校验码,并不以该错误数据回应该主机。
9.如权利要求7所述的数据储存装置,其特征在于:
上述错误检查与纠正源于该主机对该非挥发式存储器的一读取指令。
10.如权利要求7所述的数据储存装置,其特征在于:
上述错误检查与纠正源于该控制器对该非挥发式存储器进行的一垃圾回收。
11.一种非挥发式存储器控制方法,包括:
提供一循环冗余校验引擎;
根据一主机下达的一无法校正标示指令,操作该循环冗余校验引擎以一偏移编码种子对一数据样板编码,产生一偏移循环冗余校验码;且
将该偏移循环冗余校验码随该数据样板程式化至一非挥发式存储器。
12.如权利要求11所述的非挥发式存储器控制方法,其特征在于,还包括:
偏移该无法校正标示指令所指示的一逻辑地址,以产生一偏移逻辑地址;且
操作该循环冗余校验引擎以该偏移逻辑地址作为该偏移编码种子。
13.如权利要求12所述的非挥发式存储器控制方法,其特征在于:
该数据样板为零。
14.如权利要求12所述的非挥发式存储器控制方法,其特征在于,还包括:
根据该主机对该逻辑地址所发出的一读取指令,自该非挥发式存储器取得该数据样板以及该偏移循环冗余校验码;
操作该循环冗余校验引擎以该逻辑地址作为一编码种子;
操作该循环冗余校验引擎以该编码种子对该数据样板产生一循环冗余校验码;且
操作该循环冗余校验引擎比对得该循环冗余校验码不同于该偏移循环冗余校验码,并不以该数据样板回应该主机。
15.如权利要求14所述的非挥发式存储器控制方法,其特征在于是根据该逻辑地址的一映射资讯自该非挥发式存储器取得该数据样板以及该偏移循环冗余校验码,且该映射资讯采用的一映射资讯格式不包括任何无法校正标示位元。
16.如权利要求15所述的非挥发式存储器控制方法,其特征在于:
该无法校正标示指令的标示单元小于该映射资讯格式管理的数据单元。
17.如权利要求11所述的非挥发式存储器控制方法,其特征在于,还包括:
关于根据一逻辑地址取自该非挥发式存储器的一第一区域、且错误检查与纠正失败的一错误数据,将该错误数据以及一循环冗余校验码程式化至该非挥发式存储器的一第二区域,
其中,该循环冗余校验码是随该错误数据自该非挥发式存储器的该第一区域读出。
18.如权利要求17所述的非挥发式存储器控制方法,其特征在于,还包括:
根据该主机对该逻辑地址要求的一读取指令,自该非挥发式存储器的该第二区域取得该错误数据以及该循环冗余校验码;
操作该循环冗余校验引擎以该逻辑地址产生作为一编码种子;
操作该循环冗余校验引擎以该编码种子对该错误数据产生一错误循环冗余校验码;且
操作该循环冗余校验引擎比对得该错误循环冗余校验码不同于该循环冗余校验码,并不以该错误数据回应该主机。
19.如权利要求17所述的非挥发式存储器控制方法,其特征在于:
上述错误检查与纠正源于该主机对该非挥发式存储器的一读取指令。
20.如权利要求17所述的非挥发式存储器控制方法,其特征在于:
上述错误检查与纠正源于对该非挥发式存储器进行的一垃圾回收。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962862196P | 2019-06-17 | 2019-06-17 | |
US62/862,196 | 2019-06-17 | ||
TW108136998 | 2019-10-15 | ||
TW108136998A TWI723581B (zh) | 2019-06-17 | 2019-10-15 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099985A true CN112099985A (zh) | 2020-12-18 |
CN112099985B CN112099985B (zh) | 2023-09-12 |
Family
ID=73746375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911235103.5A Active CN112099985B (zh) | 2019-06-17 | 2019-12-05 | 数据储存装置以及非挥发式存储器控制方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11314586B2 (zh) |
CN (1) | CN112099985B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100087B (zh) | 2019-06-17 | 2024-04-02 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN112099985B (zh) | 2019-06-17 | 2023-09-12 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN112130749B (zh) | 2019-06-25 | 2023-12-22 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN112130750B (zh) * | 2019-06-25 | 2023-11-07 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
US11409608B2 (en) * | 2020-12-29 | 2022-08-09 | Advanced Micro Devices, Inc. | Providing host-based error detection capabilities in a remote execution device |
US11543993B1 (en) * | 2021-06-17 | 2023-01-03 | Western Digital Technologies, Inc. | Fast garbage collection in zoned namespaces SSDs |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908376A (zh) * | 2009-06-04 | 2010-12-08 | 威刚科技(苏州)有限公司 | 非挥发性存储装置及其控制方法 |
CN108958961A (zh) * | 2017-05-22 | 2018-12-07 | 上海宝存信息科技有限公司 | 数据储存装置以及数据错误管理方法 |
US20190095275A1 (en) * | 2017-09-27 | 2019-03-28 | Western Digital Technologies, Inc. | Error detection for training non-volatile memories |
CN109783001A (zh) * | 2017-11-13 | 2019-05-21 | 深圳大心电子科技有限公司 | 数据编码方法、数据解码方法以及存储控制器 |
CN109885506A (zh) * | 2017-12-06 | 2019-06-14 | 慧荣科技股份有限公司 | 数据储存装置、主机装置、以及数据写入方法 |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2286267A (en) | 1994-02-03 | 1995-08-09 | Ibm | Energy-saving cache control system |
US5696929A (en) | 1995-10-03 | 1997-12-09 | Intel Corporation | Flash EEPROM main memory in a computer system |
US6092231A (en) * | 1998-06-12 | 2000-07-18 | Qlogic Corporation | Circuit and method for rapid checking of error correction codes using cyclic redundancy check |
US6606682B1 (en) | 2000-04-19 | 2003-08-12 | Western Digital Technologies, Inc. | Cluster-based cache memory allocation |
US7058763B2 (en) | 2001-05-04 | 2006-06-06 | Lucent Technologies Inc. | File system for caching web proxies |
US7322002B2 (en) | 2004-05-26 | 2008-01-22 | Micron Technology, Inc. | Erasure pointer error correction |
US20070079103A1 (en) | 2005-10-05 | 2007-04-05 | Yasuyuki Mimatsu | Method for resource management in a logically partitioned storage system |
CN101288056A (zh) | 2006-03-13 | 2008-10-15 | 松下电器产业株式会社 | 闪速存储器用的存储控制器 |
JP2009075759A (ja) | 2007-09-19 | 2009-04-09 | Hitachi Ltd | ストレージ装置及びストレージ装置におけるデータの管理方法 |
US7905443B2 (en) | 2007-10-26 | 2011-03-15 | Papania James F | Adjustable vertical accumulator for slitting operation |
US8751755B2 (en) | 2007-12-27 | 2014-06-10 | Sandisk Enterprise Ip Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
US8245105B2 (en) | 2008-07-01 | 2012-08-14 | International Business Machines Corporation | Cascade interconnect memory system with enhanced reliability |
JP5347657B2 (ja) | 2009-03-31 | 2013-11-20 | 富士通株式会社 | データ記憶プログラム、方法、及び情報処理装置 |
US8219776B2 (en) | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
US8478796B2 (en) * | 2010-03-23 | 2013-07-02 | Apple Inc. | Uncorrectable error handling schemes for non-volatile memories |
US8631271B2 (en) | 2010-06-24 | 2014-01-14 | International Business Machines Corporation | Heterogeneous recovery in a redundant memory system |
US8484529B2 (en) | 2010-06-24 | 2013-07-09 | International Business Machines Corporation | Error correction and detection in a redundant memory system |
US8572325B2 (en) | 2010-12-07 | 2013-10-29 | International Business Machines Corporation | Dynamic adjustment of read/write ratio of a disk cache |
CN102203740B (zh) | 2011-05-27 | 2013-06-05 | 华为技术有限公司 | 数据处理方法、装置及*** |
US8843806B2 (en) | 2012-01-19 | 2014-09-23 | International Business Machines Corporation | Dynamic graduated memory device protection in redundant array of independent memory (RAIM) systems |
US9329948B2 (en) | 2012-09-15 | 2016-05-03 | Seagate Technology Llc | Measuring cell damage for wear leveling in a non-volatile memory |
US8904244B2 (en) | 2012-10-17 | 2014-12-02 | Lsi Corporation | Heuristic approach for faster consistency check in a redundant storage system |
US9325736B2 (en) | 2013-01-10 | 2016-04-26 | Tencent Technology (Shenzhen) Company Limited | Method and device for anti-virus scanning |
US9715519B2 (en) | 2013-03-15 | 2017-07-25 | Sandisk Technologies Llc | Managing updates to multiple sets of metadata pertaining to a memory |
US9229876B2 (en) | 2013-12-17 | 2016-01-05 | Sandisk Technologies Inc. | Method and system for dynamic compression of address tables in a memory |
US9239679B2 (en) | 2013-12-19 | 2016-01-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System for efficient caching of swap I/O and/or similar I/O pattern(s) |
US9436615B2 (en) | 2014-10-03 | 2016-09-06 | Sandisk Technologies Llc | Optimistic data read |
US9626286B2 (en) | 2014-10-03 | 2017-04-18 | Sandisk Technologies Llc | Hardware and firmware paths for performing memory read processes |
US9558125B2 (en) | 2014-10-27 | 2017-01-31 | Sandisk Technologies Llc | Processing of un-map commands to enhance performance and endurance of a storage device |
US9870836B2 (en) | 2015-03-10 | 2018-01-16 | Toshiba Memory Corporation | Memory system and method of controlling nonvolatile memory |
US9886388B2 (en) | 2016-04-22 | 2018-02-06 | Citrix Systems, Inc. | Dynamic block-level indexing for cache with overflow |
US9934151B2 (en) | 2016-06-28 | 2018-04-03 | Dell Products, Lp | System and method for dynamic optimization for burst and sustained performance in solid state drives |
US10558519B2 (en) | 2017-01-17 | 2020-02-11 | International Business Machines Corporation | Power-reduced redundant array of independent memory (RAIM) system |
TWI613652B (zh) | 2017-03-27 | 2018-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
US10380018B2 (en) | 2017-04-04 | 2019-08-13 | Micron Technology, Inc. | Garbage collection |
US10642743B2 (en) | 2017-06-28 | 2020-05-05 | Arm Limited | Apparatus and method of handling caching of persistent data |
KR102430791B1 (ko) | 2017-07-19 | 2022-08-10 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
KR102378384B1 (ko) | 2017-09-11 | 2022-03-24 | 삼성전자주식회사 | 불휘발성 메모리 장치의 동작 방법 및 메모리 컨트롤러의 동작 방법 |
US11442813B2 (en) | 2017-10-11 | 2022-09-13 | Hewlett-Packard Development Company, L.P. | Memory devices including execution trace buffers |
TWI646543B (zh) | 2017-11-03 | 2019-01-01 | 大陸商深圳大心電子科技有限公司 | 資料編碼方法、資料解碼方法以及儲存控制器 |
KR102410021B1 (ko) * | 2017-11-20 | 2022-06-21 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 메모리 모듈을 갖는 메모리 시스템 및 그 메모리 시스템에서의 데이터 처리 방법 |
US10789130B1 (en) | 2018-03-09 | 2020-09-29 | Toshiba Memory Corporation | Capacitor energy management for unexpected power loss in datacenter SSD devices |
CN110489052B (zh) | 2018-05-14 | 2022-11-25 | 慧荣科技股份有限公司 | 数据储存装置 |
CN112099985B (zh) | 2019-06-17 | 2023-09-12 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN112130750B (zh) | 2019-06-25 | 2023-11-07 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
US10922235B2 (en) | 2019-06-26 | 2021-02-16 | Western Digital Technologies, Inc. | Method and system for address table eviction management |
-
2019
- 2019-12-05 CN CN201911235103.5A patent/CN112099985B/zh active Active
-
2020
- 2020-01-28 US US16/774,300 patent/US11314586B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908376A (zh) * | 2009-06-04 | 2010-12-08 | 威刚科技(苏州)有限公司 | 非挥发性存储装置及其控制方法 |
CN108958961A (zh) * | 2017-05-22 | 2018-12-07 | 上海宝存信息科技有限公司 | 数据储存装置以及数据错误管理方法 |
US20190095275A1 (en) * | 2017-09-27 | 2019-03-28 | Western Digital Technologies, Inc. | Error detection for training non-volatile memories |
CN109783001A (zh) * | 2017-11-13 | 2019-05-21 | 深圳大心电子科技有限公司 | 数据编码方法、数据解码方法以及存储控制器 |
CN109885506A (zh) * | 2017-12-06 | 2019-06-14 | 慧荣科技股份有限公司 | 数据储存装置、主机装置、以及数据写入方法 |
Also Published As
Publication number | Publication date |
---|---|
US11314586B2 (en) | 2022-04-26 |
CN112099985B (zh) | 2023-09-12 |
US20200394099A1 (en) | 2020-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10657047B2 (en) | Data storage device and method of performing partial garbage collection | |
US11232041B2 (en) | Memory addressing | |
CN112099985B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US9792067B2 (en) | Trim command processing in a solid state drive | |
US8296498B2 (en) | Method and system for virtual fast access non-volatile RAM | |
CN109885506B (zh) | 数据储存装置、主机装置、以及数据写入方法 | |
CN114341824B (zh) | 用于粗映射存储器子***的取消映射 | |
US20190188130A1 (en) | Data Storage Device and Non-Volatile Memory Control Method | |
TWI718709B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
US11263147B2 (en) | Memory system including logical-to-physical address translation table in a first cache and a compressed logical-to-physical address translation table in a second cache | |
CN113590502B (zh) | 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收*** | |
CN113590503B (zh) | 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收*** | |
CN112130750B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
JP2012058770A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
CN113885808A (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
US11366751B2 (en) | Storage device and storage control method | |
US20210055878A1 (en) | Data compaction within the same plane of a memory component | |
US11392489B2 (en) | Data storage device and non-volatile memory control method | |
KR101369408B1 (ko) | 스토리지 시스템 및 이의 데이터 전송 방법 | |
TW201935232A (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
TWI723581B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
CN118377647A (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 |