domingo, 18 de abril de 2010

Formatos de Memória Flash



Como de praxe, a popularização das memórias Flash deu início a uma guerra entre diversos formatos de cartões, alguns abertos e outros proprietários:

CompactFlash: Excluindo os jurássicos cartões de memória PCMCIA, o primeiro formato de cartão foi o CompactFlash (CF), onde é utilizada uma interface muito similar à interface IDE usada pelos HDs, com nada menos que 50 pinos. Aqui temos um cartão CF aberto:



De um dos lados temos o chip controlador e um dos chips de memória e no outro temos espaço para mais dois chips, totalizando até 3 chips de alta capacidade. Graças a esse design, os cartões CF oferecem boas taxas de transferência, mas em compensação são caros e volumosos, o que explica a decadência do formato.

Os cartões CompactFlash ainda são produzidos e sobrevivem em alguns nichos. Eles são usados por algumas câmeras da Canon, voltadas para o segmento profissional (onde a boa taxa de transferência dos cartões CF presta bons serviços) e em diversos tipos de sistemas embarcados. Devido à similaridade entre os dois barramentos, existem adaptadores que permitem instalar cartões CF numa porta IDE, criando uma espécie de SSD de baixo custo (porém também de baixo desempenho).

SmartMedia: Em 1995 a Toshiba lançou o formato SmartMedia (SM), um formato muito mais simples, onde o chip de memória é acessado diretamente, sem o uso de um chip controlador. O chip de memória é encapsulado dentro de um cartucho plástico, com apenas 0.76 mm de espessura e os contatos externos são ligados diretamente a ele. Nesta foto você pode ver um cartão SmartMedia em comparação com um cartão MMC e um Memory Stick:



Apesar de finos, os cartões SM eram relativamente grandes, o que levou os fabricantes a abandonarem o formato, o que deu origem aos cartões xD, MMC, SD e Memory Stick.

Percebendo o nicho criado pela confusão, os fabricantes de leitores de cartões USB passaram a oferecer suporte para todos os formatos simultaneamente. Isso foi possível graças ao desenvolvimento de chips controladores "tudo em um", capazes de converter cada um dos protocolos nos comandos suportados pelo padrão USB. Existem também os leitores incluídos nos notebooks, que lêem cartões SD e Memory Stick. Do ponto de vista do sistema operacional, eles são diferentes dos leitores USB, pois são ligados ao barramento PCI (ou PCI Express) ao invés de usarem o barramento USB e a maioria das funções são executadas via software (como em um softmodem), graças ao driver instalado.

Cartões XD: O próximo da lista é o xD, um formato proprietário, usado em câmeras da Olympus e da Fujifilm. Eles são relativamente rápidos se comparados com os SmartMedia e com os cartões MMC, mas são bem mais lentos que os cartões SD usados atualmente. Existiram duas atualizações para o formato: o "xD M" (que permitiu o desenvolvimento de cartões com mais de 512 MB) e o "xD H" (que melhorou a velocidade de transferência). Apesar disso, ambos acabaram sendo pouco usados, devido à concorrência dos cartões SD.



Assim como nos cartões SM, os contatos são ligados diretamente no chip de memória, sem o uso de um chip controlador. Isso em teoria baratearia os cartões, mas devido à pequena demanda (e consequentemente aos baixos volumes de produção), os cartões xD são atualmente bem mais caros. Isso acaba prejudicando a competitividade das câmeras dos dois fabricantes, que perdem mercado por insistirem no padrão.


Cartões MMC: O MMC é um padrão "quase aberto", onde é necessário pagar uma taxa inicial para obter as especificações e mais um valor anual à MMC Association, além de seguir um conjunto de restrições. Os cartões MMC possuem exatamente as mesmas dimensões dos cartões SD atuais e são compatíveis com a maior parte das câmeras e outros dispositivos, além de utilizarem o mesmo encaixe que eles nos adaptadores. As únicas diferenças visíveis são que os cartões MMC são um pouco mais finos (1.4 mm, contra 2.1 mm dos SD) e possuem apenas 7 pinos, enquanto os SD possuem dois pinos extras, totalizando 9.



O maior problema é que os cartões MMC são lentos, pois utilizam um antiquado barramento serial para a transferência de dados, que transfere um bit por vez a uma frequência máxima de 20 MHz. Em teoria, os cartões MMC poderiam transferir a até 2.5 MB/s, mas a maioria dos cartões ficam muito longe dessa marca. Os cartões mais antigos utilizam um modo de transferência ainda mais lento, limitado a 400 KB/s.

