Warum teilen sich die USB-Anschlüsse und der Ethernet-Anschluss denselben Controller?

12

Nach meinem Verständnis teilen sich die USB-Anschlüsse am Pi denselben Controller wie der Ethernet-Anschluss.

Dies bedeutet, wenn der Pi als NAS verwendet wird, wird die Datenübertragung über das Netzwerk eingeschränkt, da sowohl der USB-Anschluss als auch der Ethernet-Anschluss gleichzeitig verwendet werden.

Meine Frage ist, wie sich die Datenübertragung verlangsamt und ob es eine Problemumgehung für dieses Problem gibt.

Darth Vader
quelle
2
Nicht mehr (auf dem Pi 3): raspberrypi.stackexchange.com/q/44433/24224
PNDA

Antworten:

13

Sie haben Recht, wenn Sie verstehen, dass der gemeinsam genutzte USB / Ethernet-Bus ein Engpass ist.

Eine Möglichkeit ist die Verwendung eines Pi 3 über WLAN. Der WiFi-Chip teilt sich keinen Bus mit den USB-Buchsen und sollte mit voller Geschwindigkeit laufen.

Wenn Sie einen anderen Pi als einen Pi 3 verwenden, kann ich davon ausgehen, dass die Verwendung eines USB 3-Gigabit-Ethernet-Adapters in einem USB-Sockel Wunder für Ihre Verbindungsgeschwindigkeit bewirken kann. Dieser Artikel auf jeffgeerling.com legt nahe, dass es ihm gelungen ist, den Netzwerkdurchsatz auf diese Weise erheblich zu verbessern.

Netzwerk-E / A-Leistung - Raspberry Pi B + / 2

goobering
quelle
7

USB 2.0 hat eine maximale Übertragungsrate von 480 MBit / s (Mega- Bit ).
Jetzt ist die tatsächliche Übertragungsrate in der realen Welt weitaus langsamer.

Mein Pi 2 hat einen maximalen Durchsatz von 220 MBit / s (Mega- Bit ) über USB.

Das Maximum, das der Pi über den 10/100-Netzwerkport übertragen kann, beträgt ca. 90 MBit / s (Mega- Bits ).


So:

  480 Mb/sec        (USB 2.0 maxium throughput)
- 260 Mb/sec        (For real-world speeds)
-  90 Mb/sec        (For the network port)
-----------
  130 Mb/sec        (Left over bandwidth)

Nach dem vollständigen Laden des Netzwerkports haben Sie also noch 130 MBit / s (Mega- Bit ) Bandbreite.
Um auf Nummer sicher zu gehen, lassen Sie uns noch 100 MBit / s (Mega- Bits ) übrig.


Daher (vorausgesetzt, Sie haben einen Pi 2):

Solange Ihre USB-Bandbreite 100 MBit / s (Mega- Bit ) nicht überschreitet , ist alles in Ordnung. Davon werden 90 MBit / s (Mega- Bits ) zur Weiterleitung an die Netzwerkkarte verwendet.

Solange also andere Dinge als die an die USB-Anschlüsse angeschlossene Festplatte weniger als 10 MBit / s (Megabit) verbrauchen, arbeiten Sie mit der maximalen Geschwindigkeit, die der Pi 2 verarbeiten kann.)

Du bistAGitForNotUsingGit
quelle
5

Der Controller ist ein Microchip LAN9512 und der Grund, warum er anstelle von z. B. einer Reihe unabhängiger Controller verwendet wird, ist vermutlich:

  1. Preis. Hier ist ein Beispiel dafür, wo Sie 100 Stück zu je 5 US-Dollar kaufen können.

  2. Formfaktor. Sie erinnern sich vielleicht daran, dass der Raspberry Pi als "Computer in Kreditkartengröße" oder "Computer, der in Ihre Handfläche passt" vermarktet oder als "ein weiteres Mini-ITX-System" oder "ein Computer, der dies tut" vermarktet wurde passt unter einen großen Hut "usw.

  3. Leistung. Ein Blick auf die erste Seite des Datenblattes (über den Microchip-Link zugänglich) "implementiert Betriebsarten mit reduzierter Leistung" wird als eine der "Funktionen" erwähnt. Man müsste tiefer graben, um herauszufinden, was das wirklich im Vergleich bedeutet, aber zumindest oberflächlich betrachtet macht es Sinn.

Denken Sie daran, der Pi kostet ~ 35 $ im Einzelhandel. Nicht $ 135 oder $ 350. Das ist also die Antwort auf die wörtliche Frage in Ihrem Titel: "Warum teilen sich die USB-Anschlüsse und der Ethernet-Anschluss denselben Controller?" .

