阅读新闻
电子工程周刊:   ←每周自动接收行业新闻,技术资料,设计文章

有效利用片上分块存储器

[日期:2008-1-11] 来源:清华大学  作者:温淑鸿 崔慧娟 唐昆 [字体: ]

 

摘要:为了提高嵌入式多媒体应用的实时性能,提出了一种最大化数据并行访问以便充分发挥CPU处理能力的片上存储器分配方法。CPU指令的并行数据访问以及CPU与直接存储器存取(DMA)的井行访问都可能导致冲突,片外存储器的慢速存取也会导致CPU流水线停止。根据CPU处理数据的需要分配片上存储嚣,采用DMA动态地将数据转移到片上,减小存取慢速片外存储器带来的延时;充分利用CPU多条数据总线并行访问多个存储器块的能力和双端口存储器(DARAM)一个周期两次访问的能力,减小存储器带宽的限制。实验结果表明:合理分配存储器,程序执行时间最多减少了48%。存储器分配该方法简单,易于实现。
关键词:存储器;动态分配;片上存储器;双端口存储器


    CPU常采用高速缓存或者片上存储器,匹配高速的CPU访问和低速的片外存储器之间的矛盾。为了获得更低的功耗、芯片面积和可预测的实时性能,数字信号处理器(DSP)常采用片上存储器替代高速缓存。片上存储器主要采用分块结构,以便CPU多条数据总线并行访问存储器,部分存储器块为双端口存储器(DARAM),一个周期内可访问两次。
    片上存储器的分配直接影响程序执行时间。文采用静态分析的方法,把访问次数较多的变量分配到片上存储器。文采用动态的方法管理存储器。文把大的数据矩阵进行拆分,以便分时存储到片上。这些文献讨论了数据在非分块结构片上存储器上的分配。文采用静态的方法分配变量到两个不同的存储器块中。文首次讨论了利用多个存储器块以及双端口片上存储器的模型,把一个矩阵仅仅限制在一个存储器块内。这个模型并不合适,主要原因是,单个矩阵的大小可能大于一个存储器块的大小,而且较小的矩阵也可位于两个块的边界上;另外采用静态的方法分配存储器也不合适,因为直接存储器存取(DMA)可以在CPU处理数据的同时进行数据转移,将存储在慢速片外存储器中的数据转移到片上供CPU处理。因而,动态分配程序和数据对象在片上存储器的位置,更能利用CPU的处理能力。所以,本文从两方面展开:一是讨论哪些数据需存储在片上,如何实现片外存储器和片上存储器之间的数据交换;二是片上的存储器块如何分配,以便利用CPU多条数据总线同时读写多个存储器块的能力和双端口存储器单周期两次访问的能力。


1 数据转移与处理
    算术运算和逻辑运算通常由CPU或协处理器来完成,若CPU访问数据不会引起延迟,则程序的实时性能主要取决于CPU的处理能力。因而,将应用程序按照功能分成CPU顺序执行的若干数据处理任务,应用程序表现为数据处理任务的循环执行和条件执行等形式。多媒体应用总是需要处理大量数据,CPU按照一定顺序每次处理一个块的数据。数据处理任务是数据处理的基本单元,一旦开始执行,就不必停下来等待数据转移。CPU执行各个数据处理任务时,需要分配片上存储器存储当前数据处理任务的输入输出数据,以便数据处理能连续进行。若仅把当前处理任务的输入输出分配到片上存储器,会导致中间结果频繁的片外片内转移,加重片外存储器的读写负担。中间结果指的是某个数据处理任务的输出,并用作后续处理任务的输入。在片上存储器容量允许的情况下,将保存到片上的中间结果存储到其生命期结束,可以减少读写片外存储器的次数。减少算法的中间结果数量,是减小片上存储器需求和数据转移的有效手段。
    数字信号处理器常常采用高速DMA通道,在存储器之间或者存储器与外设之间转移数据。DMA数据转移任务完全服从于CPU处理数据的需求,将以数据处理任务为中心的数据转移也划分成若干任务;一个数据转移类任务一旦开始执行,就利用可得到的存储器带宽,直到转移结束。DMA转移与CPU处理保持合理的同步,数据输入输出及时完成,就不会产生CPU等待DMA转移数据的
延时。DMA转移通常采用两个缓冲区作乒乓缓存,若DMA转移和CPU保持精细的同步,可以有效减小片上存储器缓冲区。称存储输入数据的片上存储器为输入缓冲区,存储输出数据的片上存储器为输出缓冲区。若某处理任务处理输入缓冲区数据,在该处理任务前的一个或多个处理任务并不访问该缓冲区,并且DMA也可利用这些间隔转移数据到输入缓冲区,这时并不需要设置乒乓缓冲区。同样,某数据处理任务产生输出结果,其后的一个或多个处理任务并不改写该输出缓冲区,DMA也可利用这些间隔转移输出缓冲区数据到片外,从而减小片上存储器缓冲区需求。


2 片上存储器分配
   
每个单端口存储器(SARAM)在一个周期内仅能访问一次,同一周期企图访问同一SARAM块的两个数据会产生延时,这包括CPU从程序空间读指令和程序读写数据存储器。这里的数据包括程序存储器空间的指令代码和程序读写的存储器操作数。如果两数据满足条件A:两个数据分配在不同的存储器块内,或者DARAM块内,同时访问这两数据就不会产生延时,这是由SARAM访问能力产生的限制。CPU的总线结构导致某些特殊指令(或者DMA操作)不能在一个周期内两次访问同一存储器块。如果两数据属于这类特殊指令或者操作中的数据,则需要满足条件B:只有两数据位于不同的块内,同时访问这两个数据才不会产生延时。
    上述A条件中的两变量为同一矩阵的元素时,要求该矩阵位于DARAM块内。定义条件C为两变量位于同一DARAM内,于是

