CN116710906A - 一种集成芯片及数据搬运方法 - Google Patents
一种集成芯片及数据搬运方法 Download PDFInfo
- Publication number
- CN116710906A CN116710906A CN202180087534.0A CN202180087534A CN116710906A CN 116710906 A CN116710906 A CN 116710906A CN 202180087534 A CN202180087534 A CN 202180087534A CN 116710906 A CN116710906 A CN 116710906A
- Authority
- CN
- China
- Prior art keywords
- dma
- data
- subtasks
- module
- address
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000015654 memory Effects 0.000 claims description 167
- 238000012545 processing Methods 0.000 claims description 31
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 238000013528 artificial neural network Methods 0.000 claims description 4
- 239000003795 chemical substances by application Substances 0.000 description 229
- 238000007726 management method Methods 0.000 description 75
- 235000019580 granularity Nutrition 0.000 description 43
- 230000005540 biological transmission Effects 0.000 description 35
- 238000012546 transfer Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 23
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 15
- 238000013461 design Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009467 reduction Effects 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- 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
- G06F13/287—Multiplexed DMA
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
一种集成芯片及数据搬运方法,用以满足处理器芯片日益增长的算力需求。集成芯片包括DMA管理模块和DMA代理模块。其中,DMA管理模块用于将处理器下发的数据搬运任务拆分成多个子任务,并将多个子任务下发至多个DMA代理模块中的每个DMA代理模块;多个DMA代理模块中的每个DMA代理模块用于执行多个子任务。
Description
本申请涉及芯片技术领域,尤其涉及一种集成芯片及数据搬运方法。
大数据时代,对片上***(system on chip,SoC)等***级芯片提出了更高的算力需求,数据的供应和传输成为制约算力发展的主要因素之一,直接存储器访问(direct memory access,DMA)技术应运而生。
DMA技术是指将数据从一个地址空间搬运到另一个地址空间的硬件加速技术,数据搬运的过程不需要处理器核心直接参与。采用DMA技术,一方面可以释放处理器核心的数据搬运任务开销,让处理器核心聚焦计算任务,另一方面可以保证高效率高带宽的数据搬运,避免处理器核心因等待数据导致算力下降。因此,采用DMA技术进行数据搬运可以提升处理器核心的算力。
示例性地,图1示出了一种SoC芯片的结构示意图。该SoC芯片包括中央处理器(central processing unit,CPU)、神经网络处理器(neural network processing unit,NPU)、片上缓存(cache)、加速器(acceleraters)、n个内存控制器(memory controller)以及n个存储器,该存储器可以是片外存储器,也可以是片内存储器。上述组件通过片上互联网络(network on chip,NOC)互联。其中,CPU为通用处理器核心,NPU为人工智能(artificial intelligence,AI)专用处理器核心;n个内存控制器与n个存储器一一对应,内存控制器用于管理存储器中的数据读写;本地代理(home agent)负责管理SoC芯片的存储一致性(memory coherence),可以合并入内存控制器中,也可以作为独立模块挂接在NOC上。
此外,SoC芯片中还包括直接存储器访问控制器(direct memory access controller,DMAC)和***内存管理单元(system memory management unit,SMMU)。DMAC是一种片上硬件加速器,专用于硬件上的数据搬运处理,SMMU可以理解为***内存管理单元,用于基于页表提供地址翻译功能。
在图1所示的SoC芯片中,采用DMA技术进行数据搬运的过程可以是:CPU或NPU向DMAC下发数据搬运任务,DMAC接收到数据搬运任务后,按照***请求处理粒度(例如可以是64Byte或256Byte)拆分任务,并根据拆分后的任务所对应的地址通过NOC发起读请求,从源地址读取数据;将数据读回DMAC后,DMAC发起写请求,通过NOC将读回的数据写入目的地址,完成单个地址的数据搬运。重复上述流程,依次完成数据搬运任务内所有地址的数据搬运后,通过中断等方式,通知CPU或NPU完成数据搬运任务。
采用上述数据搬运方案,由于单个DMAC处理能力有限,难以满足高性能处理器芯片日益增长的算力需求;且该方案中读回的数据均存储在DMAC中,因而需要DMAC提供较大数据缓存资源,造成较大的硬件资源开销。
发明内容
本申请实施例提供了一种集成芯片及数据搬运方法,用以满足处理器芯片日益增长的算力需求。
第一方面,本申请实施例提供一种集成芯片,该集成芯片包括直接存储器访问DMA管理模块和DMA代理模块。其中,DMA管理模块用于将处理器下发的数据搬运任务拆分成多个子任务,并将多个子任务下发至多个DMA代理模块中的每个DMA代理模块;多个DMA代理模块中的每个DMA代理模块用于执行多个子任务。
具体地,处理器为中央处理器CPU或者神经网络处理器NPU。
在第一方面提供的集成芯片中,多个子任务分别由采用分布式架构的多个DMA代理模块并行执行,与现有技术中由单个DMAC执行数据搬运任务的方案相比,提高了数据搬运的处理效率,可以更好地满足处理器芯片日益增长的算力需求。此外,多个子任务分别由多个DMA代理模块并行执行,不会出现待搬运数据被读回后缓存在同一组件的情况,因而每个DMA代理模块无需提供较大的数据缓存资源,与现有技术方案相比,减小了硬件开销。
此外,第一方面提供的集成芯片中还可以包括***内存管理单元,***内存管理单元用于在DMA管理模块将数据搬运任务拆分成多个子任务之后,对多个子任务进行地址转换,将进行地址转换后的多个子任务下发至每个DMA代理模块。
采用上述方案,可以通过***内存管理单元将多个子任务对应的地址转换成DMA代理模块可以识别的地址(比如物理地址)。
在一种可能的设计中,DMA管理模块在将处理器下发的数据搬运任务拆分成多个子任务时,可以按照页表粒度将数据搬运任务拆分成多个子任务。
采用上述方案,DMA管理模块按照页表粒度对数据搬运任务进行拆分,可以提高页表的查询效率。
在一种可能的设计中,每个DMA代理模块还用于分别对多个子任务中的每个子任务进行拆分;然后,分别对拆分后的每个子任务中所包括的数据搬运地址进行译码;那么,每个DMA代理模块在执行多个子任务时,可以根据每个子任务中所包括的数据搬运地址执行多个子任务。
进一步地,每个DMA代理模块在分别对多个子任务中的每个子任务进行拆分时,可以根据***请求处理粒度对多个子任务中的每个子任务进行拆分。
采用上述方案,先由DMA管理模块对数据搬运任务进行大粒度拆分,拆分成多个子任务;再由DMA代理模块对每个子任务进行小粒度拆分,对数据搬运任务中所需搬运的数据量进行逐级分解,可以提升数据搬运的并行度。
在一种可能的设计中,每个DMA代理模块可以根据每个子任务中所包括的数据搬运地址对每个子任务中需要自己搬运的指定数据进行搬运。
采用上述方案,每个DMA代理模块可以根据***配置确定每个子任务中需要自己搬运的指定数据,并对指定数据进行搬运。这样,多个子任务可以由多个DMA代理模块并行执行,提高数据搬运的效率。
具体地,DMA代理模块在对指定数据进行搬运时,因指定数据的源地址和目的地址的不同,数据搬运的过程也有所不同。下面以四个示例为例对具体的数据搬运过程进行介绍。
示例一
在示例一中,每个DMA代理模块在对指定数据进行搬运的具体过程可以是:判断需要将指定数据从本地存储空间的第一地址搬运到第二地址;控制内存控制器或本地代理对 第一地址中的指定数据发起读操作,以将指定数据读取至内存控制器;控制内存控制器或本地代理将指定数据写入第二地址。
示例一适用于DMA代理模块将指定数据从本地存储空间中的第一地址搬运到第二地址的场景。
示例二
在示例二中,每个DMA代理模块在对指定数据进行搬运的具体过程可以是:判断需要将指定数据从本地存储空间搬运至外部存储空间;控制内存控制器或本地代理对指定数据发起读操作,以将指定数据读取至内存控制器;控制内存控制器或本地代理通过片上互联网络NOC将指定数据写入外部存储空间。
示例二适用于DMA代理模块将指定数据从本地存储空间搬运到外部存储空间的场景。
示例三
在示例三中,每个DMA代理模块在对指定数据进行搬运的具体过程可以是:判断需要将指定数据从外部存储空间搬运至本地存储空间;控制内存控制器或本地代理通过NOC对指定数据发起读操作,以将指定数据读取至内存控制器;控制内存控制器或本地代理将指定数据写入本地存储空间。
示例三适用于DMA代理模块将指定数据从外部存储空间搬运到本地存储空间的场景。
示例四
在示例四中,每个DMA代理模块在对指定数据进行搬运的具体过程可以是:判断需要将指定数据从外部存储空间的第三地址搬运到第四地址;控制内存控制器或本地代理通过NOC对第三地址中的指定数据发起读操作,以将指定数据读取至内存控制器;控制内存控制器或本地代理通过NOC将指定数据写入第四地址。
示例四适用于DMA代理模块将指定数据从外部存储空间中的第三地址搬运到第四地址的场景。
在一种可能的设计中,DMA代理模块还用于:在执行多个子任务之后,向DMA管理模块发送第一执行完成消息,第一执行完成消息用于指示多个子任务已执行完成。
具体地,DMA代理模块可以通过***内存管理单元向DMA管理模块发送第一执行完成消息。
采用上述方案,可以使得DMA管理模块确定多个子任务是否执行完成。
进一步地,DMA管理模块在接收到每个DMA代理模块发送的第一执行完成消息之后,向处理器发送第二执行完成消息,第二执行完成消息用于指示数据搬运任务已执行完成。
采用上述方案,DMA管理模块在接收到每个DMA代理模块发送的第一执行完成消息之后,可以确定多个DMA代理模块并行执行多个子任务的流程已经结束,多个子任务已全部执行完成,即数据搬运任务已执行完成。DMA代理模块在确定数据搬运任务已执行完成后,可以上报给处理器,使得处理器可以获知数据搬运任务已执行完成的消息。
在一种可能的设计中,DMA管理模块和每个DMA代理模块可以通过NOC或者私有总线连接。
DMA管理模块和每个DMA代理模块通过NOC连接,可以通过现有的片内互联总线实现DMA管理模块和DMA代理模块的连接;DMA管理模块和每个DMA代理模块通过私有总线连接,可以避免直接存储器访问与集成芯片内其他组件之间的通信相互影响,也可以实现DMA管理模块与DMA代理模块之间的高效无阻塞通信。
在一种可能的设计中,DMA代理模块可以集成在内存控制器或本地代理中。
采用上述方案,DMA代理模块在进行数据搬运时,数据读写的过程可以复用内存控制器或本地代理内的命令处理队列和数据缓存资源。
第二方面,本申请实施例提供一种数据搬运方法,该方法包括如下步骤:DMA管理模块将处理器下发的数据搬运任务拆分成多个子任务;DMA管理模块将多个子任务下发至每个DMA代理模块;每个DMA代理模块执行多个子任务。
在一种可能的设计中,在每个DMA代理模块执行多个子任务之前,还可以分别对多个子任务中的每个子任务进行拆分;然后,分别对拆分后的每个子任务所对应的数据搬运地址进行译码;每个DMA代理模块执行多个子任务,可以通过如下方式实现:每个DMA代理模块根据每个子任务所对应的数据搬运地址执行多个子任务。
第三方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第二方面及其任一种可能设计所述的方法。
第四方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面及其任一种可能设计所述的方法。
另外,应理解,第二方面~第四方面及其任一种可能设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
图1为现有技术提供的一种片上***芯片的结构示意图;
图2为本申请实施例提供的一种片上***的结构示意图;
图3为本申请实施例提供的另一种片上***的结构示意图;
图4为本申请实施例提供的一种集成芯片的结构示意图;
图5为本申请实施例提供的第一种数据搬运流程的示意图;
图6为本申请实施例提供的第二种数据搬运流程的示意图;
图7为本申请实施例提供的第三种数据搬运流程的示意图;
图8为本申请实施例提供的第四种数据搬运流程的示意图;
图9为本申请实施例提供的一种数据搬运方法的流程示意图。
下面,首先对本申请实施例的应用场景进行介绍。
本申请实施例可应用于图2所示的SoC芯片中。如图2所示,该SoC芯片包括通过NOC连接的主机(master)、SMMU以及n个DMA代理模块(n为大于1的整数),还包括与SMMU连接的DMA管理模块以及分别与n个DMA代理模块连接的n个内存控制器,每个内存控制器与一个存储器连接,用于管理存储器的数据读写。该存储器可以是片内存储器也可以是片外存储器,每个内存控制器与连接的存储器可以统称为一个内存通道(memory channel)。
其中,主机为能够发起总线访问的设备或模块,例如可以包括CPU、NPU等。NOC为一种片内传输总线,也可以称为Interconnect,常见的片内传输总线有交叉开关矩阵 (CrossBar)、环形(Ring)、网络互联(Mesh)等结构。
此外,SoC芯片中还可以包括本地代理(home agent),home agent为SoC芯片的串行化点(point of serialization,POS)/一致化点(point of coherence,POC),负责管理SoC芯片的存储一致性(memory coherence),可以合并入内存控制器中(图2中以此情况作为示例),也可以作为独立模块挂接在NOC上,但通常靠近内存控制器。
进一步地,图2所示的SoC芯片中还可以包括片上缓存(cache)、硬件加速器(acceleraters)等功能模块(图2中未示出)。片上缓存可以为master提供高性能的数据访问,硬件加速器可以用于执行特定业务或运算,也可以用于进行数据传输。
在图2所示的SoC芯片中,DMAC的功能由DMA管理模块和采用分布式架构的n个DMA代理模块实现。
DMA管理模块负责接收软件下发的数据搬运任务,且可将数据搬运任务进行大粒度拆分,即可基于页表(Page)粒度(例如可以是4k,2M)进行拆分,将拆分后的多个子任务送往SMMU进行页表查询,然后由SMMU将多个子任务经片内传输总线发送给每个DMA代理模块。
DMA代理模块为硬件数据搬运引擎,采用分布式架构,n个DMA代理模块可并行执行数据搬运任务。DMA代理模块在接收到多个子任务之后,分别将多个子任务进一步拆分成***请求处理粒度(例如可以是32Byte、64Byte、128Byte、256Byte或512Byte),同时对每个子任务对应的搬运地址空间进行译码,以判断需要由该DMA代理模块执行搬运的地址。根据需要进行搬运的地址进行数据搬运,并丢弃不需要该DMA代理模块执行搬运的地址。
具体地,DMA代理模块在基于***请求处理粒度将每个子任务进行进一步拆分后,每个子任务被拆分成可执行数据搬运的最小单元,一个最小单元对应一个数据搬运的地址(例如可以是物理地址),即每个子任务需对应完成多个地址上的数据搬运。DMA代理模块针对每个子任务,判断该子任务中需要自己执行的地址,并执行相应的搬运任务,同时丢弃不需要自己执行的地址;DMA代理模块在针对每个子任务执行上述操作后,即相当于执行了多个子任务。实际上,每个DMA代理模块执行了子任务中的部分地址上的数据搬运,n个DMA代理模块所搬运数据的总和对应多个子任务,即多个子任务是由采用分布式架构的n个DMA代理模块共同执行完成的。
比如,DMA管理模块基于页表粒度将数据搬运任务拆分成M1和M2两个子任务。SoC芯片中包括四个DMA代理模块A1、A2、A3和A4。每个代理模块基于***请求处理粒度将子任务M1拆分成M1.1、M1.2、M1.3和M1.4,M1.1、M1.2、M1.3和M1.4对应四个地址,将子任务M2拆分成M2.1、M2.2、M2.3和M2.4,M2.1、M2.2、M2.3和M2.4对应四个地址。A1根据每个子任务对应的搬运地址空间,确定M1.1和M2.3为需要自己执行的地址;A2根据每个子任务对应的搬运地址空间,确定M1.2和M1.3为需要自己执行的地址;A3根据每个子任务对应的搬运地址空间,确定M2.1为需要自己执行的地址;A4根据每个子任务对应的搬运地址空间,确定M1.4、M2.2、M2.4为需要自己执行的地址。每个DMA代理模块执行需要自己执行的地址上的数据搬运后,多个子任务执行完成,即数据搬运任务执行完成。
实际应用中,DMA代理模块在判断子任务中哪些地址上的数据需要由自己搬运时, 可以根据***中预先配置的任务分配原则进行判断。
需要说明的是,本申请实施例中,每个DMA代理模块执行多个子任务的含义是:每个DMA代理模块根据每个子任务对应的搬运地址空间以及***配置的任务分配原则,判断每个子任务中需要自己执行的地址,即每个DMA代理模块仅执行需要自己执行的部分地址,对不需要自己执行的部分地址则进行丢弃操作。在一些情况下,某个子任务中的全部地址上的数据可能均由某一DMA代理模块搬运,或者某个DMA代理模块并未搬运某个子任务中的任一地址上的数据,这些情况也包含在本申请实施例的保护范围内。
在图2所示的SoC芯片中,DMA代理模块可以与本地代理融合或靠近本地代理,DMA代理模块可复用本地代理中的命令处理队列和数据缓存资源,DMA代理模块仅需要将数据搬运命令发送给本地代理,由本地代理负责数据读写,即DMA代理模块不需要管理数据,从而降低DMA代理模块的额外数据存储资源开销。
在图2所示的SoC芯片中,DMA代理模块也可以与内存控制器融合或靠近内存控制器,DMA代理模块可复用内存控制器中的命令处理队列和数据缓存资源,DMA代理模块仅需要将数据搬运命令发送给内存控制器,由内存控制器负责数据读写,即DMA代理模块不需要管理数据,从而降低DMA代理模块的额外数据存储资源开销。
进一步地,DMA代理模块可放置于靠近存储器侧,从而缩短数据在***中的传输路径,提高数据传输效率。
此外,对于上述页表粒度以及***请求处理粒度可以有如下理解。
在一个数据搬运任务中,待搬运数据通常存储在连续或非连续的多个地址中。多个地址中,一部分地址的转换关系(例如物理地址和虚拟地址之间的转换关系)可能存储在页表1中,一部分地址的转换关系可能存储在页表2中,另一部分地址的转换关系可能存储在页表3中……将一个页表中所对应的数据划分为一组,即可将待搬运数据划分为多组数据,每个子任务对应搬运其中一组或几组数据。按照这一方式将数据搬运任务划分为多个子任务,即按照页表粒度对数据搬运任务进行拆分。
如前所述,待搬运数据通常存储在连续或非连续的多个地址中。那么在执行数据搬运任务时,需要对多个地址上的数据逐一进行搬运。每个子任务对应一个或几个页表,每个页表又对应多个地址,因而DMA代理模块在接收到子任务后,需要对每个子任务进行进一步拆分,例如以一个物理地址(或虚拟地址)为单位对每个子任务进行拆分,这种拆分方式即按照***请求处理粒度对子任务进行拆分。对子任务进行进一步拆分后,即可对拆分后的子任务所对应地址上的数据逐一进行搬运。
通过以上介绍不难理解,在图1所示的现有技术中,DMAC是按照***请求处理粒度对数据搬运任务进行拆分的,拆分后由DMAC对数据搬运任务中所有地址上的数据逐一进行搬运;而本申请实施例中,DMA管理模块按照页表粒度对数据搬运任务进行拆分,得到多个子任务;DMA代理模块在接收到多个子任务后,再按照***请求处理粒度对子任务进行拆分,将子任务拆分成可执行数据搬运的最小单元,由DMA代理模块控制内存控制器或本地代理执行子任务。
在本申请实施例中,页表粒度也可以称为page粒度、***页表粒度或大粒度;***请求处理粒度也可以称为总线请求粒度、总线的处理粒度、SoC芯片可正常处理的粒度或小粒度。
需要说明的是,在上述示例中,SMMU与DMA代理模块之间是通过NOC进行通信 的。在另一实现方式中,SMMU与DMA代理模块之间也可以通过私有总线(Bus)进行通信。如图3所示。
在图3所示的SoC芯片中,SMMU与DMA代理模块之间通过私有总线连接。其他组件的连接方式不变。也就是说,在该示例中,DMA管理模块和DMA代理模块之间是通过私有总线进行通信的。采用这种方式,可以避免直接存储器访问与SoC芯片内其他组件之间的通信相互影响,也可以实现DMA管理模块与DMA代理模块之间的高效无阻塞通信。
下面将结合附图对本申请实施例作进一步地详细描述。
需要说明的是,本申请实施例中,多个是指两个或两个以上。另外,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
本申请实施例提供一种集成芯片。具体地,如图4所示,该集成芯片400包括DMA管理模块401和多个DMA代理模块402。DMA管理模块401用于将处理器(例如可以是CPU或NPU)下发的数据搬运任务拆分成多个子任务,并将多个子任务下发至每个DMA代理模块402;每个DMA代理模块402用于执行多个子任务。
其中,数据搬运任务可以是处理器通过软硬件握手的方式下发给DMA管理模块401的。
具体地,DMA管理模块401可以通过广播的方式将多个子任务同时发送给每个DMA代理模块402。DMA管理模块401和DMA代理模块402可以通过NOC连接,也可以通过私有总线连接。也就是说,DMA管理模块和DMA代理模块可以通过NOC进行通信,也可以通过私有总线进行通信。DMA管理模块401和DMA代理模块402通过NOC进行通信,可以参照图2所示的SoC芯片的架构;DMA管理模块401和DMA代理模块402通过私有总线进行通信,可以参照图3所示的SoC芯片的架构。在本申请实施例的后续描述中,将以DMA管理模块401和DMA代理模块402通过NOC进行通信为例进行示意,DMA管理模块401和DMA代理模块402通过私有总线进行通信的方式与DMA管理模块401和DMA代理模块402通过NOC进行通信的方式仅存在通信媒介的区别,后面将不再赘述。
在集成芯片400中,DMA管理模块401可以视为图2或图3示例中的DMA管理模块,DMA代理模块402可以视为图2或图3示例中的DMA代理模块。实际应用中,DMA代理模块402可以是独立的硬件模块,也可以集成在内存控制器或本地代理中。DMA代理模块402可复用内存控制器或本地代理中的命令处理队列和数据缓存资源,将数据搬运命令发送给内存控制器或本地代理,由内存控制器或本地代理负责数据读写。DMA代理模块402的具体实现可参见图2或图3示例中的相关描述,此处不再赘述。
不难看出,本申请实施例中,DMA管理模块401将数据搬运任务拆分成多个子任务之后,由多个DMA代理模块402并行执行多个子任务。在每个DMA代理模块分别执行多个子任务之后,数据搬运任务即执行完成。
在集成芯片400中,多个子任务分别由采用分布式架构的多个DMA代理模块402并行执行,与现有技术中由单个DMAC执行数据搬运任务的方案相比,提高了数据搬运的处理效率,可以更好地满足处理器芯片日益增长的算力需求。此外,多个子任务分别由多个DMA代理模块402并行执行,不会出现待搬运数据被读回后缓存在同一组件的情况, 因而每个DMA代理模块402无需提供较大的数据缓存资源,与现有技术方案相比,减小了硬件开销。
此外,集成芯片400中还可以包括***内存管理单元,***内存管理单元可视为一种页表管理模块,用于在DMA管理模块401将数据搬运任务拆分成多个子任务之后,对多个子任务进行地址转换,将进行地址转换后的多个子任务下发至每个DMA代理模块402。
实际应用中,数据搬运任务中的地址(包括源地址和目的地址)可以是虚拟地址,也可以是物理地址。若数据搬运任务中的地址是虚拟地址,则***内存管理单元可以将虚拟地址转换为物理地址,还可以用于配置内存属性,例如配置相应地址的读写权限等;若数据搬运任务中的地址是物理地址,则***内存管理单元可以用于配置内存属性,DMA管理模块拆分得到的多个子任务经***内存管理单元进行地址转换和/或读写权限配置等操作后,由***内存管理单元转发至每个DMA代理模块402。
需要说明的是,***内存管理单元的功能与现有技术中类似,本申请实施例中不再详细展开介绍。
具体地,DMA管理模块401在将处理器下发的数据搬运任务拆分成多个子任务时,可以按照页表粒度进行拆分。
DMA管理模块401按照大粒度将数据搬运任务拆分成多个子任务,***内存管理单元在接收到多个子任务之后,可以以页表为单位进行地址的查询和转换,即按照page size查询页表,从而提高***内存管理单元的查询效率和性能。
具体地,每个DMA代理模块402还用于分别对多个子任务中的每个子任务进行拆分;分别对拆分后的每个子任务中所包括的数据搬运地址进行译码;每个DMA代理模块402在执行多个子任务时,具体用于:根据每个子任务中所包括的数据搬运地址执行多个子任务。
其中,每个子任务中包括多个数据的数据搬运地址,数据搬运地址包括源地址和目的地址。DMA代理模块402在对每个子任务中的源地址和目的地址进行译码后,可以确定哪些地址下的数据是需要自己搬运的,哪些地址下的数据是不需要自己搬运的。
那么,每个DMA代理模块402在根据每个子任务中所包括的数据搬运地址执行多个子任务时,可以对每个子任务中需要自己搬运的地址上的指定数据进行搬运。
实际应用中,DMA代理模块402在搬运指定数据时,可以将本地存储空间中的指定数据搬运到本地存储空间,可以将本地存储空间中的指定数据搬运到外部存储空间,可以将外部存储空间中的指定数据搬运到本地存储空间,也可以将外部存储空间中的指定数据搬运到外部存储空间。
***可以配置DMA代理模块402的任务分配原则,那么每个DMA管理模块402在接收到多个子任务后,通过对多个子任务进行拆分和译码,即可根据每个子任务中所包括的数据搬运地址和***配置的任务分配原则确定哪些地址上的数据需要自己搬运。
实际应用中,可以设置DMA代理模块402负责搬运该DMA代理模块402负责管理的本地存储空间中的任务。例如,在图2或图3的示例中,DMA代理模块判断与其连接的存储器中某一地址上的数据是需要该DMA代理模块搬运的数据,即每个DMA代理模块尽量负责搬运本地存储空间上的数据。
此外,DMA代理模块402在分别对每个子任务进行拆分时,可以根据***请求处理粒度对每个子任务进行拆分,即按照小粒度对每个子任务进行拆分,将每个子任务拆分成 ***可执行数据搬运的最小单元。
不难看出,在集成芯片400中,先由DMA管理模块401对数据搬运任务进行大粒度拆分,拆分成多个子任务;再由DMA代理模块402对每个子任务进行小粒度拆分,对数据搬运任务中所需搬运的数据量进行逐级分解,可以提升数据搬运的并行度。
DMA代理模块402在搬运指定数据时,可以将本地存储空间中的指定数据搬运到本地存储空间,可以将本地存储空间中的指定数据搬运到外部存储空间,可以将外部存储空间中的指定数据搬运到本地存储空间,也可以将外部存储空间中的指定数据搬运到外部存储空间。
如前所述,DMA代理模块402在搬运指定数据时,可以将本地存储空间中的指定数据搬运到本地存储空间,可以将本地存储空间中的指定数据搬运到外部存储空间,可以将外部存储空间中的指定数据搬运到本地存储空间,也可以将外部存储空间中的指定数据搬运到外部存储空间。下面通过四个示例对这四种情况进行分别进行介绍。
示例一
DMA代理模块402在对每个子任务中需要自己搬运的指定数据进行搬运时,可以通过如下方式实现:判断需要将指定数据从本地存储空间的第一地址搬运到第二地址;控制内存控制器或本地代理对第一地址中的指定数据发起读操作,以将指定数据读取至内存控制器;控制内存控制器或本地代理将指定数据写入第二地址。
不难看出,在示例一中,DMA代理模块402需要将指定数据从本地存储空间中的第一地址搬运到第二地址。
应理解,在本申请实施例中,本地存储空间是指与该DMA代理模块402连接或靠近的存储器所对应的存储空间。除了与该DMA代理模块402连接或靠近的存储器所对应的存储空间之外的存储空间均可以视为外部存储空间。
比如,集成芯片400中包括四个内存通道,内存通道1包括内存控制器1和存储器1,内存通道2包括内存控制器2和存储器2,内存通道3包括内存控制器3和存储器3,内存通道4包括内存控制器4和存储器4。DMA代理模块1集成在内存控制器1中,DMA代理模块2集成在内存控制器2中,DMA代理模块3集成在内存控制器3中,DMA代理模块4集成在内存控制器4中。那么,对于DMA代理模块1来说,存储器1所对应的存储空间可以视为本地存储空间,存储器2、存储器3和存储器4所对应的存储空间可以视为外部存储空间,片内缓存以及集成芯片400外接的存储器所对应的存储空间也可以视为外部存储空间。
在示例一中,由于DMA代理模块402是在本地存储空间内对指定数据进行数据搬运,因而数据的读和写均无需经过片内传输总线,由DMA代理模块402控制内存控制器或本地代理进行数据的读和写即可。
示例二
DMA代理模块402在对每个子任务中需要自己搬运的指定数据进行搬运时,可以通过如下方式实现:判断需要将本地存储空间中的指定数据搬运至外部存储空间;控制内存控制器或本地代理对指定数据发起读操作,以将指定数据读取至内存控制器;控制内存控制器或本地代理通过片上互联网络NOC将指定数据写入外部存储空间。
不难看出,在示例二中,DMA代理模块402需要将指定数据从本地存储空间搬运到外部存储空间。
在示例二中,由于DMA代理模块402将本地存储空间内的指定数据搬运至外部存储空间,因而读取数据的过程无需经过片内传输总线,写入数据的过程需要经过片内传输总线。
示例三
DMA代理模块402在对每个子任务中需要自己搬运的指定数据进行搬运时,可以通过如下方式实现:判断需要将外部存储空间中的指定数据搬运至本地存储空间;控制内存控制器或本地代理通过NOC对指定数据发起读操作,以将指定数据读取至内存控制器;控制内存控制器或本地代理将指定数据写入本地存储空间。
不难看出,在示例三中,DMA代理模块402需要将指定数据从外部存储空间搬运到本地存储空间。
在示例三中,由于DMA代理模块402将外部存储空间内的指定数据搬运至本地存储空间,因而读取数据的过程需要经过片内传输总线,写入数据的过程无需经过片内传输总线。
示例四
DMA代理模块402在对每个子任务中需要自己搬运的指定数据进行搬运时,可以通过如下方式实现:判断需要将指定数据从外部存储空间的第三地址搬运到第四地址;控制内存控制器或本地代理通过NOC对第三地址中的指定数据发起读操作,以将指定数据读取至内存控制器;控制内存控制器或本地代理通过NOC将指定数据写入第四地址。
不难看出,在示例四中,DMA代理模块402需要将指定数据从外部存储空间中的第三地址搬运到第四地址。
在示例四中,由于DMA代理模块402是在外部存储空间之间对指定数据进行数据搬运,因而数据的读取和写入过程均需经过片内传输总线。
此外,本申请实施例中,DMA代理模块402在执行多个子任务之后,可以向DMA管理模块401发送第一执行完成消息,第一执行完成消息用于指示多个子任务已执行完成。具体地,DMA管理模块402可以通过***内存管理单元向DMA管理模块401发送第一执行完成消息。
DMA管理模块401在接收到每个DMA代理模块402发送的第一执行完成消息之后,表示DMA管理模块401拆分的多个子任务均已完成,此时DMA管理模块401可以向处理器发送第二执行完成消息,以指示数据搬运任务已执行完成。
综上,在本申请实施例中,DMA管理模块401对数据搬运任务进行大粒度拆分,拆分成多个子任务,多个子任务分别由采用分布式架构的多个DMA代理模块402并行执行,与现有技术中由单个DMAC执行数据搬运任务的方案相比,提高了数据搬运的处理效率,可以更好地满足处理器芯片日益增长的算力需求。且多个子任务分别由多个DMA代理模块402并行执行,不会出现待搬运数据被读回后缓存在同一组件的情况,因而每个DMA代理模块402无需提供较大的数据缓存空间,与现有技术方案相比,减小了硬件开销。
下面,通过四个具体实现方式对本申请实施例中执行数据搬运任务时,集成芯片400内部组件之间的交互进行介绍。
实现方式一
在实现方式一中,数据搬运任务为将数据从本地存储空间搬运至本地存储空间的任务。数据搬运过程可以如图5所示。
1、软件通过CPU核心(CPU Core)等Master下发数据搬运任务;
2、数据搬运任务通过片内传输总线(NOC/Interconnect)传输到SMMU;
3、SMMU将任务发给DMA Manager,DMA Manager可以视为前述DMA管理模块;
4、DMA Manager接收到数据搬运任务后,通过SMMU获取页表粒度,按照页表粒度拆分为多个子任务,并将子任务发往SMMU进行地址翻译和转换;
5、SMMU将转换后的子任务发往片内传输总线传输;
6、片内传输总线将子任务广播传输到各个DMA Agent,DMA Agent可以视为前述DMA代理模块;
7、各个DMA Agent对子任务按照***请求处理粒度拆分,并进行译码,判断需要在该DMA Agent执行搬运的地址,丢弃不需要该DMA Agent执行搬运的子任务,并判断搬运任务为从本地Memory空间(即本地存储空间)搬运数据到本地Memory空间,通过Home Agent或Memory Controller对本地Memory发起读操作;
8、从本地Memory读取的数据返回到Home Agent或Memory Controller;
9、DMA Agent通过Home Agent或Memory Controller发起写操作,将读回数据写入到本地Memory空间;
10、完成子任务内需要该DMA Agent进行搬运的所有数据搬运后,DMA Agent将完成信息发往片内传输总线;
11、DMA Agent发送的完成信息经过片内传输总线传输至SMMU;
12、DMA Agent发送的完成信息经过SMMU传输到DMA Manager。
13、DMA Manager收到各个DMA Agent发送的完成信息,由DMA Manager通知Master或软件,完成数据搬运任务。
实现方式二
在实现方式二中,数据搬运任务为将数据从本地存储空间搬运至外部存储空间的任务。数据搬运过程可以如图6所示。
1、软件通过CPU核心(CPU Core)等Master下发数据搬运任务;
2、数据搬运任务通过片内传输总线(NOC/Interconnect)传输到SMMU;
3、SMMU将任务发给DMA Manager,DMA Manager可以视为前述DMA管理模块;
4、DMA Manager接收到数据搬运任务后,通过SMMU获取页表粒度,按照页表粒度拆分为多个子任务,并将子任务发往SMMU进行地址翻译和转换;
5、SMMU将转换后的子任务发往片内传输总线传输;
6、片内传输总线将子任务广播传输到各个DMA Agent,DMA Agent可以视为前述DMA代理模块;
7、各个DMA Agent对子任务按照***请求处理粒度拆分,并进行译码,判断需要在该DMA Agent执行搬运的地址,丢弃不需要该DMA Agent执行搬运的子任务,并判断搬运任务为从本地Memory空间搬运数据到外部地址空间(即外部存储空间),通过Home Agent或Memory Controller对本地Memory发起读操作;
8、从本地Memory读取的数据返回到Home Agent或Memory Controller;
9、DMA Agent通过Home Agent或Memory Controller发起写操作,将读回数据经过 片内传输总线写往外部地址空间;
10、完成子任务内需要该DMA Agent进行搬运的所有数据搬运后,DMA Agent将完成信息发往片内传输总线;
11、DMA Agent发送的完成信息经过片内传输总线传输至SMMU;
12、DMA Agent发送的完成信息经过SMMU传输到DMA Manager。
13、DMA Manager收到各个DMA Agent发送的完成信息,由DMA Manager通知Master或软件,完成数据搬运任务。
实现方式三
在实现方式三中,数据搬运任务为将数据从外部存储空间搬运至本地存储空间的任务。数据搬运过程可以如图7所示。
1、软件通过CPU核心(CPU Core)等Master下发数据搬运任务;
2、数据搬运任务通过片内传输总线(NOC/Interconnect)传输到SMMU;
3、SMMU将任务发给DMA Manager,DMA Manager可以视为前述DMA管理模块;
4、DMA Manager接收到数据搬运任务后,通过SMMU获取页表粒度,按照页表粒度拆分为多个子任务,并将子任务发往SMMU进行地址翻译和转换;
5、SMMU将转换后的子任务发往片内传输总线传输;
6、片内传输总线将子任务广播传输到各个DMA Agent,DMA Agent可以视为前述DMA代理模块;
7、各个DMA Agent对子任务按照***请求处理粒度拆分,并进行译码,判断需要在该DMA Agent执行搬运的地址,丢弃不需要该DMA Agent执行搬运的子任务,并判断搬运任务为从外部地址空间搬运数据到本地Memory空间,通过Home Agent或Memory Controller经过片内传输总线对外部地址空间发起读操作;
8、从外部地址空间读取的数据返回到Home Agent或Memory Controller;
9、DMA Agent通过Home Agent或Memory Controller发起写操作,将读回数据写入到本地Memory空间;
10、完成子任务内需要该DMA Agent进行搬运的所有数据搬运后,DMA Agent将完成信息发往片内传输总线;
11、DMA Agent发送的完成信息经过片内传输总线传输至SMMU;
12、DMA Agent发送的完成信息经过SMMU传输到DMA Manager。
13、DMA Manager收到各个DMA Agent发送的完成信息,由DMA Manager通知Master或软件,完成数据搬运任务。
实现方式四
在实现方式三中,数据搬运任务为将数据从外部存储空间搬运至外部存储空间的任务。数据搬运过程可以如图8所示。
1、软件通过CPU核心(CPU Core)等Master下发数据搬运任务;
2、数据搬运任务通过片内传输总线(NOC/Interconnect)传输到SMMU;
3、SMMU将任务发给DMA Manager,DMA Manager可以视为前述DMA管理模块;
4、DMA Manager接收到数据搬运任务后,通过SMMU获取页表粒度,按照页表粒度拆分为多个子任务,并将子任务发往SMMU进行地址翻译和转换;
5、SMMU将转换后的子任务发往片内传输总线传输;
6、片内传输总线将子任务广播传输到各个DMA Agent,DMA Agent可以视为前述DMA代理模块;
7、各个DMA Agent对子任务按照***请求处理粒度拆分,并进行译码,判断需要在该DMA Agent执行搬运的地址,丢弃不需要该DMA Agent执行搬运的子任务,并判断搬运任务为从外部地址空间搬运数据到外部地址空间,通过Home Agent或Memory Controller经片内传输总线对外部地址空间发起读操作;
8、从外部地址空间读取的数据返回到Home Agent或Memory Controller;
9、DMA Agent通过Home Agent或Memory Controller发起写操作,将读回数据通过片内传输总线写入到外部地址空间;
10、完成子任务内需要该DMA Agent进行搬运的所有数据搬运后,DMA Agent将完成信息发往片内传输总线;
11、DMA Agent发送的完成信息经过片内传输总线传输至SMMU;
12、DMA Agent发送的完成信息经过SMMU传输到DMA Manager。
13、DMA Manager收到各个DMA Agent发送的完成信息,由DMA Manager通知Master或软件,完成数据搬运任务。
基于同一发明构思,本申请实施例还提供一种数据搬运方法,参见图9,该方法包括如下步骤。
S901:DMA管理模块将处理器下发的数据搬运任务拆分成多个子任务。
S902:DMA管理模块将多个子任务下发至多个DMA代理模块中的每个DMA代理模块。
S903:每个DMA代理模块执行多个子任务。
可选地,在每个DMA代理模块执行多个子任务之前,每个DMA代理模块还可以分别对多个子任务中的每个子任务进行拆分;然后,分别对拆分后的每个子任务所对应的数据搬运地址进行译码;那么,每个DMA代理模块在执行多个子任务时,可以根据每个子任务所对应的数据搬运地址执行多个子任务。
需要说明的是,图9所示的数据搬运方法可以视为图4所示的集成芯片400所执行的方法,图9所示的数据搬运方法中未详尽描述的实现方式和技术效果可以参见图4所示的集成芯片400中的相关描述。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (18)
- 一种集成芯片,其特征在于,包括:直接存储器访问DMA管理模块,用于将处理器下发的数据搬运任务拆分成多个子任务,将所述多个子任务下发至多个DMA代理模块中的每个DMA代理模块;所述多个DMA代理模块,所述多个DMA代理模块中的每个DMA代理模块用于执行所述多个子任务。
- 如权利要求1所述的集成芯片,其特征在于,还包括:***内存管理单元,用于在所述DMA管理模块将所述数据搬运任务拆分成所述多个子任务之后,对所述多个子任务进行地址转换,将进行地址转换后的所述多个子任务下发至所述每个DMA代理模块。
- 如权利要求1或2所述的集成芯片,其特征在于,所述DMA管理模块在将处理器下发的数据搬运任务拆分成多个子任务时,具体用于:按照页表粒度将所述数据搬运任务拆分成所述多个子任务。
- 如权利要求1~3任一项所述的集成芯片,其特征在于,所述每个DMA代理模块还用于:分别对所述多个子任务中的每个子任务进行拆分;分别对拆分后的所述每个子任务中所包括的数据搬运地址进行译码;所述每个DMA代理模块在执行所述多个子任务时,具体用于:根据所述每个子任务中所包括的数据搬运地址执行所述多个子任务。
- 如权利要求4所述的集成芯片,其特征在于,所述每个DMA代理模块在分别对所述多个子任务中的每个子任务进行拆分时,具体用于:根据***请求处理粒度对所述多个子任务中的每个子任务进行拆分。
- 如权利要求4或5所述的集成芯片,其特征在于,所述每个DMA代理模块在根据所述每个子任务中所包括的数据搬运地址执行所述多个子任务时,具体用于:根据所述每个子任务中所包括的数据搬运地址对所述每个子任务中需要自己搬运的指定数据进行搬运。
- 如权利要求6所述的集成芯片,其特征在于,所述每个DMA代理模块在对所述每个子任务中需要自己搬运的指定数据进行搬运时,具体用于:判断需要将所述指定数据从本地存储空间的第一地址搬运到第二地址;控制内存控制器或本地代理对所述第一地址中的所述指定数据发起读操作,以将所述指定数据读取至所述内存控制器;控制所述内存控制器或所述本地代理将所述指定数据写入所述第二地址。
- 如权利要求6所述的集成芯片,其特征在于,所述每个DMA代理模块在对所述每个子任务中需要自己搬运的指定数据进行搬运时,具体用于:判断需要将所述指定数据从本地存储空间搬运至外部存储空间;控制内存控制器或本地代理对所述指定数据发起读操作,以将所述指定数据读取至所述内存控制器;控制所述内存控制器或所述本地代理通过片上互联网络NOC将所述指定数据写入所述外部存储空间。
- 如权利要求6所述的集成芯片,其特征在于,所述每个DMA代理模块在对所述每个子任务中需要自己搬运的指定数据进行搬运时,具体用于:判断需要将所述指定数据从外部存储空间搬运至本地存储空间;控制内存控制器或本地代理通过NOC对所述指定数据发起读操作,以将所述指定数据读取至所述内存控制器;控制所述内存控制器或所述本地代理将所述指定数据写入所述本地存储空间。
- 如权利要求6所述的集成芯片,其特征在于,所述每个DMA代理模块在对所述每个子任务中需要自己搬运的指定数据进行搬运时,具体用于:判断需要将所述指定数据从外部存储空间的第三地址搬运到第四地址;控制内存控制器或本地代理通过NOC对所述第三地址中的所述指定数据发起读操作,以将所述指定数据读取至所述内存控制器;控制所述内存控制器或所述本地代理通过所述NOC将所述指定数据写入所述第四地址。
- 如权利要求4~10任一项所述的集成芯片,其特征在于,所述DMA代理模块还用于:在执行所述多个子任务之后,向所述DMA管理模块发送第一执行完成消息,所述第一执行完成消息用于指示所述多个子任务已执行完成。
- 如权利要求11所述的集成芯片,其特征在于,所述DMA代理模块在向所述DMA管理模块发送第一执行完成消息时,具体用于:通过***内存管理单元向所述DMA管理模块发送所述第一执行完成消息。
- 如权利要求11或12所述的集成芯片,其特征在于,所述DMA管理模块还用于:在接收到所述每个DMA代理模块发送的第一执行完成消息之后,向所述处理器发送第二执行完成消息,所述第二执行完成消息用于指示所述数据搬运任务已执行完成。
- 如权利要求1~13任一项所述的集成芯片,其特征在于,所述处理器为中央处理器CPU或者神经网络处理器NPU。
- 如权利要求1~14任一项所述的集成芯片,其特征在于,所述DMA管理模块和所 述每个DMA代理模块通过NOC或者私有总线连接。
- 如权利要求1~15任一项所述的集成芯片,其特征在于,所述DMA代理模块集成在内存控制器或本地代理中。
- 一种数据搬运方法,其特征在于,包括:直接存储器访问DMA管理模块将处理器下发的数据搬运任务拆分成多个子任务;所述DMA管理模块将所述多个子任务下发至多个DMA代理模块中的每个DMA代理模块;所述每个DMA代理模块执行所述多个子任务。
- 如权利要求17所述的方法,其特征在于,在所述每个DMA代理模块执行所述多个子任务之前,还包括:所述每个DMA代理模块分别对所述多个子任务中的每个子任务进行拆分;所述每个DMA代理模块分别对拆分后的所述每个子任务所对应的数据搬运地址进行译码;所述每个DMA代理模块执行所述多个子任务,包括:所述每个DMA代理模块根据所述每个子任务所对应的数据搬运地址执行所述多个子任务。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/080915 WO2022193108A1 (zh) | 2021-03-16 | 2021-03-16 | 一种集成芯片及数据搬运方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116710906A true CN116710906A (zh) | 2023-09-05 |
Family
ID=83321613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180087534.0A Pending CN116710906A (zh) | 2021-03-16 | 2021-03-16 | 一种集成芯片及数据搬运方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4293524A4 (zh) |
CN (1) | CN116710906A (zh) |
WO (1) | WO2022193108A1 (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7469305B2 (en) * | 2006-09-20 | 2008-12-23 | International Business Machines Corporation | Handling multiple data transfer requests within a computer system |
US7877524B1 (en) * | 2007-11-23 | 2011-01-25 | Pmc-Sierra Us, Inc. | Logical address direct memory access with multiple concurrent physical ports and internal switching |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
CN105938461B (zh) * | 2015-07-31 | 2019-02-19 | 杭州迪普科技股份有限公司 | 一种dma数据传输方法、装置以及网络设备 |
CN106096038A (zh) * | 2016-06-28 | 2016-11-09 | 浪潮软件股份有限公司 | 一种云计算架构下的分布式数据库架构 |
CN107562659A (zh) * | 2016-06-30 | 2018-01-09 | 中兴通讯股份有限公司 | 一种数据搬移装置及方法 |
EP3343384A1 (en) * | 2016-12-30 | 2018-07-04 | Intel IP Corporation | Data operations performed between computing nodes using direct memory access (dma) |
-
2021
- 2021-03-16 WO PCT/CN2021/080915 patent/WO2022193108A1/zh active Application Filing
- 2021-03-16 CN CN202180087534.0A patent/CN116710906A/zh active Pending
- 2021-03-16 EP EP21930704.8A patent/EP4293524A4/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4293524A1 (en) | 2023-12-20 |
WO2022193108A1 (zh) | 2022-09-22 |
EP4293524A4 (en) | 2024-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10365830B2 (en) | Method, device, and system for implementing hardware acceleration processing | |
US8478926B1 (en) | Co-processing acceleration method, apparatus, and system | |
US10331595B2 (en) | Collaborative hardware interaction by multiple entities using a shared queue | |
KR102074468B1 (ko) | 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법 | |
JP2009265963A (ja) | 情報処理システム及びタスクの実行制御方法 | |
CN108351783A (zh) | 多核数字信号处理***中处理任务的方法和装置 | |
US20110265093A1 (en) | Computer System and Program Product | |
WO2014173364A1 (zh) | 共享资源访问方法和装置 | |
US9792209B2 (en) | Method and apparatus for cache memory data processing | |
US6598097B1 (en) | Method and system for performing DMA transfers using operating system allocated I/O buffers | |
WO2023124304A1 (zh) | 芯片的缓存***、数据处理方法、设备、存储介质及芯片 | |
CN116710906A (zh) | 一种集成芯片及数据搬运方法 | |
CN113076180B (zh) | 上行数据通路的构建方法及数据处理*** | |
CN113076189B (zh) | 具有多数据通路的数据处理***及用多数据通路构建虚拟电子设备 | |
JPWO2007088582A1 (ja) | 共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体 | |
KR20130104958A (ko) | 다중 운영체제들을 실행하는 장치 및 방법 | |
WO2020168505A1 (zh) | 一种在多个处理器之间调度软件任务的方法和装置 | |
CN111274161A (zh) | 用于加速串行化算法的具有可变等待时间的位置感知型存储器 | |
JP2780662B2 (ja) | マルチプロセッサシステム | |
WO2024060228A1 (zh) | 获取数据的方法、装置、***及存储介质 | |
CN116383127B (zh) | 节点间通信方法、装置、电子设备及存储介质 | |
CN117149472B (zh) | 通信方法、装置、计算机可读存储介质以及电子设备 | |
US20230236889A1 (en) | Distributed accelerator | |
KR20080089621A (ko) | 공유 메모리형 멀티 프로세서에 있어서의 절차 호출 방법 및 절차 호출 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 | |
CN113535377A (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 |