工業(yè)和家用電器市場中的各種應(yīng)用要求使用數(shù)學(xué)運算來實現(xiàn)不同的算法和計算?;?Cortex?-M0+的單片機包含加法、減法和乘法指令。Cortex-M0+架構(gòu)沒有用于除法運算的匯編指令,除法邏輯可以根據(jù)不同的編譯器而變化?;?Arm? Cortex-M0+的單片機(MCU)具有一個可配置選項,可通過該選項使用快速乘法器進行乘法運算。基于該可配置選項,乘法運算可以為單個周期指令到最多 32 個周期指令不等。 SAMC21(一款 Cortex-M0+ MCU)非常適合需要數(shù)學(xué)計算的應(yīng)用。SAMC21 MCU 具有可進行乘法運算的快速單周期乘法器選項,還具有一個新的外設(shè),稱為除法和平方根加速器(Division and Square RootAccelerator,DIVAS),可用于執(zhí)行快速除法和平方根運算。
概念
適用于Arm架構(gòu)的應(yīng)用程序二進制接口(ABI)包含一系列標準,其中有些是開放的標準,還有一些是 Arm 架構(gòu)專用標準。ABI 可管控各種基于 Arm 的執(zhí)行環(huán)境中二進制文件和開發(fā)工具的互操作。支持 Arm MCU 的編譯器需符合這些標準。這些標準的其中一項是適用于 Arm 架構(gòu)的運行時 ABI。此標準為 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ù)運行時 ABI 標準,32 位整數(shù)除法函數(shù)在 r0 中返回商,或在{r0, r1}中返回商和余數(shù)。
-
DIVAS除法運算
-
DIVAS平方根運算
-
單片機
+關(guān)注
關(guān)注
6074文章
45340瀏覽量
663639 -
mcu
+關(guān)注
關(guān)注
147文章
18613瀏覽量
387217 -
ARM
+關(guān)注
關(guān)注
135文章
9499瀏覽量
388770
原文標題:文檔:如何利用 Cortex?-M0+ 單片機實現(xiàn)更快的數(shù)學(xué)計算
文章出處:【微信號:MicrochipTechnology,微信公眾號:Microchip微芯】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
使用Nuclei Studio IDE計算程序運行時間
裝置日常運行時的安全防護檢查有哪些注意事項?
MTB如何在運行時介入Jlink調(diào)試器?
PLC設(shè)備運行時間數(shù)據(jù)采集到運維管理平臺如何實現(xiàn)
步進電機在高速運行時反電動勢波形與其動態(tài)響應(yīng)變化
將ADAU1701超頻到98MHZ,運行時出現(xiàn)爆音怎么解決?
在Windows上安裝OpenVINO?運行時遇到錯誤怎么解決?
運行時OpenVINO?找不到模型優(yōu)化器,為什么?
無法在Raspberry Pi 4中通過PyPI OpenVINO?安裝2022年運行時軟件包,為什么?
為了防止dlpc350在運行時中斷,如何去校驗是否還在和電腦進行連接?
智能電機控制裝置如何最大限度地提高恢復(fù)能力和正常運行時間

用于除法運算的運行時ABI輔助方法過載
評論