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

в начало

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

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

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

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

· состояние холостого хода (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) и все временные па­раметры шины измеряются количеством импульсов и величиной периода их следования (τ).

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

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