為什麼主流的顯示器不用USB介面?


首先,有USB顯示器,而且早就有了:神奇:只用USB連接!AOC E2251FWU顯示器評測,注意新聞的日期是2012年。

還有USB3.0的顯示器:http://www.asus.com.cn/Monitors/MB168B/

但確實是很少,主要原因就兩條:

1. USB延遲太大;

2. 沒有使用USB通信的顯卡;

依次解釋一下:

USB延遲太大

USB其實帶寬還是夠用的,雖然USB2.0時代是480Mbps,但對於一個800*600的顯示器來說還是足夠的,又因為USB傳輸的是數字信號,如果再壓縮一下,降低刷新頻率的情況下,再大點的解析度也是夠用的。對於USB3.0來說,初始頻率就是5Gbps,USB3.1是10Gbps,這個帶寬已經足夠高清顯示(HDMI1.4帶寬也不到10Gbps)。

USB最大的問題是延遲比較大。對於USB2.0來說,它是半雙工通信,通信模型是主機發請求-&>設備回應,所有的通信必須有主機(CPU)參與,對於顯示圖像來說,相當於CPU要不停的告訴(向顯示器發報文)顯示器你要去刷新這一幀,這一幀的內容如下:……,如果CPU太忙,那麼丟幀會很嚴重。到了USB3.0時代,可以實現全雙工通信了,但USB多數協議的通信請求依然需要主機主動發起。

USB通信的4種模型中,唯一不需要等待完成的是ISO傳輸,但這個傳輸不能佔滿帶寬,所以一般情況下ISO傳輸也只用於USB音頻設備。

另一個問題就是各種USB請求都需要經過CPU封包,Class Driver需要把數據封裝到Bulk Out里,再提交URB,HCD還要計算帶寬,HCD層再封包,這些都是需要軟體來做的,這個過程CPU需要參與的事情太多。況且顯卡數據到USB這一層還要自定義一套傳輸格式,這一層也需要計算開銷的。

但對於VGA來說,它讀取要顯示的數據時,不需要CPU參與太多事情,即使CPU再忙,只要顯存里有需要顯示的東西,VGA就能顯示出來,VGA丟幀是因為CPU沒有及時的把數據寫入顯存。

沒有使用USB通信的顯卡

這一點是基於前一條提出來的,如果把USB的位置換一下,直接裝到顯卡上,僅僅作為傳輸層存在,那麼USB的帶寬是足夠用的,又因為沒有CPU參與,不會影響CPU的工作,這麼設計絕對沒問題。

可是,為什麼廠商要這麼做的?廠商有傳統的VGA和更好的HDMI,沒有必要再引入一個速度不算最快、又不是專門給視頻使用的介面。況且USB協議棧層層封裝,還支持各種不同的設備類,對於顯卡來說,都是多餘的。人們可以隨身帶U盤即插即用,但真沒見過隨身帶顯示器的。況且VGA和HDMI也能做到即插即用。

所以,因為沒有USB顯卡,所以USB只能走CPU,所以USB顯示器效果不好,所以USB顯示器很少。

要改變這個局面,需要有USB顯卡,然後再有USB顯示器推廣,然後USB顯示器就多起來了,可惜的是顯卡廠商沒動力做這個事情。

同樣的道理,乙太網也有10Gbps的足夠顯示視頻,可是顯示器用網線的也很少,因為TCP/IP協議棧比USB協議棧還複雜。

----------------------------------

評論里有人提到這種USB顯示器接上的時候被識別成一個顯卡,我沒有接觸過真實硬體,不了解情況。

但假設USB顯示器是以顯卡的形式基於USB工作,那麼CPU開銷依然很大。

正常顯卡驅動里,訪問硬體資源(寄存器、顯存)直接用彙編指令就可以了(IN/OUT/MOV),對於USB顯示器來說,則是一個一個USB請求包,每個USB包要經過幾個到幾十個函數調用才能完成封裝並經過物理層面發到對端的設備上,硬體指令開銷就是成千上萬倍的,這個開銷,遠遠比請求從CPU到顯卡走PCI通道要慢的多。關鍵是還要等回調函數完成,開銷應該是百微秒級到毫秒級的,這還只是一條指令。

所以還是直接訪問硬體最快。


USB是個帶寬相當小的介面。不適宜內存、顯卡、甚至SSD這類需要超高帶寬的設備用。


