Hi. Kann es sein, dass USB eine deutlich spürbare Latenz im Millisekundenbereich hat?
Definitiv JA. Selbst namhafte Hersteller der Automatisierungstechnik bekommen das nicht in den Griff. Das Problem liegt darin begründet, dass man wohl nicht wirklich direkt auf den USB-Bus zugreifen kann und man sich damit begnügen muss wann das Betriebssystem mal Lust hat den Bus zu updaten. MfG Thomas
USB muss im Gegensatz zum Netzwerk der Prozessor alleine machen. Deshalb die größere Latenz.
Grundsätzlich gibt's bei USB Latenzen im Millisekundenbereich. Aber wie Du die spüren willst, bleibt ein Rätsel... ich würde mal sagen, alles kürzer als 20-30 ms spürt man nicht.
Je nach dem was man über den Bus schieben will können das auch mal 50ms sein.
Fullspeed USB hat von der Arbeitsweise her ein Zeitraster von 1ms. Öfter ist nicht.
Alfred schrieb: > Grundsätzlich gibt's bei USB Latenzen im Millisekundenbereich. Aber wie > Du die spüren willst, bleibt ein Rätsel... ich würde mal sagen, alles > kürzer als 20-30 ms spürt man nicht. Oh doch. Bei bei TCP/IP mit Einzelbestätigung der Pakete merkt man das schon deutlich.
Woher kommt denn die Idee, dass der USB unendlich viel Dampf dahinter hat? Dahinter ist die PC CPU, die noch beliebig viele andere mindestens so wichtigen Dinge zu tun hat. Falls man erhoehte Anforderungen hat, dann sollte man den PC als Visualisierungsstation betrachten, die keinerlei Zeitanforderungen erfuellt. Das heisst, die zeitkritischen Dinge sollte man an externe Hardware auslagern.
Bei rs232 gab es weniger Timingprobleme. Das hat man halt von einem riesen Protokolloverhead wie bei USB.
Die Anforderungen sind auch gewachsen. Bei RS232, zB 9600Baud, gibt's ein Byte alle Milisekunde. Mit einem 25MHz 386 unter DOS hatten wir also um die 25000 Befehle pro Byte, kein Betriebssystem. Heute, bei USB 1.2, mit 10MBaud haben wir ein Byte alle Mikrosekunde. Ohne Betriebssytem waeren's auch 2500 Befehle bei 2.5GHz, nur wurde in der Zwischenzeit alles an die CPU ausgelagert. Frueher gab's mal Busmaster Diskcontroller, Busmaster Ethernet karten, gibt's alles nicht mehr, da zu teuer. Teilweise wird das Graphikmemory dem Hauptmemory weggenommen.
USB ist halt ein Schrott-Billig-Desktop-Bus. Für Industrie und Automation war der nie gedacht, ist der total ungeeignet. Und ja: Die Latenz beträgt mindestens eine Millisekunde, per Definition im Protokoll. USB ist ein Billigprotokoll ohne Intelligenz, das macht die PHYs billig. Dafür läuft aber alles über Polling vom Root aus, und das nunmal im Millisekunden-Raster. Und auch ja: Eine konventionelle serielle Schnittstelle lässt sich besser und einfacher in den Griff bekommen.
Netter Versuch schrieb: > der Zwischenzeit alles an die CPU ausgelagert. Frueher gab's mal > Busmaster Diskcontroller, Busmaster Ethernet karten, gibt's alles nicht > mehr, da zu teuer. Bist du sicher, dass Disk-Controller wie SAS/SATA RAID in Hardware, Fibre-Channel-Adapter und die besseren Netzwerkadapter keinen Busmaster-Zugriff verwenden? Aber die Entwicklung gibt es schon, das stimmt. Die auf Adaptecs bekannte Busmaster-SCSIs folgende Generation war zwar ebenfalls Busmaster-Technik, aber in der Komplexität reduziert. Da könnte aber neben der Preisfrage auch ein Stück weit die Erkenntnis Pate gestanden haben, dass es wenig Sinn ergibt, wenn ein superschneller Hauptprozessor Däumchen drehend wartet, während sein 2-3 Grössenordnungen langsamerer I/O-Kollege gemächlich dem Ergebnis entgegen trottet. So wirkt beispielsweise die Übernahme bestimmtet TCP/IP-Funktionen durch Netzwerkadapter zwar entlastend für den Hauptprozessor, was bei hochbelasteten Servern nützlich sein mag. Bei Desktops und wenig belasteten Servern kann es jedoch die Performance sogar reduzieren. Verwendung von Hauptspeicher für Grafikfunktion ist schlichtweg billiger und stromsparend. Wenn das Ergebnis ausreicht, warum nicht? Wenn es nicht ausreicht gibt es immer noch Myriaden von Alternativen.
Netter Versuch schrieb: > Busmaster Ethernet karten, gibt's alles nicht > mehr, da zu teuer. Naja, heute macht man das sauberer per DMA. Richtig, die ganz billigen RT8128-Karten können das nicht, da braucht man das auch nicht wirklich unbedingt. So bald Du aber in den Gigabit Bereich gehst können das plötzlich alle Karten, auch die billigen 6 Euro Dinger. Ich glaub IDE-Controller ohne DMA gibts seit ungefähr dem Jahr 2000 nicht mehr. Unter Linux kannst Du zum Beispiel inzwischen "Zero Copy"-Server bauen. Wenn Du da eine Datei unverschlüsselt über ein Netzwerkprotokoll schicken willst, so schiebt der Plattencontroller die Blöcke der Datei in das RAM, der Kernel erzeugt die Header im RAM, und gibt der Netzwerkkarte die entsprechenden Befehle um daraus die fertigen Pakete zu generieren. Busmaster nennt man das heute übrigens nicht mehr, da wir inzwischen auch im PC vom physikalischen Bus weg kommen. PCI-E hab nur noch physikalische Punkt-zu-Punkt Verbindungen. > Teilweise wird das Graphikmemory dem Hauptmemory > weggenommen. Was ja an sich wieder "Busmaster" ist. :) Es ist ja nicht so als ob die CPU da Bit für Bit den Graphikspeicher ausgeben müsste.
Christian Berger schrieb: > Naja, heute macht man das sauberer per DMA. Ähm... DMA steht hierbei nicht zur Debatte, auch Busmaster-Zugriff ist DMA. Der Unterschied: Unter dem Begriff DMA (mis)versteht man bei PCs oft den steinalten (Third Party) DMA-Controller mit seiner Begrenzung auf 16MB Adressraum, der schon länger praktisch nur noch für Floppy-Disks zuständig war. > Busmaster nennt man das heute übrigens nicht mehr, da wir inzwischen > auch im PC vom physikalischen Bus weg kommen. PCI-E hab nur noch > physikalische Punkt-zu-Punkt Verbindungen. Ok. Wenn der Begriff "Bus" nicht mehr passt obzwar man nicht unbedingt päpstlicher als der Papst sein muss: Wie nennt man das heute? Evtl. First Party DMA, so hiess das anfangs auch schon.
Um zur Ausgangsfrage zurückzukommen: Ja, das ist leider normal und OS-unabhängig. Unter Linux genauso wie unter MacOS wie unter Windows. Wir haben hier Leer-Zeiten von bis zu 50 ms gemessen, wenn wir mit 40MB/s Daten von einem externen Gerät über BULK IN streamen. Da muss man halt entsprechend puffern in der Hardware.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.