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

一种命令的解压方法、系统及固态硬盘

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


一种命令的解压方法、系统及固态硬盘

技术领域

本申请涉及固态硬盘应用领域,特别是涉及一种命令的解压方法、系统及固态硬盘。

背景技术

固态硬盘(Solid State Drives,SSD),是采用固态电子存储芯片阵列而制成的硬盘,固态硬盘包括控制单元和存储单元(FLASH存储芯片或DRAM存储芯片)。目前固态硬盘系统中有相当部分是存在动态随机存取存储器(Dynamic Random Access Memory,DRAM)的,所以SSD有较大的数据缓存空间用来缓存数据。

闪存(NAND Flash)是固态硬盘的主要存储介质。SSD系统内CPU与各硬件模块基于门铃(doorbell)进行通信,CPU通过doorbell的提交队列(Submission Queue,SQ)发送命令(Command)给硬件模块;硬件模块执行完相关命令后通过完成队列(Completion Queue,CQ)返回执行结果(Response)供CPU查询。通常发给SQ的单个命令的数据量较大,而且命令的数量也较多,导致CPU给硬件发送命令的整体时间长,即CPU的开销大,导致影响性能的发挥。

本申请实施例旨在提供一种命令的解压方法、系统及固态硬盘,其解决了现有的固态硬盘的处理器发送命令的数据量大的技术问题,提高固态硬盘的处理效率。

为解决上述技术问题,本申请实施例提供以下技术方案:

第一方面,本申请实施例提供一种命令的解压方法,应用于固态硬盘,所述方法包括:

获取处理器发送的压缩命令;

根据所述压缩命令,确定所述压缩命令对应的命令模板;

根据所述压缩命令以及命令模板,生成解压缩命令。

在一些实施例中,在获取处理器发送的压缩命令之前,所述方法还包括:

预先建立命令模板组,所述模板组包括多个命令模板,每一命令模板一一对应一个模板标识号。

在一些实施例中,所述压缩命令包括模板标识号,所述根据所述压缩命令,确定所述压缩命令对应的模板,包括:

获取所述压缩命令包含的模板标识号;

根据所述模板标识号,基于所述命令模板组,确定所述压缩命令对应的命令模板。

在一些实施例中,每一命令模板包括默认数据区以及操作指令区,所述根据所述压缩命令以及命令模板,生成解压缩命令,包括:

根据所述操作指令区,获取操作指令区包含的操作指令,其中,所述操作指令区包括至少一条操作指令;

执行所述操作指令区包含的操作指令,以更新所述默认数据区;

将更新后的默认数据区的字段作为所述解压缩命令的字段,以生成解压缩命令。

在一些实施例中,在根据所述操作指令区,获取操作指令区包含的操作指令之前,所述方法还包括:

将所述命令模板中的默认数据区复制到缓冲区。

在一些实施例中,所述执行所述操作指令区包含的操作指令,包括:

顺序执行所述操作指令区包含的操作指令,直至当前执行的操作指令为结束指令。

在一些实施例中,所述压缩命令还包括旁路标志,所述模板标识号和所述旁路标志均存储于所述压缩命令的特定字段,所述方法还包括:

根据所述压缩命令是否包括旁路标志,确定是否根据所述模板标识号,索引与所述模板标识号对应的命令模板。

在一些实施例中,所述压缩命令包括源数据区和保留区,其中,处理器不填写所述保留区。

第二方面,本申请实施例提供一种命令优化系统,用于执行如第一方面所述的命令的解压方法,所述系统包括:

模板管理模块,用于存储命令模板组,所述命令模板组包括多个命令模板;

接口模块,用于接收处理器发送的压缩命令;

解压缩模块,连接所述模板管理模块,所述解压缩模块包括:

命令解析单元,用于解析处理器发送的压缩命令,以确定对应的命令模板;

执行管理单元,用于执行所述命令模板中的操作指令,以生成解压缩命令。

