当前位置: 首页 > article >正文

Arm Cortex-M的FP和MVE

Floating-point Support目前Arm architecture支持的floating-point extension版本是FPv5。FPv5提供了以下功能单精度算术运算可选的双精度算术运算整数、双精度、单精度、和半精度格式之间的转换用于浮点处理的寄存器S0-S31或D0-D15在Arm通用寄存器(GPR)和FPv5 extension寄存器S0-S31或D0-D15之间进行单精度或双精度值的数据传输软件可以启用或禁用的“Flush-to-zero”模式IEEE 754-2008的半精度格式和alternative半精度格式通过FPSCR.AHP指示选择哪一种FPv5也增加了以下系统寄存器在CP10和CP11系统寄存器空间的FPSCRSCB里的FPCAR, FPCCR, FPDSCR, MVFR0, MVFR1和MVFR2从Armv8.1-M开始FPv5提供半精度算术运算。当floating-pointer extension实现时软件可以查询MVFR0, MVFR1和MVFR2来查看所实现的浮点特性有哪些。另外执行产生floating-point exception的floating-point指令会更新FPSCR的一些状态字段。FPv5为浮点处理添加的寄存器如下所示32单精度寄存器S0-S3116双精度寄存器D0-D15这些寄存器映射关系如下Arm手册使用的浮点术语与IEEE 754-2008中使用的术语不同如下Arm支持的标准浮点运算有IEEE 754-2008再加上以下配置Flush-to-zero mode enabled.Default NaN mode enabled.Round to Nearest mode selected.Alternative half-precision interpretation not selected.根据IEEE 754的定义FPv5支持以下浮点数据Normalized numbers.Denormalized numbers.Zeros, 0 and -0.Infinities, ∞ and −∞.NaNs, signaling NaNs and quiet NaN.另外Denormalized的数字可以使用Flush-to-zero模式刷新为0。IEEE 754 Floating-point exception有:Invalid OperationDivision by zeroOverflowUnderflowInexact这些IEEE 754浮点exception对应的状态标志是FPSCR.{IOC, DZC, OFC, UFC,IXC}Flush-to-zero mode当Flush-to-zero mode开启时所有floating-point操作的single-precision denormalized输入、double-precision denormalized输入或half-precision denormalized输入都会被视为0也就是说它们的值被刷新为0了。当floating-point操作的输入被刷新为0时PE生成一个输入denormal exception。而且输入denormal exception也只有在Flush-to-zero mode下才会产生的。当floating-point操作的结果刷新为零时PE生成一个Underflow exception。当floating-point数字被刷新为0时符号将被保留。也就是说0的符号位与被刷新为0的数字的符号位相匹配。NaNNaN是Not a Number的缩写。当数值和无穷大都不合适时可以使用的NaN浮点值。NaN可以是quiet NaN通过大多数浮点操作传输也可以是signaling NaN在使用时导致Invalid Operation floating-point exception。当启用Default NaN模式时Default NaN是以下两种情况的结果所有产生untrapped Invalid Operation exception的浮点操作。所有输入至少包含一个queit NaN但不包含signaling NaN的浮点运算。Vector ExtensionVector指令对固定的128-bit矢量宽度进行操作。MVE-I可以操作32-bit16-bit和8-bit数据类型。MVE-F也可以对half-precision和single-precision floating-point值进行操作。Vector操作分为两种正交的方式LanesBeats每个beat可以执行多个lanesElement表示放入每个beat的一个lane中的数据。每个vector指令有4个beats。Vector指令的伪代码是按一个beat来写的因此需要执行4次才是一个vector指令的真正功能。GetCurInstrBeat()函数返回当前节beat数和predication细节。它们决定了在当前执行代码期间对哪些lanes进行操作。Lanes正被执行的指令决定了操作的lane宽度。每一个beat允许的lane宽度和lane操作有For a 64-bit lane size, a beat performs half of the lane operation.For a 32-bit lane size, a beat performs a one lane operation.For a 16-bit lane size, a beat performs a two lane operations.For an 8-bit lane size, a beat performs a four lane operations.Beatsvector指令按顺序执行beat从节拍0-3开始。在一般情况下每个tick的beat数目描述了在每个architecture tick下更新了多少architectural state。在一个简单的实现中一个architecture tick可能是一个时钟周期In a single-beat system, one beat might occur for each tick.In a dual-beat system, two beats might occur for each tick.In a quad-beat system, four beats might complete for each tick.每个architecture tick执行多少beats是IMPLEMENTATION DEFINED的。每个tick的beat数可能在运行时改变不需要保持恒定。在一个architecture tick内可能出现多个faults。在这种情况下只有一个fault会raise起来被raise情况的fault按以下优先级确定来自最早指令的fault优先如果多个fault与最早的fault指令相关联则按编码按最低beat产生的fault优先在dual-beat overlap系统中vector指令的最后两个beat和下一条vector指令的前两个beat可以重叠处理。下面是一个dual-beat系统的例子其中每个architecture tick可以处理两个beat。如图PE可以从任何有效的ECI值恢复exception continuable instruction的执行即使PE不能生成所有的ECI值。对于vector指令来说只有当该条的所有beats都完成后PC才会更新。由于Vector的load和store会产生多笔memory访问Arm规定了由同一Observers对同一vector store指令生成的多个elements写入可以按任何顺序被观察到但不同elements对同一位置的写入是按vector element number递增的顺序被观察的。如果CCR.BFHFNMIGN为1如果请求为负priority且执行一条指令产生多个load或store访问时生成了BusFault该 BusFault可能会影响该指令生成的所有访问而不仅仅是生成BusFault的访问。Vector register fileMVE定义了8个向量寄存器Qn它们复用Floating-point Extension的寄存器实体。Q[0][127:96] S3, Q[0][95:64] S2, Q[0][63:32] S1, Q[0][31:0] S0Q[1][127:96] S7, Q[1][95:64] S6, Q[1][63:32] S5, Q[1][31:0] S4...Q[7][127:96] S31, Q[7][95:64] S30, Q[7][63:32] S29, Q[7][31:0] S28这些寄存器映射如下为了减少对vector register的压力许多vector指令可以使用GPR作为参数。Predication/conditional executionMVE包括predication机制可以在vector操作中对每个lane进行独立屏蔽。它支持以下predication机制Loop tail predication循环尾部预测它消除了如果要处理的elements数量不是vector中element数量的倍数那么在循环之后需要特殊的vector尾部代码处理的需求。VPT predication这使得基于数据值比较的数据相关条件能够单独屏蔽每个向量lane。Loop tail predication和VPT predication是分开操作的。每个机制产生的predication标记加在一起。因此只有当loop tail predication和VPT predication的条件都为真时vector操作的一个lane才会处于active状态。MVE interleaving/de-interleaving loads and stores对于包含MVE的实现可以使用VLD2/VLD4和VST2/VST4以步长2/步长4进行interleave和de-interleave处理数据流。Interleaving和de-interleaving指令每次总是对128-bit数据进行操作。当使用VLD4时4条VLD4指令中每一条都读取128-bit数据并部分更新四个目的vector寄存器。要访问的memory地址偏移量和目的寄存器部分安排如下

相关文章:

Arm Cortex-M的FP和MVE

Floating-point Support目前Arm architecture支持的floating-point extension版本是FPv5。FPv5提供了以下功能:单精度算术运算;可选的双精度算术运算;整数、双精度、单精度、和半精度格式之间的转换;用于浮点处理的寄存器&#xf…...

收藏|2026 新版大模型入行指南!风口红利期程序员小白均可入局

2026年人工智能行业发展势头迅猛,已然迈入全民争相布局的高速发展阶段。多模态技术持续更新升级,大模型各类商业化项目不断落地投产,市场专业人才缺口不断拉大,对应岗位薪酬待遇也迎来大幅上涨。 不管是毫无技术基础、打算从零起步…...

网盘直链下载助手:彻底告别限速的终极免费解决方案

网盘直链下载助手:彻底告别限速的终极免费解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

3个理由告诉你为什么选择哔哩下载姬:B站视频下载的终极解决方案

3个理由告诉你为什么选择哔哩下载姬:B站视频下载的终极解决方案 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印…...

LeetCode 每日一题笔记 日期:2026.05.24 题目:1340. 跳跃游戏 V

LeetCode 每日一题笔记 0. 前言 日期:2026.05.24题目:1340. 跳跃游戏 V难度:困难标签:数组、动态规划、记忆化搜索、单调栈 1. 题目理解 问题描述: 给定一个整数数组 arr 和整数 d,从下标 i 出发&#xff0…...

