超标量处理器基础笔记

超标量处理器基础-笔记

现代处理器设计经典书籍,2004年出版

在这里插入图片描述

第一章 处理器设计

1.2 指令集处理器设计

1、微处理器的设计规范就是指令集体系结构(ISA),它定义了微处理器必须执行的一整套指令集,程序可根据ISA的规定开发而无需了解任何有关实际机器的实现细节。体系结构、逻辑实现与物理实现的关系及相关概念如下图:

2、ISA动静态接口(DSI):区别哪些是在编译时静态完成的,哪些是在运行时动态完成的。

在这里插入图片描述

1.3 处理器性能法则

处理器性能是根据执行一段特殊代码所需要的时间来衡量的。

  • 特定的程序需要执行的动态指令的数目;
  • 平均执行一条指令需要花费多少个时钟周期;
  • 每个时钟周期所需要的时间

1 性能 = 时间 程序 = 指令 程序 ⋅ 周期 指令 ⋅ 时间 周期 \frac{1}{性能}=\frac{时间}{程序} =\frac{指令}{程序} \cdot \frac{周期}{指令} \cdot \frac{时间}{周期} 性能1=程序时间=程序指令指令周期周期时间

1.4 指令级并行处理

指令数由ISA、编译器和操作系统决定。

第二章 流水线处理器

2.1 流水线基础
  1. **流水线定义:**将系统分割成许多段,在段与段之间增加适当的缓冲,这些段及其缓冲就构成了流水线。流水线的每一段可看做一个组合逻辑加上一个锁存器,信号通过组合逻辑之后在锁存器处锁存。
  2. **提出动机:**提高系统吞吐率(带宽)的同时几乎不增加硬件开销。
  3. **限制流水线时钟频率的因素:**组合逻辑的最长和最短传输延迟之差、为正确建立时钟信号所需要的额外延迟。
  4. **理想流水线假设及挑战:**一致的运算分量(保持流水段均衡);重复的运算(同一指令类型);独立的运算(减少流水线停顿)。
2.2流水线处理器的设计

1、流水线硬件要求:

  • 每一段进行控制和完成数据操作的逻辑;
  • 支持多个流水线同时访问的寄存器文件端口;
  • 支持多个流水段同时访存的存储器端口。

2、要完成一次运算,计算机必须完成以下三个基本任务:

  • 算术操作(ALU指令):对指定操作数执行算术和逻辑运算,这是整个运算中最突出的部分;
  • 数据移动(load/store指令):负责将操作数和结果在存储地址之间进行移动;
  • 指令排序(分支指令):负责指令顺序的确定。

3、现代ISA倾向于采用定长、正交的指令格式、load/store型指令结构和简单的寻址模式。

2.3 深流水线处理器

目标:通过减少每段的逻辑门数来降低时钟周期,从而提高主频。

主要障碍:指令相关引起的流水线停顿。

第三章 超标量结构

**本质特点:**可以同时发射多条指令;乱序执行。

3.1 标量流水线的局限性
标量流水线局限性改进的超标量流水线方法
标量流水线最大吞吐率不会超过每周期一条指令每个时钟周期启动多条指令执行
将不同类型的指令放在同一条流水线中处理,效率低下多配置流水线、多记录缓冲技术
为了保证流水线的步调一致而插入的停顿使流水线产生很多气泡动态流水线
3.2 超标量流水线综述

**1、取值:**实现每周期读取出s条指令

主要障碍:

  • 读取的s条指令没有对齐,这和指令cache的物理组织有关;
  • 控制流改变了取值集中的指令。

对齐问题的解决方法:

  • 编译时使用静态技术,编译器了解指令cache的组织结构。
  • 执行时由硬件协助解决,即使指令组跨越阵列行边界,对齐硬件也能保证一个周期内取出s条指令。

**2、指令译码:**指令的识别、指令类型确定及指令间相关性的检测。

影响其复杂度的因素:

  • ISA;
  • 并行流水线的宽度。

预译码:将指令译码的部分工作转移到指令cache进行。

对处理器设计的影响:

  • 增加了指令cache的失效开销;
  • cache的大小由于存储预译码标识位而增大。

**3、指令分派:**将在译码段确定类型的指令发射到相应的部件执行。

**4、指令执行:**执行除浮点指令的其他指令

5、指令的完成和提交

超标量流水线的基本结构如下:前端是顺序执行,执行段式乱序执行,后端是顺序提交。

在这里插入图片描述

第四章 超标量技术

**重点:**超标量处理器执行指令时的动态行为,及针对某些特殊指令的处理技术。

**目标:**获得最大的指令吞吐率;

4.1 指令流技术

**用途:**一般用在取值段和译码段。

**目标:**在每个机器周期内为处理器内核提供尽可能多的有用指令,减少指令停顿或利用这些停顿周期进行有用的工作。

**主要挑战:**条件分支和转跳分支的处理。

条件分支指令的停顿开销:

  • 生成目标地址引起的开销;
  • 条件判定引起的开销;

分支预测:

  • 分支目标地址的推测,可通过设置分支目标缓冲BTB来实现,用来保存前几次分支执行时的目标地址。
  • 分支方向推测,方法1,设置取值硬件总是预测为不跳转。方法2,需要软件协同,对ISA进行修改。方法3,基于历史信息做分支预测。

动态分支预测可看做由两个相互影响的模块组成,前面的模块负责在流水线的前端推测分支方向和目标地址;后面的模块负责在流水线的后端验证推测的结果。

如果预测失败,需要执行:结束当前指令流并从一个新的、正确的地址取值。

4.2 寄存器数据流技术

**含义:**指ALU(寄存器-寄存器型)指令在处理器执行部件中的有效执行。

寄存器的重用:

  • 含义:特定ISA体系结构的寄存器数目有限,寄存器分配工具必须将无限的寄存器符号资源映射到有限的、固定的体系结构上。
  • 缺点:会导致假数据相关、反相关和输出相关。

寄存器重命名:

  • 含义:为同一体系结构寄存器中的多个定义动态分配不同的名字。
  • 一般方法:在体系结构寄存器文件之外配置一个独立的重命名寄存器文件(映射表技术);
  • 任务:读取源寄存器;分配目的寄存器;更新寄存器。
4.3 存储器数据流技术

存储器指令负责在存储器和寄存器文件之间传递数据。

存储器数据流指令的执行步骤:生成存储器地址、存储器地址转换和数据访问。

虚拟存储器是一种将程序的虚拟地址空间映射到机器物理地址空间的机制。

访问多端口存储器的方法:通过地址索引查找、通过标签相联查找和通过组相联寄存器(即用索引又用相联查找)。

4.3 存储器数据流技术

存储器指令负责在存储器和寄存器文件之间传递数据。

存储器数据流指令的执行步骤:生成存储器地址、存储器地址转换和数据访问。

虚拟存储器是一种将程序的虚拟地址空间映射到机器物理地址空间的机制。

访问多端口存储器的方法:通过地址索引查找、通过标签相联查找和通过组相联寄存器(即用索引又用相联查找)。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

skyer_lhb

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

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

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

打赏作者

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

抵扣说明:

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

余额充值