掌桥专利:专业的专利平台
掌桥专利
首页

SSD读加速的实现方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 11:45:49


SSD读加速的实现方法、装置、计算机设备及存储介质

技术领域

本发明涉及固态硬盘技术领域,特别是涉及一种SSD读加速的实现方法、装置、计算机设备及存储介质。

背景技术

计算机设备已经成为当今人们最具备生成力的实用工具,随着固态硬盘价格的下跌,固态硬盘越来越普及,NVMe SSD简称SSD(Solid State Disk或Solid State Drive)以其优越的性能更是发展迅猛,各大电脑厂商纷纷将计算机设备中的硬盘做成SSD。

目前,随着主机接口速率和NAND接口速率的提升,SSD的性能从SATA时代的500MB/s带宽提升到现在的7GB/s(PCIe Gen4),IOPS(Input/Output Operations Per Second)也从100K提升到了1M,进而对于SSD的产品设计提出了更高的要求。然而,在传统的SSD处理过程中,主要由固件负责主机的读写命令处理,由于CPU频率/代码效率受限,其能够达到的性能上限会受到很大的局限性,单纯的固件实现已经不能支撑如此的高性能需求,需要对从架构层面进行硬件加速。此外,从前端模块到发起NAND读,中间需要经历多个模块中转,涉及多核CPU的通讯/同步/计算/内存访问…,故会引入较大的延迟,进而对SSD的整体性能影响较大。

发明内容

基于此,有必要针对上述技术问题,提供一种可以避免因CPU/代码效率限制性能的SSD读加速的实现方法、装置、计算机设备及存储介质。

一种SSD读加速的实现方法,所述方法包括:

获取读命令请求,并将所述请求中的读命令与当前所有未执行完的命令队列中的命令进行匹配;

若在匹配过程中发现不存在相关性问题,则通过硬件处理路径进行加速处理;

根据所述读命令的逻辑地址进行映射表查询,获取所述逻辑地址对应的物理地址信息;

根据所述物理地址信息自动发起NAND的读取;

当出现NAND数据错误时,根据NAND提供的重读参数发起重读,并进行自动纠错处理;

待纠错处理完成后NAND返回正确的数据,自动发起到主机的数据传输。

在其中一个实施例中,在所述将所述请求中的读命令与当前所有未执行完的命令队列中的命令进行匹配的步骤之后还包括:

若在匹配过程中发现存在相关性问题,则将所述读命令传给固件并按照固件处理路径进行处理。

在其中一个实施例中,在所述待纠错处理完成后NAND返回正确的数据,自动发起到主机的数据传输的步骤之后还包括:

当数据全部完成传输后,标志命令完成且释放对应命令队列中的资源。

在其中一个实施例中,所述方法还包括:

当所述读命令中的数据经过自动纠错处理后仍然不能恢复正确时,停止该命令的自动执行,并在命令队列中对应的命令标志为硬件处理Fail状态;

将所述读命令发送给固件,并按照固件处理路径进行增强纠错处理;

当所述读命令的所有数据正确返回给主机后,标志命令完成且释放对应命令队列中的资源。

一种SSD读加速的实现装置,所述装置包括:

相关性匹配模块,所述相关性匹配模块用于获取读命令请求,并将所述请求中的读命令与当前所有未执行完的命令队列中的命令进行匹配;

第一处理模块,所述第一处理模块用于若在匹配过程中发现不存在相关性问题,则通过硬件处理路径进行加速处理;

映射表查询模块,所述映射表查询模块用于根据所述读命令的逻辑地址进行映射表查询,获取所述逻辑地址对应的物理地址信息;

数据读取模块,所述数据读取模块用于根据所述物理地址信息自动发起NAND的读取;

第一纠错模块,所述第一纠错模块用于当出现NAND数据错误时,根据NAND提供的重读参数发起重读,并进行自动纠错处理;

数据传输模块,所述数据传输模块用于待纠错处理完成后NAND返回正确的数据,自动发起到主机的数据传输。

在其中一个实施例中,所述装置还包括第二处理模块,所述第二处理模块用于:

若在匹配过程中发现存在相关性问题,则将所述读命令传给固件并按照固件处理路径进行处理。

在其中一个实施例中,所述装置还包括资源释放模块,所述资源释放模块用于:

当数据全部完成传输后,标志命令完成且释放对应命令队列中的资源。

在其中一个实施例中,所述装置还包括第二纠错模块,所述第二纠错模块用于:

当所述读命令中的数据经过自动纠错处理后仍然不能恢复正确时,停止该命令的自动执行,并在命令队列中对应的命令标志为硬件处理Fail状态;

将所述读命令发送给固件,并按照固件处理路径进行增强纠错处理;

当所述读命令的所有数据正确返回给主机后,标志命令完成且释放对应命令队列中的资源。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。

上述SSD读加速的实现方法、装置、计算机设备及存储介质中,在传统的SSD固件处理路径外创建了一个硬件处理路径,通过使用硬件加速单元完成命令相关性识别,对于符合特征的读命令进行硬件自动执行,由硬件自动完成解析/映射表查询/NAND访问/主机数据传输,可减少多核CPU的通讯/同步/计算等开销,极大地降低了命令响应延迟,进而提升了SSD的整体性能。

附图说明

图1为传统技术中典型的读命令SSD内部处理流程的应用环境图;

图2为本发明引入硬件处理路径的读命令处理流程的应用环境图;

图3为一个实施例中SSD读加速的实现方法的流程示意图;

图4为另一个实施例中SSD读加速的实现方法的流程示意图;

图5为一个实施例中当硬件加速路径遇到不可处理的错误时的应用环境图;

图6为一个实施例中SSD读加速的实现装置的结构框图;

图7为另一个实施例中SSD读加速的实现装置的结构框图;

图8为再一个实施例中SSD读加速的实现装置的结构框图;

图9为又一个实施例中SSD读加速的实现装置的结构框图;

图10为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

如图1所示,为传统技术中典型的读命令SSD内部处理流程,该流程包括:主机提交读命令到SSD的前端模块;SSD前端模块将命令分割成映射单元(典型如4KB);提交操作请求到缓冲区管理模块,分配读缓冲区;提交操作请求到映射表管理模块;映射表管理模块负责把逻辑地址转换成NAND物理地址;提交操作请求到后端模块,后端模块根据物理地址发起对NAND读请求;等待NAND读操作请求完成,此时数据会加载到NAND Cache Register中;数据Ready后,启动数据从NAND Cache Register到主机的传输。从前端模块,到发起NAND读,中间需要经历多个模块中转,涉及多核CPU的通讯/同步/计算/内存访问…,故会引入较大的延迟,进而对整体性能影响较大

基于此,本发明提供了一种SSD读加速的实现方法,该方法通过引入硬件加速通路,对于主机读命令由硬件自动完成解析/映射表查询/NAND访问/主机数据传输,可极大地提升性能。具体地,该方法的应用场景如图2所示,在硬件处理路径中可包括相关性检查模块、映射表查询模块、传输模块、纠错模块及读取模块。

在一个实施例中,如图3所示,提供了一种SSD读加速的实现方法,该方法包括:

步骤302,获取读命令请求,并将请求中的读命令与当前所有未执行完的命令队列中的命令进行匹配;

步骤304,若在匹配过程中发现不存在相关性问题,则通过硬件处理路径进行加速处理;

步骤306,根据读命令的逻辑地址进行映射表查询,获取逻辑地址对应的物理地址信息;

步骤308,根据物理地址信息自动发起NAND的读取;

步骤310,当出现NAND数据错误时,根据NAND提供的重读参数发起重读,并进行自动纠错处理;

步骤312,待纠错处理完成后NAND返回正确的数据,自动发起到主机的数据传输。

在本实施例中,提供了一种SSD读加速的实现方法,该方法可以应用于如图2所示的应用环境中,在传统的SSD固件处理路径外,创建了一个硬件处理路径。该硬件处理路径,针对主机读命令进行加速处理,常规情形下不需要固件参与处理。根据主机输入的命令种类进行分类处理,对于写命令,交由固件处理;而对于读命令,则交由该硬件加速路径进行处理,其具体的实现过程如下:

首先,获取读命令请求,并将请求中的读命令与当前所有未执行完的命令队列中的命令进行匹配。在一个实施例中,在将请求中的读命令与当前所有未执行完的命令队列中的命令进行匹配的步骤之后还包括:若在匹配过程中发现存在相关性问题,则将读命令传给固件并按照固件处理路径进行处理。

具体地,针对输入的读命令,与当前所有未执行完的命令队列中的命令进行匹配,如果出现访问地址重合等相关性问题,则将该命令传给固件,由固件按照传统路径进行处理;如果无相关性问题,则继续硬件加速处理。

接着,针对该命令的逻辑地址,依次进行映射表查询,获取其物理地址,并通知后继加速单元。硬件加速单元根据前一模块输入的物理地址信息,自动发起NAND的读取。

