CN111008156B - 存储设备和操作存储设备的方法 - Google Patents

存储设备和操作存储设备的方法 Download PDF

Info

Publication number
CN111008156B
CN111008156B CN201910908067.8A CN201910908067A CN111008156B CN 111008156 B CN111008156 B CN 111008156B CN 201910908067 A CN201910908067 A CN 201910908067A CN 111008156 B CN111008156 B CN 111008156B
Authority
CN
China
Prior art keywords
hmb
address
data
storage device
mapping
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
Application number
CN201910908067.8A
Other languages
English (en)
Other versions
CN111008156A (zh
Inventor
金渊雨
权宰暎
全镇完
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN111008156A publication Critical patent/CN111008156A/zh
Application granted granted Critical
Publication of CN111008156B publication Critical patent/CN111008156B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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

公开了一种存储设备,包括:完整性检查模块,检查与存储设备耦接的主机中的主机存储器缓冲器(HMB)的第一HMB地址中存储的数据的完整性;以及HMB映射模块,在完整性检查模块确定数据损坏时,将第一HMB地址映射到第二地址。

Description

存储设备和操作存储设备的方法
相关申请的交叉引用
本申请要求于2018年10月4日向韩国知识产权局提交的韩国专利申请No.10-2018-0118282的优先权,其公开通过引用整体包含于此。
技术领域
本公开涉及存储设备和操作该存储设备的方法。
背景技术
包括非易失性存储器(例如闪存)的存储设备可以根据需要在主机的存储器中存储数据,例如主机中提供的DRAM(动态随机存取存储器)。例如,如果存储设备中的缓冲器存储器不够用,则存储设备可以访问作为主机存储器缓冲器(此后称为“HMB”)的主机存储器。
通常,当HMB中存储的数据损坏时,存储设备对数据执行恢复操作。如果数据损坏的原因例如是存储设备与主机之间的数据传输上的错误或者在HMB上写入数据过程中的错误,则该数据损坏可以通过执行一次恢复来恢复。
然而,在数据损坏的原因例如在于提供HMB的主机存储器本身的情况下,数据损坏可能反复出现。数据损坏的原因可以包括DRAM的硬件故障,例如位翻转。不同于数据传输上的错误,很难从根本上解决该位置的数据损坏问题。
发明内容
本公开的各个方面提供了一种存储设备,当HMB中存储的数据由于主机存储器的硬件故障而损坏时,该存储设备能够防止恢复开销并恢复数据损坏。
本公开的各个方面还提供了一种用于操作存储设备的方法,当HMB中存储的数据由于主机存储器的硬件故障而损坏时,该方法能够防止恢复开销并恢复数据损坏。
然而,本公开的各个方面不限于本文所阐述的。通过参考下文给出的对本公开的详细描述,本公开的上述和其他方面对于本公开所属领域的普通技术人员将变得更加明显。
根据本发明概念的一个示例性实施例,一种存储设备包括:完整性检查模块,检查与存储设备耦接的主机中的主机存储器缓冲器(HMB)的第一HMB地址中存储的数据的完整性,以及HMB映射模块,在完整性检查模块确定数据损坏时,将第一HMB地址映射到第二地址。
根据本发明概念的一个示例性实施例,一种存储设备包括:内部存储器;完整性检查模块,检查与存储设备耦接的主机中的主机存储器缓冲器(HMB)的第一HMB地址中存储的数据的完整性;以及HMB映射模块,在完整性检查模块确定数据损坏时,在第一操作模式中将第一HMB地址映射到HMB中不同于第一HMB地址的第二HMB地址,以及在不同于第一操作模式的第二操作模式中将第一HMB地址映射到内部存储器的内部存储器地址。
根据本发明概念的一个示例性实施例,一种存储设备包括:完整性检查模块,检查与存储设备耦接的主机中的主机存储器缓冲器(HMB)的第一HMB地址中存储的数据的完整性;硬件错误确定模块,将第一HMB地址中存储的数据被确定为损坏的次数与预定阈值进行比较;以及HMB映射模块,根据硬件错误确定模块的比较结果,将从第一HMB地址到HMB中不同于第一HMB地址的第二HMB地址的地址映射条目存储在映射表中。
根据本发明概念的一个示例性实施例,提供了如下的一种操作存储设备的方法。检查与存储设备耦接的主机中的主机存储器缓冲器(HMB)的第一HMB地址中存储的数据的完整性。如果数据完整性检查的结果是确定该数据损坏时,将第一HMB地址映射到第二地址。
附图说明
通过参考附图详细描述示例性实施例,本公开的上述和其他方面和特征将变得更加明显,附图中:
图1是示出根据本公开实施例的存储系统的示意图;
图2是示出图1的存储系统的框图;
图3是示出图1的存储系统的一个操作示例的框图;
图4是示出图1的存储系统的一个操作示例的框图;
图5是示出图1的存储系统的一个操作示例的框图;
图6是示出图1的存储系统的一个操作示例的框图;
图7到图9是示出用于图1的存储系统的操作方法的流程图;
图10是示出根据本公开另一实施例的存储系统的示意图;
图11是示出根据本公开又一实施例的存储系统的示意图;
图12是示出图11的存储系统的框图;以及
图13是示出根据本公开再一实施例的存储系统的示意图。
具体实施方式
图1是示出根据本公开实施例的存储系统的示意图。
参考图1,根据本公开一个实施例的存储系统1包括主机10和存储设备20。
在本公开的一些实施例中,主机10和存储设备20可以经由电接口(例如UFS(通用闪速存储)、SCSI(小型计算机系统接口)、SAS(串行附接SCSI)、SATA(串行高级技术附件)、PCIe(外围组件互连高速)、eMMC(嵌入式多媒体卡)、FC(光纤信道)、ATA(高级技术附件)、IDE(集成驱动电子)、USB(通用串行总线)和IEEE 1394(火线))相互连接。然而,本公开的范围不限于此,而是可以应用于允许数据在主机10和存储设备20之间发送和接收的任何接口。
主机10包括CPU(中央处理单元)100、存储器110和接口120。CPU 100、存储器110和接口120可以经由总线190来相互发送和接收数据。
CPU 100可以驱动应用或驱动器。应用可以由主机10执行并且可以控制存储系统1,驱动器可以驱动与主机10电连接的存储设备20。具体地,驱动器可以从应用接收用于控制存储设备20的命令,并且存储设备20可以向应用提供处理命令的结果。
存储器110可以用作主机10的主存储器,或者可以用作高速缓存存储器、临时存储器等等,以用于临时存储数据。在本公开的一些实施例中,存储器110可以包括易失性存储器,包括DRAM(动态随机存取存储器),不过本公开的范围不限于此。
主机10的接口120可以与存储设备20的接口220电连接以发送和接收命令或数据。同时,尽管未图示,主机10的接口120也可以提供可以用于存储设备20的接口220的操作的参考时钟。
主机10的存储器110包括HMB 112。HMB 112是存储器110上的部分区域,该部分区域被设置成使得存储设备20可以从主机10访问。例如,存储设备20可以访问附接到CPU 100的存储器110内的HMB 112。主机10可以设置存储器110上存储设备20可以访问的存储缓存器地址、缓存器大小等。例如,主机20可以为可以允许存储设备20访问的HMB 112设置HMB地址、HMB大小等。
接着,存储设备20可以从非易失性存储器230读取数据并在主机10的HMB 112上写入数据。在这种情况下,相同的数据可以存储在HMB 112和非易失存储器230二者中。而且,当需要参考该数据时,存储设备20可以从主机10的HMB 112而不是非易失性存储器230读取数据。另一方面,例如,当非易失性存储器230中存储的数据值被更新时,存储设备20可以更新主机10的HMB 112中存储的数据,而且,存储设备20也可以将HMB 112中的数据刷新(flush)到非易失性存储器230中。
应当确保HMB 112中存储的数据的完整性。如果HMB 112中存储的数据被损坏,损坏的数据应当例如通过恢复执行或恢复操作来恢复。然而,如果HMB 112本身有硬件错误并且数据存储在带有错误的位置中,则会出现持续的数据损坏。更具体地,每次从HMB 112中尚未修复的带有硬件错误的位置读取数据时,数据损坏持续出现,并且对数据损坏重复执行恢复操作。HMB 112中带有硬件错误的位置可以对应于HMB 112的单比特存储器单元,该单元在使用HMB 112时可能发生永久性故障。对于带有硬件错误的位置,数据损坏将持续并且数据恢复操作将重复。
将描述用于解决此问题的根据本公开实施例的存储设备20。
存储设备20包括核心200、内部存储器210、接口220、非易失性存储器230、HMB模块240、完整性检查模块250和HMB映射模块260。
核心200通常控制存储设备20,类似于主机10的存储器110,内部存储器210可以用作存储设备20的主存储器或者可以用作用于临时存储数据的高速缓存存储器、临时存储器等等。非易失性存储器230可以包括闪存、MRAM(磁阻随机存取存储器)、PRAM(相变随机存取存储器)、FeRAM(铁电随机存取存储器)等等,不过本公开的范围不限于此。
HMB模块240可以执行用于访问主机10的HMB 112的基本操作。例如,HMB模块240可以执行以下操作:例如从非易失性存储器230读取数据以及在主机10的HMB 112上写入数据,或者从主机10的HMB 112而不是非易失性存储器230读取数据以及将数据提供给核心200。而且,HMB模块240可以执行以下操作:例如更新主机10的HMB 112中存储的数据或者在数据值更新时将HMB 112中存储的数据刷新到非易失性存储器230中。
完整性检查模块250检查主机10的HMB 112的第一HMB地址中存储的数据的完整性。
具体地,当数据被写入到HMB 112上时,完整性检查模块250可以生成用于检查该数据的完整性的校验数据。HMB模块240可以将该数据和校验数据一起写入到HMB 112上。本发明不限于此。例如,如果HMB模块240和完整性检查模块250集成在图10的完整性检查模块250中,则图10的完整性检查模块250可以将数据和校验数据一起写入到HMB 112上。而且,当从HMB 112读取数据时,HMB模块240可以从HMB 112读取用于检查数据的完整性的校验数据,并且完整性检查模块250可以使用该校验数据来检查数据的完整性。本发明不限于此。例如,如果HMB模块240和完整性检查模块250集成到图10的完整性检查模块250中,则图10的完整性检查模块250可以从HMB 112一起读取数据和校验数据并使用校验数据来检查该数据的完整性。
在本公开的其他实施例中,数据可以存储在HMB 112中,并且用于检查该数据的完整性的校验数据可以存储在存储设备20中(例如,内部存储器210)。在这种情况下,HMB模块240可以将数据写入到HMB 112上以及将用于检查该数据的完整性的校验数据写入到例如内部存储器210上。而且,HMB模块240可以从HMB 112读取数据以及从存储设备20的内部存储器210读取用于检查该数据的完整性的校验数据,并且完整性检查模块250可以使用该校验数据来检查数据的完整性。本领域技术人员应当很熟悉HMB模块240和完整性检查模块250在处理环境中的使用,特别是在与其他设备通信的存储设备中的使用。HMB模块240和完整性检查模块250的每一个可以实现为软件、固件、硬件或三者中至少两种的一些适当组合。
基于完整性检查模块250的检查结果,当数据损坏时,HMB映射模块260将第一HMB地址映射到其他地址。进一步地,HMB映射模块260可以使用映射表262来管理与第一HMB地址和其他地址有关的信息。例如,HMB映射模块260可以管理映射表262,映射表262存储与从第一HMB地址到其他地址的地址映射有关的信息。在一个示例实施例中,映射表262可以集成在HMB映射模块260中。例如,HMB映射模块260可以包括用于存储映射表262的信息的存储器。
例如,当数据损坏时,HMB映射模块260可以将第一HMB地址映射到HMB 112中不同于第一HMB地址的第二HMB地址。HMB映射模块260可以使用映射表262来管理与第一HMB地址和第二HMB地址有关的信息。例如,HMB映射模块260可以管理映射表262,映射表262存储与从第一HMB地址到第二HMB地址的地址映射有关的信息。在一个示例实施例中,HMB映射模块260可以实现为软件、固件、硬件或三者中至少两种的一些适当组合。HMB映射模块260的操作将参考图2到图6详细描述。
按此方式,如果HMB 112中的第一HMB地址的位置有硬件错误,则第一HMB地址被映射到其他地址,从而防止数据存储在该位置处。因此,能够在没有重复的恢复操作所导致的恢复开销情况下修复数据损坏。
图2是示出图1的存储系统的框图。
参考图2,数据(A到D)存储在主机10的HMB 112中。存储在HMB 112中的数据(A到D)对应于从存储设备20的非易失性存储器230中存储的数据(A到D)拷贝的数据。
在此实施例中,数据(A到D)的每个可以具有任意大小。例如,数据(A)可以通过HMB地址0x1000来访问并且可以具有第一大小,数据(B)可以通过HMB地址0x2000来访问并且可以具有第二大小。例如,HMB地址0x1000可以是具有第一大小的数据(A)的起始地址,而HMB地址0x2000可以是具有第二大小的数据(B)的起始地址。进一步地,数据(C)可以通过HMB地址0x3000来访问并且可以具有第三大小,数据(D)可以通过HMB地址0x4000来访问并且可以具有第四大小。例如,HMB地址0x3000可以是具有第三大小的数据(C)的起始地址,而HMB地址0x4000可以是具有第四大小的数据(D)的起始地址。这里,第一大小到第四大小可以全部相同,也可以不相同。
另一方面,在本实施例中,HMB 112中存储的数据(A到D)的每个也可以包括用于检查除了非易失性存储器230中存储的数据(A到D)之外的其他数据的完整性的校验数据。在本公开的一些实施例中,校验数据可以包括用于CRC(循环冗余校验)的数据、哈希值等等,不过本公开的范围不限于此。
例如,存储设备20可以从非易失性存储器230读取数据(A到D)中的至少一个并且将其写入到主机10的HMB 112上。进一步地,存储设备20可以从主机10的HMB 112而不是从非易失性存储器230读取数据(A到D)中的至少一个。
在这种情况下,完整性检查模块250例如可以检查HMB地址0x1000处存储的数据的完整性。具体地,当数据(A)被写入到HMB112上时,完整性检查模块250可以生成用于检查数据(A)的完整性的校验数据,并且HMB模块240可以将该校验数据与数据(A)一起写入到HMB112的HMB地址0x1000所访问的位置上。进一步地,当从HMB 112读取数据(A)时,HMB模块240可以读取数据(A)和校验数据,并且完整性检查模块250可以使用该校验数据来检查数据(A)的完整性。
在本实施例中,为了解释方便,描述了校验数据与数据(A到D)一起存储在HMB 112中,不过本公开的范围不限于此。如上文参考图1所描述的,校验数据可以独立于数据(A到D)存储在存储设备20内。
图3是示出图1的存储系统的一个操作示例的框图。
参考图3,基于完整性检查模块250的检查结果,当数据(A)损坏时,HMB映射模块260可以将对应于第一HMB地址的0x1000映射到另一地址,例如HMB地址0x5000。进一步地,HMB映射模块260可以将从对应于第一HMB地址的0x1000到对应于另一地址的0x5000的地址映射条目插入到映射表262中。
此后,例如当根据核心200的请求需要访问主机10的HMB 112时,HMB映射模块260可以接收第一HMB地址0x1000并提供另一地址0x5000供访问。通过这种方式,利用第一HMB地址0x1000访问的位置可以替换为利用另一地址0x5000访问的另一位置以供访问。
通过这种方式,将发生数据损坏的第一HMB地址0x1000映射到另一地址0x5000可以防止数据被存储在第一HMB地址0x1000所访问的位置处,因此能够在没有由于出现重复的恢复操作所导致的恢复开销情况下恢复数据损坏。
在本公开的一些实施例中,使用非易失性存储器230中存储的数据,损坏的数据可以恢复到另一地址所访问的位置。例如,使用非易失性存储器230中存储的数据(A),损坏数据(A)可以恢复到第二HMB地址0x5000所访问的位置。在这种情况下,当第一HMB地址0x1000的位置损坏时,损坏的数据可以通过将非易失性存储器230中存储的数据(A)拷贝到第HMB地址0x5000的位置处来恢复。当存储设备20访问第一HMB地址0x1000的位置时,HMB映射模块260例如可以根据第一HMB地址0x1000生成第HMB地址0x5000,并且存储设备20可以访问第HMB地址0x5000的位置而不是第一HMB地址0x1000的位置。
备选地,在本公开的一些实施例中,在执行恢复之后,损坏数据可以被恢复到通过该另一HMB地址所访问的位置。例如,在执行恢复之后,第一HMB地址0x1000的损坏数据(A)可以被恢复到第二HMB地址0x5000所访问的位置。
图4是示出图1的存储系统的一个操作示例的框图。
参考图4,基于完整性检查模块250的检查结果,当数据(C)损坏时,HMB映射模块260可以将对应于第三HMB地址的0x3000映射到另一位置,例如第四HMB地址0x6000。进一步地,HMB映射模块260可以将从第三HMB地址0x3000到第四HMB地址0x6000的地址映射条目插入到映射表262中。
此后,例如当根据核心200的请求需要访问主机10的HMB 112,HMB映射模块260可以响应于第三HMB地址0x3000来生成第四HMB地址0x6000以供访问。
通过这种方式,将发生数据损坏的第三HMB地址0x3000映射到第四地址0x6000可以防止数据被存储在通过第三HMB地址0x3000所访问的位置中,因此能够在没有由于出现重复的恢复操作所导致的恢复开销的情况下恢复数据损坏。
在本实施例中,使用非易失性存储器230中存储的数据(C),第三HMB地址0x3000的损坏数据(C)可以重新被存储到通过第四HMB地址0x6000所访问的位置。例如,当第三HMB地址0x3000的位置损坏时,损坏的数据可以通过将非易失性存储器230中存储的数据(C)拷贝到第四HMB地址0x6000的位置来恢复。备选地,在执行恢复之后,损坏数据(C)可以恢复到通过另一地址0x6000所访问的位置。
图5是示出图1的存储系统的一个操作示例的框图。
参考图5,不同于图4的实施例,基于完整性检查模块250的检查结果,当数据(C)损坏时,HMB映射模块260可以将对应于第三HMB地址的0x3000映射到内部存储器210的内部存储器地址,例如0xA。进一步地,HMB映射模块260可以将从对应于第三HMB地址的0x3000到对应于内部存储器地址的0xA的地址映射条目插入到映射表262中。
此后,例如,当根据核心200的请求需要访问主机10的HMB 112时,HMB映射模块260可以响应于第三HMB地址0x3000生成内部存储器地址0xA以供上述访问。
本实施例中的映射到内部存储器210的内部存储地址的执行可以在下列情况中执行。作为示例,如果通过另一地址可访问的可用区域不存在于HMB 112中(也即,当HMB 112处于满状态时),HMB映射模块260可以将第一HMB地址映射到内部存储器210的内部存储器地址。
作为另一示例,映射操作的目标可以根据存储设备20所确定的操作模式而不同。具体地,在第一操作模式中,HMB映射模块260可以将第一HMB地址映射到HMB 112中的第二HMB地址。在第二操作模式中,HMB映射模块260可以将第一HMB地址映射到内部存储器210的内部存储器地址。在这种情况下,第一操作模式和第二操作模式可以根据用户的设置或存储系统的操作策略而任意设置。
在本实施例中,使用非易失性存储器230中存储的数据(C),第三HMB地址0x3000的损坏数据(C)可以重新被存储在通过内部存储器地址0xA访问的位置中。例如,当第三HMB地址0x3000的位置损坏时,损坏数据可以通过将非易失性存储器230中存储的数据(C)拷贝到内部存储器地址0xA的位置来恢复。或者,在执行恢复之后,损坏数据(C)可以重新被存储在通过内部存储器地址0xA访问的位置中。
图6是示出图1的存储系统的一个操作示例的框图。
参考图6,映射表262可以存储在非易失性存储器230中。进一步地,例如,当重启存储设备20时,HMB映射模块260可以使用非易失性存储器230中存储的映射表262来获取与第一HMB地址和其他地址有关的信息。
另一方面,HMB映射模块260也可以初始化映射表262中存储的与第一HMB地址和其他地址有关的信息。
根据本实施例,即使当存储设备20重启时,也能够快速识别主机10的HMB 112上的硬件缺陷的位置。例如,当交换主机10的存储器110时,由于与地址映射有关的信息可以被快速初始化,因此存储设备20的性能可以进一步得以改进。
图7到图9是示出用于图1的存储系统的操作方法的流程图。图7到图9的描述也将参考图1。
参考图7,图1的存储系统1确定是否使能HMB操作模块(S601)。当HMB操作模式使能时(S601,是),主机10在存储器110上设置存储设备20可访问的HMB地址(即,缓冲器地址)、HMB大小(即,缓冲器大小)等(S603)。进一步地,存储设备20从非易失性存储器230读取数据并在HMB 112上写入该数据(S605)。
接着,确定是否需要访问HMB数据(S607)。例如,当根据存储设备20的核心200的请求需要访问HMB 112时(S607,是),存储设备20可以将数据写入到HMB 112上(S701)或可以从HMB 112读取数据(S801)。
随后,参考图8,当存储设备20将数据写入到HMB 112上时(S701),检查是否执行映射(S703)。例如,存储设备20可以执行对映射表262的搜索以确定是否对尝试访问数据的HMB地址进行映射。
当执行对尝试访问数据的HMB地址的映射时(S703,是),存储设备20可以参考映射表262以获取尝试访问HMB 112的地址(S705)。
接着,生成用于检查数据的完整性的校验数据(S707),并且校验数据可以与要写入的数据一起写入到HMB 112上(S709)。
如上所描述的,校验数据可以独立于要写入的数据而存储在存储设备20内。
接着,参考图9,当存储设备20从HMB 112的HMB地址读取数据时(S801),检查是否对HMB地址执行映射(S803)。例如,存储设备20可以执行对映射表262的搜索以确定是否对尝试访问数据的HMB地址进行映射。当映射表262包括针对该HMB地址的条目时,从映射表262读取与该HMB地址关联的地址,并且存储设备20从与该HMB地址关联的地址的位置读取数据。该位置可以在HMB 112中或者在内部存储器210中。
当执行对尝试访问数据的HMB地址的映射时(S803,是),存储设备20可以参考映射表262以获取用于访问HMB 112的地址(S805)。
接着,将数据和用于检查该数据完整性的校验数据一起从HMB 112读取(S807),并且可以使用校验数据来检查该数据的完整性(S809)。
如果校验数据存储在存储设备20内的内部存储器210中而不是HMB 112中,则上述步骤(S807)可以包括从HMB读取数据以及从内部存储器210读取校验数据。
当根据检查结果确定数据无效时(S811,否,存储设备20分配用于映射到HMB 112的存储器(S813),并且在映射表262中注册已有地址和指派地址(S815)。
通过这种方式,如果HMB 112中的第一HMB地址的位置有硬件错误,则第一HMB地址被映射到其他地址,从而防止数据被存储在该位置。因此,能够在没有由于出现重复的恢复操作所导致的恢复开销的情况下修复数据损坏。
图10是示出根据本公开另一实施例的存储系统的示意图。
参考图10,根据本公开另一实施例的存储系统2与图1的存储系统1的不同之处在于,前者不包括HMB模块240。
即,在图1的实施例中,尽管存储系统1的HMB模块240已经执行用于访问主机10的HMB 112的基本操作,这种基本操作可以集成地实现在HMB映射模块260中。
因此,在本实施例中,当HMB 112的第一HMB地址中存储的数据损坏时,HMB映射模块260可以执行将第一HMB地址映射到另一地址的操作,而且,HMB模块240也可以执行从非易失性存储器230读取数据以及在HMB 112上写入该数据的操作,或者从主机10的HMB112而不是非易失性存储器230读取数据并将该数据提供给核心200的操作。
图11是示出根据本公开又一实施例的存储系统的示意图。
参考图11,根据本公开又一实施例的存储系统3与图1的存储系统1的不同之处在于前者还包括硬件错误确定模块270和计数表272。
硬件错误确定模块270将使用第一HMB地址访问的数据的损坏的次数或频率与预定阈值进行比较,以确定是否执行参考图3到图6所描述的映射操作。例如,在图3中,如果第一HMB地址0x1000中存储的数据的损坏频率大于或等于预定阈值,则硬件错误确定模块270可以确定第一HMB地址0x1000存在硬件错误;在图4中,如果第三HMB地址0x3000中存储的数据的损坏频率大于或等于预定阈值,则硬件错误确定模块270可以确定第三HMB地址0x3000存在硬件错误。接着,根据硬件错误确定模块270的确定,HMB映射模块260可以将第一HMB地址或第三HMB地址映射到另一地址。例如,如图3所示,HMB映射模块260可以将从对应于第一HMB地址的0x1000到对应于另一地址的0x5000的地址映射条目插入到映射表262中。
此外,硬件错误确定模块270可以使用计数表272来管理与第一HMB地址中存储的数据的损坏次数有关的信息。例如,硬件错误确定模块270可以管理计数表272,计数表272存储第一HMB地址中存储的数据被确定为损坏的次数。
图12是示出图11的存储系统的框图。
参考图12,基于完整性检查模块250的检查结果,当数据(A)损坏时,HMB映射模块260可以在计数表272上记录对应于HMB地址的0x1000的数据损坏出现的次数。在此实施例中,0x1000的数据损坏出现的次数记录为6,0x3000的数据损坏出现的次数记录为1。
如果通过用户或应用将预定阈值确定为5,则硬件错误确定模块270通过将对应于第一HMB地址的0x1000的数据损坏的出现次数6与预定阈值5进行比较,可以基于数据损坏出现的次数超过预先指定的阈值来确定执行映射操作。
在0x3000的情况下,由于数据损坏的出现次数仅为1,小于预先指定的阈值,因此不执行映射操作。
按此方式,基于HMB 112上同一位置处数据损坏的出现次数,能够预测HMB 112上是否存在硬件缺陷。据此,也有可能改进通过对一次性数据损坏执行恢复的方法和对持久数据损坏执行映射操作的方法的存储设备20的数据恢复效率。在示例实施例中,硬件错误确定模块270可以实现为软件、固件、硬件或三者中至少两种的一些适当组合。
图13是示出根据本公开再一实施例的存储系统的示意图。
参考图13,根据本公开再一实施例的存储系统4与图1的存储系统1的不同之处在于前者还包括硬件错误信息提供模块280。
硬件错误信息提供模块280可以向主机10提供与映射操作有关的信息。与映射操作有关的信息例如可以包括以下至少一项:与HMB 112中被确定为存在缺陷的HMB地址有关的信息,与关联于具有缺陷的HMB地址的映射地址有关的信息,以及与使用同一HMB地址访问的数据被确定为损坏的次数有关的信息,不过本公开的范围不限于此。在示例实施例中,硬件错误信息提供模块280可以实现为软件、固件、硬件或三者中至少两种的一些适当组合。
总结上述详细描述,本领域技术人员将认识到,可以对实施例进行许多变形和修改,而实质上不偏离本公开的原则。因此,所公开的优选实施例仅用于一般性和描述性意义,而不用于限制目的。

Claims (19)

1.一种存储设备,包括:
完整性检查模块,配置用于检查与所述存储设备耦接的主机中的主机存储器缓冲器HMB的第一HMB地址处存储的数据的完整性;以及
HMB映射模块,配置用于在所述完整性检查模块确定所述数据损坏时,将第一HMB地址映射到第二地址,
其中所述第二地址对应于所述HMB中不同于第一HMB地址的第二HMB地址。
2.根据权利要求1所述的存储设备,
其中所述完整性检查模块进一步配置用于:
将所述数据写入到HMB以及将用于检查所述数据的完整性的校验数据写入到HMB或所述存储设备;
读取所述校验数据和所述数据;以及
使用所述校验数据来检查所述数据的完整性。
3.根据权利要求1所述的存储设备,还包括:
布置在所述存储设备内部的内部存储器,
其中所述第二地址对应于所述内部存储器的内部存储器地址。
4.根据权利要求1所述的存储设备,
其中所述HMB映射模块管理映射表,所述映射表存储与从第一HMB地址到第二地址的地址映射有关的信息。
5.根据权利要求1所述的存储设备,还包括:
非易失性存储器,布置在所述存储设备内并单独地存储与HMB中存储的所述数据相对应的数据,
其中如果确定HMB中存储的所述数据损坏,则通过将所述非易失性存储器中存储的所述数据拷贝到通过所述第二地址访问的位置,将HMB中存储的所述数据恢复到通过第二地址访问的位置。
6.根据权利要求1所述的存储设备,
其中如果确定HMB中存储的所述数据损坏,则在对HMB中存储的所述数据执行恢复操作之后,将HMB中存储的所述数据恢复到通过第二地址访问的位置。
7.根据权利要求1所述的存储设备,还包括:
硬件错误确定模块,配置用于将使用第一HMB地址访问的数据被确定为损坏的次数与预定阈值进行比较,
其中所述HMB映射模块根据所述硬件错误确定模块的确定结果,将第一HMB地址映射到第二地址。
8.根据权利要求1所述的存储设备,还包括:
硬件错误信息提供模块,向所述主机提供与所述HMB映射模块的地址映射有关的信息,
其中所述与所述HMB映射模块的地址映射有关的信息包括以下至少一项:与所述HMB中被确定为存在缺陷的第一HMB地址有关的信息,与所述第二地址有关的信息,以及与使用所述第一HMB地址访问的数据被确定为损坏的次数有关的信息。
9.一种存储设备,包括:
内部存储器;
完整性检查电路,配置用于检查与所述存储设备耦接的主机中的主机存储器缓冲器HMB的第一HMB地址处存储的数据的完整性;以及
HMB映射模块,配置用于在所述完整性检查电路确定所述数据损坏时,在第一操作模式中将所述第一HMB地址映射到所述HMB中不同于所述第一HMB地址的第二HMB地址,以及在不同于第一操作模式的第二操作模式中将所述第一HMB地址映射到所述内部存储器的内部存储器地址。
10.根据权利要求9所述的存储设备,
其中所述完整性检查电路进一步配置用于:
将所述数据写入到HMB以及将用于检查所述数据的完整性的校验数据写入到HMB或所述存储设备;
读取所述校验数据和所述数据;以及
使用所述校验数据来检查所述数据的完整性。
11.根据权利要求9所述的存储设备,
其中所述HMB映射模块管理映射表,所述映射表存储与从第一HMB地址到第二HMB地址或内部存储器地址的地址映射有关的信息。
12.根据权利要求9所述的存储设备,还包括:
非易失性存储器,布置在所述存储设备内部并单独地存储与HMB中存储的所述数据相对应的数据,
其中如果确定HMB中存储的所述数据损坏,则通过将所述非易失性存储器中存储的所述数据拷贝到通过第二地址访问的位置,将HMB中存储的所述数据恢复到通过所述第二地址访问的位置。
13.根据权利要求9所述的存储设备,
其中如果确定HMB中存储的所述数据损坏,则在对被确定为损坏的数据执行恢复操作之后,将HMB中存储的所述数据恢复到通过第二地址访问的位置。
14.根据权利要求9所述的存储设备,还包括:
硬件错误确定电路,配置用于将使用第一HMB地址访问的数据被确定为损坏的次数与预定阈值进行比较,
其中所述HMB映射模块根据所述硬件错误确定电路的确定结果,将第一HMB地址映射到第二地址。
15.根据权利要求9所述的存储设备,还包括:
硬件错误信息提供电路,向所述主机提供与所述HMB映射模块的地址映射有关的信息,
其中所述与所述HMB映射模块的地址映射有关的信息包括以下至少一项:与所述HMB中被确定为存在缺陷的第一HMB地址有关的信息,与所述第二HMB地址或所述内部存储器地址有关的信息,以及与使用所述第一HMB地址访问的数据被确定为损坏的次数有关的信息。
16.一种存储设备,包括:
完整性检查模块,配置用于检查与所述存储设备的耦接的主机中的主机存储器缓冲器HMB的第一HMB地址中存储的数据的完整性;
硬件错误确定模块,配置用于将第一HMB地址中存储的数据被确定为损坏的次数与预定阈值进行比较;以及
HMB映射模块,配置用于根据所述硬件错误确定模块的比较结果,将从所述第一HMB地址到HMB中不同于所述第一HMB地址的第二HMB地址的地址映射条目存储在映射表中。
17.根据权利要求16所述的存储设备,
其中所述完整性检查模块进一步配置用于:
将所述数据写入到HMB以及将用于检查所述数据的完整性的校验数据写入到HMB或所述存储设备;
读取HMB中存储的所述数据以及所述校验数据;以及
使用所述校验数据来检查所述数据的完整性。
18.根据权利要求16所述的存储设备,
其中所述HMB映射模块管理存储映射表,所述映射表存储与从第一HMB地址到第二HMB地址的地址映射有关的信息。
19.根据权利要求16所述的存储设备,
其中所述硬件错误确定模块管理计数表,所述计数表存储与使用第一HMB地址访问的数据被确定为损坏的次数有关的信息。
CN201910908067.8A 2018-10-04 2019-09-24 存储设备和操作存储设备的方法 Active CN111008156B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180118282A KR102589402B1 (ko) 2018-10-04 2018-10-04 스토리지 디바이스 및 스토리지 디바이스의 동작 방법
KR10-2018-0118282 2018-10-04

Publications (2)

Publication Number Publication Date
CN111008156A CN111008156A (zh) 2020-04-14
CN111008156B true CN111008156B (zh) 2024-07-02

Family

ID=68210709

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910908067.8A Active CN111008156B (zh) 2018-10-04 2019-09-24 存储设备和操作存储设备的方法

Country Status (5)

Country Link
US (2) US11281549B2 (zh)
EP (1) EP3633517B1 (zh)
KR (1) KR102589402B1 (zh)
CN (1) CN111008156B (zh)
SG (1) SG10201907973QA (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12019786B2 (en) 2020-10-02 2024-06-25 Western Digital Technologies, Inc. Data storage devices and related methods to secure host memory buffers with low latency
CN114461536A (zh) * 2020-11-10 2022-05-10 瑞昱半导体股份有限公司 查找表建立及内存地址查询方法
CN113407120B (zh) * 2021-06-30 2023-02-10 深圳忆联信息系统有限公司 基于hmb的映射表管理方法、装置及计算机设备
KR20230037240A (ko) 2021-09-09 2023-03-16 에스케이하이닉스 주식회사 호스트 장치, 메모리 컨트롤러 및 이를 포함하는 컴퓨팅 시스템
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
US12014080B2 (en) 2021-11-10 2024-06-18 Samsung Electronics Co., Ltd. Memory system using host memory buffer and operation method thereof
US11704236B2 (en) * 2021-11-17 2023-07-18 Western Digital Technologies, Inc. Method and storage system with a layered caching policy
DE102022112533B4 (de) 2022-02-25 2023-09-07 Western Digital Technologies, Inc. Dram-lose ssd mit sicherem hmb für niedrige latenz

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100445134B1 (ko) 2002-01-31 2004-08-21 삼성전자주식회사 플래시 메모리 안정화기능을 구비한 호스트 기기 및 그 방법
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8966176B2 (en) 2010-05-27 2015-02-24 Sandisk Il Ltd. Memory management storage to a host device
US10359949B2 (en) 2011-10-31 2019-07-23 Apple Inc. Systems and methods for obtaining and using nonvolatile memory health information
KR102025180B1 (ko) 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
TWI522804B (zh) 2014-04-23 2016-02-21 威盛電子股份有限公司 快閃記憶體控制器以及資料儲存裝置以及快閃記憶體控制方法
US10268584B2 (en) * 2014-08-20 2019-04-23 Sandisk Technologies Llc Adaptive host memory buffer (HMB) caching using unassisted hinting
TWI584122B (zh) 2015-11-17 2017-05-21 群聯電子股份有限公司 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
KR102466412B1 (ko) * 2016-01-14 2022-11-15 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10725677B2 (en) 2016-02-19 2020-07-28 Sandisk Technologies Llc Systems and methods for efficient power state transitions
US10157004B2 (en) 2016-04-14 2018-12-18 Sandisk Technologies Llc Storage system and method for recovering data corrupted in a host memory buffer
CN107516547A (zh) 2016-06-16 2017-12-26 中兴通讯股份有限公司 内存硬错误的处理方法及装置
KR102667430B1 (ko) * 2016-08-04 2024-05-23 삼성전자주식회사 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법
US10567006B2 (en) * 2016-08-05 2020-02-18 Sandisk Technologies Llc Data relocation
US10445199B2 (en) 2016-12-22 2019-10-15 Western Digital Technologies, Inc. Bad page management in storage devices
KR20200046264A (ko) * 2018-10-24 2020-05-07 삼성전자주식회사 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법

Also Published As

Publication number Publication date
KR102589402B1 (ko) 2023-10-13
CN111008156A (zh) 2020-04-14
US11281549B2 (en) 2022-03-22
US20200110677A1 (en) 2020-04-09
EP3633517A1 (en) 2020-04-08
EP3633517B1 (en) 2024-05-08
KR20200038723A (ko) 2020-04-14
SG10201907973QA (en) 2020-05-28
US11656963B2 (en) 2023-05-23
US20220269572A1 (en) 2022-08-25

Similar Documents

Publication Publication Date Title
CN111008156B (zh) 存储设备和操作存储设备的方法
US10013307B1 (en) Systems and methods for data storage devices to use external resources
US8862808B2 (en) Control apparatus and control method
US6711663B2 (en) Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof
JP4524309B2 (ja) フラッシュメモリ用のメモリコントローラ
US8762661B2 (en) System and method of managing metadata
CN111752487B (zh) 一种数据恢复方法、装置及固态硬盘
US20110113184A1 (en) Data backup method for a flash memory and controller and storage system using the same
TW201839613A (zh) 數據儲存裝置及其操作方法
CN108932107B (zh) 数据存储装置及其操作方法
CN107240420B (zh) 数据存储装置及其操作方法
US10936415B2 (en) Error correction scheme in flash memory
TW201445313A (zh) 記憶體儲存裝置及其還原方法與記憶體控制器
CN112416649B (zh) 高数据可靠性的存储器控制器、存储器系统及操作方法
US11487663B2 (en) Method of operating storage device, storage device performing the same and storage system including the same
KR20210001508A (ko) 메모리 시스템의 MLC(Multi Level Cell)영역에 데이터를 안전하게 저장하기 위한 장치 및 그 방법
JP5300496B2 (ja) 半導体記憶装置、ホスト機器及び半導体記憶システム
CN112035060A (zh) 一种存储介质的错误检测方法、系统及存储系统
CN111223514A (zh) 具有数据保持保护的电子设备及其操作方法
US11074171B2 (en) Data storage device for recovering read errors
US20190243580A1 (en) Dram-based storage device and associated data processing method
US20220171706A1 (en) Memory system and operating method thereof
US11875062B1 (en) Proactive hardening of data storage system
US11954347B2 (en) Memory system and operating method thereof
CN116414299A (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