Шина pci e: Все, что вы хотели знать PCI Express
Содержание
только ли физические ограничения влияют на скорость передачи? / Хабр
Начну издалека. Прошлой зимой довелось мне делать USB-устройство с ядром, размещаемым в ПЛИС. Само собой, очень мне хотелось проверить реальную пропускную способность этой шины. Ведь в контроллере — там слишком много всего наверчено. Всегда можно сказать, что вот тут внесена задержка, или вон там. В случае же с ПЛИС — я вижу блок, прокачивающий данные, вот он сказал мне, что в нём данные есть. А вот я выставил, что всё обработано, и я готов принимать новую порцию (при этом, он уже принимает данные во второй буфер этой же конечной точки). Отлично, ставим готовность с первого же такта и смотрим, что получается, когда USB может «молотить» без остановки.
А получается удивительная вещь. Если USB 2.0 устройство воткнуто в «голубенький» разъём (это который USB 3.0), то скорость получается одна. Если в «чёрненький» — другая. Вот мой график зависимости скорости записи в USB от длины передаваемых данных. USB3 и USB2 — это тип разъёма, устройство всегда USB 2.0 HS.
Я пробовал в разных машинах. Результат — близок. Никто не мог объяснить мне этот феномен. Уже потом я нашёл наиболее вероятную причину. А причина очень проста. Вот свойства контроллера USB 2.0:
У контроллеров, управляющих «голубеньким» разъёмом такого нет. А разница — как раз примерно процентов 20.
Из этого мы делаем вывод, что не всегда ограничения пропускной способности определяются физическими свойствами шины. Иногда накладываются ещё какие-то вещи. Переходим с этими знаниями в наши дни.
Первичный эксперимент
Итак. Всё начиналось весьма буднично. Шла проверка одной программы. Проверялся процесс записи данных одновременно на несколько дисков. Аппаратура простая: имеется материнская плата с четырьмя PCIe-слотами. Во все слоты воткнуты совершенно одинаковые карточки с AHCI-контроллерами, каждый из которых поддерживает исключительно PCIe x1.
Каждая карта обслуживает 4 накопителя.
И вот выясняется следующий эффект. Берём один диск и начинаем записывать на него данные. Получаем скорость от 180 до 220 мегабайт в секунду (здесь и далее, мегабайт — это 1024*1024 байт):
Берём второй накопитель. Скорость записи на него — от 170 до 190 МБ/с:
Пишем сразу на оба — получаем просадку скорости:
Суммарная скорость получается в районе 290 МБ/с. Но удивительность состоит в том, что отлаживали (так получилось) эту программу мы на тех же накопителях, но на других каналах. И там всё было хорошо. Быстро перетыкаем в те каналы (они будут идти через другую карту), получаем прекрасную работу:
Куплю слот в хорошем районе
Сразу скажу, что винить во всём какие-то чужие компоненты не стоит. Здесь всё написано нами, начиная от самой программы, заканчивая драйверами. Так что весь путь прохождения данных может быть проконтролирован. Неизвестность наступает только когда запрос ушёл в аппаратуру.
После первичного разбора выяснилось, что скорость не ограничивается в «длинных» слотах PCIe и ограничивается в «коротких». Длинные — это куда можно вставить карты x16 (правда, один из них работает в режиме не выше x4), а короткие — только для карт x1.
Всё бы ничего, но контроллеры в текущих картах в принципе не могут работать в режиме, отличном от PCIex1. То есть, все контроллеры должны быть в абсолютно идентичных условиях, независимо от длины слота! Ан нет. Кто живёт в «длинном» — работает быстро, кто в «коротком» — медленно. Хорошо. А быстро — насколько быстро? Добавляем третий накопитель, пишем на все три.
В «коротких» слотах ограничение всё ещё в районе 290 МБ/с:
В «длинных» — в районе 400 МБ/с:
Я перерыл весь Интернет. Во-первых, через некоторое время я уже смеялся со статей, где говорится о том, что пропускная способность PCIe gen 1 и gen 2 для x1 составляет 250 и 500 МБ/с. Это «сырые» мегабайты. За счёт оверхеда (я использую это нерусское слово, чтобы обозначить служебный обмен, идущий по тем же линиям, что и основные данные) для gen 2 получается именно 400 мегабайт в секунду полезного потока. Во-вторых, я упорно не мог найти ничего про магическую цифру 290 (забегая вперёд — до сих пор не нашёл).
Отлично. Пытаемся глянуть на топологию включения наших контроллеров. Вот она (013-015 — это суффиксы имён устройств, по которым я сопоставил их, чтобы как-то различать). Зелёные —быстрые, красные — медленные.
Контроллер «015» мы даже не рассматриваем. Он живёт в привилегированном слоте, предназначенном для видеокарты. Но 013-й подключён к тому же коммутатору, что и 012-й с 014-м. Чем он отличается?
Отдельные статьи говорят, что разные карты могут отличаться параметрами Max Payload. Я изучил конфигурационное пространство всех карт — этот параметр стоит у всех в одном и том же, минимально возможном значении. Мало того, в документации на чипсет этой материнки сказано, что иного значения и быть не может.
В общем, я перерыл всё в конфигурационном пространстве — всё настроено идентично. А скорость разная! Многократно перечитал документацию на чипсет — никаких настроек пропускной способности. Приоритеты — да, что-то про них написано, но тесты же ведутся при полном отсутствии нагрузки по другим каналам! То есть дело не в них.
На всякий случай, я даже отключил работу программы по прерываниям. Нагрузка на процессор возросла до безумных величин, ведь теперь он постоянно тупо читает бит готовности, но показания скорости не изменились. Так что обвинить в проблемах эту подсистему тоже нельзя.
А что там у других плат?
Попробовали поменять материнскую плату на точно такую же. Никаких изменений. Попробовали заменить процессор (были основания считать, что он барахлит). Тоже никаких изменений скорости (но старый процессор и правда барахлил). Поставили материнскую плату более нового поколения — всё просто летает на всех слотах. Причём предельная скорость уже не 400, а 418 мегабайт в секунду, хоть в «длинных», хоть в «коротких» слотах:
Но здесь — никаких чудес. Привычным движением руки (за эти дни уже привык) считываем конфигурационное пространство и видим, что параметр Max Payload установлен не на 128, а на 256 байт.
Больше размер пакета — меньше количество пакетов. Меньше оверхед на их пересылку — больше полезных данных успевает пробежать за то же время. Всё верно.
Так кто же виноват?
Точного ответа на вопрос из заголовка, со ссылкой на документы, я не дам. Но мысль моя пошла по следующему пути: допустим, что ограничение потока задано внутри чипсета. Его нельзя программировать, оно задано намертво, но оно есть. Например, оно равно 290 мегабайт в секунду на каждую дифф. пару. Больше — режется уже где-то внутри чипсета на его внутренних механизмах. Поэтому в «длинном» слоте (куда можно воткнуть карты вплоть до x4) внутри чипсета для нашей карты ничего не режется, а мы упираемся в физический предел шины x1. В «коротком» же разъёме мы упираемся в это ограничение.
На самом деле, проверить это не просто, а очень просто. Втыкаем в 013-й слот не AHCI, а SAS-контроллер, который обслуживает сразу 8 накопителей и может работать в режимах PCIe вплоть до x4. Подключаем ему 4 шустрых SSD накопителя. Смотрим скорость записи — аж душа радуется:
Теперь добавляем те 4 диска, которые фигурировали в первых тестах. Скорость работы SSD предсказуемо просела:
Вычисляем суммарную скорость, проходящую через SAS-контроллер, получаем 1175 мегабайт в секунду. Делим на 4 (столько линий идёт в «длинный» слот), получаем… Барабанная дробь… 293 мегабайта в секунду. Где-то я это число уже видел!
Итак, в рамках данного проекта было доказано, что дело не в нашей программе или драйвере, а в странных ограничениях чипсета, которые наверняка «зашиты» намертво. Была выведена методика подбора материнских плат, которые могут быть использованы в проекте. А в целом, выводы делаем следующие.
Заключение
- Зачастую в реальной жизни аппаратура имеет меньшую производительность, чем теоретически возможная. Ограничения могут накладываться даже драйверами, как показано в случае USB. Иногда удаётся подобрать такую аппаратуру, которая (или драйверы которой) не имеет таких ограничений.
- Ограничения могут быть даже недокументированными, но чётко выраженными.
- Масса статей, в которых говорится, что одна дифференциальная пара PCIe gen. 1 и gen 2 даёт примерно 250 и 500 мегабайт в секунду, ошибочны. Они копируют друг у друга одну и ту же ошибку — мегабайт «сырых» данных в секунду. Оверхед накапливается на нескольких уровнях интерфейса. При Max Payload 128 байт, на PCIe gen2 реально получается около 400 мегабайт в секунду. В более новых поколениях PCIe всё должно быть чуть лучше, так как там физическое кодирование не 8b/10b, а более экономичное, но пока не найдено ни одного контроллера дисков, на которых можно было бы проверить это на практике.
Шины PCI-Express — презентация онлайн
Похожие презентации:
3D печать и 3D принтер
Видеокарта. Виды видеокарт
Анализ компании Apple
Трансформаторы тока и напряжения
Транзисторы
Устройство стиральной машины LG. Электрика
Конструкции распределительных устройств. (Лекция 15)
Электробезопасность. Правила технической эксплуатации электроустановок
Магнитные пускатели и контакторы
Работа на радиостанциях КВ и УКВ диапазонов. Антенны военных радиостанций. (Тема 5.1)
1. Шины PCI-Express
2. Что такое шина PCI-Express
• PCI Express, или PCIe, или PCI-E (также
известная как 3GIO for 3rd Generation I/O;
не путать с PCI-X и PXI) — компьютерная
шина (хотя на физическом уровне шиной не
является, будучи соединением типа «точкаточка»), использующая программную
модель шины PCI и
высокопроизводительный
физический протокол, основанный на
последовательной передаче данных.
3. Как выглядит шина PCI-Express
4. Новые возможности
• Горячее подключение устройств;
• Гарантированная скорость обмена
данными;
• Управление потреблением энергии;
• Контроль целостности передаваемой
информации;
5. Как работает шина PCI-Express
6. Пропускная способность
В одну/обе стороны в Гбит/с
Количество линий
x1
x2
x4
x8
x12
x16
x32
PCIe 1. 0
2/4
4/8
8/16
16/32
24/48
32/64
64/128
PCIe 2.0
4/8
8/16
16/32
32/64
48/96
64/128
128/256
PCIe 3.0
8/16
16/32
32/64
64/128
96/192
128/256
256/512
PCIe 4.0
16/32
32/64
64/128
128/256
192/384
256/512
512/1024
7. Канал PCI-Express
8. Пример системы на основе PCI Express
9. Обзор уровней PCI Express
10. Структура пакета для каждого уровня
11. Конфигурационное пространство
12. PCI-совместимый механизм доступа
Механизм доступа в конфигурационное
пространство PCI Express, совместимый с PCI,
поддерживает программную модель
конфигурационного пространства PCI в
соответствии со спецификацией PCI 2.3.
13. Расширенный конфигурационный механизм доступа PCI Express
14. PCI-совместимые конфигурационные регистры
15. Модель прерываний PCI Express
Модель прерываний PCI Express
поддерживает два механизма:
• эмуляцию INTx;
• поддержку сообщения о прерывании,
иначе MSI (Message Signaled Interrupt).
16. Разъемы
• MiniCard (Mini PCIe)
• ExpressCard
• AdvancedTCA
• Mobile PCI Express Module (MXM)
• Кабельные спецификации PCI
Express
• StackPC
17. Mini PCIe
Mini PCI Express — формат шины PCI Express
для портативных устройств.
Для этого стандарта разъёма выпускается
масса периферийных устройств:
WiFi карты
WiMax карты
GSM модемы
GPS приёмники
SSD накопители — Использует нестандартную
распиновку разъёма Mini PCI-E (SSD Mini PCI
Express)
Контроллеры USB (2.0 или 3.0), SATA (I, II или
III)
Контроллер COM-портов (RS232)
SMBus
Выводы для индикаторных светодиодов
Выводы подключения СИМ карт (для GSM
WCDMA)[1]
Имеет зарезервированные контакты (для
будущих устройств)
Питание 1.5 В и 3.3 В
18. SSD Mini PCI Express
PATA
SATA
USB
Питание 3.3 В
19. ExpressCard
Слоты ExpressCard на настоящее время (Ноябрь 2010)
применяются для подключения:[2]
Плат SSD накопителей
Контроллеров 1394/FireWire (iLINK)
Док-станций
Измерительных приборов
Памяти
Адаптеров карт памяти (CF, MS, SD, xD, и т. д.)
Мышей
Сетевых адаптеров
Параллельных портов
Адаптеров PC Card/PCMCIA
Расширения PCI
Расширения PCI Express
Дистанционного управления
Контроллеров SATA
Последовательных портов
Адаптеров SmartCard
ТВ-тюнеров
Контроллеров USB
Беспроводных сетевых адаптеров Wi-Fi
Беспроводных широкополосных интернет-адаптеров
(3G, CDMA, EVDO, GPRS, UMTS, и т. д.)
Звуковых карт для домашнего мультимедиа и
профессиональных аудио-интерфейсов.
20. PCI-Express — переход
Для облегчения перехода предусмотрен механизм совместимости с
программным обеспечением, написанным для PCI (драйверы устройств,
OS). Кроме того, разъемы PCI Express в отличие от PCI расположены на
другой стороне отведенной для карты расширения секции, т.е. могут
сосуществовать на одном месте с PCI разъемами. Пользователю
останется только выбирать какую карту он хочет вставить. В первую
очередь появление PCI Express ожидается в начальных серверных
(двухпроцессорных) платформах Intel в первой половине 2004 года,
затем в настольных платформах класса «Энтузиаст» и рабочих станциях
(в том же году). Насколько быстро PCI Express будет поддержана другими
производителями чипсетов не ясно, однако и NVIDIA и SIS отвечают на
вопрос утвердительно, хотя и не называют конкретные сроки. Уже давно
запланированы и готовятся к выходу в первой половине 2004 года
графические решения (ускорители) от NVIDIA и ATI, снабженные
встроенной поддержкой PCI Express х16. Множество других
производителей являются активными участниками разработки и
тестирования PCI Express и также намерены представить свои продукты
до конца 2004 года.
21. PCI Express 2.0
Основные нововведения в PCI Express 2.0:
• Увеличенная пропускная способность. Спецификация PCI Express 2.0 определяет
максимальную пропускную способность одной линии в 500 МБ/с, или 5 ГТ/с
(Гигатранзакций/с), при этом сохранена совместимость с PCI Express 1.x. Внесены
усовершенствования в протокол передачи между устройствами и программную модель.
Таким образом, плата расширения, поддерживающая стандарт PCIE 1. x может работать,
будучи установленной в слот PCIE 2.0. Устройства же с интерфейсом PCI Express 2.0 смогут
работать в материнских платах, оснащённых слотом PCI Express x16 поколения PCI Express 1.x,
но только на скорости 2,5 ГТ/с, так как старые чипсеты не могут поддерживать удвоенную
скорость передачи данных.
• Динамическое управление скоростью (для управления скоростью работы связи).
• Оповещение о пропускной способности (для оповещения ПО об изменениях скорости и
ширины шины).
• Расширения структуры возможностей[уточнить] — расширение управляющих регистров для
лучшего управления устройствами, слотами и интерконнектом).
• Службы управления доступом — опциональные возможности управления транзакциями
точка-точка.
• Управление таймаутом выполнения.
• Сброс на уровне функций — опциональный механизм для сброса функций (англ.PCI funcs)
внутри устройства (англ. PCI device).
• Переопределение предела по мощности (для переопределения лимита мощности слота при
присоединении устройств, потребляющих бо́ льшую мощность).
22. PCI Express 3.0
В ноябре 2010 года были утверждены спецификации версии PCI Express 3.0.
Интерфейс обладает скоростью передачи данных 8 GT/s(Гигатранзакций/с). Но,
несмотря на это, его реальная пропускная способность всё равно была увеличена
вдвое по сравнению со стандартом PCI Express 2.0. Этого удалось достигнуть
благодаря более агрессивной схеме кодирования 128b/130b, когда 128 бит
данных, пересылаемых по шине, кодируются 130 битами. При этом сохранилась
полная совместимость с предыдущими версиями PCI Express. Карты PCI Express
1.x и 2.x будут работать в разъёме 3.0 и наоборот карта PCI Express 3.0 будет
работать в разъёмах 1.х и 2.х. По данным PCI-SIG, первые тесты PCI Express 3.0
начались в 2011 году, средства для проверки совместимости для партнеров
появились лишь в середине 2011-го, а реальные устройства ― только в 2012-м.
Компания MSI стала первым в мире производителем, выпустившим материнскую
плату с поддержкой стандарта PCI Express 3. 0.
Летом 2011 года Gigabyte официально представила материнскую плату G1.Sniper
2, построенную на чипсете Intel Z68 и поддерживающую интерфейс PCI Express
3.0.
23. PCI Express 4.0
PCI Special Interest Group (PCI SIG) заявила, что
PCI Express 4.0 может быть стандартизирован
до конца 2015 года. Ожидается, он будет
иметь пропускную способность 16 GT/s или
более, то есть будет в два раза быстрее PCIe
3.0.
24. Примеры PCI-Express устройств
Видеокарта GIGABYTE GeForce GTX 770
25. Примеры PCI-Express устройств
Звуковая карта SUS Xonar DX
26. Примеры PCI-Express устройств
SSD накопитель OCZ Z-Drive R4 Enterprise
English
Русский
Правила
Шина, которая не шина: радость взлома PCI Express
PCI Express (PCIe) существует с 2003 года, и за это время она сумела стать основным средством передачи данных не только для карт расширения, но и для высокопроизводительных карт. скорость внешних устройств. Что еще делает PCIe интересным, так это то, что он заменяет широко распространенное использование параллельных шин последовательными каналами. Вместо шины с общей средой (трассами), к которой подключаются несколько устройств, PCIe использует корневой комплекс, который напрямую подключается к конечным точкам PCIe.
Это похоже на то, как Ethernet изначально использовал конфигурацию шины с общей магистралью (коаксиальный кабель), но современный Ethernet (начиная с 90-х годов) перешел на конфигурацию «точка-точка» с помощью коммутаторов, обеспечивающих динамическое переключение. между какими точками (устройствами) подключено. PCIe также предлагает возможность добавления переключателей, которые позволяют более чем одной конечной точке PCIe (устройству или части устройства) совместно использовать канал PCIe (называемый «полосой»).
Этот переход от параллельной шины к последовательным каналам значительно упрощает топологию по сравнению с ISA или PCI, где время связи должно было делиться с другими устройствами PCI на шине, и была возможна только полудуплексная работа. Возможность объединять несколько линий для обеспечения меньшей или большей пропускной способности для определенных портов или устройств означает, что отпадает необходимость в специализированном слоте для видеокарты, например, для слот x16 PCIe с 16 линиями. Однако это означает, что мы используем последовательные каналы связи, работающие на частоте в несколько гигагерц, и должны быть реализованы в виде дифференциальных пар для защиты целостности сигнала.
Все это может показаться немного непосильным для среднего любителя, но все же есть способы развлечься с взломом PCIe, даже если они не связаны с макетированием микросхем 7400-логики и отладкой с помощью бюджетного осциллографа на 100 МГц, как с ISA. Автобусы.
Дифференциальные пары с высокой тактовой частотой
PCIe версии 1.0 увеличивает максимальную скорость передачи по сравнению с 32-разрядным PCI со 133 МБ/с до 250 МБ/с. Это примерно то же самое, что и 64-битное соединение PCI-X (на частоте 133 МГц), если используются четыре линии (~ 1064 МБ/с). Здесь линии PCIe работают на частоте 2,5 ГГц с парами передачи/приема дифференциальных сигналов в пределах каждой линии для полнодуплексной работы.
Сегодня PCIe 4 постепенно внедряется по мере обновления все большего количества систем. Эта версия стандарта работает на частоте 16 ГГц, а уже выпущенная версия PCIe 5 работает на частоте 32 ГГц. Хотя это означает большую пропускную способность (> 31 ГБ/с для канала x16 PCIe 4), это связано с затратами на создание этих быстрых переходов, сохранение этих каналов передачи данных заполненными и сохранение данных нетронутыми на расстоянии более нескольких миллиметров. Для этого требуется несколько интересных технологий, в первую очередь дифференциальная сигнализация и SerDes.
Базовая визуализация того, как работает дифференциальная сигнализация.
Дифференциальная сигнализация обычно используется во многих коммуникационных протоколах, включая RS-422, IEA-485, Ethernet (через витую пару), DisplayPort, HDMI и USB, а также на печатных платах, где соединение между Ethernet PHY и магнитными реализована в виде дифференциальных пар. Каждая сторона пары проводит один и тот же сигнал, только одна сторона имеет инвертированный сигнал. Обе стороны имеют одинаковый импеданс и одинаково подвержены влиянию (электромагнитных) помех в окружающей среде. В результате, когда приемник инвертирует инвертированный сигнал обратно и объединяет два сигнала, шум в сигнале инвертируется на одной стороне (отрицательная амплитуда) и, таким образом, компенсирует шум на неинвертированной стороне.
Движение к более низким напряжениям сигнала (в форме LVDS) в этих протоколах и увеличению тактовой частоты делает необходимым использование дифференциальных пар. К счастью, их несложно реализовать, скажем, на заказной печатной плате. Тяжелая работа по обеспечению одинаковой длины трасс в дифференциальной паре упрощается с помощью обычных инструментов EDA (включая KiCad, Autodesk Eagle и Altium), которые предоставляют функциональные возможности для полуавтоматической трассировки дифференциальных пар.
И то, и другое: SerDes
Схематическая диаграмма связи SerDes.
Сериализатор/десериализатор (SerDes) — это функциональный блок, который используется для преобразования между последовательными данными и параллельными интерфейсами. Внутри ПЛИС или коммуникационной ASIC данные обычно передаются по параллельному интерфейсу, при этом параллельные данные передаются в блок SerDes, где они сериализуются для передачи или наоборот. Уровень PCIe PMA (присоединение физического носителя) — это часть физического уровня протокола, на которой находится SerDes в PCIe. Точная реализация SerDes различается в зависимости от поставщика ASIC, но их базовая функциональность, как правило, одинакова.
Когда дело доходит до производства собственного оборудования PCIe, простой способ начать работу — использовать FPGA с блоками SerDes. По-прежнему необходимо загружать FPGA с проектом, который включает фактический канал передачи данных PCIe и уровни транзакций, но они часто доступны бесплатно, например, с FPGA Xilinx.
PCIe HDL Cores
Последние Xilinx FPGA не только интегрируют функции конечных точек SerDes и PCIe, но Xilinx также предоставляет бесплатные IP-блоки PCIe (ограничено до x8 в PCIe v2. 1) для использования с этим оборудованием функции, которые (на основе лицензии) можно использовать в коммерческих целях. Если кто-то хочет немного менее проприетарное решение, есть также доступные ядра PCIe с открытым исходным кодом, такие как этот проект PCIe Mini, который был протестирован на ПЛИС Spartan 6 на реальном оборудовании и обеспечивает мост PCIe-to-Wishbone вместе с его последующий проект, ориентированный на ПЛИС Kintex Ultrascale+.
По другую сторону баррикад IP-страница Intel (ранее Altera), кажется, сильно намекает на то, что их продавцу нужно позвонить, чтобы получить персональное предложение. Точно так же у Lattice есть свои продавцы, готовые ответить на ваш звонок о своих удивительных IP-блоках PCIe. Здесь определенно можно увидеть проблему с таким протоколом, как PCIe: в отличие от устройств ISA или PCI, которые могут быть собраны вместе с несколькими логическими микросхемами 74xx и случайным микроконтроллером или CPLD, PCIe требует довольно специализированного оборудования.
Даже если кто-то покупает физическое оборудование (например, FPGA), для использования аппаратных блоков SerDes с функциональностью PCIe все равно может потребоваться покупка или непрерывная лицензия (например, для цепочки инструментов) в зависимости от выбранного решения. На данный момент кажется, что Xilinx FPGA являются оптимальным решением, но это может измениться в будущем.
Также следует отметить, что сам протокол PCIe официально доступен для членов PCI-SIG. Это усложняет и без того масштабную задачу, если кто-то хочет реализовать гигантскую спецификацию PCIe с нуля, и делает еще более замечательным тот факт, что для PCIe вообще существуют HDL-ядра с открытым исходным кодом.
Собираем вместе
Чертеж краевого разъема PCI Express x1 с номерами контактов.
Базовая конструкция платы для печатной платы PCIe очень напоминает конструкцию плат PCI. Оба используют краевой разъем с аналогичной компоновкой. Краевые соединители PCIe имеют толщину 1,6 мм, шаг 1,0 мм (по сравнению с 1,27 мм для PCI), расстояние между контактными пальцами 1,4 мм и тот же угол скоса 20°, что и краевые соединители PCI. Разъем имеет не менее 36 контактов, но может иметь 164 контакта в конфигурации слота x16.
Поперечное сечение краевого разъема карты PCIe.
Важным отличием PCIe является отсутствие фиксированной длины краевого разъема, как в ISA, PCI и подобных интерфейсах. Их длина определяется шириной шины. В случае PCIe шины нет, поэтому вместо нее мы получаем распиновку «основного» разъема с одной полосой (разъем x1). К этой единственной полосе могут быть добавлены дополнительные «блоки», каждый из которых добавляет еще одну полосу, которая связывается, чтобы пропускная способность всех подключенных полос могла использоваться одним устройством.
В дополнение к обычным картам PCIe можно также выбрать из ряда различных устройств PCIe, таких как Mini-PCIe. Какой бы форм-фактор ни был выбран, основная схема не меняется.
Это поднимает интересный вопрос о том, какие скорости потребуются вашему устройству PCIe. С одной стороны, большая пропускная способность — это хорошо, с другой стороны, она также требует большего количества каналов SerDes, и не все слоты PCIe позволяют установить каждую карту. В то время как любая карта любой конфигурации (x1, x4, x8 или x16) подходит и работает в слоте x16 (механическом), слоты меньшего размера физически не позволяют установить карту большего размера. Некоторые разъемы имеют «открытую» конфигурацию, где вы можете установить, например, карту x16 в слот x1, если хотите. Другие разъемы могут быть «модифицированы», чтобы можно было использовать такие карты большего размера, если гарантия не является проблемой.
Гибкость PCIe означает, что пропускная способность масштабируется вместе с количеством связанных линий, а также версией протокола PCIe. Это обеспечивает плавную деградацию, когда, скажем, карта PCIe 3.0 вставляется в слот, поддерживающий только PCIe 1.0, карта все равно будет распознаваться и работать. Доступная пропускная способность будет сильно уменьшена, что может быть проблемой для рассматриваемой карты. То же самое относится и к доступным линиям PCIe, что напоминает историю майнеров криптовалюты, которые разделили слоты x16 PCIe на 16 слотов x1, чтобы они могли использовать равное количество графических процессоров или специализированных карт для майнинга криптовалют.
Он полон PCIe
Эта гибкость PCIe также привела к тому, что линии PCIe были проложены в странных и удивительных новых местах. Спецификации, такие как Intel Thunderbolt (теперь USB 4), включают место для нескольких линий PCIe 3.0, что позволяет использовать быстрые решения для внешнего хранения, а также внешние видеокарты, которые работают так же, как и внутренние.
Твердотельные накопители перешли с протокола SATA на NVMe, что по существу определяет запоминающее устройство, напрямую подключенное к контроллеру PCIe. Это изменение позволило устанавливать устройства хранения NVMe или даже напрямую интегрировать их в основную логическую плату.
Очевидно, что PCIe — это то, на что стоит обратить внимание в наши дни. Мы даже видели, что системы-на-чипах (SoC), такие как те, которые можно найти на платах Raspberry Pi 4, теперь поставляются с одной линией PCIe, которая уже была взломана для расширения этих плат способами, которые считались немыслимыми. Поскольку PCIe становится все более распространенным, кажется, самое время познакомиться с ним поближе.
PCI Express берет верх над
Алан Хай, технический директор
Когда-то шина Peripheral Component Interconnect Express (PCIe) была погружена в недра компьютера и стала одним из наиболее гибких и широко используемых методов межсоединений. практически в каждом современном вычислительном устройстве. От сотового телефона в кармане до автомобиля в гараже — многие современные «умные» электронные устройства в той или иной форме оснащены шиной PCIe.
PCIe — это двухточечная последовательная шина данных, которая доставляет информацию от одного компонента к другому с чрезвычайно высокой скоростью передачи данных. Используя передовые методы кодирования данных, он может передавать много гигабит в секунду по одной паре проводов. Он предназначен для масштабирования для увеличения пропускной способности за счет параллельного объединения нескольких подключений или дорожек. Ширина полосы x1, x4, x8 и x16 является наиболее распространенной, а пропускная способность, доступная при каждом расширении, линейно масштабируется. Задуманный как замена более старым шинам, таким как ISA и PCI, PCIe не только идет в ногу с технологическими достижениями в области пропускной способности, но и находится на грани потребления многих существующих компьютерных межсоединений, таких как SATA, SAS и, что самое интересное, USB.
PCIe — это технология, лежащая в основе высокоскоростного интерфейса хранения данных NVMe (энергонезависимая экспресс-память), которая заменяет SAS и SATA в качестве предпочтительной шины межсоединений флэш-накопителей в современном оборудовании. По сути, NVMe использует преимущества повышенной скорости и масштабируемости PCIe, подключая флэш-память напрямую к шине PCIe ЦП. В свою очередь, это дает устройствам хранения данных, подключенным к NVMe, значительный прирост пропускной способности. К сожалению, процессоры с трудом успевают за растущим спросом на линии PCIe, особенно в центрах обработки данных, где на каждый процессор могут приходиться десятки устройств хранения данных. Чтобы решить эту проблему, в крупных установках могут использоваться коммутаторы PCIe, которые работают так же, как сетевой коммутатор, чтобы эффективно разделить небольшое количество линий PCIe на большее за счет пропускной способности каждой линии. Адаптеры главной шины и RAID-контроллеры могут использоваться аналогичным образом и могут предоставлять дополнительные возможности, такие как осведомленность о объединительной плате и резервирование.
Одно из самых интересных новых приложений PCIe — это новейшая версия USB, USB4. Объявленный в 2019 году, USB4 теперь начинает появляться в новых продуктах. USB4 сохраняет специфичную для USB сигнализацию предыдущих поколений, но добавляет новый режим, который может подключать устройство напрямую к шине PCIe. Это обеспечивает подключение со скоростью до 40 Гбит/с, что увеличивает достижимую скорость передачи для традиционных видов использования USB, таких как съемные носители, и позволяет использовать некоторые новые технологии, которые были недоступны в предыдущих поколениях. Например, теперь должны быть возможны док-станции для ноутбуков, оснащенные несколькими слотами с полной пропускной способностью, а для гарнитур AR/VR больше не требуется прямое подключение к графическому процессору.
Поскольку PCIe становится стандартом для высокоскоростных соединений, PCIe Gen4 находится на пороге широкого использования. Gen4 удваивает скорость по сравнению с Gen3, обеспечивая почти 2 ГБ/с на линию. Это позволяет использовать многопортовые сетевые интерфейсы 100GbE или 200GbE, а также возможность подключать невероятно мощные графические процессоры, FPGA и другие периферийные устройства с большей пропускной способностью, чем когда-либо, открывая новые инновационные возможности и значительно повышая производительность.
Однако по мере удвоения скорости увеличивается мощность и тепловыделение, а целостность сигнала становится сложнее поддерживать. Разработка устройств PCIe Gen4 для использования в суровых условиях представляет собой серьезную проблему, когда также требуется защита от воздействия окружающей среды. Традиционные армейские круглые разъемы с блокировкой не обеспечивают достаточную производительность для передачи сигналов на таких скоростях, поэтому необходимо использовать новые технологии разъемов.