相关文章推荐
孤独的火龙果  ·  electron ...·  1 年前    · 
留胡子的水龙头  ·  Python3使用AES报错 ...·  1 年前    · 

向驱动程序添加 64 位寻址支持可以显著提高整体系统性能。 对于在 DMA 设备上执行直接内存访问 (驱动程序) 。 在 64 位 Microsoft Windows中,执行 DMA 但不支持 64 位寻址的设备驱动程序是双缓冲的,这会降低相对性能。

尽管双缓冲通常对 8 GB (单个百) 的影响相对较小,但足以影响 I/O 密集型任务,例如数据库活动。 随着物理内存量的增加,这种负面性能影响也会增加。

若要支持 64 位 DMA,驱动程序应遵守以下准则:

  • 使用 PHYSICAL_ADDRESS 结构进行物理地址计算。

  • 将整个 64 位地址视为有效的物理地址。 例如,驱动程序不应在锁定的缓冲区上调用 MmGetPhysicalAddress ,放弃高 32 位,将截断的地址传递给 32 位组件适配器。 这导致内存损坏、I/O 丢失和系统故障。

  • 使用 GetScatterGatherList PutScatterGatherList (2000) 中添加的高性能散点/收集例程Windows。

  • 检查 Mm64BitPhysicalAddress 全局 系统变量的值。 如果为 TRUE ,则系统支持 64 位物理寻址。

  • DEVICE_DESCRIPTION 结构的 Dma64BitAddresses 成员设置为 TRUE ,以指示驱动程序支持 64 位 DMA 地址。

    32 位和 32 位中的 DMA Windows 64 位就绪。 如果设备驱动程序正确使用这些例程,则 DMA 代码应在 64 位驱动程序上无需修改即可Windows。

  •