Шина PCI (Peripheral Component Interconnect bus)
7.2 Шина PCI (Peripheral Component Interconnect bus)
Разработка шины PCI (Peripheral Component Interconnect bus) шина взаимосвязи периферийных компонентов началась весной 1991г. как внутренний проект корпорации Intel (Release 0.1). Специалисты компании поставили перед собой цель разработать недорогое решение, которое бы позволило полностью реализовать возможности нового поколения процессоров 486/Pentium/P6. Особенно подчеркивалось, что разработка проводилась фактически “с нуля”, а не была попыткой установки новых “заплат” на существующие решения. В результате шина PCI появилась в июне 1992г. (R1.0). Разработчики Intel отказались от использования шины процессора и ввели еще одну “антресольную” (mezzanine) шину.
Благодаря такому решению шина получилась, во - первых, процессоро - независимой (в отличие от VLbus), а во - вторых, могла работать параллельно с шиной процессора, не обращаясь к ней за запросами. Например, процессор работает себе с кэшем или системной памятью, а в это время по сети на винчестер пишется информация. Просто здорово! На самом деле идиллии, конечно, не получается, но загрузка шины процессора снижается здорово. Кроме того, стандарт шины был объявлен открытым и передан PCI Special Interest Group, которая продолжила работу по совершенствованию шины (в настоящее время доступен R2.1).
Основные возможности шины следующие:
· Синхронный 32 х или 64 х разрядный обмен данными но, 64 х разрядная шина в настоящее время используется только в Alpha - системах и серверах на базе процессоров Intel Xeon, но, в принципе, за ней будущее;
· В шине применено мультиплексирование, то есть адрес и данные передаются по одним и тем же линиям;
· Поддержка 5в и 3.3в логики. Разъемы для 5в и 3.3в плат различаются расположением ключей. Существуют и универсальные платы, поддерживающие оба напряжения. Заметим, что частота 66MHz поддерживается только 3.3в логикой;
· Частота работы шины 33MHz или 66MHz (в версии 2.1) позволяет обеспечить широкий диапазон пропускных способностей (с использованием пакетного режима);
· 132 МВ/сек при 32-bit/33MHz;
Рекомендуемые материалы
· 264 МВ/сек при 32-bit/66MHz;
· 264 МВ/сек при 64-bit/33MHz;
· 528 МВ/сек при 64-bit/66MHz.
При этом для работы шины на частоте 66MHz необходимо, чтобы все периферийные устройства работали на этой частоте;
· Полная поддержка multiply bus master (например, несколько контроллеров жестких дисков могут одновременно работать на шине);
· Поддержка write - back и write - through кэша;
· Автоматическое конфигурирование карт расширения при включении питания;
· Спецификация шины позволяет комбинировать до восьми функций на одной карте (например, видео + звук и т.д.);
· Шина позволяет устанавливать до 4 слотов расширения, однако возможно использование моста PCI-PCI для увеличения количества карт расширения.
· PCI устройства оборудованы таймером, который используется для определения максимального промежутка времени, в течении которого устройство может занимать шину.
При разработке шины в ее архитектуру были заложены передовые технические решения, позволяющие повысить пропускную способность. Шина поддерживает метод передачи данных, называемый “linear burst” (метод линейных пакетов). Этот метод предполагает, что пакет информации считывается (или записывается) “одним куском”, то есть адрес автоматически увеличивается для следующего байта. Естественным образом при этом увеличивается скорость передачи собственно данных за счет уменьшения числа передаваемых адресов.
Обратите внимание на лекцию "1 - Понятие о фазовых диаграммах".
Шина PCI является той черепахой, на которой стоят слоны, поддерживающие - архитектуру Microsoft/Intel Plug and Play (PnP) PC architecture. Спецификация шины PCI определяет три типа ресурсов: два обычных (диапазон памяти и диапазон ввода/вывода, как их называет компания Microsoft) и configuration space – “конфигурационное пространство”.
Конфигурационное пространство состоит из трех регионов:
· заголовка, независимого от устройства (device - independent header region);
· региона, определяемого типом устройства (header - type region);
· региона, определяемого пользователем (user - defined region).
В заголовке содержится информация о производителе и типе устройства - поле Class Code (сетевой адаптер, контроллер диска, мультимедиа и т.д.) и прочая служебная информация. Следующий регион содержит регистры диапазонов памяти и ввода/вывода, которые позволяют динамически выделять устройству область системной памяти и адресного пространства. В зависимости от реализации системы конфигурация устройств, производится либо BIOS (при выполнении POST - power-on self test), либо программно. Базовый регистр expansion ROM аналогично позволяет отображать ROM устройства в системную память. Поле CIS (Card Information Structure) pointer используется картами cardbus (PC MCIA R3.0). С Subsystem vendor/Subsystem ID все понятно, а последние 4 байта региона используются для определения прерывания и времени запроса/владения.