Assim como seus competidores mais próximos, que estiveram cheios de opções ao longo da febre do RISC, a Sega precisou passar por todos os dilemas de escolher um novo fornecedor que pudesse erguer a próxima geração de jogos (inclusive aqueles com capacidades "3D"). No final, a empresa optou por uma CPU recente, cujo criador estava desesperado atrás de algum adotante: a Hitachi SuperH, ou "SH".
Ainda que, de início, a nova criação da Hitachi tenha focado em aplicativos embarcados, ela estreou artifícios modernos, como :
- Uma arquitetura de load/store, o que significa que as instruções não misturam memória com operações do registro, o que resulta num design de CPU mais limpo e escalável. Este é um dos pilares das CPUs RISC.
- Barramento de dados 32-bit e ULA, que permite à CPU mover e operar uma quantidade maior de dados (valores de 32 bits) de uma só vez, sem que isso consuma ciclos extras.
- 16 registradores de 32 bits para uso geral, o dobro do que havia em CPUs anteriores como a Motorola 68000. Essa foi mais uma decisão de design derivada das diretrizes RISC .
- Barramento de endereços de 32 bits, permitindo o endereçamento de até 4 GB de memória (adeus mappers).
- Um caminho de dados segmentado com cinco estágios: A execução das instruções é dividida em cinco passos ou estágios. A CPU põe em fila até cinco instruções, e cada uma é alocada em um estágio. Isso permite que todos os recursos da CPU sejam aproveitados sem necessidade de tempo ocioso, enquanto também aumenta o número de instruções executadas por unidade de tempo.
- Uma unidade de multiplicação de 16 bits: Faz multiplicações com inteiros de 16 bits.
Além disso, o SuperH apresenta um novo conjunto de instruções, chamado SuperH ISA, o qual, mesmo com a adoção do design RISC, tem todas as suas instruções no tamanho de 16 bits. Isso é uma surpresa, pois essa CPU opera com palavras de 32 bits, portanto seria esperado que as instruções tivessem o mesmo comprimento. Ainda assim, a Hitachi conseguiu encaixar seu conjunto de instruções usando metade do tamanho. Esse formato não apenas reduz o tamanho dos programas: como a CPU busca por instruções em lotes de 32 bits, ela pode captar duas instruções num único ciclo. Num geral, essa técnica de comprimir o conjunto de instruções ajudou a lidar com uma preocupação comum das arquiteturas baseadas em RISC, chamada "densidade de código". Essas arquiteturas acabavam requerindo mais instruções (e, portanto, mais memória) para executar as mesmas tarefas do que sistemas não RISC.
As ramificações
Por outro lado, as desvantagens dos designs RISC ainda estão presentes no SuperH, como os hazards de controle. Por consequência, os programas precisam incluir espaços para atraso de desvio condicional, para evitar erros de cálculo. Para remediar a situação, o SuperH possui instruções de atraso de desvio condicional, que são instruções de desvio pré-equipadas com um espaço de atraso .
Hazards de dados também estão presentes, mas não são resolvidos pelo programador ou pelo compilador: a CPU automaticamente irá reter a pipeline quando for necessário.
A Sega não está satisfeita
No entanto, nada disso impediu a Sega de manifestar sua insatisfação com o produto final. Isso ocorreu principalmente por causa do pequeno multiplicador de 16 bits, percebido como um funil para o processamento de grandes quantidades de dados (uma nova necessidade dos jogos 3D). Por isso, a Hitachi sintetizou uma segunda revisão, com uma unidade multiplicadora estendida e outros requisitos da lista da Sega , o que levou a uma nova CPU chamada SH-2.

Os dois chips SH-2 encontrados no Sega Saturn
Ainda assim, a Sega não pôde ficar parada após ouvir a escolha de CPU que seus competidores haviam feito. Ela pediu à Hitachi que aumentasse a taxa de clock do SH-2 — uma tarefa impossível uma vez que o chip estivesse pronto para fabricação. Por sorte, a Hitachi tinha outro truque na manga: multiprocessamento. Durante a fase de pesquisa do SH, o time havia adicionado circuitos mínimos capazes de permitir que o SH funcionasse com outros SHs dentro de um mesmo sistema ao mesmo tempo. Ao ouvir isso, a Sega decidiu que o Sega Saturn teria uma configuração de dois chips. E o resto é história.
O produto final
Com as origens explicadas, vamos dar uma olhada no produto entregue.
O console tem não uma, mas duas CPUs Hitachi SH-2 rodando a ~28.63 MHz cada . Ainda que sejam idênticas fisicamente, elas funcionam num estado master-slave, onde a primeira deve enviar comandos para a segunda. É possível que atinjam certo grau de paralelismo, ainda que ambas dividam o mesmo barramento externo (o que pode levar a congestionamento).
A Hitachi preparou diferentes variantes do SH-2 e as vendeu como parte de uma série chamada "SH7600". Todas elas possuem :
- O já mencionado caminho de dados segmentado em cinco estágios e a SuperH ISA. Este último foi estendido com seis instruções adicionais para desvio de dados especializado e aritmética.
- Uma unidade de multiplicação de 32 bits melhorada, a qual agora faz multiplicações com integrais de 32 bits.
- Um barramento externo de dados de 32 bits, o qual é dividido entre as duas CPUs.
O chip específico selecionado para este console, o "SH7604", contém as seguintes adições :
- 4 KB de cache: Guarda um pequeno número de instruções e dados previamente buscados da memória, para acelerar futuras leituras.
- Uma unidade de divisão de 32 bits: Executa divisões com integrais de 32 bits.
- Controlador interno de DMA: Transfere dados da memória sem intervenção da CPU.
- Suporte a little endian, permitindo que a CPU entenda valores codificados na ordem oposta. Isso é útil quando a memória externa é dividida com outros processadores.
É importante ressaltar que ter duas CPUs não quer dizer que os jogos irão rodar duas vezes mais rápido! Na prática, porém, isso requer uma programação muito complexa, que administre com eficiência CPUs que dividam o mesmo barramento. Portanto, o uso organizado do cache tem um papel crucial nesse console.
Uma escolha dividida de memória
O Sega Saturn contém um total de 2 MB de RAM para uso geral, chamada Work RAM (WRAM). Esses dois mega são divididos entre dois blocos bem diferentes:
- O primeiro bloco providencia 1 MB de SDRAM, e devido à sua rápida taxa de acesso, esse bloco também é chamado de "WRAM-H".
- O outro bloco contém o outro megabyte, mas se chama "WRAM-L", pois ele usa DRAM, o que resulta em taxas menores.
O terceiro (sim, mais um) processador
Parece que, surpreendentemente, duas CPUs SH-2 ainda não eram o bastante para a Sega. Então, para acelerar o processamento de vetores (ao custo de maior complexidade), o console abriga um coprocessador adicional, o Saturn Control Unit, ou "SCU".
É um chip composto de dois módulos :
- Um controlador DMA: Arbitra o acesso à WRAM pelos três barramentos principais sem a intervenção das CPUs.
- Um DSP: Usado como uma "unidade de geometria" de ponto fixo. Comparado ao SH-2, faz cálculos de matriz/vetores tais como transformações 3D e iluminação mais rapidamente. Entretanto, ele roda em meia velocidade, e seu conjunto de instruções é mais complexo. Além disso, ele precisa da WRAM do SH-2 para buscar e guardar dados (usando DMA).
Pelo lado positivo, a SCU vem com 32 KB de SRAM para uso local. Do lado negativo, a SCU não é capaz de acessar a WRAM-L.