Шина PCI появилась как раз вовремя - увеличение пропускной способности сетей накладывает повышенные требования на скорость подсистемы ввода/вывода.


ЗАРЯЖАЙ!
ДВА В ОДНОМ

По мере того, как возрастает производительность и ЦПУ, и оперативной памяти, ужесточаются требования к быстродействию подсистем ввода/вывода. Использование графических видеоконтроллеров, сетевых адаптеров и контроллеров жестких дисков требует высокой пропускной способности.

Шина взаимного соединения периферийных компонентов (Peripheral Component Interconnect, PCI) была разработана с целью увеличения скоростей передачи данных при вводе/выводе. Как и EISA, PCI - шина шириной в 32 бита. Это означает, что данные по ней передаются по четыре байта за одну посылку. Однако, если тактовая частота шины EISA составляет 8.33 МГц, то тактовая частота, предусмотренная спецификацией PCI-2.0, достигает 33 МГц. Перемножив четыре байта ширины шины PCI на тактовую частоту 33 МГц, получим теоретический максимум пропускной способности в 132 Мбайт/с против 33 Мбайт/с у EISA.

Хотя шина PCI разрабатывалась в основном силами компании Intel, известной своими микропроцессорами семейства 80x86, ее использование не связано с процессором какого-то определенного типа. PCI, например, используется в последних моделях компьютера Macintosh на базе PowerPC (производства компании Apple Computer).

ЗАРЯЖАЙ!

Если вам уже приходилось подыскивать для себя компьютер на базе шины PCI, вы, скорее всего, обратили внимание, что большинство предлагаемых на рынке компьютеров оснащены не более чем тремя слотами PCI. Такое ограничение может представлять собой определенную проблему, если вы предполагаете использовать систему на базе шины PCI в качестве сетевого файлового сервера: в этом случае компьютер должен иметь большое количество слотов для сетевых плат и контроллеров дисков.

Как разъясняет Роберт Мак-Найр, менеджер по разработке приложений в подразделении компонентов для PCI компании Intel (Санта-Клара, шт. Калифорния), ограничение количества слотов PCI на современных машинах отчасти проистекает из ограниченной нагрузочной способности шины. Еще одна причина кроется в большом числе уже установленных адаптеров ISA и EISA - нет сомнений, что пользователи не станут заменять их все единовременно. Машина, в которой, в дополнение к слотам PCI, имеется несколько слотов ISA или EISA, с этой точки зрения оказывается в выгодном положении.

Если говорить о нагрузочной способности, то тут дело в том, что любое устройство, управляющее работой шины (т. е. выдающее на шину электрические сигналы), может обеспечить подсоединение к шине лишь ограниченного числа устройств; когда их слишком много, то уровень напряжения може выйти за пределы соответствующих допусков, что приведет к ошибкам. При наиболее неблагоприятном стечении обстоятельств (например, если сила тока превысит допустимое значение) микросхемы могут даже выйти из строя.

По утверждению Мак-Найра, PCI выдерживает до 10 нагружаемых устройств. При расчете нагрузки на шину следует учитывать, что сам управляющий комплект микросхем PCI нужно рассматривать как одно нагружающее устройство, впрочем так же, как и любой компонент PCI (к примеру интегрированный графический контроллер или SCSI-контроллер на системной плате).

Слоты PCI считаются за одно-полтора для двух нагружающих устройств каждый. Почему не один вход? Если бы каждый слот поддерживал только один вход, перед разработчиками плат расширения PCI возникла бы серьезная проблема, поскольку тогда плата расширения могла бы содержать только одно устройство PCI. Благодаря тому, что PCI выдерживает нагрузку, эквивалентную нагрузке от двух устройств PCI, разработчики стандарта PCI предоставили конструкторам плат расширения большую свободу выбора.

Данные правила расчета нагрузки шины показывают, что шина PCI, как правило, может иметь не более четырех слотов. (Например, если комплект микросхем PCI - одно из нагружаемых устройств, а другое - графический контроллер PCI, то можно подсоединить восемь нагружающих устройств, которые и надо разделить между слотами - получится четыре слота).

Проектировщики систем могут обойти эти ограничения при помощи "мостов" - микросхем, служащих усилителями или повторителями сигнала, позволяющих "подвесить" одну шину PCI на другую. (Следует, однако, помнить, что и мост тоже нагружает шину: обычно он эквивалентен одному нагружающему устройству PCI). Существуют также типы мостов, которые используют для соединения шин EISA или ISA с PCI.

