Система прерываний, регистры и модель доступа к памяти.
Оценка 4.6

Система прерываний, регистры и модель доступа к памяти.

Оценка 4.6
Научно-исследовательская работа +3
docx
информатика
Взрослым
12.02.2017
Система прерываний, регистры и модель доступа к памяти.
Память компьютера построена из двоичных запоминающих элементов — битов, объединенных в группы по 8 битов, которые называются байтами. (Единицы измерения памяти совпадают с единицами измерения информации). Все байты пронумерованы. Номер байта называется его адресом. Байты могут объединяться в ячейки, которые называются также словами. Для каждого компьютера характерна определенная длина слова — два, четыре или восемь байтов. Это не исключает использования ячеек памяти другой длины (например, полуслово, двойное слово).
Система прерываний.docx
Система прерываний, регистры и модель доступа к памяти.  Общее устройство памяти  Система прерываний  Модель прямого доступа к памяти Общее устройство памяти Память компьютера построена из двоичных запоминающих элементов — битов,  объединенных в группы по 8 битов, которые называются байтами. (Единицы измерения  памяти совпадают с единицами измерения информации). Все байты пронумерованы. Номер  байта называется его адресом. Байты могут объединяться в ячейки, которые называются также словами. Для каждого  компьютера характерна определенная длина слова — два, четыре или восемь байтов. Это не  исключает использования ячеек памяти другой длины (например, полуслово, двойное  слово). Как правило, в одном машинном слове может быть представлено либо одно целое число,  либо одна команда. Однако, допускаются переменные форматы представления информации. Разбиение памяти на слова для четырехбайтовых компьютеров представлено в таблице: Байт 0 Байт 1 Байт 2 Байт 3 Байт 4 Байт 5 Байт 6 Байт 7 ПОЛУСЛОВО ПОЛУСЛОВО ПОЛУСЛОВО ПОЛУСЛОВО СЛОВО СЛОВО ДВОЙНОЕ СЛОВО Широко используются и более крупные производные единицы объема памяти: Килобайт,  Мегабайт, Гигабайт, а также, в последнее время, Терабайт и Петабайт. Современные компьютеры имеют много разнообразных запоминающих устройств, которые  сильно отличаются между собой по назначению, временным характеристикам, объёму  хранимой информации и стоимости хранения одинакового объёма информации. Система прерываний Для обработки событий, происходящих асинхронно по отношению к выполнению  программы, лучше всего подходит механизм прерываний. Прерывание можно рассматривать как некоторое особое событие в системе, требующее  моментальной реакции. Например, хорошо спроектированные системы повышенной  надежности используют прерывание по аварии в питающей сети для выполнения процедур  записи содержимого регистров и оперативной памяти на магнитный носитель, с тем чтобы  после восстановления питания можно было продолжить работу с того же места. Кажется очевидным, что возможны самые разнообразные прерывания по самым различным  причинам. Поэтому прерывание рассматривается не просто как таковое, с ним связывают  число, называемое номером типа прерывания или просто номером прерывания. С каждым  номером прерывания связывается то или иное событие. Система умеет распознавать, какое  прерывание, с каким номером произошло и запускает соответствующую этому номеру  процедуру. Программы могут сами вызывать прерывания с заданным номером. Для этого они  используют команду INT. Это так называемые программные прерывания. Программные  прерывания не являются асинхронными, так как вызываются из программы (а она­то знает,  когда она вызывает прерывание!). Программные прерывания удобно использовать для организации доступа к отдельным,  общим для всех программ модулям. Например, программные модули операционной системы доступны прикладным программам именно через прерывания, и нет необходимости при  вызове этих модулей знать их текущий адрес в памяти. Прикладные программы могут сами  устанавливать свои обработчики прерываний для их последующего использования другими  программами. Для этого встраиваемые обработчики прерываний должны быть резидентными в памяти. Аппаратные прерывания вызываются физическими устройствами и приходят асинхронно.  Эти прерывания информируют систему о событиях, связанных с работой устройств,  например о том, что наконец­то завершилась печать символа на принтере и неплохо было бы  выдать следующий символ, или о том, что требуемый сектор диска уже прочитан его  содержимое доступно программе. Использование прерываний при работе с медленными внешними устройствами позволяют совместить ввод/вывод с обработкой данных в  центральном процессоре и в результате повышает общую производительность системы.  Некоторые прерывания (первые пять в порядке номеров) зарезервированы для  использования самим центральным процессором на случай каких­либо особых событий  вроде попытки деления на ноль, переполнения и т.п. Иногда желательно сделать систему нечувствительной ко всем или отдельным прерываниям. Для этого используют так называемое маскирование прерываний. Но некоторые  прерывания замаскировать нельзя, это немаскируемые прерывания. Заметим еще, что обработчики прерываний могут сами вызывать программные прерывания,  например, для получения доступа к сервису BIOS или DOS (сервис BIOS также доступен  через механизм программных прерываний). Составление собственных программ обработки прерываний и замена стандартных  обработчиков DOS и BIOS является ответственной и сложной работой. Необходимо  учитывать все тонкости работы аппаратуры и взаимодействия программного и аппаратного  обеспечения. При отладке возможно разрушение операционной системы с  непредсказуемыми последствиями, поэтому надо очень внимательно следить за тем, что  делает Ваша программа. Для того чтобы связать адрес обработчика прерывания с номером прерывания,  используется таблица векторов прерываний, занимающая первый килобайт оперативной  памяти ­ адреса от 0000:0000 до 0000:03FF. Таблица состоит из 256 элементов ­ FAR­ адресов обработчиков прерываний. Эти элементы называются векторами прерываний. В  первом слове элемента таблицы записано смещение, а во втором ­ адрес сегмента  обработчика прерывания. Прерыванию с номером 0 соответствует адрес 0000:0000, прерыванию с номером 1 ­  0000:0004 и т.д. Инициализация таблицы происходит частично BIOS после тестирования аппаратуры и перед началом загрузки операционной системой, частично при загрузке DOS. DOS может  переключить на себя некоторые прерывания BIOS. Рассмотрим содержимое таблицы векторов прерываний. Приведем назначение некоторых  наиболее важных векторов: Номер Описание 0 Ошибка деления. Вызывается автоматически после выполнения команд DIV или IDIV, если в результате деления  происходит переполнение (например, при делении на 0). DOS  обычно при обработке этого прерывания выводит сообщение  об ошибке и останавливает выполнение программы. Для  процессора 8086 при этом адрес возврата указывает на  следующую после команды деления команду, а в процессоре  80286 ­ на первый байт команды, вызвавшей прерывание. Прерывание пошагового режима. Вырабатывается после  выполнения каждой машинной команды, если в слове флагов  установлен бит пошаговой трассировки TF. Используется для  отладки программ. Это прерывание не вырабатывается после  выполнения команды MOV в сегментные регистры или после  загрузки сегментных регистров командой POP. Аппаратное немаскируемое прерывание. Это прерывание  может использоваться по­разному в разных машинах. Обычно  вырабатывается при ошибке четности в оперативной памяти и  при запросе прерывания от сопроцессора. Прерывание для трассировки. Это прерывание генерируется  при выполнении однобайтовой машинной команды с кодом  CCh и обычно используется отладчиками для установки точки прерывания. Переполнение. Генерируется машинной командой INTO, если  установлен флаг OF. Если флаг не установлен, то команда  INTO выполняется как NOP. Это прерывание используется  для обработки ошибок при выполнении арифметических  операций. Печать копии экрана. Генерируется при нажатии на  клавиатуре клавиши PrtScr. Обычно используется для печати  образа экрана. Для процессора 80286 генерируется при  выполнении машинной команды BOUND, если проверяемое  значение вышло за пределы заданного диапазона. Неопределенный код операции или длина команды больше 10  байт (для процессора 80286). 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 Особый случай отсутствия математического сопроцессора  (процессор 80286). IRQ0 ­ прерывание интервального таймера, возникает 18,2  раза в секунду. IRQ1 ­ прерывание от клавиатуры. Генерируется при нажатии  и при отжатии клавиши. Используется для чтения данных от  клавиатуры. IRQ2 ­ используется для каскадирования аппаратных  прерываний в машинах класса AT. IRQ3 ­ прерывание асинхронного порта COM2. IRQ4 ­ прерывание асинхронного порта COM1. IRQ5 ­ прерывание от контроллера жесткого диска для XT. IRQ6 ­ прерывание генерируется контроллером флоппи­диска после завершения операции. IRQ7 ­ прерывание принтера. Генерируется принтером, когда  он готов к выполнению очередной операции. Многие адаптеры принтера не используют это прерывание. Обслуживание видеоадаптера. Определение конфигурации устройств в системе. Определение размера оперативной памяти в системе. Обслуживание дисковой системы. Последовательный ввод/вывод. Расширенный сервис для AT­компьютеров. Обслуживание клавиатуры. Обслуживание принтера. Запуск BASIC в ПЗУ, если он есть. Загрузка операционной системы. 1A 1B 1C 1D 1E 1F 20­5F 60­67 68­6F 70 71 72 73 74 75 76 77 Обслуживание часов. Обработчик прерывания Ctrl­Break. Прерывание возникает 18.2 раза в секунду, вызывается  программно обработчиком прерывания таймера. Адрес видеотаблицы для контроллера видеоадаптера 6845. Указатель на таблицу параметров дискеты. Указатель на графическую таблицу для символов с кодами  ASCII 128­255. Используется DOS или зарезервировано для DOS. Прерывания, зарезервированные для пользователя. Не используются. IRQ8 ­ прерывание от часов реального времени. IRQ9 ­ прерывание от контроллера EGA. IRQ10 ­ зарезервировано. IRQ11 ­ зарезервировано. IRQ12 ­ зарезервировано. IRQ13 ­ прерывание от математического сопроцессора. IRQ14 ­ прерывание от контроллера жесткого диска. IRQ15 ­ зарезервировано. 78 ­ 7F Не используются. 80­85 86­F0 F1­FF Зарезервированы для BASIC. Используются интерпретатором BASIC. Не используются. IRQ0­IRQ15 ­ это аппаратные прерывания. Аппаратные прерывания вырабатываются устройствами компьютера, когда возникает  необходимость их обслуживания. Например, по прерыванию таймера соответствующий  обработчик прерывания увеличивает содержимое ячеек памяти, используемых для хранения времени. В отличие от программных прерываний, вызываемых запланировано самой  прикладной программой, аппаратные прерывания всегда происходят асинхронно по  отношению к выполняющимся программам. Кроме того, может возникнуть одновременно  сразу несколько прерываний! Для того, чтобы система "не растерялась", решая какое прерывание обслуживать в первую  очередь, существует специальная схема приоритетов. Каждому прерыванию назначается  свой уникальный приоритет. Если происходит одновременно несколько прерываний, то  система отдает предпочтение самому высокоприоритетному, откладывая на время  обработку остальных прерываний. Уровни приоритетов обозначаются сокращенно IRQ0 ­ IRQ15 (для машин класса XT  существуют только уровни IRQ0 ­ IRQ7). Для машин XT приоритеты линейно зависели от номера уровня прерывания. IRQ0  соответствовало самому высокому приоритету, за ним шли IRQ1, IRQ2, IRQ3 и так далее.  Уровень IRQ2 в машинах класса XT был зарезервирован для дальнейшего расширения  системы. И начиная с машин класса AT IRQ2 стал использоваться для каскадирования  контроллеров прерывания 8259. Добавленные приоритетные уровни IRQ8 ­ IRQ15 в этих  машинах располагаются по приоритету между IRQ1 и IRQ3. Приведем таблицу аппаратных прерываний, расположенных в порядке приоритета: Номер Описание 8 9 A 70 71 IRQ0 прерывание интервального таймера,  возникает 18,2 раза в секунду. IRQ1 прерывание от клавиатуры. Генерируется  при нажатии и при отжатии клавиши.  Используется для чтения данных с клавиатуры. IRQ2 используется для каскадирования  аппаратных прерываний в машинах класса AT. IRQ8 прерывание от часов реального времени. IRQ9 прерывание от контроллера EGA. 72 73 74 75 76 77 B C D E F IRQ10 зарезервировано. IRQ11 зарезервировано. IRQ12 зарезервировано. IRQ13 прерывание от математического  сопроцессора. IRQ14 прерывание от контроллера жесткого  диска. IRQ15 зарезервировано. IRQ3 прерывание асинхронного порта COM2. IRQ4 прерывание асинхронного порта COM1. IRQ5 прерывание от контроллера жесткого  диска для XT. IRQ6 прерывание генерируется контроллером  флоппи диска после завершения операции IRQ7 прерывание принтера. Генерируется  принтером, когда он готов к выполнению  очередной операции. Многие адаптеры принтера не используют это прерывание. Из таблицы видно, что самый высокий приоритет у прерываний от интервального таймера,  затем идет прерывание от клавиатуры. Для управления схемами приоритетов необходимо знать внутреннее устройство  контроллера прерываний 8259. Поступающие прерывания запоминаются в регистре запроса  на прерывание IRR. Каждый бит из восьми в этом регистре соответствует прерыванию.  После проверки на обработку в настоящий момент другого прерывания запрашивается  информация из регистра обслуживания ISR. Перед выдачей запроса на прерывание в  процессор проверяется содержимое восьмибитового регистра маски прерываний IMR. Если  прерывание данного уровня не замаскировано, то выдается запрос на прерывание. Наиболее интересными с точки зрения программирования контроллера прерываний  являются регистры маски прерываний IMR и управляющий регистр прерываний. В машинах класса XT регистр маски прерываний имеет адрес 21h, управляющий регистр  прерываний ­ 20h. Для машин AT первый контроллер 8259 имеет такие же адреса, что и в  машинах XT, регистр маски прерываний второго контроллера имеет адрес A1h,  управляющий регистр прерываний ­ A0h. Разряды регистра маски прерываний соответствуют номерам IRQ. Для того, чтобы  замаскировать аппаратное прерывание какого­либо уровня, надо заслать в регистр маски  байт, в котором бит, соответствующий этому уровню, установлен в 1. Например, для  маскирования прерываний от НГМД в порт 21h надо заслать двоичное число 01000000. Программируемый контроллер прерываний 8259 предназначен для обработки до восьми  приоритетных уровней прерываний. Возможно каскадирование микросхем, при этом общее  число уровней прерываний будет достигать 64. Контроллер 8259 имеет несколько режимов работы, которые устанавливаются программным путем. В персональных компьютерах XT и AT за первоначальную установку режимов  работы микросхем 8259 отвечает BIOS. Каждому приоритетному уровню прерывания микросхема ставит в соответствие  определенный, задаваемый программно, номер прерывания. В разделе книги, посвященном  особенностям обработки аппаратных прерываний, приводится такое соответствие для  машин типа XT и AT. Для обработки прерываний контроллер имеет несколько внутренних регистров. Это регистр  запросов прерываний IRR, регистр обслуживания прерываний ISR, регистр маски  прерываний IMR. В регистре IRR хранятся запросы на обслуживание прерываний от  аппаратуры. После выработки сигнала прерывания центральному процессору  соответствующий разряд регистра ISR устанавливается в единичное состояние, что  блокирует обслуживание всех запросов с равным или более низким приоритетом. Устранить  эту блокировку можно либо сбросом соответствующего бита в ISR, либо командой  специального маскирования. Имеется два типа команд, посылаемых программой в контроллер 8259 ­ команды  инициализации и команды операции. Возможны следующие операции:  индивидуальное маскирование запросов прерывания;  специальное маскирование обслуженных запросов;  установка статуса уровней приоритета (по установке исходного состояния, по  обслуженному запросу, по указанию);  операции конца прерывания (обычный конец прерывания, специальный конец  прерывания, автоматический конец прерывания);  чтение регистров IRR, ISR, IMR.       Модель прямого доступа к памяти Прямой доступ к памяти (Direct Memory Access ­ DMA) используется для выполнения  операций передачи данных непосредственно между оперативной памятью и устройствами  ввода/вывода. Обычно это такие устройства, как НГМД, НМД, кассетные накопители на  магнитной ленте КНМЛ (стримеры). При использовании DMA процессор не участвует в операциях ввода/вывода, контроллер  прямого доступа сам формирует все сигналы, необходимые для обмена данными с  устройством. Скорость такого непосредственного обмена значительно выше, чем при  традиционном вводе/выводе с использованием центрального процессора и команд INP, OUT. Контроллер прямого доступа для IBM PC/XT реализован на базе микросхемы Intel 8237A и содержит четыре канала. Эти каналы используются следующим образом: 0 1 2 3 обновление содержимого динамической памяти  компьютера, этот канал имеет наивысший  приоритет; не используется; адаптер накопителя на гибком магнитном диске  (НГМД); адаптер накопителя на магнитном диске (НМД) ­ этот канал имеет низший приоритет. Каждый канал содержит 16­разрядные регистры:  регистр текущего адреса CAR, содержит текущий адрес ячейки памяти при  выполнении операции обмена данными с использованием DMA;  регистр циклов прямого доступа к памяти CWR, содержит число слов,  предназначенных для передачи минус единица; при выполнении обмена данными  регистр работает в режиме вычитания;  регистр хранения базового адреса BAR, используется для хранения базового адреса  памяти, используемого при передачи данных; в процессе работы канала DMA  содержимое этого регистра не изменяется;  регистр хранения базового числа циклов прямого доступа к памяти WCR; он хранит  число циклов DMA, его содержимое также не изменяестя;  регистр режима MR, определяющий режим работы канала. Для инициализации канала программа должна выполнить следующие шаги:  сбросить триггер байтов командой записи в регистр 0Ch;     задать режим работы канала, выполнив запись по адресу 0Bh в регистр режима MR; заслать младшие 16 битов 20­битового адреса области памяти, которая будет  использована для передачи данных, в регистр базового адеса (адрес порта зависит от  номера канала: 0 канал использует адрес 00h, 1 канал ­ 02h, 2 канал ­ 04h, 3 канал ­  06h); заслать номер страницы (старшие 4 бита 20­битового адреса) в регистр страниц 81h; загрузить регистр циклов прямого доступа к памяти CWR значением, на 1 меньше  требуемого количества передаваемых байтов (адреса этих портов для каналов 0...3,  соответственно, 01h, 03h, 05h, 07h;  разрешить работу канала, выполнив запись в регистр маски каналов по адресу 0Ah. Сразу после разрешения канал начинает передачу данных. После окончания передачи  данных устройство обычно вырабатывает прерывание, которое служит признаком окончания передачи данных. Контроллер DMA компьютера IBM AT совместим снизу вверх с контролером IBM  PC/XT. Он состоит из двух каскадно включенных микросхем Intel 8237A­5. Второй  контроллер обслуживает каналы DMA с номерами 4­7. Приведем назначение каналов DMA для IBM AT: 0 зарезервировано; 1 2 3 4 управление синхронной передачей данных SDLC  (Synchronous Data Link Control); адаптер накопителя на гибком магнитном диске  (НГМД); адаптер накопителя на магнитном диске (НМД); используется для каскадного соединения с  первым контроллером DMA; 5­6 зарезервировано. Другое отличие ­ это разрядность каналов. Каналы 0­3 являются каналами 8­битовой  передачи данных, а каналы 4­7 обеспечивают 16­битовую передачу данных. В связи с этим  используются все 8 битов регистров страниц. Формируется 24­битовый адрес из 16­ти  младших битов адреса, записываемых в базовые регистры и 8­ми старших битов адреса,  записываемых в регистры страниц. Размер страницы составляет 128 килобайт, поэтому при передаче данных с использованием  DMA не должна пересекаться граница 128 килобайт. Приведем назначение и адреса регистров страниц контроллера для IBM AT: 81h 82h 83h 87h 89h 8Bh 8Ah 8Fh Регистр страниц канала 2 Регистр страниц канала 3 Регистр страниц канала 1 Регистр страниц канала 0 Регистр страниц канала 6 Регистр страниц канала 5 Регистр страниц канала 7 Регенерация динамической памяти Для 16­битовых каналов 4­7 передача данных начинается с границы слова и все адреса  относятся к 16­битовым словам. Порты 0C0h ­ 0DFh Эти регистры содержат базовые адреса и счетчики передаваемых данных каналов 4­7. Их  назначение приводится в следующей таблице: 0C0h Запись: Базовый адрес канала 4 Чтение: Текущий адрес 0C2h Запись: Счетчик канала 4 Чтение: Текущий адрес 0C4h Запись: Базовый адрес канала 5 Чтение: Текущий адрес 0C6h Запись: Счетчик канала 5 Чтение: Текущий адрес 0C8h Запись: Базовый адрес канала 6 Чтение: Текущий адрес 0CAh Запись: Счетчик канала 6 Чтение: Текущий адрес 0CCh Запись: Базовый адрес канала 7 Чтение: Текущий адрес 0CEh Запись: Счетчик канала 7 Чтение: Текущий адрес Порты 0D0h­0DFh Это управляющие порты и порты состояния второй микросхемы 8237A­5. По формату и  назначению они соответствуют рассмотренным ранее для контроллера DMA компьютеров  IBM PC/XT: 0D0h 0D2h 0D4h 0D6h Управляющий регистр / регистр состояния Регистр запроса Регистр маски Регистр режима 0D8h Сброс триггера байтов 0DAh Сброс контроллера 0DCh Сброс регистра маски 0DEh Маскирование/размаскирование каналов Организация прерываний в микроЭВМ Одной из разновидностей программно­управляемого обмена данными с ВУ в микроЭВМ  является обмен с прерыванием программы, отличающийся от асинхронного программно­ управляемого обмена тем, что переход к выполнению команд, физически реализующих  обмен данными, осуществляется с помощью специальных аппаратных средств. Команды  обмена данными в этом случае выделяют в отдельный программный модуль ­ подпрограмму  обработки прерывания. Задачей аппаратных средств обработки прерывания в процессоре  микроЭВМ как раз и является приостановка выполнения одной программы (ее еще называют основной программой) и передача управления подпрограмме обработки прерывания.  Действия, выполняемые при этом процессором, как правило, те же, что и при обращении к  подпрограмме. Только при обращении к подпрограмме они инициируются командой, а при  обработке прерывания ­ управляющим сигналом от ВУ, который называют "Запрос на  прерывание" или "Требование прерывания". Эта важная особенность обмена с прерыванием программы позволяет организовать обмен  данными с ВУ в произвольные моменты времени, не зависящие от программы, выполняемой  в микроЭВМ. Таким образом, появляется возможность обмена данными с ВУ в реальном  масштабе времени, определяемом внешней по отношению к микроЭВМ средой. Обмен с  прерыванием программы существенным образом экономит время процессора, затрачиваемое на обмен. Это происходит за счет того, что исчезает необходимость в организации  программных циклов ожидания готовности ВУ (см. примеры 2.1 и 2.2, Параллельная  передача данных), на выполнение которых тратится значительное время, особенно при  обмене с медленными ВУ. Прерывание программы по требованию ВУ не должно оказывать на прерванную программу  никакого влияния кроме увеличения времени ее выполнения за счет приостановки на время  выполнения подпрограммы обработки прерывания. Поскольку для выполнения  подпрограммы обработки прерывания используются различные регистры процессора  (счетчик команд, регистр состояния и т.д.), то информацию, содержащуюся в них в момент  прерывания, необходимо сохранить для последующего возврата в прерванную программу. Обычно задача сохранения содержимого счетчика команд и регистра состояния процессора  возлагается на аппаратные средства обработки прерывания. Сохранение содержимого  других регистров процессора, используемых в подпрограмме обработки прерывания,  производится непосредственно в подпрограмме. Отсюда следует достаточно очевидный  факт: чем больший объем информации о прерванной программе сохраняется программным  путем, тем больше время реакции микроЭВМ на сигнал прерывания, и наоборот.  Предпочтительными с точки зрения повышения производительности микроЭВМ  (сокращения времени выполнения подпрограмм обработки, а, следовательно, и основной  программы) являются уменьшение числа команд, обеспечивающих сохранение информации  о прерванной программе, и реализация этих функций аппаратными средствами. Формирование сигналов прерываний ­ запросов ВУ на обслуживание происходит в  контроллерах соответствующих ВУ. В простейших случаях в качестве сигнала прерывания  может использоваться сигнал "Готовность ВУ", поступающий из контроллера ВУ в  системный интерфейс микроЭВМ. Однако такое простое решение обладает существенным  недостатком ­ процессор не имеет возможности управлять прерываниями, т. е. разрешать  или запрещать их для отдельных ВУ. В результате организация обмена данными в режиме  прерывания с несколькими ВУ существенно усложняется. Рис. 3.11. Фрагмент блок­схемы контроллера ВУ с разрядом "Разрешение прерывания" в  регистре состояния и управления Для решения этой проблемы регистр состояния и управления контроллера ВУ (рис. 3.11)  дополняют еще одним разрядом ­ "Разрешение прерывания". Запись 1 или 0 в разряд  "Разрешение прерывания" производится программным путем по одной из линий шины  данных системного интерфейса. Управляющий сигнал системного интерфейса "Запрос на  прерывание" формируется с помощью схемы совпадения только при наличии единиц в  разрядах "Готовность ВУ" и "Разрешение прерывания" регистра состояния и управления  контроллера. Аналогичным путем решается проблемам управления прерываниями в микроЭВМ, в целом.  Для этого в регистре состояния процессора выделяется разряд, содержимое которого  определяет, разрешены или запрещены прерывания от внешних устройств. Значение этого  разряда может устанавливаться программным путем. В микроЭВМ обычно используется одноуровневая система прерываний, т. е. сигналы  "Запрос на прерывание" от всех ВУ поступают на один вход процессора. Поэтому возникает  проблема идентификации ВУ, запросившего обслуживание, и реализации заданной  очередности (приоритета) обслуживания ВУ при одновременном поступлении нескольких  сигналов прерывания. Существуют два основных способа идентификации ВУ, запросивших  обслуживания:  ­ программный опрос регистров состояния (разряд "Готовность ВУ") контроллеров всех  ВУ;  ­ использование векторов прерывания. Организация прерываний с программным опросом готовности предполагает наличие в  памяти микроЭВМ единой подпрограммы обслуживания прерываний от всех внешних  устройств. Структура такой подпрограммы приведена на рис. 3.12. Рис. 3.12. Структура единой программы обработки прерываний и ее связь с основной  программой Обслуживание ВУ с помощью единой подпрограммы обработки прерываний производится  следующим образом. В конце последнего машинного цикла выполнения очередной команды  основной программы процессор проверяет наличие требования прерывания от ВУ. Если  сигнал прерывания есть и в процессоре прерывание разрешено, то процессор переключается  на выполнение подпрограммы обработки прерываний. После сохранения содержимого регистров процессора, используемых в подпрограмме,  начинается последовательный опрос регистров состояния контроллеров всех ВУ,  работающих в режиме прерывания. Как только подпрограмма обнаружит готовое к обмену  ВУ, сразу выполняются действия по его обслуживанию. Завершается подпрограмма  обработки прерывания после опроса готовности всех ВУ и восстановления содержимого  регистров процессора. Приоритет ВУ в микроЭВМ с программным опросом готовности внешнего устройства  однозначно определяется порядком их опроса в подпрограмме обработки прерываний. Чем  раньше в подпрограмме опрашивается готовность ВУ, тем меньше время реакции на его  запрос и выше приоритет. Необходимость проверки готовности всех внешних устройств  существенно увеличивает время обслуживания тех ВУ, которые опрашиваются последними.  Это является основным недостатком рассматриваемого способа организации прерываний.  Поэтому обслуживание прерываний с опросом готовности ВУ используется только в тех  случаях, когда отсутствуют жесткие требования на время обработки сигналов прерывания  внешних устройств. Организация системы прерываний в микроЭВМ с использованием векторов прерываний  позволяет устранить указанный недостаток. При такой организации системы прерываний  ВУ, запросившее обслуживания, само идентифицирует себя с помощью вектора прерывания  ­ адреса ячейки основной памяти микроЭВМ, в которой хранится либо первая команда  подпрограммы обслуживания прерывания данного ВУ, либо адрес начала такой  подпрограммы. Таким образом, процессор, получив вектор прерывания, сразу  переключается на выполнение требуемой подпрограммы обработки прерывания. В  микроЭВМ с векторной системой прерывания каждое ВУ должно иметь собственную  подпрограмму обработки прерывания. Различают векторные системы с интерфейсным и внеинтерфейсным вектором. В первом  случае вектор прерывания (или его адрес) формирует контроллер ВУ, запросившего  обслуживания, во втором ­ контроллер прерываний, общий для всех устройств, работающих  в режиме прерываний (IBM­совместимые персональные компьютеры). Рассмотрим организацию векторной системы с интерфейсным вектором. Вектор прерывания (или его адрес) выдается контроллером не одновременно с запросом на прерывание, а  только по разрешению процессора, как это реализовано в схеме на рис. 3.13. Это делается  для того, чтобы исключить одновременную выдачу векторов прерывания от нескольких ВУ.  В ответ на сигнал контроллера ВУ "Запрос на прерывание" процессор формирует  управляющий сигнал "Предоставление прерывания (вх.)", который разрешает контроллеру  ВУ, запросившему обслуживание, выдачу вектора прерывания в шину адреса системного  интерфейса. Для этого в контроллере используются регистр вектора прерывания и схема  совпадения И3. Регистр вектора прерывания обычно реализуется с помощью перемычек или  переключателей, что позволяет пользователю устанавливать для конкретных ВУ требуемые  значения векторов прерывания. Рис. 3.13. Формирование векторов прерывания в контроллере ВУ Управляющий сигнал "Предоставление прерывания (вых.)" формируется в контроллере ВУ  с помощью схемы совпадения И2. Этот сигнал используется для организации  последовательного аппаратного опроса готовности ВУ и реализации тем самым требуемых  приоритетов ВУ. Процессор при поступлении в него по общей линии системного интерфейса "Запрос на прерывание" сигнала прерывания формирует управляющий сигнал  "Предоставление прерывания (вх.)", который поступает сначала в контроллер ВУ с  наивысшим приоритетом (рис. 3.14). Если это устройство не требовало обслуживания, то  его контроллер пропускает сигнал "Предоставление прерывания" на следующий контроллер, иначе дальнейшее распространение сигнала прекращается и контроллер выдает вектор  прерывания на адресно­информационную шину. Рис. 3.14. Реализация приоритетов ВУ в микроЭВМ с векторной системой прерываний с  интерфейсным вектором (ППР (вх.) ­ "Предоставление прерывания (входной)"; "ППР (вых.)  ­ Предоставление прерывания (выходной)") Аппаратный опрос готовности ВУ производится гораздо быстрее, нежели программный. Но  если обслуживания запросили одновременно два или более ВУ, обслуживание менее  приоритетных ВУ будет отложено на время обслуживания более приоритетных, как и в  системе прерывания с программным опросом. Рассмотренная векторная система прерываний практически полностью соответствует  системе прерываний, реализованной в микроЭВМ "Электроника­60". Восьмиразрядный  вектор прерывания в "Электронике­60" указывает одну из ячеек памяти с адресами от 0 до  (376)8, в которой размещается адрес начала подпрограммы обработки прерывания. В  следующей за указанной вектором прерывания ячейке памяти хранится новое содержимое  регистра состояния процессора, загружаемое в него при переключении на подпрограмму  обработки прерывания. Один из бит нового содержимого регистра состояния процессора  запрещает или разрешает прерывания от других ВУ, что позволяет ВУ с более высоким  приоритетом прерывать подпрограммы обслуживания ВУ с меньшим приоритетом и  наоборот. Векторная система с внеинтерфейсным вектором прерывания используется в IBM­ совместимых персональных компьютерах. В этих компьютерах контроллеры внешних  устройств не имеют регистров для хранения векторов прерывания, а для идентификации  устройств, запросивших обслуживания, используется общий для всех ВУ контроллер  прерываний. Ниже приведен пример контроллера прерываний INTEL 8259A. БИС программируемого контроллера прерываний (ПКП) представляет собой устройство,  реализующее до восьми уровней запросов на прерывания с возможностью программного  маскирования и изменения порядка обслуживания прерываний. За счет каскадного  включения БИС ПКП число уровней прерывания может быть расширено до 64 (в  архитектуре персонального компьютера IBM PC AT ­ 16). Структурная схема ПКП приведена на рисунке 3.15. Рис. 3.15. Контроллер прерываний Intel 8259A В состав БИС входят:  RGI ­ регистр запретов прерываний; хранит все уровни, на которые поступают запросы  IRQx;  PRB ­ схема принятия решений по приоритетам; схема идентифицирует приоритет запросов  и выбирает запрос с наивысшим приоритетом;  ISR ­ регистр обслуживаемых прерываний; сохраняет уровни запросов прерываний,  находящиеся на обслуживании ПКП;  RGM ­ регистр маскирования прерываний; обеспечивает запрещение одной или нескольких  линий запросов прерывания;  BD ­ буфер данных; предназначен для сопряжения ПКП с системной шиной данных;  RWCU ­ блок управления записью/чтением; принимает управляющие сигналы от  микропроцессора и задает режим функционирования ПКП;  CMP ­ схема каскадного буфера­компаратора; используется для включения в систему  нескольких ПКП;  CU ­ схема управления; вырабатывает сигналы прерывания и формирует трехбайтовую  команду CALL для выдачи на шину данных. Установка ПКП в исходное состояние и "настройка" его на определенный режим  обслуживания прерываний происходит с помощью двух типов команд: команд  инициализации (ICW) и команд управления операциями (OCW). Программируемый контроллер прерываний (ПКП) имеет 16 входов запросов прерываний  (IRQ 0 ­ IRQ 15). Контроллер состоит из двух каскадно включенных контроллеров ­ выход  INTR (запрос на прерывание) второго контроллера подключен ко входу IRQ 2 первого  контроллера. В качестве примера отметим, что к линии IRQ 0 подключен системный таймер, к линии IRQ 1 ­ клавиатура, к линии IRQ 8 ­ часы реального времени и т.д. Упрощенная схема взаимодействия контроллера прерываний с процессором и контроллером шины имеет следующий вид. Рис. 3.16. Упрощенная схема взаимодействия контроллера прерываний с процессором и  контроллером шины в IBM­совместимых персональных компьютерах класса AT Эта схема функционирует следующим образом. Пусть в некоторый момент времени  контроллер клавиатуры с помощью единичного сигнала по линии IRQ 1 известил контроллер прерываний о своей готовности к обмену. В ответ на запрос контроллер прерываний  генерирует сигнал INTR (запрос на прерывание) и посылает его на соответствующий вход  процессора. Процессор, если маскируемые прерывания разрешены (т.е. установлен флаг  прерываний IF в регистре флагов процессора), посылает на контроллер шины сигналы R# ­  чтение, C# ­ управление и IO# ­ ввод/вывод, определяющие тип цикла шины. Контроллер  шины, в свою очередь, генерирует два сигнала подтверждения прерывания INTA# и  направляет их на контроллер прерываний. По второму импульсу контроллер прерываний  выставляет на шину данных восьмибитный номер вектора прерывания, соответствующий  данной линии IRQ. В режиме реального адреса ("реальном" режиме) векторы прерываний хранятся в таблице  векторов прерываний, которая находится в первом килобайте оперативной памяти. Под каждый вектор отведено 4 байта (2 байта под адрес сегмента и 2 байта под смещение), т.е. в  таблице может содержаться 256 векторов. Адрес вектора в таблице ­ номер вектора * 4. Далее процессор считывает номер вектора прерывания. Сохраняет в стеке содержимое  регистра флагов, сбрасывает флаг прерываний IF и помещает в стек адрес возврата в  прерванную программу (регистры CS и IP). После этого процессор извлекает из таблицы  векторов прерываний адрес подпрограммы обработки прерываний для данного устройства и  приступает к ее выполнению. Процедура обработки аппаратного прерывания должна завершаться командой конца  прерывания EOI (End of Interruption), посылаемой контроллеру прерываний. Для этого  необходимо записать байт 20h в порт 20h (для первого контроллера) и в порт A0h (для  второго). В IBM PC/XT/AT используется режим прерываний с фиксированными приоритетами.  Высшим приоритетом обладает запрос по линии IRQ 0, низшим ­ IRQ 7. Так как второй  контроллер подключен к линии IRQ 2 первого контроллера, то приоритеты линий IRQ в  порядке убывания приоритета располагаются следующим образом: IRQ 0, IRQ 1, IRQ 8 ­  IRQ 15, IRQ 3 ­ IRQ 7. Если запрос на обслуживание посылают одновременно два  устройства с разными приоритетами, то контроллер обслуживает запрос с большим  приоритетом, а запрос с меньшим приоритетом блокирует. Блокировка сохраняется до  получения команды EOI.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.

Система прерываний, регистры и модель доступа к памяти.
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
12.02.2017