題 橫跨大西洋比將像素發送到屏幕更快?


約翰卡馬克  啾啾

我可以比向屏幕發送像素更快地向歐洲發送IP數據包。這是怎麼回事?

如果這不是John Carmack,我會把它歸於“互聯網很傻”。

但這是John Carmack。

這怎麼可能是真的?

為了避免討論推文的確切含義,我希望得到答案:

在最好的情況下,需要多長時間才能將從美國服務器發送到歐洲某個地方的單個IP數據包從軟件觸發數據包的時間開始,到上面的軟件接收到的時間點。司機級別?

在最佳情況下,在屏幕上顯示一個像素需要多長時間,從高於驅動程序級別的軟件改變該像素值的位置開始測量?


即使假設跨大西洋連接是金錢可以購買的最好的光纖電纜,並且John坐在他的ISP旁邊,數據仍然必須編碼在IP數據包中,從主存儲器到達他的網卡從那里通過牆上的電纜進入另一個建築物,可能會跳過那裡的幾台服務器(但我們假設它只需要一個中繼),在海洋中被光子化,被光傳感器轉換回電脈衝,最後由另一張網卡解釋。我們到此為止。

對於像素,這是一個簡單的機器字,通過PCI Express插槽發送,寫入緩衝區,然後刷新到屏幕。即使考慮到“單個像素”可能導致整個屏幕緩衝區被傳輸到顯示器這一事實,我也看不出這是如何變慢的:它不像是“逐個”傳輸的 - 而是它們是連續的電脈衝,它們之間沒有延遲傳輸(對嗎?)。


801
2018-05-01 09:30


起源


要么他瘋了,要么這是一個不尋常的情況。由於光纖的光速,你無法在不到60毫秒的時間內從美國到歐洲獲取數據。您的視頻卡每17毫秒左右就會顯示一個全新的像素屏幕。即使使用雙緩衝,您仍然可以相當多地擊敗數據包。 - David Schwartz
@DavidSchwartz:你正在考慮單獨使用GPU。是的,GPU可以在不到60ms的時間內完成大量的工作。但約翰正在抱怨涉及顯示器的整個連鎖店。你知道從圖像數據傳輸到監視器,直到它顯示在屏幕上,涉及多少延遲? 17ms的數字毫無意義且無關緊要。是的,GPU每17毫秒準備一個新圖像,是的,屏幕每17毫秒顯示一個新圖像。但是,這並沒有說明圖像在顯示之前已經運行了多長時間 - jalf
他是一名遊戲程序員,他說 比...快 一世 可以將一個像素發送到屏幕...所以也許是因為3D圖形渲染延遲?雖然在大多數視頻遊戲中它應該很低;他們優化性能,而不是質量。當然,還有 非常 很有可能他只是誇張(在那裡,我說明顯,快樂?)。 - Bob
去百思買購買一段時間並觀看所有電視機,他們將所有電視機都調到相同的內部頻道。即使是明顯相同的集合也會相對於彼此有明顯的(可能是四分之一秒)滯後。但除此之外,還必須在UI內部實現整個“繪製”循環(這可能涉及重新渲染圖像的幾個“層”)。當然,如果需要3-D渲染或某些此類渲染會增加顯著的延遲。 - Daniel R Hicks
有很多猜測空間,除非你知道J.Carmack真正在談論什麼,否則我認為沒有一個完美的答案。也許他的推文只是對他遇到的某些情況的一些愚蠢評論。 - Baarn


答案:


發送數據包到遠程主機的時間是ping報告的時間的一半,它測量往返時間。

我測量的顯示器是一個 索尼HMZ-T1 頭戴式顯示器連接到PC。

為了測量顯示延遲,我有一個小程序,它位於旋轉循環中,輪詢遊戲控制器,清除不同的顏色,並在按下按鈕時交換緩衝區。我用240 fps攝像頭顯示遊戲控制器和屏幕的視頻記錄,然後計算按下按鈕和開始顯示變化的屏幕之間的幀數。

遊戲控制器以250赫茲的速度更新,但沒有直接的方法來測量輸入路徑上的延遲(我希望我仍然可以將事物連接到並行端口並使用進/出Sam指令)。作為對照實驗,我在具有170 Hz垂直回掃的舊CRT顯示器上進行相同的測試。 Aero和多個監視器可能會引入額外的延遲,但在最佳條件下,您通常會在按鈕關閉後從屏幕上的某個點(禁用vsync)開始看到兩個240 Hz幀的顏色變化。似乎有8毫秒左右的延遲通過 USB HID 處理,但我想在未來更好地指出這一點。

通常情況下,台式LCD顯示器需要10 + 240 Hz幀才能在屏幕上顯示更改。索尼HMZ平均大約18幀,或總毫秒70+。

這是一個多監視器設置,所以幾個幀是驅動程序的錯。

