>> Tecnologia Eletrônica >  >> Telefones >> Secretárias Eletrônicas

Ciclos Máquina: Definição, Variabilidade e Como Encontrá-los

O Que É Ciclo Máquina?

Um ciclo máquina (ou ciclo instrução) é sequência passos CPU executa para buscar, decodificar, executar e escrever resultado única instrução. Sua duração em ciclos clock varia enormemente por arquitetura, complexidade instrução, microarquitetura (pipeline, superscalar, OoO) e hierarquia memória.

Ciclo Clássico 4 Estágios (von Neumann)

  1. Busca (Fetch): PC → Barramento Endereço → Memória → Registrador Instrução. PC++.
  2. Decodificação (Decode): Opcode → Unidade Controle → Sinais controle (op ALU, seleção registradores, memória R/W).
  3. Execução (Execute): ALU computa / Cálculo endereço / Decisão desvio.
  4. Escrita Retorno (Writeback): Resultado → Banco Registradores / Memória.

Por Que "Ciclos por Instrução" (CPI) Não É Fixo

FatorEfeito no CPI
PipelineCPI ideal = 1 (uma instrução completa por clock). Hazards (dados, controle, estruturais) adicionam stalls.
Superscalar / OoOMúltiplas instruções/clock → CPI < 1 (IPC > 1).
Cache MissL1 miss: +4–12 ciclos. L2 miss: +30–50. DRAM: +150–300 ciclos.
Mispredict BranchFlush pipeline: 10–20+ ciclos penalidade.
Instruções ComplexasDIV, SQRT, transcendental: 10–100+ ciclos (microcodificado).
Interrupção/ExceçãoSalvar/restaurar contexto: centenas ciclos.

Como Encontrar CPI Para *Seu* Caso

  1. Manual ISA: ARM Cortex-M4: "ADD r0,r1,r2 = 1 ciclo". Cortex-A78: "FP MLA = 4 ciclos latência, 0,5 throughput".
  2. Guias Otimização Fornecedor: Intel 64/IA-32 Optimization Manual, AMD uArch guides.
  3. Ferramentas Análise Estática: LLVM-MCA, IACA (aposentado), uArchBench.
  4. Contadores Performance Hardware (PMCs): `perf stat` (Linux), VTune, contadores PMU (CYCLES, INST_RETIRED, STALL_CYCLES). CPI Real = CYCLES / INST_RETIRED.
  5. Simuladores Ciclo-Acurados: gem5, Simics, QEMU (modo TCG).

Exemplo Prático

ARM Cortex-M3 (STM32F1): Sem cache, pipeline 3 estágios.

  • ADD (reg): 1 ciclo.
  • LDR (literal pool, flash wait 0): 2 ciclos.
  • MUL: 1 ciclo (multiplicador ciclo único).
  • SDIV: 2–12 ciclos (dependente dados).
  • Entrada interrupção: 12 ciclos (push stack).

Conclusão Principal

Não existe "contagem ciclo máquina" universal. Meça no hardware alvo com carga representativa usando PMCs. Contagens ciclos datasheet são melhores casos, instrução única, ideais zero wait-state.