Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по ВС.doc
Скачиваний:
228
Добавлен:
22.03.2016
Размер:
1.1 Mб
Скачать

Статическая и динамическая память

В статических ОЗУ записанная информация хранится, пока на интегральную схему подается питание. Дело в том, что запоминающий элемент, или ячейка статического ОЗУ представляет собой триггер, рисунок 6.х. Этот триггер строится на основе четырех или шести транзисторов. Схема триггера на четырех транзисторах проще, обладает меньшей стоимостью, но у нее больший ток утечки и она более чувствительна к воздействию внешних источников излучения. Два дополнительных транзистора служат не только для уменьшения перечисленных недостатков, но и повышают быстродействие такой схемы.

Рисунок 6.х Запоминающий элемент статической памяти

Динамическая память, как уже отмечалось выше, в качестве запоминающего элемента содержит конденсатор; кроме того, в ней используются три транзистора: для поддержания заряда конденсатора, для записи и чтения. Но конденсатор не может удерживать заряд бесконечно долго, поэтому для предотвращения потерь информации производится периодическое восстановление заряда, или регенерация.

В качестве ОП в персональных компьютерах обычно используется динамические ОЗУ, так как они дешевле и меньше по размерам, а меньшее быстродействие компенсируется наличием статической кэш-памяти.

Методы ускорения обменов с ОП

В персональных компьютерах долгое время использовалась динамическая память, работающая в режиме быстрого страничного обмена FPM DRAM. Собственно запоминающая часть такой памяти представляет собой множество ячеек, расположенных в виде прямоугольной матрицы. При чтении цикл обращения к ней начинается с активизации строки в запоминающей матрице, после чего выполняется активизация столбца адресуемой ячейки. Каждый прочитанный элемент данных проверяется на правильность и после этого передается процессору для обработки. Когда найдена нужная ячейка, столбец деактивируется и подготавливается к следующему циклу, что вызывает состояние ожидания. Следующий столбец в этой строке можно активировать, если предположить, что очередной квант данных расположен в соседней ячейке. В такой памяти цикл чтения четырех элементов, занимающих одну строку памяти, может выполняться за 15 тактов: на чтение первого элемента тратится шесть тактов, так как нужно активизировать строку и столбец, и по три такта на получение последующих трех элементов (для их чтения нужно активизировать лишь очередной столбец).

В основу технологии EDO DRAM (динамическая память с увеличенным временем доступности данных) положена та же память. Работа EDO DRAM точно также начинается с активизации строки и столбца. Однако после нахождения элемента данных в памяти этого типа буфер данных остается включенным до обращения к следующему столбцу, т.е. устраняется состояние ожидания. Это позволяет сэкономить три такта при передаче пакета из четырех слов.

Самой быстрой представляется синхронная динамическая память (SDRAM). Основная особенность ее состоит в способности синхронизировать все операции с тактовыми сигналами процессора. Это уменьшает время обращения к столбцу памяти. Внутри памяти SDRAM находится счетчик, который увеличивается при адресации столбца, что позволяет инициировать новое обращение к памяти до завершения предыдущего. Все это позволяет затрачивать пять тактов на чтение первого слова и по одному такту на чтение последующих слов, т.е. всего 8 тактов.

В последнее время появилась синхронная динамическая память с удвоенной скоростью передачи данных DDR SDRAM. В этой динамической памяти данные в пакетном режиме выдаются по обоим фронтам импульса синхронизации, за счет чего ее пропускная способность увеличивается вдвое. Этот тип динамической памяти в настоящее время является наиболее распространенным для персональных компьютеров.

Несмотря на большое число различных разработанных видов динамической памяти, отличающихся, помимо принципов построения, способами поиска и передачи информации во внешние цепи, скорость ее работы существенно отстает от скорости процессора. При одновременном увеличении тактовой частоты и ширины выборки возникают проблемы с электромагнитной совместимостью, труднее обеспечить одновременность получения всех информационных битов, сложнее организовать широкую шину между памятью и процессором. Поэтому обычно используют широкую шину (до 64 и даже 128 бит) при ограниченной частоте шины.

