CN104425039A - 用于改进的固态介质顺序读的动态映射预取 - Google Patents
用于改进的固态介质顺序读的动态映射预取 Download PDFInfo
- Publication number
- CN104425039A CN104425039A CN201410027046.2A CN201410027046A CN104425039A CN 104425039 A CN104425039 A CN 104425039A CN 201410027046 A CN201410027046 A CN 201410027046A CN 104425039 A CN104425039 A CN 104425039A
- Authority
- CN
- China
- Prior art keywords
- mapping
- data
- enum
- size
- read request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及用于改进的固态介质顺序读的动态映射预取。所描述的实施例提供了包括介质控制器和固态介质的固态驱动器(SSD)。介质控制器的控制处理器确定与从主机设备接收的读请求相关联的逻辑地址、传输大小和基于逻辑地址和传输大小的映射数据。基于逻辑地址和根据一个或多个先前的读请求而定义的顺序区,控制处理器确定所接收的读请求是否是顺序读。基于所接收的读请求的传输大小和所接收的读请求是否是顺序读而调整映射数据预取大小。映射数据的相对应部分从固态介质传输到耦合于控制处理器的映射高速缓存,所传输的部分的大小等于经调整的映射数据预取大小。
Description
相关申请的交叉引用
本申请是2013年9月10日提交的美国专利申请第14/022781号的部分接续并要求其申请日的权益,该申请的教示通过引用整体结合于此。
本申请的主题相关于2012年5月4日提交的美国专利申请第13/464433号、2012年8月4日提交的第13/567025号、2012年8月31日提交的第13/600464号、2012年12月28日提交的第13/729966号、2013年1月23日提交的第13/748260号和2013年8月9日提交的第13/963074号,所有这些申请的教示通过引用整体结合于此。
背景技术
快闪(Flash)存储器是一种特定类型的电可擦除可编程只读存储器(EEPROM)的非易失性存储器(NVM)。一类普遍采用的快闪存储器技术是NAND快闪存储器。NAND快闪存储器要求每单元小芯片面积,并通常划分成一个或多个库(bank)或层(plane)。每个库划分成区块(block);每个区块划分成页(page)。每个页包括用于存储用户数据、错误更正码(ECC)信息或者二者的数个字节。
NAND设备有三种基本操作:读、写和擦除。读和写操作是在逐页的基础上执行的。页大小一般是2N字节的用户数据(加上用于ECC信息的附加字节),其中N是整数,典型的用户数据页大小是例如每页2048字节(2KB)、4096字节(4KB)、8192字节(8KB)或更多。“读单元”是可以从NVM读取并由ECC更正的最小量的数据和相对应的ECC信息,并通常可以在4K位和32K位之间(例如,一般每页有整数数量的读单元)。页通常安排在区块中,并且擦除操作是在逐区块的基础上执行的。典型的区块大小是例如每区块64、128或更多页。页必须顺序地写,通常是在区块内从低地址到高地址。直到区块被擦除才能重写较低的地址。与每个页相关联的是一般用于存储ECC信息和/或用于存储器管理的其它元数据的空闲区域(通常是100-640字节)。ECC信息一般用来检测和更正存储在页中的用户数据中的错误。
硬盘由主机设备基于逻辑区块地址(LBA)访问。对于硬盘写操作,老数据由新数据在同一物理LBA盖写。NVM是基于逻辑页号(LPN)访问的。然而,由于NAND设备要求在将新数据写到区块之前擦除该区块的数据,每个页通常仅可以写一次。因此,对于NAND设备,为了将新数据写到给定LBA,新数据是写到经擦除的页中,该经擦除的页是与先前用于该LBA的页不同的物理页。因此,NAND设备要求设备驱动器软件或带固件的单独的控制器芯片以维护每个LBA到存储它的数据的当前页号的逻辑到物理映射的记录。映射数据也可以用来执行“垃圾收集”以擦除“陈旧”或过时的数据。而且,因为在设备故障之前NVM块仅可以被擦除有限次,映射数据也可以用来在NVM的操作寿命内(例如,在NAND快闪的额定数量的编程/擦除(P/E)周期内)跟踪故障区块。
对于将映射数据存储在NVM的SSD,从NVM检索映射数据可以在典型主机工作负载下频繁发生,并且因此,当信道(多个)被用于传输映射数据时,会负面地影响可用来向/从NVM传输实际用户数据的带宽。因此,需要用于从NVM检索映射数据的改进机制。
发明内容
提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
所描述实施例提供了包括介质控制器和固态介质的固态驱动器(SSD)。介质控制器的控制处理器确定与从主机设备接收的读请求相关联的逻辑地址、传输大小和基于所确定的逻辑地址和传输大小的映射数据。基于所确定的逻辑地址和根据一个或多个先前的读请求而定义的顺序区,控制处理器确定所接收的读请求是否是顺序读请求。基于所接收的读请求的传输大小和所接收的读请求是否是顺序读请求而调整映射数据预取大小。映射数据的相对应部分从固态介质传输到耦合于控制处理器的映射高速缓存,所传输的部分的大小等于经调整的映射数据预取大小。基于映射数据,确定与逻辑地址和传输大小相关联的固态介质的介质地址,且将用户数据从介质地址传输到主机设备。
附图简述
所描述实施例的其它方面、特征和优点将通过以下具体实施方式、所附的权利要求书和附图而变得更加显而易见,附图中类似的附图标记标识相似或相同的元素。
图1示出了根据示例性实施例的快闪存储器存储系统的框图;
图2示出了图1的快闪存储器存储系统的逻辑区块号(LBA)的逻辑页号(LPN)部分的示例性映射的框图;
图3示出了图1的快闪存储器存储系统的示例性两级映射结构的框图;
图4示出了由图1的快闪存储器存储系统采用的主机读请求操作的示例性流程图;
图5示出了图4的主机读请求操作的顺序操作检测步骤的附加细节;
图6示出了根据图4的采用固定的映射数据读大小的读请求操作的示例性时序图;以及
图7示出了根据图4的采用动态调整大小的映射数据读大小的读请求操作的示例性时序。
具体实施方式
所描述实施例提供了包括介质控制器和固态介质的固态驱动器(SSD)。介质控制器的控制处理器确定与从主机设备接收的读请求相关联的逻辑地址、传输大小和基于所确定的逻辑地址和传输大小的映射数据。基于所确定的逻辑地址和根据一个或多个先前的读请求而定义的顺序区,控制处理器确定所接收的读请求是否是顺序读请求。基于所接收的读请求的传输大小和所接收的读请求是否是顺序读请求而调整映射数据预取大小。映射数据的相对应部分从固态介质传输到耦合于控制处理器的映射高速缓存,所传输的部分的大小等于经调整的映射数据预取大小。基于映射数据,确定与逻辑地址和传输大小相关联的固态介质的介质地址,且将用户数据从介质地址传输到主机设备。
表1定义了贯穿本说明书所采用的缩写的列表,以帮助理解所述实施例:
图1示出了非易失性存储器(NVM)存储系统100的框图。NVM存储系统100包括介质110,该介质通过介质接口172耦合到介质控制器120。介质110可以实现为NAND快闪固态盘(SSD)、诸如硬盘驱动器(HDD)的磁存储介质、或实现为混合固态和磁系统。如图1中所示,介质110可以包括一个或多个物理存储器(例如,非易失性存储器,NVM),诸如多个快闪芯片,示为快闪逻辑单元(LUN)111(1)-111(N)。每个快闪LUN111(1)-111(N)可以有相关联的高速缓存,示为LUN高速缓存113(1)-113(N)。如图1中所示,介质110和介质控制器120共同称为SSD101。介质控制器120包括固态控制器130、控制处理器140、缓冲器150和I/O接口160。介质控制器120控制介质110和耦合到通信链接170的主机设备180之间的数据传输。介质控制器120可以实现为片上系统(SoC)或其它集成电路(IC)。固态控制器130可以用来访问介质110中的存储器位置,并通常可以实现用于与介质110接口的低级、设备专用的操作。缓冲器150可以是RAM缓冲器,其被采用来用作控制处理器140的高速缓存和/或用作固态介质110和主机设备180之间的操作的读/写缓冲器。例如,在固态介质110和主机设备180之间经由I/O接口160和链接170的传输过程中数据一般可以暂时存储在缓冲器150中。缓冲器150可以采用来将数据聚合或拆分以解决通信链接170的数据传输大小和介质110的存储单元大小(例如,读单元大小、页大小、扇区大小或映射单元大小)之间的差别。缓冲器150可以实现为静态随机访问存储器(SRAM)或在介质控制器120内部的嵌入式动态随机访问存储器(eDRAM),不过缓冲器150也可以包括在介质控制器120外部的存储器(未示出),该控制器通常可以实现为双倍数据率(例如DDR-3)DRAM。
控制处理器140与固态控制器130通信以控制介质110中的数据访问(例如,读或写操作)数据。控制处理器140可以实现为一个或多个Power 或ARM处理器,或者不同处理器类型的组合(是英特尔公司的注册商标、是Tensilica公司的商标、ARM处理器是ARMHoldings出品,且Power是IBM的注册商标)。尽管在图1中示为单个处理器,控制处理器140可以由多个处理器(未示出)实现并包括操作所需要的软件/固件,所述操作包括根据所述实施例执行阈值优化的操作。控制处理器140与低密度奇偶检查(LDPC)编码器/解码器(编解码器)142通信,该编码器/解码器执行对写到介质110的数据的LDPC编码和对从介质110读的数据的解码。控制处理器也与映射144通信,该映射用来在主机操作的逻辑地址(例如,读/写操作的逻辑块地址(LBA)等)和介质110上的物理地址之间转换。如此处采用的,术语LBA与HPA(主机页地址)是同义的。
通信链接170用来与主机备180通信,该主机设备可以是与NVM系统100接口的计算机系统。通信链接170可以是定制的通信链接,或者可以是根据标准通信协议操作的总线,诸如,例如小型计算机系统接口(SCSI)协议总线、串行附连SCSI(SAS)协议总线、串行高级技术附件(SATA)协议总线、通用串行总线(USB)、以太网链接、IEEE802.11链接、IEEE802.15链接、IEEE802.16链接、外围组件互连快速(PCI-E)链接、串行快速输入/输出(SRIO)链接、或用于将外围设备连接到计算机的任何其它类似接口链接。
一般地,介质控制器120执行从主机设备180接收的命令。至少其中一些命令用发自主机设备180的数据向介质110写数据,或者从介质110读数据并将所读的数据发送给主机设备180。介质控制器120采用一个或多个数据结构来将逻辑存储器地址(例如,主机操作中包括的LBA)映射到介质的物理地址。当在SSD中写LBA时,该LBA一般每次写到不同的物理位置,并且每次写都更新映射以记录LBA的数据驻留在非易失性存储器(例如介质110)中何处。例如,在诸如2012年8月8日提交并通过引用结合于此的国际专利申请第PCT/US2012/049905号中所描述的系统中,介质控制器120采用包括叶级(leaflevel)和一个或多个更高级的多级映射架构(例如映射144)。叶级包括数个映射页,每个映射页有一个或多个条目。在多级映射结构中查找诸如附连介质(例如介质110)的LBA的逻辑地址,以确定在诸多叶级页中特定叶级页中的诸多条目中的相对应一个。LBA的相对应条目包含与LBA相关联的信息,诸如与LBA相关联的介质110的物理地址。在例如2013年9月10日提交的美国专利申请第14/022781号中所描述的一些实现中,相对应的条目还包括关于相对应的条目是有效还是无效,及可选地LBA是否有TRIM命令在它上面运行(经消减的(trimmed))或完全没有被写过的指示。例如,无效的条目能够编码无效条目的物理位置部分中的信息,诸如相关联的LBA是否经消减了。
为了加速LBA的查找,至少一些叶级页的映射高速缓存(未示出)可以由映射144维护。在一些实施例中,映射数据结构的至少一部分用于对主机设备180不可见的私有存储(例如,用来存储日志、统计、映射数据或介质控制器120的其它私有/控制数据)。
如此处所描述的,映射144在主机设备180所使用的逻辑数据寻址和介质110所使用的物理数据寻址之间转换。例如,映射144在主机设备180所使用的LBA和介质110的一个或多个快闪管芯的区块和/或页地址之间转换。例如,映射144可以包括一个或多个表以执行或查找逻辑地址和物理地址之间的转换。
与每个LBA相关联的数据,或是以固定的未压缩的大小,或是以相关的经压缩的大小,被存储在介质110的相对应物理地址中。如此处所描述的,读单元是独立可读的介质110的最精细的粒度,诸如介质110的页的一部分。读单元可以包括(或相对应于)错误更正码(ECC)的检查位和/或冗余数据和由ECC保护的所有数据。图2示出了由映射144映射LBA的LPN部分的实施例的经选择的细节。如图2中所示,LBA206包括逻辑页号(LPN)202和逻辑偏移204。映射144将LPN202转换成映射数据212,该映射数据212包括读单元地址208和读单元中的长度210(以及可能包括其它映射数据,如省略号所指示的)。映射数据212通常可以作为映射条目存储进映射144的映射表。映射144通常可以对每个由系统100活跃地使用的LPN维护一个映射条目。如所示,映射数据212包括读单元地址208和读单元中的长度210。在一些实施例中,长度和/或跨度被编码存储,诸如通过将与LPN相关联的数据的长度存储为从读单元中的长度210的全部(或一部分)中的跨度的偏移来实现此举。跨度(或读单元中的长度)规定要读的多个读单元以获取与LPN相关联的数据,其中(与LPN相关联的数据的)长度用于统计,例如用来跟踪SSD的每个区块中已用空间的量。通常,长度有比跨度更精细的粒度。
在一些实施例中,第一LPN与第一映射条目相关联,第二LPN(不同于第一LPN,但指向与第一LPN所指向的逻辑页有相同大小的逻辑页)与第二映射条目相关联,并且第一映射条目的读单元中的相应长度与第二映射条目的读单元中的相应长度不同。在这样的实施例中,在同一时间点,第一LPN与第一映射条目相关联,第二LPN与第二映射条目相关联,并且第一映射条目的相应读单元地址与第二映射条目的相应读单元地址相同,使得与第一LPN相关联的数据和与第二LPN相关联的数据都存储在介质110的同一物理读单元中。
在各种实施例中,映射144是以下映射之一以将主机协议的LBA与介质110中的物理存储地址相关联:一级映射;包括第一级映射(FLM)和一个或多个第二级(或较低级)映射(SLM)的两级映射。例如,如图3中所示,FLM310是在例如映射144中的介质控制器120中在芯片上维护的。在一些实施例中,FLM310的非易失性(不过稍微老些)备份也存储在介质110中。FLM310中的每个条目事实上是到SLM页(例如SLM316中的一个)的指针。SLM316存储在介质110中,并且在一些实施例中,SLM中的一些缓存在映射144的芯片上SLM高速缓存(例如SLM高速缓存308)中。FLM310中的条目包含相对应的第二级映射页(例如SLM高速缓存308或介质110中)的地址(以及可能包含地址的数据长度/范围或其它信息)。如图3中所示,映射144可以包括带第一级映射(FLM)310的两级映射,该第一级映射将给定LBA(例如LBA302)的第一函数(例如用第二级映射页中的每一个中所包括的条目的固定数量除LBA时获得的商)与示为SLM316的多个第二级映射(SLM)之一中的相应地址相关联,并且每个SLM将LBA的第二函数(例如用第二级映射页中的每一个中所包括的条目的固定数量除LBA时获得的余数)与相对应于LBA的介质110中的相应地址相关联。
例如,如图3中所示,转换器304接收相对应于主机操作(例如来自主机180的对介质110上的相对应LBA读或写的请求)的LBA(LBA302)。转换器304将LBA302转换成FLM索引306和SLM页索引314,例如通过用相对应的SLM页316中的每一个中的条目的整数数量除LBA302来完成此举。在所述实施例中,FLM索引306是除法操作的商,且SLM页索引314是除法操作的余数。采用除法操作允许SLM页316包括多个(不是二的幂)的条目,这可以允许SLM页316减少大小、降低由于更新SLM页316的写操作造成的介质110的写放大。FLM索引306用来唯一地标识FLM310中的条目,该条目包括相对应与SLM页316中的一个的SLM页索引(314)。如312所指示的,在相对应于FLM条目的SLM页索引的SLM页存储在SLM高速缓存308的实例中,FLM310可以返回与LBA302相对应的介质110的物理地址。SLM页索引314用来唯一地标识SLM316中的条目,如318所指示的,该条目相对应于与LBA302相对应的介质110的物理地址。SLM316的条目可以编码为读单元地址(例如快闪页的ECC可更正子单元的地址)和读单元的长度。
SLM页316(或多级映射(MLM)结构的较低级)可以全部包括相同数量的条目,或者SLM页316(或MLM结构的较低级)的每一个可以包括不同数量的条目。而且,SLM页316(或MLM结构的较低级)的条目可以是相同粒度的,或者可以对SLM页316(或MLM结构的较低级)的每一个设置粒度。在示例性实施例中,FLM310有每条目4KB的粒度,并且SLM页316(或MLM结构的较低级)的每一个有每条目8KB的粒度。因此,例如,FLM310中的每个条目与512B LBA的经对齐的八扇区(4KB)区域相关联,并且SLM页316之一中的每个条目与512B LBA的经对齐的十六扇区(8KB)区域相关联。
在采用了两级映射结构或MLM结构的实施例中,一个或多个较低级映射页(例如SLM页316或MLM的叶级映射页)可以存储在映射144的高速缓存(图3中示为SLM高速缓存308)中。例如,在诸如图3中所示的两级映射中,FLM索引306用来唯一地标识SLM页316之一。根据各种实施例,使用一个或多个高速缓存技术来查找FLM索引并确定相对应的SLM页是在高速缓存中(命中)还是不在(不中)。诸如使用内容可寻址存储器(CAM)用于查找的完全关联高速缓存可以在一些实现中使用。例如,CAM可以基本按照相关于2012年8月31日提交的美国专利申请第13/600464号所描述的操作。在其它实施例中,可以采用其它高速缓存结构,诸如多通道成组关联高速缓存,以便每个条目有相关联的索引或地址,用来跟踪与当前在该索引或地址处的高速缓存中的SLM页相关联的信息。
在许多实施例中,为了降低成本,映射高速缓存将不会足够大到存储全部SLM页,因此只要求将映射表的部分(例如SLM页316中被要求的一些)预取进映射高速缓存以执行主机操作。例如,主机读命令通常包含读操作的逻辑区块地址(LBA)和传输大小(TS)。通常,如果先前命令的LBA加上TS等于当前命令的LBA,则主机读命令是顺序的。否则,主机读命令被视为随机的。
图4示出了用于由SSD110执行从主机180接收的读操作的过程400的流程图。在步骤402处,例如通过通信链接170,SSD101从主机180接收读请求。在步骤404处,SSD101确定与读操作相关联的起始LBA和TS。如虚线所指示的,步骤405可以可选地在采用动态映射预取(DMP)的实施例中执行。在步骤405处,介质控制器120确定所接收的读请求是否是顺序读请求。基于请求是否是顺序的,一些实施例可以在步骤410和412期间修改从介质110预取的映射数据的量(映射预取大小或“MPS”)。将参考图5更详细地描述步骤405。
在步骤406处,映射144确定与所确定的LBA的LBA范围和TS相关联的映射数据是否存储在映射高速缓存中(例如,在例如SLM高速缓存308的映射高速缓存中的相关联的映射数据是否存在有高速缓存命中或不中)。如果在步骤406处存在高速缓存命中,则过程400前进到步骤414。如果在步骤406处存在高速缓存不中,则在步骤408处将映射高速缓存中的一个或多个条目分配给与所确定的LBA范围相关联的映射数据。在步骤410处,在第一阶段
(“MP1”)中从介质110预取LBA范围的映射数据,所述第一阶段将数据从快闪单元(例如LUN111)读到本地快闪高速缓存(例如LUN高速缓存113)中。在步骤412处,在第二阶段(“MP2”)中将LBA范围的映射数据从本地快闪高速缓存传输到映射144的高速缓存。在步骤414处,基于映射数据而确定读请求的LBA范围的介质地址(MA)。
在步骤416和418处,介质控制器120在两个阶段中从介质110读取所请求的数据。在步骤416处,存储在所确定的MA处的所请求的用户数据从LUN111的一个或多个传输到相关联的LUN高速缓存113(“UR1”)。在步骤418处,所请求的用户数据从LUN高速缓存113传输到缓冲器150(“UR2”)用于准备到主机180的递送(例如,形成分组用于根据通信链接170所采用的通信协议传输)。在步骤420处,将所请求的用户数据传输到主机180。一旦全部的所请求的用户数据都传输了,在步骤422处SSD101向主机180报告命令完成。在步骤424处,如果从主机180接收了另一读请求,则过程400返回到步骤404以处理下一读请求。否则,如果没有接收后续读请求,则在步骤426处过程400完成。
在许多实施例中,主机请求可以由SSD101按“块(chunk)”接收,其中在SSD101开始处理任何请求之前接收了多个主机请求或者SSD101在处理先前接收的请求时经常有多个待办主机请求排队。在这样的情况中,SSD101跟踪所接收的主机请求的准确序列。因此,SSD101可以改进对映射和用户数据的访问,从而因此改进主机180的整体数据吞吐量。
如图4中所示,在一些实施例中,SSD101可以将固定量的映射数据(映射预取大小或“MPS”)预取进映射高速缓存中。然而,通过使用固定的MPS,可能每经过几次用户数据读,SSD就会需要预取附加的映射数据。在映射数据预取之间的用户数据读的实际数量取决于每次预取多少映射条目。如图4中所示,映射数据是在两阶段过程MP1(例如步骤410)和MP2(例如步骤412)中预取的。在大多数实施例中,MP1比MP2更耗时。由于用户数据也存储在相同的LUN(例如111)中且读用户数据涉及相似的两阶段过程(例如步骤416处的UR1和步骤418处的UR2),可能本地快闪高速缓存(例如113)会被后续用户数据读污染(例如用户数据会盖写映射数据)。因此,每次从介质110预取映射数据时,预取在MP1处开始,即使所要求的映射数据刚刚为了先前的读请求被读进本地快闪高速缓存(例如113)中。因此,采用固定的MPS可能会浪费时间和带宽用于重读映射数据。这样的情况在映射预取大小(MPS)小于映射读大小(MRS)时是普遍的。因此,在采用固定MPS的实施例中,应当作出设计折衷以便具有相对小的MPS以处理随机的、相对小的主机读请求(由于每次小随机访问可以可能仅需要几个映射条目)、或具有相对大的MPS以处理顺序的和/或大的主机读请求的(MPS越大,需要执行的MP1和/或MP2操作越少)。
而且,不要求映射读大小(MRS)的大小和MPS(例如,每次预取映射数据时预取的映射数据的量)相同。映射读大小(MRS)是从介质110读整个映射页的数据量。存储在介质110上的映射数据被排列为ECC单元的块(例如与用户数据存储在介质110上相似),且介质110的映射页大小不必等于介质110的快闪页大小。例如,单个映射页可以小于快闪页大小(例如映射页仅使用快闪页的一部分),或者单个映射页可以大于快闪页大小(例如使用两个或多个快闪页,因此跨LUN页边界)。因此,如果映射页占据多于一个的快闪页,则所描述的实施例基于映射数据被要求的部分来确定需要快闪页的哪一个,并只读取所需要的快闪页(例如MPS)而不是读取整个映射页(例如给定映射页的快闪页的全部,或者MRS)。
因此,一些实施例可以采用动态调整大小的MPS以基于实时负载特征改进SSD101的性能。例如,所描述的实施例可以基于顺序的主机请求或一个或多个请求的传输大小动态地定义MPS。请求序列越长(和/或传输大小越大),将设置越大的MPS,并且因此将预取更多的映射数据进映射高速缓存中。通过增加预取进映射高速缓存的映射数据的量,将减少MP1(以及可能地MP2)操作,从而因此允许用更少的读延迟将用户数据返回给主机180。如果主机请求是随机的(和/或传输大小是小的),则将设置更小的MPS,由于将对每个读请求预取映射数据,从而因此降低MP1和MP2操作的长度。因此,所描述的实施例采用“顺序区”(SZ)。如果所接收的请求的起始LBA落入(或接续)先前接收的读请求的LBA范围(“顺序区”)则将所接收的主机请求认为是顺序的。这减少了通常比MP2操作更耗时以传输更大量的数据的MP1操作。
图5示出了图4的步骤405的更多细节。如图5中所示,在步骤502处步骤405开始了。在步骤504处,介质控制器120确定当前读请求是否与先前的读请求是顺序的。在一些实施例中,介质控制器120通过确定当前读请求的起始LBA是否与一个或多个先前的读请求的结束LBA在同一顺序区(SZ)内来确定当前读请求是否是顺序的。否则,确定当前读取请求为随机的。如果在步骤504处当前读请求是顺序的,则在步骤506处介质控制器120对一个或多个顺序读请求确定聚集传输大小(ATS)。ATS是通过将当前读请求的TS加到ATS的先前的值从而累积一个或多个顺序读请求中每一个的传输大小(TS)而确定的。然后过程405前进到步骤508。如果在步骤504处当前读请求是随机的(或非顺序的),则在步骤510处将ATS的值设置为当前读请求的TS的值。然后过程405前进到步骤508。
在步骤508处,基于或者在步骤506或者在步骤508(取决于当前读请求是顺序的还是随机的)处所确定的ATS的值而调整映射数据预取大小(MPS)。当ATS增加时,MPS增加以处理顺序请求(和有大传输大小的随机请求)从而降低MP1和MP2处理延迟。如果ATS降低(例如对于小的随机读请求),则MPS降低到处理整个传输大小的最小值以通过只传输所需要的最小量的映射数据来降低MP2处理延迟。
因此,采用DMP的所述实施例可以通过降低冗余介质访问而改进采用小/有限大小的映射高速缓存的SSD的顺序读性能、增强音频/视频编辑和播放并改进驱动器之间的文件复制速度(例如改进涉及介质的大顺序读的任何操作的速度)、降低系统引导时间(例如引导记录是顺序存储的)、并降低SSD的功耗。
对于不采用动态映射预取(DMP)操作的典型实施例,固定的MPS值不应设置得太大以便避免影响SSD101在随机(或非顺序)工作负载下的性能。在典型实施例中,每个MP1操作要求70us,并且每个MP2操作的时间是与MPS的大小线性相关的(带一些前置时间(lead-time)额外开销)。典型的固定MPS可以设在32个映射条目以满足随机性能要求,但在这样的实例中单个MP1操作不能读足够执行4K对齐的主机读请求的映射条目。
例如,对于具有聚集的128K传输大小的顺序主机读请求,介质控制器120将需要重复地从介质110重读同一映射数据(例如对同一映射数据的多个重复的MP1和MP2操作),从而因此对每个MP1操作引入70us的额外开销,如从图6的示例性波形中可见的。如图6中所示,存在三个顺序的128K主机读,示为602(1)-602(3)。读操作602(1)-602(3)的每一个包括相对应的MP1映射读操作,示为604(1)-604(3)。如图6中所示,对此实施例,每个128K读在整个映射读时间上花费700us,因此在图6所示的示例性情况中,重读映射数据(MP1)表示大概10%的性能损失。采用DMP操作时,在检测到顺序主机请求之后MPS增加到448个条目(例如足够用来执行顺序操作的整个传输大小的映射条目),并且如图7中所示,额外开销降低到每十四个128K主机读(示为702(1))一个70us的MP1操作(例如704(1)),而不是如图6中所示的先前的1:1的额外开销。
因此,如此处所描述的,所描述实施例提供了包括介质控制器和固态介质的固态驱动器(SSD)。介质控制器的控制处理器确定与从主机设备接收的读请求相关联的逻辑地址、传输大小和基于所确定的逻辑地址和传输大小的映射数据。基于所确定的逻辑地址和根据一个或多个先前的读请求而定义的顺序区,控制处理器确定所接收的读请求是否是顺序读请求。基于所接收的读请求的传输大小和所接收的读请求是否是顺序读请求而调整映射数据预取大小。映射数据的相对应部分从固态介质传输到耦合于控制处理器的映射高速缓存,所传输的部分的大小等于经调整的映射数据预取大小。基于映射数据,确定与逻辑地址和传输大小相关联的固态介质的介质地址,且将用户数据从介质地址传输到主机设备。
此处对“一个实施例”或“实施例”的引用意味着在至少一个实施例中可以包括结合实施例所描述的具体特征、结构或特性。出现在说明书中各个地方的短语“在一个实施例中”不必全都指的是同一实施例,也不必是必须与其它实施例互斥的单独的或替换性实施例。同样的情况适用于术语“实现”。
如本申请中所使用的,此处所使用的词语“示例性”意指用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。相反,使用词语“示例性”旨在以具体的方式呈现各个概念。
尽管示例性实施例是相关于包括如数字信号处理器、微控制器或通用计算机的可能实现的软件程序中的处理块而描述的,所述实施例不限于此。如对本领域技术人员将显而易见的,软件的各种功能也可以实现为电路的过程。这样的电路可以在例如单个集成电路、多芯片模块、单个卡或多卡电路包中采用。
所述实施例也可以用方法或用于实践那些方法的装置的形式来体现。所述实施例也可以用体现在非瞬态有形介质中的程序代码的形式来体现,介质诸如磁记录介质、光学记录介质、固态存储器、软盘、CD-ROM、硬盘驱动器或任何其它非瞬态机器可读存储介质,其中当程序代码被加载进入机器并由机器诸如计算机执行时,机器成为用于实践所述实施例的装置。所述实施例也可以用程序代码的形式体现,例如,是否存储在非瞬态机器可读存储介质中、加载进机器和/或由机器执行、或者通过一些传输介质或载体传输,诸如通过电线或有线、通过光纤或经由电磁辐射,其中当程序代码被加载进入机器并由机器诸如计算机执行时,机器成为用于实践所述实施例的装置。当在通用处理器上实现时,程序代码段与处理器相结合以提供一种类似于特定逻辑电路而操作的独特装置。所述实施例也可以用使用所述实施例的方法和/或装置生成的比特流或通过介质、磁记录介质中存储的磁场变化等电子地或光学地传输的其它信号值序列来体现。
应理解,此处阐述的示例性方法的步骤不必要求以所描述的次序执行,并且这样的方法的步骤的次序应被理解为只是示例性的。类似地,这样的方法中可以包括附加步骤,并且在与各种所述实施例一致的方法中某些步骤可以省略或合并。
如此处引用元件和标准时使用的,术语“兼容的”意味着该元件以全部或部分地由该标准规定的方式与其它元件通信,并将被其它元件识别为足够能以由该标准规定的方式与其它元件通信。兼容的元件不需要在由标准规定的方式内部操作。除非以其它方式明确阐明,每个数值或范围应被解释为大概的,如同词语“大约”或“大概”在值或范围之前一样。
另外,出于本描述的目的,术语“耦合”、“耦合的”、“耦合到”、“连接”、“连接的”或“连接到”指任何本领域内已知的或稍后发展的方式,其中允许能量在两个或更多元件之间传输并且构想了一个或多个附加元件的插入,尽管不要求。相反地,术语“直接耦合”、“直接连接”等暗示不存在这样的附加元件。信号和相对应的节点或端口可以通过相同的名字来引用并且对于此处的目的是可以互换的。
应进一步理解,为了解释所述实施例的本质而描述和说明的细节、材料和部件安排中的各种变更可以由本领域技术人员做出而不偏离权利要求书中表达的范围。
Claims (28)
1.一种固态驱动器(SSD),所述固态驱动器包括媒体控制器和固态介质,所述介质控制器与主机设备通信,所述介质控制器包括:
映射高速缓存;
控制处理器,所述控制处理器耦合到所述映射高速缓存并被配置为:
确定与从所述主机设备接收的当前读请求相关联的逻辑地址、传输大小和基于所述经确定的逻辑地址和传输大小的映射数据;
基于所述经确定的逻辑地址和根据一个或多个先前的读请求而定义的顺序区,确定所述当前读请求是否是顺序读请求;
基于所述当前读请求的所述传输大小和所述当前读请求是否是顺序读请求,调整映射数据预取大小;
将所述映射数据的相对应部分从所述固态介质传输到所述映射高速缓存,所传输的部分的大小等于所述经调整的映射数据预取大小;
基于所述相对应的映射数据,确定与所确定的逻辑地址和传输大小相关联的所述固态介质的一个或多个介质地址;以及
将用户数据从所述固态介质的所述一个或多个经确定的介质地址传输到所述主机设备。
2.如权利要求1所述的介质控制器,其特征在于,为了调整所述映射数据预取大小,所述控制处理器被配置为:
当所述当前读请求是顺序读请求时:
通过将所述当前读请求的所述传输大小和所述一个或多个先前的读请求的聚集传输大小相累积,更新所述顺序读请求的聚集传输大小;以及
将所述映射数据预取大小设为等于所述聚集传输大小,以减少所述固态介质和处理所述顺序读请求的所述映射高速缓存之间的数个映射数据传输。
3.如权利要求2所述的介质控制器,其特征在于,通过将所述映射数据预取大小设为等于所述聚集传输大小,所述媒体控制器被配置为达到至少10%的数据吞吐量的增加。
4.如权利要求1所述的介质控制器,其特征在于,为了调整所述映射数据预取大小,所述控制处理器被配置为:
当所述当前读请求是非顺序读请求时:
将所述映射数据预取大小设为等于基于所述当前读请求的所述传输大小的预定义的大小,以减少在所述固态介质和处理所述当前读请求的所述映射高速缓存之间传输的映射数据的量。
5.如权利要求4所述的介质控制器,其特征在于,所述预定义的大小包括处理所述当前读请求的整个传输大小所需要的最小量的数据。
6.如权利要求1所述的介质控制器,其特征在于,为了将包括所述相对应的映射数据的映射数据从所述固态介质传输到所述介质控制器的映射高速缓存,所述介质控制器被配置为:
基于所述至少一个逻辑地址和传输大小,确定所述相对应的映射数据是否存储在所述映射高速缓存中;
如果所要求的映射数据是存储在所述映射高速缓存中,则所述映射高速缓存被配置为将存储所要求的映射数据的映射高速缓存条目的高速缓存索引返回给所述控制处理器。
7.如权利要求6所述的介质控制器,其特征在于,如果所述相对应的映射数据不是存储在所述映射高速缓存中,则所述控制处理器被配置为:
分配所述映射高速缓存中的数个条目以存储所述相对应的映射数据,所分配的条目的数量是基于所述经调整的映射数据预取大小;
将包括所述相对应的映射数据的映射数据从所述固态介质的逻辑单元传输到所述固态介质的本地高速缓存,所述传输的大小等于所述经调整的映射数据预取大小;以及
将包括所述相对应的映射数据的映射数据从所述固态介质的本地高速缓存传输到所述介质控制器的所述映射高速缓存,所述传输的大小等于所述经调整的映射数据预取大小。
8.如权利要求1所述的介质控制器,其特征在于,为了将用户数据从所述固态介质的所述一个或多个介质地址传输到所述主机设备,所述介质控制器被配置为:
将所述用户数据从所述固态介质的逻辑单元中的所述介质地址传输到所述固态介质的本地高速缓存;
将所述用户数据从所述固态介质的所述本地高速缓存传输到所述介质控制器的缓冲器;以及
形成一个或多个主机协议分组,以通过根据所述主机协议操作的通信链接将所述用户数据从所述缓冲器传输到所述主机设备。
9.如权利要求8所述的介质控制器,其特征在于,所述介质控制器被配置为:
当读请求的全部所述用户数据被传输到所述主机设备时,向所述主机设备报告所述读请求的完成。
10.如权利要求1所述的介质控制器,其特征在于,所述控制处理器被配置为:
确定是否从所述主机设备接收到后续读请求;以及
将所述后续读请求作为所述当前读请求处理。
11.如权利要求1所述的介质控制器,其特征在于,所述映射数据包括具有多个叶级映射页的多级映射,所述多个叶级映射页存储在所述固态介质中,每个叶级映射页包括多个映射条目,每个条目与所述固态介质的一个或多个物理地址相关联。
12.如权利要求1所述的介质控制器,其特征在于,所述映射数据包括多级映射,所述多级映射包括:
第二级映射,所述第二级映射具有多个第二级映射页,所述第二级映射页的每一个具有多个条目,每个条目被配置为存储所述固态介质的一个物理地址;以及
第一级映射,所述第一级映射具有多个条目,每个条目与一个第二级映射页相关联,所述第一级映射被配置为将所述至少一个逻辑地址和地址范围与所述第二级映射页的至少一个相关联。
13.如权利要求1所述的介质控制器,其特征在于,所述顺序区是基于所述一个或多个先前的读请求而定义的,并且如果所述当前读请求的所述经确定的逻辑地址在所述一个或多个先前的读请求的所述逻辑地址范围内,则所述当前读请求在所述顺序区内。
14.如权利要求1所述的介质控制器,其特征在于,所述介质控制器被实现为片上系统(SoC)。
15.一种由包括介质控制器和固态介质的固态驱动器(SSD)处理从主机设备接收的请求的方法,所述方法包括:
由所述介质控制器的控制处理器确定与从所述主机设备接收的当前读请求相关联的逻辑地址、传输大小和基于所述经确定的逻辑地址和传输大小的映射数据;
由所述控制处理器,基于所述经确定的逻辑地址和根据一个或多个先前的读请求而定义的顺序区,确定所述当前读请求是否是顺序读请求;
由所述控制处理器,基于所述当前读请求的所述传输大小和所述当前读请求是否是顺序读请求,调整映射数据预取大小;
将所述映射数据的相对应部分从所述固态介质传输到耦合于所述控制处理器的映射高速缓存,所传输的部分的大小等于所述经调整的映射数据预取大小;
基于所述相对应的映射数据,确定与所述经确定的逻辑地址和传输大小相关联的所述固态介质的一个或多个介质地址;以及
将用户数据从所述固态介质的所述一个或多个经确定的介质地址传输到所述主机设备。
16.如权利要求15所述的方法,其特征在于,调整所述映射数据预取大小包括:
当所述当前读请求是顺序读请求时:
通过将所述当前读请求的所述传输大小和所述一个或多个先前的读请求的聚集传输大小相累积,更新所述顺序读请求的聚集传输大小;以及
将所述映射数据预取大小设为等于所述聚集传输大小,以减少所述固态介质和处理所述顺序读请求的所述映射高速缓存之间的数个映射数据传输。
17.如权利要求16所述的方法,其特征在于,通过将所述映射数据预取大小设为等于所述聚集传输大小,数据吞吐量增加至少10%。
18.如权利要求15所述的方法,其特征在于,调整所述映射数据预取大小包括:
当所述当前读请求是非顺序读请求时:
将所述映射数据预取大小设为等于基于所述当前读请求的所述传输大小的预定义的大小,以减少在所述固态介质和处理所述当前读请求的所述映射高速缓存之间传输的映射数据的量。
19.如权利要求18所述的方法,其特征在于,所述预定义的大小包括处理所述当前读请求的整个传输大小所需要的最小量的数据。
20.如权利要求15所述的方法,其特征在于,将包括所述相对应的映射数据的映射数据从所述固态介质传输到所述介质控制器的映射高速缓存包括:
基于所述至少一个逻辑地址和传输大小,确定所述相对应的映射数据是否存储在所述映射高速缓存中;
如果所要求的映射数据是存储在所述映射高速缓存中,则由所述映射高速缓存将存储所要求的映射数据的映射高速缓存条目的高速缓存索引返回给所述控制处理器。
21.如权利要求20所述的方法,其特征在于,如果所述相对应的映射数据不是存储在所述映射高速缓存中,则所述方法包括:
分配所述映射高速缓存中的数个条目以存储所述相对应的映射数据,所分配的条目的数量是基于所述经调整的映射数据预取大小;
将包括所述相对应的映射数据的映射数据从所述固态介质的逻辑单元传输到所述固态介质的本地高速缓存,所述传输的大小等于所述经调整的映射数据预取大小;以及
将包括所述相对应的映射数据的映射数据从所述固态介质的本地高速缓存传输到所述介质控制器的所述映射高速缓存,所述传输具有等于所述经调整的映射数据预取大小的大小。
22.如权利要求15所述的方法,其特征在于,将用户数据从所述固态介质的所述一个或多个经确定的介质地址传输到所述主机设备包括:
将所述用户数据从所述固态介质的逻辑单元中的所述经确定的介质地址传输到所述固态介质的本地高速缓存;
将所述用户数据从所述固态介质的所述本地高速缓存传输到所述介质控制器的缓冲器;以及
形成一个或多个主机协议分组,以通过根据所述主机协议操作的通信链接将所述用户数据从所述缓冲器传输到所述主机设备。
23.如权利要求22所述的方法,其特征在于,包括:
当读请求的全部所述用户数据被传输到所述主机设备时,向所述主机设备报告所述读请求的完成。
24.如权利要求15所述的方法,其特征在于,包括:
确定是否从所述主机设备接收到后续读请求;以及
将所述后续读请求作为所述当前读请求处理。
25.如权利要求15所述的方法啊,其特征在于,所述映射数据包括具有多个叶级映射页的多级映射,所述多个叶级映射页存储在所述固态介质中,每个叶级映射页包括多个映射条目,每个条目与所述固态介质的一个或多个物理地址相关联。
26.如权利要求15所述的方法,其特征在于,所述映射数据包括多级映射,所述多级映射包括:
第二级映射,所述第二级映射具有多个第二级映射页,所述第二级映射页的每一个具有多个条目,每个条目被配置为存储所述固态介质的一个物理地址;以及
第一级映射,所述第一级映射具有多个条目,每个条目与一个第二级映射页相关联,所述第一级映射被配置为将所述至少一个逻辑地址和地址范围与所述第二级映射页的至少一个相关联。
27.如权利要求15所述的方法,其特征在于,包括:
基于所述一个或多个先前的读请求定义所述顺序区,并且如果所述当前读请求的所述经确定的逻辑地址在所述一个或多个先前的读请求的所述逻辑地址范围内则,则确定所述当前读请求在所述顺序区内。
28.一种非瞬态机器可读存储介质,所述介质具有编码于其上的程序代码,其特征在于,当所述程序代码由机器执行时,所述机器实现由包括介质控制器和固态介质的固态驱动器(SSD)处理从主机设备接收的请求的方法,所述方法包括:
由所述介质控制器的控制处理器确定与从所述主机设备接收的当前读请求相关联的逻辑地址、传输大小和基于所述经确定的逻辑地址和传输大小的映射数据;
由所述控制处理器,基于所述经确定的逻辑地址和根据一个或多个先前的读请求而定义的顺序区,确定所述当前读请求是否是顺序读请求;
由所述控制处理器,基于所述当前读请求的所述传输大小和所述当前读请求是否是顺序读请求,调整映射数据预取大小;
将所述映射数据的相对应部分从所述固态介质传输到耦合于所述控制处理器的映射高速缓存,所传输的部分的大小等于所述经调整的映射数据预取大小;
基于所述相对应的映射数据,确定与所述经确定的逻辑地址和传输大小相关联的所述固态介质的一个或多个介质地址;以及
将用户数据从所述固态介质的所述一个或多个经确定的介质地址传输到所述主机设备。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/022,781 | 2013-09-10 | ||
US14/022,781 US9218281B2 (en) | 2012-05-04 | 2013-09-10 | Maintaining ordering via a multi-level map of a solid-state media |
US14/094,846 | 2013-12-03 | ||
US14/094,846 US9235346B2 (en) | 2012-05-04 | 2013-12-03 | Dynamic map pre-fetching for improved sequential reads of a solid-state media |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104425039A true CN104425039A (zh) | 2015-03-18 |
Family
ID=52973788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410027046.2A Pending CN104425039A (zh) | 2013-09-10 | 2014-01-21 | 用于改进的固态介质顺序读的动态映射预取 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104425039A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107526689A (zh) * | 2016-06-17 | 2017-12-29 | 希捷科技有限公司 | 读高速缓存管理 |
CN114442911A (zh) * | 2020-11-06 | 2022-05-06 | 戴尔产品有限公司 | 用于固态驱动器的异步输入/输出扫描和聚合的系统和方法 |
CN117032595A (zh) * | 2023-10-09 | 2023-11-10 | 北京忆恒创源科技股份有限公司 | 顺序流检测方法及存储设备 |
-
2014
- 2014-01-21 CN CN201410027046.2A patent/CN104425039A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107526689A (zh) * | 2016-06-17 | 2017-12-29 | 希捷科技有限公司 | 读高速缓存管理 |
CN107526689B (zh) * | 2016-06-17 | 2024-01-16 | 希捷科技有限公司 | 读高速缓存管理 |
CN114442911A (zh) * | 2020-11-06 | 2022-05-06 | 戴尔产品有限公司 | 用于固态驱动器的异步输入/输出扫描和聚合的系统和方法 |
CN114442911B (zh) * | 2020-11-06 | 2024-03-08 | 戴尔产品有限公司 | 用于固态驱动器的异步输入/输出扫描和聚合的系统和方法 |
CN117032595A (zh) * | 2023-10-09 | 2023-11-10 | 北京忆恒创源科技股份有限公司 | 顺序流检测方法及存储设备 |
CN117032595B (zh) * | 2023-10-09 | 2024-01-23 | 北京忆恒创源科技股份有限公司 | 顺序流检测方法及存储设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9235346B2 (en) | Dynamic map pre-fetching for improved sequential reads of a solid-state media | |
US9514057B2 (en) | Storage module and method for managing logical-to-physical address mapping | |
US20180173419A1 (en) | Hybrid ssd with delta encoding | |
US10877898B2 (en) | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements | |
US10565124B2 (en) | Memory system and method for controlling nonvolatile memory | |
KR20170087044A (ko) | Os 및 애플리케이션 투명 메모리 압축 기술 | |
US20180089088A1 (en) | Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache | |
KR20220129662A (ko) | 순차적으로 프로그래밍하는 메모리 서브시스템의 순차 판독 최적화 | |
US11422945B2 (en) | Generating, maintaining, or utilizing a compressed logical-to-physical table based on sequential writes | |
US20200301847A1 (en) | Memory system for controlling nonvolatile memory | |
US20220276963A1 (en) | Prefetch buffer of memory sub-system | |
US11681629B2 (en) | Direct cache hit and transfer in a memory sub-system that programs sequentially | |
CN113010098A (zh) | 用于提高存储器系统的输入/输出吞吐量的设备和方法 | |
CN113934666B (zh) | 数据接口桥的预取 | |
US20240143511A1 (en) | Dynamically sized redundant write buffer with sector-based tracking | |
US20240134554A1 (en) | Smart swapping and effective encoding of a double word in a memory sub-system | |
CN104425039A (zh) | 用于改进的固态介质顺序读的动态映射预取 | |
US20190286569A1 (en) | Logical to physical data storage mapping | |
US11599466B2 (en) | Sector-based tracking for a page cache | |
CN112805692A (zh) | 混合式双列直插式存储器模块中的高速缓存操作 | |
CN113126906B (zh) | 用于元数据指示的方法和系统 | |
US20210357326A1 (en) | Bit masking valid sectors for write-back coalescing | |
US10997019B1 (en) | System and method for facilitating high-capacity system memory adaptive to high-error-rate and low-endurance media | |
CN113126899B (zh) | 完全多平面操作启用 | |
CN113380301A (zh) | 统一存储介质的编程方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150318 |
|
WD01 | Invention patent application deemed withdrawn after publication |