Что такое ATM и недостатки его ячеек

Вопрос из книги Таненбаума про компьютерные сети к главе 1 «Введение», цитата:

30. Каковы недостатки использования маленьких клеток фиксированной длины в ATM?


Лично мне англоязычная аббревиатура «ATM» до прочтения этого вопроса была известна в значении «банкомат». Американцы и британцы так называют банкоматы. В этом значении «ATM» расшифровывается как «Automated Teller Machine», что по-русски дословно означает «машина-автоматизированный банковский служащий» или «машина-автоматизированный кассир». Существительное «teller» происходит от глагола «tell» (по-русски «говорить», «рассказывать»), то есть «teller» можно перевести как «рассказчик». Банковский служащий (клерк, кассир, менеджер) обычно нужен, чтобы наладить общение с клиентом, рассказать клиенту об услугах, оказываемых банком, поэтому его, как я понимаю, и называют «teller».

Однако, в рассматриваемом вопросе, исходя из того, что наш контекст — это компьютерные сети, можно сделать вывод, что англоязычная аббревиатура «ATM» означает «Asynchronous Transfer Mode», что на русский можно перевести как «асинхронный способ (режим) передачи данных». В википедии об этом понятии есть статьи:

https://ru.wikipedia.org/wiki/ATM
https://en.wikipedia.org/wiki/Asynchronous_Transfer_Mode

Нужно отметить, что при переводе слова «cell» с английского на русский переводчик книги выбрал значение «клетка», хотя мне в данном контексте чаще встречается перевод этого слова на русский как «ячейка». То есть в вопросе речь идет о размере ячеек в ATM. Ячейками при этом способе передачи данных называют пакеты данных. Каждый пакет, согласно стандарта, имеет фиксированный размер в 53 байта.

Еще, думаю, нужно пояснить, что в предыдущей (четвертой) редакции книги о понятии «ATM» в первой главе книги был материал, но в рассматриваемой (пятой) редакции книги Таненбаум этот материал удалил. Об этом сказано в предисловии Таненбаума к книге, но в русском переводе вы этого замечания не найдете, так как по какой-то неизвестной причине русский издатель счел возможным вырезать из книги большую часть предисловия, оставив от него только маленький огрызок.

Почему Таненбаум удалил материал о понятии «ATM» из первой главы? Как я понимаю, потому, что эта технология потеряла свою популярность и сегодня используется только в узких нишах рынка телекоммуникаций. Она проиграла конкуренцию гигабитному Ethernet в 2000-х, об этом рассказано в упомянутой выше статье википедии об ATM.

В рассматриваемой книге есть краткое (на одну-две странички) описание технологии ATM в главе 3 «Канальный уровень» (по-английски «The Data Link Layer»), в подразделе 3.5.2 «ADSL».

Разбираясь, что из себя представляет ATM, я написал несколько постов:
1. Синхронный и асинхронный режимы передачи цифрового сигнала.
2. Мультиплексирование с разделением по времени.

Как я понял, в то время, когда появился ATM, существовали сети, передающие голос (телефонные), и сети передающие данные. ATM придумали, чтобы объединить передачи данных любого вида в один поток. Единый поток данных должен был удовлетворять часто противоречивым требованиям, предъявляемым передачами данных разного вида. Например, передача данных голосового общения и видеоконференций должна проходить в реальном времени, поэтому для таких потоков данных задержки недопустимы, но потеря отдельных пакетов (кусочков данных) неважна. При этом передача, к примеру, файлов могла переносить задержки безболезненно, но потеря отдельных пакетов (кусочков данных) недопустима.

В протоколе ATM данные любого вида делятся на одинаковые кусочки (пакеты, ячейки) по 48 байтов. К каждой такой ячейке прибавляется заголовок размером 5 байтов. Итого размер одной ячейки составляет 53 байта.

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

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

Ответ на вопрос. Как известно, в итоге технология ATM проиграла конкуренцию так называемым «мультисервисным сетям связи», которые базируются на интернет-технологиях, включающих в себя протокол IP («internet protocol») и технологию MPLS («multiprotocol label switching»). Если ATM делит данные на короткие пакеты (ячейки) фиксированного размера (53 байта каждый, в том числе 48 байтов полезной нагрузки), то IP-пакеты — это длинные пакеты (до нескольких тысяч байт каждый) переменного размера.

https://ru.wikipedia.org/wiki/Мультисервисная_сеть_связи
https://ru.wikipedia.org/wiki/IP
https://ru.wikipedia.org/wiki/MPLS

https://ru.wikipedia.org/wiki/Maximum_transmission_unit
https://ru.wikipedia.org/wiki/Jumbo-кадр

