Обеспечение надежной поддержки USB 3.0

Одной из важных ролей Windows в общей экосистеме является разработка возможностей поддержки нового оборудования. Это довольно сложный процесс, и в этой статье мы хотели рассмотреть поддержку USB 3.0 — технологии, которую всем не терпится использовать из-за улучшенных возможностей, которые она предоставляет. Кроме того, это наша первая видеопубликация. Мы хотели создать «инженерные» видео, а не добиться высоких показателей производительности, но я думаю, мы донесли свои идеи (учтите, что видео встроены в HTML5 и доступны для загрузки). Если вы видите то же, что и я, эти индикаторы выполнения копирования могут показаться вам немного устаревшими... Оставайтесь на связи. Автор этой статьи — Деннис Флэнеган, директор отдела руководства программой для группы взаимодействия с устройствами и сетью. –Стивен

Благодаря скорости, в 10 раз превышающей скорость USB 2.0, и улучшенному управлению питанием, позволяющему продлить срок действия аккумуляторов, технология USB 3.0 предоставляет неопровержимые доводы по улучшению самого популярного в мире интерфейса персональных компьютеровОжидается, что к 2015 г. все новые компьютеры будут оснащены портами USB 3.0 и только за этот год будет продано более 2 миллиардов новых «сверхскоростных» USB-устройств.

Рис. 1. Прогноз рынка продаж ПК с USB 3
In-Stat, июнь 2011 г.

Рис. 2. Прогноз рынка продаж USB-устройств, июнь 2011 г.
In-Stat, июнь 2011 г.

Принять решение об инвестициях в разработку USB 3.0 было легко, но сделать это без негативного влияния на существующую экосистему USB было очень трудной задачей. Наша разработка должна была точно соответствовать переработанной спецификации 3.0 для поддержки новых устройств USB 3.0. Существуют миллиарды старых USB-устройств, с которыми Windows также должна быть совместима. Как написать один программный продукт, чтобы использовать последние технологии для нового оборудования и одновременно обеспечить работу 10 миллиардов существующих устройств в домах и офисах во всем мире?

Для начала немного истории.

В 1996 г. Организация стандартов USB выпустила первую спецификацию USB, в которой были определены две скорости USB-устройств: низкая скорость (1,5 Мбит/с) и полная скорость (12 Мбит/с). В то время идея «горячего подключения» устройства (подключение и отключение без перезагрузки) была революционной. Технология USB также поддерживала разные способы передачи данных: пакетную для таких устройств, как принтеры, которые передают много данных и забывают о них; изохронную для таких устройств, как динамики, которые постоянно получают данные в определенном порядке; и по прерываниям для таких устройств, как клавиатура, которая отправляет данные только время от времени.

Спецификация 1996 г. также позволила перенести всю сложность реализации с USB-устройства на ПК, из-за чего устройства стали дешевле и проще. Эти возможности сделали USB самым привлекательным способом подключения внешних устройств. В результате производители приняли технологию USB и вошли в организацию, отвечающую за стандарты, чтобы определить интерфейсы между программным и аппаратным обеспечением для разных классов устройств. Эти интерфейсы позволяют реализовать один программный драйвер, драйвер класса, для поддержки всех устройств одного типа. С самого начала корпорация Майкрософт оценила все возможности технологии USB и помогала стандартизирующей организации разрабатывать многие спецификации на протяжении всех последующих лет. Поддержка USB 1.1 была впервые представлена в Windows 95 OSR 2.

В 2000 г. на свет появилась спецификация USB 2.0 с новой увеличенной скоростью (480 Мбит/с). К сожалению, хост-контроллер (оборудование, используемое для подключения ПК к устройствам) не был совместим с предыдущими версиями. Высокоскоростные устройства работали со всеми контроллерами, но устройства с малой и полной скоростью не поддерживали контроллеры USB 2.0. Компьютеры должны были поставляться с двумя разными контроллерами или концентратором USB 2.0, чтобы поддерживать все типы устройств. В Windows XP с пакетом обновления 1 (SP1) мы улучшили наш стек драйверов, добавив поддержку USB 2.0.

Путь к USB 3: начнем с надежной спецификации

Активно участвуя в работе организации стандартов USB, мы помогли создать одновременно высокопроизводительную и совместимую спецификацию. Как и другие участники форума по внедрению USB, мы хотели создать более быструю и экономичную версию USB, которая в отличие от USB 2.0 является одной комбинацией программного и аппаратного обеспечения и может работать со всеми USB-устройствами.

