« Arquitetura do Super Nintendo (index)

Arquitetura do Super Nintendo

Chapter 3: CPU


Índice

  1. Modernizando o 6502
  2. A nova CPU
  3. Adições da Ricoh
    1. Acesso rápido à memória
    2. Falha de segmentação

A escolha do processador do Super Nintendo é peculiar. Ao contrário de seu concorrente que incluía um 68000 completo, o chip do SNES não é uma mudança radical de seu antecessor. Recapitulando, o NES usava uma CPU 6502 modificada, um ingrediente admirado dos computadores do final dos anos 70 e início dos anos 80. Agora, para pavimentar o caminho para a nova década (os anos 90), a Nintendo optou por uma solução mais conservadora (e mais barata): o 65C816, uma extensão de 16 bits do 6502.

Modernizando o 6502

A CPU 65C816 tem sua origem da Western Design Center, especialmente de Bill Mensch, um ex-membro da equipe 6502 da MOS e, antes disso, parte da equipe 6800 da Motorola. Em 1978, um ano após deixar a MOS, Mensch fundou a Western Design Center (WDC), uma empresa de semicondutores que envia clones do MOS 6502 com melhorias atraentes (ou seja, projeto CMOS, instruções extras, correções de circuito, novos modos de endereçamento, etc.).

Um dia, a Apple procurou a WDC para projetar uma variante retrocompatível do 6502 que pudesse processar quantidades maiores de dados. Esse projeto tornou-se o 65C816 que, após alguns contratempos durante a fase de desenvolvimento, a Apple finalmente o usou em uma nova máquina chamada Apple IIGS.

Enquanto isso, a Nintendo estava desfrutando de um bom relacionamento com a Ricoh e seu conjunto de chips sob-medida para o NES. Não encontrei o documento exato que conecte a Ricoh com a WDC, mas o que posso confirmar é que, em algum momento, a WDC concordou em licenciar seus projetos do 65C816 com a Ricoh . Consequentemente, a Ricoh adaptou o projeto aos novos requisitos do Super Nintendo e o nomeou de Ricoh 5A22, fornecido exclusivamente à Nintendo.

A nova CPU

Como já apresentado, o processador principal deste console é o Ricoh 5A22, uma CPU de 16 bits.

Ao contrário do Apple IIGS, que desfrutava de retrocompatibilidade com o software Apple II, o Super Nintendo não é compatível com os jogos do NES (embora, ao olhar para a escolha do processador, haja uma leve possibilidade de que o SNES tenha sido originalmente planejado para ser compatível com jogos do NES, quem sabe).

Continuando, a CPU emprega uma velocidade de clock variável que chega até 3,58 MHz durante as operações de registro e até 1,79 MHz ao acessar os barramentos mais lentos (ou seja, a porta serial/controles).

Em resumo, o 5A22 possui as seguintes características:

Adições da Ricoh

O 65C816 foi uma CPU aceitável de propósitos gerais para sua década (os anos 80). No entanto, a Nintendo planejou seu console para durar durante toda a década de 90. Assim, a Ricoh teve que elevar o nível de seu jogo, se me permite o trocadilho.

Como consequência, a primeira atualização aparente foi a adição de unidades de multiplicação e divisão de 16 bits, que fornece à CPU a capacidade de realizar essas operações por hardware (o 65C816 não inclui nenhuma instrução dedicada para este tipo de operações aritméticas).

Acesso rápido à memória

A segunda adição foi duas DMA exclusivas (Direct Memory Access) que habilita a transferência de dados sem a intervenção da CPU (resultando velocidades maiores). Para que esse projeto funcione, as regiões de memória são referenciadas usando dois barramentos de endereços diferentes :

Quando uma DMA é configurada, a origem deve vir de um barramento diferente do destino.

Além disso, as duas DMA não são idênticas e fornecem funcionalidades muito distintas :

Por fim, o sistema fornece oito canais para configurar as transferências do DMA, permitindo enviar até oito transferências independentes de uma só vez.

Falha de segmentação

Este console também apresenta uma "anomalia" chamada Barramento Aberto: se houver uma instrução tentando ler de um endereço não mapeado/inválido, o último valor lido é fornecido em seu lugar (a CPU armazena esse valor em um registrador chamado Registro de Dados da Memória ou MDR, do inglês Memory Data Register) e a execução continua em um estado imprevisível.

Para comparação, o 68000 usa uma tabela de vetores para lidar com exceções, então a execução será redirecionada sempre que uma falha for detectada.


Previous: 2. Uma breve introdução

Next: 4. Gráficos


Rodrigo Copetti © 2026 RSS Feed

Mudar para a edição moderna

Início · Artigos · Suporte · Sobre o autor · Sobre o site