Modul 4 — ARHITECTURĂ HARDWARE

Lecția 4.1 — CPU

execuția instrucțiunilor, pipeline, cache

Începe Lecția

Introducere

CPU-ul este creierul consolei — componenta care decodează și execută fiecare instrucțiune, de la logica jocului la gestionarea input-ului controlerului. Procesorul AMD Zen 2 din PlayStation 5 execută miliarde de operații pe secundă, orchestrând tot ce se întâmplă în sistem: IA adversarilor, fizica obiectelor, audio posițional, networking. Cum reușește un singur chip să facă toate acestea simultan?

Această lecție acoperă arhitectura modernă a CPU-ului: execuția instrucțiunilor (fetch, decode, execute, commit), pipeline-ul (suprapunerea etapelor pentru performanță maximă) și cache-ul (ierarhia de memorie ultra-rapidă care previne bottleneck-ul memoriei principale).

Scopul nu este memorarea dimensiunilor cache-ului, ci înțelegerea de ce CPU-ul din PS5 are 8 nuclee cu câte 32KB cache L1, cum pipeline-ul permite execuția suprapusă a instrucțiunilor și de ce jocurile bine optimizate rulează fluid, iar cele slab optimizate suferă de stuttering.

Teorie Structurată

4.1.1 — Definiție și componente principale

  • CPU (Central Processing Unit) = procesorul principal dintr-un computer
  • Execută instrucțiuni ale unui program: aritmetice, logice, control, I/O
  • Componente principale: ALU (operații aritmetice și logice), registre procesor (furnizează operanzi și stochează rezultate), control unit (orchestrează fetch/decode/execute)
  • Von Neumann: raportul EDVAC 1945, program stocat în memorie
  • Harvard architecture: separare memorie instrucțiuni/date (ex. Atmel AVR)
  • Modern: multi-core (mai multe CPU-uri pe un singur chip), multithreading
  • Microprocesor: CPU implementat pe un singur circuit integrat
  • Intel 4004 (1971): primul microprocesor comercial, integra ALU + control unit + registre
  • Moore's Law: creșterea complexității/nr. tranzistori pe IC

4.1.2 — Ciclul de execuție al instrucțiunilor (Fetch-Decode-Execute)

  • Operația fundamentală: fetch → decode → execute (instruction cycle)
  • FETCH: citirea instrucțiunii din memorie; adresa determinată de program counter (PC/instruction pointer)
  • PC incrementat cu lungimea instrucțiunii după fetch
  • Instrucțiunea trebuie adusă din memorie (potențial lentă) → cache și pipeline rezolvă
  • DECODE: circuitul instruction decoder convertește instrucțiunea în semnale de control
  • Opcode: câmpul care indică operația; restul câmpurilor = operanzi
  • Operanzii pot fi: valori imediate, registre procesor, adrese de memorie
  • Implementare: hardwired (circuit fix) sau microprogram (microcode, reprogramabil)
  • EXECUTE: semnale de control activează/dezactivează părți ale CPU
  • ALU efectuează operația; rezultatul → registru intern sau memorie
  • Overflow flag setat dacă rezultatul depășește word size
  • Jump instructions: modifică PC → permit bucle, condiții, funcții
  • Status register (flags register): stochează rezultatul comparațiilor → branching condițional

4.1.3 — Pipeline și paralelism

  • Instruction pipelining: primii pași (fetch/decode) ai instrucțiunii următoare încep înainte de finalizarea celei curente
  • Comparat cu linia de asamblare: fiecare etapă face instrucțiunea "mai completată"
  • Data dependency conflict: rezultatul operației anterioare necesar pentru următoarea
  • Pipeline stall: CPU devine aproape scalar, inhibat doar de stalls
  • Superscalar: pipeline lung + multiple execution units identice (ALU, FPU, load-store, AGU)
  • Dispatcher: decide dacă instrucțiunile pot fi executate în paralel
  • Necesită: branch prediction, speculative execution, register renaming, out-of-order execution
  • IPC (Instructions Per Clock): măsoară eficiența; subscalar (IPC < 1), scalar (IPC = 1), superscalar (IPC > 1)
  • VLIW (Very Long Instruction Word): mută o parte din ILP în software/ISA
  • Task-level parallelism: multithreading (temporal MT, simultaneous MT/SMT), multi-core
  • Exemple consolă: Xbox 360 triple-core PowerPC, PS3 Cell 7-core
  • Data parallelism: SIMD (Single Instruction, Multiple Data) – ex. Intel SSE, PowerPC AltiVec

