工業(yè)和家用電器市場中的各種應(yīng)用要求使用數(shù)學(xué)運算來實現(xiàn)不同的算法和計算。基于 Cortex?-M0+的單片機包含加法、減法和乘法指令。Cortex-M0+架構(gòu)沒有用于除法運算的匯編指令,除法邏輯可以根據(jù)不同的編譯器而變化。基于 Arm? Cortex-M0+的單片機(MCU)具有一個可配置選項,可通過該選項使用快速乘法器進(jìn)行乘法運算。基于該可配置選項,乘法運算可以為單個周期指令到最多 32 個周期指令不等。 SAMC21(一款 Cortex-M0+ MCU)非常適合需要數(shù)學(xué)計算的應(yīng)用。SAMC21 MCU 具有可進(jìn)行乘法運算的快速單周期乘法器選項,還具有一個新的外設(shè),稱為除法和平方根加速器(Division and Square RootAccelerator,DIVAS),可用于執(zhí)行快速除法和平方根運算。
概念
適用于Arm架構(gòu)的應(yīng)用程序二進(jìn)制接口(ABI)包含一系列標(biāo)準(zhǔn),其中有些是開放的標(biāo)準(zhǔn),還有一些是 Arm 架構(gòu)專用標(biāo)準(zhǔn)。ABI 可管控各種基于 Arm 的執(zhí)行環(huán)境中二進(jìn)制文件和開發(fā)工具的互操作。支持 Arm MCU 的編譯器需符合這些標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)的其中一項是適用于 Arm 架構(gòu)的運行時 ABI。此標(biāo)準(zhǔn)為 ABI 指定輔助函數(shù),使之能夠支持 C、C++和算術(shù)運算。對于除法,編譯器會用各自的庫代碼替換除法和模運算符(即,使用重復(fù)減法來實現(xiàn)除法)。該庫代碼將數(shù)百個字節(jié)添加到代碼存儲器,MCU 消耗 50 到 400 之間任意數(shù)量的時鐘周期,具體取決于操作數(shù)的大小。編譯器可通過過載運行時ABI 輔助方法來使用 DIVAS 功能。DIVAS 展現(xiàn)出的性能優(yōu)于編譯器除法(即,比除法 65535/3 少 50 個時鐘周期)。DIVAS 支持整數(shù)平方根運算,而不需要任何額外的庫依賴關(guān)系。
解決方案/實現(xiàn)
DIVAS 只支持 32 位整數(shù)除法。用于除法運算的運行時 ABI 輔助方法過載,以便編譯器了解除法應(yīng)使用DIVAS 功能進(jìn)行除法。根據(jù)運行時 ABI 標(biāo)準(zhǔn),32 位整數(shù)除法函數(shù)在 r0 中返回商,或在{r0, r1}中返回商和余數(shù)。
-
DIVAS除法運算
-
DIVAS平方根運算
-
單片機
+關(guān)注
關(guān)注
6057文章
44806瀏覽量
644095 -
mcu
+關(guān)注
關(guān)注
146文章
17672瀏覽量
357550 -
ARM
+關(guān)注
關(guān)注
134文章
9262瀏覽量
373106
原文標(biāo)題:文檔:如何利用 Cortex?-M0+ 單片機實現(xiàn)更快的數(shù)學(xué)計算
文章出處:【微信號:MicrochipTechnology,微信公眾號:Microchip微芯】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
在Windows上安裝OpenVINO?運行時遇到錯誤怎么解決?
運行時OpenVINO?找不到模型優(yōu)化器,為什么?
智能電機控制裝置如何最大限度地提高恢復(fù)能力和正常運行時間

ups主機選購方法,選擇電池運行時間滿足

影響逆變器電池狀態(tài)的原因,整體運行時間

C2000?MCU的運行時堆棧大小監(jiān)測

為什么變壓器空載運行時功率因數(shù)很低
直線電機在運行時噪音大不大

評論