stw500 schrieb:
Aber liegen denn die Daten nicht direkt neben-/hintereinander beim sequentiellen Lesen/Schreiben? Ich dachte immer, das sei der Grund, weshalb sequ. schneller als random ist. Kannst Du das bitte noch erklären, Holt?
Bei einer HDD müssen die Daten direkt hintereinander auf dem Datenträger liegen um schnell gelesen werden zu können, da sonst die Köpfe positioniert werden müssen und man auch noch warten muß, bis der passende Sektor sich unter dem Kopf durchbewegt. Deshalb bringt das Defragmentieren hier auch so einen großen Vorteil, denn es ordnet die Dateien so an, dass dies eben möglichst immer der Fall ist.
Bei einer SSD hat man i.d.R. 8 Kanäle (Intels Controller hat 10) und würde eine Datei nur mit der Geschwindigkeit eines NANDs Chips lesen/schreiben können, wenn man sie komplett hintereinander in einem Chip ablegen würde. Das wären keine 100MB/s, denn man muß die Adressen und Daten bei NANDs auf dem gleichen Bus übertragen und nach Anforderung der Adresse auch noch warten, bis die Daten gelesen wurden und übertragen werden.
Was dabei mit einem einzigen NAND möglich ist, sieht man so ungefähr an den 4k Werten, denn so kleine Daten werden eben i.d.R. in einer einzigen Page auf nur einem NAND gespeichert. NAND Pages sind meißt 4k und bei größeren NANDs üfter auch 8k groß.
Übertragungsraten von 500MB/s und mehr erreicht man deshalb nur bei größeren Dateien die eben über mehrere NANDs verteilt werden, genau wie bei einem RAID 0, was eine SSD intern auch ist. Bei einer großen Datei werden dann eben die ersten 4k von einem Flashdie gelesen, die nächsten von einem anderen usw. so dass man mit 8 Kanälen alleine damit schon mal die 8-fache Transferrate erreicht, sofern bei SSDs die Kapazität so gering ist, dass nicht alle Kanäle belegt sind. Hat man aber mehr Dies als Kanäle, so kann man die Übertragungsraten durch Interleaving steigern, indem während der Wartezeit auf die Daten schon mal die Daten von einem anderen Die auf dem gleichen Kanal angefordert werden.
Das alles geht natürlich nur, wenn die Daten eines Datei über die NAND Dies verteilt sind. Dies übernimmt der Controller aber selbst, wo er eben neben der Performance auch das Wearleveling, also die gleichmäßige Abnutzung der NANDs Blöcke und die Write Amplification beachten muß. Es sollen also möglichst nicht so viel mehr Daten ins NAND geschrieben werden, als auf die SSD selbst geschrieben werden. Das alles erfordert eben, dass die SSD intern die äusseren Adressen (LBAs) intern selbst auch Flashspeicheradressen mappt und dieses Mapping sich auch ständig ändert, während eine HDD die LBAs immer wieder auf genau die gleichen und aufeinanderfolgenden Zyklinder, Sektor und (sofern mehrere vorhanden sind) Plattern/Kopf übersetzt und diese nur bei defekten Sektoren auf eine ganz andere Position umlenkt (die eines Reserversektors).
Hier noch mal was zu GC und TRIM bei SSDs.