Стек протоколов UniPro - UniPro protocol stack

В технологии мобильных телефонов Стек протоколов UniPro[1] следует архитектуре классического Эталонная модель OSI. В UniPro физический уровень OSI разделен на два подуровня: уровень 1 (фактический физический уровень) и уровень 1.5 (уровень адаптера PHY), который абстрагируется от различий между альтернативными технологиями уровня 1. Фактический физический уровень - это отдельная спецификация, так как различные параметры PHY используются повторно.[2] в другом MIPI Альянс технические характеристики.

Стек протоколов UniPro (это цветовое кодирование - давняя традиция UniPro)
Слой #Имя слояФункциональностьИмя блока данных
ЛАЗаявлениеПолезная нагрузка и семантика транзакцииСообщение
DME
Слой 4ТранспортПорты, мультиплексирование, управление потокомСегмент
Слой 3СетьАдресация, маршрутизацияПакет
Слой 2Канал передачи данныхОдноскачковая надежность и арбитраж на основе приоритетовРамка
Слой 1.5PHY адаптерАбстракция физического уровня и поддержка нескольких полосСимвол UniPro
Слой 1Физический уровень (PHY)Сигнализация, синхронизация, линейное кодирование, режимы питанияСимвол PHY

Сама спецификация UniPro охватывает уровни 1.5, 2, 3, 4 и DME (объект управления устройством). Уровень приложения (LA) выходит за рамки, потому что для разных видов использования UniPro потребуются разные протоколы LA. Физический уровень (L1) описан в отдельных спецификациях MIPI, чтобы при необходимости можно было повторно использовать PHY другими (менее общими) протоколами.

Уровни OSI 5 (сеанс) и 6 (представление), где это применимо, считаются частью уровня приложений.

Физический уровень (L1)

D-PHY

Версии 1.0 и 1.1 UniPro используют MIPI. D-PHY технология для внешнего физического уровня. Этот PHY обеспечивает связь между чипами. Скорости передачи данных D-PHY являются переменными, но находятся в диапазоне 500-1000 Мбит / с (поддерживаются более низкие скорости, но с пониженной энергоэффективностью). D-PHY был назван в честь римского числа 500 ("D").

В D-PHY[3] использует дифференциальную сигнализацию для передачи символов PHY по микрополосковой проводке. Вторая пара дифференциальных сигналов используется для передачи связанного тактового сигнала от источника к месту назначения. Таким образом, технология D-PHY использует в общей сложности 2 тактовых провода в каждом направлении плюс 2 сигнальных провода на полосу и в каждом направлении. Например, D-PHY может использовать 2 провода для часов и 4 провода (2 полосы) для данных в прямом направлении, но 2 провода для часов и 6 проводов (3 полосы) для данных в обратном направлении. Трафик данных в прямом и обратном направлениях полностью независим на этом уровне стека протоколов.

В UniPro D-PHY используется в режиме (называемом кодированием «8b9b»), который передает 8-битные байты как 9-битные символы. Протокол UniPro использует это для представления специальных управляющих символов (помимо обычных значений от 0 до 255). Сам PHY использует это для представления определенных специальных символов, которые имеют значение для самого PHY (например, символы IDLE). Обратите внимание, что соотношение 8: 9 может вызвать некоторую путаницу при указании скорости передачи данных D-PHY: реализация PHY, работающая с тактовой частотой 450 МГц, часто оценивается как PHY 900 Мбит / с, в то время как только 800 Мбит / с затем доступен для стека UniPro.

D-PHY также поддерживает режим передачи данных с низким энергопотреблением (LPDT) и различные другие режимы с низким энергопотреблением для использования, когда не нужно отправлять данные.

M-PHY

