《超标量处理器设计》学习笔记—第一章-超标量处理器概览

本文详细介绍了超标量处理器的概念,包括其流水线设计、普通流水线与超标量的区别,以及顺序执行和乱序执行的特点。重点探讨了指令间的相关性处理方法,如重命名和旁路操作,以及如何通过优化来提高处理器性能和效率。
摘要由CSDN通过智能技术生成

第一章 超标量处理器概览

1.1 超标量定义

CPI执行每条指令所需的周期数。

IPC一个周期内可以执行的指令个数。

非流水线处理器,多个周期才能执行一条指令。

普通流水线处理器,一个周期执行一条指令。IPC=1

超标量流水线处理器,一个周期执行多条指令。IPC>1

增大IPC和运行频率可以提高处理器程序执行速度。但是IPC过大,会导致设计复杂度增加,进而导致某一阶段执行时间增加,导致周期时间降不下来;而如果频率过高,周期时间比较小,那么设计的复杂度就不能太高,不然在短周期时间内完不成复杂逻辑,同时,增加流水线深度获得更小的周期时间会导致预测失败时惩罚(penalty)很大。

1.2 普通处理器流水线

1.2.1 流水线概述

适当地使用流水线可以降低处理器周期,增大处理器频率。假设原周期时间D,使用n级流水线,单个流水级周期时间变为D/n+S(S是流水线寄存器延时),频率1/(D/n+S),性能公式Performance=1/(D/n+S)

在使用流水线之前,消耗的总硬件面积是G,n级流水线的硬件面积,G+n*L(L是每个流水线寄存器和附带逻辑的硬件面积),总的面积公式Cost =G+n* L

对于处理器来说,当然希望 Cost/Performance 尽可能得小,也就是获得同样的性能,消耗的硬件面积越小越好

1.2.2 流水线的划分

  1. 流水线的划分条件:
  • 每一个流水级所需时间近似相等。
  • 流水线中每个阶段的操作都会被重复地执行。
  • 流水线中每个阶段的操作都和其他流水段互相独立、互补干扰。

  1. 经典五级流水线:
  • fetch:取指令
  • decode & regfile read:译码 & 读寄存器堆
  • execute:计算
  • memory:访存
  • write back: 写回

不使用流水线的处理器周期时间是各段时间之和,使用流水线的处理器周期时间是取流水段中的最大值的一段,,因此需要合理的分解流水级,可以使各部分流水短时间近似相等。

合并流水段,将相邻的周期时间较短的流水段合并成一个,可以均衡周期时间,但是运行频率会下降。

分解流水段,分解周期时间较长的流水段,降低最大的周期时间,就可以增大运行频率。但是过深流水线会导致硬件消耗增大,因为需要增加更多的寄存器和控制逻辑,寄存器端口增加,存储器访问端口也要增加,分支预测的惩罚变大,容易导致 “高频低能” 。

1.2.3 指令间的相关性

(1)先写后读(read after write,RAW),一条指令负责写入数据之后,后一条读取该数据,这种相关性必须要等到前一条指令的结果才可以执行,该相关性无法避免。

(2)先读后写(write after read,WAR),一条指令先读取某个寄存器,后一条指令写入该寄存器,可以通过将后一条指令数据写入其他寄存器来避免。(假相关性)

(3)先写后写(WAW),两条指令先后写入同一个寄存器,可以通过将后一条指令写入其他寄存器来避免。(假相关性)

假相关性WAW、WAR可以通过重命名解决,RAW真相关性通过bypass(旁路)解决,旁路如下(A写入寄存器r1,B读取寄存器r1,属于RAW):

1.3 超标量处理器的流水线

每周期取出多于一条的指令送到流水线执行,并用硬件控制调度,分为顺序执行、乱序执行。

1.3.1 顺序执行

3-way超标量顺序执行,写回也要顺序写回,所以计算时间短的要等其他计算都完成,延时等待,最后按程序指令顺序写回并提交。

pending状态:表示指令的结果还没有写回到逻辑寄存器。

1.3.2 乱序执行

对指令相关性进行重命名或者旁路操作,,同时发射阶段是顺序乱序的分界点,在这里是乱序写回(写回PRF),顺序提交(对处理器状态顺序更新,如修改ARF),其中顺序提交的关键是利用重排序缓存(ROB),只要计算完毕,就可以直接写回,不用等其他的指令。

在执行中的store指令在写入cache时,先将数据写入store buffer,一方面是预测失败和异常的恢复,还可以将数据通过sbuffer暂时缓存,在达到一定条件时一起写入cache,防止频繁访问cache造成时间的浪费。

其中一个进程任务的最后一个指令写回后,必须要等到它之前的指令都提交之后再提交。

1.3.3 指令执行细分步骤

fetch→decode→register renaming→dispatch→issue→register file read→execute→write back→commit。

具体内容可以阅读原书,这里不展开说明,后边会分章节具体讨论。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ICer_freshman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值