Mordendo o kibe

Mordendo o kibe
Nós, como seres humanos, estamos acostumados a pensar em valores segundo o padrão decimal, por isso temos muito mais facilidade em lidar com números múltiplos de 10.

Os computadores, por outro lado, trabalham utilizando o sistema binário e por isso trabalham com potências do número 2. Um único bit permite duas combinações possíveis, dois bits permitem 4, oito bits permitem 256, dezesseis bits permitem 65.536 e assim por diante.

Por causa desta peculiaridade, um kilobyte não corresponde a 1000 bytes, mas sim a 1024, já que 1024 é a potência de 2 mais próxima de 1000. Um megabyte corresponde a 1024 kbytes, que por sua vez correspondem a 1048.576 bytes.

Quando falamos em gigabytes e terabytes, as diferenças crescem, já que um gigabyte corresponde a 1.073.741.824 bytes e um terabyte corresponde a 1.099.511.627.776 bytes. Ou seja, um acréscimo de quase 10% em relação ao que teríamos utilizando o padrão decimal.

Diversos dispositivos seguem esta notação binária, incluindo módulos de memória e CD-ROMs. Um pente de memória de 1 GB possui exatamente 1.073.741.824 bytes, enquanto um CD-ROM de 650 MB é dividido em 333.000 setores de 2048 bytes cada um, totalizando 681.984.000 bytes, ou 650.39 MB.

Esta notação segue o padrão do JEDEC para dispositivos de memória, onde o “mega” é o número 2 elevado à vigésima segunda potência e o “giga” é o número 2 elevado à trigésima potência.

O ponto de discórdia são os fabricantes de HDs, que comodamente adotaram o padrão decimal para medir a capacidade dos seus produtos. A discordância começou muito antes do que se imagina, datando dos primeiros discos fabricados pela IBM. O IBM 350 não armazenava 5 megabytes, mas sim 5 milhões de caracteres, com 7 bits cada um.

Concordando ou não, todos os fabricantes acabaram sendo obrigados a aderir à idéia, já que qualquer fabricante que preferisse seguir o padrão binário, teria a capacidade de seus produtos “encolhida” em relação à concorrência. Querendo ou não, o anúncio de um HD de “1 terabyte” soa melhor do que o anúncio de um HD de “931 gigabytes binários”.

Graças a isso, um HD de 500 GB possui, na verdade, 500 bilhões de bytes, que correspondem a apenas 465.6 GB, divididos em pouco mais de 931 milhões de setores de 512 bytes cada um.

Inicialmente, os programas de particionamento exibiam a capacidade dos HDs de forma correta, calculando o espaço em termos de potências binárias. O problema é que isso resultava numa diferença considerável entre o espaço exibido e o espaço declarado pelos fabricantes, o que gerava dúvidas e confusão entre os usuários, que ficavam sem saber por que o programa de particionamento dizia que seu HD de “120 GB” tinha apenas 111.7 GB.

Depois de muita confusão e inclusive alguns processos na justiça por propaganda enganosa, os fabricantes de HDs acabaram ganhando a queda de braço e os programas de particionamento passaram a mostrar a capacidade utilizando potências de 10. Veja como o cfdisk (no Linux) reconhece um HD Samsung de 300 GB:
kib_html_m2dd48be9
Ou seja, ele reconhece corretamente a capacidade do drive em bytes, mas arredonda o número para “300.0 GB”, muito embora 300.069.052.416 bytes correspondam na verdade a apenas 286.16 GB.

Temos ainda o caso dos pendrives e cartões de memória, que ficam no meio do caminho. Por comodidade, os fabricantes também adotam a notação decimal, de forma que um pendrive de 1 GB é divulgado como tendo “1.000.000.000 de bytes, ou mais”, enquanto a capacidade real tente a variar um pouco de fabricante para fabricante. Um pendrive de 1 GB da PQI que testei tinha 1.027.603.968 bytes, enquanto um cartão de 2 GB da Kingston tinha 2.002.255872 bytes.

O caso dos pendrives e cartões é interessante, pois eles são originalmente compostos por chips de memória flash que seguem o padrão binário. Ou seja, um pendrive composto por 2 chips de 8 gigabits, possuiria realmente 2 GB “reais”. Apesar disso, os fabricantes precisam reservar parte da capacidade dos chips para o mapeamento de blocos defeituosos e códigos de correção de erros, de forma que a capacidade utilizável acaba sendo sempre um pouco menor, além de variar de fabricante para fabricante, de acordo com o número de bits reservados.

Ou seja, na prática acabamos com dois padrões de medida conflitantes dentro do ramo da informática; o padrão decimal e o padrão binário, onde cada um é apoiado por um segmento.

Em 2005 o IEEE acabou cedendo à pressão dos fabricantes de HDs e introduziu um novo conjunto de medidas para a designação de valores binários, incluindo o mebibyte, gibibyte e tebibyte. O “bi” em todos os prefixos é abreviação de “binary”, indicando juntamente que estamos falando de grandezas binárias.

Ou seja, de uma hora para a outra, seu micro deixou de ter 1 gigabyte de memória e passou a ter 1 gibibyte, enquanto seu HD deixou de ter 465.6 GB e passou, por decreto, a ter 500 GB!

Pelo novo padrão (IEEE 1541), um kilobyte deixa de ter 1024 bytes e passa a ter apenas 1000. Um “kibibyte” não é mais uma mordida no kibe, mas sim um conjunto de 1024 bytes, enquanto um “kibibit” passa a ser um conjunto de 1024 bits. Mudam também as abreviações, onde “Pib” deixa de ser “produto interno bruto” e passa ser abreviação de “pebibyte”, ou seja, pouco mais que um quadrilhão de bits. 🙂

Vamos então parar com as piadinhas e ir diretamente à tabela com o novo padrão e as novas abreviações:
tabela
Naturalmente, o novo padrão encontrou muitos opositores e a adoção vem caminhando a passos de tartaruga. Muitos autores (eu incluído) optaram por ignorar o novo padrão e continuar utilizando a notação binária, usando o termo “decimal” para indicar o uso do padrão decimal quando isso puder der origem a confusão. Posso então dizer que o padrão ATA-6 derrubou o limite de 128 GB para o endereçamento dos HDs, ou que ele derrubou o limite de 137 GB decimais.

Para que o padrão do IEEE venha a realmente se tornar um “padrão” e não mais uma simples mudança das regras no meio do jogo, que vem a atender ao lobby dos fabricantes de HDs, seria necessário que toda a literatura técnica fosse alterada, mudando todas as referências a unidades de armazenamento e explicando por que apenas os HDs possuem “gigabytes”, enquanto quase todos os demais componentes possuem “gibibytes”.

Considerando tudo isso, humildemente proponho que o padrão do IEEE seja ignorado e que “os incomodados que se mudem”. Ao invés de adotarmos o “gibibyte”, que tal se os fabricantes de HDs adotassem o “gidebyte”, para designar o uso da notação decimal? 😉

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X