PCI Express — технология будущего

Сергей Пахомов

День вчерашний

День сегодняшний

День завтрашний

Заключение

День вчерашний

Помните те времена, когда на всех материнских платах обязательно присутствовала шина ISA (Industrial Standard Architecture), еще в 1981 году разработанная компанией IBM? Первоначально шина ISA представляла собой 8-битную синхронную шину с 20-битной адресацией. Объем адресуемой памяти по такой шине составлял 1 Мбайт, а пропускная способность при частоте 4,77 МГц — всего 1,2 Мбайт/с.

В 1984 году на смену этой 8-битной шине пришла новая версия шины. Сохраняя совместимость с предыдущей версией, она имела уже 16 линий данных, то есть была 16-битной синхронной шиной. Кроме того, было увеличено и количество адресных линий, что позволяло адресовать 16 Мбайт памяти. Возросла и частота работы шины: она составила 8 МГц, что дало возможность увеличить пропускную способность до 5,3 Мбайт/с.

Впрочем, этой пропускной способности вскоре стало недостаточно, и на смену шине ISA пришла шина PCI. Были, конечно, и промежуточные варианты, например шина EISA, но именно PCI-шина стала значительным шагом вперед в архитектуре ПК.

В начало В начало

День сегодняшний

К разработке шины PCI (Peripheral Component Interconnect bus) в 1991 году приступила компания Intel, чтобы реализовать возможности нового поколения процессоров (начиная с Intel 486), и в результате в 1992 году шина PCI стала непременным атрибутом всех материнских плат.

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

Впрочем, это далеко не единственное новшество, которое было реализовано в шине PCI. Она может работать на частоте 33 или 66 МГц и является 32- или 64-разрядной. В настольных ПК применяются 33-мегагерцевые 32-разрядные шины, а 66-мегагерцевые шины с 64-разрядной адресацией используются в серверных платформах. Нетрудно рассчитать и пропускную способность различных PCI-шин. Для 33-мегагерцевой 32-битной шины пропускная способность составляет 132 Мбайт/с, для 66-мегагерцевой 32-битной  — 264 Мбайт/с, а для 66-мегагерцевой 64-битной — 528 Мбайт/с.

Несмотря на широкое распространение шины PCI, уже сейчас начинает заявлять о себе ее недостаточная производительность. Действительно, лихорадочная гонка с целью наращивания производительности ПК накладывает довольно жесткие требования на пропускную способность подсистемы ввода-вывода. Однако если быстродействие процессоров за последние десять лет увеличилось более чем в 10 раз, то рост пропускной способности подсистемы ввода-вывода куда более скромен. Особенно заметно отставание шины ввода-вывода в таком сегменте, как серверы. Появление высокоскоростных периферийных устройств на базе Ultra3 SCSI и Fibre Channel, гигабитных сетевых адаптеров требует использования высокопроизводительных шин ввода-вывода. Кроме того, с появлением процессоров Intel Pentium 4 и нового поколения серверных процессоров Intel Xeon значительно возросла и пропускная способность процессорной шины и шины памяти. К примеру, сейчас при частоте процессорной шины 533 МГц ее пропускная способность составляет 4,2 Гбайт/с. Налицо явный дисбаланс между возможностями процессорной подсистемы и подсистемы ввода-вывода.

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

Основное преимущество этой шины (во всяком случае, внешнее преимущество) заключается в ее большей пропускной способности. Являясь совместимой с шиной PCI, она может в то же время работать и на частоте 66 МГц, и на частоте 100 МГц, и даже на частоте 133 МГц. Будучи 64-разрядной, эта шина обеспечивает пропускную способность 1064 Мбайт/с при частоте 133 МГц, 800 Мбайт/с при частоте 100 МГц и 528 Мбайт/с при частоте 66 МГц.

Все сегменты PCI-X независимы, и каждый из них поддерживает от одного до четырех слотов PCI и/или down device и функцию горячей замены. При частоте 66 МГц допустимо использование четырех PCI-слотов, при частоте 100 МГц — двух, а при частоте 133 МГц — только одного PCI-слота.

Впрочем, возможность функционирования на более высоких частотах в шине PCI-X  — это только видимая часть айсберга. Данный протокол также имеет ряд новшеств, обеспечивающих возрастание производительности. К их числу относятся использование межрегистрового протокола (register-to-register protocol), введение атрибутивной фазы транзакции, счетчик байтов транзакций, механизм разделенных транзакций (split transactions) и т.д. Полное описание всех особенностей этого протокола выходит далеко за рамки данной статьи, поэтому ограничимся лишь общими замечаниями.

