Enfileiramento de comandos nativos - Native Command Queuing
Na computação , o Native Command Queuing ( NCQ ) é uma extensão do protocolo Serial ATA que permite que as unidades de disco rígido otimizem internamente a ordem em que os comandos de leitura e gravação recebidos são executados. Isso pode reduzir a quantidade de movimento desnecessário da cabeça da unidade, resultando em maior desempenho (e um desgaste ligeiramente menor da unidade) para cargas de trabalho em que várias solicitações simultâneas de leitura / gravação estão pendentes, ocorrendo com mais frequência em aplicativos do tipo servidor .
História
Native Command Queuing foi precedido pela versão Parallel ATA do Tagged Command Queuing (TCQ). A tentativa da ATA de integrar o TCQ foi restringida pelo requisito de que os adaptadores de barramento de host ATA usem protocolos de dispositivo de barramento ISA para interagir com o sistema operacional. A alta sobrecarga de CPU resultante e o ganho de desempenho insignificante contribuíram para uma falta de aceitação do mercado para TCQ.
NCQ difere de TCQ em que, com NCQ, cada comando é de igual importância, mas o adaptador de barramento de host do NCQ também programa seu próprio mecanismo DMA primário com parâmetros DMA fornecidos pela CPU durante sua sequência de comando, enquanto TCQ interrompe a CPU durante as consultas de comando e exige para modular o mecanismo DMA de terceiros do adaptador de barramento ATA . A implementação do NCQ é preferível porque o inversor tem um conhecimento mais preciso de suas características de desempenho e é capaz de dar conta de sua posição de rotação. Tanto o NCQ quanto o TCQ têm um comprimento máximo de fila de 32 comandos pendentes.
Para que o NCQ seja habilitado, ele deve ser suportado e habilitado no adaptador de barramento do host SATA e no próprio disco rígido. O driver apropriado deve ser carregado no sistema operacional para habilitar o NCQ no adaptador de barramento do host.
Muitos chipsets mais recentes suportam a Interface de controlador de host avançado (AHCI), que permite que os sistemas operacionais os controlem universalmente e habilitem o NCQ. DragonFly BSD tem suporte para AHCI com NCQ desde 2.3 em 2009. Os kernels Linux mainstream mais recentes suportam AHCI nativamente, e FreeBSD oferece suporte total para AHCI desde a versão 8.0. O Windows Vista e o Windows 7 também oferecem suporte nativo a AHCI, mas seu suporte AHCI (por meio do serviço msahci) deve ser ativado manualmente por meio da edição do registro se o suporte do controlador não estiver presente durante a instalação inicial. O AHCI do Windows 7 permite não apenas NCQ, mas também suporte TRIM em unidades SSD (com seu firmware de suporte). Os sistemas operacionais mais antigos, como o Windows XP, exigem a instalação de um driver específico do fornecedor (semelhante à instalação de um controlador RAID ou SCSI ), mesmo se AHCI estiver presente no adaptador de barramento host, o que torna a configuração inicial mais tediosa e as conversões de instalações existentes relativamente difíceis já que a maioria dos controladores não pode operar suas portas no modo misto AHCI – SATA / IDE / legado.
Unidades de disco rígido
atuação
Um teste de 2004 com a unidade NCQ de primeira geração (Seagate 7200.7 NCQ) descobriu que, embora o NCQ aumentasse o desempenho do IOMeter, o desempenho do aplicativo de desktop na verdade diminuía. Uma revisão em 2010 encontrou melhorias na ordem de 9% (em média) com NCQ habilitado em uma série de testes multitarefa do Windows.
O NCQ pode interferir negativamente no agendador de E / S do sistema operacional , diminuindo o desempenho; isso foi observado na prática no Linux com RAID-5 . Não há nenhum mecanismo no NCQ para o host especificar qualquer tipo de prazo para uma E / S, como quantas vezes uma solicitação pode ser ignorada em favor de outras. Em teoria, uma solicitação na fila pode ser atrasada pelo inversor por um período arbitrário de tempo enquanto atende outras solicitações (possivelmente novas) sob pressão de E / S. Como os algoritmos usados dentro do firmware dos drives para pedidos de despacho NCQ geralmente não são conhecidos publicamente, isso introduz outro nível de incerteza para o desempenho do hardware / firmware. Testes no Google por volta de 2008 mostraram que o NCQ pode atrasar um I / O por até 1–2 segundos. Uma solução alternativa proposta é o sistema operacional privar artificialmente a fila NCQ mais cedo para satisfazer os aplicativos de baixa latência em tempo hábil.
No firmware de algumas unidades, como o WD Raptor por volta de 2007, a leitura antecipada é desabilitada quando o NCQ é habilitado, resultando em um desempenho sequencial mais lento.
Segurança (FUA)
Um recurso menos conhecido do NCQ é que, ao contrário de seu predecessor ATA TCQ, ele permite que o host especifique se deseja ser notificado quando os dados atingirem os pratos do disco ou quando atingirem o buffer do disco (cache on-board). Presumindo uma implementação de hardware correta, esse recurso permite que a consistência dos dados seja garantida quando o cache on-board do disco é usado em conjunto com chamadas de sistema como fsync . O sinalizador de gravação associado, que também é emprestado do SCSI, é chamado de Force Unit Access (FUA).
Drives de estado sólido
O NCQ também é usado em unidades de estado sólido mais recentes, onde a unidade encontra latência no host, e não o contrário. Por exemplo, a unidade de estado sólido X25-E Extreme da Intel usa NCQ para garantir que a unidade tenha comandos para processar enquanto o sistema host está ocupado processando tarefas da CPU.
O NCQ também permite que o controlador SSD conclua comandos simultaneamente (ou parcialmente simultaneamente, por exemplo, usando pipelines), onde a organização interna do dispositivo permite tal processamento.
O padrão NVM Express (NVMe) também suporta fila de comandos, em um formato otimizado para SSDs. O NVMe permite várias filas para um único controlador e dispositivo, permitindo, ao mesmo tempo, profundidades muito maiores para cada fila, o que corresponde melhor ao funcionamento do hardware SSD subjacente.
Veja também
Referências
links externos
- ATA serial e os 7 pecados capitais do ATA paralelo em circuitos perdidos (para TCQ)
- Análise de Hype vs. Reality na Tom's Hardware