Банк памяти
Банк па́мяти (англ. memory bank) — метод организации компьютерной памяти, при котором общее адресное пространство делится на несколько независимых блоков — банков, которые могут работать параллельно или поочерёдно. Это повышает пропускную способность памяти, снижает задержки и позволяет более эффективно использовать ресурсы памяти, минимизируя конфликты при доступе[1].
Банк памяти является логической единицей хранения, которая зависит от аппаратного обеспечения. В компьютере банк памяти может определяться контроллером памяти вместе с физической организацией слотов аппаратной памяти.
В стандартной синхронной динамической памяти с произвольным доступом (SDRAM) или SDRAM с удвоенной скоростью передачи данных (DDR SDRAM) банк состоит из нескольких строк и столбцов единиц хранения и обычно распределён по нескольким микросхемам. В одной операции чтения или записи доступен только один банк, поэтому количество бит в столбце или строке, на банк и на чип, равно ширине шины памяти в битах (один канал). Размер банка дополнительно определяется количеством бит в столбце и строке на чип, умноженным на количество чипов в банке.
Принцип работы
- Память разбивается на несколько одинаковых (или схожих по размеру) независимых блоков — банков.
- Каждый банк имеет свой собственный набор линий адреса, шину данных и сигналы управления.
- В зависимости от архитектуры, доступ к разным банкам может выполняться одновременно, что повышает общую пропускную способность.
- Адресация физической памяти разделяется на:
- номер банка — старшие биты адреса,
- адрес внутри банка — младшие биты адреса[1].
В системах, использующих одноканальный доступ к памяти, банк памяти — это объём памяти (в битах), равный ширине шины данных центрального процессора. Таким образом, банк — это не фиксированный объём памяти, а величина, зависящая от ширины шины данных центрального процессора. Во всё большем количестве систем используется двухканальный доступ к памяти. В таких системах на банк памяти должны приходиться два одинаковых 64-битных модуля памяти (одинаковых по размеру, скорости и таймингам) вместо одного 64-битного модуля, который используется в одноканальном режиме[2].
Некоторые компьютеры имеют несколько идентичных банков оперативной памяти RAM и используют переключение банков для перехода между ними. Компьютеры с Гарвардской архитектурой имеют (как минимум) два различных банка памяти: один — для хранения программ и другой — для хранения данных.
Типы банков памяти
- Статический: фиксированный размер, каждый банк обслуживает строго свой диапазон адресов.
- Динамический: память динамически распределяется между банками, может использоваться в кэш-памяти и многобанковых структурах.
- Чередующийся (англ. Interleaved banks): чередующаяся память — это метод, который компенсирует относительно низкую скорость динамической памяти с произвольным доступом DRAM (или основной памяти), равномерно распределяя адреса памяти по банкам памяти. Таким образом, последовательные операции чтения и записи в память поочерёдно используют каждый банк памяти, что приводит к повышению пропускной способности памяти за счёт сокращения времени ожидания готовности банков памяти к выполнению операций. Память разбивается на банки с чередованием адресов (например, адреса 0, N, 2N принадлежат разным банкам), что позволяет одновременно обслуживать несколько последовательных запросов[1].
В кэшировании
Банк памяти — это часть кэш-памяти, к которой осуществляется последовательная адресация в общем наборе банков памяти. То есть когда элемент данных a(n) хранится в банке b, элемент данных a(n + 1) хранится в банке b + 1.
Кэш-память делится на банки, чтобы избежать влияния времени цикла банка. Цикл банка памяти (англ. Memory Bank Cycle) — это время полного такта доступа к банку памяти, начиная с открытия и заканчивая закрытием. Это параметр, который характеризует быстродействие микросхемы памяти и определяет отношение интервала, в течение которого строка открыта для переноса данных (tRAS — RAS# Active time), к периоду, в течение которого завершается полный цикл открытия и обновления ряда (tRC — Row Cycle time)[3].
При последовательном сохранении или извлечении данных каждый банк имеет достаточно времени для восстановления до поступления следующего запроса к этому банку.
Необходимо, чтобы количество модулей памяти имело такое же количество бит данных, как и шина. Банк может состоять из одного или нескольких модулей памяти.
Применение
- В DRAM модулях и контроллерах — для повышения пропускной способности и снижения задержек.
- При кэшировании и в регистровых файлах — для параллельного доступа к различным участкам памяти.
- В графическом процессоре GPU и цифровом сигнальном процессоре DSP — для одновременной работы с большим количеством данных.
- В многопроцессорных и многоканальных системах с общей памятью (NUMA, SMP).
- В системах с чередующейся памятью RAM — для равномерного распределения нагрузки[1].
Преимущества и недостатки
Преимущества
- Повышение пропускной способности памяти за счёт параллельного доступа.
- Снижение задержек (латентности) при чтении/записи.
- Уменьшение конфликтов при последовательных запросах.
- Улучшение эффективности кеширования и агрегации данных.
- Возможность масштабирования памяти с ростом числа банков.
Недостатки
- Усложнение контроллера памяти — требуется адресация для управление несколькими банками.
- Возможность конфликтов при одновременном обращении к одному банку.
- Увеличение площади и энергопотребления из-за дублирования управляющей логики.
- Неравномерная нагрузка при неправильном распределении адресов.
- Дополнительные задержки из-за согласования между банками[1].
Примечания
Литература
- 2.3.3 Data Random Access Memory // MCS-4 Assembly Language Programming Manual - The INTELLEC 4 Microcomputer System Programming Manual. — Preliminary. — Santa Clara, California, USA : Intel Corporation, December 1973. — P. 2—5 – 2-6. — ISBN MCS-030-1273-1.