PCIe multipliers, how do they work?

Dieter BSD dieterbsd at gmail.com
Fri May 11 02:04:38 UTC 2018


Looking into ways to get additional expansion slots, since board
designers cannot count past 7 and often not even that high. :-(

There are PCIe riser cards that split a wide slot into 2 or more
narrower slots, for example 1 x8 slot becomes 2 x4 slots.  These
would be very useful, except it appears that they require
"bifurcation" support in the mainboard's firmware.  Which most
boards do not provide.  And most boards are not supported by
FLOSS firmware, so adding bifurcation support would be rather
difficult.

There are also PCIe cards which provide multiple slots, typically
connected with a usb cable.  These tend to convert 1 PCIe_x1 slot
into multiple PCIe_x1 slots.  I get the impression that these do
not require bifurcation support.  They seem to be aimed at "miners"
for attaching multiple gpu cards.  I'm not interested in mining or
in attaching multiple gpu cards.  I'm interesting in adding additional
sata cards, Ethernet cards, and such.  Unlike the bifurcation type
riser splitter cards, which seem to conserve PCIe lanes, these
are more like a sata port multiplier, with the same type of bandwidth
limitation.

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?

Is there some other solution that I haven't stumbled across?
I'd really like to split an x8 slot into 4 x2 slots, which
doesn't seem to be an off-the-shelf option either way.

[1] en.wikipedia.org/wiki/PCI_Express


More information about the freebsd-hardware mailing list