link140 link141 link142 link143 link144 link145 link146 link147 link148 link149 link150 link151 link152 link153 link154 link155 link156 link157 link158 link159 link160 link161 link162 link163 link164 link165 link166 link167 link168 link169 link170 link171 link172 link173 link174 link175 link176 link177 link178 link179 link180 link181 link182 link183 link184 link185 link186 link187 link188 link189 link190 link191 link192 link193 link194 link195 link196 link197 link198 link199 link200 link201 link202 link203 link204 link205 link206 link207 link208 link209 link210 link211 link212 link213 link214 link215 link216 link217 link218 link219 link220 link221 link222 link223 link224 link225 link226 link227 link228 link229 link230 link231 link232 link233 link234 link235 link236 link237 link238 link239 link240 link241 link242 link243 link244 link245 link246 link247 link248 link249 link250 link251 link252 link253 link254 link255 link256 link257 link258 link259 link260 link261 link262 link263 link264 link265 link266 link267 link268 link269 link270 link271 link272 link273 link274 link275 link276 link277 link278 link279

PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

USB

Совместная работа устройств с разными скоростями на одной шине

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

  • низкая скорость (LS, 1,5 Мбит/с) — до 8 байт, при этом двухстадийная транзакция управления занимает 30% кадра, а транзакция прерывания — 14%;
  • полная скорость (FS, 12 Мбит/с) — до 1023 байт для изохронных обменов (69% кадра) и 64 байт для остальных типов (5% кадра);
  • высокая скорость (HS, 480 Мбит/с) — до 1024 байт для прерываний и изохронных обменов (14% микрокадра), до 512 байт для передач массивов и управления (7–8% микрокадра).

Приемопередатчики (да и соединительные кабели) низкоскоростных устройств не способны работать с сигналами полной скорости, на которой передаются все маркеры SOF и пакеты обмена с полноскоростными устройствами. Поэтому хаб USB не транслирует трафик на свои нисходящие порты, к которым подключены низкоскоростные устройства, до тех пор, пока хост-контроллер не передаст специального маркера — преамбулы низкоскоростного обмена (PRE). Этот маркер игнорируется всеми устройствами, кроме хабов. Пакетом-преамбулой хост-контроллер гарантирует, что следующий пакет будет им передан на низкой скорости. Этим пакетом будет маркер, определяющий тип транзакции с LS-устройством, а в транзакциях вывода — и пакет данных (перед которым требуется своя преамбула). Хаб разрешает транслировать на свой нисходящий порт с LS-устройством только один пакет, следующий за преамбулой; по концу пакета (увидев EOP на низкой скорости) он снова запрещает трансляцию. Чтобы хаб успел переключить режим своего приемопередатчика, между преамбулой и последующим пакетом вводится зазор (4 битовых интервала FS). Для ответа LS-устройства никаких преамбул не нужно — хабы способны прозрачно передавать восходящий трафик на обеих скоростях (LS и FS). Хост-контроллер, естественно, должен принимать пакеты и на FS, и на LS. Очевидно, что низкоскоростные транзакции расходуют время кадра весьма неэффективно, но в USB 1.x с этим мирятся ради возможности подключения дешевых устройств и упрощения хабов, которые являются просто повторителями сигналов. Заметим, что маркеры SOF не транслируются на низкоскоростные порты, так что изохронный обмен, для которого они необходимы, для LS-устройств невозможен и не поддерживается.

Эффективное сосуществование трех скоростей в USB 2.0 реализуется сложнее и обходится дороже. Во-первых, хост-контроллер USB 2.0 содержит фактически два контроллера — EHC, работающий только на высокой скорости, и контроллеркомпаньон (возможно, и не один) USB 1.x (UHC или OHC) для полной и низкой скорости. Корневой хаб может иметь равноправные порты, но в процессе автоконфигурирования, в зависимости от свойств подключенного к нему устройства (или хаба), каждый порт соединяется с соответствующим контроллером. Существуют системные платы с фиксированным распределением портов по контроллерам: часть портов отводится под USB 2.0 и подключена к EHC, часть — под USB 1.1 и подключена к UHC или OHC. Ради повышения пропускной способности применяют и индивидуальные контроллеры (UHC или OHC) для каждого порта USB 1.x.

