Hardware

SSD - A nova revolucão dos Discos

ssd_html_7608a496

Os SSDs ou "Solid State Disks" (discos de estado sólido) são possivelmente a maior revolução dentro do ramo dos HDs desde o IBM 350, já que eles utilizam um princípio de armazenamento completamente diferente, com os discos magnéticos dando lugar aos chips de memória Flash: A vantagem óbvia do SSDs é que eles 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, tornando o sistema muito mais responsível. Os SSDs também 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 desvantagem por outro lado é o custo por megabyte, já que em vez de combinar 4 discos magnéticos de 500 GB cada um para criar um HD de 2 TB, você precisa juntar 20 chips de memória Flash de 8 GB cada para criar um SSD de apenas 160 GB. Quanto mais gigabytes, mais chips, o que leva os preços dos drives de maior capacidade para as alturas.

Os primeiros SSDs para SSDs para uso doméstico começaram a chegar ao mercado em 2007, mas por serem muito caros (pense em US$ 500 por um SSD de 32 GB) eles receberam pouca atenção. Apenas recentemente (final de 2009) os SSDs começaram a chegar com mais força, liderados pela série X25 da Intel e modelos da Kingston, Corsair, OCZ, Super Talent e outros fabricantes menores, que se especializaram em vender versões OEM de drives da Samsung, Indilinx ou até mesmo da Intel.

ssd_html_m41db1558

Existiram também alguns modelos de baixo custo e baixo desempenho (como os usados no Eee PC 701, 900 e 901), mas eles se comportavam basicamente como um pendrive ligado a um slot Express Mini. Eles ofereciam taxas razoáveis de leitura, mas em compensação ofereciam taxas de escrita incrivelmente baixas para pequenos arquivos. Para ter uma ideia, o SSD Phison de 8 GB usado no Eee 901 é capaz de executar apenas 12 gravações de arquivos de 4 KB por segundo, o que corresponde a apenas 48 KB/s!

ssd_html_m62b3d14d

A grande maioria dos SSDs domésticos utilizam módulos de memória Flash MLC, assim como nos cartões de memória 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.

A maioria dos drives atuais utilizam 10 ou 20 chips de memória Flash (o que permite que os fabricantes produzam drives de baixa e alta capacidade usando as mesmas placas) e 10 canais de acesso simultâneo. Um bom exemplo é o Intel X25-M G2, que usa 10 chips na versão de 160 GB e 20 chips na versão de 320 GB (com os mesmos 10 canais de acesso em ambos os casos).

Ao escrever um arquivo de 4 MB, por exemplo, o controlador o dividirá em 10 blocos de 400 KB cada um, que serão escritos simultaneamente em 10 chips diferentes, ocupando um total de 100 páginas de 4 KB em cada um. Ao ler o arquivo posteriormente, a leitura é novamente dividida entre os 10 chips, o que multiplica tanto a taxa de escrita quanto a de leitura, sem que exista penalidade com relação aos tempos de acesso.

Outro ponto importante a favos dos SSDs é o uso de 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.

Em situações em que a controladora dispõe de um volume suficiente de blocos limpos (veja mais detalhes a seguir) 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.

Entretanto, é na 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.

SSD "novo" e SSD "usado": 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:

ssd_html_253fbc39

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 precisa 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 precisa 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 problema 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 limpezas manuais.

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.

Continuando, um dos grandes problemas com as células de memória Flash é a longevidade. Diferente dos platters de um HD, que podem ser regravados alguns milhões de vezes (o desgaste está mais relacionado ao tempo de uso e a danos físicos e não ao número de regravações), as células de memória Flash têm uma vida útil estimada em 100.000 regravações no caso dos chips SLC e apenas 10.000 regravações no caso dos MLC.

Os chips SLC são a tecnologia original de chips de memória flash NAND, onde cada cada célula armazena um único bit, salvo na forma de um impulso elétrico (1 ou 0). As células MLC armazenam dois bits, utilizando 4 níveis de tensão diferentes. O uso do MLC permite produzir chips com o dobro da capacidade sem praticamente nenhum custo adicional, mas por outro lado resulta em chips mais lentos (principalmente nas operações de escrita) e menos duráveis.

Como sempre, a questão do custo acaba falando mais alto, o que faz com que os chips MLC sejam os utilizados em praticamente todos os cartões de memória e pendrives (com exceção de alguns modelos de alto desempenho) e também na esmagadora maioria dos SSDs de baixo e médio custo, o que nos leva ao problema das 10.000 regravações.

Em um cartão de memória ou mesmo em um pendrive, este número não parece tão preocupante, já que mesmo que você enchesse o cartão da sua câmera todos os dias, você demoraria 30 anos para atingir as 10.000 regravações. Em um SSD, por outro lado, a coisa é um pouco mais séria, já que não apenas o volume de operações é muito maior (principalmente se for usada memória swap) mas também a importância dos dados armazenados é muito maior.

Para evitar que algumas áreas (como no caso de áreas usadas como swap) falhem prematuramente, inutilizando o disco, os fabricantes utilizam sistemas de wear leveling (distribuição de uso), que alteram os setores usados cada vez que arquivos são criados ou alterados. Em outras palavras, sempre que o conteúdo de um bloco é modificado, o controlador simplesmente lê os dados, faz a alteração e grava o conteúdo em um novo bloco.

