CN117369710A - 用于控制部件的方法及相关产品 - Google Patents

用于控制部件的方法及相关产品 Download PDF

Info

Publication number
CN117369710A
CN117369710A CN202210772222.XA CN202210772222A CN117369710A CN 117369710 A CN117369710 A CN 117369710A CN 202210772222 A CN202210772222 A CN 202210772222A CN 117369710 A CN117369710 A CN 117369710A
Authority
CN
China
Prior art keywords
data
command
moved
circuit
moving
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210772222.XA
Other languages
English (en)
Inventor
王玉巧
刘传杰
黄好城
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Starblaze Technology Co ltd
Original Assignee
Chengdu Starblaze Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Starblaze Technology Co ltd filed Critical Chengdu Starblaze Technology Co ltd
Priority to CN202210772222.XA priority Critical patent/CN117369710A/zh
Publication of CN117369710A publication Critical patent/CN117369710A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请涉及用于控制部件的方法及相关产品。其中所述方法包括:响应于收到数据搬移命令,执行并检测所述数据搬移命令是否包含目标标识,其中所述目标标识用于表示待搬移数据包括无效数据;响应于所述数据搬移命令中包含有所述目标标识,获取所述数据搬移命令所指示的待搬移数据;以及将所述待搬移数据传输至与传输电路,并指示所述传输电路将所述无效数据丢弃或传输所述无效数据时还传输无效信号。通过本申请的方案,可以基于数据搬移命令中的目标标识来对无效数据和有效数据进行有效区分处理,以便能够针对无效数据执行相应的数据传输操作,从而实现对无效数据的有效管理。

Description

