可能是一个超级基本的问题,但我正在读这个:http://www.tldp.org/LDP/tlk/dd/pci.html我很好奇,当我写一个PCI内存空间地址时,我到底写的是什么?
我是否在写PCI设备上的内存模块?我系统内存的一个特殊子部分?内存连接到主板专门用于PCI总线?它是完全依赖于架构还是故意模糊不清?
答案 0 :(得分:2)
所以会发生的事情是,这个叫做“内存控制器”的东西位于CPU和RAM之间。每当你在内存中寻址任何内容时,它都会通过内存控制器。
当系统启动时,通常与PCI根集线器集成的内存控制器(谷歌搜索“英特尔GMCH”以获取有关英特尔版本的更多信息)会扫描PCI总线以查找所有设备及其功能。然后它为所有PCI存储空间留出“虚拟”地址。
当您写入这些虚拟地址时,内存控制器知道将该地址范围内的任何内容转发到PCI设备而不是主内存(或其他设备)。