用于存储设备的写、读数据方法、存储控制器以及dma引擎

文档序号:1904105 发布日期:2021-11-30 浏览:1次 >En<

阅读说明:本技术 用于存储设备的写、读数据方法、存储控制器以及dma引擎 (Writing and reading data method for storage device, storage controller and DMA engine ) 是由 涂友钢 黄好城 刘传杰 张泽 于 2021-07-22 设计创作,主要内容包括:本发明涉及一种用于存储设备的写、读数据方法、存储控制器及DMA引擎,用于存储设备的写数据方法包括响应于接收到与写命令对应的一个或多个DMA命令,根据所述DMA命令从主机获取所述DMA命令指示的数据;检测所述数据是否为特定数据;将非特定数据写入NVM。本申请的技术方案提升了数据读写的效率。(The invention relates to a write-read data method, a memory controller and a DMA engine for a memory device, wherein the write-data method for the memory device comprises the steps of responding to one or more received DMA commands corresponding to a write command, and acquiring data indicated by the DMA commands from a host according to the DMA commands; detecting whether the data is specific data; non-specific data is written to NVM. The technical scheme of the application improves the efficiency of data reading and writing.)

用于存储设备的写、读数据方法、存储控制器以及DMA引擎

技术领域

本发明一般地涉及数据处理技术领域。更具体地,本发明涉及一种用于存储设备的写、读数据方法、存储控制器及DMA引擎。

背景技术

图1A展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small ComputerSystem Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102(下文中,将存储设备简称为存储设备)包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。

上述NVM芯片105包括NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive RandomAccess Memory,阻变存储器)等是常见的存储介质。

上述接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。

上述控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。

控制部件104以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。

在存储设备102中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址(LBA)到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的存储设备的存储空间。物理地址是用于访问存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是存储设备中的重要元数据。FTL表的数据项记录了存储设备中以数据单元为单位的地址映射关系。

参看图1B,控制部件包括主机接口1041、主机命令处理单元1042、存储命令处理单元1043、介质接口控制器1044与存储介质管理单元1045。主机接口1041获取主机提供的IO命令。主机命令处理单元1042根据IO命令生成存储命令提供给存储命令处理单元1043。存储命令可以访问相同大小的存储空间,例如4KB。将NVM芯片中记录的对应一个存储命令所访问数据的数据单元称为数据帧。物理页记录一个或多个数据帧。例如,物理页的大小17664字节,而数据帧大小为4KB,则一个物理页能存储4个数据帧。

存储介质管理单元1045为每个存储命令维护逻辑地址到物理地址的转换。例如,存储介质管理单元1045包括FTL表(下文将对FTL进行解释)。对于读命令,存储介质管理单元1045输出存储命令所访问的逻辑地址(LBA)对应的物理地址。对于写命令,存储介质管理单元1045为其分配可用的物理地址,并记录其访问的逻辑地址(LBA)与分配的物理地址的映射关系。存储介质管理单元1045还维护诸如垃圾回收、磨损均衡等管理NVM芯片所需的功能。

存储命令处理单元1043根据存储介质管理单元1045提供的物理地址,操作介质接口控制器1044向NVM芯片105发出存储介质访问命令。

为了清楚的目的,将主机发送给存储设备102的命令称为IO命令,将主机命令处理单元1042发送给存储命令处理单元1043的命令称为存储命令,将存储命令处理单元1043发送给介质接口控制器1044的命令称为介质接口命令,而将介质接口控制器1044发送给NVM芯片105的命令称为存储介质访问命令。存储介质访问命令遵循NVM芯片的接口协议。

在NVMe协议中,存储设备102收到写命令后,通过主机接口1041去主机的内存中获取数据,然后把这些数据写入到闪存中。对于读命令,当数据从闪存中读出后,存储设备102会通过主机接口1041把数据搬移到主机内存中。

如图1C展示了一种现有技术的主机命令处理单元1042的基本构成。如图1C所示,主机命令处理单元1042主要包括共享存储器、DMA模块和CPU子系统。其中,CPU子系统包括多个CPU,CPU用于运行程序以处理SGL或PRP,以及配置DMA模块。DMA模块用于处理DMA命令,实施主机与存储设备之间的数据传输。共享存储器(share memory)用于存储数据、NVMe命令等。

发明内容

在写命令执行过程中,存储设备102收到写命令后,通过主机接口1041去主机的内存中获取数据,存储介质管理单元1045为写命令分配可用的物理地址,并记录其访问的逻辑地址(LBA)与分配的物理地址的映射关系,然后介质接口控制器1044根据分配的物理地址把这些数据写入到闪存中。然而,对于NVM芯片105来说,写入其中的数据需要具有高度随机化,为了保证写入NVM芯片105中的数据具有高度随机化,通常底层会对写入的数据加扰码,如果写入的数据为特定数据,例如,重复循环的数据或比特位均相同的数据,则在该特定数据中加入扰码会提升数据出错的概率。

另外,主机还可以向存储设备发送去分配命令,存储设备可根据去分配命令删除一段逻辑地址空间中的数据,例如,去分配命令指示的一段逻辑地址空间为10个物理页,但是对于存储设备来说,它要执行删除命令的话只能以物理块为单位,通常一个物理块包含成百上千个物理页,故如果去分配命令所指示的一段逻辑地址空间为几页的话,存储设备是不会对NVM进行删除操作的。

本申请实施例所提供的方案中,DMA引擎根据写命令所对应的一个或多个DMA命令从主机内存获取数据,对数据进行检测,将非特定数据写入NVM中,而不将特定数据写入到NVM中,进而降低了数据出错的概率。另外,若存储设备接收到的命令为去分配命令时,存储设备中的控制部件会根据去分配命令对其对应的一段逻辑地址空间做标识,该标识表示这一段逻辑地址空间被执行去分配操作,并记录在FTL表中,当存储设备接收的读命令指示访问这一段逻辑地址空间的数据时,将不会从NVM中该段逻辑地址空间中读取数据,而是给主机发送错误提示或特定数据,作为举例,DMA引擎会根据该读命令生成错误提示或特定数据,并发送给主机。

本申请的方案在控制数据写入到存储设备的过程中,通过检测数据是否为特定数据,并将非特定数据写入NVM,从而避免因NVM芯片105的固有属性导致特定数据无法写入闪存而发生的错误。由于本申请的方案节省了将特定数据写入存储设备闪存的时间,进而可以提升数据写入的效率。

进一步地,本申请的方案在控制主机从存储设备的NVM读取数据的过程中,通过根据读命令对应的DMA命令所携带的特定标识生成特定数据,并根据DMA命令将特定数据发送给主机,从而避免因无法从闪存上读取特殊的数据模式的特定数据而导致的读错误发生。由于本申请的方案节省了从NVM读取特定数据的时间,进而可以提升数据读取的效率。

根据本申请的第一方面中,提供了根据本申请的第一方面的第一用于存储设备的写数据的方法,包括:响应于接收到与写命令对应的一个或多个DMA命令,根据所述DMA命令从主机获取所述DMA命令指示的数据;检测所述数据是否为特定数据;将非特定数据写入NVM。

根据本申请的第一方面的第一用于存储设备的写数据的方法,提供了根据本申请的第一方面的第二用于存储设备的写数据的方法,还包括:若所述数据是特定数据,则不将所述数据写入所述NVM。

