Advanced Computer Architecture

Slides:



Advertisements
Similar presentations
G ゼミ 2010/5/14 渡辺健人. パフォーマンスの測定 CUDA Visual Profiler CUDA の SDK に標準でついているパフォーマン ス測定用のツール 使い方: exe ファイルのパスと作業ディレクトリ指定して実 行するだけ 注意点 : GPU のコード実行後にプログラム終了前に,
Advertisements

CPU設計と パイプライン.
計算機システムⅡ 命令レベル並列処理とアウトオブオーダ処理
情報理工学系研究科 コンピュータ科学専攻 上嶋裕樹
07. 値予測 五島 正裕.
07. 値予測 五島 正裕.
ヘテロジニアスマルチコアプロセッサ 環境を対象としたキャッシュシステム 自動生成ツールの開発
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
ダイレクトマップキャッシュの構成 例: メモリアドレス=32ビット キャッシュ容量C=256Kbyte C=B×A×S ブロックサイズ(ラインサイズ)B=32byte セット数(ブロック数、ライン数)S=8K アソシアティビティA=1 (ダイレクトマップは1) メモリアドレス=32ビット タグ 14ビット.
計算機システムⅡ 主記憶装置とALU,レジスタの制御
高性能コンピューティング学講座 三輪 忍 高性能コンピューティング論2 高性能コンピューティング論2 第4回 投機 高性能コンピューティング学講座 三輪 忍
4. 順序回路 五島 正裕.
キャッシュ 頻繁にアクセスされるデータを入れておく小規模高速なメモリ 当たる(ヒット)、はずれる(ミスヒット) マッピング(割り付け)
Explorations in Symbiosis on two Multithreaded Architectures
2012年度 計算機システム演習 第4回 白幡 晃一.
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
プロセッサ設計教育のための 命令セット・スーパースカラシミュレータの試作と評価
高性能コンピューティング論2 第1回 ガイダンス
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
高性能コンピューティング論2 第5回 Out-of-Order実行機構
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
7. 順序回路 五島 正裕.
8. 順序回路の簡単化,機能的な順序回路 五島 正裕.
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
アドバンスト コンピュータ アーキテクチャ 五島.
6. 順序回路の基礎 五島 正裕.
Advanced Computer Architecture
・ディジタル回路とクロック ・プロセッサアーキテクチャ ・例外処理 ・パイプライン ・ハザード
プロジェクト実習 LSIの設計と実現 パイプライン実行とハザード.
アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン
非レイテンシ指向 レジスタ・キャッシュ・システム
2. 論理ゲート と ブール代数 五島 正裕.
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
11. マルチスレッド・プロセッサ 五島 正裕.
梅澤威志 隣の芝は茶色いか 梅澤威志
情報理工学系研究科 電子情報学専攻 豊島隆志
ディジタル回路 6. 順序回路の実現 五島 正裕.
10. マルチスレッド・プロセッサ 五島 正裕.
Advanced Computer Architecture
レジスタ間接分岐ターゲット・フォワーディング
Advanced Computer Architecture
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章
メモリ投機を支援する CMPキャッシュコヒーレンスプロトコルの検討
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
08. メモリ非曖昧化 五島 正裕.
計算機構成 第11回 マルチサイクルCPU 慶應大学 天野英晴.
コンピュータアーキテクチャ 第 10 回.
09. メモリ・ディスアンビギュエーション 五島 正裕.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
コンピュータアーキテクチャ 第 10 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 2 回.
8. 順序回路の実現 五島 正裕.
アルゴリズムとデータ構造1 2009年6月15日
コンピュータアーキテクチャ 第 4 回.
SpectreとMeltdown ITソリューション塾・第27期 2018年3月20日 株式会社アプライド・マーケティング 大越 章司
プロセッサ設計支援ツールを用いた 独自プロセッサの設計
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 11 回.
SMP/マルチコアに対応した 型付きアセンブリ言語
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
アルゴリズムとデータ構造 2010年6月17日
6.3 インタプリタ (1)インタプリタ(interpreter)とは
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

