當前位置:
首頁 > 最新 > 1977 年至 2017 年計算機延遲情況

1977 年至 2017 年計算機延遲情況

我老是有這個感覺:我今天使用的計算機感覺比小時候使用的計算機來得慢。我信不過這種感覺,因為結果往往證明人類的感覺在實證研究中是不可靠的,所以我帶上一隻高速相機,測量了我在過去幾個月遇到的一些設備的響應延遲。結果如下:

這些是鍵入字元與終端顯示字元之間的延遲的測試結果(更多細節詳見附錄)。測試結果按最快到最慢排序。在延遲這一列,隨著設備速度變慢,背景顏色從綠色變成黃色、紅色直至變成黑色;也就是說,隨著設備速度變慢,背景顏色變暗。沒有一款設備的結果呈綠色。在同一台機器上測試多個操作系統時,操作系統以粗體顯示。在同一台機器上測試多個刷新率時,刷新率以斜體顯示。

在年份這一列,隨著設備變得陳舊,背景顏色變暗、變紫。如果較舊的設備速度較慢,那麼我們在閱讀該圖表時,會看到年份這一列變暗。

接下來兩列顯示了處理器的時鐘速度和晶體管數量。較小的數值較暗、較藍。與上面一樣,如果較慢的主頻和較小的晶元與較長的延遲有關,我們在閱讀該表格時,會看到這幾列變暗,但要說有什麼區別的話,似乎恰好反過來。

作為參考,表格中添入了一個數據包通過光纖繞遍全球,即從紐約市(經由東京和倫敦)傳回到紐約市的延遲。

如果我們看一下整體結果,最快的機器是舊機器。較新的機器良莠不齊。屏幕刷新率異常高的高端遊戲機幾乎與上世紀70年代末80年代初的機器有得一拼,但是「普通」的現代計算機無法與三四十年前的機器相競爭。

我們還可以看看移動設備。在這種情況下,我們將關注瀏覽器中的滾動延遲:

如上所述,結果按照延遲來排序,隨著設備速度變慢,顏色從綠色變成黃色、紅色直至變成黑色。同樣如上所述,隨著設備變舊,年份這一列會變得更紫、更暗。

如果我們排除game boy color(這類設備與其餘設備不一樣),所有最快的設備都是蘋果手機或平板電腦。下一個最快的設備是blackberry q10。雖然我們沒有足夠的數據來確切地表明為什麼blackberry q10的速度就非蘋果設備而言很快,不過一個合理的猜測是,它有實體按鈕,這大有幫助;實體按鈕比觸摸屏更容易做到延遲低。配備實體按鈕的另外兩個設備是gameboy color和kindle4。

除了iphones和非kindle按鈕設備,我們還有年頭不一的各種Android設備。靠近表格底部的是古老的palm pilot 1000,後面是kindles。palm受制於在觸摸屏技術慢得多的時代研製出來的觸摸屏和顯示屏,kindles使用比現代手機上使用的屏幕慢得多的電子墨水屏幕,所以看到這些設備出現在表格底部也就不足為奇了。

為什麼apple 2e這麼快?

與不是最新款ipad pro的現代計算機相比,apple2在輸入和輸出方面都具有顯著優勢;除了最精心編寫的代碼外,它在輸入和輸出之間也具有優勢,因為apple 2不必處理上下文切換、不同進程之間的交接所需要的緩衝區等等。

在輸入方面,如果我們看一下現代鍵盤,常常看到它們以100Hz至200Hz的速度掃描輸入內容(比如說,ergodox聲稱以167Hz的速度掃描)。相比之下,apple2e實際上以556 Hz的速度掃描。詳情請參閱附錄。

如果我們看看另一頭的屏幕,我們也可以在這裡發現延遲變長。我有塊屏幕號稱切換時間僅為1ms,但如果我們看看從最初看到字元的痕迹出現在屏幕上到字元實實在在地呈現,屏幕實際顯示字元用時多少,那麼它很可能10ms。聲稱延遲較低的一些高刷新率屏幕甚至也存在著這種情況。

在144 Hz下,每幀用時7ms。屏幕的變化會有0 ms至7ms的額外延遲,因為它在被渲染之前等待下一個幀邊界(平均而言預計是最大延遲的一半,即3.5 ms)。除此之外,即使我的屏幕號稱切換時間只有1ms,但是一旦屏幕開始改變顏色,實際上似乎需要10 ms才能完全改變顏色。如果我們將等待下一幀的延遲與實際顏色變化的延遲相加,預計延遲就會是7/2 + 10 = 13.5ms

