VLIW EPIC静态调度的指令级并行

合集下载

原题目:指令集体系结构的分类与比较

原题目:指令集体系结构的分类与比较

原题目:指令集体系结构的分类与比较引言指令集体系结构指的是计算机中用于执行指令的硬件和软件的组合方式。

不同的指令集体系结构对计算机程序的编写、执行和性能都有着不同的影响。

本文将对指令集体系结构进行分类,并对各种指令集体系结构进行比较。

指令集体系结构的分类常见的指令集体系结构主要有以下几类:1. 精简指令集(RISC)体系结构:RISC体系结构以简化指令为特点,将指令集精简为少量、固定长度的指令。

它注重简化指令的执行时间,减少指令的执行周期,以提高指令的执行效率。

常见的RISC体系结构有ARM和PowerPC等。

2. 复杂指令集(CISC)体系结构:CISC体系结构以实现复杂指令为特点,将指令集设计为丰富多样、灵活可变的指令。

它注重减少指令数量,提高编写程序的便利性,但由于指令复杂,执行时间会相对较长。

常见的CISC体系结构有x86和MIPS等。

3. 超长指令字(VLIW)体系结构:VLIW体系结构在指令流水线的基础上,通过编译器将多个指令捆绑为一条宽指令,以提高指令级并行度。

它注重编译器的优化和指令的同时执行,以提高程序的性能。

常见的VLIW体系结构有Itanium和EPIC等。

4. 特定领域指令集(DSP)体系结构:DSP体系结构主要针对数字信号处理领域的需求,将指令集设计为高度优化的专用指令,以提高数字信号处理的效率。

常见的DSP体系结构有TI TMS320和Motorola DSP等。

指令集体系结构的比较不同的指令集体系结构在性能、功耗、编程模型、兼容性等方面存在差异。

1. 性能:RISC体系结构在指令执行速度方面相对较快,适合于需要较高计算能力的应用;CISC体系结构则在编写程序的便利性和指令数量方面相对优势,适合于需要灵活指令和多功能性的应用。

2. 功耗:RISC体系结构通常具有较低的功耗,适合于功耗敏感的移动设备;CISC体系结构由于指令复杂,功耗相对较高,适合于高性能计算机系统。

3. 编程模型:RISC体系结构通常采用Load/Store指令模型,需要通过专门的Load/Store指令对寄存器和内存进行数据传输;CISC体系结构采用的是内存-寄存器指令模型,可以直接对内存进行操作。

汇编_并行计算(指令级)

汇编_并行计算(指令级)


编译器完成这种指令调度的能力受限于 两个特性:

程序固有的指令级并行性; 流水线功能部件的执行延迟。
第四章 指令级并行
循环展开调度基本方法 – 注意事项

循环展开和指令调度时要注意以下几个方面:

保证正确性。
在循环展开和调度过程中尤其要注意两个地方的正 确性:循环控制,操作数偏移量的修改。

load/store 操作
浮点操作 store 缓冲器 地址部件 load 缓冲器 6 5 4 3 3 2 2 1 1 数据 存储部件 地址 标识 浮点加法器 操作数总线
操作总线
保 留 站
2 1 标识 浮点乘法器
公共数据总线(CDB)
第四章 指令级并行
指令的动态调度 – Tomasulo算法基本思想
IS
检测结构冲突
RO
检测数据冲突
第四章 指令级并行 指令的动态调度

简单的5段流水线中,是不会发生读后写冲突 和写后写冲突的。但乱序执行就使得它们可能 发生了。

例如,考虑下面的代码

存在反相关
DIV.D SUB.D ADD.D
F10, F0, F2 F10, F4, F6 F6, F8, F14
异常处理比较复杂
(精确异常处理、不精确异常处理)

ห้องสมุดไป่ตู้
动态调度要保持正确的异常行为

只有那些在程序严格按程序顺序执行时会发生的异 常,才能真正发生。 保持正确的异常行为:对于一条会产生异常的指令 来说,只有当处理机确切地知道该指令将被执行后 ,才允许它产生异常。

第四章 指令级并行
指令的动态调度 – Tomasulo算法基本思想

计算机体系结构第四章-1

