一、ARM 的发展史

ARM 的发展历史可以追溯到 1978 年,当年克里斯·库里(Chris Currry)所任职的公司遭遇财务危机,发展每况愈下,库里在和创始人深入沟通后,决定离职。当时的库里对微型计算机很感兴趣,随后和他的朋友赫尔曼·豪泽(Hermann Hauser)创立了剑桥处理器(Cambridge Processor Unit)有限公司。1979 年,剑桥处理器公司改名为橡果电脑(Acorn Computer)有限公司,据说改名字是因为希望公司的名字再字母排序中排在苹果公司的前面,公司成立初期主要从事电子设备设计和制造的业务,其第一个大获成功的产品是 1981 年 12 月推为英国广播公司微型计算机。1985年是橡果电脑一个重要的里程碑,他们独立完成了 32 位微处理器的设计,采用精简指令集,3 微米工艺,包含 25000 个晶体管。这个处理器是 ARM 架构的起点,即 ARMv1。

1990 年,由 VLSI 科技公司投资,橡果和苹果各自持有 43% 的股份,成立了 ARM,此后 ARM 就成了 Advanced RISC Machines 的缩写。最初的 ARM 成员只有很少的工程师,办工场所在剑桥的一个谷仓里。

1996年,ARM 和德州仪器、三星、诺基亚等公司建立合作,实现盈利。诺基亚 6110 手机中经典的游戏——贪食蛇,就是基于 ARM 7TDMI 芯片开发的。1998 年,ARM 在纳斯达克上市,挂牌交易,彼时的 ARM 市值已达十亿美元!2004 年,ARM 发布了 Cortex-A,R,M 三个系列的处理器,细心的读者可能发现了,这三个系列的处理器,就是 ARM 的三个字母。2007 年 2 月,ARM 第一款 GPU——Mali-200 正式走向市场,同年,在科技界还有一件大事,那就是 iPhone 诞生了!iPhone 可谓是一部具有划时代意义的电子产品,其中搭载的就是基于 ARM 核心的芯片,随着智能手机时代的来临,ARM 也异军突起,2007 年,基于 ARM 核心设计的芯片出货量已达一百亿颗!

2016 年 ARM 被日本软银收购,2020 年,软银拟以 400 亿美元的价格将 ARM 出售给英伟达,但最终因多家监管机构反对,交易流产,ARM 依然会在半导体界保持中立状态,继续为其他芯片设计公司提供 IP(Intellectual Property)授权。

二、ARM 处理器家族

多年来, ARM 已经研发了相当多的不同的处理器产品。如下图中:ARM 处理器产品分为经典 ARM 处理器系列(下图分割线左侧)和最新的 Cortex 处理器系列(下图分割线右侧)。并且根据应用范围的不同,ARM 处理器可以分类成 3 个系列。

  • Application Processors (应用处理器,下图橙色框部分)– 面向移动计算,智能手机,服务器等市场的的高端处理器。这类处理器运行在很高的时钟频率(超过 1GHz),支持像 Linux,Android,MS Windows 和移动操作系统等完整操作系统需要的内存管理单元(MMU)。如果规划开发的产品需要运行上述其中的一个操作系统,你需要选择 ARM 应用处理器。
  • Real-time Processors (实时处理器,下图灰色框部分)– 面向实时应用的高性能处理器系列,例如硬盘控制器,汽车传动系统和无线通讯的基带控制。多数实时处理器不支持 MMU,不过通常具有 MPU、Cache 和其他针对工业应用设计的存储器功能。实时处理器运行在比较高的时钟频率(例如 200MHz 到 >1GHz ),响应延迟非常低。虽然实时处理器不能运行完整版本的 Linux 和 Windows 操作系统,但是支持大量的实时操作系统(RTOS)。
  • Microcontroller Processors (微控制器处理器,下图绿色框部分)– 微控制器处理器通常设计成面积很小和能效比很高。通常这些处理器的流水线很短,最高时钟频率很低(虽然市场上有此类的处理器可以运行在 200Mhz 之上)。并且,新的 Cortex-M 处理器家族设计的非常容易使用。因此,ARM 微控制器处理器在单片机和深度嵌入式系统市场非常成功和受欢迎。

Embedded_ARM_E.png

ARM三个系列处理器特点

Embedded_ARM_F.png

另外,ARM 也推出了移动 GPU 系列,即 Mali GPU。

三、ARM 授权

ARM 公司是一家知识产权(IP)供应商,它与一般的半导体公司最大的不同就是不制造芯片且不向终端用户出售芯片,而是通过转让设计方案(就是我们通常说的授权),由合作伙伴生产出各具特色的芯片。

笼统来说,ARM 的授权分为三个层级:

  • 使用层级授权
  • 内核层级授权架构
  • 指令集层级授权

这三个层级的权限是依次上升的。对芯片设计公司的要求也是从低到高,而发挥的空间也是从低到高:指令集层级授权(也成软核)发挥的空间最大,使用层级授权(也成硬核)发挥的空间最小。(比如代工厂台积电拿着图纸就可以施工,可以不用修改)。

买ARM使用层级授权(硬核)的芯片设计公司,用通俗的话说就是,使用 ARM 公版架构。这种情况下,芯片设计公司对外宣传必须带上 ARM 公司的品牌:CPU 的品牌是 Cortex-AXX(XX 代表两位阿拉伯数字,第一个数字表示架构是第几代,第二个表示架构微调),GPU则是 Mali-GXX(XX含义同上)。

如果用一个比较粗略但是好理解例子来说明这三个层级的权限,大体上我们可以这样理解:

假设我写了一篇文章,我只授权了你转发,不能更改,不能添油加醋,便是使用层级授权;我授权你可以在文章中引用我的文章,便是内核级授权;我授权你可以拿去修改、重组我的文章,形成一篇新的论文,便是架构层级授权。

注意,某一版本的架构层级授权,通常是永久性的。

目前,总共有超过 1000 家公司与 ARM 公司签订了技术使用许可协议,其中包括 apple、Intel、Broadcom、IBM、LG、SONY、NXP 和 TI 这样的大公司。但是敢于购买架构授权的,也只有15家左右,高通、苹果、Broadcom、Marvell、华为、三星都是典型的用户(也都是各自行业的扛把子)。

四、ARM 架构解析

下面以 S3C2440 为例与 51 单片机进行对比分析,详细解析了 ARM 架构。

ARM 公司主要设计 ARM 系列 AISC 处理器内核,它不生产芯片,只提供 IP 核。先以一个例子解释一下架构、核、处理器和芯片:S3C2440,这是一款 SoC 芯片,注意,它不是 CPU,S3C2440 和我们熟知的 51 单片机有点类似,都属于嵌入式,嵌入式的发展到目前经历了三个阶段,分别是 SCM、MCU、SoC。51 属于 SCM 或 MCU,而 S3C2440 就属于 SoC 了,先来看看 51 单片机的内部结构,如下图所示。

Embedded_ARM_A.jpg

其内部结构可以简单的分成两部分:CPU 和外设。再来看 2440 的:

Embedded_ARM_B.jpg

中间的那个 ARM920T 就是它的处理器,处理器和核在我看来在这里是一个概念,只不过一个是硬概念,一个是软概念。这里的 ARM920T 就既是处理器又是核。而三星做的就是除了这个 CPU 外其他的东西。

那架构呢?再来看一张图。

Embedded_ARM_C.png

其中左侧的就是架构,右侧的是处理器,也可以叫核。ARM 首个最成功的 CPU 是 ARM7TDMI,是基于 ARMv4的。ARM 架构包含了下述 RISC 特性:

  • 读取/储存 架构
  • 不支援地址不对齐内存存取(ARMv6 内核现已支持)
  • 正交指令集(任意存取指令可以任意的寻址方式存取数据Orthogonal instruction set)
  • 大量的 16 × 32-bit 寄存器阵列(register file)
  • 固定的 32 bits 操作码(opcode)长度,降低编码数量所产生的耗费,减轻解码和流水线化的负担。
  • 大多均为一个 CPU 周期执行。
  • 不同版本的架构会有所调整。

和三星相同的其他和 ARM 合作的各大厂商通常会把它的 CPU 和各类外围 IP 都放到一起,然后自己拿着图纸去流片,生产出来的也是一个正方形,下面有很多引脚,这个东西不仅包含了 CPU,还包含了其他的控制器,这个东西就叫做 SoC(system on chip)。从英文来看,所谓的四核 SoC 什么的,本意就不是单指 CPU,而是四核系统。

所以目前各大厂商所做的事情,就是买来 ARM 的授权,得到 ARM 处理器的源代码,而后自己搞一些外围 IP(或者买或者自己设计),组成一个 SoC 后,去流片。不同的 SoC,架构不同(就是 CPU 如何和 IP 联系起来,有的以总线为核心,有的以 DDR 为核心),所以,海思是拥有自主产权的 SoC 架构。可是,无论任何厂商,再怎么折腾,都没有怎么动过 CPU,ARM 核心就好好的呆在那里,那就是中央处理器。

五、总结

在后智能手机时代,ARM 迅速发展,并在十多年的时间建立了良好的生态,就连微软这个英特尔的老伙伴,也在2011 年宣布支持 ARM 架构。截止 2022 年,ARM 的合作伙伴已超过 1000 家,95% 的智能手机中都使用基于 ARM 核心的处理器,处理器累计出货超过 2250 亿颗。要知道,如果在 2000 年左右,如果有人说 ARM 架构处理器的性能可以和 x86 媲美,甚至超越 x86,那么无异于天方夜谭。然后科技发展日新月底,ARM 乘着移动互联网这艘大船,逐步发展为指令集架构领域一支新的力量!

参考:

「ARM 架构」是一种怎样的处理器架构?

ARM的发展史以及架构解析

作者:|fengMisaka|,原文链接: https://www.cnblogs.com/linuxAndMcu/p/17291650.html

文章推荐

如何让Task在非线程池线程中执行?

用rust 写一个jar包 class冲突检测工具

从GFS到GPT,AI Infra的激荡20年

redis 事务与管道

一文梳理z-index和层叠上下文

Java的对象克隆

测试环境治理之MYSQL索引优化篇

Nuxtjs实现服务端渲染和静态化站点

stable diffusion打造自己专属的LORA模型

Vue—关于响应式(四、深入学习Vue响应式源码)

HTTP面试题 - HTTP2 面试题

一次线上MySQL分页事故,搞了半夜...