Версии 1.4 и выше UniPro поддерживают как D-PHY а также M-PHY[4] технологии. Технология M-PHY все еще находится в стадии разработки, но поддерживает высокоскоростные передачи данных, начиная примерно с 1000 Мбит / с (M-PHY был назван в честь римского числа 1000). В дополнение к более высоким скоростям, M-PHY будет использовать меньше сигнальных проводов, потому что тактовый сигнал встроен в данные за счет использования отраслевых стандартов. Кодировка 8b10b. Опять же, PHY, способный передавать пользовательские данные со скоростью 1000 Мбит / с, обычно указывается как находящийся в режиме 1250 Мбит / с из-за кодирования 8b10b.

Технологии физического уровня, поддерживаемые UniPro
PHY технологияВерсия / ВыпущеноКодировка символовГбит / с (полезная нагрузка)переулкиПоддерживается в
D-PHY1.2 / сентябрь 2014 г.8b / 9b4,5 Гбит / с / линия4-полосный порт
M-PHY3.1 / июнь 2014 г.8b / 10b11,6 Гбит / с / линия4 + 1 полосный порт
C-PHY1.00.00 / октябрь 2014 г.? 2,5 Гбит / с на линию?3-х полосный порт

Ожидается, что D- и M-PHY будут сосуществовать в течение нескольких лет. D-PHY - менее сложная технология, M-PHY обеспечивает более широкую полосу пропускания с меньшим количеством сигнальных проводов, а C-PHY обеспечивает низкое энергопотребление.

Низкоскоростные режимы и энергосбережение

Стоит отметить, что UniPro поддерживает энергоэффективные низкоскоростные режимы связи, предоставляемые как D-PHY (10 Мбит / с), так и M-PHY (от 3 Мбит / с до 500 Мбит / с). В этих режимах энергопотребление примерно зависит от объема отправляемых данных. Кроме того, обе технологии PHY обеспечивают дополнительные режимы энергосбережения, поскольку они оптимизированы для использования в устройствах с батарейным питанием.

Уровень адаптера PHY (L1.5)

С архитектурной точки зрения уровень адаптера PHY служит для того, чтобы скрыть различия между различными параметрами PHY (D- и M-PHY). Таким образом, эта абстракция в основном дает архитектурную гибкость. Краткие сведения о PHY включают в себя различные состояния мощности и используемые схемы кодирования символов.

L1.5 символы

Пример последовательности 17-битных символов L1.5 UniPro
ctlb15b14b13b12b11b10b09b08b07b06b05b04b03b02b01b00
11-й байт контрольного символа L1.52-й байт контрольного символа L1.5
01-й байт символа данных L1.52-й байт символа данных L1.5
01-й байт символа данных L1.52-й байт символа данных L1.5
01-й байт символа данных L1.52-й байт символа данных L1.5
01-й байт символа данных L1.52-й байт символа данных L1.5
11-й байт контрольного символа L1.52-й байт контрольного символа L1.5
01-й байт символа данных L1.52-й байт символа данных L1.5

Таким образом, L1.5 имеет собственное (концептуальное) кодирование символов, состоящее из 17-битных символов. Эти 17-битные символы никогда не появляются на проводах, потому что они сначала преобразуются L1.5 в пару символов PHY. Дополнительный 17-й бит управления указывает специальные символы управления, которые используются самим протоколом (L1.5 и L2). На рисунках контрольные биты показаны красным цветом L1.5 в качестве напоминания о том, что они определены в протоколе уровня 1.5 и используются им.

L1.5 многополосная поддержка

Основная функция, которую L1.5 предлагает пользователям, - это возможность увеличения пропускной способности канала UniPro за счет использования 2, 3 или 4 полос, когда одна полоса не обеспечивает достаточной пропускной способности. Для пользователя такая многополосная связь просто выглядит как более быстрый физический уровень, потому что символы отправляются по 2, 3 или 4 полосам. Приложения, которым требуется более высокая пропускная способность в одном направлении, но меньшая пропускная способность в противоположном направлении, могут иметь разное количество полос в каждом направлении.

L1.5 обнаружение полосы движения

