Функции системы прерывания и общие решения по реализации
Система прерывания
Структура данных
Архитектура IA-32 предполагает наличие не менее двух процессоров, даже если они интегрированы в одном блоке. В поздних моделях МП их называют не процессорами, а модулями обработки данных. Здесь речь идет, скорее, о множестве структур данных в зависимости от реализованных в процессоре "арифметик".
Основным модулем обработки данных является модуль обработки чисел с фиксированной запятой (точкой). В настоящее время – это целочисленная арифметика, обработка двоично-десятичных чисел и строк символов.
Дополнительным модулем является модуль обработки чисел с плавающей запятой (модуль обработки вещественных чисел).
В МП, начиная с Pentium MMX, используется дополнительный мультимедийный модуль обработки векторных данных.
Мультимедийный модуль обработки векторных данных. Этот модуль, появившись в МП Pentium Pro в варианте 57 команд обработки векторных 64-битных данных с фиксированной запятой, в последующих моделях непрерывно совершенствовался.
В моделях МП Pentium 4 стало использоваться второе поколение потоковых команд расширения SSE2 (Streaming SIMD Extensions 2). Набор из 144 команд SSE2 поддерживает новые форматы упакованных данных с использованием 128-разрядных регистров (XMM-регистров) как при операциях с плавающей запятой, так и при операциях с фиксированной запятой.
Вопросы и/или темы для самопроверки:
1. Понятие сегментированной памяти.
2. Место хранения базовых адресов сегментов.
3. Термин "линейный адрес" при задании адреса в МП IA.
4. Процедура трансляции сегмента при обращении к памяти в МП IA-16.
5. Структура команд в МП IA-16.
6. Назначение префикса в командах МП IA-16.
7. Назначение постбайта в командах МП IA-16.
8. Поля и назначение SIB-байта в МП IA-32.
6 лекция.6 неделя(1 тестирование перед началом лекции – 10 мин.)
Система прерывания появилась в процессорах ЭВМ второго поколения, которые использовались, в основном, в качестве программных устройств управления различными объектами.
Основными причинами появления системы прерывания являются:
· желаниеразработчиков уменьшить простои ЭВМ при возникновении внештатных ситуаций в процессоре (попытки деления на ноль, использование несуществующей команды, сбой в устройстве и т.д.),
· желание разработчиков загрузить полезной работой процессор во время, когда он ожидает сигнал от управляемого объекта, т.е. желание реализовать фоновую работу ЭВМ.
Несмотря на то, что система прерывания появилась для разрешения двух разных по сути проблем, в современных ЭВМ используется единый механизм прерывания. Но, несмотря на единый механизм прерывания, различают особенности процедуры обработки прерываний при внештатных ситуациях в процессоре и при приходе сигналов прерывания от внешних устройств.
С переходом на многопрограммные режимы работы система прерывания стала обязательным компонентом всех ЭВМ. Система прерывания – это эффективный способ реализации контрольных и управляющих функций операционной системы для поддержки заданных режимов работы ЭВМ как аппаратно-программного комплекса.
С этой точки зрения система прерывания является интерфейсным слоем между аппаратными и программными средствами ЭВМ.
Процедура прерывания заключается в переходе на подпрограмму обработки прерывания с возможностью возврата в основную программу.
В этом изложении процедура прерывания совпадает с процедурой вызова подпрограммы с возвратом, например при выполнении команды Call. Но эти процедуры имеют существенные различия в реализации возможности возврата в основную программу.
Проблема заключается в том, что команды имеют определенное последействие, которое влияет на выполнение последующих команд. Например, выполнение команды условного перехода может зависеть от результата выполнения предыдущей команды.
Каждая команда (кроме NOP) меняет контекст программы (имеет последействие), записывая результат выполнения в память, РОН или в регистр состояния.
Команды вызова процедуры с возвратом расставляются программистом с учетом такого последействия. Но прерывание – событие, в общем случае, случайное по отношению к программе. Программа обработки прерывания может изменить контекст программы, что может привести к нарушению корректности выполнения последующих команд основной программы.
По этой причине в процедуру прерывания включают этап сохранения контекста программы, а при возращении из процедуры – этап его восстановления.
Сохранение контекста может быть реализовано схемными, программными или схемно-программными способами. Наиболее часто используют схемно-программное сохранение контекста. При этом контекст делится на основную часть и дополнительную.
В основную часть входят коды условий и биты управления, собранные в регистр состояния программы (PSW – Program Status Word или PS). Для МП Intel – это регистр флагов (EFLAGS).
В дополнительную часть входит содержимое РОН и ячеек памяти.
Основная часть контекста сохраняется аппаратно, обычно в стек. Содержимое РОНов сохраняется и восстанавливается программой обработки прерывания, причем сохраняются и восстанавливаются только РОНы, используемые программой обработки прерывания.
Так как адресные пространства программ обработки прерывания и основной программы всегда разделяются, сохранение ячеек памяти в процедуре прерывания не предусмотрено.
В зависимости от причин, прерывания делятся на исключения (ловушки) и собственно прерывания.
Ловушка (Trap)– это реакция системы на появление в работе процессора нештатных ситуаций: попытка деления на ноль, выявление несуществующего адреса и т. д. К ловушкам относятся также специальные команды программируемого прерывания.
Прерывание (Interrupt)– это реакция системы на запрос внешнего устройства (сигнал прерывания) по выполнению процессором определенной процедуры управления.
Таким образом, ловушки выявляются схемами фиксации особых ситуаций в процессоре (штатных или нештатных), требующих контроля со стороны операционной системы. При этом с каждой схемой фиксации особых ситуаций связаны определенные программы обработки прерывания.
Сигналы прерывания – это сигналы от внешних по отношению к процессору устройств в моменты, требующие управляющих действий со стороны операционной системы.
Основными вопросами реализации системы прерывания являются:
· прием сигналов прерывания и ловушек и выделение приоритетного сигнала,
· определение момента выполнения процедуры прерывания,
· выбор процедуры прерывания (модели сохранения контекста и перехода на программу обработки прерывания),
· выбор процедуры возврата из процедуры прерывания (модели восстановления контекста и перехода на основную программу).