构建强大的 USB 3.0 支持

在涉及行业广泛的 IT 生态系统中,Windows 扮演的重要角色之一是开发对新硬件的支持。这是一个非常复杂的过程,因此,在本帖中,我们想讨论一下 USB 3.0 支持。我们知道,每个人都渴望使用 USB 3.0,因为它带来了巨大的改进。这也是我们的第一篇视频贴 – 我们只是按部就班地“制作”视频,并不奢求能够达到很高的制作水准,不过我想我们已经清晰地阐述了我们所要表达的意思(注意:视频以 HTML5 的格式嵌入,可供下载)。在观看该视频时,您可能会觉得这些文件副本的进度指示器看起来有点过时了,我也有同感…我们正在予以改进,敬请期待。本贴由设备和网络组的项目管理总监 Dennis Flanagan 撰写。–Steven

USB 3.0 的数据传输速度比 USB 2.0 要快 10 倍,改进后的电源管理功能可延长电池的使用时间,基于上述优点,USB 3.0 势必将推动世界上最流行的 PC 接口的变革。预计到 2015 年,所有新的 PC 都将提供 USB 3.0 端口,仅 2015 年这一年内就将销售超过 20 亿的新“超高速”USB 设备。

图 1 - USB 3 PC 市场预测
In-Stat,2011 年 6 月

图 2 - USB 设备市场预测,2011 年 6 月
In-Stat,2011 年 6 月

决定支持 USB 3.0 并不难,但是要在不影响现有的 USB 生态系统的前提下支持 USB 3.0 却是要克服的一个巨大挑战。我们的设计必须严格遵循修订后的 3.0 规范以便支持新兴的 USB 3.0 硬件。但 Windows 还必须与数十亿台旧 USB 设备保持兼容。如何编写一个软件,在新硬件上支持最新技术,同时确保可与全球 100 亿现有的家庭和办公设备兼容?

首先,让我们来回顾一下 USB 的发展史

1996 年,USB 标准组织发布了第一个 USB 规范,该规范为 USB 设备定义了两种速度:低速 (1.5 Mbps) 和全速 (12 Mbps)。在当时,“热插入”设备(插入和拔出时无需重新启动)是一项革命性的理念。USB 还支持不同的数据传输方式:批量传输,适用于发送大量数据之后不需要保存的设备,如打印机;同步传输,适用于以特定顺序不断接收数据的设备,如扬声器;以及中断传输,适用于偶尔发送数据的设备,如键盘。

1996 年的规范还将 USB 设备的复杂性转嫁到 PC,降低了设备的成本且更容易实施。这些特点使 USB 成为最具吸引力的外部设备连接器。最终,设备制造商采纳了 USB 标准并加入了该标准组织,为不同类型的设备定义软件和硬件之间的通用接口。这些通用接口允许单一软件驱动程序、类驱动程序支持各种类型的设备。从 Microsoft 采纳 USB 技术并加入该标准组织开始,多年来我们一致在为许多规范贡献自己的力量。我们在 Windows 95 OSR 2 中引入了 USB 1.1 支持。

2000 年,USB 2.0 规范出台,该规范提供了全新的高速 (480 Mbps) 数据传输模式。但遗憾的是,用于将 PC 连接到设备的硬件(主控制器)与早期版本不兼容。高速设备与所有控制器兼容,但低速和全速设备与 USB 2.0 控制器不兼容。PC 需要附带两个不同的控制器或嵌入一个 USB 2.0 集线器,才能支持所有类型的设备。在 Windows XP SP1 中,我们通过增加 USB 2.0 功能增强了现有的软件驱动程序堆栈。

USB 3 之路:从促进规范的标准化入手

通过积极参与 USB 标准组织,我们帮助建立了一个可兼顾高性能和互操作性的规范。与 USB 实施者论坛的其他成员一样,我们希望看到一个更快、更节能的 USB 版本,与 USB 2.0 不同,在该版本中,硬件和软件的单一组合可以与所有的 USB 设备兼容。

2008 年,USB 标准组织发布了新的 USB 3.0 规范,其中包括新的主控制器并定义了新的“超高速”USB 设备 (5 Gbps)。结合使用新的主控制器和“超高速”USB 设备,控制器和设备的理论运行速度要比 USB 2.0 快 10 倍。使用这一新标准,您只需大约 80 秒钟即可从 USB 存储驱动器中复制一部高清电影,而 USB 2.0 需要 15 分钟时间。该规范还引入了一种新的传输类型“流式传输”,它使存储驱动器能够更有效地处理读取和写入操作。

与 USB 2.0 相比,新规范的供电功率提高了 80%。这意味着充电速度更快,外部 DVD 驱动器和其他高功率设备不再需要使用造型古怪的“Y”形电缆。不过,在考虑电源设计时,提供更快的充电速度并不是唯一的考虑因素。随着移动计算的普及,人们希望延长 PC 的电池使用时间。而 USB 3.0 还引入了新的低功耗状态,可以更迅速地完成任务并在不需要时随时关闭电源,比上一代更省电。从而使笔记本的电池使用时间更长,台式机的电源功耗更低。

最重要的是,该规范承诺在支持新一代 USB 的同时保持与全速、低速和高速设备兼容。甚至插头都是向后兼容的。

与硬件产业建立密切的合作关系

随着规范的标准化,我们开始着手 Windows 的设计,此时碰到了第一个困难的抉择。是更新我们现有的 USB 软件(从 Windows95 OSR2 开始,我们不断地对该软件进行修改),还是遵循现代的设计原则编写新的软件?不计其数的设备及其驱动程序依赖于我们现有的软件的行为,因此,我们不能简单地转换到全新的设计。如何解决这一问题?我们决定不转换到新的设计,而是为新控制器精心设计一个新的 USB 软件协议堆栈,同时保留现有的接口和行为,确保每一台设备及其驱动程序都能正常工作。对于较早的控制器,我们保留现有的软件堆栈。

为创建全新的 USB 软件堆栈,我们不得不提前开始工作。如果我们等待硬件上市,在为处于萌芽状态的 USB 3.0 生态系统提供支持方面,我们的行动就太晚了。我们决定通过建立“虚拟”设备,在没有任何 USB 3.0 设备上市之前开始工作。虚拟设备是真实的下列物理 USB 硬件的软件表示形式:端口、集线器和其他设备。

在开发虚拟设备的同时,我们开始设计并建立原型。USB 软件非常复杂,因为它必须管理集线器和设备,同时还要处理任何错误。为了创建可供长期使用的产品,我们需要对产品的工作流程进行可视化并予以归档。我们设计了三个庞大的流程图和一个代码生成器,用于将 Visio 图表自动转换到软件中。我们与 Microsoft Research(微软研究院)合作,对名为 Zing 的工具进行了改进,该工具可以验证此软件模型的各个方面。

 
流程图与其架构师 Randy Aull 和 Vivek Gupta

在我们完成了一些初步的开发工作之后,我们收到了第一个 USB 主控制器。我们认识到,尽管模拟提供了一个很好的切入点,但还是不能满足要求。在硬件方面,我们发现一些假设是错误的,存在时序问题和现实世界独有的其他问题。前方的路还需要我们帮助培育新的生态系统,这需要与我们的硬件合作伙伴紧密协作。我们需要共同努力建立原型、互相交流思想、进行深入的技术讨论以及报告错误。我们必须共同承诺展开密切合作,以便在设计完成前找出问题。

随着 USB 3.0 开发工作的不断推进,逐渐形成了社区意识。只有当所支持的硬件取得成功时软件才能取得成功。与我们的硬件产业合作伙伴合作,我们不断地发现问题、制定解决方案并建立新 USB 生态系统的基础。

严密的测试是良好支持性的有力保障

