文档库 最新最全的文档下载
当前位置:文档库 › 指令流水线

指令流水线

指令流水线
指令流水线

第七章指令流水线

2. 简单回答下列问题。(参考答案略)

(1)流水线方式下,一条指令的执行时间缩短了还是加长了?程序的执行时间缩短了还是加长了?为什么?

(2)具有什么特征的指令集易于实现指令流水线?

(3)流水线处理器中时钟周期如何确定?单条流水线处理器的CPI为多少?每个时钟周期一定有一条指令完成吗?为什么?

(4)流水线处理器的控制器实现方式更类似于单周期控制器还是多周期控制器?

(5)为什么要在各流水段之间加寄存器?各流水段寄存器的宽度是否都一样?为什么?

(6)你能列出哪几种流水线被阻塞的情况?你知道硬件和软件是如何处理它们的吗?

(7)超流水线和多发射流水线的主要区别是什么?

(8)静态多发射流水线和动态多发射流水线的主要区别是什么?

(9)为什么说Pentium 4是“CISC壳、RISC核”的体系结构?

3. 假定在一个五级流水线(如P.205图7.1所示)处理器中,各主要功能单元的操作时间为:

存储单元:200ps;ALU和加法器:150ps;寄存器堆读口或写口:50ps。若执行阶段EX 所用的ALU操作时间缩短20%,则能否加快流水线执行速度?如果能的话,能加快多少?

如果不能的话,为什么?若ALU操作时间增加20%,对流水线的性能有何影响?若ALU 操作时间增加40%,对流水线的性能有何影响?

参考答案:

a. ALU操作时间缩短20%不能加快流水线指令速度。因为存储单元的时间为200ps,所

以流水线的时钟周期不会因为ALU操作时间的缩短而变短。

b. ALU操作时间延长20%时,变为180ps,比200ps小,对流水线性能没有影响;

c. ALU操作时间延长40%时,变为210ps,比200ps大,所以,流水线的时钟周期将变

为210,其效率降低了(210-200)/200=5%。

4. 假定某计算机工程师想设计一个新CPU,一个典型程序的核心模块有一百万条指令,每条

指令执行时间为100ps。

(1)在非流水线处理器上执行该程序需要花多长时间?

(2)若新CPU是一个20级流水线处理器,执行上述同样的程序,理想情况下,它比非流水线处理器快多少?

(3)实际流水线并不是理想的,流水段间数据传送会有额外开销。这些开销是否会影响指令执行时间(Instruction latency)和指令吞吐率(Instruction throughput)?

参考答案:

(1)非流水线处理器上执行该程序的时间为:100psx106=100μs.

(2)若在一个20级流水线的处理器上执行,理想情况下,每个时钟周期为:100/20=5ps,

? 156 ?

所以,程序执行时间为5 x106=5μs. 快100/5=20倍。

(3)流水线段之间数据的传递产生的额外开销,使得一条指令的执行时间被延长,即影响 Instruction latency;同时也拉长了每个流水段的执行时间,即影响 Instruction throughput。

5. 假定最复杂的一条指令所用的组合逻辑分成6块,依次为A~F,其延迟分别为80ps、30ps、

60ps、50ps、70ps、10ps。在这些组合逻辑块之间插入必要的流水段寄存器就可实现相应的指令流水线,寄存器延迟为20ps。理想情况下,以下各种方式所得到的时钟周期、指令吞吐率和指令执行时间各是多少?应该在哪里插入流水线寄存器?

(1)插入一个流水段寄存器,得到一个两级流水线

(2)插入两个流水段寄存器,得到一个三级流水线

(3)插入三个流水段寄存器,得到一个四级流水线

(4)吞吐量最大的流水线

参考答案:

(1)两级流水线的平衡点在C和D之间,其前面一个流水段的组合逻辑延时为80+30+60=170ps,后面一个流水段的组合逻辑延时为50+70+10=130ps。这样每

个流水段都以最长延时调整为170+20=190ps,故时钟周期为190ps,指令吞吐率

为1/190ps=5.26GOPS,每条指令的执行时间为2x190=380ps。

(2)两个流水段寄存器分别插在B和C、D和E之间,这样第一个流水段的组合逻辑延时为80+30=110ps,中间第二段的时延为60+50=110ps,最后一个段延时为

70+10=80ps。这样每个流水段都以最长延时调整为110+20=130ps,故时钟周期为

130ps,指令吞吐率为1/130ps=7.69GOPS,每条指令的执行时间为3x130=390ps。

(3)三个流水段寄存器分别插在A和B、C和D、D和E之间,这样第一个流水段的组合逻辑延时为80ps,第二段时延为30+60=90ps,第三段时延为50ps,最后一段

延时为70+10=80ps。这样每个流水段都以最长延时调整为90+20=110ps,故时钟

周期为110ps,指令吞吐率为1/110ps=9.09GOPS,每条指令的执行时间为

4x110=440ps。

(4)因为所有组合逻辑块中最长延时为80ps,所以,达到最大可能吞吐率的划分应该是以一个流水段延时为80ps+20ps来进行,因此,至少按五段来划分,分别把流水

段寄存器插在A和B、B和C、C和D、D和E之间,这样第一段的组合逻辑延时

为80ps,第二段为30ps,第三段为60ps,第四段为50ps,最后一段为70+10=80ps。

这样每个流水段都以最长延时调整为80+20=100ps,故时钟周期为100ps,指令吞

吐率为1/100ps=10GOPS,每条指令的执行时间为5x100=500ps。

6. 以下指令序列中,哪些指令对发生数据相关?假定采用“取指、译码/取数、执行、访存、

写回”五段流水线方式,那么不用“转发”技术的话,需要在发生数据相关的指令前加入

? 157 ?

? 158 ?

几条nop 指令才能使这段程序避免数据冒险?如果采用“转发”是否可以完全解决数据冒险?不行的话,需要在发生数据相关的指令前加入几条nop 指令才能使这段程序不发生数据冒险?

add $s3, $s1, $s0

sub $t2, $s0, $s3

lw $t1, 0($t2)

add $t1, $t1, $t2

参考答案:

发生数据相关的有:第1和2间关于$s3、第2和3间关于$t2、第2和4间关于$t2、第3和4间关于$t1。

不进行“转发”处理的话,需要分别在第2、3、4条指令前加三条nop 指令才能避免数据冒险。而通过“转发”可以避免1和2、2和3、2和4间的数据相关;但第3和4间是load-use 数据相关,所以无法用“转发”消除冒险,因此,需在第4条指令前加入一条nop 指令。