На момент изобретения ATM передавать длинные пакеты было невыгодно из-за относительно низкой скорости передачи данных. Длинные пакеты вызывали слишком большие задержки в очередях (буферах) маршрутизаторов при передаче данных. Как только скорости передачи данных увеличились (появление гигабитного Ethernet и тому подобного), задержки при передаче длинных пакетов упали до минимума и стало выгоднее передавать длинные пакеты, потому что при передаче коротких ячеек (пакетов) слишком велики накладные расходы (большУю часть канала занимает передача заголовков ячеек, что характерно для передачи данных короткими пакетами). Кроме этого, если пакеты (ячейки) короткие, то на разбивку на пакеты, обработку пакетов при пересылке и обратную сборку из пакетов исходных данных уйдет больше времени по сравнению с применением длинных пакетов.

Кроме вышеизложенного, фиксированный размер ячеек ATM подразумевает необходимость того, чтобы исходные данные можно было разделить без остатка на 48 байт (полезная нагрузка одной ячейки ATM). Очевидно, не любые данные делятся без остатка на 48. Чтобы обеспечить это условие, размер исходных данных «добивается» «пустыми» байтами до нужного размера (по-английски этот процесс называется «padding», а последовательность лишних «пустых» (ничего не означающих) байтов — «pad»). Очевидно, что передача лишних байтов, не несущих никакой информации, как и передача заголовков, уменьшает скорость передачи данных.

Мультиплексирование с разделением по времени

Каналов передачи данных обычно меньше, чем желающих передавать данные по этим каналам. Чтобы одновременно несколько желающих могли передавать данные по одному каналу, люди придумали «мультиплексирование» (по-английски «multiplexing» или сокращенно «muxing»).

Мультиплексирование — это метод, с помощью которого множество аналоговых или цифровых сигналов можно объединить в один сигнал, передаваемый по одной разделяемой физической среде передачи. Физической средой передачи может быть электропровод, оптоволокно, воздух или космическое пространство при беспроводной передаче. «Разделяемая» (по-английски «shared») эта среда потому, что она делится между множеством сигналов, передаваемых по ней.

https://ru.wikipedia.org/wiki/Мультиплексирование
https://en.wikipedia.org/wiki/Multiplexing

Мультиплексирование можно выполнять разными способами. Одним из таких способов является «мультиплексирование с разделением по времени» (по-английски «time-division multiplexing», сокращенно «TDM»).

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


Рисунок 1

На рисунке 1 передача данных ведется слева направо. В составе источника сообщения (сигнала) находится устройство, которое называется мультиплексором. Именно оно осуществляет мультиплексирование. На рисунке оно схематично изображено повернутой на 90° вправо трапецией. В составе получателя сообщения (сигнала) находится устройство, которое называется демультиплексором. Оно разделяет полученное общее сообщение (сигнал) снова на отдельные сообщения (сигналы) и направляет эти сообщения в соответствующие каналы.

На рисунке 1 в мультиплексор слева по трем каналам приходят три разных сигнала, которые мультиплексор делит на части, назовем их «кадрами». Мультиплексор выделяет каждому входящему в него каналу фиксированный отрезок времени («временной слот», произносится с ударением на «о», то есть на последний слог при склонении; по-английски «time slot» или «timeslot») в своем графике работы. Так как на рисунке входящих канала три, то график работы мультиплексора разбит на три временных слота, которые выделяются каналам поочередно, от первого к последнему, а затем происходит возврат к первому (то есть по кругу или «циклу»). В ходе каждого цикла мультиплексор принимает от каждого канала по кусочку данных (кадру) и формирует в разделяемой среде передаче «суперкадр», состоящий в нашем случае из трех кадров, в числе которых есть по кадру от каждого канала. Работа мультиплексора продолжается по кругу, суперкадры движутся по разделяемой (общей) физической среде передачи к получателю сигнала и попадают в демультиплексор, который разбивает каждый суперкадр обратно на кадры и направляет каждый кадр в соответствующий приемный канал.

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

Отмечу, что цифры 1, 2, 3 слева от мультиплексора и справа от демультиплексора являются номерами входящих и исходящих каналов соответственно. А цифры 1, 2, 3 между мультиплексором и демультиплексором, находящиеся над суперкадрами, являются номерами временных слотов.

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

https://ru.wikipedia.org/wiki/Мультиплексирование_с_разделением_по_времени
https://en.wikipedia.org/wiki/Time-division_multiplexing

