SSD: uma pausa para o barramento

Como vimos na coluna anterior, os SSD (“discos” de estado sólido) são dispositivos de armazenamento de massa onde os dados permanecem armazenados em bancos de memória não volátil e não permanente tipo flash. São dispositivos de memória externa (ou secundária), aquela que se situa fisicamente fora da placa-mãe do computador. Funciona então como um repositório de dados que, para serem utilizados, devem antes ser transportados para a placa-mãe, onde estão os componentes responsáveis pelo processamento destes dados. Mais especificamente, devem ser transportados para a memória RAM, ou memória primária, formada por módulos de memória volátil que podem ser diretamente acessados pela UCP (Unidade Central de Processamento). Usando uma analogia hidráulica, os SSD funcionam como tanques ou reservatório que armazenam água.

Sabemos que dados são manejados (processados, transportados, armazenados) codificados em números expressos no sistema binário, ou seja, de base dois, que usa apenas dois algarismos, ou dígitos binários (bits): zero e um. Por isto é fácil armazená-los em células de memória, constituídas essencialmente por uma matriz de capacitores que podem assumir dois estados: carregados e descarregados (aos puristas: as células são constituídas por transistores, mas é a capacitância interna destes transistores que é usada para indicar o estado da célula). Um capacitor carregado armazena o bit um, descarregado o bit zero. É simples assim.

Mas como transportar esses dados? Transferi-los ou copiá-los de um componente para outro? Mais especificamente: como levar para a memória RAM os dados armazenados na memória secundária? Ainda usando a analogia hidráulica, como transportar a água do reservatório para o local onde será usada?

Uma solução seria usar uma mangueira por onde a água escoaria. No caso do transporte de dados no computador, esta mangueira seria aquilo que denominamos “barramento”.

A coluna de hoje vai discutir alguns tipos de barramento e as noções básicas para que possamos entender seu funcionamento.

Tecnicamente, barramento é um conjunto de condutores elétricos e seus dispositivos de controle que interligam dois componentes de um sistema. Os dados são transportados através de seus condutores elétricos usando pulsos de corrente elétrica, uma tensão aplicada muito brevemente ao condutor. Há tensão? Bit “um”. Não há? Bit “zero”. Não cabe aqui entrar em detalhes sobre o assunto, mas vou dar uma ideia muito simplificada do funcionamento de um barramento.

Há dois tipos de barramento: serial e paralelo. Os barramentos seriais usam dois condutores para dados (além de mais dois para alimentação elétrica, um para fornecer uma tensão constante, outro para o aterramento). Dos condutores de dados, um deles, também está ligado à “terra” e serve como referência de tensão zero. O outro, a “linha de dados”, transporta os bits um após o outro, sob a forma de pulsos de corrente em série (daí o nome). É claro que para que isto funcione é preciso que haja um ritmo, ou cadência regular, como referência para a leitura dos bits, senão, como saber se a ausência de tensão na linha de dados corresponde a um bit “zero” ou ao intervalo entre dois bits “um”? Quem estabelece este ritmo é um cristal de quartzo que emite pulsos em uma frequência absolutamente constante, a “frequência do barramento”. As leituras são perfeitamente sincronizadas com estes pulsos, o que permite distinguir entre os bits “um” e “zero” que vêm “enfileirados” pela linha de dados. No destino, estes bits são contados, agrupados de oito em oito para formarem os bytes, e processados. Portanto, para transportar um byte são necessários pelo menos oito ciclos de barramento (ciclo do barramento é o tempo que separa dois pulsos sucessivos do cristal; o “pelo menos” deve-se ao fato de que em alguns barramentos seriais são emitidos pulsos extra para controle e delimitação dos bytes). De qualquer forma, o número de bytes transportados na unidade de tempo (“fluxo de dados”) por um barramento serial depende exclusivamente da frequência do barramento.

Já o barramento paralelo é constituído de um conjunto de linhas de dados paralelas e seus respectivos aterramentos e alimentação elétrica. Para enviar um bit “um” (ou zero), aplica-se (ou não) um pulso de corrente elétrica na origem de cada uma das diversas linhas. No destino há sensores que captam a presença ou ausência deste pulso. Se presente, foi transmitido o bit “um”. Se ausente, o bit “zero”.

É evidente que isto só funciona se todos os condutores forem “lidos” exatamente ao mesmo tempo. Quem garante esta simultaneidade é, também, um cristal que determina a “frequência do barramento”. A leitura dos estados das linhas do barramento é sincronizada com os pulsos emitidos pelo cristal. Então, o fluxo de dados através do barramento paralelo depende não apenas de sua frequência como também do número de linhas de dados. Um barramento com oito linhas paralelas transmite um byte (oito bits) por ciclo, um com 32 linhas transmite quatro bytes por ciclo e assim por diante.

