
- •Введение
- •Цели и задачи курса
- •1. Общие сведения о вычислительных машинах и вычислительных системах
- •1.1. Основные понятия и определения
- •1.2. Классификация эвм по назначению и типу
- •1.3. Типы эвм
- •1.4. Основные принципы организации вычислительных машин и систем
- •1.5. Основные характеристики вычислительных машин и систем
- •1.5.1 Стоимость и цена аппаратного обеспечения
- •1.5.2. Производительность вычислительных машин и систем
- •Контрольные вопросы
- •2. Фукциональный состав и назначение основных устройств вм
- •2.2. Назначение шин, шина с тремя состояниями
- •2.3. Назначение устройств ввода-вывода, способы информационного обмена
- •Контрольные вопросы
- •3. Организация процессоров
- •3.1. Введение в функциональную организацию процессора
- •3.2. Операционный блок
- •3.3. Блок управления
- •3.4. Устройства управления процессора
- •3.4.1. Классификация уу
- •3.4.2. Аппаратные уу
- •3.4.3. Микропрограммные уу
- •3.5. Интерфейсный блок
- •3.6. Назначение стека
- •Контрольные вопросы
- •4. Система команд и адресация данных
- •4.1. Группы команд
- •4.2. Адресация операндов
- •4.3. Методы адресации
- •5. Память вычислительных машин
- •5.1. Иерархическая организация системы памяти
- •5.2. Иерархическая структура зу
- •5.3. Основные характеристики зу
- •5.4. Организация связи оп с процессором
- •5.5. Ассоциативные зу
- •Контрольные вопросы
- •6. Принципы обмена данными в вычислительных машинах. Интерфейсы вычислительных машин, организация прерываний
- •6.1. Шины
- •6.1.1. Синхронная шина
- •6.1.2. Пересылка данных за несколько тактов
- •6.1.3. Асинхронные шины
- •6.1.4. Заключительные замечания
- •6.2. Назначение и классификация шинных интерфейсов
- •6.3. Организация и обмен данными между периферийными устройствами и вычислительным ядром системы
- •6.4. Организация прерываний
- •6.4.1. Программные прерывания
- •Команда int
- •6.4.2. Обработка прерываний
- •6.4.3 Таблица векторов прерываний
- •6.4.4. Запуск обработчиков прерываний
- •6.5. Последовательная передача данных
- •7. Вычислительные системы параллельной обработки данных
- •7.1. Параллельная обработка как архитектурный способ повышения производительности
- •7.2. Параллелизм и конвейеризация – способы параллельной обработки данных
- •7.2.1. Параллельная обработка данных (параллелизм)
- •7.2.2. Конвейеризация
- •7.3. Классификация архитектур вычислительных систем
- •7.4. Мультипроцессоры и мультикомпьютеры
- •7.5. Классификация мультипроцессорных систем по способу организации основной памяти
- •7.6. Закон Амдала (эффективность параллельных программ)
- •8. Компьютер ibm pc и операционная система ms dos
- •8.1.Архитектурные особенности процессоров семейства ia-32
- •8.2. Организация памяти компьютера ibm pc, работающего под управлением ms dos
- •Видеопамять
- •Пзу bios
- •Системные ресурсы компьютера
- •8.3. Основы программирования на языке Ассемблера
- •8.3.1. Выполнение программ
- •8.3.2. Написание, компиляция и отладка программы
- •8.3.3. Дополнительные средства ассемблера
- •9. Темы заданий для контрольной работы
- •Тема 1. Архитектура процессора Intel 8086.
- •Контрольные вопросы
- •9.1. Аппаратная модель процессора 8086
- •Программная модель процессора
- •Тема 2. Структура ехе- и сом- программы. Вывод на экран.
- •9.2. Структура программы на языке Ассемблера.
- •9.3. Вывод информации на экран
- •Тема 3. Циклы, ввод с клавиатуры.
- •Тема 4. Ввод чисел. Перевод чисел в различные системы счисления.
- •9.4. Перевод чисел в различные системы счисления
- •Тема 5. Работа с прерываниями: перехват и восстановление.
- •Варианты задания
- •Контрольные вопросы
- •Тема 6. Программирование таймера 8254 и генерация звука
- •Программирование звукового канала таймера.
- •9.7. Инициализация таймера
- •9.8. Назначение каналов таймера в ibm pc
- •9 .9. Генерация тона.
- •9.10. Варианты задания
- •Тема 7. Ответы на контрольные вопросы по лекционному курсу
- •Вариантов заданий Таблица 9.4
- •Литература
6.4. Организация прерываний
Обработка сигналов прерываний выполняется специальным комплексом программно-аппаратных средств, который называется системой прерывания. Система прерываний позволяет повысить эффективность использования процессора за счет освобождения его от непроизводительных функций слежения за готовностью периферийных устройств к обмену данных.
В ВС обычно существует достаточно большое число источников прерываний. В зависимости от их типа прерывания разделяют на внешние, внутренние и программные. Прерывания, которые формируются внутренними схемами процессора при выявлении ошибок выполнения некоторых команд, называются внутренними. Прерывания, поступающие на вход процессора от периферийных устройств, называются внешними или аппаратными. Программные прерывания формируются при выполнении специальных команд. Независимо от типа прерываний выполняемые действия по их обслуживанию одинаковы и называются последовательностью прерывания или обработкой прерывания. В общем случае в последовательности прерывания реализуются следующие действия:
• при поступлении сигнала прерывания проводится идентификация устройства, запросившего прерывание;
• запоминается информация о состоянии процессора;
• выполняется инициализация процессора для выполнения прерывающей программы;
• осуществляется запуск и исполнение прерывающей программы обслуживания поступившего запроса прерывания;
• восстанавливается состояние процессора и возобновляется работа прерванной программы.
Процесс сохранения текущего состояния процессора на момент прерывания и его последующее восстановление называется контекстным переключением. Под состоянием процессора понимается содержимое счетчика (указателя) команд и всех его регистров на момент прерывания. Главное место в процедуре перехода занимает загрузка в стек текущего состояния процессора и его инициализация для выполнения прерывающей программы. В большинстве процессоров при переходе к обработке прерывания содержимое счетчика команд (адрес возврата) автоматически запоминается в стеке. По окончании обработки адрес возврата извлекается из стека и помещается в счетчик команд. Сохранение и восстановление содержимого регистров процессора автоматически не выполняется и обычно реализуется командами записи в стек (push) и извлечения из стека (pop).
Приведенная схема обработки прерывания является в определенном смысле идеальной, так как она не учитывает возможность одновременного возникновения нескольких прерываний или появления очередного прерывания во время обработки предыдущего. Необходимость выбора одного из нескольких поступивших запросов прерываний может возникнуть в системах с большим числом внешних и внутренних источников прерываний. В подобных ситуациях система прерывания должна устанавливать очередность восприятия запросов. Поэтому дополнительной функцией процедуры перехода является установление определенного порядка (приоритета) в обслуживании поступающих запросов. Здесь и далее приоритет прерывания понимается в двух смыслах: во-первых, как очередность восприятия одновременно поступающих запросов и, во-вторых, как возможность прерывания обработки прерывающей программы другим запросом прерывания.
Существует сравнительно большое число способов классификации прерываний. Они бывают маскируемые и немаскируемые, одноуровневые и многоуровневые, с фиксированным и динамически перестраиваемым приоритетом. Большое число классификаций прерываний в некоторых случаях затрудняет понимание смысла, вкладываемого в то или иное названия прерывания. Ниже приводится краткая характеристика распространенных классификационных определений прерываний.
С точки зрения возможности управления реакцией процессора на запрос прерывания от периферийного устройства различают маскируемые и немаскируемые прерывания. Маскируемые прерывания процессор может обработать немедленно или проигнорировать их обслуживание в данный момент времени. Для управления маскируемыми прерываниями большинство процессоров использует программно управляемый флаг разрешения прерываний IF. При IF = 0 маскируемые прерывания запрещены, а при IF= 1 - разрешены. В некоторых процессорах, наряду с возможностью общего маскирования всех маскируемых прерываний, обеспечено программное маскирование отдельных типов прерывания. Используя индивидуальное маскирование, процессор в некоторые моменты времени может разрешить обработку прерываний от более важных устройств и запретить обслуживание менее важных устройств.
Немаскируемые прерывания представляют собой тип прерываний, которые нельзя запретить. Они сигнализируют о событиях особой важности, таких как отключение питания, сбой памяти, сигналы «сторожевого таймера». Процессор не может игнорировать такие запросы на прерывание и должен их обрабатывать немедленно. Реагируя на немаскируемое прерывание, процессор может передать важные результаты в безопасное место прежде, чем они будут потеряны из-за возникновения критической ситуации. Для маскируемых и немаскируемых прерываний в процессоре обычно используют раздельные входные сигналы и соответствующие им входы. Приоритет немаскируемых прерываний всегда выше.
Функционирование системы прерываний достаточно очевидно и не требует особых пояснений. Более подробно остановимся на функциях и способах реализации блока, который при наличии нескольких запросов прерывания обеспечивает приоритетный выбор одного из них на обслуживание и определяет адрес обработчика выбранного запроса. Определение адреса обработчика непосредственно связано с организацией системы прерываний. Современные системы в большинстве случаев имеют либо радиальную, либо векторную организацию прерываний.
При радиальной организации прерываний адрес обработчика для каждого источника фиксирован аппаратно. Способ применяется в системах с небольшим числом источников.
При векторной организации прерываний каждому источнику прерывания соответствует свой адресный код - вектор прерываний. При данном способе организации прерываний адрес обработчика поступает в процессор непосредственно или в закодированном виде из специального контроллера в результате выполнения процессором цикла чтения адреса вектора прерывания или кода прерывания. Векторная организация применяется в системах с большим числом источников прерываний. В IBM PC-совместимых ПК с МП х86 адреса обработчиков хранятся в специальной таблице IDT (Interrupt Descriptor Table), которая должна размещаться в ОП. При поступлении запроса вектор прерывания используется в качестве индекса таблицы IDT для определения адреса обработчика.
При одновременном поступлении нескольких запросов система прерываний фиксирует их в регистре запросов прерываний и выполняет приоритетный выбор одного на обслуживание. Этот выбор обычно реализуют либо методом линейного (последовательного) опроса флагов прерывания, либо методом направленного (векторного) опроса, при этом выбор источника запроса для обработки зависит от встроенного в систему механизма приоритетов. Известны несколько способов организации приоритетов. Одни из них реализуются аппаратно, другие программно или аппаратно-программно. Приоритеты могут быть фиксированными и динамически перестраиваемыми.
Простейший способ задания фиксированных приоритетов заключается в выбираемом разработчиком порядке присоединения линий сигналов запросов к входам системы прерывания. Сами запросы фиксируются в регистре запросов прерываний в строго определенных разрядах (флагах). В системах с фиксированным приоритетом при выборе запроса для обработки процессор проверяет (программно или аппаратно) состояние регистра флагов прерываний. Поиск источника запроса прерывания прекращается при обнаружении самого старшего единичного разряда регистра прерывания. При поступлении следующего запроса поиск источника запроса вновь начинается со старшего разряда регистра прерываний. Приоритет обслуживаемого запроса определяется его местом в последовательной цепочке. Более быстродействующим периферийным устройством обычно назначают более высокий приоритет. В подобных системах приоритет устройства является жестко фиксированным и изменить его можно только новым соединением линий запросов на входах системы прерываний. Процедура выбора запроса с наивысшим приоритетом и формирования адреса прерывающей программы при последовательном просмотре флажков прерывания называется полинг (poling).
В МП х86 запросы внешних прерываний поступают по входам INTR и NMI. Немаскируемые внешние прерывания, требующие немедленной реакции, поступают на вход NMI, а маскируемые (внешние аппаратные) - на вход INTR. Источниками немаскируемых прерываний являются ошибка четности при обращении к памяти или ошибка канала ввода-вывода (сигнал I/O CHRDY для шины ISA или сигнал SERR# для шины PCI). В современных ПК в качестве источника NMI используется только ошибка четности.
Все маскируемые прерывания, поступающие на вход INTR МП с выхода программируемого контроллера прерываний (ПКП), программно можно разрешить или запретить. Более того, соответствующими настройками ПКП можно запретить только конкретные запросы IRQ при разрешении прерываний на других входах IRQ.
Источниками прерываний в IBM PC-совместимых ПК с процессорами х86, наряду с внешними прерываниями, могут быть внутренние и программные прерывания (рис. 6.9).
Рис. 6.9. Типы прерываний процессора х86