Tanto quanto eu entendo. Serial significa que os dados estão sendo enviados um por um em vez de paralelo, onde vários bits de dados são transmitidos simultaneamente.
No entanto, conexões como SATA e USB 3 na verdade têm mais de 2 pinos de dados. Então, no final, qual é o real significado de serial e paralelo?
A comunicação é serial e, para maior imunidade a ruídos, os dados não são enviados com um fio de extremidade única, mas como sinais diferenciais por meio de um par trançado de fios.
USB3 e SATA têm um par de transmissão e um par de recepção para sinais de alta velocidade.
O USB3 também tem compatibilidade com versões anteriores, portanto, possui o par de dados USB2 legado, que é bidirecional.
Isso é mais ou menos correto. Serial significa que símbolos (um símbolo pode codificar mais de um bit, o exemplo mais simples possível seria transmitir 2 bits usando 4 voltagens diferentes em vez de apenas "ON" e "OFF") são enviados um após o outro em uma única linha, paralelo significa que vários símbolos são enviados ao mesmo tempo, cada um em uma linha paralela separada.
O grande problema da transmissão paralela é o tempo: se uma das linhas for apenas um pouco mais longa ou mais curta que as outras, esse símbolo chegará antes ou depois das outras. Isso significa que a extremidade receptora precisa ter alguma forma de armazenar símbolos em buffer pelo menos enquanto o diferencial entre o símbolo que chega mais cedo e o símbolo que chega mais tarde.
Cada curva no cabo, cada pequena imperfeição no processo de fabricação, aumentará a quantidade de caminho diferencial. Pense até mesmo em como você encaminharia os traços em uma placa de circuito para um conector: toda vez que você faz uma curva, os traços externos são mais longos que os internos.
E assim que o diferencial se aproxima do (inverso do) clock, ou seja, o diferencial entre o símbolo mais antigo e o mais recente se aproxima do tempo entre dois símbolos, você não pode mais reconstruir os dados.
Existem duas maneiras de tornar uma transmissão paralela mais rápida: aumentar a taxa de clock e aumentar o número de linhas paralelas. No entanto, o problema descrito acima coloca um limite rígido em ambas as maneiras de tornar uma transmissão paralela mais rápida:
Cabos mais longos também aumentam o potencial de diferencial de caminho, portanto, quanto mais rápido você fizer sua transmissão, menor será o comprimento permitido do cabo. Um exemplo do mundo real é a última versão do ATA paralelo, onde os comprimentos máximos de cabo permitidos eram tão curtos que em alguns gabinetes de torre grandes (que são o fator de forma do gabinete usado para estações de trabalho de alto desempenho que se beneficiariam mais de velocidades de transferência de HDD) você não conseguia nem alcançar as baias de HDD da placa-mãe!
Quando você atinge velocidades mais altas, a complexidade se torna incontrolável.
Vejamos para que servem esses pinos .
Temos que falar sobre algumas coisas aqui. A primeira é a distinção entre simplex , half-duplex e full-duplex . Em geral , você só pode enviar dados de uma maneira em uma linha (elétrica). Isso é chamado de comunicação simplex.
No entanto, você geralmente deseja enviar dados nos dois sentidos. Uma maneira de fazer isso é a comunicação half-duplex , onde você pode enviar dados nos dois sentidos, mas não ao mesmo tempo. Apenas uma estação em uma extremidade do link pode enviar dados e, em seguida, você alterna isso para que a outra estação possa enviar. Isso é indesejável. Em vez disso, a maioria dos links de comunicação de alta velocidade (independentemente de serem seriais ou paralelos) são full-duplex , e a maneira como isso é feito é simplesmente ter duas linhas, uma para transmissão e outra para recepção. (Não é necessário ter duas linhas, mas é muito mais fácil.)
Esta, BTW, é a razão pela qual existem cabos crossover onde os fios entre os pinos Tx e Rx nos conectores são trocados.
Então, já precisamos de dois pinos para uma conexão .
A outra coisa que precisamos falar é a sinalização diferencial . Esta é uma forma de melhorar a resiliência contra ruídos eletromagnéticos externos introduzidos no cabo. Em uma visão de nível muito alto, na verdade é muito simples: em vez de transmitir seu sinal em um fio, você usa dois fios , onde um fio carrega o sinal invertido exato do outro fio. Esses dois fios são torcidos juntos em um par trançado .
Como os dois fios estão torcidos juntos, qualquer ruído que seja introduzido afetará ambos os fios de maneira aproximadamente igual. Mas! Como um fio carrega o sinal exatamente oposto do outro fio, o que o receptor pode fazer é simplesmente observar a diferença dos dois fios e, como o ruído é o mesmo em ambos os fios, ele será cancelado:
Então, novamente, precisamos de dois pinos para um sinal.
Se combinarmos sinalização full-duplex e diferencial, isso significa que já temos 4 pinos para uma conexão serial. Esta não é uma comunicação paralela, este é um único link serial. (Na verdade, as conexões paralelas também costumam usar sinalização full-duplex e diferencial, o que significa que elas têm 4 pinos para cada linha paralela.)
Então, se olharmos para o SuperSpeed USB, ele tem 8 pinos de dados. Mas se levarmos em conta o que discutimos, são realmente apenas duas linhas de comunicação.
Mas ainda assim, por que dois? Isso não o torna paralelo?
Não, não, e a razão é que estes são dois canais de comunicação de dados seriais independentes . Esses canais são normalmente chamados de lanes . Cada uma das duas pistas é seu próprio canal de comunicação serial independente. Essas duas pistas podem ser usadas para dois fluxos de dados completamente independentes (acredito que o Thunderbolt possa fazer isso). Ou você pode multiplexar um único fluxo de dados de nível superior em vários fluxos de pacotes de nível inferior.
Isso é fundamentalmente diferente da transmissão paralela dos bits/símbolos individuais. Cada símbolo é transmitido em série por apenas uma linha, grupos de símbolos são tratados juntos como um único pacote, mas os pacotes são novamente enviados em série por uma única linha. Somente em um nível muito mais alto você divide seus dados em pacotes individuais e envia esses pacotes por várias vias.
Como não estavam apenas enviando símbolos individuais em paralelo, mas há um empacotamento/enquadramento de nível superior, é muito mais fácil lidar com diferentes tempos de viagem entre as diferentes faixas. Poderíamos adicionar números de sequência aos pacotes, então, mesmo que eles ultrapassem uns aos outros, ainda podemos montá-los na ordem correta. Podemos detectar números de sequência ausentes e solicitar a retransmissão.
Nosso "limite de sincronização", ou seja, o ponto onde precisamos sincronizar as pistas paralelas é muito maior: precisamos sincronizar em pacotes, que podem ter muitos bits em vez de cada bit individual. Portanto, nosso "relógio de sincronização" é apenas uma fração da velocidade do relógio da linha.