Um hub USB afeta o desempenho?


24

Tenho dois dispositivos Quero máximo rendimento e latência com ( MIDI bateria e teclado MIDI, por exemplo.)

A conexão das duas à mesma porta USB por meio de um hub limitaria efetivamente a taxa máxima de transferência de dados de 1/2 a cada uma delas?

Estou assumindo que sim, mas não sabia se os hubs USB tinham um protocolo de handshaking e prioridade dando (por exemplo, permita que o dispositivo com o buffer de dados mais longo se comunique primeiro).

Respostas:


17

Sim. Todos os dispositivos conectados através de um hub USB compartilham a largura de banda disponível para esse hub. Não especificamente em 50% cada um. Você tem 480 Mbit / s para trabalhar por hub USB 2.0 no computador . O que quero dizer com isso? Bem, seu computador possui hubs USB embutidos. Sim, nem toda porta é uma entidade individual. Na maioria dos casos, quando você vê duas portas USB empilhadas uma em cima da outra, elas estão juntas em um hub internamente.

Isso também se aplica a duas portas lado a lado em laptops. Portanto, não pense que você pode simplesmente conectar dois hubs em portas USB lado a lado e ter MUITAS portas USB para conectar dispositivos com alta taxa de transferência de dados.

O que você REALMENTE precisa fazer é analisar as taxas de transferência de dados esperadas dos dispositivos que você pretende conectar. Eu esperaria que a bateria MIDI seja considerada uma taxa de transferência baixa, enquanto o teclado será uma taxa de transferência baixa ou média. Isso seria comparado a algo como uma placa de som USB ... que você não gostaria de compartilhar um hub com mais nada.

Com um hub alimentado, cada dispositivo obtém a energia necessária, enquanto que com um hub não energizado, todos os dispositivos compartilham a energia que a porta USB do host pode usar. Então, há isso a considerar também.

Você provavelmente já sabe, mas, para problemas de latência, os drivers do ASIO4ALL curam a maioria, senão todos os problemas em potencial. Apenas colocando isso lá fora.


+1 para ASIO4ALL. usei para matar meu atraso em Rocksmith. maravilha doest a comunidade rocksmith sabe sobre isso!
Camelbrush #

Você tem certeza de que um controlador de áudio USB sofrerá um gargalo de taxa de transferência se não possuir um controlador USB inteiro ? Eu acho que eles devem ser projetados para funcionar em hubs, pelo menos para áudio de 2 canais.
21416 jiggunjer #

28

Na verdade, estou surpreso que a primeira resposta seja aceita e votada sem nenhum fato para apoiar a afirmação, pois é provavelmente uma pergunta errada. A bateria MIDI e o teclado MIDI são quase certamente dispositivos de baixa velocidade; portanto, consumirão menos de 1% da largura de banda de um hub de alta velocidade no máximo (2 * 1 Mbit / s / 480 Mbit / s * 100% = 0,4% )

De fato, a presença do hub introduzirá uma latência, que é da ordem de dezenas de microssegundos para hubs de baixa velocidade ou centenas de nanossegundos para hubs de alta velocidade. Neste último caso, essa latência desaparecerá quando você adicionar a latência introduzida pelo software MIDI.

Além disso, o protocolo USB suporta prioridades de transferência (consulte Transferências de interrupção ), o que permitirá que os dispositivos MIDI coexistam mesmo com um disco rígido ou um scanner no mesmo barramento, sem afetar muito a velocidade ou latência da transferência. No entanto, não farei nenhuma declaração, pois não estou familiarizado com dispositivos MIDI em particular.


15

A resposta curta é que você realmente deseja um hub Multi-TT para esta aplicação, onde 2 ou mais de seus dispositivos USB provavelmente têm 12 Mbit / s. Procure por "Multi-TT" na Amazon, Newegg ou em outros sites para encontrar esses hubs.

Infelizmente, esse importante detalhe técnico raramente é mencionado. A maioria dos hubs usa um design Single-TT mais barato. Os bons TT múltiplos raramente são anunciados como tendo esse recurso, nem mesmo marcados na embalagem. Infelizmente, a maioria das pessoas provavelmente nunca ouviu TTs, e é por isso que os profissionais de marketing não se preocupam em dizer qual design seus hubs usam.

