首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在同一PCIe插槽上写入使用不同PCIe通道的多个设备?

是否可以在同一PCIe插槽上写入使用不同PCIe通道的多个设备?
EN

Stack Overflow用户
提问于 2012-09-14 05:06:55
回答 2查看 1.9K关注 0票数 3

我正在写一个支持多个设备的Linux设备驱动程序。我有一张x8 PCIe卡,上面有4个这样的设备。每个交换机通过一个PCIe交换机并获得2个PCIe通道。有没有办法让驱动程序同时写入多个通道?如果是这样,我该怎么做呢?我认为这应该是可能的,因为它都在一个PCIe插槽上,但我不知道从驱动程序如何做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-14 21:22:07

听起来您正在寻找PCIe多播。这与通道的数量无关,而仅仅是将单个写入尽可能高效地传送到多个目的地的函数。这方面有一个标准,主要用于背板使用,请参阅:http://www.pcisig.com/developers/main/training_materials/get_document?doc_id=12f5c260ccf5e054366d4c96ee655fa6827db5b3

看起来新的PCI BAR类型支持这一点,其中多个设备将具有相同的映射物理地址范围,并且交换机也将被配置为了解此多播范围。但这一切都需要操作系统的支持,我在网上还没有找到任何东西表明Linux有必要配置设备来完成所有这些工作。

由于您的父链路有足够的带宽使所有四个子链路饱和,因此不存在吞吐量问题。使用多播可以节省的唯一一件事就是内存子系统的带宽。如果你有一个现代的建筑,你将节省的数量将在噪音中。

换句话说,不用担心。把你的设备当做独立的(无论如何,这会让你的驱动程序更干净),然后继续你的项目。

票数 2
EN

Stack Overflow用户

发布于 2012-09-14 05:59:39

PCIe并不像你想象的那样工作。交换机不会将上游x8链路划分为多个x2链路-它只是将流量从一条链路转发到另一条链路。因此,您将看到的是到交换机的x8链路,然后是从交换机到下游设备的4条x2链路。然而,对于不同的交换机和不同的下游设备,同样有可能(例如)到处都有x8链路,即从根端口到交换机的x8链路和从交换机到下游设备的x8链路。

但是,在您的情况下,交换机两端的带宽量是匹配的,因此设备竞争有限的带宽应该不会有任何问题。您的驱动程序可以同时与所有设备通信,就像有独立的链路一样有效。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12414798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档