体系结构复习2——指令级并行(分支预測和VLIW)

第五章内容较多,接体系结构复习1


5.4 基于硬件猜測的指令级并行

动态分支预測是在程序运行时。依据转移的历史信息等动态确定预測分支方向。主要方法有:

  • 基于BPB(Branch Prediction Buffer)和BHT(Branch History Table)的方法
  • 高性能指令发送(High Performance Instruction Delivery)

5.4.1 基于BPB和BHT的方法

(1)1-bit BHT

分支指令PC的低位索引1位记录上一次转移是否成功(不是预測是否正确),不做地址检查

1-bit BHT有无法避免的问题,在一个循环中会造成至少两次预測错误:

  • 最后一次循环,前面均循环成功,但这次须要跳出循环即须要预測失败
  • 首次循环,前面最后一次循环失败。但这次须要预測成功

(2)2-bit BHT

用两位表示预測,设1表示分支成功、0表示分支失败,那么有例如以下状态转移表:

状态 当前失败 当前成功 预測
00 00 01 预測失败
01 10 11 预測失败
10 00 01 预測成功
11 10 11 预測成功

看FSM比較好理解一点:

把2位预測器想像成一个黑盒(仅仅知道是基于两次历史分支记录),运行分支语句是查看该黑盒是“预測运行”还是“预測不运行”(即和当前分支情况无关的预測),然后依据当前分支运行与否改动状态

BHT性能分析:

  • 会发生预測错误:仅仅是用PC低位查找。可能会找错历史纪录
  • 经分析当表项达到一定数量以后,通过添加表项提高准确率差点儿没有效果

(3)相关分支预測器

相关分支预測把其它分支的历史行为也纳入考虑,相关分支预測能够捕捉到邻近的分支之间的相关性,又叫两级预測

两级预測器的一般表达形式为(m,n)预測器,其含义是依据全局近期的m个分支的行为,来从2^m个n位预測器中做出预測

m个分支的行为一共同拥有2^m种情况,依据详细情况选择与近期m个分支的行为相应的预測器,该预測器记录的是n位局部分支历史(n和m全然独立)

5.4.2 动态调度预測——ROB Tomasulo

扩展Tomasulo支持预測,须要用旁路的思想去运行不能确定的指令,旁路运行仅仅是运行指令并保存它的中间结果,但不更新不论什么寄存器或存储器

当一条指令不再具有不确定性时(也就是确定运行时)。才更新寄存器或存储器的值。把这一操作叫做提交(Commit)

不确定指令的旁路运行的时刻可能快于其准备好提交的时刻,因此须要用一组硬件缓冲区来保存已经完毕运行但还没有提交的指令结果,称之为重排缓冲区(Reorder Buffer,ROB),ROB保证指令循序提交

ROB有四个域:指令类型、运行状态、目的地址和值,ROB能够向RS一样作为操作数据源。当指令运行完毕后用ROB编号取代RS中的值

Tomasulo添加一个Commit阶段。由下面四阶段构成ROB Tomasulo

阶段 内容
Issue发射 假设相应RS空暇且ROB中有空插槽(无结构相关)则发射指令。假设寄存器或ROB中已经有操作数,则发送到保留站。为结果分配的ROB项目编号也发送给RS,以便标记CDB上广播的结果
Execute运行 两操作数就绪后RS開始运行,若没准备好随时监听CDB以获取所需的操作数(避免RAW)
Write写结果 CDB传送全部结果给等待结果的RS和ROB。并改动Register result status
Commit提交 依照ROB表中顺序。假设分支结果已出是分支成功。则处理器用ROB结果更新寄存器或存储器,并在ROB表中删除该指令。假设分支结果已出是分支失败,则刷新ROB表

注意:ROB Tomasulo在Register Status里记录的寄存器值也是ROB编号。除非Commit提交更新


5.6 多发射&静态调度的指令级并行

假设想要理想CPI<1,则须要同意在一个时钟周期内发射多条指令,多发射处理器主要有下面三类:

  • VLIW超长指令字处理器:
  • 静态调度超标量处理器
  • 动态调度超标量处理器

Superscalar DLX同意一个周期内发送一条fp指令和一条其它指令,假设指令间整数操作和浮点操作易于区分组合(无不论什么相关)则能够达到理想CPI=0.5。但不是同一时候发射越多指令就越好,多发射给译码和发射带来不少困难

5.6.1 VLIW的循环展开

VLIW使用多个独立运算单元。书上假设有:1个整数/分支单元、2个浮点单元和2个存储器引用单元。但VLIW不是想单元发送多条独立指令,而是将多个操作包装在一条很长的长指令中或发送包中;静态调度时能够不用在意VLIW实现方式,而是直接用多发射的思想来考虑

把上面的循环:

Loop:   LD      F0,0(R1)
        ADDD    F4,F0,F2
        SD      0(R1),F4
        DADDI   R1,R1,#-8
        BNEZ    R1,Loop

用VLIW做8段循环展开例如以下:

存储器引用1      存储器引用2      浮点运算1           浮点运算2       整数运算/分支
LD F0,0(R1)     LD F6,-8(R1)
LD F10,-16(R1)  LD F14,-24(R1)
LD F18,-32(R1)  LD F22,-40(R1)  ADDD F4,F0,F2   ADDD F8,F0,F2
LD F26,-48(R1)  LD F30,-56(R1)  ADDD F12,F0,F2  ADDD F16,F0,F2
                                ADDD F20,F0,F2  ADDD F24,F0,F2
SD 0(R1),F4     SD -8(R1),F8    ADDD F28,F0,F2  ADDD F32,F0,F2
SD -16(R1),F12  SD -24(R1),F16                              DADDI R1,R1,#-64
SD 32(R1),F20   SD 24(R1),F24
SD 16(R1),F28   SD 8(R1),F32                                BNEZ R1,Loop

