Buddy_Bro
@Buddy_Bro

Как линии pcie делятся между устройствами?

Есть материнская плата: MSI X470 Gaming plus max с разъёмами:
2 слота PCIe 3.0 x16 (PCIE_1, PCIE_4)
1 слот PCIe 2.0 x16 (PCIE_6, поддерживает режим x4)
Как я понимаю - это по 16 независимых линий на слот.
Есть видеокарта: PowerColor Red Devil RX 590 OC (AXRX-590-8GBD5-3DH/OC)
Bus Interface PCIe 3.0 x16

И на конец процессор: AMD Ryzen 7 2700 Eight-Core Processor 3.20 GHz (второе поколение).

Согласно спецификации, (опять таки если я правильно понял) эта карта с этим процессором и этой платой может работать в режиме х16\х0, или х8\х8

Тоесть если второй слот PCIe 3.0 x16 не занят, то карта работает по всем 16 линиям.
Если же мы воткнём вторую видяху то они будут работать по 8 линиям каждая.

А что будет если воткнуть во второй слот SSD диск m2 (через переходник)?
Видяха единственная станет работать по 8 линиям? Или если во втором слоте не видеокарта, то и линии не будут делиться?
Вот тут я не совсем понимаю, как будет происходить делёж ресурсов ))
Не хотелось бы ослабить видяху, из-за добавления SSD. При этом есть лишний SSD и переходник, которые тоже не гоже без дела оставлять.
Использование PCIe 2.0 x16 не возможно, так как согласно спецификации материнки в случаи установки ssd в m2_2 (а он там установлен) этот слот не работает. Получается они делят один ресурс или канал\ы между SATA0 \ m2_2 \ PCIe 2.0 x16

И ещё вроде где-то слышал что современные (хз конечно это какие) видяхи не используют все отведённые каналы, и по этому разделение каналов по х8 между слотами якобы не скажется на производительность… как то это сомнительно. Но появились видяхи со встроенным m2 разъёмом.

Помогите немного кашу в голове уложить по тарелочкам.
  • Вопрос задан
  • 3152 просмотра
Решения вопроса 1
@two_oceans
Ну вообще да, поставить еще один nvme SSD без потери ширины канала к нему в данной ситуации сложно. Хотя и не невозможно, но мало кто пойдет на такие технические меры. Пройдемся по порядку.

Насчет видеокарты - многое зависит от конкретной игры, загрузка канала почти напрямую зависит от интенсивности загрузки текстур в видеокарту. Есть сравнения на этот счет. Когда не против поиграть на самом низком качестве текстур возможно и x8 хватит. Или даже меньше. Когда выжимаешь качество на максимум, то судя по тестам используется примерно 12-14 линий. Так что действительно 4 линии из 16 могут и не использоваться никогда потому что видеокарте хватает 12 для всех игр, в которые играет хозяин. В любом случае 12 линий лучше чем 8.

Что PCIE_4 и PCIE_1 заявлены как PCIe 3.0 намекает, что это линии идущие прямо от процессора и максимальное их число определяется минимумом от числа линий процессора и того сколько из них разведены на плате. PCIE_6 заявлены как PCIe 2.0, то есть их контроллер находится в чипсете, и есть физически промежуточная шина (абсолютно невидимая логически) между чипсетом и процессором, на которой так же висят все остальные устройства работающие через чипсет. Много линий тут не втиснешь, так как на все про все не хватит ширины промежуточной шины (каждый доступный SATA недо-6 Гбит/с или USB3.0 5 Гбит/с занимает примерно столько же пропускной способности как 1 линия PCIe 2.0 5 Гт (Гигатрансферов)/с , а есть еще и сами PCIe 2.0 x1, сеть 1Гбит/с, звук и т.д.).

