Оперативные запоминающие устройства (ОЗУ) являются неотъемлемой частью микропроцессорных систем различного назначения. ОЗУ делятся на два класса: статические и динамические. В статических ОЗУ запоминание информации производится на триггерах, а в динамических — на конденсаторах емкостью порядка 0,5 пФ. Длительность хранения информации в статических ОЗУ не ограничена, тогда как в динамических она ограничена временем саморазряда конденсатора, что требует специальных средств регенерации и дополнительных затрат времени на этот процесс.
Конструктивно любое ОЗУ состоит из двух блоков — матрицы запоминающих элементов и дешифратора адреса. По технологическим соображениям матрица чаще всего имеет двухкоординатную дешифрацию адреса — по строкам и столбцам. На рис. 9.45 показана матрица 16-битного статического ОЗУ. Матрица состоит из 16 ячеек памяти mem_i, схема которой приведена на рис. 9.46. Каждая ячейка памяти адресуется по входам X, Y путем выбора дешифраторами адресных линий по строкам АхО...АхЗ и по столбцам АуО...АуЗ (см. рис. 9.45) и подачи по выбранным линиям сигнала логической единицы. При этом в выбранной ячейке памяти срабатывает двухвходовой элемент И (U1), подготавливая цепи чтения-записи информации на входных DIO...DI3 или выходных DOO...D03 разрядных шинах. Разрешающим сигналом для выдачи адреса является CS (chip select — выбор кристалла), который подается на вход разрешения счетчика адреса (Addr_cnt) или такой же вход дешифраторов, подключенных к выходам счетчика.
При записи в ячейку памяти (см. рис. 9.46) на соответствующей разрядной шине устанавливается 1 или 0, на входе WR/RD' устанавливается сигнал 1 и после стробирования счетчика или дешифраторов адреса сигналом CS срабатывают элементы 2И U1, U2. Положительный перепад сигнала с элемента U2 поступает на тактовый вход D-триггера U4, в результате чего в нем записывается 1 или 0 в зависимости от уровня сигнала на его D-входе.
При чтении из ячейки памяти на входе WR/RD' устанавливается 0, при этом срабатывают элементы U1, U3, U5 и на вход РАЗРЕШЕНИЕ ВЫХОДА буферного элемента U6 поступает разрешающий сигнал, в результате чего сигнал с Q-выхода D-триггера передается на разрядную шину DOO...D03. Для проверки функционирования ячейки памяти используется генератор слова (рис. 9.47).
Современные запоминающие устройства статического типа отличаются высоким быстродействием и в микропроцессорных системах используются ограниченно из-за сравнительно высокой стоимости. В таких системах они используются только в качестве так называемой кэш-памяти [22]. Cache (запас) обозначает быстродействующую буферную память между процессором и основной памятью, служащую для частичной компенсации разницы в скорости процессора и основной памяти — в нее заносятся наиболее часто используемые данные. Когда процессор первый раз обращается к ячейке памяти, ее содержимое параллельно копируется в кэш, и в случае повторного обращения может быть с гораздо большей скоростью из нее извлечено. При записи в память информация попадает в кэш и одновременно копируется в память (схема Write Through — прямая или сквозная запись) или копируется через некоторое время (схема Write Back — обратная запись). При обратной записи, называемой также буферизованной сквозной записью, информация копируется в память в первом же свободном такте, а при отложенной (Delayed Write) — когда для помещения в кэш нового значения не оказывается свободной области; при этом в основное ОЗУ вытесняются сравнительно редко используемые данные. Вторая схема более эффективна, но и более сложна за счет необходимости поддержания соответствия содержимого кэша и основной памяти.
Кэш-память состоит из области данных, разбитой на блоки (строки), которые являются элементарными единицами информации при работе кэша, и области признаков (tag), описывающей состояние строк (свободна, занята, помечена для дозаписи и т.п.). В основном используются две схемы организации кэша: с прямым отображением (direct mapped), когда каждый адрес памяти может кэшироваться только одной строкой (в этом случае номер строки определяется младшими разрядами адреса), и га-связный ассоциативный (ra-way associative), когда каждый адрес может кэшироваться несколькими строками. Ассоциативный кэш более сложен, однако позволяет более гибко кэшировать данные; наиболее распространены четырехсвязные системы кэширования.
Микропроцессоры 486 и выше имеют также внутренний (Internal) кэш объемом 8...16 Кбайт. Он также обозначается как Primary (первичный) или LI (Level I — первый уровень) в отличие от внешнего (External), расположенного на плате и обозначаемого Secondary (вторичный) или L2. В большинстве процессоров внутренний кэш работает по схеме с прямой записью, а в 486 (процессор Intel P24D и последние DX4-100, AMD DX4-120, 5х86) и Pentium он может работать и с отложенной записью. Последнее требует специальной поддержки со стороны системной платы, чтобы при обмене по DMA (прямое обращение к памяти устройств ввода-вывода) можно было поддерживать согласованность данных в памяти и внутреннем кэше. Процессоры Pentium Pro имеют также встроенный кэш второго уровня объемом 256 или 512 Кбайт.
В микропроцессорных системах в качестве ОЗУ чаще всего используются динамические ОЗУ с запоминающим конденсатором, которые отличаются большим многообразием. Приведем данные по наиболее распространенным типам таких ОЗУ [22].
В динамической памяти ячейки выполнены на основе областей с накоплением зарядов, занимающих гораздо меньшую площадь, нежели триггеры, и практически не потребляющих энергии при хранении информации. При записи бита в такую ячейку в ней формируется электрический заряд, который сохраняется в течение нескольких миллисекунд; для постоянного сохранения заряда ячейки необходимо регенерировать (перезаписывать) ее содержимое. Ячейки микросхем динамической памяти также организованы в виде прямоугольной матрицы; при обращении к микросхеме на ее входы вначале подается адрес строки матрицы, сопровождаемый сигналом RAS (Row Address Strobe — строб адреса строки), затем, через некоторое время — адрес столбца, сопровождаемый сигналом CAS (Column Address Strobe — строб адреса столбца). При каждом обращении к отдельной ячейке регенерируются все ячейки выбранной строки, поэтому для полной регенерации матрицы достаточно перебрать адреса строк. Ячейки динамической памяти имеют сравнительно малое быстродействие (десятки — сотни наносекунд), но большую удельную плотность (порядка нескольких мегабайт на корпус) и меньшее энергопотребление.
Обычные ОЗУ называют часто асинхронными, так как установка адреса и подача управляющих сигналов могут выполняться в произвольные моменты времени, необходимо только соблюдение временных соотношений между этими сигналами. В них включены так называемые охранные интервалы, необходимые для установления сигналов. Существуют также синхронные виды памяти, получающие внешний синхросигнал, к импульсам которого жестко привязаны моменты подачи адресов и обмена данными; они позволяют более полно использовать внутреннюю конвейеризацию и блочный доступ.
FPM DRAM (Fast Page Mode DRAM — динамическая память с быстрым страничным доступом), активно используется в последнее время. Память со страничным доступом отличается от обычной динамической памяти тем, что после выбора строки матрицы и удержания сигнала RAS допускает многократную установку адреса столбца, стробируемого сигналом CAS, а также быструю регенерацию по схеме "CAS прежде RAS". Первое позволяет ускорить блочные передачи, когда весь блок данных или его часть находятся внутри одной строки матрицы, называемой в этой системе страницей, а второе — снизить затраты времени на регенерацию памяти.
EDO (Extended Data Out — расширенное время удержания данных на выходе) фактически представляют собой обычные микросхемы FPM, на выходе которых установлены регистры-защелки данных. При страничном обмене такие микросхемы работают в режиме простого конвейера: удерживают на выходах данных содержимое последней выбранной ячейки, в то время как на их входы уже подается адрес следующей выбираемой ячейки. Это позволяет примерно на 15% по сравнению с FPM ускорить процесс считывания последовательных массивов данных. При случайной адресации такая память ничем не отличается от обычной.
BEDO (Burst EDO — EDO с блочным доступом) — память на основе EDO, работающая не одиночными, а пакетными циклами чтения/записи. Современные процессоры благодаря внутреннему и внешнему кэшированию команд и данных обмениваются с основной памятью преимущественно блоками слов максимальной ширины. При наличии памяти BEDO отпадает необходимость постоянной подачи последовательных адресов на входы микросхем с соблюдением необходимых временных задержек, до- ' статочно стробировать переход к очередному слову отдельным сигналом.
SDRAM (Synchronous DRAM — синхронная динамическая память) — память с синхронным доступом, работающая быстрее обычной асинхронной (FPM/EDO/BEDO). Кроме синхронного доступа, SDRAM использует внутреннее разделение массива памяти на два независимых банка, что позволяет совмещать выборку из одного банка с установкой адреса в другом. SDRAM также поддерживает блочный обмен. Основное преимущество SDRAM состоит в поддержке последовательного доступа в синхронном режиме, где не требуется дополнительных тактов ожидания. При случайном доступе SDRAM работает практически с той же скоростью, что и FPM/EDO.
РВ SRAM (Pipelined Burst SRAM — статическая память с блочным конвейерным доступом) — разновидность синхронных SRAM с внутренней конвейеризацией, за счет которой примерно вдвое повышается скорость обмена блоками данных.
Кроме основного ОЗУ, устройством памяти снабжается и устройство отображения информации — видеодисплейная система. Такая память называется видеопамятью и располагается на плате видеоадаптера.
Видеопамять служит для хранения изображения. От ее объема зависит максимально возможное разрешение видеокарты — АхВхС, где А — количество точек по горизонтали, В — по вертикали, С— количество возможных цветов каждой точки. Например, для разрешения 640х480х16 достаточно иметь видеопамять 256 Кбайт, для 800х600х256 — 512 КБ, для 1024х768х65536 (другое обозначение — 1024x768x64k) — 2 Мбайт и т.д. Поскольку для хранения цветов отводится целое число разрядов, количество цветов всегда является целой степенью 2 (16 цветов — 4 разряда, 256 — 8 разрядов, 64k — 16 и т.д.).
В видеоадаптерах используются следующие типы видеопамяти.
FPM DRAM (Fast Page Mode Dynamic RAM — динамическое ОЗУ с быстрым страничным доступом) — основной тип видеопамяти, идентичный используемой в системных платах. Активно применялась до 1996 г. Наиболее распространенные микросхемы FPM DRAM — четырехразрядные DIP и SOJ, а также шестнадцатиразрядные SOJ.
VRAM (Video RAM — видео-ОЗУ) — так называемая двухпортовая DRAM с поддержкой одновременного доступа со стороны видеопроцессора и центрального процессора компьютера. Позволяет совмещать во времени вывод изображения на экран и его обработку в видеопамяти, что сокращает задержки и увеличивает скорость работы.
EDO DRAM (Extended Data Out DRAM — динамическое ОЗУ с расширенным временем удержания данных на выходе) — память с элементами конвейеризации, позволяющей несколько ускорить обмен блоками данных с видеопамятью.
SGRAM (Synchronous Graphics RAM — синхронное графическое ОЗУ) — вариант DRAM с синхронным доступом, когда все управляющие сигналы изменяются одновременно с системным тактовым синхросигналом, что позволяет уменьшить временные задержки.
WRAM (Window RAM — оконное ОЗУ) — EDO VRAM, в котором окно, через который обращается видеоконтроллер, сделано меньшим, чем окно для центрального процессора.
MDRAM (Multibank DRAM — многобанковое ОЗУ) — вариант DRAM, организованный в виде множества независимых банков объемом по 32 Кбайт каждый, работающих в конвейерном режиме.
Увеличение скорости обращения видеопроцессора к видеопамяти, кроме повышения пропускной способности адаптера, позволяет повысить максимальную частоту регенерации изображения, что снижает утомляемость глаз оператора.
Микросхемы памяти имеют четыре основные характеристики — тип, объем, структуру и время доступа. Тип обозначает статическую или динамическую память, объем показывает общую емкость памяти, а структура — количество ячеек памяти и разрядность каждой ячейки. Например, 28/32-выводные DIP-микросхемы SRAM имеют 8-разрядную структуру (8kx8, 16kx8, 32kx8, 64kx8, 128kx8), кэш объемом 256 Кбайт состоит из восьми микросхем 32kx8 или четырех микросхем 64kx8 (речь идет об области данных, дополнительные микросхемы для хранения признаков могут иметь другую структуру). Две микросхемы по 128kx8 поставить уже нельзя, так как нужна 32-разрядная шина данных, что могут обеспечить только четыре микросхемы. Распространенные РВ SRAM в 100-выводных корпусах PQFP имеют 32-разрядную структуру 32kx32 или 64kx32 и используются по две или по четыре в платах для Pentium.
30-контактные SIMM имеют 8-разрядную структуру и используются с процессорами 286, 386SX и 486SLC по две, а с 386DX, 486DLC и обычными 486DX — по четыре. 72-контактные SIMM имеют 32-разрядную структуру и могут использоваться с 486DX по одной, а с Pentium и Pentium Pro — по две. 168-контактные DIMM имеют 64-разрядную структуры и используются в Pentium и Pentium Pro по одной. Установка модулей памяти или микросхем кэша в количестве больше минимального для данной системной (материнской) платы позволяет ускорить работу с ними, используя принцип чередования (Interleave).
Время доступа характеризует скорость работы микросхемы и обычно указывается в наносекундах после тире в конце наименования. На более медленных микросхемах могут указываться только первые цифры (-7 вместо -70, -15 вместо -150), на более быстрых статических "-15" или "-20" обозначает реальное время доступа к ячейке. Часто на микросхемах указывается минимальное из всех возможных времен доступа, например, распространена маркировка 50 EDO DRAM вместо 70, или 45 — вместо 60, хотя такой цикл достижим только в блочном режиме, а в одиночном режиме микросхема по-прежнему имеет время доступа 70 или 60 нс. Аналогичная ситуация имеет место в маркировке РВ SRAM: 6 вместо 12, и 7 вместо 15. Микросхемы SDRAM обычно маркируются временем доступа в блочном режиме (10 или 12 нс).
ИМС памяти реализуются в корпусах следующих типов.
DIP (Dual In line Package — корпус с двумя рядами выводов) — классические микросхемы, применявшиеся в блоках основной памяти IBM PC/XT и ранних PC/AT, сейчас применяются в блоках кэш-памяти.
SIP (Single In line Package — корпус с одним рядом выводов) — микросхема с одним рядом выводов, устанавливаемая вертикально.
SIPP (Single In line Pinned Package — модуль с одним рядом игольчатых выводов) — модуль памяти, вставляемый в панель наподобие микросхем DIP/SIP; применялся в ранних IBM PC/AT.
SIMM (Single In line Memory Module — модуль памяти с одним рядом контактов) — модуль памяти, вставляемый в зажимный разъем; применяется во всех современных платах, а также во многих адаптерах, принтерах и прочих устройствах. SIMM имеет контакты с двух сторон модуля, но все они соединены между собой, образуя как бы один ряд контактов. На SIMM в настоящее время устанавливаются преимущественно микросхемы FPM/EDO/BEDO.
DIMM (Dual In line Memory Module — модуль памяти с двумя рядами контактов) — модуль памяти, похожий на SIMM, но с раздельными контактами (обычно 2х84), за счет чего увеличивается разрядность или число банков памяти в модуле. Применяется в основном в компьютерах Apple и новых платах Р5 и Р6. На DIMM устанавливаются микросхемы EDO/BEDO/SDRAM.
CELP (Card Egde Low Profile — невысокая карта с ножевым разъемом на краю) — модуль внешней кэш-памяти, собранный на микросхемах SRAM (асинхронный) или РВ SRAM (синхронный). По внешнему виду похож на 72-контактный SIMM, имеет емкость 256 или 512 Кбайт. Другое название — COAST (Cache On A STick — буквально "кэш на палочке").
Модули динамической памяти кроме основных ячеек памяти могут иметь дополнительные ячейки для хранения битов четности (Parity) для байтов данных; такие SIMM иногда называют 9- и 36-разрядными модулями (по одному биту четности на байт данных). Биты четности служат для контроля правильности считывания данных из модуля, позволяя обнаружить часть ошибок (см. разд. 9.7). Модули с битами четности имеет смысл применять лишь там, где нужна очень высокая надежность. Для обычных применений подходят и тщательно проверенные модули без битов четности, однако при условии, что системная плата поддерживает такие типы модулей.
Проще всего определить тип модуля по маркировке и количеству микросхем памяти на нем: например, если на 30-контактном SIMM две микросхемы одного типа и еще одна — другого, то две первых являются основными (каждая — по четыре разряда), а третья предназначена для хранения битов четности (она одноразрядная).
В 72-контактном SIMM с двенадцатью микросхемами восемь из них хранят данные, а четыре — биты четности. Модули с количеством микросхем 2, 4 или 8 не имеют памяти для хранения битов четности.
Иногда на модули ставится так называемый имитатор четности — микросхема-сумматор, выдающая при считывании ячейки всегда правильный бит четности. В основном это предназначено для установки таких модулей в платы, где проверка четности не отключается.
72-контактные SIMM имеют четыре специальных линии PD (Presence Detect — обнаружение наличия), на которых при помощи перемычек может быть установлено до 16 комбинаций сигналов. Линии PD используются в некоторых материнских платах для определения наличия модулей памяти в разъемах и их параметров (объема и быстродействия). В большинстве универсальных плат производства "третьих фирм", как и выпускаемые ими SIMM, линии PD не используются.
В модулях DIMM в соответствии со спецификацией JEDEC технология PD реализуется при помощи перезаписываемого ПЗУ с последовательным доступом (Serial EEPROM) и носит название Serial Presence Detect (SPD). ПЗУ представляет собой 8-выводную микросхему, размещенную в углу платы DIMM, а его содержимое описывает конфигурацию и параметры модуля. Системные платы с набором микросхем (чипсетами) 440LX/BX могут использовать SPD для настройки системы управления памятью. Некоторые системные платы могут обходиться без SPD, определяя конфигурацию модулей обычным путем.
Контрольные вопросы и задания
1. Какие типы памяти существуют?
2. Проведите моделирование ячейки статической памяти на рис. 9.46. Задачей моделирования является выбор двоичных комбинаций для сигналов на входе ячейки и регистрация результата на выходе ячейки с помощью индикатора IND.
3. На базе схемы на рис. 9.45 разработайте схему четырехразрядного ОЗУ с применением генератора слова. При этом в схеме на рис. 9.45 используйте только 4 младших адреса (два по строкам и два по столбцам) и соответственно только две шины данных (две входные и две выходные). К выходным шинам подключите индикаторы.
4. Где в современных компьютерах используется память статического типа?
5. Чем отличается динамическая память от статической?
6. Какие типы динамической памяти используются в современных компьютерах?
7. Что такое видеопамять и как она связана с характеристиками отображаемой на дисплее информации?
8. Какие типы памяти используются в качестве видеопамяти?
9. Какое конструктивное оформление имеют микросхемы памяти?