Objetivos
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, 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.
Registrador mapeado em memória
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
- Mouse
- Teclado
- Joystick
- Áudio
- 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.
Histórico de atualizações
- 12/03/2026 - Revisão 2 - Ajustes: pontuais, ícone e objetivo 'Restrição de acesso'; Adição: Bancos de memória
- 05/09/2024 - Revisão 1 - Correção de erros gramaticais e ajustes em tabelas
- 01/04/2024 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.