СУХТП лекции. Курс лекций Разработчик Афонин Ю. Д. Екатеринбург, 2007 2 Содержание
Скачать 2.79 Mb.
|
ВВОД и ВЫВОД При выполнении цикла ВВОД данные передаются от пассивного устройства к активному. Временная диаграмма выполнения цикла представлена на рис. 3.5. 48 Шинный цикл обычно состоит из четырех рабочих периодов длительностью T (машинный такт), однако компьютер автоматически вводит в этот цикл дополнительный период ожидания T W . Таким образом, в компьютере весь шинный цикл содержит как минимум пять периодов и составляет примерно 0.6 мкс. Шинный цикл ВВОД инициируется каждый раз, когда микропроцессор выполняет команду IN. Во время периода T 1 в активное состояние Действительный адрес порта T 1 T 2 T 3 T W T 4 CLK ALE SA0-SA9 IOR SD0-SD15 Данные действительны Рисунок 3.5 – Цикл ВВОД. переключается линия сигнала ALE, по срезу которого выдается признак того , что разряды SA0 ÷ SA9 адресной шины содержат действительный адрес порта УВВ. Во время периода T 2 в активное состояние переводится сигнал управления IOR, который указывает, что отклик адресуемого УВВ должен заключаться в выводе им содержимого своего регистра данных на шину данных. В начале периода T 4 процессор считывает информацию с шины данных, и переводит сигнал IOR в неактивное состояние. Если расписать по стадиям это будет выглядеть так: • в начале такта T 1 процессор переводит сигнал ALE в высокое состояние, указывая, что будет выполняться цикл обращения к УВВ; • затем помещает адрес порта УВВ на линии адреса; 49 • УВВ по заднему фронту сигнала ALE запоминает адрес в своей входной логике, анализирует его и, если он совпадает с адресом данного УВВ, то активизируется; • в начале такта T 2 процессор переводит сигнал IOR в низкое состояние, указывая, что будет выполняться цикл ВВОД; • в ответ на понижение сигнала IOR УВВ помещает свои данные на линии данных магистрали; • в начале периода T 4 процессор считывает данные с шины данных и снимает сигнал IOR, а затем и адрес с линий адреса; • в ответ на снятие сигнала IOR УВВ снимает данные с линий данных магистрали. Шинный цикл ВЫВОД'>ВЫВОД используется для передачи данных от активного устройства к пассивному и инициируется каждый раз, когда процессор выполняет команду OUT. Временная диаграмма выполнения цикла представлена на рис. 3.6. Порядок выполнения операций в цикле ВЫВОД следующий: • процессор в начале периода T 1 переводит сигнал ALE в высокое состояние, указывая, что будет выполняться цикл обращения к УВВ; Действительный адрес порта T 1 T 2 T 3 T W T 4 CLK ALE SA0-SA9 IOW SD0-SD15 Данные действительны Рисунок 3.6 – Цикл ВЫВОД. 50 • затем помещает адрес порта УВВ на линии адреса; • УВВ по заднему фронту сигнала ALE запоминает адрес в своей входной логике, анализирует его и, если он совпадает с адресом данного УВВ, то активизируется; • процессор во время периода T 2 переводит сигнал IOW в низкое состояние, указывая, что будет выполняться цикл ВЫВОД, затем помещает данные на шину данных; • УВВ считывает данные с шины данных во время действия сигнала IOW; • в начале периода T 4 процессор снимает сигнал IOW, данные с шины данных и адрес с шины адреса, освобождая их. 3.4 Цикл по прерыванию программы В PC совместимых компьютерах используется два вида прерываний: аппаратные и программные. Прерывания, которые, как правило, связаны с внешними по отношению к микропроцессору устройствами, например, с дисковыми накопителями, клавиатурами, принтерами, таймерами, получили название аппаратных прерываний. Прерывания, которые генерируются в самом микропроцессоре, получили название программных прерываний. Прерывание, которое может игнорироваться микропроцессором, называют маскируемым. Маскируемые прерывания разрешаются и блокируются программным способом. В PC используется программируемый контроллер прерываний, который обрабатывает запросы на внешние прерывания, поступающие по восьми линиям и генерирует для процессора код типа прерывания (рис 3.7). 51 IS A ш и на Контроллер прерываний 8259А Процессор INTA IN T R Время Клавиатура Свободн. СОМ2 СОМ1 Свободн. НГМД LPT1 IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 Рисунок 3.7 – Схема организации прерываний в компьютере PC Каждой линии прерывания соответствует свой код (см. таблицу 3.1). Таблица 3.1 – Коды и функции прерываний. Линия Код (тип) прерывания Функция IRQ0 8 Системный таймер 18.2 Гц. IRQ1 9 Клавиатура IRQ2 A Свободен в XT, второй контроллер прерываний в AT. IRQ3 B СОМ2 IRQ4 C СОМ1 IRQ5 D Свободен IRQ6 E Накопитель НГМД IRQ7 F Порт LPT1 (принтер) Умножая код на 4 можно получить адрес вектора прерывания для данной линии. Каждый вектор прерываний состоит из четырех байт – 16 разрядного смещения и 16 разрядного сегмента (рис 3.8). Обработка прерывания сводится к следующему. По переднему фронту сигнала IRQ контроллер прерываний вырабатывает сигнал INTR – запрос на прерывание. Процессор, если данное прерывание разрешено, выставляет сигнал INTA – разрешение прерывания, помещает содержимое своих регистров и программного счетчика в стек. 52 Вектор прерывания, 4 байта Адрес вектора прерывания (тип *4) 00000H 00400H Подпрограмма обслуживания данного прерывания Рисунок 3.8 – Вектор прерывания. Затем по коду прерывания помещает вектор прерывания в программный счетчик и переходит на программу обслуживания данного устройства. Внешнее устройство должно удерживать сигнал IRQ в высоком состоянии до тех пор, пока к нему не будет обращения. После выполнения цикла ВВОД или ВЫВОД внешнее устройство должно снять сигнал IRQ. После выполнения программы обслуживания данного прерывания процессор восстанавливает содержимое своих регистров и программного счетчика и продолжает выполнение основной программы. Для работы с прерываниями выделено два регистра. Формат первого регистра (первое слово рабочих приказов OCW1 – порт 21) приведен на рис. 3.9. 0 1 2 3 4 5 6 7 М1 М2 М0 М3 М4 М5 М6 М7 Рисунок 3.9 – Регистр OCW1 (порт 21). Единичное значение одного из битов М0÷М7 означает, что прерывания соответствующего уровня (IRQ0÷IRQ7) маскируются и не будут обрабатываться контроллером. Второй регистр (второе слово рабочих приказов OCW2 - порт 20) предназначен для вывода команды завершения обработки аппаратного 53 прерывания (EOI), циклического сдвига и явного изменения приоритетов уровней. Назначение битов OCW2 приведено на рис. 3.10. Процедура обработки аппаратного прерывания должна перед своим завершением очистить свой бит в ISR (регистр состояния, описывает в битах прерывания каких уровней в данный момент обрабатываются) выводом команды завершения обработки прерывания (End Of Interrupt, EOI). Существует два варианта команды EOI: обычный и специфицированный EOI. Обычный EOI очищает бит в ISR, соответствующий прерыванию с максимальным приоритетом. Специфицированный EOI (R=0, SL=1, EOI=1, 0 1 2 3 4 5 6 7 L1 L2 L0 0 0 EOI SL R Эти 3 бита определяют номер уровня прерывания, если он требуется в команде. 1- команда завершения обработки аппаратного прерывания. 0 0 0 0 1 1 1 1 Используется вместе с EOI=1. Циклический сдвиг приотитетов влево на одну позицию. Специфицированный EOI (сбрасывает в ISR бит, определяемый полями L0-L2 ). Назначение низшего приотитета уровню, определяемому полями L0-L2. Рисунок 3.10 – Регистр OCW2 (порт 20). L0 - L2 равно номеру уровня прерывания) очищает в ISR бит, соответствующий прерыванию с номером, указанным в L0 - L2, независимо от его приоритета. Команды с битом R=l позволяют изменить приоритеты уровней. Циклический сдвиг приоритетов сдвигает приоритеты влево на единицу, при этом, если после обычного распределения приоритетов, издать команду циклического сдвига, уровень 0 получит низший приоритет, уровень 1 - наивысший, уровень 2 - следующий за ним и т.д. Команда явного назначения низшего приоритета одному из уровней изменяет приоритеты остальных уровней циклически. 54 Таким образом, если Вы зададите низший приоритет уровню 5, то уровень 6 получит наивысший. 3 .5 Магистраль PCI IBM PC совместимого компьютера PCI (Peripheral Component Interconnect bus) - шина для подсоединения периферийных устройств. Стала массово применяться для Pentium-систем, но используется и с 486 процессорами. Частота шины от 20 до 33МГц, теоретически максимальная скорость 132/264 Мбайт/с для 32/64 бит. Слот PCI самодостаточен для подключения любого контроллера. 32- битный слот заканчивается контактами А62/В62, 64-битный - А94/В94. На системной плате может сосуществовать с любой из других шин ввода-вывода. Шина PCI - первая шина в архитектуре IBM PC, которая не привязана к этой архитектуре. Она является процессорно - независимой и применяется, например, в компьютерах Macintosh. В отличие от остальных шин, компоненты расположены на левой поверхности плат PCI-адаптеров. По этой причине крайний PCI-слот обычно разделяет использование посадочного места с соседним ISA-слотом. Стандарт PCI определяет для каждого слота конфигурационное пространство размером до 256 восьмибитных регистров, не приписанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным циклам шины Configuration Read и Configuration Write, вырабатываемым контроллером при обращении процессора к регистрам контроллера шины PCI, расположенным в его пространстве ввода- вывода. На PCI определены два основных вида устройств - инициатор (по ГОСТ - задатчик), т.е. устройство, получившее от арбитра шины разрешение на захват ее и устройство назначения, цель (target) с которым инициатор выполняет цикл обмена данными. 55 Рассмотрим сигналы шины PCI. Черта под названием сигнала означает, что активный уровень этого сигнала низкий, в скобках ввод (I) и, или вывод (O). AD31-AD0 (I/O) Эти 32 адресно-информационных контакта образуют мультиплексную адресно-информационную шину PCI. Каждая операция шины PCI состоит из фазы адресации, во время которой через контакты АD31-AD0 передается адрес, и из одной или нескольких фаз передачи информации. C/BE3-C/BE0 Через эти четыре контакта передается команда шины и сигналы разрешения байта. Эти контакты являются мультиплексными. Во время адресной фазы через контакты C/BE3-C/BE0 передается тип цикла шины. При этом возможны следующие комбинации C/BE3-C/BE0: (0000) Последовательность INTA (1000) Резерв (0001) Специальный цикл (1001) Резерв (0010) Чтение ввода- вывода (1010) Чтение конфигурации (0011) Запись ввода- вывода (1010) Запись конфигурации (0100) Резерв (1100) Многократное обращение к памяти (0101) Резерв (1101) Двойной цикл адресации (0110) Чтение памяти (1110) Чтение строки памяти (0111) Запись в память (1111) Запись в память с аннулированием Во время информационной фазы сигналы BE3-BE0 определяют, какие байты передаваемой 32-разрядной информации являются достоверными. Заметим, что между достоверными данными может существовать "разрыв" (например, возможна комбинация ВЕ3=0, ВЕ2=1, ВЕ1=ВЕ0=1). CLK (O) Через этот контакт передается сигнал таймера PCI, сопровождающий все операции PCI. В соответствии с техническими требованиями, его частота лежит в интервале от 0 до 33 МГц. 56 FRAME (I/O) Сигнал FRAME выдается действующим главным абонентом шины PCI. Переход FRAME на низкий, т.е. активный, уровень инициирует фазу адресации. Чтобы обозначить последнюю фазу данных, завершающую цикл работы шины, главный абонент должен вновь деактивировать FRAME. INTA, INTB, INTC, INTD (I, I, I, I) Каждое функциональное устройство PCI может выдавать до четырех аппаратных прерываний, устанавливая низкий уровень на этих контактах. Монофункциональное устройство может активировать только INTA, а многофункциональное, в зависимости от структуры и требований, также и INTВ - INTD. В РС INTА - INTD функционального блока соответствуют аппаратным прерываниям IRQ0- IRQ15. IRDY (I/O) Сигнал "готовность инициатора" показывает, что инициатор (главный абонент шины) готов к выполнению текущей фазы передачи данных. При записи инициатор активирует сигнал IRDY, который показывает, что на шине выставлена нужная информация. При чтении IRDY показывает, что инициатор готов к чтению данных. Сигнал IRDY соответствует сигналу процессора RЕАDY, за исключением того, что он выдается не устройством- целью (slave), а инициатором (master). Фаза передачи данных считается завершенной только в том случае, если оба сигнала IRDY и ТRDY активны. ТRDY (I/O) Сигнал "готовность цели" показывает, что вызываемое устройство PCI (цель) готово к выполнению текущей информационной фазы. При записи устройство-цель активирует сигнал ТRDY, который показывает, что устройство готово к принятию данных для записи. При чтении ТRDY показывает, что устройство-цель подготовило данные для чтения. Сигнал ТRDY соответствует сигналу процессора RЕАDY. Информационная фаза считается завершенной только в том случае, если оба сигнала IRDY и ТRDY активны. DEVSEL (I/O) Сигнал "Выбор активного устройства". Низкий уровень сигнала показывает, что декодирующая схема определила соответствующее устройство PCI как устройство-цель для данной операции шины. 57 Рассмотрим, как выполняется чтение при вводе-выводе (рис 3.11). При таком запросе данные читаются с устройства PCI в области адресов ввода- вывода. Адресные разряды ADx определяют адрес байта, следовательно, AD1 и AD0 тоже должны декодироваться, поскольку в области адресов ввода-вывода может находиться адрес как 8-разрядного, так и 16-разрядного портов. Доступ обычно состоит из адресной и информационной фаз. Рисунок 3.11 - Пакет чтения PCI. Типичный запрос PCI на чтение инициируется посредством активирования сигнала FRAME. Здесь показан не оптимальный пакет 3-1-1-1-…, а пакет 3-1-2-2, в котором состояние ожидания в первом цикле вызывается неактивным сигналом TRDY (готовность цели), а во втором - неактивным сигналом IRDY (готовность инициатора). Если вызываемое устройство PCI определяет, что именно оно является целью вызова, оно выставляет в ответ активный сигнал DEVSEL. Передача (пакет 3-1-2-2) заканчивается деактивированием FRAME в последней фазе передачи данных Отметим, что первый цикл таймера после адресной фазы используется для переключения направления передачи мультиплексной адресно- информационной шины PCI. Во время адресной фазы контакты ADx используются для выдачи величины (адреса), а во время информационной фазы - для приема значения (считанные данные). Для смены направления требуется один пустой (оборотный) цикл. Следовательно, первая величина может быть передана не раньше третьего цикла таймера. Поэтому наиболее экономичным пакетом чтения PCI (без циклов ожидания) будет пакет 3-1-1-1… 58 Запись при вводе-выводе (рис 3.12). При таком запросе данные пересылаются на цель PCI в области адресов ввода-вывода. В этом случае адресные разряды ADx также определяют адрес байта. Доступ также состоит из адресной и информационной фаз. Типичный запрос PCI на запись также инициируется посредством активирования сигнала FRAME. На рисунке показана диаграмма основных сигналов. Здесь, в отличие от запроса на чтение, мультиплексной адресно-информационной шине PCI не требуется переключение. Информационная фаза может выполняться непосредственно после адресной фазы, без пустого цикла. Таким образом, передача первой величины может быть произведена во втором цикле таймера PCI. Наиболее экономичным пакетом записи PCI (без циклов ожидания) будет пакет 2-1-1-1- … Рисунок 3.12 - Пакет записи PCI. Здесь показан не оптимальный пакет 2-1-1-1-…, а пакет 2-1-2-2, в котором состояние ожидания в первом цикле вызывается неактивным сигналом TRDY (готовность цели), а во втором - неактивным сигналом IRDY (готовность инициатора). Если вызываемое устройство PCI определяет, что именно оно является целью вызова, оно выставляет в ответ активный сигнал DEVSEL. Передача (пакет 2-1-2-2) заканчивается деактивированием FRAME в последней фазе передачи данных . Дополнительно рассмотрим область адресов ввода-вывода. 59 В соответствии со спецификацией, шина PCI поддерживает 32-битную, а также 64-битную область адресов. Это, однако, справедливо только для истинных устройств PCI. Нельзя получить адрес больше 64К для процессора 80х86, поскольку процессоры этого типа генерируют только 16-битные адреса ввода-вывода. Порты в персональных компьютерах с шиной PCI расположены ниже 64К; способ применения и адреса портов не изменились по сравнению с ISA. ISA и PCI могут - и должны - использоваться параллельно, поскольку PCI и шлюз расширения это позволяют. Два регистра PCI располагаются в области адресов ввода-вывода, которые в ISA зарезервированы для материнской платы. Эти два 32-разрядных регистра, CONFIG_ADRESS и CONFIG_DATA, используются для доступа к области конфигурации и расположены по адресам 0CF8H (адрес) и 0CFCH (данные). Для чтения или записи двойного слова в область конфигурации устройства PCI прежде всего следует заслать соответствующий адрес в регистр CONFIG_ADRESS. При записи в регистр CONFIG_DATA данные передаются в соответствующий элемент области адресов конфигурации вызываемого устройства; при чтении данные из этой ячейки считываются. Структура адресных регистров показана на рисунке 3.13. Рисунок 3.13 - Регистр CONFIG_ADDRESS. Если бит ECD установлен, то шлюз выполняет цикл конфигурации для адреса ввода-вывода 0CFCh (соответствующего CONFIG_DATA). Если бит ECD не установлен, выполняется нормальный цикл ввода-вывода, не затрагивающий область адресов конфигурации; он переключается на нормальную область адресов ввода-вывода. В элементе "шина" содержится номер шины PCI в иерархической системе, в которую может входить до 256 шин PCI. "Устройство" указывает на один из возможных 32 агентов PCI, "функция" выбирает одну из восьми функций в рамках многофункционального 60 устройства PCI. "Регистр" указывает на один из 64 двухсловных (32 разрядных) элементов заданной области адресов конфигурации. "Тип" используется для того, чтобы известить шлюз о том, что он соединен с запрашиваемым устройством (type=00), и о том, что после декодирования элементов "устройство" и "функция" он должен выдать цикл конфигурации. Если "тип" равен 01, то это означает, что устройство соединено со шлюзом и что шлюз копирует содержимое CONFIG_ADDRESS на шину адрес/данные без изменений. |