# 用硬體加速軟體的概念 >有些程序非常耗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自己建立的組合語言指令**,為什麼這樣比較快呢?本來某些動作,須靠多個組合語言指令才能完成,但現在因為自訂了一個新的組合語言指令,且是為某**特定要求量身訂做的指令**,必定比原本的組合語言指令快,這樣就可以透過硬體的方式來加速軟體了。 硬體加速軟體的流程 1.用verilog寫RTL 做出可以執行自訂指令的硬體 2.自己客製化一個組合語言指令 3.軟體呼叫自己客製化的組合語言指令 所以感覺計組真的滿重要的? 雖然我在組語那邊學的很痛苦QQ reference: https://www.cnblogs.com/oomusou/archive/2006/12/08/586527.html
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up