Você pode verificar se o seu hub possui esse recurso usando o Windows Device Manager. Procure as palavras "O hub possui vários TTs" na guia Avançado.

Captura de tela do Gerenciador de dispositivos

No Linux, o tipo de hub pode ser verificado com "lsusb -v | grep TT". Não conheço nenhuma maneira simples de verificar no Macintosh, exceto o utilitário "USB Prober", que a Apple publica em suas ferramentas de desenvolvimento do Xcode.

TT significa Transaction Translator. Os detalhes são complexos e estão totalmente documentados no capítulo 11 da especificação USB, que é um download gratuito em www.usb.org. Em resumo, o TT converte entre 480 MBit / s do seu PC para velocidades mais lentas de 12 ou 1,5 MBit / s.

Normalmente, quando você toca esses instrumentos musicais, seus controladores geram mensagens MIDI e os embalam em buffers de memória, que aguardam o momento em que seu PC solicita os dados. Quando o seu PC se conecta diretamente, ele envia uma mensagem chamada token IN para o seu instrumento. Seu instrumento pode responder ao token IN de duas maneiras, um pacote DATA ou um token NAK para indicar nenhum dado. Seu PC envia esses tokens de entrada muito rapidamente, então o resultado é a entrega quase instantânea de seus eventos musicais como mensagens MIDI.

No entanto, quando o seu dispositivo MIDI de 12 MBit / s se conecta através de um HUB USB 2.0, ocorre uma comunicação muito diferente, tudo a 480 MBit / s. Seu PC realmente se comunica com o Transaction Translator no hub. Envia 2 mensagens. Primeiro, a mensagem SSPLIT (Iniciar transação dividida) é enviada ao TT. Se o TT não estiver ocupado, envia uma confirmação. Em seguida, o TT transmite o token IN para o teclado MIDI na velocidade mais lenta de 12 MBit / s. Enquanto isso, seu PC pode se comunicar com outros dispositivos a 480 Mbit / s. Seu teclado MIDI não pode dizer se o token IN veio diretamente do seu PC ou do TT de um hub. Faz exatamente a mesma coisa que se estivesse conectado ao seu PC. O TT dentro do hub recebe a resposta NAK ou DATA. Enquanto isso estiver em andamento, seu PC começará a enviar mensagens CSPLIT (Complete Split Transaction) para o TT do hub. O TT responde com um token especial da NYET: o TT ainda está ocupado se comunicando a 12 Mbit / s, ou o NAK ou DATA do seu teclado.

Se você tem um teclado MIDI e uma bateria MIDI conectados, o que acontece se o seu PC deseja enviar uma mensagem SSPLIT solicitando que o TT se comunique com a bateria, mas o TT já está ocupado se comunicando com o teclado? Com apenas um TT, o hub pode responder NYET a uma nova solicitação SSPLIT, porque está ocupado executando IN + DATA a 12 MBit / s. Você definitivamente não quer esse cenário!

Vários hubs TT têm um TT dedicado em todas as portas downstream (nas quais você conecta dispositivos). Com vários TTs, o hub sempre pode aceitar uma solicitação SSPLIT, mesmo quando os outros TTs estão ocupados comunicando outros dispositivos a jusante. Com apenas um TT, seu PC pode acabar esperando, mesmo com uma largura de banda de 480 MBit / s, porque o hub tem capacidade limitada de converter mais de uma mensagem por vez entre as diferentes velocidades.

Esta descrição destacou muitos problemas importantes de tempo de USB que os TTs lidam, mas o ponto importante é que os hubs USB 2.0 podem usar dois designs distintos. Você realmente deseja evitar os hubs Single-TT mais baratos.

As velocidades USB 3.0 e 3.1 foram mencionadas em outras partes dessas respostas. Mas os TTs no hub nunca se convertem entre as velocidades de 5 ou 10 gigabit e 480, 12 ou 1,5. Em vez disso, os hubs USB 3.0 e 3.1 funcionam como um par de hubs. Os sinais de gigabit têm seus próprios pinos dedicados nos conectores USB mais recentes, que são conectados a um hub que roda apenas a uma velocidade de 5 ou 10 Gbit / s. A comunicação simultânea de 480 Mbit / s ocorre nos pinos originais; portanto, os dispositivos de 12 e 1,5 MBit / s são convertidos em 480 Mbit / s por TTs, mas nunca em 5 ou 10 Gbit / s.

