win11 CPUの制限について

win11をインストール可能なハードウェアの要件が再提示されて、話題になっている。
いくつか項目があるが、CPUの制限はどうしてだろうかと思う。遅くてもいい人は遅いなりに運用すればいいのだし、と思う。少なくとも、Windows 11自体は古いPCでも動作するのだから。しかし事情があるらしい。

https://ascii.jp/elem/000/004/061/4061479/
当初Microsoftは、Intelであれば第8世代Core以降、AMDであればRyzen 2000シリーズ以降と発表した。2018年に登場した、かなり新しい世代のCPUからしか対応していない。ところが、評判が悪く、足切りの基準をIntel、AMDそれぞれ1世代前のCPUとなる第7世代Core、初代Ryzenに緩和すると明らかにした。

記事から引用すると、
おそらく2018年に公開されたSpectre/Meltdown(以下、これらの変種を含めSpectre/Meltdownと表記する)という脆弱性に関係するものだと思われる。簡単に言えば、Spectre/Meltdown対策が最初からなされているIntel第8世代、AMD Zen+世代以降をWindows 11のアップグレード対象にしたのだ。

 Spectre/Meltdownは、2017年に発見されたが、投機実行を装備する広範囲のCPU(少なくともIntel、AMD、ARM)に影響するものであったため、公開より先に対策を優先させて、その発表は2018年1月まで伏せられた。その影響を受けたのが第7世代、Zen世代のCPUだ。Spectre/Meltdownを発見したProject Zeroによれば、CPUメーカーに正式に通知されたのは2017年6月だという。

2017年6月(2017Q2)以前に出荷されたCPUに関しては、マイクロコードのパッチで対応する必要があった。Kaby Lakeはちょうどその境界にあった製品だった。つまり、Kaby Lakeの出荷開始後にSpectre/Meltdownが発覚したため、Kaby Lakeは、再設計してステッピングを変更(再設計の時間が必要)するか、マイクロコードをアップデートするか(PC側のファームウェアの変更が必要)のどちらかでしか対策ができなかった。

これに対して、第8世代のCoffee Lakeに関しては、出荷前にSpectre/Meltdownが発見されたため、対策した製品を出荷することが可能だった。

 AMDも同様で、最初のZen世代の出荷中にSpectre/Meltdownが発覚、Intelの第7世代と同様の対応を取る必要があった。Zen+世代は、その後の出荷になるため、おそらく対策された製品が出荷されたのだと思われる

 つまり、最初のWindows 11のアップグレード条件、第8世代/Zen+世代以降というのは、Spectre/Meltdown対策が最初からなされているかどうかが線引きの条件だったのだろう。Microsoftはなぜここにこだわったのか? それはWindows 11では、Spectre/Meltdownの「緩和策」「対応策」を排除したいからだろう。

 Spectre/Meltdownの対応策は、システムの速度低下を引き起こした。CPUのマイクロコードアップデートでは、修正範囲が限定されるため、安全を取るか、速度を取るかといった二択になりやすい。ソフトウェア側の対策も処理効率を落としてしまう。SpectreV2(Branch Target Injection)では、CPUのマイクロコードアップデートだけでは不十分で、Windows側も対策を強いられた。

 そこで導入されたのが「緩和策」だ。プログラムをSpectre/Meltdownに影響されないコードに書き換えるという方法だ。ソフトウェア的な緩和策の1つ「retpoline」は、Jump命令をPush命令とRet命令に置き換えることでSpectreV2を回避できる。Jump命令とRet命令では、実行のメカニズムが違い、Ret命令ではSpectreV2の原因となるブランチターゲットバッファ(分岐先を記憶しておく機構)が使われなくなる。しかし、命令数が増えてしまうため、緩和策を適用する前と同じ速度を保てるというものでもない。このように「緩和策」はWindowsの効率を落としていた。

 Windowsを始め現在のOSは、高級言語で書かれているため、retpolineのような緩和策を実現するには、コンパイラーを書き換える必要がある。こうした緩和策やコンパイラーの改造は、それが原因で別の問題を引き起こす可能性があった。実際、Windowsの緩和策アップデートにより、ゲームアプリが起動しないといった問題が生じたようだ。

 さらにretpolineの手法は、悪意のあるプログラムからの攻撃手法ROP(Return Oriented Programming)に似ているため、IntelのTiger Lakeに搭載されたCET(Control-Flow Enforcement Technology)に影響してしまう。この世代のCPUで使うためにはretpolineなどの緩和策は外す必要がある。

 Microsoftは、Windows 11にこれらのSpectre/Meltdown関連の緩和策、回避策をもう組み込みたくないのであろう。そもそもSpectre/MeltdownはCPU側の問題である。Spectre/Meltdownの緩和策、回避策が入っていないWindowsは、第7世代/Zen世代より前のプロセッサでも動作はするが、脆弱性が残ったままの危険な状態だ。とはいえ、今後減少こそすれ、決して増えることがないこうした古いCPUのために緩和策を入れたままにしておくのは、今後のソフトウェア改良の足かせになりかねない。

 そういうわけで、MicrosoftはWindows 11のアップグレード条件を最初からSpectre/Meltdown対策がしてある第8世代/Zen+世代以降としたのではないだろうか。

ーーーーー
いろいろな説明の中では説得力のあるものだと思う。
なるほど、それなら、素直に2025年までwin10で継続が良い。ほとんどの人は、win10に何かの改良を望んではいないように思う。現状維持でいいじゃないかと。ゲーマーなどどんどん進歩したい人はwin10とは別建てで進歩してくれればよい。
マイクロソフトの収益構造としても、windowsそのものは大きな柱ではないと記事にある。しかしその分、人材投入は限られ、win10のアップデートでの不具合も生じたりしているらしい。
ーーーーー
2025年を過ぎたらLinuxも考慮することになるだろう。