采用Nios定制指令的嵌入式系统优化设计
①可以存储32位输入和32位输出;
②在DCT计算时,能独立于CPU工作;
③用前缀指令接受命令
——装入/卸载
——启动DCT计算
——轮询是否完成。
因为定制指令可以轮询,在DCT输出前其它代码可以并行运行。当需要DCT输出时,定制指令被查询,看是否已完成计算。如果完成,Nios处理器卸载输出数据,同时装入下组输入数据。图4给出了DCT32定制指令及mad_synth_frame的流程图。
(3)优化前后比较
表1给出了三种情况下完成mad_synth_frame函数的比较结果。三种情况分别是只用硬件乘法指令,单用定制指令f_mul及f_mul和DCT32共用。
从表1中可以看出,f_mul是最有效的定制指令,系统规模仅仅增加3%,却减少了77%的循环数目。规模增加很小是因为f_mul定制指令无需专用的硬件乘法器。
表1 三种情况比较
所用硬件 | 循环数目 | 逻辑元件(IE) | 内存位 |
只用硬件乘法 | 1 279 000 | 3 542 | 26 624 |
f_mul | 293 000 | 3 642 | 26 624 |
f_mul和DCT32并行 | 231 600 | 4 331 | 30 528 |
DCT32指令运行在并行模式下,比起f_mul又减少了21%的循环数目,LE资源也只增加了18.9%。
把定制指令所需的额外资源和性能增加情况与只用硬件乘法的基准系统比较。用定制指令能减少执行mad_synth_frame函数时所需的80%循环数目而只增加系统22.3%的规模。该MP3是在Nios开发面板上设计并运行的,频率为33MHz。在不增加时钟频率的情况下,所有性能符合指标。如果需进一步提高性能,还可通过增大时钟频率,加大内存,增加指令和数据缓存等方法来实现。
4 结论
采用Nios定制指令,系统设计得能够把一系列顺序执行的指令简化为通过硬件执行的单个指令,从而简化系统软件设计并且 加快系统运行速度。同时充分利用了可编程逻辑器件通过硬件执行速度快的优点,和用于控制的Nios处理器进行了完美的结合。
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论