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