AMI BIOSのサポートCPUを増やす方法

自分でマイクロコードをアップデートする。

使ってみたいCPUがBIOSでサポートされていない時に、自分でBIOSのサポートCPUを追加する方法。

How to Update CPU Microcode in an AMI BIOS ? For LGA 771 & 775
http://www.delidded.com/how-to-update-cpu-microcode-in-ami-bios

How to Update CPU Microcode in Award or Phoenix BIOS ? For LGA 771 & 775
http://www.delidded.com/how-to-update-cpu-microcode-in-award-or-phoenix-bios

Intel製CPUには、製品の型番・ステッピングごとにCPUIDが決められています。(十数年以上前の製品から?)

CPUIDごとに、CPUに合った動作を指示するデータファイルが存在します。それがBIOSに入っていることによって、該当CPUに最適化した動作ができるようになります。

BIOSのサポートCPUを増やすにはCPUIDファイルを追加すればいい、ということです。

※ マザーボードが対応していないCPUについては、BIOSをいじっても動作しません。(前々回の記事 CPUグレードアップ失敗とその理由 のように)

上記のサイトはレガシーBIOSについて書かれていますが、レガシーBIOSだけでなく、UEFI BIOSでも可能でした。(使用ツールのバージョンは変えました)

ただし、追加サポートさせたCPUを所持していないため、そのCPUでの動作確認はしていません。あくまでBIOSファイルの変更のみ。サポートCPUを追加したBIOSファイルでのBIOS更新と、その後の(元々のCPUでの)動作は問題ありません。

近年の機種は、CPU・マザーボードの機能と(UEFI)BIOSの設定項目がいろいろ増えています。そのため、Microcodeを変更するだけでは新CPUに対応できないこともあるかもしれません。

以下、AMI BIOSでの手順です。
Award等のBIOSについては、使うべきツールと操作方法が違います。上記のAward or Phoenix BIOSのURLを参照してください。

BIOSファイルを用意する。

マザーボード・PCメーカーのサポートページからダウンロードして、BIOSファイルを入手します。

手に入らなければ、現在搭載しているPCからバックアップファイルを作成します。(AMI BIOSのバックアップ方法 を参照)

使えるようにしたいCPUのCPUIDを調べる。

CPUについては、http://www.cpu-world.comが詳しいです。
ただし、サイト内で検索するよりも、「cpu-world (CPUの型番)」をキーワードにしてググった方が、楽に目的のページにたどり着けました。

同じ型番のCPUでもCore steppingが違えば、CPUIDも異なることが多いです。

例えば、Pen D 960についてのページ
http://www.cpu-world.com/CPUs/Pentium_D/Intel-Pentium%20D%20960%20HH80553PG1044M%20(BX80553960).html

そこを見れば、Pentium D 960で一般に流通している製品(Production processorsの方)は、S-SpecがSL9APとSL9K7の2種類あること、それぞれのリンク先からは次のようなこともわかります。

  • SL9AP: Core stepping=C1、CPUID=0F64、TDP=130W
  • SL9K7: Core stepping=D0、CPUID=0F65、TDP=95W

必要なツールを入手する。

AMI BIOSの場合はMMToolで調べます。(対応CPUID情報を見るだけならAMIBCPでも可)

MMToolは下のURLからダウンロードさせてもらいました。(Phoenix、Award用のツールもここからダウンロードできます)

BIOS Modding: Introduction and Preparations
http://www.win-raid.com/t8f16-BIOS-Modding-Introduction-and-Preparations.html

(MIRRORの方が簡単にダウンロードできます。MIRRORのリンク先はOneDriveです)

BIOS・チップセットによって使えるバージョンが違います。

  • レガシーBIOS: MMTool v3.26
  • UEFI BIOS & Intel 6,7,8,9-SeriesまたはAMDチップセット: MMTool v4.50.0.23

    ただし、Intel 6~9SeriesのUEFI BIOSファイル5種類で試したところ、MMTool v4.50.0.23でCPU Patchタブを開くとエラーで強制終了しました。下のMMTool v5.0.0.7なら問題なく使えました。

  • UEFI BIOS & Intel X99,100-Seriesチップセット: MMTool v5.0.0.7

