可擴展主機控制器接口(eXtensible Host Controller Interface,縮寫xHCI)是一種計算機接口規範,其定義了用於通用串列匯流排(USB)主機控制器的暫存器級描述,可以與USB 1.x、2.0和3.x兼容設備接口連線。該規範也被稱為USB 3.0主機控制器規範。
基本介紹
- 中文名:可擴展主機控制器接口
- 外文名:eXtensible Host Controller Interface
- 領域:計算機接口
架構目標
- 高效運行 – 閒置耗電與性能優於傳統USB主機控制器架構;
- 與現有USB軟體模型完全一致的設備級編程模型;
- 將提供給軟體的主機控制器接口與底層USB協定解耦;
- 最小化主機記憶體訪問,完全消除USB設備空閒時的主機記憶體訪問;
- 消除暫存器寫入並最小化正常數據傳輸時的暫存器讀取;
- 消除“同伴控制器”模式;
- 在系統資源受限情況下啟用硬體“故障轉移”模式,因此設備仍然可以訪問,但可能有不利的功耗/性能;
- 提供不同市場不同硬體功能的能力,例如針對特定市場的主機控制器功率、性能和成本折衷;
- 定義一個可擴展架構,為新的USB規範和技術提供一條簡單的路徑,例如更高頻寬接口、光傳輸介質等,使其不需要再定義一個USB主機控制器接口。
架構細節
- xHCI消除了基於USB事務日程的主機記憶體,在沒有USB數據移動時,可以實現主機記憶體零活動。
- xHCI允許USB 3.0或更高版本的設備在數據可被讀取時通知主機控制器,從而減少定期輪詢設備的需求;並將使用中斷處理的USB 2.0和1.1設備的管理從CPU驅動的USB驅動程式移動到USB主機控制器。如果不需要任何更改、並且如果沒有任何設備有任何中斷髮送,EHCI、OHCI和UHCI主機控制器會自動為CPU處理輪詢,但它們都依賴CPU為控制器設定日程表。如果使用中斷事務的任何USB設備有要傳送的數據,則xHCI主機控制器將傳送中斷,通知CPU有需要處理的USB中斷事務。由於CPU不再需要管理USB匯流排的輪詢,因此可以在低功耗狀態下保持更久。
- xHCI不要求其實現支持所有高級的USB 2和3電源管理功能,包括USB 2 LPM、USB 3 U1和U2狀態、HERD、LTM、功能喚醒等。但是這些功能是實現xHCI所有優點的必要條件。
- 各個USB設備(不管其在匯流排拓撲中的位置)直接分配給任何虛擬機;
- 最小化運行時虛擬機之間的通信;
- 支持原生USB設備共享;
- 支持PCIe SR-IOV。
- xHCI架構消除了同伴控制器及其單獨的驅動程式堆疊的需求。
- 以前由驅動程式執行的日程合併、頻寬管理和USB設備地址分配功能,現在轉入xHCI硬體,這使xHCI的軟體堆疊更簡單、精簡、更低延遲。
- xHCI流協定的支持允許USB設備選擇xHCI調度時選擇哪個緩衝區用於傳輸。
- xHCI架構本身設計的最大值允許大量USB設備、連線埠、中斷向量,……但相應實現的定義只需要滿足其行銷所宣稱的數值。舉例來說,供應商可以將其平板電腦上實現的xHCI只支持最多16個USB設備。
- 供應商可以進一步利用xHCI架構特性來調整其內部資源,以匹配目標使用模式。例如,如果供應商經過可用性測試確定95%的平板電腦用戶永遠不會連線超過4個USB設備,並且每個USB設備通常定義4個端點(或更少), 那么可以確定正常情況下內部快取16個端點上下文就已足夠,不會有由於端點上下文分頁產生的系統記憶體活動。