计算机体系结构第四章-1
阻。
4.2 指令的动态调度
➢ 在前面的基本流水线中:指令在译码阶段判断相关关 系。
ID
检测结构冲突 检测数据冲突
• 一旦一条指令受阻,其后的指令都将停顿。
4.2 指令的动态调度
动态调度的基本思想是前面指令的阻塞不影响后面的 指令的继续前进。具体做法是流水线的译码阶段再分为 两个阶段:
流出(Issue, IS):指令译码,并检查结构冲突。(inorder issue) 读操作数(Read Operands, RO):等待数据冲突消 失(如果有冲突),然后读操作数。(out of order execution)
前提:在乱序流动的流水线中。
不足:可能会产生新的WAR或WAW冲突。
(3)控制冲突:
• 预测分支失败 • 预测分支成功
(编译器)
• 延迟转移技术
静态调度
4.2 指令的动态调度
静态调度
➢ 依靠编译器对代码进行静态调度,以减少相关和冲突。 ➢ 它不是在程序执行的过程中,而是在编译期间进行代码
调度和优化。 ➢ 通过把相关的指令拉开距离来减少可能产生的停顿。
即原来程序中是怎么发生的,改变执行顺序后还是怎 么发生。 弱化为:指令执行顺序的改变不能导致程序中发生新 的异常。
4.2 指令的动态调度
4.2 指令的动态调度
关键知识回顾: 1. 相关 相关是指两条指令之间存在某种依赖关系,是程序固有的一种
属性。 相关包括:名相关,数据相关,控制相关。 2. 冲突( HAZARDS,也称为冒险) 冲突是指由于相关的存在,使得指令流中的下一条指令不能在
指定的时钟周期执行。 具体一次相关是否会导致实际冲突的发生以及该冲突会带来多
长的停顿,则是流水线的属性。 流水线冲突包括:结构冲突,数据冲突,控制冲突。

第5章 指令级并行及其开发——硬件方法.

第5章 指令级并行及其开发——硬件方法.


5/137
5.1 指令级并行的概念
例如,考虑下述语句:
for (i=1; i<=500; i=i+1) a[i]=a[i]+s;

每一次循环都可以与其它的循环重叠并行执行; 在每一次循环的内部,却没有任何的并行性。
5. 最基本的开发循环级并行的技术
循环展开(loop unrolling)技术 采用向量指令和向量数据表示
开发ILP的途径有两种

资源重复,重复设置多个处理部件,让它们同时执行 相邻或相近的多条指令; 采用流水线技术,使指令重叠并行执行。

本章研究:如何利用各种技术来开发更多的指令
级并行 (硬件的方法)
▲ 3/137
5.1 指令级并行的概念
1. 开发ILP的方法可以分为两大类
主要基于硬件的动态开发方法
第5章 指令级并行及其开发——硬件方法

1/137
5.1 5.2
指令级并行的概念 相关与指令级并行
5.3
5.4 5.5
指令的动态调度
动态分支预测技术 多指令流出技术

2/137
指令级并行:指指令之间存在的一种并行性,利
用它,计算机可以并行执行两条或两条以上的指 令。
(ILP:Instruction-Level Parallelism)
只有在可能会导致错误的情况下,才保持程序顺序。
▲ 8/137
5.2 相关与指令级并行
4. 控制相关并不是一个必须严格保持的关键属性。 5. 对于正确地执行程序来说,必须保持的最关键的两个 属性是:数据流和异常行为。
保持异常行为是指:无论怎么改变指令的执行顺
序,都不能改变程序中异常的发生情况。

12_13_指令级并行技术

12_13_指令级并行技术

• 记分牌结构
–指令状态表——指示出指令处在4个阶段中的哪一个 –功能部件状态表——记录功能部件状态 –寄存器结果状态表——记录每个部件所有的目的寄存 器
19
• 例:一个具有5个功能部件的CPU,包括一个整数部件 (Integer)、两个乘法部件(Mult1, Mult2)、一个加法部 件(Add)和一个除法部件(Divide)。假定以下指令序列: LD LD MULTD SUBD DIVD ADDD F6, F2, F0, F8, F10, F6, 34(R2) 45(R3) F2, F4 F6, F2 F0, F6 F8, F2
整数部分 浮点加
寄存器堆
指令
RF
IF
ID
浮点乘 浮点除
控制/状态
控制/状态
记录控制器 EX MEM WB
17
集中式动态调度
1.记分牌方法
• 在动态调度的流水线中,所有指令在发射阶段都 是按序发射的,但读操作数阶段有可能会被暂停 或绕过暂停指令,从而可以乱序执行。记分牌机 制正是在①资源部件充足、②没有数据相关存在 的前提下,允许指令乱序执行的一种技术。 每条指令都要从记分牌经过,并在这里建立相应 的数据相关结构,这一步对应于流水线中ID阶段 的发射部分,也就是指令发射阶段。然后由记分 牌部件决定何时可取得操作数及执行该指令,若 判断该指令当前还不能立即执行,那么,它会监 视硬件上的每一个变化,并决定该指令何时执行。
没有并行性
• 衡量指令级并行性的一个指标是CPI,它定义为流 水线中执行一条指令所需的机器周期数。例如 RISC处理机中,大多数指令的CPI=1,但有些复 杂指令需要几个机器周期才能完成,它们的 CPI> 1。显然,要提高指令级并行性,追求CPI<1自然 成为人们努力的目标。

