O NCQ é uma tecnologia que permite a reordenação da ordem na qual as solicitações de leitura e gravação são atendidas.
Os SSDs economizam o tempo de busca pelo qual os discos rígidos são afetados, mas ler e escrever em um dado NAND não é especialmente rápido. Os SSDs contornam isso lendo e gravando em vários NAND em paralelo.
Para conseguir isso, os SSDs dependem de três tipos de estratégias: Para grandes pedidos de E / S, divida a solicitação em vários dados, dividindo-os e gravando partes dos dados para separar os dados em paralelo. Para leituras, espera-se que os dados também sejam divididos entre os moldes e possam ser lidos de volta em paralelo.
Para pequenas cargas de gravação de E / S, os SSDs geralmente armazenam um monte deles na memória interna e escrevem todos os dados nativos em diferentes NAND em paralelo. É por isso que os SSDs podem ter um desempenho de gravação aleatório tão alto.
Para pequenas leituras de E / S ou cargas de trabalho mistas, o SSD atenderá a solicitação na fila de comandos fora de ordem, tentando manter o maior número possível de NANDs trabalhando em paralelo. O SSD só pode fazer isso se o NCQ estiver ativado. Isso pode fazer uma enorme diferença em cargas de trabalho pesadas de IO. Para a AHCI eu já vi até 10x de diferença, e para NVMe mais de 100x.
Se você já viu benchmarks de um SSD a partir de um aplicativo de benchmarking como o CrystalDiskMark ou similar, você pode ver que eles geralmente fornecem 4k resultados de leitura aleatória, com e sem profundidade de fila. Se o NCQ estiver desativado, a diferença entre esses dois números é pequena, com o NCQ habilitado é enorme. Por exemplo, esta análise Bit-tech , coloque os resultados de leitura aleatória do QD1 4k para o Samsung 950 PRO 512GB (um drive NVMe) a 60MB / s, mas os resultados de leitura aleatória do QD32 4k para o mesmo drive são 1261 MB / s.