Também mencionado em outro lugar é "baixa velocidade", que tecnicamente significa 1,5 Mbit / s no jargão USB, mas pode significar 1,5 ou 12 Mbit / s em conversas casuais. 12 Mbit / s é chamado de "velocidade máxima" na terminologia USB. O protocolo USB MIDI, que é tecnicamente parte da "Audio Class Specification", usa o protocolo "bulk" ( não o protocolo de interrupção, conforme reivindicado em outra resposta). A especificação USB não permite protocolo de transferência em massa para velocidade de 1,5 Mbit / s. Portanto, a menos que um dispositivo MIDI USB viole muito a velocidade do USB, ele sempre terá uma velocidade de pelo menos 12 Mbit / s. O MIDI USB pode ter uma velocidade de 480 Mbit / s; nesse caso, os TTs não se aplicam. Mas a grande maioria dos produtos MIDI USB atualmente ainda tem velocidade de 12 Mbit / s.

Então, você realmente deseja garantir que seus hubs USB sejam do tipo Multi-TT, se você planeja maximizar o desempenho.


Como você vê essa exibição mostrando dispositivos consumindo largura de banda na sua imagem? Minhas propriedades nem sequer têm essa guia.
user5389726598465

3

Realisticamente, o compartilhamento de uma única porta USB usando um hub para expandir quantos dispositivos você conecta provavelmente não será muito importante, mesmo se você usar todos os dispositivos conectados simultaneamente. A maioria dos dispositivos não utilizará muito a transferência de dados por vez. É ainda menos preocupante se você estiver usando portas USB 3.0 ou 3.1, que são 10 e 20 vezes mais rápidas que 2.0, respectivamente, mas também pode enviar e receber dados ao mesmo tempo, fornecer mais energia e trabalhar com o 2.0 dispositivos.

Conforme declarado, enquanto houver energia suficiente em todos os dispositivos conectados à porta, nenhum problema deverá ocorrer.


1

Apenas o meu caso como um exemplo de HUB USB 3.0 desacelerando quando mais de um dispositivo está conectado a ele.

Eu tenho dois conjuntos idênticos de: gabinete SataIII para USB3.1 Gen2 tipo C com um SSD de 480 GB.

Se eu colocar o SSD em uma porta SataIII, o comando Linux dd exibirá mais de 500MiB / s.

Se eu colocar o SSD no gabinete SataIII para USB 3.1 Gen2 Tipo C, o comando Linux dd terá uma leitura próxima de 413MiB / s, independentemente de qual dos dois conjuntos eu usar.

O estranho é que quando conecto os dois gabinetes USB 3.0 e peço ao Linux que leia de ambos (não importa se a faixa LVM, RAID0 ou dois comandos dd simultâneos), ele lê apenas 2x150 = 300 MiB / s.

Portanto, quando os dois estão conectados, perco perto de 413-300 = 113MiB / s de velocidade.

Em outras palavras:

  • Um SSD para USB 3 HUB, obtenho 413MiB / s de leitura
  • Dois SSD em USB 3 HUB, recebo 150 + 150 = 300MiB / s de leitura
  • Leitura especificada (por SSD) quando dois SSD no hub USB 3 seriam tão próximos quanto 413/2 = 206MiB / s, mas eles são apenas 150MiB / s cada, não> 200MiB / s como seria de se esperar.

Começo a pensar que o problema está no protocolo USB 3 Hub para alternar a largura de banda de dados com as duas unidades, adicionando uma enorme sobrecarga.

Para que eu possa confirmar que o hub USB 3 que tenho em minhas mãos reduz a velocidade de um SSD muito mais do que a largura de banda máxima, quando mais de um está conectado ao mesmo tempo.

Além disso, testei com um SSD e um stick USB 3.0 muito lento (menos de 50MiB / s), a velocidade de leitura combinada do Hub USB 3 desce para 263MiB / s, para que eu possa confirmar a leitura combinada está em torno de 100MiB / s se conecto qualquer outro dispositivo de armazenamento USB.