第三方面,本申请实施例提供一种固态硬盘,包括:

闪存介质,用于存储闪存数据;

处理器,用于发送压缩命令;

如第二方面所述的命令优化系统。

第四方面,本申请实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使固态硬盘能够执行如上所述的命令的解压方法。

本申请实施例的有益效果是:区别于现有技术的情况下,本申请实施例提供的一种命令的解压方法,应用于固态硬盘,所述方法包括:获取处理器发送的压缩命令;根据所述压缩命令,确定所述压缩命令对应的命令模板;根据所述压缩命令以及命令模板,生成解压缩命令。通过确定压缩命令对应的命令模板,根据压缩命令以及命令模板,以生成解压缩命令,本申请能够减少处理器发送的命令的数据量,提高固态硬盘的处理效率。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是现有技术的硬件模块之间的通信的示意图;

图2是现有技术的命令的通信的示意图;

图3是本申请实施例提供的一种固态硬盘的结构示意图;

图4是本申请实施例提供的一种命令处理方式的示意图;

图5是本申请实施例提供的一种命令的示意图;

图6是现有技术中的CPU对命令的处理方式的示意图;

图7是本申请实施例提供的一种命令优化系统的结构示意图;

图8是本申请实施例提供的一种命令的解压方法的流程示意图;

图9是图8中的步骤S20的细化流程图;

图10是本申请实施例提供的一种压缩命令的示意图;

图11是本申请实施例提供的一种命令模板的示意图;

图12是图8中的步骤S30的细化流程图;

图13是本申请实施例提供的一种操作指令区的示意图;

图14是本申请实施例提供的一种解压缩的整体过程;

图15是本申请实施例提供的一种更新命令模板中的字段的示意图;

图16是本申请实施例提供的另一种更新命令模板中的字段的示意图;

图17是本申请实施例提供的一种命令的解压方法的整体流程示意图;

图18是本申请实施例提供的一种操作指令区的示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

此外,下面所描述的本申请各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

请参阅图1,图1是现有技术的硬件模块之间的通信的示意图;

如图1所示,CPU和各个硬件模块,例如:动态随机存储器控制器(DMAC,DDRController/PHY)、NVMe控制器、闪存控制器(FCH,Flash Controller/PHY)、数据处理模块(Data Processor)之间通过门铃(Doorbell)完成命令(Command)的交互,Doorbell可以设置于CPU和硬件模块之间、硬件模块和CPU之间或者CPU和CPU之间,且支持双向消息交互,同时均采用消息队列方式进行交互。

请再参阅图2,图2是现有技术的命令的通信的示意图;

如图2所示,CPU的操作硬件的命令(Command),都是通过DB(DoorBell)发送给硬件模块,而硬件模块完成命令的响应消息(Response)也是通过DB(DoorBell)返回给CPU。例如:CPU与NVMe模块,CPU与闪存控制器(NAND Flash Controller,FLC),都是通过DB(DoorBell)进行交互,当发送命令时,由CPU写Command到DB的提交队列(SubmissionQueue,SQ),NVMe模块和闪存控制器读DB的提交队列(Submission Queue,SQ)获取命令(Command);同样地,返回响应(Response)时,由NVMe模块和闪存控制器写Response到DB的完成队列(Complete Queue,CQ),CPU读DoorBell的CQ(Complete Queue)获取Response。

Doorbell的SQ/CQ都是指向一个memory buffer(或者FIFO)。SQ memory buffer大小为:total_sq_memory_size=command_size*command_count,这里Command一般意义称之为SQ Entry,那么Memory Buffer大小取决于SQ Entry大小和数量。SQ Entry的大小,取决于CPU操作要传递的命令的大小;

因此,命令(Command)的长度会影响交互的效率,进而影响系统的性能。

有鉴于此,本申请实施例提供一种命令的解压方法、系统及固态硬盘,以提高固态硬盘的处理效率。

