資料介紹
14.10 浮點(diǎn)運(yùn)算
大多數(shù)的ARM處理器硬件上并不支持浮點(diǎn)運(yùn)算。但ARM上提供了以下幾個(gè)選項(xiàng)來實(shí)現(xiàn)浮點(diǎn)運(yùn)算。
· 浮點(diǎn)累加協(xié)處理器FPA(Floating-Point Accelerator):ARM上提供了一組協(xié)處理器指令專門實(shí)現(xiàn)浮點(diǎn)運(yùn)算。但這需要硬件支持,具體某一處理器上是否有FPA協(xié)處理器支持,可以查看ARM相關(guān)手冊(cè)。
· 浮點(diǎn)運(yùn)算仿真(FPE):使用軟件仿真了FPA協(xié)處理器的執(zhí)行。
· 浮點(diǎn)運(yùn)算庫(kù)(FPLib):使用ARM的浮點(diǎn)運(yùn)算庫(kù)函數(shù)實(shí)現(xiàn)程序中的浮點(diǎn)運(yùn)算操作。這就意味著C編譯器要把每一個(gè)浮點(diǎn)操作轉(zhuǎn)換成一個(gè)子程序調(diào)用。C庫(kù)中的子函數(shù)使用整型運(yùn)算來模擬浮點(diǎn)操作。這些代碼是用高效的匯編語言編寫而成的。盡管如此,浮點(diǎn)運(yùn)算執(zhí)行起來還是要比相應(yīng)整型運(yùn)算慢得多。
注意Thumb指令不支持協(xié)處理器指令,所以在Thumb狀態(tài)下實(shí)現(xiàn)浮點(diǎn)運(yùn)算,只能調(diào)用ARM浮點(diǎn)運(yùn)算庫(kù)。
為了在ARM上高效地實(shí)現(xiàn)浮點(diǎn)運(yùn)算,請(qǐng)遵循以下規(guī)則。
· 避免使用浮點(diǎn)除法運(yùn)算。通常情況下,除法運(yùn)算的執(zhí)行速度是普通加法或乘法運(yùn)算速度的1/2。在無法避免除法的情況下,盡量使除法的除數(shù)為常數(shù)。如,x=x/3.0,可將其變?yōu)閤 = x * (1.0/3.0)。這樣除數(shù)為常數(shù)(1.0/3.0),該值在編譯階段由編譯器計(jì)算。
· 使用float型代替double型。float型要比double使用更少的內(nèi)存和寄存器。
· 避免使用三角函數(shù)功能。實(shí)現(xiàn)三角函數(shù)功能,如sin、cos,使用了大量的乘加運(yùn)算,它的運(yùn)算速度大約是普通乘法運(yùn)算的十倍。
· 當(dāng)編譯器處理浮點(diǎn)運(yùn)算操作時(shí),由于精度的影響很多優(yōu)化不能實(shí)現(xiàn)。比如,表達(dá)式3 * (x / 3),編譯器不能判斷其值和x是等價(jià)的。所以在使用浮點(diǎn)運(yùn)算表達(dá)式時(shí),最好先人工的做一些必要的優(yōu)化。
?
大多數(shù)的ARM處理器硬件上并不支持浮點(diǎn)運(yùn)算。但ARM上提供了以下幾個(gè)選項(xiàng)來實(shí)現(xiàn)浮點(diǎn)運(yùn)算。
· 浮點(diǎn)累加協(xié)處理器FPA(Floating-Point Accelerator):ARM上提供了一組協(xié)處理器指令專門實(shí)現(xiàn)浮點(diǎn)運(yùn)算。但這需要硬件支持,具體某一處理器上是否有FPA協(xié)處理器支持,可以查看ARM相關(guān)手冊(cè)。
· 浮點(diǎn)運(yùn)算仿真(FPE):使用軟件仿真了FPA協(xié)處理器的執(zhí)行。
· 浮點(diǎn)運(yùn)算庫(kù)(FPLib):使用ARM的浮點(diǎn)運(yùn)算庫(kù)函數(shù)實(shí)現(xiàn)程序中的浮點(diǎn)運(yùn)算操作。這就意味著C編譯器要把每一個(gè)浮點(diǎn)操作轉(zhuǎn)換成一個(gè)子程序調(diào)用。C庫(kù)中的子函數(shù)使用整型運(yùn)算來模擬浮點(diǎn)操作。這些代碼是用高效的匯編語言編寫而成的。盡管如此,浮點(diǎn)運(yùn)算執(zhí)行起來還是要比相應(yīng)整型運(yùn)算慢得多。
注意Thumb指令不支持協(xié)處理器指令,所以在Thumb狀態(tài)下實(shí)現(xiàn)浮點(diǎn)運(yùn)算,只能調(diào)用ARM浮點(diǎn)運(yùn)算庫(kù)。
為了在ARM上高效地實(shí)現(xiàn)浮點(diǎn)運(yùn)算,請(qǐng)遵循以下規(guī)則。
· 避免使用浮點(diǎn)除法運(yùn)算。通常情況下,除法運(yùn)算的執(zhí)行速度是普通加法或乘法運(yùn)算速度的1/2。在無法避免除法的情況下,盡量使除法的除數(shù)為常數(shù)。如,x=x/3.0,可將其變?yōu)閤 = x * (1.0/3.0)。這樣除數(shù)為常數(shù)(1.0/3.0),該值在編譯階段由編譯器計(jì)算。
· 使用float型代替double型。float型要比double使用更少的內(nèi)存和寄存器。
· 避免使用三角函數(shù)功能。實(shí)現(xiàn)三角函數(shù)功能,如sin、cos,使用了大量的乘加運(yùn)算,它的運(yùn)算速度大約是普通乘法運(yùn)算的十倍。
· 當(dāng)編譯器處理浮點(diǎn)運(yùn)算操作時(shí),由于精度的影響很多優(yōu)化不能實(shí)現(xiàn)。比如,表達(dá)式3 * (x / 3),編譯器不能判斷其值和x是等價(jià)的。所以在使用浮點(diǎn)運(yùn)算表達(dá)式時(shí),最好先人工的做一些必要的優(yōu)化。
?
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- LabViEW编程之VI服务器综述25次下载
- Windows编程之数值运算综述5次下载
- 浮点DSP运算效率不高10次下载
- DSP教程之DSP数值运算基础总结的详细资料说明9次下载
- C语言教程之数据类型与运算符的详细资料说明8次下载
- C语言实用教程之数据类型运算符和表达式的详细资料说明10次下载
- 浮点运算单元的FPGA实现8次下载
- 多核浮点非线性运算协处理器设计0次下载
- 定点DSP C55X实现浮点相关运算解析2次下载
- 高效的C编程之除法运算5次下载
- C语言教程之平方和运算的问题0次下载
- 浮点 DSP 运算效率不高0次下载
- 定点dsp浮点运算教程50次下载
- DSP的浮点运算方法4次下载
- 浮点运算方法29次下载
- 技术干货驿站 ▏解锁C语言高效编程秘诀:深入解析运算符与优先级557次阅读
- 技术干货驿站 ▏深入理解C语言:编程高手必备,全方位解析运算符的核心技能!706次阅读
- 优秀的Verilog/FPGA开源项目-浮点运算器(FPU)介绍5154次阅读
- C语言编程的七大陷阱与高效避坑指南788次阅读
- C语言的运算符1498次阅读
- FPGA浮点数转化为定点数方法5383次阅读
- 如何在FPGA中正确处理浮点数运算5457次阅读
- 三菱PLC浮点数运算指令17789次阅读
- Altera FPGA硬核浮点DSP模块解决方案提高运算性能3846次阅读
- 基于TI TMS320C6748定点/浮点DSP C674x处理器3431次阅读
- 单片机浮点数的运算原理及表达方式13234次阅读
- 利用FPGA技术能更方便灵活设计出浮点运算器3683次阅读
- 基于FPGA的嵌入式处理器的浮点系统1796次阅读
- 快速高效的实现浮点复数矩阵分解1138次阅读
- pic单片机io口控制教程之c语言编程实现12213次阅读
下載排行
本周
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 3錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 3次下載 | 1 積分
- 4蘋果iphone 11電路原理圖
- 4.98 MB | 3次下載 | 2 積分
- 5基礎(chǔ)模擬電子電路
- 3.80 MB | 3次下載 | 1 積分
- 6RA-Eco-RA6M4-100PIN-V1.0開發(fā)板資料
- 34.89 MB | 1次下載 | 免費(fèi)
- 7STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊(cè)
- 3.32 MB | 1次下載 | 免費(fèi)
- 8聯(lián)想A820t手機(jī)維修圖紙包括主板原理圖 尾板原理圖 點(diǎn)位圖
- 0.62 MB | 次下載 | 5 積分
本月
- 1AI智能眼鏡產(chǎn)業(yè)鏈分析
- 4.43 MB | 383次下載 | 免費(fèi)
- 2蘇泊爾電磁爐線路的電路原理圖資料合集
- 2.02 MB | 296次下載 | 5 積分
- 3貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說明
- 0.50 MB | 94次下載 | 1 積分
- 4長(zhǎng)虹液晶電視R-HS310B-5HF01的電源板電路原理圖
- 0.46 MB | 91次下載 | 5 積分
- 5涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 6錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 7AO4803A雙P通道增強(qiáng)型場(chǎng)效應(yīng)晶體管的數(shù)據(jù)手冊(cè)
- 0.11 MB | 28次下載 | 2 積分
- 8長(zhǎng)虹液晶彩電LS29機(jī)芯的技術(shù)資料說明
- 3.42 MB | 16次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191388次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論