7.4.6.4.1. Префикс LOCK и сигнал LOCK#

 

Командный префикс LOCK и его выходной сигнал LOCK# используются для предотвращения прерывания операции перемещения данных со стороны других системных элементов. Префикс LOCK имеет ограничения, по которым он может использоваться только со следующими шестнадцатью командами МП 80386. Использование префикса LOCK перед любой командой, отличной от приведенных ниже, приводит к обработке исключения по неразрешенной команде:

команды обмена XCHG;

команды проверки и изменения битов ВТ, ВТС, BTR, BTS;

однооперандные арифметические и логические команды DEC, INC, NEG,NOT;

двухоперандные арифметические и логические команды ADD, ADC, AND,OR, SBB, SUB, XOR.

Блокировка от доступа процессора гарантируется только для области памяти, определяемой операндом с заданным начальным адресом и заданной длиной. Префикс LOCK может заблокировать и большую область памяти. Например, конфигурации МП 8086 и МП 80286 полностью блокируют пространство физической памяти.

Когда МП 80386 инициирует активность на шине данных самостоятельно и хочет, чтобы она правильно завершилась, он выдает сигнал LOCK #. Обычно это происходит в следующих случаях.

Исполнение команд XCHG. Процессор всегда выдает сигнал LOCK# вовремя исполнения команды XCHG, даже если префикс LOCK не используется.

Загрузка дескрипторов. Когда МП 80386 копирует содержимое таблицы дескриптора в один из регистров сегмента, он выдает сигнал LOCK # с тем, чтобы дескриптор не модифицировался во время его загрузки.

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

Установка бита занятости дескриптора TSS. Процессор проверяет и затем устанавливает бит занятости в поле типа дескриптора TSS. Для того чтобы предотвратить от переключения на одну и ту же задачу двух различных процессоров, МП 80386 выдает сигнал LOCK# во время проверки и установки этого бита.

Обновление бита обращения А и бита мусора D таблицы страниц. Процессор выдает сигнал LOCK# при обновлении битов А и D входов в таблицу страниц. Заметим, что МП 80386 обходит кэш-память таблицы страниц и обновляет эти биты непосредственно в основной памяти.

 

 

HotLog

Заказчику web дизайна и программирования - каталог сайтов, обзор дизайн студий