A CPU

Organização interna e arquiteturas de conjunto de instruções

Organização de Computadores

O que é a CPU?

A CPU (Unidade Central de Processamento), ou processador, é o componente que executa as instruções dos programas. É o "cérebro" do computador.

Ela faz três coisas continuamente: busca instruções na memória, decodifica o que cada uma significa e as executa, manipulando dados. Tudo no ritmo do clock.

Componentes internos

ComponenteFunção
Unidade de Controle (UC)Comanda e sincroniza tudo: gera os sinais que dizem a cada parte o que fazer e quando.
Unidade Lógica e Aritmética (ULA)Executa operações aritméticas (+, −, ×) e lógicas (AND, OR, NOT, comparações).
RegistradoresMemórias minúsculas e ultrarrápidas que guardam os dados em uso imediato.
Barramentos internosConectam UC, ULA e registradores entre si.
ClockSinal periódico que dá o ritmo de todas as operações.

Registradores importantes

RegistradorPapel
PC (Program Counter / Contador de Programa)Guarda o endereço da próxima instrução.
IR (Instruction Register)Armazena a instrução que está sendo decodificada.
MAR (Memory Address Register)Guarda o endereço de memória a ser acessado.
MBR/MDR (Memory Buffer/Data Register)Guarda o dado lido ou a ser escrito na memória.
ACC / registradores de uso geralGuardam operandos e resultados da ULA.
PSW / FLAGSIndica condições do último resultado (zero, sinal, carry, overflow).

O Ciclo de Instrução

Fetch
buscar
Decode
decodificar
Execute
executar
Write-back
gravar

1. Busca: a instrução em MEM[PC] é trazida para o IR; PC avança. 2. Decodificação: a UC interpreta o opcode. 3. Execução: a ULA opera sobre os registradores. 4. Gravação: o resultado é armazenado. Depois, o ciclo recomeça.

Clock e desempenho

O clock é um sinal que pulsa milhões/bilhões de vezes por segundo. Cada pulso é um ciclo. 3 GHz = 3 bilhões de ciclos por segundo.

O tempo de execução de um programa depende de:

  • nº de instruções;
  • ciclos por instrução (CPI);
  • duração do ciclo (1/clock).
Tempo =
  Nº instruções
  × CPI
  × Tempo do ciclo

// menos é melhor

Clock alto não é tudo: uma CPU com instruções mais eficientes ou mais núcleos pode superar outra de clock maior. Por isso comparar só "GHz" entre arquiteturas diferentes engana.

Pipeline: a linha de montagem

Em vez de esperar uma instrução terminar todas as etapas para começar a próxima, o pipeline sobrepõe as etapas — como uma linha de montagem.

Ciclo12345
Instr. ABuscaDecod.Exec.Mem.Grava
Instr. BBuscaDecod.Exec.Mem.
Instr. CBuscaDecod.Exec.

Idealmente, uma instrução termina a cada ciclo. Hazards (dependência de dados, desvios) podem forçar paradas; CPUs modernas usam previsão de desvio e execução fora de ordem para minimizá-los.

ISA: Conjunto de Instruções

A ISA (Instruction Set Architecture) é o conjunto de todas as instruções que a CPU entende — a "linguagem nativa" do processador.

É a fronteira entre hardware e software: o compilador traduz o programa para instruções da ISA, e a CPU as executa. Cada instrução tem um opcode (operação) e operandos (dados/endereços).

ADD R1, R2, R3  // R1 = R2 + R3
LOAD R1, [100]  // R1 = memória[100]
STORE [200], R1 // memória[200] = R1
JMP 1000       // desvia para 1000

RISC x CISC

CISC

Complex Instruction Set Computer

  • Muitas instruções, algumas complexas.
  • Instruções de tamanho variável.
  • Uma instrução pode fazer várias tarefas.
  • Ex.: x86 (Intel, AMD).

RISC

Reduced Instruction Set Computer

  • Poucas instruções, simples e rápidas.
  • Tamanho fixo, fácil de pipeline.
  • Acesso à memória só via load/store.
  • Ex.: ARM (celulares), RISC-V.

Hoje a fronteira é difusa: processadores x86 modernos traduzem internamente instruções CISC em micro-operações no estilo RISC. ARM domina dispositivos móveis pela eficiência energética.

Núcleos, threads e paralelismo

Como aumentar o clock esbarrou em limites de calor e energia, a indústria passou a colocar mais núcleos em vez de clocks mais altos.

Aprofundamento: formato de instrução e modos de endereçamento

Cada instrução de máquina é uma palavra binária dividida em campos: o opcode (operação) e um ou mais operandos. Os modos de endereçamento definem como localizar cada operando:

ModoO operando é...Exemplo
Imediatoo próprio valor, embutido na instruçãoADD R1, #5
Registradoro conteúdo de um registradorADD R1, R2
Diretoo conteúdo do endereço dadoLOAD R1, [100]
Indiretoo endereço está em um registrador/memóriaLOAD R1, [R2]
Base + deslocamentoregistrador-base + constanteLOAD R1, 8[R2]
Relativo ao PCPC + deslocamento (usado em desvios)BEQ +12

Mais modos dão flexibilidade ao programador (filosofia CISC), mas complicam a decodificação. RISC limita os modos para manter instruções de tamanho fixo e fáceis de paralelizar no pipeline.

Aprofundamento: classes de arquitetura de operandos

Historicamente, as ISAs diferem em onde os operandos ficam ao serem processados:

