
In In der Reihe "Einführung in SSDs" haben wir die Geschichte der Festplatten behandelt. Der zweite Teil wird sich mit den Schnittstellen zum Austausch mit den Speichern befassen.
Die Kommunikation zwischen dem Prozessor und den Peripheriegeräten erfolgt gemäß vordefinierten Vereinbarungen, die als Schnittstellen bezeichnet werden. Diese Vereinbarungen regeln das physische und das softwareseitige Niveau der Interaktion.
Eine Schnittstelle ist die Gesamtheit von Mitteln, Methoden und Regeln für die Interaktion zwischen den Systemelementen.
Die physische Umsetzung der Schnittstelle beeinflusst folgende Parameter:
- die Bandbreite des Kommunikationskanals;
- die maximale Anzahl gleichzeitig angeschlossener Geräte;
- die Anzahl der auftretenden Fehler.
Festplattenschnittstellen basieren auf Eingabe-/Ausgabeports, was das Gegenteil der Eingabe-/Ausgabe über Speicher ist und keinen Platz im Adressraum des Prozessors beansprucht.
Parallele und serielle Ports
Nach der Art des Datenaustauschs werden die Eingabe-/Ausgabeports in zwei Typen unterteilt:
- parallele;
- serielle.
Wie der Name schon sagt, sendet der parallele Port ein Maschinenwort, das aus mehreren Bits besteht, auf einmal. Der parallele Port ist die einfachste Methode zum Datenaustausch, da er keine komplexen Schaltkreise erfordert. Im einfachsten Fall wird jedes Bit des Maschinenworts über seine eigene Signalleitung gesendet, während für die Rückmeldung zwei zusätzliche Signalleitungen verwendet werden. Daten bereit und Daten empfangen.
Auf den ersten Blick scheinen parallele Ports hervorragend skalierbar zu sein: mehr Signalleitungen — mehr Bits, die auf einmal übertragen werden, und somit eine höhere Bandbreite. Dennoch führt die zunehmende Anzahl von Signalleitungen zu interferierenden Wechselwirkungen, was zu Verzerrungen der übertragenen Nachrichten führt.
Serielle Ports sind das Gegenstück zu parallelen. Die Datenübertragung erfolgt bitweise, was die Gesamtanzahl der Signalleitungen verringert, jedoch den Eingangs-/Ausgangscontroller komplizierter macht. Der Sender-Controller erhält ein Maschinenwort auf einmal und muss die Daten bitweise übertragen, während der Empfänger-Controller die Bits in der gleichen Reihenfolge empfangen und speichern muss.
Die geringe Anzahl an Signalleitungen ermöglicht es, die Übertragungsfrequenz des Signals ohne Störungen zu erhöhen.
SCSI

Das Small Computer Systems Interface (SCSI) wurde 1978 eingeführt und ursprünglich entwickelt, um Geräte unterschiedlicher Profile in ein einziges System zu integrieren. Die SCSI-1-Spezifikation sah die Anschlussmöglichkeit von bis zu 8 Geräten (einschließlich des Controllers) vor, darunter:
- Scanner;
- Bänderlaufwerke (Streamer);
- Optische Laufwerke;
- Festplattenlaufwerke und andere Geräte.
Ursprünglich wurde SCSI als Shugart Associates System Interface (SASI) bezeichnet, doch das Normungskomitee wollte den Namen nicht zu Ehren der Firma genehmigen. Nach einem Brainstorming-Tag entstand der Name Small Computer Systems Interface (SCSI). Der „Vater“ von SCSI, Larry Boucher, hatte ursprünglich angedeutet, dass die Abkürzung wie „sexy“ ausgesprochen werden sollte, aber las es als „sсuzzy“ („скази“). In der Folge hat sich die Aussprache „скази“ fest mit diesem Standard verbunden.
In der SCSI-Terminologie werden die angeschlossenen Geräte in zwei Typen unterteilt:
- Initiatoren;
- Zielgeräte.
Der Initiator sendet einen Befehl an das Zielgerät, das dann eine Antwort an den Initiator sendet. Initiatoren und Zielgeräte sind mit einem gemeinsamen SCSI-Bus verbunden, dessen Bandbreite im Standard SCSI-1 5 MB/s beträgt.
Die verwendete Topologie „gemeinsame Bus“ bringt einige Einschränkungen mit sich:
- Am Ende des Busses sind spezielle Geräte erforderlich — Terminatoren;
- die Bandbreite des Busses wird zwischen allen Geräten geteilt;
- die maximale Anzahl gleichzeitig angeschlossener Geräte ist begrenzt.
Geräte im Bus werden durch eine eindeutige Nummer identifiziert, die als SCSI Target ID. Jedes SCSI-Gerät im System wird durch mindestens ein logisches Gerät repräsentiert, dessen Adressierung durch eine innerhalb des physischen Geräts eindeutige Nummer erfolgt. Logische Einheitennummer (LUN).

