В процессе развития персональных платформ не раз случалось так, что системные требования опережали возможности чипсета. Это стимулировало производителей платформ использовать узлы, внешние по отношению к микросхемам системной логики, что иногда преподносило неприятные сюрпризы.
Сейчас мало кто вспомнит каскад проблем, преследующих набор логики Intel для процессоров Pentium под названием NX430. Недостатком чипсета было отсутствие в его составе контроллера жестких магнитных дисков.
Хотя этой истории уже почти 20 лет, но поучительным остается желание доминировать на рынке настольных систем наперекор здравому смыслу. Вместо того чтобы потратить еще пол-года на интеграцию IDE-контроллера в чипсет, компания Intel прибегла к услугам малоизвестной в то время лаборатории, закупив у нее для платформы Plato контроллер RZ1000.
Расхлебывали проблемы долго. Их отголоски до сих пор можно найти в базе поддержки Microsoft под номером 151837. Но, как известно, история учит тому, что она ничему не учит :-)
Первые шаги PCI Express
Первые наборы системной логики Intel для Socket 775 с поддержкой шины PCI Express (i915, i925) появились в 2004 году и использовали следующую конфигурацию:
1) В составе северного моста размещается контроллер порта PCI Express x16, имеющий высокую пропускную способность и низкую латентность при доступе к оперативной памяти, так как расположен он на одном кристалле с контроллером памяти. Этот порт ориентирован на подключение видеоадаптера. Несмотря на теоретическую универсальность стандарта PCI Express и хорошую аппаратную совместимость, ряд факторов, среди которых несовершенство BIOS и необходимость соблюдения традиций, связанных с Legacy VGA, приводили к тому, что на большинстве платформ данного типа, в слоте PCI Express x16 никакое другое устройство, кроме видеоадаптера, не работало.
2) В составе южного моста размещаются контроллеры портов PCI Express x1. Обычно используется от 1 до 4 портов. Из-за уменьшенной разрядности их пропускная способность ниже, а задержки при доступе к ОЗУ – больше, так как они расположены «дальше» от контроллера памяти. В отличие от порта x16, находящегося в северном мосте, их трафик загружает DMI-шину связи между мостами. Такие порты ориентированы на устройства, генерирующие небольшой по сравнению с видео акселератором трафик, например, звуковой адаптер или IDE-контроллер.
Забегая вперед, отметим, что в современных платформах, например, Intel Socket 1155, северный мост чипсета, включая контроллер памяти и контроллер PCI Express, интегрирован в центральный процессор.
Требования возрастают
В 2004 году NVidia представила технологию SLI, позволяющую использовать более одного видеоадаптера в системе с масштабированием производительности. Несколько позже, ATI представила свою технологию — CrossFire.
Но масштабирование производительности – не единственная причина для установки нескольких видеоадаптеров. Иногда это требуется для подключения заданного количества мониторов.
Вышеописанная конфигурация платформы, ориентированная на один видеоадаптер, требовала модернизации.
Три варианта реализации Multi-GPU или шинная топология как математическая формализация несовершенства бытия
С точки зрения поддержки конфигурации с двумя видеоадаптерами, платформы можно разделить на три вида:
1) Платформы, реализованные на основе архитектуры системной логики, не имеющей каких-либо специальных средств поддержки более одного видео адаптера. Ряд производителей, например ASRock, выпустили платы, в которых для подключения второго видеоадаптера используется один из портов PCI Express, реализованных в южном мосте. Как было показано выше, такая схема работает в режиме x1, обладает низкой пропускной способностью и высокой латентностью. Кроме того, трафик, генерируемый видеоадаптером, загружает шину связи между мостами. Отметим, что подобная схема используется и на некоторых платах, поддерживающих только один видеоадаптер, что позволяет производителю платы возложить поддержку видеоадаптера на южный мост и применить дешевый северный мост без поддержки PCIe-шины.
2) Платформы, у которых северный мост имеет 16 линий PCI Express и поддерживает так называемый режим бифуркации, в котором один порт x16 может использоваться как два порта x8. При этом если разработчик платформы ставит задачу, чтобы переход в режим x8 происходил только при использовании двух видеоадаптеров, а в случае установки одного видео адаптера, когда 8 старших линий порта не заняты вторым адаптером, использовался режим x16, необходима коммутация 8 старших линий порта. В ранних платформах данного типа коммутация выполнялась механически – с помощью дочерней платы, установленной в разъем на материнской плате с разворотом на 180 градусов в зависимости от конфигурации - Dual/Single Video. Затем стали использовать электронные коммутаторы, например Pericom PI2PCIE2412. Примеры таких платформ: Intel P45 для Socket 775.
Системная плата Gigabyte GA-EP45-DS5 с четырьмя Mux/DeMux Switch чипами PI2PCIE2412 производства Pericom Semiconductor Corp. На дальнем (оранжевом) PCIe-слоте отсутствуют ламели по линиям старших разрядов.
3) Платформы с полноценной поддержкой двух портов PCI Express x16, не требующие переключения на меньшую разрядность при установке двух видеоадаптеров. На каждый PCIe-слот подключена отдельная группа сигналов от северного моста чипсета или процессора, внешние коммутационные элементы не используются (здесь мы не рассматриваем подключение более двух видеоадаптеров).
Примеры таких платформ: Intel X48 для Socket 775, Intel X58 для Socket 1366, а также северный мост, интегрированный в процессоры Intel Socket 2011.
Электронные коммутаторы PCIe-шины, производства Pericom
Функциональная схема микросхемы Pericom PI2PCIE2412 показана ниже:
Микросхема PI2PCIE2412 содержит систему электронных ключей, позволяющих поразрядно коммутировать 8 сигнальных линий. При низком уровне управляющего сигнала SEL 8 линий группы A соединены с линиями группы B. При высоком уровне SEL линии группы A соединены с линиями группы C. Для обеспечения режима бифуркации 16=8+8 требуется 4 такие микросхемы, так как коммутация 8 разрядов шины PCI Express требует коммутации 4*8=32 физических линий. Напомним, что для каждого разряда, представленного двумя дифференциальными парами, требуется четыре физических линии: RX(i)+ , RX(i)- , TX(i)+ , TX(i)-, соответственно одна такая микросхема может обслуживать 2 разряда PCI Express. Микросхема поддерживает скорость обмена до 5.0 Gbps, что соответствует PCI Express 2.0. Напряжение питания 1.8V.
PI3PCIE2415 отличается напряжением питания (+3.3V) и динамическими характеристиками. Также содержит систему электронных ключей, позволяющих поразрядно коммутировать 8 сигнальных линий, соответственно может обслуживать 2 разряда PCI Express. Поддерживает скорость обмена до 5.0 Gbps.
PI2PCIE212 содержит систему электронных ключей, позволяющих поразрядно коммутировать 4 сигнальных линии, соответственно одна такая микросхема может обслуживать 1 разряд PCI Express. Поддерживает скорость обмена до 2.5 Gbps. Напряжение питания 1.8V.
Что в итоге?
Как известно, использование дополнительных схем коммутации приводит к снижению надежности. Это относится к любой электрической цепи, но особенно актуально для шины PCI Express, работающей на скоростях передачи до 8 GT/S (миллиард пересылок в секунду). При проектировании современных платформ каждая пикосекунда на учете, и даже малейшие искажения сигналов, обусловленные неверно выбранной длиной проводников, могут оказаться фатальными. В таком контексте, мультиплексор, включенный по линиям PCIe Rx/Tx, напоминает «слона в посудной лавке». Кроме того, разделение шины на несколько коммутируемых секций существенно затрудняет поиск неисправностей и снижает ремонтопригодность платформы.
При оптимизации топологии платформы следует вспомнить и о том, что PCI Express порт в режиме бифуркации использует уменьшенную разрядность. Поэтому, в такой порт не рекомендуется устанавливать устройства, для которых фактором, ограничивающим производительность, является пропускная способность шины.
Таким образом, совет тем, кто собирается приобретать современную платформу: отдавать предпочтение следует решениям, в которых обслуживание PCI Express реализовано исключительно средствами набора системной логики без использования внешней коммутации. Гибкость, получаемая за счет такой коммутации, может обойтись неоправданно дорого.