ClasseComo operaExemplo
PilhaOperandos no topo de uma pilha implícitaJVM, x87
AcumuladorUm registrador fixo guarda um operando e o resultadoPrimeiros micros
Registrador-memóriaInstruções podem operar direto sobre a memóriax86
Registrador-registrador (load/store)ULA só opera entre registradores; memória só via load/storeARM, RISC-V, MIPS

A tendência moderna é load/store: separar acesso à memória do cálculo simplifica o pipeline e aproveita melhor o banco de registradores — chave do desempenho RISC.

Aprofundamento: os hazards do pipeline

O pipeline ideal entrega uma instrução por ciclo, mas hazards (conflitos) podem forçar bolhas (paradas). São de três tipos:

HazardCausaSolução
EstruturalDois estágios disputam o mesmo recursoDuplicar recursos (caches I/D separadas)
De dadosInstrução precisa de um resultado ainda não gravadoForwarding (adiantamento) e, se necessário, stall
De controleDesvio muda o fluxo; o pipeline já buscou instruções erradasPrevisão de desvio e delayed branch

A previsão de desvio (branch prediction) é crucial: o preditor adivinha se o salto será tomado e busca antecipadamente. Um acerto mantém o pipeline cheio; um erro exige descartar (flush) os estágios especulados — penalidade de vários ciclos.

Aprofundamento: paralelismo em nível de instrução (ILP)

CPUs de alto desempenho não executam só uma instrução por vez. Elas exploram o ILP — instruções independentes executadas em paralelo:

A especulação, levada ao extremo, abriu brechas de segurança famosas (Spectre e Meltdown, 2018): dados especulados deixavam rastros na cache. Mostra como microarquitetura e segurança hoje se entrelaçam.

Aprofundamento: a taxonomia de Flynn

Flynn (1966) classifica arquiteturas pelo número de fluxos de instruções e de dados processados simultaneamente:

ClasseSignificadoExemplo
SISD1 instrução, 1 dadoCPU sequencial clássica
SIMD1 instrução, vários dadosExtensões vetoriais (SSE, AVX), GPUs
MISDvárias instruções, 1 dadoRaro (sistemas tolerantes a falha)
MIMDvárias instruções, vários dadosMultinúcleo, clusters

SIMD é a base do desempenho em multimídia e IA: a mesma operação aplicada a milhares de dados de uma vez. A GPU é um processador massivamente SIMD/paralelo, com milhares de núcleos simples — ideal para gráficos e treino de redes neurais.

Aprofundamento: desempenho e o "muro" da potência

O tempo de execução é governado pela equação fundamental:

TCPU = IC × CPI × Tclock

Pipeline e superescalaridade reduzem o CPI; tecnologia reduz o Tclock; compilador e ISA reduzem o IC.

Mas elevar o clock custa energia. A potência dinâmica de um chip CMOS segue:

P ∝ C × V² × f

Com o fim do escalonamento de Dennard, não dá mais para baixar V ao subir f. Resultado: a indústria trocou clock maior por mais núcleos — e o paralelismo virou obrigatório (Lei de Amdahl).

Glossário do tópico

ULAFaz operações aritméticas e lógicas.
UCCoordena e gera sinais de controle.
ISAConjunto de instruções que a CPU entende.
PipelineSobreposição de etapas de instruções.
RISC/CISCInstruções reduzidas/simples vs. complexas.
CoreUnidade de processamento independente.
HazardConflito que para o pipeline (estrutural, de dados, de controle).
Superescalar / OoODespacha várias instruções por ciclo e as reordena.
SIMDUma instrução opera sobre vários dados (vetorial, GPU).
Modo de endereçamentoForma de localizar um operando (imediato, direto, indexado...).

Exercícios resolvidos

1. Em um pipeline de 5 estágios, quantos ciclos são necessários (idealmente) para executar 1000 instruções? Compare com a execução sem pipeline.

Ver solução
Com pipeline: k + (n − 1) = 5 + 999 = 1004 ciclos. Sem pipeline: 5 × 1000 = 5000 ciclos. O ganho aproxima-se de 5× (o nº de estágios) para muitas instruções.

2. Uma CPU tem a mistura: 50% instruções ULA (1 ciclo), 30% loads (2 ciclos) e 20% desvios (3 ciclos). Qual o CPI médio?

Ver solução
CPI = (0,5×1) + (0,3×2) + (0,2×3) = 0,5 + 0,6 + 0,6 = 1,7 ciclos/instrução.

3. Classifique x86 e ARM em RISC ou CISC e justifique.

Ver solução
x86 é CISC: muitas instruções, de tamanho variável, algumas complexas e que acessam a memória diretamente. ARM é RISC: instruções simples, de tamanho fixo, arquitetura load/store, fácil de paralelizar no pipeline e eficiente em energia (por isso domina dispositivos móveis).

4. Por que a indústria parou de simplesmente aumentar o clock e passou a adicionar núcleos?

Ver solução
A potência dinâmica cresce com P ∝ C·V²·f. Com o fim do escalonamento de Dennard (~2005), não dava mais para reduzir a tensão ao elevar a frequência, e o calor tornou-se inviável (power wall). Adicionar núcleos aumenta o desempenho sem disparar o clock — mas exige paralelismo (limitado pela Lei de Amdahl).

Resumindo

A CPU combina UC, ULA e registradores para executar o ciclo busca-decodificação-execução no ritmo do clock. O pipeline e os múltiplos núcleos aumentam o desempenho, enquanto a ISA (RISC ou CISC) define a linguagem que liga o software ao hardware.

Voltar aos Tópicos