What is NVMe in Solid State Drives?

879 views

I tried reading the description on Tom’s Hardware website, but I didn’t understand what I was reading.

In: Technology

5 Answers

Anonymous 0 Comments

NVMe (Non-Volatile Memory Express) is an interface protocol built especially for Solid State Drives (SSDs). NVMe works with PCI Express (PCIe) to transfer data to and from SSDs. NVMe enables rapid storage in computer SSDs and is an improvement over older Hard Disk Drive (HDD) related interfaces such as SATA and SAS. The only reason SATA and SAS are used with SSDs in computers is that until recently, only slower HDDs have been used as the large-capacity storage in computers. Flash memory has been used in mobile devices such as smartphones, tablets, USB drives and SD cards. (SSDs are flash memory.)

https://www.microcontrollertips.com/why-nvme-ssds-are-faster-than-sata-ssds/

Anonymous 0 Comments

Ok, so you know how old spinning platter drives the OS would ask the drive – hey, give me data starting at this block and offset. The read/write heads would move into position over the block (a physical location on one of the platters) and start to read bytes.

Soooooper slow. Limited by how fast the disk spun. So to speed that up disks started having cache memory. Some smart look-ahead and usage caching would pre-read the entire file into cache memory so when the OS asked for the file, it was in quick cache memory.

BUT, SSD drives were meant to be replacements for spinning platter drives, so access to them through OS drivers > motherboard > disk controllers > on-drive controller still had to use the same old familiar protocols and signalling… which were designed for the old slower technology.

Now that flash memory access is soooo much faster if you could ditch all that legacy crap and let the OS+filesystem talk directly to specific memory addresses on the SSD’s memory chips, you could read/write very very fast.

So that’s basically what NVMe is – it allows near direct communication between your OS and filesystem and the memory controllers on the SSD. But it requires special hardware support from your computer’s mobo/chipset and corresponding OS drivers.

May not be the best analogy, but first in my head: Back in the day cargo ships had to be loaded/unloaded manually – lifting bags and boxes of cargo one by one or in slings in and out of cargo hatches. Cranes and loading tech got better, so did packaging of cargo, but they were still limited by the cargo hatches and ship structures. Along came metal cargo containers, now whole cargoes are put in/taken off ships literally by robots. So much faster.

It would be like instead of loading passengers into an airplane seat by seat or row by row, the plane just picked up the whole gate/lounge area and flew off with it.

Anonymous 0 Comments

It’s a specification (list of agreed ways that two pieces of stuff can interact) for how computers can talk to storage devices that use non-volatile memory and are connected over a particular connection type called PCI Express.

Think of a normal USB flash drive…that’s NVM connecting over a Universal Serial Bus (USB). The USB specification tells computers and flash driver manufacturers how the devices should behave, that’s why you can plug any flash drive into an USB port and, generally, it will work.

Except USB isn’t fast enough, in a lot of cases, for main computer storage like the hard drive, and it doesn’t take advantage of some of the unique properties of solid state drives (USB has to work for lots of things). PCI Express is a much faster connection that can be used to talk to high throughput devices like graphics cards or solid state drives, and it supports moving a lot of data in parallel, which solid state drives are good at (but hard drives aren’t). NVMe is the name of the specification that covers SSDs over PCI Express, so any SSD (in theory) will connect properly to any PCI Express bus.

Anonymous 0 Comments

NVMe is a faster equivalent to SATA for connecting the drive to the system

SATA was built for old HDDs which are relatively slow and can’t respond to very many requests in a timely manner. NVMe was designed explicitly for SSDs, specifically those little ones that go in that narrow M.2 slot on the motherboard.

NVMe using 4 PCIe 3.0 lanes will manage about 32 Gb/s while SATA 3 will manage just 6 Gb/s giving NVMe a peak throughput that’s 5x higher, but real performance can be even higher.

Old hard drives are ludicrously slow compared to the CPU taking millions of clock cycles so requests were punted out and checked on a couple eons later, but modern SSDs are only a couple orders of magnitude slower than RAM(tens of thousands of clock cycles) and it can read multiple blocks at the same time so NVMe increased the amount of different requested datablocks that can be queued up for the SSD since it can get to them in a timely manner, this means that more of the SSD is busy at any given moment so you lose less time waiting between reads. Having a 32 Gb/s bandwidth doesn’t help if you spend 75% of your time waiting for the next thing to read so the deeper queue helps significantly.

Anonymous 0 Comments

It’s an interface (special connector with a specific algorithm) that allows SSDs to access to it’s data way faster than the older protocols used for the old hard drives and old SSDs.

Quick summary on how:
Old hard drives have a disk that rotates and a “needle” that reads a position of the disk in order to retrieve data (kinda like vinyls, yeah). This allows only to obtain 1 piece of data at the same time. SSDs are a bunch of chips that retrieve the memory position they are asked, with no moving parts, so the limitation of 1 piece of data at a time shouldn’t exist. However, first SSDs are designed to be compatible with the old HDs and hence only support obtaining 1 data at a time, but faster than the HDs.

NVMe just change that “one piece data at a time” to allow several search operations to be performed in parallel.