Алгоритмы протоколов передачи данных

1. Алгоритмы протоколов передачи данных

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

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

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

Шина может находиться в двух главных состояниях:

- состояние холостого хода (Idle State), когда шина свободна и по ней нет передачи информации;

- активное состояние, когда шина занята текущим задатчиком, и идет процесс передачи данных между ним и соответствующим исполнителем.

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

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

Состояние холостого хода и активное состояние задают определенным набором управляющих сигналов или определенным физическим состоянием линии передачи данных.

Процесс передачи информации на шине состоит из двух основных этапов: этап захвата шины и этап передачи информации от источника к приемнику.

На первом этапе задатчик должен захватить шину. Алгоритм захвата состоит из следующих шагов:

1. Задатчик подает запрос арбитру на захват шины.

2. Арбитр через определенное время (задержка арбитрации tзарб), которое в основном зависит от уровня приоритета задатчика, выдает задатчику разрешение на захват шины.

3. Задатчик, получив разрешение, через время tЗШ, захватывает шину в момент, когда текущий задатчик освобождает шину, и она переходит в состояние холостого хода.

На втором этапе идет собственно передача информации под управлением задатчика, т.е. на этом этапе задается вид команды и способ ее выполнения.

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

Алгоритм передачи при программном вводе/выводе включает в себя выполнение следующих шагов:

1. Задатчик в начале передачи данных выставляет специальный сигнал занятости шины.

2. Задатчик устанавливает адрес исполнителя.

3. Задатчик устанавливает код (сигнал) соответствующей команды.

4. Когда задатчик и исполнитель готовы, начинается передача данных, передача идет слово за словом. В параллельном интерфейсе разряды слова передаются параллельно, в последовательном – разряд за разрядом.

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

Алгоритм передачи при режиме прерываний отличается тем, что инициатором процесса ввода/вывода является исполнитель (периферийное устройство). Причем задатчик может работать сразу с несколькими ПУ. Если задатчик получил одновременно несколько запросов от разных ПУ, то он проводит селекцию и идентификацию устройства с наибольшим приоритетом и начинает работать с ним по вышеописанному алгоритму. Т.е. предварительно задатчик по требованию исполнителей выполняет шаг селекции и идентификации (см. §1.7), а затем уже переходит к процессу передачи данных в соответствии с вышеизложенным алгоритмом.

Первый и второй этапы имеют определенные протоколы их реализации.

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

На рис. 1.20 показан протокол захвата шины задатчиком В при условии, что на шине уже работает текущий задатчик А. В момент t1 задатчик В подает арбитру запрос на захват шины. Арбитр сбрасывает разрешение для задатчика А и устанавливает в момент t2 разрешение для задатчика В. В момент t3 задатчик А освобождает шину, и она переходит в состояние холостого хода, после чего задатчик В захватывает шину и начинает передачу информации.

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

На рисунке 1.21 показан протокол этапа селекции и идентификации при вводе/выводе в режиме прерываний. Он выполняется стандартной микросхемой 8259А программируемого контроллера прерываний фирмы Intel.

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

Микропроцессор разрешает процедуру ввода/вывода в режиме прерываний выдав сигнал разрешения INTA на контроллер прерываний. Сигнал INTA двойной.

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

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

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

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

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

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

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

Совокупность фаз или пакетов одной команды часто называют транзакцией.


Протокол параллельных интерфейсов

2. Протокол параллельных интерфейсов

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

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

На рис. 1.22 приведены протоколы записи и чтения для трехшинной архитектуры при синхронной передаче данных. Задатчик выставляет адрес на ША, с помощью строба адреса АЕ исполнитель читает адрес, после чего задатчик выставляет сигнал [image] (при записи) и [image] (при чтении). По заднему фронту этих сигналов данные передаются в соответствующие регистры задатчика (РДЗа) или исполнителя (РДИс). Сигналы [image] и [image] имеют двоякое назначение: они указывают тип команды (запись или чтение) и являются стробом при передаче данных.

При синхронной передаче данных времена tЗП и tЧТ строго фиксированы и приемник должен считать данные за это время.

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

На рис. 1.23 приводится протокол записи и чтения для синхронной передачи данных, но при двухшинной архитектуре, когда шина АД мультиплексируется во времени. В этом случае tЗП и tЧТ также строго фиксированы, но длительность циклов (TЗП, TЧТ) больше, чем при трехшинной архитектуре.

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

Здесь время tЗП (tЧТ) зависит от типа ресурса, с которым работает задатчик (оперативная память, регистры ввода/вывода, тип ПУ и т.п.).


Протоколы последовательных интерфейсов

3. Протоколы последовательных интерфейсов

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

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

