Интерфейс шины PCI (Peripheral Component Interconnect bus) стал широко применяться с появлением процессоров Pentium. Шина PCI дает компьютеру возможность наиболее быстро общаться с внешним миром, так как она существенно превосходит по быстродействию шину ISA. Предложенная в начале как локальная шина для дополнения к основной магистрали, PCI, тем не менее, обладает всеми достоинствами универсальной системной магистрали.
Шина PCI имеет два варианта: 32-разрядный (в нем используется 124-контактный разъем) и 64-разрядный (188-контактный разъем). При этом гарантируется как прямая, так и обратная совместимость 32- и 64-разрядных устройств. Чаще всего применяется 32-разрядный вариант PCI.
Тактовая частота PCI составляет 33 МГц (однако допускается и частота 66 МГц). Максимальная теоретически возможная скорость обмена при тактовой частоте 33 МГц достигает 132 или 264 Мбайт/с для 32 и 64 разрядов данных, соответственно, что в 20 раз превышает пропускную способность ISA. Предусмотрена возможность включения плат с напряжением питания как 5 В, так и 3,3 В (в раздельные разъемы). На магистрали предусмотрен арбитраж, то есть возможность поочередного захвата шины несколькими задатчиками, с разрешением конфликтов между ними. Предусмотрен высокоскоростной обмен по магистрали без участия процессора. Возможна автоконфигурация, то есть автоматическое распределение ресурсов между включенными платами (по принципу PnP). Каждое из устройств шины может захватить ее и провести необходимый обмен.
Шина PCI представляет собой открытый непатентованный стандарт, который поддерживают все основные производители персональных компьютеров и периферийных контроллеров. Сейчас она рассматривается как основа для таких распространенных компьютерных платформ, как DOS/Windows, Macintosh и UNIX. Ведущие производители микросхем уже выпускают специальные комплекты микросхем для ее поддержки. Независимость от типа процессора обещает шине PCI большое будущее. Сейчас она занимает второе место по популярности после ISA.
Большим недостатком шины PCI по сравнению с ISA является ограниченное количество устройств на шине (не более четырех), для большего количества устройств необходимо применение мостов PCI—PCI. Так как в компьютере одним из PCI-устройств является контроллер шины (то есть центральный процессор), для подключения карт расширения остается всего три разъема (слота). Один из PCI-слотов, как правило, используется для подключения контроллера дисплея, другой чаще всего применяется для включения контроллера локальной сети. Поэтому, несмотря на потенциально большие возможности PCI, в компьютере для дополнительных карт расширения остается всего один слот. К тому же надо учесть, что разработка и отладка PCI-устройств гораздо сложнее, чем ISA-устройств, а большее быстродействие PCI по сравнению с ISA нужно далеко не для всех задач. Поэтому о полном вытеснении шины ISA пока что речь не идет.
Шина PCI относится к мультиплексированным шинам, она имеет полностью мультиплексированную шину адреса/данных. При этом адрес может быть 32 разрядным или 64-разрядным (он передается по 32-разрядной шине за два такта, сначала младшие разряды, затем старшие) Точно так же и данные могут передаваться как 32-разрядные, так и 64-разрядные (за два такта при 32-разрядной шине). В 64-разрядной версии PCI шина адреса/данных имеет 64 разряда.
Основной режим обмена по шине — синхронный, тактируемый положительными фронтами тактового сигнала шины, но возможен и асинхронный обмен (как и в случае ISA). В цикл обмена (или транзакцию) входит фаза адреса (в начале) длительностью один такт и фаза данных длительностью в один или несколько тактов.
Основные сигналы шины PCI следующие:
• AD0…AD31 — шина адреса/данных. Адрес передается в начале цикла, затем — данные;
• -C/BE0…-C/BE3 (Command/Byte Enable) — четыре линии, которые в фазе адреса определяют один из 16 возможных типов цикла передачи данных (табл. 8.9), а в фазе данных определяют действительность байтов данных;
• -FRAME — строб адреса, активен во время передачи данных;
• -INTRA, -INTRB, -INTRC, -INTRD — линии запросов прерываний;
• IDSEL — выбор устройства-исполнителя в циклах записи и чтения конфигурации.
Таблица 8.9. Типы циклов обмена PCI.
Сигналы С/ВЕ Команда
0000 Подтверждение прерывания
0001 Специальный цикл
0010 Чтение порта ввода/вывода
0011 Запись в порт ввода/вывода
0100…0101 Зарезервировано
0110 Чтение из памяти
0111 Запись в память
1000…1001 Зарезервировано
1010 Чтение конфигурации
1011 Запись конфигурации
1100 Множественное чтение памяти
1101 Двойной цикл адреса
1110 Чтение строки памяти
1111 Запись в память и проверка
Операция конфигурирования (циклы записи и чтения конфигурации) служит для автоматического распределения ресурсов компьютера при включении питания. В этих циклах для выбора (адресации) конфигурируемого устройства-исполнителя применяется специальный сигнал IDSEL, передаваемый в фазе адреса. Каждому PCI-устройству соответствует 256-байтная область конфигурации, где находится информация как о самом устройстве, так и о выделенных ему ресурсах. Область конфигурации не относится ни к адресному пространству памяти, ни к адресному пространству устройств ввода/вывода. Компьютер распределяет ресурсы между устройствами в соответствии с их особенностями, потребностями и ограничениями.
При синхронном обмене (рис. 8.11) в начале цикла (адресная фаза) по шине AD передается код адреса, а по линиям C/BE — код типа цикла (команда). Действительность адреса определяется сигналом -FRAME (по положительному фронту CLK после начала сигнала -FRAME). После опознания адреса исполнитель выставляет сигнал подтверждения выборки -DEVSEL, после чего начинается фаза данных. То есть можно сказать, что адрес передается асинхронно. В фазе данных по шине данных передаются слова данных, тактируемые положительными фронтами сигнала CLK. Сигналы готовности -IRDY и -TRDY выставляются в начале фазы данных и остаются активными до окончания цикла. По линиям -C/BE в фазе данных передаются сигналы разрешения байтов (то есть определяется формат передаваемых данных). Перед последним тактом передачи данных задатчик снимает сигнал -FRAME, после чего снимаются сигналы -IRDY, -TRDY и -DEVSEL.
Рис. 8.11. Синхронный обмен по шине PCI.
При асинхронном обмене по шине PCI (рис. 8.12) фаза адреса осуществляется как в предыдущем случае, а в фазе данных как задатчик, так и исполнитель могут приостанавливать обмен снятием своих сигналов готовности (соответственно, -IRDY и -TRDY). Цикл обмена (транзакция) при этом удлиняется за счет введения дополнительных тактов ожидания. Сигналы -FRAME и -DEVSEL вырабатываются аналогично случаю синхронного обмена.
ПК проектируются для работы в комфортных условиях офиса, и их использование в производственной обстановке зачастую невозможно. С другой стороны, разработчики систем промышленной автоматизации не могут игнорировать продукты, имеющие массовое распространение на рынке и, следовательно, относительно дешевые. Прогресс технологии производства электронных плат сделал выгодным изготовление широкой номенклатуры микросхем В/В в виде кристаллов. Для того чтобы их можно было использовать в промышленных системах, требовалась по крайней мере стандартизация с учетом требований повышенной надежности.
За основу была взята 32/64-разрядная высокопроизводительная шина PCI, локальный интерфейс подсистемы В/В для надплатных расширений активной материнской платы, ставшая стандартом де-факто для современных ПК. Эта шина имеет массу достоинств: она не зависит от типа микропроцессора, может работать с самыми быстрыми из них, имеет большую пропускную способность и аппарат автоконфигурирования устройств В/В. Сейчас PCI активно применяется в VME-компьютерах для подключения периферии.
После доработки, в 1995 году, был выпущен стандарт CompactPCI, основанный на общепринятой технологии создания надежных промышленных модульных систем - пассивной объединительной магистрали [4]. Большое практическое значение имеет тот факт, что любое ПО, работающее на настольных ПК, может быть без изменений перенесено в систему CompactPCI, а программисты, работающие на ПК, но не имеющие дела с аппаратурой, могут быстро скомпоновать систему CompactPCI, установить ОС и сконфигурировать систему в соответствии с реальными потребностями.
CompactPCI стал достойным конкурентом технологии VME. Однако CompactPCI - относительно новый стандарт, и некоторые необходимые функции в нем либо отсутствуют (горячая замена), либо не доведены до кондиций. Кроме того, номенклатура продуктов CompactPCI пока небольшая, особенно в сравнении с рынком VME/ISA-оборудования. Поэтому сейчас следует ориентироваться на связку двух стандартов, используя CompactPCI как недорогую объединительную панель с высокой скоростью передачи данных.