一种快速dma乒乓缓存方法

文档序号:6466123阅读:1751来源:国知局
专利名称:一种快速dma乒乓缓存方法
技术领域
本发明涉及信息处理技术领域,具体涉及一种快速DMA(Direct Memory Access,直接内存访问)乒乓缓存方法。
背景技术
在现存的主流芯片处理器(如DSP,FPGA,ASIC等)中,其片内存储器空间都 是有限的,而片内存储器和片外存储器的存取速度差别是相当大的。所以,在处 理高密集度的数据(如音视频信号)时,因为数据量非常大,必须使用到速度相 对较慢的片外存储器,另外CPU (中央处理单元)直接访问片外存储器会造成数 据读写缺失,导致处理效率的低下。DMA是可以独立于CPU工作的一个部件,在 现存的主流处理器中,DMA是不可或缺的部件。
为了降低数据读写缺失, 一种常用的处理方法就是使用DMA乒乓处理过程, DMA的乒乓处理过程是指当CPU对一块内存空间中的数据进行处理的同时,DMA 部件将CPU下一次需要处理的数据从外存中搬移到CPU下次要处理的内存空间, 由于DMA的后台运行特性,使得DMA搬移的时间隐匿于CPU当前处理的过程中。 这样,CPU在处理接下来内存的数据的时候,就可以直接从片内存储器得到,最 终降低数据读写缺失的时间。
有些情况下,DMA两次搬移的两块相邻的数据是相关。例如在视频压缩中, 现有的乒乓缓存方法是在对当前宏块行进行运动估计的同时,启动DMA将下一个 宏块行所需要的48行参考数据搬移到片内BUFFEI^B,如图1所示,这里当前宏 块行使用的是BUFFER_A,是由前一个宏块行做运动估计的时候利用匿A搬移进 来的,由视频编码中的运动估计所用到的参考帧的数据结构可注意到,相邻两次 DMA搬移中有2/3即32行像素是完全一样的,采用现有的DMA乒乓处理方式会 带来很多冗余。

发明内容
本发明所要解决的技术问题是,提供一种快速的DMA乒乓缓存方法,本发明可减少相邻数据中有部分相同的数据处理的过程中的冗余,使得每次簡A搬移的 数据量减小,从而减少CPU等待的时间。
一种快速DMA乒乓缓存方法,用于搬移相邻数据块中有部分数据相同的数据 块,所述方法为,DMA首先搬移CPU每次可处理的字节量大小的数据块到目的缓 存中,然后再依次搬移需要搬移的数据块中与相邻数据块中不相同部分数据字节 量大小相等的数据块到接下来的目的缓存中,直到目的缓存被完全覆盖,本轮数 据搬移结束。
所述DMA每次数据搬移结束后,CPU均会开始对目的缓存中的数据进行处理, 并同时启动DMA进行下一次数据搬移;依次类推,直到目的缓存中的所有数据均 被处理完毕。
所述DMA每轮数据搬移中,第一次数据搬移的目的地址为目的缓存的首地 址,之后每次数据搬移的目的地址均为前一次数据搬移的目的地址偏移前一次搬 移的数据块字节量。
所述CPU第一次处理的数据的起始地址为目的缓存的首地址,之后每次处理 的数据的起始地址均为前一次处理的数据的起始地址偏移匿A前一次搬移的数 据块字节量。
相对于现有的乒乓缓存方法,本发明所述方法对于相邻数据块存在相同数据 且使用相同内存空间情况下,减少了 50X的DMA数据搬移量。


