轻松读懂移动处理器 CPU微架构全解析
泡泡网CPU频道1月26日 原文标题为《轻松读懂“应用处理器”微架构 2013 版》,对不起,你被标题欺骗了,实际上对许多读者来说要读懂本文并不是那么轻松:p
随着半导体工艺的日趋先进,智能手机(Smartphone 或者 Superphone)、平板电脑(Tablet 或者 Pad)已经成为许多网友最常使用、最多关注、更新最快的电子消费产品,高度便携性是这类产品的最关键成功原因。
所谓便携性自然是指产品必须足够轻便而且需要有足够的续航能力,因此这就要求产品的原件必须足够省电,只有这样才能减少散热和电池体积这两个最占体积和重量的问题。
要达到这个目标,肯定要做功能和性能上的妥协,至少相对个头更大的笔记本电脑、台式机而言,像降低吞吐率或者增加时延,从实测性能而言,目前智能手机或者平板电脑的 CPU、图形处理器性能基本上相当于 6 到 10 年前台式电脑的水准。
举个简单的例子,在俄罗斯网站 ixbt 的讨论区上,有这样的一条帖子,一位名为 ssvb 的网友采用 origenboard.org 的一片 Samsung Exynos 4210 开发板(配有 Exynos 4210 处理器具备两个 ARM Cortex-A9 处理器内核)跑出来的 High Performance Linpack (HPL)性能是 1.307 GFLOPS,同贴中还有 Intel Atom N450(Pineview 架构,45nm,单核) 1.66GHz 的测试结果——0.944 GFLOPS 以及 Cortex-A15 1.7GHz 双核 HPL 为 4.3 GFLOPS。
NVIDIA 官网上的一份 SC011 文件也表明 Tegra 2(ARM Cortex-A9 双核 1GHz,理论双精度浮点性能 2GFLOPS)的 HPL 性能为 1.15GFLOPS( 57% 效率,200MFLOPS/瓦) 。
这都是一个什么概念?我曾经在 06 年的时候用 Pentium D 820 2.8GHz 跑出来的 HPL 性能为 10.12 GFLOPS,Athlon64X2 2.6GHz 为 9.158 GFLOPS。
那么现在台式机的 HPL 性能状况如何?
在去年我用 Core i7 2600K 3.4GHz 配合未支持 AVX 指令的 GotoBLAS(数学库)上得到的 HPL 性能为 51.18 GFLOPS 左右,后来又用支持 AVX 的 OpenBLAS(原 GotoBLAS 开发者停止更新后的其中一个后续开源社区版)得出的 HPL 性能为 99.38 GFLOPS,到 2013 年支持 AVX2 指令集的 Haswell 架构出来后,这个测试结果应该还能接近再翻番,达到 200 GFLOPS 级别。
也许你会说手机、平板要双精度干啥呢?请不要忘记在 30 年前的 x86 处理器根本没有集成任何硬件浮点单元,现在的情况又如何?曾经做出号称最强 x87 协处理器的 Cyrix 后来一头扎进整数为王的产品策略后现在影都没了。
“干啥”这个问题往往是硬件具备并达到一定性能条件后就会有答案的,台式机上的性能测试软件和方案会随着手机、平板性能日益强大而变得在这类设备上运行也理所应当,除了上面说的 HPL 外,各类 PC 上流行的测试工具例如 SPEC CPU20xx、3DMark 等也会是如此。
传统的 CPU 性能测试的确不能完全适用于手机、平板的 SoC 芯片(人们把可以在移动操作系统上跑应用软件的 SOC 称作应用处理器,简称 AP),但是请注意我说这句话是因为 SoC 并不仅仅有 CPU,还有 GPU、音视频编解码器、存储控制器、非易失性存储单元、数模/模数转换器以及各种输入输出周边等,这使得我们要单纯评价一款 SoC 是否非常好的的时候可能会感到颇为伤神。
话虽如此,不过总的来说,SoC 中和性能最密切相关的依然是 CPU、GPU,因为智能设备里几乎所有程序的运行都必须依仗两者来执行,与用户的使用感受有直接关系(请注意,我们这里说的只是指 SoC 芯片中,而非手机或者平板电脑整体)。因此,纵然手机、平板处理器型号各异并且内中千头万绪,我们还是应该从大家最关心的 CPU、GPU 着手来了解。
现在情况简单多了,按照 ISA(指令集架构)划分,因为目前的手机、平板 CPU 无非是 ARM、Intel/AMD 两大阵营,潜在的还有 MIPS,不过目前 MIPS 似乎在这个领域还成不了气候,更像是一个备胎。
如果你对计算机科学还不是很了解的话,对 ISA 这个词可能也不会很了解,虽然它经常出现在一些时髦的技术文章中。
电脑显然并不能直接明白 C、Java、Basic 这样的高级语言(虽然有人尝试过开发高级语言处理器,但是无不失败告终),搭建在高级语言和 CPU 本机代码之间的就是 ISA。
ISA 的全称是 instruction set architecture,中文就是指令集架构,有时候直接称呼为架构(architecture),是指程序员实际“可见”的指令集,包含了程序员编写一个能正确运行的二进制机器语言程序的所有信息,涉及到指令、 I/O 设备等。例如 Intel 的 IA-32、Intel 64(曾经名为 IA32e、EM64T 等);ARM 的 ARMv7、ARMv8 等等。
这里的 IA32、Intel 64 或者 ARMv7、ARMv8 其实是指各自指令集架构的不同版本,有时候我们嫌啰嗦,所以把前两者统称 x86,后两者统称 ARM。
将 ISA 变成真正可以使用的实物需要经过“实现”,它包括两个层面:组成和硬件。
组成是从计算机设计的高阶层面而言,例如:存储系统、存储互连接、CPU(包括算术、逻辑分支、数据传输的实现)设计,有时候“组成”又被称作微架构(microarchitecture),英特尔 Nehalem、NVIDIA Kepler、ARM Cotrex-A57 都可以属于各自某系列芯片的微架构,其中 Kepler 的 ISA 是 CUDA PTX 和 Cortex-A57 的 ISA 属于 ARMv8。
硬件通常是指电脑的规格,包括具体的逻辑设计、封装技术,同一系列的产品可能有相同的 ISA、近乎一样的微架构,但是存在某些具体规格的差别,例如 NVIDIA Tegra 3,有 AP30、AP33、T30、T33、T30S、T33S、T30SL 等具体的型号,它们都属于 Tegra 3 微架构,但是频率规格、内存规格等地方都有差别。
而 GPU 方面则复杂一些,有 PowerVR、高通、NVIDIA、ARM、Intel 等等,其中使用最广泛的就是 PowerVR,这得益于 PowerVR 10年前就决定全面切换到移动设备上,铺桥搭路的功夫很扎实,而 NVIDIA 和 Intel 的商业模型都是只用于自家产品(当然 NVIDIA 也曾经在游戏机领域做过 RSX 这样的 IP core 授权)的,所以目前未能在其他 SoC 上看到。
下面的表格给出了这两年来比较热门的手机或者平板电脑 ARM 处理器,它们基本上都被应用于各公司的旗舰级产品中。
2011/2013 SoC 对比表 | |||||
SoC | 制程 | CPU | GPU | 内存总线 | 发布时间 |
Apple A5 | 45nm/32nm | 2 x ARM Cortex A9 w/ MPE @ 1GHz | PowerVR SGX 543MP2 | 2 x 32-bit LPDDR2 | 2011-10-4 |
Apple A5X | 45nm | 2 x ARM Cortex A9 w/ MPE @ 1GHz | PowerVR SGX 543MP4 | 4 x 32-bit LPDDR2 | 2012-3-16 |
Apple A6 | 32nm | 2 x Apple Swift @ 1.3GHz | PowerVR SGX 543MP3 | 2 x 32-bit LPDDR2 | 2012-9-12 |
Apple A6X | 32nm | 2 x Apple Swift @ 1.4GHz | PowerVR SGX 554MP4 | 4 x 32-bit LPDDR2 | 2012-10-23 |
NVIDIA Tegra 2 | 40nm | 2 x ARM Cortex A9 @ 1GHz | ULV GeForce T2 | 1 x 32-bit LPDDR2 | 2010-1-8 |
NVIDIA Tegra 3/Kal-El | 40nm | 4 x ARM Cortex A9 w/ MPE @ ~1.3GHz | ULV GeForce T3 | 1 x 32-bit LPDDR2 | 2011-11-8 |
NVIDIA Tegra 4/Wayne | 28nm | 4 x ARM Cortex A15MPCore w/MPE | ULV GeForce T4 | 2 x 32-bit LPDDR2 | 2012-1 |
Samsung Exynos 4210 | 45nm | 2 x ARM Cortex A9 w/ MPE @ 1.2GHz | ARM Mali-400 MP4 | 2 x 32-bit LPDDR2 | 2011-2-10 |
Samsung Exynos 4212 | 32nm | 2 x ARM Cortex A9 w/ MPE @ 1.5GHz | ARM Mali-400 MP4 | 2 x 32-bit LPDDR2 | 2011-10-1 |
Samsung Exynos 5250 | 32nm | 2 x ARM Cortex A15MPcore w/ MPE @ 1.7GHz | ARM Mali-604 | 2 x 32-bit LPDDR2 | 2011-11-30 |
Qualcomm MSM8060/8260/8660 | 45nm | 2 x Scorpion @ 1.5GHz | Adreno 220 | 1 x 32-bit LPDDR2* | 2011-2-10 |
Qualcomm MSM8960 | 28nm | 2 x Krait @ 1.5GHz | Adreno 225 | 2 x 32-bit LPDDR2 | 2011-2-14 |
Qualcomm MSM8960T | 28nm | 2 x Krait @ 1.7GHz | Adreno 320 | 2 x 32-bit LPDDR2 | 2012-2-27 |
Qualcomm APQ8064 | 28nm | 4 x Krait @ 1.7GHz | Adreno 320 | 2 x 32-bit LPDDR2 | 2011-2-14 |
它们都属于 ARMv7 架构,架构寄存器数量为 16 个,其中 Tegra 2/3、Exynos、A5/A5X 的 CPU 核心是 Cortex A9 或者 Coretx A15,都是来自于 ARM 的 IP core 授权,而 A6/A6X 的 Swift 和高通的 Scorpion/Krait 则分别是苹果和高通获得 ARM 架构授权后而各自自行开发的。
众所周知,IP core 的全称是 Intellectual Proerty core,意即知识产权内核,是目前各种嵌入式应用、个人智能消费类设备中最为常见技术类型,数十亿计的产品都采用了来自 ARM、MIPS 的 IP core。IP core 被设计成可以和芯片中其他逻辑单元(例如视频编解码器、I/O 界面、内存界面)协同运作形成一枚可以支持特定应用的处理器。
IP core 分为两类:硬核(hard core......不要会错意了)和软核(soft core)。硬核是针对特定半导体厂商而优化的,对外人来说是一个提供了外部界面、不修改的“黑盒子”,获得授权的厂商通常只能对核外的逻辑参数进行修改,例如 L2 cache 大小,但是 IP core 本身不可修改。而软核的设计代码则是可以针对不同半导体厂商做编译和修改,当然这要求设计厂商具备强大的研发实力和经验,因为现在的 IP core 相当复杂。
简而言之而言,硬核的性能更高、占用管芯面积更小,而软核则可以让不同厂商作进一步的修改。