Итак, если процессору 8088 требовалось четыре такта для передачи данных, то современным процессорам — всего один. Например, Pentium, работающий на внутренней тактовой частоте 100 МГц, с внешней кэш-памятью (время доступа 15 нс) мог обеспечить пакетный режим 3-2-2-2. Для обмена с динамической памятью параметры будут в два-три раза хуже, например 7-3-3-3. Хотя теоретически микропроцессор 486DX2-66 мог бы реализовать пакетный режим 2-1-1-1, но с обычной динамической памятью (время доступа 70 нс) реальные значения будут на уровне 5-2-2-2.
В настоящее время можно выделить два основных схемотехнических решения, используемых для увеличения быстродействия динамической памяти. Одно из них основано на синхронной работе памяти и процессора, что достигается использованием внутренней конвейерной архитектуры и чередованием адресов. Другое решение предполагает включение в структуру динамической памяти определенного количества быстрой статической памяти, которая в данном случае работает примерно как встроенный кэш.
Синхронная DRAM (Synchronous DRAM, SDRAM) и синхронная графическая RAM (Synchronous Graphics RAM, SGRAM) — еще две популярных вариации на ту же тему. Оба эти типа однопортовые, и поэтому несколько дешевле, чем VRAM или WRAM. Преимущество SDRAM и SGRAM перед обычной DRAM в том, что эти микросхемы памяти используют тот же сигнал таймера, что и CPU. Это означает, что данные микросхемы памяти готовы к передаче данных тогда, когда CPU их ожидает. Подобные микросхемы используют трехступенчатую конвейерную архитектуру и, кроме того, внутренний доступ типа "пинг-понг" к двум блокам памяти с чередованием адресов. Тактирование микросхем осуществляется внешней частотой для микропроцессоров. Современные SDRAM могут работать на тактовых частотах 66, 75, 83,100 и 133 МГц. Пионерами в разработке подобных устройств являются фирмы Samsung и NEC. При использовании других типов памяти CPU требуется больше времени, чтобы убедиться, что микросхема передала данные, а это создает непроизводительные задержки. Стоит отметить, что первый доступ в пакетном режиме выполняется медленнее для микросхем SDRAM, нежели, например, EDRAM. Для последующих трех — все наоборот.
Одним из наиболее быстродействующих типов памяти является RDRAM (Rambus DRAM). Это, наверное, наиболее сильно отличающаяся дизайном память, потребовавшая абсолютно новой архитектуры. Кроме того, из всех созданных на сегодняшний день технологий эта обладает наибольшим потенциалом по скорости. Однако этот потенциал стоит недешево. RDRAM должна соединяться с CPU через очень специфическую шину, которая не может быть слишком длинной. Тактируемая частотой 250 МГц 9-разрядная RDRAM достигает пиковой скорости передачи 500 Мбайт/с, а 2 ГГц – 4 Гбайт/с. Вообще говоря, Rambus-архитектура состоит из трех частей: Rambus-интерфейса, Rambus-канала и Rambus-микросхем. Вследствие использования высоких тактовых частот серьезные требования предъявляются к печатным платам и соединениям. Подобная память, впервые разработанная американской компанией Rambus, в настоящее время выпускается такими компаниями, как NEC, Fujitsu и Toshiba. Пройдет время, прежде чем мы увидим RDRAM в качестве основной памяти PC. Несмотря на это, Intel обратилась к RDRAM как к решению проблемы нехватки памяти компьютера в недалеком будущем, а так как Intel является основным производителем материнских плат для PC, можно ожидать претворения этой затеи в жизнь.
Стоит отметить, что существуют и другие типы памяти, причем более или менее экзотические. Например, в MDRAM (Multibank DRAM) вся память делится на 10 маленьких банков, время доступа к которым существенно меньше времени доступа к одному большому: 15 не против 50 не. Тем не менее, по оценкам экспертов, в ближайшее время не следует ожидать ухода от массового использования в персональных компьютерах так называемой EDO (Extended Data Out) DRAM или ее разновидности BEDO (Burst EDO) DRAM. Во-первых, она обеспечивает более высокую скорость передачи (особенно в пакетном режиме), а во-вторых, полностью совместима по выводам с современными SIMM-модулями DRAM. В отличие от обычных микросхем DRAM в EDO DRAM добавлен набор регистров-"защелок", благодаря которым данные на выходе могут удерживаться даже в течение следующего запроса к микросхеме. Такого эффекта можно добиться на обыкновенных DRAM только в режиме чередования адресов. Напомним, что в любом обращении к памяти можно выделить три фазы: начало доступа; период, когда данные становятся действительными, и непосредственно передача. Эти фазы повторяются последовательно для каждой ячейки в считываемой строке. В случае с EDO-памятью временные параметры (а следовательно, и быстродействие) улучшаются за счет исключения циклов ожидания в фазе готовности данных. По некоторым данным, EDO DRAM работает быстрее FPM DRAM примерно на 20—25%. Однако при использовании кэш памяти второго уровня (L2) быстродействие возрастает только на 5%. Стоит отметить, что EDO-память дороже обычных DRAM на 7—10%. Именно поэтому в настоящее время EDO-память рекомендуется использовать в недорогих системах без кэш-памяти, что в данном случае достаточно эффективно. Кроме того, оправдано применение EDO-памяти и в многозадачных системах.
Эта история не имеет конца. Я всего лишь надеюсь дать некоторое представление о том, как выглядит ситуация в настоящий момент. Через несколько лет, без сомнения, перед нами предстанет совершенно иная картина чипов памяти. Можно быть уверенным только в одном, — это будет более быстрая, более дешевая и более вместительная память. Естественно, программы будущего наверняка будут требовать больше места и скорости, чем мы сможем им предоставить.
Видеоподсистеме нужна какая-то память, где она могла бы строить изображение, впоследствии выводимое на экран монитора. Эту память называют буфером видеокадра (video frame buffer). (Если мониторов два, то у каждого из них, скорее всего, будет свой кадровый буфер.) Кроме того, видеосистемы обычно имеют в своем распоряжении еще и дополнительную (по отношению к кадровому буферу) память.
В современных видеосистемах с высоким разрешением и большой глубиной цветов вполне обычным уже является кадровый видеобуфер размером 8 - 64 Мб. Еще больше памяти используется в высококачественных (high-end) системах.
И наконец, видеосистема может использовать свою память, не привлекая к этому CPU. Основное назначение кадрового буфера в видеосистеме — это сохранение изображения, находящегося в данный момент на экране, и постоянная подкачка пикселов к монитору, чтобы он мог перерисовывать изображение. Но системе может понадобиться место для временного размещения узора какого-либо шрифта или некоторое рабочее пространство для проведения различных действий графического ускорения. Обычно именно для этого используется незанятая кадровым изображением часть кадрового буфера памяти.
Функционально кэш-память предназначена для согласования скорости работы сравнительно медленных устройств, таких, на пример, как динамическая память, с относительно быстрым микропроцессором. Дело в том, что работа большинства элементов, на которых построен процессор, во многом похожа на работу ячеек статической памяти — триггеров. Поэтому их быстродействие существенно выше, нежели элементов динамической памяти. Использование кэш-памяти позволяет избежать циклов ожидания в его работе, которые снижают производительность всей системы.
Для пользователей IBM PC-совместимых компьютеров использование кэш-памяти началось еще с 386-х микропроцессоров. Для таких устройств, синхронизируемых, например, частотой 33 МГц, тактовый период составляет приблизительно 30 нс. Обычные микросхемы динамической памяти имеют время выборки от 60 до 100 нс. Отсюда, в частности, следует, что центральный процессор вынужден простаивать 2—3 периода тактовой частоты (то есть имеет 2—3 цикла ожидания), пока информация из соответствующих микросхем памяти установится на системной шине данных компьютера. Понятно, что в это время процессор не может выполнять никакую другую работу. Такая ситуация приводит к снижению общей производительности системы, что, разумеется, крайне нежелательно. Таким образом, узким местом системы становится оперативная динамическая память. Из этого положения существует, казалось бы, простой выход — использовать в качестве основной памяти достаточно быструю статическую. Однако если основную оперативную память выполнить на микросхемах статической памяти, то стоимость компьютера возрастет очень существенно. Таким образом, с помощью технологии обработки, использующей кэш-память, найден определенный компромисс между стоимостью и производительностью системы.
Заметим, что работа кэш-памяти практически "прозрачна" (то есть невидима) для пользователя. Тем не менее, она очень важна. В IBM PC-совместимых компьютерах технология использования кэш-памяти помимо обмена данными между микропроцессором и основной оперативной памятью находит применение также между основной оперативной памятью и внешней (накопителями на сменных и несменных носителях).
Архитектура кэш-памяти
Прежде чем говорить об архитектуре кэш-памяти, введем такое понятие, как длина строки-кэша (cache-line). Если при обмене данными между устройствами речь обычно идет о блоке информации, то для кэш-памяти существует некий набор данных, называемых строкой. Итак, архитектура кэш-памяти определяется тем, каким образом достаточно большая по размеру основная память отображается на сравнительно небольшой кэш. Существуют, вообще говоря, три разновидности отображения: кэш-память с прямым отображением (direct-mapped cache), частично, или наборно-ассоциативная (set-associative cache) и полностью ассоциативная (fully associative cache). Все эти архитектуры так или иначе используются для построения кэш-памяти современных микропроцессоров.
Кэш-память с прямым отображением
Самой простой организацией обладает кэш-память с прямым отображением. В этом случае адрес памяти полностью определяет используемую строку кэша. Таким образом, один или несколько блоков оперативной памяти строго соответствуют одной строке кэша, однако поскольку занимать ее в одно и то же время может только один из них, то для каждой строки используется специальный признак — тег (tag).