ARM架构—— Cortex-M3与Cortex-M4特点概述

一、Cortex-M3与Cortex-M4异同点

相同点:

  1. 基于ARM-v7-M架构。
  2. 三级流水线设计。
  3. 哈佛总线架构,统一的存储器空间:指令和地址总线使用相同的地址空间。
  4. 32位寻址,支持4GB 存储空间。
  5. 基于ARM AMBA(高级微控制器总线架构)技术的片上接口,支持高吞吐量的流水线总线操作。
  6. NVIC(嵌套向量中断控制器),最多支持240个中断请求和8~256个中断优先级(理论上支持,实际需芯片厂商设计)
  7. 具有支持多种OS(操作系统)特性,例如:节拍定时器和影子栈指针等。
  8. 支持休眠模式和多种低功耗模式。
  9. 支持可选MPU(存储器保护单元),具有存储器保护特性:可编程存储器或访问权限控制等。
  10. 可通过位段特性支持两个特定存储器区域中的位数据访问。
  11. 可选择使用单个或多个处理器。
  12. 具有多种指令:
  13. 普通数据处理,包括硬件除法指令。
  14. 存储器访问指令(8位,16位,32位)
  15. 位域处理指令
  16. 乘累加(MAC)以及饱和指令
  17. 跳转,条件跳转以及函数调用指令
  18. 系统控制、支持OS指令


不同点:

  1. Cortex-M4在DSP方面应用具有更高的性能。
  2. Cortex-M4支持浮点运算(单精度)。
  3. Cortex-M4支持单指令多数据(SIMD)操作。
  4. Cortex-M4支持快速MAC和乘法指令。
  5. Cortex-M4支持饱和运算指令。

二、特殊关键字解释

(1)哈弗结构介绍

        哈佛结构是一种将程序指令存储数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。

        两个存储器相对应的是系统的4条总线,即程序的数据总线地址总线数据的数据总线地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获得指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,进而提高了数据的吞吐率。

(2)浮点运算单元(FPU)

  • Cortex-M4硬件支持单精度浮点运算,提供浮点运算指令集,单周期完成运算;
  • Cortex-M4软件支持双精度浮点运算,使用C语言提供的Run-time Library函数,运算速度较慢,但是对于某些三角函数的运算又是必须的;
  • Cortex-M4支持定点运算(不常用),数据的存储和运算与整型数类似(增加移位操作),运算速度较快,但是可表达的数值较少。
  • Cortex-M4处理器具有硬件浮点单元(FPU),这意味着它可以直接执行浮点运算,包括加法、减法、乘法和除法等。这种硬件支持可以提高浮点运算的速度和效率,特别是对于需要大量浮点运算的应用程序而言。
  • Cortex-M3处理器没有硬件浮点单元,因此无法直接执行浮点运算。不过,Cortex-M3处理器可以通过软件库来实现浮点数计算。软件库中包含了一系列的软件算法和函数,可以模拟浮点运算的过程,虽然这样的软件实现通常会比硬件支持的浮点运算慢一些。

(3)三级流水线

  • MIPS——Million instruction Per Second 每秒多少百万条指令,比如0.9MIPS,每秒90万条指令。
  • MIPS/MHz表示CPU在1MHz的运行速度下可以执行多少个MIPS,比如0.9MIPS/MHz表示如果CPU运行在1MHz的频率下,每秒可执行90万条指令.
  • 这两个概念常用作描述ARM类的CPU执行速度,比如STM32F103ZET6的参数是1.25 DMips/MHZ,CPU的最高频率为72MHz,也就是说CPU满负荷运行时,速度为 72*1.25 = 90MIPS,也就是1秒可执行9000万条执行,非常非常快。

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

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

相关文章

在docker上运行LCM

目录 1.加载镜像并进入容器 2.安装依赖 3.在docker外部git-clone lcm 4.将get-clone的lcm复制到容器中 5.编译库 6.将可执行文件复制到容器中 7.进入可执行文件 8.编译可执行文件 9.再开一个终端运行程序 10.将以上容器打成镜像并导出 1.加载镜像并进入容器 sudo do…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)在TcpConnection 中接收并解析Http请求消息

