USB - Funktionsweise

Zimb0

Enthusiast
Thread Starter
Mitglied seit
20.10.2003
Beiträge
357
Ort
Baden
Hi.
Bin grad leicht verwirrt.
Hatten heut in der Schule ;) die Funktionsweise von USB (BurstMode usw.)
Is ja alles ganz klar.
Nur hatten wir vor 2 Monaten ein Hardware-Seminar, in welchem uns erzählt wurde:
Einem USB(Highspeed!)-Gerät wird immer die Hälfte der verfügbaren Bandbreite zugeteilt.
Beispiel:
480MBit verfügbar (angenommen ein einziger Controller pro Mainboard)
-> Anschluss USB2.0 Drucker => erhält 240 MBit, 240 noch verfügbar
-> Anschluss USB2.0 HDD => erhält 120MBit, 120 noch verfügbar.
-> Anschluss USB2.0 Webcam => erhält 60 MBit usw.........
Dabei spielt die Reihenfolge, welches Gerät ich zuerst einstecke natürlich eine Rolle.

Is da was dran, oder hat uns der Dozent nur Quark erzählt?^^
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Tja, auch ein Dozent weiss nicht alles.

Erstens hast du auf der USB Leitung keine 480MBit in der Realität. Ausserdem ist USB eine weiterentwicklung der seriellen Schnittstelle und da hatte es auch schon keine solche Begrenzung.

Ausserdem müsste sich der USB Controller jedesmal merken welches Gerät an wievielter Stelle angeschlossen wurde, glaube nicht das er das macht.

Und spätestens nach dem 5 Gerät hast du noch eine solch schwache Leistung drauf das du vermutlich nichtmal mehr eine Gaming-Tastatur anschliessen könntest.

Ich glaube daher nicht das die Bandbreite so vergeben wird. Vielmehr glaube ich daran dass die Bandbreite wie bei einem Hub vergeben wird.
 
Hier geht es um die Bandbreite der Schnittstelle nicht um die tatsächlich zur Verfügung stehende Bandbreite nach Protokolloverhead und schlechten Timings, sonst wäre die Aufgabe wohl eh nicht zu meistern.

Genau kann ich das aber bei USB 2.0 Hi-Speed (480 Mbit/s) nicht sagen. Bei USB 1.1 Full Speed, also 12 Mbit/s, ist es so, dass das Gerät welches zuerst die Bandbreite anfordert, diese auch bekommt und der Rest einfach warten muss bis wieder entsprechend Bandbreite da ist (FIFO oder FCFS). Das ist jetzt nicht ganz so technisch ausgedrückt :)

Das von dir bzw. dem Dozenten genannte Schema klingt für mich nicht logisch, da es ja nicht gesagt ist, dass jedes Gerät die volle Hi-Speed Bandbreite benötigt. Das würde ja auch bedeuten, dass je nachdem, in welcher Reihenfolge die Geräte vom System initialisiert werden grundsätzlich für den Betrieb weniger Bandbreite zur Verfügung steht.
Zudem gibt es ja auch noch Low Speed (Maus Tastatur etc.) und Full Speed Geräte die eh nicht die vollen 480 Mbit brauchen, nutzen bzw. für sich beanspruchen.

Aber man kann es ja leicht testen, einfach drei USB Sticks an einen Port anschließen und dann zeitgleich ein und die selbe Datei kopieren, nach der Rechnung müsste der erste nicht ganz doppelt so schnell wie der zweite sein und dito dieser vor dem dritten. Da ja hoffentlich der zweite, wenn der erste keine Bandbreite mehr braucht an die 240 Mbit/s Position geschoben wird. Ich denke aber eher, das alle zeitgleich fertig werden :) (bei zweien klappt es perfekt :))

Das ist alles reine Vermutung ich lasse mich gern eines Besseren belehren. Ich mache mir nämlich normaler Weise keine Gedanken darüber, Hauptsache es looft.
 