Beachten Sie, dass es nicht ungewöhnlich ist, dass mehrere USB-Anschlüsse denselben Bus gemeinsam nutzen - dies ist wahrscheinlich die Norm. Ich stelle fest, dass der Laptop, auf dem ich mich befinde, jetzt 3 USB-Anschlüsse hat, aber lsusbnur zwei 2.0 "Full Speed" -Hubs meldet. Mindestens zwei dieser Ports teilen sich einen Hub und sie erhalten nicht beide gleichzeitig "volle Geschwindigkeit". Ich bin sicher, wenn Sie Ihr aktuelles System überprüfen, ist es ähnlich aufgebaut.

Die Kombination des Ethernet mit diesem ist ungewöhnlich, aber es ist erwähnenswert, dass USB 2.0 480 Mbit / s bereitstellen sollte, während die 10/100-Ethernet-Verbindung höchstens 100 davon erfordern würde.

Wikipedia stellt unter Berufung auf die Spezifikation als Quelle fest, dass "aufgrund von Buszugriffsbeschränkungen der effektive Durchsatz der Hochgeschwindigkeitssignalisierungsrate auf 280 Mbit / s oder 35 MB / s begrenzt ist"; Ob dies pro Hafen oder für den gesamten Bus bedeutet, ist unklar.

Inwiefern wird die Datenübertragung verlangsamt?

Offensichtlich werden Sie nicht mehr als 480 Mbit / s insgesamt erhalten, und Sie werden wahrscheinlich nicht mehr als 280 Mbit / s erhalten. Persönlich habe ich noch nie Berichte über einen Pi gesehen oder gehört, der eine Übertragung von mehr als 10 MB / s vom lokalen Ethernet auf einen USB-Anschluss ermöglicht Laufwerk (dh 80 Mbit / s) konsistent für normale Zwecke. Diese Zahl ist jedoch, nachdem die Protokolle selbst verarbeitet wurden, wodurch eine Variable hinzugefügt wird, aber ich denke, ein kleiner Prozentsatz - bei Ethernet kann sie je nach Topologie und Aktivität des verbundenen Netzwerks stark variieren.

Gibt es eine Problemumgehung für dieses Problem?

Wenn Sie meinen, kann ich mehr Wasser durch ein Rohr drücken, als das Rohr enthalten soll, dann nein, oder kann ich eine Pumpe schneller arbeiten lassen oder eine Kombination oder die beiden wieder, nein. Wenn Sie eine schnellere Pumpe oder ein größeres Rohr benötigen, kaufen Sie eine schnellere Pumpe und ein größeres Rohr.

Goldlöckchen
quelle
1

Warum teilen sich die USB-Anschlüsse und der Ethernet-Anschluss denselben Controller?

Da der SoC auf den Seiten 1 bis 3 keinen Ethernet-Controller hat, nur einen einzigen USB-Controller und keine anderen Schnittstellen, die problemlos für Ethernet verwendet werden können. Während Eben einen gewissen Einfluss auf das BCM2835-Design haben konnte, war es letztendlich ein Broadcom-Produkt, und seine Chefs bei Broadcom hätten das Sagen gehabt, aber es gab nur so viel, mit dem er durchkommen konnte.

Denken Sie auch daran, dass der Pi als billiger Computer konzipiert wurde, auf dem Kinder das Programmieren lernen können. Die Tatsache, dass es aufgenommen und auch für alle möglichen anderen Dinge verwendet wurde, war nur ein glücklicher Nebeneffekt.

Das LAN9512 (später durch das LAN9514 ersetzt, um mehr Ports hinzuzufügen, und das LAN7515, um schnelleres Ethernet bereitzustellen) bot eine bequeme Lösung für das Hinzufügen eines zusätzlichen USB-Ports und eines Ethernet-Ports.

Als sie die Armkerne pi2 und pi3 aufrüsteten, beschlossen sie, den Rest des Chips in Ruhe zu lassen (abgesehen von der Behebung eines Speichercontroller-Fehlers, um 1 GB RAM zuzulassen). Ich verstehe, dass dies durch den Versuch motiviert wurde, das Upgrade so billig und risikoarm wie möglich zu gestalten.

Schließlich erreichten sie den Punkt, an dem sie keine andere Wahl hatten, als das SoC-Design grundlegend zu überarbeiten. Glücklicherweise hatten sie auch ihren Kundenstamm so weit ausgebaut, dass eine solche Überholung finanziell rentabel war. Mit dem Himbeer-Pi 4 ist der USB-Hub mit Ethernet-Chip weg, ersetzt durch einen Ethernet-PHY-Chip, der von einem MAC auf dem neuen SoC gesteuert wird, und einen USB3-Controller, der von der PCIe auf dem neuen SoC gesteuert wird.

Peter Green
quelle