CN115079957B - 请求处理方法、装置、控制器、设备及存储介质 - Google Patents

请求处理方法、装置、控制器、设备及存储介质 Download PDF

Info

Publication number
CN115079957B
CN115079957B CN202210852917.9A CN202210852917A CN115079957B CN 115079957 B CN115079957 B CN 115079957B CN 202210852917 A CN202210852917 A CN 202210852917A CN 115079957 B CN115079957 B CN 115079957B
Authority
CN
China
Prior art keywords
page
ssd
memory
precision
storing
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
Application number
CN202210852917.9A
Other languages
English (en)
Other versions
CN115079957A (zh
Inventor
张力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210852917.9A priority Critical patent/CN115079957B/zh
Publication of CN115079957A publication Critical patent/CN115079957A/zh
Application granted granted Critical
Publication of CN115079957B publication Critical patent/CN115079957B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供一种请求处理方法、装置、控制器、设备及存储介质。该方法包括接收IO读写请求,确定IO读写请求中包括的目标LBA对应的页索引,页索引用于查询目标页,目标页用于存储SSD的L2P,L2P包括用于记录部分LBA对应的PBA的第一L2P和用于记录全部LBA对应的PBA的第二L2P,第一L2P存储在SSD的内存中,第二L2P存储在SSD所在主机的内存中,目标页是SSD或主机内存中的页,根据页索引确定目标页的地址,并根据目标页的地址执行与IO读写请求相应的IO读写操作。本申请避免了通过降低索引精度来降低内存的消耗,在需要访问高精度单元时会在SSD内部造成巨大的写放大,影响性能和寿命的问题。

Description

请求处理方法、装置、控制器、设备及存储介质
技术领域
本申请涉及存储技术领域,尤其涉及一种请求处理方法、装置、控制器、设备及存储介质。
背景技术
随着计算机技术的不断发展,固态驱动器(Solid State Drive,SSD)俗称固态硬盘,其应用越来越广泛。
目前,大容量SSD为了减少内部索引表对内存的消耗,通常是支持降低的索引精度(如64K),当上层应用的输入/输出(Input/Output,IO)请求需要访问高精度单元(例如4K)时,会在SSD内部造成巨大的写放大,极大影响性能和寿命。
发明内容
本申请实施例提供一种请求处理方法、装置、控制器、设备及存储介质,用以解决现有技术中通过降低L2P的索引精度来降低内存的消耗,在SSD内部造成巨大的写放大,极大影响性能和寿命的问题。
第一方面,本申请实施例提供一种请求处理方法,包括:
接收IO读写请求,所述IO读写请求中包括目标LBA;
确定所述目标LBA对应的页索引,所述页索引用于查询目标页,所述目标页用于存储SSD的L2P;所述L2P包括第一L2P和第二L2P,所述第一L2P用于记录部分LBA对应的PBA,所述第二L2P用于记录全部LBA对应的PBA,所述第一L2P存储在所述SSD的内存中,所述第二L2P存储在所述SSD所在主机的内存中,所述目标页是所述SSD或所述主机内存中的页;
根据所述页索引确定所述目标页的地址,并根据所述目标页的地址,执行与所述IO读写请求相应的IO读写操作。
第二方面,本申请实施例提供一种请求处理装置,包括:
接收模块,用于接收IO读写请求,所述IO读写请求中包括目标LBA;
确定模块,用于确定所述目标LBA对应的页索引,所述页索引用于查询目标页,所述目标页用于存储所述SSD的L2P;所述L2P包括第一L2P和第二L2P,所述第一L2P用于记录部分LBA对应的PBA,所述第二L2P用于记录全部LBA对应的PBA,所述第一L2P存储在所述SSD的内存中,所述第二L2P存储在所述SSD所在主机的内存中,所述目标页是所述SSD或所述主机内存中的页;
执行模块,用于根据所述页索引确定所述目标页的地址,并根据所述目标页的地址,执行与所述IO读写请求相应的IO读写操作。
第三方面,本申请实施例提供一种SSD的控制器,包括:存储器、处理器;其中,所述存储器存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现如第一方面中任一项所述的方法。
第四方面,本申请实施例提供一种SSD,包括闪存芯片以及第三方面所述的控制器,所述闪存芯片用于存储数据,所述控制器用于对所述闪存芯片进行数据读写控制。
第五方面,本申请实施例提供一种电子设备,包括主机以及第四方面所述的SSD。
第六方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被执行时,实现如第一方面中任一项所述的方法。
本申请实施例还提供一种计算机程序,当所述计算机程序被计算机执行时,用于实现如第一方面任一项所述的方法。
在本申请实施例中,通过页索引来索引用于存储L2P的页,L2P包括第一L2P和第二L2P,第一L2P用于记录部分LBA对应的PBA,第二L2P用于记录全部LBA对应的PBA,第一L2P存储在SSD的内存中,第二L2P存储在主机的内存中,实现了FTL的L2P空间扩展到主机内存,使得SSD内部可以只存储部分表项,进而使得表项个数能够突破SSD硬件资源限制,从而能够在不增加内存规格的前提下支持较高精度的索引精度,无需通过降低索引精度来降低内存消耗,避免了通过降低索引精度来降低内存的消耗,在需要访问高精度单元时,会在SSD内部造成巨大的写放大,极大影响性能和寿命的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的应用场景示意图;
图2为本申请一实施例提供的请求处理方法的流程示意图;
图3为本申请一实施例提供的按照页管理L2P的示意图;
图4为本申请一实施例提供的同一主机下挂载多个SSD的示意图;
图5为本申请一实施例提供的使用页索引查询目标页的示意图;
图6为本申请一实施例提供的将单个表项转换为多个表项的示意图;
图7为本申请一实施例提供的将多个表项转换为单个表项的示意图;
图8为本申请一实施例提供的请求处理装置的结构示意图;
图9为本申请一实施例提供的SSD的控制器的结构示意图;
图10为本申请一实施例提供的SSD的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
为了方便本领域技术人员理解本申请实施例提供的技术方案,下面先对技术方案实现的技术环境进行说明。
图1为本申请实施例提供的请求处理方法的应用场景示意图,如图1所示,该应用场景中可以包括主机11以及挂载在主机11上的SSD12,SSD12可以包括控制器和闪存芯片,控制器可以根据主机11的IO写请求将主机11的数据写入闪存芯片,还可以根据主机的IO读请求从闪存芯片中读取数据并返回给主机11。其中,SSD12可以是实体SSD,也可以是虚拟SSD。在SSD12是实体SSD时,主机11可以是物理主机,例如台式电脑、平板电脑、智能手机等。在SSD12是虚拟SSD时,主机11可以是虚拟主机,例如云服务器等。闪存芯片例如可以是NAND。需要说明的是,挂载在同一主机上的SSD的数量可以为一个或多个,本申请对此不做限定。
对于SSD来说,由于其内部存储数据的闪存芯片的介质特性不支持直接改写,因此是由SSD内部的闪存转换层(Flash Translation Layer,FTL)来实现随机写转顺序写的地址翻译,该翻译机制使用逻辑到物理表(即L2P)来记录逻辑块地址(Logical BlockAddress,LBA)到物理块地址(Physical Block Address,LBA)的映射。其中,L2P也可以称为FTL映射表,L2P是以LBA为索引,PBA为内容的线性表。SSD的L2P的索引精度可以小于或等于SSD能够支持的最高寻址精度(如4K),索引精度可以决定实际的寻址精度,在索引精度为32K时虽然最高寻址精度为4K但是实际的寻址精度还是32K。
传统SSD支持的SSD的索引精度是4K,则L2P的表项的个数是:盘容量/4K,例如一个4T的SSD盘,其内部L2P的表项个数是:4×1024×1024×1024/4=1073741824。在最简单的情况下,每个表项仅记录一个32bit的PBA,占用4B内存,则4T空间共需1073741824×4B=4G内存,简单换算就是L2P需要占用存储空间的1/1000的内存。如果盘空间大于16T,则需要64bit的表项来寻址,则L2P需要占用存储空间的2/1000的内存。
随着信息的爆炸式增长,需要的存储、访问的数据量也不断增长,但在介质技术本身没有发生巨大变化的前提下,盘厂商总是通过增加介质密度的方式来增加单盘的存储容量,目前数据中心级NVMe SSD的容量已经从1T(三层单元(Trinary-Level Cell,TLC))增加到了32T(四层单元(QLC,Quad-Level Cell))。32T盘如果仍然提供4K精度的索引,需要64G内存,会显著拉高盘的成本。
目前,一种常用的降成本手段是通过降低L2P的索引精度来降低内存的消耗,通常是将索引精度降低为64K,相应的需要按照64K的粒度来进行寻址,即实际寻址精度也为64K,在这种情况下,如果部署在主机上的应用下发小于64K的IO写请求(例如4K大小的IO写请求),则需要:1)先通过L2P寻址到该4K单元所在的64K单元;2)将该64K单元中存储的64K数据读出到缓存;3)将4K新写的数据覆盖到64K缓存数据上,形成修改后的一个64K缓存;4)将修改后的64K缓存写到闪存芯片上。可以看出,一个4K写被放大成了一个64K的读+一个64K的写,相对原始的4K写,写入数据量增大了15倍,对SSD的性能和寿命都造成了极大影响。
为了解决通过降低L2P的索引精度来降低内存的消耗,在SSD内部造成巨大的写放大,极大影响性能和寿命的问题,在本申请实施例中,通过页索引来查询用于存储L2P的页,L2P包括第一L2P和第二L2P,第一L2P用于记录部分LBA对应的PBA,第二L2P用于记录全部LBA对应的PBA,第一L2P存储在SSD的内存中,第二L2P存储在主机的内存中,实现了FTL的L2P空间扩展到主机内存,使得SSD内部可以只存储部分表项,进而使得表项个数能够突破SSD硬件资源限制,从而能够在不增加内存规格的前提下支持较高精度的索引精度,无需通过降低索引精度来降低内存消耗,避免了通过降低索引精度来降低内存的消耗,在需要访问高精度单元时,会在SSD内部造成巨大的写放大,极大影响性能和寿命的问题。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突情况下,下述的实施例及实施例中的特征可以相互组合。
图2为本申请一实施例提供的请求处理方法的流程示意图,本实施例可以应用于图1中的SSD12,具体可以应用于SSD12的控制器。如图2所示,本实施例的方法可以包括:
步骤21,接收IO读写请求,IO读写请求中包括目标LBA;
步骤22,确定目标LBA对应的页索引,页索引用于查询目标页,所述目标页用于存储SSD的L2P;L2P包括第一L2P和第二L2P,第一L2P用于记录部分LBA对应的PBA,第二L2P用于记录全部LBA对应的PBA,第一L2P存储在SSD的内存中,第二L2P存储在SSD所在主机的内存中,目标页是SSD或主机内存中的页;
步骤23,根据页索引确定目标页的地址,并根据目标页的地址,执行与IO读写请求相应的IO读写操作。
在本申请实施例中,SSD的控制器可以接收主机下发的IO读写请求,接收到的IO读写请求具体可以为IO读请求或IO写请求,IO读请求可以用于请求从闪存芯片中读取数据,IO写请求可以用于请求向闪存芯片中写入数据,IO读请求和IO写请求中都可以包括offset,offset用于表示逻辑块地址,即为本申请中的目标LBA。
在接收到IO读写请求之后,FTL需要根据目标LBA从SSD的L2P中找到对应的PBA。在本申请实施例中,SSD的L2P可以包括第一L2P和第二L2P,第一L2P用于记录部分LBA对应的PBA,第二L2P用于记录全部LBA对应的PBA。其中,第一L2P存储在SSD的内存中,第二L2P存储在SSD所在主机的内存中。
由于页(page)是操作系统的内存管理的基本单元,因此可以按照页对L2P进行管理。假设L2P自身的空间按4K的page来管理,索引项为4字节(4B,32位)的PBA,则每个page可以容纳4K/4 = 1024个表项(entry),进一步的,假设L2P的索引精度为4K,则每个page可以对应1024×4K = 4M的存储空间,如图3所示,L2P可以存储在多个page中,在单个page中,可以依次存储多个LBA对应的PBA,示例性的,可以按照LBA从小到大的顺序,依次存储多个LBA分别对应的PBA,如果最高寻址精度也为4K,则对于用于存储LBA=N到LBA=N+K对应的PBA的某个page,图3中从左至右第一个PBA可以为LBA=N对应的PBA,第二个PBA可以为LBA=N+1对应的PBA,第三个PBA可以为LBA=N+2对应的PBA,……,最后一个PBA可以为LBA=N+K对应的PBA。
在L2P自身的空间按4K的page来管理的情况下,假设SSD内部第一L2P所占空间为1G,则可以容纳1G/4K=262144个page,每个page可以对应1024×4K = 4M的存储空间,第一L2P可以对应1T存储空间。假设主机中第二L2P所占空间为16G,则可以容纳16G/4K=4194304个page,每个page可以对应1024×4K = 4M的存储空间,第二L2P可以对应16T存储空间。可以看出,采用本申请实施例提供的方式,如果盘空间为16T,则只需1G的SSD内存就可以实现4K的索引精度,与相关技术中需要16G的SSD内存才可以实现4K索引精度相比,极大了降低了L2P对于SSD内存的消耗。
在实际应用中,可以在主机内存中分配区域作为SSD的扩展内存区(extendedhost memory,EHM),所分配的区域可以用于存放全量的L2P(即第二L2P,对16T容量盘来说就是16G)。主机内存中分配的作为SSD的扩展内存区可以是连续的一个区域,也可以是不连续的多个区域。
SSD具体可以是支持命令配置的SSD,示例性的,SSD具体可以是NVMe SSD,可以通过将NVMe admin cmd扩展一个新的命令字,实现将主机端的扩展内存地址和长度配置给SSD。需要说明的是,NVMe SSD访问主机内存不需要特殊技术,基于标准的PCIe DMA操作就可以实现,当前NVMe协议中的队列、IO的buffer都是主机内存,例如NVMe协议可以通过create_sq命令告诉NVMe盘队列的起始地址和长度。
一个实施例中,SSD内存可以作为SSD的L2P的cache区,用于存放最近访问的表项,作为一级L2P(L1 L2P),即第一L2P可以作为一级L2P,相应的,第二L2P可以作为二级L2P(L2L2P),L1 L2P空间满后,可以基于缓存淘汰算法(例如,最近最少使用(Least RecentlyUsed,LRU))换出部分空间到L2 L2P。
需要说明的是,挂载在同一主机下的不同SSD的L2P的索引精度可以不同,也可以相同。以主机下挂载有两个SSD且两个SSD的L2P的索引精度不同为例,如图4所示,主机下可以挂载有盘空间均为16T的NVMe SSD1和NVMe SSD2,其中,NVMe SSD1的索引精度为4K,SSD1内部一级L2P所占空间为1G,主机内部相应的二级L2P所占空间为16G,NVMe SSD2的索引精度可以为64K,SSD2内部L2P索引表所占空间为1G。可以看出,对于盘容量为16T的NVMe SSD,采用本申请实施例提供的方法只需1G的SSD内存就可以提供4K的索引精度,而相关技术中使用1G的SSD内存只能提供64K的索引精度,两者相比,本申请提供的方法可以极大的降低L2P对于SSD内存的消耗。
由于第一L2P只用于记录部分LBA对应的PBA,LBA本身无法表征其对应PBA是存储在哪个页中,因此可以通过页索引(page_index)来指向页。因此,在接收到IO读写请求之后,可以先确定目标LBA对应的页索引,该页索引用于查询目标页,目标页用于存储SSD的L2P,目标页具体是SSD内存中的页或者是主机内存中的页,应理解,目标页用于存储目标LBA对应的PBA。
示例性的,可以使用一个记录全量page地址的数组L2P page index来记录page使用的是SSD内部内存还是EHM。例如,数组L2P page index中的元素0可以用于记录页索引0指向的page的地址,页索引0指向的page使用的可能是SSD内部内存或者可能是EHM;元素1可以用于记录页索引1指向的page的地址,页索引1指向的page使用的可能是SSD内部内存或者可能是EHM;元素2可以用于记录页索引2指向的page的地址,页索引2指向的page使用的可能是SSD内部内存或者可能是EHM;……。其中,数组L2P page index可以存储在SSD内存中。
一个实施例中,多个页索引的顺序可以与LBA的顺序一致,从而有利于减少存储空间的占用,例如多个页索引可以为0、1、2、3、4、……,页索引0对应的LBA可以为LBA=0到LBA=X-1,页索引1对应的LBA可以为LBA=X到LBA=2X-1,页索引2对应的LBA可以为LBA=2X到LBA=3X-1,页索引3对应的LBA可以为LBA=3X到LBA=4X-1,……。在此情况下,确定目标LBA对应的页索引,具体可以包括:根据目标LBA以及每页可容纳表项数进行计算,得到目标LBA对应的页索引。
例如,假设索引精度且最高寻址精度均为4K,每个page能够容纳1024个表项,SSD内存中L1 L2P占用空间1G,能够容纳1G/4K=262144个page,主机内存中L2 L2P占用空间16G,能够容纳16G/4K=4194304个page,则如图5所示,L2P page index的元素0可以指向主机内存中用于存储第二L2P的page(可以记为L2P L2 page)中的page0,L2P page index的元素1可以指向SSD内存中用于存储第一L2P的page(可以记为L2P L1 page)中的page0,L2Ppage index的元素2可以指向L2P L2 page中的page2,L2P page index的元素3可以指向L2P L2 page中的page3,L2P page index的元素4可以指向L2P L1 page中的page2,L2Ppage index的元素5可以指向L2P L1 page中的page6,L2P page index的元素6可以指向L2P L2 page中的page6,L2P page index的元素7可以指向L2P L2 page中的page7,……,L2P page index的元素4194303可以指向L2P L2 page中的page4194303。
在图5的基础上,假设目标LBA=2000,则可以确定对应的页索引等于2000/1024=1;假设目标LBA=3000,则可以确定对应的页索引等于2000/1024=2。
需要说明的是,图5中主机内存中用于存储第一L2P的多个page的顺序与LBA的顺序一致仅为举例。
本申请实施例中,在确定目标LBA对应的页索引之后,可以根据目标LBA对应的页索引,确定目标页的地址,例如,假设目标LBA对应的页索引为10,则可以将数组L2P pageindex中元素10所存储的page的地址,作为目标页的地址。如图5所示,在目标LBA=2000时,对应的页索引是1,页索引1所指向的page是L2P L1 page中的page0,其已经加载到SSD内存;在目标LBA=3000时,对应的页索引是2,页索引2所指向的page是L2P L2 page中的page2,其还没有加载到SSD内存,是主机内存中的页。
本申请实施例中,在确定目标页的地址之后,可以根据目标页的地址,执行与IO读写请求相应的IO读写操作。
在目标页是SSD内存中的页时,根据目标页的地址,执行与IO读写请求相应的IO读写操作,具体可以包括:通过访问目标页,执行与IO读写请求响应的IO读写操作。其中,通过访问目标页,执行与IO读写请求响应的IO读写操作,具体可以包括:在IO读写请求为IO读请求时,在目标页中查找与目标LBA对应的PBA,并根据该PBA读取数据;在IO读写请求为IO写请求时,为目标LBA分配对应的PBA,根据该PBA写入数据,并将目标LBA到该PBA的映射关系增加到目标页。
在目标页是主机内存中的页时,如果第一L2P是作为二级L2P,则根据目标页的地址,执行与IO读写请求相应的IO读写操作,具体可以包括:从SSD内存中用于存储第一L2P的多个页中,分配空闲的第一页;根据目标页的地址,将目标页的内容读取到第一页;将页索引对应的地址更新为第一页的地址,并将第一页设置为使用状态;通过访问第一页,执行与IO读写请求相应的IO读写操作。其中,第一页可以是SSD内存中用于存储第一L2P的多个页中的任意一个空闲的页。从而,可以实现先将主机内存中目标页中存储的表项搬移到SSD内存中的空页上,再通过访问SSD内存中的页执行与IO读写请求相应的IO读写操作。
在实际应用中,SSD可以通过直接存储器访问(Direct Memory Access,DMA)的方式访问主机内存中的数据,其中,DMA是IO设备访问主机内存中数据的方式,不需要CPU干预。需要说明的是,通过访问第一页执行与IO读写请求相应的IO读写操作的具体方式,与前述通过访问目标页执行与IO读写请求相应的IO读写操作的具体方式类似,在此不再赘述。
为了使得SSD内存中能够存在用于接受数据的空页,可以先将SSD内存中不为空闲的页中存储的表项搬移到主机内存中对应的页上。基于此,本申请实施例提供的方法还可以包括:从SSD内存中用于存储第一L2P的多个页中,选择不为空闲的第二页,并将第二页的内容写到主机的内存中对应的页上;将页索引对应的地址由第二页的地址更新为该对应的页的地址,并将第二页设置为空闲。
其中,例如可以选择最近最少访问的不为空闲的一个页作为第二页,当然,在其他实施例中也可以采用其他方式选择第二页,本申请对此不做限定。例如,可以在需要将主机内存中的页存储的表项搬移到SSD内存,但是SSD内存中用于存储表项的多个页均不为空闲时,触发将SSD内存中存储的表项搬移到主机内存,或者还可以定时触发将SSD内存中的表项搬移到主机内存,当然,在其他实施例中也可以通过其他条件触发搬移,本申请对此不做限定。
需要说明的是,本申请实施例中,SSD的L2P的索引精度可以是固定,例如可以固定为4K,或者,SSD的L2P的索引精度也可以是可变的,SSD的L2P的索引精度可以降低,和/或,SSD的L2P的索引精度可以升高。
示例性的,主机中可以设置有专用于对SSD的L2P的索引精度进行配置的驱动,例如可以记为多精度SSD驱动,多精度SSD驱动可以通过与SSD协商的方式来为SSD分配EHM,例如多精度SSD驱动可以确定SSD支持的索引精度,并将SSD支持的索引精度返回给配置人员,配置人员可以根据SSD支持的索引精度,使用配置工具对多精度SSD驱动进行配置,例如配置人员可以配置期望的索引精度,多精度SSD驱动可以根据配置的索引精度计算出需要的内存大小,并分配相应大小的内存作为SSD的EHM,多精度SSD驱动可以通过扩展的NVMeadmin cmd将SSD的EHM配置给SSD。
可选的,SSD支持的索引精度可以为两个,一个是高索引精度(例如4K),一个是低索引精度(例如64K);或者可选的,SSD支持的索引精度可以大于两个,例如可以为三个,一个是高索引精度(例如4K),一个是中索引精度(例如16K),一个是低索引精度(例如64K)。示例性的,对于SSD支持的最低索引精度,可以采用SSD内存用于存储全部LBA对应PBA的方式;对于SSD支持的非最低索引精度,可以采用主机内存用于存储全部LBA对应PBA,且SSD内存用于存储部分LBA对应PBA的方式。
一种情况下,SSD的L2P的索引精度可以由不需要主机内存存储L2P项的当前索引精度,升高至需要主机内存存储L2P项的第一索引精度,例如,假设SSD支持的索引精度为4K和64K,则当前索引精度可以为64K,第一索引精度可以为4K,又例如,假设SSD支持的索引精度为4K、16K和64K,则当前索引精度可以为64K,第一索引精度可以为4K或16K。在此情况下,一个实施例中,本实施例提供的方法还可以包括如下步骤A1至步骤A4。
步骤A1,在SSD内存用于存储全部LBA对应PBA的情况下,接收主机下发的第一精度配置,第一精度配置用于配置SSD的L2P的索引精度由当前索引精度升高至第一索引精度;
步骤A2,将SSD内存中当前索引精度的单个表项转换为第一索引精度的多个表项,以将用于存储当前索引精度的表项的单个页,转换为用于存储第一索引精度的表项的多个页;
步骤A3,将用于存储第一索引精度的表项的页的内容,写到主机内存中用于存储第一索引精度的表项的多个页中对应的页上,以得到主机内存中用于存储全部LBA对应PBA的第一索引精度的第二L2P;
步骤A4,将多个页索引对应的地址设置为主机内存中用于存储第一索引精度的表项的多个页的地址,并将SSD内存中用于存储表项的全部页设置为空闲。
其中,由于SSD内存用于存储全部LBA对应PBA,因此在接收到第一精度配置之后,通过执行步骤A2可以全部的表项进行转换,进一步的通过执行步骤A3可以将转换得到的用于存储第一索引精度的表项的页的内容写到主机内存中对应的页上,从而可以得到主机内存中用于存储全部LBA对应PBA的第一索引精度的第二L2P。另外,通过A4中将多个页索引对应的地址设置为主机内存中用于存储第一索引精度的表项的多个页的地址,使得页索引可以指向SSD所在主机内存中的页,通过A4中将SSD内存中用于存储表项的全部页设置为空闲,使得后续可以将目标页的内容搬移到SSD内存中。
假设当前索引精度为64K,第一索引精度和最高寻址精度均为4K,且每页能够容纳1024个表项,则如图6所示,用于存储LBA=0至LBA=16368对应PBA的一个页(即页60)可以转换为16个页(即页61至页616)。示例性的,参考图6,可以按照LBA从小到大的顺序进行转换:
首先,可以将当前索引精度的LBA=0对应PBA的一个表项,转换为第一索引精度的LBA=0,LBA=1,……,LBA=15分别对应PBA的16个表项,并从页61的起始地址开始,将该16个表项按照LBA从小到大的顺序进行存储;
然后,可以将当前索引精度的LBA=16对应PBA的一个表项,转换为第一索引精度的LBA=16,LBA=17,……LBA=31分别对应PBA的16个表项,并从页61用于存储LBA=15对应PBA的地址的下一地址开始,将该16个表项按照LBA从小到大的顺序进行存储;
……
之后,可以将当前索引精度的LBA=1024对应PBA的一个表项,转换为第一索引精度的LBA=1024,LBA=1025,……,LBA=1039分别对应PBA的16个表项,并从页62的起始地址开始,将该16个表项按照LBA从小到大的顺序进行存储;
然后,可以将当前索引精度的LBA=1040对应PBA的一个表项,转换为第一索引精度的LBA=1040,LBA=1061,……,LBA=1055分别对应PBA的16个表项,并从页62用于存储LBA=1039对应PBA的地址的下一地址开始,将该16个表项按照LBA从小到大的顺序进行存储;
……
之后,可以将当前索引精度的LBA=2048对应PBA的一个表项,转换为第一索引精度的LBA=2048,LBA=2049,……,LBA=2063分别对应PBA的16个表项,并从页63的起始地址开始,将该16个表项按照LBA从小到大的顺序进行存储;
然后,可以将当前索引精度的LBA=2064对应PBA的一个表项,转换为第一索引精度的LBA=2064,LBA=2065,……,LBA=2079分别对应PBA的16个表项,并从页63用于存储LBA=2063对应PBA的地址的下一地址开始,将该16个表项按照LBA从小到大的顺序进行存储;
……
之后,可以将当前索引精度的LBA=15360对应PBA的一个表项,转换为第一索引精度的LBA=15360,LBA=15361,……,LBA=15375分别对应PBA的16个表项,并从页616的起始地址开始,将该16个表项按照LBA从小到大的顺序进行存储;
……
之后,可以将当前索引精度的LBA=16368对应PBA的一个表项,转换为第一索引精度的LBA=16368,LBA=16369,……,LBA=16383分别对应PBA的16个表项,并从页616用于存储LBA=16367对应PBA的地址的下一地址开始,将该16个表项按照LBA从小到大的顺序进行存储。
另一种情况下,SSD的L2P的索引精度可以由需要主机内存存储L2P项的当前索引精度,升高至需要主机内存存储L2P项的第二索引精度,例如假设SSD支持的索引精度为4K、16K和64K,则当前索引精度可以为4K,第二索引精度可以为16K。在此情况下,另一个实施例中,本实施例提供的方法还可以包括如下步骤B1至步骤B5。
步骤B1,在SSD内存用于存储部分LBA对应PBA的情况下,接收主机下发的第二精度配置,第二精度配置用于配置SSD的L2P的索引精度由当前索引精度升高至第二索引精度;
步骤B2,将SSD内存中用于存储表项的页的内容,写到主机内存中用于存储当前索引精度的表项的多个页中对应的页上,并将SSD内存中用于存储表项的全部页设置为空闲;
步骤B3,遍历读取主机内存中当前索引精度的表项,并将当前索引精度的单个表项转换为第二索引精度的多个表项,以将用于存储当前索引精度的表项的单个页,转换为用于存储第二索引精度的表项的多个页;
步骤B4,将用于存储第二索引精度的表项的页的内容,写到主机内存中用于存储第二索引精度的表项的多个页中对应的页上,以得到主机内存中用于存储全部LBA对应PBA的所述第二索引精度的第二L2P;
步骤B5,将多个页索引对应的地址设置为主机内存中用于存储第二索引精度的表项的多个页的地址。
其中,由于SSD内存用于存储部分LBA对应的PBA,为了能够实现全部的表项进行转换,因此在接收到第二精度配置之后,可以先通过执行步骤B2将记录在第一L2P中的当前索引精度的表项更新到第二L2P中,再通过执行步骤B3从主机内存中读取当前索引精度的表项进行转换,进一步的通过执行步骤B4可以将转换得到的用于存储第二索引精度的表项的页的内容写到主机内存中对应的页上,从而可以得到主机内存中用于存储全部LBA对应PBA的第二索引精度的第二L2P。
需要说明的是,主机内存中用于存储当前索引精度的表项的页,与主机内存中用于存储第二索引精度的表项的多个页可以是相同的页,也可以是不同的页。
又一种情况下,SSD的L2P的索引精度可以由需要主机内存存储L2P项的当前索引精度,降低至不需要主机内存存储L2P的第三索引精度,例如,假设SSD支持的索引精度为4K和64K,则当前索引精度可以为4K,第三索引精度可以为64K,又例如,假设SSD支持的索引精度为4K、16K和64K,则当前索引精度可以为4K或16K,第三索引精度可以为64。在此情况下,又一个实施例中,本实施例提供的方法还可以包括如下步骤C1至步骤C4。
步骤C1,在SSD内存用于存储部分LBA对应PBA的情况下,接收主机下发的第三精度配置,第三精度配置用于配置SSD的L2P的索引精度由当前索引精度降低至第三索引精度;
步骤C2,将SSD内存中用于存储表项的页的内容,写到主机内存中用于存储当前索引精度的表项的多个页中对应的页上,并将SSD内存中用于存储表项的全部页设置为空闲;
步骤C3,根据主机内存中当前索引精度的表项进行碎片整理,以使从第一个LBA开始的每个以第三索引精度为单位的连续LBA对应的PBA均连续;
步骤C4,遍历读取主机内存中当前索引精度的表项,并将连续的当前索引精度的多个表项转换为第三索引精度的单个表项,以将用于存储当前索引精度的表项的多个页,转换为用于存储第三索引精度的表项的单个页,得到SSD内存中用于存储全部LBA对应PBA的第三索引精度的L2P。
其中,在得到SSD内存中用于存储全部LBA对应PBA的第三索引精度的L2P之后,还可以和主机协商释放ETH。
由于SSD的L2P的索引精度为某个精度时,SSD实际的寻址精度同样也为该精度,因此可以确保第一个LBA开始的每个以当前索引精度为单位的连续LBA对应的PBA连续,而第三索引精度需要第一个LBA开始的每个以第三索引精度为单位的连续LBA对应的PBA连续,由于第三索引精度大于当前索引精度,在满足第一个LBA开始的每个以当前索引精度为单位的连续LBA对应的PBA连续的条件下,通常并不满足在第一个LBA开始的每个以第三索引精度为单位的连续LBA对应的PBA均连续的条件,因此在通过执行步骤C2将记录在第一L2P中的当前索引精度的表项更新到第二L2P中之后,可以先进行物理块的碎片整理。
以当前索引精度为4K,第三索引精度为64K为例,可以读取待转换的16个4K的数据块,构造一个新的64K的写IO下发,FTL会为该IO分配64K的连续PBA,其中,对于某些有空洞的64K块范围(即在一个64K范围内,不是所有4K块全部都有数据),可以将空洞以填0方式补齐。
假设当前索引精度为8K,第三索引精度为64K,则可以遍历读取主机内存中当前索引精度的表项,将从第一个LBA(即LBA=0)开始的连续的8个8K表项转换为一个64K表项,从而可以将原8个page合并到一个page中。进一步假设最高寻址精度为4K,且每页能够容纳1024个表项,则如图7所示,用于存储LBA=0至LBA=16382的8个页(即页71至页78)可以转换为1个页(即页70)。示例性的,参考图7,可以按照LBA从小到大的顺序进行转换:
首先,可以将页71中当前索引精度的LBA=0,LBA=2,……,LBA=14分别对应PBA的8个表项,转换为第三索引精度的LBA=0对应PBA的一个表项,并将该表项存储在页50的起始地址;
然后,可以将页71中当前索引精度的LBA=16,LBA=18,……LBA=30分别对应PBA的8个表项,转换为第三索引精度的LBA=16对应PBA的一个表项,并将该表项存储在页50用于存储LBA=0对应PBA的地址的下一地址;
……
之后,可以将页72中当前索引精度的LBA=2048,LBA=2050,……,LBA=2062分别对应PBA的8个表项,转换为第三索引精度的LBA=2048对应PBA的一个表项,并将该表项存储在页50用于存储LBA=2032对应PBA的地址的下一地址;
然后,可以将页72中当前索引精度LBA=2064,LBA=2066,……,LBA=2078分别对应PBA的8个表项,转换为第三索引精度的LBA=2064对应PBA的一个表项,并将该表项存储在页50用于存储LBA=2048对应PBA的地址的下一地址;
……
之后,可以将页73中当前索引精度的LBA=4096,LBA=4098,……,LBA=4110分别对应PBA的8个表项,转换为第三索引精度的LBA=4096对应PBA的一个表项,并将该表项存储在页50用于存储LBA=4080对应PBA的地址的下一地址;
然后,可以将页73中当前索引精度的LBA=4112,LBA=4114,……,LBA=4126分别对应PBA的8个表项,转换为第三索引精度的LBA=4112对应PBA的一个表项,并将该表项存储在页50用于存储LBA=4096对应PBA的地址的下一地址;
……
之后,可以将页78中当前索引精度的LBA=14336,LBA=14338,……,LBA=14350分别对应PBA的8个表项,转换为第三索引精度的LBA=14336对应PBA的一个表项,并将该表项存储在页50用于存储LBA=14320对应PBA的地址的下一地址;
……
之后,可以将页78中当前索引精度的LBA=16368,LBA=16370,……,LBA=16382分别对应PBA的8个表项,转换为第三索引精度的LBA=16368对应PBA的一个表项,并将该表项存储在页50用于存储LBA=16372对应PBA的地址的下一地址。
又一种情况下,SSD的L2P的索引精度可以由需要主机内存存储L2P项的当前索引精度,降低至需要主机内存存储L2P的第四索引精度,例如,假设SSD支持的索引精度为4K、16K和64K,则当前索引精度可以为4K,第四索引精度可以为16K。在此情况下,又一个实施例中,本实施例提供的方法还可以包括如下步骤D1至步骤D6。
步骤D1,在SSD内存用于存储部分LBA对应PBA的情况下,接收主机下发的第四精度配置,第四精度配置用于配置SSD的L2P的索引精度由当前索引精度降低至第四索引精度;
步骤D2,将SSD内存中用于存储表项的页的内容,写到主机内存中用于存储当前索引精度的表项的多个页中对应的页上,并将SSD内存中用于存储表项的全部页设置为空闲;
步骤D3,根据主机内存中当前索引精度的表项进行碎片整理,以使从第一个LBA开始的每个以第四索引精度为单位的连续LBA对应的PBA均连续;
步骤D4,遍历读取主机内存中当前索引精度的表项,并将连续的当前索引精度的多个表项转换为第四索引精度的单个表项,以将用于存储当前索引精度的表项的多个页,转换为用于存储第四索引精度的表项的单个页;
步骤D5,将用于存储第四索引精度的表项的页的内容,写到主机内存中用于存储第四索引精度的表项的多个页中对应的页上,以得到主机内存中用于存储全部LBA对应PBA的第四索引精度的第二L2P;
步骤D6,将多个页索引对应的地址设置为主机内存中用于存储第四索引精度的表项的多个页的地址。
需要说明的是,主机内存中用于存储第四索引精度的表项的页,与用于存储当前索引精度的表项的页可以是相同的页,也可以是不同的页。
本实施例提供的请求处理方法,通过接收IO读写请求,IO读写请求中包括目标LBA,确定目标LBA对应的页索引,页索引用于查询目标页,目标页存储SSD的L2P;L2P包括用于记录部分LBA对应PBA的第一L2P和用于记录全部LBA对应PBA的第二L2P,第一L2P存储在SSD的内存中,第二L2P存储在SSD所在主机的内存中,目标页是SSD或主机内存中的页,根据页索引确定目标页的地址,并根据目标页的地址执行与IO读写请求相应的IO读写操作,实现了FTL的L2P空间扩展到主机内存,使得SSD内部可以只存储部分表项,进而使得表项个数能够突破SSD硬件资源限制,从而能够在不增加内存规格的前提下支持较高精度的索引精度,无需通过降低索引精度来降低内存消耗,避免了通过降低索引精度来降低内存的消耗,在需要访问高精度单元时,会在SSD内部造成巨大的写放大,极大影响性能和寿命的问题。
图8为本申请一实施例提供的请求处理装置的结构示意图;参考附图8所示,本实施例提供了一种请求处理装置,该装置可以执行上述实施例提供的请求处理方法,具体的,该装置可以包括:
接收模块81,用于接收IO读写请求,所述IO读写请求中包括目标LBA;
确定模块82,用于确定所述目标LBA对应的页索引,所述页索引用于查询目标页,所述目标页用于存储所述SSD的L2P;所述L2P包括第一L2P和第二L2P,所述第一L2P用于记录部分LBA对应的PBA,所述第二L2P用于记录全部LBA对应的PBA,所述第一L2P存储在所述SSD的内存中,所述第二L2P存储在所述SSD所在主机的内存中,所述目标页是所述SSD或所述主机内存中的页;
执行模块83,用于根据所述页索引确定所述目标页的地址,并根据所述目标页的地址,执行与所述IO读写请求相应的IO读写操作。
一种可能的实现方式中,所述执行模块83用于根据所述目标页的地址,执行与所述IO读写请求相应的IO读写操作,包括:在所述目标页是所述SSD内存中的页时,通过访问所述目标页,执行与所述IO读写请求响应的IO读写操作。
一种可能的实现方式中,所述执行模块83用于根据所述目标页的地址,执行与所述IO读写请求相应的IO读写操作,还包括:在所述目标页是所述主机内存中的页时,从所述SSD内存中用于存储所述第一L2P的多个页中,分配空闲的第一页;根据所述目标页的地址,将所述目标页的内容读取到所述第一页;将所述页索引对应的地址更新为所述第一页的地址,并将所述第一页设置为使用状态;通过访问所述第一页,执行与所述IO读写请求相应的IO读写操作。
一种可能的实现方式中,所述执行模块83还用于:从所述SSD内存中用于存储所述第一L2P的多个页中,选择不为空闲的第二页,并将所述第二页的内容写到所述主机的内存中对应的页上;将页索引对应的地址由所述第二页的地址更新为所述对应的页的地址,并将所述第二页设置为空闲。
一种可能的实现方式中,所述执行模块83通过访问某个页,执行与所述IO读写请求相应的IO读写操作,包括:在所述IO读写请求为IO读请求时,在所述某个页中查找与所述目标LBA对应的PBA,并根据所述PBA读取数据;在所述IO读写请求为IO写请求时,为所述目标LBA分配对应的PBA,根据所述PBA写入数据,并将所述目标LBA到所述PBA的映射关系增加到所述某个页。
一种可能的实现方式中,所述装置还包括第一升精度模块,所述第一升精度模块用于:
在所述SSD内存用于存储全部LBA对应PBA的情况下,接收所述主机下发的第一精度配置,所述第一精度配置用于配置所述SSD的L2P的索引精度由当前索引精度升高至第一索引精度;
将所述SSD内存中所述当前索引精度的单个表项转换为所述第一索引精度的多个表项,以将用于存储当前索引精度的表项的单个页,转换为用于存储所述第一索引精度的表项的多个页;
将用于存储所述第一索引精度的表项的页的内容,写到所述主机内存中用于存储所述第一索引精度的表项的多个页中对应的页上,以得到所述主机内存中用于存储全部LBA对应PBA的所述第一索引精度的第二L2P;
将多个页索引对应的地址设置为所述主机内存中用于存储所述第一索引精度的表项的多个页的地址,并将所述SSD内存中用于存储表项的全部页设置为空闲。
一种可能的实现方式中,所述装置还包括第二升精度模块,所述第二升精度模块用于:
在所述SSD内存用于存储部分LBA对应PBA的情况下,接收所述主机下发的第二精度配置,所述第二精度配置用于配置所述SSD的L2P的索引精度由当前索引精度升高至第二索引精度;
将所述SSD内存中用于存储表项的页的内容,写到所述主机内存中用于存储所述当前索引精度的表项的多个页中对应的页上,并将所述SSD内存中用于存储表项的全部页设置为空闲;
遍历读取所述主机内存中所述当前索引精度的表项,并将所述当前索引精度的单个表项转换为所述第二索引精度的多个表项,以将用于存储所述当前索引精度的表项的单个页,转换为用于存储所述第二索引精度的表项的多个页;
将用于存储所述第二索引精度的表项的页的内容,写到所述主机内存中用于存储所述第二索引精度的表项的多个页中对应的页上,以得到所述主机内存中用于存储全部LBA对应PBA的所述第二索引精度的第二L2P;
将多个页索引对应的地址设置为所述主机内存中用于存储所述第二索引精度的表项的多个页的地址。
一种可能的实现方式中,所述装置还包括第一降精度模块,所述第一降精度模块用于:
在所述SSD内存用于存储部分LBA对应PBA的情况下,接收所述主机下发的第三精度配置,所述第三精度配置用于配置所述SSD的L2P的索引精度由当前索引精度降低至第三索引精度;
将所述SSD内存中用于存储表项的页的内容,写到所述主机内存中用于存储所述当前索引精度的表项的多个页中对应的页上,并将所述SSD内存中用于存储表项的全部页设置为空闲;
根据所述主机内存中所述当前索引精度的表项进行碎片整理,以使从第一个LBA开始的每个以所述第三索引精度为单位的连续LBA对应的PBA均连续;
遍历读取所述主机内存中所述当前索引精度的表项,并将连续的所述当前索引精度的多个表项转换为所述第三索引精度的单个表项,以将用于存储所述当前索引精度的表项的多个页,转换为用于存储所述第三索引精度的表项的单个页,得到所述SSD内存中用于存储全部LBA对应PBA的所述第三索引精度的L2P。
一种可能的实现方式中,所述装置还包括第二降精度模块,所述第二降精度模块用于:
在所述SSD内存用于存储部分LBA对应PBA的情况下,接收所述主机下发的第四精度配置,所述第四精度配置用于配置所述SSD的L2P的索引精度由当前索引精度降低至第四索引精度;
将所述SSD内存中用于存储表项的页的内容,写到所述主机内存中用于存储所述当前索引精度的表项的多个页中对应的页上,并将所述SSD内存中用于存储表项的全部页设置为空闲;
根据所述主机内存中所述当前索引精度的表项进行碎片整理,以使从第一个LBA开始的每个以所述第四索引精度为单位的连续LBA对应的PBA均连续;
遍历读取所述主机内存中所述当前索引精度的表项,并将连续的所述当前索引精度的多个表项转换为所述第四索引精度的单个表项,以将用于存储所述当前索引精度的表项的多个页,转换为用于存储所述第四索引精度的表项的单个页;
将用于存储所述第四索引精度的表项的页的内容,写到所述主机内存中用于存储所述第四索引精度的表项的多个页中对应的页上,以得到所述主机内存中用于存储全部LBA对应PBA的所述第四索引精度的第二L2P;
将多个页索引对应的地址设置为所述主机内存中用于存储所述第四索引精度的表项的多个页的地址。
图8所示装置可以执行图2所示实施例提供的方法,本实施例未详细描述的部分,可参考对图2所示实施例的相关说明。该技术方案的执行过程和技术效果参见图2所示实施例中的描述,在此不再赘述。
在一个可能的实现中,图8所示装置的结构可实现为一SSD的控制器。如图9所示,该控制器可以包括:处理器91和存储器92。其中,存储器92存储支持控制器执行上述图2所示实施例所提供方法的程序,处理器91被配置为用于执行存储器92中存储的程序。
程序包括一条或多条计算机指令,其中,一条或多条计算机指令被处理器91执行时能够实现如下步骤:
接收IO读写请求,所述IO读写请求中包括目标LBA;
确定所述目标LBA对应的页索引,所述页索引用于查询目标页,所述目标页用于存储所述SSD的L2P;所述L2P包括第一L2P和第二L2P,所述第一L2P用于记录部分LBA对应的PBA,所述第二L2P用于记录全部LBA对应的PBA,所述第一L2P存储在所述SSD的内存中,所述第二L2P存储在所述SSD所在主机的内存中,所述目标页是所述SSD或所述主机内存中的页;
根据所述页索引确定所述目标页的地址,并根据所述目标页的地址,执行与所述IO读写请求相应的IO读写操作。
可选的,处理器91还用于执行前述图2所示实施例中的全部或部分步骤。
其中,控制器的结构中还可以包括通信接口93,用于控制器与其他设备或通信网络通信。
另外,本申请实施例提供了一种SSD,如图10所示,SSD110可以包括闪存芯片111以及控制器112;其中,所述闪存芯片111用于存储数据,所述控制器112用于对所述闪存芯片进行数据读写控制。需要说明的是,关于控制器112的实现方式,可以参考图9所示实施例的具体描述,在此不再赘述。
本申请实施例还提供一种电子设备,包括主机以及图10所示的SSD。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被执行时,实现如图2所示实施例所述的方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、链表、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 (CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (14)

1.一种请求处理方法,应用于支持命令配置的固态硬盘SSD,所述SSD挂载在主机上,包括:
接收输入输出IO读写请求,所述IO读写请求中包括目标逻辑块地址LBA;
确定所述目标逻辑块地址LBA对应的页索引,所述页索引用于查询目标页,所述目标页用于存储所述SSD的逻辑到物理L2P;所述L2P包括第一L2P和第二L2P,所述第一L2P用于记录部分LBA对应的物理块地址PBA,所述第二L2P用于记录全部LBA对应的PBA,所述第一L2P存储在所述SSD的内存中,所述第二L2P存储在所述主机中的作为所述SSD的扩展内存的内存中,所述扩展内存是由所述主机通过命令配置的方式配置给所述SSD,所述目标页是所述SSD或所述主机内存中的页;
根据所述页索引确定所述目标页的地址,并根据所述目标页的地址,执行与所述IO读写请求相应的IO读写操作。
2.根据权利要求1所述的方法,所述根据所述目标页的地址,执行与所述IO读写请求相应的IO读写操作,包括:
在所述目标页是所述SSD内存中的页时,通过访问所述目标页,执行与所述IO读写请求响应的IO读写操作。
3.根据权利要求2所述的方法,所述根据所述目标页的地址,执行与所述IO读写请求相应的IO读写操作,还包括:
在所述目标页是所述主机内存中的页时,从所述SSD内存中用于存储所述第一L2P的多个页中,分配空闲的第一页;
根据所述目标页的地址,将所述目标页的内容读取到所述第一页;
将所述页索引对应的地址更新为所述第一页的地址,并将所述第一页设置为使用状态;
通过访问所述第一页,执行与所述IO读写请求相应的IO读写操作。
4.根据权利要求3所述的方法,所述方法还包括:
从所述SSD内存中用于存储所述第一L2P的多个页中,选择不为空闲的第二页,并将所述第二页的内容写到所述主机的内存中对应的页上;
将页索引对应的地址由所述第二页的地址更新为所述对应的页的地址,并将所述第二页设置为空闲。
5.根据权利要求2或3所述的方法,通过访问某个页,执行与所述IO读写请求相应的IO读写操作,包括:
在所述IO读写请求为IO读请求时,在所述某个页中查找与所述目标逻辑块地址LBA对应的PBA,并根据所述PBA读取数据;
在所述IO读写请求为IO写请求时,为所述目标逻辑块地址LBA分配对应的PBA,根据所述PBA写入数据,并将所述目标逻辑块地址LBA到所述PBA的映射关系增加到所述某个页。
6.根据权利要求1-4中任一项所述的方法,所述方法还包括:
在所述SSD内存用于存储全部LBA对应PBA的情况下,接收所述主机下发的第一精度配置,所述第一精度配置用于配置所述SSD的L2P的索引精度由当前索引精度升高至第一索引精度;
将所述SSD内存中所述当前索引精度的单个表项转换为所述第一索引精度的多个表项,以将用于存储当前索引精度的表项的单个页,转换为用于存储所述第一索引精度的表项的多个页;
将用于存储所述第一索引精度的表项的页的内容,写到所述主机内存中用于存储所述第一索引精度的表项的多个页中对应的页上,以得到所述主机内存中用于存储全部LBA对应PBA的所述第一索引精度的第二L2P;
将多个页索引对应的地址设置为所述主机内存中用于存储所述第一索引精度的表项的多个页的地址,并将所述SSD内存中用于存储表项的全部页设置为空闲。
7.根据权利要求1-4中任一项所述的方法,所述方法还包括:
在所述SSD内存用于存储部分LBA对应PBA的情况下,接收所述主机下发的第二精度配置,所述第二精度配置用于配置所述SSD的L2P的索引精度由当前索引精度升高至第二索引精度;
将所述SSD内存中用于存储表项的页的内容,写到所述主机内存中用于存储所述当前索引精度的表项的多个页中对应的页上,并将所述SSD内存中用于存储表项的全部页设置为空闲;
遍历读取所述主机内存中所述当前索引精度的表项,并将所述当前索引精度的单个表项转换为所述第二索引精度的多个表项,以将用于存储所述当前索引精度的表项的单个页,转换为用于存储所述第二索引精度的表项的多个页;
将用于存储所述第二索引精度的表项的页的内容,写到所述主机内存中用于存储所述第二索引精度的表项的多个页中对应的页上,以得到所述主机内存中用于存储全部LBA对应PBA的所述第二索引精度的第二L2P;
将多个页索引对应的地址设置为所述主机内存中用于存储所述第二索引精度的表项的多个页的地址。
8.根据权利要求1-4中任一项所述的方法,所述方法还包括:
在所述SSD内存用于存储部分LBA对应PBA的情况下,接收所述主机下发的第三精度配置,所述第三精度配置用于配置所述SSD的L2P的索引精度由当前索引精度降低至第三索引精度;
将所述SSD内存中用于存储表项的页的内容,写到所述主机内存中用于存储所述当前索引精度的表项的多个页中对应的页上,并将所述SSD内存中用于存储表项的全部页设置为空闲;
根据所述主机内存中所述当前索引精度的表项进行碎片整理,以使从第一个LBA开始的每个以所述第三索引精度为单位的连续LBA对应的PBA均连续;
遍历读取所述主机内存中所述当前索引精度的表项,并将连续的所述当前索引精度的多个表项转换为所述第三索引精度的单个表项,以将用于存储所述当前索引精度的表项的多个页,转换为用于存储所述第三索引精度的表项的单个页,得到所述SSD内存中用于存储全部LBA对应PBA的所述第三索引精度的L2P。
9.根据权利要求1-4中任一项所述的方法,所述方法还包括:
在所述SSD内存用于存储部分LBA对应PBA的情况下,接收所述主机下发的第四精度配置,所述第四精度配置用于配置所述SSD的L2P的索引精度由当前索引精度降低至第四索引精度;
将所述SSD内存中用于存储表项的页的内容,写到所述主机内存中用于存储所述当前索引精度的表项的多个页中对应的页上,并将所述SSD内存中用于存储表项的全部页设置为空闲;
根据所述主机内存中所述当前索引精度的表项进行碎片整理,以使从第一个LBA开始的每个以所述第四索引精度为单位的连续LBA对应的PBA均连续;
遍历读取所述主机内存中所述当前索引精度的表项,并将连续的所述当前索引精度的多个表项转换为所述第四索引精度的单个表项,以将用于存储所述当前索引精度的表项的多个页,转换为用于存储所述第四索引精度的表项的单个页;
将用于存储所述第四索引精度的表项的页的内容,写到所述主机内存中用于存储所述第四索引精度的表项的多个页中对应的页上,以得到所述主机内存中用于存储全部LBA对应PBA的所述第四索引精度的第二L2P;
将多个页索引对应的地址设置为所述主机内存中用于存储所述第四索引精度的表项的多个页的地址。
10.一种请求处理装置,应用于支持命令配置的固态硬盘SSD,所述SSD挂载在主机上,包括:
接收模块,用于接收输入输出IO读写请求,所述IO读写请求中包括目标逻辑块地址LBA;
确定模块,用于确定所述目标逻辑块地址LBA对应的页索引,所述页索引用于查询目标页,所述目标页用于存储所述SSD的逻辑到物理L2P;所述L2P包括第一L2P和第二L2P,所述第一L2P用于记录部分LBA对应的物理块地址PBA,所述第二L2P用于记录全部LBA对应的PBA,所述第一L2P存储在所述SSD的内存中,所述第二L2P存储在所述主机中的作为所述SSD的扩展内存的内存中,所述扩展内存是由所述主机通过命令配置的方式配置给所述SSD,所述目标页是所述SSD或所述主机内存中的页;
执行模块,用于根据所述页索引确定所述目标页的地址,并根据所述目标页的地址,执行与所述IO读写请求相应的IO读写操作。
11.一种SSD的控制器,包括:存储器、处理器;其中,所述存储器存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现如权利要求1至9中任一项所述的方法。
12.一种SSD,包括闪存芯片以及权利要求11所述的控制器,所述闪存芯片用于存储数据,所述控制器用于对所述闪存芯片进行数据读写控制。
13.一种电子设备,包括主机以及权利要求12所述的SSD。
14.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被执行时,实现如权利要求1至9中任一项所述的方法。
CN202210852917.9A 2022-07-20 2022-07-20 请求处理方法、装置、控制器、设备及存储介质 Active CN115079957B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210852917.9A CN115079957B (zh) 2022-07-20 2022-07-20 请求处理方法、装置、控制器、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210852917.9A CN115079957B (zh) 2022-07-20 2022-07-20 请求处理方法、装置、控制器、设备及存储介质

Publications (2)

Publication Number Publication Date
CN115079957A CN115079957A (zh) 2022-09-20
CN115079957B true CN115079957B (zh) 2023-08-04

Family

ID=83260512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210852917.9A Active CN115079957B (zh) 2022-07-20 2022-07-20 请求处理方法、装置、控制器、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115079957B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700602B (zh) * 2022-12-08 2024-04-12 荣耀终端有限公司 一种查询扩展内存寿命的方法及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838937B1 (en) * 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
CN107908571A (zh) * 2017-10-31 2018-04-13 成都华为技术有限公司 一种数据写入方法、闪存装置及存储设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8843727B2 (en) * 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
US8335912B2 (en) * 2009-04-22 2012-12-18 Oracle America, Inc. Logical map table for detecting dependency conditions between instructions having varying width operand values
US9582431B2 (en) * 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
US9251067B1 (en) * 2012-11-01 2016-02-02 Western Digital Technologies, Inc. High speed trim command processing in a solid state drive
WO2014110095A1 (en) * 2013-01-08 2014-07-17 Violin Memory Inc. Method and system for data storage
CN104346287B (zh) * 2013-08-09 2019-04-16 Lsi公司 在固态介质中使用多级别映射的修整机制
IN2013CH05362A (zh) * 2013-11-21 2015-05-29 Sandisk Technologies Inc
CN105786724B (zh) * 2014-12-24 2018-12-25 华为技术有限公司 空间管理方法及装置
US9996473B2 (en) * 2015-11-13 2018-06-12 Samsung Electronics., Ltd Selective underlying exposure storage mapping
US10235198B2 (en) * 2016-02-24 2019-03-19 Samsung Electronics Co., Ltd. VM-aware FTL design for SR-IOV NVME SSD
US10061918B2 (en) * 2016-04-01 2018-08-28 Intel Corporation System, apparatus and method for filtering memory access logging in a processor
US20180239697A1 (en) * 2017-02-22 2018-08-23 CNEXLABS, Inc. a Delaware Corporation Method and apparatus for providing multi-namespace using mapping memory
TWI629591B (zh) * 2017-08-30 2018-07-11 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
CN110214305B (zh) * 2017-12-29 2020-09-08 华为技术有限公司 一种数据访问方法及存储阵列
CN108334457B (zh) * 2018-02-12 2020-06-30 杭州宏杉科技股份有限公司 一种io处理方法及装置
CN109189693B (zh) * 2018-07-18 2020-10-30 深圳大普微电子科技有限公司 一种对lba信息进行预测的方法及ssd
CN109783398B (zh) * 2019-01-18 2020-09-15 上海海事大学 一种基于相关感知页面级ftl固态硬盘性能优化方法
US11537526B2 (en) * 2020-09-10 2022-12-27 Micron Technology, Inc. Translating of logical address to determine first and second portions of physical address
CN113778694B (zh) * 2021-11-12 2022-02-18 苏州浪潮智能科技有限公司 一种任务处理方法、装置、设备及介质
CN114676072A (zh) * 2022-05-25 2022-06-28 阿里巴巴(中国)有限公司 数据处理方法以及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838937B1 (en) * 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
CN107908571A (zh) * 2017-10-31 2018-04-13 成都华为技术有限公司 一种数据写入方法、闪存装置及存储设备

Also Published As

Publication number Publication date
CN115079957A (zh) 2022-09-20

Similar Documents

Publication Publication Date Title
US10067684B2 (en) File access method and apparatus, and storage device
US9298384B2 (en) Method and device for storing data in a flash memory using address mapping for supporting various block sizes
US10275361B2 (en) Managing multiple namespaces in a non-volatile memory (NVM)
US10740251B2 (en) Hybrid drive translation layer
US8650379B2 (en) Data processing method for nonvolatile memory system
CN111033477A (zh) 逻辑到物理映射
CN108595349B (zh) 大容量存储设备的地址转换方法与装置
US20120117297A1 (en) Storage tiering with minimal use of dram memory for header overhead
WO2018090255A1 (zh) 内存访问技术
CN111512290A (zh) 文件页表管理技术
CN115079957B (zh) 请求处理方法、装置、控制器、设备及存储介质
CN110674051A (zh) 一种数据存储方法及装置
CN110737607A (zh) 管理hmb内存的方法、装置、计算机设备及存储介质
US8316210B2 (en) Dividing a logical memory space into ranges and sets for address translation
US11372774B2 (en) Method and system for a solid state drive with on-chip memory integration
CN110968527B (zh) Ftl提供的缓存
CN109960667B (zh) 大容量固态存储设备的地址转换方法与装置
CN107870736B (zh) 支持大于4gb非线性闪存的方法及装置
TWI795680B (zh) 主機效能加速模式的資料讀取方法及裝置
US20240070081A1 (en) Method and system of using hmb as a cache of physical address mapping table
CN107608636B (zh) 一种基于fat文件系统的设计方法及其应用的数据采集装置
CN115705298A (zh) 一种存储设备
CN117992360A (zh) 存储系统及存储方法
CN118034583A (zh) 一种可实现大容量固态硬盘的系统及其实现方法
CN116841454A (zh) 应用于存储器的缓存管理方法以及存储器

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