Zuletzt bearbeitet:
Hier geht es um die Bandbreite der Schnittstelle nicht um die tatsächlich zur Verfügung stehende Bandbreite nach Protokolloverhead und schlechten Timings, sonst wäre die Aufgabe wohl eh nicht zu meistern.
Wenn er schon davon spricht wieviel ein Geräte bekommt wenn es angeschlossen ist, ist meine Aussage schon richtig. Weil da kann er nicht von 480MBit ausgehen, da das Gerät nicht soviel bekommt

Genau kann ich das aber bei USB 2.0 Hi-Speed (480 Mbit/s) nicht sagen. Bei USB 1.1 Full Speed, also 12 Mbit/s, ist es so, dass das Gerät welches zuerst die Bandbreite anfordert, diese auch bekommt und der Rest einfach warten muss bis wieder entsprechend Bandbreite da ist (FIFO oder FCFS). Das ist jetzt nicht ganz so technisch ausgedrückt :)

Was einfach ausgedrückt wiederum das ist was ich dachte. USB funktioniert ähnlich wie ein Hub.

Wer nicht weis wie ein Hub funktioniert. Dieses gibt nacheinander die Ports frei. Das heist zuerst kommt Port 1, dann Port 2, Port 3 usw.
Diese gibt es immer für eine gewisse, vordefinierte Zeit frei. Auch wenn Gerät an Port 2 nichts sendet/empfängt, frägt das Hub trotzdem nach ob es was senden oder empfangen möchte. Sagt es nein, gehts zum nächsten Anschluss. Sagt es ja, werden für die vordefinierte Zeitspanne Daten übertragen.

Daher kann ich mir gut vorstellen das ein USB wie ein Hub funktioniert. Eventuell einfach etwas besser und schneller da hier ein besserer Controller verbaut werden kann wie in einem billigen externen Hub.
 
danke für eure antworten.

wie gesagt, der kerl hat einfach nur gemeint, dass bei usb-highspeed-geräten ein gerät immer die hälfte der noch verfügbaren bandbreite bekommt. dies sei das prinzip von usb.
auf fragen wie "ja wie is das wenn ich das und das anschließe.." kam einfach immer nur die antwort "IMMER DIE HÄLFTE, DAS IST DAS PRINZIP VON USB"
hat mich eben stutzig gemacht, als ich bei google keine treffer dafür gefunden hab.

Außerdem hat er gemeint, wenn die Geräte nacheinander eingesteckt werden, bleibt die Vergabe der Bandbreite die komplette Zeit so (eben im Beispiel die 120 für die HDD).
Abhilfe könnte man nur mit ner USB-Karte mit nem separatem Controller schaffen.
Beim Seminar war da jeder stutzig.. aber keiner hatte vertieftes Wissen darüber.. und am Ende haben wirs ihm fast alle abgenommen ^^
 
Naja, direkt das Gegenteil konnten wir ja nun noch nicht fundiert feststellen. Aus Implementierungsgründen ist es ja auch fast unmöglich mehr als zwei Geräte an einen USB port laufen zu haben.
Die Mainboard hersteller bauen ja nur zwei Anschlüsse pro Port ein, also müßte man einen USB Hub nutzen um mehr Geräte anzuschließen und dieser wird seine eigene HUB Logik nutzen und nicht mit dem Controller auf dem Mainboard über die Bandbreite für die Angeschlossenen Geräte verhandeln. Denke ich zumindest.
Ich habe auf meiner kleinen Recherche im Web auch keine Whitepapers oder ähnliches über 2.0 gefunden. 1.1 ist da schon etwas besser kommentiert.

Bleibt nur auf 3.0 zu warten, denn dann sollte Bandbreite für einige Monate kein Problem mehr sein :)
 
Da liegst du nicht ganz richtig. Ich denke nicht das auf dem Mainboard für jeden USB Port ein eigener Controller drauf ist. Ich denke eher das ein einziger Controller alle USB Ports verwaltet. Bei meinem Board wären das also 10 USB Ports die durch einen Controller verwaltet werden. Somit könnte man das auf aktuelleren Boards schonmal testen.
 
Das mit der Hälfte finde ich auch unlogisch da dann ja bei Controllern die weniger als 4 Ports verwalten ein Großteil der Bandbreite in den Wind geschossen werden würde.

