深入理解计算机系统(csapp)阅读笔记——第四章处理器体系结构

Y86-64指令集体系结构

  • 定义一个指令集体系结构包括定义各种状态单元、指令集和它们的编码、一组编程规范和异常事件的处理
  • 程序员可见状态:程序中的每条指令都会读取或修改处理器状态的某个部分
    在这里插入图片描述
  • Y86-64指令
    在这里插入图片描述
    • movq前面的两个字母的意义:显式指明源和目的地格式。源可以是立即数(i)、寄存器(r)或内存(m)。
    • OPq包含addq、subq、andq和xorq。
    • halt指令停止指令的执行,并将状态码设置为HLT
    • rA或rB,用于指定数据源和目的地寄存器,没有寄存器操作数的指令,就没有寄存器指示符字节。那些只需要一个寄存器操作数的指令将另一个寄存器指示符设为0xF
    • 有的指令需要一个附加的4字节常数字。这个字能作为irmovq的立即数数据,rmmovq和mrmovq的地址指示符的偏移量,以及分支指令和调用指令的目的地址
  • Y86-64 指令编码
    在这里插入图片描述
    每个指令1~10个字节不等,第一个字节高四位是代码部分,低四位是功能部分
  • 寄存器编码
    在这里插入图片描述
    程序寄存器存在CPU的一个寄存器文件中,这个寄存器文件就是一个小的、以寄存器ID作为地址的随机访问存储器。在指令编码中以及在我们的硬件设计中国,当需要指明不应访问任何寄存器时,就用ID值0xF表示
  • Y86-64异常
    在这里插入图片描述

2.逻辑设计和硬件控制语言HCL

  • 逻辑门
    在这里插入图片描述
    逻辑门总是活动的,一旦一个门的输入变化了,在很短的时间内,输出就会相应的变化
  • 组合电路:将很多的逻辑门组成一个网,就能构建计算快,称为组合电路。如何构建这些网有几个限制:
    在这里插入图片描述
  • 字级组合电路的位级实现:
    在这里插入图片描述
  • 在HCL中,我们将所有字级的信号都声明为int,不指定字的大小
  • 考虑两类存储器设备:
    在这里插入图片描述
  • 硬件寄存器是如何工作:
    在这里插入图片描述
    在这里插入图片描述
    程序寄存器是如何工作:
    在这里插入图片描述
  • 处理器有一个随机访问存储器来存储程序数据:
    在这里插入图片描述

3.Y86-64的顺序实现

  • SEQ处理器:每个时钟周期上,SEQ执行处理一条完整指令所需的所有步骤。

(1)将处理组织成阶段

  • 取指(fetch):取指阶段从内存读取指令字节,地址为程序计数器(PC)的值。取出的指令可能有如下:、
    • 指令指示符字节的两个四位部分。
    • 寄存器指示器字节
    • 四字节常数字valC
  • 译码(decode):译码阶段从寄存器文件读入最多两个操作数(ra和rb字段指明的寄存器),得到值valA和/或valB
  • 执行(execute):算数/逻辑单元要么执行指令指明的操作,计算内存引用的有效地址,要么增加或减少栈指针。得到的值我们称为valE
  • 访存(memory):访存阶段可以将数据写入内存,或者从内存读出数据,读出的值称为valM
  • 写回(write back):写回阶段最多可以写两个结果到寄存器文件
  • 更新PC(PC upodate):将PC设置成下一条指令的地址

(2)一些指令的通用模式

  • 整数操作指令
    在这里插入图片描述
  • 进栈出栈指令(访存阶段右边应该是valM)
    在这里插入图片描述
  • 控制转移指令
    在这里插入图片描述
    跳转指令在执行阶段,检查条件码和跳转条件来确定是否要选择分支,产生出一个一位信号Cnd,如果为1就跳转,为0就执行下一条指令

(3)SWQ的硬件结构

  • SEQ的抽象视图
    在这里插入图片描述
  • SEQ的详细硬件结构
    在这里插入图片描述
  • SEQ时序控制的理由:
    在这里插入图片描述
  • SEQ时序控制的原则:从不回读,即处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。
    在这里插入图片描述
    每次时钟由低变高时,处理器开始执行一条新的指令

4.流水线的通用原理

  • 流水线化的一个重要特性就是提高了系统的吞吐量,也就是单位时间内服务的顾客总数,不过它也会轻微地增加延迟
  • 在现代逻辑设计中,电路延迟以微微秒或皮秒(ps),也就是10-12秒为单位来计算。
  • 系统最大吞吐量 = 1 / 处理一条指令的延迟
    即每秒能执行多少条指令,单位为IPS
  • 流水线操作实现
    在这里插入图片描述
  • 流水线的局限性(降低流水线效率的因素)
    • 不一致的划分
      不同于刚刚的等分,我们把三个阶段分为50ps,150ps,100ps,会导致如下效果
      在这里插入图片描述
      流水线必须以最长的时间为准,从而导致大量时间的浪费
    • 流水线过深,收益反而下降
      在这里插入图片描述
      分成多块后延迟也增加到了每一块,总延迟增大,并没有什么好处
      为了提高时钟频率,线代处理器采用了很深的流水线。处理器架构师将指令的执行划分成很多非常简单的步骤,将每段延迟将至最低。
    • 流水线的数据和控制相关
发布了33 篇原创文章 · 获赞 3 · 访问量 616

猜你喜欢

转载自blog.csdn.net/qq_43647628/article/details/104605590
今日推荐