CN111177040B - 共享主机存储器的存储装置及其操作方法和存储系统 - Google Patents
共享主机存储器的存储装置及其操作方法和存储系统 Download PDFInfo
- Publication number
- CN111177040B CN111177040B CN201910768035.2A CN201910768035A CN111177040B CN 111177040 B CN111177040 B CN 111177040B CN 201910768035 A CN201910768035 A CN 201910768035A CN 111177040 B CN111177040 B CN 111177040B
- Authority
- CN
- China
- Prior art keywords
- data
- host
- memory
- error correction
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 380
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012937 correction Methods 0.000 claims abstract description 134
- 230000008569 process Effects 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 18
- 238000011084 recovery Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 24
- 208000011580 syndromic disease Diseases 0.000 description 16
- 238000012546 transfer Methods 0.000 description 15
- 238000013507 mapping Methods 0.000 description 14
- 239000000725 suspension Substances 0.000 description 14
- 238000007726 management method Methods 0.000 description 13
- 230000008439 repair process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
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/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/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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
-
- 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/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了一种共享主机存储器的存储装置及其操作方法和一种存储系统,所述存储装置包括与主机交换数据的串行接口以及通过串行接口将缓冲数据存储在由主机分配的主机存储器缓冲器中的存储控制器。存储控制器对缓冲数据执行纠错编码和纠错解码。
Description
向2018年11月9日在韩国知识产权局提交的第10-2018-0137228号韩国专利申请做出对优先权的要求,该韩国专利申请的全部内容通过引用包含于此。
技术领域
这里描述的本发明构思涉及半导体存储器装置,更具体地涉及使用主机的存储器的存储装置及其操作方法。
背景技术
固态驱动器(以下称为“SSD”)是基于闪存的大容量存储装置的示例。随着SSD被用于各种目的,对SSD的需求已大大增加。例如,SSD已在服务器、客户端和数据中心中使用,以及在其他用途中使用。SSD的接口应为每个目的提供最佳的速度和可靠性。为了满足这种需求,已经使用诸如串行AT附件(SATA)接口、高速PCI(PCIe)接口和串行连接SCSI(SAS)的接口来努力提供高速度和高可靠性。具体地,正在开发基于PCIe的NVMe或基于UFS的UME(统一存储器扩展)并将它们应用于存储装置。所述接口提供装置之间的存储器共享功能。因此,对于使用共享存储器资源的方案的存储装置而言,需要数据管理方法。
通常,存储装置可以包括单独的易失性存储器,以便能够快速地访问映射表。当接通电源时,数据存储装置可以将映射表存储在易失性存储器中。上述易失性存储器可以是例如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。然而,使用易失性存储器导致存储装置的面积和成本增加。
发明内容
发明构思的实施例提供了一种存储装置及其操作方法和一种包括该存储装置的存储系统,所述存储装置在使用应用了存储器资源共享方案的接口的系统中提供缓冲数据的可靠性。
发明构思的实施例提供了一种共享主机的主机存储器的存储装置,所述存储装置包括:串行接口,与主机交换数据;以及存储控制器,通过串行接口连接到主机,将缓冲数据存储在由主机分配的主机存储器缓冲器中,并且对缓冲数据执行纠错编码和纠错解码。
发明构思的实施例还提供了一种操作存储装置的方法,其中,存储装置被分配有主机的主机存储器作为缓冲器。所述方法包括:在存储装置处从缓冲器读取缓冲数据;通过使用第一纠错码引擎来检测缓冲数据的错误;以及当检测到的错误通过第一纠错码引擎不可纠正时,由存储装置从主机请求缓冲数据。
发明构思的实施例还提供了一种存储装置,所述存储装置包括:与主机交换数据的接口、非易失性存储器装置以及连接到接口的存储控制器,存储器控制器将缓冲数据存储在主机的主机存储器的被分配为缓冲器的部分区域中,响应于缓冲数据来控制非易失性存储器装置,并且对缓冲数据执行纠错编码和纠错解码。存储控制器在接收缓冲数据期间当接口处发生错误时替换缓冲数据的包的被丢失的丢失部分,其中,丢失部分被替换为虚设数据。
发明构思的实施例还提供了一种存储器系统,所述存储器系统包括:主机,包含主机存储器并被配置为将主机存储器的部分区域分配为主机存储器缓冲器;以及存储装置,被配置为主装置以管理主机存储器缓冲器而无需主机的干预。存储装置包括存储控制器,存储控制器被配置为识别对主机存储器缓冲器的访问请求的类型。当访问请求被识别为读取操作时,存储控制器被配置为从主机存储器缓冲器读取第一数据并对第一数据执行纠错解码,当访问请求被识别为写入操作时,存储控制器被配置为对第二数据执行纠错编码并将已纠错编码的第二数据写入主机存储器缓冲器。
附图说明
鉴于下面参照附图对示例性实施例的详细描述,发明构思的上述和其他目的和特征将变得明显。
图1示出了根据发明构思的实施例的连接有存储装置的计算机系统的框图。
图2示出了图1中示出的主机的示例性配置的框图。
图3示出了图1中示出的存储控制器的示例性配置的框图。
图4示出了根据发明构思的实施例的访问主机存储器缓冲器的操作的流程图。
图5示出了图3中示出的第一纠错码引擎的示例的框图。
图6示出了根据发明构思的实施例的管理主机存储器缓冲器的方法的示意图。
图7示出了根据发明构思的实施例的从主机存储器缓冲器读取数据的处理的流程图。
图8示出了根据发明构思的实施例的由主机执行的主机存储器缓冲器的示例性修复操作的框图。
图9示出了主机存储器缓冲器与存储装置之间的数据交换过程的示图。
图10示出了根据发明构思的其他实施例的存储装置的特性的示意图。
图11示出了当发生链路断开事件时根据发明构思的实施例的存储装置的操作的流程图。
图12示出了当发生链路断开事件时根据发明构思的其他实施例的存储装置的操作的流程图。
图13示出了参照图12描述的重构从主机存储器缓冲器传送的数据的方法的示意图。
图14示出了根据发明构思的其他实施例的计算机系统的框图。
图15示出了根据发明构思的实施例的存储装置的操作的流程图。
图16示出了包括根据发明构思的实施例的非易失性存储器系统的存储器卡系统的框图。
图17示出了包括根据发明构思的实施例的非易失性存储器系统的固态驱动器(SSD)系统的框图。
具体实施方式
在下文中,将参照附图清楚且详细地描述发明构思的实施例,使得本领域普通技术人员可以实现发明构思的实施例。无论在何处,附图和说明书中使用相同的附图标号以表示相同或相似的部件。
在下文中,使用闪存装置的固态驱动器(SSD)将被用作用于描述发明构思的特征和功能的存储装置的示例。然而,本领域技术人员应根据在此公开的内容容易地理解发明构思的其他优点和性能。发明构思可以通过其他实施例来实现或应用。另外,在不脱离发明构思的权利要求、范围和精神以及任何其他目的的情况下,可以根据观点和应用对详细描述进行改变或修改。
作为发明构思的领域中的传统,可依据执行所描述的一个或多个功能的块来描述并示出实施例。这里可以被称为单元或模块等的这些块通过诸如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬连线电路等的模拟和/或数字电路来物理地实现,并可以由固件和/或软件可选地驱动。例如,电路可以被实现在一个或更多个半导体芯片中,或者被实现在诸如印刷电路板等的基底支撑件上。构成块的电路可以通过专用硬件实现,或通过处理器(例如,一个或更多个编程的微处理器和相关的电路)实现或者通过用于执行块的一些功能的专用硬件和用于执行块的其他功能的处理器的组合来实现。在不脱离发明构思的范围的情况下,实施例的每个块可以物理上分离成两个或更多个相互作用且不连续的块。同样,在不脱离发明构思的范围的情况下,实施例的块可以物理地组合成更复杂的块。
图1示出了根据发明构思的实施例的连接有存储装置的计算机系统的框图。参照图1,计算机系统1000包括主机1100和存储装置1200。计算机系统1000可以是电子装置,诸如,台式计算机、膝上型计算机、平板计算机、智能电话、可穿戴设备、工作站、一个或更多个服务器、电动车辆、家庭应用程序、医疗设备等。
例如,主机1100可以访问存储装置1200以便读取数据。存储装置1200响应于主机1100的写入请求或读取请求将数据存储在非易失性存储器装置(NVM)1260中或从非易失性存储器装置(NVM)1260读取数据。具体地,存储装置1200可以将设置在主机1100中的主机存储器缓冲器(HMB)1125用作数据缓冲器。作为主装置(Master),存储装置1200可以管理设置在主机1100中的主机存储器1120的主机存储器缓冲器1125的区域。具体地,存储装置1200可以将存储在主机存储器缓冲器1125中的数据编码为纠错码(以下称为“ECC”)。将在下文中对此进行更详细地描述。
主机1100可以将数据写入存储装置1200中,或者可以读取存储在存储装置1200中的数据。主机1100可以将命令和地址提供给存储装置1200以便用于写入数据。主机1100可以将命令和地址提供给存储装置1200,以便读取存储在存储装置1200中的数据。
主机1100包括处理器1110、主机存储器1120和接口电路1130。例如,可以将应用程序、文件系统、设备驱动等加载到主机存储器1120上。此外,可以将在主机1100中驱动的数据或各种软件加载到主机存储器1120上。具体地,主机1100可以将主机存储器1120的部分区域分配为存储装置1200的缓冲器(或为存储装置1200的缓冲器分配部分区域)。在下文中,主机存储器1120的被分配为存储装置1200的缓冲器的部分区域被称为“主机存储器缓冲器(HMB)1125”。
主机存储器缓冲器1125被分配为允许存储装置1200将主机存储器1120用作缓冲器。具体地,根据发明构思的实施例,在存储装置1200处被编码为纠错码或者具有奇偶校验数据的数据可以存储在主机存储器缓冲器1125中。当主机存储器缓冲器1125被分配为存储装置1200的缓冲器时,相对于主机存储器缓冲器1125,存储装置1200作为主装置来操作,而主机存储器1120作为从装置来操作。因此,针对确保存储在主机存储器缓冲器1125中的数据(下文中称为“缓冲数据”)的可靠性,主机1100基本上不可具有任何权限。
存储在发明构思的主机存储器缓冲器1125中的缓冲数据具有奇偶校验数据或在存储装置1200处编码的纠错码。缓冲数据被传送到存储装置1200,而无需由主机1100单独处理。然而,从主机存储器缓冲器1125提供的缓冲数据可以通过使用设置在存储装置1200中的单独的纠错码引擎来解码。因此,可以确保存储在主机存储器缓冲器1125中的数据的可靠性。
接口电路1130提供主机1100与存储装置1200之间的物理连接。也就是说,接口电路1130可以对与从主机1100生成的各种访问请求对应的命令、地址、数据等进行转换,从而使之适合于存储装置1200的接口方式。例如,接口电路1130的协议可以包括通用串行总线(USB)、小型计算机系统接口(SCSI)、高速PCI、ATA、并行ATA(PATA)、串行ATA(SATA)、串行连接SCSI(SAS)和通用闪存(UFS)中的至少任何一种。
存储装置1200可被设置为主机1100的数据存储。存储装置1200包括串行接口1220、存储控制器1240和非易失性存储器装置1260。存储装置1200可以响应于来自主机1100的命令CMD来访问非易失性存储器装置1260,或者可以执行由主机1100请求的各种操作。
串行接口1220被设置为存储装置1200的用于与主机1100进行数据交换的物理通信通道。串行接口1220可以具有允许主机存储器缓冲器1125支持存储装置1200的缓冲功能的接口协议。也就是说,串行接口1220可以支持用于相互共享主机1100的存储器资源和存储装置1200的存储器资源的接口方式。例如,串行接口1220可使得存储控制器1240能够通过使用一个存储器映射来管理主机存储器缓冲器1125和存储装置1200的内部缓冲器(未示出)。
存储控制器1240提供主机1100与存储装置1200之间的接口连接。存储控制器1240可以根据来自主机1100的请求将用户数据写入非易失性存储器装置1260中。在这种情况下,从主机1100提供的写入数据可以在被缓冲在主机存储器缓冲器1125中之后写入非易失性存储器装置1260中。另外,存储控制器1240可以响应于来自主机1100的命令将存储在非易失性存储器装置1260中的数据输出到主机1100。存储在非易失性存储器装置1260中的数据可以在由存储控制器1240存储在主机存储器缓冲器1125中之后被传送到主机1100(例如,处理器1110)。
对于ECC处理,存储控制器1240可以包括第一纠错码ECC1引擎1242和第二纠错码ECC2引擎1244。存储控制器1240可以包括用于对存储在主机存储器缓冲器1125中的缓冲数据的纠错码进行编码和解码的第一纠错码引擎1242。存储控制器1240可以包括用于对与非易失性存储器装置1260交换的数据的纠错码进行编码和解码的第二纠错码引擎1244。
非易失性存储器装置1260被设置为存储装置1200的存储介质。非易失性存储器装置1260包括诸如闪存、相变RAM(PRAM)、磁RAM(MRAM)、电阻RAM(ReRAM)、铁电RAM(FRAM)等的非易失性存储器。
根据发明构思的实施例,存储装置1200可以处理与存储在主机存储器缓冲器1125中的缓冲数据相关的纠错码。缓冲数据可以包括用于管理非易失性存储器装置1260的映射数据或元数据。在缓冲数据处发生的错误被发送而不进行纠正的情况下,对于存储装置1200的整体控制或管理会出现问题。因此,重要的是确保被置于主机1100内但被分配为存储装置1200的缓冲器(或为存储装置1200的缓冲器分配)的主机存储器缓冲器1125的可靠性。发明构思的存储装置1200可以通过使用完全负责缓冲数据的错误管理的第一纠错码引擎1242,来解决以上问题。
图2示出了图1中示出的主机1100的示例性配置的框图。参照图2,主机1100包括处理器1110、主机存储器1120和接口电路1130。
处理器1110执行加载到主机存储器1120上的各种软件(例如,应用程序、操作系统和设备驱动)。例如,处理器1110可以执行操作系统(OS)和应用程序。例如,处理器1110可以用同构多核处理器或异构多核处理器来实现。
主机存储器1120是设置在主机1100中的存储器。例如,主机存储器1120可以用诸如以DRAM或SRAM为例的易失性存储器来实现,或者可以用非易失性存储器来实现。然而,应理解的是,主机存储器1120可以根据目的被不同地实现。主机存储器1120可以存储或输出由主机1100请求的数据。另外,被分配为存储装置1200的缓冲器的主机存储器缓冲器1125被包括在主机存储器1120中。可以将主机存储器缓冲器1125分配给主机存储器1120的特定存储器区域,或者可以根据存储装置1200的信息在主机存储器1120上以最佳大小分配主机存储器缓冲器1125。
主机存储器缓冲器1125是主机存储器1120的部分区域,该部分区域被分配为用作存储装置1200的缓冲器。因此,存储装置1200可以使用主机存储器缓冲器1125而无需单独的内部缓冲器。也就是说,可以不在存储装置1200中设置单独的内部缓冲器。由于各种问题(诸如,成本、装置尺寸和设计上的限制),会难以在存储装置1200中设置具有足够容量的内部缓冲器。相反,在共享主机存储器缓冲器1125的资源的情况下,存储装置1200可以确保足够的缓冲容量。
存储在主机存储器缓冲器1125中的缓冲数据在被编码为纠错码之后被存储。因此,缓冲数据可以包括根据ECC编码的码字(codeword)或奇偶校验数据。存储装置1200可以对缓冲数据执行ECC编码并且可以将ECC编码的数据存储在主机存储器缓冲器1125中。例如,在执行ECC编码之后,存储装置1200可以将数据存储在主机存储器缓冲器1125的数据区域中并且可以将奇偶校验数据存储在ECC区域(其可以被描述为奇偶校验区域)中。然而,在纠错码未被划分为数据和奇偶校验数据的情况下,纠错码可以存储在主机存储器缓冲器1125中而无需划分数据和奇偶校验数据。
接口电路1130提供主机1100与存储装置1200之间的物理连接。也就是说,接口电路1130可以对与从主机1100生成的各种访问请求对应的命令、地址、数据等进行转换,从而使之适合于存储装置1200的接口。例如,接口电路1130的协议可以包括通用串行总线(USB)、小型计算机系统接口(SCSI)、高速PCI、ATA、并行ATA(PATA)、串行ATA(SATA)、串行连接SCSI(SAS)、通用闪存(UFS)等中的至少任何一种。
如前所述,主机1100可以将主机存储器1120的部分区域分配为存储装置1200的缓冲器。然而,主机1100不可具有管理与主机存储器1120的分配给主机存储器缓冲器1125的部分区域有关的数据的权限。主机存储器1120的分配给主机存储器缓冲器1125的部分区域由存储装置1200的存储控制器1240来管理。存储控制器1240可以包括用于确保存储在主机存储器缓冲器1125中的缓冲数据的可靠性的第一纠错码引擎1242。
图3示出了图1中示出的存储控制器1240的示例性配置的框图。参照图3,存储控制器1240包括中央处理器(CPU)1241、HMB控制器1243、第二纠错码引擎1244和闪存接口(I/F)1245。具体地,HMB控制器1243可以包括用于存储在主机存储器缓冲器1125中的数据的第一纠错码引擎1242。
CPU 1241可以执行存储装置1200的各种存储器管理操作。例如,CPU1241可以响应于来自主机1100的命令来控制HMB控制器1243和闪存接口1245,以便在非易失性存储器装置1260中写入数据。HMB控制器1243可以对缓冲数据执行ECC编码,以通过直接存储器存取(DMA)将其传送到主机1100。HMB控制器1243可以将ECC编码的缓冲数据写入主机存储器缓冲器1125中。在需要缓冲数据的情况下,CPU 1241请求HMB控制器1243从主机存储器缓冲器1125读取缓冲数据。在这种情况下,HMB控制器1243可以从主机存储器缓冲器1125读取缓冲数据。HMB控制器1243可以对读取的缓冲数据执行ECC解码。包括在缓冲数据中的错误可以通过ECC解码来检测或纠正。
CPU 1241可以通过使用ECC解码的缓冲数据来管理非易失性存储器装置1260。可选地,在缓冲数据是将被存储在非易失性存储器装置1260中的数据的情况下,CPU 1241可以控制闪存接口1245,使得缓冲数据被写入非易失性存储器装置1260中。闪存接口1245在CPU 1241的控制下将缓冲数据传送到非易失性存储器装置1260。
上面描述了在将缓冲数据写入非易失性存储器装置1260中的情况下CPU 1241的控制操作。然而,在从主机1100接收到读取存储在非易失性存储器装置1260中的数据的请求的情况下,CPU 1241可以以类似的方式控制HMB控制器1243和闪存接口1245。然而,在从非易失性存储器装置1260读取数据时,CPU 1241可以允许闪存接口1245首先从非易失性存储器装置1260读取数据。然后,CPU 1241可以控制HMB控制器1243,使得读取数据被缓冲在主机存储器缓冲器1125中,并被输出到主机1100。在使用主机存储器缓冲器1125进行缓冲时,存储控制器1240可以总是通过使用第一纠错码引擎1242执行ECC编码和ECC解码。
另外,应该很好地理解的是,存储在主机存储器缓冲器1125中的缓冲数据不限于用于管理存储装置1200的映射数据或元数据。也就是说,由主机1100请求写入或请求读取的关于存储装置1200的数据可以临时存储在主机存储器缓冲器1125中。
图4示出了根据发明构思的实施例的访问主机存储器缓冲器的操作的流程图。参照图4,当访问主机存储器缓冲器1125时,HMB控制器1243总是执行ECC编码或ECC解码。
在操作S110中,HMB控制器1243从CPU 1241检测或接收对主机存储器缓冲器1125进行访问的请求。例如,HMB控制器1243可以识别CPU 1241写入内部寄存器中的命令,以检查对主机存储器缓冲器1125的访问请求。
在操作S120中,HMB控制器1243识别对主机存储器缓冲器1125的访问请求的类型。例如,HMB控制器1243可以确定来自CPU 1241的访问请求对应于写入操作还是读取操作。当对主机存储器缓冲器1125的访问请求对应于读取操作时(S120中的读取),过程进行到操作S130。当对主机存储器缓冲器1125的访问请求对应于写入操作时(S120中的写入),过程进行到操作S160。
在操作S130中,HMB控制器1243从主机存储器缓冲器1125的指定区域读取请求读取的数据。在这种情况下,从主机存储器缓冲器1125读取的数据可以包括通过ECC编码生成的码字或奇偶校验数据。HMB控制器1243可以通过DMA从主机存储器缓冲器1125接收数据。
在操作S140中,HMB控制器1243控制第一纠错码引擎1242以对从主机存储器缓冲器1125读取的数据执行ECC解码。当ECC解码的结果指示从读取数据检测到错误时,HMB控制器1243可以执行用于纠正检测到的错误的操作。具体地,当检测到的错误不可纠正时,HMB控制器1243可以执行诸如读取重试操作的操作。
在操作S150中,HMB控制器1243将通过ECC解码处理的读取数据返回给CPU 1241。在这种情况下,CPU 1241可以参照读取数据来执行存储装置1200的整体存储器管理操作。例如,在读取数据是映射数据的情况下,CPU1241可以通过使用映射数据来访问非易失性存储器装置1260。从主机存储器缓冲器1125读取的数据可以是将被编程在非易失性存储器装置1260中的用户数据。在这种情况下,CPU 1241可以控制闪存接口1245,使得用户数据在使用第二纠错码引擎1244(参照图3)进行ECC编码之后,被编程在非易失性存储器装置1260中。
在操作S160中,HMB控制器1243通过使用第一纠错码引擎1242对请求写入的数据执行ECC编码以将其存储在主机存储器缓冲器1125中。通过第一纠错码引擎1242,请求写入的数据可以被编码为码字或者可以包括奇偶校验位。
在操作S170中,HMB控制器1243将ECC编码的写入数据写入主机存储器缓冲器1125的指定区域中。HMB控制器1243可以通过DMA将写入数据传送到主机存储器缓冲器1125。
上面描述了根据发明构思的实施例的HMB控制器1243访问主机存储器缓冲器1125的方法。具体地,HMB控制器1243可以包括用于处理存储在主机存储器缓冲器1125中的缓冲数据的单独的第一纠错码引擎1242。由于设置了专用于在主机存储器缓冲器1125中缓冲的数据的纠错码器件,因此可以确保缓冲数据的高可靠性。
图5示出了图3中示出的第一纠错码引擎的示例的框图。参照图5,第一纠错码引擎1242可以从读取数据生成校验子(syndrome),并且可以通过使用校验子来检测错误位置。将在BCH(Bose-Chaudhuri Hocquenghem)码方案被应用于第一纠错码引擎1242的假设下给出描述,但应该很好地理解的是,能够检测错误位置的各种不同的纠错码方案适用于发明构思。第一纠错码引擎1242包括第一缓冲器121、校验子计算块122、Chien搜索块123、错误地址生成器124、纠正器125和第二缓冲器126。
第一缓冲器121存储从主机存储器缓冲器1125传送的码字单元的数据R(x)。存储在第一缓冲器121中的数据R(x)被提供给校验子计算块122。
校验子计算块122接收数据R(x)以计算校验子S(x)。例如,可以通过将奇偶校验检测多项式H(x)和读取数据R(x)一起相乘来计算校验子S(x)。可以通过使用生成多项式G(x)的根来生成奇偶校验检测多项式H(x)。通过校验子S(x)来检测读取数据R(x)中是否存在错误。校验子S(x)包括数据R(x)的总体错误信息。也就是说,校验子S(x)包括错误的位置和模式以及错误的大小。因此,校验子S(x)可被用于对读取数据R(x)执行以下操作:检测错误位的操作、纠正错误的操作以及检测错误是否可纠正的操作。
Chien搜索块123通过使用校验子S(x)来生成纠错向量E(x)。可以将由校验子计算块122计算的校验子S(x)传送到关键方程求解器(KES)块(未示出)。可以通过KES块从校验子S(x)生成错误位置多项式σ(x)和错误模式多项式ω(x)。Chien搜索块123计算错误位置多项式的根。计算与通过错误位置多项式找到的每个错误位置对应的错误的大小。在通过Chien搜索算法获得读取数据R(x)的错误位置和错误大小时,Chien搜索块123输出用于纠正错误的纠错向量E(x)。纠错向量E(x)包括码字中的错误位置信息。
错误地址生成器124通过使用纠错向量E(x)生成将对第二缓冲器126进行重写的部分数据的地址信息。错误地址生成器124可以生成第二缓冲器地址PB_ADD,第二缓冲器地址PB_ADD对应于第二缓冲器116的将利用纠正的数据进行重写的位置。
纠正器125通过使用纠错向量E(x)来纠正存在错误的数据。纠正器125可以通过对存储在第一缓冲器121中的读取数据R(x)和由Chien搜索块123计算的纠错向量E(x)执行XOR运算来纠正包括在读取数据R(x)中的错误。已纠错的数据可以存储在第二缓冲器126中。
图6示出了根据发明构思的实施例的管理主机存储器缓冲器的方法的示意图。参照图6,存储装置1200可以对从主机存储器缓冲器1125读取的数据执行纠错或修复功能。在下文中,将描述存储控制器1240将从主机存储器缓冲器1125读取的数据写入非易失性存储器装置1260中的情况。
从主机存储器缓冲器1125读取的数据通过串行接口1220传送到存储控制器1240。存储在主机存储器缓冲器1125中的全部缓冲数据都是ECC编码的数据。另外,DMA电路(即,DMA控制器)可以包括在存储装置1200的前端装置中或者包括在串行接口1220中。在图6中,DMA电路1222被示出为包括在串行接口1220中。主机存储器缓冲器1125的数据可以经由DMA传送到存储控制器1240。在图6中,从主机存储器缓冲器1125到存储控制器1240的数据的传送由①指示。
第一纠错码引擎1242对从主机存储器缓冲器1125读取的数据执行ECC解码,然后将其传送到存储控制器1240。也就是说,通过使用第一纠错码引擎1242对该读取数据进行解码,其中,第一纠错码引擎1242被设置为完全负责与主机存储器缓冲器1125交换的数据的ECC编码和ECC解码。在这种情况下,检测从主机存储器缓冲器1125读取的数据中是否存在错误。在从主机存储器缓冲器1125读取的数据中不存在错误的情况下,存储控制器1240可以通过使用该读取数据来执行存储器管理操作。另外,在非易失性存储器装置1260处更新该读取数据的情况下,存储控制器1240可以通过使用第二纠错码引擎1244对该读取数据进行编码。然而,当从主机存储器缓冲器1125读取的数据中存在可纠正的错误时,由第一纠错码引擎1242执行纠错码操作。已纠错的数据可以用于存储器管理操作,或者可以被传送到第二纠错码引擎1244,以便将读取数据编程在在非易失性存储器装置1260中。在图6中,向第二纠错码引擎1244的数据的传送由②指示。
然而,在从主机存储器缓冲器1125读取的数据中存在不可纠正的错误的情况下,存储控制器1240可以对主机存储器缓冲器1125的指定区域的数据执行读取重试操作。在即使已经执行了像特定计数那么多的读取重试操作但仍然持续检测到不可纠正的错误的情况下,存储控制器1240可以请求主机1100调整主机存储器缓冲器1125的相关区域的存储器映射。也就是说,可以将主机存储器缓冲器1125的检测到不可纠正的错误的地址重新映射到正常的存储器区域上。可以通过将主机存储器缓冲器1125的检测到不可纠正的错误的区域排除映射来阻止尝试访问主机存储器缓冲器1125的所述区域。
在从主机存储器缓冲器1125读取的数据完全被第一纠错码引擎1242处理的情况下,读取数据可以被传送到第二纠错码引擎1244。第二纠错码引擎1244对与非易失性存储器装置1260交换的全部数据执行错误检测和错误纠正。由第二纠错码引擎1244进行ECC编码的数据被编程在非易失性存储器装置1260中。在图6中,从第二纠错码引擎1244到非易失性存储器装置1260的数据的传送由③指示。
上面描述了与从主机存储器缓冲器1125读取的数据被存储在非易失性存储器装置1260中的情况相关的总体处理。该场景仅是用于描述发明构思的第一纠错码引擎1242和第二纠错码引擎1244的功能的示例。从主机存储器缓冲器1125读取的数据可以是映射数据或元数据。因此,读取数据可以不存储在非易失性存储器装置1260中。
图7示出了根据发明构思的实施例的从主机存储器缓冲器读取数据的处理的流程图。参照图7,存储控制器1240通过使用第一纠错码引擎1242对从主机存储器缓冲器1125接收的数据执行ECC解码。可以基于ECC解码结果来执行各种存储器管理操作。
在操作S210中,存储控制器1240从主机存储器缓冲器1125接收读取数据。具体地,包括在存储控制器1240中以便完全负责主机存储器缓冲器1125的HMB控制器1243可以接收读取数据。
在操作S220中,HMB控制器1243对已接收的读取数据执行ECC解码。接收到的读取数据可以包括通过ECC编码生成的奇偶校验数据。可选地,可以以通过ECC编码生成的码字的形式传送已接收的读取数据。具体地,HMB控制器1243可以通过使用第一纠错码引擎1242来执行ECC解码。
在操作S230中,HMB控制器1243根据ECC解码结果来执行操作分支。当从主机存储器缓冲器1125读取的数据未检测到错误时(S230中的否),流程进行到操作S290。当从主机存储器缓冲器1125读取的数据检测到错误时(S230中的是),流程进行到操作S240。
在操作S240中,HMB控制器1243根据检测到的错误是否可纠正来执行操作分支。例如,在读取数据的错误位的数量对应于可纠正的计数的情况下(S240中的是),流程进行到操作S280。相反,在读取数据的错误位的数量对应于不可纠正的计数的情况下(S240中的否),流程进行到操作S250。
在操作S250中,因为读取数据的错误是不可纠正的,所以HMB控制器1243对主机存储器缓冲器1125执行读取重试操作。通过读取重试操作从主机存储器缓冲器1125接收的读取数据被传送到HMB控制器1243。
在操作S260中,HMB控制器1243对通过读取重试操作从主机存储器缓冲器1125读取的数据执行ECC解码。当ECC解码结果指示存在可纠正的错误时(S260中的是),流程进行到操作S280。相反,当通过读取重试操作读取的数据中存在不可纠正的错误时(S260中的否),流程进行到操作S270。
在操作S270中,HMB控制器1243向存储控制器1240的CPU 1241通知读取失败。在这种情况下,存储控制器1240可以基于与读取失败有关的信息来执行存储器管理策略。也就是说,存储控制器1240可以向主机1100通知读取失败并且可以请求主机1100分配新的主机存储器缓冲器1125。响应于该请求,主机1100可以修复主机存储器缓冲器1125的存在不可纠正的错误的数据区域。例如,主机1100可以将主机存储器缓冲器1125的存在不可纠正的错误的部分区域设置为不可访问的存储器区域,或者可以用任何其他正常存储器区域来替换该部分区域。
在操作S280中,HMB控制器1243纠正检测到的读取数据的错误。例如,HMB控制器1243通过使用第一纠错码引擎1242来纠正从读取数据检测到的可纠正的错误。
在操作S290中,HMB控制器1243将已纠错的数据返回给CPU 1241。CPU 1241可以通过使用不存在错误的读取数据来执行存储器管理操作。可选地,CPU 1241可以执行用于将无错的读取数据再次存储在非易失性存储器装置1260中的操作或者用于将无错的读取数据传送到主机1100的存储器管理操作。
上面描述了根据发明构思的实施例对从主机存储器缓冲器1125接收的读取数据进行处理的方式。从主机存储器缓冲器1125读取的大部分数据可以是映射数据或元数据。从主机存储器缓冲器1125读取的数据中存在的错误的传送会对存储装置1200具有致命的影响。然而,可以通过发明构思的纠错过程来确保从主机存储器缓冲器1125读取的数据的可靠性。
图8示出了根据发明构思的实施例的由主机执行的主机存储器缓冲器的示例性修复操作的框图。参照图8,响应于读取失败通知,主机1100可以对主机存储器缓冲器1125的读取失败区域执行修复操作。
主机1100可以用任何其他正常区域来替换主机存储器缓冲器1125的其中检测到不可纠正的错误的次数不小于特定计数或者其中重复读取失败的读取失败区域。在图8中,这种第一修复方法由①指示。为了修复读取失败区域,主机1100可以重新配置与主机存储器缓冲器1125相关的地址映射表。也就是说,在将读取失败区域的地址映射到所替换的正常区域的地址的情况下,当请求对读取失败区域的访问时,实际上可以访问如上替换的正常区域。
可选地,主机1100可以使主机存储器缓冲器1125的其中检测到不可纠正的错误的次数不小于特定计数或者其中重复读取失败的读取失败区域从映射表排除映射。在图8中,这种第二修复方法由②指示。通过从主机存储器缓冲器1125的地址映射表使与失败区域对应的地址无效或删除,主机1100可以从根本上阻止对失败区域的访问。
图9示出了主机存储器缓冲器与存储装置之间的数据交换过程的示图。将参照图9描述存储装置1200从主机存储器缓冲器1125读取数据的过程。
在操作S310中,存储装置1200传送用于读取存储在主机存储器缓冲器1125中的数据的请求。
在操作S320中,主机存储器缓冲器1125将指定存储区域的数据传送到存储装置1200。在这种情况下,从主机存储器缓冲器1125传送到存储装置1200的读取数据RD可以包括包含数据和ECC奇偶校验的码字。具体地,应该很好地理解的是,读取数据RD以串行接口方式的包的形式进行传送。
在操作S330中,存储装置1200的HMB控制器1243对已接收的读取数据RD执行ECC解码。HMB控制器1243通过使用第一纠错码引擎1242执行ECC解码。当从主机存储器缓冲器1125提供的读取数据RD未检测到错误时(S330中的否),流程进行到操作S360。当确定从主机存储器缓冲器1125提供的读取数据RD检测到错误时(S330中的是),流程进行到操作S340。
在操作S340中,HMB控制器1243根据检测到的错误是否可纠正来执行操作分支。当读取数据的错误位的数量对应于可纠正的计数时(S340中的“是”),流程进行到操作S345。相反,当读取数据的错误位的数量对应于不可纠正的计数时(S340中的否),流程进行到操作S350。
在操作S345中,HMB控制器1243纠正读取数据RD的错误。然后,在操作S360中,存储控制器1240处理从HMB控制器1243传送的读取数据RD。例如,存储控制器1240可以通过使用从主机存储器缓冲器1125接收的读取数据RD来执行存储器管理操作,或者可以将读取数据RD传送到主机1100或非易失性存储器装置1260。
相反,在操作S350中,确定对主机存储器缓冲器1125执行读取操作的当前次数nRR是否超过了阈值TH。也就是说,nRR对应于重试计数,阈值TH对应于特定计数。当对主机存储器缓冲器1125执行读取操作的当前次数nRR小于或等于阈值TH时(S350中的否),流程进行到用于读取重试操作的过程。相反,当对主机存储器缓冲器1125执行读取操作的当前次数nRR大于阈值TH时(S350中的是),流程进行到操作S355。
在操作S355中,HMB控制器1243可以向CPU 1241(参照图3)通知主机存储器缓冲器1125的读取失败。响应于该通知,CPU 1241可以激活与读取失败情况对应的存储器管理策略。
图10示出了根据发明构思的实施例的存储装置的特性的示意图。参照图10,存储装置1200可以释放在链路断开状态下发生的系统挂起,该链路断开状态恰好在数据在从主机存储器缓冲器1125传送的处理中发生。
响应于存储控制器1240的请求从主机存储器缓冲器1125读取的数据可以被传送到存储装置1200。从主机存储器缓冲器1125传送的读取数据可以通过串行接口1220传送到存储控制器1240。读取数据可以以包的形式进行传送,以便通过串行接口1220来传送。然而,可能发生因串行接口1220中出现的错误或引入传送通道中的噪声而导致的包传送停止的事件。例如,在尝试传送一个包的处理中,可能发生因仅传送了包的一部分并且未传送包的剩余部分的事件。在这种情况下,串行接口1220的DMA电路不能完全接收包,系统的操作会停止。这种状态或条件被称为“DMA挂起”。在发生DMA挂起的情况下,通过串行接口1220的数据传送或存储装置1200的总体操作会停止。
为了解决或去除DMA挂起,发明构思的存储装置1200可以通过利用虚设数据(或垃圾数据)填充停止传送的包以重构传送包来释放系统挂起。可选地,发明构思的存储装置1200可以通过对停止传送的包执行纠错操作来恢复未完成的包。例如,可以在重构传送包之前首先执行恢复丢失包的操作。由于未完成的包不包括读取数据但具有完成的包的形式,因此可以解决或去除DMA挂起。
当从主机存储器缓冲器1125传送数据时,存储控制器1240可以识别出串行接口1220处于已经停止数据传送的状态。存储控制器1240可以响应于检测到串行接口1220的链路断开状态而利用虚设数据来填充传送包的丢失部分。可以通过将使用虚设数据完成的包传送到DMA电路来释放DMA挂起状态。存储控制器1240可以在释放DMA挂起状态之后通知主机1100缓冲数据的接收失败。当然,已接收的包可以作为无效数据来处理。
在另一实施例中,在发生DMA挂起的情况下,存储控制器1240可以通过使用传送包的已接收的部分来执行ECC解码。在ECC解码的结果指示可以恢复丢失包的情况下,可以将恢复的数据作为接收数据进行处理。因此,可以解决或去除DMA挂起状态。
图11示出了当发生链路断开事件时根据发明构思的实施例的存储装置的操作的流程图。参照图11,存储装置1200可以通过使用第一纠错码引擎(诸如,图1的第一纠错码引擎1242)来释放链路断开或DMA挂起状态。
在操作S410中,存储控制器1240传送用于读取存储在主机存储器缓冲器1125中的数据的请求。响应于读取请求,通过设置在串行接口1220中的DMA电路对主机存储器缓冲器1125的指定存储器位置执行读取操作和输出操作。在这种情况下,数据可以以包的形式传送到串行接口1220。
在操作S420中,存储控制器1240以包为单位接收由串行接口1220的DMA电路传送的读取数据。也就是说,可以通过使用已接收的多个包的链路信息来构成读取数据。
在操作S430中,存储控制器1240监视可能发生的串行接口1220的链路断开条件或DMA挂起。当确定在一个包处于正在被传送的处理中的情况下发生链路断开时(S430中的是),流程进行到操作S440。相反,在没有发生链路断开或DMA挂起的情况下(S430中的否),流程进行到操作S450。
在操作S440中,存储控制器1240通过仅使用正在被传送的包的已接收部分来执行ECC解码。在可以通过使用ECC解码来恢复包的丢失部分的情况下,存储控制器1240恢复丢失部分的数据。
在操作S450中,存储控制器1240执行用于将已接收的数据存储在非易失性存储器装置1260中的额外过程。
如上所述,当发生链路断开或DMA挂起事件时,通过发明构思的ECC解码来恢复丢失数据,可以解决链路断开或DMA挂起状态。
图12示出了当发生链路断开事件时根据发明构思的其他实施例的存储装置的操作的流程图。参照图12,存储装置1200可以通过使用虚设数据来释放链路断开或DMA挂起状态。
在操作S510中,存储控制器1240传送用于读取存储在主机存储器缓冲器1125中的数据的请求。响应于读取请求,通过设置在串行接口1220中的DMA电路对主机存储器缓冲器1125的指定存储器位置执行读取操作和输出操作。在这种情况下,数据可以以包的形式传送到串行接口1220。
在操作S520中,存储控制器1240以包为单位接收由串行接口1220的DMA电路传送的读取数据。也就是说,可以通过使用已接收的多个包的链路信息来构成读取数据。
在操作S530中,存储控制器1240监视可能发生的串行接口1220的链路断开或DMA挂起。当确定在一个包处于正在被传送的处理中的情况下发生链路断开时(S530中的是),流程进行到操作S550。相反,在没有发生链路断开或DMA挂起的情况下(S530中的否),流程进行到操作S540。
在操作S540中,存储控制器1240执行用于将已接收的数据存储在非易失性存储器装置1260中的数据处理。也就是说,存储控制器1240可以通过使用第二纠错码引擎1244对已接收的数据执行ECC编码,以便将已接收的数据编程在非易失性存储器装置1260中。当然,也可以将已接收的数据传送到主机1100。
在操作S550中,存储控制器1240执行包重构,以便用虚位填充当检测到链路断开或DMA挂起时正在传送的包的丢失部分。例如,可以通过保持包的已接收部分的位并且用逻辑“1”填充未接收的丢失部分来重构包。
在操作S560中,存储控制器1240将如上重构的一个包提供给DMA电路以释放DMA挂起。另外,可以将数据丢失信息(例如,包丢失信息)传送到CPU 1241,以便提供重构包是无效数据的通知。
上面描述了发明构思的存储装置1200的可以在发生链路断开或DMA挂起事件时释放系统挂起状态的操作。由于存储装置1200相对于主机存储器缓冲器1125作为主装置来操作,因此主机1100针对存储在主机存储器缓冲器1125中的数据的干预会是不可能的。因此,主机1100无法在解决在传送存储在主机存储器缓冲器1125中的数据时发生的链路断开或DMA挂起情况时进行干预。然而,发明构思的存储装置1200可以对在这种情况下传送的包执行恢复或重构,从而防止系统停止正常操作的情况。
图13示出了参照图12描述的重构从主机存储器缓冲器传送的数据的方法的示意图。参照图13,从主机存储器缓冲器1125传送到存储装置1200的包的一部分可能丢失。包的丢失导致DMA挂起或链路断开状态。在发明构思中,可以释放由于包丢失而导致的DMA挂起或链路断开状态。
在图13中示出了从主机存储器缓冲器1125传送到存储装置1200的包数据1300。从主机存储器缓冲器1125传送的数据可以被分成多个包,并且可以以包为单位进行传送。例如,一个包可以包括头部和有效载荷。可以通过使用头部中包括的链路信息以一个数据为单位来重构包。
在从主机存储器缓冲器1125传送包1300的处理中,当因错误或噪声而发生链路断开事件时,包1300的仅一部分会被存储装置1200接收到。存储装置1200会因链路断开事件而仅接收包1300的一部分1310。也就是说,会接收到仅被部分地接收的包(也称为包的已接收部分)1310。包1300的剩余部分对应于丢失包部分(也称为丢失包)1330。包丢失可能导致DMA挂起或系统挂起状态。因此,发明构思的存储控制器1240可以通过用虚位填充丢失包部分1330来确定(或换言之,当作或认为)接收到一个包。例如,存储控制器1240可以通过用虚位“1”填充丢失包部分1330来确定(即,当作或认为)接收到一个包。
图13中示出的包是通过使用虚位来重构的包,该包包括用虚位部分1335代替的丢失包部分1330。重构的包不是有意义的数据,但是有助于解决(即,处理)由于DMA挂起或链路断开事件而发生的系统挂起情况。
图14示出了根据发明构思的其他实施例的计算机系统的框图。参照图14,根据其他实施例的计算机系统2000包括主机2100和存储装置2200。参照图1描述主机2100的配置和功能,因此,下面可以省略与主机2100相关的额外描述以避免冗余。也就是说,图14中的处理器2110、包括主机存储器缓冲器2125的主机存储器2120和接口电路2130可以被认为分别等同于针对图1示出并描述的处理器1110、包括主机存储器缓冲器1125的主机存储器1120和接口电路1130。
可以将发明构思的存储装置2200设置为主机2100的数据存储装置。图14中的存储装置2200包括串行接口2220、存储控制器2240和非易失性存储器装置2260。存储装置2200可以响应于来自主机2100的命令CMD来访问非易失性存储器装置2260,或者可以执行由主机2100请求的各种操作。
串行接口2220被设置为存储装置2200的用于与主机2100进行数据交换的物理通信通道。存储控制器2240提供主机2100与存储装置2200之间的接口连接。存储控制器2240可以响应于来自主机2100的请求将数据写入非易失性存储器装置2260中。在这种情况下,从主机2100提供的写入数据可以在被缓冲在主机存储器缓冲器2125中之后被写入非易失性存储器装置2260中。另外,存储控制器2240可以响应于来自主机2100的命令将存储在非易失性存储器装置2260中的数据输出到主机2100。存储在非易失性存储器装置2260中的数据可以在由存储控制器2240存储在主机存储器缓冲器2125中之后被传送到主机2100(例如,处理器2110)。
存储控制器2240包括用于处理纠错码的组合纠错码引擎2245。存储控制器2240使用组合纠错码引擎2245对被缓冲在主机存储器缓冲器2125中的数据的纠错码进行编码和解码(由路径①指示)。此外,存储控制器2240可以使用组合纠错码引擎2245对与非易失性存储器装置2260交换的数据的纠错码进行编码和解码(由路径②指示)。
也就是说,组合纠错码引擎2245可以用于检测/纠正与主机存储器缓冲器2125交换的数据的错误,并且可以用于检测/纠正与非易失性存储器装置2260交换的数据的错误。
根据发明构思的实施例,存储装置2200可以使用组合纠错码引擎2245以便处理存储在主机存储器缓冲器2125中的数据和存储在非易失性存储器装置2260中的数据。因此,可以确保被分配为存储装置2200的缓冲器的主机存储器缓冲器2125的可靠性和与非易失性存储器装置2260相关联的数据的可靠性两者。
图15示出了发明构思的存储装置的操作的流程图。参照图15,存储控制器2240可以使用组合纠错码引擎2245以便将数据缓冲在在主机存储器缓冲器2125中并且访问非易失性存储器装置2260。
在操作S610中,存储控制器2240通过监视在存储器管理操作中生成的命令或请求,来检测或接收对主机存储器缓冲器2125或非易失性存储器装置2260的访问的请求。
在操作S620中,存储控制器2240识别针对访问请求的存储器。在目标存储器是主机存储器缓冲器2125(S620处的HMB)的情况下,流程进行到操作S630。相反,在目标存储器是非易失性存储器装置2260的情况下(S620处的NVM),流程进行到操作S660。
在操作S630中,识别对主机存储器缓冲器2125的访问请求的类型。例如,确定对主机存储器缓冲器2125的访问请求的类型对应于写入操作还是读取操作。当对主机存储器缓冲器2125的访问请求对应于写入操作时(S630处的写入),流程进行到操作S640。当对主机存储器缓冲器2125的访问请求对应于读取操作时(S630处的读取),流程进行到操作S650。
在操作S640中,存储控制器2240通过使用组合纠错码引擎2245来处理请求写入的数据。在这种情况下,可以通过组合纠错码引擎2245根据分配给主机存储器缓冲器2125的第一纠错码ECC1编码来处理请求写入的数据。
在操作S645中,存储控制器2240将第一纠错码ECC1编码的写入数据写入主机存储器缓冲器2125的指定区域中。存储控制器2240可以通过DMA将写入数据传送到主机存储器缓冲器2125。
在操作S650中,存储控制器2240从主机存储器缓冲器2125的指定区域读取请求读取的数据。在这种情况下,从主机存储器缓冲器2125读取的数据可以包括通过第一纠错码ECC1编码生成的奇偶校验数据。存储控制器2240可以通过DMA从主机存储器缓冲器2125接收数据。
在操作S655中,存储控制器2240控制组合纠错码引擎2245对从主机存储器缓冲器2125读取的数据执行第一纠错码ECC1解码。当第一纠错码ECC1解码的结果指示读取数据中存在错误时,组合纠错码引擎2245可以执行用于纠正检测到的错误的操作。具体地,当检测到的错误不可纠正时,存储控制器2240可以执行诸如读取重试操作的操作。
在操作S660中,识别对非易失性存储器装置2260的访问请求的类型。例如,确定对非易失性存储器装置2260的访问请求的类型对应于写入操作还是读取操作。当对非易失性存储器装置2260的访问请求对应于写入操作时(S660处的写入),流程进行到操作S670。相反,当对非易失性存储器装置2260的访问请求对应于读取操作时(S660处的读取),流程进行到操作S680。
在操作S670中,存储控制器2240通过使用组合的纠错码引擎2245处理已经请求写入非易失性存储器装置2260的数据。在这种情况下,可以通过组合纠错码引擎2245根据第二纠错码ECC2编码来处理请求写入的数据。
在操作S675中,存储控制器2240将第二纠错码ECC2编码的写入数据编程(写入)在非易失性存储器装置2260的指定区域中。
在操作S680中,存储控制器2240从非易失性存储器装置2260的指定区域读取请求读取的数据。在这种情况下,从非易失性存储器装置2260读取的数据可以包括通过第二纠错码ECC2编码生成的奇偶校验数据。
在操作S685中,存储控制器2240控制组合纠错码引擎2245对从非易失性存储器装置2260读取的数据执行第二纠错码ECC2解码。当第二纠错码ECC2解码的结果指示读取数据中存在错误时,组合纠错码引擎2245可以执行用于纠正检测到的错误的操作。
上面描述了包括根据发明构思的实施例的组合纠错码引擎2245的存储控制器2240访问主机存储器缓冲器2125和非易失性存储器装置2260的方法。
图16示出了包括根据发明构思的实施例的非易失性存储器系统的存储器卡系统的框图。参照图16,存储器卡系统3000可以包括存储器控制器3100和非易失性存储器3200。
存储器控制器3100与非易失性存储器3200连接。存储器控制器3100被配置为访问非易失性存储器3200。例如,存储器控制器3100被配置为控制非易失性存储器3200的整体操作,包括但不限于读取操作、写入操作、擦除操作和后台操作。后台操作包括诸如耗损均衡和垃圾收集等的操作。
在一个实施例中,存储器控制器3100包括SRAM 3110、CPU 3120、主机接口(I/F)3130、HMB纠错码(ECC)引擎3140以及存储器接口(I/F)3150。与参照图1和图3描述的存储控制器1240类似,存储器控制器3100通过使用主机存储器缓冲器HMB(未示出)来控制缓冲数据的操作。具体地,存储器控制器3100包括用于对存储在主机存储器缓冲器HMB中并从主机存储器缓冲器HMB读取的缓冲数据进行ECC编码和ECC解码的HMB纠错码引擎3140。
存储器控制器3100可以通过主机接口3130与外部装置通信。存储器控制器3100可以根据特定通信协议与外部装置(例如,主机)通信。例如,主机接口3130可以根据各种通信协议(诸如,通用串行总线(USB)、多媒体卡(MMC)、eMMC(嵌入式MMC)、外围组件互连(PCI)、高速PCI(PCI-E)、高级技术附件(ATA)、串行ATA、并行ATA、小型计算机系统接口(SCSI)、增强型小磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、非易失性存储器(NVMe)等)中的至少一种通信协议与外部设备通信。
非易失性存储器3200可以用诸如电可擦除和可编程ROM(EEPROM)、NAND闪存、NOR闪存、相变RAM(PRAM)、电阻RAM(ReRAM)、铁电RAM(FRAM)、自旋扭矩磁RAM(STT-MRAM)等为例的各种非易失性存储器装置来实现。
在实施例中,存储器控制器3100和非易失性存储器3200可以被集成在单个半导体装置中。存储器控制器3100和非易失性存储器3200可以被集成在单个半导体装置中以构成存储器卡。例如,存储器控制器3100和非易失性存储器3200可以被集成在单个半导体装置中以形成诸如以PC卡(个人计算机存储卡国际协会(PCMCIA)卡)、紧凑型闪存卡(CF)、智能媒体卡(SM,SMC)、记忆棒、多媒体卡(MMC、RS-MMC、MMCmicro、eMMC)、SD卡(SD、miniSD、microSD、SDHC)、通用闪存存储(UFS)等为例的存储器卡。
图17示出了包括根据发明构思的实施例的非易失性存储器系统的固态驱动器(SSD)系统的框图。参照图17,SSD系统4000包括主机4100和SSD4200。SSD 4200包括SSD控制器4210、缓冲器存储器4220和多个非易失性存储器装置4230。
主机4100将设置在主机4100中的存储器的部分区域分配给主机存储器缓冲器4150(或分配为主机存储器缓冲器4150)。访问分配给主机存储器缓冲器4150的区域的权限可以托付给SSD控制器4210。
SSD控制器4210可以响应于从主机4100接收的信号来控制多个非易失性存储器装置4230。在实施例中,SSD控制器4210可以执行参照图1和图3描述的被缓冲在主机存储器缓冲器4150中的数据的纠错操作。SSD控制器4210可以包括HMB纠错码引擎4250以便对被缓冲在主机存储器缓冲器4150中的数据执行纠错操作。
缓冲器存储器4220作为SSD 4200的缓冲器存储器进行操作。例如,缓冲器存储器4220可以临时存储从主机4100或从非易失性存储器装置4230接收的数据,或者可以临时存储元数据(例如,映射表)。缓冲器存储器4220可以包括诸如以DRAM、SDRAM、双倍数据速率(DDR)SDRAM、低功率双倍数据速率(LPDDR)SDRAM、SRAM等为例的易失性存储器,或者诸如以FRAM、ReRAM、STT-MRAM或PRAM为例的非易失性存储器。然而,根据发明构思的主机存储器缓冲器4150的分配,缓冲器存储器4220可以被设置为最小尺寸,并且在一些实施例中,SSD4200可以被配置为不包括缓冲器存储器4220。
根据发明构思的实施例,可以提高具有能够共享主机存储器缓冲器的资源的接口的存储装置的数据可靠性和系统稳定性。
尽管已经参照发明构思的示例性实施例描述了发明构思,但是对于本领域普通技术人员来说应明显的是,在不脱离如权利要求中阐述的发明构思的精神和范围的情况下,对此可以进行各种改变和修改。
Claims (24)
1.一种共享主机的主机存储器的存储装置,所述存储装置包括:
串行接口,被配置为与主机交换数据;以及
存储控制器,通过串行接口连接到主机,并且被配置为将缓冲数据存储在由主机分配的主机存储器缓冲器中并且对缓冲数据执行纠错编码和纠错解码,
其中,所述存储装置还包括被设置为存储介质的非易失性存储器装置,
其中,存储控制器包括:
第一纠错码引擎,被配置为对缓冲数据执行纠错编码和纠错解码;以及
第二纠错码引擎,被配置为对与非易失性存储器装置交换的存储数据执行纠错编码和纠错解码。
2.根据权利要求1所述的存储装置,其中,主机存储器缓冲器包括数据区域和奇偶校验区域。
3.根据权利要求1所述的存储装置,其中,存储控制器还包括主机存储器缓冲器控制器,主机存储器缓冲器控制器被配置为管理与主机存储器缓冲器交换的缓冲数据。
4.根据权利要求3所述的存储装置,其中,串行接口包括直接存储器存取电路,直接存储器存取电路被配置为与主机存储器缓冲器执行直接存储器存取。
5.根据权利要求1所述的存储装置,其中,存储控制器被配置为检测缓冲数据的错误,并且
当检测到的错误可纠正时,存储控制器还被配置为在纠正检测到的错误之后将已纠错的缓冲数据存储在非易失性存储器装置中。
6.根据权利要求5所述的存储装置,其中,当检测到的错误不可纠正时,存储控制器被配置为再次从主机存储器缓冲器读取缓冲数据。
7.根据权利要求5所述的存储装置,其中,当检测到的错误不可纠正时,存储控制器被配置为通知主机缓冲数据的读取失败。
8.根据权利要求7所述的存储装置,其中,主机被配置为响应于缓冲数据的读取失败而将主机存储器缓冲器重新分配到主机存储器的另一区域。
9.根据权利要求1所述的存储装置,其中,当在从主机存储器缓冲器接收缓冲数据的同时发生串行接口的链路断开状态时,存储控制器被配置为用虚设数据替换缓冲数据的丢失包以释放系统挂起。
10.根据权利要求9所述的存储装置,其中,存储控制器被配置为:在用虚设数据替换丢失包之前,首先通过对包的已接收部分执行纠错解码来恢复丢失包。
11.一种操作存储装置的方法,存储装置包括被设置为存储介质的非易失性存储器装置并且被分配有主机的主机存储器作为缓冲器,所述方法包括:
在存储装置处从缓冲器读取缓冲数据;
通过使用第一纠错码引擎来检测缓冲数据的错误;
当检测到的错误通过第一纠错码引擎不可纠正时,由存储装置从主机请求缓冲数据以执行读取重试操作;以及
通过使用第二纠错码引擎对与非易失性存储器装置交换的存储数据执行纠错编码和纠错解码。
12.根据权利要求11所述的方法,所述方法还包括:当检测到的错误可纠正时,通过使用第一纠错码引擎来纠正缓冲数据的检测到的错误。
13.根据权利要求12所述的方法,所述方法还包括:通过使用第二纠错码引擎对已纠错的缓冲数据进行编码,并且将已编码的已纠错的缓冲数据存储在存储装置的存储介质中。
14.根据权利要求11所述的方法,所述方法还包括:
在存储装置处接收将被存储在缓冲器中的缓冲数据;
通过使用第一纠错码引擎对已接收的缓冲数据执行纠错编码;以及
将已编码的缓冲数据写入缓冲器。
15.一种存储装置,所述存储装置包括:
接口,被配置为与主机交换数据;
非易失性存储器装置;以及
存储控制器,连接到接口,并且被配置为将缓冲数据存储在主机的主机存储器的被分配为缓冲器的部分区域中,以响应于缓冲数据来控制非易失性存储器装置,并且对缓冲数据执行纠错编码和纠错解码,
其中,存储控制器还被配置为在接收缓冲数据期间当接口处发生错误时对缓冲数据的包执行恢复操作和/或重构操作。
16.根据权利要求15所述的存储装置,其中,存储控制器被配置为当发生错误时通过对包的接收部分执行纠错解码来恢复包的丢失部分。
17.根据权利要求15所述的存储装置,其中,当发生错误时,接口进入挂起状态,存储控制器被配置为通过使用经由用虚设数据替换包的丢失部分而获得的包来释放接口的挂起状态。
18.根据权利要求17所述的存储装置,其中,存储控制器被配置为在释放挂起状态之后通知主机缓冲数据的接收失败。
19.根据权利要求17所述的存储装置,其中,存储控制器被配置为将被恢复为包括用虚设数据替换的丢失部分的包处理为无效数据。
20.一种存储器系统,所述存储器系统包括:
主机,包括主机存储器并被配置为将主机存储器的部分区域分配为主机存储器缓冲器;以及
存储装置,被配置为主装置,以管理主机存储器缓冲器,而无需主机的干预,
其中,存储装置包括存储控制器,存储控制器被配置为识别对主机存储器缓冲器的访问请求的类型,
其中,当访问请求被识别为读取操作时,存储控制器被配置为从主机存储器缓冲器读取第一数据并对第一数据执行纠错解码,并且
当访问请求被识别为写入操作时,存储控制器被配置为对第二数据执行纠错编码并将已纠错编码的第二数据写入主机存储器缓冲器。
21.根据权利要求20所述的存储器系统,其中,存储装置还包括:串行接口,串行接口被配置为在主机与存储装置之间交换第一数据和已纠错编码的第二数据。
22.根据权利要求21所述的存储器系统,其中,存储控制器被配置为在接收第一数据期间当串行接口处发生错误时替换第一数据的包的被丢失的丢失部分,其中,丢失部分被替换为虚设数据。
23.根据权利要求20所述的存储器系统,其中,存储控制器被配置为当发生错误时通过对包的接收部分执行纠错解码来恢复包的丢失部分。
24.根据权利要求22所述的存储器系统,其中,当发生错误时,串行接口进入挂起状态,存储控制器被配置为通过使用经由用虚设数据替换包的丢失部分而获得的包来释放串行接口的挂起状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180137228A KR102599188B1 (ko) | 2018-11-09 | 2018-11-09 | 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법 |
KR10-2018-0137228 | 2018-11-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177040A CN111177040A (zh) | 2020-05-19 |
CN111177040B true CN111177040B (zh) | 2024-03-08 |
Family
ID=70469130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910768035.2A Active CN111177040B (zh) | 2018-11-09 | 2019-08-20 | 共享主机存储器的存储装置及其操作方法和存储系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11016846B2 (zh) |
KR (1) | KR102599188B1 (zh) |
CN (1) | CN111177040B (zh) |
DE (1) | DE102019111132A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200121645A (ko) * | 2019-04-16 | 2020-10-26 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작 방법과 메모리 시스템 |
US11537464B2 (en) * | 2019-06-14 | 2022-12-27 | Micron Technology, Inc. | Host-based error correction |
US20220345414A1 (en) * | 2019-08-30 | 2022-10-27 | Unitex Corporation | Interface Conversion Device |
US11204833B1 (en) * | 2020-06-19 | 2021-12-21 | Western Digital Technologies, Inc. | NVM endurance group controller using shared resource architecture |
US11734018B2 (en) * | 2020-07-17 | 2023-08-22 | Western Digital Technologies, Inc. | Parallel boot execution of memory devices |
KR102721961B1 (ko) * | 2020-07-22 | 2024-10-28 | 삼성전자주식회사 | 메모리 모듈 및 이를 포함하는 메모리 시스템 |
KR20220018757A (ko) * | 2020-08-07 | 2022-02-15 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 동작 방법 |
US11500589B2 (en) * | 2020-10-05 | 2022-11-15 | Western Digital Technologies, Inc. | Command draining using host memory buffer |
US11861217B2 (en) * | 2020-10-05 | 2024-01-02 | Western Digital Technologies, Inc. | DRAM-less SSD with command draining |
KR20220046299A (ko) | 2020-10-07 | 2022-04-14 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US11829237B1 (en) | 2021-03-05 | 2023-11-28 | Apple Inc. | Error detection and recovery when streaming data |
TWI798680B (zh) * | 2021-04-14 | 2023-04-11 | 群聯電子股份有限公司 | 主機記憶體緩衝區管理方法、記憶體儲存裝置與記憶體控制電路單元 |
US11803322B2 (en) * | 2021-05-03 | 2023-10-31 | SK Hynix Inc. | Memory system and operating method supporting fast boot using host memory buffer and default enabled information |
TWI783522B (zh) * | 2021-06-11 | 2022-11-11 | 群聯電子股份有限公司 | 資料重建方法、記憶體儲存裝置及記憶體控制電路單元 |
CN113360429B (zh) * | 2021-06-21 | 2024-07-02 | 群联电子股份有限公司 | 数据重建方法、存储器存储装置及存储器控制电路单元 |
CN113468083B (zh) * | 2021-07-02 | 2024-01-26 | 成都忆芯科技有限公司 | 一种双端口NVMe控制器及控制方法 |
US11531473B1 (en) | 2021-09-10 | 2022-12-20 | Western Digital Technologies, Inc. | Selective HMB backup in NVM for low power mode |
US11809742B2 (en) | 2021-09-20 | 2023-11-07 | Western Digital Technologies, Inc. | Recovery from HMB loss |
US11893275B2 (en) | 2021-09-20 | 2024-02-06 | Western Digital Technologies, Inc. | DRAM-less SSD with recovery from HMB loss |
US12271605B2 (en) | 2021-11-15 | 2025-04-08 | Samsung Electronics Co., Ltd. | Storage device and operation method thereof |
US11841767B2 (en) | 2021-11-24 | 2023-12-12 | Samsung Electronics Co., Ltd. | Controller controlling non-volatile memory device, storage device including the same, and operating method thereof |
ES2997967T3 (en) * | 2022-04-22 | 2025-02-18 | Siemens Mobility GmbH | Method for computer-assisted operation of a memory unit and execution of application programs with memory check for memory errors |
US12237844B2 (en) * | 2022-10-07 | 2025-02-25 | Micron Technology, Inc. | Error detection and classification at a host device |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373449A (zh) * | 2007-08-21 | 2009-02-25 | 三星电子株式会社 | Ecc控制电路、多通道存储器系统以及相关操作方法 |
CN106126447A (zh) * | 2015-05-07 | 2016-11-16 | 三星电子株式会社 | 控制存储装置的方法、存储器模块和存储系统 |
CN107403645A (zh) * | 2016-05-12 | 2017-11-28 | 三星电子株式会社 | 非易失性存储器器件及其读取和拷回方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7831882B2 (en) * | 2005-06-03 | 2010-11-09 | Rambus Inc. | Memory system with error detection and retry modes of operation |
US8543742B2 (en) | 2007-02-22 | 2013-09-24 | Super Talent Electronics, Inc. | Flash-memory device with RAID-type controller |
JP2010009642A (ja) * | 2008-06-24 | 2010-01-14 | Toshiba Corp | 半導体記憶装置およびそのテスト方法 |
US8327066B2 (en) | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
US8341311B1 (en) | 2008-11-18 | 2012-12-25 | Entorian Technologies, Inc | System and method for reduced latency data transfers from flash memory to host by utilizing concurrent transfers into RAM buffer memory and FIFO host interface |
KR101650130B1 (ko) * | 2010-05-14 | 2016-08-24 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법 |
KR102020466B1 (ko) * | 2012-10-04 | 2019-09-10 | 에스케이하이닉스 주식회사 | 버퍼 메모리 장치를 포함하는 데이터 저장 장치 |
KR102048765B1 (ko) * | 2013-01-15 | 2020-01-22 | 삼성전자주식회사 | 메모리 시스템의 동작 방법 및 메모리 시스템 |
US10841317B2 (en) * | 2015-03-31 | 2020-11-17 | Dell Products, Lp | Processing content sharing system data from a plurality of remotely connected computing devices in physical or virtualized space |
US9870284B2 (en) * | 2015-05-27 | 2018-01-16 | International Business Machines Corporation | First responder parities for storage array |
KR102450555B1 (ko) * | 2015-11-09 | 2022-10-05 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
KR102466412B1 (ko) | 2016-01-14 | 2022-11-15 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US10002405B2 (en) | 2016-01-22 | 2018-06-19 | Intel Corporation | Smart optimization of unused graphics buffer memory in computing environments |
US10157004B2 (en) | 2016-04-14 | 2018-12-18 | Sandisk Technologies Llc | Storage system and method for recovering data corrupted in a host memory buffer |
US10055164B2 (en) * | 2016-09-07 | 2018-08-21 | Sandisk Technologies Llc | Data storage at an access device |
CN107918571B (zh) * | 2016-10-08 | 2021-04-30 | 上海宝存信息科技有限公司 | 测试储存单元的方法以及使用该方法的装置 |
KR102683696B1 (ko) | 2016-11-15 | 2024-07-09 | 삼성전자주식회사 | 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법 |
US10394706B2 (en) * | 2017-11-02 | 2019-08-27 | Western Digital Technologies, Inc. | Non-volatile storage with adaptive command prediction |
US20190042364A1 (en) * | 2018-06-25 | 2019-02-07 | Intel Corporation | Technologies for maintaining data integrity during data transmissions |
KR20210014473A (ko) * | 2019-07-30 | 2021-02-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 라이트 방법 |
-
2018
- 2018-11-09 KR KR1020180137228A patent/KR102599188B1/ko active Active
-
2019
- 2019-04-30 DE DE102019111132.3A patent/DE102019111132A1/de active Pending
- 2019-08-07 US US16/533,894 patent/US11016846B2/en active Active
- 2019-08-20 CN CN201910768035.2A patent/CN111177040B/zh active Active
-
2021
- 2021-04-25 US US17/239,621 patent/US12066889B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373449A (zh) * | 2007-08-21 | 2009-02-25 | 三星电子株式会社 | Ecc控制电路、多通道存储器系统以及相关操作方法 |
CN106126447A (zh) * | 2015-05-07 | 2016-11-16 | 三星电子株式会社 | 控制存储装置的方法、存储器模块和存储系统 |
CN107403645A (zh) * | 2016-05-12 | 2017-11-28 | 三星电子株式会社 | 非易失性存储器器件及其读取和拷回方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210248035A1 (en) | 2021-08-12 |
US20200151055A1 (en) | 2020-05-14 |
CN111177040A (zh) | 2020-05-19 |
US11016846B2 (en) | 2021-05-25 |
KR102599188B1 (ko) | 2023-11-08 |
KR20200054402A (ko) | 2020-05-20 |
DE102019111132A1 (de) | 2020-05-14 |
US12066889B2 (en) | 2024-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111177040B (zh) | 共享主机存储器的存储装置及其操作方法和存储系统 | |
US9613656B2 (en) | Scalable storage protection | |
US8601347B1 (en) | Flash memory device and storage control method | |
US7984325B2 (en) | Storage control device, data recovery device, and storage system | |
US10727867B2 (en) | Error correction decoding augmented with error tracking | |
US10474527B1 (en) | Host-assisted error recovery | |
KR20220001222A (ko) | 베드 블록을 처리하는 메모리 시스템 및 동작 방법 | |
US20150154061A1 (en) | Page retirement in a nand flash memory system | |
TW201535114A (zh) | 記錄非揮發性記憶體系統中之停滯時間 | |
KR20220021186A (ko) | 데이터 처리 시스템 내 데이터를 공유하는 장치 및 방법 | |
CN112612634A (zh) | 存储器系统和主机的操作方法以及计算系统 | |
US20210103517A1 (en) | Operating method of memory system and host recovering data with write error | |
KR20220045343A (ko) | 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법 | |
KR20210121654A (ko) | 메모리 시스템의 데이터 에러를 복구하는 장치 및 방법 | |
US10802958B2 (en) | Storage device, its controlling method, and storage system having the storage device | |
CN116127479A (zh) | 存储设备及其操作方法 | |
US20240202067A1 (en) | Storage device and method of operating the same | |
CN113553631A (zh) | 用于在存储器系统中保护数据的设备和方法 | |
CN112579329A (zh) | 快速处理uecc的方法及其存储设备 | |
US11809742B2 (en) | Recovery from HMB loss | |
KR20220108342A (ko) | 메모리 시스템 내 프리 블록을 확보하는 장치 및 방법 | |
US20240338124A1 (en) | Storage device using host memory buffer and method of operating the same | |
KR20230071018A (ko) | 스토리지 장치 및 이의 동작 방법 | |
CN118733495A (zh) | 用于减少对存储装置执行的读取操作的延迟的方法和装置 | |
KR20230071023A (ko) | 스토리지 장치 및 이의 동작 방법 |
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 |