【读书笔记】《超标量处理器设计》第1章 超标量处理器概览

现代的通用处理器从实现方式上看,可以分为标量(Scalar)和超标量(Superscalar)这两种。其中,标量处理器每周期最多只能执行一条指令,顺序执行(in-order);而超标量处理器每周期内执行多条指令,可以顺序执行也可以乱序执行(out-of-order)。相比于标量处理器而言,超标量处理器提高了程序执行效率,但也增加了处理器及其流水线的设计复杂度。

《超标量处理器设计》一书以Superscalar RISC处理器设计作为重点,同时以其流水线作为贯穿的主线,按流水线阶段、部件分章节展开介绍。
Alt

系列文章目录

【读书笔记】《超标量处理器设计》开篇:我的动机杂谈
【读书笔记】《超标量处理器设计》第1章 超标量处理器概览
【读书笔记】《超标量处理器设计》第2章 Cache



1 为什么需要超标量

  • 问题:如何让一个程序执行更快?

  • 程序执行时间 Total Instructions × Cycles Instructions × Seconds Cycle \text{Total Instructions} \times \frac{\text{Cycles}}{\text{Instructions}} \times \frac{\text{Seconds}}{\text{Cycle}} Total Instructions×InstructionsCycles×CycleSeconds

  • 程序执行时间影响因素
    程序执行时间影响因素

  • 加速处理器执行程序速度的策略

    1. 减少程序中指令数量
    2. 减少每条指令在处理器中执行所需周期数
    3. 减少处理器的周期时间(cycle time)
  • 利弊权衡(Tradeoff):IPC和运行频率是互相制约的。

  • 思考:每周期执行多指令的实现?

    1. 超标量处理器(硬件决定)
    2. 超长指令字(VLIW,编译器和程序员自身决定)
  • 整书规划:按照重播篮球处理器流水线的各个部件展开讲解

2 普通处理器的流水线

2.1 流水线的概述

  • 流水线作用:降低处理器的周期时间,以获得更高执行频率
  • 实施流水线优化效果分析
    • 性能: Performance = 1 D n + S \text{Performance}=\frac{1}{\frac{D}{n}+S} Performance=nD+S1

      D:不使用流水线时的周期时间
      n:使用n级流水线
      S:流水线寄存器延迟

    • 硬件面积消耗: Cost = G + n × L \text{Cost}=G+n\times L Cost=G+n×L

      G:不使用流水线时消耗的硬件面积
      n:使用n级流水线
      L:每个流水线寄存器及其附带控制逻辑消耗硬件面积

    • 朴素目标:消耗比性能尽可能小(即获得同样性能时,消耗硬件面积越小越好)
      在这里插入图片描述

2.2 流水线的划分

  • 理想情况需满足条件

    1. 流水线中每个阶段所需时间近似相等
    2. 流水线中每个阶段操作被重复执行
    3. 流水线中每个阶段操作和其他段互相独立、互不相干
  • 典型RISC流水线(五阶段)

    • 流水线阶段流程图 在这里插入图片描述
    • 流水线各阶段说明
      在这里插入图片描述
  • 为满足理想情况条件1所需时间近似相等)可采用方法

    1. 合并(将多个短的流水线阶段合并为一个长的。深度浅,功耗低)
      在这里插入图片描述

    2. 拆分(将一个长的流水线阶段拆分为多个小的。深度深,功耗高)
      在这里插入图片描述

2.3 指令间的相关性

  • 数据相关性
    • 先写后读(Read After Write, RAW),true dependence
      在这里插入图片描述

    • 先读后写(Write After Read,WAR),anti-dependence
      在这里插入图片描述

    • 先写后写(Write After Write,WAW),output dependence
      在这里插入图片描述

  • 其他相关性:存储器数据相关性,控制相关性,结构相关性

    详见7.1寄存器重命名概述

3 超标量处理器的流水线

超标量处理器有两种执行指令方式:顺序执行(in-order)乱序执行(out-of-order)
顺序执行和乱序执行处理器特点

  • 辨析:个人认为“乱序执行”和“乱序执行超标量处理器”是需要区分的概念。

    指令执行方式划分:顺序执行乱序执行
    超标量处理器类型划分:顺序执行超标量处理器乱序执行超标量处理器
    对于顺序执行超标量处理器,其各个阶段指令都是顺序执行的。
    对于乱序执行超标量处理器,其部分阶段指令执行是乱序执行的;另一部分指令执行是顺序执行的。

3.1 顺序执行

  • 要求:指令的执行必须遵守程序中指定的顺序
  • n-way超标量处理器:流水线每周期可从I-Cache读取n条指令,即为n-way的超标量处理器
  • FU的行为
    • 要求:保证流水线的写回阶段顺序执行
    • 解决:所有 FU 须经历同样周期数的流水线
    • 解释:以最长周期数的 FU 看齐,哪怕其他 FU 提前算完了也只能空闲等待
      顺序执行的超标量处理器的流水线
  • 流水线执行样例
    顺序执行的超标量处理器流水线执行情况
  • 要点说明
    • 假设流水线的写回阶段才能对计算结果进行 旁路(bypass)
    • 顺序执行,后面指令只有等前面指令都 发射(Issue)了才能送 FU 执行
    • 所有 FU 必须保持相同周期数
  • 存在问题
    • 部分指令因前面指令而阻塞
    • 不相关指令必须等前面指令都 发射(Issue)了才可送 FU 执行

3.2 乱序执行

  • 要求:指令在流水线中不再遵循程序中指定的顺序执行

    即:一旦某条指令的操作数准备好了,就可送到 FU 执行

  • 区别差异:这里各个 FU 无需再保持相同的周期数

  • 流水线阶段说明

    超标量处理器流水线相较RISC经典五阶段流水线的主要差异区别说明

流水线阶段说明
发射(Issue)阶段流水线从顺序执行乱序执行的分界点
写回(Write Back)阶段指令只要计算完,结果即存PRF
提交(Commit)阶段结果从PRF搬ARF
ROB配合完成对 异常(exception)的处理
退休(Retire)阶段指令离开流水线
完成对处理器状态更改
注:一条指令一旦退休,则再也无法回到之前状态
  • 需求:解决 WAWWAR
    • 解决寄存器重命名(register renaming)

      解码(Decode)阶段完成,单独使用流水段完成

    • 增设硬件:物理寄存器堆(PRF)

      配合对指令集中的ARF进行重命名
      注:PRF个数多余ARF

  • 需求:保证程序串行结果,即乱序执行后把结果拉回到程序原始串行顺序
    • 解决:重排序缓存(ROB

      流水线中指令按顺序存ROB,ROB实现程序对处理器状态更新。即 提交(Commit)

乱序执行的超标量处理器的流水线

  • 流水线执行样例
    乱序执行的超标量流水线中的执行情况
  • 要点说明
    • 不同于顺序执行, 这里 FU 不必保持相同时钟周期数,算完即可写回
    • 不相关的指令可在前面指令之前 发射(Issue)

个人小结

本书开篇第一章以终为始,从提高处理器执行效率的经典公式出发,分析其影响因素,进而引出本书所述对象——超标量处理器。接着介绍了引入流水线的设计,分析了实施流水线后为什么能提高处理器执行效率的原因分析,并以超标量处理器的流水线为纲,布局了整本书的撰写脉络顺序——即以超标量处理器流水线的流程和部件,分章节进行展开讲述。

关于第一章,我认为有如下一些概念需要重点了解:

  • 影响程序执行效率的因素(动机思考,或者说讲故事hhh)
  • 超标量处理器的概念理念
  • 标量处理器与超标量处理器在流水线的设计上的差异

超标处理器设计》讲述超标(SuperScalar)处理器设计,现代的高性能处理器都采用了超标结构,大至服务器和高性能PC的处理器,小至平板电脑和智能手机的处理器,无一例外。《超标处理器设计》以超标处理器的流水线为主线展开内容介绍。《超标处理器设计》主要内容包括超标处理器的背景知识、流水线、顺序执行和乱序执行两种方式的特点;Cache的一般性原理、提高Cache性能的方法以及超标处理器中的Cache,尤其是多端口的Cache;虚拟存储器的基础知识、页表、TLB和Cache加入流水线后的工作流程;分支预测的一般性原理、在超标处理器中使用分支预测时遇到的问题和解决方法以及如何在分支预测失败时对处理器的状态进行恢复;一般的RISC指令集体系的简单介绍;指令解码的过程,尤其是超标处理器中的指令解码;寄存器重命名的一般性原理、重命名的方式、超标处理器中使用寄存器重命名时遇到的问题和解决方法以及如何对寄存器重命名的过程实现状态恢复;指令的分发(Dispatch)和发射(Issue)、发射过程中的流水线、选择电路和唤醒电路的实现过程;处理器中使用的基本运算单元、旁路网络、Cluster结构以及如何对Load/Store指令的执行过程进行加速;重排序缓存(ROB)、处理器状态的管理以及超标处理器中对异常的处理过程;经典的Alpha21264处理器的介绍。在本书中使用了一些现实世界的超标处理器作为例子,以便于读者加深对超标处理器的理解和认识。 《超标处理器设计》可用作高等院校电子及计算机专业研究生和高年级本科生教材,也可供自学者阅读。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值