下面结合说明书附图阐述本申请的技术方案。

请参阅图3,图3是本申请实施例提供的一种固态硬盘的结构示意图;

如图3所示,所述固态硬盘100包括闪存介质110以及与所述闪存介质110连接的固态硬盘控制器120。其中,所述固态硬盘100通过有线或无线的方式与所述主机200通信连接,用以实现数据交互。

闪存介质110,作为所述固态硬盘100的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质110得以成为各类便携型数字设备的存储介质的基础。

其中,闪存介质110可以为Nand FLASH,Nand FLASH以单晶体管作为二进制信号的存储单元,其结构与普通的半导体晶体管非常相似,区别在于Nand FLASH的单晶体管加入了浮动栅和控制栅,浮动栅用于贮存电子,表面被一层硅氧化物绝缘体所包覆,并通过电容与控制栅相耦合,当负电子在控制栅的作用下被注入到浮动栅中,Nand FLASH的单晶体的存储状态就由“1”变成了“0”,而当负电子从浮动栅中移走后,存储状态就由“0”变成了“1”,包覆在浮动栅表面的绝缘体用于将浮动栅中的负电子困住,实现数据存储。即Nand FLASH的存储单元为浮动栅晶体管,使用浮动栅晶体管以电荷的形式存储数据。存储电荷的多少与浮动栅晶体管所被施加的电压的大小有关。

一个Nand FLASH包括至少一个Chip芯片,每一个Chip芯片由若干个Block物理块组成,每一个Block物理块包括若干个Page页。其中,Block物理块是Nand FLASH执行擦除操作的最小单位,Page页为Nand FLASH执行读写操作的最小单位,一个Nand FLASH的容量等于其Block物理块的数量*一个Block物理块包含的Page页的数量*一个Page页的容量。具体的,闪存介质10按照存储单元的电压的不同层次,可分为SLC、MLC、TLC以及QLC。

固态硬盘控制器120,包括数据转换器121、处理器122、缓存器123、闪存控制器124以及接口125。

数据转换器121,分别与处理器122和闪存控制器124连接,所述数据转换器121用于将二进制数据转换为十六进制数据,以及将十六进制数据转换为二进制数据。具体地,当所述闪存控制器124向所述闪存介质110写入数据时,通过所述数据转换器121将待写入的二进制数据转换为十六进制数据,然后再写入闪存介质110。当所述闪存控制器124从所述闪存介质110读取数据时,通过所述数据转换器121将闪存介质110中存储的十六进制数据转换为二进制数据,然后从二进制数据页寄存器中读取转换后的数据。其中,所述数据转换器121可以包括二进制数据寄存器和十六进制数据寄存器。所述二进制数据寄存器可以用于保存由十六进制转换为二进制后的数据,所述十六进制数据寄存器可以用于保存由二进制转换为十六进制后的数据。

处理器122,分别与数据转换器121、缓存器123、闪存控制器124以及接口125连接,其中,处理器122与数据转换器121、缓存器123、闪存控制器124以及接口125可以通过总线或者其他方式连接,所述处理器用于运行存储在缓存器123中的非易失性软件程序、指令以及模块,从而实现本申请任一方法实施例。

缓存器123,主要用于缓存主机200发送的读/写指令以及根据主机200发送的读/写指令从闪存介质110获取的读数据或者写数据。缓存器123作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。缓存器123可以包括存储程序区,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,缓存器123可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,缓存器123可选包括相对于处理器124远程设置的存储器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。所述缓存器123可以为静态随机存取存储器(StaticRandom Access Memory,SRAM)或者耦合内存(Tightly Coupled Memory,TCM)或者双倍速率同步动态随机存储器(Double DataRate Synchronous Dynamic Random AccessMemory,DDR SRAM)。