Advanced Computer Architecture 06. 分岐予測器とトレース・キャッシュ 五島 正裕 2019/2/24

Advanced Computer Architecture 内容 分岐予測の復習 分岐予測の効果 分岐予測器 トレース・キャッシュ

Advanced Computer Architecture 分岐予測の復習 2019/2/24

投機のフェーズ cycle 予測 (prediction) 実行 (execution) Advanced Computer Architecture 投機のフェーズ 予測 (prediction) 実行 (execution) 確認 (verification, confirmation) キャンセル,回復,再実行 (cancellation, recovery, re-execution) cycle A 1. 予測 3. 確認 4. 再実行 B B 2. 実行

分岐予測 cycle add r5 = r4 + r3 be r1 == r2 r8 = r6 + r7 add r8 = r8 + 1 Advanced Computer Architecture 分岐予測 cycle 確認 add r5 = r4 + r3 IF IF OR OR IF EX MEM EX OR WB EX MEM be r1 == r2 IF r8 = r6 + r7 add r8 = r8 + 1 WB MEM PC 予測 フェッチ r9 = r6 - r7 sub r8 = *(r9) ld WB

分岐予測 cycle add r5 = r4 + r3 be r1 == r2, L0 r8 = *(r6) ld r9 = r9 + 1 Advanced Computer Architecture 分岐予測 cycle 確認 add r5 = r4 + r3 IF OR EX MEM IF WB OR IF be r1 == r2, L0 r8 = *(r6) ld r9 = r9 + 1 add r9 = r8 << 1 sla r8 = r9 - 1 sub L0: r8 = r6 + r7 add r8 = r8 + 1 r9 = r6 - r7 sub r8 = *(r9) ld IF OR IF OR IF EX OR EX MEM WB MEM PC 予測 フェッチ WB 再フェッチ

分岐予測 cycle add r5 = r4 + r3 be r1 == r2, L0 r8 = *(r6) ld r9 = r9 + 1 Advanced Computer Architecture 分岐予測 cycle add r5 = r4 + r3 IF OR EX MEM IF WB OR IF be r1 == r2, L0 r8 = *(r6) ld r9 = r9 + 1 add r9 = r8 << 1 sla r8 = r9 - 1 sub L0: IF OR EX OR EX MEM WB MEM WB ミス・ペナルティ (= H, M = 0)

投機の効果 「毎回かかるレイテンシを,ミス時のペナルティに」 (予測ミスによるレイテンシの増加)= Advanced Computer Architecture 投機の効果 「毎回かかるレイテンシを,ミス時のペナルティに」 (予測ミスによるレイテンシの増加)= (予測率) ×(予測ミス率) ×(ミス・ペナルティ) 予測ミス率が十分小さければ (ex. 1%), ミス・ペナルティは1~2サイクル長くなってもよい

Advanced Computer Architecture 分岐予測の効果 2019/2/24

分岐命令の出現頻度 Run Length : 分岐から次の分岐までの命令数 3~5命令 フェッチ幅 2~4 だと… Advanced Computer Architecture 分岐命令の出現頻度 Run Length : 分岐から次の分岐までの命令数 3~5命令 フェッチ幅 2~4 だと… ほとんど毎サイクル,分岐命令をフェッチ

分岐予測の効果 (1/4) プログラム n :プログラムの命令数 b :そのうち,分岐命令の割合 プロセッサ: Advanced Computer Architecture 分岐予測の効果 (1/4) プログラム n :プログラムの命令数 b :そのうち,分岐命令の割合 プロセッサ: p :分岐予測ミス・ペナルティ プログラム on プロセッサ i0 :分岐予測ミス率 0% の時の IPC β :分岐予測ミス率

分岐予測の効果 (2/4) 分岐予測ミス率 0% の時のプログラムの実行サイクル数: n / i0 分岐予測ミスによる実行サイクル数の増加: Advanced Computer Architecture 分岐予測の効果 (2/4) 分岐予測ミス率 0% の時のプログラムの実行サイクル数: n / i0 分岐予測ミスによる実行サイクル数の増加: n b p β 分岐予測ミス率 β の時の IPC: n / {n / i0 + n b p β} = 1/ {1 / i0 + b p β}

分岐予測の効果 (3/4) 分岐予測ミス率 β の時の IPC: 1/ {1 / i0 + b p β} Advanced Computer Architecture 分岐予測の効果 (3/4) 分岐予測ミス率 β の時の IPC: 1/ {1 / i0 + b p β} i0 = 2,b = 0.2,p = 10 とすると, 1/ {1 / i0 + b p β} = 1 / { 0.5 + 0.2 ×10× β} = 1 / (0.5 + 2β) β 0% 1% 3% 5% 10% 50% 100% IPC 2.0 1.92 1.79 1.67 1.43 0.67 0.4 IPC 低下率 −0% −4% −11% −16% −29% −66% −80%

Advanced Computer Architecture 分岐予測の効果 (4/4) 1 / (0.5 + 2β) i0 = 2 0.4 β O 1.0

Advanced Computer Architecture 分岐予測器 2019/2/24

制御命令 (分岐命令) op Rs Rt immediate (条件)分岐命令 if (cond) PC = PC + immediate; Advanced Computer Architecture 制御命令 (分岐命令) (条件)分岐命令 if (cond) PC = PC + immediate; branch on register cond: R[Rs] == 0, R[Rs] > 0, … compare and branch cond: R[Rs] == R[Rt], R[Rs] != R[Rt] op Rs Rt immediate 31 25 20 15

インターロックの排除(制御ハザード) cycle I0 be I1 I0 next PC 計算器 be I1 be 遅延分岐 I0 I1 Advanced Computer Architecture インターロックの排除(制御ハザード) cycle I0 IF ID EX MEM WB be IF ID EX MEM WB I1 IF ID EX MEM WB I0 IF OR EX MEM WB next PC 計算器 be IF OR EX MEM WB nPC I1 IF OR EX MEM WB be IF OR EX MEM WB nPC 遅延分岐 I0 IF OR EX MEM WB I1 IF OR EX MEM WB

スーパスカラ・プロセッサと遅延分岐 cycle I0 be I1 I2 be I0 I1 I2 IF OR EX MEM WB IF OR Advanced Computer Architecture スーパスカラ・プロセッサと遅延分岐 cycle I0 IF OR EX MEM WB be IF OR EX MEM WB nPC I1 IF OR EX MEM WB I2 IF OR EX MEM WB be IF OR EX MEM WB nPC I0 IF OR EX MEM WB I1 IF OR EX MEM WB I2 IF OR EX MEM WB

スーパスカラ・プロセッサと遅延分岐 遅延分岐では救えない 分岐スロットの数 スカラなら1命令で OK だった. 2命令同時フェッチなら? Advanced Computer Architecture スーパスカラ・プロセッサと遅延分岐 遅延分岐では救えない 分岐スロットの数 スカラなら1命令で OK だった. 2命令同時フェッチなら? 4命令なら? 分岐予測が必須

分岐予測に使える情報 毎サイクル,フェッチするためには, 命令をフェッチしてから next PC を求めるのでは遅い Advanced Computer Architecture 分岐予測に使える情報 毎サイクル,フェッチするためには, 命令をフェッチしてから next PC を求めるのでは遅い 「fetch PC だけから次の fetch PC を!」

スーパスカラ・プロセッサの分岐予測 cycle I0 be I1 I2 be I0 I1 I2 fetch PC fetch PC Advanced Computer Architecture スーパスカラ・プロセッサの分岐予測 cycle fetch PC I0 IF OR EX MEM WB fetch PC be IF OR EX MEM WB I1 IF OR EX MEM WB I2 IF OR EX MEM WB fetch PC be IF OR EX MEM WB fetch PC I0 IF OR EX MEM WB I1 IF OR EX MEM WB I2 IF OR EX MEM WB

分岐予測 分岐予測: 分岐方向予測 分岐アドレス予測 Advanced Computer Architecture 分岐予測 分岐予測: 分岐方向予測 分岐アドレス予測 bool pred_taken = branch_dir_pred(fetch_PC); addr_t taken_PC = btb_lookup(fetch_PC); /* BTB ミスなら 0 */ addr_t untaken_PC = fetch_PC + INSN_SIZE * FETCH_WIDTH; addr_t next_PC = (taken_PC && pred_taken) ? taken_PC : untaken_PC;

BTB : Branch Target Buffer Advanced Computer Architecture BTB : Branch Target Buffer tag valid taken PC fetch PC selector taken PC

分岐方向予測の原理 その1 ローカル分岐履歴 (local branch history) 基本的には,前回と同じだろう Advanced Computer Architecture 分岐方向予測の原理 その1 ローカル分岐履歴 (local branch history) 基本的には,前回と同じだろう ヒステリシスを持たせ,発振を防ぐ

2-bit 飽和形カウンタ (2-bit saturating counter) Advanced Computer Architecture 2-bit 飽和形カウンタ (2-bit saturating counter) fetch PC PHT (Pattern History Table) 11 strongly taken 10 10 weakly taken 01 weakly untaken 00 strongly untaken taken untaken

PHT (Pattern History Table) Advanced Computer Architecture PHT (Pattern History Table) タグ,有効ビットがない 「ミス」がない コンフリクト(衝突)が起こる あまり気にしなくてもよい どうせ,そこそこ外れるものだから エントリ数が十分多ければ(数K),確率は低い タグの分だけ PHT のエントリを増やしたほうが得 PHT: 2b タグ: 10~30b

分岐方向予測 分岐予測: bool pred_taken = branch_dir_pred(fetch_PC); Advanced Computer Architecture 分岐方向予測 分岐予測: bool pred_taken = branch_dir_pred(fetch_PC); addr_t taken_PC = btb_lookup(fetch_PC); addr_t untaken_PC = fetch_PC + 4 * FETCH_WIDTH; addr_t next_PC = taken_PC && pred_taken ? taken_PC : untaken_PC;

分岐方向予測の原理 その2 グローバル分岐履歴 (global branch history) ローカルは,自身の履歴 Advanced Computer Architecture 分岐方向予測の原理 その2 グローバル分岐履歴 (global branch history) ローカルは,自身の履歴 グローバルは,すべての分岐 最近実行された分岐,12回程度の結果を記録 たとえば: for (int i = 0; i < N; ++i) if (i % 2) even(); else odd(); NNNTNNNT…

Global History Register Advanced Computer Architecture gshare (McFarling ‘93) 同じ分岐でも, グローバル履歴が異なれば, 別のカウンタを使用. ただし,コンフリクトが多発 数十パタン/分岐 コンフリクトを軽減する研究 「要は,圧縮」 fetch PC 0001 PHT 00 XOR 01 0010 11 1 1 01 01 Global History Register 01 01 01

分岐命令のプロファイル 1.0 1.0 0.0 0.0 分岐の方向には,偏りがある 利用して,テーブルを圧縮 taken 率 taken 率 Advanced Computer Architecture 分岐命令のプロファイル 分岐の方向には,偏りがある 利用して,テーブルを圧縮 taken 率 taken 率 1.0 1.0 0.0 0.0  分岐命令 (taken 率でソート) always untaken always taken

パーセプトロン分岐予測機 パーセプトロン:ニューラル・ネットワークの一種 今後,流行るかも. Advanced Computer Architecture パーセプトロン分岐予測機 パーセプトロン:ニューラル・ネットワークの一種 今後,流行るかも.

Advanced Computer Architecture トレース・キャッシュ 2019/2/24

命令キャッシュ fetch PC 1 2 3 4 5 6 7 Cache Lines 1 2 3 4 5 6 7 Rotator 31 5 Advanced Computer Architecture 命令キャッシュ fetch PC 31 5 2 1 2 3 4 5 6 7 Cache Lines 1 2 3 4 5 6 7 Rotator

命令キャッシュ 通常 fetch PC 1 1 2 2 3 3 4 4 5 5 6 7 Cache Lines 1 2 3 4 5 6 7 Advanced Computer Architecture 命令キャッシュ 通常 fetch PC 1 31 5 2 1 2 2 3 3 4 4 5 5 6 7 Cache Lines 1 2 3 4 5 6 7 Rotator

