コンテンツにスキップ

ソフトウェアパイプライン

出典: フリー百科事典『ウィキペディア(Wikipedia)』

: software pipelining 1IA-64

[]



for i = 1 to bignumber
  A(i)
  B(i)
  C(i)
end

A(i), B(i), C(i), i

 A(i)  B(i) A BCiA(2)  A(1) 
A(1) B(1) C(1) A(2) B(2) C(2) A(3) B(3) C(3) ...

3)7(3 + 3 + 1, A(i+1)  C(i) )


A(1) A(2) A(3) B(1) B(2) B(3) C(1) C(2) C(3) ...

93

[]


bignumber 3
for i = 1 to (bignumber - 2) step 3
  A(i)
  A(i+1)
  A(i+2)
  B(i)
  B(i+1)
  B(i+2)
  C(i)
  C(i+1)
  C(i+2)
end

) Duff's device 


for i = 1 to bignumber
  A(i) ; 3 cycle のレイテンシ
  B(i) ; 3
  C(i) ; 12 (浮動小数点演算)
  D(i) ; 3
  E(i) ; 3
  F(i) ; 3
end

 C1212(使)bignumber 12使bignumber 10-20)12


前処理
for i = 1 to (bignumber - 6)
  A(i+6)
  B(i+5)
  C(i+4)
  D(i+2) ; i+3 をスキップする
  E(i+1)
  F(i)
end
後処理

77

Iteration 1: A(7) B(6) C(5) D(3) E(2) F(1)

Iteration 2: A(8) B(7) C(6) D(4) E(3) F(2)

Iteration 3: A(9) B(8) C(7) D(5) E(4) F(3)

Iteration 4: A(10) B(9) C(8) D(6) E(5) F(4)

Iteration 5: A(11) B(10) C(9) D(7) E(6) F(5)

Iteration 6: A(12) B(11) C(10) D(8) E(7) F(6)

Iteration 7: A(13) B(12) C(11) D(9) E(8) F(7)

 CC(7)  D(7) 12C(7) 使


; 前処理 (行に分割して表示)
A(1)
A(2), B(1)
A(3), B(2), C(1)
A(4), B(3), C(2)
A(5), B(4), C(3), D(1)
A(6), B(5), C(4), D(2), E(1)


[]


183186使

X Y Z (X, Y, Z)使

Monica Lam  A Systolic Array Optimizing Compiler(1989) (ISBN 0-89838-300-5)  Modulo Renaming 使 A(i)  B(i) B(i) 2
A(i+2); B(i)

A(i+2) 2A(i+2)  B(i) 


 A(i+2); B(i)
 A(i+3); B(i+1)

 A(i+2)  A(i+3) 
 r1 = A(i+2); B(i) = r1
 r2 = A(i+3); B(i+1) = r2
 i = i + 2 

r1  A(i+2) i 2 A(i) 


IA-64[]


 IA-64 

"rotating"   

"predicate"   predicate/ifIA-64predicate branch predictionARMpredicate /64predicate 1pr0使