闪存控制器124,与闪存介质110、数据转换器121、处理器122以及缓存器123连接,用于访问后端的闪存介质110,管理闪存介质110的各种参数和数据I/O;或者,用于提供访问的接口和协议,实现对应的SAS/SATA target协议端或者NVMe协议端,获取主机200发出的I/O指令并解码和生成内部私有数据结果等待执行;或者,用于负责FTL(Flashtranslation layer,闪存转换层)的核心处理。

接口125,连接主机200以及数据转换器121、处理器122以及缓存器123,用于接收主机200发送的数据,或者,接收所述处理器122发送的数据,实现主机200与处理器122之间的数据传输,所述接口125可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2NVME/SATA协议。

请再参阅图4,图4是本申请实施例提供的一种命令处理方式的示意图;

其中,图4的左半部分为现有技术的命令处理方式,图4的右半部分为本申请实施例提供的命令处理方式;

如图4所示,现有技术直接将操作所需的全部信息包含到一个命令Command中,使得每一个命令Command的大小固定。CPU和各个硬件通过Doorbell模块完成命令(Command)的交互,命令(Command)长度会影响交互的效率,进而影响系统的性能。现有技术的缺点是命令(Command)长度越来越长,有较多的冗余。

而本申请通过加入命令优化系统,使得CPU下发的命令不需要包含全部信息,通过对命令Command进行处理,生成解压缩命令,以提高固态硬盘的处理效率。

请再参阅图5,图5是本申请实施例提供的一种命令的示意图;

如图5所示,一条命令包括多个字段,例如:command0包括字段0-字段7,其中,命令(Command)中包含有冗余信息,例如:图中浅色的字段2、字段1、字段7、字段5以及字段4为冗余信息,可以理解的是,在不同命令(Command)之间,冗余信息可能是相同的,即部分字段存在重复,只有部分字段是命令(Command)特有的,例如:图中深色的字段3、字段0和字段6为命令特有的。

请再参阅图6,图6是现有技术中的CPU对命令的处理方式的示意图;

可以看出,现有技术中的CPU对命令的处理方式为填写全部的字段,由于长度固定,其中一部分字段并不是本次操作所需的,但仍然需要填写,那么不仅增加了CPU格式化时间,而且浪费了宝贵的内存资源。

而本申请通过减少处理器发送的命令的数据量,能够提高固态硬盘的处理效率。

具体的,请再参阅图7,图7是本申请实施例提供的一种命令优化系统的结构示意图;

其中,该命令优化系统应用于上述的固态硬盘,该命令优化系统与上述实施例中所述的处理器连接,用于接收处理器发送的压缩命令,并对压缩命令进行处理,以生成解压缩命令;

如图7所示,该命令优化系统70,包括:解压缩模块71、模板管理模块72以及接口模块73,其中,所述解压缩模块71包括命令解析单元711以及执行管理单元712;

具体的,所述命令解析单元711,连接所述执行管理单元712、所述模板管理模块72以及所述接口模块73,用于解析处理器发送的压缩命令,以确定对应的命令模板;其中,所述压缩命令包括模板标识号,所述命令解析单元711在获取到压缩命令之后,解析所述压缩命令,获取所述压缩命令中包含的模板标识号,根据所述模板标识号,从所述模板管理模块72中获取对应的命令模板。在本申请实施例中,所述命令解析单元711包括命令解析器。

具体的,所述执行管理单元712,连接所述命令解析单元711、模板管理模块72以及接口模块73,用于获取所述命令解析单元711解析得到的操作指令区,并根据所述操作指令区,确定所述操作指令区中包含的操作指令,并执行所述操作指令区中包含的操作指令,以得到解压缩命令。在本申请实施例中,所述执行管理单元包括执行管理器或微码解析器,用于将命令模板中的操作指令解析并执行所述操作指令。