Способ использования мостов может оказать существенное влияние на суммарную производительность системы. Для примера рассмотрим Рис. 1, где показаны два способа соединения нескольких шин мостами. Способ А соответствует каскадному соединению, где шина PCI2 подключена к шине PCI1 при помощи моста между PCI и PCI. Шина EISA, в свою очередь, также подключена к шине PCI1. В соответствии с каскадной структурой системы, все данные, направляющиеся к любому из адаптеров или от любого из адаптеров, подключенных к слоту PCI или EISA, должны пройти через шину PCI1. Тем самым, верхний предел пропускной способности ввода/вывода системы в целом составляет 132 Мбайт/с.

Picture 1 (1x1)

Рисунок 1.
Для соединения одной шины PCI с другой шиной PCI можно использовать мосты. Существуют также мосты, связывающие шину PCI с шиной EISA или ISA. Однако общая производительность зависит от конкретного способа использования мостов. В нашем примере способ Б позволяет добиться большей попускной способности ввода/вывода, нежели способ А. Это связано с тем, что в способе Б используется одноуровневая компоновка двух шин PCI.

Способ Б на Рис.1 соответствует другой структуре системы (назовем его одноуровневым подключением). Здесь обе шины PCI напрямую подключены к системной шине, и получают, и посылают данные независимо друг от друга. В этом случае суммарная производительность системы ввода/вывода может достигать 264 Мбайт/с, что вдвое выше, нежели при каскадном способе подключения.

Рисунок 1 не столько отражает структуру какой-либо конкретной компьютерной системы, сколько демонстрирует, в самых общих чертах, разницу между каскадной и одноуровневой компоновками шины PCI. Компания Hewlett-Packard (Пало-Альто, шт.Калифорния) использует оба эти способа в своем семействе серверов NetServer. Ларри Шинтаку, менеджер новых разработок подразделения NetServer компании HP (Санта-Клара, шт.Калифорния), поясняет: "Компьютеры NetServer начального уровня используют каскадное соединение шин (способ А, Рис. 1) - точно так же, как и серверы других производителей на базе PCI. В более дорогих серверах семейства NetServer применяется одноуровневое подключение, что позволяет повысить пропускную способность системы ввода/вывода".

По поводу ограничения на число слогов Шинтаку говорит примерно то же самое, что и Мак-Найр из Intel: большинство современных PCI-систем имеет относительно немного слотов PCI, причиной тому, во-первых, ограниченная нагрузочная способность шины, а во-вторых, необходимость в достаточном количестве слотов ISA (или EISA) для работы с платами, изготовленными до появления шины PCI.

Стандарт PCI основан на использовании мультиплексирования при передаче адресов и данных. Это означает, что адреса и данные выдаются на одни и те же проводящие дорожки. (Адреса и данные не передаются одновременно; они поступают на шину поочередно, а одна шинная линия используется для выставления сигнала о том, как следует интерпретировать передаваемую информацию: как адрес или как данные).

За счет передачи данных и адресов по одним и тем же дорожкам создатели шины PCI смогли существенно уменьшить количество контактов в разъеме по сравнению с EISA и другими 32-разрядными шинами. Тем самым, за счет уменьшения физических размеров разъема удалось снизить стоимость и сэкономить "жилплощадь" на системной плате.

ДВА В ОДНОМ

Разработчики шины PCI придумали также хитрый способ сэкономить место на задней панели компьютера. Поскольку PCI не может заменить ISA или EISA за одну ночь, в крупных системах предполагается использовать слоты двух типов (большей частью, это будет смесь PCI с EISA или PCI с ISA).

Для использования всех необходимых покупателю плат число прорезей на задней панели может оказаться недостаточным, поэтому разработчики PCI предложили свою идею "разделяемого" слота, который в зависимости от конструкции будет использоваться как с платами PCI/EISA, так и с платами PCI/ISA.

На рисунке 2 показана общая схема разделенного слота, с видом сверху на системную плату. В адаптерах EISA печатные монтажные платы располагаются от металлической скобы, крепящей адаптер к задней стенке компьютера с одной стороны, а в адаптерах PCI - с другой. Это позволяет разместить два разъема (в нашем случае PCI и EISA) рядом друг с другом на месте одного физического слота.

