Skip to content

Architektura procesoru #58

@zapotocnylubos

Description

@zapotocnylubos

Von Neumann architektura

Základní model moderního počítače.

  • CPU, paměť, sběrnice – jak spolu komunikují
  • Harvardská architektura jako alternativa
  • Registry, ALU, řadič

Instrukce a instrukční sada (ISA)

Co procesor umí a jak mu říkáme co má dělat.

  • Co je instrukce – opcode, operandy
  • RISC vs CISC – filozofie návrhu, příklady (ARM vs x86)
  • Základní typy instrukcí – aritmetika, přesuny, skoky

Fetch-Decode-Execute cyklus

Jak procesor provádí jednu instrukci krok za krokem.

  • Fetch – načtení instrukce z paměti
  • Decode – dekódování, co instrukce znamená
  • Execute – provedení, zápis výsledku
  • Příklad průchodu konkrétní instrukce

Pipelining

Překrývání fází pro vyšší výkon.

  • Analogie: výrobní linka
  • 5-stupňová pipeline (IF, ID, EX, MEM, WB)
  • Hazardy – datové, řídící, strukturální
  • Řešení hazardů – stall, forwarding, flush

Cache

Proč přístup do RAM je příliš pomalý.

  • Princip lokality – časová a prostorová
  • L1, L2, L3 – hierarchie a velikosti
  • Cache hit vs miss – dopad na výkon
  • Cache line, asociativita

Branch Prediction

Jak procesor řeší podmíněné skoky v pipeline.

  • Proč větvení pipeline zpomaluje (flush)
  • Statická vs dynamická predikce
  • Moderní prediktory – saturating counter, BTB
  • Spectre/Meltdown jako důsledek agresivní predikce

Out-of-Order Execution

Přeuspořádání instrukcí pro maximální využití CPU.

  • Proč pořadí instrukcí v kódu nemusí = pořadí provedení
  • Reorder Buffer (ROB)
  • Tomasulo algoritmus – dynamické plánování
  • Commit a retire – zachování správného výsledku

Superscalar architektura

Více instrukcí najednou.

  • Více execution units
  • Issue width – kolik instrukcí za cyklus
  • Limity – závislosti, hazardy, paměť

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions