可扩展主机控制器接口

✍ dations ◷ 2025-10-22 04:14:25 #可扩展主机控制器接口

可扩展主机控制器接口(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规范通过多个版本进行演变:

相关

  • 面包历史面包至少有3万年的历史。第一个面包很可能是偶然情况下弄熟的谷物面糊,也可能是史前人类用早期面粉和水做实验的结果。类似的面饼现在还能在世界各地找到,制作面饼的材料可以
  • 政治权利政治权利(英语:political rights)是指在特定的社会经济关系及其体现的利益关系基础上,由政治权力确认和保障的社会成员和社会群体的主张其共同利益的法定资格。政治权利是公民参
  • 金吉拉猫金吉拉猫(英语:Chinchilla cat)是金吉拉色的家猫,毛尖颜色比渐层猫更浅,毛底颜色有银色与金色两种。狭义的金吉拉猫是属于波斯猫类的长毛家猫,祖先是安哥拉猫与波斯猫,原产于英国。
  • 2005年8月逝世人物列表2005年逝世人物列表:1月 - 2月 - 3月 - 4月 - 5月 - 6月 - 7月 - 8月 - 9月 - 10月 - 11月 - 12月下面是2005年12月逝世的知名人士列表:
  • 满四满四(?-1469年),本名满俊,因在家中排行老四,俗称“满四”,明朝陕西固原开城的土官,蒙古族。明宪宗成化三年(1467年)六月,满四聚众数万起事,自称招贤王。陕西总兵任寿、陈价讨伐失利。满四
  • 基辅鸡演说美国总统乔治·H·W·布什于1991年8月1日于乌克兰基辅发表了一篇演说,警告“自杀式民族主义”,该演说被称为“基辅鸡演说(英语:Chicken Kiev speech)”。演说发表后三星期,乌克兰
  • 赤石河赤石河,位于中华人民共和国广东省南部海丰县境内,发源于海丰县西部赤石镇大安村东北白马山,蜿蜒向西南流至小漠镇沙坡渡汇入南海红海湾。河长36千米,河床比降5.21‰,流域面积382
  • 溇水溇水,是中国长江流域的一条河流,汇入澧水,属于澧水水系。河长256千米,流域面积5048平方千米,多年平均流量179立方米每秒。自然落差1671米。水能理论蕴藏量39万千瓦。
  • 卡内皮 (市镇)卡内皮(爱沙尼亚语:Kanepi vald),是爱沙尼亚珀尔瓦县的一个乡村型市镇。行政中心为卡内皮。市镇面积为525平方公里,2021年时人口数量为4,790人。2017年爱沙尼亚行政改革后,原卡内皮市镇、克莱斯泰市镇和瓦尔格耶尔韦市镇合并成新的卡内皮市镇。新的卡内皮市镇包括个1小镇和49个村庄。
  • 盲井《盲井》是一部中国2003年的电影作品,由刘庆邦的小说《神木》改编。电影忠于原著,而结尾又更加人本主义。私矿打工的农民唐朝阳(王双宝 饰)和宋金明(李易祥 饰)一心“发财致富”,拉拢将打工无门的外地农民认作亲人带到井下工作,再在下井时制造“安全事故”将“亲人”合谋杀死,再找矿主和“遇难”矿工家属用钱解决事端。他们在火车站盯上16岁的初来乍到的农村小伙子元凤鸣(王宝强 饰),故伎重演的帮他办了张假身份证,更名后元凤鸣又“成为”宋金明的侄子。两人带着元凤鸣找到一个煤矿工作,小伙子的善良、纯朴、天真与好学使得宋