Na primeira parte deste post de blog em quatro partes, descrevemos um robô hipotético capaz de ver vídeos a 10 GB/s. Para entender completamente o que significa este 10 GB/s, adicionamos mais três partes ao post. A segunda parte definiu bits e bytes, que são as unidades básicas de dados, e alguns dos múltiplos destas unidades. A terceira parte introduziu diferentes definições de múltiplos prefixos, como mega- e giga-. Esta quarta, e última, parte analisa as medidas usadas nas taxas de transferência e como elas se aplicam de forma diferente a redes e mídias de armazenamento.
Na época desta redação, no início de 2017, Adelaide, Austrália, estava buscando planos para implantar uma rede de banda larga de 10 Gb/s. A velocidade alvo é impressionante, e embora pareça similar à taxa de transmissão de 10 GB/s do SSD do mundo real da Seagate no nosso hipotético robô viciado em cinema, eles definitivamente não são a mesma coisa. Ambos os exemplos falam de taxas de transferência de dados, por isso são semelhantes um ao outro – mas também são muito diferentes. Esta parte final do blog de quatro partes mostrará não só as semelhanças e diferenças entre os dois, mas também porque são usadas unidades diferentes para medi-las em primeiro lugar.
Tudo, mas a pia da cozinha
Antes de mergulharmos nas porcas e parafusos de transferência de dados no que diz respeito ao armazenamento e redes, vamos ver como a água flui na sua cozinha. A sua torneira de água pode estar classificada em, digamos, 2 g/m. Isto significa que foi concebida para ter água a passar pelo seu bico a uma taxa teórica máxima de cerca de 2 galões por cada minuto que passa. No entanto, pode não estar a obter essa taxa, uma vez que o fluxo de água num dado momento pode ser comprometido por factores como a acumulação de minerais na cabeça da torneira, a baixa pressão geral da água no seu condomínio ou o entupimento dos canos. Um canalizador a diagnosticar o seu problema pode dizer que a sua água sai da torneira a mais ou menos 1 g/m.
Como é que isto se relaciona com os dados?
As taxas de fluxo são sempre medidas como alguma quantidade ao longo de algum período de tempo. Com os dados, estas taxas de fluxo são expressas como largura de banda ou débito, ambos medem a quantidade de informação que pode ser movida ao longo de um determinado período de tempo. Embora estes dois termos sejam frequentemente utilizados de forma intercambiável, na realidade são bastante diferentes.
Largura de banda descreve a taxa máxima teórica de transferência de dados que um link é projectado para lidar, como a classificação de caudal de água da sua torneira. Mas tal como factores externos, tais como autoclismos ou fugas nos tubos podem impedir a sua torneira de fornecer água à sua taxa máxima, no mundo das redes de dados e computadores, factores como a sobrecarga do protocolo, latência da rede e fiabilidade, entre outras coisas, muitas vezes conspiram para manter a sua ligação de dados sempre à altura do seu potencial. Outro termo, throughput, é usado para descrever a quantidade real de dados movendo-se através do link, como a medição do fluxo de água que seu encanador obteve em seu teste.
Size Matters
A largura de banda e throughput são tipicamente medidos como alguma forma de bits por segundo (b/s) ou bytes por segundo (B/s)-Mb/s, MB/s, Gb/s, GB/s, etc. Note a diferença no caso: b pequeno é para bits; B grande é para bytes. Você frequentemente encontra velocidades de transferência de dados expressas em ambas as unidades de medida.
As métricas usadas tanto na rede Adelaide quanto nos exemplos SSD da Seagate descrevem taxas de transferência de dados, mas uma usa gigabits como sua unidade de medida e a outra usa gigabytes. Como você deve se lembrar da Parte 2, um byte hoje em dia é mais comumente definido como 8 bits. Então, normalmente, para converter de bits para bytes, você divide o número de bits por 8; para converter de bytes para bits multiplique o número de bytes por 8. Lembre-se, essa é uma regra muito geral, e mais tarde vamos olhar para uma notável exceção quando se trata de taxas de transferência de dados.
Agora que você sabe como converter essas unidades de medida, vamos ver porque elas são medidas de forma diferente em primeiro lugar.
Uma regra geral: Com memória e armazenamento, as taxas de transferência de dados são tipicamente expressas em bytes por segundo; com redes e interfaces, as taxas de transferência de dados são tipicamente expressas em bits por segundo.
Um equívoco comum é que as empresas em redes ou campos relacionados à Internet usam bits por segundo para enganar os clientes a pensar que as velocidades da rede são na verdade muito mais rápidas do que realmente são. A lógica é que como 8 Gb/s soa muito melhor do que 1 GB/s, os clientes vão pensar que estão recebendo uma velocidade de conexão mais rápida do que o que realmente estão recebendo. No entanto, não é um estratagema de marketing. Se este fosse o caso, então as mesmas pessoas que pensam assim poderiam então ter que perguntar porque os grupos de marketing na memória e empresas de armazenamento não convertem tudo em bits, também. As razões para as diferenças são elementares, como veremos abaixo.
Bytes para Computadores
Quando se fala de transferências de dados entre um computador e sua memória ou armazenamento, as transferências são expressas, na maioria das vezes, em termos de bytes por segundo. Vimos na Parte 2 que o byte é a unidade de dados endereçável mais fundamental para a memória do computador e dispositivos de armazenamento, por isso os computadores estão principalmente interessados em bytes. E, como vimos na Parte 3, quando os computadores acessam dados na memória, eles o fazem no nível de bytes. Então, se você instruir seu computador a identificar ou manipular um bit individual, ele deve primeiro acessar o byte ao qual ele pertence, então ele deve realizar uma operação adicional para isolar esse bit. Além disso, como os arquivos também são medidos por quantos bytes eles contêm, expressar velocidades de transferência em bytes por segundo é útil para descobrir quanto tempo você pode esperar que leve para copiar um arquivo de uma parte do sistema do seu computador para outra. Isto é mais comumente expresso como taxa de transferência.
O padrão funciona bem para transferências de arquivos dentro de um único sistema porque um computador geralmente fala a mesma linguagem que todos os seus dispositivos periféricos. Mas um conjunto diferente de preocupações se apresenta quando se observa como os dados são transferidos entre sistemas de computadores totalmente diferentes ou através de uma rede.
Bits para Redes
Com conexões de rede – ou qualquer situação em que dois ou mais computadores estão ligados através de fios ou através do ar para compartilhar taxas de transferência de dados são tradicionalmente descritos em termos de bits por segundo. Isto porque, ao contrário dos próprios sistemas de computador, os dados que se movem através de uma rede são transferidos em série, ou um bit de cada vez – não em pedaços de bits, ou um ou mais bytes de cada vez.
Como também vimos na Parte 2, historicamente o tamanho de um byte era dependente da plataforma de hardware. Alguns computadores precisavam de 4 bits para fazer seus bytes, outros precisavam de 6 bits, e ainda outros precisavam de 8 bits. Assim, quando os dados eram transferidos de um computador para outro, não era prático medir as transferências em termos de quantos bytes estavam sendo movidos, porque o byte do computador remetente poderia ser razoavelmente um tamanho diferente do byte do computador receptor!
A partir de 8 bits tornou-se a definição padrão de fato do byte, ainda fazia pouco sentido expressar as transferências de dados em termos de bytes. Os engenheiros de rede medem as taxas de transferência em bits por segundo porque ao fazê-lo reflete com mais precisão a capacidade real de um link de rede de transferir todos os dados necessários, não apenas os dados no(s) arquivo(s). Na maioria das comunicações em rede, nem todos os bits que são enviados através do link fazem realmente parte dos arquivos que estão sendo transferidos. A rede muitas vezes emprega esquemas de codificação, com a abordagem de bits adicionais para cada byte que é enviado. Esses bits extras contêm informações que a rede precisa para garantir que os dados sejam enviados ao destinatário correto e para confirmar que os dados foram enviados sem erros e recebidos sem incidentes, entre outras coisas.
Um esquema de codificação comum é chamado 8b/10b, que recebe seu nome porque para cada 8 bits enviados sobre um link, 2 bits são tacked on como metadados – em outras palavras, 10 bits de dados são enviados para cada 8 bits de byte. Com este esquema de codificação, apenas a transferência de dados de forma confiável através de uma rede incorre em uma sobrecarga de 20 por cento. Embora em teoria as aspirações de banda larga de Adelaide de uma rede de 10 Gb/s, se medidas em bytes, deveriam ser de aproximadamente 1,25 GB/s (10 Gb dividido por 8), quando se leva em conta os 20% de sobrecarga, seria mais equivalente a 1 GB/s. Outros esquemas estão se tornando mais proeminentes, mais notadamente um adotado pela norma PCIe 3.0, que usa um padrão de 128b/130b. Você adivinhou; isto significa que 2 bits de overhead são adicionados para cada 128 bits de dados. O novo esquema é mais eficiente do que o padrão 8b/10b, pois a atualização resulta em uma penalidade de overhead de apenas aproximadamente 1,5%, comparado com os 20% anteriores.
End of the Line
Understanding technologies and the terminologies that describe them can be very confusing if you don’t pay attention. Este é especialmente o caso quando se trata de olhar para os dados em trânsito. Infelizmente, embora um gigabyte e um gigabit sejam unidades muito diferentes para medir coisas semelhantes mas diferentes, no mundo real, as pessoas frequentemente encurtam 10 GB/s e 10 Gb/s da mesma forma: como “10 gigs”
E agora, no entanto, você terá uma idéia muito clara de que o robô proclamando que assistiu seus filmes em Netflix em 10 gigs de transmissão está dizendo algo completamente diferente dos australianos que logo se gabarão de estarem em uma rede de 10 gigs, companheiro.