Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.

  1. Sobre a Memória
  2. Armazenamento de dados
  3. Restrição de acesso
  4. Mapeamento de memória
  5. Registrador mapeamento de memória
  6. Bancos de memória
  7. Paginação

O 68K possui um barramento de memória de 24-bits, o que permite o endereçamento de locais que vão da posição 0 até 16.777.216 ou 0x000000 a 0xFFFFFF em notação hexadecimal.

A memória do 68K, diferente de outras arquiteturas como 8086 e 65816 e armazena dados em formato Big-Endian, pode ser paginada(bancos) e como não possui instruções de entrada e saída, utiliza registradores mapeados em memória.

A memória principal do 68K também é utilizada pela pilha(Stack), essa tem seu endereço predefinido no vetor de interrupções, vetor #0.

Os dados armazenados em memória pelo 68K utiliza o formato Big-endian(BE) que significa que um valor têm seu Byte 0 mais significativo(MSB) armazenado primeiro, seguido dos byte menos significativos. O que foi discutido é válido para os tipos de dado word e longword.

Tab.1: Longword em memória
Tamanho Byte 0 Byte 1 Byte 2 Byte 3
Longword (32-bits) 01 AB CD EF
Tab.2: Word em memória
Tamanho Byte 0 Byte 1
Word (16-bits) -- -- 01 23
Tab.3: Byte em memória
Tamanho Byte 0
Byte (8-bits) -- -- -- 01

Para melhor compreensão, abaixo uma tabela que abstrai a memória do 68K armazenando dados de tamanho Byte, Word e Longword armazenados no formato Big-Endian.

Tab. 4: Trecho de memória
Endereço 00 01 02 03 (...) 0C 0D 0E 0F
000000 01 12 23 45 (...) - 12 -- -
000010 - - - - (...) - - 12 34

Nos endereços de memória mostrados acima, temos os endereços 0x000000, 0x00000D e 0x00001E com seus respectivos valores 0x123456, 0x12 e 0x1234.

O 68000 possui uma restrição quando precisamos acessar valores dos tamanhos Word e Longword. Esse acesso só pode ser feito em endereços pares de memória. Caso essa restrição não seja levada em consideração, uma interrupção de erro será gerada.

Tab. 5: Trecho de memória
Endereço 00 01 02 03 04 (...) 0D 0E 0F
000000 -- 01 12 23 45 (...) -- -- -
000010 -- -- -- -- -- (...) 12 34 --

Na tabela acima temos os endereços ímpares 0x000001 e 0x00001D contendo valores Longword e Word respectivamente. Ao acessar esses endereços de memória para leitura, por exemplo, a interrupção Address error será executada.

A memória do 68K, para separação e responsabilidades, pode ser divida em partes. Essas partes são mapeadas com outros componentes do hardware para leitura e escrita de dados por intermédio do processador. Tendo todas as partes definidas, temos o mapeamento de memória(Memory Map).

Tab. 6: Exemplo de mapeamento
Endereço de memória Tamanho Uso
000000–$0FFFFF 1MB Banco 1: ROM
$100000–00FFFF 64KB RAM
(...) - -
$200000–2FFFFF 1MB Banco 2: ROM
(...) - -
$400000–401FFF 8KB Paleta de cores
(...) - -
$800000–BFFFFF 8MB Cartão de memória
$C00000–CFFFFF 128KB BIOS
(...) - -

O uso, definição do mapeamento é de total responsabilidade do hardware que utiliza o 68K como processador principal. O 68K não possui nenhum mapeamento nativo.

O 68000 não possui instruções de Input e Output que utilizam portas para comunicação como nos processadores 8086. A forma de se comunicar ou trocar informações com periféricos ligados ao processador é via registradores mapeados em memória que nada mais são que endereços fixos destinados à leitura e escrita de dados.

Como exemplo real de registradores mapeados em memória, temos os registradores abaixo destinados à comunicação com um processadores vídeo.

Tab. 7: Exemplo de mapeamento
Endereço do Registrador Tamanho Uso
$3C0000 Word Endereço de destino
$3C0002 Word Dado para leitura ou escrita
$3C0004 Word Incremento automático após leitura/escrita

Abaixo, alguns exemplos de dispositivos e outros processadores que podem utilizar registradores mapeados em memória.

Dispositivos
  1. Mouse
  2. Teclado
  3. Joystick
  4. Áudio
  5. Vídeo

Na tabela acima, o processador "ligado" ao 68K irá realizar a leitura dos dados nos registradores acima e processar seus dados de acordo com o uso a qual estão destinado.

O uso, definição de endereço e outras configurações é de total responsabilidade do hardware que utiliza o 68K como processador principal.

O 68k com seu barramento de memória de 24-bits pode ter um chip MBC(Memory Bank Controller) para gerenciar seus 16MB de memória virtual e carregar dados de outros tipos de memória em seus bancos expandindo assim sua "limitação" de memória.

Tab. 8: bancos de memória
Registrador Banco destino Uso Configuração
0 000000-00FFFF Programa Fixo
1 010000-01FFFF Programa trocável
2 020000-02FFFF Programa trocável
3 030000-03FFFF Programa trocável
(...) (...) Programa Trocável
B 0B0000-0BFFFF Áudio Trocável
C 0C0000-0CFFFF Vídeo Trocável
D 0D0000-0DFFFF SRAM Trocável
(...) (...) (...) (...)

Cada MBC têm seu funcionamento particular sendo o funcionamento de registradores em memória utilizados para informar qual banco da memória física deve ser carregado e em qual banco de memória deve ser seu destinado.

Tab. 8: Registrador de banco
Endereço do Registrador Tamanho Uso
$3C0001 Banco 1
$3C0002 Banco 2
$3C0003 Banco 3

Sistemas operacionais e kernels podem utilizar bancos de memória para carregar partes de softwares com realocação código, sendo possível que seja executado a partir de qualquer banco.

Nenhum MBC nativo está disponível no 68k ficando na responsabilidade do hardware que usa esse processador como principal ou secundário.

  1. 12/03/2026 - Revisão 2 - Ajustes: pontuais, ícone e objetivo 'Restrição de acesso'; Adição: Bancos de memória
  2. 05/09/2024 - Revisão 1 - Correção de erros gramaticais e ajustes em tabelas
  3. 01/04/2024 - versão inicial