
- •Введение
- •Цели и задачи курса
- •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.4. Запуск обработчиков прерываний
Обработчик прерывания можно запустить двумя способами. Во-первых, выполнить в прикладной программе команду INT с нужным номером прерывания. Она вызывает в процессоре программное прерывание, в результате которого процессор автоматически запустит программу его обработки. Во-вторых, обработчик прерываний может быть вызван в результате реакции процессора на аппаратное прерывание. Оно происходит по инициативе периферийного устройства (асинхронного порта, клавиатуры, таймера и т.д.), которому требуется привлечь внимание центрального процессора. При этом периферийное устройство посылает сигнал программируемому контроллеру прерываний, а тот - центральному процессору.
Самым простым типом прерываний являются программные прерывания, представляющие собой особый способ вызова процедур. Программные прерывания инициируются специальной командой вызова процедур INT n и могут использоваться программистом в любом месте программы. Обработчиками программных прерываний в большинстве случаев являются оптимизированные системные процедуры, вызываемые пользовательскими или системными программами для выполнения наиболее часто применяемых операций. Каждому типу прерываний назначается определенный номер из заданного диапазона чисел (для процессоров х86 из диапазона 0 - 255). Идентификационный номер прерывания используется для индексации таблицы прерываний, которая содержит начальные адреса (векторы прерываний) программ обработчиков. Операнд n, указываемый в команде INT n, определяет тип (номер) программного прерывания, а сама команда INT n обеспечивает обращение к соответствующей строке таблицы и вызов искомого обработчика.
Команды INTn выполняют такие же действия, как и при запросе прерывания от внешнего периферийного устройства, но с одним исключением - тип прерывания содержится в команде, а не выдается периферийным устройством. Программные прерывания часто используются для вызовов процедур BIOS (Basis Input/ Output System) и процедур ОС.
BIOS содержит набор программ обработки аппаратных прерываний от периферийных устройств и является связывающим звеном между ОС и внешней периферией. Прерывания ОС реализуют обмены с периферийными устройствами на более высоком уровне и опираются на прерывания BIOS.
Внешние аппаратные прерывания тесно связаны с вводом-выводом при обменах с прерыванием программы. С помощью аппаратных прерываний осуществляется взаимодействие процессора с ПУ. В отличие от программных прерываний, аппаратные прерывания могут возникать в произвольные моменты времени, т.е. асинхронно по отношению к действиям процессора.
Внутренние прерывания, генерируемые процессором при возникновении ошибок или нештатных ситуаций выполнения команд, называют особыми случаями или исключениями (exception). Особый случай - это внутреннее событие, возникающее при невозможности выполнять следующую команду. Особые случаи предвидеть невозможно. Их генерируют, например, при нарушении защиты по привилегиям, превышении предела сегмента, делении на нуль и т.п. Коды внутренних прерываний устанавливаются разработчиком МП и не могут быть использованы при назначении внешних прерываний. Для выявления причин возникновения особых случаев, а в некоторых случаях и их устранения используются обработчики особых случаев. Передача управления обработчику особого случая осуществляется обычным способом через таблицу векторов прерываний. Особые случаи являются немаскируемыми, и процессор реагирует на них независимо от состояния флага IF. При наличии особой ситуации процессор прекращает работу текущей программы, обращается к таблице прерываний и по индексу (номеру) особой ситуации находит соответствующий обработчик. Реакция процессора на исключение зависит от условий его возникновения. В соответствии с этими условиями исключения подразделяются на ошибки (fault), ловушки (trap) и аварийные завершения (abort).
Ошибка, или нарушение (отказ), - это особый случай, который обнаруживается и обслуживается до выполнения команды, вызывающей ошибку. После обработки подобного исключения управление возвращается команде, которая вызвала ошибку. Типичный пример нарушения имеет место при работе системы виртуальной памяти, когда процессор обнаруживает отсутствие в ОП затребованной страницы или сегмента. В процессе обработки такого нарушения ОС обращается к странице или сегменту на диске, загружает их в память, после чего процессор перезапускает команду, вызвавшую исключение.
Ловушка - это особый случай, который обнаруживается и обслуживается после выполнения команды, его вызвавшей. По завершению обслуживания особого случая типа ловушка процессор возвращает управление команде, следующей за командой, вызвавшей ловушку. Примером ловушки является команда прерывания при переполнении INTO и программные прерывания, вызываемые командой INT n.
Аварийное завершение - особый случай, который не позволяет точно установить команду, его вызвавшую. Аварийное завершение является серьезной ошибкой. При ее возникновении продолжение программы невозможно и ее необходимо прекратить. К авариям относятся аппаратные ошибки, нарушения системных таблиц и некоторые другие особые случаи.
В системах с процессором х86 каждый источник прерывания и каждый тип особой ситуации имеет свой идентификационный номер (вектор), с помощью которого определяется адрес обработчика. Немаскируемому прерыванию (по входу NMI) и исключениям выделены векторы от 0 до 31. Часть векторов из этого числа зарезервированы разработчиками процессора для возможного использования в будущем. Векторы маскируемых прерываний определяются аппаратно, например, с помощью ПКП 8259А. Для аппаратных маскируемых прерываний по входу INTR выделены векторы с номерами от 32 до 255. Программным прерываниям, реализуемым командой INT n, соответствуют векторы с номерами от 0 до 255.