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

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

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

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

Все элементы в ITCиDTCлокального процессора, могут быть сброшены последовательностью инструкцийptc.e(PurgeTranslationCacheEntry– сброс элементов кэша трансляции). Инструкция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.