スーパースカラとvliw...31.10.2007 数理情報科学特別演習 1...
TRANSCRIPT
31.10.2007 数理情報科学特別演習 1
スーパースカラとVLIW• IPCとMIPS• スーパースカラ
• 考え方 - 複数命令の同時実行構造• インオーダとアウトオブオーダー発行
• パイプラインによるステージデカップリング• Reservation Station(FIFO)
• インオーダとアウトオブオーダー完了• データコンフリクトと例外処理• ROB(ReOrder Buffer)
• レジスタリネーミング• 分岐予測
• VLIW(Very Long Instruction Word)
31.10.2007 数理情報科学特別演習 2
CPIからIPC• MIPS=周波数(MHz)÷CPI(先週まで)• もし複数の命令を実行できるようになればCPIという概念は拡張される(命令を1クロックで複数こなせるようになる).するとIPC=1/CPI(Instructions per clock)がCPUを評価する基本単位となりうる.その場合MIPS=周波数(MHz)×IPC
• その複数命令同時実行構造をスーパースカラと呼ぶ.
• (注)MIPS評価には他の方法もある(DhrystoneMIPS).この評価をもとにしてIPCを計算すると2本の命令が同時実行可能なスーパースカラでもIPC>2などという数字がでてくるので注意.
31.10.2007 数理情報科学特別演習 3
スーパースカラの概念• ひとつのパイプラインで複数命令の同時発行(issue)を可能にする• 命令は相互に独立してあるべきが理想• プログラムから独立した複数の命令を選ぶ(あるいは独立命令ならびに並び替える仕事はCPUハードウェアによる).もちろんプログラム側の配慮も必要
31.10.2007 数理情報科学特別演習 4
スーパースカラの方式・形態(1)
• 命令処理にかかるクロック数(レイテンシー)は命令により異なることに注意(今までは簡単のため同じとして扱ってきたが).
• 複数の命令フェッチ(issueあるいはway数)• フェッチとフェッチ以後のステージをデカップリングしここに命令キュー(FIFO)を挟む(このFIFOをReservation StationあるいはCentralInstruction Windowと呼ぶ)のが一般的.
31.10.2007 数理情報科学特別演習 5
スーパースカラの方式・形態(2)• 命令の発行,完了がオリジナルプログラム通りをインオーダー(In-Order),違ってくる場合をアウトオブオーダー(out-of-order)と呼ぶ.若干異なる構造をとる.
• 命令依存性は命令キュー内待機命令に対して専用ハードウェアにより確認あるいは積極的に解消させる(レジスタリネーミング;後述).この時点でのデータハザードによるストールは原則としておきないようにする.
• ロード/ストア命令の実行ユニットは他の命令のそれと別にしてストール発生を抑えるようにしている(キャッシュ,メモリアクセスの遅さ考慮).
31.10.2007 数理情報科学特別演習 6
命令のインオーダー発行
• 命令キュー出口より2つの命令の(オペランドの)依存関係をチェック,独立であれば2つを発行.
• 依存性があれば1命令のみ発行.次の命令はその次の命令とペアを組む.• 命令の発行順はオリジナルプログラムのそれがキープされる.
31.10.2007 数理情報科学特別演習 7
命令のアウトオブオーダー発行
• 命令キュー全体(あるいは既定数の命令)について(オペランドの)依存関係を調べる
• 依存関係のない命令をissue数分パイプラインステージに送る.• 発行される順序はプログラムのそれと異なる可能性がある(アウトオブオーダー).
• すべてに依存関係があれば1命令発行も止むなし.
31.10.2007 数理情報科学特別演習 8
命令の依存関係チェックのハードウェア機構
• Instructionは“命令 D S1 S2”の形をとるとする.例えば“add r1,r3,r1”はr1←r3+r1である.
• 結果の入るレジスタをデスティネーション(D),操作対象のレジスタをソース(S1 or S2)と呼ぶ.
• ある命令のDと他の命令のSの関係より命令の依存関係が判明する.
31.10.2007 数理情報科学特別演習 9
(常に)アウトオブオーダー完了• 命令を並列処理するとレイテンシの違いで完了(リタイア)時のタイミングは異なる.これはインオーダー発行でも同じである.つまり基本的にスーパースカラではアウトオブオーダー完了の形をとる.
• 注意すべきは• WAW(Write After Write)のデータハザード
mulf r5,r3,r2 ; 遅いori r5,r4,0 ; 終了早い
• 例外発生後の再開mulf r1,r2,r3 ; 遅いori r3,r4,0 ; 終了早いException occurs(この時点でr3は更新され,r1はまだだと,再開はmulfからでないとまずい)
31.10.2007 数理情報科学特別演習 10
インオーダー完了• スーパースカラはアウトオブオーダー完了が基本(前スライド)だが,前述の如く種々の問題を含んでいる.そこで命令完了(リタイア)の最終ステージであるレジスタライトはプログラム順番通りにさせる.これをインオーダー完了
• このために(さらに)新たなるハードウェアを導入する.これをリオーダーバッファ(ReOrder Buffer; ROB)と呼ぶ.ここに各命令のプログラム上での順番を記録,各命令に対して実行が終了したかどうか記憶させる.
31.10.2007 数理情報科学特別演習 11
一般的なスーパースカラ構造
31.10.2007 数理情報科学特別演習 12
レジスタリネーミング
• アウトオブオーダー発行により生じる新たなデータハザード(WAR,WAW)の完全解消を目指す
• WAW(Write After Write):後続命令のレジスタ変更を遅れて実行された先行命令が書き直す.
• WAR(Write After Read):先行する命令のソースレジスタを後続の命令実行で書き直す.
• これらは相前後する命令で同じレジスタを利用している.そのレジスタの利用を他のレジスタで置き換えればこれらのハザードは回避できる.
• そのため(ハードウェアとして密かに)複数のレジスタを用意しそのような状況に陥ったときそれを利用すれば(ソフトウェアのコンシステンシは保たれたまま)ハザードを回避できる.
31.10.2007 数理情報科学特別演習 13
レジスタリネーミング例
• mulfはaddiよりレイテンシが長いとし,4-issuesのスーパースカラで実行されるとするとmulf r3,r3,r5addi r4,r3,1addi r3,r5,1mulf r7,r3,r4
• レジスタリネーミングを行いデスティネーションレジスタを置き換えるとmulf P1,r3,r5addi P2,P1,1addi P3,r5,1mulf r7,P3,P2
• RAWはレジスタリネーミングでも解消できない
WAWWAR
31.10.2007 数理情報科学特別演習 14
ここでも分岐予測は問題
• スーパースカラでも分岐命令の取り扱いには手を焼く(前回パイプラインと同じ状況)• 静的予測
• 例:通常not-taken,ループでtakenと固定• 動的予測
• Branch Prediction Buffer(BPB;BHT;takenするかどうか予測)とBranch Target Buffer(BTB;分岐先アドレス情報)方式の併用
• 投機(Speculative)実行taken/not-takenどちらの分岐先の命令も先を見越(予測)して実行させる
31.10.2007 数理情報科学特別演習 15
VLIW• VLIWはVery Long Instruction Wordの略.別にEPIC(Explicitly
Parallel Instruction Computer)とも呼ぶ.
• 複数のInstructionを1つの非常に(Very)長い(Long)語(InstructionWord)に詰め込み並列処理を目論む
• Word(100~200bitより構成)はいくつかのブロック(プロセッサの処理ユニットに対応)に分解され,各ブロックは数10bitでそのユニットの命令(+オペランド)を形作る.
• つまり非常に長い命令語に複数命令を詰め込めるだけ詰め込みそれらを並列動作させようとするもの.
• 現在までにさまざまなプロセッサが開発されていった.i860という64bitのLIWがある.整数計算浮動小数点計算を並列実行.
• さらにIntel(主要開発はHP)のItanium(2001.5発売),TransmetaのCrusoe(2000.1)などが市場に出回った.ともにx86命令を展開するのでWindows系PCに使われている.
31.10.2007 数理情報科学特別演習 16
VLIWの概念• 例えば148bitで1語の命令長をもつ.いくつかのブロック(20から40bit)に分けられ各部分に対応する命令をプログラムから取ってきて組み込む.それらは並列処理される.
• 並列スケジューリングハードウェアをプロセッサに内蔵させないので回路は簡単,消費電力も小さく押さえ込める
• プログラムから並列並びにハザードを考慮しながら命令を並べるのはソフトウェア(コンパイラあるいは変換ソフト)の仕事
31.10.2007 数理情報科学特別演習 17
命令のVLIWへの組み込み• 対応する命令が見つからない場合はNOP(No
OPeration)を詰め込む.• プログラムにもよるがあまり効率的な並列処理は期待できない.動画データの解凍,表示,圧縮などの反復操作で大きなパフォーマンスを発揮するとの期待もある.
• 効率を高めるためコンパイラに非常に多くのものを要求,依存しなければならない.
31.10.2007 数理情報科学特別演習 18
VLIW例:富士通FR-V(550)• FR550は1クロックで最大8命令/28演算を並列実行可能なVLIWプロセッサー• デジタル民生機器向けCPU• 32KB命令キャッシュ(4 way)と32KBデータキャッシュ(4 way)を内蔵• 1440MIPS,8640MOPS,1440FLOPS• 130nmCMOS• トランジスタ数は8300万個、ダイサイズは12×10mm。動作周波数は360MHz。
http://jp.fujitsu.com/microelectronics/products/micom/frv/hard/index.html