Архивы: по дате | по разделам | по авторам

Гипертранспорт

Архив
16.06.2004

Нынешняя шумиха вокруг шины PCI Express, поднятая не в последнюю очередь усилиями корпорации Intel, отодвинула на второй план еще одну очень прогрессивную технологию последовательной передачи данных — шину HyperTransport (далее HT), продвигаемую, в частности, корпорацией AMD и уже довольно долго используемую в индустрии.

Нынешняя шумиха вокруг шины PCI Express, поднятая не в последнюю очередь усилиями корпорации Intel, отодвинула на второй план еще одну очень прогрессивную технологию последовательной передачи данных - шину HyperTransport (далее HT), продвигаемую, в частности, корпорацией AMD и уже довольно долго используемую в индустрии. Вместе с тем в НТ заложено ничуть не меньше великолепных решений, и ее потенциал не хуже, чем у PCI Express, хотя и ориентированы они все же на разные применения.

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

Исторически HyperTransport разрабатывался AMD в качестве процессорной шины нового поколения специально для чипов с интегрированным контроллером памяти (архитектура AMD64). Напомним, что в многопроцессорных системах на основе AMD Opteron подсистема памяти "размазана" по всем процессорам - у каждого есть своя локальная память, подключенная через интегрированный контроллер, и каждый может обращаться к памяти любого другого процессора (рис. 1). Это позволяет увеличить производительность и объем подсистемы памяти (типичного "бутылочного горлышка" SMP-систем) пропорционально числу работающих с нею процессоров, тем самым заметно увеличивая масштабируемость системы1. Такая архитектура известна уже давно - например, процессоры Silicon Graphics (SGI) в мощных графических станциях. От них архитектура и получила свое название - Non-Uniform Memory Architecture (NUMA). "Неоднородная" она потому, что "накладные расходы" на обращение к разным участкам памяти сильно отличаются: локальная память "быстрая", а память соседа - "медленная", причем чем "дальше" расположен сосед, тем медленнее память. Медлительность является следствием того, что для обращения к соседу требуется проделать целый ряд операций - переслать по межпроцессорной шине запрос, дождаться его выполнения контроллером памяти адресата, вернуть данные по шине обратно. Очевидно, что чем быстрее при этом шина, тем более "однородна" память2. Исходя из этих соображений и проектировалась новая шина (тогда еще называвшаяся Lightning Transport), призванная обеспечить пропускную способность не меньшую, чем у оперативной памяти, и минимальные задержки на передачу данных и сообщений. Получилось действительно неплохо, что даже дало AMD повод назвать свою схему не NUMA, а SUMA - Slightly Uniform Memory Architecture, то есть "почти однородная" архитектура памяти.

Но разработчики не стали делать типичную быструю узкоспециализированную процессорную (системную) шину. Напротив, в соответствии с веяниями времени они соорудили очень быструю последовательную шину данных и предусмотрели возможности для ее "переноса" в более простые и медленные варианты с уменьшенными частотами и разрядностью (в отличие от PCI Express, которая масштабируется "вверх" - от x1 к х16 и x32). Продвижением ее занялся основанный в 2001 году HyperTransport Consortium.

Понятие "последовательная шина" вовсе не определяется ее однобитной шириной. Куда важнее то, что параллельные шины жестко привязаны к их физической реализации, а последовательные - передают любые данные посредством пакетов через некоторую абстрактную физическую среду. Поэтому HT (минимальная ширина которой - 2 бита) с полным правом может называться последовательной шиной - любые данные, передаваемые по ней, упаковываются в пакеты стандартного вида. Правда, требования скорости наложили на протокол передачи данных сильнейшие ограничения - столь изящной "layered architecture", как у Intel, мы здесь не увидим, да и влияние физической реализации линков HT на общую архитектуру шины очень заметно. Поэтому мы пойдем "снизу вверх" - от электрики к протоколам передачи.

Физический уровень

На схемотехническом уровне разводка НТ выглядит очень просто - в чем-то даже проще, нежели у PCI Express. Предусмотрены только соединения точка-точка, двунаправленные (одно направление на прием, другое на передачу), используется низковольтная дифференциальная сигнальная пара (напряжение высокого и низкого уровней +1,7 В и –0,3 В, импеданс 100 Ом, терминаторы шины встроены в кристаллы контроллеров). Возможно использование 2, 4, 8, 16 или 32 линий на каждое направление (каждая линия - два проводника), причем "ширина" направлений, в отличие от PCI Express, не обязана быть одинаковой (например, разрешается использовать 2 линии на прием и 32 на передачу, см. рис. 3).