[重要]

日本語のような2バイト文字の環境では表示されない所があり、一部の操作ができません。

日本語環境

日本語環境でのMMToolの表示

この問題を解消するには、Windowsのコントロール→言語から英語(米国)をインストール後、システム言語を英語表示に切り替えてから、MMToolを使用します。(詳しくは href="/blog-entry-116.html" title="http://datyotosanpo.blog.fc2.com/blog-entry-116.html">一部の海外アプリの表示が欠けてしまう現象と解消方法にて)

英語環境

英語(米国)環境でのMMToolの表示

なお、UEFI BIOSファイルではコマンドで操作することも可能です。この場合、言語の切り替えは不要です。(MMTool v5.0.0.7で検証) この記事の最後の章で説明。

しかし、レガシーBIOS用のMMTool v3.26以下では、コマンドは使えますが、CPU Patch部分のみの操作ができませんでした。(/pオプションが使えないため)

BIOSファイルが対応しているCPUIDを調べる。

  1. MMToolとBIOSファイルを用意。
  2. MMTool.exeを起動。
  3. 左上のLoad Imageボタンをクリック。
  4. BIOSファイルを選択。(目的のファイルが見当たらなかったら、「ファイルの種類」をAll Filesに)
  5. CPU Patchタブを選択
  6. 各行のCPU ID、Platform Type、Update Revision、Date等をメモする。
  7. サポートさせたいCPUのCPUIDが有るか無いか、有るならRevisionとDateを確認

※ MMToolでは、CPU IDは4桁だけ表示されます。実際は5や6桁のものもあり、その場合は先頭の1、2桁が省かれています。
例えば、Skylake CPUのうち、初期に発売された製品ではCPUID 506E3ですが、MMTool等で見ると06E3となっています。

ちなみに、NEC PC-8502AのBIOSをMMToolで見たら、CPUID F33、Platform Type D、Revision B、Date 2004/05/12という行がありました。

他のマザーボードのBIOSでは、CPUID F33、Platform Type D、Revesion C、Date 2005/04/21が使われていました。こちらの方が新しいデータです。

この場合、もしCPUID F33のCPUに換装する予定があったら、より新しいRevesion Cの方に置き換える方がいいでしょう。(CPUID F33はPentium 4とCeleron Dの一部に対応するもので、私はそれらのCPUに換装予定はなかったのでスルーしましたが)

足りないCPUIDのファイルを入手する。

AMI BIOSを使っているマザーボードのBIOSファイルからMMToolで抽出しました。
マザーボードメーカーは違っていても、MMToolが使えれば大丈夫です。CPUIDのファイルの仕様は共通です。

Intel Core2 DuoやPentium DシリーズのCPUIDファイルが必要だった時は、ASUS P5B-Plus Vista EditionのBIOS v1103をダウンロードし、CPUIDファイルを抜き出しました。(ASUS P5B-Plus Vista Editionマザーボードを持っていて、BIOSがそれらのCPUに対応していることを知っていたため)

  1. MMToolとCPUIDを抽出するためのBIOSファイルを用意。
  2. MMTool.exeを起動。
  3. 左上のLoad Imageボタンをクリック。
  4. CPUIDを取り出したい方のBIOSファイルを選択。
  5. CPU Patchタブを選択。
  6. 欲しいCPUIDの行を選択。
  7. OptionのExtract a Patch Dataを選択。
  8. Browseボタンをクリックし、ファイルの保存場所とファイル名を決める。拡張子は.bin。(Patch Fileの欄に直接フルパスで入力してもよい)
  9. Applyボタンをクリック。

※ UEFI BIOSの場合は、Vol違いで同じCPUIDのものがありました。両方入手し、保存時のファイル名でどちらがVol番号か小さい方か大きい方か分かるようにしておきます。

Optionの区別

  • Insert: 追加
  • Extract: 抽出(コピー)
  • Delete: 削除