构建内容生成服务时利用Taotoken实现模型降级容灾

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 构建内容生成服务时利用Taotoken实现模型降级容灾 在构建面向用户的在线内容生成服务时,服务的稳定性和可用性是核心考…...

从伪加密ZIP到RSA解密:手把手带你复现BUUCTF那道ACTF新生赛Crypto题

从伪加密ZIP到RSA解密:手把手带你复现BUUCTF那道ACTF新生赛Crypto题 当你第一次接触CTF密码学题目时,面对一个看似普通的ZIP压缩包和一堆加密参数,很容易感到无从下手。本文将带你完整复现BUUCTF平台上那道经典的ACTF新生赛Crypto题目&#x…...

Beyond Compare 5密钥生成技术深度解密:从RSA加密到完整激活解决方案

Beyond Compare 5密钥生成技术深度解密:从RSA加密到完整激活解决方案 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在软件开发与系统维护领域,Beyond Compare 5作为文件…...

AMD Ryzen隐藏性能调优利器:SMUDebugTool硬件调试工具完全指南

AMD Ryzen隐藏性能调优利器:SMUDebugTool硬件调试工具完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: ht…...

导师推荐 AI论文网站测评:2026最新好用工具全解析

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...

跟着 MDN 学CSS day_17:(深入理解溢出机制与容器控制艺术)

在CSS的世界里,一切皆为盒子。当我们精心设定盒子的宽度和高度,试图构建完美的布局时,一个不可避免的问题就会悄然出现:**如果内容超出了盒子的承载能力,会发生什么?**这就是CSS中一个至关重要的概念——溢…...

跟着 MDN 学CSS day_16:(深入掌握背景与边框的艺术)

在网页设计的视觉语言中,背景与边框是两个最基础也最强大的工具。它们就像舞台的幕布和画框,共同构建了元素的视觉边界与氛围。MDN的技能测试为我们提供了一个绝佳的实践机会,通过两个具体任务,将理论知识转化为实战能力。本文将深…...

Linux网络编程基础(UDP socket编程)

UDP(用户数据报协议)是一种无连接的传输层协议,与TCP不同,它不保证数据包的顺序和可靠性,但其简单性和低延迟特性使其在实时应用中非常有用。一、UDP协议核心特性UDP作为传输层协议,与TCP的“可靠连接”不同…...

c++乱码问题

大家下载vs2026或者更新时,可能会出现乱码问题点击工具,进入选项,在环境列表里找到文档,下滑到底部,勾选使用特定编码保存文件然后退出就可以了。如果还是存在问题,将自己的代码保存,重新新建一…...

Windows安卓子系统终极优化指南:如何通过WSABuilds实现完美Android体验

Windows安卓子系统终极优化指南:如何通过WSABuilds实现完美Android体验 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or Ke…...

终极指南:3步免费搞定Android Studio中文界面,开发效率提升50%!

终极指南:3步免费搞定Android Studio中文界面,开发效率提升50%! 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseL…...

UE5.1实战:用MySQL插件做个游戏内数据查询器(附完整蓝图)

UE5.1实战:构建高性能游戏内MySQL数据查询系统在虚幻引擎5.1中集成数据库功能已经成为现代游戏开发的重要需求。无论是玩家排行榜、道具管理系统还是实时数据分析,直接访问数据库都能显著提升开发效率和游戏体验。本文将带你从零开始构建一个完整的游戏内…...