Picture 2 (1x1)

Рисунок 2.
Разработчики предлагают "разделенные" слоты ввода/вывода, которые можно использовать с платами расширения обоих типов. Показанный на рисунке разделеннный слот можно использовать для адаптеров PCI или EISA.

Разделение слотов не увеличивает их общее число (машина с пятью слотами, например, остается машиной с пятью слотами), однако этот подход позволяет спроектировать систему с тремя слотами ISA и тремя слотами PCI. Один из этих слотов будет разделен между ISA и PCI. Такая конструкция позволит пользователям, при необходимости, использовать две платы PCI и три платы ISA или же две платы ISA и три платы PCI.

Мак-Найр отмечает, что схема прерываний в PCI отлична от схемы, используемой в ISA. PCI допускает разделение одного прерывания между несколькими устройствами, если только все эти устройства могут разделять прерывания. В ISA же, напротив, только одно устройство может использовать свое собственное прерывание.

PCI допускает разделение прерываний, поскольку в этой шине реализованы "прерывания по уровню" (level-triggered), в то время как в ISA принято "прерывание по фронту" (edge-triggered). В EISA используются оба способа.

"Прерывание по уровню" означает, что компьютер следит за уровнем напряжения на каждой из линий прерывания. Например, напряжение на линии прерывания может составлять 5 В при отсутствии прерывания. Появление прерывания сигнализируется сбросом линии прерывания на уровень 0 В. (В зависимости от конструкции компьютера возможны и другие конкретные значения напряжений - логика может быть обратной, но сам принцип остается неизменным).

При прерывании по фронту, компьютер реагирует только на переходы от одного состояния шины к другому. Иными словами, имеет значение только передний фронт импульса напряжения на линии прерывания.

Когда в системе на базе PCI возникает прерывание на одной из линий прерываний (всего их в PCI четыре), это означает, что по меньшей мере одно устройство на данной линии прерывания требует внимания. В подобной ситуации компьютер начинает опрашивать все устройства по очереди, чтобы определить, на каком из них возникло прерывание. После того, как источник прерывания обнаружен, процессор передает управление соответствующей программе обработки прерывания (interrupt service routine, ISR). По завершении ISR система возвращается к действиям, выполнявшимся до возникновения прерывания. Если, однако, та же линия прерывания по-прежнему находится в активном состоянии (в нашем примере уровень напряжения на линии по-прежнему низкий), то устройства вновь опрашиваются с целью установить источник запроса на прерывание. После этого система переходит к обслуживанию прерывания.

Такое комбинированное использование механизма прерываний и опроса делает общую схему работы с прерываниями в PCI существенно более гибкой, нежели та, на которой основана ISA. Хотя в ISA поддерживается больше различных прерываний, тот факт, что каждому устройству требуется отдельная линия прерывания, делает угрозу исчерпания свободных прерываний для устройств более реальной, чем в случае PCI.

Для разделения одной линии прерывания между несколькими устройствами в PCI используется механизм прерывания по уровню, что немаловажно, поскольку при работе с прерываниями по фронту имеется опасность потерять часть из них. К примеру, если следующее прерывание возникает в момент, когда процессор еще не закончил обработку предыдущего, то по завершении обработки первого обнаружить второе уже невозможно. Используя же прерывание по уровню, любое устройство, приписанное к линии прерывания, может перевести напряжение на этой линии на низкий уровень, выставив тем самым прерывание; уровень напряжения останется низким до тех пор, пока все выставленные прерывания не будут обслужены.

По-видимому, пропускной способности PCI должно хватить для удовлетворения большей части сегодняшних требований, в особенности при использовании одноуровневой структуры PCI. Однако разработчики PCI уже сейчас планируют расширения PCI до шины шириной в 64 бита с тактовой частотой до 66 МГц. Компактность выводов мультиплексированной шины PCI позволяет разместить второй разъем непосредственно за первым, экономя тем самым место на системной плате.

Мак-Найр считает, что шина на 66 МГц, скорее всего, понадобится еще очень нескоро, во всяком случае на машинах класса ПК. "Мощным технологическим рабочим станциям она, возможно, и пригодится, - заявляет он, - но в персональных компьютерах удвоение тактовой частоты пользы не принесет просто потому, что в других частях этих систем достаточно узких мест".


С Аланом Франком можно связаться через Internet по адресу: afrank@mfi.com.