Для целей тестирования служат два тестовых регистра, которые показаны на Рисунке 10-4. Регистр TR6 является командным регистром тестирования TLB, а регистр TR7 является регистром данных тестирования TLB. Доступ к ним выполняется посредством разновидностей команды MOV. Команды MOV определены как в режиме реальных адресов, так и в защищенном режиме. Тестовые регистры относятся к привилегированным ресурсам системы: в защищенном режиме команды MOV, используемые для доступа к ним, могут быть выполнены только на уровне привилегированности 0 (наивысшая привилегированность). Попытка чтения или записи в тестовые регистры из других уровней привилегированности вызывает исключение общей защиты.
В отличие от TLB процессора 386 DX, доступ к TLB процессора i486 возможен без отключения механизма подкачки страниц. Также, в отличие от процессора 386 DX, TLB процессора i486 использует для выбора элементов, которые будут удалены из памяти, когда нужно распределить память для нового элемента, а TLB заполнен, алгоритм замены кеша псевдо-LRU.
Командный регистр тестирования TLB (TR6) содержит команду и адресный тег:
C. Это бит Команды (Command). Существует две команды тестирования TLB: записи элементов в TLB и выполнения поиска в TLB. Для выполнения записи в элемент TLB поместите двойное слово в регистр TR6, содержащий очищенный бит С. Для поиска (чтения) в TLB поместите двойное слово в регистр TR6, содержащий установленный бит С. Операции с TLB запускаются при выполнении записи в регистр TR6.
Линейный адрес. При записи в TLBэлемент TLB распределяется по данному линейному адресу; остальная часть элемента TLB назначается с использованием значения регистра TR7 и значения, только что записанного в регистр TR6. При поиске в TLB это значение используется в запросе; если обнаруживается соответствие одного и только одного элемента TLB, остальные поля регистров TR6 и TR7 устанавливаются из соответствующего элемента TLB.
V. Этот бит обозначает элемент TLB, содержащий достоверные (Valid) данные. Элементы TLB, не загруженные элементами страничной таблицы, имеют очищенный бит V. Все биты V очищаются при записи в регистр CR3, что имеет эффект очистки, или сброса, TLB. NLB должен очищаться после модификации страничных таблиц, поскольку в противном случае немодифицированные данные могут быть использованы для трансляции адреса.
D, D#. Бит D (и его дополнение).
U, U#. Бит U/S (пользователь/супервизор) (и его дополнение).
W, W#. Бит R/W (чтение/запись) (и его дополнение).
Эти биты даются как в их действительной форме, так и в виде дополнения для большей гибкости при поиске в TLB. Значение этих парных битов приводятся в Таблице 10-2.
Регистр данных тестирования TLB (TR7) содержит данные, считанные или подлежащие записи в TLB:
Физический адрес. Это поле данных TLB. При записи в TLB в это значение устанавливается элемент TLB, распределенный для линейного адреса в регистре TR6. При поиске (чтении) в TLB в данное поле загружается поле данных (физический адрес) из TLB.
PCD. Соответствует биту PCD элемента страничной таблицы.
PWT. Соответствует биту PWT элемента страничной таблицы.
LRU. При чтении в TLB соответствует битам, используемым алгоритмом замены кеширования псевдо-LRU. Сообщаемые состояния представляют собой значение этих битов перед поиском в TLB. Значения битов могут изменяться при удачном завершении поиска и при записи в TLB.
PL. При записи в TLB установленный бит PL заставляет использовать поле REP регистра TR7 для выбора одного из четырех ассоциативных блоков элемента TLB для загрузки. Если бит PL очищен, то для выбора блока служит внутренний указатель единицы подкачки. Этот внутренний указатель управляется алгоритмом замены кеширования псевдо-LRU. При поиске в TLB (при чтении) бит PL указывает на успешное чтение (бит PL установлен) или отсутствие искомого (бит PL очищен).
REP. При записи в TLB выбирает, какой из четырех ассоциативных блоков TLB будет использован для записи. При чтении TLB при установленном бите PL REP сообщает, в каком из четырех ассоциативных блоков был найден тег; если же бит PL очищен, то содержимое этого поля неопределено.
Таблица 10-2. Значение парных битов в регистре TR6 -----------------------------------------------------------------Бит Бит# Эффект при поиске в TLB Эффект при записи в TLB----------------------------------------------------------------- 0 0 Несовпадение Не определено 0 1 Совпадение, если бит очищен Очистка бита 1 0 Совпадение, если бит установлен Установка бита 1 1 Совпадение, если бит Не определено очищен или установлен-----------------------------------------------------------------