在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C2000浮點運算注意事項之CPU和CLA的差異及誤差處理技巧

電子設計 ? 來源:德州儀器 ? 作者:德州儀器 ? 2021-12-10 10:37 ? 次閱讀

C28x+FPU架構的C2000微處理器在原有的C28x定點CPU的基礎上加入了一些寄存器和指令,來支持IEEE 單精度浮點數的運算。對于在定點微處理器上編寫的程序,浮點C2000也完全兼容,不需要對程序做出改動。浮點處理器相對于定點處理器有如下好處:

編程更簡單

性能更優,比如除法,開方,FFT和IIR濾波等算法運算效率更高。

程序魯棒性更強。

一、IEEE754格式的浮點數

C28x+FPU的單精度浮點數遵循IEEE754格式。它包括:

1位符號位:0表示正數,1表示負數。

8位階碼

23位尾數

31 30 23 22 0
符號位 階碼 尾數

表1:IEEE單精度浮點數

符號位S 階碼E 尾數M
0 0 0 正0
1 0 0 負0
0或1 0 非0 非規格化數(1)
0 1-254 0x00000-0x7FFFF 正常范圍正數(2)
1 1-254 0x00000-0x7FFFF 正常范圍負數(2)
0 255 0 正無窮大
1 255 0 負無窮大
0或1 255 非0 非數值(NaN)

(1)非規格化數值非常小,計算公式為(-1)sx2(E-126)x0.M

(2)正常范圍數值計算公式為(-1)sx2(E-127)x1.M

正常范圍數值落在± ~1.7 x 10 -38 to ± ~3.4 x 10 +38范圍內。從表1可以看出,IEEE754標準包括:

標準數據格式和特殊值,比如非數值(NaN)和無窮大

標準舍入模式和浮點運算

多平臺支持,包括德州儀器C67x系列芯片。

C2000對該標準作了一些簡化:

狀態標志位和比較運算不區分正0和負0

非規格化數值被認為是0

對非數值(NaN)處理方式和無窮大一樣。

IEEE754標準有5種舍入模式,C28x+FPU只支持其中兩種:

--截斷:小數位不管大小全部舍去

--就近舍入向偶舍入:這種模式下如果小數位小于5就舍去,大于5就進位,如果小數位為5,則舍入到最近的偶數。

表2展示了不同的舍入模式對數據的影響。C28x+FPU編譯器默認將微處理器配置為就近舍入向偶舍入模式[1]。

表2:不同舍入模式示例

模式/實際值 +11.5 +12.5 ?11.5 ?12.5
就近舍入向偶舍入 +12.0 +12.0 ?12.0 ?12.0
就近舍入遠離0舍入 +12.0 +13.0 ?12.0 ?13.0
截斷 +11.0 +12.0 ?11.0 ?12.0
向上舍入 +12.0 +13.0 ?11.0 ?12.0
向下舍入 +11.0 +12.0 ?12.0 ?13.0

二、浮點C2000芯片運算技巧和注意點

浮點數的精度由尾數位決定,絕大多數的數在用浮點數表示時都會有誤差,這些誤差很小,多數情況下可以忽略,但是在經過多次計算后這個誤差可能會大到無法接受。

下面用實例來進行說明,下面一段代碼定義float類型變量,分別在TI最新的Delfino芯片F28379D的CPU1和CLA1上,將11.7加20001次。

floatCLATMPDATA=0;

intindex=20001;

while(index--)

{

CLATMPDATA=CLATMPDATA+11.7;

}

得到如下結果:

其中CLATMPDATA1是在CLA中將11.7加20001次得到的結果,CLATMPDATA2是在CPU中將11.7加20001次得到的結果。可以看出兩者所得到的結果不同,并且都和正確結果234011.7有較大差距。

為何CPU和CLA計算結果不同?

CPU和CLA運算結果的不同是由于其對浮點數的舍入模式的不同造成的,前文已經說過,C28x+FPU 編譯器默認將CPU配置為就近舍入向偶舍入模式。而CLA不同,CLA默認為截斷舍入模式[2]。在CLA的代碼中,我們可以通過增加下述代碼:

__asm(" MSETFLG RNDF32=1");//1為就近舍入向偶舍入,0為截斷舍入

將CLA的舍入模式更改為就近舍入向偶舍入模式,然后再運行代碼,可以得到和CPU同樣的結果。

2. 為何CPU和CLA計算結果都有較大誤差?如何解決?