在数据读取的过程中,当出现NAND数据错误时,可以根据NAND提供的重读参数发起重读,进行轻量级的自动纠错处理。在一个实施例中,在待纠错处理完成后NAND返回正确的数据,自动发起到主机的数据传输的步骤之后还包括:当数据全部完成传输后,标志命令完成且释放对应命令队列中的资源。

最后,当NAND返回正确的数据后,自动发起到主机的数据传输,当某个命令的数据全部完成传输后,标志命令完成且释放对应命令队列中的资源。

在上述实施例中,在传统的SSD固件处理路径外创建了一个硬件处理路径,通过使用硬件加速单元完成命令相关性识别,对于符合特征的读命令进行硬件自动执行,由硬件自动完成解析/映射表查询/NAND访问/主机数据传输,可减少多核CPU的通讯/同步/计算等开销,极大地降低了命令响应延迟,进而提升了SSD的整体性能。

在一个实施例中,如图4所示,提供了一种SSD读加速的实现方法,方法还包括:

步骤402,当读命令中的数据经过自动纠错处理后仍然不能恢复正确时,停止该命令的自动执行,并在命令队列中对应的命令标志为硬件处理Fail状态;

步骤404,将读命令发送给固件,并按照固件处理路径进行增强纠错处理;

步骤406,当读命令的所有数据正确返回给主机后,标志命令完成且释放对应命令队列中的资源。

在本实施例中,提供了一种SSD读加速的实现方法,方法可以应用于如图5所示的应用场景,当硬件加速路径遇到不可处理的错误时候,可以转由软件处理,按照传统路径完成读命令以保障数据的正确性,其具体的实现过程如下:

首先,当命令中的某个/些数据经过硬件自动纠错处理后仍然不能恢复正确时,停止该命令的自动执行,并在命令队列中对应的命令标志为硬件处理Fail状态。

接着,将该命令发送给固件处理,固件按照传统的路径处理该读命令。针对该命令硬件自动处理失败的数据,固件可以采用更强/复杂的纠错算法,例如:LDPC 2bit/LDPC软解码或者RAID纠错等,来进一步恢复数据。

最后,当该命令的所有数据正确返回给主机后,标志命令完成且释放对应命令队列中的资源。

在本实施例中,针对加速路径中的一些偶发的例外场景,可以由传统固件通路进行处理,使用更强/复杂的纠错算法,保障了数据的正确性。

应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图6所示,提供了一种SSD读加速的实现装置600,该装置包括:

相关性匹配模块601,用于获取读命令请求,并将所述请求中的读命令与当前所有未执行完的命令队列中的命令进行匹配;

第一处理模块602,用于若在匹配过程中发现不存在相关性问题,则通过硬件处理路径进行加速处理;

映射表查询模块603,用于根据所述读命令的逻辑地址进行映射表查询,获取所述逻辑地址对应的物理地址信息;

数据读取模块604,用于根据所述物理地址信息自动发起NAND的读取;

第一纠错模块605,用于当出现NAND数据错误时,根据NAND提供的重读参数发起重读,并进行自动纠错处理;

数据传输模块606,用于待纠错处理完成后NAND返回正确的数据,自动发起到主机的数据传输。

在一个实施例中,如图7所示,提供了一种SSD读加速的实现装置600,该装置还包括第二处理模块607,用于:

若在匹配过程中发现存在相关性问题,则将所述读命令传给固件并按照固件处理路径进行处理。

在一个实施例中,如图8所示,提供了一种SSD读加速的实现装置600,该装置还包括资源释放模块608,用于:

当数据全部完成传输后,标志命令完成且释放对应命令队列中的资源。

在一个实施例中,如图9所示,提供了一种SSD读加速的实现装置600,该装置还包括第二纠错模块609,用于:

当所述读命令中的数据经过自动纠错处理后仍然不能恢复正确时,停止该命令的自动执行,并在命令队列中对应的命令标志为硬件处理Fail状态;

将所述读命令发送给固件,并按照固件处理路径进行增强纠错处理;

当所述读命令的所有数据正确返回给主机后,标志命令完成且释放对应命令队列中的资源。

关于SSD读加速的实现装置的具体限定可以参见上文中对于SSD读加速的实现方法的限定,在此不再赘述。

在一个实施例中,提供了一种计算机设备,其内部结构图可以如图10所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种SSD读加速的实现方法。

本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • SSD读加速的实现方法、装置、计算机设备及存储介质
  • SSD读重试的加速方法、装置、计算机设备及存储介质
技术分类

06120113047727