TL; DR: C'est parce que le SSD vous ment et dit que l'écriture est terminée avant qu'elle ne le soit. Il ne peut pas s'en tirer avec la même chose pour les lectures.
La version la plus longue de la réponse est la mise en cache de l'écriture.
Commençons par le cas QD1. Le SSD signale l'écriture comme terminée au système d'exploitation une fois qu'il a reçu les données et les a enregistrées localement dans un cache sur le lecteur, mais avant de les avoir réellement écrites sur la NAND. Cela fait une grande différence, car l'écriture de données dans NAND est assez lente. Pour les lectures, il doit lire les données de la NAND avant de pouvoir les renvoyer (à moins qu'il ne les ait lues plus tôt et les ait toujours en cache, mais cela est très peu probable avec des lectures aléatoires).
L'inconvénient est que face à une perte de puissance soudaine, il peut y avoir une perte de données écrites sur le SSD mais qui ne l'ont pas encore fait sur la NAND. Certains disques SSD d'entreprise incluent un super condensateur qui stocke suffisamment d'énergie pour terminer l'écriture des données dans le cache sur la mémoire NAND en cas de perte soudaine de puissance.
Vous voyez la même chose pour les disques durs car ils font également la mise en cache d'écriture. Ils ne sont tout simplement pas aussi agressifs à ce sujet. Pourquoi le SSD est-il si agressif? Pour répondre à cela, nous devons passer à l'examen du cas QD32, qui est à la fois plus compliqué et plus intéressant.
Ce n'est pas vrai ce que vous dites, les lectures aléatoires sont généralement plus rapides que les écritures aléatoires sur QD32. Cela dépend beaucoup des disques SSD que vous regardez.
Si vous regardez les lectures aléatoires 4k QD1 sur de nombreux SSD SATA, elles semblent toutes fonctionner dans la plage de 20 à 30 Mo / s. Pourquoi donc? C'est parce que les lectures aléatoires 4k QD1 concernent principalement les latences et non le débit. La latence provient de trois parties:
- La latence d'interface de SATA / AHCI qui implique de dire au lecteur quoi faire et d'envoyer les données.
- Le contrôleur lui-même doit déterminer quoi faire avec les données et les instructions qu'il a reçues.
- Temps nécessaire pour lire ou écrire réellement les données dans un dé NAND.
Ni 1. ni 3. n'ont beaucoup changé depuis longtemps, et c'est pourquoi les lectures aléatoires 1k QD1 n'ont pas beaucoup changé non plus.
Le passage récent des SSD de SATA / AHCI à PCIe / NVMe a considérablement réduit la latence de 1., c'est pourquoi certains SSD m.2 et PCIe ont récemment montré de grandes améliorations ici.
Une chose qu'un contrôleur SSD peut faire pour aider grandement à la latence est de lire ou d'écrire sur plusieurs puces NAND en parallèle et de cette façon masquer la majeure partie de la latence de 3. Si vous effectuez des lectures aléatoires QD32 4k avec NCQ, le SSD peut gérer la lecture demandes hors service et assurez-vous qu'il lit à partir d'autant de matrices NAND en parallèle que possible.
Pour les écritures aléatoires QD32 4k, le SSD fait quelque chose appelé combinaison d'écriture. Lorsque de nombreuses petites demandes d'écriture arrivent dans le contrôleur SSD, elles les mettent en cache localement et lorsqu'une mémoire tampon d'écriture suffisamment importante a été constituée, le contrôleur la divise en morceaux de bonne taille et écrit les morceaux en plusieurs matrices NAND en parallèle, là encore pour aider à masquer le Latence NAND. Un autre avantage de la combinaison d'écriture est que la plupart des disques SSD ont aujourd'hui une taille de page (la plus petite quantité pouvant être lue ou écrite) supérieure à 4k, et la combinaison d'écritures jusqu'à ce que vous atteigniez la taille de la page permet d'éviter beaucoup d'amplification d'écriture. C'est pour faire cela que les SSD sont si agressifs dans la mise en cache de l'écriture.