一种减小ssd读写io时延的方法与系统的制作方法

文档序号:8942782阅读:1782来源:国知局
一种减小ssd读写io时延的方法与系统的制作方法
【技术领域】
[0001] 本发明涉及一种减小SSD读写IO时延的方法与系统。
【背景技术】
[0002] 现有SSD主控通过FTL映射表项记录主机逻辑地址与Flash物理地址之间的映射 关系。随着SSD提供的存储空间增大,映射表项的个数也逐渐增多。以2T的SSD容量来看, 假设映射粒度为4K Byte,每个映射表项占用6个Byte,那么FTL映射表项占用的空间大小 为(2T/4K)*6Byte = 3G Byte 大小。
[0003] 由于CPU访问RAM的性能远远高于访问Flash介质的性能,考虑性能原因,SSD主 控通常通过缓存映射表项的方式来保证IO性能。但对于如此大的FTL映射表项数据,当前 的SSD主控无法提供如此大的RAM空间来缓存整张FTL映射表。现有做法是通过采用多级 映射表,RAM缓存部分映射表项数据的方式来保证IO性能(如图1所示,其中:FTL二级映 射表:用于存放FTL映射表项的系统数据块。考虑SSD主控芯片RAM空间大小的问题,FTL 二级映射表通常被分为多块,RAM空间只缓存了部分二级映射表;FTL-级映射表:用于记 录二级映射表在缓存中的状态信息(是否缓存在RAM中),以及二级映射表在Flash上的物 理位置。通常FTL -级映射表整张缓存在RAM中。)。
[0004] 当主机(Host)读IO访问的逻辑地址对应的FTL映射表项不在RAM缓存中时,需 要先将映射表项从Flash介质上读取出来,获取映射关系后再找到对应的物理位置读取数 据。如果遇到RAM缓存空间不够,还需要先下刷原有的映射表项到Flash介质上,再释放 RAM缓存空间。
[0005] 如图2,目前SSD的性能中,IO时延基本都是微秒级。在SSD内部的IO路径上, SSD主控向Flash接口下发读命令,到数据读到RAM中所花费的时间,大概占整个IO时延的 20%左右。如果主机下发的读IO对应的映射表项未在缓存RAM中,需要额外加载一次映射 表项,那么相应的读IO时延也要增加20%左右。所以,在随机IO占多数的应用场景里面, 这部分时延普遍偏大。当主机下发的逻辑读IO请求经过SSD主控,无法在RAM缓存中命中 对应的FTL映射表项时,主控芯片需要从Flash介质上先读取FTL映射表项,再根据FTL映 射表项得到数据存放的物理位置,读取对应的数据。相对能够在缓存中命中FTL映射表项 的读10,上述IO过程中增加了一次从Flash介质读取FTL映射表项的操作,极大的增加了 IO时延。
[0006] 本发明用到的名词解释如下:
[0007] SSD :Solid State Drive,固态硬盘,一种利用Nand Flash介质存储用户数据的存 储装置。
[0008] Vendor命令:根据ATA协议规定的格式,厂商自定义的用于主机和硬盘之间,交互 数据和信息的厂商自定义命令。
[0009] SSD主控:用于管理存放在Nand flash介质上的系统数据和用户数据的SOC芯片。 SSD主控通过相关算法与措施,能够极大的提升整个SSD的寿命和可靠性以及性能,是SSD 系统中最关键最重要的模块。
[0010] LBA :Logical Block Address,主机侧用于访问SSD存储空间的线性逻辑地址。
[0011] PBA :Physical Blcok Address,SSD 主控访问 flash 介质的物理地址。
[0012] FTL映射表项:FTL(Flash translation layer)映射表项记录了主机逻辑地址到 Flash介质物理地址的映射关系。主机下发的读IO请求,为逻辑地址,通过查找对应的映射 表项,计算出数据在flash介质上存放的物理地址,然后读出数据。
[0013] HIF :Host Interface,主机接口,用于SSD主控与主机之间的数据交互。
[0014] FIF :Flash Interface,Nand Flash 颗粒接口,用于 SSD 主控与 Flash 颗粒之间的 数据交互。

【发明内容】

