ARM公司
公司起源
参考:https://zhuanlan.zhihu.com/p/430656017
1978年底,物理学家Hermann Hauser和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司改名为Acorn计算机公司。
1981年,Acorn计算机公司迎来了一个难得的机遇 。英国广播公司BBC,为提高英国电脑普及水平,打算制作一档节目,他们希望Acorn能生产一款与之配套的电脑。英国政府也参与其中,这意味着电脑一旦采购,将进入英国的每一间教室。
在Acorn计算机公司即将大展身手之际,他们很快发现,自己设计的产品硬件并不能满足需求。因为当时中央处理器的发展潮流,正在从8位变成16位。但Acorn并没有合适的芯片可以用。
起初,Acorn计算机公司在验证了市面上的主流芯片后,由于各种缺陷不能满足要求而苦恼。于是,他们打算去找当时如日中天的Intel,希望对方提供一些80286处理器的设计资料和样品。但是却遭到了拒绝。备受打击的Acorn公司,一气之下决定自己干,从头开始造芯片
Acorn公司的研发人员,从美国加州大学伯克利分校,找到了一个关于新型处理器的研究——精简指令集,恰好可以满足他们的设计要求。在此基础上,经过多年的艰苦奋斗,来自剑桥大学的计算机科学家Sophie Wilson和Steve Furber最终完成了微处理器的设计
对于这块芯片,Acorn给它命名为Acorn RISC Machine。Acorn是公司名称,Machine是机器,RISC是精简指令集。嗯,这就是大名鼎鼎的“ARM”三个字母的由来。
RISC研发方向
RISC的全称是”精简指令集计算机”(reduced instruction set computer),它支持的指令比较简单,所以功耗小、价格便宜,特别适合移动设备。早期使用ARM芯片的典型设备,就是苹果公司的牛顿PDA。“简化指令集”,是相对于“复杂指令集”(CISC,complex instruction set computer)的一个概念。
早期的处理器都是CISC架构(包括英特尔的处理器),随著时间推移,有越来越多的指令集加入。由于当时编译器的技术并不纯熟,程序都会直接以机器码或是组合语言写成,为了减少程序的设计时间,逐渐开发出指令单一,但可以做复杂操作的程序代码。设计师只需写下简单的指令,再交给CPU去执行就可以了。
但是后来有人发现,整个指令集中,只有约20%的指令常常会被使用到,大约占了整个程序的80%;剩余80%的指令,只占了整个程序的20%。于是,1979年美国加州大学伯克利分校的David Patterson教授提出了RISC的想法,主张硬件应该专心加速常用的指令,较为复杂的指令则利用常用的指令去组合。
最后,ARM“有意无意地”选择了与Intel不同的设计路线——Intel持续迈向x86高效能设计,ARM则专注于低成本、低功耗的研发方向。
ARMv8
ARMv8起源
历史总是诡谲荒诞,原来被Intel最瞧不起的移动端市场业务,竟然在苹果iPhone问世以后,呈现井喷式的爆发增长起来。获利最大的公司之一,当属ARM。因为此时的ARM早已调整了业务方向,改为IP授权的方式,将自己的ARM设计卖给全球的芯片设计和制造公司。
后面的事情大家都知道了,苹果安卓两家在全球移动端市场平分江山,以ARM的IP为核心的芯片充斥到我们生活的方方面面。并且在芯片制程技术的快速发展下,以及ARM公司的不断努力,手机移动端的处理器性能在不断拔高。彼时,已经出现使用ARM芯片的电脑和服务器了。微软非常机智,很快就发布了适配ARM架构的windows操作系统。
与此同时,新的趋势正在酝酿,主要包括大内存(Large Memory)、虚拟化(Virtualization)和安全(Security)。Virtualization在ARMv7上已经有简单的硬件实现,Security也有可能基于当前架构扩展,唯有Large memory的需求,有点棘手。
由于处理器性能越来越强,运行于其上的软件也来越复杂,复杂到单一应用对内存的需求可能超出32-bit架构所能支持的最大内存(4G),这就是Large memory需求的起因。不过,后来的ARMv7架构通过Large Physical Address Extensions (LPAE) 技术,可以支持高达40bits的物理地址空间。但受限于32-bit的指令集,虚拟地址空间依旧只有32bits(4G),如果有应用需要更大的虚拟内存,怎么办?只能定义一个新的架构,使用64-bit的指令集(ARM64)。
ARMv8诞生
既然要做高性能的处理器,那么在指令集和架构设计上,就要丢弃原本ARM指令集的一些设计和包袱。但是又因为ARM的通用性,几乎现在所有的电子端设备都可以看到ARM的身影,于是ARM又保留了向下兼容的特性。
不仅如此,ARM还放弃了早期的处理器核心命名规范,改用全新的cortex系命名规则,并对指令集划分三个方向,分别面向高端、中端、低端三大市场。 中低端芯片在ARMv6、ARMv7指令集架构时代就已见势头,真正看ARM雄厚的芯片设计能力,在高性能端处理器上展现的,还得是ARMv8指令集架构。
ARMv8指令集,同样分了三个系列,ARMv8-A、ARMv8-R、ARMv8-M。由于这里篇幅有限,我们只讨论ARMv8-A架构。那么接下来,就带领大家看看ARMv8架构的精巧设计。