SSDs ou “Solid State Disks” (discos de estado sólido)

Os discos de estado sólido, SSDs “Solid State Disks”, desde o IBM 350 são uma grande revolução dentro do ramo dos HDs , já que eles utilizam um princípio de armazenamento com os discos magnéticos dando lugar aos chips de memória Flash, oferecem tempos de acesso muito baixos, combinados com excelentes taxas de leitura e gravação em setores aleatórios, onde mesmo os melhores HDs magnéticos oferecem apenas alguns poucos MB/s. Isso melhora o desempenho consideravelmente em uma grande gama de aplicativos e reduz bastante o tempo de boot.

Oferecem um consumo elétrico mais baixo (o que os tornam um componente atrativo especialmente para os notebooks), são silenciosos, resistentes a impactos e oferecem uma melhor segurança contra perda de dados devido a defeitos de hardware, já que não possuem partes móveis.

A grande maioria dos SSDs domésticos utilizam módulos de memória Flash MLC, assim como nos cartões e pendrives. Entretanto, eles oferecem um diferencial importante, que é o uso de múltiplos canais de acesso. Isso permite que o controlador acesse vários chips simultaneamente, dividindo os arquivos em pequenos blocos que podem ser divididos entre os chips e depois lidos simultaneamente, de maneira muito similar ao que temos em um sistema RAID.

Os SSDs, geralmente possuem controladores mais inteligentes, que utilizam buffers de dados relativamente grandes. Isso permite que as operações sejam organizadas e agrupadas de maneiras mais eficientes e muitas operações sejam cacheadas.

Um SSD de segunda geração como o Intel X25-M G2 pode atingir facilmente 250 MB/s de taxa de leitura sequencial e 80 MB/s de escrita sequencial (muitos drives atingem os 160 MB/s), se aproximando dos 300 MB/s teóricos do SATA-300.

Nas operações de leitura e escrita em setores aleatórios que a diferença se torna mais marcante. Enquanto um HD magnético de 7200 RPM não é capaz de manter mais do que 800 ou 1000 KB/s de escrita ao gravar arquivos de 4 KB em setores aleatórios, um bom SSD é capaz de ultrapassar facilmente os 20 MB/s (o X25-M G2 é capaz de manter de 36 a 40 MB/s de acordo com o volume de requisições simultâneas), o que acaba representando uma diferença muito grande em situações reais de uso.

Diferente dos HDs magnéticos, o desempenho dos SSDs praticamente não é afetado pela fragmentação, já que não faz muita diferença para o controlador se os endereços a serem lidos estão em setores adjacentes ou espalhados pelo disco. Entretanto, particularidades na maneira como os setores são acessados fazem com que, em muitas situações, o desempenho decaia com o uso, conforme dados são gravados e apagados. À primeira vista, o efeito pode parecer similar à perda de desempenho causada pela fragmentação, mas as razões são completamente diferentes.

Em um HD magnético os dados são gravados em setores de 512 bytes, que podem ser apagados e sobrescritos de maneira independente. Nos SSDs, por outro lado, os endereços são organizados em páginas de 4 KB, que são então agrupadas em blocos de 512 KB.

As páginas funcionam de maneira muito similar aos clusters dos HDs magnéticos. Cada página pode armazenar um arquivo ou fragmento de arquivo. Dois arquivos não podem compartilhar a mesma página, o que faz com que arquivos com menos de 4 KB ocupem uma página inteira, desperdiçando espaço.

Este não chega a ser um grande problema, já que a maioria dos sistemas de arquivos utilizam clusters de 4 KB ou mais de qualquer forma. O grande problema é mesmo a questão dos blocos e das operações de escrita.

Assim como em um HD magnético, a controladora é capaz de acessar as páginas de forma independente, lendo e gravando dados. Em um chip de memória MLC típico, uma operação de leitura demora 50 microssegundos (0.05 ms) e uma operação de escrita demora 900 microssegundos, o que explica a diferença entre o desempenho de leitura e escrita na maioria dos SSDs.

O grande problema é que as páginas na memória Flash não podem ser simplesmente regravadas, como os setores em um HD magnético. Sempre que é necessário gravar dados em uma página já ocupada, a controladora precisa primeiro apagar os dados anteriores (revertendo as células a seu estado original) para só então executar a nova operação de escrita.

Para piorar (desgraça pouca é bobagem…) não é possível apagar as páginas de forma independente. Sempre que precisa apagar alguma coisa, a controladora tem que limpar todo o bloco (128 páginas), uma operação demorada, que leva 1 ms ou mais (ou seja, 1000 vezes mais tempo que a escrita de uma página vazia).

Se já houverem outros dados válidos dentro do bloco a ser apagado, a operação se torna ainda mais demorada, já que a controladora precisa ler todo o conteúdo do bloco, copiá-lo para o buffer, executar o comando de limpeza (que apaga todo o conteúdo do bloco), fazer a modificação dos dados no buffer e em seguida gravar todo o bloco novamente. Essa sequência de passos demora uma verdadeira eternidade, o que explica como o desempenho de muitos SSDs pode ser tão baixo em algumas situações.

Para reduzir o número de vezes em que precisa arcar com a penalidade, a controladora procura sempre que possível usar blocos vazios, em vez de regravar o conteúdo de blocos existentes. Nesse caso, um novo bloco é usado para armazenar a versão modificada e a tabela de alocação do sistema de arquivos é atualizada, com a entrada apontando para o novo endereço.

O grande problema com essa abordagem é que ela funciona bem durante as primeiras semanas ou meses de uso, mas a partir do momento em que todos os blocos foram usados pelo menos uma vez, a controladora passa a ser obrigada a voltar e reciclar os blocos anteriormente utilizados, executando todos os passos. Isso leva a um fenômeno curioso, onde o desempenho do drive “novo” é consideravelmente melhor que o do drive “usado”, depois de algum tempo de uso. Como comentei, o sintoma é similar ao que temos em um HD fragmentado, mas a causa é diferente.

Esse problema afetou toda a primeira geração de SSDs (dos genéricos baseados em controladores da jMicron aos Intel X25), cujo desempenho de escrita caía para menos da metade depois de algum tempo de uso. O caso acabou gerando uma grande repercussão, o que levou os fabricantes a responderem com atualizações de firmware destinadas a remendar o problema, implementando sistemas de “reciclagem”, que limpam os setores marcados como vagos enquanto o drive está ocioso, mantendo sempre um determinado volume de blocos vagos.

A solução definitiva veio com o comando TRIM, uma nova função que permite ao sistema operacional agendar a limpeza das páginas cujo conteúdo foi deletado ou movido em vez de simplesmente marcá-las como vagas. Isso faz com que as páginas livres do SSD realmente estejam prontas para receber novos dados, sem depender unicamente de algum sistema de reciclagem executado pela controladora.

O grande problema com o TRIM é que ele é suportado apenas pelo Windows 7 e por versões recentes do kernel Linux, o que deixa de fora usuários do Windows Vista ou Windows XP. No caso deles existem utilitários de otimização oferecidos pelos fabricantes, como o SSD Toolbox da Intel, que permitem executar testes e otimizações.

Naturalmente, o TRIM precisa ser suportado também pelo SSD, o que abre outra margem para problemas, já que apenas os drives produzidos a partir do final de 2009 oferecem suporte a ele. No caso dos drives da Intel, por exemplo, o suporte está disponível apenas a partir do X25-M G2. Se você tem um X25-M da primeira geração, está sem sorte.

Um meio termo entre os SSDs e os HDs tradicionais são os HHDs (Hybrid Hard Drives, ou HDs híbridos), que são HDs tradicionais, que incorporam chips de memória Flash, usados como um buffer de dados.

Todos os HDs atuais incluem uma pequena quantidade de memória SDRAM (ou SRAM), usada como cache de disco. O cache é bastante rápido, mas é limitado por dois fatores: é muito pequeno (16 MB na maioria dos HDs atuais) e perde os dados armazenados quando o micro é desligado.

Em um HHD é usada uma quantidade generosa de memória Flash (512 MB ou mais em muitos modelos), que tem a função de armazenar dados frequentemente acessados (como arquivos carregados durante o boot), de forma que eles continuem disponíveis depois de desligar o micro e possam ser usados no próximo boot; e, também, a de servir como um buffer de dados, permitindo que arquivos sejam salvos na memória Flash e copiados para os discos magnéticos quando for mais conveniente. Nesse caso não existe problema de perda de dados armazenados no buffer ao desligar o micro no botão, pois os dados ficam retidos na memória Flash e são gravados nos discos magnéticos no boot seguinte.

Além dos ganhos de desempenho, sobretudo a potencial redução no tempo de boot, o buffer permite que o HD fique mais tempo em modo de economia de energia, já que não é preciso “acordar” o HD ao salvar arquivos ou quando o sistema precisa atualizar arquivos de log, por exemplo, operações que podem ser realizadas no buffer. Isso acaba tornando a tecnologia bastante interessante para os notebooks, onde o HD chega a representar um quarto do consumo elétrico total.

Naturalmente, a memória Flash é muito mais lenta que a memória RAM tipicamente usada no cache de disco e (em muitos casos) mais lenta até mesmo que os discos magnéticos em leitura ou gravação de arquivos sequenciais. Ao salvar um arquivo grande (uma imagem de DVD, por exemplo), a gravação é feita diretamente nos discos magnéticos, sem passar pelo buffer.

Temos também a tecnologia Robson, desenvolvida pela Intel, onde temos um buffer similar, instalado na placa-mãe. Os chips de memória Flash podem ser incorporados diretamente na placa, ou instalados através de uma placa de expansão (opção que fica a cargo do fabricante).

Em ambos os casos, o buffer se comunica com o chipset através do barramento PCI Express e ele (chipset), com a ajuda de um driver instalado no sistema operacional, se encarrega de usar o buffer para cachear as operações do HD. O princípio de funcionamento e o resultado prático é o mesmo que usar um HHD, a única grande diferença é que o dinheiro vai para a Intel, ao invés de para o fabricante do HD :). A tecnologia Robson foi introduzida no chipset i965GM e é usado em alguns notebooks baseados na plataforma Santa Rosa.

Além dos SSDs, outra modalidade de discos de estado sólido (o “disco” é apenas figura de linguagem, já que chips não são redondos…) são os RAM-drives, que utilizam memória RAM como mídia de armazenamento, oferecendo tempos de acesso ainda mais baixos que os SSDs NAND e taxas de leitura e gravação absurdamente altas.

Fonte: Internet

2011 10 05

 

 

Anúncios