Como não existe praticamente nenhuma diferença de custo entre produzir um cartão MMC ou SD, os fabricantes migraram rapidamente para o padrão mais rápido, fazendo com que o MMC entrasse em desuso. Mais recentemente foram lançados os padrões RS-MMC, MMC Plus e SecureMMC, versões atualizadas do padrão MMC, que visam reconquistar seu lugar no mercado.

Chegamos então aos dois padrões que sobreviveram à guerra: o SD, que é o padrão "parcialmente aberto", apoiado pela grande maioria dos fabricantes e o Memory Stick, o padrão proprietário da Sony.

Memory Stick: Embora tenha conseguido atingir uma sobrevida surpreendente, o Memory Stick ficou restrito aos produtos da Sony e por isso seu futuro é incerto. Além do padrão original, existem também os formatos Memory Stick Duo, Pro, Pro Duo, Micro e Pro-HG.

Tanto o padrão original quanto o Memory Stick Duo estão limitados a 128 MB, por isso ficaram rapidamente obsoletos e são usados apenas por dispositivos antigos, fabricados até o início de 2003. A principal diferença entre os dois formatos é o tamanho reduzido dos cartões Memory Stick Duo, que são um pouco menores que os cartões SD.

Em seguida temos os cartões Memory Stick Pro e Memory Stick Pro Duo (ambos lançados em 2003), que substituem diretamente os dois padrões anteriores. Além do melhor desempenho, eles trouxeram um padrão atualizado de endereçamento, que permite o desenvolvimento de cartões de até 32 GB. Aqui temos uma foto mostrando-os.



O Memory Stick Micro (ou M2) é um formato miniaturizado, desenvolvido para uso em celulares (mais especificamente nos Sony Ericsson), que mede apenas 1.5 x 1.2 cm. Os cartões normalmente são vendidos em conjunto com um adaptador, que permite usá-los em qualquer dispositivo ou leitor que use cartões Memory Stick Pro.



Concluindo, temos o Memory Stick Pro-HG, que utiliza um novo barramento de dados, que transmite 8 bits por ciclos a uma frequência de 60 MHz, o que permite uma taxa de transferência de até 60 MB/s (contra 20 MB/s dos padrões anteriores). Embora na prática a taxa de transferência dependa mais dos chips de memória Flash usados, o barramento mais rápido coloca os cartões Pro-HG em vantagem em relação aos cartões SD, já que eles estão limitados a um máximo de 20 MB/s pelo barramento usado.

Cartões SD: Finalmente, temos os cartões SD (Secure Digital), que acabaram se tornando o formato dominante. Como o nome sugere, os cartões SD oferecem um sistema de proteção de conteúdo (o CPRM), que é implementado diretamente no chip controlador. Ele se destina a atender o lobby das gravadoras, oferecendo uma forma de "proteger" arquivos de áudio e outros tipos de conteúdo contra cópias não autorizadas. Os cartões Memory Stick implementam um sistema similar (o Magic Gate), mas felizmente ambos são pouco usados.

Existem três formatos de cartões SD. Além do formato padrão, temos os cartões miniSD e microSD, versões miniaturizadas, que são eletricamente compatíveis com o padrão original e podem ser encaixados num slot para cartões SD regulares usando um adaptador simples.

Os cartões SD suportam 3 modos de transferência. O 4 bits mode é o modo "padrão", onde o cartão transfere 4 bits por ciclo, a uma frequência de até 50 MHz, resultando em taxas de transferência de até 25 MB/s (desde que os chips de memória usados acompanhem, naturalmente). O segundo é o 1 bit mode, onde é transferido um único bit por ciclo, a uma frequência de no máximo 20 MHz. Este modo é usado para manter compatibilidade com os cartões MMC. É graças a ele que você pode usar cartões MMC em câmeras e leitores para cartões SD e vice-versa. Finalmente, existe o modo SPI (ainda mais lento), que é utilizado por algumas câmeras antigas e também em diversos tipos de dispositivos embarcados.

