Децентрализованный приоритетный арбитраж рассмотрим на примере интерфейса Multibus, в котором он впервые был реализован. В этом интерфейсе имеется 5 линий арбитрации. Каждый модуль имеет свой 5-битный приоритет. Все модули, желающие занять магистраль, выставляют на линии арбитрации свои приоритеты. Результирующий приоритет на линиях определяется по принципу логического или всех приоритетов, т.е., если хоть у одного из модулей, выставивших приоритеты на линии арбитрации, в соответствующем бите будет единица, то на этой линии будет единица.
Сравнение приоритетов идет побитно, начиная со старшего. Если модуль обнаруживает, что в текущем сравниваемом бите его приоритет меньше, чем приоритет на линиях арбитрации, он снимает свой приоритет. Таким образом, после сравнения всех битов приоритетов останется только один модуль.
На рисунки приведен пример такой арбитрации для случая 4 линий арбитрации. На первом этапе три модуля выставили свои приоритеты. Они сравнивают старшие биты (1 слева). Поскольку все модули имеют приоритет совпадающий с приоритетом на линиях арбитрации, ни один из модулей не снимает свой приоритет.
Далее идет сравнение вторых по старшинству бит. Второй модуль обнаруживает, что его второй бит меньше, чем биты, установленные на линиях арбитрации и, начиная со следующего бита в арбитрации не участвует.
При сравнении третьих бит ни один из модулей не снимается с арбитража. После сравнения 4 бита остается только первый модуль, который и занимает магистраль.
1 модуль |
0101 |
0101 |
0101 |
0101 |
2 модуль |
0011 |
0011 |
– |
– |
3 модуль |
0100 |
0100 |
0100 |
– |
Состояние линий арбитрации |
0111 |
0111 |
0101 |
0101 |
Современные интерфейсы строятся обычно по иерархическому принципу. Задача арбитража в этом случае переноситься на коммутирующие элементы, которые должны решить вопрос, с какой линии связи передавать данные. Речь в этом случае следует вести не просто о передаче данных, а о передаче пакетов, которые могут коммутироваться в узлах.
Методы определения порядка передачи пакетов в узлах интерфейсов более подробно рассматриваются при изучении сетевых технологий. В рамках данного курса приведем лишь пример арбитража пакетов, реализованного в интерфейсе SCI.
На рисунке слева показан узел интерфейса SCI. Этот интерфейс построен по кольцевому принципу. У него есть входной и выходной каналы. Арбитраж осуществляется элементом «ключ», который решает, пропускать ли проходящие пакеты из проходного буфера или передавать пакеты, отправляемые самим узлом через выходной буфер.
Решение ключ принимает исходя из приоритетов пакетов. Пакеты могут иметь четыре уровня приоритетов, как показано на рисунке справа. Пакетам с наибольшим приоритетом отдается большая часть пропускной способности канала. Оставшаяся часть пропускной способности канала равномерно распределяется между всеми остальными пакетами независимо от их приоритета.
Для некоторых интерфейсов актуальна следующая проблема. Если начал передаваться пакет, то он передается полностью, даже если в очереди появились более приоритетные пакеты. Передача пакетов может занимать много времени. Например, в Ethernet’е пакет может быть размером 1500 байт, и при скорости 10 Мбит/с передаваться более 1 мс. Задержка в передаче пакетов в таких интерфейсах может быть большой.
В некоторых интерфейсах, для которых малая задержка в передаче пакетов очень важна применяют прерывание передачи данных. Рассмотрим, как это делается, на примере интерфейса HyperTransport. Этот интерфейс применяется для соединения процессоров между собой и с чипсетом компьютера, поэтому низкая задержка для него очень важна.
На рисунке показано, как происходит прерывание передачи данных. В терминах данного интерфейса это называется priority request interleaving. На 1 этапе идет передача длинного пакета от устройства «B» к центральному процессору (CPU). Далее устройству «А» необходимо передать короткий, но приоритетный пакет, который запрашивает передачу данных от центрального процессора. Этот пакет вставляется в пакет, передаваемый от устройства «B». Благодаря этому начинается передача второго пакета по другой линии связи к устройству «A» до окончания передачи первого пакета. Тем самым достигается низкая задержка при передаче данных в этом интерфейсе.
В ряде интерфейсов встречаются решения, управляющие скоростью и порядком передачи данных.
В некоторых случаях передача данных с максимально возможной для линии связи скоростью не всегда оказывается наилучшим решением. Приемник, передатчик или узел в иерархическом или кольцевом интерфейсах могут не справляться с такой скоростью. В этом случае целесообразно использовать передачу с меньшей скоростью.
Порядок передачи данных нужно определять с целью обеспечения передачи данных в нужный момент времени с нужной скоростью. Эта задача управления потоком перекликается с арбитрацией.
Рассмотрим некоторые из таких решений.
Наиболее простой метод управления скоростью потока реализован в интерфейсе RS232. В нем имеется 2 способа: программное и аппаратное управление потоком.
На рисунке приведен пример аппаратного управления. Для этой цели используется специальный сигнал (CTS). Если приемник не успевает принимать данные, он выставляет этот сигнал. На время, пока выставлен сигнал, передатчик прекращает передачу информации.
На следующем рисунке приведен пример программного управления потоком. Отличие состоит в том, что для передачи сигнала о необходимости приостановить передачу используются не специальные линии связи, а линии связи по которым передаются обычные данные. Сигнал передается специальными кодовыми комбинациями: XOFF – приостановить поток, XON – возобновить поток.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.