Befehle in SCSI werden in Form von Befehlsbeschreibungsblöcken (Command Descriptor Block, CDB) gesendet, die aus einem Operationscode und den Parametern des Befehls bestehen. Der Standard beschreibt mehr als 200 Befehle, die in vier Kategorien unterteilt sind:
- Obligatorisch — müssen vom Gerät unterstützt werden;
- Optional — können implementiert werden;
- Herstellerspezifisch — werden von einem bestimmten Hersteller verwendet;
- Veraltet — nicht mehr verwendbare Befehle.
Unter den vielen Befehlen sind nur drei für Geräte verpflichtend:
- TEST UNIT READY — prüft die Bereitschaft des Geräts;
- REQUEST SENSE — fordert den Fehlercode des vorherigen Befehls an;
- INQUIRY — fragt die grundlegenden Merkmale des Geräts ab.
Nach Erhalt und Verarbeitung des Befehls sendet das Zielgerät dem Initiator einen Statuscode, der das Ergebnis der Ausführung beschreibt.
Die Weiterentwicklung von SCSI (SCSI-2 und Ultra SCSI-Spezifikationen) erweiterte die Liste der verwendeten Befehle und erhöhte die Anzahl der anschließbaren Geräte auf 16, während die Datenübertragungsrate über den Bus auf 640 MB/s anstieg. Da SCSI ein paralleles Interface ist, war die Erhöhung der Datenübertragungsrate mit einer Verringerung der maximalen Kabellänge verbunden, was die Verwendung unpraktisch machte.
Mit dem Ultra-3 SCSI-Standard wurde die Unterstützung für "Hot-Plugging" eingeführt – das Anschließen von Geräten bei eingeschaltetem Strom.
Die erste bekannte SSD mit SCSI-Schnittstelle ist die M-Systems FFD-350, die 1995 herauskam. Die Festplatte hatte hohe Kosten und war nicht weit verbreitet.
Derzeit ist paralleles SCSI kein populäres Anschlussinterface für Festplatten, aber der Befehlssatz wird nach wie vor aktiv in USB- und SAS-Interfaces verwendet.
ATA / PATA

Benutzeroberfläche ATA (Advanced Technology Attachment), auch bekannt als PATA (Parallel ATA) wurde 1986 von Western Digital entwickelt. Der Marketingname des IDE-Standards (engl. Integrated Drive Electronics – „Elektronik, die in das Laufwerk integriert ist“) hebt eine wichtige Neuerung hervor: Der Laufwerkscontroller war in das Laufwerk integriert und nicht auf einer separaten Erweiterungskarte.
Die Entscheidung, den Controller im Laufwerk zu platzieren, löste mehrere Probleme gleichzeitig. Erstens verringerte sich der Abstand vom Speichergerät zum Controller, was sich positiv auf die Leistung des Speichers auswirkte. Zweitens war der integrierte Controller nur für einen bestimmten Typ von Laufwerk „optimiert“ und daher kostengünstiger.

