Enfileiramento de comandos marcados - Tagged Command Queuing
Tagged Command Queuing ( TCQ ) é uma tecnologia integrada em determinados discos rígidos ATA e SCSI . Ele permite que o sistema operacional envie várias solicitações de leitura e gravação para um disco rígido . O ATA TCQ não é idêntico em função ao NCQ ( Native Command Queuing ) mais eficiente usado pelas unidades SATA . SCSI TCQ não sofre das mesmas limitações que ATA TCQ.
Sem TCQ, um sistema operacional era limitado a enviar uma solicitação por vez. Para aumentar o desempenho, o sistema operacional teve que determinar a ordem das solicitações com base em sua própria perspectiva - possivelmente incorreta - da atividade do disco rígido (também conhecido como agendamento de E / S ). Com TCQ, a unidade pode tomar suas próprias decisões sobre como solicitar as solicitações (e, por sua vez, dispensar o sistema operacional de fazer isso). Assim, o TCQ pode melhorar o desempenho geral de um disco rígido se implementado corretamente.
Visão geral
Para aumentar a eficiência, os setores devem ser atendidos em ordem de proximidade da posição atual da cabeça, não pela ordem recebida. A fila está constantemente recebendo novas solicitações, atendendo e removendo as solicitações existentes e reordenando a fila de acordo com as solicitações de leitura / gravação pendentes atuais e a mudança de posição do cabeçote. O algoritmo de reordenamento exato pode depender do controlador e da própria unidade, mas o computador host simplesmente faz as solicitações conforme necessário, deixando o controlador para lidar com os detalhes.
Esse mecanismo de enfileiramento às vezes é conhecido como " busca de elevador ", pois a imagem de um elevador moderno em um prédio atendendo a várias chamadas e processando-as para minimizar viagens ilustra bem a ideia.
Se os botões dos andares 5, 2 e 4 forem pressionados nessa ordem com o elevador começando no andar 1, um elevador antigo irá para os andares na ordem solicitada. Um elevador moderno processa as solicitações de parada nos andares na ordem lógica 2, 4 e 5, sem viagens desnecessárias. Unidades de disco sem fila atendem às solicitações no pedido recebido, como um elevador antigo; o enfileiramento conduz as solicitações de serviço na ordem mais eficiente. Isso pode melhorar um pouco o desempenho em um sistema usado por um único usuário, mas pode aumentar drasticamente o desempenho em um sistema com muitos usuários fazendo solicitações muito variadas na superfície do disco.
Comparação de SCSI TCQ, ATA TCQ e SATA NCQ
SCSI TCQ
SCSI TCQ foi a primeira versão popular do TCQ e ainda é popular hoje. Ele permite que as tarefas sejam inseridas em uma fila usando um dos três modos diferentes:
- chefe da fila
- ordenou
- simples
No modo de cabeça de fila , exclusivo do SCSI TCQ, uma tarefa é colocada na frente de uma fila, à frente de todas as outras tarefas, incluindo outras tarefas de cabeça de fila pendentes. Este modo não é muito usado porque pode causar falta de recursos quando usado abusivamente.
No modo ordenado , uma tarefa deve ser executada depois que todas as tarefas mais antigas forem concluídas e antes que todas as tarefas mais novas comecem a ser executadas (excluindo as tarefas de cabeça de fila mais recentes ).
O modo simples permite que as tarefas sejam executadas em qualquer ordem que não viole as restrições das tarefas nos outros dois modos. Após a conclusão de um comando em uma tarefa, uma notificação é enviada pelo dispositivo que concluiu o comando ao adaptador de barramento do host.
Se o TCQ SCSI causa ou não sobrecarga de interrupção massiva depende do barramento que está sendo usado para conectar o adaptador de barramento host SCSI. Em PCI convencional , PCI-X , PCI Express e outros barramentos que o permitem, o DMA original permite baixa sobrecarga de interrupção. O barramento ISA mais antigo exigia um adaptador host SCSI para gerar uma interrupção para fazer a CPU programar o mecanismo DMA de terceiros para realizar uma transferência e, em seguida, exigia outra interrupção para notificar a CPU de que uma tarefa na fila foi concluída, causando alta Sobrecarga da CPU.
Comprimento da etiqueta SCSI TCQ
O protocolo SCSI-3 permite que 64 bits sejam usados no campo de tag, permitindo que até 2 64 tarefas em um conjunto de tarefas sejam emitidas antes de exigir que algumas delas sejam concluídas antes de qualquer outro comando ser emitido. No entanto, diferentes protocolos que implementam o protocolo SCSI podem não permitir o uso de todos os 64 bits. Por exemplo, o SCSI paralelo mais antigo permite 8 bits de bits de tag, o iSCSI permite até 32 bits de tag e o Fibre Channel permite até 16 bits de tag com a tag 0xFFFF reservada. Essa flexibilidade permite que o projetista de um protocolo troque a capacidade de enfileiramento em relação ao custo. Redes que podem ser grandes, como redes iSCSI, se beneficiam de mais bits de tag para lidar com o maior número de discos na rede e as latências maiores que essas grandes redes geram, enquanto redes de menor escala, como cadeias SCSI paralelas, não têm discos ou latência suficientes para precisar de muitos bits de tag e podem economizar dinheiro usando um sistema que suporta menos bits.
ATA TCQ
O ATA TCQ foi desenvolvido na tentativa de trazer os mesmos benefícios do SCSI para unidades ATA. Ele está disponível em Paralelo e Serial ATA.
Este esforço não teve muito sucesso porque o barramento ATA começou como um barramento ISA com contagem de pinos reduzida. O requisito de compatibilidade de software fez com que os adaptadores de barramento host ATA agissem como dispositivos de barramento ISA sem DMA original . Quando um drive estava pronto para uma transferência, ele tinha que interromper a CPU, esperar que a CPU perguntasse ao disco qual comando estava pronto para ser executado, responder com o comando que estava pronto para executar, esperar que a CPU programe o host motor DMA de terceiros do adaptador de barramento com base no resultado desse comando, esperar que o motor DMA de terceiros execute o comando e, em seguida, teve que interromper a CPU novamente para notificá-lo quando o motor DMA terminou a tarefa para que a CPU pudesse notificar o encadeamento que solicitou a tarefa de que a tarefa solicitada foi concluída. Como responder a interrupções usa o tempo da CPU, a utilização da CPU aumentou rapidamente quando o ATA TCQ foi habilitado. Além disso, uma vez que o tempo de serviço de interrupção pode ser imprevisível, há momentos em que o disco está pronto para transferir dados, mas não pode fazer isso porque deve esperar que uma CPU responda à interrupção para que a CPU saiba que precisa programar o mecanismo de DMA de terceiros.
Portanto, esse padrão raramente era implementado porque causava alta utilização da CPU sem melhorar o desempenho o suficiente para fazer isso valer a pena. Este padrão permite até 32 comandos pendentes por dispositivo.
SATA NCQ
SATA NCQ é um padrão moderno que reduz drasticamente o número de interrupções de CPU necessárias em comparação com ATA TCQ. Como o ATA TCQ, ele permite até 32 comandos pendentes por dispositivo, mas foi projetado para aproveitar a capacidade dos adaptadores de barramento host SATA que não emulam o comportamento ATA paralelo para oferecer suporte ao DMA original. Em vez de interromper a CPU antes da tarefa para forçá-la a programar o motor DMA do adaptador de barramento host, o disco rígido informa ao adaptador de barramento host qual comando ele deseja executar, fazendo com que o adaptador de barramento host programe seu mecanismo DMA primário integrado com os parâmetros que foram incluídos no comando que foi selecionado pelo disco rígido quando foi emitido pela primeira vez e, em seguida, o mecanismo DMA move os dados necessários para executar o comando. Para reduzir ainda mais a sobrecarga de interrupção, o drive pode reter a interrupção com as mensagens de tarefa concluída até reunir muitas delas para enviar de uma vez, permitindo que o sistema operacional notifique muitos threads simultaneamente de que suas tarefas foram concluídas. Se outra tarefa for concluída após o envio de tal interrupção, o adaptador de barramento do host pode concatenar as mensagens de conclusão se o primeiro conjunto de mensagens de conclusão não tiver sido enviado à CPU. Isso permite que o design do firmware do disco rígido troque o desempenho do disco pela utilização da CPU, determinando quando reter e quando enviar mensagens de conclusão.
Referências
links externos
- O Command Queuing Turbo Charge SATA? por Patrick Schmid e Achim Roos do Tom's Hardware Guide