|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
流水线处理概述5 g6 d+ }: k+ c) R) C
一、CPU主要工作方式:
0 D: x5 S+ Y2 |( U6 \) K/ _顺序5 t3 z3 h2 L; e6 d/ [2 J# e; v: n* P
重叠
- |& u9 g3 G" D! @% H0 w* p3 p& _0 o流水
+ c/ h9 O+ ]; d: x和铺地板的原理相似…
" h* q A( ?7 v8 k$ c设指令工作方式分成取指令、分析、执行指令/ h: J( f/ r& {6 n, g
2 R+ A, {8 e' O- g8 j6 K3 G8 L- C# l
g2 E5 D; A$ G5 n) R- {! H& w
5 M% X, k) i6 f4 K: L若各阶段执行时间相等,则共需3n t
) L4 D* W X S l) Y# f$ } 优点:控制简单;5 ]5 M/ u1 P9 I+ \& R" g% F5 u
缺点:速度慢,机器各部件的利用率很低。
( f* @. A$ v) e* U0 ~; t重叠(Overlap):在两条相近指令的解释过程中,某些不同解释阶段在时间上存在重叠部分。
5 D9 E- @) A0 p包括一次重叠、先行控制技术和多操作部件并行。 . Z5 z/ X) C$ K4 I" I
将相邻两条指令的重叠时间再往前提前一个阶段;T=3×t+(n-1)×t=(n+2)×t
) v7 J9 {- B; D# t一次重叠:把取指令操作隐含在分析、执行指令过程中,则在任何时候只允许上条指令“执行”与下条指令“分析”相重叠。 T=(n+1)×t) O& _# o% H. B/ |' |
若各段时间不等时,有实际执行时间:
& }/ V6 x6 Y* n0 u
% C' ~0 m2 t3 B' x- o) X0 M2 ]; ^7 A: a2 H- J% \. j& [) r& s) l$ ^
8 C! O; `( n3 B
( Q' R$ |. V6 B8 r# g( A先行控制:分析部件和执行部件能分别连续不断地分析和执行指令,预取和缓冲相结合的技术 ,通过对指令流和数据流的先行控制,使指令分析器和执行部件能尽量连续并行工作。 : H) g3 B$ N% `) k
执行时间:
0 ]: q/ a5 ^2 f; H' q4 h1 R" h D6 w7 N X7 h0 z+ r
多操作部件并行:采用有多个功能部件的处理机,把ALU的多种功能分散到几个具有专门功能的部件中,这些功能部件可以并行工作,使指令流出速度大大提高。
( a- i/ N. m' z9 i; |; S/ x& T. k+ d* l# U% e7 P
. P' ^/ ^$ E" g7 _
先行控制:现代计算机指令系统是复杂的,“分析”和“执行”所需要的时间往往相差很大,从而造成功能部件的浪费,因此,需要采用先行控制技术。) Q( Z% v4 Q* L3 v- z8 q
3 a" \6 b9 S* e7 \9 k) u0 |' S
% Y6 H2 H+ U$ o* [* [
分析指令和执行指令时间不等时的一次重叠方式
6 ]5 d% y# s' l# Y$ B0 D5 t F
% a+ v, G/ P0 P& k
. a7 N8 a# F, }" X5 V) J! m0 ^0 Y采用先行缓冲栈是指令执行过程的一种表示方法' X y& ]$ j+ t" Z6 f
先行控制:
0 ^- \; J. F( \# d' W/ K一般采用先行缓冲栈的方式实现:
) d0 s, d( c# y! A" q5 a一般设置四种缓冲栈:! E, v5 D# d8 C. r) @% U' y) |
先行指令缓冲栈
; R3 J: i v2 S/ Y* N 当主存比较忙时,指令分析器能够从先行指令缓冲栈中得到所需指令。/ Z, L% `3 L/ L6 A5 O% @
先行操作栈. R6 s+ x3 Z. y
对于条件转移等使用。 l7 b3 B X, A' A/ u# Q3 Z
先行读书栈# |; f/ k# E7 {
主存储器和运算器之间的缓冲存储器,用来平缓运算器和主存储器之间的工作。* ]% i) m$ _0 c" f3 T+ y* C
后行写数栈2 U0 ^) }7 E1 U j0 V$ i
当前没有完全写道主存的数据可以暂存到写数栈/ ] W1 z( }0 b& Z0 ]: i
先行控制的处理机结构:
' x+ k9 ~3 a$ s0 Y% p
) W2 E7 B. Y0 ?/ C$ w; F4 f7 v$ z) E
2 } E7 y* e' ?. O. @
先行控制中的缓冲深度设计:
. H1 w0 C! M/ y* v9 [6 g6 N9 `5 D通过一种极端情况计算举例:
- Z& C8 D8 J4 N2 s+ y3 @0 @! @假设先行指令缓冲栈已经完全充满,缓冲深度是D1。
! b' U) ~' l( V9 H3 A此时指令缓冲栈输出端,指令流出速度最快,而输入端,流入最慢' S) r1 V4 F3 o% m: S9 C
假设指令序列的最大长度是L1,平均分析一条指令的时间是t19 d0 Y2 d- h1 ~5 D6 f& H
而此时更坏的是取指令很慢,平均取一条指令的时间是t2( d8 ?- C4 I9 i, V; J* v7 p
假设先行控制栈充满到被取空的过程中指令分析条数是L1' w q- d; m, s6 r' _
则此时有: L1t1 = (L1-D1)t28 k- x, |$ z& r8 h# A
|
|