第八章浮点单元(Cortex-M7 Processor)

news2024/11/15 10:59:05

目录

浮点单元

8.1关于FPU

8.2FPU功能描述

8.2.1操作方式

8.2.2符合IEEE 754标准

8.2.3异常

8.3FPU编程器模型

浮点单元

介绍FPU (Floating Point Unit)。

它包含以下部分:

  • 关于FPU的信息见8-2。
  • FPU功能描述见8-3。
  • FPU程序员模型在第8-5页。

8.1关于FPU

        Cortex-M7处理器是ARMv7-M架构的单精度和双精度变体,具有浮点扩展(FPv5)。

FPv5扩展功能如下:

  • 中现有数据处理指令增加双精度操作数支持FPv4-SP-D16-M.双精度和单精度操作数的一些新指令。
  • 16个双精度寄存器。这与FPv4相同,并且没有额外的寄存器。
  • 软件使能控制单精度和双精度支持使用CPACR。
  • 双精度和单精度支持,当两者都实现时,不能彼此独立地启用。
  • 与已经支持64位数据类型的FPv4扩展相同的加载/存储指令支持。

不同配置的Cortex-M7处理器支持的ISA如表8-1所示。

 它提供了符合ANSI/IEEE Std 754-2008 (IEEE二进制浮点运算标准,简称IEEE 754标准)的浮点计算功能。

8.2FPU功能描述

介绍FPU支持的操作和产生的异常。

FPU完全支持单精度和双精度加、减、乘、除、乘、累加和平方根运算。

它还提供定点和浮点数据格式之间的转换,以及浮点常量指令。

FPU提供一个包含32个单精度寄存器的扩展寄存器文件。

这些可以看作是:

十六位双字寄存器,D0-D15。

32个32位单字寄存器,S0-S31。

来自这些视图的寄存器的组合。有关FPU的更多信息,请参见《Armv7-M架构参考手册》。

本节内容如下:

操作方式。符合第8-4页的IEEE 754标准。例外情况见第8-4页。操作模式由浮点状态和控制寄存器(FPSCR)控制。有关FPSCR的更多信息,请参阅ARMv7-M架构参考手册。

8.2.1操作方式

FPU提供三种操作模式,以适应各种应用:

  • 完全符合模式。
  • Flush-to-zero模式。
  • 默认NaN模式。

完全符合模式

        在full compliance模式下,FPU在硬件上的所有操作都是按照IEEE 754标准进行的。

Flush-to-zero模式

        设置FPSCR。FZ位启用刷新到零模式。在这种模式下,FPU将算术运算的所有次正常输入操作数视为运算中的零。由零操作数引起的异常会适当地发出信号。VABS、VNEG和VMOV不被认为是算术运算,也不受刷新到零模式的影响。如果结果很小,如IEEE 754标准中所描述的,即目标精度小于舍入前的最小正常值,则用零替换。FPSCR。IDC位表示输入刷新发生的时间。FPSCR。UFC位表示结果刷新发生的时间。

默认NaN模式

        设置FPSCR。DN位开启默认的NaN模式。在这种模式下,任何涉及输入NaN或生成NaN结果的算术数据处理操作的结果都会返回默认NaN。分数比特的传播仅由VABS、VNEG和VMoV操作维持。所有其他算术运算都忽略输入NaN的分数位中的任何信息。

8.2.2符合IEEE 754标准

        当默认NaN (DN)和Flush-to-Zero (FZ)模式被禁用时,FPv5功能在硬件上符合IEEE 754标准。不需要任何支持代码来实现这种遵从性。请参阅Armv7-M架构参考手册,了解有关FP架构符合IEEE 754标准的信息。

8.2.3异常

        根据FPv5架构,FPU根据每条指令的需要在FPSCR寄存器中设置累积异常状态标志。FPU单板不支持异常trap。处理器还有六个输出引脚:FPIXC、FPUFC、FPOFC、FPDZC、FPIDC和FPIOC,每个引脚反映一个累积异常标志的状态。处理器可以通过使用延迟堆叠来减少异常延迟。这意味着处理器在堆栈上为FP状态保留空间,但直到需要时才将该状态信息保存到堆栈中。有关更多信息,请参阅Armv7-M架构参考手册。

8.3FPU编程器模型

表8-2显示了在Cortex-M7处理器中使用FPU实现的浮点系统寄存器。这些寄存器在Arm*v7-M架构参考手册中有描述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/806629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于RK3588+FPGA+AI算法定制的智慧交通与智能安防解决方案

随着物联网、大数据、人工智能等技术的快速发展,边缘计算已成为当前信息技术领域的一个热门话题。在物联网领域,边缘计算被广泛应用于智慧交通、智能安防、工业等多个领域。因此,基于边缘计算技术的工业主板设计方案也受到越来越多人的关注。…

【Kaggle】Kaggle数据集如何使用命令语句下载?

一、Kaggle数据集如何下载 1.1 问题的起因 最近看到了 Google 组织的 Kaggle 比赛,想自己试一下,但是数据集太大了,将近有370G的数据。直接下载的话,网速太慢,可能要下载3-4天,所以萌生了用命令语句下载的…

LeetCode刷题笔记-287题寻找重复数

LeetCode 287 寻找重复数 难度:中等 题目: 给定一个包含 n 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,返回…

fpga开发--蜂鸣器发出连续不同的音调

描述 使用fpga蜂鸣器连续发出do,re,mi,fa,so,la,xi七个不同的音调,每个音调的持续时间为0.5s。 思路 采用状态机实现音调的转化,当do状态持续了0.5s之后转移到re状态,…