11.7在用IEEE754格式的浮點數表示時為0x413b3333,其對應的實際值為11.69999980926513671875,可以看出誤差很小,但是經過多次累加多次舍入后得到的結果誤差較大,對此,我們可以將CLATMPDATA定義為long double型變量(64位),再次運行相同的代碼,可以得到如下結果,可以看到誤差很小可以忽略。

需要指出的是,現有的C28x CPU只支持單精度(32位)的硬件浮點運算,對于64位雙精度浮點數的運算都是通過軟件實現的,所以其運算速率會慢很多。另外CLA不支持64位數。

在這個實例中,我們可以分別觀察float類型變量和long double類型變量的匯編代碼如下:

C code: CLATMPDATA2=CLATMPDATA2+11.7;

如果CLATMPDATA2是float型變量,則相應的匯編代碼為:

00c08d: E80209D8 MOVIZ R0, #0x413b 1cycle

00c08f: E2AF0112 MOV32 R1H, @0x12, UNCF 1cycle

00c091: E8099998 MOVXI R0H, #0x3333 1cycle

00c093: E7100040 ADDF32 R0H, R0H, R1H 2cycle

00c095: 7700 NOP 1cycle

00c096: E2030012 MOV32 @0x12, R0H 1cycle

如果CLATMPDATA2是long double型變量,則相應的匯編代碼為:

00c08b: 7680005A MOVL XAR6, #0x00005a 1cycle

00c08d: 8F00005A MOVL XAR4, #0x00005a 1cycle

00c08f: 8F40C26A MOVL XAR5, #0x00c26a 1cycle

00c091: FF69 SPM #0 1cycle

00c092: 7640C0C9 LCR FD$$ADD 4cycle(跳轉耗時)

+25cycle(FD$$ADD函數內部需要25cycle)

可以看出CPU對float類型數執行一次加法耗時7個cycle,對long double類型數執行一次加法耗時33個cycle。

三、結論

1. C2000的CPU和CLA默認的舍入模式不同,在計算浮點數時可能會得到不同的結果,但是我們可以通過代碼改變其舍入模式得到相同的結果。

2. 單精度浮點數經過多次計算后可能會有較大誤差,可以通過將變量定義為64位long double型解決精度問題。

3. C28x CPU只支持單精度(32位)的硬件浮點運算,對于64位雙精度浮點數的運算都是通過軟件實現的,所以其運算速率會慢很多。在下一代的C2000產品中我們會實現對64位雙精度浮點數運算的硬件支持。

編輯:金巧

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11003

    瀏覽量

    215038
  • 嵌入式處理
    +關注

    關注

    0

    文章

    341

    瀏覽量

    10227
  • Cla
    Cla
    +關注

    關注

    0

    文章

    15

    瀏覽量

    10629
  • FPU
    FPU
    +關注

    關注

    0

    文章

    44

    瀏覽量

    21606
