CN117453594A - 数据传输装置及方法 - Google Patents
数据传输装置及方法 Download PDFInfo
- Publication number
- CN117453594A CN117453594A CN202310979922.0A CN202310979922A CN117453594A CN 117453594 A CN117453594 A CN 117453594A CN 202310979922 A CN202310979922 A CN 202310979922A CN 117453594 A CN117453594 A CN 117453594A
- Authority
- CN
- China
- Prior art keywords
- data
- instruction
- dimensional data
- address
- 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.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 title claims abstract description 18
- 230000015654 memory Effects 0.000 claims abstract description 122
- 238000006243 chemical reaction Methods 0.000 claims description 20
- 238000012546 transfer Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 5
- 238000013501 data transformation Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004148 unit process Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 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
- G06F13/282—Cycle stealing DMA
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本公开提供了一种数据传输装置及方法,其中,该装置包括:寄存器模块,和直接内存访问控制模块。虽然现有的简单的一维直接内存访问指令得到了广泛的应用,但用处更大的则是二维直接内存访问指令,特别是在图像、视频等应用中。通过本公开的装置及方法,可以解决现有技术中存在的二维数据传送效率低下、多组数据交替传送时缺失过多的问题。
Description
技术领域
本发明涉及计算机科学技术领域,尤其涉及一种数据传输装置及方法。
背景技术
直接内存访问(Direct Memory Access,DMA)是计算机科学中的一种内存访问技术。它允许某些硬件子***(外存储器)独立地直接读写***内存,而不需CPU介入处理。在同等程度的处理器负担下,DMA是一种快速的数据传送方式。有时,数据除了往来处理器和外存储器之间之外,还需要在多个存储空间之间转移。我们并不希望让处理器在这种情况下也忙于数据拷贝,而DMA就可以负担起此类工作,减少了***资源的占用。此外,DMA的传送能力并不总是用来移动数据,也可以用于将存储在外存储器中的将要运行的代码提前送入内存,加快执行效率。
DMA控制器需要指令支持,才能正确执行处理器布置的多种任务。对于任何类型的DMA传输,都需要规定源端地址、目标端地址和待传送数据的大小。这种类型的事务代表了简单的一维(“1D”)统一“跨度”(unity stride)的传输。不过,虽然1D DMA得到了广泛的应用,但用处更大的则是二维(2D)DMA,特别是在图像、视频等应用中。2D DMA可以简单地理解为一个嵌套的循环,亦即对一个矩阵的行和列分别操作,最终完成遍历,每一层循环都相当于一个1D DMA。
而更复杂的DMA装置往往会同时与多个外存储器相连,一段时间内CPU需要交替从这些外存储器中获取多组数据,这些数据是根据任务所需不时切换的,但在同组内又是连续的。这时DMA装置需要正确识别相关指令,确保同组数据的缓存尽可能命中,不受其他组的数据传送的影响。
发明内容
本发明实施例提供的一种数据传输装置及方法,在图像、视频处理的应用场景下极大地提升了数据传送的效率和规范程度,弥补了数据密集型计算任务的I/O短板。
第一方面,本申请实施例提供了一种数据传输装置,包括:
寄存器模块,用于存储二维数据在源存储器中存储的源地址、所述二维数据在目的存储器中存储的目的地址和每次传输二维数据的数据量等参数;
DMA控制模块,用于接收到DMA指令;
所述DMA控制模块,还用于根据所述DMA指令,从所述寄存器模块中获取出待传输二维数据的源地址和待传输二维数据的目的地址;
所述DMA控制模块,还用于根据所述待传输二维数据的源地址从所述源存储器中获取所述待传输二维数据,并将所述待传输二维数据传输至所述目的存储器中所述目的地址对应的存储空间。
其中,所述源存储器为所述二维数据的存储空间,所述目的存储器用于存储传输后的二维数据。
其中,所述将所述待传输二维数据传输至所述目的存储器中所述目的地址对应的存储空间包括:
所述DMA控制模块从所述寄存器模块中获取所述每次传输二维数据的数据量;
根据所述每次传输二维数据的数据量将所述待传输二维数据传输至所述目的存储器中所述目的地址对应的存储空间。
在一种可行的实施例中,上述DMA控制模块从所述DMA指令获取所述待传输二维数据的源地址、待传输二维数据的目的地址和每次传输二维数据的数据量。
可选地,所述DMA指令为载入/存储结构的指令。
可选地,所述DMA指令为定长指令。
可选地,所述寄存器模块包括:
标量寄存器堆,用于存储数据规模、二维数据的源地址、二维数据的目的地址、二维数据在原地址的摆放间隔大小、二维数据在目的地址的摆放间隔大小、访存次数和数据变换规模;
其中所述数据规模为二维数据的每次传输的数据量,数据变换规模是二维数据需要进行数据变换的数据量。
可选地,所述源地址和目的地址还标记所属的存储空间的类型;若该存储空间为外存储器,则原地址和目的地址还标记所属的流;若该存储空间为内存储器,则原地址和目的地址还标记所属内存储器的子模块;
其中,所述流为多组数据交替传送时的分组。
可选地,所述DMA指令包括但不限定于数据传送(Data Transfer,DTT)指令和地址跳转(Address Jump,ADJ)指令。
可选地,所述DMA指令包括一个操作码和五个操作域,所述操作码用于指示该DMA指令的功能;所述五个操作域分别为第一操作域、第二操作域、第三操作域、第四操作域和第五操作域;
其中,所述第一操作域用于指示二维数据的源地址所属的存储空间,所述第二操作域用于指示二维数据的源地址,所述第三操作域用于指示二维数据的目的地址所属的存储空间,所述第四操作域用于指示二维数据的目的地址,所述第五操作域用于指示二维数据的每次所传输的数据量;
可选地,所述所述ADJ指令包括两个操作域,分别为第六操作域和第七操作域;所述第六操作域用于指示地址寄存器的编号,所述第七操作域用于指示跳转值寄存器的编号。
其中,所述地址寄存器用于存储所述源地址,所述跳转值寄存器用于存储源地址的跳转值。
可选地,所述数据传输装置还包括:
数据缓存单元,用于临时存储根据所述源地址从源存储器中读取的二维数据。
可选地,所述数据缓存单元包括:
高速暂存存储器,用于支持不同大小的二维数据的传输,并写入所述目的存储器中所述目的地址对应的存储空间。
可选地,所述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指令,在图像、视频处理的应用场景下极大地提升了数据传送的效率和规范程度,弥补了数据密集型计算任务的I/O短板。同时,该装置还支持多组数据相互独立地交替传送,提升了并行数据处理任务中的缓存命中率。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据传输装置的结构示意图;
图2为本发明一优选实施例的具体结构示意图;
图3为本发明实施例的步骤流程图;
图4为本发明实施例的指令集的格式示意图;
图5为本发明实施例的DMA控制模块执行2D DMA命令的流水线时空图。
具体实施方式
基于上述技术问题,本申请提供了一种数据传输装置,解决现有技术中存在的二维数据传送效率低下、多组数据交替传送时缺失过多的问题,从而使得2D DMA更广泛、高效地应用在图像、视频等应用中。
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请作进一步的详细说明。
参见图1,图1为本申请实施例提供的一种数据传输装置的结构示意图。如图1所示,该数据传输装置包括寄存器模块和DMA控制模块。
其中,上述寄存器模块,用于存储二维数据的源地址、二维数据的目的地址和每次传输二维数据的数据量等参数。
其中,上述二维数据可为图像数据或者视频数据。
具体地,上述二维数据的源地址为该二维数据在源存储器的中的存储地址,上述二维数据的目的地址为指示该二维数据被传输至的存储空间对应的地址。上述二维数据的传输量为上述数据传输装置传输上述二维数据时每次传输的数据量。
需要说明的是,上述源存储器为上述二维数据的存储空间,上述目的存储器用于存储传输后的二维数据。上述源存储器可为内寄存器或者外部寄存器,上述目的存储器可为内寄存器或者外部寄存器,且该源存储器和目的存储器可为同一存储空间,也可为不同的存储空间。
上述寄存器模块包括:
标量寄存器堆包括提供二维数据传输过程中所需的地址寄存器、存储二维数据规模的寄存器和存储数据量等参数的寄存器。标量寄存器堆可以用于存储二维数据地址、二维数据规模等信息。
其中,二维数据地址为数据在内存或外存储器中存储的地址,即上述二维数据的源地址和目的地址;二维数据规模为二维数据在内存或外存储器中存储的行、列大小;还可为上述二维数据在计算机中存储的字节数、比特数等。
需要说明的是,上述二维数据为图像数据或者视频数据,但是最终以图像数据的形式存储于源存储器中。图像数据存储于源存储器中的最小单位为图像数据的一个像素点,以RGB的形式。对于图像数据,可以看成M行N列的像素点。
上述DMA控制模块,用于接收DMA指令,并根据DMA指令,从上述寄存器模块中获取二维数据的源地址,目的地址和每次传输二维数据的数据量;或者从上述DMA指令中获取上述二维数据的源地址,目的地址和每次传输二维数据的数据量;
根据上述二维数据的源地址,从上述源存储器中获取上述二维数据;
根据上述每次传输二维数据的数据量将上述二维数据传输至目的存储器中上述目的地址对应存储空间。
如图2所示,上述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指令集采用载入/存储(Load/Store)结构,读写单元不会对内存中的数据进行操作。优选的,DMA指令集采用定长指令。
本申请实施例的另一方面,还提供了一种数据传输方法,用于DMA控制模块获取并存储二维数据,图3为本公开实施例的步骤流程图,如图3所示,包括步骤:
S301、数据传输装置根据接收到的DMA指令获取二维数据的源地址和目的地址。
具体地,上述数据传输装置接收DMA指令,根据该DMA指令从寄存器模块获取上述的二维数据的源地址和目的地址,或者从DMA指令中获取该二维数据的源地址和目的地址。
需要说明的是,上述寄存器模块存储有上述二维数据存储的源地址、目的地址及每次传输二维数据的数据量。
可选地,上述数据传输装置根据上述DMA指令从上述寄存器模块中获取每次传输二维数据的数据量。
S302、数据传输装置根据所述二维数据的源地址获取所述二维数据。
具体地,所有的数据预先存储在特定的源存储器中,该源存储器可以包括芯片内部的各个存储模块和外部的存储模块。上述数据传输装置根据获取到的二维数据的源地址,从上述源存储器中获取所述二维数据。
在一种可行的实施例中,在根据所述二维数据的源地址获取所述二维数据之前,当确定上述二维数据的源地址为虚拟地址时,上述数据传输装置对该二维数据的源地址进行地址映射,得到上述源地址的物理地址。上述数据传输装置根据上述源地址的物理地址从上述源存储器中获取上述二维数据。
S303、数据传输装置根据二维数据的目的地址将所述二维数据传输至目的存储器。
具体地,上述数据传输装置从寄存器模块或从DMA指令的字段中获取二维数据的目的地址后,根据二维数据的目的地址将上述二维数据传输至目的存储器。其中,该目的存储器可以包括芯片内部的各个存储模块和外部的存储模块。
其中,上述源存储器和上述目的存储器不为同一寄存器。
在一种可行的实施例中,上述数据传输装置根据上述每次传输二维数据的数据量分多次将上述二维数据传输至上述目的存储器中上述目的地址对应的存储空间中。
在一种可行的实施例中,在根据二维数据的目的地址将所述二维数据传输至目的存储器之前,确定上述二维数据的目的地址为虚拟地址时,上述数据传输装置对上述目的地址进行地址映射,将该目的地址转换成该目的地址对应的物理地址。上述数据传输装置根据上述目的地址对应的物理地址将上述二维数据传输至上述目的存储器中。
在一种可行的实施中,上述数据传输装置根据上述每次传输二维数据的数据量分多次将上述二维数据传输至上述目的存储器中上述目的地址对应的物理地址对应的存储空间中。
图4示意性示出了本公开实施例的指令集的格式示意图,如图4所示,每条指令包括一个操作码和五个操作域,其中,操作码用于指示该指令的功能,DMA控制模块通过识别该操作码可进行相应的操作,操作域用于指示该指令的数据地址信息。指令集包含有不同功能的DMA指令:
DTT指令:根据该指令,读写单元从源地址读出一个字,写入目的地址,同时也写入数据缓存单元。数据传送指令包括五个操作域,分别为第一操作域、第二操作域、第三操作域、第四操作域和第五操作域。其中,上述第一操作域用于指示二维数据的源地址所属的存储空间,上述第二操作域用于指示二维数据的源地址,上述第三操作域用于指示二维数据的目的地址所属的存储空间,上述第四操作域用于指示二维数据的目的地址,上述第五操作域用于指示二维数据的每次传输二维数据的数据量。每条指令完成一个字大小的数据的传送。
ADJ指令:根据该指令,上述加法单元将上述寄存器模块中的任两个寄存器(包括一个地址寄存器和一个跳转值寄存器)中的值相加,然后写回到其中一个上述地址寄存器中,从而完成2D DMA任务中的换行操作。
上述地址寄存器用于存储所述源地址,上述跳转值寄存器用于存储源地址的跳转值。
上述ADJ指令包括两个操作域,分别为第六操作域和第七操作域。其中,第六操作域用于指示地址寄存器的编号,第七操作域用于指示第跳转值寄存器的编号。上述ADJ指令将地址寄存器中的值加上跳转值寄存器中的值后,并将结果写回上述地址寄存器中。
图5示意性示出了本公开实施例的DMA控制模块执行2D DMA命令的流水线时空图,如图3所示,假设该2D DMA命令需要传送一块大小为3×3的数据,则整个过程一共需要9拍。也就是说,若该2D DMA命令传送的数据块大小为m×n,其中,m,n均为正整数,此时,本公开实施例的数据传输过程一共需要m×n拍。
需要说明的是,上述一拍为上述数据传输装置的一个时钟周期。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (21)
1.一种数据传输装置,其特征在于,包括:
寄存器模块,用于存储二维数据在源存储器中存储的源地址、所述二维数据在目的存储器中存储的目的地址和每次传输二维数据的数据量;
直接内存访问DMA控制模块,用于接收DMA指令,并根据所述DMA指令从所述寄存器模块或所述DMA指令获取待传输二维数据的源地址和目的地址以及每次传输二维数据的数据量;
所述DMA控制模块,还用于根据所述待传输二维数据的源地址从所述源存储器中获取所述待传输二维数据,
根据所述每次传输二维数据的数据量分多次将所述待传输二维数据传输至所述目的存储器中所述待传输二维数据的目的地址对应的存储空间;
其中,所述源存储器为所述二维数据的存储空间,所述目的存储器用于存储传输后的二维数据。
2.根据权利要求1所述的装置,其特征在于,所述源存储器和目的存储器均包括外部的各个存储设备和内部各个存储模块。
3.根据权利要求1或2所述的装置,其特征在于,所述DMA指令为载入/存储结构的指令。
4.根据权利要求1-3任一项所述的装置,其特征在于,所述DMA指令为定长指令。
5.根据权利要求1所述的装置,其特征在于,所述寄存器模块包括:
标量寄存器堆,用于存储数据规模、二维数据的源地址和二维数据的目的地址,二维数据在所述源地址的摆放间隔大小、二维数据在所述目的地址的摆放间隔大小、访问次数和数据变换规模;
其中所述数据规模为所述二维数据的每次传输的数据量、所述数据变换规模为所述二维数据进行数据变换的数据量。
6.根据权利要求1-5任一项所述的装置,其特征在于,所述二维数据的源地址和目的地址还标记所属的存储空间的类型,若所述存储空间是外存储器,则所述二维数据的源地址和目的地址还标记所属的流;若所述存储空间为内存储器,则所述二维数据的源地址和目的地址还标记所属内存储器的子模块;
其中,所述流为多组数据交替传送时的分组。
7.根据权利要求1-4任一项所述的装置,其特征在于,所述DMA指令包括一个操作码和至少一个操作域,操作码用于指示该指令的功能,操作域用于指示该指令的数据地址;所述DMA指令包括数据传送指令和地址跳转指令;
所述数据传送指令包括五个操作域,分别为第一操作域、第二操作域、第三操作域、第四操作域和第五操作域,所述第一操作域用于指示二维数据的源地址所属的存储空间,所述第二操作域用于指示二维数据的源地址,所述第三操作域用于指示二维数据的目的地址所属的存储空间,所述第四操作域用于指示二维数据的目的地址,所述第五操作域用于指示二维数据的每次传输的数据量;
所述地址跳转指令包括两个操作域,分别为第六操作域和第七操作域,所述第六操作域用于指示地址寄存器的编号,所述第七操作域用于指示跳转值寄存器的编号;
其中,所述地址寄存器用于所述源地址,所述跳转值寄存器用于存储源地址的跳转值。
8.根据权利要求1-7中任一项所述的装置,其特征在于,所述数据传输装置还包括:
数据缓存单元,用于临时存储根据所述源地址从源存储器中读取的二维数据。
9.根据权利要求8所述的装置,其特征在于,所述数据缓存单元包括:
高速暂存存储器,用于支持不同大小的二维数据的传输,并写入所述目标存储器中所述目的地址对应的存储空间。
10.根据权利要求1所述的装置,其特征在于,所述DMA控制模块包括:
指令单元,用于处理所述原始直接内存访问指令,以得到处理后的DMA指令;
加法单元,用于根据所述处理后的DMA指令,计算得到所述二维数据的源地址和所述二维数据的目的地址;
读写单元,用于根据所述二维数据的源地址从所述源存储器中读取所述二维数据,并将所述二维数据送至所述目的存储器中所述二维数据的目的地址对应的存储空间。
11.根据权利要求1-10任一项所述的装置,其特征在于,所述数据传输装置还包括:
数据转换单元,用于对从源存储器中读取的二维数据作数据转换;
其中所述数据转换包括但不限于数据精度转化、定浮点相互转换、数据排列方式转换、数据量大小转换。
12.根据权利要求7所述的装置,其特征在于,所述DMA指令还包括用于指示对二维数据进行数据转换的方式的操作域。
13.根据权利要求1-12任一项所述的装置,其特征在于,所述数据传输装置还包括:
地址映射单元,用于对源地址或是目的地址作地址的映射,用映射后的地址到对应的存储空间中取数据。
14.根据权利要求10所述的装置,其特征在于,所述加法单元和读写单元为多流水级结构,所述加法单元处于第一流水级,所述读写单元在第二流水级。
15.根据权利要求10所述的装置,其特征在于,所述指令单元包括:
指令展开单元,用于将所述DMA指令展开为***DMA指令;
指令缓存单元,用于存储所述***DMA指令;
指令处理单元,用于处理所述指令缓存单元中的***DMA指令。
16.根据权利要求15所述的装置,其特征在于,所述指令缓存单元包括:
重排序缓存,用于存储所述***DMA指令。
17.根据权利要求15或16所述的装置,其特征在于,当所述***DMA指令执行完之后,如果该***DMA指令同时也是所述指令缓存单元中未被提交指令中最早的一条***DMA指令,则该***DMA指令将被提交,一旦提交,该***DMA指令进行的操作对所述数据传输装置状态的改变将无法撤销。
18.根据权利要求15至16所述的装置,其特征在于,所述指令处理单元包括:
取指单元,用于从所述指令缓存单元中获取所述***DMA指令;
译码单元,用于对所述***DMA指令进行译码;
指令队列,用于对译码后的***DMA指令进行顺序存储。
19.一种数据传输方法,其特征在于,包括步骤:
根据接收到的DMA指令从寄存器模块中或者从所述DMA指令中获取待传输二维数据的源地址和目的地址或从所述DMA指令中直接获取所述待传输二维数据的源地址和目的地址以及每次传输二维数据的数据量;
根据所述每次传输二维数据的数据量和所述待传输二维数据的源地址分多次从源存储器中获取所述待传输的二维数据;
将所述待传输二维数据存储至目的存储器中所述待传输二维数据的目的地址对应的存储空间;
其中,所述源存储器为所述二维数据的存储空间,所述目的存储器用于存储传输后的二维数据。
20.根据权利19所述的方法,其特征在于,所述原始直接内存访问指令包括数据处理指令和地址跳转指令;
所述数据处理指令,用于指示DMA控制模块中的读写单元根据源地址从源存储器中读取一定大小的数,写入目的存储器中目的地址对应的存储空间中,数据规模可以从寄存器模块或上述DMA指令中获得;
所述地址跳转指令,用于指示DMA控制模块中的加法单元将寄存器模块中的任两个寄存器(包括一个地址寄存器和一个跳转值寄存器)中的值相加,然后写回到其中一个上述地址寄存器中,从而完成所述DMA指令中的换行操作;
其中,所述地址寄存器用于存储所述源地址,所述跳转值寄存器用于存储源地址的跳转值。
21.根据权利要求19或20所述的方法,其特征在于,当***DMA指令执行完之后,如果该***DMA指令同时也是DMA控制模块中的指令缓存单元中,未被提交指令中最早的一条***DMA指令,则该***DMA指令将被提交,一旦提交,该***DMA指令进行的操作对二维数据传输的状态的改变将无法撤销。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2017102847124 | 2017-04-26 | ||
CN201710284712 | 2017-04-26 | ||
CN201711177552.XA CN108804356A (zh) | 2017-04-26 | 2017-11-22 | 数据传输装置及方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711177552.XA Division CN108804356A (zh) | 2017-04-26 | 2017-11-22 | 数据传输装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117453594A true CN117453594A (zh) | 2024-01-26 |
Family
ID=64094273
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711177552.XA Pending CN108804356A (zh) | 2017-04-26 | 2017-11-22 | 数据传输装置及方法 |
CN202310979922.0A Pending CN117453594A (zh) | 2017-04-26 | 2017-11-22 | 数据传输装置及方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711177552.XA Pending CN108804356A (zh) | 2017-04-26 | 2017-11-22 | 数据传输装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN108804356A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111353595A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111209231B (zh) * | 2018-11-21 | 2021-05-11 | 上海寒武纪信息科技有限公司 | 数据处理方法、装置及相关产品 |
CN110399322B (zh) * | 2019-06-28 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种数据传输方法及乒乓dma架构 |
CN111177054B (zh) * | 2019-12-30 | 2021-09-03 | 京信网络***股份有限公司 | 数据传输方法、装置、设备及存储介质 |
CN113297111B (zh) * | 2021-06-11 | 2023-06-23 | 上海壁仞智能科技有限公司 | 人工智能芯片及其操作方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6398056A (ja) * | 1986-10-14 | 1988-04-28 | Fujitsu Ltd | Dma制御回路 |
JP3148023B2 (ja) * | 1992-11-27 | 2001-03-19 | 株式会社ピーエフユー | 2次元dmaコントローラ |
JPH11110339A (ja) * | 1997-10-02 | 1999-04-23 | Toshiba Corp | Dmaコントローラ |
CN101059785A (zh) * | 2006-04-17 | 2007-10-24 | 中兴通讯股份有限公司 | 一种利用dma控制器实现二维数据搬运的方法 |
CN100511195C (zh) * | 2006-04-17 | 2009-07-08 | 中兴通讯股份有限公司 | 一种利用dma控制器实现二维数据搬运的方法 |
CN100552654C (zh) * | 2006-12-08 | 2009-10-21 | 深圳艾科创新微电子有限公司 | 一种专为存取图象块优化的二维dma传输方法 |
CN101661447B (zh) * | 2008-08-26 | 2014-02-12 | 深圳艾科创新微电子有限公司 | 一种直接存储器存取的传输装置与方法 |
CN102508800A (zh) * | 2011-09-30 | 2012-06-20 | 北京君正集成电路股份有限公司 | 二维数据块的传输方法及*** |
US9419972B2 (en) * | 2012-03-30 | 2016-08-16 | Intel Corporation | Two dimensional direct memory access scheme for enhanced network protocol processing performance |
-
2017
- 2017-11-22 CN CN201711177552.XA patent/CN108804356A/zh active Pending
- 2017-11-22 CN CN202310979922.0A patent/CN117453594A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN108804356A (zh) | 2018-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542515B (zh) | 运算装置及方法 | |
CN117453594A (zh) | 数据传输装置及方法 | |
CN111159075B (zh) | 数据传输方法和数据传输装置 | |
US10255228B2 (en) | System and method for performing shaped memory access operations | |
JP6096120B2 (ja) | 処理クラスタのためのロード/ストア回路要素 | |
WO2017185396A1 (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
WO2017124648A1 (zh) | 一种向量计算装置 | |
US9348762B2 (en) | Technique for accessing content-addressable memory | |
KR102283947B1 (ko) | 사차원 모턴 좌표 변환 프로세서, 방법, 시스템 및 명령어 | |
CN107315575B (zh) | 一种用于执行向量合并运算的装置和方法 | |
WO2017185393A1 (zh) | 一种用于执行向量内积运算的装置和方法 | |
JP6696674B2 (ja) | 3次元モートン座標変換プロセッサ、方法、システム、及び命令 | |
US7506114B2 (en) | Data transfer device which executes DMA transfer, semiconductor integrated circuit device and data transfer method | |
WO2017185392A1 (zh) | 一种用于执行向量四则运算的装置和方法 | |
WO2017185404A1 (zh) | 一种用于执行向量逻辑运算的装置及方法 | |
TW201903602A (zh) | 圖形處理單元及處理圖形應用程式的方法 | |
WO2017185405A1 (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN110515872B (zh) | 直接内存存取方法、装置、专用计算芯片及异构计算*** | |
CN111651204A (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
CN112348182A (zh) | 一种神经网络maxout层计算装置 | |
US9019284B2 (en) | Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline | |
US9286256B2 (en) | Sharing data crossbar for reads and writes in a data cache | |
US8441487B1 (en) | Bandwidth compression for shader engine store operations | |
CN116257350B (zh) | 一种针对risc-v矢量寄存器的重命名分组装置 | |
CN112380154A (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 |