Архитектура шины PCI. Интерфейс PCI имеет двухшинную структуру: мультиплексированную шину адреса данных (АД) и шину управления. Интерфейс использует два набора сигналов: базовый и расширенный. Базовый поддерживает мини- мальную конфигурацию, а расширенный дополнительно - 64 разрядные операции, тестирование плат через порт JTAG (IEEE 1149.1), кэш-па- мять и прерывания. В минимальной конфигурации имеется 49 сигналов. В данном электронном учебнике рассматривается только базовая конфигу- рация. Шина PCI процессорно независимая и взаимодействует с главным процессором и памятью через главный мост (Host bus). Интерфейс PCI может иметь иерархическую структуру, взаимодействуя с шиной расшире- ния типа ISA, EISA или MCA через соответствующий контроллер. К шине PCI подсоединены два типа объектов: задатчики и исполнители. Основ- ной операцией на шине является блочный обмен последовательностью данных между задатчиком и исполнителем при выполнении операций чте- ния и записи данных. Блок или пакет передаваемых данных в спецификации PCI называет- ся транзакцией (transaction), в начале транзакции идет адрес испол- нителя (фаза адреса), а за ним произвольное число 32 битовых данных (последовательность фаз данных), двойных слов (DWORD). Задатчик - объект, который захватывает в свое распоряжение шину, начинает тран- закцию и адресует исполнителя. Исполнитель - объект, который адресу- ется задатчиком и отрабатывает транзакцию, принимая (запись) или вы- давая (чтение) данные. Объект может быть только задатчиком или только исполнителем, но может быть и задатчиком, и исполнителем одновременно, но в разные моменты времени. На шине могут работать несколько задатчиков. Для разделения во времени шины между ними используется арбитр, который соединяется с каждым задатчиком с помощью двух индивидуальных линий типа точ- ка-точка. Одна идет от задатчика - линия запроса шины (REQ), другая от арбитра - линия разрешения подключения задатчика к шине (GRN). На шине могут работать несколько задатчиков. Для разделения во времени шины между ними используется арбитр, который соединяется с каждым задатчиком с помощью двух индивидуальных линий типа точ- ка-точка. Одна идет от задатчика - линия запроса шины (REQ), другая от арбитра - линия разрешения подключения задатчика к шине (GRN). В спецификации шины PCI предполагается реализация алгоритмов вложенных прерываний при операциях арбитрации, когда задатчик с бо- лее высоким уровнем приоритета прерывает работу текущего задатчика на шине, обладающего меньшим приоритетом. В случае, если задатчик с большим приоритетом прерывает работу текущего задатчика в момент получения им разрешения на захват шины, то задатчики с меньшим приоритетом будут очень долго ждать доступа к шине. Если же текущий задатчик будет прерывать свою работу только после завершения транзакции, то долго ждать придется задатчику с большим приоритетом. Чтобы уйти от таких неприятностей, на шине PCI предусмотрен ме- ханизм Таймера задержек (Latency Timer). Он заключается в том, что для любого задатчика вводится фиксированное время, в течении которо- го прерывать транзакцию нельзя. Это время задается Таймером задерж- ки, который включается в начале транзакции. Время задается в виде количества импульсов CLK. После исчерпания времени, задаваемого Тай- мером задержки, выдается сигнал Тайм-аут. Если в момент Тайм-аута сигнал разрешения GNT# текущего задатчика был сброшен, то он сразу завершает транзакцию не дожидаясь ее окончания. Если в момент Тайм-аута сигнал GNT# не сброшен, то транзакция продолжается до мо- мента Тайм-аута, после чего транзакция прерывается. Если сигнал Тайм-аут отсутствует, то транзакция продолжается до конца. Этот механизм отслеживает максимальную задержку доступа к шине не более N+1 тактов шины, где N - это число импульсов записываемое в Таймер задержки. Шина PCI поддерживает автоматическую конфигурацию устройств ввода/вывода (plug and play). С этой целью, для выбора устройств в процессе конфигурации на шине предусмотрена индивидуальная линия ти- па точка-точка для каждого объекта (IDSEL). Она идет как задатчикам, так и к исполнителям, осуществляя выбор устройства при операции кон- фигурации. На шине PCI используются два метода адресации. Положительное декодирование (positiv decoding) - когда объекту задается диапазон адресов, и он отвечает на операцию, когда выстав- ленный на шину адрес попадает в этот диапазон. Здесь каждое устройс- тво имеет свой дешифратор адреса. Вычитательное декодирование (subtractiv decoding) - когда объ- ект отвечает на операцию, которую не опознали другие объекты. Такой адрес может быть только у одного объекта на шине. Этот метод исполь- зуется при построении стандартных шин расширения, например, ISA. В спецификации PCI определены три адресных пространства: памя- ти, устройств ввода-вывода и регистров конфигурации. Инициируемые процессором циклы обращения к устройствам вво- да-вывода, как правило выполняются в виде одиночных фаз передачи данных. На шине PCI не предусмотрен процесс перестановки байт. Указа- тель байта (byte enable) используется для определения, какие байты данных передаются в данной фазе данных. Интерфейс PCI реализует контроль передачи данных по нечетности, используя дополнительную линию PAR для разряда контроля. Контроль производится для всех разрядов группы сигналов "Адрес и данные", ко- торая включает 32 разряда адреса данных и 4 разряда идентификации команды или данных.