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を使った方法が公開されました。
Rebuild asymmetric CPU topology on macOS. Contribute to acidanthera/CpuTopologySync development by creating an account on GitHub. GitHub - acidanthera/CpuTopologySync: Rebuild asymmetric CPU topology on macOS. - GitHub |
まだ開発中で制約がありますが、これを使うとEコアをさらに活用できます。正確には、Pコア+PコアのHTに加えて、Eコアの半分までを使用できるようです。12900Kの場合、物理コアが12コア、HTが8スレッドで、合計20スレッドになります。残りの4スレッドは、アクティビティモニタには24スレッドのグラフが現れるものの、うち4スレッドが動作しないようです。
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さんのポストに、この方法がコンパクトに書かれています。
EFI folder v. 0.6The generic EFI folders have been amended to OpenCore 0.7.6. Acidanthera's SSDT-PLUG-ALT replaces SSDT-CPUR-Z690.As with the previous release, there are two EFIs. Pick a sample.plist, fill in serial numbers, check configuration and rename to config.plist.DEBUG is intended... Z690 Chipset and Alder Lake CPUs - tonymacx86.com |
全スレッドを使う方法
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のリリースに合わせて、安定したバージョンが提供されていくと思われます。