Во-вторых, хабы USB 2.0 имеют более сложную структуру: кроме повторителя он имеет еще и транслятор транзакций. Когда восходящий и нисходящие порты хаба работают на одинаковой скорости (FS или HS), хаб работает в режиме повторителя. При этом транзакция с устройством, подключенным к хабу, занимает весь канал от хост-контроллера до устройства на все время своего выполнения. Если же к порту хаба USB 2.0, работающего на HS, подключается устройство или хаб 1.1, то применяются расщепленные транзакции. Здесь по части канала от хоста до хаба (его транслятора транзакций) обмен проходит на скорости HS, а между транслятором транзакций и устройством (или хабом) USB 1.x обмен идет уже на его «родной» скорости FS или LS. Эти обмены разнесены во времени, между ними могут вклиниваться любые транзакции на высокой скорости (в том числе и расщепленные). Таким образом, расщепленные транзакции позволяют не расходовать попусту пропускную способность высокоскоростной шины: транзакции с хабом на высокой скорости занимают в 40 (для FS) и даже в 320 (для LS) раз меньше времени шины, чем транзакции с самим целевым устройством. От старых (USB 1.x) устройств и хабов все тонкости расщепленных транзакций скрываются, чем и обеспечивается обратная совместимость.

Порт хаба имеет возможность аппаратно определить, какую скорость поддерживает подключенное устройство. Все HS-устройства по включению работают в режиме FS, и только после взаимного согласования с портом хаба перейдут в режим HS. Если HS-устройство подключается к хабу USB 1.x, который этого согласования не поддерживает, устройство останется в режиме FS, возможно, с усеченной функциональностью. В системе с USB 2.0 у устройства можно спросить (запросом дескрипторов), что изменится в его функциональности, если его подключить на другой скорости (изменив топологию соединений).

Вполне понятно, что устройство USB 2.0 сможет реализовать высокую скорость, только если по пути от него к хост-контроллеру (тоже 2.0) будут встречаться только хабы 2.0. Если это правило нарушить и между ним и контроллером 2.0 окажется старый хаб, то связь может быть установлена только в режиме FS. Если такая скорость устройство и клиентское ПО устроит (к примеру, для принтера и сканера это выльется только в большее время ожидания пользователя), то подключенное устройство работать будет, но появится сообщение о неоптимальной конфигурации соединений. По возможности ее (конфигурацию) следует исправить, благо переключения кабелей USB можно выполнять на ходу. Устройства и ПО, критичные к полосе пропускания шины, в неправильной конфигурации работать откажутся и категорично потребуют переключений. Если же хост-контроллер старый, то все преимущества USB 2.0 окажутся недоступными пользователю. В этом случае придется менять хост-контроллер (менять системную плату или приобретать PCI-карту контроллера USB 2.0).

Контроллер и хабы USB 2.0 позволяют повысить суммарную пропускную способность шины и для старых устройств. Если устройства FS подключать к разным портам хабов USB 2.0 (включая и корневой), то для них возможно повышение суммарной пропускной способности шины USB по сравнению с 12 Мбит/с во столько раз, сколько используется портов высокоскоростных хабов. Конечно, при этом суммарная пропускная способность для всех устройств, включая и HS-устройства, не может превышать общую пропускную способность HS-шины (нужно учитывать и накладные расходы). Кроме того, нужно учитывать архитектурные особенности хост-контроллера и хабов. Хост-контроллер может умножать пропускную способность FS/LS на число своих встроенных контроллеров USB 1.x. «Умножительные способности» хаба зависят от реализации его транслятора транзакций.