收藏 0人收藏

    評論

    相關推薦

    運算放大器的使用注意事項

    上篇我們了解了運算放大器的基本定義和內部工作原理。在本篇中,為了把運算放大器用好,建議我們在使用之前,先弄清一些重要的產品性質和注意事項
    的頭像 發表于 04-07 17:18 ?556次閱讀
    <b class='flag-5'>運算</b>放大器的使用<b class='flag-5'>注意事項</b>

    EE-276:Blackfin處理器上圖像處理的視頻框架注意事項

    電子發燒友網站提供《EE-276:Blackfin處理器上圖像處理的視頻框架注意事項.pdf》資料免費下載
    發表于 01-06 14:17 ?0次下載
    EE-276:Blackfin<b class='flag-5'>處理</b>器上圖像<b class='flag-5'>處理</b>的視頻框架<b class='flag-5'>注意事項</b>

    TN:選擇DSP處理器的注意事項ADSP-21161和TMS360C6711/12

    電子發燒友網站提供《TN:選擇DSP處理器的注意事項ADSP-21161和TMS360C6711/12.pdf》資料免費下載
    發表于 01-03 14:58 ?0次下載
    TN:選擇DSP<b class='flag-5'>處理</b>器的<b class='flag-5'>注意事項</b>ADSP-21161和TMS360<b class='flag-5'>C</b>6711/12

    TI C2000系列重大更新!首次加入NPU,內核升級到64位!

    電子發燒友網報道(文/黃晶晶)從1994年推出第一顆TMS320C10處理器開始,C2000 DSP已走過了30年的輝煌歷程。期間C2000系列不斷迭代升級,陸續加入
    的頭像 發表于 12-05 11:52 ?2978次閱讀
    TI <b class='flag-5'>C2000</b>系列重大更新!首次加入NPU,內核升級到64位!

    C2000? MCU在有器件復位時的實時固件更新

    電子發燒友網站提供《C2000? MCU在有器件復位時的實時固件更新.pdf》資料免費下載
    發表于 11-25 14:16 ?0次下載
    <b class='flag-5'>C2000</b>? MCU在有器件復位時的實時固件更新

    C2000實時控制外設參考指南

    電子發燒友網站提供《C2000實時控制外設參考指南.pdf》資料免費下載
    發表于 11-12 15:38 ?1次下載
    <b class='flag-5'>C2000</b>實時控制外設參考指南

    C2000實時控制MCU外設

    電子發燒友網站提供《C2000實時控制MCU外設.pdf》資料免費下載
    發表于 11-09 14:55 ?1次下載
    <b class='flag-5'>C2000</b>實時控制MCU外設

    C2000? MISRA-C策略

    電子發燒友網站提供《C2000? MISRA-C策略.pdf》資料免費下載
    發表于 10-11 11:43 ?0次下載
    <b class='flag-5'>C2000</b>? MISRA-<b class='flag-5'>C</b>策略

    C2000 CPU內存內置自檢功能

    電子發燒友網站提供《C2000 CPU內存內置自檢功能.pdf》資料免費下載
    發表于 10-10 09:27 ?0次下載
    <b class='flag-5'>C2000</b> <b class='flag-5'>CPU</b>內存內置自檢功能

    快速整數除法C2000產品系列的差異化產品

    電子發燒友網站提供《快速整數除法C2000產品系列的差異化產品.pdf》資料免費下載
    發表于 09-19 13:36 ?0次下載
    快速整數除法<b class='flag-5'>C2000</b>產品系列的<b class='flag-5'>差異</b>化產品

    C2000 MCU JTAG 連接調試

    電子發燒友網站提供《C2000 MCU JTAG 連接調試.pdf》資料免費下載
    發表于 09-09 09:30 ?0次下載
    <b class='flag-5'>C2000</b> MCU JTAG 連接調試

    C2000?硬件內置自檢

    電子發燒友網站提供《C2000?硬件內置自檢.pdf》資料免費下載
    發表于 09-03 11:33 ?0次下載
    <b class='flag-5'>C2000</b>?硬件內置自檢

    C2000?器件中的CRC引擎

    電子發燒友網站提供《C2000?器件中的CRC引擎.pdf》資料免費下載
    發表于 08-30 10:38 ?1次下載
    <b class='flag-5'>C2000</b>?器件中的CRC引擎

    使用C2000 I2C模塊連接EEPROM

    電子發燒友網站提供《使用C2000 I2C模塊連接EEPROM.pdf》資料免費下載
    發表于 08-27 09:53 ?0次下載
    使用<b class='flag-5'>C2000</b> I2<b class='flag-5'>C</b>模塊連接EEPROM

    FMD LINK 使用注意事項

    電子發燒友網站提供《FMD LINK 使用注意事項.pdf》資料免費下載
    發表于 05-06 10:11 ?1次下載

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品
    主站蜘蛛池模板: 国产乱子伦 | 月夜免费观看完整视频 | 综合欧美一区二区三区 | 岬奈奈美在线 国产一区 | a成人| 国产成人精品日本亚洲语言 | 欧美激情亚洲色图 | 精品在线一区二区 | 韩国免费特一级毛片 | 国产美女主播在线观看 | 国产精品四虎在线观看免费 | 亚洲综合国产一区二区三区 | 福利在线看片 | 成人午夜免费视频毛片 | 天堂电影在线观看免费入口 | 播放毛片 | 狠狠色丁香久久综合网 | 丁香花在线| 亚洲一区二区三区首页 | 国产一区二区三区欧美精品 | 美女三级在线 | 九色在线播放 | 欧美性受一区二区三区 | 国漫在线观看 | www.色涩涩.com| 日韩精品一区二区三区免费视频 | 中国一级特黄剌激爽毛片 | 一级特黄特黄的大片免费 | 香蕉网影院在线观看免费 | 亚洲成人三级电影 | 久久婷婷色综合老司机 | 天堂bt资源新版在线 | www天堂网| 日本级毛片免费观看 | 亚洲综合在线最大成人 | 亚洲天堂视频在线观看免费 | 最近2018中文字幕2019高清 | 国产yw.8825.c免费 | 91欧美精品激情在线观看 | 色国产精品 | 国产一区二区三区不卡观 |