TL; DR: É porque o SSD está mentindo para você e dizendo que a gravação é feita antes dela. Não pode se dar bem com as leituras.
A versão mais longa da resposta é o cache de gravação.
Vamos começar com o caso QD1. O SSD reportará a gravação como concluída no sistema operacional depois de receber os dados e salvá-los em um cache localmente na unidade, mas antes de gravá-los na NAND. Isso faz uma grande diferença porque, na verdade, gravar dados em NAND é bastante lento. Para leituras, ele realmente tem que ler os dados do NAND antes que ele possa enviá-lo de volta (a menos que tenha lido antes e ainda tenha em cache, mas isso é muito improvável com leituras aleatórias).
A desvantagem disso é que, em face da perda repentina de energia, pode haver perda de dados de dados gravados no SSD, mas que ainda não chegaram ao NAND. Alguns SSDs corporativos incluem um super capacitor que armazena energia suficiente para terminar de gravar os dados no cache para NAND em caso de perda repentina de energia.Você vê a mesma coisa para discos rígidos, porque eles também estão fazendo cache de gravação. Eles simplesmente não estão sendo tão agressivos quanto a isso. Por que o SSD é tão agressivo? Para responder, precisamos nos mover para considerar o caso do QD32, que é mais complicado e mais interessante.
Não é verdade o que você diz que as leituras aleatórias são geralmente mais rápidas do que as escritas aleatórias no QD32. Depende muito de quais SSDs específicos você olha.
Se você olhar para as leituras aleatórias de 4k QD1 em muitos SSDs SATA, todas parecem funcionar na faixa de 20-30 MB / s. Por que é que? É porque as leituras aleatórias de 4k QD1 são principalmente sobre latências e não throughput. A latência vem de três partes:
- A latência da interface do SATA / AHCI, que envolve informar ao drive o que fazer e enviar os dados.
- O controlador em si tem que descobrir o que fazer com os dados e instruções que recebeu.
- O tempo necessário para ler ou gravar os dados em um dado NAND.
Nenhum 1. ou 3. mudou muito em muito tempo, e é por isso que as leituras aleatórias de 1k QD1 também não mudaram muito.
A recente mudança de SSDs de SATA / AHCI para PCIe / NVMe reduziu muito a latência de 1., razão pela qual alguns SSDs m.2 e PCIe recentemente mostraram grandes melhorias aqui.
Uma coisa que um controlador SSD pode fazer para ajudar bastante com a latência é ler ou gravar em vários NAND em paralelo e assim mascarar a maior parte da latência de 3. Se você estiver fazendo leituras aleatórias QD32 4k com NCQ, o SSD pode Atender os pedidos de leitura fora de ordem e certifique-se de que está lendo a partir de quantos NAND morre em paralelo quanto possível.
Para QD32 4k escreve aleatoriamente, o SSD faz algo chamado escrita combinando. Quando um monte de pequenos pedidos de gravação vem no controlador SSD armazena-los localmente e quando um buffer grande o suficiente de gravações construiu o controlador divide em pedaços de bom tamanho e escreve os pedaços para múltiplos NAND morre em paralelo, novamente para ajudar a mascarar o Latência NAND. Outra vantagem da combinação de gravação é que a maioria dos SSDs atualmente tem um tamanho de página (menor que pode ser lido ou gravado) maior que 4k, e combinar gravações até chegar ao tamanho da página ajuda a evitar muita amplificação de gravação. É para fazer essas coisas que os SSDs são tão agressivos no cache de gravação.