CN107003813A - 用于提高固态驱动器的读取性能的方法和装置 - Google Patents
用于提高固态驱动器的读取性能的方法和装置 Download PDFInfo
- Publication number
- CN107003813A CN107003813A CN201580063541.1A CN201580063541A CN107003813A CN 107003813 A CN107003813 A CN 107003813A CN 201580063541 A CN201580063541 A CN 201580063541A CN 107003813 A CN107003813 A CN 107003813A
- Authority
- CN
- China
- Prior art keywords
- data
- solid
- nonvolatile memory
- state drive
- logical blocks
- 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
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
-
- 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
-
- 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/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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
- 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)
- Read Only Memory (AREA)
- Semiconductor Memories (AREA)
Abstract
固态驱动器的控制器发起对存储在固态驱动器的非易失性存储器中的数据进行重新打包,其中在对存储在固态驱动器的非易失性存储器中的数据进行重新打包期间,执行对存储在固态驱动器的非易失性存储器中的数据的刷新。当存储在固态驱动器的非易失性存储器中的数据在被重新打包时,将逻辑区块以递增的顺序物理上连续地放置在固态驱动器的非易失性存储器的预先擦除的位置中。
Description
背景技术
固态驱动器(SSD)是一种将集成电路组件作为存储器使用从而持久地存储数据的数据存储设备。
当提到读取带宽、写入带宽和随机输入/输出操作时,NAND SSD相较于硬盘驱动器具有显著的优势。该改进的带宽通常来自于在读取和写入操作期间并行使用许多NAND管芯的能力。
附图说明
现在参照附图,在附图中相同的附图标记自始至终表示相应的部分:
图1示出了根据某些实施例的计算环境的框图,在该计算环境中具有3D NAND芯片的SSD被耦合到主机;
图2示出了一框图,该框图示出了根据某些实施例的SSD中的数据的说明性表示;
图3示出了一框图,该框图示出了根据某些实施例,当周期性地重新打包SSD中的数据而同时刷新SSD中的数据时,将逻辑区块物理上连续地进行重组;
图4示出了一框图,该框图示出了根据某些实施例的数据的重新打包,未带有用于逻辑区块地址邻接的数据重排;
图5示出了一框图,该框图示出了根据某些实施例的数据的重新打包,带有用于逻辑区块地址邻接的数据重排;
图6示出了第一流程图,该第一流程图是关于根据某些实施例,在固态驱动器中以递增的顺序物理上连续地重新打包和组织逻辑区块以改进对读取请求的响应,而同时刷新数据;
图7示出了第二流程图,该第二流程图是关于根据某些实施例,在固态驱动器中以递增的顺序物理上连续地重新打包和组织逻辑区块以改进对读取请求的响应,而同时刷新数据;
图8示出了一框图,其示出了根据某些实施例,当允许同时读取四页时的示例性3DNAND中的平面并行性和示例性的性能提高;以及
图9示出了根据某些实施例的计算设备的框图。
具体实施方式
许多种SSD使用基于NAND的闪存,该基于NAND的闪存在没有电的情况下保持数据,并且是一种非易失性存储技术。在单层单元(SLC)NAND中,每个单元可以以两个状态中的一个状态存在,并且每个单元存储一个比特的信息。多层单元(MLC)NAND是一种每个单元使用多层从而允许使用相同数量的晶体管存储更多比特的固态闪存。三维(3D)NAND闪存是一种在彼此之上堆叠多层(例如,32层)的平面存储器单元的闪存。在不失一般性的情况下,可以将3D NAND闪存的结构形象化为在烤架中的多个堆叠的饼干托盘,而托盘中的每块饼干是一个存储器单元。
NAND是基于区块(block)的非易失性存储器。基于NAND的闪存SSD对存储器的整个区块进行操作。在写入存储器单元之前,需要擦除存储器单元,这需要将大电压施加到存储器单元,这只能立刻发生在整个存储器单元区块上。例如,如果1千字节(KB)的数据将被写入具有128KB的擦除区块大小的SSD中的NAND设备,SSD需要从目标区块读取127KB、对该区块进行擦除并且将旧数据加上新数据写回到该区块中。SSD固件可以预先对区块进行擦除并且尝试将新数据写入这些被预先擦除的区块中。现有的SSD具有“数据刷新”的机制,其中在数据刷新中,周期性地重写数据以防止因为NAND单元中的电荷损失而导致的数据损失。
在以下描述中,参照了附图,所述附图构成本文的一部分并且示出了数个实施例。应该理解的是,可以使用其它实施例,并且可以进行结构上和操作上的变化。
在一些情况中,SSD的期望的容量大约为200GB。200GB的SSD可以包括25个8GB的MLC NAND管芯。利用某些3D NAND,每个3D NAND管芯的存储容量可以显著多于8GB,例如,当在3D NAND管芯中使用TLC时,每个3D NAND管芯为48GB。这可能意味着200GB的SSD可以仅具有5个48GB的3D NAND管芯。NAND管芯容量从8GB增加到48GB将SSD可用的NAND并行性减少到五分之一。随着光刻持续收缩,每个管芯的读取和写入带宽两者都得到一些降低。该示例的最终结果是对于读取和写入两者而言每个管芯的带宽减少,并结合有5倍的并发性降低。
对于随机的读取操作,NAND SSD是有效率的。随着页大小变得越来越大以及并发性得到降低并且Tread(与读取相关的时间)加倍(在TLC的100s和MLC的80s之间),每秒的读取操作可以减少20倍。
现有的NAND控制器技术是基于具有数个NAND管芯从而并行地执行读取和写入。这种现有的NAND控制器的机制可能不总是致力于优化每个管芯的可用的NAND带宽,而是可能致力于将每个管芯的耐久性最大化。利用某些高密度3D NAND,200GB的SSD可以仅具有5个3D NAND管芯。假设主机写入为20GB/日并且内部写入放大为3倍(通过SSD进行60GB NAND写入/日),该具有5个3D NAND管芯的SSD可以具有10年的耐久性(即,使用寿命)。该耐久性远高于SSD 3到5年的通常使用寿命可能需要的耐久性,这是因为SSD中余下的组件可能具有3年到5年之间的寿命。
某些实施例提供了一些机制,其帮助将对于耦合到SSD的主机而言是可见的每管芯读取带宽最大化,同时权衡SSD的耐久性。在这样的实施例中,读取操作的性能被加强。在这样的实施例中,数据的重新打包(repacking)与用于逻辑区块地址(LBA)邻接(adjacency)的数据的重排一起执行,而同时对SSD中的数据进行刷新。与其中存储4KB分散内容的实施例的性能相比,在具有3D NAND设备的SSD的实施例(其支持具有16KB的页大小和4个平面的平面并行性)中,可以达到1600%的性能。
图1示出了根据某些实施例的计算环境100的框图,在该计算环境100中,具有多个3D NAND芯片104a…104n的固态驱动器102被耦合到主机106。一个芯片(也被称为封装)包括多个NAND设备,其中每个NAND设备控制多个管芯。还可以将图1中所描述的实施例应用到高容量MLC NAND芯片。
固态驱动器102可以包括非易失性存储器,诸如NAND存储器、NOR存储器或者一些其它适合的非易失性存储器。在某些实施例中,固态驱动器102可以能够存储数个太字节(terabyte)或者更多的数据。可以将某些实施例应用到其它类型的非易失性存储器、相变存储器(PCM)、三维交叉点存储器、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、包括忆阻器技术的磁阻随机存取存储器(MRAM)存储器、自旋转移力矩(STT)-MRAM、字节可寻址随机存取非易失性存储器,等等。
在某些实施例中,主机106可以包括任意适合的计算设备,诸如个人计算机、大型机、电话设备、智能手机、存储控制器、刀片式计算机、具有存储器的处理器等。在某些替代的实施例中,通过总线(诸如外围组件互连(PCIe)、串行高级技术附件(SATA)、串行连接小型计算机系统接口(SAS))或者网络(诸如因特网、存储区域网络(SAN)、局域网(LAN))等,计算设备106可以与SSD 102通信。可以在题为“串行ATA规范,修订本3.2”的出版物中找到SATA规范的更多细节,该出版物在2013年8月由位于俄勒冈州比佛顿的SATA国际组织(SATA-IO)发行。在另一个示例中,接口和/或互连协议可以遵循和/或兼容于NVMe(非易失性存储器主机控制器快速接口)。可以在题为“NVM ExpressTM,修订本1.2”的出版物和/或该规范的之前和/或之后的版本中找到NVMe的更多细节,该出版物在2014年11月3日由NVMExpressTM工作组发行(NVM Express是NVM Express,Inc的商标)。
在某些实施例中,可以将固态驱动器102包括在计算设备(未示出)中,该计算设备具有操作系统,其与固态驱动器102交互从而执行I/O操作。操作系统可以使用4KB的页大小。
3D NAND芯片104a…104n可以每个具有16KB的页大小,然而主机106可以使用4KB的页大小用于读取操作。换句话说,文件系统簇/节点大小是4KB,其中文件系统簇/节点相当于由文件系统分配的空间的粒度单位,而NAND页大小是16KB,其中NAND页是针对NAND的写入的粒度单位。用于3D NAND芯片的16KB的页大小意味着当请求数据时,返回至少一个16KB的页。例如,当向NAND芯片做出4KB的读取请求时,返回至少16KB的数据。
固态驱动器102包括用固件、硬件、软件或者任意其组合实现的控制器108。控制器108包括应用110,该应用110也被称为带有用于逻辑区块地址(LBA)邻接的重排的重新打包应用。在刷新数据期间执行带有用于LBA邻接的重排的重新打包。控制器108还包括使用4KB的页大小的间接表112。
在某些实施例中,在固态驱动器102中,每个3D NAND芯片可能仅有一个通道,带有单个芯片选择(chip select)(附图标记114a…114n),并且因此,在从多个3D NAND芯片104a…104n中的每个3D NAND芯片进行的读取操作中,并行性是不太可能的。在其它实施例中,平面并行性是有可能的。在某些实施例中,因为大的管芯容量,在8通道的控制器上,每个通道有一个或者更少的管芯,并因此,即使作出128KB的请求,并发性可能不大于5。所以,如果不打包数据,则在某些实施例中,读取的能力可能是4KB乘以5,即,20KB一次。如果打包数据,则有可能系统能够获得16KB乘以5,即,80KB一次。控制器108请求读取操作,其具有4KB的页大小(附图标记116)、或者多个4KB,然而3D NAND芯片104a…104n以16KB的页大小来表示数据。
在图1中所示的某些实施例中,在执行数据刷新期间,固态驱动器102的控制器108周期性地发起对存储在固态驱动器102的3D NAND芯片104a…104n中的数据的重新打包。在某些实施例中,在每次重新打包数据期间,将逻辑区块以递增的顺序物理上连续地放置在固态驱动器102的3DNAND芯片104a…104n中的预先擦除的位置中。随后,当固态驱动器102接收到来自主机106的针对多个逻辑区块的读取请求时,然后,响应于确定该多个逻辑区块是被以递增的顺序物理上连续地存储的,控制器108向固态驱动器102的一个或多个3DNAND芯片(非易失性存储器芯片)104a…104n发出单个请求来提取以递增的顺序物理上连续地存储的该多个逻辑区块。
图2示出了框图200,该框图200示出了根据某些实施例的固态驱动器中的数据的说明性表示202。图例204示出了均匀灰色区域206表示由主机106写入的数据,其中该数据是有效数据。斜阴影线区域210表示来自主机的数据,该数据随后已被写入到新位置212。交叉阴影线区域214表示故障的NAND区块216。白色区域218表示用于写入新数据的预先擦除的位置220。
根据图例204,在说明性表示202中,附图标记222示出了由主机106写入的数据,其中写入的数据是有效的,附图标记224示出了来自主机106的随后写入到新位置的数据,附图标记226示出了故障的NAND区块,而附图标记228示出了用于写入新数据的预先擦除的位置。在数据的说明性表示202中,附图标记230、232和234示出了作为由主机写入的有效数据的逻辑区块地址10、19和15。应该注意的是,因为固态驱动器102中的3D NAND芯片104a…104n的页大小为16KB,所以通过附图标记230、232、234示出的每个逻辑区块地址表示16KB的数据。
图3示出了框图300,该框图300示出了根据某些实施例,当周期性地对固态驱动器中的数据进行重新打包302而同时刷新SSD中的数据时,物理上连续地对逻辑区块进行重组。现有的SSD具有“数据刷新”,其中必须周期性地重写数据以防止因为NAND单元中的电荷损失而造成的数据损失。通过附图标记302示出了对固态驱动器中的数据的最初的重新打包和刷新302。在对固态驱动器中的数据进行最初的重新打包302期间,将逻辑区块以递增的顺序物理上连续地放置在固态驱动器中的预先擦除的位置中(如通过附图标记304所示)。随后,在经过一段时间之后,发起对数据的另一个重新打包和更新(附图标记306),并且当重新打包存储在固态驱动器102中的数据时,将逻辑区块以递增的顺序物理上连续地放置在固态驱动器102中的预先擦除的位置中(通过附图标记308所示)。以下过程持续进行:以周期性的间隔重新打包数据,并且当重新打包数据时,将逻辑区块以递增的顺序连续地放置在固态驱动器的预先擦除的位置中(如经由附图标记310所示)。
在某些实施例中,在重新打包期间,执行将逻辑区块以递增的顺序连续地放置在固态驱动器102的预先擦除的位置中的操作,从而提高固态驱动器的读取性能,其中在执行固态驱动器102的刷新的同时,执行重新打包。所以,实施例不仅仅是用于重新打包数据的方法。实施例执行这二者:重新打包数据和防止电荷损失。用于防止电荷损失的“数据刷新技术”的现有技术方法是公知的。本质上,在某些实施例中,在数据刷新的时候引入数据重新打包是无偿的,就耐久性损失或者功率或者其它因素而言没有显著增加的负担。
图4示出了框图400,该框图400示出了根据某些实施例的数据的重新打包,未带有用于逻辑区块地址邻接的数据重排,如在某些现有技术固态驱动器中执行的。
在图4中,通过附图标记402示出了数据最初的构造,并且通过附图标记406示出了在没有用于逻辑区块地址邻接的重排的情况下重新打包数据(附图标记404)之后的构造。可以看出,在数据的重新打包期间,逻辑区块地址10、19、15(由附图标记410、412、414表示)被物理上连续地移动到预先擦除的位置416、418、420中,但是,被重新打包之后的逻辑区块地址不是按照邻接的递增的顺序,其中邻接的递增的顺序意味着一个接一个地依次放置逻辑区块x、x+1、x+2等(例如,由逻辑区块地址15、16、17、18、19、20表示的区块将按照顺序被存储在预先擦除的位置中,它们之间没有任何中间间隙或者区块)。通过将数据重新打包技术添加到现有的数据刷新中,某些实施例生成刷新的NAND单元以及被很好地打包的数据内容两者。
因为在数据的重新打包期间,逻辑区块地址不是以邻接的递增的顺序重排,所以如果主机106请求从固态驱动器102中读取多个连续页,当被请求的多个连续页遍布于3DNAND芯片104a…104n上的多个16KB的逻辑区块时,可能必须从3D NAND芯片104a…104n执行多次提取,这使得读取操作的性能下降。例如,主机可以请求起始于逻辑地址x的12个页,其中每页是4KB。该12个页需要在3D NAND芯片104a…104n上的至少48KB的存储空间,即,该12个页可能被存储在3个16KB的NAND页中,因为NAND页大小是16KB。但是,如果不是以邻接的递增的顺序放置这三个16KB的NAND页,则必须通过从控制器106发送三条提取命令到3DNAND芯片104a…104n来逐一提取这三页,这会影响读取操作的性能。
图5示出了框图500,该框图500示出了根据某些实施例的数据的重新打包,带有用于逻辑区块地址邻接的重排。
在图5中,通过附图标记502示出了数据最初的构造,并且通过附图标记506示出了在具有用于逻辑区块地址邻接的重排的情况下重新打包数据(附图标记504)之后的构造。可以看出,在数据的重新打包期间,逻辑区块地址0、1、2(由附图标记510、512、514表示)被物理上连续地移动到预先擦除的位置516、518、520中,并且被重新打包之后的逻辑区块地址是按照邻接的递增的顺序,其中邻接的递增的顺序意味着一个接一个地依次放置逻辑区块x、x+1、x+2等(即,可以按照顺序将逻辑区块地址15、16、17、18、19、20存储在预先擦除的位置中,它们之间没有任何中间间隙或者逻辑区块地址)。
因为在数据的重新打包期间,逻辑区块地址是以邻接的递增的顺序重排,所以如果主机106请求从固态驱动器102中读取多个连续页,当被请求的多个连续页遍布于3DNAND芯片104a…104n上的多个16KB的逻辑区块时,可能仅须从3D NAND芯片104a…104n执行单次提取,这使得读取操作的性能增强。
例如,主机106可以请求起始于逻辑地址“0”的8个页,其中每页是4KB。该8个页需要在3D NAND芯片104a…104n上的至少32KB的存储空间,即,该8个页可能被存储在两个16KB的NAND页中,因为NAND页大小是16KB。因为这两个16KB的NAND页是以邻接的递增的顺序放置的(附图标记516、518),所以不必通过从控制器发送两条提取命令到3D NAND芯片104a…104n来逐一提取这两页。相反,针对起始于逻辑地址“0”的两页的单个提取命令可以返回页516、518以满足读取请求。这通过16KB固态驱动器页大小的放大示图(附图标记521)来示出,其存储8个4KB的页,其中4KB是主机和间接表的页大小。间接表112可以对第一个4KB区块526进行寻址并且请求返回起始于第一个4KB区块526的32KB的数据。在某些实施例中,通过控制器108的单次提取从3D NAND芯片104a…104n返回以递增的邻近顺序布置的32个区块的物理上连续的逻辑区块地址(如通过附图标记528所示的)。相比于按照图4中所示的机制必须执行的多次提取,在由图5所示的实施例中执行的单次提取增强了读取性能。在某些实施例中(例如,在以下实施例中:其中SSD为200GB,每个NAND管芯为48GB,并因此在200GB的SSD中使用5个管芯),因为大的管芯容量,在8通道的控制器上,每个通道可能有一个或者更少的管芯,并因此,即使存在128KB的请求,并发性可能不大于5。所以,如果不打包数据,则在某些实施例中,系统可能最终具有读取4KB乘以5(即,20KB一次)的能力。如果打包数据,则其可能得到16KB乘以5(即,80KB一次)。所以,与当不打包数据时的读取性能相比,相对读取性能可以是400%。在每个管芯的容量方面,未来几代NAND正在翻倍(例如,从每个管芯48GB到96GB)。所以该400%的相对读取性能是非常有用的。应该注意的是,400%的相对读取性能是针对3D NAND中的一个平面的读取。对于客户使用模型,以及对于第一代3D NAND,该400%的读取性能可能是足够的,并且可能不需要针对3D NAND中的四平面处理而增加复杂性(随后在图8中对3D NAND中的四平面处理进行描述,并且在四平面处理中,可以通过四平面3D NAND并行地处理四个读取)。在用于第二代NAND的某些实施例中,四平面读取是有可能的(随后将在图8中描述)并且可以获得1600%的相对读取性能。
图6示出了第一流程图600,该第一流程图600是关于在固态驱动器中以递增的顺序物理上连续地重新打包和组织逻辑区块从而改进对读取请求的响应,而同时刷新固态驱动器中的数据。可以通过在固态驱动器102的控制器108中执行的应用110来执行图6中所示的操作,其中应用110使用间接表112。
在框602处,控制开始,其中在固态驱动器102中开始数据的重新打包,并且在某些实施例中,同时执行数据的刷新与数据重新打包。控制继续进行到框604处,其中应用110以锯齿状模式(即,从左到右并且从顶端到底部)遍历固态数据表示(例如,502)。将有效数据移动(在框606处)到预先擦除的位置,从而将逻辑区块地址以递增的顺序物理上连续地放置在预先擦除的位置中。在一段时间之后,控制可以从框606回到框602以执行另一个循环的数据的重新打包。
在一段时间之后,控制也可以从框606继续进行到框608。控制器108可以接收(在框608处)来自主机106的更大的读取请求。控制器108检查(在框610处)间接表112以确定在读取请求中所请求的逻辑区块地址是被以递增的顺序物理上连续地存储的。然后,控制器108发出(在框612处)单个NAND读取,以便读取3D NAND芯片104a…104n中的以递增的顺序物理上连续地存储的逻辑区块地址。
因此,图5、6示出了某些实施例,这些实施例使用单次提取来读取多个NAND页(每个为16KB),从而满足来自主机的具有4KB页大小的大的读取请求,其中大的读取请求是请求多于16KB的数据。例如,如果通过主机106请求32KB的数据,则可以通过单个提取请求取回两个NAND页,该单个提取请求由控制器106向多个NAND芯片104a…104n做出。在某些实施例中,提取请求需要用于提取的起始逻辑地址以及将被提取的页的数量。在其它实施例中,提取请求仅需要用于提取的起始逻辑地址,并且从起始逻辑地址开始,页持续被读取。
图7示出了第二流程图700,该第二流程图700是关于在固态驱动器中以递增的顺序物理上连续地重新打包和组织逻辑区块从而改进对读取请求的响应。可以通过在固态驱动器102的控制器108中执行的应用110来执行图7中所示的操作,其中应用110使用间接表112。
在框702处,控制开始,其中固态驱动器102的控制器108对存储在固态驱动器102中的数据发起周期性的重新打包,其中在对存储在固态驱动器102中的数据进行重新打包期间,执行对存储在固态驱动器中的数据的刷新。当存储在固态驱动器102中的数据在被重新打包时,将逻辑区块以递增的顺序物理上连续地放置(在框704处)在固态驱动器102的预先擦除的位置中。
控制继续进行到框706,其中接收来自主机106的针对多个逻辑区块的读取请求。响应于确定该多个逻辑区块是被以递增的顺序物理上连续地存储的,向固态驱动器102的非易失性存储器芯片104a…104n做出单个请求来提取该多个逻辑区块。
在某些实施例中,相比于固态驱动器102,主机106以较小的大小来表示逻辑区块。固态驱动器102中的间接表112保存指针,所述指针指向存储在固态驱动器102中的有效数据的最近的拷贝,并且间接表112以与主机106相同的大小来表示该多个逻辑区块。在某些实施例中,固态驱动器102包括三维NAND芯片104a…104n,并且每个三维NAND芯片仅有唯一的通道,带有唯一的芯片选择,并且不能通过唯一的通道传递并行的读取请求。此外,在某些实施例中,NAND页大小为16KB,而从主机106到固态驱动器102的请求是以4KB的页大小做出的。在某些实施例中,除16KB的页之外,NAND芯片可以具有“平面”并行性。例如,某些NAND具有4个平面,导致可以用与4KB相同的持续时间读取64KB的数据,结果产生相对于读取分散的4KB数据来说的1600%的读取带宽。
在某些实施例中,周期性地执行对固态驱动器102中的数据的重新打包,并且在数据刷新期间,在对固态驱动器102中的数据进行每个周期性的重新打包期间,执行将逻辑区块以递增的顺序物理上连续地放置在固态驱动器102中的预先擦除的位置中。相比于当存储在固态驱动器102中的数据在被重新打包时将逻辑区块以随机的顺序物理上连续地放置在固态驱动器102中的预先擦除的位置中,当存储在固态驱动器102中的数据在被重新打包时将逻辑区块以递增的顺序物理上连续地放置在固态驱动器102中的预先擦除的位置中提高了读取性能。
在现有技术中,间接表112的内部间接系统为4K,通常导致每个4K处于不同的擦除区块上。64KB主机读取将导致有16个被发出给不同NAND区块的4K读取。图1-7中所示的某些实施例重新打包数据,从而在NAND中彼此相邻地放置“逻辑区块地址0”到“逻辑区块地址N”。可以改变现有的用于提供数据保留和后台数据刷新的NAND策略的目的,从而不仅用于刷新数据,还物理上连续地打包数据。因为速度混合,所以这样做将在写入放大方面引起较小的增长,但是因为实际的可获得的耐久性远高于满足针对固态驱动器的三年使用模型所需要的耐久性,所以这将是一种用于提高读取性能的合适的权衡。
图8示出了框图800,该框图800示出了根据某些实施例,当允许同时读取四页时的示例性3D NAND中的平面并行性和示例性的性能提高。
通过附图标记802示出了具有4个平面的示例3D NAND的示意图。具有4个平面的3DNAND的页大小为16KB(附图标记804)。在某些实施例中,在具有4个平面的3D NAND中允许一次读取的页的数量为4(如通过附图标记806所示的)。所以,一次读取的数据的总量为16KB乘以4,其为64KB(通过附图标记808所示)。所以相对于其中4KB分散内容被放置在SSD中的情况,性能最高可达16倍,即,如果在SSD存储4KB分散内容的情况下的性能为100%,则在具有16KB页大小的3D NAND(其中可以一次读取四页)中性能为1600%。
所以图8示出了示例性3D NAND中的平面并行性,其达到的性能是在存储4KB分散内容的情况下的性能的1600%。
可以使用用来生产软件、固件、硬件或者其任意组合的标准的编程和/或工程技术,将所描述的操作实施为方法、装置或者计算机程序产品。可以将所描述的操作实施为被保存在“计算机可读存储介质”中的代码,其中处理器可以读取和执行来自计算机存储可读介质的代码。计算机可读存储介质包括以下中的至少一个:电子电路、存储材料、无机材料、有机材料、生物材料、外罩、外壳、涂层和硬件。计算机可读存储介质可以包括,但是不限于:磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储(CD-ROM、DVD、光盘等)、易失性和非易失性存储器设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等)、固态设备(SSD)等。实施所述操作的代码还可以被实现在硬件逻辑中,该硬件逻辑被实现在硬件设备(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)中。此外,实施所述操作的代码可以被实现在“传输信号”中,其中传输信号可以通过空间或者通过诸如光纤、铜线等的传输介质来传播。其中被编码有代码或者逻辑的传输信号还可以包括无线信号、卫星传输、无线电波、红外线信号、蓝牙等。可以将被嵌入到计算机可读存储介质上的程序代码作为传输信号从发射站或者计算机传输到接收站或者计算机。计算机可读存储介质不仅仅包括传输信号。本领域技术人员将意识到的是,可以对该配置作出许多修改,并且制品可以包括本领域已知的适合的信息承载介质。
用于执行针对某些实施例的若干方面的操作的计算机程序代码可以用一个或多个编程语言的任意组合来编写。可以通过计算机程序指令来实施框图和流程图的框。
图9示出了根据某些实施例的包括主机106(主机106包括至少一个处理器)和固态驱动器102两者的系统900的框图。例如,在某些实施例中,系统900可以是计算机(例如,膝上型计算机、台式计算机、平板电脑、手机或者任意其它适合的计算设备),其具有主机106和固态驱动器102,二者都包括在系统900中。例如,在某些实施例中,系统900可以是包括固态驱动器102的膝上型计算机。系统900可以包括电路902,在某些实施例中,该电路902可以至少包括处理器904。系统900还可以包括存储器906(例如,易失性存储器设备)和存储装置908。存储装置908可以包括固态驱动器102或者其它驱动器或设备,其包括非易失性存储器设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等)。存储装置908还可以包括磁盘驱动器、光盘驱动器、磁带驱动器等。存储装置908可以包括内部存储设备、附接的存储设备和/或网络可访问存储设备。系统900可以包括程序逻辑910,其包括可以被加载到存储器906中并且由处理器904或者电路902来执行的代码912。在某些实施例中,可以将包括代码912的程序逻辑910存储在存储装置908中。在某些其它的实施例中,可以在电路902中实施程序逻辑910。所以,尽管图9示出了独立于其它元件的程序逻辑910,但是程序逻辑910可以被实施在存储器906和/或电路902中。系统900还可以包括显示器914(例如,液晶显示器(LCD)、发光二极管(LED)显示器、阴极射线管(CRT)显示器、触屏显示器或者任意其它适合的显示器)。系统900还可以包括一个或多个输入设备916,诸如键盘、鼠标、操纵杆、触控板或者任意其它适合的输入设备。也可以在系统900中找到超出图9中所示的那些组件或设备以外的其它组件或设备。
某些实施例可以旨在提供用于由人来部署计算指令的方法、或者将计算机可读代码集成到计算系统中的自动化处理,其中与计算系统相结合的所述代码被启用以执行所述实施例的操作。
除非另外清楚地指明,否则术语“一实施例”、“实施例”、“多个实施例”、“该实施例”、“所述实施例”、“一个或多个实施例”、“一些实施例”和“一个实施例”表示“一个或多个(但不是全部)实施例”。
除非另外清楚地指明,否则术语“包括”、“包含”、“具有”及其变型表示“包括但是不限于”。
除非另外清楚地指明,否则项目的枚举列表并不暗示任意或者全部项目是互斥的。
除非另外清楚地指明,否则术语“一”、“一个”和“所述”表示“一个或多个”。
除非另外清楚地指明,否则相互通信的设备不需要持续地相互通信。此外,相互通信的设备可以直接地通信或者通过一个或多个中介来间接地通信。
对具有相互通信的数个组件的实施例的描述并不暗示需要全部这样的组件。相反,对各种可选择的组件进行描述以说明多种可能的实施例。
此外,虽然可能按照顺序对过程步骤、方法步骤、算法等进行描述,但是可以将这样的过程、方法和算法配置为以替代的顺序来工作。换句话说,可能描述的步骤的任何次序或者顺序并非必然表示要求以那样的顺序来执行步骤。可以以任意切实可行的顺序来执行本文中所描述的过程的步骤。此外,一些步骤是可以被同时执行的。
当本文中对单个设备或者物品进行描述时,很显而易见的是,可以使用多于一个的设备/物品(无论它们是否协作)来替代单个设备/物品。相似地,当本文中对多于一个的设备或者物品进行描述(无论它们是否协作)时,很显而易见的是,可以使用单个设备/物品来替代多于一个的设备或物品,或者可以使用不同数量的设备/物品、而非所示数量的设备或程序。一个设备的功能和/或特征可以由一个或多个其它设备来替代地实现,该一个或多个其它设备并未明确地被描述为具有这样的功能/特征。因此,其它实施例不需要包括该设备本身。
至少某些可能已在图中示出的操作示出了某些以某种顺序发生的事件。在替代的实施例中,可以以不同的顺序执行、修改或者移除某些操作。此外,可以将步骤添加到以上所描述的逻辑中,并且仍遵循所描述的实施例。此外,本文中所描述的操作可以顺序地发生,或者可以并行地处理某些操作。此外,可以通过单个处理单元或者通过分布式处理单元来执行操作。
出于举例说明和描述的目的,已经给出了各种实施例的前述说明。其并非是要详尽无遗的、或者被限于所公开的确切形式。根据以上的教导,许多修改和变型都是可能的。
示例
以下示例属于进一步的实施例。
示例1是一种用于提高固态驱动器的性能的方法。所述固态驱动器的控制器发起对存储在所述固态驱动器的非易失性存储器中的数据进行重新打包,其中在对存储在所述固态驱动器的非易失性存储器中的数据进行重新打包期间,执行对存储在所述固态驱动器的非易失性存储器中的数据的刷新。当存储在所述固态驱动器的非易失性存储器中的数据在被重新打包时,将逻辑区块以递增的顺序物理上连续地放置在所述固态驱动器的非易失性存储器的预先擦除的位置中。
在示例2中,示例1的主题可以包括接收来自主机的针对多个逻辑区块的读取请求;以及响应于确定多个逻辑区块是被以递增的顺序物理上连续地存储的,向所述固态驱动器的一个或多个非易失性存储器芯片发出单个请求来提取所述多个逻辑区块。
在示例3中,示例2的主题可以包括相比于在所述固态驱动器中,在所述主机中所述逻辑区块是以较小的大小来表示的。
在示例4中,示例3的主题可以包括所述固态驱动器中的间接表保存指针,所述指针指向存储在所述固态驱动器中的有效数据的最近的拷贝的物理地址,其中所述间接表以与所述主机相同的大小来表示所述多个逻辑区块。
在示例5中,示例1的主题可以包括所述固态驱动器包括三维NAND芯片,其中针对每个三维NAND芯片仅有唯一的通道,带有唯一的芯片选择,并且不能通过所述唯一的通道传递并行的读取请求。
在示例6中,示例5的主题可以包括NAND页大小为16千字节,并且从主机到所述固态驱动器的请求是以4千字节的页大小做出的。
在示例7,示例1的主题可以包括周期性地执行对所述固态驱动器中的数据的重新打包,其中在对所述固态驱动器中的数据进行每个周期性的重新打包期间,执行将所述逻辑区块以递增的顺序物理上连续地放置在所述固态驱动器的非易失性存储器的预先擦除的位置中。
在示例8中,示例1的主题可以包括相比于当存储在所述固态驱动器的非易失性存储器中的数据在被重新打包时将所述逻辑区块以随机的顺序物理上连续地放置在所述固态驱动器的非易失性存储器的预先擦除的位置中,当存储在所述固态驱动器的非易失性存储器中的数据在被重新打包时将所述逻辑区块以递增的顺序物理上连续地放置在所述固态驱动器的非易失性存储器的预先擦除的位置中提高了读取性能,其中当所述固态驱动器支持平面并行性,允许一次读取四页时,相对读取性能最高达1600%。
示例9是一种装置,包括:多个非易失性存储器芯片;以及耦合到所述多个非易失性存储器芯片的控制器,其中所述控制器能够操作以:发起对存储在所述多个非易失性存储器芯片中的数据进行重新打包,其中在对存储在所述多个非易失性存储器芯片中的数据进行重新打包期间,执行对存储在所述多个非易失性存储器芯片中的数据的刷新;以及当存储在所述多个非易失性存储器芯片中的数据在被重新打包时,将逻辑区块以递增的顺序物理上连续地放置在所述多个非易失性存储器芯片的预先擦除的位置中。
在示例10中,示例9的主题可以包括所述控制器还能够操作以:接收来自主机的针对多个逻辑区块的读取请求;以及响应于确定所述多个逻辑区块是被以递增的顺序物理上连续地存储的,向一个或多个非易失性存储器芯片发出单个请求来提取所述多个逻辑区块。
在示例11中,示例10的主题可以包括相比于所述多个非易失性存储器芯片,所述主机以较小的大小来表示逻辑区块。
在示例12中,示例11的主题可以包括间接表保存指针,所述指针指向存储在所述多个非易失性存储器芯片中的有效数据的最近的拷贝的物理地址,并且其中所述间接表以与所述主机相同的大小来表示所述多个逻辑区块。
在示例13中,示例9的主题可以包括所述多个非易失性存储器芯片包括三维NAND芯片,其中针对每个三维NAND芯片仅有唯一的通道,带有唯一的芯片选择,并且不能通过所述唯一的通道传递并行的读取请求。
在示例14中,示例13的主题可以包括NAND页大小为16千字节,并且从主机到所述装置的请求是以4千字节的页大小做出的。
在示例15中,示例9的主题可以包括周期性地执行对所述多个非易失性存储器芯片中的数据的重新打包,其中在对所述多个非易失性存储器芯片中的数据进行每个周期性的重新打包期间,执行将所述逻辑区块以递增的顺序物理上连续地放置在所述多个非易失性存储器芯片的预先擦除的位置中。
在示例16中,示例9的主题可以包括相比于当所述数据在被重新打包时将所述逻辑区块以随机的顺序物理上连续地放置在所述预先擦除的位置中,当所述数据在被重新打包时将所述逻辑区块以递增的顺序物理上连续地放置在所述预先擦除的位置中提高了读取性能,并且其中当所述装置支持平面并行性,允许一次读取四页时,相对读取性能最高达1600%。
示例17是一种系统,包括:包括多个非易失性存储器芯片的固态驱动器;显示器;以及耦合到所述固态驱动器和所述显示器的处理器,其中,所述固态驱动器能够操作以:发起对存储在所述多个非易失性存储器芯片中的数据进行重新打包,其中在对存储在所述多个非易失性存储器芯片中的数据进行重新打包期间,执行对存储在所述多个非易失性存储器芯片中的数据的刷新;以及当存储在所述多个非易失性存储器芯片中的数据在被重新打包时,将逻辑区块以递增的顺序物理上连续地放置在所述多个非易失性存储器芯片的预先擦除的位置中。
在示例18中,示例17的主题可以包括所述控制器还能够操作以:接收来自主机的针对多个逻辑区块的读取请求;以及响应于确定所述多个逻辑区块是被以递增的顺序物理上连续地存储的,向一个或多个非易失性存储器芯片发出单个请求来提取所述多个逻辑区块。
在示例19中,示例18的主题可以包括相比于所述多个非易失性存储器芯片,所述主机以较小的大小来表示逻辑区块。
在示例20中,示例19的主题可以包括间接表保存指针,所述指针指向存储在所述多个非易失性存储器芯片中的有效数据的最近的拷贝的物理地址,并且其中所述间接表以与所述主机相同的大小来表示所述多个逻辑区块。
在示例21中,示例17的主题可以包括所述多个非易失性存储器芯片包括三维NAND芯片,其中针对每个三维NAND芯片仅有唯一的通道,带有唯一的芯片选择,并且不能通过所述唯一的通道传递并行的读取请求。
在示例22中,示例21的主题可以包括NAND页大小为16千字节,并且从主机到所述装置的请求是以4千字节的页大小做出的。
在示例23中,示例17的主题可以包括周期性地执行对所述多个非易失性存储器芯片中的数据的重新打包,其中在对所述多个非易失性存储器芯片中的数据进行每个周期性的重新打包期间,执行将所述逻辑区块以递增的顺序物理上连续地放置在所述多个非易失性存储器芯片的预先擦除的位置中。
在示例24中,示例17的主题可以包括相比于当所述数据在被重新打包时将所述逻辑区块以随机的顺序物理上连续地放置在所述预先擦除的位置中,当所述数据在被重新打包时将所述逻辑区块以递增的顺序物理上连续地放置在所述预先擦除的位置中提高了读取性能,并且其中当所述装置支持平面并行性,允许一次读取四页时,相对读取性能最高达1600%。
Claims (24)
1.一种用于提高固态驱动器的性能的方法,所述方法包括:
由所述固态驱动器的控制器发起对存储在所述固态驱动器的非易失性存储器中的数据进行重新打包,其中在对存储在所述固态驱动器的非易失性存储器中的数据进行重新打包期间,执行对存储在所述固态驱动器的非易失性存储器中的数据的刷新;以及
当存储在所述固态驱动器的非易失性存储器中的数据在被重新打包时,将逻辑区块以递增的顺序物理上连续地放置在所述固态驱动器的非易失性存储器的预先擦除的位置中。
2.根据权利要求1所述的方法,所述方法还包括:
接收来自主机的针对多个逻辑区块的读取请求;以及
响应于确定所述多个逻辑区块是被以递增的顺序物理上连续地存储的,向所述固态驱动器的一个或多个非易失性存储器芯片发出单个请求来提取所述多个逻辑区块。
3.根据权利要求2所述的方法,其中相比于在所述固态驱动器中,在所述主机中所述逻辑区块是以较小的大小来表示的。
4.根据权利要求3所述的方法,其中所述固态驱动器中的间接表保存指针,所述指针指向存储在所述固态驱动器中的有效数据的最近的拷贝的物理存储器地址,并且其中所述间接表以与所述主机相同的大小来表示所述多个逻辑区块。
5.根据权利要求1所述的方法,其中所述固态驱动器包括三维NAND芯片,并且其中针对每个三维NAND芯片仅有唯一的通道,带有唯一的芯片选择,并且不能通过所述唯一的通道传递并行的读取请求。
6.根据权利要求5所述的方法,其中NAND页大小为16千字节,并且从主机到所述固态驱动器的请求是以4千字节的页大小做出的。
7.根据权利要求1所述的方法,其中周期性地执行对所述固态驱动器中的数据的重新打包,并且其中在对所述固态驱动器中的数据进行每个周期性的重新打包期间,执行将所述逻辑区块以递增的顺序物理上连续地放置在所述固态驱动器的非易失性存储器的预先擦除的位置中。
8.根据权利要求1所述的方法,其中相比于当存储在所述固态驱动器的非易失性存储器中的数据在被重新打包时将所述逻辑区块以随机的顺序物理上连续地放置在所述固态驱动器的非易失性存储器的预先擦除的位置中,当存储在所述固态驱动器的非易失性存储器中的数据在被重新打包时将所述逻辑区块以递增的顺序物理上连续地放置在所述固态驱动器的非易失性存储器的预先擦除的位置中提高了读取性能,并且其中当所述固态驱动器支持平面并行性,允许一次读取四页时,相对读取性能最高达1600%。
9.一种装置,包括:
多个非易失性存储器芯片;以及
耦合到所述多个非易失性存储器芯片的控制器,其中所述控制器能够操作以:
发起对存储在所述多个非易失性存储器芯片中的数据进行重新打包,其中在对存储在所述多个非易失性存储器芯片中的数据进行重新打包期间,执行对存储在所述多个非易失性存储器芯片中的数据的刷新;以及
当存储在所述多个非易失性存储器芯片中的数据在被重新打包时,将逻辑区块以递增的顺序物理上连续地放置在所述多个非易失性存储器芯片的预先擦除的位置中。
10.根据权利要求9所述的装置,其中所述控制器还能够操作以:
接收来自主机的针对多个逻辑区块的读取请求;以及
响应于确定所述多个逻辑区块是被以递增的顺序物理上连续地存储的,向一个或多个非易失性存储器芯片发出单个请求来提取所述多个逻辑区块。
11.根据权利要求10所述的装置,其中相比于在所述多个非易失性存储器芯片中,在所述主机中所述逻辑区块是以较小的大小来表示的。
12.根据权利要求11所述的装置,其中间接表保存指针,所述指针指向存储在所述多个非易失性存储器芯片中的有效数据的最近的拷贝的物理存储器地址,并且其中所述间接表以与所述主机相同的大小来表示所述多个逻辑区块。
13.根据权利要求9所述的装置,其中所述多个非易失性存储器芯片包括三维NAND芯片,并且其中针对每个三维NAND芯片仅有唯一的通道,带有唯一的芯片选择,并且不能通过所述唯一的通道传递并行的读取请求。
14.根据权利要求13所述的装置,其中NAND页大小为16千字节,并且从主机到所述装置的请求是以4千字节的页大小做出的。
15.根据权利要求9所述的装置,其中周期性地执行对所述多个非易失性存储器芯片中的数据的重新打包,并且其中在对所述多个非易失性存储器芯片中的数据进行每个周期性的重新打包期间,执行将所述逻辑区块以递增的顺序物理上连续地放置在所述多个非易失性存储器芯片的预先擦除的位置中。
16.根据权利要求9所述的装置,其中相比于当所述数据在被重新打包时将所述逻辑区块以随机的顺序物理上连续地放置在所述预先擦除的位置中,当所述数据在被重新打包时将所述逻辑区块以递增的顺序物理上连续地放置在所述预先擦除的位置中提高了读取性能,并且其中当所述装置支持平面并行性,允许一次读取四页时,相对读取性能最高达1600%。
17.一种系统,包括:
包括多个非易失性存储器芯片的固态驱动器;
显示器;以及
耦合到所述固态驱动器和所述显示器的处理器,其中,所述固态驱动器能够操作以:
发起对存储在所述多个非易失性存储器芯片中的数据进行重新打包,其中在对存储在所述多个非易失性存储器芯片中的数据进行重新打包期间,执行对存储在所述多个非易失性存储器芯片中的数据的刷新;以及
当存储在所述多个非易失性存储器芯片中的数据在被重新打包时,将逻辑区块以递增的顺序物理上连续地放置在所述多个非易失性存储器芯片的预先擦除的位置中。
18.根据权利要求17所述的系统,其中所述固态驱动器还能够操作以:
接收来自主机操作系统的针对多个逻辑区块的读取请求;以及
响应于确定所述多个逻辑区块是被以递增的顺序物理上连续地存储的,向一个或多个非易失性存储器芯片发出单个请求来提取所述多个逻辑区块。
19.根据权利要求18所述的系统,其中相比于所述多个非易失性存储器芯片,所述主机操作系统以较小的大小来表示逻辑区块。
20.根据权利要求19所述的系统,其中间接表保存指针,所述指针指向存储在所述多个非易失性存储器芯片中的有效数据的最近的拷贝的物理存储器地址,并且其中所述间接表以与所述主机操作系统相同的大小来表示所述多个逻辑区块。
21.根据权利要求17所述的系统,其中所述多个非易失性存储器芯片包括三维NAND芯片,并且其中针对每个三维NAND芯片仅有唯一的通道,带有唯一的芯片选择,并且不能通过所述唯一的通道传递并行的读取请求。
22.根据权利要求21所述的系统,其中NAND页大小为16千字节,并且从主机操作系统到所述固态驱动器的请求是以4千字节的页大小做出的。
23.根据权利要求17所述的系统,其中周期性地执行对所述多个非易失性存储器芯片中的数据的重新打包,并且其中在对所述多个非易失性存储器芯片中的数据进行每个周期性的重新打包期间,执行将所述逻辑区块以递增的顺序物理上连续地放置在所述多个非易失性存储器芯片的预先擦除的位置中。
24.根据权利要求17所述的系统,其中相比于当所述数据在被重新打包时将所述逻辑区块以随机的顺序物理上连续地放置在所述预先擦除的位置中,当所述数据在被重新打包时将所述逻辑区块以递增的顺序物理上连续地放置在所述预先擦除的位置中提高了读取性能,并且其中当所述固态驱动器支持平面并行性,允许一次读取四页时,相对读取性能最高达1600%。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/581,723 US9778848B2 (en) | 2014-12-23 | 2014-12-23 | Method and apparatus for improving read performance of a solid state drive |
US14/581,723 | 2014-12-23 | ||
PCT/US2015/062215 WO2016105780A1 (en) | 2014-12-23 | 2015-11-23 | Method and apparatus for improving read performance of a solid state drive |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107003813A true CN107003813A (zh) | 2017-08-01 |
CN107003813B CN107003813B (zh) | 2021-11-19 |
Family
ID=56129385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580063541.1A Active CN107003813B (zh) | 2014-12-23 | 2015-11-23 | 用于提高固态驱动器的读取性能的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9778848B2 (zh) |
KR (2) | KR20220150437A (zh) |
CN (1) | CN107003813B (zh) |
TW (1) | TWI570558B (zh) |
WO (1) | WO2016105780A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9778848B2 (en) | 2014-12-23 | 2017-10-03 | Intel Corporation | Method and apparatus for improving read performance of a solid state drive |
US10528462B2 (en) | 2016-09-26 | 2020-01-07 | Intel Corporation | Storage device having improved write uniformity stability |
TWI620067B (zh) * | 2016-12-01 | 2018-04-01 | 英業達股份有限公司 | 伺服器系統與讀取方法 |
US10884919B2 (en) * | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US20190034105A1 (en) * | 2017-12-28 | 2019-01-31 | Intel Corporation | Storage device having programmed cell storage density modes that are a function of storage device capacity utilization |
US10921988B2 (en) | 2018-02-15 | 2021-02-16 | SK Hynix Inc. | System and method for discovering parallelism of memory devices |
US11231873B2 (en) * | 2018-12-07 | 2022-01-25 | Intel Corporation | Apparatus and method for assigning velocities to write data |
CN112313747A (zh) * | 2018-12-25 | 2021-02-02 | 英特尔公司 | 用于非易失性存储介质的减少次数的擦除验证 |
US10725706B1 (en) * | 2019-01-23 | 2020-07-28 | Qualcomm Incorporated | Apparatus and method of scheduling universal flash storage refresh operations according to a refresh handover mechanism |
US11385837B2 (en) * | 2020-01-07 | 2022-07-12 | SK Hynix Inc. | Memory system |
US11315611B2 (en) | 2020-01-07 | 2022-04-26 | SK Hynix Inc. | Processing-in-memory (PIM) system and operating methods of the PIM system |
TW202141290A (zh) | 2020-01-07 | 2021-11-01 | 韓商愛思開海力士有限公司 | 記憶體中處理(pim)系統和pim系統的操作方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000172917A (ja) * | 1998-12-02 | 2000-06-23 | Sanden Corp | 自動販売機の制御装置 |
CN1637724A (zh) * | 2003-12-26 | 2005-07-13 | 三星电子株式会社 | 用于闪速存储器的数据管理装置和方法 |
CN101088073A (zh) * | 2004-12-31 | 2007-12-12 | 英特尔公司 | 独立于操作系统的存储器功率管理 |
CN101667458A (zh) * | 2009-09-22 | 2010-03-10 | 成都市华为赛门铁克科技有限公司 | 一种固态硬盘全盘擦除的方法和相应的设备 |
US20110307646A1 (en) * | 2008-06-13 | 2011-12-15 | Samsung Electronics Co., Ltd. | Memory system and method of accessing a semiconductor memory device |
US20130080685A1 (en) * | 2011-09-28 | 2013-03-28 | Samsung Electronics Co. Ltd. | Storage devices and methods of driving storage devices |
TW201419303A (zh) * | 2012-08-23 | 2014-05-16 | Apple Inc | 在固態硬碟中命令執行次序的有效強制執行 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7082495B2 (en) * | 2002-06-27 | 2006-07-25 | Microsoft Corporation | Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory |
US20070143560A1 (en) | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with memory allocation for a directly mapped file storage system |
TW200949841A (en) * | 2008-05-28 | 2009-12-01 | Silicon Power Comp & Comm Inc | Solid state disk and accessing method thereof |
US9123422B2 (en) | 2012-07-02 | 2015-09-01 | Super Talent Technology, Corp. | Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells |
US8055816B2 (en) * | 2009-04-09 | 2011-11-08 | Micron Technology, Inc. | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
US8166233B2 (en) | 2009-07-24 | 2012-04-24 | Lsi Corporation | Garbage collection for solid state disks |
KR20120001405A (ko) * | 2010-06-29 | 2012-01-04 | 삼성전자주식회사 | 메모리 시스템 및 그것의 웨어 레벨링 방법 |
JP5535128B2 (ja) * | 2010-12-16 | 2014-07-02 | 株式会社東芝 | メモリシステム |
US9311229B2 (en) | 2011-03-29 | 2016-04-12 | Blackberry Limited | System and method for managing flash memory |
KR102094334B1 (ko) * | 2013-03-15 | 2020-03-27 | 삼성전자주식회사 | 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법 |
US9619177B2 (en) * | 2014-06-05 | 2017-04-11 | Kabushiki Kaisha Toshiba | Memory system including non-volatile memory, buffer memory, and controller controlling reading data from non-volatile memory |
KR20160004073A (ko) * | 2014-07-02 | 2016-01-12 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그 구동 방법 |
KR20160064364A (ko) * | 2014-11-27 | 2016-06-08 | 삼성전자주식회사 | 패스트 오픈을 위한 어드레스 맵 운영방법 및 그에 따른 메모리 시스템 |
US9778848B2 (en) | 2014-12-23 | 2017-10-03 | Intel Corporation | Method and apparatus for improving read performance of a solid state drive |
-
2014
- 2014-12-23 US US14/581,723 patent/US9778848B2/en active Active
-
2015
- 2015-11-20 TW TW104138582A patent/TWI570558B/zh active
- 2015-11-23 KR KR1020227037879A patent/KR20220150437A/ko active IP Right Grant
- 2015-11-23 WO PCT/US2015/062215 patent/WO2016105780A1/en active Application Filing
- 2015-11-23 CN CN201580063541.1A patent/CN107003813B/zh active Active
- 2015-11-23 KR KR1020177013818A patent/KR102462305B1/ko active IP Right Grant
-
2017
- 2017-10-02 US US15/723,072 patent/US10114556B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000172917A (ja) * | 1998-12-02 | 2000-06-23 | Sanden Corp | 自動販売機の制御装置 |
CN1637724A (zh) * | 2003-12-26 | 2005-07-13 | 三星电子株式会社 | 用于闪速存储器的数据管理装置和方法 |
CN101088073A (zh) * | 2004-12-31 | 2007-12-12 | 英特尔公司 | 独立于操作系统的存储器功率管理 |
US20110307646A1 (en) * | 2008-06-13 | 2011-12-15 | Samsung Electronics Co., Ltd. | Memory system and method of accessing a semiconductor memory device |
CN101667458A (zh) * | 2009-09-22 | 2010-03-10 | 成都市华为赛门铁克科技有限公司 | 一种固态硬盘全盘擦除的方法和相应的设备 |
US20130080685A1 (en) * | 2011-09-28 | 2013-03-28 | Samsung Electronics Co. Ltd. | Storage devices and methods of driving storage devices |
TW201419303A (zh) * | 2012-08-23 | 2014-05-16 | Apple Inc | 在固態硬碟中命令執行次序的有效強制執行 |
Also Published As
Publication number | Publication date |
---|---|
TW201636848A (zh) | 2016-10-16 |
WO2016105780A1 (en) | 2016-06-30 |
TWI570558B (zh) | 2017-02-11 |
US20180121092A1 (en) | 2018-05-03 |
US10114556B2 (en) | 2018-10-30 |
KR20220150437A (ko) | 2022-11-10 |
KR20170099852A (ko) | 2017-09-01 |
US20160179376A1 (en) | 2016-06-23 |
KR102462305B1 (ko) | 2022-11-03 |
CN107003813B (zh) | 2021-11-19 |
US9778848B2 (en) | 2017-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107003813A (zh) | 用于提高固态驱动器的读取性能的方法和装置 | |
CN105009094B (zh) | 在固态驱动器中利用空闲空间计数来重建两阶加电映射的方法、设备和系统 | |
CN109240938A (zh) | 存储系统以及控制非易失性存储器的控制方法 | |
CN104126177B (zh) | 预交错顺序数据的系统及方法 | |
TW201109920A (en) | Methods, memory controllers and devices for wear leveling a memory | |
CN105683953B (zh) | 支持加速数据库操作的数据存储设备 | |
CN107957961A (zh) | 存储设备、存储系统和计算设备 | |
CN106371761A (zh) | 内存系统以及非易失性内存的控制方法 | |
CN106354615A (zh) | 固态硬盘日志生成方法及其装置 | |
CN103176858B (zh) | 具有多个固态盘的存储设备 | |
CN109164975A (zh) | 一种将数据写入固态硬盘的方法以及固态硬盘 | |
CN109408417A (zh) | 存储装置的地址映射方法和操作方法 | |
US20180136865A1 (en) | Method of operating memory device, memory device using the same and memory system including the device | |
CN109213438A (zh) | 预先管理待分配给写入数据的物理地址的存储装置 | |
CN109901791A (zh) | 信息处理装置以及信息处理装置的执行方法 | |
WO2015114829A1 (ja) | 情報処理装置 | |
WO2021046725A1 (en) | Memory mapping device and method | |
CN113012730A (zh) | 具有微凸块以发射用于机器学习操作的数据的存储器装置 | |
CN106293491B (zh) | 写请求的处理方法和内存控制器 | |
CN112908373B (zh) | 用于使用微凸块执行机器学习操作的系统 | |
CN107003811A (zh) | 减少在固态驱动器中输入和输出操作的混杂 | |
TWI705328B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN112908372A (zh) | 使用不同微凸块发射用于机器学习操作的数据 | |
CN105589810A (zh) | 数据储存器件及其操作方法 | |
US10810016B2 (en) | Operating methods of computing devices comprising storage devices including nonvolatile memory devices, buffer memories and controllers |
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 |