计算机体系结构第四章-1

计算机体系结构第四章-1

静态指令调度
动态指令调度
相关是程序固有的 一种属性,它反映 了程序中指令之间 的相互依赖关系。 不保持“程序顺序” 相关是否会导致实际冲 突的发生以及该冲突会 带来多长的停顿,则是 流水线的属性。
4.1 指令级并行的概念
3. 对于正确地执行程序来说,必须保持的最关键的两个 属性是:数据流和异常行为。

如果操作数还没有计算出来,则在该保留站中记录 将产生这个操作数的保留站的标识。

浮点加法器有3个保留站:ADD1,ADD2,ADD3
浮点乘法器有2个保留站:MULT1,MULT2
每个保留站都有一个标识字段,唯一地标识了该保留站。

基于Tomasulo算法的MIPS处理器浮点部件的基本结构
Qi
D C B A F8 F6 F4 F2 F0
MUL FO,F2,F4 ADD F2,F0,F6 SUB F6,F8,F4
d/store 操作
浮点操作 操作数总线 load 缓冲器 6 5 4 3 ADD3 3 2 ADD2 2 1 1
ADD1
地址部件
操作总线
保 留 站
2 1 标识
MUL2 MUL1
浮点操作 操作数总线 load 缓冲器 6 5 4 3 ADD3 3 2 ADD2 2 1 1
ADD1
MUL1
地址部件
操作总线
保 留 站
地址
标识 浮点加法器
2 1 MUL 标识
MUL2
A,
B
MUL1
浮点乘法器 公共数据总线(CDB)
从指令部件来
指 令 队 列
SUB F6,F8,F4
浮点寄存器 FP
2.


ILP开发的技术

综述:ILP开发的技术前言:自1985年以来,所有的处理器都采用流水线方式使指令的执行可以重叠进行以提高性能。

由于可以将指令间的关系看做是并行的,因此将指令间的这种潜在重叠称为指令级并行。

于是可以提高对并行的开发能力的相关技术越来越受到人们的关注。

开发指令级并行的方法大致可以分为两类,一种方法是依赖硬件,动态地发现和开发指令级并行;另一种方法是依赖与软件技术,在编译阶段静态地发现。

本文中将着重讨论一系列技术,这些技术都是用来提高指令序列的并行度和扩展流水线的。

1.静态编译技术基本流水线调度:要保持一条流水线不停顿,就要去发现可以流水重叠的不想关的指令序列,并加以充分利用,为避免流水线的停顿,就要事先找出指令代码中的相关指令并将它们分离,使其相隔的时钟周期能正好等于原来指令在流水执行时的时延,编译器进行这类调度的能力既依赖与程序的指令级并行度,也依赖与流水线中功能单元的时延循环展开:为了增加有效操作对转移和开销指令的比重,循环展开可以通过多次复制循环体和调整循环中止码来实现。

循环展开因为它可以消除转移,所以它也可以用来改进调度。

并且循环展开这种转换方法对于各种处理器,从简单流水线到超标量多发射结构等等都适用。

但是这种转换也确实增加了现代编译器的复杂度。

预测技术:由于需要通过转移冒险和停顿来保持控制相关,因此转移会降低流水线的性能,上文提到的循环展开是减小转移冒险的方法之一,另外还可以通过转移预测技术来减小转移引起的性能损耗。

而且想要开发指令级并行,转移预测的准确率是个关键问题。

可以通过缓存的容量,增加每次预测所使用的预测方案的准确率。

2.动态调度机制一个简单的静态调度流水线负责取指令并将它发射出去,除非流水线中的指令与取到的指令之间存在数据相关,而且无法通过旁路技术和直接通路技术避免数据相关,如果有无法避免的数据相关,那么检测冒险的硬件将从使用相关结果的指令开始暂停流水线,停止取指令和发射指令的工作,直到相关被清除,而动态调度技术就是通过硬件对指令执行顺序进行重组,在保持数据流和异常行为的同时减少停顿,它可以处理一些在编译阶段无法预见的相关情况,同时它简化了编译器的设计,但是动态调度的这些优势是以硬件复杂度的显著增加为代价的。

8--第4章-1-指令级并行-计算机系统结构


