一种硬件加速器转让专利

申请号 : CN201911060807.3

文献号 : CN112764669B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈博

申请人 : 北京忆芯科技有限公司

摘要 :

本申请提供了硬件加速器,包括命令管理器、读写处理器和缓冲存储器,其中,读写处理器根据第一信息获取数据索引,以及,指示数据搬移单元获取与第一命令对应的读/写数据,其中,第一信息为CPU组从第一命令中获取的,第一信息包括数据索引或用于获取数据索引的信息,若第一命令为读命令,读/写数据包括数据搬移单元从动态随机存取存储器DRAM中获取的第一数据,缓冲存储器缓存数据索引。通过命令管理器、读写处理器和缓冲存储器分别实现CPU的部分功能,减少读写操作过程中占用的CPU资源,从而实现对读写操作的加速。

权利要求 :

1.一种硬件加速器,其特征在于,包括:命令管理器、读写处理器、缓冲存储器,其中,所述命令管理器判断从主机获取的读命令或写命令是否符合主机与存储设备之间的协议,以及向CPU组发送符合所述协议的第一命令,所述第一命令为读命令或写命令,所述CPU组包括至少一个CPU;

所述读写处理器根据第一信息获取数据索引,以及,指示数据搬移单元获取与所述第一命令对应的读/写数据,其中,所述第一信息为所述CPU组从所述第一命令中获取的,所述第一信息包括所述数据索引或用于获取所述数据索引的信息,若所述第一命令为读命令,所述读/写数据包括所述数据搬移单元从动态随机存取存储器DRAM中获取的第一数据;

所述缓冲存储器缓存所述数据索引。

2.如权利要求1所述的硬件加速器,其特征在于,若所述第一命令为写命令,所述读/写数据包括所述数据搬移单元按照所述数据索引从主机中获取的第二数据。

3.如权利要求1或2所述的硬件加速器,其特征在于,所述读写处理器接收介质接口控制器发送的标签信息,所述标签信息用于表征所述介质接口控制器将所述第一数据从NVM中读取到所述DRAM已完成,所述标签信息包括与所述第一命令对应的标识信息;

所述读写处理器指示所述数据搬移单元根据所述标识信息从所述DRAM中获取所述第一数据,并根据所述数据索引向主机发送所述第一数据。

4.如权利要求3所述的硬件加速器,其特征在于,所述标签信息为所述介质接口控制器在所述第一数据存储到所述DRAM之后,向所述读写处理器反馈的。

5.如权利要求3所述的硬件加速器,其特征在于,若所述第一命令为读命令,所述读写处理器记录所述第一数据的数据长度,其中,所述第一数据的数据长度为所述读写处理器根据所述第一信息获取的;

响应于所述标签信息,所述读写处理器根据所述标签信息记录为所述第一命令已向所述主机发送的数据的长度;

所述读写处理器响应于所述第一命令要读取的数据的长度等于为所述第一命令已向所述主机发送的数据的长度,而向所述主机发送用于表征读命令处理完成的状态信息。

6.如权利要求3所述的硬件加速器,其特征在于,若所述第一命令为读命令,所述读写处理器记录所述第一命令要读取的数据长度;

所述读写处理器响应于收到所述标签信息,根据所述标签信息记录为所述第一命令已读取到所述DRAM的数据的长度;

所述读写处理器响应于所述第一命令要读取的数据的长度等于为所述第一命令已读取到所述DRAM的数据的长度,而指示所述数据搬移单元根据所述标识信息从所述DRAM中获取为所述第一命令已读取的数据,并向主机发送用于表征读命令处理完成的状态信息。

7.如权利要求2所述的硬件加速器,其特征在于,若所述第一命令为写命令,所述读写处理器在所述缓冲存储器获取到所述数据索引之后,指示所述数据搬移单元从与所述数据索引对应的主机地址中获取所述第二数据,并向介质接口控制器发送所述第二数据。

8.如权利要求7 所述的硬件加速器,其特征在于,所述读写处理器为所述第二数据分配所述DRAM的存储空间,并向所述介质接口控制器指示所分配的存储空间,以控制NVM存储所述第二数据。

9.如权利要求2 所述的硬件加速器,其特征在于,所述硬件加速器还包括至少两个缓存单元,在所述数据搬移单元从主机获取第二数据或向主机发送第一数据的过程中,所述至少两个缓存单元采用乒乓方式缓存第一数据或第二数据。

10.如权利要求7 所述的硬件加速器,其特征在于,所述读写处理器响应于所述第二数据传输到所述介质接口控制器,向所述主机发送用于表征写命令处理完成的状态信息。

说明书 :

一种硬件加速器

技术领域

[0001] 本申请涉及存储技术,特别地,涉及用于存储设备的控制部件的硬件加速器。

背景技术

