Advanced Computer Architecture 06. 分岐予測器とトレース・キャッシュ 五島 正裕 2015/10/1 Advanced Computer Architecture 内容 1. 分岐予測の復習 2. 分岐予測の効果 3. 分岐予測器 4. トレース・キャッシュ 2 Advanced Computer Architecture 分岐予測の復習 2015/10/1 Advanced Computer Architecture 4 投機のフェーズ 1. 予測 (prediction) 2. 実行 (execution) 3. 確認 (verification, confirmation) 4. キャンセル,回復,再実行 (cancellation, recovery, re-execution) cycle A 1. 予測 3. 確認 2. 実行 B 4. 再実行 Advanced Computer Architecture 5 分岐予測 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 6 分岐予測 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 7 分岐予測 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サイクル長くなってもよい 8 Advanced Computer Architecture 分岐予測の効果 2015/10/1 Advanced Computer Architecture 分岐命令の出現頻度 Run Length : 分岐から次の分岐までの命令数 3~5命令 フェッチ幅 2~4 だと… ほとんど毎サイクル,分岐命令をフェッチ 10 Advanced Computer Architecture 11 分岐予測の効果 (1/4) プログラム n :プログラムの命令数 b :そのうち,分岐命令の割合 プロセッサ: p :分岐予測ミス・ペナルティ プログラム on プロセッサ i0 :分岐予測ミス率 β :分岐予測ミス率 0% の時の IPC Advanced Computer Architecture 分岐予測の効果 (2/4) 分岐予測ミス率 0% の時のプログラムの実行サイクル数: n / i0 分岐予測ミスによる実行サイクル数の増加: nbpβ 分岐予測ミス率 β の時の IPC: n / {n / i0 + n b p β} = 1/ {1 / i0 + b p β} 12 Advanced Computer Architecture 13 分岐予測の効果 (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 14 分岐予測の効果 (4/4) 1 / (0.5 + 2β) i0 = 2 0.4 O β 1.0 Advanced Computer Architecture 分岐予測器 2015/10/1 Advanced Computer Architecture 17 制御命令 (分岐命令) (条件)分岐命令 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 31 Rs 25 Rt 20 immediate 15 0 Advanced Computer Architecture 18 インターロックの排除(制御ハザード) cycle I0 IF be ID EX MEM WB IF ID EX MEM WB I1 I0 IF IF be OR EX IF MEM OR nPC be I0 I1 OR nPC IF EX OR EX MEM WB MEM WB OR IF MEM next PC 計算器 MEM WB IF IF EX WB EX I1 ID EX OR MEM WB EX MEM WB 遅延分岐 W Advanced Computer Architecture 19 スーパスカラ・プロセッサと遅延分岐 cycle I0 IF OR be IF OR EX nPC EX MEM WB MEM WB I1 IF OR EX MEM WB I2 IF OR EX MEM WB be IF OR I0 IF OR nPC EX EX MEM WB MEM WB I1 IF OR EX MEM WB I2 IF OR EX MEM WB Advanced Computer Architecture スーパスカラ・プロセッサと遅延分岐 遅延分岐では救えない 分岐スロットの数 スカラなら1命令で OK だった. 2命令同時フェッチなら? 4命令なら? 分岐予測が必須 20 Advanced Computer Architecture 分岐予測に使える情報 毎サイクル,フェッチするためには, 命令をフェッチしてから next PC を求めるのでは遅い 「fetch PC だけから次の fetch PC を!」 21 Advanced Computer Architecture 22 スーパスカラ・プロセッサの分岐予測 cycle fetch PC I0 IF be IF OR EX fetch PC OR EX MEM WB MEM WB I1 IF OR EX MEM WB I2 IF OR EX MEM WB fetch PC be IF I0 IF OR EX fetch PC OR EX MEM WB MEM WB I1 IF OR EX MEM WB I2 IF OR EX MEM WB Advanced Computer Architecture 23 分岐予測 分岐予測: 分岐方向予測 分岐アドレス予測 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; Advanced Computer Architecture 24 BTB : Branch Target Buffer fetch PC tag valid taken PC selector taken PC Advanced Computer Architecture 分岐方向予測の原理 その1 ローカル分岐履歴 (local branch history) 基本的には,前回と同じだろう ヒステリシスを持たせ,発振を防ぐ 25 Advanced Computer Architecture 26 2-bit 飽和形カウンタ (2-bit saturating counter) fetch PC PHT (Pattern History Table) 10 taken 11 strongly taken 10 weakly taken 01 weakly untaken 00 strongly untaken untaken Advanced Computer Architecture PHT (Pattern History Table) タグ,有効ビットがない 「ミス」がない コンフリクト(衝突)が起こる あまり気にしなくてもよい どうせ,そこそこ外れるものだから エントリ数が十分多ければ(数K),確率は低い タグの分だけ PHT のエントリを増やしたほうが得 PHT: 2b タグ: 10~30b 27 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; 28 Advanced Computer Architecture 29 分岐方向予測の原理 その2 グローバル分岐履歴 (global branch history) ローカルは,自身の履歴 グローバルは,すべての分岐 最近実行された分岐,12回程度の結果を記録 たとえば: for (int i = 0; i < N; ++i) if (i % 2) even(); else odd(); NNNTNNNT… Advanced Computer Architecture 30 gshare (McFarling ‘93) fetch PC 0001 PHT 00 XOR 0010 0 0 1 1 Global History Register 01 11 01 01 同じ分岐でも, グローバル履歴が異なれば, 別のカウンタを使用. ただし,コンフリクトが多発 数十パタン/分岐 01 01 01 コンフリクトを軽減する研究 「要は,圧縮」 Advanced Computer Architecture 31 分岐命令のプロファイル 分岐の方向には,偏りがある 利用して,テーブルを圧縮 taken 率 taken 率 1.0 1.0 0.0 0.0 分岐命令 (taken 率でソート) always untaken always taken Advanced Computer Architecture パーセプトロン分岐予測機 パーセプトロン:ニューラル・ネットワークの一種 今後,流行るかも. 32 Advanced Computer Architecture トレース・キャッシュ 2015/10/1 Advanced Computer Architecture 34 命令キャッシュ fetch PC 31 5 2 0 0 4 1 5 2 6 3 7 0 4 1 5 2 6 3 7 Cache Lines Rotator Advanced Computer Architecture 35 命令キャッシュ 通常 fetch PC 010 31 5 2 0 0 4 1 5 2 6 3 7 0 4 1 5 2 6 3 7 Cache Lines Rotator Advanced Computer Architecture 36 命令キャッシュ ラインを跨ぐ fetch PC 110 31 5 2 0 0 4 1 5 2 6 3 7 0 4 1 5 2 6 3 7 Cache Lines Rotator Advanced Computer Architecture 37 命令キャッシュ 分岐を含む fetch PC 010 31 5 2 0 0 4 1 5 2 6 3 7 0 4 1 5 2 6 3 7 Cache Lines Rotator Advanced Computer Architecture 38 命令キャッシュ 分岐を含む fetch PC 0 1 10 31 5 2 0 0 4 1 5 2 6 3 7 0 4 1 5 2 6 3 7 Cache Lines Rotator 2 3 4 5 Advanced Computer Architecture フェッチ・グループ フェッチ・グループ 同時にフェッチされる命令のグループ fetch PC: フェッチ・グループの先頭命令の PC next PC: 次の fetch PC フェッチ・グループに分岐命令が含まれている場合, その分岐命令の予測された飛び先の PC 39 Advanced Computer Architecture 困難 フェッチ・グループが: キャッシュ・ラインを跨ぐ場合: キャッシュ・ヒット/ミス判定器が複数必要 分岐を含む場合: その分岐の予測先のフェッチは困難 – もう1サイクル前に予測しておく必要があった – 次の次の分岐予測器 予測できても,バンク・コンフリクトが発生 分岐を複数含む ? 40 Advanced Computer Architecture 41 トレース・キャッシュ fetch PC 31 2 XOR dir pred 0 2 3 4 5 2 3 4 3 6 7 0 1 Traces Advanced Computer Architecture トレース・キャッシュ トレース: 分岐先 (branch target) アドレスから始まる, ある(予測)パスに沿った命令の列 トレース・キャッシュ: トレース単位でキャッシング HW が単純に ただし,アレイの利用効率が悪い 42 Advanced Computer Architecture 43 トレース・キャッシュの位置 I$ T$ I$ T$ Insn Pipe Insn Pipe タンデム (Pentium 4) パラレル Advanced Computer Architecture 今日のまとめ 2015/10/1 Advanced Computer Architecture 分岐予測器 taken PC BTB (branch target buffer) 分岐方向予測器 ローカル履歴 グローバル履歴 45 Advanced Computer Architecture トレース・キャッシュ トレース・キャッシュ: トレース単位でキャッシング ある種のバイナリ変換 個々の命令ではなく,トレースをフェッチしているように見える トレース = 長命令? VLIW? 46 Advanced Computer Architecture 今後の予定 次週 値予測 47
© Copyright 2024 ExpyDoc