当代ARM
- ARM6
1992年,Apple与ARM团队合作的芯片正式发布,代号ARM6(ARM4与ARM5则因为某些原因直接跳过了)。这颗芯片算是真正意义上ARM公司的第一代产品,双方对这颗芯片都寄予了厚望。Apple更是直接将此芯片内置在了自己的拳头产品 Apple Newton PDA里。那句话咋说地来着?生不逢时?比较官方的说法是产品过于超前,技术未能支撑其功能;同时过高的价格也限制了他的销量。民间的说法还是更偏向于手写识别率低下,bug一堆迟迟解决不了。Apple Newton在Apple的历史产品系列里,算是一个失败的系列。1998年乔帮主回归Apple之后,毅然砍掉了这个项目,不过这是后话了。而且由于Apple当时比较缺钱,乔帮主在ARM公司上市之后,把Apple持有的ARM股票卖掉了,想想是不是就好心疼?这是更后话了...
ARM6作为ARM公司第一个产品,在历史上注定会有其浓墨的一笔。但是因为历史久远,同时出货量远远不及其小弟ARM7,大家对他的印象很大程度上就留在了第一代“真正的ARM”上。
- ARM7&ARM9
1993年,ARM7。1998年,ARM9。1998年ARM上市。1998年,Apple抛掉了所有ARM的股票(你怎么老盯着ARM的股票呢?)......
如果说ARM7和ARM9配不上ARM家族的当红炸子鸡,那其他人估计就更没资格了。比性能跟当今的Cortex A系列那是不能比,但是历史地位,那绝对是后来的弟弟都无出其右。为啥?90年代那会估计有90%的人是因为ARM7和ARM9这2个系列才知道ARM的:
- 过亿的销量
- 奠定当代ARM体系架构
90年代这个10年,ARM完成了自己的飞跃,正式从边缘市场进入了主流嵌入式SOC的市场,成为了这个领域的一个“巨头”。而奠定这个基础的,正是ARM7和ARM9这2代芯片。从消费类电子到车载,从传感器到医疗设备,ARM7正式进入了人们生活的方方面面,而ARM9则让人们进一步看到了ARM的潜力和强大的运算力。对于开发产品的公司来说,引入Thumb指令集大大提升了代码密度,有效降低了ROM方面的成本。同时ARM7这一代作品,引入了基于JTAG口的ICE在线调试。这一特性受到程序员多大的青睐,用过的都知道疗效!而ARM9则从架构上从冯诺依曼体系进阶到哈佛体系,奠定了后续ARM处理器的体系基调。这一时代的ARM7芯片,主频能跑到100M+,ARM9的运算量则能达到400M。正是有了如此的性能,才能适应不同的落地场景。依稀记得当年自己也是从ARM7开始接触嵌入式的,那些年开发基于ARM7的语音识别系统的日子,如果没有对应的运算量,语音识别这相对吃算力的场景也是没有指望的。当年还青涩的嵌入式Boy们,哪个不知道S3C44B0和S3C2410?好吧,我暴露年龄了...
从ARM7开始,常见的SOC型号后面或多或少都有一些奇奇怪怪的后缀,其实这个后缀代表了芯片支持的一些特性:
T : supports both ARM (32-bit) and Thumb (16-bit) instruction sets
D : Contains Debug extensions
M : Enhanced (relative to earlier ARM cores) 32x8 Multiplier block
I : EmbeddedICE macrocell
S : synthesizable (ie. distributed as RTL rather than a hardened layout)
J : Jazelle DBX (Direct Bytecode eXecution)
嗯,这些传统,后来的ARM11和ARM Cortex A也一直在集成。对于后来的这些ARM芯片,ARM7&9能说的,估计也只有“在座的各位,都是弟弟”这句了。
- ARM11
ARM11在2002年发布。ARM在这一代处理器上对指令集进行了进一步的增强,发布了ARMv6指令集。而同时,这也是ARM为了应对智能手机的浪潮,其“古典”ARM系列芯片的最后一代。
ARM11整体上可以看做ARM9的性能提升版:
- 支持双核
- 重新设计的cache架构
- 增强的指令pipeline
- 其余的改进包括指令的动态预测,并行加载等等
到了这个阶段,情况开始有点尴尬了。是的,按照这个路线发展下去,应该还会有ARM12,ARM13或者ARM15。一代比一代厉害是大概率的事情,否则也没脸见人了。但是这是满足市场发展的最优路线么?
一方面,手机的势头越来越猛,对性能的要求是无止境的。另一方面,单单在性能方面的提升却无法覆盖低功耗的传感器设备与实时性强的设备的要求。既然无法全部兼顾到,那就在某一个方面做到极致,划分为不同的系列吧。于是,Cortex系列诞生了。
- ARM Cortex
来个官方文档中的图来示意下Cortex系列的诞生时间轴
为了Cover不同领域对处理器不同特性的要求,Cortex衍生出A、R、M 3个系列。分别对应高性能、高实时、低功耗的3个系列。
A(high-performance open application platforms)系列大部分用于手机与Pad
R(high-end embedded systems in which real-time performance is needed)与M(deeply embedded microcontroller-type systems)一般在嵌入式领域应用居多。这里A和M系列则是我们最最耳熟能详的系列。
在如今举国上下热议ARM“昏头”拒绝向华为提供后续技术授权的档口,估计连很多妹子都知道自己手机用的是麒麟9xx或者骁龙8xx/6xx的芯片,同时也明白技术源头都是来自ARM公司的授权。而海思的麒麟系列和高通的骁龙系列芯片,都是归属于ARM CortexA系列的ARM芯片。
而每个系列细分下来,还能再细分出高性能,高能效,极低功耗:
我们平时所称的手机ARM Cortex A系列大小核的组合架构,一般就是高性能+高能效核心的组合。CPU利用率高的时候,通过智能调度激活大核,尽快处理任务降低延迟。低负载的时候,尽可能多地使用小核,延长电池的寿命。大家有时候还会发现自己的手机上还有类似“全速模式”或者“超级模式”后面备注“电量消耗极快”的字样,这就说明此模式Android的调度算法比较激进,启动大核的阈值很低,将用户体验放在第一位。
Cortex M系列的核心则在一些智能设备上用的很广泛。典型的案例就是一些低端的蓝牙设备,大概率内部都会有一颗Cortex M系列的核心。比如小米手环内部的Dialog主控,内部就是一颗Cortex M0的核心。
说到这里,ARM的历史我们就了解的差不多了。ARM如今已经深入到了我们生活的方方面面,也许不经意间,你现在身上就有3,4个ARM处理器在为你服务!
我们会在下一章聊聊ARM的商业模式,为大家解答下ARM和华为、高通之间的关系。同时,还有大家比较关心的为什么Android阵营从“高分低能”一下就变成了“低分低能”?苹果的芯片是如果超越Android阵营芯片的?