Начиная с UniPro v1.4, L1.5 автоматически определяет количество используемых линий M-PHY для каждого направления связи. Это включает простой протокол обнаружения в L1.5, который выполняется при инициализации. Протокол передает тестовые данные по каждой доступной исходящей полосе и получает обратно от однорангового объекта информацию о том, какие данные на какой полосе фактически достигли другого конца канала. Механизм также поддерживает прозрачное переназначение дорожек, чтобы дать разработчикам печатных плат гибкость при физическом подключении дорожек.

L1.5 управление питанием канала

Начиная с UniPro v1.4, L1.5 имеет встроенный протокол, называемый PACP (протокол управления PA), который позволяет L1.5 взаимодействовать со своим одноранговым объектом L1.5 на другом конце канала на основе M-PHY. Его основное использование - предоставить контроллеру на одном конце линии простой и надежный способ изменить режимы мощности как для прямого, так и для обратного направления линии. Это означает, что контроллер, расположенный на одном конце линии связи, может изменять режим питания в обоих направлениях за одну атомарную операцию. Сложные шаги, необходимые для того, чтобы сделать это полностью надежным способом, прозрачно обрабатываются в L1.5.

L1.5 контроль параметров пира

Помимо управления питанием канала L1.5, PACP также используется для контроля доступа и параметров состояния однорангового устройства UniPro.

L1.5 гарантии

Механизмы в L1.5 гарантируют следующее для протоколов верхнего уровня:

  • после сброса каждый передатчик L1.5 будет ждать, пока подключенный приемник L1.5 не станет активным (обрабатывается посредством рукопожатия)
  • если используется более одной полосы, порядок исходного потока символов сохраняется (несмотря на использование нескольких полос и свободу в том, как соединять эти полосы)
  • изменения режима питания выполняются надежно (даже при наличии битовых ошибок)

Уровень канала передачи данных (L2)

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

Кадры данных L2

L2 объединяет 17-битные символы UniPro L1.5 в кадры пакетных данных (термин «пакет» зарезервирован для L3). Эти кадры данных начинаются с 17-разрядного управляющего символа начала кадра, за которым следуют до 288 байтов данных (144 символа данных), за которыми следуют управляющий символ конца кадра и контрольная сумма.

Обратите внимание, что два или более из 288 байтов используются более высокими уровнями протокола UniPro. Максимальный размер кадра 288 байтов полезной нагрузки на кадр был выбран, чтобы гарантировать, что весь стек протокола может легко передать 256 байтов данных приложения в одном фрагменте. Полезные данные, состоящие из нечетного числа байтов, поддерживаются путем дополнения кадра четным числом байтов и вставкой соответствующего флага в трейлер.

Пример кадра данных UniPro
ctlb15b14b13b12b11b10b09b08b07b06b05b04b03b02b01b00
1Управляющий символ начала кадра данных (заголовок)
0Полезная нагрузка кадра
0:
0:
0Полезная нагрузка кадра
1Контрольный символ конца кадра данных (трейлер)
016-битная контрольная сумма

Кадры управления L2

В дополнение к кадрам данных, которые содержат пользовательские данные, L2 также передает и принимает кадры управления. Кадры управления можно отличить от кадров данных по трем битам в первом символе. Есть два типа контрольных рамок:

  • Один тип («Подтверждение AFC и управление потоком L2», 3 символа) служит для подтверждения успешно принятых кадров данных.
  • Другой тип («NAC», 2 символа) уведомляет соответствующий передатчик о том, что был получен неправильный кадр.

Обратите внимание, что эти типы управляющих кадров L2 отправляются автономно L2.

Пример блока управления UniPro
ctlb15b14b13b12b11b10b09b08b07b06b05b04b03b02b01b00
1Управляющий символ начала контрольного кадра (заголовок)
0Полезная нагрузка кадра управления (только AFC)
016-битная контрольная сумма

L2 ретрансляция