Изложенная выше текстом и на рисунке 1 схема работы мультиплексирования с разделением по времени называется «синхронным мультиплексированием с разделением по времени» (сокращенно «синхронное TDM», по-английски «synchronous TDM»). Оно называется так потому, что демультиплексор работает синхронно с мультиплексором, в результате чего демультиплексор знает, что (для нашего примера) кусочек данных (кадр) из временного слота 1 входящего суперкадра следует направить в исходящий канал 1, а кусочек данных (кадр) из временного слота 2 следует направить в исходящий канал 2 и так далее. От каждого кусочка данных (кадра) не требуется нести в себе номер исходящего канала, чтобы попасть в нужный исходящий канал, потому что из-за синхронизма демультиплексора с мультиплексором всё и так пройдет правильно.

У синхронного TDM имеется недостаток:


Рисунок 2

На рисунке 2 изображено то же синхронное TDM, что и на рисунке 1. Однако, данные, поступившие от пользователей во входящие каналы, имеют разный размер. Исходя из своей синхронной природы, демультиплексор может размещать данные первого канала только во временном слоте 1 каждого суперкадра, данные второго канала — только во временном слоте 2 каждого суперкадра и так далее. В результате получается, что из-за неравномерной нагрузки из входящих каналов некоторые суперкадры получаются частично пустыми, то есть разделяемый канал используется неэффективно (эта ситуация показана на рисунке 2 — см. состояние разделяемого канала между мультиплексором и демультиплексором).

Чтобы избавиться от этого недостатка, придумали так называемое «асинхронное TDM» (по-английски «asynchronous TDM»), которое также называют «статистическим TDM» (по-английски «statistical TDM»):


Рисунок 3

На рисунке 3 мультиплексирование с разделением по времени происходит асинхронно с демультиплексированием, это означает, что мультиплексор не привязывает каждый входящий канал к своему временному слоту, а может выделять одному входящему каналу не по одному временному слоту в каждом суперкадре, а по несколько, по необходимости. Это видно на рисунке: два первых суперкадра справа в разделяемом (общем) канале передачи данных заполнены так же, как и при синхронном TDM, потому что входящие каналы сначала обеспечивают равную загрузку данными. Однако, на третий отсчет данные во втором входящем канале заканчиваются и мультиплексор решает второй слот третьего справа суперкадра отдать под данные из третьего входящего канала. И так далее.

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

Асинхронное TDM еще называют «статистическим TDM» потому, что мультиплексор принимает решение о распределении временных слотов в суперкадрах на основании статистики о входящей нагрузке (входящих данных) из входящих каналов.

https://en.wikipedia.org/wiki/Statistical_time-division_multiplexing

В радиосвязи приложение синхронного TDM могут называть «статичным TDMA» (привязка входящих каналов к определенным временным слотам остается неизменной, то есть статичной; по-английски «static TDMA»), а приложение асинхронного TDM — «динамичным TDMA» (входящие каналы не привязаны к определенным временным слотам, распределение временных слотов между каналами происходит каждый раз по-разному, то есть динамически; по-английски «dynamic TDMA»). Дополнительная буква «A» в аббревиатуре означает «access», по-русски «доступ»:

https://ru.wikipedia.org/wiki/TDMA
https://en.wikipedia.org/wiki/Time-division_multiple_access

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

https://ru.wikipedia.org/wiki/Синхронизация_(передача_сигналов)

Как похудеть (держать себя в форме)

Многие хотят знать легкий (или относительно легкий) способ держать себя в форме или привести себя в форму, если всё уже очень запущено.

Здесь я коротко расскажу про два рабочих способа, которые использовал сам.

В этом посте речь не о получении красивых кубиков пресса или способах добиться такого же внешнего вида, как у статуи Аполлона или участника конкурса «Мистер Вселенная». Речь про то, чтобы добиться состояния тела, при котором у вас не будет пуза и складок жира. Это минимум.

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

1) Офисный работник. В каждый будний (рабочий) день я по окончании работы выходил из офиса и шел в направлении, противоположном направлению к своему дому. Суть в том, чтобы каждый день после работы пройти 10 километров (это примерно 2 часа ходьбы по времени, если у вас нет возможности или желания считать расстояние).

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

Условие: в течение этой ежедневной прогулки нельзя садиться или ложиться отдохнуть. Можно постоять и отдохнуть, но не садиться. Еще условие: прогулка должна быть выполнена каждый рабочий день без исключений. Даже если вы очень устали на работе или слегка приболели.

Первые дни может быть тяжело, но со временем втягиваешься. Способ хорош тем, что по еде можно себя не ограничивать.

2) Работаю дома. Прием пищи происходит через каждые 3 часа или более продолжительный период. Время суток в этом отсчете 3-часовых промежутков не имеет значения (фрилансер может работать в любое время суток).

