处理器架构 (三) 架构指令集微架构ISA 等概念

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u011011827/article/details/102755150

简述

  • 指令集架构标准 RISC与CISC
RISC(全称Reduced Instruction Set Computer,精简指令系统计算机)则是一套优化过的指令架构
更像是 指令集架构标准,并不是实现。
一种标准对应多种指令集架构实现 
  • 指令集架构实现 体系结构 汇编指令集 指令集架构(ISA) x86 x86_64 51 arm mips powerpc avr pic risc-v ia64
x86 x86_64 51 分别是 CISC 标准的 几种实现, 是 指令集架构实现
arm mips powerpc avr pic risc-v 分别是 RISC 标准的 几种实现, 是 指令集架构实现(arm有 v5 v6 v7 版本的指令集,arm指令不是完全兼容的,所有指令集有版本区别)
ia64 是 EPIC 标准的 一种实现。
// 定义的是硬件和软件的接口,并没有指定实现。
一种指令集架构实现 对应多种微架构
将 ISA 变成真正可以使用的实物需要经过“实现”,它包括两个层面:组成和硬件。


  • 微架构 微结构
微结构(processor microarchitecture)则描述的是如何设计一个处理器来符合一个体系结构
x86的P5 x86的P6 x86的Netburst
ARMv7的cortex-m ARMv7的cortex-r  ARMv7的cortex-a
一种微架构对应多种芯片
https://wenku.baidu.com/view/f18e5864bcd126fff7050b42.html
组成是从计算机设计的高阶层面而言,例如:存储系统、存储互连接、CPU(包括算术、逻辑分支、数据传输的实现)设计,有时候“组成”又被称作微架构(microarchitecture),英特尔 Nehalem、NVIDIA Kepler、ARM Cotrex-A57 都可以属于各自某系列芯片的微架构,其中 Kepler 的 ISA 是 CUDA PTX 和 Cortex-A57的 ISA 属于 ARMv8。

  • 芯片
硬件通常是指电脑的规格,包括具体的逻辑设计、封装技术,同一系列的产品可能有相同的 ISA、近乎一样的微架构,但是存在某些具体规格的差别,例如NVIDIA Tegra 3,有 AP30、AP33、T30、T33、T30S、T33S、T30SL 等具体的型号,它们都属于 Tegra 3 微架构,但是频率规格、内存规格等地方都有差别。
指令集架构实现	微架构				芯片型号
ARMv4 			ARM9TDMI 			S3C2440&&S3C2410 
ARMv6			ARM11				S3C6410
ARMv7			Cortex-M3			STM32F103zgt6
ARMv7 			Cortex-A8 			s5pv210
ARMv7			Cortex-A9			exynos4412 AppleA5
ARMv7			Qualcomm Scorpio/Krait	MSM8060/MSM8960
ARMv7			苹果Swift微架构	 	A6

ARMv8			Apple Cyclone/Typhoon/Twister/Fusion/Bionic	A7/A8/A9/A10/A11
ARMv8			Cortex-A35/A53/A57/A72/A73/A55/A75
ARMv8			高通 Kyro
ARMv8			nVidia  Project Denver


RISC-V 			Bumblebee  			GD32VF103C8U6

//高效能之路:让核心微架构同时间内能够有效处理更多的指令
  • 例子

arm 对应不断迭代的 指令集 ,属于架构范畴.

然后arm V7 是 第七版的指令集,也即第七版的架构

cortex-a15 是 微架构,这个微架构是arm发布的

而 exynos 4412 就是针对 cortex-a15 最出来的 一个芯片

详述

  • 指令集架构标准 定义了什么
RISC 定义了 精简指令集?
CISC 定义了 复杂指令集?

  • 指令集架构实现 定义了什么
- 体系结构(computer architecture)定义的是硬件和软件的接口,并没有指定实现。RISC-V即定义的体系结构。

  - ISA定义的内容:指令编码,内存模型,IO模型,逻辑寄存器数量和功能,控制寄存器,特权级别。
  - 一条指令都包含什么: 指令功能,操作对象(立即数,普通寄存器,特殊寄存器,内存), 环境变量(标志位,特权级别),指令编码。
  - 指令的功能分类:逻辑指令,数学指令,控制指令,内存指令,IO指令,特殊指令。
  - 是CISC还是RISC
  - 每一种二进制指令具体是什么
  • 微架构 定义了什么
- CPU微架构包括缓存管理,缓存设计,乱序执行,超标量,超流水线,内存控制,分支预测等众多的极其复杂的电路,这些结构的电路的效率是直接决定CPU性能的
- 微结构(processor microarchitecture)则描述的是如何设计一个处理器来符合一个体系结构。体系结构并不定义微结构。
- 定义了 所有的二进制指令 的具体实现。
  - 流水线
```c
将 取值译码执行 分为更多的工位。如果是10个工位,就是10级流水线
  • 多发乱序流水线
  • 多线程流水线
  • 多核
  • 特殊流水线:VLWI, vector, GPU
  • 多核,超标量,指令分支预测,乱序执行,多层次存储 动态调度 线程级并行化 SIMD(数据级并行)存储系统分层结构
  • 超标量
原来做了20个工位,一条流水线,现在double一下,出来了两条流水线。然后这就是2路超标量
- 芯片厂家(假定该厂家只能在封装微架构,不能修改微架构) 定义了什么
```c
芯片的 功能模块的种类及个数及对应的引脚引出?
封装?

其他

  • 狭义的计算机体系结构(架构)(CPU架构)(处理器架构)指的是 指令集架构实现
  • 广义的计算机体系结构(架构)(CPU架构)(处理器架构)指的是 指令集架构实现 + 微架构
  • 指令集架构实现与微架构
A指令集架构实现做加法运算的指令二进制代码是10000001
B指令集架构实现的加法指令代码是10000010。

你要基于A指令架构就必须把电路做成加法指令代码是10000001
电路怎么变,微架构怎么变随你,怎么实现收到10000001的指令时做加法运算随你
但这些指令集对应的代码不能变,它必须是10000001就是加法运算。

这套指令集你必须全兼容才能运行基于它的程序。

  • 体系结构与微结构的互相影响
    • 比较CISC和RISC的特性。 RISC的每条指令功能复杂度基本一致,执行时间基本一致,编码长度基本一致,流水线控制简单,指令调度简单,代码密度相对CISC较小。 CISC的指令功能复杂度不一,执行时间长短不一,编码长度也不一样。直接运行导致流水线控制复杂调度困难,一般动态拆做类似RISC的微指令执行。代码密度相对RISC较高。
    • 操作数:单指令寄存器个数。从栈寻址到多寄存器寻址在代码密度,流水线调度,执行时间上的考虑。
    • 操作数:内存寻址方式。RISC的内存寻址方式单一,调度简单,可做单独流水线,但指令密度高。CISC调度方式复杂,流水线设计复杂,指令密度高。
    • 环境变量: 条件执行对流水线的影响。(第二章具体讲)
    • 指令编码:RISC编码和SISC编码,解码难度,取址难度,分支预测难度等等。(第二章具体讲RISC-V的编码设计)
    • 编译器: 编译器是指令集和高级语言的接口。 语言的抽象等级越高,ISA的使用就更加受限:ABI,systemcall,context switching。 通用逻辑寄存器的功能异化,数量对编译器的影响。
    • 操作系统:硬件资源的管理者,特权软件。 操作系统需要ISA的支持:控制寄存器,特权指令,内存模型,IO模型等等,hyervisor模式。 (更具体的,比如对VM,安全,上下文切换效率,中断和异常的定义等等,都留到第二章)

猜你喜欢

转载自blog.csdn.net/u011011827/article/details/102755150