Высокоскоростная связь при низких уровнях мощности может приводить к случайным ошибкам в принимаемых данных. Уровень канала передачи данных содержит протокол для автоматического подтверждения правильно принятых кадров данных (с использованием кадров управления AFC) и для активного оповещения об ошибках, которые могут быть обнаружены на уровне L2 (с использованием кадров управления NAC). Наиболее вероятная причина ошибки на уровне L2 - это повреждение фрейма данных на электрическом уровне (шум, EMI). Это приводит к неправильной контрольной сумме данных или контрольного кадра на стороне получателя и приводит к его автоматической повторной передаче. Обратите внимание, что кадры данных подтверждаются (AFC) или подтверждаются отрицательно (NAC). Поврежденные контрольные кадры обнаруживаются таймерами, отслеживающими ожидаемые или требуемые ответы.

Пропускная способность 1 Гбит / с и частота ошибок по битам 10−12 на скорости 1 гигабит / с будет означать ошибку каждые 1000 секунд или один раз каждые 1000 переданного гигабита. Таким образом, уровень 2 автоматически исправляет эти ошибки за счет незначительной потери полосы пропускания и за счет буферного пространства, необходимого в L2 для хранения копий переданных кадров данных для возможной повторной передачи или «воспроизведения».

L2 управление потоком

Другой особенностью L2 является способность передатчика L2 знать, есть ли буферное пространство для кадра данных на принимающей стороне. Это снова зависит от управляющих кадров L2 (AFC), которые позволяют приемнику сообщать передатчику партнера, сколько буферного пространства доступно. Это позволяет приемнику приостанавливать работу передатчика, если это необходимо, что позволяет избежать переполнения приемного буфера. Управление потоком L2 не влияет на кадры управления: они могут быть отправлены в любое время, и ожидается, что приемник L2 будет обрабатывать их с той скоростью, с которой они поступают.

Классы трафика L2 и арбитраж

UniPro в настоящее время поддерживает два уровня приоритета для фреймов данных, которые называются классом трафика 0 (TC0) и классом трафика 1 (TC1). TC1 имеет более высокий приоритет, чем TC0. Это означает, что если передатчик L2 имеет смесь кадров данных TC0 и TC1 для отправки, кадры данных TC1 будут отправлены первыми. Предполагая, что большая часть трафика данных использует TC0 и что сеть имеет перегрузку, это помогает гарантировать, что кадры данных TC1 прибывают в пункт назначения быстрее, чем кадры данных TC0 (аналогично автомобилям экстренных служб и нормальному дорожному движению). Кроме того, L2 может даже прервать или «вытеснить» исходящий кадр данных TC0, чтобы передать кадр данных TC1. К кадрам управления применяются дополнительные правила арбитража: по сути, они получают более высокий приоритет, чем кадры данных, потому что они малы и важны для поддержания потока трафика.

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

Вариант с одним классом трафика L2

В UniPro версии 1.1 была представлена ​​опция, позволяющая простым конечным устройствам реализовывать только один из двух классов трафика, если они захотят. Это может быть полезно, когда проектировщики устройств больше озабочены стоимостью реализации, чем контролем над арбитражем кадров. Подключенное одноранговое устройство L2 обнаруживает такие устройства на этапе инициализации канала и может избежать использования недостающего класса трафика.

L2 гарантии

Различные механизмы L2 обеспечивают ряд гарантий для протоколов более высокого уровня:

  • полученный фрейм данных будет содержать правильную полезную нагрузку (проверяется с помощью контрольной суммы)
  • переданный кадр данных достигнет приемника партнера (после возможных повторных передач)
  • будет место для размещения полученных кадров данных (управление потоком L2)
  • содержимое кадра данных будет передано на верхний уровень протокола только один раз (повторяющиеся кадры данных отбрасываются)
  • кадры данных в пределах одного класса трафика будут получены и переданы на верхние уровни протокола в порядке

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

Сетевой уровень (L3)

Пример системной архитектуры, показывающий несколько устройств UniPro, подключенных через коммутаторы UniPro