用于控制部件的方法及相关产品
技术领域
本申请一般地涉及存储技术领域。更具体地,本申请涉及用于控制部件的方法、以及执行前述方法的控制部件和存储设备。
背景技术
图1A展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102(下文中,将固态存储设备简称为存储设备)包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic RandomAccess Memory,动态随机访问存储器)110。
上述NVM芯片105包括NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive RandomAccess Memory,阻变存储器)等常见的存储介质。
上述控制部件104用于控制在接口103、NVM芯片105以及DRAM110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件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芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
参看图1B,控制部件包括主机接口1041、主机命令处理单元1042、存储命令处理单元1043、介质接口控制器1044与存储介质管理单元1045。主机接口1041获取主机提供的IO命令。主机命令处理单元1042根据IO命令生成存储命令提供给存储命令处理单元1043。存储命令可以访问相同大小的存储空间,例如4KB。将NVM芯片中记录的对应一个存储命令所访问数据的数据单元称为数据帧。物理页记录一个或多个数据帧。例如,物理页的大小17664字节,而数据帧大小为4KB,则一个物理页能存储4个数据帧。
存储介质管理单元1045为每个存储命令维护逻辑地址到物理地址的转换。例如,存储介质管理单元1045包括FTL表。对于读命令,存储介质管理单元1045输出存储命令所访问的逻辑地址(LBA)对应的物理地址。对于写命令,存储介质管理单元1045为其分配可用的物理地址,并记录其访问的逻辑地址(LBA)与分配的物理地址的映射关系。存储介质管理单元1045还维护诸如垃圾回收、磨损均衡等管理NVM芯片所需的功能。
存储命令处理单元1043根据存储介质管理单元1045提供的物理地址,操作介质接口控制器1044向NVM芯片105发出存储介质访问命令。
为了清楚的目的,将主机发送给存储设备102的命令称为IO命令,将主机命令处理单元1042发送给存储命令处理单元1043的命令称为存储命令,将存储命令处理单元1043发送给介质接口控制器1044的命令称为介质接口命令,而将介质接口控制器1044发送给NVM芯片105的命令称为存储介质访问命令。存储介质访问命令遵循NVM芯片的接口协议。
图1C展示了现有技术中控制部件用于对NVMe命令处理的电路结构。如图1C所示,控制部件中主机命令处理单元1042包括共享存储器和DMA单元;存储命令处理单元1043包括SGL/PRP缓存单元、SGL/PRP单元、读取发起电路。主机通过主机接口向存储设备传输遵循NVMe协议的NVMe命令,主机接口将NVMe命令传输到共享存储器进行存储。由于NVMe协议定义通过分散聚合表(Scatter Gather List,简称SGL)或内存区域页((Physical RegionPage,简称PRP)字段来指示访问信息,存储设备中存储命令处理单元1043在接收到该NVMe命令之后,对NVMe命令进行解析以获取SGL/PRP,将NVMe命令提供给SGL/PRP单元。
以SGL单元的处理过程为例(PRP单元的处理过程同理,故而不再叙述PRP单元的处理过程),若读命令携带了SGL,则将SGL缓存在缓存单元,若读命令携带了SGL指针,则通过主机接口从主机中获取SGL并且缓存到缓存单元中;接着,根据SGL中一个或多个SGL描述符所描述的信息生成一个或多个数据搬移命令组(DMA命令组),将DMA命令组存储在共享存储器中。其中,一个DMA命令组包括一个或多个DMA命令,例如,每个DMA命令组中所有DMA命令加起来所搬移的数据大小为存储器中一个传输单元(Date Transfer Uint)DTU的大小,如4KB。接着,DMA命令组中的所有DMA命令需要经DMA单元进行处理。
发明内容
通常在存储器(例如,图1A所示的DRAM)中会为NVMe命令所对应的所有SGL描述符提供连续逻辑地址空间,其中,该连续逻辑地址空间大小代表要搬移的数据大小。NVMe协议定义了逻辑地址空间(简称LBA空间)与主机存储空间。通过SGL描述连续的LBA空间与离散的主机存储空间之间的映射。在实际应用中,LBA空间虽然是连续的,但里面可以有空洞(称为bitbuckets),其中,空洞是指没有主机存储空间与其对应的部分逻辑地址空间。存储设备的控制部件在LBA空间与主机存储空间之间进行数据搬移,将搬移的数据缓存到存储器(如DDR)中。
当存储器所提供的LBA空间存在空洞时,由于多种原因,例如需要将空洞的长度也计入NVMe命令要传输的数据长度,控制部件根据累计的传输的数据长度来识别NVMe命令所要访问的数据搬移是否完成,即当传输的数据大小等于该连续逻辑地址空间大小,将认为NVMe命令所要访问的数据搬移完成;否则,会认为NVMe命令所要访问的数据搬移未完成,而认为NVMe命令处理未完成时,控制部件一般不会释放该NVMe命令所占用的带宽资源或者存储资源等,进而会影响NVMe命令处理效率以及存储设备的性能。因此,为了不影响NVMe命令处理效率以及存储设备的性能,需要对空洞所对应的无效数据进行传输。一般来说,在主机-固态硬盘(也即Host-SSD)方向上(即将主机内存中的数据存储到固态硬盘),LBA空间的空洞是不能被写入数据的,否则会破坏原有的数据。而在SSD-Host方向上(即主机从固态硬盘读取数据),因为主机并没有为无效数据分配存储空间,所以LBA空间的空洞所对应的无效数据是不能搬移到主机存储空间中的。由于NVMe协议并未定义存储器存储空间的使用规则,本申请希望提供存在空洞时,控制部件对于存储器上空洞的处理方案。例如,由于空洞存在,对于一条NVMe命令来说,数据搬移过程中,待搬移数据所占用的主机内存同存储器分配的存储空间大小不一致,希望DMA单元需要处理这种情况,并提高传输效率。
本申请实施例所提供的方案,可以在传输数据过程中,根据数据搬移命令中是否包含目标标识来对待搬移数据进行区分处理,从而实现对无效数据的有效管理。
根据本申请的第一方面,提供了根据本申请第一方面的第一用于控制部件的方法,包括:响应于收到数据搬移命令,执行并检测所述数据搬移命令是否包含目标标识,其中所述目标标识用于表示待搬移数据包括无效数据;响应于所述数据搬移命令中包含有所述目标标识,获取所述数据搬移命令所指示的待搬移数据;以及将所述待搬移数据传输至与传输电路,并指示所述传输电路将所述无效数据丢弃或传输所述无效数据时还传输无效信号。
根据本申请的第一方面的第一用于控制部件的方法,提供了根据本申请第一方面的第二用于控制部件的方法,其中数据搬移命令中还包括存储器地址,将所述存储器地址和获取的待搬移数据传输至所述传输电路,且指示所述传输电路所述待搬移数据为无效数据。
根据本申请的第一方面的第一用于控制部件的方法或第二用于控制部件的方法,提供了根据本申请第一方面的第三用于控制部件的方法,其中所述控制部件包括DMA单元,所述DMA单元包括第一数据搬移电路、第二数据搬移电路和缓存电路,所述方法包括:所述第一数据搬移电路响应于接收数据搬移命令将待搬移数据搬移到所述缓存电路;所述第二数据搬移电路响应于接收的数据搬移命令中包含所述目标标识,从所述缓存电路中获取所述数据搬移命令所指示的待搬移数据;以及将所述待搬移数据传输至所述传输电路,且告知所述传输电路所述待搬移数据为无效数据,使得所述传输电路丢弃所述待搬移数据或者向存储器传输无效数据。
根据本申请的第一方面的第三用于控制部件的方法,提供了根据本申请第一方面的第四用于控制部件的方法,所述DMA单元接收数据搬移命令对,所述数据搬移命令对包括第一类数据搬移命令和第二类数据搬移命令;所述第一数据搬移电路响应于执行第一类数据搬移命令将其所指示的待搬移数据搬移到所述缓存电路;所述第二数据搬移电路响应于执行第二类数据搬移命令将其所指示的待搬移数据从所述缓存电路搬移至传输电路。
根据本申请的第一方面的第四用于控制部件的方法,提供了根据本申请第一方面的第五用于控制部件的方法,其中,响应于收NVMe命令,生成一个或多个数据搬移命令对。
根据本申请的第一方面的第四用于控制部件的方法,提供了根据本申请第一方面的第六用于控制部件的方法,响应于收NVMe命令,生成一个或多个第一类数据搬移命令与一个或多个第二类数据搬移命令;所述第一数据搬移电路响应于执行第一类数据搬移命令将其所指示的待搬移数据搬移到所述缓存电路;所述第二数据搬移电路响应于执行第二类数据搬移命令将其所指示的待搬移数据从所述缓存电路搬移至传输电路。根据本申请的第一方面的第五用于控制部件的方法,提供了根据本申请第一方面的第七用于控制部件的方法,所述数据保护与检测电路响应于对所述待搬移数据处理过程中生成第二指示信息包括:所述数据保护与检测电路对所述搬移数据处理完成时,生成所述第二指示信息。
根据本申请的第一方面的第四用于控制部件的方法至第六用于控制部件的方法之一,提供了根据本申请第一方面的第七用于控制部件的方法,所述第二数据搬移电路响应于第二类数据搬移命令包含所述目标标识,获取第二类数据搬移命令所指示的待搬移数据,将所述待搬移数据传输至传输电路,并指示所述传输电路将所述待搬移数据丢弃或传输所述待搬移数据时还传输无效信号。
根据本申请的第一方面的第七用于控制部件的方法,提供了根据本申请第一方面的第八用于控制部件的方法,所述方法还包括:从所述NVMe命令中获取SGL,且基于SGL生成一个或多个第一类数据搬移命令与一个或多个第二类数据搬移命令;响应于一个或多个第二类数据搬移命令所指示的待搬移数据为无效数据,在指示待搬移数据为无效数据的数据搬移命令中添加目标标识,其中,所述目标标识用于指示所述待搬移数据为无效数据。
根据本申请的第一方面的第八用于控制部件的方法,提供了根据本申请第一方面的第九用于控制部件的方法,其中,响应于所述SGL中的描述了无效数据信息的空洞描述符,生成属于第一类数据搬移命令的第一数据搬移命令,根据第一数据搬移命令将无效数据搬移到所述缓存电路。
根据本申请的第一方面的第九用于控制部件的方法,提供了根据本申请第一方面的第十用于控制部件的方法,根据所述SGL所描述的要搬移的数据长度分配一个或多个存储器地址;根据分配的存储器地址生成属于第二类数据搬移命令的第二数据搬移命令,根据第二数据搬移命令将所述缓存电路中的数据搬移到分配的存储器地址,其中,在描述了将所述缓存电路中的无效数据搬移到存储器的第二数据搬移命令中添加所述目标标识。
根据本申请的第一方面的第十用于控制部件的方法,提供了根据本申请第一方面的第十一用于控制部件的方法,所述目标标识指示所述第二数据搬移命令的待搬移数据的部分或全部是无效数据。
根据本申请的第一方面的第十用于控制部件的方法或第十一用于控制部件的方法,提供了根据本申请第一方面的第十二用于控制部件的方法,所述目标标识指示无效数据在所述第二数据搬移命令的待搬移数据中的位置。
根据本申请的第一方面的第八用于控制部件的方法至第十二用于控制部件的方法之一,提供了根据本申请第一方面的第十三用于控制部件的方法,其中,响应于所述NVMe命令为写命令,所述第一类数据搬移命令的源地址是所述SGL描述符所描述的主机地址或者空地址,且其的目的地址是所述缓存电路地址,所述第二类数据搬移命令的源地址是所述缓存电路地址,且其目的地址是存储器地址。
根据本申请的第一方面的第八用于控制部件的方法至第十二用于控制部件的方法之一,提供了根据本申请第一方面的第十四用于控制部件的方法,其中,响应于所述NVMe命令为读命令,所述第一类数据搬移命令的源地址是存储器地址,且其的目的地址是所述缓存电路地址,所述第二类数据搬移命令的源地址是所述缓存电路地址,且其目的地址是所述SGL描述符所描述的主机地址或者空地址。
根据本申请的第一方面的第一用于控制部件的方法至第十四用于控制部件的方法之一,提供了根据本申请第一方面的第十五用于控制部件的方法,所述传输电路包括AXI代理电路;其中所述无效信号是遵循AXI协议的指示数据无效的WSTRB信号。
根据本申请的第一方面的第十五用于控制部件的方法,提供了根据本申请第一方面的第十六用于控制部件的方法,其中所述目标标识指示所述数据搬移命令的部分待搬移数据是无效数据;以及指示所述传输电路传输所述待搬移数据的无效数据时还传输无效信号。
根据本申请的第一方面的第十五用于控制部件的方法或第十六用于控制部件的方法之一,提供了根据本申请第一方面的第十七用于控制部件的方法,其中所述传输电路传输无效信号时,关闭传输数据信号的引线。
根据本申请的第二方面,提供了根据本申请第二方面的第一控制部件,包括:DMA单元,其中,所述DMA单元执行并检测数据搬移命令是否包含目标标识,其中所述目标标识用于表示待搬移数据为无效数据;响应于一对数据搬移命令中包含有所述目标标识,获取该对数据搬移命令所指示的待搬移数据;以及将所述待搬移数据传输至传输电路,并指示所述传输电路将所述待搬移数据丢弃或传输所述待搬移数据时还传输无效信号。
根据本申请的第二方面的第一控制部件,提供了根据本申请第二方面的第二控制部件,其中所述传输电路包括AXI代理电路;其中所述无效信号是遵循AXI协议的指示数据无效的WSTRB信号。
根据本申请的第二方面的第一控制部件,提供了根据本申请第二方面的第三控制部件,其中所述传输电路传输无效信号时,关闭传输数据信号的引线。
根据本申请的第三方面,提供了根据本申请第三方面的存储设备,包括存储介质和如本申请第二方面所述的控制部件。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图;
图1A展示了固态存储设备的框图;
图1B展示了现有技术中控制部件的结构示意图;
图1C展示了现有技术中控制部件用于对NVMe命令处理的电路结构图;
图2A展示了本申请实施例所提供的数据传输过程的示意图;
图2B展示了本申请实施例所提供的一种控制部件的结构图;
图2C展示了本申请实施例所提供的用于控制部件的方法的示意图;
图2D展示了本申请实施例所提供的控制部件中DMA单元的结构示意图;
图2E展示了本申请实施例所提供的另一种控制部件的结构示意图;
图2F展示了本申请实施例所提供的DMA单元处理数据搬移命令的示意图;
图2G展示了本申请实施例所提供的DMA单元并行处理数据搬移命令的示意图;以及
图2H展示了本申请实施例所提供的数据搬移电路的结构示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
通常NVMe命令需要描述要访问的数据长度以及要访问的数据地址信息,其中,要访问的数据地址信息用SGL描述符来描述,而且根据要访问的数据长度为SGL描述符提供连续的逻辑地址。图1A和/或图1B基于NVMe命令来对其要访问的数据进行传输以及处理,以下结合图2A对数据具体传输过程进行说明。
图2A展示了本申请实施例所提供的数据传输过程的示意图。如图2A所示,NVMe命令(例如写命令)描述的连续的LBA空间长度是13KB(图2A中的LBA x到LBAx+26,每个LBA可以代表0.5KB),其代表根据NVMe命令的指示主机需要向SSD中传输13KB的数据,但是其中真正只需要11KB数据,因此在13KB的连续的LBA空间中存在2KB空洞(不需要向该空洞传输数据)。而在主机内存中,可以用不连续的多块内存来容纳这11KB的数据。例如,可以将11KB数据放到3个大小不同的内存中,如图2A中的3KB的数据块A、4KB的数据块B和4KB的数据块C。其中,前述LBA空间中的2KB空洞存在于从LBAx开始的7KB-9KB的区域(图2A中的阴影部分)。
具体地,结合SGL来描述上述的数据传输场景。在图2A中使用了3个SGL segment(例如,SGL segment 0、SGL segment 1和SGL segment 2)。其中,SGL Segment0描述将数据块A的3KB数据搬移到LBA x开始的3KB空间(也即LBA x,LBA x+6)。同时,segment 0还描述了数据块A的地址(Address=A)以及下一个SGL segment 1的地址(Address=segment 1)。SGL Segment1描述将数据块B的4KB数据搬移到LBA空间接下来的4KB空间(也即LBA x+6,LBA x+14)。同时segment 1还描述了数据块B的地址(Address=B),还描述了LBA空间再接下来的2KB空间是空洞(称为bit bucked descriptor,(LBA x+14,LBA x+18)),以及描述了下一个SGL segment 1的地址(Address=segment 1)。而SGL Segment2描述将数据块C的4KB数据搬移到LBA空间接下来的4KB空间(LBA x+18,LBA x+26)。同时segment 2还描述了data block C的地址(Address=C)以及当前segment是该写命令的SGL的最后一个segment。
结合前文描述可知,NVMe命令在经过SGL解析后,可以根据SGL中一个或多个SGL描述符所描述的信息生成一个或多个DMA命令组。DMA命令组中的DMA命令(例如数据搬移命令)经过DMA单元处理后,再由传输电路传输至DDR中。在数据传输过程中,例如,NVMe协议定义了传输的数据长度等于NVMe命令所指示的数据长度,才认为NVMe命令处理完成;基于此,当NVMe命令所指示的连续逻辑地址所对应的地址空间中存在空洞时,空洞的长度计入协议规定的NVMe命令要传输数据长度,依据累加的传输的数据长度识别NVMe命令对应的数据是否搬移完成。但是,由于空洞所存储的数据对应NVMe命令来说其是无效数据,在NVMe命令处理过程中,一般不希望往空洞中存入数据或者将空洞中的数据搬移到主机。本申请希望在计算校验信息,接收的数据长度不含空洞长度但要传输的数据长度包含空洞长度等,基于此,在数据搬移过程中需要对空洞所对应的无效数据作假搬移,其中,假搬移操作是对无效数据进行传输,而不将其存储到存储器(如DDR)中。
图2B展示了本申请实施例所提供一种控制部件的结构图。
作为举例,如图2B所示,控制部件包括DMA单元和传输电路,其中,传输电路与存储器控制器耦合(如图2B未标注),存储器控制器与存储器耦合,用于控制向存储器中写入或读取数据;例如,传输电路为AIX代理电路。DMA单元用于接收数据搬移命令,并根据数据搬移命令获取待搬移数据(如图2B所示的“数据”),并将待搬移数据发送给传输电路。传输电路将待搬移数据发送给存储器,存储器对待搬移数据进行存储。另外,如图2B所示,该控制部件还可以对存在无效数据的待搬移数据进行处理。例如,若数据搬移命令所指示的待搬移数据部分或全部为无效数据,DMA单元在获取该待搬移数据后,依旧将待搬移数据发送给传输电路,而传输电路在接收到该待搬移数据后,将待搬移数据中的无效数据丢弃或者在向存储器传输无效数据时还传输无效信号,以便存储器根据该无效信号不对无效数据进行存储。例如,无效信号为遵循AXI协议的指示数据无效的WSTRB信号,例如,标记无效的WSTRB信号全为0。另外,又作为举例,该传输电路传输无效信号时,可以关闭传输数据信号的引线。
又作为举例,为了使得在处理数据搬移命令过程中,DMA单元能够识别数据搬移命令所指示的待搬移数据部分或全部为无效数据,在数据搬移命令中添加目标标识,其中,目标标识用于指示待搬移的数据部分或全部无效。当DMA单元识别出要处理的数据搬移命令携带了目标标识,则确定该数据搬移命令所指示的待搬移数据包含无效数据,其将待搬移数据继续发送给传输单元,另外还会指示传输电路将无效数据丢弃或传输无效数据时还传输无效信号。进而可以根据数据搬移命令中是否包含目标标识来对待搬移数据进行区分处理,并对无效数据的假搬移处理。
在实际应用中,可以有多种技术实现方式。图2C展示了本申请实施例所提供的用于控制部件的方法200的示意图,应用于图2C的控制部件。如图2C所示,在步骤S201处,可以响应于收到数据搬移命令,执行并检测该数据搬移命令是否包含用于表示待搬移数据包括无效数据的目标标识。结合图2A的描述,NVMe命令在经过SGL解析后,可以根据SGL中一个或多个SGL描述符所描述的信息生成一个或多个DMA命令组。其中每个DMA命令组可以包含一个或多个数据搬移命令。参看图2A可知,SGL描述符所描述的信息中包含了是否有无效数据的标识(例如图2A中,“0”表示为有效数据,而“1”则表示为无效数据)。由此,在根据SGL描述符生成DMA命令组时,可以根据这些标识在数据搬移命令中添加目标标识来说明该数据是否有效。需要说明的是,这里对数据搬移命令中目标标识的添加过程的描述仅是示例性说明,本发明的方案并不局限于此。
接着,在步骤S202处,可以响应于该数据搬移命令中包含有目标标识,获取该数据搬移命令所指示的待搬移数据。这里在确定待搬移数据中包含无效数据时,需要继续进行对待搬移数据的获取操作,以便与后续进行假搬移操作。
接着,在步骤S203处,可以将该待搬移数据传输至与传输电路,并指示该传输电路将无效数据丢弃或传输无效数据时还传输无效信号。由此,通过数据搬移命令中的目标标识来对无效数据和有效数据进行有效区分处理,以便能够针对无效数据执行相应的数据传输操作,从而实现对无效数据的有效管理。
作为举例,前述的数据搬移命令中还包括有存储器地址(例如DDR地址),可以将该存储器地址和获取的待搬移数据传输至前述的传输电路,且指示该传输电路待搬移数据为无效数据。由此,传输电路可以根据这些信息来选择直接丢地无效数据,最大程度上节省各种开销(例如传输电路至存储器之间的数据传输开销、占用的带宽和增加的时间开销等),从而有效提高传输效率。当然,传输电路还可以继续传输无效数据,但同时会传输无效信号,以便在该无效数据传输至存储器后,由存储器根据无效信号进行数据的丢弃操作,不存储该无效数据。
图2D展示了本申请实施例所提供的控制部件中DMA单元的结构示意图。如图2D所示,DMA单元可以包括数据搬移电路1、数据搬移电路2和缓存电路。此外,DMA单元还可以包括数据保护与检测电路。其中,数据搬移电路1响应于接收数据搬移命令将待搬移数据搬移到缓存电路。数据搬移电路2响应于接收的数据搬移命令中包含目标标识,从缓存电路中获取数据搬移命令所指示的待搬移数据,以及将该待搬移数据传输至传输电路,且告知该传输电路前述的待搬移数据为无效数据,使得传输电路丢弃待搬移数据或者向存储器传输无效数据。
基于图2D可知,DMA单元在对数据搬移命令所指示的待搬移数据进行搬移过程中经历两次数据搬移:一次是数据搬移电路1将待搬移数据从源端将待搬移数据搬移到DMA内部的缓冲电路;另一次是数据搬移电路2将待搬移数据从缓冲电路将待搬移数据搬移到目的端。作为举例,当NVMe命令为读命令时,源端是指主机,目的端为存储器;当NVMe命令为写命令时,源端是指存储器,目的端为主机。另外,还应理解,写命令的第一次执行数据搬移的数据搬移电路与读命令第二次执行数据搬移的数据搬移电路为同一电路;写命令的第二次执行数据搬移的数据搬移电路与读命令第一次执行数据搬移的数据搬移电路为同一电路。
由于DMA单元在对数据搬移命令所指示的待搬移数据进行搬移过程中经历两次数据搬移,而DMA单元又是基于数据搬移命令来执行数据搬移的。作为举例,DMA单元可以执行一个数据搬移命令实现两次数据搬移;DMA单元可以执行一个数据搬移命令对来实现数据搬移,如数据搬移电路1执行数据搬移命令1将待搬移数据从源端将待搬移数据搬移到DMA内部的缓冲电路;数据搬移电路2执行数据搬移命令2将待搬移数据从缓冲电路将待搬移数据搬移到目的端,其中,数据搬移命令1与数据搬移命令2为数据搬移命令对。
进一步地,作为举例,DMA单元可以接收数据搬移命令对,该数据搬移命令对包括A类数据搬移命令和B类数据搬移命令。而数据搬移电路1响应于执行A类数据搬移命令将其所指示的待搬移数据搬移到缓存电路。而数据搬移电路2响应于执行B类数据搬移命令将其所指示的待搬移数据从缓存电路搬移至传输电路。
图2E展示了本申请实施例所提供的另一种控制部件的结构示意图。如图2E所示,控制部件在接收到NVMe命令时,可以从该NVMe命令中获取SGL,且基于SGL生成一个或多个A类数据搬移命令与一个或多个B类数据搬移命令,其中,一个数据搬移命令对包括A类数据搬移命令和B类数据搬移命令。作为举例,控制部件可以响应于该SGL中的描述了无效数据信息的空洞描述符,生成属于A类数据搬移命令的数据搬移命令1,数据搬移电路1根据数据搬移命令1将无效数据搬移缓存电路。接着,可以根据该SGL所描述的要搬移的数据长度分配一个或多个存储器地址,并根据分配的存储器地址生成属于B类数据搬移命令的数据搬移命令2。然后,根据数据搬移命令2将缓存电路中的数据搬移到分配的存储器地址。作为举例,可以在描述了将缓存电路中的无效数据搬移到存储器的数据搬移命令2中添加所述目标标识。
图2F展示了本申请实施例所提供的DMA单元处理数据搬移命令的示意图。
作为举例,前述的数据搬移命令对可以根据NVMe命令来生成。具体地,响应于收到NVMe命令,生成一个或多个数据搬移命令对。在一些实施场景中,还可以在收NVMe命令时,生成可以生成一个或多个A类数据搬移命令与一个或多个B类数据搬移命令。此时,数据搬移电路1可以响应于执行A类数据搬移命令将其所指示的待搬移数据搬移到缓存电路,数据搬移电路2响应于执行B类数据搬移命令将其所指示的待搬移数据从缓存电路搬移至传输电路。
作为举例,在图2F中,控制部件基于NVMe命令生成4个A类数据搬移命令(HL1、HL2、HL3以及HL4)以及4个B类数据搬移命令(DL1、DL2、DL3以及DL4);其中,HL1与DL1为一对数据搬移命令,用于将数据1从主机存储器410搬移到存储器1;HL2与DL2为一对数据搬移命令,用于将数据2从主机存储器410搬移到存储器1;HL3与DL3为一对数据搬移命令,用于将数据3从主机存储器410搬移到存储器1;HL4与DL4为一对数据搬移命令,用于将数据4从主机存储器410搬移到存储器1。
具体的,数据搬移电路1执行A类数据搬移命令HL1将数据1从主机存储器410搬移到缓存电路,然后,数据搬移电路2执行B类数据搬移命令DL1将数据1从缓存电路搬移到存储器1,进而实现将数据1从主机存储器410搬移到存储器1。数据搬移电路1执行A类数据搬移命令HL2将数据2从主机存储器410搬移到缓存电路,然后,数据搬移电路2执行B类数据搬移命令DL2将数据2从缓存电路搬移到存储器1,进而实现将数据2从主机存储器410搬移到存储器1。数据搬移电路1执行A类数据搬移命令HL3将数据3从主机存储器410搬移到缓存电路,然后,数据搬移电路2执行B类数据搬移命令DL3将数据3从缓存电路搬移到存储器1,进而实现将数据3从主机存储器410搬移到存储器1。数据搬移电路1执行A类数据搬移命令HL4将数据4从主机存储器410搬移到缓存电路,然后,数据搬移电路2执行B类数据搬移命令DL4将数据4从缓存电路搬移到存储器1,进而实现将数据4从主机存储器410搬移到存储器1。
图2G展示了本申请实施例所提供的DMA单元并行处理数据搬移命令的示意图。
作为举例,在图2G中,可以根据NVMe命令生成数据搬移命令对1<数据搬移命令A1,数据搬移命令B1>以及数据搬移命令对2<数据搬移命令A2,数据搬移命令B2>,其中,DMA单元执行数据搬移命令对1将待搬移的数据1搬移到传输电路,DMA单元执行数据搬移命令对2将待搬移的数据2搬移到传输电路;另外,待搬移数据1和待搬移数据2为不同的数据。
在图2G中,T0-T2表示时间上连续的多个时间段,每个时间段下方的内容表示在该时间段内DMA单元中各部件所执行的操作。
在T0时间段内,数据搬移电路1接收到数据搬移命令A1,将数据搬移命令A1所指示的待搬移数据1搬移到其缓存电路中。
在T1时间段内(T1时间段是在T0时间段之后的时间段),数据搬移电路2接收到数据搬移命令B1,将数据搬移命令B1所指示的待搬移数据1从缓存电路发送给传输电路;另外,数据搬移电路1接收到数据搬移命令A2,将数据搬移命令A2所指示的待搬移数据2搬移到其缓存电路中。即在T1时间段内,数据搬移电路1和数据搬移电路2可以并行对数据搬移命令对1和数据搬移命令对2并行处理。
在T2时间段内(T2时间段是在T1时间段之后的时间段),数据搬移电路2接收到数据搬移命令B2,将数据搬移命令B2所指示的待搬移数据1从缓存电路发送给传输电路;此时DMA单元对于数据搬移命令对1和数据搬移命令对2的处理完成。由此,DMA单元可以并行对不同的数据搬移命令对进行处理,进而提高数据搬移命令的处理效率。
进一步地,作为举例,可以通过数据搬移电路2对无效数据进行区别处理,即在B类数据搬移命令中添加目标标识。数据搬移电路2响应于B类数据搬移命令包含前述的目标标识,可以获取B类数据搬移命令所指示的待搬移数据,且将该待搬移数据传输至传输电路,并指示传输电路将待搬移数据丢弃或传输待搬移数据时还传输无效信号。
图2H展示了本申请实施例所提供的数据搬移电路的结构示意图。如图2H所示,DMA单元可以包含read dm(也即数据搬移电路1)、write dm(也即数据搬移电路2)和数据保护与检测电路。同时为了能够更清楚说明数据传输过程,图2H中还示出了主机接口和AXI代理电路。其中,write dm可以包括数据缓存、sg1缓存和控制器,数据缓存的数据来自read dm,sg1缓存的数据可以来自数据搬移命令。数据缓存和sg1缓存中的数据经控制器处理后,输出至AXI代理电路或者主机接口。
在一些实施场景中,响应于收到NVMe写命令,可以从NVMe写命令获取其SGL。在处理SGL的时候,可以根据每个数据块描述符或空洞描述符生成一对DMA命令(可以分别控制read dm与write dm的操作)。其中提供给read dm的A类数据搬移命令的源地址是SGL描述符所描述的主机地址或者空地址,且其的目的地址是缓存电路地址,提供给write dm的B类数据搬移命令的源地址是缓存电路地址,且其目的地址是存储器地址。其中,对应空洞描述符时,提供给write dm的数据搬移命令中还包括目标标识(例如dron_en标志)。在数据搬移命令中有drop_en标志时,write dm从缓存电路中获取数据搬移命令的length所指定大小的数据,连同addr提供给AIX代理电路,以完成write dm的操作流程,同时告知AXI代理电路这部分数据是无效数据。AXI代理电路对无效数据丢弃(也即不发送给DDR),或者AXI代理电路向DDR发送无效数据但在数据传输时标记WSTRB信号全为0(其代表当时的Wdata信号都不是有效信号)。
在一些实施例中,响应于收到NVMe读命令,可以从NVMe写命令获取其SGL。在处理SGL的时候,可以根据每个数据块描述符或空洞描述符生成一对DMA命令(可以分别控制read dm与write dm的操作)。其中提供给read dm的A类数据搬移命令的源地址是存储器地址,且其的目的地址是缓存电路地址,提供给write dm的B类数据搬移命令的源地址是缓存电路地址,且其目的地址是SGL描述符所描述的主机地址或者空地址。其中,对应空洞描述符时,提供给write dm的数据搬移命令中还包括目标标识(例如dron_en标志)。在数据搬移命令中有drop_en标志时,write dm从缓存电路中获取数据搬移命令的length所指定大小的数据,连同addr提供主机接口,以完成write dm的操作流程,同时告知主机接口这部分数据是无效数据。主机接口对无效数据丢弃(不发送给主机)。其中,write dm同主机接口之间用例如AXI或者类似AXI的协议通信。
本申请还提供了一种控制部件,其包括DMA单元,该DMA单元可以执行并检测数据搬移命令是否包含目标标识(其用于表示待搬移数据包含无效数据),以及响应于一对数据搬移命令中包含有该目标标识,获取该对数据搬移命令所指示的待搬移数据。同时,还可以将待搬移数据传输至传输电路,并指示传输电路将待搬移数据丢弃或传输所述待搬移数据时还传输无效信号。本申请,通过在数据搬移命令上添加目标标识来指示待搬移数据中存在无效数据,以使得DMA单元在对待搬移数据进行搬移时识别出所存在的无效数据,并启动对无效数据的假搬移操作,即将无效数据和有效数据一起传输给传输电路,但同时会指示传输电路丢弃无效数据或者指示其传输所述待搬移数据时还传输无效信号,以使得后续存储器基于该无效信号不对无效数据进行存储。不仅提供了控制部件对于存储器上空洞的处理方案,还通过指示传输电路丢弃无效数据的操作会使得无效数据占了DMA单元到传输电路之间的宽带,而不占用控制部件到DDR之间的带宽,节约传输资源以及提高数据传输效率。
本申请还提供了一种存储设备,该存储设备可以包括存储介质和上述控制部件。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种用于控制部件的方法,其特征在于,所述方法包括:
响应于收到数据搬移命令,执行并检测所述数据搬移命令是否包含目标标识,其中所述目标标识用于表示待搬移数据包括无效数据;
响应于所述数据搬移命令中包含有所述目标标识,获取所述数据搬移命令所指示的待搬移数据;以及
将所述待搬移数据传输至与传输电路,并指示所述传输电路将所述无效数据丢弃或传输所述无效数据时还传输无效信号。
2.根据权利要求1所述的方法,其特征在于,其中所述控制部件包括DMA单元,所述DMA单元包括第一数据搬移电路、第二数据搬移电路和缓存电路,所述方法包括:
所述第一数据搬移电路响应于接收数据搬移命令将待搬移数据搬移到所述缓存电路;
所述第二数据搬移电路响应于接收的数据搬移命令中包含所述目标标识,从所述缓存电路中获取所述数据搬移命令所指示的待搬移数据;以及
将所述待搬移数据传输至所述传输电路,且告知所述传输电路所述待搬移数据为无效数据,使得所述传输电路丢弃所述待搬移数据或者向存储器传输无效数据。
3.根据权利要求2所述的方法,其特征在于,所述DMA单元接收数据搬移命令对,所述数据搬移命令对包括第一类数据搬移命令和第二类数据搬移命令;
所述第一数据搬移电路响应于执行第一类数据搬移命令将其所指示的待搬移数据搬移到所述缓存电路;
所述第二数据搬移电路响应于执行第二类数据搬移命令将其所指示的待搬移数据从所述缓存电路搬移至传输电路。
4.根据权利要求3所述的方法,其特征在于,
所述第二数据搬移电路响应于第二类数据搬移命令包含所述目标标识,获取第二类数据搬移命令所指示的待搬移数据,将所述待搬移数据传输至传输电路,并指示所述传输电路将所述待搬移数据丢弃或传输所述待搬移数据时还传输无效信号。
5.根据权利要求1-4之一所述的方法,其特征在于,所述方法还包括:
从所述NVMe命令中获取SGL,且基于SGL生成一个或多个第一类数据搬移命令与一个或多个第二类数据搬移命令;
响应于一个或多个第二类数据搬移命令所指示的待搬移数据为无效数据,在指示待搬移数据为无效数据的数据搬移命令中添加目标标识,其中,所述目标标识用于指示所述待搬移数据为无效数据。
6.根据权利要求5所述的方法,其特征在于,其中,
响应于所述SGL中的描述了无效数据信息的空洞描述符,生成属于第一类数据搬移命令的第一数据搬移命令,根据第一数据搬移命令将无效数据搬移到所述缓存电路。
7.根据权利要求6所述的方法,其特征在于,
根据所述SGL所描述的要搬移的数据长度分配一个或多个存储器地址;
根据分配的存储器地址生成属于第二类数据搬移命令的第二数据搬移命令,根据第二数据搬移命令将所述缓存电路中的数据搬移到分配的存储器地址,其中,在描述了将所述缓存电路中的无效数据搬移到存储器的第二数据搬移命令中添加所述目标标识。
8.根据权利要求5-7之一所述的方法,其特征在于,其中,响应于所述NVMe命令为写命令,所述第一类数据搬移命令的源地址是所述SGL描述符所描述的主机地址或者空地址,且其的目的地址是所述缓存电路地址,所述第二类数据搬移命令的源地址是所述缓存电路地址,且其目的地址是存储器地址。
9.根据权利要求5-7之一所述的方法,其特征在于,其中,响应于所述NVMe命令为读命令,所述第一类数据搬移命令的源地址是存储器地址,且其的目的地址是所述缓存电路地址,所述第二类数据搬移命令的源地址是所述缓存电路地址,且其目的地址是所述SGL描述符所描述的主机地址或者空地址。
10.一种控制部件,其特征在于,包括:DMA单元;其中,
所述DMA单元执行并检测数据搬移命令是否包含目标标识,其中所述目标标识用于表示待搬移数据为无效数据;响应于一对数据搬移命令中包含有所述目标标识,获取该对数据搬移命令所指示的待搬移数据;以及将所述待搬移数据传输至传输电路,并指示所述传输电路将所述待搬移数据丢弃或传输所述待搬移数据时还传输无效信号。
CN202210772222.XA 2022-06-30 2022-06-30 用于控制部件的方法及相关产品 Pending CN117369710A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210772222.XA CN117369710A (zh) 2022-06-30 2022-06-30 用于控制部件的方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210772222.XA CN117369710A (zh) 2022-06-30 2022-06-30 用于控制部件的方法及相关产品

Publications (1)

Publication Number Publication Date
CN117369710A true CN117369710A (zh) 2024-01-09

Family

ID=89395166

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210772222.XA Pending CN117369710A (zh) 2022-06-30 2022-06-30 用于控制部件的方法及相关产品

Country Status (1)

Country Link
CN (1) CN117369710A (zh)

Similar Documents

Publication Publication Date Title
JP6021759B2 (ja) メモリシステムおよび情報処理装置
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
WO2017092002A1 (zh) 应用于计算机系统的数据迁移方法和装置、计算机系统
CN108228470B (zh) 一种处理向nvm写入数据的写命令的方法和设备
CN107797760B (zh) 一种访问缓存信息的方法、装置与固态驱动器
KR101654807B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US20200257620A1 (en) Memory Block Reclamation Method and Apparatus
CN112214158A (zh) 主机输出输入命令的执行装置及方法及计算机可读取存储介质
KR20180126656A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN112764669B (zh) 一种硬件加速器
CN112765055B (zh) 存储设备的控制部件
CN113468083B (zh) 一种双端口NVMe控制器及控制方法
CN115048034A (zh) 用于sgl的存储空间映射方法及其装置
CN111352865B (zh) 存储控制器的写缓存
CN110515861B (zh) 处理刷写命令的存储设备及其方法
CN111290974A (zh) 用于存储设备的缓存淘汰方法与存储设备
CN111290975A (zh) 使用统一缓存处理读命令与预读命令的方法及其存储设备
CN117369710A (zh) 用于控制部件的方法及相关产品
CN110865945A (zh) 存储设备的扩展地址空间
CN111258491B (zh) 降低读命令处理延迟的方法与装置
CN115599718A (zh) 一种dma传输的方法及控制部件
CN113867615A (zh) 缓存智能分配方法及控制部件
TW202340939A (zh) 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置
CN111209045A (zh) 提供命令处理一致性的方法与存储设备
KR20230144434A (ko) 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination