指令集和微架构

(一)简化版

1. 概括

  • 指令集架构 ISA
    狭义上指令集等于机器语言,也可以视为机器语言和硬件功能的对应
  • 微架构
    CPU 核心的硬件逻辑设计,微架构就是对指令集的逻辑实现
  • 硬件实现
    从逻辑实现转为物理实现,就生产出了CPU核心

(1) 指令集

  • 通常来说指令集架构一般指的就是指令集,指令集包含了一系列的操作码,也就是包含了一系列的机器语言,而这些操作码用来规定了处理器相应的操作,通过指令集去控制处理器实现相应功能。
  • 指令集可视为机器语言,或是机器语言和硬件功能的对应。
  • 狭义上:指令 = 操作码 + 操作数。
  • 在计算机中,指示计算机硬件执行某种运算、处理功能的命令称为指令。指令是计算机运行的最小的功能单位,而硬件的作用是完成每条指令规定的功能。一台计算机上全部指令的集合,就是这台计算机的指令系统。指令系统也称指令集,是这台计算机全部功能的体现。
  • 题外话:由于指令集(机器语言)是一堆的二进制,只适合计算机来识别,人类死记这个没意义,因此就出现了机器语言的助记符:汇编语言,汇编语言就是用人类看得懂的语言来描述指令集。

(2) 微架构

  • 微架构是指一套用于执行指令集的微处理器设计方法(类似于处理器内部各个组成部件如何互相连接的平面示意图,即 CPU 内部构造的硬件图纸)。
  • 处理器架构就是处理器的硬件架构,称为微架构。是一堆硬件电路,通过各种组织方式,去实现指令集所规定的操作运算。
  • 其中指令集决定了处理器的架构,因为处理器架构就是用硬件电路实现指令集。但是具体用什么样的处理器架构,设计怎样的硬件电路,每个人设计的都可以不一样。
  • 同一种指令集,可以使用不同的逻辑组合来实现,因此就出现了 Intel 和 AMD 的处理器几乎采用相同版本的 x86 指令集,但是它们的微架构却是不一样的,也就是处理器内部设计不一样。而且,即使同一家公司的产品,比如 Inter Core i3, i5, i7, i9,它们的指令集都一样,但微架构肯定不同,所以性能各不相同。
  • 微处理器的每一次更新换代,都会增加若干新特性,也就是微架构上进行更新,因为微处理器的设计者总是在想尽办法加快指令的执行。

(3) 硬件实现

根据微架构的图纸以及它们之间的逻辑关系,然后将这些硬件电路物理上组合起来,形成一个微处理器,就完成物理实现。

(二)详细版

1. 指令集架构

(1) 定义:

指令集架构(英语:Instruction Set Architecture,缩写为ISA),又称指令集或指令集体系,是计算机体系结构中与程序设计有关的部分,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部 I/O。指令集架构包含一系列的操作码(机器语言),以及由特定处理器执行的基本命令。

(2) 指令集的分类:

  • 复杂指令集 CISC
    指令数目多而复杂,每条指令字长并不相等
  • 精简指令集 RISC
    由复杂指令集发展而来,在1970年代,许多机构,发现复杂指令集中有许多指令是不需要的,结果就产生了精简指令集,它所包含的指令就比较少。

(3) 指令集的实现:

  1. 复杂指令集运算(Complex Instruction Set Computing,CISC)
    1. 属于复杂指令集的微处理器:
      1. x86 架构的微处理器:
        Intel 的 Pentium/Celeron/Xeon
        AMD 的 Athlon/Duron/Sempron
      2. 64 位扩展系统的 x86-64 架构的微处理器
        Intel 64 的 Intel Core/Core 2/Celeron/Pentium/Xeon
        AMD64 的 Phenom II/Phenom/Athlon 64/Athlon II/Opteron/AMD APU/Ryzen/EPYC
    2. 运行在复杂指令集的微处理器上的操作系统:
      主要针对的操作系统是微软的 Windows 和苹果公司的 macOS。另外 Linux,一些 UNIX 等,都可以运行在 x86(复杂指令集)架构的微处理器。
  2. 精简指令集 Reduced Instruction Set Computing (RISC)
    1. 属于精简指令集的微处理器:
      惠普的 PA-RISC,国际商业机器的 PowerPC,康柏(后被惠普收购)的 Alpha,美普思科技公司的 MIPS,SUN 公司的 SPARC,ARM 公司的 ARM 架构等。
    2. 运行在精简指令集的微处理器上的操作系统:
      目前有 UNIX、Linux 以及包括 iOS、Android、Windows Phone 等在内的大多数移动操作系统运行在精简指令集的处理器上。

(4) 常见的指令集有:

  • Intel
    x86,EM64T,MMX,SSE,SSE2,SSE3,SSSE3 (Super SSE3),SSE4A,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX 等指令集

  • AMD
    x86,x86-64,3D-Now! 指令集

2. 微架构

(1) 定义:

微架构是指一套用于执行指令集的微处理器设计方法
微架构也被叫做计算机组织,微架构使得指令集架构(ISA)可以在处理器上被执行。指令集架构可以在不同的微架构上执行。

(2) 说明:

同一种指令集架构,在微架构的设计上,可以采用不同的思路和方法去设计、去实现,即通过不同的电路单元极其组合来完成任务。如在Intel 的 Pentium 和 AMD 的 AMD Athlon 中,两者几乎采用相同版本的 x86 指令集体系,但是两者的微架构却是不一样的,也就是在内部设计上有本质的区别。

(3) 微架构的种类:

  • Intel
    P5、P6、NetBurst、Core、Coffee Lake、Comet Lake 等

  • AMD
    K5、K6、K7、K8、K10、Zen、Zen 2、Zen 3 等

(4)现代处理器的微架构中包含的功能:

  • 多处理器(核)管理
  • 流水线技术
  • 高速缓存
  • 乱序执行
  • 寄存器重命名
  • 分支目标预测
  • 虚拟化
    ...

3. 微架构和指令集架构的关系

  • 指令集架构是指在处理器内被处理的程序,指令集架构为汇编语言的设计师和编译器所见。指令集架构包括执行模型、寄存器、地址和数据格式等。

  • 微架构包含处理器内部的构成以及这些构成起来的部分如何执行指令集架构。微架构通常被表示成平面图,处理器内部微架构组成部分可以是简单的逻辑门,电阻,或是算术逻辑单元等大型组件。这些平面图通常把数据路径和控制路径分开。每个组成部分会以示意图表达它们和执行它们的逻辑门之间的关系。

  • 每个微架构的的组件都被表示成由数个逻辑门所建构而成的工具。每个逻辑门都被表示成由晶体管建构成的零件。拥有不同微架构的机器可能拥有相同的指令集架构,因此可以执行相同的程序。由于半导体科技的进步,新型的处理器可以以较快的速度执行相同的指令集架构。

(三)参考

处理器架构、指令集和汇编语言,三者有何关系?
维基百科 指令集架构
维基百科 微架构
关于CPU、指令集、架构、芯片的一些科普

posted @ 2022-07-24 23:30  夏夜星空晚风  阅读(817)  评论(0编辑  收藏  举报