一种固态硬盘提升读性能的方法技术

技术编号:17779332 阅读:26 留言:0更新日期:2018-04-22 07:38
本发明专利技术公开了一种固态硬盘提升读性能的方法,其特征在于硬盘固件中增加命令合并操作,硬盘固件接收到主机的读命令后,先经过命令合并操作将连续落在同一个并发读单元的读命令请求进行合并描述,并记录为合并读命令,具体为连续落在同一个并发读单元的多个读命令合并为合并读命令后只记录第一个读命令信息,在第一个读命令的读命令信息的数据结构中增加读请求个数,读请求个数用于描述连续落在同一个并发读单元的读命令个数。通过引入变长的读请求控制,可有效降低对于SSD内部高速内存如DRAM或SRAM的需求;同时也降低了CPU交互、软件尝试的开销,可大大提升NAND并发性,进而保障了高带宽场景下的读性能。

【技术实现步骤摘要】
一种固态硬盘提升读性能的方法
本专利技术涉及固态硬盘控制技术,特别涉及一种固态硬盘提升读性能的方法。
技术介绍
SSD(固态硬盘)已经被广泛应用于各种场合,随着协议的发展,已经从传统的SATA发展为PCIe/NVMe时代,其接口性能也带来数倍的提升。在SATA时代,典型的接口性能在500MB/s左右,而在PCIe/NVMe接口规范下,则典型需要2-3GB/s的带宽。对应地其接口性能的上限也从500MB/s提升为3GB/s.传统SSD的架构设计,需要兼顾小颗粒度的读写(4K),对于操作请求的描述较为碎片化。由于接口速度的限制,这些在SATA接口时不会暴露出瓶颈,但迁移到PCIe/NVMe时代时,则不可避免地成为影响性能的瓶颈。图1是典型的NAND组成结构示意图;NAND由多个块Block组成,每个Block又由多个页Page组成。DIE是该NANDFLASH可支持的独立并发操作的单元;块Block可独立擦除的单元,其内各个物理位置的数据写入后在下一次写之前必须要将整个Block擦除,才可写入新的数据;页Page是读写的单元,也就是向FLASH中写入或读出数据必须以页为操作单位进行。由于NAND的原理决定了,存在如下的特性和限制:典型的,一个Block擦除需要10几个毫秒;写一个Block数据大约需要几个毫秒;而读一个Block的数据仅仅只需要几十个微秒;进一步地,同一时间内,单个DIE只能执行一种类型的操作。图2是一个典型的NAND的读流程示意图,S0提交读命令操作:当主机HOST发送读命令给到SSD,通常携带逻辑地址范围信息,包括逻辑块起始地址lba_start和逻辑块数量lba_cnt,逻辑块地址lba为主机最小读写地址,对应大小为512字节。S1按映射表颗粒度派发读请求操作:SSD固件将接收到的读命令的逻辑地址范围按照SSD内部映射颗粒度(一般为4KB)进行切分,作为一个控制节点,并用特定的数据结构进行描述。数据结构需要至少携带如下信息:操作类型、命令信息、逻辑地址、物理地址、Buffer地址、数据有效性标志、和其他必要控制信息。S2地址映射操作:该操作依次提交地址映射模块进行地址翻译:将逻辑地址转换为物理地址。S3等待拼凑并发读请求操作:NAND控制器端,需要根据到来的操作请求发起读操作。由于一个NAND物理页会包含多个映射单元数据(如4K),为保证将对应的读请求合并在单次NAND读操作中完成,需要在此环节等待拼凑。连续的0/1/2/3请求可以合并在单次读操作中完成。S4发起NAND读操作:完成拼凑后,向NAND发起读请求。S5返回所读取的数据操作:将实际从NAND中读取的数据返回给主机。在此过程中,需要为每4KB分配一个控制节点,而在从属于同一个命令的控制节点中,其大多数字段是重复的:如操作类型、逻辑地址、物理地址等,由此造成了较大的快速内存如SRAM或DRAM的开销,这对于嵌入式系统来说会极大影响性能。进一步,在整个读内部处理流程中,由于从源头上被切分成了4KB单元,需要处理很多类似的节点:构建、传递、解析等,这些在高带宽的SSD系统中极大制约性能的体现。
技术实现思路
针对以上缺陷,本专利技术目的是如何在降低命令处理机制带来的系统延迟,实现充分提升NAND的并发性,进而实现提高读性能。为了解决以上问题本专利技术提出了一种固态硬盘提升读性能的方法,其特征在于硬盘固件中增加命令合并操作,硬盘固件接收到主机的读命令后,先经过命令合并操作将连续落在同一个并发读单元的读命令请求进行合并描述,并记录为合并读命令,具体为连续落在同一个并发读单元的多个读命令合并为合并读命令后只记录第一个读命令信息,在第一个读命令的读命令信息的数据结构中增加读请求个数,读请求个数用于描述连续落在同一个并发读单元的读命令个数。所述的固态硬盘提升读性能的方法,其特征在硬盘固件直接根据命令合并操作后的合并读命令下发起读请求,地址映射操作根据合并读命令携带的读命令信息进行地址映射操作,地址映射完成后直接针对合并读命令发起NAND读操作。本专利技术通过引入变长的读请求控制,可有效降低对于SSD内部快速Memory的需求;同时也降低了CPU交互、软件尝试的开销,可大大提升NAND并发性,进而保障了高带宽场景下的读性能。附图说明图1是典型的NAND组成结构示意图;图2是一个典型的NAND的读流程示意图;图3是引入变长操作请求后的NAND的读流程示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图3是引入变长操作请求后的NAND的读流程示意图,与传统实现的主要差别是,硬盘固件接收到读命令请求后,不直接切分到4KB单元,而是预查内部映射表,将连续落在同一个并发读单元内的4KB请求合并描述。典型如并发读单元内的大小为16KB的物理页。假设主机下发了0~910个读命令,其中0、1、2和3落在同一个并发读单元,4和5落在同一个并发读单元,7、8和9落在同一个并发读单元,硬盘固件经过接收到命令后先执行命令合并操作,对同一个并发读单元的命令进行了合并,合并后只需要构建以0,4,6,7为代表的读请求即可,而不需要像传统的需要构建10个读请求,节约了命令描述的空间消耗。为适配该变长描述,在读请求的数据结构中新增描述字段“读请求个数”。读请求个数用于描述连续落在同一个并发读单元的读命令个数。具体执行流程举例说明如下:L0提交读命令操作:当主机HOST发送读命令给到SSD,通常携带逻辑地址范围信息,包括逻辑块起始地址lba_start和逻辑块数量lba_cnt,逻辑块地址lba为主机最小读写地址,对应大小为512字节。L1检查逻辑、物理连续性完成命令合并操作;合并后的每个合并读命令作为一个控制节点,采用数据结构进行命令描述。数据结构除了需要携带如下必要信息:操作类型、命令信息、逻辑地址、物理地址、Buffer地址、数据有效性标志、和其他必要控制信息;还增加了读命令读请求个数用于描述连续落在同一个并发读单元的读命令个数。L2下发读请求代表操作:以合并读命令为单位下发读请求。L3地址映射操作,根据合并读命令携带的信息执行逻辑地址与物理地址的映射操作。L4针对每个读请求直接发起NAND读操作:直接针对每个合并读命令向NAND发起读请求。L5返回所读取的数据操作:将实际从NAND中读取的数据返回给主机。0/4/6/7控制节点传递到NAND控制器端,由于此时已经按照并发性进行了分组,不再需要有等待拼接过程,直接对0/4/6/7提交对应的读操作请求即可。通过如上机制,将重复的控制节点的资源开销/构建/传递,以及并发操作等待机制等进行了有效的精简和优化,减少了资源开销和软件参与度,可有效地保障PCIe/NVMeSSD的高带宽实现。以上所揭露的仅为本专利技术一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本专利技术权利要求所作的等同变化,仍属于本专利技术所涵盖的范围。本文档来自技高网
...
一种固态硬盘提升读性能的方法

【技术保护点】
一种固态硬盘提升读性能的方法,其特征在于硬盘固件中增加命令合并操作,硬盘固件接收到主机的读命令后,先经过命令合并操作将连续落在同一个并发读单元的读命令请求进行合并描述,并记录为合并读命令,具体为连续落在同一个并发读单元的多个读命令合并为合并读命令后只记录第一个读命令信息,在第一个读命令的读命令信息的数据结构中增加读请求个数,读请求个数用于描述连续落在同一个并发读单元的读命令个数。

【技术特征摘要】
1.一种固态硬盘提升读性能的方法,其特征在于硬盘固件中增加命令合并操作,硬盘固件接收到主机的读命令后,先经过命令合并操作将连续落在同一个并发读单元的读命令请求进行合并描述,并记录为合并读命令,具体为连续落在同一个并发读单元的多个读命令合并为合并读命令后只记录第一个读命令信息,在第一个读命令的读命令信息的数...

【专利技术属性】
技术研发人员:王猛徐伟华
申请(专利权)人:记忆科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1