π Banks
Banks (Π±Π°Π½ΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ) β ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ±ΡΠΈΠΉ Π°Π΄ΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ Π±Π»ΠΎΠΊΠΎΠ² β Π±Π°Π½ΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠΎΡΠ΅ΡΡΠ΄Π½ΠΎ. ΠΡΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅.
π§ ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π±Π°Π½ΠΊΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ
- ΠΠ°ΠΌΡΡΡ ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΠΈΠ»ΠΈ ΡΡ ΠΎΠΆΠΈΡ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ Π±Π°Π½ΠΊΠΎΠ² β Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ.
- ΠΠ°ΠΆΠ΄ΡΠΉ Π±Π°Π½ΠΊ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π»ΠΈΠ½ΠΈΠΉ Π°Π΄ΡΠ΅ΡΠ°, ΡΠΈΠ½Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΈΠ³Π½Π°Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
- Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°Π·Π½ΡΠΌ Π±Π°Π½ΠΊΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΡΡΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ.
- ΠΠ΄ΡΠ΅ΡΠ°ΡΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π°:
- Π½ΠΎΠΌΠ΅Ρ Π±Π°Π½ΠΊΠ° β ΡΡΠ°ΡΡΠΈΠ΅ Π±ΠΈΡΡ Π°Π΄ΡΠ΅ΡΠ°,
- Π°Π΄ΡΠ΅Ρ Π²Π½ΡΡΡΠΈ Π±Π°Π½ΠΊΠ° β ΠΌΠ»Π°Π΄ΡΠΈΠ΅ Π±ΠΈΡΡ Π°Π΄ΡΠ΅ΡΠ°.
Π’ΠΈΠΏΡ Π±Π°Π½ΠΊΠΎΠ²
- Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±Π°Π½ΠΊΠΈ: ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±Π°Π½ΠΊ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΡΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π°Π΄ΡΠ΅ΡΠΎΠ².
- ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±Π°Π½ΠΊΠΈ: ΠΏΠ°ΠΌΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π°Π½ΠΊΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ΅ΡΠ°Ρ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°Π½ΠΊΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡΠ°Ρ .
- Interleaved banks: ΠΏΠ°ΠΌΡΡΡ ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π±Π°Π½ΠΊΠΈ Ρ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°Π΄ΡΠ΅ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π΄ΡΠ΅ΡΠ° 0, N, 2N ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΡΠ°Π·Π½ΡΠΌ Π±Π°Π½ΠΊΠ°ΠΌ), ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ: interleaving ΠΏΠ°ΠΌΡΡΠΈ Ρ 4 Π±Π°Π½ΠΊΠ°ΠΌΠΈ
ΠΠ΄ΡΠ΅ΡΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠ°ΠΊ:
ΠΠ΄ΡΠ΅Ρ | ΠΠ°Π½ΠΊ |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 0 |
5 | 1 |
β¦ | β¦ |
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΊ ΡΠ°Π·Π½ΡΠΌ Π±Π°Π½ΠΊΠ°ΠΌ.
Π‘Ρ Π΅ΠΌΠ° Π±Π°Π½ΠΊΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ
flowchart LR CPU["CPU / Memory Controller"] Bank0["Memory Bank 0"] Bank1["Memory Bank 1"] Bank2["Memory Bank 2"] Bank3["Memory Bank 3"] CPU --> Bank0 CPU --> Bank1 CPU --> Bank2 CPU --> Bank3
Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ°Π±ΠΎΡΡ
-
ΠΠ°ΠΏΡΠΎΡ CPU ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π°Π΄ΡΠ΅Ρ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π±Π°Π½ΠΊ.
-
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΡΠ°Π·Π½ΡΠΌ Π±Π°Π½ΠΊΠ°ΠΌ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
-
ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ Π±Π°Π½ΠΊΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ (ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ).
βοΈ ΠΠ΄Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ
-
Π DRAM ΠΌΠΎΠ΄ΡΠ»ΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°Ρ (Π±Π°Π½ΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΈ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ).
-
Π Cache ΠΈ Register File β Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΡΡΠ°ΡΡΠΊΠ°ΠΌ ΠΏΠ°ΠΌΡΡΠΈ.
-
Π GPU ΠΈ DSP Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π΄Π°Π½Π½ΡΡ .
-
Π ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°Π½Π°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΡΡ (NUMA, SMP).
-
Π ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ interleaved RAM Π΄Π»Ρ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
β ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
-
ΠΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π·Π° ΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°.
-
Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ/Π·Π°ΠΏΠΈΡΠΈ.
-
Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠ°Ρ .
-
Π£Π»ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ .
-
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Ρ ΡΠΎΡΡΠΎΠΌ ΡΠΈΡΠ»Π° Π±Π°Π½ΠΊΠΎΠ².
β ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
-
Π£ΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΏΠ°ΠΌΡΡΠΈ β ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π±Π°Π½ΠΊΠ°ΠΌΠΈ.
-
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΏΡΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ Π±Π°Π½ΠΊΡ.
-
Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ ΠΈ ΡΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΈΠ·-Π·Π° Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ.
-
ΠΠ΅ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π°Π΄ΡΠ΅ΡΠΎΠ².
-
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΈΠ·-Π·Π° ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π°Π½ΠΊΠ°ΠΌΠΈ.
π Π‘Π²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ
DRAM, SRAM, Set-associative, Memory Controller, Interleaving, NUMA, SMP, GPU, DSP, Register File, Bank Conflict, Memory Latency
Π Π΅Π·ΡΠΌΠ΅
ΠΠ°Π½ΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ β ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΡΡΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π΅Ρ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ². ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ, ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ CPU, GPU, DSP ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, Π±Π°Π½ΠΊΠΎΠ²Π°Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΡΠ°ΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°
C: ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΏΠΎ Π±Π°Π½ΠΊΠ°ΠΌ (interleaved)
#include <stdio.h>
#define BANKS 4
int get_bank(unsigned int addr) {
return addr % BANKS;
}
int main() {
for (unsigned int addr = 0; addr < 16; addr++) {
printf("Address %u -> Bank %d\n", addr, get_bank(addr));
}
return 0;
}
Verilog: ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π±Π°Π½ΠΊΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ
module bank_selector (
input [31:0] addr,
output reg [1:0] bank_id,
output reg [29:0] bank_addr
);
always @(*) begin
bank_id = addr[3:2]; // 4 Π±Π°Π½ΠΊΠΈ, 2 Π±ΠΈΡΠ° Π½Π° Π²ΡΠ±ΠΎΡ Π±Π°Π½ΠΊΠ°
bank_addr = addr[31:4]; // Π°Π΄ΡΠ΅Ρ Π²Π½ΡΡΡΠΈ Π±Π°Π½ΠΊΠ°
end
endmodule
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ:
JEDEC DDR4/DDR5 standards, Intel and ARM Memory Architecture docs, osdev.org, habr.com, Wikipedia, IEEE papers on memory systems, textbooks on computer architecture.