Arquitetura Interna de Memórias: Endereçamento e Organização

Este tutorial foca na arquitetura interna das memórias digitais, destacando os conceitos de endereçamento e organização. Ao final, você entenderá como são estruturadas internamente as memórias, como se dá o mapeamento de endereços e quais os principais blocos que compõem este tipo de dispositivo.

Introdução🔗

Em eletrônica digitalIntrodução à Eletrônica Digital: Conceitos Básicos e AplicaçõesIntrodução à Eletrônica Digital: Conceitos Básicos e AplicaçõesDescubra os conceitos e aplicações essenciais da Eletrônica Digital, do funcionamento de sinais binários aos transistores, e comece sua jornada tecnológica., as memórias são componentes essenciais para armazenar dados e instruções em sistemas como computadores, microcontroladoresMicroprocessadores e Microcontroladores: Diferença entre microprocessador e microcontroladorMicroprocessadores e Microcontroladores: Diferença entre microprocessador e microcontroladorDescubra as principais diferenças entre microprocessadores e microcontroladores, entendendo suas aplicações, custos e consumo de energia em sistemas embarcados. e dispositivos embarcados de todos os portes. A quantidade de memória, a velocidade de acesso e o tipo de armazenamento podem variar conforme a aplicação.

Porém, independentemente do tipo específico de memóriaBoas Práticas de Programação Embarcada e Otimização de CódigoBoas Práticas de Programação Embarcada e Otimização de CódigoDescubra técnicas e práticas essenciais para otimizar o código de sistemas embarcados, garantindo desempenho e eficiência em projetos eletrônicos. (RAM, ROM, Flash etc.), há elementos comuns em sua arquitetura interna, voltados tanto para a forma como os bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. são armazenados, quanto para o modo como eles são endereçados (acessados).

Neste tutorial, vamos explorar essas estruturasEstruturas e Uniões: Organizando Dados ComplexosEstruturas e Uniões: Organizando Dados ComplexosAprenda como aplicar estruturas e uniões em SystemVerilog. Descubra a diferença entre packed e unpacked com exemplos práticos e dicas para um design otimizado. internas, entendendo:

Visão Geral da Arquitetura de Memória🔗

Em geral, uma memória digitalIntrodução à Eletrônica Digital: Conceitos Básicos e AplicaçõesIntrodução à Eletrônica Digital: Conceitos Básicos e AplicaçõesDescubra os conceitos e aplicações essenciais da Eletrônica Digital, do funcionamento de sinais binários aos transistores, e comece sua jornada tecnológica. pode ser visualizada como uma matriz de células (arranjo bidimensional): cada célula é responsável por armazenar um bitSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de informação. Algumas memórias podem armazenar palavrasIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaDomine fundamentos da eletrônica digital: bits, bytes, palavras e clock que impulsionam o desempenho e eficiência de sistemas modernos. (word) completas em cada linha, dependendo do número de bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos..

Podemos identificar alguns blocos essenciais na arquitetura interna da maioria das memórias:

1. Linhas de Endereço (Address Lines): Recebem o endereço (em binárioSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos.) que indica qual posição de memória deve ser acessada.

2. DecodificadorCodificadores e Decodificadores: Estrutura e FuncionalidadeCodificadores e Decodificadores: Estrutura e FuncionalidadeAprenda os princípios dos codificadores e decodificadores, entendendo suas funções, aplicações e implementações na eletrônica digital com exemplos práticos. de Linha (Row Decoder): Converte parte dos bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de endereço para selecionar uma linha (row) específica na matriz.

3. DecodificadorCodificadores e Decodificadores: Estrutura e FuncionalidadeCodificadores e Decodificadores: Estrutura e FuncionalidadeAprenda os princípios dos codificadores e decodificadores, entendendo suas funções, aplicações e implementações na eletrônica digital com exemplos práticos. de Coluna (Column Decoder): Converte os bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. restantes do endereço para selecionar qual coluna (ou conjunto de colunas) na matriz deve ser habilitada para leitura/escrita.

