首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

基于Shared Memory的多核算法处理系统及实现

作者:吕涛涛 邓正宏 来源:现代电子技术

摘要: 随着电子产业、工商业以及军事化产业的迅猛发展,越来越多的复杂运算已经无法单纯利用算法上的优化处理来大幅提升执行速度。为了解决日益复杂的计算问题,利用多核处理势必成为一种大势所趋。所以着手从多核和单核对比出发,利用Xilinx 的XUP Virtex?2 Pro建立多核处理平台(基于Shared Memory通信机制)以及单核平台,并将相同的图像处理算法DCT分别运行在所构造的基于FPGA的单核和多核硬件平台上,观察实验结果,比较多核和单核运行所需的时间以及资源的消耗,最终的结果有力的说明多核在图像处理方面的绝对优势。

关键词: 多核处理平台; Shared Memory; 离散余弦变换; FPGA; 图像处理

中图分类号: TN919?34;TP274+.2 文献标识码: A 文章编号: 1004?373X(2013)06?0010?05

0 引 言

基于FPGA的嵌入式应用在近几年来作为一个比较新颖的课题,已经在通信、消费电子、医疗、工业和军事等诸多领域占据了相当重要的地位。相对于其他芯片来说,使用FPGA设计的电路执行速度快、上市时间短、成本低廉、可靠性高以及易于维护升级。正是这些优点才使得FPGA的应用范围越来越广泛,备受各个领域设计师们的青睐。但是有关于它在多核体系[1]上的研究却一直很少有人涉及。本文在研究各种核间通信机制的基础上,提出了一种基于Mailbox核间机制的多核处理系统[2],在该系统中集成了Xilinx的软核处理器Microblaze,其降低了使用多信号处理板但来的成本问题同时还节省了空间,对更好的发挥多核系统提出了新的解决方案。

1 总线机制与核间通信机制

1.1 PLB总线

1.2 LMB总线

LMB总线主要用来连接片上BRAM(Block RAM)。为了能在一个时钟周期内完成访问,LMB采用了最少的控制信号和简单协议的方式。它分为指令寄存器DLMB和数据寄存器ILMB两类接口,而且这些接口只和BRAM连接。

1.3 Shared Memory通信机制

共享内存是一种典型的快速异步通信机制,因其使得零拷贝有可能实现,固非常适用于大于1 000 B的大型数据量共享的情况,共享内存可分为两种:Block RAM和外部内存DDRR。

2 RGB2YCrCb算法以及DCT算法介绍

而DCT变换[5]是视频压缩编解码器中很重要的一部分,被广泛应用于各种视频格式的编码算法中,例如:JPEG,MPEG1,MPEG2,H.264等。

DCT是先将整体图像分为N×N的像素块,然后对N×N的像素块逐一进行DCT变换。由于大多数图像的高频分量较小,对应于图像高频分量的系数经常为零,加上人眼对于高频成分的失真不太敏感,所以可以用更粗糙的量化。因此,传送变换系数的数码率要大大小于传送图像像素所用的数码率。图像到达接收端后通过反离散余弦变换回到样值,虽然会有一定的是真,但人眼是可以接受的,公式如下:

式中和在为0时等于,其他情况下均为1,而

3 多核系统设计环境与系统软硬件的设计

本文所采用的软件开发环境是Xilinx公司旗下的ISE 10.1[6?7]开发套件,硬件开发平台采用的是Xilinx的XUP Virtex?2 Pro[8?9]开发板,而ISE 10.1开发套件嵌入了EDK开发包(其集成了Xilinx Platform studio,Software Development,库文件生成器,编译工具等开发模块),这样就大大方便了软硬件的开发。

3.1 利用XPS向导进行多核硬件系统设计

硬件系统采用的总线机制为PLB总线,所有的Microblaze均挂在这两条总线上,并且以Microblaze0作为主处理器,其他用作从处理器。

设计中PLB总线的从设备主要是xps?uartlite,它作为系统的主要验证手段,通过串口打印可以在PC机终端里输出核间通信信息。LMB总线则用于连接片上BRAM和MB的各个LMB接口,实现了D/I LMB端口与启动内存块、数据/指令控制器的互连。

PLB桥的作用是使得所有的处理器可以共享外围设备,如串口RS 232等。

4 硬件实现

