Un hub USB influisce sulle prestazioni?


24

Ho due dispositivi che voglio il massimo throughput e latenza ( MIDI batteria e tastiera MIDI, per esempio.)

Il collegamento di entrambi alla stessa porta USB tramite un hub limiterebbe effettivamente la velocità massima di trasferimento dei dati a 1/2 a ciascuno di essi?

Suppongo di sì, ma non sapevo se gli hub USB disponessero di un protocollo di handshaking e di priorità (ad esempio, lasciare che il dispositivo con il buffer di dati più lungo accumulato comunichi per primo).

Risposte:


17

Sì. Tutti i dispositivi collegati tramite un hub USB condividono la larghezza di banda disponibile per tale hub. Tuttavia, non specificamente al 50% ciascuno. Hai 480 Mbit / s con cui lavorare per hub USB 2.0 sul computer . Cosa intendo con questo? Bene, il tuo computer ha hub USB integrati. Sì, non tutte le porte sono una singola entità. Nella maggior parte dei casi, quando vedi due porte USB impilate una sopra l'altra, si trovano su un hub insieme internamente.

Questo vale anche con due porte affiancate sui laptop. Quindi, non pensare di poter semplicemente collegare due hub in porte USB affiancate e avere MOLTE porte USB per collegare dispositivi ad alta velocità di trasferimento dati.

Quello che devi REALMENTE fare è guardare alle velocità di trasferimento dati previste dei dispositivi che intendi connettere. Mi aspetto che la batteria MIDI sia considerata una velocità di trasferimento bassa, mentre la tastiera sarà una velocità di trasferimento bassa o media. Questo sarebbe paragonato a qualcosa come una scheda audio USB ... che non vorresti condividere un hub con nient'altro.

Con un hub alimentato, ogni dispositivo otterrà la potenza di cui ha bisogno, mentre con un hub non alimentato, tutti i dispositivi condividono tutta la potenza che la porta USB host può emettere. Quindi, c'è anche da considerare.

Molto probabilmente lo saprai già, ma per problemi di latenza, i driver ASIO4ALL risolveranno la maggior parte, se non tutti i potenziali problemi. Lo sto solo facendo uscire.


+1 per ASIO4ALL. usato per uccidere il mio ritardo in Rocksmith. meraviglia doest la comunità di fabbro lo sa!
Camelbrush,

Sei sicuro che un controller audio USB subirà un collo di bottiglia della velocità effettiva se non ha un controller USB intero su se stesso? Penso che dovrebbero essere progettati per funzionare su hub, almeno per l'audio a 2 canali.
jiggunjer,

28

In realtà, sono sorpreso che la prima risposta sia accettata e votata senza alcun fatto a supporto dell'affermazione, poiché molto probabilmente è sbagliata. Sia la batteria MIDI che la tastiera MIDI sono quasi certamente dispositivi a bassa velocità, quindi consumeranno meno dell'1% della banda con al massimo da un hub ad alta velocità (2 * 1 Mbit / s / 480 Mbit / s * 100% = 0.4% ).

In effetti, la presenza dell'hub introdurrà una latenza, che è dell'ordine di decine di microsecondi per hub a bassa velocità o centinaia di nanosecondi per hub ad alta velocità. In quest'ultimo caso, questa latenza svanirà una volta aggiunta la latenza introdotta dal software MIDI.

Inoltre, il protocollo USB supporta le priorità di trasferimento (consultare Interrupt transfer ), che consentirà ai dispositivi MIDI di coesistere anche con un disco rigido o uno scanner sullo stesso bus senza influire in modo significativo sulla velocità di trasferimento o sulla latenza. Tuttavia, non farò alcuna dichiarazione poiché non ho familiarità con i dispositivi MIDI in particolare.


15

La risposta breve è che vuoi davvero un hub Multi-TT per questa applicazione, in cui 2 o più dispositivi USB sono probabilmente 12 Mbit / sec. Cerca "Multi-TT" su Amazon, Newegg o altri siti per trovare questi hub.

Sfortunatamente, questo importante dettaglio tecnico è raramente menzionato. La maggior parte degli hub utilizza un design Single-TT più economico. I buoni TT multipli sono raramente pubblicizzati come dotati di questa funzione, nemmeno contrassegnati sul pacchetto. Purtroppo, la maggior parte delle persone probabilmente non ha mai nemmeno sentito parlare dei TT, motivo per cui gli esperti di marketing non si preoccupano di dirti quale design usano i loro hub.

