【genius_platform软件平台开发】第八十八讲:arm公司的V架构和内核发展史(整理)

news2024/11/17 11:34:48

1. ARM公司简介

ARMAdvanced RISC Machines)有三种含义:它是一个公司的名称、它是一类微处理器的通称、它是一种技术的名称

  • ARM 公司是微处理器行业的一家知名企业,它是知识产权供应商,设计基于ARM体系的处理器;公司并不生产芯片,也不出售芯片,它转让设计方案给半导体厂商,由半导体厂商生产soc,并销售,同时提供一些其他设计服务,比如物理IP,图形内核和开发工具的设计。

2. ARM指令集

2.1 指令集的概念

  • 处理器能够识别并执行的指令集合
  • 每一条指令可处理一个简单或复杂操作(加乘…);每一条指令对应一条或几条汇编指令

2.2 指令集常见分类

复杂指令集(CISC):包含处理复杂操作的特定指令,指令长度不固定,执行需要多个周期
精简指令集(RISC):指令简单而有效,格式和长度通常是固定的,大多数指令在一个周期内可以执行完毕。ARM的内核是基于RISC体系结构的。

2.3 cpu与主流架构

  • 大家熟悉的服务器或者台式机都是X86架构的CPU,X86架构的CPU特点是性能高,并且软件的兼容性很好

  • 大家平常工作中使用的大部分是英特尔等提供的X86架构的CPU,对于英特尔AMD大家都不陌生,这两家厂商专门生产X86架构CPU

  • 另外X86 64位这种架构的CPU存在别名,例如x86_64或者amd64都代表X86架构的64位CPU
    在这里插入图片描述

  • 与X86不同的是还有另一种称为ARM的架构,这是本文的主题,那么ARM架构的CPU和X86架构的CPU相比有何不同?

  • 它的制造成本更低,ARM架构的芯片的功耗也很低,代表性的厂商和使用者是苹果华为

  • 苹果将生产的ARM芯片用到笔记本IMAC上,ARM架构的CPU越来越普及。

  • 国内的华为会生产基于ARM架构的服务器,64位ARM架构CPU也有别名,例如arm64aarch64,这两种叫法表达同一个意思

3 ARM架构与ARM内核

3.1 ARM架构与内核简述

  • 目前ARM体系架构共定义了8个版本V1-V8
    V1-V3 :最早的版本,目前已废弃
    V4-V6 : 经典处理器中运用的比较
    V7 : 目前Cortex系列处理器主要是这种架构、支持Thumb-2的32位指令集
    V8 : 兼容ARMv7架构的特性,并支持64位数据处理
  • 目前为止,ARM总共发布8种架构ARMv1ARMv2、ARMv3ARMv4、ARMv5ARMv6ARMv7ARMv8,这是ARM架构指令集的多个v版本
  • 基于不同的ARM架构可以设计出不同特点的内核处理器。比如基于ARMv3架构设计出的处理器ARM6ARMv7 这两款处理器适用于不同的场景硬件可能不同,但是架构指令集是一样的
  • 好比盖房子,刚开始因为水平低流行盖平房,这就是一种架构(ARMv5),然后这种平房架构你可以设计出一款独立卫生间的款式, 这叫ARM7内核。 然后其他人(芯片设计公司)想盖房子的就买你这个图纸去盖,接着过一段时间,有人觉得光独立卫生间还不够啊, 我还想有个小院子! 好吧,那ARM就满足你们的要求,出个带小院子的款式(ARM9)。
  • ARMv1/2/3等是指令集的架构ARM7/9等是基于架构设计出的内核处理器ARM的架构都是基于RISC指令集而设计的,内核是实现这一指令集的硬件架构的基础

3.2 ARM处理器家族

在这里插入图片描述

  • 早先经典处理器
    包括ARM7ARM9ARM11家族。
    体系结构定义指令集和基于这一体系结构下处理器的编程模型基本数据类型工作模型寄存器组)。基于同种体系结构可以有多种处理器、每个处理器的性能不同,面向的应用领域也不同
    在这里插入图片描述

3.2.1 Cortex-Mx处理器

Cortex-M 系列产品主要包括 Cortex-M0Cortex-M1Cortex-M3Cortex-M4Cortex-M7 等,其中 Cortex-M0 主打低功耗和混合信号的处理,Cortex-M3 主要用来替代 ARM7,重点侧重能耗与性能的平衡,而 Cortex-M7 则重点放在高性能控制运算领域。
在这里插入图片描述

3.2.2 STM32平台

  • STM32,从字面上来理解,ST意法半导体MMicroelectronics 的缩写,32 表示32 位,合起来理解,STM32 就是指 ST 公司开发的 32 位微控制器。在如今的 32 位控制器当中,STM32 可以说是最璀璨的新星,它大受工程师和市场的青睐,无芯能出其右。

