Intelの新しい第12世代CPU Alder Lake-Sが発売されてから1月あまり経ちました。海外のコミュニティを見ていると、新CPUをmacOSで使うためのハッキングが進捗しています。昨日(2021/12/05)あたりには12900Kの24スレッド中の、20スレッドまでをmacOSで使うkextが紹介されました。近いうちにAlder Lakeの全性能を引き出せるようになるのではと思います。
追記:OpenCore 0.7.6が公開されたので更新しました。
Table of Contents
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のリリースに合わせて、安定したバージョンが提供されていくと思われます。
お疲れ様です。
MaLd0nさんが、
Vanilla Hackintosh Alder Lake Z690 with i9-12900K and AMD Radeon RX 6600 – Full DSDT Patched – OpenCore Bootloader
を紹介してるですね。
https://www.insanelymac.com/forum/topic/349837-vanilla-hackintosh-alder-lake-z690-with-i9-12900k-and-amd-radeon-rx-6600-full-dsdt-patched-opencore-bootloader/
“Alder Lake-S”のAVX-512は今後のBIOSで完全に無効化される模様 (北森瓦版より)
https://northwood.blog.fc2.com/blog-entry-11204.html