πŸ“Œ ΠšΡ€Π°Ρ‚ΠΊΠΎ

Out-of-order execution (OOO) β€” Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° исполнСния инструкций CPU Π½Π΅ Π² порядкС ΠΈΡ… поступлСния, Π° Π² порядкС готовности ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², с Ρ†Π΅Π»ΡŒΡŽ максимального использования рСсурсов ΠΈ устранСния простоСв Pipeline.

🧠 Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

ВмСсто строгого слСдования порядку инструкций, CPU Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ зависимости ΠΈ исполняСт Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, откладывая Ρ‚Π΅, Ρ‡ΡŒΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹:

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
Instruction queueΠ‘ΡƒΡ„Π΅Ρ€ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… инструкций
Reservation stationsΠ₯ранят инструкции, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹
Reorder buffer (ROB)ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ порядка Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ
Register renamingИзбСганиС Π»ΠΎΠΆΠ½Ρ‹Ρ… зависимостСй ΠΏΠΎ рСгистрам (WAW, WAR)
Issue logicΠ’Ρ‹Π΄Π°Ρ‡Π° инструкций Π½Π° исполнСниС ΠΏΠΎ готовности

Π’Π΅Ρ…Π½ΠΈΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Тёсткого контроля зависимостСй:

  • RAW (read-after-write)
  • WAW (write-after-write)
  • WAR (write-after-read)

βš™οΈ Π“Π΄Π΅ примСняСтся

ΠΡ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
Superscalar CPUНСсколько ALU, Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒ
x86_64Intel Core, AMD Ryzen β€” Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ OOO
ARM Cortex-AΠ’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… A7x ΠΈ Π²Ρ‹ΡˆΠ΅
Modern GPUΠ’ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для тСкстур

πŸ’» ΠŸΡ€ΠΈΠΌΠ΅Ρ€ (Π½Π° псСвдокодС)

Instruction stream:
1. A = B + C    ; Π³ΠΎΡ‚ΠΎΠ²ΠΎ сразу
2. D = E + F    ; Π³ΠΎΡ‚ΠΎΠ²ΠΎ сразу
3. G = A + D    ; зависит ΠΎΡ‚ 1 ΠΈ 2
 
β†’ CPU Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ 1 ΠΈ 2 Π² любом порядкС, Π½ΠΎ 3 β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π½ΠΈΡ…

πŸ“ Π‘Ρ…Π΅ΠΌΠ° исполнСния

Instruction Fetch β†’ Decode β†’ Register Renaming β†’ Reservation Station
                     ↓              ↑
           Reorder Buffer ←  Execution Units
                     ↓
               Writeback β†’ Commit (ΠΏΠΎ порядку)

βœ… ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • ΠŸΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования ALU ΠΈ FPU

  • Π£ΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ простоСв Pipeline ΠΈΠ·-Π·Π° зависимостСй

  • ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для достиТСния высокой IPC (Instructions Per Cycle)

❌ НСдостатки

  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ услоТняСт Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ CPU

  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠ΅ энСргопотрСблСниС ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ·-Π·Π° контроля зависимостСй

  • Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊ Π°Ρ‚Π°ΠΊΠ°ΠΌ Π½Π° спСкулятивноС исполнСниС (Spectre, Meltdown)