Как определить какой usb 2.0 3.0. Тестируем флэшки: как узнать реальные скорость и объем

И нескольких других устройств, которые мы будем к нему подключать, параллельно замеряя скорость их работы.

Проверим, какова же реальная скорость чтения и записи для нового интерфейса, заодно и опробуем приобретенный контроллер в "боевых" условиях:)

Для начала, будем тестировать мой новый USB 3.0 флеш-накопитель объемом 8 гигабайт. Вот он:

Как видите, на упаковке написано «super speed» и ниже приведены конкретные значения этой «супер скорости»: read 100 MB/s (чтение - 100 мегабайт в секунду) и write 20 MB/s (запись - 20 мегабайт в секунду). По ходу тестирования мы обязательно проверим это утверждение!

Также в нашем тесте будет принимать участие еще один usb-накопитель: внешний жесткий диск с интерфейсом USB 3.0 от компании «Seagate».

Но давайте по порядку! Для начала, распакуем нашу флешку и положим ее рядом с ее "сестрой" (тоже на 8 гигабайт) стандарта USB 2.0 Вот что у нас получилось:

Как мы можем заметить, флеш-накопитель стандарта usb 3.0 заметно больше. Чем это вызвано?

Давайте рассмотрим этот момент подробнее. Как выглядит типичный usb-накопитель старого образца в разобранном виде? А выглядит он следующим образом:


Здесь у нас: печатная плата с одной микросхемой (чипом флеш-памяти) и небольшой управляющий всем "хозяйством" контроллер + сам разъем. Практически ничего интересного в корпусе больше нет.

Теперь, давайте посмотрим на флешку такого же объема (8 гигабайт), но нового (высокоскоростного) стандарта:

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

Не лишним здесь будет отметить, что скоростные флешки на 16 гигабайт - еще больше по размерам! Думаю, теперь Вы, уважаемые читатели, понимаете почему?

Подобная "скоростаня" флешка работает как рэйд-массив нулевого уровня (Raid 0), когда несколько объединяются в один виртуальный кластер, где информация распределяется сразу по всем входящим в массив дискам в виде небольших блоков (страйпов). За счет этого достигается повышенная скорость работы всего кластера. Скорость возрастает пропорционально количеству дисков, задействованных в подобной агрегации.

Примечание : в описанной выше конструкции быстрота достигается за счет принесения в жертву надежности. Так как, при выходе из строя хотя бы одного из дисков, разрушается весь массив. Повторюсь, он рассчитан не на избыточность хранения данных (надежность), а именно на скорость их обработки.

Теперь мы можем наглядно убедиться, что повышенная скорость работы новых usb 3 флеш-накопителей достигается, во многом, благодаря увеличению количества чипов флеш-памяти. Как мы помним, заявленная скорость работы интерфейса usb 3.0 - это 5 Гбис/с (Гигабит в секунду) - около 600 МБайт/c (мегабайт в секунду). НО! это именно скорость интерфейса устройства, которая не имеет ничего общего со скоростью работы самого медленного звена в "начинке" флеш-накопителя (контроллера, шины данных и самих чипов памяти).

Здесь ситуация похожа на ту, что мы разбирали в статье, посвященной . Когда заявленная на коробке скорость работы разительно отличается от той, что есть на самом деле.

Примечание : летом 2013-го года вышла новая версия стандарта - USB 3.1, которая позволяет достигать скоростей передачи в 10 Гбит/c (гигабит в секунду). Напоминаю, что - это только по интерфейсу, т.е. реальная скорость конечного устройства - намного ниже.

Итак, после установки в компьютер нашего , заходим в диспетчер устройство и видим следующее:


Закономерно, что для начала работы с новым устройством системе нужен его драйвер. Что ж, никто не обещал что все будет легко:) Идем на сайт производителя платы и скачиваем драйвер под нашу операционную систему (Windows 7 32 бита). Устанавливаем его. Диспетчер устройств "говорит", что все прошло успешно!



После этого, сразу захотелось ответить себе на вопрос относительно того, что для работы на максимальной скорости новым устройствам USB 3 нужен специальный удлинитель. О нем мы говорили в первой части данной статьи.