В памяти Rambus Direct RAM (DRDRAM) ширина выборки уменьшена до 16 бит, но частота увеличена до 800 МГц (и даже до 1600 МГц). Передача осуществляется пакетами: существует три вида пакетов – данных, строк и столбцов. Пакеты строк и столбцов служат для передачи команд управления, которые заменяют обычные сигналы RAS, CAS, WE и CS. Однако память Rambus используется редко из-за дороговизны и возникающих технологических сложностей. Существует множество других видов динамической памяти, предназначенных для будущих персональных компьютеров, например, SLDRAM, ESDRAM, CDRAM. Эти виды памяти используют те же способы сокращения времени доступа, что и рассмотренные выше, но более высокая скорость передачи данных в них связана со значительным усложнением контроллера.

6.4 Кэш-память

Для достижения более высокого быстродействия между сравнительно медленной основной памятью, использующей динамические элементы, и относительно быстрым процессором размещают буферную память, получившую название кэша, или кэш-памяти. Использование кэш-памяти позволяет избегать циклов ожидания в работе процессора, которые снижают производительность всей системы.

Кэш-память предназначена для кратковременного хранения информации и выдачи ее в процессор. Она не является программно доступной и служит только для повышения производительности, но не увеличивает общую емкость памяти и не влияет на программирование. Кэш-память бывает нескольких уровней. Кэш первого уровня L1 обычно интегрируется с процессором и служит для предварительной выборки команд и данных. Во многих процессорах кэш первого уровня разделен на два: на кэш команд и кэш данных, см. рисунок 5.х. Его объем в современных процессорах составляет от 4 до 64Кбайт (и даже до 128Кбайт), а время обращения около 10 нс. Когда мы говорим о кэш-памяти, то обычно подразумеваем кэш второго уровня, или L2. Он служит для ускорения обращений процессора к программам и данным при их обработке. Этот кэш строится на базе очень быстрой и довольно дорогой статической памяти (SRAM) и хранит наиболее часто используемую процессором информацию. Физически кэш второго уровня выполняют в виде отдельной микросхемы или интегрированным с процессором в зависимости от возможностей технологии. Объем кэш-памяти второго уровня в процессорах разного назначения составляет от 256Кбайт (в персональных компьютерах) до 8 Мбайт (в серверах), а время обращения 15-20 нс. В некоторых компьютерах предусматривается также кэш третьего уровня L3, однако его эффективность невелика.

Наличие кэш-памяти не должно вызывать затруднений при программировании и нарушать принятых принципов адресации. Чтобы «скрыть» от программиста наличие кэш-памяти, в ней используют ассоциативный принцип хранения и поиска информации.

В кэш-памяти располагается та же информация, что и в ОП. Любое обращение процессора к памяти вначале всегда направляется в кэш-память и только при отсутствии в ней соответствующей информации продолжается ее поиск в ОП. Найденное слово передается в процессор для обработки, но при этом из ОП забирается целый блок информации, состоящий из нескольких слов, которые заносятся в кэш-память. При повторном обращении процессора к данным или командам из этого блока они уже будут находиться в кэш-памяти. А так как и команды, и данные обычно занимают последовательные ячейки памяти, то весьма высока вероятность, что следующее обращение в кэш-память будет успешным. При работе с кэш-памятью применяется ассоциативный принцип: старшие разряды адреса используются в качестве признака, а младшие — для выбора слова.

Существует три вида организации кэш-памяти: с прямым отображением, полностью ассоциативная и множественно ассоциативная.

  • В кэш-памяти с прямым отображением информационный блок из ОП записывается всегда в одно и то же фиксированное место. При этом при записи блока в кэш-память используются младшие разряды его адреса ОП. Они также записываются в виде тега вместе с информацией из основной памяти. Для информации, хранящейся в ячейках ОП с одинаковыми младшими разрядами адреса, предназначен один блок кэш-памяти. Так, если основная память разделена на 16384 блока, а объем кэш-памяти позволяет разместить только 128 блоков, то в строке 0 кэш-памяти могут находиться данные из 0, 128, 256,...,16256 блоков ОП, в строке 1 – данные из 1, 129, 257,…,16257 блоков ОП и т.д. Такая кэш-память наиболее дешева, но и требует наиболее частой замены блоков; вероятность «попадания» сравнительно низкая. Кэш с прямым отображением используется в простых недорогих компьютерах.

  • Если информационный блок ОП может быть помещен на любое место кэш-памяти, то ее называют полностью ассоциативной. Полностью ассоциативную кэш-память почти не используют из-за сложности схем управления.

  • В множественно ассоциативной кэш-памяти информационный блок ОП может располагаться на ограниченном числе мест. Обычно такое «множество» состоит из четырех каналов. В персональных компьютерах как правило используют именно четырехканальную множественно ассоциативную кэш-память. В ней сочетаются достоинства прямого и полностью ассоциативного отображения.

