CN112612639A - 操作存储器***的方法、操作主机的方法和计算*** - Google Patents
操作存储器***的方法、操作主机的方法和计算*** Download PDFInfo
- Publication number
- CN112612639A CN112612639A CN202010825267.XA CN202010825267A CN112612639A CN 112612639 A CN112612639 A CN 112612639A CN 202010825267 A CN202010825267 A CN 202010825267A CN 112612639 A CN112612639 A CN 112612639A
- Authority
- CN
- China
- Prior art keywords
- write
- host
- error
- information
- memory system
- 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.)
- Pending
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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- 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/1012—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 codes or arrangements adapted for a specific type of error
-
- 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
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/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
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- 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
- G11C2029/0409—Online test
-
- 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
- G11C2029/0411—Online error correction
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
公开了操作存储器***的方法、操作主机的方法和计算***。所述存储器***包括存储器装置,所述操作存储器***的方法包括:响应于主机的写入请求,将从主机接收的写入数据和物理地址存储在缓冲器中;基于写入数据和物理地址对存储器装置执行写入操作;基于发生与写入数据对应的写入错误,异步地向主机提供错误发生信息;以及向主机提供具有写入错误的写入数据和用于从写入错误中恢复的信息。
Description
本申请基于并要求于2019年10月4日在韩国知识产权局提交的第10-2019-0123347号韩国专利申请的优先权,该韩国专利申请的公开内容通过引用全部包含于此。
技术领域
本公开涉及一种存储器***、主机以及存储器***和主机的操作方法,更具体地,涉及一种恢复具有写入错误的数据的存储器***和主机以及存储器***和主机的操作方法。
背景技术
存储器***可以包括包含闪存转换层(FTL)的普通固态驱动器(SSD)或者不包含FTL的开放通道SSD。开放通道SSD可以不支持将逻辑地址映射到存储装置的物理地址的地址映射功能,从而可以允许主机处理其中发生的写入错误。
发明内容
提供了一种存储器***、主机以及存储器***和主机的操作方法,其中,存储器***产生用于恢复具有写入错误的数据的信息,并且主机基于所产生的信息执行恢复,从而改善可靠性和效率。
根据实施例,一种操作包括存储器装置的存储器***的方法包括:响应于主机的写入请求,将从主机接收的写入数据和物理地址存储在缓冲器中;基于写入数据和物理地址对存储器装置执行写入操作;基于发生与写入数据对应的写入错误,异步地向主机提供错误发生信息;以及向主机提供具有写入错误的写入数据和用于从写入错误中恢复的信息。
根据实施例,一种操作被构造为控制存储器***的主机的方法包括:基于写入数据和物理地址,向存储器***发送第一写入请求;从存储器***异步地获取关于在存储器***中发生的与写入数据对应的写入错误的错误发生信息;从存储器***获取具有写入错误的写入数据和用于从写入错误中恢复的信息;基于具有写入错误的写入数据和用于从写入错误中恢复的信息,恢复具有写入错误的写入数据;以及基于所恢复的写入数据,向存储器***发送第二写入请求。
根据实施例,一种计算***包括:存储器***,包括存储器装置;以及主机,被构造为基于写入数据和物理地址向存储器***发送写入请求,其中,存储器***响应于主机的写入请求而被构造为:将从主机接收的写入数据和物理地址存储在存储器***的缓冲器中;基于写入数据和物理地址对存储器装置执行写入操作;基于发生与写入数据对应的写入错误,异步地向主机提供错误发生信息;以及向主机提供具有写入错误的写入数据和用于从写入错误中恢复的信息,并且其中,主机被构造为:基于具有写入错误的写入数据和用于从写入错误中恢复的信息来恢复具有写入错误的写入数据;以及基于所恢复的写入数据向存储器***发送第二写入请求。
附图说明
根据以下结合附图的详细描述,将更清楚地理解公开的实施例,在附图中:
图1是根据实施例的计算***的框图;
图2是示出根据实施例的图1的计算***的示例的框图;
图3是根据实施例的存储器***的框图;
图4是示出根据实施例的存储器控制器的示图;
图5是根据实施例的存储器***的操作方法的流程图;
图6是示出根据实施例的用于从写入错误中恢复的信息的示例的示图;
图7是根据实施例的主机的恢复方法的流程图;
图8是根据实施例的当发生多个写入错误时主机的恢复方法的流程图;
图9是根据另一实施例的当发生多个写入错误时主机的恢复方法的流程图;
图10是根据实施例的主机的使用元数据的恢复操作的流程图;
图11是示出根据示例性实施例的与在计算***中从写入错误中恢复相关联的主机和存储器***的各个操作的概念图;
图12是根据实施例的包括主机存储器缓冲器(HMB)的计算***的框图;
图13是根据实施例的包括控制器存储器缓冲器(CMB)的计算***的框图;
图14是根据实施例的使用主机感知性能增强器(HPB)的计算***的框图;以及
图15是根据实施例的使用HPB的计算***的恢复方法的流程图。
具体实施方式
图1是根据实施例的计算***的示例的框图。
参照图1,计算***1000可以包括存储器***100和主机200。计算***1000可以是其中安装有存储数据的存储器***100的各种类型的***。例如,计算***1000可以对应于各种类型的***,诸如,计算机、上网本、网络平板电脑、无线电话、移动电话、智能电话、电子书、导航装置、数码相机、可穿戴装置、物联网(IoT)装置、万物联网(IoE)装置、虚拟现实(VR)装置、增强现实(AR)装置等。
存储器***100可以包括存储器控制器110和存储器装置120。存储器***100可以包括一个或更多个存储介质。例如,存储器***100可以包括一个或更多个固态驱动器(SSD)。另外,存储器***100可以包括一个或更多个开放通道SSD。这里,开放通道SSD可以指不包括闪存转换层(FTL)的SSD。开放通道SSD可以不包括能够将由主机200提供的逻辑地址映射到存储器装置120的物理地址的FTL,因此可以不直接管理地址。因此,开放通道SSD可以从主机200接收物理地址而不是逻辑地址以执行写入/读取/擦除操作等。另外,即使在存储器装置120中发生错误,开放通道SSD也不会将恢复的数据随机地存储在另一地址中,并因此可以通过主机200执行恢复操作。根据实施例,开放通道SSD可以包括定义由主机200提供的逻辑地址与存储器装置120的物理地址之间的关系的映射信息。然而,开放通道SSD可以不通过使用映射信息来直接管理地址。
主机200可以向存储器***100提供对数据的访问请求。例如,主机200可以向存储器***100提供对数据的写入请求或读取请求,并且存储器***100可以基于主机200的访问请求将数据写入到存储器装置120或者从存储器装置120读取数据且向主机200提供该数据。另外,基于对主机200的对数据的擦除请求,存储器***100可以对由主机200指示的区域中的数据执行擦除操作。
当存储器***100是普通SSD时,主机200可以通常基于逻辑地址向存储器***100提供访问请求。然而,当存储器***100是开放通道SSD或者主机200包括定义逻辑地址与存储器装置120的物理地址之间的关系的映射信息时,主机200可以基于存储器***100的物理地址向存储器***100提供访问请求。例如,主机200可以通过使用映射信息来确定物理地址,并且基于所确定的物理地址向存储器***100提供访问请求。另外,存储器***100可以基于从主机200接收的物理地址来执行写入操作、读取操作或擦除操作。
主机200可以包括恢复模块210。恢复模块210可以被实现为将包括在主机200中的各种类型。例如,恢复模块210可以是用于执行与具有错误的数据的恢复相关联的各种类型的处理的硬件(HW),诸如,电路等。在实施例中,恢复模块210可以作为包括程序的软件(SW),并且主机200中的处理单元可以执行加载到操作存储器中的恢复模块210,以执行与具有错误的数据的恢复相关联的各种类型的处理。另外,恢复模块210可以是HW和SW的组合。
恢复模块210可以支持恢复具有错误的数据的功能。作为示例,当存储器***100在主机200的访问请求下在写入数据DATA的处理期间检测到错误并且将具有写入错误的写入数据DATA和用于恢复的信息Info_RCV发送到主机200时,恢复模块210可以基于具有写入错误的写入数据DATA和用于恢复的信息Info_RCV来执行具有错误的数据的恢复。
例如,主机200可以基于通过使用存储器***100的映射信息所确定的物理地址(或根据实施例的逻辑地址)和写入数据来提供写入请求。存储器***100可以响应于写入请求将从主机200接收的写入数据和物理地址(或根据实施例的逻辑地址)存储在缓冲器中。另外,存储器***100可以基于写入数据和物理地址(或根据实施例的逻辑地址)对存储器装置120执行写入操作。当在该过程中发生写入错误时,存储器***100可以通过以异步模式向主机200提供关于写入错误的错误发生信息来通知主机200发生写入错误。这里,异步模式可以指当检测到预设事件时存储器***100在没有主机200的请求的情况下执行特定操作的模式。此外,存储器***100可以向主机200提供具有写入错误的写入数据DATA和用于恢复的信息Info_RCV。另外,恢复模块210可以通过使用从存储器***100获取的具有写入错误的写入数据DATA和用于恢复的信息Info_RCV来恢复写入数据。此外,主机200可以基于通过恢复模块210恢复的写入数据生成新的写入请求,并且向存储器***100提供写入请求。
根据上述实施例,即使存储器***100是普通SSD从而可以独立地从写入错误中执行恢复,存储器***100在执行恢复操作时也可以使用具有许多操作资源的主机200。因此,当在存储器***100中执行许多其它操作时,可以实现存储器***100的性能改进。
此外,即使存储器***100是可以不直接管理地址、将恢复的数据随机存储在另一地址中并且独立地从写入错误中执行恢复的开放通道SSD,存储器***100也可以通过管理存储器***100的映射信息的主机200的恢复模块210来执行恢复操作。另外,由于存储器***100而非主机200生成用于从写入错误中恢复的信息,所以可以提高主机200的资源的利用率。在下文中,将描述作为开放通道SSD的存储器***100的更详细的操作。
图2是示出图1的计算***的实施例的示例的框图。
参照图1和图2,存储器***100可以是开放通道SSD并且可以包括缓冲器111,主机200可以包括FTL 220和主机缓冲器230。
主机200的FTL 220可以通过使用存储器***100的映射信息来管理存储器***100的写入/读取/擦除操作。此外,FTL 220可以执行将主机200所使用的逻辑地址映射到存储器装置120的物理地址的地址映射功能和垃圾收集功能。
根据实施例,恢复模块可以被包括在FTL 220中。另外,FTL 220可以在管理存储器***100的写入/读取/擦除操作的同时通过使用恢复模块从存储器***100中发生的错误中恢复。
FTL 220可以是SW,诸如,由处理单元驱动的固件、操作***或应用。在实施例中,FTL 220可以是用于执行与存储器***100的管理相关联的各种类型的处理的HW,诸如,电路等。在实施例中,FTL 220可以是HW和SW的组合。
主机200可以通过FTL 220将逻辑地址转换为存储器装置120的物理地址,并向存储器***100发送写入命令CMD、写入数据DATA和物理地址ADDR。
这里,主机200可以分配主机缓冲器230以存储发送到存储器***100的写入数据DATA和物理地址ADDR。主机缓冲器230可以在主机200对存储器***100的访问过程中临时存储写入数据DATA和物理地址ADDR。
另外,存储器控制器110可以将接收到的写入数据DATA和物理地址ADDR存储在缓冲器111中。缓冲器111可以临时存储在执行写入操作的过程中从主机200接收的写入数据DATA和物理地址ADDR。此外,当完成写入数据DATA和物理地址ADDR在缓冲器111中的存储时,存储器控制器110可以向主机200发送响应信号RSP。另外,当主机200从存储器***100接收到响应信号RSP时,可以从主机缓冲器230中释放与响应信号RSP对应的写入数据DATA和物理地址ADDR。
在基于存储在缓冲器111中的写入数据DATA和物理地址ADDR执行写入操作之前,存储器控制器110可以生成用于恢复的信息Info_RCV,以准备随后可能发生的错误。例如,存储器控制器110可以基于接收到的写入数据DATA生成纠错码(ECC)奇偶校验,或者可以根据廉价磁盘冗余阵列(RAID)方案生成恢复单元中的多条写入数据DATA的恢复奇偶校验。用于恢复的信息Info_RCV可以不限于上述示例,因此,可以生成各种类型的信息。
此外,存储器控制器110可以将写入数据DATA和生成的奇偶校验信息写入到存储器装置120。例如,存储器控制器110可以在存储器装置120的相同区域或不同区域中写入写入数据DATA和生成的ECC奇偶校验和/或恢复奇偶校验。此外,存储器控制器110可以生成包括其中存储有生成的奇偶校验的区域的物理地址信息的目录。另外,根据实施例,存储器控制器110可以与主机200共享生成的目录。
此外,存储器控制器110可以检查是否发生写入错误。例如,存储器控制器110可以对写入数据DATA和生成的奇偶校验进行编程,并且执行编程验证以检查是否发生写入错误。在实施例中,存储器控制器110可以通过随机地生成用于读取写入数据DATA的读取命令并检查读取数据内的错误比特来检查是否发生写入错误。检查是否发生写入错误的方法不限于上述示例。
此外,当发生写入错误时,存储器控制器110可以向主机发送异步事件信息(AEI)。这里,AEI可以指在异步模式下通知在存储器***100中发生错误的信息。例如,AEI可以包括具有写入错误的写入数据DATA的物理地址。
另外,存储器控制器110可以从缓冲器111或存储器装置120中读取具有写入错误的写入数据DATA和用于恢复的信息Info_RCV。这里,用于恢复的信息Info_RCV可以包括具有写入错误的写入数据DATA的ECC奇偶校验和/或恢复奇偶校验,并且还可以包括恢复单元内的发生写入错误的正常数据。稍后将参照图6详细描述这一点的示例。此外,用于恢复的信息Info_RCV可以包括元数据。元数据可以包括用于管理存储器***100的各种信息。例如,元数据可以包括定义逻辑地址与存储器装置120的物理地址之间的关系的映射信息、指示存储器装置120的每个物理块中包括的页的信息的物理块信息、指示数据的有效性或无效性的属性信息、指示映射信息的物理地址的目录、物理块信息或者存储在存储器装置120中的奇偶校验信息等。用于恢复的信息Info_RCV不限于上述示例。
主机200可以向存储器控制器110发送用于请求与错误相关联的信息的请求信号REQ。例如,当从存储器控制器110获取AEI时,主机200可以向存储器控制器110发送用于请求与错误相关联的信息的请求信号REQ。此外,存储器控制器110可以向主机200提供预读取的写入数据DATA和用于恢复的信息Info_RCV。
在从主机200接收到请求信号REQ之后,可以执行存储器控制器110读取写入数据DATA和用于恢复的信息Info_RCV的读取操作。这里,请求信号REQ可以是仅请求与错误相关联的信息的信号。在这种情况下,当接收到请求信号REQ时,存储器控制器110可以从缓冲器111中读取写入数据DATA,并且基于目录信息检查用于恢复的信息Info_RCV的物理地址,以从存储器装置120中读取用于恢复的信息Info_RCV。在实施例中,请求信号REQ可以包括用于恢复的信息Info_RCV的物理地址。在这种情况下,存储器控制器110可以基于请求信号REQ内的物理地址从缓冲器111中读取写入数据DATA并且从存储器装置120中读取用于恢复的信息Info_RCV。
存储器控制器110可以在提供AEI时提供写入数据DATA和用于恢复的信息Info_RCV,而不管是否从主机200接收到请求信号REQ。
此外,主机200可以通过FTL 220和恢复模块执行具有写入错误的写入数据的恢复。例如,主机200可以通过使用具有写入错误的写入数据DATA和用于恢复的信息Info_RCV来恢复写入数据DATA,通过使用存储器***100的映射信息来确定新的物理地址,基于新的物理地址和恢复的写入数据DATA来生成写入请求,并且向存储器***100提供写入请求。
根据上述实施例,当接收到响应信号RSP时,主机200可以从主机缓冲器230释放写入数据DATA和物理地址ADDR,从而终止主机200与存储器***100之间的与写入操作相关联的同步。存储器***100的实际写入操作可以与主机200分开执行。另外,当在实际写入操作期间发生写入错误时,存储器***100可以以异步模式通知主机200发生写入错误,从而恢复写入错误。因此,因为在存储器***100的写入操作基本完成为止之前,主机200可以不需要向主机缓冲器230分配写入数据DATA和物理地址ADDR,所以可以提高主机缓冲器230的利用率。此外,同时,仍然可以通过主机200恢复在存储器***100中发生的写入错误。
图3是根据实施例的存储器***的框图。
参照图3,存储器***100可以包括存储器控制器110和存储器装置120,存储器控制器110可以包括缓冲器111和错误校正模块112,并且存储器装置120可以包括存储器单元阵列121、电压发生器122和控制逻辑123。
存储器控制器110可以响应于主机HOST的写入/读取请求来控制存储器装置120将数据写入存储器装置120,或者读取或擦除存储在存储器装置120中的数据。详细地,存储器控制器110可以通过向存储器装置120提供地址ADDR、命令CMD或控制信号CTRL来控制关于存储器装置120的写入、读取或擦除操作。此外,可以在存储器控制器110与存储器装置120之间发送和接收要写入到存储器装置120的数据DATA和从存储器装置120读取的数据DATA。
另外,根据实施例,存储器控制器110可以响应于主机HOST的写入请求将接收到的写入数据和物理地址存储在缓冲器111中。此外,存储器控制器110可以基于存储在缓冲器111中的写入数据和物理地址对存储器装置120执行写入操作。此外,当完成写入操作时,存储器控制器110可以删除存储在缓冲器111中的写入数据和物理地址。当写入操作失败时,存储器控制器110可以保留存储在缓冲器111中的写入数据和物理地址而不删除它们。在执行写入操作之前,存储器控制器110可以通过使用错误校正模块112来生成用于恢复的信息,以准备随后可能发生的错误。错误校正模块112可以基于从主机HOST接收的写入数据执行ECC编码。例如,错误校正模块112可以对写入数据执行异或(XOR)运算以生成ECC奇偶校验,并且向存储器装置120发送写入数据和生成的ECC奇偶校验。
此外,错误校正模块112可以检测从存储器装置120接收的数据中的错误比特,并且执行校正检测到的错误比特的ECC操作。错误校正模块112可以确定在接收到的数据中检测到的错误比特的数量是否超过错误校正模块112的错误校正能力。当检测到的错误比特的数量超过错误校正能力时,错误校正模块112可以确定发生读取错误。
在实施例中,错误校正模块112可以根据RAID方案生成恢复单元中的多条写入数据DATA的恢复奇偶校验。此外,错误校正模块112可以为所生成的恢复奇偶校验生成ECC奇偶校验。另外,错误校正模块112可以向存储器装置120发送所生成的恢复奇偶校验或恢复奇偶校验的ECC奇偶校验。稍后将参照图6详细描述这一点的示例。
错误校正模块112在上面被描述为生成ECC奇偶校验或根据RAID方案生成恢复奇偶校验。然而,错误校正模块112可以包括生成ECC奇偶校验的ECC模块和/或根据RAID方案生成恢复奇偶校验的RAID模块。
存储器装置120可以是非易失性存储器装置。存储器单元阵列121可以包括多个存储器单元,例如,多个存储器单元可以是闪存单元。然而,实施例不限于此,存储器单元阵列121中包括的多个存储器单元可以是电阻式存储器单元,诸如电阻式随机存取存储器(ReRAM)、相变RAM(PRAM)或磁性RAM(MRAM)。
存储器单元阵列121可以包括多个块。此外,多个块中的每个可以包括多个页,并且多个页中的每个可以包括多个存储器单元。在存储器单元阵列121中,可以以块为单位执行数据的擦除操作,并且可以以页为单位执行数据的写入和读取操作。例如,存储器装置120可以参照由存储器控制器110提供的地址ADDR以块为单位执行擦除操作,并且以页为单位执行写入和读取操作。
电压发生器122可以生成用于执行上述写入/读取/擦除操作的各种类型的电压。例如,可以通过使用增量步进脉冲程序(ISPP)来执行数据的写入操作,并且电压发生器122可以生成用于ISPP的多个电压并且向存储器单元阵列121提供所述多个电压。此外,电压发生器122可以生成用于数据的读取操作的读取电压,并且向存储器单元阵列121提供读取电压。另外,电压发生器122可以生成用于擦除操作的具有高电压电平的擦除电压,并且向存储器单元阵列121提供擦除电压。
控制逻辑123可以控制存储器装置120的与存储器操作相关联的整体操作。例如,控制逻辑123可以控制电压发生器122,并且电压发生器122可以在控制逻辑123的控制下改变各种类型的生成电压的电平。此外,存储器单元阵列121的存储器单元的阈值电压分布可以根据由电压发生器122生成的电压来调整。
图4是示出根据实施例的存储器控制器的示例的示图。
参照图3和图4,存储器控制器110可以包括可通过总线116彼此通信的缓冲器111、错误校正模块112、处理器113、主机接口114和存储器接口115。缓冲器111和错误校正模块112可以与上面参照图3描述的基本相同,因此,将省略其冗余描述。
缓冲器111可以在处理器113的控制下操作,并且可以是多个。缓冲器111可以是诸如动态RAM(DRAM)或静态RAM(SRAM)的易失性存储器,或者可以是诸如PRAM或闪存存储器的非易失性存储器。根据实施例,缓冲器111可以临时存储从主机HOST接收的写入数据和物理地址。缓冲器111在图4中被示出并被描述为包括在存储器控制器110中,但是缓冲器111可以是与存储器控制器110分开的元件。
此外,根据实施例的存储器***100还可以包括存储器。存储器可以是像缓冲器111那样的易失性存储器或非易失性存储器,并且可以用作操作存储器、缓冲存储器、高速缓冲存储器等。
错误校正模块112可以是HW。在实施例中,当在存储器控制器110中包括HW加速器时,HW加速器可以包括错误校正模块112作为专用于XOR运算的加速器。HW加速器可以是各种类型的加速器,诸如现场可编程门阵列(FPGA)、大规模并行处理器阵列(MPPA)、图形处理单元(GPU)、专用集成电路(ASIC)、神经处理单元(NPU)、张量处理单元(TPU)、片上多处理器***(MPSoC)等。然而,实施例不限于此,错误校正模块112可以是固件或SW并且可以被加载到缓冲器111或存储器中。
处理器113可以包括中央处理单元、微处理器等,并且可以通过执行存储在缓冲器111或存储器中的指令来控制存储器控制器110的整体操作。
主机接口114可以提供主机HOST与存储器***100之间的物理连接。例如,主机接口114可以包括各种接口方法,诸如高级技术附件(ATA)、串行ATA(SATA)、外部SATA(e-SATA)、小型计算机***接口(SCSI)、串行连接SCSI(SAS)、***组件互连(PCI)、高速PCI(PCI-E)、IEEE 1394、通用串行总线(USB)、安全数字(SD)卡、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)、紧凑型闪存(CF)卡接口、高速非易失性存储器(NVMe)等。
此外,主机接口114可以在处理器113的控制下以异步模式向主机200发送各种类型的信息。例如,主机接口114可以通过在主机200的预设区域中生成中断来向主机200发送各种类型的信息,所述中断可以以诸如MSI、MSI-X、基于引脚、高级错误报告(AER)等的各种方式来实现。
根据实施例,主机接口114可以从主机200接收写入请求,并且向主机200发送与写入请求对应的响应信号。此外,主机接口114可以以异步模式向主机200发送错误发生信息。例如,主机接口114可以向主机200发送通知发生写入错误的AEI。此外,主机接口114可以从主机200接收请求关于错误的信息的请求信号,并且向主机200发送具有写入错误的写入数据和用于恢复的信息。另外,主机接口114可以从主机200接收用于从写入错误中恢复的写入请求。
存储器接口115可以提供存储器控制器110与存储器装置120之间的通道。例如,可以通过存储器接口115在存储器控制器110与存储器装置120之间发送和接收命令CMD、地址ADDR、数据DATA等。
图5是根据实施例的存储器***的操作方法的示例的流程图。
在实施例中,术语“写入数据”可以对应于“用户数据”或“元数据”或者任何其它类型的数据。此外,根据该实施例的操作方法可以在图1或图2的存储器***100中执行。以上参照图1至图4的描述也可以应用于本实施例。
在操作S11中,存储器***可以响应于主机的写入请求将从主机接收的写入数据和物理地址存储在缓冲器中。例如,当从主机接收到写入命令时,存储器***可以将接收到的写入数据和物理地址存储在缓冲器的分配给写入操作的区域中。此外,存储器***可以向主机发送响应信号。
在操作S12中,存储器***可以基于写入数据和物理地址执行写入操作。例如,存储器***可以将写入数据写入到存储器装置的与存储于缓冲器中的物理地址对应的区域。
在执行写入操作之前,存储器***可以生成用于恢复的信息。例如,存储器***可以基于接收到的写入数据通过XOR运算生成ECC奇偶校验,或者可以根据RAID方案生成恢复单元中的多条写入数据的恢复奇偶校验。用于恢复的信息不限于上述示例,并且可以生成各种类型的信息。此外,存储器***可以写入写入数据和生成的奇偶校验信息。另外,存储器***可以更新诸如映射信息、属性信息等的元数据。
在操作S13中,当发生写入错误时,存储器***可以以异步模式向主机提供错误发生信息。例如,当发生写入错误时,存储器***可以发送AEI,并且AEI可以包括具有写入错误的写入数据的物理地址。
在操作S14中,存储器***可以向主机提供具有写入错误的写入数据和用于恢复的信息。例如,存储器***可以首先从存储器装置读取用于从写入错误中恢复的信息以将该信息临时存储在缓冲器中,并且当从主机接收到请求信号时,存储器***可以向主机提供存储在缓冲器中的具有写入错误的写入数据和用于恢复的信息。
在实施例中,当从主机接收到请求信号时,存储器***可以读取具有写入错误的写入数据和用于恢复的信息,以向主机提供具有写入错误的写入数据和用于恢复的信息。这里,当从主机接收的请求信号中包括用于恢复的信息的物理地址时,存储器***可以基于所包括的物理地址来读取用于恢复的信息。在实施例中,即使没有从主机接收到物理地址,存储器***也可以参照目录信息等来检查和读取用于恢复的信息的物理地址。
这里,用于恢复的信息可以包括具有写入错误的写入数据的ECC奇偶校验和/或恢复奇偶校验,并且还可以包括恢复单元内的发生写入错误的正常数据。此外,用于恢复的信息还可以包括元数据。
另外,当通过主机提供另外的写入请求时,存储器***可以响应于所述另外的写入请求而执行写入操作。这里,由主机提供的另外的写入请求可以是用于恢复具有写入错误的数据并且将恢复后的数据再次写入到存储器***的请求。
图6是示出根据实施例的用于恢复的信息的示例的示图。
参照图1至图6,存储器***100可以从主机200接收多条写入数据和多个物理地址。此外,存储器***100可以将接收到的多条写入数据和接收到的多个物理地址写入到存储器装置120。在执行写入操作之前,存储器***100或者例如图3的错误校正模块112可以生成用于恢复的信息以准备随后可能发生的错误。生成用于恢复的信息的操作可以通过各种方法来执行。
例如,存储器***100可以对写入数据DATA执行XOR运算以生成ECC奇偶校验。参照图6,存储器***100可以对多条写入数据DATA1至DATA3中的每条执行XOR运算以生成相应的ECC奇偶校验。此外,存储器***100可以结合写入数据DATA将作为用于恢复的信息生成的ECC奇偶校验写入到存储器装置120。
另外,存储器***100可以根据RAID方案生成恢复单元中的多条写入数据DATA的恢复奇偶校验。参照图6,可以对恢复单元中的多条写入数据DATA1至DATA3执行XOR运算以生成恢复奇偶校验。当存储器***100生成ECC奇偶校验和根据RAID方案的恢复奇偶校验两者时,还可以进一步生成用于恢复奇偶校验的ECC奇偶校验。
此外,存储器***100可以将作为用于恢复的信息生成的恢复奇偶校验写入存储器装置120。这里,其中存储有恢复奇偶校验的区域可以不同于其中存储有多条写入数据的区域。另外,当在多个恢复单元中存在多条写入数据时,其中存储多个恢复单元的各个恢复奇偶校验的区域也可以彼此相同或不同,并且这可以根据所应用的RAID的级别来确定。例如,在RAID4的情况下,各个恢复单元的恢复奇偶校验可以被存储在存储器装置120中的同一块中,在RAID5的情况下,各个恢复单元的恢复奇偶校验可以被存储在存储器装置120中的不同块中。
如图6中所示,写入错误可能发生在写入数据DATA2中。因为写入数据DATA2由于写入错误而未被写入到存储器装置120,所以存储器***100可从缓冲器111读取具有写入错误的写入数据DATA2,并且从存储器装置120读取用于恢复写入数据DATA2的信息。此外,存储器***100可以向主机提供具有写入错误的写入数据DATA2和用于恢复的信息。用于恢复写入数据DATA2的信息可以包括写入数据DATA2的ECC奇偶校验。此外,当根据RAID方案执行恢复时,用于恢复的信息还可以包括写入数据DATA2的恢复奇偶校验以及写入数据DATA2所属的恢复单元中的多条写入数据(例如,DATA1至DATA3)之中的正常数据(例如,写入数据DATA1和DATA3)。另外,用于恢复写入数据DATA2的信息可以包括元数据的映射信息,并且当具有写入错误的写入数据DATA2属于用户数据区时,写入数据DATA2还可以包括指示写入数据DATA2是否有效的元数据的属性信息。
主机200可以基于从存储器***100获取的写入数据DATA2和用于恢复写入数据DATA2的信息来执行写入数据DATA2的恢复。例如,主机200可以基于具有写入错误的写入数据DATA2和ECC奇偶校验来校正具有错误的比特。此外,主机200可以基于恢复奇偶校验和恢复单元中的多条正常数据来恢复具有写入错误的数据。另外,主机200可以进一步考虑元数据来执行恢复,并且由主机200执行的执行恢复的方法不限于上述示例。
相对于图6将存储器***100示出并描述为向主机200提供具有写入错误的写入数据DATA2。然而,存储器***100也可以不向主机200提供具有写入错误的写入数据DATA2,而是代之以仅向主机提供用于恢复的信息。例如,当存储器***100根据RAID方案仅生成恢复奇偶校验时,主机200可以仅基于恢复单元中的与恢复奇偶校验和具有写入错误的写入数据DATA2对应的作为正常数据的写入数据DATA1和DATA3来恢复写入数据DATA2。
图7是根据实施例的主机的恢复方法的示例的流程图。
根据该实施例的操作方法可以在图1或图2的主机200中执行。在下文中,图7中示出的操作将被描述为通过主机执行,并且更详细地,图7中示出的操作中的至少一些操作可以对应于在主机中的恢复模块中执行的操作。
在操作S21中,主机可以基于写入数据和物理地址向存储器***发送写入请求。例如,主机可以通过使用存储器***的映射信息基于物理地址和写入数据来提供写入请求。此外,当从存储器***接收到对所提供的写入请求的响应信号时,主机可以从主机中的缓冲器释放与写入请求对应的写入数据和地址信息。因此,主机可以提高缓冲器的利用率。
在操作S22中,主机可以以异步模式从存储器***获取错误发生信息。例如,主机可以从存储器***获取AEI,并且AEI可以包括具有写入错误的写入数据的物理地址。
在操作S23中,主机可以从存储器***获取具有写入错误的写入数据和用于从写入错误中恢复的信息。例如,当获取AEI时,主机可以响应于AEI而向存储器***发送请求与错误相关联的信息的信号。此外,主机可以从存储器***获取具有写入错误的写入数据和用于恢复的信息。
在实施例中,主机可以在获取AEI时检查主机的运行状态,并在进入空闲状态Idle时发送请求信号,或者在获取预设条数的AEI时发送请求与多个错误相关联的信息的请求信号以获取该信息。
在实施例中,主机可以基于AEI中包括的具有写入错误的写入数据的物理地址和存储器***的目录信息来检查用于恢复的信息的物理地址,并且向存储器***发送具有检查的物理地址的请求信号以获取信息。由主机执行的获取具有写入错误的写入数据和用于恢复的信息的方法不限于上述示例。
在操作S24中,主机可以基于具有写入错误的写入数据和用于恢复的信息来恢复具有写入错误的写入数据。这里,用于恢复的信息可以包括具有写入错误的写入数据的ECC奇偶校验、恢复奇偶校验、恢复单元中的发生写入错误的正常数据和元数据中的至少一个。此外,元数据可以包括映射信息,并且当具有写入错误的写入数据属于用户数据区时,元数据还可以包括指示对应的写入数据是否有效的属性信息。
在操作S25中,主机可以基于恢复的写入数据向存储器***发送第二写入请求。例如,主机可以通过使用存储器***的映射信息来确定新的物理地址,基于新的物理地址和恢复的写入数据来生成第二写入请求,并且向存储器***提供第二写入请求。另外,当从存储器***接收到对第二写入请求的响应信号时,主机可以更新存储器***的映射信息。
图8是根据实施例的当发生多个写入错误时主机的恢复方法的示例的流程图。
图8是根据实施例的主机的恢复方法的示例的流程图。当主机提供多个写入请求并且存储器***执行多个写入操作时,可能发生多个写入错误。在下文中,将描述当发生多个写入错误时主机的恢复方法。在描述图8中示出的操作时,将省略与图7中的操作相同的操作的详细描述。
在操作S31中,主机可以从存储器***获取多条错误发生信息。例如,主机可以获取多条AEI。在操作S32中,主机可以根据获取的顺序将多条错误发生信息输入到先进先出存储器(FIFO)中。例如,主机可以根据获取的顺序将获取的多条AEI输入到主机中的FIFO中。在实施例中,主机可以根据获取的顺序将多条AEI中包括的物理地址输入到主机中的FIFO中。在操作S33中,主机可以从存储器***获取具有多个写入错误的多条写入数据和用于从多个写入错误中恢复的多条信息。
在操作S34中,主机可以根据FIFO中的多条错误发生信息的输入顺序分别恢复具有写入错误的多条写入数据,并且向存储器***提供新的写入请求。例如,主机可以通过使用首先输入到FIFO中的AEI或者与物理地址对应的写入数据和用于恢复的信息来执行恢复。此外,主机可以基于恢复的写入数据和新的物理地址生成新的写入请求,并且向存储器***提供新的写入请求。此外,主机可以针对以下一个次序输入到FIFO中的写入错误重复上述操作。
图9是根据实施例的当发生多个写入错误时主机的恢复方法的示例的流程图。
图9是根据实施例的主机的恢复方法的示例的流程图。在下文中,将描述当发生多个写入错误时主机的另一恢复方法。在描述图9中示出的操作时,将省略与图7和图8中的操作相同的操作的详细描述。
在操作S41中,主机可以从存储器***获取多条错误发生信息。例如,主机可以获取多条AEI。
在操作S42中,主机可以基于多条错误发生信息中包括的物理地址来确定优先级。例如,主机可以基于多条AEI中包括的物理地址来确定多个错误中的每个发生在存储器***的存储区域的哪个区域中。例如,主机可以检查所述多个错误是发生在存储器***的用户数据区还是元数据区中。此外,主机可以基于其中发生错误的区域来确定优先级。例如,主机可以确定首先从元数据区中发生的错误中恢复。由主机执行的基于物理地址确定优先级的方法不限于此。
在操作S43中,主机可以从存储器***获取分别具有多个写入错误的多条写入数据,以及分别用于从所述多个写入错误中恢复的多条信息。在操作S44中,主机可以根据确定的优先级分别恢复具有写入错误的多条写入数据,并且向存储器***提供新的写入请求。例如,主机可以通过使用与多个错误之中的元数据区中发生的错误对应的写入数据和用于恢复的信息来执行恢复。此外,主机可以基于恢复的写入数据和新的物理地址生成新的写入请求,并且向存储器***提供新的写入请求。此外,主机可以针对用户数据区中发生的错误重复上述操作。
相对于图8和图9将主机示出并描述为基于获取多条错误发生信息的顺序或多条错误发生信息中包括的物理地址来确定优先级。然而,主机还可以基于用于恢复的信息来确定优先级。
图10是示出根据实施例的主机的使用元数据的恢复操作的示例的流程图。
图10是根据实施例的主机的恢复方法的示例的流程图。在实施例中,一些具有写入错误的写入数据可以不需要恢复。在下文中,将描述由主机执行的确定是否需要恢复具有写入错误的写入数据的方法。例如,在描述图10中示出的操作时,将省略与图7中的操作相同的操作的详细描述。
在操作S51中,主机可以从存储器***获取具有写入错误的写入数据和用于从写入错误中恢复的信息。在操作S52中,主机可以检查用于恢复的信息之中的元数据。例如,主机可以在获取的各种类型的用于恢复的信息之中检查指示具有写入错误的写入数据是否有效的属性信息。
在操作S53中,主机可以基于元数据检查写入数据是否有效。当写入数据有效时,在操作S54中,主机可以恢复具有写入错误的写入数据。在操作S55中,主机可以基于所恢复的写入数据向存储器***发送写入请求。当写入数据无效时,在操作S56中,主机可以确定不继续进行具有写入错误的写入数据的恢复。
根据上述实施例,尽管发生写入错误,但是可以防止主机恢复因任何原因而无效的写入数据,从而减少主机的不必要操作。
相对于图10将主机示出并描述为获取用于从写入错误中恢复的全部信息,并且检查元数据。然而,主机可以首先从存储器***仅获取具有写入错误的写入数据的元数据,以检查写入数据是否有效。例如,主机可以首先检查具有写入错误的写入数据的元数据。如果确认了写入数据的有效性,则主机可以从存储器***获取具有写入错误的写入数据的ECC奇偶校验和/或恢复奇偶校验以执行恢复。然而,如果未确认写入数据的有效性,则主机可以不从存储器***获取进一步的信息并且可以不执行恢复操作。
图11是示出根据示例性实施例的与在计算***中从写入错误中恢复相关联的主机和存储器***的各个操作的示例的概念图。
根据该实施例的操作方法可以在图1或图2的计算***1000中执行。以上关于图1至图10的描述也可以应用于该实施例。主机200可以包括异步错误发送器240和写入错误处理器250,并且异步错误发送器240和/或写入错误处理器250可以形成主机200的恢复模块的一部分。异步错误发送器240和写入错误处理器250可以是HW,可以是SW,或者可以是HW和SW的组合。
在操作①处,存储器***100可以以异步模式向主机200的异步错误发送器240发送错误发生信息。例如,当发生写入错误时,存储器***100可以向主机200的异步错误发送器240发送错误发生信息或例如AEI。这里,错误发生信息可以包括指示产生的错误对应于写入错误的错误类型以及具有错误的数据的物理地址。
此外,异步错误发送器240可以基于错误发生信息来确定在存储器***100中发生的错误的类型。另外,在操作②处,当在存储器***100中发生的错误是写入错误时,异步错误发送器240可以向从写入错误中执行恢复的写入错误处理器250发送错误发生信息。根据实施例,当主机200包括诸如读取错误处理器的单独处理器时,异步错误发送器240可以向与错误类型对应的处理器发送错误发生信息。
另外,在操作③处,写入错误处理器250可以将从异步错误发送器240接收的错误发生信息登记在错误处理等待列表251中。当多条错误发生信息被发送时,写入错误处理器250可以根据发送的顺序将多条错误发生信息登记在错误处理等待列表251中,或者可以基于多条错误发生信息的物理地址确定优先级以将多条错误发生信息登记在错误处理等待列表251中。
此外,在操作④处,写入错误处理器250可以从错误处理等待列表251获取错误发生信息。例如,当从存储器***100接收到指示用于恢复的信息准备好的信号时,写入错误处理器250可以从错误处理等待列表251获取错误发生信息。在实施例中,写入错误处理器250可以在执行恢复的时间点(例如,在主机200进入空闲状态的时间点)从错误处理等待列表251获取错误发生信息。
在操作⑤处,写入错误处理器250可以从存储器***100获取元数据和用于其恢复的信息以执行恢复。例如,当具有写入错误的数据是元数据时,写入错误处理器250可以从存储器***100获取具有写入错误的元数据、元数据的ECC奇偶校验和/或恢复奇偶校验以恢复元数据。此外,即使当具有写入错误的数据是用户数据时,写入错误处理器250也可以获取元数据、元数据的ECC奇偶校验和/或恢复奇偶校验。另外,写入错误处理器250可以通过使用所获取的信息来恢复用户数据。
在操作⑥处,写入错误处理器250可以从存储器***100获取用户数据和用于其恢复的信息以执行恢复。例如,写入错误处理器250可以从存储器***100获取具有写入错误的用户数据、用户数据的ECC奇偶校验和/或恢复奇偶校验以恢复用户数据。这里,写入错误处理器250可以通过使用先前获取的元数据等来恢复用户数据。例如,写入错误处理器250可以检查元数据中包括的用户数据的有效性信息,并且当用户数据有效时执行恢复。在实施例中,写入错误处理器250针对元数据和用户数据的恢复操作⑤和⑥可以如以上描述中那样顺序地执行,或者可以同时执行。
此外,在操作⑦处,写入错误处理器250可以通过使用存储器***100的映射信息来确定新的物理地址,基于新的物理地址和恢复的写入数据来生成写入请求,并且向存储器***100提供写入请求。
相对于图11将主机200示出并描述为包括错误处理等待列表251。然而,当主机200能够同时处理从多个写入错误的恢复时,主机200可以在不包括错误处理等待列表251的情况下执行恢复。
图12是根据实施例的包括主机存储器缓冲器(HMB)的计算***的框图。
图12示出了根据实施例的计算***。参照图12,计算***1000'可以包括存储器***100'和主机200'。此外,存储器***100'可以包括存储器控制器110和存储器装置120,并且主机200'可以包括FTL 220和HMB 260。
HMB 260可以是存在于主机200'中的缓冲存储器,并且可以是向其分配对存储器***100'进行访问的存储器。存储器***100'可以直接访问并使用HMB 260。存储器***100'可以将与存储器***100'中发生的写入错误相关联的各种类型的信息直接存储在HMB260中。例如,当发生写入错误时,存储器***100'可以生成AEI,将AEI存储在HMB 260中,读取写入数据和用于恢复的信息,并且将该写入数据和该信息存储在HMB 260中。
此外,主机200'可以访问HMB 260以获取AEI、写入数据和用于恢复的信息。例如,主机200'可以以预设时间间隔访问HMB 260以检查是否存在AEI,并且当检查到在存储器***100'中发生写入错误时,主机200'从HMB 260获取剩余写入数据和用于恢复的信息以执行恢复操作。在实施例中,当存储器***100'将与写入错误相关联的各种类型的信息存储在HMB 260中并且然后将指示存储完成的返回信号发送到主机200'时,主机200'可以直接访问HMB 260以获取与写入错误相关联的各种类型的信息并且执行恢复操作。
图13是根据实施例的包括控制器存储器缓冲器(CMB)的计算***的框图。
图13示出了根据可修改实施例的计算***。参照图13,计算***1000”可以包括存储器***100”和主机200”。此外,存储器***100”可以包括存储器控制器110和存储器装置120,并且主机200”可以包括FTL 220。另外,存储器控制器110可以包括CMB 117。
CMB 117可以是存在于存储器控制器110中的缓冲存储器,并且是向其分配对主机200”进行访问的存储器。主机200”可以直接访问和使用CMB 117。存储器***100”可以将与存储器***100”中发生的写入错误相关联的各种类型的信息存储在CMB 117中。例如,当发生写入错误时,存储器***100”可以生成AEI以将AEI存储在CMB 117中,并且读取写入数据和用于恢复的信息以将该写入数据和该信息存储在CMB 117中。
此外,主机200”可以访问CMB 117以获取AEI、写入数据和用于恢复的信息。例如,主机200”可以以预设时间间隔访问CMB 117以检查是否存在AEI,并且当检查到在存储器***100”中发生写入错误时,主机200”从CMB117获取剩余写入数据和用于恢复的信息以执行恢复操作。在实施例中,当存储器***100”可以将与写入错误相关联的各种类型的信息存储在CMB 117中并且然后将指示存储完成的返回信号发送到主机200”时,主机200”可以直接访问CMB 117以获取与写入错误相关联的各种类型的信息并且执行恢复操作。
图14是根据实施例的使用主机感知性能增强器(HPB)的计算***的框图。
图14示出了根据可修改实施例的计算***。参照图14,计算***1000”'可以包括存储器***100”'和主机200”'。
存储器***100”'可以包括存储器控制器110和存储器装置120,并且存储器控制器110可以包括FTL 118。换言之,存储器***100”'可以通过FTL 118执行地址映射功能,从而可以对应于普通SSD。
图14的主机200”'应用HPB方案,并且与图2的主机200不同,不包括FTL。因此,由于主机200”'可以不执行地址映射功能,所以主机200”'可以不直接确定物理地址以存储写入数据,并且可以基于逻辑地址来发送写入请求。换言之,主机200”'可以包括存储器***100”'的映射信息270。因此,主机200”'可以基于映射信息来检查与逻辑地址对应的物理地址,并且基于所检查的物理地址来发送读取请求。
在下文中,将详细描述使用HPB的计算***的方法。
图15是根据实施例的使用HPB的计算***的恢复方法的流程图。
根据该实施例的操作方法可以在图14的计算***1000”'中执行。在操作S105中,主机200”'可以向存储器***100”'发送写入请求。例如,主机200”'可以发送写入命令CMD、写入数据DATA和逻辑地址ADDR。在操作S110中,存储器***100”'可以将接收到的写入数据和逻辑地址存储在存储器***100”'的缓冲器中。
在操作S115中,存储器***100”'可以向主机200”'提供响应信号RSP。在操作S120中,主机200”'可以从主机存储器释放写入数据和逻辑地址。例如,主机200”'可以释放在主机存储器中存储的多条写入数据和多个逻辑地址之中与响应信号对应的写入数据和逻辑地址。
在操作S125中,存储器***100”'可以基于写入数据生成ECC奇偶校验和/或恢复奇偶校验。在操作S130中,存储器***100”'可以对生成的奇偶校验和写入数据执行写入操作。例如,存储器***100”'可以检查与逻辑地址ADDR对应的物理地址,并且在与物理地址对应的区域中执行写入操作。
在操作S135中,当发生写入错误时,存储器***100”'可以向主机200”'提供AEI。在操作S140中,主机200”'可以基于获取的错误发生信息来确定在存储器***100”'中发生的错误是否为写入错误。
在操作S145中,存储器***100”'可以读取具有写入错误的写入数据和用于恢复的信息。在操作S150中,主机200”'可以向存储器***100”'请求关于错误的信息。
在实施例中,可以改变操作S145和S150的顺序。例如,主机200”'可以向存储器***100”'提供请求信号REQ,然后存储器***100”'可以响应于请求信号REQ读取具有写入错误的写入数据和用于恢复的信息。这里,主机200”'可以通过使用存储器***100”'的目录信息来检查用于恢复的信息的物理地址,并且请求信号REQ可以包括用于恢复的信息的物理地址。此外,存储器***100”'可以基于请求信号REQ中包括的物理地址从缓冲器读取具有写入错误的写入数据并且从存储器装置120读取用于恢复的信息。
在操作S155中,存储器***100”'可以向主机200”'提供写入数据DATA和用于恢复的信息Info_RCV。在操作S160中,主机200”'可以恢复具有写入错误的写入数据。在操作S165中,主机200”'可以向存储器***100”'发送第二写入请求。例如,主机200”'可以发送写入命令CMD2、恢复的写入数据DATA2和新的物理地址ADDR2。此外,当从存储器***100”'接收到对第二写入请求的响应信号时,主机200”'可以更新存储器***100”'的映射信息。
如在发明构思的领域中传统的那样,在附图中根据功能块、单元和/或模块来描述和示出实施例。本领域技术人员将理解的是,这些块、单元和/或模块通过可以使用基于半导体的制造技术或其它制造技术而形成的电子(或光学)电路(诸如,逻辑电路、分立组件、微处理器、硬线电路、存储器元件、线路连接等)被物理实现。在块、单元和/或模块通过微处理器或类似物实现的情况下,可以使用软件(例如,微代码)对它们进行编程以执行这里讨论的各种功能,并且可以由固件和/或软件可选择地驱动它们。可选地,每个块、单元和/或模块可以通过专用硬件来实现,或者被实现为用于执行一些功能的专用硬件和用于执行其它功能的处理器(例如,一个或更多个编程的微处理器和相关的电路)的组合。此外,在不脱离发明构思的范围的情况下,实施例的每个块、单元和/或模块可以被物理地分开为两个或更多个交互的和分立的块、单元和/或模块。此外,在不脱离发明构思的范围的情况下,实施例的块、单元和/或模块可以被物理地组合成更复杂的块、单元和/或模块。
上述实施例都是示例性的,因此,发明构思不限于这些实施例并且可以以各种其它形式实现。尽管已经具体示出并描述了实施例,但是将理解的是,在不脱离权利要求的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。
Claims (20)
1.一种操作存储器***的方法,所述存储器***包括存储器装置,所述方法包括:
响应于主机的写入请求,将从主机接收的写入数据和物理地址存储在缓冲器中;
基于写入数据和物理地址对存储器装置执行写入操作;
基于发生与写入数据对应的写入错误,异步地向主机提供错误发生信息;以及
向主机提供具有写入错误的写入数据和用于从写入错误中恢复的信息。
2.根据权利要求1所述的方法,其中,所述执行写入操作的步骤包括:
基于写入数据,生成至少一个奇偶校验,所述至少一个奇偶校验包括写入数据的纠错码奇偶校验和与写入数据对应的恢复单元中的多条写入数据的恢复奇偶校验中的至少一个;以及
写入写入数据和所生成的所述至少一个奇偶校验。
3.根据权利要求2所述的方法,其中,用于从写入错误中恢复的信息包括所述至少一个奇偶校验、恢复单元中包括的正常数据以及存储器***的管理信息中的至少一个。
4.根据权利要求1所述的方法,其中,基于在数据区中发生写入错误,用于从写入错误中恢复的信息包括与具有写入错误的写入数据对应的元数据。
5.根据权利要求1所述的方法,其中,基于从主机接收到对用于从写入错误中恢复的信息的请求,向主机提供具有写入错误的写入数据和用于从写入错误中恢复的信息。
6.根据权利要求1所述的方法,其中,错误发生信息包括具有写入错误的写入数据的物理地址。
7.根据权利要求1所述的方法,其中,所述向主机提供具有写入错误的写入数据和用于从写入错误中恢复的信息的步骤包括:将具有写入错误的写入数据和用于从写入错误中恢复的信息存储在存储器***中包括的控制器存储器缓冲器和主机中包括的主机存储器缓冲器中的一者中。
8.根据权利要求7所述的方法,所述方法还包括基于所述存储向主机提供返回信号。
9.一种操作主机的方法,所述主机被构造为控制存储器***,所述方法包括:
基于写入数据和物理地址,向存储器***发送第一写入请求;
从存储器***异步地获取关于在存储器***中发生的与写入数据对应的写入错误的错误发生信息;
从存储器***获取具有写入错误的写入数据和用于从写入错误中恢复的信息;
基于具有写入错误的写入数据和用于从写入错误中恢复的信息,恢复具有写入错误的写入数据;以及
基于所恢复的写入数据,向存储器***发送第二写入请求。
10.根据权利要求9所述的方法,其中,错误发生信息包括具有写入错误的写入数据的物理地址。
11.根据权利要求10所述的方法,所述方法还包括:基于多条错误发生信息被获取,由主机基于所述多条错误发生信息中包括的物理地址来确定恢复优先级,
其中,所述获取具有写入错误的写入数据和用于从写入错误中恢复的信息的步骤包括:从存储器***获取具有多个写入错误的多条写入数据和用于从所述多个写入错误中恢复的多条信息,以及
其中,所述恢复具有写入错误的写入数据的步骤包括:根据恢复优先级,基于用于从所述多个写入错误中恢复的所述多条信息来恢复具有所述多个写入错误的所述多条写入数据。
12.根据权利要求10所述的方法,所述方法还包括:基于多条错误发生信息被获取,由主机基于所述多条错误发生信息的获取顺序来确定恢复优先级,
其中,所述获取具有写入错误的写入数据和用于从写入错误中恢复的信息的步骤包括:从存储器***获取具有多个写入错误的多条写入数据和用于从所述多个写入错误中恢复的多条信息,以及
其中,所述恢复具有写入错误的写入数据的步骤包括:根据恢复优先级,基于用于从所述多个写入错误中恢复的所述多条信息来恢复具有所述多个写入错误的所述多条写入数据。
13.根据权利要求9所述的方法,其中,用于从写入错误中恢复的信息包括具有写入错误的写入数据的纠错码奇偶校验、恢复奇偶校验、与写入错误对应的恢复单元中的正常数据以及存储器***的管理信息中的至少一个。
14.根据权利要求9所述的方法,其中,基于在数据区中发生写入错误,用于从写入错误中恢复的信息包括与具有写入错误的写入数据对应的元数据。
15.根据权利要求14所述的方法,其中,所述恢复具有写入错误的写入数据的步骤包括:
基于元数据,通过主机确定是否恢复具有写入错误的写入数据;以及
基于所述确定的结果,通过主机恢复具有写入错误的写入数据。
16.根据权利要求15所述的方法,其中,所述确定是否恢复具有写入错误的写入数据的步骤包括:通过使用元数据中包括的有效性信息来确定是否恢复具有写入错误的写入数据。
17.根据权利要求9所述的方法,其中,所述获取具有写入错误的写入数据和用于从写入错误中恢复的信息的步骤包括:对存储器***中包括的控制器存储器缓冲器进行访问,或者对主机中包括的主机存储器缓冲器进行访问。
18.根据权利要求9所述的方法,其中,所述向存储器***发送第二写入请求的步骤包括:基于存储器***的映射信息确定新的物理地址;以及基于所述新的物理地址和恢复的写入数据向存储器***发送第二写入请求。
19.一种计算***,所述计算***包括:
存储器***,包括存储器装置;以及
主机,被构造为基于写入数据和物理地址向存储器***发送写入请求,
其中,存储器***响应于主机的写入请求而被构造为:
将从主机接收的写入数据和物理地址存储在存储器***的缓冲器中,
基于写入数据和物理地址对存储器装置执行写入操作,
基于发生与写入数据对应的写入错误,异步地向主机提供错误发生信息,以及
向主机提供具有写入错误的写入数据和用于从写入错误中恢复的信息,并且
其中,主机被构造为:
基于具有写入错误的写入数据和用于从写入错误中恢复的信息来恢复具有写入错误的写入数据,以及
基于所恢复的写入数据向存储器***发送第二写入请求。
20.根据权利要求19所述的计算***,其中,存储器***基于将写入数据和物理地址存储于存储器***的缓冲器中而被构造为向主机发送响应信号,并且
其中,主机还被构造为:
向主机的缓冲器分配多条写入数据和多个物理地址,以及
基于从存储器***接收到响应信号,从主机的缓冲器释放与响应信号对应的写入数据和物理地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190123347A KR20210041158A (ko) | 2019-10-04 | 2019-10-04 | 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법 |
KR10-2019-0123347 | 2019-10-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112612639A true CN112612639A (zh) | 2021-04-06 |
Family
ID=75224844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010825267.XA Pending CN112612639A (zh) | 2019-10-04 | 2020-08-17 | 操作存储器***的方法、操作主机的方法和计算*** |
Country Status (3)
Country | Link |
---|---|
US (1) | US11288183B2 (zh) |
KR (1) | KR20210041158A (zh) |
CN (1) | CN112612639A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11347586B2 (en) * | 2018-07-25 | 2022-05-31 | ScaleFlux, Inc. | Realizing high-speed and low-latency RAID across multiple solid-state storage device with host-side FTL |
US11531473B1 (en) * | 2021-09-10 | 2022-12-20 | Western Digital Technologies, Inc. | Selective HMB backup in NVM for low power mode |
US11929133B2 (en) * | 2022-01-07 | 2024-03-12 | Micron Technology, Inc. | Methods for recovery for memory systems and memory systems employing the same |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5995426A (en) | 1997-11-04 | 1999-11-30 | Micron Technology, Inc. | Testing parameters of an electronic device |
KR100540486B1 (ko) | 2003-10-31 | 2006-01-11 | 주식회사 하이닉스반도체 | 라이트회복시간의 조절이 가능한 동기식 메모리 장치 |
KR100543930B1 (ko) | 2003-10-31 | 2006-01-20 | 주식회사 하이닉스반도체 | 카스레이턴시에 따라서 라이트회복시간의 조절이 가능한메모리 장치 |
US7944773B2 (en) | 2008-04-30 | 2011-05-17 | Micron Technology, Inc. | Synchronous command-based write recovery time auto-precharge control |
WO2013052562A1 (en) | 2011-10-05 | 2013-04-11 | Lsi Corporation | Self-journaling and hierarchical consistency for non-volatile storage |
US9304946B2 (en) | 2012-06-25 | 2016-04-05 | Empire Technology Development Llc | Hardware-base accelerator for managing copy-on-write of multi-level caches utilizing block copy-on-write differential update table |
TWI498890B (zh) | 2012-08-10 | 2015-09-01 | Etron Technology Inc | 偽靜態隨機存取記憶體之運作方法及相關記憶裝置 |
US10474365B2 (en) | 2013-01-25 | 2019-11-12 | Stroz Friedberg, LLC | System and method for file processing from a block device |
US9229854B1 (en) | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9557937B2 (en) | 2013-08-21 | 2017-01-31 | Netapp, Inc. | Systems, methods, and computer program products implementing hybrid file structures for data storage |
US10180875B2 (en) | 2016-07-08 | 2019-01-15 | Toshiba Memory Corporation | Pool-level solid state drive error correction |
US10534551B1 (en) * | 2018-06-22 | 2020-01-14 | Micron Technology, Inc. | Managing write operations during a power loss |
KR20210041159A (ko) * | 2019-10-04 | 2021-04-15 | 삼성전자주식회사 | 정정 가능한 독출 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법 |
-
2019
- 2019-10-04 KR KR1020190123347A patent/KR20210041158A/ko active Search and Examination
-
2020
- 2020-04-27 US US16/858,959 patent/US11288183B2/en active Active
- 2020-08-17 CN CN202010825267.XA patent/CN112612639A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11288183B2 (en) | 2022-03-29 |
KR20210041158A (ko) | 2021-04-15 |
US20210103517A1 (en) | 2021-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113149B2 (en) | Storage device for processing corrupted metadata and method of operating the same | |
US11157357B2 (en) | Operation methods of memory system and host, and computing system | |
EP2732373B1 (en) | Method and apparatus for flexible raid in ssd | |
CN109213440B (zh) | 存储器***、存储器控制器及其操作方法 | |
US8788876B2 (en) | Stripe-based memory operation | |
KR101623119B1 (ko) | 솔리드 스테이트 드라이브의 에러 제어 방법 | |
US20170123991A1 (en) | System and method for utilization of a data buffer in a storage device | |
US8250403B2 (en) | Solid state disk device and related data storing and reading methods | |
TWI646535B (zh) | 資料儲存裝置以及非揮發式記憶體操作方法 | |
KR20170099724A (ko) | 장치 수명을 향상시키는 데이터 저장 장치 및 이를 포함하는 raid 시스템 | |
KR20130097995A (ko) | 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템 | |
US11521701B2 (en) | Memory controller with read error handling | |
CN112612639A (zh) | 操作存储器***的方法、操作主机的方法和计算*** | |
US11520487B2 (en) | Managing write operations during a power loss | |
US20130304970A1 (en) | Systems and methods for providing high performance redundant array of independent disks in a solid-state device | |
CN106445749B (zh) | 使用独立磁盘冗余阵列的动态自动调谐的最大延迟的减小 | |
KR20160074025A (ko) | 데이터 저장 장치의 동작 방법 | |
CN113553631A (zh) | 用于在存储器***中保护数据的设备和方法 | |
KR20230147950A (ko) | 시스템 내 전원 손실 데이터 보호를 위한 장치 및 방법 | |
CN115732016A (zh) | 存储器装置、存储器控制器和纠正数据错误的方法 | |
CN116010157A (zh) | 用于编程数据的存储器装置和存储器*** | |
US11157401B2 (en) | Data storage device and operating method thereof performing a block scan operation for checking for valid page counts | |
CN114510372A (zh) | 储存装置及其操作方法 | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system | |
US12045468B2 (en) | Storage devices configured to obtain data of external devices for debugging |
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 |