STM32产品分类:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 ARM各架构之间区别

4.1 ARM版本Ⅰ:V1版架构

  • 该版架构只在原型机ARM1出现过,只有26位的寻址空间,没有用于商业产品。其基本性能有:
    基本的数据处理指令(无乘法)
    基于字节、半字和字的Load/Store指令;
    转移指令,包括子程序调用及链接指令;
    供操作系统使用的软件中断指令SWI;
    寻址空间:64MB(226)。

4.2 ARM版本Ⅱ:V2版架构

  • 该版架构对V1版进行了扩展,例如ARM2和ARM3(V2a)架构。包含了对32位乘法指令和协处理器指令的支持。
  • 版本2a是版本2的变种,ARM3芯片采用了版本2a,是第一片采用片上Cache的ARM处理器。同样为26位寻址空间,现在已经废弃不再使用。V2版架构与版本V1相比,增加了以下功能:
    乘法和乘加指令;
    支持协处理器操作指令;
    快速中断模式;
    SWP/SWPB的最基本存储器与寄存器交换指令;
    寻址空间:64MB。

4.3 ARM版本Ⅲ: V3版架构

  • ARM作为独立的公司,在1990年设计的第一个微处理器采用的是v3ARM6。它作为IP核独立的处理器、具有片上高速缓存MMU写缓冲的集成CPU。
  • 变种版本有3G和3M。版本3G是不与版本2a向前兼容的版本3,版本3M引入了有符号无符号数乘法乘加指令,这些指令产生全部64位结果。V3版架构( 目前已废弃 )对ARM体系结构作了较大的改动:
    寻址空间增至32位(4GB);
    当前程序状态信息从原来的R15寄存器移到当前程序状态寄存器CPSR中(Current Program Status Register);
    增加了程序状态保存寄存器SPSR(SavedProgram Status Register);
    增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常。;
    增加了MRS/MSR指令,以访问新增的CPSR/SPSR寄存器;
    增加了从异常处理返回的指令功能。

4.4 ARM版本Ⅳ: V4版架构

  • V4版架构在V3版上作了进一步扩充,V4版架构是目前应用最广的ARM体系结构,ARM7ARM8ARM9StrongARM都采用该架构。
  • V4不再强制要求与26位地址空间兼容,而且还明确了哪些指令会引起未定义指令异常。指令集中增加了以下功能:
    符号化和非符号化半字及符号化字节的存/取指令;
    增加了T变种,处理器可工作在Thumb状态,增加了16位Thumb指令集;
    完善了软件中断SWI指令的功能;
    处理器系统模式引进特权方式时使用用户寄存器操作;
    把一些未使用的指令空间捕获为未定义指令

4.5 ARM版本Ⅴ: V5版架构

  • V5版架构是在V4版基础上增加了一些新的指令ARM10Xscale都采用该版架构。这些新增命令有:
    带有链接和交换的转移BLX指令;
    计数前导零CLZ指令;
    BRK中断指令;
    增加了数字信号处理指令(V5TE版); 为协处理器增加更多可选择的指令
    改进了ARM/Thumb状态之间的切换效率;
    E---增强型DSP指令集,包括全部算法操作和16位乘法操作;
    J----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能。

4.6 ARM版本Ⅵ: V6版架构

  • V6版架构是2001年发布的,首先在2002年春季发布的ARM11处理器中使用。在降低耗电量的同时,还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD (Single Instruction, Multiple Data,单指令多数据 )功能,将语音及图像的处理功能提高到了原型机的4倍。此架构在V5版基础上增加了以下功能:
    THUMBTM:35%代码压缩;
    DSP扩充:高性能定点DSP功能;
    JazelleTM:Java性能优化,可提高8倍;
    Media扩充:音/视频性能优化,可提高4倍

5 ARM产品型号

5.1 ARM-v内核产品型号

  • 基于各ARM架构设计的内核型号如下图所示:
    在这里插入图片描述
  • 目前常见的指令集的说明:ARMv7之前均为32位总线位宽,从ARMv8开始扩展为64位总线位宽(数据总线、地址总线、控制总线位宽均为64位,一般寻址空间不会用满)。

5.2 ARM处理器命名规则

ARM处理器命名规则和格式:ARM x y z T D M I E J F -S
x:序列
y:2:带MMU, 4带MPU,6没有
z:0:标准cache,2:减小的cache, 6可变的cache
T:处理器支持Thumb指令集
D:支持JTAG调试器
M:支持长乘法指令
I:有嵌入式跟踪宏单元
E:支持增强指令(基于TDMI)
J:支持JAVA硬件加速(Jazelle)
F:支持向量浮点单元
S:可综合版本

