Аппаратные интерфейсы ПК. Энциклопедия

Гук Михаил Юрьевич

Глава 7

Интерфейсы электронной памяти

 

 

Электронная память применяется практически во всех подсистемах PC, выступая в качестве оперативной памяти, кэш-памяти, постоянной памяти, полупостоянной памяти, буферной памяти, внешней памяти. В этой главе описаны интерфейсы микросхем и модулей динамической, статической и энергонезависимой памяти.

 

7.1. Динамическая память

 

Динамическая память — DRAM (Dynamic RAM) — получила свое название от принципа действия ее запоминающих ячеек, которые выполнены в виде конденсаторов, образованных элементами полупроводниковых микросхем. При отсутствии обращения к ячейке со временем за счет токов утечки конденсатор разряжается и информация теряется, поэтому такая память требует периодической подзарядки конденсаторов (обращения к каждой ячейке) — память может работать только в динамическом режиме. Этим она принципиально отличается от статической памяти, реализуемой на триггерных ячейках и хранящей информацию без обращений к ней сколь угодно долго (при включенном питании).

Запоминающие ячейки микросхем DRAM организованы в виде двумерной матрицы. Адреса строки и столбца передаются по мультиплексированной шине адреса MA (Multiplexed Address) и стробируются по спаду импульсов RAS# (Row Access Strobe) и CAS# (Column Access Strobe). Состав сигналов микросхем динамической памяти приведен в табл. 7.1.

Таблица 7.1. Сигналы микросхем динамической памяти

Сигнал Назначение
RAS# Row Access Strobe — строб выборки адреса строки. По спаду сигнала начинается любой цикл обращения; низкий уровень сохраняется на все время цикла. Перед началом следующего цикла сигнал должен находиться в неактивном состоянии (высокий уровень) не менее, чем время предварительного заряда RAS (T RP — RAS precharge time)
CAS# Column Access Strobe — строб выборки адреса столбца. По спаду сигнала начинается цикл записи или чтения; минимальная длительность (T CAS ) определяется спецификацией быстродействия памяти. Минимальная длительность неактивного состояния между циклами (высокий уровень) должна быть не менее, чем время предварительного заряда CAS (T CP — 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

Спецификация быстродействия T RC , нс T RAC , нс T PC , нс T CAS , нс T CP , нс
-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.1. Асинхронная память — FPM, EDO и BEDO DRAM

Временная диаграмма, приведенная на рис. 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#, а завершаются через какой-то определенный (для данных микросхем) интервал. На время этих процессоров шина памяти оказывается занятой, причем в основном ожиданием данных.

 

7.1.2. Синхронная память — SDRAM и DDR SDRAM

Микросхемы синхронной динамической памяти 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 такта). В цикле записи высокий уровень запрещает запись текущих данных, низкий — разрешает (действует без задержки)
V SS , V DD Общий провод и питание ядра
V SSQ , V DDQ Общий провод и питание выходных буферов. Изолированы от питания ядра для снижения помех

Данные для первой передачи пакета записи устанавливаются вместе с командой 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 T RCD T RP T RC Примечание
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 появилась лишь сравнительно недавно.

 

7.1.3. Память Rambus DRAM

Память 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. Если используются не все слоты, то память выгоднее ставить ближе к контроллеру — она будет работать быстрее (см. выше).

 

7.1.4. Память с виртуальными каналами — VC DRAM

Идея архитектуры памяти с виртуальными каналами (VirtualChannel Memory Architecture, не путать с виртуальной памятью!) заключается в помещении между массивом запоминающих ячеек и внешним интерфейсом микросхемы памяти набора канальных буферов. При этом операции обмена данными разделяются на два процесса: «фасадный» обмен данными с каналами и «тыловой» обмен между каналами и массивом запоминающих ячеек. Оба процесса выполняются по командам со стороны внешнего интерфейса почти независимо друг от друга. Архитектура виртуальных каналов приложима к памяти любого типа, включая ПЗУ и флэш-память, но наиболее интересна она в приложении к динамической памяти — VC DRAM.