如果是apple 2e中的舊CRT,我們預計60Hz刷新率的一半(16.7ms/ 2,加上可忽略的延遲),即8.3ms。這個成績今天很難擊敗:最先進的「遊戲顯示器」可以將總的顯示延遲降低到同樣的範圍,但是就市場份額而言,很少有人擁有這樣的屏幕,連號稱速度很快的屏幕也並非總是實際上很快。

iOS渲染管道

如果我們看看輸入和輸出之間發生了什麼,會發現現代系統與apple 2e之間的差異太太了,簡直可以寫一整本書。為了了解現代機器的情況,前iOS/UIKit工程師安迪?馬圖斯查克(Andy Matuschak)大致介紹了iOS上面的情況(https://andymatuschak.org/),他事先聲明:「這是我對過期信息的過時記憶」:

硬體有自己的掃描速率(比如最新觸摸面板是120Hz),所以那會增加多達8 ms的延遲;

事件通過固件傳遞給內核;這個過程比較快,但系統調度問題可能會在這裡增加幾個ms;

內核通過mach埠將那些事件傳遞給特權用戶(這裡是backboardd);可能會有更多的調度損耗;

backboardd必須確定哪個進程應接收事件;這需要對窗口伺服器進行鎖定,窗口伺服器共享該信息(需要返回到內核,增加了調度延遲);

backboardd將該事件發送給相應進程;在處理之前可能會有更多的調度延遲;

那些事件只在主線程上離開隊列(dequeued);主線程上可能會出現其他情況(比如,由於計時器或網路活動),所以可能增加更多的延遲,這取決於具體工作;

UIKit增加了1-2ms的事件處理開銷,受CPU限制;

應用程序決定如何處理該事件;應用程序寫得很糟糕,所以這通常需要好多ms。結果在事件驅動型更新中進行批處理,該更新通過IPC發送到渲染伺服器;

如果應用程序因該事件而需要新的共享內存視頻緩衝區,那將需要通過IPC往返渲染伺服器,這增加了調度延遲;

(次要變化是指渲染伺服器自身可以處理的變化,比如仿射轉換變化或圖層顏色變化;非次要變化包括需要處理文本、大部分光柵和矢量操作的任何變化);

這些種類的更新通常最終會三重緩衝:GPU可能使用一個緩衝區來即時渲染;渲染伺服器可能為下一個幀將另一個緩衝區排隊;你想要使用另一個緩衝器。這裡有更多的(跨進程)鎖定;更多趟訪問內核。

渲染伺服器將這些更新添加到渲染樹(幾ms)

每NHz,渲染樹被倒出到GPU,GPU被要求填充視頻緩衝區;

不過實際上,屏幕緩衝區常常有三重緩衝,這與前面介紹的原因一樣:GPU使用一個緩衝器,可能為準備另一個幀而讀取另一個緩衝器;

每NHz,視頻緩衝區與另一個視頻緩衝區交換,屏幕直接由該內存來驅動;

(這個NHz未必與前一步的N Hz完全一致)

安迪說:「這裡發生的實際工作量通常很小。只有幾ms的CPU時間。主要開銷來自:

定期掃描速率(輸入設備、渲染伺服器和屏幕)不完全一致;

跨進程邊界的許多交接,每次交接都讓別的東西(而不是輸入事件的結果)有機會得到調度;

大量鎖定,尤其是跨進程邊界,勢必需要進入到內核。

相比之下,在apple 2e上,基本上沒有交接、鎖定或進程邊界。一些很簡單的代碼運行並將結果寫入到屏幕內存,這導致屏幕在下一次掃描時予以更新。

刷新率與延遲

計算機結果讓人感到好奇的一方面是刷新率的影響。從24 Hz到165Hz,我們改善了90 ms。在24 Hz下,每幀需要41.67ms;在165 Hz下,每幀需要6.061 ms。正如我們上面看到的那樣,要是沒有任何緩衝,我們預計在前一種情況下幀刷新增加的平均延遲為20.8ms,後一種情況下為3.03ms(因為我們期望獲得幀的統一隨機點,等待時間在0ms到全幀時間之間),這大約相差18ms。但實際上相差90ms,這意味著延遲相當於(90- 18)/(41.67 - 6.061)=2緩衝幀。

如果我們根據同一台機器上的其他刷新率繪製結果,就可以看到:如果我們假設,對於運行powershell的機器而言,無論刷新率如何,我們都會得到2.5幀的延遲,這些結果大致符合「最佳擬合」曲線。這讓我們得以估計如果我們為這款低延遲遊戲機配備infinity Hz屏幕,延遲將會多少――我們預計延遲為140 - 2.5 * 41.67 = 36 ms,與上世紀七八十年代快速但標準的機器一樣快。

複雜性

現在人們購買的幾乎所有計算機和移動設備都比上世紀七八十年代普通型號的計算機要慢。低延遲的遊戲台式機和ipad pro其延遲與三四十年前的快速機器在同一個區間,而大多數非專門設計的設備相差甚遠。

如果我們非要為延遲變長找出一個根源,可以說歸因於「複雜性」。當然,我們都知道複雜性不好。如果你在過去的十年參加過非學術性非企業技術大會,很可能起碼有一場會專門探討複雜性為何是萬惡之源、我們應如何竭力降低複雜性。

遺憾的是,消除複雜性比談論我們應消除複雜性要困難得多。許多複雜性直接或間接地為我們換來了某種功能。如果我們看一下現代鍵盤與apple 2鍵盤的輸入,發現使用功能相對強大、價格相對昂貴的通用處理器來處理鍵盤輸入可能要比鍵盤的專用邏輯部件來得慢,後者來得更簡單更便宜。然而,使用處理器讓人們能夠輕鬆定製鍵盤,並且將鍵盤「編程」這個問題由硬碟交給軟體,這降低了製造鍵盤的成本。較昂貴的晶元增加了製造成本,但考慮到這些小批量手工鍵盤的成本有多少是設計成本,以製造成本換易於編程是凈贏(net win)。

我們在整個環節的每個部分都看到這種取捨。一個最明顯的例子就是你可能在現代桌面上運行的操作系統與在apple 2上運行的循環(loop)。現代操作系統讓程序員可以編寫通用代碼,以處理其他程序在同一台機器上同時運行這種情況,並確保相當好的基本性能,但是我們為此在複雜性方面付出了巨大代價,簡化這個過程中要做的交接大大增加了延遲。

許多複雜性可以稱之為偶發複雜性(accidental complexity),但大部分的偶發複雜性之所以會存在,是由於那樣很方便。在各個層面:從硬體架構、系統調用介面到我們使用的I/O框架,我們都在應對複雜性;如果今天我們可以坐下來,重新編寫所有系統及其介面,有望消除大部分複雜性,但是重新發明世界以減小複雜性太不方便了,我們得益於規模經濟效益,於是我們忍受現有的複雜性。

實際上,由於諸如此類的原因,解決「過度」複雜性引起的性能差這個問題的辦法常常是增加複雜性。尤其是,讓我們想到三四十年前最快機器速度之快的性能提升不是來自聽取告誡以降低複雜性,而是來自增加複雜性。

ipad pro堪稱現代工程的壯舉;用來為輸入和輸出提高刷新率以及確保軟體管道沒有不必要的緩衝的工程技術很複雜!設計和製造可降低系統延遲的高刷新率屏幕同樣也很複雜,那是普通60 Hz屏幕所無法企及的。

在竭力降低延遲時,這實際上是個常見話題。降低延遲的一個常用技巧是添加緩存,但是為系統添加緩存會讓系統更複雜。對於生成新數據,無法容忍緩存的系統來說,解決方案常常更為複雜。這方面的一個例子就是大規模的RoCE(基於融合乙太網的RDMA)部署。雖然這些方法可以將遠程數據訪問延遲從毫秒級降低到微秒級,從而支持全新類型的應用。但這麼做的一大代價就是複雜性加大。早期大規模的RoCE部署很可能要花數十人年才能夠搞好,而且在運營方面帶來了巨大的負擔。

結論

這多少有點荒謬:即使我們擁有刷新率高出近3倍的顯示器,但在認真編寫代碼的每個應用軟體中,哪怕運行速度4000倍於apple 2,CPU所含晶體管數量500000倍(GPU的晶體管數量多出2000000倍),現代遊戲機的延遲還是與apple 2大致相當。可能更加荒謬的是,owerspec g405的默認配置(2017年10月之前擁有市面上最高的單線程性能)從鍵盤到屏幕(約3英尺,實際連線可能是10英尺)帶來的延遲比讓數據包跑遍全世界(從紐約到東京、到倫敦再回到紐約共16187英里,由於鋪設儘可能短的光纖的成本,可能延遲增加30%)。

從好的方面來看,我們可能會告別延遲黑暗時代,現在就可以組裝或購買一台延遲與七八十年代你能獲得的非專門設計設備一樣的平板電腦。這讓我想起了注重屏幕解析度與密度的那個黑暗時代:就在不久前,90年代的CRT提供比價格合理的非筆記本電腦LCD更好的解析度和更高的像素密度。4k屏幕現在變成了司空見慣、價格合理的8k屏幕,效果遠勝我們之前在消費級CRT上見到的效果 =。我不知道在延遲方面我們會不會看到同樣的改進,值得期待。

附錄:為什麼測量延遲?

延遲很重要!就很簡單的任務而言,人們察覺得出2 ms或更短的延遲。此外,延遲增加不僅會讓用戶有所注意,還會導致用戶不太準確地執行簡單的任務。如果你想看看直觀地演示延遲是什麼樣子,身邊又沒有一台快速的舊計算機,可以看看微軟研究公司的這段觸摸屏延遲演示。

吞吐量也很重要,但這個指標已廣為人知和測量。如果你訪問幾乎任何主流的測評或基準測試網站,會找到一大堆的吞吐量測量結果,所以我沒必要寫另外的吞吐量測量結果。

附錄:apple 2鍵盤

apple 2e不是使用編程的微控制器來讀取鍵盤,而是使用為讀取鍵盤輸入設計的一種簡單得多的定製晶元:AY 3600。如果我們看一下AY3600數據表(https://danluu.com/AY3600.pdf),就會發現:掃描時間是(90 * 1/f),去抖動時間被標為strobe_delay。這些數值由一些電容和一個電阻決定,apple 2e的相關數值似乎是47pf、100kohms和0.022uf。將這些數字插入到AY3600數據表中,我們可以看到f= 50kHz,因而得出1.8ms的掃描延遲和6.8ms的去抖動延遲(假設數值準確,電容性能會逐級降低,所以我們預計舊apple 2e上的實際延遲更低),因而內部鍵盤邏輯部件的延遲低於8.6 ms。

相比於掃描速率為167 Hz、多掃描兩次以便去抖動的鍵盤(https://www.arduino.cc/en/Tutorial/Debounce),對應的數字是3* 6 ms = 18 ms。若掃描速率為100Hz,那就成了3 * 10 ms = 30 ms。18ms至 30 ms的鍵盤掃描加上去抖動延遲與我們在進行初步的鍵盤延遲測量時看到的延遲相一致。

作為參考,ergodox使用搭載80000隻晶體管的16MHz微控制器,而apple2e CPU是搭載3500隻晶體管的1MHz晶元。

附錄:實驗裝置

大多數測量用的是240fps相機(4.167ms解析度)。響應時間低於40 ms的設備用1000fps相機(1ms解析度)重新加以測量。表上的結果是多次測量的結果,四捨五入到最接近的10 ms,避免虛假準確性。至於桌面結果,從鍵開始移動直到屏幕完成更新來測量結果。請注意,這不同於你在網上看到的大多數鍵盤輸入到屏幕更新的測量,後者通常使用實際上消除大部分或所有鍵盤延遲的裝置;作為一種端到端測量,只有你與計算機有心靈感應,這樣的測量才有可能成為現實。另一大區別是,測量是在儘可能接近默認操作系統設置的情況下完成的,因為幾乎沒有一個用戶會搗鼓屏幕設置以減少緩衝、禁用合成器等設置。

計算機的結果是使用系統的「默認」終端來獲得的,這很可能導致快速終端與慢速終端相差20 ms至30ms。

powerspec g405的基準測試結果使用集成顯卡(該機器不帶顯卡),60 Hz是廉價顯卡的結果。

移動結果是用這種方法獲得的:使用默認瀏覽器,瀏覽至https://danluu.com,測量從手指移動到屏幕首次更新以表明滾動已發生的延遲。

在「平分」的情況下,結果按未四捨五入的延遲這個決勝指標來排序,但不應該認為這個指標很重要。可能也不應該認為相差10 ms很重要。

定製的haswell-e在gsync開啟的情況下加以測試,沒有明顯的區別。這台機器的年份有點隨意,因為CPU是2014年的,但是屏幕比較新(我認為到2015年你才有165 Hz屏幕。)

一些現代機器的晶體管數量只是粗略估計,因為確切的數字未公開。如果你有更精確的估計,請隨時聯繫我!

延遲和年份的色標是線性的,時鐘速度和晶體管數量的色標是對數標尺。

雲頭條編譯、未經授權謝絕轉載

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲頭條 的精彩文章:

NVIDIA GeForce 驅動禁止部署到數據中心
國家糧食管理平台中標公告:2857萬元
高通董事會決定「不任命」博通提名的11位董事候選人
工信部發布第23批牌照:光環新網獲得雲服務牌照,標誌 AWS 合法合規在中國經營
途牛突然裁掉400名研發人員 為節流爭取盈利

TAG:雲頭條 |