A=B/C

    假设片上存储器具有如下结构,共有N1个SARAM块,N2个DARAM块,每个块的大小为S(例如TI公司TMS320C55x系列DSP),存储器各块地址连续,先是SARAM块,然后DARAM块。设数据矩阵(或者程序代码)Ai的大小为ni起始位置为xi,存储器的分配问题归纳为在一定的约束条件下求解矩阵的位置xi的过程。



    为了求得一种可能的存储器分配,将A条件分解成条件B与C的逻辑或。假设某个应用有M1个A类约束条件,M2个B类约束条件,将任何一个A类条件替换为C或者B,共有2M1种组合,任何一种组合的解都能满足原始约束条件。这样由A和B条件组成的约束条件就转化成为由C和B组成的约束条件。
    在求解一种具体约束条件的组合时,C类条件中的所有矩阵大小累加和就是分配这些矩阵需要的DARAM容量,若大于片上DARAM存储器数量,也就无解。
    由于存在多个B类约束条件,每个B类条件要求某两个矩阵必需在不同的存储器块内,假设要求矩阵A4和A5不在同一块内,矩阵A4和A6不在同一块内,矩阵A5和A6不在同一块内,实际上要求A4、A5、A6中任何两个矩阵不在同一存储器块内。若有一组矩阵,其中任何两个矩阵都必需分配在不同的存储器块内,称为B类约束矩阵组。若不存在一个矩阵,要求与某个B类约束矩阵组中的所有矩阵都存在B类约束关系,称这个组为最大B类约束矩阵组。最大B类约束条件矩阵组中的矩阵数目就是分配这些矩阵所需的最少的存储器块数。分别以每个B类约束条件为基础,搜索包含这两个矩阵的最大B类约束矩阵组;由所有的最大B类约束矩阵组构成一个集合S,删除S中相同的元素,比较各个最大B类约束矩阵组中的矩阵数量,矩阵数量的最大值就是分配这些矩阵需要的最少片上存储器块数。首先把矩阵数最多的最大组中的各个矩阵分配到不同的存储器块中,然后按照B类约束矩阵组中矩阵数从多到少的顺序分配这个组中尚未分配的矩阵,对于具有相同矩阵数的组,先分配未分配矩阵较少的B类约束矩阵组中的矩阵。若B类约束的矩阵同时存在C类限制,则分配到DARAM上,否则优先分配到SARAM上;若SARAM上没有足够的空间,再分配到DARAM上。最后在DARAM上分配C类约束条件中的尚未分配的矩阵。


3 实验结果及分析
   
TI公司OMAP系列处理器是针对第三代手机推出的高性能多媒体处理器,具有极低的功耗。OMAP1510包含一个ARM处理器核和一个C55x的DSP核,C55x片上具有64kBDARAM和96kBSARAM,分成20个块,每块8kB,程序和数据统一寻址。以下实验采用TI公司Innovator开发板,利用code composer studio v2.2中的profiler测试函数的执行周期。
    实验l 不同片上存储器分配方法DCT变换的执行时间,测试函数为TI公司ImgLib中的库函数void IMG_fdet_8×8(short*fdct_data,short*inter_buffer)。该函数利用硬件加速器实现8×8离散余弦变换(DCT),fdct_data存储变换前数据和变换后DCT系数,inter_buffer用于存储中间结果,测试结果见表1。从表1可看出,当程序代码、输入数据和中间结果位于同一SARAM块时,程序执行时间最长;当输入数据和中间结果位于相同的DARAM块、代码位于不同的块时,执行时间有显著减少,这主要是由于减少了 CPU程序总线取指令和数据总线取数据的冲突;当程序代码、输入数据和中间结果位于不同块时(本文建议方法),减少了指令与数据的冲突,以及同一指令访问多个数据的冲突,DCT变换执行时间减少了44%。
    实验2测试不同片上存储器分配方法RGB变换的执行时间,测试函数为TI公司ImgLib中的库函数void IMG_ycbcr422_rgb565(short_coeff[],short*y_data,short*cb_data,short*cr_data,short*rgb_data,short num_pixels),该函数进行YCbCr到RGB变换,y_data、cb_data、cr_data、rgb_data为图像数据,coeff是变换系数。表2为实验结果,采用文中存储器分配方法,程序代码分配到SARAM块内、图像数据和乘法系数分配到不同DARAM块内,RGB变换时间缩短了48%。


    实验3 利用OMAP中的C55x进行H.263图像编码时,不利用片上存储器的分块性质,简单地把所有代码和数据分配在片上,INTRA帧编码执行时间为16 253 475指令周期,采用文中方法后执行时间为9 419 419指令周期,执行时间减少了42%。


4 结论
   
存储器分配方法对程序执行时间有较大影响。存储器分配时,优先分配片上存储器存储CPU的当前数据处理任务的输入输出数据,并保存中间结果直到其生命期结束,从而减少片外存储器访问次数;有效同步DMA数据转移和CPU数据处理,减小CPU访问片外数据的大量延时,缩减片上存储器需求。合理分配程序和数据,使程序代码与存储器操作数访问不冲突、指令的并行数据访问不冲突、DMA访问与程序代码和存储器操作数访问不冲突,充分利用分块存储器和双端口存储器访问能力和多条总线并行访问的能力可以缩短程序的执行时间,提高具有片上存储器的多媒体处理器的实时性能。


 



标签:存储器  嵌入式 
录入:manan

【>>>>>察看网友评论 , 或发表您对本文的看法】【 打印
上一篇:有效利用片上分块存储器
下一篇:完全基于绝热电路的静态随机存储器设计

论坛热点

热门笔记



相关新闻