4.1 测试所搭建的硬件系统的步骤

(1)点击Hardware下的Generate Bitstream按钮,生成配置FPGA所需要的比特流文件;

(2)将PC机与Virtex?2 Pro开发板正确连接,并且给开发板上电;

(3)打开超级终端或是Putty工具,设置正确的参数(如波特率、奇偶校验位以及流控制位等),确保和创建硬件系统时的设置一致;

(4)点击Device Configuration下的Download Bitstream进行比特流的下载配置;

(5)观察终端中的打印信息,判断是否和Testapp_Memory.c文件中的一致。

4.2 单核执行图像处理算法以及时间测量

4.2.1 图像算法在单核上的执行流程

(1)算法按照宏块顺序往下处理,先处理第一个宏块;

(2)对第一个宏块的前4个Y分量进行RGB2YCrCb处理,完成后对YCrCb结果做DCT(YMatrix, color)变换;

(3)对第一个宏块的Cr分量进行RGB2YCrCb处理,完成后对YCrCb结果做DCT(CrMatrix, color)变换;

(4)对第一个宏块的Cb分量进行RGB2YCrCb处理,完成后对YCrCb结果做DCT(CbMatrix, color)变换;

(5)返回到步骤(1)进行第二个宏块的处理。

基于单核架构的处理流程是一个串行执行过程,体现在宏块于宏块之间是处于一种阻塞等待性的机制,换言之,只要宏块0的任何一个分量(Y/Cr/Cb)没有独立处理且最终完全处理完毕后处理器都必须等待,而无法转向宏块1进行后续的处理。

4.3 多核执行图像处理算法以及时间测量

4.4 单核/多核体系占用资源对比

通过编译,在生成的编译报告中将两者所用的资源统计如表3所示。从表中可以看到在硬件资源的占用上,双核体系的确消耗的资源较多。

5 结 语

多核系统由于采用了并行环路体系并摒弃了单核阻塞状态下的等待时间,从而能够达到处理时间上的优化,但是另一方面其对片上资源的消耗也会随着从处理器的增加与日俱增,这也印证了“速度与面积”不能兼得这条原则,所以在工程中一定要做好权衡,权衡算法性能优化和硬件资源占用率的取舍,最好能够折中。

表3 多核和单核处理平台各项资源对照表

当然在处理如图像处理、信号处理类的一些复杂算法时,多核机制还是相当具有可取性的,毕竟在实际工程中,往往不介意以空间资源消耗来获取时间上的优化处理。

参考文献

[1] 张亮,沈沛意,肖潇,等.基于Xilinx FPGA的多核嵌入式系统设计基础[M].西安:西安电子科技大学出版社,2011.

[2] 李兰英,李霄燕.基于NiosⅡ的SoPC多处理器系统设计方法[J].单片机与嵌入式系统应用,2007(3):18?20.

[3] 郑升华,蒋本珊.基于Mailbox的图像误差扩散并行算法的SoPC实现[J].电子技术应用,2008(8):25?26.

[4] 封岸松,战仕成,汪滢.基于FPGA的RGB到YCrCb颜色空间转换[J].现代电子技术,2010,33(10):122?123.

[5] 张晓晨.DCT 算法分析与结构设计[D].上海:上海交通大学,2010.

[6] 杨跃.FPGA应用开发实战技巧精粹[M].北京:人民邮电出版社,2009.

[7] 石英,李新新,姜宇柏.ISE应用于软件开发[M].北京:机械工业出版社,2006.

[8] Xilinx Inc. Virtex?II Pro and Virtex?II Pro X platform FPGAs: complete datasheet [DB/OL]. [2005?09?15]. http://www.xilinx.com/products/silicon_solutions/fpgas/virtex/virtex_ii_profpga.

[9] Xilinx Inc. Virtex?II Pro and Virtex?II Pro X FPGA user guide [EB/OL]. [2005?03?23]. http://www.xilinx.com/support.

[10] 谭浩强.C语言程序设计[M].北京:清华大学出版社,2001.

[11] 刘斌,何剑锋,孙玲玲.基于FPGA的H.264 DCT算法的硬件实现[J].现代电子技术,2012,35(10):90?92.

[12] 柏均,郑泽国.基于RGB空间的DCT域彩色图像水印算法[J]. 现代电子技术,2010,33(4):26?28.