É por causa dos três modos de operação que um mesmo cartão SD pode ser acessado a velocidades bem diferentes de acordo com o dispositivo onde ele é usado. Muitas câmeras antigas que permitem acessar o conteúdo do cartão quando ligadas a uma porta USB transferem a velocidades muito baixas, muitas vezes inferiores a 300 KB/s. O driver "sdhci" (no Linux), que dá suporte aos leitores de cartões incluídos em notebooks, por exemplo, é (pelo menos até o Kernel 2.6.21) limitado ao modo SPI, por isso é bastante lento em relação ao driver Windows, que é capaz de utilizar o modo 4 bits. Ou seja, o leitor do seu notebook funciona, mas a uma velocidade muito baixa e com uma grande utilização do processador.



O modo SPI é o preferido pelos desenvolvedores de sistemas embarcados e drivers open-source, pois ele é muito simples e por isso pode ser emulado via software, sem a necessidade de usar um controlador adicional. No modo SPI 4 são usados 4 pinos do cartão: um para enviar o sinal de clock, outro para enviar comandos, o terceiro para selecionar qual chip dentro do cartão será acessado e o último para transferir dados, um bit de cada vez. Desde que você possa controlar o uso dos 4 pinos, é fácil escrever uma função ou driver para acessar o cartão.

O modo SPI é o mais lento, mas é suficiente para muitas aplicações. Imagine o caso de um sensor de temperatura que usa o cartão apenas para armazenar um log das variações, gravando alguns poucos bits por vez, por exemplo.
Concluindo, temos também o formato "SD Duo", um nome mercadológico para cartões SD que podem ser ligados diretamente em uma porta USB, assumindo também a função de pendrive. Este padrão foi originalmente criado pela Sandisk e depois copiado por outros fabricantes. Eles possuem uma dobradiça ou protetor removível, que esconde um conector USB:



Estes cartões utilizam um controlador dual, que além de ser um controlador SD, incorpora também as funções de controlador USB. Graças a isso, o fabricante pode colocar os contatos normais do cartão SD de um lado, e os contatos da porta USB do outro, criando um design muito engenhoso. Apesar de práticos, eles acabaram não pegando, já que os cartões SD regulares foram logo inteiramente substituídos pelos microSD.

MiniSD e MicroSD: Embora pequenos em relação aos cartões CompactFlash e SmartMedia, os cartões SD ainda são grandes demais para algumas aplicações, sobretudo para uso em celulares e nas câmeras mais compactas. Para solucionar o problema foram criados dois formatos miniaturizados, o miniSD e o microSD, que são menores e mais finos.



O miniSD mede 2.15 x 2.0 cm, com apenas 1.4 mm de espessura, enquanto o microSD mede apenas 1.5 x 1.1 cm, com apenas 1 mm de espessura, o que fez com que ele se tornasse rapidamente o formato mais usado, substituindo todos os anteriores.

Além da miniaturização, outro segredo para a popularização do microSD é o custo. Os cartões são produzidos diretamente em torno dos chips de memória, sem o uso de nenhum circuito adicional. O controlador é incluído diretamente dentro do chip e os contatos do cartão são ligados diretamente em contatos do chip de memória, que é então acessado diretamente pelo dispositivo no qual ele é encaixado. Você pode pensar nos cartões microSD como chips de memória flash avulsos, que você pode usar onde quiser.

Em comparação, em um pendrive é necessário incluir também um chip controlador (que faz a interface entre o chip de memória e o controlador USB), além da placa de circuito, o cristal de clock e outros componentes, um conjunto que acaba saindo mais caro:



Como toda nova tecnologia, os cartões microSD eram inicialmente mais caros, já que poucos os fabricantes os produziam. Entretanto, conforme o volume de produção foi crescendo, os preços foram caindo vertiginosamente. Cartões de 8 GB que custavam (preços do exterior) mais US$ 100 no início de 2008 caíram para US$ 30 no início de 2009 e em seguida para US$ 15 (ou até menos) no início de 2010 (pesquise em lojas como a dealextreme.com), preços bem mais baixos que pendrives da mesma capacidade.

Na maioria dos casos, o cartão acompanha um adaptador SD. Como os dois padrões são compatíveis eletricamente, o adaptador é apenas um dispositivo passivo, muito barato de se produzir. Existem também adaptadores para mini-SD e Memory Stick Duo, sem falar nos leitores USB, que transformam o cartão microSD em um mini-pendrive:



Você pode se perguntar como é possível que os cartões microSD sejam tão compactos, já que qualquer cartão SD precisa de pelo menos dois chips (o chip de memória e o controlador) e num cartão microSD mal temos espaço para um. A resposta está no die-stacking, tecnologia que comentei há pouco. Num cartão microSD temos um ou mais chips de memória e o próprio controlador "empilhados", formando um único encapsulamento. Ele é instalado pelo fabricante numa placa de circuito que contém os contatos externos e em seguida selado dentro da cobertura externa. O mesmo se aplica aos cartões Memory Stick Micro, que possuem dimensões similares.
Não existe como desmontar um microSD e, mesmo que você quebre um no meio, não vai conseguir diferenciar os chips, pois eles são produzidos usando wafers muito finos (até 0.025 mm de espessura nos mais recentes) e juntados de forma muito precisa.

SDHC: Além do formato, outra questão importante sobre os cartões SD é a questão da capacidade. Inicialmente, o padrão de cartões SD previa o desenvolvimento de cartões de até 2 GB, formatados por padrão em FAT16. Você pode reformatar o cartão em NTFS ou em outros sistemas de arquivos, mas, nesse caso, a maior parte das câmeras e outros dispositivos deixam de conseguir acessá-lo, embora você ainda consiga acessar o cartão normalmente se conectá-lo a um PC usando um adaptador USB.

Quando o limite de 2 GB foi atingido, os fabricantes passaram a criar extensões para permitir a criação de cartões de 4 GB, usando hacks para modificar o sistema de endereçamento e passando a usar o sistema FAT32 (no lugar do FAT16) na formatação. Estes cartões de 4 GB "não-padronizados" são compatíveis com a maioria dos dispositivos antigos, mas você pode enfrentar problemas diversos de compatibilidade, já que eles não seguem o padrão.

Para colocar ordem na casa, foi criado o padrão SDHC (Secure Digital High Capacity), onde a tabela de endereçamento foi expandida e o sistema de arquivos FAT32 passou a ser oficialmente usado. Todos os cartões que seguem o novo padrão carregam o logotipo "SDHC" ou "microSDHC" (que permite diferenciá-los dos cartões de 4 GB "não-oficiais") e trazem um número de classe, que indica a taxa de transferência mínima em operações de escrita. Veja um exemplo de cartão com o logotipo:



Os cartões "Class 2" gravam a 2 MB/s, os "Class 4" a 4 MB/s, os "Class 6" a 6 MB/s, e assim por diante. O mesmo se aplica aos cartões miniSD e microSD. Note que a numeração não diz nada sobre a velocidade de leitura, mas ela tende a ser proporcionalmente maior.

O lançamento do padrão SDHC criou problemas de compatibilidade entre os novos cartões e aparelhos antigos, incluindo não apenas smartphones e câmeras, mas também leitores de cartões.

Para suportar o SDHC, é necessário que o dispositivo utilize um controlador compatível e (no caso dos smartphones), também, um firmware atualizado. Muitos smartphones lançados de 2006 em diante, que originalmente não oferecem suporte ao SDHC, podem se tornar compatíveis através de atualizações de firmware, mas, por outro lado, existem também muitos modelos recentes que realmente ficarão para sempre limitados aos cartões de 2 GB, uma limitação que tem se tornado cada vez mais severa conforme os cartões de maior capacidade caem de preço.

Em muitos casos, é possível utilizar os cartões de 4 GB não-padronizados nesses aparelhos (eles podem ser diferenciados dos SDHC facilmente, pois não possuem o logo), mas, nesse caso, é uma questão de tentativa e erro. É muito melhor confirmar a compatibilidade com o SDHC antes de comprar.
O padrão SDHC original prevê a criação de cartões de até 32 GB, que é o limite de tamanho para partições FAT 32 com clusters de 16 KB. Em 2009 foi anunciado o formato SDXC (SD Extended Capacity), que elevou o limite para 2 TB, adotando o uso do sistema de arquivos exFAT (o sucessor do FAT32, que utiliza um sistema de endereçamento de 64 bits).

A mudança do SDHC para o SDXC não será indolor, já que o novo sistema de endereçamento torna necessário o uso de controladores atualizados e mudanças nos softwares. Por outro lado, ela é uma atualização necessária, já que os cartões de 64 e 128 GB já estão no horizonte.

Nenhum comentário:

Postar um comentário