Existem duas classes principais de cache, o cache de leitura e o cache de gravação. Um cache de leitura é uma ferramenta que fornece acesso rápido a dados que, de outra forma, seriam lentos para acessar. Um cache de gravação é uma ferramenta que oferece a ilusão de velocidades de gravação rápidas, geralmente ocultando do usuário a verdadeira velocidade lenta de um dispositivo de memória.
Estrutura de uma Cache
Normalmente, um cache é armazenado em uma camada de memória abaixo dos dados reais. No entanto, os dados de um cache podem ser armazenados em cache no próximo nível de memória. Existem quatro níveis de memória, com o cache/registros da CPU sendo o nível mais baixo e mais rápido e o armazenamento de arquivamento sendo o nível mais alto e mais lento. Os níveis mais baixos para os mais altos são cache/registros de CPU, RAM do sistema, unidades de armazenamento e armazenamento de arquivamento.
Cada degrau nas camadas de memória oferece maior velocidade de acesso, mas capacidade reduzida. A maioria dos usuários domésticos tem apenas os três níveis de armazenamento mais baixos do mundo real. O armazenamento de arquivamento geralmente se refere ao armazenamento em fita destinado ao armazenamento off-line e de longo prazo. O armazenamento de arquivo também pode se referir ao uso de mídia de armazenamento ótica ou outra mídia padrão que foi removida dos dispositivos e mantida offline. Esses exemplos são significativamente mais prováveis de serem encontrados em casa, mas ainda não são tão comuns.
Observação: Até certo ponto, o armazenamento em nuvem pode ser considerado uma variante do armazenamento de arquivo. É muito online, mas não necessariamente acessível imediatamente e geralmente é lento para acessar. A mídia removível, como a memória USB, também ultrapassa um pouco a fronteira entre a unidade de armazenamento e o armazenamento de arquivo.
Tipos de cache de disco
Um cache de disco refere-se a qualquer cache em um “disco”, ou seja, unidades de armazenamento como SSDs e HDDs. Existem três tipos de cache de disco. O cache de leitura envolveria a cópia temporária de alguns dados do armazenamento de arquivo para tornar o acesso mais rápido enquanto necessário. Um cache de gravação pode assumir a forma de um cache SLC em um SSD. Um cache de E/S geralmente seria alguma memória flash ou DRAM usada para armazenar em cache as operações de leitura e gravação. A característica que define tudo isso é que o cache está no próprio disco.
Ler cache de disco
A versão do cache de leitura de um cache de disco provavelmente é o tipo de cache de disco menos usado. O armazenamento de arquivos, por sua própria definição, raramente é necessário. Os dados também podem ser lidos diretamente da mídia de arquivo. A questão é a velocidade. O tempo de acesso é lento porque os dados estão offline, exigindo que um dispositivo de armazenamento adequado seja identificado e conectado. As velocidades de leitura dependem da mídia de arquivamento, mas geralmente são suficientes para a maioria dos casos. Mas pode não ser ideal para requisitos de alta largura de banda, como visualização de vídeo de alta definição. Nesses cenários, um cache de disco de leitura pode ser usado para armazenar em cache uma cópia do arquivo de vídeo em uma mídia de armazenamento que pode reproduzi-lo em tempo real.
Gravar cache de disco
Os SSDs modernos são incrivelmente rápidos, oferecendo velocidades de leitura e gravação incrivelmente rápidas. O que você pode não perceber é que isso não é tecnicamente verdade. A maioria dos SSDs no mercado são TLC, também conhecidos como células de camada tripla. Isso significa que cada célula de memória pode armazenar três bits de dados. Embora isso ofereça três vezes a densidade de armazenamento do SLC (Single Layer Cells) bruto com um bit por célula, também é muito mais lento.
Dica: O flash TLC ainda é rápido. É muitas vezes mais rápido que a largura de banda máxima do barramento SATA 3 usado pelos HDDs e pelos primeiros SSDs. Flash QLC ou células de nível quádruplo são ainda mais lentas, em alguns testes com desempenho realmente mais lento do que HDDs.
O cache SLC foi inventado para ocultar do usuário as baixas velocidades de gravação. O cache SLC simplesmente trata o flash TLC como flash SLC, permitindo que ele opere em velocidades maiores. Os dados gravados no cache SLC são então copiados internamente para o formato TLC tão rápido quanto as velocidades de gravação permitem. Essa técnica funciona de forma excelente, oferecendo velocidades crescentes que exigiram o desenvolvimento de novos padrões mais rápidos.
Os caches SLC, no entanto, têm algumas ressalvas. O tamanho do cache SLC é 1/3 do espaço livre restante do SSD. À medida que o SSD fica cheio, o tamanho do cache SLC diminui. Isso não é um grande problema em grandes unidades vazias, mas pode ser em um SSD menor ou com capacidade próxima. Depois que o cache SLC é preenchido, o usuário vê as velocidades de gravação caírem drasticamente à medida que são expostos à velocidade de gravação genuína do TLC.
Observação: Tecnicamente, se os dados forem gravados em mídia de arquivamento no futuro, qualquer disco de armazenamento pode ser considerado um cache de gravação para a mídia de arquivamento. Este significado geralmente não seria assumido, no entanto.
Cache de disco de E/S
Os HDDs geralmente são muito lentos, mesmo em suas cargas de trabalho ideais. Para ajudar a esconder isso do usuário tanto quanto possível, um cache de E/S pode ser usado. Um cache de E/S armazena em cache as operações de leitura e gravação conforme necessário. Esse cache geralmente é composto de memória Flash ou DRAM na própria unidade. As capacidades são geralmente baixas, embora a classe SSHD ou Solid State Hybrid Drive que apresenta memória Flash ofereça recursos mais consideráveis, embora não comparáveis às capacidades SSD modernas.
As leituras em cache significam que o HDD não precisa encontrar e ler os dados. Isso pode oferecer excelentes benefícios de desempenho, mas apenas em operações de leitura subsequentes. A primeira leitura é sempre lenta. As gravações em cache significam que pequenas operações de gravação podem ser absorvidas no cache e, em seguida, gravadas no HDD real o mais rápido possível. Isso oferece velocidades mais rápidas, mas apresenta uma grande queda de desempenho se o cache estiver esgotado.
Um cache de E/S deve equilibrar cuidadosamente as necessidades das funções de leitura e gravação, especialmente quando apenas um pequeno cache está disponível. Caches maiores negam um pouco esse problema, embora casos extremos com grandes conjuntos de dados ainda possam sobrecarregar o cache flash dos maiores SSHDs.
Observação: Os SSDs também podem tecnicamente usar sua DRAM integrada como um cache de E/S. No entanto, isso geralmente é usado principalmente ou exclusivamente para armazenar a tabela de conversão de endereço lógico para físico usada para localizar dados no SSD.
Conclusão
Um cache de disco é um cache que existe diretamente em uma unidade de armazenamento. Ele pode assumir a forma de um cache de leitura ou gravação ou um cache de E/S. Caches de leitura normalmente armazenam em cache dados de armazenamento de arquivamento mais lento. Os caches de gravação ocultam do usuário as baixas velocidades de gravação dos discos de armazenamento. Os caches de E/S ocultam do usuário as velocidades lentas de leitura e gravação.
Os caches são excelentes ferramentas de usabilidade, mas podem causar algumas dores de cabeça para os usuários quando esgotados. Isso é especialmente verdadeiro para caches de gravação dinâmicos, como o cache SLC. Como os usuários não técnicos podem não entender por que suas velocidades de gravação são tão lentas e, portanto, não podem corrigi-las abordando problemas de capacidade.