原创 硬件加速:用起来很美

2010-8-26 10:50 4324 5 10 分类: FPGA/CPLD

硬件加速:用起来很美


         其实在硬件加速方面,特权同学早想写一篇博文,只是苦于没有合适的对比题材。赶上最近的一个系统平台,整个SOPC,完全自己DIY外设系统,所以很大程度上会去考量外设到底是作为硬件外设、还是软件模拟外设,抑或是软硬兼施。在《图片显示速度测试报告》的博文中展现了相当让人无法忍受的软件运行效率,因此,系统必须优化,优化的最好途径就是用硬件来加速。那么,下文就有文章可做了。


         也正好昨天的FTF展示了一款叫做Killer的游戏硬件加速引擎,给特权同学留下了较为深刻的印象。在广告片中,用了两个相同游戏界面作为对比,一个是基于通常的PC平台,另一个则是在原有PC平台上加入了这款游戏硬件加速引擎Killer(估计是一个PCI外设吧,相当于给用户加了一个优化系统显示性能的“显卡”)。先说个题外话,特权同学对游戏不是很在行,不过还记得大学时候比较痴迷的一款NBA live的游戏,由于显卡不堪重负,玩久了,在比赛中就经常卡死。一个很经典的界面:两个球员一前一后,通常是你跑一步,我跑一步,两个球员的“慢速跑动”镜头把CPU的顺序工作机制“穿帮”了。好,回到原话题,在广告游戏中的普通游戏界面里两个人的走动就好似前面的“穿帮”镜头一前一后;而有Killer的平台里两个人则非常协调的看上去“很美”的并行跑动。我想,Killer带来的就是一种纯粹硬件的加速,我不知道那两个人是否真正的在并行工作。因为,在视频面前,人眼是靠不住的。但有,一点是可以确定的:硬件加速不仅看上去很美,而且用起来也很美。


         如果说广告片中Killer有搀水分之嫌,不能让各位看官信服,那么下面特权同学就要用数据和波形来证实这一点:硬件加速确实很美!


使用以下程序测试一幅图片的显示速度。


    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,0x00);  //LED OFF


    Flash_photo_display(0,0);   //送第0幅图片


    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,0xff);  //LED ON


         用示波器观察LED管脚输出的低脉冲时间,即可得出显示一幅图片运行的时间。


         在特权同学的《图片显示速度测试报告》一文中有一段简单的遍历坐标地址清屏程序:


for(y=0;y<480;y++)


{


     for(x=0;x<800;x++)


   {


//送显示数据


IOWR_16DIRECT(MCULCD_CTRL_0_BASE,((y<<11)+(x<<1)),0x001f);     


    }


}


         上面这段程序执行的LED低脉冲情况如图1所示,这个清屏的时间大约需要575ms。《图片显示速度测试报告》一文中已经提到了,这个显示的大部分时间是消耗在了软件变量的变化读写时间上,纯粹硬件接口层(显示控制器外设)的写时间(46ms)占的比例很小。因此软件程序或者说处理器性能将是优化的重点。


a1212d26-b3c8-4e1c-a35a-21a8b021f8ac.GIF



图1


         图2是在图1基础上,读FLASH中预存储的一幅图片,然后逐个像素点的送一幅图片给显示控制器所耗费的时间。这幅图片的显示大约要1.6s,用户如果看着这样一幅图片慢慢的至上而下显示出来,感觉可想而知。优化势在必行。


81273604-c1a2-412f-9ed1-56e19ab4be16.JPG



图2


         先不说如何优化,先看结果。如图3所示。优化后一幅图片的显示只需要70ms左右,基本已经接近了理论的最短时间46ms。呵呵,其实对于优化后的系统来说,理论的最短时间其实已经不是46ms了,要远比这个值小。WHY?不卖关子了,后面要步入正题:因为,硬件加速了!


eb8007c8-7c70-4ae7-b804-a871c439973c.JPG



图3


         粗略的算一下从FLASH读一整幅图片的理论最短时间:


(25us+25ns*2048byte)*375page = 28.575ms。


         而实际上在硬件层度FLASH每个字节的周期是80ns,那么理论时间应该是:


(25us+80ns*2048byte)*375page = 70.815ms。


那么实际上,我们在硬件优化后显示一幅图片的时间完全取决于硬件外设本身,基本和软件以及处理器性能没有关系了。硬件加速真的这么神吗?真的这么管用吗?在这个测试中,特权同学也很震撼,平时我们不仅高估了软件(抑或说是处理器)的性能,而且大大低估了硬件的性能。在这一点上,我想会让我今后对手中的FPGA更有信心。


最后,简单的说一下这个硬件加速系统是如何工作的。如图4所示,是这个系统优化之前的一个简单系统架构,FLASH的读写控制完全交给了CPU,而CPU的每次执行都是依赖于RAM上的程序和变量的,然后CPU还需要把读出来的数据送给LCD Controller。


537c66a1-c962-43c1-9745-eeab851a64c5.jpg



图4


         再来看硬件加速后的系统框图,如图5所示。CPU负责FLASH的控制管理,而FLASH读出来的数据不需要通过CPU,直接送给LCD Controller,这期间省下来的时间使得系统性能发生了翻天覆地的改变,也使得系统的最优化成为可能(图片显示的速度瓶颈最终在于FLASH这个外设)。


39a542f3-0cae-48a7-82dd-e16ff7310198.jpg



图5


 


《视频: Freescale的killer硬件加速引擎》:http://v.youku.com/v_show/id_XMjAxMDg3MzI4.html


《图片显示速度测试报告》:http://blog.ednchina.com/ilove314/1821651/message.aspx


 

文章评论5条评论)

登录后参与讨论

用户380644 2011-3-5 16:40

是不是就是用外部硬件实现DMA功能呀 大尺寸的液晶屏都需要硬件加速吧 不然由于带宽的原因 显示效果无法忍受

ilove314_323192455 2010-10-20 11:56

YES

用户237273 2010-10-19 23:20

这是不是有点像DMA?

用户553565 2010-8-26 09:28

希望能得到你的答复。。谢谢

用户553565 2010-8-26 09:27

实际数: 0x08 0x06 0x00 0x02 0x00 0x00 0x00 0x09 我得出的数据。 0x08 0x06 0x00 0x02 0x00 0x00 0x00(这里为空字符) 开始USB 设备请求 设置地址 设备请求 置配请求。。。0x08 0x06 0x00 0x02 0x00 0x00 0x00 (这里为空字符) 就在这里出错。。读不出长度。。停一会,再重新枚举, 最后还能枚举成功,不明什么原因?我用D11和D12都是一样。用圈圈的程序也是一样,(因为我用AVR,可能会有点不同,但总体上相同。)郁闷啊。 reset重起 suspend挂起 reset重起 suspend挂起 suspend挂起 reset重起 设备描述符请求。 设地址 设备描述符请求。 配置描述符。。。()这里没有给出长度。。/。?不明。 如果发现上面情况如何解决,都被这个问题弄了几个月了,都不知原因。。。
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
我要评论
5
5
关闭 站长推荐上一条 /2 下一条