简述
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 标准的 一种实现。
一种指令集架构实现 对应多种微架构
微结构(processor microarchitecture)则描述的是如何设计一个处理器来符合一个体系结构
x86的P5 x86的P6 x86的Netburst
ARMv7的cortex-m ARMv7的cortex-r ARMv7的cortex-a
一种微架构对应多种芯片
指令集架构实现 微架构 芯片型号
ARMv4 ARM9TDMI S3C2440&&S3C2410
ARMv6 ARM11 S3C6410
ARMv7 Cortex-M3 STM32F103zgt6
ARMv7 Cortex-A8 s5pv210
ARMv7 Cortex-A9 exynos4412
ARMv7 高通微架构Scorpio/Krait
ARMv7 苹果Swift微架构 A6
ARMv8 苹果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)则描述的是如何设计一个处理器来符合一个体系结构。体系结构并不定义微结构。
- 定义了 所有的二进制指令 的具体实现。
- 流水线
- 多发乱序流水线
- 多线程流水线
- 多核
- 特殊流水线:VLWI, vector, GPU
- 多核,超标量,指令分支预测,乱序执行,多层次存储等等
- 芯片厂家(假定该厂家只能在封装微架构,不能修改微架构) 定义了什么
芯片的 功能模块的种类及个数及对应的引脚引出?
封装?
其他
- 狭义的计算机体系结构(架构)(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,安全,上下文切换效率,中断和异常的定义等等,都留到第二章)