Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M9 / Архитектура часть 4..doc
Скачиваний:
18
Добавлен:
16.04.2013
Размер:
430.08 Кб
Скачать

4.4.5.3. Детализирование функциональности структуры alat и инструкции связанные с этим.

ALAT– это структура, которая содержит состояние необходимое для предваритель­ных загрузок и проверок корректности действий.ALATпросматривается двумя различными путями: по физическим адресам и по регистровым тегамALAT. Регистровый тегALAT– это уникальный номер, полученный из физического номера и типа принимающего регистра в соединении с другим состоянием, зависящем от реализации. Состояние, зависящее от реализации, может включать в себя информацию замкнутого циклического стека регистров, для различения одного отдельного физического регистра, который может быть слит с помощьюRSEиз этого регистра, таким образом, мы избегаем необходимости очищатьALATво всем замкнутом циклическом стеке регистров.

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

4.4.5.3.1. Выделение и проверка элементов alat

Предварительная загрузка выполняет следующие действия:

  1. Вычисляется тег регистра ALAT, для предварительной загрузки. (Дляldfp.aтег вычисляется только для первого принимающего регистра).

  2. Если элемент совпал с существующим тегом регистра ALAT, то он удаляется

  3. В ALATсоздается новый элемент, который содержит новый тег регистраALAT, размер выборки загрузки и тег, полученный из физического адреса памяти.

  4. Значение адреса указанное в расширенной загрузке, загружается в приемный регистр и, если задано, то обновляется базовый регистр и неявно выполняется выборка с упреждением (prefetch).

Так как успех проверки определяется нахождением в ALATсовпадающего тега регистра, то и вchk.aи в приемном регистреld.c, должен задаваться один и тот же регистр, который соответствует предварительной загрузке. Кроме того, проверка загрузки должна использовать один и тот же адрес и размер операнда, который соответствует предварительной загрузке. В противном случае, значение, записанное в приемный регистр проверкой загрузки будет неопределенно.

Проверка предварительной загрузки выполняет следующие действия:

  1. Она ищет соответствующий элемент ALAT, и если находит, то переходим к следующей инструкции.

  2. Если соответствующий элемент не найден, то переходим по адресу заданному в chk.a.

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

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

  1. Реализация может выбирать – либо оставлять приемный регистр неизменным, либо перезагружать значение из памяти.

  2. Если выбрано решение оставить приемный регистр неизменным, и происходит одно или несколько условий исключения связанных с доступом к данным или с трансляцией проверки загрузки, то реализация может выбирать – либо вызвать наиболее высокоприоритетные из этих ошибок, либо игнорировать их всех и продолжать выполнение. Ошибки, которые могут игнорироваться, связаны с доступом к данным и трансляцией (ошибка Вложенных данных TLB, ошибка Альтернативных данныхTLB, ошибка ДанныхVHPT, ошибка ДанныхTLB, ошибка Отсутствие страницы данных, ошибка Применения данныхNaT, ошибка Пропуска ключевых данных, ошибка Разрешения ключевых данных, ошибка Прав доступа к данным, ошибка Данных битаDirty, ошибка Данных бита доступа, ошибка Данных битаDebug, ошибка - Ссылка на не выровненные данные, ошибка - Ссылка на неподдерживаемые данные). См. табл.5.5 во втором томе.

  3. Если выбрано решение - выполнить перезагрузку, то не могут игнорироваться никакие ошибки происходящие из-за перезагрузки.

  4. Если поля размера, типа или адреса в совпавшем элементе ALAT, не совпали при проверке загрузки, то значение, возвращаемое проверкой загрузки, будет неопределенным. В таких случаях выбирает, либо вызывать ошибку, либо, если был использован «не чистый» вариант проверки загрузки, то реализация выбирает либо обновлять поля размера, типа или адреса в совпавшем элементеALAT, либо оставить элемент неизменным.

Если проверка загрузки является упорядоченной проверкой загрузки (ld.c.clr.acq), то она делается с семантикой упорядоченной загрузки (ld.acq). Просмотры тега регистраALATс помощью предварительных проверок загрузки и проверок загрузки, подчиняются ограничениям упорядочивания памяти, как подчеркнуто ниже в разделе 4.4.7 «Упорядочивание доступа к памяти».

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

Соседние файлы в папке M9