4.1.4 — Structura și implementarea

  • ISA (Instruction Set Architecture): setul de operații de bază hardwired în CPU
  • Opcode → binary decoder → semnale de control
  • Control Unit: dirijează operația procesorului, timing și semnale de control
  • ALU: circuit digital, operații aritmetice/logice întregi; modern CPU-uri au multiple ALU-uri
  • AGU (Address Generation Unit): calculează adrese memorie în paralel cu CPU
  • MMU (Memory Management Unit): traduce adrese logice → fizice, memory protection, paging, virtual memory
  • VRM (Voltage Regulator Module): module integrate pe die pentru reglare tensiune
  • Word size: 8/16/32/64 biți; determină rangul de numere întregi și adrese
  • Clock rate: semnal de ceas determină viteza operațiilor secvențiale
  • Clock gating: oprirea semnalului de ceas pentru componentele inactive (economie energie)
  • Ex: IBM PowerPC Xenon (Xbox 360) folosește clock gating extensiv

4.1.5 — Definiție și principii

  • CPU cache = memorie hardware folosită de CPU pentru reducerea timpului/energiei de acces la main memory
  • Cache = memorie mai mică, mai rapidă, mai aproape de nucleul procesorului
  • Stochează copii ale datelor din locații de memorie frecvent utilizate
  • SRAM (Static RAM): necesită 4-6 tranzistori per bit; rapidă dar costisitoare
  • DRAM: 1 tranzistor + 1 capacitor per bit; lentă dar densitate mare
  • Cache hit: datele căutate sunt în cache → acces rapid
  • Cache miss: datele nu sunt în cache → acces la main memory (latență mare)

4.1.6 — Ierarhia cache (niveluri L1, L2, L3)

  • Majoritatea CPU-urilor: cel puțin 3 niveluri independente (L1, L2, L3)
  • L1: cea mai rapidă, cea mai aproape de core, cea mai mică
  • Split: L1i (instrucțiuni) + L1d (date) – standard din IBM 801 (1976)
  • Dimensiuni tipice: 32-96 KiB per core
  • L2: mai mare, mai lentă; de obicei unificată (instrucțiuni + date); dedicată per core
  • L3: partajată între toate core-urile (last-level cache/LLC); poate fi zeci de MiB
  • L4: rar, de obicei eDRAM pe modul separat (ex. Intel Haswell Crystalwell 128 MiB)
  • Tradeoff: cache mai mare = hit rate mai bun dar latență mai mare
  • Register file: cea mai mică și rapidă "cache" din sistem
  • Istorie: Atlas 2 și IBM System/360 Model 85 (anii 1960); 486 = primul cache L1 on-die (8 KiB)
  • x86: 386 cache extern; 486 L1 on-die; Pentium Pro L2 on-package; modern = totul on-die

4.1.7 — Funcționare cache

  • Cache line (cache block): unitatea de transfer între memorie și cache (dimensiune fixă, tipic 64 bytes)
  • Cache entry: tag (adresă) + data block + flag bits
  • Tag: identifică locația din main memory stocată
  • Cache hit/miss: procesorul verifică tag-urile pentru adresa căutată
  • Replacement policies: LRU (Least Recently Used) cel mai popular
  • Write policies:
  • Write-through: fiecare scriere în cache → scriere imediată în memorie
  • Write-back (copy-back): scrierile nu sunt reflectate imediat; dirty bit marchează modificările
  • Associativity:
  • Direct-mapped: fiecare adresă → exact o locație în cache
  • N-way set associative: fiecare adresă → N locații posibile (ex. 8-way la CPU-uri moderne)
  • Fully associative: orice locație (practic doar pentru cache-uri mici)
  • 2× associativity ≈ 2× cache size în termeni de hit rate

4.1.8 — Cache misses și stalls

  • 3 tipuri de cache miss: instruction read miss (cel mai costisitor), data read miss, data write miss
  • CPU stall: procesorul rămâne fără lucru în așteptarea datelor din memorie
  • CPU-urile moderne pot executa sute de instrucțiuni în timpul unui singur fetch din main memory
  • Soluții: out-of-order execution (execută instrucțiuni independente), SMT (alt thread pe core)
  • Cache-uri specializate: TLB (adresse virtuale → fizice), instruction cache, data cache, μop cache
  • μop cache: stochează micro-operații decodate (Intel Sandy Bridge+, AMD Zen+)
  • Trace cache: Intel Pentium 4, stochează secvențe de instrucțiuni decodate
  • Multi-core: L1 dedicat per core; L2 uneori partajat per pereche; L3 partajat global (LLC)
  • Inclusive vs exclusive: inclusive = date L1 replicate și în L2; exclusive = date în max un nivel (AMD Athlon)

