Tema 7 - Arquitetura Cisc X Risc
O que é CISC (em mais detalhe, mas simples)
CISC significa Complex Instruction Set Computer — processadores com
muitas instruções, algumas bem complexas.
Cada instrução pode fazer várias coisas de uma vez: buscar dados na
memória, executar uma operação (soma, multiplicação, manipulação de
endereços) e escrever o resultado de volta na memória.
Por isso uma única instrução em CISC muitas vezes corresponde
diretamente a uma linha de código em alto nível (o compilador traduz
com facilidade).
Como funciona na prática (passo a passo)
Uma instrução CISC pode ter que buscar operandos na memória
principal, mandar esses dados para a ULA (unidade de cálculo), e
depois gravar o resultado de volta na memória — tudo controlado por
uma unidade de controle que precisa decodificar instruções
complexas.
A Unidade de Controle em CISC é mais complicada, porque precisa
entender muitos formatos de instrução e vários modos de
endereçamento (maneiras diferentes de dizer onde estão os dados).
Como funciona na prática (passo a passo)
Uma instrução CISC pode ter que buscar operandos na memória
principal, mandar esses dados para a ULA (unidade de cálculo), e
depois gravar o resultado de volta na memória — tudo controlado por
uma unidade de controle que precisa decodificar instruções
complexas.
A Unidade de Controle em CISC é mais complicada, porque precisa
entender muitos formatos de instrução e vários modos de
endereçamento (maneiras diferentes de dizer onde estão os dados).
O objetivo original do CISC era reduzir o número de instruções no
código, economizando memória e simplificando a programação — não
necessariamente aumentar a velocidade de execução.
Velocidade: registrador × memória
Registradores → ficam dentro do processador, então o acesso é
quase instantâneo (em um ciclo de clock).
Memória principal (RAM) → fica fora do processador, então o acesso
é muito mais lento (vários ciclos de clock).
💡 É como a diferença entre:
Pegar uma caneta que está na sua mão (registrador),
Ou levantar da cadeira e ir buscar uma caneta na estante (memória).
🚀 O que é o pipeline do processador
👉 O pipeline é uma técnica usada para aumentar a velocidade de
execução das instruções no processador.
Ele permite que várias etapas diferentes de várias instruções sejam
executadas ao mesmo tempo, como uma linha de montagem em uma
fábrica.
🏭 Analogia simples: linha de montagem
Imagine uma fábrica de montagem de carros 🚗:
Etapa 1: colocar o chassi
Etapa 2: colocar as portas
Etapa 3: pintar
Etapa 4: revisar
Sem pipeline, seria assim:
Primeiro, monta um carro inteiro (passa pelas 4 etapas);
Só depois começa o próximo carro.
Com pipeline:
Enquanto o Carro 1 está sendo pintado (etapa 3),
o Carro 2 já está recebendo as portas (etapa 2),
e o Carro 3 está tendo o chassi montado (etapa 1).
💡 Resultado: vários carros estão sendo montados ao mesmo tempo,
cada um em uma etapa diferente — e a produção total fica muito mais
rápida.
Exatamente, Pedro — na maioria dos casos, as operações
aritméticas acontecem nos registradores. Vou detalhar
direitinho:
⚙️ Como funciona uma operação aritmética no processador
1. Registradores são usados como “mesa de trabalho”
o Antes de fazer uma soma, multiplicação ou qualquer cálculo, os
valores são carregados nos registradores (se ainda não
estiverem lá).
o Exemplo: R1 = 5, R2 = 3.
2. ULA (Unidade Lógica e Aritmética)
o A operação é realizada dentro da CPU, na ULA, usando os
valores dos registradores.
o Exemplo: R3 = R1 + R2 → a soma acontece dentro da CPU, o
registrador R3 guarda o resultado.
3. Resultado pode ser armazenado
o Depois da operação, o resultado pode permanecer no
registrador ou ser escrito na memória se for necessário.
A abordagem RISC (Reduced Instruction Set Computer - Computador com
Conjunto Restrito de Instruções) se refere às escolhas na hora de projetar a
arquitetura de um processador. Essa abordagem possui poucas instruções
genéricas, com as quais se montam as operações mais complexas. Além disso,
as instruções realizam operações apenas sobre os registradores, exceto nos
casos de instruções específicas, que servem apenas para buscar ou guardar
dados na memória.
Com uma pequena quantidade de instruções, a Unidade de Controle do
processador é bastante simples para decodificar a instrução para ser
executada. Dessa forma, sobra espaço para mais registradores.
Veja um esquema que ilustra a arquitetura RISC:
🧠 Origem do RISC
Surgiu no início dos anos 1980 para resolver problemas dos
processadores CISC.
Nos processadores antigos (CISC), muitas instruções complexas eram
pouco usadas, a Unidade de Controle era grande e havia poucos
registradores, forçando mais acessos à memória.
A ideia do RISC era criar uma arquitetura mais simples, rápida e
previsível.
⚙️ Premissas e características principais
1. Conjunto reduzido de instruções
o Menos instruções → Unidade de Controle mais simples → mais
espaço para registradores.
o Enquanto CISC tinha até 8 registradores, RISC frequentemente
tem 32 ou mais, chegando até centenas.
2. Execução com tempo uniforme
o Cada instrução leva quase o mesmo número de ciclos (1 ciclo
por etapa), facilitando o pipeline.
o Exceção: LOAD e STORE, que acessam memória, são mais
lentas.
3. Operação sobre registradores
o Todas as operações (adição, subtração, multiplicação) ocorrem
nos registradores, não na memória.
o Apenas LOAD (ler da memória) e STORE (escrever na memória)
acessam a RAM.
🏭 Pipeline no RISC
Etapas típicas:
1. BI – Buscar instrução
2. DI – Decodificar instrução
3. EXE – Executar operação
4. AM – Acesso à memória (só LOAD/STORE)
5. WB – Escrever resultado no registrador
Como cada instrução é simples e uniforme, o pipeline funciona
próximo ao ideal, permitindo executar várias instruções
simultaneamente em diferentes etapas.
No CISC, cada instrução pode ser complexa e variável,
então o tempo de execução não é fixo. Isso acontece
porque:
⚙️ Quando LOAD e STORE são usados no RISC
1. LOAD → usado quando você precisa carregar um valor da memória
para um registrador.
o Exemplo: a = 3 → precisa buscar o valor 3 na memória e colocar
em um registrador antes de operar.
2. STORE → usado quando você precisa guardar o resultado de um
registrador na memória.
o Exemplo: a = a + 5 → depois da soma no registrador, o resultado
precisa ser armazenado em a na memória.
⚡ Quando não ocorre
Se os valores já estão nos registradores, nenhuma instrução LOAD ou
STORE é necessária.
o Exemplo:
o reg1 = 10;
o reg2 = reg1 + 5;
Aqui tudo ocorre nos registradores, sem tocar na
memória.
Quanto mais variáveis ficam nos registradores, menos acessos à
memória serão feitos, e o pipeline funciona quase que perfeitamente.
O pipeline ideal tenta realizar 1 instrução por ciclo, com cada etapa sendo
executada de forma independente em 1 ciclo.
Embora cada instrução leve n ciclos para ser executada (sendo n o número de
estágios do pipeline), o pipeline como um todo finaliza 1 instrução por ciclo.
1⃣ R-R (Registrador → Registrador)
Operação entre dois registradores.
Tudo acontece dentro da CPU, sem tocar a memória.
Mais rápido porque registradores são muito rápidos.
R-M (Registrador → Memória)
Um operando está no registrador e o outro na memória.
O resultado pode ser escrito no registrador ou na memória
dependendo da instrução.
M-R (Memória → Registrador)
O dado da memória vai para o registrador antes de ser usado.
M-M (Memória → Memória)
Operação direta entre dois endereços de memória.
Muito lenta, porque cada acesso à memória é demorado.
Frequentemente usada em CISC, onde instruções complexas podem
acessar a memória direto.
RISC prefere R-R e R-I, com LOAD/STORE para
acessar a memória.
CISC pode usar M-M, R-M, instruções que acessam a
memória direto e fazem operações complexas.