OSDev Wiki
Advertisement

Регистр 10 используется для управления фиксацией элементов TLB. В зависимости от требуемой функции и используемой модели фиксации к нему возможны шесть видов обращений, перечисленных в таблице ниже.

Функция Модель фиксации Инструкция
Фиксация элемента TLB данных (или единого TLB) явная поэлементная MCR p15,0,Rd,c10,c0,0

MRC p15,0,Rd,c10,c0,0

Фиксация элемента TLB инструкций явная поэлементная MCR p15,0,Rd,c10,c0,1

MRC p15,0,Rd,c10,c0,1

Преобразование и фиксация элемента TLB инструкций преобразование и фиксация MCR p15,0,Rd,c10,c4,0
Освобождение элемента TLB инструкций преобразование и фиксация MCR p15,0,Rd,c10,c4,1
Преобразование и фиксация элемента TLB данных преобразование и фиксация MCR p15,0,Rd,c10,c8,0
Освобождение элемента TLB данных преобразование и фиксация MCR p15,0,Rd,c10,c8,1

В процессорах версии ARMv6 поддерживается только явная поэлементная модель фиксации. В процессорах более ранних версиях поддержка той или иной модели определяется реализацией.

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

При использовании явной поэлементной модели фиксации используется следующий формат регистра 10.

ARM CP15 R10

Формат регистра 10 для явной поэлементной модели

На этом рисунке W равно количеству разрядов, необходимых для кодирования всех возможных номеров элементов TLB. Если количество элементов TLB не является степенью двойки, W округляется в большую сторону (например, если в TLB имеется 10 элементов, то W=4).

Установленный бит P защищает элементы, сохранённые в TLB после его установки и до сброса, от очистки при выполнении инвалидации всего TLB. Те элементы, которые заносятся в TLB при P=0, при выполнении инвалидации всего TLB будут объявляться недействительными.

Поле victim задаёт номер элемента TLB, который будет заменён информацией, выбранной из таблиц переадресации при следующем преобразовании адресов, которое вызовет TLB-промах.

Поле base ограничивает номера элементов TLB, которые могут быть замещены информацией, выбираемой из таблиц переадресации при выполнении преобразования адресов. Элементы с нулевого до base–1 замещены быть не могут, и замещению подвергаются только элементы с номерами от base и выше. Значение victim должно быть не меньше, чем значение base.

Спецификация ARM позволяет производителям использовать фиксированное нулевое значение поля base. Чтобы узнать, способен ли конкретный процессор использовать произвольное значение этого поля, следует записать в регистр 10 величину, содержащую единицы во всех разрядах поля base, а затем считать этот регистр и проверить, не равно ли поле base нулю.

Подробнее о моделях фиксации элементов TLB и использовании регистра 10 сказано в разделе Фиксация элементов TLB.

Advertisement