Legătura Fizică — Informatică

Definiție și componente principale

  • CPU (Central Processing Unit) = procesorul principal dintr-un computer
  • Execută instrucțiuni ale unui program: aritmetice, logice, control, I/O
  • Componente principale: ALU (operații aritmetice și logice), registre procesor (furnizează operanzi și stochează rezultate), control unit (orchestrează fetch/decode/execute)
  • Modern: multi-core (mai multe CPU-uri pe un singur chip), multithreading
  • Microprocesor: CPU implementat pe un singur circuit integrat

Ciclul de execuție al instrucțiunilor (Fetch-Decode-Execute)

  • Operanzii pot fi: valori imediate, registre procesor, adrese de memorie
  • EXECUTE: semnale de control activează/dezactivează părți ale CPU

Pipeline și paralelism

  • Pipeline stall: CPU devine aproape scalar, inhibat doar de stalls

Definiție și principii

  • CPU cache = memorie hardware folosită de CPU pentru reducerea timpului/energiei de acces la main memory
  • Cache = memorie mai mică, mai rapidă, mai aproape de nucleul procesorului
  • SRAM (Static RAM): necesită 4-6 tranzistori per bit; rapidă dar costisitoare
  • DRAM: 1 tranzistor + 1 capacitor per bit; lentă dar densitate mare

Ierarhia cache (niveluri L1, L2, L3)

  • Majoritatea CPU-urilor: cel puțin 3 niveluri independente (L1, L2, L3)

Funcționare cache

  • Cache hit/miss: procesorul verifică tag-urile pentru adresa căutată
  • Write-back (copy-back): scrierile nu sunt reflectate imediat; dirty bit marchează modificările
  • N-way set associative: fiecare adresă → N locații posibile (ex. 8-way la CPU-uri moderne)

Cache misses și stalls

  • CPU stall: procesorul rămâne fără lucru în așteptarea datelor din memorie
  • CPU-urile moderne pot executa sute de instrucțiuni în timpul unui singur fetch din main memory

Aplicare Directă în Console

Pipeline și paralelism

  • Exemple consolă: Xbox 360 triple-core PowerPC, PS3 Cell 7-core

Structura și implementarea

  • ISA (Instruction Set Architecture): setul de operații de bază hardwired în CPU
  • Opcode → binary decoder → semnale de control
  • Control Unit: dirijează operația procesorului, timing și semnale de control
  • ALU: circuit digital, operații aritmetice/logice întregi; modern CPU-uri au multiple ALU-uri
  • AGU (Address Generation Unit): calculează adrese memorie în paralel cu CPU
  • MMU (Memory Management Unit): traduce adrese logice → fizice, memory protection, paging, virtual memory
  • VRM (Voltage Regulator Module): module integrate pe die pentru reglare tensiune
  • Word size: 8/16/32/64 biți; determină rangul de numere întregi și adrese
  • Clock rate: semnal de ceas determină viteza operațiilor secvențiale
  • Clock gating: oprirea semnalului de ceas pentru componentele inactive (economie energie)
  • Ex: IBM PowerPC Xenon (Xbox 360) folosește clock gating extensiv

Exemplu Real de Hardware

Definiție și componente principale

  • Intel 4004 (1971): primul microprocesor comercial, integra ALU + control unit + registre

Pipeline și paralelism

  • Data parallelism: SIMD (Single Instruction, Multiple Data) – ex. Intel SSE, PowerPC AltiVec

Ierarhia cache (niveluri L1, L2, L3)

  • L4: rar, de obicei eDRAM pe modul separat (ex. Intel Haswell Crystalwell 128 MiB)

Cache misses și stalls

  • μop cache: stochează micro-operații decodate (Intel Sandy Bridge+, AMD Zen+)
  • Trace cache: Intel Pentium 4, stochează secvențe de instrucțiuni decodate
  • Inclusive vs exclusive: inclusive = date L1 replicate și în L2; exclusive = date în max un nivel (AMD Athlon)

Probleme Frecvente Asociate

⚠️ Probleme asociate cu CPU

Problemele frecvente asociate cu această temă vor fi detaliate pe măsură ce cursul avansează.

Recapitulare

  • Definiție și componente principale: CPU (Central Processing Unit) = procesorul principal dintr-un computer
  • Ciclul de execuție al instrucțiunilor (Fetch-Decode-Execute): Operația fundamentală: fetch → decode → execute (instruction cycle)
  • Pipeline și paralelism: Instruction pipelining: primii pași (fetch/decode) ai instrucțiunii următoare încep înainte de finalizarea celei curente
  • Structura și implementarea: ISA (Instruction Set Architecture): setul de operații de bază hardwired în CPU
  • Definiție și principii: CPU cache = memorie hardware folosită de CPU pentru reducerea timpului/energiei de acces la main memory
  • Ierarhia cache (niveluri L1, L2, L3): Majoritatea CPU-urilor: cel puțin 3 niveluri independente (L1, L2, L3)
  • Funcționare cache: Cache line (cache block): unitatea de transfer între memorie și cache (dimensiune fixă, tipic 64 bytes)
  • Cache misses și stalls: 3 tipuri de cache miss: instruction read miss (cel mai costisitor), data read miss, data write miss

Quiz — 5 Întrebări

Întrebarea 1

Care afirmație este corectă despre: Execută instrucțiuni ale unui program?

  • a) raportul EDVAC 1945, program stocat în memorie
  • b) separare memorie instrucțiuni/date (ex. Atmel AVR)
  • c) ALU (operații aritmetice și logice), registre procesor (furnizează operanzi și stochează rezultate), control unit (orchestrează fetch/decode/execute)
  • d) aritmetice, logice, control, I/O
Arată răspunsul

d) — aritmetice, logice, control, I/O

Întrebarea 2

Care afirmație este corectă despre: Operația fundamentală?

  • a) raportul EDVAC 1945, program stocat în memorie
  • b) ALU (operații aritmetice și logice), registre procesor (furnizează operanzi și stochează rezultate), control unit (orchestrează fetch/decode/execute)
  • c) fetch → decode → execute (instruction cycle)
  • d) aritmetice, logice, control, I/O
Arată răspunsul

c) — fetch → decode → execute (instruction cycle)

Întrebarea 3

Care afirmație este corectă despre: Instruction pipelining?

  • a) aritmetice, logice, control, I/O
  • b) raportul EDVAC 1945, program stocat în memorie
  • c) primii pași (fetch/decode) ai instrucțiunii următoare încep înainte de finalizarea celei curente
  • d) ALU (operații aritmetice și logice), registre procesor (furnizează operanzi și stochează rezultate), control unit (orchestrează fetch/decode/execute)
Arată răspunsul

c) — primii pași (fetch/decode) ai instrucțiunii următoare încep înainte de finalizarea celei curente

Întrebarea 4

Care afirmație este corectă despre: ISA (Instruction Set Architecture)?

  • a) aritmetice, logice, control, I/O
  • b) ALU (operații aritmetice și logice), registre procesor (furnizează operanzi și stochează rezultate), control unit (orchestrează fetch/decode/execute)
  • c) raportul EDVAC 1945, program stocat în memorie
  • d) setul de operații de bază hardwired în CPU
Arată răspunsul

d) — setul de operații de bază hardwired în CPU

Întrebarea 5

Care afirmație este corectă despre: Definiție și principii?

  • a) Cache = memorie mai mică, mai rapidă, mai aproape de nucleul procesorului
  • b) raportul EDVAC 1945, program stocat în memorie
  • c) ALU (operații aritmetice și logice), registre procesor (furnizează operanzi și stochează rezultate), control unit (orchestrează fetch/decode/execute)
  • d) aritmetice, logice, control, I/O
Arată răspunsul

a) — Cache = memorie mai mică, mai rapidă, mai aproape de nucleul procesorului

Exercițiu Aplicat de Gândire

🧠 Exercițiu: CPU

Scenariu: Analizezi un sistem hardware care utilizează conceptul de execuția instrucțiunilor. Pe baza cunoștințelor din această lecție, răspunde la următoarele întrebări:

  • 1. Defineste pe scurt: execuția instrucțiunilor.
  • 2. Ce rol are pipeline în contextul hardware-ului?
  • 3. Explică relația dintre execuția instrucțiunilor și cache.
Arată rezolvarea

1. CPU (Central Processing Unit) = procesorul principal dintr-un computer

2. Operația fundamentală: fetch → decode → execute (instruction cycle)

3. Instruction pipelining: primii pași (fetch/decode) ai instrucțiunii următoare încep înainte de finalizarea celei curente

Video Recomandat

0:00 / 0:00

Ciclul Fetch-Decode-Execute: cum procesorul preia, decodifică și execută instrucțiunile — mecanismul central al oricărui CPU.