一文彻底分清ARM架构、内核、指令集等相关概念

news2024/11/24 12:30:09

任何学习嵌入式/单片机的朋友都绕不开ARM,但初学者总是对ARM架构、内核、指令集等相关概念不够清晰或者混淆,本文帮助入门的朋友彻底弄清楚。

目录

1.芯片、CPU、SOC

2.ARM公司

3.ARM架构与内核、指令集

3.1架构与内核

3.2架构与指令集

4.ARM架构和处理器发展史

4.1ARM架构

4.2ARM处理器


 原文地址:一文彻底分清ARM架构、内核、指令集等相关概念 

1.芯片、CPU、SOC

在谈论ARM之前,必须把芯片、CPU、SOC这些概念解释清楚,芯片是一个广泛的词语,属于半导体元件的总称。英语会更准确:integrated circuit(集成电路)。很多人把芯片等同于CPU,这显然是错误的。CPU只是属于芯片这个概念范围内的一种。

而我们日常所谈论的手机处理器往往指的是SOC。SOC全称System on Chip,即片上系统,也就是集成了很多东西在一个芯片上,简单地说SOC包含了CPU加上很多其他模块。

复杂地说SOC包含了微处理器(MPU Micro Processor Unit)、数字IP核、模拟IP核和存储器。微处理器,也即是逻辑核,包括CPU、时钟、中断控制器、I/O端口以及用于各种IP核之间的粘合逻辑等等,负责系统的控制。数字IP核包含了我们的加速器,能够减轻处理器的计算负担。模拟IP核包含了ADC、DAC、PLL等模拟电路,负责与外界的模拟信息进行数据传输。存储器包括各种易失、非易失以及Cache等存储器,用于储存系统运行的代码以及数据。

这里要指出一个概念上的CPU问题,CPU其实是一个相对概念(注意理解Unit单元),当我们指手机的CPU,就是指这个手机的中央处理单元,也就是SOC,比如高通骁龙888,当我们指SOC的CPU则是指SOC中的中央处理器单元,也就是微处理器(MPU),当我们指MPU的CPU时,则是指MPU的中央处理单元。你要是看多了英文资料,你就会发现老外很少用CPU这个词,而基本上都用Processor处理器,有处理功能的都可以叫处理器。

附:MCU(MicroController Unit)和SOC并没有特别本质的区别,SOC比MCU集成了更多东西,更强大而已。而单片机这个概念更是广泛,MCU和SOC都可以称为单片机,不详细论述了。如51、STM32F1、STM32F4等都可以叫MCU,而STM32MP、S3C2440、IMX6ULL、高通骁龙、海思麒麟等都可以叫SOC,他们也都可以被叫做单片机,当然一般来说单片机指的是MCU。

2.ARM公司

首先ARM是家公司,在1990年成立,全名是“Advanced RISC Machines Ltd.,”——先进精简指令集机器公司.ARM公司是一家知识产权(IP)供应商,它不制造处理器,而是设计,售卖设计器方案(不止设计处理器,但主要是处理器)。

ARM公司的历史就不赘述了,感兴趣的直接去他官网就能知道。https://www.arm.com/

也就是说ARM公司设计出一种处理器设计方案,然后其他有制造SOC、MCU需求的公司,比如三星、ST、TI、IMX、华为等,去购买ARM公司的方案,在他的基础上删删改改,加些外围东西变成自己想要的SOC、或MCU设计,再去找制造公司生产。

3.ARM架构与内核、指令集

3.1架构与内核

首先要理解架构是什么东西。架构指的是一种大体上的方案,比如造房子,高楼、平房、独栋别墅,这就是三种不同的架构。

你想造一个房子,在具体的细节实现之前,你必须思考,我到底要造高楼、平房、独栋别墅.........然后我确定我要造平房,什么样的平房?我要造三室一厅的平房,这就是一种基于平房架构的内核,我要造四室一厅的平房,这就是基于平房架构的另外一种内核。

