可扩展主机控制器接口

✍ dations ◷ 2025-06-11 08:41:26 #可扩展主机控制器接口

可扩展主机控制器接口(eXtensible Host Controller Interface,缩写xHCI)是一种计算机接口规范,其定义了用于通用串行总线(USB)主机控制器的寄存器级描述,可以与USB 1.x、2.0和3.x兼容设备接口连接。该规范也被称为USB 3.0主机控制器规范。

xHCI在许多方面相较前几代USB主机控制器接口架构有着根本突破。前几代是:开放主机控制器接口(英语:Open Host Controller Interface)(OHCI)、通用主机控制器接口(英语:Universal Host Controller Interface)(UHCI)和增强主机控制器接口(英语:Enhanced Host Controller Interface)(EHCI)。以下是xHCI架构的主要目标:

OHCI及UHCI控制器仅支持USB 1 设备(1.5 Mbit/s和12 Mbit/s)而EHCI仅支持USB 2 设备(480 Mbit/s)。

xHCI架构在设计上支持USB 1/2/3速度,包括USB 3 Gen1(5 Gbit/s)和USB 3 Gen2(10Gbit/s),且只需单个驱动程序堆栈。

在USB最早于1995年开发之时,它是为台式机平台而设计,防止PC上的连接器不断增加(例如PS/2、串行端口、并行端口、游戏端口等),当时主机的功耗并不是重要的考虑因素。在那之后,移动平台已经成为选择之一,而其电池使功耗成为一项关键的考虑因素。传统USB主机控制器(OHCI、UHCI和EHCI)的架构非常相似,在USB上执行的事务的“日程安排”由主机内存中的软件构建,并且主机控制器硬件将连续读取调度以确定在USB上需要驱动的事务,哪怕没有数据被移动。另外,在从设备读取之时,即使没有要数据的读取,也会在每个调度间隔之时轮询设备。

传统的USB主机-控制器架构在应用于虚拟化环境时表现出一些严重的缺陷。传统的USB主机-控制器接口定义了一个相对简单的硬件数据泵;其中与整体总线管理(带宽分配、地址分配等)相关的关键状态驻留在主机适配器驱动程序(HCD)的软件中。尝试将标准的硬件IO虚拟化技术(复制I/O接口寄存器)应用于传统USB主机控制器接口是有问题的,因为跨越虚拟机(VM)的关键状态的管理不适用于硬件。xHCI架构将这一关键状态的控制转移到硬件,从而实现跨虚拟机的USB资源管理。xHCI虚拟化功能还提供:

EHCI使用OHCI或UHCI控制器作为“同伴控制器”,其中USB 2设备通过EHCI堆栈管理,并且EHCI的端口逻辑允许将低速或全速USB设备路由到“同伴”的UHCI或OHCI控制器,其中低速或全速USB设备通过相应的UHCI或OHCI堆栈管理。举例来说,提供4个USB“标准A”连接器的USB 2 PCIe主机控制器卡通常会向系统软件提供一个4端口EHCI和两个2端口OHCI控制器。当一个高速USB设备连接到4个连接器之一时,该设备是受EHCI控制器的4个根集线器端口之一管理。如果一个低速或全速USB设备连接到连接器1或2,它将被路由到其中一个OHCI控制器的根集线器端口来管理,以及连接到连接器3或4的低速和全速USB设备将路由到另一个OHCI控制器的根集线器端口。EHCI对高速USB设备以及低速和全速USB设备组独立主机控制器的依赖性导致EHCI和OHCI/UHCI驱动程序之间的复杂交互和依赖性。

USB 3.0 SuperSpeed规范中增加了流支持,这主要是为通过USB实现高性能存储操作。USB端点与系统内存的缓冲区之间的关系通常是1:1,主机控制器只负责指导所有的数据传输。流通过提供一对多的“缓冲区”的关联改变了这个范例,并允许设备直接告知主机控制器将移动指向哪个缓冲区。与USB流端点相关联的USB数据传输是由xHCI所有的、相同的批量端点调度,但与传输相关联的数据缓冲区由设备决定。xHCI USB流支持最多64K缓冲区与单个端点相关联。

xHCI架构被设计为高度可扩展,能够支持1到255个USB设备和1到255个根集线器端口。因为每个USB设备最多定义31个端点,因此支持255个设备的xHCI最多能支持7,906个单独的总端点。通常来说,与一个端点关联的每个内存缓冲区是以一个物理内存块中的队列描述,其中的队列需要头指针、尾指针、长度等寄存器来定义其状态。有很多方法可以来定义队列状态,但如果每个队列要占用32个字节的寄存器空间,则几乎需要256KB的寄存器空间才能支持7,906个队列。一般来说,只有少量USB设备被同时连接到一个系统,并且平均来说,一个USB设备支持3-4个端点,而其中部分端点在同一时间处于活动状态。xHCI在系统内存中维护队列状态作为端点的上下文数据结构。上下文的设计使得它们可以被xHCI缓存,并且以端点的活动进行“分页”。因而,供应商可以根据其产品预期的实际使用模式调整其内部的xHCI端点上下文缓存的空间和资源,而不必按照架构本身的限制来设计。在内部缓存空间选择理想并且正常使用条件的的情况下,xHCI不出现上下文分页。USB端点的活动往往是突发性。也就是说,在任何时间点,都可能有大量端点准备好移动数据,但只有一个子集活跃于移动数据。例如,如果用户离开了设备,则鼠标的中断端点可能数小时不会传输数据。xHCI供应商设计的算法可以检测这种情况,并在其他端点变为忙碌时使该端点变为分页候选。