[0002] 图1A展示了固态存储设备的框图。固态存储设备100同主机相耦合,用于为主机提供存储能力。主机同固态存储设备100之间可通过多种方式相耦合,耦合方式包括但不限于
通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI
(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached 
SCSI,串行连接SCSI)、IDE (Integrated Drive Electronics,集成驱动器电子)、USB
(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect 
Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通
道、无线通信网络等连接主机与固态存储设备100。主机可以是能够通过上述方式同存储设
备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换
机、路由器、蜂窝电话、个人数字助理等。存储设备100包括接口120、控制部件140、一个或多
个NVM芯片 130以及DRAM(Dynamic Random Access Memory,动态随机访问存储器) 110。
[0003] NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、 MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive Random Access 
Memory,阻变存储器)、XPoint存储器等是常见的NVM。
[0004] 接口120可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
[0005] 控制部件140用于控制在接口120、NVM芯片130以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件140可
通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件140可以是FPGA(Field‑
programmable gate array,现场可编程门阵列)、ASIC(Application Specific 
Integrated Circuit,应用专用集成电路)或者其组合的形式。控制部件140也可以包括处
理器或者控制器,在处理器或控制器中执行软件来操纵控制部件140的硬件来处理IO 
(Input/Output)命令。控制部件140还可以耦合到DRAM 110,并可访问 DRAM 110的数据。在
DRAM可存储FTL表和/或缓存的IO命令的数据。
[0006] 控制部件140包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片130,并以遵循NVM芯片130 的接口协议的方式向NVM芯片130
发出命令,以操作NVM芯片130,并接收从NVM芯片130输出的命令执行结果。已知的NVM芯片
接口协议包括“Toggle”、“ONFI”等。
[0007] 在中国专利申请CN201610009789.6与CN201510053428.1中提供了用于闪存接口控制器的微指令执行方法与装置,中国专利申请CN 201610861793.5提供了微指令序列的
调度方法与装置,中国专利申请CN 201611213754.0提供了IO命令处理方法与固态存储设
备,中国专利申请CN 201611213755.5提供了大容量NVM接口控制器,将其全文合并于此。
[0008] 在公开号为CN107783917A的中国专利申请中,提供了通过执行微指令在NVM芯片的控制管脚上产生控制信号,生成操作NVM芯片的命令,使单一闪存控制器兼容不同厂商、
不同规模的NVM芯片。将其全文合并于此。
[0009] 在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设
备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中
还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址
进一步映射为物理地址。这些情况下,存储设备所接收的读/写命令指示逻辑地址。
[0010] 存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL 表是固态存储设备中的重要元数据。通常FTL表的条目记录了存储设备中以数据页为单位的地址映
射关系。
[0011] 一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的CPU执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供
FTL。这些情况下,存储设备所接收的读/写命令指示物理地址。
[0012] 主机提供给存储设备的命令可能访问FTL表的一个或多个条目所对应的逻辑地址空间。以及控制部件可能将从接口120接收的命令改变形态(例如,根据FTL条目所对应的逻
辑地址空间大小切分命令),并处理改变形态的命令。为了清楚的目的,在本文中,以存储设
备接收的读/写命令访问单一FTL 条目为例来描述。
[0013] 诸如NAND闪存的NVM芯片是不可靠存储介质,其中存储的数据会存在错误比特。为识别与校正错误比特,对向NVM芯片写入的数据实施ECC  (错误校验码,
ErrorCorrectionCode)编码,并将编码得到的校验数据同数据一同写入NVM芯片。在从NVM
芯片读出数据时,对读出的数据(连同校验数据)实施ECC解码以得到正确的数据。当数据中
的错误比特较多,实施ECC解码无法得到正确的数据。可选地,存储设备的控制部件还采取
其他一些数据校正的措施(例如,重读(Read‑Retry),RAID数据重建等)以尝试恢复正确的
数据。依然存在一些情况,采用了多种或所有数据校验措施依然无法得到正确的数据,将这
种情况称为发生了UECC(不可纠正错误, uncorrectable error correction code)。

发明内容

