Date: Thu, 10 May 2018 19:04:36 -0700 From: Dieter BSD <dieterbsd@gmail.com> To: freebsd-hardware@freebsd.org Cc: freebsd-hackers@freebsd.org Subject: PCIe multipliers, how do they work? Message-ID: <CAA3ZYrCtsLSgW6eA0akOD6Upyx1cTt5qbgaY9iSeguQuQmo%2Bjg@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAA3ZYrCtsLSgW6eA0akOD6Upyx1cTt5qbgaY9iSeguQuQmo%2Bjg>