ATA verwendet wie SCSI eine parallele Eingabe-/Ausgabe-Methode, was sich auf die verwendeten Kabel auswirkt. Zum Anschluss von Festplatten über den IDE-Standard sind 40-adrige Kabel erforderlich, auch als Ribbon-Kabel bekannt. In späteren Spezifikationen werden 80-adrige Ribbon-Kabel verwendet, von denen mehr als die Hälfte zur Erdung dient, um Interferenzen bei hohen Frequenzen zu reduzieren.
Das ATA-Kabel verfügt über zwei bis vier Anschlüsse, von denen einer an das Motherboard und die anderen an die Speicherlaufwerke angeschlossen werden. Wenn zwei Geräte über dasselbe Kabel verbunden sind, muss eines davon als Master, und das andere als Slave. Das dritte Gerät kann ausschließlich im „Nur-Lese“-Modus angeschlossen werden.
Die Position des Jumper bestimmt die Rolle des spezifischen Geräts. Die Begriffe Master und Slave im Zusammenhang mit den Geräten sind nicht ganz korrekt, da alle angeschlossenen Geräte im Verhältnis zum Controller Slaves sind.
Eine besondere Neuerung in ATA-3 ist das Erscheinen von Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.). Fünf Unternehmen (IBM, Seagate, Quantum, Conner und Western Digital) haben ihre Kräfte gebündelt und die Technologie zur Zustandsbewertung von Speicherlaufwerken standardisiert.
Die Unterstützung für Solid-State-Laufwerke kam mit der vierten Version des Standards, die 1998 veröffentlicht wurde. Diese Version des Standards gewährte eine Datenübertragungsrate von bis zu 33,3 MB/s.
Der Standard stellt strenge Anforderungen an ATA-Kabel:
- das Kabel muss unbedingt flach sein;
- die maximale Länge des Kabels beträgt 18 Zoll (45,7 Zentimeter).
Das kurze und breite Kabel war unhandlich und behinderte die Kühlung. Die Erhöhung der Übertragungsrate wurde mit jeder neuen Version des Standards zunehmend komplizierter, und ATA-7 löste das Problem radikal: Der parallele Anschluss wurde durch einen seriellen ersetzt. Danach erhielt ATA das Wort Parallel und wurde PATA genannt, während die siebte Version des Standards einen anderen Namen erhielt – Serial ATA. Die Versionsnummerierung von SATA begann mit eins.
SATA

