一、简述
二、指令集
三、微架构及其与指令集的关系?
四、芯片厂、ARM公司和这些指令集、微架构是什么关系?
五、x86和ARM的竞争!
一、简述
CPU的设计遵循图灵机的基本设计思想:任何复杂的运算都可以分解为有限个基本指令的组合来完成。这些基本指令比如加、减、乘、与、或、非、跳转、Load/Store等,一般称为指令集。
Tip📌:任何复杂的运算都可以分解为指令集中的基本指令。
微架构是指计算机处理器内部的设计和实现方式。它决定了处理器如何执行指令集中定义的操作。微架构包括处理器中的寄存器、执行单元、缓存等组件,以及它们之间的连接方式。
二、指令集
我们可以把指令集理解为一套设计标准:
由于任何复杂的运算都可以拆分成最基本的运算的组合,因此人们制定出一套基本的运算指令,比如包含加、减、乘、与、或、非等几十条基本指令,这套指令就是指令集。
芯片工程师在设计CPU时,遵循这套指令集标准,设计实现不同的电路来支持指令集中各种指令的运行。
由于电路设计的实现方式不是唯一的,即指令集最终的实现有各种不同的设计架构,这个架构就是微架构,其实就是CPU内部的各种译码和执行电路设计方式。
编译器厂商在研发编译器工具或IDE时,也以这套指令集为标准,将我们编写的C语言高级程序转换为指令集中规定的各种指令。
正因为CPU研发者、编译器开发者都遵循相同的指令集标准去设计,才使得我们编写的高级程序经过编译后,可以直接在CPU上运行。基于指令集从CPU设计到编译器,从编译器到高级语言编写的应用程序,一个完整的计算机系统生态就建立起来了。
目前市面上常见的指令集有ARM指令集、x86指令集、RISC-V指令集(一种新兴的开放式指令集)。
关于RISC-V指令集
RISC-V指令集免费开源,和ARM一样,同属于RISC指令集,两者都可以看作RISC指令集的一个分支。RISC-V属于RISC的第五个版本,因此叫作RISC-V。
目前已经有公司基于该指令集开发出自己的处理器,如平头哥半导体有限公司发布的玄铁910。
Tip📌:指令集也会随着应用需求的推动不断迭代更新,不断扩充新的指令。例如ARM公司的指令集,从最初的ARM V1发展到目前的ARM V8。
三、微架构及其与指令集的关系
集成电路工程师在设计处理器时,会按照指令集规定的指令,设计具体的译码和运算电路来支持这些指令的运行;指令集在CPU处理器内部的具体硬件电路的实现,我们就称为微架构。
(该图片来自“小破站”博主:It_server技术分享)
Tip📌:一套相同的指令集,可以由不同形式的电路实现,可以有不同的微架构。在设计一个微架构时,一般需要考虑很多问题:
处理器是否支持分支预测?
流水线需要多少级?
主频需要多高?
Cache需要多大?
需要几级Cache?
... ... (等一系列问题)
根据不同的配置选项,我们可以基于一套指令集设计出不同的微架构。
以ARM V7指令集为例,基于该套指令集,面向高性能、低功耗等不同的市场定位,ARM公司设计出了Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A17等不同的微架构。
基于一款相同的微架构,通过不同的配置,也可以设计出不同的处理器类型(上图中的4.系统架构)。不同的SoC厂商,获得ARM公司的Cortex-A9微架构授权后,基于该内核架构可以搭建出不同的SoC芯片,并最终流向市场。
3聊聊常说的X86指令集
另外一个常见的指令集是x86指令集,目前能获得X86指令集授权,并基于该指令集设计微架构和处理器的厂商有三家:Intel、AMD和上海的兆芯。
综上,指令集、微架构与处理器三者之间的关系如下图所示。
Intel的酷睿处理器,无论是i3、i5还是i7,都基于相同的微架构,面向市场的不同定位和需求,在处理器主频、核数、Cache大小等方面进行差异性配置,设计出不同市场定位的处理器。
AMD系列的处理器也是如此,基于Zen3微架构,通过不同配置,可以设计出锐龙3、锐龙5、锐龙7等面向不同市场定位的处理器。
Tip📌:微架构不等于SoC
微架构一般也称为CPU内核,在一个ARM SoC芯片上,我们把CPU内核和各种外设IP通过AMBA总线连接起来,构成一个片上系统,即System OnChip,简称SoC。
四、芯片厂、ARM公司、和这些指令集、微架构有什么关系?
并不是所有的芯片厂商都有能力和精力去设计微架构。除了ARM公司和几个技术积累比较深厚的芯片巨头,其他小芯片厂商、创业公司更倾向于直接使用ARM公司设计的微架构来快速搭建自己的SoC芯片。
这种设计模式可以大大减少芯片的开发难度和成本。ARM公司自己不生产芯片,也不卖芯片,主要靠IP授权盈利。
IP授权?
ARM公司的IP授权是指ARM公司授权给其他公司使用其知识产权(Intellectual Property,简称IP)的权利。
面对不同的芯片厂商和市场需求,ARM公司有多种灵活的授权方式,目前主要有以下三种:
指令集授权
可以基于该指令集实现自己的微架构,甚至可以对该指令集进行扩展或缩减,有这个能力的公司不多,大家熟知的比如华为、高通、龙芯。
内核授权
也叫做微架构授权。
ARM公司根据自家的指令集标准设计出不同的微架构,其他芯片公司购买这个微架构,即CPU内核,然后使用AMBA总线和各种IP模块连接,就可以快速搭建出一个片上系统,即SoC芯片,封装测试通过后就可以快速推向市场销售了。
也许你想知道什么是...
【AMBA总线】
AMBA(Advanced Microcontroller Bus Architecture)总线是ARM公司推出的一种片上总线架构,用于连接集成电路系统中的各种模块和外设。
【IP模块】
在ARM公司的生态系统中,IP模块是指各种功能模块的知识产权,包括处理器核心、外设控制器、存储控制器、总线控制器、加速器等。这些模块已经经过ARM公司的设计和验证,可以直接集成到其他公司的芯片中,以实现芯片的快速设计和开发。
ARM的内核授权客户有很多,国外的公司有三星、飞思卡尔、ST、德州仪器,国内的公司有海思、全志、联发科等。
微架构授权的特点是客户不能对ARM的CPU内核(微架构)进行修改。为了满足不同客户的不同需求,基于一套相同的指令集,ARM公司会设计出不同的微架构,甚至会开放微架构中的一些可配置选项(如Cache大小),以方便客户搭建出差异化的处理器产品。ARM指令集与微架构如下表所示。
使用授权
如果你发现了不错的商机,比如制造某个小电子产品,因为你没有那么多精力和成本从0开始设计只满足你需求的处理器,此时就可以考虑使用授权。
直接使用已经封装好的ARM处理器,只需要关心自己的业务设计,快速做出产品推向市场。(大多数企业做工业产品制造的都是用这种授权方式,其实就是直接买芯片用,比如我们玩STM32做一些小东西)
五、x86和ARM的竞争
当前的主流处理器市场基本上被X86和ARM瓜分。X86指令集不授权,不开放内核,靠X86专利垄断制造行业壁垒,抬高其他处理器厂商的准入门槛。
所以你能看到市面上的X86 CPU厂家只有那几个巨头(除了Intel、AMD、兆芯这三家公司,其他公司一般无法获得授权去设计和生产自己的X86处理器)。
ARM则不同,通过开放ARM指令集授权,其他公司可以基于授权的指令集去设计自己的微架构和SoC芯片,或者基于ARM官方的微架构直接去设计自己的SoC处理器。
所以百花齐放的ARM处理器市场构建了一个庞大的ARM系统生态,垄断移动市场。比如基于ARM V8指令集,市场上出现的不同微架构,以及各种处理器和芯片厂商。他们和ARM公司一起构建了整个ARM开发生态。
直呼:开源精神,YYDS!!
原创 车载系统攻城狮