TL; DR: Dies liegt daran, dass die SSD Sie anlügt und sagt, dass das Schreiben erfolgt, bevor es erfolgt ist. Es kann nicht dasselbe für Lesezugriffe durchkommen.
Die längere Version der Antwort ist das Schreib-Caching.
Beginnen wir mit dem Fall QD1. Die SSD meldet den Schreibvorgang als abgeschlossen, sobald sie die Daten erhalten hat, und speichert sie in einem lokalen Cache des Laufwerks, aber bevor sie tatsächlich in das NAND geschrieben wurde. Dies macht einen großen Unterschied, da das Schreiben von Daten in NAND tatsächlich ziemlich langsam ist. Für Lesevorgänge muss er tatsächlich die Daten von NAND lesen, bevor er sie zurücksenden kann (es sei denn, er hat sie zuvor gelesen und befindet sich noch im Cache, was bei zufälligen Lesevorgängen jedoch sehr unwahrscheinlich ist).
Der Nachteil ist, dass bei plötzlichen Stromausfällen Daten auf die SSD geschrieben werden können, die aber noch nicht zum NAND gelangt sind. Einige Unternehmens-SSDs enthalten einen Superkondensator, der genug Strom speichert, um das Schreiben der Daten im Cache in NAND zu beenden, falls ein plötzlicher Stromausfall auftritt.
Das Gleiche gilt für Festplatten, da diese auch Schreib-Caching ausführen. Sie sind einfach nicht annähernd so aggressiv. Warum ist die SSD so aggressiv? Um dies zu beantworten, müssen wir uns mit dem QD32-Fall befassen, der sowohl komplizierter als auch interessanter ist.
Es stimmt nicht, was Sie sagen, dass zufällige Lesevorgänge im Allgemeinen schneller sind als zufällige Schreibvorgänge bei QD32. Es hängt sehr stark davon ab, welche SSDs Sie sich ansehen.
Betrachtet man 4k QD1-Zufallswerte auf vielen SATA-SSDs, scheinen sie alle im Bereich von 20 bis 30 MB / s zu liegen. Warum das? Dies liegt daran, dass zufällige 4k-QD1-Lesevorgänge hauptsächlich Latenzen und nicht den Durchsatz betreffen. Die Latenz kommt aus drei Teilen:
- Die Schnittstellenlatenz von SATA / AHCI, bei der das Laufwerk informiert wird, was zu tun ist, und die Daten gesendet werden.
- Der Controller selbst muss herausfinden, was er mit den Daten und Anweisungen tun soll, die er erhalten hat.
- Die Zeit, die zum Lesen oder Schreiben der Daten in einen NAND-Die benötigt wird.
Weder 1. noch 3. änderte sich nach langer Zeit sehr, weshalb sich auch die 1k-QD1-Zufallswerte nicht wesentlich verändert haben.
Die kürzlich erfolgte Umstellung von SSDs von SATA / AHCI auf PCIe / NVMe hat die Latenzzeit von 1 erheblich reduziert. Aus diesem Grund haben einige SSDs von m.2 und PCIe hier in letzter Zeit deutliche Verbesserungen erzielt.
Ein SSD-Controller kann bei der Latenz große Hilfe leisten, indem er parallel auf mehrere NAND-Dies liest und schreibt und somit den Großteil der Latenz von 3 maskiert. Wenn Sie QD32 4k-Zufallslesevorgänge mit NCQ ausführen, kann die SSD den Lesevorgang durchführen Anfragen außerhalb der Reihenfolge und stellen Sie sicher, dass so viele NAND-Dies parallel wie möglich gelesen werden.
Bei QD32 4k-Zufallsschreibvorgängen führt die SSD eine so genannte Schreibkombination aus. Wenn viele kleine Schreibanforderungen in den SSD-Controller gestellt werden, speichert der SSD-Controller diese lokal, und wenn sich ein ausreichend großer Schreibpuffer aufgebaut hat, teilt der Controller ihn in recht große Blöcke auf und schreibt die Blöcke in mehrere NAND-Dies parallel, um die Maskierung zu vereinfachen NAND-Latenzzeit Ein weiterer Vorteil des Schreibkombinierens ist, dass die meisten SSDs heutzutage eine Seitengröße (kleinste Menge, die gelesen oder geschrieben werden kann) größer als 4k haben. Durch das Kombinieren von Schreibvorgängen, bis Sie die Seitengröße erreichen, können Sie viel Schreibverstärkung vermeiden. Um diese Dinge zu tun, sind SSDs beim Schreib-Caching so aggressiv.