The original versions of the SAS and SATA specifications were designed for communication between PC motherboards (or separate controllers) and spinning disk hard drives. They are based on standards that were developed before existing flash memory storage was available. Because SSDs have very different capabilities and requirements from hard drives, a new standard, non-volatile memory express, or NVMe, has been introduced that can better take advantage of high-performance flash memory.
Standards body adoption for NVMe, SAS and SATA specifications covers products used on PCs, laptops, PC servers and mobile devices connected to new SSDs. Standards are set through the T10, T13 and NVMe Technical Committees, and add additional SSD capabilities for wear leveling, garbage collection and more through SSD controller enhancements. Furthermore, they set additional protocols and commands available to communicate with newer SSDs.
These standards not only ensure that PC-connected SSDs achieve their optimum performance and reliability, but also that any SSD can connect to any controller on any motherboard.
Getting Down to Basics
At a fundamental level, a hard drive uses a magnet to change an individual bit from off to on, or vice versa. Each block is a separate spot on a rotating platter, one of up to seven. The speed of the bits passing under the read/write head varies according to how close or far from the edge of the disk the bit is placed. The process of reading and writing must take into account the varying number of bits per second caused by the smaller number of bits in the tracks near the center and the larger number near the edge of the disk, and be able to find the appropriate track with the written data.
In contrast, an SSD changes a cell within a block of cells. That cell may have one, two, three or four bits. The speed of reading any given bit on an SSD will be the same as any other — there’s no physical location that takes more time than others. Changing any one bit requires erasing a whole block, which can range in size from 512 bytes to 8192 bytes (8 KB).
This means that changing one bit within a block requires writing a much larger amount of data, which is why SSDs typically have faster read speeds than write speeds. Newer SSDs can wait until they have multiple writes to a single block, so that one block rewrite can encompass multiple bit changes.
SSD cells also have limited numbers of writes that can occur before the cell ceases to function — wear leveling ensures that the cells wear out evenly, but means that the particular cell that holds a specific part of a file will change regularly, unlike a hard drive where a bit that is part of a file is only moved when a file is erased. With this potential to wear down and lose data, users need to make sure that their operating standards and hardware are up-to-date to avoid any broken connections. The NVMe specification allows the SSD controller to make wear leveling more intelligent so that as cells, blocks and files are changed, the pieces of a file are consolidated, reducing the number of writes and the wear on the cells.
NVMe adds a number of capabilities to the older SATA specification. It supports multiple physical connections, including the M.2 PCIe connection, as well as the U.2 connection for 2.5- and 3.5-in. SSDs. NVMe also supports multiple simultaneous streams, faster speeds and allows data to be written to specific pages on the disk to be written in the same stream, reducing write amplification.
Ever-Changing Data and Garbage Collection
The process of moving data to new cells and erasing the old cells is called garbage collection and causes data to continue to be changed after the system has finished writing.
The new standards let an operating system communicate to the controller about garbage collection, allowing the software to coordinate with the SSD to minimize garbage collection and reduce the number of reads and writes necessary by combining multiple writes that occur within the same block.
With older SATA SSDs, if a lot of data is being written, garbage collection may lag considerably behind. The new NVMe SSD standard allows for data to be divided into streams, so that data going to the same blocks can be written at the same time, minimizing the need for garbage collection. The TRIM command helps the system and the SSD to better handle garbage collection and the protocol used to connect SSD to computer must take this into account.
NVMe adds a number of commands for communicating with NVMe SSDs, as well as faster interfaces and optimized routines for writing data to the SSD without incurring penalties due to write amplification, by collecting multiple changes to the same page on the SSD and writing them all at once.
Find the best storage solutions for your business by checking out our award-winning selection of SSDs for the enterprise.