根据本申请的第一方面的第一用于存储设备的写数据的方法,提供了根据本申请的第一方面的第三用于存储设备的写数据的方法,还包括:若所述数据是特定数据,则无需将所述数据写入所述NVM。

根据本申请的第一方面的第一用于存储设备的写数据的方法,提供了根据本申请的第一方面的第四用于存储设备的写数据的方法,所述特定数据包括非随机形式的数据。

根据本申请的第一方面的第四用于存储设备的写数据的方法,提供了根据本申请的第一方面的第五用于存储设备的写数据的方法,所述非随机形式的数据包括以下中的任一项:全0、全1、

根据本申请的第一方面的第一至第五任一项用于存储设备的写数据的方法,提供了根据本申请的第一方面的第六用于存储设备的写数据的方法,将非特定数据写入NVM包括:响应于所述数据为非特定数据,为非特定数据分配对应的物理地址,并在FTL表中记录非特定数据所对应的逻辑地址和物理地址之间的关系;以及根据所述物理地址将所述非特定数据写入NVM。

根据本申请的第一方面的第一至第五任一项用于存储设备的写数据的方法,提供了根据本申请的第一方面的第七用于存储设备的写数据的方法,还包括:响应于所述数据为特定数据,对特定数据所对应的DMA命令做标识,并将该标识存储在共享存储器中,以使得存储命令处理器控制存储介质管理单元在FTL表中记录特定数据所对应的逻辑地址和标识之间的关系。

根据本申请的第一方面的第一至第七任一项用于存储设备的写数据的方法,提供了根据本申请的第一方面的第八用于存储设备的写数据的方法,将非特定数据写入NVM进一步包括:将非特定数据写入存储设备的内存,而无需将特定数据写入存储设备的内存。

根据本申请的第一方面的第一至第七任一项用于存储设备的写数据的方法,提供了根据本申请的第一方面的第九用于存储设备的写数据的方法,将非特定数据写入NVM进一步包括:将所述非特定数据和特定数据均写入存储设备的内存。

根据本申请的第一方面的第八或第九用于存储设备的写数据的方法,提供了根据本申请的第一方面的第十用于存储设备的写数据的方法,将非特定数据写入NVM,包括:通过后端模块将所述非特定数据从存储设备的内存写入到NVM,而无需将所述特定数据从存储设备的内存写入到NVM。

根据本申请的第一方面的第一至第十任一项用于存储设备的写数据的方法,提供了根据本申请的第一方面的第十一用于存储设备的写数据的方法,还包括:响应于检测到写命令,根据第一开关信号使能检测所述数据是否为特定数据;以及响应于未检测到待执行写命令,根据第二开关信号停止检测所述数据是否为特定数据。

根据本申请的第一方面的第一至第十一任一项用于存储设备的写数据的方法,提供了根据本申请的第一方面的第十二用于存储设备的写数据的方法,还包括:对获取的数据进行PI签名或AES加密。

根据本申请的第一方面的第一至第十二任一项用于存储设备的写数据的方法,提供了根据本申请的第一方面的第十三用于存储设备的写数据的方法,还包括:对所述数据进行PI签名或AES加密的步骤与检测所述数据是否为特定数据的步骤并行处理。

根据本申请的第二方面,提供了根据本申请的第二方面的第一存储控制器,包括:主机命令处理单元、存储介质管理单元与存储命令处理单元;所述主机命令处理单元包括DMA引擎与共享存储器,用于响应于收到写命令,生成一个或多个存储命令以及与存储命令对应的一个或多个DMA命令,并将一个或多个DMA命令给所述DMA引擎,将一个或多个存储命令提供给存储命令处理单元;所述DMA引擎包括第一数据搬移电路、第二数据搬移电路以及数据保护与监测电路;第一数据搬移电路,用于响应于接收到DMA命令,根据所述DMA命令获取所述DMA命令指示的数据,并将获取的所述数据提供给数据监测电路;数据保护与监测电路,用于对所述数据加密和/或进行完整性校验的同时检测所述数据是否为特定数据,以及在所述共享存储器中记录检测结果;数据保护与监测电路将对所述数据加密和/或进行完整性校验的结果数据提供给所述第二数据搬移电路;第二数据搬移电路将从所述数据保护与监测电路获取的结果数据搬移到存储器;所述存储命令处理单元,用于响应于收到存储命令并根据存储命令对应的数据的所述检测结果确定是否将所述存储器中的结果数据写入至所述存储控制器所控制的NVM。

根据本申请的第二方面的第一存储控制器,提供了根据本申请的第二方面的第二存储控制器,所述存储命令处理单元进一步配置为:若所述检测结果指示所述数据为特定数据,所述命令处理单元向所述存储介质管理单元提供所述检测结果;若所述检测结果指示所述数据不是特定数据,所述命令处理单元向所述存储介质管理单元请求分配物理地址;所述存储介质管理单元根据所述检测结果记录所述数据所对应的逻辑地址对应的指定标记;所述命令处理单元根据所述存储介质管理单元提供的物理地址将所述存储命令对应的所述数据写入NVM。

根据本申请的第二方面的第一存储控制器,提供了根据本申请的第二方面的第三存储控制器,若所述检测结果指示所述数据是特定数据,所述命令处理单元不将存储命令对应的所述数据写入NVM而释放所述数据在存储器中的存储空间。

根据本申请的第二方面的第二或第三存储控制器,提供了根据本申请的第二方面的第四存储控制器,若所述检测结果指示所述数据不是特定数据,所述命令处理单元根据所述存储介质管理单元提供的物理地址将所述存储命令对应的数据写入到存储设备内存,以便后端模块将所述数据从存储设备内存写入NVM。

根据本申请的第二方面的第三或第四存储控制器,提供了根据本申请的第二方面的第五存储控制器,若所述检测结果指示所述数据是特定数据,所述命令处理单元将所述数据写入存储设备内存或不将所述数据写入存储设备内存。

根据本申请的第二方面的第一至第五任一项存储控制器,提供了根据本申请的第二方面的第六存储控制器,进一步包括:检测控制开关,所述检测控制开关配置为:响应于检测到写命令,根据第一开关信号使能检测所述数据是否为特定数据;以及响应于未检测到待执行写命令,根据第二开关信号停止检测所述数据是否为特定数据。

根据本申请的第二方面的第一至第六任一项存储控制器,提供了根据本申请的第二方面的第七存储控制器,所述第二数据搬移电路进一步配置为:若所述检测结果指示所述数据是特定数据,无需将从所述数据保护与监测电路获取的结果数据搬移到存储器。

根据本申请的第三方面,提供了根据本申请的第三方面的第一存储设备,包括:存储控制器,内存和NVM,所述存储控制器包括主机命令处理单元、存储介质管理单元与存储命令处理单元;所述主机命令处理单元包括DMA引擎与共享存储器,用于响应于收到写命令,生成一个或多个存储命令以及与存储命令对应的一个或多个DMA命令,并将一个或多个DMA命令给所述DMA引擎,将一个或多个存储命令提供给存储命令处理单元;所述DMA引擎包括第一数据搬移电路、第二数据搬移电路以及数据保护与监测电路;第一数据搬移电路,用于响应于接收到DMA命令,根据所述DMA命令获取所述DMA命令指示的数据,并将获取的所述数据提供给数据监测电路;数据保护与监测电路,用于对所述数据加密和/或进行完整性校验的同时检测所述数据是否为特定数据,以及在所述共享存储器中记录检测结果;数据保护与监测电路将将对所述数据加密和/或进行完整性校验的结果数据提供给所述第二数据搬移电路;第二数据搬移电路将从所述数据保护与监测电路获取的结果数据搬移到内存;所述存储命令处理单元,用于响应于收到存储命令并根据存储命令对应的数据的所述检测结果确定是否将所述内存中的结果数据写入至所述存储控制器所控制的NVM。

