armv7-A系列0 - arm 处理器架构发展史

关于 arm

arm 是一家英国公司,负责处理器的设计,将生产部分授权给各大芯片厂商,设计的处理器产品虽然各有命名,在描述的时候,通常习惯性地统称为 arm 处理器。所以,arm 是一类处理器的统称,也可以指 arm 公司。

同时,在早期 arm 将设计的处理器以 arm+version 进行命名,后来将命名方式更改为根据产品特性分为三种类型,A系列、R系列、M系列,这三种系列也是暗合 arm 这个名字。

不光如此,arm 将设计的 arm 指令集架构命名为 armv+num,比如 armv6架构、armv7 架构,所以,arm 这个名称关联很多东西,如果没有一定的了解,很容易分不清其中的概念。尤其是对于处理器命名和 arm 处理器架构命名容易混淆,在下文中我们将讨论这两点。

arm 处理器的主要特点在于性能、成本和功耗,其功耗相对于同级别的其它处理器是非常大的一个亮点,在智能家居、物联网、平板电脑、多媒体数字等处理器领域可以说是统治地位。在中低端领域,可以说是一个后起之秀将一众老牌厂商打得毫无还手之力,但是在同样重要的服务器市场,依旧无法与 intel 分庭抗礼,甚至都不能望其项背,但是最近几年可以逐渐看到 arm 在这方面的野心,至于能不能成功也是未知,毕竟老牌厂商的底蕴不容小觑。

处理器命名

上面提到 arm 处理器的命名分为 A、R、M 三个系列,这三个系列分别代表三种不同的应用领域:

  • cortex-A 系列,指的是 Application,主要高性能的处理器,相比于其它两种处理器,特点是增加了内存管理单元 MMU,对于运行大型的应用操作系统,MMU是必不可少的元件。
  • cortex-R 系列,指的是 Real time,走的是实时性的特点,一个常见的认知误区是:实时性就是处理快。但是事实上,实时性代表的是处理时间上的确定性和低延迟,即一个操作可以在指定的短时间内完成,MMU 引入的地址转换通常不能满足其实时性的要求,所以 R 系列处理器并不挂载 MMU。
  • cortex-M 系列,指的是 Microcontroller,微处理器,主打中低端市场,真实应用场景中,更多的是大型中控搭配小型嵌入式控制系统,小型嵌入式节点通常是海量的,比如智能家居、物联网等等,这一种系统的特点在于低功耗、低成本,相对的高性能,在中低端市场,性价比通常是一个主要的衡量因素。

事实上,arm 处理器的命名并非一直是以 cortex-A、cortex-R、cortex-M 进行命名的,在此之前,arm 处理器的命名为 ARM+version,从第一代的 arm1 到后来的 arm9、arm11,事实上,arm 的处理器从 arm6 开始才慢慢地进入市场,随着市场的逐渐铺开,似乎是发现以 arm+version 命名的局限性,才分化出了 cortex-A、cortex-R、cortex-M 三个系列的命名方式,后续的处理器都就不再采用 arm+version 的命名方式,所以它的命名看起来有点混乱。

指令集架构

很多人分不清指令集和处理器的区别,指令集是处理器使用的指令编码方式,指令集的命名方式为 armv+version,目前是 armv1~armv8,数字越大表示指令集越先进,对于不同的处理器,arm 公司设计的处理器采用了不同的指令集:

armv7-A系列0 - arm 处理器架构发展史_第1张图片

在 armv4 之前,还有 armv1-armv3 三个版本,但是这三个版本并没有商用,就不讨论。

armv4 和 armv4T 指令集主要被用在 ARM7TDMI、ARM9920T 等三种处理器上,相对应的,armv5 指令集被应用在 ARM9 系列处理器上居多,而 armv6 指令集被应用在 ARM11 处理器上,同时,在 cortex-M0/M1 上,使用的是 armv6-M类型的指令集。

就目前而言,armv7 指令集是应用最为广泛的,处理器被分为 A、R、M 系列,指令集相对应地也被分为三个对等的系列,armv7-A 对应 cortex-A5~A15处理器,armv7-R 对应 cortex-R4~R7 处理器,armv7-M 对应 cortex-M3、M4 处理器。

不得不说,后续采用的处理器命名的方式相对于 ARM+version 的方式确实要更简单清晰一些。

虽然图中截止显示到 armv7(这是因为我参考的是 armv7 手册,其历史版本自然截止到 armv7),但是目前 armv8 架构也逐渐盛行,其最大的特点就是 64 位的处理器,对应的主要A系列处理器有 Cortex-A53、A57、A72。

当然,指令集的升级自然伴随着功能的升级,对于每一次指令集的升级所带来的新功能或者优化,参考下图: armv7-A系列0 - arm 处理器架构发展史_第2张图片

处理器到底指的是什么

对于嵌入式工程师和普通人来说,接触到最多的就是 CPU,CPU 的全称为 center processor unit,翻译过来就是中央处理器,在各种产品宣传中我们也可以听到诸如:三星xxx处理器,苹果xxx处理器、NXP imx6 处理器这样的说法,这样看起来处理器就是 CPU。

但是在 arm 官方手册中,统一以 processor 对产品进行命名,也就是处理器,但是这里的处理器指的只是 IP 核,并不是 CPU,CPU 是芯片厂商在 arm 的 IP 核上进一步封装外设、针脚等元件的产物,所以在这一层面上,arm 处理器只是 CPU 中的一部分,这两者并不相等。

arm处理器内部结构

正如上文中所说,arm 是一家处理器设计厂商,并不负责芯片的生产,而我们手上拿到的基于 arm 的 CPU/MCU 自然是经过了两次设计:arm 的处理器+芯片厂商的封装,以至于我们分不清哪些东西是处理器自带的,而哪些是芯片厂商所添加的,要了解这个,还是需要到处理器手册中寻找答案。

对于 armv7-A 系列的处理器而言,处理器内部包含

  • 处理器核心,有单核和多核之分,对称多核应用比较广泛,通常每个核心会包含指令、数据L1缓存,可选的浮点单元,可选的协处理器等等,处理器核心是整个处理器的关键所在,其中包含逻辑运算单元(ALU)、指令取指译码单元、内部寄存器、MMU 等等。
  • debug 和 trace 系统
  • 中断控制器 GIC
  • 各种系统总线,处理器通过控制外设来实现应用功能,其通信方式就是通过系统总线来实现。
  • L1、L2 缓存

对于不同的 arm 处理器有一些细微的差别,比如 R、M 系列没有 MMU,缓存上也有区别,不过大体上的实现是差不多的,要了解这些区别需要查看对应的处理器手册。

 ----------------

欢迎关注公众号——“IC硅农场

--------------------------------------------------------------------------------------------如侵权请联系删除-------------

你可能感兴趣的:(ARM处理器,arm,cpu,risc-v)