Данные передаются по традиционной схеме DDR - есть дополнительные линии для тактового сигнала, передача данных синхронизируется по началу и окончанию каждого тактового импульса (то есть за такт данные передаются дважды). Передача и прием данных в НТ тактируются независимо, причем если ширина направления превышает 8 бит, то тактирующих линий больше одной - каждые 8 бит тактируются отдельной линией.3 Питание предусмотрено только для нужд самой шины - это линия +2,5 В, все остальное устройство HyperTransport должно питаться от внешнего источника. Для наглядности на рис. 3 показан пример структуры шины HT.

"Базовая" тактовая частота шины HT - 200 МГц (то есть частота передачи данных - 400 МГц). Это минимально возможная частота функционирования шины, она определяет и минимальную пропускную способность HT-линка: 2 бита (минимальная ширина направления) x 200 МГц (минимальная частота) x 2 (DDR) = 100 Мбайт/с. В отличие от PCI Express, где 20% от этой величины "съедает" кодирование "8/10", это "честные" 100 Мбайт/с, то есть теоретически все они доступны устройству (пакетирование, конечно, снизит реальную пропускную способность). Все последующие тактовые частоты определяются как кратные данной - 400 МГц, 600 МГц, 800 МГц (HyperTransport 1.0–1.1), 1000 МГц (последние ревизии HT 1.x и HT 2.0), 1200 и 1400 МГц (HT 2.0); см. табл. 1.

Из таблицы, например, видно, что даже на минимальной разводке (2+2 бита, 21 проводник, 400 Мбайт/с) 800-мегагерцовая HT давно позволяет получить производительность вдвое большую, чем PCI Express x1 (1+1 бит, 36 разъемов в слоте, 250 Мбайт/с). Производительность "старших" решений HT (32 бита) соответствует по скорости двухканальной памяти DDR400; следующий шаг дает производительность двух каналов DDR500, а HT 2.0 в принципе вполне достаточен для передачи данных от двухканальной памяти DDR2-800). Столь широкого спектра скоростей за глаза хватает для любых применений - от простейших до сверхпроизводительных. Неудивительно, что HT получил широчайшую поддержку в тех областях, где производительность критична (см. врезку в конце статьи) - эта шина с успехом используется помимо AMD Athlon 64/Opteron еще и в новейших процессорах Apple G5 (IBM) и сопутствующих чипсетах, в процессорах Transmeta, в разнообразных сетевых устройствах (Cisco, Broadcom), в чипсетах Nvidia и ALi/ULi.4

В принципе технология могла бы с легкостью занять место PCI Express. Этому мешает только неудобство протоколов передачи, которые, вообще говоря, можно было бы и перекрыть вышележащими протоколами, - но Intel предложила свою, совершенно иную альтернативу, а на разработку собственной шины общего назначения (3GIO) на базе HT у AMD, видимо, не хватило ресурсов.

Один из классических примеров реализации шины НТ - в процессорах AMD семейства K8 (Athlon 64/Opteron). Сегодняшние ревизии этих процессоров поддерживают от одного до трех линков HT в физической конфигурации 16x16 (16 бит в каждую сторону), частота до 800 МГц (максимальная пропускная способность каждого линка HT у этих процессоров - до 3,2 Гбайт/с). В процессорах Athlon 64 и Opteron серии 1xx - один линк HT, он задействуется на подключение периферии к процессору (рис. 2). Для построения полноценных многопроцессорных систем требуется еще хотя бы один линк HT для подключения других процессоров - и он появляется в процессорах Opteron серии 2xx (два линка) и 8xx (три линка). В общем-то, даже на Opteron 2xx можно было бы (соединяя их в длинную цепочку) строить многопроцессорные системы (рис. 2), но на практике это невыгодно - большое "расстояние" между крайними процессорами и фактически единственная шина HT на всех не способствуют высокой производительности такой системы. Поэтому "2xx" предназначаются лишь для построения двухпроцессорных систем. В серии 8xx трех линков вполне достаточно для создания сложных, сильно связанных топологий ("разорванный куб", например, где восемь процессоров логически располагаются в вершинах куба, а линки HT - ребра этого куба, причем одно из ребер разорвано, и два высвободившихся линка задействованы для подключения периферии). В ближайших ревизиях появится поддержка HT с частотой 1,0 ГГц.

Логический уровень

От физического уровня переходим к логическому. HT здесь устроен довольно необычно для пакетных систем - сказывается влияние физического уровня. Вся передаваемая информация четко разделяется на служебную и непосредственно данные. Для ее разграничения предназначается линия CTL (рис. 4). Пакет HT - это просто кусок данных, в котором что-то в определенном формате записано. В первом пакете будет передана вся служебная информация, а вторым (сразу же за первым) пойдут собственно данные - без всяких заголовков, единым куском. При этом в момент передачи пакета данных устройству может потребоваться срочно передать какой-то системный пакет - тогда передача первого пакета "прервется на полуслове", будет передан второй пакет, после чего передача данных возобновится.

