Armazenamento de dados de computador ou armazenamento de dados digitais é a retenção de dados digitais por meio de tecnologia que consiste em componentes de computador e mídias de gravação. O armazenamento de dados digitais é uma função central e um componente fundamental dos computadores.

Geralmente, os componentes de armazenamento mais rápidos e voláteis são chamados de "memória", enquanto os componentes persistentes e mais lentos são chamados de "armazenamento". Essa distinção foi estendida na Arquitetura de von Neumann, onde a unidade central de processamento (CPU) consiste em duas partes principais: a unidade de controle e a unidade lógica e aritmética (ALU). A primeira controla o fluxo de dados entre a CPU e a memória, enquanto a última realiza operações aritméticas e lógicas nos dados. Na prática, quase todos os computadores usam uma hierarquia de memória, que coloca a memória próxima à CPU e o armazenamento mais distante.

Em computadores modernos, discos rígidos (HDDs) ou unidades de estado sólido (SSDs) são geralmente usados como armazenamento.

Dados Um computador digital moderno representa dados usando o sistema binário. A célula de memória é o bloco de construção fundamental da memória do computador, armazenando um bit de informação binária que pode ser definido para armazenar um 1, redefinido para armazenar um 0 e acessado por meio da leitura da célula.

Texto, números, imagens, áudio e quase qualquer outra forma de informação podem ser convertidos em uma sequência de bits, ou dígitos binários, cada um com o valor 0 ou 1. A unidade mais comum de armazenamento é o byte, igual a 8 bits. Os dados digitais compreendem a representação binária de uma informação, sendo frequentemente codificados pela atribuição de um padrão de bits a cada caractere, dígito ou objeto de multimídia. Existem muitos padrões para codificação (por exemplo, codificação de caracteres como ASCII, codificações de imagem como JPEG e codificações de vídeo como MPEG-4).

Criptografia Por razões de segurança, certos tipos de dados podem ser criptografados no armazenamento para evitar a possibilidade de reconstrução não autorizada de informações a partir de fragmentos de instantâneos (snapshots) do armazenamento. A criptografia em trânsito protege os dados enquanto eles estão sendo transmitidos.

Compressão Métodos de compressão de dados permitem, em muitos casos (como em um banco de dados), representar uma sequência de bits por uma sequência de bits mais curta ("comprimir") e reconstruir a sequência original ("descomprimir") quando necessário. Isso utiliza substancialmente menos armazenamento (dezenas de por cento) para muitos tipos de dados, ao custo de mais processamento (comprimir e descomprimir quando necessário). A análise do equilíbrio entre a economia de custo de armazenamento e os custos de computações relacionadas e possíveis atrasos na disponibilidade de dados é feita antes de decidir se certos dados devem ser mantidos comprimidos ou não.

Vulnerabilidade e confiabilidade Diferentes tipos de armazenamento de dados possuem distintos pontos de falha e vários métodos de . Vulnerabilidades que podem levar instantaneamente à perda total são o em discos rígidos mecânicos e a em armazenamento flash.

Redundância A permite que o computador detecte erros em dados codificados (por exemplo, um aleatório devido a radiação cósmica) e os corrija com base em algoritmos matemáticos. O método de verificação de redundância cíclica (CRC) é tipicamente usado em comunicações e armazenamento para detecção de erros. Soluções de redundância incluem replicação de armazenamento, e RAID (Redundant Array of Independent Disks).

Detecção de erros

A falha iminente em discos rígidos é estimável usando dados de diagnóstico S.M.A.R.T., que incluem as e a contagem de ciclos de rotação, embora sua confiabilidade seja contestada. A integridade das mídias ópticas pode ser determinada pela medição de erros menores corrigíveis, onde contagens altas indicam deterioração e/ou mídia de baixa qualidade. Muitos erros menores consecutivos podem levar à corrupção de dados. Nem todos os fabricantes e modelos de suportam a varredura de erros.

Arquitetura Sem uma quantidade significativa de memória, um computador só seria capaz de realizar operações fixas e produzir o resultado imediatamente, exigindo assim uma de hardware para que um novo programa fosse executado. Isso é frequentemente usado em dispositivos como calculadoras de mesa, processadores digitais de sinal e outros dispositivos especializados. Máquinas de Von Neumann diferem por possuírem uma memória na qual as de operação e os dados são armazenados, de modo que não precisam ser reconfiguradas para cada novo programa, mas podem simplesmente ser reprogramadas com novas instruções na memória. Elas também tendem a ser mais simples de projetar, pois um processador relativamente simples pode manter um estado entre computações sucessivas para construir resultados procedimentais complexos. A maioria dos computadores modernos são máquinas de von Neumann.

Armazenamento e memória No uso contemporâneo, o termo "armazenamento" geralmente se refere a um subconjunto do armazenamento de dados de computador que compreende dispositivos de armazenamento e suas mídias não acessíveis diretamente pela CPU, ou seja, armazenamento secundário ou terciário. Formas comuns de armazenamento incluem discos rígidos, unidades de disco óptico e dispositivos não voláteis (ou seja, dispositivos que retêm seu conteúdo quando o computador é desligado).Storage como definido no Microsoft Computing Dictionary, 4ª Ed. (c)1999 ou no The Authoritative Dictionary of IEEE Standard Terms, 7ª Ed., (c) 2000. Por outro lado, o termo "memória" é usado para se referir ao armazenamento de dados de em semicondutores, tipicamente a memória dinâmica de acesso aleatório (DRAM). A DRAM é uma forma de memória volátil que também requer que a informação armazenada seja periodicamente relida e reescrita, ou ; a RAM estática (SRAM) é semelhante à DRAM, embora nunca precise ser atualizada enquanto a energia for aplicada.

