Festplatten: Das macht NVMe anders (und besser) als Sata
Wir erklären, wie Prozessor und Speichermedien Daten austauschen, was NVMe anders macht als Sata und warum es für SSDs besser geeignet ist.

Grundsätzlich ist die Aufgabe eines Protokolls zur Kommunikation mit Festplatten einfach: Es muss mitteilen, von wo auf dem Speichermedium Daten gelesen und wo sie im RAM des Systems abgelegt werden sollen. Beim Schreiben wird nur die Richtung umgedreht, daneben müssen noch ein paar Befehle und Statusinformationen übermittelt werden. Diese einfache Funktion lässt sich aber auf ganz unterschiedliche Weisen realisieren. Wir sehen uns an, wie das beim alten Standard Sata (für Serial Advanced Technology Attachment) mit dem neueren NVMe (für Non-Volatile Memory express) funktioniert.
- Festplatten: Das macht NVMe anders (und besser) als Sata
- Zirkuläre Puffer und eine Klingel
- NVMe ohne PCIe: Kaum denkbar
Da verschiedene Speichermedien unterschiedlich angesteuert werden, ist immer ein Controller erforderlich. Er setzt ein für den Prozessor angenehmes Protokoll in Ansteuerinformationen für das Speichermedium um. Bei klassischen HDDs und optischen Laufwerken müssen die Schreib-Lese-Köpfe positioniert, bei SSDs die passenden Flash-Chips angesprochen werden. Hier finden wir auch gleich den ersten Unterschied.
Beim klassischen Sata, dessen Geschichte bis ins Jahr 1989 zurückgeht, findet sich neben dem Controller der Festplatte noch ein sogenannter Host-Controller. Er übersetzt von einer Host-Schnittstelle, oft PCI(e), zunächst auf ein standardisiertes Protokoll zur Kommunikation mit einem oder mehreren Speichermedien über eine ebenfalls standardisierte Schnittstelle.
Nur noch ein Controller
Bei NVMe fällt der Host-Controller weg, jede SSD integriert stattdessen ein komplexeren Controller, der auch Aufgaben übernimmt, die bei Sata der Host-Controller erledigt. Dazu gehört der direkte Speicherzugriff mittels DMA (Direct Memory Access). Damit werden Daten in den RAM geschrieben oder von dort gelesen und so mit Anwendungen ausgetauscht.
Auf den ersten Blick mag es sinnvoll erscheinen, wie bei Sata sowie dessen Vorgänger mit parallelem Datenbus (PATA) nur einen komplexen Host- und viele einfache Festplatten-Controller zu verwenden. Die Vermittlung durch den Host-Controller macht allerdings ein recht komplexes Protokoll erforderlich, über das er mit dem Festplatten-Controller kommuniziert. Dabei muss der Host-Controller einige der vom Gerät erzeugten Datenstrukturen (Frame Information Structures, FISs) selbst verarbeiten, etwa um mittels DMA gelesene Daten in den RAM zu schreiben.
Andere FISs muss er hingegen in einen Puffer im Speicher schreiben, damit der Treiber sie auswerten kann. Für SSDs, die im Vergleich zu den klassischen HDDs wesentlich geringere Zugriffslatenzen haben, ist das allerdings Gift. Denn jede Kommunikation zwischen den beteiligten Controllern bedeutet eine Verlängerung der Latenz beim Zugriff auf den RAM.
Das Protokoll wird radikal einfacher
Die lange Geschichte von Sata geht mit einem immer weiter gewachsenen Protokoll mit über 100 ATA-Befehlen einher, dazu kommen noch die ATAPI-Befehle, die etwa für optische Laufwerke erforderlich sind. Die meisten der vielen Befehle sind für SSDs irrelevant. NVMe markiert hier einen kompletten Neuanfang mit dem Ziel, einen möglichst kompakten Befehlssatz zu schaffen. Der führt zu einfacheren Datenstrukturen und lässt sich zudem effizienter übertragen.
Während bei Sata mehrere Zugriffe auf Register des Host-Controllers erforderlich sind, um ein Kommando zum Festplatten-Controller zu schicken, genügt bei NVMe laut Spezifikation (PDF) einer. Die Register, die etwa das von Intel entwickelte Advanced Host Controller Interface (AHCI, PDF) definiert, können zudem nicht gecached werden. Der Grund dafür ist, dass sie sowohl vom Prozessor als auch vom Host-Controller beschrieben werden. Das führt dazu, dass jeder Zugriff eine kleine und mit paketbasierten Schnittstellen wie PCIe (g+) ineffiziente Transaktion auslöst.
Die Schnittstelle zum Senden von Kommandos zur SSD (und zum Empfangen ihrer Antworten) ist bei NVMe ebenfalls deutlich einfacher.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Zirkuläre Puffer und eine Klingel |
Wohl eher 2 Minuten (HDD) vs. 20 Sekunden (SATA SSD) vs. 18 Sekunden (NVMe SSD). 1...
Setzt ja leider voraus, dass man einen Chipsatz hat, der auf mehreren PCIe Steckplätzen...
Was ist da attraktiv? Grade bei größeren Kapazitäten sind SATA SSDs bedeutend...
Der Artikel weist auf die historisch bedingten Unzulänglichkeiten von SATA hin. Zahlen...
Kommentieren