Voltemos agora à nossa analogia hidráulica, na qual a memória secundária funciona como um tanque ou reservatório e os barramentos funcionam como mangueiras que transportam a água. Acontece que há reservatórios e reservatórios. Um caminhão tanque usado pelos bombeiros para apagar um incêndio tem características bastante diferentes da caixa d’água usada para regar um jardim. Da mesma forma, há mangueiras e mangueiras. E se você conectar a mangueira de regar jardim no caminhão tanque, talvez até apague o incêndio. Mas vai demorar um bocado…

Algo parecido ocorre com os barramentos. Há de diversos deles, cada um desenvolvido para um tipo de utilização.

Hoje vamos examinar apenas os que ainda estão sendo adotados para uso geral. Depois veremos os empregados especificamente na conexão da memória secundária com a placa-mãe.

Para começar: o que diferencia um tipo de barramento do outro?

O primeiro ponto é o fato de ser serial ou paralelo. E, neste último caso, o número de linhas de dados. Depois, o tipo de conector usado para ligar eletricamente os condutores elétricos ao dispositivo externo e à placa-mãe (para evitar que se conecte um dispositivo concebido para usar um tipo de barramento em outro de diferentes especificações). Além disso, as características elétricas podem ser diferentes. E, finalmente mas não menos importante, a frequência de operação do barramento e, sobretudo, o “protocolo”.

Um protocolo de comunicações (e o barramento é um elemento de comunicação) consiste em um conjunto de regras para o intercâmbio de dados e informações entre dois dispositivos, assim como comandos que podem ser trocados entre eles. Como veremos adiante, para a conexão de SSDs, este é um ponto crucial.

 

Dos correntemente em uso, o barramento mais antigo é o PCI, acrônimo de “Peripheral Component Interconnect”. É um barramento de uso geral desenvolvido pela Intel para a linha PC. Em geral a conexão com a placa-mãe é feita por uma placa de circuito impresso inserida diretamente em um dos conectores PCI da placa-mãe (veja Figura 1). O barramento PCI dispõe de 32 linhas de dados e opera com uma frequência de 33,3 MHz, portanto seu fluxo de dados é de 133 MB/s (MegaBytes por segundo; 32 linhas paralelas transportam 4 bytes simultaneamente, que multiplicados pela frequência produz este fluxo). Pode ser usado para placas controladoras de rede, placas de som, modems, sintonizadores de TV e outros, inclusive algumas placas de vídeo mais lentas. Está se tornando obsoleto, já que grande parte destes dispositivos (rede, som e vídeo, principalmente) foram integrados à placa mãe. Por isso a tendência do PCI é desaparecer. Raramente é usado para dispositivos de armazenamento de massa e jamais para SSDs.

Então vamos aos barramentos usados para conectar dispositivos de memória secundária. Mas antes de discutirmos a capacidade das mangueiras, vamos ver quanta água o reservatório é capaz de descarregar por sua válvula de saída, ou seja, com que rapidez os discos (neste caso, os magnéticos) podem fornecer dados.

Os mais rápidos (velocidade de rotação dos discos igual ou superior a dez mil rotações por minuto) conseguem transferir dados da superfície dos discos para o cache de memória situado em seu controlador com uma taxa de transferência (ou fluxo de dados) de 124 MB/s. Do cache para a memória RAM o fluxo pode atingir “rajadas” de até 600 MB/s, mas para isto é necessário que os dados a serem lidos já estejam no cache, o que nem sempre ocorre.

Pois bem: para uso por dispositivos de armazenamento de massa (memória secundária) o barramento mais antigo ainda em uso (mas raramente encontrado, já que tornou-se obsoleto) é o hoje conhecido por PATA (Parallel AT Attachment), um barramento paralelo como o nome indica. Originalmente era denominado IDE, de “Integrated Drive Electronics” ou eletrônica integrada ao dispositivo, significando com isto que toda a eletrônica de controle, que até então era integrada à uma placa controladora encaixada em um “slot” da placa-mãe, a partir de então passava a ser parte integrante do próprio disco. Por isto os cabos que interligam o disco PATA com a placa-mãe se encaixam diretamente em contatos elétricos (pinos) situados nesta placa (veja Figura 2). O padrão PATA padecia de diversas limitações, sendo a principal delas o fato de que o número de dispositivos conectados ao computador (além de discos magnéticos, ele também aceitava acionadores de discos óticos como CDs e DVDs) era limitado a quatro. E a taxa de transferência era relativamente baixa: cerca de 100 MB/s entre disco e cache. Tanto quanto eu saiba, jamais foram fabricados discos SDD com interface PATA.

 

Fonte: http://www.techtudo.com.br/artigos/noticia/2013/09/ssd-uma-pausa-para-o-barramento.html