πŸ“Œ Banks

Banks (Π±Π°Π½ΠΊΠΈ памяти) β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ памяти, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±Ρ‰ΠΈΠΉ адрСсный пространство дСлится Π½Π° нСсколько нСзависимых Π±Π»ΠΎΠΊΠΎΠ² β€” Π±Π°Π½ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ памяти, сниТаСт Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ позволяСт Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСсурсы памяти, минимизируя ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΏΡ€ΠΈ доступС.


🧠 Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ Π±Π°Π½ΠΊΠΎΠ² памяти

  • ΠŸΠ°ΠΌΡΡ‚ΡŒ разбиваСтся Π½Π° нСсколько ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΈΠ»ΠΈ схоТих ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π±Π°Π½ΠΊΠΎΠ² β€” нСзависимых Π±Π»ΠΎΠΊΠΎΠ² памяти.
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π°Π½ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ свой собствСнный Π½Π°Π±ΠΎΡ€ Π»ΠΈΠ½ΠΈΠΉ адрСса, ΡˆΠΈΠ½Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сигналы управлСния.
  • Π’ зависимости ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, доступ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ Π±Π°Π½ΠΊΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ.
  • АдрСсация физичСской памяти раздСляСтся Π½Π°:
    • Π½ΠΎΠΌΠ΅Ρ€ Π±Π°Π½ΠΊΠ° β€” ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅ Π±ΠΈΡ‚Ρ‹ адрСса,
    • адрСс Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π°Π½ΠΊΠ° β€” младшиС Π±ΠΈΡ‚Ρ‹ адрСса.

Π’ΠΈΠΏΡ‹ Π±Π°Π½ΠΊΠΎΠ²

  • БтатичСскиС Π±Π°Π½ΠΊΠΈ: фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π°Π½ΠΊ обслуТиваСт строго свой Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ адрСсов.
  • ДинамичСскиС Π±Π°Π½ΠΊΠΈ: ΠΏΠ°ΠΌΡΡ‚ΡŒ динамичСски распрСдСляСтся ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π½ΠΊΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ΅ΡˆΠ°Ρ… ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°Π½ΠΊΠΎΠ²Ρ‹Ρ… структурах.
  • Interleaved banks: ΠΏΠ°ΠΌΡΡ‚ΡŒ разбиваСтся Π½Π° Π±Π°Π½ΠΊΠΈ с Ρ‡Π΅Ρ€Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ адрСсов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, адрСса 0, N, 2N ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΌ Π±Π°Π½ΠΊΠ°ΠΌ), Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… запросов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: interleaving памяти с 4 Π±Π°Π½ΠΊΠ°ΠΌΠΈ

АдрСса Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ:

АдрСсБанк
00
11
22
33
40
51
……

Π­Ρ‚ΠΎ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… доступа ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ Π±Π°Π½ΠΊΠ°ΠΌ.

Π‘Ρ…Π΅ΠΌΠ° Π±Π°Π½ΠΊΠΎΠ² памяти

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.