< Coluna em Fórum PCs >
|
||
03/11/2008
|
<
Discos de Estado Sólido IV: afinal, > |
Voltemos, afinal, ao que realmente interessa: os dispositivos de armazenamento de massa de estado sólido (SSD, ou “Solid State Disks”) da EMC e, mais especificamente, à forma pela qual os fabricantes conseguiram contornar o problema da limitação do número de operações de escrita. E prometo fechar o tópico com esta coluna. A real natureza do problema está ligada ao tipo do SSD. Pois há mais de um. Na verdade, segundo a < http://www.snia.org/ > SNIA, Storage Networking Industry Association, há três deles. O primeiro é baseado exclusivamente em memória flash. Mais especificamente no mesmo tipo de memória flash usado nos dispositivos eletrônicos de uso corrente vendido nas lojas ao usuário doméstico (“consumer electronics”). São inerentemente não voláteis e conhecidas por seu baixo custo, durabilidade e desempenho, sobretudo no que toca às operações de leituras aleatórias. Já no que diz respeito às operações de escrita, o desempenho é apenas razoável e o número de operações limitado, o que limita igualmente a vida útil do dispositivo. O segundo é baseado em memórias DDR. Na verdade, adotam o mesmo tipo de memória usado nos grandes servidores de dados. O problema com esta memória é sua natureza inerentemente volátil. O que faz com que os dados nela armazenados sejam perdidos tão logo cessa a alimentação elétrica. Sendo assim, para que possam ser usados como memória de armazenamento de massa ou memória secundária (como os discos rígidos), que exige dispositivos não voláteis, necessitam de uma alimentação permanente através de baterias. Mas, como nenhum sistema é absolutamente livre de falhas, para garantir que os dados serão mantidos mesmo em caso de descarga completa das baterias, este tipo de SSD usa discos magnéticos nos quais é feita uma cópia freqüentemente atualizada do conteúdo dos módulos de memória DDR. O que faz com que o custo global do dispositivo seja extremamente alto. No entanto, em termos de desempenho, são soberbos. Finalmente, há o terceiro tipo, um tipo híbrido que usa uma mistura de memórias não voláteis tipo flash e memórias voláteis tipo DDR. São conhecidos por “cached flash” e voltaremos a falar dele mais adiante. Já no que toca às células de memória flash propriamente ditas, como vimos nas colunas anteriores, há de dois tipos: SLC (single-level cell, ou células de nível simples) e MLC (multi-level cell, ou células de nível múltiplo). As últimas são empregadas nos dispositivos eletrônicos de uso corrente, como “pen-drives” e cartões de memória. Já existem no mercado módulos de até 32 GB (esperando-se para breve os primeiros de 64 GB), são mais baratas, mais compactas (uma única “célula” pode armazenar dois bits através da variação dos níveis de corrente que conduz em quatro intensidades identificáveis), mas em contrapartida apresentam um desempenho duas vezes menor que o das memórias SLC e impõem um limite de 10.000 (dez mil) operações de escrita por célula. Já as memórias flash tipo SLC são mais caras, menos densas (cada célula armazena apenas um bit, como toda célula de memória que se preza) e os módulos de maior capacidade hoje existentes armazenam apenas 16 GB (esperando-se para breve os de 32 GB). Em contrapartida admitem até 100.000 (cem mil) operações de escrita por célula e apresentam um desempenho muito superior: tempo de leitura de 25 microssegundos, de escrita de 200 microssegundos e necessitam de apenas 1,5 microssegundo para apagar o dado armazenado (repare que a unidade é microssegundo, ou milionésimo de segundos, e não milissegundo, ou milésimo de segundo, usualmente adotado para medir o desempenho de discos magnéticos). Este tipo de memória flash tem sido usado até o momento apenas em aplicações militares, industriais e corporativas. Pois os SSD da EMC/STEC são do tipo híbrido, ou “cached flash”: usam uma mistura de memórias DDR com memórias flash tipo SLC. Acontece que memórias flash e DDR têm relativamente pouco em comum. Ambas armazenam dados ou informações e, naturalmente, permitem que sejam recuperados. Mas, além da limitação do número de operações de escrita de que padece a memória flash e à qual não estão submetidas as memórias DDR, há outras diferenças consideráveis. As memórias flash, usadas amplamente em diversos dispositivos eletrônicos além dos computadores (como câmaras de vídeo e jogos eletrônicos) são conhecidas por sua robustez, porém apresentam um desempenho apenas medíocre. Já as memórias DDR, usadas em servidores corporativos e máquinas de grande capacidade de processamento, se destacam justamente por seu magnífico desempenho. Mas a diferença mais importante entre estes dois tipos de memória é a natureza essencialmente volátil da memória DDR, enquanto a característica mais marcante da memória flash é justamente o fato de não ser volátil. Nesta altura dos acontecimentos a maioria de vocês deve estar pensando que, afinal se, conforme a própria definição da SNIA, um dispositivo SSD “se comporta como um drive de disco rígido (HDD) virtual e aparece para o dispositivo que o hospeda como se fora um drive de disco”, ou seja, se pode substituir, por exemplo, um disco magnético, deve ser necessariamente um dispositivo de memória de natureza não volátil. Afinal, o que caracteriza a memória secundária é exatamente o fato de preservar indefinidamente (ou quase, como bem sabe e jamais esquecerá quem já teve um disco rígido danificado e não tinha cópia de segurança de seus dados) as informações neles gravadas. Então, onde entram as memórias DDR? Pois é. Elas não somente entram como fazem parte essencial da arquitetura dos SSD recém lançados pela STEC e EMC. Vamos ver como a coisa funciona.
Veja, na Figura 1 (obtida da apresentação de João Bonassis no EMC Forum 2008), a placa de circuitos internos de um SSD EMC/STEC. Note que, ao contrário dos discos rígidos magnéticos convencionais, não se trata de uma vista da face inferior do dispositivo, mas de seu interior, ou seja, daquilo que aparece quando se remove a cobertura metálica (que aparece na Figura 1 da primeira coluna desta série). Comecemos o exame pelo lado direito, onde aparece um conjunto de 16 grandes circuitos integrados (“chips”) identificados como “Non-Volatile SLC NAND Flash”. Estes são justamente os módulos de memória flash tipo SLC (o acrônimo NAND refere-se à configuração interna dos chips de memória). Eles são capazes de armazenar toda a capacidade do SSD (que, hoje, pode ser de 73 GB ou 146 GB “verdadeiros” – ou seja: múltiplos de 1024 Bytes – que corresponde às capacidades de 80 GB e 160 GB “comerciais” – ou seja, múltiplos de 1.000 Bytes). Agora repare: imediatamente ao lado deste conjunto aparece outro, fisicamente menor, formado por duas linhas de 16 “chips” cada, identificado como “DDR SDRAM w/ SPS” (veja o “balão” inferior do lado esquerdo da figura; SPS significa “Stand-by Power Supply”, ou “suprimento de energia de emergência”). Este conjunto é formado por módulos de memória volátil, tipo dinâmica síncrona (SDRAM) de dupla taxa de transferência de dados (DDR), dotados de um suprimento emergencial de energia. A figura não diz, mas digo eu: este conjunto de módulos SDRAM DDR tem a mesma capacidade de armazenamento do conjunto de módulos de memória flash descrito no parágrafo anterior e é ele que funciona, na prática, como dispositivo de armazenamento de massa principal durante a operação do SSD (o outro logo veremos para que serve, se é que vocês já não perceberam...) Que mais o SSD contém? Bem, além de um número razoável de pequenos circuitos auxiliares, destacados na figura, há pouca coisa. No centro do lado esquerdo da figura há dois grandes CIs. Ambos são módulos de memória flash que contêm rotinas operacionais e de controle. Um deles, identificado como “Controller Logic”, contém toda a lógica de controle do SSD que rege a comunicação com o “mundo exterior” (este CI cumpre as funções dos circuitos encontrados nas placas controladoras situadas na base dos discos magnéticos comuns). O outro, identificado como “Firmware”, contém as rotinas que fazem com que os dois grandes conjuntos de módulos de memória à direita se comportem como uma unidade de “disco”: o protocolo de interface com o sistema, o gerenciamento dos módulos de memória e todas as rotinas de detecção e correção de erros. Á esquerda destes dois CIs, no centro da parte traseira do SSD (que fica no lado esquerdo da figura) aparece um grande conector e seus CIs. Trata-se de uma porta dupla para conexão de um terminal de cabo de fibra ótica com taxa de transmissão de 2 GB/s. E, finalmente, nas proximidades dos módulos de memória DDR, situam-se o conjunto de canais de entrada/saída, identificados como “Multiple Parallel I/O Channels”. E isto é tudo. Segundo Bonassis, o que mais impressiona a quem tem nas mãos um desses SSD é sua leveza comparado ao peso de um disco magnético convencional. O que não é de admirar, já que no SSD não há partes metálicas, eixos ou motores elétricos. Há apenas uma placa de circuito impresso e alguns circuitos integrados. Pois bem: até agora falamos de fatos. Fatos citados por Bonassis na entrevista ou disponíveis na apresentação que usou na palestra. Mas, daqui em diante, parte são fatos (os dados sobre o desempenho dos SSD, também disponíveis na apresentação) e parte conjecturas (referentes ao funcionamento do dispositivo e ao papel representado por seus componentes, que não foi explicitado pela EMC). Porém é certo que, após examinar a Figura 1, não se precisa de grande dose de perspicácia para deduzir como o SSD da EMC/STEC funciona. Olhe novamente para a figura 1 e perceba: ela contém dois grandes conjuntos de módulos de memória, ambos de mesma capacidade, capacidade esta que é igual à capacidade nominal do dispositivo de armazenamento. Um destes conjuntos é constituído de memória não volátil tipo flash. O outro de memória volátil DDR SDRAM dotada de suprimento de energia de emergência que, mesmo que a alimentação elétrica do SSD seja interrompida, garante por certo período que o conteúdo desta memória SDRAM não seja perdido. Além disso, há circuitos de controle e interface (que, presumivelmente, também recebem energia emergencial por algum tempo). Agora basta pensar um pouco para deslindar o mistério. Mas qual era mesmo o mistério? Reavivando nossa memória: como um dispositivo de armazenamento constituído essencialmente de memória tipo flash SLC, que padece de um limite de operações de escrita em suas células, consegue suportar pelo menos cinco anos de escrita contínua e oferecer uma expectativa de vida útil superior à dos discos magnéticos convencionais? (para mais detalhes, releia o final da coluna “Discos de Estado Sólido (SSD) I: os novos discos da EMC”). Alguns parágrafos acima vimos que os SSD da EMC/STEC são do tipo híbrido, conhecido por “cached flash”. “Cache”, como sabemos todos (aos que não sabem sugiro uma consulta à coluna < http://www.bpiropo.com.br/tz961125.htm > “Memórias XIV: Escondendo dados”, da série “Trilha Zero”, publicada em O Globo de 25/11/1996; é velha de mais de dez anos mas o conceito de cache não mudou muito de lá para cá), é um engenhoso artifício que consiste em interpor um trecho de memória de alto desempenho (o “cache”) entre memória mais lenta e o dispositivo que dela solicita dados, mantendo no cache cópias de alguns trechos da memória mais lenta. A cada nova solicitação de leitura de dados o sistema de controle da memória verifica se há no cache uma cópia dos dados solicitados. Havendo, esta cópia é imediatamente fornecida e o processamento segue sem delongas. Não havendo, o acesso é feito à memória mais lenta, aquele novo trecho é copiado no cache, o dado é enviado a quem o solicitou e a vida continua. Os algoritmos de acesso ao cache foram aperfeiçoados ao longo dos anos e hoje se pode garantir uma porcentagem de “acertos” (ou seja, de acessos cuja cópia pode ser encontrada no cache) igual ou superior a 98%. Quando dou aula sobre memória cache costumo perguntar aos alunos qual a menor e a maior capacidade possível para o cache. Eles não demoram a responder que a menor capacidade possível é uma única posição da memória mais lenta. E a maior é um cache de mesma capacidade desta memória. E não demoram a concluir que ambos são imprestáveis, já que no primeiro caso pode-se garantir que o próximo acesso à memória não terá uma cópia no cache, o que torna o cache inútil, e no segundo pode-se garantir que todo acesso à memória mais lenta terá uma cópia no cache e, neste caso, inútil será a própria memória. Pois bem: o que acontece nos discos SSD da EMC/STEC é muito parecido com a segunda situação descrita: um cache de mesma capacidade que a memória da qual ele guarda uma cópia. Mas que não faz dela um componente inútil, muito pelo contrário. Pense bem: durante o funcionamento normal do SSD, todas as leituras e escritas são feitas nos módulos de memória DDR SDRAM. Na verdade é esta memória que constitui o SSD propriamente dito. E como memórias SDRAM não padecem de quaisquer limitações de número de escritas, podem receber tantos acessos quantos necessários, inclusive aqueles devidos ao uso da memória virtual, arquivos temporários, arquivos do sistema, o diabo. Tudo feito exclusivamente em memória SDRAM e por anos e anos a fio. Mas ocorre que memórias SDRAM são de natureza essencialmente volátil. E dispositivos de armazenamento externos ou secundários, como os SSD, devem garantir a preservação dos dados mesmo quando “desligados”, ou seja, quando o suprimento de energia é interrompido. Pois é então – e, tanto quanto eu pude perceber, somente então – que entram em cena as memórias não voláteis tipo flash dos SDD da EMC/STEC. Assim que o sistema comanda o desligamento de um desses dispositivos, seus circuitos internos providenciam que todo o conteúdo dos módulos de memória volátil SDRAM seja copiado para os de memória não volátil flash (lembrem: são de mesma capacidade, portanto pode-se manter em memória flash uma cópia integral do conteúdo da memória SDRAM), onde permanecerão em segurança durante todo o tempo em que o SSD estiver “desligado”, ainda que por anos a fio. Na verdade, considerando que a limitação das memórias flash afeta apenas o número de escritas (e não o de leituras), eu não duvido que dentre as rotinas armazenadas nos CIs de controle do SSD exista alguma que, antes de efetuar a cópia, compare o conteúdo a ser copiado com o previamente existente na célula de memória flash e somente efetue a cópia se forem diferentes, o que reduz significativamente o número de escritas. Mas e se “faltar energia”? Bem, é difícil imaginar que um incidente como este venha a ocorrer em um sistema de armazenamento de dados corporativo de grande porte mas, sabe-se lá, vai que alguém decida jogar um Boeing lotado em cima do prédio? (se eu escrevesse isso há dez anos, vocês achariam a hipótese ridícula, bem sei; mas nos tempos atribulados em que vivemos tudo pode acontecer – menos, é claro, a perda de dados). Pois é por isso que os chips de memória SDRAM dos SSD são dotados de suprimento de energia de emergência (SPS) independente de qualquer fornecimento externo. Um suprimento que garante o provimento de energia por um período curto, mas suficiente para que o conteúdo dos módulos de memória DDR seja transferido para os de memória flash mesmo em caso de corte abrupto de energia. Pois agora temos uma visão razoável de como a coisa funciona: um dispositivo de armazenamento secundário feito inteiramente de memória DDR, dotado de rotinas de detecção e correção de erros, que pode manter uma cópia integral de seu conteúdo em módulos de memória flash por anos a fio mesmo que não alimentado por energia. Algo que combina a rapidez dos acessos a memória SDRAM com a segurança da preservação de dados da memória flash. Um negócio danado de engenhoso. Como eu disse, tudo isto são conjecturas e não informações supridas pelo João Bonassis ou pelo material distribuído pela EMC. Mas faz todo o sentido e combina perfeitamente com os componentes mostrados na figura 1. Ou seja: si non é vero, é benne trovato... O resultado? Veja na figura 2.
A figura, uma adaptação de um dos slides da apresentação de Bonassis, representa a comparação do desempenho – avaliado pelo tempo de resposta – de um conjunto de oito dispositivos de armazenamento de estado sólido (SSD) EMC/STEC com o de dois conjuntos de igual número de discos rígidos magnéticos de alto desempenho, um deles com discos SATA de 7.200 RPM, outro, mais rápido, de discos com conexão de fibra ótica de 15.000 RPM. A diferença beira o absurdo (é verdade que, para efetuar a comparação, foram inibidas as leituras do cache dos discos magnéticos, já que a comparação entre leituras no cache com leituras no SSD produziria resultados equivalentes pois se estaria comparando leituras e escritas em SDRAM; mas ainda assim a coisa impressiona). Note que, com o aumento do número de operações de entrada/saída por segundo, o tempo de resposta dos discos magnéticos aumenta exponencialmente até a casa da centena de milissegundos, enquanto o do dispositivo SSD se mantém quase estável na faixa de poucos milissegundos. Um assombro. Por enquanto tudo isso é novidade e causa espanto. Mas desconfio que, pouco a pouco, com a evolução tecnológica das memórias flash, com a disseminação de seu uso nos sistemas de armazenamento de massa, com o aumento da capacidade de seus módulos e a conseqüente queda de preços, dentro de algum tempo o que causará espanto será encontrar um disco magnético mesmo em um micro de mesa de um usuário doméstico. É esperar para ver... B. Piropo |