版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
简述
- 指令集架构标准 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,安全,上下文切换效率,中断和异常的定义等等,都留到第二章)