Конечно, можно подсоединить накопитель непосредственно к плате и не "заморачиваться", но мы должны проверить все тщательно! Поэтому присоединяем нашу скоростную флешку к контроллеру через кабель-удлинитель устаревшего стандарта 2.0 и сразу же внизу экрана видим вот такое всплывающее окно:

Как говорится, что и требовалось доказать! Если хотите с новыми скоростными устройствами использовать удлинитель - покупайте специальный кабель (стоит в районе 6-8-ми долларов).

Теперь, перейдем непосредственно к тестированию. Как мы его проводили? Я записал на все носители один и тот же объем данных (около трех гигабайт). Причем данные представляли собой абсолютно разнородный набор цифровой информации: музыка, видеоклипы, один большой ISO файл, много небольших файлов и документов, дистрибутивы различных программ и утилит.

Короче говоря, я пытался представить типовой набор данных, которые может хранить на устройстве среднестатистический пользователь. Ведь все приводимые ниже замеры скорости записи и чтения интересуют нас, прежде всего, с практической точки зрения (в реальной, каждодневной ситуации), а не в виде синтетических выкладок?

Тестирование нескольких USB 3.0 накопителей

Замеры скорости проводились с помощью двух программ: « » и « » можете скачать их и провести свое собственное тестирование. Также замеры проводились с помощью встроенного в Windows 7 инструмента.

На фото ниже представлен скриншот с результатом чтения (копирования) заявленного объема данных (три гигабайта) со "старого" флеш-накопителя стандарта 2.0



Конечное время, за которое данные были полностью скопированы на жесткий диск моего компьютера составило порядка четырех минут. Также нас будет интересовать поле "скорость", показанное на фото выше. Как видите, среднее ее значение - 13,2 МБ (мегабайта) в секунду.

Следующий скриншот - то же самое, но для показателя "запись" (я полностью отформатировал флешку) и обратно начал записывать на нее скопированные перед этим на диск данные.



Запись длилась около четырнадцати минут со средней скоростью, указанной на фото.

Теперь давайте сделаем вот что: попробуем измерить время и скорость перемещения тех же самых данных на новом флеш-накопителе стандарта 3.0, подключив его, пока что, к тому же медленному порту устаревшего стандарта.

Вот, что у нас получилось для операции чтения (копирования) с накопителя на диск.



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

Скриншот ниже показывает нам фотографию скорости и времени записи набора разнородных данных объемом три гигабайта для скоростной флешки:



Три минуты (против четырнадцати) для старого накопителя. Почти в пять раз быстрее!

А теперь - внимание! Затаив дыхание, подключаем скоростной накопитель к высокоскоростному же USB 3 порту и закономерно ожидаем существенного прироста показателей.

Сначала, как всегда, - операция копирования наших данных.



Одна минута на скоростном порту (против двух на медленном). Честно говоря, я ожидал лучшего результата.

Но окончательно расстроил меня второй тест (на запись), где цифры были практически такими же, как и в случае с подключением скоростного флеш-накопителя к "медленному" порту USB 2.0.

Давайте, пока просто запомним этот эмпирический результат и вернемся к его анализу немного позже: после завершения всех наших тестов.

Давайте сейчас запустим несколько синтетических тестов. И начнем мы с «Crystal Disk Mark » (ссылка на скачивание выше) и измерим скорость USB-накопителя 3.0, подключенного к медленному порту стандарта 2.0.


На скриншоте выше мы видим, что перед тем, как программа выдала результат, тест "прогонялся" пять раз с файлом размером в 100 мегабайт. Почему программа показала три разных результата? Делов том, что первая строка показывает нам непрерывные и последовательные (sequence) операции чтения (read) и записи (write) для файла указанного размера.

Строка 512K показывает скорость записи и чтения для файлов размером 512 килобайт, а последнее (третье поле) измеряет скорость для очень маленьких файлов размером до 4-х килобайт. Чем меньше файлы и большее их общее количество, тем больше нужно времени для операций над ними. Это - нормально.

А вот - замеры для того той же USB 3.0 флешки, но подключенной к скоростному порту 3.0.


Помните, самый первый скриншот в данной статье и заявленные на упаковке скорости работы: (100 и 20 мегабайт/с на чтение и запись)? Как видим, - очень близко к истине!

Сейчас самое время вспомнить наши результаты реального копирования данных, где скоростное устройство, подключенное к медленному (2.0) и быстрому (3.0) портам для операций записи показывало практически одни и те же результаты.