Der Serial ATA (SATA) Standard wurde am 7. Januar 2003 eingeführt und behob die Probleme seines Vorgängers durch folgende Änderungen:
- Der parallele Anschluss wurde durch einen seriellen ersetzt;
- Das breite 80-adrige Kabel wurde durch ein 7-adriges ersetzt;
- Die Topologie 'gemeinsame Bus' wurde durch eine 'Punkt-zu-Punkt'-Verbindung ersetzt.
Obwohl der SATA 1.0 Standard (SATA/150, 150 MB/s) nur geringfügig schneller war als ATA-6 (UltraDMA/130, 130 MB/s), war der Übergang zu einer seriellen Datenübertragung eine 'Vorbereitung des Bodens' für höhere Geschwindigkeiten.
Sechzehn Signalleitungen zur Datenübertragung in ATA wurden durch zwei verdrillte Paare ersetzt: eines für die Übertragung, das andere für den Empfang. Die SATA-Stecker wurden für eine höhere Widerstandsfähigkeit gegen häufiges Umstecken ausgelegt, und die SATA 1.0-Spezifikation ermöglichte das "Hot Plugging".
Einige Pins auf den Laufwerken sind kürzer als die anderen. Dies dient der Unterstützung von "Hot Swap". Während des Austauschs "verliert" das Gerät seine Verbindungen und "findet" die Leitungen in einer vorher festgelegten Reihenfolge wieder.
Etwas mehr als ein Jahr später, im April 2004, wurde die zweite Version der SATA-Spezifikation veröffentlicht. Neben einer Beschleunigung auf bis zu 3 Gbit/s führte SATA 2.0 die Technologie Native Command Queuing (NCQ) ein. Geräte, die NCQ unterstützen, sind in der Lage, die Reihenfolge der empfangenen Befehle selbstständig zu organisieren, um maximale Leistung zu erzielen.
In den folgenden drei Jahren arbeitete die SATA Working Group an der Verbesserung der bestehenden Spezifikation, und in Version 2.6 wurden die kompakten Stecker Slimline und micro SATA (uSATA) eingeführt. Diese Stecker sind eine verkleinerte Version des ursprünglichen SATA-Steckers und wurden für optische Laufwerke und kleine Festplatten in Laptops entwickelt.
Obwohl die Bandbreite der zweiten SATA-Generation für Festplatten ausreichte, benötigten Solid-State-Laufwerke mehr. Im Mai 2009 wurde die dritte Version der SATA-Spezifikation mit einer erhöhten Bandbreite von 6 Gbit/s veröffentlicht.
In der SATA 3.1-Revision wurde besonderen Wert auf Solid-State-Laufwerke gelegt. Es wurde ein Mini-SATA (mSATA)-Stecker eingeführt, der für den Anschluss von Solid-State-Laufwerken in Laptops gedacht ist. Im Gegensatz zu Slimline und uSATA ähnelte der neue Stecker dem PCIe Mini, war jedoch elektrisch nicht mit PCIe kompatibel. Neben dem neuen Stecker konnte SATA 3.1 mit der Möglichkeit prahlen, TRIM-Befehle zusammen mit Lese- und Schreibbefehlen in die Warteschlange zu stellen.
Der TRIM-Befehl informiert das Solid-State-Laufwerk über Datenblöcke, die keine nützliche Last tragen. Vor SATA 3.1 führte die Ausführung dieses Befehls dazu, dass Cache-Speicher zurückgesetzt und die Ein- und Ausgabeoperationen unterbrochen wurden, bevor der TRIM-Befehl ausgeführt wurde. Dieser Ansatz verschlechterte die Leistung des Laufwerks bei Löschoperationen.
Die SATA-Spezifikation konnte mit dem rasanten Anstieg der Zugriffsgeschwindigkeit von SSDs nicht Schritt halten, was 2013 zur Einführung eines Kompromisses namens SATA Express im SATA 3.2 Standard führte. Anstatt die Bandbreite von SATA erneut zu verdoppeln, nutzten die Entwickler den weit verbreiteten PCIe-Bus, dessen Geschwindigkeit 6 Gbit/s übersteigt. SATA Express-kompatible Laufwerke erhielten einen eigenen Formfaktor namens M.2.
SAS