Loop:
LD (空转) ADDD (空转) (空转) SD LD (空转) ADDD (空转) (空转) SD LD (空转)
ADDD (空转) (空转) SD LD (空转) ADDD (空转) (空转) SD SUBI (空转) BNEZ (空转)
19
结果分析:


这个循环每遍共使用了28个时钟周期
第四章 指令级并行及限制
4.1 指令级并行的概念 4.2 指令的动态调度 4.3 转移预测技术 4.4 多发射技术 4.5 指令级并行的支持与限制 4.6 Intel Pentium 4 实例分析
1
4.1 指令级并行的概念
几乎所有的处理机都利用流水线来使指令重叠并行执 行,以达到提高性能的目的。这种指令之间存在的潜在并 行性称为指令级并行。(ILP:Instruction-Level Parallelism) 在流水线模型机中,如果指令相关可以通过专用数据通 路消除,则流水线没有停顿,指令级并行得以充分发挥。 但是,不能消除的相关必然会导致流水线的停顿,使流水 线的利用率下降。 例如,第3章介绍涉及load指令的内部前推技术时只能强 制暂停流水线的执行:

一个元素的操作时间从10个时钟周期减少到6个 5个周期是有指令执行的,1个空转周期。
仔细分析发现,其中有效指令LD、ADDD和SD占用了3个时钟周期,而其 余指令和停顿是为了控制循环和解决数据相关。因此,减少循环控制开销的 一种有效方法就是运用循环展开技术。
16
循环展开技术:利用多次复制循环体,并相应调整展开后
对于下面的源代码,转换成MIPS汇编语言,在不进行 指令调度和进行指令调度两种情况下,分析代码一次循环 的执行时间。 for (i=1; i<=1000; i++)

面向VLIW处理器的分支调度优化算法


n eiga d piain , 0 2 4 ( 1 :14 . ern n l t s2 1 , 8 2 ) 4 -4 Ap c o
Ab t a t s r c :Br n h s h d l g l n e f c i e i s u t n s h d l g t c n q e f r VLI  ̄ ma h n s t l i a e a c c e u i S a fe t n t c i c e u i e h i u o n v r o n V c i e o ei n t m b a c e a t. p i z d b a c - ea — l t c e u i g a g r h n r d c d t e e ae a fe t ei s c r n h p n l An o t y mi e r n h- l y- o h d l l o i m i i to u e g n r t n e ci t - d s s n t s o v n r - u t n s h d l o o t l x e s ea p i ai n . s d o r g a d p n e c r p , h l p s d ag r h u l s i c e u e f rc n r tn i p l t s Ba e n p o r m e e d n y g a h t ep ’ o e l o i o o e v c o o t m bi d a c s mo e o e au t m o g c n i ae i s c i n q e e i h a e s lc e r m h a o to l c , n o t d lt v l a e a n a d d t n t t u u swh c r e e td fo t e s me c n r l o k a d u r o b ma e n o t a c o c o r n h d ly so . h x e i n a e u t h w h t t i l o i m r v st ep r k sa p i l h i e f r a c e a l t T e e p rme tl s l s o t a , h sa g rt i m b r s h mp o e h e -

指令级并行


5
采用的基本技术
2020/7/10
计算机体系结构
6
本章遵循的指令延时
产生结果的指令 使用结果的指令 所需延时
FP ALU op
Another FP ALU op
3
FP ALU op
Store double
2
Load double
FP ALU op
1
Load double
Store double
0
第5章 指令级并行
• 指令集并行的基本概念及挑战 • 软件方法挖掘指令集并行
• 基本块内的指令集并行
• 硬件方法挖掘指令集并行
• Scoreboard • Tomasulo
• 跨越基本块的指令集并行 • 基于硬件的推测执行 • 以多发射和静态调度来挖掘指令集并行 • 以动态调度、多发射和推测执行来挖掘指令集并行
单线程(逻辑上)中并行处理多个数据 (SIMD/Vector execution) 一个程序计数器, 多个执行部件
• 指令级并行
针对单一指令流,多个执行部件并行执行不同的指令
2020/7/10
计算机体系结构
3
Review: 基本流水线
• 流水线提高的是指令带宽(吞吐率),而不是单条指令 的执行速度
• 相关限制了流水线性能的发挥
• 结构相关:需要更多的硬件资源 • 数据相关:需要定向,编译器调度 • 控制相关:尽早检测条件,计算目标地址,延迟转移,预测
• 增加流水线的级数会增加相关产生的可能性
• 异常,浮点运算使得流水线控制更加复杂
• 编译器可降低数据相关和控制相关的开销
• Load 延迟槽 • Branch 延迟槽 • Branch预测
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档