gpt4 book ai didi

pci-bus - 两个 PCI 设备之间的直接通信

转载 作者:行者123 更新时间:2023-12-04 06:49:31 30 4
gpt4 key购买 nike

我有一个 NIC 卡和一个 HDD,它们都连接在 Linux 机器的 PCIe 插槽上。理想情况下,我希望在不涉及 CPU 或最少涉及 CPU 的情况下将传入数据包传送到 HDD。是否可以像这样沿着 PCI 总线建立直接通信?有没有人有关于开始这样一个项目的阅读内容的指示?

谢谢大家。

最佳答案

不确定您是问 PCI 还是 PCIe。您使用了这两个术语,每个术语的答案都不同。

如果您在谈论传统 PCI 总线:答案是"is"。板对板 DMA 是可行的。例如,视频捕获板可以将视频帧直接 DMA 到您的图形卡内存中。

在您的示例中,视频卡可以直接 DMA 到存储设备。但是,数据将非常“原始”。例如,您的 NIC 没有文件系统的概念。您还需要确保可以对 NIC 的 DMA 引擎进行编程,使其位于 SATA Controller 寄存器的范围内。你不想离开酒吧的尽头!

如果您在谈论现代 PCIe 总线:答案是“通常不会,但视情况而定”。对等总线事务在 PCI Express 规范中是一件有趣的事情。不需要根复杂设备来支持它。

在我的测试中,如果您的设备位于 PCIe 交换机后面(未直接插入主板),则点对点 DMA 将起作用。但是,如果您的设备直接连接到芯片组(根联合体),则点对点 DMA 将不起作用,除非在某些特殊情况下。最值得注意的特殊情况是我之前提到的视频捕获示例。芯片组数据表中提到了特殊情况。

我们已经用几个不同的 Intel 和 AMD 芯片组测试了点对点 PCIe DMA 并发现了一致的行为。不过,还没有测试过最新一代的芯片组。 (我们已经与英特尔讨论了缺乏对等 PCIe DMA 支持的问题,不确定我们的反馈是否对他们的工程部门产生了任何影响。)

关于pci-bus - 两个 PCI 设备之间的直接通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822561/

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