Реферат по предмету "Информатика, программирование"


Организация прерываний и прямого доступа к памяти в вычислительных системах, распределение ресурсов, технология Plug and Play

Министерство образования и науки РФ
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессиональногообразования
Иркутский государственный технический университет
Курсовая работа
по Организации ЭВМ
«Организация прерываний и прямого доступа к памяти в вычислительныхсистемах, распределение ресурсов, технология Plug and Play»
Выполнил: студент группы
Проверил: преподаватель
Иркутск 2010г.

Содержание
1. Прерывания и исключения
2. Основные принципы организации системы прерываний
3. Аппаратные средства системы прерываний Системныйконтроллер PIC (Programmable Interrupt Controller)
4. Обработка прерываний на основе контроллера 8259A
5. Контроллер прерываний APIC (Advanced Programmable Interrupt Controller)
6. Режим прямого доступа к памяти
7. Распределение ресурсов, технология Plug and Play
Список литературы

1. Прерывания и исключения
Чтобы обработать запросы отвнешних устройств, сообщить об ошибках или исключительных обстоятельствахнеобходимо прервать выполнение текущей программы и осуществить некоторыенеобходимые в данной ситуации действия… Чем отличаются прерывания иисключения. Различия между прерываниями и исключениями состоят в том, чтопрерывания предназначены для обработки запросов от внешних устройств, аисключения для обработки ошибок, возникающих при выполнении команд. Программныепрерывания также относятся к исключениям. С помощью команды INT n ( где n — номер прерывания) можно выполнить прерывание с любым номером в диапазоне от 0 до255. Номера 0...31 зарезервированы фирмой Intel для исключений. Прерывания,произведенные оборудованием, выполняются после выполнения текущей команды ипроисходят в результате каких-то внешних асинхронных (не связанных с текущимпроцессом) событий, нажатие клавиши, например. После того, как программаобработки прерываний заканчивает обслуживание прерывания, выполнение прерваннойпрограммы продолжается с команды, которая следует сразу за командой, послекоторой произошло прерывание. Исключения классифицируются как ошибки, ловушкиили прекращения (преждевременное прекращение выполнения программы).
Источниками исключений являютсятри типа событий:
генерируемые программой исключения,позволяющие программе контролировать определенные условия в заданных точкахпрограммы (INT0 — проверка на переполнение, INT3 — контрольная точка, BOUND — проверка границ массива);
исключения машинногоконтроля, возникающие в процессе контроля операций внутри чипа и транзакций нашине процессора (справедливо для процессора Pentium 4);
обнаруженные процессоромошибки в программе (деление на ноль, нарушение правил защиты, отсутствиестраницы и т.п.)
Ошибки — это исключения,которые обнаруживаются и выполняются до выполнения команды содержащей ошибку.Например, ошибка возникает в системе виртуальной памяти, когда процессорссылается на страницу или сегмент, которые отсутствуют в оперативной памяти.Операционная система выберет страницу или сегмент с диска и разместит его воперативной памяти, после чего процессор выполнит команду. Ловушки- этоисключения, о которых сообщается немедленно после выполнения той команды, котораявызывает исключение (произведенное действие уже не исправить). Прекращения — это исключения, которые не позволяют определить точно команду, вызвавшуюисключение. Прекращения используются для сообщения о грубых ошибках, таких какаппаратная ошибка, неправильные значения в системных таблицах. В остальныхслучаях адрес возврата в текущую программу из программы, обрабатывающейисключение всегда укажет на команду, которая вызвала исключение. Все возможныепрерывания сводятся в специальную таблицу ( до 256 различных прерываний иисключений). В таблице каждому прерыванию или исключению сопоставляется векторпрерывания- это указатель на соответствующую программу обслуживания (векторпозволяет найти адрес программы, обрабатывающей прерывание).
Программные прерывания
Команда INT n в выполняемойпрограмме заставляет процессор выполнять программу обслуживания, на которуюуказывает вектор n в таблице прерываний. Современные программы оперируют спреобразованными адресами памяти и программы прерывания служат обычно единственнымсредством для выхода из программы в операционную систему. Программные прерываниямогут использоваться для доступа к сервисам операционной системы (например, INT$21 — сервисы DOS, INT $80 — сервисы Linux), функциям драйверов устройств(например, INT $33 — драйвер мыши) или специальным сервисам (INT $10 — видео-сервис BIOS, INT $31 — DPMI-сервис), INT $67 — сервис EMS). Особымслучаем программного прерывания INT с номером n является прерывание INT 3, илипрерывание останова. Путем ввода данной команды в программу, пользователь имеетвозможность устанавливать точки останова, как инструмент отладки программы. Ещеодин тип программного прерывания, применяемого при отладке, — прерываниепошагового режима.
Маскируемые прерывания
Маскируемые прерывания — наиболее общий способ ответа на асинхронные внешние сигналы от аппаратуры.Такое прерывание может быть разрешено или запрещено. Аппаратное прерываниеразрешено тогда, когда бит флага прерываний разблокирован (установлен в 1).Процессор обслуживает разрешенное маскируемое прерывание только послевыполнения текущей команды. Он читает вектор прерывания, аппаратноустановленный на шине данных, и определяет адрес программы обработкипрерывания. Бит флага прерывания в регистре флагов (регистре состояния) может сбрасываться,когда обслуживается прерывание. Это позволяет предотвратить дополнительноепрерывание во время обслуживания первого прерывания. Если флаг прерыванияустановлен, возможно прерывание программы обработки текущего прерывания иобработка другого прерывания, т.е. разрешается обработка вложенных прерываний.
Приоритетность прерываний
Поскольку прерыванияраспознаются только после выполнения текущей команды, запросить прерываниеможет более чем один источник прерывания. В этом случае прерывания будут обслуживатьсясогласно (уровню) приоритету. Например, пусть заданная команда вызываетсистемное прерывание отладки и исключение «сегмент отсутствует».Процессор сначала отреагирует на исключение «сегмент отсутствует»(11), при этом активизируется программа обработки исключения 11. Затемпрограмма обработки исключения 11 будет прервана программой обработкипрерывания отладки, после отладки управление снова будет передано обработчикуисключения 11. Использование приоритетов прерываний позволяет системотехнику отлаживатьсвои собственные обработчики исключений.
Немаскируемые прерывания (NMI — Non-Maskable Interrrupt)
Немаскируемые прерыванияобеспечивают обслуживание прерываний очень высокого уровня. Одним израспространенных примеров немаскируемых (NMI ) прерываний может служитьпрерывание по сбою питания. Во время процедуры обслуживания немаскируемыхпрерываний процессор не будет обслуживать другие прерывания ( запрос NMI или INT),до тех пор, пока не будет выполнена команда возврата из прерывания (IRET). Флагблокировки прерываний устанавливается в начале выполнения немаскируемогопрерывания. Если другое немаскируемое прерывание (NMI) произойдет во времяобслуживания немаскируемого прерывания, запрос будет сохранен для его обработкипосле первой команды возврата из программы обработки текущего немаскируемогопрерывания.
Обработка прерываний
Когда происходитпрерывание, происходят следующие действия. Во-первых, адрес текущей команды ирегистр флагов сохраняются в стеке, что позволяет возобновить прерваннуюпрограмму. Затем, по вектору, который определяет соответствующий элемент втаблице прерываний определяется начальный адрес программы обработки прерывания.Выполняется программа обработки. И наконец, после команды возврата из программыобработки прерывания (IRET) восстанавливается прежнее состояние процессора и поадресу возврата (по адресу сохраненному в стеке) возобновляется выполнениепрограммы.
2. Основные принципыорганизации системы прерываний
Можно выделить следующиеклассы прерываний:
Внутрипроцессорные прерывания,вызванные событиями, происходящими в самом процессоре.
Внутрисистемные прерывания,определяемые событиями в системных устройствах компьютера.
Прерывания в выполняемойпрограмме, возникающие при обращении к системе BIOS.
Межпроцессорные прерыванияв мультипроцессорных системах, когда один процессор прерывает работу другого, организуяобработку программы прерывания.
Реализация режимапрерывания включает следующие шаги:
Идентификация источника прерывания;
Сохранение текущегосостояния прерываемой программы;
Запрещение повторныхпрерываний от установленного источника прерывания;
Выполнение программыобработки прерывания;
Восстановление состоянияпрерванной программы и продолжение вычислений.
Для взаимодействия программс устройствами предусматривается несколько способов:
при помощи вызовов функцийоперационной системы (прерывания DOS, API Windows и т. п.);
при помощи вызовов функций базовойсистемы ввода-вывода (BIOS);
непосредственновзаимодействуя с портами и памятью внешних устройств или контроллеровинтерфейсов этих устройств.
Обычный одноядерныйпроцессор может выполнять только один процесс, передавая управление отинструкции к инструкции согласно исполняемой программе. При этом могутисполняться переходы, ветвления и вызовы процедур, но вся последовательностьдействий запрограммирована разработчиком программы.
Теперь рассмотрим случай,когда во время этого процесса случается асинхронное (не связанное с выполняемымпроцессом)событие, требующее реакции компьютера. Рассмотрим нажатие клавиши наклавиатуре. Клавиатура по нажатию (и по отпусканию) любой клавиши генерируетспециальную посылку, содержащую код этого события (скан-код клавиши).Контроллер клавиатуры, находящийся на системной плате, принимает этот код всвой внутренний регистр и сигнализирует об этом двумя способами: устанавливаетфлаг готовности (бит в регистре состояния, который может быть прочитанпроцессором по адресу определенного порта ввода) и генерирует сигнал запросапрерывания (сигнал IRQ1). Этот сигнал поступает на вход контроллера прерываний.Контроллер прерываний формирует сигнал запроса, поступающий на входмаскируемого прерывания процессора. Если у процессора маскируемые прерыванияразрешены, то он запросит у контроллера номер вектора прерывания,соответствующего данному источнику прерывания. Сигнал от клавиатурысоответствует вектору 9. Получив значение вектора, процессор сохранит в стекеадрес следующей инструкции исполняемого процесса и выполнит вызов процедурыобработки прерывания, адрес которой задан в 9-м элементе таблицы векторовпрерываний. Вызванная процедура считает скан-код из контроллера клавиатуры (вответ он сбросит бит готовности в своем регистре состояния), выполнитнеобходимые действия, связанные с получением этого кода. Процедура обработкипрерывания завершается специальной инструкцией возврата, по которой управлениевернется прерванному процессу.
Прерывания используют и дляпереключения задач в многозадачных системах. Пусть, например, имеются двапроцесса ( две прикладные программы), которые должны выполняться как быодновременно (по-настоящему одновременно один фон-неймановский процессор ихвыполнить не может). Можно запустить один процесс, а через некоторое время егоработы по аппаратному прерыванию (от таймера) сохранить в памяти текущеесостояние процесса (все регистры, программно-доступные этому процессу) изапустить другой процесс. Через некоторое время по следующему прерываниювыполнить обратное переключение: сохранить состояние второго процесса (в другомместе памяти), загрузить в регистры процессора состояние первого процесса ипродолжить его выполнение. Эти переключения задач следует выполнять в течениеисполнения обоих программ с частотой, создающей у пользователя иллюзиюодновременности. Понятно, что ресурсы процессора (производительность) в этомслучае делятся между задачами, пропорционально выделяемым им квантам времени.Чтобы пользователя такая производительность процессов удовлетворяла (а ещеучтем расходы времени на сохранение и восстановление процессов припереключениях), у процессора должна быть достаточная мощность.
Для того, чтобы процессы немешали друг другу (по недосмотру или умышленно), требуются меры принудительнойзащиты критических ресурсов. Современные операционные системы используютзащищенный режим процессора, в котором эти меры реализуются на аппаратномуровне. Поскольку программа может взаимодействовать с подсистемами компьютератолько через пространства памяти и портов ввода-вывода, а также аппаратныепрерывания, то защищать нужно эти три типа ресурсов. Самую сложную защиту имеетпамять. Операционная система выделяет каждому процессу области памяти —сегменты — различного назначения и с разными правами доступа. Из однихсегментов можно только читать данные, в другие возможна и запись. Дляпрограммного кода выделяются специальные сегменты, инструкции могут выбиратьсяи исполняться только из них.
Переключение задачпроизводится по сигналу прерывания от таймера для процессов, работающихпсевдопараллельно. Поэтому программисту, разрабатывающему прикладную программу,в большинстве случаев не надо заботиться о многозадачной работе. В распоряжениеего программы предоставляется виртуальная машина (тоже фон-неймановская), котораявыполняет единственный процесс. Конечно, поддержка виртуальных машин требуетопределенных усилий со стороны многозадачной операционной системы, которойприходится распределять не только процессорное время, но и память, устройствахранения, ввода-вывода и коммуникационные — то есть все ресурсы реальногокомпьютера. В этом ей помогают специальные средства, введенные в процессоры x862–3-го поколений и постоянно развиваемые в старших поколениях. Кроме тогосовременные процессоры имеют специальные интерфейсные средства для построениямногопроцессорных систем. Интерфейс позволяет объединять в систему до 4-хпроцессоров, при этом почти все их одноименные выводы объединяются. Цельюобъединения является либо использование симметричной мультипроцессорнойобработки SMP (Symmetric Multi-Processing), либо построениефункционально-избыточных систем FRC (Functional Redundancy Checking).
3. Аппаратные средства системыпрерываний Системный контроллер PIC (Programmable Interrupt Controller)
Рассмотрим, какорганизована система прерываний в IBM-совместимых персональных компьютерах. Современныйпроцессор предназначен для работы в многопроцессорных системах и организацияпрерываний претерпела некоторые изменения. Если ранее для организациипрерываний применялся только системный контроллер PIC (Programmable InterruptController), то начиная с процессора Pentium каждый современный процессор имеетвстроенный контроллер APIC (Advanced Programmable Interrupt Controller) длявыполнения ряда новых функций и поддержки ранее введенной системы прерываний.Часть контроллера APIC — I/O APIC встраивается в чипсет, обеспечивающий работупроцессора в вычислительной системе и, кроме дополнительных функций,выполняющий функции контроллера PIC, поддерживая аппаратную совместимость спрежними вычислительными системами. Чтобы понять, как работает современнаясистема прерываний, познакомимся с обработкой прерываний на основе контроллера8259А.
4. Обработка прерываний наоснове контроллера 8259A
Программируемый контроллерпрерываний PIC 8259A представляет собой устройство, реализующее до восьмиуровней запросов на прерывания с возможностью программного маскирования и измененияпорядка обслуживания прерываний. За счет каскадного включения число уровнейпрерывания может быть расширено до 64. Установка контроллера в исходноесостояние и «настройка» его на определенный режим обслуживанияпрерываний происходит с помощью двух типов команд: команд инициализации (ICW) икоманд управления операциями (OCW). На рисунке 1 показана структурная схемаконтроллера прерываний. Контроллер прерываний включает следующие блоки:
RGI — регистр запросовпрерываний IRQx.
PRB — схема принятия решенийпо приоритетам; схема идентифицирует приоритет запросов и выбирает запрос снаивысшим приоритетом.
ISR — регистр обслуживаемыхпрерываний; сохраняет запросы прерываний, находящиеся на обслуживанииконтроллера прерываний.
RGM — регистр маскированияпрерываний; обеспечивает запрещение одной или нескольких линий запросовпрерывания.
BD — буфер данных;предназначен для сопряжения с системной шиной данных.
RWCU — блок управлениязаписью/чтением; принимает управляющие сигналы от микропроцессора и задает режимфункционирования контроллера прерываний.
CMP — схема каскадногобуфера-компаратора; используется для включения в систему несколькихконтроллеров.
CU — схема управления;вырабатывает сигналы прерывания и формирует трехбайтовую команду CALL длявыдачи на шину данных.