开放主机控制器接口(OHCI)规范由多家企业(Compaq、微软和National Semiconductor)联合定义,是支持USB 1.0设备的开放规范。通用主机控制器接口(UHCI)最初是英特尔为支持USB 1.0设备定义的一个专有接口的规范。UHCI规范最终公开,但那时其他行业已采用OHCI规范。

英特尔为支持USB 2.0设备定义了EHCI规范。EHCI架构模仿UHCI和OHCI控制器建立,需要软件在内存中构建USB事务日程,以及管理带宽和地址分配。为消除行业冗余定义USB 2.0主机控制器接口开放版本的重复努力,英特尔公司将EHCI规范提供给业界,无需许可费用。

英特尔的xHCI规范继续采用EHCI的许可模式,但行业内贡献有大幅度增长。超过100家公司为xHCI规范做出了贡献。USB开发者论坛(USB-IF)也资助了一套xHCI合规性测试,以最大化各种xHCI实现的兼容性。

xHCI 1.0控制器自2009年12月起出货。Linux内核自2009年包含xHCI驱动程序,较旧的内核也有在线的驱动程序可用。适用于Windows XP、Vista和7的驱动程序可以从相应的xHCI供应商处取得。Windows 8内建原生的xHCI支援。用于嵌入式系统的xHCI驱动程序可以从MCCI、Jungo以及其他软件供应商处取得。许多供应商还提供xHCI IP块,以便在SOC环境中定制。xHCI 1.1控制器和设备于2015年开始发货。

xHCI规范使用“勘误”(errata)文件来定义特定版本的更新和说明。勘误文件中的更改在每个发布中累积。有关具体更改的详细信息,参阅相关的勘误文件。xHCI勘误文件中定义的大多数更改是澄清说明、语法或拼写更正,额外的交叉参考等,这些都不影响驱动程序的实现。体系结构的更改利用一个“Capability”(能力)标志来确定特定功能是否被一个xHCI实现支持,以及一个“Enable”(启用)标志来开启功能。

在2010年正式发布之前,xHCI规范通过多个版本进行演变:

相关

  • 真核域真核生物(学名:Eukaryota)是其细胞具有细胞核的单细胞生物和多细胞生物的总称,它包括所有动物、植物、真菌和其他具有由膜包裹着的复杂亚细胞结构的生物,而不包括细菌和古菌,因它
  • 水黾水黾(学名:Gerridae)俗称“水马”、“水蜘蛛”、“水较剪”,是异翅亚目中的一个科,为椿象界的“两栖椿象”,是生活在水面上的一种昆虫。它们能在水面上行走,既不会划破水面,也不会浸
  • 南康区南康区是中华人民共和国江西省的一个市辖区,现是隶属于赣州市。南康区地处于江西省南部,距离赣州市中心城区约半小时车程,因“地接岭南,人安物阜”而得名。原南康市总面积1800平
  • 凯莉·布雷萧凯莉·布雷萧(Carrie Bradshaw)是美国HBO电视剧集《欲望城市》及其前传《凯莉日记》里的一个虚构角色,由莎拉·杰茜卡·帕克饰演。她是作家坎蒂丝·布什奈儿在同名书籍中创造的
  • 凯尔·钱德勒凯尔·钱德勒(英语:Kyle Chandler,1965年9月17日-)是美国的一位男演员。他出演过众多电视剧,以及《金刚》、《超级8》、《逃离德黑兰》、《猎杀本拉登》、《华尔街之狼》、《好景
  • 西尼德·钱伯斯西尼德·钱伯斯(爱尔兰语:Sinead Chambers,1992年2月1日-),爱尔兰女子羽毛球运动员。2012年10月,西尼德·钱伯斯出战爱尔兰羽毛球未来系列赛,与Jennie King合作赢得女子双打冠军。只
  • 宾汉姆峰坐标:79°26′S 84°47′W / 79.433°S 84.783°W / -79.433; -84.783宾汉姆峰(英语:Bingham Peak)是南极洲的山峰,座标,位于埃尔斯沃思地,处于斯普林格峰东南面5公里,属于埃尔斯沃
  • 格里戈里·米哈伊洛维奇·科津采夫格里戈里·米哈伊洛维奇·科津采夫(俄语:Григорий Михайлович Козинцев,转写:Grigori Mikhailovich Kozintsev;1905年3月22日-1973年5月11日,苏联电影导
  • 戏作戏作(げさく、ぎさく)是江户时代后期的通俗小说类之总称。戏作的著者称为戏作者。戏作大致分成洒落本、滑稽本、谈义本、人情本、读本、草双纸。草双纸依内容、形态又分成赤本
  • 刘挚刘挚(1030年-1098年),字莘老,永静军东光人,北宋政治人物。嘉祐四年中进士甲科,初任冀州南宫县令,政绩卓越。王安石对刘挚非常器重,提拔为检正中书礼房公事,王安石推行新法,刘挚却上书陈述新法弊病。贬为衡州监管盐仓。元丰初年改任集贤院校理,后知大宗正寺丞,再担任开封府推官。宋哲宗继位后,任秘书少监,官侍御史,与梁焘、王岩叟、刘安世同为朔党领袖。元祐六年,拜尚书右仆射,与尚书左仆射吕大防共同执政,废弃新法。刘挚性峭直,后与吕大防有隙,御史杨畏劾奏刘挚,不久刘挚被罢相。绍圣四年(1097年)被流放新州,不