Isso faz com que o bloco anterior seja novamente utilizado apenas depois que todos os outros blocos do SSD forem utilizados pelo menos uma vez. Note que o wear leveling se encaixa bem com os algoritmos para evitar as penalidades de escrita.

Com 10.000 operações de escrita por bloco, um SSD de 80 GB teria uma vida útil estimada em 800 TB de gravações, o que é um número difícil de atingir em situações normais, já que você precisaria gravar 40 GB de dados todos os dias por 60 anos para atingir a marca.

Entretanto, na prática a vida útil é menor devido a um outro fator, o write amplification, que é causado pela questão dos blocos. Enquanto o controlador está gravando grandes arquivos isso não é um problema, já que eles serão quebrados em pedaços de 512 KB e cada um ocupará um bloco inteiro. O grande problema é a gravação de arquivos pequenos, onde existe a possibilidade de ter que apagar e em seguida regravar um bloco inteiro para salvar um arquivo de apenas 4 KB (ou menos).

No pior caso possível o write amplification seria de 128x (gravar um bloco inteiro para alterar uma única página), mas em situações reais ele é estimado em de 20x a 40x (ou seja, para cada 8 GB de dados, a controladora acabaria escrevendo um total de 160 a 320 GB de dados nas células de memória).

Nos drives atuais, porém, o cenário não é tão sombrio, pois graças ao uso de sistemas inteligentes de redução (combinação de escritas e outras técnicas) os controladores são capazes de reduzir bastante este número. A Intel por exemplo promete (embora não garanta) valores de até 1.1x nos SSDs da série X25.

Como são obrigados a levar vários fatores em conta e oferecer uma estimativa mínima do quanto o SSD vai durar, os fabricantes adotam posturas bem mais conservadoras, estimando a vida útil do SSD em de 5 a 10 anos de uso intenso, o que é de qualquer forma bem mais que a média dos HDs magnéticos. As células de memória flash são também capazes de preservar os dados por pelo menos 10 anos sem receberem alimentação elétrica, o que também é uma boa marca.

Os preços: Considerando o brutal custo por gigabyte dos SSDs, não faz muito sentido pensar em utilizá-los para armazenar seus 2 TB de filmes e músicas (a menos que você seja algum milionário excêntrico sem nada melhor para fazer com o dinheiro…) já que você simplesmente gastaria uma fortuna.

O truque para reduzir os custos e maximizar os ganhos é combinar um SSD de baixa capacidade com um ou mais HDs magnéticos de grande capacidade, usando o SSD para armazenar a partição principal (com o sistema operacional, programas e arquivos de trabalho) e usar o HD magnético para os arquivos maiores.

Isso permite que o SSD desempenhe seu papel de oferecer um boot mais rápido e carregamento quase instantâneo dos aplicativos, exibindo seus dotes com leitura de setores não sequenciais, ao mesmo tempo em que o HD magnético tem a oportunidade de demostrar seus talentos com relação à capacidade e leitura de setores sequenciais.

Não demorou para que muitos fabricantes percebessem o nicho, passando a lançar SSDs de baixo custo e baixa capacidade, destinados a serem usados como disco de boot. Um bom exemplo é o Kingston V Series de 40 GB, que é uma versão econômica do Intel X25-M G2, com menos chips de memória Flash (ele usa apenas 5 chips de 8 GB, em vez de 10 chips de 16 GB como no X25-M G2 de 160 GB). Ele foi o primeiro SSD de alto desempenho a ser vendido (nos EUA) abaixo da marca dos US$ 100, o que pode ser considerado um marco.

ssd_html_m7ba58df

Com relação aos preços dos SSDs de maior capacidade, não espere nenhuma mudança súbita a curto prazo. A tendência é que os chips de memória Flash continuarão dobrando de capacidade a cada 18 meses, permitindo que os fabricantes ofereçam SSDs com o dobro da capacidade por basicamente o mesmo preço.

As versões iniciais do Intel X25-M, por exemplo, foram lançadas em capacidades de 80 e 160 GB, usando (respectivamente), 10 e 20 chips de 8 GB, produzidos usando uma técnica de 50 nm. A segunda geração (o X25-M G2) é equipada com chips de 16 GB, produzidos usando uma técnica de 34 nm, o que permitiu à Intel dobrar as capacidades e oferecer modelos com 160 e 320 GB.

Eventualmente migrarão para a técnica de 22 nm, o que permitirá equipar os drives com chips de 32 GB, novamente dobrando a capacidade, eventualmente, para a técnica de 15 nm, dobrando mais uma vez. Os preços devem flutuar de acordo com a demanda, mas a tendência geral é que não exista uma grande redução no custo por unidade.

O que deve acontecer é o aparecimento de mais opções de SSDs de baixa capacidade (e menos chips), vendidos por preços mais baixos. Em outras palavras, o HDs magnéticos continuarão entre nós por pelo menos mais uma ou duas décadas, senão mais.