Расширяемый интерфейс хост-контроллера
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Апрель 2014 г. ) |
Расширяемый интерфейс хост-контроллера ( xHCI компьютера ) — это техническая спецификация, которая обеспечивает подробную основу для функционирования хост-контроллера для универсальной последовательной шины (USB). Известная также как спецификация хост-контроллера USB 3.0 , xHCI обеспечивает обратную совместимость и поддерживает широкий спектр USB-устройств, от старых USB 1.x до более поздних версий USB 3.x.
В отличие от своих предшественников, открытого интерфейса хост-контроллера (OHCI) и универсального интерфейса хост-контроллера (UHCI), xHCI предлагает несколько технологических улучшений. В частности, он предназначен для поддержки нескольких скоростей передачи данных (низкой, полной, высокой и сверхскоростной) в рамках единого унифицированного стандарта. Это делает его более эффективным в управлении вычислительными и энергетическими ресурсами, что особенно полезно для мобильных устройств с ограниченными возможностями энергопотребления, таких как планшеты и смартфоны. Кроме того, xHCI упрощает архитектуру, необходимую для поддержки как низкоскоростных, так и высокоскоростных устройств, что упрощает разработку драйверов и системного программного обеспечения.
xHCI представляет собой значительное улучшение по сравнению со своими предшественниками, открытым интерфейсом хост-контроллера (OHCI) и универсальным интерфейсом хост-контроллера (UHCI), по нескольким ключевым направлениям:
- Поддержка многоскоростной передачи данных . В отличие от OHCI и UHCI, которые были ограничены определенными скоростями USB, xHCI способен управлять несколькими скоростями передачи данных — низкой, полной, высокой и сверхскоростной — в соответствии с единым стандартом. Это устраняет необходимость в нескольких хост-контроллерах или сложных механизмах переключения при работе с различными типами USB-устройств, тем самым повышая эффективность.
- Управление питанием : xHCI включает в себя расширенные функции управления питанием, которые позволяют выборочно приостанавливать работу USB-устройств и более точно распределять мощность. Это особенно полезно для мобильных устройств с ограниченным временем автономной работы, таких как планшеты и смартфоны, поскольку помогает максимально эффективно использовать энергию и продлить срок службы батареи.
- Оптимизированная архитектура : архитектура xHCI спроектирована как более простая и понятная, что снижает сложность разработки драйверов. В старых архитектурах, таких как OHCI и UHCI, поддержка сочетания низкоскоростных и высокоскоростных устройств требовала сложных алгоритмов и нескольких трансляторов транзакций. xHCI упрощает эту задачу, интегрируя эти функции в сам хост-контроллер, тем самым облегчая нагрузку на разработчиков системного программного обеспечения и драйверов.
Улучшая поддержку нескольких скоростей, оптимизируя управление питанием и упрощая базовую архитектуру, xHCI служит более эффективным и унифицированным стандартом для хост-контроллеров USB.
Архитектурные цели
[ редактировать ]xHCI представляет собой радикальный отход от предыдущих поколений архитектур интерфейса хост-контроллера USB (т.е. открытого интерфейса хост-контроллера (OHCI), универсального интерфейса хост-контроллера (UHCI) и расширенного интерфейса хост-контроллера (EHCI)) по многим параметрам. Ниже приведены ключевые цели архитектуры xHCI:
- Эффективная работа — энергопотребление в режиме ожидания и производительность выше, чем у устаревших архитектур хост-контроллера USB.
- Модель программирования на уровне устройства, полностью соответствующая существующей модели программного обеспечения USB.
- Отделите интерфейс хост-контроллера, представленный программному обеспечению, от базовых протоколов USB.
- Минимизируйте доступ к памяти хоста, полностью исключив его, когда USB-устройства простаивают.
- Устраните запись в регистр и сведите к минимуму чтение регистров для нормальной передачи данных.
- Устранить модель «Сопутствующий контроллер»
- Включите аппаратные режимы «отказоустойчивости» в ситуациях с ограниченными системными ресурсами, чтобы устройства оставались доступными, но, возможно, с менее оптимальной мощностью/производительностью.
- Обеспечить возможность для разных рынков различать возможности оборудования, например, выбирать мощность, производительность и стоимость хост-контроллера для конкретных рынков.
- Определите расширяемую архитектуру, которая обеспечивает легкий путь для новых спецификаций и технологий USB, таких как интерфейсы с более высокой пропускной способностью, оптическая среда передачи и т. д., без необходимости определения еще одного интерфейса хост-контроллера USB.
Архитектурные детали
[ редактировать ]Поддержка всех скоростей
[ редактировать ]Контроллеры OHCI и UHCI поддерживают только устройства USB 1 (1,5 Мбит/с и 12 Мбит/с), а EHCI поддерживает только устройства USB 2 (480 Мбит/с).
Архитектура xHCI была разработана для поддержки всех скоростей USB, включая SuperSpeed (5 Гбит/с) и будущих скоростей, в рамках единого стека драйверов.
Энергоэффективность
[ редактировать ]Когда USB был первоначально разработан в 1995 году, он был ориентирован на настольные платформы, чтобы остановить распространение разъемов, которые появлялись на ПК, например PS/2 , последовательный порт , параллельный порт , игровой порт и т. д., а энергопотребление хоста не было проблемой. важное соображение в то время. С тех пор мобильные платформы стали предпочтительными платформами, а их батареи сделали энергопотребление ключевым фактором. Архитектуры устаревших хост-контроллеров USB (OHCI, UHCI и EHCI) были очень похожи в том смысле, что «расписание» транзакций, которые должны были выполняться на USB, строилось программным обеспечением в памяти хоста, а оборудование хост-контроллера постоянно считывало данные. расписания, позволяющие определить, какие транзакции необходимо выполнить на USB и когда, даже если данные не перемещались. Кроме того, в случае чтения с устройства устройство опрашивалось в каждом интервале расписания, даже если данных для чтения не было.
- xHCI исключает расписание транзакций USB на основе памяти хоста, обеспечивая нулевую активность памяти хоста при отсутствии перемещения данных USB.
- xHCI уменьшает необходимость периодического опроса устройств, позволяя устройству USB 3.0 или более поздней версии уведомлять хост-контроллер, когда у него есть данные, доступные для чтения, и перемещает управление опросом устройств USB 2.0 и 1.1, которые используют транзакции прерываний, с управляемого ЦП устройства. Драйвер USB к хост-контроллеру USB. Хост-контроллеры EHCI, OHCI и UHCI будут автоматически обрабатывать опрос ЦП, если нет необходимости вносить изменения и если ни у одного устройства нет прерываний для отправки, но все они полагаются на ЦП для настройки расписания для контроллеров. [1] [2] [3] Если какое-либо USB-устройство, использующее транзакции прерываний, имеет данные для отправки, то хост-контроллер xHCI отправит прерывание, чтобы уведомить ЦП о том, что существует транзакция прерывания USB, которую необходимо обработать. Поскольку процессору больше не приходится управлять опросом шины USB, он может проводить больше времени в состояниях с низким энергопотреблением.
- xHCI не требует, чтобы реализации обеспечивали поддержку всех расширенных функций управления питанием USB 2 и 3, включая USB 2 LPM, состояния USB 3 U1 и U2, HERD, LTM, Function Wake и т. д.; но эти функции необходимы для реализации всех преимуществ xHCI.
Поддержка виртуализации
[ редактировать ]Устаревшие архитектуры хост-контроллера USB демонстрируют некоторые серьезные недостатки при применении в виртуализированных средах. Устаревшие интерфейсы хост-контроллера USB определяют относительно простой аппаратный насос данных; где критическое состояние, связанное с общим управлением шиной (распределение полосы пропускания, назначение адреса и т. д.), находится в программном обеспечении драйвера хост-контроллера (HCD). Попытка применить стандартную технику аппаратной виртуализации ввода-вывода — репликацию регистров интерфейса ввода-вывода — к устаревшему интерфейсу хост-контроллера USB проблематична, поскольку критическое состояние, которым необходимо управлять на виртуальных машинах (ВМ), недоступно аппаратному обеспечению. Архитектура xHCI переносит контроль этого критического состояния на аппаратное обеспечение, позволяя управлять USB-ресурсами между виртуальными машинами. Функции виртуализации xHCI также обеспечивают:
- Прямое назначение отдельных USB-устройств (независимо от их расположения в топологии шины) любой виртуальной машине.
- минимизация связи между виртуальными машинами во время выполнения
- поддержка встроенного общего доступа к USB-устройствам
- поддержка PCIe SR-IOV ( виртуализация ввода-вывода с одним корнем )
Упрощенная архитектура драйвера
[ редактировать ]EHCI использует контроллеры OHCI или UHCI в качестве «дополнительных контроллеров», где устройства USB 2 управляются через стек EHCI, а логика порта EHCI позволяет направлять низкоскоростное или полноскоростное USB-устройство к порту «Сопутствующий» контроллер UHCI или OHCI, в котором низкоскоростные или полноскоростные USB-устройства управляются через соответствующий стек UHCI или OHCI. Например, плата хост-контроллера USB 2 PCIe с четырьмя разъемами USB «Standard A» обычно предоставляет системному программному обеспечению один 4-портовый контроллер EHCI и два 2-портовых OHCI-контроллера. Когда высокоскоростное USB-устройство подключено к любому из 4 разъемов, управление устройством осуществляется через один из 4 корневых портов-концентраторов контроллера EHCI. Если к разъемам 1 или 2 подключено низкоскоростное или полноскоростное USB-устройство, оно будет направлено на порты корневого концентратора одного из контроллеров OHCI для управления, а низкоскоростные и полноскоростные USB-устройства будут подключены к разъемам. 3 или 4 будут направлены на порты корневого концентратора другого контроллера OHCI. Зависимость EHCI от отдельных хост-контроллеров для высокоскоростных USB-устройств и группы низкоскоростных и полноскоростных USB-устройств приводит к сложному взаимодействию и зависимостям между драйверами EHCI и OHCI/UHCI.
- Архитектура xHCI устраняет необходимость в сопутствующих контроллерах и их отдельных стеках драйверов.
- Включение функций расписания, управления полосой пропускания и назначения адреса USB-устройства, которые ранее выполнялись драйвером в аппаратное обеспечение xHCI, обеспечивает более простой, компактный программный стек с меньшей задержкой для xHCI.
Поддержка потоков
[ редактировать ]Поддержка потоков была добавлена в спецификацию USB 3.0 SuperSpeed, в первую очередь для обеспечения высокопроизводительных операций хранения данных через USB. Традиционно между конечной точкой USB и буфером в системной памяти существует соотношение 1:1, а хост-контроллер несет полную ответственность за управление всеми передачами данных. Потоки изменили эту парадигму, обеспечив связь «конечная точка с буфером» «один ко многим» и позволив устройству указывать хост-контроллеру, какой буфер перемещать. Передача данных USB, связанная с конечной точкой USB Stream, планируется xHCI так же, как и любая другая массовая конечная точка, однако буфер данных, связанный с передачей, определяется устройством.
- Поддержка xHCI USB Stream позволяет связать с одной конечной точкой буферы размером до 64 КБ.
- Поддержка протокола xHCI Streams позволяет USB-устройству выбирать, какой буфер будет передавать xHCI при планировании конечной точки.
Масштабируемость
[ редактировать ]Архитектура xHCI была разработана с учетом высокой масштабируемости и способна поддерживать от 1 до 255 USB-устройств и от 1 до 255 портов корневого концентратора. Поскольку каждому USB-устройству разрешено определять до 31 конечной точки, xHCI, поддерживающий 255 устройств, должен будет поддерживать в общей сложности 7906 отдельных конечных точек. Классически каждый буфер памяти, связанный с конечной точкой, описывается очередью блоков физической памяти, причем для определения своего состояния очереди требуется указатель заголовка, хвостовой указатель, длина и другие регистры. Существует много способов определить состояние очереди, однако если предположить, что для каждой очереди имеется 32 байта регистрового пространства, то для поддержки 7906 очередей потребуется почти 256 КБ регистрового пространства. Обычно к системе одновременно подключается лишь небольшое количество USB-устройств, и в среднем USB-устройство поддерживает 3–4 конечных точки, из которых одновременно активны только некоторые из них. xHCI поддерживает состояние очереди в системной памяти в виде структур данных контекста конечной точки. Контексты спроектированы таким образом, чтобы их можно было кэшировать с помощью xHCI, а также «выгружать» и выгружать в зависимости от активности конечной точки. Таким образом, поставщик может масштабировать свое внутреннее кэш-память и ресурсы контекста конечной точки xHCI в соответствии с практическими моделями использования, ожидаемыми для их продуктов, а не с архитектурными ограничениями, которые они поддерживают. В идеале внутреннее кэш-пространство выбирается таким образом, чтобы при нормальных условиях использования xHCI не выполнял подкачку контекста. Кроме того, активность конечной точки USB имеет тенденцию быть прерывистой. То есть в любой момент времени большое количество конечных точек может быть готово к перемещению данных, однако только часть из них активно перемещает данные. Например, конечная точка IN прерывания мыши может не передавать данные в течение нескольких часов, если пользователь находится вне своего рабочего места. Алгоритмы, специфичные для поставщика xHCI, могут обнаружить это состояние и сделать эту конечную точку кандидатом на пейджинговый вызов, если другие конечные точки станут заняты.
- Архитектура xHCI допускает большие максимальные значения поддерживаемого количества USB-устройств, портов, векторов прерываний и т. д., однако реализация должна только определить количество, необходимое для удовлетворения ее маркетинговых требований. Например, поставщик может ограничить количество USB-устройств, поддерживаемых им для реализации xHCI планшета, до 16 устройств.
- Поставщик может дополнительно воспользоваться преимуществами архитектурных функций xHCI для масштабирования своих внутренних ресурсов в соответствии со своими целевыми моделями использования. Например, если в ходе тестирования удобства использования поставщик определит, что 95% пользователей планшетов никогда не будут подключать более 4 USB-устройств, а каждое USB-устройство обычно определяет 4 конечных точки (или меньше), то внутреннее кэширование для 16 контекстов конечных точек будет гарантировать, что при нормальных условиях условиях не будет активности системной памяти из-за подкачки контекста конечной точки.
История
[ редактировать ]Спецификация Open Host Controller Interface (OHCI) была определена консорциумом компаний (Compaq, Microsoft и National Semiconductor) как открытая спецификация для поддержки устройств USB 1.0. Универсальный интерфейс хост-контроллера (UHCI) — это спецификация, которую Intel изначально определила как собственный интерфейс для поддержки устройств USB 1.0. Спецификация UHCI в конечном итоге была обнародована, но только после того, как остальная часть отрасли приняла спецификацию OHCI.
Спецификация EHCI была определена Intel для поддержки устройств USB 2.0. Архитектура EHCI была смоделирована по образцу контроллеров UHCI и OHCI, которым требовалось программное обеспечение для построения расписаний транзакций USB в памяти, а также для управления полосой пропускания и распределением адресов. Чтобы исключить излишние усилия отрасли по созданию открытой версии интерфейса хост-контроллера USB 2.0, Intel предоставила отрасли доступ к спецификации EHCI без каких-либо лицензионных сборов.
Модель лицензирования EHCI была продолжена для спецификации Intel xHCI, однако со значительно расширенным вкладом отрасли. Более 100 компаний внесли свой вклад в разработку спецификации xHCI. Форум разработчиков USB (USB-IF) также профинансировал серию тестов на соответствие xHCI, чтобы максимизировать совместимость различных реализаций xHCI.
Контроллеры xHCI 1.0 поставляются с декабря 2009 года. Ядра Linux с 2009 года содержат драйверы xHCI, [4] но для более старых ядер в Интернете доступны драйверы. Драйверы Windows для XP, Vista и Windows 7 доступны у соответствующих поставщиков xHCI. Драйверы xHCI для встраиваемых систем можно приобрести у MCCI , Jungo и других поставщиков программного обеспечения. IP-блоки xHCI также доступны от нескольких поставщиков для настройки в средах SOC. Контроллеры и устройства xHCI 1.1 начали поставляться в 2015 году.
История версий
[ редактировать ]Спецификация xHCI использует файлы ошибок для определения обновлений и пояснений к конкретному выпуску. Изменения в файлах ошибок накапливаются в каждом выпуске. Подробную информацию о конкретных изменениях см. в соответствующих файлах ошибок. Большинство изменений, определенных в файлах ошибок xHCI, представляют собой уточнения, грамматические или орфографические исправления, дополнительные перекрестные ссылки и т. д., которые не влияют на реализацию драйвера. Изменения, которые определены как архитектурные, используют флаг возможности , чтобы определить, поддерживается ли конкретная функция реализацией xHCI, и флаг включения, чтобы включить эту функцию.
Пререлизы
[ редактировать ]Спецификация xHCI развивалась в нескольких версиях до своего официального выпуска в 2010 году:
- xHCI 0.9 : выпущен в августе 2008 года.
- USB 0.95 : выпущен в декабре 2008 года.
- USB 0.96 : выпущен в августе 2009 г.
- USB 0.96a : версия-кандидат 1.0, выпущенная в апреле 2010 г. Первые поставляемые устройства на основе этой версии.
хHCI 1.0
[ редактировать ]- xHCI 1.0 : первый публичный выпуск, 21 мая 2010 г.
Указанные скорости передачи данных USB: 1,5 Мбит/с ( низкоскоростной ), 12 Мбит/с ( полноскоростной ), 480 Мбит/с ( высокоскоростной ) и 5 Гбит/с ( сверхскоростной ). - xHCI 1.0, файлы ошибок 1–4 : выпущено 17 января 2011 г.
Включены отзывы о первоначальном обзоре от более широкой публичной аудитории версии 1.0, пояснения по сохранению и восстановлению и поддержка аппаратного LPM. - xHCI 1.0, файлы ошибок 1–6 : выпущено 18 марта 2011 г.
Разъяснения. - xHCI 1.0, файлы ошибок 1–7 : выпущено 13 июня 2011 г.
Разъяснения.
хHCI 1.1
[ редактировать ]- xHCI 1.1 : выпущен 21 декабря 2013 г. Указанная скорость передачи данных USB 3.1 — 10 Гбит/с ( SuperSpeed+ ). Сюда входят файлы ошибок xHCI 1.0 1–21. Позволяет контроллеру требовать большее количество буферов блокнота (до 1023) в регистре возможностей HCSPARAMS2.
хHCI 1.2
[ редактировать ]- xHCI 1.2 : датировано маем 2019 г. Указанная скорость передачи данных USB 3.2 составляет 10 Гбит/с ( SuperSpeedPlus Gen1x2 ) и 20 Гбит/с ( SuperSpeedPlus Gen2x2 ). [5]
Ссылки
[ редактировать ]- ^ "UHCI11D.DOC" (PDF) . FTP.netbsd.org . Проверено 9 января 2017 г.
- ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 10 августа 2015 г. Проверено 2 июля 2014 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ [1] [ мертвая ссылка ]
- ^ «USB 3.0 в ядре Linux» . hvera.wordpress.com . 10 июня 2009 года . Проверено 2 февраля 2017 г.
- ^ «Intel | Решения для центров обработки данных, Интернет вещей и инновации в ПК» .
Внешние ссылки
[ редактировать ]- Официальный сайт USB (USB Implementers Forum, Inc.)
- Открытый интерфейс хост-контроллера (OHCI) [ постоянная мертвая ссылка ]
- Универсальный интерфейс хост-контроллера Intel (UHCI). Архивирован здесь.
- Улучшенный интерфейс хост-контроллера Intel (EHCI)
- Расширяемый интерфейс хост-контроллера Intel (xHCI)