根据本申请的第三方面的第一存储设备,提供了根据本申请的第三方面的第二存储设备,所述存储命令处理单元进一步配置为:若所述检测结果指示所述数据为特定数据,所述命令处理单元向所述存储介质管理单元提供所述检测结果;若所述检测结果指示所述数据不是特定数据,所述命令处理单元向所述存储介质管理单元请求分配物理地址;所述存储介质管理单元根据所述检测结果记录所述结果数据所对应的逻辑地址对应的指定标记;所述命令处理单元根据所述存储介质管理单元提供的物理地址将所述存储命令对应的所述结果数据写入NVM。

根据本申请的第三方面的第一存储设备,提供了根据本申请的第三方面的第三存储设备,所述存储命令处理单元进一步包括后端模块,所述存储命令处理单元用于控制所述后端模块将非特定数据从存储设备的内存写入到NVM。

根据本申请的第三方面的第一或第二存储设备,提供了根据本申请的第三方面的第四存储设备,所述第二数据搬移电路进一步配置为:若所述检测结果指示所述数据是特定数据,无需将从所述数据保护与监测电路获取的结果数据搬移到存储设备的内存。

根据本申请的第四方面,提供了根据本申请的第四方面的第一用于存储设备的读数据的方法,包括:获取读命令,根据读命令生成一个或多个存储命令,通过FTL表获取存储命令所携带的逻辑地址对应的物理地址或第一特定标识;根据每个存储命令生成与其对应的DMA命令,其中,DMA命令携带第二信息,第二信息包括存储设备内存地址和/或第二特定标识;若DMA命令的第二信息为第二特定标识,则根据第二特定标识生成所述特定数据,并根据DMA命令将特定数据发送给主机。

根据本申请的第四方面的第一用于存储设备的读数据的方法,提供了根据本申请的第四方面的第二用于存储设备的读数据的方法,还包括:若DMA命令的第二信息为存储设备内存地址,则根据通过FTL表获取的所述DMA命令对应的存储命令所携带的逻辑地址对应的物理地址以及所述存储设备内存地址,从NVM读取数据至存储设备内存。

根据本申请的第四方面的第一用于存储设备的读数据的方法,提供了根据本申请的第四方面的第三用于存储设备的读数据的方法,所述特定数据包括非随机形式的数据。

根据本申请的第四方面的第三用于存储设备的读数据的方法,提供了根据本申请的第四方面的第四用于存储设备的读数据的方法,所述非随机形式的数据包括以下中的任一项:全0、全1、

根据本申请的第四方面的第一至第四任一项用于存储设备的读数据的方法,提供了根据本申请的第四方面的第五用于存储设备的读数据的方法,进一步包括:响应于生成所述特定数据,发送所述特定数据已读出的通知。

根据本申请的第四方面的第一用于存储设备的读数据的方法,提供了根据本申请的第四方面的第六用于存储设备的读数据的方法,还包括:若通过FTL表获取到存储命令所携带的逻辑地址对应的物理地址,则根据所述物理地址从NVM读出数据,并根据所述存储命令对应的DMA命令所携带的存储设备内存地址将从NVM读取的数据写入存储设备的内存。

根据本申请的第四方面的第五用于存储设备的读数据的方法,提供了根据本申请的第四方面的第七用于存储设备的读数据的方法,还包括:若通过FTL表获取到存储命令所携带的逻辑地址对应的第一特定标识,则在所述存储命令对应的DMA命令中记录所述第二特定标识,而不从所述NVM读取数据。

根据本申请的第四方面的第一至第七任一项用于存储设备的读数据的方法,提供了根据本申请的第四方面的第八用于存储设备的读数据的方法,还包括:响应于检测到读命令,根据第三开关信号使能向主机发送生成的所述特定数据;以及响应于检测到读命令执行完毕,根据第四开关信号停止向主机发送生成的所述特定数据。

根据本申请的第四方面的第三至第八任一项用于存储设备的读数据的方法,提供了根据本申请的第四方面的第九用于存储设备的读数据的方法,还包括:生成所述特定数据的步骤和对所述特定数据进行AES解密和/或PI签名的步骤同时处理。

根据本申请的第五方面,提供了根据本申请的第五方面的第一DMA引擎,包括:第一数据搬移单元,根据DMA命令从本地存储器获取待搬移数据,并提供给数据保护及监测电路;若所述DMA命令指示了标记,则所述第一数据搬移单元生成所述待搬移数据;所述数据保护及监测电路对接收的待搬移数据解密和/或进行数据校验,并将结果数据提供给第二数据搬移单元;所述第二数据单元根据所述DMA命令将结果数据搬移到外部的存储器。

根据本申请的第五方面的第一DMA引擎,提供了根据本申请的第五方面的第二DMA引擎,还包括:第二开关电路配置,所述第二开关电路配置为:响应于检测到读命令,根据第三开关信号使能向主机发送生成的所述特定数据;以及响应于检测到读命令执行完毕,根据第四开关信号停止向主机发送生成的所述特定数据。

根据本申请的第六方面,提供了根据本申请的第六方面的第一控制器,包括根据本申请的第二方面中的任一存储控制器和根据本申请的第五方面中的任一DMA引擎,或根据本披露第三方面中任一存储设备。

根据本申请的第七方面,提供了根据本申请的第七方面的第一电子设备,包括根据本披露第六方面中的第一控制器。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1A为现有技术的存储设备的框图;

图1B为现有技术中的控制部件的结构示意图;

图1C为现有技术中的主机命令处理单元的结构示意图;

图2为根据本申请实施例所提供的一种用于存储设备的写数据的方法的流程图;

图3A为根据本申请实施例所提供的一种将非特定数据写入到NVM的示意图;

图3B为根据本申请实施例所提供的一种不将特定数据写入到NVM的示意图;

图3C为根据本申请实施例所提供的一种用于存储设备的写数据的方法写入数据的示意图;

图3D为根据本申请实施例所提供的一种将特定数据写入到存储设备内存的示意图;

图4A为根据本申请实施例所提供的一种存储控制器的电路结构图;

图4B为根据本申请实施例所提供的一种DMA引擎在不同时刻工作的示意图;

图4C为根据本申请实施例所提供的一种存储设备的结构示意图;

图5A为本申请实施例所提供的一种用于存储设备的读数据的方法的流程图;

图5B为本申请实施例提供的一种根据DMA命令搬移数据的过程示意图;

图5C为本申请实施例所提供的一种根据读命令从存储器中读取数据的过程示意图;

图6为为本申请实施例提供的一种用于存储设备的读数据的方法的电路结构;

图7为本申请实施例的提供的一种DMA引擎的电路结构图。

具体实施方式

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

如图2展示了本申请实施例的用于存储设备的写数据的方法的流程图,即存储设备接收到的命令为写命令的方法。如图2所示,首先,执行步骤201,响应于接收到与写命令对应的一个或多个DMA命令,根据DMA命令从主机获取DMA命令指示的数据。

