PCI设备有两个内存地址?

PCI设备有两个内存地址?

当我做

lspci -v

为了找到可能的音频设备内存我得到

00:1f.3 多媒体音频控制器:Intel Corporation Device ds35 子系统:Intel Corporation Device 754 标志:总线主控、快速 devsel、延迟 64、IRQ 126
内存位于 d1114000(64 位,不可预取)[大小=16K]
内存at d1000000(64位,不可预取)[大小=1M] 功能:内核...

正如您所看到的,“内存位于”出现了两次?

  1. 这是为什么?

  2. 这两个地址有什么区别?

  3. 为什么只有这个特定的音频设备才会出现这种情况。

感谢帮助。

答案1

1.) 芯片组的设计将音频控制器的内存映射 I/O 分配拆分为多个块,并且可以单独分配每个块的基地址。这使得芯片组设计更加灵活,可以配置为适应各种不同的硬件配置。

2.) 这两个块不是彼此的副本,而是用于不同的目的。要了解更多信息,您必须从英特尔下载芯片组的数据表 PDF,可能还需要一些有关高清音频标准的文档,然后阅读一些非常可靠的技术文档。

3.) 如果音频控制器需要总共 1040K 的地址空间用于其 MMIO 功能,将其分配在两个大小均为 2 的幂的独立块中,则固件将有更高的机会能够分配所有MMIO 将各种硬件组件的区域划分为一个或几个连续的地址块,而不会在它们之间留下太多不方便的内存“漏洞”或不可用的地址空间。这使得处理器的硬件内存管理单元能够更高效地工作,因为内存类型范围寄存器 (MTRR) 可以为 MMIO 和常规内存块分配最佳访问策略。可用的 MTRR 数量有限,因此实现 MMIO 块的紧密封装会有所帮助。

相关内容