A grande maioria dos HDs SATA atuais suporta o NCQ, onde a controladora utiliza o tempo ocioso, entre uma leitura e outra, para estudar e reorganizar a ordem das leituras seguintes, de forma que elas possam ser executadas na ordem em que seja necessário o menor movimento possível dos discos. É como no caso de um ônibus, que precisa fazer um itinerário passando por diversos pontos da cidade. Com o NCQ o motorista tem autonomia para fazer alterações na rota, de acordo com as condições do trânsito, escolhendo a rota mais rápida.
Esta ilustração fornecida pela nVidia mostra como o sistema funciona. O HD à esquerda não possui suporte a NCQ, de forma que, ao realizar 4 leituras a setores aleatórios do disco ele precisa realizá-las em ordem, fazendo com que sejam necessários um número maior de rotações do disco, À direita, o HD com NCQ usa um atalho para realizar a mesma seqüência de leitura em menos tempo, lendo os setores fora de ordem:
Na prática, o NCQ pode melhorar a taxa de transferência do HD em até 10% em situações específicas, onde são lidos diversos arquivos pequenos espalhados pelo HD, como durante o carregamento do sistema operacional, ou de um programa pesado, mas faz pouca diferença quando você está transferindo grandes arquivos. De qualquer forma, ele é uma otimização implementada via software, que não aumenta o custo de produção dos discos e não tem contra indicações.
Tem seguida temos a questão do cache, que, embora não seja tão importante para o desempenho quanto geralmente se pensa, permite à controladora executar um conjunto de operações úteis para melhorar o desempenho.
Geralmente ao ler um arquivo, serão lidos vários setores seqüenciais. A forma mais rápida de fazer isso é, naturalmente, fazer com que a cabeça de leitura leia de uma vez todos os setores da trilha, passe para a trilha seguinte, passe para a terceira e assim por diante. Isso permite obter o melhor desempenho possível.
O problema é que na prática não é assim que funciona. O sistema pede o primeiro setor do arquivo e só solicita o próximo depois de recebê-lo e certificar-se de que não existem erros. Se não houvesse nenhum tipo de buffer, a cabeça de leitura do HD acabaria tendo que passar várias vezes sobre a mesma trilha, lendo um setor a cada passagem, já que não daria tempo de ler os setores seqüencialmente depois de todo tempo perdido antes de cada novo pedido.
Graças ao cache, este problema é resolvido, pois a cada passagem a cabeça de leitura lê todos os setores próximos, independentemente de terem sido solicitados ou não. Após fazer sua verificação de rotina, o sistema solicitará o próximo setor, que por já estar carregado no cache será fornecido em tempo recorde.
Nos HDs atuais, o cache pode ser usado também nas operações de escrita. Imagine, por exemplo, que a controladora está ocupada lendo um arquivo longo e o sistema solicita que ela atualize um pequeno arquivo de log. Em vez de precisar parar o que está fazendo, a controladora pode armazenar a operação no cache e executá-la mais adiante, em um momento de ociosidade. Nos HDs SATA com NCQ, a controladora possui liberdade para reorganizar as operações, realizando-as de forma que sejam concluídas mais rápido. A controladora passa então a armazenar os dados no cache, de forma que, depois de concluídas as operações, possa organizar os dados e entregá-los na ordem correta para o sistema.
O espaço excedente é usado para armazenar os últimos arquivos acessados, de forma que eles possam ser fornecidos rapidamente caso sejam requisitados novamente. A principal vantagem de usar um cache maior seria justamente ter mais espaço para arquivos. A questão é que o sistema operacional também mantém um cache de leitura e gravação utilizando a memória RAM que, por ser maior que o cache do HD, acaba sendo mais eficiente e também mais rápido, já que o cache do HD tem sua velocidade de transferência limitada à velocidade da interface IDE ou SATA, enquanto o cache feito pelo sistema operacional está limitado apenas à velocidade de acesso da própria memória RAM. Esse é o principal motivo de um HD com mais cache não ser tão mais rápido quanto se pensa. Uma pequena quantidade de cache é importante por causa de todos os recursos que vimos, mas a partir de um certo ponto, o tamanho do cache acaba fazendo pouca diferença.
Concluindo, duas informações que constam nas especificações dos HD e que são freqüentemente mal entendidas são o MTBF e o service life, que se destinam a dar uma idéia estimada da confiabilidade do HD.
MTBF significa “Mean Time Between Failures” ou “tempo médio entre falhas”. A maioria dos HDs de baixo custo, destinados ao mercado doméstico, possuem MTBF de 300.000 ou 600.000 horas, enquanto os modelos high-end, ou destinados a servidores, normalmente ostentam um MTBF de 1.200.000 horas. Complementando temos o “service life” ou “component design life”, que normalmente é de 5 anos.
Como era de se esperar, o service life indica o tempo de vida “recomendado” pelo fabricante. Como o HD é composto por componentes mecânicos, um certo desgaste é acumulado durante o uso, culminando na falha do HD. Um service life de 5 anos indica que o HD é projetado para durar 5 anos e que a grande maioria das unidades deve realmente resistir ao tempo especificado.
O MTBF, por sua vez, não é uma indicação do tempo de vida do HD, mas sim indica a percentagem de chance do HD apresentar defeito antes do final do service life. Se o service life é de 5 anos e o MTFB é de 600.000 horas, significa que existe uma possibilidade de 1.4% do seu HD apresentar defeito antes disso.
Parece complicado, mas na verdade não é tanto :). A idéia é que se você tivesse um datacenter com 1.000 HDs iguais, um deles pifaria em média a cada 600.000 horas somadas (somando os 1.000 HDs), ou seja a cada 25 dias, ao longo dos primeiros 5 anos de uso. Depois isso, você pode esperar que a taxa de mortalidade seja cada vez maior nos anos seguintes, embora um pequeno número dos HDs possa resistir a 10 anos de uso ou mais.
Outra forma de explicar seria que, se você substituísse seu HD por outro igual a cada 5 anos, aposentando os antigos, seriam necessárias (em média) 600.000 horas, ou seja, 68.4 anos para que você perdesse os dados por causa de falha em um dos HDs. Ou seja, tudo gira em torno de possibilidades. Se você for “sortudo”, mesmo um HD com MTBF de 1.200.000 horas pode pifar no primeiro mês de uso, da mesma forma que o HD de 200 reais do vizinho pode resistir durante 10 anos e ainda voltar a funcionar depois de removido o pó acumulado ;). O MTBF apenas serve como um indicativo da possibilidade de qualquer um dos dois extremos ocorrer.