4. Array de Células de MemóriaBoas Práticas de Programação Embarcada e Otimização de CódigoBoas Práticas de Programação Embarcada e Otimização de CódigoDescubra técnicas e práticas essenciais para otimizar o código de sistemas embarcados, garantindo desempenho e eficiência em projetos eletrônicos.: Região bidimensional principal onde cada célula representa um bitSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. ou parte de uma palavraIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaDomine fundamentos da eletrônica digital: bits, bytes, palavras e clock que impulsionam o desempenho e eficiência de sistemas modernos. de dados.

5. Linhas de Dados (Data Lines): São os caminhos por onde os dados efetivos são enviados para leitura ou recebidos para escrita.

6. Circuitos de Controle e Sinalização: Incluem lógica de ativação de leitura (Read Enable), escrita (Write Enable), habilitação de chip (ChipCircuito Integrado (CI)Circuito Integrado (CI)Descubra os fundamentos dos Circuitos Integrados, sua história e aplicações na eletrônica digital. Aprenda os conceitos essenciais para iniciar. Enable), entre outros sinais.

7. Sense Amplifiers (Circuitos de Leitura): Dispositivos que amplificam o sinal proveniente de uma célula de memória (especialmente em arquiteturas de baixa correnteLei de Ohm e Leis de Kirchhoff: Aplicações PráticasLei de Ohm e Leis de Kirchhoff: Aplicações PráticasExplore os fundamentos da eletricidade: aprenda a aplicar a Lei de Ohm e as Leis de Kirchhoff para analisar circuitos simples e complexos com clareza. ou em DRAM, cujo sinal de célula é muito pequeno).

Abaixo, um diagrama ilustrativo em Mermaid que destaca os blocos gerais:

graph LR A(Entradas de Endereço) --> B[Decodificador de Linha] A(Entradas de Endereço) --> C[Decodificador de Coluna] B --> D[Matriz de Células de Memória] C --> D D --> E(Linhas de Dados) style A fill:#f9f,stroke:#333,stroke-width:1px style B fill:#ff9,stroke:#333,stroke-width:1px style C fill:#ff9,stroke:#333,stroke-width:1px style D fill:#9ff,stroke:#333,stroke-width:1px style E fill:#9f9,stroke:#333,stroke-width:1px

Endereçamento e Organização🔗

Arranjo em Matrizes

Quando falamos sobre endereçamento, estamos nos referindo a como cada posição de memória (célula ou conjunto de células) é encontrada a partir de um endereço binárioSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos.. Imagine que temos um barramento de endereço com n bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos.. Esse barramento n será dividido em duas partes: parte para linha (row) e parte para coluna (column).

Um exemplo simplificado:

Esse particionamento entre row e column varia conforme o projeto da memóriaBoas Práticas de Programação Embarcada e Otimização de CódigoBoas Práticas de Programação Embarcada e Otimização de CódigoDescubra técnicas e práticas essenciais para otimizar o código de sistemas embarcados, garantindo desempenho e eficiência em projetos eletrônicos..

Tamanho da Memória (em palavras)Bits de Endereço NecessáriosDivisão Exemplo (Row x Column)
1024 (1K)10 bits5 bits (linha) x 5 bits (coluna)
4096 (4K)12 bits6 bits (linha) x 6 bits (coluna)
65536 (64K)16 bits8 bits (linha) x 8 bits (coluna)

Observe que a divisão entre quantos bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. vão para row e quantos vão para column é uma decisão de projetoIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital. que afeta:

Caminho de Leitura e Escrita

Quando um endereço é colocado na entrada:

1. Os bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de linha são enviados ao decodificadorCodificadores e Decodificadores: Estrutura e FuncionalidadeCodificadores e Decodificadores: Estrutura e FuncionalidadeAprenda os princípios dos codificadores e decodificadores, entendendo suas funções, aplicações e implementações na eletrônica digital com exemplos práticos. de linha, que ativa a linha correspondente no array de células.

2. Os bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de coluna são enviados ao decodificadorCodificadores e Decodificadores: Estrutura e FuncionalidadeCodificadores e Decodificadores: Estrutura e FuncionalidadeAprenda os princípios dos codificadores e decodificadores, entendendo suas funções, aplicações e implementações na eletrônica digital com exemplos práticos. de coluna, que seleciona qual coluna dentro daquela linha deve ser acessada.

