Forum: PC Hard- und Software PCIe-Interface basierte Speicher mit nur ein oder zwei Lanes anschließen. Wie?


von Manu F. (bit_burger)


Lesenswert?

Moin moin,

üblicherweise werden Speicher mit PCIe Interface mit vier Lanes 
angeschlossen. Beispiele sind M.2 und U.2.

Im Internet gibt es aber diverse Beiträge, in denen es darum geht, dass 
der Fragesteller seine M.2 nur mit einer oder zwei Lanes betreiben kann. 
Gründe dafür sind u. A., dass die Lanes irgendwie shared sind und schon 
anderweitig genutzt werden, dass bifurcation aktiviert ist, 
möglicherweise gibt's auch noch andere Gründe. Jedenfalls scheinen M.2 
SSDs auch mit nur einer oder zwei Lanes zu laufen und müssen nicht immer 
vier aktive Lanes Anliegen haben. Ich kann nun nicht sagen ob es nur mit 
bestimmten Speichercontrollern funktioniert oder ob es vielleicht sogar 
Teil der NVMe Spezifikation ist. Fakt scheint aber zu sein, dass es 
unter gewissen Umständen geht.

Mir fehlt die Produktübersicht, aber ich könnte mir auch gut vorstellen, 
dass gerade bei Einplatinenrechnern auch öfter mal aufgrund 
minimalistische Platinendesigns oder wegen geringer Anzahl der Lanes in 
den SoCs nicht immer vier Lanes möglich sind.

Ich würde mir diese Eigenschaft daher gerne zu Nutze machen und gezielt 
eine größere Anzahl M.2-Speicher mit nur einer oder zwei Lanes an 
PCIe4.0/5.0 Slots, egal ob x2, x4, x8 oder x16 Lanes anbinden. Natürlich 
geht das nur wenn die Slots Bifurcation x2x2... oder x1x1... 
unterstützen, aber dank AMD können das ja heutzutage nicht nur 
Profiboards, sondern auch viele Consumerboards.

Warum ich das machen will ist schnell erklärt. Ich würde gern ein x64 
basierte Speichersystem (ZFS) bauen, welches
1. möglichst stromsparend ist,
2. wenig Platz braucht,
3. viel Speicheranschlüsse bietet,
4. möglichst wenig kostet,
5. für Dauerbetrieb geeignet ist,
6. ausreichend Rechenleistung für 10G
7. bei Vollverschlüsselung bietet.

Ich dachte da an ein Ryzen basiertes System mit Micro ATX oder kleinerem 
Board, was dann entsprechend maximal drei PCIe Slots hat. Um genau zu 
sein hab ich bereits ein potentes Ryzen System für so einen Zweck am 
laufen. Ich würde dieses aber gerne von HDD Betrieb mit dem üblichen auf 
IT Mode geflahten HBA auf All Flash ohne HBA umstellen. Die Platten und 
der HBA brauchen im Dauerbetrieb zu viel Strom, sind zu laut und 
produzieren viel Abwärme.

Das alles wäre mit M.2 Speichern die ja immer billiger werden problemlos 
machbar. Auf ein so kleines Board bekommt man aber maximal ein oder zwei 
M.2 Karten drauf, die dann sowieso eher fürs Betriebssystem als für die 
Datenhaltung genutzt werden. Was Erweiterungskarten angeht gibt es da 
aber folgende Aspekte die mir da in die Suppe spucken:

Aktuell gibt es die Möglichkeit Erweiterungskarten zu kaufen, um mehr 
M.2 Slots in ein PC-System zu bekommen. Diese Karten binden die 
M.2-Speicher aber immer mit vier Lanes an. Solche Karten gibt's als a) 
passive Variante ohne aktiven Controller Chip oder b) mit aktivem 
Controller Chip.

a) Die passiven Karten benötigen dann in jedem Fall x16 Slots mit 
aktiven x4x4x4x4 Bifurcation. Außerdem wird je vier M.2 Speicher ein x16 
Slot benötigt. Bei acht angedachten SSD brauchts dann also schon zwei 
x16 Slots, bei bis zu 12 M.2 drei x16 Slots usw. Das bedeutet, dass 
dieser Ansatz automatisch zu einem großen Gehäuse und großem Mainboard 
führt, denn in der Regel nutzen diese Karten auch die volle 
Steckplatzhöhe aus und die Skalierung ein Slot pro vier M.2 ist auch 
ungünstig.

b) Bei den aktiven Karten ist dann ein PCIe Switch verbaut, der 
gleichzeitig auch Raidcontroller und/oder HBA ist.  Diese Karten haben 
bis zu 16 Kanäle und können somit 16 SATA oder SAS Laufwerke anbinden 
oder wiederum vier M.2 bzw U.2 Laufwerke. SATA/SAS haben aber folgende 
Nachteile: Diese Laufwerke sind als Flashvariante in der Regel 2,5" 
groß* und SATA und SAS ist nicht so schnell pro Kanal wie NVMe über 
PCIe4.0/5.0. Außerdem hat SATA/SAS höhere Latenzen als M.2 weil es nicht 
direkt an der CPU hängen kann. Außerdem beißt sich so eine Karte mit dem 
Ziel, Strom und Geld zu sparen und in der Regel handelt es sich auch bei 
so einer Karte um größere Exemplare in voller Höhe, die zudem gut 
gekühlt werden sollten.

 *Es gibt natürlich auch M.2 die SATA können, aber dann braucht man eben 
auch wieder zwingend einen aktiven Controller um genug Laufwerke 
anzubinden.

Ich würde also gerne irgendwie jeden M.2 Speicher gerne mit maximal eine 
oder zwei PCIe Lanes über die vorhandenen PCIe Slots anbinden. Einfach 
deshalb, weil darüber günstig viele Speicher angebunden werden könnten. 
Über PCIe 4.0 wären das netto bis zu 2GB/s pro Lane und bei PCIe 5.0 
4GB/s.

Dass das technisch funktionieren sollte hab ich ja ganz zu Anfang 
bereits erläutert. Ich stelle mir aber noch die Frage, wie man das 
zielgerichtet und strukturiert angeschlossen bekommt?

Weiß jemand, ob es entsprechende Riser, Boards, Kabelbäume, 
Steckeradapter oder sonstwas gibt, um diese Ziel zu erreichen? Gibt's im 
Elektronikfachhandel entsprechende Einzelteile um sich sowas selbst 
zusammen zu bauen, auch wenn man keine Kenntnisse über Elektrotechnik 
und Boarddesignd hat?

Ich hab zwar schon ein bisschen auf Alibaba und anderen Elektronikshops 
gestöbert, bin aber noch nicht fündig geworden.

Was meinen die Elektronikexperten zur grundsätzlich Überlegung. Kann das 
funktionieren, mal abgesehen davon, dass es entsprechendes Equipment zum 
Anschließen evtl. noch nicht gibt?

Vielen Dank für eure Antworten und die Diskussion.

von Manu F. (bit_burger)


Lesenswert?

Hab nen Lösungsansatz.

Ist noch ein bissel viel gestecke und adaptiererei, könnte aber 
zumindest technisch funktionieren.



1x 4 Port M.2 NVMe SSD to PCIE X16M Key Hard Drive Converter Reader 
Expansion Card, 4 x 32Gbps Transfer Speed (PH44)

https://s.lazada.co.th/s.87DCX

4x M.2 M KEY PCI-E Riser Pcie Splitter 1 To 4 PCI Riser Card PCIe 
Multiplier Risers 1X To External 4 PCI-e Adapter Graphics Card

https://s.lazada.co.th/s.87DZc

16x PCI-E Riser Mini PCIE PCI-E X1

https://s.lazada.co.th/s.87xyH

16x Adapter M.2 NVMe TO PCIE 3.0 X1

https://s.lazada.co.th/s.87DkI

Cool wäre es natürlich, wenn es eine Platine mit M.2 Sockel geben würde, 
was gleich so nen USB Anschluss dran hat.

Bitte beachten, dass es sich hier um USB Steckertechnik handelt aber 
PCIe X1 als Protokoll drüber geht.


Bin gerade noch in Thailand, daher spuckt mir die Suche eher Lazada und 
nicht alibaba aus. Bin nur leider nicht mehr lang genug da um es zur 
Unterkunft liefern zu lassen und dann gleich für nen Test mitzunehmen.

: Bearbeitet durch User
von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Du willst dir also sowas in der Art selberbauen?
- https://www.supermicro.com/en/products/nvme

1.) Schau dir erstmal an was dein bevorzugter Chipsatz im Zusammenspiel 
mit der ausgewählten CPU überhaupt als bifurcation unterstützt. Ich 
kenne da üblicherweise nur x4x4x4x4, x4x4x8, x8x4x4, x8x8 und x16. 16 
mal x1 habe ich noch nicht gesehen (heißt aber nicht das es nicht 
irgendwo sowas als sonderlocke gibt).
Wenn du in eine x4 eine x1 Karte reinsteckst funktioniert diese zwar 
aufgrund der Abwärtskompatibilität, die anderen drei lanes bleiben dann 
halt unbenutzt.
Bei dem ganzen Spiel musst du dann auch noch darauf achten ob die Lanes 
direkt von der CPU kommen oder von Chipsatz. Je nachdem kann es auch 
nochmal unterschiedlich sein was du dort für Möglichkeiten hast. Wenn 
der Chipsat kein passendes Konfigurationsregister für das was du willst 
hat, hilft dir auch ein eigenes BIOS nicht weiter.

Es gibt auch Karten mit aktiven PCIe switch die ohne 
Bifurkation-Unterstützung des Mainbord auskommen (eine Architektur die 
von hause aus mehr Lanes hat dürfte da aber recht schnell günstiger 
kommen).
z.B.:
- https://www.aplicata.com/quattro-400/
- 
https://www.tomshardware.com/reviews/aplicata-m.2-nvme-ssd-adapter,5201-3.html

Nackte "PCIe switch" gibt es von einigen Hersteller. Sowas eventuell mit 
einem FPGA kombiniert und selbst angepasster Software könnte schon 
funktionieren. Ob man davon allerdings genug verkauft bekommt um die 
Entwicklungskosten wieder rein zubekommen?
- 
https://www.hardwareluxx.de/index.php/news/hardware/mainboards/53282-pcie-switch-von-microchip-bietet-bis-zu-100-pcie-4-0-lanes.html
- https://www.broadcom.com/products/pcie-switches-bridges/pcie-switches
- 
https://www.microchip.com/en-us/products/interface-and-connectivity/pcie-switches
- 
https://www.diodes.com/design/support/technical-articles/top-3-uses-for-pci-express-switches/

Wenn du dir da selbst was Zusammenbauen willst was von dem 
handelsüblichen abweichst, darfst du in Schlechtesten fall dir ein 
eigenes BIOS/UFEI schreiben/anpassen, das Betriebssystem modifizieren 
und dir passende Treiber dafür schreiben und dazu noch eine passende 
Hardware designen.

Wie so oft, wenn man das was man sucht fast garnicht findet, besser die 
Finger davon lassen weil das dann ganz schnell sehr aufwendig und extrem 
teuer wird.

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Aus eigener Erfahrung bei NVME:
x1 geht als fallback immer
x2 geht nur mit ausgewählten SSD-ControllerICs
x4 geht bei neuen NVME immer

Auf Mainboardseite müßtest du die PCIe-Linkbündelung anpassen. 
Allerdings geht sowas selten bei Consumerboards. Bei einem x4 Slot hast 
du einen x4-Link gebündelt. Ohne den auf x1x1x1x1 aufzuspleißen wirds 
nicht funktionieren.

: Bearbeitet durch User
von Manu F. (bit_burger)


Lesenswert?

Im Grunde will ich so viel NVMe wie möglich an einen PCIe Slot ran 
bekommen, da mir das Verhältnis 4:1 egal ob passive oder aktive 
Erweiterungskarte zu verschwenderisch ist. Wie gesagt, reicht die 
Geschwindigkeit einer oder zwei Lanes aus.

