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

4.1.1. Буфер трансляции адресов (tlb)

Термин «Буфер трансляции адресов» является смысловым переводом термина «TranslationLookasideBuffers», буквальным переводом которого является «Буфер преломления взгляда трансляции». Поскольку, по смыслуTLBэто таблица, то здесь и во всем документе, мы будем использовать понятие «ТаблицаTLB».

Как показано на рис. 4.3, процессор содержит две таблицы TLB:TLBинструкций (ITLB) иTLBданных (DTLB). КаждаяTLBобслуживает соответствующие запросы трансляции при обращениях к памяти инструкций и данных (включаяIA-32). Кроме того,TLBданных обслуживает запросы трансляции дляRSEиVHPTобходчика. Далее, таблицыTLBделятся на две подсекции: регистры трансляции (TR–TranslationRegister) и кэш трансляции (TC–TranslationCache).

ITLB

itr0

itr1

itr2

ITR

itrn

itc

ITC

DTLB

dtr0

dtr1

dtr2

DTR

dtrn

dtc

DTC

Рис. 4.3. Организация TLB

В оставшейся части этого документа, термин TLBотносится к объединению структур кэша трансляции и регистров трансляции для инструкций и данных.

Таблица TLBявляется локальным ресурсом процессора, инсталляция трансляции или сброс локального процессора не затрагиваетTLBдругих процессоров. Глобальный сбросTLBобеспечивает сброс трансляций для всех процессоров микропроцессорной системы, внутри когерентных доменов.

4.1.1.1. Регистры трансляции (tr)

Секция регистров трансляции (TR)TLB, является полностью ассоциативным массивом, заданным для хранения трансляций, которые прямо управляются программным обеспечением. Программа может явно вставлять трансляцию вTR, с помощью указания номера слота регистра. Трансляция удаляется изTR, с помощью указания виртуального адреса, размера страницы и идентификатора региона. Регистры трансляции позволяют операционной системе «вставлять» (topin) вTLBкритические трансляции виртуальной памяти. Примеры включают пространства ввода/вывода, области ядерной памяти, буфера окон, таблицы страниц, коды чувствительных прерываний и т.п. Поскольку выборки инструкций для обработчиков прерываний выполняются с использованием виртуальной адресации, то диапазоны виртуальных адресов, содержащие программную трансляцию, пропускающую подпрограммы и критические последовательности прерываний, должны быть вставлены, либо, в противном случае, будут вызваны дополнительные ошибкиTLB. Другие виртуальные отображения могут быть вставлены по соображениям эффективности.

Элементы помещаются в специальные TR-слоты, с помощью инструкцииitr(InsertTranslationRegister– вставить регистр трансляции). Если трансляция вставлена, то процессор не будет заменять трансляцию для освобождения места для других трансляций. Локальные трансляции могут удаляться программно, запуском инструкцииptr(PurgeTranslationRegister– сбросить регистр трансляции).

Вставки и сбросы TRмогут явиться причиной удаления другихTRи/илиTCэлементов (за деталями обратитесь к разделу 4.1.1.4). Перед вставкой элементаTR, программное обеспечение должно гарантировать, что для любыхTR(включая записываемыйTR) нет наложений трансляций, в противном случае, может быть вызван аварийный выход «Машинная проверка», либо процессор может продемонстрировать другое не определенное поведение. Элементы регистров трансляции могут быть удалены процессором из-за аппаратных или программных ошибок (errors). При обнаружении ошибок процессор может удалить элементыTR, а через аварийный выход «Машинная проверка» вызывается уведомление.

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

В некоторых моделях процессора, регистры трансляции физически реализованы как подсекция массива кэша трансляции. TR-слоты, содержащие действительные (valid) значения, игнорируются процессором при вставке вTC. Однако, недействительные (invalid)TR-слоты (не использованные слоты) могут быть использованы процессором какTCэлементы. В результате, программные вставки в предварительно недействительные элементыTR, могут сделать в том же слоте элементTCнедействительным.

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