3 ポイント 投稿者 GN⁺ 2024-07-29 | まだコメントはありません。 | WhatsAppで共有

2つのスレッド、1つのコア: 同時マルチスレッディングの仕組み

背景と動機
  • SMT導入の背景: プロセッサ資源の活用効率を高めるために導入された。プロセッサには数百個のレジスタ、複数のロード/ストアユニット、演算ユニットがある。これらをより有効に活用するため、命令レベル並列性(ILP)技術が使われる。
  • 命令パイプライニング: 命令実行を複数段階に分け、各サイクルごとに新しい命令を追加で処理する。パイプラインが深いほど、より多くの命令を並列に処理できる。
  • スーパースカラーアーキテクチャ: 各サイクルで複数の命令を発行できる。たとえば最新の Intel Core i7 プロセッサは、各サイクルで4個の命令を発行できる。
  • 水平的および垂直的な無駄: 十分な独立命令を見つけられないときに発生する資源の無駄。水平的な無駄は、プロセッサが十分な独立命令を見つけられないときに発生し、垂直的な無駄は、すべての命令が現在実行中の命令に依存しているときに発生する。
Intel プロセッサにおける SMT 実装
  • アーキテクチャ状態の複製: 2つのスレッドを同時に実行するため、プロセッサのアーキテクチャ状態を複製する。これにより、1つの物理プロセッサが OS には2つの論理プロセッサとして見える。
  • 資源の共有と複製: 一部の資源は複製され、一部は共有される。複製するかどうかは、消費電力やチップ上の実際の面積など、複数の要因によって決まる。

プロセッサのマイクロアーキテクチャ

  • フロントエンド、バックエンド、リタイアメントユニット: プロセッサのマイクロアーキテクチャは3つの部分に分かれる。フロントエンドは命令をフェッチしてデコードし、バックエンドは実行資源を割り当てて命令を実行する。リタイアメントユニットは、実行された命令の結果をアーキテクチャ状態にコミットする。
SMT 実装の詳細
  • フロントエンド: 命令ポインタ、トレースキャッシュ、ITLB キャッシュ、uop キューなど複数の構成要素から成る。各構成要素は、2つの論理プロセッサをサポートするために複製または共有される。
  • バックエンド: 資源割り当て器、レジスタリネーミング、命令準備キュー、命令スケジューラなどで構成される。資源割り当て器は各サイクルごとに論理プロセッサ間で切り替わる。
  • リタイアメントユニット: 命令がアーキテクチャ状態にコミットされる準備が整うと、それを追跡して正しい順序でコミットする。

メモリサブシステム

  • TLB: 仮想アドレスを物理アドレスに変換する小さなキャッシュ。2つの論理プロセッサ間で動的に共有される。
  • L1、L2、L3 キャッシュ: 各 CPU コアは独自の L1 キャッシュを持つ。L2 キャッシュはマイクロアーキテクチャによって異なる場合があり、L3 キャッシュはコア間で共有される。

SMT の性能への影響

  • 単一スレッド実行: SMT が有効なコアで単一スレッドを実行すると、資源が共有されるため性能が低下する可能性がある。
  • 2つのスレッドの実行: キャッシュアクセスパターンに応じて性能は変わりうる。協調的なスレッドは性能を向上させる可能性がある一方、競合するスレッドは性能を低下させる可能性がある。
  • セキュリティ脆弱性: 近年、SMT に関連するセキュリティ問題が発見されている。資源共有と命令の投機実行により、機微なデータが漏えいする可能性がある。

結論

  • SMT を使うかどうかの判断: SMT は CPU 資源の活用効率を高め、命令スループットを増やすために設計されているが、性能面およびセキュリティ面でトレードオフがある。ワークロードに応じて SMT を使うかどうかを判断することが重要である。

GN⁺ の要約

  • SMT の理解: SMT は CPU 資源の活用効率を高め、命令スループットを増やすために設計されている。
  • 性能とセキュリティ: SMT は性能向上に役立つことがあるが、資源競合やセキュリティ脆弱性により、性能低下やセキュリティ問題が発生する可能性がある。
  • 使用可否の判断: ワークロードに応じて SMT を使うかどうかを慎重に判断する必要がある。高性能が必要な場合は、SMT を無効化するのが望ましい。
  • 関連プロジェクト: AMD の SMT 実装や ARM プロセッサにおける SMT 性能分析プロジェクトも参考になる。

まだコメントはありません。

まだコメントはありません。