一些延遲是技術固有的。 LCD面板需要4-20毫秒才能實際更改,具體取決於技術。單芯片 矽基液晶 顯示器必須緩沖一個視頻幀以從打包像素轉換為連續彩色平面。激光光柵顯示需要一定量的緩衝才能從光柵返迴轉換為來回掃描模式。幀序列或上下分割立體3D顯示器不能在中間幀的一半時間內更新。

OLED 顯示應該是最好的,如a所示 eMagin Z800,與延遲的60 Hz CRT相當,優於我測試的任何其他非CRT。

索尼的糟糕表現是由於軟件工程設計不佳。某些電視功能,如運動插值,需要至少緩沖一幀,並可能受益更多。其他功能,如浮動菜單,格式轉換,內容保護等,可以以流方式實現,但簡單的方法是在每個子系統之間緩衝,在某些系統中可以堆積多達六個幀。

這是非常不幸的,但它完全可以修復,我希望將來更多地關注顯示器製造商的延遲。


1310
2018-05-01 14:24



我不想為過多的偏離主題的評論鎖定這個答案。約翰提供了這個答案,我們感到很激動,但我們不需要25條評論表達他們的感激,懷​​疑或興奮。謝謝。 - nhinkle♦
您的USB觸發器可能作為低速USB設備運行(總線幀為125usec),導致最小8ms延遲(硬件問題)。也許試試PS2鍵盤? - Boris
@Marcus Lindblom通過追捕,你的意思是讀?我認為在這種情況下, 怎麼樣 他得到的數字和數字一樣重要 - 對推文的懷疑不會通過引用另一個數字來解決。上下文也有幫助 - 這個特定的監視器使用其次優軟件對他最直接的煩惱。 - Jeremy
這聽起來像是在說液晶顯示器製造商聲稱,響應時間為5毫秒,這可能是原始面板改變所需的時間,但顯示器在實際驅動信號之前會增加相當多的時間來緩沖和處理信號。 LCD。這是否意味著製造商發布虛假/誤導性規範? - psusi
@psusi doubledeej.blogspot.com/2009/07/...  zdnet.com/blog/ou/...  gizmodo.com/5669331/why-most-hardware-specs-are-total-bullshit  maximumpc.com/article/features/display_myths_shattered - Dan Neely


某些監視器可能具有顯著的輸入滯後

與蹩腳的顯示器和視頻卡組合相比,可以實現令人敬畏的互聯網連接

資料來源:

控制台遊戲:滯後因素•第2頁

因此,在30FPS時,我們得到8幀/ 133ms的基線性能,但是   遊戲下降到24FPS的第二個片段,有一個明確的   拉動扳機和Niko之間有12幀/ 200ms的延遲   開始霰彈槍射擊動畫。這是200毫秒加上   屏幕上的額外延遲。哎喲。

顯示器可以再添加5-10ms

因此,控制台可能有210毫秒的延遲

而且,根據大衛的評論,發送數據包的最佳情況應該是大約70毫秒


68
2018-05-01 10:26



-1我不認為John Carmack使用蹩腳的顯示器或顯卡。請使用可靠的來源參考您的索賠。 - Baarn
對不起,我仍然沒有看到這真的回答了這個問題。引用講述了“拉動觸發器”,這意味著更多的工作,如輸入處理,場景渲染等,而不僅僅是將像素發送到屏幕。而且,與現代硬件性能相比,人類反應速度相對較差。這傢伙之間的時間 思維 他扣動扳機,實際拉動扳機,很可能成為瓶頸。 - Konrad Rudolph
鏈接的文章顯示,該分析的作者購買了一個特殊的設備,可以準確地顯示按鈕被按下的時間,所以我不認為他們只是在扯動數字。 - Melikoth
@KonradRudolph:Perception很奇怪。我剛才讀了一篇關於直接從脊髓讀取衝動的實驗控制器的文章。人們會覺得計算機在他們點擊之前就已經開始行動,即使這是他們自己的神經命令點擊它的反應。 - Zan Lynx
@Zan Lynx:這是一個眾所周知的效果。谷歌稱“本傑明利伯特延遲半秒”。人類意識需要大量的處理時間。現在發生的所有事情實際上都發生在過去。從半秒鐘開始,您的所有感官都會為您提供“綜合多媒體體驗”。此外,事件似乎被大腦“加蓋時間戳”。相對於觸覺刺激,必須延遲直接腦刺激,以使受試者同時報告感覺! - Kaz


在監視器上顯示輸入延遲非常簡單,只需在crt旁邊放一個lcd,然後顯示一個時鐘或一個動畫填滿屏幕並進行記錄。一個人可能是第二個或更多人。液晶顯示器製造商已經收緊了這一點,因為遊戲玩家等已經註意到了這一點。

例如。 Youtube視頻:輸入延遲測試Vizio VL420M


34
2018-05-03 10:31