このページの本文へ

前へ 1 2 次へ

Windows Info 第282回

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

2021年07月04日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

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

 Windows Insider Previewでプレビュー版Windows 11の配布が開始された。また、Windows 11のアップグレード条件に関しては、ちょっとしたアップデートがあった。

アップデートされた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のマシンにもインストール自体は可能だった

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

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン