Triple M.2 Samsung 950 Pro Z170 PCIe NVMe RAID Tested - Why So Snappy?
Setup and Configuration
While configuring this system for RAID, there is an important limitation of the Z170 chipset to consider:
The Gigabyte Z170X-SOC Force uses the more common alternate (**) configuration of the above diagram, meaning that the center M.2 x4 port replaces SATA 0-3. This frees up the possible use of the first M.2 slot with an x4 SSD combined with having all six Intel SATA ports available. In the case of a triple-M.2 x4 capable system, there is just no way to rearrange things to keep *any* SATA ports, so those who want triple M.2 RAID of PCIe x4 SSDs must give up *all* Intel SATA ports. Luckily motherboard manufacturers typically add an additional controller, and Gigabyte included an ASMedia ASM1061 chip for that purpose, giving the option to connect two additional mass storage drives in addition to the triple M.2 RAID acting as the OS drive.
With all of that out of the way, another note is that each Z170 BIOS implementation of Rapid Storage Technology RAID appears to have its own trick to actually enabling the mode properly.
In the case of the Gigabyte board we are looking at today, we had to ensure that the 'Windows 8/10' mode was selected, as well as to *disable* CSM boot. These steps were detailed in the manual that came with the board, though they were a bit hidden in the 'SATA RAID' section.
With those changes made, and following a reboot, the RST option magically appears in the Peripherals.
Within this section, all installed M.2 SSDs appeared and could be added to an array, all done within the UEFI BIOS interface. For NVMe SSDs, I recommend sticking with the default stripe size automatically chosen by the interface.
Note that with CSM disabled you *must* have GPT formatted USB installation media in order to successfully install Windows to the array. This is a catch-22, as enabling CSM to boot from MBR-formatted USB media will also make the array disappear, so GPT is the only way to go. It's high time we all switch over to GPT for everything. Resistance is futile.
The Windows installer will likely require the 'floppy-style' .inf driver to see the array. Once within Windows you can install the full version of RST and get the familiar console seen above. There you can change caching options, however my testing showed only minor changes in performance to an NVMe SSD RAID, so I recommend leaving these settings at defaults. I also did some performance testing of various stripe sizes and found that the default (which varies by array capacity and other factors) always ended up at a good balance point between random IO performance and array overhead. The point here is to play it safe and stick with the defaults all around, since tweaking won't give you any improvement that is worth the added risk of data loss should the system crash or suffer a power loss event.