横跨大西洋比将像素发送到屏幕更快?

Modified on: Thu, 21 Mar 2019 00:00:02 +0800

John Carmack 啾啾

  

我可以比向屏幕发送像素更快地向欧洲发送IP数据包。这是怎么回事?

如果这不是John Carmack,我会把它归于“互联网很傻”。

但这是John Carmack。

这怎么可能是真的?

为避免讨论推文的确切含义,我希望得到答案:

在最好的情况下,需要多长时间才能将从美国服务器发送到欧洲某个地方的单个IP数据包从软件触发数据包的时间开始计算到它是由高于驱动程序级别的软件接收的吗?

在最佳情况下,要在屏幕上显示一个像素需要多长时间,从高于驱动程序级别的软件更改该像素值的位置开始测量?


即使假设跨大西洋连接是金钱可以购买的最好的光纤电缆,并且John坐在他的ISP旁边,数据仍然必须在IP数据包中编码,从主存储器到达他的网卡,从那里通过墙上的电缆进入另一个建筑物,可能会跳过那里的几个服务器(但我们假设它只需要一个中继),在海洋中被光子化,通过以下方式转换回电脉冲:一个光电传感器,最后由另一个网卡解释。我们就此止步。

对于像素,这是一个简单的机器字,通过PCI Express插槽发送,写入缓冲区,然后刷新到屏幕。即使考虑到“单个像素”可能导致整个屏幕缓冲区被传输到显示器这一事实,我也看不出这是如何变慢的:它不像是“逐个”传输的 - 而是它们是连续的电脉冲,它们之间没有延迟传输(对吗?)。

最佳答案

将数据包发送到远程主机的时间是ping报告的时间的一半,这可以测量往返时间。

我测量的显示器是连接到PC的Sony HMZ-T1头戴式显示器。

为了测量显示延迟,我有一个小程序,它位于旋转循环中,轮询游戏控制器,清除不同的颜色,并在按下按钮时交换缓冲区。我用240 fps摄像头显示游戏控制器和屏幕的视频记录,然后计算按下按钮和屏幕开始显示变化之间的帧数。

游戏控制器以250 Hz的频率更新,但没有直接的方法来测量输入路径上的延迟(我希望我仍然可以将事物连接到并行端口并使用进/出Sam指令)。作为对照实验,我在具有170 Hz垂直回扫的旧CRT显示器上进行相同的测试。 Aero和多个监视器可能会引入额外的延迟,但在最佳条件下,您通常会在按钮关闭后从屏幕上的某个点(禁用vsync)开始看到两个240 Hz帧的颜色变化。似乎有8毫秒左右的延迟通过USB HID处理,但我想更好地指出这一点在将来。

通常情况下,桌面液晶显示器需要10 + 240 Hz帧才能在屏幕上显示变化。索尼HMZ平均大约18帧,或总毫秒70+。

这是在多监视器设置中,所以几个帧是驱动程序的错误。

某些延迟是技术固有的。 LCD面板需要4-20毫秒才能实际更改,具体取决于技术。单个芯片LCoS显示必须缓冲一个视频帧,以便从打包像素转换为连续色彩平面。激光光栅显示需要一定量的缓冲才能从光栅返回转换为来回扫描模式。帧序列或上下分割立体3D显示无法在中间帧的一半时间内更新。

OLED显示应该是最好的,如eMagin Z800,与60 Hz CRT的延迟相当,优于我测试过的任何其他非CRT。

索尼的糟糕表现是由于软件工程设计不佳。某些电视功能,如运动插值,需要至少缓冲一帧,并可能受益更多。其他功能,如浮动菜单,格式转换,内容保护等,可以以流方式实现,但简单的方法是在每个子系统之间缓冲,在某些系统中可以堆积多达六个帧

这非常不幸,但它完全可以修复,我希望将来更多地关注显示器制造商的延迟。


相关问答

添加新评论