Новый межрегистровый протокол подразумевает несколько иную технику обработки транзакций по сравнению с традиционной спецификацией PCI. Дело в том, что в PCI декодирование полученного сигнала на обработку транзакции происходит на протяжении того же цикла, что и отправка. Таким образом, периферийное устройство должно декодировать полученный сигнал в течение того же такта, на котором происходит отправка, и на следующем такте выставить ответ. При частоте 66 МГц время одного такта составляет всего 15 нс, и с учетом задержки, вызванной распространением сигнала по шине, на декодирование остается только 3 нс. Собственно, именно это обстоятельство препятствует дальнейшему увеличению тактовой частоты PCI-шины без изменения самого протокола. В протоколе PCI-X эта проблема решается за счет использования межрегистрового протокола (register-to-register protocol). В соответствии с этим протоколом декодирование сигнала длится полный такт, а ответ посылается на втором такте. При этом количество тактов полной транзакции увеличивается на единицу, однако суммарное время ее обработки значительно уменьшается за счет высокой тактовой частоты.

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

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

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

В начало В начало

День завтрашний

Шина PCI Express разрабатывается корпорацией Intel совместно с многочисленными ведущими компаниями, такими как Dell, Hewlett-Packard, IBM и т.д. Она относится уже к третьему поколению архитектуры ввода-вывода и называется также 3GIO (Third Generation Input Output). Особенно важно, что новая архитектура PCI Express будет совместима на программном уровне с шиной PCI.

Прежде всего давайте разберемся в концептуальных идеях, заложенных в архитектуре PCI Express.

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

Итак, масштабируемость и универсальность — вот две основные концепции, заложенные в архитектуре новой шины PCI Express.

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

Масштабируемость шины PCI Express состоит в том, что шина позволяет наращивать пропускную способность от 2,5 Гбит/с вплоть до 10 Гбайт/с (80 Гбит/с). Для сравнения отметим, что пропускная способность шины PCI-X c частотой 133 МГц составляет 1,06 Гбит/с.

Это общие замечания по поводу новой архитектуры ввода-вывода, а теперь рассмотрим ее подробнее.

Основная особенность новой шины PCI Express заключается в том, что это не традиционная параллельная, а последовательная (!) шина, работающая по принципу «точка-точка» (peer-to-peer). На физическом уровне шина образована двумя парами проводников: одна пара служит для передачи данных, а вторая — для их приема (рис. 2). Впрочем, к физическому уровню шины мы еще вернемся, а пока отметим, что две такие пары позволяют организовать полосу пропускания 2,5 Гбит/с в одном направлении.

Естественно, что такой полосы пропускания может оказаться недостаточно. Кроме того, как же быть с масштабируемостью шины PCI Express? Для того чтобы обеспечить большую пропускную способность, поддерживается не одна, а несколько рассмотренных линий. Ширина одной линии с пропускной способностью 2,5 Гбит/с обозначается как x1; если используются две линии, то ширина линии будет х2. Первоначально на физическом уровне будет поддерживаться ширина линий х1, х2, х4, х8, х16 и х32. При этом при ширине линии х32 пропускная способность составит 80 Гбит/с или 10 Гбайт/с в одном направлении. Кроме того, 2,5 Гбит/с — это только начало. В дальнейшем скорость передачи по одной магистрали предполагается увеличить вплоть до 10 Гбит/с, что является теоретическим пределом для «медной пары». Да, цифры впечатляют! Такая масштабируемость шины PCI Express позволяет использовать ее для любых, даже самых требовательных к скорости, соединений, и вполне возможно, что в скором времени эта шина действительно заменит все остальные.

Физический уровень шины PCI Express можно разделить на два подуровня: подуровень физического доступа к среде передачи данных (Physical Media Attachment Layer, PMA) и подуровень физического кодирования (Physical Coding Sublayer, PCS) (рис. 3).