В 2008 г. организация по стандартам USB выпустила новую спецификацию USB 3.0, которая представила новый хост-контроллер и новое «сверхскоростное» USB-устройство(5 Гбит/с). В теории контроллер и устройство вместе могут обеспечивать скорость, в 10 раз превышающую скорость USB 2.0. С этим новым стандартом вы сможете скопировать фильм высокой четкости с USB-диска приблизительно за 80 секунд, а не за 15 минут, как это позволяет USB 2.0. Данная спецификация также представила новый тип передачи — потоки. Этот тип позволяет устройствам хранения более эффективно обрабатывать операции чтения и записи.

Новая спецификация предоставляет на 80 % больше мощности, чем USB 2.0. Это позволяет добиться более быстрой зарядки и отказаться от дополнительных Y-кабелей, используемых внешними устройствами чтения DVD и другими мощными устройствами. Но зарядка — не единственный вопрос, связанный с мощностью. Люди, использующие мобильные компьютеры, хотят, чтобы ПК экономили заряд аккумуляторов. За счет введения новых состояний малой мощности, более быстрого завершения задач и отключения питания при любой возможности технология USB 3.0 стала намного экономичнее, чем ее предшественники. Другими словами, она позволяет продлить срок действия аккумуляторов для ноутбуков и уменьшить энергопотребление для настольных компьютеров.

Что еще важнее, данная спецификация обещает обеспечить использование нового поколения USB-устройств и сохранить совместимость с прежними устройствами (с низкой, полной и высокой скоростью). Даже разъемы обладают обратной совместимостью.

Тесное сотрудничество с производителями оборудования

По мере разработки спецификации мы начали проектировать Windows, что привело к нашему первому тяжелому решению. Нужно ли нам обновить существующее ПО для USB, которое постепенно менялось со времен Windows 95 OSR2, или написать новое ПО в соответствии с современными принципами разработки? Бесконечное число устройств и их драйверов зависят от поведения существующего ПО, поэтому мы не могли просто взять и перейти на новый проект. Каково же решение? Не переходить. Вместо этого тщательно разработать новый стек ПО для нового контроллера USB и сохранить существующие интерфейсы и алгоритмы, чтобы обеспечить работу всех устройств и драйверов. Для старых контроллеров мы сохранили существующий стек ПО.

Чтобы создать новый стек программного обеспечения для USB, необходимо было как можно раньше приступить к работе. Если бы ждали, пока появится соответствующее оборудование, мы бы могли не успеть обеспечить поддержку развивающейся экосистемы USB 3.0. Мы решили начать, прежде чем появились реальные устройства USB 3.0, создав «виртуальные» устройства. Виртуальные устройства — это программное представление реального, физического USB оборудования: портов, концентраторов и других устройств.

После разработки виртуальных устройств мы приступили к проектированию и созданию прототипов. ПО для USB довольно сложное, так как оно должно управлять концентраторами и устройствами и при этом обрабатывать возможные ошибки. Чтобы создать что-то долговечное, нам нужно было визуализировать и задокументировать рабочий процесс. Мы спроектировали три масштабных блок-схемы и генератор кода для автоматического преобразования диаграмм Visio в программный код. Вместе с отделом исследований Майкрософт мы модернизировали средство Zing, которое может проверять любой аспект программной модели.

 
Блок-схемы и их авторы, Рэнди Аулл и Вивек Гупта

После завершения первоначального этапа разработки появились первые хост-контроллеры USB. Мы поняли, что моделирование — отличная начальная точка, но его недостаточно. С использованием оборудования мы выявили неверные предположения, проблемы со временем и другие моменты, связанные с реальным применением. Для продвижения вперед мы должны были развивать новую экосистему, а для этого требовалось тесное сотрудничество с нашими партнерами, производящими оборудование. Мы должны были работать вместе для создания прототипов, обмена идеями, подробного обсуждения технических аспектов и анализа ошибок в обоих направлениях. Нам нужно было сформировать общий взгляд на тесную совместную работу, чтобы определить возможные проблемы перед выпуском окончательной версии проекта.

Разработка USB 3.0 эволюционировала, как и ощущение общности. Программа может быть настолько успешной, насколько это позволяет оборудование. Вместе с нашими партнерами-производителями мы находили проблемы, устраняли их и создавали фундамент для новой экосистемы USB.

Я тестирую, значит существую