В каждый прием пищи разрешается съесть 100-150 граммов еды. Обычно я покупаю пакеты с готовыми обедами. Вес каждого пакета — около 300 граммов, поэтому каждый пакет делю в две тарелки на два приема пищи. После каждого приема пищи съедаю 25 граммов шоколада с несладким чаем или с несладким кофе (для этого покупаю плитку шоколада 200 граммов, которая разделена производителем на 32 квадрата, каждый раз съедаю 4 квадрата — это 25 граммов). Иногда готовлю сам, при этом считаю вес ингридиентов, чтобы готовое блюдо вышло на 100-300 граммов (на 1-3 приема пищи).

Иногда заменяю 25-граммовый кусочек шоколада на небольшую горсточку семечек или орехов.

Запрещается покупать для еды любой сахар (песок или кусковый), сливочное масло, хлеб и любые мучные изделия. Растительное масло использую минимально. Соль использую минимально или вообще не использую. Запрещается покупать сладкие напитки с калорийностью выше 1 ккал (4 кДж) на 100 мл напитка. Запрещается кондитерка и мороженое.

Можно сколько угодно и в любое время пить сладкие напитки калорийностью 1 ккал (4 кДж) на 100 мл напитка и ниже (это самая дешевая сладкая газировка в магазинах). Можно сколько угодно и в любое время пить воду, чай без сахара, кофе без сахара, минералку. Молоко (2,5 % жирности) покупаю для добавления в кофе в соотношении 1 часть молока к 3 частям кофе.

Можно сколько угодно и в любое время есть яблоки, груши, огурцы, помидоры, виноград, мандарины, апельсины, сырую и квашенную капусту, сырой лук, сырую морковку.

* * *

При любом из этих способов первые результаты появятся через несколько месяцев-полгода.

Синхронный и асинхронный режимы передачи цифрового сигнала

Предыдущие посты:Collapse )

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

Какие бывают способы синхронизации? Первое, что приходит в голову — это передача тактового сигнала по отдельному дополнительному каналу передачи данных. Рассмотрим рисунок, который уже использовался в предыдущем посте:


Рисунок 1

На рисунке 1 верхний из двух сигналов может быть передан по одному каналу, а нижний (тактовый сигнал) — по другому, параллельному, каналу. Задний фронт (помечен зеленым цветом) импульса тактового сигнала командует источнику сигнала отправить очередной бит цифрового сигнала. Передний фронт (помечен красным цветом) импульса тактового сигнала командует получателю сигнала взять образец сигнала, приходящего от источника. Именно поэтому задний фронт каждого импульса тактового сигнала на рисунке 1 совпадает с началом каждого бита передаваемого от источника сигнала, а передний фронт каждого импульса тактового сигнала совпадает с серединой каждого бита передаваемого от источника сигнала.

Тут может быть два варианта: 1) тактовый импульс идет из источника сигнала. В этом случае получатель сигнала по полученному тактовому импульсу подстраивается под скорость работы источника сигнала. 2) Тактовый импульс идет из получателя сигнала к источнику сигнала. Источник сигнала начинает посылать цифровой сигнал с цифровыми данными при получении тактового сигнала от получателя сигнала. В этом случае источник сигнала подстраивается под скорость работы получателя сигнала.

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

С этих статей википедии можно начать изучать этот сложный вопрос:
https://ru.wikipedia.org/wiki/Синхронизация_(передача_сигналов)
https://ru.wikipedia.org/wiki/Синхронный_способ_передачи_данных
https://en.wikipedia.org/wiki/Synchronous_serial_communication

Погрузиться глубже:
https://ru.wikipedia.org/wiki/Физическое_кодирование
https://en.wikipedia.org/wiki/Line_code

https://ru.wikipedia.org/wiki/Фазовая_автоподстройка_частоты
https://en.wikipedia.org/wiki/Phase-locked_loop

Существует еще так называемый «асинхронный режим» передачи цифрового сигнала или просто «асинхронная» передача цифрового сигнала. На самом деле, несмотря на то, что такая передача цифрового сигнала называется «асинхронной» (то есть «не синхронной»), при получении цифрового сигнала в получателе в этом случае всё равно требуется (и выполняется) синхронизация получателя и источника сигнала. Просто в случае асинхронной передачи цифровой сигнал с цифровыми данными идет кусками (пакетами, байтами и тому подобное), а между этими кусками есть промежутки, на которых канал остается пустым (без полезной нагрузки цифровыми данными). В итоге синхронизация нужна (и выполняется) только в момент приема получателем очередного куска цифрового сигнала с цифровыми данными, а в пустом промежутке между кусками сигнала с данными синхронизация не нужна (и не выполняется). То есть под словом «асинхронная» понимается не полное отсутствие синхронизации, а прерывистое выполнение синхронизации — она то выполняется, то не выполняется.

