Aula 03 - CPU: Estrutura e Funcionamento
Como as operações chegam e são tratadas pela verdadeira mente do computador? A CPU (Unidade Central de Processamento) não é mágica, ela segue um ciclo de pulso rígido orquestrado pelo Clock.
🏗️ 1. O Triângulo de Ouro: ALU, CU e Registradores
A arquitetura interna da CPU possui 3 órgãos vitais:
- ALU (Unidade Lógica e Aritmética): O músculo. Onde as somas, subtrações e portas lógicas (AND/OR/XOR) acontecem fisicamente usando transistores.
- CU (Unidade de Controle): O supervisor. Ela diz à ALU o que fazer lendo os “Opcodes” (comandos binários ISA).
- Registradores: Pequenos e ultra-rápidos blocos de memória embutidos diretamente no chip. (ex: EAX, EBX, RSP).
$ # Como você lê valores do processador direto em C?
$ cat register.c
int main() {
register int i = 10; // "Dica" para o compilador usar um registrador direto!
return i;
}🔄 2. O Ciclo de Instrução (Fetch-Decode-Execute)
Cada operação ou linha de código C/C++ que você escreve é processada na cadência do Clock pelo ciclo clássico:
stateDiagram-v2 [*] --> Fetch Fetch --> Decode Decode --> Execute Execute --> Store Store --> Fetch
- Fetch (Busca): A CU vai na Memória RAM e busca qual o próximo byte de comando, guiando-se pelo Program Counter (PC).
- Decode (Decodifica): A CU traduz o comando para entender o que é (“Ah, é para Somar 5!”).
- Execute: A ALU recebe os parâmetros e faz a conta física elétron a elétron.
- Store (Armazena): O resultado volta para um registrador ou para a Memória RAM.
⚡ 3. Pipeline e Previsão de Desvio (Branch Prediction)
Seu processador não faz essas 4 etapas de forma burra (uma por vez). Ele usa Pipelining: Enquanto a Instrução A está em Execute, a Instrução B já está em Decode e a Instrução C está em Fetch!
O perigo do “IF”
Quando você usa muitos if(), o processador tenta “Adivinhar” o lado do if usando heurísticas para não frear o Pipeline (Isso é o Branch Prediction).
WARNING
Errar a adivinhação do
ifcorrompe todo o Pipeline que foi pré-carregado. Em código de alta performance C++, tentamos escrever loops minimizando saltos condicionais imprevistos.
🚀 Resumo Prático
Registradores são seus maiores amigos de performance. Códigos C++ que permitem ao compilador prender cálculos pesados 100% dentro dos Registradores rodam em Nanossegundos, contra Milissegundos lendo sempre pela RAM.
🎯 Próximos Passos
- Acessar Slides
---
Reveja a apresentação visual desta aula.
[➔ Ver Slides da Aula](../slides/slide-03.html)
- Quiz
---
Teste seu entendimento básico com perguntas rápidas.
[➔ Responder Quiz](../quizzes/quiz-03.md)
- Exercícios
---
Prática avançada e dissertativa com consulta.
[➔ Lista de Exercícios](../exercicios/exercicio-03.md)
- Projeto
---
Laboratório prático de codificação em C/C++.
[➔ Mini Projeto](../projetos/projeto-03.md)