(原創) 硬體是如何加速軟體呢? (IC Design) (Verilog)

有些程序非常耗CPU運算,無論CPU怎麼進步,還是永遠覺得不夠快,如影像方面的程式,隨著解析度越來越高,運算量就越來越大,再如資料備份的壓縮解壓縮,當資料量很大時,運算量也是非常大,要改進執行速度,通常會用以下幾種方式著手。

1.修改程式碼寫法 : 一些不當的程式寫法,的確會影響速度,如使用pointer或reference可加速,卻使用copy的方式。這點好好閱讀Scott Meyers的Effective C++,More Effective C++, Effective STL就可寫出有效率的程式碼。

2.演算法的改進:演算法的好壞對於效率影響很大,這也是最經濟的方式,是純軟體的方法。

3.將關鍵部份改用組合語言撰寫:如某個關鍵程式需要回圈重複執行上萬次,將這段關鍵的程式改用組合語言撰寫,就可加快速度,也是軟體的方法,算是軟體的極限了。

4.將關鍵部份改用硬體:常常聽到用硬體加速軟體,但到底硬體是怎麼加速軟體呢?今天做了Altera DE2 SOPC的實驗,總算知道硬體是怎麼加速軟體了。

一般CPU都會提供組合語言,讓軟體使用,但DE2上的FPGA晶片,讓我們可以設計自己的組合語言,也就是說,我們可以自己將軟體很耗時很關鍵的部份,用Verilog寫RTL,自訂一個組合語言指令,然後Load進FPGA,然後用軟體直接call自己建立的組合語言指令,為什麼這樣比較快呢?本來某些動作,須靠多個組合語言指令才能完成,但現在因為自訂了一個新的組合語言指令,且是為某特定要求量身訂做的指令,必定比原本的組合語言指令快,這樣就可以透過硬體的方式來加速軟體了。

posted on 2006-12-08 15:51  真 OO无双  阅读(4907)  评论(0编辑  收藏  举报

导航