一种加速内存中数据搬移的三维DMA电路的制作方法

文档序号:15492285发布日期:2018-09-21 20:51阅读:174来源:国知局

本发明属于集成电路设计技术领域,具体涉及一种针对将对内存中的数据在三维空间中进行加速搬移的dma电路。



背景技术:

dma(directmemoryaccess,直接内存存取)是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于cpu的大量中断负载。

相对于传统的cpu直接传输数据的方式,dma控制器采取的传输方式为作用于存储器之间、存储器与外设之间、外设与外设之间直接交换数据,dma传输将数据从一个地址空间复制到另一个地址空间,完全不需要cpu的干预。当cpu初始化这个传输动作,传输动作本身是由dma控制器来实现和完成。在实现dma传输时,是由dma直接掌管总线,即dma传输前,cpu要把总线控制权交给dma控制器,外设和存储器直接进行数据交换而不需要cpu的干预,在数据传送完毕后,设备接口会向cpu发送dma结束信号,dma控制器立即把总线的控制权再交还给cpu。一个完整的dma传输过程必须经过dam请求、dma响应、dma传输、dma结束4个步骤。

dma技术的出现,使得外围设备可以通过dma控制器直接访问内存,与此同时,cpu可以继续执行程序。由于cpu根本不参加数据传送操作,因此就省去了cpu取指令、取数、送数等操作。内存地址的修改、传送字的个数的技术等等也不是由软件实现,而是用硬件线路直接实现的。所以dma方式能满足高速i/o设备的要求,也有利于提高cpu的效率。

本发明提出了一种三维dma结构,三维代表所要搬移的数据的源地址以及要搬移到的目标地址在内存空间内是以三维的形式进行地址分配的,不需要反复调用dma或者配置dma的基地址以及传输长度等参数,并且地址的分配方式更加灵活。在传统dma的基础上使dma传输数据的效率得到进一步提高,从而进一步提高了cpu的工作效率,提高了整个电路的工作效率。



技术实现要素:

为了克服现有技术的不足,本发明的目的在于提供一种可以以三维的形式分配地址空间,因而可加速内存中数据搬移的三维dma电路。

本发明提供的加速内存中数据搬移的三维dma电路,通过配置组成一个三维空间的线条、平面所需要的多种参数,完成配置源地址空间与目标地址空间的地址,并通过axi总线进行读取数据,提高dma工作的效率。

本发明提供的加速内存中数据搬移的三维dma电路,其包括参数配置模块、临时读地址模块、临时写地址模块、读数据模块以及写数据模块;其中:

所述参数配置模块,用于配置dma在进行三维地址空间分配时所需要的全部参数,所述参数包括:源地址与目标地址的线步长、面步长,线条数量,平面数量,线条尺寸以及源地址与目标地址的基地址,每个参数存放在特定的寄存器中;

所述临时读地址模块,用于生成源空间的临时地址,该模块接收参数配置模块所配置的参数,根据这些参数,生成需要进行数据搬移的源地址空间的临时值,即得到源空间的临时地址;该模块中,对临时地址空间的分配以类似于生成二维平面的形式进行;

所述临时写地址模块,用于生成目标空间的临时地址,该模块接收临时读地址模块传递来的参数,以及读数据模块读取的axi总线上的数据,根据参数生成需要搬移的目标地址空间的地址,并将需要搬移的数据与生成的目标空间临时地址一起输出给写数据模块;该模块中,对临时地址空间的分配同样以类似于生成二维平面的形式进行;

所述读数据模块,用于接收来自临时读地址模块的数据输出,并将临时读地址转换成axi总线形式的读地址,并且将通过总线在源内存空间中找到的数据读入到电路中,该模块中,地址空间按照三维立体的形式进行分配;

所述写数据模块,用于接收来自临时写地址模块的数据输出,并将临时写地址转换成axi总线形式写地址,然后将需要搬移的数据写到目标地址空间中;该模块中,地址空间同样按照三维立体的形式进行分配。