7. 在一个采用“取指、译码/取数、执行、访存、写回”的五段流水线中,若检测结果是否

为“零”的操作在执行阶段进行,则分支延迟损失时间片(即分支延迟槽)为多少?以下一段指令序列中,哪些指令执行时会发生流水线阻塞?各需要阻塞几个时钟周期? loop: add $t1, $s3, $s3

add $t1, $t1, $t1

add $t1, $t1, $s6

lw $t0, 0($t1)

bne $t0, $s5, Exit

add $s3, $s3, $s4

j Loop

Exit:

参考答案:

若检测操作在执行阶段进行,则分支延迟损失时间片(即分支延迟槽)为2。

bne 指令执行时会发生流水线阻塞,阻塞2个时钟周期。j 指令如果在译码阶段就根据译码结果计算跳转目标地址,那么j 指令会阻塞1个时钟周期,若在执行阶段计算,则要阻塞2个时钟周期。

8. 假定有一个程序共1000条指令,其指令序列为“lw, add, lw, add, …”。add 指令仅依赖它前面的lw 指令,而lw 指令也仅依赖它前面的add 指令。

(1)在带转发的五段流水线中执行该程序,其CPI 为多少?

(2)在不带转发的五段流水线中执行该程序,其CPI 为多少?

参考答案:

(1)因为lw指令和add指令之间存在一个load- use数据冒险,所以每个lw指令和add指令之间要有一次流水线阻塞。而add指令和lw指令之间的数据冒险可通过数据转发解决。即:CPI为1.5

(2)如果没有转发,而寄存器写口和寄存器读口分别在一个时钟周期的前、后半个周期内工作,则在每条lw指令和add指令之间将会有两个阻塞,这样每条指令相当于都要有三个时钟才能完成。即:CPI为3

9. 假定在一个带转发功能的五段流水线中执行以下程序段,则可以怎样调整以下指令序列使

其性能达到最好?

lw $2, 100($6)

add $2, $2, $3

lw $3, 200($7)

add $6, $4, $7

sub $3, $4, $6

lw $2, 300($8)

beq $2, $8, Loop

参考答案:

lw $2, 100($6)

add $6, $4, $7

add $2, $2, $3

lw $3, 200($7)

lw $2, 300($8)

sub $3, $4, $6

beq $2, $8, Loop

10. 假设数据通路中各主要功能单元的操作时间为:存储单元:200ps;ALU和加法器:100ps;

寄存器堆读口或写口:50ps。程序中指令的组成比例为:取数25%、存数10%、ALU52%、分支11%、跳转2%。假设时钟周期取存储器存取时间的一半,MUX、控制单元、PC、扩展器和传输线路等的延迟都忽略不计,则下面的实现方式中,哪个更快?快多少?

(1)单周期方式:每条指令在一个固定长度的时钟周期内完成;

(2)多周期方式:每类指令时钟数:取数-7,存数-6,ALU-5,分支-4,跳转-4;

(3)流水线方式:取指1、取指2、取数/译码、执行、存取1、存取2、写回7段流水线;没有结构冒险;数据冒险采用“转发”技术处理;load指令与后续各指令之间

存在依赖关系的概率分别1/2、1/4、1/8、…;分支延迟损失时间片为2,预测准确

率为75%;不考虑异常、中断和访问失效引起的流水线冒险。

参考答案:

单周期:存储器操作变为两个时钟周期后,其数据通路的时钟周期不变,为600ps

? 159 ?

多周期:CPI=0.25x7+0.10x6+0.52x5+0.11x4+0.02x4 = 5.47

存储器操作变为两个时钟周期后,多周期数据通路的时钟周期为100ps,

故一条指令的执行时间为100x5.47=547ps

流水线:存储器操作变为两个时钟周期后,其流水线包含了7个阶段.

对于beq,若预测正确,则为1个周期,若预测错误,则为3个周期(与原五段流水线相比,多一个取指周期,多阻塞了1个周期),故CPI=1/4x3+3/4x1=1.5对于load,随后第一条则为3个(阻塞2个)周期;随后第二条则为2个(阻塞1个)周期,以后的指令都不需要阻塞,故CPI=1/2x3+1/2x1/4x2+3/8x1=2.125 对于ALU指令,随后的数据相关指令都可通过转发解决,故CPI=1

对于Store指令,不会发生数据冒险,故CPI=1

对于Jump指令,总要等到译码结束才能确定转移地址,故CPI=3

平均CPI为:2.125x25%+1x10%+1x52%+1.5x11%+3x2%=1.38

所以,N条指令的执行时间为1.38x100xN=138N(ps)

流水线比单周期快600/138=4.38倍。

? 160 ?

计算机系统结构考试计算题