Статьи википедии по теме:
https://ru.wikipedia.org/wiki/Асинхронный_способ_передачи_данных
https://ru.wikipedia.org/wiki/Асинхронная_последовательная_коммуникация
https://en.wikipedia.org/wiki/Asynchronous_serial_communication
https://en.wikipedia.org/wiki/Asynchronous_communication

В википедии асинхронный режим передачи данных проиллюстрирован такой картинкой:


Из-за излишней компактности иллюстрации некоторые соседние надписи на этой иллюстрации сливаются и зритель с первого раза может воспринять некоторые соседние надписи на этой картинке за одну надпись, что может сильно затруднить понимание. На самом деле, на этой картинке только надпись «data bits» состоит из двух слов. Все остальные надписи — однословные.

Чтобы соседние надписи не сливались, я отделил их друг от друга цветом, кое-где добавил к линиям стрелки для понятности, и некоторые линии сделал пунктирными:


Понятия «mark» и «space», использующиеся в англоязычной литературе, посвященной передаче цифрового сигнала, по-русски означают «логическая единица» и «логический нуль» соответственно или для булевой алгебры — «true» («истина») и «false» («ложь»). В физическом смысле логическая единица может представляться, к примеру, высоким уровнем сигнала, а логический нуль — низким уровнем сигнала, или наоборот. В англоязычной википедии по этим понятиям есть статья «Mark and space». На рассматриваемом рисунке логическая единица («mark») показана высоким уровнем цифрового сигнала, а логический нуль («space») показан низким уровнем цифрового сигнала.

Как и описывалось выше при определении понятия «асинхронной» передачи цифрового сигнала, на рисунке есть промежутки, в течение которых канал заполнен данными, и промежутки, в течение которых канал не заполнен данными (последнее состояние на рисунке обозначено английским словом «idle», которое по-русски в данном случае значит «пустой» или «незанятый»). На рисунке таких незанятых промежутка два: перед стартовым битом первого байта и после стопового бита второго байта. Между двумя байтами, изображенными на рисунке, незанятого данными промежутка «idle» нет, но он может быть. Просто в данном случае байты переданы впритык друг к другу, но могли быть переданы и разделенными промежутком «idle».

На рисунке промежуток «idle» показан высоким уровнем сигнала, но в разных протоколах он может быть представлен как высоким уровнем сигнала, так и низким уровнем сигнала. Тут есть условие: стартовый бит всегда должен быть представлен уровнем сигнала, противоположным уровню промежутка «idle», а стоповый бит должен быть представлен уровнем сигнала, совпадающим с уровнем промежутка «idle». Очевидно, что стартовый и стоповый биты должны быть представлены противоположными уровнями сигнала.

Как работает асинхронный режим передачи цифрового сигнала? Каждый кусок (пакет, байт и тому подобное) данных может быть передан отдельно, отделяясь (или не отделяясь) друг от друга промежутками «idle» (канал не занят данными). При приеме очередного байта получателю сигнала нужно достичь синхронизма с источником сигнала, чтобы получить данные без ошибок. Для этого получателю сигнала необходимо знать момент начала входящего байта. Этот момент на обсуждаемом рисунке обозначен передним фронтом стартового бита («start»): в данном случае это переход из высокого уровня сигнала к низкому уровню сигнала. После передачи битов данных («data bits») обязательно нужно вернуть цифровой сигнал на уровень промежутка «idle», то есть в случае, показанном на обсуждаемом рисунке — на высокий уровень сигнала. Это нужно для того, чтобы было возможно отметить начало следующего байта передним фронтом стартового бита следующего байта. Возврат на уровень сигнала, соответствующий промежутку «idle», выполняется стоповым битом («stop»).

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

Как видно из рисунка, к каждому байту данных при асинхронной передаче необходимо добавлять два дополнительных бита: стартовый и стоповый. Такую передачу цифрового сигнала часто называют «старт-стопной» передачей данных. Очевидно, что эти дополнительные биты уменьшают скорость передачи данных по сравнению с синхронным режимом передачи данных, при котором все байты передаются впритык друг к другу, без дополнительного обозначения начала и конца байта с помощью стартового и стопового битов.

Скорость передачи данных при асинхронном режиме передачи меньше еще и из-за того, что между байтами могут вставляться промежутки «idle» (канал не занят данными), а при синхронном режиме передачи между передаваемыми данными нет никаких лишних промежутков.

