sexta-feira, 27 de setembro de 2013

SSD: localizando e quantificando o gargalo

Na coluna anterior examinamos os barramentos usados até recentemente para transporte de dados entre memória secundária e placa-mãe e prometemos que nesta coluna encerraríamos o tema “barramento” com a discussão do PCIe e voltaríamos para os SSD, que afinal são o tema desta série de colunas. Então vamos adiante.
Até recentemente o dispositivo que exigia maior fluxo de dados era o vídeo. Isto porque cada ponto colorido da tela usa quatro bytes para armazenar o número que identifica sua cor. Como uma tela de alta definição simples exibe 1.080 x 1.920 = 2,08 milhões de pontos (e há resoluções bem maiores) que devem ser renovados mais de 60 vezes a cada segundo, o fluxo de dados necessário para transportar as informações exigidas por esta resolução de vídeo é da ordem de 500 MB/s, suficiente para transportar os dados lidos/gravados nos discos magnéticos mais rápidos disponíveis na época em que o padrão PCIe foi estabelecido. Portanto, há um par de anos, quando se mencionava “barramento rápido”, se pensava imediatamente em controladores de vídeo. E, de fato, se você consultar o verbete da Wikipedia sobre o PCIe, verá que ele foi “projetado para substituir os antigos [barramentos]PCI, PCI-X e AGP” (estes dois últimos, que ainda não haviam sido mencionados nesta série, foram desenvolvidos especificamente para controladores de vídeo; AGP é o acrônimo de Advanced Graphics Port). Mas nada impede que sejam usados para outros fins, desde que aderentes ao protocolo estabelecido para o padrão (se não sabe o que é “protocolo”, consulte a coluna anterior).
Portanto, sendo o barramento mais rápido ora disponível, é natural que se pense nele para a conexão dos SDD. O problema é que isto exige algum tipo de adaptação. Já veremos como fazê-la. Mas primeiro temos de conhecer melhor o funcionamento do barramento PCIe.
GPC20130926_1Logotipo do PCIe (Foto: Reprodução/Internet)
Conceitualmente, o PCIe não passa de um barramento serial “full duplex” (não sabe o que é isto? Veja na coluna anterior e perceba como, embora aparentemente fora do contexto, as colunas que trataram dos barramentos são úteis para que possamos entender melhor os SSD). Usa ao todo seis condutores elétricos: quatro para dados (dois para aterramento, dois para transportar os bits, cada um em um sentido) mais dois para alimentação elétrica.
Mas há uma diferença essencial entre o PCIe e os demais barramentos seriais até agora examinados. Isto porque o que foi descrito no parágrafo anterior é apenas uma “pista” (“lane”) PCIe, ou seja, uma conexão tipo “ponto a ponto”. E o padrão PCIe permite que pistas sejam combinadas para conectar o mesmo dispositivo à placa-mãe, em uma configuração que pode ser entendida como um conjunto de pistas paralelas onde o fluxo de dados em cada uma delas é serial.
Parece complicado, mas não é (na verdade, é; mas toda a complexidade é gerenciada pelo “Root Complex”, um conjunto de circuitos que fazem a interface entre todas as pistas PCIe e os subsistemas de memória e processador e o usuário sequer precisa tomar conhecimento dela). O assunto é demasiadamente técnico para que caiba aqui uma explicação mais completa porém, muito simplificadamente, entenda o PCIe como uma conexão paralela formada por um conjunto de conexões seriais – o que parece, mas não é a mesma coisa que uma conexão paralela simples em virtude das diferenças de protocolo (o PCIe transmite dados encapsulados em “pacotes”) e da forma como a transmissão é controlada e endereçada. E se você acha essa explicação simplificada ainda demasiadamente complexa para seu nível de conhecimento técnico, esqueça tudo isto e lembre-se apenas que o barramento PCIe é uma combinação em paralelo de conexões seriais individuais denominadas “pistas”.
GPC20130926_2Conectores PCIe e PCI (Foto: Reprodução/Internet)
Então a conexão entre dois dispositivos via barramento PCIe pode consistir de qualquer número entre uma e 32 pistas, em geral ligadas ao mesmo conector.
Tipicamente, um controlador de vídeo usa 16 pistas e seria encaixado ou no segundo ou no quarto (de cima para baixo) conector amarelo na Figura 2 (da Wikipedia), com suas 16 pistas. O de cima usa quatro pistas, o terceiro de cima para baixo apenas uma pista e o de baixo não é um conector PCIe, é um simples conector paralelo PCI.
Para o fim que nos interessa, no que toca à arquitetura, protocolo e conectores do barramento PCIe, o que está nos parágrafos acima nos basta.
Agora vamos ao que mais importa: o fluxo de dados que, em suas sucessivas versões (ou “revisões” do padrão) o PCIe pode suportar.
Na primeira delas, divulgada em 2003, cada pista admite um fluxo de dados de 2,5 Gb/s. Como usa uma codificação 8b/10b (cada dez bits transmitidos correspondem a 8 bits de dados, ou seja, 1 byte (os outros dois bits servem para controlar a transmissão), isto corresponde a uma transmissão efetiva de 250 MB/s por pista. Então, o fluxo de dados transmitido por um conector PCIe 1.x ao vídeo, cuja placa controladora usa 16 pistas, corresponde à soma do fluxo destas 16 pistas, ou seja, 4 GB/s.
Em janeiro de 2007 o grupo de trabalho que estabelece e controla o padrão PCIe (conhecido por PCI-SIG) liberou a revisão 2.0, que usa o mesmo conector e mantém compatibilidade com as placas e controladoras que aderem a revisão 1.0. Mas admite o dobro da taxa de transmissão de dados. Assim, cada pista PCIe 2.0 transporta 5 Gb/s, o que corresponde a uma transmissão efetiva de 500 MB/s. O que aumenta a taxa de transmissão pelas 16 pistas conectadas a uma controladora de vídeo para 8 GB/s e eleva para um respeitável total de 18 GB/s o fluxo transportado por 32 pistas, o máximo que o padrão aceita.
Finalmente, em 2011 o PCI-SIG liberou as especificações da revisão PCIe 3.0. Diferentemente das duas anteriores, esta usa uma codificação 128b/132b em que para cada 130 bits transmitidos apenas dois são usados para o controle de erros dos demais 128 bits (16 bytes), o que aumenta significativamente a eficiência da transferência (para ser exato: de 80% para 98,5%). Além disto, cada pista pode transportar 8 Gb/s. O que, devido à nova codificação, corresponde a uma taxa efetiva de 985 MB/s por pista. E quase um GB/s através de uma única conexão serial é um bocado de coisa…
Mas para que esta pressa toda se as controladoras de vídeo mais rápidas hoje existentes (que usam 16 pistas PCIe por onde podem fluir 15,75 GB/s no padrão 3.0) necessitam bem menos do que isto?
Bem, é porque hoje em dia há na liça dos dispositivos de informática um novo campeão de velocidade: os SSD.
Lembra da analogia hidráulica que fizemos lá na segunda coluna desta série? Aquela que comparava a memória secundária com um reservatório e o barramento com a tubulação usada para transportar a água para fora dele? Pois é. Já naquela coluna havíamos concluído que, no sistema de transferência de dados entre SSD e placa-mãe, o “gargalo” era o barramento. Ou seja: o dispositivo SSD é capaz de ler os dados em seus circuitos de memória e deixá-los prontos para a transferência com uma rapidez muito maior do que os barramentos atuais podem transportá-los.
Mas não havíamos quantificado esta diferença.
Vamos tentar fazê-lo agora, comparando a rapidez com que os SSD podem fornecer dados com a capacidade com que o barramento mais rápido atualmente disponível é capaz de transportá-los. Mas para isto precisamos partir de um pressuposto que, de acordo com os conhecimentos discutidos até agora, parece impossível. Pois os discos SSD usam normalmente o barramento SATA (e, por via de consequência, seu protocolo) que, como vimos na coluna anterior, foi desenvolvido justamente para satisfazer as necessidades da memória secundária. E o barramento mais rápido disponível é o PCIe. Que, como sabemos, usa seu próprio protocolo, incompatível com o SATA.
Mas, apenas para ordenar as coisas e facilitar nosso raciocínio, admitamos por ora que esta conexão seja possível (na próxima coluna veremos como viabilizá-la).
Então qual será o fluxo de dados gerado por um dispositivo SDD?
Para começar, por razões que veremos adiante, o fluxo necessário no sentido SSD -> placa-mãe (leitura) há de ser significativamente maior que o fluxo necessário no sentido inverso (escrita). Portanto vamos nos orientar pelo primeiro. Qual será sua ordem de grandeza? Como ela se compara com o fluxo de dados gerado por discos magnéticos?
Bem, enquanto os discos magnéticos mais rápidos geram fluxos que podem ser suportados por uma conexão SATA 3.0 (até 600 MB/s, ou 0,6 GB/s), o artigo de Zsolt Kerekes no StorageSearch.com, “the Fastest SSDs”, lista alguns SSD disponíveis no mercado com taxas de transferência de leitura de 1,6 GB/s e 2 GB/s, e inclui o modelo XS1715 da Samsung que produz um fluxo de leitura de dados de 3 GB/s (por extenso para deixar claro que não houve erro de digitação: três gigabytes por segundo, cinco vezes maior que o máximo suportado pelo padrão SATA 3.0, o mais rápido dos SATA).
Portanto logo se vê que o barramento SATA não atende às necessidades dos SSD. E nem mesmo uma única pista do mais rápido dos barramentos PCIe.
O que fazer?
Bem, vamos tratar disto na próxima coluna.
B. Piropo
via tech tudo
Anterior
Proxima

Postador

Postagens Relacionadas

0 comentários:

Os comentários serão moderados antes de publicar! respondo todos, obrigado por comentar.