构建强大的 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 设备。
决定支持 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 兼容性测试来说,对每一种设备“逐一”进行测试很不现实,因为设备如此之多,每天都会出现大量的新设备,而许多旧设备已无处购买。我们需要开发一种智能化的设备测试策略。在分析设备统计信息之后,我们将设备分为三大类:
- 设备知名度
在对自动搜集的信息进行分析查找最知名的设备时,我们注意到一种现象。每个类设备(键盘、网络摄像头、打印机、存储器等)都仅有数个知名制造商,并且主要产品系列也屈指可数。在分析这些研究成果后,我们可以用几百种设备来代表 70-80% 的设备。测试人员使用数学术语“等价类”来形容这项工作。 - 芯片组
如果只是考虑知名度数据,则仍然有相当大比例的设备未能进行测试,因此,我们进一步分析实际的电路设计。就像人一样,外观差异很大的设备内在却非常相似。如果我们确保所有 USB 芯片组均能兼容,那么包含这些芯片组的设备极有可能也可正常工作。在设备中嵌入芯片组的芯片组制造商数量相对较少,因此,我们选择用开发板来代表芯片组制造商的 USB IP。 - 关注度较高和兼容性不佳的设备
通常,这些设备并不是兼容呼声最高的 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,他们利用该工具在其设备上市前发现和解决设备问题。
MUTT 设计师 David Hargrove 以及 MUTT 设备
演示视频
对于 USB 3.0 来说,其最重要的优点或许就是充分满足了用户对 USB 的期望:USB3 可提供最强大的功能和最全面的兼容性,可以这么理解吧?低速、全速、高速和超高速的每个 USB 设备都可以在 Windows 8 上运行。这就是我们的工作重点,同时提供最强大和最可靠的 USB 堆栈。
我们看一下 USB 3.0 在执行某些非常繁重的复制任务时的表现以及相比 USB 2.0 的超凡速度。
如果您在此处看不到视频或者视频无法播放,请从以下地址下载:高质量 MP4 | 低质量 MP4
--Dennis