В компьютерах особо ответственного применения используют память
Лекция 5. Методы и способы организации памяти
5.1.Общиепонятияопамяти
5.2.Динамическая память
5.3. Статическая память
5.4. Энергонезависимая память
5.5.Постоянная память – ROM, FROM, EPROM
5.6.Память с электрическим стиранием – EEPROM и флэш-память
5.7. Кэширование
5.8. Карта памяти. Критерии и способы распределения адресного пространства
Общиепонятияопамяти
Под памятью цифровых вычислительных устройств понимают запоминающее устройство, предназначенное для приема (записи), хранения и выдачи (считывания) информации, представленной двоичным кодом. Основными характеристиками ЗУ являются:
информационная емкость, определяемая максимальным объемом хранимой информации в битах или байтах; быстродействие, характеризуемое временем выборки информации из ЗУ и временем цикла обращения к ЗУ с произвольным доступом или временем поиска и количеством переданной в единицу времени информации в ЗУ
(или из ЗУ) с последовательным доступом; энергопотребление, определяемое электрической мощностью, потребляемой ЗУ от источника питания в каждом из режимов работы, а также надежность, стоимость, масса, габаритные размеры и др.
Со времени появления больших (по размерам) компьютеров сложилось деление памяти на внутреннюю и внешнюю:
внутренняя память – электронная (полупроводниковая) память, уста-
навливаемая на системной плате или на платах расширения; внешняя память – память, реализованная в виде устройств с различными принципами хранения информации и обычно с подвижными носителями. Обычно это устройство магнитной (дисковой и ленточной) памяти, оптической и магнитооптической памяти.
Для процессора непосредственно доступной является внутренняя (оперативная) память.
Основная, или оперативная, память (MainMemory) компьютера используется для оперативного обмена информацией (командами и данными) между процессором, внешней памятью (например, дисковой) и периферийными подсистемами (графика, ввод/вывод, коммуникации и т. п.). Ее другое название – ОЗУ – примерно соответствует английскому термину RAM (RandomAccessMemory) – память с произвольным доступом. Произвольность доступа подразумевает возможность операций записи или чтения любой ячейкой ОЗУ в произвольном порядке.
Требования, предъявляемые к основной памяти: большой (для электронной памяти) объем, исчисляемый единицами,
десятками и даже сотнями мегабайт; быстродействие и производительность, позволяющие реализовать вы-
числительную мощность современных процессоров; высокая надежность хранения данных – ошибка даже в одном бите,
в принципе, может привести и к ошибкам вычислений, и к искажению, и потере данных.
Оперативная память является одним из трех основных элементов, на которых держится «компьютерный мир» (процессор, память и периферийные устройства).
Оперативное хранение информации выполняет динамическая память, имеющая наилучшее сочетание объема, плотности упаковки, энергопотребления и цены. Однако ей присуще невысокое (по характеристикам современных процессоров) быстродействие. Динамическую память замещает статическая, быстродействие которой выше, но достижимая емкость принципиально ниже, чем у динамической.
Обсудим основные параметры оперативной памяти – быстродействие, производительность, достоверность хранения и методы их улучшения.
Время доступа (accesstime) определяется как задержка появления действительных данных на выходе памяти относительно начала цикла чтения.
Длительность цикла определяется как минимальный период следующих друг за другом обращений к памяти, причем циклы чтения и записи требуют различных затрат времени.
Производительность памяти характеризуется скоростью потока записываемых или считываемых данных и измеряется в мегабайтах в секунду. Производительность подсистемы памяти зависит от типа и быстродействия применяемых запоминающих элементов, разрядности шины памяти и некоторых особенностей архитектуры.
Разрядность шины памяти – это количество байт (или бит), с которыми операция чтения или записи может быть выполнена одновременно. Разрядность основной памяти обычно согласуется с разрядностью внешней шины процессора (1 байт – для I8088; 2 байта – для I8086, I80286, I386SX; 4 байта – для I386DX, I486; 8 байт – для Pentium и выше). Вполне очевидно, что при одинаковом быстродействии микросхем или модулей памяти производительность блока с большей разрядностью будет выше, чем у малоразрядного. Именно с целью повышения производительности у 32-битного (по внутренним регистрам) процессора Pentium внешняя шина, связывающая его с памятью, имеет разрядность 64 бита.
Банком памяти называют комплект микросхем, или модулей (а также их посадочных мест – «кроваток» для микросхем, слотов для SIMM или DIMM), обеспечивающий требуемую для данной системы разрядность хранимых данных. Работоспособным может быть только полностью заполненный банк. Внутри одного банка практически всегда должны применяться одинаковые (по типу и объему) элементы памяти.
Если устанавливаемый объем памяти набирается несколькими банками, появляется резерв для повышения производительности за счет применения чередования банков (bankinterleaving). Идея чередования заключается в том, что смежные блоки данных (разрядность такого блока данных соответствует разрядности банка) располагаются поочередно в разных банках. Чем больше банков участвуют в чередовании, тем выше (теоретически) предельная производительность. Чаще всего используется чередование двух или трех банков (twowayinterleaving, threewayinterleaving).
Применение теневой памяти (shadowmemory) позволяет повысить производительность компьютера при интенсивном обращении к относительно медленной памяти модулей ROM BIOS и видеопамяти. Идея метода заключается в «затенении» медленного модуля специальной памяти блоком быстродействующей оперативной памяти.
При использовании ShadowROM содержимое затеняемой области (ROM) копируется в RAM и при дальнейшем обращении по этим адресам подставляется физическая область RAM, а запись в эту область блокируется. При использовании ShadowRAM запись производится одновременно в физическую память затеняемой области и в оперативную память (RAM), а при чтении обращение идет только к оперативной памяти. Shadow RAM обычно применяется для ускорения работы графических адаптеров.
Разделяемая память адаптера – память, содержимое которой может изменяться как со стороны системной шины (по инициативе процессора или других ее абонентов), так и со стороны адаптера, составной частью которого она является. Примерами разделяемой памяти являются буферная память коммуникационных адаптеров (она в произвольный момент времени может быть заполнена принятым из сети пакетом) и видеопамять адаптеров с графическими сопроцессорами (битовое разложение графического примитива строится в ней внутренним процессором графического адаптера).
Теневая память дает двойной эффект повышения производительности: затеняемые области обычно имеют малую разрядность (ROM BIOS – 8 бит, видеопамять небольшого объема – 8 или 16 бит) и низкое быстродействие (ROM имеет время доступа более 100 нс, а обращение к видеопамяти тормозится конкурирующим процессом – регенерацией изображения).
В процессорах I486 и старше для повышения производительности обмена данными с последовательно расположенными ячейками памяти введен так называемый пакетный цикл обмена –BurstCycle. Обычный цикл обмена имеет фазу адреса и фазу данных. Пакетный цикл предназначен для последовательного обмена обычно с четырьмя соседними элементами (байт, слово, двойное слово,...) памяти. При этом фаза адреса существует только в начале цикла, а следующие три передачи осуществляются без нее: подразумевается автоматическое изменение адреса по определенным правилам.
В любой из многих миллионов ячеек памяти возможен случайный сбой или окончательный отказ, приводящий к ошибке. Вероятность ошибки, естественно, возрастает при увеличении объема памяти.
Отказ ячейки памяти – потеря ее работоспособности, обычно требующая замены элемента памяти. Отказ может быть устойчивым, но возможно и самопроизвольное восстановление работоспособности, например после повторного включения питания. Часто причиной отказов является неисправность контакта или нарушение условий эксплуатации.
Случайный сбой может произойти и в исправной микросхеме памяти, например при пролете через нее ионизирующей частицы (по этой причине в условиях высокого уровня радиации обычные электронные элементы неработоспособны). После сбоя следующая запись в ячейку произойдет нормально.
В первых моделях персональных компьютеров (РС) обязательно применялся контроль четности. При его использовании каждый байт памяти сопровождался битом паритета (Paritybit), дополняющим количество единиц в байте до нечетного. При обнаружении ошибки паритета схемой контроля вырабатывается немаскируемое прерывание (NMI) и его обработчик обычно выводит на экран сообщение ParityErrorCheck (ошибка паритета) с указанием адреса сбойной ячейки и останавливает процессор командой Halt.
В компьютерах особо ответственного применения используют память
с обнаружением и исправлением ошибок – ЕСС Memory (ErrorCheckingandCorrecting). В этом случае для каждого записываемого информационного слова памяти (а не байта, как при контроле паритета) по определенным правилам вычисляется функция свертки, результат которой разрядностью в несколько бит также хранится в памяти. Функцию контроля и исправления выполняет чипсет, его реакцию на ошибки обычно можно задать опциями BIOS Setup. Возможны различные варианты поведения, например:
автоматически исправлять ошибки, не уведомляя об этом систему; исправлять однократные ошибки, уведомляя систему только о многократных; не исправлять ошибки, а только уведомлять об их обнаружении (самый
достоверный контроль).
В отличие от памяти с контролем паритета, допускающей побайтное обращение, к ЕСС-памяти можно обращаться только полноразрядными словами.
Динамическая память
Динамическая память – DRAM (Dynamic RAM) – получила свое название от принципа действия ее запоминающих ячеек, которые выполнены в виде конденсаторов, образованных элементами полупроводниковых микросхем. С некоторым упрощением описания физических процессов можно сказать, что при записи логической единицы в ячейку конденсатор заряжается, при записи нуля – разряжается. Схема считывания разряжает через себя этот конденсатор и, если заряд был ненулевым, выставляет на своем выходе единичное значение, затем подзаряжает конденсатор до прежнего значения. При отсутствии обращения к ячейке со временем за счет токов утечки конденсатор разряжается и информация теряется, поэтому такая память требует постоянного периодического подзаряда конденсаторов (обращения к каждой
ячейке) – память может работать только в динамическом режиме. Этим она принципиально отличается от статической памяти, реализуемой на триггерных ячейках и хранящей информацию без обращений к ней сколь угодно долго (при включенном питании). Благодаря относительной простоте ячейки динамической памяти на одном кристалле удается размещать миллионы ячеек и получать самую дешевую полупроводниковую память достаточно высокого быстродействия с умеренным энергопотреблением, используемую в качестве основной памяти компьютера.
Запоминающие ячейки микросхем DRAM организованы в виде двумерной матрицы. Адрес строки и столбца передается по мультиплексированной шине адреса (МА, MultiplexedAddress) и стробируется по спаду импульсов. Поскольку обращения (запись или чтение) к различным ячейкам памяти обычно происходят в случайном порядке, то для поддержания сохранности данных применяется регенерация (MemoryRefresh – «освежение» памяти) – регулярный циклический перебор ее ячеек (обращение к ним) с холостыми циклами. Регенерация в микросхеме происходит одновременно по всей строке матрицы при обращении к любой из ее ячеек.
Динамическая память, используемая в видеобуферах графических адаптеров, специальных циклов регенерации, как правило, не требует, поскольку частота ее чтения для регенерации изображения вполне достаточна для сохранения информации.
Динамическая память в настоящее время является практически незаменимой в качестве основной (оперативной) памяти компьютеров. Наиболее частые изменения конфигурации PC связаны именно с оперативной памятью – обычно стремятся к увеличению ее объема и повышению производительности. С этим видом памяти, однако, связано и большинство проблем, выражающихся в неустойчивой работе компьютера.
Микросхемы или (и) модули динамической памяти, предназначенные для работы в качестве ОЗУ, в подавляющем большинстве случаев устанавливаются на системной плате с целью максимального приближения к процессору и чипсету. Это приближение (и физическое, и логическое) прежде всего направлено на повышение производительности оперативной памяти.
Статическая память
Статическая память – SRAM (StaticRandomAccessMemory), как следует из ее названия, способна хранить информацию в статическом режиме, т. е. сколь угодно долго при отсутствии обращений (но при наличии питающего напряжения). Ячейки статической памяти реализуются на триггерах – элементах с двумя устойчивыми состояниями. По сравнению с динамической памятью эти ячейки более сложные и занимают больше места на кристалле, однако они проще в управлении и не требуют регенерации. Быстродействие и энергопотребление статической памяти определяется технологией изготовления и схемотехникой запоминающих ячеек. Самая экономичная КМОП-память (CMOS Memory) имеет время доступа более 100 наносекунд, но зато пригодна для длительного хранения информации при питании от маломощной батареи, что и применяется в памяти конфигурации PC. Самая быстродействующая статическая память имеет время доступа в несколько наносекунд, что позволяет ей работать на частоте системной шины процессора, не требуя от него тактов ожидания. Типовой объем памяти современных микросхем SRAM достигает 1 Мбит. Относительно высокая удельная стоимость хранения информации и энергопотребление при низкой плотности упаковки не позволяют использовать SRAM в качестве основной памяти компьютеров.
Рис. 1.14. Временные диаграммы чтения и записи асинхронной статической памяти
Микросхемы этого типа имеют простейший асинхронный интерфейс, включающий шину адреса, шину данных и сигналы управления CS#, ОЕ# и WE#. Микросхема выбирается низким уровнем сигнала CS# (Chipselect). Низкий уровень сигнала ОЕ# (OutputEnable) открывает выходные буферы для считывания данных, WE# (WriteEnable) низким уровнем разрешает запись (рис. 1.14). При операции записи управление выходными буферами может производиться как сигналом ОЕ# (цикл 1), так и сигналом WE# (цикл 2). Для удобства объединения микросхем внутренний сигнал CS# может собираться по схеме «И» из нескольких внешних, например: CSO#, CS1 и CS2#.
В таком случае микросхема будет выбрана при сочетании логических сигналов 0, 1, 0 на соответствующих входах.
Время доступа – задержка появления действительных данных на выходе относительно момента установления адреса. У стандартных микросхем SRAM составляет 12, 15 или 20 наносекунд, что позволяет процессору выполнять пакетный цикл чтения 2–1–1–1 (т. е. без тактов ожидания) на частоте системной шины до 66 МГц. На более высоких частотах цикл будет не лучше
3–2–2–2.
Энергонезависимая память
Энергонезависимая память хранит записанные данные и при отсутствии питающего напряжения в отличие от статической и динамической полупроводниковой памяти. Существует множество типов энергонезависимой памяти: ROM, PROM, EPROM, EEPROM, FlashMemory, различающихся по потребительским свойствам, способам построения запоминающих ячеек и сферам применения. Запись информации в энергонезависимую память, называемую программированием, обычно существенно сложнее и требует больших затрат времени и энергии, чем считывание. Основным режимом работы такой памяти является считывание данных, а некоторые типы после программирования допускают только считывание, что и обусловливает их общее название ROM (ReadOnlyMemory – память только для чтения) или ПЗУ (постоянное запоминающее устройство).
Существует и полупостоянная память, которая в основном используется для хранения информации о конфигурации компьютера. Традиционная память конфигурации вместе с часами – календарем (CMOS Memory и CMOS RTC) – имеет объем несколько десятков байт; ESCD (ExtendedStaticConfigurationData) – область энергонезависимой памяти, используемая для конфигурирования устройств Plug&Play, имеет объем несколько килобайт. Сохранность данных полупостоянной памяти при отключении питания компьютера обеспечивается маломощной внутренней батарейкой или аккумулятором. В качестве полупостоянной применяется и энергонезависимая память – NVRAM (Non-Volatile RAM), которая хранит информацию и при отсутствии питания.
Запоминающие ячейки энергонезависимой памяти обычно несимметричны по своей природе и позволяют записывать только нули (реже – только единицы) в предварительно стертые (чистые) ячейки. Однократно программируемые микросхемы позволяют изменять только исходное (после изготовления) состояние ячеек. Стирание ячеек выполняется либо для всей микросхемы, либо для определенного блока, либо для одной ячейки (байта). Стирание приводит все биты стираемой области в одно состояние (обычно – во все единицы, реже – во все нули). Процедура стирания обычно существенно дольше записи. В зависимости от способа стирания различают: