ARM的野史和个人理解随手杂记

ARM公司的发展史

1978年12月5日,物理学家Hermann Hauser和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司改名为Acorn计算机公司。

80年代中期,Acorn的一个小团队要为他们的下一代计算机挑选合适的处理器,根据他们提供的技术需求,在当时的市场上无法找到合适的处理器,于是Acorn决定自己设计一个处理器。一个小团队仅仅用了18个月就完成了从设计到实现的全过程,这是一台RISC(Reduced Instruction Set Computer)指令集的计算机,叫做Acorn RISC Machine(简称ARM)。后来Acorn公司没落了,而处理器设计部门被分了出来,组成了一家新公司,就是大名鼎鼎的ARM公司。

ARM公司本身不参与终端处理器芯片的制造和销售,而是以IP形式向其他芯片厂商授权设计方案来获取利益。ARM公司提供两类CPU授权:核心指令集(即ARM架构)授权,还有现成的CPU内核设计方案授权。业内多数手机处理器厂商选择直接购买ARM内核设计方案,然后与其他组件(如GPU、多媒体处理、调制解调器等)整合形成完整的SoC片上系统。

需要注意的是,ARM提供的CPU是真正意义上的CPU,即*处理器;而SoC是广义上的CPU,我们日常生活中指的CPU就是广义CPU,即集成了很多组件的SoC,像华为的麒麟系列就是直接用的ARM的Cortex系列内核搭建起来的。

ARM的野史和个人理解随手杂记ARM的野史和个人理解随手杂记

部分厂商是基于现有的架构进行二次定制修改的,比如三星的蜂鸟Hummingbird核心等都是在Cortex-A8的基础上修改的。2011年,三星正式推出Exynos4 Dual 4210芯片(Dual代表双核)和对应的新旗舰手机Galaxy SII,同时也将“蜂鸟”改名为Exynos3 Single 3110(single代表单核),这正是之后Exynos家族的开端。2016年第一季度,三星发布了Exynos8 Octa 8890(Octa代表8核),它有一个非常重大的意义在于——这是三星第一款拥有自研架构的ARM芯片。所谓的自研架构,也可以称为自研微架构,其实就是自己研究出来类似于cortex-A53,A73等类似的这些公版的核(公版微架构)。

但也有少数手机处理器厂商,如高通,直接在ARM指令集的基础上深度开发自己的处理器微架构,如高通公司的Scorpion和Krait,进而设计自主的CPU,具有更大的灵活性。Scorpion和Krait的角色就和cortex A53和cortex A57的角色类似。Scorpion(蝎子)是高通根据Cortex-A8修改的,关键的特点是同频下更加节能约30%左右,现在的骁龙820以及835采用的是Kryo架构,其中820是Kryo,835是其升级版Kryo280。

ARM的野史和个人理解随手杂记

ARM的架构和内核

ARM公司开发的是一种微处理器即MPU,实际上就是一个CPU。ARM公司开发的处理器多种多样,其中指令集架构、家族种类和分支等,都有长足的发展。如指令集上从v1版本到v8,家族种类从经典的ARM型到Cortex型,从通用型到现在的A(Application Processors)、R(Real-Time)、M(Microcontroller)型,其发展进程如下:

ARM的野史和个人理解随手杂记

可以看出,ARM公司的产品发展方向是从经典型向Cortex发展的,同时开辟出了三个分支,分别应用于不同领域。

 

ARM架构,即ARM的精简指令集,其发展是指其指令集的丰富和变化。发展到现在,ARM的指令本身是32位的,但较新的ARM处理器会有一种Thumb的16位指令模式,这就是器架构在发展和变化。最早出现Thumb指令的处理器是ARM7TDMI,采用的架构从ARM7的v3到v4T,可以看出其架构从ARMv4到ARMv4T的发展。

ARM家族(系列)非常丰富,如ARM7、ARM9TDMI和Cortex-A等,都是不同的家族,其中家族之间的区别在于其工作模式的不同,如ARM7TDMI采用的是3级流水线模式,而ARM9TDMI采用的是5级流水线模式,其中还有很多细节不一样,具体有待深入研究。

ARM的每一个家族系列都由不同的成员,比如ARM9TDMI中就包含了ARM920T、ARM922T和ARM940T等,其中相同点是其内核的工作模式都是采用ARM9TDMI的工作模式,不同之处在于以ARM9TDMI为核心的外围高速缓存和MMU(Memory Managing Unit 内存管理单元)各有区别。另外,对于获得ARM最高授权的第三方厂商,也可以自己修改ARM处理核的架构从而开发出属于自己公司的处理器,如三星、苹果等公司开发的处理器就是基于ARM处理器作出的不同程度的修改和优化,但会归入ARM的某些家族系列,如下图所示:

ARM的野史和个人理解随手杂记

 

 

单片机的发展

单片机(SCM,Single Chip Microcomputer)本义为单片微型计算机,是指一块芯片就能实现运算和控制的功能,是采用超大规模集成电路技术把具有数据处理能力的*处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。

单片机的结构一般如下:

ARM的野史和个人理解随手杂记

早期的单片机功能比较简单,从4位发展到8位,由于8位单片机的性价比高,在中小规模应用场合占据了主流,是单片机的一个发展方向,典型的代表由Intel公司的51单片机系列,其结构如下图所示。

ARM的野史和个人理解随手杂记

但单片机的发展不止于此。从以前的8位发展到现在32位甚至是64位,单片机经历了从MCU(微控制器)到SoC(片上系统)的变化。其中MCU阶段中最成功的当属于ST公司的STM32系列。STM32是基于ARM Cortex-M家族的微处理器搭配外围部件形成的芯片。其指令集区别于51系列,是一种RISC(精简指令集)。

至于SoC片上系统,实际上是指单片机发展的更高阶段,是随着IC技术等的提高,系统集成度越来越大,能够将更多组件如图像处理器,DSP和更大存储能力的DRAM和ROM等高度集成在一个芯片上形成一个完整的系统,能在芯片上运行系统级别的代码。

目前SoC是一个单片机的一个发展方向,实际上由于很多的问题尚未解决,比较外设的统一接口,模拟电路和数字电路的不兼容等,SoC还是一项有待发展的技术。但可以看到,随着集成度的越来越高,越来越多的芯片上集成了越来越多的功能单元,如麒麟990上的基带芯片和5G芯片,实际上不是一个MCU本该具有的功能,而是对SoC的追求。类似的情况还有很多。

下图是S3C2440的内部结构图。可以看出,S3C2440是一个近乎完整的系统,集成了以ARM920T为核心的处理器,能够扩展RAM、ROM等存储器,集成了LCD控制器等功能到一块芯片上,同时自带了PLL片上时钟发生器,扩展了多种类型的外设接口,相当于一个完整的计算机系统。所以,可以说S3C2440是一个从MCU到SoC的一个过渡阶段。

ARM的野史和个人理解随手杂记