sexta-feira, 20 de maio de 2011

SSD - O futuro do armazenamento de dados?


Nesse post irei falar sobre uma tecnologia emergente que promete estar em boa parte dos computadores pessoais (desde desktops, até notebooks e smartphones) nos próximos anos. Essa tecnologia se chama SSD, ou Solid State Drive (Drive de Estado Sólido).

Os SSDs são dispositivos de armazenamento assim como os HDs que nós podemos encontrar na esmagadora maioria dos computadores, mas eles armazenam dados de forma completamente diferente, aonde são adotados chips de memória flash no lugar dos discos magnéticos.
O SSD X25- E da Intel ao lado de um HD de 2,5'. - Imagem: Intel.
 
Mas qual é a grande vantagem de usar memória flash?

Uma boa resposta é a diferença nos tempos de acesso que esses chips proporcionam se comparado com os HDs. Um HD pode oferecer em média um tempo de acesso beirando os 12 ms (milissegundos), enquanto a maioria dos SSDs oferece um tempo de acesso de 0,2 ms.

Além dessa diferença, os SSDs possuem excelentes taxas de leitura e escrita de arquivos em setores aleatórios, área onde os melhores e mais rápidos HDs só conseguem oferecer alguns poucos MB/s.

Outro ponto forte dos SSDs é a sua durabilidade, segurança contra perda de dados e resistência a choques, pois como não possuem partes mecânicas como os HDs, eles se tornam bem mais resistentes. Além de que eles possuem um consumo elétrico muito menor  que os discos rígidos, o que se torna uma grande vantagem para os dispositivos que dependem de bateria, como notebooks e outros aparelhos portáteis.

Como podemos ver, o número de motivos para se usar um SSD é enorme, porém eles possuem uma grande desvantagem, que é o custo por  megabyte.

Um SSD precisa de vários chips de memória flash para conseguir apenas alguns poucos gigabytes de armazenamento.

