0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

了解指令集和微架构

SAE International 来源:SAE International 作者:SAE International 2022-04-18 15:34 次阅读

‍‍

1

指令集

建设一栋大楼的基本元素有:水泥、砖头、钢材等原材料,但不同的构造过程则会呈现不同的建筑形式,其中建造图纸起到了很大的指导作用。

同样, CPU从表象上看虽然形式很多,但基本电路都由晶体管构成,例如常见的MOS管。

76fd929a-bee3-11ec-9e50-dac502259ad0.png

通过晶体管等基本电子元器件的组合可构成基本的逻辑电路:如与门、非门、与非门等。

774ae11c-bee3-11ec-9e50-dac502259ad0.png

这些基本逻辑电路通过不同的逻辑组合可分别完成不同的功能,就好比“把大象放进冰箱的段子”,首先打开冰箱门-->然后把大象放进去-->最后关上冰箱门。通过这些逻辑组合使动作具有了意义,而这些实现特定功能的逻辑组合集合就是指令集,如基本的加减运算。 指令集是一个标准,其会随着需求变化不断添加新的指令或优化。同样,指令集发生变更后,工程师在设计CPU时也需要在硬件电路上增加对应的电路模块来支持变更的指令,配套的编译器也会随之升级。我们在玩51、STM32单片机时需要相应的编译器来实现相应程序开发就是这个道理。而在任何一款遵循同一指令集架构实现的处理器上,开发的应用无须做任何修改便可以运行。

2

指令集与机器码的桥梁-编译器

无论处于上层的应用程序多么酷炫吊炸天,其在处理器上执行就必须被翻译成“机器语言”,然后通过0或1的排列组合去操作硬件实现功能。翻译官这个角色就是编译器的活,它将软件与硬件世界连接了起来。编译器在这个过程中,要经过编译、汇编、链接等几个步骤, 最后生成"可执行文件",可执行文件中保存的是二进制机器码,这串机器码可以直接被CPU读取和执行。

77861ae8-bee3-11ec-9e50-dac502259ad0.png

上图表示在指令寄存器中正在执行的一段为00101110机器码,左四位0010为指令集LOAD_A(汇编代码,将数据放到寄存器A),右四位1110(RAM地址,就是要去取这个地址上的8bit 机器码数据放到寄存器A)。注意到0010这4bit数据先被放入一个门电路中,输出结果就是1bit(拉高电压),去控制内存读取这一条wire。这个图只突出显示了开启内存读取一条wire的原理,没有显示在这一步指令中所有门电路原理图。

3

为啥根据指令集设计CPU而不是

先设计CPU再指令集

设计一款CPU的过程就好比建房子,我们建房子肯定先要以一定的建设标准和规范为前提,依据一定的工程标准不仅使建设过程有序进行更重要的是最终能被验收和被大家所接受。这也类似于我们软件开发流程,必须先有需求再有开发,否则开发的软件都没有应用的场景。因此凭空设计一款CPU,首先会不会被厂商用另说,很多相应的配套也难以支持更何谈让软件开发人员进行开发和推广了。所以指令集作为一种标准规范,用于规范芯片设计工程师及编译器开发工程师。

77abe39a-bee3-11ec-9e50-dac502259ad0.png

因为芯片与集成开发环境-IDE都遵循相同的指令集标准,所以高级语言编写的程序经指定编译器编译后能直接运行在对应的CPU上,反之则不能运行。 所以,CPU在设计之前,就需要先设计一套指令集或者说使用现成的指令集(如ARM、X86指令集)并在硬件电路上实现这些指令。CPU设计好后,还需要配套的编译器,编译器也需要参考这个指令集标准,将我们编写的C程序、C++等程序编译成CPU硬件电路支持的加减乘除、与或非等指令,我们的程序才能在CPU上运行。

4

指令集与微架构

微架构是将指定指令集在处理器中如何执行实现的方法,同现实生活中解决相同问题有很多途径的原理一样:同一指令集可以有不同的微架构,因同一指令可以通过不同的电路单元或组合来实现。例如英特尔基于x86指令集的微架构就很多代:

77c1e898-bee3-11ec-9e50-dac502259ad0.png

再比如ARM M系列处理器基于Armv6-M指令集所构建的M0/M1等微架构:

77de3840-bee3-11ec-9e50-dac502259ad0.png

我们曾接触的STM32F4系列单片机就是基于Armv7-M指令集的ARM Cortex-M4内核:

77f1aa06-bee3-11ec-9e50-dac502259ad0.png

不同的微架构有着不同的用途和性能,总体来说一大堆的运算单元、逻辑单元、寄存器等在各种总线和控制线的连接下组成了CPU的微架构。因此处理器架构是微架构和指令集架构的结合,指令集是处理器的语言,而微架构是具体的实现。

5

指令集分类

目前市面上存在两种指令集类型:

Reduced Instruction Set Computing (RISC) 精简指令集:比如ARM、MIPS和大火的RISC-V等。

Complex Instruction Set Computing (CISC) 复杂指令集:比如IntelAMD的X86等。

其中x86架构主要占据传统PC市场,善于处理大数据;ARM占据移动市场,善于处理快数据;而RISC-V则依靠自己精简的优势在数据传输领域占据优势。除此之外,其他指令集架构也占据部分市场如MIPS、Power等。

78184922-bee3-11ec-9e50-dac502259ad0.jpg

