|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
流水线处理概述9 f7 j8 F- u" \& W3 G
一、CPU主要工作方式:( ~5 c+ I4 l/ f0 v2 j/ c
顺序
/ m9 m& B: Y0 ~重叠
3 j P; `, O6 u4 u( ?流水 * r& G1 b! W1 Q) P( |( a8 \9 ?) {! y
和铺地板的原理相似…! f' B2 R* T2 v6 |
设指令工作方式分成取指令、分析、执行指令
5 x) ?$ E; W3 L( l/ A& H. F8 h) D" Z& L6 p) t1 d# o0 U8 ]
/ V; H! j! T+ C0 q5 n3 n1 [( W! n q' P6 H
9 D2 M2 Q9 b& y6 v: H若各阶段执行时间相等,则共需3n t% ]% Q2 L; a2 p4 w4 U5 s
优点:控制简单;& I8 P" Z+ D1 W0 w, ?4 E
缺点:速度慢,机器各部件的利用率很低。 5 s& E9 A% h+ a% `/ E
重叠(Overlap):在两条相近指令的解释过程中,某些不同解释阶段在时间上存在重叠部分。
. k$ C6 X6 G1 m7 |; e1 v包括一次重叠、先行控制技术和多操作部件并行。 ' g& v2 v9 r& t$ S, Q& c8 z
将相邻两条指令的重叠时间再往前提前一个阶段;T=3×t+(n-1)×t=(n+2)×t
3 O0 p4 Y- M9 m' p8 U. a9 g一次重叠:把取指令操作隐含在分析、执行指令过程中,则在任何时候只允许上条指令“执行”与下条指令“分析”相重叠。 T=(n+1)×t1 k/ q+ L5 `- u( s! i
若各段时间不等时,有实际执行时间:
9 q" f+ {1 v8 {; m; W. r- b& \( U# y0 D6 H, j8 o" _* `- T
# }6 |: U) y; S* P
/ g5 s( x+ ^! Z: O
( R9 O8 y( t T3 E6 e先行控制:分析部件和执行部件能分别连续不断地分析和执行指令,预取和缓冲相结合的技术 ,通过对指令流和数据流的先行控制,使指令分析器和执行部件能尽量连续并行工作。
R0 Q# L' p* ~6 }# E& w( m# d9 q执行时间:
% p5 t O2 H4 z$ {( x7 \8 ]- G+ h$ V |7 q1 X+ D. F$ X& l
多操作部件并行:采用有多个功能部件的处理机,把ALU的多种功能分散到几个具有专门功能的部件中,这些功能部件可以并行工作,使指令流出速度大大提高。; C$ e/ e; ~4 X; Y/ g2 n3 M$ u& h
9 P2 Y) v; J& I
6 S4 `5 R% U2 r! e( i: Z/ p I7 ^2 C先行控制:现代计算机指令系统是复杂的,“分析”和“执行”所需要的时间往往相差很大,从而造成功能部件的浪费,因此,需要采用先行控制技术。
# h, U4 U. X# w5 n
- K' z, B8 r; P2 a- B1 v3 X
- z( n2 z% y0 G& y3 u: E1 _分析指令和执行指令时间不等时的一次重叠方式 h5 G8 x1 m5 H* i0 ~2 n/ z% I
2 F$ V; ~, t" o( h' Z
, L5 w: {: f$ e" N/ b采用先行缓冲栈是指令执行过程的一种表示方法
P' X+ G- X8 P( G8 z% t7 h. C先行控制:( f' v/ D! x+ V4 G% B$ N g
一般采用先行缓冲栈的方式实现:! e9 l( x( \2 ~8 z% S
一般设置四种缓冲栈:
" ?. \3 p9 ?8 Q4 W# h% r先行指令缓冲栈# d+ a( y0 V8 j" W
当主存比较忙时,指令分析器能够从先行指令缓冲栈中得到所需指令。% g+ q, R0 V# U3 d9 }5 A
先行操作栈
* a+ \% _ m# {' {& s 对于条件转移等使用。2 g) V/ x) \$ E3 @, j3 p
先行读书栈
9 T; u. t3 O) h' j/ y8 w! S 主存储器和运算器之间的缓冲存储器,用来平缓运算器和主存储器之间的工作。1 ?9 f# D- U8 s
后行写数栈% o, U. W; Z1 y0 R
当前没有完全写道主存的数据可以暂存到写数栈
1 q U j: l/ F5 U3 j先行控制的处理机结构:
8 { B; _# g& S# V) C! x
/ f0 G! x3 s) k1 y0 { |% b* j6 A. w$ \3 H
' l2 ?& z7 o! B& g' h先行控制中的缓冲深度设计:; ~! A4 r% q# t* ]& w0 v
通过一种极端情况计算举例:
3 r8 n8 f8 H' h" a2 `6 q假设先行指令缓冲栈已经完全充满,缓冲深度是D1。% b1 o5 W, r$ J% o" u
此时指令缓冲栈输出端,指令流出速度最快,而输入端,流入最慢$ Q5 q, T0 A9 V& ^9 `: t1 Y
假设指令序列的最大长度是L1,平均分析一条指令的时间是t1
, l- {4 ?! H# g/ ]而此时更坏的是取指令很慢,平均取一条指令的时间是t2
# d+ f A2 Y) \6 h( F3 j7 r0 \$ Q假设先行控制栈充满到被取空的过程中指令分析条数是L1
# r9 L) M; J6 ?8 o" [/ y' \# `! W) S$ n则此时有: L1t1 = (L1-D1)t20 {# H3 ^* y! u, P, E2 u
|
|