Friday, April 13, 2012

PCI-Express over eSATA and/or USB3

The other day, for some reason, I got to wondering if one could put PCI-Express through a sata cable. The combo eSATA with USB2 for power might do the trick, if the USB2 part of the cable has the data wires for the PCI clock. If we had a combo wire with all the USB3 stuff as well, perhaps that gives us a x2 cable, or two x1 slots. This could use the cool Tragant/DeLock 65285 combo eSATA/USB3/USB2 connector. But we'd need a custom cable and cable connector for that, as I haven't seen one readily available. This connector just makes it easy to have the option of plugging in USB2 or USB3 or eSATA or eSATA+power. I don't think a connecter/cable has yet been made to carry all of those at once.

Ok, why would anyone want yet another PCI-Express cable/connector? Well, if someone, like me, wants to repurpose a case, which has an eSATA/USB2 combo port, this is a convenient way to get more good stuff out of thatbhole in the casework. Maybe the case doesn't have a standard PCI-Express cable port to make use of. And maybe I don't have the option to add or modify existing case holes.
OK, but how do the signals work with this new combo eSATA/USB3/USB2/PCI-Express definition? Mux the PCIe refclock with the USB2 data signals. Then mux the PCIe diff pairs with the SATA diff pairs and/or the USB3 superspeed diff pairs. If doing it only on USB3 diff pairs then this could even work on standard USB3 (which also standardly carry USB2) port connectors, but again I'm not aware of existing cable/connecters that carry both USB2 and USB3 all wires at once, so a new cable/connector likely needs customized for this new purpose.

The muxes would be the same things you might use between PCI-Express and USB3 in an ExpressCard2 slot, or between SATA and PCI-Express in an mSATA slot. TI and others already make suitable muxes for these purposes.

What about speeds? SATA can do 6Gbps, I'm not sure if that includes the eSATA variant or not. If so, then it can carry PCI-Express GEN2 5Gbps speed transfers. If not, then throttle back to PCI-Express GEN1 2.5Gbps speed if that fits into the eSATA spec. USB3 SuperSpeed is 5Gbps, so it can be an effective PCI-Express GEN2 carrier. PCI-Express GEN3 8Gbps devices will have to throttle back to a speed that fits into the connector and cabling. But PCI-Express is designed to do that kind of thing, so as long as it sees an upstream link of a workable GEN speed, it'll automatically do that. This might require a GEN1 or a GEN2 switch or something between a GEN3 host and a GEN3 device to work, but I'll live with that. Perhaps there's a mechanism to detect that transfers are not going well at GEN3 speeds and slow down to GEN2 (and then GEN1 if GEN2 is still not good) until things do work well, I don't know.

Now, how do we determine which kind of thing is connected to this newly defined combo port? ExpressCard2 has a mode select pin, as does mSATA in SATA spec 3.1. (earlier mSATA devices may not have this mode select capability if they were designed/manufactured before this spec update, I don't really know the situation here that well) My proposed cable won't have this capability. So, as with my earlier ponderings about how to Autoconfig (tm) a mini-PCIe slot that may or may not have a valid mode identifier present, do it in software. It just makes scanning and enumerating whatever is plugged into this slot more complicated than if we know what kind of thing will be there.

When pondering the mSATA mini-PCIe slot situation, it seemed like putting SATA communications into a PCIe device  wouldn't necessarily be harmful, nor would putting PCIe communications into a SATA device. Pick whichever one runs at a lower diff-pair voltage to try first, just to make sure we don't harm the device with the wrong signalling. If a device is found, then we're done. If not, then try the next higher diff-pair voltage connection, and if something is found, then done. etc...

So, how do we do this in a more complicated cable? USB2 has a method of identifying USB2 devices. I assume that USB3 SuperSpeed wires do as well. I'm not sure about eSATA. So, if neither USB2 nor USB3 dvices are detected, then look for eSATA and PCI-Express. Which order to try in? Whichever would be lowest voltage goes first. When doing PCI-Express over this connector, then mux the USB2 data lines over to the PCIe ref clock connection. Seems pretty reasonable.

And that's my crazy idea for the day.

Labels: , , , ,

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home