CN113243013A - 用于在存储器系统中重新定位数据的数据完整性保护 - Google Patents
用于在存储器系统中重新定位数据的数据完整性保护 Download PDFInfo
- Publication number
- CN113243013A CN113243013A CN201980082862.4A CN201980082862A CN113243013A CN 113243013 A CN113243013 A CN 113243013A CN 201980082862 A CN201980082862 A CN 201980082862A CN 113243013 A CN113243013 A CN 113243013A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- hash value
- memory region
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 319
- 238000000034 method Methods 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims abstract description 14
- 239000007787 solid Substances 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 2
- 238000013523 data management Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—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/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- 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)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了与存储器装置中的数据管理和安全性相关的方法、设备和系统。数据可存储于存储器系统中,且作为将数据从所述存储器系统中的一个区域移动到另一区域的操作的部分,可使用一或多个散列函数验证所述数据。举例来说,存储器装置可计算一些存储数据的散列值,并在将另一版本的所述存储数据写入到所述存储器系统的区域的过程中使用所述散列值来验证所述另一版本的存储数据。所述存储器装置可存储由所述存储数据的所述散列产生的另一散列和交易的记录,使得交易为可识别的;所述存储器系统内的交易的序列也可为可识别的。可在整个所述存储器系统中或存储器系统当中存储交易的散列。
Description
相关申请
本申请要求2018年12月21日申请且标题为“用于在存储器系统中重新定位数据的数据完整性保护(Data Integrity Protection for Relocating Data in a MemorySystem)”的美国专利申请序列号16/231,308的优先权,所述美国专利申请的完整公开内容特此以引用方式并入本文中。
技术领域
一般来说,本文中所公开的至少一些实施例涉及存储器系统,且更具体地说涉及但不限于用于在存储器系统中重新定位数据的数据完整性保护。
背景技术
一般来说,存储器系统可为存储器模块、存储装置或混合式存储器/存储装置。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)或非易失性双列直插式存储器模块(NVDIMM)。存储装置的实例包含固态驱动器(SSD)或硬盘驱动器(HDD)。
主机系统可利用存储器系统来存储数据和/或指令并检索数据和/或指令。存储器系统可包含可存储数据和/或指令的一或多个存储器组件。
一般来说,存储器组件可为非易失性或易失性的。易失性存储器组件需要电力来维持所存储的数据。非易失性存储器组件甚至在未供电时也可保持所存储的数据。存储器组件的实例包含存储器集成电路。一些存储器集成电路为易失性的,例如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)。一些存储器集成电路为非易失性的,例如快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM)存储器等。
存储器系统可将内容从一个位置移动到另一位置。举例来说,快闪存储器通常以块和页组织。快闪存储器块含有多个快闪存储器页。可个别地对每一页进行编程以存储数据。然而,在页可重新编程以存储不同数据之前,将擦除所述页;且所述块中的所述页被配置成一起擦除。替代于立即擦除整个块以对页进行重新编程,控制器可将页标记为含有无效数据且使用另一页来存储所述数据。垃圾收集操作通常被配置成回收具有无效数据的页的存储容量。举例来说,在垃圾收集操作期间,可重新定位所述块中的其它页中的有效数据,使得可擦除整个块以要求具有无效数据的页的存储容量。
附图说明
实施例是借助于实例而非限制在附图的图式中来说明的,在附图中相似参考指示类似元件。
图1说明根据本公开的一些实施例的具有存储器系统的实例计算系统。
图2展示被配置成在存储器系统中重新定位数据时保护数据完整性的控制器。
图3说明将数据从一个块重新定位到另一块的系统。
图4到6说明构建散列以在存储器系统中重新定位数据时保护数据完整性的实例。
图7展示在重新定位数据时保护数据完整性的方法。
具体实施方式
计算机系统中的安全性漏洞可用以在数据从一个存储器位置移动到另一存储器位置的操作期间更改数据内容。举例来说,在垃圾收集操作期间,从快闪存储器的源块检索的有效数据可在写入到快闪存储器的目的地块中之前经更改。将经更改数据写入到目的地块中且擦除源块可导致最初存储于源块中的有效数据的丢失。此外,经更改数据内容可含有恶意代码,所述恶意代码在被执行时可产生另外的数据外泄和/或安全漏洞。
本公开的至少一些方面涉及在将数据从一个存储器位置移动到另一存储器位置的操作期间确保数据完整性的技术。
举例来说,当将数据写入/编程到存储器区域中时,可产生交易记录以在存储器区域中包含数据的散列值(或“散列”)。加密散列函数可应用于所述数据以产生所述散列值。加密散列函数可将数据映射到具有预定大小的散列值;且难以修改数据而不改变其使用加密散列函数产生的散列。此外,通常难以从其散列重构原始数据;且可将不同数据映射到同一散列。当数据将从存储器区域移动到目的地存储器区域时,控制器被配置成基于交易记录和/或散列验证待写入/编程到目的地存储器区域中的数据。当待写入/编程到目的地存储器区域中的数据已经更改且因此基于交易记录/散列确定为无效时,移动数据的操作可停止以防止源存储器区域中的原始数据的丢失;且可产生关于存储器系统中的可能的安全漏洞和/或数据损坏的警示或通知。
图1说明根据本公开的一些实施例的具有存储器系统(101)的实例计算系统。存储器系统(101)可包含媒体,例如存储器区域(111,……,113)。存储器区域(111,……,113)可为易失性存储器区域,非易失性存储器区域或此类存储器区域的组合。在一些实施例中,存储器系统(101)为存储器模块。存储器模块的实例包含DIMM、NVDIMM和NVDIMM-P。在一些实施例中,存储器系统(101)为存储装置。存储装置的实例是固态驱动器(SSD)。在一些实施例中,存储器系统(101)为混合式存储器/存储子系统。一般来说,计算系统可包含使用存储器系统(101)的主机系统(102)。举例来说,主机系统(102)可将数据写入到存储器系统(101)并从存储器系统(101)读取数据。
计算系统和/或主机系统(102)可以是计算装置,例如桌上型计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的这类计算装置。主机系统(102)可包含或耦合到存储器系统(101),使得主机系统(102)可从存储器系统(101)读取数据或将数据写入到所述存储器系统。主机系统(102)可经由物理主机接口耦合到存储器系统(101)。如本文中所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等的连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接的SCSI(SAS)、双数据速率(DDR)存储器总线等。物理主机接口可用于在主机系统(102)与存储器系统(101)之间传输数据。主机系统(102)可进一步利用NVM高速(NVMe)接口以在存储器系统(101)通过PCIe接口与主机系统(102)耦合时存取存储器区域(111,……,113)。物理主机接口可提供用于在存储器系统(101)与主机系统(102)之间传递控制、地址、数据和其它信号的接口。图1将存储器系统(101)作为实例进行说明。一般来说,主机系统(102)可经由相同通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器系统。
主机系统(102)包含处理装置(104)和控制器(106)。主机系统(102)的处理装置(104)可例如为微处理器、中央处理单元(CPU)、处理器的处理核心、执行单元等。在一些情况下,控制器(106)可被称为存储器控制器、存储器管理单元和/或启动器。在一个实例中,控制器(106)控制经由耦合于主机系统(102)与存储器系统(101)之间的总线的通信。
一般来说,控制器(106)可将用于对存储器区域(111)到(113)的所要存取的命令或请求发送到存储器系统(101)。控制器(106)可进一步包含用以与存储器系统(101)通信的接口电路系统。接口电路系统可以将从存储器系统(101)接收到的响应转换成主机系统(102)的信息。
主机系统(102)的控制器(106)可与存储器系统(101)的控制器(105)通信以执行例如在存储器区域(111,……,113)处读取数据、写入数据或擦除数据等操作,以及其它此类操作。在一些情况下,控制器(106)集成于处理装置(104)的同一封装内。在其它情况下,控制器(106)与处理装置(104)的封装分开。控制器(106)和/或处理装置(104)可包含例如一或多个集成电路和/或离散组件、缓冲存储器、高速缓冲存储器或其组合的硬件。控制器(106)和/或处理装置(104)可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
存储器区域(111,……,113)可包含不同类型的非易失性存储器区域和/或易失性存储器区域的任何组合。非易失性存储器区域的实例包含与非(NAND)类型快闪存储器。存储器区域(111)到(113)中的每一个可包含存储器单元的一或多个阵列,所述存储器单元例如单层级单元(SLC)或多层级单元(MLC)(例如,三层级单元(TLC)或四层级单元(QLC))。在一些实施例中,特定存储器组件可以包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一个可存储由主机系统(102)使用的数据的一或多个位(例如,数据块)。虽然描述了例如NAND类型快闪存储器的非易失性存储器区域,但存储器区域(111,……,113)可基于任何其它类型的存储器,例如易失性存储器。在一些实施例中,存储器区域(111,……,113)可为但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁性随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、铁电随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)、基于纳米线的非易失性存储器、并入有忆阻器技术的存储器,以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,存储器区域(111,……,113)的存储器单元可分组为存储器页或数据块,其可指用以存储数据的存储器组件的单元。
存储器系统(101)的控制器(105)可与存储器区域(111,……,113)通信以执行例如在存储器区域(111)到(113)处读取数据、写入数据或擦除数据等操作,以及其它此类操作(例如,响应于通过控制器(106)在命令总线上调度的命令)。控制器(105)可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器,或其组合。控制器(105)可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。控制器(105)可包含被配置成执行指令(107)的处理装置(103)(例如,处理器)。在所说明实例中,控制器(105)的高速缓冲存储器(109)包含被配置成存储指令(107)的嵌入式存储器,所述指令用于执行控制存储器系统(101)的操作(包含处理存储器系统(101)与主机系统(102)之间的通信)的各种过程、操作、逻辑流和例程。在一些实施例中,高速缓冲存储器(109)可包含存储存储器指针、所获取数据等的存储器寄存器。控制器(105)还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器系统(101)已说明为包含控制器(105),但在本公开的另一实施例中,存储器系统(101)可不包含控制器(105),且可替代地依赖于外部控制(例如,由外部主机提供,或由与存储器系统分开的处理器或控制器提供)。
一般来说,控制器(105)可从主机系统(102)接收命令或操作且可将所述命令或操作转换成指令(107)或适合的命令以实现对存储器区域(111,……,113)的所要存取。控制器(105)可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和纠错码(ECC)操作、加密操作、高速缓存操作和在与存储器区域(111,……,113)相关联的逻辑块地址与物理块地址之间的地址转换。控制器(105)可进一步包含主机接口电路系统以经由物理主机接口与主机系统(102)通信。主机接口电路系统可将从主机系统接收到的命令转换成命令指令(107)以存取存储器区域(111,……,113)以及将与存储器区域(111,……,113)相关联的响应转换成主机系统(102)的信息。
存储器系统(101)还可包含未说明的额外电路系统或组件。在一些实施例中,存储器系统(101)可包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从控制器(105)接收地址并解码所述地址以存取存储器区域(111,……,113)。
图1的存储器系统(101)存储存储于存储器区域中的数据的散列(115)。当控制器(105)将数据从源存储器区域(例如,111)移动到目的地存储器区域(例如,113)(例如,在垃圾收集操作中,或响应于来自主机系统(102)的命令)时,存储器系统(101)被配置成在擦除源存储器区域(例如,111)中的对应数据之前验证待写入到目的地存储器区域(例如,113)中的数据。
举例来说,当图1的存储器系统(101)对页进行编程/写入以存储数据集时,存储器系统(101)可产生对所述页进行编程的交易的交易记录。交易记录可包含数据集的散列,其可用于验证从所述页检索的数据集。交易记录可进一步包含其它信息,例如编程/写入操作的时戳、负责启动编程/写入操作的程序的识别、所述页的标识符,和/或负责编程/写入操作的用户账户等。
为了进一步增强数据安全性,可通过包含对所述页或另一页进行编程的先前操作的交易记录的散列经由加密散列(例如,经由存储于块链分类账中)将交易记录链接到先前交易记录。为了增强安全性,可将交易记录存储在计算机系统和/或存储器系统(101)中的多个位置中,使得可相对于大多数交易记录验证数据集。
因此,本公开中的技术改进存储器系统(101)中的数据的可靠性和完整性。
图2展示被配置成在重新定位存储器系统,例如图1的存储器系统(101)中的数据时保护数据完整性的控制器(139)。
在图2中,源存储器区域(111)存储数据版本A(131)。为了将数据从源存储器区域(111)移动到目的地存储器区域(113)中,数据最初从源存储器区域(111)检索(135)且接着组织于高速缓冲存储器(109)中。
一般来说,高速缓冲存储器(109)中的数据版本B(133)可不同于源存储器区域(111)中的数据版本A(131)。
举例来说,虽然数据组织于高速缓冲存储器(109)中,但可经由探索存储器系统(101)的指令(107)中的安全漏洞的恶意攻击更改数据。
在一些情况下,数据移动可通过恶意程序启动,而甚至实际上无需从源存储器区域(111)检索数据版本A(131)。
在图2中,控制器(139)被配置成控制完成数据移动。举例来说,控制器(139)可以是图1的存储器系统的控制器(105)的部分。在一些情况下,控制器(139)可至少部分地经由指令集(107)实施。
图2的控制器(139)被配置成通过至少擦除源存储器区域(111)中的数据版本A(131)来完成数据移动。在从源存储器区域(111)擦除数据版本A(131)之前,控制器(139)验证高速缓冲存储器(109)和/或目的地存储器区域(113)中的数据版本B(133)的有效性。
举例来说,控制器(139)被配置成控制将数据写入到存储器区域中。在将数据写入存储器区域中的过程期间,控制器(139)计算写入/编程到所述存储器区域中的数据的散列。散列可存储为写入操作的交易记录。
在将数据版本B(133)写入(137)到目的地存储器版本(113)中的过程期间,控制器(139)计算数据版本B(133)的散列(134)。在从源存储器区域(111)擦除(141)数据版本A(131)之前,控制器(139)比较散列(134)与数据版本A(131)的散列(132)以用于验证数据版本B(133)。如果验证成功,那么控制器(139)从源存储器区域(111)擦除(141)数据版本(131)以完成数据移动。否则,控制器(139)可中止数据移动、产生警示,和/或重新开始数据移动。
在一些实施方案中,在将数据版本B(133)写入/编程(137)到目的地存储器区域(113)中之前计算出数据版本B(133)的散列(134)。因此,如果通过比较散列(132与134)进行的验证不成功,那么控制器(139)可防止(143)将数据版本B(133)写入到目的地存储器区域(113)中。
在一些实施方案中,在成功验证之后且在完成将数据版本B(133)写入到目的地存储器区域(113)中之前,高速缓冲存储器(109)被配置成锁定以防止发生改变。在完成写入数据版本B(133)之后,高速缓冲存储器(109)可经解锁以供进一步操作。
在一些实施方案中,通过从目的地存储器区域(113)读回数据版本B(133)计算出数据版本B(133)的散列(134)并将其与数据版本A(131)的散列(132)进行比较。因此,还可检测在写入/编程操作期间出现的错误。
散列(132和134)可存储为识别数据版本(131和133)的写入操作的交易记录的部分。
优选地,散列(132和134)(和交易记录)与数据版本(131和133)分开存储且独立于数据版本(131和133)存取。
任选地,散列(132和134)(和交易记录)存储于相应存储器区域(111和113)中。
此外,散列(132和134)(和交易记录)的多个副本可存储于各个存储器区域(例如,111和113)中。控制器(139)可相对于散列(131和134)(和交易记录)的大多数副本验证数据版本(133)。可使用分布式散列存储配置,其中散列(例如,132)的副本可存储于多个位置中,例如存储由其计算出散列(例如,132)的数据的块(151)、并不存储由其计算出散列(例如,132)的数据的一或多个块(例如,171),和/或高速缓冲存储器(109)。
任选地,存储器系统(101)可包含类似于控制器(139)的多个控制器。控制器可并行地操作。每一控制器(例如,139)可维持存储于存储器区域(例如,111、113)中的数据的一组散列(例如,132、134)并使用其散列(例如,132、134)的副本独立地验证数据集。因此,甚至当控制器和/或其散列中的一些被黑客攻击或损坏时,存储器系统(101)仍可验证待移动数据的完整性。
图3说明将数据从一个块重新定位到另一块的系统。举例来说,图3的块(151和171)可为图1中所说明的存储器系统(101)的存储器区域(111和113)。举例来说,块(151和171)可为配置于SSD中的快闪存储器。举例来说,图3的系统可为图2的控制器(139)的应用。
源块(151)可含有多个页(153,……,163)。所述页(153,……,163)中的每一个可在块(151)空闲和/或已经经由擦除操作清除时单独经编程。
源块(151)可存储页(153,……,163)的有效性状态(155,……,165)。举例来说,有效性状态(155)的内容可指示页(153)中的数据内容(157)为有效的;且有效性状态(165)的内容可指示页(163)中的数据内容(167)为无效的。
块(151)中的有效数据(例如,157、……)的散列(132)可存储于块(151)(和/或另一位置)中。
在垃圾收集操作期间,将有效数据(例如,157、……)收集和/或组织于高速缓冲存储器(109)中以供写入到目的地块(171)中。
在将数据(例如,157、……)从高速缓冲存储器(109)复制到目的地块(171)中之前、期间和/或之后,控制器(105或139)计算数据(例如,157、……)的散列(134)。
如果散列(134)与用于垃圾收集操作的源块(151)中的有效数据(例如,157、……)的散列(132)匹配,那么垃圾收集操作可完成,其中源块(151)可在完成将数据写入到目的地块(171)中之后经擦除。
如果散列(134)与用于垃圾收集操作的源块(151)中的有效数据(例如,157、……)的散列(132)并不匹配,那么停止垃圾收集操作;并且防止源块(151)的擦除。
在一些情况下,在将高速缓冲存储器(109)中的有效数据(例如,157、……)写入到目的地块(171)中之前,目的地块(171)完全不含数据。在数据移动之后,目的地块(171)可存储散列(134),其等于源块(151)中的有效数据的散列(132)。
在其它情况下,在将高速缓冲存储器(109)中的有效数据(例如,157、……)写入到目的地块(171)中之前,目的地块(171)可在一些页中具有数据。可将有效数据(例如,157、……)写入到目的地块(171)中可用的空闲页中。在数据移动之后,块(171)存储块(171)中的当前有效数据的散列(134),其通常不同于源块(151)中的有效数据的散列(132)。
图4到6说明构建散列以在存储器系统中重新定位数据时保护数据完整性的实例。
图4说明写入到块(例如,151)中的一组页(181,183,185,……,187)的散列(186)由一连串散列计算出的情境。
举例来说,在将初始页(181)写入到块(151)中之后,从页(181)产生散列(182)。当将后续页(183)写入到块(151)中时,从先前页(181)的散列(182)和后续页(183)的内容计算出后续散列(184)。类似地,当将另一页(185)写入到块(151)中时,从先前页(183)的散列(184)和另一页(185)的内容计算出另一散列(186)。因此,当将最后一页(187)写入到块(151)中时,最后一个散列(188)取决于所有页(181,183,185,……,187)的内容。相对于最后一个散列(188)进行验证可用于验证页(181,183,185,……,187)的整个组的内容。
图5说明直接从相应页(181,183,185,……,187)的散列(182,184,186,……,188)计算出写入到块(例如,151)中的一组页(181,183,185,……,187)的散列(189)的情境。当所述页中的一个(例如,183)被标记为无效时,无效页(例如,183)的对应散列(例如,183)可从剩余有效页(例如,181、183、185,……,187)的散列的计算排除。因此,有效页的整个组的散列(189)可在一或多个页变得无效之后高效地经更新。
图6说明用以存储通过页ID(195)识别的页的散列(199)的交易记录(191)。任选地,交易记录(191)可包含时戳(193)、先前交易记录的散列(191)和/或其它信息,例如主机系统(102)的身份标识、用户或负责通过页ID(195)识别的页的程序,识别为页ID的页是否标记为无效、由主机系统(102)使用以存取通过页ID(195)识别的页的地址等。
一般来说,图6的交易记录(191)和/或其副本可存储于存储器系统(101)和/或连接到存储器系统(101)的其它存储器系统中。
举例来说,块(例如,151)的页(例如,153,……,163)的交易记录(例如,191)可存储于块(151)中。
此外,块(例如,151)的页(例如,153,……,163)的交易记录(例如,191)的副本可存储于一或多个其它选定块(例如,171)中。
举例来说,多个控制器(例如,139)可被配置成控制多个块集。每一控制器(139)为块集(例如,151)的主控装置。第一控制器(139)可将受第一控制器(139)控制的块中的交易记录(例如,191)提供到并非第一控制器(139)的块的主控装置的一或多个第二控制器。一或多个第二控制器可存储从第一控制器(139)接收到的交易记录(例如,191)的副本且在第二控制器的控制下将所述记录存储于块中。在第一控制器(139)中的验证过程期间,第二控制器可提供交易记录的副本(或来自副本的相关信息)以验证由第一控制器(139)在验证页或块时使用的交易记录(例如,191)。
交易记录(例如,191)可用于验证高速缓存于高速缓冲存储器(109)中的数据,不仅用于移动存储器系统(101)内的数据,而且用于出于其它目的为数据服务,例如将数据传输到主机系统(102)或连接到存储器系统(101)的另一存储器系统。
任选地,交易记录(例如,191)还可用于检查对存取存储器系统中的数据的授权。举例来说,当交易记录(例如,191)包含所有权信息(例如,主机系统、用户、账户和/或负责在页(153)中写入数据的程序)时,可相对于数据存取请求检查所有权信息以确定所述请求将被接受还是拒绝。举例来说,数据存取请求可为微调或擦除所述页的请求、读取所述页的请求、修改所述页的请求等。
在一些情况下,控制器实施用于将数据写入到存储器系统(101)中的交易记录的块链分类账;且交易记录(例如,191)可与冗余副本和记录的加密链一起记录于块链分类账中。
图7展示在重新定位数据时保护数据完整性的方法。举例来说,图7的方法可使用根据图4或5构建的散列实施于图1的计算机系统中以用于图2或3中所说明的数据重新定位操作。散列可存储于图6中所说明的交易记录(191)中。
在框201处,存储器系统(101)将第一数据(131,或157、……)存储于存储器系统(101)的第一存储器区域(111或151)中。
在框203处,控制器(105或139)计算存储于第一存储器区域(111或151)中的第一数据(131,或157、……)的第一散列(132)。
在框205处,存储器系统(101)和/或控制器(105或139)将第一散列(132)存储于存储器系统(101)中。
在框207处,在将第一数据(131,或157、……)从第一存储器区域(111或151)移动到第二存储器区域(113或171)的操作期间,控制器(105或139)使用第一散列(132)验证待存储到存储器系统(101)的第二存储器区域(113或171)中的第二数据(133,或157、……)。
在框209处,在鉴于第一散列(132)确定第二数据(133,或157、……)有效之后,控制器(105或139)从第一存储器区域(111或151)擦除第一数据(131,或157、……)。
举例来说,第一存储器区域(111)可为固态驱动器的快闪存储器的第一块(151);第二存储器区域(113)可为固态驱动器的快闪存储器的第二块(171);且操作为在将第二数据(133,或157、……)存储于第二块(171)中之后擦除快闪存储器的第一块(151)的垃圾收集操作。举例来说,快闪存储器的第一块(151)可具有存储第一数据(例如,157、……)的一或多个第一页(例如,153、……)和具有无效数据的一或多个第二页(例如,163)。垃圾收集操作擦除快闪存储器的第一块(151)以至少要求对应于具有无效数据的一或多个第二页(例如,163)的存储容量。
举例来说,固态驱动器可具有高速缓冲存储器(109),其被配置成缓冲通常为从第一存储器区域(111或151)检索的第一数据(131,或157、……)的版本的第二数据(133,或157、……)。控制器(105或139)被配置成产生第二数据(133,或157、……)的第二散列(134)且比较第二散列(134)与第一散列(132)以验证第二数据(133,或157、……)。
任选地,控制器(105或139)可被配置成在将第二数据写入到第二存储器区域(113或171)中期间产生第二散列(134)。在完成将第二数据(133,或157、……)写入到第二存储器区域(113或171)中后,控制器(105或139)可确定写入到第二存储器区域(113或171)中的第二数据是否有效。
任选地,或组合地,控制器(105或139)可被配置成在开始将第二数据(133,或157、……)复制到第二存储器区域(113或171)中之前基于存储于高速缓冲存储器(109)中的第二数据(133,或157、……)产生第二散列(134)。在验证高速缓冲存储器(109)中的数据后,控制器(105或139)锁定高速缓冲存储器(109)以防发生改变,直到完成将第二数据(133,或157、……)从高速缓冲存储器(109)复制到第二存储器区域(113或171)为止。如果高速缓冲存储器(109)中的数据经由第一散列(132)失效,那么此布置可防止将数据从高速缓冲存储器(109)复制到第二存储器区域(113或171)。
任选地,或组合地,控制器(105或139)可被配置成在第二数据(133,或157、……)已经从高速缓冲存储器(109)复制到第二存储器区域(113或171)中之后基于存储于第二存储器区域(113或171)中的第二数据(133,或157、……)产生第二散列(134)。
任选地,第一散列(132)可存储于将第一数据(131,或157、……)写入到第一存储器区域(111或151)中的交易记录(191)中。在将第一数据(131,或157、……)写入到第一存储器区域(111或151)中之前,交易记录(191)可包含将数据写入到第一存储器区域(111或151)中的先前操作的先前交易记录的散列(197)。任选地,交易记录(191)存储于第一存储器区域(111或151)中;且交易记录(191)的一或多个额外副本可存储于存储器系统(101)的其它位置中。可使用存储于第一存储器区域(111或151)中的交易记录(191)和/或存储于存储器系统(101)中的其它位置中的一或多个额外副本执行验证高速缓冲存储器(109)中的数据。
控制器(105或139)可被配置成控制存储器系统(101)内的数据移动的完成。在数据移动的完成期间,控制器(105或139)被配置成仅在鉴于第一散列(132)确定第二数据(133,或157、……)有效之后从第一存储器区域(111或151)擦除第一数据(131,或157、……)。
任选地,控制器(105或139)可进一步被配置成控制将数据写入到存储器区域中的交易记录(191)的产生。交易记录(191)可存储于实施于存储器系统(101)中的块链中。
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操控的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操控的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证实构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器区域等。
在本说明书中,各种功能和操作被描述为由计算机指令执行或由其引起以简化描述。然而,所属领域的技术人员将认识到,此类表达的意图是功能由一或多个控制器或处理器(例如,微处理器)执行计算机指令而产生。替代地或组合地,所述功能和操作可使用具有或不具有软件指令的专用电路系统来实施,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)来实施。可使用无软件指令的硬接线电路系统或结合软件指令实施实施例。因此,技术不限于硬件电路系统和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
在前述说明书中,本公开的实施例已经参考其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
Claims (17)
1.一种固态驱动器,其包括:
多个存储器区域,其包含第一存储器区域和第二存储器区域;和
控制器,其被配置成使用散列函数产生存储于所述第一存储器区域中的第一数据的第一散列值;
其中所述控制器进一步被配置成将所述第一散列值写入到所述多个存储器区域中的存储器区域或写入到高速缓冲存储器或写入到这两者;
其中所述控制器进一步被配置成在将所述第一数据从所述第一存储器区域移动到所述第二存储器区域的操作期间使用所述第一散列值验证待存储到所述第二存储器区域中的第二数据;且
其中所述控制器被配置成在鉴于所述第一散列值确定所述第二数据有效之后从所述第一存储器区域擦除所述第一数据。
2.根据权利要求1所述的固态驱动器,其中所述第一存储器区域为所述固态驱动器的快闪存储器的第一块,所述第二存储器区域为所述固态驱动器的快闪存储器的第二块;且所述操作在将所述第二数据存储于所述第二块中之后擦除快闪存储器的所述第一块。
3.根据权利要求2所述的固态驱动器,其中所述第一块包含存储所述第一数据的一或多个第一页和具有无效数据的一或多个第二页;且所述操作擦除快闪存储器的所述第一块以至少要求对应于所述一或多个第二页的存储容量;且所述固态驱动器进一步包括:
高速缓冲存储器,其被配置成存储所述第二数据;
其中所述第二数据为从所述第一存储器区域检索的所述第一数据的版本。
4.根据权利要求3所述的固态驱动器,其中所述控制器被配置成产生所述第二数据的第二散列值并比较所述第二散列值与所述第一散列值以验证所述第二数据;且其中所述控制器被配置成:
在将所述第二数据写入到所述第二存储器区域中期间产生所述第二散列值;
基于存储于所述高速缓冲存储器中的所述第二数据产生所述第二散列值且在鉴于所述第一散列确定所述第二数据有效的所述确定之后锁定所述高速缓冲存储器以防发生改变;或
在将所述第二数据从所述高速缓冲存储器复制到所述第二存储器区域中之后基于存储于所述第二存储器区域中的所述第二数据产生所述第二散列值。
5.一种方法,其包括:
将第一数据存储于存储器系统的第一存储器区域中;
使用第一散列函数计算存储于所述第一存储器区域中的所述第一数据的第一散列值;
将所述第一散列值存储于所述存储器系统中;
在将所述第一数据从所述第一存储器区域移动到所述存储器系统的第二存储器区域的操作期间使用所述第一散列函数和所述第一散列值验证待存储到所述第二存储器区域的第二数据;以及
至少部分地基于使用所述第一散列值验证所述第二数据而从所述第一存储器区域擦除所述第一数据。
6.根据权利要求5所述的方法,其进一步包括:
使用第二散列函数从将所述第一数据写入到所述第一存储器区域中的第一交易记录计算第二散列值,其中所述第一交易记录包含所述第一散列值。
7.根据权利要求6所述的方法,其进一步包括:
产生将第三数据写入到所述第一存储器区域中的第二交易记录以在所述第二交易记录中至少包含所述第二散列值。
8.根据权利要求6所述的方法,其进一步包括:
将第三数据存储于所述存储器系统的存储器区域中;
使用所述第一散列函数计算所述第三数据的第三散列值;以及
通过在第二交易记录中至少包含所述第二散列值和所述第三散列值两者,产生将所述第三数据写入到所述第三存储器区域中的所述第二交易记录。
9.根据权利要求6所述的方法,其进一步包括:
将所述第一交易记录的一或多个副本存储于所述存储器系统中;
其中所述验证至少部分地基于所述一或多个副本;
其中所述第一交易记录进一步包含所述将所述第一数据写入到所述第一存储器区域中的时戳;
其中所述第一存储器区域为固态驱动器中快闪存储器的第一块;
其中所述第二存储器区域为所述固态驱动器中快闪存储器的第二块;且
其中所述操作包含在所述固态驱动器中擦除所述第一块的垃圾收集操作。
10.一种存储器系统,其包括:
被配置成存储第一数据的第一存储器区域,和第二存储器区域;
高速缓冲存储器,其被配置成存储对应于存储于所述第一存储器区域中的所述第一数据的版本的第二数据;以及
控制器,其被配置成:
管理存储于所述第一存储器区域中的所述第一数据的第一散列值;和
使用所述第一散列值验证存储于所述高速缓冲存储器中的第二数据。
11.根据权利要求10所述的存储器系统,其中所述控制器进一步被配置成至少部分地基于使用所述第一散列值验证所述第二数据而将所述第一数据从所述第一存储器区域移动到所述第二存储器区域;且其中所述控制器被配置成在鉴于所述第一散列值确定所述第二数据有效之后从所述第一存储器区域擦除所述第一数据。
12.根据权利要求10所述的存储器系统,其中所述控制器被配置成产生将数据写入到所述第一存储器区域中的交易记录;且其中所述控制器被配置成将所述交易记录记录于所述存储器系统中实施的块链中。
13.一种设备,其包括:
高速缓冲存储器;
多个存储器区域,所述多个存储器区域中的每一相应存储器区域被配置成存储数据集;以及
控制器,其被配置成使用密码散列函数产生用于所述相应存储器区域的所述数据集的散列值并将所述散列值的一或多个副本存储于所述设备中;
其中所述控制器进一步被配置成在将所述数据集从所述存储器区域载入到所述高速缓冲存储器中之后使用所述散列值的所述一或多个副本验证所述高速缓冲存储器中的所述数据集。
14.根据权利要求13所述的设备,其中所述控制器被配置成将所述散列值的副本存储于所述高速缓冲存储器中,将所述散列值的副本存储于所述相应存储器区域中,以及将所述散列值的副本存储于除所述相应存储器区域之外的存储器区域中。
15.根据权利要求13所述的设备,其中所述控制器被配置成在使用所述密码散列函数从所述高速缓冲存储器中的所述数据集计算出的散列值与所述一或多个副本一致之后从所述相应存储器区域擦除所述数据集以将所述数据集移动到除所述相应存储器区域之外的存储器区域中。
16.一种受管理存储器装置,其具有根据权利要求13所述的设备,其中所述控制器进一步被配置成:
管理存储于所述多个存储器区域中的数据集的第一散列值;
将数据集从所述多个存储器区域中的第一存储器区域载入到所述高速缓冲存储器中;
使用来自所述高速缓冲存储器的所述数据集计算第二散列值;以及
确定所述第二散列值是否与由所述控制器管理的所述第一散列值一致。
17.根据权利要求16所述的受管理存储器装置,其中所述控制器被配置成
在将所述数据集从所述高速缓冲存储器写入到第二存储器区域中期间计算所述第二散列值,其中所述控制器进一步被配置成在确定所述第二散列值与由所述控制器管理的所述第一散列一致之后允许从所述第一存储器区域擦除所述数据集以完成将所述数据集从所述第一存储器区域移动到所述第二存储器区域;
在确定所述第二散列值与由所述控制器管理的所述第一散列值一致之后允许将所述数据集从所述高速缓冲存储器写入到第二存储器区域,其中所述控制器进一步被配置成在所述将所述数据集从所述高速缓冲存储器写入到所述第二存储器区域期间锁定所述高速缓冲存储器以防发生改变;或
在确定所述第二散列值与由所述控制器管理的所述第一散列值一致之后允许主机系统从所述高速缓冲存储器读取所述数据集,其中所述控制器进一步被配置成在所述主机系统从所述高速缓冲存储器读取所述数据集期间锁定所述高速缓冲存储器以防发生改变。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/231,308 US11822489B2 (en) | 2018-12-21 | 2018-12-21 | Data integrity protection for relocating data in a memory system |
US16/231,308 | 2018-12-21 | ||
PCT/US2019/064986 WO2020131434A1 (en) | 2018-12-21 | 2019-12-06 | Data integrity protection for relocating data in a memory system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113243013A true CN113243013A (zh) | 2021-08-10 |
Family
ID=71099476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980082862.4A Pending CN113243013A (zh) | 2018-12-21 | 2019-12-06 | 用于在存储器系统中重新定位数据的数据完整性保护 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11822489B2 (zh) |
EP (1) | EP3899773A4 (zh) |
KR (1) | KR20210095711A (zh) |
CN (1) | CN113243013A (zh) |
WO (1) | WO2020131434A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11048430B2 (en) * | 2019-04-12 | 2021-06-29 | Netapp, Inc. | Object store mirroring where during resync of two storage bucket, objects are transmitted to each of the two storage bucket |
US11340817B2 (en) * | 2019-07-10 | 2022-05-24 | EMC IP Holding Company LLC | Data management in multi-cloud computing environment |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002046930A2 (en) * | 2000-12-08 | 2002-06-13 | Sun Microsystems, Inc. | Data storage system and method employing a write-ahead hash log |
US20070233937A1 (en) * | 2006-03-31 | 2007-10-04 | Coulson Richard L | Reliability of write operations to a non-volatile memory |
US20090019246A1 (en) * | 2007-07-10 | 2009-01-15 | Atsushi Murase | Power efficient storage with data de-duplication |
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
CN102929793A (zh) * | 2011-08-08 | 2013-02-13 | 株式会社东芝 | 包括键-值存储的存储器系统 |
US20130227195A1 (en) * | 2012-02-24 | 2013-08-29 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
US20140219034A1 (en) * | 2013-02-07 | 2014-08-07 | Seagate Technology Llc | Non-Volatile Write Buffer Data Retention Pending Scheduled Verification |
US20150019797A1 (en) * | 2013-07-14 | 2015-01-15 | CNEXLABS, Inc. | Method and Apparatus for Providing Improved Garbage Collection Process In Solid State Drive |
WO2015065312A1 (en) * | 2013-10-28 | 2015-05-07 | Hitachi, Ltd. | Method and apparatus of data de-duplication for solid state memory |
US20170060936A1 (en) * | 2015-08-26 | 2017-03-02 | Ultralight Technologies Inc. | Monitoring alignment of computer file states across a group of users |
CN108345545A (zh) * | 2017-01-25 | 2018-07-31 | 三星电子株式会社 | 在逻辑地址与物理地址之间执行散列式转译的存储装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5937066A (en) * | 1996-10-02 | 1999-08-10 | International Business Machines Corporation | Two-phase cryptographic key recovery system |
US7010655B1 (en) * | 2003-03-24 | 2006-03-07 | Veritas Operating Corporation | Locking and memory allocation in file system cache |
US7180407B1 (en) * | 2004-11-12 | 2007-02-20 | Pengju Guo | Vehicle video collision event recorder |
US20110055471A1 (en) | 2009-08-28 | 2011-03-03 | Jonathan Thatcher | Apparatus, system, and method for improved data deduplication |
US9678968B1 (en) * | 2010-05-03 | 2017-06-13 | Panzura, Inc. | Deleting a file from a distributed filesystem |
US10741025B2 (en) * | 2010-09-30 | 2020-08-11 | Jesus Perea-Ochoa | Method and system of operating multi-task interactive electronic devices |
WO2012051600A2 (en) | 2010-10-15 | 2012-04-19 | Kyquang Son | File system-aware solid-state storage management system |
US9569771B2 (en) * | 2011-04-29 | 2017-02-14 | Stephen Lesavich | Method and system for storage and retrieval of blockchain blocks using galois fields |
US8930612B2 (en) | 2012-05-31 | 2015-01-06 | Seagate Technology Llc | Background deduplication of data sets in a memory |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9438426B2 (en) | 2014-10-03 | 2016-09-06 | Seagate Technology Llc | Key-value data storage device with hybrid architecture |
US9753802B1 (en) * | 2015-03-30 | 2017-09-05 | Amazon Technologies, Inc. | Dead letter queue for smart fleet management |
US20170255708A1 (en) * | 2016-03-01 | 2017-09-07 | Linkedin Corporation | Index structures for graph databases |
US10554746B2 (en) | 2016-11-14 | 2020-02-04 | International Business Machines Corporation | Decentralized immutable storage blockchain configuration |
US10936412B1 (en) * | 2017-04-17 | 2021-03-02 | EMC IP Holding Company LLC | Method and system for accessing data stored in data cache with fault tolerance |
-
2018
- 2018-12-21 US US16/231,308 patent/US11822489B2/en active Active
-
2019
- 2019-12-06 EP EP19900898.8A patent/EP3899773A4/en not_active Withdrawn
- 2019-12-06 KR KR1020217022611A patent/KR20210095711A/ko active IP Right Grant
- 2019-12-06 WO PCT/US2019/064986 patent/WO2020131434A1/en unknown
- 2019-12-06 CN CN201980082862.4A patent/CN113243013A/zh active Pending
-
2023
- 2023-11-17 US US18/513,197 patent/US20240086337A1/en active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002046930A2 (en) * | 2000-12-08 | 2002-06-13 | Sun Microsystems, Inc. | Data storage system and method employing a write-ahead hash log |
US20070233937A1 (en) * | 2006-03-31 | 2007-10-04 | Coulson Richard L | Reliability of write operations to a non-volatile memory |
US20090019246A1 (en) * | 2007-07-10 | 2009-01-15 | Atsushi Murase | Power efficient storage with data de-duplication |
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
CN102929793A (zh) * | 2011-08-08 | 2013-02-13 | 株式会社东芝 | 包括键-值存储的存储器系统 |
US20130227195A1 (en) * | 2012-02-24 | 2013-08-29 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
US20140219034A1 (en) * | 2013-02-07 | 2014-08-07 | Seagate Technology Llc | Non-Volatile Write Buffer Data Retention Pending Scheduled Verification |
US20150019797A1 (en) * | 2013-07-14 | 2015-01-15 | CNEXLABS, Inc. | Method and Apparatus for Providing Improved Garbage Collection Process In Solid State Drive |
WO2015065312A1 (en) * | 2013-10-28 | 2015-05-07 | Hitachi, Ltd. | Method and apparatus of data de-duplication for solid state memory |
US20170060936A1 (en) * | 2015-08-26 | 2017-03-02 | Ultralight Technologies Inc. | Monitoring alignment of computer file states across a group of users |
CN108345545A (zh) * | 2017-01-25 | 2018-07-31 | 三星电子株式会社 | 在逻辑地址与物理地址之间执行散列式转译的存储装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3899773A4 (en) | 2022-09-14 |
WO2020131434A1 (en) | 2020-06-25 |
US20240086337A1 (en) | 2024-03-14 |
EP3899773A1 (en) | 2021-10-27 |
US20200201788A1 (en) | 2020-06-25 |
US11822489B2 (en) | 2023-11-21 |
KR20210095711A (ko) | 2021-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114341824B (zh) | 用于粗映射存储器子系统的取消映射 | |
US9824007B2 (en) | Data integrity enhancement to protect against returning old versions of data | |
US20240086337A1 (en) | Data integrity protection for relocating data in a memory system | |
US10942678B2 (en) | Method of accessing data in storage device, method of managing data in storage device and storage device performing the same | |
US11567689B2 (en) | Handling bad blocks generated during a block erase operation | |
CN113851172B (zh) | 存储器子系统映射中的错误处置优化 | |
US10067826B2 (en) | Marker programming in non-volatile memories | |
US20210334200A1 (en) | Storing translation layer metadata in host memory buffer | |
CN115576483A (zh) | 可信计算基础的组件之间的安全身份链接 | |
US11531476B2 (en) | Memory system and memory system discard method | |
CN113126906B (zh) | 用于元数据指示的方法和系统 | |
CN115809017A (zh) | 数据存储装置及其操作方法 | |
US11372716B2 (en) | Detecting special handling metadata using address verification | |
US11714925B2 (en) | Assuring integrity and secure erasure of critical security parameters | |
US12119071B2 (en) | Error check functionality verification using known errors | |
US20240004641A1 (en) | Memory system firmware update using virtual slots | |
KR20240038418A (ko) | 메모리 컨트롤러 및 이를 포함하는 저장 장치 | |
KR20220143446A (ko) | 저장 장치 및 그 동작 방법 | |
KR20220075914A (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 |