ΠΠ½ΡΡΠ·ΠΈΠ°ΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π» ΡΡ Π΅ΠΌΡ prefetch-ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π² Π»Π΅Π³Π΅Π½Π΄Π°ΡΠ½ΠΎΠΌ Intel 386! ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π΄Π°ΠΆΠ΅ Π² ΡΠ°ΠΊΠΈΡ Β«Π΄ΡΠ΅Π²Π½ΠΎΡΡΡΡ Β» Π±ΡΠ»ΠΈ Ρ ΠΈΡΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. π€― Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΡΠ΅Π΄ΡΠ³Π°Π΄ΡΠ²Π°Π» ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΅ΡΡ Π΄ΠΎ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΡΡΠΎ ΠΆΠ΅? π»β‘
ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡ ΡΡ Π΅ΠΌΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° 386
Π 1985 Π³ΠΎΠ΄Ρ Intel ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° ΡΠ΅Π²ΠΎΠ»ΡΡΠΈΠΎΠ½Π½ΡΠΉ 32-Π±ΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ 386, ΡΡΠ°Π²ΡΠΈΠΉ ΠΏΠ΅ΡΠ²ΡΠΌ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ x86. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΈΠ½Π½ΠΎΠ²Π°ΡΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠ°Π»Π° 16-Π±Π°ΠΉΡΠΎΠ²Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ (prefetch queue).
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ prefetch queue
ΠΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ:
- ΠΠ°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ Π΄ΠΎ ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
- ΠΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΡΠΎΠ΅Π² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΏΡΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠ°ΠΌΡΡΠΈ
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΡΠΈΠ½Π° ΠΏΠ°ΠΌΡΡΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° prefetch unit
ΠΠ° ΠΌΠΈΠΊΡΠΎΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΊΡΠΈΡΡΠ°Π»Π»Π° 386 Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π±Π»ΠΎΠΊ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ (Prefetch Unit) ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² Π²Π΅ΡΡ Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡΠ³Π»Ρ. ΠΠ½ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
- Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΎΡΠΊΠΈ (Fetch Pointer) — Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ
- Π Π΅Π³ΠΈΡΡΡΠ° ΠΏΡΠ΅Π΄Π΅Π»Π° (Limit Register) — ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π³ΡΠ°Π½ΠΈΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π°
- 16-Π±Π°ΠΉΡΠΎΠ²ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° — Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π²ΡΠ±ΡΠ°Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ
- Π‘Π΅ΡΠΈ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ — ΡΠΎΡΠ°ΡΠΈΡ Π±Π°ΠΉΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- Π‘Ρ Π΅ΠΌΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π·Π½Π°ΠΊΠ° — ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ 8/16-Π±ΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² 32-Π±ΠΈΡΠ½ΡΠ΅
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡ Π΅ΠΌΠΎΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ
1. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄Π΅Π»ΠΎΠΌ (Limit Check)
ΠΠ»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄Π° Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ:
- 30 XOR-Π²Π΅Π½ΡΠΈΠ»Π΅ΠΉ (ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ 2 ΠΌΠ»Π°Π΄ΡΠΈΡ Π±ΠΈΡΠ°)
- ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ NOR-ΡΡ Π΅ΠΌΠ° Π²ΠΌΠ΅ΡΡΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΎΠ³ΠΎ 32-Π²Ρ ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ OR
- ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π·Π°ΡΡΠ΄ΠΊΠ° Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°Π·Π΅ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°
2. ΠΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ΅Ρ (Incrementer)
ΠΠ»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ:
- ΠΠ°Π½ΡΠ΅ΡΡΠ΅ΡΡΠΊΠ°Ρ ΡΠ΅ΠΏΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° (Manchester carry chain)
- Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠΏΡΡΠΊΠ° ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° (Carry skip)
- ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π±ΠΈΡΠΎΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
3. Π‘Π΅ΡΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ (Alignment Network)
ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π·:
- 4 Π½Π°Π±ΠΎΡΠ° Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΠΉ (Π΄Π»Ρ ΡΠ΄Π²ΠΈΠ³ΠΎΠ² 0, 8, 16, 24 Π±ΠΈΡΠ°)
- ΠΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡΡ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π½ΡΠΆΠ½ΡΡ ΡΡΡΠΎΠΊ Π±ΡΡΠ΅ΡΠ°
- ΠΡΠ°ΠΉΠ²Π΅ΡΡ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΠΎΠ³ΠΎ 32-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
4. Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠ° (Sign Extension)
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ 8/16-Π±ΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² 32-Π±ΠΈΡΠ½ΡΠ΅ Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°ΠΊΠ°:
- ΠΠ°ΡΡΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ²
- ΠΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡΡ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
- Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ Π±ΠΈΡΠΎΠ² 31-8
ΠΠΎΡΠΎΠΊ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅
- ΠΠ»ΠΎΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΈΠ½Ρ (Bus Interface Unit) ΡΠΈΡΠ°Π΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ
- ΠΠ°Π½Π½ΡΠ΅ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π² prefetch unit ΠΏΠΎ 32-Π±ΠΈΡΠ½ΠΎΠΉ ΡΠΈΠ½Π΅
- ΠΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ Ρ ΡΠ°Π½ΠΈΡ Π΄ΠΎ 16 Π±Π°ΠΉΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ
- ΠΠ΅ΠΊΠΎΠ΄Π΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΠΏΠΊΠΎΠ΄Ρ ΠΏΠΎ 8-Π±ΠΈΡΠ½ΠΎΠΉ ΡΠΈΠ½Π΅
- ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΠΠΠ£ ΠΏΠΎ 32-Π±ΠΈΡΠ½ΠΎΠΉ ΡΠΈΠ½Π΅
ΠΡΠ²ΠΎΠ΄Ρ
- ΠΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ~7400 ΡΡΠ°Π½Π·ΠΈΡΡΠΎΡΠΎΠ² (Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ 8080)
- ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π½Π΅Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠ°ΠΌΡΡΠΈ
- ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ x86
- Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ RISC-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠ΅ ΡΡ Π΅ΠΌΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ
ΠΡΠ° ΡΡΠ°ΡΡΡ — Π»ΠΈΡΡ ΡΠ°ΡΡΡ ΡΠ΅ΡΠΈΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΏΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° 386. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.