原本最初的答案只是一筆帶過,沒想細答,後來更新確實帶情緒,大概是0贊和京東通信垃圾170卡和「停簡單」多扣費的緣故....,你能理解眼睜睜看著答案跑偏的那種情況么,不過還是改掉吧。

------------

想了解可以先去先去看看每種介面的白皮書,USB是全稱是Universal Serial Bus,通用串列匯流排,DVI和HDMI是Digital Visual Interface、High Definition Multimedia Interface,匯流排和介面用途不同,介面只傳輸特定信號,如果非要說帶寬,USB兩根線的串列傳輸(2.0以前),跟4個TMDS通道(一組時鐘,DVI單通道,HDMI A型口)比帶寬不合適,而且就算在低解析度下比如640x480@ 60Hz需要的帶寬USB能滿足,但延遲會導致嚴重的畫面與操控、聲音的不同步,對於視頻傳輸而言數據錯誤transmitter也不會再給reciver發一遍,而是告訴終端這個數據是錯的,你需要做模糊處理,比如從相鄰數據採樣,TMDS差分信號對信號電平的衰減不敏感,這是HDMI可以使用15m長線的原因。

有人會問,有USB介面的外置顯卡啊,還有widi無線傳輸,這些東西都是實時壓縮畫面並通過USB或者wifi傳輸到解碼端再轉換為HDMI標準信號,所以還是有很大區別的。

---------最初答案-------

分析帶寬只是個初級認知,USB介面設計之初就是傳輸數據的,顯示介面是傳輸信號的,若能理解這兩者差別,也不用多講了。


usb衍生出來的主旨在於提供一種介面有助於熱插拔 和低帶寬數據流外部設備的接入,其實縱向電腦的發展史,usb並不可靠. 高耗電量,不穩定的協議 導致熱插拔依然有損傷,usb3.0依然慢成狗的傳輸速度,根本喂不飽顯示器.還有一個最重要的一點就是在滿帶寬傳輸時需要相對大供電量,但在大於1米時 供電衰減可以達到60%,甚直導致usb介質損壞.


ASUS MB168B 用戶路過。

如圖,左邊那塊就是。簡單說下體驗:

優點是顯而易見的:便攜。理論狀態下可以一根線走天下,本體十分輕薄。以及不說供電問題的話,USB 2.0 就能帶動。(本身支持 USB 3.0)

然而缺點比想像中多。

  • 驅動。這塊屏幕是 DisplayLink 方案加上 ASUS 自己做的亮度感測器和重力感應感測器,因此 Linux 上驅動比較坑;OS X 呢因為用了 DisplayLink 公版驅動亮度感測器和重力感應感測器均無效,且 OS X 10.10 及以後的 WindowServer 有 bug,插屏幕偶爾會導致 WindowServer 崩潰,然後用戶被強制註銷。Windows 上用 ASUS 改版驅動可以發揮其所有功能。
  • 供電。Mac 大概是因為對 SuperDrive 做過優化的原因吧,USB 口輸出電流可以特別大。別的機器就比較悲劇了:比如我在 Surface 上用的時候,屏幕點亮一下就因供電不足而掛掉,只能用自帶供電的 USB Dock 方式連接。
  • 延遲。這個都是淚,不說了。
  • CPU 佔用。不知 DisplayLink 用的啥黑科技,總之資源消耗蠻高的。
  • 屏幕素質。那個屏幕真心渣……


傳輸速度跟不上。

主流的顯示器沒有USB介面,而很多平板電視有USB介面。所以問題就可以引申為,顯示器和電視之間的區別是什麼。

首先我們要知道,顯示器接收的數據來自於顯卡,常見的介面有HDMI、DP、VGA等。而電視除了有HDMI之外,還有USB介面,AV端子等;這裡只考慮USB介面,它接收的數據來自於硬碟。這是數據來源的區別,也是為什麼顯示器沒有USB介面的根本原因。

然後,我要開始計算主流顯示器需要的帶寬,用數據來說明原因。

以1080P(1920*1080,60Hz)為例,我們知道1920*1080解析度的一幅未壓縮的彩色圖像需要1920*1080*3=6(MB)的存儲空間,而考慮到顯示器是60HZ,則需要的帶寬為6*60*8=2.88(Gbps),再考慮到會有聲音信息,實際需求還要略大。

USB3.0提供的理論帶寬為5.0Gbps(500MB/s),實際測試好像可以有4.0Gbps的樣子,彷彿帶寬是夠用了。但是為什麼顯示器不用USB3.0傳輸圖像呢。

兩個原因,一個是顯卡的要求,另一個是USB本身適用的環境。

