CN110515872B - 直接内存存取方法、装置、专用计算芯片及异构计算*** - Google Patents

直接内存存取方法、装置、专用计算芯片及异构计算*** Download PDF

Info

Publication number
CN110515872B
CN110515872B CN201810488487.0A CN201810488487A CN110515872B CN 110515872 B CN110515872 B CN 110515872B CN 201810488487 A CN201810488487 A CN 201810488487A CN 110515872 B CN110515872 B CN 110515872B
Authority
CN
China
Prior art keywords
dma control
length
control block
output data
dma
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
Application number
CN201810488487.0A
Other languages
English (en)
Other versions
CN110515872A (zh
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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810488487.0A priority Critical patent/CN110515872B/zh
Priority to TW108105818A priority patent/TWI696949B/zh
Priority to PCT/CN2019/076252 priority patent/WO2019223383A1/zh
Publication of CN110515872A publication Critical patent/CN110515872A/zh
Application granted granted Critical
Publication of CN110515872B publication Critical patent/CN110515872B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

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控制块指针队列中读取DMA控制块指针。根据DMA控制块指针,在***内存中确定对应的DMA控制块。确定DMA控制块中的DMA控制信息和输入数据的总长度。根据DMA控制块指针以及总长度,将DMA控制信息和输入数据搬移至设备内存。对输入数据进行相应的计算,得到输出数据。将输出数据写入设备内存,并获取输出数据的长度。根据DMA控制信息以及输出数据的长度,将输出数据从设备内存搬移至DMA控制块。

Description

直接内存存取方法、装置、专用计算芯片及异构计算***
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种直接内存存取方法、装置、专用计算芯片及异构计算***。
背景技术
异构计算是指由通用中央处理器(Central Processing Unit,CPU)进行数据处理整体流程的控制,当需要进行专用计算时,通用CPU调用专用计算芯片进行计算。具体地,通用CPU需要调用直接内存存取(Direct Memory Access,DMA)方法(一种通过专用的硬件模块实现内存数据的搬移方法),将专用计算的输入数据从***内存传输到设备内存。专用计算芯片完成计算后,再把输出数据传输回***内存。由此可以看出,在一次异构计算中,需要分别进行两次的DMA传输:输入数据的传输和输出数据的传输。
具体地,输入数据的传输过程可以为:1)访问DMA描述符所在队列的指针,以读取输入数据的DMA描述符(用于描述输入数据的地址和长度)。2)访问输入数据的DMA描述符,以读取输入数据的地址和长度。3)根据输入数据的地址和长度,读取输入数据。输出数据的传输过程可以为:1)访问DMA描述符所在队列的指针,以读取输出数据的DMA描述符(用于描述输出数据的地址和长度)。2)访问输出数据的DMA描述符,以读取输出数据的地址和长度;3)根据输出数据的地址和长度,写入输出数据。综上,传统技术中,一次异构计算的过程需要执行六次访问操作。
发明内容
本说明书一个或多个实施例描述了一种直接内存存取方法、装置、专用计算芯片及异构计算***,可以减小DMA传输中的数据访问次数,从而可以提高异构计算的性能。
第一方面,提供了一种直接内存存取方法,包括:
从直接内存存取DMA控制块指针队列中读取DMA控制块指针;
根据所述DMA控制块指针,在***内存中确定对应的DMA控制块,所述DMA控制块的内容包括DMA控制信息和输入数据;所述***内存是指用于存储通用中央处理器CPU使用的数据的存储空间;
确定所述DMA控制信息和所述输入数据的总长度;
根据所述DMA控制块指针以及所述总长度,将所述DMA控制信息和所述输入数据搬移至设备内存;所述设备内存是指用于存储专用计算芯片的数据的存储空间;
对所述输入数据进行相应的计算,得到输出数据;
将所述输出数据写入所述设备内存;
获取所述输出数据的长度;
根据所述DMA控制信息以及所述输出数据的长度,将所述输出数据从所述设备内存搬移至所述DMA控制块。
第二方面,提供了一种专用计算芯片,包括:直接内存存取DMA长度寄存器、DMA控制块指针队列、DMA数据传输模块以及专用计算模块;
所述DMA长度寄存器,用于存储输入数据的长度以及输出数据的长度;
所述DMA控制块指针队列,用于存储多个DMA控制块指针;所述DMA控制块指针指向***内存中的DMA控制块;所述DMA控制块的内容包括DMA控制信息和输入数据;
DMA数据传输模块,用于根据所述输入数据的长度、所述DMA控制信息的长度以及所述DMA控制块指针,将所述DMA控制信息以及所述输入数据从***内存搬移至设备内存;还用于根据所述DMA控制信息以及所述输出数据的长度,将所述输出数据从所述设备内存搬移至所述***内存;
所述专用计算模块,用于对所述输入数据进行计算,并得到所述输出数据。
第三方面,提供了一种异构计算***,包括:通用中央处理器CPU、***内存、如上述第二方面提供的专用计算芯片和设备内存;
所述通用CPU,用于调用所述专用计算芯片进行异构计算;
所述***内存,用于存储所述通用CPU使用的数据;
所述设备内存,用于存储所述专用计算芯片所使用的数据。
第四方面,提供了一种直接内存存取装置,包括:
读取单元,用于从直接内存存取DMA控制块指针队列中读取DMA控制块指针;
确定单元,用于根据所述读取单元读取的所述DMA控制块指针,在***内存中确定对应的DMA控制块,所述DMA控制块的内容包括DMA控制信息和输入数据;所述***内存是指用于存储通用中央处理器CPU使用的数据的存储空间;
所述确定单元,还用于确定所述DMA控制信息和所述输入数据的总长度;
搬移单元,用于根据所述读取单元读取的所述DMA控制块指针以及所述确定单元确定的所述总长度,将所述DMA控制信息和所述输入数据搬移至设备内存;所述设备内存是指用于存储专用计算芯片的数据的存储空间;
计算单元,用于对所述输入数据进行相应的计算,得到输出数据;
写入单元,用于将所述计算单元计算的所述输出数据写入所述设备内存;
获取单元,用于获取所述输出数据的长度;
所述搬移单元,还用于根据所述DMA控制信息以及所述获取单元获取的所述输出数据的长度,将所述输出数据从所述设备内存搬移至所述DMA控制块。
本说明书一个或多个实施例提供的直接内存存取方法、装置、专用计算芯片及异构计算***,从DMA控制块指针队列中读取DMA控制块指针。根据DMA控制块指针,在***内存中确定对应的DMA控制块。确定DMA控制块中的DMA控制信息和输入数据的总长度。根据DMA控制块指针以及总长度,将DMA控制信息和输入数据搬移至设备内存。对输入数据进行相应的计算,得到输出数据。将输出数据写入设备内存,并获取输出数据的长度。根据DMA控制信息以及输出数据的长度,将输出数据从设备内存搬移至DMA控制块。
由此可以看出,本说明书提供的方案,在输入数据的传输过程,执行如下两次访问操作:第一次,访问DMA控制块指针队列,以读取DMA控制块指针。第二次,访问DMA控制块指针,以读取DMA控制信息和输入数据。相比传统的技术方案,减少了对DMA描述符的访问。在对输入数据进行相应的计算之后,可以直接根据DMA控制信息,将输出数据搬移至DMA控制块。也即输出数据的传输过程,只执行一次输出数据的访问,不需要再执行DMA描述符所在队列的指针以及输出数据的描述符的访问操作。综上,相比传统技术,两次的DMA传输可以减少3次访问操作。这可以大大提升数据的DMA传输效率,进而可以提高异构计算的性能。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本说明书提供的异构计算***结构示意图;
图2为本说明书一个实施例提供的直接内存存取方法流程图;
图3为本说明书一个实施例提供的直接内存存取装置示意图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
本说明书一个实施例提供的直接内存存取方法可以应用于如图1所示的异构计算***中,该异构计算***可以包括:通用CPU10、***内存20、专用计算芯片30以及设备内存40,其中,通用CPU10和专用计算芯片30也可以称为异构计算***中的两个计算单元。
通用CPU10用于实现异构计算的数据处理主要流程的控制。具体包括:a.异构计算输入数据的预处理和准备。b.调用专用计算芯片进行异构计算。c.查询异构计算结果(也称输出数据)返回。d.进行异构计算输出数据的后处理和输出结果。
***内存20用于存储通用CPU10使用的数据。在一种实现方式中,其可以以DMA控制块(一种数据结构)的形式来存储使用的数据,该DMA控制块在***内存20中占用一个物理上连续的地址空间。以使用的数据包括输入数据和输出数据为例来说,该DMA控制块的内容可以包括DMA控制信息、输入数据和输出数据。其中,输入数据所占用的空间也可以称为输入数据块。同样,输出数据所占用的空间也可以称为输出数据块。具体地,通用CPU10可以在进行异构计算时,根据当前异构计算方法,确定输入数据的长度和输出数据的长度。需要说明的是,在本说明书中,对一次特定的异构计算,其对应的输入数据以及输入数据的长度和输出数据的长度通常是确定的。之后可以构造出DMA控制信息,具体的构造过程后续进行说明。由此,就得到了DMA控制块的部分内容(DMA控制信息和输入数据)。在得到DMA控制块的部分内容之后,通用CPU10可以将该部分内容写入***内存20的一个物理上连续的地址空间内。可以理解的是,由于输出数据的长度也是确定的,所以,在上述部分内容之后通常会连续地预留上述长度的地址空间,以用于写入输出数据。***内存20中写入部分内容的地址空间与预留的地址空间就构成了上述DMA控制块。总之,针对一次异构计算,在***内存20中就可以构成一个DMA控制块。
需要说明的是,上述DMA控制信息可以包括:输入数据的偏移地址、输出数据的偏移地址以及计算完成标志。其中,输入数据的偏移地址可以占用32个bit位(即4个字节),其可以是指输入数据所占用的空间(或者输入数据块)相对DMA控制块起始地址的偏移量。具体地,根据DMA控制块起始地址以及该偏移地址,可以确定输入数据在***内存20中的实际地址。输出数据的偏移地址的定义与输入数据的偏移地址的定义相同。计算完成标志可以占用1个bit位(扩展为4个字节),其可以是在异构计算前被通用CPU10清0。在异构计算完成后,专用计算芯片30将该标志位改写为1。CPU10通过轮询该计算完成标志,确认异构计算是否完成。
专用计算芯片30用于配合通用CPU完成专用计算(如,矩阵乘以及大数模乘等)功能。该专用计算芯片30例如可以为现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片,专用集成电路(Appl icat ion Specific Integrated Circuit,ASIC)芯片,图形处理器(Graphics Process ing Unit,GPU)芯片等。通用CPU10计算效率较低,使用专用计算芯片30进行计算,性价比更高。
设备内存40用于存储专用计算芯片30的数据。具体地,当开始进行异构计算时,专用计算芯片30可以从设备内存40中读取输入数据。当异构计算完成时,可以将输出数据写入设备内存40。
图1中,专用计算芯片30具体可以包括:DMA长度寄存器31、DMA控制块指针队列32、DMA数据传输模块33以及专用计算模块34。
DMA长度寄存器31用于存储输入数据的长度以及输出数据的长度。通常对于一次特定的异构计算,输入数据的长度以及输出数据的长度是固定的。也即通用CPU10可以根据当前所执行的异构计算方法来确定上述长度。
DMA控制块指针队列32用于存储多个DMA控制块指针,该DMA控制块指针指向***内存20中的DMA控制块,其可以占用32bit位。具体地,在***内存20中每构成一个DMA控制块,通用CPU10就可以向DMA控制块指针队列32写入与该DMA控制块对应的DMA控制块指针。由于针对一次异构计算就可以构成一个DMA控制块,所以DMA控制块指针也是与一次异构计算相对应的。当异构处理***中有多个进程处理任务时,DMA控制块指针队列32中的多个DMA控制块指针就可以被同时读取,由此可以实现多次异构计算可以并行进行,这可以大大提高异构计算的效率。需要说明的是,此处的多次异构计算属于同一类型,如,均为加密计算等。
DMA数据传输模块33用于根据输入数据的长度、DMA控制信息的长度以及DMA控制块指针,将DMA控制信息以及输入数据从***内存20搬移至设备内存40;还用于根据DMA控制信息以及输出数据的长度,将输出数据从设备内存40搬移至***内存20。
专用计算模块34用于实现专用计算功能。具体地,用于对输入数据进行计算,并得到输出数据。
如前所述,图1中的通用CPU10可以调用专用计算芯片30进行异构计算。为了提高异构计算的性能,本说明书对直接内存存取方法进行了改进。在执行本说明书提供的用于异构计算的直接内存存取方法之前,可以先执行如下步骤:
1)通用CPU10根据当前异构计算方法,确定输入数据的长度和输出数据的长度,并把输入数据的长度和输出数据的长度写入DMA长度寄存器31。
2)通用CPU10准备异构计算的输入数据,并构造DMA控制信息。由上述内容可知,DMA控制信息可以包括:输入数据的偏移地址、输出数据的偏移地址以及计算完成标志。当DMA控制块中的内容按照DMA控制信息、输入数据以及输出数据存放时,对输入数据的偏移地址,可以根据DMA控制信息的长度来确定。由于DMA控制信息的长度=输入数据的偏移地址的长度+输出数据的偏移地址的长度+计算完成标志的长度=4+4+4=12。因此,输入数据的偏移地址可以为:12(此处为10进制表示方法)。对输出数据的偏移地址,可以根据DMA控制信息与输入数据的总长度来确定。假设输入数据的长度为100个字节,那么输出数据的偏移地址为:12+100=112(此处为10进制表示方法)。在完成上述构造过程之后,可以将DMA控制信息以及输入数据写入***内存20的一个物理上连续的地址空间内,并将计算完成标志清0。
可以理解的是,由于输出数据的长度也是确定的,所以,在完成上述写入过程之后可以连续地预留上述长度的地址空间,以用于写入输出数据。***内存20中写入数据的地址空间与预留的地址空间就构成了一个DMA控制块。
3)通用CPU10向DMA控制块指针队列32中写入DMA控制块指针,该DMA控制块指针指向构成的DMA控制块的起始地址。
需要说明的是,针对多次异构计算,当该多次异构计算属于同一类型(如,均为加密计算)时,上述步骤1)可以只执行一次,而步骤2)和步骤3)则可以是根据异构计算的次数循环多次执行的。
可以理解的是,在DMA控制块指针队列32中写入DMA控制块指针之后,就可以执行本说明书提供的用于异构计算的直接内存存取方法。
图2为本说明书一个实施例提供的直接内存存取方法流程图。所述方法的执行主体可以为图1中的专用计算芯片30。如图2所示,所述方法具体可以包括:
步骤210,从DMA控制块指针队列中读取DMA控制块指针。
此处的DMA控制块指针指向DMA控制块的起始地址,从而根据该指针可以直接对DMA控制块的内容进行访问,由此可以减少对***内存20的访问次数,从而可以降低DMA传输延迟。
具体地,专用计算芯片30可以轮询检查DMA控制块指针队列32是否为空。如果不为空,则可以从队列的头部读取DMA控制块指针。本说明书提供的DMA控制块指针队列32由于可以同时存放多个DMA控制块指针,所以可以更加方便的支持DMA异步操作,更加方便的支持多进程各自独立进行DMA操作,提高了DMA的传输效率。
步骤220,根据DMA控制块指针,在***内存中确定对应的DMA控制块。
以图1为例来说,当读取DMA控制块指针A时,可以确定DMA控制块A;当读取DMA控制块指针B时,可以确定DMA控制块B。可以理解的是,在该步骤中读取到的DMA控制块的内容只包括DMA控制信息和输入数据。
步骤230,确定DMA控制信息和输入数据的总长度。
根据上述内容可知,本说明书中的DMA控制信息可以包括:输入数据的偏移地址、输出数据的偏移地址以及计算完成标志,且其具有固定长度。该固定长度为上述三者的长度之和。在DMA控制信息的长度固定时,上述总长度的确定过程可以为:从DMA长度寄存器31中读取输入数据的长度。根据固定长度以及输入数据的长度,确定总长度。
步骤240,根据DMA控制块指针以及总长度,将DMA控制信息和输入数据搬移至设备内存。
此处可以是由DMA数据传输模块33根据DMA控制块指针以及总长度,将DMA控制信息和输入数据搬移至设备内存40。
在一种实现方式中,在执行上述搬移操作之前,可以先在设备内存40中划分一块物理上连续的地址空间。之后,可以根据DMA控制块指针以及总长度,从对应的DMA控制块中读取DMA控制信息和输入数据。此处,由于DMA控制块在***内存20中占用物理上连续的地址空间,所以上述读取的操作也可以理解为是一种连读的读取操作。将DMA控制信息和输入数据写入设备内存40中预先划分的物理上连续的地址空间。可以理解的是,在执行上述写入操作之后,DMA控制信息和输入数据在设备内存40中的起始地址是确定的。
步骤250,对输入数据进行相应的计算,得到输出数据。
此处,可以是调用专用计算模块34对输入数据进行相应的计算。具体地,可以根据步骤240中确定的起始地址以及DMA控制信息中输入数据的偏移地址,确定输入数据在设备内存40的实际地址。之后,可以根据该实际地址,从设备内存40中读取该数据输入,并调用专用计算模块34对输入数据进行相应的计算。
步骤260,将输出数据写入设备内存。
具体地,可以根据步骤240中确定的起始地址以及DMA控制信息中输出数据的偏移地址,确定输出数据在设备内存40的实际地址。之后,可以将输出数据写入设备内存40中该实际地址对应的存储空间。
步骤270,获取输出数据的长度。
如,可以是从DMA长度寄存器31中读取输出数据的长度。
步骤280,根据DMA控制信息以及输出数据的长度,将输出数据从设备内存搬移至DMA控制块。
具体地,可以是根据DMA控制信息中的输出数据的偏移地址以及输出数据的长度,将输出数据从设备内存40搬移至DMA控制块。该搬移过程具体可以为:获取DMA控制信息和输入数据在设备内存40的起始地址。根据偏移地址以及起始地址,确定输出数据在设备内存40的第一实际地址。根据偏移地址以及DMA控制块指针,确定输出数据在DMA控制块的第二实际地址。根据第一实际地址以及输出数据的长度,从设备内存40中读取输出数据。将输出数据写入DMA控制块中第二实际地址对应的位置。因为DMA控制块位于***内存20中,所以该写入的步骤也可以为:将输出数据写入***内存20中第二实际地址对应的位置。
在执行完成步骤280之后,专用计算芯片30可以对DMA控制信息中的计算完成标志进行改写,如,可以将计算完成标志改写为1。通用CPU10可以轮询计算完成标志,当计算完成标志为1时,表示该异构计算完成,可以使用***内存20中的输出数据。
综上,本说明书实施例提供的直接内存存取方法,可以避免单独的输出数据的DMA传输对***内存的访问,利用从***内存中获取输入数据的同时获取了输出数据的偏移地址。从而在异构计算完成后,直接根据该偏移地址进行输出数据的搬移。避免了通用CPU在其中的操作,减少了整个异构计算的延迟。此外,本说明书提供的DMA块指针队列每次只需要写入一个32bit的DMA块指针,数据量很小,直接对应一个通用CPU的原子写操作,提高了多进程进行并发操作的效率。
与上述直接内存存取方法对应地,本说明书一个实施例还提供的一种直接内存存取装置,如图3所示,该装置可以包括:
读取单元301,用于从直接内存存取DMA控制块指针队列中读取DMA控制块指针。
确定单元302,用于根据读取单元301读取的DMA控制块指针,在***内存中确定对应的DMA控制块,该DMA控制块的内容包括DMA控制信息和输入数据。上述***内存是指用于存储通用中央处理器CPU使用的数据的存储空间。
确定单元302,还用于确定DMA控制信息和输入数据的总长度。
可选地,DMA控制信息可以具有固定长度。确定单元302具体可以用于:
从DMA长度寄存器中读取输入数据的长度。该输入数据的长度是由通用CPU根据当前所执行的异构计算方法确定的。
根据固定长度以及输入数据的长度,确定总长度。
搬移单元303,用于根据读取单元301读取的DMA控制块指针以及确定单元32确定的总长度,将DMA控制信息和输入数据搬移至设备内存。该设备内存是指用于存储专用计算芯片的数据的存储空间。
此处的搬移单元303可以由图1中的DMA数据传输模块33实现。
计算单元304,用于对输入数据进行相应的计算,得到输出数据。
此处的计算单元304可以由图1中的专用计算模块34实现。
写入单元305,用于将计算单元304计算的输出数据写入设备内存。
获取单元306,用于获取输出数据的长度。
搬移单元303,还用于根据DMA控制信息以及获取单元306获取的输出数据的长度,将输出数据从设备内存搬移至DMA控制块。
可选地,上述DMA控制信息可以包括输出数据的偏移地址。
搬移单元303具体可以用于:
根据输出数据的偏移地址以及输出数据的长度,将输出数据从设备内存搬移至DMA控制块。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的直接内存存取装置,读取单元301从直接内存存取DMA控制块指针队列中读取DMA控制块指针。确定单元302根据DMA控制块指针,在***内存中确定对应的DMA控制块。确定单元302,还用于确定DMA控制信息和输入数据的总长度。搬移单元303根据DMA控制块指针以及总长度,将DMA控制信息和输入数据搬移至设备内存。计算单元304对输入数据进行相应的计算,得到输出数据。写入单元305将输出数据写入设备内存。获取单元306获取输出数据的长度。搬移单元303根据DMA控制信息以及输出数据的长度,将输出数据从设备内存搬移至DMA控制块。由此,以提高异构计算的性能。
需要说明的是,本说明书实施例提供的直接内存存取装置可以为图1中专用计算芯片30中的一个模块或者单元。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本说明书的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的具体实施方式而已,并不用于限定本说明书的保护范围,凡在本说明书的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的保护范围之内。