可以理解的是,由于Command字段中有相同部分,本申请实施例将原来命令Command的各部分先分离,由硬件管理共用重复部分,而CPU只传递特别部分,最后由硬件合并组成一个完整的Command,再发到目的Doorbell的提交队列(Submission Queue,SQ)里面。通过采用硬件模块自动填写,而不是用CPU填写,可以减少CPU开销,且硬件填写的速度更快,有利于提高固态硬盘的处理效率。

具体的,所述模板管理模块72,用于预先建立命令模板组并存储命令模板组,所述模板组包括多个命令模板,每一命令模板一一对应一个模板标识号。可以理解的是,所述模板管理模块72包括存储单元,该存储单元用于存储命令模板组。在本申请实施例中,所述模板管理模块72包括模板管理器。

具体的,所述接口模块73,连接所述命令解析单元711、执行管理单元712以及模板管理模块72,用于接收处理器发送的压缩命令,并将所述压缩命令发送给所述命令解析单元711,以及,用于接收执行管理单元712发送的解压缩命令,并将所述解压缩命令发送到提交队列(Submission Queue,SQ)。在本申请实施例中,所述接口模块73包括硬件接口,所述硬件接口可以是SATA、PCIe、SAS等接口。

在本申请实施例中,通过提供一种命令优化系统,包括:模板管理模块,用于存储命令模板组,所述命令模板组包括多个命令模板;接口模块,用于接收处理器发送的压缩命令;解压缩模块,连接所述模板管理模块,所述解压缩模块包括:命令解析单元,用于解析处理器发送的压缩命令,以确定对应的命令模板;执行管理单元,用于执行所述命令模板中的操作指令,以生成解压缩命令。通过设置模板管理模块存储命令模板组,由命令解析单元解析处理器发送的压缩命令,获取命令模板组中对应的命令模板,再由执行管理单元执行命令模板中的操作指令,以生成解压缩命令,本申请能够减少处理器发送的命令的数据量,提高固态硬盘的处理效率。

请再参阅图8,图8是本申请实施例提供的一种命令的解压方法的流程示意图;

其中,该命令的解压方法,应用于上述实施例提供的命令优化系统。本申请中的命令的解压方法是基于Doorbell技术,对Doorbell技术中的SQCommand进行优化(压缩->解压缩扩展)。

如图8所示,该命令的解压方法,包括:

步骤S10:获取处理器发送的压缩命令;

具体的,命令优化系统的接口模块接收处理器发送的压缩命令,并将压缩命令发送给命令解析单元,其中,所述压缩命令包括源数据区和保留区,所述源数据区用于存储该压缩命令的特定字段,所述保留区不填充字段,即,处理器不填写所述保留区,从而使得处理器填充的数据只有该压缩命令的特定字段,大大减少了处理器的格式化时间,同时还可以节约内存资源。

如图5所示,命令command_0中只有字段3、字段0以及字段6属于该命令的特征字段。

步骤S20:根据所述压缩命令,确定所述压缩命令对应的命令模板;

具体的,命令优化系统的模板管理模块存储有命令模板组,所述命令模板组包括多个命令模板,所述命令解析单元解析所述压缩命令,获取所述压缩命令中包含的模板标识号,根据所述模板标识号,从所述模板管理模块中获取对应的命令模板。

具体的,在获取处理器发送的压缩命令之前,所述方法还包括:

预先建立命令模板组,所述模板组包括多个命令模板,每一命令模板一一对应一个模板标识号。

请再参阅图9,图9是图8中的步骤S20的细化流程图;

如图9所示,该步骤S20:根据所述压缩命令,确定所述压缩命令对应的命令模板,包括:

步骤S21:获取所述压缩命令包含的模板标识号;

具体的,所述压缩命令包括多个字段,可以理解的是,所述模板标识号存储于所述压缩命令中的特定字段,例如:字段0。

请再参阅图10,图10是本申请实施例提供的一种压缩命令的示意图;

如图10所示,该压缩命令(compressedcommand)包括多个字段,例如:字段0,字段1,字段2,字段3,字段4,…,字段m;其中,模板标识号(TemplateID)存储于字段0,其中,字段0为所述压缩命令中的特定字段。