"Каждая линия PCI-E - шина типа точка-точка, на одной шине не может быть нескольких устройств." Это утверждение формально верно на физическом уровне (как противоположность простой PCI), но не все так прозрачно и ясно на логическом уровне. Шина PCIe если почитать спецификацию имеет архитектуру дерева (очень похожую на USB). Так, майнеры умудряются на один x1 2.0/3.0 слот вешать 4 видеокарты через райзер с встроенным PCIe switch, причем можно в один из слотов вставить следующий такой же райзер и в итоге повесить до 7 видеокарт. Ну, для майнеров текстуры не нужны и им хватает ширины канала x1 1.0 на карту. Пример поближе - можно встретить карты которые ставятся в слот PCIe x16 и через PCIe switch на карту ставится 4 nvme SSD. Как так вышло? PCIe switch собирает потоки данных от "дочерних" устройств и передает в своем канале связи "наверх", с указанием какие данные от какого устройства, а его драйвер распределяет полученное драйверам дочерних устройств.

Выше верно сказали - если хотя бы одно устройство стоит в PCIE_4, то PCIE_1 линии поделятся пополам. Но вот почему так происходит интерпретировано совершенно неверно. С точки зрения процессора к PCIe root (контроллер PCIe) подключен PCIe switch и это единственное устройство на 16 линиях, а уже к свитчу подключены 2 разъема PCIE_1 и PCIE_4 и при этом до одного физически идет 16 линий, до второго 8 линий и на основании микропрограммы свитч решает, что просто отдаст все 8 линий на второй разъем если там есть устройство. Логика в том, что между 2 видеокартами в PCIE_1 и PCIE_4 еще подключается дополнительная линия связи SLI / Crossfire (мимо PCIe) по которой они могут тянуть текстуры друг у друга и фактически получить те же 12 линий.

Однако логика идет наперекосяк если во втором слоте не видеокарта, а устройство занимающее 4 и менее линий. Если бы микропрограмма свитча это предусматривала, то можно было бы безболезненно поделить как 12 + 4. В случае физической видеокарты с разъемом м2 так и сделано - то есть к разъему PCIE_1 логически подключается не устройство-видеокарта, а еще один PCIe switch, который делит линии на "логический разъем" устройства-видеокарты и разъем м2 как 12 + 4. Понятно, что если от PCIE_1 поступит только 8 линий, то м2 на видеокарте отключится.

Чисто в теории можно так же 12+4 сделать с кастомной прошивкой биоса, меняющей микропрограмму свитча, подключенного к root, но на практике же оказывается, что некоторые сигналы невозможно поменять биосом потому что они дешево и сердито подтянуты резисторами размером 0,3 мм на плате к +3в или к земле, а биос просто их считывает. Так что на большинстве плат можно только смириться с делением 8+8, на меньшинстве пришлось бы не только переписать биос, но и вооружаться паяльной станцией с микроскопом.

Вставить переходник с PCIe switch 12+4 между PCIE_1 и видеокартой выглядит более реально (китайские товарищи любую плату по чертежу спаяют), но тут уже проблемы с позиционированием карты в корпусе, вероятно что потребуется еще и райзер на 12/16 линий и стоить будет кругленькую сумму при штучных количествах производства.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Как решил производитель материнской платы разделить - так и будет. Обычно об ограничения упоминается в мануале.

Видяха единственная станет работать по 8 линиям? Или если во втором слоте не видеокарта, то и линии не будут делиться?

Каждая линия PCI-E - шина типа точка-точка, на одной шине не может быть нескольких устройств. Поэтому установка любого устройства (даже x1) в слот PCIE_4 переведёт слот PCIE_1 в режим x8.

Использование PCIe 2.0 x16 не возможно, так как согласно спецификации материнки в случаи установки ssd в m2_2 (а он там установлен) этот слот не работает.

Верно.

Итого, при установленной видеокарте, ryzen 2700 и pci-e nvme SSD в слоте M2_2 вы не можете использовать остальные слоты PCI-E x16. Третий nvme тут ставить только или в ущерб устройства в первом PCI-E x16 или в x1 в ущерб полосе (но не латентности) самого nvme. Ну или в USB 3.2 адаптером.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
неужели сложно нагуглить?
https://club.dns-shop.ru/blog/t-102-materinskie-pl...

ты фигней не майся , а внимательно изучи доки к материнке
вот те 8/8 потому и сделаны что больше 16 процессору не переварить
НО
бывают исключения, допущения, улучшения и т.д. и т.п.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы