現代のプロセッサーは、バグを抱える可能性のある複雑なデバイスです。その上、x86 命令を直接実行する代わりに、現代の x86 プロセッサーには x86 命令セットのサポートを実装する内部コードが含まれています。この内部コードはマイクロコードと呼ばれています。マイクロコードは、CPU のバグに対処するため更新されることがあります。
このような CPU バグが Firefox をクラッシュさせる可能性があります。例えば、Firefox 57 以降には、古いマイクロコードを持つ Broadwell-U CPU で時折クラッシュが起こるバグあることが知られています。これは、新しいバージョンの Broadwell-U マイクロコードでは起こりません。
マイクロコードの更新データは、ファームウェア (技術的に古いスタイルの BIOS ではなく UEFI ファームウェアを持つコンピューターでも、通常は BIOS と呼ばれます) またはオペレーティングシステムによって CPU に読み込まれます。マイクロコードの更新は再起動しても保持されないため、デュアルブートシステムの場合は、マイクロコードの更新が BIOS 経由で配信されなくても、オペレーティングシステムも更新を提供しなければなりません。
Mac でシステムを最新の状態にするには、すべての OS X システムの更新および Apple ファームウェアの更新が App Store アプリの更新ペインで提供されます。
更新されたマイクロコードを CPU に読み込ませることを Windows に許可するには、Windows Update が有効になっており、更新をインストールするように設定しておいてください。
プロセッサーのマイクロアーキテクチャーと使用されているマイクロコードのバージョンを知るには、次のコマンドを Windows コマンドプロンプトで実行してください (コマンドプロンプトを開くには、Windows + R キーを押し、cmd
と入力して Return キーを押します:
reg query HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0
"VendorIdentifier" の行には、CPU ベンダーが表示されます (GenuineIntel は Intel 社製、AuthenticAMD は AMD 社製です)。"Identifier" の行には、"Family", "Model" および "Stepping" の 3 個の番号で表されるマイクロアーキテクチャーの情報が表示されます。これらの番号は、コンピューターに搭載された CPU が特定の CPU のバグに関係あるかどうかを特定するときに用います。"Update Revision" の行には、現在のマイクロコードの (特にマイクロアーキテクチャーの) リビジョンが表示され、前後が 0 詰めされてます。例えば、Update Revision REG_BINARY 000000001E000000
は、リビジョン 1E (16 進数) を意味します。"Previous Update Revision" の行には、BIOS から読み込まれたマイクロコードのバージョンが表示されます。
ベンダーが GenuineIntel、family が 6, model が 61、stepping が 4 の場合に Firefox 57 以降のバージョンでクラッシュを避けるには、マイクロコードのリビジョンが 1A より高い必要があります。
マイクロコードの更新が既定で行われているかどうかは、Linux ディストリビューションに依存し、Intel と AMD の CPU でも異なります。
- Ubuntu を含む Debian ベースのディストリビューションでは、Intel プロセッサーのマイクロコードの更新は
intel-microcode
パッケージにより提供され、AMD プロセッサーのマイクロコードの更新はamd64-microcode
パッケージにより提供されます。 - Arch では、AMD マイクロコードの更新は既定でインストールされますが、Intel のマイクロコード更新には 特別な手順が必要です。
- Fedora では、マイクロコードの更新が既定でインストールされます。
プロセッサーのマイクロアーキテクチャーと使用されているマイクロコードのバージョンを知るには、次のコマンドをターミナルで実行してください: less /proc/cpuinfo
"vendor_id" の行には、 CPU ベンダーが表示されます (GenuineIntel は Intel 社製、AuthenticAMD は AMD 社製です)。マイクロアーキテクチャーは、"cpu family", "model" および "stepping" の行の 3 個の番号で表されます。これらの番号は、コンピューターに搭載された CPU が特定の CPU のバグに関係あるかどうかを特定するときに用います。"microcode" の行には、マイクロコードの (特にマイクロアーキテクチャーの) リビジョン番号が 16 進数で表示されます。
ベンダーが GenuineIntel、family が 6, model が 61、stepping が 4 の場合に Firefox 57 以降のバージョンでクラッシュを避けるには、マイクロコードのリビジョンが 1A より高い必要があります。