CN106471478B - 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 - Google Patents
用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 Download PDFInfo
- Publication number
- CN106471478B CN106471478B CN201580032738.9A CN201580032738A CN106471478B CN 106471478 B CN106471478 B CN 106471478B CN 201580032738 A CN201580032738 A CN 201580032738A CN 106471478 B CN106471478 B CN 106471478B
- Authority
- CN
- China
- Prior art keywords
- storage device
- address
- address translation
- write
- volatile
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- 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/061—Improving I/O performance
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
-
- 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
-
- 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/10—Address translation
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile 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/65—Details of virtual memory and virtual address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本文提供了一种用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法。每一事务指定逻辑地址,并且方法包括:通过参考非易失性数据存储设备中的地址转换记录来确定每一逻辑地址在数据存储设备内的相应的物理地址,创建针对由多个写事务指定的逻辑地址的地址转换图。此外,如果地址转换记录中所指示的相应的物理地址已经包括有效数据,则在地址转换图中将逻辑地址重新映射至新的物理地址。然而,此时,数据存储设备中所存储的地址转换记录不被更新。替换地,使用地址转换图中的逻辑地址至物理地址的映射来执行多个写事务。然后,只有在多个写事务已经被执行的情况下,非易失性数据存储设备中的地址转换记录才被更新,以便标识地址转换图中的逻辑地址至物理地址的映射。由于在执行写事务时,对数据存储设备中已经存储的数据进行更新的任意新数据被写入不同的物理地址位置,因此之前的数据版本仍然被存储在数据存储设备上,并且假定除非多个写事务实际上被以原子的方式执行,否则就不更新地址转换记录,则如果任意事件阻止了多个写事务被以原子的方式执行,这使得数据存储设备上所维持的状态能够退回至执行多个写事务之前存在的状态。
Description
技术领域
本发明涉及用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法。
背景技术
存在希望对非易失性数据存储设备内的不同位置以原子的方式(atomically)执行多个写事务的若干情况。例如,这可能是由于正写入的数据文件太大以不适合一个位置,或者是由于操作需要多个位置的更新。后一种情境的示例是当在文件夹中创建新文件时。文件需要被写至非易失性存储设备中的适当位置,但是此外,描述放置文件的文件夹结构的元数据也需要被更新。完成这些步骤中的一个步骤而不完成其它步骤将会导致文件系统指示存在实际上并没有的文件,或者替换地存储设备内将存在占用空间的文件,但是由于该文件没有被文件系统提及,因此该文件不可访问。
通过布置多个写事务以原子的方式发生,这将确保所有那些多个写事务都被完成或者都不完成,因此避免了由于只执行事务的子集而导致非易失性数据存储设备结束在未定义的状态的可能性。
通常,一系列写事务将会由主机设备(例如,CPU)发起,并且主机设备之后将经由与数据存储设备相关联的设备控制器来与非易失性数据存储设备进行通信以使得事务被执行。当处理上述写原子性问题(write atomicity issue)时,现有技术中通常由主机系统负责确保写事务被以原子的方式执行,导致主机设备的软件系统和/或文件系统的开销。
特别地,一种已知的方法是采用日志技术(joumaling technique),通过在实际事务被执行之前,主机设备生成用于存储在非易失性存储设备上的一些日志数据,以使得如果发生故障,则不一致的数据可以被发现并且被重新存储为一致状态。这些日志技术导致生成了额外的事务,其中相关联的额外的写动作在存储设备内被执行。在日志最糟糕的情况下(从性能的角度,但是最好的情况是从可靠性的角度),为了确保准确性发送两次实际数据。然而,该方法对性能和功率有负面影响。已知的日志机制通常独立于非易失性数据存储设备的底层技术,并且形成构成主机设备的文件系统的一部分。
希望提供用于在非易失性数据存储设备内以原子的方式执行多个写事务的改善机制,而无需使用主机侧实施的安全机制。
发明内容
一方面,本发明提供了操作设备控制器的方法用以在非易失性数据存储设备内以原子的方式执行多个写事务,每一事务指定逻辑地址,方法包括:通过参考非易失性数据存储设备中的地址转换记录来确定每一逻辑地址在数据存储设备内的相应的物理地址,创建针对由多个写事务指定的逻辑地址的地址转换图,并且如果地址转换记录中所指示的相应的物理地址已经包括有效数据,则在地址转换图中将逻辑地址重新映射至新的物理地址;使用上述地址转换图中的逻辑地址至物理地址的映射来执行上述多个写事务;并且只有在上述多个写事务在上述非易失性存储设备中被执行的情况下,更新非易失性数据存储设备中的地址转换记录以标识上述地址转换图中的逻辑地址至物理地址的映射。
根据本发明,非易失性数据存储设备被约束为使得如果写事务正在执行写操作以便更新数据存储设备上已经存储的有效数据,则在执行写操作时,数据存储设备上之前存在的数据不被覆盖,相反,新的数据被写入数据存储设备内的不同的物理地址。这种约束已经存在于若干已知的非易失性数据存储设备中,并且在本文中被称为不适当的(out-of-place)重写约束。例如,NAND闪存要求一旦一页数据已经被写入,则其在新数据可以被写入该页之前必须被擦除。因此,当针对页内已经存储的数据执行写入时,新数据通常被存储在不同页内,其中闪存维护操作之后被执行以将当前不存在的数据无效并擦除。根据本发明,当开发用于以原子的方式执行多个写事务的新事务序列协议时,该不适当的重写请求被使用,如果多个写事务例如由于系统故障未完成,则该新的事务序列协议允许数据存储设备上的状态之后退回至多个写事务之前存在的状态。
特别地,根据本发明,为由多个写事务所指定的逻辑地址创建地址转换图。为了执行该操作,非易失性数据存储设备中的地址转换记录被参考以确定每一逻辑地址在数据存储设备内相应的物理地址。如果地址转换记录中所指示的相应的物理地址已经包括有效数据,则在创建地址转换图时,在地址转换图中相关联的逻辑地址被重新映射至新物理地址。然而,在该阶段,不执行对非易失性数据存储设备中的地址转换记录的更新。
替换地,之后使用至地址转换图中的信息来执行多个写事务,并且只有在全部那些多个写事务已经被执行的情况下,非易失性数据存储设备中的地址转换记录之后才被更新。
因此,如果任何事件导致被要求以原子的方式执行的全部多个写事务没有被全部完成,则非易失性存储设备中的地址转换记录将会仍然正确地针对多个写事务被执行之前存在的、非易失性数据存储设备上的数据的状态来提供正确的逻辑地址至物理地址的映射。此外,由于非易失性数据存储设备的不适当的重写属性,非易失性数据存储设备上的之前存储的状态将不会在执行多个写事务期间被物理地重写,并且因此,如果多个写事务的原子性被阻止,则可能使用非易失性数据存储设备中的地址转换记录来退回至数据存储设备之前的状态。
存在若干种方式,可以以该方式维护关于多个写事务的信息以便使得之后能够检测到那些多个写事务不能够被以原子的方式执行的状况。在一个实施例中,方法还包括:在执行多个写事务之前,执行意图保存操作以在非易失性数据存储设备的区域内存储标识将被以原子的方式执行的多个写事务的意图信息以及所述地址转换图中的逻辑地址至物理地址的映射。
因此,这将在非易失性数据存储设备上提供旨在被以原子的方式执行的多个写事务的记录,并且该信息之后可以被参考以便确定写事务事实上是否已经被以原子的方式执行。特别地,由于只有在所有多个写事务已经被执行的情况下,非易失性存储设备中的地址转换记录才会被更新,因此如果写事务已经被以原子的方式执行,则对地址转换记录的这种更新才会发生。如果某一事件已经阻止了写事务被以原子的方式执行,则在非易失性存储设备中所存储的地址转换记录中的信息和经由上述意图保存操作所保存的信息之间将存在某种失配。
在一个实施例中,意图保存操作作为写事务被执行,该写事务比将被以原子的方式执行的多个写事务优先级高。这确保了在一系列实际的写事务开始之前,标识将被以原子的方式执行的多个写事务的信息被写入非易失性存储设备。
关于在非易失性数据存储设备内的哪个地方保存意图信息存在各种选项。在一个实施例中,非易失性数据存储设备包括主非易失性存储单元和被配置为在将数据写入主非易失性存储单元之前缓冲数据的非易失性缓存,并且存储意图信息的非易失性数据存储设备的上述区域在上述非易失性缓存内。在数据存储设备内提供非易失性缓存的实施例中,将意图信息存储在非易失性缓存内避免了仅为了存储意图信息而需要主非易失性存储单元内直接执行任意写操作。由于意图信息只是暂时令人关注的,因此这有益于允许确定写事务还未被以原子的方式执行的情况。通常,期望写事务将被以原子的方式执行,并且地址转换记录之后将随着写事务的性能而被更新。一旦该过程完成,则数据存储设备的状态将正确地反映由多个写事务所更新的数据,并且相应地,此时将不再需要意图信息。
在一个实施例中,在执行多个写事务之前所创建的地址转换图被存储在与设备控制器相关联的易失性存储设备中,当执行多个写事务时供设备控制器参考。这确保了设备控制器所需要的用以执行多个写事务的信息已经是可用的,而无需为了获得用于写事务所需要的地址映射来从非易失性数据存储设备执行任意读操作。
在一个实施例中,垃圾收集过程被用于将非易失性数据存储设备上所维持的任意废弃(out of date)数据无效。然而,根据一个实施例,将垃圾收集过程激活的步骤跟随更新非易失性存储设备中的地址转换记录的步骤。通过确保直到地址转换记录被更新之后垃圾收集过程才被激活,以及假定直到所有多个写事务已被执行(即,写事务已被以原子的方式地正确执行)地址转换记录才被更新,这确保了在非易失性数据存储设备内没有数据被无效,直到已知无需退回该数据(因为已知多个写事务已经如所期望的那样被以原子的方式正确执行)。
在一个实施例中,设备控制器从主机实体接收多个写事务,主机实体向设备控制器标识多个写事务将以原子的方式被处理。因此,主机实体决定了多个写事务将被以原子的方式处理。然而,对比于现有技术,根据本发明,主机实体本身不需要采取任何措施来试图确保事务被以原子的方式执行。替换地,当与数据存储设备进行通信时,由设备控制器所执行的上述一系列步骤确保了写事务将被以原子的方式执行,否则,如果事件阻止其发生,则数据存储设备的之前的状态可以被可靠地获取,因此允许退回至其之前的状态。
在检测到可能已经发生不完全转换的情况下,使得多个写事务可能未被以原子的方式执行,那么触发情况可能被唤起以执行某些检查。例如,这种触发情况可能在非易失性数据存储设备上执行重启过程期间被自动生成,因为可能由于系统内的一些故障或者功率损失发生重启,并且因此这为检查多个写事务是否已经被以原子的方式执行提供了合适的情况。然而,应该认识到,还可能在预计可能需要恢复过程的其他情况下唤起触发情况。
在一个实施例中,响应于这种触发情况,方法包括执行以下步骤:从非易失性存储设备获得地址转换表和意图信息;并且针对意图信息中所标识的每一写事务来确定由意图信息所指示的逻辑地址至物理地址的映射是否与地址转换表中的逻辑地址至物理地址的映射相匹配。
如上所述,如果写事务以原子的方式完成,则预计当前所存储的意图信息将与地址转换表中所维持的信息相匹配。然而,如果在执行一系列写事务期间存在阻止那些事务以原子的方式完成的任意中断,则地址转换记录将不会被更新,并且因此在非易失性数据存储设备上所存储的地址转换记录中的信息和所存储的意图信息之间将会存在失配。
因此,在一个实施例中,针对意图信息中所标识的任意写事务,如果由意图信息所指示的逻辑地址至物理地址的映射与地址转换表中的逻辑地址至物理地址的映射不匹配,则方法还包括以下步骤:将针对意图信息中的每一写事务所标识的物理地址处的数据无效。因此,这使得由之前被要求以原子的方式执行的多个事务内的任意事务所写入的数据无效。此外,由于地址转换记录将不会被更新,因此在那些多个写事务被发起之前,其将仍然正确地反映数据存储设备的状态。
在一个实施例中,在数据被有效地退回至之前状态的这种情况下,随后向主机实体发布提供以下指示的通知:多个写事务还未被执行。这使得主机能够采取适当的动作,例如重新尝试执行多个写事务。
在非易失性数据存储设备除了主非易失性存储单元之外还包括非易失性缓存的某些实施例中,则在一个实施例中,执行多个写事务的步骤可以包括:最初将每一写事务的数据写入非易失性缓存,并且随后将来自非易失性缓存的每一写事务的数据存入由地址转换图所指定的物理地址处的主非易失性存储单元中。
从耗损平衡和性能的角度,在实际将数据提交至主非易失性存储单元之前将数据缓存可能是有吸引力的,特别是在要被写入的数据本身可能将在数据被提交至主非易失性存储单元之前被更新的情况下,由于在该情况下,可减少主非易失性存储单元内所执行的写操作的数量。然而,这些情况下需要注意的是,如果事务不能够被以原子的方式执行,则可能退回至正确的状态。
在一个实施例中,多个写事务形成第一原子写序列,并且设备控制器被请求执行包括第二多个写事务的第二原子写序列。针对上述问题,如果多个第二写事务中的至少一个指定了与还未将数据存储在主非易失性存储单元内的第一原子写序列的写事务相关联的逻辑地址,则第一和第二原子写序列被合并为单个原子写序列,以使得被写入非易失性缓存的数据表示单个原子写序列。
此外,在一个实施例中,方法还包括:在非易失性数据存储设备的区域内对标识将被以原子的方式执行的多个写事务的意图信息以及上述地址转换图中的逻辑地址至物理地址的映射进行更新,以使得意图信息反映单个原子写序列。
此外,在一个实施例中,对非易失性数据存储设备中的地址转换记录进行更新的步骤只在经合并的单个原子写序列的写事务已经被执行之后才被执行。
通过以上步骤,在事件将操作的原子性中断的情况下,系统能够退回两个完整的状态,即退回至执行第一原子写序列或者第二原子写序列之前存在的状态。其将仍然是稳定的状态,并且因此系统可以恢复到可行的环境。
当非易失性数据存储设备被频繁使用时,合并原子写序列的上述技术可能长时间地推迟非易失性数据存储设备中的地址转换记录的更新,有可能几乎无限期地推迟。然而,期望避免这种情况发生,并且在一个实施例中,通过对可以被合并的原子写序列的数量设置上限来实现。因此,在达到上限的情况下,在允许进一步的原子写序列被执行之前,设备控制器使得当前经合并的原子写序列完成,并且对非易失性数据存储设备中的地址转换记录进行更新。
为了实现相同的效果,还可以提供预定的命令而不是等待达到上限。因此,在这些实施例中,响应于该预定的命令,在允许进一步的原子写序列被执行之前,设备控制器使得当前经合并的原子写序列完成,并且对非易失性数据存储设备中的地址转换记录进行更新。因此,该预定的命令可以被用于确保设备间的状态同步。只有在所有之前的事务已经完成的情况下,命令才会被确认,并且特别地写数据被写入非易失性数据存储设备。
非易失性数据存储设备可以采取各种形式,但是在一个实施例中,非易失性数据存储设备是包括若干存储模块的闪存存储设备,每一存储模块包括一个或多个存储页。闪存存储设备是具有上述不适当的重写属性的存储设备的示例,并且因此上述技术可能已经在该闪存存储设备内被使用。
第二方面,本发明提供了用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器,每一事务指定逻辑地址,设备控制器包括:地址转换图生成电路,其被配置为通过参考非易失性数据存储设备中的地址转换记录来确定每一逻辑地址在数据存储设备内的相应的物理地址,创建针对由多个写事务指定的逻辑地址的地址转换图,如果地址转换记录中所指示的相应的物理地址已经包括有效数据,则地址转换图生成电路还被配置为在地址转换图中将逻辑地址重新映射至上述新物理地址;事务控制电路,其被配置为使用上述地址转换图中的逻辑地址至物理地址的映射来执行上述多个写事务;以及地址转换记录更新电路,其被配置为只有在上述非易失性数据存储设备中的上述多个写事务已经被执行的情况下,才更新非易失性数据存储设备中的地址转换记录以标识上述地址转换图中的逻辑地址至物理地址的映射。
同时,在一个实施例中,设备控制器可以由被用于控制对非易失性数据存储设备的访问的专用硬件形成,在替换实施例中,设备控制器可以通过在通用处理器(例如,CPU)上运行的软件来实现。因此,根据第三方面,本发明提供包括计算机程序的计算机程序产品,当该计算机程序在计算机上执行时,使得计算机执行根据本发明的第一方面的方法。在一个实施例中,计算机程序产品以非暂态的形式存储程序。
第四方面,本发明提供了用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器,每一事务指定逻辑地址,设备控制器包括:地址转换图生成装置用于通过参考非易失性数据存储设备中的地址转换记录来确定每一逻辑地址在数据存储设备内的相应的物理地址,创建针对由多个写事务指定的逻辑地址的地址转换图,如果地址转换记录中所指示的相应的物理地址已经包括有效数据,则地址转换图生成装置还被配置为在地址转换图中将逻辑地址重新映射至上述新物理地址;事务控制装置以用于使用上述地址转换图中的逻辑地址至物理地址的映射来执行上述多个写事务;以及地址转换记录更新装置以用于只有在上述非易失性存储设备中的上述多个写事务已经被执行的情况下,才更新非易失性数据存储设备中的地址转换记录以标识上述地址转换图中的逻辑地址至物理地址的映射。
附图说明
本发明将只以示例的方式参考附图中所示的其实施例被进一步描述,其中:
图1A是根据第一实施例示出系统的框图;
图1B是根据替换实施例示出系统的框图;
图1C根据一个实施例示意性地示出了图1A或图1B的闪存存储设备的布置。
图2是根据一个实施例更详细地示出图1A或图1B的闪存控制器的操作的框图;
图3是根据一个实施例的事务流的序列图;
图4是根据一个实施例,示出当主机设备具有需要被以原子的方式执行的多个更新时由主机设备所执行的步骤的流程图;
图5是根据一个实施例,示出当以原子的方式处理多个更新时,由存储设备控制器(例如,图1A或图1B的闪存控制器)所执行的步骤的流程图;
图6是根据一个实施例,示出在启动闪存设备时或者在出于任意其他原因发起恢复过程时所执行的步骤的流程图;
图7A示出了写数据在被写入闪存设备之前被缓存在非易失性RAM内的实施例;
图7B根据一个实施例,示出了图7A的方法,但是其中两个原子事务序列被合并;以及
图8A和图8B是根据一个实施例,意图保存信息还被提交至闪存存储设备的图7A和图7B的版本。
具体实施方式
图1A是根据一个实施例的系统的框图。在该实施例中,假定非易失性数据存储设备20采取被管理的存储设备的形式,其中其自己的内部设备控制器25用于控制至非易失性存储设备30的写事务的执行。在该具体示例中,假定非易失性存储设备30是非易失性闪存存储设备,并且相应地设备控制器25是闪存控制器。闪存存储器通常由NAND设备形成,并且被布置为多个模块,例如,图1C中所示的闪存存储设备70的块72、73、74、75、76。在每一块内,存在多个页82、84、86。
NAND闪存存储器是页可读的并且可编程的。读动作通常比写动作少十倍。此外,一旦页被写入,则其在新数据可以再次被写入该页之前必须被擦除,并且因此,如果数据文件需要被更新,则文件(或者其一部分)通常在闪存盘上被物理地移除,尽管逻辑地址可以保持不变。因此,新数据之后通常将被写入不同的页。同时,废弃的数据之后将仍然物理地驻留于盘上,闪存维护操作(例如,垃圾收集和耗损平衡)在闪存盘中被执行以将废弃的数据无效并随后擦除(在被管理的存储设备(例如,被管理的存储设备20)的情况下由设备本身进行无效和擦除,或者在如之后参考图1B所讨论的未被管理的存储设备的示例中由在主机端上进行操作的主机软件进行无效和擦除)。该维护功能通常被捆绑在被称为闪存转换层(FTL)的抽象层中。
本文中将以下动作称为不适当的重写:将经更新的数据写入闪存存储器内新的物理位置,而不是在执行写操作时直接重写数据之前的版本。如之后将更详细讨论的,当在闪存存储设备和闪存控制器之间提供事务序列协议时可以利用闪存存储器的该属性该事务序列协议允许一系列写事务以原子的方式被执行并允许检测和退回机制被合并以处理写事务未被以原子的方式执行(例如,由于中断一系列事务的系统故障等)的情况。
在NAND闪存存储器中,擦除动作还通常必须以块为基础来执行,其中,一个块包括多个页(如图1C中所显而易见的)。将经更新的数据写入新页的动作以及之后标记为无效废弃数据的相关联的闪存维护操作,可以被用于允许闪存存储设备的整个块随时间达到其不再包括任意有效数据的状态,随后其可以被擦除,腾出该块的页以再次被用于随后的写操作。
回到图1A,假定CPU 10希望发起需要被管理的存储设备20来以原子的方式执行的一系列写事务。如后面将更详细讨论的,主机设备CPU将通过路径17向被管理的存储设备20发布存在将被以原子的方式执行的一系列被捆绑的事务的指示,其之后将使得闪存控制器25从事例如之后参考图5所讨论的一系列特定操作。这将包括将某些控制信息存储在闪存控制器本地的易失性存储设备35中,以允许闪存控制器执行被要求以原子的方式执行的各种写事务中的每一写事务。被管理的存储设备20可以可选地包括某一缓存存储设备40,并且通常在提供该缓存存储设备的情况下,其作为非易失性的缓存存储设备(例如,NVRAM)被提供,例如通过使用备份电源来维持缓存内的状态。
当构建用于转换给被管理的存储设备的写事务时,CPU可以将事务数据写入与CPU相关联的系统的主机侧上所提供的随机存取存储器(RAM)15中。在执行一系列写事务期间,无论是以什么方式和在什么时候需要,闪存控制器之后都可以从RAM获取数据。如之后将更详细讨论的,在一个实施例中,数据可以由闪存控制器直接写入非易失性闪存存储设备中,但在提供可选的缓存的情况下,其可以首先被存储在缓存40内,并且随后被从缓存写入非易失性闪存存储设备30中。当一系列事务已经完成时,闪存控制器25通常将确认发布回CPU10。确认信号的准确时序可以依据实施例而改变。
虽然在图1A中考虑的是具有其自己的闪存控制器25的被管理的存储设备20,在替换实施例中,未被管理的存储设备50可以被使用,如图1B所示。在该实施例中,闪存控制器通常采取在CPU 10上执行的软件的形式,例如图1B中所示的闪存控制器60所指示的。此外,闪存控制器将访问某一本地易失性存储设备65。虽然在该实施例中闪存控制器由CPU上所执行的软件形成,其仍然可以被认为是被包含在系统的设备侧内,如图1B中虚线所示。
图2是根据一个实施例,详细地示出图1A的闪存控制器内所提供的组件的框图。闪存控制器100包括用于控制所要求的一系列事务的事务控制电路110。事务控制电路110与主机设备(例如,图1A的CPU 10)进行通信以便获得将被执行的事务的细节,以及确认完成了哪些事务。在执行事务期间,事务控制电路将会将各种控制信号发布至闪存控制器内的其他组件。具体地,地址转换图生成电路115被用于针对由形成将被以原子的方式执行的一组写事务的每一写事务所指定的逻辑地址来生成地址转换图。
为了这么做,地址转换图生成电路115参考闪存存储设备105内所维持的将逻辑地址映射至包括与那些逻辑地址相关联的数据的物理地址的地址转换记录130。如果地址转换图生成电路确定了在该过程期间,地址转换记录中所指示的相应的物理地址已经包括有效数据,则地址转换图生成电路在地址转换图中将逻辑地址重新映射至新的有效的物理地址。然而,此时,不更新闪存存储设备内所维持的地址转换记录130。替换地,地址转换图的本地副本被存储在闪存控制器100的易失性存储设备120内,以在将各种写事务发布至闪存存储设备105时供事务控制电路110使用。
特别地,针对每一写事务,事务控制电路会将命令发布至闪存存储设备以使得写数据被写入由易失性存储设备120内的逻辑地址至物理地址的映射所标识的物理存储位置。只有在所有事务都已被处理的情况下,事务控制电路之后才会使得地址转换记录更新电路125更新闪存存储设备105内的地址转换记录130。特别地,此时,易失性存储设备120中的地址转换图中所维持的信息可以被合并在地址转换记录内,以便生成存储在闪存存储设备105内的经更新的转换记录130。
虽然在图2中地址转换记录130被示为闪存存储设备105内所存储的离散的数据块,在替换实施例中,地址转换记录130被替代地由与闪存存储设备内的每一闪存页相关联地存储的额外数据位来形成,而不是所有地址转换记录信息被存储为闪存存储设备内的物理上分开的记录。
虽然图2示出了图1A中的闪存控制器25内所提供的电路组件,应该认识到,根据图1B的闪存控制器的软件实现方式,图2内的各个块可以由CPU 10上运行的合适的软件例程实现。
图3是根据第一实施例示出事务流的序列图。如图3所示,某些通信发生在主机200和闪存控制器205之间,并且此外,通信还发生在闪存控制器205和实际闪存存储设备210之间。首先,如箭头215所示,主机将会将捆绑指示发送至闪存控制器,该捆绑指示标识了存在主机要求以原子的方式发生的一系列写事务。主机之后将对事务数据进行排队,如块220所示。例如,这可以通过主机对RAM 15内的相关的事务数据进行构建和排队而发生以用于在适当的时候由闪存控制器访问。
一旦闪存控制器已经确认了事务捆绑(如箭头225所示),则各个数据事务可以开始被从主机发送至闪存控制器,如箭头230所示。
针对每一所接收的事务,闪存控制器将会使用闪存存储设备上的地址转换记录中所存储的信息来将指定的逻辑地址转换为物理地址。在被映射至的物理地址已经包括有效数据的情况下,闪存控制器之后将额外地将逻辑地址重新映射至新的可用的物理地址。因此,在由图3中的块235所指示的序列期间,上述地址转换图将被创建,并且将被本地存储在闪存控制器的易失性存储设备内。
根据一个实施例,在发起由一系列事务所要求的各种写操作之前,闪存控制器将指定意图保存操作的命令发送至闪存存储设备210。具体地,命令可以采取标识要被存储在非易失性数据存储设备的区域中的意图信息的专用写事务的形式(本文中还被称为意图保存写事务),该意图信息在步骤235处,标识被以原子的方式执行的多个写事务以及地址转换图中所创建的逻辑地址至物理地址的映射。在一个实施例中,该意图保存写事务的优先级高于标准写事务,并且因此,可以确保意图保存写事务将首先被处理,并且因此,在写事务的任意数据开始被写入闪存之前,意图信息将被存储在闪存存储设备中。在一个具体实施例中,该更高优先级的写事务的示例为诸如由合并的UFS标准(参见:http://www.jedec.org/standards-documents/results/jesd220)所提供的设备专用写事务。然而,应该认识到,不要求使用该形式的写事务,并且可将意图保存事务可以被标记为高的优先级事务的任意其他机制可以被使用。
在执行了意图保存操作之后,在步骤245,事务之后可以被确认返回至主机。特别地,一旦意图保存操作已经被执行,则闪存控制器现在能够确保事务将被以原子的方式执行,或者在任意事情中断那些事务的原子的执行的情况下,闪存设备的状态可以被退回至任意写事务被执行之前存在的状态。因此,此时,主机无需监控和确保写事务的原子性而自主承担其他任务。特别地,主机系统可以假定底层闪存盘上的连续的并且正确的文件系统,只要其遵照图3的左手边中的主机和闪存控制器之间的事务中所示的协议。
如图3所示,在执行了意图保存操作之后,如箭头250所示,由每一写事务请求的各种写操作之后可以被执行。只有在所有那些写事务已被执行的情况下,转换表之后才如箭头255所示被更新,以便反映闪存控制器的易失性存储设备内的地址转换图中所维持的信息。此时,由于由一系列写事务所要求的各种写操作被执行,正对闪存设备上已经存储的有效数据进行更新的任意数据将被存储至闪存设备内的不同物理位置,因此在该阶段除了存储新数据之外还保存正被覆盖的旧数据,并且考虑到转换表将只在这些系列的写事务如所期望的那样以原子的方式完成的情况下才被更新,则在写事务不被以原子的方式执行的情况下,转换表将不会被更新,并且可以被用于将闪存设备的状态退回至任意写事务被执行之前存在的状态。这将在之后参考图6进行讨论。
图4是示出当主机具有需要被以原子的方式执行的多个更新时由主机所执行的步骤的流程图。在步骤300,主机构建包括需要针对每一次更新而进行转换的数据的数据事务结构,并且例如可以将那些数据事务结构存储在主机侧上的RAM 15内。此外,在步骤305,主机构建指示需要以原子的方式发生的一捆事务的事务结构(本文中还被称为捆绑指示),并且在步骤310,捆绑指示之后被从主机发送至闪存控制器。
在步骤315,主机将数据事务排队并发送至存储设备控制器,通常一旦闪存控制器已经确认了捆绑指示,则该操作发生。此后,在步骤320,主机只等待来自闪存控制器的数据事务的确认。如之前参考图3所讨论的,一旦已经发生意图保存操作,则该确认通常将被发送。特别地,此时,闪存控制器具有确保写事务实际被以原子的方式执行所需要的所有信息,或者在原子性被损害的情况下,其可以将闪存设备的状态恢复回在执行任意写事务之前存在的状态。
图5是示出为了以原子的方式处理多个更新而由闪存控制器执行的步骤的流程图。在步骤330,等待捆绑指示,并且在收到捆绑指示时,然后在步骤335对到来的数据事务进行排队。特别地,如果闪存控制器具有足够大的易失性存储设备来维持被以原子的方式执行的数据事务,则那些数据事务在此刻被存入易失性存储设备。否则,数据事务此时将仍然被缓冲在主机侧上,例如图1所示的RAM 15内。
在步骤340,针对捆绑中的每一数据事务,闪存存储设备中的地址转换表被用于标识针对所指定的逻辑地址的物理地址。如上所述,如果物理地址已经包括有效数据,则逻辑地址被重新映射至新的物理地址,其中,所得到的逻辑地址至物理地址的映射被存储在闪存控制器的易失性存储设备中以作为由闪存控制器所构建的地址转换图的一部分。虽然为了本应用,由主机针对事务所指定的地址将被称为逻辑地址;它们还可以被称为虚拟地址。
在步骤345,意图保存命令被发布至闪存存储设备的非易失性存储器以针对要被执行的数据事务来标识逻辑地址至物理地址对。在存储设备内提供非易失性缓存结构(例如,图1A所示的NVRAM 40)的实施例中,意图保存信息之后可以被直接存储在NVRAM 40内而不是被存储在闪存存储设备30中。这避免了执行涉及闪存存储设备30本身的、与只被要求保留相对短暂的时段的信息有关的写操作。特别地,如果一系列写事务确实根据需要以原子的方式完成,导致转换表之后被更新,则一旦转换表已经被更新以反映与各种写事务相关联的物理地址,则将不再需要意图保存信息。
然而,如果未提供非易失性缓存结构,则替换地,意图保存信息可以被存储在系统信息专用的一个或多个闪存块中。
在之后的步骤345处,事务被确认返回至主机。如图5所示,其可以在执行步骤350至步骤360中的任意步骤之前,或者在执行那些步骤期间的某一时刻被执行。
在步骤350,针对每一数据事务,闪存控制器将写命令发布至闪存存储设备以使得写数据被写入其易失性存储设备中所维持的地址转换图中所标识的物理地址中。一旦捆绑指示中所标识的所有写事务已经被执行,则易失性存储设备中的逻辑地址至物理地址的信息被用于对闪存存储设备中所维持的地址转换表进行更新(参见步骤355)。此后,在步骤360,如果需要可以激活垃圾收集,以便使得不被经更新的转换表映射至逻辑地址的任意物理地址无效。垃圾收集过程之后还可以从事背景任务,例如将不再包括任意有效数据的块擦除。
图6根据一个实施例,示出了在启动闪存存储设备时所采取的一系列步骤。在步骤400,清除闪存控制器的所有工作存储设备(包括易失性存储设备中的逻辑地址至物理地址的映射)。这确保了在启动过程期间,闪存控制器只参考存储在闪存存储设备30、50中以及与闪存存储设备(例如,图1A的缓存40)相关联地被提供的任意非易失性缓存中的写事务信息。
在步骤405,从闪存存储设备构建地址转换表。如上所述,地址转换表可以被单独存储在闪存存储设备内,或者在替换实施例中,可以根据与各种物理地址处所存储的数据相关联的闪存页本身中所存储的额外位而被重新构建。
此外,在步骤410,意图保存信息被从非易失性存储器获取以便标识应该已经被以原子的方式执行的最后一捆事务。如上所述,在一个实施例中,意图保存信息被存储在存储设备内的非易失性缓存内。替换地,其可以驻留于闪存存储设备本身内的系统信息专用的闪存块内。
在步骤415,针对捆中所标识的每一写事务进行检查以确定由意图保存信息中的逻辑地址所指向的物理地址是否与地址转换表中的逻辑地址至物理地址的映射相匹配。如果所有事务已经被以原子的方式执行,则应该是这种情形,由于在执行那些事务之后,地址转换表将会被更新以与形成意图保存信息的一部分的逻辑地址至物理地址的映射相匹配。然而,如果针对捆中的任意事务所执行的任意检查未生成匹配,则其指示事务未以原子的方式完成。
因此,在步骤420,确定任意检查是否标识了不存在匹配。如果不是,则推定最后一捆事务已以原子的方式完成,并且过程可以直接进行至步骤425,其中如果必要,垃圾收集机制可以被激活以便将废弃的数据无效并且执行任意所需要的擦除过程。在步骤430,正常处理之后可以继续进行。
然而,如果在步骤420检测到针对数据事务中的至少一项事务,在地址转换表中的信息和意图保存信息中的相应的地址映射信息之间不存在匹配,则在步骤435,意图保存信息中所标识的物理地址位置被无效。此外,在步骤440,存储意图保存信息的物理地址被无效,假定意图保存信息已经被写入闪存存储设备。否则,缓存中的意图保存信息仅仅被标记为无效。然后,在步骤445,消息被发送至主机以指示最后一捆事务还未被执行,随后在步骤425过程继续进行。
在事务未以原子的方式完成的情况下,之后地址转换表将不会被更新,并且因此,将仍然提供指向闪存设备内所维持的仍然有效的之前的数据的逻辑地址至物理地址的映射。因此,通过将意图保存信息中所标识的所有物理地址位置无效,这有效地将闪存设备的状态退回至执行捆中的任意事务之前其所处的状态。因此,这是处理可以被重新开始的稳定状态。例如,主机此时可以试图重新尝试该捆事务。
如上所述,在闪存存储设备内,读次数明显小于写次数。尽管闪存设备中的随机访问性能很好,但随后的访问性能经常比传统的硬盘驱动器糟糕。这已经导致了在闪存驱动器(主要是SSD设备)中实施缓存和缓存驱逐方案。然而,从可靠性的角度,这可能引起问题,因为驱逐方案通常不会区分日志数据和正常数据,使得数据被写入闪存盘的顺序对于操作系统是不可预测的。这通常通过针对缓存使用非易失性RAM(通常为支持电池的RAM模块)来解决。然而,其相当昂贵。此外,研究表明,因为电池的质量随着时间推移降低,因此功率损耗可能仍然会使文件系统恶化。
闪存存储设备内的缓存可以被看作两个缓冲器,即一个读缓冲器和一个写缓冲器。读缓冲器的驱逐动作从持续性的角度看是不重要的,因为可以用新的页来替换被驱逐的页,并且对闪存盘上的数据没有影响。如果盘在驱逐之前处于稳定状态,则其在驱逐之后将处于稳定状态。
然而,写操作更复杂。一旦数据已经被写入缓存,则可以认为转换已经完成,并且可以被确认返回至主机。然而,只有在缓存中的数据已经被驱逐并且被存储在闪存存储设备内之后状态才是稳定的,因为在此之前闪存存储设备只包括数据的旧的状态。在将数据从缓存返回至闪存存储设备的同时,新数据可能到达,其可以替换还未被写入闪存盘的旧数据。如果闪存控制器仅仅假定其可能替换等待被写入闪存盘的页,那么实际上,事务将不按照主机系统已经发送它们的顺序来发生,这将会违反事务的独立原则。此外,这甚至可能将闪存盘带入旧状态和新状态之间的中间状态,其中针对下一状态,一些事务已经被处理,同时之前的一批事务还未完成。
然而,从耗损平衡和性能的角度,缓存在闪存存储设备中是有吸引力的命题,由于它避免了不必要地将数据写入闪存存储设备本身,如果数据在不久之后被更新,这将会花费不必要的时间。例如,如果数据的第一块被写入自由页,但是不久之后被更新,则数据的第一页需要被无效,并且新数据需要被写入不同页。垃圾收集机制之后将被用于将不再包括有用数据的页无效并随后擦除。所有这些过程都消耗时间和经历,并且还导致减少闪存存储设备的使用期。
图7A和图7B是示出可以被用在为了允许有效处理解决某些上述问题的事务而将非易失性缓存合并的实施例中的事务流的序列图。针对每一捆事务,在发布来自设备控制器的意图保存命令之前所执行的一系列步骤(例如,参考图3被讨论的步骤)为了简单起见在图7A和图7B中被忽略。因此,图7A中所示的与第一捆事务有关的第一步骤是意图保存命令被从设备控制器500发布至非易失性RAM 505。由于存在非易失性RAM,在该实施例中,意图保存信息被存储在非易失性RAM中而不是被存储在闪存设备510本身中。在步骤520,针对捆中的每一写事务的数据之后还被写入缓存505。一旦数据已经被写入缓存,则确认通过路径525被从设备控制器500返回至主机。确认的准确时序可以根据实施例改变。
一旦各种事务的数据已经被写入非易失性缓存,则驱逐机制之后将被用于驱逐数据以存储在闪存存储设备510中。该过程通常将包括对闪存存储设备的多个写操作,并且如图7A中的标号528所示将花费一段时间。一旦所有数据实际上已经被提交至闪存存储设备,则存储完成信号将通过路径530被返回至设备控制器500。
如果随后的一捆事务之后需要在设备控制器已经接收了存储完成确认之后被执行,则下一捆事务将以与第一捆相同的方式被准确处理,如图7A所示的各种阶段535、540、545、550、555所示。
然而,如图7B所示,在一个实施例中,在某些情况下,事务流允许两个独立的原子写序列被合并在存储设备内。如图7B所示,第一原子写序列以与如上参考图7A讨论的方式相同的方式进行,其中意图保存信息被存储在NVRAM 505内,随后是事务的写数据,并且确认被发送回主机。在该示例中,假定在周期528期间将第一原子写序列的数据写入闪存存储设备的过程中,第二原子写序列被发起,其中,第二原子写序列中的至少一个写事务指定与还未将数据存入闪存存储设备510的第一原子写序列的写事务相关联的逻辑地址。设备控制器500将检测这种情况,并且在一个实施例中,除了通过路径560将意图保存信息发送至NVRAM 505,其还发送指示该意图保存信息应该与通过路径515接收的之前的意图保存信息合并的合并命令565。缓存内的控制逻辑之后如标号570所指示的那样执行意图合并操作,以便生成意图保存信息的经合并的版本。实际上,此时,两个原子写序列已经被合并为单个经合并的原子写序列。
第二原子写序列的事务的写数据之后被提供给缓存,如信号线575所示,并且之后那些事务的写数据被写入闪存盘,如标号585所示。此外,一旦设备控制器已经将用于之后存储在闪存内的写数据,则设备控制器可以将关于第二原子写序列的确认发送至主机580。然而,由于设备控制器能够确保事务以原子的方式发生,或者闪存设备的状态可以返回至发生写事务之前存在的稳定状态,因此在发送确认之前无需等待任意事务已经被写入闪存。图7B的示例中,如果所得到的经合并的原子写序列的原子性被例如电源故障中断,则之前参考图6描述的重启过程将会使得原子写序列的故障被检测,并且闪存盘的状态退回至两种状态而不是一种状态,即,退回至第一原子写序列或者第二原子写序列被执行之前存在的状态。
如图7B所示,一旦所有数据已经被写入闪存,则存储完成命令590可以被返回至设备控制器500,在该示例中,标识经合并的写序列已经完成。
由设备控制器500所接收的存储完成命令(不论是图7A的单独的存储完成命令530、555,还是图7B的经合并的存储完成命令590)之后被设备控制器用于标识写已经发生,并且因此闪存内的地址转换表可以使用之前参考图3所讨论的过程而被更新。因此,应该认识到,闪存存储设备内所存储的转换表只在原子写序列(不论是原始的原子写序列还是经合并的原子写序列)完成的情况下被更新。
当盘被大量使用时,应该认识到,被用于创建经合并的原子写序列的图7B的过程可以使得转换表更新可能几乎无限期地被推迟(通过每一新的写序列处理之前写序列中的页)。这可能是不可取的,并且因此在一个实施例中,硬约束策略可以被应用。特别地,设备控制器可以对原子写序列可以被合并的次数设置上限。一旦达到该上限,则即使一捆新的事务被接收,地址页为之前合并的原子写序列的主题,但是状态将不会被合并,并且替换地,在允许进行下一捆事务之前,当前经合并的原子写序列将完成,并且转换表将被更新。
该策略可以通过说明在X个事务捆绑之后存在硬约束而被尽可能简单地实现。替换地,其可以被布置为使得当页已经被更新为第一原子写序列(其本身可以是经合并的原子写序列)的一部分,但是由意图保存信息所标识的所有事务还未完成,并且该页将被再次更新为新的一捆事务(进一步的原子写序列)的一部分时,在新的一捆事务之前放置硬约束。例如,考虑到第一捆事务A(对页1、2、3、4、5进行写)和第二捆事务B(对页2、6、7进行写)被合并的情况,并且之后第三捆事务C(对页2、8、9进行写)到达。假定由经合并的捆A和B所请求的页2的更新已经在捆C到达时发生,所以硬约束将被置于捆C之前,因为它试图再次写入页2。
此外,或者替换地,专用命令(例如,SCSI中的缓存刷新命令)可以被用于在期望使用图7B的方法来阻止写序列继续被合并的某些实例中确保设备间的状态同步。命令将被布置为使得只有在上一捆的所有事务已经被写入闪存设备的情况下其才可以被确认。这可以被用于避免否则可能引起的以下问题,即系统中的其他实体基于闪存盘的新状态进行状态转换。例如,如果文件被从USB剪贴并被存储在PC上,那么如果事务是成功的,则PC将会将文件从闪存驱动器擦除。然而,如果该擦除在PC中的SSD上的缓存已经被驱逐之前完成,则系统故障可能使得文件消失。可以通过使用上述专用命令来阻止该操作以确保发生设备间的状态同步,并且由此确保SSD上的缓存在发生擦除之前被驱逐。
图8A和图8B与图7A和图7B基本相同,但是示出了意图保存信息被传播至闪存设备510的替换实施例,如图8A中的线517、537和图8B中的线517、572所示。如果未确保缓存在所有情况下均保持非易失性,例如因为备用电池的质量已经下降,则可以采取该附加步骤。
根据上述实施例,应该认识到,这些技术介绍了在不使用在主机侧实施的安全机制的情况下,用于确保状态保留设备的原子的和可靠的事务的机制。该机制不需要在继续该过程之前确认盘的状态。只要存储设备依照该机制(通过设备控制器上运行的硬件或软件),写事务就可以在存储设备内以存储设备自己的速度进行处理,而无需担心在功率故障之后可恢复的可靠的状态。该机制将针对各种非易失性数据存储设备具有适用性,包括与习惯上不被用作存储数据的设备相关联的非易失性数据存储设备,例如,从中央点接收更新服务的请求的传感器节点。
由于以原子的方式执行写事务的管理由与非易失性数据存储设备相关联的设备控制器承担,因此主机设备无需对写事务的执行进行监控和管理,同时仍然使得事务能够以原子的方式被处理,并且同时提供可靠机制以用于对阻止事务被以原子的方式执行的事件进行检测和恢复。
尽管本文对特定的实施例进行了描述,应该认识到,本发明不限于此,并且在本发明的范围内可以做出许多修改和添加。例如,在不背离本发明的范围的情况下,所附从属权利要求的特征能够与独立权利要求的特征做出各种组合。
Claims (20)
1.一种操作设备控制器的方法,所述设备控制器在非易失性数据存储设备内以原子的方式执行多个写事务,每一事务指定逻辑地址,所述方法包括:
通过参考所述非易失性数据存储设备中的地址转换记录来确定每一逻辑地址在所述数据存储设备内的相应的物理地址,创建针对由所述多个写事务指定的逻辑地址的地址转换图,并且如果所述地址转换记录中所指示的所述相应的物理地址已经包括有效数据,则在所述地址转换图中将所述逻辑地址重新映射至新的物理地址;
使用所述地址转换图中的所述逻辑地址至物理地址的映射来执行所述多个写事务;并且
只有在所述非易失性存储设备中的所述多个写事务已经被执行的情况下,才更新所述非易失性数据存储设备中的所述地址转换记录以标识所述地址转换图中的所述逻辑地址至物理地址的映射。
2.如权利要求1所述的方法,还包括:
在执行所述多个写事务之前,执行意图保存操作以在所述非易失性数据存储设备的区域内存储标识将被以原子的方式执行的所述多个写事务的意图信息以及所述地址转换图中的所述逻辑地址至物理地址的映射。
3.如权利要求2所述的方法,其中,所述意图保存操作作为写事务被执行,该写事务的优先级高于将被以原子的方式执行的所述多个写事务。
4.如权利要求2或权利要求3所述的方法,其中:
所述非易失性数据存储设备包括主非易失性存储单元和被配置为在将数据写入所述主非易失性存储单元之前缓冲所述数据的非易失性缓存,并且存储所述意图信息的所述非易失性数据存储设备的区域在所述非易失性缓存内。
5.如权利要求1-3中任一项所述的方法,还包括:将所述地址转换图存储在与所述设备控制器相关联的易失性存储设备中以在执行所述多个写事务时供所述设备控制器参考。
6.如权利要求1-3中任一项所述的方法,还包括:
在对所述非易失性存储设备中的所述地址转换记录进行更新的步骤之后激活垃圾收集过程,以便使得不再被所述经更新的转换记录映射至逻辑地址的任意物理地址无效。
7.如权利要求1-3中任一项所述的方法,其中,所述设备控制器从主机实体接收所述多个写事务,所述主机实体向所述设备控制器标识所述多个写事务将被以原子的方式处理。
8.如权利要求2或3所述的方法,还包括,响应于触发条件,执行以下步骤:
从所述非易失性存储设备获得所述地址转换表和所述意图信息;以及
针对所述意图信息中所标识的每一写事务,确定由所述意图信息指示的所述逻辑地址至物理地址的映射是否与所述地址转换表中的所述逻辑地址至物理地址的映射相匹配。
9.如权利要求8所述的方法,其中,针对所述意图信息中所标识的任意写事务,如果由所述意图信息所指示的所述逻辑地址至物理地址的映射与所述地址转换表中的所述逻辑地址至物理地址的映射不匹配,则所述方法还包括使得针对所述意图信息中的每一写事务所标识的物理地址处的数据无效的步骤。
10.如权利要求9所述的方法,还包括向主机实体发布提供以下指示的通知:所述多个写事务还未被执行。
11.如权利要求2或3所述的方法,其中:
所述非易失性数据存储设备包括主非易失性存储单元和被配置为在将数据写入所述主非易失性存储单元之前缓冲所述数据的非易失性缓存;
执行所述多个写事务的步骤包括:最初将每一写事务的数据写入所述非易失性缓存,并且随后将来自所述非易失性缓存的所述每一写事务的数据存储在由所述地址转换图指定的所述物理地址处的所述主非易失性存储单元内。
12.如权利要求11所述的方法,其中:
所述多个写事务形成第一原子写序列;
所述设备控制器被请求执行包括第二多个写事务的第二原子写序列;并且
如果所述多个第二写事务中的至少一个指定了与还未将数据存储在所述主非易失性存储单元内的所述第一原子写序列的写事务相关联的逻辑地址,则将所述第一原子写序列和第二原子写序列合并为单个原子写序列,以使得被写入所述非易失性缓存的所述数据表示所述单个原子写序列。
13.如权利要求12所述的方法,还包括:
在所述非易失性数据存储设备的区域内,对标识将被以原子的方式执行的所述多个写事务的所述意图信息以及所述地址转换图中的逻辑地址至物理地址的映射进行更新,以使得所述意图信息反映所述单个原子写序列。
14.如权利要求12或权利要求13所述的方法,其中,对所述非易失性数据存储设备中的所述地址转换记录进行更新的步骤只在所述经合并的单个原子写序列的所述写事务已经被执行之后才被执行。
15.如权利要求12或权利要求13所述的方法,其中,对可以被合并的原子写序列的数量设置上限,并且在达到所述上限的情况下,在允许进一步的原子写序列被执行之前,所述设备控制器使得所述当前经合并的原子写序列完成,并且对所述非易失性数据存储设备中的所述地址转换记录的所述更新被执行。
16.如权利要求12或权利要求13所述的方法,其中,响应于预定的命令,在允许进一步的原子写序列被执行之前,所述设备控制器使得当前经合并的原子写序列完成,并且对所述非易失性数据存储设备中的所述地址转换记录的所述更新被执行。
17.如权利要求1-3中任一项所述的方法,其中,所述非易失性数据存储设备是包括若干存储块的闪存存储设备,每一存储块包括一个或多个存储页。
18.一种设备控制器,所述设备控制器用于在非易失性数据存储设备内以原子的方式执行多个写事务,每一事务指定逻辑地址,所述设备控制器包括:
地址转换图生成电路,所述地址转换图生成电路被配置为:通过参考所述非易失性数据存储设备中的地址转换记录来确定每一逻辑地址在所述数据存储设备内的相应的物理地址,创建针对由所述多个写事务指定的逻辑地址的地址转换图,如果所述地址转换记录中所指示的所述相应的物理地址已经包括有效数据,则所述地址转换图生成电路还被配置为:在所述地址转换图中将所述逻辑地址重新映射至新的物理地址;
事务控制电路,所述事务控制电路被配置为使用所述地址转换图中的所述逻辑地址至物理地址的映射来执行所述多个写事务;以及
地址转换记录更新电路,所述地址转换记录更新电路被配置为:只有在所述非易失性存储设备中的所述多个写事务已经被执行的情况下,才更新所述非易失性数据存储设备中的所述地址转换记录以标识所述地址转换图中的所述逻辑地址至物理地址的映射。
19.一种计算机可读存储介质,其上存储有指令,当所述指令被执行时使得计算机执行权利要求1至权利要求17中的任一权利要求所述的方法。
20.一种设备控制器,所述设备控制器用于在非易失性数据存储设备内以原子的方式执行多个写事务,每一事务指定逻辑地址,所述设备控制器包括:
地址转换图生成装置,所述地址转换图生成装置用于通过参考所述非易失性数据存储设备中的地址转换记录来确定每一逻辑地址在所述数据存储设备内的相应的物理地址,创建针对由所述多个写事务指定的逻辑地址的地址转换图,如果所述地址转换记录中所指示的所述相应的物理地址已经包括有效数据,所述地址转换图生成装置还用于在所述地址转换图中将所述逻辑地址重新映射至新的物理地址;
事务控制装置,所述事务控制装置用于使用所述地址转换图中的所述逻辑地址至物理地址的映射来执行所述多个写事务;以及
地址转换记录更新装置,所述地址转换记录更新装置用于只有在所述非易失性数据存储设备中的所述多个写事务已经被执行的情况下,才更新所述非易失性数据存储设备中的所述地址转换记录以标识所述地址转换图中的所述逻辑地址至物理地址的映射。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1411193.4 | 2014-06-24 | ||
GB1411193.4A GB2527529B (en) | 2014-06-24 | 2014-06-24 | A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device |
PCT/GB2015/051467 WO2015198009A1 (en) | 2014-06-24 | 2015-05-19 | A device controller and method for performing a plurality of write transactions atomically within a nonvolatile data storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106471478A CN106471478A (zh) | 2017-03-01 |
CN106471478B true CN106471478B (zh) | 2020-10-30 |
Family
ID=51410028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580032738.9A Active CN106471478B (zh) | 2014-06-24 | 2015-05-19 | 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10445000B2 (zh) |
KR (1) | KR102395360B1 (zh) |
CN (1) | CN106471478B (zh) |
GB (1) | GB2527529B (zh) |
WO (1) | WO2015198009A1 (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015112148A2 (en) * | 2014-01-23 | 2015-07-30 | Hewlett-Packard Development Company, L.P. | Atomically committing write requests |
KR102308777B1 (ko) * | 2014-06-02 | 2021-10-05 | 삼성전자주식회사 | 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법 |
US10521417B2 (en) * | 2014-06-24 | 2019-12-31 | Google Llc | Processing mutations for a remote database |
JP6398102B2 (ja) * | 2015-05-29 | 2018-10-03 | 東芝メモリ株式会社 | メモリシステム |
US10417218B2 (en) * | 2015-12-23 | 2019-09-17 | Intel Corporation | Techniques to achieve ordering among storage device transactions |
WO2017171798A1 (en) * | 2016-03-31 | 2017-10-05 | Intel Corporation | Fabric resiliency support for atomic writes of many store operations to remote nodes |
US10126962B2 (en) | 2016-04-22 | 2018-11-13 | Microsoft Technology Licensing, Llc | Adapted block translation table (BTT) |
US20180095884A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Mass storage cache in non volatile level of multi-level system memory |
CN108628760B (zh) * | 2017-03-16 | 2021-05-18 | 北京忆恒创源科技有限公司 | 原子写命令的方法与装置 |
US10884630B2 (en) * | 2017-04-13 | 2021-01-05 | Hitachi, Ltd. | Storage system |
KR102395538B1 (ko) * | 2017-04-28 | 2022-05-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10552042B2 (en) * | 2017-09-06 | 2020-02-04 | Samsung Electronics Co., Ltd. | Effective transaction table with page bitmap |
CN107832238B (zh) * | 2017-10-09 | 2021-08-31 | 江苏航天龙梦信息技术有限公司 | 一种基于龙芯处理器平台的高速缓存作内存的方法 |
FR3072476A1 (fr) * | 2017-10-13 | 2019-04-19 | Proton World International N.V. | Unite logique de memoire pour memoire flash |
KR20190052368A (ko) * | 2017-11-08 | 2019-05-16 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US11099980B2 (en) | 2018-05-09 | 2021-08-24 | International Business Machines Corporation | Host aware update write |
CN110737392B (zh) * | 2018-07-20 | 2023-08-25 | 伊姆西Ip控股有限责任公司 | 管理存储系统中的地址的方法、设备和计算机可读存储介质 |
US10761978B2 (en) | 2018-10-25 | 2020-09-01 | Micron Technology, Inc. | Write atomicity management for memory subsystems |
CN111267089A (zh) * | 2018-12-04 | 2020-06-12 | 北京猎户星空科技有限公司 | 一种动作原子的生成与执行方法及装置、设备和存储介质 |
JP6708762B1 (ja) * | 2019-01-29 | 2020-06-10 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
CN113168287B (zh) * | 2019-04-01 | 2024-05-10 | 桑迪士克科技有限责任公司 | 用于可视化主机命令与存储系统性能之间的相关性的方法和系统 |
KR20210018570A (ko) * | 2019-08-05 | 2021-02-18 | 에스케이하이닉스 주식회사 | 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치 |
US11169973B2 (en) | 2019-08-23 | 2021-11-09 | International Business Machines Corporation | Atomically tracking transactions for auditability and security |
CN112748679B (zh) * | 2019-10-31 | 2022-05-27 | 北京国双科技有限公司 | 数据处理方法和装置 |
TWI744049B (zh) * | 2020-02-06 | 2021-10-21 | 瑞昱半導體股份有限公司 | 記憶體控制器與資料處理方法 |
US12081427B2 (en) | 2020-04-20 | 2024-09-03 | Mellanox Technologies, Ltd. | Time-synchronization testing in a network element |
KR20220020143A (ko) * | 2020-08-11 | 2022-02-18 | 삼성전자주식회사 | 오버라이트 처리를 수행하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작 방법 |
US11360888B1 (en) * | 2021-02-16 | 2022-06-14 | Micron Technology, Inc. | Host system notification based on entry miss |
US12111681B2 (en) | 2021-05-06 | 2024-10-08 | Mellanox Technologies, Ltd. | Network adapter providing isolated self-contained time services |
WO2022252082A1 (zh) * | 2021-05-31 | 2022-12-08 | 华为技术有限公司 | 一种数据处理方法、设备及系统 |
US11726918B2 (en) * | 2021-06-28 | 2023-08-15 | Advanced Micro Devices, Inc. | Dynamically coalescing atomic memory operations for memory-local computing |
US11907754B2 (en) * | 2021-12-14 | 2024-02-20 | Mellanox Technologies, Ltd. | System to trigger time-dependent action |
US11706014B1 (en) | 2022-01-20 | 2023-07-18 | Mellanox Technologies, Ltd. | Clock synchronization loop |
US11917045B2 (en) | 2022-07-24 | 2024-02-27 | Mellanox Technologies, Ltd. | Scalable synchronization of network devices |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101501623A (zh) * | 2006-05-03 | 2009-08-05 | 数据机器人技术公司 | 感知文件系统的块存储系统、装置和方法 |
CN101872319A (zh) * | 2004-11-05 | 2010-10-27 | 数据机器人技术公司 | 存储系统条件指示器及其使用方法 |
CN102156700A (zh) * | 2010-02-12 | 2011-08-17 | 华为技术有限公司 | 数据库的访问方法、装置及系统 |
WO2012016089A2 (en) * | 2010-07-28 | 2012-02-02 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
CN102880704A (zh) * | 2012-09-25 | 2013-01-16 | 上海证券交易所 | 一种新型的并发内存数据组织与访问方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8452912B2 (en) * | 2007-10-11 | 2013-05-28 | Super Talent Electronics, Inc. | Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read |
KR100484147B1 (ko) * | 2002-07-26 | 2005-04-18 | 삼성전자주식회사 | 플래시 메모리 관리 방법 |
US7310711B2 (en) * | 2004-10-29 | 2007-12-18 | Hitachi Global Storage Technologies Netherlands B.V. | Hard disk drive with support for atomic transactions |
US7650458B2 (en) * | 2006-06-23 | 2010-01-19 | Microsoft Corporation | Flash memory driver |
US8266365B2 (en) * | 2008-12-17 | 2012-09-11 | Sandisk Il Ltd. | Ruggedized memory device |
US8375227B2 (en) * | 2009-02-02 | 2013-02-12 | Microsoft Corporation | Abstracting programmatic representation of data storage systems |
US10817421B2 (en) * | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
US9218279B2 (en) * | 2013-03-15 | 2015-12-22 | Western Digital Technologies, Inc. | Atomic write command support in a solid state drive |
US9292337B2 (en) * | 2013-12-12 | 2016-03-22 | International Business Machines Corporation | Software enabled and disabled coalescing of memory transactions |
-
2014
- 2014-06-24 GB GB1411193.4A patent/GB2527529B/en active Active
-
2015
- 2015-05-19 CN CN201580032738.9A patent/CN106471478B/zh active Active
- 2015-05-19 US US15/320,380 patent/US10445000B2/en active Active
- 2015-05-19 WO PCT/GB2015/051467 patent/WO2015198009A1/en active Application Filing
- 2015-05-19 KR KR1020177001078A patent/KR102395360B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872319A (zh) * | 2004-11-05 | 2010-10-27 | 数据机器人技术公司 | 存储系统条件指示器及其使用方法 |
CN101501623A (zh) * | 2006-05-03 | 2009-08-05 | 数据机器人技术公司 | 感知文件系统的块存储系统、装置和方法 |
CN102156700A (zh) * | 2010-02-12 | 2011-08-17 | 华为技术有限公司 | 数据库的访问方法、装置及系统 |
WO2012016089A2 (en) * | 2010-07-28 | 2012-02-02 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
CN102880704A (zh) * | 2012-09-25 | 2013-01-16 | 上海证券交易所 | 一种新型的并发内存数据组织与访问方法 |
Also Published As
Publication number | Publication date |
---|---|
GB2527529B (en) | 2021-07-14 |
WO2015198009A1 (en) | 2015-12-30 |
CN106471478A (zh) | 2017-03-01 |
US10445000B2 (en) | 2019-10-15 |
GB2527529A (en) | 2015-12-30 |
KR102395360B1 (ko) | 2022-05-09 |
US20170160933A1 (en) | 2017-06-08 |
GB201411193D0 (en) | 2014-08-06 |
KR20170021287A (ko) | 2017-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106471478B (zh) | 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 | |
US9323659B2 (en) | Cache management including solid state device virtualization | |
US9489226B2 (en) | Systems and methods to manage write commands in a cache | |
US8918581B2 (en) | Enhancing the lifetime and performance of flash-based storage | |
US9678863B2 (en) | Hybrid checkpointed memory | |
EP3230846B1 (en) | Performing an atomic write operation across multiple storage devices | |
US20190369892A1 (en) | Method and Apparatus for Facilitating a Trim Process Using Auxiliary Tables | |
US9280478B2 (en) | Cache rebuilds based on tracking data for cache entries | |
US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
US20170024140A1 (en) | Storage system and method for metadata management in non-volatile memory | |
US10838629B2 (en) | Solid state device with fast boot after ungraceful shutdown | |
US10152416B2 (en) | Buffer cache apparatus, journaling file system and journaling method for incorporating journaling features within non-volatile buffer cache | |
US20130339569A1 (en) | Storage System and Method for Operating Thereof | |
US20150261463A1 (en) | Asynchronous consistent snapshots in persistent memory stores | |
US9087006B2 (en) | Destaging cached data in multiple recurrences in a storage system | |
JP2019128949A (ja) | デデュープ可能なメモリキャッシュ及びそのための動作方法 | |
US11841801B2 (en) | Metadata management in non-volatile memory devices using in-memory journal | |
US20230044942A1 (en) | Conditional update, delayed lookup | |
US9323671B1 (en) | Managing enhanced write caching | |
KR20140083338A (ko) | 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법 | |
TWI850721B (zh) | 記憶體內日誌 | |
TWI856880B (zh) | 非暫態電腦可讀取媒體、儲存裝置、及儲存方法 | |
US11650759B2 (en) | Method and apparatus of managing a non-volatile memory using an in-memory journal | |
US9946656B2 (en) | Completion packet return based on eviction or flush | |
US11733924B1 (en) | Method for discarding garbage collection data during power loss |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |