Alder Lake-SをmacOSで動かすハッキング

Intelの新しい第12世代CPU Alder Lake-Sが発売されてから1月あまり経ちました。海外のコミュニティを見ていると、新CPUをmacOSで使うためのハッキングが進捗しています。昨日(2021/12/05)あたりには12900Kの24スレッド中の、20スレッドまでをmacOSで使うkextが紹介されました。近いうちにAlder Lakeの全性能を引き出せるようになるのではと思います。

追記:OpenCore 0.7.6が公開されたので更新しました。

Comet Lakeに偽装する方法

こちらでも紹介しましたが、Alder Lake-SとZ690マザーボードの組み合わせで、macOSがかなり安定して動作しています。macOSで元々サポートされているComet Lake-Sと比べて、遜色のないくらい安定しています。M1 Maxにを凌駕する性能でもあることから、早々にメインマシンにしても良いと考えているくらいです。

この手法では、Alder Lake-SをComet Lake-SとしてmacOSに認識させています。その場合、Alder Lakeから導入されたPコア/Eコアの構成は活用できず、一部のコアを使用できません。例えば、最上位モデルの12900Kの場合、P+E+ハイパースレッド(HT)で24スレッドが用意されているのに対して、Eコア、またはHTを除く、合計16スレッドしか使えません。表にまとめておきました。

12900K Pコア PコアHT Eコア 合計TH GB5 Multi
スコア
本来の構成 8 8 8 24 ?
macOS
(8コア)
8 8 0 16 ~13000+
macOS
(16コア)
8 0 8 16 ~13000-
CpuTopologySync
(12コア)
8 8 4 20 ~16000

それでもM1 Maxより良いベンチマークスコアが得られます。Geekbench 5のMulti-core Scoreでは13000くらいです。Geekbench 5ブラウザのサイトで検索すると、

このページで、8コアもしくは16コアと表示されるのが、これらの結果です。8コアがPコア+HTの設定、16コアがPコア(HTなし)+Eコアの設定です。Eコアを使わない方が、多少良いスコアになるので、16コアの結果はほとんど見られなくなりました。

CpuTopologySync.kextを使う方法

昨日(2021/12/05)あたりに、acidentheraさんからCpuTopologySync.kextというkextを使った方法が公開されました。

まだ開発中で制約がありますが、これを使うとEコアをさらに活用できます。正確には、Pコア+PコアのHTに加えて、Eコアの半分までを使用できるようです。12900Kの場合、物理コアが12コア、HTが8スレッドで、合計20スレッドになります。残りの4スレッドは、アクティビティモニタには24スレッドのグラフが現れるものの、うち4スレッドが動作しないようです。

この理由は、CpuTopologySync.kextのコメントによると、XNU割り込みコントローラの仕様のためらしいです。

 After this only half of the efficient cores will be active.
The reason for this is the way XNU interrupt controller works.
cpu_topology_start_cpu will not start any CPU, which index is
outside machine_info.max_cpus, and max_cpus is equal to a total
number of _active_ CPUs.
* Trying to increase this value results in a stall, likely because
non-existent ("hyperthreaded" counterprarts of E-Cores) CPUs
do not come live.
* Trying to add non-existent CPUs after all E-Cores does not work
either as they are treated as physical cores on the die,
and thus result in the same asymmetric topology crash.

XNU割り込みコントローラがEコアのHTにアクセスしようとするらしいです。それでコアを半分に設定しておいて、HTへアクセスしようとしてもコアが足りるようにしているようです。

それでもEコアが働く効果により、Geekbench 5のマルチコアスコアが16000以上になるそうです。Geekenchブラウザで、コア数12となっているスコアがこれに相当します。シングルスレッド性能のバラツキや低下もなく、効率良く動いている様子です。kextを使用する以外に、

  • カーネルにパッチを当てる(config.plistにパッチの記載を追加する)
  • 開発版最新版のLilu.kextを使う
  • Liluの直後にCpuTopologySync.kextを読み込む

などの作業・要件が必要です。etorixさんのポストに、この方法がコンパクトに書かれています。

全スレッドを使う方法

Geekbench 5 ブラウザを見ていると、24コアで動く12900Kのスコアが掲載されています。詳細を見ると、3 Prosessors, 24 Coresと書かれています。おそらくは、Pコア、HT、Eコアをそれぞれ仮想CPUに見立てて、24コアを使い切った構成だと考えられます。でも今のところ、CpuTopologySync.kextで12コア20スレッドにする場合と、ベンチマークスコアはあまり変わらないです。

まとめ

Alder Lake-SでmacOSを動かすハッキングは、ここ1ヶ月くらいでどんどん進捗しています。海外のフォーラムを見ていると、その成果に沸く様子が伝わってきて楽しいです。今のところCpuTopologySync.kextでEコアが半分になってしまう点など、まだまだ改善の余地はありそうです。今後のOpenCoreのリリースに合わせて、安定したバージョンが提供されていくと思われます。

2件のコメント

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です