Em uma rápida pesquisa em um site que vende peças de informática (http://www.megamamute.com.br), podemos ver que um SSD de meros 120GB custa R$748,00 enquanto um HD de 1TB custa apenas R$198,00 – Quase 4 vezes o valor, tendo apenas um oitavo da capacidade, a diferença chega a ser gritante.

Mas com o tempo, e novas técnicas de fabricação, a tendência da densidade por chip dos SSDs é de aumentar, fazendo com que consequentemente o seu preço caia.

Mas feita a introdução, vamos falar um pouco de cada tecnologia em separado.

HDs – Os discos rígidos

Os HDs são os dispositivos mais utilizados como memória secundária (ou de longo prazo, ou ainda, aquela memória pra você guardar seus arquivos :) que nós temos nos computadores.

Sua composição é de, basicamente, discos magnéticos (Ou platters), um cabeçote de leitura/escrita, e uma placa lógica/controladora.

Os discos magnéticos são compostos por duas camadas. A primeira delas é o substrato, que é um disco metálico, de liga de alumínio, ou de vidro. A segunda camada é a superfície magnética propriamente dita, onde os dados são armazenados.

Os platters são posteriormente fixados ao eixo central, e ao motor de rotação, que é responsável por manter os discos girando a uma rotação constante.

Podemos ver abaixo, um pequeno diagrama que resume os principais componentes de um HD:


Diagrama de um HD.

   
Para melhor compreender o processo de leitura/gravação de um HD, vamos olhar o diagrama abaixo:


Diagrama do processo de leitura/gravação perpendicular em um HD.

Podemos ver que a cabeça de leitura do HD é dividida em duas partes distintas, uma para realizar a leitura da superfície magnética, e a outra para realizar as gravações.

Dependendo de como a superfície magnética está magnetizada (Pólo magnético norte, ou sul), a cabeça de leitura interpreta os 1's e os 0's. E para gravar, a cabeça de gravação muda o pólo magnético da superfície do disco.

E quem controla o movimento dos braços de leitura no HD é o Atuador. Ele internamente contém uma bobina para poder movimentar os cabeçotes ao longo da superfície do disco, conforme necessário.

E para fazer a comunicação dessa parte interna do HD com a placa lógica, existe o cabo flat, localizado geralmente ao lado do atuador.

Para facilitar o processo de leitura e gravação de dados, os discos são divididos em trilhas, setores e cilindros, conforme o diagrama abaixo:

Diagrama da organização de um disco de um HD.

 
As trilhas são círculos que começam no final do disco magnético, e ao se aproximarem do centro (ou seja, do motor) vão se tornando cada vez menores. Cada trilha tem o seu próprio endereço, que começa do mais externo  que possui o endereço 0, seguido da próxima trilha, com endereço 1, até chegar na última trilha.

Cada trilha é dividida em vários setores, que são pequenas divisões de 512 bytes ( ou nos discos mais atuais, de 4 Kilobytes ), onde são armazenados os dados.

Já o termo cilindro refere-se a um conjunto de trilhas, entre os vários discos, e faces desses discos (já que os dados podem ser gravados dos dois lados) do HD, que possuem o mesmo endereçamento, ou seja, temos a trilha com endereço 10 nos discos 1 e 2, o conjunto dessas trilhas forma o cilindro 10.

Esse termo é utilizado devido ao fato de que as cabeças de leitura de um HD estão presas a um único braço móvel, fazendo com que não seja possível acessar trilhas com endereços diferentes em discos diferentes, pois os cabeçotes não possuem movimentos independentes.
 
Abaixo, podemos ver um HD e sua placa lógica:

HD da Samsung e sua placa lógica.

A placa lógica é a parte do HD que controla o fluxo de dados que vem e vai para a placa-mãe, e quais dados são lidos e/ou gravados nos discos magnéticos. Ela é composta de alguns poucos chips.

Dentre esses chips, nós temos um chip de memória SDRAM, que serve como um espaço temporário para armazenar os dados antes de serem gravados no disco propriamente dito, e também pode ser usado para guardar dados muito acessados pelo computador, de forma. Ou em outras palavras, esse é o buffer do disco.

Como acessar os dados, e alterá-los requer processamento, a placa lógica também contém um chip controlador, que é responsável por esse processamento.

E por último, temos um chip que controla o movimento dos braços de leitura, além da velocidade de rotação dos discos.


SSD - Solid State Drive

Os SSDs, assim como os HDs, são dispositivos de memória secundária, porém, ao invés de usar discos magnéticos, os SSDs são compostos basicamente de vários chips de memória flash NAND, e uma controladora, que acessa esses módulos de memória.

O diagrama abaixo exemplifica, de forma simplificada, um SSD:

Diagrama de um SSD.

Nos SSDs, os chips de memória podem ser acessados simultaneamente, fazendo com que o desempenho geral, tanto para leitura quanto para escrita, fique muito mais rápido.

Para exemplificar o acesso desses canais simultâneos, imagine que o controlador precise gravar um arquivo de 8 GB. Ele irá primeiro dividir esse arquivo em 8 blocos de 1 GB, e gravar cada bloco em um chip de memória separado.

Os chips de memória de um SSD podem ser SLC (Single-Level Cell), que permite o armazenamento de apenas um bit por célula. Ou eles podem ser do tipo MLC (Multi-Level Cell), que permite o armazenamento de dois ou vários bits por célula.

O MLC se torna possível a partir do uso de tensões intermediárias na hora de armazenar os dados, enquanto o SLC usa apenas a presença (bit 1) e a ausência (bit 0) para o armazenamento.

Naturalmente, os chips MLC são ligeiramente mais lentos do que os SLC, devido à sua complexidade,mas os chips com células SLC possuem uma capacidade de armazenamento bem menor (pelo menos metade da de um MLC). Porém nas operações do dia-a-dia, isso não chega a fazer muita diferença, sendo então recomendado os SSDs com células SLC somente para servidores, que precisam ler e gravar vários dados em um curto espaço de tempo.


O problema do desempenho ao longo do uso dos SSDs

Os SSDs possuem um sistema de organização de arquivos que distribui os endereços de memória em páginas de 4KB, e essas páginas são agrupadas em um bloco de 512KB, conforme o diagrama abaixo:

Agrupamento em um SSD.


As páginas de um SSD podem ser analogamente comparadas aos setores de um HD, e elas podem armazenar fragmentos de um arquivo, ou um arquivo inteiro, com um porém, dois arquivos não podem usar a mesma página, o que resulta em desperdício de espaço caso o arquivo ocupe menos que 4 KB, pois ele vai na pratica ocupar a página inteira.

Mas essa questão sozinha não chega a ser um grande problema. A questão nos SSDs que pode afetar o seu funcionamento ao longo de sua vida se deve ao fato de que em um chip de memória flash as páginas não podem ser regravadas diretamente, elas precisam primeiro ter os seus dados apagados, para então gravar os novos dados. E também vale ressaltar que as páginas não podem ser apagadas individualmente, para realizar tal operação, deve-se limpar o bloco inteiro. Então a controladora copia o bloco para o buffer, limpa as páginas desse bloco, faz a modificação no buffer, e somente então os dados são novamente gravados no chip flash.

No final das contas, uma operação de escrita em um bloco que já contém dados leva quase mil vezes mais tempo do que a gravação em um bloco vazio.

Para contornar esse problema, a controladora sempre que possível usar blocos vazios para gravar os seus novos dados, mas essa solução deixa de fazer efeito a partir do momento em que todos os blocos já passaram por pelo menos uma operação de escrita.

Então, depois de muitas discussões, os fabricantes lançaram a solução definitiva, que passou a se chamar de comando TRIM. O TRIM permite que o sistema operacional faça de tempos em tempos uma limpeza nos blocos que foram marcados como livres, mas que na verdade ainda estão com dados gravados nas células de memória, fazendo então com que esses blocos estejam realmente livres quando forem necessários para gravação de novos dados.

Para o comando TRIM funcionar, ele precisa ser suportado tanto pelo sistema operacional (o que inclui apenas o Windows 7 e algumas versões do Linux), quanto pelo próprio SSD. logo, ao comprar um SSD, fique atento se ele vem com o TRIM.


Longevidade dos SSDs

Os chips de memória flash ainda tem mais um problema. Sua células de memória suportam em torno de 100.000 operações de leitura e escrita (SLC), ou 10.000 operações (MLC).

Esse número de operações é pequeno em um dispositivo que vai armazenar um sistema operacional, pois o número de operações de leitura e escrita é bem maior do que a de um pendrive, por exemplo. Esse número é menor ainda no caso dos MLC, presente na maioria dos SSDs vendidos atualmente no mercado.

Para contornar esse problema, e evitar com que as células estraguem muito rápido, foi adotado o sistema de wear leveling (ou distribuição de uso), onde os setores utilizados pelo SSD são alterados cada vez que uma operação de escrita é requisitada, o que em outras palavras quer dizer que ao fazer uma operação de escrita em um bloco, a controladora armazena esses dados no buffer, altera, e grava em um novo bloco. Isso faz com que um bloco só volte a ser utilizado assim que todos os demais blocos do SSD forem usados.

Esse sistema aumenta (e muito) a longevidade de um SSD. Os fabricantes dizem que um SSD pode funcionar bem durante 10 ou mais anos de uso, o que é uma marca muito maior do que as de um HD, que em muitos casos apresenta defeitos bem antes.

E para melhorar a situação, uma célula NAND é capaz de armazenar um impulso elétrico por vários anos sem receber nenhuma corrente elétrica.


Testes de desempenho de um HD e de um SSD

Para completar o post, vamos mostrar um teste de desempenho rápido feito no HD Tune (mostrado no post anterior).

O HD testado foi um Samsung HD753LJ – 750GB – 7.200 RPM, e o SSD foi o Kingston SSDNow V series ­­– 2ª geração – 128GB.

Como infelizmente não foi possível usar o mesmo sistema para testar os dois dispositivos de armazenamento, considerem uma pequena margem de erro (algo de +/- 3%) ao comparar os resultados.

 O sistema utilizado para testar o SSD foi:

Processador: Core i7 2600 @ 3.9Ghz
Placa mãe: ASUS P8P67 Deluxe
Memória:  Corsair Vengeance 8GB (2x4GB) @ 1600 Mhz – 8-8-8-24
Placa de video: Zotac Geforce GTX 460 1GB
Fonte: Corsair HX 1000W

Enquanto o sistema utilizado para testar o HD foi:

Processador: Core 2 Duo E7500 @2.93Ghz
Placa mãe: Gigabyte EP45-UD3L
Memória:  Kingston Hyper X 4GB (2x2GB) @ 1066 Mhz – 5-5-5-15
Placa de video: Zotac Geforce GTX 460 1GB
Fonte: Corsair VX 450W

Os resultados podem ser vistos abaixo:


Teste do HD da Samsung.


Teste to SSD da Kingston.

Teste de velocidade de leitura

Podemos verificar nos testes de leitura sequencial, que o SSD obteve uma velocidade média de 183,4 MB/segundo, contra "meros" 95,7 MB/segundo do HD.

Até o pico mais lento do SSD superou a velocidade mais rápida registrada pelo HD, deixando bem claro que o SSD é bem mais rápido que o HD.


Teste de tempo de acesso

Como o HD usa discos magnéticos, e um SSD usa chips de memória flash NAND, os tempos de acesso diferem muito.

Pelos resultados dos testes, o SSD obteve a incrível marca de apenas 0,3 ms no tempo de acesso, chegando a ser 43 vezes mais rápido que o HD e seus 13,1 ms.


Burst rate

O teste de burst rate será ignorado nesse caso, devido ao uso de sistemas bem diferentes.


Conclusões

Podemos verificar que os SSD ganha em todos os testes contra o HD, deixando uma conclusão bem óbvia em relação ao desempenho entre as duas tecnologias.

Podemos ainda verificar que o desempenho de um HD diminui na medida em que os cabeçotes precisam ler os últimos gigas do disco, enquanto um SSD mantém essa velocidade praticamente constante.

A única desvantagem real de um SSD em relação a um HD é o seu custo por megabyte, que chega a ser absurdamente mais alto. Porém com o tempo, essa diferença deve baixar e os SSDs devem entrar definitivamente no mercado no lugar dos HDs.

Por enquanto, a recomendação é de você comprar um SSD de baixa capacidade (um de 40GB está de bom tamanho) para armazenar o seu sistema operacional e os seus programas, enquanto um HD é utilizado para guardar seus arquivos. Tal solução melhora e muito o desempenho geral do computador, e você não vai precisar vender um rim para isso :)

Ou uma outra solução é usar os HDs "híbridos", que nada mais são do que HDs com alguns poucos gigas de memória flash NAND que auxiliam as operações de leitura e escrita, armazenando nesse grande "buffer" os arquivos e programas mais acessados pelo usuário.

Com isso, eu encerro o meu post. Espero que tenham gostado!
Até a próxima!