泡泡网CPU频道 PCPOP首页      /      CPU     /      评测    /    正文

轻松读懂移动处理器 CPU微架构全解析

在介绍一些稍微复杂的技术概念之后,我们不妨想看看 ARM 的由来。

ARM ISA 属于 RISC(精简指令集计算机,最关键特征是指令编码格式统一),ARM 本身就是 Advanced RISC Machines 的缩写,不过在早期它的全称是 Acorn RISC Machine(1983 年 10 月开始设计,1985 年实现第一枚硅片),因为公司当时的名字叫 Acorn。

Acorn 是一家 1978 年在英国剑桥成立的公司,这家公司生产过若干款在英国颇为流行的电脑,例如在当地教学市场占主导的 BBC Micro。

BBC Micro 取得了很大的成功,但是处理器是 8 位 的 6502,Acorn 希望切换到 16 位系统上来,但是英特尔拒绝了 Acorn 的 80286 样片申请。不过经过 Acorn 的多番实地考察和研究后,觉得在(当时)设计一个处理器的研发成本并不是很高,于是决定开始做 Acorn RISC Machine 这个项目。

基于 Acorn RISC Machine 的 ARM2aS 处理器获得了苹果公司名为 Mobius 的类 Apple 2 风格原型验证机接洽,这个项目后来因为苹果担心和大卖的麦金塔电脑产生冲突而腰斩,但是这次接触对 ARM 处理器的发展产生了一定的推动作用,因为 Mobios 团队对 ARM 寄存器做了一些小修改使得原型机的基准性能有不同幅度的显著改善。

后来苹果开始着手开发名为 Newton 的个人掌上电脑,他们发现似乎只有 Acorn RISC Machine 能满足要求耗电要求,但是当时 Acorn RISC Machine 处理器的内存管理单元并非 Acorn 自家,而是由 MEMC 公司提供芯片实现的,Acorn 没钱开发这个功能。于是双方就有了合作的想法,到了 1996 年 Acorn 和苹果合资组建了 ARM 公司,不过 Acorn 公司依然独立存在着直到 2000 年才基本烟消云散。

和一般的 RISC 不同的是,ARM ISA 除了指令长度固定为 32-bit(ARMv8 的 AArch 提供了 64-bit)的“经典 ARM” ISA 外,还有长度为 32-bit 或 16-bit 名为 Thumb(拇指)的 ISA 扩展。

Thumb 的目的是在低端或者说入门市场应用中改善 ARM 的指令密度(官方说法是减少大约 25%~35% 代码空间,按照 Linaro Dave Martin 的 Linux Kernel 编译结果,代码空间少了大概 20%),提高指令密度可以让 cache 塞进更多的指令减少命中缺失,更高密度的指令编码也有利于多线程因为可用寄存器资源更多了等。大部分的 Thumb 指令编码都能(经过位于指令解码器前的一个转译器实现简单转换)对应到经典 ARM 指令编码格式上。

Thumb 是 ARM 在嵌入式市场得以攻城拔寨的关键利器,在很长一段时间里都鲜有对手,Cortex 家族中用于单片机为主应用的 Cortex-M 甚至只支持 Thumb-2 指令(ARMv7 M),同样以授权方式运营的 MIPS 直到 2010 年才推出类似的 microMIPS 指令。

VFP(Vector Floating Point,向量浮点)是 ARM 架构的浮点单元协处理器扩展,提供了完全遵循 IEEE 754-1985 的低成本单精度和双精度浮点支持。虽然 VFP 打着向量的名头,不过这些“向量”指令的各个向量是串列方式执行(或者需要单精度搭配双精度才能实现并行执行)的,并不能提供真正的 SIMD 向量并行,因此这个向量模式被拿掉了。

Advanced SIMD(NEON)扩展在微架构实现中被称作 MPE(媒体处理引擎),是一个 64-bit 和 128-bit SIMD 指令集扩展,支持 8/16/32/64 位整数和 32-bit 单精度浮点数,共享使用 VFP 的寄存器。从 ARMv8 开始,NEON 在 AArch 64-bit 模式下提供完全遵循 IEEE 754 和双精度支持并且透过 VFPv4 具备 32 个 128-bit 寄存器。

2人已赞

关注我们

泡泡网

手机扫码关注