E mais, e também pior, conecto um Mouse (ou um teclado) e a velocidade de leitura do SSD também fica perto de 313MiB / s, desconecto o mouse / teclado e a velocidade de leitura do SSD volta a 413MiB / s, então novamente perto de 100MiB / s velocidade de leitura perdida apenas porque um mouse está conectado (e sendo usado); se eu não mover, a velocidade de leitura do mouse voltará para 413MiB / s.

Portanto, o HUB está causando uma enorme queda na velocidade de leitura (perto de 100MiB / s) na taxa de transferência combinada quando não apenas um dispositivo está conectado a ele (e está sendo usado), não importa que outro tipo de dispositivo eu conecte, assim que ele tem mais do que apenas um trabalhando ao mesmo tempo, obtenho uma velocidade de leitura combinada próxima a 100MiB / s mais baixa do que ao usar apenas um dispositivo ao mesmo tempo.

Eu também havia testado com três dispositivos: SSD + Mouse + Teclado, ainda perco quase a mesma velocidade, cerca de 100MiB / s.

Se eu ler de apenas um SSD, mas tiver os dois conectados, também chego perto de 413MiB / s.

O preço do hub USB 3.0 foi de 20 €, e não barato.

Conclusão: O USB HUB 3.0 perde muito da velocidade de transferência MiB / s quando mais de um dispositivo está conectado (e transferindo) ao mesmo tempo, quem sabe por quê! talvez porque divida a transferência de tempo pelo número de dispositivos (bastante desgastados) ou talvez porque tenha uma enorme sobrecarga nos dispositivos de ciclismo, etc.

Espero que isso ajude alguém a identificar o problema, todos os testes foram feitos no Linux Live SystemRescueCD (última versão) com o comando dd com status = progress, tamanho do bloco de um megabyte e contagem igual a mil (lendo um total de 1 GiB), dispositivo de destino / dev / null.

Estou planejando (quando / se vou ficar rico) em comprar outro HUB USB 3.x, desta vez um 3.1 Gen 2 para verificar se acontece o mesmo ou é a marca que possui algoritmos de firmware ruins.


Os SSDs são muito diferentes dos dispositivos em questão. Cada SSD está tentando transferir dados com mais do que a largura de banda da porta USB 3. Então você perde muita largura de banda apenas em colisões.
Fixer1234

1

Quando uso uma conexão direta entre o meu laptop, que possui um disco rígido de 750 GB a 5400 rpm e os discos rígidos externos de 8 GB, as taxas de transferência são realmente muito mais lentas do que quando uso um hub USB. Por exemplo, recentemente copiei e colei quatro filmes, adicionando cerca de 120 GB de dados. Aqui está o que aconteceu.

  1. Primeiro, copiei os quatro filmes adicionando até 120 GB de dados no disco rígido do meu laptop e colei-os no disco rígido externo de 8 GB. Demorou cerca de 80 minutos para transferir, porque a taxa de transferência de dados era de apenas 30mbs. A taxa de transferência de dados teve picos que variaram de 20mbs a 35mbs.

  2. Segundo, conectei o outro disco rígido externo de 8 GB que é exatamente o mesmo modelo. Dessa vez, usei o hub USB 3.0 de 4 portas. Desta vez, a taxa de transferência de dados foi muito mais rápida - às vezes acima de 90mbs. A taxa de transferência de dados teve picos variando entre 50mbs e mais de 90mbs. Foram necessários apenas 30 minutos para transferir os dados.

  3. Terceiro, como um experimento, conectei os dois discos rígidos externos de 8 GB ao mesmo tempo através do hub USB 3.0. Copiei todos os quatro filmes com os 120 GB de dados de um disco rígido para o outro. Desta vez, a transferência foi ainda mais rápida do que nunca. A taxa de transferência de dados era de cerca de 150mbs e não havia picos na taxa de transferência. Era uma linha constante de 150mbs o tempo todo.

Fiz experimentos com outras grandes transferências de dados. Por alguma razão, a conexão direta do USB 3.0 a um disco rígido externo é muito mais lenta do que quando um hub USB 3.0 está envolvido. ... Alguém sabe por que isso é?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.