为什么 x86 ISA 设备无法在完整的 32 位地址空间中执行 DMA?

为什么 x86 ISA 设备无法在完整的 32 位地址空间中执行 DMA?

根据 的 Robert LoveLinux Kernel Developmentx86 ISA 设备无法在完整的 32 位地址空间中执行 DMA,因为 ISA 设备只能访问物理内存的前 16MB(范围 0MB-16 MB)。为什么会这样?

答案1

16位ISA总线只有 24 条地址线,因此它只能编码最大 16MiB 的地址。这与它的设计目标 80286 CPU 相匹配(作为与 8086 及其 20 个地址线一起使用的 8 位扩展总线的扩展)。

ISA 总线本身从未扩展到超过 24 条地址线。它被 MCA、EISA、VESA 本地总线和 PCI 所取代。

相关内容