Der "konkurrierende" Standard SCSI blieb ebenfalls nicht stehen und wurde nur ein Jahr nach der Einführung von Serial ATA, im Jahr 2004, in eine serielle Schnittstelle umgewandelt. Der neue Schnittstelle wurde der Name Serial Attached SCSI (SAS).
Obwohl SAS das SCSI-Befehlssatz geerbt hat, gab es erhebliche Änderungen:
- serielle Schnittstelle;
- 29-poliges Kabel mit Stromversorgung;
- Punkt-zu-Punkt-Verbindung
Die Terminologie von SCSI wurde ebenfalls übernommen. Der Controller wird nach wie vor als Initiator bezeichnet, während die angeschlossenen Geräte als Ziele bezeichnet werden. Alle Zielgeräte und der Initiator bilden eine SAS-Domäne. Bei SAS hängt die Bandbreite der Verbindung nicht von der Anzahl der Geräte in der Domäne ab, da jedes Gerät seinen eigenen dedizierten Kanal verwendet.
Die maximale Anzahl gleichzeitig verbundener Geräte im SAS-Domänen-Außenspezifikation übersteigt 16.000, wobei anstelle der SCSI-ID eine Identifikationsnummer verwendet wird. World-Wide Name (WWN).
WWN ist eine eindeutige 16-Byte-Identifikation, vergleichbar mit einer MAC-Adresse für SAS-Geräte.
Trotz der Ähnlichkeit der SAS- und SATA-Anschlüsse sind diese Standards nicht vollständig kompatibel. Dennoch kann eine SATA-Festplatte an einen SAS-Anschluss angeschlossen werden, aber nicht umgekehrt. Die Kompatibilität zwischen SATA-Festplatten und der SAS-Domäne wird durch das SATA Tunneling Protocol (STP) sichergestellt.
Die erste Version des SAS-Standards, SAS-1, hat eine Bandbreite von 3 Gbit/s, während die modernste Version, SAS-4, diese Rate um das Siebenfache auf 22,5 Gbit/s gesteigert hat.
PCIe

Peripheral Component Interconnect Express (PCI Express, PCIe) ist ein sequentieller Datenübertragungsstandard, der 2002 eingeführt wurde. Die Entwicklung begann bei Intel und wurde später an die PCI Special Interest Group übergeben.
Der sequentielle PCIe-Standard war keine Ausnahme und stellte eine logische Fortsetzung des parallelen PCI dar, der zum Anschluss von Erweiterungskarten verwendet wird.
PCI Express unterscheidet sich erheblich von SATA und SAS. Die PCIe-Schnittstelle verfügt über eine variable Anzahl von Leitungen, die durch Potenzen von zwei definiert sind und im Bereich von 1 bis 16 liegen.
Der Begriff „Leitung“ in PCIe bezieht sich nicht auf eine bestimmte Signalleitung, sondern auf einen separaten vollduplex Kommunikationskanal, der aus folgenden Signalleitungen besteht:
- Empfang+ und Empfang-;
- Übertragung+ und Übertragung-;
- vier Erdungskabel.
Die Anzahl der PCIe-Leitungen hat direkten Einfluss auf die maximale Bandbreite der Verbindung. Der aktuelle Standard PCI Express 4.0 erreicht 1,9 GB/s über eine Leitung und 31,5 GB/s bei der Verwendung von 16 Leitungen.

Der „Appetit“ von Solid-State-Laufwerken wächst sehr schnell. Weder SATA noch SAS können ihre Bandbreite schnell genug erhöhen, um mit SSDs Schritt zu halten, was zur Entwicklung von SSD-Laufwerken mit PCIe-Anschluss geführt hat.
Obwohl PCIe Add-In-Karten mit einer Schraube befestigt werden, unterstützt PCIe den „heißen Austausch“. Kurze Pins PRSNT (engl. present – vorhanden) garantieren, dass die Karte vollständig im Slot sitzt.
Die über PCIe verbundenen Solid-State-Laufwerke unterliegen einem separaten Standard. Non-Volatile Memory Host Controller Interface Specification und in zahlreichen Formfaktoren umgesetzt, aber darüber werden wir im nächsten Teil berichten.
Remote-Speicher
Mit der Schaffung großer Datenspeicher entstand die Notwendigkeit von Protokollen, die es ermöglichen, Speicher anzuschließen, die sich außerhalb des Servers befinden. Die erste Lösung in diesem Bereich war Internet SCSI (iSCSI), entwickelt von IBM und Cisco im Jahr 1998.
Die Idee des iSCSI-Protokolls ist einfach: SCSI-Befehle werden in TCP/IP-Pakete „eingehüllt“ und über das Netzwerk übertragen. Trotz der fernvernetzten Verbindung entsteht für die Clients die Illusion, dass der Speicher lokal verbunden ist. Ein auf iSCSI basierendes Storage Area Network (SAN) kann auf bestehender Netzwerkinfrastruktur aufgebaut werden. Die Nutzung von iSCSI senkt die Kosten für die Einrichtung von SAN erheblich.
Es gibt eine „Premium“-Version von iSCSI — Fibre Channel Protocol (FCP). SANs, die FCP verwenden, werden über dedizierte Glasfaserverbindungen aufgebaut. Dieser Ansatz erfordert zusätzliche optische Netzwerkausrüstung, bietet jedoch Stabilität und hohe Bandbreite.
Es gibt viele Protokolle, um SCSI-Befehle über Computernetzwerke zu senden. Dennoch gibt es nur einen Standard, der das entgegengesetzte Problem löst und es ermöglicht, IP-Pakete über den SCSI-Bus zu senden — .
Die meisten Protokolle zur Einrichtung von SAN nutzen SCSI-Befehle zur Verwaltung von Speichermedien, aber es gibt auch Ausnahmen, wie zum Beispiel das einfache ATA over Ethernet (AoE). Das AoE-Protokoll sendet ATA-Befehle in Ethernet-Paketen, jedoch werden die Speicher in diesem System als SCSI angezeigt.
Mit dem Aufkommen von NVM Express-SSDs konnten die Protokolle iSCSI und FCP den schnell wachsenden Anforderungen an Flash-Speicher nicht mehr gerecht werden. Es entstanden zwei Lösungen:
- das Herausziehen des PCI Express-Bus aus dem Server;
- die Einführung eines Protokolls NVMe over Fabrics.
Das Herausziehen des PCIe-Bus erfordert die Schaffung komplexer Switch-Hardware, jedoch ohne Änderungen am Protokoll.
Das Protokoll NVMe over Fabrics ist eine gute Alternative zu iSCSI und FCP. In NVMe-oF werden Glasfaserleitungen und der Befehlssatz von NVM Express verwendet.
DDR-T

Die Standards iSCSI und NVMe-oF lösen das Problem der Anbindung von entfernten Festplatten als lokale, während das Unternehmen Intel einen anderen Weg eingeschlagen hat, um die lokale Festplatte dem Prozessor möglichst nahe zu bringen. Die Wahl fiel auf DIMM-Slots, in die der Arbeitsspeicher gesteckt wird. Die maximale Bandbreite des DDR4-Kanals beträgt 25 GB/s, was die Geschwindigkeit des PCIe-Busses deutlich übertrifft. So entstand das Intel® Optane™ DC Persistent Memory.
Für die Verbindung des Speichers in DIMM-Slots wurde ein Protokoll erfunden DDR-T, das physisch und elektrisch mit DDR4 kompatibel ist, jedoch einen speziellen Controller benötigt, der den Unterschied zwischen dem RAM-Riegel und dem Speicher erkennt. Die Zugriffszeit auf den Speicher ist geringer als bei Arbeitsspeicher, jedoch höher als bei NVMe.
Das DDR-T-Protokoll ist nur mit Intel® Prozessoren der Cascade-Lake-Generation oder neuer verfügbar.
Fazit
Fast alle Schnittstellen haben einen langen Entwicklungsweg von der seriellen hin zur parallelen Datenübertragung zurückgelegt. Die Geschwindigkeiten von SSDs steigen rapide an; gestern waren SSDs noch eine Seltenheit, heute sorgt NVMe nicht mehr für großes Staunen.
In unserem Labor Sie können SSD- und NVMe-Laufwerke selbst testen.
Nur registrierte Benutzer können an der Umfrage teilnehmen. Sind Sie an Contour interessiert?
Werden NVMe-Laufwerke in naher Zukunft klassische SSDs verdrängen?
55.5%Ja100
44.4%Nein80
180 Benutzer haben abgestimmt. 28 Benutzer haben sich enthalten.
Quelle: habr.com