3.12 有一指令流水线如下所示 (1) 求连续输入10条指令,该流水线的实际吞吐率和效率; (2) 该流水线的“瓶颈”在哪一段?请采取两种不同的措施消除此“瓶颈”。 对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少? 解:(1) 2200(ns)2009200)10050(50t )1n (t T max m 1 i i pipeline =?++++=?-+?=∑= )(ns 220 1 T n T P 1pipeline -== 45.45%11 5 4400T P m t T P E m 1 i i ≈=? =?? =∑= (2)瓶颈在3、4段。 ? 变成八级流水线(细分) 850(ns)509850t 1)(n t T max m 1 i i pipeline =?+?=?-+?=∑= )(ns 85 1 T n T P 1pipeline -== 58.82%17 10 8400T P m ti T P E m 1 i ≈=? =?? =∑= ? 重复设置部件 出 50ns 50ns 100ns 200ns

)(ns 85 1 T n T P 1pipeline -== 58.82%17 10885010400E ≈=??= 3.13 4段组成,3段时,一次,然4段。如果 需要的时间都是,问: (1) 当在流水线的输入端连续地每时间输入任务时,该流水线会发生 什么情况? (2) 此流水线的最大吞吐率为多少?如果每输入一个任务,连续处理 10个任务时的实际吞吐率和效率是多少? (3) 当每段时间不变时,如何提高该流水线的吞吐率?仍连续处理10个 任务时,其吞吐率提高多少? (2) t ?t ?2

指令流水线

第七章指令流水线 2. 简单回答下列问题。(参考答案略) (1)流水线方式下,一条指令的执行时间缩短了还是加长了?程序的执行时间缩短了还是加长了?为什么? (2)具有什么特征的指令集易于实现指令流水线? (3)流水线处理器中时钟周期如何确定?单条流水线处理器的CPI为多少?每个时钟周期一定有一条指令完成吗?为什么? (4)流水线处理器的控制器实现方式更类似于单周期控制器还是多周期控制器? (5)为什么要在各流水段之间加寄存器?各流水段寄存器的宽度是否都一样?为什么? (6)你能列出哪几种流水线被阻塞的情况?你知道硬件和软件是如何处理它们的吗? (7)超流水线和多发射流水线的主要区别是什么? (8)静态多发射流水线和动态多发射流水线的主要区别是什么? (9)为什么说Pentium 4是“CISC壳、RISC核”的体系结构? 3. 假定在一个五级流水线(如P.205图7.1所示)处理器中,各主要功能单元的操作时间为: 存储单元:200ps;ALU和加法器:150ps;寄存器堆读口或写口:50ps。若执行阶段EX 所用的ALU操作时间缩短20%,则能否加快流水线执行速度?如果能的话,能加快多少? 如果不能的话,为什么?若ALU操作时间增加20%,对流水线的性能有何影响?若ALU 操作时间增加40%,对流水线的性能有何影响? 参考答案: a. ALU操作时间缩短20%不能加快流水线指令速度。因为存储单元的时间为200ps,所 以流水线的时钟周期不会因为ALU操作时间的缩短而变短。 b. ALU操作时间延长20%时,变为180ps,比200ps小,对流水线性能没有影响; c. ALU操作时间延长40%时,变为210ps,比200ps大,所以,流水线的时钟周期将变 为210,其效率降低了(210-200)/200=5%。 4. 假定某计算机工程师想设计一个新CPU,一个典型程序的核心模块有一百万条指令,每条 指令执行时间为100ps。 (1)在非流水线处理器上执行该程序需要花多长时间? (2)若新CPU是一个20级流水线处理器,执行上述同样的程序,理想情况下,它比非流水线处理器快多少? (3)实际流水线并不是理想的,流水段间数据传送会有额外开销。这些开销是否会影响指令执行时间(Instruction latency)和指令吞吐率(Instruction throughput)? 参考答案: (1)非流水线处理器上执行该程序的时间为:100psx106=100μs. (2)若在一个20级流水线的处理器上执行,理想情况下,每个时钟周期为:100/20=5ps, ? 156 ?

CRC16并行计算的Matlab推导

CRC16并行计算的Matlab推导 本文使用的CRC16的生成多项式为: 其对应的串行编码图如下图所示。 假设输入数据的位宽为8比特,即{I7,I6,I5,I4,I3,I2,I1,I0},I为Input的首字母。I0表示最低比特位,I7表示最高比特位。 在串行模式下,I0先输入CRC16计算模块,于是I0输入后各个寄存器的状态变化如下: = = = = = = = = = = =

= = = = = 可以将以上表达式组成矩阵乘法的形式,则有: '0D T D S I =?+? (1) 其中,D 为0D ~15D 构成的列向量,用转置矩阵的形式表示为: () 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15T D D D D D D D D D D D D D D D D D =同理,'D 是'0D ~'15D 构成的列向量,用转置矩阵的形式表示为: () '' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '0123456789101112131415T D D D D D D D D D D D D D D D D D = 表达式(1)中的矩阵T ,表示为: 00000000000000110000000000000000100000000000001001000000000000000010000000000000000100000000000000001000000000000000010000000000000000100000000000000001000000000000000010000000000000000100000000000T =0000010000000000000000100000000000000001000000000000000011?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?

第05章 流水线课后习题

第5章课后习题 1.填空题 (1) 衡量流水线性能的主要指标有 (2) 指令乱序流动可能造成 (3) 解决数据相关主要有 (4) 超标量处理机开发的是 行性。 (1). 吞吐率、加速比、效率 (2). 先写后读、先读后写、写写 (3). 推后分析、设置专用路径 (4). 空间、时间 2.假设一条指令的执行过程分为"取指令"、"分析"和"执行"三段,每一段的时间分别为△t、2△t和3△t。在下列各种情况下,分别写出连续执行n条指令所需要的时间表达式。 (1) 顺序执行方式。 (2) 仅"取指令"和"执行"重叠。 (3) "取指令"、"分析"和"执行"重叠。 第2题 (1) 顺序执行时每条指令用时=△t+2△t+3△t=6△t, 因此n条指令所需要的时间=6n*△t (2) 第一条指令完成需要时间=△t+2△t+3△t=6△t,根据题义,下一条指令的"取指令"与上一条指令"执行"的最后一个△t重叠。因此,自从第一条指令完成后,每隔4△t完成一条指令。所以余下的n-1条指令用时(n-1)*4△t. 所以,n条指令所需要的时间=6△t+(n-1)*4△t=2(2n+1)△t。 (3) 第一条指令完成需要时间=△t+2△t+3△t=6△t,由于一条指令的"取指令"和"分析"阶段和下一条指令的"执行"阶段重叠,因此,此后每3△t 完成一条指令,余下的n-1条指令用时(n-1)*3△t. 因此n条指令所需要的时间=6△t+(n-1)*3△t=3(n+1)△t

3.用一条5个功能段的浮点加法器流水线计算F=。每个功能段的延迟时间均相等,流水线的输出端与输入端之间有直接数据通路,而且设置有足够的缓冲寄存器。要求用尽可能短的时间完成计算,画出流水线时空图,计算流水线的实际吞吐率、加速比和效率。 第3题 假设每个功能段的延迟时间为△t。 F==[(A1+1A2)+6(A3+2A4)+8(A5+3A6)]+9[(A7+4A8)+7(A9+5A10)] 由上面的时空图可以看出,在20△t时间内共完成9个加法操作。因此: 吞吐率为:TP= 9/20=0.45 加速比为:Sp= 9*5/20=2.5 效率为:E= 45/(20*5)=45% 4.设有一个15000条指令的程序在一台时钟速率为25MHz的线性流水线处理机上执行。假设该指令流水线有5段,并且每个时钟周期发射一条指令。忽略由于转移指令和无序执行造成的损失。 (1) 用该流水线执行这一程序,并用流过延迟与其相等的一个等效非流水线处理机执行同一程序,将两者加以比较,并计算其加速比。 (2) 该流水线处理机的效率是多少? (3) 计算该流水线的吞吐率。 第4题 (1) 等效的非流水处理机执行一条指令需要的时间是5个时钟周期。依照加速比定义, (2) 效率E为

MATLAB分布式并行计算服务器配置和使用方法Word版

Windows下MATLAB分布式并行计算服务器配置和使用方 法 1MATLAB分布式并行计算服务器介绍 MATLAB Distributed Computing Server可以使并行计算工具箱应用程序得到扩展,从而可以使用运行在任意数量计算机上的任意数量的worker。MATLAB Distributed Computing Server还支持交互式和批处理工作流。此外,使用Parallel Computing Toolbox 函数的MATLAB 应用程序还可利用MATLAB Compiler (MATLAB 编译器)编入独立的可执行程序和共享软件组件,以进行免费特许分发。这些可执行应用程序和共享库可以连接至MATLAB Distributed Computing Server的worker,并在计算机集群上执行MATLAB同时计算,加快大型作业执行速度,节省运行时间。 MATLAB Distributed Computing Server 支持多个调度程序:MathWorks 作业管理器(随产品提供)或任何其他第三方调度程序,例如Platform LSF、Microsoft Windows Compute Cluster Server(CCS)、Altair PBS Pro,以及TORQUE。 使用工具箱中的Configurations Manager(配置管理器),可以维护指定的设置,例如调度程序类型、路径设置,以及集群使用政策。通常,仅需更改配置名称即可在集群间或调度程序间切换。 MATLAB Distributed Computing Server 会在应用程序运行时在基于用户配置文件的集群上动态启用所需的许可证。这样,管理员便只需在集群上管理一个服务器许可证,而无需针对每位集群用户在集群上管理单独的工具箱和模块集许可证。 作业(Job)是在MATLAB中大量的操作运算。一个作业可以分解不同的部分称为任务(Task),客户可以决定如何更好的划分任务,各任务可以相同也可以不同。MALAB中定义并建立作业及其任务的会话(Session)被称为客户端会话,通常这是在你用来编写程序那台机器上进行的。客户端用并行计算工具箱来定义和建立作业及其任务,MDCE通过计算各个任务来执行作业并负责把结果返

Parallel Computing with MATLAB(并行计算)

Getting Started with Parallel Computing using MATLAB: Interactive and Scheduled Applications Created by S. Zaranek, E. Johnson and A. Chakravarti 1.Objectives This user guide provides an end user with instructions on how to get started running parallel MATLAB applications using a desktop computer or a cluster. 2.Assumptions User has access to MATLAB and Parallel Computing Toolbox on the desktop computer or head node of the cluster. If running on a cluster: MATLAB Distributed Computing Server has been installed by an administrator on the cluster. The desktop MATLAB client has been configured to connect to the cluster. If this has not been done, you should contact the cluster administrator. 3. Getting the Example Files Unzip the demoFiles.zip file that was provided along with this guide. You can add the files to the MATLAB path by running the addpath command in MATLAB. >> addpath 4. Examples Running Locally In this section, you will be running and submitting jobs using the local configuration. If your workflow will ultimately involve submitting jobs to a cluster, you can follow this section by switching the default configuration from local to that of your cluster and running these jobs again. This is described in Section 5.

计算机系统结构实验一流水线指令调度

计算机专业类课程 实 验 报 告 课程名称:计算机系统结构 学院:计算机科学与工程 专业:计算机科学与技术 学生姓名:林怡 学号:2012060020023 指导教师:叶娅兰 日期:2015年 5月 5日 电子科技大学计算机学院实验中心

电 子 科 技 大 学 实 验 报 告 实验一 一、实验名称:流水线指令调度 二、实验学时:4 三、实验内容和目的: 实验目的: 1. 通过本实验,理解指令调度的方法。 2.掌握使用VC 开发平台模拟处理机内部指令流调度的编程策略。 实验内容: (一)给定要执行的任务和执行该任务的流水线结构 流水线的调度方式能够提高任务的并行度,但是针对不同的任务,由于相关的存在,其并行度的提高是不一致的。在开始程序设计前,我们首先要给定所要完成的任务: 这里我们使用最简单的累加操作∑=n 1i Ai 。 n 的数值可以变化,通过变换n 的值用同一程 序进行多次模拟。 给定流水线: 流水线分四个步骤,每个步骤的执行时间均为一个单位时间。 (二)对任务进行分解 任务分解的目的是为了减少相关。例如n =4时,任务分解为 A1+A2、A3+A4、 A1+A2+A3+A4 三个加法操作。 如果n 的大小是未知的,任务该怎样分解呢?换而言之,在程序模拟中,有没有一种通行的分解处理方式,可以实现对任意数目的源数据的累加的分解? (三)任务分解程序模拟的思路 首先,Ai 是对称的,Ai 和Aj 都是一个源操作,任意更换其相对位置,计算的累加和的结果是不变的。每次的加法操作能执行的必要条件是存在两个源数据,因此我 1 2 3 4 X Y

们可以把所有的源数据放入一个队列中,只要该队列中有两个源,那么就执行加法,加法计算的结果是下一次计算的源数据,我们把它再放回源数据队列,直到对列中只剩一个数据、同时加法流水线中没有执行加法操作时,整个累加过程完成。 (四)加法流水线的设计 加法流水线分为四个步骤,每个步骤时间花费是一个单位时间。模拟程序的目的是为了计算总的执行时间,因此对于每个步骤执行的功能并不需要关心。 为此设计一个总步数为4步的加法器,接收两个输入数据,经过4个时间片,输出加法的结果。时间片可以用定时器来模拟。 (五)程序设计 程序应包括一个队列,一个加法类,一个定时器,一个输出对话框。 队列用于存放源数据,一开始将n个源数据A1-An放入。 启动定时器,每一个时间片从队列中取出两个源数据,送入加法器(可以通过调用加法器中接口函数,把源数据作为参数传入)。 构造加法器类,可以考虑用一个长度对4的执行队列来模拟4个步骤,每个时间片将队列的数据依次下压一格,队列尾的数据进行加法计算并将结果压入源数据队列。 用一个记数值表示时间开销,每个时间片对该记数值加1。 当源队列只剩一个数据且加法器的执行队列为空时,整个程序结束,记数器的值就是任务执行的总体时间花费。 (五)多次模拟 可以通过循环的方式对n从4-20进行循环,将每次模拟运行的时间开销值在对话框中显示出来。如果可能将结果打印。 四、实验原理: 程序设计及数据结构: 实验程序共有6个类,分别是: ①PipeAdditionTest 公共类,测试程序,每一个n的循环,将计时器清零并初始化长度为n的源操作数队列,当源操作数队列有多余一个操作数或者加法器的执行队列不为空的时候持续调用加法器类执行加法操作,在程序结束时输出n以及计时器timercounter的值; ②OperaQueue 操作数队列类,包括一个操作数队列数据结构、队列初始化函数OperaQueue(int queueLength)、从队列中取一个源操作数函数getOperationNum()和将加法器计算的结果压入队尾的函数pushOperationNum(int op); 电子科技大学计算机学院实验中心

流水线指令及RISC

一.流水线 1. 概念: 处理器按照一系列步骤来执行每一条指令.典型的步骤如下: 1) 从存储器读取指令(fetch). 2) 译码以鉴别它是那一类指令(dec). 3) 从寄存器堆取得所需的操作数(reg). 4) 将操作数进行组合以得到结果或存储器地址(ALU). 5) 如果需要,则访问存储器以存取数据(mem). 6) 将结果写回到寄存器堆(res). 并不是所有的指令都需要每一个步骤,但是,多数指令需要其中的多数步骤.这些步 骤往往使用不同的硬件功能,例如,ALU 可能只在第四步中用到.因此,如果一条指令不是在前一条结束之前就开始,那么在每一个步骤内处理器只有少部分的硬体被使用. 有一个明显的方法可以改善硬件资源的使用率和处理器的吞吐量,这就是在当前指 令结束之前就开始执行下一条指令.该技术被称为流水线,是在通用处理器中采用并行算法且非常有效的途径. 采用上述操作顺序,处理器可以这样来组织:当一条指令刚刚执行完步骤1并转向步 骤2时,下一条指令就开始执行步骤1.图1.13说明了这个过程.从原理上来说,这样的流水线应该比没有重叠的指令执行快6倍,但实际上事情并没有这么好,下面我们将会看到原因. 1 2 3 指令 时间 图1.13 流水线的指令执行 2. 流水线中的冒险 要点:后一条指令要用到前一条指令。 在典型的计算机程序中经常会遇到这样的情形,即一条指令的结果被用做下一条指令的操作数.当这种情形发生时,图1.13所示的流水线操作就中断了,因为第一条指令的结果在第二条指令取操作数时还没有产生.第二条指令必须停止,直到结果产生为止.这是流水线的行为如图1.14所示.这是流水线的”写后读”冒险(hazard). 1. 2. 图 1.14 先写后读的流水线冒险 转移指令更会破坏流水线的行为,因为后续指令的取指步骤受到转移目标计算的影响,因而必须推迟.不幸的是,当转移指令正在被译码时,在它被确认为是转移指令