Am einfachsten oder logischsten wäre es wohl so das alles immer Theoretische volle Bandbreite hat und sofern das nicht mehr hinkommt weil zb 1 Gerät praktisch die volle Für sich beansprucht wird dem der das meiste Fordert soviel gekürzt das wieder alle senden können. Andernfalls würden ja Maus und Tastatur nicht funktionieren wenn man etwas von ner schnellen HDD kopiert.
 
mal ne Off-Topic-Frage:
Meint ihr USB funktioniert mit ner 7m Leitung? (Ich weiß, normalerweise nur 5)
Is ein Drucker...
 
@Zimb0: Es gibt so verlängerungen, wir haben bei uns einen Drucker mit einem 10m Kabel am laufen und das klappt 1A

@Den Rest: Ich hatte bei mir ma zwei externe Platten per USB angeschlossen und die Teilten sich die Bandbreite schon irgendwie. Auf meine hab ich sonst immer so mit 20 - 25 MBs kopiert und da dann nur mit 8 - 12MBs, obwohl beide Platten an komplett unterschiedlichen Ports hingen (die eine an den Front Anschlüssen und die andere hinten).
 
naja kommt auch stark darauf an was der controller zu tun hat, soll e rnur serielle signale einer maus weitergeben oder doch eher Daten verschieben...das geht dann unte randerem auch über die cpu...weiss jetzt aber auch nciht direkt wie windoof das alles regelt.
Auf jedenfall schickt ja der Controller pakete los die stur ne bestimmte grösse haben, diese haben dann ne Addresse im Kopf, jdes gerät im Hub hat sein eigene...deshalb muss auch windoof für jeden Port den Treiber extra reinschreiben.
Das Bus schlägt also die ganze zeit mit gleicher periode packetslot vor, kommen daten an werden sie passend verpackt und verschickt, kommen mehrere daten von verschiedenen geräten an wird halt erst ein Packet für gerät 1 versendet das nächste hat was für gerät 2 drin. Deshalb sind zeitkritische Anwendungen eher schlecht auf USB ausführbar.
Es wird auf keinen Fall irgendwas reserviert für eine bestimmte Datenverbindung meinetwegen Druck->PC oder so, dann könnte man ja gleich für jedes gerät ein eigenes kabel ziehen...Ist auch gar nicht das ziel von Seriellen Schnittstellen, da macht sich ein Paralleler Aufbau bezahlt...der aber schneller ein Resourcenproblem bekommt.

Interessant ist auch die Tatsache das eigentlich ein direktes Abfragen von Daten unter den geräten eigenltich gar nciht möglich ist, weil ja der Hostcontroller nur anfragen an die Geräte schickt aber es gar keine Anfragen von Geräte Seite aus gibt...deshalb gibt es die "on the go" Erweiterung, dort haben die geräte auch einen controller und können unter einander kommunizieren.
Das ist bei Firewire anders gelöst, da wird einfach "gedumpt" ohne beiderseitiger Controller, ähnlich wie ein Internetprotokoll, was zB bei reinen grossen Datenströmen ein vorteil ist, auch reicht an Host und das Gerät wo die daten anstehen kann einfach los senden ohne grossartig alles einzupacken...und braucht dementsprechend keine Chips dafür, wa skosten senkt.
Eigentlich müsste Wiki da ausreichen, vlt steht da noch mehr...ich werd mal kruz googln^^
So mal eine minute gelsen und mein Einfaches Verständnis von Datentransfer ist dahin^^ also USB bietet verschiedene Übertragugsmodi, wa sja auch sinn macht weil manch Anwendungen einfach mal bandbreite brauchen...
auszug aus Wiki:
Endpunkte [Bearbeiten]

USB-Geräte verfügen über eine Anzahl von durchnummerierten „Endpunkten“, gewissermaßen Unteradressen des Gerätes. Die Endpunkte sind in den Geräten hardwareseitig vorhanden und werden von der USB SIE (Serial Interface Engine) bedient. Über diese Endpunkte können voneinander unabhängige Datenströme laufen. Geräte mit mehreren getrennten Funktionen (z. B. Webcams, die Video und Audio übertragen) haben mehrere Endpunkte. Die Übertragungen von und zu den Endpunkten erfolgen meist unidirektional, für bidirektionale Übertragungen ist deshalb ein IN- und ein OUT-Endpunkt erforderlich (IN und OUT beziehen sich jeweils auf die Sicht des Hostcontrollers). Eine Ausnahme davon sind Endpunkte, die den sogenannten Control Transfer Mode verwenden.