先有架构,再有内核,一个架构可以衍生出多种内核

内核之所以称之为内核,是因为他是在SOC、MCU内部中最核心的逻辑处理部分,就是SOC、MCU的CPU。所以内核也可以叫做处理器。

别的公司可以向ARM公司购买架构使用权,ARM给你架构,你自己去设计内核,这就是自研内核,比如三星、高通、苹果公司都有基于ARM架构的自研内核。ARM公司自己针对自己架构设计的内核又称作公版内核,别的公司也可以购买ARM的公版内核使用权,比如华为用的就是公版内核。

现以IMX6ULL芯片为例,IMX6ULL芯片,又可以叫IMX6ULL SOC。其内部组成如下:

用红框标出来的部分叫做内核,为ARM Cortex-A7,而这个内核时基于ARMv7-A 架构。

以STM32F407芯片为例,STM32F407芯片又可以叫做STM32F407 MCU(太大,只展示一部分):

内核为ARM Cortex-M4,而这个内核基于ARMv7E-M架构。

3.2架构与指令集

ARM架构ARM指令集经常放在一起说。经常说成ARM指令集架构,实际上并不完全相等。

ARM架构包含了指令集、寄存器集、存异常模型、内存模型等内容。

指令集是指处理器能够识别并执行的指令集合。

ARM,Advanced RISC Machines,先进精简指令集机器,其中RISC是Reduced Instruction Set Computer的缩写,意为精简指令集处理器,ARM是RISC最突出的代表,其它比较有名的RISC指令集还有:MIPS,PowerPC,SPARC,RISC-V。

与RISC相对的是CISC,Complex Instruction Set Computer,复杂指令集处理器,闻名世界的X86指令集就是一种CISC指令集。

ARM指令集也是一个统称,实际上ARM指令集还分为 ARM64指令集、 ARM32指令集、THUMB指令集、THUMB-2指令集、NEON指令集、VFP指令集、DSP指令集。不同版本架构支持不同指令集。

4.ARM架构和处理器发展史

4.1ARM架构

ARMv1:1985年发布,最早的ARM架构。

ARMv2:1986年发布,改进了ARMv1,增加了32位地址总线和指令集扩展(增加了一些指令)。

ARMv3:1992年发布,支持虚拟内存、增加了指令集扩展,包括支持协处理器(coprocessor)。

ARMv4:1994年发布,增加了Java虚拟机指令集扩展(Jazelle)和Thumb指令集,提高了代码密度。

ARMv5:1997年发布,增加了支持嵌入式Java的指令集扩展(Jazelle-RCT)、增加了支持浮点运算的指令集扩展(VFP)。

ARMv6:2002年发布,增加了Thumb-2指令集,提高了代码密度和执行效率,同时也增加了一些指令集扩展,包括支持Jazelle-DBX。

ARMv7:2004年发布,增加了基于TrustZone的安全扩展、NEON指令集扩展,支持向量浮点运算(VFPv3)等。

ARMv8:2011年发布,增加了AArch64架构,支持64位处理器,同时保留了AArch32架构,提高了性能和能耗效率。

ARMv9:2021年发布,增加了Confidential Compute Architecture(CCA)和Realms技术,提高了安全性和隔离性。

4.2ARM处理器

针对每一种ARM架构,ARM都设计了很多的处理器(内核),这里就不列出来了,感兴趣去官网能够查找。这里主要讲讲命名的变化。

主要分为经典处理器、Cortex-M系列处理器、Cortex-R系列处理器、Cortex-A系列处理器

经典处理器都是按照数字命名的,直到ARM11。也就是推出架构v7的时候,ARM公司把产品并分为三大产品线,分别是Cortex-A、Cortex-R和Cortex-M。

近两年推出的cortex-X并不是单独的产品线,它可看做cortex-A的升级版,两者的市场定位是一样的。