作为举例,上文所述的写命令,可以通过NVMe协议的方式在主机和存储设备之间传输,故写命令可以是NVMe命令。NVMe有两种命令,一种是admin命令,用以主机管理和控制存储设备,另一种就是IO命令,包括读命令和写命令等,用以控制主机和存储设备之间的数据传输。IO命令中有关于SGL或PRP的域(或者称为字段),表示数据在主机内存中的位置(对于写命令)或者数据需要写入的主机内存地址(对于读命令)。作为举例,一个IO命令可以传输例如128KB的数据。

另外,IO命令还包含要访问的存储设备的起始逻辑地址(LBA)、主机内存地址以及数据长度。对于写命令,存储设备根据主机内存地址从主机内存获取数据后,通过查询FTL表为写命令分配对应的物理地址,根据物理地址将数据写入闪存,并且生成逻辑地址LBA与物理地址的映射关系,通过FTL表记录。对于读命令,存储设备根据读命令所携带的LBA,查找FTL表,找到对应的物理地址,从该物理地址所对应的物理块中获得数据。

进一步,由于存储设备接收的IO命令的长度是随机不定的,使得处理的便利性以及整齐性较差。为了提高处理的便利性以及整齐性,作为举例,通过解析IO命令所对应的SGL/PRP生成一个或多个DMA(Direct Memory Access,直接存储器访问)命令组,其中,DMA也称为组数据传送方式,由一个或者多个DMA命令构成一个DMA命令组,每个DMA命令所指示的数据大小是不固定的。例如,一个DMA命令组由4个DMA命令构成,每个DMA命令指示1KB的数据;又如一个DMA命令组由5个DMA命令构成,一个DMA命令指示1KB的数据,另外四个DMA命令指示0.5KB的数据。DMA命令指示的数据大小与对应的SGL描述符所描述的地址空间大小有关,例如,SGL指示60个1KB的地址空间,则一个DMA命令组可以包括4个指示1KB数据的DMA命令;又如,SGL指示30个2KB的地址空间,则一个DMA命令组包括2个指示2KB数据的DMA命令。

在一个应用场景中,一个DMA命令组列出了多个DMA命令,一个DMA命令组用于操作指定长度的数据。本申请的例子中,指定长度可以是一个数据帧大小,即4KB;可以将4KB大小称为一个数据传输单元(DTU,Data Transfer Unit),对应FTL表的每个表项;存储设备在处理IO命令时,依照DTU为单位发起数据传输。

基于此,一个IO命令可以包括一个或者多个DMA命令组。例如,一个IO命令指示的数据大小为4KB,则其对应一个DMA命令组。又如,一个IO命令指示的数据大小为12KB,则其对应3个DMA命令组。

在另一个应用场景中,DMA命令组所指示的数据大小还可能小于一个DTU的长度。例如,一个IO命令指示的数据大小为13KB,则其对应于4个DMA命令组,前3个DMA命令组指示的数据大小为4KB,而第4个DMA命令组指示的数据大小为1KB。也就是说,前述DMA命令组指示的数据大小可以是一个固定值(4KB),也可以是IO命令指示的数据大小对该固定值取模,即13KB对4KB取模,为1KB。

此实施例中,可以通过DMA命令可执行DMA传输。DMA传输是指将数据从一个地址空间复制到另一个地址空间,其提供在主机和存储器之间或者存储器和存储器之间的高速数据传输。传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式,通过硬件开辟一条直接传输数据的通道,使得CPU的效率大大提高。

上述的一条DMA命令可以通过DMA技术实施一次数据传输。DMA命令包含主机内存地址和存储设备内存地址(例如DRAM地址),故DMA命令组指示了主机内存地址空间与存储设备内存地址空间的映射关系。对于写命令,主机内存地址为源地址,存储设备内存地址为目的地址;对于读命令,主机内存地址为目的地址,存储设备内存地址为源地址。其中,DMA命令所包含的主机内存地址是根据SGL或PRP所描述的地址空间来确定的,存储设备内存地址由存储设备进行分配,存储设备可以分配连续的存储设备内存地址空间,以提高DMA的处理效率。

当IO命令为写命令,则响应于接收的写命令所对应的一个或多个DMA命令,根据DMA命令所指示的主机内存地址从主机中获取DMA命令指示的数据。

接着,执行步骤202,检测数据是否为特定数据。图1B中所述的主机命令处理单元可以对经过的一个或多个DMA命令所对应的数据做检测,以便识别这些数据是否为特定数据。作为举例,特定数据可以指定为不适合写入到NVM芯片105中的数据,例如,指定数据为随机性较低的数据(非随机数据),如随机性较低的数据是指数据中所有的比特位数据均相同或者重复循环的数据。作为举例,非随机性数据包括以下中的任一项:全0、全1、其中表示以01循环的数据,表示以10循环的数据。在本实施例中,可以将每个DMA命令所对应的数据作为检测单位,也可以将多个DMA命令组成的DMA命令组所指示的数据作为检测单位。例如,一个DMA命令组由4个DMA命令构成,每个DMA命令指示1KB的数据,那么可以对这四个1KB的数据分别进行检测,也可以对这个DMA命令组指示的4KB的数据一起进行检测;又如一个DMA命令组由5个DMA命令构成,一个DMA命令指示1KB的数据,另外四个DMA命令指示0.5KB的数据,那么可以依次对1KB的数据和四个0.5KB的数据分别进行检测,也可以对这个DMA命令组指示的3KB的数据进行检测。

最后,执行步骤203,将非特定数据写入NVM。作为举例,这里的非特定数据可以是随机性比较高的数据,如数据中所有的比特位数据不全相同和/或以某种规律重复循环,例如,非特定数据可以是非全0数据或非全1数据。又作为举例,这里的非特定数据可以除特定数据之外的数据,即若数据不是特定数据,那么该数据即为非特定数据;或者非特定数据是从除特定数据之外的数据中所获取的数据。

在一些实施例中,将非特定数据写入NVM包括:响应于数据为非特定数据,为非特定数据分配对应的物理地址,并在FTL表中记录非特定数据所对应的逻辑地址和物理地址之间的关系;以及根据物理地址将非特定数据写入NVM。在写命令执行过程中,存储设备102获取到写命令对应的非特定数据后,存储命令处理单元1045可以为非特定数据分配可用的物理地址,并在存储介质管理单元1043中的FTL表中记录写命令访问的逻辑地址(LBA)与分配的物理地址的映射关系,然后存储命令处理单元1045控制介质接口控制器1044根据分配的物理地址把这些非特定数据写入到NVM芯片105中。

NVM具有多种规格。例如,相同或不同厂家的NVM,其物理块数量与大小、物理页数量与大小等各不相同,这为控制部件管理NVM引入了额外的负担。为了便于使用多样化的NVM,控制部件或其存储介质管理单元将多样化的NVM组织为标准的或统一的形态。例如统一形态物理块包括1000个物理页,每个物理页大小为16KB。可以理解的是,1000个物理页、16KB这些均为举例。依然作为举例,一款NVM芯片,其物理块实际包括512个物理页,每个物理页大小为16KB。此时,将这款NVM芯片的2个物理块组合得到统一形态的物理块,每个真实物理块为统一形态的物理块提供500个物理页,余下的物理页保留或不使用。可以理解的,根据NVM芯片的实际规格,用一个或多个真实的物理块构建统一形态的物理块。图3A展示了本申请提供的一种将非特定数据写入到NVM的示意图。