5.3 ARM v7架构细分

ARM6:ARMv3架构
ARM7、ARM8、RAM9:ARMv4架构
ARM10:ARMv5架构
ARM11:ARMv6架构
ARM-Cortex 系列:ARMv7架构
ARM7没有MMU(内存管理单元),只能叫做MCU(微控制器),不能运行诸如LinuxWinCE等这些现代的多用户多进程操作系统,因为运行这些系统需要MMU,才能给每个用户进程分配进程自己独立的地址空间ucOSucLinux这些精简实时的RTOS不需要MMU,当然可以在ARM7上运行。
ARM9ARM11:是嵌入式CPU(处理器),带有MMU,可以运行诸如Linux等多用户多进程的操作系统,应用场合也不同于ARM7。
到了ARMv7架构的时候开始以Cortex来命名,并分成Cortex-ACortex-RCortex-M三个系列。三大系列分工明确:

5.3.1 Cortex-A系列

  • A-Profile,即“Application”-Profile,侧重于应用功能的场合,A系列面向尖端的基于虚拟内存的操作系统和用户应用;针对开放式操作系统的高性能处理器,进行海量数据处理高性能计算;应用于智能手机数字电视智能本等高端运用。主要支持分页内存管理单元MMU,linux需要MMU的支持才能运行

5.3.2 Cortex-R系列

  • R-Profile,即"Real-Time"-Profile,侧重于实时系统的场合。R系列针对实时系统;针对实时系统、满足实时性要求高的控制需求;应于汽车制动系统动力系统等。

5.3.3 Cortex-M系列

  • M-Profile,即"Microntroller"- Profile,侧重微控制器单片机方面的场合。M系列对微控制器。简单的说Cortex-A系列是用于移动领域的CPUCortex-RCortex-M系列是用于实时控制领域的MCU。为单片机驱动的系统提供的低成本优化方案;应用于传统的微控制器市场智能传感器汽车周边部件等。

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

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

相关文章

5-Azidopentanoic acid,79583-98-5,5-Azidopentanoic COOH具有高效稳定,高特异性

5-Azidopentanoic acid,5-Azidopentanoic COOH,5-叠氮基戊酸产品规格:1.CAS号:79583-98-52.分子式:C5H9N3O23.分子量:143.074.包装规格:1g,5g,10g,包装灵活&a…

Spring Data JPA 之 理解 Persistence Context 的核心概念

21 理解 Persistence Context 的核心概念 21.1 Persistence Context 相关核心概念 21.1.1 EntityManagerFactory 和 Persistence Unit 按照 JPA 协议⾥⾯的定义:persistence unit 是⼀些持久化配置的集合,⾥⾯包含了数据源的配置、EntityManagerFacto…

WideDeep模型

google提出的Wide&deep模型,将线性模型与DNN很好的结合起来,在提高模型泛化能力的同时,兼顾模型的记忆性。wide&deep这种将线性模型与DNN的并行连接模式,后来称为推荐领域的经典模式,奠定了后面深度学习模型的…

Containerd容器运行时将会替换Docker?

文章目录一、什么是Containerd?二、Containerd有哪些功能?三、Containerd与Docker的区别四、Containerd是否会替换Docker?五、Containerd安装、部署和使用公众号: MCNU云原生,欢迎微信搜索关注,更多干货&am…

一条 SQL 查询语句是如何执行的?

MySQL是典型的C/S架构(客户端/服务器架构),客户端进程向服务端进程发送一段文本(MySQL指令),服务器进程进行语句处理然后返回执行结果。 问题来了。服务器进程对客户端发送的请求究竟做了什么处理呢&#…

【大数据基础】Hadoop3.1.3安装教程

来源: https://dblab.xmu.edu.cn/blog/2441/ 前言:重装解决一切bug!事实上,问题中的绝大部分衍生问题都可以通过重装解决。 实验内容 创建Hadoop用户 首先按 ctrlaltt 打开终端窗口,输入如下命令创建新用户 : sudo…

【Spring6】| Spring对IoC的实现(核心重点)

目录 一:Spring对IoC的实现 1. IoC 控制反转 2. 依赖注入 2.1 set注入 2.2 构造注入 3. set注入专题 3.1 注入外部Bean 3.2 注入内部Bean 3.3 注入简单类型 3.4 级联属性赋值(了解) 3.5 注入数组 3.6 注入List集合和Set集合 3.7…

17- TensorFlow中使用Keras创建模型 (TensorFlow系列) (深度学习)