Сетевой уровень предназначен для маршрутизации пакетов по сети к месту назначения. Коммутаторы в многозвенной сети используют этот адрес, чтобы решить, в каком направлении маршрутизировать отдельные пакеты. Чтобы сделать это возможным, заголовок, содержащий 7-битный адрес назначения, добавляется L3 ко всем кадрам данных L2. В примере, показанном на рисунке, это позволяет Устройству №3 не только связываться с Устройствами №1, №2 и №5, но также позволяет ему обмениваться данными с Устройствами №4 и №6.

Версия 1.4 спецификации UniPro не определяет детали коммутатора, но указывает достаточно, чтобы устройство могло работать в будущей сетевой среде.

L3 адресация

Хотя роль адреса L3 такая же, как у IP-адреса в пакетах в Интернете, длина адреса UniPro DeviceID составляет всего 7 бит. Таким образом, в сети может быть до 128 различных устройств UniPro. Обратите внимание, что в отношении UniPro все устройства UniPro созданы равными: в отличие от PCI Express или USB, любое устройство может взять на себя инициативу для связи с любым другим устройством. Это делает UniPro настоящей сетью, а не шиной с одним мастером.

Пакеты L3

На схеме показан пример пакета L3, который начинается с первого байта полезной нагрузки L2 кадра L2 и заканчивается последним байтом полезной нагрузки L2 кадра L2. Для простоты и эффективности в одном кадре L2 может передаваться только один пакет L3. Это означает, что в UniPro концепции кадра L2, пакета L3 и сегмента L4 (см. Ниже) настолько тесно согласованы, что являются почти синонимами. Однако различие (и «окраска») по-прежнему делается для того, чтобы спецификация могла быть описана строго по уровням.

Структура пакета L3 с коротким заголовком

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

Пакет с коротким заголовком UniPro в кадре данных
ctlb15b14b13b12b11b10b09b08b07b06b05b04b03b02b01b00
1Управляющий символ начала кадра данных (заголовок)
0L3 короткий заголовокПолезная нагрузка пакета
0Полезная нагрузка пакета
0:
0Полезная нагрузка пакета
1Контрольный символ конца кадра данных (трейлер)
016-битная контрольная сумма

Пакеты с длинным заголовком L3

Пакеты с длинным заголовком предназначены для включения в будущую версию спецификации UniPro, поэтому их формат не определен (за исключением одного бита) в текущей спецификации UniPro v1.4. Однако UniPro v1.4 определяет ловушку, которая позволяет принимать или передавать пакеты с длинным заголовком устройством, совместимым с UniPro v1.4, при условии, что последнее может быть обновлено с помощью программного обеспечения. Механизм «ловушки длинного заголовка» UniPro v1.4 просто передает полезную нагрузку полученного кадра данных L2 (представляющего собой пакет L3 с его заголовком и полезной нагрузкой) в расширение L3 (например, программное обеспечение) для обработки. Механизм также может принимать полезную нагрузку кадра L2 от расширения L3 для передачи. Этот механизм нацелен на то, чтобы устройства UniPro v1.4 могли быть обновлены для поддержки протоколов, для которых требуются еще не определенные пакеты с длинным заголовком.

L3 гарантии

Хотя детали коммутаторов по-прежнему не рассматриваются в спецификации UniPro v1.4, L3 позволяет устройствам UniPro v1.0 / v1.1 / v1.4 служить конечными точками в сети. Следовательно, он гарантирует ряд свойств для протоколов более высокого уровня:

  • что пакеты будут доставлены на адресуемое устройство назначения (а пакеты, адресованные несуществующим устройствам, отбрасываются)
  • эта полезная нагрузка, отправленная источником L3 в один пункт назначения L3 в виде серии из одного или нескольких пакетов с коротким заголовком в одном классе трафика, будет прибывать по порядку и с правильной полезной нагрузкой (надежность)

Транспортный уровень (L4)

Функции транспортного уровня UniPro не особенно сложны, потому что о базовых коммуникационных услугах уже позаботились нижние уровни протокола. L4, по сути, позволяет нескольким устройствам в сети или даже нескольким клиентам в этих устройствах совместно использовать сеть контролируемым образом. Функции L4, как правило, примерно сопоставимы с функциями компьютерных сетей (например, TCP и UDP ), но они реже встречаются в локальных шинах, таких как PCI Express, USB или внутрикристальные шины.

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

