Сделай Сам Свою Работу на 5

Пространство ввода-вывода.





Процессоры семейства 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 Все материалы защищены законодательством РФ.