В тесте, проведенном выше, видим ту же самую ситуацию! Операция чтения (Read) - резкий рывок вперед, а скорость записи (Write) остается практически неизменной.

Давайте привлечем на подмогу еще одну программу «AS SSD Benchmark » (ссылка на скачивание - выше) и посмотрим, что покажет она?

О чем "говорит" нам скриншот ниже? Мы выбрали из списка накопителей наше устройство (8-ми гигабайтный usb 2.0 флеш-накопитель Silicon Power) и запустили для него последовательный (sequence) тест для операций чтения и записи.



Видим, что замер скорости составил: для чтения 16.56 мегабайт/с и для записи - 4.66 мегабайта в секунду. Если помните по первым скриншотам нашего тестирования, - вполне на уровне тех результатов, что мы видели при реальном копировании и чтении данных с накопителя (там было 13.2 для чтения и 3.7 - на запись).

Теперь, - проведем замер для нашего скоростного накопителя, подключенного к тому же "медленному" порту 2.0.



Как видим: 33 мегабайта/с на чтение и 19.48 мегабайт/с на запись (против 26.5 и 16.8 в реальном тесте при перемещении файлов объемом 3 гигабайта). Весьма похожие значения, а значит - близкие к достоверности результаты.

Обратите внимание на поле "Acc. time " (Access time - время доступа) на скриншоте выше. Оно указывает на задержку между командой на передачу данных и, собственно, временем начала их копирования. Это - именно та причина (среди ряда других), которые не позволяют высокоскоростному usb 3 устройству разогнаться до тех скоростей, которых ждут от него конечные потребители, т.е. - мы с Вами.

Сейчас самое время подключить наш новый накопитель к порту 3.0 и зафиксировать результат:



Как и ожидалось, скорость операции записи осталась практически неизменной, а вот результат чтения с устройства - порадовал (91.63 мегабайта в секунду). Также уменьшилось время задержки (Access Time), что говорит о лучшей оптимизации работы контроллера при обращении к ячейкам флеш памяти.

Теперь, приведем несколько скриншотов, которые продемонстрируют нам работу нашего USB 3.0 внешнего накопителя Seagate на 500 гигабайт, о котором мы упоминали в начале статьи. Вот его фото:

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



Три гагабайта скопировались на внешний диск с компьютера за две минуты и тридцать секунд со средней скоростью, показанной на фото выше.

Теперь проведем тот же тест (на запись), но подключив винчестер к "родному" скоростному 3.0 порту ПК.



Время записи, в данном случае, составило одну минуту и пятнадцать секунд (вдвое меньше), при вдвое большей скорости.

Теперь попробуем провести те же два теста с помощью программы «AS SSD Benchmark». Подключим накопитель к порту 2.0 и запустим программу:



Теперь - к скоростному usb 3.0 разъему:



Немного неожиданный результат! :) Но я проверял несколько раз - картина не менялась. Это, видимо, подтверждает мысль что к чисто синтетическим тестам надо относиться с известной долей осторожности.

Теперь, как и обещал в начале статьи, выскажу свое субъективное мнение по поводу проведенного тестирования и полученных с его помощью результатов.

У меня получилось так: чтобы ощутить существенный прирост скорости от использования USB 3.0 флеш-накопителя даже на обязательно подключать его к "родному" скоростному порту синего цвета. Тем более, если его попросту нет на Вашем компьютере! Само по себе наличие в накопителе нескольких, параллельно работающих чипов, уже дает существенный прирост скорости.

Дополнительно подключение к порту 3.0, к сожалению, не дает ожидаемого прироста скорости (в первую очередь, для операций записи), видимо, в силу наличия других "узких мест" конструкции (шина данных, вносимые контроллером задержки перед началом передачи и т.д.).

Посчитаем по деньгам: скоростная флешка на 8 гигабайт обойдется примерно в 20 долларов (против пяти за обычную старого 2.0 стандарта). Тесты мы приводили выше. Визуально оценить прирост скорости можно примерно в 4-5 раз. Дальше - выбор за Вами. Стоит ли доплатить "лишние" 15 долларов за то, чтобы получить более комфортную работу с большими объемами данных? Лично для себя я решил: "Стоит!" :)

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

