Курс лекций для студентов заочного факультета самара

Вид материалаКурс лекций

Содержание


4.6.Совместная работа двух процессоров в системе.
4.6.1.Синхронизация по командам.
4.6.2.Синхронизация по данным.
Подобный материал:
1   ...   5   6   7   8   9   10   11   12   13

4.6.Совместная работа двух процессоров в системе.


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

4.6.1.Синхронизация по командам.


Если сопроцессор занят выполнением команды, а центральный процессор выбирает для выполнения следующую команду - опять команду сопроцессора, то центральный процессор не должен ее передавать сопроцессору, а должен подождать. Следовательно, перед каждой командой сопроцессора в программе должна быть специальная команда центрального процессора, которая проверяет занятость сопроцессора и переводит его в состояние ожидания, если надо. Такой командой является команда FWAIT, а вставляет ее ассемблер (или компилятор языка высокого уровня).

Команда FWAIT не вставляется перед административными командами в мнемокоде которых есть буква N, FNXXX... Это так называемые команды без ожидания.

Происходит это по следующей схеме (см. рисунок 1). Некоторые административные команды могут выполняться устройством управления, а не численным операционным устройством. Поэтому перед такими командами не надо проверять бит B в регистре состояния, который показывает занятость численного операционного устройства.

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

Структурная схема сопроцессора

Устройство управления

Численное операционное устройство


Основной процессор









Регистр управления














































Регистр состояния






































































Указатели ОС























































Тэги




Числовой стек




Рисунок 4.1

4.6.2.Синхронизация по данным.


Если сопроцессорная команда записывает операнд в ячейку памяти, а следующая команда центрального процессора использует этот операнд в дальнейших вычислениях, ЦП должен ожидать завершения операции сопроцессора. автоматически учесть такие ситуации сложно, поэтому вся работа по синхронизации в этом случае ложится на программиста. Для реализации этой синхронизации можно использовать команду FWAIT или любую другую “пустую” команду сопроцессора, например : FNOP, FST ST(0). В устройстве FPU - есть синхронизация по данным, которая автоматически реализуется ассемблером или компилятором языка высокого уровня.