一、在TcpConnection 中多添加和http协议相关的request和response struct TcpConnection {struct EventLoop* evLoop;struct Channel* channel;struct Buffer* readBuf;struct Buffer* writeBuf;char name[32];// http协议struct HttpRequest* request;struct HttpResponse* r…

Java10:内部类

7 内部类(了解)7.1 成员内部类7.2 静态内部类7.3 局部内部类7.4 匿名内部类 2.3. 静态内部类2.4. Lambda表达式, 7 内部类(了解) 内部类:就是在一个类的内部再定义一个类。 分类: 成员内部类 静…

压力测试对系统研发的作用是什么?

在回答这个问题之前,我们先来看看压力测试到底是什么? 压力测试是一种非功能性的软件测试方法,它通过模拟极端或者异常条件下的负载,来评估系统的性能、稳定性、可靠性和可扩展性。这种测试方法通常会模拟多用户同时访问系统、大数…

LabVIEW在旋转机械故障诊断中的随机共振增强应用

在现代工业自动化领域,准确的故障诊断对于保障机械设备的稳定运行至关重要。传统的故障检测方法往往因噪声干扰而难以捕捉到微弱的故障信号。随着LabVIEW在数据处理和系统集成方面的优势日益凸显,其在旋转机械故障诊断中的应用开始发挥重要作用&#xff…

​油烟净化器电源安全,保障健康餐饮生活

我最近分析了餐饮市场的油烟净化器等产品报告,解决了餐饮业厨房油腻的难题,更加方便了在餐饮业和商业场所有需求的小伙伴们。 随着人们生活水平的提高,餐饮业也得到了快速发展。然而,餐饮油烟污染也成为了人们关注的焦点。 油烟中…

Spring学习 Spring整合MyBatis

6.1.创建工程 6.1.1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.ap…

20240108移远的4G模块EC20在Firefly的AIO-3399J开发板的Android11下调通的步骤

20240108移远的4G模块EC20在Firefly的AIO-3399J开发板的Android11下调通的步骤 2024/1/8 17:50 缘起&#xff1a;使用友善之臂的Android11可以让EC20上网&#xff0c;但是同样的修改步骤&#xff0c;Toybrick的Android11不能让EC20上网。最后确认是selinux的问题&#xff01; …

Linux文件系统与日志分析

目录 一、Linux文件系统 1、inode与block 2、查看inode号码的命令 3、inode包含文件的元信息 4、Linux系统文件的三个主要时间属性 5、用户通过文件名打开文件时系统内部过程 6、inode的大小 7、inode的特点 二、日志 1、日志的功能 2、日志文件的分类 3、系统日志…

解锁前端新潜能:如何使用 Rust 锈化前端工具链

前言 近年来&#xff0c;Rust的受欢迎程度不断上升。首先&#xff0c;在操作系统领域&#xff0c;Rust 已成为 Linux 内核官方认可的开发语言之一&#xff0c;Windows 也宣布将使用 Rust 来重写内核&#xff0c;并重写部分驱动程序。此外&#xff0c;国内手机厂商 Vivo 也宣布…

语言栏中的半角和全角

语言栏中的半角和全角 1. 语言栏2. Halfwidth and fullwidth forms3. Monospaced fontReferences 1. 语言栏 任务栏设置 时间和语言 输入 高级键盘设置 文本服务和输入语言 2. Halfwidth and fullwidth forms 半角和全角&#xff0c;别名半形和全形。 In CJK (Chinese, Japa…

并发编程之CASAtomic原子操作

目录 什么是CAS&#xff1f; CAS 原子操作的三大问题 ABA问题 循环时间长开销大 只能保证一个共享变量的原子操作 jdk中的原子操作类 AtomicInteger AtomicLong AtomicReference LongAdder 什么是CAS&#xff1f; CAS是“比较并交换”&#xff08;Compare and Swap&a…

sentinel入门,转载的,不记得在哪复制的了

sentinel 基本概念 开发的原因&#xff0c;需要对吞吐量&#xff08;TPS&#xff09;、QPS、并发数、响应时间&#xff08;RT&#xff09;几个概念做下了解&#xff0c;查自百度百科&#xff0c;记录如下&#xff1a; 响应时间(RT)   响应时间是指系统对请求作出响应的时间。…

python按列写入数据到excel

要将数据按列写入 Excel&#xff0c;可以使用 Python 的 openpyxl 库。 首先&#xff0c;需要安装 openpyxl 库。可以使用以下命令在终端或命令提示符中安装&#xff1a; pip install openpyxl然后&#xff0c;可以按照以下步骤编写代码&#xff1a; 1.导入 openpyxl 库&…

Prokka: ubuntu安装的时候出现错误

[14:10:57] Running: cat /app/prokka_result/ref_file/ref_file.HAMAP.hmm.tmp.77.faa | parallel --gnu --plain -j 2 --block 108208 --recstart ‘>’ --pipe hmmscan --noali --notextw --acc -E 1e-09 --cpu 1 /opt/prokka/db/hmm/HAMAP.hmm /dev/stdin > /app/pro…

Linux 网络工具

sar 利用 sar 工具来监控网络情况&#xff0c;命令行形式&#xff1a; sar -n [keyword] [ <interval> [ <count> ] ]参数说明&#xff1a; -n&#xff1a;表示网络性能监控。 keyword 的取值如下&#xff1a; DEV&#xff1a;显示网络接口信息。EDEV&#xff…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)HttpResponse的定义和初始化 以及组织 HttpResponse 响应消息

一、HttpResponse的定义 1.定义状态码枚举 // 定义状态码枚举 enum HttpStatusCode {Unknown 0,OK 200,MovedPermanently 301,MovedTemporarily 302,BadRequest 400,NotFound 404 }; 2.HTTP 响应报文格式 这个数据块主要是分为四部分 第一部分是状态行第二部分是响应…

Hyperledger Fabric 管理链码 peer lifecycle chaincode 指令使用

链上代码&#xff08;Chaincode&#xff09;简称链码&#xff0c;包括系统链码和用户链码。系统链码&#xff08;System Chaincode&#xff09;指的是 Fabric Peer 中负责系统配置、查询、背书、验证等平台功能的代码逻辑&#xff0c;运行在 Peer 进程内&#xff0c;将在第 14 …

【嵌入式-网络编程】vmware中使用UDP广播失败问题

问题描述&#xff1a; 自己在vmware中搭建了2台虚拟机&#xff0c;虚拟机A向虚拟机A和虚拟机B发送广播信息&#xff0c;接收端在虚拟机A和虚拟机B&#xff0c;这个时候&#xff0c;由于没配置sin.sin_addr.s_addr htonl(INADDR_ANY);&#xff0c;而是配置的inet_pton(AF_INET,…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)HttpRequest模块 解析http请求协议

一、HTTP响应报文格式 HTTP/1.1 200 OK Bdpagetype: 1 Bdqid: 0xf3c9743300024ee4 Cache-Control: private Connection: keep-alive Content-Encoding: gzip Content-Type: text/html;charsetutf-8 Date: Fri, 26 Feb 2021 08:44:35 GMT Expires: Fri, 26 Feb 2021 08:44:35 GM…