Claims (8)

1.一种直接内存存取方法,其特征在于,包括:
从直接内存存取DMA控制块指针队列中读取DMA控制块指针;
根据所述DMA控制块指针,在***内存中确定对应的DMA控制块,所述DMA控制块的内容包括DMA控制信息和输入数据;所述***内存是指用于存储通用中央处理器CPU使用的数据的存储空间;
确定所述DMA控制信息和所述输入数据的总长度;
根据所述DMA控制块指针以及所述总长度,将所述DMA控制信息和所述输入数据搬移至设备内存;所述设备内存是指用于存储专用计算芯片的数据的存储空间;
对所述输入数据进行相应的计算,得到输出数据;
将所述输出数据写入所述设备内存;
获取所述输出数据的长度;
根据所述DMA控制信息以及所述输出数据的长度,将所述输出数据从所述设备内存搬移至所述DMA控制块。
2.根据权利要求1所述的方法,其特征在于,所述DMA控制信息包括所述输出数据的偏移地址;
所述根据所述DMA控制信息以及所述输出数据的长度,将所述设备内存的所述输出数据搬移到所述DMA控制块,包括:
根据所述输出数据的偏移地址以及所述输出数据的长度,将所述输出数据从所述设备内存搬移至所述DMA控制块。
3.根据权利要求1所述的方法,其特征在于,所述DMA控制信息具有固定长度;所述确定所述DMA控制信息和所述输入数据的总长度,包括:
从DMA长度寄存器中读取所述输入数据的长度;所述输入数据的长度是由所述通用CPU根据当前所执行的异构计算方法确定的;
根据所述固定长度以及所述输入数据的长度,确定所述总长度。
4.一种专用计算芯片,其特征在于,包括:直接内存存取DMA长度寄存器、DMA控制块指针队列、DMA数据传输模块以及专用计算模块;
所述DMA长度寄存器,用于存储输入数据的长度以及输出数据的长度;
所述DMA控制块指针队列,用于存储多个DMA控制块指针;所述DMA控制块指针指向***内存中的DMA控制块;所述DMA控制块的内容包括DMA控制信息和输入数据;所述***内存用于存储通用CPU使用的数据;DMA数据传输模块,用于根据所述输入数据的长度、所述DMA控制信息的长度以及所述DMA控制块指针,将所述DMA控制信息以及所述输入数据从***内存搬移至设备内存;还用于根据所述DMA控制信息以及所述输出数据的长度,将所述输出数据从所述设备内存搬移至所述***内存;所述设备内存用于存储专用计算芯片所使用的数据;
所述专用计算模块,用于对所述输入数据进行计算,并得到所述输出数据。
5.一种异构计算***,其特征在于,包括:通用中央处理器CPU、***内存、如权利要求4所述的专用计算芯片和设备内存;
所述通用CPU,用于调用所述专用计算芯片进行异构计算;
所述***内存,用于存储所述通用CPU使用的数据;
所述设备内存,用于存储所述专用计算芯片所使用的数据。
6.一种直接内存存取装置,其特征在于,包括:
读取单元,用于从直接内存存取DMA控制块指针队列中读取DMA控制块指针;
确定单元,用于根据所述读取单元读取的所述DMA控制块指针,在***内存中确定对应的DMA控制块,所述DMA控制块的内容包括DMA控制信息和输入数据;所述***内存是指用于存储通用中央处理器CPU使用的数据的存储空间;
所述确定单元,还用于确定所述DMA控制信息和所述输入数据的总长度;
搬移单元,用于根据所述读取单元读取的所述DMA控制块指针以及所述确定单元确定的所述总长度,将所述DMA控制信息和所述输入数据搬移至设备内存;所述设备内存是指用于存储专用计算芯片的数据的存储空间;
计算单元,用于对所述输入数据进行相应的计算,得到输出数据;
写入单元,用于将所述计算单元计算的所述输出数据写入所述设备内存;
获取单元,用于获取所述输出数据的长度;
所述搬移单元,还用于根据所述DMA控制信息以及所述获取单元获取的所述输出数据的长度,将所述输出数据从所述设备内存搬移至所述DMA控制块。
7.根据权利要求6所述的装置,其特征在于,所述DMA控制信息包括所述输出数据的偏移地址;
所述搬移单元具体用于:
根据所述输出数据的偏移地址以及所述输出数据的长度,将所述输出数据从所述设备内存搬移至所述DMA控制块。
8.根据权利要求6所述的装置,其特征在于,所述DMA控制信息具有固定长度;所述确定单元具体用于:
从DMA长度寄存器中读取所述输入数据的长度;所述输入数据的长度是由所述通用CPU根据当前所执行的异构计算方法确定的;
根据所述固定长度以及所述输入数据的长度,确定所述总长度。
CN201810488487.0A 2018-05-21 2018-05-21 直接内存存取方法、装置、专用计算芯片及异构计算*** Active CN110515872B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201810488487.0A CN110515872B (zh) 2018-05-21 2018-05-21 直接内存存取方法、装置、专用计算芯片及异构计算***
TW108105818A TWI696949B (zh) 2018-05-21 2019-02-21 直接記憶體存取方法、裝置、專用計算晶片及異構計算系統
PCT/CN2019/076252 WO2019223383A1 (zh) 2018-05-21 2019-02-27 直接内存存取方法、装置、专用计算芯片及异构计算***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810488487.0A CN110515872B (zh) 2018-05-21 2018-05-21 直接内存存取方法、装置、专用计算芯片及异构计算***