/>
Рис.1. Структураконтроллера прерываний 8259А
И так, один контроллер8259A способен обслуживать прерывания от 8 источников и этого было достаточнодля компьютеров IBM PC ХT. В системах IBM PC AT применяется каскадноесоединение двух контроллеров (рис.2), один из которых является ведущим, другой— ведомым. Ведущий контроллер 8259A#1( master) обслуживает запросы 0, 1, 3–7;его выход подключается к входу запроса прерываний процессора. К входу 2контроллера 8259A#1 подключен ведомый контроллер 8259A#2 (slave), которыйобслуживает запросы 8–15. При этом поддерживается вложенность приоритетов —запросы 8–15 со своим рядом убывающих приоритетов вклиниваются между запросами1 и 3 ведущего контроллера, приоритеты запросов которого также убывают с ростомномера. В качестве примера отметим, что к линии IRQ 0 подключен системныйтаймер, к линии IRQ 1 — клавиатура, к линии IRQ 8 — часы реального времени ит.д. Такое каскадное подключение позволяет 15-ти устройствам посылать запрос наобслуживание (прерывание текущей программы).

/>
Рис. 2. Каскадное включениеконтроллеров прерываний
На современных системныхплатах функции контроллеров прерываний возлагаются на чипсет, который можетиметь и более гибкие возможности управления, чем пара контроллеров 8259A.Процедура инициализации контроллеров может отличаться от традиционной, еюзанимается тест POST, который учитывает особенности системной платы. Однако привыполнении операций, связанных с реализацией режима прерывания всегдасохраняется программная совместимость с 8259A. Поскольку в каждый моментвремени может поступить более чем один запрос на прерывание, контроллерпрерываний имеет схему приоритетов. В основном режиме — режиме полноговложения, — до тех пор, пока установлен разряд в регистре ISR, соответствующийзапрашиваемому прерыванию, все последующие запросы с таким же или более низкимприоритетом игнорируются, подтверждаются лишь запросы с более высокимприоритетом.
В циклическом режимеиспользуется круговой порядок использования приоритетов. Последнемуобслуженному запросу присваивается низший приоритет, следующему по кругу — наивысший, что гарантирует обслуживание остальных устройств до очередногообслуживания данного устройства.
Контроллер допускаетмаскирование отдельных запросов прерываний, что позволяет устройствам с болеенизким приоритетом получить возможность генерировать прерывания. Режимспециального маскирования разрешает прерывания всех уровней, кроме уровней,обслуживаемых в данный момент.
Кроме того, для каскадноговключения возможен специальный режим полного вложения. Этот режимпрограммируется при инициализации контроллера. В данном режиме игнорируютсязапросы с приоритетом более низким, чем приоритет обрабатываемого в данныймомент запроса, и обслуживаются все запросы с равным или более высокимприоритетом.
Взаимодействие контроллерапрерываний с внешним устройством осуществляется по следующей схеме. Пусть в некоторыймомент времени контроллер клавиатуры с помощью единичного сигнала по линии IRQ1 известил контроллер прерываний о своей готовности к обмену. В ответ на запросконтроллер прерываний генерирует сигнал INTR (запрос на прерывание) и посылаетего на соответствующий вход процессора. Процессор, если маскируемые прерыванияразрешены (т.е. установлен флаг прерываний IF в регистре флагов процессора),посылает на контроллер шины сигналы R# — чтение, C# — управление и IO# — ввод/вывод, определяющие тип цикла шины. Контроллер шины, в свою очередь,генерирует два сигнала подтверждения прерывания INTA# и направляет их наконтроллер прерываний. По второму импульсу контроллер прерываний выставляет нашину данных восьмибитный номер вектора прерывания, соответствующий данной линииIRQ.
В режиме реального адреса(«реальном» режиме) векторы прерываний хранятся в таблице векторовпрерываний, которая находится в первом килобайте оперативной памяти. Под каждыйвектор отведено 4 байта (2 байта под адрес сегмента и 2 байта под смещение),т.е. в таблице может содержаться 256 векторов.
Далее процессор считываетномер вектора прерывания. Сохраняет в стеке содержимое регистра флагов,сбрасывает флаг прерываний IF и помещает в стек адрес возврата в прерваннуюпрограмму (регистры CS и IP). После этого процессор извлекает из таблицывекторов прерываний адрес подпрограммы обработки прерываний для данногоустройства и приступает к ее выполнению.
Процедура обработкиаппаратного прерывания должна завершаться командой конца прерывания EOI (End ofInterruption), посылаемой контроллеру прерываний. Для этого необходимо записатьбайт 20h в порт 20h (для первого контроллера) и в порт A0h (для второго).
В IBM PC/AT используетсярежим прерываний с фиксированными приоритетами. Как мы уже отмечали, высшимприоритетом обладает запрос по линии IRQ0, низшим — IRQ7. Так как второйконтроллер подключен к линии IRQ2 первого контроллера, то приоритеты линий IRQв порядке убывания приоритета располагаются следующим образом: IRQ0, IRQ1, IRQ8- IRQ15, IRQ3 — IRQ7. Если запрос на обслуживание посылают одновременно дваустройства с разными приоритетами, то контроллер обслуживает запрос с большимприоритетом, а запрос с меньшим приоритетом блокирует. Блокировка сохраняетсядо получения команды EOI. В таблице 1. приведены источники прерываний,соответствующие им линии запроса, расположенные по убыванию приоритета — P,вектор1 — значение вектора в таблице векторов реального режима (реальногоадреса), вектор2 — значение вектора, который использует операционная система (взащищенном режиме).
Таблица прерыванийзащищённого режима называется дескрипторной таблицей прерываний IDT (InterruptDescriptor Table).

