Информационные технологииStfw.Ru 🔍
🕛

Основные способы передачи данных (асинхронный и изохронный)

Модель передачи данныхВ зависимости от конкретного приложения для передачи данных при помощи последовательных шин USB и Fire Wire используются различные режимы передачи данных. Восновном мож
В зависимости от конкретного приложения для передачи данных при помощи последовательных шин USB и Fire Wire используются различные режимы передачи данных. Восновном можно выделить два режима асинхронный и изохронный (соответствующие англоязычные термины asynchronous и isochronous).
Первый режим используется когда необходима гарантированная доставка данных между двумя устройствами (речь идет о ситуациях когда одно устройство не обязательно является компьютером см. ). Под гарантированной доставкой понимается то обстоятельство что в случае возникновения каких-либо ошибок (кроме случаев когда шина обнаружила что одно из устройств было физически отключено в процессе передачи) при передаче данных происходит попытка повторной передачи данных до тех пор пока данные не будут переданы успешно либо пока не будет исчерпан лимит количества повторных передач. Асинхронный режим может например использоваться для передачи данных между компьютером и внешним накопителем данных (CDR,CDRW,Compact Flash Disk и.т.д.). Понятно что во всех случаях с дисками на первом месте стоит сохранение целостности данных и только лишь во вторую очередь важно постоянство скорости их передачи. Как видно из данного выше описания синхронного режима передачи в процессе передачи могут иметь место задержки связанные с повторной посылкой пакетов данных. Следует так же принять во внимание конкуренцию разных устройств за канал передачи данных по шине, в силу этих обстоятельств к асинхронной передаче (как это и следует из ее названия) не предъявляется требований по величине временной задержки передачи данных между источником и приемником.
Совершенно иная ситуация имеет место при изохронном типе передаче, в этом случае во главу угла ставится именно достижение фиксированной величины задержки сигнала. Поэтому обе шины реализованы так что в случае ошибок при изохронной передаче повторной попытки передачи на уровне аппаратного обеспечения самой шины не происходит. Такой подход позволяет достичь минимального времени задержки в тех случаях когда целостность передаваемых данных не имеет особого значения (как например это иногда бывает при передаче телевизионного изображения, разумеется речь идет о ситуациях когда вероятность возникновения ошибок не высока, а например само изображение не отличается высоким качеством) при этом в случае необходимости коррекции ошибок это может быть достигнуто на более высоких уровнях протокола передачи чем сама аппаратная реализация шины. В последнем случае коррекцией ошибок может заниматься ПО уровня системных драйверов или прикладного уровня настольного компьютера или встроенного компьютера прибора участвующего в передаче данных по шине. Коррекция может аналогично происходить при помощи повторной передачи данных одним из устройств все через тот же используемый им логический изохронный канал передачи данных внутри шины. Разумеется такая коррекция требует обратной связи в реальном времени от устройства, являющегося приемником информации. Разумеется в случае коррекции за счет повторной передачи возрастает возможная задержка времени прихода данных от одного устройства к другому. Для обеспечения обратной связи может например использоваться еще один изохронный канал данных направленный в обратную сторону или еще одна разновидность передачи данных называемая в англоязычной литературе interrupt transfer или то же передача по прерыванию. Передача по прерыванию в полной мере относится к шине USB (в первоначальном варианте стандарта IEEE1394-1995 для шины FireWire аналогичное понятие отсутствует) и характеризуется тем что в течении некоторого периодически
заданного интервала времени гарантируется что одно устройство может послать другому пакет данных ограниченной длины а другое устройство гарантированно его примет в тот же интервал времени. Поэтому передача по прерыванию хорошо подходит именно для посылки сигналя обратной связи о отсутствии или наличии ошибок при изохронной передаче данных. Еще одним применением передачи по прерыванию может быть периодическое уведомление одного устройства о состоянии другого, например уведомления компьютера об окончании принтером печати очередной порции данных или аналогично уведомление модемом о наличии входящего звонка.
Передача по прерыванию в отличие от изохронной передачи по шине USB вместе с тем обеспечивает повторную передачу данных на уровне самой шины, при том что она наследует от самой изохронной передачи способность передавать данные с гарантированной максимальной задержкой. Передача по прерыванию предназначена для передачи пакетов от устройства к компьютеру. Однако с точки зрения программного управления потоком данных она гораздо ближе к асинхронной передаче чем к изохронной, поэтому неудивительно что в программах для получения компьютером данных через асинхронный канал и через канал передачи данных по прерыванию используются одни и те же функции за тем лишь исключением что в них передаются разные идентификаторы каналов.
Обе описываемых здесь последовательных шины (USB и FireWire) для реализации описанного выше гибкого управления потоками данных при наличии множества одновременно подключенных устройств используют так называемую передачу данных при помощи тайм-слотов, состоящую в том что в течении периодически повторяющегося интервала времени (которое фактически и определяет достижимые самые короткие максимальные задержки) устройства подключенные к шине получают возможность передачи пакетов данных через используемые ими логические каналы. И здесь становится важным понятия арбитража на шине, определяющего порядок "справедливого" распределения времени между устройствами и соответственно логическими каналами в течении каждого тайм-слота. Для шин USB и FireWire в силу "генезиса их происхождения" этот процесс происходит существенно по разному (более подробное описание приводится в следующих разделах). Еще одним существенным отличием FireWire является наличие broadcast-режима изохронной передачи данных, когда несколько устройств могут одновременно получать изохронные данные, передаваемые одним устройством. Такой режим, в частности важен, например когда необходимо организовать одновременную запись одним устройством и воспроизведение другим видеоизображения, передаваемого в реальном времени цифровой видеокамерой
Существенным является отметить тот факт что в силу физических ограничений пропускной способности шины очевидно не всякий набор одновременно существующих логичеких каналов передачи может существовать внутри нее. Если какое-либо из устройств потребует для изохронного полосы пропускания (которая исчисляется в доле времени от тайм-слота используемого неким логическим каналом, связанным с этим устройством) что суммарная используемая всеми устройствами и их изохронными каналами полоса превысит значение отведенное на шине для изохронной передачи, такое устройство просто не сможет ее получить и просто останется не сконфигурированным. Использование этого устройства (или по крайней мере его изохронного канала) будет невозможно до тех пор пока другие устройства не освободят достаточную полосу для того, чтобы шина (совместно с ПО) могла это устройство сконфигурировать. Такое поведение шины является частью реализации механизма гарантированных временных задержек передачи данных.
В процессе конфигурирования устройств подключенных к шине так же используются асинхронные каналы передачи данных. Для FireWire и USB здесь существуют существенные отличия. В случае USB все взаимодействия между устройствами происходит посредством последовательных каналов передачи данных данных, соединяющих две логические единицы находящиеся в двух разных устройствах, подсоединенных к шине, и носящих (в соответствии со спецификацией USB) название endpoint. В отличие от этого, в
спецификации FireWire (IEEE1394) понятие канала используется только когда речь идет об изохронной передаче, во всех остальных случаях все подключенные к шине устройства (по-видимому несколько более архаично) представляются в виде виртуального адресного пространства в различные адреса которого может производиться запись и чтение.

Для устройств, соединенных при помощи USB, каналы, отвечающие за конфигурирование устройств логически подключены к endpoint-ам носящим название control endpoint (управляющий endpoint), такие endpoint-ы в отличие от обычных асинхронных и изохронных осуществляют двунаправленную передачу данных между устройством и компьютером. Передача данных в такие endpoint-ы всегда происходит в соотвествии со специальным форматом, определяемым спецификацией USB. Каждое устройство имеет control endpoint по умолчанию, который всегда имеет номер 0 (уникальный идентификатор в пределах одного устройства).
FireWire для конфигурирования устройств использует в виртуальном адресном пространстве для каждого устройства CSR-структуру (Control state registers), определяемую спецификацией ISO/IEC-13213. В процессе конфигурирования производится запись в регистры, определенные этой спецификацией. Для каждого из устройств выделена огромная область памяти размером в 256 мегабайт в составе котрой находится его CSR. Стандарт IEEE 13 94 допускает объединение нескольких шин FireWire в одну, в этом случае частью адреса в виртуальном адресном пространстве становится еще номер шины.

Также по теме:
Новые программы для Windows, Linux и Android.