次のサイトからダウンロードも可能です。ただし、古いものに限られます。
[注意] 中にはファイルが破損か何かで使えないものも混ざっています。MMToolで取り入れる時にエラーで弾かれます。

https://www.bios-mods.com/resources/index.php?dir=Intel+Micro+Codes%2F

CPUIDファイルを追加・置き換え。

追加する場合

  1. MMTool.exeを起動。
  2. 左上のLoad Imageボタンをクリック。
  3. 改造したい方のBIOSファイルを選択。
  4. CPU Patchタブを選択。
  5. OptionのInsert a Patch Dataを選択。
  6. Browseボタンをクリックし、追加するCPUIDの.binファイルを選択。
  7. レガシーBIOSの場合: No.に使われていない数字を入れる。

    UEFI BIOSの場合: Vol.とNo.を入れる。
    Vol.は現在のファイルで使われているもの2つのうちどちらかを使う。小さい数字と大きい数字のどちらを使うかについては、.binファイル抽出元の設定にならう。(前章参照)
    No.は現在使われていない数字にする。

  8. Applyボタンをクリック。

置き換えの場合は、まず対象の行をDelete(削除)→追加するファイルを選んでInsert。

全ての編集が終わったら、Save Image as...ボタンをクリックし、BIOSファイルを別名で保存。

最後に、AFUWINかAFUDOSでベリファイ。

前回の記事参照。AFUWINまたはAFDOSをコマンドで使用。その際に、/dオプションを使う。
例: AFUWIN BIOS.ROM /d)
ベリファイして全部OKだったら、BIOS更新に使えます。

BIOSの更新方法はマザーボード・PCメーカーのマニュアルに従ってください。

MMTool ― コマンドで操作する場合

MMTool v5.0.0.7の場合です。

[注意]
GUI表示の時とは違い、ファイルの(上書き・別名)保存操作なしで、コマンド実行後すぐに反映されます。使うBIOSファイルのバックアップを作成してから、作業してください。

準備

  1. mmtool.exeが入っているフォルダーに、編集予定のBIOSファイルやCPUIDの.binファイルを入れる。
  2. コマンドプロンプト(cmd.exe)を管理者として起動。
  3. pushd "(mmtoolが入っているフォルダーのフルパス)"
  4. >[MMToolのコマンドを実行。下記参照]

以下、MMToolのコマンドです。(BIOSファイルの拡張子は.rom以外に、.bin、.capでも大丈夫です。実際に使うBIOSファイルに合わせてください)

List all the CPU Patches

mmtool "(BIOSファイル名).rom" /p

説明: (BIOSファイル名).romに含まれているCPUIDデータのリストを表示。

コマンドを実行すると、このように表示されます。

List all the CPU Patchesコマンド結果

Extract a CPU Patch

mmtool "(BIOSファイル名).rom" /e /p <No> "(CPUIDファイル名).bin" <Vol>

説明: Vol.<Vol> No.<No>の行のCPUIDデータを、(CPUIDファイル名).binというファイル名で抽出(バックアップ)。

例: mmtool BIOS.rom /e /p 02 cpuid506E8_rev22_05.bin 05

Delete an existing CPU Patch

mmtool "(BIOSファイル名).rom" /d /p <No> <Vol>

説明: Vol.<Vol> No.<No>の行のCPUIDデータを削除。

例: mmtool BIOS.rom /d /p 02 05

Insert a new CPU Patch

mmtool "(BIOSファイル名).rom" /i /p "(CPUIDファイル名).bin" <Vol>

説明: Vol.<Vol>に、(CPUIDファイル名).binのデータを追加する。No.は自動的に現在使用されている番号の最後尾になる。

例: mmtool BIOS.rom /i /p cpuid506E8_rev22_05.bin 05

Replace an existing CPU Patch

mmtool "BIOSfile.rom" /r /p <No> "(CPUIDファイル名).bin" <Vol>

説明: Vol.<Vol> No.<No>の行を、(CPUIDファイル名).binのデータで置き換える。Vol.<Vol> No.<No>の行にあった元のデータは消える。

例: mmtool BIOS.rom /r /p 02 cpuid506E8_rev22_06.bin 06

関連記事