步骤S22:根据所述模板标识号,基于所述命令模板组,确定所述压缩命令对应的命令模板。

具体的,命令解析单元根据所述模板标识号,从所述模板管理模块存储的命令模板组中索引得到所述模板标识号对应的命令模板,并确定为所述压缩命令对应的命令模板。

在本申请实施例中,所述压缩命令还包括旁路标志,所述模板标识号和所述旁路标志均存储于所述压缩命令的特定字段,所述方法还包括:

根据所述压缩命令是否包括旁路标志,确定是否根据所述模板标识号,索引与所述模板标识号对应的命令模板。

具体的,所述旁路标志(Bypass)用于确定是否需要启动解压缩流程,若压缩命令中的字段不包括旁路标志(Bypass),表征该压缩命令为压缩之后的命令,此时需要启用命令模板,即进行解压缩操作,包括:根据所述压缩命令的字段中包含的模板标识号,从命令模板组中索引与所述模板标识号对应的命令模板;若压缩命令中的字段包括旁路标志,则表征该压缩命令为最终的命令,相当于解压缩之后的命令,此时不需要启用模板,即不需要解压缩操作,即不需要根据所述模板标识号,索引与所述模板标识号对应的命令模板。

步骤S30:根据所述压缩命令以及命令模板,生成解压缩命令。

具体的,每一命令模板包括默认数据区以及操作指令区,其中,所述默认数据区用于存储默认数据(InstructData),所述操作指令区用于存储操作指令(DefaultData);

在本申请实施例中,所述压缩命令与所述命令模板的占用的空间大小可以相同,也可以不同,其没有固定关系,视具体情况而定。

可以理解的是,为了方便硬件存取,防止不同的压缩命令(compressed command)之间的数据大小不一致,仍需要保持完整Command大小的空间,即解压缩后的命令的空间,因此,在使用时让压缩命令(compressed command)和解压缩命令(decompressed command)所占用的空间大小相同。但压缩命令(compressed command)中多余不使用的空间作为保留区,处理器不会去填写保留区,从而减少CPU开销,且由于填写的内容变少,使得硬件填写的速度更快,有利于提高固态硬盘的处理效率。

请再参阅图11,图11是本申请实施例提供的一种命令模板的示意图;

如图11所示,每一命令模板均包括操作指令区和默认数据区,操作指令区用于存储操作指令(Default Data),默认数据区用于存储默认数据(Instruct Data)。

具体的,请再参阅图12,图12是图8中的步骤S30的细化流程图;

如图12所示,该步骤S30:根据所述压缩命令以及命令模板,生成解压缩命令,包括:

步骤S31:根据所述操作指令区,获取操作指令区包含的操作指令,其中,所述操作指令区包括至少一条操作指令;

具体的,请再参阅图13,图13是本申请实施例提供的一种操作指令区的示意图;

如图13所示,该操作指令区包括多条操作指令,例如:操作指令0、操作指令1,…,操作指令n;其中,每一操作指令由操作码(op_code)、目标位置(dest_pos)、源位置(src_pos)以及操作数据的长度(length)组成,其中,操作码(op_code)用于定义指令的操作,目标位置(dest_pos)用于指向解压缩命令的字段位置,源位置(src_pos)用于指向处理器写入的压缩命令里的字段位置,操作数据的长度(length)用于定义操作数据的长度。

在本申请实施例中,操作码(op_code)可以根据实际应用进行定制,例如:常见的操作码包括:

copy:数据复制,用于将compressedcommand的src_pos开始的length长度的数据复制到decompressed command的dest_pos处;

clz:数据清零,用于将decompressed command的dest_pos开始的length长度数据清零;

set:数据置一,用于将decompressed command的dest_pos开始的length长度数据置一;

