CN104978281B - 数据存储设备中的数据完整性管理 - Google Patents
数据存储设备中的数据完整性管理 Download PDFInfo
- Publication number
- CN104978281B CN104978281B CN201510334040.4A CN201510334040A CN104978281B CN 104978281 B CN104978281 B CN 104978281B CN 201510334040 A CN201510334040 A CN 201510334040A CN 104978281 B CN104978281 B CN 104978281B
- Authority
- CN
- China
- Prior art keywords
- page
- identifying code
- user data
- memory
- code
- 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.)
- Expired - Fee Related
Links
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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2289—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by configuration 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/52—Protection of memory contents; Detection of errors in memory contents
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- 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/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了数据存储设备中的数据完整性管理。用于数据存储设备中数据完整性管理的装置和方法。根据一些实施例,控制器在主机设备和存储器之间传送用户数据块。每个用户数据块具有相关联的逻辑地址。数据完整性管理器在本地存储器的表格结构中产生并存储每个用户数据块的验证码。数据完整性管理器在主机读取请求期间使用所述验证码以独立地验证所选用户数据块的最新版本由控制器从主存储器检索。
Description
发明概述
本公开内容的各种实施例一般涉及数据存储设备中的数据完整性管理。
在一些实施例中,控制器在主机设备和主存储器之间传送用户数据块(例如,扇区)。每个用户数据块具有相关联的逻辑地址。独立的数据完整性管理器在本地存储器的表格结构中产生和存储每个用户数据块的验证码。数据完整性管理器使用验证码以在主机读取请求期间独立验证所选用户数据块的最新版本正在由控制器从主存储器进行检索。
在进一步的实施例中,输入的用户数据块被接收,用于存储到主存储器,所述用户数据块具有相关联的逻辑地址。响应于输入用户数据块的用户数据内容和相关联的逻辑地址,产生验证码。验证码被存储在本地存储器的表格结构中,以及输入的用户数据块被存储在主存储器中。主机读取请求被随后接收,其请求从主存储器检索输入用户数据块。该验证码从本地存储器的表格结构中进行检索,以及响应于主机读取请求,所检索的验证码用于独立地验证所选用户数据块的最新版本由控制器从主存储器进行检索。
根据如下详细讨论和相应附图,可以理解表征本公开内容的各种实施例的这些和其它特征。
附图说明
图1是根据本公开内容的各种实施例操作的数据存储设备的功能块表示。
图2是根据一些实施例的另一数据存储设备的功能块表示。
图3描绘根据一些实施例可操作的闪速存储器模块。
图4是根据各种实施例的产生并存储支持数据完整性方案的验证码的数据完整性管理器。
图5示出表征为IOEDC(输入/输出误差检测码)值的验证码的产生。
图6是示出在数据写入操作期间由数据完整性管理器执行的步骤的功能块表示。
图7是示出在数据读取操作期间由数据完整性管理器执行的步骤的功能块表示。
图8是可操作以生成由数据完整性管理器使用的各种验证码的加密(密码)块。
图9示出生成IOEDC值并在存储设备的不同存储器位置中存储其不同部分。
图10是数据处理例程的流程图,以提供根据本发明的各种实施例执行的步骤的概述。
图11示出根据一些实施例用于验证表格数据结构的示例性示例。
图12是进入的读取命令处理例程的流程图,以示出根据一些实施例执行的步骤。
图13是缓存访问处理例程的流程图,以示出根据一些实施例执行的步骤。
图14是写入程序处理例程的流程图,以示出根据一些实施例执行的步骤。
图15是写入相同的例程处理的流程图,以示出根据一些实施例执行的步骤。
图16是写入操作完成处理例程的流程图,以示出根据一些实施例执行的步骤。
图17是表格数据检索例程的流程图,以示出根据一些实施例执行的步骤。
图18是数据表格更新例程的流程图,以示出根据一些实施例执行的步骤。
详细描述
本发明涉及数据存储设备,并具体涉及在数据存储设备中管理不同数据版本的方法和设备。
数据存储设备一般操作以在存储器中存储可寻址数据块(例如,扇区)。该设备可以采用数据管理系统以跟踪块的物理位置,以便响应于所存储数据的读取请求随后检索所述块。
某些类型的数据存储设备被配置为每次呈现块用于写入时常规向新的可用物理存储地址写入具有给定逻辑地址(例如,逻辑块地址,LBA)的数据。这样的设备在本文被称为具有虚拟存储器地址映射方案。这些设备通常具有电子“可擦除”存储器,并包括具有可擦写固态存储器(例如,闪存)的固态硬盘(SSD)。虚拟映射设备还可以包括一些硬盘驱动器(HDD)(例如,混合硬盘驱动器),并且还可以包括在不同位置缓存数据的HDD,诸如采用具有搭迭(部分重叠)轨道的旋转介质的那些HDD。
随着时间的推移可能出现如下情况:多个版本的给定逻辑块(扇区)保存在存储器中,版本之一是最新数据,以及其余版本是旧的过时数据。可以生成和维护元数据,以跟踪所存储数据的位置和状态,包括指向其中块的最新版本被存储的位置的指针。
尽管这种基于元数据的修改控制方案通常可操作以保持存储器的准确状态,然而可能不时因各种因素出现错误,包括:所存储元数据的丢失或故障、用于访问元数据的电路中的损坏、固件错误、功率故障期间元数据的不完全更新等。在某些情况下,错误条件可导致旧版本数据返回到主机,而不是最当前版本。
其他形式的数据存储设备通常在相同的位置使用较新的更新版本覆盖数据的旧版本。这种设备在本文中称为具有固定的存储器地址映射方案,且可以包括具有“可重写”存储器的设备,诸如非搭迭(传统)硬盘驱动器,具有可擦写非易失性存储器的固态设备,诸如自旋力矩转移随机存取存储器(STRAM)、电阻式随机存取存储器(RRAM)、铁磁随机存取存储器(FeRAM)、非易失性静态随机存取存储器(SRAM或NvSRAM)、电池支持的动态随机存取存储器(DRAM)和SRAM等。
在这些和其它类型的设备中,给定的物理块地址(PBA)可以被分配特定的逻辑块地址(LBA),使得每次给定块(LBA)的新版本被呈现给存储设备,新版本被重写到当时存在的旧版本上。这通常会导致其中在某时间在存储器中只存在任何特定LBA的单个版本的情况。
然而,该方案也有时会导致不适当的修订检索错误。当写入操作不向预期地址写入新版本的数据时,被称为“重影故障”的错误条件有时可以出现在这种设备中,从而在该位置完整地留下数据的旧版本。数据完整性值(下文有时被称为验证码)可以被形成,以验证数据写入操作。验证码可以基于所存储数据和其他识别信息的组合,诸如LBA值。可以看出:当事实上新版本的数据根本没有写入时,使用验证码操作的验证操作(诸如,读取验证操作)可发出成功写入操作的信号。
因此,本发明的各种实施例一般涉及用于增强数据完整性的设备和方法。本文所公开的数据完整性机制适用于任何数量的不同类型的存储器,包括向存储器的不同位置或向存储器的相同位置写入新版本的数据。本文公开的数据完整性机制协助检测和解决各种错误情况,诸如(但不限于)元数据错误和重影故障。
各种实施例一般操作,以确保响应于数据请求返回最新版本的数据。在一些实施例中,响应于从主机接收将被存储到存储器的输入数据而生成验证码。该验证码被存储在表格结构中,并且独立用于验证所请求存储器的修订状态。
在一些情况下,验证码采用所谓IOEDC(输入/输出错误检测码)值的形式,其通过求和所选块中的数据并组合(诸如经由异或,XOR)求和数据和与所选块相关联的逻辑地址(例如,LBA)而形成。任何数量的其他形式的验证码都可以使用。
在进一步的情况下,验证码的第一部分(诸如,最高有效字节,MSB)被存储在表格结构中,以及验证码的第二部分(诸如,最低有效字节,LSB)被存储在存储器中。可替换地,验证码的完整副本存储在表格以及存储器中。在仍然其它实施例中,验证码的副本只存储在表格中,而不是在存储器中。
数据完整性管理器配置数据完整性表格作为分层结构。用户数据的逻辑块的验证码的组合被组合成页面,每一页存储分配到该页面的逻辑块(例如,LBA)的验证码(或其部分)。每一页进一步设置具有更高级别的验证码以及检错和纠错(EDC)功能。
页面的组合可以累积为所谓的“父”页面,每个父页面保存单个页面的页面级别EDC码。每个父页面也可以具有以EDC码形式的更高级别验证码。最后,为父页面产生主页面,用于为单个父页面存储EDC码。主页面还设置具有主验证码。
以这种方式,可以在数据检索和加载操作期间使用各种代码,以验证单个LBA的单个验证码。数据读取和写入操作可以此后由系统的正常控制器路径(例如,主控制器固件)执行,以及数据完整性管理器可操作为数据流的独立审计员(auditor)。
从浏览图1开始,可以理解各种公开实施例的这些和其它方面,图1表示示例性数据存储设备100。存储设备100包括控制器102和存储器模块104。
当设备100与主机设备(未单独示出)进行交互以存储和检索主机用户数据时,控制器102提供顶层控制和通信功能。应该理解,数据存储设备的控制器往往是相对复杂的,并且可以包含数千个或数百万个逻辑门。存储器模块104提供主机数据的非易失性存储。应该理解,多个其他的电路可以被并入存储设备100,诸如输入/输出(I/O)通信电路、一个或多个数据缓冲器、分层缓存结构、读/写驱动器、本地动态随机存取存储器(DRAM)、不工作的ECC产生电路等。
控制器102可以是可编程CPU处理器,其结合在设备100的计算机存储器中存储的编程一起运行。控制器102可替代地实现为硬件,或控制器的功能可物理地结合到存储器模块104之中。
图2是根据一些实施例的另一数据存储设备110的功能块图。该设备110包括控制器112、缓冲器114、闪速存储器模块116和盘存储器118。和之前一样,其他模块可以按要求包括在内。
如在图1中,控制器112执行设备110的顶层控制功能。缓冲器114可以是易失性或非易失性的,并在数据传输(读/写)操作期间提供主机数据的临时储存,以及由控制器112所使用的程序步骤的存储(例如,装载的控制器固件)。
闪速存储器模块116提供可擦除非易失性闪速存储器单元,用于用户数据、固件和系统参数(例如,元数据等)的存储。该闪速存储器单元可布置在NOR非配置(NOR闪存)、NAND配置(NAND闪存),或两者中。盘存储器118包括由读取/写入传感器的对应阵列访问的一个或多个可旋转磁记录介质。
设备110的特征在于混合驱动,从而使较高优先级的用户数据块可以存储在相对更快访问的闪存存储器模块116中,以及较低优先级用户数据块可以被存储在相对较慢访问的盘存储器118中。
应当理解,除了闪速存储器模块116,“常规”HDD可具有与由图2提出的相似结构,以及通过省略盘存储器118,SDD可具有如由图2提出的类似配置。其它存储器配置可包括单独或与闪速存储器模块116和盘存储器模块118中的一个或两个结合使用的可重写存储器模块(例如,STRAM、RRAM、PCM、FeRAM,这些和/或其它类型的固态存储器的混合物等)。图1-2因此示出根据本公开内容管理的各种不同类型的存储器。
在这些和其它形式的设备中,具有相同逻辑块地址(LBA)的多个版本修订等级)的块(例如,扇区)可以存储在不同的物理存储器位置中。例如,在图2中,在设备110的操作期间的不同时间,不同版本的相同用户数据块可被存储在缓冲器114、闪速存储器模块116和/或盘存储118中。类似地,多个版本的相同块可被存储在相同存储设备的不同位置(例如,闪存存储器模块116中的多个版本,等)。
图3示出大致类似于图2中的闪速存储器模块116,闪速存储器模块120的一部分的逻辑表示。该模块120利用在NAND中配置的闪速存储器单元,所述NAND中配置可由各控制线(未单独表示)存取。存储器单元被布置成多个擦除块122。块122表示可在一次被擦除的存储器单元的最小增量。复数个块122可以被布置成较大的多块碎片收集单元(GCU,其中之一被表示在124),其被擦除并分配作为单元。
每个块122具有所选数量的存储单元的行。数据以页面的形式被存储到行。示例性擦除块尺寸可以是128行的量级,每行存储8192个字节。擦除块122的其他尺寸和安排都可以使用。
读取、写入和删除(R/W/E)操作由R/W/E电路126对存储器120执行,所述R/W/E电路126与设备控制器127进行通信。可将元数据顺序装载到相邻非易失性存储器(例如,DRAM)128的元数据表128中,用于在读/写/擦除操作期间使用以跟踪数据的状态和位置。
因为图3中的示例性闪速存储器单元需要在新数据向其写入之前擦除,它对R/W/E电路126是常见的,例如在存储器120内的不同位置中写入共享共同LBA值的块的更新版本。每当主机提供写入命令以写入所选块的新的连续版本时,该设备将数据写入到存储器120中的下一个可用页面。
块的最近存储版本表示“当前”数据,以及所有以前存储的版本构成旧的“过时”数据。元数据利用前向指针(通常)以使得系统响应于特定LBA的读取请求而定位数据的当前版本。这在图3中对于具有逻辑地址LBA X的所选块示出,其中五个不同的版本已被存储到存储器120。
版本5(v5)表示LBA X的块数据的当前最近存储的版本,以及元数据将理想地指向该位置。也就是说,在正常的条件下,响应于LBA X的读请求,v5数据将被返回到主机。其余版本v1-v4表示LBA X的较旧的过时数据,并且将在块的读取操作期间忽略。应该理解,不同版本的LBA X可以存储不同的数据集,每一个后来出现的版本与每个早期的连续版本相比已诸如由主机应用进行修改。但是这不是必需的,因为存储器中给定块的不同版本可以存储相同的用户数据。
碎片收集操作被设备120周期性地执行,以回收存储陈旧数据的CCU 124。碎片收集操作发生在后台中并且可以在适当的时间安排,诸如低主机I/O活动的空闲期间,或当可用于存储的空闲页量低于选定阈值时。当所选GCU 124中的大部分或所有数据确定为陈旧时,碎片收集过程将迁移当前数据到新的GCU、擦除所选GCU、更新元数据,并将删除的GCU放回可用块的分配池。在擦除操作之前,块中的任何当前数据将被复制到新分配的块。多个GCU可以组合在一起并且根据需要同时进行擦除操作。
虽然正在进行的碎片收集操作往往会删除给定块的旧的过时版本,可以设想,多个版本中的至少一些块可在任何给定时间持久在存储器120中。相对较高优先级的数据(“热”数据)是特别有可能发生的,它在给定的时间间隔受到相对较高数量的写和/或读访问操作。
如上所述,当图3的存储器120或图1-2讨论的任何其他示例性存储器存储给定块的多个版本以及元数据(或其他数据管理方案)不正确地指向块的最新版本时,问题可因而出现。例如,再次参考图3,该元数据表可标识LBA X的最新元数据条目对应于版本4(v4),而不是最当前版本5(v5)。在这种情况下,R/W/E电路126可不正确地向主机返回旧的v4数据,而不是最当前的v5数据。
为了减少这些和其他类型的数据完整性错误的发生,本公开内容的各个实施例引入了数据完整性管理器130的使用,如图4中一般所描绘地。数据完整性管理器130可以用硬件或软件(例如,固件)来实现,和通常如下面所解释地操作,以在数据传输操作期间提供修订验证。在一些实施例中,管理器130形成由设备控制器使用的编程的一部分,但它是独立模块,并独立于控制器代码(在本文中称为主控制器固件132)的其余部分进行操作。
将被写入到存储器的所选块的数据以及相关的逻辑地址(例如,LBA)被提供到数据完整性管理器130。管理器130生成验证码(VC),用于由主控制器固件132进行处理。管理器130进一步向单独存储器134中的表格结构提交验证码。
在一些情况下,验证码可以采取IOEDC(输入/输出错误检测码)的形式。可以如图5所示,产生IOEDC。具有特定LBA值的数据块140从主机设备提供用于存储。块数据140暂时存储在本地缓存中。该数据可以构成选定数目的字节,诸如512字节、4096字节等等。
可以通过将输入块数据的各个8位字节卷积在一起生成数据错误检测码,诸如循环冗余码(CRC)值142。使用合适的组合逻辑函数(诸如,异或(XOR))将CRC 142与卷积LBA值144组合以产生IOEDC值。在一些实施例中,LBA值144是块的逻辑块地址号的散列,使用和IOEDC值相同宽度(位)的散列算法。可替换地,输入数据块140可以直接与逻辑块地址或LBA值144CRC一起以产生IOEDC值。应该理解,其他类型的代码值都可以使用。
IOEDC是卷积扇区的逻辑地址和数据的LBA种子检错码,以为数据提供误差检测和校正的等级。可以设想,图5中的IOEDC值144具有2个字节(16位)的长度,尽管可以使用其它尺寸。
再次参考图3,将注意到,五个版本的LBA X的每一个的IOEDC值关联于相关块数据之间的差异是不同的,但每个IOEDC值中的LBA分量将是相同的。由此,从每个这些IOEDC码字提取LBA种子值将全部产生相同的LBA值,这有助于确定已识别正确的LBA值。但是,这并不有助于确认是否检索到数据的正确版本。
因此,图6示出另一个存储设备150的相关部分,以示出在向存储器写入所选的块的数据写入操作的情况下图4的数据完整性管理器130的操作。数据完整性管理器的验证码发生器152生成验证码(VC),为了便于当前的讨论,其将构成如在图5中的IOEDC值。如前面所指出的,这仅仅是示例性的而不是限制性的,因为可以产生并根据需要使用任何数目的不同形式的验证码。
IOEDC值存储在数据完整性表格154中并被转发到数据路径处理模块156(在图4的主控制器固件132的控制下),数据路径处理模块156处理并最终将输入数据存储到存储器158。在一些情况下,该IOEDC也可存储到存储器158。元数据生成器160生成元数据以描述所存储数据的位置和状态。
图7示出图6的存储设备150在后续的读取操作期间的附加特征,以将所存储的数据返回到请求主机设备。数据请求被提供给元数据查找块162,其(标称)标识其中最新版本的数据被存储的物理地址(例如,物理块地址,PBA)。从所识别的位置检索数据并将数据转发给存储器验证码(VC)处理块164,其基于所检索到的数据产生验证码(“所计算的VC”)。使用用于产生初始VC的相同算法产生所计算的VC(参见例如图5)。可以预期,块164在主控制器固件的控制下,并可构成数据路径处理块156的一部分(图6)。
数据请求也被转发到数据完整性管理器,所述数据完整性管理器从数据完整性表格154检索相关LBA的初始验证码(“表格VC”)。比较模块166将所计算的VC和表格VC作比较,并在某些情况下,还比较已存储到存储器中的验证码(“所检索的MEM VC”)。如果代码匹配,所请求数据的传送被授权。
以这种方式,数据完整性管理器(130,图4)操作作为正常设备数据路径处理系统的独立审计员。这提供了独立运作以验证数据的两个独立的硬件/固件段。这种独立性确保系统中的一个部分中的管理不善被另一部分检测。可以设想,该数据完整性管理器将紧密耦合主机逻辑,并可访问可用DRAM存储器的专用部分(例如,图2中的缓冲器114)。
虽然IOEDC值已被公开作为示例,但任何合适的算法可用于生成验证码。图8示出使用所选算法(密码)将输入数据(“明文”)转换成输出数据(“密文”)的一般加密块168。用户数据可通过加密块168被传递,以及一部分输出可以用作IOEDC。输入键值(例如,LBA)可用作转化处理的一部分。可以使用任何数量的合适的密码。
类似于上述的那些,另一个系统被示在图9中的170。该系统170包括IOEDC发生器模块172,其响应于所选择块的输入数据和相关联的LBA值而产生2字节的值IOEDC。在系统170中,所产生的IOEDC值的第一部分,诸如最高有效字节(MSB)174(例如,第一个8位)被存储在数据完整性表格154中。
所产生的IOEDC值的第二部分,诸如最低有效字节(LSB)176(例如,最后8位)被存储在存储器158中。在本示例中,可将整个IOEDC提供给数据路径处理块(156,图6),但只有一部分实际上存储在存储器158中。但是,在其他实施例中,没有IOEDC的部分(或其他生成的验证码)被存储在存储器中。
图10提供数据处理例程200的流程图,以提供上述讨论的总结。为了本讨论的目的,可以预期,在由图6-7提出的写入和读取操作期间,该例程200使用图5中产生的IOEDC值。应该理解,例程200仅是示例性的,以及各种步骤可以以不同的顺序被修改、追加、执行等。
在步骤202,首先接收要被存储在存储器中的输入数据。输入数据被布置为一个或多个块,每个具有相关联的逻辑地址(例如,LBA)。步骤204,对于每个块,块数据和LBA值用于产生输入写入数据的第一验证码(表格VC)。步骤206,将第一验证码存储在表格结构(诸如,表格154)中。步骤208,在向其应用合适处理之后,可将第一验证码或其一部分以及输入写入数据另外地存储在存储器(例如,存储器158)中。
在步骤210,随后从进行请求的主机设备接收读取请求,以检索先前存储的数据。在步骤212,如由系统所指示地,元数据查找操作(方框162,图7)标识当前版本的数据被存储的物理位置。在步骤214,检索所标识的位置(物理块地址)处的数据。
在步骤216,使用检索到的数据生成第二验证码(所计算的VC),如由框164(图7)如上所述。在步骤218,从表格中检索该第一验证码(表格VC),以及根据需要,在步骤220,从存储器中检索所存储的验证码(检索的MEM VC)。
如判定步骤222所指示地,执行比较操作。如果代码匹配,如在步骤224所指示地,数据传送操作被授权。步骤226,如果一个或多个代码不匹配,则将错误状态返回到主机。可替换地或另外地,如果代码不匹配,则采取进一步的纠正步骤,包括重复读取操作、执行新的元数据搜索、重新计算一个或多个验证码等。
图11-18提供根据一些实施例上面所讨论的数据完整性方案的特定实施方式的细节。将会理解,本文所讨论的数据结构和例程可以容易地适用于多种环境和验证码格式。
图11一般示出示例性的数据完整性表格结构230。表格结构230在系统中为每个LBA存储单个字节(8位)的验证码,诸如以上在图9中所讨论的16位IOEDC值的MSB。
LBA的连续组被布置成页面232,诸如4096 LBA的连续组合。以这种方式,第一页面(页面0)存储LBA 0到LBA 4095的验证码,第二页面(页面1)存储LBA 4096至LBA 8191的验证码,等等。作为参考,LBA 0的8位校验码被标识为VC0,LBA 1的1位验证码是VC1,等等。因为每个验证码是单个字节(8位),它遵循整个页面的内容尺寸是4096字节。
产生页面级校验码以保护每一页的内容。第一页面(页面0)的验证码被记为VCP0。任何合适的错误检测码算法(诸如,CRC)可用于生成页面级验证码。在一些情况下,页面级验证码采用里德-所罗门码的形式,使得所述码可以检测并校正页面内容中的所选数量的错误。其他形式都可以使用。在一个实施例中,页面级验证码是32位(4字节)的值。
页面(包括页面级验证码)被存储在合适的非易失性存储器中,诸如可用闪速存储器,并当需要时检索到本地易失性RAM。每次如下解释地加载页面时,EDC验证可以自动执行。
图11进一步示出多个父页面234。每个父页面为关联的页面组合积聚页面级验证码。在图11的示例格式中,每个父页面为1024个连续页面存储页面级验证码。每个父页面234的总体尺寸(在存储父页面所需的数据容量方面)可以被设定为标称地等于每一页232的整体尺寸(如在图11中),或者可以是一些其它合适的尺寸。
为每个父页面生成父页面级验证码。作为参考,用于第一父页面(父页面0)的父页面级验证码表示为VCPP0。和以前一样,任何适合的算法可用于产生父页面级验证码,包括但不限于CRC码或里德-所罗门码。和以前一样,父页面级验证码可适于使得检测并校正多达数个检测位错误。在一个实施例中,父页面级验证码也是32位(4字节)字。
在236,呈现主页面。主页面236存储每个父页面的父页面级验证码。主页面236还总结出整体的主EDC值(VCMaster)。与以前一样,VCMaster是EDC并可以采取CRC或ReedSolomon码的形式或一些其他形式。在一个实施例中,主EDC值也是32位(4字节)字。
每个相应的数据结构被存储在非易失性存储器中并当需要时加载到易失性RAM。EDC值的各个层次确保数据完整性。举一个例子,访问所选页面(在这种情况下的页面0)可涉及检索主页面236。使用VCMaster代码验证主页面236的内容。这将验证所有的父页面级验证码,包括VCPP0,父页面0的验证码。
接下来检索所选页面的父页面(父页面0)的验证码并使用VCPP0来验证该验证码。验证可以包括将来自主页面236的所检索的值和从父页面所检索的值作比较。也可以基于所检索的数据计算新的父页面级验证码,并与父页面和主页面中的一个或两者的所存储值作比较。
父页面(父页面0)的验证确认所选页面(页面0)的页面级验证码(VCP0)有效。然后可以检索页面232,并且可将父页面的认证码与所检索页面的所检索(和/或计算的)代码进行比较。
最后,可识别(例如,LBA0)给定块的LBA,并且可以从表格结构中检索相关联的验证码(例如,VC0),并用于如上所述地验证数据块的最新版本被返回到主机(参见例如图10)。
总之,最低级别(页面232)的每一个包括4096字节,每个条目构成每个LBA的IOEDC数据的单个字节(8位)。页面级验证码可以是4字节(32位)EDC值,它们被存储在父页面234中。虽然在各个页面232和主页面236之间仅示出单个中间级别,但当需要时可插入任意数量的其他级别。
每个父页面234的每4字节EDC被存储在主页面236中并受到4字节EDC(VCMaster)保护。可以设想,主页面总是通过功耗保留,诸如在独立于主大容量存储器(例如NOR闪存等)的非易失性存储器中。
应该理解,给定数据完整性表格的实际尺寸将取决于多种因素,包括存储设备的块尺寸和整体数据容量。可以预期,整个表格可装载到可用的易失性DRAM,并且主页面足够小以适于可用的易失性SRAM或寄存器。表格一示出图11的各种组件在不同的操作环境下的示例性尺寸。
表格1
其它的设备数据容量和块尺寸将提供对应的值。在表格1中所示的存储器尺寸是2的幂,因此,B=字节(8位),KB=1024B,MB=1048576B等。驱动存储容量指设备的额定整体数据存储能力,不考虑过度配置、备用块等。从主机的角度来看,块尺寸是各个块(扇区)的尺寸(例如,不包括开销处理位、ECC位等的和每个LBA相关的用户数据位的数量)。所有VC指存储来自表格结构的所有验证码所需的总的存储容量。父页面是存储所有的父页面(在图11中的234)所需的总的所需存储容量。主页面是存储主页面所需的总的所需的存储容量(在图11中的236)。
可以看出,该数据完整性数据结构的整体尺寸对于包括SSD、HDD、混合驱动器等的多种不同类型的存储设备是合理管理的。
在正常条件下,可以预期,至少主页面和每个父页面可在初始化期间加载到本地RAM、根据需要验证、并在系统供电操作期间保持在RAM中。对主页面的更新可被记载日志,使得从一个修订到下一个的变化被跟踪并存储在非易失性存储器中。然而,可以预期,由于主页面相对小的尺寸,一旦损失系统电源,则可将整个更新页面写入非易失性存储器。页面脏位的表格被保持,以及脏数据的完整性页面可以一旦电源损耗则写到(scram)非易失性存储器或一旦电源恢复则重建。
取决于块尺寸和存储设备容量,最低页(图11中的VC页232)可以在设备操作期间全部保持在非易失性RAM中或按需要加载到RAM。响应于检测到的错误,可以重建表格结构。与数据完整性表格结构相关的经常性的数据完整性错误可以提供该设备的早期故障可靠性问题的指示,导致主机通知用于重建或更换。
数据完整性管理器可以操作作为单独的控制器,其与正常控制器固件(系统控制器)进行通信。页面进出局部DRAM存储器的移动可通过向系统控制器发出的命令来执行。数据完整性管理器可被配置为通信页面的目标DRAM地址、页号、以及操作是否是写入或读出。该系统控制器存储或读取所请求的页面,并通信回数据完整性管理器。当获取网页时出现的介质错误不是数据完整性错误,但确实需要页面重建操作。如果特定的页面不能成功重建,故障页面覆盖的所有数据都被迫进入不可恢复的状态。
图12-18提供由数据完整性管理器执行的各种详细流程图,所述数据完整性管理器使用诸如图11的230的表格结构。图12是和新的输入读取命令的处理相关联的例程300的流程图。该例程300一般进行操作以为一个或多个相关联的LBA(在这种情况下,LBA X)从数据完整性表格中读取并验证页面数据,用于准备上面所描述的比较操作。
该例程开始于步骤302,其中,数据完整性管理器(下文的“DIM”)为LBA X处理IOEDC值的请求。判定步骤304确定X是否是有效的LBA数字。如果是,判定步骤306确定块(LBA X)是否已被加载到缓冲存储器,用于由DIM进行处理。判定步骤308确定LBA X的IOEDC值是否已经存在于本地存储器中;若否,则在步骤310,检索该页面。此后,在步骤312,检索IOEDC字节并将其存储在高速缓冲存储器中,并且该过程结束于步骤314。
图13是示出当TIM(也称为“主机块”)访问TIM缓存中的数据时执行的步骤的例程320。在步骤322,主机块从DIM缓存请求LBAX的IOEDC字节。判定步骤324确定LBAX的IOEDC字节是否装载在DIM缓存中。如果是这样,则在步骤326返回IOEDC字节。在步骤328,发出下一个LBA(例如LBAX+1)的提取请求,并根据图12的例程300进行处理,并且在步骤330,例程结束。然而,如果用于LBA X的IOEDC未被加载在DIM缓存中,则例程从判定步骤324进行到步骤330,在步骤330中错误中断被断言。
图14示出例程340以指示在写入操作期间执行的步骤。在步骤342,接收要被写入到主存储器的写入数据。在步骤344,接收IOEDC、LBA号和,根据需要的附加的标签值,以及在步骤346,将这些元素附加到未决写入队列,该队列等待写入存储器。处理然后在步骤348结束。
图15示出例程350,用于在适用于多个LBA的写入相同操作期间的步骤(例如,重复将相同的用户数据写入到多个连续LBA)。在步骤352,接收部分IOEDC(用户数据上的EDC,例如在图5中的142)、LBA数量、LBA计数和标签数据。在步骤354,对于计数LBA生成IOEDC字节,并将所生成的IOEDC字节添加到写入队列,在此之后,处理在步骤356结束。
图16示出另一种例程360,示出其中写入(程序)操作完成(例如,输入的写入数据已经被写入到存储器)以及写入完成状态被转发到主机系统的步骤。在步骤362,主机系统发送标记X的状态(例如,如图14的344所产生的)。判定步骤364确定写入操作是否成功。如果是,在步骤366,对于和标签相关的未决写入队列中的所有条目更新IOEDC字节,并在步骤368,处理结束。否则,在步骤370,如果写入不成功,则清除未决写入队列中的所有标签X条目。
图17是例程380,以示出从数据完整性表格中对所选LBA(LBA X)检索相关的IOEDC页面。在步骤382,对IOEDC页面的请求被转发给DIM。判定步骤384确定关联页面是否在本地RAM存储器中。如果不是,则在步骤386请求页面。判定步骤388确定LBA X的父页面是否被加载到RAM。如果不是,则在步骤390,执行用于传送父页面的请求。
判定步骤392使用主页面提供父页面数据的数据验证检查。如果发生了不匹配,则在步骤394,声明数据完整性错误情况,并采取适当的纠正操作。
一旦父页面成功转载到RAM,判定步骤396进一步利用父页面执行最低级别页面数据的数据验证检查。如果不匹配发生,则在步骤398,声明错误情况,并采取相应的纠正操作,包括重建页面数据。另一方面,如果最低级别页面数据被验证,LBA X的IOEDC值被验证,并可用于修订级别认证,并且例程在步骤399结束。
图18是例程400,用于请求更新LBA X的给定IOEDC字节(值)。例如,作为其中该块数据的最新版本被写入到主存储器的数据写入操作的结果,该修订可发生。
该例程包括以下步骤:步骤402,从表格向RAM检索当前最低级别的页面,并根据需要验证内容。在步骤404,在最低级别页面中,接下来更新LBA X的OEDC字节,并且重新计算并存储最低级别页面的EDC(页面级验证码)。
在步骤406,将新的页面级验证码写入到相应的父页面,并且产生新的父页面级验证码并将其存储在父页面中。同样,在步骤408,将新的父页面级验证码写入到主页面,以及在步骤410,产生并存储主页面的新的主EDC值。在步骤412,老版本的最低级别页面、父页面和主页面随后被标记为“脏”(陈旧或较老版本的数据),并当合适时丢弃。
最后,应该指出,在数据存储设备的初始化时,在其使用寿命的开始,由主机设备提供的用户数据块的数目可相对有限。在该状态下,主存储器(例如,闪速存储器模块116、120,盘存储器118等)和本地存储器中的表格结构(例如,数据完整性表格154等)可分别稀少地填充用户数据块和相应的验证码。
在某些情况下,伪数据可用于生成最低级别页面232、父页面234和主页面236的初始验证码。随机或伪随机数生成器可用于产生这样的伪数据,或“初始表值”的主集合可以被加载。可替换地,存储所存储数据的有效性的位可以被保存在验证码表中。在认证存储设备期间所使用的制造处理可用于在本地存储器中产生最初填充的表格结构,其反映写入到主存储器的物理位置的各种“图样”。
可以预期,不管其中数据完整性表数据结构最初填充的方式,当新的用户数据传送到主存储器时,有效的用户数据块验证码和相应的页面/主级别验证码根据需要被实时生成和更新。每次存储设备断电时,包括备用电源(备用电池、电容器、旋转盘的能量等)的充足资源将被提供,以保证整个表结构或其最重要的部分(例如,主页面和父页面)被安全地写入非易失性存储器(包括主存储器),以允许一旦设备重新初始化的充分和成功恢复。
虽然已经按照前述实施例阐述各种操作环境,应当理解,所公开的主题可适于实质上任何形式的存储器和任何形式的操作环境,包括手持式设备、网络通信和传输系统、大容量存储系统、基于RAID(独立磁盘冗余阵列)的系统、云计算环境、分布式对象存储系统等。
可以理解,尽管本发明的各种实施例的许多特征和优点在前述的描述进行了阐述,这种描述仅是示例性的,并且在本公开的原理内对细节进行改变,尤其是部件的结构和布置,其全部范围由其中表达所附权利要求的条款的一般广义意义所指示。
Claims (17)
1.一种用于数据完整性管理的装置,包括:
控制器,用于在主机设备和存储器之间传送用户数据块,每个用户数据块具有相关联的逻辑地址;以及
数据完整性管理器,用于在本地存储器的表格结构中生成并存储每个用户数据块的验证码,并在主机读取请求期间使用所述验证码以独立地验证被选择的用户数据块的最新版本已由所述控制器从所述存储器正确检索,
其中,响应于所述块的用户数据内容和所述块的相关联的逻辑地址,对于每个用户数据块生成验证码,
其中,每个用户数据块的验证码包括不重叠的第一和第二部分,其中仅仅所述验证码的第一部分被存储在所述本地存储器的表格结构中,并且仅仅所述验证码的第二部分被存储到主存储器。
2.根据权利要求1所述的装置,其中,所述第一或第二部分中被选择的一者包括所述验证码的最高有效字节(MSB),并且所述第一或第二部分中的余下一者包括验证码的最低有效字节(LSB)。
3.根据权利要求1所述的装置,其中,所述存储器是被表征为虚拟映射存储器的主存储器,使得具有共同逻辑地址的用户数据块的每个连续接收版本被写入到所述存储器中的新的不同物理位置。
4.根据权利要求3所述的装置,其中,所述主存储器是在使用部分重叠数据轨道的闪速存储器或可旋转磁性记录介质中选择的至少一个。
5.根据权利要求1所述的装置,其中,所述存储器是表征为可重写存储器的主存储器,因此具有共同逻辑地址的用户数据块的每个连续接收版本被标称写入到所述存储器中的相同物理位置。
6.根据权利要求5所述的装置,其中,所述主存储器是在不重叠轨道的可旋转磁性记录介质、自旋力矩转移随机存取存储器(STRAM)、电阻式随机存取存储器(RRAM)或铁磁随机存取存储器(FeRAM)中选择的至少一个。
7.根据权利要求1所述的装置,其中,所述存储器是主存储器,其具有总数据存储容量以容纳具有N个对应逻辑块地址(LBA)的N个用户数据块,其中N是复数,其中,所述本地存储器中的表格结构被所述数据完整性管理器配置成复数M个最低级别页面,所述M个最低级别页面的每一个存储N LBA的不同顺序子集的对应验证码,并且其中页面级验证码由所述数据完整性管理器生成,以对于存储到每一页面的验证码提供误差检测和校正(EDC)功能。
8.根据权利要求7所述的装置,其中,所述本地存储器中的表格结构进一步被所述数据完整性管理器配置成复数P个父页面,所述P个父页面的每一个存储所述M个最低级别页面的不同顺序子集的页面级验证码,并且其中父页面级验证码由所述数据完整性管理器生成以对于存储到每个父页面的页面级验证码提供EDC功能。
9.根据权利要求8所述的装置,其中,所述本地存储器中的表格结构进一步被所述数据完整性管理器配置成主页面,其为所述P个父页面的每一个存储父页面级验证码,其中主验证码由所述数据完整性管理器生成并并入主页面,以为存储到所述主页面的父页面级验证码提供EDC功能。
10.根据权利要求1所述的装置,其中,由所述数据完整性管理器产生的验证码被表征为IOEDC(输入/输出错误检测码)值,其根据相关联的用户数据块的用户数据内容和相关联的用户数据块的逻辑地址计算得出。
11.根据权利要求1所述的装置,其中,所述数据完整性管理器通过从所述本地存储器的表格结构中检索所存储的验证码来独立地验证所选用户数据块的最新版本由所述控制器检索,响应于从所述主存储器所检索的用户数据块而产生新的验证码,并将所检索的验证码和所产生的新验证码作比较。
12.一种用于数据完整性管理的方法,包括:
接收输入的用户数据块,所述用户数据块具有相关联的逻辑地址,用于存储到主存储器;
响应于所述输入用户数据块的用户数据内容和相关联的逻辑地址,产生验证码;
在本地存储器的表格结构中存储所述验证码以及在主存储器中存储所述输入用户数据块;
顺序接收主机读取请求以从所述主存储器检索所述输入用户数据块;
从所述本地存储器的表格结构中检索所述验证码;以及
响应于主机读取请求,使用所检索的验证码以独立地验证所选用户数据块的最新版本已由控制器从所述主存储器检索;
其中,所述验证码被划分为不同的第一和第二部分,其中所述第一部分而非所述第二部分存储在所述本地存储器的表格结构中,以及其中所述第二部分而非所述第一部分存储在所述主存储器中。
13.根据权利要求12所述的方法,其中,使用所检索的验证码以独立地验证所选用户数据块的最新版本已由控制器从所述主存储器检索包括:响应于从所述主存储器所检索的用户数据块而产生新的验证码,并将所检索的验证码和所产生的新验证码作比较。
14.根据权利要求12所述的方法,其中,所述主存储器具有整体数据存储容量以容纳具有N个对应逻辑块地址(LBA)的N个用户数据块,其中,N是复数,以及其中所述方法进一步包括:
配置所述本地存储器中的表格结构以包括复数M个最低级别页面,所述M个最低级别页面的每一个为N LBA的不同顺序子集存储对应的验证码;
响应于存储到每个页面的所述验证码,产生页面级验证码;以及
使用所述页面级验证码以认证存储到每个页面的所述验证码。
15.根据权利要求14所述的方法,进一步包括:
配置所述本地存储器中的表格结构以包括复数P个父页面,所述P个父页面的每一个为所述M个最低级别页面的不同顺序子集存储页面级验证码;
响应于存储到每个父页面的所述页面级验证码,产生父页面级验证码;以及
使用所述父页面级验证码,以认证存储到每个页面的所述页面级验证码。
16.根据权利要求15所述的方法,进一步包括:
配置所述本地存储器中的表格结构以包括主页面,其为所述P个父页面的每一个存储父页面级验证码;
响应于存储到所述主页面的父页面级验证码,产生主验证码;以及
使用所述主验证码,以认证存储到所述主页面的所述父页面级验证码。
17.根据权利要求12所述的方法,其中,所述验证码被表征为IOEDC(输入/输出错误检测码)值,其通过求和相关用户数据块的用户数据内容并执行所求和用户数据内容和相关用户数据块的逻辑块地址(LBA)的异或(XOR)组合而形成。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/244,194 | 2014-04-03 | ||
US14/244,194 US9430329B2 (en) | 2014-04-03 | 2014-04-03 | Data integrity management in a data storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104978281A CN104978281A (zh) | 2015-10-14 |
CN104978281B true CN104978281B (zh) | 2018-03-30 |
Family
ID=54209837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510334040.4A Expired - Fee Related CN104978281B (zh) | 2014-04-03 | 2015-04-03 | 数据存储设备中的数据完整性管理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9430329B2 (zh) |
JP (1) | JP2015201204A (zh) |
CN (1) | CN104978281B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9552252B2 (en) * | 2014-08-25 | 2017-01-24 | Seagate Technology Llc | Methods and apparatuses utilizing check bit data generation |
US9880831B2 (en) * | 2015-11-06 | 2018-01-30 | Storart Technology Co., Ltd. | Field firmware upgrading method and computer-readable medium |
US10031689B2 (en) * | 2016-09-15 | 2018-07-24 | Western Digital Technologies, Inc. | Stream management for storage devices |
US10921991B1 (en) | 2016-12-20 | 2021-02-16 | Amazon Technologies, Inc. | Rule invalidation for a block store management system |
US10268593B1 (en) | 2016-12-20 | 2019-04-23 | Amazon Technologies, Inc. | Block store managamement using a virtual computing system service |
US10809920B1 (en) | 2016-12-20 | 2020-10-20 | Amazon Technologies, Inc. | Block store management for remote storage systems |
US10185507B1 (en) * | 2016-12-20 | 2019-01-22 | Amazon Technologies, Inc. | Stateless block store manager volume reconstruction |
US11507283B1 (en) | 2016-12-20 | 2022-11-22 | Amazon Technologies, Inc. | Enabling host computer systems to access logical volumes by dynamic updates to data structure rules |
KR102347184B1 (ko) * | 2017-05-23 | 2022-01-04 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US10229052B2 (en) | 2017-05-31 | 2019-03-12 | Seagate Technology Llc | Reverse map logging in physical media |
US10587590B2 (en) * | 2017-06-12 | 2020-03-10 | Seagate Technology Llc | Tracking of data erasures |
WO2019049129A1 (en) | 2017-09-07 | 2019-03-14 | Kaminario Technologies Ltd. | DIRECT READ CONTROL IN A DATA STORAGE SYSTEM |
US11218291B2 (en) * | 2018-02-26 | 2022-01-04 | Stmicroelectronics (Rousset) Sas | Method and circuit for performing a substitution operation |
FR3078463A1 (fr) * | 2018-02-26 | 2019-08-30 | Stmicroelectronics (Rousset) Sas | Procede et dispositif de realisation d'operations en table de substitution |
FR3078464A1 (fr) * | 2018-02-26 | 2019-08-30 | Stmicroelectronics (Rousset) Sas | Procede et circuit de mise en oeuvre d'une table de substitution |
US11138069B2 (en) | 2018-06-11 | 2021-10-05 | Seagate Technology, Llc | Providing additional parity for non-standard sized parity data sets |
US10896002B2 (en) | 2018-06-29 | 2021-01-19 | Seagate Technology Llc | Reverse directory structure in a garbage collection unit (GCU) |
US10671531B2 (en) | 2018-07-13 | 2020-06-02 | Seagate Technology Llc | Secondary memory configuration for data backup |
US11283598B2 (en) * | 2019-01-25 | 2022-03-22 | Infineon Technologies Ag | Selective real-time cryptography in a vehicle communication network |
US10891184B2 (en) * | 2019-05-22 | 2021-01-12 | Macronix International Co., Ltd. | Configurable data integrity mode, and memory device including same |
CN111008158B (zh) * | 2019-11-08 | 2023-04-25 | 暨南大学 | 一种基于页面重构与数据温度识别的闪存缓存管理方法 |
KR20210121660A (ko) * | 2020-03-31 | 2021-10-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US20240013589A1 (en) * | 2020-08-24 | 2024-01-11 | Cummins Inc. | Systems and methods for critical data save in electronic control modules |
US12056112B2 (en) | 2021-05-28 | 2024-08-06 | Bank Of America Corporation | Data feed meta detail categorization for confidence |
US12050587B2 (en) | 2021-05-28 | 2024-07-30 | Bank Of America Corporation | Data feed meta detail categorization for confidence |
US11429485B1 (en) | 2021-06-24 | 2022-08-30 | Western Digital Technologies, Inc. | Memories with end-to-end data protection using physical location check |
US11966618B2 (en) * | 2021-08-25 | 2024-04-23 | Western Digital Technologies, Inc. | Purposeful super device imbalance for ZNS SSD efficiency |
US11960753B2 (en) | 2021-08-25 | 2024-04-16 | Western Digital Technologies, Inc. | Solution for super device imbalance in ZNS SSD |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1352769A (zh) * | 1999-06-10 | 2002-06-05 | 贝勒加特投资公司 | 在分离的存储区域中存储数据组的不同版本的装置和更新存储器中数据组的方法 |
US6457021B1 (en) * | 1998-08-18 | 2002-09-24 | Microsoft Corporation | In-memory database system |
US8397101B2 (en) * | 2010-06-03 | 2013-03-12 | Seagate Technology Llc | Ensuring a most recent version of data is recovered from a memory |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0520197A (ja) * | 1991-07-09 | 1993-01-29 | Hitachi Ltd | 記憶管理システム及びマイクロプロセツサ |
US5835601A (en) * | 1994-03-15 | 1998-11-10 | Kabushiki Kaisha Toshiba | File editing system and shared file editing system with file content secrecy, file version management, and asynchronous editing |
US5805799A (en) * | 1995-12-01 | 1998-09-08 | Quantum Corporation | Data integrity and cross-check code with logical block address |
US5761677A (en) * | 1996-01-03 | 1998-06-02 | Sun Microsystems, Inc. | Computer system method and apparatus providing for various versions of a file without requiring data copy or log operations |
US6964008B1 (en) * | 1999-11-12 | 2005-11-08 | Maxtor Corporation | Data checksum method and apparatus |
US7003621B2 (en) * | 2003-03-25 | 2006-02-21 | M-System Flash Disk Pioneers Ltd. | Methods of sanitizing a flash-based data storage device |
JP2006107311A (ja) * | 2004-10-08 | 2006-04-20 | Hitachi Ltd | ディスクアレイ装置およびその制御方法 |
US7752381B2 (en) * | 2005-05-24 | 2010-07-06 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
JP5001617B2 (ja) * | 2006-09-29 | 2012-08-15 | アイシン・エィ・ダブリュ株式会社 | 地図更新データ供給装置、バージョンテーブル、地図データ更新システム、地図更新データ供給プログラム、及び地図データ更新プログラム |
US7873878B2 (en) * | 2007-09-24 | 2011-01-18 | International Business Machines Corporation | Data integrity validation in storage systems |
US8407688B2 (en) * | 2007-11-27 | 2013-03-26 | Managelq, Inc. | Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets |
JP2010049394A (ja) * | 2008-08-20 | 2010-03-04 | Nec Corp | 磁気ディスクの書き込み障害の検出と回復を行うディスクアレイシステム、方法およびプログラム |
JP4577439B2 (ja) * | 2008-11-07 | 2010-11-10 | ソニー株式会社 | 販売支援システム、販売支援方法、及び販売支援プログラム |
US20100325363A1 (en) * | 2009-06-22 | 2010-12-23 | Microsoft Corporation | Hierarchical object caching based on object version |
US8255617B2 (en) * | 2010-01-26 | 2012-08-28 | Seagate Technology Llc | Maintaining data integrity in a data storage device |
US8364886B2 (en) * | 2010-01-26 | 2013-01-29 | Seagate Technology Llc | Verifying whether metadata identifies a most current version of stored data in a memory space |
US8381075B2 (en) * | 2010-03-18 | 2013-02-19 | Texas Instruments Incorporated | Low-power redundancy for non-volatile memory |
US8533170B1 (en) * | 2010-09-21 | 2013-09-10 | Amazon Technologies, Inc. | System and method for determining the latest version of a stored data object |
US20130326114A1 (en) * | 2012-05-30 | 2013-12-05 | Seagate Technology Llc | Write mitigation through fast reject processing |
US9779027B2 (en) * | 2012-10-18 | 2017-10-03 | Oracle International Corporation | Apparatus, system and method for managing a level-two cache of a storage appliance |
US9043668B2 (en) * | 2013-02-08 | 2015-05-26 | Seagate Technology Llc | Using ECC data for write deduplication processing |
-
2014
- 2014-04-03 US US14/244,194 patent/US9430329B2/en active Active
-
2015
- 2015-04-03 CN CN201510334040.4A patent/CN104978281B/zh not_active Expired - Fee Related
- 2015-04-03 JP JP2015076902A patent/JP2015201204A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6457021B1 (en) * | 1998-08-18 | 2002-09-24 | Microsoft Corporation | In-memory database system |
CN1352769A (zh) * | 1999-06-10 | 2002-06-05 | 贝勒加特投资公司 | 在分离的存储区域中存储数据组的不同版本的装置和更新存储器中数据组的方法 |
US8397101B2 (en) * | 2010-06-03 | 2013-03-12 | Seagate Technology Llc | Ensuring a most recent version of data is recovered from a memory |
Also Published As
Publication number | Publication date |
---|---|
US20150286524A1 (en) | 2015-10-08 |
JP2015201204A (ja) | 2015-11-12 |
CN104978281A (zh) | 2015-10-14 |
US9430329B2 (en) | 2016-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104978281B (zh) | 数据存储设备中的数据完整性管理 | |
US8255617B2 (en) | Maintaining data integrity in a data storage device | |
AU2017228544B2 (en) | Nonvolatile media dirty region tracking | |
JP6820248B2 (ja) | 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能媒体 | |
US9411717B2 (en) | Metadata journaling with error correction redundancy | |
KR101573370B1 (ko) | 비휘발성 매체에 데이터를 저장하기 위한 방법 및 시스템 | |
US8880843B2 (en) | Providing redundancy in a virtualized storage system for a computer system | |
US8364886B2 (en) | Verifying whether metadata identifies a most current version of stored data in a memory space | |
TWI645404B (zh) | 資料儲存裝置以及非揮發式記憶體操作方法 | |
US10481988B2 (en) | System and method for consistency verification of replicated data in a recovery system | |
KR101870521B1 (ko) | 스토리지 저널링을 개선하는 방법 및 시스템 | |
CN108399134A (zh) | 存储装置及存储装置的操作方法 | |
CN106708425A (zh) | 分布式多模存储管理 | |
CN107003942A (zh) | 对用于增强存储设备的性能和持久性的解除映射命令的处理 | |
CN102124527A (zh) | 用于检测和替代失效的数据存储器的装置、系统和方法 | |
CN106168920B (zh) | 控制包括只读闪速数据存储设备的独立磁盘冗余阵列 | |
US10922234B2 (en) | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive | |
JP2003167689A (ja) | ディスクアレイ装置及び同装置におけるパリティ処理方法 | |
US20180173438A1 (en) | Efficient data consistency verification for flash storage | |
US20170010810A1 (en) | Method and Apparatus for Providing Wear Leveling to Non-Volatile Memory with Limited Program Cycles Using Flash Translation Layer | |
US20230032639A1 (en) | Hot data management in a data storage system | |
US10289321B1 (en) | Bad block table recovery in a solid state drives | |
CN108141229A (zh) | 损坏数据的高效检测 | |
CN103544995B (zh) | 一种坏道修复方法及装置 | |
US11755223B2 (en) | Systems for modular hybrid storage devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180330 Termination date: 20210403 |
|
CF01 | Termination of patent right due to non-payment of annual fee |