3. Se o modo for leitura, a linha de memóriaBoas Práticas de Programação Embarcada e Otimização de CódigoBoas Práticas de Programação Embarcada e Otimização de CódigoDescubra técnicas e práticas essenciais para otimizar o código de sistemas embarcados, garantindo desempenho e eficiência em projetos eletrônicos. selecionada transmite os bits até os sense amplifiers, que reforçam o sinal e o enviam para as linhas de dados.

4. Se o modo for escrita, a linha de dados recebe o novo valor (bits de entrada) e, com a coluna habilitada, grava tais bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. na célula correspondente.

Organização de Palavras🔗

Dependendo do tamanho de cada posição de memóriaBoas Práticas de Programação Embarcada e Otimização de CódigoBoas Práticas de Programação Embarcada e Otimização de CódigoDescubra técnicas e práticas essenciais para otimizar o código de sistemas embarcados, garantindo desempenho e eficiência em projetos eletrônicos. (por exemplo, 8 bits, 16 bits, 32 bits, etc.), pode-se ter diferentes formas de organização:

Em aplicações modernas, para memórias de uso geral, é comum endereçamento por byteIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaDomine fundamentos da eletrônica digital: bits, bytes, palavras e clock que impulsionam o desempenho e eficiência de sistemas modernos. (1 byte por endereço) ou até por palavraIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaDomine fundamentos da eletrônica digital: bits, bytes, palavras e clock que impulsionam o desempenho e eficiência de sistemas modernos. de 32 bits em sistemas maiores. Esse tipo de organização facilita o acesso a vários bits ao mesmo tempo, reduzindo a necessidade de múltiplas leituras/escritas para obter uma informação completa.

Resumo e Conceitos-Chave🔗

1. Memórias Internas são Organizadas em Matrizes

  • Linhas e colunas de células de armazenamento.

2. Endereçamento Envolve Decodificação

3. Leitura e Escrita Dependem de Sinais de Controle

4. Largura de Dados afeta a Organização

Conclusão🔗

A arquitetura interna das memórias digitais segue um princípio de matriz de células, onde a seleção (endereçamento) é feita por meio de decodificadoresCodificadores e Decodificadores: Estrutura e FuncionalidadeCodificadores e Decodificadores: Estrutura e FuncionalidadeAprenda os princípios dos codificadores e decodificadores, entendendo suas funções, aplicações e implementações na eletrônica digital com exemplos práticos. de linha e coluna. Esse paradigma básico se mantém, seja em memórias de uso geral (como em computadores pessoais), seja em memórias embarcadas em sistemas IoTProjetos Práticos: Projeto final: aplicação específica (ex.: IoT, robótica, comunicação)Projetos Práticos: Projeto final: aplicação específica (ex.: IoT, robótica, comunicação)Descubra como montar um sistema IoT completo utilizando sensores, microcontrolador e conexão Wi-Fi para monitorar e analisar condições ambientais. e dispositivos de controle industrial.

Compreender como os bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de endereço são divididos e como ocorre a organização interna permite projetar sistemas mais eficientes e reconhecer limitaçõesIntegração de Randomização com Ferramentas de VerificaçãoIntegração de Randomização com Ferramentas de VerificaçãoDescubra como a integração da randomização em SystemVerilog e ferramentas de verificação potencializam a cobertura e qualidade dos testes em designs complexos. e vantagens de cada tipo de organização. De dispositivos simples até os mais complexos, o conceito de endereçamento linear e a composição interna em um arranjo bidimensional se repetem e formam a base para todo o funcionamento das memórias digitais.

Próximos Passos:

<sub>Autor: Guia de estudos para estudantes e profissionais iniciantes ou em transição, bem como entusiastas de tecnologia e makers interessados em circuitos, microcontroladores e robótica.</sub>
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

  • A comprehensive resource for electronics, including tutorials on memory systems and digital logic: www.allaboutcircuits.com
  • A forum where professionals and enthusiasts discuss electronics, including memory architecture questions: electronics.stackexchange.com
  • Ben Eater's YouTube channel covers computer science and electronics topics, including memory systems: www.youtube.com/c/BenEater
  • MIT OpenCourseWare offers a wide range of courses that could include topics on digital memory architectures: ocw.mit.edu
  • Provides detailed tutorials on electronics, including digital memory systems: www.electronics-tutorials.ws

Compartilhar artigo