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

3.2.2. Внутренние кэш-памяти команд и данных

В современных МП реализованы отдельные кэш-памяти для данных и команд. Исполь­зование раздельных кэш-памятей для данных и команд обеспечивает одновременные кэш-просмотры. До двух команд и до одного данного в формате до 128 разрядов можно одно­временно просмотреть в кэш-памятях. Каждая кэш-память поддерживает до 16Кбайт. Стро­ка может быть скопирована из основной памяти в кэш-память за четыре обмена.

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

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

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

Кэш-память данных. Рис. 3.10. иллюстрирует организацию кэш-памяти данных. Кэш-память данных использует два разряда статуса для каждого физического тега и один разряд статуса - разряд корректности -для виртуального тега.

Кэш-попадание по виртуальному тегу возможно лишь, когда разряд корректности вирту­ального тега установлен, а состояние физического тега-это М,Е или S.

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

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

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

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

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

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

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

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

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

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

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