CN108701089A - 用于处理到可寻址单元的部分的顺序写入的方法和设备 - Google Patents
用于处理到可寻址单元的部分的顺序写入的方法和设备 Download PDFInfo
- Publication number
- CN108701089A CN108701089A CN201780014727.7A CN201780014727A CN108701089A CN 108701089 A CN108701089 A CN 108701089A CN 201780014727 A CN201780014727 A CN 201780014727A CN 108701089 A CN108701089 A CN 108701089A
- Authority
- CN
- China
- Prior art keywords
- write
- written
- block
- data
- physical block
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000004044 response Effects 0.000 claims abstract description 46
- 230000009471 action Effects 0.000 claims description 3
- 238000013507 mapping Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000012620 biological material Substances 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000011248 coating agent Substances 0.000 description 1
- 238000000576 coating method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000011368 organic material Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000011257 shell material Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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/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
- 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
- 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
- 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/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/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]
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供的是用于处理到用以存储数据的存储器管芯的可寻址单元的部分的顺序写入的设备和方法。接收到可寻址单元的第一部分的写入,并且所述写入被写入到可寻址单元的第一部分。在到可寻址单元的先前部分的先前写入之后接收到可寻址单元的下一部分的下一写入。响应于下一写入针对先前写入是顺序的而将下一写入顺序地写入到在先前部分之后的可寻址单元的下一部分。响应于下一写入针对先前写入不是顺序的而将除下一写入之外的数据写入到在先前部分之后的可寻址单元。
Description
技术领域
本文描述的实施例一般涉及用于处理可寻址单元的部分的顺序写入的设备和方法。
背景技术
可以构建由NAND存储器单元组成的固态驱动器(SSD)以通过将间接表用于将逻辑块地址(LBA)地址映射到物理地址来处理接收的到LBA的写入请求。SSD控制器维持被写入单独的易失性存储器(诸如动态随机存取存储器(DRAM))中的物理地址的元数据。SSD控制器使用间接表来确定存储LBA地址的数据的物理数据位置,并执行元数据读取,继之以将数据写入到物理数据位置并更新物理数据位置的元数据(诸如通过递增写入计数字段)。
在当前的SSD系统中,可以为LBA的块维持元数据和纠错码(ECC)数据。如果存在到块中的LBA中的仅一个或少于所有的LBA的写入,则SSD控制器对于块中所有LBA执行读取-修改-写入,这涉及首先读取块中的LBA映射到的SSD存储器单元中的所有物理数据位置,修改具有针对修改的LBA的数据的物理数据位置,以及然后将块中针对所有LBA(包括未修改的那些)的所读取和修改的数据重新写入回到SSD中的物理数据位置。
附图说明
参考未按比例绘制的附图,通过示例的方式描述了实施例,在附图中相似参考标号指类似元件。
图1示出了存储器子系统的实施例。
图2示出了逻辑地址到逻辑块、到物理块、以及到存储器管芯中的物理数据位置的映射的实施例。
图3示出了包括存储器管芯中的物理数据位置的物理块的物理块元数据的实施例。
图4示出了块群组写入信息实例的实施例。
图5示出了用于处理到连续逻辑地址的顺序写入的操作的实施例。
图6示出了用于执行损耗调整(wear leveling)的操作的实施例。
图7a和7b示出了被执行以处理到连续逻辑地址的顺序写入的操作的实施例。
图8示出了在其中可以部署所描述实施例的存储器子系统的系统的实施例。
具体实施方式
所描述的实施例提供了用以处理到存储器子系统(诸如由非易失性存储器单元组成的非易失性存储器系统)的多个连续逻辑地址的顺序写入数据的技术。所描述的实施例通过在处置到形成非易失性存储器单元的存储器管芯中的物理数据位置的连续物理块的顺序写入时最小化元数据读取和写入操作的数量来优化顺序写入的处理。
通过所描述的实施例,存储器控制器接收针对多个连续逻辑地址的顺序写入数据。进行如下确定:包括块群组的连续物理块具有针对多个连续逻辑地址的数据,并且管芯中的连续物理数据位置具有块群组中所确定的物理块的数据。顺序写入数据被写入到块群组中物理块的所确定的连续物理数据位置。更新物理地址的块群组的块群组元数据。块群组元数据可以包括块群组中物理块之一的元数据,从而当针对块群组中的所有物理块执行写入操作时,仅读取和更新该物理块的元数据。
进一步实施例提供了用以处置到物理块的逻辑地址的一系列顺序写入的技术。所描述的实施例通过接收针对逻辑地址的初始写入来处理顺序部分写入。初始写入被写入到具有针对存储器管芯中多个逻辑地址的数据的物理块的初始部分,其中为物理数据位置的物理块提供元数据。当接收到在先前写入(包括初始写入和在初始写入之后到物理数据位置的物理块的顺序写入中的一个)之后的到物理数据位置的物理块的下一写入时,响应于下一写入针对先前写入是顺序的,下一写入在先前写入之后被顺序地写入到物理数据位置的物理块。响应于下一写入针对先前写入不是顺序的,除下一写入之外的数据在先前写入之后被写入到物理数据位置的物理块。
在以下描述中,阐述了众多特定细节(诸如逻辑实现、操作码、用于指定操作数的部件、资源划分/共享/复制实现、系统组件的类型和相互关系、以及逻辑划分/集成选择),以便提供对本发明的更透彻理解。然而,将由本领域技术人员意识到的是,可以在没有此类特定细节的情况下实践本发明。在其它实例中,尚未详细示出控制结构、门级电路和完整软件指令序列,以免使本发明难以理解。通过所包括的描述,本领域那些普通技术人员将能够在无需过度实验的情况下实现适当的功能性。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括具体特征、结构、或特性,但是每一个实施例可能不一定包括所述具体特征、结构、或特性。此外,此类短语不一定指的是相同实施例。某些实施例涉及存储装置电子组合件。实施例包括用于形成电子组合件的方法和装置两者。
图1示出了存储器子系统100的实施例,所述存储器子系统100包括存储器控制器102、与主机系统(未示出)进行接口的主机接口104、以及包括在可寻址位置存储数据的存储元件的多个存储器管芯1061,1062…106m。在一个实施例中,每个管芯106i可以包括多个可寻址分区,其各自具有存储器地址。控制器102包括读取/写入逻辑108,其管理通过主机接口104从附连主机(未示出)接收的读取和写入请求。控制器102读取/写入逻辑108包括逻辑地址映射函数110以将所接收的逻辑地址(诸如逻辑块地址(LBA))映射到逻辑块,其中每个逻辑块由多个LBA组成。块地址映射112将逻辑块映射到对应物理块的物理块地址。存储针对逻辑块中的多个LBA的数据的每个物理块由物理块地址(PBA)所标识。逻辑地址映射函数可以包括数学函数,其映射字节的块(诸如512字节)的较低位(例如36位LBA的前33位),以将逻辑块映射到逻辑块,诸如八个512字节LBA的块。LBA的较高位(诸如位34-36)可被用于将512字节块的连续LBA的逻辑块的LBA(例如,前33位)映射到连续LBA的逻辑块中的特定位置,诸如逻辑块中八个LBA中的特定一个。
控制器102使用块地址映射112以将由多个LBA组成的逻辑块映射到物理块的物理块地址(PBA),其由存储器管芯1061,1062…106m中的物理数据位置组成。物理块的元数据将物理块映射到存储器管芯1061,1062…106m中的物理数据位置。可以将连续的物理块分组在块群组中,其中块群组中的连续物理块的块群组元数据可被维持在块群组的物理块之一(诸如块群组中的第一物理块)中,以管理到块群组的所有物理块的顺序写入,作为到整个块群组的写入。
控制器102可以维持块群组写入信息实例400,其具有针对到不同块群组的写入的多个活动流之一的信息,每个块群组包括映射到存储器管芯1061,1062…106m中的连续物理数据位置的连续物理块。块群组写入信息实例400i管理到对应于存储器管芯1061,1062…106m中连续物理数据位置的块群组的顺序写入操作的不同流。控制器102具有损耗调整逻辑114,其用于将存储器管芯1061,1062…106m中的物理数据位置的块移动到物理数据位置的其它块,以将频繁被访问的物理数据位置移动到较不频繁被写入的物理数据位置以跨存储器管芯1061,1062…106m中的物理数据位置来分布写入和擦除。
存储器控制器102通过存储器接口116与存储器管芯1061,1062…106m进行接口。
在一个实施例中,控制器102在物理数据位置的物理块(作为顺序块)上操作以通过避免必须针对物理数据位置的每一个物理块而读取和更新元数据(这借助于替代地针对块群组中布置的连续物理块而执行操作)来减少开销管理并优化操作。所描述的实施例意图当主机系统正将逻辑地址(LBA)分组为顺序逻辑地址的集群时进行优化处理,以作为顺序操作的一部分进行处理,例如主机操作系统所要求的顺序写入操作。例如,顺序写入操作可以是日志结构化阵列(LSA)写入的一部分,其中数据被顺序写入到LSA文件。控制器102通过将连续逻辑块地址映射到逻辑块,并且然后将逻辑块映射到在连续物理块的块群组上被操作的物理块的物理块地址来优化来自主机的顺序写入操作,这些连续物理块进而映射到存储器管芯1061,1062…106m中的连续物理数据位置。这允许控制器102通过将存储器管芯1061,1062…106m中连续物理数据位置的物理块作为单个块群组进行管理来减少顺序写入操作的开销,使得对于块群组中的所有物理块仅执行一个开销操作而不是对块群组中的每个物理块都执行开销操作。
存储器子系统100和存储器管芯1061,1062…106m可以实现非易失性存储器装置,诸如三维(3D)交叉点存储器、相变存储器(PCM)、结合忆阻器技术的存储器、磁阻随机存取存储器(MRAM)、自旋转移矩(STT)-MRAM、NAND存储器单元、铁电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、电阻随机存取存储器(ReRAM)等。存储器子系统100可以不维持单独缓冲器或动态随机存取存储器(DRAM)来存储元数据,并且可以替代地将元数据存储在存储器管芯1061,1062…106m中。备选地,元数据可以维持在存储器子系统100中的单独存储器装置(诸如DRAM)中。
控制器102(包括其中的组件,诸如读取/写入逻辑108、逻辑地址映射函数110、块地址映射112、和块群组写入信息400)可以在集成电路或其它硬件装置中实现,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)。
图2示出了这样的映射200:连续逻辑地址202(诸如LBA)映射到逻辑块204,逻辑块204进而一对一映射到物理块206,物理块206映射到存储器管芯1061,1062…106m中的物理数据位置208。例如,作为示例,LBA 1...16分别作为连续LBA的块210、212(LBA 1-8和9-10)来管理,连续LBA的块210、212通过逻辑地址映射函数110而映射到逻辑块1和2。块地址映射112将每个逻辑块1,2...m+8映射到物理块1,2...m+8中对应的一个,这些物理块会由PBA所标识。物理块206可以被布置为连续物理块的块群组,诸如八个物理块的块群组214、216,其进而映射到存储器管芯1061,1062…106m中的连续物理数据位置208。块群组214、216中的每个物理块206映射到多个物理数据位置208。
在初始化时,块群组(例如,214、216)中的物理块206采用第一到最后的排序分别映射到对应的连续物理数据位置208(例如,1,2,3...64,65-124)。作为损耗调整操作的结果,可以将连续物理块206的块群组(例如,214、216)移动到连续物理数据位置的不同块,诸如通过将最初映射到频繁被写入(即,热)的物理数据位置218的块群组214移动到不频繁被访问(即,冷)的连续物理数据位置220的块(例如r...r+64)。作为此类损耗调整的结果,物理块的连续块群组可能不映射到连续群组物理数据位置208。
图3示出了针对由PBA所标识的每个物理块206的物理块元数据300i的实施例,所述物理块元数据包括:角色标志302,其指示物理块元数据是否还用作包括物理块的块群组(例如,214、216)的块群组元数据;第一物理数据位置304,其指示物理块中的第一数据被写入到的第一物理数据位置208;以及写入计数306,其指示已对物理块中的每个物理数据位置所执行的写入的数量。
当物理块元数据300i还包括针对物理块的群组的块群组元数据时,则第一物理数据位置304包括块群组的第一物理数据位置,并且写入计数指示到块群组的写入、或到块群组中的每个物理块的写入。在所描述的实施例中,块群组中的物理块之一(诸如第一物理块)的块元数据可以用作整个块群组的元数据,因为假定顺序地发生到块群组中每一个物理块的写入。块群组214、216中的物理块中的所有数据可以从块群组的第一物理数据位置304开始被顺序地写入到连续的物理数据位置。
在图3的所描述实施例中,用作块群组元数据的物理块元数据300i由角色标志302如此指示。在备选实施例中,可以不使用角色标志302,因为存储器控制器102可以被编程以标识具有块群组元数据的块群组的预定(例如,第一)物理块(使用块群组编号作为到物理块中的偏移),并且可以从每个块群组中的物理块的数量和块群组编号确定每个块群组的预定(例如,第一)物理块。在此类情况下,不需要角色标志302,因为已知块群组元数据在块群组的预定或第一物理块的元数据中。
物理块(或块群组)元数据300i可被存储在专用于存储物理块元数据300i的物理数据位置208的区域中。
图4示出了针对到块群组之一的写入的每个流的块写入信息实例400i的实施例:块群组标识符402,其可以包括块群组的第一物理块的标识符;多个顺序写入字节404,其可用于确定物理块402中的所有顺序物理数据位置何时已被写入;以及先前写入位置406,其指示在块群组402中最后写入的物理数据位置。
图5示出了由读取/写入逻辑108所执行以处理针对连续逻辑地址(诸如在逻辑地址202的集群群组中)的顺序写入数据的操作的实施例。主机操作系统可以顺序地写入逻辑地址,诸如针对日志结构化阵列(LSA)或其它操作。在接收到(在框500)针对逻辑地址的集群群组中的连续逻辑地址的块(例如,210、212)的顺序写入数据时,读取/写入逻辑108使用逻辑地址映射函数110来确定(在框502)对应于连续逻辑地址的连续逻辑块204,其中每个逻辑块204由多个逻辑地址(例如210、212)组成。读取/写入逻辑108从块地址映射112确定(在块504)由PBA所标识的连续物理块(其被映射到形成块群组的所确定连续逻辑块)。读取/写入逻辑108读取(在块506)针对包括所确定的物理块的块群组的块群组元数据300i,其可包括针对块群组的预定(例如,第一)物理块的物理块元数据300i。读取/写入逻辑108递增(在块508)块群组的块群组元数据300i的写入计数306。在一个实施例中,仅递增包括预定的物理块元数据300i的块群组元数据,并且不递增或更新块群组中的其它物理块的元数据,因此优化块群组写入的元数据操作。在备选实施例中,在不延迟写入的情况下,还可以更新块群组中所有其它物理块的物理块元数据,以防停止根据块群组方案来管理物理块。
读取/写入逻辑108从块群组元数据300i确定(在块510)块群组的第一物理数据位置304。块群组的物理块中的顺序写入数据被写入(在块512)到物理数据位置(从块群组的所确定的第一物理数据位置开始到在第一物理数据位置之后的连续物理数据位置)。在将顺序写入数据写入到第一物理数据位置之后的块群组中的连续物理数据位置之前,可能不读取在第一物理块之后的块群组中的物理块的物理块元数据。以这种方式,通过不必须读取针对被顺序写入到块群组的每个物理块的物理块元数据来优化将数据写入到顺序物理块。
通过图5的操作,针对块群组的物理块之一仅执行块群组元数据300i的一个读取和写入,并且顺序地写入除预定物理块之外的所有物理块的数据,而不必须执行进一步物理块元数据读取和写入。当写入到顺序物理数据位置的多个物理块时,元数据读取和写入的数量的这种减少优化了到多个连续物理块的块群组的写入操作。
图6示出了由损耗调整逻辑114执行以将更频繁写入顺序物理数据位置的块的数据分配到较不频繁被写入的顺序物理数据位置的块的操作的实施例。在发起(在框600)损耗调整操作时,损耗调整逻辑114确定(在框602)针对每个块群组的块群组元数据300i,诸如通过处理针对每个块群组中的预定(例如,第一)物理块的块群组元数据。从每个块群组的块群组元数据300i读取(在块604)写入计数306。损耗调整逻辑114确定(在框606)顺序物理数据位置的源块(其块群组元数据300S具有相对高的写入计数306)移动到目标块群组(其块群组元数据300T具有相对低的写入计数)。将源块群组的连续物理块写入(在块608)到目标块群组的连续物理块,这可涉及首先将目标块群组的数据移动到不同物理数据位置。损耗调整逻辑114更新(在块610)源块群组元数据300S中的第一物理数据位置304,以指示源块群组映射到的新的开始物理数据位置。例如,可以更新块群组214的第一物理数据位置304以指示物理数据位置r,该物理数据位置r是在从物理数据位置218移动到220之后的源块群组214的新的第一物理数据位置。以这种方式,第一物理数据位置304可以将物理块的块群组映射到与在初始映射中所指配的那些物理数据位置不同的物理数据位置,并且连续物理块的连续块群组可不被存储在物理数据位置的连续群组中,如图2中所示的。
通过图6的所描述实施例,基于读取块群组元数据300i和写入计数306,选择多个物理块或PBA的块群组以用于移动,而不必须读取和更新针对块群组中的所有物理块的元数据中的写入计数306。这优化了损耗调整操作,因为仅需要读取针对块群组的一个物理块的物理块元数据300i以确定如何将更频繁被写入的块移动到较不频繁被写入的块。
图7a和7b示出了由读取/写入逻辑108所执行以处置到连续逻辑地址的一系列顺序写入(诸如对数据库记录的更新)的操作的实施例。无论何时对新LBA开始写入,执行图7a、7b的操作以允许处置到多个物理块206的多个交错写入。在接收到(在块700)到逻辑地址(LBA)的写入时,读取/写入逻辑108使用逻辑地址映射函数110和块地址映射112来确定(在块702)LBA映射到的逻辑块和映射到所确定逻辑块204的物理块206的PBA。读取/写入逻辑108确定(在块704)写入是否要到所确定物理块的第一物理数据位置304,如在物理块元数据300i中针对所确定的物理块所指示的。
如果(在块704)写入是要到物理块的第一物理数据位置304,则读取/写入逻辑108创建(在块706)标识物理块标识符402的块写入信息实例400i,将被顺序写入的字节404设置为零,并将先前写入的位置406设置为物理块402的第一物理数据位置304。接收到的写入然后被写入(在块708)到物理块的第一物理数据位置304。物理块元数据300i中的写入计数306递增(在块710),并且将先前写入的位置406设置(在块712)为针对所接收的逻辑地址的数据被写入到的物理数据位置。写入的顺序字节404的数量递增了(在块714)写入的字节的数量,例如512字节。如果每个逻辑地址(LBA)202和物理数据位置208包括512字节,并且物理和逻辑块包括八个逻辑地址,则当所有写入的顺序字节404变成4千字节时,填满(fill)物理块。然后控制结束以等待到块的下一写入以进行处理。
如果(在块700)所接收的写入不到物理数据位置的物理块的第一物理数据位置304,则读取/写入逻辑108确定(在块716)下一写入是否到当前接收顺序写入的物理块,这可以被确定,如果存在针对物理块(包括针对写入被引导到的逻辑地址(LBA)的数据)打开的块写入信息实例400i。如果(在块716)写入不到当前接收写入的流的物理块(这意味着它是随机写入,因为它也不是到物理块的第一物理数据位置304的写入),则读取/写入逻辑108执行(在块718)读取-修改-写入以将所接收的写入写入到所接收的写入的逻辑地址映射到的物理块。读取-修改写入可以涉及读取具有针对连续LBA(包括所接收的LBA)的数据的连续物理数据位置的整个物理块,通过针对所接收LBA的所接收写入数据来修改物理数据位置,并且然后写回针对物理块中所有物理数据位置的所读取和修改的数据。如果(在块716)写入是到当前接收流传输顺序写入的物理块,则控制前进(在块720)到图7b中的块722。
读取/写入逻辑108确定(在块722)下一写入针对到物理块的先前写入或针对块写入信息实例400i中所指示的先前写入位置406之后的位置(诸如先前写入的物理数据位置或逻辑地址(LBA))是否是顺序的。如果(从块722的“否”分支)所接收的新写入针对上一写入的写入或在先前写入的位置406之后不是顺序的,则随机数据被写入(在块724)到顺序物理数据位置的物理块的剩余部分。然后,读取/写入逻辑108可以执行(在块726)针对所接收的下一写入的读取-修改-写入。然后可以删除(在块728)块写入信息实例400i。
如果(从块722的“是”分支)所接收的下一写入针对先前写入(例如,先前写入的位置406)是顺序的,则下一写入被顺序地写入(在块730)到在物理块402的先前写入位置406之后的物理数据位置208。写入的顺序字节404的数量递增(在块732)了写入的字节的数量,例如512字节。如果(在块734)现在填满块(这可以在顺序写入字节404等于物理块大小时被确定),则控制结束,并且块写入信息实例400i可以被删除(在块728)。如果(在块730)未填满块,则控制结束并等待下一写入。
通过图7a和7b的实施例,到作为较大物理块的部分的逻辑地址的顺序写入可以顺序地发生,以避免必须对到具有针对多个LBA的数据的物理块的一部分的每个部分顺序写入执行读取-修改-写入(通过允许物理数据位置的物理块填满,只要部分顺序写入被接收,就直到块被填满为止)。这通过避免必须针对每个单个LBA写入执行连续读取-修改-写入来减少NVRAM装置的损耗,并且通过避免由读取-修改写入引起的延迟来优化性能,其要求到具有针对多个LBA的数据的整个物理块的读取和写入。此外,如果在接收随机写入时不能实现顺序写入处理的益处,则停止顺序写入操作,并且对新的随机写入执行读取-修改-写入。更进一步,图7a和7b的实施例减少了元数据处理开销,因为元数据300i(诸如写入计数306)仅在写入到具有针对多个LBA的数据的物理块的第一物理数据位置时被更新,而不是在写入针对随后LBA(其映射到物理块的第一物理数据位置之后的物理数据位置)的数据时被更新。
此外,图7a和7b的操作可以针对到不同物理块的多个交错写入流来执行,而不需要对顺序流进行缓冲和检测。通过所描述的实施例,当接收到针对同时将逻辑地址的数据写入到物理数据位置的物理块的待决写入流之一的写入时,则控制器将在物理块中所写入的最后物理数据位置之后顺序地写入。
在图7a和7b的实施例中,写入要到LBA或逻辑地址202,其映射到物理数据位置的一个物理块中的物理数据位置,该物理数据位置具有针对包括多个逻辑地址(LBA)202的逻辑块204的数据。在备选实施例中,写入可以到可寻址单元的不同部分。例如,在进一步实施例中,初始写入要到可寻址单元并被写入到可寻址单元的部分的初始部分,其中为可寻址单元提供元数据。在到先前部分的先前写入之后,下一写入可以是到可寻址单元的下一部分。如果下一部分针对先前写入的部分是顺序的,则下一写入被顺序地写入到在先前部分之后的可寻址单元的下一部分。否则,如果下一写入针对先前写入不是顺序的,则除下一写入之外的数据被写入到先前部分之后的可寻址单元的部分的剩余部分。
例如,可寻址单元可以包括LBA,并且所述部分包括LBA的可寻址段,并且写入要到LBA的可寻址段或部分。在进一步实施例中,可寻址单元可包括块群组,并且所述部分包括由物理数据位置组成的块群组中的物理块,其中每个写入要到映射到块群组的物理块之一的PBA的连续逻辑地址。在针对图7a和7b所描述的实施例中,可寻址单元包括物理块,并且所述部分包括物理数据位置(在物理块中到逻辑地址的写入映射到所述物理数据位置)。
在可寻址单元是块群组并且每个部分是物理块的实施例中,图7a和7b的操作可以针对到连续LBA 202(其映射到块群组中的一个物理块206的PBA)的写入而执行,并且可以针对到块群组的物理块的单独写入进行确定,使得如果写入要到针对块群组的上一写入的物理块不是顺序的物理块,则可以对整个块群组或者块群组中的所有物理块206执行读取-修改-写入。
在可寻址单元是LBA并且所述部分是LBA的可寻址部分的实施例中,并且图7a和7b的操作可以针对到LBA的部分的顺序写入而执行,并且可以针对到LBA的部分的单独写入进行确定,使得如果写入要到针对LBA的上一写入的部分是不连续的LBA的部分,则可以针对整个LBA执行读取-修改-写入。
在进一步的实施例中,物理数据位置的物理块中的数据可以被加密,并且加密可以能够处置到不同物理数据块的交错写入的加密,只要到物理块之一的写入保持是顺序的。在此类情况下,加密可以通过到物理块的顺序写入而继续,但是如果接收了到针对块的先前写入的物理数据位置不是顺序的物理块的写入,则读取-修改-写入和加密针对整个物理块而执行,使得可以通过读取-修改-写入来加密物理块的所有数据。
图8示出了计算机系统800实现的实施例,其中图1的存储器子系统100可被部署为非易失性存储装置802。计算机系统800包括处理器804,其通过总线906与易失性存储器装置908(其中正执行的程序、操作数和参数被高速缓存)以及非易失性存储装置802(其中可以存储数据和程序)进行通信。处理器804还可以与输入/输出(I/O)装置810a、810b进行通信,输入/输出(I/O)装置810a、810b可以包括输入装置、显示装置、图形卡、端口、网络接口等。非易失性存储装置802可被安装到计算机系统800外壳(诸如在存储驱动器托架中),或通过端口接口或通过网络而被连接到计算机系统800。
应当领会,贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合该实施例所描述的具体特征、结构或特性被包括在本发明的至少一个实施例中。因此,强调并且应当领会,在本说明书的各种部分中对“实施例”或“一个实施例”或“备选实施例”的两个或更多引用不必要全部指相同的实施例。此外,具体特征、结构或特性在合适时可在本发明的一个或多个实施例中被组合。
类似地,应当领会,在本发明的实施例的前述描述中,为了简化本公开的目的,有时将各种特征一起分组在单个实施例、附图或其描述中,从而帮助理解各种发明方面的一个或多个。然而,公开的此方法不被解译为反映所要求保护的主题要求比每个权利要求中所明确叙述的特征更多的特征的意图。而是,如以下权利要求所反映的,发明方面在于少于单个前述公开实施例的所有特征。因此,在详细描述之后的权利要求由此被明确结合在此详细描述中。
存储器控制器102及其中的组件108、110、112、400的所描述操作可被实现为包括使用标准编程和/或工程技术来生产软件、固件、硬件或其任何组合的计算机可读存储介质的方法、设备、装置、计算机程序产品。所描述的操作可被实现为在“计算机可读存储介质”( 其可以包括用以直接执行功能的诸如专用集成电路(ASIC)的集成电路装置)中或在处理器可以读取且执行来自计算机存储可读介质的代码之处所维持的代码或逻辑。计算机可读存储介质包括有形元件,所述有形元件包括以下项中的至少一项:电子电路、存储材料、无机材料、有机材料、生物材料、壳体(casing)、外壳(housing)、涂层、和硬件。计算机可读存储介质可包括但不限于磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储装置(CD-ROM、DVD、光盘等)、易失性和非易失性存储器装置(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪速存储器、固件、可编程逻辑等)、固态装置(SSD)等。计算机可读存储介质还可以包括在硬件装置(例如,集成电路芯片、可编程逻辑装置、可编程门阵列(PGA)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)中实现的数字逻辑。更进一步,实现所描述的操作的代码可以在“传输信号”中实现,其中传输信号可以通过空间或通过传输介质来传播,所述传输介质是诸如光纤、铜线等。代码或逻辑被编码于其中的传输信号可以进一步包括无线信号、卫星传输、无线电波、红外信号、蓝牙等。嵌入在计算机可读存储介质上的程序代码可以作为传输信号从传送站或计算机传送到接收站或计算机。计算机可读存储介质不仅由传输信号组成,还包括有形组件。本领域那些技术人员将认识到,在不脱离本发明的范畴的情况下可以对此配置进行许多修改,并且制品可以包括本领域中已知的适合的信息承载介质。
本文中使用的参考字符(诸如i、m和r)在本文中用于表示元件的可变数量的实例,其可以表示相同或不同值,并且当在不同描述实例中与不同或相同元素一起使用时可以表示相同或不同值。
示例
示例1是一种用于处理到可寻址单元的部分的顺序写入的设备,所述设备包括:存储器管芯,所述存储器管芯用以存储数据;控制器,所述控制器用以执行针对所述存储器管芯的写入操作以:接收到存储在数据扇区的物理块中的连续逻辑地址的第一逻辑地址的写入;将所接收的写入写入到所述物理块;接收到所述物理块中的所述第一逻辑地址之后的逻辑地址的下一写入;响应于所述下一写入针对到所述物理块的先前写入是顺序的而将所述下一写入写入到所述物理块;以及响应于所述下一写入针对所述先前写入不是顺序的而在所述先前写入之后将除所述下一写入之外的数据写入到数据扇区的所述物理块。
在示例2中,权利要求1和3-8的主题可以可选地包括:所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述物理块。
在示例3中,权利要求1、2和4-8的主题可以可选地包括:所述写入除所述下一写入之外的数据包括在所述先前写入之后将随机数据写入到所述物理块的剩余部分。
在示例4中,权利要求1-3和5-8的主题可以可选地包括:所述控制器还用以:响应于到所述物理块的所述第一逻辑地址的所述写入,在针对所述第一逻辑地址的所述数据的所述写入之后,创建所述物理块的块写入信息实例,所述块写入信息实例指示到所述物理块的数据先前被写入到的先前写入位置。
在示例5中,权利要求1-4和6-8的主题可以可选地包括:所述控制器还用以:确定所述下一写入是否是对于所述物理块中针对所述物理块的所述块写入信息实例中的所述先前写入位置是顺序的下一位置,其中所述下一写入响应于确定所述下一位置针对所述先前写入位置是顺序的而被写入;以及递增所述先前写入位置以指示所述下一位置。
在示例6中,权利要求1-5和7-8的主题可以可选地包括:所述控制器还用以:维持针对到多个物理块的多个顺序写入的流的块写入信息实例,其中所述下一写入响应于存在针对所述物理块的块写入信息实例而被写入,并且其中写入针对不同的物理块而被交错接收并被顺序地写入到它们被引导到的所述物理块,块写入信息实例针对所述物理块而被创建。
在示例7中,权利要求1-6和8的主题可以可选地包括:所述控制器还用以:响应于将顺序数据写入到所述物理块的所有数据扇区而移除所述块写入信息实例。
在示例8中,权利要求1-7的主题可以可选地包括:所述控制器还用以:响应于不存在针对所述物理块所创建的块写入信息实例而执行读取-修改-写入以将所述下一写入写入到包括所述下一写入的所述物理块。
示例9是一种用于处理到可寻址单元的部分的顺序写入的设备,所述设备包括:存储器管芯,所述存储器管芯用以存储数据;控制器,所述控制器用以执行针对所述存储器管芯的写入操作以:接收到可寻址单元的第一部分的写入;将所述写入写入到所述可寻址单元的所述第一部分;接收在到所述可寻址单元的先前部分的先前写入之后的到所述可寻址单元的下一部分的下一写入;响应于所述下一写入针对所述先前写入是顺序的而将所述下一写入顺序写入到在所述先前部分之后的所述可寻址单元的所述下一部分;以及响应于所述下一写入针对所述先前写入不是顺序的而将除所述下一写入之外的数据写入到在所述先前部分之后的所述可寻址单元。
在示例10中,权利要求9和11-13的主题可以可选地包括:所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述可寻址单元。
在示例11中,权利要求9、10、12和13的主题可以可选地包括:所述可寻址单元包括逻辑块地址(LBA),并且其中到所述第一和下一部分的所述写入包括所述LBA的可寻址子段。
在示例12中,权利要求9-11和13的主题可以可选地包括:所述可寻址单元包括块群组,并且其中所述部分包括由数据扇区组成的所述块群组中的物理块,其中所述写入中的每个要到所述块群组中的所述物理块之一。
在示例13中,权利要求9-12的主题可以可选地包括:所述写入除所述下一写入之外的数据包括在所述先前写入之后将随机数据写入到所述可寻址单元的剩余部分。
示例14是一种用于处理到针对存储器子系统的存储器管芯的可寻址单元的部分的顺序写入的方法,所述方法包括:接收到存储在数据扇区的物理块中的连续逻辑地址的第一逻辑地址的写入;将所接收的写入写入到所述物理块;接收到所述物理块中的所述第一逻辑地址之后的逻辑地址的下一写入;响应于所述下一写入针对到所述物理块的先前写入是顺序的而将所述下一写入写入到所述物理块;以及响应于所述下一写入针对所述先前写入不是顺序的而在所述先前写入之后将除所述下一写入之外的数据写入到数据扇区的所述物理块。
在示例15中,权利要求14和16-21的主题可以可选地包括:所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述物理块。
在示例16中,权利要求14、15和17-21的主题可以可选地包括:所述写入除所述下一写入之外的数据包括在所述先前写入之后将随机数据写入到所述物理块的剩余部分。
在示例17中,权利要求14-16和18-21的主题可以可选地包括:响应于到所述物理块的所述第一逻辑地址的所述写入,在针对所述第一逻辑地址的所述数据的所述写入之后,创建所述物理块的块写入信息实例,所述块写入信息实例指示到所述物理块的数据先前被写入到的先前写入位置。
在示例18中,权利要求14-17和19-21的主题可以可选地包括:确定所述下一写入是否是对于所述物理块中针对所述物理块的所述块写入信息实例中的所述先前写入位置是顺序的下一位置,其中所述下一写入响应于确定所述下一位置针对所述先前写入位置是顺序的而被写入;以及递增所述先前写入位置以指示所述下一位置。
在示例19中,权利要求14-18、20和21的主题可以可选地包括:维持针对到多个物理块的多个顺序写入的流的块写入信息实例,其中所述下一写入响应于存在针对所述物理块的块写入信息实例而被写入,并且其中写入针对不同的物理块而被交错接收并被顺序地写入到它们被引导到的所述物理块,块写入信息实例针对所述物理块而被创建。
在示例20中,权利要求14-19和21的主题可以可选地包括:响应于将顺序数据写入到所述物理块的所有数据扇区而移除所述块写入信息实例。
在示例21中,权利要求14-20的主题可以可选地包括:响应于不存在针对所述物理块所创建的块写入信息实例而执行读取-修改-写入以将所述下一写入写入到包括所述下一写入的所述物理块。
在示例22中,权利要求14的主题包括以下项中的至少任何一项:
(1)其中所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的所述数据写入到所述物理块;和/或
(2)其中所述写入除所述下一写入之外的数据包括在所述先前写入之后将随机数据写入到所述物理块的剩余部分;和/或
(3)响应于到所述物理块的所述第一逻辑地址的所述写入,在针对所述第一逻辑地址的所述数据的所述写入之后,创建所述物理块的块写入信息实例,所述块写入信息实例指示到所述物理块的数据先前被写入到的先前写入位置;和/或
(4)确定所述下一写入是否是对于所述物理块中针对所述物理块的所述块写入信息实例中的所述先前写入位置是顺序的下一位置,其中所述下一写入响应于确定所述下一位置针对所述先前写入位置是顺序的而被写入;以及递增所述先前写入位置以指示所述下一位置;和/或
(5)维持针对到多个物理块的多个顺序写入的流的块写入信息实例,其中所述下一写入响应于存在针对所述物理块的块写入信息实例而被写入,并且其中写入针对不同的物理块而被交错接收并被顺序地写入到它们被引导到的所述物理块,块写入信息实例针对所述物理块而被创建;和/或
(6)响应于将顺序数据写入到所述物理块的所有数据扇区而移除所述块写入信息实例;和/或
(7)响应于不存在针对所述物理块所创建的块写入信息实例而执行读取-修改-写入以将所述下一写入写入到包括所述下一写入的所述物理块。
示例23是一种用于处理到针对存储器子系统的存储器管芯的可寻址单元的部分的顺序写入的方法,所述方法包括:接收到可寻址单元的第一部分的写入;将所述写入写入到所述可寻址单元的所述第一部分;接收在到所述可寻址单元的先前部分的先前写入之后的到所述可寻址单元的下一部分的下一写入;响应于所述下一写入针对所述先前写入是顺序的而将所述下一写入顺序写入到在所述先前部分之后的所述可寻址单元的所述下一部分;以及响应于所述下一写入针对所述先前写入不是顺序的而将除所述下一写入之外的数据写入到在所述先前部分之后的所述可寻址单元。
在示例24中,权利要求23、25和26的主题可以可选地包括:所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述可寻址单元。
在示例25中,权利要求23、24和26的主题可以可选地包括:所述可寻址单元包括逻辑块地址(LBA),并且其中到所述第一和下一部分的所述写入包括所述LBA的可寻址子段。
在示例26中,权利要求23、24和25的主题可以可选地包括:所述可寻址单元包括块群组,并且其中所述部分包括由数据扇区组成的所述块群组中的物理块,其中所述写入中的每个要到所述块群组中的所述物理块之一。
在示例27中,权利要求23的主题还包括以下中的至少任何一个:
(1)其中所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述可寻址单元;和/或
(2)其中所述可寻址单元包括逻辑块地址(LBA),并且其中到所述第一和下一部分的所述写入包括所述LBA的可寻址子段;和/或
(3)其中所述可寻址单元包括块群组,并且其中所述部分包括由数据扇区组成的所述块群组中的物理块,其中所述写入中的每个要到所述块群组中的所述物理块之一;和/或
(4)其中所述写入除所述下一写入之外的数据包括在所述先前写入之后将随机数据写入到所述可寻址单元的剩余部分。
示例28是一种用于处理到针对存储器子系统的存储器管芯的可寻址单元的部分的顺序写入的设备,所述设备包括:用于接收到可寻址单元的第一部分的写入的部件;用于将所述写入写入到所述可寻址单元的所述第一部分的部件;用于接收在到所述可寻址单元的先前部分的先前写入之后的到所述可寻址单元的下一部分的下一写入的部件;用于响应于所述下一写入针对所述先前写入是顺序的而将所述下一写入顺序写入到在所述先前部分之后的所述可寻址单元的所述下一部分的部件;以及用于响应于所述下一写入针对所述先前写入不是顺序的而将除所述下一写入之外的数据写入到在所述先前部分之后的所述可寻址单元的部件。
在示例29中,权利要求28的主题可以可选地包括:所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述可寻址单元。
示例30是一种设备,包括用以执行如任何前面权利要求中所要求保护的方法的部件。
示例31是一种机器可读存储装置,包括机器可读指令,所述指令当被执行时,用于实现如任何前面权利要求中所要求保护的方法或实现如任何前面权利要求中所要求保护的设备或系统。
Claims (25)
1.一种用于处理到可寻址单元的部分的顺序写入的设备,所述设备包括:
存储器管芯,所述存储器管芯用以存储数据;
控制器,所述控制器用以执行针对所述存储器管芯的写入操作以:
接收到存储在数据扇区的物理块中的连续逻辑地址的第一逻辑地址的写入;
将所接收的写入写入到所述物理块;
接收到所述物理块中的所述第一逻辑地址之后的逻辑地址的下一写入;
响应于所述下一写入针对到所述物理块的先前写入是顺序的而将所述下一写入写入到所述物理块;以及
响应于所述下一写入针对所述先前写入不是顺序的而在所述先前写入之后将除所述下一写入之外的数据写入到数据扇区的所述物理块。
2.如权利要求1所述的设备,其中,所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述物理块。
3.如权利要求1所述的设备,其中,所述写入除所述下一写入之外的数据包括在所述先前写入之后将随机数据写入到所述物理块的剩余部分。
4.如权利要求1、2和3中任一项所述的设备,其中,所述控制器还用以:
响应于到所述物理块的所述第一逻辑地址的所述写入,在针对所述第一逻辑地址的所述数据的所述写入之后,创建所述物理块的块写入信息实例,所述块写入信息实例指示到所述物理块的数据先前被写入到的先前写入位置。
5.如权利要求4所述的设备,其中,所述控制器还用以:
确定所述下一写入是否是对于所述物理块中针对所述物理块的所述块写入信息实例中的所述先前写入位置是顺序的下一位置,其中所述下一写入响应于确定所述下一位置针对所述先前写入位置是顺序的而被写入;以及
递增所述先前写入位置以指示所述下一位置。
6.如权利要求4所述的设备,其中,所述控制器还用以:
维持针对到多个物理块的多个顺序写入的流的块写入信息实例,其中所述下一写入响应于存在针对所述物理块的块写入信息实例而被写入,并且其中写入针对不同的物理块而被交错接收并被顺序地写入到它们被引导到的所述物理块,块写入信息实例针对所述物理块而被创建。
7.如权利要求4所述的设备,其中,所述控制器还用以:
响应于将顺序数据写入到所述物理块的所有数据扇区而移除所述块写入信息实例。
8.如权利要求4所述的设备,其中,所述控制器还用以:
响应于不存在针对所述物理块所创建的块写入信息实例而执行读取-修改-写入以将所述下一写入写入到包括所述下一写入的所述物理块。
9.一种用于处理到可寻址单元的部分的顺序写入的设备,所述设备包括:
存储器管芯,所述存储器管芯用以存储数据;
控制器,所述控制器用以执行针对所述存储器管芯的写入操作以:
接收到可寻址单元的第一部分的写入;
将所述写入写入到所述可寻址单元的所述第一部分;
接收在到所述可寻址单元的先前部分的先前写入之后的到所述可寻址单元的下一部分的下一写入;
响应于所述下一写入针对所述先前写入是顺序的而将所述下一写入顺序写入到在所述先前部分之后的所述可寻址单元的所述下一部分;以及
响应于所述下一写入针对所述先前写入不是顺序的而将除所述下一写入之外的数据写入到在所述先前部分之后的所述可寻址单元。
10.如权利要求9所述的设备,其中,所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述可寻址单元。
11.如权利要求9所述的设备,其中,所述可寻址单元包括逻辑块地址(LBA),并且其中到所述第一和下一部分的所述写入包括所述LBA的可寻址子段。
12.如权利要求9、10和11中任一项所述的设备,其中,所述可寻址单元包括块群组,并且其中所述部分包括由数据扇区组成的所述块群组中的物理块,其中所述写入中的每个要到所述块群组中的所述物理块之一。
13.如权利要求9所述的设备,其中,所述写入除所述下一写入之外的数据包括在所述先前写入之后将随机数据写入到所述可寻址单元的剩余部分。
14.一种用于处理到针对存储器子系统的存储器管芯的可寻址单元的部分的顺序写入的方法,所述方法包括:
接收到存储在数据扇区的物理块中的连续逻辑地址的第一逻辑地址的写入;
将所接收的写入写入到所述物理块;
接收到所述物理块中的所述第一逻辑地址之后的逻辑地址的下一写入;
响应于所述下一写入针对到所述物理块的先前写入是顺序的而将所述下一写入写入到所述物理块;以及
响应于所述下一写入针对所述先前写入不是顺序的而在所述先前写入之后将除所述下一写入之外的数据写入到数据扇区的所述物理块。
15.如权利要求14所述的方法,其中,所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述物理块。
16.如权利要求14所述的方法,其中,所述写入除所述下一写入之外的数据包括在所述先前写入之后将随机数据写入到所述物理块的剩余部分。
17.如权利要求14、15和17中任一项所述的方法,还包括:
响应于到所述物理块的所述第一逻辑地址的所述写入,在针对所述第一逻辑地址的所述数据的所述写入之后,创建所述物理块的块写入信息实例,所述块写入信息实例指示到所述物理块的数据先前被写入到的先前写入位置。
18.如权利要求17所述的方法,还包括:
确定所述下一写入是否是对于所述物理块中针对所述物理块的所述块写入信息实例中的所述先前写入位置是顺序的下一位置,其中所述下一写入响应于确定所述下一位置针对所述先前写入位置是顺序的而被写入;以及
递增所述先前写入位置以指示所述下一位置。
19.如权利要求17所述的方法,还包括:
维持针对到多个物理块的多个顺序写入的流的块写入信息实例,其中所述下一写入响应于存在针对所述物理块的块写入信息实例而被写入,并且其中写入针对不同的物理块而被交错接收并被顺序地写入到它们被引导到的所述物理块,块写入信息实例针对所述物理块而被创建。
20.如权利要求17所述的方法,还包括:
响应于将顺序数据写入到所述物理块的所有数据扇区而移除所述块写入信息实例。
21.如权利要求17所述的方法,还包括:
响应于不存在针对所述物理块所创建的块写入信息实例而执行读取-修改-写入以将所述下一写入写入到包括所述下一写入的所述物理块。
22.一种用于处理到针对存储器子系统的存储器管芯的可寻址单元的部分的顺序写入的方法,所述方法包括:
接收到可寻址单元的第一部分的写入;
将所述写入写入到所述可寻址单元的所述第一部分;
接收在到所述可寻址单元的先前部分的先前写入之后的到所述可寻址单元的下一部分的下一写入;
响应于所述下一写入针对所述先前写入是顺序的而将所述下一写入顺序写入到在所述先前部分之后的所述可寻址单元的所述下一部分;以及
响应于所述下一写入针对所述先前写入不是顺序的而将除所述下一写入之外的数据写入到在所述先前部分之后的所述可寻址单元。
23.如权利要求22所述的方法,其中,所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述可寻址单元。
24.一种用于处理到针对存储器子系统的存储器管芯的可寻址单元的部分的顺序写入的设备,所述设备包括:
用于接收到可寻址单元的第一部分的写入的部件;
用于将所述写入写入到所述可寻址单元的所述第一部分的部件;
用于接收在到所述可寻址单元的先前部分的先前写入之后的到所述可寻址单元的下一部分的下一写入的部件;
用于响应于所述下一写入针对所述先前写入是顺序的而将所述下一写入顺序写入到在所述先前部分之后的所述可寻址单元的所述下一部分的部件;以及
用于响应于所述下一写入针对所述先前写入不是顺序的而将除所述下一写入之外的数据写入到在所述先前部分之后的所述可寻址单元的部件。
25.如权利要求24所述的设备,其中所述写入除所述下一写入之外的数据包括执行读取-修改-写入操作以将针对所述下一写入的数据写入到所述可寻址单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/089333 | 2016-04-01 | ||
US15/089,333 US10019198B2 (en) | 2016-04-01 | 2016-04-01 | Method and apparatus for processing sequential writes to portions of an addressable unit |
PCT/US2017/020538 WO2017172251A1 (en) | 2016-04-01 | 2017-03-02 | Method and apparatus for processing sequential writes to portions of an addressible unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108701089A true CN108701089A (zh) | 2018-10-23 |
CN108701089B CN108701089B (zh) | 2024-01-30 |
Family
ID=59958757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780014727.7A Active CN108701089B (zh) | 2016-04-01 | 2017-03-02 | 用于处理到可寻址单元的部分的顺序写入的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10019198B2 (zh) |
CN (1) | CN108701089B (zh) |
DE (1) | DE112017001701T5 (zh) |
WO (1) | WO2017172251A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190068197A (ko) * | 2017-12-08 | 2019-06-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR102620727B1 (ko) * | 2018-04-18 | 2024-01-03 | 에스케이하이닉스 주식회사 | 전자 장치 |
US10719248B2 (en) * | 2018-04-20 | 2020-07-21 | Micron Technology, Inc. | Apparatuses and methods for counter update operations |
US11188231B2 (en) * | 2019-03-01 | 2021-11-30 | International Business Machines Corporation | Data placement on storage devices |
US11200113B2 (en) | 2020-01-14 | 2021-12-14 | Intel Corporation | Auto-increment write count for nonvolatile memory |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005242897A (ja) * | 2004-02-27 | 2005-09-08 | Oki Electric Ind Co Ltd | フラッシュディスク装置 |
US20080235489A1 (en) * | 2007-03-19 | 2008-09-25 | Sergey Anatolievich Gorobets | Systems for forcing an update block to remain sequential |
US20100174853A1 (en) * | 2009-01-08 | 2010-07-08 | Samsung Electronics Co., Ltd. | User device including flash and random write cache and method writing data |
CN101930407A (zh) * | 2009-06-26 | 2010-12-29 | 群联电子股份有限公司 | 闪速存储器控制电路及其存储系统与数据传输方法 |
US20120089854A1 (en) * | 2010-10-10 | 2012-04-12 | pureSilicon Inc. | Systems and methods for optimizing data storage among a plurality of solid state memory subsystems |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6763424B2 (en) | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US7010662B2 (en) * | 2002-02-27 | 2006-03-07 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
US7433993B2 (en) | 2003-12-30 | 2008-10-07 | San Disk Corportion | Adaptive metablocks |
US7631138B2 (en) | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
EP2977906A1 (en) | 2004-04-28 | 2016-01-27 | Panasonic Corporation | Nonvolatile storage device and data write method |
JP4253272B2 (ja) | 2004-05-27 | 2009-04-08 | 株式会社東芝 | メモリカード、半導体装置、及び半導体メモリの制御方法 |
US7509471B2 (en) | 2005-10-27 | 2009-03-24 | Sandisk Corporation | Methods for adaptively handling data writes in non-volatile memories |
KR100771521B1 (ko) * | 2006-10-30 | 2007-10-30 | 삼성전자주식회사 | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 |
KR100885181B1 (ko) | 2007-02-06 | 2009-02-23 | 삼성전자주식회사 | 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법 |
KR100857761B1 (ko) | 2007-06-14 | 2008-09-10 | 삼성전자주식회사 | 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법 |
US8566504B2 (en) | 2007-09-28 | 2013-10-22 | Sandisk Technologies Inc. | Dynamic metablocks |
CN101251788A (zh) * | 2008-03-07 | 2008-08-27 | 威盛电子股份有限公司 | 储存单元管理方法及系统 |
KR100965051B1 (ko) * | 2008-10-01 | 2010-06-21 | 서울시립대학교 산학협력단 | 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치 |
US8452940B2 (en) | 2008-12-30 | 2013-05-28 | Sandisk Technologies Inc. | Optimized memory management for random and sequential data writing |
WO2010109674A1 (en) | 2009-03-24 | 2010-09-30 | Hitachi, Ltd. | Storage apparatus and its data control method |
EP2761471B1 (en) | 2011-09-30 | 2017-10-25 | Intel Corporation | Statistical wear leveling for non-volatile system memory |
US8593866B2 (en) | 2011-11-11 | 2013-11-26 | Sandisk Technologies Inc. | Systems and methods for operating multi-bank nonvolatile memory |
CN102789427B (zh) * | 2012-07-17 | 2015-11-25 | 威盛电子股份有限公司 | 数据储存装置与其操作方法 |
US20140173178A1 (en) | 2012-12-19 | 2014-06-19 | Apple Inc. | Joint Logical and Physical Address Remapping in Non-volatile Memory |
-
2016
- 2016-04-01 US US15/089,333 patent/US10019198B2/en active Active
-
2017
- 2017-03-02 CN CN201780014727.7A patent/CN108701089B/zh active Active
- 2017-03-02 WO PCT/US2017/020538 patent/WO2017172251A1/en active Application Filing
- 2017-03-02 DE DE112017001701.7T patent/DE112017001701T5/de active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005242897A (ja) * | 2004-02-27 | 2005-09-08 | Oki Electric Ind Co Ltd | フラッシュディスク装置 |
US20080235489A1 (en) * | 2007-03-19 | 2008-09-25 | Sergey Anatolievich Gorobets | Systems for forcing an update block to remain sequential |
US20100174853A1 (en) * | 2009-01-08 | 2010-07-08 | Samsung Electronics Co., Ltd. | User device including flash and random write cache and method writing data |
CN101930407A (zh) * | 2009-06-26 | 2010-12-29 | 群联电子股份有限公司 | 闪速存储器控制电路及其存储系统与数据传输方法 |
US20120089854A1 (en) * | 2010-10-10 | 2012-04-12 | pureSilicon Inc. | Systems and methods for optimizing data storage among a plurality of solid state memory subsystems |
Non-Patent Citations (2)
Title |
---|
SONG JIANG;等: "S-FTL: An efficient address translation for flash memory by exploiting spatial locality", 《2011 IEEE 27TH SYMPOSIUM ON MASS STORAGE SYSTEMS AND TECHNOLOGIES (MSST)》 * |
柳振中: "基于NAND闪存的自适应闪存映射层设计", 《现代电子技术》 * |
Also Published As
Publication number | Publication date |
---|---|
DE112017001701T5 (de) | 2018-12-20 |
WO2017172251A1 (en) | 2017-10-05 |
US20170286014A1 (en) | 2017-10-05 |
CN108701089B (zh) | 2024-01-30 |
US10019198B2 (en) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108701087A (zh) | 用于处理到存储器装置中的物理块的块群组的顺序写入的方法和设备 | |
CN107111551B (zh) | 用于高速缓存经压缩的数据背景的装置、系统和方法 | |
CN108701089A (zh) | 用于处理到可寻址单元的部分的顺序写入的方法和设备 | |
US10496334B2 (en) | Solid state drive using two-level indirection architecture | |
KR102149817B1 (ko) | 메모리 어드레싱 | |
CN109085997A (zh) | 用于非易失性存储器的存储器高效持续键值储存 | |
US9431116B2 (en) | Configuration parameter management using a configuration tool | |
US8924629B1 (en) | Mapping table for improving write operation efficiency | |
US10552045B2 (en) | Storage operation queue | |
KR102430198B1 (ko) | 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법 | |
US9632711B1 (en) | Processing flush requests by utilizing storage system write notifications | |
US10140215B1 (en) | Low overhead mapping for highly sequential data | |
US10303368B2 (en) | Storage device that determines data attributes based on continuity of address ranges | |
US20100030947A1 (en) | High-speed solid state storage system | |
US9213498B2 (en) | Memory system and controller | |
US20230120184A1 (en) | Systems, methods, and devices for ordered access of data in block modified memory | |
US10095433B1 (en) | Out-of-order data transfer mechanisms for data storage systems | |
US11494306B2 (en) | Managing data dependencies in a transfer pipeline of a hybrid dimm | |
CN107844265A (zh) | 操作计算系统的方法以及操作计算系统中的存储器控制器的方法 | |
KR20220062399A (ko) | 하이브리드 dimm에서 비순차적 처리를 위한 데이터 의존도 관리 | |
KR20090098276A (ko) | 하이브리드 저장 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |