CN112835828B - 用于非连续源及目的地存储器地址的直接存储器存取(dma)命令 - Google Patents
用于非连续源及目的地存储器地址的直接存储器存取(dma)命令 Download PDFInfo
- Publication number
- CN112835828B CN112835828B CN202011339255.2A CN202011339255A CN112835828B CN 112835828 B CN112835828 B CN 112835828B CN 202011339255 A CN202011339255 A CN 202011339255A CN 112835828 B CN112835828 B CN 112835828B
- Authority
- CN
- China
- Prior art keywords
- memory
- dma
- destination
- source
- contiguous
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 543
- 238000012545 processing Methods 0.000 claims abstract description 68
- 238000000034 method Methods 0.000 claims description 51
- 238000003860 storage Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 description 23
- 238000007726 management method Methods 0.000 description 14
- 239000003999 initiator Substances 0.000 description 8
- 238000003491 array Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Bus Control (AREA)
Abstract
本申请案涉及用于非连续源存储器地址及目的地存储器地址的直接存储器存取DMA命令。与多个存储器装置可操作地耦合的处理装置经配置以接收用于将多个数据区段从源存储器区移动到目的地存储器区的DMA命令,所述源存储器区包括多个非连续存储器地址且所述DMA命令包括引用所述多个非连续存储器地址的源值。所述处理装置进一步从由所述源值标识的位置检索所述多个非连续存储器地址。所述处理装置接着从所述多个非连续存储器地址读取所述多个数据区段。所述处理装置还将所述多个数据区段写入到所述目的地存储器区。
Description
技术领域
本发明大体上涉及一种存储器系统,且更具体来说,涉及支持用于非连续源及目的地存储器地址的直接存储器存取(DMA)命令。
背景技术
存储器子系统可包含存储数据的一或多个存储器组件。所述存储器组件可为例如非易失性存储器组件及易失性存储器组件。通常,主机系统可利用存储器子系统来将数据存储在所述存储器组件处及从所述存储器组件检索数据。
发明内容
本发明的一个方面涉及一种系统,其包括:多个存储器装置;处理装置,其与所述多个存储器装置可操作地耦合,以:接收用于将多个数据区段从源存储器区移动到目的地存储器区的直接存储器存取(DMA)命令,其中所述源存储器区包括多个非连续存储器地址,所述DMA命令包括引用所述多个非连续存储器地址的源值;从由所述源值标识的位置检索所述多个非连续存储器地址;从所述多个非连续存储器地址读取所述多个数据区段;及将所述多个数据区段写入到所述目的地存储器区。
本发明的另一方面涉及一种方法,其包括:接收用于将多个数据区段从源存储器区移动到目的地存储器区的DMA命令,其中所述目的地存储器区包括多个非连续存储器地址,所述DMA命令包括引用所述多个非连续存储器地址的目的地值;从由所述目的地值标识的位置检索所述多个非连续存储器地址;从所述源存储器区读取所述多个数据区段;及将所述多个数据区段写入到所述多个非连续存储器地址。
本发明的又一方面涉及一种非暂时性计算机可读存储媒体,其包括指令,所述指令在由处理装置执行时致使所述处理装置:接收用于将多个数据区段从源存储器区移动到目的地存储器区的DMA命令,其中所述源存储器区包括第一多个非连续存储器地址且所述目的地存储器区包括第二多个非连续存储器地址,所述DMA命令包括引用所述第一多个非连续存储器地址的源值及引用所述第二多个非连续存储器地址的目的地值;从由所述源值标识的位置检索所述第一多个非连续存储器地址;从由所述目的地值标识的位置检索所述第二多个非连续存储器地址;从所述第一多个非连续存储器地址读取所述多个数据区段;及将所述多个数据区段写入到所述第二多个非连续存储器地址。
附图说明
将从下文给出的详细描述及从本发明的各个实施例的附图更加充分地理解本发明。
图1说明根据本发明的一些实施例的用于在存储器装置中管理DMA命令中的非连续源及目的地存储器地址的实例计算环境。
图2A说明根据本发明的一些实施例的包含非连续源存储器地址的DMA命令处理的实例。
图2B说明根据本发明的一些实施例的包含非连续目的地存储器地址的DMA命令处理的实例。
图2C说明根据本发明的一些实施例的包含非连续源存储器地址及非连续目的地存储器地址的DMA命令处理的实例。
图3是根据本发明的一些实施例的在存储器子系统中管理DMA命令中的非连续源存储器地址的实例方法的流程图。
图4是说明根据本发明的一些实施例的存储器子系统中的DMA命令的字段的实例的框图。
图5是根据本发明的一些实施例的使用DMA寄存器来管理DMA命令的非连续源及目的地存储器地址的实例方法的流程图。
图6是根据本发明的一些实施例的使用链表来管理DMA命令的非连续目的地存储器地址的实例方法的流程图。
图7是可在其中操作本发明的实施例的实例计算机系统的框图。
具体实施方式
本发明的方面涉及支持用于存储器子系统的存储器装置中的非连续源存储器地址及目的地存储器地址的直接存储器存取(DMA)命令。存储器子系统可为存储装置、存储器模块或存储装置及存储器模块的混合体。下文结合图1描述存储装置及存储器模块的实例。通常,主机系统可利用包含存储数据的一或多个存储器装置的存储器子系统。主机系统可提供将存储在存储器子系统处的数据且可请求将从存储器子系统检索的数据。
常规的基于硬件的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寄存器且接着在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命令移动的数据区段不再需要连续地存储在源存储器位置或目的地存储器位置中。
图1说明根据本发明的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或其组合的媒体。
存储器子系统110可为存储装置、存储器模块或存储装置及存储器模块的混合体。存储器装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储装置(UFS)驱动器及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)及非易失性双列直插式存储器模块(NVDIMM)。计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、物联网(IoT)启用装置、嵌入式计算机(例如,包含在交通工具、工业设备或联网的商业装置中的计算机)或包含存储器及处理装置的此计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120经耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”通常是指组件之间的连接,其可为间接通信连接或直接通信连接(例如,无需中介组件),有线或无线的,包含例如电、光学、磁性等的连接。
主机系统120可包含处理器芯片组及由处理器芯片组执行的软件栈。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,NVDIMM控制器)及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120例如使用存储器子系统110来将数据写入到存储器子系统110及从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双列直插式存储器模块(DIMM)接口(例如,支持双倍数据速率(DDR)的DIMM插槽接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM Express(NVMe)接口来存取存储器组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。
存储器装置可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含“与非”(NAND)型快闪存储器及原位写入存储器,例如三维交叉点(“3D交叉点”)存储器。3D交叉点存储器装置是可结合可堆叠的交叉网格数据存取阵列,基于体电阻变化来执行位存储的非易失性存储器单元的交叉点阵列。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行原位写入操作,其中可对非易失性存储器单元进行编程而无需事先擦除所述非易失性存储器单元。
存储器装置130中的每一者可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单电平单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多电平单元(MLC)、三电平单元(TLC)及四电平单元(QLC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或其任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可被分组为可指代用于存储数据的存储器装置的逻辑单元的页面。利用一些类型的存储器(例如,NAND),可对页面进行分组以形成块。尽管描述例如NAND型快闪存储器的非易失性存储器组件,但是存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选择存储器、其它基于硫族化物的存储器、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、“或非”(NOR)快闪存储器、电可擦可编程只读存储器(EEPROM)。
存储器子系统控制器115(或为了简单起见,控制器115)可与存储器装置130进行通信以执行例如在存储器装置130处读取数据、写入数据或擦除数据的操作以及其它此类操作。存储器子系统控制器115可包含例如一或多个集成电路及/或离散组件、缓冲存储器或其组合的硬件。硬件可包含具有专用(即,硬编码)逻辑的数字电路系统以执行本文中所描述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适处理器。
存储器子系统控制器115可包含经配置以执行存储在本地存储器119中的指令的处理器(处理装置)117。在所说明实例中,存储器子系统控制器115的本地存储器119包含经配置以存储指令以执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流及例程的嵌入式存储器。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已被说明为是包含存储器子系统控制器115,但是在本发明的另一实施例中,存储器子系统110可不包含存储器子系统控制器115,而是可依赖于外部控制(例如,由外部主机,或由与存储器子系统分离的处理器或控制器所提供)。
通常,存储器子系统控制器115可从主机系统120接收命令或操作且可将命令或操作转换成指令或适当命令以实现对存储器装置130的所期望存取。存储器子系统控制器115可负责与存储器装置130相关联的其它操作,例如损耗均衡操作、垃圾收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓冲存储操作及逻辑地址(例如,逻辑块地址(LBA)、命名空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120进行通信。主机接口电路系统可将从主机系统接收的命令转换成用于存取存储器装置130的命令指令并且将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130的高速缓冲存储器或缓冲器(例如,DRAM)及地址电路系统(例如,行解码器及列解码器)。
在一些实施例中,存储器装置130包含结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作的本地媒体控制器135。外部控制器(例如,存储器子系统控制器115)可从外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与用于媒体管理的本地控制器(例如,本地控制器135)组合在同一存储器装置封装内的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子系统110包含可用来支持用于所述存储器子系统中的源位置及目的地位置的非连续存储器地址的DMA命令的DMA存储器地址管理模块113。在某些实施方案中,可在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引擎可继续读取链表的节点且从每一节点检索存储器地址直到到达链表的最后一个节点为止。
图2A到C是说明根据本发明的一些实施例的用于将数据从存储器子系统110中的源存储器位置移动到目的地存储器位置以进行非连续存储器地址管理的DMA命令的处理的图。图2A说明包括非连续源存储器地址230及连续目的地存储器地址260的DMA命令205的第一实例201。在这个实例中,DMA引擎210可接收用于将数据区段S1到4从非连续源存储器地址230移动到目的地连续存储器地址260的DMA命令205。DMA命令可包含源地址的指示、目的地地址的指示及待传送的区段的数目。在这种情况下,DMA命令205可包含标识非连续存储器地址列表的源值。因此,区段S1到4可为存储器子系统的地址空间内的非连续区段,其表示DMA命令205的源存储器位置。区段D1到4可为存储器子系统的地址空间内的连续区段,其表示DMA命令205的目的地存储器位置。区段可指可由单个存储器地址引用的已知固定大小的存储器分块(例如,64个字节)。
在操作240处,DMA引擎210可从DMA命令205读取引用非连续源存储器地址230的向量值。向量数据类型可指代可含有可变大小的数据元素阵列的数据结构。在这种情况下,向量值可包含引用S1到4的存储器地址阵列。DMA引擎210接着可读取引用源存储器地址的向量值,读取区段S1到4,且将区段S1到4存储到DMA缓冲器220中。在实施方案中,向量值可包含源存储器地址的显式值。在其它实施方案中,向量值可含有对外部存储的存储器地址(例如,在DMA寄存器中或在链表数据结构中)的引用,如下文中更详细地解释。
在实施方案中,DMA引擎210可基于源存储器位置的最大存取粒度及目的地存储器位置的最大存取粒度来对区段S1到4读取源地址230执行数据合并。合并包含保存来自数个较小读取操作的数据直到可执行单个较大写入操作为止。最大存取粒度可指代单个操作中可存取(读取或写入)的字节的最大数目。例如,如果源存储器媒体具有较小存取粒度(例如,64个字节)且目的地存储器媒体具有较大存取粒度(例如,128字节),那么可在读取请求生成侧上发生合并。在这种情况下,合并包含组合来自从源存储器地址的数个读取操作的区段直到最大目的地存取粒度,以创建对目的地存储器位置的单个写入请求。
在操作250处,DMA引擎210可将区段从DMA缓冲器220写入到D1到4处的目的地地址260。鉴于目的地地址D1到4是连续的,DMA命令205的目的地值可引用单个存储器地址。在这种情况下,区段D1的存储器地址可被包含在DMA命令205的目的地值中。DMA引擎210接着可存取D1的存储器地址以将数据从DMA缓冲器220写入到目的地区段D1到4。
图2B说明包括连续源存储器地址232及非连续目的地存储器地址262的DMA命令205的第二实例202。在这个实例中,DMA引擎210可接收用于将数据区段S1到4从连续源存储器地址232移动到非连续目的地存储器地址262的DMA命令205。DMA命令可包含源地址的指示、目的地地址的指示及待传送的区段的数目。在这种情况下,DMA命令205可包含标识非连续目的地存储器地址列表的目的地值。因此,区段D1到4可为存储器子系统的地址空间内的非连续区段,其表示DMA命令205的目的地存储器位置。区段S1到4可为存储器子系统的地址空间内的连续区段,其表示DMA命令205的源存储器位置。
在操作241处,DMA引擎210可将区段S1到4读取到DMA缓冲器220中。鉴于源地址S1到4是连续的,DMA命令205的源值可引用单个存储器地址。在这种情况下,区段S1的存储器地址可被包含在DMA命令205的源值中。DMA引擎210接着可存取S1的存储器地址以将数据从源区段S1到4读取到DMA缓冲器220中。
在实施方案中,DMA引擎210可基于源存储器位置的最大存取粒度及目的地存储器位置的最大存取粒度来对来自源地址232的区段S1到4执行数据广播。广播包含基于目的地媒体的存取粒度来将数据从一个较大读取操作分解成数个较小写入操作。例如,如果源存储器媒体具有大存取粒度(例如,128个字节)且目的地存储器媒体具有小存取粒度(例如,64个字节),那么广播可在写入请求生成侧上发生。在这种情况下,广播包含将来自从源存储器地址的单个读取操作的区段分解成最大目的地存取粒度,以创建对目的地存储器位置的数个写入请求。
在操作251处,DMA引擎210可将区段从DMA缓冲器220写入到D1到4处的目的地地址260。鉴于目的地地址D1到4是非连续的,DMA引擎210可从DMA命令205读取引用非连续目的地存储器地址262的向量值。在这种情况下,向量值可包含引用D1到4的存储器地址阵列。DMA引擎210接着可读取引用目的地存储器地址的向量值,以由向量值指定的次序将数据从DMA缓冲器220写入到区段D1到4中。在实施方案中,向量值可包含目的地存储器地址的显式值。在其它实施方案中,向量值可包含对外部存储的存储器地址(例如,在DMA寄存器中或在链表数据结构中)的引用,如下文中更详细地解释。
图2C说明包括非连续源存储器地址234及非连续目的地存储器地址264的DMA命令205的第三实例203。在这个实例中,DMA引擎210可接收用于将数据区段S1到4从非连续源存储器地址234移动到非连续目的地存储器地址264的DMA命令205。DMA命令可包含源地址的指示、目的地地址的指示及待传送的区段的数目。在这种情况下,DMA命令205可包含标识非连续目的地存储器地址列表的目的地向量值。因此,区段D1到4可为存储器子系统的地址空间内的非连续区段,其表示DMA命令205的目的地存储器位置。在实施方案中,DMA命令205可进一步包含指示目的地值是否为向量数据类型的目的地值类型字段(例如,当目的地存储器位置包含非连续存储器地址时,目的地值可为向量数据类型,而对于连续目的地存储器地址,目的地值可为目的地存储器位置的第一区段的单个存储器地址)。
DMA命令205还可包含标识非连续源存储器地址列表的源向量值。因此,区段S1到4可为存储器子系统的地址空间内的非连续区段,其表示DMA命令205的源存储器位置。在实施方案中,DMA命令205还可包含指示源值是否为向量数据类型的源值类型字段(例如,当源存储器位置包含非连续存储器地址时,源值可为向量数据类型,而对于连续源存储器地址,源值可为源存储器位置的第一区段的单个存储器地址)。
在操作242处,DMA引擎210可从DMA命令205读取引用非连续源存储器地址234的向量值。在这种情况下,向量值可包含引用S1到4的存储器地址阵列。DMA引擎210接着可读取引用源存储器地址的向量值,读取区段S1到4,且将区段S1到4存储到DMA缓冲器220中。在实施方案中,向量值可包含源存储器地址的显式值。在其它实施方案中,向量值可含有对外部存储的存储器地址(例如,在DMA寄存器中或在链表数据结构中)的引用,如下文中更详细地解释。
在操作252处,DMA引擎210可将区段从DMA缓冲器220的区段写入到D1到4处的目的地地址264。鉴于目的地地址D1到4是非连续的,DMA引擎210可从DMA命令205读取引用非连续目的地存储器地址264的向量值。在这种情况下,向量值可包含引用D1到4的存储器地址阵列。DMA引擎210接着可读取引用目的地存储器地址的向量值,以由向量值指定的次序将数据从DMA缓冲器220写入到区段D1到4中。在实施方案中,向量值可包含目的地存储器地址的显式值。在其它实施方案中,向量值可含有对外部存储的存储器地址(例如,在DMA寄存器中或在链表数据结构中)的引用,如下文中更详细地解释。
图3是根据本发明的一些实施例的在存储器子系统中管理DMA命令中的非连续源存储器地址的实例方法的流程图。方法300可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300由图1的DMA存储器地址管理模块113来执行。尽管以特定顺序或次序展示,但是除非另有指定,否则可修改过程的次序。因此,所说明实施例应仅被理解为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可省略一或多个过程。因此,并非在每个实施例中均需要所有过程。其它过程流程也是可能的。
在操作310处,处理逻辑接收用于将数据区段的群组从第一存储器区移动到第二存储器区的DMA命令。在实施方案中,第一存储器区可为包含多个非连续存储器地址的源存储器区,如上文中更详细地解释。此外,DMA命令可包含引用多个非连续存储器地址的源值(例如,作为源存储器地址列表的向量值)。第二存储器区可为包含可在其中写入数据区段的多个连续存储器地址的目的地存储器区。
在操作315处,处理逻辑从由源值标识的位置检索多个非连续存储器地址。在实施方案中,非连续源存储器地址可存储在DMA命令内部。源存储器地址也可经存储在DMA命令外部。例如,存储器地址可经存储在由DMA命令的源值引用的DMA寄存器中。在另一实例中,源存储器地址可经存储在链表数据结构中且DMA命令的源值可引用链表的第一节点,如本文中更详细地解释。
在操作320处,处理逻辑可从非连续源存储器地址读取多个数据区段。在实施方案中,每一源存储器地址可引用一个数据区段且可从DMA命令检索数据区段的数目。处理逻辑接着可将多个数据区段从非连续源存储器地址读取到存储器子系统的DMA缓冲器中。
在操作330处,处理逻辑可将多个数据区段写入到目的地存储器区。在某些实施方案中,由于目的地存储器区表示连续存储器地址,因此目的地存储器区可在DMA命令中由目的地存储器区的第一区段的存储器地址来引用。在实施方案中,处理逻辑可从存储器子系统的DMA缓冲器检索多个数据区段且接着将数据区段写入到DMA命令中引用的连续目的地存储器区中。
图4是说明根据本发明的一些实施例的存储器子系统中的DMA命令的字段的实例的框图。DMA命令400可含有包含源值类型430、源值440、目的地值类型450、目的地值460及区段数目480的数据字段。在实施方案中,可将DMA命令发送到DMA引擎以将数据区段从由源值440标识的存储器区移动到由目的地值460标识的另一存储器区。区段数目字段480可指示将由于DMA命令而移动的数据区段的数目。
在实施方案中,源值类型430可标识源值是表示连续存储器地址还是非连续存储器地址。源值类型430可标识非连续源存储器地址的位置。在实例中,源值类型可具有值0、1、2或3。值0可指示源值引用连续存储器地址。值1可指示源值引用存储在DMA命令内部的非连续存储器地址。在这种情况下,源值440可包含实际的非连续存储器地址列表。值2可指示源值引用存储在DMA寄存器中的非连续存储器地址。在这种情况下,源值440可包含DMA寄存器的标识符。在实施方案中,DMA寄存器标识符的次序可为从存储器读取存储器地址的次序。值3可指示源值引用存储在链表数据结构中的非连续存储器地址。在这种情况下,源值440可包含链表的第一节点,所述第一节点可引用链表的下一节点。在实施方案中,链表中的节点的次序可指示非连续源存储器地址的次序,可从所述非连续源存储器地址读取数据区段且接着将数据区段写入到非连续目的地存储器地址。
在一个实施方案中,源值类型430可具有值3,其指示链表源值类型。源值440接着可引用节点442作为链表的第一节点。DMA存储器地址管理模块113接着可存取节点442以读取第一源存储器地址。DMA存储器地址管理模块113还可从节点442读取对节点444的引用。类似地,DMA存储器地址管理模块113可从节点444读取下一源存储器地址连同对节点446的引用。最后,DMA存储器地址管理模块113可从节点446读取最后一个源存储器地址。DMA存储器地址管理模块113可检测到节点446是链表的最后一个节点,因为对节点446中的下一节点的引用可为空。
与源值类型430类似,目的地值类型450可标识目的地值460是表示连续存储器地址还是非连续存储器地址且还可标识非连续目的地存储器地址的位置。在实例中,目的地值类型可具有以下值:0,其指示连续目的地存储器地址;1,其指示目的地存储器地址经嵌入在DMA命令400中;2,其指示目的地存储器地址经存储在DMA寄存器中;或3,其指示目的地存储器地址经存储在链表中。
在当前实施方案中,目的地值类型450可具有值2,其指示目的地存储器地址经存储在DMA寄存器中。目的地值460接着可包含DMA寄存器464到466的标识符。在实施方案中,DMA引擎内的写入状态机可单步调试DMA命令400且可检索DMA寄存器标识符。写入状态机接着可从DMA寄存器464到466读取目的地存储器地址列表。状态机可指代负责处理读取或写入请求(包含检索源及目的地存储器地址)的存储器子系统的硬件组件。在实施方案中,目的地值460中的DMA寄存器标识符的次序可指示可接收从非连续源存储器地址读取的数据区段的非连续目的地存储器地址的次序。
图5是根据本发明的一些实施例的使用DMA寄存器来管理DMA命令的非连续源及目的地存储器地址的实例方法的流程图。方法500可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500由图1的DMA存储器地址管理模块113来执行。尽管以特定顺序或次序展示,但是除非另有指定,否则可修改过程的次序。因此,所说明实施例应仅被理解为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可省略一或多个过程。因此,并非在每个实施例中均需要所有过程。其它过程流程也是可能的。
在操作510处,处理逻辑接收用于将数据区段从非连续源存储器地址移动到非连续目的地存储器地址的DMA命令。在实施方案中,DMA命令可包含引用非连续源存储器地址的源值(例如,作为源存储器地址列表的向量值)。类似地,DMA命令可包含引用非连续目的地存储器地址的目的地值(例如,作为目的地存储器地址列表的向量值)。
在操作520处,处理逻辑从DMA命令检索源向量值。在某些实施方案中,DMA命令可含有标识非连续源存储器地址的位置的源值类型字段。在实例中,源值类型可指示源存储器地址经嵌入在DMA命令中。在另一实例中,源值类型可指示源存储器地址经存储在DMA引擎内的DMA寄存器中。在这种情况下,源值可包含DMA寄存器的标识符。此外,在另一实例中,源值类型可指示可将非连续源存储器地址作为链表数据结构提供到DMA引擎。在这种情况下,源值可包含链表的第一节点,所述第一节点指向链表的下一节点,如本文中更详细地解释。
在这种情况下,源值包含存储源存储器地址列表的第一组DMA寄存器的标识符。处理逻辑接着可使用来自源值的标识符来存取第一组DMA寄存器且可从第一组DMA寄存器读取源存储器地址列表。
在操作530处,处理逻辑接着可将数据区段从源存储器地址读取到DMA缓冲器中。在实施方案中,可从DMA命令检索将从源存储器地址读取的数据区段的数目,如本文中更详细地解释。
在操作540处,处理逻辑从DMA命令检索目的地向量值。在某些实施方案中,DMA命令可含有标识非连续目的地存储器地址的位置的目的地值类型字段。目的地值类型可指示目的地存储器地址经嵌入在DMA命令中,经存储在DMA寄存器中或经存储在链表数据结构中,如本文中更详细地解释。在这种情况下,目的地值类型指示目的地存储器地址经存储在DMA寄存器中,因此目的地值包含存储存储器地址列表的第二组DMA寄存器的标识符。处理逻辑接着可使用来自目的地值的标识符来存取第二组DMA寄存器且可从第二组DMA寄存器读取目的地存储器地址列表。
在操作550处,处理逻辑将数据区段从DMA缓冲器写入到由第二组DMA寄存器引用的非连续目的地存储器地址。在实施方案中,可基于目的地向量值的DMA寄存器标识符的次序来确定将数据区段从DMA缓冲器写入到目的地存储器地址中的次序。
图6是根据本发明的一些实施例的使用链表来管理DMA命令的非连续目的地存储器地址的实例方法的流程图。方法600可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法600由图1的DMA存储器地址管理模块113来执行。尽管以特定顺序或次序展示,但是除非另有指定,否则可修改过程的次序。因此,所说明实施例应仅被理解为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可省略一或多个过程。因此,并非在每个实施例中均需要所有过程。其它过程流程也是可能的。
在操作610处,处理逻辑接收用于将数据区段从连续源存储器地址移动到非连续目的地存储器地址的DMA命令。在实施方案中,DMA命令可包含引用非连续目的地存储器地址的目的地值(例如,作为目的地存储器地址列表的向量值),如上文中更详细地解释。
在操作615处,处理逻辑将数据区段从连续源存储器地址读取到DMA缓冲器中。在实施方案中,DMA命令可包含指示将从源存储器地址读取的数据区段的数目的字段,如本文中更详细地解释。
在操作620处,处理逻辑从DMA命令检索目的地向量值。在这种情况下,非连续目的地存储器地址经存储在链表数据结构中。因此目的地向量值可包含链表的第一节点。在实施方案中,第一节点可包含目的地存储器地址的向量的第一存储器地址连同对链表的下一节点的引用。在实施方案中,对下一节点的引用可为到含有链表的第二节点的存储器位置的指针。
在操作630处,处理逻辑可从当前链表节点检索下一目的地存储器地址。在实施方案中,处理逻辑可继续检索目的地存储器地址直到处理完整链表为止。处理逻辑接着可将数据区段从DMA缓冲器写入到非连续存储器地址列表。
在操作635处,处理逻辑可确定是否已处理链表的最后一个节点。在链表数据结构中,链表的每一节点引用链表的下一节点。最后一个节点可含有空引用,其指示不存在待处理的模式节点。在此,当处理逻辑确定当前节点引用下一节点时,在操作640处处理逻辑定位下一节点。例如,当前节点可含有到含有链表的下一节点的存储器地址的指针。处理逻辑接着可循环回到操作630以从下一节点读取后续目的地存储器地址。
在操作650处,当处理逻辑确定当前节点未引用下一节点时,处理逻辑可决定将数据区段从DMA缓冲器写入到从链表检索的目的地存储器地址。
图7说明计算机系统700的实例机器,可在所述计算机系统700内执行用于致使所述机器执行本文中所论述的方法中的任何一或多者的一组指令。在一些实施例中,计算机系统700可对应于主机系统(例如,图1的主机系统120),所述主机系统包含,经耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的DMA存储器地址管理模块113的操作)。在替代实施例中,所述机器可经连接(例如,经联网)到LAN、内联网、外联网及/或因特网中的其它机器。所述机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,作为对等(或分布式)网络环境中的对等计算机操作,或作为云计算基础结构或环境中的服务器或客户端机器操作。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设施、服务器、网络路由器、交换机或网桥,或能够执行一组指令(循序指令或其它指令)的机器,所述指令指定将由那个机器采取的动作。此外,虽然说明单个机器,但是术语“机器”也应被理解为包含个别地或共同地执行一组(或多组)指令以执行本文中所论述的方法中的任何一或多者的机器的任何集合。
实例计算机系统700包含经由总线730彼此通信的处理装置702、主存储器704(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器706(例如,快闪存储器、静态随机存取存储器(SRAM)等)及数据存储系统718。
处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,所述处理装置可为复杂指令组计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置702也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置702经配置以执行指令726以执行本文中所论述的操作及步骤。计算机系统700可进一步包含网络接口装置708以通过网络720进行通信。
数据存储系统718可包含在其上存储有体现本文中所描述的方法或功能中的任何一或多者的一或多组指令726或软件的机器可读存储媒体724(也被称为计算机可读媒体)。指令726在由计算机系统700执行期间也可全部或至少部分地驻留在主存储器704内及/或处理装置702内,主存储器704及处理装置702也构成机器可读存储媒体。机器可读存储媒体724、数据存储系统718及/或主存储器704可对应于图1的存储器子系统110。
在一个实施例中,指令726包含用于实施对应于图1的DMA存储器地址管理模块113的功能的指令。虽然机器可读存储媒体724在实例实施例中被展示为单个媒体,但是术语“机器可读存储媒体”应被理解为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”也应被理解为包含能够存储或编码一组指令以供机器执行且致使机器执行本发明的方法中的任何一或多者的任何媒体。因此,术语“机器可读存储媒体”应被理解为包含但不限于固态存储器、光学媒体及磁性媒体。
已根据对计算机存储器内的数据位的操作的算法及符号表示来呈现前文详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用来最有效地向所属领域的其它技术人员传达其工作实质的方式。算法在此且通常被认为是导向所期望结果的自洽操作序列。所述操作是需要对物理量进行物理操纵的操作。通常,尽管并非必需的,但是这些量采取能够被存储、组合、比较及以其它方式操纵的电信号或磁性信号的形式。主要出于通用的原因,有时已证明将这些信号称为位、值、元素、符号、字符、项、数字等是方便的。
然而,应记住,所有这些及类似术语应与适当物理量相关联且仅仅是应用于这些量的方便标签。本发明可指计算机系统或类似电子计算装置的动作及过程,所述计算机系统或类似电子计算装置将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
本发明还涉及用于执行本文中的操作的设备。这个设备可经专门构造用于预期目的,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可经存储在计算机可读存储媒体中,例如但不限于任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适于存储电子指令的任何类型的媒体,其各自经耦合到计算机系统总线。
本文中所提出的算法及显示与任何特定计算机或其它设备不是固有地相关。各种通用系统可与根据本文中的教示的程序一起使用,或可证明构造更专用设备来执行所述方法是方便的。各种这些系统的结构将如在以下描述中所阐述那样出现。另外,未参考任何特定编程语言来描述本发明。将明白,可使用多种编程语言来实施如本文中所描述的本发明的教示。
本发明可被提供为计算机程序产品或软件,所述计算机程序产品或软件可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本发明的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,本发明的实施例已参考其特定实例实施例进行描述。将显而易见的是,在不脱离如所附权利要求书中所阐述的本发明的实施例的更广泛精神及范围的情况下,可对本发明进行各种修改。因此,说明书及附图应被认为是说明性而非限制性的。
Claims (20)
1.一种用于存储器操作的系统,其包括:
多个存储器装置;
处理装置,其与所述多个存储器装置可操作地耦合,以:
接收用于将多个数据区段从源存储器区移动到目的地存储器区的直接存储器存取DMA命令,其中所述源存储器区包括多个非连续存储器地址,所述DMA命令包括引用所述多个非连续存储器地址的源值;
从由所述源值标识的位置检索所述多个非连续存储器地址;
针对与所述DMA命令相关联的所述多个数据区段中的每一相应数据区段,执行读取操作以将所述相应数据区段从来自所述多个非连续存储器地址中的对应的相应非连续存储器地址读取到DMA缓冲器中;
从所述DMA缓冲器检索所述多个数据区段用于写入到所述目的地存储器区中;及
将所检索的多个数据区段写入到所述目的地存储器区。
2.根据权利要求1所述的系统,其中所述多个非连续存储器地址由链表数据结构引用且其中所述源值包括所述链表数据结构的第一节点。
3.根据权利要求1所述的系统,其中所述多个非连续存储器地址经存储在多个寄存器中,且其中所述源值包括引用所述多个寄存器的多个标识符。
4.根据权利要求1所述的系统,其中所述源值包括所述多个非连续存储器地址。
5.根据权利要求1所述的系统,其中所述DMA命令进一步包括源值类型,所述源值类型标识所述多个非连续存储器地址的位置。
6.根据权利要求1所述的系统,其中所述目的地存储器区包括数个连续存储器地址。
7.根据权利要求1所述的系统,其中,为了将所述相应数据区段从对应的相应非连续存储器地址读取到所述DMA缓冲器中,所述处理装置进一步以由所述源值提供的相同次序将所述多个数据区段存储到所述DMA缓冲器中。
8.根据权利要求7所述的系统,其中为了将所述多个数据区段写入到所述目的地存储器区,所述处理装置进一步以由所述源值提供的所述相同次序从所述DMA缓冲器检索所述多个数据区段。
9.一种用于存储器操作的方法,其包括:
接收用于将多个数据区段从源存储器区移动到目的地存储器区的DMA命令,其中所述目的地存储器区包括多个非连续存储器地址,所述DMA命令包括引用所述多个非连续存储器地址的目的地值;
从由所述目的地值标识的位置检索所述多个非连续存储器地址;
从所述源存储器区将与所述DMA命令相关联的所述多个数据区段读取到DMA缓冲器中;
从所述DMA缓冲器检索所述多个数据区段用于写入到所述多个非连续存储器地址中;及
将所检索的多个数据区段写入到所述多个非连续存储器地址。
10.根据权利要求9所述的方法,其中所述多个非连续存储器地址由链表数据结构引用且其中所述目的地值包括所述链表数据结构的第一节点。
11.根据权利要求9所述的方法,其中所述多个非连续存储器地址经存储在多个寄存器中,且其中所述目的地值包括引用所述多个寄存器的多个标识符。
12.根据权利要求9所述的方法,其中所述目的地值包括所述多个非连续存储器地址。
13.根据权利要求9所述的方法,其中所述DMA命令进一步包括目的地值类型,所述目的地值类型标识所述多个非连续存储器地址的位置。
14.根据权利要求9所述的方法,其中所述源存储器区包括数个连续存储器地址。
15.根据权利要求9所述的方法,其中读取所述多个数据区段进一步包括将所述多个数据区段存储到DMA缓冲器中,其中所述DMA命令包括待存储到所述DMA缓冲器中的所述多个数据区段的数据区段的数目。
16.根据权利要求15所述的方法,其中将所述多个数据区段写入到所述多个非连续存储器地址中进一步包括以由所述目的地值提供的相同次序从所述DMA缓冲器检索所述多个数据区段。
17.一种非暂时性计算机可读存储媒体,其包括指令,所述指令在由处理装置执行时致使所述处理装置:
接收用于将多个数据区段从源存储器区移动到目的地存储器区的DMA命令,其中所述源存储器区包括第一多个非连续存储器地址且所述目的地存储器区包括第二多个非连续存储器地址,所述DMA命令包括引用所述第一多个非连续存储器地址的源值及引用所述第二多个非连续存储器地址的目的地值;
从由所述源值标识的位置检索所述第一多个非连续存储器地址;
从由所述目的地值标识的位置检索所述第二多个非连续存储器地址;
针对与所述DMA命令相关联的所述多个数据区段中的每一相应数据区段,执行读取操作以将所述相应数据区段从来自所述第一多个非连续存储器地址中的对应的非连续存储器地址读取到DMA缓冲器中;
从所述DMA缓冲器检索所述多个数据区段用于写入到所述第二多个非连续存储器地址中;及
将所检索的多个数据区段写入到所述第二多个非连续存储器地址。
18.根据权利要求17所述的非暂时性计算机可读存储媒体,其中所述DMA命令进一步包括源值类型及目的地值类型,所述源值类型标识所述第一多个非连续存储器地址的位置且所述目的地值类型标识所述第二多个非连续存储器地址的位置。
19.根据权利要求17所述的非暂时性计算机可读存储媒体,其中,为了将所述相应数据区段从对应的相应非连续存储器地址读取到所述DMA缓冲器中,所述处理装置进一步以由所述源值提供的相同次序将所述多个数据区段存储到所述DMA缓冲器中。
20.根据权利要求19所述的非暂时性计算机可读存储媒体,其中为了将所述多个数据区段写入到所述第二多个非连续存储器地址,所述处理装置进一步以由所述源值提供的所述相同次序从所述DMA缓冲器检索所述多个数据区段。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/694,942 | 2019-11-25 | ||
US16/694,942 US11086808B2 (en) | 2019-11-25 | 2019-11-25 | Direct memory access (DMA) commands for noncontiguous source and destination memory addresses |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835828A CN112835828A (zh) | 2021-05-25 |
CN112835828B true CN112835828B (zh) | 2024-05-24 |
Family
ID=75923386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011339255.2A Active CN112835828B (zh) | 2019-11-25 | 2020-11-25 | 用于非连续源及目的地存储器地址的直接存储器存取(dma)命令 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11086808B2 (zh) |
CN (1) | CN112835828B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328316B (zh) * | 2021-11-22 | 2024-01-26 | 北京智芯微电子科技有限公司 | Dma控制器、soc系统及基于dma控制器的数据搬运方法 |
CN114756490A (zh) * | 2022-03-21 | 2022-07-15 | 奥比中光科技集团股份有限公司 | 一种dma数据搬运方法及装置 |
CN114936173B (zh) * | 2022-06-16 | 2023-03-31 | 科东(广州)软件科技有限公司 | 一种eMMC器件的读写方法、装置、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017468A (zh) * | 2006-02-10 | 2007-08-15 | 中兴通讯股份有限公司 | 数字信号处理器上非连续区域数据自动搬运的方法及装置 |
CN101059785A (zh) * | 2006-04-17 | 2007-10-24 | 中兴通讯股份有限公司 | 一种利用dma控制器实现二维数据搬运的方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5473761A (en) * | 1991-12-17 | 1995-12-05 | Dell Usa, L.P. | Controller for receiving transfer requests for noncontiguous sectors and reading those sectors as a continuous block by interspersing no operation requests between transfer requests |
US7219169B2 (en) * | 2002-09-30 | 2007-05-15 | Sun Microsystems, Inc. | Composite DMA disk controller for efficient hardware-assisted data transfer operations |
JP2007184046A (ja) * | 2006-01-10 | 2007-07-19 | Hitachi Global Storage Technologies Netherlands Bv | 回転円板形記憶装置および記録方法 |
US10387151B2 (en) * | 2007-12-31 | 2019-08-20 | Intel Corporation | Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks |
US9122579B2 (en) * | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
EP2652623B1 (en) * | 2010-12-13 | 2018-08-01 | SanDisk Technologies LLC | Apparatus, system, and method for auto-commit memory |
WO2012129191A2 (en) * | 2011-03-18 | 2012-09-27 | Fusion-Io, Inc. | Logical interfaces for contextual storage |
US10049061B2 (en) * | 2012-11-12 | 2018-08-14 | International Business Machines Corporation | Active memory device gather, scatter, and filter |
US8994399B2 (en) | 2013-04-29 | 2015-03-31 | Broadcom Corporation | Transmission line driver with output swing control |
US10230370B2 (en) | 2017-04-25 | 2019-03-12 | Ati Technologies Ulc | Data transmission with power supply noise compensation |
-
2019
- 2019-11-25 US US16/694,942 patent/US11086808B2/en active Active
-
2020
- 2020-11-25 CN CN202011339255.2A patent/CN112835828B/zh active Active
-
2021
- 2021-08-09 US US17/397,914 patent/US11604749B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017468A (zh) * | 2006-02-10 | 2007-08-15 | 中兴通讯股份有限公司 | 数字信号处理器上非连续区域数据自动搬运的方法及装置 |
CN101059785A (zh) * | 2006-04-17 | 2007-10-24 | 中兴通讯股份有限公司 | 一种利用dma控制器实现二维数据搬运的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112835828A (zh) | 2021-05-25 |
US20210365395A1 (en) | 2021-11-25 |
US11086808B2 (en) | 2021-08-10 |
US11604749B2 (en) | 2023-03-14 |
US20210157753A1 (en) | 2021-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112835828B (zh) | 用于非连续源及目的地存储器地址的直接存储器存取(dma)命令 | |
US11640354B2 (en) | Logical-to-physical mapping of data groups with data locality | |
CN113590023A (zh) | 在多平面存储器装置的单独平面上存储区名称空间中的区 | |
CN113127254A (zh) | 存储器子系统中多平面奇偶校验数据的存储管理 | |
CN112948284A (zh) | 高速缓存媒体中的动态存取粒度 | |
US20240134554A1 (en) | Smart swapping and effective encoding of a double word in a memory sub-system | |
CN113093990B (zh) | 存储器子系统处的数据块切换 | |
US20240028239A1 (en) | Zone block staging component for a memory sub-system with zoned namespace | |
US11704057B2 (en) | Memory sub-systems including memory devices of various latencies and capacities | |
CN113590022B (zh) | 用于存储器装置的系统和方法 | |
CN112912834B (zh) | 存取单元和管理片段存储器操作 | |
CN113012741A (zh) | 用于存储器子系统的媒体管理的弹性缓冲器 | |
CN115273925B (zh) | 存储器子系统刷新 | |
US11847349B2 (en) | Dynamic partition command queues for a memory device | |
US11960745B2 (en) | Empty page scan operations adjustment | |
US11275687B2 (en) | Memory cache management based on storage capacity for parallel independent threads | |
US20240231666A1 (en) | Empty page scan operations adjustment | |
US20220382681A1 (en) | Write requests with partial translation units | |
CN115729459A (zh) | 管理存储器子系统中的页地址和分区号的分布 | |
CN117149057A (zh) | 用于控制垃圾收集源块中的有效数据计数变化的方法和装置 | |
CN115729858A (zh) | 存储器中用于数据分享的散列操作 | |
CN117999547A (zh) | 用于存储器子系统中的两遍次编程的虚拟管理单元方案 | |
CN117632575A (zh) | 用于区存储器系统的块失效保护 | |
CN115202571A (zh) | 用于存储器管理的方法、设备及系统 | |
CN112306403A (zh) | 基于数据图的概率存储数据 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |