Спецификация USB.Rev1.0

       

Вычисление Времен Транзакции Шины (Calculating Bus Transaction Times)


Когда программное обеспечение системы USB позволяет создавать новый канал шины, необходимо вычислить, сколько времени шины потребуется для данной транзакции. Это время шины основывается на сообщенных максимальных размерах пакета информации, для конечной точки, непроизводительных затратах протокола запроса специфического типа транзакции, непроизводительных затратах из-за передачи сигналов с наложением вставляемых бит, запросов меж-пакетного распределения времени в соответствии с протоколом, распределение времени между транзакциями, и т.д.(That bus time is based on the maximum packet size information reported for an endpoint, the protocol overhead for the specific transaction type request, the overhead due to signaling imposed bit-stuffing, inter-packet timings required by the protocol, inter?transaction timings, etc.) Эти вычисления требуются, чтобы гарантировать, что доступное время в кадре не будет превышено. Следующие уравнения, используются, чтобы определить время транзакции шины:

KEY

Data_bc                             Счетчик байтов полезной нагрузки данных

Host_Delay                       Время, требуемое хосту, чтобы подготовиться к или оправиться от передачи; специфическая реализация хост контроллера

Floor()                                Целая часть параметра

Hub_LS_Setup                Время, предоставленное хост контроллером концентраторам, для предоставления возможности низко скоростным портам; Измерена как задержка от конца PRE PID до началу низко скоростного SYNC; минимум 4 времени полно скоростных передачи бита.(The time provided by the host controller for hubs to enable low speed ports;  Measured as the delay from end of PRE PID to start of low speed SYNC; minimum of 4 full speed bit times.)

BitStuffTime                      Функция, которая вычисляет теоретическое дополнительное время, требуемое из-за вставки битов в передаче сигналов; самый плохой случай(1.1667*8*Data_bc)

Полно скоростной (Вход)

          Не-изохронная Передача (Включая Квитирование)


           = 9107 + (83.54 * Floor(3.167 + BitStuffTime(Data_bc))) + Host_Delay

          Изохронная Передача (Без Квитирования)

           = 7268 + (83.54 * Floor(3.167 + BitStuffTime(Data_bc))) + Host_Delay

Полно скоростной (Выход)

          Не-изохронная Передача (Включая Квитирование)

           = 9107 + (83.54 * Floor(3.167 + BitStuffTime(Data_bc))) + Host_Delay

          Изохронная Передача (Без Квитирования)

           = 6265 + (83.54 * Floor(3.167 + BitStuffTime(Data_bc))) + Host_Delay

Низко скоростной (Вход)

 = 64060 + (2 * Hub_LS_Setup) +

(676.67 * Floor(3.167 + BitStuffTime(Data_bc))) + Host_Delay

Низко скоростной (Выход)

 = 64107 + (2 * Hub_LS_Setup) +

(667.0 * Floor(3.167 + BitStuffTime(Data_bc))) + Host_Delay

Времена Шины в вышеупомянутых уравнениях измеряются в наносекундах и необходимо принимать во внимание, что происходит задержка распространения из-за расстояния между устройством и хостом. Это типичные уравнения, которые могут использоваться, чтобы вычислить Время Шины; однако, в различных реализациях их можно использовать как грубое приближение этих времен.

Фактическое время шины, полученное для данной транзакции будет почти всегда меньше чем расчетное поскольку непроизводительные затраты вставки бита зависят от данных.  Самый плохой случай вставки бита вычислен как 1.1667 разы,  необработанное время(1.1667 times the raw time) (то есть, в уравнениях  в функции BitStuffTime Data_bc умножается на 8*1.1667). Это означает, что будет почти всегда иметься время, неиспользуемое на шине (подлежащее специальным шаблонам данных) в конце концов регулярно планируемые транзакции завершаться.(This means that there will almost always be time unused on the bus (subject to data pattern specifics) after all regularly scheduled transactions have completed.) Помещая все транзакции bulk/управления в конец кадра, время вставки бит может быть вычислено как меньшее чем в самом плохом случае. Это более агрессивное вычисление приходит ценой наличия некоторых сбойных транзакций в передачах bulk/управления в данном кадре появляющихся время от времени из-за превышения кадра времени, когда достаточно предыдущих транзакций, потребуется самый плохой случая вставки бита. (This more aggressive calculation comes at the cost of having some bulk/control transfer’s transaction fail in a given frame every once in a while due to exceeding the frame time when enough of the previous transactions require worst case bit stuffing.) Сбойная транзакция может быть повторена,это будет редко случаться в текущих произвольных шаблонах  данных, и может приводить к лучшей оценке распределения времени для передач изохронных и прерываний.(The failed transaction can be retried, will seldom happen given random data patterns, and can result in a better allocation estimate for isochronous and interrupt transfer times.) В любом случае, время шина выделенное в следствии меньшего количества вставок битов может многократно использоваться как обсуждено в Разделе 5.9.5.

Термин Host_Delay в уравнениях зависит от хост контроллера и системы и учитывает дополнительное время, которое может потребоваться хост контроллеру из-за задержек в получении доступа к памяти или других зависящих от реализации проблем. (The Host_Delay term in the equations is host controller and system dependent and allows for additional time a host controller may require due to delays in gaining access to memory or other implementation dependencies.) Этот термин включен в реализацию этих уравнений,  используя функции Ограничение на Управление Передачей, обеспеченные интерфейсом HCD (This term is incorporated into an implementation of these equations by using the Transfer Constraint Management functions provided by the HCD interface.) Эти уравнения это типичная реализация комбинации программного обеспечения USBD и HCD, работающих вместе. Результаты этих вычислений используются, чтобы определить, может ли передача или создаваемый канала поддерживаться в данной конфигурации USB.


Содержание раздела