1 ポイント 投稿者 GN⁺ 2024-07-28 | 1件のコメント | WhatsAppで共有

Zen 5の2-Ahead Branch Predictor Unit: 30年前のアイデアが新しいトリックを可能にする方法

  • 序論

    • AMDのZen 5アーキテクチャは、従来のZenアーキテクチャを完全に再設計したもの
    • 最も重要な変化の1つは、新しい2-Ahead Branch Predictor Unit
    • このアイデアは30年前の論文に由来する
  • Branch Predictorの重要性

    • コンピュータはプログラムをメモリに保存し、それを実行する
    • プロセッサは命令を取得して実行するフロントエンドとバックエンドに分かれる
    • 条件付きジャンプはパイプラインを埋めるうえで大きな課題となる
    • 誤予測が起きると、パイプラインをフラッシュして再開しなければならない
    • そのため、プロセッサは可能な限り正確にプログラム命令シーケンスを予測する必要がある
  • 2-Ahead Branch Predictorの登場

    • 1990年代初頭から提案されていたアイデア
    • TAGE predictorのような、より効率的な方法が開発された
    • しかし、シングルコア性能を向上させるために2-Ahead Branch Predictorが再び注目されている
  • x86アーキテクチャの利点

    • x86は、固定長命令を持つ他のISAよりも2-Ahead Branch Predictionで大きな利点を得られる
    • x86では命令境界を決定するために、より複雑な処理が必要になる
    • Zen 5は2本の32バイト・フェッチパイプと4-wideのデコードクラスタを使用する
  • Seznec論文の実装

    • Seznec論文は2-Ahead Branch Predictorを実装する方法を説明している
    • Zen 5はこの論文の推奨事項に従っている
    • 2本の32バイト・フェッチパイプと6-wideデュアルポートオフキャッシュを使用する
    • L1 BTBとL2 BTBを使用して予測精度を高める
  • 結論

    • Zen 5の2-Ahead Branch PredictorはZenアーキテクチャにおける重要な変化
    • この新しい予測器は、今後のZenコア開発に大きく役立つだろう

GN⁺のまとめ

  • Zen 5の2-Ahead Branch Predictorは、30年前のアイデアを現代的に再解釈したもの
  • この技術はプロセッサの命令予測精度を高め、性能を向上させる
  • x86アーキテクチャの複雑さに対処するうえで特に有用
  • この記事はCPUアーキテクチャと性能最適化に関心のある人にとって有益
  • 類似の機能を持つ別のプロジェクトとして、IntelのGolden Coveアーキテクチャがある

1件のコメント

 
GN⁺ 2024-07-28
Hacker Newsのコメント
  • branch prediction についての素晴らしい説明がある
  • SMT の性能が興味深そう。Zen5c では 192 Core または 384vCPU を提供しており、Zen 6c では 256 Core を期待できる。Dual Socket 1U Server なら 512 Core と 1024 vCPU の可能性がある
    • 2014年の Web アプリのスケーリング問題を単一サーバーで解決できるかもしれない。冷却の問題さえ解決できればよい
    • 1 vCPU あたり 1 RPS として 1000 RPS が可能。キャッシュヒットは除く
    • HN のフロントページですら 1秒あたり 1000 ページビューを超えない
  • 何十年も前の論文が、ハードウェアの進歩によって「最先端」になるのは興味深い
    • 例: Z-buffer。3D ビデオゲームで使われている
    • 最初に論文として発表されたときは主要なテーマではなかった。メモリ要求量が大きかったため
    • 数十年後、メガバイト級メモリが安価になると、あらゆるリアルタイム 3D レンダラーが使うようになった
  • speculative predictor は個人データを漏えいさせるさまざまな攻撃に脆弱である。多くの一般的な ISA が脆弱だが、この種の攻撃の影響を軽減する対策を取っているのか気になる
  • この分野の初心者として、2-ahead branch predictor が何なのかはっきりしない
  • もっと多くの branch hints が必要だと思う
    • Cold、warm、warmer、デフォルトでは hot を省略する感じだろうか? すべての分岐を cold に設定して 1つだけ例外にするのが悪いアイデアなのか気になる
    • 条件分岐があるとき、2つの可能な分岐を両方とも取得して準備し、間違った方を捨てるのがなぜ難しいのか気になる
  • もっと大きなメモリ帯域幅が必要だ。コンシューマー向け AM5 ソケットの 2つのメモリチャネルは、性能に対して不足している
    • M2 Max に移行したが、メモリ帯域幅の改善がデータ作業を高速化した。重いマルチタスクでも Zen 構成の狭いメモリパイプが頻繁にボトルネックになる
  • Zen 5 では 2つのスレッドを有効にすると、decode cluster とそれに付随する fetch パイプが静的に分割される
    • これはハイパースレッディング性能を大きく向上させそうだ。Zen1 では HT によって約 25% 高速化した。最近のモデルでテストした人がいるのだろうか
  • それでも 2-ahead branch predictor が何なのか分からない