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

67 Согласование содержимого кэш-памяти и оп. Стратегии записи в кэш-памяти.

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

Немедленное обновление элемента основной памяти называется сквозной

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

С процессом записи связана еще одна проблема: что происходит, если нужно

записать что-либо в ячейку, которой нет в кэш-памяти? Должны ли данные передаваться в кэш или просто записываться в основную память? И снова ни один из ответов не является во всех отношениях лучшим. В большинстве разработок, в которых применяется обратная запись, данные передаются в кэш-память. Эта технология называется заполнением по записи (write allocation). С другой стороны, в тех разработках, где применяется сквозная запись, элемент в кэш-память при записи обычно не помещается, поскольку это усложняет систему. Заполнение по записи полезно только в том случае, если имеют место повторные записи в одно и то же слово или в разные слова в пределах одной строки кэша.

68 Многоуровневая кэш-память. Принстонская и гарвардская архитектуры кэш-памяти.

Проще всего разработать объединенную кэш-память (unified cache), в которой будут храниться и данные и команды. В этом случае вызов команд и данных автоматически уравновешивается. Однако в настоящее время существует тенденция к использованию разделенной кэш-памяти (split cache), когда команды хранятся в одной кэш-памяти, а данные — в другой. Такая архитектура называется гарвардской (Harvard architecture), поскольку идея использования отдельной памяти для команд и отдельной памяти для данных впервые воплотилась в компьютере Mare III, который был создан Говардом Айкеном (Howard Aiken) в Гарварде. Современные разработчики пошли по этому пути, поскольку сейчас широко распространены конвейерные архитектуры, а при конвейерной организации должна быть возможность одновременного доступа и к командам, и к данным (операндам). Разделенная кэш-память позволяет осуществлять параллельный доступ, а общая — нет. К тому же, поскольку команды обычно не меняются во время выполнения программы, содержание кэша команд не приходится записывать обратно в основную память.

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

м ожет быть три и более уровня кэш-памяти. На рисунке изображена система с тремя уровнями кэш-памяти. Прямо на микросхеме центрального процессора находится небольшой кэш для команд (L1-I) и небольшой кэш для данных (L1-D) объемом обычно от 16 до 64 Кбайт. Есть еще кэш-память второго уровня (L2), которая расположена не на самой микросхеме процессора, а рядом с ним в том же блоке. Кэш-память второго уровня соединяется с процессором через высокоскоростной тракт данных. Эта кэш-память обычно не является разделенной и объединяет данные и команды. Ее размер — от 512 Кбайт до 1 Мбайт. Кэш-память третьего уровня (L3) находится на той же плате, что и процессор, и обычно состоит из статического ОЗУ в несколько мегабайтов, которое функционирует гораздо быстрее, чем динамическое ОЗУ основной памяти. Как правило, все содержимое кэш-памяти первого уровня находится в кэш-памяти второго уровня,

а все содержимое кэш-памяти второго уровня — в кэш-памяти третьего уровня.

По коду адреса в РгА БАВ формирует в соответствующей ячейке памяти сигналы, позволяющие произвести в ячейке считывание или запись слова.

Блок управления БУП генерирует необходимые последовательности управляющих сигналов, инициирующих работу отдельных узлов памяти.

Цикл обращения

Цикл обращения к памяти инициируется поступлением в БУП извне сигнала «Обращение».

О бщая часть цикла обращения включает в себя:

  • прием в РгА с шины адреса (ША) адреса обращения;

  • прием в БУП и расшифровку управляющего сигнала «Операция», указывающего вид запрашиваемой операции (считывание или запись).

При считывании:

  • БАВ дешифрирует адрес, посылает сигналы считывания в заданную адресом ячейку ЗМ, при этом код записанного в ячейке слова считывается усилителями считывания БУС и передается в РгИ;ц

  • операция завершается выдачей слова из РгИ на выходную информационную шину ШИВых.

При записи:

  • прием записываемого слова с входной информационной шины ШИВх в РгИ;

  • запись слова из РгИ в выбранную БАВ ячейку.