PCI: жизнь продолжается
Андрей Борзенко
Лихорадочная гонка в области наращивания производительности вычислительных систем не только не стихает, но, по-видимому, ускоряет темп. Однако если быстродействие процессоров за последнее десятилетие увеличилось более чем на порядок, то пропускная способность шин ввода-вывода - лишь в несколько раз. А ведь интегральная производительность вычислительной системы определяется самым медленным ее компонентом. Сегодня необходимость повышать быстродействие системы ввода-вывода диктуется не только возросшими возможностями процессора и памяти, но и появлением гигабитных сетевых технологий.
Микросхема моста IBM PCI-X Bridge
Шина PCI (Peripheral Component Interconnect) - это уникальное явление на современном компьютерном рынке. До ее создания наибольшее распространение в ПК имели шина ISA со своей усовершенствованной разновидностью - EISA. Еще в уже далеком 1992 г. ограничения, накладываемые пропускной способностью этих шин, стали совершенно очевидны. При взаимодействии устройства с процессором запросу на обслуживание нужно было пройти через расширительный мост, шину памяти, кэш и локальную шину процессора. Все это вело к значительным задержкам при его обработке и вводе-выводе. В соответствии же со спецификацией PCI у каждого устройства есть прямой доступ к локальной шине процессора и шине системной памяти через связывающий их мост. Такое решение дает по крайней мере два преимущества. Во-первых, оно позволяет выполнять по шине несколько операций одновременно, например, процессор может забирать из кэш-памяти моста данные, в то время как устройство обращается к системной памяти. Во-вторых, оно обеспечивает независимость локальной шины от процессора.
Массовое применение PCI началось в Pentium-системах, но использовалась она и с 486-ми процессорами. Частота шины составляла от 20 до 33 МГц, а теоретическая максимальная скорость - 132 или 264 Мб/с для 32 или 64 разрядов соответственно. В современных системных платах частота на шине PCI задается как половина входной частоты процессора, т. е. при частоте 66 МГц на PCI будет 33 МГц, при 75 МГц - 37,5 МГц. Это первая шина в архитектуре IBM PC, которая является процессорно-независимой и применяется на других платформах.
Стандартная шина PCI способна поддерживать не более 10 нагрузок или три-четыре слота. Данное ограничение преодолевается за счет включения в ПК нескольких шин. Это достигается с помощью мостов двумя способами: шина подключается либо к другой шине PCI, либо непосредственно к системной шине. Однако обычно сервер на базе ПК имеет не более двух десятков слотов PCI.
На PCI определены два основных вида устройств - инициатор (задатчик), получивший от арбитра шины разрешение на ее захват, и устройство назначения (приемник), с которым инициатор выполняет цикл обмена данными. Процессор через так называемые мосты (PCI Bridge) может быть подключен к нескольким каналам PCI, с тем чтобы обеспечить одновременную передачу данных между независимыми каналами PCI (это стало возможно в спецификации 2.1). Поскольку данные и адресная информация передаются по одному и тому же пути, передача данных требует как минимум двух циклов шины: передачи адреса и доставки самих данных. Однако благодаря поддержке пакетной передачи в режиме владения шиной отправитель может вслед за адресной информацией послать все данные сразу. Об их объеме отправитель и получатель договариваются предварительно. Пакетную передачу не может прервать никакое другое устройство, поскольку оно не находится в режиме владения шиной.
Автоконфигурирование устройств (выбор запросов прерывания, каналов DMA) поддерживается средствами BIOS системной платы по принципу plug and play (“включи и работай”). Стандарт PCI для каждого слота определяет конфигурационное пространство размером до 256 восьмиразрядных регистров, не приписанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным циклам шины Configuration Read и Configuration Write, которые вырабатываются контроллером при обращении контроллера шины PCI процессора к его регистрам, расположенным в его пространстве ввода-вывода.
В мае 1999 г. появилась спецификация 2.2 стандарта PCI, и в это же время корпорация Intel (www.intel.com) выпустила первый набор микросхем с поддержкой версии 2.2 - i810. В соответствии с новой спецификацией появились и новые возможности:
- поддержка “горячей” замены PCI-устройств - PCI Hot-Plug. Ввод этой функции позволяет добавлять (удалять) PCI-платы не выключая компьютера. Такая возможность особенно необходима для серверных платформ;
- система управления энергопотреблением для устройств на шине PCI, позволяющая управлять энергопотреблением как внешних PCI-плат, так и встроенных на системной плате устройств; механизм управления подстроен под стандарт ACPI, чем облегчается управление энергопотреблением PCI-устройств со стороны операционной системы;
- дополнение и переработка требований к конструктивной реализации PCI-плат.
PCI представляет собой шину с разделяемой архитектурой с распределением памяти - т. е. память совместно используется процессором (хостом) и устройствами. Разделяемый подход имеет очевидные недостатки, например, какое-либо одно периферийное устройство может монополизировать шину так, что другие устройства не будут иметь к ней доступа. Кроме того, шина с распределением памяти затрудняет выявление и изоляцию источника сбоя.
С повышением тактовой частоты процессоров до 1 ГГц при ширине шины процессор - память в 64 разряда, с одной стороны, и в связи с возрастанием пропускной способности локальной сети до 1 Гбит/с и появлением высокоскоростных периферийных устройств на базе Ultra3 SCSI и Fibre Channel - с другой, пропускной способности имеющихся на сегодня PCI оказывается недостаточно. Так, теоретический предел для 64-разрядной шины PCI на 66 МГц, наиболее производительной из возможных стандартных реализаций, составляет 533 Мб/с, к тому же наибольшее распространение имеют шины на 33 МГц, для которых максимум пропускной способности составляет 266 Мб/с.
Стандарт PCI-X
В 1998 г. три крупнейшие компьютерные компании - Compaq (www.compaq.com), Hewlett-Packard (www.hp.com) и IBM (www.ibm.com) разработали новую спецификацию расширения шины PCI под названием PCI-X. Эта спецификация опиралась на существовавшую технологию PCI, но за счет ряда усовершенствований протокола она позволила значительно увеличить производительность шины: при частоте 133 МГц и ширине 64 разряда ее максимальная пропускная способность составляет свыше 1 Гб/с (точнее, 1066 Мб/с). Осенью проект спецификации был представлен на рассмотрение в организацию PCI Special Interest Group (PCI SIG, www.pcisig.org). Надо отметить, что и до этого времени Compaq, Hewlett-Packard и ряд других производителей ПК-серверов уже выпускали продукцию с 64-разрядными разъемами PCI, рассчитанными на тактовую частоту 66 МГц, хотя в чипсетах Intel была обеспечена поддержка только 32-разрядных слотов и тактовой частоты 33 МГц.
Конечно, истинное преимущество PCI-X заключается в ее легкой масштабируемости по частоте. Используемый ею протокол типа “регистр - регистр” (register-to-register) предусматривает больше времени на стадию декодирования. А так как время, отводимое на эту операцию, уменьшалось при росте скорости обычной PCI, то создавать стабильно работающие на частоте 66 МГц устройства было затруднительно. Новая технология PCI-X обеспечивает стабильную работу устройствам на частотах 66, 100 и 133 МГц. А в будущем частота шины возрастет еще больше. Контроллер PCI-X, работающий на частоте 66 МГц, может присваивать адреса нескольким устройствам (до четырех), а дополнительный мост PCI-X-to-PCI-X позволит подключить большее их количество. Пропускная способность на 66 МГц достигает 533 Мб/с. В случае же работы всей периферии на 100 МГц возможное число устройств, подключаемых к PCI-X, сокращается до двух, зато пропускная способность 64-разрядной шины достигает 800 Мб/с. И наконец, допустимая ширина полосы пропускания PCI-X при подключении единственного устройства, работающего на частоте 133 МГц, достигает внушительных 1066 Мб/с. Подобным образом можно будет подсоединять наиболее требовательную к скорости периферийную аппаратуру (Fibre Channel, Gigabit Ethernet). Благодаря обеспечению обратной совместимости PCI-X будет использовать те же порты, что и классическая шина PCI (32- или 64-разрядные), причем можно использовать обычный PCI-слот (естественно, само устройство при этом будет работать как обычное). Спецификация PCI-X требует, чтобы адаптеры при установке в PCI-систему поддерживали любые ее режимы. И наоборот, если обычный PCI-адаптер устанавливается на шину PCI-X, то он и все остальные адаптеры данного шинного сегмента работают по протоколу PCI. Кроме того, PCI-X не будет требовать никаких изменений в BIOS в отношении шины PCI. Более того, возможно наличие в одной системе как шины PCI, так и PCI-X.
Кроме увеличения тактовой частоты, повышение производительности достигается с помощью таких усовершенствований, как межрегистровый протокол, атрибутивная фаза, поддержка разделенных транзакций, оптимизация состояний ожидания и оперирование блоками данных стандартного объема.
В случае традиционной шины PCI декодирование полученного сигнала на принимающей стороне происходит на протяжении того же цикла, что и отправка. Это налагает очень жесткие требования на время декодирования: в случае шины PCI с частотой 66 МГц оно составляет всего 3 нс. В соответствии же с новым межрегистровым протоколом декодирование производится за отдельный цикл. Такое решение, с одной стороны, упрощает реализацию шины с более высокой тактовой частотой, поскольку ослабляет ограничения на время декодирования, а с другой - лишь незначительно увеличивает общее число циклов для одной транзакции (если в случае PCI операция записи обычно выполняется за девять циклов, то с PCI-X она будет завершена за десять).
Атрибутивная фаза использует 36-разрядное поле атрибута, которое позволяет описать транзакции на шине более детально, чем в традиционном протоколе PCI. Фаза атрибута следует сразу за фазой адреса и содержит несколько бит, включающих информацию о транзакциях, например об их объеме и порядке, и об идентификаторе инициатора. Введение фазы атрибута позволяет более эффективно использовать ресурсы шины PCI-X, в частности смягчить требования к порядку транзакций. В традиционном протоколе PCI мосты host-to-PCI и PCI-to-PCI обрабатывают запросы по мере их поступления. Мосты должны выполнять транзакции в строгой последовательности, так как не могут идентифицировать устройство, от которого пришел запрос. Поле атрибута содержит специальный бит (relaxed ordering bit), причем если драйвер или управляющая программа устанавливают его значение равным единице, то транзакция может быть выполнена вне очереди. Таким образом, мост может перегруппировать транзакции и повысить пропускную способность системы ввода-вывода. Использование этого механизма особенно эффективно для аудио- и видеоприложений, чувствительных к временны/м задержкам.
Другим расширением протокола является счетчик байтов транзакции. В протоколе PCI мост по умолчанию считывает предопределенное количество строк (обычно одну или две) из кэш-памяти. Поскольку у моста нет возможности узнать, как много данных будет затребовано, то он всегда считывает обусловленное технологией количество строк. Совсем другая ситуация складывается с технологией PCI-X. Там мост точно знает, какое количество байтов необходимо выбрать, поскольку поле атрибута содержит их счетчик. Это позволяет применять более эффективные схемы управления буфером и повысить степень утилизации шины и других системных ресурсов. Еще одним дополнительным параметром, описывающим транзакцию, является ее порядковый номер - уникальный идентификатор инициатора транзакции (и сегмента шинной архитектуры, в котором располагается инициатор). Порядковый номер транзакции может быть использован для построения развитых алгоритмов управления буфером.
Традиционный протокол PCI ориентирован на задержанные транзакции. Его реализация предусматривает, что устройство, затребовавшее данные, должно постоянно опрашивать источник, чтобы определить момент завершения обработки запроса и готовности данных в регистре. Новый протокол устраняет фазу опроса, которая, по существу, приостанавливает работу шины. Суть механизма поддержки разделенных транзакций заключается в том, что устройство-инициатор посылает источнику данных только сигнал запроса, получая в ответ квитанцию. После этих операций связь между устройствами прекращается и регистр освобождается для обработки другой информации. Когда данные будут готовы, источник инициирует новую транзакцию и пошлет ее запросившему устройству.
PCI-устройства часто при выполнении транзакций добавляют дополнительные такты, так называемые состояния ожидания. Это делается для того, чтобы приостановить операции на шине, если данные еще не готовы. В ряде случаев такие вставки пустых тактов могут значительно снизить пропускную способность шины. Протокол PCI-X не предусматривает состояния ожидания, если не считать задержку при инициализации устройства-получателя. Когда устройство PCI-X по каким-то причинам не готово продолжить транзакцию, оно отключается от шины, предоставляя ее другим устройствам. Это повышает эффективность использования ресурсов компьютера.
При поддержке протокола PCI-X адаптеры и мосты могут прерывать транзакции только на естественной границе пакета 128 байт. Разбивка данных на более длинные пакеты позволяет оптимизировать по скорости операции как с кэш-памятью, так и с основной памятью и шиной процессора.
Летом 1999 г. консорциум PCISIG принял первую версию спецификации PCI-X. Несмотря на интересные технические параметры, корпорация Intel отнеслась к разработке новой шины весьма скептически: в ту пору она сама весьма активно занималась созданием собственной шины следующего поколения NGIO (Next Generation Input Output). Конечно, важнейшим вопросом для PCI-X является то, насколько широкое распространение она получит. Некоторые эксперты заявляют, что она просуществует два-три года, пока ее не сменит более быстрая спецификация системы ввода-вывода на базе коммутирующих структур InfiniBand. По сравнению с разделяемыми шинами, такими, как PCI, эта технология имеет два основных преимущества.
Во-первых, с увеличением скорости разделяемой шины ее протяженность и количество поддерживаемых ею устройств неизбежно уменьшается в целях обеспечения качества сигнала. Прямой же ввод-вывод, позволяя разносить устройства на большие расстояния, практически неограниченно расширяем с точки зрения числа устройств. Таким образом, он прекрасно подходит для корпоративных сетевых технологий, системных сетей и кластеров. Во-вторых, когда одно из устройств на разделяемой шине выходит из строя, это обычно сказывается на всех остальных. В случае коммутируемого прямого ввода-вывода отказавшее устройство может быть изолировано, так что оно не влияет на остальные.
Тем не менее председатель PCISIG Роджер Типли (Roger Tipley) имеет на этот счет свое мнение. В частности, он считает, что продолжателем дела PCI станет+ стандарт PCI 3.0, а его составной частью будут спецификации PCI-X и PCI Hot Plug. В ближайшее время InfiniBand мало повлияет на рынок PCI, поскольку, по мнению Типли, подобные серверы займут не более 3% рынка. К тому же пропускная способность адаптеров 1х и 4х InfiniBand пока не превышает возможностей PCI. По крайней мере до 2004 г. можно спать спокойно.
Мнение председателя не следует сбрасывать со счетов, ведь членами PCISIG стали уже более 940 ведущих компаний. Интересно, что по мере того, как PCI-X набирает обороты, ей начинают выделять роли, на которые она, по всей вероятности, вряд ли предназначалась с самого начала. Например, основываясь как на производительности, так и на простоте использования этой шины, эксперты PCISIG полагают, что она вполне может заменить собой AGP. Делались даже попытки убедить такие корпорации, как Sun и Apple, заменить в своих рабочих станциях AGP-порт на шину PCI-X. Напомним, что 64-разрядная PCI-X на 133 МГц имеет примерно одинаковую с AGP 4X пропускную способность. В качестве одного из основных аргументов указывалась возможность одновременной работы нескольких графических адаптеров на шине PCI-X в отличие от AGP. Впрочем, не лишне напомнить, что лицензия на AGP выдается бесплатно, чего не скажешь о PCI-X (цена $25).
С марта будущего года корпорация IBM начинает промышленный выпуск микросхем мостов PCI-X Bridge, что несомненно послужит мощным импульсом для внедрения PCI-X в создаваемые системы.
Опубликовано в журнале «PC Week» (269)47' 2000
Помещена в музей с разрешения автора
14 июля 2014