文章目录
- 芯片产业链
- ARM核发展
-
- [1. 不同架构的特点分析](#1. 不同架构的特点分析)
- ARM核(ARMv7)工作模式
-
- [1. 权限级别(privilege level)](#1. 权限级别(privilege level))
- [2. ARM processor modes](#2. ARM processor modes)
-
- [(1)用户模式 User mode](#(1)用户模式 User mode)
- [(2)系统模式 system mode](#(2)系统模式 system mode)
- [(3)管理模式 Supervisor mode](#(3)管理模式 Supervisor mode)
- [(4)中止模式 Abort mode](#(4)中止模式 Abort mode)
- [(5)未定义模式 Undefined mode](#(5)未定义模式 Undefined mode)
- [(6)中断模式<快速> FIQ mode](#(6)中断模式<快速> FIQ mode)
- [(7)中断模式<一般> IRQ mode](#(7)中断模式<一般> IRQ mode)
- [(8)非安全PL2模式 Hyp mode](#(8)非安全PL2模式 Hyp mode)
- [(9)监视者模式 Monitor mode](#(9)监视者模式 Monitor mode)
- ARM核(ARMv7)的寄存器资源
-
- [1. 寄存器用途分析](#1. 寄存器用途分析)
- [2. CPSR(Current Program Status Register)](#2. CPSR(Current Program Status Register))
- [3. SPSR(Saved Program status Register)](#3. SPSR(Saved Program status Register))
芯片产业链
1. CPU核
CPU又叫中央处理器,其主要功能是进行运算和逻辑运算,内部结构大概可以分为控制单元、算术逻辑单元和存储单元等几个部分。按照其处理信息的字长可以分为:八位微处理器、十六位微处理器、三十二位微处理器以及六十四位微处理器等等
CPU厂家主要工作:
- 机器码设计
- 主频
- 高速缓存(cache)
- 多核集成
- 硬件浮点运算
- 数据运算
- 功耗
- 等等......
CISC: Complex Instruction Set Computer,复杂指令集计算机;
RISC: Reduced Instruction Set Computer, 精简指令集计算机;
(1)ARM
ARM 是Advanced RIsc Machines 的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、低功耗的RISC(精简指令集)处理器 。
ARM 公司的特点是只设计芯片,而不生产(被逼的)。它将技术授权给半导体厂商,并提供服务。
ARM将其芯片设计技术(内核、体系扩展、微处理器和系统芯片方案)授权给Intel,Samsung,TI,高通(Qualcomm),意法半导体等半导体制造商,这些厂商拿到ARM内核以后,再设计外围的各种控制器,和ARM核整合成一块SOC芯片
(2)MIPS
MIPS(Million Instructions Per second) 技术公司是美国一家设计制造高性能、高档次及嵌入式32位和64位处理器的厂商,在RISC处理器方面占有重要地位。
MIPS的商业模式和ARM相似,也是研发处理器内核,将知识产权授权给其他公司。我国的国产处理器商龙芯就是获得MIPS32和MIPS64架构的授权,借此开发龙芯CPU。
(3)PowerPc
PowerPC(英语:Performance Optimization With Enhanced RIsC-Performance Computing,有时简称PPC)是一种精简指令集(RISC)架构的中央处理器(CPU),其基本的设计源自IBM的POWER(Performance Optimized With Enhanced RIsc);
(4)Intel
X86架构是复杂指令集,主要用于PC产业 (AMD YES
(5)RISC-V
开源的内核
RISC-V(读作"RISC-FIVE")是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),V表示为第五代RISC(精简指令集计算机),表示此前已经有四代RISC处理器原型芯片。每一代RISC处理器都是在同一人带领下完成,那就是加州大学伯克利分校的David A.Patterson教授。与大多数ISA相反,RISC-V ISA可以免费地用于所有希望的设备中,允许任何人设计、制造和销售RISC-V芯片和软件。
2. SOC芯片
SOC(System On chip:CPU核 + 外围控制器),片上系统 ,即在一块芯片上集成一整个信息处理系统,简单来说 SoC芯片是在中央处理器CPU的基础上扩展专用接口的超大规模集成电路 ,是智能设备的"大脑"。
(1)主流厂家
- 德州仪器(TI)
- 高通(Qualcomm)
- 三星(Samsung)
- 恩智浦(NXP)
- 全志(Allwinner Technology)
- 华为海思(Hisilicon)
- 联发科(MTK)
- 瑞星薇(rockchip)
(2)产品解决方案
- 手机解决方案
- 平板解决方案
- 智能电视解决方案
- 等等......
3. 产品
- 特斯拉
- 小米
- 华为
- 格力
- 大疆
- 飞利浦
ARM核发展
ARM公司在经典处理器ARM11以后的产品改用Cortex命名 ,并分成A、R和M三类,旨在为各种不后的市场提供服务。Cortex系列属于ARMv7架构,由于应用领域不同,基于v7架构的Cortex处理器系列所采用的技术也不相同,基于v7A的称为Cortex-A系列,基于v7R的称为Cortex-R系列,基于v7M的称为Cortex-M系列。
1. 不同架构的特点分析
(1)VFP
VFP(Vector Floating-point Coprocessor for ARM)向量浮点运算单元(协处理器)。它提供低成本的单精度和倍精度浮点运算能力,并完全相容于ANSI/IEEE Std 754-1985 二进制浮点算数标准。VFP 提供大多数适用于浮点运算的应用,例如PDA、智慧手机、语音压缩与解压、3D图像以及数位音效、打印机、机上盒,和汽车应用等。
(2)Jazelle
Jazelle是ARM体系结构的一种相关技术,用于在处理器指令层次对JAVA加速。ARM的Jazelle技术使Java加速得到比基于软件的java虛拟机(JVM)高得多的性能,和同等的非java加速核相比功耗降低80%。
(3)Thumb
表示ARM处理器可以工作在Thumb状态,执行Thumb指令集。ARM指令集是32bit的指令集,在Thumb状态执行的指令集是16bit的。
Thumb指令集不是完整的指令集,它是ARM指令集的子集。 但是Thumb指令具有更高的代码密度,即占用存储空间小,仅为ARM代码规格的65%,但其性能却下降的很少。所以,Thumb指令集使ARM处理器能应用到有限的存储带宽,并且,代码密度要求很高的嵌入式系统中去。
Thumb-2 是 Thumb 指令集的一项主要增强功能,并且由 ARMv6T2 和 ARMv7M体系结构定义。Thumb-2 提供了几平与 ARM 指令集完全一样的功能 。它兼有16 位和 32 位指令,并可检索与ARM 类似的性能,但其代码密度与 Thumb 代码类似。
(4)TrustZone
TrustZone是ARM针对消费电子设备设计的一种硬件架构,其目的是为消费电子产品构建一个安全
框架来抵御各种可能的攻击。
TrustZone在概念上将SoC的硬件和软件资源划分为安全(Secure World)和非安全(Normal World)两个世界,所有需要保密的操作在安全世界执行(如指纹识别、密码处理、数据加解密、安全认证等),其余操作在非安全世界执行(如用户操作系统、各种应用程序等)。
(5)SIMD
SIMD,即 single instruction multiple data ,单指令流多数据流,也就是说一次运算指令可以执行多个数据流,从而提高程序的运算速度,实质是通过 数据并行 来提高执行效率
(6)NEON
ARMv7之后,将SIMD升级为 NEON技术 相当于扩展了点运算向量表 有一个VFS的二维向量表,将数据存放到这个表中,cpu可以一次性取某个区域进行执行,NEON就是SIMD的升级 相当于将上面SIMD执行指令的表格长度与宽度进行扩展,提升了数据集的压缩算法。 NENO可以进行指令扩展来实现相关功能,但我们一般不使用,如果做一些GPU相关的工作就需要利用NENO的浮点运算特性。可用于加速多媒体和信号处理算法(如视频编码/解码)、2D/3D图形、游戏、音频和语音处理、图像处理技术、电话和声音合成,其性能至少为ARMv5的3倍,为ARMV6 SIMD性能的两倍 在SIMD的基础上提升了两倍效率 所以运算速度的加快不是单纯的提升CPU的频率 通过这两个技术提升指令执行的方式,还有其他的方法(比如增加二级缓存)
ARM核(ARMv7)工作模式
1. 权限级别(privilege level)
安全状态2种级别 非安全状态3种级别
2. ARM processor modes
7+2 种工作模式 最后两种是v7版本加入的
(1)用户模式 User mode
操作系统在用户模式下运行应用程序以限制系统资源的使用。在用户模式下执行的软件在PL0执行。
在用户模式下执行有时被描述为非特权执行。
应用程序通常在用户模式下执行,而在用户模式下执行的任何程序
- 仅对系统资源进行非特权访问,这意味着它无法访问受保护的系统资源。
- 仅对内存进行非特权访问。
- 除非引起异常,否则无法更改模式
用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常,
(2)系统模式 system mode
在系统模式下执行的软件在PL1上执行。系统模式具有与用户模式相同的寄存器,并且不能通过任何异常进入
系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器, 而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
(3)管理模式 Supervisor mode
Supervisor模式是采取Supervisor Call异常的默认模式。执行SVC(Supervisor Call)指令会生成Supervisor Call异常,该异常被带到Supervisor模式。处理器在复位时进入Supervisor模式。
管理模式是CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也
在该模式下。当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式
(4)中止模式 Abort mode
中止模式是数据中止异常或预取中止异常的默认模式采取。
中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式 ,linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。
(5)未定义模式 Undefined mode
未定义模式是与指令相关的异常(包括任何执行未定义指令的尝试)采取的默认模式。
(6)中断模式<快速> FIQ mode
FIQ模式是采用FIQ中断的默认模式。
快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中
(7)中断模式<一般> IRQ mode
IRQ模式是采用IRQ中断的默认模式。
一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后
自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。
(8)非安全PL2模式 Hyp mode
Hyp模式是作为虚拟化扩展的一部分实现的非安全PL2模式。Hyp模式在从非安全状态获取必须带到PL2的异常时进入
Hypervisor Call异常和Hyp Trap异常是作为虚拟化扩展的一部分实现的异常,并且始终在Hyp模式下执行。
在非安全PL1模式下,执行HVC(Hypervisor Cal)指令会生成Hypervisor Call异常。
(9)监视者模式 Monitor mode
监视器模式是采用安全监视器调用异常的模式。在PL1模式下,执行SMC(安全监视器调用)指令会
生成安全监视器调用异常。
监视器模式是一种安全模式,这意味着无论SCR.NS位的值如何,它都始终处于安全状态。在监视器模式下运行的软件可以访问系统寄存器的安全和非安全副本。这意味着监视器模式提供了在安全和非安全安全状态之间更改的正常方法。
ARM核(ARMv7)的寄存器资源
1. 寄存器用途分析
- RO-R10 用来存放用户的数据
- R11(
fp:frame-pointer
)用来记录一个栈空间的开始地址 - R12(
ip: The Intra-Procedure-call scratch register
)用来临时存储sp - R13(
sp:stack pointer
) 栈指针寄存器 - R14(
lr:link register
)在发生跳转的时候,用来保存PC寄存器的值 - R15(
pc:program counter
)用来存放CPU需要执行的指令所在内存的地址
2. CPSR(Current Program Status Register)
3. SPSR(Saved Program status Register)
异常产生的时候,用来保存CPSR的值