gpt4 book ai didi

c++ - 使用英特尔 I/OAT 时,在虚拟寻址中映射设备内存到哪里?

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:10 25 4
gpt4 key购买 nike

当我使用 Intel I/OAT 通过 async_memcpy 进行 DMA 零拷贝/零周期(无 CPU)传输, 那么在虚拟寻址中,设备内存映射到哪里:内核缓冲区(内核空间)还是用户缓冲区(用户空间)?

在现代 x86_64 CPU 中使用 I/OAT 是否有意义(当 CPU 核心可以快速访问 RAM 而无需芯片组北桥时)?

http://www.intel.com/content/www/us/en/wireless-network/accel-technology.html

最佳答案

鉴于内存是物理内存,它可以是内核可以寻址的任何内存,包括内核缓冲区和用户空间缓冲区。然而,它确实必须被“固定”或“锁定”,这样内存就不会被带走(例如,有人在内存上做 free 不应该将内存释放回操作系统进行重新分配到另一个过程,因为如果是这样的话你会得到非常有趣的效果)。这当然是适用于各种其他 DMA 访问的相同规则。

我非常怀疑这是否有助于为普通用户模式应用程序复制数据结构。另一方面,我不认为英特尔会将这些功能放入处理器中,除非他们认为这在某种程度上是有益的。我的理解是,它有助于将网络接收缓冲区复制到正在接收数据的用户模式应用程序中,同时减少 CPU 参与。它不一定会大大加快实际的内存传输速度(如果有的话),但它可以减轻 CPU 的负担来做其他事情。

我很确定不久前我看到了一些关于这项技术 [或非常相似的东西] 的东西也进入了最新型号的处理器,所以我预计它会有一些优势。

关于c++ - 使用英特尔 I/OAT 时,在虚拟寻址中映射设备内存到哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com