自动化生产流水线节拍、设备利用率计算

自动化生产流水线节 拍、设备利用率计算-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

自动化生产流水线节拍 流水线的负荷系数又称编程效率,其值越大,表明流水线的生产效率越高。 流水线上总负荷系数可按下列公式计算: η=T/(N×Pt) 其中η为负荷系数 Pt为生产节拍=计划期有效工作时间/计划期产品产量 =标准总加工时间/作业员人数 =有限机种的标准总加工时间/有限机种台数 N为工位数 T为所有工位完成一个节拍所用时间之合 一般以工作地(机器)作计算单元的,流水线的负荷系数不应低于;以操作工人作计算单位的,其流水线的负荷系数应在-以上。 举个例子 某一新开设的丁恤衫制衣厂,生产目标为每日1000件T恤杉、每日工作8h。生产工序和每个工序的日产量如表所示 工序名称 8H产量 1装袋 320 2缝肩 1000 3缝领 500 4缝袖 950 5上袖 400 6上领 480 7车边 1050 8开门 900 9钉纽 950 ①计算这条生产线的生产节拍Pt Pt=H/Q=8×60/1000=/件 ②计算每个工序所需的标准作业时间,结果如表5-8 ③计算每个工位所需的工位数,结果列于表5-8 例如,第一个工序的作业时间 第一个工序理论上所需的工位数= 15/=个 工序名称作业之间计算工位数实际工位 1 3 2 1 1 3 2 2 4 1 5 3 6 2 7 1 8 1 9 1 合计 15 ④计算出理论上该生产线所需的最小工作位数,即