or:或操作,用于将compressed commandsrc_pos开始length长度的数据与模板dest_pos开始的length长度数据做或运算,并将操作结果写到decompressed command的dest_pos;

and:与运算,用于将compressed commandsrc_pos开始length长度的数据与decompressed command的dest_pos开始的length长度数据做与运算,并将操作结果写到decompressed command的dest_pos;

inc:自加一操作,用于将模板src_pos开始length长度的数据加一后写入decompressd command的dest_pos处;

dec:自减一操作,用于将模板src_pos开始length长度的数据减一后写入decompressd command的dest_pos处;

end:结束指令,用于告知解压缩模块(decoder)解压缩操作结束。

步骤S32:执行所述操作指令区包含的操作指令,以更新所述默认数据区;

具体的,执行管理单元执行所述操作指令区中的操作指令,以更新所述默认数据区中的字段信息,相当于执行管理单元对所述命令模板中的默认数据区的字段进行调整,以更新所述命令模板中的默认数据区中的字段,生成更新后的默认数据区。

在本申请实施例中,压缩命令的解压缩是通过定义操作指令来完成的,而操作指令区中的操作指令可以动态调整,因此,其具有用户可定义,灵活性好的特点,并且,解压缩通过专用硬件实现(比CPU通用指令解压缩要快),因此,可以明显降低处理时间。同时解压缩的时候CPU可以做其他事情,有利于提高系统并发度。

步骤S33:将更新后的默认数据区的字段作为所述解压缩命令的字段,以生成解压缩命令。

具体的,将更新后的默认数据区的字段作为所述解压缩命令的字段,使得所述命令模板更新为解压缩命令。

在本申请实施例中,通过提供一种命令的解压方法,应用于固态硬盘,所述方法包括:获取处理器发送的压缩命令;根据所述压缩命令,确定所述压缩命令对应的命令模板;根据所述压缩命令以及命令模板,生成解压缩命令。通过确定压缩命令对应的命令模板,根据压缩命令以及命令模板,以生成解压缩命令,本申请能够减少处理器发送的命令的数据量,提高固态硬盘的处理效率。

下面结合实例具体说明命令优化的过程:

请再参阅图14,图14是本申请实施例提供的一种解压缩的整体过程;

如图14所示,通过压缩命令(Compressedcommand)中的模板标识号,索引到命令模板组中的命令模板,由解压缩器(decoder)执行命令模板中的操作指令,更新默认数据(Default_data)中的字段,以生成解压缩命令(Decompressedcommand)。

请再参阅图15,图15是本申请实施例提供的一种更新命令模板中的字段的示意图;

如图15所示,处理器(CPU)仅填写字段0,3,6,即压缩命令中的特定字段为字段0,3,6,通过解压缩器(Decoder)进行消息数据更新(扩展),获取命令模板(Template),根据操作指令和源数据(compressedCommand中的字段0,3,6)扩展、替换等操作,更新命令模板中原来的字段0,3,6,相当于通过合并形成完整的字段,从而生成解压缩命令,其中,解压缩命令包括字段0-8。

可以理解的是,通过对压缩命令(compressed command)里面的模板标识号(template ID)进行设置即可指定相应的命令模板(command模板)。如果解压缩命令(Decompressed command)有N个字段,那么压缩命令(compressed command)里的字段个数要远小于N,原因在于:

第一、有些不需要改动的字段直接使用template里面的默认值,不需要在compressed command里面填充,在实际使用中,很多字段都不需要设置,使用默认值即可;

第二、解压缩命令(Decompressed command)里有些数据是32bit或64bit,实际上这些数据有效位只有几个bit,在压缩命令(compressed command)里只需写入有效的几个bit数据,由操作指令进行长度扩展即可,即通过常见操作码可以将这些数据一一纳入。

请再参阅图16,图16是本申请实施例提供的另一种更新命令模板中的字段的示意图;