Publications (2)

Publication Number Publication Date
CN110515872A CN110515872A (zh) 2019-11-29
CN110515872B true CN110515872B (zh) 2020-07-31

Family

ID=68616539

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810488487.0A Active CN110515872B (zh) 2018-05-21 2018-05-21 直接内存存取方法、装置、专用计算芯片及异构计算***

Country Status (3)

Country Link
CN (1) CN110515872B (zh)
TW (1) TWI696949B (zh)
WO (1) WO2019223383A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021052391A1 (zh) 2019-09-18 2021-03-25 华为技术有限公司 一种构建中间表达的方法、编译器和服务器
CN111190842B (zh) * 2019-12-30 2021-07-20 Oppo广东移动通信有限公司 直接存储器访问、处理器、电子设备和数据搬移方法
CN113342721B (zh) * 2021-07-06 2022-09-23 无锡众星微***技术有限公司 存储控制器dma设计方法

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953538A (en) * 1996-11-12 1999-09-14 Digital Equipment Corporation Method and apparatus providing DMA transfers between devices coupled to different host bus bridges
GB2359906A (en) * 2000-02-29 2001-09-05 Virata Ltd DMA data transfer
US6904473B1 (en) * 2002-05-24 2005-06-07 Xyratex Technology Limited Direct memory access controller and method of filtering data during data transfer from a source memory to a destination memory
CN1851678A (zh) * 2006-06-08 2006-10-25 杭州华为三康技术有限公司 一种在内存和数字信号处理器之间传送数据的方法
CN1945557A (zh) * 2005-10-07 2007-04-11 国际商业机器公司 处理页面复制期间的dma操作的存储控制器和方法
CN102467473A (zh) * 2010-11-03 2012-05-23 Tcl集团股份有限公司 一种在用户空间和内核之间传输数据的方法和装置
US8392629B1 (en) * 2010-06-29 2013-03-05 Qlogic, Corporation System and methods for using a DMA module for a plurality of virtual machines
CN103377170A (zh) * 2012-04-26 2013-10-30 上海宝信软件股份有限公司 异构处理器间spi高速双向对等数据通信***
CN103500149A (zh) * 2013-09-29 2014-01-08 华为技术有限公司 直接内存访问控制器和直接内存访问控制方法
CN105512005A (zh) * 2015-12-12 2016-04-20 中国航空工业集团公司西安航空计算技术研究所 控制/远程节点与总线监控节点同步工作的电路及方法
CN105656805A (zh) * 2016-01-20 2016-06-08 中国人民解放军国防科学技术大学 一种基于控制块预分配的分组接收方法和装置
CN106339338A (zh) * 2016-08-31 2017-01-18 天津国芯科技有限公司 一种可提高***性能的数据传输方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1214592C (zh) * 2002-08-06 2005-08-10 华为技术有限公司 多通道数据直接内存访问***和方法
CN100495373C (zh) * 2003-12-05 2009-06-03 联发科技股份有限公司 虚拟先进先出直接存储器存取装置
US9239796B2 (en) * 2011-05-24 2016-01-19 Ixia Methods, systems, and computer readable media for caching and using scatter list metadata to control direct memory access (DMA) receiving of network protocol data
CN104317754B (zh) * 2014-10-15 2017-03-15 中国人民解放军国防科学技术大学 面向异构计算***的跨步数据传输优化方法
CN106569736B (zh) * 2015-10-10 2018-10-19 北京忆芯科技有限公司 NVMe协议处理器及其处理方法

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953538A (en) * 1996-11-12 1999-09-14 Digital Equipment Corporation Method and apparatus providing DMA transfers between devices coupled to different host bus bridges
GB2359906A (en) * 2000-02-29 2001-09-05 Virata Ltd DMA data transfer
US6904473B1 (en) * 2002-05-24 2005-06-07 Xyratex Technology Limited Direct memory access controller and method of filtering data during data transfer from a source memory to a destination memory
CN1945557A (zh) * 2005-10-07 2007-04-11 国际商业机器公司 处理页面复制期间的dma操作的存储控制器和方法
CN1851678A (zh) * 2006-06-08 2006-10-25 杭州华为三康技术有限公司 一种在内存和数字信号处理器之间传送数据的方法
US8392629B1 (en) * 2010-06-29 2013-03-05 Qlogic, Corporation System and methods for using a DMA module for a plurality of virtual machines
CN102467473A (zh) * 2010-11-03 2012-05-23 Tcl集团股份有限公司 一种在用户空间和内核之间传输数据的方法和装置
CN103377170A (zh) * 2012-04-26 2013-10-30 上海宝信软件股份有限公司 异构处理器间spi高速双向对等数据通信***
CN103500149A (zh) * 2013-09-29 2014-01-08 华为技术有限公司 直接内存访问控制器和直接内存访问控制方法
CN105512005A (zh) * 2015-12-12 2016-04-20 中国航空工业集团公司西安航空计算技术研究所 控制/远程节点与总线监控节点同步工作的电路及方法
CN105656805A (zh) * 2016-01-20 2016-06-08 中国人民解放军国防科学技术大学 一种基于控制块预分配的分组接收方法和装置
CN106339338A (zh) * 2016-08-31 2017-01-18 天津国芯科技有限公司 一种可提高***性能的数据传输方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A Processor-DMA-Based Memory Copy Hardware Accelerator;Wen Su 等;《2011 Sixth IEEE International Conference on Networking, Architecture, and Storage》;20111231;225-229 *
MCS-DMA:一种面向SoC内DMA传输的内存控制器优化设计;黄侃 等;《电子学报》;20100331;第38卷(第3期);598-604 *