Как уже отмечалось, на физическом уровне линия PCI Express представляет собой две низковольтные дифференциальные пары проводов. Использование именно низковольтных дифференциальных сигналов (когда уровень сигнала в одном проводе измеряется относительно уровня сигнала в другом проводе) позволяет уменьшить влияние электромагнитных помех. Кроме того, с целью увеличения помехоустойчивости при передаче используется кодирование 8b/10b, которое производится на подуровне PCS. Смысл такого кодирования достаточно прост — каждая последовательность 8 бит при передаче заменяется последовательностью 10 бит в соответствии со специальной таблицей замены. При этом в исходной последовательности 8 бит содержится 256 различных комбинаций нулей и единиц, а в результирующей  — 1024. Данный подход позволяет избежать нежелательных последовательностей бит при передаче. Например, длинные последовательности логических нулей или единиц приводят к потере синхронизации. В результирующей последовательности можно отобрать комбинации (всего потребуется 256 комбинаций из 1024), в которых не встречаются длинные последовательности нулей и единиц — это приведет к улучшению самосинхронизирующих свойств кода. Кроме того, не все комбинации считаются разрешенными при передаче  — обнаружение запрещенной последовательности при приеме трактуется как наличие ошибки. Таким образом, избыточное кодирование позволяет приемнику распознавать ошибки.

Подуровень физического кодирования связан по 16-битному интерфейсу с верхним уровнем доступа к среде передачи данных (Media Access Level, MAC). Поэтому первоначально полученные по параллельному 16-битному интерфейсу данные разбиваются на группы по 8 бит, то есть частично сериализуются. Частота параллельного 16-битного интерфейса составляет 125 МГц, а после преобразования к 8-битному параллельному интерфейсу частота шины становится уже 250 МГц. После этого данные подвергаются кодированию 8b/10b и уже по 10-битному параллельному интерфейсу поступают на подуровень PMA, где преобразуются к последовательному типу и передаются непосредственно по линии связи, но уже на частоте 2,5 ГГц (рис. 4).

При приеме (рис. 5) данные на физическом уровне претерпевают обратный порядок преобразования, то есть первоначально данные с частотой 2,5 ГГц поступают в дифференциальный приемник, после чего преобразуются к параллельному 10-битному интерфейсу. По этому интерфейсу данные, уже с частотой 250 МГц, подвергаются декодированию 10b/8b и по 8-битному интерфейсу поступают в блок преобразования к параллельному 16-битному типу. По 16-битной шине с частотой 125 МГц данные передаются на верхние уровни.

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

В случае когда используется не одна линия для передачи данных, то есть при организации многомагистральной шины PCI Express (шины с шириной линий х1, х2, х4, х8, х16 или х32), управлением потока данных занимается специальный агент PCI Express, который распределяет поток данных перед тем, как отправить его по различным физическим линиям, а при приеме аналогичный агент собирает разные потоки данных в один (рис. 6).

Мы рассмотрели только физический уровень архитектуры PCI Express. Конечно, полное описание архитектуры этим не ограничивается. Кроме физического уровня, есть также уровень представления данных (Data Link Layer), уровень транзакций (Transaction Layer) и программный уровень (Software layer) (рис. 7).

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

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

На уровне транзакций каждый пакет данных снабжается заголовком, в котором содержится уникальный идентификатор пакета, а также степень приоритета пакета. Всего предусматривается три уровня приоритета: no-snoop, relaxedordering и priority. Первый уровень приоритета (no-snoop) означает отсутствие всякого приоритета. Пакеты с такой меткой передаются в последнюю очередь. Второй уровень приоритета (relaxedordering) — это уровень промежуточного приоритета, то есть пакеты с таким уровнем будут обрабатываться во вторую очередь. Ну и последний уровень приоритета (priority) — это наивысший уровень приоритета. Пакеты с данным уровнем обрабатываются в первую очередь. Такое деление пакетов данных по уровням приоритета позволяет организовать сложные алгоритмы обработки, чтобы потоки данных, требовательные к пропускной способности (например, потоки данных мультимедийных приложений), обрабатывались в первую очередь.

В начало В начало

Заключение

Архитектура PCI Express — это не просто новый вариант периферийной шины. Это действительно новая, последовательная архитектура, обладающая прекрасной масштабируемостью и способная долгие годы удовлетворять требованиям, предъявляемым к шинам ввода-вывода. К настоящему времени членами ассоциации разработчиков PCI Express стали уже более 30 ведущих компьютерных компаний. Базовая спецификация PCI Express была принята организацией PCI-SIG в середине этого года, а сами устройства, поддерживающие архитектуру PCI Express, должны появиться уже в 2004 году.

 

КомпьютерПресс 1'2003

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует