Скачиваний:
84
Добавлен:
13.03.2016
Размер:
105.98 Кб
Скачать

Лекция 5

2.4.Кэш-память

Кэш-память – это быстродействующая память буферного типа, заполняемая с умеренной скоростью из ОП. Кэш-память по сравнению с другими видами запоминающих устройств МПС имеет минимальное время доступа и используется для хранения только тех данных, которые могут понадобиться ЦПУ в ближайшее время.

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

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

2.4.1.Кэш-память прямого отображения

Кэш-память прямого отображения является самым простым типом кэш-памяти. На рис.2.4 приведен пример одноуровневой кэш-памяти, содержащей 1024 блока по 32 байта.

Каждый элемент кэш-памяти состоит из трех частей:

  1. Поле “тэг” (бирка) содержит старшие 17 разрядов адреса памяти, из которого поступил блок данных (адрес блока).

  2. Поле “состояние“ содержит сведения о достоверности данных.

  3. Поле “данные” содержит копию блока данных памяти.

В кэш-памяти прямого отображения данный блок может храниться только в одном месте по номеру блока. Когда процессор выдает адрес памяти, контроллер кэш-памяти выделяет из этого адреса 10 бит номера блока и использует их для поиска в кэш-памяти одного из 1024 элементов. Если этот элемент действителен, то производится сравнение поля “тэг” адреса и поля “тэг” кэш-памяти. Если поля равны, то попадание, иначе – промах. В случае попадания слово считывается из кэш-памяти. При промахе или недействительности, блок вызывается из памяти и сохраняется в кэш-памяти, заменяя тот блок, который там был.

2.4.2. Ассоциативная по множеству кэш-память

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

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

Если нужно поместить новый блок в кэш-память, то какой из старых нужно заместить? Для этого хорошо подходит рассмотренный выше алгоритм LRU.

2.4.3.Обновление кэш-памяти.

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

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

В МПС c несколькими МП, разделяющих общую ОП, также необходимо поддерживать когерентность, но уже и кэшей этих МП.

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

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

Другой вариант поведения при промахах по записи – загрузка кэш-памяти (политика заполнения по записи – write-allocate). Заполнения по записи эффективно, когда высока вероятность повторного обращения к слову, вызвавшему промах.

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

Соседние файлы в папке ВстроенныеСистемы