TL; DR: Das liegt daran, dass die SSD Sie anlügt und sagt, dass das Schreiben abgeschlossen ist, bevor es erfolgt. Es kann nicht mit der gleichen Sache für das Lesen davonkommen.
Die längere Version der Antwort ist Schreib-Caching.
Beginnen wir mit dem Fall QD1. Die SSD meldet den Schreibvorgang als beendet an das Betriebssystem, sobald sie die Daten empfangen und in einem Cache lokal auf dem Laufwerk gespeichert hat, jedoch bevor sie tatsächlich in das NAND geschrieben wurde. Dies macht einen großen Unterschied, da das Schreiben von Daten in NAND ziemlich langsam ist. Für Lesevorgänge muss es tatsächlich die Daten von NAND lesen, bevor es sie zurücksenden kann (es sei denn, es hat sie zuvor gelesen und befindet sie noch im Cache, aber das ist bei zufälligen Lesevorgängen sehr unwahrscheinlich).
Der Nachteil dabei ist, dass es angesichts eines plötzlichen Stromausfalls zu einem Datenverlust von Daten kommen kann, die auf die SSD geschrieben wurden, aber noch nicht in das NAND gelangt sind. Einige Unternehmens-SSDs enthalten einen Superkondensator, der genügend Strom speichert, um das Schreiben der Daten im Cache in den NAND im Falle eines plötzlichen Stromausfalls abzuschließen.
Sie sehen dasselbe für Festplatten, da diese auch Schreib-Caching durchführen. Sie sind einfach nicht annähernd so aggressiv. Warum ist die SSD so aggressiv? Um darauf zu antworten, müssen wir den Fall QD32 betrachten, der sowohl komplizierter als auch interessanter ist.
Es ist nicht wahr, was Sie sagen, dass zufällige Lesevorgänge im Allgemeinen schneller sind als zufällige Schreibvorgänge bei QD32. Es hängt sehr davon ab, welche SSDs Sie sich ansehen.
Wenn Sie sich 4k QD1-Zufallslesevorgänge auf vielen SATA-SSDs ansehen, scheinen alle im Bereich von 20 bis 30 MB / s zu arbeiten. Warum ist das so? Dies liegt daran, dass es bei 4k QD1-Zufallslesevorgängen hauptsächlich um Latenzen und nicht um den Durchsatz geht. Die Latenz besteht aus drei Teilen:
- Die Schnittstellenlatenz von SATA / AHCI, bei der dem Laufwerk mitgeteilt wird, was zu tun ist, und die Daten gesendet werden.
- Der Controller selbst muss herausfinden, was mit den empfangenen Daten und Anweisungen zu tun ist.
- Die Zeit, die benötigt wird, um die Daten tatsächlich zu lesen oder in einen NAND-Chip zu schreiben.
Weder 1. noch 3. haben sich lange Zeit stark verändert, und deshalb haben sich auch die 1k QD1-Zufallslesungen nicht viel geändert.
Die jüngste Umstellung von SSDs von SATA / AHCI auf PCIe / NVMe hat die Latenz von 1 erheblich verringert, weshalb bestimmte SSDs von m.2 und PCIe in letzter Zeit hier große Verbesserungen gezeigt haben.
Eine Sache, die ein SSD-Controller tun kann, um die Latenz erheblich zu verbessern, ist das parallele Lesen oder Schreiben auf mehrere NAND-Chips. Auf diese Weise wird der größte Teil der Latenz von 3 maskiert. Wenn Sie QD32 4k-Zufallslesevorgänge mit NCQ ausführen, kann die SSD den Lesevorgang ausführen Anfragen nicht in der richtigen Reihenfolge und stellen Sie sicher, dass so viele NAND-Chips wie möglich parallel gelesen werden.
Bei QD32 4k-Zufallsschreibvorgängen führt die SSD eine sogenannte Schreibkombination durch. Wenn viele kleine Schreibanforderungen im SSD-Controller eingehen, werden diese lokal zwischengespeichert, und wenn ein ausreichend großer Schreibpuffer aufgebaut wurde, teilt der Controller ihn in ausreichend große Blöcke auf und schreibt die Blöcke parallel auf mehrere NAND-Chips, um die Maskierung zu unterstützen NAND-Latenz. Ein weiterer Vorteil der Schreibkombination besteht darin, dass die meisten SSDs heutzutage eine Seitengröße (kleinste Menge, die gelesen oder geschrieben werden kann) von mehr als 4 KB haben. Wenn Sie Schreibvorgänge kombinieren, bis Sie die Seitengröße erreicht haben, vermeiden Sie viel Schreibverstärkung. Um dies zu erreichen, sind SSDs beim Schreiben-Caching so aggressiv.