本发明中,所述对临时地址空间的分配以类似于生成二维平面的形式进行,具体方式如下:

二维的地址空间平面的长由所配置参数中的线步长以及线条数量组成,即在源空间的基地址的基础上,每次将地址增加源空间线步长的长度,总共增加线条数量l次;

二维的地址空间平面的高是由面步长以及平面数量决定的,每次都是在上一个地址线条的基础上进行地址增加,地址增加的长度为面步长的大小,总共增加平面次数s次;

由此就形成一个二维的地址空间平面,这个地址平面的长为l+1,宽为s+1。

本发明中,所述地址空间按照三维立体的形式进行分配,具体方式如下:

将临时地址模块输出的二维地址平面进行处理,将平面中每个地址根据线条尺寸的大小进行扩展,设线条尺寸大小为n(n>1),则在原有临时地址的基础上以一定的长度进行迭代增加,总共增加⌊n/2⌋次。由于平面内每个地址都可以再扩展⌊n/2⌋次,由此可以在二维平面的基础上形成一个三维立体的地址空间,这个立体空间的长为l+1,高为s+1,宽为⌊n/2⌋+1。

通过这样的方式生成最终传送给axi总线的地址,每个地址都对应了一个地址空间,每个地址空间内都存放了一个数据,这样生成地址空间的方式更加灵活,并且不需要反复调用dma,极大提高了dma的访存效率。

本发明中,通过参数配置模块配置参数,然后通过两个临时地址生成模块得到源空间以及目标空间的临时地址,最后通过读数据模块和写数据模块与axi总线连接,完成在两个相互独立的内存空间之间搬移数据的过程。整个数据搬移的过程是以三维立体的形式进行的。其中,只要在参数配置模块配置好形成一个三维空间所需要的线条、平面的相关参数,就可以完成在三维空间内进行地址分配的功能,不需要反复调用dma或者配置dma的基地址以及传输长度,并且地址的分配方式更加灵活,极大地提高了dma在内存中的读取数据效率。

本发明的有益效果在于:源空间和目标空间的地址的分配是以三维形式进行的,分配方式更加灵活,并且减少了不断调用dma或者不断配置dma的基地址以及传输长度等参数的次数,使得操作更加简单,dma访问内存存取数据的效率更高,从而进一步提升了电路的工作效率。

附图说明

图1为三维dma电路工作基本框图。

图2为临时地址分配二维平面图。

图3为三维地址扩充过程示意图。

图4为三维dma临时地址分配立体图。

具体实施方式

本发明中,三维dma电路的工作基本框图如图1所示。该设计的工作过程如下:首先通过参数配置模块配置一个三维dma电路中所需要的全部参数。其中参数包括:目标地址的面步长、目标地址的线步长、源地址的面步长、源地址的线步长、平面数量、线条数量、线条尺寸、源空间基地址以及目标空间基地址。这几个参数决定了需要搬移数据的源地址以及目标地址的地址空间的分配情况,每个参数都对应参数配置模块中特定的寄存器,只要配置好每个寄存器上的值就可以完成参数的配置。

将以上几个参数配置成功之后,两个临时地址生成模块就会生成源地址空间的临时地址以及目标地址空间的临时地址和要进行搬移的数据。

源地址空间的临时地址的实现方法为:首先源地址空间临时地址的长度为79bits,其中高15bits代表了线条尺寸这个参数所对应的寄存器上的值,后64bits代表了在不考虑线条尺寸的情况下的临时地址空间,每次发生地址变化的时候代表线条尺寸的前15bits不变,后64bits的地址根据源基地址、源地址面步长、线步长、平面数量以及线条数量确定源空间与目标空间的二维临时地址平面范围。

这个二维的地址空间平面的长是由所配参数中的线步长以及线条数量组成的,也就是说在源空间的基地址的基础上,每次将地址增加源空间线步长的长度,总共增加线条数量l次。源空间二维地址空间平面的高是由面步长以及平面数量决定的,每次都是在上一个地址线条的基础上进行地址增加,地址增加的长度为面步长的大小,总共增加平面次数s次。由此就形成了一个宽为l+1,高为s+1的二维地址空间平面。