(不好排版)9周期完毕8段循环,一段循环仅仅须要1.125周期!


5.7 多发射&动态调度的指令级并行

多发射动态调度略,基本思路是扩展Tomasulo让其有多个发射控制器(浮点和整数),最基本的思想是保证指令序的前提下。用队列检測的方法防止三种相关


时间: 2024-10-25 12:49:52

体系结构复习2——指令级并行(分支预測和VLIW)的相关文章

体系结构复习1——指令级并行(循环展开和Tomasulo算法)

体系结构复习 CH5 指令级并行 5.1 指令级并行概念 5.1.1 指令级并行 指令级并行(ILP)指通过通过流水线等技术实现多条指令同时并行执行的并行技术 实现ILP主要的方法有: 依靠硬件动态发现和开发并行 依靠软件在编译时静态发现并行 5.1.2 指令间相关性 指令间的相关性限制了指令级的并行度,相关性主要分为(真)数据相关.名称相关和控制相关 (1)数据相关 指令i位于指令j的前面,下面两种情况下称指令j数据相关于指令i: 指令i生成的结果可能会被指令j用到 指令j数据相关于指令k,而

体系结构复习2——指令级并行(分支预测和VLIW)

第五章内容较多,接体系结构复习1 5.4 基于硬件推测的指令级并行 动态分支预测是在程序运行时,根据转移的历史信息等动态确定预测分支方向,主要方法有: 基于BPB(Branch Prediction Buffer)和BHT(Branch History Table)的方法 高性能指令发送(High Performance Instruction Delivery) 5.4.1 基于BPB和BHT的方法 (1)1-bit BHT 分支指令PC的低位索引1位记录上一次转移是否成功(不是预测是否正确)

使用excel进行数据挖掘(6)---- 预測

在配置环境后,能够使用excel进行数据挖掘. 环境配置问题可參阅: http://blog.csdn.net/xinxing__8185/article/details/46445435 例子 DMAddins_SampleData.xlsx 文件下载地址:http://download.csdn.net/detail/xinxing__8185/8780481 在数据表中,选择table analysis tools sample表.该表中是用户的信息统计,包含婚姻状况,性别.收入.子女,教

【Energy Forecasting】能源预測的发展和展望

说明 本文的内容来自Tao Hong博士的Energy Forecasting: Past, Present and Future一文的翻译和整理. 引入 能源预測包括了电力行业中有关预測的广泛的内容,比方短期负荷预測.长期负荷预測.局部负荷预測.电价预測.需求响应预測还有可再生能源发电预測等. 因为电力存储的限制和社会对于电力的需求造成了几个能源预測的有趣性质,比方复杂的季节性模式.24/7的电网数据收集.对精确度的需求等. 高级的能源预測依赖于严格的測试数据集.对于商业需求的理解,从统计学.

基于SVM的数据分类预測——意大利葡萄酒种类识别

update:把程序源代码和数据集也附上http://download.csdn.net/detail/zjccoder/8832699 2015.6.24 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- w

体系结构复习4——线程级并行

体系结构复习 CH7 线程级并行 7.1 多处理器与线程级并行 7.1.1 多处理器体系结构 线程级并行是多处理器支持多个线程同时并行执行,多处理器体系结构大致分成两种: 对称共享存储器多处理器(SMP):又叫集中式共享存储器体系结构,核心数目较小并共享一个集中式的存储器,所有处理器能够平等地访问它(又称为UMA,一致存储器访问):SMP的存储结构大致分成三层:共享主存.共享缓存和专用缓存,本章最重要的讨论即是专用缓存和共享存储之间的一致性问题. 分布式共享存储(DSM):多处理采用物理分布式存

体系结构复习3——数据级并行

体系结构复习 CH6 数据级并行 6.1 数据级并行DLP和SIMD 数据级并行(Data Level Parallel,DLP)是指处理器能够同时处理多条数据,属于SIMD模型,即单指令流多数据流模型 继续挖掘传统ILP的缺陷: 提高流水线时钟频率可能导致CPI增加 每个时钟周期很难预取和译码多条指令 大型科学计算.媒体流处理局部性较差,Cache命中率低 并且SIMD模型有以下优点: SIMD可有效挖掘DLP,如矩阵运算.图像声音等多媒体数据处理 SIMD比MIMD更节能,对于一组数据相同操

【天池竞赛系列】资金流入流出预測思路

赛题地址:http://tianchi.aliyun.com/competition/information.htm?spm=5176.100067.5678.2.VZW16k&raceId=3 登录就可以下载数据 题目一句话:依据13年7月到14年8月的申购赎回数据预測14年9月每一天的申购赎回数据. 算法问题:此题能够使用线性回归和时间序列预測,仅仅要特征好效果都还能够.我们使用的是R以下的随机森林+LM  .决赛仅仅有4次提交机会,第一次我们26名,后面每天都降,这些火箭简直太可怕了,最后

吉首大学_编译原理实验题_基于预測方法的语法分析程序的设计【通过代码】

一.实验要求 实验二 基于预測方法的语法分析程序的设计 一.实验目的 了解预測分析器的基本构成及用自顶向下的预測法对表达式进行语法分析的方法,掌握预測语法分析程序的手工构造方法. 二.实验内容 1.了解编译程序的基于预測方法的语法分析过程. 2.依据预測分析原理设计一个基于预測方法的语法分析程序. 三.实验要求 对给定文法G[S]: S->AT       A->BU     T->+AT|$      U->*BU|$    B->(S)|m 当中,$表示空串. 1.推断上