《深入理解计算机系统》读书笔记(四)处理器体系结构

前言

继续阅读《深入理解计算机系统》这本经典书籍
本节是第四章
处理器体系结构

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指令集
学习了处理器体系结构
这里只记录最关键的一些结构
书中很多细节需回顾