通用ARM vs X86架构
ARM 授权都分为处理器核授权(Core License)和结构授权(Architecture License)两类,核授权也称为 IP 授权,这又分为两类,即软核和硬核。可以把软核看作是电路原理图,硬核除了原理图之外,还有设计好的电路板和各元件的详细参数。比如最简单的照明电路就是由电源、导线、开关、电灯组成,这样一个电路图就像是软核,而室内装修安装电线、电灯等时,电线的直径、长度、走线的路径,电灯的种类、功率、安装的位置等等,就属于物理设计,也就是硬核。有了物理设计之后,才可以进行生产,CPU 的生产过程被称为流片。
软核授权是指 RTL 形式的 IP(加密版),获得授权后需要自己做物理设计,再去流片测试,最后量产。厂商可以进一步对架构进行强化,但不得二次销售最佳化完成的处理器 IP,但是可以任意营销其最终制品(包含芯片、开发样版、完整系统等等)。
硬核授权则可以取得 CPU 核心的闸极电路图,并且也会一并提供抽象模拟测试以及相关的测试程序,获得授权后几乎可以直接生产和测试。
结构授权就是指令集授权,指令集是 CPU 硬件与软件之间的接口描述,比如加法指令需要使用到哪些寄存器、支持哪些寻址模式、如何传入加数、从哪里得到结果,以及指令的各种格式对应的二进制操作码等。CPU 核设计就是要自己设计电路按照指令集的规范去实现各个指令的功能。获得指令集授权后,需要自己完成后续的所有工作,难度最大。因为难度大,所以一般指令集授权还包含技术支持、各种测试程序、检测验证等工具。通过结构授权自行设计的 IIP,MIPS 允许设计者二次销售,ARM 不允许,设计者只能销售最终制成品。虽然 MIPS 和 ARM 公司都在卖自己的 IP,但 MIPS 创始人是学院派,因此规矩比较宽松,而 ARM 则不能容忍使用自己指令集的其它公司抢自己的生意。
定义指令集本身没有技术难度,但由于指令是软件与硬件之间的接口规范,规范不同就会导致不同指令集的 CPU 不能相互兼容。比如 Windows 系统以前只有 x86 版,就不能在其它指令集的 CPU 上运行,后来增加了 ARM 版 Windows 10,但各种软件都还是 x86 指令集的,在 ARM CPU 的 Windows 上也不能直接运行。这说明购买指令集授权,本质是购买兼容此指令集的软件的运行权,也就是获得软件生态。指令集的价值体现在软件生态,而不是指令集本身。