复习:流水线上的实际CPI(平均每条指令使用的周期数),等于理想流水线的CPI加上各类停顿引起的周期数的总和。
C P I 流 水 线 = C P I 结 构 相 关 + C P I 控 制 相 关 + C P I R A W + C P I W A R + C P I W A W CPI_{流水线}=CPI_{结构相关}+CPI_{控制相关}+CPI_{RAW}+CPI_{WAR}+CPI_{WAW} CPI流水线​=CPI结构相关​+CPI控制相关​+CPIRAW​+CPIWAR​+CPIWAW​
什么是指令级并行(ILP),以及开发ILP的两种途径
ILP:当指令中不存在相关时,它们在流水线上是可以重叠执行的,我们重叠执行指令以提高性能。而这种指令序列存在的潜在并行性称为指令级并行。
如何开发实现ILP?静态开发(依赖软件)以及动态开发(依赖硬件)
什么是基本块?
基本块(BB):除了出口和入口没有其他分支的线性指令序列
Data Dependence (True dependence), Name Dependence (Anti-dependence, Output dependence) , Control Dependencies 相关(与冲突的关系)
各类相关与冲突的关系:
1、数据相关(Data Dependence):
对于指令i和指令j,如果:
(1)指令j使用指令i的结果
(2)指令j与指令k数据相关,指令k与指令i数据相关,则指令j与指令i之间数据相关。

其中第二点表明,数据相关具有传递性。数据相关是两条指令之间存在一个先读后写的相关链,这个相关链应该贯穿整个程序,是程序的内在特征,也就是说数据相关是程序相关性最本质的相关之一。但这种相关性是导致流水线暂停的原因之一,因为相关的两条指令是不能够重叠执行的。
相关性是程序的特性; 冲突是流水线结构的特性;相关性的存在只预示着存在有冲突的可能性
数据相关的重要性:
(1)确定指令的相关性,找到所有可能产生停顿的地方。预测冲突的可能性。
(2)确定必须严格遵守的数据计算顺序。
(3) 决定可被开发的并行性的上界。
2、名相关
指令使用的寄存器或者存储器称为名。如果两条指令使用的是相同的名,但是他们之间没有数据流,则称之为名相关。
指令j与指令i之间的名相关分为两种:
(1)反相关:指令i先执行,指令j写的是指令i读的名。反相关指令之间的执行顺序是保证的。反相关就是先读后写相关(WAR相关)。
(2)输出相关:指令i和指令j写的是同样的名。输出相关指令之间的执行顺序是不允许颠倒的。输出相关就是写后写相关。(WAW相关)。
解决方式:与数据相关比较,名相关之间的指令没有数据交换。如果一条指令中的名改变了,并不影响另外一条指令的执行,因此可以改变指令中操作数的名来消除名相关,这就是换名技术。对寄存器来说这就是寄存器换名技术。这个过程既可以用编译器静态完成,也可以通过硬件动态完成。
3、控制相关
控制相关是指由分支指令引起的相关,他需要根据分支指令执行的结果来确定后续指令执行的顺序。控制相关与分支成功或分支不成功两个基本程序块的执行有关,典型的程序结构是‘if-then’结构。
控制相关决定了指令执行的顺序。

if p1 {S1;
};
if p2 {S2;
}

其中S1就和p1控制相关,S2和p2控制相关,S与p1和p2都控制无关。
处理控制相关有以下两个原则:
(1)与控制相关的指令不能移动到分支指令之前,即控制相关的指令不能调度到分支指令控制范围之外。
(2)与控制无关的指令不能移动到分支指令之后,即控制无关的指令不能调度到分支指令控制范围之内。

循环展开(Unrolled Loop and Minimizes Stalls)
实现循环展开的关键是分析清楚代码之间的相关性,然后通过指令调度来消除相关。
详见习题。
动态分支预测
Branch History Table,
通过branch history table。 针对每条跳转指令,branch history table中都会有一条记录与其对应(准确地说,应该是与指令的地址低位相对应,至于是低多少位,则取决于table的大小)。记录的内容就是一个跳转的状态。目前常用两位来表达这个状态。
这种技术感觉对于某些经常跳转或者偶尔才跳转的指令的预测效果相当好。
这也大概是目前所有的计算机体系结构都会提到的一个图。