Конечно, не стоит напрасно обольщаться по поводу всех этих 5Gbit/s, 10Gbit/s. Как мы уже говорили, это - потенциально возможная скорость интерфейса, имеющая мало общего со скоростью реальной. Получить же неплохой прирост скорости от использования новой технологии мы можем уже сейчас. Чего, собственно, Вам и желаю, уважаемые читатели, и до встречи в следующих статьях на страницах нашего сайта!

Наверняка, каждый пользователь компьютера слышал о таких понятиях, как USB порты версии 2.0 и 3.0. Но не все точно понимают что это. В этой статье я расскажу вам про USB 2.0 и 3.0: отличия, совместимость интерфейсов, а также о том, что это вообще такое.

Как понятно логически, версия USB 3.0 новее, чем 2.0, а, соответственно, она лучше. Давайте разберёмся, чем она лучше, и начнём с вопроса о том, откуда всё это пошло.

USB и его версии

USB расшифровывается как universal serial bus, и переводится на русский как универсальная последовательная шина. Универсальная – значит к ней можно подключить всё, что угодно, любое устройство. USB бывают разных версий, главное отличие которых в скорости работы.

К свойству универсальности производители шли долго. Как помнят многие, сначала у компьютера было множество разных портов, некоторые из которых остались и по сей день, например, громоздкие COM с толстыми кабелями, PS/2 с хрупкими контактами и другие. Теперь же принтеры, клавиатуры, мышки и другое оборудование можно подключать через USB.

Первые USB начали появляться с 1994 года. В 1996 году вышла версия 1.0, которая работала на мизерной скорости 1,5 Мбит/с. Затем в 2000-м вышла версия 2.0 со скорость работы 480 Мбит/с. Это вполне приемлемая скорость, которая позволила подключать разные оборудования к порту. В 2008 году вышла USB 3.0, работающая теоретически на скорости 5 Гбит/с.

Разработку USB 3.0 финансировали многие мировые бренды компьютерной сферы, которые были заинтересованы во введении стандартизации на разъёмы и улучшении производительности оборудования.

USB 2.0 и 3.0: отличия

Наконец, рассмотрим USB 2.0 и 3.0: отличия этих портов друг от друга и сравним их. Вот признаки, по которым они различаются:

  • Визуально отличить USB 2.0 от 3.0 очень легко – разъёмы 3.0 окрашены в синий цвет.
  • Второе отличие, которое легко ощущается на практике – это скорость передачи. У версии 3.0 она значительно выше. Она может уступать заявленной теоретической скорости (5 Гбит/с), но всё равно остаётся выше версии 2.0.
  • Отличие USB 2.0 от 3.0 есть в силе тока. В ранней версии она была 500 мА, в новой достигает уже 900 мА. Таким образом, новыми USB можно питать большее количество мощных устройств.
  • В старой версии USB было 4 провода, в новой стало ещё на 4 больше. Таким образом, ещё одно отличие USB0 от 3.0 – второй имеет более толстый кабель. Это также ограничило максимальную длину кабеля 3.0 до 5 метров и сделало его более дорогим.
  • Windows XP не поддерживает USB 3.0, даже если физически оборудование компьютера на это способно, работать оно будет как 2.0. Только более старшие версии Windows способны работать с 3.0 полноценно.

Надежный и качественный СММ сайт https://doctorsmm.com / поможет Вам выгодно и недорого купить продвижение более чем в 9 социальных сетях. Здесь Вы найдете широкий спектр услуг с большими скидками и гарантиями на выполнение. Так, например, Вы можете приобрести лайки или подписчиков в Инстаграм и другие ресурсы на самых популярных социальных площадках интернета.

Совместимость USB 2.0 и 3.0

Если подключить устройство USB 2.0 в разъём 3.0, то работать оно будет на уровне 2.0. Если подключить устройство USB 3.0 к разъёму 2.0, то работать оно тоже будет на уровне 2.0. Таким образом, при совместимости этих интерфейсов, меньшая версия задаёт качество работы.

Устройства способны работать на других версиях USB, но они могут стать менее производительными.

Итак, подытожу. USB 2.0 и 3.0: отличия в первую очередь в качестве работы – более новая версия лучше, хоть и немного дороже. Современное оборудование выпускается с интерфейсом 3.0, поэтому приобретать компьютер целесообразно тоже с такой версией. Устройства разных версий совместимы друг с другом и работают приемлемо, хоть и производительность их падает.

Если USB-устройство и платформа поддерживают передачу данных в режиме USB3.0 со скоростью 5 Гб/сек., то, казалось бы, ничто не мешает убедиться в этом воочию. Существует немало утилит для этого, да и наши исследования способствовали поиску ответа на это вопрос. Кроме того, если накопитель демонстрирует скорость, существенно пре­вы­ша­ю­щую 50-60 МБ/сек., то можно заявить - это режим Super Speed , поскольку в режиме USB 2.0 такая скорость физически недостижима, а «промежуточных» вариантов не существует. Но не все так просто...

Почему все так сложно

В силу разных причин, полноценная поддержка новых режимов универсальной последовательной шины в утилитах системной информации, несколько задерживается. В результате мы часто видим только дифференцирование между USB1 и USB2 и распознавание USB3-подключения как USB2. Кроме того, информация, получаемая из дескрипторов устройства, декларирует его потенциальные возможности, а не текущий скоростной режим, выбираемый сугубо аппаратно. Согласно спецификации USB, содержимое дескрипторов должно зависеть от установленной скорости, но разработчики устройств не всегда соблюдают это правило. В итоге, какой бы результат (USB2 или USB3) мы не увидели, есть основания для сомнений.

С учетом постоянного совершенствования технологий опережающего чтения и отложенной записи, делать выводы, ориентируясь исключительно на скорости копирования файлов на жестком диске будет методологически неверно, хотя при больших размерах файлов (единицы гигабайт), такой критерий имеет право на жизнь. Но есть более радикальный, а следовательно и более достоверный путь – получить информацию непосредственно из регистров контроллера USB 3.0 xHCI, написав для этого небольшое UEFI-приложение на ассемблере.

Условия эксперимента и системные объекты

Платформа – ноутбук ASUS N750JK , а подключаемое USB 3.0 устройство – жесткий диск Transcend StoreJet 35T3 . Целевым объектом будут регистровые поля контроллера USB3.0 xHCI, индицирующие тип соединения. Заметим, что в зависимости от скоростного режима (USB2 или USB3), контроллер «видит» устройство через одну из двух групп регистров.

Рис .1 . Биты регистра Port N Status and Control USB2 индицируют тип соединения : Low-Speed, Full-Speed или High-Speed


Рис .2 . Биты регистра Port N Status and Control USB3 индицируют тип соединения : Super-Speed

Утилита CheckUSB

Исходные тексты подготовлены в формате Flat Assembler 1.71.17. Утилита CheckUSB предназначена для запуска в среде x64 UEFI. Текущая версия поддерживает только системную логику Intel 8 Series, режим USB 3.0 должен быть включен в CMOS Setup. Такая привязка связана во-первых с поддержкой широкого набора регистров, специфичных для данной системной логики и не предусмотренных спецификацией контроллера xHCI, а во-вторых, в целях упрощения, вычисление адресных смещений и размерностей ряда регистровых полей, а также задание количества портов, реализовано для частного случая, а именно данной системной логики. Подробная информация содержится в документе:

  • Intel 8 Series / C220 Series Chipset Family Platform Controller Hub (PCH). Datasheet. June 2013

Энтузиастам, желающим расширить функциональность нашего простейшего примера и реализовать поддержку различных наборов системной логики, рекомендуем документ:

  • Extensible Host Controller Interface for Universal Serial Bus (xHCI). Revision 1.1

Кроме того, непосредственный доступ к конфигурационному пространству PCI и memory-mapped I/O рекомендуется заменить на вызовы соответствующих UEFI-протоколов.

Анализируем результаты

Итак, утилита отработала, рапорт сгенерирован.


Рис. 3

Обратим внимание на список подключений к портам контроллера USB. Вначале следуют три устройства, входящие в состав ноутбука, а четвертое – это наш искомый внешний жесткий диск Transcend StoreJet 35T3. Режим SuperSpeed включен. Детальный анализ содержимого регистровых полей приведен .

Резюме