На рисунке 6.х приведена одна из возможных организаций множественно ассоциативной кэш-памяти. Такая память состоит из собственно запоминающего устройства, в котором хранятся копии взятых в ОП информационных блоков, таблицы адресов (ТА) и управляющих схем. Рассмотрим операцию чтения. Поступающий из процессора адрес разбивается на три части: поле смещения (Aсм), служащее для выбора нужного байта внутри блока, поле индекса(Aинд), определяющее номер множества, и поле тега (Aт), т.е.

А = Aт, Aинд, Aсм.

Обмен данными между кэш-памятью и ОП производится блоками. В таблице адресов (называемой также справочником) для каждого блока, расположенного в ЗУ по адресу Aинд, находятся адреса страниц, или тегов Aт тех блоков, что были уже скопированы в кэш-память во время предыдущих операций чтения. При обращении процессора адрес запрашиваемой информации передается в регистр, где он разбивается на три части. Находящиеся в таблице адресов номера страниц сравниваются с номером страницы (т.е. старшими разрядами адреса) запрашиваемого блока. Если выявляется совпадение адресов страниц, то запрашиваемый блок находится в соответствующем разделе кэш-памяти.

ЗУ

&

К ЦП

ТА

Aт Aинд Aсм

Рисунок 6.х Одна из возможных схем организации кэш-памяти

Производится выборка этого блока по адресу А = Aинд, Aсм. Если совпадения номеров страниц не произошло, то искомый блок отсутствует в ассоциативной памяти, и адрес нужного слова передается ОП. [Для ускорения работы памяти обычно адрес передается в кэш-память и в ОЗУ одновременно, но если искомое слово находится в кэш-памяти, то там оно будет найдено быстрее, и поэтому результат поиска в ОЗУ будет не нужен.]

Найденное слово из оперативной памяти передается в процессор для обработки, а весь блок переписывается в кэш-память. При копировании блока он направляется в раздел кэш-памяти, адрес которого определяется с помощью таблицы активности блоков (на рисунке она не показана). Эта таблица содержит предысторию обращений к каждому блоку и служит для вытеснения из кэш-памяти неиспользуемых блоков. Используется одна из двух стратегий – случайная или LRU (least recently used – т.е. заменяется блок, который дольше других не использовался). В первом случае новый блок вытесняет из кэш-памяти любой блок, выбираемый случайным образом; эту стратегию значительно проще реализовать в аппаратуре. Во втором случае, из кэш-памяти удаляется блок, к которому в течение последнего времени не было обращений. Эта стратегия требует фиксации обращений в таблице активности, что может значительно усложнить ее реализацию. Обычно реализация этой стратегии выполняется с помощью «очереди», в которую заносятся ссылки на заполняемые строки кэш-памяти. При обращении к строке ссылка на нее перемещается в конец очереди. Таким образом, в начале очереди всегда будет находиться ссылка к строке, к которой обращение производилось раньше, чем к другим строкам.

Теперь остановимся на операциях записи в память. Эти операции встречаются намного реже операций чтения; обычно они составляют менее 10% от общего числа операций, но пренебрегать ими нельзя. Существует две возможности:

  • сквозная запись (write through), при которой запись осуществляется одновременно и в кэш-память, и в ОП. В этом случае наличие кэш-памяти никак не скажется на скорости работы машины при записи обработанной информации в память. Время, необходимое для записи слова в ОП, превышает длительность записи в кэш-память, а пока не завершена запись результата предыдущей операции, продолжать работу невозможно.

  • запись с обратным копированием (write back), при которой запись информации при обработке производится только в кэш-память. Это происходит быстро, но, естественно, что при этом в кэш-памяти и ОП могут храниться различающиеся копии одних и тех же данных. Измененный блок из кэш-памяти передается в ОП только при его замещении. Для еще большего сокращения операций записи каждому блоку ставится в соответствие бит модификации, который отменяет запись блока в ОП, если он не изменялся.

Как правило, в персональных компьютерах сегодня используют сквозную запись, хотя она и не обеспечивает выигрыша во времени при записи. Это вызвано тем, что ее проще реализовать, чем запись с обратным копированием. Кроме того, при сквозной записи ОП и кэш-память всегда содержат одинаковые копии данных, что значительно упрощает процедуру ввода-вывода и организацию мультипроцессорных систем.