Последовательный интерфейс, как правило, соединяет главный контроллер (хост-контроллер) или просто контроллер системного блока компьютера с контроллером или адаптером периферийного устройства. Главный контроллер или просто контроллер взаимодействует с центральным процессором посредством интерфейса ввода/вывода (шина расширения, например, PCI) (см. §3.2, рис. 1.4).

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

Канальный уровень реализует протокол передачи данных между главным контроллером и ПУ. В общем случае между задатчиком и исполнителем.

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

Физический уровень представляет аппаратные и программные средства подключения ПУ к главному контроллеру или просто контроллеру, который находится в системном блоке компьютера через соответствующие порты ввода/вывода.

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

В данном параграфе рассматриваются протоколы канального уровня, принципы их построения и функционирования.

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

Тип протокола (асинхронный, синхронный) определяется по принципу синхронизации байта (символа) и блока. Асинхронный протокол: асинхронная передача байт (символов) и синхронный байт в байте. Синхронный протокол: синхронная передача байт, асинхронный – блоков.

Асинхронные протоколы представляют собой наиболее старый способ связи типа «точка-точка». Эти протоколы оперируют не с блоками, а с отдельными символами, которые представлены байтами и старт-стопными битами. Примером асинхронного последовательного интерфейса может служить интерфейс RS-232C. По таким интерфейсам подключаются низкоскоростные ПУ.

Такой режим работы называют асинхронным или старт-стопным.

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

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

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

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

Синхронные протоколы канального уровня бывают двух типов: символьно-ориентированные (байт-ориентированные) и бит-ориентированные.

Для обоих используются одни и те же методы синхронизации бит. Главное различие заключаются в методе синхронизации символов и блоков.

Символьно-ориентированный протокол использует для синхронизации специальные служебные символы. Символ SYN передатчик добавляет перед каждым блоком данных, а затем для обозначения начала и конца данных вставляет символ STX (Start of Text) и ЕТХ (End of Text) соответственно.

Этот способ неудобен тем, что требует добавление много избыточных данных для реализации синхронизации.

В настоящее время наиболее широко используются бит-ориентированные протоколы, которые являются более универсальными.

В этом случае (см. рис. 1.25) при не занятом канале по нему не передается никаких символов.

Перед началом передачи кадра передатчик начинает передавать последовательность бит (101010...10) для того, чтобы приемник вошел в битовую синхронизацию. Эту последовательность называют преамбулой. Войдя в битовую синхронизацию приемник исследует входной поток на побитовой основе, пока не обнаружит байт начала кадра (10101011). За этим байтом следует заголовок кадра, затем идут поле данных и концевик. В качестве концевика используется либо специальный байт, либо определенное физическое состояние линии передачи данных

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

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

Дейтаграммный метод работает быстро, но он не гарантирует доставки пакета.

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

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

Протокол дейтаграммного типа поддерживает только один тип кадра – информационный. Протокол с установлением соединений должен поддерживать несколько типов кадров (пакетов) – служебные и информационные.


Принципы взаимодействия шин расширения и интерфейсов периферийных устройств

4. Принципы взаимодействия шин расширения и интерфейсов периферийных устройств

При передаче информации между ПУ и ЦПр данные проходят по двум интерфейсам: внутреннему (шина расширения, например, PCI) и внешнему (интерфейс периферийных устройств, например Centronics, USB) (см. рис. 1.27).

Взаимодействие этих интерфейсов происходит с помощью специальных сигналов, флагов ввода (IBF) и вывода ( [image] ). На рис. 1.28 показаны протоколы взаимодействия при выполнении операций записи и чтения для параллельных интерфейсов.

При чтении (см. рис. 1.28а) ПУ выставляет данные на шину данных внешнего интерфейса (ДПУ), сопровождая их сигналом стробирования ( [image] ). По фронту этого сигнала данные считываются в регистр контроллера ввода/вывода (ДПорт), а в соответствующем разряде регистра состояния контроллера флаг IBF устанавливается в активное состояние. Центральный процессор проверяет состояние этого флага и при установлении его в «1» выдает сигнал чтения [image] на линиях управления внутреннего интерфейса. По этому сигналу данные попадают на шину данных этого интерфейса и считываются процессором.

При записи (см. рис. 1.28б) процессор выставляет данные на шину данных (ШД) внутреннего интерфейса и подает сигнал записи [image] по линии управления. Фронтом этого сигнала данные записываются в регистр контроллера ввода/вывода, одновременно в соответствующем разряде регистра состояния контроллера устанавливается флаг вывода [image] . ПУ, обнаружив активное состояние [image] , считывает данные из регистра контроллера по шине данных внешнего интерфейса (ДПУ), после чего выдает на контроллер сигнал обратной связи [image] , который говорит о том, что передача данных закончена.

Таким образом, ЦПр и ПУ взаимодействуют между собой с помощью своих интерфейсов, используя флаги ввода IBF и вывода [image] , которые говорят о наличие данных в регистре данных контроллера.