无论是CISC还是RISC,除了努力巩固自己的性能优势,加强产品的性能外,还需要汲取双方产品的特色,取长补短,期望有所突破,例如英特尔逐渐开始拥抱RISC-V。不过无论如何,未来的CPU肯定在朝着高性能、低功耗的方向发展。谁能在低功耗下提供高性能,谁就有希望获得成功。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 指令集
    +关注

    关注

    0

    文章

    222

    浏览量

    23361
  • 微架构
    +关注

    关注

    0

    文章

    22

    浏览量

    7033

原文标题:一文了解指令集和微架构

文章出处:【微信号:SAEINTL,微信公众号:SAE International】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    指令集架构架构的区别

    指令集架构(Instruction Set Architecture,ISA)与架构(Microarchitecture)是计算机体系结构中的两个重要概念,它们在处理器的设计和实现中
    的头像 发表于 10-05 15:10 400次阅读

    简述微处理器的指令集架构

    微处理器的指令集架构(Instruction Set Architecture,ISA)是计算机体系结构中的核心组成部分,它定义了计算机能够执行的指令集合、数据类型、寄存器、内存访问方式等,是连接
    的头像 发表于 10-05 14:59 295次阅读

    RISC-V和arm指令集的对比分析

    RISC-V和ARM指令集是两种不同的计算机指令集架构,它们在多个方面存在显著的差异。以下是对这两种指令集的详细对比分析: 一、设计理念 RISC-V :RISC-V的设计理念是简化
    发表于 09-28 11:05

    RISC-V指令集的特点总结

    开源 定义:RISC-V 是完全开源的指令集架构(ISA),意味着任何人都可以查看、使用、修改以及分发其设计,而无需支付版权费用。 优势:这种开源特性促进了全球性的创新和合作。 社区化 定义
    发表于 08-30 22:05

    RISCV的主流指令集有哪些?

    如题,就像X86中指令集有MMX,SSE,SSE2等,就像ARM指令集有ARM和Thumb等,但是总是感觉RISCV特别乱,可能是厂商比较多的缘故吧,我知道的有WCH的青稞RISC-V,玄铁
    发表于 08-29 13:49

    复杂指令集和精简指令集有什么区别

    的两种主要指令集架构,它们在多个方面存在显著的差异。以下是对这两种指令集架构的详细比较,涵盖设计理念、指令复杂性、寻址方式、实现方式、性能特
    的头像 发表于 08-22 11:00 2764次阅读

    微处理器的指令集架构介绍

    微处理器的指令集架构(Instruction Set Architecture,ISA)是计算机体系结构中至关重要的部分,它定义了微处理器能够执行的操作和指令的集合,以及这些指令如何被
    的头像 发表于 08-22 10:53 926次阅读

    CISC(复杂指令集)与RISC(精简指令集)的区别  

    Instruction Set Computers,复杂指令集计算)和RISC(Reduced Instruction Set Computers)是两大类 主流的CPU指令集类型,其中CISC以Intel,AMD
    发表于 07-30 17:21

    嵌入式系统的概念与范围开发 指令集架构要怎么选才合适?

    想要搭建一套嵌入式系统,首先得确认想要采用的指令集架构(Instruction Set Architectures, ISA),各家的指令集架构各有其优缺点与拥护者,本文将为您大致介绍
    的头像 发表于 03-28 09:35 725次阅读
    嵌入式系统的概念与范围开发 <b class='flag-5'>指令集</b><b class='flag-5'>架构</b>要怎么选才合适?

    RISC-V开源指令集全面指南与解析

    它应该是稳定的,基础的指令集架构不应该改变。更重要的是,它不能像以前的专有指令集架构一样被弃用,例如AMD Am29000、Digital Alpha、Digital VAX、Hewl
    的头像 发表于 03-13 09:41 680次阅读
    RISC-V开源<b class='flag-5'>指令集</b>全面指南与解析

    什么是RISC-V?RISC-V指令集的优势

    CPU 支持的所有指令指令的字节级编码就是这个 CPU 的指令集架构(Instruction Set Architecture,ISA),指令集
    发表于 03-05 10:31 730次阅读
    什么是RISC-V?RISC-V<b class='flag-5'>指令集</b>的优势

    【RISC-V开放架构设计之道|阅读体验】汇编语言和扩展指令集

    【RISC-V开放架构设计之道|阅读体验】汇编语言和扩展指令集 汇编语言 将C语言翻译成可执行的机器语言的重要步骤包括编译过程,汇编过程,链接过程。 函数调用约定过程分为六个阶段: 1)将参数存放
    发表于 02-03 13:29

    【RISC-V开放架构设计之道|阅读体验】RISC-V基础整数指令集

    第2章 RV32I:RISC-V基础整数指令集 本章重点讲解构成RISC-V基础整数指令集的基本指令指令格式。主要包含寄存器间操作的R型,用于短立即数和取数操作的I型,用于存数操作的
    发表于 01-31 21:10

    现代处理器的主要指令集架构

    ​ ​现代处理器的主要指令集架构(ISA)包括:x86指令集架构、RISC指令集架构
    的头像 发表于 12-11 09:55 4317次阅读
    现代处理器的主要<b class='flag-5'>指令集</b><b class='flag-5'>架构</b>

    单片机架构指令集的知识

    指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。
    发表于 12-02 09:51 1080次阅读
    单片机<b class='flag-5'>架构</b>和<b class='flag-5'>指令集</b>的知识