Puoi verificare se il tuo hub ha questa funzione usando Gestione dispositivi di Windows. Cerca le parole "L'hub ha più TT" nella scheda Avanzate.

Schermata Gestione dispositivi

Su Linux, il tipo di hub può essere verificato con "lsusb -v | grep TT". Non sono a conoscenza di alcun modo semplice per controllare su Macintosh, tranne l'utilità "USB Prober" che Apple pubblica nei loro strumenti di sviluppo Xcode.

TT sta per Transaction Translator. I dettagli sono complessi e completamente documentati nel capitolo 11 della specifica USB, che può essere scaricato gratuitamente da www.usb.org. Ma in breve, il TT converte tra 480 MBit / sec dal tuo PC alle velocità più basse di 12 o 1,5 MBit / sec.

Normalmente quando suoni quegli strumenti musicali, i loro controller generano messaggi MIDI e li impacchettano in buffer di memoria, che attendono il momento in cui il tuo PC richiede i dati. Quando il PC si collega direttamente, invia un messaggio chiamato token IN al tuo strumento. Lo strumento può rispondere al token IN in due modi, un pacchetto DATA o un token NAK per non indicare alcun dato. Il tuo PC invia quei token IN molto rapidamente, quindi il risultato è la consegna quasi istantanea dei tuoi eventi musicali come messaggi MIDI.

Tuttavia, quando il dispositivo MIDI da 12 MBit / sec si collega tramite un HUB USB 2.0, si verifica una comunicazione molto diversa, il tutto a 480 MBit / sec. Il PC in realtà comunica con Transaction Translator nell'hub. Invia 2 messaggi. Innanzitutto, il messaggio SSPLIT (Avvia transazione divisa) viene inviato al TT. Se il TT non è occupato, invia un riconoscimento. Quindi il TT trasmette il token IN alla tastiera MIDI alla velocità più bassa di 12 MBit / sec. Nel frattempo, il tuo PC è in grado di comunicare con altri dispositivi a 480 Mbit / sec. La tua tastiera MIDI non può dire se il token IN proviene direttamente dal tuo PC o dal TT di un hub. Funziona esattamente come se fosse collegato al PC. Il TT all'interno dell'hub riceve la risposta NAK o DATA. Mentre è in corso, il tuo PC inizia a inviare messaggi CSPLIT (Transazione divisa completa) al TT dell'hub. Le risposte TT con uno speciale token NYET indicano che il TT è ancora impegnato a comunicare a 12 Mbit / sec, oppure il NAK o i DATI dalla tastiera.

Se hai sia una tastiera MIDI che una batteria MIDI collegate, cosa succede se il tuo PC desidera inviare un messaggio SSPLIT per chiedere al TT di comunicare con la batteria, ma il TT è già occupato a comunicare con la tastiera? Con un solo TT, l'hub può rispondere a NYET a una nuova richiesta SSPLIT, poiché è occupato a eseguire IN + DATA a 12 MBit / sec. Sicuramente non vuoi quello scenario!

Gli hub TT multipli hanno un TT dedicato su ogni porta a valle (a cui si collegano i dispositivi). Con più TT, l'hub è sempre in grado di accettare una richiesta SSPLIT, anche quando gli altri TT sono impegnati a comunicare con altri dispositivi a valle. Con un solo TT, il tuo PC potrebbe finire in attesa, anche attraverso una larghezza di banda di 480 MBit / sec, poiché l'hub ha una capacità limitata di convertire più di 1 messaggio alla volta tra le diverse velocità.

Questa descrizione ha riguardato molti importanti problemi di temporizzazione USB gestiti dal TT, ma il punto importante è che gli hub USB 2.0 possono utilizzare due design nettamente diversi. Vuoi davvero evitare gli hub Single-TT più economici.

Le velocità USB 3.0 e 3.1 sono state menzionate altrove in queste risposte. Ma i TT nell'hub non convertono mai tra le velocità 5 o 10 gigabit e le velocità 480, 12 o 1,5. Invece, gli hub USB 3.0 e 3.1 funzionano come una coppia di hub. I segnali gigabit hanno i loro pin dedicati nei nuovi connettori USB, che si collegano a un hub che funziona solo a una velocità di 5 o 10 Gbit / sec. La comunicazione simultanea a 480 Mbit / sec si verifica sui pin originali, quindi i dispositivi 12 e 1,5 MBit / sec vengono convertiti in 480 Mbit / sec dai TT, ma mai a 5 o 10 Gbit / sec.