在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑区块地址(Logical Block Address,LBA)物理块地址的映射关系。如图3A所示,NVM包含物理块0、物理块1、物理块2、物理块3、物理块4、物理块5、物理块6以及物理块7,若控制部件接收主机发送的I/O命令,该I/O命令为写命令且该写命令上携带逻辑区块地址LBA3。为该写命令分配由物理块1提供的逻辑块空间,然后将写命令对应的数据写入物理块1中;以及将LBA3与用于物理块1的地址(例如,物理地址)记录在FTL表中。进一步,还可以通过类似的方式为LBA0、LBA1、LBA2、LBA4、LBA5、LBA6、LBA7分配对应的物理地址,例如LBA0对应的物理块0的物理地址、LBA1对应的物理块1的物理地址等等。

在另一些实施例中,若步骤202中的检测结果为一个或多个DMA命令所对应的数据为特定数据,则不将这些特定数据写入NVM或无需将这些特定数据写入NVM。此实施例中,若一个或多个DMA命令所对应的数据为特定数据,可以对特定数据所对应的DMA命令做标识,并将该标识存储在图1C中的共享存储器中,以使得存储命令处理单元1045控制存储介质管理单元1043在FTL表中记录特定数据所对应的逻辑地址和标识之间的关系。

图3B展示了本申请提供的一种不将特定数据写入到NVM的示意图。图1B中的主机命令处理单元1042从主机接口1041接收到写命令(即图3B中“NVMe CMD(写)”所示)后,主机命令处理单元1042可以生成DMA命令组。若根据NVMe写命令生成的6个DMA命令组,每个DMA命令组对应一个DTU,共有DTU0、DTU1、DTU2、DTU3、DTU4、DTU5等6个DTU,若DTU3所对应的DMA命令组指示的数据为全0数据,则主机命令处理单元根据6个DMA命令组进行数据搬移(将数据从主机写入到存储设备中)时,仅将DTU0、DTU1、DTU2、DTU4、DTU5所对应的数据分别从主机内存中搬移到存储设备内存中,不将DTU3所对应的数据搬移到存储设备内存,然后后端模块(介质接口控制器1044)分别将DTU0、DTU1、DTU2、DTU4、DTU5所对应的数据从存储设备内存中搬移到NVM中,其中,NVM包括五个数据单元(DU,Data Unit),分别为DU 0、DU1、DU2、DU4、DU5,DU 0与DTU 0对应、DU 1与DTU 1对应、DU 2与DTU 2对应、DU 4与DTU 4对应、DU 5与DTU 5对应。

图3C展示了根据本申请实施例的一种用于存储设备的写数据的方法写入数据的示意图。图1B中的主机命令处理单元1042从主机接口1041接收到写命令后,主机命令处理单元1042根据写命令生成6个DMA命令组,若根据NVMe写命令生成的6个DMA命令组,每个DMA命令组对应一个DTU,共有DTU0、DTU1、DTU2、DTU3、DTU4、DTU5等6个DTU,每个DTU所对应的逻辑地址分别为:DTU0-LA0,DTU1-LA1、DTU2-LA2、DTU3-LA3、DTU4-LA4、DTU5-LA5,若DTU3所对应的DMA命令组指示的数据为全0数据,则主机命令处理单元根据6个DMA命令组进行数据搬移(将数据从主机写入到存储设备中)时,仅将DTU0、DTU1、DTU2、DTU4、DTU5所对应的数据分别从主机内存中搬移到存储设备内存中,不将DTU3所对应的数据搬移到存储设备内存。另外存储命令处理单元1045会分别为每个DTU所对应的数据分配一个物理地址,其每个物理地址所对应存储空间为一个数据单元(DU,Data Unit),即分配了五个DU,分别为DU 0、DU1、DU2、DU4、DU5,DU 0所对应的物理地址为PA0、DU 1所对应的物理地址为PA1、DU 2所对应的物理地址为PA2、DU 4所对应的物理地址为PA4、DU 5所对应的物理地址为PA5。存储命令处理单元1045分配完物理地址之后,对于非特定数据(即图3C中的DTU0、DTU1、DTU2、DTU4、DTU5),存储命令处理单元1045可以为其分配物理地址并在存储介质管理单元1043中的FTL表中记录其逻辑地址与分配的物理地址的对应关系。如图3C所示,FTL表中记录了DTU0、DTU1、DTU2、DTU4、DTU5的逻辑地址LA0、LA1、LA2、LA4、LA5与其分配的物理地址PA0、PA1、PA2、PA4、PA5的对应关系。对应未分配物理地址的逻辑地址(如图3C中的LA6、LA7所示),可以保留未分配的状态(即图3C中的“Null”所示)。这里的“Null”指代的是空,代表并未为该逻辑地址分配对应的物理地址。

对于特定数据(即图3C中的DTU3),可以对特定数据对应的DMA命令组做标识(即图3C中的将DTU3的逻辑地址LA3标识为“全0”),并将该标识存储在图1C中的共享存储器中,存储命令处理单元1045可以控制存储介质管理单元1043在FTL表中记录DTU3所对应的逻辑地址LA3和标识“全0”之间的关系。

作为举例,将非特定数据写入NVM包括两个步骤:第一步骤为通过存储命令处理单元1045将非特定数据从主机搬移到存储设备内存,例如,存储设备内存为动态随机存储器DRAM;第二步骤为根据非特定数据所对应的物理地址通过后端模块(图1B所示的介质接口控制器)将非特定数据从DRAM写入到NVM中。

进一步,在本申请实施例所提供的方案中,一个或多个DMA命令所指示的数据为特定数据,则不将特定数据写入NVM。由于将数据写入NVM包括至少两个步骤,故不将特定数据写入NVM可以包括将特定数据写入DRAM。

作为举例,如前所述的步骤203还包括:将非特定数据写入存储设备的内存,而无需将特定数据写入存储设备的内存。若DMA命令指示的数据为非特定数据,则可以根据该DMA命令所携带的逻辑地址,将该DMA命令指示的数据存储到存储设备的内存(如图1A中的DRAM)中,若DMA命令指示的数据为特定数据,则无需根据该DMA命令所携带的逻辑地址,将该DMA命令指示的数据存储到存储设备的内存(如图1A中的DRAM)中。

又作为一种举例,若DMA命令指示的数据为特定数据,则可以根据该DMA命令所携带的逻辑地址,将该DMA命令指示的数据存储到存储设备的内存中。

图3D展示了本申请提供的一种将特定数据写入到存储设备内存的示意图。图1B中的主机命令处理单元1042从主机接口1041接收到写命令(即图3D中“NVMe CMD(写)”所示)后,主机命令处理单元1042可以生成DMA命令组。图3D展示了根据NVMe CMD写命令生成的6个DMA命令组,每个DMA命令组对应一个DTU,共有DTU0、DTU1、DTU2、DTU3、DTU4、DTU5等6个DTU,其中,DTU0、DTU1、DTU2、DTU4、DTU5所对应的数据为非特定数据,而DTU3所对应的数据为特定数据(如全0),存储设备根据DTU0、DTU1、DTU2、DTU3、DTU4、DTU5发起数据写入时,将DTU0、DTU1、DTU2、DTU3、DTU4、DTU5所对应的数据均存入存储设备内存中。然后后端模块(介质接口控制器)分别将DTU0、DTU1、DTU2、DTU4、DTU5所对应的数据从存储设备内存中搬移到NVM中,而不将DTU3所对应的数据所对应的数据搬移到NVM中。

