工業(yè)和家用電器市場(chǎng)中的各種應(yīng)用要求使用數(shù)學(xué)運(yùn)算來實(shí)現(xiàn)不同的算法和計(jì)算?;?Cortex?-M0+的單片機(jī)包含加法、減法和乘法指令。Cortex-M0+架構(gòu)沒有用于除法運(yùn)算的匯編指令,除法邏輯可以根據(jù)不同的編譯器而變化?;?Arm? Cortex-M0+的單片機(jī)(MCU)具有一個(gè)可配置選項(xiàng),可通過該選項(xiàng)使用快速乘法器進(jìn)行乘法運(yùn)算?;谠摽膳渲眠x項(xiàng),乘法運(yùn)算可以為單個(gè)周期指令到最多 32 個(gè)周期指令不等。 SAMC21(一款 Cortex-M0+ MCU)非常適合需要數(shù)學(xué)計(jì)算的應(yīng)用。SAMC21 MCU 具有可進(jìn)行乘法運(yùn)算的快速單周期乘法器選項(xiàng),還具有一個(gè)新的外設(shè),稱為除法和平方根加速器(Division and Square RootAccelerator,DIVAS),可用于執(zhí)行快速除法和平方根運(yùn)算。
概念
適用于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)的其中一項(xiàng)是適用于 Arm 架構(gòu)的運(yùn)行時(shí) ABI。此標(biāo)準(zhǔn)為 ABI 指定輔助函數(shù),使之能夠支持 C、C++和算術(shù)運(yùn)算。對(duì)于除法,編譯器會(huì)用各自的庫代碼替換除法和模運(yùn)算符(即,使用重復(fù)減法來實(shí)現(xiàn)除法)。該庫代碼將數(shù)百個(gè)字節(jié)添加到代碼存儲(chǔ)器,MCU 消耗 50 到 400 之間任意數(shù)量的時(shí)鐘周期,具體取決于操作數(shù)的大小。編譯器可通過過載運(yùn)行時(shí)ABI 輔助方法來使用 DIVAS 功能。DIVAS 展現(xiàn)出的性能優(yōu)于編譯器除法(即,比除法 65535/3 少 50 個(gè)時(shí)鐘周期)。DIVAS 支持整數(shù)平方根運(yùn)算,而不需要任何額外的庫依賴關(guān)系。
解決方案/實(shí)現(xiàn)
DIVAS 只支持 32 位整數(shù)除法。用于除法運(yùn)算的運(yùn)行時(shí) ABI 輔助方法過載,以便編譯器了解除法應(yīng)使用DIVAS 功能進(jìn)行除法。根據(jù)運(yùn)行時(shí) ABI 標(biāo)準(zhǔn),32 位整數(shù)除法函數(shù)在 r0 中返回商,或在{r0, r1}中返回商和余數(shù)。
-
DIVAS除法運(yùn)算
-
DIVAS平方根運(yùn)算
-
單片機(jī)
+關(guān)注
關(guān)注
6074文章
45459瀏覽量
667141 -
mcu
+關(guān)注
關(guān)注
147文章
18794瀏覽量
393101 -
ARM
+關(guān)注
關(guān)注
135文章
9538瀏覽量
390343
原文標(biāo)題:文檔:如何利用 Cortex?-M0+ 單片機(jī)實(shí)現(xiàn)更快的數(shù)學(xué)計(jì)算
文章出處:【微信號(hào):MicrochipTechnology,微信公眾號(hào):Microchip微芯】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
請(qǐng)問如何在運(yùn)行時(shí)調(diào)整mcu的主頻?
使用Nuclei Studio IDE計(jì)算程序運(yùn)行時(shí)間
基于 SRT4 的整數(shù)除法器的優(yōu)化
怎么實(shí)現(xiàn)一套容器運(yùn)行時(shí),并符合OCI規(guī)范?
裝置日常運(yùn)行時(shí)的安全防護(hù)檢查有哪些注意事項(xiàng)?
MTB如何在運(yùn)行時(shí)介入Jlink調(diào)試器?
PLC設(shè)備運(yùn)行時(shí)間數(shù)據(jù)采集到運(yùn)維管理平臺(tái)如何實(shí)現(xiàn)
步進(jìn)電機(jī)在高速運(yùn)行時(shí)反電動(dòng)勢(shì)波形與其動(dòng)態(tài)響應(yīng)變化
將ADAU1701超頻到98MHZ,運(yùn)行時(shí)出現(xiàn)爆音怎么解決?
在Windows上安裝OpenVINO?運(yùn)行時(shí)遇到錯(cuò)誤怎么解決?
無法在ONNX運(yùn)行時(shí)加載OpenVINO?中間表示 (IR),為什么?
運(yùn)行時(shí)OpenVINO?找不到模型優(yōu)化器,為什么?
為了防止dlpc350在運(yùn)行時(shí)中斷,如何去校驗(yàn)是否還在和電腦進(jìn)行連接?
智能電機(jī)控制裝置如何最大限度地提高恢復(fù)能力和正常運(yùn)行時(shí)間
用于除法運(yùn)算的運(yùn)行時(shí)ABI輔助方法過載
評(píng)論