图1是现有的乒乓缓存结构示意图; 图2是本发明所述乒乓缓存结构示意图; 图3是本发明所述方法流程图。
具体实施例方式
以下结合附图对本发明所述的方法做进一步详细说明。
结合图2、图3所示,为简便起见,假设本发明CPU每次可处理的数据块的 字节量为M字节,而目的缓存的首地址为Addr,大小为N字节,并设乒乓缓存 时相邻两次DMA搬移的数据块中相同的数据量为B, B相对M字节的比率为a = B/M,则覆盖目的缓存N字节一遍DMA所需要搬移的次数为L=floor((N-M)/(M(l_a))) +1,其中floor()表示向下取整。 本发明按如下步骤完成
第一步利用DMA开始M字节数据块的搬移,目的地址为Addr,即为目的 缓存的首地址,搬移到目的缓存中的地址区间是[Addr, Addr+M);
第二步等待第一步的DMA搬移结束,CPU对地址区间为[Addr, Addr+M)的 数据进行处理的同时,再次启动DMA搬移M*(l-a)字节的数据块,目的地址是 Addr+M,搬移到目的缓存中的地址区间为是[Addr+M, Addr+M* (1-a) +M);
第三步等待第二步的DMA搬移结束,CPU对地址区间为[Addr+M*(l-a), Addr+M*(l-a)+M )的数据进行处理,与此同时,启动DMA搬移接下来M*(l-a) 字节的数据块,目的地址是Addr+M*(l-a)+M,搬移到目的缓存中的地址区间是 [Addr+M*(1-a)+M, Addr+2M*(1-a)+M);
第四步 一直重复第三步,即每启动一次DMA,则搬移M^l-a)字节数据块, 且每次目的地址偏移M(l-a),相应的CPU处理的数据起始地址也偏移M(l-a), 直到CPU开始对第L-l次DMA搬移的数据进行处理,其地址区间是 [Addr+(L-2)*M(l-a), Addr+M+(L-2) *M(1-a)),与此同时,DMA开始启动第L次 搬移,目的地址是Addr+M+(L-2)*M(l-a),而搬移到目的缓存中的地址区间是 [Addr+M+(L—2)*M(1—a), Addr+M+(L—1) *M(l_a)),即[Addr+M+(L-2) *M(l_a), 2M );
第五步等待第L次DMA搬移结束,CPU开始对地址区间是 [Addr+(L-l)承M(l-a), Addr+M+(L_1) *M(1-a))的数据进行处理,本轮目的缓存 覆盖结束,与此同时,启动DMA搬移M字节数据,而目的缓存的起始地址轮转回 Addr,开始新一轮的目的缓存覆盖,只到所有信号都处理完毕。
下面以视频编码中的运动估计作为例,说明本发明的一个具体应用,其他的 运用可作类似的处理。
运动估计需要用到参考帧的数据,通常的做法是将当前编码宏块行所对应位 置的参考帧的上、当前、下宏块行共48行像素利用DMA搬移到芯片内部存储器 中。由视频编码中的运动估计所用到的参考帧的数据结构可注意到,要搬移的 48行像素中有2/3即32行像素是完全一样的。
下面利用本发明对一帧CIF分辨率图像的运动估计过程进行描述,本实施例 中M=48X352 = 16896B,目的缓存的首地址为Addr, N=2M = 33792B, B为2/3M, a
5=B/M=2/3,故有L=4。
S01:利用DMA搬移第一个宏块行所需要的M字节参考数据,目的地址是 Addr,搬移到目的缓存中的地址区间为是[Addr, Addr+M);
S02:等待SOl中的D區搬移结束,CPU开始对第一宏块行(即SOl中的第 一宏块行)进行运动估计,所使用的参考数据的地址区间是[Addr, Addr+M);与 此同时,启动DMA搬移1/3+M即16行像素的参考数据,目的地址是Addr+M,搬 移到目的缓存中的地址区间为是[Addr+M, Addr+4/3*M);
S03:等待S02中的DMA搬移结束,CPU对第二宏块行(相对S02)进行运动估 计,所使用的参考数据的地址区间是[Addr+l/3氺M, Addr+4/3*M);与此同时,启 动DMA搬移接下来的1/3*M的参考数据,目的地址是Addr+4/3*M,搬移到目的 缓存中的地址区间为是[Addr+4/3*M, Addr+5/3*M);
S04:等待S03中的DMA搬移结束,CPU对第三宏块行(相对S02)进行运动估 计,所使用的参考数据是地址区间[Addr + 2/3承M, Addr+M*5/3);与此同时,启 动DMA搬移接下来的1/3*M参考数据,目的地址是Addr+5/3*M,搬移到目的缓 存中的地址区间为是[Addr+5/3承M, Addr+2M);
S05:等待S04中的DMA搬移结束,CPU对第四宏块行(相对S02)进行运动估 计,所使用的参考数据的地址空间是[Addr+M, Addr+ 2M),本轮目的缓存覆盖 结束;与此同时,启动DMA搬移相应的大小为M的参考数据,此时,目的地址轮 转回Addr,并将S02中的宏块行地址做4宏块行的偏移,作为下一次运动估计 的第一宏块行,重复S02到S04直到整帧的宏块行运动估计都处理完毕。
相对于现有的乒乓缓存方法,本发明所使用的缓存方法在做视频运动估计的 时候,在使用相同内存空间情况下,将减少50X的DMA数据搬移量。
权利要求
1、一种快速DMA乒乓缓存方法,用于搬移相邻数据块中有部分数据相同的数据块,其特征在于,所述方法为,DMA首先搬移CPU每次可处理的字节量大小的数据块到目的缓存中,然后再依次搬移需要搬移的数据块中与相邻数据块中不相同部分数据字节量大小相等的数据块到接下来的目的缓存中,直到目的缓存被完全覆盖,本轮数据搬移结束。
2、 如权利要求1所述的快速DMA乒乓缓存方法,其特征在于,所述DMA每 次数据搬移结束后,CPU均会开始对目的缓存中的数据进行处理,并同时启动DMA 进行下一次数据搬移;依次类推,直到目的缓存中的所有数据均被处理完毕。
3、 如权利要求1所述的快速DMA乒乓缓存方法,其特征在于,所述DMA每 轮数据搬移中,第一次数据搬移的目的地址为目的缓存的首地址,之后每次数据 搬移的目的地址均为前一次数据搬移的目的地址偏移前一次搬移的数据块字节
4、如权利要求2所述的快速DMA乒乓缓存方法,其特征在于,所述CPU第 一次处理的数据的起始地址为目的缓存的首地址,之后每次处理的数据的起始地 址均为前一次处理的数据的起始地址偏移DMA前一次搬移的数据块字节量。
全文摘要
本发明涉及一种快速DMA乒乓缓存方法,所述方法用于搬移相邻数据块中有部分数据相同的数据块,DMA首先搬移CPU每次可处理的字节量大小的数据块到目的缓存中,然后再依次搬移需要搬移的数据块中与相邻数据块中不相同部分数据字节量大小相等的数据块到接下来的目的缓存中,直到目的缓存被完全覆盖,本轮数据搬移结束。本发明可减少相邻数据中有部分相同的数据处理的过程中的冗余,使得每次DMA搬移的数据量减小,从而减少CPU等待的时间。
文档编号G06F13/28GK101645052SQ20081014230
公开日2010年2月10日 申请日期2008年8月6日 优先权日2008年8月6日
发明者陈晨航 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1