
- •3. Работа процессоров в защищенном и реальном режимах
- •3.1 Сегментация памяти в защищенном режиме
- •3.2. Страничная организация памяти
- •3.3. Защита памяти
- •3.4. Многозадачность
- •3.13. Структура сегмента tss
- •3.5. Реализация режима виртуального 8086 (v86)
- •3.6. Функционирование процессора в реальном режиме
- •4. Реализация прерываний и исключений. Обеспечение тестирования и
- •4.1. Виды прерываний и исключений, реализация их обслуживания
- •4.2. Обработка прерываний в реальном и защищенном режимах
- •4.3. Причины возникновения исключений [1,4]
- •4.4. Реализация и обслуживание виртуальных прерываний
- •4.5. Реализация прерываний в мультипроцессорных системах
- •4.6. Средства обеспечения отладки
- •4.7. Реализация тестирования и контроля функционирования
- •5. Режим системного управления работой процессора. Инициализация, мониторинг производительности и обмен по системной шине
- •5.1. Режим системного управления (smm)
- •5.2. Инициализация и реализация энергосберегающих режимов
- •5.3. Метки реального времени и мониторинг производительности
- •Оглавление
4.5. Реализация прерываний в мультипроцессорных системах
Построение мультипроцессорных систем является одним из перспективных путей достижения высокой производительности. Наиболее простую организацию имеют симметричные мультипроцессорные системы, в которых используется несколько процессоров, объединенных общей локальной шиной. Каждый процессор выполняет свою задачу, задаваемую операционной системой (ОС). При этом процессоры совместно используют общие ресурсы системы (память, внешние устройства), обращение к которым регулируется ОС. В каждый момент времени один из процессоров является ведущим (master) - только он имеет доступ к системной шине. Другие процессоры в случае необходимости обращения к шине выдают соответствующий запрос. Эти запросы анализируются специальным устройством - арбитром шины, который работает под управлением ОС. В соответствии с определенным алгоритмом арбитр предоставляет доступ к шине одному из запросивших процессоров, который становится, таким образом, ведущим. Поддержку функционирования таких мультипроцессорных систем обеспечивает ряд современных ОС (Windows NT, Novell NetWare и другие). Чаще всего симметричные мультипроцессорные системы содержат два или четыре процессора.
Процессоры семейства Р6 имеют ряд средств для поддержки работы мультипроцессорных систем, обеспечивая для процессоров взаимный доступ к содержимому внутренней кэш-памяти данных (снупинг), возможность блокировки доступа к шине при выполнении ряда процедур и другие возможности. Различные модели этого семейства позволяют организовать эффективную работу двух- или четырехпроцессорных систем.
Одной из наиболее серьезных проблем при реализации мультипроцессорных систем является организация обслуживания внешних (аппаратных) прерываний. Классическая организация обслуживания с помощью контроллера прерываний, подающего сигнал запроса INTR и формирующего код команды INT n, с реализацией процессором цикла подтверждения прерывания ориентирована на использование в однопроцессорной системе. Для обеспечения функционирования мультипроцессорных систем в процессоры семейства Р6 введен программируемый контроллер прерываний с расширенными возможностями APIC (APIC - Advanced Programmable Interrupt Controller).
Рис. 4.5. Обработка прерываний в мультипроцессорной системе с использованием контроллеров APIC
В симметричной мультипроцессорной системе передача сигналов прерывания происходит по специальной APIC-шине (рис. 4.5). Общие внешние запросы прерываний поступают на системный APIC-контроллер, который реализован в виде отдельной микросхемы, разработанной и поставляемой компанией Intel. Каждый из процессоров содержит локальный APIC, имеющий две входных линии LINTO, LINT1, на которые поступают локальные запросы прерывания, обслуживаемые только данным процессором. При работе в однопроцессорной системе APIC отключается, и выводы LINT1-0 используются для подачи запросов немаскируемого NMI и маскируемого INTR прерываний.
Общие запросы прерывания поступают на системный APIC, который после их анализа выдает соответствующие послания на внутреннюю APIC-шину. Эта шина содержит три линии, на одну из которых (PICCLK) выдается синхросигнал, а две других (PICD1-0) служат для последовательного обмена информацией в процессе организации обслуживания поступивших запросов. При этом для внешних устройств, формирующих запросы прерывания, мультипроцессорная система выглядит как один процессор, а процедура обслуживания запросов соответствует процедуре, выполняемой серийным контроллером прерываний Intel 8259A, который широко используется в современных системах.