- PCIe Bifurcation – What is it? How to enable? Optimal Configurations and use cases for NVMe SDDs/GPUs
- What is PCIe Bifurcation?
- Interpretation of motherboard layout and its architecture:
- Limitations of the motherboard:
- Understand default PCIe slot behaviour with Dual NVMe PCIe adapter:
- How to enable PCIe Bifurcation?
- Optimal PCIe Bifurcation Configuration – Use case 1:
- Optimal PCIe Bifurcation Configuration – Use case 2:
- Optimal PCIe Bifurcation Configuration – Use case 3 (my use case):
- В чем отличия PCI Express x16, x8, x4 и x1?
- Что такое шина PCI Express?
- Влияние количества линий на пропускную способность
- Типы устройств, использующих PCI Express x2, x4, x8, x12, x16 и x32
- Размеры портов и линий PCI-E могут различаться
- Подключение 3-х видеокарт
- Режимы работы нескольких PCI-E x16 слотов
- Бифуркация в NVMe-стиле
- Что умеет райзер AOC-SLG3-2M2?
PCIe Bifurcation – What is it? How to enable? Optimal Configurations and use cases for NVMe SDDs/GPUs
One of my colleagues asked me about “Bifurcation” when it came in a discussion about running multiple NVMe drives from a single PCIe slot. As I explained “what it is” and why one should consider it before making a motherboard purchase, I shared my own home lab experience – which brought me to write this blog for the wider community.
Background: I had multiple disks in my Supermicro server – three(3) NVMe SSD, two(2) SSDs and two(2) HDDs. One of my SATA HDDs (2TB in size) decided to go kaput recently. I thought of replacing it with an equivalent size internal SATA SDDs to keep the expense low. Checking pricing on Amazon, 2TB SSDs were somewhere in the range of £168 to £200 and somehow I stumbled upon the WD Blue SN550 NVMe SSD 1TB for just £95 – I remember when I bought my first Samsung EVO 960 1Tb NVMe for about £435 in September 2017 and the same brand/model for 2TBs were around a grand!
The read and write speed of 545 MB/s and 540 MB/s respectively, of the fastest 2TB SATA SSD i.e. SanDisk SSD Plus (in the price bracket mentioned above) was no comparison to the WD Blue SN550 NVMe SSD’s 2400 MB/s and 1950 MB/s respectively. As I was already using 3 NVMe SSDs, I loved my nested VMware vSphere (ESXi) home lab run “smooth as butter”, it became a no brainer for me to consider buying two(2) x 1TBs WD NVMe SSD instead. Of course, I would have to invest additional money to buy more NVMe PCIe adapters, but I would rather spend a little more money now for future proofing my home lab/server along with the additional speedbump ;).
The PCIe based peripherals in my home lab are Supermicro Quad Port NIC card, Nvidia GPU and Samsung NVMe SSDs. This blog will focus on NVMe SSDs and the GPU as an example, covering the following:
Before we begin, let’s get the dictionary definition out of the way:
What is PCIe Bifurcation?
PCIe bifurcation is no different to the definition i.e. dividing the PCIe slot in smaller chunks/branches. Example, a PCIe x8 card slot could be bifurcated into two(2) x4 chunks or a PCIe x16 into four(4) x4 i.e. x4x4x4x4 OR two(2) x8 i.e. x8x8 OR one(1) x8 and two(2) x4 i.e. x8x4x4 / x4x4x8 (if it does not make sense now, it will later – keep reading )
Note: PCIe Bifurcation does not decrease speed but only splits/bifurcate lanes. In order to use bifurcation, the motherboard should support it and if it does then the BIOS should support it as well.
When I bought the Supermicro X10SRH-CLN4F motherboard in September 2017, it came with BIOS 2.0b, which did not have any “Bifurcation” options and as a result when I plugged in my a Supermicro AOC-SLG3-2M2 (Dual NVMe PCIe Adapter) in any slot, it would only detect one(1) of the two(2) NVMe SSDs installed. To get the card to detect both the NVMe SSDs, “PCIe Bifurcation” was required which was available in a later BIOS version not publicly available (at the time) but the supermicro support was great and the engineer shared it with me before it went GA.
Ok, let’s take the example of my motherboard (Supermicro X10SRH-CLN4F) layout below:
It has Six(6) physical PCIe slots – labelled as slot 2,3,4,5,6 and 7 respectively. However, the CPU socket only has three(3) PCIe 3.0 links and one(1) PCIe 2.0 via DMI2/PCH (Platform Controller Hub). They are numbered as 1, 2 or 3, followed by a letter (shown in the block diagram architecture below):
Interpretation of motherboard layout and its architecture:
I created the following table for easier understanding (you could do the same for your motherboard):
PCIe Slot Number
CPU/PCIe Port
PCIe version
PCIe Slot Size
PCIe Lanes
Limitations of the motherboard:
This motherboard restricts the use of “Quad NVMe PCIe Adapter” (not that I have a requirement for it…yet) due to the lack of dedicated PCIe x16 lane, but I can use a maximum of three(3) “Dual NVMe PCIe Adapters” because of three(3) x8 PCIe lanes available and two(2) more “Single NVMe PCIe Adapters” using the remaining two(2) x4 PCIe lanes, if needed.
Supermicro X10SRH-CLN4F motherboard has been running pretty sweet for me so far and it will suffice my current estimated requirements for future PCIe storage expansion. However, if you are in the market for buying any new motherboard and intend to run several PCIe based peripherals (including GPUs) – consider the limitations before you make the purchase.
Understand default PCIe slot behaviour with Dual NVMe PCIe adapter:
Ok, lets now talk about the “Dual NVMe PCIe adapter” e.g. Supermicro AOC-SLG3-2M2 (or any other) which requires a PCIe x8 lanes:
The last option above, is the only option capable of detecting two(2) NVMe SSDs installed in a “Dual NVMe PCIe adapter” as the PCIe slots have x8 PCIe lanes available and is here, where bifurcation comes into the picture.
How to enable PCIe Bifurcation?
As mentioned before the motherboard should be compatible and BIOS should also have an option to enable it. You would need to dig the bifurcation options for your motherboard in BIOS settings, for Supermicro X10SRH-CLN4F (BIOS v3.2 Build 11/22/2019) the settings are located below:
Optimal PCIe Bifurcation Configuration – Use case 1:
If the “Dual NVMe PCIe Adapter” is plugged into PCIe Slot4, “IOU1 (IIO1 PCIe Port 3)” config would need to be changed from “Auto” to “x4x4x4x4”, which will result in the PCIe v3.0 Link3 split/bifurcate into four(4) x4 chunks and the table will now look like:
PCIe Slot Number | CPU/PCIe Port | PCIe version | PCIe Slot Size | PCIe Lanes |
2 | DMI2 | 2.0 | x8 | x4 |
3 | DMI2 | 2.0 | x4 | x2 |
4 | 3A | 3.0 | x8 | x4x4 |
5 | 2A | 3.0 | x8 | x4 |
6 | 2C | 3.0 | x16 | x8 |
7 | 3C | 3.0 | x8 | x4 |
Note: As I explained in the “Interpretation of motherboard layout and its architecture” section, the CPU/PCIe Link 3 has three(3) ports i.e. CPU/PCIe Port 3A, 3C and 3D. CPU/PCIe Port 3A is the only port that is affected with this config change, which now splits/bifurcates it from x8 to x4x4 and as a outcome will detect both the NVMe SSDs. The remaining CPU/PCIe Port 3C and 3D remain unaffected as they were already using x4 lanes.
Optimal PCIe Bifurcation Configuration – Use case 2:
If the “Dual NVMe PCIe Adapter” is plugged into PCIe slot5, “IOU1 (IIO1 PCIe Port 2)” config would need to be changed from “Auto” to “x4x4x4x4” instead, which will result in the PCIe v3.0 Link2 split into four(4) x4 chunks and the table will then look like this:
PCIe Slot Number | CPU/PCIe Port | PCIe version | PCIe Slot Size | PCIe Lanes |
2 | DMI2 | 2.0 | x8 | x4 |
3 | DMI2 | 2.0 | x4 | x2 |
4 | 3A | 3.0 | x8 | x8 |
5 | 2A | 3.0 | x8 | x4x4 |
6 | 2C | 3.0 | x16 | x4x4 |
7 | 3C | 3.0 | x8 | x4 |
Optimal PCIe Bifurcation Configuration – Use case 3 (my use case):
PCIe Slot Number | CPU/PCIe Port | PCIe version | PCIe Slot Size | PCIe Lanes | |
2 | DMI2 | 2.0 | x8 | x4 | One(1) NVMe SSD |
3 | DMI2 | 2.0 | x4 | x2 | Quad Port NIC Card |
4 | 3A | 3.0 | x8 | x4x4 | Two(2) NVMe SSD |
5 | 2A | 3.0 | x8 | x4x4 | Two(2) NVMe SSD |
6 | 2C | 3.0 | x16 | x8 | Nvidia 1080Ti |
7 | 3C | 3.0 | x8 | x4 | One(1) NVMe SSD |
I have plans to install three(3) more NVMe SSDs in the next couple of weeks i.e. two(2) x 1TB to replace my failed 2TB HDD and another 2TB for future prospects (possibly all three of 2TB sizes if there are any deals on the upcoming Amazon Prime Day this months ).
Hope this helps in making your purchase decision or helps understand your existing motherboard architecture’s and its PCIe bifurcation configurations.
В чем отличия PCI Express x16, x8, x4 и x1?
Стандарт PCI Express является одной из основ современных компьютеров. Слоты PCI Express уже давно занимают прочное место на любой материнской плате декстопного компьютера, вытесняя другие стандарты, например, такие как PCI. Но даже стандарт PCI Express имеет свои разновидности и отличающийся друг от друга характер подключения. На новых материнских платах, начиная примерно с 2010 года, можно увидеть на одной материнской плате целую россыпь портов, обозначенных как PCIE или PCI-E, которые могут отличаться по количеству линий: одной x1 или нескольких x2, x4, x8, x12, x16 и x32.
Итак, давайте выясним почему такая путаница среди казалось бы простого периферийного порта PCI Express. И какое предназначение у каждого стандарта PCI Express x2, x4, x8, x12, x16 и x32?
Что такое шина PCI Express?
С точки зрения непрофессионала, представьте свой настольный ПК в качестве небольшого магазина с одним, двумя продавцами. Старый стандарт PCI был как гастроном: все ожидали в одной очереди, чтобы их обслужили, испытывая проблемы со скоростью обслуживания с ограничением в лице одного продавца за прилавком. PCI-E больше похож на гипермаркет: каждый покупатель движется за продуктами по своему индивидуальному маршруту, а на кассе сразу несколько кассиров принимают заказ.
Очевидно, что гипермаркет по скорости обслуживания выигрывает в несколько раз у обычного магазина, благодаря тому, что магазин не может себе позволить пропускную способность больше чем один продавец с одной кассой.
Также и с выделенными полосами передачи данных для каждой карты расширения или встроенными компонентами материнской платы.
Влияние количества линий на пропускную способность
Теперь, чтобы расширить нашу метафору с магазином и гипермаркетом, представьте, что каждый отдел гипремаркета имеет своих кассиров, зарезервированных только для них. Вот тут-то и возникает идея нескольких полос передачи данных.
PCI-E прошел множество изменений со времени своего создания. В настоящее время новые материнские платы обычно используют уже 3 версию стандарта, причем более быстрая 4 версия становится все более распространенной, а версия 5 ожидается в 2019 году. Но разные версии используют одни и те же физические соединения, и эти соединения могут быть выполнены в четырех основных размерах : x1, x4, x8 и x16. (x32-порты существуют, но крайне редко встречаются на материнских платах обычных компьютерах).
Различные физические размеры портов PCI-Express позволяют четко разделить их по количеству одновременных соединений с материнской платой: чем больше порт физически, тем больше максимальных подключений он способен передать на карту или обратно. Эти соединения еще называют линиями. Одну линию можно представить как дорожку, состоящею из двух сигнальных пар: одна для отправки данных, а другая для приема.
Различные версии стандарта PCI-E позволяют использовать разные скорости на каждой полосе. Но, вообще говоря, чем больше полос находится на одном PCI-E-порту, тем быстрее данные могут перетекать между периферийной и остальной частью компьютера.
Типы устройств, использующих PCI Express x2, x4, x8, x12, x16 и x32
Для версии PCI Express 3.0 общая максимальная скорость передачи данных составляет 8 ГТ/с (Гигатранзакций/с), В реальности же скорость для версии PCI-E 3 чуть меньше одного гигабайта в секунду на одну полосу.
Таким образом, устройство, использующее порт PCI-E x1, например, маломощная звуковая карта или Wi-Fi-антенна смогут передавать данные с максимальной скоростью в 1 Гбит/с.
Скорость передачи портов PCI-E x16 теоретически ограничивается максимальной полосой пропуская в размере около 15 Гбит/с. Этого более чем достаточно в 2017 года для всех современных графических видеокарт, разработанных NVIDIA и AMD.
Протокол PCI Express 4.0 позволяет использовать уже 16 ГТ/с(Гигатранзакций/с), а PCI Express 5.0 будет задействовать 32 ГТ/с (Гигатранзакций/с).
На рынке можно найти твердотельные накопители PCI-E, которые поддерживают порт x4, но они, похоже, скоро будут вытеснены быстро развивающимся новым стандартом M.2. для твердотельных накопителей, которые также могут использовать шину PCI-E. Высококачественные сетевые карты и оборудование для энтузиастов, такие как RAID-контроллеры, используют сочетание форматов x4 и x8.
Размеры портов и линий PCI-E могут различаться
Это одна из наиболее запутанных задач по PCI-E: порт может быть выполнен размером в форм-факторе x16, но иметь недостаточное количество полос для пропуска данных, например, всего например x4. Это связано с тем, что даже если PCI-E может нести на себе неограниченное количество отдельных соединений, все же существует практический предел пропускной способности полосы пропускания чипсета. Более дешевые материнские платы с более бюджетными чипсетами могут иметь только один слот x8, даже если этот слот может физически разместить карту форм-фактора x16.
Кроме того, материнские платы, ориентированные на геймеров, включают до четырех полных слотов PCI-E с x16 и столько же линий для максимальной пропускной способности.
Очевидно, это может вызывать проблемы. Если материнская плата имеет два слота размером x16, но один из них имеет только полосы x4, то подключение новой графической карты снизит производительность первой аж на 75%. Это, конечно, только теоретический результат. Архитектура материнских плат такова, что Вы не увидите резкого снижения производительности.
Правильная конфигурация двух графических видео карт должна задействовать именно два слота x16, если Вы хотите максимального комфорта от тандема двух видеокарт. Выяснить сколько линий на Вашей материнской плате имеет тот или иной слот поможет руководство на оф. сайте производителя.
Иногда производители даже помечают на текстолите материнской платы рядом со слотом количество линий
Нужно знать, что более короткая карта x1 или x4 может физически вписаться в более длинный слот x8 или x16. Конфигурация контактов электрических контактов делает это возможным. Естественно, если карта физически больше, чем слот, то вставить ее не получится.
Поэтому помните, при покупке карт расширения или обновления текущих необходимо всегда помнить как размер слота PCI Express, так и количество необходимых полос.
Подключение 3-х видеокарт
Добрый день, такая проблема, в первом слоте установлена карта 3060, во втором и третьем через райзеры две 1660ti, система пишет что не достаточно ресурсов, это мать не вывозит или глюк какой то?
Скорее всего система не справляется с распределением ресурсов.
Проверьте настройку в BIOS above 4G memory.
Увеличьте файл подкачки.
Если это не поможет, то возможно проблема в работе райзеров или версии ОС.
В биосе настройка включена, файл подкачки увеличен, рейзера заменены, но не помогает, может дело в линиях pci-e, процессор поддерживает 16 линий, а у меня 16 + 4 + 4, в этом причина может быть? Или я не правильно считаю линии.
Вы можете посмотреть через GPU-Z к каким линиям подключены видеокарты.
Ну в режиме sli они работать точно не будут втроем.
Выжимка из руководства:
2 x PCI Express 3.0 x16 Slots (PCIE1/PCIE3: single at x16(PCIE1); dual at x16 (PCIE1) / x4 (PCIE3)
2 x PCI Express 3.0 x1 Slots
То есть про 3 карты в майнинге на этой доске можете забыть. Максимум 2 штуки в режиме x16/x4 или x8/x8 если биос позволяет. Мелкие PCI-e x1, а не x4.
Режимы работы нескольких PCI-E x16 слотов
На плате расположены 3 слота PCI-E x16.
В описании указаны режим работы нескольких PCI-E x16 слотов указано «16-4, 16-0».
С платой планирую процессор Ryzen 3900.
Возможно ли задействовать все три слота PCI-E x16? Каков тогда будет режим их работы?
В инструкции описано. Там все сложно, зависит от процессора. И нет там трех х16.
После поисков накопал, что в биосе этой платы присутствует опция.
PCIEX16 Bifurcation:
Allows you to determine how the bandwidth of the PCIEX16 slot is divided. Options: Auto, PCIE 2×8, PCIE
1×8/2×4, PCIE 4×4. (Default: Auto)
Металлический слот x16 подключен к процессору напрямую и выдает полноценные 16 линий.
2 нижних подключены через чипсет и только механически позволяют вставить в них x16 карты, на деле каждый слот выдает только 4 линии.
Бифуркация в NVMe-стиле
Базис для масштабирования интерфейсов заложен самой x86-архитектурой. Яркий представитель – райзер AOC-SLG3-2M2, предназначенный для работы с ограниченным множеством платформ, поддерживающих бифуркацию PCIe.
Что умеет райзер AOC-SLG3-2M2?
Способность адаптера поддерживать более одного накопителя базируется на способности порта хост-платформы к бифуркации. Это опциональное свойство. Если порт обслуживается процессором – то работоспособность адаптера AOC-SLG3-2M2 зависит и от модели процессора.
Несмотря на отсутствие контроллеров, на плате адаптера присутствуют DBL411 (буфер-разветвитель тактовых сигналов), Serial EPROM ATMLH732 и элементы импульсного регулятора напряжения, не относящиеся к логике работы PCIe.
Импульсный регулятор преобразует входное напряжение +12 вольт в уровни, необходимые для питания цифровых цепей накопителей. В силу фундаментальных электрофизических причин, для питания компонентов с высоким потреблением такое решение может оказаться предпочтительнее, чем прямое использование входного напряжения +3.3V.
Не исключено, что с помощью EPROM, подключенного к System Management Bus, достигается совместимость с конкретной платформой за счет привязки адаптера к конкретному модельному ряду.
Конкретнее, содержимое EPROM может вычитываться при инициализации платформы по линиям SMCLK, SMDAT (соответственно B5, B6) слота PCIe. В силу опциональности такого решения для PCIe, возможны различные сценарии в применении данного адаптера.