c语言位段知识详解

本篇文章带来位段相关知识详细讲解! 如果您觉得文章不错,期待你的一键三连哦,你的鼓励是我创作的动力之源,让我们一起加油,一起奔跑,让我们顶峰相见!!! 目录 一.什么是…

【SpringCloud Alibaba】(五)服务雪崩与容错方案

在前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。 但是,现在系统中存在着一个很明显的问题:那就是如果系统的并发量上来后,系统并没有容错的能力&#xf…

Onetable:统一的表格式元数据表示

概括 Onehouse 客户现在可以将他们的 Hudi 表查询为 Apache Iceberg 和/或 Delta Lake 表,享受从云上查询引擎到顶级开源项目的原生性能优化。 在数据平台需求层次结构的基础上,存在摄取、存储、管理和转换数据的基本需求。 Onehouse 提供这种基础数据…

C++库封装JNI接口——实现java调用c++

1. JNI原理概述 通常为了更加灵活高效地实现计算逻辑,我们一般使用C/C实现,编译为动态库,并为其设置C接口和C接口。用C实现的一个库其实是一个或多个类的简单编译链接产物。然后暴露其实现类构造方法和纯虚接口类。这样就可以通过多态调用到…

获取各省人口排名数据

目录 一、目标网址 二、网址分析 2.1、获取并解析网页内容 2.2 两种获取方法 三、获取目标数据 四、代码附件 一、目标网址 目标网址:中国人口排名 省份 1.1 网址截图 二、网址分析 2.1、获取并解析网页内容 我们需要使用requests库获取网页,使用…

三个常用查询:根据用户名 / token查询用户信息+链表分页条件查询

目录 1.根据用户名或者token查询用户信息 会员信息实体类 统一状态Result类 controller层 service层及实现类 dao层 测试: 2.链表分页条件查询 会员等级实体类 封装条件类PageVo controller层 service层及实现类 dao层 Mapper.xml层 测试 vue前端参考 1.根据用户名…

多模态大模型(MLLM)之VisCPM:支持中文对话文图双向生成

2020 年 12 月发布的 CPM-1 是国内首个中文大模型 ;2022 年 9 月发布的 CPM-Ant 仅微调 0.06% 参数就能超越全参数微调效果;2023 年 5 月发布的 WebCPM 是 中文首个基于搜索的问答开源模型。CPM-Bee 百亿大模型是团队最新发布的基座模型,中文…

基于springboot+mybatis+vue进销存管理信息系统

基于springbootmybatisvue进销存管理信息系统 一、系统介绍二、功能展示1.个人中心2.企业信息管理3.商品信息管理4.客户信息管理5.入库记录管理6.出库记录管理7.出库记录管理8.操作日志管理9.库存盘点管理 四、获取源码 一、系统介绍 系统主要功能: 普通用户&#…

为啥运营商现在严格规范网购流量卡的年龄了呢?20岁以下难了

本期知识点只讲流量卡,葫芦弟今天分享给大家手机流量卡开卡安全的问题。 很多朋友可能觉得电信诈骗离自己很远,但实际上现在已经出现大量收购电话卡用于诈骗的现象,而我们很可能在不知不觉中掉进犯罪分子的陷阱,触犯法律&#xff…

关于element ui 安装失败的问题解决方法、查看是否安装成功及如何引入

Vue2引入 执行npm i element-ui -S报错 原因:npm版本太高 报错信息: 解决办法: 使用命令: npm install --legacy-peer-deps element-ui --save 引入: 在main.js文件中引入 //引入Vue import Vue from vue; //引入…

C# Solidworks二次开发:自动创建虚拟零件及使用注意事项

今天要讲的是关于在solidworks中如何自动创建虚拟零件的功能,也就是solidworks中插入新零件这个功能。 实现这个功能需要使用的API如下所示: InsertNewVirtualPart(swFaceOrPlane1, out swcomp2); 其中这个方法中使…

【动态规划part11】| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

目录 🎈LeetCode123.买卖股票的最佳时机III 🎈LeetCode188.买卖股票的最佳时机IV 🎈LeetCode123.买卖股票的最佳时机III 链接:123.买卖股票的最佳时机III 给定一个数组,它的第 i 个元素是一支给定的股票在第 i…

X99双路主机28核56线程电脑配置选购与系统装机详细流程(附带资源)

文章目录 前期调研(包含配件详细信息)装机过程推荐学习视频实践过程 系统装机(含资源详细过程)提前准备(制作系统盘工具以及ISO系统镜像)实践过程步骤一:使用Rufsus工具,选择ISO文件…

记一次 .NET 某设备监控系统 死锁分析

一:背景 1. 讲故事 上周看了一位训练营朋友的dump,据朋友说他的程序卡死了,看完之后发现是一例经典的死锁问题,蛮有意思,这个案例算是学习 .NET高级调试 入门级的案例,这里和大家分享一下。 二&#xff…

【原理图专题】OrCAD Capture原理图设计差异对比

在我们进行硬件设计时,往往会遇到项目上的变更。比如更换了替代料、电路错误、新需求等等,这些有的需要动用到原理图,而动到原理图往往很容易出错,特别是已经量产的产品,我们可以通过BOM对比等方式来查看变更。那是否有一种其他方式能直接进行原理图对比呢? 其中对比功能…

桥接模式——处理多维度变化

1、简介 1.1、概述 桥接模式是一种很实用的结构型设计模式。如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合单一职责原则。与多层继承方案不同,它将两个独…