[0014] 根据本申请的第一方面,提供了根据本申请的第一方面的第一硬件加速器,包括:命令管理器、读写处理器、缓冲存储器,其中,所述命令管理器判断从主机获取的读命令或
写命令是否符合主机与存储设备之间的协议,以及向 CPU组发送符合所述协议的第一命
令,所述第一命令为读命令或写命令,所述CPU组包括至少一个CPU;所述读写处理器根据第
一信息获取数据索引,以及,指示数据搬移单元获取与所述第一命令对应的读/写数据,其
中,所述第一信息为所述CPU组从所述第一命令中获取的,所述第一信息包括所述数据索引
或用于获取所述数据索引的信息,若所述第一命令为读命令,所述读/ 写数据包括所述数
据搬移单元从动态随机存取存储器DRAM中获取的第一数据;所述缓冲存储器缓存所述数据
索引。
[0015] 根据本申请的第一方面的第一硬件加速器,提供了根据本申请的第一方面的第二硬件加速器,若所述第一命令为写命令,所述读/写数据包括所述数据搬移单元按照所述数
据索引从主机中获取的第二数据。
[0016] 根据本申请的第一方面的第一或第二硬件加速器,提供了根据本申请的第一方面的第三硬件加速器,所述读写处理器接收介质接口控制器发送的标签信息,所述标签信息
用于表征所述介质接口控制器将所述第一数据从NVM 中读取到所述DRAM已完成,所述标签
信息包括与所述第一命令对应的标识信息;所述读写处理器指示所述数据搬移单元根据所
述标识信息从所述 DRAM中获取所述第一数据、并根据所述数据索引向主机发送所述第一
数据。
[0017] 根据本申请的第一方面的第三硬件加速器,提供了根据本申请的第一方面的第四硬件加速器,所述标签信息为所述介质接口控制器在所述第一数据存储到所述DRAM之后,
向所述读写处理器反馈的。
[0018] 根据本申请的第一方面的第三硬件加速器,提供了根据本申请的第一方面的第五硬件加速器,若所述第一命令为读命令,所述读写处理器记录所述第一数据的数据长度,其
中,所述第一数据的数据长度为所述读写处理器根据所述第一信息获取的;响应于所述标
签信息,所述读写处理器根据所述标签信息记录为所述第一命令已向所述主机发送的数据
的长度;所述读写处理器响应于所述第一命令要读取的数据的长度等于为所述第一命令已
向所述主机发送的数据的长度,而向所述主机发送用于表征读命令处理完成的状态信息。
[0019] 根据本申请的第一方面的第三硬件加速器,提供了根据本申请的第一方面的第六硬件加速器,若所述第一命令为读命令,所述读写处理器记录所述第一命令要读取的数据
长度;所述读写处理器响应于收到所述标签信息,根据所述标签信息记录为所述第一命令
已读取到所述DRAM的数据的长度;所述读写处理器响应于所述第一命令要读取的数据的长
度等于为所述第一命令已读取到所述DRAM的数据的长度,而指示所述数据搬移单元根据所
述标识信息从所述DRAM中获取为所述第一命令已读取的数据,并向主机发送用于表征读命
令处理完成的状态信息。
[0020] 根据本申请的第一方面的第二硬件加速器,提供了根据本申请的第一方面的第七硬件加速器,若所述第一命令为写命令,所述读写处理器在所述缓冲存储器获取到所述数
据索引之后,指示所述数据搬移单元从与所述数据索引对应的主机地址中获取所述第二数
据,并向介质接口控制器发送所述第二数据。
[0021] 根据本申请的第一方面的第五硬件加速器,提供了根据本申请的第一方面的第八硬件加速器,所述读写处理器为所述第二数据分配所述DRAM的存储空间,并向所述介质接
口控制器指示所分配的存储空间,以控制所述NVM 存储所述第二数据。
[0022] 根据本申请的第一方面的第二至第八硬件加速器之一,提供了根据本申请的第一方面的第九硬件加速器,所述硬件加速器还包括至少两个缓存单元,在所述数据搬移单元
从主机获取第二数据或向主机发送第一数据时的过程中,所述至少两个缓存单元采用乒乓
方式缓存第一数据或第二数据。
[0023] 根据本申请的第一方面的第二至第九硬件加速器之一,提供了根据本申请的第一方面的第十硬件加速器,所述读写处理器响应于所述第二数据传输到所述介质接口控制
器,向所述主机发送用于表征写命令处理完成的状态信息。
[0024] 根据本申请的第一方面的第一至第十硬件加速器之一,提供了根据本申请的第一方面的第十一硬件加速器,所述硬件加速器还包括安全单元,所述安全单元对缓存单元中
的第一数据解密或者对缓存单元中的第二数据加密。
[0025] 根据本申请的第一方面的第一至第十一硬件加速器之一,提供了根据本申请的第一方面的第十二硬件加速器,在判断从主机获取的读命令或写命令是否符合所述协议之
前,所述命令管理器获取所述主机发送的第二命令,所述第二命令为读命令、写命令或除读
命令和写命令之外的其它命令;判断所述第二命令是否为读命令或写命令。
[0026] 根据本申请的第一方面的第一至第十二硬件加速器之一,提供了根据本申请的第一方面的第十三硬件加速器,若判断所述第二命令不是读命令或写命令,所述命令管理器
向所述主机发送指示命令错误的响应信息。
[0027] 根据本申请的第二方面,提供了根据本申请的第二方面的第一控制部件,包括:NVMe控制器、CPU组、介质接口控制器和硬件加速器,所述硬件加速器与所述NVMe控制器、所
述CPU组以及所述介质接口控制器耦合,所述CPU组与所述介质接口控制器耦合;其中,所述
硬件加速器从所述NVMe 控制器中获取读命令或写命令,所述硬件加速器向所述CPU组发送
符合主机与存储设备之间的协议的第一命令,所述第一命令为读命令或写命令;所述CPU组
从所述第一命令中获取第一信息,并向所述硬件加速器指示所述第一信息,所述第一信息
包括数据索引或用于获取所述数据索引的信息,所述数据索引用于获取第一数据或第二数
据;所述介质接口控制器根据所述硬件加速器的指示,从NVM芯片中读取出所述第一数据或
将所述第二数据写入所述NVM芯片,所述硬件加速器的指示为所述硬件加速器根据所述第
一信息做出的。
[0028] 根据本申请第二方面的第一控制部件,提供了根据本申请的第二方面的第二控制部件,所述NVMe控制器接收主机发送的读命令或写命令,并向所述硬件加速器发送从主机
接收到的命令或者发送指示信息,所述指示信息用于指示所述硬件加速器从所述NVMe控制
器中抓取读命令或写命令。
[0029] 根据本申请第二方面的第一或第二控制部件,提供了根据本申请的第二方面的第三控制部件,在所述第一命令为读命令时,所述介质接口控制器根据所述硬件加速器的指
示,从所述NVM芯片中读取出所述第一数据,并将所述第一数据存储至与所述控制部件耦合
的DRAM。
[0030] 根据本申请第二方面的第一或第二控制部件,提供了根据本申请的第二方面的第四控制部件,在所述第一命令为写命令时,所述介质接口控制器根据所述硬件加速器的指
示,从与所述控制部件耦合的DRAM中读取出所述第二数据,并将所述第二数据写入所述NVM
芯片。
[0031] 根据本申请第二方面的第三控制部件,提供了根据本申请的第二方面的第五控制部件,所述硬件加速器根据所述介质接口控制器反馈的标签信息,指示所述NVMe控制器将
所述第一数据从所述DRAM中搬移到主机。
[0032] 根据本申请第二方面的第四控制部件,提供了根据本申请的第二方面的第六控制部件,所述硬件加速器还根据所述第一信息,指示所述NVMe控制器将所述第二数据从所述
主机搬运至所述DRAM。
[0033] 根据本申请第二方面的第六控制部件,提供了根据本申请的第二方面的第七控制部件,所述硬件加速器为所述第二数据分配所述DRAM中的存储空间,并向所述NVMe控制器
和所述介质接口控制器指示所述存储空间。
[0034] 根据本申请第二方面的第一至第七控制部件之一,提供了根据本申请的第二方面的第八控制部件,所述CPU组接收到读命令之后,获取所述第一数据所在逻辑地址,并根据
所述逻辑地址访问闪存转换层,以获取与所述逻辑地址对应的物理地址;所述CPU组向所述
介质接口控制器指示所述物理地址,以使所述介质接口控制器根据所述物理地址从所述
NVM芯片中读取出所述第一数据。
[0035] 根据本申请第二方面的第一至第八控制部件之一,提供了根据本申请的第二方面的第九控制部件,所述介质接口控制器接收所述CPU组提供的第二信息,第二信息指示从所
述NVM芯片的物理地址读出所述第一数据;以及
[0036] 所述介质接口控制器响应于将从所述NVM芯片中读取的所述第一数据已存储到所述DRAM,而向所述硬件加速器提供所述标签信息。
[0037] 根据本申请第二方面的第九控制部件,提供了根据本申请的第二方面的第十控制部件,所述第二信息还携带所述DRAM中用于存储所述第一数据的存储空间的指示信息。
[0038] 根据本申请第二方面的第一至第八控制部件之一,提供了根据本申请的第二方面的第十一控制部件,所述介质接口控制器向CPU组发送第二标签信息,所述第二标签信息用
于表征所述介质接口控制器接收所述第二数据已完成,所述第二标签信息包括与写命令对
应的标识信息;所述介质接口控制器接收所述CPU组提供的第三信息,所述第三信息指示将
所述第二数据写入所述 NVM芯片的物理地址;以及所述介质接口控制器向所述CPU组提供
第四信息,所述第四信息指示所述第二数据已被写入所述NVM芯片。
[0039] 根据本申请第二方面的第十一控制部件,提供了根据本申请的第二方面的第十二控制部件,若所述第一命令为写命令,所述CPU组记录所述第一命令要写入的数据长度;所
述CPU组响应于收到所述介质接口控制器提供的所述第四信息,根据所述第四信息记录为
所述第一命令已写入所述NVM芯片的数据的长度;所述CPU响应于所述第一命令要写入的数
据的长度等于为所述第一命令已写入所述NVM芯片的长度,而获知所述第一命令已处理完
成。
[0040] 根据本申请第二方面的第一至第十二控制部件之一,提供了根据本申请的第二方面的第十三控制部件,在传输所述第一数据或所述第二数据时,所述硬件加速器对所述第
一数据解密或者对所述第二数据加密。
[0041] 根据本申请第二方面的第一至第十三控制部件之一,提供了根据本申请的第二方面的第十四控制部件,所述硬件加速器记录所述第一数据的数据长度,其中,所述第一数据
的数据长度为所述硬件加速器根据所述第一信息获取的;响应于所述标签信息,所述硬件
加速器根据所述标签信息记录为所述第一命令已向所述主机发送的数据的长度;所述硬件
加速器响应于所述第一命令要读取的数据的长度等于为所述第一命令已向所述主机发送
的数据的长度,而向所述主机发送用于表征读命令处理完成的状态信息。
[0042] 根据本申请第二方面的第一至第十四控制部件之一,提供了根据本申请的第二方面的第十五控制部件,若所述第一命令为读命令,所述硬件加速器记录所述第一命令要读
取的数据长度;所述硬件加速器响应于收到所述标签信息,根据所述标签信息记录为所述
第一命令已存储到所述DRAM的数据的长度。
[0043] 根据本申请第二方面的第十五控制部件,提供了根据本申请的第二方面的第十六控制部件,所述硬件加速器响应于所述第一命令要读取的数据的长度等于为所述第一命令
已存储到所述DRAM的数据的长度,而指示所述NVMe 控制器根据所述标识信息从所述DRAM
中获取为所述第一命令已读取的数据。
[0044] 根据本申请第二方面的第十五控制部件,提供了根据本申请的第二方面的第十七控制部件,所述硬件加速器响应于所述第一命令要读取的数据的部分或全部已存储到所述
DRAM,而指示所述NVMe控制器根据所述标识信息从所述DRAM中获取为所述第一命令已读取
的数据。
[0045] 根据本申请第二方面的第十六或第十七控制部件,提供了根据本申请的第二方面的第十八控制部件,响应于所述第一命令要读取的数据已全部发送给主机,指示所述NVMe
控制器向主机发送用于表征读命令处理完成的状态信息。
[0046] 根据本申请第二方面的第一至第十八控制部件之一,提供了根据本申请的第二方面的第十九控制部件,其中所述硬件加速器是根据本申请第一方面的第一至第十三硬件加
速器之一。