Correlated Branch Prediction,
在这种策略中,某条指令的跳转不是只由自己来决定的,而是由刚执行过的N条跳转指令的跳转情况来决定的。 这是由于在程序中某条指令跳转与否也与其他的跳转指令相关。所以会利用刚执行完的N条跳转指令来获取跳转信息。 这刚执行完的N条指令的跳转情况组成了一个查询的Key,这个Key值对应的内容就是跳转的状态。状态机同上。
两级预测器的一般表达形式为(m,n)预测器,其含义是根据全局最近的m个分支的行为,来从2^m个n位预测器中做出预测。
m个分支的行为一共有2^m种情况,根据具体情况选择与最近m个分支的行为对应的预测器,该预测器记录的是n位局部分支历史(n和m完全独立)

Tournament Predictor
这种预测技术就是结合以上两种方法,根据跳转指令的低位地址,再加上刚执行完指令的跳转情况来决定下次的跳转情况。它的效果也最好,也是Power5 和 Pentium4使用的技术。
分支目标缓冲
我们将分支成功的分支指令的地址和他的分支目标地址都放到一个缓冲区中保存起来,缓冲区以分支指令的地址作为标示;取指令阶段,所有指令地址都与保存的标示作比较,一旦相同,我们则认定该指令是分支指令。认定他转移成功,并将他的分支目标(下一条指令)的地址就是保存在缓冲区中的分支预测地址。这个缓冲区就是分支预测缓冲区。

动态调度
概念:在流水线中,通过硬件重新安排指令的执行顺序,来调整相关指令执行时的关系,减少处理器空转。
优势:
(1)它可以处理一些编译时未发现的相关。
(2)可以实现在一种流水线上编译的代码也可以在另一条流水线上有效地运行。
(3)简化了编译器。

Scoreboard 记分牌
Tomasulo
Speculation 前瞻执行
Tomasulo with ReOrder Buffer 再定序缓冲

超标量与超长指令字(多指令流出处理器)
超标量:每个时钟流出的指令数不定,它既可以通过编译器静态调度,又可以通过记分牌或者Tomasulo算法动态调度。
超长指令字:每个时钟周期流出的指令数是固定的,它们构成一条长指令,或说是一个混合指令包。这种处理器只能通过静态编译调度。
在理想条件下,超标量处理器将取出两条指令。第一条是整数指令,第二条是浮点数指令,并同时将他们流出。如果这种指令组合存在相关,则将他们流出。
静态超标量处理器将按序执行,而动态超标量处理器使用乱序执行。

超长指令字技术:
超长指令字采用独立的功能部件,但它并不是将多条指令流出到各个功能单元,而是将多条指令的操作组装成固定格式的指令包,形成一条特别长的指令,因此得名。
超长指令字的格式固定,处理过程简单,处理器所需硬件量比超标量处理器要少。

超标量处理器与超长指令字相比有两个优点:
1、超标量结构对程序员来说是透明的,因为处理器能检测下一条指令能否流出,从而不需要排列指令来满足指令流出。
2、即使没有经过编译器对超标量结构进行调度优化的代码或者旧的编译器生成的代码也能运行,但是效果会很差。想要获得好的效果需要使用动态超标量调度技术。

Superscalar VS VLIW:
Superscalar :具有更小的代码大小 ,以及对不同代的硬件的二进制兼容性较为突出
VLIW:简化了用于译码、发布指令的简化用的硬件;
无联锁检测硬件(通过编译器来检查);
更多寄存器,但简化了寄存器端口的硬件(使用了多个独立的寄存器文件)