Cortex-A系列处理器是针对高端应用而设计的,通常应用于智能手机、平板电脑、数字电视和网络设备等。这些处理器拥有高性能、大规模的内存管理单元以及大量的内部缓存,支持多核处理和虚拟化技术。

Cortex-R系列处理器是针对实时应用而设计的,通常应用于汽车、工业控制和医疗设备等。这些处理器拥有极低的延迟、高精度的计时器和内部存储器保护机制,能够在实时响应和高可靠性方面表现出色。

Cortex-M系列处理器是针对低功耗、低成本、嵌入式应用而设计的,通常应用于传感器、智能家居、工业控制和医疗设备等。这些处理器拥有低功耗、小尺寸和低成本等优点,同时也支持实时性、安全性和可靠性等特性。

原文地址:一文彻底分清ARM架构、内核、指令集等相关概念

系列文章合集:

FreeRTOS文章合集

嵌入式Linux基础文章合集

ARM学习系列合集

C语言学习系列合集

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

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

相关文章

操作系统——概述

目录 1.1初识操作系统 思考题: 1.2操作系统的功能和定义 思考题: 1.3操作系统发展史 思考题: 1.4分时技术 思考题: 1.5典型操作系统类型 1.1初识操作系统 常见桌面级别的四大操作系统:Windows、Mac OS、Linu…

swift 技术 音频

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络&#xff0…

【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)

一、为什么需要测试🤔️ 你写不出 bug-free 的代码。你认为自己写出了 bug-free 的代码,但它在你意想不到的地方出错了。你觉得自己写出了永不出错的代码,但它的性能十分糟糕。 二、在开发过程中做好测试(理想情况下)…

PLC模糊PID模糊规则矩阵(梯形图语言实现)

博途PLC的模糊PID控制详细内容请查看下面的博客文章: Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_RXXW_Dor的博客-CSDN博客模糊PID的其它相关数学基础,理论知识大家可以参看专栏的其它文章,这里不再赘述,本文就双容…

mysql实现存在则保存,不存在则更新

方式1 ON DUPLICATE KEY UPDATE 使用前提:表必须配置唯一键或者主键,且保存的字段中包含该键【重点】 原理: ON DUPLICATE KEY UPDATE如果配合主键,存在数据a,新插入b,如果主键不冲突,会保存b…

[React] useRef用法和特性

useRef 与 useState 的区别 一般在使用react-hook的时候&#xff0c;我们用到最多的就是定义变量&#xff0c;以及对应的修改变量 下面是一个最基本的 react-hook 应用程序 const Home () > {const [username, setUserName] useState();return &#xff08;<input va…

【物联网】物1— 初步认识MQTT、连接到MQTT服务端

目录 一、MQTT是什么 二、MQTT的版本 两者之间的关系&#xff1a; ​三、MQTT工作的基本原理 3.1、概念 MQTT客户端&#xff1a; MQTT服务端&#xff1a; MQTT主题&#xff1a; 3.2、MQTT订阅/发布主题的特点 相互可独立性&#xff1a; 空间可分离&#xff1a; 时间…

创建第一个DJango3的后端项目

1.安装DJango 需要事先安装python 打开控制台,使用pip命令安装django pip install django如何检验安装成功&#xff1a;在命令行中进入python的环境&#xff0c;导入并打印django的版本信息 2.使用django创建第一个项目 在命令行中进入要存放项目的位置&#xff0c;输入dj…

【mysql】日常遇到的问题解决

目录 MySQL 删除数据库报错 1010 - Error dropping database (cant rmdir) [ERR] 1452 - Cannot add or update a child row: a foreign key constraint fails MySQL 删除数据库报错 1010 - Error dropping database (cant rmdir) 场景复现&#xff1a;navicat中&#xff0c…

Java集合 —— HashMap

一、HashMap是什么 HashMap是一个存储key-value键值对的哈希表&#xff0c;表中每个元素的key都是唯一的&#xff08;通过equals方法判断&#xff09;&#xff0c;查询时通过key的hashcode值即可定位到元素的存储地址&#xff0c;因此HashMap在理想情况下查询时间复杂度为O(1)…

