xhci
英特爾公司開發的控制器介面
XHCI,即可擴展的主機控制器介面,是英特爾公司開發的一個USB主機控制器介面。
XHCI(可擴展的主機控制器介面)
XHCI(eXtensible Host Controller Interface)可擴展的主機控制器介面是英特爾公司開發的一個USB主機控制器介面。它目前主要是面向USB 3.0的,同時它也支持USB 2.0及以下的設備。我們知道USB 2.0主要用的是EHCI,USB 1.1則是OHCI和UHCI。EHCI為了兼容USB 1.1,就將OHCI或UHCI之一集成進自己的規範里,這樣我們在設備管理器中就一般能同時看到兩種USB主機控制器存在,這種方式名叫Companion(夥伴)模式。
現在,xHCI將這種模式完全消除了,它不再和以前的主機控制器規範兼容,一個規範支持所有的USB協議。這樣帶來的好處多多,很多優點都是EHCI/OHCI/UHCI所沒有的或不敢想象的,比如:
1. 性能和能效方面能提供更高的效率,如系統空閑時能提供更低的功耗。
2. 保證設備級的編程模型與現有的USB軟體模型完全一致。這個很重要,相當於是只要替換掉原有的主機控制器和相應控制器驅動及匯流排驅動,其它的現有設備和驅動都不用作任何修改就可以直接拿來使用了。
3. 協議本身對USB規範的依賴不存在了,有作為一個通用主控器的潛質,不僅僅只被限制在USB規範上。
4. 減少對主機內存訪問次數,特別是在設備空閑時,完全不用訪問主機內存,這樣,功耗才可以做到更低。
5. 去掉了EHCI中的Companion(夥伴)模型,硬體方面估計拋掉了不少包袱,驅動複雜度也應該得到一定程度的降低。
6. 系統資源不足的情況下,還可以啟動出錯恢復模式,讓設備犧牲一些性能的情況下能繼續工作下去。
7. 靈活的硬體定製能力,針對不同的市場作出相應的裁剪。比如虛擬機支持部分就是可選的。
8. 可擴展性方面重新定義,面向未來,以後若有USB 4,預計也能應付,不需要再重新定義新的規範。
所有USB 3.0特性的穩定支持。xHCI支持USB3.0的所有特性(廢話,它就是為USB3.0而生的,不完全支持它那支持誰)。其中包括新的USB 3.0特性,如非同步事務和其它協議中的擴展特性。
支持所有的USB設備。支持所有速度的USB設備,包括:USB 2.0 低速、全速和高速設備,以及USB 1.1 低速和全速設備。
系統電源管理。USB3架構重點在省電這一塊提高了移動設備電池壽命。USB2 LPM(鏈路層電源管理)擴展也在xHCI中有支持。當系統空閑時減少電源消耗也是該協議重點關注對象。
為原有的USB主機控制器存在的問題提供簡單穩定的解決方案。xHCI規範提供了USB主機控制器中已經證明存在的各種問題的解決方案。其中的一些問題已經在規範中就已經解決了,包括:內存thrashing、內存訪問效率和與CPU電源管理之間的衝突等。xHCI在架構中提供了新的獨有的特性和優化措施來解決已有的問題。
最優化內存訪問效率。數據傳輸模型去除了以前主機控制器當中的基於內存的事務調度機制。它利用傳輸層的操作來減少執行USB操作所需的平均內存訪問次數。
減少硬體介面的複雜性。提供了一個簡單的介面來讓軟體為主機控制器提交參數化的傳輸請求,主機控制器利用它來執行USB事務。這個介面讓軟體可以在主機控制器在執行命令時非同步地添加新的任務,從而避免了軟體需要採用各種同步機制。
支持32位和64位地址。在規範實行的生命期內,可以預見到的是xHCI主機控制器被用在超過32位地址內存空間的系統上的機會越來越多。xHCI內在支持多達64位的地址空間。
支持虛擬內存。所有的xHCI寄存器和數據結構都是被設計成支持coarse-grain Scatter/Gather的基於內存頁的虛擬內存架構。
支持fine-grain Scatter/Gather。這個介面為所有的數據傳輸支持硬體scatter/gather方法,可以被用來訪問虛擬內存頁,而且不受內存頁大小的限制。xHCI scatter/gather列表包括的緩衝區可以從任意位元組偏移處開始和任意位元組長度。這個特性可以讓xHCI scatter/gather機制在應用層使用,從而減少數據複製次數。
支持虛擬化技術。通過使用PCIe的SR-IOV規範,提供的虛擬機管理器能啟動虛擬xHCI控制器(),並且可將任何USB設備指派到任意VxHC實例。虛擬技術的支持是一個可選的xHCI標準特性。