Da die NAND-Flash-Technologie nun die Hürden überwunden hat, die höhere Speicherkapazitäten und Übertragungsgeschwindigkeiten begrenzt haben, ist die Schnittstelle zum Speicher wieder zum Engpass geworden. Der eMMC-Standard (embedded Multimedia Card), der sich aus der MMC (Multimedia Card) entwickelt hat, bietet ein Speicherformat, das sich für zahlreiche tragbare Consumer-Elektronikgeräte eignet. Der Standard definiert die Schnittstelle, das Protokoll und sogar das Gehäuse von Flash-Speichern.
OEMs können zwischen Anbietern wählen und wechseln, wenn sich die Marktanforderungen auf das Angebot und die Nachfrage auswirken. Die Schnittstelle ist parallel, besteht aus 1, 4 oder 8 Bit zusammen mit einem Taktpin und einer bidirektionalen Befehlsschnittstelle. Um die Software und Hardware des Host-Prozessors zu vereinfachen, bietet die Spezifikation eine Funktion, um den zuverlässigen Betrieb des Speichers in der Anwendung über die Zeit hinweg zu gewährleisten. Dieses Housekeeping umfasst Fehlerkorrektur (ECC), Garbage Collection, Wear Levelling und Bad-Block-Management. Damit ist die Datenintegrität für den Nutzer gewährleistet; Entwickler von Embedded-Software können sich darauf konzentrieren, das Medium für die Speicherung zu nutzen, anstatt es selbst zu verwalten.
Der eMMC-JEDEC-Standard wurde kontinuierlich weiterentwickelt, um die Anforderungen der Industrie und indirekt der Verbraucher zu erfüllen. So wurden Funktionen zur Bestimmung des Speicherzustands eingeführt. Unterstützung für die Warteschlangenbildung, das Neuordnen von Befehlen und mehr Kontrolle über Hintergrundoperationen stehen bereit. Ansonsten wären zeitkritische Lese-/Schreibaktivitäten beeinträchtigt. Ein Betriebsmodus mit zwei Datenraten erhöht die Übertragungsgeschwindigkeit. Die parallele Schnittstelle bietet zwar 400 MB/s – wird jedoch von der Lesegeschwindigkeit heutiger moderner NAND-Flash-Speicher übertroffen. Weitere Einschränkungen bei eMMC betreffen den Halbduplex-Betrieb, der entweder auf Lesen oder Schreiben beschränkt ist – nicht beides gleichzeitig.
In den heutigen Multicore-Multithread-Anwendungen kann dies zu erheblichen Problemen führen. Ein Smartphone greift fortlaufend auf NVM zu, um Daten für Apps abzurufen oder Videos abzuspielen, während Updates in Datenbanken geschrieben oder Fotos gespeichert werden. Der Stromumsatz ist ebenso eine Herausforderung, die sich nur schwer kontrollieren lässt, wenn parallele digitale Schnittstellen schneller werden.
Speicher-Partitionierung ermöglicht ebenfalls Verbesserungen. In der Regel ist eine Boot-Partition erforderlich, um das SoC für die Ausführung eines übergeordneten Betriebssystems vorzubereiten. Diese lässt sich als virtuelle Partition implementieren, wobei das Dateisystem die Grenzen fiktiv definiert. Um auf Hardwareebene jedoch Zuverlässigkeit zu gewährleisten, macht es Sinn, für diese Partition vom MLC- oder TLC-Betrieb auf pSLC überzugehen. Im Laufe der Zeit kann es vorkommen, dass zu dieser Partition gehörige Blöcke, aufgrund von schlechten Blöcken oder Wear Levelling von pSLC-Bereichen mit höherer Endurance zu MLC- oder TLC-Bereichen mit geringerer Endurance verschoben werden. Dadurch werden die Vorteile des gewählten, verbesserten Endurance-Bereichs jedoch zunichte gemacht.
Nachdem der eMMC-Standard am Ende seines Lebenszyklus angelangt war, entwickelte die gleiche Arbeitsgruppe einen neuen Standard, der die Einschränkungen von eMMC überwindet – sowohl jetzt als auch in Zukunft. Dieser Standard heißt UFS (Universal Flash Storage) und ist auf die Anforderungen von Flash als Speichermedium zugeschnitten. Er bietet gleichzeitig die Vorteile anderer gängiger Speicherschnittstellen und Protokolle wie die vorangegangenen Standards bei MIPI (eMMC) und SCSI zuvor.
Ein wesentlicher Unterschied ist die Wahl der physikalischen Schnittstelle, was ebenfalls zu einer geringeren Anzahl von Pins führt. UFS basiert auf den MIPI- und UniPro-Standards für die Physical- und Link-Layer. Damit stehen mehrere Leitungen serieller Hochgeschwindigkeitsschnittstellen bereit, die auch energieeffizient sind.
Der MIPI-M-PHY-Standard definiert unterschiedliche „Gear“-Geschwindigkeiten, wobei Gear 1 an die 1,46 GBit/s und Gear 4 an die 11,6 GBit/s unterstützt. Die Schnittstelle unterstützt auch asynchrone Datenübertragung und Energiesparmodi mit niedrigem Stromverbrauch. Die Partitionierung ist ein weiterer Bereich für Verbesserungen, da UFS das Speichermedium in mehrere Partitionen auf Device-Ebene aufteilt. Die Partitionen lassen sich auch so konfigurieren, dass sie die maximale Speicherkapazität des Flash (TLC-Modus) oder maximale Endurance (pSLC-Modus) nutzen.
Systemdaten wie Boot-Code und das Betriebssystem haben dann garantierten Zugriff auf Speicher mit hoher Endurance, sofern dies von der Anwendung gefordert wird.
Partitionen können auch unterschiedlichen Leistungsstufen zugewiesen werden. So unterscheiden Funktionen rund um Fotos und Videos häufig die Smartphone-Angebote. Deshalb müssen Bilder und Videos so schnell wie möglich im NVM gespeichert werden. Updates für Betriebssysteme, Datenbanken oder Apps können als weniger wichtig eingestuft werden. Bei priorisierten Partitionen stellt die intelligente Befehlswarteschlange des UFS sicher, dass dringende Speicherzugriffe, z.B. das Speichern eines Fotos, Vorrang vor weniger zeitkritischen Zugriffen wie z.B. App-Updates erhalten.
Speicherzugriffe in Anwendungen lassen sich grob in sequenzielle (wie die Wiedergabe von Videos oder Musik) und zufällige (wie Web-Browsing, Umschalten zwischen Apps, Booten und Lesen von E-Mails) aufteilen. Multitasking-Betriebssysteme benötigen daher gleichzeitige Lese- und Schreibzugriffe, die sowohl für sequenzielle als auch für zufällige Datenzugriffe effizient sind. UFS unterstützt dies, indem es Vollduplex- und Dual-Multipage-Programmierung über mehrere Leitungen anbietet.
Speicherzugriffe in Anwendungen lassen sich grob in sequenzielle (wie die Wiedergabe von Videos oder Musik) und zufällige (wie Web-Browsing, Umschalten zwischen Apps, Booten und Lesen von E-Mails) aufteilen. Multitasking-Betriebssysteme benötigen daher gleichzeitige Lese- und Schreibzugriffe, die sowohl für sequenzielle als auch für zufällige Datenzugriffe effizient sind. UFS unterstützt dies, indem es Vollduplex- und Dual-Multipage-Programmierung über mehrere Leitungen anbietet.