(Este es el tercero de un post de cuatro partes que pone 10GB/s en perspectiva. En la primera parte, describimos lo que podría hacer un hipotético robot de cine con un SSD de 10 GB/s. En la segunda parte definimos las unidades de medida estándar -bits y bytes- utilizadas en las tecnologías informáticas. Esta sección trata de explicar un problema especialmente confuso en relación con el almacenamiento y los datos: dos definiciones de uso común para los mismos prefijos de unidad.)
¿Alguna vez ha comprado un sistema informático con, por ejemplo, un dispositivo de almacenamiento de 500 GB, pero cuando lo ha arrancado por primera vez su sistema operativo sólo le ha informado de 465 GB? En la segunda parte vimos que giga significa mil millones, por lo que una unidad de 500 GB debería tener una capacidad de 500 mil millones de bytes, no de 465 mil millones. Si investigó la discrepancia, probablemente se dio cuenta de que los 35 GB que faltaban no eran en absoluto. Es que el giga no siempre se usa exactamente como uno cree que debería. Al igual que muchos panaderos consideran que la palabra docena significa 13, en algunos círculos giga- se utiliza para significar ¡1.073.741.824! Para muchos de nosotros que crecimos entendiendo que un billón es un 1 con nueve 0s a continuación, esta «otra» definición puede necesitar alguna aclaración.
Un viaje por el carril de la memoria
Los ordenadores utilizan información e instrucciones contenidas en archivos de datos. Estos archivos de datos residen en dos lugares en un sistema informático moderno: la memoria primaria y el almacenamiento secundario. La memoria primaria, ahora más comúnmente memoria de acceso aleatorio (RAM), contiene datos a los que los procesadores del ordenador pueden acceder inmediatamente. El almacenamiento secundario es principalmente un almacenamiento a largo plazo, como las unidades de disco duro (HDD) y las unidades de estado sólido (SSD). Los datos que se encuentran en el almacenamiento secundario deben trasladarse primero a la memoria RAM antes de que un ordenador pueda utilizarlos. La situación es similar a la del escritorio de una oficina y su archivador: Los documentos en el escritorio de la oficina son como archivos en la RAM, ya que son los únicos a los que usted -como un procesador de ordenador- puede acceder, leer y actuar inmediatamente; también puede utilizar los documentos del archivador, o del almacenamiento secundario, pero sólo después de sacarlos del archivador y ponerlos en el escritorio.
El tamaño de un archivo, dondequiera que se encuentre, se expresa normalmente en bytes. Y como se mencionó en la segunda parte de este post, debido a que estos tamaños suelen ser de miles, millones o incluso miles de millones de bytes, rara vez se mencionan estos tamaños sin prefijos especiales. El problema surge porque los fabricantes de dispositivos de almacenamiento secundario han utilizado históricamente el conjunto tradicional de definiciones de prefijos para medir las capacidades de almacenamiento de sus unidades, mientras que los fabricantes de RAM y chips de CPU han optado por utilizar otro conjunto de definiciones para los mismos prefijos.
Una historia de dos sistemas
La mayoría de las industrias de la informática y la electrónica utilizan el sistema de prefijos métricos o decimales. Su forma actual fue estandarizada originalmente por el Sistema Internacional de Unidades (SI) en 1960. El sistema de prefijos métricos tiene como base el número 10, por lo que sus prefijos corresponden a números que son potencias enteras de 10. El kilo, por ejemplo, es 103 -que significa 10 multiplicado por sí mismo tres veces- o 1.000. Los siguientes prefijos del sistema pueden expresarse fácilmente como potencias de ese 1.000. El prefijo mega-, por ejemplo, es 1.0002 (1.000.000) y giga- es 1.0003 (1.000.000.000). La industria del almacenamiento utiliza el sistema de prefijos métricos para describir la capacidad de los dispositivos de almacenamiento secundario.
El sistema de prefijos binarios entra en juego cuando se habla de la memoria primaria. El sistema de prefijos binarios tiene como base el número 2, por lo que sus prefijos corresponden a números que son potencias enteras de 2. Cuando los datos llegan a la memoria primaria, a cada pieza de información se le asigna una dirección única que permite al procesador encontrar los datos cuando los necesita. A mediados de la década de 1960, el esquema de direccionamiento binario se convirtió en un estándar en las arquitecturas de los ordenadores, ya que un sistema binario permite organizar los datos binarios de la memoria de la manera más eficiente, de forma que todos tengan direcciones válidas.
Al principio, las capacidades de la memoria principal se expresaban en números absolutos, pero cuando los primeros profesionales de la informática encontraron la necesidad de expresar capacidades de memoria más grandes, también encontraron la necesidad de utilizar prefijos para describirlas. La industria del almacenamiento ya había adoptado el uso del sistema de prefijos métricos basado en el SI. Por comodidad, estos profesionales decidieron adoptar también el sistema de prefijos… con algunas modificaciones. Se dieron cuenta de que el número 1.024, o 210 (binario), era aproximadamente igual a 1.000, o 103 (decimal), por lo que empezaron a utilizar el prefijo kilo no para significar 1.000, sino para significar 1.024. Los prefijos posteriores del sistema pueden expresarse como potencias de ese 1.024. Mega-, por ejemplo, se convirtió en 1,0242 y giga- en 1,0243.
La siguiente tabla amplía una tabla presentada en la segunda parte de este post al incluir no sólo el significado de cada prefijo, sino también el valor exacto de los prefijos de ambos sistemas.
Hay que recordar, sin embargo, que la capacidad total de nuestro hipotético SSD sigue siendo de 500.000.000.000 bytes. Lo que ocurre es que, al dividir este número por un gigabyte, se pueden obtener dos valores diferentes porque hay dos definiciones distintas de gigabyte. Cuando se define un gigabyte como 1.0003 (o 1.000.000.000) bytes, como hace el Sistema Internacional de Unidades y los fabricantes de almacenamiento, entonces 500.000.000.000 bytes es lo mismo que 500GB. Si definimos un gigabyte como 1.0243 (o 1.073.741.824) bytes, como hacen los fabricantes de memoria RAM y algunos de los principales sistemas operativos, 500.000.000.000 bytes es lo mismo que 465GB.En los primeros tiempos, esto no era un problema: la diferencia en la aproximación era insignificante. Al fin y al cabo, la discrepancia entre un kilobyte métrico y un kilobyte binario es sólo del 2,4%. Además, cualquiera que hablara de KB ya sabía si estaba hablando de 1.000 bytes de almacenamiento o de 1.024 bytes de memoria. Pero con el paso del tiempo, las capacidades tanto de memoria como de almacenamiento empezaron a aumentar. A medida que las capacidades crecen, las diferencias relativas entre los valores decimales y binarios de un mismo prefijo se hacen más pronunciadas. Por ejemplo, aunque la discrepancia entre el kilo binario y el métrico puede ser sólo del 2,4%, la diferencia entre un giga- en las dos interpretaciones crece hasta el 7,4%, y hasta el 12,6% cuando se habla de peta-¡
Debido al potencial de problemas de esta discrepancia, a finales de la década de 1990 se inició un movimiento en los círculos científicos para establecer formalmente una convención de nomenclatura nueva y distinta para los prefijos de los números binarios grandes. En 1998, los organismos de normalización de la Comisión Electrotécnica Internacional (CEI), la Organización Internacional de Normalización (ISO) y el Instituto Nacional de Normas y Tecnología (NIST) adoptaron los prefijos binarios resultantes, que ahora se denominan «prefijos CEI». Los prefijos de este sistema pretenden proporcionar distinciones obvias entre los dos sistemas y se forman como contracciones que combinan las dos primeras letras de los prefijos del SI con las letras bi (abreviatura de binario). La siguiente tabla presenta una lista de los prefijos y sus significados.
Aunque las ramificaciones de usar erróneamente un prefijo cuando se supone que se debe usar el otro pueden no ser tan dramáticas como la desconexión que resultó en la infame quema de 1999 del Mars Climate Orbiter de la NASA, cuando su software calculó la fuerza de sus propulsores en «libras», pero otra pieza de software tomó los datos asumiendo que estaban en la unidad métrica «newtons», entender la diferencia entre estos sistemas puede evitar que te sorprendas, o al menos que te confundas.Por desgracia, no todos los fabricantes de ordenadores, programas y memorias han comenzado a utilizar las definiciones científicas estandarizadas, por lo que es probable que todavía se utilice el mismo prefijo para las interpretaciones métricas y binarias. La confusión entre los consumidores puede seguir produciéndose cuando el dispositivo de almacenamiento que instalan indica una capacidad utilizando prefijos estándar, pero su sistema operativo, que puede expresar las capacidades de memoria primaria y de almacenamiento secundario en términos de prefijos binarios, muestra lo que parece una capacidad diferente. Hoy en día, para mitigar la confusión, la mayoría de los fabricantes de almacenamiento incluyen explicaciones en sus productos y literatura que definen el valor exacto del prefijo que utilizan.
La siguiente parte de este post cubrirá las tasas de transferencia y las consideraciones únicas que se toman al expresarlas con datos.