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

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

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 armazena dados em formato Big-Endian, pode ser paginada 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 realizar 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 tão conhecido mapeamento de memória.

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. A forma de se comunicar ou trocar informações com periféricos ligados ao processador é via registradores mapeados em memória que são endereços fixos destinados à leitura e escrita de dados.

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

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

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.

  1. 05/09/2024 - Revisão 1 - Correção de erros gramaticais e ajustes em tabelas
  2. 01/04/2024 - versão inicial