系统结构与分析第十四章指令并行性和超标量处理器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
按序发射,无序完成(框图)
无序发射,无序完成
解耦流水线的译码段和执行段 可以持续取指、译码直到流水线满 当一个功能单元空闲时,某条指令即可执行 因为指令已经被译码,处理器可以提前判决
无序发射,无序完成(框图)
反相关性
读-写相关性
R3:=R3 + R5; (I1) R4:=R3 + 1; (I2) R3:=R5 + 1; (I3) R7:=R3 + R4; (I4) i3 不能在 i2 开始之前完成,因为 i2 需要 R3 的
跟踪 cache
微代码 ROM
整
数
寄
存
换微
器
名 操 调组
/
作度
分 配
队 列
器 浮 点
寄
存
器
组
Pentium 4 操作
Pentium 4 的操作能总结成如下几点:
处理器以静态程序的顺序由存储器取指令。 每条指令被译成一个或多个定长的RISC指令,它们被
称为微操作(micro-op)。 处理器在超标量流水组织上执行微操作,故微操作以
因为第二条指令的完成需要第一条指令产 生的数据,这种情况称为真实数据相关性
过程相关性
转移(发生或不发生)之后的指令有对转 移的过程相关性,而且直到转移指令被执 行之前它们不能去执行
而且,如果使用变长指令,在取下一条指 令之前,指令必须被译码,以确定还需要 几个取指阶段
这就妨碍了指令同时取
资源冲突
第十四章 指令并行性和超标量处理器
14.1 概述
何谓超标量
普通指令 (算术, load/store, 条件转移) 能够同时启动 并独立执行
对 RISC & CISC 均适用 然而,几乎所有已实现的超标量都是在RISC 体系上
完成的
为什么使用超标量技术
大多数应用中,大多操作是对标量进行的 因此,超标量方法代表了高性能通用处理器的趋势
是指处理器获取指令级并行性好处的能力的大小 受制于流水线的数目
指令发射策略
指令发射是指启动指令去处理器功能单元执行的 过程
指令发射策略表示启动指令执行时所采用的协议 三种类型的排序:
取指令的顺序 指令执行的顺序 指令改变寄存器和存储器位置内容的顺序
按序发射,按序完成
按照能实现顺序执行的那个顺序发射指令 (按序发射),并以同样的顺序写结果 (按序完成)
超标量方法依赖于并行执行多条指令的能力 硬件技术与编译器优化技术的结合能够达到最
大程度的指令级并行性 并行性受到以下因素的限制:
真实数据相关性 过程相关性 资源冲突 输出相关性 反相关性
真实数据相关性
考虑如下两条指令:
ADD r1, r2 MOVE r3, r1
第二条指令可以并行完成取指、译码,但 直到第一条指令执行之后才能执行
作为源操作数访问那个寄存器值的后续指令必须通过 一个重命名过程:这些指令中的寄存器引用部分必须 修改成对含有所需值寄存器的引用。
于是,若准备使用不同值,不同指令中的同样原始寄 存器引用可能引用到不同的实际寄存器。
寄存器重命名举例
R3b:=R3a + R5a (I1) R4b:=R3b + 1 (I2) R3c:=R5a + 1 (I3) R7b:=R3c + R4b (I4) 不带下标的寄存器引用指的是指令中找到的逻
辑寄存器 带下标的寄存器饮用指向被分配来保持新值的
硬件寄存器
机器并行性
在超标量处理器中增强性能的三种硬件技术:
资源复制 无序发射 重命名
机器并行性的重要结论:
没有寄存器重命名的话,添加功能单元可能没有价值 指令窗口需要足够大 (大于8)
转移预测
任何高性能的流水式机器必须解决转移问题。 RISC 采用延迟转移策略 超标量机器又转回到 RISC 以前的技术 ——
效率不是很高
按序发射,按序完成(框图)
按序发射,无序完成
产生了输出相关性
R3:= R3 + R5; (I1) R4:= R3 + 1; (I2) R3:= R5 + 1; (I3) I2 依靠 I1 的计算结果 – 数据相关性 如果 I3 在 I1 之前完成, I1 的计算结果就会出错 –
输出相关性
浮点单元 64位
转移处理单元
Power PC 601
流水线 结构
PowerPC 601 流水线
转移指令
取
派遣、译码 执行、预测
整数指令
取
派遣、 译码
执行
写回
Load/Store 指令
取
派遣、 地址
译码
生成
写回
浮点指令
取
派遣 译码 执行1 执行2 写回
无序(或乱序)方式来执行。 处理器以原程序流的顺序将每个微操作的执行结果托
交到处理器的寄存器组。
CISC 的外壳,RISC 的内核 RISC 内核的流水线至少20个段 :
某些微操作要求多个执行段,导致流水线更长
Pentium 4 流水
TC Next lP = trace cache next instruction pointer (跟踪cache下一指令指针) TC Fetch = tmcecachefetch(跟踪cache取) RF = register file(寄存器文件,或寄存器组) BrCK = branch check(转移检查) MMX = multi-media extension(多媒体扩展)
PowerPC 结构的最初实现是601。 PowerPC的后来模式更进一步采用了超标量概念。 本节集中于601,它提供了基于RISC超标量设计
的优秀例子。
PowerPC 601 框图
128位 256位 统一的
L2/总线
指令/数据
接口
cache(32KB)
256位 取指和派遣
32位
整数单元 32位
数据,而 i3 改变了 R3 的值
寄存器重命名
输出相关性和反相关性的出现是因为寄存器的 内容可能不再反映被程序流指定的值顺序
寄存器重命名:
本质上,寄存器由处理器硬件动态分配,并且它们与 各时间点指令所需值相关。
当一个新寄存器值产生时(即,具有目标操作数为寄存 器的指令执行时),一个新寄存器分配给那个值。
转移预测。
某些机器,像PowerPC 601,采用简单的静态转移预测 技术。
更为复杂的机器,像 PowerPC 620 和 Pentium 4 ,采 用基于转移历史分析的动态转移预测技术。
超标量执行
静态程序
指令取和 转移预测
指令派遣
指令发射
指令执行 指令重排 序和托收
执行窗口
超标量实现
同时取多条指令的取指令策略,经常要有预测条件转 移指令结果和超前取的功能,这要求使用多个取和译 码流水段及转移预测逻辑。
两个或更多指令在同一时间竞争同一资源
e.g. 两个算术指令
可以设置两套资源
e.g. 有两个运算单元
相
无相关性
关
数据相关性
性
i0使用i0计算的数据
效
应
过程相关性
资源冲突 i0和i1使用同一单元
14.2 设Байду номын сангаас考虑
指令级并行性
顺序中的指令是独立的 可以重叠执行 受制于数据和过程相关性
机器并行性
Pentium 4 流水线操作 (1)
(a) 微操作生成
(b) 跟踪cache下一指令指针
Pentium 4 流水线操作 (2)
(c) 跟踪cache取
(d) 驱动
Pentium 4 流水线操作 (3)
(e) 分配:寄存器换名
(f) 微操作排队
Pentium 4 流水线操作 (4)
(g) 微操作调度
通常的超标量组织
整数寄存器
浮点寄存器
流水线的 功能单元
存储器
超级流水线
超级流水线利用了如下事实:
多数流水阶段所完成的任务只需不到半个时钟周 期的时间
于是,双倍的内部时钟速率允许在一个外部时钟 周期内完成两个任务
超标量允许指令并行执行
超
标
量
vs
连 续
超
指
令
级
流
水
线
基点机器 超级流水线
超标量
限制
(h) 派遣
Pentium 4 流水线操作 (5)
(i) 寄存器组
(j)执行:控制
Pentium 4 流水线操作 (6)
(k) 转移检查
(l) 转移检查结果
14.4 PowerPC
PowerPC 体系结构是 IBM 801、RTPC 和 RS/ 6000 的直系后代。
所有这些都是 RISC 机器,但此系列中第一个示 超标量特征的是 RS/6000。
使用两个分立的整数执行单元
Pentium Pro – 引入了全面的超标量设计理念 后续的型号具有更精炼、功能更强的超标量设
计
Pentium 4 处理器框图
L1 D cache D-TLB
和
系 统 界 面
取 / 译 码
AGU=地址生成器 BTB=转换目标缓冲器 TLB=转换后援缓冲器
L2 cache 和控制
确定有关寄存器值真相关性的逻辑,以及执行期间这 些值与需要它们的位置之间的相互联络机制。
并行启动或发射多条指令的机制。 多条指令并行执行所需的资源,这包括多个流水式的
功能单元以及为多个存储器访问同时提供服务的存储 器层次结构。 以正确顺序托收进程状态的机制。
14.3 Pentium 4
80486 – CISC,没有超标量部件 Pentium – 具有了一定的超标量能力