附图说明

[0047] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他
的附图。
[0048] 图1A为现有技术中的存储设备的框图;
[0049] 图1B为现有技术中的控制部件的结构示意图;
[0050] 图2为本申请实施例提供的控制部件的一种结构示意图;
[0051] 图3为本申请实施例提供的硬件加速器的一种结构示意图;
[0052] 图4为本申请实施例提供的控制部件的有一种结构示意图。

具体实施方式

[0053] 下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请
中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都
属于本申请保护的范围。
[0054] 重复地使用短语“在各种实施例中”、“在一些实施例中”等。这些短语通常不指代相同的实施例;然而,这些短语可能指代相同的实施例。除非上下文另有规定,否则术语“包
含”、“具有”和“包括”是同义的。短语“A和/或B”表示(A)、(B)或(A和B)。短语“A/B”和“A或B”
表示(A)或(B)。短语“A和B中的至少一个”表示(A)、(B)或(A 和B)。
[0055] 图1B示例性的给出了现有技术中的控制部件140的一种可能的结构。如图1B所示,控制部件140包括NVMe控制器141、CPU组142和介质接口控制器143。NVMe控制器141分别与
CPU组142和图1A中的接口120 耦合。例如,NVMe控制器141从接口120接收主机发送第一读
命令。NVMe 控制器141与CPU组142耦合。例如,NVMe控制器141将接收到第一写命令,转换为
适用于CPU处理的数据格式的第二写命令,并向CPU组142发送第二写命令。CPU组142与介质
接口控制器143耦合。例如,CPU组142 接收到第二写命令,根据第二写命令操作介质接口控
制器143向闪存芯片写入数据。
[0056] 继续参见图1A和图1B,主机向存储设备100发送读命令或写命令后,由CPU组142访问FTL以得到适当的用于闪存芯片的物理地址,并由CPU 组操作介质接口控制器143 进行
读操作或者写操作,但CPU组142操作介质接口控制器143需要较多的操作,并增加了CPU组
142的负荷,影响处理速度。
[0057] 图2中给出了本申请实施例中的一种控制部件200。参见图2,本申请实施例一中的控制部件200,包括NVMe控制器210、硬件加速器220、CPU 组230和介质接口控制器240。如图
2所示,NVMe控制器210与硬件加速器220耦合,硬件加速器220分别与CPU组230和介质接口
控制器240耦合, CPU组230与介质接口控制器240耦合。CPU组230包括一个或多个CPU 核。
[0058] 下面以控制部件200处理读命令为例。
[0059] NVMe控制器210接收到读命令之后,NVMe控制器210向硬件加速器 220发送该读命令或者向硬件加速器220发送用于提示NVMe控制器210中有待处理的命令的提示信息。硬件
加速器220接收到该提示信息,则主动从 NVMe控制器210中获取该读命令。
[0060] 可选地,硬件加速器220在获取到该读命令之后,判断该读命令是否符合主机和存储设备的之间的协议的规定。例如,硬件加速器220获取到读命令之后,判断该读命令的数
据格式是否符合NVMe协议的规定。又如,判断该读命令的数据格式是否符合AHCI协议的规
定。
[0061] 在读命令不符合协议的规定时,硬件加速器220生成错误响应,并通过 NVMe控制器210向主机反馈错误响应,以通知主机该读命令出现错误。
[0062] 在读命令符合协议的规定时,硬件加速器220将该读命令发送给CPU组 230。CPU组230接收到读命令之后,根据读命令中携带的有效信息访问FTL 以获取同读命令的逻辑地
址对应的物理地址,并且CPU组230还根据有效信息指示硬件加速器220记录主机地址或根
据指向该主机地址的第二索引信息从主机获取主机地址。本实施例中,有效信息包括待读
取的数据的逻辑地址、用于存储读取出的数据的主机地址、指向该逻辑地址的第一索引信
息和指向该主机地址的第二索引信息中的至少二者。
[0063] 在又一实施例中,在读命令符合协议的规定时,硬件加速器220将从读命令中提取出有效信息,该有效信息携带CPU组230处理该读命令所需的数据。可选地,有效信息的长度
小于读命令。例如,硬件加速器220获取到的读命令的长度为80比特,有效信息的长度为64
比特。该有效信息包括:待读取的数据的逻辑地址、用于存储读取出的数据的主机地址、指
向该逻辑地址的第一索引信息和指向该主机地址的第二索引信息中的至少二者。例如,在
待读取的数据长度很短或逻辑地址连续时,有效信息包括待读取的数据的逻辑地址和用于
存储读取出的数据的主机地址。又如,在待读取的数据长度很长或离散存储时,有效信息包
括指向该逻辑地址的第一索引信息和指向该主机地址的第二索引信息。
[0064] CPU组230接收到有效信息之后,根据有效信息访问FTL以获取同读命令的逻辑地址对应的物理地址,并且CPU组230还根据有效信息指示硬件加速器220记录主机地址或根
据指向该主机地址的第二索引信息从主机获取主机地址。
[0065] 硬件加速器220接收到该主机地址后,通过总线将该主机地址存储到 DRAM(图2中未示出)。或者,硬件加速器220接收到第二索引信息后,通过与硬件加速器220耦合的接口,
从主机中获取该主机地址,并通过总线向DRAM发送主机地址。
[0066] 在完成逻辑地址到物理地址的转换之后,CPU组230向介质接口控制器 240发送同读命令的逻辑地址对应的物理地址。介质接口控制器240根据物理地址,从闪存芯片中读取
出物理地址中存储的数据,并将该数据存放至 DRAM中。介质接口控制器240在将待读取的
数据均存放至DRAM之后,向硬件加速器220反馈读数据完成信息,用于通知硬件加速器220
可以将数据传输至主机。该读数据完成信息包括命令标识,命令标识用于区别不同命令对
应的数据。
[0067] 可选地,在完成逻辑地址到物理地址的转换之后,CPU组230向介质接口控制器240发送第二信息,第二信息指示介质接口控制器240从NVM的物理地址中读取出第一数据,从
而介质接口控制器240开始从NVM中读取第一数据,并将读取出的第一数据存储到DRAM中。
例如,第一数据的大小是20KB,介质接口控制器240每次读取4KB,则共需要进行5次读取,以
及将第一数据分成5次存入DRAM。
[0068] 可选地,CPU组230向介质接口控制器240发送第二消息前,还从DRAM 分配缓存单元,并在第二消息中指示所分配的缓存单元。从而介质接口控制器将响应于第二消息而从
NVM芯片读出的数据存储到第二消息所指示的缓存单元。介质接口控制器将还将读数据完
成信息提供给硬件加速器。
[0069] 依然可选地,CPU组230不负责缓存单元的分配,而是介质接口控制器从DRAM分配缓存单元,并将响应于第二消息而从NVM芯片读出的数据存储到所分配的缓存单元。
[0070] 依然可选地,硬件加速器还包括缓存单元管理器。介质接口控制器将响应于第二消息而从NVM芯片读出的数据发送给缓存单元管理器,而无须事先分配缓存单元的过程。缓
存单元管理器管理缓存单元,并用可用的缓存单元承载从介质接口控制器接收的响应于第
二消息而从NVM芯片读出的数据,以及缓存单元管理器还将读数据完成信息提供给硬件加
速器。读数据完成信息指示承载了读出数据的缓存单元的索引。
[0071] 硬件加速器220响应于收到读数据完成信息并且读命令的主机地址已存储在DRAM中,硬件加速器220向NVMe控制器210发送命令标识以指示 NVMe控制器210将DRAM中与命令
标识对应的数据搬运到同主机地址对应的存储空间中。例如,在第一数据完整的存储至
DRAM之后,介质接口控制器240向硬件加速器220发送标签信息,该标签信息与包括与读命
令对应的标识信息,从而硬件加速器220根据该标识信息指示NVMe控制器210从 DRAM中获
取第一数据,以及将第一数据搬移到主机。
[0072] 在一些实施例中,第二信息携带DRAM中存储第一数据的存储空间的指示信息,从而介质接口控制器240能够直接将从NVM读取出的第一数据存储到该存储空间中。
[0073] 可选地,硬件加速器220还缓存在介质接口控制器240至主机之间的AES (高级加密标准,Advanced EncryptionStandard)处理过程产生的数据。例如,若存储设备设置读取
数据时要进行AES处理,则由硬件加速器220提供存储空间来缓存AES处理过程中产生的数
据。
[0074] 下面描述控制部件200处理写命令的方式。
[0075] NVMe控制器210接收到写命令之后,NVMe控制器210向硬件加速器 220发送该写命令或者向硬件加速器220发送用于提示NVMe控制器210中有待处理的命令的提示信息。硬件
加速器220接收到该提示信息,则主动从 NVMe控制器210中抓取该写命令。
[0076] 可选地,硬件加速器220在获取到该写命令之后,判断该写命令是否符合主机和存储设备的之间的协议的规定。例如,硬件加速器220获取到写命令之后,判断该写命令的数
据格式是否符合NVMe协议的规定。主机和存储设备之间的协议包括NVMe协议、AHCI协议等。
[0077] 在写命令不符合协议的规定时,硬件加速器220生成错误响应,并通过 NVMe控制器210向主机反馈错误响应,以通知主机该写命令出现错误。
[0078] 在写命令符合协议的规定时,硬件加速器220向CPU组发送该写命令。
[0079] CPU组230接收到写命令之后,根据写命令携带的有效信息指示硬件加速器220待写入数据的主机地址或指向该主机地址的第三索引信息、以及命令标识。本实施例中的有
效信息包括:待写入的数据的主机地址或指向该主机地址的第三索引信息、以及命令标识。
[0080] 在另一实施例中,在写命令符合协议的规定时,硬件加速器220将从写命令中提取出有效信息,该有效信息携带CPU组230处理该写命令所需的数据。可选地,有效信息的长度
小于写命令。例如,硬件减速器220获取到的写命令的长度为64比特,有效信息的长度为32
比特。该有效信息包括:待写入的数据的主机地址或指向该主机地址的第三索引信息、以及
命令标识。例如,待写入的数据长度很长或主机地址数量太多,则有效命令包括第三索引信
息和命令标识。本实施例中的命令标识与该写命令对应的待写入数据对应,例如,NVMe控制
器210中同时处理3个写命令,每个写命令对应于一个命令标识,从而能够区分3个写命令对
应的待写入数据。
[0081] CPU组230接收到有效信息之后,向硬件加速器220指示存储待写入数据的主机地址或指向该主机地址的第三索引信息、以及命令标识。
[0082] 硬件加速器220接收到该主机地址和命令标识后,通过NVMe控制器210 从主机地址中获取对应数据,并将该数据搬运至DRAM。或者,硬件加速器 220接收到第三索引信息
后,通过与硬件加速器220耦合的接口,从主机中获取该主机地址,并通过NVMe控制器210根
据主机地址获取对应数据,并将该数据搬运至DRAM。硬件加速器220在将与命令标识对应的
数据全部搬运至DRAM之后,向主机反馈表征写命令完成的完成信息。主机接收到该完成信
息后,对于主机该写命令的处理就已经完成。硬件加速器220也向CPU 组230反馈表征写命
令完成的完成信息。
[0083] 可选地,CPU组230向硬件加速器220发送主机地址前,还从DRAM 分配缓存单元,并连同主机地址将所分配的缓存单元提供给硬件加速器220。从而硬件加速器220将从主机地
址获取的数据存储到所分配的缓存单元。
[0084] 依然可选地,CPU组230不负责缓存单元的分配,而是硬件加速器220 从DRAM分配缓存单元,并将从主机地址获取的数据存储到所分配的缓存单元。
[0085] 依然可选地,硬件加速器还包括缓存单元管理器。硬件加速器220将从主机地址获取的数据发送给缓存单元管理器,而无须事先分配缓存单元的过程。缓存单元管理器管理
缓存单元,并用可用的缓存单元承载从硬件加速器 220接收的从主机地址获取的数据。缓
存管理单元将从主机地址获取的数据存储到缓存单元后,还将数据传输完成信息提供给硬
件加速器。数据传输完成信息指示承载了从主机地址获取的数据的缓存单元的索引。
[0086] CPU组230接收到有效信息后,还为写命令待写入的数据分配物理地址,并访问FTL以记录有效信息指示的逻辑地址和分配的物理地址之间的对应关系。CPU组230接收到硬件
加速器220发送的表征数据传输完成的信息之后,将写命令待写入的数据在DRAM中的位置
和分配的物理地址发送给介质接口控制器240。
[0087] 介质接口控制器240接收到该物理地址和数据在DRAM中的位置之后,从DRAM读取出待写入的数据,并将待写入的数据写到闪存芯片中物理地址对应的存储空间内。
[0088] 可选地,硬件加速器220接收到该主机地址和命令标识后,通过NVMe 控制器210从主机地址中读取与命令标识对应数据,并将该数据发送给介质接口控制器240,由介质接口
控制器240将数据搬运至DRAM。或者,硬件加速器220接收到第三索引信息后,通过与硬件加
速器220耦合的接口,从主机中获取该主机地址,并通过NVMe控制器210从主机地址中读取
与命令标识对应数据,并将该数据发送给介质接口控制器240,由介质接口控制器 240将数
据搬运至DRAM。硬件加速器220在将与命令标识对应的数据全部发送给介质接口控制器240
之后,向主机反馈表征写命令完成的完成信息。硬件加速器220将数据搬运至介质接口控制
器240之后,向介质接口控制器 240发送启动写操作的指示信息,以及通知CPU组230数据传
输完成。
[0089] 介质接口控制器240在接收到待写入的数据之后,为待写入的数据分配物理地址,并将分配的物理地址发送给CPU组。CPU组接收到该物理地址之后,访问FTL以记录写命令的
逻辑地址和物理地址之间的对应关系。
[0090] 介质接口控制器240获取到该物理地址和数据在DRAM中的位置之后,从DRAM读取出待写入的数据,并将待写入的数据写到闪存芯片中物理地址对应的存储空间内。
[0091] 可选地,硬件加速器220缓存介质接口控制器240至主机之间的加密处理过程产生的数据。加密处理包括AES、TCGOPAL等。例如,存储设备设置写数据时要进行AES处理,则由
硬件加速器220提供存储空间来缓存AES 处理过程中产生的数据。
[0092] 图3给出了本申请实施例二的硬件加速器的一种可能的结构。本申请中的控制部件除了采用上述实施例中描述的硬件加速器,还可以采用本申请实施例二中的硬件加速
器。如图3所示,本申请实施例二提供了硬件加速器300,包括:命令处理器310、读写处理器
320和缓冲存储器330。命令处理器310 与读写处理器320耦合,读写处理器320和缓冲存储
器330耦合。
[0093] 其中,命令管理器310判断从主机获取的读命令或写命令是否符合主机与存储设备之间的协议,以及向CPU组430发送符合该协议的第一命令,第一命令为读命令或写命令。
图4中给出了控制部件400的一种可能的结构。下面以图4中的控制部件400的结构为例,对
硬件加速器300进行介绍。CPU 组430包括至少一个CPU,例如,图4中CPU组430包括2个CPU,
分别是CPU核1和CPU核2。CPU组430还可以包括两个以上的CPU,可根据实际需求选择CPU的
数量,在此并不做限定。
[0094] 在第一命令是读命令时,CPU组430从读命令中获取第一信息,该第一信息包括数据索引或者用于获取该数据索引的信息。例如,数据索引为物理区域页
(PhysicalRegionPage,PRP)列表、分散收集列表(ScatterGatherList, SGL)、数据在主机
中的主机地址、数据在DRAM中的地址等。用于获取该数据索引的信息包括指向数据索引的
指针,例如,第一信息包括指向数据索引的指针,读写处理器320通过该指针访问到数据索
引所在的存储空间,从而获取到该数据索引。读写处理器320还会将数据索引存放至缓冲存
储器330 中。
[0095] CPU组430还从第一消息获取读命令要访问的逻辑地址,并根据逻辑地址访问FTL以获取同读命令要访问的逻辑地址对应的物理地址。可选地,CPU 组430还根据读命令要访
问的逻辑地址范围分割为多个逻辑地址,并从FTL 获得多个对应的物理地址。
[0096] CPU组430还为读命令分配命令标识,用以区分存储设备同时处理的多个命令。从同一读命令获得的多个物理地址关联于相同的命令标识。
[0097] CPU组430将关联于同一读命令的一个或多个物理地址发送给介质接口控制器440,以指示介质接口控制器440根据接收的物理地址从NVM芯片读出数据。将物理地址发送
给介质接口控制器440以及介质接口控制器440 从NVM芯片读出数据的过程,同读写处理器
320获取数据索引的操作被并发处理。
[0098] 可选地,CPU组430向介质接口控制器440发送物理地址前,还从 DRAM50分配缓存单元,并向介质接口控制器440指示所分配的缓存单元。从而介质接口控制器440将响应于
物理地址而从NVM芯片读出的数据存储到所分配的缓存单元。介质接口控制器440将还将读
数据完成信息提供给读写管理器320,而不是提供给CPU组430。读数据完成信息指示承载了
读出数据的缓存单元的索引。
[0099] 依然可选地,CPU组430不负责缓存单元的分配,而是介质接口控制器 440从DRAM 50分配缓存单元,并将从NVM芯片读出的数据存储到所分配的缓存单元。
[0100] 依然可选地,硬件加速器300还包括缓存单元管理器(未示出)。介质接口控制器440将响应于一个或多个物理地址而从NVM芯片读出的数据发送给缓存单元管理器,而无须
事先分配缓存单元的过程。缓存单元管理器管理缓存单元,并用可用的缓存单元承载从介
质接口控制器440接收的从NVM 芯片读出的数据,以及缓存单元管理器还将读数据完成信
息提供给读写管理器320,而不是提供给CPU组430。
[0101] 读写管理器320根据收到的读数据完成消息,识别读命令要读取的数据是否被全部从NVM芯片读出并存储到DRAM 50。作为举例,读写管理器 320记录读命令要读取的数据
长度,并根据接收到的一个或多个读数据完成消息识别为该读命令已经从NVM芯片读出并
搬移到DRAM 50的数据长度,从而通过识别读命令要读取的数据长度同已经从NVM芯片读出
并搬移到 DRAM 50的数据长度来确定读命令要读取的数据已被全部从NVM芯片读出并存储
到DRAM 50。
[0102] 在一种实施方式中,响应于读命令要读取的数据已被全部从NVM芯片读出并存储到DRAM 50,并且该读命令的数据索引已被存放至缓冲存储器 330中,读写处理器320将读
命令要读取的数据(也称为“读数据”)搬移到由数据索引所指示的主机地址。
[0103] 读写处理器320指示数据搬移单元获取与读命令对应的读数据。本实施例中,数据搬移单元在NVMe控制器410内,从而读写处理器320指示NVMe 控制器410获取读数据,如数
据搬移单元是NVMe控制器410内的DMA引擎(直接存储器存取,DirectMemoryAccess)。数据
搬移单元除了嵌入在NVMe 控制器410内,还可以采用独立于NVMe控制器410的数据搬移单
元,在此不做限定。由于第一命令是读命令,读数据是数据搬移单元根据读数据完成信息指
示的承载了读出数据的缓存单元的索引从DRAM中获取的数据,并将获取的数据搬移到数据
索引所指示的主机索引。
[0104] 读写管理器320还识别是否已经将读数据完整搬移到主机。作为举例,读写管理器320记录了读命令要读取的数据长度,还统计通过数据搬移单元发送给主机的数据的长度。
从而通过识别读命令要读取的数据长度同已经从 DRAM 50读出并搬移到主机的数据长度
来确定读命令要读取的数据已被全部搬移到主机。继而,读写管理器320通过NVMe控制器
410向主机指示读命令处理完成。
[0105] 可选地,介质接口控制器440将读数据完成消息发送给CPU组430,从而CPU组430识别读命令要读取的数据是否被全部从NVM芯片读出并存储到DRAM 50。继而,CPU组430指示
读写管理器320将读数据搬移到主机。
[0106] 在又一种实施方式中,读写处理器320接收介质接口控制器440发送的标签信息,标签信息用于表征介质接口控制器将数据从NVM中读取到DRAM 已完成,标签信息包括与第
一命令对应的标识信息;读写处理器320指示数据搬移单元根据标识信息从DRAM中获取第
一数据、并根据数据索引向主机发送第一数据。
[0107] 作为举例,第一数据的数据量可能大于介质接口控制器440一次从闪存芯片读取到DRAM的过程中读取的数据量。为了表征第一数据中的一部分已经传输到DRAM中,介质接
口控制器440会向读写处理器320反馈标签信息。例如,第一数据长度为10K,介质接口控制
器440每次传输4K,则共需要3 次才能完成将第一数据传输到DRAM中的操作。在每次传输4K
的数据到 DRAM之后,介质接口控制器440都会向读写处理器320发送一个标签信息,以告知
读写处理器320当前已经传输的数据的长度。从而读写处理器320接收到标签信息,就知晓
第一数据已经从闪存芯片中读取到了DRAM中,从而读写处理器320继续将第一数据从DRAM
中搬移到主机中。例如,读写处理器320将标识信息和主机地址指示给数据搬移单元,并指
示数据搬移单元开始数据搬运,从而数据搬移单元根据该标识信息从DRAM存储的所有数据
中获取到第一数据,通过主机地址访问主机,并将第一数据存放到该主机地址对应的存储
空间内。
[0108] 可选地,读写处理器320记录第一数据的数据长度,其中,第一数据的数据长度为读写处理器320根据第一信息获取的;读写处理器320还记录根据第一命令已向主机发送的
数据的长度;读写处理器320响应于第一命令要读取的数据的长度等于为第一命令已向主
机发送的数据的长度,而向主机发送用于表征读命令处理完成的状态信息。
[0109] 本实施例中,读写处理器320在向主机发送第一数据的过程中,实时记录第一数据中已经发送给主机的数据的长度,并和第一数据的数据长度(也就是第一数据的总长度)比
较,来判断第一数据是否完成发送,从而能够简单而快速的判断出第一数据的发送状态。例
如,第一数据的数据长度为4KB,在T1时刻,记录的已发送的数据长度为3KB,则T1时刻没有
完成数据发送,而在T2时刻,记录的已发送的数据长度变更为4KB,则判断出T2时刻完后数
据发送,并向主机发送用于表征读命令处理完成的状态信息。
[0110] 在第一命令是写命令时,CPU组430从写命令中获取第一信息,该第一信息包括数据索引或者用于获取该数据索引的信息。例如,数据索引在主机中的主机地址。CPU组430向
读写处理器320发送该第一信息,读写处理器 320将数据索引存放至缓冲存储器330中。
[0111] 读写处理器320还根据数据索引指示数据搬移单元获取与第一命令对应的写数据,该写数据是数据搬移单元根据数据索引从主机中获取的第二数据。本实施例中的第二
数据是待写入闪存芯片的数据。
[0112] 可选地,CPU组430向读写处理器320发送主机地址前,还从DRAM 50 分配缓存单元,并连同数据索引将所分配的缓存单元提供给读写处理器320。从而读写处理器320将从
主机地址获取的数据存储到所分配的缓存单元。
[0113] 依然可选地,CPU组430不负责缓存单元的分配,而是读写处理器320 从DRAM50分配缓存单元,并将从主机地址获取的数据存储到所分配的缓存单元。由读写处理器320代替
CPU组430分配缓存单元,减少了占用的CPU 资源,加快了处理速度。
[0114] 依然可选地,硬件加速器300还包括缓存单元管理器。读写处理器320 将从主机地址获取的数据发送给缓存单元管理器,而无须事先分配缓存单元的过程。缓存单元管理器
管理缓存单元,并用可用的缓存单元承载从读写处理器320接收的从主机地址获取的数据。
缓存管理单元将从主机地址获取的数据存储到缓存单元后,还将数据传输完成信息提供给
读写处理器320。数据传输完成信息指示承载了从主机地址获取的数据的缓存单元的索引。
[0115] 依然可选地,CPU组430与读写处理器320都不负责缓存单元的分配,而是介质接口控制器440从DRAM50分配缓存单元。读写处理器320将从主机地址获取的数据发送给介质接
口控制器440,而无须事先分配缓存单元的过程。介质接口控制器440将从主机地址获取的
数据存储到缓存单元后,还将数据传输完成信息提供给读写处理器320。
[0116] 读写管理器320还识别是否已经从主机获取了完整的写数据。作为举例,读写管理器320记录了写命令要写入存储设备的数据长度,还统计通过数据搬移单元从主机搬移的
数据的长度。从而通过识别写命令要写入的数据长度同已经从主机搬移的数据长度来确定
写命令要写入的数据已被全部从主机搬移到存储设备。继而,读写管理器320通过NVMe控制
器410向主机指示写命令处理完成。读写管理器320还将表征写命令的数据传输完成的信息
提供给CPU组430。
[0117] 对于主机而言,将写命令要写入的数据传输到存储设备中,写命令就已经完成。主机得以释放为该写命令所分配的主机资源。
[0118] CPU组430还为写命令分配命令标识,用以区分存储设备同时处理的多个命令。为同一写命令分配的一个或多个物理地址关联于相同的命令标识。命令标识还关联于根据写
命令获取的数据索引,也关联于表征写命令的数据传输完成的信息。
[0119] CPU组430接收到写命令后,还为写命令待写入的数据分配物理地址,并访问FTL以记录有效信息指示的逻辑地址和分配的物理地址之间的对应关系。CPU组230接收到读写管
理器320发送的表征数据传输完成的信息之后,将写命令待写入的数据在DRAM 50中的位置
和分配的物理地址发送给介质接口控制器440。
[0120] 可选地,CPU组430为写命令分配物理地址过程,同读写处理器320获取数据索引的操作被并发处理。
[0121] 介质接口控制器440根据接收的数据在DRAM 50中的位置从DRAM 50 获取数据并根据物理地址将获取的数据写入NVM芯片。介质接口控制器440 响应于数据被写入NVM芯
片,而向读写处理器320发送标签消息,标签消息作为表征写命令的数据传输完成的信息。
[0122] 读写管理器320根据收到的标签消息,识别写命令要写入的数据是否被全部写入NVM芯片。作为举例,读写管理器320记录写命令要写入取的数据长度,并根据接收到的一个
或多个标签消息识别为该写命令已经写入NVM 芯片的数据长度,从而通过识别写命令要读
取的数据长度同已经写入NVM 芯片0的数据长度来确定写命令要写入的数据已被全部写入
NVM芯片。
[0123] 响应于写命令要读取的数据已被全部写入NVM芯片,读写处理器320 释放为该写命令分配的资源(例如,命令标识)。
[0124] 可选地,介质接口控制器440将标签消息发送给CPU组430,从而CPU 组430识别写命令要写入的数据是否被全部写入NVM芯片。继而,CPU组 430释放为该写命令分配的资源。
[0125] 在一些实施例中,硬件加速器320还包括至少两个缓存单元。在数据搬移单元从主机获取写数据或向主机发送读数据时的过程中,至少两个缓存单元采用乒乓方式缓存写数
据或读数据。本申请中,硬件加速器可以设置一个及以上的缓存单元,在设置至少两个缓存
单元时,采用乒乓方式来缓存写数据或读数据可以有效地加快数据传输速度。
[0126] 可选地,在主机和存储设备传输数据的过程中,存在数据加密的需求,从而本实施例中的硬件加速器还包括安全单元,该安全单元对缓存单元中的第一数据进行解密或第二
数据进行加密。例如,安全单元对第一数据进行AES 解密处理。
[0127] 可选地,在判断从主机获取的读命令或写命令是否符合协议之前,命令管理器获取主机发送的第二命令,第二命令为读命令、写命令、擦除命令或其它命令;判断第二命令
是否为读命令或写命令。
[0128] 在一些实施例中,若判断第二命令不是读命令、写命令或擦除命令,命令管理器310向主机发送指示命令错误的响应信息。
[0129] 虽然当前申请参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
[0130] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵
盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。