Uno de los problemas de los discos sólido o SSD es el hecho que estos tienen peor capacidad de almacenamiento que los discos duros convencionales. Una forma de remediar este problema es utilizando una serie de unidades especiales, los compresores y descompresores.
Aunque se trata de una pieza de hardware por el momento poco conocida, pronto vamos a verla citada en las especificaciones de varias CPUs, ya sean para PCs como para otros dispositivos. Y no estamos hablando de una pieza de ciencia ficción, ya que sistemas que ya se encuentran a la venta como son las consolas de videojuegos y la tarjetas gráficas de nueva generación ya incluyen esta unidad de hardware.
Funcionamiento básico de los compresores y descompresores
Se entiende como compresión de datos a coger un bloque de información que ocupa una cantidad de almacenamiento determinada y cifrarlo de tal manera que se obtenga un bloque con la misma información que ocupe menos información. El cifrado creado por la unidad de compresión ha de ser entendido por una unidad análoga situada en el otro extremo a la que llamamos descompresor
Un descompresor lo que hace es aplicar un algoritmo de descifrado sobre un flujo de datos que le llega, obviamente dichos datos han de estar previamente comprimidos por un compresor análogo que cifra los datos en un formato que el descompresor puede entender. Por lo que ambos extremos funcionan en parejas y en una correlación directa.
En términos generales, hay dos tipos de de compresión, la que tiene pérdida y la que no, pero de cara al tratamiento de datos la más eficiente es la segunda, ya que no nos interesa perder dicha información para evitar errores a la hora de ejecutar un programa desde la RAM.
Una CPU no es lo suficientemente rápida para descomprimir datos a esa velocidad
Haced una simple prueba, tomad un programa de descompresión de archivos en vuestro PC y observad como la CPU se pasa un buen rato para descomprimir un archivo de unos pocos cientos de megabytes o de pocos gigabytes. Ahora imaginad tener que descomprimir a tiempo real decenas de gigabytes y os podéis imaginar la potencia de cálculo que sería necesaria.
Este es el motivo por el cual en el caso de las nuevas GPUs, las cuales son compatibles con el estándar DirectStorage, llevan una unidad especial para descomprimir los datos al vuelo, ya que incluso dando acceso a la VRAM a la CPU esta no sería lo suficientemente rápida para que los datos lleguen suficientemente rápidos al procesador.
Compresores y Descompresores para aumentar la capacidad de los SSD
Por el momento, una de las ventajas de los discos duros convencionales sobre los SSD es el coste del almacenamiento, ya que un SSD es mucho más caro por gigabyte de almacenamiento que un HDD, utilizando una unidad de compresión/descompresión entonces es posible aumentar de manera eficiente la capacidad de almacenamiento de un SSD sin aumentar el coste.
Por el momento estas unidades no se encuentran en las CPUs, pero dado que son parte esencial de las GPUs por el soporte a DirectStorage en DX 12 Ultimate, por lo que solo hace falta trasladar dicha unidad a los procesadores en futuras iteraciones. El problema para su uso es que va a requerir la compresión completa de los datos que existen en el disco previamente, pero a cambio se va a ganar una cantidad de memoria extra para el almacenamiento que es siempre bienvenida.
El creciente abismo entre la RAM y el procesador
La realidad es que la RAM no ha evolucionado a la misma velocidad que lo hacen los procesadores, lo que ha tenido como consecuencia que estos últimos se hayan diseñado alrededor de las limitaciones de la RAM intentando en lo máximo posible desarrollar nuevos mecanismos dentro del procesador para paliar esta desventaja. Por el momento no existen CODECS de datos lo suficientemente rápidos que permiten la compresión y descompresión de estos al vuelo de una memoria RAM, pero con el tiempo y a medida que aumente la capacidad de procesamiento de estos los acabaremos viendo,
La idea de que los datos que van hacía el procesador se puedan comprimir y descomprimir al vuelo también resulta en una subida del ancho de banda, ya que técnicamente estamos transmitiendo una mayor cantidad de datos por segundo que si se enviaran esos datos sin comprimir, se llegará al punto en que para que la RAM no se quede atrás se tendrán que añadir dichas unidades tanto a la memoria misma como a los procesadores.
Una buena forma de hacerlo es utilizar varios compresores funcionando en paralelo que descompriman los datos que llegan desde la propia memoria RAM, en el que cada acelerador se ocupe de un bloque distinto de datos.