Такая экзотическая на первый взгляд схема нужна для обеспечения экстремально низких задержек передачи сообщений: при достаточно широкой шине типичная задержка передачи сообщения в НТ составляет 1–2 такта! А ведь подобные задержки и определяют латентность контроллера памяти "удаленного" процессора.

Думаете, всё, больше ничего удивительного в протоколах HT нет? Ошибаетесь! CRC в HT не является свойством каких-то конкретных пакетов, это свойство шины в целом. Не подумайте, что CRC передается по отдельным линиям, как в параллельных шинах, нет. Просто поток данных логически "нарезается" на окна, и в каждом "окне" в определенный момент времени в передачу данных "вклинивается" 4-полутактный блок, в котором передается CRC предыдущего окна. Это позволяет сразу посчитать,5 какая часть производительности шины расходуется на обеспечение целостности передаваемых данных - всего-то 4/512=0,78%!

Обсуждать технические подробности - протоколы, форматы пакетов и прочее мы здесь не будем, - к счастью, в отличие от PCI Express (где за спецификации требуют от 500 до 3000 долларов!), спецификации HyperTransport легко найти в открытом доступе.6 Отметим лишь, что QoS и сложная маршрутизация уровня PCI Express отсутствуют - слишком высоки требования к быстродействию. Однако "необходимый минимум" для построения полноценной HT-системы из многих узлов есть. Отрадно, что программная модель HT целиком и полностью совпадает с таковой для "старой" шины PCI, однако, в отличие от PCI Express, HT не предоставляет никаких дополнительных расширений.

Выводы

Подводя итоги, отметим, что HT является высокоскоростной низколатентной последовательной шиной, масштабируемой "вниз", с неклассическими протоколами передачи данных и довольно необычной топологией. По скорости работы и удобству разводки HT перекрывает любые мыслимые потребности, однако возможности используемых протоколов не позволяют реализовывать сложную маршрутизацию (QoS, изохронность), обеспечиваемую PCI Express. Обеспечена стопроцентная совместимость со старыми PCI-драйверами. Никаких слотов для подключения внешних устройств (и тем более - внешних разъемов) стандартом не предусмотрено. Разумеется, о горячем подключении и речи не идет. Однако энергосберегающие функции есть. В общем, альтернатив для подключения таких высокоскоростных устройств, как CPU, HyperTransport на данный момент просто не имеет7, да и как "внутрикомпьютерная" шина HT почти идеальна.

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

Области применения технологии HyperTransport:

- Роутеры, хабы, свичи
- Серверы и рабочие станции
- Ноутбуки и десктопы
- TV- и видеоприставки
- Мобильные и наладонные
- Игровые консоли
- Встроенные системы




1 То есть установка в старые системы, например, четырех процессоров дает лишь немногим больше двукратного прироста производительность. Установка восьми процессоров вообще лишена всякого смысла. Интегрированные контроллеры памяти в каждом процессоре решают проблему нехватки пропускной способности памяти - в четырехпроцессорной системе на Opteron общая производительность будет соответствовать "восьмиканальному" (2x4) контроллеру памяти DDR.
2 Предельным случаем NUMA-архитектур можно с некоторой натяжкой считать кластеры. В этом случае "межпроцессорная шина" - высокоскоростное сетевое соединение. Накладные расходы при обращении к чужой памяти ужасающе велики.
3 Помимо линий данных в каждом направлении предусмотрена специальная линия передачи данных CTL (тактируется генератором сигнала для первых линий данного направления). К этому нужно добавить еще четыре общие для обоих направлений линии - традиционную PWROK (Power OK), линию сброса RESET# и линии LDTSTOP# и LDTREQ#, использующиеся для энергосбережения (сигнал по первой линии "выключает" линк HT, по второй - снова включает его).
4 В чипсетах Nvidia nForce и nForce2 (см. www.terralab.ru/system/14661, ,.../21660, .../20799 и .../21270) и последних ALi/ULi шина НТ имеет скорость 400 Мбайт/с в каждом из направлений, что позволяет с большим запасом использовать ее для удовлетворения скоростных потребностей всей возможной периферии, подключенной к южным мостам чипсетов.
5 Детали см. в расширенной версии этого обзора на www.terralab.ru/system/34101 .
6 HyperTransport I/O link specification 1.03 (www.hypertransport.org/docs/HT_IOLink_Spec.pdf ).
7 Исключение - шина Redwood от Rambus, см. следующую статью.
© ООО "Компьютерра-Онлайн", 1997-2021
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.