Архитектура шины 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 разряда идентификации команды или данных.