写给 Android 开发者的芯片知识
作为 Android 开发者,免不了要处理 arm、armv7a、armv8a、x86 等架构适配,所以我们有必要捋一下 CPU、架构、指令集、芯片的概念。
CPU
学过计算机基础知识的朋友都知道 CPU 的含义,亦即中央处理器,是负责计算机主要运算任务的组件。一般习惯把 CPU 比喻为人的大脑。而了解略深的用户会听说 CPU 有 x86、ARM 等分类,前者主要用于 PC 而后者主要用于手机平板等设备。那么这里的 x86、ARM 指的是什么呢?
指令集
CPU 执行计算任务时都需要遵从一定的规范,程序在被执行前都需要先翻译为 CPU 可以理解的语言。这种规范或语言就是指令集(ISA,Instruction Set Architecture)。程序被按照某种指令集的规范翻译为 CPU 可识别的底层代码的过程叫做编译(compile)。x86、ARM v8、MIPS 都是指令集的代号。指令集可以被扩展,如 x86 增加 64 位支持就有了 x86-64。厂商开发兼容某种指令集的 CPU 需要指令集专利持有者授权,典型例子如 Intel 授权 AMD,使后者可以开发兼容 x86 指令集的 CPU。
CPU 的基本组成单元即为核心(core)。多个核心可以同时执行多件计算任务,前提是这些任务没有先后顺序。
微架构
核心的实现方式被称为微架构(microarchitecture)。微架构的设计影响核心可以达到的最高频率、核心在一定频率下能执行的运算量、一定工艺水平下核心的能耗水平等等。此外,不同微架构执行各类程序的偏向也不同,例如 90 年代末期 Intel 的 P6 微架构就在浮点类程序上表现优异,但在整数类应用中不如同频下的对手。
常见的代号如 Haswell、Cortex-A15 等都是微架构的称号。注意微架构与指令集是两个概念:指令集是 CPU 选择的语言,而微架构是具体的实现。i7-4770 的核心是 Haswell 微架构,这种微架构兼容 x86 指令集。对于兼容 ARM 指令集的芯片来说这两个概念尤其容易混淆:ARM 公司将自己研发的指令集叫做 ARM 指令集,同时它还研发具体的微架构如 Cortex 系列并对外授权。但是,一款 CPU 使用了 ARM 指令集不等于它就使用了 ARM 研发的微架构。Intel、高通、苹果、Nvidia 等厂商都自行开发了兼容 ARM 指令集的微架构,同时还有许多厂商使用 ARM 开发的微架构来制造 CPU。通常,业界认为只有具备独立的微架构研发能力的企业才算具备了 CPU 研发能力,而是否使用自行研发的指令集无关紧要。微架构的研发也是 IT 产业技术含量最高的领域之一。
总结
本文总结下来的内容很简单:指令集与微架构是不同的概念,不可混淆;CPU 研发指的是微架构研发;如今指令集不再有“最适合领域”的说法。
评论