π CU
CU (Control Unit) β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ CPU, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π²ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
π§ ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
CU ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈΠ· Instruction Cache, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ Π΅Ρ ΠΈ:
- Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ Π΄Π»Ρ ALU, FPU, MMU
- ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ/Π·Π°ΠΏΠΈΡΡΡ Π² registers
- Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Pipeline, Branch predictor, Cache
- ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
- ΠΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ (ΠΎΠΏΠΊΠΎΠ΄, ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ)
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ
- ΠΡΠ΄Π°ΡΠ° ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΡΡΠ΅Π½ΠΈΡ, Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ²
- Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ CU:
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|
Instruction Decoder | Π Π°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΡΠΈΠΏ ΠΈ ΡΠΎΡΠΌΠ°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ |
Microcode Engine | ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°Π³ΠΎΠ² Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ |
Sequencer | ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ / ΠΌΠΈΠΊΡΠΎΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ |
Exception Logic | ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ±ΠΎΠ΅Π², ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ, Π»ΠΎΠ²ΡΡΠ΅ΠΊ |
Control Bus Interface | ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π΄Π»Ρ ΡΠΈΠ½ |
βοΈ ΠΠ΄Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° | ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ CU |
---|---|
RISC | CU ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ |
CISC | CU ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ |
x86_64 | Intel/AMD ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΡΡΡΡΡ CU |
ARM Cortex-A | CU ΠΏΡΠΎΡΡΠ°, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π° Π½Π° Π²ΡΡΠΎΠΊΡΡ ILP |
π» ΠΡΠΈΠΌΠ΅Ρ (ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ CU)
fetch: IR β MEM[PC]
decode: opcode, args β decode(IR)
execute: issue_signals(opcode)
write: store_result()
next: PC β PC + 1
π Π‘Ρ Π΅ΠΌΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ
Instruction Flow
β
+-------------------+
| Control Unit |
+-------------------+
β β β
ALU FPU MMU
β β β
Registers Cache Addressing
β ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
-
Π¦Π΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ
-
ΠΠΈΠ±ΠΊΠΎΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ΄ (Π² CISC Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°Ρ )
-
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
β ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
-
Π£ΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ CPU
-
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ Π³ΠΎΡΠ»ΡΡΠΊΠΎΠΌ ΠΏΡΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠ΅
-
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