TL; DR: È perché l'SSD ti sta mentendo e ti dice che la scrittura è fatta prima che lo sia. Non può cavarsela con la stessa cosa per le letture.
La versione più lunga della risposta è scrivere nella cache.
Iniziamo con il caso QD1. L'SSD riporterà la scrittura come completata al sistema operativo una volta ricevuti i dati e salvati in una cache localmente sull'unità, ma prima di averla effettivamente scritta sulla NAND. Questo fa una grande differenza perché in realtà scrivere dati su NAND è piuttosto lento. Per le letture in realtà deve leggere i dati dalla NAND prima di poterli rispedire (a meno che non li abbia letti in precedenza e li abbia ancora nella cache, ma è molto improbabile con letture casuali).
Il rovescio della medaglia di questo è che a fronte di un'improvvisa perdita di potenza può esserci una perdita di dati dei dati scritti sull'SSD ma che non sono ancora arrivati alla NAND. Alcuni SSD aziendali includono un super condensatore che immagazzina energia sufficiente per completare la scrittura dei dati nella cache su NAND in caso di improvvisa perdita di energia.
Vedi la stessa cosa per i dischi rigidi perché stanno anche scrivendo cache. Non sono così aggressivi. Perché l'SSD è così aggressivo? Per rispondere che dobbiamo passare a considerare il caso QD32, che è sia più complicato che più interessante.
Non è vero quello che dici che le letture casuali sono generalmente più veloci delle scritture casuali su QD32. Dipende molto da quali SSD particolari guardi.
Se guardi le letture 4k QD1 casuali su molti SSD SATA, tutte sembrano funzionare nell'intervallo di 20-30 MB / s. Perché? È perché le letture 4k QD1 casuali riguardano principalmente le latenze e non la velocità effettiva. La latenza viene da tre parti:
- La latenza dell'interfaccia di SATA / AHCI che implica dire all'unità cosa fare e inviare i dati.
- Il controller stesso deve capire cosa fare con i dati e le istruzioni che ha ricevuto.
- Il tempo necessario per leggere o scrivere effettivamente i dati su un die NAND.
Né 1. o 3. sono cambiati molto da molto tempo, ed è per questo che le letture casuali 1k QD1 non sono cambiate molto.
La recente mossa degli SSD da SATA / AHCI a PCIe / NVMe ha notevolmente ridotto la latenza di 1., motivo per cui alcuni SSD m.2 e PCIe hanno recentemente mostrato notevoli miglioramenti qui.
Una cosa che un controller SSD può fare per aiutare notevolmente con la latenza è leggere o scrivere su più matrici NAND in parallelo e in questo modo mascherare la maggior parte della latenza di 3. Se si eseguono letture casuali QD32 4k con NCQ, l'SSD può servire la lettura richieste fuori servizio e assicurarsi che stia leggendo il maggior numero possibile di matrici NAND in parallelo.
Per le scritture casuali QD32 4k, l'SSD fa qualcosa chiamato combinazione di scrittura. Quando un sacco di piccole richieste di scrittura arriva nel controller SSD, le memorizza nella cache localmente e quando un buffer abbastanza grande di scritture si è formato, il controller lo divide in blocchi di buone dimensioni e scrive i blocchi su più die NAND in parallelo, sempre per aiutare a mascherare il Latenza NAND. Un altro vantaggio della combinazione di scrittura è che la maggior parte degli SSD al giorno d'oggi hanno una dimensione della pagina (la quantità minima che può essere letta o scritta) maggiore di 4k, e la combinazione di scritture fino a quando non si arriva alle dimensioni della pagina aiuta ad evitare un sacco di amplificazione della scrittura. È per fare queste cose che gli SSD sono così aggressivi nella cache di scrittura.