Оба эти режима передачи данных сегодня используются. В англоязычной википедии есть хорошая небольшая статья, сравнивающая эти режимы:

https://en.wikipedia.org/wiki/Comparison_of_synchronous_and_asynchronous_signalling

Сериализация происходит от последовательности

Дошло, откуда взялось слово «сериализация» для обозначения соответствующего понятия в программировании:

https://ru.wikipedia.org/wiki/Сериализация
https://en.wikipedia.org/wiki/Serialization

Слово режет ухо, никогда не мог запомнить, что оно означает. Потому что калька с английского. А в словарях, к примеру, «serialize» — переводится как «сериализовать», «издавать сериями», «издавать выпусками»... «serial» — первое значение: «серийный», «порядковый»... Это картину не проясняло...

Только когда стал читать про последовательную передачу данных на английском, дошло...

https://en.wikipedia.org/wiki/Serial_communication

Для слова «сериализация» («serialization») ключевым является второе значение слова «serial» в словарях: «последовательный», «поочередный».

Сериализация — это преобразование некоего объекта в последовательность. Обычно имеется в виду последовательность байтов.

Переводчики не смогли найти однословный перевод на русский для английского слова «serialization» и создали кальку. Ради смеха можно попытаться сконструировать что-то более понятное, чем «сериализация». Например, «последовательнизация».

Amado Mio

Вот это исполнение! Чистый кайф:

https://www.youtube.com/watch?v=sCbzWiJLVhk
(длительность ролика — 5 минут 1 секунда)

Песня называется «Amado Mio» (в переводе с испанского «Любимый мой», но весь остальной текст — на английском) (википедия). Исполняет певица Storm Large (википедия) под аккомпанемент музыкальной группы-маленького оркестра «Pink Martini» (википедия).

За роялем — создатель группы (белобрысый очкарик) Том Лодердейл. Видеозапись выступления сделана 3 сентября 2011 года в городке Вудинвилл (на территории винодельни «Chateau Ste. Michelle»), в окрестностях города Сиэтла в США.

Певица — огонь, кошка, пантера. Зажигательные, извивающиеся движения — это, как я понимаю, косплей актрисы Риты Хейворт из фильма «Гильда» 1946 года:

https://www.youtube.com/watch?v=gUuda4mbRcA
(длительность ролика — 2 минуты 47 секунд)

В фильме эту песню исполняла певица Anita Ellis (Анита Эллис), а Рита Хейворт шевелила губами под фонограмму и зажигательно танцевала. В плане танцев и бомбической красоты с Ритой Хейворт мало кто может тягаться.

Певица Storm Large Рита Хейворт

Авторы песни — Дорис Фишер (Doris Fisher) и Аллан Робертс (Allan Roberts).

Анализ цифрового сигнала в получателе сигнала (пример)

Предыдущие посты:
1. Последовательная и параллельная передача данных.
2. Почему аналоговый сигнал так называется (на примере звука).
3. Непрерывность аналогового сигнала.
4. Что такое цифровой сигнал.
5. Прерывность цифрового сигнала.
6. Синхронизация при передаче цифрового сигнала.

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

В русской википедии есть две подходящих под это понятие статьи:
https://ru.wikipedia.org/wiki/Логический_вентиль
https://ru.wikipedia.org/wiki/Логические_элементы

На мой взгляд, «логический вентиль» (по-английски «logic gate») и «логический элемент» — это примерно одно и то же. Думаю, логические вентили — это самые простые логические элементы, на базе которых строятся более сложные логические элементы вроде триггеров.

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

Логические элементы делят на две группы: устройства комбинационной логики (по-английски «combinational logic») и устройства секвенциальной (последовательностной) логики (по-английски «sequential logic»):
https://ru.wikipedia.org/wiki/Комбинационная_логика
https://ru.wikipedia.org/wiki/Секвенциальная_логика

Разница между ними заключается в том, что устройства секвенциальной логики имеют память, то есть являются устройствами с обратной связью. Устройства комбинационной логики более просты и используются для конструирования устройств секвенциальной логики.

Для иллюстрации анализа входящего цифрового сигнала в получателе сигнала и извлечения (регистрации) цифровых данных из этого входящего цифрового сигнала я решил рассмотреть цифровое устройство, которое называется «регистром». Мне подумалось, что, судя по названию, оно и предназначено для регистрации цифрового сигнала (извлечения из него цифровых данных).

https://ru.wikipedia.org/wiki/Регистр_(цифровая_техника)
https://en.wikipedia.org/wiki/Hardware_register
https://en.wikipedia.org/wiki/Shift_register

