Скачиваний:
62
Добавлен:
16.04.2013
Размер:
430.08 Кб
Скачать

4.4.5.3.2. Аннулирование элементов alat.

В дополнение к элементам, удаляемым предварительными загрузками, аннулирование элементов ALATможет происходить неявно, с помощью событий изменяющих состояние памяти, либо явно одной из следующих инструкций:ld.c.clr, ld.c.clr.acq, chk.a.clr, invala, invala.e. События, которые могут явно аннулировать элементыALAT, включают такие, которые изменяют состояние памяти или состояние преобразования памяти, такие как:

  1. Выполнение инструкций сохранения, семафорных инструкций или ptc.gaна других процессорах в когерентном домене.

  2. Использование на локальном процессоре инструкций сохранения или семафорных инструкций.

  3. Платформо-видимое удаление строки кэша из процессора.

Когда происходит одно из этих событий, аппаратура проверяет каждый регион памяти, представленный элементом в ALAT, чтобы увидеть, накладывается ли он на места связанные с аннулированными событиями. ЭлементыALAT, где есть наложение регионов памяти на аннулированные события, удаляются. Заметим, что некоторые аннулированные события могут требовать удаления изALATмножества элементов. Например, инструкцияptc.gaвыравнивает страницу, таким образом,ptc.gaот другого процессора требует, чтобы аппаратные средства аннулировали все элементыALATсвязанные с этой страницей. Сохранения приRSEсливаниях, не проверяются на аннулированиеALATи не приводят к удалениям элементовALAT. См. раздел 6.9 «ВзаимодействиеRSEиALAT» во втором томе. Когда внешний агент может увидеть, что процессор удалил интервал физических адресов из его кэшей, тогда этот адресный интервал гарантированно будет аннулирован для таблицыALATэтого процессора.

Реализация может аннулировать и больше элементов, чем это явно вытекает из события аннулирования, и вообще – в любой момент аннулировать любой элемент ALAT. Например,st1всего лишь обращается к одному байту, но выполнение может решить аннулировать все элементыALAT, чей регион памяти находится на той же самой линии кэша. Выполнение может также обеспечитьALATнулевыми элементами, (т.е. все инструкцииld.c/chk.aдействовали бы так, как будто произошел промахALAT).

Программное обеспечение ответственно за явное аннулирование всех затрагиваемых элементов ALATвсякий раз когда:

  1. Программное обеспечение явно изменяет отображение виртуальных регистров на физические, в ротируемых регистрах, которые были приемниками предварительных загрузок (clrrrb).

  2. Программное обеспечение изменяет отображение виртуальных регистров на физические.

  3. Программное обеспечение обращается к вспомогательной памяти механизма RSEдля предварительной загрузки. См. раздел 6.9 «ВзаимодействиеRSEиALAT» во втором томе (так какRSEсохранения не аннулируют элементыALAT).

  4. Программное обеспечение явно изменяет отображение виртуальных регистров на физические, в стековых регистрах с помощью переключений вспомогательной памяти RSE. См. раздел 6.11.3 «Синхронизация переключения вспомогательной памяти» во втором томе.

4.4.5.4. Комбинирование спекуляций по управлению и по данным

Спекуляция по управлению и спекуляция по данным не исключают друг друга; некая загрузка может быть спекулятивной и по управлению и по данным. Для основных регистров и регистров с плавающей точкой заданы оба варианта предварительных загрузок – и являющиеся спекулятивными по управлению (ld.sa, ldf.sa, ldfp.sa), и таковыми не являющиеся (ld.a, ldf.a, ldfp.a). Если спекулятивная расширенная загрузка генерирует маркер отложенного исключения, то

  1. Любой существующий элемент ALATдля одного и того же тега регистраALATаннулируется.

  2. Никакой новый элемент ALATне выделяется.

  3. Если приемник загрузки был регистром общего назначения, то его NaTбит устанавливается в 1.

  4. Если приемник загрузки был регистром с плавающей точкой, то в приемный регистр записывается значение NaTVal.

Если спекулятивная предварительная загрузка не генерирует отложенное исключение, то ее поведение точно такое же, как у предварительной загрузки, не являющейся спекулятивной по управлению.

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

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