С точки зрения производительности — вполне. Если судить с точки зрения функциональности, то информации недостаточно.
Предположительно, у Вас в эксплуатации достаточно новая, но не самая современная платформа, оснащенная контроллерами USB 1.1 и USB 2.0. High-Speed устройства скоммутированы на EHCI, а Full-Speed — на UHCI/OHCI (скорее всего, UHCI, так как вероятнее всего — это Intel). Для недоразумений места почти не осталось.
И тем не менее, какими бы могли быть сюрпризы в данной архитектуре USB?
Сценарий 1. Устройство с характеристикой 12 Mbit/s может оказаться два-нольным, но подключенным к USB 1.1 UHCI/OHCI по причине деградации контактов разъема или в силу плохого качества интерфейсного кабеля (косичек подключения разъемов на лицевой панели десктопа). Это легко определяется любым софтом, типа USB Info, UTLite etc., так как USB 2.0 устройство «отдает» два-нольные дескрипторы.
Сценарий 2. У Вас платформа типа Intel P55 или новее, но без встроенного в чипсет USB 3.0, реализованная не с помощью контроллеров-компаньонов 2.0+1.1, а с использованием архитектуры Rate Matching Hub. По сути, ситуация аналогична выше упомянутой, с той лишь разницей, что сложнее понять, почему устройство работает по Full-Speed. Но причины возможного даунгрейда прежние.
С появлением USB 3.0 количество вариантов увеличивается. Ничто не мешает китайскому производителю сделать два-нольную флешку, коммутируя ее автономный контроллер на пять ламелей разъема USB 3.0 (заглушив при этом четыре ламели USB 2.0). Девайс при этом будет подключен к xHCI-контроллеру на системной платформе, но не будет обеспечивать Super Speed, передавая данный по High-Speed. Такая ситуация очень cложно отслеживается. Особенно, если не загружена драйверная поддержка USB Flash. В силу того, что при корректной реализации платформы все USB 3.0 устройства до этого момента должны по умолчанию коммутироваться на USB 2.0 контроллер.
Флешка покупалась для того, чтобы проверить ряд возможностей новой и неисследованной платформы Tyan S5533. Подключение ее к EHCI на другой плате показало, что в дескрипторах указаны значения, соответствующие High Speed. Возникла идея, что при подключении к xHCI контроллер флешки должен выдавать другие дескрипторы, соответствующий Super Speed. Как говорится, идея нашлась, а осадочек остался :)
Пришлось рыть фундаментально.
1. Дескрипторы устройств, доступные для просмотра с помощью различных информационных утилит индицируют потенциальные возможности устройства. Скоростной режим, установленный для USB порта при подключении устройства, не всегда соответствует возможностям, декларированным в дескрипторах.
Устройство, декларирующее поддержку USB 3.0, может работать в режиме USB 2.0 из-за заводских недоработок, неисправного кабеля и многих других причин. При этом содержимое дескрипторов может указывать на поддержку режима USB 3.0.
Спецификацией USB рекомендовано, чтобы устройство выдавало разный набор дескрипторов в зависимости от реальной установленной скорости. Но у нас нет гарантии, что эта рекомендация соблюдена разработчиками флешки.
Конечно, содержимое дескрипторов устройства — это более достоверный источник информации, чем надпись на флешке и клятвы продавца. Но по причинам, указанным выше, достоверность отлична от 100 процентов.
Именно стремление довести достоверность до 100% побудила нас на экстремально низкоуровневые исследования.
2. Другой метод – проследить в диспетчере устройств, какой контроллер является родительским для флешки (USB 2.0 EHCI или USB 3.0 XHCI), также неэффективен, так как, согласно спецификации, контроллер USB 3.0 XHCI может поддерживать все виды устройств: от Low-Speed до Super Speed. Поэтому, из того, что для флешки родительским контроллером является xHCI не следует, что устройство работает в режиме Super Speed.
Судя по рейтингу, у используемого девайса показатель 34.7 MB/s. Но вопрос для нас был не в скорости обмена, а в функциональности — в поддержке протоколов.
Спасибо, кстати, за рейтинг. В UPD добавлено изображение тестового устройства.
Очень хотелось бы, чтобы очередной Всеволод Волков написал UEFI Volkov Commander. Того, кто за это возьмется ждут предсказуемые трудности: только FAT32 поддерживается в UEFI, а всё прочее представлено в виде блочных устройств. Работы в этом деле — непочатый край.
Предположительно, у Вас в эксплуатации достаточно новая, но не самая современная платформа, оснащенная контроллерами USB 1.1 и USB 2.0. High-Speed устройства скоммутированы на EHCI, а Full-Speed — на UHCI/OHCI (скорее всего, UHCI, так как вероятнее всего — это Intel). Для недоразумений места почти не осталось.
И тем не менее, какими бы могли быть сюрпризы в данной архитектуре USB?
Сценарий 1. Устройство с характеристикой 12 Mbit/s может оказаться два-нольным, но подключенным к USB 1.1 UHCI/OHCI по причине деградации контактов разъема или в силу плохого качества интерфейсного кабеля (косичек подключения разъемов на лицевой панели десктопа). Это легко определяется любым софтом, типа USB Info, UTLite etc., так как USB 2.0 устройство «отдает» два-нольные дескрипторы.
Сценарий 2. У Вас платформа типа Intel P55 или новее, но без встроенного в чипсет USB 3.0, реализованная не с помощью контроллеров-компаньонов 2.0+1.1, а с использованием архитектуры Rate Matching Hub. По сути, ситуация аналогична выше упомянутой, с той лишь разницей, что сложнее понять, почему устройство работает по Full-Speed. Но причины возможного даунгрейда прежние.
С появлением USB 3.0 количество вариантов увеличивается. Ничто не мешает китайскому производителю сделать два-нольную флешку, коммутируя ее автономный контроллер на пять ламелей разъема USB 3.0 (заглушив при этом четыре ламели USB 2.0). Девайс при этом будет подключен к xHCI-контроллеру на системной платформе, но не будет обеспечивать Super Speed, передавая данный по High-Speed. Такая ситуация очень cложно отслеживается. Особенно, если не загружена драйверная поддержка USB Flash. В силу того, что при корректной реализации платформы все USB 3.0 устройства до этого момента должны по умолчанию коммутироваться на USB 2.0 контроллер.
Пришлось рыть фундаментально.
Устройство, декларирующее поддержку USB 3.0, может работать в режиме USB 2.0 из-за заводских недоработок, неисправного кабеля и многих других причин. При этом содержимое дескрипторов может указывать на поддержку режима USB 3.0.
Спецификацией USB рекомендовано, чтобы устройство выдавало разный набор дескрипторов в зависимости от реальной установленной скорости. Но у нас нет гарантии, что эта рекомендация соблюдена разработчиками флешки.
Конечно, содержимое дескрипторов устройства — это более достоверный источник информации, чем надпись на флешке и клятвы продавца. Но по причинам, указанным выше, достоверность отлична от 100 процентов.
Именно стремление довести достоверность до 100% побудила нас на экстремально низкоуровневые исследования.
2. Другой метод – проследить в диспетчере устройств, какой контроллер является родительским для флешки (USB 2.0 EHCI или USB 3.0 XHCI), также неэффективен, так как, согласно спецификации, контроллер USB 3.0 XHCI может поддерживать все виды устройств: от Low-Speed до Super Speed. Поэтому, из того, что для флешки родительским контроллером является xHCI не следует, что устройство работает в режиме Super Speed.
Спасибо, кстати, за рейтинг. В UPD добавлено изображение тестового устройства.