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

1.5. Согласованность кэш-памяти

Особая ситуация при работе с кэш-памятью возникает в том случае, когда она исполь­зуется в системе с доступом к памяти более чем из одного устройства. Например, пусть два устройства копируют раздел памяти, и устройство 1 обновляет ее первым. Когда уст­ройство 2 производит запись в память, оно «разрушает» любые изменения, сделанные устройством 1. Такое событие называют нарушением согласованности кэш-памяти. Суще­ствуют три подхода к обеспечению согласованности кэш-памяти.

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

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

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

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

3.2. КЭШ-ПАМЯТЬ КОМАНД И ДАННЫХ

Включение в ЧИП МП кэш-памятей команд, данных и адресной трансляции обеспечи­вает: низкую стоимость ЧИПа для подсистемы ЦП;

  • большую ширину обмена процессор - кэш-память: 16 байт для данных, 8 байт для команд;

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

3.2.1. КЭШ-ПАМЯТЬ АДРЕСНОЙ ТРАНСЛЯЦИИ

Современные МП поддерживают или только 4-Кбайтные размеры страниц или как 4-Кбайтные так и 8-Мбайтные размеры страниц, и для каждого размера страниц использу­ются отдельные кэш-буферы (TLB) (TLB-буфер ассоциативной трансляции или, в даль­нейшем, буфер страничной трансляции). Буфер страничной трансляции TLB в МП INTEL для 4-Кбайтных страниц имеет 64 записи (рис. 3.7), а TLB-буфер для 8-Мбайтных страниц (рис. 3.8.) содержит 16 записей. Оба буфера используют 4 ассоциативных входа. Буферы! работают, если разрешена страничная трансляция. При первом обращении к странице ин-' формация, связанная с трансляцией адреса, записывается в соответствующий TLB буфер наряду с другими атрибутами страницы, такими как права доступа и копируемость в кэш­-память. При каждой адресной трансляции осуществляется обращение по линейному адре­су одновременно в оба TLB-буфера. Лишь в том случае, если необходимой информации нет ни в одном из КЭШ-буферов, происходит обращение к таблицам страниц в основной памяти. При обновлении записей используется алгоритм псевдонормального распределе­ния выбора того, какой из четырех входов (блоков) должен замещаться.

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

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

Любая ошибка обращения к данному или команде тотчас же останавливает трансля­цию адреса и TLB буфер не обновляется. Если чтение директории вызывает ошибку обра­щения, таблица страниц вообще не читается.

Если блок страничной трансляции вырабатывает ошибку, например, разряд D для пер­вой записи на чистую страницу, соответствующая запись удаляется из TLB-буфера.

Рис. 3.7. Организация буфера TUB для 4-Кбайтных страниц (D - «грязь»; CD - кэш-копирование разрешено; WT - сквозная запись; U/S - режим пользователь/супервизор; R/W – разрешение записи; V-корректность)

Рис. 3.8. Организация буфера TLB для 8-Мбайтных страниц (D - «грязь»; CD - кэш-копирование разрешено; WT-сквозная запись; U/S-режим пользователь/супервизор; R/W—разрешение записи; V - корректность)