一种固态硬盘读性能加速方法与流程

文档序号:15517346发布日期:2018-09-25 18:41阅读:589来源:国知局
本发明涉及存储
技术领域
,尤其涉及一种固态硬盘读性能加速方法。
背景技术
:ssd(固态硬盘)已经被广泛应用于各种场合,随着pc的性能要求提升,对于性能影响瓶颈的存储设备的性能优化已经成为业界主要技术攻关点。在目前主流的oed/odm厂商中,一些测试工具能够模拟客户典型应用场景,对磁盘进行性能测试。在这些测试序列中,其部分特征对于命令响应延迟以及服务时间要求很强,如何进行针对性的优化,是提升产品性能的关键措施。图1是典型ssd读响应处理流程;主机提交读命令到ssd的前端模块;ssd前端模块将命令分割成映射单元(典型如4kb),提交到读写缓冲区管理模块;读写缓冲区管理模块从缓存memory中(典型如dram)分配空间,后再提交操作请求到映射表管理模块中;映射表管理模块负责把逻辑地址转换成nand物理地址,后再提交操作请求到后端模块,后端模块根据物理地址发起对nand读请求,并等待nand操作请求完成,此时数据已经加载到预先分配的memory中,控制操作请求依次返回上层模块。前端模块接收到完成的控制操作请求后,构建数据传输命令,实际发起对主机的数据传输。从上面整个流程来看,从ssd接收到主机命令,到真正发起数据传输,中间需要经过众多环节,命令的响应延迟以及服务时间很大。对于磁盘数据来说,存在一种特殊的数据,其代表对应的逻辑空间实际上不存在有效数据:出厂后从来没有写入数据或者主机通过特殊的命令废弃了其中数据,我们称此种数据为no-map数据(无映射数据)。对于此类型的数据,只需返回协议规定的特定数据即可(例如全0)。如表1所示,为一个ssd跑性能测试项时的读命令统计信息,测试了hdd1~hdd8共8个固态硬盘,并统计了所有的读命令数量及读命令为no-map数据的no-map读命令数量。我们可以看到在各个分项测试中,no-map数据的命令数占比很大。因此对于此类型的命令,如果全部走正常路径,由于信息传递深度,以及dram效率的问题,导致性能受到制约,进而影响了整体测试项得分。表1:pcmark测试子项读命令数no-map读命令数nomapcmd占rdcmd比例hdd17113251635%hdd211007675661%hdd318931893100%hdd46355383060%hdd54530419192%hdd62061170782%hdd71819120266%hdd88651664576%技术实现要素:针对以上缺陷,本发明目的在于如何提高对于no-map的命令的响应速度,进而整体上提高固态硬盘读性能。为了实现上述目的,本发明提供了一种固态硬盘读性能加速方法,其特征在于增加无映射检查模块,ssd的前端模块中的命令接收模块负责命令解析和逻辑地址空间提取,完成后将命令提交给无映射检查模块,所述无映射检查模块根据主机提交的读命令的逻辑地址空间判断当前读取的空间是否属于无映射no-map,如果属于则直接发送预先格式化好的数据给主机。所述的固态硬盘读性能加速方法,其特征在于还包括no-map加速模块和no-map映射表,所述no-map映射表记录了当前固态硬盘中处于no-map的地址信息,所述no-map映射表维护两种颗粒度的两级映射表,所述无映射检查模块根据主机提交的读命令的逻辑地址空间查找no-map映射表,判断该读命令上的地址空间是否都为无映射状态,如果是则直接提交给no-map加速模块,no-map加速模块的no-map数据传输模块直接构建nvme传输命令,将预先格式化好的数据发送给主机。所述的固态硬盘读性能加速方法,其特征在于所述无映射检查模块根据主机提交的读命令的逻辑地址空间判断当前读取的空间存在非无映射no-map时,将该读命令提交读写缓冲区管理模块,读写缓冲区管理模块按照lpa映射颗粒度4kb切分成连续的控制请求,提交到映射表管理模块;映射表管理模块,对于每个4kb的控制请求,分别查询逻辑物理映射表;如果为no-map的,则标志该4kb为no-map,后端模块获取到该命令一系列的4kb读控制请求后,查询其状态标志,如果是no-map的,则不再往后继模块提交nand读写请求,而是直接提交到no-map加速模块,no-map加速模块的no-map数据传输模块直接构建nvme传输命令,将预先格式化好的数据发送给主机。所述的固态硬盘读性能加速方法,其特征在于预先格式化好的数据所有数据都相同,根据该数据相同的特征进行压缩,压缩后的数据直接放置在缓存中。本发明通过维护大颗粒度的两级no-map映射表,对整个命令no-map的情形通过ssd前端加速模块直接处理,大大降低了读响应延迟;对于命令内部分no-map的情形,通过ssd后端加速模块处理,降低了读响应延迟。附图说明图1是图1是典型ssd读响应处理流程;图2是两级no-map映射表构成示意图;图3是引入的方案中第一级no-map优化策略示意图;图4是引入的方案中第二级no-map优化策略示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图2是两级no-map映射表构成示意图,ssd内部涉及到的映射表、颗粒度以及转换规则,其中:逻辑页地址lba:为主机端访问的最小可寻址单元,一般为512bytes;逻辑块地址lpa:为ssd内部的逻辑映射单元,一般为4kb;无映射单元cmdno-mapentry:一般为512kb。lba->lpa的转换规则,按照线性转换原则,从0开始,连续的8个lba对应唯一的lpa(例如lba0–7,对应lpa0);连续的1024个lba对应唯一的cmdno-mapentry(例如lba0–1023,对应cmdno-mapentryindex0);“逻辑到物理映射表”,简称l2p表,其表索引由lpa索引,其值表示物理地址。“no-map映射管理表”,其表索引由cmdno-mapentryindex索引;其值有两个可能性:1表示对应lba/lpa范围全部是no-map的;0表示非全no-map;要么全部有map,要么部分有map部分无map,需要结合l2p表在4kb级别做进一步查询。图3是引入的方案中第一级no-map优化策略示意图。对于no-map的command,其执行路径与传统ssd读路径差别很大:主机提交读命令到ssd的前端模块;ssd前端模块中的命令接收模块负责命令解析,提取其访问的逻辑地址空间(lba_start,lba_cnt),并提交到后继的no-map检查模块;no-map检查模块根据命令逻辑地址空间,查找no-map映射表;如果命令范围所对应的no-map映射表值均为1,则该命令为no-map命令;对于此命令,不再往后继传统的”读写缓冲区管理模块”,”映射表管理模块”等提交,而是直接提交给”no-map加速模块”的”no-map数据传输模块”;“no-map数据传输模块”构建nvme传输命令,并从”no-mappattern模块”发送格式化好的数据(例如全0)给到主机;注意到no-map数据是重复的,”no-mappattern模块”可以以较小的buffer(例如对于128kb命令,可以压缩为一个4b的物理空间)进行格式化,而不需要类似dram中展开对应的128kb命令大小;进一步,基于其大小可压缩,可以将其放置到快速memory中,提高访问性能。图4是引入的方案中第二级no-map优化策略示意图,主机提交读命令到ssd的前端模块;ssd前端模块中的命令接收模块负责命令解析,提取其访问的逻辑地址空间(lba_start,lba_cnt),并提交到后继的no-map检查模块;no-map检查模块根据命令逻辑地址空间,查找no-map映射表;如果命令范围所对应的no-map映射表值存在0的值,则该命令为非no-map命令,需要继续往后继模块传输;读写缓冲区管理模块,按照lpa映射颗粒度(4kb)切分成连续的控制请求,提交到映射表管理模块;映射表管理模块,对于每个4kb的控制请求,查询”逻辑物理映射表-l2p表”。如果为no-map的,则标志该4kb为no-map。后端模块获取到该命令一系列的4kb读控制请求后,查询其状态标志,如果是no-map的,则不再往后继模块提交nand读写请求,而是直接提交到no-map加速模块的no-map数据传输模块;no-map数据传输模块构建对应的数据传输命令,并从no-mappattern获取格式化的数据进行传输。综合针对命令全部no-map/部分no-map的读处理流程来看,由于减少了控制流通路径,进而能够在收到命令后较短的时间内构建nvme数据传输指令,nvme(non-volatilememoryexpress),是一种建立在m.2接口上的类似ahci的一种协议,是专门为闪存类存储设计的协议。所以命令响应延迟以及服务时间大大地得到了降低;进一步的,通过对no-map数据的特征压缩,可以将其放置快速memory中,有效提升了带宽。作为优化项,可以根据nvme命令特征限制单个命令最大size,例如128kb,如此在查询”no-map映射表”时可降低查询的次数,提高了效率。以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1