我们在关注为 PC 内的 USB 3.0 芯片提供支持的同时,也不能忽视设备领域。我们必须跳出固有的思维模式。全球有超过 100 亿的 USB 设备。一些设备每日都在使用,一些设备已被丢弃在角落中落满灰尘,但所有设备的设计初衷都是与 Windows PC 配合使用。兼容性是 Windows 的承诺。我们的客户已习惯于期待 Windows 的新版本与他们现有的设备和驱动程序兼容。在 Windows 8 的产品开发过程中,这一兼容性承诺仍然是需要优先考虑的事项。

对于 USB 兼容性测试来说,对每一种设备“逐一”进行测试很不现实,因为设备如此之多,每天都会出现大量的新设备,而许多旧设备已无处购买。我们需要开发一种智能化的设备测试策略。在分析设备统计信息之后,我们将设备分为三大类:

  1. 设备知名度
    在对自动搜集的信息进行分析查找最知名的设备时,我们注意到一种现象。每个类设备(键盘、网络摄像头、打印机、存储器等)都仅有数个知名制造商,并且主要产品系列也屈指可数。在分析这些研究成果后,我们可以用几百种设备来代表 70-80% 的设备。测试人员使用数学术语“等价类”来形容这项工作。
  2. 芯片组
    如果只是考虑知名度数据,则仍然有相当大比例的设备未能进行测试,因此,我们进一步分析实际的电路设计。就像人一样,外观差异很大的设备内在却非常相似。如果我们确保所有 USB 芯片组均能兼容,那么包含这些芯片组的设备极有可能也可正常工作。在设备中嵌入芯片组的芯片组制造商数量相对较少,因此,我们选择用开发板来代表芯片组制造商的 USB IP。
  3. 关注度较高和兼容性不佳的设备
    通常,这些设备并不是兼容呼声最高的 USB 设备。如果这些设备的兼容呼声很高,我们希望确保 Windows 在未来将与之兼容。

我们有 10 年的 USB 开发经验和十几种自动信息搜集途经,在进行了大量的研究和集体讨论之后,我们将 USB 的兼容性测试工作量缩减为大约 1000 种可定期在 Windows 实验室中测试的唯一设备。我们确保设备在连接到 PC 时得到正确识别,适时睡眠和恢复以降低功耗,而且设备能够适应各种复杂条件。我们自动搜集的数据表明,超过 90% 的设备依赖于 Windows 中的 16 类驱动程序,但对于更多的定制设备,我们确认用户可以从 Windows Update 无缝下载这些设备的驱动程序(如提供,需要设备制造商的协作支持)。USB 3.0 提供全面的向后兼容性,旧驱动程序仍然可以正常工作,不需要进行任何更改。

我们还投巨资开发了一款定制工具“Microsoft USB Test Tool”(MUTT),该工具可模拟我们多年来观察到的各种设备行为。MUTT 完全由 Microsoft 自主开发。我们的软件测试工程师利用专业的设计工具(MS Paint)绘制出电路设计。然后,他们开发固件并生成新的测试内容在内部运行。MUTT 诞生了 - 想象一下,一个 USB 拇指驱动器存储了 1000 种设备。随着时间的推移,我们与硬件合作伙伴共享 MUTT,他们利用该工具在其设备上市前发现和解决设备问题。

图 4 - MUTT 设计师 David Hargrove 以及 MUTT 设备
MUTT 设计师 David Hargrove 以及 MUTT 设备

演示视频

对于 USB 3.0 来说,其最重要的优点或许就是充分满足了用户对 USB 的期望:USB3 可提供最强大的功能和最全面的兼容性,可以这么理解吧?低速、全速、高速和超高速的每个 USB 设备都可以在 Windows 8 上运行。这就是我们的工作重点,同时提供最强大和最可靠的 USB 堆栈。

我们看一下 USB 3.0 在执行某些非常繁重的复制任务时的表现以及相比 USB 2.0 的超凡速度。

您的浏览器不支持此 HTML5 视频。

如果您在此处看不到视频或者视频无法播放,请从以下地址下载:高质量 MP4 | 低质量 MP4

--Dennis