ARM内核与架构
日常中我们所见到的芯片一般是SOC(System on Chip 片上系统),意指它是一个产品的完整解决方案,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容,SOC的种类繁多,很难给出精确的组成部分,但是通常SOC会集成CPU、视频编解码器和GPU等各类专用处理单元以及外设部分。任何一款ARM芯片都至少包含:ARM内核、外设部分
ARM内核
ARM内核: 包括了寄存器组、指令集、总线、存储器映射规则、中断逻辑和调试组件等。 内核是由ARM公司设计并以销售方式授权给个芯片厂商使用的(ARM公司本身不做芯片)。我们平时说的Cortex-A53、Cortex-A72、Cortex-A9等都是指的ARM内核。
外设部分:包括计时器、A/D转换器、存储器、i2c、UART、SPI、ROM…等等,则完全由各芯片厂商自己设计并与ARM内核衔接配套。不同的芯片厂商就有不同的外设,因此构成了数量和规格庞大的ARM芯片产业。
ARM指令集
指令集的设计是CPU设计过程中的关键一环,指令集是操作CPU的命令集合,存在32位和64位两种。早期的ARM指令集为32位,从ARMv8开始引入64位指令集,新指令集称为A64,在AArch64状态下执行。ARMv8还包括原始ARM指令集,现在称为A32和Thumb(T32)指令集。A32和T32都在AArch32状态下执行,并与ARMv7兼容。对于32位的CPU,这些指令就是一个个32位的01的序列,不同的值就代表了不同的机器指令,CPU的硬件能完美的解析并执行这些指令,比如寻址、运算、异常处理等等。下面是ARMv4(ARM7TDMI-S处理器)指令集所支持的指令
从1985年ARMv1指令集诞生开始,到目前为止总共发布了9个版本,即Armv1 - Armv9。
ARM架构
当我们使用**架构(或体系结构)**一词时,是指的一种功能的规范。对于 Arm 架构,我们指的是处理器的功能规范。架构指定处理器的行为方式,例如它有哪些指令以及这些指令的作用。
可以将架构视为硬件和软件之间的约定。体系结构描述了软件可以依赖的硬件提供的功能。正如我们在架构和微架构中解释的那样,一些功能特性是可选的
架构(或体系结构)规范包括:指令集、寄存器组、异常模型、内存模型、Debug, trace, and profiling
- | 描述 |
---|---|
指令集 | 各指令的作用 该指令在内存中的表示方式(其编码) |
寄存器组 | 有多少个寄存器 寄存器的大小 寄存器的作用 他们的初始状态 |
异常模型 | 不同级别的特权 异常的类型 捕获异常或返回会发生什么 |
内存模型 | 内存访问是如何排序的 缓存如何运行,软件何时以及如何执行显式维护 |
Debug, trace, and profiling | 如何设置和触发断点 跟踪工具可以捕获哪些信息以及以何种格式捕获 |
官方给出的定义:
ARM命名规则
ARM的命名规则分为两类:
1、基于ARM Architecture版本的“指令集架构”命名规则
2、基于ARM Architecture版本的“处理器系列”命名规则
比如: s3c2410采用ARMv4T架构版本,ARM920T处理器系列
1、 “指令集架构”命名规则
固定部分 指令集版本号 变种标识 排除变种标记 被排除变种
ARMv 1 - 9 T/M/E/J等 x T/M/E/J等
T -- Thumb指令集
M -- 长乘法指令
E -- 增强型DSP指令
J -- Java加速器Jazelle
SIMD -- ARM媒体功能扩展
例如:ARMv5TxM表示ARM指令集版本为5,支持T变种,不支持M变种
2、“处理器系列”命名规则
ARMv3 ~ ARMv6 时期:
ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}
x -- 处理器系列
y -- 存储管理/保护单元
z -- cache
T -- 支持Thumb指令集
D -- 支持片上调试
M -- 支持快速乘法器
I -- 支持Embedded ICE,支持嵌入式跟踪调试
E -- 支持增强型DSP指令
J -- 支持Jazelle
F -- 具备向量浮点单元VFP
S -- 可综合版本
例如:ARM7-TDMI,属于ARMv4指令集,是ARM7系列处理器,支持Thumb指令集、支持片上调试、支持快速乘法器、支持Embedded ICE,支持嵌入式跟踪调试
在ARMv7版本之后,处理器均以Cortex为主名
3、ARM处理器型号与指令集对应关系
架构与系统架构(Architecture And System architecture)
片上系统(SOC)不仅仅包括一个处理器核心。Arm还提供了规范来描述包含处理器的系统的要求,如下图所示
BSA:
基本系统体系结构(BSA)规范描述了系统软件可以依赖的硬件系统体系结构。BSA涵盖处理器和系统架构的各个方面,例如中断控制器、计时器和操作系统需要的其他常见设备。这为标准操作系统、管理程序和固件提供了可靠的平台。
BSA广泛适用于不同的市场和用例。其他标准可以在BSA的基础上提供特定于市场的标准化。例如,服务器基础系统体系结构(SBSA)是针对服务器的BSA的补充。SBSA描述了服务器操作系统的硬件和特性要求。该规范包含了一组级别,随着CPU架构的发展,这些级别越来越详细地记录了硬件特性。
BBR:
基本引导需求(BBR)规范涵盖了基于Arm架构的系统需求,以及操作系统和管理程序可以依赖的系统需求。该规范建立了固件接口需求,如PSCI、SMCCC、UEFI、ACPI和SMBIOS。
ISA:
规范是软件兼容性的基础。根据规范构建硬件意味着可以编写与之匹配的软件。根据规范编写软件意味着它可以在兼容的硬件上运行。Arm架构是第一层,通过指令集架构(ISA)兼容性为软件提供了一个通用的程序员模型。
架构与微观架构
架构(或体系结构)描述包括:指令集、寄存器组、异常模型、内存模型、Debug, trace, and profiling 等宏观上的结构,一般开发者只需要了解体系结构即可
微观架构(微观体系结构)则是描述处理器是怎样构建的,怎样工作,一般是SOC设计者来参考,通常微观架构描述会包含如下信息:
• 流水线长度和布局
• Cache 的数量和大小
• 单个指令需要的机器周期数
• 哪些可选的特性被实现
ARM官方提供的文档
1、每个Arm架构参考手册描述了一个架构规范。Arm架构参考手册与该架构的任何实现都相关。
2、每个Arm Cortex处理器有一个技术参考手册(TRM)。TRM描述特定于该处理器的特性。一般来说,trm不会重复Arm架构参考手册中给出的任何信息。
3、每个Arm Cortex处理器也有一个配置和集成手册(CIM)。CIM描述如何将处理器集成到系统中。一般来说,这些信息只与SoC设计人员相关。CIM手册仅授权用户可拿到
Arm架构参考手册,trm和CIMs,都是参考手册。它们不提供如何使用处理器的指导。例如,Arm架构参考手册没有关于如何打开MMU的章节。需要获得如何使用相关的信息需要去查看对应架构的用户指导手册
通常使用现有的SOC只需要查看SOC的数据手册就可以得到相关的信息