マルチプロセッサをサポートする OS を作成しようとしていますが、AMD のマルチプロセッサをブートストラップする方法がわかりません。AMD のホームページを検索して MP 仕様を見つけましたが、見つかりませんでした。リンクを教えてもらえますか?住所?
2 に答える
システム内の論理プロセッサに関する情報を取得できる標準は 2 つあります。1 つ目は Intel MultiProcessor Specification (MP)、2 つ目は Advanced Configuration and Power Interface (ACPI) です。
MP は古く、現在は推奨されていません。ACPI テーブルが存在しない古いマシンでも使用できますが、新しいマシンには依存しないでください。実際、ACPI テーブルが存在する場合、MP テーブルは正気である必要はなく、ほとんどの場合がが含まれています。これがおそらく、コードが 32 ビット マシンでは動作するが、64 ビット マシンでは動作しない理由です。
(S)MP コードを記述するときは、最初に利用可能な ACPI テーブルがあるかどうかを確認する必要があります (RSDP を見つけます。XSDT が存在する場合はそれを使用し、そうでない場合は RSDT を使用します。次に、MADT を見つけてテーブルの LAPIC エントリを解析し、LAPIC ID を見つけます。存在する論理コア)、それらが存在しない場合にのみ、 MP にフォールバックします。
問題の CPU が AMD か Intel かは問題ではありません。それらはほとんど互換性がありますが、例外的なケースで互換性のない命令の実装または解釈がいくつかあります。異なる CPU モデル間で異なる可能性がある唯一のことは、AP の起動シーケンスですが、この点に関するマイクロアーキテクチャ間の違いは、Intel と AMD のマニュアルに記載されています。
AMD固有のバージョンはないようです。AMD の x86 CPU は Intel x86 CPU とほぼ互換性があるはずなので、これは妥当だと思います。
ウィキペディアからの引用:
x86 アーキテクチャの MultiProcessor Specification (MPS) は、オペレーティング システムとファームウェアの両方に対する拡張機能を記述したオープン スタンダードであり、マルチプロセッサ構成で x86 互換プロセッサを使用できるようにします。
Intel のものを使用します。