Nmin=[T/Pt]+1=[]+1=15个 ⑤计算该生产线平衡后的平均负荷率 η=T/(N×Pt)×100%=(15× ×100%=& 依照工序流程安排生产线,首先要按照每个工序的难易程度,计算出各工序所需的工作位数目,务必使各工序每小时的总产量大致相同,才能得到一条子衡的生产线,例1中该生产线平衡后实际的节拍应为(瓶颈工作地节拍),平衡后的工序负荷率为%。 流程的“节拍”(Cycle time)是指连续完成相同的两个产品(或两次服务,或两批产品)之间的间隔时间。换句话说,即指完成一个产品所需的平均时间。节拍通常只是用于定义一个流程中某一具体工序或环节的单位产出时间。如果产品必须是成批制作的,则节拍指两批产品之间的间隔时间。在流程设计中,如果预先给定了一个流程每天(或其它单位时间段)必须的产出,首先需要考虑的是流程的节拍。在机械加工生产线的设计中,节拍是设计的一个很重要的因素。生产节拍的平衡很重要。生产节拍的公式为t=60Tβ/N 式中t为生产节拍,T为一年基本工时,一般规定,按一班制工时为2360h/年,按两班制工时为4650h/年;β为复杂系数,一般取为;N为生产线加工工件的年生产纲领。机械加工生产线的主要分类有:单一产品固定节拍生产线、单一产品非固定节拍生产线、成组产品可调节生产线、柔性制造生产线。

流水线设计步骤

1.计算流水线的节拍 流水线、自动化流水线的节拍就是顺序生产两件相同制品之间的时间间隔。 它表明了流水线生产率的高低,是流水线最重要的工作参数。其计算公式如下:r=F/N 其中:r—流水线的节拍(分/件),F—计划期内有效工作时间(分),N—计划期的产品产量(件).这里:F=F0K,F0—计划期内制度工作时间(分),K—时间利用系数。 确定系数K时要考虑这样几个因素:设备修理、调整、更换模具的时间,工人休息的时间。一般K取0.9—0.96,两班工作时间K取0.95,则F为:F=FOK=306×2×8×0.95 ×60=279072(分) 计划期的产品产量N.除应根据生产大纲规定的出产量计算外,还应考虑生产中不可避免的废品和备品的数量。 当生产线、生产线制造上加工的零件小,节拍只有几秒或几十秒时,零件就要采用成批运输,此时顺序生产两批同样制品之间的时间间隔称为节奏,它等于节拍与运输批量的乘积。流水线采取按批运输制品时,如果批量较大,虽然可以简化运输工作,但流水线的在制品占用量却要随之增大。所以对劳动量大、制件重量大、价值高的产品应采用较小的运输批量;反之,则应扩大运输的批量。 进行工序同期化,计算工作地(设备)需要量 流水线的节拍确定以后,要根据节拍来调节工艺过程,使各道工序的时间与流水线的节拍相等或成整数倍比例关系,这个工作称为工序同期化。工序同期化是组织流水线的必要条件,也是提高设备负荷和劳动生产率、缩短生产周期的重要方法。 进行工序同期化的措施有: ①提高设备的生产效率。可以通过改装设备、改变设备型号、同时加工几 个制件来提高生产效率; ②改进工艺装备。采用快速安装卡具、模具,减少装夹零件的辅助时间; ③改进工作地布置与操作方法,减少辅助作业时间; ④提高工人的工作熟练程度和效率; ⑤详细地进行工序的合并与分解。首先将工序分成几部分,然后根据节拍 重新组合工序,以达到同期化的要求,这是装配工序同期化的主要方法。 工序同期化以后,可以根据新确定的工序时间来计算各道工序的设备需要量,它可以用下式计算: m(i)=t(i)/r 式中:mi—第i道工序所需工作地数(设备台数),ti—第i道工序的单件时间定额(分)包括工人在传送带上取放制品的时间。一般来说,计算出的设备数不是整数,所取的设备数为大于计算数的邻近整数。若某设备的负荷较大,就应转移部分工序到其它设备上或增加工作时间来减少设备的负荷。

北邮实验二 指令流水线相关性分析

北京邮电大学 计算机学院 《计算机系统结构》课程实验 2015年4月

实验二指令流水线相关性分析 一、实验类别:验证实验 二、实验目的:通过使用WINDLX模拟器,对程序中的三种相关现 象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。 三、实验学时:4 四、实验组人数:1/1 五、实验设备环境:WinDLX模拟器可以装入DLX汇编语言程序, 然后单步、设置断点或者连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以使用图形的方式表示出来。模拟器还提供了对流水线操作的统计功能。该模拟器对理解流水线和RISC处理器的特点很有帮助。 六、实验原理:指令流水线中主要有结构相关、数据相关、控制相 关。相关影响流水线性能。 七、教学要点与学习难点:三种相关及其解决办法 八、实验内容和要求:使用WinDLX模拟器,对求阶乘程序Fact.s 做分析 九、实验步骤: (1)观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。 (2)考察增加浮点运算部件对性能的影响。 (3)考察增加forward部件对性能的影响。 (4)观察转移指令在转移成功和转移不成功时候的流水线开销注意:除(2)以外,浮点加、乘、除部件都只有一个;本问题中所有浮点运算部件的延时都请设定为4个周期。

十、实验过程: 同实验一、选择File/Load Code or Data,窗口中会列出目录中所有汇编程序。按如下步骤操作,可将这两个文件装入主存。 ?点击fact.s ? 点击select 按钮?点击input.s ? 点击select按钮?点击load按钮 以下3个相关的观察实验(floating为1,4) 数据相关及指令组合: 在第27个周期里,Clock Cycle Diagram窗口的时空图和Pipeline窗口中的流图第一次出现了橘黄色的R-Stall。点击Pipeline的橘黄色框,出现的Information about seqi r5,r3,0xa中有图: lbu r3,0x0(r2)要在WB周期写回r3中的数据,而下一条指令seqi r5,r3,0xa 要在intEX周期中读取r3中的数据。发生了写读相关。所以为了避免冲突,seqi r5,r3,0xa的intEX指令延迟了一个周期进行。 相关指令组合 控制相关及指令组合: 在第四时钟周期,第一条命令正处于MEM段,第二条命令处于intEX段,第四条命令处于IF段,而第三条命令处于"aborted"。

指令流水线技术研究

指令流水线技术研究 摘要:流水线技术是当前指令集处理器设计中广泛采用的技术。首先介绍了有关流水线的基础知识,包括概念、特点、分类及其主要性能指标。然后提出了三条流水线理想假设,并由此得出了指令流水线设计的三大挑战,从而指出了在指令流水线设计时应重点解决的三大问题和设计方法。最后是对该技术的总结与展望。 关键字:指令流水线;概念;性能指标;理想假设;处理器设计; 前言 流水线技术是提高系统吞吐率的一项强大的实现技术,并且不需要大量重复设置硬件。20世界60年代早期的一些高端机器中第一次采用了流水线技术。第一个采用指令流水线的机器是IBM7030(又称作Stretch计算机)。后来的CDC 6600同时采用了流水线和多功能部件。 到了20世纪80年代,流水线技术成为RISC处理器设计方法中最基本的技术之一。RISC设计方法的大部分技术都直接或者间接以提高流水线性能为目标。从此以后,流水线技术也被有效地应用到CISC处理器的设计中。Intel i486是IA32体系结构中的第一个流水线实现。Digital的VAX和Motorola的M68K的流水线版本在商业上也取得了成功。 流水线技术是当前指令集处理器设计中广泛采用的技术。在这里我们将重点放在(标量)流水线处理器的设计。流水线处理器设计中的许多方法和技术,例如用于检测和化解相关的流水线互锁机制,都是标量处理器设计的基本方法。 1 流水线基础 加快机器语言的解释过程提高机器的运算速度是设计计算机的基本任务之一。这可以通过两个途径来实现。一个途径是提高器件的速度,采用更好的算法,增加指令内各微操作的并行程度,减少解释过程所需要的拍数等多项措施来加快机器指令的解释。另一个途径则是采用重叠和流水方法,同时解释两条、多条以至整段程序,从而加快整个机器语言程序的解释。流水线技术是目前广泛应用于

北邮大三计算机体系结构实验二指令流水线相关性分析

实验二指令流水线相关性分析 1、实验目的 通过使用WINDLX模拟器,对程序中的三种相关现象进行观察,并对使用专用通路,增加运算部件等技术对性能的影响进行考察,加深对流水线和RISC处理器的特点的理解。 2、实验原理 指令流水线中主要有结构相关、数据相关、控制相关。相关影响流水线性能。  3、 实验步骤 (1) 观察程序中出现的数据/控制/结构相关。指出程序中出现上述现象的指令组合。 数据相关指令: lbu r3,0x0(r2) seqi r5,r3,0xa 不采用定向技术

lbu r3,0x0(r2)要在WB周期写回r3中的数据,而下一条指令seqi r5,r3,0xa 要在intEX周期中读取r3中的数据。发生了写读相关。所以为了避免冲突,seqi r5,r3,0xa的intEX指令延迟了一个周期进行。 控制相关指令: addi r1, r0 , 0x1000 jal InputUnsigned movi2fp f10,r1 sw SaveR2[r0],r2 跳转指令,从执行的Fact.s中的movi2fp指令跳至Input.s中的Unsigned标号处。开始输入处理 结构相关指令:

add r1,r1, r3 addi r2, r2, 0x1 addi r2, r2, 0x1 该指令与它前面的一条指令 add r1,r1, r3发生了结构相关。由于上一条指令由于数据相关需要停4个周期,在ID段后停滞,不能进入intEX段,故addi r2,r2,0x1 就不能进入ID段,译码部分已经被占用。故发生了结构相关。 (2) 考察增加浮点运算部件对性能的影响。 1个浮点运算单元 3个浮点运算单元

指令流水线的计算

若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间分别是t取指=2ns ,t 分析=2ns,t 执行=1ns。则100 条指令全部执行完毕需 (4) ns。 (4)A.163 B.183 C.193 D.203 答案:D 本类题有两类: 第一类是各指令段,有同步时间,即有指令流操作周期.当某指令段执行完毕后,必须等到下一个操作周期来临时,才能执行下一条指令的相同段.第一题与2005年的题就是这样.其计算公式是: (指令所分段数-1)*指令流操作周期 +指令数*指令流操作周期. 第二类是各指令段,没有同步时间,每段执行完毕,不需要等待,直接执行下一条执令相同的段.2006的题就是这个.其计算方法是 第一条指令执行时间+(指令数-1)*各指令段执行时间中最大的执行时间 ========================================================== 本题为第二类:(2+2+1)+(100-1)*2=203 指令流水线的计算 1.现有四级指令流水线,分别完成取指、取作的时间依次为数、运算、传送结果四步操作。若完成上述操9ns、10ns、6ns、8ns。则流水线的操作周期应设计为(1)n s。(1)A.6B.8C.9D.10 试题解析:取最大的那个微指令时间作为流水线操作周期。答案:D 2.若每一条指令都可以分解为取指、分析和执行三步。已知取指时间t取指=4△t,分析时间t分析=3△t,执行时间t执行=5△t。如果按串行方式执行完100条指令需要(2)△t。如果按照流水方式执行,执行完100条指令需要(3)△t。 (2)A.1190B.1195C.1200D.1205(3)A.504B.507C.508D.510 试题解析:串行执行时,总执行时间=100×(t取指+ t分析+ t执行) =100×12△t=1200△t。 连续两条指令的执行时间差为t执行= 5△t,因此100条指令的总执行时间=(t取指+ t分析+ t执行)+99×t执行= 507△t。 答案:(2)C(3)B

自动化生产流水线节拍、设备利用率计算

自动化生产流水线节拍 流水线的负荷系数又称编程效率,其值越大,表明流水线的生产效率越高。 流水线上总负荷系数可按下列公式计算: η=T/(N×Pt) 其中η为负荷系数 Pt为生产节拍=计划期有效工作时间/计划期产品产量 =标准总加工时间/作业员人数 =有限机种的标准总加工时间/有限机种台数 N为工位数 T为所有工位完成一个节拍所用时间之合 一般以工作地(机器)作计算单元的,流水线的负荷系数不应低于0.75;以操作工人作计算单位的,其流水线的负荷系数应在0.85-0.9以上。 举个例子 某一新开设的丁恤衫制衣厂,生产目标为每日1000件T恤杉、每日工作8h。生产工序和每个工序的日产量如表所示 工序名称8H产量 1装袋320 2缝肩1000 3缝领500 4缝袖950 5上袖400 6上领480 7车边1050 8开门900 9钉纽950 ①计算这条生产线的生产节拍Pt Pt=H/Q=8×60/1000=0.48min/件 ②计算每个工序所需的标准作业时间,结果如表5-8 ③计算每个工位所需的工位数,结果列于表5-8 例如,第一个工序的作业时间 第一个工序理论上所需的工位数= 15/0.48=3.1个 工序名称作业之间计算工位数实际工位 1 1.5 3.1 3 2 0.48 1 1 3 0.96 2 2 4 0.51 1.1 1 5 1.2 2.5 3 6 1.0 2.1 2 7 0.46 0.95 1 8 0.53 1.1 1 9 0.51 1.05 1 合计7.15 14.90 15 ④计算出理论上该生产线所需的最小工作位数,即

Nmin=[T/Pt]+1=[7.15/0.48]+1=15个 ⑤计算该生产线平衡后的平均负荷率 η=T/(N×Pt)×100%=7.15/(15×0.53) ×100%=89.9& 依照工序流程安排生产线,首先要按照每个工序的难易程度,计算出各工序所需的工作位数目,务必使各工序每小时的总产量大致相同,才能得到一条子衡的生产线,例1中该生产线平衡后实际的节拍应为0.53min(瓶颈工作地节拍),平衡后的工序负荷率为89.9%。 流程的“节拍”(Cycle time)是指连续完成相同的两个产品(或两次服务,或两批产品)之间的间隔时间。换句话说,即指完成一个产品所需的平均时间。节拍通常只是用于定义一个流程中某一具体工序或环节的单位产出时间。如果产品必须是成批制作的,则节拍指两批产品之间的间隔时间。在流程设计中,如果预先给定了一个流程每天(或其它单位时间段)必须的产出,首先需要考虑的是流程的节拍。在机械加工生产线的设计中,节拍是设计的一个很重要的因素。生产节拍的平衡很重要。生产节拍的公式为 t=60Tβ/N 式中t为生产节拍,T 为一年基本工时,一般规定,按一班制工时为2360h/年,按两班制工时为4650h/年;β为复杂系数,一般取为0.65-0.85;N为生产线加工工件的年生产纲领。机械加工生产线的主要分类有:单一产品固定节拍生产线、单一产品非固定节拍生产线、成组产品可调节生产线、柔性制造生产线。

关于ARM指令流水线知识

关于ARM指令流水线知识 (周方辉) 2012/10/22 目录 1 参考文献 (2) 1.1 内部参考文献 (2) 1.2 外部参考文献 (2) 2 名词解释 (2) 3 指令执行三步骤 (2) 4 指令流水线(ARM指令) (3) 4.1 三级指令流水线 (3) 4.2 五级指令流水线 (5) 4.3 六级指令流水线 (6) 4.4 其它级指令流水线 (6)

1参考文献 1.1内部参考文献 内部参考文献指的是周方辉自生的百度博文中的文件。 无内部参考文献。 1.2外部参考文献 外部参考文献指的是相对于上述内部参考文献以外的文件。 无外部参考文献 2名词解释 CPI:指令周期数,一段时间内走过的指令时钟数除以被执行的指令条数,CPI>=1。 F:Fetch的缩写,取指令的意思,用在分析指令流水线中。 D:Decode,解指令码,用在分析指令流水线中。 E:Execute,执行指令,用在分析指令流水线中。 M:Memory,内存操作。 W:W riteback回写。 S:Stall,拖延clock。 L:Linkret,连接返回。 A:Adjust,调整流水线。 DI:Decode IRQ解析中断指令。 EI:Execute IRQ执行中断指令。 I:Interlock,内部锁状态。 3指令执行三步骤 一般计算机指令码与数据码没有区别,存在内存中,都属于二进制数字信息。指令码和数据码的区别是一般用PC指针从内存中读取的数据为指令码,否则就当数据码处理。 到目前为止,一般计算机执行指令是用CPU部件来执行的,通常分成: 1、获取指令,通过PC指针,从内存中获取指令码; 2、解析指令,使用CPU内部的指令解码器对指令码进行解析,从而得知指令功能。

1、设一条流水线的执行过程分成取指令、分析指令和执行指令三个阶段

1、设一条流水线的执行过程分成取指令、分析指令和执行指令三个阶段,每个阶段所需的时间分别为t、t和2t,分别求出下列各种情况下,连续执行N条指令所需的时间。 (1)顺序执行方式; (2)只有取指令和执行指令重叠执行; (3)取指令、分析指令和执行指令重叠执行; 2、有一条流水线如下所示 (1)求连续输入10 条指令,该流水线的实际吞吐率和效率; (2)该流水线的瓶颈在哪一段?请采取2种不同的措施消除此“瓶颈”。对于你所给出的新流水线,计算连续输入10 条指令时,其实际吞吐率和效率; 3、在改进的DLX 流水线上运行如下代码序列: LOOP: LW R1, 0(R2) ADDI R1, R1, # 1 SW 0(R2), R1 ADDI R2, R2, # 4 SUB R4, R3, R2 BNEZ R4, LOOP 其中,R3 的初始值是R2+396。假设:在整个代码序列的运行过程中,所有的存储器访问都是命中的,并且在一个时钟周期中对同一个寄存器的读操作和写操作可以通过寄存器“定向”。问: (1)在没有任何其它定向(或旁路)硬件的支持下,请画出该指令序列执行的流水线时空图。假设采用排空流水线的策略处理分支指令,且所有的存储器访问都可以命中Cache,那么执行上述循环需要多少个时钟周期? (2)假设该DLX 流水线有正常的定向路径,请画出该指令序列执行的流水线时空图。假设采用预测分支失败的策略处理分支指令,且所有的存储器访问都可

以命中Cache,那么执行上述循环需要多少个时钟周期? (3)假设该DLX 流水线有正常的定向路径,请对该循环中的指令进行调度。注意可以重新组织指令的顺序,也可以修改指令的操作数,但是不能增加指令的条数。请画出该指令序列执行的流水线时空图,并计算执行上述循环需要的时钟周期数? 4.根据需要展开下面的循环并且进行指令调度,直到没有任何延迟。指令的延迟如表: Code: Loop: LD F0,0(R1) MULTD F0,F0,F2 LD F4,0(R2) ADDD F0,F0,F4 SD 0(R2),F0 SUBI R1,R1,8 SUBI R2,R2,8 BNEQZ R1,LOOP 5.列举下面循环中的所有相关,包括输出相关,反相关,真相关和循环相关。

arm五级流水线

ARM流水线关键技术分析与代码优化 时间:2009-03-30 10:15:21 来源:单片机与嵌入式系统作者:大连理工大学邱铁西方迟宗正 引言 流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一。ARM7处理器核使用了典型三级流水线的冯·诺伊曼结构,ARM9系列则采用了基于五级流水线的哈佛结构。通过增加流水线级数简化了流水线各级的逻辑,进一步提高了处理器的性能。 ARM7的三级流水线在执行单元完成了大量的工作,包括与操作数相关的寄存器和存储器读写操作、ALU操作以及相关器件之间的数据传输。执行单元的工作往往占用多个时钟周期,从而成为系统性能的瓶颈。ARM9采用了更为高效的五级流水线设计,增加了2个功能部件分别访问存储器并写回结果,且将读寄存器的操作转移到译码部件上,使流水线各部件在功能上更平衡;同时其哈佛架构避免了数据访问和取指的总线冲突。 然而不论是三级流水线还是五级流水线,当出现多周期指令、跳转分支指令和中断发生的时候,流水线都会发生阻塞,而且相邻指令之间也可能因为寄存器冲突导致流水线阻塞,降低流水线的效率。本文在对流水线原理及运行情况详细分析的基础上,研究通过调整指令执行序列来提高流水线运行性能的方法。 1 ARM7/ARM9流水线技术 1.1 ARM7流水线技术 ARM7系列处理器中每条指令分取指、译码、执行三个阶段,分别在不同的功能部件上依次独立完成。取指部件完成从存储器装载一条指令,通过译码部件产生下一周期数据路径需要的控制信号,完成寄存器的解码,再送到执行单元完成寄存器的读取、ALU运算及运算结果的写回,需要访问存储器的指令完成存储器的访问。流水线上虽然一条指令仍需3个时钟周期来完成,但通过多个部件并行,使得处理器的吞吐率约为每个周期一条指令,提高了流式指令的处理速度,从而可达到O.9 MIPS/MHz的指令执行速度。 在三级流水线下,通过R15访问PC(程序计数器)时会出现取指位置和执行位置不同的现象。这须结合流水线的执行情况考虑,取指部件根据PC取指,取指完成后PC+4送到PC,并把取到的指令传递给译码部件,然后取指部件根据新的PC取指。因为每条指令4字节,故PC值等于当前程序执行位置+8。 1.2 ARM9流水线技术 ARM9系列处理器的流水线分为取指、译码、执行、访存、回写。取指部件完成从指令存储器取指;译码部件读取寄存器操作数,与三级流水线中不占有数据路径区别很大;执行部件产生ALU运算结果或产生存储器地址(对于存储器访问指令来讲);访存部件访问数据存储器;回写部件完成执行结果写回寄存器。把三级流水线中的执行单元进一步细化,减少了在每个时钟周期内必须完成的工作量,进而允许使用较高的时钟频率,且具有分开的指令和数据存储器,减少了冲突的发生,每条指令的平均周期数明显减少。 2 三级流水线运行情况分析 三级流水线在处理简单的寄存器操作指令时,吞吐率为平均每个时钟周期一条指令;但是在存在存储器访问指令、跳转指令的情况下会出现流水线阻断情况,导致流水线的性能下降。图1给出了流水线的最佳运行情况,图中的MOV、ADD、SUB指令为单周期指令。从T1开始,用3个时钟周期执行了3条指令,指令平均周期数(CPI)等于1个时钟周期。

相关文档