π ΠΡΠ°ΡΠΊΠΎ
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_64 | Intel 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)