源地址空间的临时地址就是在临时读地址模块内通过这种方式形成的,图2形象说明了一个二维临时地址空间平面形成的过程。

接下来是在一种情况下源地址空间的临时地址分配的例子,其中配置信息为源地址空间的基地址为64’h0000_0000_8000_0000,源地址空间的面步长为27’h200,源地址空间的线步长为27’h100,平面数量s为24’h2,线条数量l为24’h3,线条尺寸为13’h7。具体实现过程为:源临时地址空间是一个二维的平面空间,首先在基地址64’h8000_0000的基础上进行增加,形成组成一个二维平面的长,也就是在基地址的基础上每次增加27’h200,总共增加3次,3就是所设置的线条数量。紧接着形成二维地址平面的高,也就是在64’h8000_0000的基础上增加27’h100,然后在64’h8000_0100的基础上完成线条的增加,同样的也是每次增加27’h200,总共增加3次。由于此例中平面数量为2,所以会形成一个长为4=(l+1),高为3=(s+1)的二维地址平面空间,总共会产生3*4=12个不同的长度为79bits的临时地址。

读数据模块接收到来自临时读地址模块输出的源空间的临时地址,并将其转换成64bits的能与axi总线连接的形式,并且将临时的二维地址平面转换成三维立体空间的形式,此处的转换是在临时地址的基础上考虑了线条尺寸的结果。将临时地址的后64bits地址进行扩展,如果线条尺寸大小为n(n>1),则在原有临时地址的基础上以’h40的长度为步长进行增加,总共增加⌊n/2⌋次,图3展示了一个平面内按照线条尺寸进行扩充的示意图。这样最终形成的地址则是我们传送给axi总线的地址,并且每个平面上的地址都根据线条尺寸进行了扩展,就可以扩展成一个立体空间的效果,实现三维地址空间的分配,图4是一个三维地址分配的立体图。三维空间上的每个64bits的地址都对应了一个地址空间,每个地址空间内都存放了一个512bits的数据。只要根据设置的参数,就可以找到我们所需要的地址空间上的数据,将数据通过axi总线传送给数据处理模块就可以实现将我们需要的数据搬移到新的地址空间中的功能。

新的地址空间也就是目标地址空间,它是在临时写地址模块中生成的。首先根据参数配置模块接收到所配置的地址空间参数,经由临时写地址模块产生目标地址空间的临时二维地址平面,最后通过写数据模块找到真实的目标地址空间,形成三维立体的地址空间,并将从源地址中找到的数据搬移到目标地址空间中,完成数据的加速搬移。

目标地址空间的临时地址的变化规律与源地址空间的临时地址变化规律是一样的,只不过它参考的是与目标地址相关的参数(目标地址的面步长以及目标地址的线步长)。不同之处在于,临时地址模块将目标临时地址与要搬移的数据以同一个变量进行输出,因为临时写地址模块还同时接收了来自读数据模块的数据。也就是说临时写地址模块的输出的长度为515bits,该输出同时代表了目标临时地址以及进行搬移的数据。

临时写地址模块的输出形式为:每个输出一个临时地址,紧接着输出一组512bits的数据,这组数据的数量是由线条尺寸的大小决定的,如果线条尺寸的大小为n(n>1),则连续输出⌊n/2⌋个512bits的数据,每个数据对应了目标地址空间中的一个位置。

写数据模块接收到来自临时写地址模块的目标地址空间的临时地址以及要搬移的数据,将其按照源地址空间相同的规律根据线条尺寸的大小进行展开,目标地址空间与源地址空间的分配规律是一样的,展开后三维空间中的每个地址都对应一个要搬移的数据。当写数据模块接收到要搬移的数据以及要搬移的目标地址空间,就可以将数据按照设定写入到对应的地址空间上,完成数据的加速搬移。

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