Windows 11にアップグレード可能なCPUは基本はやっぱり第8世代/Zen+以降になりそう?

© アスキー 提供

第7世代/Zen世代のPCでも一部はWindows 11にアップグレード可能!?

 Windows Insider Previewでプレビュー版Windows 11の配布が開始された。また、Windows 11のアップグレード条件に関しては、ちょっとしたアップデートがあった。アップデートされたWindows 11のアップグレード条件だが、ブログでは「Windows Insidersへリリースや、OEMメーカーと提携により、インテル第7世代やAMD Zen 1を搭載したデバイスの中から、当社の原則に合致するものを特定するためのテストをします」と記されている© アスキー 提供 アップデートされたWindows 11のアップグレード条件だが、ブログでは「Windows Insidersへリリースや、OEMメーカーと提携により、インテル第7世代やAMD Zen 1を搭載したデバイスの中から、当社の原則に合致するものを特定するためのテストをします」と記されている

 発表当初は、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 Insider PreviewのWindows 11は、Intelの第4世代CPUのマシンにもインストール自体は可能だった© アスキー 提供 Windows Insider PreviewのWindows 11は、Intelの第4世代CPUのマシンにもインストール自体は可能だった第3世代CPUを搭載したSurface Pro(初代)は、Windows 11のインストールに失敗。バージョンは上がったが、見た目はWindows 10のままという状態になってしまった© アスキー 提供 第3世代CPUを搭載したSurface Pro(初代)は、Windows 11のインストールに失敗。バージョンは上がったが、見た目はWindows 10のままという状態になってしまった

 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に搭載されたCST(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+世代以降としたのではないだろうか。

では、どうやってWindows 11対応かを調べるのか?

 では、冒頭に記した「第7世代、Zen世代のPCがアップグレードに適するかどうか、PCメーカーと調査する」というのはどういうことか? これは、第7世代/Zen世代のCPUを搭載したマシンで、Spectre/Meltdown対策が済んでいるかどうかを調べるということだろう。

 一般にCPU脆弱性対策は、マイクロコードのアップデートか、CPUの設計変更によってなされている。マイクロコードのアップデートは、PCのファームウェア(UEFI。まだBIOSと呼ぶ人もいるが……)に組み込まれ、電源オンの直後にプロセッサに読み込まれる。CPU自体を交換する必要はないものの、アップデートが更新されると、PCのファームウェア書き換え(BIOS書き換え)が必要になる。これに対してCPUを設計変更して対策変更するためには、それなりの時間がかかる。

 第7世代/Zen世代の場合、出荷後にSpectre/Meltdownが発覚したため、それ以前に製造されたPCは、ファームウェアアップデートが必須だ。それは、PCメーカーの責任で行われるため、調査にはPCメーカーの協力が必要となる。

 ファームウェアのアップデートはユーザーから放置されることもあれば、メーカーがもう存在しないので配布が止まっていることもあり、PCは古いマイクロコードアップデートのままになっている可能性がある。おそらくこのあたりを調べて許容範囲の機種には、Windows 11のアップデートを許可するのではないかと思われる。

 そういうわけで、第7世代/Zen世代のWindows 11へのアップグレードは機種を限定したものになるだろう。また、筆者が予想したように原因がSpectre/Meltdown対策にあるとしたら、第7世代やZenより前の世代のプロセッサーにアップグレード範囲を広げる可能性はかなり低いと思われる。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中