在又一些实施例中,上述用于存储设备的写数据的方法还包括:响应于检测到写命令,根据第一开关信号使能检测数据是否为特定数据;以及响应于未检测到待执行写命令,根据第二开关信号停止检测数据是否为特定数据。图1B中的主机命令处理单元1042可以根据写命令确定是否对该写命令对应的DMA命令所指示的数据进行数据类型的检测,若主机命令处理单元1042检测到了写命令,则生成使能信号(即上述的“第一开关信号”)使能检测数据是否为特定数据;若主机命令处理单元1042未检测到待执行的写命令,则生成关闭信号(即上述的“第二开关信号”)以停止检测数据是否为特定数据。

在另一些实施例中,上述用于存储设备的写数据的方法还包括:对获取的数据进行PI签名或AES加密。在本实施例中,图1C中的DMA模块可以执行写命令对应的DMA命令所指示的数据进行PI签名或AES加密。PI(Protect Information)指的是对传输的数据进行签名。AES(Advanced Encryption Standard)是一种针对区块所采用的高级加密标准。AES是一种对称加密算法,加密和解密用相同的密钥。可选地,对写命令对应的DMA命令所指示的数据进行PI签名或AES加密与检测该数据是否为特定数据同时执行、并行处理。

根据上述步骤203-步骤203,本申请的方案在控制数据写入到存储设备的过程中,通过检测将非特定数据写入NVM,而不将特定数据写入NVM,从而避免对NVM中的数据加扰码后,由于数据的随机性不高导致后续读数据所导致的误码率较高的问题。另外,由于本申请的方案只将非特定数据写入NVM中而不将特定数据写入NVM中,节省了写入命令所指示的数据写入存储设备闪存中的时间,进而可以提升数据写入的效率。

下面将进一步介绍实现上述读命令处理的具体硬件电路。

图4A展示了根据本申请实施例的一种存储控制器的电路结构图。如图4A所示,存储控制器包括主机命令处理单元1042、存储介质管理单元1045与存储命令处理单元1043。主机命令处理单元1042包括DMA引擎400与共享存储器。主机命令处理单元1042可以响应于从主机接口1041收到写命令,生成一个或多个存储命令以及与存储命令对应的一个或多个DMA命令,并将一个或多个DMA命令存储到共享存储器中,DMA引擎400接收共享存储器中一个或多个DMA命令,将一个或多个存储命令提供给存储命令处理单元1043。DMA引擎400包括第一数据搬移电路401、第二数据搬移电路403以及数据保护与监测电路402。

第一数据搬移电路401响应于接收到DMA命令,根据DMA命令从主机获取DMA命令指示的数据(即图4A中的“(1)”所示),并将获取的数据提供给数据监测电路502(即图4A中的“(2)”所示)。数据保护与监测电路402,用于对数据加密和/或进行完整性校验的同时检测数据是否为特定数据,以及在共享存储器中记录检测结果(即图4A中的“(3.1)”所示),例如,该检测结果包含数据加密和/或完整性校验的检测结果、或数据为特定数据的检测结果。数据保护与监测电路402将对数据加密和/或进行完整性校验的结果数据提供给第二数据搬移电路403(即图4A中的“(3.2)”所示)。PI(Protect Information)指的是对传输的数据进行签名。AES(Advanced Encryption Standard)是一种针对区块所采用的高级加密标准,它是一种对称加密算法,加密和解密用相同的密钥。数据保护与监测电路402可以采用AES加密算法对数据进行加密,可以采用PI签名对数据进行完整性校验。

第二数据搬移电路403将从数据保护与监测电路402获取的结果数据搬移到DRAM110(即图4A中的“(4)”所示)。存储命令处理单元1043用于响应于收到存储命令并根据存储命令对应的数据的检测结果确定是否将DRAM110中的结果数据写入至存储控制器所控制的NVM105。若存储命令处理单元1045获取到存储命令对应的数据的检测结果为该数据为非特定数据(即图4A中的“(5)”所示),存储命令处理单元1045可以为非特定数据分配可用的物理地址,并在存储介质管理单元1043中的FTL表中记录写命令访问的逻辑地址(LBA)与分配的物理地址的映射关系(即图4A中的“(6)”所示),然后存储命令处理单元1045控制介质接口控制器1044根据分配的物理地址(即图4A中的“(7)”所示)把这些非特定数据从DRAM110(即图4A中的“DTU”)写入到NVM芯片105中(即图4A中的“(8)”所示)。

若存储命令处理单元1045获取到存储命令对应的数据的检测结果为该数据为特定数据(即图4A中的“(5)”所示),存储命令处理单元1045可以控制存储介质管理单元1043在FTL表中记录特定数据所对应的逻辑地址和指代特定数据的指定标识(例如“全0”)之间的关系(即图4A中的“(6)”所示)。此时不将这些特定数据写入NVM或无需将这些特定数据写入NVM,也即图4A中的第(7)步骤、第(8)步骤不再发生。

图4B展示了一种DMA引擎在不同时刻工作的示意图。如图4B所示,T0、T1、T2、T3指的是连续的不同时刻(图4B仅示例性地示出了四个不同时刻,本实施例并不受限于此)。在T0时刻,第一数据搬移电路响应于DMA命令1获取数据,数据保护与监测电路、第二数据搬移电路处于空闲状态(即未工作状态);在T1时刻,第一数据搬移电路响应于DMA命令2获取数据,数据保护与监测电路检测数据(即第一数据搬移电路在T0时刻获取的数据)是否为特定数据并对该数据加密和/或进行完整性校验得到结果数据,第二数据搬移电路处于空闲状态;在T2时刻,第一数据搬移电路处于空闲状态,数据保护与监测电路检测数据(即第一数据搬移电路在T1时刻获取的数据)是否为特定数据并对该数据加密和/或进行完整性校验得到结果数据,第二数据搬移电路将数据保护与监测电路在T1时刻得到结果数据和/或在T1时刻检测完的数据搬移到DRAM 110;在T3时刻,第一数据搬移电路、数据保护与监测电路处于空闲状态,第二数据搬移电路将数据保护与监测电路在T2时刻得到结果数据和/或在T2时刻检测完的数据搬移到DRAM 110。

作为举例,若数据保护与监测电路402检测到DMA命令指示的数据为特定数据,第二数据搬移电路403无需将从数据保护与监测电路402获取的结果数据搬移到DRAM110(即图4A中的第“(4)”步骤不再发生)。可选地,若数据保护与监测电路402检测到DMA命令指示的数据为特定数据,第二数据搬移电路403可以将从数据保护与监测电路402获取的结果数据搬移到DRAM 110(即图4A中的第“(4)”所示)。在此实施例中,存储命令处理单元1045获取到存储命令对应的数据的检测结果为该数据为特定数据(即图4A中的“(5)”所示),由于存储命令处理单元1045不将存储命令对应的数据写入NVM,故释放图4A的DRAM110中的特定数据所对应的存储空间以及该特定数据所对应的DMA命令所占用的共享存储器的存储空间。

在另一些实施例中,上述实施例中的存储控制器,还包括:检测控制开关404,检测控制开关404配置为:响应于检测到写命令,根据第一开关信号使能检测数据是否为特定数据;以及响应于未检测到待执行写命令,根据第二开关信号停止检测数据是否为特定数据。主机命令处理单元1042可以根据写命令确定是否对该写命令对应的DMA命令所指示的数据进行数据类型的检测,若主机命令处理单元1042检测到了写命令,则生成使能信号(即上述的“第一开关信号”)使能检测数据是否为特定数据;若主机命令处理单元1042未检测到待执行的写命令,则生成关闭信号(即上述的“第二开关信号”)以停止检测数据是否为特定数据。

图4C展示本申请实施例所提供的一种存储设备的结构示意图。如图4C所示,存储设备,包括:存储控制器(即图4C中的控制部件104),内存110和NVM105,所述存储控制器包括主机命令处理单元1042、存储介质管理单元1045与存储命令处理单元1043;所述主机命令处理单元包括DMA引擎400与共享存储器,用于响应于收到写命令,生成一个或多个存储命令以及与存储命令对应的一个或多个DMA命令,并将一个或多个DMA命令给所述DMA引擎400,将一个或多个存储命令提供给存储命令处理单元;所述DMA引擎包括第一数据搬移电路401、第二数据搬移电路403以及数据保护与监测电路402;第一数据搬移电路401,用于响应于接收到DMA命令,根据所述DMA命令获取所述DMA命令指示的数据,并将获取的所述数据提供给数据监测电路;数据保护与监测电路402,用于对所述数据加密和/或进行完整性校验的同时检测所述数据是否为特定数据,以及在所述共享存储器中记录检测结果;数据保护与监测电路402将对所述数据加密和/或进行完整性校验的结果数据提供给所述第二数据搬移电路403;第二数据搬移电路403将从所述数据保护与监测电路402获取的结果数据搬移到内存;所述存储命令处理单元1043,用于响应于收到存储命令并根据存储命令对应的数据的所述检测结果确定是否将所述内存中的结果数据写入至所述存储控制器所控制的NVM105。该存储设备的存储控制器即为图1A中的控制部件104,内存即为图1A中的DRAM,NVM即为图1A中的NVM105。存储设备的存储控制器具有图4A示出的存储控制器的电路结构,其组件和功能与图4A示出的存储控制器相同,在此不再赘述。

图5A展示了本申请实施例的一种用于存储设备的读数据的方法的流程图,即为处理读命令的方法。如图5A所示,首先,执行步骤501,获取读命令,根据读命令生成一个或多个存储命令,通过FTL表获取存储命令所携带的逻辑地址对应的物理地址或第一特定标识。对于读命令,存储设备根据LBA,查找FTL表,找到对应的物理地址或指代特定数据的第一特定标识。这里的第一特定标识可以是根据本申请上述实施例的用于存储设备的写数据的方法中,存储介质管理单元1043根据写命令对应的数据的检测结果(即写命令对应的数据为特定数据)在FTL表中记录特定数据所对应的逻辑地址对应的指定标记(例如图3C的FTL表中,逻辑地址LA3对应的指定标记“全0”)。

接着执行步骤502,根据每个存储命令生成与其对应的DMA命令。DMA命令携带第二信息,第二信息包括存储设备内存地址和/或第二特定标识。作为举例,若存储设备查询FTL表确定读命令所对应的一个或多个DMA命令所指示的逻辑地址对应第一特定标识,则根据图1B中的主机命令处理单元1042可以根据每个存储命令生成与其对应的DMA命令,并对DMA命令进行标识,即DMA命令携带第二特定标识,以及将DMA命令存储到共享存储器中。这里的第二特定标识与上述实施例的用于存储设备的写数据的方法中,若写命令对应的一个或多个DMA命令所对应的数据为特定数据,对该特定数据所对应的DMA命令做标识的功能相同,均是标记DMA命令所指示的数据为特定数据。

最后执行步骤503,若DMA命令的第二信息为第二特定标识,则根据第二特定标识生成特定数据,并根据DMA命令将特定数据发送给主机。图4A中的DMA引擎可以根据第二特定标识生成特定数据,并根据DMA命令将特定数据发送给主机。作为举例,DMA引擎可以一次传输一个DMA命令组所对应的数据,由于一个DMA命令组可能包含不止一个DMA命令,例如,一个DMA命令组中第一部分DMA命令所指示的数据为特定数据,第二部分DMA命令所指示的数据为非特定数据,则DMA引擎根据第二部分DMA命令从NVM中获取非特定数据,根据第一部分DMA命令生成特定数据,然后将获取非特定数据和生成的特定数据发送给主机。

图5B展示了本申请实施例提供的一种根据DMA命令搬移数据的过程示意图。如图5B所示,一个DMA命令组由4个DMA命令构成,分别为DMA命令1、DMA命令2、DMA命令3和DMA命令4,其中,DMA命令1指示的数据为全0,DMA命令4指示的数据为全1,DMA命令2指示的数据为非特定数据1,DMA命令3指示的数据为非特定数据2,后端模块根据DMA命令2和DMA命令3将非特定数据1和非特定数据2从NVM芯片中搬移到存储设备内存中,然后DMA引擎根据DMA命令2和DMA命令3从存储设备内存(DRAM)中获取非特定数据1和非特定数据2,以及根据DMA命令1生成全0数据,DMA命令4生成全1数据,并将全0数据、非特定数据1、非特定数据2以及全1数据搬移到主机。

图5C展示了本申请实施例所提供的一种根据读命令从存储器中读取数据的过程示意图。如图5C所示,首先主机命令处理单元获取NVMe命令(即读命令)并根据NVMe命令生成存储命令(即图5C中的“(1)”所示),NVMe命令包括逻辑地址和主机内存地址;然后通过FTL表查询逻辑地址对应的物理地址或发现指代特定数据的特定标记(即图5C中的“(2a)”所示),为NVMe命令分配对应的逻辑地址分配对应的存储设备内存地址(即图5C中的“(2b)”所示),进而根据NVMe命令得到一个或多个存储命令,该存储命令携带有逻辑地址和与之对应的物理地址或特定标记;之后,根据存储命令生成DMA命令(即图5C中的“(3)”所示),DMA命令携带有存储设备内存地址、主机内存地址,若存储命令携带有特定标记,那么此时DMA命令还携带有特定标记;最后,若DMA命令还携带有特定标记,则生成特定数据并根据存储设备内存地址、主机内存地址,将生成的特定数据搬移到主机内存(即图5C中的“(4a)”所示),若DMA命令未携带有特定标记,则根据存储设备内存地址、主机内存地址,从存储设备内存将数据搬移到主机内存。

作为举例,上述步骤503还包括响应于生成特定数据,发送特定数据已读出的通知。图1B中的存储命令处理单元1043可以向主机命令处理单元1042发送特定数据已读出的通知。

在另一些实施例中,若DMA命令的第二信息为存储设备内存地址,则根据通过FTL表获取的DMA命令对应的存储命令所携带的逻辑地址对应的物理地址以及存储设备内存地址,从NVM读取数据至存储设备内存。若DMA命令的第二信息为存储设备内存地址,而非第二特定标识,那么该DMA命令指示的数据为非特定数据。因此可以通过根据本申请上述实施例的用于存储设备的写数据的方法中,存储命令处理单元1045可以为非特定数据分配可用的物理地址,并在存储介质管理单元1043中的FTL表中记录的存储设备内存地址与分配的物理地址的映射关系,从NVM105读取数据至DRAM110。

在又一些实施例中,若通过FTL表获取到存储命令所携带的逻辑地址对应的物理地址,则根据物理地址从NVM读出数据,并根据存储命令对应的DMA命令所携带的存储设备内存地址将从NVM读取的数据写入存储设备的内存。这里的物理地址可以是通过根据本申请上述实施例的用于存储设备的写数据的方法中,存储命令处理单元1045为非特定数据分配可用的物理地址,并在存储介质管理单元1043中的FTL表中记录该物理地址与存储设备内存地址的映射关系。