知识要点 Keras 是一个用 Python 编写的高级神经网络 API数据的开方: np.sqrt(784) # 28代码运行调整到 CPU 或者 GPU: import tensorflow as tf cputf.config.list_physical_devices("CPU") tf.config.set_visible_devices(cpu) 模型显示: model.summary()…

Tik Tok品牌营销,如何做好内容打法

TikTok 上做好品牌营销,并不能只关注品牌所获得的视频浏览量和点赞量,根据潜在客户需求生成的内容策略同样至关重要。通过建立营销漏斗模型,可以将 TikTok 策略分为三种不同类型的内容,从具有广泛吸引力的内容转变为具有高度针对性…

Vue组件是怎样挂载的

我们先来关注一下$mount是实现什么功能的吧&#xff1a; 我们打开源码路径core/instance/init.js: export function initMixin (Vue: Class<Component>) {......initLifecycle(vm)// 事件监听初始化initEvents(vm)initRender(vm)callHook(vm, beforeCreate)initInject…

FastDDS-3. DDS层

3. DDS层 eProsima Fast DDS公开了两个不同的API&#xff0c;以在不同级别与通信服务交互。主要API是数据分发服务&#xff08;DDS&#xff09;数据中心发布订阅&#xff08;DCPS&#xff09;平台独立模型&#xff08;PIM&#xff09;API&#xff0c;简称DDS DCPS PIM&#xf…

nacos集群模式+keepalived搭建高可用服务

实际工作中如果nacos这样的核心服务停掉了或者整个服务器宕机了&#xff0c;那整个系统也就gg了&#xff0c;所以像这样的核心服务我们必须要搞个3个或者3个以上的nacos集群部署&#xff0c;实现高可用&#xff1b; 部署高可用版本之前&#xff0c;首先你要会部署单机版的naco…

[2]MyBatis+Spring+SpringMVC+SSM整合一套通关

二、Spring 1、Spring简介 1.1、Spring概述 官网地址&#xff1a;https://spring.io/ Spring 是最受欢迎的企业级 Java 应用程序开发框架&#xff0c;数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Jav…

激活函数入门学习

本篇文章从外行工科的角度尽量详细剖析激活函数&#xff0c;希望不吝指教&#xff01; 学习过程如下&#xff0c;先知道这个东西是什么&#xff0c;有什么用处&#xff0c;以及怎么使用它&#xff1a; 1. 为什么使用激活函数 2. 激活函数总类及优缺点 3. 如何选择激活函数 …

一篇了解模块打包工具之 ——webpack(1)

本篇采用问题引导的方式来学习webpack&#xff0c;借此梳理一下自己对webpack的理解&#xff0c;将所有的知识点连成一条线&#xff0c;形成对webpack的记忆导图。 最终目标&#xff0c;手动构建一个vue项目&#xff0c;目录结构参考vue-cli创建出来的项目 一、问问题 1. 第…

Echarts 仪表盘倾斜一定角度显示,非中间对称

第024个点击查看专栏目录大多数的情况下&#xff0c;制作的仪表盘都是中规中矩&#xff0c;横向中间对称&#xff0c;但是生活中的汽车&#xff0c;摩托车等仪表盘确是要倾斜一定角度的&#xff0c;Echarts中我们就模拟一个带有倾斜角度的仪表盘。核心代码见示例源代码 文章目录…

搞明白redis的这些问题,你就是redis高手

什么是redis? Redis 本质上是一个 Key-Value 类型的内存数据库&#xff0c; 整个数据库加载在内存当中进行操作&#xff0c; 定期通过异步操作把数据库数据 flush 到硬盘上进行保存。 因为是纯内存操作&#xff0c; Redis 的性能非常出色&#xff0c; 每秒可以处理超过 10 万…

JS 快速创建二维数组 fill方法的坑点

JS 快速创建二维数组 坑 在算法中&#xff0c;创建二维数组遇到的一个坑 const arr new Array(5).fill(new Array(2).fill(1))我们如果想要修改其中一个元素的值 arr[0][1] 5我们可以发现所有数组中的第二个元素都发生了改变 查看MDN&#xff0c;我们会发现&#xff0c;当…

2023前端二面经典手写面试题

实现一个call call做了什么: 将函数设为对象的属性执行&删除这个函数指定this到函数并传入给定参数执行函数如果不传入参数&#xff0c;默认指向为 window // 模拟 call bar.mycall(null); //实现一个call方法&#xff1a; Function.prototype.myCall function(context…

一篇搞懂springboot多数据源

好文推荐 https://zhuanlan.zhihu.com/p/563949762 mybatis 配置多数据源 参考文章 https://blog.csdn.net/qq_38353700/article/details/118583828 使用mybatis配置多数据源我接触过的有两种方式&#xff0c;一种是通过java config的方式手动配置两个数据源&#xff0c;…