[0015] 本发明所要解决的技术问题是,针对现有技术不足,提供一种减小SSD读写IO时 延的方法与系统。
[0016] 为解决上述技术问题,本发明所采用的技术方案是:一种减小SSD读写IO时延的 方法,包括以下步骤:
[0017] 1)主机侧加载SSD驱动时,SSD驱动初始化时在内存中分配足够的内存空间,通过 vendor命令,读取SSD的整张FTL映射表数据到主机内存,并将所有FTL映射表项均标记为 干净表项;
[0018] 2)主机侧业务下发读IO时,读IO命令经过SSD驱动,SSD驱动查找读IO逻辑地 址对应的FTL映射表项,根据FTL映射表项记录的物理地址,下发读物理地址的特殊IO命 令到SSD主控;SSD主控收到读IO命令后,检查读IO命令中的相关标记,若发现是读物理地 址的特殊10,直接读取对应Flash物理地址的数据,并返回给主机;主机侧下发写IO命令 时,写IO命令经过SSD驱动,将对应的FTL映射表项标记为脏;SSD主控收到写IO命令后, 将数据写入Flash,同时更新FTL映射表项,并返回写入结果给主机;当写IO命令返回给主 机后,主机向SSD主控下发所述vendor命令,读取对应逻辑地址的FTL映射表项,读取成功 后,利用读取出来的表项数据更新主机内存中记录的FTL映射表项,同时将FTL映射表项重 新标记为干净。
[0019] 本发明还提供了一种减小SSD读写IO时延的系统,其包括:
[0020] 主机:用于加载SSD驱动,并在SSD驱动初始化时在内存中分配足够的内存空间, 通过vendor命令,读取SSD的整张FTL映射表数据到主机内存,将所有FTL映射表项均标记 为干净表项;下发读10命令,查找读10逻辑地址对应的FTL映射表项,根据FTL映射表项 记录的物理地址,下发读物理地址的特殊10命令到SSD主控;下发写10命令,将对应的FTL 映射表项标记为脏;并在收到SSD主控返回的写10命令后,向SSD主控下发所述vendor命 令,读取对应逻辑地址的FTL映射表项,读取成功后,利用读取出来的表项数据更新主机内 存中记录的FTL映射表项,同时将被SSD驱动标记为脏的FTL映射表项重新标记为干净;
[0021] SSD主控:用于在收到读10命令后,检查读10命令中的相关标记,若发现是读物 理地址的特殊10,直接读取对应Flash物理地址的数据,并返回给主机;或者在收到写10 命令后,将数据写入Flash,同时更新FTL映射表项,并返回写入结果给主机;
[0022] Flash :用于存放SSD主控写入的数据。
[0023] 所述主机包括:
[0024] APP或上层:用于下发读IO命令或写IO命令;接收SSD主控返回的写IO命令;
[0025] SSD驱动:用于在主机侧保存一份完整的SSD FTL映射表的镜像,同时在APP或上 层下发读IO命令时,查找读IO逻辑地址对应的FTL映射表项,根据FTL映射表项记录的物 理地址,下发读物理地址的特殊IO命令到SSD主控;在APP或上层下发写IO命令时,将对 应的FTL映射表项标记为脏;
[0026] 内存:用于加载SSD驱动,并通过vendor命令,读取SSD的整张FTL映射表数据, 将所有FTL映射表项均标记为干净表项;并在APP或上层接收SSD主控返回的写IO命令 后,向SSD主控下发vendor命令,读取对应逻辑地址的FTL映射表项,读取成功后,利用读 取出来的表项数据更新FTL映射表项,同时将被SSD驱动标记为脏的FTL映射表项重新标 记为干净。
[0027] 进一步地,该系统还包括:
[0028] HIF :用于SSD主控与主机之间的数据交互;
[0029] FIF :用于SSD主控与Flash颗粒之间的数据交互。
[0030] 与现有技术相比,本发明所具有的有益效果为:本发明读取一份完整的FTL映射 表镜像到主机内存里,减少整个IO路径上对Flash的读次数,从而达到减小整个读IO时延 的目的,最大限度地避免了读IO请求无法命中FTL映射表的现象,减少甚至消除IO过程中 从Flash介质上获取映射表项的步骤,降低了系统的平均读写IO时延。
【附图说明】
[0031] 图1为SSD主控缓存中的多级映射表;
[0032] 图2为现有SSD主控结构与主机系统接口与结构框图;
[0033] 图3为本发明SSD主控结构与主机系统接口与结构框图;
[0034] 图4为本发明方法时序图。
【具体实施方式】
[0035] 本发明的SSD主控结构图如图3所示,主要包括如下几个部分:
[0036] 一、主机侧SSD驱动
[0037] SSD驱动主要负责在主机侧保存一份完整的SSD FTL映射表的镜像,同时负责根 据主机侧FTL镜像映射表将过往读IO请求中的逻辑地址转换为物理地址,然后按照接口协 议(如SATA和NVMe等)发送给SSD。
[0038] 主要流程如下:
[0039] 1、主机侧加载SSD驱动时,在内存中分配足够内存空间。然后通过自定义vendor 命令,读取SSD的整张FTL映射表数据到主机内存。此时所有FTL映射表项都标记为干净 表项。
[0040] 2、驱动检测并适配主机侧业务下发的读10。
[0041] 主机侧业务
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1