顯卡沒有採用USB介面,那顯示器肯定不會用USB啊。至於為何顯卡不採用USB介面,我猜想應該是USB介面的速度發展跟不上顯卡的要求,就算到了USB3.0才這麼點帶寬,應付1080p(60HZ)還可以,更高的解析度(如2k甚至4k)或者更高的頻率(如144HZ)就捉急了。比如一代神卡gt610,支持的解析度都達到了2560*1600,這對USB3.0是捉襟見肘的。過時入門級顯卡的需求都無法滿足,更別提gtx titan或者fury x之類的高端顯卡了。(這也是VGA埠消失的原因)

USB介面本身適用於傳輸硬碟上的數據。機械硬碟的讀寫速度是多少呢?幾十MBps罷了。雖然USB3.0的傳輸速度夠了,但是硬碟這邊慢騰騰的跟不上啊。源頭不給力,中間環節只好磨洋工了。

再後,說一下顯示器和電視的區別。顯示器只能接受視頻信號並顯示出來,而電視具備解碼的功能。如果都是用的HDMI這樣的介面,那麼電視是可以當顯示器用的,雖然效果差了不少。但是電視可以通過USB介面外接硬碟,通過讀取硬碟中的文件來播放視頻。這個是顯示器不具備的功能。硬碟中的視頻文件是經過高度壓縮並重新封裝的,所以即使是USB2.0(電視一般都是USB2.0)傳輸速度也夠用了。

最後,說一下,USB顯示器並不是沒有。不是主流介面罷了。


常規

USB口的顯示器 USB用做匯流排 CPU要控制匯流排上的視頻控制器得通過DMI-&>xHCI CTL-&>長長的電纜-&>視頻控制器 來回封裝配合長長的電纜 效率會很低 最可怕的是這些封包都得由CPU處理

不管是傳統BIOS還是EFI BIOS USB都作為模塊出現 不一定有USB顯示器控制器對應的設備類 傳統BIOS需要載入顯卡BIOS 初始化後分配顯卡使用的內存空間之後才能輸出畫面 USB設備沒有這個機會 開機都不會亮 不可能成為主流

現在在用的CRT正使用的帶寬超過220Mhz 在我的一代i7上 USB介面 軟體外部adc採樣 8Mhz 能吃飽一個核 所以USB顯示器暫時不能採用USB控制器內建顯示控制器 將USB匯流排用作rgb信號傳輸的方法 只能用作掛在USB控制器上的視頻控制器


都一個勁的算什麼帶寬夠不夠啊供電夠不夠啊的,然而市場上幾年前就有usb2.0的顯示器了,所以這些算是問題但也不是問題,至少能解決並且已經有了產品。更別說usb3.0有更強的供電能力和帶寬了。

題主問的是為什麼主流不用,所以題主應該也知道有這種產品了。

說道地底使用usb介面的顯示器相對一般顯示器沒有太大的優勢,消費者沒有理由因為你是usb的而去買你的商品,同時usb作為一種非主流的顯示介面一切配套的晶元軟體產權費用等都肯定遠大於主流介面顯示器,那還有哪個廠商願意去研發它呢,所以usb介面想成為主流介面。難啊!


考慮過usb2.0那對於視頻顯示來說貧乏的傳輸效率嗎…


usb 2.0的傳輸帶寬是480Mbyte,而傳輸一個1024*768的數字信號,需要650Mbyte,2.0介面不能用了。

usb 3.0終於大幅提高,達到5Gbyte,而當前傳輸一個4K信號,需要8.8Gbyte的基礎帶寬,而冗餘帶寬需要達到基礎帶寬的1.09倍左右才能保證信號傳輸的穩定性(hdmi每16位有2位冗餘,共18位(1.3))。

使用usb3.0傳輸1920*1080的視頻信號,在usb顯卡領域是可行的。


USB 供電還差不多,信號夠嗆


USB的延遲...這個直接殺死


帶寬本身就不夠,還是一個個包發的,丟了大不了再發,沒有單獨的clk來提高同步。做圖形介面有些勉強但也不是不行。至少高端是無指望了。


推薦閱讀:

如何評價這個CPU設計?
有哪些不錯的介紹計算機體系結構的書籍?
為什麼VS2017在win10運行界面變模糊?
我想了解計算機發展史,有哪些書可以看?
3個1次操作的for循環和1個for循環3次操作效率是一樣的嗎?

TAG:計算機 | 顯示器 | 電腦硬體 | 電腦外設 | 電子計算機 |