Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПиП МПС(Ассемблер Левицкий экт 4) / MProc / M9 / Системная архитектура часть 4..doc
Скачиваний:
73
Добавлен:
16.04.2013
Размер:
751 Кб
Скачать

4.1.1.2. Кэш трансляции (tc)

Кэш трансляции (TC) является структурой определяемой реализацией и предназначен для хранения большого рабочего набора динамических трансляций обращений к памяти (включая IA-32). Для дальнейшей информации о деталях реализации TC процессора Itanium, посмотрите документацию, специфицирующую процессор. Процессор прямо управляет политикой замены всех элементов TC.

В кэше трансляции, элементы устанавливаются программно, с помощью инструкций itc.d (Insert Data Translation Cache – вставить в кэш трансляции данных) и itc.i (Insert Instruction Translation Cache – вставить в кэш трансляции инструкций). Инструкция ptc.l (Purge Translation Cache Local – локальный сброс кэша трансляции) очищает в локальном процессоре все элементы ITC/DTC, которые соответствуют указанному диапазону виртуальных адресов и идентификатору региона. Сбросы всех элементов ITC/DTC, которые соответствуют указанному диапазону виртуальных адресов и идентификатору региона среди всех процессоров в когерентных TLB доменах, могут быть выполнены глобально с помощью инструкций ptc.g и ptc.ga (Purge Translation Cache Global – глобальный сброс кэша трансляции). Когерентный TLB домен охватывает, по крайней мере, процессоры на той самой локальной шине, на которой была запущена операция сброса. Распространение между множеством когерентных TLB доменов, является зависимым от платформы. Программное обеспечение должно обрабатывать случай, где сброс не распространяется на все процессоры в мультипроцессорной системе. Сбросы кэша трансляций не делают недействительными TR элементы.

Все элементы в ITC и DTC локального процессора, могут быть сброшены последовательностью инструкций ptc.e (Purge Translation Cache Entry – сброс элементов кэша трансляции). Инструкция ptc.e не распространяется на другие процессоры.

Во всех моделях процессоров, кэш трансляции имеет, по крайней мере, 1 инструкцию и 1 элемент данных, в дополнение к специфицированным 8 инструкциям и 8 регистрам трансляции данных. Реализации свободны для организации массивов кэша трансляции большего размера. Также, реализация может принять дополнительные уровни иерархии для увеличения эффективности. Требуется, по крайней мере, один уровень кэша трансляции для поддержки всех реализуемых размеров страниц. Дополнительные уровни иерархии могут дать, а могут и не дать оптимизацию эффективности для предпочтительного размера страницы заданного виртуальным регионом, могут быть наборно-ассоциативными или полностью ассоциативными и могут поддерживать ограниченный набор размеров страниц. О деталях реализации кэша трансляции процессора Itanium, пожалуйста, посмотрите документацию, специфицирующую процессор.

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

Чтобы гарантировать продвижение вперед для кода типа Itanium, процессором и программным обеспечением должны соблюдаться следующие правила.

  • Программное обеспечение может вставлять множество элементов кэша трансляции при каждой TLB ошибке, при условии, что для продвижения вперед, требуется только последняя установленная трансляция.

  • Иногда, процессор может аннулировать последний вставленный элемент TC. Процессор должен гарантировать видимость последнего вставленного элемента TC для всех обращений, пока PSR.ic=0. В конечном счете, процессор должен гарантировать видимость последнего вставленного элемента TC, до тех пор, пока rfi не установит PSR.ic=1 и, по крайней мере, одна инструкция ни будет выполнена при PSR.ic=1, причем она завершится без ошибок и прерываний. Иногда, последний вставленный элемент TC может быть удален до этой точки, и программное обеспечение должно быть готово, заново вставить элемент TC на последующей ошибке. Например, активные или принужденные активизации RSE, спекулятивные обходы VHPT, либо другие прерывания перезапускаемых инструкций могут заменить вставленный программой элемент TC, но когда позже, программное обеспечение снова вставит тот же самых элемент TC, процессор должен, в конечном счете, завершить перезапускаемую инструкцию для гарантии продвижения вперед, даже если перезапускаемая инструкция вызовет другие ошибки, которые должны быть обработаны прежде, чем она завершится. Если PSR.ic установлен в 1, инструкцией, не являющейся rfi, то процессор не гарантирует продвижения вперед.

  • Если программное обеспечение вставляет элемент в TLB с перекрывающимся элементом (того же или большего размера) в VHPT, и если обходчик VHPT разрешен, то продвижение вперед не гарантируется. См. раздел 4.1.5.2 «Поиск VHPT».

  • Программное обеспечение может делать обращения только к физическим адресам или виртуальным адресам, которые отображены с помощью TR, либо к адресам отображаемым «только что вставленной» (just-inserted) трансляцией, между вставкой элемента TC и выполнением инструкции при PSR.ic=1, которая зависит от этого элемента для продвижения вперед. Программное обеспечение также может делать повторные попытки выполнения той же самой инструкции с PSR.ic=1. Если программное обеспечение делает любые другие обращения к памяти, чем эти, то процессор не гарантирует продвижения вперед.

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

Код IA-32 имеет более строгие правила продвижения вперед, которые должны соблюдаться и процессором и программным обеспечением. Правила продвижения вперед для IA-32, описаны в разделе 10.6.3.

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