在另一些实施例中,若通过FTL表获取到存储命令所携带的逻辑地址对应的第一特定标识,则在存储命令对应的DMA命令中记录第二特定标识,而不从NVM读取数据。这里的第一特定标识可以是根据本申请上述实施例的用于存储设备的写数据的方法中,存储介质管理单元1043根据写命令对应的数据的检测结果(即写命令对应的数据为特定数据)在FTL表中记录特定数据所对应的逻辑地址对应的指定标记(例如图3C的FTL表中,逻辑地址LA3对应的指定标记“全0”)。若在FTL表中获取到存储命令的逻辑地址对应的第一特定标识,可以在存储命令对应的DMA命令中记录第二特定标识以执行步骤503,而不从或无需从NVM105读取数据。

在又一些实施例中,上述用于存储设备的读数据的方法还包括:响应于检测到读命令,根据第三开关信号使能向主机发送生成的所述特定数据;以及响应于检测到读命令执行完毕,根据第四开关信号停止向主机发送生成的所述特定数据。图1B中的主机命令处理单元1042可以根据读命令确定是否向主机发送生成的特定数据,若主机命令处理单元1042检测到了读命令,则生成使能信号(即上述的“第三开关信号”)使能向主机发送生成的特定数据;若主机命令处理单元1042检测到读命令执行完毕,则生成关闭信号(即上述的“第四开关信号”)以向主机发送生成的特定数据。

在另一些实施例中,上述用于存储设备的读数据的方法还包括:生成特定数据的步骤和对特定数据进行AES解密和/或PI签名的步骤同时处理。

根据步骤501-步骤503,本申请实施例的用于存储设备的读数据的方法,在控制主机从存储设备的NVM读取数据的过程中,通过根据读命令对应的DMA命令所携带的特定标识生成特定数据,并根据DMA命令将特定数据发送给主机。由于本申请的方案中当DMA指示的数据为特地数据,则无需从NVM中读取特定数据,节省了从NVM读取数据的时间,进而可以提升数据读取的效率。下面将进一步介绍实现上述读命令处理的具体硬件电路。

图6展示了应用于本申请实施例的一种用于存储设备的读数据的方法的电路结构图。如图6所示,主机通过主机接口向存储设备传输读命令,主机接口将读命令传输到共享存储器进行存储。存储命令处理单元1043提取读命令中的PRP/SGL字段,将读命令提供给SGL/PRP单元。以SGL单元的处理过程为例(PRP单元的处理过程同理,故而不再叙述PRP单元的处理过程),若读命令携带了SGL,则将SGL缓存在一个缓存单元,若读命令携带了SGL指针,则通过主机接口从主机中获取SGL并且缓存到缓存单元中;接着,根据SGL中一个或多个SGL描述符所描述的信息生成一个或多个DMA命令组,将DMA命令组存储在共享存储器中。在本实施例中,若存储命令处理单元1043通过FTL表获取到读命令对应的存储命令所携带的逻辑地址对应的物理地址(即图6中的“(1)”所示),存储命令处理单元1043可以向介质接口控制器1044发送读取命令(即图6中的“(2)”所示),介质接口控制器1044根据该读取命令访问NVM105的物理地址(即图6中的“(3)”所示),并将读取出的数据存储至图1C中的DRAM110中。之后,存储命令处理单元1043可以向读取发起电路发出数据已读的通知(即图6中的“(4)”所示)。在本实施例中,若存储命令处理单元1043通过FTL表获取到读命令对应的存储命令所携带的逻辑地址对应第一特定标识(即图6中的“(1)”所示),则存储命令处理单元1043无需向介质接口控制器1044发送读取命令(即图6中的第“(2)”步骤不执行),介质接口控制器1044也无需根据该读取命令访问NVM105的物理地址(即图6中的第“(3)”步骤不执行)。存储命令处理单元1043可以向读取发起电路发出数据已读的通知(即图6中的“(4)”所示)。

图7展示了本申请实施例所提供的一种的DMA引擎的电路结构图。该DMA引擎400包括:第一数据搬移单元401、数据保护与监测电路402、第二数据搬移单元403。第一数据搬移单元401用于根据DMA命令从本地存储器获取待搬移数据,并提供给数据保护与监测电路402,若DMA命令指示了标记,则第一数据搬移单元401生成待搬移数据,数据保护与监测电路402对接收的待搬移数据解密和/或进行数据校验,并将结果数据提供给第二数据搬移单元403。第二数据搬移单元403根据DMA命令将结果数据搬移到外部的存储器。在本实施例中,若DMA引擎400获取到的DMA命令所携带的第二信息为存储设备内存地址(即图7中的“(1)”所示),则DMA引擎400中的第一数据搬移单元401根据DMA命令从DRAM110中获取待搬移数据(即图7中的“(2)”所示),第一数据搬移单元401可以将获取到的待搬移数据提供给数据保护与监测电路402以进行数据解密和/或进行完整性校验(即图7中的“(3)”所示)。数据保护与监测电路402可以将解密和/或进行数据校验的结果数据提供给第二数据搬移单元403(即图7中的“(4)”所示),第二数据搬移单元403根据DMA命令通过主机接口1041将结果数据搬移到主机(即图7中的“(5)”所示)。

在本实施例中,若DMA引擎400获取到的DMA命令所携带的第二信息为指代特定数据的第二特定标识(即图7中的“(1)”所示),则第一数据搬移单元401生成该特定数据并将生成的特定数据提供给数据保护与监测电路402以进行数据解密和/或进行完整性校验(即图7中的“(3)”所示)。数据保护与监测电路402可以将解密和/或进行数据校验的结果数据提供给第二数据搬移单元403(即图7中的“(4)”所示),第二数据搬移单元403根据DMA命令通过主机接口1041将结果数据搬移到主机(即图7中的“(5)”所示)。

在另一些实施例中,根据本申请实施例的DMA引擎还包括第二开关电路704,第二开关电路704配置为:响应于检测到读命令,根据第三开关信号使能向主机发送生成的特定数据;以及响应于检测到读命令执行完毕,根据第四开关信号停止向主机发送生成的特定数据。图1B中的主机命令处理单元1042可以根据读命令确定是否向主机发送生成的特定数据,若主机命令处理单元1042检测到了读命令,则生成使能信号(即上述的“第三开关信号”)使能向主机发送生成的特定数据;若主机命令处理单元1042检测到读命令执行完毕,则生成关闭信号(即上述的“第四开关信号”)以向主机发送生成的特定数据。

根据本申请的一个方面,本申请实施例还提供一种控制器,该控制器包括如上文所述的存储控制器、DMA引擎400、存储设备。存储控制器、DMA引擎400、存储设备采用上述实施例所描述的电路,由于上文已经详细介绍了该电路,因此在此不再详细叙述。

根据本申请的一个方面,本申请实施例还提供一种电子设备,该电子设备包括控制器,控制器为上述以上实施例所提及的控制器。由于上文中已经进行了详细地介绍,故而不再详细叙述。

需要说明的是,为了简明的目的,本申请将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本申请的方案并不受所描述的动作的顺序限制。因此,依据本申请的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本申请所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本申请某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本申请对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本申请某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。

在具体实现方面,基于本申请的公开和教导,本领域技术人员可以理解本申请所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

31页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于处理图数据的计算系统和存储分层方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类