KB4090007 Intel microcode updates 2/2 ― Revision Number

最終更新日

Windows 1709起動時のMicrocodeは0xC2に。BIOSは変わらず。

KB4090007は、C:\Windows\System32\mcupdate_GenuineIntel.dll(Intel Microcode Update Library)を更新し、関連するファイルを作成しました。その結果、Microcode Update Revisionが0xC2になりました。(CPUがIntel Skylake-Sの場合)

適用中のMicrocode Update Revisionは、HWiNFOやCPU-Z等のツールで確認できます。(レジストリで確認することもできます)

HWiNFOの画面

KB4090007インストール後 HWiNFOの画面 Microcode Update Revision=0xC2

CPU-ZのReportファイル(Tools→Save Report as .TXT)

KB4090007インストール後 CPU-ZのReportファイルの内容 Microcode Revision=0xC2

KB4090007インストール前は0xBAでした。

KB4090007インストール前 CPU-ZのReportファイルの内容 Microcode Revision=0xBA

ただし、これはOSが(mcupdate_GenuineIntel.dllによって)新しいMicrocodeを使うようになったのであって、BIOS内のMicrocodeは更新されていません。

ダウンロードしたBIOSファイル。これでBIOSを更新しました。(昨年夏)

ダウンロードしたBIOSファイルのMicrocode。Update Revision=0xA0

KB4090007インストール後に、BIOS Chipから読み出して保存したファイル。

KB4090007インストール後の、BIOS Chip内のMicrocode。Update Revision=0xA0

SSの通り、CPUID 506E3(Skylake-S)用は0xA0のままです。

レジストリエディタでMicrocode Update Revisionを確認する方法

[HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0]
Update Revision … 適用中のMicrocode Update Revision
Previous Update Revision … 前のMicrocode Update Revision

ただし、Previous Update Revision表示されるのは、いつもBIOSのMicrocode Update Revisionです。

KB4090007適用後。Update Revisionが0xC2、Previous Update Revisionが0xA0。

KB4090007適用後のレジストリエデイター画面 Update Revision=0xC2, Previous Update Revision=0xA0

検証 ― 他のOSから起動した場合のMicrocode Update Revision

Windows 10 1709インストールDVDでブートした時。Update Revision = 0xBA

Windows 10 1709インストールメディアブート時のレジストリエディター画面 Update Revisionは0xBA

WinPE CDでブートした時。Update Revision = 0xA0

WinPEブート時のレジストリエディター画面 Update Revisionは0xA0

いずれも0xC2ではありません。0xC2が適用されるのは、KB4090007インストール済みのWindows 10 1709を起動している時だけでした。

常に0xC2が適用されるには、BIOSのMicrocodeを0xC2に更新する必要があります。

実験 ― mcupdate_GenuineIntel.dllが無くなったらどうなる?

WinPEでブートして、C:\Windows\System32\mcupdate_GenuineIntel.dlをリネーム。その後Windows 10 1709で起動し直しました。

Update Revisionが0xA0(BIOS同じ)に。Previous Update Revisionは項目が無くなりました。

mcupdate_GenuineIntel.dllが無くなった後のレジストリエディター画面 Update Revisionは0xA0

Windows 10 1709では、最初から0xBAにアップデートされていた。

KB4090007インストール前のMicrocodeは0xBA。この0xBAがどこから出てきたのか不思議でした。次の状況から言って、リリース当初から入っていたと考えられます。

Microcode Update Revision

  • BIOS 0xA0
  • KB4090007適用前 0xBA
  • KB4090007適用後 0xC2
  • mcupdate_GenuineIntel.dllが無い時 0xA0
  • Windows 10 1709インストールDVDでブート 0xBA

mcupdate_GenuineIntel.dll

  • KB4090007適用前 v10.0.16299.15(更新日時: 2017/09/29)
  • KB4090007適用後 v10.0.16299.249(更新日時: 2018/02/14)

Windows 10 1709について

  • クリーンインストールした場合のバージョン v10.0.16299.15
  • 正式リリース 2017/10/17
追記
0xBAはSkylake-Sの場合です。他のCPUの場合はそれに応じたMicrocode Update Revisionが充てられている可能性があります。

Previous Update Revisionが、いつもBIOSのMicrocode Update Revisionになるのはなぜか?

[HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0]のPrevious Update Revisionには、常にBIOSのMicrocode Update Revisionが表示されています。

Previous(前の)だから、0xBAのはずでは?と思って調べてみました。

Microcodeの適用順

参照
memory - How is microcode loaded to processor? - Super User
https://superuser.com/questions/935217/how-is-microcode-loaded-to-processor

Microcodeについて大雑把にまとめてみます。

  • CPUのROM領域には(初期のフルサイズの)Microcodeが保存されている。(変更・消去は不可)
  • BIOS・OSのMicrocodeは修正パッチ。(サイズ小) …Microcode Update Revision
  • マシン起動時、BIOS内のMicrocodeパッチが、CPUの揮発性RAM領域にコピーされる。
  • OS起動時、OS内にMicrocodeパッチがある場合、CPUの揮発性RAM領域にコピーされる。
  • MicrocodeパッチがCPUにコピーされる条件: Revisionの数値が大きい(=新しい)場合。
  • マシンをシャットダウンすると、揮発性RAM領域にコピーされたMicrocodeパッチが消える。

OSのMicrocodeパッチの前には、いつもBIOSのMicrocodeパッチが読み込まれています。OSのMicrocodeパッチがない場合、BIOSのMicrocodeパッチ以外のパッチが読み込まれていないため、Previous Update Revisionに何か表示するとしたらBIOSのMicrocode Update Revisionになるのかもしれません。

なお、CPUのROM領域のMicrocodeはUpdateRevisionには該当しません。

レジストリのHKEY_LOCAL_MACHINE\HARDWAREの仕様

HKEY_LOCAL_MACHINE\HARDWAREキー以下の内容は、毎回起動時にハードウェアから直接読み込んでいます。ファイル・レジストリに保存していません。(C:\Windows\System32\configフォルダー内には、HARDWAREファイルが存在しません)

参照
\REGISTRY\MACHINE\HARDWARE - TechNet - Microsoft
https://technet.microsoft.com/en-us/library/cc959353.aspx

ということは、前回起動時のUpdate Revisionの内容がPrevious Update Revisionにコピーされることはありません。

結論
むしろ、Previous Update RevisionがBIOSのMicrocode Update Revision以外になることはないでしょう。

関連記事