CN111782562A - 数据传输方法、dma控制器、npu芯片及计算机设备 - Google Patents
数据传输方法、dma控制器、npu芯片及计算机设备 Download PDFInfo
- Publication number
- CN111782562A CN111782562A CN202010711047.4A CN202010711047A CN111782562A CN 111782562 A CN111782562 A CN 111782562A CN 202010711047 A CN202010711047 A CN 202010711047A CN 111782562 A CN111782562 A CN 111782562A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- read
- interpolation
- bus
- 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.)
- Granted
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract 20
- 238000000034 method Methods 0.000 title claims abstract 11
- 230000004044 response Effects 0.000 claims abstract 9
- 239000000872 buffer Substances 0.000 claims 20
- 238000013528 artificial neural network Methods 0.000 claims 1
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本申请实施例公开了一种数据传输方法、DMA控制器、NPU芯片及计算机设备,属于芯片技术领域。所述方法包括:获取第一数据传输指令,第一数据传输指令中包含第一读地址参数、第一写地址参数和第一插值地址参数;根据第一读地址参数向总线发送第一数据读命令;响应于接收到总线返回的第一数据,根据第一写地址参数向目的端写入第一数据;响应于未接收到总线返回的第一数据,根据第一插值地址参数向目的端写入第一插值数据。相较于在完成数据传输后进行数据插值,通过将数据插值功能集成至DMA控制器,从而利用命令发送至数据返回这一延时时段进行数据插值,有助于降低数据传输与数据插值的延时,提高数据传输和数据插值的效率。
Description
技术领域
本申请实施例涉及芯片技术领域,特别涉及一种数据传输方法、DMA控制器、NPU芯片及计算机设备。
背景技术
直接存储器访问(Direct Memory Access,DMA)控制器是计算机系统中用于实现数据传输的组件,能够降低数据传输对中央处理器(Central Processing Unit,CPU)的性能影响。
DMA控制器在进行数据传输时,首先从CPU处获取系统总线控制权,然后通过系统总线从源数据地址处读取数据,从而将读取到的数据写入目的地址中。比如,当需要将外部存储器中的部分数据写入神经网络处理器(Neural-network Processing Unit,NPU)时,DMA控制器即根据源数据地址,通过系统总线从外部存储器中读取数据,并根据目的地址将读取到的数据写入NPU的内部缓存器。
发明内容
本申请实施例提供了一种数据传输方法、DMA控制器、NPU芯片及计算机设备。所述技术方案包括:
一方面,本申请实施例提供了一种数据传输方法,所述方法用于直接存储器访问DMA控制器,所述方法包括:
获取第一数据传输指令,所述第一数据传输指令中包含第一读地址参数、第一写地址参数和第一插值地址参数,所述第一读地址参数用于指示第一数据在源端中的地址,所述第一写地址参数用于指示所述第一数据在目的端中的地址,所述第一插值地址参数用于指示第一插值数据在所述目的端中的地址;
根据所述第一读地址参数向总线发送第一数据读命令,所述总线用于根据所述第一数据读命令从所述源端读取所述第一数据;
响应于接收到所述总线返回的所述第一数据,根据所述第一写地址参数向所述目的端写入所述第一数据;
响应于未接收到所述总线返回的所述第一数据,根据所述第一插值地址参数向所述目的端写入所述第一插值数据。
另一方面,本申请实施例提供了一种DMA控制器,所述DMA控制器包括:命令发送模块和数据写入模块;
所述命令发送模块,用于获取第一数据传输指令,所述第一数据传输指令中包含第一读地址参数、第一写地址参数和第一插值地址参数,所述第一读地址参数用于指示第一数据在源端中的地址,所述第一写地址参数用于指示所述第一数据在目的端中的地址,所述第一插值地址参数用于指示第一插值数据在所述目的端中的地址;
所述命令发送模块,用于根据所述第一读地址参数向总线发送第一数据读命令,所述总线用于根据所述第一数据读命令从所述源端读取所述第一数据;
所述数据写入模块,用于在接收到所述总线返回的所述第一数据时,根据所述第一写地址参数向所述目的端写入所述第一数据;
所述数据写入模块,还用于在未接收到所述总线返回的所述第一数据时,根据所述第一插值地址参数向所述目的端写入所述第一插值数据。
另一方面,本申请实施例提供了一种NPU芯片,所述NPU芯片中设置有如上述方面所述的DMA控制器。
另一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括CPU芯片、NPU芯片和存储器,所述CPU芯片、NPU芯片和所述存储器之间通过总线相连;所述NPU芯片包括如上述方面所述的DMA控制器。
本申请实施例提供的技术方案至少包括如下有益效果:
本申请实施例中,当DMA控制器进行数据传输,且传输的数据存在插值需求时,DMA控制器向总线发送数据读命令,指示总线从源端读取数据后,在等待总线返回读取数据的过程中,根据插值地址将插值数据写入目的端,并在接收到总线返回的数据时,优先将读取到的数据写入目的端;相较于在完成数据传输后进行数据插值,通过将数据插值功能集成至DMA控制器,从而利用命令发送至数据返回这一延时时段进行数据插值,有助于降低数据传输与数据插值的延时,提高数据传输和数据插值的效率。
附图说明
图1是相关技术中DMA控制器进行数据传输过程的实施示意图;
图2示出了本申请一个示例性实施例提供的数据传输方法的方法流程图;
图3是一个示例性实施例提供的三维数据块的示意图;
图4是图3所示三维数据块存储方式的示意图;
图5示出了本申请另一个示例性实施例提供的数据传输方法的方法流程图;
图6示出了本申请另一个示例性实施例提供的数据传输方法的方法流程图;
图7示出了本申请一个示例性实施例提供的DMA控制器的结构示意图;
图8示出了本申请另一个示例性实施例提供的DMA控制器的结构示意图;
图9示出了本申请一个示例性实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
相关技术中,DMA控制器仅具有数据传输(或称为数据搬移)功能,即DMA控制器将数据由源端传输至目的端后,对数据的进一步处理需要由目的端执行。在一种可能的场景下,如图1所示,当需要将内存11中的数据传输至NPU芯片12时,CPU芯片13向DMA控制器14发送数据传输指令,由DMA控制器14根据数据传输指令,通过总线15从内存11中读取数据,并将读取到的数据写入NPU芯片12的内部缓存器中,以便NPU芯片12对写入的数据进行运算。
NPU芯片对数据进行处理前,经常需要对数据进行插值处理。比如,NPU芯片对写入的图像数据进行卷积处理前,需要对图像数据进行数据填充(padding),而该数据填充操作需要由在数据传输完成后由NPU芯片执行。
然而,由于DMA控制器通过总线进行数据传输时,存在总线延迟以及数据读取延迟,因此采用上述先传输后插值的方式,将会造成较高的延迟,影响目的端(比如NPU芯片)的工作效率。
为了降低延迟,并提高目的端的工作效率,本申请实施例中提供的DMA控制器除了具备数据传输功能外,还具有数据插值功能。使用该DMA控制器进行数据传输时,在通过总线从目的端读取数据的过程中,若未接收到总线返回的数据,DMA控制器根据插值地址向目的端写入插值数据,若接收到总线返回的数据,DMA控制器即根据写数据地址向目的端写入读取到的数据。通过利用总线延迟以及数据读取延迟时段进行数据插值,而非在完成数据传输后进行数据插值,能够降低数据传输以及数据插值的总耗时,从而提高目的端的工作效率;并且,由于DMA控制器完成了数据插值,因此目的端可以省去数据插值操作,进而降低了目的端所执行操作的复杂度。
请参考图2,其示出了本申请一个示例性实施例提供的数据传输方法的方法流程图。本实施例以该方法用于DMA控制器为例进行说明,该方法可以包括如下步骤。
步骤201,获取第一数据传输指令,第一数据传输指令中包含第一读地址参数、第一写地址参数和第一插值地址参数,第一读地址参数用于指示第一数据在源端中的地址,第一写地址参数用于指示第一数据在目的端中的地址,第一插值地址参数用于指示第一插值数据在目的端中的地址。
在一些实施例中,DMA控制器接收CPU芯片发送的数据传输指令,并将数据传输指令缓存在指令存储模块中,相应的,DMA控制器即从指令存储模块中读取第一数据传输指令。
本申请实施例中,第一数据传输指令中除了用于指示第一数据在源端的读地址以及在目的端的写地址外,还包含第一数据对应插值数据在目的端的插值地址,其中,该插值数据即用于插入目的端写入的第一数据中。
在一种可能的实施方式中,第一读地址参数、第一写地址参数以及第一插值地址参数中均包含数据起始地址以及地址偏移量,以此降低第一数据传输指令的指令长度。
步骤202,根据第一读地址参数向总线发送第一数据读命令,总线用于根据第一数据读命令从源端读取所述第一数据。
获取到第一数据传输指令后,DMA控制器即获取总线的控制权,并进一步局第一读地址参数确定第一数据的读地址,进而向总线发送包含该读地址的第一数据读命令,指示总线从源端读取第一数据。
在一种可能的实施方式中,DMA控制器向总线发送第一数据读命令前,将第一数据读命令转换为总线读命令接口形式,确保总线能够识别该命令。
步骤203,响应于接收到总线返回的第一数据,根据第一写地址参数向目的端写入第一数据。
当接收到总线返回的第一数据时,为了避免第一数据堵塞总线,DMA控制器优先将总线返回的第一数据写入目的端。其中,DMA控制器根据第一写地址参数确定第一数据在目的端内的写地址,进而根据写地址完成第一数据的写入。
步骤204,响应于未接收到总线返回的第一数据,根据第一插值地址参数向目的端写入第一插值数据。
当未接收到总线返回的第一数据时(因总线延迟或数据读取延迟等原因造成),DMA控制器在等待第一数据的同时,根据第一插值地址参数,确定插值数据在目的端中的插值地址,并将插值数据写入插值地址,即利用总线和数据读取延迟时间进行数据插值。
需要说明的是,当在插值过程中接收到总线返回的第一数据,DMA控制器停止数据插值操作,并将返回的第一数据写入目的端,即第一数据的写入优先级高于插值数据的写入优先级。
在一种可能的应用场景下,当需要将内存中的图像数据传输至NPU芯片时,CPU芯片向DMA控制器发送数据传输指令(指示数据读地址、数据写地址和数据插值地址),由DMA控制器根据数据传输指令,通过总线从内存中读取图像数据。在等待总线返回图像数据的过程中,DMA控制在未接收到总线返回的图像数据时,向NPU芯片中写入插值数据,并在接收到总线返回的图像数据时,向NPU芯片中写入图像数据。通过在数据传输过程中进行数据插值,缩短了NPU芯片获取图像数据以及完成数据插值的时间,有助于提高NPU芯片后续进行卷积操作的效率。
综上所述,本申请实施例中,当DMA控制器进行数据传输,且传输的数据存在插值需求时,DMA控制器向总线发送数据读命令,指示总线从源端读取数据后,在等待总线返回读取数据的过程中,根据插值地址将插值数据写入目的端,并在接收到总线返回的数据时,优先将读取到的数据写入目的端;相较于在完成数据传输后进行数据插值,通过将数据插值功能集成至DMA控制器,从而利用命令发送至数据返回这一延时时段进行数据插值,有助于降低数据传输与数据插值的延时,提高数据传输和数据插值的效率。
在一种可能的实施方式中,待传输的第一数据由若干数据行构成,DMA控制器即针对各个数据行生成相应的第一数据读命令,并发送至总线。可选的,上述步骤202包括如下步骤。
步骤202A,根据第一读地址参数,确定第一数据中至少一个数据行对应的读数据地址。
在一些实施例中,第一读地址参数中包含第一数据中第一个数据行的数据起始地址,以及其他数据行相对于第一个数据行的地址偏移量,相应的,DMA控制器即根据数据起始地址确定第一个数据行的读数据地址,根据数据起始地址和地址偏移量确定其它数据行的读数据地址。
在一种可能的实施方式中,第一数据为三维数据块,即第一数据由若干三维数据行堆叠而成。如图3所示,第一数据是由6×5个数据行31(阴影填充)堆叠而成的三维数据块,相应的,三维数据块的存储方式如图4所示。
其中,如图4所示,三维数据块中第一个数据行的数据起始地址(或称为基地址)为BASE_ADDR;D1_NUM为第一维度(D1)上数据行的数据长度(比如字节数);D2_NUM为第二维度(D2)上数据行的数量;D2_OFFSET为第二维度上相邻数据行之间的地址偏移量;D3_NUM为第三维度(D3)上数据行的数量;D3_OFFSET为第三维度上相邻数据行之间的地址偏移量(即二维数据面之间的地址偏移量)。
在一些实施例中,第一读地址参数中包含数据起始地址、数据长度、二维地址偏移量、二维方向上数据行数量、三维地址偏移量以及三维方向上数据行数量。相应的,在确定三维数据块中各个数据行的读数据地址时,可以采用如下方式。
一、根据第一读地址参数中的数据起始地址,确定第一维度上数据行的读数据地址。
示意性的,图4所示,DMA控制器根据第一读地址参数中包含的数据起始地址,即可确定第一维度上第一个数据行的读数据地址。
二、根据第一读地址参数中的数据起始地址和二维地址偏移量,确定第二维度上数据行的读数据地址,二维地址偏移量是第二维度上相邻数据行之间的地址偏移量。
在确定第二维度上各个数据行的读数据地址时,DMA控制器即根据二维地址偏移量,在第二维度上对数据起始地址进行地址偏移计算,计算得到该数据行的读数据地址。
在一种可能的实施方式中,第二维度上第i个数据行的读数据地址为:BASE_ADDR+(i-1)×D2_OFFSET,1≤i≤D2_NUM。
三、根据第一读地址参数中的数据起始地址和三维地址偏移量,确定第三维度上数据行的读数据地址,三维地址偏移量是第三维度上相邻数据行之间的地址偏移量。
在确定第三维度上各个数据行的读数据地址时,DMA控制器即根据三维地址偏移量,在第三维度上对数据起始地址进行地址偏移计算,计算得到该数据行的读数据地址。
在一种可能的实施方式中,第三维度上第j个数据面,第k个数据行的读数据地址为:BASE_ADDR+(j-1)×D3_OFFSET+(k-1)×D2_OFFSET,1≤j≤D3_NUM,1≤k≤D2_NUM。
步骤202B,根据读数据地址和数据行的数据长度,向总线发送至少一条第一数据读命令。
确定出各个第一数据中各数据行对应的读数据地址后,DMA控制器进一步根据读数据地址和数据行的数据长度,生成各数据行对应的第一数据读命令,并将各条第一数据读命令逐条发送至总线。总线接收到第一数据读命令后,即从读数据地址开始读取数据,所读取数据的长度即为命令中的数据长度。
在一个示意性的例子中,如图3所示,由于第一数据由30个数据行组成,因此DMA控制器生成30条第一数据读命令,并逐条发送至总线。
本实施例中,DMA控制器根据第一读地址参数中的数据起始地址以及各个维度上数据行的地址偏移量,确定各数据行的读数据地址,从而根据该读数据地址和数据长度生成相应的数据读命令,在确保数据读取准确性的前提下,降低数据传输指令的数据量。
为了进一步提高DMA控制器的带宽和传输性能,在一种可能的实施方式中,目的端设置有n个缓存器,而DMA控制器中相应设置有深度为n的指令存储模块,DMA控制器可以根据指令存储模块中的数据传输指令,同时向n个缓存器中写入读取到的数据以及插值数据,从而达到流水传输数据的效果。下面采用示例性的实施例进行说明。
请参考图5,其示出了本申请另一个示例性实施例提供的数据传输方法的方法流程图。本实施例以该方法用于DMA控制器为例进行说明,该方法可以包括如下步骤。
步骤501,从指令存储模块中获取第一数据传输指令,第一数据传输指令中包含第一读地址参数、第一写地址参数和第一插值地址参数。
在一种可能的实施方式中,DMA控制器中设置有指令存储模块,该指令存储模块用于存储CPU芯片下发的数据传输指令。并且,该指令存储模块采用先进先出(First InputFirst Output,FIFO)设计,且深度与目的端中缓存器的数量相关。
对于接收到数据传输指令,DMA控制器即按照FIFO原则,从而指令存储模块中获取第一数据传输指令。
步骤502,根据第一读地址参数向总线发送第一数据读命令,总线用于根据第一数据读命令从源端读取第一数据。
其中,DMA控制器生成并发送第一数据读命令的过程可以参考上述步骤202A和202B,本实施例在此不再赘述。
步骤503,响应于接收到总线返回的第一数据,根据第一写地址参数确定第一数据在第一缓存器中的写数据地址;根据写数据地址向第一缓存器写入第一数据。
由于目的端设置有n个缓存器,因此DMA控制器需要将总线返回的数据写入对应的缓存器中。在一种可能的实施方式中,第一数据传输指令中还包含缓存器标识,DMA控制器即根据该缓存器标识,确定第一数据所要写入的缓存器。
在一些实施例中,第一写地址参数中包含数据起始地址、数据长度、二维地址偏移量、二维方向上数据行数量、三维地址偏移量以及三维方向上数据行数量。相应的,DMA控制器即根据上述数据计算各个数据行的写数据地址,其中,写数据地址的计算方式可以参考读数据地址的计算方式,本实施例在此不再赘述。
步骤504,响应于未接收到总线返回的第一数据,根据第一插值地址参数确定第一插值数据在第一缓存器中的插值地址;根据插值地址向第一缓存器写入第一插值数据。
在一些实施例中,第一插值地址参数中包含插值数据的数据起始地址、数据长度、二维地址偏移量、二维方向上数据行数量、三维地址偏移量以及三维方向上数据行数量。相应的,DMA控制器即根据上述数据计算各个插值数据行的插值地址,其中,插值地址的计算方式可以参考读数据地址的计算方式,本实施例在此不再赘述。
示意性的,如图3所示,DMA控制器可以在D1、D2和D3三个方向上对三维数据块进行插值处理。其中,DMA控制器根据第一插值地址参数中第一个插值数据行32的数据起始地址,以及其他插值数据行相对于第一个插值数据行32的地址偏移量,确定各个插值数据行的插值地址。
针对插值数据的获取方式,在一种可能的实施方式中,目的端的寄存器中存储有插值数据,DMA控制器进行数据插值时,即从目的端的寄存器中读取插值数据。比如,DMA控制器从NPU芯片的寄存器中读取到插值数据为0。
在其他可能的实施方式中,该插值数据也可以由CPU芯片在数据传输指令中指示,本实施例在此不再赘述。
步骤505,从指令存储模块中获取第二数据传输指令,第二数据传输指令中包含第二读地址参数、第二写地址参数和第二插值地址参数。
在一种可能的实施方式中,DMA控制器向总线发送第一数据读命令后,检测指令存储模块中是否存在第二数据传输指令,若存在,则进一步获取第二数据传输指令,从而根据第二数据传输指令向目的端的第二缓存器中写入数据以及插值数据,实现第一数据和第二数据的并行写入。
其中,第二数据传输指令中包含的参数与第一数据传输指令相似,本实施例在此不再赘述。
步骤506,根据第二读地址参数,向总线发送第二数据读命令,总线用于根据第二数据读命令从源端读取第二数据。
本申请实施例中的DMA控制器具有同步写入功能,即在第一数据未完全写入第一缓存器时,若接收到总线返回的第二数据,DMA控制器可以将第二数据写入第二缓存器中,即当未完成对第一缓存器的写入操作时,第一缓存器和第二缓存器的写入操作同步执行,从而提高目的端与外部数据的传输带宽,达到流水读写的效果。
其中,DMA控制器向总线发送第二数据读命令的过程可以参考向总线发送第一数据读命令的过程,本实施例在此不再赘述。
步骤507,响应于接收到总线返回的第二数据,根据第二写地址参数向第二缓存器写入第二数据。
与向第一缓存器中写入第一数据类似的,当接收到总线返回的第二数据时,DMA控制器将第二数据写入第二缓存器中,避免返回的数据阻塞总线。
步骤508,响应于未接收到总线返回的第二数据,根据第二插值地址参数向第二缓存器写入第二插值数据。
与向第一缓存器中写入第一插值数据类似的,当未接收到总线返回的第二数据时,DMA控制器将第二插值数据写入第二缓存器中,降低总线延迟和读数据延迟造成的影响。
在一种可能的实施方式中,当第一数据完成写入,且第一插值数据完成写入时,DMA控制器释放指令存储模块中的第一数据传输指令,以便存储CPU芯片发送的后续数据传输指令,进而进行后续数据传输和数据插值操作。
本实施例中,当通过在目的端设置至少两个缓存器,并在DMA控制器中设置能够容纳至少两条指令的指令存储模块,使得DMA控制器能够在接收到多条数据传输指令时,同步执行不同数据的读操作,从而将读取到的数据写入相应的缓存器中,并在写入数据过程中进行数据插值操作,提高了目的端与外部数据的传输带宽,进而提高了目的端后续处理数据的效率,提高了目的端的工作效率和性能。
在一个示例性的例子中,以源端为内存、目的端为NPU芯片、NPU芯片中设置有两个缓存器,且DMA控制器中指令存储模块的深度为2为例,DMA控制器向NPU芯片传输数据的过程如图6所示。
步骤601,接收CPU芯片发送的数据传输指令,并存储至指令存储模块。
步骤602,执行指令存储模块中的第一数据传输指令。
步骤603,计算第一读数据地址。
步骤604,计算第一写数据地址。
步骤605,计算第一插值地址。
步骤606,根据第一读数据地址向总线发送第一数据读命令。
步骤607,是否接收到总线返回的第一数据。
步骤608,接收到总线返回的第一数据时,将第一数据写入NPU芯片的第一缓存器。
步骤609,未接收到总线返回的第一数据时,将第一插值数据写入NPU芯片的第一缓存器。
步骤610,是否完成所有第一数据的写操作,若完成,则执行步骤612,若未完成,则执行步骤607。
步骤611,是否完成所有第一插值数据的写操作,若完成,则执行步骤612,若未完成,则执行步骤607。
步骤612,若完成第一数据以及第一插值数据的写操作,则释放第一数据传输指令。
步骤613,当完成第一数据读命令发送时,执行令存储模块中的第二数据传输指令。
步骤614,计算第二读数据地址。
步骤615,计算第二写数据地址。
步骤616,计算第二插值地址。
步骤617,根据第二读数据地址向总线发送第二数据读命令。
步骤618,是否接收到总线返回的第二数据。
步骤619,接收到总线返回的第二数据时,将第二数据写入NPU芯片的第二缓存器。
步骤620,未接收到总线返回的第二数据时,将第二插值数据写入NPU芯片的第二缓存器。
步骤621,是否完成所有第二数据的写操作,若完成,则执行步骤618,若未完成,则执行步骤623。
步骤622,是否完成所有第二插值数据的写操作,若完成,则执行步骤618,若未完成,则执行步骤623。
步骤623,若完成第二数据以及第二插值数据的写操作,则释放第二数据传输指令。
步骤624,当完成第二数据读命令发送时,检测第一数据传输指令是否已被释放。
步骤625,若已被释放,则执行指令存储模块中的下一条数据传输指令。
请参考图7,其示出了本申请一个示例性实施例提供的DMA控制器的结构示意图。该DMA控制器包括:命令发送模块701和数据写入模块702。
命令发送模块701,用于获取第一数据传输指令,第一数据传输指令中包含第一读地址参数、第一写地址参数和第一插值地址参数,第一读地址参数用于指示第一数据在源端中的地址,第一写地址参数用于指示第一数据在目的端中的地址,第一插值地址参数用于指示第一插值数据在目的端中的地址。
命令发送模块701,用于根据第一读地址参数向总线发送第一数据读命令,总线用于根据第一数据读命令从源端读取所述第一数据。
数据写入模块702,用于在接收到总线返回的第一数据时,根据第一写地址参数向目的端写入第一数据;
数据写入模块702,还用于在未接收到总线返回的第一数据时,根据第一插值地址参数向目的端写入第一插值数据。
在一种可能的实施方式中,命令发送模块701,用于根据第一读地址参数,确定第一数据中至少一个数据行对应的读数据地址;根据读数据地址和数据行的数据长度,向总线发送至少一条第一数据读命令。
在一种可能的实施方式中,第一数据为三维数据块;
命令发送模块701,还用于:
根据第一读地址参数中的数据起始地址,确定第一维度上所述数据行的读数据地址;
根据第一读地址参数中的数据起始地址和二维地址偏移量,确定第二维度上数据行的读数据地址,二维地址偏移量是第二维度上相邻数据行之间的地址偏移量;
根据第一读地址参数中的数据起始地址和三维地址偏移量,确定第三维度上数据行的读数据地址,三维地址偏移量是第三维度上相邻数据行之间的地址偏移量。
在一种可能的实施方式中,目的端设置有n个缓存器,且DMA控制器中包含深度为n的指令存储模块,n为大于等于2的整数;
命令发送模块701,用于从指令存储模块中获取第一数据传输指令;
数据写入模块702,用于在接收到总线返回的第一数据时,根据第一写地址参数确定第一数据在第一缓存器中的写数据地址;根据写数据地址向第一缓存器写入第一数据;
数据写入模块702,还用于在未接收到总线返回的第一数据时,根据第一插值地址参数确定第一插值数据在第一缓存器中的插值地址;根据插值地址向第一缓存器写入第一插值数据。
在一种可能的实施方式中,命令发送模块701,还用于从指令存储模块中获取第二数据传输指令,第二数据传输指令中包含第二读地址参数、第二写地址参数和第二插值地址参数;根据第二读地址参数,向总线发送第二数据读命令,总线用于根据第二数据读命令从源端读取第二数据;
数据写入模块702,还用于在接收到总线返回的第二数据时,根据第二写地址参数向第二缓存器写入第二数据;
数据写入模块702,还用于在未接收到总线返回的第二数据时,根据第二插值地址参数向第二缓存器写入第二插值数据;
其中,当未完成对第一缓存器的写入操作时,第一缓存器和第二缓存器的写入操作同步执行。
在一种可能的实施方式中,指令存储模块,还用于在第一数据完成写入,且第一插值数据完成写入时,释放第一数据传输指令。
上述DMA控制器中各个模块的功能实现过程可以参考上述方法实施例,本实施例在此不再赘述。
在一个示例性的例子中,如图8所示,DMA控制器800包括:指令存储模块801、读地址生成模块802、读命令处理模块803、插值地址生成模块804、写地址生成模块805、写命令处理模块806以及数据缓存模块807。写命令处理模块806相当于图7中DMA控制器的数据写入模块702。
其中,指令存储模块801用于存储CPU芯片下发的数据传输指令,且指令存储模块801采用FIFO形式对指令进行存储。
读地址生成模块802用于根据指令存储模块801中指令包含的读地址参数,生成待传输数据在外部数据存储器820中的地址。
读命令处理模块803用于根据读地址生成模块802生成的读地址,向总线830发送读命令,以便总线830从外部数据存储器820中读取待传输数据。其中,读地址生成模块802和读命令处理模块803相当于图7中DMA控制器的命令发送模块。
插值地址生成模块804用于根据指令存储模块801中指令包含的插值地址参数,生成插值数据在数据缓存器中的插值地址。
写地址生成模块805用于根据指令存储模块801中指令包含的写地址参数,生成待传输数据在数据缓存器中的数据写地址。
数据缓存模块807用于缓存总线830返回的待传输数据,并向写命令处理模块806提供写数据和数据插值的控制信号。
写命令处理模块806可以同时处理至少两条写指令。当数据缓存模块807为空时,即未接收到总线返回的数据时,写命令处理模块806根据插值地址生成模块804生成的插值地址,将插值数据写入数据缓存器中;当数据缓存模块807不为空时,即接收到总线返回的数据时,写命令处理模块806根据写地址生成模块805生成的写地址,将待传输数据写入数据缓存器中。
并且,当目的端设置有多个数据缓存器时,如图8所示,目的端设置有数据缓存器1和数据缓存器2,写命令处理模块806采用流水工作的方式,同步向数据缓存器1和数据缓存器2中写入数据并进行数据插值。
本申请还提供了一种NPU芯片,该NPU芯片中设置有如上述实施例的DMA控制器。当CPU芯片需要向NPU芯片写入数据时,即向NPU芯片中的DMA控制器发送数据传输指令,由DMA控制器根据指令进行数据读取,将读取到的数据写入NPU芯片的缓存器中,并利用总线以及数据读取延时进行数据插值。
请参考图9,其示出了本申请一个示例性实施例提供的计算机设备的结构示意图。该计算机设备中包括CPU芯片910、NPU芯片920和存储器930,CPU芯片910、NPU芯片920和存储器930之间通过总线940相连,且NPU芯片920中设置有上述实施例提供的DMA控制器921。
如图9所示,NPU芯片920中还设置有至少两个缓存器922,DMA控制器921即将读取数据和插值数据写入缓存器922中,以便NPU芯片920对缓存器922中的数据进行处理(比如卷积运算)。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种数据传输方法,其特征在于,所述方法用于直接存储器访问DMA控制器,所述方法包括:
获取第一数据传输指令,所述第一数据传输指令中包含第一读地址参数、第一写地址参数和第一插值地址参数,所述第一读地址参数用于指示第一数据在源端中的地址,所述第一写地址参数用于指示所述第一数据在目的端中的地址,所述第一插值地址参数用于指示第一插值数据在所述目的端中的地址;
根据所述第一读地址参数向总线发送第一数据读命令,所述总线用于根据所述第一数据读命令从所述源端读取所述第一数据;
响应于接收到所述总线返回的所述第一数据,根据所述第一写地址参数向所述目的端写入所述第一数据;
响应于未接收到所述总线返回的所述第一数据,根据所述第一插值地址参数向所述目的端写入所述第一插值数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一读地址参数向总线发送第一数据读命令,包括:
根据所述第一读地址参数,确定所述第一数据中至少一个数据行对应的读数据地址;
根据所述读数据地址和所述数据行的数据长度,向所述总线发送至少一条所述第一数据读命令。
3.根据权利要求2所述的方法,其特征在于,所述第一数据为三维数据块;
所述根据所述第一读地址参数,确定所述第一数据中至少一个数据行对应的读数据地址,包括如下至少一种:
根据所述第一读地址参数中的数据起始地址,确定第一维度上所述数据行的所述读数据地址;
根据所述第一读地址参数中的数据起始地址和二维地址偏移量,确定第二维度上所述数据行的所述读数据地址,所述二维地址偏移量是所述第二维度上相邻数据行之间的地址偏移量;
根据所述第一读地址参数中的数据起始地址和三维地址偏移量,确定第三维度上所述数据行的所述读数据地址,所述三维地址偏移量是所述第三维度上相邻数据行之间的地址偏移量。
4.根据权利要求1至3任一所述的方法,其特征在于,所述目的端设置有n个缓存器,且所述DMA控制器中包含深度为n的指令存储模块,n为大于等于2的整数;
所述获取第一数据传输指令,包括:
从所述指令存储模块中获取所述第一数据传输指令;
所述响应于接收到所述总线返回的所述第一数据,根据所述第一写地址参数向所述目的端写入所述第一数据,包括:
响应于接收到所述总线返回的所述第一数据,根据所述第一写地址参数确定所述第一数据在第一缓存器中的写数据地址;
根据所述写数据地址向所述第一缓存器写入所述第一数据;
所述响应于未接收到所述总线返回的所述第一数据,根据所述第一插值地址参数向所述目的端写入所述第一插值数据,包括:
响应于未接收到所述总线返回的所述第一数据,根据所述第一插值地址参数确定所述第一插值数据在所述第一缓存器中的插值地址;
根据所述插值地址向所述第一缓存器写入所述第一插值数据。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一读地址参数向总线发送第一数据读命令之后,所述方法还包括:
从所述指令存储模块中获取第二数据传输指令,所述第二数据传输指令中包含第二读地址参数、第二写地址参数和第二插值地址参数;
根据所述第二读地址参数,向所述总线发送第二数据读命令,所述总线用于根据所述第二数据读命令从所述源端读取第二数据;
响应于接收到所述总线返回的所述第二数据,根据所述第二写地址参数向第二缓存器写入所述第二数据;
响应于未接收到所述总线返回的所述第二数据,根据所述第二插值地址参数向所述第二缓存器写入所述第二插值数据;
其中,当未完成对所述第一缓存器的写入操作时,所述第一缓存器和所述第二缓存器的写入操作同步执行。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
响应于所述第一数据完成写入,且所述第一插值数据完成写入,释放所述指令存储模块中的所述第一数据传输指令。
7.一种DMA控制器,其特征在于,所述DMA控制器包括:命令发送模块和数据写入模块;
所述命令发送模块,用于获取第一数据传输指令,所述第一数据传输指令中包含第一读地址参数、第一写地址参数和第一插值地址参数,所述第一读地址参数用于指示第一数据在源端中的地址,所述第一写地址参数用于指示所述第一数据在目的端中的地址,所述第一插值地址参数用于指示第一插值数据在所述目的端中的地址;
所述命令发送模块,用于根据所述第一读地址参数向总线发送第一数据读命令,所述总线用于根据所述第一数据读命令从所述源端读取所述第一数据;
所述数据写入模块,用于在接收到所述总线返回的所述第一数据时,根据所述第一写地址参数向所述目的端写入所述第一数据;
所述数据写入模块,还用于在未接收到所述总线返回的所述第一数据时,根据所述第一插值地址参数向所述目的端写入所述第一插值数据。
8.根据权利要求7所述的DMA控制器,其特征在于,
所述命令发送模块,用于根据所述第一读地址参数,确定所述第一数据中至少一个数据行对应的读数据地址;根据所述读数据地址和所述数据行的数据长度,向所述总线发送至少一条所述第一数据读命令。
9.根据权利要求8所述的DMA控制器,其特征在于,所述第一数据为三维数据块;
所述命令发送模块,还用于:
根据所述第一读地址参数中的数据起始地址,确定第一维度上所述数据行的所述读数据地址;
根据所述第一读地址参数中的数据起始地址和二维地址偏移量,确定第二维度上所述数据行的所述读数据地址,所述二维地址偏移量是所述第二维度上相邻数据行之间的地址偏移量;
根据所述第一读地址参数中的数据起始地址和三维地址偏移量,确定第三维度上所述数据行的所述读数据地址,所述三维地址偏移量是所述第三维度上相邻数据行之间的地址偏移量。
10.根据权利要求7至9任一所述的DMA控制器,其特征在于,所述目的端设置有n个缓存器,且所述DMA控制器中包含深度为n的指令存储模块,n为大于等于2的整数;
所述命令发送模块,用于从所述指令存储模块中获取所述第一数据传输指令;
所述数据写入模块,用于在接收到所述总线返回的所述第一数据时,根据所述第一写地址参数确定所述第一数据在第一缓存器中的写数据地址;根据所述写数据地址向所述第一缓存器写入所述第一数据;
所述数据写入模块,还用于在未接收到所述总线返回的所述第一数据时,根据所述第一插值地址参数确定所述第一插值数据在所述第一缓存器中的插值地址;根据所述插值地址向所述第一缓存器写入所述第一插值数据。
11.根据权利要求10所述的DMA控制器,其特征在于,
所述命令发送模块,还用于从所述指令存储模块中获取第二数据传输指令,所述第二数据传输指令中包含第二读地址参数、第二写地址参数和第二插值地址参数;根据所述第二读地址参数,向所述总线发送第二数据读命令,所述总线用于根据所述第二数据读命令从所述源端读取第二数据;
所述数据写入模块,还用于在接收到所述总线返回的所述第二数据时,根据所述第二写地址参数向第二缓存器写入所述第二数据;
所述数据写入模块,还用于在未接收到所述总线返回的所述第二数据时,根据所述第二插值地址参数向所述第二缓存器写入所述第二插值数据;
其中,当未完成对所述第一缓存器的写入操作时,所述第一缓存器和所述第二缓存器的写入操作同步执行。
12.根据权利要求10所述的DMA控制器,其特征在于,
所述指令存储模块,还用于在所述第一数据完成写入,且所述第一插值数据完成写入时,释放所述第一数据传输指令。
13.一种神经网络处理器NPU芯片,其特征在于,所述NPU芯片中设置有如权利要求7至12任一所述的DMA控制器。
14.一种计算机设备,其特征在于,所述计算机设备包括中央处理器CPU芯片、NPU芯片和存储器,所述CPU芯片、NPU芯片和所述存储器之间通过总线相连;
所述NPU芯片包括如权利要求7至12任一所述的DMA控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010711047.4A CN111782562B (zh) | 2020-07-22 | 2020-07-22 | 数据传输方法、dma控制器、npu芯片及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010711047.4A CN111782562B (zh) | 2020-07-22 | 2020-07-22 | 数据传输方法、dma控制器、npu芯片及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782562A true CN111782562A (zh) | 2020-10-16 |
CN111782562B CN111782562B (zh) | 2024-05-17 |
Family
ID=72763226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010711047.4A Active CN111782562B (zh) | 2020-07-22 | 2020-07-22 | 数据传输方法、dma控制器、npu芯片及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782562B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115327583A (zh) * | 2022-10-13 | 2022-11-11 | 北京凯芯微科技有限公司 | 一种接收机、信号处理装置及其信号处理方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6889278B1 (en) * | 2001-04-04 | 2005-05-03 | Cisco Technology, Inc. | Method and apparatus for fast acknowledgement and efficient servicing of interrupt sources coupled to high latency paths |
US20050289253A1 (en) * | 2004-06-24 | 2005-12-29 | Edirisooriya Samantha J | Apparatus and method for a multi-function direct memory access core |
CN101034384A (zh) * | 2007-04-26 | 2007-09-12 | 北京中星微电子有限公司 | 一种能同时进行读写操作的dma控制器及传输方法 |
CN101634975A (zh) * | 2009-08-20 | 2010-01-27 | 广东威创视讯科技股份有限公司 | 一种实现dma数据传输的方法及装置 |
CN109074335A (zh) * | 2017-12-29 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
CN109992542A (zh) * | 2017-12-29 | 2019-07-09 | 深圳云天励飞技术有限公司 | 一种数据搬运方法、相关产品及计算机存储介质 |
CN110309088A (zh) * | 2019-06-19 | 2019-10-08 | 北京百度网讯科技有限公司 | Zynq fpga芯片及其数据处理方法、存储介质 |
-
2020
- 2020-07-22 CN CN202010711047.4A patent/CN111782562B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6889278B1 (en) * | 2001-04-04 | 2005-05-03 | Cisco Technology, Inc. | Method and apparatus for fast acknowledgement and efficient servicing of interrupt sources coupled to high latency paths |
US20050289253A1 (en) * | 2004-06-24 | 2005-12-29 | Edirisooriya Samantha J | Apparatus and method for a multi-function direct memory access core |
CN101034384A (zh) * | 2007-04-26 | 2007-09-12 | 北京中星微电子有限公司 | 一种能同时进行读写操作的dma控制器及传输方法 |
CN101634975A (zh) * | 2009-08-20 | 2010-01-27 | 广东威创视讯科技股份有限公司 | 一种实现dma数据传输的方法及装置 |
CN109074335A (zh) * | 2017-12-29 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
CN109992542A (zh) * | 2017-12-29 | 2019-07-09 | 深圳云天励飞技术有限公司 | 一种数据搬运方法、相关产品及计算机存储介质 |
CN110309088A (zh) * | 2019-06-19 | 2019-10-08 | 北京百度网讯科技有限公司 | Zynq fpga芯片及其数据处理方法、存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115327583A (zh) * | 2022-10-13 | 2022-11-11 | 北京凯芯微科技有限公司 | 一种接收机、信号处理装置及其信号处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111782562B (zh) | 2024-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109726163B (zh) | 一种基于spi的通信系统、方法、设备和储存介质 | |
US20070220361A1 (en) | Method and apparatus for guaranteeing memory bandwidth for trace data | |
CN107943726A (zh) | 一种基于PCIe接口的数据传输系统及方法 | |
US20090157973A1 (en) | Storage controller for handling data stream and method thereof | |
JP5591729B2 (ja) | トレースデータの優先度の選択 | |
CN110046114B (zh) | 基于pcie协议的dma控制器及dma数据传输方法 | |
CN109558348B (zh) | 数据搬移方法、装置及系统 | |
CN113900974B (zh) | 一种存储装置、数据存储方法及相关设备 | |
US20180074983A1 (en) | Data transfer method, parallel processing device, and recording medium | |
US7143206B2 (en) | Method for controlling data transfer unit having channel control unit, storage device control unit, and DMA processor | |
CN104239252A (zh) | 数据存储系统的数据传输方法、装置及系统 | |
CN111782562B (zh) | 数据传输方法、dma控制器、npu芯片及计算机设备 | |
CN110515872B (zh) | 直接内存存取方法、装置、专用计算芯片及异构计算系统 | |
US10489322B2 (en) | Apparatus and method to improve performance in DMA transfer of data | |
JP2010211322A (ja) | ネットワークプロセッサ、受信コントローラ、及びデータ受信処理方法 | |
US6518973B1 (en) | Method, system, and computer program product for efficient buffer level management of memory-buffered graphics data | |
CN111221756B (zh) | 一种上位机高效下行数据传输的方法 | |
US20060236001A1 (en) | Direct memory access controller | |
CN113240103B (zh) | 神经网络池化电路 | |
CN115964317A (zh) | Dma控制方法、dma控制器及电子设备 | |
CN109992560B (zh) | 一种通信方法及通信系统 | |
CN118245410B (zh) | 数据操作方法、装置、设备、可读存储介质及程序产品 | |
CN118550857B (zh) | 一种数据传输方法、装置、电子设备以及存储介质 | |
CN114546907B (zh) | 一种数据发送和接收方法、装置、设备及存储介质 | |
CN111124987B (zh) | 一种基于pcie的数据传输控制系统和方法 |
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 |