到底什么是指令集?什么是微架构?他们是什么关系?

《嵌入式工程师自我修养/C语言》系列——到底什么是指令集?什么是微架构?他们是什么关系?

快速学习嵌入式开发其他基础知识?>>>>>>>>> 返回专栏总目录 《嵌入式工程师自我修养/C语言》<<<<<<<<<

Tip📌:鼠标悬停双虚线关键词/句,可获得更详细的描述

一、简述

  CPU的设计遵循图灵机的基本设计思想:任何复杂的运算都可以分解为有限个基本指令的组合来完成。这些基本指令比如加、减、乘、与、或、非、跳转、Load/Store等,一般称为指令集。任何复杂的运算都可以分解为指令集中的基本指令。

  微架构是指计算机处理器内部的设计和实现方式。它决定了处理器如何执行指令集中定义的操作。微架构包括处理器中的寄存器、执行单元、缓存等组件,以及它们之间的连接方式。

二、指令集

我们可以把指令集理解为一套设计标准:

  由于任何复杂的运算都可以拆分成最基本的运算的组合,因此人们制定出一套基本的运算指令,比如包含加、减、乘、与、或、非等几十条基本指令,这套指令就是指令集。芯片工程师在设计CPU时,遵循这套指令集标准,设计实现不同的电路来支持指令集中各种指令的运行。由于电路设计的实现方式不是唯一的,即指令集最终的实现有各种不同的设计架构,这个架构就是微架构,其实就是CPU内部的各种译码和执行电路设计方式。

  编译器厂商在研发编译器工具或IDE时,也以这套指令集为标准,将我们编写的C语言高级程序转换为指令集中规定的各种指令。正因为CPU研发者、编译器开发者都遵循相同的指令集标准去设计,才使得我们编写的高级程序经过编译后,可以直接在CPU上运行。
基于指令集从CPU设计到编译器,从编译器到高级语言编写的应用程序,一个完整的计算机系统生态就建立起来了。

目前市面上常见的指令集有ARM指令集、x86指令集、RISC-V指令集(一种新兴的开放式指令集)

Tip📌:
  指令集也会随着应用需求的推动不断迭代更新,不断扩充新的指令。例如ARM公司的指令集,从最初的ARM V1发展到目前的ARM V8。

三、微架构及其与指令集的关系

  微架构,也就是处理器架构,即CPU内实现指令解析及算术逻辑运算等功能的电路设计架构。集成电路工程师在设计处理器时,会按照指令集规定的指令,设计具体的译码和运算电路来支持这些指令的运行;指令集在CPU处理器内部的具体硬件电路的实现,我们就称为微架构。

Tip📌:
  一套相同的指令集,可以由不同形式的电路实现,可以有不同的微架构。在设计一个微架构时,一般需要考虑很多问题:处理器是否支持分支预测?流水线需要多少级?主频需要多高?Cache需要多大?需要几级Cache?根据不同的配置选项,我们可以基于一套指令集设计出不同的微架构。

  以ARM V7指令集为例,基于该套指令集,面向高性能、低功耗等不同的市场定位,ARM公司设计出了Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A17等不同的微架构。基于一款相同的微架构,通过不同的配置,也可以设计出不同的处理器类型。不同的SoC厂商,获得ARM公司的Cortex-A9微架构授权后,基于该内核架构可以搭建出不同的SoC芯片,并最终流向市场。

  另外一个常见的指令集是x86指令集,目前能获得X86指令集授权,并基于该指令集设计微架构和处理器的厂商有三家:Intel、AMD和上海的兆芯。他们也会基于X86指令集设计出各自的微架构,然后基于各自的微架构设计出不同的CPU。

综上,指令集、微架构与处理器三者之间的关系如下图所示。

在这里插入图片描述
  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授权盈利。面对不同的芯片厂商和市场需求,ARM公司有多种灵活的授权方式,目前主要有以下三种:

  • 指令集/架构授权:
      可以基于该指令集实现自己的微架构,甚至可以对该指令集进行扩展或缩减,有这个能力的公司不多,大家熟知的比如华为、高通、龙芯。

  • 内核授权:
      ARM公司根据自家的指令集标准设计出不同的微架构,其他芯片公司购买这个微架构,即CPU内核,然后使用AMBA总线和各种IP模块连接,就可以快速搭建出一个片上系统,即SoC芯片,封装测试通过后就可以快速推向市场销售了。ARM的内核授权客户有很多,国外的公司有三星、飞思卡尔、ST、德州仪器,国内的公司有海思、全志、联发科等。
      微架构授权的特点是客户不能对ARM的CPU内核(微架构)进行修改。为了满足不同客户的不同需求,基于一套相同的指令集,ARM公司会设计出不同的微架构,甚至会开放微架构中的一些可配置选项(如Cache大小),以方便客户搭建出差异化的处理器产品。ARM指令集与微架构如下表所示。

在这里插入图片描述

  • 使用授权。
      如果你发现了不错的商机,比如制造某个小电子产品,因为你没有那么多精力和成本从0开始设计只满足你需求的处理器,此时就可以考虑使用授权。直接使用已经封装好的ARM处理器,只需要关心自己的业务设计,快速做出产品推向市场。(大多数企业做工业产品制造的都是用这种授权方式,其实就是直接买芯片用)

五、x86和ARM的竞争

  当前的主流处理器市场基本上被X86和ARM瓜分。X86指令集不授权,不开放内核,靠X86专利垄断制造行业壁垒,抬高其他处理器厂商的准入门槛,所以你能看到市面上的X86 CPU厂家只有那几个巨头(除了Intel、AMD、兆芯这三家公司,其他公司一般无法获得授权去设计和生产自己的X86处理器)。

  ARM则不同,通过开放ARM指令集授权,其他公司可以基于授权的指令集去设计自己的微架构和SoC芯片,或者基于ARM官方的微架构直接去设计自己的SoC处理器。所以百花齐放的ARM处理器市场构建了一个庞大的ARM系统生态,垄断移动市场。比如基于ARM V8指令集,市场上出现的不同微架构,以及各种处理器和芯片厂商。他们和ARM公司一起构建了整个ARM开发生态。
在这里插入图片描述
  开源精神,YYDS!!

>>>>>>>>> 返回专栏总目录 《嵌入式工程师自我修养/C语言》<<<<<<<<<

  • 33
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车载系统攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值