TL; DR: Es porque el SSD te está mintiendo y te dice que la escritura se hace antes de que lo haga. No puede salirse con la misma cosa para las lecturas.
La versión más larga de la respuesta es el almacenamiento en caché de escritura.
Comencemos con el caso QD1. El SSD informará la escritura como finalizada al sistema operativo una vez que haya recibido los datos y los haya guardado en una memoria caché local en la unidad, pero antes de que realmente los haya escrito en el NAND. Esto hace una gran diferencia porque en realidad escribir datos en NAND es bastante lento. Para las lecturas, en realidad tiene que leer los datos de NAND antes de poder enviarlos de vuelta (a menos que lo haya leído antes y todavía lo tenga en caché, pero eso es muy poco probable con lecturas aleatorias).
La desventaja de esto es que ante la pérdida repentina de energía puede haber pérdida de datos escritos en el SSD pero que aún no han llegado al NAND. Algunos SSD empresariales incluyen un supercondensador que almacena suficiente energía para terminar de escribir los datos en caché a NAND en caso de pérdida repentina de energía.
Ves lo mismo para los discos duros porque también están haciendo caché de escritura. Simplemente no están siendo tan agresivos al respecto. ¿Por qué es tan agresivo el SSD? Para responder eso, debemos pasar a considerar el caso QD32, que es más complicado y más interesante.
No es cierto lo que dice que las lecturas aleatorias son generalmente más rápidas que las escrituras aleatorias en QD32. Depende mucho de qué SSD en particular mire.
Si observa las lecturas aleatorias QD1 de 4k en muchas SSD SATA, todas parecen funcionar en el rango de 20-30 MB / s. ¿Porqué es eso? Esto se debe a que las lecturas aleatorias QD1 de 4k se refieren principalmente a latencias y no a rendimiento. La latencia proviene de tres partes:
- La latencia de interfaz de SATA / AHCI que implica decirle a la unidad qué hacer y enviar los datos.
- El controlador en sí tiene que averiguar qué hacer con los datos y las instrucciones que ha recibido.
- El tiempo que lleva leer o escribir los datos en un dado NAND.
Ni 1. o 3. cambiaron mucho en mucho tiempo, y es por eso que las lecturas aleatorias 1k QD1 tampoco cambiaron mucho.
El reciente movimiento en SSD de SATA / AHCI a PCIe / NVMe ha reducido en gran medida la latencia de 1., razón por la cual ciertos SSD m.2 y PCIe recientemente han mostrado grandes mejoras aquí.
Una cosa que puede hacer un controlador SSD para ayudar en gran medida con la latencia es leer o escribir en múltiples matrices NAND en paralelo y de esa manera enmascarar la mayor parte de la latencia de 3. Si está haciendo QD32 4k lecturas aleatorias con NCQ, la SSD puede atender la lectura solicitudes fuera de servicio y asegúrese de que está leyendo tantos troqueles NAND en paralelo como sea posible.
Para las escrituras aleatorias QD32 4k, la SSD hace algo llamado combinación de escritura. Cuando llegan muchas solicitudes de escritura pequeñas, el controlador SSD las almacena en caché localmente y cuando se ha acumulado un búfer de escritura lo suficientemente grande, el controlador lo divide en fragmentos de buen tamaño y escribe los fragmentos en múltiples troqueles NAND en paralelo, de nuevo para ayudar a enmascarar Latencia NAND. Otra ventaja de la combinación de escritura es que la mayoría de los SSD de hoy en día tienen un tamaño de página (la cantidad más pequeña que se puede leer o escribir) mayor que 4k, y la combinación de las escrituras hasta llegar al tamaño de la página ayuda a evitar mucha amplificación de escritura. Para hacer esto, los SSD son tan agresivos en el almacenamiento en caché de escritura.