【问题标题】:Where does allocated PCI memory reside?分配的 PCI 内存在哪里?
【发布时间】:2013-10-24 23:54:19
【问题描述】:

可能是一个超级基本的问题,但是我正在阅读这个:http://www.tldp.org/LDP/tlk/dd/pci.html,我很好奇,当我写入 PCI 内存空间地址时,我到底在写什么?

我是否正在写入 PCI 设备上的内存模块?我系统内存的特殊子部分?连接到主板上的内存是专门为使用 PCI 总线而设计的吗?它是否完全依赖于架构并故意含糊其辞?

【问题讨论】:

  • 超级基础?可能。无关?当然。这真的应该在Super User
  • 抱歉,感谢您将我引向超级用户!
  • @MikeW - 这是一个超级用户的问题吗?用户不会写入内存地址。

标签: linux-kernel drivers pci


【解决方案1】:

所以发生的情况是,在 CPU 和 RAM 之间有一个叫做“内存控制器”的东西。每当您寻址内存中的任何内容时,它都会通过内存控制器。

当系统启动时,通常与 PCI 根集线器集成的内存控制器(谷歌搜索“英特尔 GMCH”以获取有关英特尔版本的更多信息)会扫描所有设备及其功能的 PCI 总线。然后它为所有 PCI 内存空间留出“虚拟”地址。

当您写入这些虚拟地址时,内存控制器知道将该地址范围内的任何内容转发到 PCI 设备而不是主内存(或其他设备)。

【讨论】:

  • 内存控制器只处理物理地址。可以执行虚拟到物理地址转换的是 MMU(内存管理单元)。并非所有系统都有 MMU,当有 MMU 时,它可能并不总是启用。
  • 那么 MMU 是 Root complex 还是 MMU 转发到 RC 再转发到端点?
猜你喜欢
  • 1970-01-01
  • 2017-02-28
  • 2016-02-07
  • 2013-11-06
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 2012-05-21
相关资源
最近更新 更多