L4 особенности

Транспортный уровень UniPro можно рассматривать как дополнительный уровень адресации в устройстве UniPro. Этот

  • позволяет устройству UniPro взаимодействовать с другим устройством UniPro, используя несколько логических потоков данных (пример: отправка аудио и видео, а также управляющей информации по отдельности).
  • позволяет устройству UniPro одновременно подключаться к нескольким другим устройствам (для этого требуются переключатели, поддерживаемые в будущая версия UniPro ) с использованием нескольких логических потоков данных.
  • предоставляет механизмы для снижения риска перегрузки в сети.
  • предоставляет механизм для структурирования потока байтов как потока сообщений.

Эти моменты объясняются более подробно ниже.

L4 сегменты

Сегмент L4, по сути, является полезной нагрузкой пакета L3. Заголовок L4 в его краткой форме состоит всего из одного байта. Основное поле в коротком заголовке L4 представляет собой 5-битный идентификатор «CPort», который можно рассматривать как подадрес в устройстве UniPro и в некоторой степени аналогичен к порт числа, используемые в TCP или же UDP. Таким образом, каждый сегмент (с коротким заголовком) адресован определенному CPort конкретного устройства UniPro.

Сегмент UniPro в кадре данных
ctlb15b14b13b12b11b10b09b08b07b06b05b04b03b02b01b00
1Управляющий символ начала кадра данных (заголовок)
0L3 короткий заголовокL4 короткий заголовок
0Полезная нагрузка сегмента
0:
0Полезная нагрузка сегмента
1Контрольный символ конца кадра данных (трейлер)
016-битная контрольная сумма

Один бит в заголовке сегмента также позволяет определять сегменты с помощью длинных заголовков сегментов. UniPro v1.4 не определяет структуру таких форматов сегментов (кроме этого единственного бита). Сегменты длинного заголовка могут быть сгенерированы с помощью ловушки длинного заголовка, описанной в разделе L3.

L4 соединения

UniPro называет пару CPort, которые обмениваются данными друг с другом, соединением (отсюда C в CPort). Установка соединения означает, что один CPort был инициализирован для создания сегментов, которые адресованы определенному CPort L4 с определенным идентификатором устройства L3 с использованием определенного класса трафика L2. Поскольку соединения UniPro являются двунаправленными, CPort-адрес назначения также настроен на передачу данных обратно в CPort-источник.

В UniPro 1.0 / 1.1 настройка подключения зависит от реализации.

В UniPro v1.4 предполагается, что настройка соединения относительно статична: параметры сопряженных CPort настраиваются путем установки соответствующих атрибутов соединения в локальных и одноранговых устройствах, использующих DME. В будущей версии UniPro он будет дополнен протоколом динамического управления подключением.

L4 управление потоком

CPorts также содержат переменные состояния, которые можно использовать для отслеживания, сколько буферного пространства имеет одноранговый или подключенный CPort. Это используется для предотвращения ситуации, когда CPort отправляет сегменты CPort, у которого недостаточно буферного пространства для хранения данных, что приводит к остановке трафика данных. Если не решить проблему быстро, эта пробка в пункте назначения быстро перерастет в тупик во всей сети. Это крайне нежелательно, так как может сильно повлиять на производительность сети для всех пользователей или, что еще хуже, может привести к тупиковым ситуациям. Описанный механизм L4 известен как сквозное управление потоком (E2E FC), поскольку он включает конечные точки соединения.

Управление потоком L4 по сравнению с управлением потоком L2

Управление потоком L4 является дополнением к управлению потоком L2. Оба работают, заставляя передатчик приостанавливаться, пока он не узнает, что в приемнике достаточно места в буфере. Но управление потоком L4 работает между парой CPort (потенциально с несколькими переходами) и направлено на изоляцию соединений друг от друга (аналогия «виртуального провода»). В отличие от этого, управление потоком L2 осуществляется на каждом шаге и позволяет избежать основной потери данных из-за нехватки места в буфере приемника.

