O ping transatlântico é mais rápido do que enviar um pixel para a tela?

801

John Carmack tweetou ,

I can send an IP packet to Europe faster than I can send a pixel to the screen. How f’d up is that?

E se isso não fosse John Carmack, eu arquivaria sob "as interwebs sendo bobas".

Mas esse é John Carmack.

Como isso pode ser verdade?

Para evitar discussões sobre o que exatamente se quer dizer no tweet, é isso que eu gostaria de receber uma resposta:

Quanto tempo leva, no melhor dos casos, para obter um único pacote IP enviado de um servidor nos EUA para algum lugar na Europa, medindo a partir do momento em que um software aciona o pacote, a ponto de é recebido por um software acima do nível do driver?

Quanto tempo leva, no melhor dos casos, para que um pixel seja exibido na tela, medido a partir do ponto em que um software acima do nível do driver altera o valor desse pixel?

Mesmo assumindo que a conexão transatlântica é o melhor cabo de fibra ótica que o dinheiro pode comprar, e que John está sentado ao lado de seu ISP, os dados ainda precisam ser codificados em um pacote IP, passar da memória principal para sua placa de rede, de lá através de um cabo na parede para outro prédio, provavelmente irá passar por alguns servidores lá (mas vamos supor que precisa apenas de um único relé), ser fotonizada através do oceano, convertida de volta em um impulso elétrico por um fotossensor e finalmente interpretado por outra placa de rede. Vamos parar aí.

Quanto ao pixel, esta é uma simples palavra de máquina que é enviada através do slot PCI Express, escrita em um buffer, que é então liberado para a tela. Mesmo considerando o fato de que “pixels únicos” provavelmente resultam em todo o buffer de tela sendo transmitido para a tela, não vejo como isso pode ser mais lento: não é como se os bits fossem transferidos “um por um” - ao contrário, são impulsos elétricos consecutivos que são transferidos sem latência entre eles (certo?).

    
por Konrad Rudolph 01.05.2012 / 11:30

3 respostas

1310

O tempo para enviar um pacote para um host remoto é metade do tempo informado pelo ping, que mede um tempo de ida e volta.

O monitor que eu estava medindo era um monitor de cabeça Sony HMZ-T1 conectado a um PC.

Para medir a latência de exibição, eu tenho um pequeno programa que fica em um loop giratório, pesquisando um controlador de jogo, fazendo uma limpeza para uma cor diferente e trocando buffers sempre que um botão é pressionado. Eu gravo vídeo mostrando o controlador de jogo e a tela com uma câmera de 240 fps, depois conto o número de quadros entre o botão sendo pressionado e a tela começando a mostrar uma mudança.

O controlador de jogo é atualizado em 250 Hz, mas não há uma maneira direta de medir a latência no caminho de entrada (gostaria de poder conectar as coisas a uma porta paralela e usar as instruções Sam de entrada / saída). Como um experimento de controle, eu faço o mesmo teste em uma tela CRT antiga com um retraço vertical de 170 Hz. Aero e vários monitores podem introduzir latência extra, mas sob condições ideais você normalmente verá uma mudança de cor iniciando em algum ponto da tela (vsync desativado) dois quadros de 240 Hz depois que o botão cair. Parece que há aproximadamente 8 ms de latência passando pelo processamento de USB HID , mas eu gostaria de resolver isso melhor no futuro.

Não é incomum ver monitores LCD de mesa com 10 + 240 Hz para mostrar uma alteração na tela. A Sony HMZ alcançou uma média de 18 frames, ou mais de 70 milissegundos.

Isso foi feito em uma configuração multimonitor, então alguns quadros são culpa do motorista.

Alguma latência é intrínseca a uma tecnologia. Os painéis de LCD levam de 4 a 20 milissegundos para serem realmente alterados, dependendo da tecnologia. Monitores de chip único LCoS devem armazenar em buffer um quadro de vídeo para converter de pixels compactados em planos de cores seqüenciais. As exibições de varredura a laser precisam de alguma quantidade de buffer para converter de retorno de varredura para padrões de varredura de frente e para trás. Uma exibição 3D estéreo dividida sequencial em quadro ou superior não pode atualizar o quadro intermediário na metade do tempo.

As telas OLED devem estar entre as melhores, como demonstrado por um eMagin Z800 , que é comparável a um CRT de 60 Hz em latência, melhor do que qualquer outro CRT não testado.

O mau desempenho da Sony deve-se à má engenharia de software. Alguns recursos da TV, como a interpolação de movimento, exigem o armazenamento em buffer de pelo menos um quadro e podem se beneficiar de mais. Outros recursos, como menus flutuantes, conversões de formato, proteção de conteúdo e assim por diante, podem ser implementados de forma contínua, mas a saída mais fácil é apenas bufferizar entre cada subsistema, o que pode acumular meia dúzia de quadros em alguns sistemas. .

Isso é muito lamentável, mas tudo é solucionável, e espero nos apoiar mais nos fabricantes de displays sobre latência no futuro.

    
por 01.05.2012 / 16:24
68

Alguns monitores podem ter atrasos de entrada significativos

Contabilidade para uma conexão de internet incrível em comparação com um combo de monitor e placa de vídeo de baixa qualidade possível

Fontes:

Jogos de console: o fator de atraso • Página 2

So, at 30FPS we get baseline performance of eight frames/133ms, but in the second clip where the game has dropped to 24FPS, there is a clear 12 frames/200ms delay between me pulling the trigger, and Niko beginning the shotgun firing animation. That's 200ms plus the additional delay from your screen. Ouch.

Um monitor pode adicionar outros 5-10 ms

Assim, um console pode ter até 210 ms de atraso

E, de acordo com o comentário de David, o melhor caso deve ser cerca de 70ms para enviar um pacote

    
por 01.05.2012 / 12:26
34

É muito simples demonstrar o atraso de entrada nos monitores, basta colocar um lcd ao lado de um crt e mostrar um relógio ou uma animação preenchendo a tela e gravá-la. Um pode ser um segundo ou mais para trás. É algo que os fabricantes de LCDs reforçaram desde que os jogadores, etc., perceberam mais.

Vídeo do YouTube: teste de atraso de entrada Vizio VL420M

    
por 03.05.2012 / 12:31