Электронная память применяется практически во всех подсистемах PC, выступая в качестве оперативной памяти, кэш-памяти, постоянной памяти, полупостоянной памяти, буферной памяти, внешней памяти. В этой главе описаны интерфейсы микросхем и модулей динамической, статической и энергонезависимой памяти.
Динамическая память — DRAM (Dynamic RAM) — получила свое название от принципа действия ее запоминающих ячеек, которые выполнены в виде конденсаторов, образованных элементами полупроводниковых микросхем. При отсутствии обращения к ячейке со временем за счет токов утечки конденсатор разряжается и информация теряется, поэтому такая память требует периодической подзарядки конденсаторов (обращения к каждой ячейке) — память может работать только в динамическом режиме. Этим она принципиально отличается от статической памяти, реализуемой на триггерных ячейках и хранящей информацию без обращений к ней сколь угодно долго (при включенном питании).
Запоминающие ячейки микросхем DRAM организованы в виде двумерной матрицы. Адреса строки и столбца передаются по мультиплексированной шине адреса
MA
(Multiplexed Address) и стробируются по спаду импульсов RAS#
(Row Access Strobe) и CAS#
(Column Access Strobe). Состав сигналов микросхем динамической памяти приведен в табл. 7.1.
Таблица 7.1. Сигналы микросхем динамической памяти
Сигнал | Назначение |
---|---|
RAS# | Row Access Strobe — строб выборки адреса строки. По спаду сигнала начинается любой цикл обращения; низкий уровень сохраняется на все время цикла. Перед началом следующего цикла сигнал должен находиться в неактивном состоянии (высокий уровень) не менее, чем время предварительного заряда RAS (TRP — RAS precharge time) |
CAS# | Column Access Strobe — строб выборки адреса столбца. По спаду сигнала начинается цикл записи или чтения; минимальная длительность (TCAS) определяется спецификацией быстродействия памяти. Минимальная длительность неактивного состояния между циклами (высокий уровень) должна быть не менее, чем время предварительного заряда CAS (TCP — CAS precharge time) |
MAi | Multiplexed Address — мультиплексированные линии адреса. Во время спада сигнала RAS# на этих линиях присутствует адрес строки, во время спада CAS# — адрес столбца. Адрес должен устанавливаться до спада соответствующего строба и удерживаться после него еще некоторое время. Микросхемы с объемом 4 М ячеек могут быть с симметричной организацией — 11 бит адреса строк и 11 бит адреса колонок или асимметричными — 12×10 бит соответственно |
WE# | Write Enable — разрешение записи. Данные записываются в выбранную ячейку либо по спаду CAS# при низком уровне WE# (Early Write — ранняя запись, обычный вариант), либо по спаду WE# при низком уровне CAS# (Delayed Write — задержанная запись). Переход WE# в низкий уровень и обратно при высоком уровне CAS# записи не вызывает, а только переводит выходной буфер EDO DRAM в высокоимпедансное состояние |
ОЕ# | Output Enable — разрешение открытия выходного буфера при операции чтения. Высокий уровень сигнала в любой момент переводит выходной буфер в высокоимпедансное состояние |
DB-In | Data Bit Input — входные данные (только для микросхем с однобитной организацией) |
DB-Out | Data Bit Output — выходные данные (только для микросхем с однобитной организацией). Выходные буферы стандартных микросхем открыты только при сочетании низкого уровня сигналов RAS#, CAS#, OE# и высокого уровня WE#; при невыполнении любого из этих условий буферы переходят в высокоимпедансное состояние. У микросхем EDO выходные буферы открыты и после подъема CAS#. Логика управления предусматривает возможность непосредственного объединения выходов нескольких микросхем |
DQx | Data Bit — объединенные внутри микросхемы входные и выходные сигналы данных (объединение экономит количество выводов для микросхем с многобитной организацией) |
N.C. | No Connection — свободный вывод |
Выбранной микросхемой памяти является та, на которую во время активности (низкого уровня) сигнала
RAS#
приходит сигнал CAS#
(тоже низким уровнем). Тип обращения определяется сигналами WE#
и CAS#
. Временная диаграмма «классических» циклов записи и чтения приведена на рис. 7.1. Как из нее видно, при чтении данные на выходе относительно начала цикла (сигнала RAS#
) появятся не раньше, чем через интервал TRAC, который и является временем доступа.
Рис. 7.1. Временные диаграммы чтения и записи динамической памяти
Микросхемы DRAM имеют множество временных параметров, из которых выделим несколько важнейших, с которыми иногда приходится сталкиваться при настройке параметров циклов в CMOS Setup.
♦ Время доступа TRAC (RAS Access Time) — задержка появления действительных данных на выходе относительно спада импульса RAS (см. рисунок). Этот основной параметр спецификации памяти, измеряемый в единицах или десятках наносекунд, обычно является последним элементом обозначения микросхем и модулей (ххх-7 и ххх-70 означают время доступа 70 нс). Для современных микросхем характерно время доступа 40-100 нс.
♦ Время цикла (cycle time) — минимальный период между началами соседних циклов обращения (TWC для записи и TRC для чтения). Для современных микросхем лежит в пределах 75-125 нс.
♦ Время цикла (период следования импульсов
CAS#
) в страничном режиме TPC (Page CAS Time — см. п. 7.1.1).
♦ Длительность сигналов
RAS#
и CAS#
— TRAS и TCAS — минимальная длительность активной части (низкого уровня) стробирующих сигналов (см. рисунок).
♦ Время предварительного заряда RAS и CAS TRP, и TCP (RAS и CAS Precharge Time) — минимальное время нахождения соответствующих сигналов в высоком состоянии.
♦ Время задержки между импульсами
RAS#
и CAS#
TRCD (RAS to CAS Delay).
♦ Задержка данных относительно импульса
CAS#
(TCAC).
Все эти параметры и определяют предел производительности памяти. В табл. 7.2 приведены типовые значения временных параметров, отвечающих конкретной спецификации быстродействия. На них можно ориентироваться при задании циклов обращений к памяти в CMOS Setup, но при этом необходимо учитывать, что микросхемы различных производителей могут несколько отличаться друг от друга по отдельным параметрам.
Таблица 7.2. Ключевые параметры временной диаграммы DRAM
Спецификация быстродействия | TRC, нс | TRAC, нс | TPC, нс | TCAS, нс | TCP, нс |
---|---|---|---|---|---|
-4 | 75 | 40 | 15 | 6 | 6 |
-5 | 100 | 50 | 20 | 8 | 8 |
-6 | 104 | 60 | 25 | 10 | 10 |
-7 | 110 | 70 | 30 | 12 | 12 |
Отметим, что все, даже самые «модные» типы памяти — SDRAM, DDR SDRAM и Rambus DRAM — имеют запоминающее ядро, которое обслуживается описанным выше способом.
Поскольку обращения (запись или чтение) к различным ячейкам памяти обычно происходят в случайном порядке, то для поддержания сохранности данных применяется регенерация (Memory Refresh — обновление памяти) — регулярный циклический перебор ее ячеек (обращение к ним) с холостыми циклами. Циклы регенерации могут организовываться разными способами, классическим является цикл без импульса
CAS#
, сокращенно именуемый ROR (RAS Only Refresh — регенерация только импульсом RAS#
). Другой вариант — цикл CBR (CAS Before RAS), поддерживаемый практически всеми современными микросхемами памяти. В этом цикле регенерации спад импульса RAS#
осуществляется при низком уровне сигнала CAS#
(в обычном цикле обращения такой ситуации не возникает). Адрес регенерируемой строки для цикла COR генерирует контроллер памяти, для CBR этот адрес берется из внутреннего счетчика каждой микросхемы памяти. Цикл скрытой регенерации (hidden refresh) является разновидностью цикла CBR.
Микросхемы синхронной динамической памяти выполняют циклы CBR по команде Auto Refresh. А по команде Self Refresh или Sleep Mode они выполняют автономную регенерацию в энергосберегающем режиме.
Временная диаграмма, приведенная на рис. 7.1, может быть модифицирована для случая последовательного обращения к ячейкам, принадлежащим к одной строке матрицы. В этом случае адрес строки выставляется на шине только один раз и сигнал
RAS#
удерживается на низком уровне на время всех последующих циклов обращений, которые могут быть как циклами записи, так и чтения. Такой режим обращения называется режимом быстрого страничного обмена FPM (Fast Page Mode), или просто режимом страничного обмена (Page Mode), его временная диаграмма приведена на рис. 7.2. Понятие «страница» на самом деле относится к строке (row), а состояние с низким уровнем сигнала RAS#
называется «открытой страницей». Преимущество данного режима заключается в экономии времени за счет исключения фазы выдачи адреса строки из циклов, следующих за первым, что позволяет повысить производительность памяти. Режим FPM поддерживает и самая обычная асинхронная память, называемая стандартной (Std).
Рис. 7.2. Страничный режим считывания стандартной памяти DRAM (FPM
Память EDO DRAM (Extended или Enhanced Data Out) содержит регистр-защелку (data latch) выходных данных, что обеспечивает некоторую конвейеризацию работы для повышения производительности при чтении. Регистр «прозрачен» при низком уровне сигнала
CAS#
, а по его подъему фиксирует текущее значение выходных данных до следующего его спада. Перевести выходные буферы в высокоимпедансное состояние можно либо подъемом сигнала ОЕ#
(Output Enable), либо одновременным подъемом сигналов CAS#
и RAS#
, либо импульсом WE#
, который при высоком уровне CAS#
не вызывает записи (в PC управление по входу ОЕ#
практически не используют).
Временная диаграмма работы с EDO-памятью в режиме страничного обмена приведена на рис. 7.3; этот режим иногда называют гиперстраничным режимом обмена НРМ (Hyper Page mode). Его отличие от стандартного заключается в подъеме импульса
CAS#
до появления действительных данных на выходе микросхемы. Считывание выходных данных может производиться внешними схемами вплоть до спада следующего импульса CAS#
, что позволяет экономить время за счет сокращения длительности импульса CAS#
. Время цикла внутри страницы уменьшается, повышая производительность в страничном режиме на 40 %.
Рис. 7.3. Страничный режим считывания EDO DRAM (HPM)
Установка EDO DRAM вместо стандартной памяти в неприспособленные для этого системы может вызвать конфликты выходных буферов устройств, разделяющих с памятью общую шину данных. Скорее всего, этот конфликт возникнет с соседним банком памяти при чередовании банков. Для отключения выходных буферов EDO-памяти внутри страничного цикла обычно используют сигнал
WE#
, не вызывающий записи во время неактивной фазы CAS#
(рис. 7.4, кривая а). По окончании цикла буферы отключаются лишь по снятию сигнала RAS#
(рис. 7.4, кривая б).
Рис. 7.4. Управление выходным буфером EDO DRAM
Из принципиального различия в работе выходных буферов следует, что в одном банке не стоит смешивать EDO и стандартные модули. EDO-модули поддерживаются не всеми чипсетами и системными платами (в большей мере это относится к системным платам для процессоров 486).
В памяти BEDO DRAM (Burst EDO) кроме регистра-защелки выходных данных, стробируемого теперь по фронту импульса
CAS#
, содержится еще и внутренний счетчик адреса колонок для пакетного цикла. Это позволяет выставлять адрес колонки только в начале пакетного цикла (рис. 7.5), а во 2-й, 3-й и 4-й передачах импульсы CAS#
только запрашивают очередные данные. В результате удлинения конвейера выходные данные как бы отстают на один такт сигнала CAS#
, зато следующие данные появляются без тактов ожидания процессора, чем обеспечивается лучший цикл чтения. Задержка появления первых данных пакетного цикла окупается повышенной частотой приема последующих. BEDO-память применяется в модулях SIMM-72 и DIMM, но поддерживается далеко не всеми чипсетами.
Рис. 7.5. Страничный режим считывания BEDO DRAM
Вышеперечисленные типы памяти являются асинхронными по отношению к тактированию системной шины компьютера. Это означает, что все процессы инициируются только импульсами
RAS#
и CAS#
, а завершаются через какой-то определенный (для данных микросхем) интервал. На время этих процессоров шина памяти оказывается занятой, причем в основном ожиданием данных.
Микросхемы синхронной динамической памяти SDRAM (Synchronous DRAM) представляет собой конвейеризированные устройства. По составу сигналов интерфейс SDRAM близок к обычной динамической памяти: кроме входов синхронизации здесь есть мультиплексированная шина адреса, линии
RAS#
, CAS#
, WE#
(разрешение записи) и CS#
(выбор микросхемы) и линии данных (табл. 7.3). Все сигналы стробируются по положительному перепаду синхроимпульсов, комбинация управляющих сигналов в каждом такте кодирует определенную команду. С помощью этих команд организуется та же последовательность внутренних сигналов RAS
и CAS
, которая рассматривалась и для памяти FPM.
Таблица 7.3. Назначение сигналов в микросхемах SDRAM
Сигнал | I/O | Назначение |
---|---|---|
CLK | I | Clock Input — синхронизация, действует по положительному перепаду |
CKE | I | Clock Enable — разрешение синхронизации (высоким уровнем). Низкий уровень переводит микросхему в режим Power Down, Suspend или Self Refresh |
CS# | I | Chip Select — разрешение декодирования команд (низким уровнем). При высоком уровне новые команды не декодируются, но выполнение начатых продолжается |
RAS#, CAS#, WE# | I | Row Address Strobe, Column Address Strobe, Write Enable — сигналы, определяющие операцию (код команды) |
BS0, BS1 или BA0, BA1 | I | Bank Selects или Bank Address — выбор банка, к которому адресуется команда |
А[0:12] | I | Address — мультиплексированная шина адреса. В циклах Bank Activate определяют адрес строки. В циклах Read/Write линии A[0:9] и А11 задают адрес столбца. Линия А10 в циклах Read/Write включает режим автопредзаряда (при А10=1), в цикле Precharge A10=1 задает предзаряд всех банков (независимо от BS0, BS1) |
DQx | I/O | Data Input/Output — двунаправленные линии данных |
DQM | I | Data Mask — маскирование данных. В цикле чтения высокий уровень переводит шину данных в высокоимпедансное состояние (действует через 2 такта). В цикле записи высокий уровень запрещает запись текущих данных, низкий — разрешает (действует без задержки) |
VSS, VDD | – | Общий провод и питание ядра |
VSSQ, VDDQ | – | Общий провод и питание выходных буферов. Изолированы от питания ядра для снижения помех |
Данные для первой передачи пакета записи устанавливаются вместе с командой
WR
. Данные для остальных передач пакета передаются в следующих тактах. Первые данные пакета чтения появляются на шине через определенное количество тактов после команды. Это число, называемое CAS Latency (CL), определяется временем доступа TCAC и тактовой частотой. Остальные данные пакета выдаются в последующих тактах. Временные диаграммы работы SDRAM приведены на рис. 7.6. Здесь показана команда записи WR
, за которой следует команда чтения RD
из той же страницы, предварительно открытой командой ACT
. Далее страница закрывается командой PRE
. Длина пакета 2, CL = 3.
Рис. 7.6. Временные диаграммы пакетных циклов SDRAM: А и В — данные для записи по адресу R0/C0 и R0/C0+1, С и D — данные, считанные по адресу R0/C1 и R0/C1 +1
Регенерация (цикл CBR с внутренним счетчиком адреса регенерируемой строки) выполняется по команде
REF
, которую можно вводить только при состоянии покоя (idle) всех банков.
Микросхемы SDRAM оптимизированы для пакетной передачи. У них при инициализации программируется длина пакета (burst length=1, 2, 4, 8 элементов), порядок адресов в пакете (wrap mode: interleave/linear — чередующийся/линейный) и операционный режим. Пакетный режим может включаться как для всех операций (normal), так и только для чтения (Multiple Burst with Single Write). Этот выбор позволяет оптимизировать память для работы либо с WB, либо с WT-кэшем.
Обратим внимание, что внутренний счетчик адреса работает по модулю, равному запрограммированной длине пакетного цикла (например, при burst length=4 он не позволяет перейти границу обычного четырехэлементного пакетного цикла).
Пакетные циклы могут прерываться (принудительно завершаться) последующими командами. При этом оставшиеся адреса отбрасываются, и прерывающий пакет будет иметь полную длину (если его самого не прервут).
В команде
Write
имеется возможность блокирования записи данных любого элемента пакета — для этого достаточно в его такте установить высокий уровень сигнала DQM
. Этот же сигнал используется и для перевода в высокоимпедансное состояния буферов данных при операции чтения.
Микросхемы SDRAM имеют средства энергосбережения, для управления ими используется вход разрешения синхронизации CKE.
В режиме саморегенерации (Self Refresh) микросхемы периодически выполняют циклы регенерации по внутреннему таймеру и не реагируют на внешние сигналы, поэтому внешняя синхронизация может быть остановлена.
Режимы пониженного потребления (Power Down Mode) устанавливаются при переводе
CKE
в низкий уровень командой NOP
или INHBT
. В этих режимах микросхема не воспринимает команд. Поскольку в данных режимах регенерация не выполняется, длительность пребывания в них ограничена периодом регенерации.
Если во время выполнения команды чтения или записи установить
CKE
=L, то микросхема перейдет в режим Clock Suspend Mode, в котором «замораживается» внутренняя синхронизация (нет продвижения данных) и не воспринимаются новые команды.
Для памяти SDRAM ключевыми параметрами являются:
♦ допустимая тактовая частота;
♦ CL (Cas Latency) — число скрытых тактов (2 или 3);
♦ TRCD — задержка RAS-CAS, выраженная в тактах (2 или 3);
♦ TRP — время предварительного заряда RAS;
♦ TRC — минимальное время цикла обращений к строкам одного банка;
♦ TAC — время задержки появления данных на выходе относительно фронта синхросигнала.
По тактовой частоте для SDRAM, применяемой в качестве ОЗУ PC-совместимых компьютеров, имеется три градации: PC66 (поначалу ее так не называли, поскольку другой и не было), PC100 и PC133 для максимальных частот 66,6, 100 и 133 МГц соответственно. Их ключевые параметры приведены в табл. 7.4. В обозначении быстродействия микросхем SDRAM обычно фигурирует TAC; период частоты синхронизации, естественно, не может быть меньше этой задержки. Микросхемы со спецификацией -10 могут устойчиво работать в модулях лишь на частоте 66 МГц. Микросхемы -8 могут работать на частоте 100 МГц, но, в зависимости от модификации, с разной латентностью. Так, например, для памяти Micron микросхемы с маркировкой -8А…-8С могут работать на частоте 100 МГц с CL = 3, a -8D или -8Е — с CL = 2.
Таблица 7.4. Ключевые параметры временной диаграммы SDRAM
Спецификация | CL | TRCD | TRP | TRC | Примечание |
---|---|---|---|---|---|
PC66 | 3 | 2 | 3 | 8 | Медленный вариант |
2 | 2 | 2 | 7 | Самый быстрый вариант | |
PC100 | 3 | 3 | 3 | 8 | Медленный вариант |
3 | 2 | 2 | 7 | Средний вариант | |
2 | 2 | 2 | 7 | Самый быстрый вариант | |
PC133 | 3 | 3 | 3 | 9 | Медленный вариант |
3 | 2 | 2 | 8 | Средний вариант | |
2 | 3 | 2 | 8 | Средний вариант | |
2 | 2 | 2 | 8 | Самый быстрый вариант |
Естественно, память может работать и на частотах ниже максимальной. Для микросхем SDRAM, применяемых, например, в графических адаптерах, существуют и иные спецификации быстродействия.
Синхронный интерфейс позволяет довольно эффективно использовать шину и обеспечить на частоте 100 МГц пиковую производительность 100 Мбит/с на 1 вывод шины данных. SDRAM используют в составе модулей DIMM с 8-байтной разрядностью, что дает производительность 800 Мбайт/с. При частоте шины 133 МГц пиковая производительность уже достигла 1064 Мбайт/с. Однако эта теоретическая производительность не учитывает накладные расходы на регенерацию и подразумевает, что требуемые страницы уже открыты. Из-за указанных выше ограничений на реальном произвольном потоке запросов производительность, конечно же, будет ниже. Потенциальные возможности почти одновременного обслуживания множества запросов, предоставляемые микросхемами SDRAM, будут реализованы лишь при достаточно «умном» контроллере памяти. От его предусмотрительности эффективность памяти зависит, пожалуй, больше, чем у простых модулей FPM и EDO DRAM.
Память DDR SDRAM представляет собой дальнейшее развитие SDRAM. Как и следует из названия (Dual Data Rate — удвоенная скорость данных), у микросхем DDR SDRAM данные внутри пакета передаются с удвоенной скоростью — они переключаются по обоим фронтам синхроимпульсов (рис. 7.7). На частоте 100 МГц DDR SDRAM имеет пиковую производительность 200 Мбит/с на вывод, что в составе 8-байтных модулей DIMM дает производительность 1600 Мбайт/с. На высоких тактовых частотах (100 МГц) двойная синхронизация предъявляет очень высокие требования к точности временных диаграмм. Для повышения точности синхронизации предпринят ряд мер.
♦ Сигнал синхронизации микросхемы подается в дифференциальной форме по двум линиям
CLK
и CLK#
(Differential clock inputs). Это позволяет снизить влияние смещения уровней на точность определения момента синхронизации — дифференциальный приемник срабатывает в момент равенства уровней напряжения.
♦ Для синхронизации данных в интерфейс введен новый двунаправленный стробирующий сигнал
DQS
. Стробы генерируются источником данных: при операциях чтения DQS
генерируется микросхемой памяти, при записи — контроллером памяти (чипсетом). При чтении фронты и спады этого сигнала точно центруются в моменты смены данных, приемник должен стробировать данные с небольшой задержкой относительно переключений DQS
. При записи фронты и спады центруются точно посередине окна действительности данных и масок DQM
.
♦ Для синхронизации
DQS
с системной тактовой частотой (CLK
) микросхемы имеют встроенные схемы DLL (Delay Locked Loop) для автоподстройки задержки сигнала DQS
относительно CLK
. Эта схема работает наподобие фазовой автоподстройки и способна выполнять синхронизацию (обеспечивать совпадение фронтов DQS
и CLK
) лишь в некотором ограниченном диапазоне частот синхронизации.
Рис. 7.7. Временны́е диаграммы пакетных циклов DDR SDRAM: a — чтение, CL = 2, длина пакета 4; б — запись, длина пакета 4, данные D1 не записываются
Есть микросхемы DDR SDRAM с возможностью отключения схем DLL; для этого они имеют дополнительный расширенный регистр режима. Отключение DLL необходимо при снижении тактовой частоты (в целях энергосбережения). При отключенной схеме DLL стробы
DQS
не привязаны к синхросигналу CLK
, и у разных микросхем, работающих в одной системе, они будут иметь разные частоты.
В отличие от обычных микросхем SDRAM, у которых данные для записи передаются одновременно с командой, в DDR SDRAM данные для записи (и маски
DQM)
подаются с задержкой на один такт (write latency). Значение CAS Latency может быть и дробным (CL = 2, 2,5, 3).
В перспективе ожидается появление микросхемы DDR-II SDRAM, в которой обмен будет на четырехкратной частоте синхронизации.
Перед «штатным» использованием микросхем SDRAM их требуется инициализировать. После подачи питания и установления синхросигнала должен быть выполнен предварительный заряд всех банков, после чего запрограммирован регистр режима. Параметр CL (CAS Latency) выбирают, исходя из спецификации микросхем и тактовой частоты так, чтобы задержка, обусловленная CL, была бы минимальной, но не меньше TCAC. В DDR SDRAM возможны и дробные значения CL, так что настройка может быть более тонкой. В DDR SDRAM из-за необходимости настройки DLL программирование сложнее.
По причине существенного отличия интерфейса от традиционной асинхронной памяти микросхемы SDRAM не могут быть установлены в модули SIMM; они применяются в DIMM или устанавливаются прямо на системную (или графическую) плату. Интерфейс DDR SDRAM сильно отличается и от обычных микросхем SDRAM. Возможность использования этих типов памяти определяется чипсетом системной платы. Память SDRAM в конце 90-х годов стала самой распространенной, поддержка DDR SDRAM появилась лишь сравнительно недавно.
Память RDRAM (Rambus DRAM) имеет синхронный интерфейс, существенным образом отличающийся от вышеописанного. Запоминающее ядро этой памяти построено на все тех же КМОП-ячейках динамической памяти, но пути повышения производительности интерфейса совершенно иные. Подсистема памяти (ОЗУ) RDRAM состоит из контроллера памяти, канала и собственно микросхем памяти. По сравнению с DDR SDRAM, при той же производительности RDRAM имеет более компактный интерфейс и большую масштабируемость. Разрядность ОЗУ RDRAM (16 байт) не зависит от числа установленных микросхем, а число банков, доступных контроллеру, и объем памяти суммируются по всем микросхемам канала. При этом в канале могут присутствовать микросхемы разной емкости в любых сочетаниях.
Запоминающее ядро микросхем имеет многобанковую организацию — 64-мегабитные микросхемы имеют 8 банков, 256-мегабитные — 32 банка. Каждый банк имеет собственные усилители считывания, благодаря чему в микросхеме может быть активировано несколько банков. Для сокращения числа усилителей применяют и их разделение (совместное использование) парой смежных байт, что накладывает ограничения на их совместную активацию (до активации банка его смежник должен быть заряжен). Разрядность ядра 16 байт — 128 или 144 (с контрольными разрядами) бит. Ядро работает на 1/8 частоты канала, взаимодействие с ядром осуществляется по внутренним сигналам
RAS
и CAS
. В современных RDRAM применяются ячейки памяти с временем доступа 40–53 нс.
Канал RDRAM (Rambus Channel) представляет собой последовательно-параллельную шину. Такая организация позволяет ограничить количество линий интерфейса, что, в свою очередь, позволяет упорядочить разводку проводников ради повышения частоты передачи сигналов. Небольшое количество сигналов дает возможность выровнять задержки распространения сигналов по разным линиям и применить сверхбыстродействующие интерфейсные схемы. Тактовая частота канала — до 400 МГц, стробирование информации осуществляется по обоим фронтам синхросигнала. Таким образом, пропускная способность одной линии составляет 800 Мбит/с. Канал состоит из 30 основных линий с интерфейсом RSL (Rambus System Logic) и 4 вспомогательных линий КМОП, используемых для инициализации микросхем. Структура канала изображена на рис. 7.8. На канале может быть установлено до 32 микросхем, все микросхемы соединяются параллельно. Для того чтобы контроллер мог адресоваться к определенной микросхеме, каждой из них назначается уникальный адрес
DEVID
. Нумерация микросхем (Device Enumeration) осуществляется в процессе инициализации, который выполняется с использованием вспомогательного последовательного КМОП-интерфейса. Этот интерфейс имеет линии синхронизации SCK
, команд CMD
, данных SIO
.
Рис. 7.8. Память Direct RDRAM
Синхросигнал вводится в канал с «дальнего конца» и распространяется в сторону контроллера по линии
СТМ
(Clock To Master). По этому сигналу микросхемы памяти стробируют данные, посылаемые к контроллеру (при чтении). Дойдя до контроллера, синхросигнал выходит на линию CFM
(Clock From Master) и идет по каналу до терминатора, установленного на конце. По этой линии синхронизируется информация, посылаемая от контроллера к микросхемам памяти. Микросхемы привязывают данные чтения к синхросигналу с помощью встроенных схем DLL (Delay Locked Loop) для автоподстройки задержки сигнала DQS
относительно CLK
.
Физический уровень интерфейса учитывает волновой характер процессов распространения сигналов в канале. Интерфейс RSL имеет малый размах сигнала: уровню логический 0 соответствует потенциал терминаторов VTERM = 1,8 В, лог. 1 — потенциал 1,0 В. Передатчики имеют выход типа «открытый сток N-МОП» и активны при передаче логической единицы. Передатчики управляют значением генерируемого тока с тем, чтобы обеспечить требуемый уровень сигнала (падение напряжения на сопротивлении терминатора). Уровень переключения приемника VREF = 1,4 В задается делителем напряжения VTERM. Сигнал синхронизации передается в дифференциальной форме по линиям
СТМ
, CTMN
к контроллеру и по линиям CFM
, CFMN
от него. Дифференциальная форма снижает погрешность стробирования, вызванную смещением уровней сигналов.
Канал разделен на три независимые шины: 3-битная шина строк
ROW[2:0]
, 5-битная шина колонок COL[4:0]
и двухбайтная (2×9 бит) шина данных DQA[8:0]
и DQB[8:0]
. Дополнительный бит байта данных (имеется не у всех микросхем RDRAM) может использоваться для контроля достоверности. По каждой шине информация передается пакетами, занимающими 4 такта (8 интервалов) синхронизации (10 нс). Пакет содержит 8 элементов; пакет строк имеет емкость 24 бит, колонок — 40 бит и данных — 16 байт по 8 или 9 бит.
Высокая производительность шины управления (строк и колонок) позволяет отказаться от пакетных (в терминологии BEDO и SDRAM) передач и упростить протокол шины. Память может одновременно обслуживать до четырех транзакций на полной скорости передачи данных.
Транзакции чтения приведены на рис. 7.9, по виду они аналогичны транзакциям SDRAM с тем лишь отличием, что за время одного такта (SDRAM) передается пакет. Пакет
ROW
для второй транзакции пропущен, поскольку страницу оставили открытой. Транзакция чтения со стороны контроллера представляет собой петлю: он посылает пакеты ROWA
и COLC
, которые за некоторое время достигают целевой микросхемы и ею обрабатываются за время TCAC. Далее микросхема отвечает пакетом данных, которому для достижения контроллера также требуется некоторое время. Пакетам для путешествий к дальним микросхемам и от них требуется больше времени, чем для путешествий к ближним, и эта разница оказывается большей, чем длительность периода синхронизации. Для того чтобы контроллер получал ответ на транзакцию чтения от любой микросхемы через одно и то же число тактов, у микросхем памяти устанавливают разную задержку данных относительно пакетов COLC
. Группы соседних микросхем, у которых программируется одинаковая задержка, называют доменами синхронизации. В канале может быть несколько доменов синхронизации.
Рис. 7.9. Транзакции чтения RDRAM
Транзакции записи (рис. 7.10) являются однонаправленными и для них проблем синхронизации не возникает. В отличие от стандартных микросхем DRAM и SDRAM, где данные для записи передаются одновременно с адресом колонки, в RDRAM данные задерживают относительно пакета
COLC
на TCWD (несколько тактов). Эта задержка соответствует задержке между пакетами COLC
и данными при чтении (на стороне контроллера). Задержка записи позволяет сократить вынужденные простои шины данных при переключении с записи на чтение (в SDRAM они равны CAS Latency и длятся 2–3 такта по 10 нс). Контроллер может посылать данные для записи уже в такте, следующим за последними данными предыдущей транзакции чтения. Однако если за записью следует чтение, то на шине данных будет вынужденная пауза в 1–5 тактов в зависимости от длины канала. За это время последние данные записи дойдут от контроллера до самой дальней микросхемы памяти.
Рис. 7.10. Транзакции записи RDRAM
В микросхемах RDRAM применяется механизм отложенной, или буферированной, записи. Данные для записи (принятый пакет
D
) сначала помещаются в буфер, из которого несколько позже они выгружаются в усилители считывания-записи (sens amp) по явной команде выгрузки (retire) или автоматически. Буфер записи хранит сами данные, а также номер банка и адрес столбца (но не строки). Буферизация записи позволяет контроллеру посылать команду записи на TRTR раньше, чем этого требует параметр TRCD, что повышает коэффициент использования шины.
Конвейерное выполнение операций RDRAM обеспечивается многобанковой организацией с отдельными усилителями считывания. Пакеты команд по линиям ROW и COL могут идти сплошным потоком, при этом на шине может присутствовать до четырех транзакций. При произвольных обращениях увеличению производительности способствует большое количество банков, практически недостижимое в памяти SDRAM.
Регенерация осуществляется по команде, адресуемой к определенному банку одной или всех микросхем; за период регенерации эта команда должна выдаваться для всех банков.
Память RDRAM отличается высоким энергопотреблением. Средства управления энергопотреблением отключают питание неиспользуемых узлов, однако за 100-кратное снижение мощности в самом экономичном режиме приходится расплачиваться 250-кратным увеличением времени доступа. Микросхемы RDRAM требуют периодической (раз в 100 мс) подстройки выходного тока и термокалибровки; для этих целей имеются специальные команды. Во время подстройки тока микросхемы способны сообщать о своем перегреве.
Вспомогательная шина с сигналами
SCK
, CMD
и SIO
служит для обмена данными с управляющими регистрами и вывода микросхем из состояний пониженного потребления (PDN и NAP). Информация по этой шине тоже передается пакетами.
Управляющие регистры хранят информацию об адресе микросхемы, управляют работой микросхемы в различных режимах, содержат счетчики регенерации для банков и строк, параметры настройки временных циклов. В них же можно прочитать информацию о конкретной микросхеме — организация, версия протокола и т. п. В составе управляющих есть и тестовые регистры.
Инициализация памяти включает определение наличия микросхем на шине, назначение им идентификаторов и программирование их параметров. После сброса микросхемы не имеют собственных адресов, а линии
SIO0
и SIO1
у них соединены. В таком состоянии контроллер по шине CMD
посылает широковещательную команду на разъединение линий, после чего для него по линии SIO
оказывается доступной только ближайшая микросхема канала. Ей назначается адрес (SDEVID
) и дается команда на соединение линий, в результате к контроллеру подключается вторая микросхема. Она будет пронумерована очередной командой, заставляющей все доступные ненумерованные микросхемы (то есть именно ее) принять указанный номер. Далее замыкаются ее линии SIO
, и этот процесс продолжается до самой дальней микросхемы.
После завершения этого «переучета» включается нормальная синхронизация, и дается время для установления режима схем DLL. После двукратной активации и предварительного заряда каждого банка каждой микросхемы память готова к определению доменов синхронизации и назначению каждой микросхеме соответствующих параметров задержек. Также им должны быть присвоены идентификаторы в канале (
DEVID
), которые могут и не совпадать со значениями SDEVID
(идентификатором на последовательной шине).
Обязательным «фирменным» компонентом ОЗУ на RDRAM является контроллер памяти. В его задачу входит обслуживание микросхем памяти, установленных в канале, по запросам, поступающим со стороны интерфейса системной шины компьютера. Часть контроллера, обращенная к каналу, инвариантна к архитектуре компьютера. Именно она «знает» протокол RDRAM и является продуктом фирмы Rambus. Контроллер RDRAM встраивается в чипсеты для процессоров P6 (например, 1820, 1840), Pentium 4 (1850 с 32-разрядным каналом, то есть уже под пары модулей RIMM) и других архитектурных линий.
В соответствии со спецификацией RDRAM в одном канале может быть до трех слотов под RIMM, и их интерфейсные линии соединяются змейкой. В слоты могут устанавливаться RIMM различной емкости (сейчас они выпускаются на 64, 96, 128 и 256 Мбайт). Однако пока что фирме Intel не удалось достичь устойчивой работы канала с тремя модулями и пришлось ограничиться двумя. Теперь в памяти появился новый элемент-пустышка Continuity module. Это как бы модуль RIMM, но без микросхем памяти, и нужен он для того, чтобы замыкать цепь канала Rambus. Такая «заглушка» должна устанавливаться во все слоты канала, не занятые под модули RIMM. Если используются не все слоты, то память выгоднее ставить ближе к контроллеру — она будет работать быстрее (см. выше).
Идея архитектуры памяти с виртуальными каналами (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 | 5 | 60, 70, 80 нс |
SIMM-72 | 32 (36) | 1-32 | FPM, EDO, BEDO | 5 | 50, 60, 70 нс |
DIMM-168-I | 64 (72,80) | 8-256 | FPM, EDO | 5 | 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 | 32 | 4 | SDRAM | 3,3 | 166 МГц |
100-Pin DIMM | 32 | 4-128 | SDRAM | 3,3 | 100,125 МГц |
100-Pin DIMM | 32 | 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 | Число записанных байт конфигурационной памяти |
1 | Разрядность адреса микросхемы Serial PD (определяет объем конфигурационной памяти: 1–2 байта, 2–4 байта, 0Dh — 8 Кбайт) |
2 | Тип памяти: 00 — резерв, 01 — Std FPM, 02 — EDO, 03 — Pipelined Nibble (BEDO), 04 —SDRAM |
3 | Количество бит адреса строк в банке 1 (биты 0–3) и банке 2 (биты 4–7) по модулю 16 (0 — не определено, 1–1 или 16,2–2 или 17 и т. д.) Если банки одинаковые, то биты 4–7 нулевые |
4 | Количество бит адреса столбцов (аналогично предыдущему) |
5 | Количество банков (рядов микросхем) |
6-7 | Разрядность данных с учетом контрольных бит (если менее 255, байт 7–0) |
8 | Уровень напряжения интерфейса: 0 — 7TL/5B, 01 —LVTTL (не допускает 5 В), 02 — HSTL 1.5, 03 — SSTL 3.3,04 — SSTL 2.5 |
9 | Для DRAM — RAS Access time (в наносекундах). Для SDRAM — минимальное время цикла (Tclk) для максимального значения CL (десятые доли не в BCD-коде) |
10 | Для DRAM — CAS Access time (в наносекундах). Для SDRAM — время доступа относительно тактового импульса (Тас) аналогично предыдущему |
11 | Схема контроля: 00 — Non-Parity, 01 — Parity, 02 — ЕСС |
12 | Частота (тип) регенерации: 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 кодируют те же периоды) |
13 | Разрядность микросхем основной памяти, бит. Бит 7 равен 1, если имеется второй банк с удвоенной разрядностью микросхем. Если банк один или оба банка одинаковы, бит 7 равен 0 |
14 | Разрядность микросхем контрольных разрядов, бит (аналогично) |
15-30 | Детальное описание временных и организационных параметров SDRAM |
31 | Объемы банков (рядов микросхем): бит 0–4 Мбайт, бит 1–8 Мбайт, бит 7 — 512 Мбайт, единичное значение устанавливается в одном или нескольких (двух) битах |
32-35 | Время предварительной установки и удержания входных сигналов |
36-61 | Резерв |
62 | Ревизия SPD (две BCD-цифры) |
63 | Контрольная сумма байт 0-62 по модулю 256 |
Информация изготовителя | |
64-71 | Идентификатор производителя по JEDEC |
72 | Код страны производителя |
73-90 | Код изделия (ASCII) |
91-92 | Код модификации |
93-94 | Дата изготовления (wwyy — неделя, год) |
95-98 | Серийный номер |
99-127 | Специальные данные изготовителя |
126 | Спецификация частоты (для Intel) DIMM SDRAM. Частота 66 МГц задается кодом 66h, более высокие значения — числом МГц (100 = 64h) |
127 | Детализация для SDRAM 100 МГц (для Intel) |
Байты 128–255 конфигурационной памяти свободны. Эту область в принципе можно занимать для пометки компьютера (точнее, модуля памяти) с целью привязки программного обеспечения к конкретному экземпляру PC. Однако при неосторожном использовании модулей с микросхемами без защиты от модификации случайная запись в ячейки 0-127 может привести к недоступности модуля памяти. «Оживить» его можно будет только записью корректных данных.
Модули SIMM (Single In-Line Memory Module) и SIPP (Single In-Line Pin Package) представляют собой небольшие печатные платы с односторонним краевым разъемом. Контактами модулей SIMM являются позолоченные (или покрытые специальным сплавом) площадки, расположенные на обеих поверхностях вдоль одной из сторон. Слово Single (одиночный) в названии подразумевает, что пары площадок на обеих сторонах эквивалентны (электрически соединяются между собой). У малораспространенных модулей SIPP контакты штырьковые (pin — иголка); эти контакты при необходимости можно припаять к площадкам модулей SIMM (такие контакты когда-то даже продавались в комплекте с модулями SIMM). Модули SIPP оказались непрактичными — их контакты не выдерживают транспортировки и многократной установки.
На модулях смонтированы микросхемы памяти в корпусах SOJ или TSOP, их адресные входы объединены. Количество и тип микросхем определяются требуемой разрядностью и объемом хранимых данных. Архитектура модулей обеспечивает возможность побайтного обращения, что существенно для записи (byte-write); выбор байт производится отдельным входом
CAS#
для каждого байта. Распространенные модули имеют напряжение питания 5 В, их параметры приведены в табл. 7.7.
Таблица 7.7. Организация модулей SIMM
Емкость, Мбайт | С паритетом | Без паритета | ||
---|---|---|---|---|
30-pin | 72-pin | 30-pin | 72-pin | |
256 Кбайт | 256 К×9 | - | 256 К×8 | - |
1 | 1 М×9 | 256 К×36 | 1 М×8 | 256 К×32 |
2 | - | 512 К×36 | - | 512 К×32 |
4 | 4 М×9 | 1 М×36 | 4 М×8 | 1 М×32 |
8 | - | 2 М×36 | - | 2 М×32 |
16 | - | 4 М×36 | - | 4 М×32 |
32 | - | 8 М×36 | - | 8 М×32 |
64 | - | 16 М×36 | - | 16 М×32 |
По логической организации различают односторонние и двусторонние модули. У «односторонних» модулей микросхемы смонтированы на одной (передней) поверхности, у «двусторонних» двойной комплект — два банка — микросхем смонтирован на обеих сторонах платы. Эти названия не совсем точны, но имеют прочные позиции и иностранное происхождение (single side и double side). Часто встречаются модули, у которых на второй стороне смонтировано несколько микросхем, дополняющих набор первой стороны до требуемой разрядности (чаще там размещаются контрольные биты). Такие модули являются логически односторонними. У «истинно двусторонних» на обеих сторонах обычно симметрично расположены одинаковые комплекты микросхем.
«Короткие», или SIMM 30-pin, модули SIMM (старый тип) имеют 30 печатных выводов (рис. 7.11) и однобайтную организацию. Разводка выводов у модулей фирмы IBM (для компьютеров IBM PS/2) отличается от общепринятых стандартных. Различия делают несовместимыми модули с объемом более 1 Мбайт: модули IBM могут быть двусторонними (2 Мбайт), стандартные — только односторонними. Малораспространенные модули SIPP имеют 30 штырьковых выводов и совпадают по разводке со стандартными модулями SIMM 30-pin (SIMM-30). Применение однобайтных модулей особенно в 32-битных системных платах сильно сковывает свободу выбора объема памяти. Назначение выводов SIMM-30 и SIPP приведено в табл. 7.8.
Рис. 7.11. Модули SIMM-30
Таблица 7.8. Назначение выводов модулей SIPP и SIMM 30-pin
Контакт | STD | IBM | Контакт | STD¹ | IBM² |
---|---|---|---|---|---|
1 | +5 В | +5 В | 16 | DQ4 | DQ4 |
2 | CAS# | CAS# | 17 | МА8 | MAS |
3 | DQ0 | DQ0 | 18 | МА9 | MA9 |
4 | MA0 | MA0 | 19 | MA0 | RAS1# |
5 | MA1 | MA1 | 20 | DQ5 | DQ5 |
6 | DQ1 | DQ1 | 21 | WE# | WE# |
7 | MA2 | MA2 | 22 | GND | GND |
8 | MA3 | MA3 | 23 | DQ6 | DQ6 |
9 | GND | GND | 24 | N.C. | PD(GND) |
10 | DQ2 | DQ2 | 25 | DQ7 | DQ7 |
11 | MA4 | MA4 | 26 | PB-Out | PD(1M=GND) |
12 | MA5 | MA5 | 27 | RAS# | RAS0# |
13 | DQ3 | DQ3 | 28 | CAS-Parity# | N.C. |
14 | MA6 | MA6 | 29 | PB-In | PB-(In/Out) |
15 | MA7 | MA7 | 30 | +5B | +5B |
¹ STD — стандартный SIMM (SIPP).
² IBM — SIMM фирмы IBM.
«Длинные», или SIMM 72-pin (SIMM-72), модули SIMM имеют 72 печатных вывода (рис. 7.12, табл. 7.9) и 4-байтную организацию с возможностью независимого побайтного обращения по сигналам
CASx#
. По сигналам выборки строк биты данных делятся на два слова, DQ[0:15]
выбираются сигналом RAS0#
для первого банка и RAS1#
для второго, DQ[16:31]
выбираются соответственно сигналом RAS2#
и RAS3#
. В односторонних модулях (1, 4, 16, 64 Мбайт — 1 банк) используется только одна пара сигналов выборки RAS0#
и RAS2#, в двусторонних (2, 8, 32 Мбайт — 2 банка) — две пары сигналов RAS#
. Заметим, что использование всеми модулями обеих дар линий RAS# поддерживается не всеми системными платами. Контрольные биты модулей с паритетом по выборке приписываются к соответствующим байтам, в ЕСС-модулях возможны различные варианты. Модули без паритета имеют разрядность 32 бит, с паритетом — 36 бит, модули ЕСС — 36 или 40 бит. Модули ЕСС-36 и ЕСС-40 (ECC-optimised) не допускают побайтного обращения и существенно отличаются от 32-битных и паритетных модулей.
Рис. 7.12. Модули SIMM-72
Таблица 7.9. Назначение выводов модулей SIMM 72-pin
Контакт | Назначение для модулей x32, Parity/ECC¹ | Контакт | Назначение для модулей x32, Parity/ECC¹ |
---|---|---|---|
1 | GND | 37 | PQ1/DQ19 |
2 | DQ0/DQ0 | 38 | PQ3/DQ20 |
3 | DQ16/DQ1 | 39 | GND |
4 | DQ1/DQ2 | 40 | CAS0# |
5 | DQ17/DQ3 | 41² | CAS2#/MA10 |
6 | DQ2/DQ4 | 42² | CAS3#/MA11 |
7 | DQ18/DQ5 | 43 | CAS1# |
8 | DQ3/DQ6 | 44 | RAS0# |
9 | DQ19/DQ7 | 45 | RAS1# |
10 | +5В | 46² | (OE1#)/DQ21 |
11² | (CAS-Parity#)/PD5 | 47 | WE# |
12 | MA0 | 48² | Reserved/ECC |
13 | MA1 | 49 | DQ8/DQ22 |
14 | MA2 | 50 | DQ24/DQ23 |
15 | MA3 | 51 | DQ9/DQ24 |
16 | MA4 | 52 | DQ25/DQ25 |
17 | MA5 | 53 | DQ10/DQ26 |
18 | MA6 | 54 | DQ26/DQ27 |
19² | МА10/ОЕ# | 55 | DQ11/DQ28 |
20 | DQ4/DQ8 | 56 | DQ27/DQ29 |
21 | DQ20/DQ9 | 57 | DQ12/DQ30 |
22 | DQ5/DQ10 | 58 | DQ28/DQ31 |
23 | DQ21/DQ11 | 59 | +5B |
24 | DQ6/DQ12 | 60 | DQ29/DQ32 |
25 | DQ22/DQ13 | 61 | DQ13/DQ33 |
26 | DQ7/DQ14 | 62 | DQ30/DQ34 |
27 | DQ23/DQ15 | 63 | DQ14/DQ35 |
28 | MA7 | 64² | DQ31/DQ36 |
29² | MA11(OE0#)/DQ16 | 65² | DQ15/DQ37 |
30 | +5В | 66² | (OE2#)/DQ38 |
31 | МА8 | 67 | PD1 |
32 | МА9 | 68 | PD2 |
33² | RAS3#/NC | 69 | PD3 |
34² | RAS2#/NC | 70 | PD4 |
35 | PQ2/DQ17 | 71² | (OE3#)/DQ39 |
36 | PQ0/DQ18 | 72 | GND |
¹ Модули ECC различных производителей могут отличаться по назначению выводов. Некоторые модули по выводам совпадают с паритетными, но могут различаться по связям контрольных бит с сигналами RASx# и CASx#.
² Могут существенно отличаться по назначению у модулей ЕСС. Сигналы DQ[36:39] имеются только в модулях ЕСС-40. В скобках приведены назначения выводов модулей фирмы IBM.
Сигналы модулей SIMM (табл. 7.10) в основном совпадают с сигналами микросхем динамической памяти. Для идентификации модулей предназначены сигналы
PD[1:5]
. По заземленным (на модуле) сигналам системная плата может распознать быстродействие (тип) и объем установленной памяти. Стандарт JEDEC для SIMM-72 определяет следующее назначение выводов (0 — заземлен, 1 — свободен):
♦ сигналы
PD[1:2]
(контакты 67, 68) — объем памяти модуля, Мбайт: 00=4, 11=8, 01=16, 10=32;
♦ сигналы
PD[3:4]
(контакты 69, 70) — время доступа, нс: 00=100, 10=80, 01=70, 11=60;
♦ сигнал
PD5
может являться признаком ECC-модуля (заземленный контакт).
Таблица 7.10. Сигналы модулей SIMM
Сигнал | Назначение |
---|---|
MAi | Multiplexed Address — мультиплексированные линии адреса. Во время спада сигнала RAS# на этих линиях присутствует адрес строки, во время спада CAS# — адрес столбца. Модули SIMM объемом 16 Мбайт могут быть с симметричной (square — квадратной) организацией — 11 бит адреса строк и 11 бит адреса колонок или асимметричной — 12×10 бит соответственно |
DQx | Data Bit — биты данных (объединенные входы и выходы) |
PQx | Parity Bit — бит паритета x-го байта |
PB-In, PB-Out | Parity Bit Input, Output — вход и выход микросхемы бита паритета (для SIPP PB-Out и SIMM-30). Для хранения паритета в этих модулях всегда используются микросхемы с однобитной организацией, у которых вход и выход разделен. Обычно эти контакты на модуле соединены |
WE# | Write Enable — разрешение записи. При низком уровне сигнала во время спада CAS# выполняется запись в ячейку. Переход WE# в низкий уровень и обратно при высоком уровне CAS# переводит выходной буфер EDO DRAM в высокоимпедансное состояние |
RASx# | Стробы выборки строк. Сигналы RAS0# и RAS1# используются соответственно для бит [0:15] и [16:31] первого банка, RAS1# и RAS3# — для бит [0:15] и [16:31] второго банка |
CASx# | Стробы выборки столбцов, отдельные для каждого байта: CAS0# — DQ[0:7], PQ0; CAS1# — DQ[8:15], PQ1; CAS2# — DQ[16:23], PQ2; CAS3# — DQ[24:31], PQ3. В ECC-модулях возможно обращение только ко всему модулю по сигналам CAS0# и CAS1# |
CAS-Parity# | Строб выборки столбцов для контрольных разрядов (редко используемый вариант) |
OEx# | Output Enable — разрешение открытия выходного буфера. Эти выводы на системной плате обычно соединяются с логическим нулем, а для управления буфером используются сигналы RAS#, CAS# и WE#. На некоторых модулях SIMM могут отсутствовать |
PD[1:5] | Presence Detect — индикаторы присутствия (обычно не используются) |
N.C. | No Connection — свободный вывод |
Модуль памяти DIMM-168 (Dual-In-line-Memory Module) имеет 168 независимых печатных выводов, расположенных с обеих сторон (контакты 1-84 — с фронтальной стороны, 85-168 — с тыльной). Разрядность шины данных — 8 байт, организация рассчитана на применение в компьютерах с четырех- и восьмибайтной шиной данных. Конструкция и интерфейс модулей соответствует стандарту JEDEC 21-C. Модули устанавливаются на плату вертикально в специальные разъемы (слоты) с ключевыми перегородками, задающими допустимое питающее напряжение и тип (поколение) применимых модулей. Модули выпускаются для напряжения питания 3,3 и 5 В. Вид модулей и сочетания ключей представлены на рис. 7.13. Толщина модулей с микросхемами в корпусах SOJ не превышает 9 мм, в корпусах TSOP — 4 мм.
Рис. 7.13. Модули DIMM: а — вид модуля DIMM-168, б — ключи для модулей первого поколения, в — ключи для модулей второго поколения, г — вид модуля DIMM-184
По внутренней архитектуре модули близки к SIMM-72, но имеют удвоенную разрядность и, соответственно, удвоенное количество линий
CAS#
. Также удвоено число сигналов разрешения записи и разрешения выходных буферов, что позволяет организовывать модули в виде двух 4-байтных банков с возможностью их чередования (Bank Interleaving). Модули могут иметь разрядность 64, 72 или 80 бит, дополнительные разряды 72-битных модулей организуются либо по схеме контроля паритета (приписываясь к соответствующим байтам), либо по схеме ЕСС; 80-битные — только по схеме ЕСС.
Модули DIMM первого поколения (по IBM) были ориентированы на асинхронную память (FPM, EDO и BEDO); по архитектуре они напоминают SIMM-72. В модулях применяется параллельная идентификация — параметры быстродействия и объема передаются через 8 буферизованных выводов идентификации (Presence Detect pins). Модули первого поколения не получили широкого распространения, поскольку не принесли принципиальных новшеств в подсистему памяти.
Модули второго поколения отличаются тем, что позволяют использовать микросхемы как асинхронной (FPM и EDO), так и синхронной динамической памяти (SDRAM). Внешне они похожи на модули первого поколения, но отличаются ключом, не допускающим ошибочную установку. Унифицированное назначение выводов позволяет в одни и те же слоты устанавливать как модули DRAM; так и SDRAM. Нумерация бит данных единая для всех типов организации — контрольные биты CBx имеют отдельную нумерацию, их наличие зависит от организации (паритет, ЕСС-72, ЕСС-80).
Модули с любой организацией используют побайтное распределение информационных бит по сигналам
CASx#
(табл. 7.11), распределение контрольных бит представлено в табл. 7.12. Младший бит адреса приходит по одной линии на все микросхемы модуля. Сигналы управления модулей SDRAM значительно отличаются от модулей DRAM. Исполняемая операция SDRAM определяется сигналами RAS#
, CAS#
и WE#
, синхронизируемыми по фронту соответствующих сигналов CKx
. Назначение сигналов модулей приведено в табл. 7.13, назначение выводов модулей DRAM — в табл. 7.14, SDRAM — в табл. 7.15.
Таблица 7.11. Организация информационных и управляющих сигналов для модулей DIMM-168 второго поколения
Линии CAS# (DQMB для SDRAM) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Биты данных | 0-7 | 8-15 | 16-23 | 24-31 | 32-39 | 40-47 | 48-55 | 56-63 |
Сигналы для банка 0 DRAM | OE0#, WE0#, RAS0# | ОЕ2#, WE2#, RAS2# | ||||||
Сигналы для банка 1 DRAM | OE0#, WE0#, RAS1# | ОЕ2#, WE2#, RAS3# | ||||||
Сигналы для банка 0 SDRAM | CKE0 | CKE0 | CKE0 | CKE0 | CKE0 | CKE0 | CKE0 | CKE0 |
S0# | S0# | S2# | S2# | S0# | S0# | S2# | S2# | |
CK0 | CK1 | CK2 | CK3 | CK0 | CK1 | CK2 | CK3 | |
Сигналы для банка 1 SDRAM | CKE1 | CKE1 | CKE1 | CKE1 | CKE1 | CKE1 | CKE1 | CKE1 |
S1# | S1# | S3# | S3# | S1# | S1# | S3# | S3# | |
CK0 | CK1 | CK2 | CK3 | CK0 | CK1 | CK2 | CK3 |
Таблица 7.12. Связь контрольных бит с управляющими сигналами для модулей DIMM-168 второго поколения
Организация (разрядность микросхем DRAM) | Линии CAS# (DQMB для SDRAM) | |||||||
---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
Контрольные биты | ||||||||
72-бит Parity | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
72-бит ЕСС, (x4 x16/x4) | - | 0-3 | - | - | - | 4-7 | - | - |
72-бит ЕСС, (x8) | - | 0-7 | - | - | - | - | - | - |
72-бит ЕСС, (x18) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
80-бит ЕСС, (x4) | - | 0-3 | 8-11 | - | - | 4-7 | 12-15 | 1 |
80-бит ЕСС, (x8, х16) | - | 0-7 | - | - | - | 8-15 | - | - |
Таблица 7.13. Сигналы модулей DIMM-168 второго поколения и DIMM-184
Сигнал | Назначение |
---|---|
Общие сигналы для FPM, EDO, BEDO и SDRAM | |
RAS[0:3]#, RAS# | Row Address Strobe — стробы выборки строк |
CAS[0:7]# CAS# | Column Address Strobe — стробы выборки столбцов |
WE0#, WE2# | Read/Write Input — сигналы разрешения записи, раздельные для банков |
OE0#, OE2# | Output Enable — сигналы разрешения выходных буферов, раздельные для банков |
A[0:13] | Address Inputs — мультиплексированная шина адреса |
DQ[0:63] | Data Input/Output — биты данных |
CB[0:15] | Check Bit Data Input/Output — контрольные биты, отсутствуют в 64-битных модулях. В 72-битных модулях отсутствуют CB[8:15] |
SCL | Serial Presence Detect Clock синхронизация интерфейса идентификации I²C |
SDA | Serial Presence Detect Data — данные интерфейса идентификации I²C |
SA[0:2] | Serial Presence Detect Address — адрес модуля в интерфейсе I²C, задается коммутацией выводов гнезд для модулей на уровни логических «0» и «1» |
WP | Write Protect — защита записи в EEPROM |
VCC | Power — питание (+5 или +3,3 В) |
VSS | Ground — общий провод |
NC | No Connect — неиспользуемый (свободный) контакт |
DU | Don't Use — запрещенный к использованию контакт |
Специфические сигналы SDRAM | |
DQMB0-DQMB7 | Data Mash Byte — маски байт (синхронизируются по фронту CK). Высокий уровень во время операции чтения переводит выходные буферы соответствующего байта в высокоимпедансное состояние с задержкой на 2 такта, операция записи блокируется без задержки |
S0#, S1#, S2#, S3# | Select — разрешение (низким уровнем) декодирования команд микросхемами SDRAM соответствующих банков. При высоком уровне новые команды игнорируются, но выполнение предыдущей не прерывается |
CK[0:3] | Clock Inputs — тактовые импульсы системной шины, положительный перепад синхронизируют все входные сигналы (кроме CKE) |
CKE0, CKE1 | Clock Enables — разрешение синхронизации (высокий уровень) для банков микросхем. Низкий уровень переводит в режим пониженного потребления или саморегенерации |
A[0:9], А[11:13] A10/АР | Address Inputs, Address Input 10/Autoprecharge — в цикле команды активации банка А[0:13] определяют адрес строки (по подъему CK). В цикле команды чтения или записи А[0:8] определяют адрес столбца, АР используется для указания (высоким уровнем) на операцию автопредзаряда (autoprecharge) банка А (BA0=0) или В (BA1=1) по окончании текущего пакетного цикла. В цикле команды предзаряда при высоком уровне АР предзаряд осуществляется в обоих банках, при низком — только в банке, определяемом линией BA0 |
BA0, BA1 | SDRAM Bank Address — выбор внутреннего банка микросхемы SDRAM (использует линии, назначенные на адреса А11, A12 модулей DRAM) |
REGE | Register Enable — разрешение синхронной работы регистров управляющих и адресных сигналов. При высоком уровне регистр защелкивает сигналы по фронту CK, а микросхемы памяти зафиксируют эти значения в следующем такте. При низком уровне регистр работает в режиме буфера (допустимо лишь для 66 МГц) |
Дополнительные сигналы модулей DOR SDRAM | |
DQS[0:17] | Двунаправленные стробы данных, формируемые источником |
CK# | Инверсный вход синхронизации (пара к CK) |
VREF | Вход опорного напряжения интерфейса SSTL_2 |
RESET# | Вход асинхронного сброса регистра |
VDDQ | Питание выходных буферов микросхем |
VDD | Питание ядра микросхем |
VDDSPD | Питание микросхемы последовательной идентификации |
VDDID | Вход VDD identification flag |
Таблица 7.14. Назначение выводов DIMM-168 DRAM второго поколения
Контакт | Цепь | Контакт | Цепь | Контакт | Цепь | Контакт | Цепь |
---|---|---|---|---|---|---|---|
1 | VSS | 85 | VSS | 43 | VSS | 127 | VSS |
2 | DQ0 | 86 | DQ32 | 44 | OE2# | 128 | DU |
3 | DQ1 | 87 | DQ33 | 45 | RAS2# | 129 | RAS3# |
4 | DQ2 | 88 | DQ34 | 46 | CAS2# | 130 | CAS6# |
5 | DQ3 | 89 | DQ35 | 47 | CAS3# | 131 | CAS7# |
6 | VCC | 90 | VCC | 48 | WE2# | 132 | DU |
7 | DQ4 | 91 | DQ36 | 49 | VCC | 133 | VCC |
8 | DQ5 | 92 | DQ37 | 50 | CB10 | 134 | CB14 |
9 | DQ6 | 93 | DQ38 | 51 | CB11 | 135 | CB15 |
10 | DQ7 | 94 | DQ39 | 52 | CB2 | 136 | CB6 |
11 | DQ8 | 95 | DQ40 | 53 | CB3 | 137 | CB7 |
12 | VSS | 96 | VSS | 54 | VSS | 138 | VSS |
13 | DQ9 | 97 | DQ41 | 55 | DQ16 | 139 | DQ48 |
14 | DQ10 | 98 | DQ42 | 56 | DQ17 | 140 | DQ49 |
15 | DQ11 | 99 | DQ43 | 57 | DQ18 | 141 | DQ50 |
16 | DQ12 | 100 | DQ44 | 58 | DQ19 | 142 | DQ51 |
17 | DQ13 | 101 | DQ45 | 59 | VCC | 143 | VCC |
18 | VCC | 102 | VCC | 60 | DQ20 | 144 | DQ52 |
19 | DQ14 | 103 | DQ46 | 61 | NC¹ | 145 | NC¹ |
20 | DQ15 | 104 | DQ47 | 62 | DU | 146 | DU |
21 | СВ0 | 105 | CB4 | 63 | NC | 147 | NC |
22 | CB1 | 106 | CB5 | 64 | VSS | 148 | VSS |
23 | VSS | 107 | VSS | 65 | DQ21 | 149 | DQ53 |
24 | CB8 | 108 | CB12 | 66 | DQ22 | 150 | DQ54 |
25 | CB9 | 109 | CB13 | 67 | DQ23 | 151 | DQ55 |
26 | VCC | 110 | VCC | 68 | VSS | 152 | VSS |
27 | WE0# | 111 | DU | 69 | DQ24 | 153 | DQ56 |
28 | CAS0# | 112 | CAS4# | 70 | DQ25 | 154 | DQ57 |
29 | CAS1# | 113 | CAS5# | 71 | DQ26 | 155 | DQ58 |
30 | RAS0# | 114 | RAS1# | 72 | DQ27 | 156 | DQ59 |
31 | OE0# | 115 | DU | 73 | VCC | 157 | VCC |
32 | VSS | 116 | VSS | 74 | DQ28 | 158 | DQ60 |
33 | А0 | 117 | A1 | 75 | DQ29 | 159 | DQ61 |
34 | A2 | 118 | A3 | 76 | DQ30 | 160 | DQ62 |
35 | A4 | 119 | A5 | 77 | DQ31 | 161 | DQ63 |
36 | A6 | 120 | A7 | 78 | VSS | 162 | VSS |
37 | A8 | 121 | A9 | 79 | NC | 163 | NC |
38 | A10 | 122 | A11 | 80 | NC | 164 | NC |
39 | A12 | 123 | A13 | 81 | NC | 165 | SA0 |
40 | VCC | 124 | VCC | 82 | SDA | 166 | SA1 |
41 | VCC | 125 | DU | 83 | SCL | 167 | SA2 |
42 | DU | 126 | DU | 84 | VCC | 168 | VCC |
Таблица 7.15. Назначение выводов DIMM-168 SDRAM
Контакт | Цепь | Контакт | Цепь | Контакт | Цепь | Контакт | Цепь |
---|---|---|---|---|---|---|---|
1 | VSS | 85 | VSS | 43 | VSS | 127 | VSS |
2 | DQ0 | 86 | DQ32 | 44 | DU² | 128 | CKE0 |
3 | DQ1 | 87 | DQ33 | 45 | S2# | 129 | S3# |
4 | DQ2 | 88 | DQ34 | 46 | DQMB2 | 130 | DQMB6 |
5 | DQ3 | 89 | DQ35 | 47 | DQMB3 | 131 | DQMB7 |
6 | VCC | 90 | VCC | 48 | DU² | 132 | A13 |
7 | DQ4 | 91 | DQ36 | 49 | VCC | 133 | VCC |
8 | DQ5 | 92 | DQ37 | 50 | CB10 | 134 | CB14 |
9 | DQ6 | 93 | DQ38 | 51 | CB11 | 135 | CB15 |
10 | DQ7 | 94 | DQ39 | 52 | CB2 | 136 | CB6 |
11 | DQ8 | 95 | DQ40 | 53 | CB3 | 137 | CB7 |
12 | VSS | 96 | VSS | 54 | VSS | 138 | VSS |
13 | DQ9 | 97 | DQ41 | 55 | DQ16 | 139 | DQ48 |
14 | DQ10 | 98 | DQ42 | 56 | DQ17 | 140 | DQ49 |
15 | DQ11 | 99 | DQ43 | 57 | DQ18 | 141 | DQ50 |
16 | DQ12 | 100 | DQ44 | 58 | DQ19 | 142 | DQ51 |
17 | DQ13 | 101 | DQ45 | 59 | VCC | 143 | VCC |
18 | VCC | 102 | VCC | 60 | DQ20 | 144 | DQ52 |
19 | DQ14 | 103 | DQ46 | 61 | NC¹ | 145 | NC¹ |
20 | DQ15 | 104 | DQ47 | 62 | Vref | 146 | Vref |
21 | СВ0 | 105 | CB4 | 63 | CKE1 | 147 | REGE |
22 | CB1 | 106 | CB5 | 64 | VSS | 148 | VSS |
23 | VSS | 107 | VSS | 65 | DQ21 | 149 | DQ53 |
24 | CB8 | 108 | CB12 | 66 | DQ22 | 150 | DQ54 |
25 | CB9 | 109 | CB13 | 67 | DQ23 | 151 | DQ55 |
26 | VCC | 110 | VCC | 68 | VSS | 152 | VSS |
27 | WE# | 111 | CAS# | 69 | DQ24 | 153 | DQ56 |
28 | DQMB0 | 112 | DQMB4 | 70 | DQ25 | 154 | DQ57 |
29 | DQMB1 | 113 | DQMB5 | 71 | DQ26 | 155 | DQ58 |
30 | S0# | 114 | S1# | 72 | DQ27 | 156 | DQ59 |
31 | DU² | 115 | RAS# | 73 | VCC | 157 | VCC |
32 | VSS | 116 | VSS | 74 | DQ28 | 158 | DQ60 |
33 | А0 | 117 | A1 | 75 | DQ29 | 159 | DQ61 |
34 | A2 | 118 | A3 | 76 | DQ30 | 160 | DQ62 |
35 | A4 | 119 | AS | 77 | DQ31 | 161 | DQ63 |
36 | A6 | 120 | A7 | 78 | VSS | 162 | VSS |
37 | AS | 121 | A9 | 79 | CK2 | 163 | CK3 |
38 | A10(AP) | 122 | BA0 | 80 | NC¹ | 164 | NC¹ |
39 | BA1 | 123 | A11 | 81 | WP | 165 | SA0 |
40 | VCC | 124 | VCC | 82 | SDA | 166 | SA1 |
41 | VCC | 125 | CK1 | 83 | SCL | 167 | SA2 |
42 | CK0 | 126 | A12 | 84 | VCC | 168 | VCC |
¹ NC — не подключен
² DU — не использовать!
В модулях SDRAM вместо раздельных сигналов
RAS[0:3]#
для выбора банков (рядов микросхем) используются сигналы S0#
, S1#
, S2#
и S3#
; вместо CAS[0:7]#
для выбора байтов — сигналы DQMB0
-DQMB7
; сигналы WE2#
, OE0#
и ОЕ2#
не используются.
В модулях, начиная со второго поколения, применена последовательная идентификация параметров на двухпроводном интерфейсе (I²C) для чтения атрибутов (идентификации) из специальной конфигурационной памяти (обычно EEPROM 24С02), установленной на модулях.
168-pin Unbuffered DIMM — модули, у которых все цепи не буферизованы (одноименные адресные и управляющие сигналы микросхем соединены параллельно и заводятся прямо с контактов модуля). Эти модули сильнее нагружают шину памяти, но позволяют добиться максимального быстродействия. Они предназначены для системных плат с небольшим (1–4) количеством слотов DIMM или имеющих шину памяти, буферизованную на плате. Модули выполняются на микросхемах DRAM или SDRAM. Высота модулей не превышает 51 мм. Объем 8–512 Мбайт.
168-pin Registered DIMM — модули синхронной памяти (SDRAM), у которых адресные и управляющие сигналы буферизованы регистрами, синхронизируемыми тактовыми импульсами системной шины. По виду этот тип DIMM легко отличим — кроме микросхем памяти и EEPROM на них установлено несколько микросхем регистров-защелок. За счет регистров эти модули меньше нагружают шину памяти, что позволяет набирать больший объем памяти. Применение регистров повышает точность синхронизации и, следовательно, — тактовую частоту. Однако регистр вносит дополнительный такт задержки. Кроме того, на модулях может быть установлена микросхема ФАПЧ (PLL), формирующая тактовые сигналы для микросхем памяти и регистров-защелок. Это делается для разгрузки линий синхронизации, причем в отличие от обычной буферизации сигнала, вводящей задержку между входом и выходом, схема PLL обеспечивает синфазность выходных сигналов (их на выходе PLL несколько, каждый для своей группы микросхем) с опорным сигналом (линия
CK0
). Модули на 64 Мбайт могут быть и без схем PLL — в них линии CK[0:3]
разводятся прямо на свои группы микросхем памяти. Регистры могут быть переведены в режим асинхронных буферов (только на 66 МГц), для чего на вход REGE
нужно подать низкий уровень. Для модулей на 66 МГц возможна замена регистров асинхронными буферами.
Модули DIMM-184 предназначены для микросхем DDR SDRAM. По габаритам они аналогичны модулям DIMM-168, но у них имеются дополнительные вырезы по бокам (см. рис. 7.13, г) и отсутствует левый ключ. Разрядность — 64 или 72 бит (ЕСС), имеются варианты с регистрами в адресных и управляющих цепях (Registered DDR SDRAM) и без них. Напряжение питания — 2,5 В. Идентификация последовательная. Состав сигналов в основном повторяет набор для DIMM SDRAM, назначение выводов приведено табл. 7.16. Модули отличаются большим количеством стробирующих сигналов
DQSx
— по линии на каждые 4 бита данных (DQS8
и DQS17
используются для стробирования контрольных битов). Вход тактовой частоты только один, но дифференциальный — раздачу сигналов по микросхемам памяти и регистрам осуществляет микросхема DLL.
Таблица 7.16. Назначение выводов DIMM-184 DDR SDRAM
Контакт | Цепь | Контакт | Цепь | Контакт | Цепь | Контакт | Цепь |
---|---|---|---|---|---|---|---|
1 | VREF | 47 | DQS8 | 93 | VSS | 139 | VSS |
2 | DQ0 | 48 | АО | 94 | DQ4 | 140 | DQS17 |
3 | VSS | 49 | CB2 | 95 | DQ5 | 141 | A10 |
4 | DQ1 | 50 | VSS | 96 | VDDQ | 142 | CB6 |
5 | DQS0 | 51 | CB3 | 97 | DQS9 | 143 | VDDQ |
6 | DQ2 | 52 | BA1 | 98 | DQ6 | 144 | CB7 |
7 | VDD | 53 | DQ32 | 99 | DQ7 | 145 | VSS |
8 | DQ3 | 54 | VDDQ | 100 | VSS | 146 | DQ36 |
9 | NC | 55 | DQ33 | 101 | NC | 147 | DQ37 |
10 | RESET# | 56 | DQS4 | 102 | NC | 148 | VDD |
11 | VSS | 57 | DQ34 | 103 | A13 | 149 | DQS13 |
12 | DQ8 | 58 | VSS | 104 | VDDQ | 150 | DQ38 |
13 | DQ9 | 59 | BA0 | 105 | DQ12 | 151 | DQ39 |
14 | DQS1 | 60 | DQ35 | 106 | DQ13 | 152 | VSS |
15 | VDDQ | 61 | DQ40 | 107 | DQS10 | 153 | DQ44 |
16 | DU | 62 | VDDQ | 108 | VDD | 154 | RAS# |
17 | DU | 63 | WE# | 109 | DQ14 | 155 | DQ45 |
18 | VSS | 64 | DQ41 | 110 | DQ15 | 156 | VDDQ |
19 | DQ10 | 65 | CAS# | 111 | CKE1 | 157 | S0# |
20 | DQ11 | 66 | VSS | 112 | VDDQ | 158 | S1# |
21 | CKE0 | 67 | DQS5 | 113 | BA2 | 159 | DQS14 |
22 | VDDQ | 68 | DQ42 | 114 | DQ20 | 160 | VSS |
23 | DQ16 | 69 | DQ43 | 115 | A12 | 161 | DQ46 |
24 | DQ17 | 70 | VDD | 116 | VSS | 162 | DQ47 |
25 | DQS2 | 71 | DU | 117 | DQ21 | 163 | DU |
26 | VSS | 72 | DQ48 | 118 | A11 | 164 | VDDQ |
27 | A9 | 73 | DQ49 | 119 | DQS11 | 165 | DQ52 |
28 | DQ18 | 74 | VSS | 120 | VDD | 166 | DQ53 |
29 | A7 | 75 | DU | 121 | DQ22 | 167 | FETEN |
30 | VDDQ | 76 | DU | 122 | A8 | 168 | VDD |
31 | DQ19 | 77 | VDDQ | 123 | DQ23 | 169 | DQS15 |
32 | A5 | 78 | DQS6 | 124 | VSS | 170 | DQ54 |
33 | DQ24 | 79 | DQS0 | 125 | A6 | 171 | DQ55 |
34 | VSS | 80 | DQ51 | 126 | DQ28 | 172 | VDDQ |
35 | DQ25 | 81 | VSS | 127 | DQ29 | 173 | NC |
36 | DQS3 | 82 | VDDID | 128 | VDDQ | 174 | DQ60 |
37 | A4 | 83 | DQ56 | 129 | DQS12 | 175 | DQ61 |
38 | VDD | 84 | DQ57 | 130 | A3 | 176 | VSS |
39 | DQ26 | 85 | VDD | 131 | DQS0 | 177 | DOS16 |
40 | DQ27 | 86 | DQS7 | 132 | VSS | 178 | DQ62 |
41 | A2 | 87 | DQ58 | 133 | DQ31 | 179 | DQ63 |
42 | VSS | 88 | DQ59 | 134 | CB4 | 180 | VDDQ |
43 | A1 | 89 | VSS | 135 | CB5 | 181 | SA0 |
44 | CB0 | 90 | WP | 136 | VDDQ | 182 | SA1 |
45 | CB1 | 91 | SDA | 137 | CK0 | 183 | SA2 |
46 | VDD | 92 | SCL | 138 | CK0# | 184 | VDDSPD |
Модули RIMM (Rambus Interface Memory Module), no форме похожие на обычные модули памяти (рис. 7.14), специально предназначены для памяти RDRAM. У них 30-проводная шина проходит вдоль модуля слева направо, и на эту шину без ответвлений напаиваются микросхемы RDRAM в корпусах BGA. Сигналы интерфейса модуля (табл. 7.17) соответствуют сигналам канала Rambus, но в их названии имеется еще приставка L (Left) и R (Right) для левого и правого вывода шины соответственно. Модуль RIMM содержит до 16 микросхем RDRAM, которые всеми выводами (кроме двух) соединяются параллельно. Микросхемы памяти закрыты пластиной радиатора. В отличие от SIMM и DIMM, у которых объем памяти кратен степени числа 2, модули RIMM могут иметь более равномерный ряд объемов — в канал RDRAM память можно добавлять хоть по одной микросхеме.
Рис. 7.14. Модули RIMM
Таблица 7.17. Назначение выводов RIMM
Контакт | Цепь | Тип | Назначение |
---|---|---|---|
116, 32 | SIO0, SIO1 | I/O CMOS | Serial I/O — последовательные данные обмена с управляющими регистрами |
34, 35, 42, 51, 53, 118, 119, 126, 135, 137 | VDD | Питание +2,5 В | |
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 37, 38, 39, 41, 45, 48, 49, 52, 54, 56, 53, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 121, 123, 125, 129, 132, 133, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168 | GND | Общий | |
2, 86, 4, 88, 6, 90, 8, 92, 10 | LDQA8…LDQA0 | I/O RSL | Шина данных A |
94 | LCFM | I RSL | Синхронизация (+) от ведущего устройства (для приема данных) |
96 | LCFMN | I RSL | Синхронизация (-) от ведущего устройства (для приема данных) |
40, 12 | VREF | Пороговый уровень сигналов RSL (1,8 В) | |
12 | LCTMN | I RSL | Синхронизация (-) к ведущему устройству (для передачи данных) |
14 | LCTM | I RSL | Синхронизация (+) к ведущему устройству (для передачи данных) |
98, 16, 100 | LROW2…LROW0 | I RSL | Шина строк (для управляющей и адресной информации) |
18, 102, 20, 104, 22 | LCOL4…LCOL0 | I RSL | Шина столбцов (для управляющей и адресной информации) |
114, 30, 112, 28, 110, 26, 108, 24, 106 | LOQB8…LOQB0 | I/O RSL | Шина данных В |
120 | LCMD | I CMOS | Последовательные команды (для обмена с управляющими регистрами). Используется и для управления энергопотреблением |
36 | LSCK | I CMOS | Синхронизация последовательных команд и данных (для обмена с управляющими регистрами) |
83, 167, 81, 165, 79, | RDQA8…RDQA0 | I/O RSL | Шина данных А |
159 | RCFM | I RSL | Синхронизация (+) от ведущего устройства (для приема данных) |
157 | RCFMN | I RSL | Синхронизация (-) от ведущего устройства (для приема данных) |
73 | RCTMN | I RSL | Синхронизация (-) к ведущему устройству (для передачи данных) |
71 | RCTM | I RSL | Синхронизация (+) к ведущему устройству (для передачи данных) |
155, 69, 153 | RROW2…RROW0 | I RSL | Шина строк (для управляющей и адресной информации) |
67, 151, 65, 148, 63 | RCOL4…RCOL0 | I RSL | Шина столбцов (для управляющей и адресной информации) |
139, 55, 141, 57, 143, 59, 145, 61, 147 | RDQB8…RDQB0 | I/O RSL | Шина данных В |
134 | RCMD | I CMOS | Последовательные команды (для обмена с управляющими регистрами). Используется и для управления энергопотреблением |
50 | RSCK | I CMOS | Синхронизация последовательных команд и данных (для обмена с управляющими регистрами) |
46 | SCL | I CMOS | Синхронизация последовательной идентификации |
47 | SDA | I/O CMOS | Данные последовательной идентификации |
131, 130 | SA1, SA0 | I CMOS | Адрес последовательной идентификации |
43, 44, 127, 128 | VT | Питание терминаторов (1,4 В) |
72 pin SO DIMM (Small-Outline-Dual-Inline-Memory Module) — малогабаритный (длина 2,35" — 60 мм) модуль с двусторонним 72-контактным разъемом, нечетные контакты расположены с фронтальной стороны, четные — с тыльной (рис. 7.15, табл. 7.18 и 7.19). Модули комплектуются микросхемами DRAM в корпусах TSOP, емкость 2-32 Мбайт, разрядность данных — 32 или 36 бит (с контролем паритета). 36-битные модули отличаются только наличием дополнительных бит
PQx
. Память организована в виде двух двухбайтных слов с возможностью побайтного обращения и предназначена для двух- и четырехбайтных применений. Информация об объеме, организации, адресации, быстродействии и регенерации передается через семь линий параллельной идентификации:
♦ PD7 — регенерация: 1=стандартная, 0=расширенная или саморегенерация;
♦ PD6, PD5 — время доступа: 00=50 нс, 10=70 нс, 11=60 нс;
♦ PD[4:1] — организация.
Рис. 7.15. Модули SO DIMM-72 pin
Таблица 7.18. Организация информационных и управляющих сигналов модулей SO DIMM-72
Линии CAS# | CAS0# | CAS1# | CAS2# | CAS3# |
---|---|---|---|---|
Биты данных и паритета | DQ[0:7], PQ8 | DQ[9:15], PQ17 | DQ[18:25], PQ26 | DQ[27:34], PQ35 |
Выбор банка 0 | RAS0# | RAS2# | ||
Выбор банка 1 | RAS1# | RAS3# |
Таблица 7.19 Назначение выводов SO DIMM-72 pin
Контакт | Цепь | Контакт | Цепь |
---|---|---|---|
1 | VSS | 2 | DQ0 |
3 | DQ1 | 4 | DQ2 |
5 | DQ3 | 6 | DQ4 |
7 | DQ5 | 8 | DQ6 |
9 | DQ7 | 10 | VCC |
11 | PD1 | 12 | A0 |
13 | A1 | 14 | A2 |
15 | A3 | 16 | A4 |
17 | A5 | 18 | A6 |
19 | А10 | 20¹ | PQ8 |
21 | DQ9 | 22 | DQ10 |
23 | DQ11 | 24 | DQ12 |
25 | DQ13 | 26 | DQ14 |
27 | DQ15 | 28 | A7 |
29 | А11 | 30 | VCC |
31 | А8 | 32 | A9 |
33 | RAS3# | 34 | RAS2# |
35 | DQ16 | 36¹ | PQ17 |
37 | DQ18 | 38 | DQ19 |
39 | VSS | 40 | CAS0# |
41 | CAS2# | 42 | CAS3# |
43 | CAS1# | 44 | RAS0# |
45 | RAS1# | 46 | A12 |
47 | WE# | 48 | A13 |
49 | DQ20 | 50 | DQ21 |
51 | DQ22 | 52 | DQ23 |
53 | DQ24 | 54 | DQ25 |
55¹ | PQ26 | 56 | DQ27 |
57 | DQ28 | 58 | DQ29 |
59 | DQ31 | 60 | DQ30 |
61 | VCC | 62 | DQ32 |
63 | DQ33 | 64 | DQ34 |
65¹ | PQ35 | 66 | PD2 |
67 | PD3 | 68 | PD4 |
69 | PD5 | 70 | PD6 |
71 | PD7 | 72 | VSS |
¹ У 37-битных модулей контакт свободен
Модуль 144 pin SO DIMM — малогабаритный модуль (длина 2,35" — 60 мм) с двусторонним 144-контактным разъемом (рис. 7.16, табл. 7.20), емкость 8-64 Мбайт, разрядность данных — 64 или 72 бит ЕСС. Модули обеспечивают побайтное обращение по сигналам
CAS[0:7]#
, сигнал RAS0#
выбирает банк 0, сигнал RAS1#
— банк 1 (при его наличии). Напряжение питания — 5 или 3,3 В, механический ключ напряжения питания расположен между контактами 59–60 и 61–62. Нечетные контакты находятся с фронтальной стороны, четные — с тыльной. Идентификация последовательная. Модули могут содержать микросхемы как DRAM, так и SDRAM, объем 8-256 Мбайт.
Рис. 7.16. Модули SO DIMM-144 pin
Таблица 7.20. Назначение выводов модулей SO DIMM-144 pin
Контакт | Цепь¹ | Контакт | Цепь¹ | Контакт | Цепь¹ | Контакт | Цепь¹ |
---|---|---|---|---|---|---|---|
1 | VSS | 2 | VSS | 71 | RAS1# | 72 | NC |
3 | DQ0 | 4 | DQ32 | 73 | OE | 74 | NC |
5 | DQ1 | 6 | DQ33 | 75 | VSS | 76 | VSS |
7 | DQ2 | 8 | DQ34 | 77 | CB2 | 78 | CB6 |
9 | DQ3 | 10 | DQ35 | 79 | CB3 | 80 | CB7 |
11 | VCC | 12 | VCC | 81 | VCC | 82 | VCC |
13 | DQ4 | 14 | DQ36 | 83 | DQ16 | 84 | DQ48 |
15 | DQ5 | 16 | DQ37 | 85 | DQ17 | 86 | DQ49 |
17 | DQ6 | 18 | DQ38 | 87 | DQ18 | 88 | DQ50 |
19 | DQ7 | 20 | DQ39 | 89 | DQ19 | 90 | DQ51 |
21 | VSS | 22 | VSS | 91 | VSS | 92 | VSS |
23 | CAS0#/DQMB0 | 24 | CAS4#/DQMB4 | 93 | DQ20 | 94 | DQ52 |
25 | CAS1#/DQMB1 | 26 | CAS5#/DQMB5 | 95 | DQ21 | 96 | DQ53 |
27 | VCC | 28 | VCC | 97 | DQ22 | 98 | DQ54 |
29 | А0 | 30 | A3 | 99 | DQ23 | 100 | DQ55 |
31 | A1 | 32 | A4 | 101 | VCC | 102 | VCC |
33 | A2 | 34 | A5 | 103 | A6 | 104 | A7 |
35 | VSS | 36 | VSS | 105 | A8 | 106 | A11 |
37 | DQ8 | 38 | DQ40 | 107 | VSS | 108 | VSS |
39 | DQ9 | 40 | DQ41 | 109 | A9 | 110 | A12 |
41 | DQ10 | 42 | DQ42 | 111 | A10 | 112 | A13 |
43 | DQ11 | 44 | DQ43 | 113 | VCC | 114 | VCC |
45 | VCC | 46 | VCC | 115 | CAS2#/DQMB1 | 116 | CAS6#/DQMB6 |
47 | DQ12 | 48 | DQ44 | 117 | CAS3#/DQMB3 | 118 | CAS7#/DQMB7 |
49 | DQ13 | 50 | DQ45 | 119 | VSS | 120 | VSS |
51 | DQ14 | 52 | DQ46 | 121 | DQ24 | 122 | DQ56 |
53 | DQ15 | 54 | DQ47 | 123 | DQ25 | 124 | DQ57 |
55 | VSS | 56 | VSS | 125 | DQ26 | 126 | DQ58 |
57 | CB0 | 58 | CB4 | 127 | DQ27 | 128 | DQ59 |
59 | CB1 | 60 | CB5 | 129 | VCC | 130 | VCC |
Ключ напряжения питания | 131 | DQ28 | 132 | DQ60 | |||
Ключ напряжения питания | 133 | DQ29 | 134 | DQ61 | |||
61 | DU/CLK0 | 62 | DU/CKE0 | 135 | DQ30 | 136 | DQ62 |
63 | VCC | 64 | VCC | 137 | DQ31 | 138 | DQ63 |
65 | DU/RAS# | 66 | DU/CAS# | 139 | VSS | 140 | VSS |
67 | WE# | 68 | NC/CKE1 | 141 | SDA | 142 | SCL |
69 | RAS0#/S0# | 70 | NC/A12 | 143 | VCC | 144 | VCC |
¹ DRAM/SDRAM
Модули 88 pin DRAM cards — миниатюрные модули (3,37"×2,13"×0,13" — 85,5×54×3,3 мм) В пластиковом корпусе размером с карту PCMCIA (PC Card). Имеют 88-контактный разъем (не PCMCIA!), разрядность 18, 32 или 36 бит, емкость 2-36 Мбайт. Комплектуются микросхемами DRAM в корпусах TSOP. Информация о быстродействии и объеме передается по восьми выводам. Внутренняя архитектура близка к SIMM-72. Напряжение питания — 5 или 3,3 В. Применяются в малогабаритных компьютерах, легко устанавливаются и снимаются.
Статическая память — SRAM (Static Random Access Memory), как и следует из ее названия, способна хранить информацию в статическом режиме — то есть сколь угодно долго при отсутствии обращений (но при наличии питающего напряжения). Ячейки статической памяти реализуются на триггерах — элементах с двумя устойчивыми состояниями. По сравнению с динамической памятью эти ячейки более сложные и занимают больше места на кристалле, однако они проще в управлении и не требуют регенерации. Быстродействие и энергопотребление статической памяти определяется технологией изготовления и схемотехникой запоминающих ячеек.
Асинхронная статическая память (Asynchronous SRAM, Async SRAM), она же обычная, или стандартная, подразумевается под термином SRAM по умолчанию, когда тип памяти не указан.
Микросхемы этого типа имеют простейший асинхронный интерфейс, включающий шину адреса, шину данных и сигналы управления
CS#
, ОЕ#
и WE#
. Микросхема выбирается низким уровнем сигнала CS#
(Chip select), низкий уровень сигнала ОЕ#
(Output Enable) открывает выходные буферы для считывания данных, WE#
(Write Enable) низким уровнем разрешает запись. Временные диаграммы циклов обращения приведены на рис. 7.17. При операции записи управление выходными буферами может производиться как сигналом ОЕ#
(цикл 1), так и сигналом WE#
(цикл 2). Для удобства объединения микросхем внутренний сигнал CS#
может собираться по схеме «И» из нескольких внешних, например CS0#
, CS1#
и CS2#
— в таком случае микросхема будет выбрана при сочетании логических сигналов 0, 1, 0 на соответствующих входах.
Рис. 7.17. Временные диаграммы чтения и записи асинхронной статической памяти
Время доступа — задержка появления действительных данных на выходе относительно момента установления адреса — у стандартных микросхем SRAM составляет 12, 15 или 20 наносекунд, что позволяет процессору выполнять пакетный цикл чтения 2-1-1-1 (то есть без тактов ожидания) на частоте системной шины до 33 МГц. На более высоких частотах цикл будет не лучше 3-2-2-2.
Синхронная пакетная статическая память, Sync Burst SRAM, оптимизирована под выполнение пакетных (burst) операций обмена, свойственных кэш-памяти. В ее структуру введен внутренний двухбитный счетчик адреса (не позволяющий перейти границу четырехэлементного пакетного цикла). В дополнение к сигналам, характерным для асинхронной памяти (адрес, данные,
CS#
, OE#
и WE#
), синхронная память использует сигнал CLC
(Clock) для синхронизации с системной шиной и сигналы управления пакетным циклом ADSP#
, CADS#
и ADV#
. Сигналы CADS#
(Cache ADdress Strobe) и ADSP#
(ADdress Status of Processor), которыми процессор или кэш-контроллер отмечает фазу адреса очередного цикла, являются стробами записи начального адреса цикла во внутренний регистр адреса. Любой из этих сигналов инициирует цикл обращения, одиночный (single) или пакетный (burst), а сигнал ADV#
(ADVance) используется для перехода к следующему адресу пакетного цикла. Все сигналы, кроме сигнала управления выходными буферами ОЕ#
, синхронизируются по положительному перепаду сигнала CLK
. Это означает, что значение входных сигналов должно установиться до перепада и удерживаться после него еще некоторое время. Выходные данные при считывании будут также действительны во время этого перепада. Микросхемы синхронной статической памяти, как и SDRAM, обычно имеют сигнал, выбирающий режим счета адреса: чередование (для процессоров Intel) или последовательный счет (для Power PC).
Конвейерно-пакетная статическая память, PB SRAM (Pipelined Burst SRAM), — усовершенствование синхронной памяти (слово «синхронная» из ее названия для краткости изъяли, но оно обязательно подразумевается). Конвейером является дополнительный внутренний регистр данных, который, требуя дополнительного такта в первой пересылке цикла, позволяет остальные данные получать без тактов ожидания даже на частотах выше 75 МГц. Задержка данных относительно синхронизирующего перепада у современных микросхем PB SRAM составляет 4,5–8 нс! Но, как и в случае Sync Burst SRAM, этот параметр не является временем доступа в чистом виде (не следует забывать о двух-трех тактах в первой передаче), а отражает появление действительных данных относительно очередного перепада сигнала синхронизации. Интерфейс PB SRAM аналогичен интерфейсу Sync Burst SRAM.
Обобщенное понятие энергонезависимой памяти (NV Storage) означает любое устройство, хранящее записанные данные даже при отсутствии питающего напряжения (в отличие от статической и динамической полупроводниковой памяти). В данном разделе рассматриваются только электронные устройства энергонезависимой памяти, хотя к энергонезависимой памяти относятся и устройства с подвижным магнитным или оптическим носителем. Существует множество типов энергонезависимой памяти: ROM, PROM, EPROM, EEPROM, Flash Memory, FRAM, различающихся по своим потребительским свойствам, обусловленным способом построения запоминающих ячеек, и сферам применения. Запись информации в энергонезависимую память, называемая программированием, обычно существенно сложнее и требует больших затрат времени и энергии, чем считывание. Программирование ячейки (или блока) — это целая процедура, в которую может входить подача специальных команд записи и верификации. Основным режимом работы такой памяти является считывание данных, а некоторые типы после программирования допускают только считывание, что и обусловливает их общее название ROM (Read Only Memory — память только для чтения) или ПЗУ (постоянное запоминающее устройство).
Запоминающие ячейки энергонезависимой памяти по своей природе обычно асимметричны и, как правило, позволяют записывать только нули в нужные биты предварительно стертых (чистых) ячеек, содержащие единицы. Для некоторых типов памяти чистым считается нулевое состояние ячеек. Однократно программируемые микросхемы позволяют изменять только исходное (после изготовления) состояние ячеек. Для стирания (если оно возможно) требуются значительные затраты энергии (мощности и времени), и процедура стирания обычно существенно дольше записи. Стирание ячеек выполняется либо для всей микросхемы, либо для определенного блока, либо для одной ячейки (байта). Стирание приводит все биты стираемой области в одно состояние (обычно во все единицы, реже — во все нули).
Процедура программирования многих старых типов памяти требует относительно высокого напряжения программирования (12–26 В), а для однократно программируемых (прожигаемых) микросхем и специального (не ТТЛ) интерфейса управления. После программирования требуется верификация — сравнение записанной информации с оригиналом, причем некачественное управление программированием (или брак микросхемы) может приводить к «зарастанию» записанной ячейки, что потребует повторного (возможно, и неудачного) ее программирования. Возможен и обратный вариант, когда «пробиваются» соседние ячейки, что требует повторного стирания (тоже, возможно, неудачного). Стирание и программирование микросхем может выполняться либо в специальном устройстве — программаторе, либо в самом целевом устройстве, если у него предусмотрены соответствующие средства. Микросхемы различают по способу программирования.
♦ Микросхемы, программируемые при изготовлении, — масочные ПЗУ, содержимое которых определяется рисунком технологического шаблона. Такие микросхемы используют лишь при выпуске большой партии устройств с одной и той же прошивкой.
♦ Микросхемы, программируемые однократно после изготовления перед установкой в целевое устройство, — ППЗУ (программируемые ПЗУ) или PROM (Programmable ROM). Программирование осуществляется прожиганием определенных хранящих элементов на специальных устройствах-программаторах.
♦ Микросхемы, стираемые и программируемые многократно, — РПЗУ (репрограммируемые ПЗУ) или EPROM (Erasable PROM — стираемые ПЗУ). Для стирания и программирования требуется специальное оборудование. Микросхемы программируются в программаторе. Иногда возможно программирование микросхем прямо в целевом устройстве, подключая внешний программатор, — так называемый метод OBP (On-Board Programming). Наиболее распространены микросхемы УФРПЗУ, стираемые ультрафиолетовым облучением, — их обычно называют просто EPROM или UV-EPROM (Ultra-Violet EPROM). В этом классе имеются и электрически стираемые ПЗУ (ЭСПЗУ) или EEPROM (Electrical Erasable PROM).
♦ Микросхемы, перепрограммируемые многократно в целевом устройстве, используя программу его процессора, — так называемый метод ISP или ISW (In-System Programming или In-System Write). К этому классу относятся чисто электрически перепрограммируемые микросхемы NVRAM и FRAM, но наибольшее распространение получила флэш-память и современные модели EEPROM.
NVRAM (Non-Volatile Random Access Memory) — энергонезависимая память с произвольным доступом. Это название подразумевает возможность произвольной смены информации не только во всей ее области или блоке, но и в отдельной ячейке, причем не процедурой, а обычным шинным циклом. К этому классу относятся микросхемы FRAM и, с некоторой натяжкой, EEPROM. У последних время выполнения внутренней операции записи обычно довольно большое, и после интерфейсной операции записи ячейки память недоступна ни для каких операций в течение нескольких мс (а то и десятков мс). Флэш-память к этому классу относить нельзя, поскольку изменение информации, недаром называемое программированием, в этой памяти осуществляется специальной программной процедурой.
Ферроэлектрическая память FRAM (Ferroelectric RAM) — энергонезависимая память с истинно произвольным доступом, запись и чтение ее осуществляются как в обычных микросхемах статической памяти. При ее изготовлении используется железо — ее можно считать эхом старинной памяти больших машин на магнитных сердечниках. Ячейки FRAM по структуре напоминают DRAM, но информация хранится не в виде заряда конденсатора (который нужно поддерживать регенерацией), а виде направления поляризации кристаллов. Запись производится непосредственно, предварительного стирания не требуется. Как и флэш-память, она используется в самых портативных системах класса PDA (personal digital assistants — персональный цифровой ассистент). Над этими устройствами активно работает фирма Hitachi совместно с фирмой Ramtron (www.ramtron.com) и фирма Matsushita совместно с фирмой Symetrix. В настоящее время выпускаются микросхемы емкостью 4-256 Кбит (технология 0,35 мкм) с параллельным интерфейсом (как SRAM) и временем доступа 70-120 нс, а также с последовательным интерфейсом I²C. Кроме массивов памяти FRAM используется и в специальных энергонезависимых регистрах — есть, например, микросхемы FM573 и FM574, которые при включенном питании ведут себя аналогично стандартным 8-битным регистрам '573 и '574, но при выключении питания помнят свое состояние. Микросхемы FRAM имеют интерфейс КМОП, питание 5 В, но имеются изделия и на 2,7 В. В отличие от флэш-памяти, у которой число циклов перезаписи принципиально ограничено (хотя и очень велико), ячейки FRAM практически не деградируют в процессе записи — гарантируется до 1010 циклов перезаписи. Провозглашается замена на FRAM даже динамической памяти, однако в PC память FRAM автору пока встречать не доводилось.
Масочные постоянные запоминающие устройства — ПЗУ или ROM — имеют самое высокое быстродействие (время доступа 30–70 нс). Эти микросхемы в PC широкого применения не получили ввиду сложности модификации содержимого (только путем изготовления новых микросхем); они иногда применялись в качестве знакогенераторов в некоторых моделях графических адаптеров CGA, MDA, HGC.
Однократно программируемые постоянные запоминающие устройства — ППЗУ или PROM — имеют аналогичные параметры и благодаря возможности программирования изготовителем оборудования (а не микросхем) находят более широкое применение для хранения кодов BIOS и в графических адаптерах. Программирование этих микросхем осуществляется только с помощью специальных программаторов, в целевых устройствах они устанавливаются в «кроватки» или запаиваются. Как и масочные, эти микросхемы практически нечувствительны к электромагнитным полям (в том числе и к рентгеновскому облучению), и несанкционированное изменение их содержимого в устройстве исключено (конечно, не считая отказа).
Репрограммируемые постоянные запоминающие устройства — РПЗУ или EPROM — до недавних пор были самыми распространенными носителями BIOS как на системных платах, так и в адаптерах, а также использовались в качестве знакогенераторов. Наиболее популярные микросхемы имеют восьмибитную организацию и обозначение вида 27xx-tt или 27Cxx-tt для микросхем CMOS. Здесь xx определяет емкость в килобитах: 2708 — 1 К×8 — родоначальник семейства, 2716/32/64/128/256/512 имеют емкость 2/4/8/16/32/64 Кбайт соответственно, 27010 и 27020 — 128 и 256 Кбайт. Время доступа tt лежит в диапазоне 50–250 нс. Шестнадцатибитные микросхемы (например, 27001 или 27002 емкостью 64 К или 128 К 16-битных слов) в PC применяются редко.
Микросхемы EPROM тоже программируются на программаторах, но относительно простой интерфейс записи позволяет их программировать и в устройстве (но не в штатном его режиме работы, а при подключении внешнего программатора). Стирание микросхем осуществляется ультрафиолетовым облучением в течение нескольких минут. Специально для стирания микросхемы имеют стеклянные окошки. После программирования эти окошки заклеивают, предотвращая стирание под действием солнечного или люминесцентного облучения. Время стирания зависит от расстояния до источника облучения, его мощности и объема микросхемы (более емкие микросхемы стираются быстрее). Вместо штатных стирающих устройств можно пользоваться и обычной медицинской ультрафиолетовой лампой с расстояния порядка 10 см. Для микросхем 2764 ориентировочное время стирания составляет 5 минут. Стирание переводит все биты в единичное состояние. «Недостертые» микросхемы при программировании могут давать ошибки, передержка при стирании снижает количество возможных циклов перепрограммирования (в пределе — до нуля).
Некоторые микросхемы, похожие по виду и обозначению на стираемые ультрафиолетом, не имеют окна (они упакованы в дешевый пластмассовый корпус). Эти микросхемы либо стираются рентгеновским облучением (что не совсем удобно), либо допускают лишь однократно программирование, которое может выполняться и по заказу фирмой-производителем микросхем. Их интерфейс полностью совпадает с интерфейсом обычных микросхем EPROM 27хх.
С программированием ПЗУ приходится сталкиваться при русификации графических адаптеров (CGA, MDA, HGC) и принтеров с незагружаемыми знакогенераторами, а также при замене (или восстановлении) системной микросхемы BIOS или микросхемы Boot ROM — микросхемы удаленной загрузки для адаптера локальной сети. Распространенные программаторы EPROM имеют интерфейс подключения к СОМ- или LPT-порту PC или подключаются через собственную карту расширения (обычно с шиной ISA). Время программирования зависит от типа и объема микросхемы и применяемого алгоритма программирования. Классический алгоритм с 50-миллисекундными импульсами записи каждой ячейки для современных микросхем практически не используется. Более быстрые «интеллигентные» алгоритмы позволяют записывать 8 килобайт (2764) менее чем за минуту. Вся процедура программирования может затягиваться при использовании медленного интерфейса связи программатора с PC (например, СОМ-порт на скорости 2400 бод) за счет длительной процедуры копирования данных в буфер программатора.
Интерфейс микросхем постоянной памяти в режиме чтения совпадает с интерфейсом статической памяти. Для программирования (записи) требуется приложение ко входу VPP напряжения программирования, которое для различных типов EPROM лежит в диапазоне 12–26 В (обычно указывается на корпусе микросхемы). Комбинации управляющих сигналов, формирующие импульсы записи для EPROM разной емкости, различны. При напряжении на входе VPP 5 В и ниже модификация памяти (запись) невозможна ни при каких комбинациях управляющих сигналов, и микросхемы работают строго в режиме ROM. Этот режим и используется для микросхем BIOS, так что никакой вирус им не страшен.
В PC чаще всего применяют микросхемы EPROM в корпусах DIP и PLCC (табл. 7.21), расположение выводов популярных микросхем приведено на рис. 7.18 и 7.19.
Рис. 7.18. Расположение выводов микросхем EPROM в корпусах DIP: a — DIP-24, б — DIP-28, в — DIP-32
Рис. 7.19. Расположение выводов микросхем EPROM в корпусах TSOP и PLCC: а — TSOP-32, б — PLCC-32
Таблица 7.21. Популярные микросхемы EPROM
Микросхема и организация | Корпус | Рисунок | Примечание |
---|---|---|---|
2716 — 2 К×8 | DIP-24 | 7.18, а | 20 = ОЕ#; 21 = Vpp |
2732 — 4 К×8 | DIP-24 | 7.18, а | 20 = OE#/Vpp, 21=A11 |
2764 — 8 К×8 | DIP-28 | 7.18, б | 1 = Vpp, 22 = OE#; 26 = NC, 27 = PGM# |
27128 — 16 К×8 | DIP-28 | 7.18, б | 1 = Vpp, 22 = OE#; 26 = A13, 27 = PGM# |
27256 — 32 К×8 | DIP-28 | 7.18, б | 1 = Vpp, 22 = OE#; 26 = A13, 27 = A14 |
27512 — 64 К×8 | DIP-28 | 7.18, б | 1 = A15, 22 = OE#/Vpp, 26 = A13, 27 = A14 |
27010 — 128 К×8 | DIP-32 | 7.18, б | 30 = NC |
27010 — 128 К×8 | TSOP-32 | 7.19, а | 6 = NC |
27010 — 128 К×8 | PLCC-32 | 7.19, б | 30 = NC |
27020 — 256 К×8 | DIP-32 | 7.18, в | - |
27020 — 256 К×8 | TSOP-32 | 7.19, а | - |
27020 — 256 К×8 | PLCC-32 | 7.19, б | - |
Назначение выводов микросхем EPROM приведено в табл. 7.22.
Таблица 7.22. Назначение выводов микросхем EPROM
Сигнал | Назначение |
---|---|
СЕ# | Chip Enable — разрешение доступа. Низкий уровень разрешает обращение |
к микросхеме, высокий уровень переводит микросхему в режим пониженного потребления | |
ОЕ# | Output Enable — разрешение выходных буферов. Низкий уровень при низком уровне СЕ# разрешает чтение данных из микросхемы. У некоторых типов микросхем на этот же вывод в режиме программирования подается напряжение VPP |
DQx | Data Input/Output — двунаправленные линии шины данных. Время доступа при чтении отсчитывается от установки действительного адреса или сигнала СЕ# (в зависимости от того, что происходит позднее) |
Ах | Address — входные линии шины адреса. Линия А9 допускает подачу высокого (12В) напряжения для чтения кода производителя (А0 = 0) и устройства (А0 = 1), при этом на остальные адресные линии подается логический ноль |
PGM# | Programm — импульс программирования (некоторые микросхемы не имеют этого сигнала, их программирование осуществляется по сигналу СЕ# при высоком уровне VPP) |
VPP | Программирующее напряжение питания (для некоторых типов — импульс) |
VCC | Питание (+5 В) |
Отметим основные свойства EPROM.
♦ Стирание информации происходит сразу для всей микросхемы под воздействием облучения и занимает несколько минут. Стертые ячейки имеют единичные значения всех бит.
♦ Запись может производиться в любую часть микросхемы побайтно, в пределах байта можно маскировать запись отдельных бит, устанавливая им единичные значения данных.
♦ Защита от записи осуществляется подачей низкого (5 В) напряжения на вход VPP в рабочем режиме (только чтение).
♦ Защита от стирания производится заклейкой окна.
Электрически стираемая (и перезаписываемая) память EEPROM, или E²PROM (Electrical Erasable PROM), отличается простотой выполнения записи. В простейшем (для пользователя) случае программирование сводится к записи байта по требуемому адресу, после чего некоторое время микросхема не способна выполнять операции чтения/записи и по другим адресам, вплоть до окончания выполнения внутренней операции программирования (со встроенным стиранием). Микросхемы могут поддерживать и режим страничной записи (Page Write), в котором они принимают поток байт записи смежных ячеек в страничный буфер на нормальной скорости интерфейса, после чего вся страница записывается в энергонезависимую память. Страничная запись экономит время (запись страницы выполняется за то же время, что и одной ячейки), но размер страничного буфера, как правило, небольшой (4-32 байт для микросхем небольшого объема и до 128–256 байт — большого). Более сложный интерфейс записи использует систему команд, в которую могут входить команды разрешения/запрета стирания и записи, стирание (отдельной ячейки или всей памяти), запись. Микросхема может иметь и специальные внутренние регистры, например регистр состояния, определяющий готовность микросхемы к обмену данными и возможные режимы защиты от модификации ячеек. Некоторые старые микросхемы для стирания требуют подачи сравнительно высокого (12 В) напряжения на определенные выводы. По процедуре программирования некоторые микросхемы EEPROM схожи с флэш-памятью. В настоящее время EEPROM применяются наряду с флэш-памятью, причем они могут соседствовать даже в одной микросхеме (например, микроконтроллере). Это объясняется очень большим гарантированным числом циклов перезаписи (106 и более) EEPROM, но меньшим достижимым объемом. Также EEPROM обычно имеет и большее гарантированное время сохранности информации (до 100 лет). Флэш-память при большем объеме и более производительных способах записи и стирания допускает меньшее число циклов перезаписи, и время сохранения информации у нее меньше (может быть и всего 10 лет). Микросхемы EEPROM выпускаются с различными интерфейсами, последовательными (Serial EEPROM) с интерфейсами I²C, SPI и иными и параллельными (Parallel EEPROM) с интерфейсами статической памяти (и EPROM).
Флэш-память по определению относится к классу EEPROM (электрическое стирание), но использует особую технологию построения запоминающих ячеек. Стирание во флэш-памяти производится сразу для целой области ячеек (блоками или полностью всей микросхемы). Это позволило существенно повысить производительность в режиме записи (программирования). Флэш-память обладает сочетанием высокой плотности упаковки (ее ячейки на 30 % меньше ячеек DRAM), энергонезависимого хранения, электрического стирания и записи, низкого потребления, высокой надежности и невысокой стоимости. Первые микросхемы флэш-памяти были предложены фирмой Intel в 1988 году и с тех пор претерпели существенные изменения по архитектуре, интерфейсу и напряжению питания.
Каждая ячейка флэш-памяти состоит всего из одного униполярного (полевого) транзистора. Ячейки организованы в матрицу; разрядность данных внешнего интерфейса — 8 или 16 бит (ряд микросхем имеет переключаемую разрядность). Чистые (стертые) ячейки содержат единицу во всех битах; при записи (программировании) нужные биты обнуляются. Возможно последующее программирование и уже записанных ячеек, но при этом можно только обнулять единичные биты, но не наоборот. В единичное состояние ячейки переводятся только при стирании. Стирание выполняется для всей матрицы ячеек; стирание одиночной ячейки невозможно. Чтение флэш-памяти ничем не отличается от чтения любой другой памяти — подается адрес ячейки, и через некоторое время доступа (десятки-сотни не) на выходе появляются данные. Запись выглядит несколько сложнее — для программирования каждого байта (слова) приходится выполнять процедуру, состоящую из операций записи и считывания, адресованных к микросхеме флэш-памяти. Однако при этом шинные циклы обращения к микросхеме являются нормальными для процессора, а не растянутыми, как для EPROM и EEPROM. Таким образом, в устройстве с флэш-памятью легко реализуется возможность перепрограммирования без извлечения микросхем из устройства. Большинство микросхем флэш-памяти имеют интерфейс, аналогичный асинхронной статической памяти (SRAM), а при чтении он упрощается до интерфейса ROM/PROM/EPROM. Существуют версии с интерфейсом динамической памяти, асинхронным и синхронным, а также и со специальными интерфейсами, в том числе и I²С. Первые микросхемы работали только при напряжении питания 5 В, а для программирования и стирания требовали дополнительное питание VPP = +12 В. Затем появились микросхемы всего с одним напряжением питания +5 В. Дальнейшее развитие технологии позволило снизить напряжение питания до 2,7–3,3 В и 1,65-2,2 В, a VPP — до 5, 3,3, 2,7 и даже 1,65 В. В производстве микросхем используется технологические процессы с разрешением 0,3, 0,22, 0,18 мкм (чем мельче ячейки, тем они экономичнее). Микросхемы первых выпусков (1990 г.) имели гарантированное число циклов стирания-программирования 10 000, современные — 100 000.
Флэш-память имеет время доступа при чтении 35-200 нс. Стирание информации (поблочное или во всей микросхеме) у микросхем середины 90-х годов занимает 1–2 секунды, программирование (запись) байта — порядка 10 мкс. У современных микросхем время стирания и записи заметно сократилось. Процедура записи от поколения к поколению упрощается (см. ниже). От ошибочного стирания (записи) применяются различные методы программной и аппаратной защиты. Программной защитой является ключевая последовательность команд, нарушение которой не позволяет начать операции стирания и записи. Аппаратная защита не позволяет выполнять стирание и запись, если на определенные входы не поданы требуемые уровни напряжения. Аппаратная защита может защищать как весь массив целиком, так и отдельные блоки.
По организации массива в плане стирания групп ячеек различают следующие архитектуры:
♦ Bulk Erase (BE) — все ячейки памяти образуют единый массив; запись возможна в произвольную ячейку; стирание возможно только для всего объема сразу;
♦ Boot Block (BB) — массив разделен на несколько блоков разного размера, стираемых независимо, причем один из блоков имеет дополнительные средства защиты от стирания и записи;
♦ Flash File — массив разделен на несколько равноправных независимо стираемых блоков обычно одинакового размера, что позволяет их называть микросхемами с симметричной архитектурой (Symmetrical Architecture, SA).
Организация BE применялась только в микросхемах первого поколения, ее недостатки вполне очевидны (получается просто аналог EEPROM с более удобным способом стирания и интерфейсом программирования). Все современные микросхемы секторированы (разбиты на отдельно стираемые блоки), так что остается лишь деление на симметричную и несимметричную архитектуру.
В симметричной архитектуре (SA), как правило, используется разбиение на блоки по 64 Кбайт; один из крайних блоков (с самым большим или самым маленьким адресом) может иметь дополнительные средства защиты.
В асимметричной архитектуре один из 64-килобайтных блоков разбивается на 8 блоков по 8 Кбайт. Один из блоков имеет дополнительные аппаратные средства защиты от модификации и предназначается для хранения жизненно важных данных, не изменяемых при запланированных модификациях остальных областей. Эти микросхемы специально предназначены для хранения системного программного обеспечения (BIOS), а привилегированный блок (Boot Block) хранит минимальный загрузчик, позволяющий загрузить (например, с дискеты) и выполнить утилиту программирования основного блока флэш-памяти. В обозначении этих микросхем присутствует суффикс T (Тор) или В (Bottom), определяющий положение Boot-блока либо в старших, либо в младших адресах соответственно. Первые предназначены для процессоров, стартующих со старших адресов (в том числе, х86, Pentium), вторые — для стартующих с нулевого адреса, хотя возможны и противоположные варианты, когда некоторые биты шины адреса перед подачей на микросхему памяти инвертируются. Старые микросхемы BB малого объема имели немного другое распределение, например микросхема 28F001ВХ-Т (28F001BN-Т), часто применяемая для флэш-BIOS в PC, содержит:
♦ основной блок (Main Block) объемом 112 Кбайт (00000h-1BFFFh);
♦ два блока параметров (Parameter Block) объемом по 4 Кбайт (1C000h-1CFFFh и 1D000h-1DFFFh);
♦ загрузочный блок (Boot Block) объемом 8 Кбайт (1E000h-1FFFFh), стирание и программирование которого возможны лишь при особых условиях.
Основной блок и блоки параметров по защите равноправны; выделение небольших блоков параметров позволяет в них хранить часто сменяемую информацию, например ESCD технологии PnP.
Выпускают и комбинированные микросхемы, например MT28C3214P2FL представляет собой комбинацию флэш-памяти 2 М×16 и SRAM 256 К×16.
По организации матрицы ячеек различают архитектуры NOR и NAND. В традиционной организации NOR транзисторы на одном проводе объединяются своими стоками параллельно, как бы образуя логический элемент ИЛИ-НЕ (NOR — Not OR). Эта организация обеспечивает высокое быстродействие произвольного считывания, что позволяет исполнять программы прямо из флэш-памяти (не копируя в ОЗУ) без потери производительности. В организации NAND несколько транзисторов разных ячеек соединяются последовательно, образуя логический элемент И-НЕ (NAND — Not AND), что дает высокую скорость последовательных обращений.
В первых микросхемах флэш-памяти каждая ячейка (всего один транзистор) предназначалась для хранения одного бита информации (1 — стерта, 0 — «прошита»). Позже появилась технология хранения двух битов в одной ячейке — благодаря совершенствованию технологии удалось надежно различать 4 состояния ячейки, что и требуется для хранения двух битов. Два бита в ячейке хранит память Intel StrataFlash, емкость одной такой микросхемы уже достигла 128 Мбит (16 Мбайт).
Флэш-память постоянно развивается как в плане повышения емкости и снижения потребления, так и в плане расширения возможностей и повышения производительности. Так, например, в ряде микросхем AMD имеется возможность чтения одновременно с записью других блоков (чтение во время стирания стало возможным еще со второго поколения флэш-памяти).
Некоторые микросхемы обеспечивают быстрый обмен в страничном режиме (Page Mode). Страницей являются 4 или 8 смежных ячеек; первое чтение в странице выполняется со временем доступа 70 нс. Если микросхема остается выбранной, то другие ячейки этой страницы (отличающиеся значением младших битов адреса) можно считывать циклами длительностью по 20 нс. Доступ к одиночным ячейкам не отличается от обычного. Микросхемы с пакетным режимом (Burst Mode) вдобавок к одиночному и страничному режимам (асинхронным) могут работать и в синхронном режиме. Для этого они имеют вход синхронизации
CLK
. Адрес начала пакета передается вместе с сигналом ADV#
(фиксируются по положительному перепаду CLK
). Первые данные на выходе появятся через 3 такта, после чего в каждом следующем такте будут выдаваться очередные данные.
Синхронная флэш-память имеет интерфейс (и даже упаковку в корпуса), совпадающий с SDRAM. В настоящее время выпускаются микросхемы с частотой 66 МГц (например, MT28S4M16LC — 1 М×16×4 банка), ожидаются микросхемы и на 133 МГц. Такая память удобна для встраиваемых компьютеров для хранения ПО, исполняемого прямо на месте (без копирования в ОЗУ).
Микросхемы флэш-памяти с симметричной архитектурой выпускаются и с интерфейсом DRAM (динамической памяти) — с мультиплексированной шиной памяти, стробируемой сигналами
RAS#
и CAS#
. Они предназначены для применения в модулях SIMM или DIMM, устанавливаемых в гнезда для обычной динамической памяти. Таким образом реализуются, например, модули PostScript для лазерных принтеров и любые резидентные программные модули. Эти модули, естественно, не будут определяться системой как основная память — на попытку обычной записи и считывания, предпринимаемую в тесте POST при определении установленной памяти, они ответят весьма своеобразно. Также они не будут восприниматься и как модули дополнительной системы BIOS, поскольку займут неподходящие для этого физические адреса. Использоваться эти модули смогут только с помощью специального драйвера, который «объяснит» чипсету, какому диапазону адресов пространства памяти соответствуют сигналы выборки банков флэш-памяти. Поскольку интерфейс модулей SIMM и DIMM не предполагает сигналов защиты записи, системного сброса и дополнительного питания +12 В, все вопросы, связанные с программированием и защитой, решаются дополнительными элементами, устанавливаемыми на модулях. При использовании 16-битных микросхем такие модули непосредственно не обеспечивают независимую побайтную запись, но она может обеспечиваться программно, маскированием (записью 0FFh) немодифицируемых байт.
Для хранения BIOS появились микросхемы флэш-памяти с интерфейсом LPC, называемые хабами (firmware hub).
Для некоторых сфер применения требуются специальные меры по блокированию изменения информации пользователем. Так, Intel в некоторые микросхемы вводит однократно записываемые регистры OTP (One-Time-Programmable). Один 64-битный регистр содержит уникальный заводской номер, другой может программироваться пользователем (изготовителем устройства) только однажды.
Фирма Intel выпускает микросхемы «Wireless Flash Memory» — за интригующим названием скрывается, конечно же, «нормальный» электрический интерфейс с проводами (wireless — без проводов). Однако они ориентированы на применение в средствах беспроводной связи (сотовые телефоны с доступом к Интернету): питание 1,85 В, наличие регистров OTP для защиты от мошенничества и т.п.
Микросхемы флэш-памяти упаковывают в корпуса со стандартизованным назначением выводов. Первые микросхемы выпускались в корпусах DIP, что обеспечивало легкость замены микросхем (E)EPROM на флэш-память. Далее в целях миниатюризации перешли к корпусам PLCC, TSOP и TSOP-II. Применение корпусов FBGA (Fine Pitch Ball Grid Array) — матрицы 6×8 шариковых выводов с шагом 0,8 мм — позволяет уменьшить размер корпуса до минимума, требуемого для упаковки кристалла. Для микросхем, используемых в картах SmartMedia, применяют и оригинальную упаковку KGD (Known Good Die).
На рис. 7.20-7.22 приведено расположение выводов распространенных микросхем флэш-памяти (основной вариант цоколевки). Многие микросхемы имеют два варианта цоколевки для корпусов поверхностного монтажа — основной и зеркальный (реверсный). Это позволяет существенно упростить разводку печатных проводников (серпантином) при объединении большого количества микросхем в массивы флэш-памяти.
Рис. 7.20. Расположение выводов микросхем флэш-памяти с 8-битной организацией в корпусах DIP и PLCC: а — DIP-32, б — PLCC-32
Рис. 7.21. Расположение выводов микросхем флэш-памяти с 8-битной организацией в корпусах TSOP: а — TSOP-32, б — TSOP-40
Рис. 7.22. Расположение выводов микросхем флэш-памяти с 8/16-битной организацией в корпусах TSOP-44: а — TSOP-44, б — TSOP-48, в — TSOP-56
Назначение сигналов микросхем флэш-памяти приведено в табл. 7.23; микросхемы разных изготовителей и моделей могут иметь не все из приведенных управляющих сигналов.
Таблица 7.23. Назначение сигналов микросхем флэш-памяти
Сигнал | Назначение |
---|---|
СЕ# | Chip Enable — разрешение доступа. Низкий уровень разрешает обращение к микросхеме, высокий уровень переводит микросхему в режим пониженного потребления. Доступ к микросхеме, имеющей два входа (СЕ1# и СЕ2#), возможен при низком уровне на обоих входах |
ОЕ# | Output Enable — разрешение выходных буферов. Низкий уровень при низком уровне сигнала СЕ# разрешает чтение данных из микросхемы. Подача высокого (12В) напряжения во время подачи команды стирания или программирования позволяет модифицировать и Boot-блок (этот метод используется редко, поскольку требует не-ТТЛ сигнала) |
WE# | Write Enable — разрешение записи. Низкий уровень при низком уровне сигнала СЕ# разрешает запись и переводит выходные буферы в высокоимпедансное состояние независимо от сигнала ОЕ#. Временные диаграммы шинного цикла записи аналогичны обычной статической памяти, что позволяет подключать флэш-память непосредственно к системной шине процессора. Допустимы оба способа управления — как с помощью сигнала WE# на фоне низкого уровня СЕ#, так и наоборот. Минимальная длительность импульса записи совпадает со временем доступа |
DQx | Data Input/Output — двунаправленные линии шины данных. Время доступа при чтении отсчитывается от установки действительного адреса или сигнала СЕ# (в зависимости от того, что происходит позднее). Фиксация данных при записи происходит по положительному перепаду WE# или СЕ# в зависимости оттого, что происходит раньше |
BYTE# | Управляющий сигнал для выбора режима обращения к микросхемам с 8/16-битной организацией. Они имеют два 8-битных банка, и их ячейки памяти адресуются 16-битными словами. Низкий уровень сигнала BYTE# задает восьмибитный режим обмена по линиям DQ[0:7], при этом линия DQ15/A-1 становится самой младшей линией адреса, переключающей банки, а линии DQ[8:14] переходят в высокоимпедансное состояние |
Ах | Address — входные линии шины адреса. Линия А9 допускает подачу высокого (12В) напряжения (как и EPROM) для чтения кода производителя (А0=0) и устройства (А0=1), при этом на остальные адресные линии подается логический «0» |
RP# (PWD#) | Reset/Power Down, раньше обозначался PWD# (PowerDown). Низкий уровень сбрасывает регистр команд и переводит микросхемы в режим «глубокого сна» (Deep Powerdown) с минимальным (доли микроампера) потреблением питания. Перевод сигнала в высокий логический уровень «пробуждает» микросхему (примерно за 0,3–0,8 мкс), после чего она переходит в режим чтения данных. Подача высокого (12В) напряжения разрешает программирование даже защищенного Boot-блока |
WP# | Write Protect — защита записи. При низком уровне WP# модификация Boot-блока или других блоков с установленным битом защиты возможна только при наличии высокого (12В) напряжения на входе RP#. При высоком уровне защита блоков игнорируется |
RY/BY# | Ready/Busy# — сигнал готовности (высокий уровень) микросхемы к очередной операции программирования или стирания. Низкий уровень указывает на занятость управляющего автомата (WSM) выполнением операции стирания или программирования. Выход обычно не управляется сигналами ОЕ# и СЕ#. В микросхемах 28F016SA и выше выход имеет тип «открытый коллектор», запираемый по команде, и программируемое назначение |
3/5# | Сигнал, переключающий режим работы микросхемы в зависимости от питающего напряжения, введен для оптимизации быстродействия или потребления |
Интерфейс микросхем флэш-памяти хорошо сочетается со стандартными сигналами, используемыми в микропроцессорных системах. Внутренние циклы стирания, записи и верификации выполняются автономно от шинных циклов внешнего интерфейса, что является существенным преимуществом перед микросхемами EPROM и EEPROM. В режиме чтения они полностью совместимы с EPROM, совпадая с ними и по расположению основных выводов.
Обозначение микросхем для изделий лидеров в области разработки и производства флэш-памяти — фирм Intel и AMD — несколько отличаются. Остальные производители для своих изделий, по свойствам аналогичных, в основном придерживаются системы обозначений лидеров.
Обозначение микросхем флэш-памяти Intel начинается с признака 28F, за которым следует трехзначный код объема (табл. 7.24), а за ними — два символа технологии и архитектуры:
♦ B5, ВС, BX, BR — Boot Block с питанием 5 В;
♦ C3 — Boot Block с питанием 3 В;
♦ F3 — Boot Block с питанием 3 В, повышенное быстродействие;
♦ J3 и J5 — StrataFlash (SA) с питанием 3 и 5 В соответственно;
♦ S3 и S5 — Flash File (SA) с питанием 3 и 5 В соответственно.
Таблица 7.24. Популярные микросхемы флэш-памяти
Обозначение | Организация¹ |
---|---|
256 | 32 К×8 BE |
512 | 64 К×8 BE |
010 | 128 К×8 BE |
020 | 256 К×8 BE |
001 | 128 К×8 BB |
002 | 256 К×8 BB |
004 | 512 К×8 BB, SA |
008 | 1 М×8 BB, SA |
016 | 2 М×8 BB, SA |
200 | 256 К×8/128 К×16 BB |
400 | 512 К×8/256 К×16 BB |
800 | 1024 К×8/512 К×16 BB |
160 | 2 М×8/1 M×16 SA, BB |
320 | 4 M×8/2 M×16 SA |
640 | 8 M×8/4 M×16 SA |
¹ BE — Bulk Erase (стираемые целиком), BB — Boot Block (несимметричные блоки), SA — Symmetric Architecture (симметричные блоки). Через косую черту указана организация для микросхем с переключаемой разрядностью данных.
Для флэш-памяти AMD первая часть обозначения определяет тип и характеристики микросхем:
♦ Am29BDS — 1,8 В, считывание одновременно с записью, пакетный режим чтения;
♦ Am29DS — 1,8 В, считывание одновременно с записью;
♦ Am29SL — 1,8 В;
♦ Am29LV — 3 B;
♦ Am29DL — 3 В, считывание одновременно с записью;
♦ Am29BL — 3 В, пакетный режим чтения;
♦ Am29PL — 3 В, страничный режим чтения;
♦ Am30LV — 3 В, UltraNAND;
♦ Am29F — 5 В.
Далее следует трехзначный код объема, за ним символ технологии изготовления (В, С или D), за которым следует символ архитектуры:
♦ T — boot sector, верхний;
♦ В — boot sector, нижний;
♦ H — симметричная, защищен со старшим адресом;
♦ L — симметричная, защищен с младшим адресом;
♦ U (нет символа) — симметричная;
♦ J40 — число 100%-годных блоков (только для UltraNAND).
Оставшаяся часть определяет параметры питания, быстродействие, тип корпуса, температурный диапазон и некоторые особенности.
Флэш-память с интерфейсом PCMCIA (PC Card) оптимизирована для построения внешней памяти миниатюрных PC. Модуль флэш-памяти в формате PC Card имеет интерфейс дисков IDE (ATA) как на уровне электрических сигналов, так и по системе команд. Кроме собственно микросхем накопителя этот модуль обычно содержит управляющую микросхему программируемой логики. Флэш-память в стандарте PC Card логически является устройством внешней памяти. Ее не следует путать с похожей по виду памятью в формате Credit Card, которая является оперативной и вставляется в специальный (не PCMCIA) слот компьютера. Внешнюю память, в отличие от оперативной, в принципе можно вставлять и вынимать без перезагрузки ОС.
По организации и программированию можно выделить три поколения флэш-памяти Intel.
Микросхемы первого поколения (28F256, 28F512, 28F010, 28F020) представляют собой единый массив памяти, стираемый целиком (bulk erase). Для выполнения стирания и записи микросхемы имеют внутренний регистр команд и управляющий автомат WSM (Write State Machine). Стирание и программирование флэш-памяти возможны только при подаче на вход VPP напряжения 12 В по командам, записываемым во внутренний регистр в шинном цикле записи по сигналу WE#.
Выполнение команд инициируется записью кодов команд во внутренний регистр, для чего процессор должен выполнить команду записи в память по адресу, принадлежащему области программируемой микросхемы флэш-памяти. На микросхему при этом должны прийти сигналы
СЕ#
(выбор) и WE#
(запись). Последующие обращения к этой области как по записи (W), так и по чтению (R) должны соответствовать исполняемой команде (табл. 7.25). В шинном цикле записи адрес (если он требуется для данной команды) фиксируется по спаду сигнала WE#
, фиксация данных выполнения команды происходит по фронту WE#
. Большинство команд подается безадресно (по любому адресу, принадлежащему данной микросхеме); команда верификации стирания и второй цикл команды программирования подаются по адресу требуемой ячейки. Результаты стирания и программирования считываются по адресу конкретной интересующей ячейки.
Таблица 7.25. Команды микросхем флэш-памяти Intel первого поколения
Команда | Число циклов шины | Первый цикл шины¹ | Второй (третий) цикл шины¹ | ||||
---|---|---|---|---|---|---|---|
R/W | Адрес | Данные | R/W | Адрес | Данные | ||
Read Memory | 1 | W | X | 00h | - | - | - |
Read ID | 3 | W | X | 90h | R | 0(1) | M_Id (D_Id) |
Set-up Erase/Erase | 2 | W | X | 20h | W | X | 20h |
Erase Verify | 2 | W | EA | A0h | R | X | EVD |
Set-up Program/Program 2 | 2 | W | X | 40h | W | PA | PD |
Program Verify | 2 | W | X | C0h | R | X | PVD |
Reset | 2 | W | X | FFh | W | X | FFh |
¹ Здесь X обозначает несущественный адрес, M_Id и D_Id — идентификаторы производителя и устройства, EA — адрес ячейки, в которой контролируется стирание, EVD — данные, считанные при верификации стирания (должны быть FFh), PA и PD — адрес и данные программируемой ячейки, PVD — данные, считанные при верификации программирования.
Ниже описано назначение команд.
♦
Read Memory
— команда чтения данных, переводящая микросхему в режим чтения, совместимый по интерфейсу с EPROM.
♦
Read ID
— команда чтения идентификаторов. В последующих шинных циклах чтения по адресу 0 считывается M_Id
(Manufacturer Identifier — идентификатор производителя, 89h), по адресу 1 — D_Id
(Device Identifier — идентификатор устройства, для микросхем 8F256, 28F512, 28F010, 28F020 это B9h, B8h, B4h и BDh соответственно). Из этого режима микросхема выходит по записи любой другой действительной команды. Идентификаторы можно читать и путем подачи высокого напряжения на А9
(как и для EPROM).
♦
Set-up Erase
/Erase
— подготовка и собственно стирание. Внутренний цикл стирания начинается по подъему сигнала WE#
во втором шинном цикле и завершается по последующему шинному циклу записи или по внутреннему таймеру (Stop Timer). Последующей командой обычно является верификация стирания. Два шинных цикла записи, необходимые для выполнения команды, Снижают вероятность случайного стирания и позволяют отказаться от выполнения стирания посылкой команды Reset
. Наличие внутреннего таймера позволяет не заботиться о точной выдержке времени для стирания, необходимо только выдержать минимальный интервал (около 10 мс). Перед стиранием все биты микросхемы должны быть предварительно запрограммированы в нули.
♦
Erase Verify
— верификация стирания. Отличается от обычного считывания тем, что проверяемая ячейка ставится в более жесткие условия считывания для повышения достоверности контроля стирания. Между шинными циклами команды верификации должна быть пауза не менее 6 мкс. Алгоритм быстрого стирания (Quick-Erase) предусматривает предварительное обнуление всех ячеек (командами программирования) и выполнение команды стирания, сопровождаемой верификацией. Команды верификации последовательно выполняются для каждой ячейки микросхемы. Если результат считывания отличается от FFh, производится повторное стирание (длительностью 10 мс), и последующая верификация может начинаться с первой ранее не стертой ячейки. Если количество повторов стирания превышает 3 000, фиксируется ошибка стирания и микросхема признается негодной. Алгоритм позволяет выполнить полное стирание микросхемы менее чем за секунду.
♦
Set-up Program
/Program
— подготовка и собственно программирование. Команда выполняется аналогично стиранию, но во втором шинном цикле передается адрес и данные программируемой ячейки, а последующая выдержка должна составлять не менее 10 мкс.
♦
Program Verify
— верификация программирования (аналогично верификации стирания), обычно следующая после команды программирования. Между шинными циклами команды верификации должна быть пауза не менее 6 мкс. Алгоритм быстрого программирования (Quick-Pulse Programming) предусматривает формирование внутреннего цикла программирования длительностью 10 мкс с последующей верификацией. В случае несовпадения результата выполняется повторное программирование (до 25 раз для каждой ячейки), а если и это не помогает — фиксируется отказ микросхемы.
♦
Reset
— команда сброса, прерывающая команду программирования или стирания. Эта команда не меняет содержимое памяти; после нее требуется подача другой действительной команды.
По включении питания внутренний регистр команд обнуляется, что соответствует команде чтения, и микросхема работает как обычная микросхема PROM или EPROM. Это позволяет устанавливать микросхемы флэш-памяти вместо EPROM аналогичной емкости. При подаче на вход VPP низкого напряжения (0–6,5 В) стирание и программирование невозможны, и микросхема ведет себя как обычная EPROM.
Микросхемы второго поколения секторированы — ячейки группируются в блоки, допускающие независимое стирание (асимметричное разбиение — Boot Block и симметричное — Flash File). Длительная операция стирания одного блока может прерываться для считывания данных других блоков, что значительно повышает гибкость и производительность устройства. Микросхемы имеют более сложный внутренний управляющий автомат и в них введен регистр состояния, что позволяет разгрузить внешний процессор и программу от забот по отслеживанию длительности операций программирования и стирания, а также упростить эти процедуры.
В отличие от микросхем первого поколения, в шинном цикле записи адрес и данные фиксируются по положительному перепаду
WE#
. Низкий уровень дополнительного управляющего сигнала RP#
(в первых версиях обозначался как PWD#
) предназначен для перевода микросхемы в режим с минимальным потреблением. В этом режиме модификация содержимого памяти невозможна. Соединение этого вывода в нормальном режиме (когда не требуется перезапись Boot-блока) с системным сигналом RESET#
предохраняет микросхему от выполнения ложных команд, которые могут появиться в процессе подачи питания.
Внутренние операции стирания и программирования выполняются после посылки соответствующих кодов во внутренний регистр команд. Команды приведены в табл. 7.26. Как и в первом поколении, этот регистр для большинства команд безадресный, но команды программирования и стирания посылаются по требуемому адресу ячейки (блока). Отработка операций внутренним управляющим автоматом отображается соответствующими битами регистра состояния
SR
(Status Register), по значению которых внешняя программа может получить информацию о результате выполнения и возможности посылки следующих команд. Чтение регистра SR
выполняется по специальной команде; есть и команда его очистки. Назначение бит регистра состояния описано ниже.
♦
SR.7
— WSMS
(Write State Machine Status) — состояние управляющего автомата:
• 0 — Busy (занят операцией стирания или программирования);
• 1 — Ready (свободен).
♦
SR.6
— ESS
(Erase Suspend Status) — состояние операции стирания:
• 0 — стирание завершено или выполняется;
• 1 — стирание приостановлено.
♦
SR.5
— ES
(Erase Status) — результат стирания блока:
• 0 — блок стерт успешно;
• 1 — ошибка стирания.
♦
SR.4
— PS
(Program Status) — результат программирования байта:
• 0 — байт записан успешно;
• 1 — ошибка записи.
♦
SR.3
— VPPS
(VPP Status) — состояние VPP во время программирования или стирания:
• 0 — напряжение было в норме;
• 1 — зафиксировано понижение напряжения, и операция прервана.
♦
SR[2:0]
— зарезервированы.
Таблица 7.26. Команды микросхем флэш-памяти Intel второго поколения
Команда | Число циклов шины | Первый цикл шины¹ | Второй (третий) цикл шины¹ | ||||
---|---|---|---|---|---|---|---|
R/W | Адрес | Данные | R/W | Адрес | Данные | ||
Read Array/Reset | 1 | W | X | FFh | - | - | _ |
Read ID (D_Id) | 3 | W | X | 90h | R | 0(1) | M_Id |
Read Status Register | 2 | W | X | 70h | R | X | SRD |
Clear Status Register | 1 | W | X | 50h | - | - | - |
Erase Setup/Erase Confirm | 2 | W | BA | 20h | W | BA | D0h |
Erase Suspend/Erase Resume | 2 | W | X | B0h | W | X | D0h |
Program Setup/Program | 2 | W | PA | 40h | W | PA | PD |
Alternate Program Setup/Program² | 2 | W | PA | 10h | W | PA | PD |
¹ Здесь X обозначает несущественный адрес, M_Id и D_Id — идентификаторы производителя и устройства, SRD — данные, считанные из регистра состояния, PA и PD — адрес и данные программируемой ячейки, BA — адрес блока.
² Альтернативный код команды программирования; доступен для микросхем емкостью 2, 4 и 8 Мбит.
Ниже описано назначение команд.
♦
Read Array
/Reset
— чтение массива памяти (перевод в режим, совместимый с EPROM) и прерывание операций стирания и программирования.
♦
Read ID
— чтение идентификаторов производителя и устройства.
♦
Read Status Register
— чтение регистра состояния.
♦
Clear Status Register
— сброс регистра состояния.
♦
Erase Setup/Erase Confirm
— подготовка и стирание блока. В отличие от микросхем первого поколения, все внутренние операции, необходимые для стирания (обнуление ячеек блока, стирание и верификация), выполняются автоматически. При получении команды в регистре состояния устанавливается признак занятости (SR.7
=0) и любая шинная операция чтения микросхемы будет передавать данные этого регистра. Внешняя программа, периодически опрашивая регистр состояния, дожидается окончания выполнения стирания (когда SR.7
=1). Результат стирания определяется по значению бит 3, 4, 5 (их нулевое значение соответствует успешному выполнению операции).
♦
Erase Suspend
/Erase Resume
— приостановка/продолжение стирания. Операцию стирания блока (как самую длительную) можно приостановить для чтения данных из других блоков. После выполнения команды Erase Suspend
(код B0h) необходимо дождаться признака приостановки стирания (SR.6
=1), после чего, подав команду Read Array
, можно считывать данные другого блока. По окончании считывания подается команда Erase Resume
(код D0h), которая продолжает процесс стирания и снова переводит микросхему в режим чтения регистра состояния.
♦
Program Setup
/Program
— подготовка и программирование ячейки. Эта команда выполняется аналогично подготовке и выполнению стирания, но не может быть приостановлена. Команда выполняет сразу и программирование, и верификацию.
Команды стирания блока и программирования можно подавать, только когда управляющий автомат свободен (бит
SR.7
=1). Во время этих операций микросхема следит за уровнем напряжения VPP, и, если оно понижается до порога VPPLK) этот факт регистрируется в регистре состояния и операция прерывается. Также операция прерывается при понижении напряжения питания VCC до 2,5 В.
При считывании регистра состояния его мгновенное значение фиксируется по спаду сигнала
СЕ#
или ОЕ#
(самого позднего из них в шинном цикле считывания).
Программирование и стирание Boot-блока отличаются от операций с другими блоками тем, что для них требуется подача высокого потенциала VHH (не ТТЛ, а +12 В) на вход
PWD#
перед выдачей команды стирания или программирования и удержание его до успешного завершения операции. Альтернативный способ — подача такого же потенциала, но на вход ОЕ#
на время пар шинных циклов записи команд стирания или программирования. Попытка программирования Boot-блока без выполнения этих условий не удается, а в регистре состояния одновременно устанавливаются единичные значения бит ES
и PS
, что индицирует попытку модификации защищенного блока.
Микросхемы Flash-file организованы в виде набора одинаковых блоков, равноправных (симметричных) по защите (Symmetrical Architecture, SA), Защита от модификации для 28F008SA может осуществляться только для всей микросхемы подачей низкого напряжения на вход VPP. По интерфейсу и командам микросхемы совпадают с микросхемами Boot Block (исключая специфику Boot-блока).
Архитектура микросхем 28F016SA существенно изменена, что значительно повышает производительность программирования (до 28,6 Мбайт/с в пакетном режиме) и обеспечивает поблочную защиту. Микросхема имеет два буфера данных для записи по 256 Кбайт. Флэш-память организована как 32 блока по 64 Кбайт, допускающих однобайтное или двухбайтное обращение. С каждым блоком связан собственный 8-битный регистр состояния блока
BSRx
(Block Status Register). Адреса регистров смещены относительно начального адреса блока на 2 или 1 для режимов обращения x8 или x16 соответственно. Назначение бит BSR
описано ниже.
♦
BSR.7
— BS
(Block Status) — состояние блока:
• 1 — готов;
• 0 — занят.
♦
B5R.6
— BLS
(Block-Lock Status) — состояние защиты блока:
• 1 — программирование и стирание запрещены;
• 0 — блок не защищен.
♦
BSR.5
— BOS
(Block Operation Status) — состояние операции с блоком:
• 1 — операция завершена безуспешно;
• 0 — операция успешно завершена или выполняется.
♦
BSR.4
— BOAS
(Block Operation Abort Status) — состояние отмены операции с блоком:
• 1 — операция отменена;
• 0 — операция не отменялась.
♦
BSR.3
— QS
(Queue Status) — состояние очереди:
• 1 — очередь заполнена;
• 0 — очередь доступна.
♦
BSR.2
— VPPS
(VPP Status) — состояние VPP:
• 1 — обнаружен низкий уровень, операция прервана;
• 0 — VPP в норме.
♦
BSR[1:0]
— зарезервированы.
Глобальный регистр состояния
GSR
(Global Status Register) несет информацию о состоянии микросхемы в целом. К GSR
можно обращаться по адресу, смещенному относительно начального адреса любого блока на 4 или 2 для режимов обращения x8 или x16 соответственно. Назначение бит GSR
описано ниже.
♦
GSR.7
— WSMS
(Write State Machine Status) — состояние автомата записи (и завершенности внутренних операций):
• 1 — занят;
• 0 — свободен.
♦
GSR.6
— OSS
(Operation Suspend Status) — состояние приостановки операции:
• 1 — операция приостановлена;
• 0 — операция выполняется или завершена.
♦
GSR.5
— DOS
(Device Operation Status) — состояние операции (копирует бит регистра состояния текущего блока):
• 1 — операция завершена неудачно;
• 0 — операция успешно завершена или выполняется.
♦
GSR.4
— DSS
(Device Sleep Status) — состояние ожидания:
• 1 — ожидание (Sleep);
• 0 — нормальный режим.
♦
GSR.3
— QS
(Queue Status) — состояние очереди:
• 1 — очередь заполнена;
• 0 — очередь доступна.
♦
GSR.2
— PBAS
(Page Buffer Available Status) — состояние буферов записи:
• 1 — есть свободный буфер;
• 0 — нет свободного буфера.
♦
GSR.1
— PBS
(Page Buffer Status) — состояние выбранного буфера записи:
• 1 — выбранный буфер свободен;
• 0 — буфер занят операцией с WSM.
♦
GSR.0
— PBSS
(Page Buffer Select Status) — номер выбранного буфера:
• 1 — выбран буфер 1;
• 0 — выбран буфер 0.
Для сохранения программной совместимости имеется безадресный регистр
CSR
(Compatible Status Register), полностью совпадающий с регистром состояния 28F008SA и микросхем с архитектурой Boot Block. Все команды этих микросхем доступны. Введены новые команды (табл. 7.27), обеспечивающие расширение функций. Ниже перечислены дополнительные возможности микросхем.
♦ Буферированное страничное программирование. Кроме обычного побайтного или двухбайтного программирования возможно быстрое заполнение буфера шинными циклами записи. Далее переписывание его содержимого (всего или фрагмента) во флэш-память выполняется одной командой. Содержимое буфера может быть считано после подачи соответствующей команды.
♦ Двухбайтное программирование при 8-битном использовании.
♦ Поддержка очереди команд позволяет при наличии свободного места в очереди подавать последующие команды стирания или программирования, не дожидаясь освобождения автомата WSM. Признак готовности WSM установится только после выполнения всех команд очереди.
♦ Автоматическая запись из буфера во флэш-массив во время стирания другого блока. Программная защита позволяет для любого блока установить бит защиты в специальную энергонезависимую область. Запись и стирание защищенного блока может осуществляться только после снятия общей защиты записи по сигналу
WP#
. Сброс бита защиты блока осуществляется только при его успешном стирании или перезаписи.
♦ Стирание всех незащищенных блоков может выполняться одной командой.
♦ Программирование использования сигнала
RY/BY#
. Возможно разрешение отображения бита готовности глобального регистра состояния, подачи импульсного сигнала по завершении программирования или стирания (на выбор), а также запрет его формирования.
♦ Перевод микросхемы в режим ожидания (Sleep) с пониженным потреблением В этом режиме возможно считывание состояния и получение команд.
Таблица 7.27. Дополнительные команды микросхем 28F016SA
Команда | Первый цикл шины | Второй цикл шины | Третий цикл шины | ||||||
---|---|---|---|---|---|---|---|---|---|
R/W | Адрес¹ | Данные² | R/W | Адрес¹ | Данные² | R/W | Адрес¹ | Данные² | |
Read Extended Status Register (чтение дополнительных регистров) | W | X | xx71h | R | RA | GSRD BSRD | - | - | - |
Page Buffer Swap (смена буфера) | W | X | xx72h | - | - | - | - | - | - |
Read Page Buffer (чтение буфера) | W | X | xx75h | R | РВА | PBD | - | - | - |
Single Load to Page Buffer (одиночная запись в буфер) | W | X | xx74h | W | РВА | PBD | - | - | - |
Sequential Load to Page Buffer x8/x16 (последовательная запись в буфер) | W | X | xxE0h | W | X | BCL/WCL³ | W | X | BCH/WCH³ |
Page Buffer Write to Flash x8/х16 (перепись буфера в массив) | W | X | xx0Ch | W | A0 | BC(LH)/WCL³ | W | X | BC(HL)/WCH³ |
Two-Byte Write x8 (двухбайтное программирование в режиме x8) | W | X | xxFBh | W | A0 | WD(L,H)³ | W | WA | WD(H,L)³ |
Lock Block/Confirm (защита блока) | W | X | xx77h | W | BA | xxD0h | - | - | - |
Upload Status Bits/Confirm (выгрузка состояния блока в GSR) | W | X | xx97h | W | X | xxD0h | - | - | - |
Upload Device Information (выгрузка информации об устройстве) | W | X | xx99h | W | X | xxD0h | - | - | - |
Erase All Unlocked Blocks/Confirm (стирание всех незащищенных блоков) | W | X | xxA7h | W | X | xx00h | - | - | - |
RY/BY# Enable to Level-Mode (разрешение отображения GSR.7 потенциалом) | W | X | xx96h | W | X | xx01h | - | - | - |
RY/BY# Pulse-On-Write (импульс по окончании программирования) | W | X | xx96h | W | X | xx02h | - | - | - |
RY/BY# Pulse-On-Erase (импульс по окончании стирания) | W | X | xx96h | W | X | xx03h | - | - | - |
RY/BY# Disable (запрет сигнала RY/BY#) | W | X | xx96h | W | X | xx04h | - | - | - |
Sleep (режим ожидания) | W | X | xxF0h | - | - | - | - | - | - |
Abort (отмена операции) | W | X | xx80h | - | - | - | - | - | - |
¹ BA = Block Address — адрес блока, РВА = Page Buffer Address — адрес внутри буфера, RA = Extended Register Address — адрес дополнительного регистра (BSRx или GSR), WA = Write Address — адрес во флэш-массиве. А0 указывает на порядок следования байт в режиме x8 (при низком уровне BYTE#): 0 = сначала младший, затем старший; 1 = наоборот.
² AD = Array Data — данные из массива, PBD = Page Buffer Data — данные буфера, WD (L,H) = Write Data (Low, High) — данные для записи в массив, BSRD = BSR Data — информация регистра состояния блока, GSRD = GSR Data — информация глобального регистра состояния.
³ WC (L,H) = Word Count (Low, High) — счетчик слов. WCL=0 соответствует записи одного слова. Для буфера 256 байт WCH=0. BC (L,H) = Byte Count (Low, High) — счетчик байт. WCL=0 соответствует записи одного байта. Для буфера 256 байт WCH=0.
Микросхема 28F032SA представляет собой два параллельно соединенных кристалла 28F016SA в одном корпусе. Входы
СЕ#
одного из них соединены с выводами СЕ0#
и СЕ1#
, второго — с СЕ0#
и СЕ2#
.
Третье поколение — современные микросхемы, выполненные по технологии SmartVoltage, допускают стирание и программирование при напряжении VPP как 12 В, так и 5 В. В последнем случае эти операции занимают больше времени. Кроме того, операции чтения возможны при пониженном (3,3 и даже 2,7 В) напряжении питания VCC, при этом снижается потребление, но увеличивается время доступа.
Для управления защитой данных введен логический сигнал
WP#
(Write Protect). При его высоком уровне программирование и стирание защищенных блоков выполняются так же, как и остальных. При низком уровне WP#
модификация защищенных блоков возможна только при наличии высокого (12 В) напряжения на входе RP#
.
Для полной защиты от стирания и программирования на вход VPP должен подаваться низкий логический уровень (или 0 В), а не 5 В, как у микросхем с программированием напряжением 12 В.
Настройка (оптимизация потребления и быстродействия) происходит по уровню напряжения на выводе VCC по включении питания, переход на другое значение должен производиться через выключение питания.
Фирмой AMD выпускается несколько семейств микросхем флэш-памяти. Первые из них были близки по характеристикам к флэш-памяти Intel первого поколения(Bulk Erase, стирание и программирование 12 В): это Am28F256/512/010/020. В отличие от аналогичных микросхем Intel, Am28F256/512 не имели стоп-таймера, что требовало точной выдержки при программировании и стирании. Следующим этапом были микросхемы Am28F256A/512A/010A/020A со встроенным алгоритмом программирования, отличающимся от алгоритма микросхем Intel второго поколения как последовательностью команд, так и способом определения момента окончания операций. Для защиты от случайного выполнения команды состоят из 3–6 шинных циклов, причем для них существенен и адрес (табл. 7.28). Состояние выполнения операций стирания или программирования определяется по результату данных, полученных в шинном цикле чтения по адресу ячейки, участвующей в операции (а не регистра состояния, как у Intel). Для определения окончания операций может использоваться метод Data# Polling или Toggle Bit. Метод Data# Polling основан на анализе бита D7 считанных данных. В начале выполнения внутреннего цикла он устанавливается инверсным по отношению к тому, что должно быть записано в ячейку. По успешном окончании операции он принимает желаемое значение (при стирании — 1). Метод Toggle Bit основан на анализе бита
D6
, который при каждом шинном цикле считывания во время выполнения операции меняет свое значение на противоположное. По окончании операции он остановится в каком-либо состоянии, при этом об успешности можно судить по биту 7. Единичное значение бита D5
— Exceeded Timing Limits — указывает на превышение допустимого времени выполнения операции.
Таблица 7.28. Команды флэш-памяти Am29F010
Команда | Reset/Read | Autoselect | Byte Program | Chip Erase | Sector Erase | |
---|---|---|---|---|---|---|
Количество циклов | 3 | 3 | 4 | 6 | 6 | |
1-й цикл | Addr | 5555h | 5555h | 5555h | 5555h | 5555h |
Data | AAh | AAh | AAh | AAh | AAh | |
2-й цикл | Addr | 2AAAh | 2AAAh | 2AAAh | 2AAAh | 2AAAh |
Data | 55h | 55h | 55h | 55h | 55h | |
3-й цикл | Addr | 5555h | 5555h | 5555h | 5555h | 5555h |
Data | F0h | 90h | A0h | 80h | 80h | |
4-й цикл | Addr | - | XX00h/XX01h | PA¹ | 5555h | 5555h |
Data | - | 01h/20h | PD² | AAh | AAh | |
5-й цикл | Addr | - | - | - | 2AAAh | 2AAAh |
Data | - | - | - | 55h | 55h | |
6-й цикл | Addr | - | - | - | 5555h | SA³ |
Data | - | - | - | 10h | 30h |
¹ PA = адрес программируемой ячейки.
² PD = данные для записи в программируемую ячейку.
³ SA = адрес стираемого сектора (значимы биты A16, A15 и А14).
Микросхемы семейства Am29Fxxx выполняют все операции при одном питающем напряжении 5 В и имеют секторированную структуру (Sector Erase), симметричную (аналогично Flash File) или несимметричную (Boot Block), с верхним (T) и нижним (В) положением Boot-блока. С помощью программатора каждый сектор может быть защищен от модификации в целевой системе (в отличие от Intel способ установки и снятия защиты фирмой AMD широко не раскрывается). По расположению выводов и интерфейсу микросхемы соответствуют стандарту JEDEC для флэш-памяти с одним питающим напряжением. Микросхемы позволяют выполнять одновременное стирание группы секторов. Все эти микросхемы, кроме Am29F010, имеют возможность приостановки стирания сектора (Erase Suspend) для выполнения чтения других секторов, a Am29F080/016 позволяют еще и программировать байты во время приостановки стирания.
В командах значение бит
A15
, A16
существенно только при задании адреса ячейки. Ниже описано назначение команд.
♦
Reset
/Read
— сброс и перевод в режим считывания массива. Производится автоматически по включении питания и при получении некорректной команды (или адреса) в цепочке.
♦
Autоsеlесt
— чтение кодов идентификации производителя (А
=0), устройства (А
=1) или состояния защиты сектора (биты A16
-А14
задают адрес сектора, A2
=1, остальные биты адреса — нулевые). Результат считывания состояния защищенного сектора — 01h, незащищенного — 00h. Идентификаторы и состояние защиты могут быть считаны и путем подачи высокого напряжения на вход А9
в шинном цикле считывания.
♦
Byte Program
— программирование байта. После четвертого цикла шины начинается внутреннее выполнение программирования, при этом чтение по адресу программируемой ячейки выводит биты состояния.
♦
Chip Erase
— стирание всех незащищенных секторов. На время выполнения стирания чтение по любому адресу (кроме адресов, принадлежащих защищенным секторам) выводит биты состояния.
♦
Sector Erase
— стирание сектора или группы секторов. Стирание начинается через 80 мкс после окончания последнего шинного цикла цепочки. До этого момента можно посылать цепочки команд стирания других секторов, выполнение начнется через 80 мкс после окончания последней цепочки. Если среди указанных секторов имеется защищенный, его стирание не выполняется. На время выполнения стирания чтение по адресу любого из стираемых секторов (кроме защищенных) выводит биты состояния. Бит DQ3
— Sector Erase Timer — указывает на начало выполнения стирания сектора (очередную последовательность команд стирания сектора можно начинать, пока бит 3=0).
Следующим этапом стала секторированная флэш-память Am29LVxxx с одним питающим напряжением (3,0 В) для всех операций. У этих микросхем защита любого сектора также устанавливается с помощью программатора стандартной микросхемы EPROM, а также возможно временное снятие защиты в целевой системе. Кроме программной индикации окончания операции (биты 5–7, считанные по адресу ячейки), имеется и аппаратная (сигнал
RY
/BY#
). Также имеется сигнал аппаратного сброса, переводящий в режим чтения.
Вышеперечисленные микросхемы имеют традиционную архитектуру NOR. От них значительно отличается микросхема Am30LV0064D — 64 Мбит (8 М×8) с архитектурой UltraNAND, обеспечивающей быстрый последовательный доступ к данным выбранной страницы. Каждая страница имеет 512 байт данных и 16 дополнительных байт, используемых, например, для хранения ЕСС-кода. Для выбора страницы при чтении (загрузки во внутренний 528-байтный регистр) требуется около 7 мкс, после чего данные считываются последовательно со скоростью до 20 Мбайт/с (50 нс/байт). Таким образом, среднее время на чтение одного байта составляет всего 65 нс. Для записи данные (страница полностью или частично) загружаются в регистр с той же скоростью, после чего запись их в массив хранящих ячеек требует всего 200 мкс. Таким образом, среднее время на запись одного байта составляет всего 430 нс — в 20 раз быстрее обычной (NOR) флэш-памяти (скорость записи 2,3 Мбайт/с). Стирание выполняется блоками по 8 Кбайт за 2 мс (в обычной — 600 мс). Микросхема питается от 3 В. Планируется достижение объема микросхемы до 1 Гбит. Надежность хранения — 10 лет, 104 циклов безошибочного программирования, более 106 циклов программирования с коррекцией ошибок. Применение — «твердые диски», цифровые камеры, диктофоны и т. п.
Микросхемы флэш-памяти выпускаются многими фирмами. Они различаются по организации, интерфейсу, напряжению питания и программирования, методам защиты и другим параметрам. Лидеры в области разработки и производства флэш-памяти — фирмы AMD, Fujitsu Corporation, Intel Corporation и Sharp Corporation летом 1996 года приняли спецификацию CFI (Common Flash Memory Interface Specification), обеспечивающую совместимость разрабатываемого программного обеспечения с существующими и разрабатываемыми моделями флэш-памяти. Эта спецификация определяет механизм получения информации о производителе, организации, параметрах и возможных алгоритмах программирования микросхем флэш-памяти. Для этого микросхемы флэш-памяти должны поддерживать команду опроса
QUERY
. В первом шинном цикле в микросхему по адресу 55h посылается код 98h (микросхема может и игнорировать адрес, «отзываясь» только на код данных 98h). Во втором шинном цикле, адресованном к этой микросхеме, выполняется чтение данных идентификационной структуры (на шину адреса микросхемы подается адрес интересующего байта структуры). Этими парами циклов структура может быть считана в произвольном порядке. Идентификационная структура содержит:
♦ ключ-признак наличия структуры — цепочка символов «QRY»;
♦ идентификатор (2 байта) первичного набора команд и интерфейса программирования;
♦ указатель на таблицу параметров для программирования (и саму таблицу);
♦ идентификатор, указатель и таблицу параметров альтернативного набора команд и интерфейса (если имеется);
♦ минимальные и максимальные значения напряжений питания (основного и программирующего);
♦ значение тайм-аутов для операций стирания (блока и всей микросхемы) и записи (байта, слова, буфера);
♦ объем памяти;
♦ максимальное число байтов для многобайтной записи;
♦ описания независимо стираемых блоков.
Для перевода в режим чтения массива микросхемы должны воспринимать команду чтения массива
Read Array
— запись кода FFh (F0h) по любому адресу в микросхеме.
Для большинства изделий справедливы тенденции, описанные при рассмотрении микросхем Intel и AMD, а именно — повышение объема, снижение напряжений питания и потребляемой мощности, повышение производительности и упрощение внешнего интерфейса для операций стирания и программирования. По интерфейсу программирования микросхемы, у которых в начальной части обозначения стоит число «28», как правило, близки к флэш- памяти Intel, а с числом «29» — к флэш-памяти AMD.
Микросхемы с буферированным программированием или страничной записью (Fast Page Write) могут не иметь в своей системе команд отдельной операции стирания сектора. Внутренняя операция стирания (и предварительного обнуления сектора) выполняется при страничном программировании.
Для защиты от случайного выполнения ключевые последовательности команд содержат от 2 до 6 шинных циклов, причем у них может быть важен и адрес (как в микросхемах AMD). Методы защиты секторов имеют различную как программную, так и аппаратную реализацию. Для временного снятия защиты используют различные способы, одним из которых является ключевая последовательность семи шинных циклов чтения.
Микросхемы флэш-памяти Micron совместимы с Intel и обозначаются аналогично, но начинаются с признака MT28F. Среди них есть и особенные, например: MT28F321P2FG — 2 М×16 Page Flash Memory, MT28F322D18FH — 2 М×16 Burst Flash Memory.
Фирма Silicon Storage Technology выпускает разнообразные микросхемы флэш-памяти с одним напряжением питания для всех операций. Их свойства можно определить по обозначению вида
SST xx YY zzz
— ttt
, где xx
— семейство:
♦ 28 — побайтное программирование, посекторное стирание;
♦ 29 — страничное программирование с прозрачным стиранием (команда стирания сектора отсутствует, внутренняя операция выполняется автоматически перед записью страницы в массив).
Элемент
YY
задает функциональный тип и напряжение питания:
♦ ЕЕ — EEPROM-совместимые, выполнение одной инструкции, VCC = 5 В;
♦ LE — то же, что и ЕЕ, VCC = 3 В;
♦ VE — то же, что и ЕЕ, VCC = 2,7 В;
♦ SF — операции Super Flash Command Register, VCC = 5 В;
♦ LF — то же, что и SF, VCC = 3 В;
♦ VF — то же, что и SF, VCC = 2,7 В;
♦ DM — Disk Media (для флэш-дисков, требует внешнего контроллера), VCC = 5 В;
♦ LM — то же, что и DM, VCC = 3 В;
♦ VM — то же, что и DM, VCC = 2,7 B;
♦ PC — PCMCIA (интерфейс и протоколы), VCC = 5 В.
Элемент
zzz
задает объем микросхемы:
♦ 512 — 512 Кбит (64 К×8);
♦ 010 — 1 Мбит (128 К×8);
♦ 040 — 4 Мбит (512 К×8);
♦ 080 — 8 Мбит (1 М×8);
♦ 016 — 16 Мбит (2 М×8);
♦ 032 — 32 Мбит (4 М×8).
Элемент
ttt
задает время доступа при чтении.
Микросхемы SST29EE010, 29LE010 и 29VE010, часто применяемые в качестве носителя флэш-BIOS, организованы как 1024 страницы по 128 байт с программной и аппаратной защитой. Каждая страница может быть защищена независимо от других. Временные диаграммы стирания и программирования, а также необходимое напряжение программирования генерируются внутри микросхемы. Окончание операции определяется по алгоритму Toggle Bit или Data# Polling.
Аналогичные параметры имеют микросхемы 29ЕЕ011, 29LE011, 29VE011 фирмы Winbond.
Для микросхем энергонезависимой памяти малого объема, от которых не требуется высокой производительности обмена данными, часто применяют последовательные интерфейсы. Это позволяет упаковывать микросхемы памяти любого объема в корпуса, имеющие минимальное число выводов (рис. 7.23, 7.24, табл. 7.29). С таким интерфейсом выпускаются микросхемы EEPROM, FRAM и флэш-памяти. Микросхемы EEPROM и флэш-памяти выполняют внутренние операции записи автономно; о завершении выполнения операции можно судить по результатам опроса ее состояния. Более сложные микросхемы имеют блочную организацию и средства управления доступом к каждому блоку с помощью программируемых регистров состояния и внешнего вывода управления записью (программированием). Микросхемы FRAM выполняют все операции на скорости интерфейса (на то они и RAM). Существуют модификации микросхем, позволяющие блокировать запись данных пользователем в определенную область (или всю микросхему, что превращает ее в ROM). Вывод управления защитой у разных типов микросхем функционирует и называется по-разному:
WP#
— Write Protect, WC
— Write Control, PP
— Programm Protect. Для выбора микросхемы используются либо входы задания внутреннего адреса А[0:2]
, либо сигнал выборки CS#
, с помощью которого контроллер может обратиться к одному из требуемых устройств. Для упрощения внешних схем могут использоваться и несколько сигналов выборки S[0:2]
, один из которых (S1
) иногда инвертирован.
Рис. 7.23. Назначение выводов микросхем EEPROM с интерфейсом I²C: а — 24Схх, б — 24F016, в — 24F128, г — X76F041
Рис. 7.24. Назначение выводов микросхем FRAM: а — FM24C256, б — FM25640
Таблица 7.29. Популярные микросхемы памяти с последовательным интерфейсом
Микросхема | Организация | Рисунок | Примечание |
---|---|---|---|
24С001, 24С01 | 16×8, 128×8 | 7.23, а | I²C. Выводы 1, 2, 3, 7 = NC |
24С02, 24С164 | 256×8, 2 К×8 | 7.23, а | I²C |
24F016 | 2 К×8 | 7.23, б | I²C |
24F128 | 16 К×8 | 7.23, в | I²C |
X76F041 | 512×8 | 7.23, г | I²C |
FM24C04, FM24C16, FM24C64, FM24C256 | 512×8, 2 К×8, 8 К×8, 32 К×8 | 7.24, а | I²C |
FM25040, FM25160, FM25256 | 512×8, 2 К×8, 64 К×8 | 7.24, б | SPI |
Микросхемы EEPROM 24C02 с интерфейсом I²C объемом 256 байт применяются для последовательной идентификации модулей DIMM-168 второго поколения, DIMM-184 и SODIMM-144.
Кроме обычных устройств энергонезависимой памяти с интерфейсом I²C выпускают и специализированные устройства защиты (Security Devices). Например, микросхема X76F041, представляющая собой 4 блока памяти по 128 байт, имеет 64-битный регистр пароля, доступный только по записи. Обращение к микросхеме возможно только при предъявлении правильного пароля (который считать невозможно в принципе). Программируемый управляющий регистр (тоже энергонезависимый) позволяет для каждого блока установить свой режим доступа (полный доступ, только чтение, возможность только обнуления бит при записи, доступ только по предъявлении пароля конфигурации). Кроме того, есть возможность включения режима саморазрушения после превышения количества попыток доступа с неверным паролем. Такие устройства могут применяться в аппаратных ключах, защищающих программные средства от несанкционированного исполнения и пиратского копирования.
Последовательные интерфейсы памяти имеются на специальных устройствах- программаторах и копировщиках; их имеют многие модели микроконтроллеров, а там, где нет специальных аппаратных средств, они могут быть легко реализованы программно, занимая несколько бит портов общего назначения. В IBM PC может присутствовать внутренний интерфейс I²C для считывания последовательных идентификаторов модулей памяти (в виде шины SMBus, см. п. 11.1.3). Последовательный интерфейс памяти используется во многих микросхемах программируемой логики (например, в популярных устройствах FPGA фирмы Altera), применяемых в различных устройствах, включая карты расширения PC. Эти микросхемы при инициализации (по включению питания, сбросу) сами «засасывают» описание своей конфигурации (или программное обеспечение) с рядом стоящей микросхемы энергонезависимой памяти. Внешние последовательные интерфейсы, в которых нуждаются разработчики и изготовители электронной аппаратуры с последовательной памятью, могут быть реализованы программно, с использованием несложных адаптеров для LPT-порта.
Для микросхем памяти часто применяют интерфейсы I²C, SPI (Microwire) и иные «безымянные», называемые просто 2-, 3- и 4-проводными (считаются только сигнальные линии, общий провод подразумевается). Некоторые из этих интерфейсов являются собственными изобретениями разработчиков микросхем памяти (необходимые сведения обычно имеются в информационных листках), здесь же остановимся на наиболее популярных.
Широко распространенный двухпроводный интерфейс I²C (см. п. 11.1.1) обеспечивает невысокую скорость передачи (до 100 или 400 Мбит/с).
Диаграмма обмена данными с памятью по интерфейсу I²C приведена на рис. 7.25. Выполнив условие Start, ведущее устройство передает байт, содержащий адрес устройства, и признак операции
RW
и ожидает подтверждения. При операции записи следующей посылкой от ведущего устройства будет 8-битный адрес записываемой ячейки, а за ней — байт данных (для микросхем объемом памяти более 256 байт адрес ячейки посылается двумя байтами). Получив подтверждения, ведущее устройство завершает цикл условием Stop, а адресованное устройство может начать свой внутренний цикл записи, во время которого не реагирует на сигналы интерфейса. Ведущее устройство может проверять готовность устройства к следующей операции посылкой команды записи (байт адреса устройства) и анализом бита подтверждения, формируя затем условие Stop. Если устройство откликнулось битом подтверждения, значит, оно завершило внутренний цикл и готово к следующей операции.
Рис. 7.25. Диаграмма обмена с памятью по интерфейсу I²C
Операция считывания инициируется так же, как и запись, но с признаком
RW
=1. Возможно чтение по заданному адресу, по текущему адресу или последовательное. Текущий адрес хранится во внутреннем счетчике микросхемы памяти; он содержит увеличенный на единицу адрес ячейки, участвовавшей в последней операции. Получив команду чтения, устройство дает бит подтверждения и посылает байт данных, соответствующий текущему адресу. Контроллер может ответить подтверждением, тогда устройство пошлет следующий байт (последовательное чтение). Если на принятый байт данных контроллер ответит условием Stop, операция чтения завершается. Начальный адрес для считывания контроллер задает фиктивной операцией записи, в которой передается адрес устройства и адрес ячейки, а после подтверждения приема адреса ячейки формируется повторный старт (Sr
) и передается адрес устройства, но уже с указанием на операцию чтения. Так реализуется считывание произвольной ячейки (или последовательности ячеек). Отметим, что спецификация на интерфейс I²C не оговаривает правил модификации адреса данных при последовательных обращениях — их определяет разработчик устройства в соответствии с его функциями. Для памяти вышеописанный автоинкремент адреса упрощает последовательные обращения.
Заметим, что последовательная память малого объема может использовать и упрощенный вариант интерфейса, правда, и не называемого I²C. Так, например, память Atmel AT24C01 объемом 128 байт используют упрощенную систему адресации: адрес ячейки передается вместо 7-битного адреса устройства I²C, а в остальном операции записи и чтения выполняются по тем же правилам. При этом шина вырождается в двухточечный интерфейс, но в ряде случаев этого и достаточно. Специальные адреса здесь не требуются, так что все 128 значений 7-битного адреса доступны для адресации памяти. Микросхемы той же фирмы объемом 256 байт используют вышеприведенный механизм адресации устройств I²C с возможностью объединения до 8 устройств. А в микросхемах объемом 512, 1024 и 2048 байт 1, 2 или все 3 бита номера устройства в адресе отбираются под адрес 256-байтной страницы памяти. Память большего объема использует 7-битную адресацию устройств, обычную для I²C, а адрес ячейки задается последующими двумя байтами (сначала старшим, затем младшим).
Трехпроводный интерфейс SPI (см. п. 11.3) обеспечивает скорость передачи до 5 Мбит/с. Обмен с микросхемой, выбранной сигналом
CS#
, начинается с подачи по линии SI 8-битного кода команды. В команде записи за кодом команды следует адрес ячейки, за которым следуют байты данных. Команда чтения начинается так же, но после приема адреса в следующем же такте по линии SO
начинается вывод данных. Есть и специальные безадресные команды, например, разрешение/запрет записи и стирания. Микросхемы памяти с SPI имеют регистр состояния, доступ к которому обеспечивается специальными командами. В этом регистре отражается состояние управляющего автомата записи (занят/свободен), в нем же могут присутствовать и биты управления защитой записи (в регистр состояния возможна и запись). Состав регистров и набор команд зависит от модели устройства.