Применимость управления потоком L4

E2E FC возможен только для связи с установлением соединения, но в настоящее время UniPro L4 не поддерживает альтернативные варианты. E2E FC включен по умолчанию, но его можно отключить. Обычно это не рекомендуется.

L4 подстраховка

UniPro предоставляет механизмы "сети безопасности", которые требуют, чтобы CPort поглощал все отправленные ему данные без остановки. Если в любом случае обнаруживается остановка, конечная точка отбрасывает входящие данные, поступающие на этот CPort, чтобы поддерживать поток данных в сети. Это можно рассматривать как форму постепенной деградации на системном уровне: если одно соединение в сети не успевает за скоростью принимаемых данных, это не влияет на другие устройства и другие соединения.

L4 и сообщения

UniPro L4 позволяет соединению между парой CPort передавать поток так называемых сообщений (каждое из которых состоит из серии байтов), а не один поток байтов. Границы сообщений запускаются протоколом уровня приложения с использованием UniPro и сигнализируются через бит в заголовке сегмента. Этот бит конца сообщения указывает, что последний байт в сегменте L4 является последним байтом сообщения уровня приложения.

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

UniPro v1.4 вводит понятие фрагмента сообщения, фрагмент - это часть сообщения, передаваемого между приложением и CPort. Этот параметр может быть полезен при указании приложений поверх UniPro, которым необходимо прервать создание сообщения на основе информации из стека UniPro, например, входящих сообщений или обратного давления.

L4 гарантии

Механизмы L4 предоставляют ряд гарантий протоколам верхнего уровня:

  • CPort не может останавливаться в том смысле, что он всегда будет продолжать принимать данные с той скоростью, с какой канал или сеть могут доставить данные.
  • Если приложение, привязанное к CPort соединения, останавливается и, таким образом, не может (на короткий или более длительный период времени) поглощать данные, это не влияет на другие соединения с тем же или другим устройством.
  • Поток данных, отправленный от одного CPort к другому, всегда будет поступать без изменений, по порядку и с правильной информацией о границах сообщения, если CPort может не отставать от входящего потока данных.
  • В случае, если CPort не успевает за входящим потоком данных, одно или несколько сообщений могут быть повреждены (из-за отсутствия данных), и получатель уведомляется об этом состоянии ошибки.
  • Для протокола уровня приложения безопасно ждать ответа партнера (например, ответа или подтверждения) на отправленное сообщение L4 (например, вопрос или команду). Но для протокола уровня приложения небезопасно ожидать ответа однорангового узла на отправленное частичное сообщение.
  • Содержимое полученных пакетов / сегментов с коротким заголовком всегда будет правильным. Хотя доставка в интерфейсе ловушки с длинным заголовком не гарантируется, в будущем расширении протокола планируется сделать доставку таких пакетов надежной. Это расширение протокола может быть реализовано программно поверх ловушки с длинным заголовком.

Объект управления устройством (DME)

DME (объект управления устройством) контролирует уровни в стеке UniPro.Он обеспечивает доступ к параметрам управления и состояния на всех уровнях, управляет переходами режима питания Link и обрабатывает загрузку, переход в спящий режим и сброс стека. Кроме того, он предоставляет средства для управления одноранговым стеком UniPro в Link.

Рекомендации

  1. ^ Спецификация MIPI Alliance для унифицированного протокола (UniProSM) v1.10.01 , требуется учетная запись на сайте MIPI
  2. ^ Обзор спецификаций MIPI, D-PHY используется в спецификациях DSI, CSI и UniPro, M-PHY используется в спецификациях UniPro, DigRFv4 и LLI.
  3. ^ Спецификация MIPI Alliance для D-PHY v1.00.00, требуется учетная запись на сайте MIPI
  4. ^ Спецификация MIPI для M-PHY версии 1.00.00, требуется учетная запись на сайте MIPI