计算机体系结构:Chapter 5 :ILP(指令级并行)相关推荐

  1. 计算机体系结构 第5章 指令级并行及其开发—硬件方法(3)

    文章目录 第5章 指令级并行及其开发-硬件方法 5.5 多指令流出技术 5.5.1 基础内容 5.5.1 基于静态调度的多流出技术 5.5.2 基于动态调度的多流出技术 5.5.3 超长指令字技术 5 ...

  2. 计算机结构体系ppt,计算机体系结构-浙江大学课件.ppt

    <计算机体系结构-浙江大学课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机体系结构-浙江大学课件.ppt>文档请在天天文库搜索. 1. ...

  3. 指令级并行--计算机体系结构

    参考书:<计算机体系结构量化研究方法> 作者:John L. Hennessy 一.基本概念 几乎所有处理器都使用流水线来重叠指令的执行过程,以提高性能.由于指令可以并行执行,所以指令之间 ...

  4. 【趋势】未来十年计算机体系结构的历史和趋势

    来源:机器之心 先分享我对这篇文章的总结,或者我得到的启发: 1.DSA (Domain-Specific Architectures,特定领域的体系结构) 将成为未来十年甚至更长时间,计算机体系结构 ...

  5. 流水线问题--计算机体系结构

    参考书:<计算机体系结构量化研究方法> 作者:John L. Hennessy 一. 基本概念 先理解几个基本概念: 流水线:是一种将多条指令重叠执行的实现技术.一条指令的执行需要多个操作 ...

  6. 计算机组成原理r型指令logisim实现_第一章 计算机体系结构

    需要掌握的内容: 存储程序计算机 计算机系统的多级层级结构 计算机体系结构 计算机组成 计算机实现 计算机体系结构.组成与实现三者的关系 存储程序计算机 透明性 Amdahl定律 CPU 性能公式 程 ...

  7. 计算机体系结构在线读,计算机体系结构new.ppt

    计算机体系结构new.ppt 第4章 指令级并行 Review: 基本流水线 流水线提高的是指令带宽(吞吐率),而不是单条指令的执行速度 相关限制了流水线性能的发挥 结构相关:需要更多的硬件资源 数据 ...

  8. 『译』计算机体系结构发展史(四)

    系列文章第四篇(对应M.5) 往期文章 『译』计算机体系结构发展史(一) 『译』计算机体系结构发展史(二) 『译』计算机体系结构发展史(三) M.5 The Development of Pipeli ...

  9. 计算机体系结构——名词解释

    计算机体系结构--名词解释 文章目录 计算机体系结构--名词解释 一.第一章 1.计算机系统结构,计算机组成,计算机实现 2.计算机系统结构分类法 ①Flynn分类法 ②冯氏分类法 ③Handler分 ...

最新文章

  1. 【机器学习入门】(4) 决策树算法理论:算法原理、信息熵、信息增益、预剪枝、后剪枝、算法选择
  2. DELL备份恢复系统的小工具 Dell DataSafe Local Backup
  3. guava cache简单学习笔记
  4. [Oracle]理解undo表空间
  5. python 打印表格边框_python设置表格边框的具体方法
  6. servlet获取相对路径 绝对路径
  7. 3 Convex functions
  8. 如何判断windows版本?
  9. 发那科机器人圆弧指令怎么用_发那科机器人的指令如何编辑
  10. VBA 收集 Word关键字批量处理-Excel版
  11. 太极发送卡片软件_QQxml卡片消息发送-防撤回等等安卓QQ插件Notified-支持太极框架 -发送QQ卡片消息...
  12. 微信小程序的封装和登录
  13. SQL语句简单增删改查
  14. 手机支付宝,微信的请求userAgent
  15. linux卸载飞行模式驱动,解决:Ubuntu飞行模式 使用硬件开关关闭
  16. 知识表示的方法(2)——框架表示法
  17. android 电容屏多点触控协议
  18. csgo 机器人模式_csgo怎么单机跟电脑打只有每队5人,怎么增加BOT
  19. java8和java9的对比
  20. 程序员能偷偷接私活的7大平台,老板:这下我全都知道了

热门文章

  1. 小学二年级计算机课游戏,小学二年级适合玩的课堂游戏
  2. 计算机终端机 大型游戏,云电脑让各种终端玩转大型游戏
  3. correl函数相关系数大小意义_在EXCEL中用“CORREL”函数求 两列的相关系数为什么是等于1?...
  4. 5个超好用的自媒体网站,免费用
  5. label 字体添加中划线和下划线
  6. 什么是MES系统?MES系统具备哪些优势?
  7. Recursive function
  8. 【06】Spring源码-分析篇-ApplicationContext
  9. 荷露叮咚wp建站系列视频课程.3WordPress功能菜单介绍
  10. C语言m++与++m