Windows热键冲突终极指南:3分钟找出偷走你快捷键的“小偷“

Windows热键冲突终极指南:3分钟找出偷走你快捷键的"小偷" 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

5分钟快速解锁中兴光猫:终极免费工具zteOnu完整指南

5分钟快速解锁中兴光猫:终极免费工具zteOnu完整指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 对于网络管理员和技术爱好者来说,中兴光猫的权限限制常常成…...

量子循环神经网络在混沌时序预测中的参数效率与架构对比

1. 项目概述 最近几年,量子机器学习(QML)的热度持续攀升,大家都想看看,用量子计算那套“叠加”和“纠缠”的玩法来处理经典问题,到底能不能带来点惊喜。时序预测,尤其是混沌系统预测&#xff0c…...

从酒店评论到情感分析:手把手教你用fastText做文本分类(Python实战避坑指南)

从酒店评论到情感分析:fastText文本分类实战全解析 当产品经理甩给你一份未经处理的酒店评论数据集,要求48小时内给出情感倾向分析报告时,作为工程师的你该如何应对?本文将带你用fastText这个轻量级工具,从原始数据到…...

对比直接使用官方API,Taotoken在计费透明性上的实际感受

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用官方API,Taotoken在计费透明性上的实际感受 1. 引言:从多模型调用到费用感知的转变 在同时接…...

Wand-Enhancer终极指南:三步免费解锁WeMod专业版所有功能

Wand-Enhancer终极指南:三步免费解锁WeMod专业版所有功能 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod免费版的限制而烦恼吗&…...

IDE 重构(Refactoring)详解 + 实例代码

IDE 重构(Refactoring)详解 实例代码 重构是指在不改变代码外部行为的前提下,对代码内部结构进行调整、优化,使代码更易读、易维护、易扩展的过程。IDE(集成开发环境)是重构的最强助手,它能自动…...

深入解析AlienFX Tools:从硬件直连到个性化灯光控制的完整技术方案

深入解析AlienFX Tools:从硬件直连到个性化灯光控制的完整技术方案 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 在Alienware设备生态中&…...

2026国安部重磅披露:境外间谍如何利用民用路由器构建窃密跳板?全链路技术解析与防御指南

一、引言:从"网速变慢"到国家级网络窃密 2026年5月20日,国家安全部官方微信公众号发布紧急通报,披露了一起严重的境外间谍情报机关网络窃密案件。与以往直接攻击政府或企业服务器不同,此次攻击者将目标锁定在了最容易被…...

Python调用WebAssembly破解APP签名算法实战

1. 这不是“调用JS”,而是把WebAssembly当真实CPU来调试你有没有遇到过这样的情况:抓包看到某资讯APP的请求里,sign参数像雪花一样每秒变一个,长度固定32位,全是小写字母加数字;Fiddler里点开响应&#xff…...

Python运算符:成员运算符(in/not in)的使用场景

Python运算符:成员运算符(in/not in)的使用场景📚 本章学习目标:深入理解成员运算符(in/not in)的使用场景的核心概念与实践方法,掌握关键技术要点,了解实际应用场景与最…...

CVE-2026-35397深度解析:Jupyter Server路径遍历漏洞,CVSS 8.8高危威胁数据科学全生态

一、引言:数据科学基础设施的"心脏出血" Jupyter生态是全球数据科学与AI开发领域的事实标准,据Stack Overflow 2026年开发者调查显示,超过87%的数据科学家和AI工程师日常使用Jupyter Notebook/Lab进行代码开发、数据分析和模型训练…...

18分钟攻陷GitHub!Nx Console投毒事件深度复盘:3800个核心仓库泄露的供应链安全警示

摘要:2026年5月20日,全球最大代码托管平台GitHub遭遇史上最严重的供应链攻击之一。黑客组织TeamPCP通过投毒VS Code扩展市场中的Nx Console v18.95.0版本,仅用18分钟、28次下载就成功渗透GitHub内部网络,窃取了包括Copilot、CodeQ…...