Низкоуровневое исследование, выполненное на уровне физического доступа к регистрам контроллера USB3.0 xHCI в среде UEFI firmware, однозначно свидетельствует – режим Super Speed включен. Но исправность оборудования необходимое, но не достаточное условие его корректной работы в сеансе операционной системы. Причиной проблем может быть, например, драйвер контроллера xHCI или сама ОС. Поэтому, логичным продолжением будет проведение подобного эксперимента в сеансе ОС, например Windows. Эта задача посложнее, так как регистры контроллера являются привилегированным системным ресурсом, для доступа к которому требуется написать собственный драйвер. Кроме того, в сеансе операционной системы, с контроллером USB взаимодействует его штатный драйвер, необходимо позаботиться о бесконфликтности.

3.0. Он мигает синим цветом, если вы подключите его к порту USB 3.0. Если это порт 2.0, свет становится белым.

Вчера я включил его, и свет был синим. Теперь я подключил его в том же порту, и свет белый.

Могу ли я каким-то образом обнаружить, что порт USB, который я только что подключил, составляет 2.0 или 3.0? Я хочу знать, есть ли проблема с устройством или портом USB, который я использую.

Изменить: я использую Windows 8.1

Многие производители компьютеров явно не отмечают версии портов USB. Используйте диспетчер устройств, чтобы определить, есть ли на вашем компьютере порты USB 1.1, 2.0 или 3.0:

Open the Device Manager. In the "Device Manager" window, click the + (plus sign) next to Universal Serial Bus controllers. You will see a list of the USB ports installed on your computer. If your USB port name contains "Universal Host", your port is version 1.1. If the port name contains both "Universal Host" and "Enhanced Host", your port is version 2.0. If the port name contains "USB 3.0", your port is version 3.0.

Это документ в базе знаний.

В современной IT-индустрии часто случается так, что заверения производителя устройства относительно его функциональности не соответствуют действительности. От скепсиса по этому поводу перейдем к решению конкретной технической задачи…

Постановка задачи

В нашей тестовой лаборатории оказался USB Flash накопитель Kingston DataTraveler 3.0 . Согласно информации производителя, устройство поддерживает USB 3.0. Проверим, так ли это на самом деле, не разбирая флешку и не нарушая гарантию.

Аппаратный тест

Присмотревшись к разъему, за четырьмя «ближними » контактами, обеспечивающими поддержку USB 2.0, мы, как и ожидалось, обнаружили пять «дальних » контактов, используемых только в режиме USB 3.0 Super Speed . Измеряем сопротивление сигнальных линий USB 3.0 относительно земли, получаем значения, отличные от бесконечности. Вывод: контакты USB 3.0 физически присутствуют и не заканчиваются тупиком. Измерение выполнялось омметром на пределе, используемом для проверки полупроводниковых диодов. Для доступа к «дальним» контактам разъема USB 3.0 можно сконструировать переходник или воспользоваться тонким и длинным щупом, например иглой. Полученный результат является необходимым, но не достаточным условием функционирования устройства в режиме USB 3.0 Super Speed. Может случиться так, что сигнальные цепи заканчиваются терминирующими резисторами, но не подключены к контроллеру. Поэтому переходим к следующему тесту – программному.

Программный тест

Эксперимент выполняем на достаточно новой, еще не исследованной плате Tyan S5533 , построенной на чипсете Denlow .

Рис 1 . Системная плата Tyan S5533 в ITX-формате

Чтобы исключить влияние драйверов, запускаемых в сеансе операционной системы, наш тест будет «экстремально низкоуровневым», запускаться будем под DOS, а результаты контролировать путем просмотра дампа Memory Mapped I/O регистров контроллера USB.

Последовательность действий такова.

1) Воспользовавшись бета-версией утилиты USB.EXE разработки IC Book Labs, определим адрес блока конфигурационных регистров контроллера XHCI, в нашем примере это bus=0, device=14h, function=0. Также определим базовый адрес блока операционных регистров в пространстве Memory Mapped I/O, в нашем примере он равен F7500000h.

Рис 2 . Результаты работы утилиты USB.EXE. Адрес блока конфигурационных регистров XHCI: bus=0, device=14h, function=0. Базовый адрес операционных регистров XHCI равен F7500000h.

