Современные внутренние шины – смена приоритетов!
Среди наиболее динамично развивающихся областей компьютерной техники стоит отметить сферу технологий передачи данных: в отличие от сферы вычислений, где наблюдается продолжительное и устойчивое развитие параллельных архитектур, в «шинной»1 сфере, как среди внутренних, так и среди периферийных шин, наблюдается тенденция перехода от синхронных параллельных шин к высокочастотным последовательным. (Заметьте, «последовательные» – не обязательно значит «однобитные», здесь возможны и 2, и 8, и 32 бит ширины при сохранении присущей последовательным шинам пакетной передачи данных, то есть в пакете импульсов данные, адрес, CRC и другая служебная информация разделены на логическом уровне2).
1Компьютерная шина (магистраль передачи данных между отдельными функциональными блоками компьютера) – совокупность сигнальных линий, объединённых по их назначению (данные, адреса, управление), которые имеют определённые электрические характеристики и протоколы передачи информации. Шины отличаются разрядностью, способом передачи сигнала (последовательные или параллельные), пропускной способностью, количеством и типами поддерживаемых устройств, протоколом работы, назначением (внутренняя, интерфейсная).
Шины могут быть синхронными (осуществляющими передачу данных только по тактовым импульсам) и асинхронными (осуществляющими передачу данных в произвольные моменты времени), а также могут использовать мультиплексирование (передачу адреса и данных по одним и тем же линиям) и различные схемы арбитража (то есть способа совместного использования шины несколькими устройствами).
2Основным отличием параллельных шин от последовательных является сам способ передачи данных. В параллельных шинах понятие «ширина шины» соответствует её разрядности – количеству сигнальных линий, или, другими словами, количеству одновременно передаваемых («выставляемых на шину») битов информации. Сигналом для старта и завершения цикла приёма/передачи данных служит внешний синхросигнал. В последовательных же каналах передачи используется одна сигнальная линия (возможно использование двух отдельных каналов для разделения потоков приёма-передачи). Соответственно, информационные биты здесь передаются последовательно. Данные для передачи через последовательную шину облекаются в пакеты (пакет – единица информации, передаваемая как целое между двумя устройствами), в которые, помимо собственно полезных данных, включается некоторое количество служебной информации: старт-биты, заголовки пакетов, синхросигналы, биты чётности или контрольные суммы, стоп-биты и т. п. Но в свете последних достижений в «железной» сфере компьютерной индустрии малое количество сигнальных линий и логически более сложный механизм передачи данных последовательных шин оборачиваются для них существенным преимуществом – возможностью практически безболезненного наращивания рабочих частот в таких пределах, каких никогда не достичь громоздким параллельным шинам с их высокочастотными проблемами ожидания доставки каждого бита к месту назначения. Проблема в том, что каждая линия такой шины имеет свою длину, свою паразитную ёмкость и индуктивность и, соответственно, своё время прохождения сигнала от источника к приёмнику, который вынужден выжидать дополнительное время для гарантии получения данных по всем линиям. Так, к примеру, каждый байт, передаваемый через линк шины PCIExpress, для увеличения помехозащищённости «раздувается» до 10 бит, что, однако, не мешает шине передавать до 0,25 ГБ за секунду по одной паре проводов. Да, ширина последовательной шины на самом деле является количеством одновременно задействованных отдельных последовательных каналов передачи.
Все эти нововведения и смена приоритетов преследуют в конечном итоге одну цель – повышение суммарного быстродействия системы, ибо не все существующие архитектурные решения способны эффективно масштабироваться. Несоответствие пропускной способности шин потребностям обслуживаемых ими устройств приводит к эффекту «бутылочного горлышка» и препятствует росту быстродействия даже при дальнейшем увеличении производительности вычислительных компонентов – процессора, оперативной памяти, видеосистемы и так далее.
Процессорная шина
Любой процессор архитектуры x86CPU обязательно оснащён процессорной шиной. Эта шина служит каналом связи между процессором и всеми остальными устройствами в компьютере: памятью, видеокартой, жёстким диском и так далее. Так, классическая схема организации внешнего интерфейса процессора (используемая, к примеру, компанией Intel в своих процессорах архитектуры х86) предполагает, что параллельная мультиплексированная процессорная шина, которую принято называть FSB (Front Side Bus), соединяет процессор (иногда два процессора или даже больше) и контроллер, обеспечивающий доступ к оперативной памяти и внешним устройствам. Этот контроллер обычно называют северным мостом , он входит в состав набора системной логики ( чипсета ).
Используемая Intel в настоящее время эволюция FSB – QPB , или Quad-Pumped Bus, способна передавать четыре блока данных за такт и два адреса за такт! То есть за каждый такт синхронизации шины по ней может быть передана команда либо четыре порции данных (напомним, что шина FSB–QPB имеет ширину 64 бит, то есть за такт может быть передано до 4х64=256 бит, или 32 байт данных). Итого, скажем, для частоты FSB, равной 200 МГц, эффективная частота передачи адреса для выборки данных будет эквивалентна 400 МГц (2х200 МГц), а самих данных – 800 МГц (4х200 МГц)3.
3Кстати, именно результирующей «учетверённой» частотой передачи данных (как и в случае с «удвоенной» передачей DDR-шины, где данные передаются дважды за такт) хвастаются производители и продавцы, умалчивая тот факт, что для многочисленных мелких запросов, где данные в большинстве своём умещаются в одну 64-байтную порцию (и, соответственно, не используются возможности DDR или QDR/QPB), на чтение/запись важнее именно частота тактирования.
В архитектуре же AMD64 (и её микроархитектуре K8), используемой компанией AMD в своих процессорах линеек Athlon 64/Sempron/Opteron, применён революционно новый подход к организации интерфейса центрального процессора – здесь имеет место наличие в самом процессоре нескольких отдельных шин. Одна (или две – в случае двухканального контроллера памяти) шина служит для непосредственной связи процессора с памятью, а вместо процессорной шины FSB и для сообщения с другими процессорами используются высокоскоростные шины HyperTransport. Преимуществом данной схемы является уменьшение задержек (латентности) при обращении процессора к оперативной памяти, ведь из пути следования данных по маршруту «процессор – ОЗУ» (и обратно) исключаются такие весьма загруженные элементы, как интерфейсная шина и контроллер северного моста.
Ещё одним довольно заметным отличием архитектуры К8 является отказ от асинхронности, то есть обеспечение синхронной работы процессорного ядра, ОЗУ и шины HyperTransport, частоты которых привязаны к «шине» тактового генератора (НТТ), которая в этом случае является опорной. Таким образом, для процессора архитектуры К8 частоты ядра и шины HyperTransport задаются множителями по отношению к НТТ, а частота шины памяти выставляется делителем от частоты ядра процессора4
4Пример: для системы на базе процессора Athlon 64-3000+ (1,8 ГГц) с установленной памятью DDR-333 стандартная частота ядра (1,8 ГГц) достигается умножением на 9 частоты НТТ, равной 200 МГц, стандартная частота шины HyperTransport (1 ГГц) – умножением НТТ на 5, а частота шины памяти (166 МГц) – делением частоты ядра на 11.
В классической же схеме с шиной FSB и контроллером памяти, вынесенным в северный мост, возможна (и используется) асинхронность шин FSB и ОЗУ, а опорной частотой для процессора выступает частота тактирования5 (а не передачи данных) шины FSB, частота же тактирования шины памяти может задаваться отдельно. Из наиболее свежих чипсетов возможностью раздельного задания частот FSB и памяти обладает NVIDIA nForce 680i SLI, что делает его отличным выбором для тонкой настройки системы (разгона).
5Пример: процессор Intel Celeron 1,7GHz Willamette с заявленной на коробке частотой шины FSB-QPB 400 МГц, тем не менее, имеет коэффициент умножения 17 (1700=100*17), а не 4,5.
HyperTransport
HyperTransport – это прежде всего технология, управлением спецификациями и продвижением которой занимается HyperTransport Technology Consortium, куда входят такие компании, как Advanced Micro Devices (AMD), Alliance Semiconductor, Apple Computer, Broadcom Corporation, Cisco Systems, NVIDIA, PMC-Sierra, Sun Microsystems, Transmeta и ещё более 140 малых и больших компаний.
Основные особенности и возможности, предоставляемые технологией HyperTransport
Технология HyperTransport (ранее известная как Lightning Data Transport) – это последовательная (пакетная) связь, построенная по схеме peer-to-peer (точка-точка), обеспечивающая высокую скорость при низкой латентности (low-latency responses). HyperTransport имеет оригинальную топологию на основе линков, тоннелей, цепей (цепь – последовательное объединение нескольких туннелей) и мостов (мост выполняет маршрутизацию пакетов между отдельными цепями), что позволяет этой архитектуре легко масштабироваться. Иными словами, HyperTransport призвана упростить внутрисистемные сообщения (передачи) посредством замены существующего физического уровня передачи существующих шин и мостов, а также снизить количество узких мест и задержек. При всех этих достоинствах HyperTransport характеризуется также малым числом выводов (low pin counts) и низкой стоимостью внедрения. HyperTransport поддерживает автоматическое определение ширины шины6, допуская ширину от 2 до 32 бит в каждом направлении, использует Double Data Rate, или DDR (данные посылаются как по переднему, так и по заднему фронтам сигнала синхронизации), кроме того, она позволяет передавать асимметричные потоки данных к периферийным устройствам и от них.
6Несмотря на присутствие такого параметра, как ширина , шина HyperTransport является последовательной, что не позволяет соотносить ширину шины с её разрядностью.
На данный момент консорциумом HyperTransport разработана уже третья версия спецификации, согласно которой шина HyperTransport может работать на частотах до 2,6 ГГц (сравните с шиной PCI и её 33 или 66 МГц). Это позволяет передавать до 5200 миллионов пакетов в секунду при частоте сигнала синхронизации 2,6 ГГц; частота сигнала синхронизации настраивается автоматически.
Полноразмерная (32-битная) полноскоростная (2,6 ГГц) шина способна обеспечить пропускную способность до 20800 МБ/с (2*(32/8)*2600) в каждую сторону, являясь на сегодняшний день самой быстрой шиной среди себе подобных.
Самые известные решения c использованием HyperTransport:
- шина, созданная по технологии HyperTransport, является основной шиной, используемой в процессорах восьмого поколения компании AMD – Athlon 64 и Opteron, а также внутри поддерживающих их устройств: концентратора ввода-вывода (I/O hub) AMD-8111, AMD-8131 PCI-X tunnel и AMD-8151 AGP 3.0 graphics tunnel
- SiPackets предлагает мост между HyperTransport и PCI (HyperTransport-to-PCI bridge)7
7Напомним, что к процессору х86-архитектуры нельзя напрямую подключать устройства с шинами PCI, так как этот процессор использует свою специализированную процессорную шину, которая, однако, может быть различной у разных процессоров.
- соединение между северным и южным мостами в чипсетах NVIDIA nForce (nForce-nForce 6)
- платформенная архитектура обработки данных NVIDIA (NVIDIA nForce Platform Processing Architecture), включающая встроенный графический процессор NVIDIA (NVIDIA nForce Integrated Graphics Processor (IGP) и процессор передачи данных NVIDIA (NVIDIA nForce Media and Communications Processor (MCP)
- соединение между мостами в чипсете ATI Radeon® Xpress 200 для процессоров AMD
- консольный чипсет игровой приставки Xbox фирмы Microsoft (Microsoft Xbox)
- системный контроллер ServerWorks HT-2000 HyperTransport™ SystemI/O™ Controller
- компьютеры фирмы Apple с процессором PowerPC G5
PCI
Вот уже более десяти лет PCI – шина для подключения периферийных устройств к материнской плате компьютера – находится внутри практически каждого компьютера и, даже несмотря на моральное устаревание и уже недостаточную пропускную способность, продолжает (пока ещё) оставаться основной шиной для подключения к системе внешних устройств. Тем не менее она неуклонно сдаёт позиции новой последовательной шине PCI-Express, о которой чуть ниже.
В далёком 1991 году компания Intel представила первую спецификацию системной шины PCI – Peripheral Component Interconnect (дословно: взаимосвязь периферийных компонентов). А в 1993 году уже началось активное продвижение на рынок шины PCI 2.0, которая дала толчок увеличению числа ориентированных на неё продуктов и довольно быстро вытеснила изрядно устаревшие к тому времени шины ISA и EISA.
Причины успеха PCI – это гораздо большая скорость и возможность динамического конфигурирования периферийных устройств, подключённых к PCI (чего не было в ISA), то есть распределения ресурсов между периферийными устройствами наиболее приемлемым в данный момент времени образом и без постороннего вмешательства.
Основные тактико-технические характеристики PCI 2.0:
- частота шины – 33,33 МГц, передача синхронная
- разрядность шины – 32 бит
- пиковая пропускная способность – 133 Мбит/с
- адресное пространство памяти – 32 бит (4 Гбайт)
- адресное пространство портов ввода-вывода – 32 бит (4 Гбайт)
- количество подключаемых устройств – до четырёх (для увеличения их количества используется мост PCI-to-PCI)
- конфигурационное адресное пространство (для одной функции) 256 байт
- напряжение 3,3 или 5 В
Вскоре PCI «взяли на вооружение» также платформы с процессорами Alpha, MIPS, PowerPC, SPARC и другие.
Ещё большее распространение получил стандарт 2.2.
Отличия PCI 2.2 от 2.0:
- возможность одновременной работы нескольких устройств bus-master (так называемый конкурентный режим)
- появление универсальных карт расширения, способных работать как в слотах 5 В, так и в 3,3 В
- появились расширения PCI66 и PCI64 (ширина шины может быть увеличена до 64 бит, а также допускается разгон тактовой частоты до 66 МГц – вдвое по сравнению с PCI 2.0)
- сделанные в соответствии с этими стандартами карты расширения имеют универсальный разъём и способны работать практически во всех более поздних разновидностях слотов шины PCI, а также, в некоторых случаях, и в слотах 2.1
Со времён анонса PCI 2.0 разработкой и продвижением стандарта занимается специальная организация – консорциум PCI-SIG (Special Interest Group), она же занимается продвижением PCI Express.
Существует множество вариаций на тему PCI 2.Х, наиболее распространённые из которых:
- AGP – разработана на базе PCI 2.1 и предназначена для использования с графическими адаптерами, характеризуется отсутствием арбитража интерфейса, то есть допускается подключение к этой шине только одного устройства, также устранена мультиплексированность
- PCI-X – ускоренная до 133 МГц (также выпускались варианты с 266 и 533 МГц) шина PCI 2.2 с обязательно 64-битной разрядностью интерфейса
- Compact-PCI – системная шина, широко используемая в промышленной автоматике. Электрически шина соответствует обычной PCI и обычно использует тот же набор микросхем, но физически разъём выполнен по-другому, что позволяет использовать «горячее» подключение плат
- mini-PCI – применяется в портативных компьютерах
- Card Bus (32-разрядная версия стандарта PCMCIA, допускающая «горячее» подключение)
Сводная таблица конструктивов карт и слотов в зависимости от версии стандарта
Стандарт | Макс. Скорость, Мб/с | Тип слота | Тип карты |
PCI 1.x-2.0 | 133 | 32 бит, 5 В | 32 бит, 5 В |
PCI 2.1-2.3 33 MГц | 133 | 32 бит, 5 В | 32 бит, 5 В / универсальный |
PCI 2.2-2.3 66 MГц | 266 | 32 бит, 3,3 В | 32 бит, 3,3 В / универсальный |
PCI64 33 МГц (v 2.1) | 266 | 64 бит, 5 В | 64 бит, 5 В / универсальный |
PCI64 33 МГц (v 2.2) | 266 | 64 бит, 3,3 В | 64 бит, 3,3 В / универсальный |
PCI64 66 МГц | 533 | 64 бит, 3,3 В | 64 бит, 3,3 В / универсальный |
PCI-X 1.0 | 1024 | 64 бит, 3,3 В | 64 бит, 3,3 В / универсальный |
PCI-X 1.0 | 4096 | 64 бит, 3,3 В | 64 бит, 3,3 В |
Однако, как и многие параллельные шинные решения (те же Parallel ATA, SCSI), шина PCI в данное время находится на границе разумного масштабирования производительности, после которого «гонка частот и разрядности» приведёт к непозволительно высоким технологическим усложнениям и, соответственно, к затратам. Но на данный момент проблема эффективной масштабируемости и наращивания уже решена, ведь в компьютерной индустрии уже полным ходом идёт переезд с PCI на новую последовательную шину PCI-Express.
PCI-Express
Разработка рабочей группой Arapahoe, основанной компаниями Compaq, Dell, IBM, Intel и Microsoft при участии организации PCI-SIG, нового межкомпонентного интерфейса была начата фирмой Intel еще тогда, когда только ожидался выход в свет AGP 3.0 (он же AGP 8х). Так, программную модель PCI планировали унаследовать и в новом интерфейсе, чтобы системы и контроллеры могли быть доработаны для использования новой шины путём замены только физического уровня, без доработки программного обеспечения. Сам же интерфейс должен был быть последовательным. Это означало, во-первых, однозначное подключение «точка-точка», исключающее арбитраж шины и перетасовку ресурсов (как частный случай – прерываний). Во-вторых, упрощалась схемотехника, разводка и монтаж. В-третьих, экономилось место.
Анонс первой базовой спецификации PCI-Express состоялся в июле 2002 года, когда уже стало ясно, что PCI-Express – это последовательный интерфейс, нацеленный на использование в качестве локальной шины и имеющий много общего с сетевой организацией обмена данными, в частности, топологию типа «звезда» и стек протоколов.
Для взаимодействия с остальными узлами ПК, которые так или иначе обходятся собственными шинами, основной связующий компонент системной платы – Root Complex Hub (узел, являющийся перекрёстком процессорной шины, шины памяти и PCI-Express) – предусматривает систему мостов и свитчей. Логика всей структуры такова, что любые межкомпонентные соединения непременно оказываются построенными по принципу «точка-точка», свитчи-коммутаторы выполняют однозначную маршрутизацию пакета от отправителя к получателю.
Соединение между двумя устройствами PCI Express называется link и состоит из одного (называемого 1x) или нескольких (2x, 4x, 8x, 12x, 16x и 32x) двунаправленных последовательных соединений lane. Каждое устройство должно поддерживать соединение 1x.
Таблица Пропускная способность шины PCI Express с разным количеством связей
Число линий PCI Express (lane count) | Пропускная способность соединения (link) в одном направлении | Суммарная пропускная способность соединения (link) |
1 | 250 Мбайт/с | 500 Мбайт/с |
2 | 500 Мбайт/с | 1 Гбайт/с |
4 | 1 Гбайт/с | 2 Гбайт/с |
8 | 2 Гбайт/с | 4 Гбайт/с |
16 | 4 Гбайт/с | 8 Гбайт/с |
32 | 8 Гбайт/с | 16 Гбайт/с |
В спецификации PCI-Express 2.0 планируется увеличить пропускную способность lane до 5 Гбит/с при сохранении совместимости с PCI-Express 1.1.
Кроме всего прочего, PCI Express предлагает:
- стек протоколов, каждый уровень которого может быть усовершенствован, упрощён или заменён, не влияя на остальные. Например: может быть использован иной носитель сигнала – или может быть упразднена маршрутизация в случае выделенного канала только для одного устройства (как в случае PCI Express x16 для графики)
- возможности «горячей» замены карт (заложены в спецификации, опционально реализуются в серверных системах)
- возможности создания виртуальных каналов, гарантирования пропускной полосы и времени отклика, сбора статистики QoS (Quality of Service – качество обслуживания)8
- возможности контроля целостности передаваемых данных (CRC)8
- поддержка технологий энергосбережения (ACPI)8
8Заложены в изначальной спецификации.
Итоги
Как мы видим, последовательные интерфейсы пришли в компьютерную индустрию всерьёз и надолго. Не за горами времена, когда такие почётные долгожители, как PCI, IDE(PATA), SCSI, совсем уйдут со сцены, ибо преемники – PCI Express, Serial ATA, Serial Attached SCSI – уже агрессивно отвоёвывают позиции у «старичков». В стане процессорных шин пока паритет – архитектура K8 компании AMD c организацией процессорной шины на основе HyperTransport уже зарекомендовала себя как удачное решение, но и компания Intel с «последней редакцией» параллельной шины FSB (QPB) чувствует себя довольно уверенно и не собирается от неё отказываться.
Что касается возможной войны технологий PCI Express и HyperTransport, то здесь не тот случай – уж слишком разные сферы применения уготованы разработчиками этим решениям. Для вторжения в сферу сверхбыстрых передач у PCI Express недостаточно пропускной способности (максимум 8 ГБ/с для х16 против 41 ГБ/с у HyperTransport). Что касается работы HyperTransport с периферийными контроллерами, то данная шина не обладает для этого достаточными возможностями протоколов в силу своего изначального предназначения – замены процессорной шины, первое упоминание о «горячем» подключении появилось лишь в спецификации HyperTransport 3.0, да и стандартом пока что не предусмотрено внешних разъёмов.