PCI-X: последняя ступенька разделяемой архитектуры

Лихорадочная гонка в области наращивания производительности вычислительных систем не только не стихает, но, по-видимому, ускоряет темп. Можно подумать, что на карту поставлена жизнь или что до наступления золотого века человечеству не хватает лишь нескольких TFLOP или десятков Gbps. Internet — вот идол, которому поклоняется постиндустриальная эпоха. На алтарь возлагаются гигагерцы и гигабайты. Первые лица IT-индустрии пророчат закат любому бизнесу, если он не использует Internet. И, похоже, предсказания сбываются.

Однако если быстродействие процессоров за последнее десятилетие увеличилось более чем на порядок, то пропускная способность шин ввода/вывода — лишь в несколько раз. А ведь интегральная производительность вычислительной системы определяется самым медленным ее компонентом. Сегодня необходимость повышения быстродействия системы ввода/вывода диктуется не только возросшими возможностями процессора и памяти, но и появлением гигабитовых сетевых технологий.

Вызов был принят индустрией, но расколол ее на два лагеря. Один, возглавляемый Intel, предложил технологию Next Generation I/O, о которой мы писали в № 2, 1999. Другой (в него входят такие компании, как Compaq, Hewlett-Packard и IBM) пошел по пути расширения спецификации шины PCI (полноты ради отметим, что Compaq & CO разрабатывают еще одну спецификацию ввода/вывода — Future I/O). Модифицированная шина, краткий обзор которой мы и предлагаем ниже, получила наименование PCI-X.

Новая спецификация базируется на существующей технологии PCI, однако при частоте 133 MHz и ширине 64 бита она обеспечивает пропускную способность 1066 MBps. Этого удалось добиться за счет использования протокола регистр—регистр (register-to-register protocol), введения новой фазы транзакции — атрибутивной (attribute phase) — и механизма расщепленных транзакций (split transactions).

Особенности технологии

Традиционная шина PCI предусматривает тактовые частоты 33 и 66 MHz. Дальнейшему повышению частоты препятствуют особенности PCI-интерфейса. Дело в том, что, согласно спецификации, периферийное устройство должно декодировать полученный сигнал в течение того же такта, на котором происходит отправка, и на следующем такте выставить ответ. При частоте 33 MHz из 30-наносекундного периода с учетом времени задержки, вызванной распространением сигнала по шине, на декодирование остается 7 нс. Удвоение же частоты уменьшает это время до 3 нс (рис. 1), из-за чего возникают трудности при разработке адаптеров уже для частоты 66 MHz. Эта проблема устраняется с помощью межрегистрового протокола. В соответствии с ним сигнал отправителя удерживается специальным триггерным регистром в течение следующего такта, предоставляя устройству-получателю полный такт для декодирования, а ответ посылается на втором такте (рис. 2). Правда, количество тактов полной транзакции увеличивается на единицу, однако суммарное время ее обработки значительно уменьшается за счет высокой тактовой частоты.

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

Атрибутивная фаза. Новая фаза использует 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 байт. Разбивка данных на более длинные пакеты позволяет оптимизировать по скорости операции как с кэш-памятью, так и с основной памятью и шиной процессора.

Совместимость и способность
к взаимодействию

Одной из основных особенностей, которая, по-видимому, будет способствовать благожелательному приему новой технологии, является ее обратная совместимость с существующими шинами, адаптерами, устройствами и драйверами спецификации PCI. Адаптер PCI-X будет работать в обычной PCI-системе и наоборот. Протокол PCI-X совместим с существующими драйверами PCI-устройств и операционными системами. Однако чтобы использовать возможности новой технологии в полной мере, необходимы соответствующие изменения как в драйверах устройств, так и в операционной системе.

Спецификация PCI-X требует, чтобы адаптеры при установке в PCI-систему поддерживали бы любой из ее режимов. И наоборот, если обычный PCI-адаптер устанавливается на шину PCI-X, то он и все остальные адаптеры данного шинного сегмента работают по протоколу PCI.

Режим PCI-X предусматривает две рабочие частоты для адаптеров — 66 и 133 MHz. Реально в зависимости от конфигурации системы при функционировании в режиме PCI-X адаптеры с номинальной частотой 66 MHz будут работать в диапазоне частот 50—60 MHz, а 133-мегагерцевые адаптеры — в диапазоне 50—133 MHz. Как и традиционные, адаптеры PCI-X могут иметь 64- или 32-разрядный интерфейс. Комбинации всех возможностей позволяют разработчикам строить системы с разной производительностью и ценой.

Как уже упоминалось выше, режим и частота функционирования шины PCI-X зависит от типов установленных адаптеров и их количества. Остановимся вкратце на этих конфигурационных особенностях.

Однородные системы. Если в сегменте шины PCI-X только нативные адаптеры, то шина будет работать в режиме PCI-X на автоматически установленной частоте самого медленного устройства. Следует сказать, что максимальная частота шины 133 MHz поддерживается только при одном разъеме. Если, например, на шине PCI-X имеются два разъема расширения, то сегмент будет работать на частоте 100 MHz, а при четырех разъемах этот показатель понизится до 66 MHz. Заметим, что традиционный 66-мегагерцевый сегмент PCI поддерживает только два разъема.

Смешанные системы. Если в сегменте PCI-X установлен какой-нибудь адаптер PCI, то сегмент будет функционировать в режиме PCI. Как и предусмотрено протоколом PCI, частота шины будет соответствовать частоте самого медленного устройства.

Следует отметить, что спецификация поддерживает до 256 шинных сегментов, каждый из которых инициализируется независимо от других. На рис. 3 представлен пример смешанной системы.

Рис. 3

Несмотря на то что новый протокол повышает пропускную способность шины I/O в два раза по сравнению со стандартом PCI 2.2 (с 533 до 1066 MBps), он не решает основной проблемы — разделяемой среды передачи. Поэтому технологии предрекают недолгую жизнь — два-три года. Ведь в затылок ей дышат две новые, базирующиеся на принципах коммутации, архитектуры локальных шин ввода/вывода — NGIO и Future I/O. Тем не менее она, по-видимому, будет принята на рынке как недорогое и совместимое с традиционными технологиями решение.