2) Как известно, в целях совместимости с программным обеспечением, не поддерживающим контроллер USB 3.0 XHCI, на данной платформе, по умолчанию, порты USB 3.0 обслуживаются контроллером USB 2.0 EHCI. Наша задача – перевести их в режим обслуживания контроллером USB 3.0 XHCI. Воспользуемся документацией Intel 8 Series / С220 Series Chipset Family Platform Controller Hub Datasheet и любой утилитой, позволяющей редактировать содержимое регистров системной логики.

Программируем регистр USB 3.0 Port Routing Mask Register. Записываем по адресу bus=0, device=14h, function=0, register=0DCh байт со значением 0FFh.

Программируем регистр USB 3.0 Port Super Speed Enable Register. Записываем по адресу bus=0, device=14h, function=0, register=0D8h байт со значением 0FFh.

Рис.3 . Регистр USB 3.0 Port Routing Mask Register

Рис.4 . Регистр USB 3.0 Port Super Speed Enable Register

3) Считываем и расшифровываем согласно рис.5 и рис.6 исходное состояние нескольких битовых полей из младших 16-битов 32-битного регистра PORTSCNUSB3 до подключения устройства к исследуемому порту. Регистр находится по смещению 0570h от базового адреса блока операционных регистров контроллера, его адрес F7500000h+0570h=F7500570h

Прочитанное значение = 02A0h = 0000.00 10.1010.0000 b
D0=Current Connect Status=0. Устройство не подключено.
D1=Port Enabled/Disabled=0. Порт не используется.
D=Port Speed=0000b. Скорость не определена.

Рис.5 . Регистр USB 3.0 Port Status and Control Register, биты

Рис.6 . Регистр USB 3.0 Port Status and Control Register, биты

4) Подключаем USB 3.0 флэшку, затем повторно считываем регистр и расшифровываем те же битовые поля.

Прочитанное значение = 1203h = 0001.00 10.0000.0011 b
D0=Current Connect Status=1. Устройство подключено.
D1=Port Enabled/Disabled=1. Порт используется.
D=Port Speed=0100b. Скорость равна 5.0 Gbit/S, режим USB 3.0 Super Speed работает.

5) Для самоконтроля, подключаем USB 2.0 флэшку к тому же порту, затем повторно считываем регистр и расшифровываем те же битовые поля. Прочитанное значение = 02A0h, что соответствует отсутствию подключения. Так и должно быть, регистр PORTSCNUSB3 «не видит» USB 2.0 устройство, так как оно обслуживается другой подсистемой и статус подключения доступен посредством другого регистра – PORTSCNUSB2, рассмотрение которого выходит за рамки наших исследований.

Резюме

Испытуемая флэшка действительно поддерживает режим USB 3.0 .

Если формализовать и запрограммировать описанные действия в виде DOS-программы или UEFI-приложения, получится небольшая утилита, позволяющая быстро определить, в каком скоростном режиме работает USB устройство. Для упрощения нашего примера, мы реализовали его для частного случая – подсистемы USB платы Tyan S5533 и использования первого порта, поэтому адрес регистра PORTSCNUSB3 в нашем примере – константа. В общем случае, для того, чтобы программа была работоспособна на всех платформах, адрес регистра PORTSCNUSB3 должен вычисляться на основании содержимого полей XHCI Capabilities, в соответствии со спецификацией USB 3.0 XHCI. С другой стороны, достигнуть универсальности можно значительно проще и изящнее, используя UEFI-протоколы вместо прямого взаимодействия с регистрами контроллера.

Источники информации

UPD

В качестве «подопытного кролика» использовался девайс Kingston DataTraveler 100 G3, объемом 16 GB:

UPD-II

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

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

Конечно, содержимое дескрипторов устройства - это более достоверный источник информации, чем надпись на флешке и клятвы продавца. Но по причинам, указанным выше, достоверность отлична от 100 процентов.

Именно стремление довести достоверность до 100% побудила нас на экстремально низкоуровневые исследования.

2. Другой метод – проследить в диспетчере устройств, какой контроллер является родительским для флешки (USB 2.0 EHCI или USB 3.0 XHCI), также неэффективен, так как, согласно спецификации, контроллер USB 3.0 XHCI может поддерживать все виды устройств: от Low-Speed до Super Speed. Поэтому, из того, что для флешки родительским контроллером является xHCI не следует, что устройство работает в режиме Super Speed.