theme: white transition: convex
Aula 03 - CPU: Estrutura e Funcionamento
Apresentação
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.
Novo Tópico
🏗️ 1. O Triângulo de Ouro: ALU, CU e Registradores
🏗️ 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).
🏗️ 1. O Triângulo de Ouro: ALU, CU e Registradores
$ # 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;
}🏗️ 1. O Triângulo de Ouro: ALU, CU e Registradores
Novo Tópico
🔄 2. O Ciclo de Instrução (Fetch-Decode-Execute)
🔄 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:
🔄 2. O Ciclo de Instrução (Fetch-Decode-Execute)
stateDiagram-v2 [*] --> Fetch Fetch --> Decode Decode --> Execute Execute --> Store Store --> Fetch
🔄 2. O Ciclo de Instrução (Fetch-Decode-Execute)
- 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.
Novo Tópico
⚡ 3. Pipeline e Previsão de Desvio (Branch Prediction)
⚡ 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!
⚡ 3. Pipeline e Previsão de Desvio (Branch Prediction)
O perigo do “IF”
⚡ 3. Pipeline e Previsão de Desvio (Branch Prediction)
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).
⚡ 3. Pipeline e Previsão de Desvio (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.
Novo Tópico
🚀 Resumo Prático
🚀 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.