CN115168257A - 一种dma设备 - Google Patents

一种dma设备 Download PDF

Info

Publication number
CN115168257A
CN115168257A CN202210796139.6A CN202210796139A CN115168257A CN 115168257 A CN115168257 A CN 115168257A CN 202210796139 A CN202210796139 A CN 202210796139A CN 115168257 A CN115168257 A CN 115168257A
Authority
CN
China
Prior art keywords
dma
memory
descriptor
data
dma descriptor
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
CN202210796139.6A
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.)
Shanghai Yixin Industry Co ltd
Original Assignee
Shanghai Yixin Industry 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 Shanghai Yixin Industry Co ltd filed Critical Shanghai Yixin Industry Co ltd
Publication of CN115168257A publication Critical patent/CN115168257A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA
    • G06F2213/2806Space or buffer allocation for DMA transfers

Abstract

本申请涉及DMA传输技术,更具体地,涉及利用缓存优化DMA传输,由于本申请在缓存中为DMA描述符提供了连续的存储空间,避免了数据在存储设备中多片存储,从而在一些情况下减少了DMA描述符中条目数量,进而减小了生成DMA传输过程的复杂度;连续的存储空间也有利于优化数据传输,从而加快DMA传输过程。

Description

一种DMA设备
技术领域
本申请涉及DMA传输技术,更具体地,涉及利用缓存优化DMA传输。
背景技术
DMA(DirectMemoryAccess)是不依赖于CPU而在存储器之间直接搬移数据的技术。在多种电子设备中使用DMA技术。本申请中以固态存储设备为例,介绍所提供的利用缓存优化DMA传输的技术方案。图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(SerialAttached SCSI,串行连接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 Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口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命令的数据。通过例如DMA技术在主机与DRAM 110之间传输IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
图2展示了现有技术的DMA传输的示意图。
以主机与固态存储设备之间的DMA传输为例,通过DMA模块将主机存储器210中的数据,搬移到存储设备的设备存储器220。
主机存储器210存储了要被DMA模块搬移到设备存储器220的数据。DMA模块根据DMA描述符(L1、L2、L3或L4),执行从主机存储器210到设备存储器220的数据搬移。DMA描述符包括多个条目,每个条目指示一次数据搬移。DMA描述符条目中指示例如源地址(例如,主机存储器210地址)、目的地址(例如,设备存储器220的地址)与传输的数据长度。以DMA描述符L2为例,其包括6个条目,参看图2,条目0指示从源地址0x0000开始,搬移长度为0x0800的数据到目的地址0x0800,条目1指示从源地址0x0800开始,搬移长度为0x04000的数据到目的地址0x2400。图2中指示存储器地址的数字均为16进制,为了简要的目的,省去了16进制数字前的“0x”标识。
为了提高存储器的利用率,DMA描述符指示的要搬移数据,在主机存储器210与设备存储器220中都可以不连续的存储。利用DMA描述符L2指示的数据,在主机存储器210中被存储在3个区域,在设备存储器中被存储在6个区域(以横线阴影所示的区域)。然而在存储器中的多片数据,不利于数据传输的优化,为了每片数据的传输要为其提供DMA描述符条目,更多的DMA描述符条目增加了复杂度。
继续参看图2,DMA描述符(L1、L2、L3或L4)各自由不同样式的阴影所指示。DMA描述符L1的图示中无阴影,DMA描述符L2的图示为横线所指示的阴影,DMA描述符L3的图示为竖线所指示的阴影,DMA描述符L4的图示为斜线所指示的阴影。在主机存储器210与设备存储器220中,用带有样式区域指示了该区域所对应的DMA描述符。例如,主机存储器210中,地址0x5000-0x5FFF区域的样式为无阴影,指示该区域存储的数据由DMA描述符L1所指示。设备存储器220还有部分区域未分配给DMA描述符(L1、L2、L3或L4)的任何一个,这些区域的图示为点所指示的阴影。在主机存储器210与设备存储器220中的数字,指示对应存储空间的大小。
主机存储器210和/或设备存储器220各自包括多个存储器页,每页的大小为例如4KB。
主机和/或存储设备的控制部件,生成DMA描述符,并提供DMA模块。若主机生成DMA描述符,则主机管理主机存储器210与设备存储器220的分配与释放;若存储设备生成DMA描述符,则存储设备的控制部件管理主机存储器210与设备存储器220的分配与释放;或者主机与存储设备协同生成DMA描述符,由主机管理自身的主机存储器210,而由设备的控制部件来管理自身的设备存储器220。
发明内容
本申请在缓存中为DMA描述符提供了连续的存储空间,避免了数据在存储设备中多片存储,从而在一些情况下减少了DMA描述符中条目数量,进而减小了生成DMA传输过程的复杂度;连续的存储空间也有利于优化数据传输,从而加快DMA传输过程。
根据本申请的第一方面,提供了根据本申请第一方面的第一DMA设备,用于将数据从第一存储器搬移到第二存储器,包括:第一DMA模块、第二DMA模块和缓存;第一DMA模块根据第一DMA描述符将要传输的数据从第一存储器搬移至缓存;其中所述要传输的数据在所述缓存中被存储在连续的存储空间;第二DMA模块根据第二DMA描述符将所述要传输的数据从缓存搬移至第二存储器。
根据本申请的第一方面的第一DMA设备,其中,所述要传输的数据在第二存储器中被存储在不连续的存储空间。
根据本申请的第一方面的第一或第二DMA设备,其中,用IO命令中的DMA描述符指示的第一存储器的存储空间地址作为源地址,用在缓存中分配的存储空间地址作为目的地址,生成第一DMA描述符。
根据本申请的第一方面的第三DMA设备,其中,对所述IO命令中的DMA描述符的每个条目,通过为其添加作为目的地址的缓存的地址,生成对应的第一DMA描述符的每个条目。
根据本申请的第一方面的第四DMA设备,其中,第一DMA描述符的条目中记录了数据长度。
根据本申请的第一方面的第一至第五DMA设备之一,用第一DMA描述符的目的地址作为源地址,用在第二存储器中分配的存储空间地址作为目的地址,生成第二DMA描述符。
根据本申请的第一方面的第一至第六DMA设备之一,对第一DMA描述符的每个条目,将其目的地址作为第二DMA描述符的条目的源地址,将从第二存储器获取的存储空间段之一的地址作为第二DMA描述符的条目的目的地址。
根据本申请的第一方面的第七DMA设备,其中,若第二存储器的第一存储空间段的大小不足以容纳第一DMA描述符的第一条目指示的所有数据,生成第二DMA描述符的第一条目中指示传输的数据长度等于第一存储空间段的大小,还生成第二DMA描述符的第二条目以继续传输第一DMA描述符的第一条目所指示的数据。
根据本申请的第一方面的第一至第八DMA设备之一,其中,响应于第一DMA描述符对应的数据被传输完成,同第一DMA描述符对应的数据在第一存储器中占用的存储器空间被释放。
根据本申请的第一方面的第一至第九DMA设备之一,响应于第二DMA描述符对应的数据被传输完成,同第二DMA描述符对应的数据在缓存中占用的存储器空间被释放。
根据本申请的第一方面的第一至第十DMA设备之一,其中,第一DMA模块并发处理多个第一DMA描述符,和/或第二DMA模块并发处理多个第二DMA描述符。
根据本申请的第一方面的第一至第十一DMA设备之一,其中,缓存是SRAM。
根据本申请的第一方面的第一至第十二DMA设备之一,其中,缓存为耦合至DMA设备的外部存储器。
根据本申请的第一方面的第一至第十三DMA设备之一,其中,第一DMA模块和第二DMA模块均为集成的DMA模块。
根据本申请的第一方面的第一至第十四DMA设备之一,其中,响应于第一DMA描述符所指示的数据传输完成,向第一存储器指示IO命令执行完成。
根据本申请的第一方面的第一至第十五DMA设备之一,其中,响应于生成第一DMA描述符或生成第一DMA描述符的条目,生成第二DMA描述符。
根据本申请的第一方面的第一至第十六DMA设备之一,其中,响应于生成第二DMA描述符,第二DMA模块发起从缓存到第二存储器的数据传输。
根据本申请的第二方面,提供了根据本申请第二方面的第一DMA设备,包括:缓存和第二DMA模块;其中,缓存存储第一DMA模块根据第一DMA描述符搬移到所述缓存中的数据,所述数据在所述缓存中被存储在连续的存储空间;第二DMA模块根据第二DMA描述符将要传输的数据从缓存搬移至第二存储器。
根据本申请的第二方面的第一DMA设备,其中,所述数据在第二存储器中被存储在不连续的存储空间。
根据本申请的第三方面,提供了根据本申请第三方面的第一存储设备,包括:上述任一项所述的DMA设备,还包括:第一存储器或第二存储器;其中,第一存储器和第二存储器均为耦合于DMA设备外部的存储器。
根据本申请的第三方面的第一存储设备,其中,第一存储设备或第二存储设备为DRAM。
根据本申请的第三方面的第一或第二存储设备,其中,第一存储器或第二存储器为NVM芯片或NVM芯片的页缓存。
根据本申请的第三方面的第三存储设备,其中,DMA设备还包括介质接口控制器;介质接口控制器将缓存中的数据提供给NVM芯片或将数据写入NVM芯片的页缓存。
根据本申请的第三方面的第三存储设备,其中,DMA设备还包括介质接口控制器;介质接口控制器将NVM芯片或将数据写入NVM芯片的页缓存中的数据提供给缓存。
根据本申请的第四方面,提供了根据本申请第四方面的第一DMA传输方法,包括:为IO命令在缓存中分配连续的地址空间;生成第一DMA描述符,用于描述从第一存储器空间向缓存空间的DMA传输;发起第一DMA传输;生成第二DMA描述符,用于描述从缓存空间到第二存储器空间的DMA传输;发起第二DMA传输。
根据本申请的第四方面的第一DMA传输方法,其中,第二DMA描述符指示了数据存储于第二存储器空间的地址为不连续地址。
根据本申请的第四方面的第一或第二DMA传输方法,其中,用所述IO命令中的DMA描述符指示的第一存储器的存储空间地址作为源地址,用在缓存中分配的存储空间地址作为目的地址,生成第一DMA描述符。
根据本申请的第四方面的第三DMA传输方法,其中,对所述IO命令中的DMA描述符的每个条目,通过为其添加作为目的地址的缓存的地址,生成对应的第一DMA描述符的每个条目。
根据本申请的第四方面的第一至第四DMA传输方法之一,其中,用第一DMA描述符的目的地址作为源地址,用在第二存储器空间中分配的存储空间地址作为目的地址,生成第二DMA描述符。
根据本申请的第四方面的第五DMA传输方法,其中,对第一DMA描述符的每个条目,将其目的地址作为第二DMA描述符的条目的源地址,将从第二存储器空间获取的存储空间段之一的地址作为第二DMA描述符的条目的目的地址。
根据本申请的第四方面的第六DMA传输方法,其中,若第二存储器的第一存储空间段的大小不足以容纳第一DMA描述符的第一条目指示的所有数据,生成第二DMA描述符的第一条目中指示传输的数据长度等于第一存储空间段的大小,还生成第二DMA描述符的第二条目以继续传输第一DMA描述符的第一条目所指示的数据。
根据本申请的第四方面的第一至第七DMA传输方法之一,其中,响应于第一DMA描述符对应的数据被传输完成,同第一DMA描述符对应的数据在第一存储器空间中占用的存储空间被释放。
根据本申请的第四方面的第一至第八DMA传输方法之一,其中,响应于第二DMA描述符对应的数据被传输完成,同第二DMA描述符对应的数据在缓存空间中占用的存储空间被释放。
根据本申请的第四方面的第一至第九DMA传输方法之一,其中,并发处理多个第一DMA描述符,和/或并发处理多个第二DMA描述符。
根据本申请的第四方面的第一至第十DMA传输方法之一,其中,响应于第一DMA描述符所指示的数据传输完成,向第一存储器空间指示所述IO命令中执行完成。
根据本申请的第四方面的第一至第十一DMA传输方法之一,其中,响应于生成第一DMA描述符或生成第一DMA描述符的条目,生成第二DMA描述符。
根据本申请的第四方面的第一至第十二DMA传输方法之一,其中,响应于生成第二DMA描述符,发起从缓存空间到第二存储器空间的数据传输。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1展示了固态存储设备的框图;
图2展示了现有技术的DMA传输的示意图;
图3展示了根据本申请实施例的使用缓存优化DMA传输的框图;
图4展示了根据本申请实施例的DMA传输的示意图;
图5A展示了现有技术的DMA描述符生成的示意图;
图5B展示了根据本申请实施例的DMA描述符生成的示意图;
图6是根据本申请实施例的DMA传输的流程图;
图7展示了根据本申请又一实施例的使用缓存优化DMA传输的框图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图3展示了根据本申请实施例的使用缓存优化DMA传输的框图。
主机耦合到存储设备的控制部件。控制部件包括DMA模块0、DMA模块1与存储器0,控制部件还耦合到控制部件外部的存储器1。存储器0例如被集成到控制部件内部,从而存储器0具有相对高的访问速度,以及相对高的单位存储容量的成本;存储器1具有相对低的访问速度,以及相对高的容量。作为举例,存储器0是SRAM,而存储器1是DRAM。可选地,存储器0作为耦合到控制部件的外部存储器。
DMA模块0在主机与存储器0之间进行数据搬移,而DMA模块1在存储器0与存储器1之间进行数据搬移。存储器0作为缓存,来优化主机与存储设备之间的DMA数据传输。作为存储设备,为提供存储功能,控制部件还将从主机搬移到存储器1的数据写入NVM芯片,或者将从NVM芯片读出并存储在存储器1中的数据传输给主机。
控制部件为DMA模块0与DMA模块1各自生成DMA描述符,以指示DMA模块0与DMA模块1的DMA传输。为生成DMA描述符,控制部件管理存储器0与存储器1的分配与释放。作为举例,主机提供给控制部件的IO命令中,指示了IO命令要传输的数据在主机存储器中的地址,控制部件在存储器0中,为提高DMA传输效率,为IO命令要传输的数据分配连续的存储空间,并生成用于DMA模块0的DMA描述符。控制部件在存储器1中,为IO命令要传输的数据分配存储空间,并生成用于DMA模块1的DMA描述符。为提高存储器1的利用率,在存储器1中为IO命令分配的存储空间可以是不连续的。
可选地,DMA模块0与DMA模块1为集成的DMA模块。
依然可选地,主机提供DMA模块0,控制部件的存储器0被映射到主机的存储空间,例如,作为PCIe设备的BAR空间,或者作为根据NVMe协议向主机提供的CMB(ControllerMemoryBuffer,控制器存储器缓存)或PMB(Persistent MemoryBuffer,持久性存储器缓存)。在中国专利申请201810094060.2中也提供了存储设备的存储器映射到主机的存储房间的技术方案,将其全文合并于此。例如主机生成用于DMA模块0的DMA描述符,以指示DMA模块0将主机存储器的数据搬移到存储器0。以及控制部件生成用于DMA模块1的DMA描述符以指示DMA模块1将存储器0的数据搬移到存储器1。
图4展示了根据本申请实施例的DMA传输的示意图。
DMA模块0(也参看图3)将主机存储器的数据,通过DMA传输搬移到存储器0,DMA模块1将存储器0的数据通过DMA搬移到存储器1。
DMA模块0根据主机DMA描述符(HL1、HL2、HL3与HL4)进行DMA传输。主机DMA描述符包括多个条目,每个条目记录了例如源地址、目的地址与数据长度。在图4的例子中,主机DMA描述符条目的源地址是主机存储器地址,目的地址是作为缓存的存储器0的地址(也称为缓存地址)。可选地,主机DMA描述符也描述从存储器0到主机存储器的DMA传输。
在主机存储器410与存储器0中,用带有样式区域指示了该区域所对应的DMA描述符。例如由横线所指示的阴影指示了主机DMA描述符(HL2)以及同主机DMA描述符(HL2)对应的在主机存储器410与存储器0中的数据。在主机存储器410、存储器0与存储器1中的数字,指示对应存储空间的大小。
参看图4,同主机DMA描述符(HL2)对应的数据,在主机存储器410中被存放在3个区域,而在存储器0中被连续存放(R2-0x2000)。根据本申请的实施例,在作为缓存的存储器0中,为DMA描述符所指示的数据分配连续的存储空间,作为DMA传输的目的地址。主机DMA描述符(HL2)包括3个条目,分别记录了在主机存储器410中存放同主机DMA描述符(HL2)对应的数据的3个区域的每个的地址,到存储器0中存放同主机DMA描述符(HL2)对应的数据的地址。DMA模块0根据主机DMA描述符(HL2)在主机存储器410与存储器0之间搬移对应的数据。
由于存储器0为DMA描述符提供了连续的存储空间,从而主机DMA描述符条目的数量可以不超过同主机DMA描述符对应的数据在主机存储器410中占用的区域数量。以主机DMA描述符(HL2)为例,仅使用3个主机DMA描述符条目,发起对应的3次DMA传输,就完成了将同主机DMA描述符(HL2)对应的数据从主机搬移到存储设备的过程。同图2的方案(6个DMA描述符条目)相比,减少了DMA条目数量,减少了生成DMA传输过程的复杂度,加快了DMA传输过程。
主机存储器410、存储器0以及存储器1的分配与释放被管理。DMA模块0将同DMA描述符对应的数据从主机存储器410搬移到存储器0后,同DMA描述符对应的数据在主机存储器410中占用的存储器空间可被释放。类似地,DMA模块1将同DMA描述符对应的数据从存储器0搬移到存储器1后,同DMA描述符对应的数据在存储器0中占用的存储器空间可被释放。
DMA模块1根据设备DMA描述符(DL1、DL2、DL3与DL4)进行DMA传输。设备DMA描述符包括多个条目,每个条目记录了例如源地址、目的地址与数据长度。在图4的例子中,设备DMA描述符条目的源地址作为缓存的存储器0的地址(也称为缓存地址),目的地址是存储器1的地址。可选地,设备DMA描述符也描述从存储器1到存储器0的DMA传输。
继续参看图4,在存储器0与存储器1中,也用带有样式区域指示了该区域所对应的DMA描述符。例如由横线所指示的阴影指示了主机DMA描述符(HL2)以及同主机DMA描述符(HL2)对应的设备描述符(DL2)、在主机存储器410中大的数据、在存储器0与存储器1中的数据。
同设备DMA描述符(DL2)对应的数据,在存储器0中被连续存放(R2-0x2000),而在存储器1中被存放在6个区域。根据本申请的实施例,存储器0的存储空间,作为设备描述符指示的DMA传输的源地址,存储器1的存储空间作为设备描述符指示的DMA传输的目的地址。设备DMA描述符(DL2)包括6个条目,分别记录了在存储器1中存放同设备DMA描述符(DL2)对应的数据的6个区域的每个的地址,作为目的地址。DMA模块1根据设备DMA描述符(DL2)在存储器0与存储器1之间搬移对应的数据。
由于存储器0为DMA描述符提供了连续的存储空间,从而设备DMA描述符条目的数量可以不超过同设备DMA描述符对应的数据在存储器1中占用的区域数量。以设备DMA描述符(DL2)为例,使用6个设备DMA描述符条目,发起对应的6次DMA传输,以将同设备DMA描述符(DL2)对应的数据从存储器0搬移到存储器1。
从而通过DMA模块0与DMA模块1各自的DMA传输,将主机存储器410中的数据搬移到从存储器1。
可选地,多个主机DMA描述符(HL0、HL1、HL2与HL3)被同时提供给DMA模块0,DMA模块0并发地处理多个主机DMA描述符。DMA模块1也并发处理多个设备DMA描述符。
可选地,具有对应关系的主机DMA描述符与设备DMA描述符所对应的数据被先后传输。例如,根据主机DMA描述符HL2将所对应的数据都搬移到存储器0后,DMA模块1再发起根据设备DMA描述符DL2的数据传输。
图5A与图5B展示了根据IO命令生成DMA描述符的示意图。
图5A展示的是现有技术的DMA描述符生成过程,应用于例如图2的DMA传输系统;图5B展示的根据本申请实施例的DMA描述符生成过程,应用于例如图4的DMA传输系统。
参看图5A,作为举例,主机向存储设备提供的IO命令指示了用于向存储设备传输数据的DMA描述符510,DMA描述符510包括的各个条目,指示了待传输数据在主机存储器中的地址与数据长度。以及待传输数据在主机存储器中被不连续地存储。
主机提供的DMA描述符510并未指示设备存储器(例如图4的存储器1)地址。存储设备的控制部件,响应于接收了IO命令,为接收IO命令的DMA描述符510要传输的数据,而在设备存储器中分配存储空间。也参看图2,作为举例,通过在设备存储器中分配的6个区域来容纳DMA描述符510要传输的数据。以及控制部件生成包括6个条目的DMA描述符520,以描述从主机存储器到设备存储器的6次源地址与目的地址各自都连续的DMA传输。
参看图5B,作为举例,主机向存储设备提供的IO命令指示了用于向存储设备传输数据的DMA描述符510。
存储设备的控制部件,响应于接收了IO命令,为接收IO命令的DMA描述符510要传输的完整数据,而在作为缓存的存储器0(也参看图4)中分配连续存储空间,使得在存储器0中分配的连续存储空间能容纳DMA描述符510要传输的完整数据。可选地,若存储器0暂时无法提供连续的存储空间容纳DMA描述符510要传输的完整数据,控制部件暂停对DMA描述符510的处理,直到从存储器0可获得足够的连续存储空间。控制部件用存储器0中分配给DMA描述符510要传输的完整数据的存储空间的地址生成DMA描述符540。DMA描述符540包括多个条目,每个条目指示了从主机存储器到存储器0的数据传输。对于DMA描述符510的每个条目,通过为其添加作为目的地址的存储器0的地址,来生成对应的DMA描述符540的每个条目。可选地,DMA描述符540,描述了从主机存储器到存储器0的3次源地址与目的地址各自都连续的DMA传输。
响应于生成了DMA描述符540,DMA模块0(参看图4)发起从主机到存储器0的DMA传输。响应于DMA描述符540所指示的DMA传输完成,可向主机指示对应于DMA描述符510的IO命令(写命令)的执行完成。
以及响应于生成了DMA描述符540,或生成了DMA描述符540的条目,而开始生成DMA描述符550。DMA描述符550用于描述从存储器0到存储器1的DMA传输。控制部件在存储器1中分配一段或多段存储空间,以容纳DMA描述符510(DMA描述符540)要搬移的完整数据。作为举例,从存储器1中分配了6段存储空间来容纳DMA描述符510要搬移的完整数据。对于DMA描述符540的每个条目,将其缓存地址作为DMA描述符550的条目的源地址(例如,对于DMA描述符540的条目0,缓存0x2C00),将从存储器1获取的存储空间段之一(记为S1)的地址(例如设备存储器(存储器1)的地址0x0800)作为DMA描述符550的条目的目的地址。由于存储器1的存储空间段S1的大小为0x0800,不足以容纳DMA描述符540的条目0所指示的所有数据,在DMA描述符550的条目0中,指示传输的数据长度等于存储空间段S1的大小,还生成DMA描述符550的条目1,以继续传输缓存描述符540的条目0所指示的数据,将描述符540的条目0余下的数据(在存储器0中地址为0x3400,长度为0x0400)搬移到存储器1的另一存储空间段(S2)(例如设备存储器(存储器1)的地址0x2400),从而DMA描述符550的条目1具有源地址(存储器0的地址0x3400)、目的地址(存储器1的地址0x2400)以及数据长度为0x0400。
响应于生成了DMA描述符550,DMA模块1(参看图4)发起从存储器0到存储器1的DMA传输。以及响应于将DMA描述符550对应的DMA传输执行完成,可释放DMA描述符550在存储器0中占用的存储空间。
图6是根据本申请实施例的DMA传输的流程图。
步骤610、控制部件获取IO命令中的DMA描述符;其中,IO命令可以是主机向存储设备发送的读命令或写命令。获取的DMA描述符被提供给例如DMA模块0(也参看图3)。IO命令中的DMA描述符指示了数据在第一存储器中存储的存储空间地址。也参见图5B,作为举例,主机向存储设备提供的IO命令指示了DMA描述符510,DMA描述符510包括的各个条目,分别指示了待传输数据在主机存储器中的地址与数据长度。
步骤620、控制部件为IO命令在缓存中分配连续的地址空间。
步骤630、控制部件生成第一DMA描述符,用于描述从第一存储器空间向缓存空间的DMA传输。控制部件用IO命令中的DMA描述符指示的第一存储器的存储空间地址作为源地址,用在缓存中分配的存储空间地址作为目的地址,生成第一DMA描述符。作为举例,控制部件对IO命令中的DMA描述符的每个条目,通过为其添加作为目的地址的缓存的地址,生成对应的第一DMA描述符的每个条目。
作为举例,也参见图5B,存储设备的控制部件,响应于接收了IO命令,为接收IO命令的DMA描述符510要传输的完整数据,而在作为缓存的存储器0(也参看图4)中分配连续存储空间,使得在存储器0中分配的连续存储空间能容纳DMA描述符510要传输的完整数据。控制部件用存储器0中分配给DMA描述符510要传输的完整数据的存储空间的地址生成DMA描述符540(第一DMA描述符)。DMA描述符540包括多个条目,每个条目指示了从主机存储器到存储器0的数据传输。对于DMA描述符510的每个条目,通过为其添加作为目的地址的存储器0的地址,来生成对应的DMA描述符540的每个条目。可选地,DMA描述符540,描述了从主机存储器到存储器0的3次源地址与目的地址各自都连续的DMA传输。
步骤640、第一DMA模块发起第一DMA传输。第一DMA模块将第一存储器空间的数据通过DMA传输搬移到缓存。可选地,响应于第一DMA描述符对应的数据被传输完成,同第一DMA描述符对应的数据在第一存储器空间中占用的存储空间被释放。依然可选地,响应于第一DMA描述符所指示的数据传输完成,还可以向第一存储器空间指示IO命令(读命令或写命令)执行完成。依然可选地,响应于生成第一DMA描述符或生成第一DMA描述符的条目,在第一DMA传输期间,开始生成第二DMA描述符。
第一DMA模块可以并发处理多个第一DMA描述符,以快速的进行DMA数据传输。
步骤650、控制部件生成第二DMA描述符,用于描述从缓存空间到第二存储器空间的DMA传输。其中,用第一DMA描述符的目的地址作为源地址,用在第二存储器空间中分配的存储空间地址作为目的地址,生成第二DMA描述符。作为举例,对第一DMA描述符的每个条目,将其目的地址作为第二DMA描述符的条目的源地址,将从第二存储器空间获取的存储空间段之一的地址作为第二DMA描述符的条目的目的地址。
作为举例,响应于生成了DMA描述符550,DMA模块1(参看图4)发起从存储器0到存储器1的DMA传输。以及响应于将DMA描述符550对应的DMA传输执行完成,可释放DMA描述符550在存储器0中占用的存储空间。
为了提高存储器的利用率,其中,第二DMA描述符指示了数据存储于第二存储器空间的地址为不连续地址。
步骤660,发起第二DMA传输。第二DMA模块将缓存中的数据通过DMA搬移到第二存储器。响应于第二DMA描述符对应的数据被传输完成,同第二DMA描述符对应的数据在缓存空间中占用的存储空间被释放。
在上述第二DMA传输中,第二DMA模块可以并发处理多个第二DMA描述符,以快速的进行DMA数据传输。
图7展示了根据本申请又一实施例的使用缓存优化DMA传输的框图。
主机耦合到存储设备的控制部件。控制部件包括DMA模块0、DMA模块1与存储器0,控制部件还耦合到控制部件外部的存储器1。存储器0例如被集成到控制部件内部,从而存储器0具有相对高的访问速度,以及相对高的单位存储容量的成本;存储器1具有相对低的访问速度,以及相对高的容量。控制部件还包括介质接口控制器。介质接口控制器耦合一个或多个NVM芯片。可选地,NVM芯片包括页缓存(图7中,用耦合到NVM芯片的字母P指示)。介质接口控制器同NVM芯片或其页缓存传输数据。
DMA模块0在主机与存储器0之间进行数据搬移。存储器0作为缓存,来优化主机与存储设备之间的DMA数据传输。
根据图7所展示的实施例,DMA模块1在存储器0与存储器1之间进行数据搬移,和/或在存储器0与耦合到介质接口控制器的NVM芯片之间进行数据搬移。以主机向存储设备写数据的IO命令为例,提供给DMA模块1的DMA描述符所指示目的地址,是存储器1的地址、指示NVM芯片的地址或者NVM芯片的页缓存的地址。从而在一些情况下,DMA模块1将存储器0中的数据直接搬移到NVM芯片,通过减少进出存储器1的开销而加快了对IO命令的处理。
控制部件为各NVM芯片和/或其页缓存提供地址空间,DMA模块1根据将NVM芯片和/或其页缓存的该地址空间的地址作为DMA传输的目的地址。以及DMA模块1根据DMA描述符通过将从存储器0获取的数据提供给介质接口控制器,并向介质接口控制器提供DMA描述符指示的目的地址来指示介质接口控制器将数据提供给NVM芯片,或将数据写入NVM芯片的页缓存。介质接口控制器通过例如访问NVM芯片的命令(例如,遵循ONFI协议的命令)将数据提供给NVM芯片或将数据写入NVM芯片的页缓存。
可选地,DMA模块1也将NVM芯片或NVM芯片的页缓存的数据搬移到存储器0。
可选地,介质接口控制器(而非DMA模块1)处理存储器1与NVM芯片(或NVM芯片的页缓存)之间的数据搬移。
一些情况下,NVM芯片或NVM芯片的页缓存因例如处理其他访问NVM芯片的命令而暂时无法响应同存储器0之间的数据传输。在此情况下,DMA模块1用存储器0与存储器1之间的数据传输作为替代。
控制部件为DMA模块0与DMA模块1各自生成DMA描述符,以指示DMA模块0与DMA模块1的DMA传输。在提供给DMA模块1的DMA描述符的条目的例如目的地址,指示了存储器1的地址或者NVM芯片(或NVM芯片的页缓存)的地址
本申请实施例还提供一种包括程序代码的程序,当被载入主机并在主机上执行时,所述程序使主机的处理器执行上面提供的根据本申请实施例的方法之一。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本申请的很多修改和其他实施方式。因此,应该理解,本申请不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。

Claims (10)

1.一种DMA设备,用于将数据从第一存储器搬移到第二存储器,其特征在于,包括:第一DMA模块、第二DMA模块和缓存;
第一DMA模块根据第一DMA描述符将要传输的数据从第一存储器搬移至缓存;其中所述要传输的数据在所述缓存中被存储在连续的存储空间;
第二DMA模块根据第二DMA描述符将所述要传输的数据从缓存搬移至第二存储器,其中,所述第一DMA描述符指示第一DMA模块的DMA传输,所述第二DMA描述符指示第二DMA模块的DMA传输。
2.根据权利要求1所述的DMA设备,其特征在于,其中,用IO命令中的DMA描述符指示的第一存储器的存储空间地址作为源地址,用在缓存中分配的存储空间地址作为目的地址,生成第一DMA描述符。
3.根据权利要求2所述的DMA设备,其特征在于,其中,若IO命令中的DMA描述符通过多个条目指示要传输的数据在第一存储器中被存放在多个区域,第一DMA描述符包括多个条目;其中,对于第一DMA描述符中每个条目,用第一存储器中每个区域的存储空间地址作为第一DMA描述符条目的源地址,用在缓存中为所述区域分配的存储空间地址作为第一DMA描述符条目的目的地址。
4.根据权利要求3所述的DMA设备,其特征在于,其中,对所述IO命令中的DMA描述符的每个条目,通过为其添加作为目的地址的缓存的地址,生成对应的第一DMA描述符的每个条目。
5.根据权利要求1-4任一项所述的DMA设备,其特征在于,其中,用第一DMA描述符的目的地址作为源地址,用在第二存储器中分配的存储空间地址作为目的地址,生成第二DMA描述符。
6.根据权利要求5所述的DMA设备,其特征在于,其中,若所述要传输的数据在第二存储器中被存储在不连续的多个存储空间,第二DMA描述符包括多个条目;其中,对于第二DMA描述符中每个条目,用第一DMA描述符的目的地址作为第二DMA描述符条目的源地址,用第二存储器中每个存储空间地址作为第二DMA描述符条目的目的地址。
7.根据权利要求6所述的DMA设备,其特征在于,其中,对第一DMA描述符的每个条目,将其目的地址作为第二DMA描述符的条目的源地址,将从第二存储器获取的存储空间段之一的地址作为第二DMA描述符的条目的目的地址。
8.根据权利要求7所述的DMA设备,其特征在于,其中,若第二存储器的第一存储空间段的大小不足以容纳第一DMA描述符的第一条目指示的所有数据,生成第二DMA描述符的第一条目中指示传输的数据长度等于第一存储空间段的大小,还生成第二DMA描述符的第二条目以继续传输第一DMA描述符的第一条目所指示的数据。
9.根据权利要求1-8任一项所述的DMA设备,其特征在于,第一DMA模块并发处理多个第一DMA描述符,和/或第二DMA模块并发处理多个第二DMA描述符。
10.根据权利要求1-8任一项所述的DMA设备,其中,响应于第二DMA描述符对应的数据被传输完成,同第二DMA描述符对应的数据在缓存中占用的存储器空间被释放。
CN202210796139.6A 2018-08-28 2018-09-14 一种dma设备 Pending CN115168257A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2018109883408 2018-08-28
CN201810988340 2018-08-28
CN201811076192.9A CN110865952B (zh) 2018-08-28 2018-09-14 利用缓存优化dma传输

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201811076192.9A Division CN110865952B (zh) 2018-08-28 2018-09-14 利用缓存优化dma传输

Publications (1)

Publication Number Publication Date
CN115168257A true CN115168257A (zh) 2022-10-11

Family

ID=69651655

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201811076192.9A Active CN110865952B (zh) 2018-08-28 2018-09-14 利用缓存优化dma传输
CN202210796139.6A Pending CN115168257A (zh) 2018-08-28 2018-09-14 一种dma设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201811076192.9A Active CN110865952B (zh) 2018-08-28 2018-09-14 利用缓存优化dma传输

Country Status (1)

Country Link
CN (2) CN110865952B (zh)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100507886C (zh) * 2005-12-22 2009-07-01 北京中星微电子有限公司 一种对非易失性存储器进行直接存储访问的方法及其装置
CN101178690B (zh) * 2007-12-03 2010-07-21 浙江大学 低功耗高性能高速暂存器
CN102681952B (zh) * 2012-05-12 2015-02-18 北京忆恒创源科技有限公司 将数据写入存储设备的方法与存储设备
CN102693198B (zh) * 2012-05-12 2015-03-25 北京忆恒创源科技有限公司 Dma传输方法及系统
US9824043B2 (en) * 2015-01-22 2017-11-21 Lite-On Technology Corporation System with solid state drive and control method thereof
CN106326140B (zh) * 2015-06-30 2020-06-02 华为技术有限公司 数据拷贝方法、直接内存访问控制器及计算机系统
CN108345551B (zh) * 2017-01-23 2020-05-12 杭州海康威视数字技术股份有限公司 一种存储数据的方法及装置

Also Published As

Publication number Publication date
CN110865952B (zh) 2022-07-29
CN110865952A (zh) 2020-03-06

Similar Documents

Publication Publication Date Title
US11042297B2 (en) Techniques to configure a solid state drive to operate in a storage mode or a memory mode
US10649969B2 (en) Memory efficient persistent key-value store for non-volatile memories
KR100673013B1 (ko) 메모리 컨트롤러 및 그것을 포함한 데이터 처리 시스템
US8144515B2 (en) Interleaved flash storage system and method
US20100169549A1 (en) Memory system and controller
US11620066B2 (en) Storage device with expandible logical address space and operating method thereof
TWI738442B (zh) 資料儲存裝置與資料處理方法
US10754785B2 (en) Checkpointing for DRAM-less SSD
KR20140142793A (ko) 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템
US20180089076A1 (en) Technologies for combining logical-to-physical address updates
CN110059032A (zh) 存储器接口及具有存储器接口的存储器控制器
US11494318B2 (en) Controller and operation method thereof
KR20160036693A (ko) 저장 장치 및 그것의 커맨드 스케줄링 방법
CN113032293A (zh) 缓存管理器及控制部件
KR20180126656A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN109471819A (zh) 为来自主机的读取请求提供短的读取响应时间的存储设备
US10592113B2 (en) Method for transferring command from host to device controller and system using the same
CN110865952B (zh) 利用缓存优化dma传输
US20120159024A1 (en) Semiconductor apparatus
EP3819771B1 (en) Data processing method and device, apparatus, and system
US20150254011A1 (en) Memory system, memory controller and control method of non-volatile memory
CN113031849A (zh) 直接内存存取单元及控制部件
KR20210016938A (ko) 데이터 처리 시스템 및 그것의 동작방법
US20230161502A1 (en) Storage devices including a controller and methods operating the same
US20230305711A1 (en) Memory controller and data processing method for processing disordered read-out data

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