Bulldozerコア
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/11 04:27 UTC 版)
「Bulldozer (マイクロアーキテクチャ)」の記事における「Bulldozerコア」の解説
Bulldozerはプロセッサのある一部は2つのスレッドの間で共有され、またある一部はスレッドごとに固有である技法、「クラスタード・マルチスレッディング(CMT)」を駆使する。型破りなマルチスレッディングへのそのようなアプローチの以前の例は、2005年のサン・マイクロシステムズのUltraSPARC T1プロセッサにまで遡ることができる。 ハードウェアの複雑さと機能性の観点から、ブルドーザーCMTモジュールは、整数演算能力においてデュアルコアプロセッサと、浮動小数点演算能力の点においては、同じCMTモジュールで実行されている両方のスレッドの浮動小数点命令でコードが飽和しているかどうかそして、FPUが128ビットまたは256ビットの浮動小数点演算を実行しているかどうかに応じて、シングルコアまたはハンディキャップのあるデュアルコアプロセッサのいずれかと同等である。この理由は、つまり同じモジュール内に、2つの整数コアごとに、128ビットFMAC実行ユニットの対からなる単一のFPUが存在するためである。 CMTは、ある意味でSMTと単純だが、類似した設計哲学である; どちらの設計も、実行ユニットを効率的に利用しようとする; どちらの方法でも、2つのスレッドが一部の実行パイプラインをめぐって競合すると、1つかそれ以上のスレッドのパフォーマンスが低下する。専用の整数コアにより、Bulldozerファミリーモジュールは完全に整数であるか、整数と浮動小数点の計算が混在するコードのセクションで、ほぼデュアルコアの、デュアルスレッドプロセッサのように動作した; ただし、SMTは共有浮動小数点パイプラインを使用するため、モジュールは、浮動小数点命令で飽和スレッドのペアについてシングルコアのデュアルスレッドSMTプロセッサ(SMT2)と同様に振る舞う。(これらの最後の2つの比較はどちらもプロセッサがそれぞれ、整数単位と浮動小数点単位で、等幅で同等能力のある実行コアを持っていることを前提としている。) CMTとSMTはどちらも整数と浮動小数点コードをスレッドのペアで実行しているときに最大の効果を発揮する。CMTは両方共に整数コードから成るスレッドのペアで作業している間、最高の効果を維持し、一方SMTの下では、整数実行ユニットの競合により一方または両方のスレッドのパフォーマンスが低下する。CMTの欠点はシングルスレッドの場合にアイドル状態の整数実行ユニットの数が増えることである。シングルスレッドの場合、CMTはモジュール内の整数実行ユニットの最大半分を使用するように制限されているが、SMTはそのような制限を課していない。2つのCMTコアと同じ幅で高速な整数回路を備えた大規模なSMTコアは、理論上、シングルスレッドの場合に瞬間的に最大2倍の整数パフォーマンスを発揮する。(一般的なコード全体としてより現実的には、ポラックの法則は 2 {\displaystyle {\sqrt {2}}} のスピードアップ係数、つまりパフォーマンスの約40%の向上を推定する。) CMTプロセッサと一般的なSMTプロセッサは、スレッドのペア間でL2キャッシュを効率的に共有して使用する点で類似している。 モジュールは、2つの「従来の」x86アウトオブオーダー処理コアのカップリングで構成されている。処理コアは、パイプラインの初期段階(例えば L1命令(キャッシュ)、フェッチ、デコードなど)、FPU、およびモジュールの残りの部分と共にL2キャッシュを共有する。各モジュールには、次の独立したハードウェアリソースがある。 1コアあたり16KBの4ウェイL1データ(キャッシュ)(ウェイ予測)および1モジュールあたり2ウェイ64KBのL1命令(キャッシュ)、2つのコアのそれぞれに1ウェイ 1モジュールごとに2MBのL2キャッシュ(2つの整数コア間で共有) Write Coalescing(合体) Cache(W.C.C.)は、BulldozerマイクロアーキテクチャにおいてL2キャッシュの一部である特別なキャッシュである。 1モジュール内の両方のL1データキャッシュからのストアは、W.C.C.を通過し、そこでバッファリングおよび合体される。W.C.C.のタスクは、L2キャッシュへの書き込み数を減らすことである。 2つの専用整数コア–それぞれの整数コアに2つのALUと2つのAGUが含まれており、1コアごとの1クロックごとに合計4つの独立した算術演算とメモリ操作が可能である。 –整数スケジューラと実行パイプラインを複製することは、2つのスレッドのそれぞれに専用のハードウェアが提供され、マルチスレッドの整数負荷の性能が2倍になる。 –モジュールの2番目の整数コアは、Bulldozerモジュールのダイを約12%増加させ、チップレベルでダイスペース全体の約5%が追加される。 モジュールごとに2つの対称128ビットFMAC(融合積和演算機能つき)浮動小数点パイプラインは整数コアの1つがAVX命令と2つの対称x87/MMX/SSE対応浮動小数点パイプラインをディスパッチして、SSE2非最適化ソフトウェアとの下位互換性を確保する場合、1つの大きな256ビット幅のユニットに統合できる。各FMACユニットは、可変レイテンシーでの除算および平方根演算も可能である。 存在するすべてのモジュールは、高度なデュアルチャネルメモリサブシステム(IMC – 統合メモリコントローラー)と同様にL3キャッシュを共有する。 1つのモジュールには、(2MBの共有L2キャッシュを含む)オロチダイ上の30.9mm²のエリアに2億1300万個のトランジスタがある。 Bulldozerのパイプラインの深さは(同様にPiledriverとSteamrollerも)、前身のK10コアの12サイクルと比較して、20サイクルである。 より長いパイプラインにより、Bulldozerファミリーのプロセッサは、前身のK10と比較してはるかに高いクロック周波数を達成することができた。これにより周波数とスループットが向上したが、パイプラインが長くなると、レイテンシが増加し、分岐予測の予測ミスによるペナルティが増加した。 Bulldozer整数コアの幅(4 = (2ALU + 2AGU))は、K10コアの幅(6 = (3ALU + 3AGU))よりもいくらか狭くなっている。BobcatとJaguarも4つのワイド整数コアを使用したが、まだより軽い実行ユニットで:1つのALU、1つの単純なALU、1つのロードAGU、1つのストアAGUである。 Jaguar、K10、およびBulldozerコアの(命令)発行幅(およびサイクルごとの命令実行ピーク)は、それぞれ2、3、および4である。これにより、BulldozerはJaguar/Bobcatと比較してよりスーパースカラーのデザインになった。しかしながら、(第1世代の設計には改良と最適化がないことに加えて)K10のコアがやや広いため、Bulldozerアーキテクチャは通常、前身のK10と比較してやや低いIPCで実行された。BulldozerファミリーのIPCがPhenom IIなどのK10プロセッサのIPCを明らかに上回り始めたのは、PiledriverとSteamrollerで行われた改良が行われるまではなかった。
※この「Bulldozerコア」の解説は、「Bulldozer (マイクロアーキテクチャ)」の解説の一部です。
「Bulldozerコア」を含む「Bulldozer (マイクロアーキテクチャ)」の記事については、「Bulldozer (マイクロアーキテクチャ)」の概要を参照ください。
- Bulldozerコアのページへのリンク