русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Управление параллельностью


Дата добавления: 2015-06-12; просмотров: 781; Нарушение авторских прав


Обработка вычислительных программ может быть разбита на две части: управление программой и арифметика. Часть по управлению программой выполняет такие действия как решение - какие функции выполнять, вычисление адресов числовых операндов и управление циклом. Арифметическая часть просто выполняет сложение, вычитание, умножение и другие операции над числовыми операндами. Процессор i486 предназначен для обработки этих частей раздельно и эффективно.

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

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

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

  • Модуль обработки операций с плавающей точкой по умолчанию может обрабатывать определенные исключения. Программисты могут наложить маску на некоторые типы исключений для указания модулю обработки операций с плавающей точкой, что нужно делать, чтобы в случае исключительной ситуации получить разумный результат. Обработка исключения по умолчанию выполняется модулем обработки операций с плавающей точкой как часть команды, вызвавшей исключение; никаких внешних указаний для исключения не дается. При обнаружении исключительной ситуации значение флага заносится в регистр состояния, но информация о том, где и когда она произошла, является доступной. Если модуль обработки операций с плавающей точкой обрабатывает все исключения по умолчанию, тогда необходимость синхронизации исключительных ситуации не является явной. Однако, как будет показано позднее, это не существенная причина, чтобы избегать синхронизации при разработке программ, использующих модуль обработки операций с плавающей точкой.
  • Альтернативой обработке исключений по умолчанию является информирование модуля обработки целочисленных операций о случившейся исключительной ситуации. Если имело место немаскированное исключение, то модуль обработки операций с плавающей точкой приостанавливает дальнейшее выполнение числовых команд и сигнализирует о случившемся. При обнаружении команды ESC или WAIT управление передается обработчику исключений. Обработчик исключений сам выбирает процедуру обработки любого исключения, обнаруженного модулем обработки операций с плавающей точкой. Некоторые команды ESC не осуществляют проверки на исключения. Это FNINIT, FNSTENV, FNSAVE, FNSTCW и FNCLEX.

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



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

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

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



<== предыдущая лекция | следующая лекция ==>
Параллельная обработка | Некорректная синхронизация исключений


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.