In jedem USB-Gerät muss ein Endpunkt mit Adresse 0 vorhanden sein, über den die Erkennung und Konfiguration des Gerätes läuft, darüber hinaus kann er auch noch weitere Funktionen übernehmen. Endpunkt 0 verwendet immer den Control Transfer Mode.

Ein USB-Gerät darf maximal 31 Endpunkte haben: Den Control-Endpunkt (der eigentlich zwei Endpunkte zusammenfasst) und je 15 In- und 15 Out-Endpunkte. Low-Speed-Geräte sind auf Endpunkt 0 plus maximal zwei weitere Endpunkte im Interrupt Transfer Mode mit maximal 8 Bytes pro Transfer beschränkt.

Isochroner Transfer [Bearbeiten]

Der isochrone Transfer ist für Daten geeignet, die eine garantierte Datenrate benötigen. Diese Transferart steht für Full-Speed- und High-Speed-Geräte zur Verfügung. Definiert das Alternate Setting einen Endpunkt mit isochronem Transfer, so reserviert der Host-Controller-Treiber die erforderliche Datenrate. Steht diese Datenrate nicht zur Verfügung, so schlägt die Aktivierung des Alternate Settings fehl, und es kann mit diesem Gerät keine isochrone Kommunikation aufgebaut werden.

Die erforderliche Datenrate ergibt sich aus dem Produkt des Abfrageintervalls und der Größe des Datenpuffers. Full-Speed-Geräte können jede ms bis zu 1023 Bytes je isochronem Endpunkt übertragen (1023 kbyte/s), High-Speed-Geräte können bis zu drei Übertragungen je Micro-Frame (125 µs) mit bis zu 1024 Bytes ausführen (24 Mbyte/s). Stehen in einem Gerät mehrere isochrone Endpunkte zur Verfügung, erhöht sich die Datenrate entsprechend. Die Übertragung ist mit einer Prüfnummer (CRC16) gesichert, wird aber bei einem Übertragungsfehler durch die Hardware nicht wiederholt. Der Empfänger kann erkennen, ob die Daten korrekt übertragen wurden. Isochrone Übertragungen werden z. B. von der USB-Audio-Class benutzt, die bei externen USB-Soundkarten Verwendung findet.

Interrupt-Transfer [Bearbeiten]
USB-Maus für Notebooks
USB-Maus für Notebooks

Interrupt-Transfers dienen zur Übertragung von kleinen Datenmengen, die zu nicht genau bestimmbaren Zeitpunkten verfügbar sind. Im Endpoint Descriptor teilt das Gerät mit, in welchen maximalen Zeitabständen es nach neuen Daten gefragt werden möchte. Das kleinstmögliche Abfrageintervall beträgt bei Low-Speed 10 ms, bei Full-Speed 1 ms und bei High-Speed bis zu drei Abfragen in 125 µs. Bei Low-Speed können pro Abfrage bis zu 8 Byte, bei Full-Speed bis zu 64 Byte und bei High-Speed bis zu 1024 Byte übertragen werden. Daraus ergeben sich maximale Datenraten von 800 byte/s bei Low-Speed, 64 kbyte/s bei Full-Speed und bis zu 24 Mbyte/s bei High-Speed. Die Daten sind mit einer Prüfnummer (CRC16) gesichert und werden bei Übertragungsfehlern bis zu drei mal durch die Hardware wiederholt. Geräte der HID-Klasse (Human Interface Device), zum Beispiel Tastaturen, Mäuse und Joysticks, übertragen die Daten über den Interrupt Transfer.

Bulk-Transfer [Bearbeiten]

