Память с виртуальными каналами — VC DRAM
Идея архитектуры памяти с виртуальными каналами (VirtualChannel Memory Architecture, не путать с виртуальной памятью!) заключается в помещении между массивом запоминающих ячеек и внешним интерфейсом микросхемы памяти набора канальных буферов . При этом операции обмена данными разделяются на два процесса: «фасадный» обмен данными с каналами и «тыловой» обмен между каналами и массивом запоминающих ячеек. Оба процесса выполняются по командам со стороны внешнего интерфейса почти независимо друг от друга. Архитектура виртуальных каналов приложима к памяти любого типа, включая ПЗУ и флэш-память, но наиболее интересна она в приложении к динамической памяти — VC DRAM.
Устройство VC DRAM рассмотрим на примере микросхем емкостью 128 Мбит, на которых строятся выпускаемые модули DIMM VC DRAM. По интерфейсу (составу и уровням сигналов) микросхемы и модули VC DRAM аналогичны обычным микросхемам SDRAM, но отличаются системой команд. Микросхемы имеют такую же внешнюю организацию по 4,8 или 16 бит данных, но совершенно иную внутреннюю архитектуру. Они имеют две матрицы (два банка) запоминающих ячеек размером 8 К×8 К, то есть каждая строка имеет объем 8 Кбит и состоит из четырех сегментов размером по 2 Кбит. Между матрицами и внешним интерфейсом имеется 16 канальных буферов , каждый объемом 2 Кбит. За одно обращение к матрице выполняется параллельная передача 2 Кбит данных между одним из буферов и сегментом выбранной строки. Это «тыловой» обмен реализуют команды PRF (Prefetch — чтение массива в буфер) и RST (Restore — сохранение буфера в массиве), в которых микросхеме указывается номер банка, номер сегмента и номер канала. Предварительно командой ACT должна быть активирована требуемая строка матрицы (при подаче этой команды задается банк и адрес строки). Деактивация строк (предварительный заряд) может быть автоматической, сразу после выполнения обращений к массиву (для этого имеются специальные команды предвыборки и сохранения — PRFA и RSTA) или же по специальным командам, деактивирующим выбранный банк или оба банка сразу.
«Фасадный» обмен с канальными буферами выполняется по командам чтения и записи (READ и WRITE), в которых указывается номер канала и часть адреса, соответствующая адресу колонки в обычной микросхеме DRAM или SDRAM. Этот обмен выполняется в пакетном режиме, длина пакета программируется (1,2,4,8 или 16 передач), но пакет может быть укорочен подачей следующей команды обращения к каналу. Первые данные при чтении канала появляются с задержкой (Read Latency) в 2 такта относительно команды чтения, следующие идут в каждом такте. В некоторых моделях микросхем имеется поддержка комбинированной команды PFR (перед которой тоже должна быть команда ACT) — предвыборка с автопредзарядом и чтение буфера. После подачи этой команды первые данные появляются на 4-м такте — не раньше и не позже, чем при последовательной подаче команд PRF(А) и READ.
Регенерация VC DRAM выполняется так же, как и в SDRAM, — либо периодической подачей команд REF (авторегенерация по внутреннему счетчику адреса регенерируемых строк), либо в энергосберегающем режиме саморегенерации, в который микросхемы переходят по команде SELF.
Как видно из этого описания, работа VC DRAM очень похожа на работу SDRAM, но операции обмена данными разделены на две сравнительно независимые фазы. Активация-деактивация банков выглядит так же, но при чтении VC DRAM данные появляются даже позже, чем в SDRAM: у SDRAM эта задержка, CL (CAS Latency), составляет 2–3 такта, а у VC DRAM — 4 такта. Тем не менее применение VC DRAM дает прирост производительности памяти почти по всем тестам. Этот выигрыш получается за счет поддержки многозадачности в самих микросхемах и в контроллере памяти. Для работы с VC DRAM контроллер памяти должен «знать» ее систему команд, не имеющую прямой совместимости с командами SDRAM. Поддержка VC DRAM имеется далеко не во всех чипсетах — ее вводят, например, VIA и SiS, но фирма Intel эту память игнорирует. Механически и электрически модули VC DRAM совместимы с обычными модулями DRAM. Во время начального тестирования (POST) модули VC DRAM могут быть опознаны по информации, хранящейся в микросхеме EEPROM последовательной идентификации модуля, либо по поведению после инициализации.
Память VC DRAM по сравнению с другими типами динамической памяти обеспечивает меньшее среднее время задержки данных в многозадачных системах. Однако по пиковой скорости передачи она не имеет преимуществ перед SDRAM и проигрывает RDRAM и DDR SDRAM.
Модули динамической памяти
Динамическая память чаще всего применяется в виде модулей с разрядностью 1, 2, 4 или 8 байт, которые могут устанавливаться пользователем без каких-либо приспособлений. Модули стандартизованы, поэтому обеспечивается взаимная совместимость.
♦ SIPP и SIMM-30 — самые первые модули с однобайтной организацией, применялись вплоть до 486-х процессоров.
♦ SIMM-72-pin — 4-байтные модули, применявшиеся на системных платах для 486 и Pentium.
♦ DIMM-168 — 8-байтные модули для Pentium и выше. Существует два поколения, существенно различных по интерфейсу. Модули DIMM 168-pin Buffered (1-го поколения), как и слоты для них, встречаются редко и с широко распространенными модулями DIMM 2-го поколения несовместимы даже механически (по ключам). Наиболее популярно второе поколение с микросхемами SDRAM. Различают модификации в зависимости от наличия буферов или регистров на управляющих сигналах: Unbuffered, Buffered и Registered.
♦ DIMM-184 — 8-байтные модули DDR SDRAM для системных плат 6–7 поколений процессоров.
♦ RIMM — 2-байтные модули RDRAM для системных плат 6–7 поколений процессоров.
♦ SO DIMM (72 и 144-pin) и SO RIMM — малогабаритные варианты модулей (для блокнотных ПК).
♦ AIMM (AGP Inline Memory Module), они же GPA Card (Graphics Performance Accelerator) — 66-контактные 32- или 16-битные модули SDRAM, предназначенные для расширения памяти графических адаптеров, встроенных в системную плату.
Не пересчитывая контакты, отличить «короткие» SIMM от «длинных» и DIMM-модулей легко по их размеру: длина модуля SIMM-30 pin примерно 89 мм, SIMM-72 — 108 мм. Модули DIMM-168 и DIMM-184 имеют одинаковую длину около 134 мм (5,25"), но у 168-контактных модулей два ключа, а у 184-контактных — один (за счет чего больше контактов); кроме того, у DIMM-184 по две прорези по бокам, а не по одной. Модули RIMM имеют ту же длину, но легко отличимы по меньшему числу контактов — середина краевого разъема свободна от ламелей. У модулей RIMM микросхемы памяти закрыты пластиной радиатора. Кроме того, их левый ключ гораздо ближе к центру, чем у DIMM.
Модули памяти применяются и в принтерах (лазерных) — DIMM-168, 100-Pin DIMM, AIMM, SO DIMM-144, но иногда для них требуются и специальные модули (по конструктиву или параметрам).
Современные модули памяти имеют шину данных разрядностью 1, 4 или 8 байт. Кроме основных информационных бит, модули могут иметь дополнительные контрольные биты с различной организацией.
♦ Модули без контрольных бит (non Parity ) имеют разрядность 8, 32 или 64 бита и допускают независимое побайтное обращение с помощью отдельных для каждого байта линий CAS#.
♦ Модули с контролем паритета (Parity ) имеют разрядность 9, 36 или 72 бита и также допускают независимое побайтное обращение, контрольные биты по обращению приписаны к соответствующим байтам.
♦ Модули с генератором паритета (Fake Parity, Parity Generator, Logical Parity ) так же допускают независимое побайтное обращение, логические генераторы паритета по чтению приписаны к соответствующим байтам. Действительного контроля памяти они не обеспечивают.
♦ Модули с контролем по схеме ЕСС имеют разрядность 36, 40, 72 или 80 бит. Обычно они допускают побайтное обращение к информационным битам, но контрольные биты у них привязаны к одному или нескольким сигналам CAS#, поскольку ЕСС подразумевает обращение сразу к целому слову.
♦ ECC-Optimized — модули, оптимизированные под режим ЕСС. От обычных модулей ЕСС они отличаются тем, что могут не обеспечивать побайтное обращение к информационным битам.
ECC-on-Simm (EOS) — модули со встроенной схемой исправления ошибок. Каждый байт модуля имеет встроенные средства контроля и исправления ошибок, работающие прозрачно. Для системы модули функционируют как обычные паритетные — в случае обнаружения неисправимой ошибки они генерируют ошибочный бит паритета. Эти модули обеспечивают отказоустойчивость по памяти (Kill Protected Memory) для системных плат, поддерживающих только контроль паритета. По «благородству» поведения (делают больше, чем «говорят») они являются прямой противоположностью модулям с генератором паритета.
Набор сигналов модуля SIMM в основном совпадает с сигналами одиночных микросхем динамической памяти. Основные характеристики распространенных модулей приведены в табл. 7.5, более подробное описание — в следующих разделах.
Таблица 7.5 . Основные характеристики модулей памяти
Модуль | Разрядность¹, бит | Объем, Мбайт | Тип | Питание, В | Спецификация |
SIMM-30, SIPP | 8 (9) | 0,25-4 | FPM, EDO | 60, 70, 80 нс | |
SIMM-72 | 32 (36) | 1-32 | FPM, EDO, BEDO | 50, 60, 70 нс | |
DIMM-168-I | 64 (72,80) | 8-256 | FPM, EDO | 50, 60, 70 нс | |
DIMM-168-II | 64 (72, 80) | 8-512 | FPM, EDO | 5, 3,3 | 50, 60, 70 нс |
DIMM-168-II | 64 (72, 80) | 8-1024 | SDRAM | 3,3 | PC66, РС100, PC133 |
DIMM-184 | 64 (72, 80) | 128, 256… | DDR SDRAM | 2,5 | PC1600, PC2100 |
AIMM | SDRAM | 3,3 | 166 МГц | ||
100-Pin DIMM | 4-128 | SDRAM | 3,3 | 100,125 МГц | |
100-Pin DIMM | 4-32 | FPM, EDO | 3,3 | 50, 60 нс | |
SO DIMM-72 | 32 (36) | 4-32 | FPM, EDO | 3,3 | 50, 60 нс |
SO DIMM-144 | 64 (72) | 32,64 | FPM, EDO | 3,3 | 50, 60 нс |
SO DIMM-144 | 64 (72) | 32-256 | SDRAM | 3,3 | 66, 100, 125, 133 МГц |
RIMM | 16 (18) | 64, 96, 128, 256 | RDRAM | 2,5 | PC600, PC700, PC800 |
¹ В скобках указана разрядность с учетом битов паритета или ЕСС.
Спецификация быстродействия у разных типов памяти отражает различные параметры и выбирается исходя из технических и маркетинговых соображений. Для асинхронной памяти указывают время доступа (в наносекундах). Для памяти SDRAM указывается тактовая частота, на которой она работает с достойным значением латентности (на более высокой частоте она, возможно, и будет работать, но с большим значением CL). Обозначения PC66, PC100 и PC133 здесь тоже указывают на частоту (отсутствие обозначения соответствует 66 МГц — поначалу иных спецификаций не было), а также на соответствие спецификациям Intel. Для DDR SDRAM числа в спецификации отражают пиковую пропускную способность (Мбайт/с): PC1600 (8 байт, 2×100 МГц), PC2100 (8 байт, 2×133 МГц). Для RDRAM числа в названии (600, 700 и 800) обозначают округленную частоту (2×300, 2×356 и 2×400 МГц) схода двухбайтных данных с конвейера RDRAM. Таким образом, их пиковая производительность составляет 1200, 1424 и 1600 Мбайт/с.
Маркировка модулей SDRAM, согласно спецификациям Intel, имеет вид PCX-abc-defY, где X — частота, МГц; а = CL (Cas Latency, в тактах), b = Trcd (задержка RAS-CAS), с = Trp (время предзаряда RAS), d = Тас (время доступа), e — ревизия последовательной идентификации (SPD), f — резервный символ, Y — символ архитектурных особенностей (R — признак наличия регистров; отсутствие символа означает отсутствие регистров и буферов). Временны́е характеристики задаются в десятках нс, но Тас может задаваться и в наносекундах. Номер ревизии SDP может содержать как последнюю цифру, так и обе. Так, модуль PC100-322-620 работает на частоте 100 МГц при CL = 3 и Тас = 60 нс, SPD ревизии 1.2. Но он может обозначаться и как PC 100-322-60120. Модуль PC100-322-620R имеет те же параметры, но еще снабжен и регистрами.
Существуют адаптеры , преобразующие форматы модулей SIMM (SIMMVerter, SIMMSaver ). Они позволяют, например, сложить из четырех SIMM-30 один SIMM-72 или из двух односторонних SIMM-72 сложить один двусторонний. Трудно назвать такие конструктивные решения элегантными и надежными (появляется слишком много механических соединений и контактов), но их применение может быть оправданно при дефиците гнезд на плате. Или, например, при наличии четырех 4-мегабайтных модулей SIMM-30 можно сделать 16-мегабайтный SIMM-72. Следует помнить о повышенной нагрузке на шины, вносимой такими «супермодулями» с непомерным количеством микросхем и проводников.
Идентификация модулей
Для автоматической идентификации наличия и типа установленного модуля применяются различные методы, основанные на считывании конфигурационной информации с модуля (параллельная или последовательная идентификация) или «исследовании» свойств модуля во время начального тестирования по включении питания.
Метод параллельной идентификации начал применяться с модулями SIPP и SIMM-30 фирмы IBM. В интерфейс этих модулей были введены два дополнительных вывода, и по заземленным (на модуле) сигналам системная плата могла распознать наличие и объем установленной памяти. В SIMM-72 для идентификации предназначались 4 вывода (для ECC-модулей — 5), которые должны были нести информацию об объеме, быстродействии и типе применяемой памяти. Этот метод не выдержал натиска новых типов памяти, поскольку описать их важнейшие параметры четырьмя битами невозможно. В SO DIMM-72 используют 7 бит, в DIMM-168 первого поколения — 10, что тоже не решает проблем.
Новые модули памяти — DIMM-168 второго поколения, SO DIMM-144, DIMM-184 используют последовательную идентификацию (Serial Presence Detection). На модуль устанавливается микросхема специальной энергонезависимой памяти с последовательным доступом по двухпроводному интерфейсу I²С, хранящая исчерпывающую конфигурационную информацию. Формат конфигурационных данных стандартизован JEDEC, из доступных 256 байт под параметры пока определены только первые 32 и еще 32 зарезервированы, 64 байта отданы под информацию производителя (табл. 7.6). Основные параметры описываются в явном виде, например, временны́е — в наносекундах, количество бит адреса задается числами. Интерфейс I²С позволяет легко объединять его сигналы со всех модулей, что существенно проще, чем коммутация 4-10 линий параллельной идентификации. На разъем модулей DIMM-168 выведены 3 бита адреса SA[0:2], что позволяет разводкой этих выводов адресовать до восьми модулей с объединенными линиями синхронизации и данных. При необходимости расширения следующие восемь модулей потребуют от контроллера (чипсета) еще только одной двунаправленной или выходной линии. Адрес в SO DIMM-144 фиксирован, так что двухпроводный интерфейс позволяет опрашивать только один модуль, а каждый следующий модуль потребует по одной дополнительной линии.
Таблица 7.6 . Назначение байт последовательной идентификации
Байт | Назначение | |
Стандартизованная информация о микросхеме | ||
0 | Число записанных байт конфигурационной памяти | |
Разрядность адреса микросхемы Serial PD (определяет объем конфигурационной памяти: 1–2 байта, 2–4 байта, 0Dh — 8 Кбайт) | ||
Тип памяти: 00 — резерв, 01 — Std FPM, 02 — EDO, 03 — Pipelined Nibble (BEDO), 04 —SDRAM | ||
Количество бит адреса строк в банке 1 (биты 0–3) и банке 2 (биты 4–7) по модулю 16 (0 — не определено, 1–1 или 16,2–2 или 17 и т. д.) Если банки одинаковые, то биты 4–7 нулевые | ||
Количество бит адреса столбцов (аналогично предыдущему) | ||
Количество банков (рядов микросхем) | ||
6-7 | Разрядность данных с учетом контрольных бит (если менее 255, байт 7–0) | |
Уровень напряжения интерфейса: 0 — 7TL/5B, 01 —LVTTL (не допускает 5 В), 02 — HSTL 1.5, 03 — SSTL 3.3,04 — SSTL 2.5 | ||
Для DRAM — RAS Access time (в наносекундах). Для SDRAM — минимальное время цикла (Tclk) для максимального значения CL (десятые доли не в BCD-коде) | ||
Для DRAM — CAS Access time (в наносекундах). Для SDRAM — время доступа относительно тактового импульса (Тас) аналогично предыдущему | ||
Схема контроля: 00 — Non-Parity, 01 — Parity, 02 — ЕСС | ||
Частота (тип) регенерации: 00 — Normal (распределенный цикл 156 мкс), 01 — Reduced 0.25х (39 мкс), 02 — Reduced 0.5х (78 мкс), 03 — Extended 2x (313 мкс), 04 — Extended 4x (625 мкс), 05 — Extended 8x (125 мкс). Бит 7 является признаком саморегенерации (биты 6:0 кодируют те же периоды) | ||
Разрядность микросхем основной памяти, бит. Бит 7 равен 1, если имеется второй банк с удвоенной разрядностью микросхем. Если банк один или оба банка одинаковы, бит 7 равен 0 | ||
Разрядность микросхем контрольных разрядов, бит (аналогично) | ||
15-30 | Детальное описание временных и организационных параметров SDRAM | |
Объемы банков (рядов микросхем): бит 0–4 Мбайт, бит 1–8 Мбайт, бит 7 — 512 Мбайт, единичное значение устанавливается в одном или нескольких (двух) битах | ||
32-35 | Время предварительной установки и удержания входных сигналов | |
36-61 | Резерв | |
Ревизия SPD (две BCD-цифры) | ||
Контрольная сумма байт 0-62 по модулю 256 | ||
Информация изготовителя | ||
64-71 | Идентификатор производителя по JEDEC | |
Код страны производителя | ||
73-90 | Код изделия (ASCII) | |
91-92 | Код модификации | |
93-94 | Дата изготовления (wwyy — неделя, год) | |
95-98 | Серийный номер | |
99-127 | Специальные данные изготовителя | |
Спецификация частоты (для Intel) DIMM SDRAM. Частота 66 МГц задается кодом 66h, более высокие значения — числом МГц (100 = 64h) | ||
Детализация для SDRAM 100 МГц (для Intel) | ||
Байты 128–255 конфигурационной памяти свободны. Эту область в принципе можно занимать для пометки компьютера (точнее, модуля памяти) с целью привязки программного обеспечения к конкретному экземпляру PC. Однако при неосторожном использовании модулей с микросхемами без защиты от модификации случайная запись в ячейки 0-127 может привести к недоступности модуля памяти. «Оживить» его можно будет только записью корректных данных.