π ALU
ALU (Arithmetic Logic Unit) β ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΡΠΎΡΡΠ°Π²Π΅ CPU, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Π±ΠΈΠ½Π°ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ.
π§ ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ALU ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° (ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²) ΠΈ ΠΊΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΡ CU.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡ, ΡΠ»Π°Π³ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡ ΡΠ»Π°Π³ΠΎΠ².
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
- ΠΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ°:
+
,β
,*
,/
- ΠΠΎΠ³ΠΈΠΊΠ°:
AND
,OR
,XOR
,NOT
- Π‘Π΄Π²ΠΈΠ³ΠΈ:
SHL
,SHR
,ROL
,ROR
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ»Π°Π³ΠΎΠ²: zero, carry, sign, overflow ΠΈ Π΄Ρ.
βοΈ ΠΠ΄Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ | ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ |
---|---|
CPU | Π―Π΄ΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ |
FPGA | ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² |
ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ | ΠΡΠΎΡΡΡΠ΅ ALU Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ |
GPU | ΠΠ΅ΠΊΡΠΎΡΠ½ΡΠ΅ ALU Π² ΡΠΎΡΡΠ°Π²Π΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² |
π» ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°
; ΠΡΠΈΠΌΠ΅Ρ Π½Π° x86 (NASM): ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ
ΡΠΈΡΠ΅Π»
mov eax, 5
add eax, 7 ; ALU Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β EAX = 12
π Π£ΠΏΡΠΎΡΡΠ½Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ALU
+---------+ +------------+
A --->| | | |---> Π Π΅Π·ΡΠ»ΡΡΠ°Ρ
| ALU |--> | Π€Π»Π°Π³ΠΈ (ZF, CF, OF...)
B --->| | | |
+---------+ +------------+
β
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ (ΠΊΠΎΠ΄ ΠΈΠ· CU)
β ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
-
ΠΡΠΎΡΡΠΎΡΠ° ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ
-
ΠΠΏΠΏΠ°ΡΠ°ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ β ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΠ°ΠΊΡΠΎΠ²
-
Π―Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠΎΠΌ Π²ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π² CPU
β ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
-
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
-
ΠΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ
-
Π‘Π»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΈΠ³ΠΎΠ½ΠΎΠΌΠ΅ΡΡΠΈΡ) ΡΡΠ΅Π±ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° β FPU