NAND-basierte SSDs (Solid-State Drives) finden sich in immer mehr tragbaren Rechnern und in Desktop-PCs. Im Gegensatz zu Festplatten (HDDs, Hard Disk Drives) bieten sie mehrere Vorteile: schnellere Geschwindigkeit beim Auslesen von Daten, höhere Stoß- und Vibrationsfestigkeit und geringerer Stromverbrauch. Zudem sind sie kompakt und leicht, was den Einsatz in mobilen Rechnern begünstigt.

Auf einen Blick

Parallelisierung, verbesserte Zuverlässigkeit und Stromspartechnik wurden in einem 40-nm-Controller-Chip vereint, um 19-nm-NAND-Flash-Speicher in kommerziellen SSDs zu unterstützen. Der Controller ermöglicht einen robusten Betrieb der 19-nm-NAND-Chips, aber zukünftige höhere Speicherdichten erfordern bessere Fehlerkorrekturcodes. Um einen schnelleren Betrieb zu gewährleisten, müssen Alternativen zur SATA-3.0-Schnittstelle gefunden werden, welche die SSD mit dem Host-System verbindet.

SSDs sind immer noch teurer als HDDs mit gleicher Speicherkapazität. Die Hersteller von NAND-Flash entwickeln daher Prozesse, mit denen weniger Silizium pro Chip verbraucht wird. Die Miniaturisierung der NAND-Speicherchips bietet nicht nur Kostenvorteile, auch Laufwerke mit höherer Speicherkapazität bei gleicher Baugröße sind damit möglich.

Controller-Architektur

Um die optimale Leistungsfähigkeit einer 19-nm-NAND-SSD zu gewährleisten, muss die Controller-Architektur eine parallele Datenverarbeitung für hohe Geschwindigkeit, Fehlerkorrekturcodes (ECC) für eine leistungsfähige Fehlerkorrektur sowie Stromspartechniken bieten.

Der Controller besteht aus einem Frontend mit SATA-3.0-Host-Interface (Serial Advanced Technology Attachment) und einem SATA-Controller. Das Backend führt die Befehlsverarbeitung durch und ermöglicht den Zugriff auf den NAND-Speicher. Das Blockdiagramm in Bild 1 beschreibt den Aufbau des Controllers.

Bild 1: Blockdiagramm eines SSD-Controllers – er besteht aus mehreren Prozessoren, einer Hardware-Engine, der Schnittstelle zum NAND-Speicher und einer Host-Schnittstelle, die an einen Bus angeschlossen ist.

Bild 1: Blockdiagramm eines SSD-Controllers – er besteht aus mehreren Prozessoren, einer Hardware-Engine, der Schnittstelle zum NAND-Speicher und einer Host-Schnittstelle, die an einen Bus angeschlossen ist.Toshiba Electronics

Eine Multiprozessor-Konfiguration, die sowohl das Front- als auch das Backend mit einem CPU-Core ausstattet, sowie Parallelisierungstechnik sorgen für eine höhere Geschwindigkeit. Das Backend enthält eine Befehlswartereihe (Command Queue) und einen Datenpuffer, um die Geschwindigkeit zwischen Zugriffen vom Host sowie NAND-Speicher und dem gleichzeitigen Schreiben auf verschiedene Datensektoren anzupassen.

NAND-Speicherblöcke können verschleißen (wear), was bei den einzelnen NAND-Speicherstellen zu einer Obergrenze bei den Schreibvorgängen führt. „Wear Levelling“ sorgt für die gleichmäßige Verteilung der Schreibzugriffe auf diese Speicherstellen. Die Technik erfordert eine Lookup-Tabelle (LUT), die eine Zuordnung zwischen Logikblockadressen (LBA) und NAND-Speicher ermöglicht. Die LUT enthält einen Double Data Rate (DDR) Controller, damit sie Zugriff auf die Adressmanagement-Tabelle im schnellen DRAM-Modul hat.

Der NAND-Controller erhöht die Datenübertragungsbandbreite, indem acht Kanäle und eine 4-Wege-Verschachtelung (Interleaving) bereitstehen. Ebenfalls integriert ist ein Level 1 ECC-Block zum Schutz gespeicherter Daten im NAND-Speicher und Zugriff auf einen externen Level 2 ECC-Block.

Prozessablauf für Lese- und Schreibvorgänge

Empfängt der SATA-Host-Controller einen Lesebefehl, wird dieser durch das Frontend des Controllers an die Command Queue weitergeleitet. Dann wird auf die LUT zugegriffen, um die physikalische Adresse der Daten im NAND-Speicher aus der angegebenen LBA zu finden. Der Lesebefehl wird anschließend an den entsprechenden Kanal des NAND-Controllers gesendet, der der physikalischen Adresse entspricht. Anschließend werden die Daten ausgelesen. Die Daten werden an den Datenpuffer übertragen und dann über das Frontend an den Host gesendet.

Wird ein Schreibbefehl vom SATA Host Controller empfangen, gelangt dieser zum Frontend, und die zu schreibenden Daten, die LBA und Datenattribute werden an den Datenpuffer gesendet. Anschließend erstellt die LUT eine Verbindung zwischen der LBA und der physikalischen Adresse des NAND-Speichers, und die Daten werden aus dem Datenpuffer auf die genannte NAND-Speicherstelle geschrieben. Level-1- und Level-2-Fehlerkorrekturcodes werden erstellt und mit den zu schreibenden Daten im NAND-Speicher abgelegt.

Höhere Geschwindigkeit

Die Command Queue verwendet Native Command Queuing (NCQ), um eine höhere Geschwindigkeit zu erzielen. Sie kann mehrere Befehle empfangen und nicht sequenziell ausführen. Und bevor die Ausführung eines Befehls abgeschlossen ist, beginnt bereits die Bearbeitung des nächsten Befehls.

Bild 2: Konzept der Lese-Pipeline – durch Pipeline-Verarbeitung können mehrere Befehle gleichzeitig ausgeführt werden, was den Datendurchsatz erhöht.

Bild 2: Konzept der Lese-Pipeline – durch Pipeline-Verarbeitung können mehrere Befehle gleichzeitig ausgeführt werden, was den Datendurchsatz erhöht.Toshiba Electronics

Die Befehlsverarbeitung ist in Blöcke aufgeteilt. Die Blöcke organisieren die Verarbeitung, indem Befehle von Block zu Block geführt werden. Die Ein-/Ausgabeeinheiten jedes Blocks enthalten Puffer: Wenn die Verarbeitung eines Befehls in einem Block beendet ist, wird der Befehl an den nächsten Block übergeben und ein anderer Befehl aus dem vorhergehenden Block kann verarbeitet werden. Die Blöcke verarbeiten also gleichzeitig verschiedene Befehle, und das Gesamtsystem verarbeitet verschiedene Befehle parallel (Bild 2).

Höhere Zuverlässigkeit

Da die Speicherdichte immer weiter zunimmt, muss die Anfälligkeit von DRAMs gegenüber Soft-Errors berücksichtigt werden. Um die Zuverlässigkeit der im NAND-Speicher abgelegten Daten zu gewährleisten, stehen Level-1- und Level-2-Fehlerkorrekturfunktionen zur Verfügung. Wird ein Fehler erkannt, wird zuerst über eine Level-1-Fehlerkorrektur mit kurzer Latenzzeit versucht, diesen zu korrigieren. Blieb dies erfolglos, kommt eine Level-2-Fehlerkorrektur mit hoher Latenzzeit zum Einsatz.

Neben dem Block-Codeschutz von Daten in Wort-Einheiten identifiziert eine Paritätsüberprüfungsmatrix fehlerhafte Bits und korrigiert eventuelle Fehler, so dass eine hohe Zuverlässigkeit erreicht wird.

Bild 3: Aufbau einer End-to-End-Fehlererkennung (E3D) – E3D-Codes werden in den Datenpfad eingefügt. Am Ende findet eine erneute Überprüfung statt, die gewährleistet, dass sich keine Fehler im Datenpfad befinden.

Bild 3: Aufbau einer End-to-End-Fehlererkennung (E3D) – E3D-Codes werden in den Datenpfad eingefügt. Am Ende findet eine erneute Überprüfung statt, die gewährleistet, dass sich keine Fehler im Datenpfad befinden.Toshiba Electronics

Fehlerkorrekturcodes werden als Wort-Einheiten auch in das SRAM des Controllers eingefügt, damit das Auftreten eines Fehlers erkannt und dieser korrigiert wird. Für Benutzerdaten werden End-to-End-Fehlererkennungscodes (E3D) hinzugefügt, damit ein Fehler bei der Datenübertragung erkannt wird und Benutzerdaten mit Fehlern niemals nach außen übertragen werden. Das Hinzufügen des E3D-Codes ist in Bild 3 dargestellt.

Geringerer Stromverbrauch

Eine höhere Leistungsfähigkeit neigt dazu, den Stromverbrauch zu erhöhen. Um diese Folge zu minimieren wurden verschiedene Stromspartechniken umgesetzt.

Zellen mit hoher Schwellenspannung (Uth) verringern den Leckstrom im Standby-Modus. Für jede Blockfunktion wird ein eigenes Takt-Gate bereitgestellt, damit inaktive Schaltkreise in möglichst kleinen Einheiten abgeschaltet werden können. Um das gesamte System in einen Stromsparzustand zu schalten, lässt sich die PLL (Phase-Locked Loop) selbst abschalten. Während des Datentransfers können die Benutzerdaten über interne Puffer in den NAND-Speicher gelangen, ohne durch das DRAM passieren zu müssen (Bild 4). Dies verringert den Stromverbrauch des DRAMs und der DRAM-Schnittstelle.

Bild 4: Benutzerdaten-Pfad im SSD-Controller – der Übertragungsweg für Benutzerdaten verläuft nicht durch das DRAM, was den Stromverbrauch verringert.

Bild 4: Benutzerdaten-Pfad im SSD-Controller – der Übertragungsweg für Benutzerdaten verläuft nicht durch das DRAM, was den Stromverbrauch verringert.Toshiba Electronics

Das NAND-Speicher-Interface ist mit einer speziellen PLL ausgestattet, die über die Controller-Firmware gesteuert wird. Dies optimiert die Abwägung zwischen Leistungsfähigkeit und Stromverbrauch. Für einen geringeren Stromverbrauch im Standby-Modus wird die Versorgung der Peripherie-Controller-ICs verringert. Das DRAM und die NAND-Speicher sind nicht mit Strom versorgt.

Steuerung auf einem Chip vereinen

Alle Steuerungstechniken werden in einem Standard-Zellendesign kombiniert, das im stromsparenden 40-nm-Prozess mit sieben Verbindungslagen gefertigt wird. Zellen mit hoher Schwellenspannung und geringen Leckströmen unterstützen das Design.

Bei LSI-Designs (Large-Scale Integration) in 40-nm-Technologie können Interconnect-Verzögerungen ein Problem darstellen. Sie lassen sich durch eine große Zahl an Flip-Flops und segmentierte Verbindungen für die Busmatrix verringern, dort wo sich längere Verbindungen häufen. Drei Seiten des Controller-Chips sind mit acht Kanälen des NAND-Speicher-Interfaces und dem DDR-Interface belegt. Die vierte Seite beherbergt das SATA-Interface.