命令キャッシュ ラインを跨ぐ fetch PC 1 1 1 2 3 4 5 6 6 7 7 Cache Lines 1 1 2 3 4 5 Advanced Computer Architecture 命令キャッシュ ラインを跨ぐ fetch PC 1 1 31 5 2 1 2 3 4 5 6 6 7 7 Cache Lines 1 1 2 3 4 5 6 7 Rotator

命令キャッシュ 分岐を含む fetch PC 1 1 2 2 3 3 4 4 5 5 6 7 Cache Lines 1 2 3 4 5 6 Advanced Computer Architecture 命令キャッシュ 分岐を含む fetch PC 1 31 5 2 1 2 2 3 3 4 4 5 5 6 7 Cache Lines 1 2 3 4 5 6 7 Rotator

命令キャッシュ 分岐を含む fetch PC 1 1 1 2 3 4 5 6 7 Cache Lines 1 2 3 3 4 4 5 5 6 Advanced Computer Architecture 命令キャッシュ 分岐を含む fetch PC 1 1 31 5 2 1 2 3 4 5 6 7 Cache Lines 1 2 3 3 4 4 5 5 6 6 7 Rotator 2 3 4 5

フェッチ・グループ フェッチ・グループ 同時にフェッチされる命令のグループ fetch PC: フェッチ・グループの先頭命令の PC Advanced Computer Architecture フェッチ・グループ フェッチ・グループ 同時にフェッチされる命令のグループ fetch PC: フェッチ・グループの先頭命令の PC next PC: 次の fetch PC フェッチ・グループに分岐命令が含まれている場合, その分岐命令の予測された飛び先の PC

困難 フェッチ・グループが: キャッシュ・ラインを跨ぐ場合: キャッシュ・ヒット/ミス判定器が複数必要 分岐を含む場合: Advanced Computer Architecture 困難 フェッチ・グループが: キャッシュ・ラインを跨ぐ場合: キャッシュ・ヒット/ミス判定器が複数必要 分岐を含む場合: その分岐の予測先のフェッチは困難 もう1サイクル前に予測しておく必要があった 次の次の分岐予測器 予測できても,バンク・コンフリクトが発生 分岐を複数含む ?

トレース・キャッシュ fetch PC 2 3 4 5 Traces 2 3 4 3 6 7 1 dir pred XOR 31 2 Advanced Computer Architecture トレース・キャッシュ fetch PC 31 2 2 3 4 5 XOR Traces 2 3 4 3 6 7 1 dir pred

トレース・キャッシュ トレース: 分岐先 (branch target) アドレスから始まる, ある(予測)パスに沿った命令の列 Advanced Computer Architecture トレース・キャッシュ トレース: 分岐先 (branch target) アドレスから始まる, ある(予測)パスに沿った命令の列 トレース・キャッシュ: トレース単位でキャッシング HW が単純に ただし,アレイの利用効率が悪い

トレース・キャッシュの位置 I$ T$ I$ T$ Insn Pipe Insn Pipe タンデム (Pentium 4) パラレル Advanced Computer Architecture トレース・キャッシュの位置 I$ T$ I$ T$ Insn Pipe Insn Pipe タンデム (Pentium 4) パラレル

Advanced Computer Architecture 今日のまとめ 2019/2/24

分岐予測器 taken PC BTB (branch target buffer) 分岐方向予測器 ローカル履歴 グローバル履歴 Advanced Computer Architecture 分岐予測器 taken PC BTB (branch target buffer) 分岐方向予測器 ローカル履歴 グローバル履歴

トレース・キャッシュ トレース・キャッシュ: トレース単位でキャッシング ある種のバイナリ変換 Advanced Computer Architecture トレース・キャッシュ トレース・キャッシュ: トレース単位でキャッシング ある種のバイナリ変換 個々の命令ではなく,トレースをフェッチしているように見える トレース = 長命令? VLIW?

Advanced Computer Architecture 今後の予定 次週 値予測