(tldr: This inexpensive board is compatible with M.2 PCIe X4 SSDs.)
I was finally getting around to moving the hard disks to my new desktop system when I discovered a few drawbacks to the new system’s motherboard. I had bought a motherboard which supports two M.2 PCIe X4 slots. M.2 is the followon to the old mSATA standard for SSD storage in tiny slots. While it was originally intended for laptops and compact “brick” computing devices, it’s now becoming standard on desktop motherboards as well.
The reason is that the SATA standard has peaked out on performance. SATA-3 performance tops out at 600MB/s and SSDs have already run into that limit for a couple of years now which is why you may notice that pretty much every current SATA SSD drive now has a rated read performance of 550MB/s. After overhead, that’s pretty much the best SATA can do.
SATA’s answer to this is a clunky solution called SATA Express that takes two SATA connectors plus an additional connector to run PCIe X2 to a drive. Implementation wise, this halves the number of drives supported by a motherboard, and requires a huge clunky cable to the drive. Motherboards are out which support SATA Express (including mine), but actual drives which support it are essentially non-existent.
Unlike mSATA which supports just SATA and has a restricted slot size, M.2 was designed to be much more flexible. It can do SATA, it can do USB, it can do PCIe at X2 or X4 speed, and more. It also supports multiple slot sizes. Basically they wanted it to be a jack-of-all-trades slot instead of a one-trick-pony. And since it support X4, it can go twice as fast as SATA Express.
For SSDs the first generation of M.2 drives was all SATA, with the same performance limitations, but at least the drives took up a fraction of the space of the traditional 2.5″ SSD drive. This year saw the introduction of several models of M.2 PCIe X4 drives. The big advantage here is performance, with the PCie 3.0 X4 standard supporting speeds of over 3900MB/s, or about 7 times faster than SATA. The actual drives quickly leapfrogged SATA performance with the early drives offering performance of 1400MB/s or higher. Samsung has a drive coming soon with a top speed of 3500MB/s, almost reaching the limits of the interface. (Don’t worry, PCIe 4.0 is coming next year with even higher speeds.)
So after all that introduction, I built my new desktop back in June based on a 240GB Kingston HyperX Predator SSD which at the time was the fastest SSD readily available on the market in Taiwan. It cost over twice as much as a regular SATA SSD, but performance was 1400MB/s, well over twice as fast. Several months later, the Intel 600P SSDs came out, offering a bit better performance but a much more reasonable price premium of around 20% more than an M.2 SATA SSD, so I added on the 512GB model offering performance of 1775MB/S.
Some time after this, I attempted to start migrating my HDDs over from the old desktop which is when I ran into problems. I moved over a couple of HDDs, got everything hooked up, powered up, and… nothing. Drives didn’t show up in the BIOS or in Windows. I tried different cables, tried twiddling BIOS settings, and got nothing until I tried different SATA ports on the motherboard and by process of elimination found that SATA ports 0-3 didn’t work, but ports 4 and 5 did.
What the heck was going on? Was my motherboard broken? But why did two ports work instead of all six being defective? Finally I dove into the motherboard manual and discovered the reason. Chipsets only support a limited number of PCIe lanes, and each M.2 X4 slot uses up 4 of these, so I was using 8 lanes for my M.2 slots. As a tradeoff, the first M.2 slot shares lanes with the traditional PCIe X4 slot, while the second M.2 slot shares lanes with the controller for the first SATA controller serving the first four SATA ports. Only one of each pair of devices could be used at the same time, and the M.2 slot had priority.
Well, that kinda sucks. Either I only get 2 HDDs in the new desktop, or I have to give up on one of my SSDs (which I had just recently bought), neither a good option. I have 4 HDDs in my old system that I was planning to migrate and wanted room for growth. (The case and power supply both support six.)
At first I was thinking of adding on a SATA controller, but the cheap ones had limited performance and typically only supported two drives, while the ones with good specs were pretty expensive. That didn’t seem like a good option.
Then I found a few PCIe add-in boards that allow putting an M.2 PCIe drive in a PCIe slot. You need to be careful here because most M.2 PCIe add-in cards support controller-less M.2 SATA only, not M.2 PCIe X4. Eventually I found this board from Upmost which looked like it fit the bill, and it was only TW$399/US$12.50. It looked like it would work, but I wasn’t quite sure.
But wait, this uses one X4 slot but my motherboard only has one X4 slot, and it is disabled when the first M.2 slot is in use. No problem! It also has one X8 and one X16 slot, and these can also reportedly support X4 cards. Or at least I thought so.
Well, I bought the board, took my Intel 600P SSD out of the motherboard M.2 slot and moved it to the Upmost board and slipped it into the X8 slot. Booted up… and it worked! Drive showed up in Windows, benchmarks the same, and all my SATA ports worked too.
Now time to start moving those HDDs over.