No uso contemporâneo, a hierarquia de memória de armazenamento primário e armazenamento secundário em alguns casos refere-se ao que historicamente era chamado, respectivamente, de armazenamento secundário e armazenamento terciário.

Primário

O armazenamento primário (também conhecido como memória principal, memória interna ou memória primordial), frequentemente referido simplesmente como memória, é o armazenamento diretamente acessível pela CPU. A CPU lê continuamente as instruções ali armazenadas e as executa conforme necessário. Qualquer dado operado ativamente também é armazenado lá de maneira uniforme. Historicamente, os primeiros computadores usavam , tubos de Williams ou tambores magnéticos rotativos como armazenamento primário. Em 1954, esses métodos pouco confiáveis foram amplamente substituídos pela memória de núcleo. A memória de núcleo permaneceu dominante até a década de 1970, quando os avanços na tecnologia de circuitos integrados permitiram que a memória semicondutora se tornasse economicamente competitiva.

Isso levou à moderna memória de acesso aleatório (RAM), que possui tamanho reduzido, é leve e relativamente cara. A RAM usada para armazenamento primário é uma memória volátil, o que significa que perde as informações quando não está energizada por um determinado tempo. Além de armazenar programas abertos, ela serve como e para melhorar o desempenho de leitura e escrita. Os sistemas operacionais "emprestam" capacidade da RAM para cache desde que não seja necessária para softwares em execução. A memória sobressalente pode ser utilizada como RAM drive para armazenamento temporário de dados em alta velocidade. Além da RAM principal de grande capacidade, existem mais duas subcamadas de armazenamento primário: Registradores do processador são a forma mais rápida de todas as formas de armazenamento de dados, localizados dentro do processador, com cada registrador geralmente mantendo uma palavra de dados (frequentemente 32 ou 64 bits). As instruções da CPU orientam a unidade lógica e aritmética a realizar vários cálculos ou outras operações nesses dados. Cache do processador é um estágio intermediário entre os registradores mais rápidos e a memória principal mais lenta, sendo mais rápido que a memória principal, mas com muito menos capacidade. O uso de uma configuração de cache hierárquica multinível também é comum, onde o cache primário é o menor e mais rápido, enquanto o cache secundário é maior e mais lento.

O armazenamento primário, incluindo ROM, EEPROM, Flash NOR e RAM, é geralmente . Tal memória é conectada direta ou indiretamente à unidade central de processamento por meio de um barramento de memória, composto por um barramento de endereços e um barramento de dados. A CPU envia primeiramente um número chamado endereço de memória através do barramento de endereço que indica a localização desejada dos dados. Em seguida, ela lê ou grava os dados nas células de memória usando o barramento de dados. Além disso, uma unidade de gerenciamento de memória (MMU) é um pequeno dispositivo entre a CPU e a RAM que recalcula o endereço de memória real. As unidades de gerenciamento de memória permitem o gerenciamento de memória; elas podem, por exemplo, fornecer uma abstração de memória virtual ou outras tarefas.

BIOS Um armazenamento primário não volátil contendo um pequeno programa de inicialização (BIOS) é usado para realizar o boot do computador, ou seja, para ler um programa maior do armazenamento secundário não volátil para a RAM e começar a executá-lo. Uma tecnologia não volátil usada para este propósito é chamada de memória somente de leitura (ROM). A maioria dos tipos de "ROM" não são literalmente apenas para leitura, mas são difíceis e lentas de gravar. Alguns sistemas embarcados executam programas diretamente da ROM, pois tais programas raramente são alterados. Computadores padrão não armazenam muitos programas em ROM, exceto o firmware, e utilizam grandes capacidades de armazenamento secundário.

Secundário O armazenamento secundário (também conhecido como memória externa ou armazenamento auxiliar) difere do armazenamento primário por não ser diretamente acessível pela CPU. Os computadores usam canais de entrada/saída para acessar o armazenamento secundário e transferir os dados desejados para o armazenamento primário. O armazenamento secundário é não volátil, retendo os dados quando a energia é desligada. Os sistemas de computação modernos normalmente possuem duas ordens de magnitude a mais de armazenamento secundário do que armazenamento primário, porque o armazenamento secundário é menos caro.

Em computadores modernos, discos rígidos (HDDs) ou unidades de estado sólido (SSDs) são geralmente usados como armazenamento secundário. O tempo de acesso por byte para HDDs ou SSDs é tipicamente medido em milissegundos, enquanto o tempo de acesso por byte para o armazenamento primário é medido em nanossegundos. Dispositivos de rotativos, como unidades de CD e DVD, têm tempos de acesso ainda mais longos. Outros exemplos de tecnologias de armazenamento secundário incluem unidades flash USB, disquetes, , fita de papel, cartões perfurados e discos RAM.

Para reduzir o tempo de busca e a latência rotacional, o armazenamento secundário, incluindo HDD, e SSD, é transferido de e para os discos em grandes blocos contíguos. O armazenamento secundário é endereçável por bloco; uma vez que a nos HDDs atinge o posicionamento adequado e os dados, os dados subsequentes na trilha são acessados muito rapidamente. Outra forma de reduzir o gargalo de I/O é usar múltiplos discos em paralelo para aumentar a largura de banda entre a memória primária e secundária, por exemplo, usando RAID.