0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用于除法运算的运行时ABI辅助方法过载

Microchip微芯 来源:互联网 作者:佚名 2018-07-19 09:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

工业和家用电器市场中的各种应用要求使用数学运算来实现不同的算法和计算。基于 Cortex®-M0+的单片机包含加法、减法和乘法指令。Cortex-M0+架构没有用于除法运算的汇编指令,除法逻辑可以根据不同的编译器而变化。基于 Arm® Cortex-M0+的单片机(MCU)具有一个可配置选项,可通过该选项使用快速乘法器进行乘法运算。基于该可配置选项,乘法运算可以为单个周期指令到最多 32 个周期指令不等。 SAMC21(一款 Cortex-M0+ MCU)非常适合需要数学计算的应用。SAMC21 MCU 具有可进行乘法运算的快速单周期乘法器选项,还具有一个新的外设,称为除法和平方根加速器(Division and Square RootAccelerator,DIVAS),可用于执行快速除法和平方根运算。

概念

适用于Arm架构的应用程序二进制接口(ABI)包含一系列标准,其中有些是开放的标准,还有一些是 Arm 架构专用标准。ABI 可管控各种基于 Arm 的执行环境中二进制文件和开发工具的互操作。支持 Arm MCU 的编译器需符合这些标准。这些标准的其中一项是适用于 Arm 架构的运行时 ABI。此标准为 ABI 指定辅助函数,使之能够支持 C、C++和算术运算。对于除法,编译器会用各自的库代码替换除法和模运算符(即,使用重复减法来实现除法)。该库代码将数百个字节添加到代码存储器,MCU 消耗 50 到 400 之间任意数量的时钟周期,具体取决于操作数的大小。编译器可通过过载运行时ABI 辅助方法来使用 DIVAS 功能。DIVAS 展现出的性能优于编译器除法(即,比除法 65535/3 少 50 个时钟周期)。DIVAS 支持整数平方根运算,而不需要任何额外的库依赖关系。

解决方案/实现

DIVAS 只支持 32 位整数除法。用于除法运算的运行时 ABI 辅助方法过载,以便编译器了解除法应使用DIVAS 功能进行除法。根据运行时 ABI 标准,32 位整数除法函数在 r0 中返回商,或在{r0, r1}中返回商和余数。

  • DIVAS除法运算

  • DIVAS平方根运算

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6078

    文章

    45630

    浏览量

    675654
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19255

    浏览量

    405237
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9615

    浏览量

    394503

原文标题:文档:如何利用 Cortex®-M0+ 单片机实现更快的数学计算

文章出处:【微信号:MicrochipTechnology,微信公众号:Microchip微芯】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Exein设立台湾亚太运营中心:以运行时安全重构物联网全球标准

    近期,全球嵌入式运行时安全领导企业Exein(艾芯软件)正式宣布在台湾设立亚太区运营中心暨台北办公室。这一战略举措标志着Exein在全球化布局中迈出关键一步,台北办公室将作为区域运营与技术研发的双重
    的头像 发表于 04-24 10:46 1905次阅读

    ELF-RV112B RKNN模型加载与运行时初始化

    ELF-RV112B RKNN模型加载与运行时初始化
    的头像 发表于 04-03 16:08 245次阅读
    ELF-RV112B RKNN模型加载与<b class='flag-5'>运行时</b>初始化

    S32K322可以在运行时在时钟选项 A 和选项 F (A ↔ F) 之间动态切换吗?

    我正在使用S32K322并使用预定义的时钟选项(当前选项 A)S32K3xx 数据表和参考手册中所述。 我想确认一下是否是支持在运行时在选项 A (PLL @160 MHz) 之间动态切换
    发表于 04-02 07:43

    高压试验变压器运行时,哪些操作不能做?

    /T9641-1999标准和实际案例,跟大家梳理高压试验变压器运行时的禁忌操作,帮你规范操作,规避风险。首先,严禁调压器不在零位时合闸通电。根据JB/T9641-1999第
    的头像 发表于 03-04 11:04 265次阅读
    高压试验变压器<b class='flag-5'>运行时</b>,哪些操作不能做?

    Kubernetes容器运行时containerd与CRI-O如何选择

    Kubernetes 1.24版本正式移除了dockershim,Docker不再是K8s的默认容器运行时。这个变化直接影响了所有K8s集群的运维方式——升级到1.24+必须切换到containerd或CRI-O。
    的头像 发表于 02-26 09:54 554次阅读

    请问如何在运行时调整mcu的主频?

    能不能实现在运行时切换mcu的主频,但不重启mcu?
    发表于 01-16 07:12

    使用Nuclei Studio IDE计算程序运行时

    在使用Nuclei Studio IDE进行程序运行时,我们想知道我们编写的程序运行时间有多长怎么办呢?可以选择调用IDE里面时间记录函数_gettimeofday(),该函数用于记录程序运行
    发表于 10-28 08:25

    基于 SRT4 的整数除法器的优化

    主要的除法运算优化方法是使用基本的SRT-4算法进行除法运算,以模拟SRT-64除法
    发表于 10-23 07:23

    怎么实现一套容器运行时,并符合OCI规范?

    如题,怎么实现一套容器运行时,并符合OCI规范
    发表于 10-10 07:35

    装置日常运行时的安全防护检查有哪些注意事项?

    装置日常运行时的安全防护检查,核心原则是 “安全优先、不影响生产、快速识别风险”—— 既要避免因检查操作引发触电、停机等事故,也要高效捕捉运行中的动态隐患(如过热、防护松动)。以下是需重点关注的 8
    的头像 发表于 09-23 16:33 1929次阅读

    电能质量在线监测装置重启前,安全防护方面的检查和日常运行时的检查有何不同?

    电能质量在线监测装置重启前的安全防护检查与日常运行时的检查,核心差异源于 检查目标、时机、操作场景的本质不同 : 重启前检查是 “ 事前预防性检查 ”,聚焦 “避免重启操作引发安全事故(如触电、设备
    的头像 发表于 09-23 14:38 812次阅读
    电能质量在线监测装置重启前,安全防护方面的检查和日常<b class='flag-5'>运行时</b>的检查有何不同?

    MTB如何在运行时介入Jlink调试器?

    目前我们的应用程序在运行时会偶发死机现象,有没有办法能够在CYW43907芯片不复位的情况下介入调试器,查看导致死机的问题
    发表于 07-08 07:46

    CYW20706下载固件后,出现无法正常运行时无法启动的问题,怎么解决?

    我正在使用 CYW20706。 下载固件后,出现无法正常运行时无法启动的问题。 我不知道创建问题的场景。 突然间,它无法启动。 因此,当我使用 dump 读取内存时,我发现静态部分的内存中覆盖了奇怪
    发表于 07-01 08:24

    PLC设备运行时间数据采集到运维管理平台如何实现

    在工厂设备管理工作中,往往需要统计各个设备的运行时间,能够衡量其运行性能,主要为了方便管理人员对设备进行定期维护,以保障设备处于稳定高效的运行状态,减少故障停机导致生产停工的问题。 对此,物通博联
    的头像 发表于 06-20 16:02 1061次阅读
    PLC设备<b class='flag-5'>运行时</b>间数据采集到运维管理平台如何实现

    步进电机在高速运行时反电动势波形与其动态响应变化

    步进电机高速运行时,反电动势幅值增大、频率升高,导致电流建立延迟、扭矩下降及动态响应滞后。所以在步进电机高速运行的方案中,我们需要通过优化电机选型(如低电感、适中极数)、升压驱动及BEMF反馈控制,可缓解高速性能衰减,避免PWM饱和导致的扭矩崩溃。
    的头像 发表于 06-10 16:06 2155次阅读
    步进电机在高速<b class='flag-5'>运行时</b>反电动势波形与其动态响应变化