web-dev-qa-db-ja.com

BIOSはどのようにして使用可能なRAMの量を決定しますか?

BIOSがリアルモードで実行されている16ビットプログラムであり、このモードでは1MBしかアドレス指定できない場合、BIOSはどのようにして使用可能なRAMの量(たとえば1 GBなど)を決定しますか?

4
PositronicBrain

BIOSはリアルモードで実行される16ビットプログラムであり、このモードでは1MBしかアドレス指定できません。

これは正しくありません。

16ビットリアルモードでは、プロセッサは1MBのメモリに制限されません。

X86プロセッサがリアルモードで起動し、デフォルトで16ビット8086命令セットに設定されているのは事実ですが、80286命令セットには拡張機能があります。 8086命令の前にバイト0x67を付けると、その命令は2にアクセスできる32ビットレジスタにアクセスできるようになります。32 バイト、または4GiBのメモリ。

64ビットプロセッサを使用している場合、プロセッサはPAE( 物理アドレス拡張 )を使用できます。これにより、プロセッサは2にアクセスできます。52 最新のマザーボードに物理的にインストールできる以上のバイトのメモリ。

ソース BIOSが完全な拡張メモリサイズを検出する方法


BIOSは、たとえば1 GBなど、使用可能なRAMの量をどのように決定しますか?

これは、メモリコントローラーのデータシートに記載されているメソッドを使用します( northbridge )。

ほとんどのBIOSは、インストールされているRAMのタイプを検出し、各メモリモジュールのサイズを検出し、使用するようにチップセットを構成するまで、RAMを使用できません。検出されたRAM。

これはすべてチップセット固有の方法に依存し、通常はメモリコントローラー(ノースブリッジ)のデータシートに記載されています。

RAMは、このプロセス中のプログラムの実行には使用できません。BIOSは最初はROMから実行されているため、RAMチップで必要なゲームをプレイできます。しかし、他のプログラムの内部からこれを行うことは完全に不可能です。

ソース メモリの検出(x86)

8
DavidPostill