Compressores e descompressores, como funcionam na RAM e no SSD?

Compressores e descompressores, como eles funcionam

Um dos problemas dos discos rígidos ou SSDs é o fato de eles terem uma capacidade de armazenamento pior do que os discos rígidos convencionais. Uma maneira de remediar este problema é usando uma série de unidades especiais, compressores e descompressores.

Embora seja um hardware pouco conhecido até o momento, em breve o veremos citado nas especificações de diversos processadores, tanto para PCs quanto para outros dispositivos. E não estamos falando de uma obra de ficção científica, já que sistemas que já estão à venda, como consoles de videogame e placas de vídeo de nova geração, já incluem essa unidade de hardware.

Operação básica de compressores e descompressores

Compressores Descompressores

Entende-se por compressão de dados pegar um bloco de informação que ocupa um determinado espaço de armazenamento e criptografá-lo de forma que seja obtido um bloco com a mesma informação que ocupa menos informação. A criptografia criada pela unidade de compressão deve ser entendida por uma unidade análoga localizada na outra extremidade, que chamamos de descompressor

O que um descompressor faz é aplicar um algoritmo de descriptografia em um fluxo de dados que o alcança; obviamente, esses dados devem ser previamente compactados por um compressor analógico que criptografa os dados em um formato que o descompressor possa entender. Portanto, os dois extremos funcionam em pares e em correlação direta.

Em termos gerais, existem dois tipos de compressão, uma com perdas e outra que não, mas em termos de processamento de dados a segunda é a mais eficiente, pois não temos interesse em perder esta informação para evitar erros na execução um programa de RAM.

Uma CPU não é rápida o suficiente para descompactar dados nessa velocidade

SSD RTX IO

Faça um teste simples, pegue um programa de descompactação de arquivos em seu PC e observe como o CPU tem um bom momento para descompactar um arquivo de algumas centenas de megabytes ou alguns gigabytes. Agora imagine ter que descomprimir dezenas de gigabytes em tempo real e você pode imaginar o poder de computação que seria necessário.

Por isso, no caso das novas GPUs, que são compatíveis com o padrão DirectStorage, elas possuem uma unidade especial para descompactar os dados em tempo real, já que mesmo dando acesso ao VRAM para a CPU não seria tão rápido o suficiente para que os dados cheguem ao processador rápido o suficiente.

Compressores e descompressores para aumentar a capacidade dos SSDs

No momento, uma das vantagens dos discos rígidos convencionais sobre os SSDs é o custo de armazenamento, já que um SSD é muito mais caro por gigabyte de armazenamento do que um HDD, usando uma unidade de compressão / descompressão então é possível aumentar de forma eficiente a capacidade de armazenamento de um SSD sem aumentar o custo.

No momento essas unidades não estão nas CPUs, mas como são uma parte essencial das GPUs devido ao suporte para DirectStorage no DX 12 Ultimate, portanto, só é necessário mover esta unidade para os processadores em iterações futuras. O problema de seu uso é que exigirá compressão completa dos dados que existiam anteriormente no disco, mas em troca ganhará uma quantidade de memória extra para armazenamento, o que é sempre bem-vindo.

O crescente abismo entre RAM e processador

RAM da CPU

A realidade é que a RAM não evoluiu na mesma velocidade que os processadores, o que teve como consequência que estes últimos foram concebidos em torno das limitações da RAM, tentando ao máximo desenvolver novos mecanismos dentro do processador para atenuar esta desvantagem. No momento não há CODECS de dados rápidos o suficiente para permitir a compressão e descompressão deles em tempo real a partir de uma memória RAM, mas com o tempo e conforme sua capacidade de processamento aumenta, vamos acabar vendo-os,

A ideia de que os dados que vão para o processador podem ser compactados e descompactados em tempo real também resulta em um aumento na largura de banda, já que tecnicamente estamos transmitindo uma quantidade maior de dados por segundo do que se fossem enviados descompactados, é que chegarão o ponto onde, para que a RAM não seja deixada para trás, essas unidades terão de ser adicionadas à própria memória e aos processadores.

Uma boa maneira de fazer isso é utilizar vários compressores operando em paralelo que descompactam os dados que chegam da própria RAM, em que cada acelerador lida com um bloco de dados diferente.