Таблица 1. Источникиаппаратных прерываний в IBM PC AT
/>Запрос Источник P вектор1 вектор2 NMI Ошибка памяти или другая неисправимая ошибка в системе   02h   IRQ0 Системный таймер 1 08h 50h IRQ1 Клавиатура 2 09h 51h IRQ8 Часы реального времени 3 70h 58h IRQ9 Устройство на системной шине 4 71h 59h IRQ10 Устройство на системной шине 5 72h 5Ah IRQ11 Устройство на системной шине 6 73h 5Bh IRQ12 Устройство на системной шине 7 74h 5Ch IRQ13 Ошибка сопроцессора 9 75h 5Dh IRQ14 IDE контроллер 9 76h 5Eh IRQ15 Устройство на системной шине 10 77h 5Fh IRQ3 Последовательный порт (COM2 или COM4) 11 0Bh 52h IRQ4 Последовательный порт (COM1 или COM3) 12 0Ch 53h IRQ5 Параллельный порт (LPT2) или IDE контроллер (вторичный) 13 0Dh 54h IRQ6 Контроллер дисковода 14 0Eh 55h IRQ7 Параллельный порт (LPT1) 15 0Fh 56h
Дескрипторная таблицапрерываний IDT (Interrupt Descriptor Table) располагается по адресу, которыйзаносится в 5-байтовый внутренний регистр процессора IDTR. Регистр IDTRсодержит 24-битовый физический адрес дескрипторной таблицы прерываний IDT и еёпредел.
Для обработки особыхситуаций — исключений был зарезервирован 31 номер прерывания. В таблице 2приведён полный список зарезервированных прерываний защищённого режима.
Таблица 2. Зарезервированныепрерывания защищённого режима. 00h Ошибка при выполнении команды деления. 01h Прерывание для пошаговой работы, используется отладчиками. 02h Немаскируемое прерывание. 03h Прерывание по точке останова для отладчиков. 04h Переполнение, генерируется командой INTO, если установлен флаг переполнения OF. 05h Генерируется при выполнении машинной команды BOUND, если проверяемое значение вышло за пределы заданного диапазона. 06h Недействительный код операции, или длина команды больше 10 байт. 07h Отсутствие арифметического сопроцессора. 08h Двойная ошибка, вырабатывается в том случае, если при обработке исключения возникло ещё одно исключение. Если во время обработки этого прерывания возникает третье исключение, процессор переходит в состояние отключения, что приводит к перезапуску процессора. 09h Превышение сегмента арифметическим сопроцессором. 0Ah Недействительный сегмент состояния задачи TSS. 0Bh Отсутствие сегмента. Вырабатывается при попытке использовать для адресации дескриптор, у которого бит присутствия сегмента в памяти P сброшен в 0. Это прерывание используется для реализации механизма виртуальной памяти. В этом случае по прерыванию 0Bh операционная система может выполнить подкачку отсутствующего сегмента в память. 0Ch Исключение при работе со стеком. Может возникать в случае отсутствия сегмента стека в памяти или в случае переполнения (антипереполнения) стека. 0Dh Исключение по защите памяти. Возникает при любых попытках получения доступа к сегментам памяти, если программа обладает недостаточным уровнем привилегий. 0Eh Отказ страницы для процессоров i80386 или i80486, зарезервировано для i80286. 0Fh Зарезервировано. 10h Исключение сопроцессора. 11h — 1Ah Зарезервированы.
Перед тем, как передатьуправление обработчику исключения, процессор для некоторых исключений помещаетв стек 16-битовый код ошибки. Код ошибки программа анализирует и получаетдополнительную информацию об ошибке. Коды ошибок включаются в стек не толькодля следующих исключений:
08h — двойная ошибка;
0Ah — недействительныйсегмент состояния задачи TSS;
0Bh — отсутствие сегмента впамяти;
0Ch — исключение при работесо стеком;
0Dh — исключение по защитепамяти.
Заметим, что аналога кодуошибки для зарезервированных прерываний в реальном режиме нет. Рассмотримследующий пример: Пусть в нашей системе реализована виртуальная память.Программа в некоторый момент времени обратилась к отсутствующему в оперативнойпамяти сегменту, выполняя какую-либо команду, например MOV или ADD. Возниклоисключение 0Bh — отсутствие сегмента в памяти. Обработчик этого исключения,входящий в состав операционной системы поместил соответствующий сегмент воперативную память. Затем выполнение прерванной команды повторяется. Это можносделать, так как для всех повторно запускаемых исключений (кроме 03h — прерывание по точке останова и 04h — переполнение) в стек включается адрес неследующей за прерванной командой, а адрес первого байта команды, котораявызвала исключение. Выполнив команду IRET, программа обработки исключения вновьпередаст управление прерванной команде. Свойством повторной запускаемостиобладает большинство зарезервированных прерываний, кроме следующих:
01h — прерывание дляпошаговой работы;
08h — двойная ошибка;
09h — превышение сегментасопроцессором;
0Dh — исключение по защитепамяти;
10h — исключениесопроцессора.
После возврата процессора вреальный режим необходимо восстановить состояния контроллера прерываний. Приэтом BIOS перепрограммирует контроллер прерываний для работы в реальном режиме Призагрузке операционной системы, после инициализации процедурой POST, всенеиспользуемые входы контроллеров будут замаскированы (на запросы прерыванийреагировать не будут), их векторы прерываний указывают на процедуру сединственной инструкцией IRET (возврат). Для подключения программы обработчикапрерывания необходимо загрузить обработчик в память и установить указатель нанего в таблице прерываний, размаскировать соответствующий ему вход вконтроллере прерываний, для чего выполняется обнуление соответствующего битарегистра маски. Если же обработчик прерывания удаляется из памяти,предварительно должен быть замаскирован соответствующий ему вход контроллера.Все изменения в таблице прерываний должны выполняться при замаскированныхпрерываниях, чтобы избежать попытки использования вектора в процессе егомодификации. Для устройств PCI выделяется четыре проводных линии запросов(IRQX, IRQY, IRQZ, IRQW), соединяемых с контактами INTA#, INTB#, INTC# и INTD#всех слотов PCI с циклическим смещением цепей. Таким образом, на слотах PCIостаются доступными лишь четыре обычные линии запросов. Устройство PCI вводитсигнал прерывания низким уровнем на выбранную линию INTx#. Этот сигнал долженудерживаться до тех пор, пока программный драйвер, вызванный по прерыванию, несбросит запрос прерывания, обратившись по шине к данному устройству. Если послеэтого контроллер прерываний снова обнаруживает низкий уровень на линии запроса,это означает, что запрос на ту же линию ввело другое устройство, разделяющееданную линию с первым, и оно тоже требует обслуживания. Линии запросов отслотов PCI и PCI-устройств системной платы коммутируются на входы контроллеровпрерываний относительно произвольно. Конфигурационное программное обеспечиниеможет определить и указать занятые линии запросов и номер входа контроллерапрерываний обращением к конфигурационному пространству устройства. Программный драйвер,прочитав конфигурационные регистры, тоже может определить эти параметры длятого, чтобы установить обработчик прерываний на нужный вектор и приобслуживании сбрасывать запрос с требуемой линии. Каждая функция устройства PCIможет задействовать свою линию запроса прерывания, но его обработчик прерываниядолжен быть готовым к ее разделению (совместному использованию) с другимиустройствами.
5. Контроллер прерываний APIC (Advanced Programmable Interrupt Controller)
Система с APIC (рис.3.)состоит из локальных контроллеров, установленных в процессорах, и контроллеровпрерываний (одного или нескольких) от устройств ввода/вывода. Задача каждоголокального контроллера (Local APIC) — трансляция полученных сообщений всигналы, вызывающие все аппаратные прерывания своего процессора — маскируемые(INTR), немаскируемые (NMI) и прерывания системного обслуживания (SMI). Крометого, локальные APIC позволяют каждому процессору генерировать прерывания длядругих процессоров. Локальный контроллер имеет внутренний интервальный таймер,позволяющий вырабатывать прерывания через программируемый интервал времени.
/>
Рис.3. Взаимодействиевстроенного APIC и I/O APIC по системной шине
Контроллер прерываний отввода/вывода (I/O APIC) в мультипроцессорном режиме отвечает за распределениепрерываний по процессорам, для чего может использоваться статическое илидинамическое распределение. В случае статического распределения для каждогономера прерывания указывается номер процессора, который его обслуживает. Вслучае динамического распределения каждое прерывание направляется наименее приоритетномув данный момент процессору. Этот же контроллер отвечает за распространениесигналов о системных событиях (NMI, INIT, SMI) и межпроцессорных прерываний.
Встроенный в процессорпрограммируемый контроллер прерываний APIC расширяет количество ранее введенныхфункций контроллера прерываний. Встроенный APIC предназначен для регистрациипрерываний от источников внутри процессора (например, от блока температурногоконтроля) или от внешнего контроллера прерываний и передачи их ядру процессорана обработку. Особо важная роль возлагается на встроенный APIC вмногопроцессорных системах, где APIC принимает и генерирует сообщения омежпроцессорных прерываниях (IPI — InterProcessor Interrupt). Такие сообщениямогут использоваться для распределения обработки прерываний между процессорамиили для выполнения системных функций (первоначальная загрузка, диспетчеризациязадач и т.п.). Все процессоры многопроцессорной системы принимают сигналы,поступающие на вход INTR# ( маскируемые аппаратные прерывания). Бит IF в регистрефлагов позволяет заблокировать (замаскировать) обработку таких прерываний.Сигналы прерываний, поступающие на вход NMI#, являются немаскируемымиаппаратными прерываниями Немаскируемые прерывания не блокируются флагом IF. Какмы уже знаем, пока выполняется программа — обработчик немаскируемогопрерывания, процессор блокирует получение немаскируемых прерываний довыполнения инструкции IRET, чтобы исключить одновременную обработку несколькихнемаскируемых прерываний. Структура встроенного APIC является архитектурнымподмножеством микросхемы контроллера прерываний Intel 82489.
Встроенный APIC различаетследующие источники прерываний:
1. От локальных внутреннихустройств. Сигнал запроса прерывания поступает от устройства, непосредственноподключенного к сигналам LINT0 и LINT1 (например, от контроллера прерыванийтипа8259A).
2. От внешних устройств.Сигнал запроса прерывания от устройства, подключенного к системному контроллерупрерываний.
3.Межпроцессорные (IPI). Вмногопроцессорных системах один из процессоров может прервать другой при помощисообщения IPI.
4. От таймера APIC.Встроенный APIC содержит таймер, который можно запрограммировать на генерацию прерыванияпо достижении определенного отсчета времени.
5. От таймера мониторапроизводительности. Современные процессоры содержат блок мониторингапроизводительности. Этот блок можно запрограммировать таким образом, чтобысвязанный с ним таймер при достижении определенного отсчета генерировал прерывание.
6. От термодатчика.Современные процессоры содержат встроенный блок температурного контроля,который можно запрограммировать на генерацию прерываний.
7. Внутренние ошибки APIC.Встроенный APIC может генерировать прерывания при возникновении внутреннихошибочных ситуаций (например, при попытке обратиться к несуществующему региструAPIC).
Источники 1, 4, 5, 6, 7считаются локальными источниками прерываний и обслуживаются специальным наборомрегистров APIC, называемым таблицей локальных векторов (LVT — local vectortable). Два других источника обрабатываются APIC через механизм сообщений. Этисообщения, начиная с процессора Pentium 4 передаются по системной шине, поэтомуконтроллер прерываний подключен непосредственно к обычному системномуинтерфейсу (например, к шине PCI). Наличие встроенного APIC в процессоре обнаруживаетсяпри помощи инструкции CPUID(1). После сигнала RESET встроенный APIC включен,однако впоследствии он может быть отключен, тогда процессор будет работать с прерываниямикак Intel-386/486 (линии LINT0 и LINT1 будут использоваться как NMI# и INTR#, ккоторым может быть подключен контроллер прерываний типа 8259A).
Таблица локальных векторов(LVT) состоит из шести 32-битных регистров:
регистр вектора прерывания оттаймера;
регистр вектора прерывания оттермодатчика
регистр вектора прерывания отмонитора производительности
регистр вектора прерывания LINT0;
регистр вектора прерывания LINT1;
регистр вектора прерывания ошибки.
Значения в этих регистрахопределяют:
номер вектора прерывания;
тип прерывания ( fixed — прерывание с указанным вектором, SMI — системное прерывание, переход в режимсистемного управления, NMI — немаскируемое прерывание, INIT — сброс, ExtINT — внешнее прерывание: при получении такого запроса на прерывание процессоргенерирует цикл INTA и ожидает номер вектора прерывания от внешнего контроллера;
маску прерывания (прерываниеможет быть замаскировано).
Эти регистры также отражаютсостояние прерывания (доставляется ли это прерывание ядру процессора в данныймомент).
Кроме того, APIC содержитрегистры управления таймером APIC, регистр версии, регистр ошибки, регистры,связанные с обслуживанием прерываний (регистр приоритета, регистр запроса IRR,регистр обслуживания ISR), и регистры, связанные с передачей и приемом IPI.
Контроллер APIC в первуюочередь предназначен для симметричных мультипроцесорных систем (SMP), описанныхв документе Intel «MultiProcessor Specification» (MPS). Здесь симметриярассматривается в двух аспектах:
симметрия памяти — всепроцессоры пользуются общей памятью, работают с одной копией ОС;
симметрия ввода/вывода —все процессоры разделяют общие устройства ввода/вывода и общие контроллерыпрерываний.
Система может бытьсимметричной по памяти, но асимметричной по прерываниям от ввода/вывода, еслидля них используется выделенный процессор. Симметрию по прерываниям обеспечиваетAPIC. Прерывания в мультипроцессорных системах подробно рассмотрены в документе«Intel Architecture Software Developer’s Manual Volume 3: System ProgrammingGuide», доступном на сайте www.intel.com. Здесь же ограничимсяописаниями возможностей, предоставляемыми для сигнализации прерыванийввода/вывода контроллерами APIC.
Контроллер I/O APICявляется частью чипсета системной платы, например, он входит в хабы ICH2 и ICH3чипсетов Intel. В специфкации MPS определено три режима обработки прерываний:
Режим PIC (PIC Mode) —эмуляция пары PIC 8259A с традиционной передачей сигналов прерывания одномупроцессору (загрузочному, BSP Bootstrap Pro cessor) по линиям INTR и NMI;
Ррежим работы с подачейсигналов прерывания по локальной шине APIC. При этом I/O APIC может работатьсовместно с PIC 8259A, обеспечивая дополнительные возможности (в частности,дополнительные входы запросов прерываний);
Режим, когда прерывания отустройств генерирует I/O APIC; прерывания могут доставляться любому процессору;каждый вход запроса индивидуально программируется с помощью таблицыперенаправления прерываний (I/O Redirection Table).
Первые два режимаобеспечивают полную совместимость с системой прерываний PC/AT, с программнойточки зрения они эквивалентны, различия лежат в области схемотехники. Поаппаратному сбросу или при включении питания система начинает работать в одномиз этих режимов. Когда система подготовится к переходу в многопроцессорный (MP)режим, APIC переводится в симметричный режим и активизирует таблицу перенаправленийпрерываний (предварительно программно инициализированную).
В MP-системе присутствуеттаблица описаний ее компонентов. К системе прерываний в этой таблице относятсяописатели всех I/O APIC, а также описатели назначений всех используемыхисточников прерываний, связанных с I/O APIC и локальными APIC. В описателеназначения для каждого источника прерываний указывается:
тип прерывания: векторное спередачей вектора через APIC, векторное с внешней передачей вектора (от PIC8259A), NMI или SMI;
полярность сигнала и еготип (уровень или перепад);
идентификатор шины, накоторой расположен источник;
идентификатор запроса наэтой шине;
идентификатор и номер входаAPIC, к которому подключен данный запрос.
Для симметричныхмногопроцессорных систем допустимы векторы в диапазоне 10h–FEh. Уровеньприоритета прерывания определяется номером его вектора, деленным на 16. Самыйприоритетный уровень — нулевой.
Контроллер I/O APICпозволяет вырабатывать значительное число запросов прерываний; каждому запросусоответствует свой элемент в таблице перенаправлений, находящейся в APIC. Сзапросами связаны индивидуальные входы INTINn; определенный уровень или перепадсигнала на этих входах вызывает соответствующие запросы. Вектор (следовательно,и приоритет) для каждого запроса программируется индивидуально. Болеесовершенные модели I/O APIC позволяют вызывать прерывание с записью номеравхода в регистр контроллера, что, например, используются для поддержкипрерываний MSI на шине PCI. При этом возможна и экономия сигнальных входов: APICможет иметь входы INTINn не для всех номеров запросов, посылаемых через записьв этот регистр. Однако число запросов всегда ограничивается размером таблицыперенаправлений. Регистры контроллеров APIC отображаются на пространствопамяти. Все локальные контроллеры APIC используют один и тот же диапазонадресов (по умолчанию базовый адрес FEE0 0000h) — к их регистрам обращаютсятолько программы, исполняемые на их же процессорах, и эти обращения невыводятся на системную шину. Контроллеры I/O APIC доступны всем процессорам, поумолчанию базовый адрес первого I/O APIC — FEC0 0000h, базовые адреса остальныхконтроллеров (если таковые имеются) назначаются последовательно с шагом 1000h.Часть регистров адресуется непосредственно, большая часть регистров, включая и таблицуперенаправлений, адресуется косвенно.
Шина PCI имеетпрогрессивный механизм оповещения об асинхронных событиях, основанный на передачесообщений MSI (Message Signaled Interrupts). Здесь для сигнализации запросапрерывания устройство запрашивает управление шиной и, получив его, посылаетсообщение. Сообщение выглядит как обычная запись двойного слова в ячейкупамяти, адрес (32-битный или 64-битный) ишаблон сообщения на этапеконфигурирования устройств записываются в конфигурационные регистры устройства(точнее, функции). В сообщении старшие 16 бит всегда нулевые, а младшие 16 битнесут информацию об источнике прерывания. Устройство (функция) могут нуждатьсяв сигнализации нескольких типов запросов; в соответствии с его потребностями исвоими возможностями система указывает устройству (функции), сколько различныхтипов запросов оно может вырабатывать. Прерывания через MSI позволяют избежатьразделяемости, обусловленной дефицитом линий запросов прерывания в PC. Крометого, они решают проблему целостности данных: все данные, записываемыеустройством до посылки MSI, дойдут до получателя гарантированно раньше началаобработки MSI. Прерывания через MSI от одних устройств в одной системе могутиспользоваться наряду с обычными INTx# от других устройств. Но устройство(функция), использующее MSI, не должно использовать прерывания через линииINTx#. Механизм MSI может использоваться на системных платах, имеющих контроллерпрерываний APIC. Правда, конкретная реализация поддержки MSI можетпотенциальные возможности облегчения идентификации большого числа запросовпрерывания свести лишь к увеличению числа доступных запросов прерываний (ииспользуемых ими векторов). Всем устройствам PCI назначается один и тот жеадрес сообщений (Message Address = FEC00020h), по которому в APIC находитсярегистр IRQ Pin assertion. В сообщении используются лишь младшие 5 бит, вкоторых указывается номер взводимого запроса прерывания в диапазоне 1–23(исключая 2, 8 и 13). Прерывания с номерами, используемыми в MSI, не могутиспользоваться совместно (разделяемо) с прерываниями, полученными другимиспособами (по линиям запросов от устройств PCI и от других устройств системнойплаты).
6. Режим прямого доступа кпамяти
Мы уже знаем, что ввычислительных системах используется два способа организации обмена даннымимежду внешним устройством и памятью.
Первый способ — программируемый ввод-вывод (PIO). В этом режиме ввод и вывод данныхосуществляет процессор, используя для пересылки свои внутренние регистры.Процессор читает данные из порта (регистра) внешнего устройства и записываетего в нужную область памяти, или наоборот, читает данные из памяти и передаетих внешнему устройству (дисковый накопитель, например). Режим PIO определяет, скакой скоростью данные передаются от диска к памяти и от памяти к диску. Всамом медленном режиме — PIO mode 0 — время цикла передачи данных не превышает600 наносекунд. За один цикл к диску и от диска передаются 16 бит (2 байта).Отсюда следует, что теоретическая скорость передачи данных в режиме PIO Mode 0- 3.3 мегабайта в секунду.
Обмен между двумяустройствами может производиться по разным протоколам и с разными задержками навыдачу тех или иных сигналов. Существует 5 режимов PIO, управляемыхпроцессором. Старший режим PIO4 позволяет работать со скоростью 16.6 Мбайт/c. Второйспособ обмена — прямой доступ памяти (DMA -Direct Memory Access). Прямой доступк памяти в современных вычислительных системах претерпел значительныеизменения. Познакомимся с основными принципами организации прямого доступа кпамяти. Для реализации режима прямого доступа к памяти, внешнее устройстводолжно отправить процессору запрос (поэтому такому устройству должна бытьвыделена специальная линия запроса прерывания).
Процессор программируетспециальный контроллер (контроллер DMA) на обслуживание работы внешнегоустройства в режиме прямого доступа к памяти. Он задает адрес памяти, размерпередаваемого блока данных, направление передачи (чтение или запись), послечего дает команду на выполнение.
/>
Рис.4. Взаимодействиепамяти и внешнего устройства в режиме DMA
Пересылкой данных управляетконтроллер DMA. Процессор, в это время, может продолжить выполнение прерваннойпрограммы, но доступа к памяти он не имеет и не может вмешаться в процессобмена, пока контроллер не закончит передачу данных и не выдастсоответствующего сообщения. Режимы контроллера DMA позволяют передавать данныекак по одному слову (Single Word), так и по несколько сразу (Multi Word).Передача данных со скоростью до 16.6 Мбайт/c — обычный протокол, со скоростью66 Мбайт/c (или 100) — протокол UltraDMA. Упрощенная схема обмена внешнегоустройства с памятью в режиме прямого доступа к памяти показана на рис.4.
Контроллер DMA имеетнесколько каналов. Каждому периферийному устройству, работающему в режимепрямого доступа к памяти выделяется канал с определенным номером. Устройствоможет послать контроллеру запрос обмена — DRQx и получить разрешение обмена — DACKx#.На шине управления устанавливается сигнал записи или чтения данных при работевнешнего устройства с памятью. Для передачи данных используется шина данных(рис.5.). При операциях с прямым доступом к памяти по каналу DMA адрес портауказывать не требуется, посылаемые сигналы идентифицируются по номеру канала.Временная диаграмма цикла передачи данных из внешнего устройства в память будетвыглядеть следующим образом:
/>
Рис.5. Схема обменасигналами управления для передачи данных в режиме DMA
Получив запрос DRQx ( х — номер канала DMA, выделенного устройству), контроллер DMA запрашиваетуправление шиной и ждет разрешения от процессора. Процессор прерываетвыполнение текущей программы, программирует контроллер прямого доступа наопределенный режим передачи данных и посылает сигнал разрешения прямого доступак памяти. Контроллер выставляет адрес ячейки памяти и формирует сигналы DACKx#и WR#. Сигнал DACKx# указывает на то, что операция выполняется для канала х, WR#определяет режим записи данных, при чтении устанавливается сигнал чтения RD). Контроллерпередавая данные модифицирует счетчик адреса и осуществляет передачу одногослова за другим. Контроллер повторяет эти шаги для каждого следующего сигналаDRQx, пока не будет исчерпан счетчик циклов. В последнем цикле обменаконтроллер формирует общий сигнал окончания ТС (TerminateCount), который можетбыть использован для формирования сигнала аппаратного прерывания. При работе врежиме прямого доступа к памяти контроллер DMA выполняет следующие функции:
принимает запрос на прямойдоступ к памяти от внешнего устройства;
формирует запрос процессоруна захват системной шины;
принимает сигнал,подтверждающий переход процессора в состояние захвата шины внешним устройством(перехода в состояние, при котором процессор отключается от системной шины);
формирует сигнал,сообщающий внешнему устройству о начале выполнения циклов прямого доступа кпамяти;
выдает на шину адресасистемной шины адрес ячейки оперативной памяти, предназначенной для обмена;
вырабатывает сигналы,обеспечивающие управление обменом данными;
по окончании цикла прямогодоступа к памяти контроллер снимает сигнал запроса, процессор снова становитсяхозяином системной шины.
Каждый канал контроллерапрямого доступа к памяти состоит из 5-ти регистров, четырех 16-разрядныхрегистров (рис.6) и одного 6-ти разрядного:
регистра текущего адреса(CAR);
регистра циклов прямогодоступа к памяти (CWR);
регистра хранения базовогоадреса блока памяти (BAR);
регистра хранения базовогочисла циклов прямого доступа к памяти (WCR);
6-разрядного регистрарежима (MR).

/>
Рис.6. Каскадное включениеконтроллеров DMA
Регистр текущего адресахранит текущий адрес ячейки памяти при выполнении цикла прямого доступа кпамяти. После выполнения каждого цикла передачи данных содержимое этогорегистра уменьшается на единицу. То есть при выполнении циклов регистр работаетв режиме вычитающего счетчика. В режиме инициализации содержимое регистратекущего адреса принимает базовый адрес из регистра хранения базового адреса, ав счетчик циклов загружается базовое число циклов передачи данных. Дляорганизации прямого доступа в память в компьютерах IBM PC/XT использоваласьодна 4-канальная микросхема DMA 18237, канал 0 которой был предназначен длярегенерации динамической памяти (сейчас регенерацию осуществляет внутреннееустройство управления микросхемы памяти). Каналы 2 и 3 служат для управленияпередачей данных между дисководами гибких дисков, а также винчестером и оперативнойпамятью соответственно. Свободным оставался только канал DMA 1. Канал DMA 1обычно используется звуковыми картами. Один канал DMA может использоватьсяразличными устройствами, но не одновременно. IBM PC/AT -совместимые компьютерыимеют уже 7 каналов прямого доступа к памяти. Как и для контроллеровпрерываний, увеличение числа каналов было достигнуто путем каскадного включениядвух микросхем i8237, интегрированных в микросхему контроллера периферии (южныймост); канал 0 DMA2 используется для подключения каналов контроллера DMA1 (рис.6) .
Каналы первого контроллерапо-прежнему используются как 8-ми разрядные, каналы второго контроллераиспользуются для передачи 16-ти разрядных данных в одном цикле обмена данными. Рассмотримустройство контроллера DMA (рис. 7)
/>
Рис.7. Структурная схемаконтроллера DMA
Структура одного каналапоказана на примере канала 0. В каждом канале регистры BAR и WCR предназначеныдля хранения констант — базового адреса и базового числа циклов. Онизагружаются в режиме программирования контроллера одновременно с регистрами CAR(базовый адрес памяти) и CWR ( текущий адрес памяти). Регистр режима MRопределяет режим работы канала. Он содержит информацию о типе цикла прямогодоступа (чтение (ОП ВУ), проверка), режимеизменения регистра текущего адреса (CAR) — увеличение или уменьшение и режимеработы канала — передача по запросу, одиночная передача, блочная передача,каскадирование (работа каскадной схемы контроллера DMA). Блок управлениярежимом содержит регистр команд и регистр условий. Регистр команд блокауправления режимом определяет основные параметры работы канала. Загружается припрограммировании контроллера микропроцессором. Регистр условий хранитразрешение на прямой доступ каждому каналу (устанавливается программно) изапоминает факт перехода через 0 в регистре хранения базового числа цикловкаждого канала. Контроллер DMA может работать в двух основных режимах: в режимепрограммирования и режиме выполнения циклов прямого доступа к памяти. В режимепрограммирования процессор работает с контроллером прямого доступа к памяти,как с внешним устройством. После загрузки в контроллер DMA управляющих словконтроллер переходит в пассивное состояние. В этом состоянии контроллернаходится до тех пор, пока не поступит запрос на прямой доступ к памяти отвнешнего устройства или от процессора. Обнаружив запрос на прямой доступ кпамяти, контроллер выставляет процессору запрос на захват системной магистралии ожидает от него подтверждения захвата шины, т.е. отключения процессора отсистемной шины и перехода его выходов в состояние высокого сопротивления (Z-состояние). При получении сигнала подтверждения захвата (HLDA) контроллерначинает выполнять циклы передачи данных в режиме прямого доступа к памяти.Необходимые для управления шиной сигналы вырабатываются самим контроллером DMA.Контроллер DMA можно рассматривать как устройство, являющееся главным абонентомсистемной шины. С введением шины PCI изменился принцип организации работывнешних устройств с памятью в режиме DMA. На шине PCI отсутствуют сигналы DREQxи DACKx, здесь применяется технология захвата управления шиной внешнимустройством (Bus Mastering — BM). Технология захвата управления шиной (busmastering)совместима с протоколом режима UDMA и реализует работу в режиме DMA ( передачуданных из памяти в устройство напрямую или наоборот, минуя процессор) длякаждого устройства, которое может быть главным абонентом системной шины. Концепцияглавного абонента шины делает прямой доступ к памяти излишним. Дополнительноустановленная схема главного абонента шины на адаптере внешнего устройствапозволяет осуществлять прямой доступ к памяти каждому такому устройству.Адаптер главного абонента шины может вырабатывать все сигналы управления шинойсам и, следовательно, имеет возможность обращаться к области адресов памяти иввода-вывода любым необходимым способом. Использование внешнего главногоабонента шины обеспечивает большую гибкость и эффективность, чем работа сконтроллером DMA, но требует более сложных арбитражных операций. Это ведет ксущественному увеличению сложности и стоимости устройства, работающего в режимеуправления шиной. Можно, конечно, рассматривать устройство управления шиной,расположенное на адаптере внешнего устройства, как форму контроллера DMA,который организует быстрый обмен данными между основной памятью и адаптером.Однако прямой доступ к памяти — это только часть концепции главного абоненташины.
7. Распределение ресурсов,технология Plug and Play
Технология Plug and Play (включайи работай) была разработана известнейшими компаниями Intel, Compag Computer,Microsoft и Phoenix Technologies в 1993 году для решения проблем измененияконфигурации IBM PC-совместимых компьютеров. Наращивание возможностейперсонального компьютера осуществляется при помощи плат расширения. Платырасширения используют такие ресурсы ЭВМ как порты ввода-вывода, линии запросовпрерывания IRQ, каналы прямого доступа к памяти DMA. Примерное распределениеаппаратных ресурсов для некоторых устройств приведено в таблице 1.
Таблица 1Устройство  UMB  Порты  IRQ DMA  Контроллер VGA (графический) A000-BFFF         C000-C7FF 3B0-3DF 2 - Контроллер флоппи - 3F0-3F7 2 - LPT1  - 370-37F 7 - COM1  - 3F8-3FF 4 - COM2  - 2F8-2FF 3 - Адаптер SCSI D800-DBFF  - 14 - Сетевой адаптер DC00-DFFF 300-30F 10 - Sound Blaster(звуковая карта)  -  220 5 1
Обращение к одним и тем жересурсам различных устройств приводит к конфликтам. Обнаружить конфликтныеситуации позволяют программы, предназначенные для диагностики и тестированиякомпьютера, например, такие как Norton Diagnostic, Checkit, MicrosoftDiagnostic, а также специальные программы для профессионалов. Технология Plagand Play позволяет устранить возможность конфликтов. Для этого необходимо, чтобыэту технологию поддерживали все дополнительные платы, расширяющие возможностикомпьютера, все основные ресурсы компьютера, включая программное обеспечение, системныешины, интерфейсы. Первой системной шиной, поддерживающей технологию Plag andPlay, была шина EISA, в настоящее время ее поддерживают практически всесовременные шины ( PCI, WireFire и т.д.).
Как работает Plag and Play
После включения компьютера BIOS-система Plug and Play определяет наличие устройств, необходимых дляпервоначальной загрузки. Затем читает идентификатор, который записан вспециальном запоминающем устройстве каждого устройства, поддерживающего функцииPlug and Play. Идентификатор используется в дальнейшем как адрес устройства приобращении к нему. BIOS производит загрузку операционной системы. Специальныйдрайвер-менеджер конфигурации запрашивает подчиненные драйверы — инумераторышин (bus enumerators) о наличии устройств, требующих системных ресурсов. Еслиустройство не использует технологию Plag and Play, информация о нем считываетсяиз специальной базы данных, например, в Windows 9Х имеется база данных, вкоторой хранится информация о нескольких тысячах устройств. В оперативнойпамяти компьютера создается специальная запись в виде дерева аппаратнойконфигурации (hardware tree), содержащая данные об устройствах, полученныеменеджером конфигурации. Арбитр ресурсов (resourse arbitrator), используядерево конфигурации, распределяет системные ресурсы в порядке установленныхприоритетов. Менеджер конфигурации оповещает инумераторы, что ресурсыраспределены. Инумераторы заносят в регистры контроллеров информацию о том, какиересурсы и в каком объеме могут использоваться устройствами Plag and Play. Приэтом не исключается возможность конфликта между динамическим распределениемресурсов и программным обеспечением, работающим с аппаратурой, минуя BIOS. ПервуюPlag and Play BIOS выпустила в начале 1994 года фирма Phoenix Technologies. Вмикросхему BIOS была включена обычная системная BIOS (64Кб), расширение для шиныPCI ( 2-10 Кб ) и сама поддержка Plag and Play (12-16 Кб). Все платы расширенияв системе Plag and Play имеют специальную микросхему — PLD ( Programmable LogicDevice ), которая позволяет плате сообщать свой идентификатор и список требуемыхи поддерживаемых ресурсов.

Список литературы
1. Гук. М.Ю. Аппаратные средства IBM PC: Энциклопедия,3-е изд.-СПб: Питер, 2006 — 1072с.
2. Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем:Учебник для вузов.- СПб.: Питер 2006. — 672с.
3. Мелехин В.Ф. Павловский Е.Г. Вычислительные машины,системы и сети: Учебник.- М.: Издательский центр «Академия», 2006. — 560с
4.Леонтьев В.П. Новейшая энциклопедия персональногокомпьютера: Энциклопедия. — М.: ОЛМА-ПРЕСС, 2006. — 869с
5.Таненбаум Э.С. Архитектура компьютера. Классикаcomputer science. 4-е изд.- СПб.: Питер, 2006. — 704с.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.