Bulldozer (マイクロアーキテクチャ)
(一般的なコード全体としてより現実的には、ポラックの法則は 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キャッシュへの書き込み数を減らすことである。
Windowsのスケジューラは空いているコアに対してスレッドを割り振るが、対策前のWindowsでは「Bulldozerコア」の特性(フロントエンドやFPUの共有)を考慮していないため、同一モジュール内かどうかを考慮せずにスレッドを割り振る。このために空いているモジュールがあるにもかかわらず、同一モジュールにスレッドを割り振ってフロントエンドやFPUがボトルネックになり性能低下が起こる事があった。
マイクロソフトは2012年1月にKB2645594とKB2646060のパッチを公開しこの問題に対応した。KB2645594はBulldozerコア1基を物理1コア論理2コアと見立てるように修正するパッチで、KB2646060はKB2645594の副作用でBulldozerコアが頻繁にC6ステートに入ってしまい,結果,マルチスレッド化があまり進んでいない環境で性能が低下する問題を修正するパッチである。
このパッチ群により性能低下への対応は行われたが、対策後のWindowsからは 物理コア数=Bulldozerコア数のSMTタイプCPUとして扱われるため、本来の性能を発揮しているかどうかは未知数である。
AMDはWindows 8でBulldozerへの最適化がなされるようマイクロソフトと協力しているという。