Устройство VC DRAM рассмотрим на примере микросхем емкостью 128 Мбит, на которых строятся выпускаемые модули DIMM VC DRAM. По интерфейсу (составу и уровням сигналов) микросхемы и модули VC DRAM аналогичны обычным микросхемам SDRAM, но отличаются системой команд. Микросхемы имеют такую же внешнюю организацию по 4,8 или 16 бит данных, но совершенно иную внутреннюю архитектуру. Они имеют две матрицы (два банка) запоминающих ячеек размером 8 К×8 К, то есть каждая строка имеет объем 8 Кбит и состоит из четырех сегментов размером по 2 Кбит. Между матрицами и внешним интерфейсом имеется 16 канальных буферов, каждый объемом 2 Кбит. За одно обращение к матрице выполняется параллельная передача 2 Кбит данных между одним из буферов и сегментом выбранной строки. Это «тыловой» обмен реализуют команды PRF (Prefetch — чтение массива в буфер) и RST (Restore — сохранение буфера в массиве), в которых микросхеме указывается номер банка, номер сегмента и номер канала. Предварительно командой ACT должна быть активирована требуемая строка матрицы (при подаче этой команды задается банк и адрес строки). Деактивация строк (предварительный заряд) может быть автоматической, сразу после выполнения обращений к массиву (для этого имеются специальные команды предвыборки и сохранения — PRFA и RSTA) или же по специальным командам, деактивирующим выбранный банк или оба банка сразу.

«Фасадный» обмен с канальными буферами выполняется по командам чтения и записи (READ и WRITE), в которых указывается номер канала и часть адреса, соответствующая адресу колонки в обычной микросхеме DRAM или SDRAM. Этот обмен выполняется в пакетном режиме, длина пакета программируется (1,2,4,8 или 16 передач), но пакет может быть укорочен подачей следующей команды обращения к каналу. Первые данные при чтении канала появляются с задержкой (Read Latency) в 2 такта относительно команды чтения, следующие идут в каждом такте. В некоторых моделях микросхем имеется поддержка комбинированной команды PFR (перед которой тоже должна быть команда ACT) — предвыборка с автопредзарядом и чтение буфера. После подачи этой команды первые данные появляются на 4-м такте — не раньше и не позже, чем при последовательной подаче команд PRF(А) и READ.

Регенерация VC DRAM выполняется так же, как и в SDRAM, — либо периодической подачей команд REF (авторегенерация по внутреннему счетчику адреса регенерируемых строк), либо в энергосберегающем режиме саморегенерации, в который микросхемы переходят по команде SELF.

Как видно из этого описания, работа VC DRAM очень похожа на работу SDRAM, но операции обмена данными разделены на две сравнительно независимые фазы. Активация-деактивация банков выглядит так же, но при чтении VC DRAM данные появляются даже позже, чем в SDRAM: у SDRAM эта задержка, CL (CAS Latency), составляет 2–3 такта, а у VC DRAM — 4 такта. Тем не менее применение VC DRAM дает прирост производительности памяти почти по всем тестам. Этот выигрыш получается за счет поддержки многозадачности в самих микросхемах и в контроллере памяти. Для работы с VC DRAM контроллер памяти должен «знать» ее систему команд, не имеющую прямой совместимости с командами SDRAM. Поддержка VC DRAM имеется далеко не во всех чипсетах — ее вводят, например, VIA и SiS, но фирма Intel эту память игнорирует. Механически и электрически модули VC DRAM совместимы с обычными модулями DRAM. Во время начального тестирования (POST) модули VC DRAM могут быть опознаны по информации, хранящейся в микросхеме EEPROM последовательной идентификации модуля, либо по поведению после инициализации.

Память VC DRAM по сравнению с другими типами динамической памяти обеспечивает меньшее среднее время задержки данных в многозадачных системах. Однако по пиковой скорости передачи она не имеет преимуществ перед SDRAM и проигрывает RDRAM и DDR SDRAM.

 

7.1.5. Модули динамической памяти

Динамическая память чаще всего применяется в виде модулей с разрядностью 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-30, SIPP, SIMM-72

Модули 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 и DIMM-184

Модуль памяти 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)
V REF Вход опорного напряжения интерфейса SSTL_2
RESET# Вход асинхронного сброса регистра
V DDQ Питание выходных буферов микросхем
V DD Питание ядра микросхем
V DDSPD Питание микросхемы последовательной идентификации
V DDID Вход V DD 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

Модули 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 В)

Модули SO DIMM-72 pin

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-битных модулей контакт свободен

Модули SO DIMM-144 pin

Модуль 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

Модули DRAM cards-88 pin

Модули 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 В. Применяются в малогабаритных компьютерах, легко устанавливаются и снимаются.

 

7.2. Статическая память

Статическая память — 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.

 

7.3. Энергонезависимая память

 

Обобщенное понятие энергонезависимой памяти (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 автору пока встречать не доводилось.

 

7.3.1. Постоянная и полупостоянная память — ROM, PROM, EPROM

Масочные постоянные запоминающие устройства — ПЗУ или 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 = V pp
2732 — 4 К×8 DIP-24 7.18, а 20 = OE#/V pp , 21=A11
2764 — 8 К×8 DIP-28 7.18, б 1 = V pp , 22 = OE#; 26 = NC, 27 = PGM#
27128 — 16 К×8 DIP-28 7.18, б 1 = V pp , 22 = OE#; 26 = A13, 27 = PGM#
27256 — 32 К×8 DIP-28 7.18, б 1 = V pp , 22 = OE#; 26 = A13, 27 = A14
27512 — 64 К×8 DIP-28 7.18, б 1 = A15, 22 = OE#/V pp , 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 — разрешение выходных буферов. Низкий уровень при низком уровне СЕ# разрешает чтение данных из микросхемы. У некоторых типов микросхем на этот же вывод в режиме программирования подается напряжение V PP
DQx Data Input/Output — двунаправленные линии шины данных. Время доступа при чтении отсчитывается от установки действительного адреса или сигнала СЕ# (в зависимости от того, что происходит позднее)
Ах Address — входные линии шины адреса. Линия А9 допускает подачу высокого (12В) напряжения для чтения кода производителя (А0 = 0) и устройства (А0 = 1), при этом на остальные адресные линии подается логический ноль
PGM# Programm — импульс программирования (некоторые микросхемы не имеют этого сигнала, их программирование осуществляется по сигналу СЕ# при высоком уровне V PP )
V PP Программирующее напряжение питания (для некоторых типов — импульс)
V CC Питание (+5 В)

Отметим основные свойства EPROM.

♦ Стирание информации происходит сразу для всей микросхемы под воздействием облучения и занимает несколько минут. Стертые ячейки имеют единичные значения всех бит.

♦ Запись может производиться в любую часть микросхемы побайтно, в пределах байта можно маскировать запись отдельных бит, устанавливая им единичные значения данных.

♦ Защита от записи осуществляется подачей низкого (5 В) напряжения на вход VPP в рабочем режиме (только чтение).

♦ Защита от стирания производится заклейкой окна.

 

7.3.2. EEPROM и флэш-память

Электрически стираемая (и перезаписываемая) память 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

По организации и программированию можно выделить три поколения флэш-памяти 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

Фирмой 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.3.3. Энергонезависимая память с последовательными интерфейсами

Для микросхем энергонезависимой памяти малого объема, от которых не требуется высокой производительности обмена данными, часто применяют последовательные интерфейсы. Это позволяет упаковывать микросхемы памяти любого объема в корпуса, имеющие минимальное число выводов (рис. 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

Широко распространенный двухпроводный интерфейс 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

Трехпроводный интерфейс SPI (см. п. 11.3) обеспечивает скорость передачи до 5 Мбит/с. Обмен с микросхемой, выбранной сигналом CS#, начинается с подачи по линии SI 8-битного кода команды. В команде записи за кодом команды следует адрес ячейки, за которым следуют байты данных. Команда чтения начинается так же, но после приема адреса в следующем же такте по линии SO начинается вывод данных. Есть и специальные безадресные команды, например, разрешение/запрет записи и стирания. Микросхемы памяти с SPI имеют регистр состояния, доступ к которому обеспечивается специальными командами. В этом регистре отражается состояние управляющего автомата записи (занят/свободен), в нем же могут присутствовать и биты управления защитой записи (в регистр состояния возможна и запись). Состав регистров и набор команд зависит от модели устройства.