Что собой представляет регистр? Это набор соединенных между собой триггеров. Что такое «триггер»? Это логический элемент секвенциальной логики, а проще говоря ячейка памяти, которая может хранить 1 бит информации (цифровых данных). Как может быть устроен регистр? Вариантов много. Ниже я нарисовал два варианта из множества возможных:


Рисунок 1

На рисунке 1 пунктирной линией изображены границы получателя сигнала. Сигнал приходит слева от источника сигнала, который находится за пределами рисунка. В границах получателя сигнала изображен регистр, состоящий из 8 триггеров, последовательно соединенных между собой (каждый триггер изображен отдельным квадратиком).

В регистре из варианта сверху сигнал проходит последовательно через все триггеры слева направо и выходит справа. Это сдвиговый регистр (по-английски «shift register») с последовательным вводом и последовательным выводом информации (по-английски «serial-in serial-out», сокращенно «SISO»).

В регистр из варианта снизу сигнал входит слева и проходит последовательно через все триггеры слева направо, разбиваясь на биты. А затем все 8 полученных битов одновременно выходят из регистра вверх. Это сдвиговый регистр с последовательным вводом и параллельным выводом (по-английски «serial-in parallel-out», сокращенно «SIPO»). Это удобно, потому что от источника данные обычно передаются на большое расстояние последовательно, а внутри получателя сигнала (компьютера) расстояния небольшие и здесь уже может использоваться параллельная передача данных между узлами компьютера.

В принципе, можно рассмотреть, как работает один триггер регистра. Остальные работают так же. В регистрах обычно используют вид триггера, который называется «D-триггер» (по-английски «D flip-flop»). Кстати, в английском языке для обозначения триггеров есть еще слово «latch» (по-русски «защелка»). «Latch» и «flip-flop» — это два разных вида триггеров (о разнице между ними можно узнать в статье о триггерах английской википедии, в этом посте я не буду в это углубляться).

https://ru.wikipedia.org/wiki/Триггер#D-триггеры
https://en.wikipedia.org/wiki/Flip-flop_(electronics)#D_flip-flop

Рассмотрим работу D-триггера на следующем рисунке. Для схематичных изображений логических элементов в русском языке используется термин «условное графическое обозначение», сокращенно «УГО». Русские и английские условные графические обозначения несколько различаются, но всегда можно разобраться, о чем идет речь, из контекста.


Рисунок 2

На этом рисунке показаны три условных графических обозначения, которые обозначают то же самое. Первый слева — английский вариант, второй и третий — русские. В наших УГО обычно принято входы рисовать слева, выходы — справа. Буква «T» в наших вариантах, как я понимаю, означает «триггер». В третьем варианте (если считать слева) просто опущены входы «R» и «S», так как их можно посчитать второстепенными и в некоторых случаях показывать их нет необходимости. Инвертирование сигнала можно обозначить и черточкой над буквой выхода (в английском варианте) и кружочком (в русском варианте). Буква «Q» означает «quit» (по-русски «выход»). Зачем в триггере два выхода — прямой и инверсный — я не в курсе, для простоты буду рассматривать только один из них (второй, очевидно, всегда будет выдавать сигнал, противоположный первому).

Триггер является энергозависимым типом памяти, то есть при выключении питания хранившийся в нем бит теряется. Неизвестно, какое значение окажется в триггере при включении питания. Для начальной установки триггера (сразу после включения питания) в нужное значение (0 или 1) и нужны входы «R» (означает «reset», по-русски «сбросить», то есть сбросить в значение 0) и «S» (означает «set», по-русски «установить», то есть установить в значение 1).

Итак, остались главные входы: «D» (означает «data», по-русски «данные», потому что на этот вход подается цифровой сигнал от источника сигнала) и «C» или «Clk» (означает «clock», по-русски дословно «часы», но в данном случае имеется в виду «clock signal», что по-русски значит «тактовый сигнал»).

https://ru.wikipedia.org/wiki/Тактовый_сигнал
https://en.wikipedia.org/wiki/Clock_signal

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


Рисунок 3

На рисунке 3 изображены графики двух цифровых сигналов, один под другим. Сверху изображен цифровой сигнал с цифровыми данными (двоичное число 101) от источника сигнала, снизу — тактовый сигнал. Вертикальную (уровень сигнала) и горизонтальную (время) оси графиков я не стал рисовать.

Вышеуказанный D-триггер срабатывает по переднему фронту (по-английски «rising edge») тактового сигнала. На рисунке 3 я обозначил передний фронт (переход от нижнего уровня сигнала к верхнему) тактового сигнала красным цветом. Задний фронт (переход от верхнего уровня сигнала к нижнему) тактового сигнала я обозначил зеленым цветом.