如图16所示,通过运行命令模板中的操作指令,根据操作指令来更新默认数据区的数据,从而更新压缩命令以生成解压缩命令。可以理解的是,命令模板中的默认数据区本身就是一个完整未压缩的命令(Command),通过指令区的操作指令对默认数据区进行更新,从而更新得到解压缩命令。

请参阅图17,图17是本申请实施例提供的一种命令的解压方法的整体流程示意图;

如图17所示,该命令的解压方法,包括:

开始;

步骤S171:解析压缩命令;

具体的,获取处理器发送的压缩命令,解析所述压缩命令,获取所述压缩命令中包含的字段。

步骤S172:压缩命令是否包括旁路标志;

具体的,判断所述压缩命令中的字段是否包含旁路标志(Bypass),若否,则进入步骤S173:根据模板标识号,获取命令模板;若是,则结束;

在本申请实施例中,所述旁路标志用于确定是否需要启动解压缩流程,若压缩命令中的字段不包括旁路标志(Bypass),表征该压缩命令为压缩之后的命令,此时需要启用命令模板,即进行解压缩操作;若压缩命令中的字段包括旁路标志,则表征该压缩命令为最终的命令,相当于解压缩之后的命令,此时不需要启用模板,即不需要解压缩操作。

步骤S173:根据模板标识号,获取命令模板;

具体的,根据模板标识号,从预先建立的命令模板组中获取对应的命令模板。

步骤S174:将命令模板中的默认数据复制到缓冲区;

具体的,将命令模板中的默认数据区的数据复制到缓冲区,其中,所述缓冲区为解压缩器的高速缓存区(decompressmemorybuffer),由于将默认数据区的数据复制到缓冲区,该缓冲区为高速缓存区,因此,能够提高获取数据的速度,提高固态硬盘的处理效率。

步骤S175:获取命令模板中的操作命令区的下一条操作指令;

具体的,从命令模板的操作命令区获取操作指令;

步骤S176:是否为结束指令;

具体的,若操作指令为结束指令,则结束;若操作指令不为结束指令,则进入步骤S175:获取命令模板中的操作命令区的下一条操作指令;

步骤S177:执行操作指令;

具体的,顺序执行所述操作指令区包含的操作指令,直至当前执行的操作指令为结束指令。

请再参阅图18,图18是本申请实施例提供的一种操作指令区的示意图;

如图18所示,操作指令区包括四条操作指令,解压缩器通过顺序执行所述操作指令区包含的操作指令,直至当前执行的操作指令为结束指令,具体的,执行过程如下:

第一条操作指令:copy,将compressed command的第3byte开始数据复制到decompress command第1byte处,长度为2bytes;

第二条操作指令:set,将decompress command的5byte开始往后的4byte置一;

第三操作指令:inc,将decompress command的第4byte自加一;

第四操作指令:end,结束指令,decode解压完成;

结束;

在本申请实施例中,通过压缩命令,使得处理器下发SQ command的数据量变少,能用更短的时间将同样数量的command发送出去,提高固态硬盘的效率;并且,通过增加命令模板组,减少共用信息的重复填写,以及满足生成不同信息的需求,同时,通过命令解析器来解析压缩命令(Compressed-Command),从而还原压缩命令得到解压缩命令,发送给门铃(Doorbell);由于支持指令操作,即命令模板不仅含有默认数据,而且含有操作指令,具有Copy(拷贝)、XOR(异或)、INC(递增)、DEC(递减)等指令功能,强化模板生成命令的能力,提高固态硬盘的处理能力。

本申请实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,可使得上述一个或多个处理器可执行上述任意方法实施例中的命令的解压方法,例如,执行上述任意方法实施例中的命令的解压方法,例如,执行上述实施例描述的命令的解压方法的各个步骤。

以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

相关技术
  • 一种命令的解压方法、系统及固态硬盘
  • 一种固态硬盘启用TRIM命令后的数据恢复方法
技术分类

06120113048031