Bulk-Transfers sind für große Datenmengen gedacht, die jedoch nicht zeitkritisch sind. Diese Transfers sind niedrig priorisiert und werden vom Controller durchgeführt, wenn alle isochronen und Interrupt-Transfers abgeschlossen sind und noch Datenrate übrig ist. Bulk-Transfers sind durch eine Prüfnummer (CRC16) gesichert und werden durch die Hardware bis zu dreimal wiederholt. Low-Speed-Geräte können diese Transferart nicht benutzen. Full-Speed-Geräte benutzen Puffer-Größen von 8, 16, 32 oder 64 Bytes. High-Speed-Geräte verwenden immer einen 512 Byte großen Puffer.

Control-Transfer [Bearbeiten]

Control-Transfers sind eine besondere Art von Datentransfers, die einen Endpunkt erfordern, der sowohl In- als auch Out-Operationen durchführen kann. Control-Transfers werden generell in beide Richtungen bestätigt, so dass Sender und Empfänger immer sicher sein können, dass die Daten auch angekommen sind. Daher wird der Endpunkt 0 im Control-Transfer-Modus verwendet. Control-Transfers sind zum Beispiel nach dem Detektieren des USB-Geräts und zum Austausch der ersten Kommunikation elementar wichtig.

Die Links führen sogar zu nem Video^^ und auch anderen Seiten wo ausführlich darüber geplaudert wird und all eure Fragen beantworten werden...

Vielleicht etwas an der Frage vorbeigeredet, aber es bleibt so wie es ist:
Es gibt Geräte die sich Bandbreite Reservieren kann,
Pauschal zu sagen das und das Gerät kriegt diese bandbreite wäre mehr als dürftig für eine UNIVERSELLEN BUS(wer macht den bei euch Info Unterricht??)
USB ist ja in den jeweiligen Schritten pro sekunden eingeteilt (was dann auch der Hauptunterschied von USB 1.0/1.1 2.0 ist bzw dessen Übertragungsgeschwindigkeit), dh so und so viele Packete sind für ein Gerät reserviert dies geschieht dynamisch bzw. es bestimmt das gerät/Software, dann kommen halt die Burstdaten(Festplatten kopien) wenn mal was frei das ist auch der Grund warum du deine Maus immer noch bewegen kannst wenn du kopierst.

Zieht euch mal die video auf wiki rein sehr informativ, was sich so entwickelt hat...nagut ist ein Maci der da erzählt aber sollen ja auhc menschen sein ;)

Achso eins noch auf einem Motherboard gibts meist nur einen Hostcontroller der dann meist mit an den BUS via PCIexp oder andere Links angebunden ist, das schafft eine Flaschenhals ab, extra USBhost auf PCI basis sind für 2.0 theoretisch schon zu langsam...es bieten die modernen Southbridges immer eine solche Schnittstelle.
 
Zuletzt bearbeitet:
vielleicht passt die frage hier ja, was ist die hauptunterschiede von USB HUB (extern) und USB Controller PCI

besonders von nutzung her von versichedenen Geräten von Tastatur bis USB Stick/Drücker.
 
ein usb hub verteilt nur. dir stehen für alle angeschlossenen geräte nur einmal die bandbreite des ursprungsanschlusses zur verfügung.

ein echter usb controller bietet für jeden anschluss die maximale datenrate, so es denn der PCI bus hergibt :)

bei geräten, die eh keine große datenrate benötigen (maus, tasta usw) ist es egal. jedoch bei usb sticks, externen festplatten, scannern, ja sogar druckern kann es dabei zu einem datenengpass kommen. die geräte laufen dann eben mit reduzierter geschwindigkeit, wenn mehr als ein usb-gerät zur gleichen zeit angesprochen wird.
 
Zuletzt bearbeitet:
ist wie bei ein einer Strasse, beim Controller hat jedes Gerät seine eigene ausfahrt, ein Hub ist in dem Fall ein Mehrfamilien haus mit nur einer Einfahrt für alle Parteien, sprich wenn der Nachbar HDD grad sein Auto wäscht, kann herr Drucke sein Auto in der Garage stehen lassne und warten, naja gut bei USB muss er da snur ein paar Zyklen sprich ms^^
ich verweis enochmals auf diese Seite:
http://de.wikipedia.org/wiki/Universal_Serial_Bus#USB-Host-Controller-Treiber
 

Ähnliche Themen

Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh