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平方根运算

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

    关注

    6002

    文章

    43990

    浏览量

    620959
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16024

    浏览量

    343724
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8658

    浏览量

    361926

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

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

收藏 人收藏

    评论

    相关推荐

    stm32cubeIDE代码运行时间如何查看?

    stm32cubeIDE 代码运行时间,如何查看?就如 keil 调试时候那样,可以测试代码的运行时间。但是在stm32cubeIDE 中,一直没有找到这个功能,不知道哪位高人可以提示下在哪里查看的?
    发表于 04-16 08:10

    如何在运行时擦除/编程UCB?

    我有一个项目需要在现场更新 SOTA。 这需要在运行时更新必要的 UCB 值。 我已经看过擦除/编程 PFLASH 和 DFLASH 的示例代码,但我还没有找到任何特定于 UCB 内存的代码。 我
    发表于 01-22 07:18

    变频器具有限制电流的功能,为什么电机运行时,还能过载

    请教各位高手,我刚接触变频,问大家几个问题: 一、变频器具有限制电流的功能,为什么电机运行时,还能过载? 二、限制了电流的转矩电流,是不是电机的输入电流同样也会受到限制? 三、限制了电机
    发表于 12-25 07:28

    jvm管理的内存包括哪几个运行时数据内存

    JVM(Java虚拟机)是Java程序的运行环境,它提供了内存管理机制来管理Java程序所需的运行时数据内存。这些运行时数据内存包括堆内存、栈内存、方法区(元数据区)、程序计数器和本地
    的头像 发表于 12-05 14:09 226次阅读

    jvm运行时内存区域划分

    JVM是Java Virtual Machine(Java虚拟机)的缩写,它是Java编程语言的运行环境。JVM的主要功能是将Java源代码转换为机器代码,并且在运行时管理Java程序的内存。JVM
    的头像 发表于 12-05 14:08 262次阅读

    西门子SCL编程50台电机运行时间累计方法

    当RUN信号为TRUE时,开始计时,为FALSE时停止计时,单次运行时间清零,长按RESET为5秒时,单次和总运行时间都清零。
    发表于 11-27 09:59 889次阅读
    西门子SCL编程50台电机<b class='flag-5'>运行时</b>间累计<b class='flag-5'>方法</b>

    如何在 CFD 设计中利用网格维护几何形状并减少运行时间?

    如何在 CFD 设计中利用网格维护几何形状并减少运行时间?
    的头像 发表于 11-24 17:07 217次阅读
    如何在 CFD 设计中利用网格维护几何形状并减少<b class='flag-5'>运行时</b>间?

    MES如何帮助增加机器正常运行时

           实施制造执行系统(MES)的好处很多。其中,MES软件可以通过多种方式帮助增加机器的正常运行时间。正常运行时间是指制造机械或设备的效率和可用性。每当机器停机(无论原因如何)时,制造商
    发表于 11-14 15:28 2次下载

    如何保证它们容器运行时的安全?

    紧密耦合的容器运行时继承了主机操作系统的安全态势和攻击面。运行时或主机内核中的任何漏洞及其利用都会成为攻击者的潜在切入点。
    的头像 发表于 11-03 15:24 300次阅读

    AUTOSAR CP运行时环境与应用软件

    运行时环境(RTE) AUTOSAR CP运行时环境(RTE)是AUTOSAR架构中的核心组件,它实现了AUTOSAR虚拟功能总线(VFB)的接口,并提供了通信基础设施和访问基础软件组件(如操作系统
    的头像 发表于 10-27 15:44 860次阅读
    AUTOSAR CP<b class='flag-5'>运行时</b>环境与应用软件

    Xilinx运行时(XRT)发行说明

    电子发烧友网站提供《Xilinx运行时(XRT)发行说明.pdf》资料免费下载
    发表于 09-14 10:01 0次下载
    Xilinx<b class='flag-5'>运行时</b>(XRT)发行说明

    ch32v307记录程序运行时

    ch32v307记录程序运行时间 在程序开发中,很重要的一项任务就是对程序的运行时间进行评估。对于大型的程序系统来说,它们通常需要处理大量的数据或进行复杂的计算操作。因此,如果程序的运行时间过长
    的头像 发表于 08-22 15:53 484次阅读

    JVM运行时数据区之堆内存

    说一下 JVM 运行时数据区吧,都有哪些区?分别是干什么的?
    的头像 发表于 08-19 14:35 439次阅读
    JVM<b class='flag-5'>运行时</b>数据区之堆内存

    优化HBM2E运行时性能

    性能仍然是任何复杂片上系统 (SoC) 设计的关键因素。此外,复杂性每天都在增加,这给工程师跟踪设计性能带来了挑战,但他们的任务是不断提高芯片性能。在运行时,性能工程师不仅可以开发功能,还可以检查受新模块影响的设计性能。在传统方法中,功能开发和性能分析是顺序任务,并一个接
    的头像 发表于 05-26 10:17 423次阅读
    优化HBM2E<b class='flag-5'>运行时</b>性能

    如何在AUTOSAR OS系统运行时使用事件Event呢?

    在AUTOSAR OS系统中,事件用于向任务发送信号信息。本节解释事件是什么,如何配置它们以及如何在运行时使用它们。
    发表于 05-22 10:04 1466次阅读
    如何在AUTOSAR OS系统<b class='flag-5'>运行时</b>使用事件Event呢?