第7世代/Zen世代のPCでも
一部はWindows 11にアップグレード可能!?
Windows Insider Previewでプレビュー版Windows 11の配布が開始された。また、Windows 11のアップグレード条件に関しては、ちょっとしたアップデートがあった。
発表当初は、Windows 11にアップグレード可能なのは、Intelの第8世代以降、AMDのZen+世代以降とされていた。しかし、その後に公開されたMicrosoftのブログでは、第7世代やZen世代のPCがアップグレードに適するかどうか、PCメーカーと調査して報告するという表現になった。
第7世代/Zen世代のメーカー製PCであっても、Microsoftが定める「原則」(Principal)を満たすなら、アップグレードを可能にするかもしれないということだ。もし、CPUのスペックだけがインストールの可否をきめているのであれば、こうした表現にはならない。つまり、CPUのスペック以外になんらかの条件が存在している。
今配布されているプレビュー版Windows 11は、インストール時のチェックがないため、第7世代以前のPCにもインストールが可能だ。筆者の環境では、第4世代にはインストールできたが、第3世代はインストールが失敗した。少なくとも、Windows 11自体は古いPCでも動作する。
Windows 11のアップグレード条件とは、Microsoftが決めた「原則」に合うか合わないかで決められるもので、動く・動かないという技術的な条件ではない。これは、おそらく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月だという。
●Project Zero Blog「Reading privileged memory with a side-channel」
https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html
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+世代は、その後の出荷になるため、おそらく対策された製品が出荷されたのだと思われる。
CPU脆弱性の対応はもうOSではしたくない
つまり、最初の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+世代以降としたのではないだろうか。
この連載の記事
-
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 - この連載の一覧へ