Advanced Computer Architecture 05. Out-of-Order 実行機構 五島 正裕 2015/10/1 Advanced Computer Architecture 内容 1. レジスタ・リネーミングの復習 2. 分岐予測の復習 3. レジスタ・リネーミングと分岐予測 2 Advanced Computer Architecture レジスタ・リネーミングの復習 2015/10/1 Advanced Computer Architecture 4 論理レジスタ,物理レジスタ 論理レジスタ (logical register) 命令のフィールドで指定する r0 ~ r31 「データ・フローを表現するための名前,タグ」 必ずしも,物理的に存在している必要はない 高級言語で言えば「変数」 物理レジスタ (physical register) 「データの物理的な格納場所」 高級言語で言えば「物理メモリ(のロケーション)」 op 31 Rs 25 Rt 20 Rd 15 shamt func 10 0 Advanced Computer Architecture 物理レジスタの管理 空き物理 Reg のプール 1. 割り当て (allocation): 空き物理 Reg を取得,デスティネーションに割り当てる 論理→物理マッピングを確立 2. 解決 (resolution): ソースの論理 Reg にマップされている物理 Reg を見つける 3. 解放 (free): 不要になった物理 Reg をプールに返す 5 Advanced Computer Architecture 6 レジスタ・リネーミング ― 割り当て と 解決 RFRF 命令 キャッシュ フェッチ Fetch リネーム 命令 ウィンドウ ロジック リネーム Rename ディスパッチ Dispatch スケジュール Schedule 演算器 発行 Issue 実行 Exec 書戻 WB Advanced Computer Architecture 7 レジスタ・リネーミング― 割り当て と 解決 命令は,リネーム・ロジックを In-Order に通過する プログラム・オーダが分かる ld 物理 Reg プール データ依存が分かる r1 p11 = *($sp) sla r2 p12 = r1 << 1 p11 sla r3 p13 = r1 << 2 p11 add r4 p14 = r3 + r2 p13 p12 Reg マップ テーブル p0 p11 p12 p13 p14 p10 p11 p12 p13 p14 r1 r2 r3 r4 r31 p63 Advanced Computer Architecture 分岐予測の復習 2015/10/1 Advanced Computer Architecture 9 投機のフェーズ 1. 予測 (prediction) 2. 実行 (execution) 3. 確認 (verification, confirmation) 4. キャンセル,回復,再実行 (cancellation, recovery, re-execution) cycle A 1. 予測 3. 確認 2. 実行 B 4. 再実行 Advanced Computer Architecture 10 分岐予測 cycle 3. 確認 add r5 = r4 + r3 IF OR EX MEM WB be IF OR EX MEM WB r1 == r2 add r8 = r6 + r7 IF OR EX MEM WB PC 予測 add r8 = r8 1. + 1 IF OR EX MEM WB 2. フェッチ sub r9 = r6 - r7 IF OR EX MEM WB ld IF OR EX MEM WB r8 = *(r9) Advanced Computer Architecture 11 分岐予測 cycle 3. 確認 add r5 = r4 + r3 IF OR EX MEM WB be IF OR EX MEM WB r1 == r2, L0 L0: ld add r8 = *(r6) r6 + r7 PC add r9 r8 = r8 1. + 1 sla << 1 予測 IF OR IF OR EX MEM WB IF OR IF OR EX MEM WB 2. フェッチ add sub r9 = r9 r6 + - 1 r7 ld r8 = r9 *(r9) sub - 1 4. 再フェッチ IF IF OR EX M IF IF OR EX M Advanced Computer Architecture 12 分岐予測 cycle add r5 = r4 + r3 IF OR EX MEM WB be IF OR EX MEM WB L0: ld r1 == r2, L0 r8 = *(r6) sla r9 = r8 << 1 IF OR IF OR EX MEM WB IF OR IF OR EX MEM WB add r9 = r9 + 1 IF IF OR EX M sub r8 = r9 - 1 IF IF OR EX M ミス・ペナルティ (= H, M = 0) Advanced Computer Architecture 投機の効果 「毎回かかるレイテンシを,ミス時のペナルティに」 (予測ミスによるレイテンシの増加)= (予測率) ×(予測ミス率) ×(ミス・ペナルティ) 予測ミス率が十分小さければ (ex. 1%), ミス・ペナルティは1~2サイクル長くなってもよい 13 Advanced Computer Architecture 14 分岐予測とフロントエンド/バックエンド RFRF 命令 キャッシュ フェッチ Fetch リネーム 命令 ウィンドウ ロジック リネーム Rename フロントエンド front-end ディスパッチ Dispatch スケジュール Schedule 演算器 発行 Issue 実行 Exec バックエンド back-end 書戻 WB Advanced Computer Architecture 分岐予測とフロントエンド/バックエンド フロントエンド 分岐予測に基づいて自律的に,命令を命令ウィンドウに詰める バックエンド 命令ウィンドウ内から発行された命令を,実際に実行する 分岐予測の結果を確かめる BE ⇒ FE のインタラクション 分岐予測ミスのみ 15 Advanced Computer Architecture 4.レジスタ・リネーミングと分岐予測 2015/10/1 Advanced Computer Architecture 分岐予測ミス時の回復 予測した分岐命令の,プログラム・オーダ上で下流の命令: 投機的に実行された命令 予測がミスであった場合, 投機的に実行された命令の実行を取り消す,具体的には, デスティネーション・レジスタ(論理)の内容を元に戻す 書き潰すと OUT! 投機的に実行した命令は, マシン・ステートを不可逆的に更新してはいけない 17 Advanced Computer Architecture 18 サンプル・コード int i = 3; do { i--; } while (i > 0) C ソース・コード li L0: sub bgtz r1 = 3 r1 = r1 - 1 r1 > 0, L0 アセンブリ・コード Advanced Computer Architecture 19 分岐予測に基づいてフェッチ li L0: sub bgtz r1 = 2 r1 = r1 - 1 r1 > 0, L0 li L0: sub bgtz L0: sub bgtz L0: sub bgtz r1 r1 r1 r1 r1 r1 r1 = = > = > = > 2 r1 0, r1 0, r1 0, - 1 L0 - 1 L0 - 1 L0 アセンブリ・コード 予測したパス (taken) に沿って フェッチされた命令の列 Advanced Computer Architecture 論理 Reg の可逆的な更新 Reg リネーミング 各命令のデスティネーションに1つずつ物理 Reg を割り当てる すべての命令の結果が保存してある 書き潰される心配はない 要は,マルチ・バージョンの管理: 最新のバージョンを読む 不要なバージョンを捨てる ミス時には,適切なバージョンに戻す 20 Advanced Computer Architecture 論理 Reg の可逆的な更新 データベース,ファイル・システム の回復 (recovery) に類似 基本は: 1. ロギング 2. チェックポインティング ただし,対象は fault ではなく,予測ミス 21 Advanced Computer Architecture 1. ロギング リオーダ・バッファ (reorder buffer): 論理 Reg に対する書き込みログを保存 論理 Reg ファイル (logical register file): commit された書き込みログを書き出す 22 Advanced Computer Architecture 23 2. ロギング 論理 Reg ファイル li L0: sub bgtz L0: sub bgtz L0: sub bgtz r1 r1 r1 r1 r1 r1 r1 = = > = > = > 2 r1 0, r1 0, r1 0, - 1 L0 - 1 L0 - 1 L0 命令 Dst li sub bgtz sub bgtz sub bgtz r1 r1 r1 r1 Src r1 r1 r1 r1 r1 r1 命令ウィンドウ r1 r31 r1 r1 r1 r1 2 1 0 -1 予測したパス (taken) に沿って フェッチされた命令の列 リオーダ・バッファ Advanced Computer Architecture 24 2. ロギング 論理 Reg ファイル li L0: sub bgtz L0: sub bgtz L0: sub bgtz r1 r1 r1 r1 r1 r1 r1 = = > = > = > 2 r1 0, r1 0, r1 0, - 1 L0 - 1 L0 - 1 L0 命令 Dst li sub bgtz sub bgtz sub bgtz r1 r1 r1 r1 Src r1 r1 r1 r1 r1 r1 命令ウィンドウ r1 2 r31 r1 r1 r1 r1 2 1 0 -1 予測したパス (taken) に沿って フェッチされた命令の列 リオーダ・バッファ Advanced Computer Architecture 25 2. ロギング 論理 Reg ファイル li L0: sub bgtz L0: sub bgtz L0: sub bgtz r1 r1 r1 r1 r1 r1 r1 = = > = > = > 2 r1 0, r1 0, r1 0, - 1 L0 - 1 L0 - 1 L0 命令 Dst li sub bgtz sub bgtz sub bgtz r1 r1 r1 r1 Src r1 r1 r1 r1 r1 r1 r1 2 1 r31 r1 r1 r1 1 0 -1 命令ウィンドウ 予測したパス (taken) に沿って フェッチされた命令の列 リオーダ・バッファ Advanced Computer Architecture 1. ロギング 最新のバージョンを読む リオーダ・バッファから,順に探す 無ければ,論理 Reg ファイルを読む 不要なバージョンを捨てる 分岐予測が確認されたら,論理 Reg ファイルに書き出す ミス時に,適切なバージョンに戻す リオーダ・バッファのエントリを捨てる 26 Advanced Computer Architecture 2. チェックポインティング チェックポイント = 分岐 ごとに,論理 Reg の内容をバックアップ 予測ミス時に,対応するバックアップをレストア 最適化: 論理 Reg 全体(64b x 64本?)ではなく, Reg マップ・テーブル(5b x 32本)をバックアップ. 27 Advanced Computer Architecture 28 2. チェックポインティング r1 p11 p12 p13 命令 li L0: sub bgtz L0: sub bgtz L0: sub bgtz r1 r1 r1 r1 r1 r1 r1 = = > = > = > 2 r1 0, r1 0, r1 0, - 1 L0 - 1 L0 - 1 L0 Dst li p11 sub p12 bgtz sub p13 bgtz Src r31 p11 p12 p12 p13 命令ウィンドウ Reg マップ・テーブル p11 p12 p13 p14 予測したパス (taken) に沿って フェッチされた命令の列 物理 Reg ファイル Advanced Computer Architecture 29 2. チェックポインティング p12 r1 p13 p14 li L0: sub bgtz L0: sub bgtz L0: sub bgtz r1 r1 r1 r1 r1 r1 r1 = = > = > = > 2 r1 0, r1 0, r1 0, - 1 L0 - 1 L0 - 1 L0 命令 Dst li sub bgtz sub bgtz sub bgtz p11 p12 p13 p14 Src r31 p11 p12 p12 p13 p13 p14 命令ウィンドウ Reg マップ・テーブル p11 p12 p13 p14 予測したパス (taken) に沿って フェッチされた命令の列 物理 Reg ファイル Advanced Computer Architecture 30 2. チェックポインティング p12 p13 r1 p14 li L0: sub bgtz L0: sub bgtz L0: sub bgtz r1 r1 r1 r1 r1 r1 r1 = = > = > = > 2 r1 0, r1 0, r1 0, - 1 L0 - 1 L0 - 1 L0 命令 Dst li sub bgtz sub bgtz sub bgtz p11 p12 p13 p14 Src r31 p11 p12 p12 p13 p13 p14 命令ウィンドウ Reg マップ・テーブル p11 p12 p13 p14 予測したパス (taken) に沿って フェッチされた命令の列 物理 Reg ファイル Advanced Computer Architecture 31 2. チェックポインティング p12 p13 p14 r1 p13 p11 p14 p12 li L0: sub bgtz L0: sub bgtz L0: sub bgtz r1 r1 r1 r1 r1 r1 r1 = = > = > = > 2 r1 0, r1 0, r1 0, - 1 L0 - 1 L0 - 1 L0 命令 Dst li sub bgtz sub bgtz sub bgtz p11 p12 p13 p14 Src r31 p11 p12 p12 p13 p13 p14 命令ウィンドウ Reg マップ・テーブル p11 p12 p13 p14 2 1 0 -1 予測したパス (taken) に沿って フェッチされた命令の列 物理 Reg ファイル Advanced Computer Architecture 1. チェックポインティング 最新のバージョンを読む Reg マップ・テーブルの最新のバージョンを使用する 不要なバージョンを捨てる(Reg マップ・テーブル) 分岐予測が確認されたら,対応するバージョンを捨てる 不要なバージョンを捨てる(物理 Reg) 同一 Reg に上書きする命令が commit されたら,古いバージョン を捨てる ミス時に,適切なバージョンに戻す Reg マップ・テーブルを適切なバージョンに戻す 32 Advanced Computer Architecture 正確な割り込み 例外 (exception) トラップ (trap) 割り込み (interruption) 正確な割り込み (precise interruption) 例外を発生した命令 より前の命令はすべて完了, 以降の命令はすべて未実行 分岐予測と類似 ロギングが必要 すべての命令に対してバックアップを取るわけにはいかない 33 Advanced Computer Architecture 今日のまとめ 2015/10/1 Advanced Computer Architecture レジスタ・リネーミング + 分岐予測 投機的に実行し,予測ミス時に元に戻す 「論理 Reg の可逆的な更新」 要は,マルチ・バージョンの管理: 最新のバージョンを読む 不要なバージョンを捨てる ミス時には,適切なバージョンに戻す 35 Advanced Computer Architecture 論理 Reg の可逆的な更新 データベース,ファイル・システム の回復 (recovery) に類似 基本は: 1. ロギング 2. チェックポインティング ただし,対象は fault ではなく,予測ミス 36 Advanced Computer Architecture 今後の予定 次週 分岐予測器,トレース・キャッシュ 37
© Copyright 2025 ExpyDoc