PCIe multipliers, how do they work?
Kurt Lidl
lidl at pix.net
Mon Jun 11 21:37:17 UTC 2018
> I'm wondering how these things work. The wikipedia PCIe page [1] says:
> "PCI Express switches can create multiple endpoints out of one endpoint
> to allow sharing one endpoint with multiple devices." So maybe they
> use a PCIe switch? Poking around wikipedia and google has thus far
> uncovered very little info about PCIe switches. Wikipedia is less
> helpful than usual, and they keep making google less and less useful
> for no apparent reason. I don't see any other obvious keywords
> to google for.
>
> It isn't obvious how slot id/address is handled. How do commands and
> data get routed to/from the correct card?
>
> Is any firmware or OS support required?
It's worth reading the following two pages closely, as they talk
about PCI Express endpoints, and how PCI-Express switches have to
work to enable multiple cards.
http://xillybus.com/tutorials/pci-express-tlp-pcie-primer-tutorial-guide-1
http://xillybus.com/tutorials/pci-express-tlp-pcie-primer-tutorial-guide-2
One such family of PCI-express switch parts is from PLX Technologies,
now owned by Broadcom. One of typical functions of such as switch
is to provide "non transparent bridging" - basically mapping the
address space from one machine's PCI address into the address space
of another PCI system. This can be used a communication path between
devices, for example, using a block and slot type software architecture.
There is some support for NTB in FreeBSD's master branch, under
sys/dev/ntb - with drivers for the PLX/Avago/Broadcom parts, as well
as a driver for the Intel parts found on certain Xeon and Atom CPUs.
-Kurt
More information about the freebsd-hardware
mailing list