Also Published As

Publication number Publication date
TWI696949B (zh) 2020-06-21
TW202004494A (zh) 2020-01-16
WO2019223383A1 (zh) 2019-11-28
CN110515872A (zh) 2019-11-29

Similar Documents

Publication Publication Date Title
CN110515872B (zh) 直接内存存取方法、装置、专用计算芯片及异构计算***
CN114356223B (zh) 存储器的访问方法及装置、芯片、电子设备
EP3657337B1 (en) Method, apparatus, device and storage medium for accessing static random access memory
CN112214240B (zh) 主机输出输入命令的执行装置及方法及计算机可读取存储介质
CN102446087B (zh) 指令预取方法与预取装置
CN112100090A (zh) 数据访问请求处理方法、装置、介质及内存映射控制器
CN117453594A (zh) 数据传输装置及方法
WO2022068328A1 (zh) 数据迁移的方法、装置、处理器和计算设备
US20020169900A1 (en) Direct memory access controller, and direct memory access control method
CN117312330B (zh) 基于便签式存储的向量数据聚集方法、装置及计算机设备
CN113918233A (zh) 一种ai芯片控制方法、电子设备及ai芯片
CN101751356B (zh) 用于改进直接存储器存取传送效率的方法、***和装置
CN111158757A (zh) 并行存取装置和方法以及芯片
CN111694513A (zh) 包括循环指令存储器队列的存储器器件和方法
CN111782562B (zh) 数据传输方法、dma控制器、npu芯片及计算机设备
CN115237349A (zh) 数据读写控制方法、控制装置、计算机存储介质和电子设备
CN116150041A (zh) 空间分配方法、装置、电子设备和计算机可读存储介质
CN109522125B (zh) 一种矩阵乘积转置的加速方法、装置及处理器
CN113220608A (zh) 一种NVMe命令处理器及其处理方法
CN107807888B (zh) 一种用于soc架构的数据预取***及其方法
CN112035380A (zh) 一种数据处理方法、装置、设备及可读存储介质
CN116804915B (zh) 基于存储器的数据交互方法、处理器、设备以及介质
CN117389685B (zh) 虚拟机热迁移标脏方法及其装置、后端设备、芯片
CN116185497B (zh) 命令解析方法、装置、计算机设备和存储介质
CN115658625B (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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200927

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200927

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.