如果不使用,USB 鍵盤的輪詢通常會變慢嗎?

如果不使用,USB 鍵盤的輪詢通常會變慢嗎?

我能找到的最快的 USB 鍵盤使用具有 1000 Hz 輪詢的 USB 2.0。

如果我只是看電影並且幾個小時不碰鍵盤,來回 USB 通信真的會繼續每毫秒重複一次嗎?或者我通常會進入某種 USB 睡眠狀態(例如,1 Hz 輪詢)?

我的理解是說,每毫秒,PC 應該以 IN 請求開始,然後鍵盤應該發送 DATA 回應(表示「沒有按下任何按鍵」),然後 PC 應該發送 ACK 回應。

所以,我問這個問題是因為這一切看起來都很浪費……但也許這沒什麼大不了的。

(這個問題是關於普通的Windows PC,但我對Android設備也很好奇。順便說一句,我認為PS/2如果不觸摸鍵盤,鍵盤就不會透過 PS/2 電纜進行任何來回通信,但如果我錯了,請糾正我。

答案1

如果不使用,USB 鍵盤的輪詢通常會變慢嗎

不,系統無法判斷鍵盤何時處於按下狀態“不曾用過”提前時間。
作為用戶,您知道您沒有使用鍵盤,但係統無法偵測到您的意圖。

為了確保所有連接裝置的一致和及時的服務,需要輪詢 USB 總線上的裝置。
事件驅動方案(例如使用中斷)需要更複雜的自適應解決方案,以避免低優先級或低活動設備的飢餓。

……來回 USB 通訊真的每毫秒都會重複嗎?

是的,這就是共享媒體上雙向通訊的 USB 協定的定義。

或者我通常會進入某種 USB 睡眠狀態(例如,1 Hz 輪詢)?

不會

自適應速率輪詢的實施可能會增加複雜性,並且回應時間也會相應受到影響。

請注意,此輪詢通常主要由主機 USB 控制器執行,而不是由 USB 主機的 CPU 執行。此輪詢對 PC 處理器或作業系統的影響或負載最小。


USB 是硬體和軟體中實現的標準。對於任何作業系統(包括 Windows 和 Android),作業系統軟體方面的實作預計都是相似的。

例如,USB設備的輪詢速率是由設備本身指定的,而不是由主機作業系統決定的。
該輪詢率在端點描述符,範圍可以是「低速/全速設備為 1ms,高速設備為 125us」。


我認為如果不觸摸鍵盤,PS/2 鍵盤就不會透過 PS/2 電纜進行任何來回通信

PS/2 介面使用時脈線來協商半雙工通訊的方向,而 USB 是依賴主從時間協定的共用半雙工匯流排。
PS/2 裝置可以隨時進行傳輸,除非 PC 主機將時脈線拉低,從而強制 PS/2 裝置停止傳輸。

答案2

如果我只是看電影並且幾個小時不碰鍵盤,來回 USB 通信真的會繼續每毫秒重複一次嗎?或者我通常會進入某種 USB 睡眠狀態(例如,1 Hz 輪詢)?

每毫秒,PC 應該以 IN 請求啟動

事實上,「溝通」並不是真正發生在每一個毫秒。但確實,低速 USB 主機每毫秒都會持續向匯流排發出「保持活動」脈衝。這稱為“USB 框架”。所以這裡沒有發生實際的通訊。

正如您正確指出的那樣,僅當主機發送輪詢(IN)請求時才會發生「通訊」。 Windows 的正常輪詢率為 8 毫秒,每 8 幀一次,但這取決於情況。如果使用專有驅動程序,例如“遊戲鍵盤”,正如您所說,輪詢可能每 1 毫秒發生一次。

是的,這是一個浪費的過程,確實如此。這就是大多數便攜式設備採用省電技術的原因。它們沒有降低輪詢速率,而是使用標準 USB_SUSPEND 函數。如果其內部演算法確定鍵盤或滑鼠沒有發出新訊息,主機將選擇性地暫停每個 HID(人機介面裝置)。進入 SUSPEND 狀態的延遲為 8 ms。如果我沒記錯的話,不活動逾時約 200 毫秒,之後 USB 線進入暫停狀態,無切換。

當您觸控鍵盤或滑鼠時,它們將產生「喚醒」事件,並且主機將恢復 USB 流量和通訊輪詢。是的,這個RESUME 比平常的輪詢需要更長的時間,15-20-50 毫秒,如果整個系統在某種程度上進入睡眠狀態,甚至會更長,因此用戶可能會對「鍵盤延遲」感到沮喪。但這種主動式管理的暫停功能確實可以節省電池壽命。

如果您只是在桌上型電腦上觀看電影,則不太關心功耗,並且鍵盤的輪詢可能永遠不會停止,儘管可能有一些配置設定可以實現更積極的節能。

與 USB 不同,PS/2 介面可以主動從鍵盤/滑鼠端產生通訊流量,因此該介面可以保持不活動狀態,而無需主機輪詢。

相關內容