ARM架构基础知识


Architecture 中文可以是体系结构,也可以是架构,我这里用架构

一些专业术语可以在本科课程/书籍《计算机体系结构》中找到.

三种配置

  • A-Profile(Applications)

    性能最高,用于运行复杂的操作系统,比如Linux,Windows

  • R-Profile(Real-time)

    用于运行对实时性有要求的系统

  • M-Profile(Microcontroller)

    低功耗,高能效,常用于一些IOT设备

Arm Cortex是一个Arm处理器IP产品(硬件中的知识产权核,可以类比为模块设计)的品牌.

arm

ARM架构是什么?

所谓Arm架构说的就是Arm处理器的功能规范,它有什么指令集,指令集都做些什么.

可以把Arm架构当作是硬件与软件间的一种协议,描述了软件可以使用哪些硬件提供的功能.

架构一般会指定下面这些内容:

  • 指令集(Instruction set)
    • 每个指令的功能
    • 指令在内存中是如何表示的(指令的编码)
  • 寄存器集(Register set)
    • 有多少个寄存器
    • 寄存器的大小
    • 寄存器的功能
    • 寄存器的初始化状态
  • 异常模型(Exception model)
    • 不同级别的特权
    • 异常的类型
    • 当从一个异常返回时会发生什么
  • 内存模型(Memory model)
    • 内存访问的顺序
    • 缓存的运行方式,软件应该什么时候,怎么显示的维护缓存
  • 调试,跟踪,性能相关(Debug, trace, and profiling)
    • 如何设置和触发断点
    • trace工具可以以什么格式,捕获什么信息

架构与微架构

架构不会描述处理器是如何构建和工作的.

处理器的构建(实现)和设计称为微架构.微架构会告诉你一个处理器是如何工作的.

微架构包含以下内容:

  • 流水线(pipeline)的长度和布局
  • 缓存的数量和大小
  • 单个指令的循环计数
  • 实现了哪些可选的特性

比如Cortex-A53和Cortex-A72都是Armv8-A架构的实现.也就是说它们拥有相同的架构,不同的微架构.

image-20200612231401573

上面这张图描述的就是微架构.

在架构上兼容的软件可以在Cortex-A53和Cortex-A72上运行,而无需修改,因为它们实现了相同的架构.

Arm架构的开发

Arm架构是与时俱进,不断改进的,每个版本都是建立在以前的基础之上的.

比如常见的Armv8-A架构,意思是A系列的第8版架构,也可缩写成V8-A

image-20200612232247179

Armv8-A架构是一个里程碑.因为它使用的是64位(同时兼容32位),而它之前的版本都是32位(v5,v6,v7).

其他架构

除了arm架构,也有其他架构:

image-20200612233518408

比如用于服务端的架构.

文档类型

  • Arm架构参考手册( Reference Manual ):描述架构规范
  • 每个Arm Cortex处理器都有一个技术参考手册(Reference Manual,TRM):描述了处理器的特点,通常不会重复arm架构参考手册的内容
  • 每个Arm Cortex处理器都有一个配置或者集成参考手册(CIM):描述了如何将处理器集成到系统中,通常这个文档只与Soc设计者相关,并且只对有IP授权的厂商可用(但是没有license也可以下载)

上面这三种文档都不会告诉你如何使用处理器(这部分内容在指南中,即Guides)

通用架构术语

架构描述中有许多简写,也就是术语.

PE(Processing Element)/处理单元

PE是一个Arm架构实现的通用术语,任何有它自己的程序计数器,并且可以执行一个程序的东西都可以看作是一个PE.

同一个架构可能有多种微架构实现,比如Arm Cortex-A处理器的微架构可以是:

  • Cortex-A8是一个单核,单线程处理器,整个处理器就是一个PE
  • Cortex-A53是一个多核处理器,每个核是一个单线程,每个核就是一个PE
  • Cortex-A53AE是一个多核处理器,每个核有两个线程,每个线程就是一个PE.

参考文档

https://developer.arm.com/


文章作者: 姜康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 姜康 !
评论
 上一篇
UART UART
UARTUniversal Asynchronous Receiver/Transmitter,即通用异步收发传输器 UART是一种串行(串口),异步,收发协议. 作用:将并行数据转换成串行数据,所谓串行就是一位一位的传输. 像GPS模块,
2020-06-13
下一篇 
AOSP的编译 AOSP的编译
aosp现在使用soong编译工具进行编译了,比之前的老版本编译要容易方便得多了. 步骤 配置好repo等工具 下载aosp源码 开始编译 模拟器演示或者刷写到真实设备上 其实这几个步骤都没什么好说的.第一二步按照要求下载工具和源码即可,
2020-06-12
  目录