зывают просто EPROM (Erasable PROM – стираемые микросхемы), или
UV-EPROM (Ultra-Violet EPROM, УФРПЗУ); электрически стираемые микросхемы EEPROM (ElectricalErasable PROM, ЭСПЗУ), в том числе и флэш-память.
Энергонезависимая память в основном применяется для хранения неизменяемой (или редко изменяемой) информации – системного программного обеспечения (BIOS), таблиц (например, знакогенераторов графических адаптеров), памяти конфигурации устройств (ESCD, EEPROM адаптеров).
Эта информация обычно является ключевой для функционирования PC (без BIOS компьютер представляет собой только коробку с дорогими комплектующими).
Важными параметрами энергонезависимой памяти является время хранения и устойчивость к электромагнитным воздействиям, а для перепрограммируемой памяти еще и гарантированное количество циклов перепрограммирования. Энергонезависимую память, запись в которую производят при регулярной работе, называют NVRAM (NonVolatileRandomAccessMemory).
5.5.Постоянная память – ROM, FROM, EPROM
Масочные постоянные запоминающие устройства – ПЗУ (ROM) – имеют самое высокое быстродействие (время доступа 5–70 нс). Эти микросхемы в МПС широкого распространения не получили из-за сложности модификации содержимого.
Однократно программируемые постоянные запоминающие устройства – ППЗУ (PROM) – имеют аналогичные параметры и благодаря возможности программирования изготовителем оборудования (а не микросхем) находят более широкое применение для хранения кодов BIOS. Программирование этих микросхем осуществляется только с помощью специальных программаторов, в целевые устройства которых они устанавливаются в «кроватки» или запаиваются. Как и масочные, эти микросхемы практически нечувствительны к электромагнитным полям (в том числе и к рентгеновскому облучению), и несанкционированное изменение их содержимого в устройстве исключено (конечно, не считая отказа).
Репрограммируемые постоянные запоминающие устройства – РПЗУ (EPROM) – до недавних пор были самыми распространенными носителями BIOS как на системных платах, так и в адаптерах, а также использовались в качестве знакогенераторов.
Микросхемы EPROM тоже программируются на программаторах, но относительно простой интерфейс записи позволяет их программировать и в устройстве (но не в штатном его режиме работы, а при подключении внешнего программатора). Стирание микросхем осуществляется ультрафиолетовым облучением в течение нескольких минут. Специально для стирания микросхемы имеют стеклянные окошки. После программирования эти окошки заклеивают для предотвращения стирания под действием солнечного или люминесцентного облучения. Время стирания зависит от расстояния до источника облучения, его мощности и объема микросхемы (более емкие микросхемы стираются быстрее).
В PC чаще всего применяют микросхемы EPROM.
Отметим основные свойства EPROM:
• Стирание информации происходит сразу для всей микросхемы под воздействием облучения и занимает несколько минут. Стертые ячейки имеют единичные значения всех бит.
• Запись может производиться в любую часть микросхемы побайтно, в пределах байта можно маскировать запись отдельных бит, устанавливая им единичные значения данных.
• Защита от записи осуществляется подачей низкого (5 В) напряжения на вход Vpp в рабочем режиме (только чтение).
• Защита от стирания производится заклейкой окна.
5.6.Память с электрическим стиранием – EEPROM и флэш-память
Стирание микросхем постоянной памяти возможно и электрическим способом. Однако этот процесс требует значительного расхода энергии. Интерфейс традиционных микросхем EEPROM имеет временную диаграмму режима записи с большой длительностью импульса, что не позволяет непосредственно использовать сигнал записи системной шины. Кроме того, перед записью информации в ячейку обычно требуется предварительное стирание, тоже достаточно длительное. Микросхемы EEPROM относительно небольшого объема широко применяются в качестве энергонезависимой памяти конфигурирования различных адаптеров. Современные микросхемы EEPROM имеют более сложную внутреннюю структуру, в которую входит управляющий автомат. Это позволяет упростить внешний интерфейс, делая возможным непосредственное подключение к микропроцессорной шине, и скрыть специфические (и ненужные пользователю) вспомогательные операции типа стирания и верификации.
Флэш-память, по определению, относится к классу EEPROM, но использует особую технологию построения запоминающих ячеек. Стирание во флэш-памяти производится сразу для целой области ячеек: блоками или полностью всей микросхемы. Это позволило существенно повысить производительность в режиме записи (программирования). Флэш-память обладает сочетанием высокой плотности упаковки (ее ячейки на 30 % меньше ячеек DRAM), энергонезависимого хранения, электрического стирания и записи, низкого потребления, высокой надежности и невысокой стоимости
(рис. 1.15).
Расположение выводов распространенных микросхем флэш-памяти приведено на рис. 1.16, а, б.
Рис. 1.15. Флэш-память – основные показатели
аб
Рис. 1.16. Расположение выводов микросхем флэш-памяти
с 8-битной организацией в корпусах DIP и PLCC: а – DIP-32, б – PLCC-32
Интерфейс микросхем флэш-памяти хорошо сочетается со стандартными сигналами, используемыми в микропроцессорных системах. Внутренние циклы стирания, записи и верификации выполняются автономно от шинных циклов внешнего интерфейса, что является существенным преимуществом перед микросхемами EPROM и EEPROM. В режиме чтения они полностью совместимы с EPROM, совпадая с ними и по расположению основных выводов
Кэширование
Кэш-память (CacheMemory) – сверхоперативная память (СОЗУ), является буфером между ОЗУ и его «клиентами» – процессором (одним или несколькими) и другими абонентами системной шины. В переводе слово кэш (cache) означает «склад» или «тайник» («заначка»). «Тайна» этого склада заключается в его «прозрачности» – для программы он не представляет собой дополнительной адресуемой области памяти. Кэш-память является дополнительным и быстродействующим хранилищем копий блоков информации основной памяти, к которой, вероятно, в ближайшее время будет обращение. Кэш не может хранить копию всей основной памяти, поскольку его объем во много раз меньше объема основной памяти. Он хранит лишь ограниченное количество блоков данных и каталог (cachedirectory) – список их текущего соответствия областям основной памяти. Кроме того, кэшироваться может не вся память, доступная процессору: обычно кэшируется только основная динамическая память системной платы (память, установленная на адаптерах, не кэшируется) и из этой памяти кэшируется только часть (распространенные версии чипсетов для Pentium часто позволяют кэшировать только первые 64 Мбайт ОЗУ).
Кэш в современных компьютерах строится по двух (и более)-уровневой схеме:
Первичный кэш, или L1 Cache (Level I Cache), – кэш 1-го уровня, внутренний (Internal, Integrated) кэш процессоров класса I486 и старше, а также некоторых моделей I386.
Вторичный кэш, или L2 Cache (Level 2 Cache), – кэш 2-го уровня.
Обычно это внешний (External) кэш, установленный на системной плате. В PentiumPro и Pentium II вторичный кэш расположен в одном корпусе с процессором. Дополнительный кэш на системную плату уже не устанавливается. Кэш, установленный на системной плате компьютера с процессором I386, не имеющим внутреннего кэша, является первичным (и единственным).
При каждом обращении к кэшируемой памяти контроллер кэш-памяти по каталогу проверяет, есть ли действительная копия затребованных данных в кэше. Если она там есть, то это случай кэш-попадания (cachehit), и обращение за данными происходит только к кэш-памяти. Если действительной копии там нет, то это случай кэш-промаха (cachemiss), и данные берутся из основной памяти.
Кэш-контроллер должен обеспечивать когерентность (coherency) – согласованность данных кэш-памяти обоих уровней с данными в основной памяти, причем обращение к этим данным может производиться не только со стороны процессора (процессоров может быть и несколько и у каждого может быть свой внутренний кэш), но и со стороны других активных (busmaster) адаптеров, подключенных к шинам (PCI, VLB, ISA...).
Контроллер кэша оперирует строками (cacheline) фиксированной длины. Строка может хранить копию блока основной памяти, размер которого, естественно, совпадает с длиной строки. С каждой строкой кэша связаны информация об адресе скопированного в нее блока основной памяти и признаки ее состояния. Строка может быть действительной (valid) – в текущий момент времени она достоверно отражает соответствующий блок основной памяти, или недействительной (пустой). Информация о том, какой именно блок занимает данную строку (т. е. старшая часть адреса или номер страницы), а также ее состояние называется тегом (tag), который хранится в связанной с данной строкой ячейке специальной памяти тегов (tag RAM).
Возможен и вариант секторированного (sectored) кэша, при котором одна строка содержит несколько смежных ячеек – секторов, размер которых соответствует минимальной порции обмена данных кэша с основной памятью. При этом в записи каталога, соответствующей каждой строке, должны храниться биты действительности для каждого сектора данной строки. Секторирование позволяет экономить память, необходимую для хранения каталога при увеличении объема кэша.
Поведение кэш-контроллера при операции записи в память, когда копия затребованной области находится в некоторой строке кэша, определяется его политикой записи (WritePolicy). Существуют два основных алгоритма записи данных из кэша в основную память: сквозная запись WT (WriteThrough) и обратная запись WB (WriteBack).
Алгоритм WT предусматривает выполнение каждой операции записи (даже однобайтной), попадающей в кэшированный блок, одновременно и в строку кэша, и в основную память.
Алгоритм WB позволяет уменьшить количество операций записи на шине основной памяти. Если блок памяти, в который должна производиться запись, отображен и в кэше, то физическая запись сначала будет произведена в эту действительную строку кэша и отмечена как грязная (dirty), или модифицированная, т. е. требующая выгрузки в основную память. Только после этой выгрузки (записи в основную память) строка станет чистой (clean) и ее можно будет использовать для кэширования других блоков без потери целостности данных.
Различают три архитектуры кэш-памяти: кэш прямого отображения (direct-mappedcache), полностью ассоциативный кэш (fullyassociativecache) и их комбинация – частично или наборно-ассоциативный кэш (set-associativecache).
В кэш-памяти прямого отображения адрес памяти, по которому происходит обращение, однозначно определяет строку, в которой может находиться отображение требуемого блока.
Наборно-ассоциативная архитектура кэша позволяет каждому блоку кэшируемой памяти претендовать на одну из нескольких строк кэша, объединенных в набор (set). Эту архитектуру можно рассматривать как несколько параллельно и согласованно работающих каналов прямого отображения, где контроллеру кэша приходится еще и принимать решение о том, в какую из строк набора помещать очередной блок данных.
В отличие от предыдущих у полностью ассоциативного кэша любая его строка может отображать любой блок памяти, что существенно повышает эффективность использования его ограниченного объема. При этом все биты адреса кэшированного блока за вычетом бит, определяющих положение (смещение) данных в строке, хранятся в памяти тегов. В такой архитектуре для определения наличия затребованных данных в кэш-памяти необходимо сравнение со старшей частью адреса тегов всех строк, а не одной или нескольких.