Anche menzionato altrove è "bassa velocità", che tecnicamente significa 1,5 Mbit / sec nel gergo USB, ma può significare 1,5 o 12 Mbit / sec nelle conversazioni casuali. 12 Mbit / sec è chiamato "full speed" nella terminologia USB. Il protocollo USB MIDI, che è tecnicamente parte di "Audio Class Specification", utilizza il protocollo "bulk" ( non il protocollo di interrupt, come affermato in un'altra risposta). Le specifiche USB non consentono il protocollo di trasferimento di massa per una velocità di 1,5 Mbit / sec. Quindi, a meno che un dispositivo USB MIDI non violi molto gravemente la velocità USB, sarà sempre di almeno 12 Mbit / sec. USB MIDI può avere una velocità di 480 Mbit / sec, nel qual caso i TT non si applicano. Ma la stragrande maggioranza dei prodotti USB MIDI oggi ha ancora una velocità di 12 Mbit / sec.

Quindi vuoi davvero assicurarti che i tuoi hub USB siano di tipo Multi-TT, se hai intenzione di massimizzare le prestazioni.


Come si ottiene quella vista che mostra i dispositivi che consumano larghezza di banda nell'immagine? Le mie proprietà non hanno nemmeno quella scheda.
user5389726598465

3

Realisticamente, la condivisione di una singola porta USB utilizzando un hub per espandere il numero di dispositivi collegati probabilmente non importerà troppo anche se si utilizzano tutti i dispositivi collegati contemporaneamente. La maggior parte dei dispositivi non utilizzerà gran parte del trasferimento dei dati alla volta. È ancora meno preoccupante se stai usando porte USB 3.0 o 3.1, che sono rispettivamente 10 e 20 volte più veloci di 2.0, ma puoi anche inviare e ricevere dati allo stesso tempo, fornire più energia e funzionerà con 2.0 dispositivi.

Come indicato, fintanto che l'alimentazione sufficiente è in esecuzione attraverso ogni dispositivo collegato alla porta, non dovrebbero verificarsi problemi.


1

Solo il mio caso come esempio di HUB USB 3.0 che rallenta quando più di un dispositivo è collegato ad esso.

Ho due set identici di: da SataIII a USB3.1 Gen2 tipo C con un SSD da 480 GB.

Se inserisco l'SSD in una porta SataIII, il comando dd Linux legge a più di 500 MiB / s.

Se inserisco l'SSD nel contenitore SataIII a USB 3.1 Gen2 di tipo C, il comando dd Linux legge quasi 413 MiB / s, indipendentemente da uno dei due set che utilizzo.

La cosa strana arriva quando mi collego a USB 3.0 entrambi gli enclosure e chiedo a Linux di leggere da entrambi (non importa se LVM stripe, RAID0 o due comandi dd simultanei), legge solo a 2x150 = 300 MiB / s.

Quindi quando entrambi sono collegati, perdo vicino a 413-300 = 113 MiB / s di velocità.

In altre parole:

  • Un SSD su USB 3 HUB, ottengo 413 MiB / s letto
  • Due SSD su USB 3 HUB, ottengo 150 + 150 = 300 MiB / s letto
  • Lettura rilevata (per SSD) quando due SSD sull'hub USB 3 sarebbero meno vicini a 413/2 = 206MiB / s ma sono solo intorno a 150 MiB / s ciascuno, non> 200 MiB / s come si suppone.

Comincio a pensare che il problema riguardi il protocollo Hub USB 3 per alternare la banda di dati con entrambe le unità, aggiungendo un enorme sovraccarico.

Quindi posso confermare che l'hub USB 3 che ho tra le mani rallenta un SSD molto più della banda max, quando più di uno è collegato contemporaneamente.

Inoltre, ho testato con un SSD e una chiavetta USB 3.0 molto lenta (meno di 50 MiB / s), la velocità di lettura combinata dell'hub USB 3 scende a 263 MiB / s, quindi posso confermare che la lettura combinata libera è di circa 100 MiB / s se collego qualsiasi altro dispositivo di archiviazione USB.

E ancora, e anche peggio, collego un mouse (o una tastiera), e la velocità di lettura SSD è anche vicino a 313 MiB / s, scollego il mouse / tastiera e la velocità di lettura SSD torna a 413 MiB / s, quindi di nuovo vicino a 100 MiB / s velocità di lettura persa solo perché un mouse è collegato (e utilizzato); se non sposto la velocità di lettura del mouse ritorna a 413 MiB / s.

Quindi l'HUB sta causando un forte calo della velocità di lettura (vicino a 100 MiB / s) sulla velocità di trasferimento combinata quando non solo un dispositivo è collegato (e viene utilizzato), non importa quale altro tipo di dispositivo collego, non appena ha più di uno che funziona allo stesso tempo, ottengo una velocità di lettura combinata vicino a 100 MiB / s inferiore rispetto a quando uso solo un dispositivo alla volta.

Avevo anche provato con tre dispositivi: SSD + Mouse + Tastiera, perdo ancora abbastanza vicino alla stessa velocità, circa 100 MiB / s.

Se leggo da un solo SSD, ma ho entrambi connessi, mi avvicino anche a 413 MiB / s.

Il prezzo dell'hub USB 3.0 era di circa 20 €, non economico.

Conclusione: USB HUB 3.0 libera molta velocità di trasferimento MiB / s quando più dispositivi sono collegati (e trasferiti) contemporaneamente, chissà perché! forse perché divide il trasferimento di tempo per il numero di dispositivi (abbastanza usurati) o forse perché ha un enorme sovraccarico sui dispositivi di ciclismo, ecc.

Spero che questo aiuti qualcuno a identificare il problema, tutti i test sono stati eseguiti su Linux Live SystemRescueCD (ultima versione) con comando dd con status = progress, dimensione del blocco di un megabyte e conteggio pari a mille (lettura di un totale di 1GiB), dispositivo dest / dev / null.

Sto programmando (quando / se sarò ricco) di acquistare un altro HUB USB 3.x, questa volta un 3.1 Gen 2 per verificare se succede lo stesso o è quel marchio che ha un algoritmo firmware scadente.


Gli SSD sono molto diversi dai dispositivi nella domanda. Ogni SSD sta tentando di trasferire dati a una larghezza superiore alla larghezza di banda della porta USB 3. Quindi perdi molta larghezza di banda solo in caso di collisione.
fixer1234,

1

Quando utilizzo una connessione diretta tra il mio computer portatile, che ha un disco rigido da 750 GB 5400rpm e i miei dischi rigidi esterni da 8 GB, le velocità di trasferimento sono in realtà molto più lente rispetto a quando utilizzo un hub USB. Ad esempio, di recente ho copiato e incollato quattro film aggiungendo fino a circa 120 GB di dati. Ecco cosa è successo.

  1. Innanzitutto, ho copiato i quattro film aggiungendo fino a 120 GB di dati sul disco rigido del mio laptop, quindi li ho incollati sul disco rigido esterno da 8 GB. Ci sono voluti circa 80 minuti per il trasferimento, perché la velocità di trasferimento dei dati era solo di circa 30 Mb. La velocità di trasferimento dei dati presentava picchi che variavano da 20 Mb a 35 Mb.

  2. In secondo luogo, ho quindi collegato l'altro disco rigido esterno da 8 GB che è esattamente lo stesso modello. Questa volta ho usato l'hub USB 3.0 a 4 porte. Questa volta la velocità di trasferimento dei dati è stata molto più rapida, a volte superiore a 90 Mb. La velocità di trasferimento dei dati ha avuto picchi compresi tra 50 Mb e oltre 90 Mb. Ci sono voluti solo 30 minuti per trasferire i dati.

  3. In terzo luogo, come esperimento, ho collegato entrambi i dischi rigidi esterni da 8 GB contemporaneamente tramite l'hub USB 3.0. Ho copiato tutti e quattro i film con i 120 GB di dati da un disco rigido all'altro. Questa volta il trasferimento è stato ancora più veloce che mai. La velocità di trasferimento dei dati era di circa 150 Mb e non vi erano picchi nella velocità di trasferimento. È stata una linea costante di 150 Mb per tutto il tempo.

Ho fatto esperimenti con altri trasferimenti di dati di grandi dimensioni. Per qualche motivo, la connessione USB 3.0 diretta a un disco rigido esterno è molto più lenta rispetto a quando è coinvolto un hub USB 3.0. ... Qualcuno sà perche è cosi?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.