前言
继续阅读《深入理解计算机系统》这本经典书籍
本节是第四章
处理器体系结构
1、Y86-64指令集体系结构
指令集体系结构(ISA):一个处理器支持的指令和指令的字节级编码
- 各种状态单元
- 指令集和它们的编码
- 一组变成规范和异常事件处理
程序员可见的状态:每条指令都会读取或修改处理器状态的某些部分
- 15个处理器
- 3个一位的条件码
- 程序计数器PC
指令集如下图所示
- movq分为4个不同指令,指明源和目的:立即数(i)、寄存器(r)和内存(m)
- OPq代表4个整数操作指令,只对寄存器数据操作,会设置条件码
- jXX代表7个跳转指令
- cmovXX代表6个条件传送指令
- call和ret是调用和返回
- pushq和popq是栈
- halt停止指令
stat状态码的可能值如下
2、逻辑设计和硬件控制语言HCL
逻辑门
- 数字电路的基本运算单元
- 与(AND)、或(OR)、非(NOT)
组合电路:多个逻辑门组合成一个网
两个例子
- 位相等:
bool eq = (a&&b) || (!a&&!b) - 位多路复用:
bool out = (s&&a) || (!s&&b)
字级抽象
3、Y86-64的顺序实现
各个阶段
- 取值:从内存读取指令字节,下调至零valP为程序计数器(PC)的值加上已取出指令的长度
- 译码:从寄存器读入最多两个操作数
- 执行:ALU要么执行指令,要么增减栈指针
- 访存:将数据写入内存或从内存读取数据
- 写回:最多写两个结果到寄存器
- 更新PC:将PC设置为下一条指令的地址
SEQ硬件结构抽象图
4、流水线的通用原理
通过时钟控制
以一个三阶段流水线为例
一个问题是时钟受最慢阶段的速度限制
另一个问题是,流水线过深收益下降
5、Y86-64的流水线实现
重新设计硬件结构
将PC从时钟周期的结束移到开始
一个五阶段流水线
一些数据冒险
为了应对大多数数据冒险
主要是用暂停和转发
得到最终的硬件结构
结语
通过Y86-64指令集
学习了处理器体系结构
这里只记录最关键的一些结构
书中很多细节需回顾