資料介紹
??有很多種算法可對單精度浮點數字的正弦值進行計算,但添加硬件加速器是功能最為強大的方法之一。之所以得出這一結論,是因為客戶的應用要求使用此類正弦計算,而我們又針對能夠提供良好、快速且高效的解決方案進行了多種方案的探索。
??為了確定哪種實現方式最適合您的應用,首先需要對代碼進行分析,以查找哪種功能需要改進;其次,由于修改軟件比修改硬件更簡便、迅速,因而請檢查是否能通過修改軟件來實現您所需的高速度(有時可以)。但是如果您還需要更高的性能,那么請考慮在硬件中實現部分算法。在硬件加速的支持下,您可以輕松勝過市場上任意或DSP。
??為了解該流程,讓我們以現實案例為例,探討如何開發一個需要針對單精度浮點數字進行正弦計算的軍事應用。出于對高性價比的原因考慮,客戶已選擇了一款采用嵌入式 MicroBlaze?的Spartan?-6 FPGA 作為主系統控制器。可處理正弦計算的軟件算法應運行于MicroBlaze 之上。
??客戶的算法主要使用浮點運算。由于算法復雜,轉而采用定點運算并不妥當。此外,客戶還希望避免使用定點運算時可能出現的運行過度或運行不足的情況。
??客戶清楚 MicroBlaze IP 可提供兩種類型的浮點單元 (FPU),并已選用擴展版本(相對于基本版而言)來加速算法。但是,這樣做就無法利用作為GNU工具鏈組成部分且隨 EDK 一起交付的數學仿真庫。數學庫中的軟件仿真例程程序運行速度非常慢,在任何情況下都應盡量避免將其用于算法中對性能起到關鍵作用的部分。
??另外,客戶還清楚 MicroBlaze FPU的兩個版本都只能處理單精度數據,不能處理雙精度數據。客戶的算法可以明確地僅使用浮點精度數據 (float precision data)。但在開始使用數學函數時,有時也會進行隱式轉換。這些轉換會強制算法
??在不知不覺中使用雙精度數據。
?
??步驟一:分析問題
?
??我們的客戶已經在運行他的算法,但發現該算法在MicroBlaze處理器上的運行速度偏慢。在對代碼庫進行特性描述后,客戶發現引起速度慢的原因是正弦計算。下一步是找出其中原因并分析怎樣做才能加快處理速度。
??第一種方案是使用數學庫提供的標準正弦函數,在客戶將算法寫入后,在不進行任何修改的情況下完整地運行它。主要的問題在于數學庫函數僅針對雙精度數據而創建,這就意味著正弦函數的原型應為如下所示:
??double sin(double angle);
??但客戶希望以下列方式使用:
??float sin_val;
??float angle;
??...
??sin_val = sin(angle);
??當然,這也是可能的,而且C編譯器會自動從參數角添加所需的轉換,進行“雙精度化”,并將函數調用的結果轉回浮點值。這樣通常還是由數學庫函數來執行兩個額外的轉換函數,甚至是正弦計算。
??切記,MicroBlaze的FPU為單精度版本,只能完成如下執行指令:
??sin_val = (float)sin((double)angle);
??由于數學庫的正弦函數是雙精度的,因而FPU無法完成正弦計算,故需要純軟件的解決方案。但缺點在于速度太慢,無法滿足客戶的需求。
??我們驗證了使用雙精度數據進行正弦值的計算是執行緩慢的原因。首先我們使用下列代碼,從我們的執行文件中直接創建匯編代碼:
??mb-objdump.exe -D executable.elf
??>dump.txt
??檢查匯編代碼時,我們發現了如下代碼行:
??brlid r15,-15832 // 4400d300
??其作用是調用數學庫以進行雙精度正弦計算。然后,我們測量了利用數學庫函數完成單次正弦計算所需的時間,約為 38,700個CPU周期。
??對于特定的任務,可以使用專用單精度函數,如計算平方根:
??float sqrt_f( float h);
??使用專用函數可以避免單、雙精度函數之間的轉換,而且還可充分利用MicroBlaze FPU。
??但遺憾的是,在FPU上沒有用于處理正弦計算的專用函數。此時,我們開始開發多個版本的算法來加速正弦值的計算,以實現更高的性能。
?
??步驟二:創建更好的軟件算法
?
??創建硬件加速器通常需要一段時間而且也需要進行調試,因而我們試圖避免在第一次運行中就采取這種方案。我們就性能問題與客戶進行了溝通,獲得了正弦計算的關鍵參數。
??客戶的算法要求正弦計算的參數角應具有1%的精度,而且計算出的正弦值精度應比數學庫函數調用的結果高0.1%。
??這些屬于關鍵參數,而且客戶告知我們,他有時必須按順序計算多個正弦值(比如在處理之前先填入小表格)。
??由于對表格的尺寸要求, 使用填充了所有數值的查找表顯然不太可能。條目的最小數量為360,000個浮點數值(每個值 4 個字節)。客戶想找到高速解決方案,但在大小上也應該合適。我們建議的解決方案可使用下列等式:
??sin(xi) with xi = x + d
??得到:
??sin(x+d) = sin(x)*cos(d) +cos(x)*sin(d)
??在這里,d是一個始終小于 x最小可能值(大于0)的值。這種解決方案有什么優勢呢?我們需要縮小表格的大小,但會帶來計算量的增加。表格從開始就劃分為四個表格:
??cos(x)
??sin(x)
??cos(d)
??sin(d)
??圖1和圖2顯示了所有4個表格所需的分辨率以及這些值通常情況下的表現。這些表格僅顯示了16個值的條目,用于說明需要填入我們的查找表中的值。我們在我們最終的解決方案中所使用的值要多得多。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 話處理器基礎知識 1次下載
- 基帶處理器的一般設計原則資料下載
- NiOSⅡ處理器的Avalon總線架構資料下載
- 國內處理器的指令集體系及技術來源資料下載
- 到底64位處理器和32位處理器有什么區別呢?資料下載
- “硬件軟件化”,32位處理器的開發與8位處理器的開發資料下載
- 以單片機為核心處理器 無線解說器資料下載
- 詳解微處理器和微控制器的區別資料下載
- Cortex-M0處理器的故障處理和功耗管理資料下載
- Cortex-M0處理器的異常處理模型資料下載
- 為什么我的處理器漏電?資料下載
- 正弦波計算器應用程序免費下載 17次下載
- M3處理器的詳細原理圖資料免費下載 58次下載
- 如何使用TMS320C54X數字信號處理器產生正弦波的詳細資料概述 15次下載
- 加速處理器的正弦函數計算步驟 22次下載
- 對稱多處理器的特點是什么 480次閱讀
- 處理器的定義和種類 2800次閱讀
- 中央處理器的工作原理及基本結構 2179次閱讀
- 簡單認識MIPS架構處理器 2019次閱讀
- 手機處理器與電腦處理器的差異分析 9231次閱讀
- 4大主流CPU處理器的技術架構是怎么樣的 9706次閱讀
- 協處理器的介紹及應用 4135次閱讀
- arm的協處理器有幾個?ARM協處理器詳解 8996次閱讀
- 手機上的協處理器有什么作用_蘋果協處理器是干什么的 2.1w次閱讀
- 8086微處理器的組成與工作原理 1.3w次閱讀
- HBase的協處理器開發編碼實例 1895次閱讀
- 協處理器是什么_intel協處理器有什么用 2.6w次閱讀
- a11處理器規格_蘋果a11處理器詳細參數 6.9w次閱讀
- 單片機、微控制器和微處理器有什么區別 2.1w次閱讀
- 微處理器與微控制器的區別 6683次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1489次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 91次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 9次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7基于單片機和 SG3525的程控開關電源設計
- 0.23 MB | 3次下載 | 免費
- 8基于單片機的紅外風扇遙控
- 0.23 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30319次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多