Курс лекций для студентов заочного факультета самара
Вид материала | Курс лекций |
Содержание4.6.Совместная работа двух процессоров в системе. 4.6.1.Синхронизация по командам. 4.6.2.Синхронизация по данным. |
- Курс лекций для студентов заочного и очно-заочного образования рпк «Политехник», 941.31kb.
- Курс лекций для студентов очного и заочного отделения специальностей 1-25 01 10 коммерческая, 830.45kb.
- Курс лекций для студентов заочного обучения Бурмистрова Л. А., Финансы предприятий:, 1991.45kb.
- Методические указания для студентов 1 курса заочного отделения исторического факультета, 244.82kb.
- В. С. Юрчук философия права курс лекций, 1556.93kb.
- Планы семинарских занятий на 2011-2012 учебный год (6 часов) по предмету «Экономическая, 205.43kb.
- Курс лекций Санкт-Петербург 2007 удк 342. 9 Ббк 67. 401 Б83 Рецензенты, 6052.89kb.
- Тексты лекций для студентов заочной формы обучения всех специальностей москва 2001, 2466.08kb.
- Краткий конспект лекций по дисциплине «Основы лесоводства и лесной таксации» Для студентов, 923.35kb.
- Лекций для студентов 4 курса педиатрического факультета, переведенных на контролируемую, 18.72kb.
4.6.Совместная работа двух процессоров в системе.
Выборку команд из общей очереди команд осуществляет центральный процессор. Если выбранная команда оказывается командой центрального процессора, он выполняет ее обычным образом, сопроцессор такие команды игнорирует. Если выбирается команда сопроцессора, действия центрального процессора зависят от специфики конкретной команды. Если команда не связана с обращением к памяти, центральный процессор ее игнорирует и переходит к следующей команде. Если команда требует обращения к памяти, центральный процессор вычисляет физический адрес операнда и обращается к памяти, при этом сопроцессор перехватывает с общей шины адреса физический адрес операнда, а в операции со считыванием из памяти - еще и данные с общей шины данных. После этого сопроцессор выполняет команду. Выполнение команды сопроцессором происходит параллельно с работой центрального процессора, что повышает эффективность системы. Существуют случаи, когда требуется синхронизация действий двух процессоров :
4.6.1.Синхронизация по командам.
Если сопроцессор занят выполнением команды, а центральный процессор выбирает для выполнения следующую команду - опять команду сопроцессора, то центральный процессор не должен ее передавать сопроцессору, а должен подождать. Следовательно, перед каждой командой сопроцессора в программе должна быть специальная команда центрального процессора, которая проверяет занятость сопроцессора и переводит его в состояние ожидания, если надо. Такой командой является команда FWAIT, а вставляет ее ассемблер (или компилятор языка высокого уровня).
Команда FWAIT не вставляется перед административными командами в мнемокоде которых есть буква N, FNXXX... Это так называемые команды без ожидания.
Происходит это по следующей схеме (см. рисунок 1). Некоторые административные команды могут выполняться устройством управления, а не численным операционным устройством. Поэтому перед такими командами не надо проверять бит B в регистре состояния, который показывает занятость численного операционного устройства.
Данными командами следует пользоваться аккуратно, так как. они не вызывают обработчика особых случаев через систему прерываний, то есть не проверяют наличие сигнала прерывания от сопроцессора, а если он произошел, то процесс восстановления из прерывания не произойдет, так как. выполнение команды управления может помешать процедурам обработки определить причину особого случая и метод его обработки.
Структурная схема сопроцессора
-
Устройство управления
Численное операционное устройство
Основной процессор
Регистр управления
Регистр состояния
Указатели ОС
Тэги
Числовой стек
Рисунок 4.1
4.6.2.Синхронизация по данным.
Если сопроцессорная команда записывает операнд в ячейку памяти, а следующая команда центрального процессора использует этот операнд в дальнейших вычислениях, ЦП должен ожидать завершения операции сопроцессора. автоматически учесть такие ситуации сложно, поэтому вся работа по синхронизации в этом случае ложится на программиста. Для реализации этой синхронизации можно использовать команду FWAIT или любую другую “пустую” команду сопроцессора, например : FNOP, FST ST(0). В устройстве FPU - есть синхронизация по данным, которая автоматически реализуется ассемблером или компилятором языка высокого уровня.