Пока наше внимание было сконцентрировано на поддержке микросхем USB 3.0 внутри ПК, мы не могли игнорировать мир устройств. Мы должны были выйти за рамки, буквально. Сейчас в мире больше 10 миллиардов USB-устройств. Некоторые используются постоянно, а другие собирают пыль, но все они были изначально разработаны для работы с компьютерами под управлением Windows. Совместимость — вот, что обещает Windows. Наши клиенты росли, привыкнув к тому, что новые версии Windows будут работать с имеющимися устройствами и драйверами. Такая поддержка совместимости также имеет высокий приоритет для Windows 8 во всех аспектах.

Для тестирования совместимости USB не подходит метод «грубой силы», так как устройств слишком много, каждый день появляются новые и при этом есть старые устройства, которые уже нельзя купить. Мы должны были разработать подходящую стратегию тестирования устройств. После анализа статистики оборудования мы разбили устройства на три основные категории:

  1. Популярность устройства 
    Рассматривая телеметрические источники в поисках самых популярных устройств, мы заметили закономерность. У каждого класса устройств (клавиатур, веб-камер, принтеров, устройств хранения и т. д.) есть несколько основных производителей всего с несколькими основными линиями продуктов. После проецирования этих результатов мы смогли представить 70-80 % устройств всего несколькими сотнями моделей. Тест-инженеры используют математический термин «классы эквивалентности» для описания подобной работы.
  2. Чипсет
    У нас бы все еще оставалась значительная доля неохваченных устройств, если бы мы остановились только на данных о популярности. Поэтому мы стали смотреть глубже — на используемые микросхемы. Как и люди, устройства, такие непохожие снаружи, довольно схожи внутри. Если бы мы могли обеспечить работу всех чипсетов USB, вероятность того, что устройства на их основе тоже будут работать, была бы велика. Производителей чипсетов, используемых в USB-устройствах, относительно немного, поэтому мы решили представить их USB-схемы с помощью макетных плат.
  3. Высокопрофильные и сложные устройства
    Не так часто пользователи обращаются в службу поддержки из-за USB-устройства. Если же это происходит, мы хотим убедиться, что Windows будет работать и с таким устройством.

После 10 лет опыта работы с USB, изучения десятка телеметрических источников и тонн исследовательских материалов, а также многих мозговых штурмов мы смогли сократить число USB-устройств для проверки совместимости приблизительно до 1 000 уникальных моделей, которые мы регулярно проверяем в лабораториях Windows. Мы обеспечили правильное распознавание устройств при подключении к ПК, корректное отключение и возобновление работы для экономии энергии и добились того, что они могут работать в различных стрессовых ситуациях. Наши телеметрические данные показывают, что более 90 % устройств зависят от 16 драйверов классов в Windows, но для более сложно настроенных устройств мы убедились, что их драйвера автоматически загружаются из Центра обновления Windows, если это возможно (для этого требуется сотрудничество производителя). Так как USB 3.0 обеспечивает полную обратную совместимость, старые драйверы будут работать без каких-либо изменений.

Мы также вложили много усилий в создание средства Microsoft USB Test Tool (MUTT) для моделирования полного спектра поведения различных устройств, которое мы наблюдали за прошедшие годы. Мы разработали MUTT с нуля у себя в офисе. Наши инженеры по тестированию ПО создали схемы с помощью модных дизайнерских инструментов (MS Paint…). Серьезно! Затем они разработали микропрограммы и сформировали новый тестовый контент для внутреннего использования. Так родилось средство MUTT — представьте его как 1 000 устройств на одной USB-флэшке. Потом мы поделились MUTT с нашими партнерами-производителями, и они использовали его для поиска и устранения проблем в своих устройствах перед их выпуском.

Рис. 4. Создатель MUTT Дэвид Харгроув с устройством MUTT
Создатель MUTT Дэвид Харгроув с устройством MUTT

Демонстрационное видео

Возможно, самый важный аспект USB 3.0 — то, что пользователи ждут от USB: «Это же просто USB3, поэтому все будет работать, так?» Каждое USB-устройство с малой, полной, высокой скоростью и сверхскоростное устройство должно работать в Windows 8. Это было нашей основной целью, как и создание самого надежного и стабильного стека ПО для USB.

Посмотрим на USB 3.0 в действии — скопируем значительные объемы данных и сравним время выполнения с USB 2.0.

Это HTML5-видео не поддерживается в вашем браузере.

Если вы не видите видео или не можете его воспроизвести, загрузите его по адресу: MP4, высокое качество | MP4, низкое качество

--Деннис