简单谈谈OLTP,OLAP和列存储的概念

简单谈谈OLTP,OLAP和列存储的概念 OLTP(online transaction processing)OLAP(online analytic processing)OLTP VS OLAP数据仓库OLTP数据库和数据仓库之间的差异星型和雪花分析模式列式存储列压缩列式存储和列族内存带宽与矢量化处理列式存储中的排序顺序几个不同的排序顺序 写…

换个花样玩C++(4)细聊C++的引用精妙之处

引用是C++引入的新语言特性。而且在日常工作开发过程中,经常会使用到引用,对于一些做系统架构的架构师而言,这也是不可或缺的一门基本功,我在工作中发现,很多人并没有搞清楚引用。因此我在本篇中将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。…

你的mysql到底能存多少数据呢?

前言 参考借鉴文章 我说MySQL每张表最好不超过2000万数据&#xff0c;面试官让我回去等通知&#xff1f; 这里自己在总结一下&#xff0c;原因是相关知识欠缺&#xff0c;看别人的文章研究很久才弄明白&#xff0c;所以这里记录一些心得。 作者&#xff1a;阿杆 链接&#xff…

4月28号软件资讯更新合集.....

快速接活&#x1f496;Snowy v2.2.8 已更新 Snowy&#xff08;SnowyAdmin&#xff09;是国内首个国密前后端分离快速开发平台&#xff0c;集成国密加解密插件&#xff0c; 使用 AntdvVite3SpringBootMybatisPlusHutoolSaToken 技术栈开发&#xff0c;软件层面符合等保测评要求…

PPPwizard1.4.3软件使用说明中文翻译稿

PPP软件包使用说明(版本1.4.3) 1. 交付包 PPPWizardxy内容是按照以下模式组成&#xff1a; PPPWizardxy |-- PPPSoftwarePackage_v1.4.3.pdf |-- RTRover |-- compile.sh |-- generateLowLevel.cpp |-- getStream.cpp |-- laurichesse_ion_gnss_2015_september_bdp.pdf |-- …

JVM内存模型的演变

1&#xff0c;背景 class文件、类的加载过程。我们的class文件就要进入到JVM内存里&#xff0c;我们沿着经典的JDK1.6&#xff0c;JDK1.7&#xff0c;JDK1.8看看在其中都经历了哪些改变 概念的统一&#xff1a; 方法区&#xff1a; 方法区可以看作是JVM逻辑上管理一片区域的…

深度学习-第T5周——运动鞋品牌识别

深度学习-第T5周——运动鞋品牌识别 深度学习-第T5周——运动鞋品牌识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目3、查看数据 四、数据预处理1、 加载数据1、设置图片格式2、划分训练集3、划分验证集4、查看标签 2、数据可视化3、检查数据4、配置数据集 …

微短剧“小阳春”,“爱优腾芒”抢滩登陆?

降本增效一整年&#xff0c;长视频平台们似乎扭转了市场对于它们“烧钱”的印象。 爱奇艺宣布2022全年盈利&#xff0c;腾讯视频宣布从去年10月起开始盈利&#xff0c;视频平台们结束了一场“无限战争”。 与此同时&#xff0c;随着短视频平台的崛起&#xff0c;视频内容的形…

从0到1带你构建——低代码开发入门案例

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端&#xff08;Node.js&#xff09; &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;…

【算法】欧拉路径的DFS存储顺序

欧拉路径和欧拉回路 对于无向图&#xff0c;所有边都是连通的。 &#xff08;1&#xff09;存在欧拉路径的充分必要条件&#xff1a;度数为奇数的点只能有0个或2个。 &#xff08;2&#xff09;存在欧拉回路的充分必要条件&#xff1a;度数为奇数的点只能有0个。 对于有向图&a…