x86 ISAデバイスが32ビットアドレス空間全体でDMAを実行できないのはなぜですか?

x86 ISAデバイスが32ビットアドレス空間全体でDMAを実行できないのはなぜですか?

x86 ISAデバイスによると、ISAデバイスRobert LoveLinux Kernel Development物理メモリの最初の16MB(範囲0MB〜16MB)にのみアクセスできるため、32ビットアドレス空間全体でDMAを実行できません。なぜこれが起こるのですか?

答え1

16ビットISAバスアドレスラインは24本だけなので、最大16MiBのアドレスのみエンコードできます。これは、8086および20のアドレスラインで使用される8ビット拡張バスの拡張として設計された80286 CPUと一致します。

ISAバス自体は24本のアドレスラインを超えて拡張されません。これは、MCA、EISA、VESAローカルバス、およびPCIに置き換えられました。

関連情報