根据 的 Robert Love
, Linux Kernel Development
x86 ISA 设备无法在完整的 32 位地址空间中执行 DMA,因为 ISA 设备只能访问物理内存的前 16MB(范围 0MB-16 MB)。为什么会这样?
答案1
16位ISA总线只有 24 条地址线,因此它只能编码最大 16MiB 的地址。这与它的设计目标 80286 CPU 相匹配(作为与 8086 及其 20 个地址线一起使用的 8 位扩展总线的扩展)。
ISA 总线本身从未扩展到超过 24 条地址线。它被 MCA、EISA、VESA 本地总线和 PCI 所取代。