Im Rahmen meiner Möglichkeiten klappt das nur, wenn es die Komponenten 
schon irgendwie fertig zu kaufen gibt und einfach etwas unkonventionell 
zusammen gesteckt werden muss. Eine Eigenentwicklung in dem Umfang den 
du skizziert hast kann ich nicht leisten.

Aktive Karten machen halt absolut keinen Sinn wenn man nen X16 Slot zur 
Verfügung hat. Denn sie bieten keinen Vorteil gegenüber passiven Karten, 
die auf einem Board mit x4x4x4x4 Slot stecken. Der einzige Vorteil ist, 
dass man aktive Karten mittlerweile auch in nem x8 Slot betreiben kann 
und trotzdem vier NVMe dran bekommt.

Der Einwand, ob es x1 Bifurcation für x16 Slots überhaupt gibt ist 
berechtigt. In meinem Tatendrang hab ich an sowas triviales gar nicht 
gedacht. Werde ich gleich mal checken wenn ich aus dem Urlaub zurück bin 
und parallel den Boardhersteller anschreiben und fragen, ob das 
überhaupt technisch möglich wäre.

Wenn der Aufwand keine Geige spielen würde, wäre natürlich ein Board mit 
kaskadierten PCIe Switches eine Feine Sache. Dann könnte man auch schön 
mit mini SAS Steckern arbeiten und übliche Backplanes für diese Idee 
missbrauchen und pro 2,5" Slot zwei bis vier M.2 oder U.2 unterbekommen.

Und da fällt mir auch gerade der nächste low Budget Lösungsansatz ein: 
Ich könnte mal versuchen in Erfahrung zu bringen, ob die üblichen HBAs 
die U.2/3 umgehen können x1 unterstützen und theoretisch 16 Devices über 
je eine Lane adressieren können . Dann könnte man vielleicht mit selbst 
gebauten Kabelbäumen mit nem mini SAS-Anschluss vier mal so viel NVMe 
dran bekommen. Denn Kabelbaum modifizieren liegt durchaus im Bereich der 
Möglichkeiten. Backplanes müsste man dann mal dann auf der Resterampe 
zusammen suchen.

: Bearbeitet durch User
von Motopick (motopick)


Lesenswert?

Im letzten System:
8 x 4 TB NVMe SSD = 64 TB auf 2 Karten verteilt.
Alle SSD laufen mit voller Geschwindigkeit.

Willst du ernsthaft z.B. 64 x 1 TB verbauen?
Das ist doch Quatsch.

von Manu F. (bit_burger)


Lesenswert?

64 NVME will ich sicher nicht verbauen. Aber 8 mindestens, mit je 2 oder 
4 TB. Auf diesem Speicher müssen nur ein paar VMs und heiße Daten 
liegen, die ständig verfügbar sein sollen. Für kalte Daten hab ich noch 
Spindeln die sich dann bei Nichtgebrauch deaktivieren und außerdem noch 
ein extra Backup System. Und weil sowieso ein ZFS zum Einsatz kommt, 
wird die Last auch gut verteilt.

Und für 8 NVME brauchts aktuell nun mal mindestens zwei Slots, was mein 
Setup nicht zwingend her gibt oder nur dann, wenn ich an anderer Stelle 
Abstriche mache. Wie gesagt, ich will was kleines kompaktes bauen.

der-michl: Danke für die Infos. Hast du zufällig auch Erfahrung welchen 
Impact die Reduzierung der Lanes auf die Leistung (RW-Rate, IOPS, etc) 
hat? Müssen keine harten Fakten sein, aber ein Bauchgefühl oder ne grobe 
Hausnummer wären schon mal hilfreich.

: Bearbeitet durch User
von Manu F. (bit_burger)


Lesenswert?

Also, ich hab mir das gerade mal angeschaut.

Bei meinem Board mit dem ich das vorhabe ( 
https://www.asrockrack.com/general/productdetail.asp?Model=X570D4U-2L2T 
) hängen der x16 und x8 an der CPU, siehe Blockdiagramm Handbuch Seite 
15. Warum der x8 im Blockdiagramm noch nen MUX zwischen Slot und CPU hat 
und was dieser MUX macht weiß ich nicht, aber mindestens der x16 sollte 
direkt an der CPU dran sein.

Ich hab mir dann auch mal den Markt angeschaut. Es gibt einige 
AM4-Bretter, bei denen drei mechanische x1 Slots drauf sind, plus 
zusätzlich nochmal drei Slots zwischen x4 und x16, die natürlich auch 
alle x1-kompatibel sind,  wenn man deren darüber hinausgehenden Lanes 
für sowas verschwenden will.

Außerdem scheint es so zu sein, dass oft Onboard-Chips wie Grafikkarte, 
NIC, etc. über eine Lane am Chipsatz oder der CPU dran hängen. Das heißt 
auch für solche Anwendungsfälle muss es möglich sein, x1 anzubieten.

Ich schlussfolgere daraus, dass die AMD-Plattformen (und wahrscheinlich 
auch Intel) zumindest hardwaretechnisch in der Lage zu sind, jede (oder 
zumindest die meisten Lanes in der CPU) als einzelne Lane zu adressieren 
und dass es dem Boardhersteller überlassen bleibt, wie er die Lanes 
aufteilt.

Dementsprechend sollte es möglich sein, auch 16x1 oder 8x2 auf einen 
PCIe 16x Slot zu legen. Das hat bisher wahrscheinlich kaum ein 
Hersteller gemacht, weil es dafür bisher keinen oder kaum 
Anwendungsfälle für PCIe-Slots gibt.

Bisher hab ich mit dem ASRock Rack Support nicht die schlechteste 
Erfahrungen gemacht. Ich hab denen jetzt mal geschrieben was ich vorhabe 
und gefragt, ob es möglich wäre, das vielleicht mal einzubauen.

von Frank K. (fchk)


Lesenswert?

Manu F. schrieb:

> Dementsprechend sollte es möglich sein, auch 16x1 oder 8x2 auf einen
> PCIe 16x Slot zu legen. Das hat bisher wahrscheinlich kaum ein
> Hersteller gemacht, weil es dafür bisher keinen oder kaum
> Anwendungsfälle für PCIe-Slots gibt.

Mag sein. Hast Du denn das Know-How, Dir eine entsprechende PCIe-Karte 
selber zu designen? Zu kaufen gibts sowas nicht, also musst Du selber 
ran. Denke daran, dass Du für den PCIe RefClock entsprechende Clock 
Buffer brauchst.

Du kannst natürlich auch sowas hier nehmen

https://www.asrockrack.com/general/productdetail.asp?Model=ROMED4ID-2T#Specifications

und an jeden der 6 SlimSAS Ports zwei SSDs hängen. Das Board kann das. 
12 SSDs sollten eigentlich vorerst reichen, und jede SSD hätte 4 Lanes.

fchk

von Manu F. (bit_burger)


Lesenswert?

Das Board und die Methode über SlimSAS klingt auch nicht schlecht. Wäre 
eine überlegenswerte Alternative.

Boards kann ich nicht designen. Aber für genau diesen Fall hab ich das 
Equipment im ersten Beitrag zusammengestellt. Damit wäre es zumindest 
theoretisch möglich, plug and play jede einzelne Lane an jeweils eine 
SSD zu führen.

Ob das funktioniert kann nur ein Versuch klären. Das macht aber auch nur 
Sinn, wenn Asrock 16x1 Bifurcation liefert.

: Bearbeitet durch User
von Manu F. (bit_burger)


Lesenswert?

Ha, ich bin da gerade auf was schönes gestoßen. Texas Instruments hat 
sich bereits die Mühe gemacht, und da ein feines Entwicklerboard gebaut. 
:-)

Produktwebsite:
https://www.ti.com/tool/DS320-SLIMSAS-EVM

Datenblatt:
https://www.ti.com/lit/ug/snlu299/snlu299.pdf?ts=1681120395353&ref_url=https%253A%252F%252Fwww.google.com%252F

Zitat aus dem Handbuch:

