The modern hard drive has several rotating disks. Two read/write heads are usually used per disk. The read/write heads are all attached to a single, movable read/write arm. Due to this physical arrangement, neither HDDs nor their protocols are optimized for mass parallel access to data.
The well-established SATA protocol has a single command queue to execute hard disk commands one after the other. The non-volatile memory express protocol, on the other hand, supports 64,000 queues, with up to 64,000 commands per queue. This ensures a high degree of data access parallelism, which leads to high data throughput rates and low latencies.
Compared to HDDs, SSDs do not read and write data sequentially; the data access to SSDs is just as fast at every position as it is with random access main memory.
Protocol commands with NVMe are created and processed according to the following pattern:
- Host transmits I/O Submission Queues
- Controller recalls I/O Submission Queues
- Controller runs I/O Submission Queues
- Controller transmits I/O Completion Queues
- Host receives I/O Completion Queues