Пространство ввода-вывода.
Процессоры семейства 8086 имеют раздельную адресацию памяти и портов ввода-вывода. В циклах ввода-вывода формир-ся сигналы IORD#, IOWR#.
Эти сигналы и отличают пространство адресов ввода-вывода от пространства адресов памяти. Для обращения процессора к пр-ву ввода-вывода существует всего 4 команды:
1) чтение из регистра – IN
2) запись в регистр – OUT
3) ввод из порта в элемент строки – INS
4) вывод элемента из строки памяти в порт-- OUTS
3 и 4 появились в процессоре с 80286.
Обмен данными с портами который использует строковые инструкции ввода-вывода получил название PIO.
Скорость такого обмена превышает скорость обмена в режиме PDP, но в отличие от PDP обмен происходит с участием процессора.
Разрядность слова передав-го за одну инструкцию (команду) может составлять 8-16 или 32 разряда при этом кол-во циклов обмена зависит от выравненности данных по границе слова.
Инструкция ввода-вывода предусматривает непосред-но 8-разрядную адресацию портов или косвенную через регистр DX, содержащий 16-разрядный адрес порта.
При 8-разрядной адресации старшие разряды адреса всегда = ‘0’. В этом случае можно адресовать до 256 портов ввода вывода, адреса которых расположены в диапазоне от 0 до FFh. При 16-разрядной адресации возможен доступ ко всему пространству адресов ввода-вывода имеющему размер адресов 64 k. В этом случае доступны адреса от 0 до FFFFh.
В оригинальном компьютере IBM PC портов ввода-вывода из 16 разрядов использовалась только младшие 10.
В результате чего обеспеч-ся доступ к портов в доступ к портам в диапазоне от 0 до 3FFh. Старшие разряды адреса хотя и поступают на шину адреса – устройствами игнарируются. Врезультате обращения к нескольким разным адресам воспринимается устройствами одинаково.
Пример: 378h, 778h, B78h, F78h – восприн-ся одинаково.
Данная экономия быоа сделана с целью упрощения схемы. Причем упрощалась как системная плата так и плата адаптеров ввода вывода.
Адреса портов выбирались таким образом чтобы в них содержалось как можно больше единиц и нулей, при этом дешифрация адреса получается проще. В адаптерах шины PCI использ-ся все 16-разрядных адреса. На современных системных платах также использ-ся полная 16-разрядная адресация.
В реальном режиме работы процессора доступно всё пространство адресов ввода-вывода. В защищенном режиме при 32- разрядной адресации имеется возможность ограничения допустимого пр-ва ввода-вывода программно определяя его макс-й размер (от 0 до 64k).
Внутри разрешенной области может быть разрешен или запрещен доступ к каждому конкретному адресу. Производится это с помощью записи в дискрипторную таблицу задачи. Несколько портов могут иметь совпадающие адреса и операции записи все они будут нормально обрабатывать одновременно.
При чтении если порт с одинаковыми адресами находятся на одной шине то возникает конфликт. В этом конфликте при прочих одинаковых условиях побеждает порт выводящий логический ‘0’. Если порты с одинаковыми адресами наход-ся на разных шинах, то конфликта не будет, т.к. шина разделяется буферами данных. Каждой шине назначается своя область адресов ввода и дешифратор адресов, располг-ся на системной плате открывает буферы только одной шине.
При записи в порты располож-е на разных шинах, имеющие одинаковый адрес, синхросигнал записи обычно распростр-ся по всем шинам компьютера, поэтому запись будет воспроизведена во все устройства. Если периферийные устройства располаг-ся на системной плате, то чтение по адресам этих устройств не распрост-ся на шину расширения.
Для современных плат со встроенной периферией и несколькими шинами распределением адресов портов управляет BIOS (,базавая система ввода-вывода) Это управление производится через регистр конфигурации чипсета. За счет этого можно отключить устройство на системной плате при установке более лучшего устройства на плате расширения.
Данное правило действует и для памяти, но практически с конфликтными ситуациями при работе с портами ввода-вывода.
По сложившейся с годами традиции вырабатался стандартный набор устройств ввода-вывода. За ними закреплены постоянные адреса портов ввода-вывода и другие устройства не должны занимать эти адреса.
Обработка прерываний
Прерывания обеспечивают реакцию процессора на события происх асинхронно по отношению к исполняемому програмн коду. Процессоры семейства х86 поддерживают таблицу векторов прерывания, содержащую определение до 256 процедур прерываний. Различают 4 источника прерываний: 1.внутреннее прерывание процнссора и сопроцессора 2. немаскируемые внешние прерывания 3. маскируемые внешние прерывания. 4. программные прерывания.
Программные прерывания в прямом смысле программными прерыв не явл. Они представл собой специф способ вызова процедур. Это вызов не по адресу а по вектору прерывания. Фактически прогр прерыван это коды момент их возникновения строго привязан к тесту программы. Условие возникновения прерываний проверяются процессором на границе выполнения инструкций. В этом случае необх запомнит минимум информац для возврата в основную процед. Обработка прерываний начинается с сохранения в стеке слова состояния в которое входит регистр флага, регистр кодового сегмента и указатель следующей инструкции. После этого проц сбрасывает флаг разрешения прерываний по завершении обработки прерывания происходит автоматически восстановление слова состояния. После этого проц переходит к выполнению инструкции следующей за той после которой исполнялась обработка прерывания. Умышленное или случайное изменение указателя стека или самого стека во время обработки прерыв может привести к возврату процессора по другому адресу и даже к зависанию. Прерывание может быть вложенным если процедура обработки прерывания установит флаг прерывания в регистр флагов. В таких случаях может возникнуть опасность переполнения стека, поскольку каждое вложение использует стек для сохранения данных. Переполнение стека также может быть причиной зависания. Длинные процедуры обработки прерываний со сброшенным флагом разрешения прерываний могут привести к потери системного времени, поскольку часы ос используют аппаратное прерыв от таймера. Независимые прерывания обработ проц без анализа флага состояния к таким прерываниям относятся прерывания приходящиеся по входу процессора NMI вход немаскируемых прерыв а для процессоров, поддерживающих режим системного управления еще и по линии smi. Если во время исполнения немаскируемого прерывания приходит еще один сигнал NMI то вложенного прерывания не будет, тк повторный вызов программы обработ прерывания не производится. Прерыв SMI возникает от схемы чипсета участвующих в управлении энергопотреблением, это прерыв имеет наивысший приоритет и обраб неск иначе чем классич прерыв.
В этом случае ну вызывается подпрограмма обработки прерыв и процедур не польз стеком. Обработка маскируемых прерваний может запрещаться командой DI или разрешаться командой EI. Эти прерывания обрабатываются контроллером прерыв программно совместимым с контроллером прерыв первых IBM совместимых машин. Такой контролер имеет 8 входов запросов прерываний и один выход по которому сигнал запроса прерыв подается на проц.
При обработке прерывания процессор формирует мнимый сигнал подтверждения прерывания INTA на который контроллер выдает 8 ми битный вектор прерывания, этот вектор и явл номером по которому вызывается соотвтетств проц-ра обработки прерыв. С целью увеличенрия кол-ва вх проц вводится каскадное включ контроллеров прерыв эля этого ко вх IRQ2 ведущего контроллера подключ ведомый контрол который обслуж прерывания с IRQ8..IRQ15. на входы контроллеров прерывания поступают запросы от системн устройств 1 клава сист таймер. CMOS – тайм и сопроц, а также сигналы от плат расширения. Традиционно все линии запросов сист утср выводятся на слоты шины ISA или EISA. Номера векторов соответств линиям запроса контроллера, система приоритетов и некоторые др параметры задаются программно но при инициализ перехъодят из поколения в поколение ПК с целью совместимости с ПО. Назначение номеров прерываний выполняются с двух сторон . во первых адаптер, нуждающийся в использовании прерывания должен быть сконфигурирован на использование конкретной линии запроса прерыв. Во вторых ПО поддерживающее данный адаптер должно быть информировано о потере используемого вектора.
Поскольку линий запроса прерываний в компьютере насыщенном дополнит адаптерами обычно не хватает, возникает желание использовать эти линии разделяемо между неск адаптерами. обработка одного устройства в этом случае определив, что источник прерывания не его, должен вызвать обработчик другого устройства., конкурирующ на линии прерывания. Однако на шине ISA прерыв обрабатываются по положительному фронту, что не позволяет подключать параллельно к одной шине запроса прер несколько выходов с открытым коллектором. Плохо это и с точки зрения помехоуст. Для запросов прерывания по шине PCI используется 4 линии запросов прерывания: INTR A, INTR B, INTR C, INTR D. Линии циклически сдвиг на слотах и независимо коммутируются на доступные линии. IRQ с помощью конфигурационных регисторов чипсета. Линии IRQ используемые шиной PCI становятся недоступными для шины ISA. Распределение линий между шинами выполняются настройками BIOS а также системой PnP. В установках BIOS которые озаглавлены ISA или LEGAСY произв статич распределение входов запросов прерываний между традиционн адаптерами шины ISA, а в разделе PCI/PnP производится распределение линий запросов прерыв между адаптерами шины PCI или адаптерами использ технологию PnP на шине ISA . и такое распределение происходит динамически. Современные чипсеты могут иметь и другие настройки по совместимости с первыми контроллерами прерыв
Шина ISA.
ISA Вus (Industry Standard Architecture) – шина расширения, применявшаяся с первых моделей PC и ставшая промышленным стандартом. В компьютере XT использовалась шина с разрядностью данных 8 бит и адреса – 20 бит. В компьютерах AT ее расширили до 16 бит данных и 24 бит адреса. В таком виде она существует и поныне. Конструктивно шина выполнена в виде двух щелевых разъемов с шагом выводов 2,54 мм (0.1 дюйма) Подмножество ISA-8 использует только 62-контактный слот (ряды А, В), в ISA-16 применяется дополнительный 36-контактный слот (ряды С, D). Шина обеспечивает возможность отображения 8- или 16-битныx регистров на пространство ввода/вывода и памяти. Диапазон адресов памяти ограничен областью от 640к до 1Мб. Для шины ISA-16 опциями BIOS Setup может быть разрешено пространство между 15-м и 16-м мегабайтами памяти. Диапазон адресов ввода/вывода сверху ограничен количеством используемых для дешифрации бит адреса, нижняя граница ограничена областью адресов 0–FFh, зарезервированных под устройства системной платы. В PC была принята 10-битная адресация ввода/вывода, при которой линии адреса А[15:10] устройствами игнорировались. Таким образом, диапазон адресов устройств шины ISA ограничивается областью 100h–3FFh, то есть всего 758 адресов 8-битных регистров. На некоторые из адресов претендуют системные устройства . Впоследствии стали применять 12-битную адресацию (диапазон l00h-FFFh). При ее использовании необходимо учитывать возможность присутствия на шине старых 10-битных адаптеров, которые «отзовутся» на адрес с подходящими ему битами А[9:0] во всей допустимой области 12-битного адреса четыре раза (у каждого 10-битного адреса будет еще по три 12-битных псевдонима). Шина ISA-8 может предоставить до 6 линий запросов прерываний, ISA-16 – 11. Часть их могут «отобрать» устройства системной платы или шина PCI.
Шина позволяет использовать до трех 8-битных каналов DMA. На 16-битной шине доступны еще три 16-битных канала.
Все перечисленные ресурсы системной шины должны быть бесконфликтно распределены. Бесконфликтность подразумевает следующее:
· Каждое устройство должно управлять шиной данных только при чтении по своим адресам или по используемому им каналу DMA. Области адресов для чтения не должны пересекаться. «Подсматривать» операции записи, «адресованные не ему», не возбраняется.
· Назначенную линию IRQx или DRQx устройство должно держать на низком уровне и переводить в высокий уровень для активации запроса. Неиспользуемыми линиями запросов устройство управлять не имеет права, они должны быть электрически откоммутированы или подключаться к буферу, находящемуся в третьем состоянии. Одной линией запроса может пользоваться только одно устройство.
Затем появились программно конфигурируемые устройства, которые вытесняются автоматически конфигурируемыми платами PnP.
Набор сигналов 8 разрядной шины предльно прост он позволяет сформировать циклы обмена с памятью и устройств ввода вывода. При этом диаграмм всех циклов очень похожи между собой. 16 разр шина дает более широкие возможности.
BCLK сигнал тактовой частоты. В цикле обмена необх 2 такта. Для работы с медленно действ устройствами вставл дополнит такты ожидания. В первом такте производится дешифрац адреса , первые 16 разр выдаются по сигнал Add0 Add2.16 след разряды адреса которые появл в ISA – 16 передаются по проводам LA17 .. LA23 . синхронизация происходит по заднему фронту сигнала BALE. Если устройству необх адрес в течении всего цикла обмена. Оно должно запомнить разряды LA17 .. LA23 в своем внутреннем регистре. Сигнал CMD в реальном цикле обмена представл собой 1 из 4 возм сигналов: 1. синхросигнал записи в память . 2. синхросигнал чтения из памяти. 3. синхросигнал записи в УЗВ. 4. синхросигнал чтения из УУЗВ.
Сами данные передаются по шине date , сигнал MEM CS необходим для разрешения работы памяти. Сигнал I/O CH RDX – сигнал готовности поступает от утрс когда оно готово выдать данные.
Длит цикла обмена определ чипсетом и может изм-ся опциями BIOS. При этом выставляются дополнительные такты ожидания. При этом обмен с увв происх длиннее чем обмен с памятью и обмен с 16 разр устр-вами, это учитывается в установках BIOS т.е. производится раздельная установка для памяти и устр ввода вывода а также разд 8разр 16 разр устр.
Логич эквивал шине ISA явл шина PCI04. она предназначена для построения небольших встраиваемых контроллеров. При использовании этой шины платы платы расширения имела и розетку и вилку 1-я шина устанавл вилкой в розетку на сист плате 2-я вилка в розетку первой и т.д. такая конструкция удобна для небольших систем с 2-мя – 3-мя платами.
Шина EISA.
EISA Bus (Extended ISA) – стандартизованное расширение ISA до 32 бит. Конструктивное исполнение обеспечивает совместимость с ней ISA-адаптеров. Узкие дополнительные контакты расширения (ряды Е, F, G, Н) расположены между ламелями (контактными площадками) разъема ISA и ниже лам елей А, В, С, D таким образом, что адаптер ISA, не имеющий дополнительных ключевых прорезей в краевом разъеме, не достает до них. Установка карт EISA в слоты ISA недопустима, поскольку ее цепи попадут на контакты ISA, в результате чего системная плата окажется неработоспособной. Для режимов EISA используются дополнительные управляющие сигналы, обеспечивающие более эффективные режимы передачи. В обычном (не пакетном) режиме передачи за каждую пару тактов может быть передано до 32 бит (один такт на фазу адреса, один – на фазу данных). В пакетном режиме (Burst Mode) пакеты данных пересылаются без указания текущего адреса внутри пакета. В пакете очередные данные передаются в каждом такте шины, длина пакета достигает 1024 байт. Шина предусматривает более производительные режимы, при которых скорость обмена может достигать 33 Мбайт/с. Линии запросов прерываний допускают разделяемое использование, причем сохраняется совместимость с ISA-картами: каждая линия запроса может программироваться на чувствительность как по высокому (как в ISA), так и по низкому уровню. Шина допускает установку до 8 слотов. Каждый слот и системная плата имеют селективное разрешение адресации ввода/вывода и отдельные линии запроса и подтверждения управления шиной. Обязательной принадлежностью системной платы с шиной EISA является энергонезависимая память конфигурации, в которой хранится информация об устройствах EISA для каждого слота. Формат записей стандартизован, для модификации информации применяется специальная утилита. Архитектура позволяет при использовании программно конфигурируемых адаптеров автоматически разрешать конфликты, но в отличие от PnP не допускает динамического конфигурирования – после вывода из режима конфигурирования необходима перезагрузка. EISA – дорогая, но оправдывающая себя архитектура, применяющаяся в многозадачных системах и на серверах, где требуется высокоэффективное расширение шины ввода/вывода. Перед шиной PCI у нее есть преимущество в количестве слотов (8 против 4).
Шина EISA позволяет работать как в режиме ISA так и в новых режимах присущих только EISA. В своих циклах обмена шина использует собственный набор управляющих сигналов привязанных к тактовой частоте.
Сигналы IORD# и IOWR# при обращении к EISA-портам не используются. Вместо них применяются сигналы обращения М/IO# и W/R#. В EISA-циклах не используется сигнал SBHE; он заменен сигналами разрешения байт ВЕ[3:0]. Вместо общего сигнала AEN каждый слот имеет собственный сигнал AENx. Обмен начинается с появления сигнала start. В это время фиксируется адрес и определяется тип обращения. Устройства способные вести пакетный обмен выдают спец сигнал указывающ на эту возможность. Если утсройство не способно вести пакетный обмен то ведется обмен обычными циклами.
Локальная шина VLB.
Шины ввода/вывода ISA, МСА, EISA имеют низкую производительность, обусловленную их ролью в структуре PC. Современные приложения требуют существенного повышения пропускной способности шины. Одним из решений проблемы стало применение локальной шины процессора 486. Шину процессора использовали как место подключения периферии (контроллера дисков и графического адаптера). Шины ввода/вывода ISA, МСА, EISA имеют низкую производительность, обусловленную их ролью в структуре PC. Современные приложения требуют существенного повышения пропускной способности шины. Одним из решений проблемы стало применение локальной шины процессора 486. Шину процессора использовали как место подключения периферии (контроллера дисков и графического адаптера).
Из-за ограниченной нагрузочной способности шины процессора больше трех слотов VLB на системной плате не устанавливают. Максимальная тактовая частота шины – 66 МГц, хотя тина работает надежнее на частоте 33 МГц. Реально в пакетном цикле передача 4х4=16 байт данных требует 5 тактов шины, так что даже в нем пропускная способность составляет 105,6 Мбайт/с, а в обычном режиме (по такту на фазу адреса и на фазу данных) – 66 Мбайт/с. Шину VLB использовали для подключения графического адаптера и контроллера дисков. Встречаются системные платы, которые имеют встроенный графический и дисковый адаптеры с шиной VLB, но самих слотов VLB нет. Это означает, что на плате установлены микросхемы указанных адаптеров для шины VLB. Такая неявная шина по производительности не уступает обычной, а с точки зрения надежности и совместимости она даже лучше.
Шина PCI.
PCI (Peripheral Component Interconnect) local bus – шина соединения периферийных компонентов. Будучи локальной, эта шина занимает особое место в современной архитектуре PC, являясь мостом (mezzanine bus) между системной шиной процессора и шиной ввода/вывода ISA/EISA или МСА. Шина PCI разрабатывалась в расчете на Pentium-системы, но хорошо сочетается и с процессорами 486. Является четко стандартизованной высокопроизводительной и надежной шиной расширения. В настоящее время действует спецификация PCI 2.1. При частоте шины 33 МГц скорость теоретически достигает 132/264 Мбайт/с для 32/64 бит; при частоте синхронизации 66 МГц – в два раза выше (версия 2.1 допускает частоту до 66 МГц при согласии всех устройств на шине).
Шина является синхронной – фиксация всех сигналов выполняется по положительному перепаду (фронту) сигнала CLK. В каждой транзакции (обмене по шине) участвуют два устройства – инициатор обмена (Initiator или Master, инициирующее устройство, ИУ) и целевое устройство (Target или Slave, ЦУ).
Шина PCI все транзакции трактует как пакетные: каждая транзакция начинается фазой адреса, за которой может следовать одна или несколько фаз данных. Для адреса и данных используются общие мультиплексированные линии.
В начале транзакции ИУ активизирует сигнал FRAME#, по шине AD передает целевой адрес, а по линиям С/ВЕ# – информацию о типе транзакции (команде). Адресованное ЦУ отзывается сигналом DEVSEL#, после чего ИУ может указать на свою готовность к обмену данными сигналом IRDY#. Когда к обмену данными будет готово и ЦУ, оно установит сигнал TRDY#. Данные по шине AD могут передаваться только при одновременном наличии сигналов IRDY# и TRDY#. С помощью этих сигналов ИУ и ЦУ согласуют свои скорости, вводя такты ожидания.
Количество фаз (циклов) данных в пакете заранее не определено, но перед последним циклом ИУ при введенном сигнале IRDY# снимает сигнал FRAME#. После последней фазы данных ИУ снимает сигнал IRDY#, и шина переходит в состояние покоя (PCI Idle) – оба сигнала FRAME# и IRDY# наводятся в пассивном состоянии. Максимальное количество циклов данных в пакете может быть неявно ограничено таймером, определяющим максимальное время, в течение которого ИУ может пользоваться шиной.
ИУ завершает транзакцию одним из следующих способов:
1.Нормальное завершение выполняется по окончании обмена данными.
2.Завершение по тайм-ауту (Time-out) происходит, когда во время транзакции у ИУ отбирают право на управление шиной (снятием сигнала GNT#) или когда истекает время, указанное в его таймере MLT (медленное ЦУ или слишком длинная транзакция).
3.Транзакция отвергается (Abort), когда в течение заданного времени ИУ не получает ответа ЦУ (DEVSEL#).
Транзакция может быть прекращена и по инициативе ЦУ, для этого оно может ввести сигнал STOP#. Возможны три типа прекращения:
1.Отключение (Disconnect) – сигнал STOP# вводится во время активности TRDY#. В этом случае транзакция завершается после фазы данных.
2.Отключение с повтором (Disconnect/Retry) – сигнал STOP# вводится при пассивном состоянии TRDY#, и последняя фаза данных отсутствует. Является указанием ИУ на необходимость повтора транзакции.
3.Отказ (Abort) – сигнал STOP# вводится одновременно со снятием DEVSEL# (в предыдущих случаях во время появления сигнала STOP# сигнал DEVSEL# был активен). В этом случае последняя фаза данных тоже отсутствует, но повтор не запрашивается. Протокол квитирования обеспечивает надежность обмена – ИУ всегда получает информацию об отработке транзакции ЦУ. Средством повышения надежности (достоверности) является применение контроля паритета: линии AD[31:0] и С/ВЕ#[3:0] и в фазе адреса, и в фазе данных защищены битом паритета PAR (количество единичных бит этих линий, включая PAR, должно быть четным). Арбитражем запросов на использование шины занимается специальный узел, входящий в чипсет системной платы. В циклах обращения к памяти адрес, выровненный по границе двойного слова, передается по линиям AD[31:2], линии AD[1:0] задают порядок чередования адресов в пакете:
· 00 – линейное инкрементирование;
· 01 – чередование адресов с учетом длины строки кэш-памяти;
· 1х – зарезервировано.
В циклах обращения к портам ввода/вывода для адресации любого байта используются все линии AD[31:0]. В циклах конфигурационной записи/считывания устройство выбирается индивидуальным сигналом IDSEL#, конфигурационные регистры выбираются двойными словами по линиям AD[7:2], при этом AD[1:0]=00. на шинах PCI может быть не более 4-х устройств.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|