Как только на вход «C» триггера приходит передний фронт тактового сигнала, триггер берет образец цифрового сигнала с данными на входе «D» и сохраняет его в себе, то есть до следующего срабатывания (следующего взятия образца сигнала с данными по команде тактового сигнала) триггера на выходе «Q» триггера будет выдаваться полученный (и сохраненный) образец сигнала.

Таблица с входящими и исходящими значениями («таблица истинности») для описанного случая:

CDQновый
Передний фронт00
Передний фронт11
Другой участок тактового сигналабез разницыQсохраненный

То, что наш D-триггер срабатывает именно по переднему фронту тактового сигнала, на его УГО (см. рисунок 2) изображено короткой косой линией, перечеркивающей место входа «C».

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

Борис Грачевский всё

Оказывается, вчера умер Борис Грачевский. На 72-м году жизни.

Ээээх... ушла эпоха. Земля пухом.

https://music.yandex.ru/album/3466409
(Песня «Мальчишки и девчонки, а также их родители...» в исполнении Елены Камбуровой, музыку написал Алексей Рыбников, автор стихов — Александр Хмелик)



Официальный youtube-канал киножурнала «Ералаш»:
https://www.youtube.com/channel/UC0u6gAESA0XmSJQaAyDTTVg

Синхронизация при передаче цифрового сигнала

Предыдущие посты:
1. Последовательная и параллельная передача данных.
2. Почему аналоговый сигнал так называется (на примере звука).
3. Непрерывность аналогового сигнала.
4. Что такое цифровой сигнал.
5. Прерывность цифрового сигнала.

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

В предыдущем посте (тут) я рассмотрел, почему цифровой сигнал называют прерывным (дискретным по времени и квантованным по уровню).

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


Рисунок 1

Таким образом, получатель сигнала может проверять значение (уровень) пришедшего от источника цифрового сигнала только в определенные моменты времени, через одинаковые промежутки.


Рисунок 2

На рисунке 2 изображены три последовательных состояния нашей системы через некие равные промежутки времени. Источник сигнала передал (слева направо) по каналу связи получателю цифровой сигнал, несущий двоичное число 101. Этот сигнал с течением времени постепенно движется к получателю. Естественно, он движется не прерывисто, рывками на длину бита, а плавно, непрерывно, так как цифровой сигнал переносится электрическим сигналом, который по своей природе является непрерывным. Красная стрелка указывает место, в котором получатель сигнала прерывно, через равные промежутки (интервалы) времени, анализирует приходящий от источника сигнал.

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

1) В какой момент времени начать анализировать пришедший цифровой сигнал, то есть время получения начала пришедшего цифрового сигнала. Ведь, если получатель сигнала начнет анализировать канал связи раньше прихода цифрового сигнала, то, к примеру, в случае на рисунке 2 он будет попадать на низкий уровень сигнала и регистрировать нули. Таким образом, вместо двоичного числа 101 он получит это число со множеством нулей перед ним. В принципе, точно также получателю необходимо знать, в какой момент времени пришедший цифровой сигнал заканчивается, иначе, к примеру, в случае на рисунке 2 он зарегистрирует после двоичного числа 101 еще кучу нулей. В итоге, не зная момента начала и момента окончания цифрового сигнала, получатель вместо двоичного числа 101 может получить что-то вроде ...0000010100000... (здесь многоточие обозначает любое количество нулей).

2) Протяженность промежутка (интервала) времени, через который в пришедшем цифровом сигнале размещены соседние биты. Предположим, получатель сигнала анализирует (берет образец) приходящий от источника цифровой сигнал быстрее, чем источник выдавал в канал связи биты этого сигнала. Предполжим, быстрее в 2 раза. В этом случае получатель сигнала может получить каждый отправленный источником бит дважды и в результате может получить двоичное число 110011 вместо 101. Предположим, получатель сигнала анализирует (берет образец) приходящий от источника цифровой сигнал медленнее, чем источник выдавал в канал связи биты этого сигнала. Предположим, медленнее в 2 раза. Тогда получатель сигнала может пропустить некоторые биты переданного источником цифрового сигнала и, к примеру, вместо двоичного числа 101 получить двоичное число 01 (пропущен старший бит). См. рисунок 3.


Рисунок 3

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

Процесс подстройки работы получателя цифрового сигнала под перечисленные выше два обстоятельства и называется синхронизацией получателя цифрового сигнала с источником цифрового сигнала при передаче этого цифрового сигнала.