数据传输装置及方法与流程

文档序号:15931751发布日期:2018-11-14 01:44阅读:258来源:国知局

本发明涉及计算机科学技术领域,尤其涉及一种数据传输装置及方法。

背景技术

直接内存访问(directmemoryaccess,dma)是计算机科学中的一种内存访问技术。它允许某些硬件子系统(外存储器)独立地直接读写系统内存,而不需cpu介入处理。在同等程度的处理器负担下,dma是一种快速的数据传送方式。有时,数据除了往来处理器和外存储器之间之外,还需要在多个存储空间之间转移。我们并不希望让处理器在这种情况下也忙于数据拷贝,而dma就可以负担起此类工作,减少了系统资源的占用。此外,dma的传送能力并不总是用来移动数据,也可以用于将存储在外存储器中的将要运行的代码提前送入内存,加快执行效率。

dma控制器需要指令支持,才能正确执行处理器布置的多种任务。对于任何类型的dma传输,都需要规定源端地址、目标端地址和待传送数据的大小。这种类型的事务代表了简单的一维(“1d”)统一“跨度”(unitystride)的传输。不过,虽然1ddma得到了广泛的应用,但用处更大的则是二维(2d)dma,特别是在图像、视频等应用中。2ddma可以简单地理解为一个嵌套的循环,亦即对一个矩阵的行和列分别操作,最终完成遍历,每一层循环都相当于一个1ddma。

而更复杂的dma装置往往会同时与多个外存储器相连,一段时间内cpu需要交替从这些外存储器中获取多组数据,这些数据是根据任务所需不时切换的,但在同组内又是连续的。这时dma装置需要正确识别相关指令,确保同组数据的缓存尽可能命中,不受其他组的数据传送的影响。



技术实现要素:

本发明实施例提供的一种数据传输装置及方法,在图像、视频处理的应用场景下极大地提升了数据传送的效率和规范程度,弥补了数据密集型计算任务的i/o短板。

第一方面,本申请实施例提供了一种数据传输装置,包括:

寄存器模块,用于存储二维数据在源存储器中存储的源地址、所述二维数据在目的存储器中存储的目的地址和每次传输二维数据的数据量等参数;

dma控制模块,用于接收到dma指令;

所述dma控制模块,还用于根据所述dma指令,从所述寄存器模块中获取出待传输二维数据的源地址和待传输二维数据的目的地址;

所述dma控制模块,还用于根据所述待传输二维数据的源地址从所述源存储器中获取所述待传输二维数据,并将所述待传输二维数据传输至所述目的存储器中所述目的地址对应的存储空间。

其中,所述源存储器为所述二维数据的存储空间,所述目的存储器用于存储传输后的二维数据。

其中,所述将所述待传输二维数据传输至所述目的存储器中所述目的地址对应的存储空间包括:

所述dma控制模块从所述寄存器模块中获取所述每次传输二维数据的数据量;

根据所述每次传输二维数据的数据量将所述待传输二维数据传输至所述目的存储器中所述目的地址对应的存储空间。

在一种可行的实施例中,上述dma控制模块从所述dma指令获取所述待传输二维数据的源地址、待传输二维数据的目的地址和每次传输二维数据的数据量。

可选地,所述dma指令为载入/存储结构的指令。

可选地,所述dma指令为定长指令。

可选地,所述寄存器模块包括:

标量寄存器堆,用于存储数据规模、二维数据的源地址、二维数据的目的地址、二维数据在原地址的摆放间隔大小、二维数据在目的地址的摆放间隔大小、访存次数和数据变换规模;

其中所述数据规模为二维数据的每次传输的数据量,数据变换规模是二维数据需要进行数据变换的数据量。

可选地,所述源地址和目的地址还标记所属的存储空间的类型;若该存储空间为外存储器,则原地址和目的地址还标记所属的流;若该存储空间为内存储器,则原地址和目的地址还标记所属内存储器的子模块;

其中,所述流为多组数据交替传送时的分组。

可选地,所述dma指令包括但不限定于数据传送(datatransfer,dtt)指令和地址跳转(addressjump,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控制模块执行2ddma命令的流水线时空图。

具体实施方式

基于上述技术问题,本申请提供了一种数据传输装置,解决现有技术中存在的二维数据传送效率低下、多组数据交替传送时缺失过多的问题,从而使得2ddma更广泛、高效地应用在图像、视频等应用中。

为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请作进一步的详细说明。

参见图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指令:根据该指令,上述加法单元将上述寄存器模块中的任两个寄存器(包括一个地址寄存器和一个跳转值寄存器)中的值相加,然后写回到其中一个上述地址寄存器中,从而完成2ddma任务中的换行操作。

上述地址寄存器用于存储所述源地址,上述跳转值寄存器用于存储源地址的跳转值。

上述adj指令包括两个操作域,,分别为第六操作域和第七操作域。其中,第六操作域用于指示地址寄存器的编号,第七操作域用于指示第跳转值寄存器的编号。上述adj指令将地址寄存器中的值加上跳转值寄存器中的值后,并将结果写回上述地址寄存器中。

图5示意性示出了本公开实施例的dma控制模块执行2ddma命令的流水线时空图,如图3所示,假设该2ddma命令需要传送一块大小为3×3的数据,则整个过程一共需要9拍。也就是说,若该2ddma命令传送的数据块大小为m×n,其中,m,n均为正整数,此时,本公开实施例的数据传输过程一共需要m×n拍。

需要说明的是,上述一拍为上述数据传输装置的一个时钟周期。

以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1