DS320-SLIMSAS-EVM is a PCI-Express 5.0 x16 to two x8 SlimSAS (SFF-8654) 
adapter, which enables
DS320PR810-RSC-EVM and other Texas Instruments PCI-Express 5.0 redriver 
riser card evaluation modules to
interface with up to four U.2 solid state drives (SSDs) using 
commercially available SlimSAS (SFF-8654) to U.2
(SFF-8639) cable assemblies (not included). Interface to M.2 SSDs is 
also possible using commercially available
U.2 to M.2 adapter cards (not included).
DS320-SLIMSAS-EVM features Texas instruments LMK00334 PCI-Express clock 
buffer for distributing the PCI-
Express 100 MHz reference clock to downstream SSDs. It also allows 
flexible assignment of the PCI-Express
side band signals using jumpers.

Davon ausgehend, hab ich das gleiche auch noch von DeLock gefunden:
https://www.reichelt.de/pcie-x16-2x-sff-8654-4x-sff-8639-bifurication-delock-90077-p319190.html

Ist etwas günstiger und hat auch bereits Kabel dabei.


Dazu brauchts dann "nur" noch ein Kabelbaum, der einen SFF-8654 Stecker 
einerseits und acht U.2 Stecker mit je einer Lane andererseits hat. Da 
kommt dann ein U.2 zu M.2 Adapter dran.

Sofern 16x1 Bifurcation machbar ist, ist der Hardwareentwicklungsaufwand 
auf ein bisschen Kabelbaumstrickerei zusammengeschrumpft.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Manu F. schrieb:

> Dazu brauchts dann "nur" noch ein Kabelbaum, der einen SFF-8654 Stecker
> einerseits und acht U.2 Stecker mit je einer Lane andererseits hat. Da
> kommt dann ein U.2 zu M.2 Adapter dran.

Falsch. Ein reiner Kabelbaum reicht nicht. Du brauchst passende PCIe 
RefClk Buffer. Sowas wie das hier:

https://www.skyworksinc.com/-/media/SkyWorks/SL/documents/public/data-sheets/si532xx-datasheet.pdf

Und das natürlich auf einer impedanzkontrollierten Leiterplatte.

> Sofern 16x1 Bifurcation machbar ist, ist der Hardwareentwicklungsaufwand
> auf ein bisschen Kabelbaumstrickerei zusammengeschrumpft.

Das habe ich noch nirgendwo gesehen. 4x4x4x4 ist üblich, nach allem 
anderen wirst Du lange und vergeblich suchen können.

fchk

von Manu F. (bit_burger)


Lesenswert?

Ja das hab ich oben schon verstanden.

Aber hast du den Text von mir überhaupt durchgelesen?

Aus dem verlinkten Datenblatt und dem zitierten Text zu der TI-Karte 
geht hervor, dass da ein PCIe clock buffer auf den Karten verbaut ist 
und das Signal an beiden SlimSAS-Buchsen anliegt.

"Texas instruments LMK00334 PCI-Express clock buffer for distributing 
the PCI-Express 100 MHz reference clock to downstream SSDs. It also 
allows flexible assignment of the PCI-Express
side band signals using jumpers."

Hier die Produktwebsite zum Clockbuffer: 
https://www.ti.com/product/de-de/LMK00334

Oder fehlt trotzdem noch was? Falls ja, erklärs bitte.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Manu F. schrieb:

> Aus dem verlinkten Datenblatt und dem zitierten Text zu der TI-Karte
> geht hervor, dass da ein PCIe clock buffer auf den Karten verbaut ist
> und das Signal an beiden SlimSAS-Buchsen anliegt.

Ja. Du kannst aber so einen RefClk Ausgang nur an EIN Gerät 
weiterreichen. Das Aufspalten in mehrere Geräte funktioniert nicht. 
Abzweigungen zerstören die Signalintegrität. Das Taktsignal ist wie 
jedes Signalpaar bei PCIe eine reine Punkt-zu-Punkt Verbindung. Zum 
Aufspalten brauchst Du wieder einen Clock Buffers mit entsprechend 
vielen Ausgängen.

fchk

von Manu F. (bit_burger)


Lesenswert?

Verstanden, danke. Ja, das spuckt ziemlich mies in die Suppe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.