Контроллер межпроцессорного канала обмена данными второго поколения (IPCC2)

Полезная модель относится к вычислительной технике и может быть использована для обеспечения обмена данными между процессорами в многопроцессорных архитектурах на базе процессоров Эльбрус.
Известно «Устройство для ввода-вывода информации» [а.с. СССР №1615694 A, G06F 3/00, 23.12.1990], содержащее мультиплексор, приемный регистр, три элемента ИЛИ, регистры адресов ввода и вывода, блок мажоритарных элементов, блок памяти, информационную шину, канал обмена с ЦВМ и блок приемопередатчиков.
Недостатком является то, что оно использует отдельные линии связи для каждого внешнего устройства, что усложняет как само устройство, так и канал обмена, а также временная синхронизация обмена может осуществляться только за счет внутренних программных таймеров управляющей ЭВМ, что в ряде случаев не обеспечивает требуемую точность синхронизации.
Наиболее близким к заявляемому является «Устройство для сопряжения периферийных устройств с эвм-персональным компьютером» [РФ №2183851 C1, G06F 13/24, 27.09.2007], содержащее блок приемопередатчиков, устройство управления, транслятор прерывания и мультиплексор, отличающееся тем, что в него введены генератор тактов, таймер ожидания и блок управления общей шиной, причем входы Сброс, магистраль Адреса, Строб Адреса, Ввод и Вывод устройства управления являются одноименными входами устройства для подключения к соответствующим выходам шины персонального компьютера, выходы Готов и Укороченный Цикл устройства управления являются одноименными выходами устройства для подключения к соответствующим входам шины персонального компьютера, выходы Управление 1 - Управление 8 устройства управления соединены с соответствующими входами мультиплексора, выход Сброс Программный которого подключен к одноименному входу устройства управления, которое соединено с мультиплексором также магистралью Слова Состояния, выходы Управляющий Сигнал 1 - Управляющий Сигнал 6, Рабочий Такт 1 - Рабочий Такт 12 и Сброс устройства управления подключены к одноименным входам блока управления общей шиной, выходы Синхронизация Активного, Вывод, Ввод, Внешнее Устройство, Байт и Сброс которого являются соответствующими выходами устройства для подключения к одноименным входам общей шины периферийных устройств, вход Синхронизация Пассивного устройства управления является соответствующим входом устройства для подключения к одноименному выходу общей шины периферийных устройств, выход Чтение/Запись устройства управления соединен с соответствующим входом блока приемопередатчиков, один вход/выход которого магистралью Адреса-Данных подключен к мультиплексору, а другой является входом/выходом магистрали Адреса-Данных устройства для подключения к общей шине периферийных устройств, вход/выход магистрали Данных мультиплексора является соответствующим входом/выходом устройства для подключения к шине персонального компьютера, вход Стоп Таймер устройства управления соединен с выходом таймера ожидания, вход которого подключен к выходу Старт Таймер генератора тактов, вход Тактовые Импульсы которого является одноименным входом устройства для подключения к соответствующему выходу шины персонального компьютера, выходы Такт 1 - Такт 12 генератора тактов соединены с соответствующими входами устройства управления, выходы Старт Начала, Старт Конца и Сброс которого подключены к одноименным входам генератора тактов, выходы Окончание Прерывания и Прерывание по Таймеру устройства управления соединены с одноименными входами транслятора прерывания, выход Предоставление Прерывания и вход Требование Прерывания которого являются одноименными соответственно выходом и входом устройства для подключения к общей шине периферийных устройств, выход Прерывание Аппаратное транслятора прерываний является выходом Прерывание Аппаратное устройства для подключения к соответствующему входу шины персонального компьютера, при этом мультиплексор состоит из регистра адреса, регистра слова состояния и регистра данных, причем магистральный вход регистра адреса, первые магистральные входы и выходы регистра слова состояния и регистра данных объединены и являются входом/выходом магистрали Данных мультиплексора, магистральный выход регистра адреса и вторые магистральные вход и выход регистра данных объединены и являются входом/выходом магистрали Адреса-Данных мультиплексора, вторые магистральные вход и выход регистра слова состояния объединены и являются входом/выходом магистрали Слова Состояния мультиплексора, вход управления записью и вход управления считыванием регистра адреса являются входами соответственно Управление 1 и Управление 2 мультиплексора, входы управления записью, считыванием и выбором первого/второго направления регистра слова состояния и регистра данных являются соответственно входами Управление 3 - Управление 5 и Управление 6 - Управление 8 мультиплексора, причем выход выделенного для программного сброса разряда регистра слова состояния первого направления является выходом Сброс Программный мультиплексора.
Недостатком данного устройства является отсутствие возможности использования его для обмена данными между процессорами в многопроцессорной архитектуре с общей памятью на базе процессоров Эльбрус.
Техническим результатом является расширение функциональных возможностей за счет обеспечения обмена данными между процессорами в многопроцессорных архитектурах на базе процессоров Эльбрус.
Технический результат достигается тем, что в «Контроллер межпроцессорного канала обмена данными второго поколения», содержащий мультиплексор, дополнительно введены блок буферов передатчиков, блок формирования контейнеров, два пересинхронизационных буфера, блок повторов пакетов, блок управления потоком данных передатчика, блок управления потоком данных приемника, блок контроля ошибок, блок управления состоянием линка, блок буферов приемников, блок разборки контейнера, второй вход которого соединен с выходом второго пересинхронизационного буфера, вход которого соединен с входом интерфейса к физическому уровню контроллера, двухсторонний вход-выход интерфейса связи с автоматом контроля состояния линка которого соединен с двухсторонним входом-выходом блока управления состоянием линка, выход которого соединен с первым входом блока разборки контейнера, первый выход которого соединен с входом блока управления потоком данных передатчика, третий выход которого соединен с объединенными третьим входом блока формирования контейнеров, вторым входом блока повторов пакетов, первым входом блока контроля ошибок и входом блока управления состоянием линка, двухсторонний вход-выход блока управления состоянием линка соединен с двухсторонним входом-выходом блока контроля ошибок, второй вход которого соединен с вторым выходом блока разборки контейнера, с третьего по восьмой выходы которого соединены соответственно с первого по шестой входами блока буферов приемников, первый выход которого соединен с входом блока управления потоком данных приемника, двухсторонний вход-выход которого соединен с двухсторонним входом-выходом блока управления потоком данных передатчика, первый выход которого соединен с входом блока буферов передатчиков, с первого по пятый выходы которого соединены соответственно с четвертого по восьмой входами блока формирования контейнеров, выход которого соединен с первым входом мультиплексора и первым входом блока повторов пакетов, выход которого соединен с вторым входом мультиплексора, выход которого соединен с входом первого пересинхронизационного буфера, выход которого соединен с выходом интерфейса от физического уровня контроллера, вход веса виртуальных каналов которого соединен с первым входом блока формирования контейнеров, второй вход которого соединен с вторым выходом блока управления потоком данных передатчика, с первого по шестой двухсторонние входы-выходы блока буферов передатчиков соединены соответственно с первого по шестой двухсторонними входами-выходами интерфейса виртуального канала, поступающими от процессора контроллера, с первого по шестой двухсторонние входы-выходы которого соединены с первого по шестой двухсторонними входами-выходами интерфейса виртуального канала, поступающими в процессор блока буферов приемников, второй выход которого соединен с выходом интерфейса виртуального канала, поступающим в процессор контроллера, причем блок буферов передатчиков содержит шесть буферов передатчика виртуального канала, с первого по шестой двухсторонние входы-выходы блока буферов передатчиков соединены с двухсторонними входами-выходами соответственно с первого по шестой буферов передатчика виртуального канала, выходы первого и второго буферов передатчика виртуального канала объединены и соединены с первым выходом блока буферов передатчиков, с второго по пятый выходы которого соединены с выходами соответственно с третьего по шестой буферов передатчика виртуального канала, причем блок буферов приемников содержит семь буферов приемника виртуального канала, с первого по седьмой двухсторонние входы-выходы блока буферов приемников соединены с двухсторонними входами-выходами соответственно с первого по седьмой буферов приемника соответствующего виртуального канала, входы шестого и седьмого буферов приемника виртуального канала объединены и соединены с пятым входом блока буферов приемников, с первого по четвертый входы которого соединены соответственно с входами с первого по четвертый буферов приемника виртуального канала, вход седьмого приемника виртуального канала соединен с шестым входом блока буферов приемников, причем блок разборки контейнера содержит блок декодирования пакетов и их сортировки и блок проверки целостности контейнера, первый вход которого соединен с первым входом блока декодирования пакетов и их сортировки и первым входом блока разборки контейнера, второй вход которого соединен с вторым входом блока проверки целостности контейнера, выход которого соединен с вторым входом блока декодирования пакетов и их сортировки, с первого по шестой выходы которого соединены с одноименными выходами блока разборки контейнера.
На фиг. 1 представлена блок-схема контроллера.
На фиг. 2 представлена схема блока буферов передатчиков.
На фиг. 3 представлена схема блока буферов приемников.
На фиг. 4 представлена схема блока разборки контейнера.
Контроллер (фиг. 1) содержит блок буферов передатчиков 1, блок формирования контейнеров 2, мультиплексор 3, два пересинхронизационный буфера 4, 12, блок повторов пакетов 5, блок управления потоком данных передатчика 6, блок управления потоком данных приемника 7, блок контроля ошибок 8, блок управления состоянием линка 9, блок буферов приемников 10, блок разборки контейнера 11.
Блок буферов передатчиков 1 (фиг. 2) содержит шесть буферов передатчика виртуального канала 13.0, 13.1, …, 13.5.
Блок буферов приемников 10 (фиг. 3) содержит семь буферов приемника соответствующего виртуального канала 14.0, 14.1, …, 14.6.
Блок разборки контейнера 11 (фиг. 4) содержит блок декодирования пакетов и их сортировки 15 и блок проверки целостности контейнера 16.
Контроллер (фиг. 1, …, фиг. 4) содержит блок буферов передатчиков 1, блок формирования контейнеров 2, мультиплексор 3, два пересинхронизационных буфера 4, 12, блок повторов пакетов 5, блок управления потоком данных передатчика 6, блок управления потоком данных приемника 7, блок контроля ошибок 8, блок управления состоянием линка 9, блок буферов приемников 10, блок разборки контейнера 11, второй вход которого соединен с выходом второго пересинхронизационного буфера 12, вход которого соединен с входом интерфейса к физическому уровню контроллера, двухсторонний вход-выход интерфейса связи с автоматом контроля состояния линка которого соединен с двухсторонним входом-выходом блока управления состоянием линка 9, выход которого соединен с первым входом блока разборки контейнера 11, первый выход которого соединен с входом блока управления потоком данных передатчика 6, третий выход которого соединен с объединенными третьим входом блока формирования контейнеров 2, вторым входом блока повторов пакетов 5, первым входом блока контроля ошибок 8 и входом блока управления состоянием линка 9, двухсторонний вход-выход блока управления состоянием линка 9 соединен с двухсторонним входом-выходом блока контроля ошибок 8, второй вход которого соединен с вторым выходом блока разборки контейнера 11, с третьего по восьмой выходы которого соединены соответственно с первого по шестой входами блока буферов приемников 10, первый выход которого соединен с входом блока управления потоком данных приемника 7, двухсторонний вход-выход которого соединен с двухсторонним входом-выходом блока управления потоком данных передатчика 6, первый выход которого соединен с входом блока буферов передатчиков 1, с первого по пятый выходы которого соединены соответственно с четвертого по восьмой входами блока формирования контейнеров 2, выход которого соединен с первым входом мультиплексора 3 и первым входом блока повторов пакетов 5, выход которого соединен с вторым входом мультиплексора 3, выход которого соединен с входом первого пересинхронизационного буфера 4, выход которого соединен с выходом интерфейса от физического уровня контроллера, вход веса виртуальных каналов которого соединен с первым входом блока формирования контейнеров 2, второй вход которого соединен с вторым выходом блока управления потоком данных передатчика 6, с первого по шестой двухсторонние входы-выходы блока буферов передатчиков 1 соединены соответственно с первого по шестой двухсторонними входами-выходами интерфейса виртуального канала, поступающими от процессора контроллера, с первого по шестой двухсторонние входы-выходы которого соединены с первого по шестой двухсторонними входами-выходами интерфейса виртуального канала, поступающими в процессор блока буферов приемников 10, второй выход которого соединен с выходом интерфейса виртуального канала, поступающим в процессор контроллера, причем блок буферов передатчиков 1 содержит шесть буферов передатчика виртуального канала 13.0, 13.1, …, 13.5, с первого по шестой двухсторонние входы-выходы блока буферов передатчиков 1 соединены с двухсторонними входами-выходами соответственно с первого по шестой буферов передатчика виртуального канала 13.0, 13.1, …, 13.5, выходы первого 13.0 и второго 13.1 буферов передатчика виртуального канала объединены и соединены с первым выходом блока буферов передатчиков 1, с второго по пятый выходы которого соединены с выходами соответственно с третьего по шестой 13.2, …, 13.5 буферов передатчика виртуального канала, причем блок буферов приемников 10 содержит семь буферов приемника виртуального канала 14.0, 14.1, …, 14.6, с первого по седьмой двухсторонние входы-выходы блока буферов приемников 10 соединены с двухсторонними входами-выходами соответственно с первого по седьмой буферов приемника соответствующего виртуального канала 14.0, 14.1, …, 14.6, входы шестого 14.4 и седьмого 14.5 буферов приемника виртуального канала объединены и соединены с пятым входом блока буферов приемников 10, с первого по четвертый входы которого соединены соответственно с входами с первого 14.0 по четвертый 14.3 буферов приемника виртуального канала, вход седьмого 14.7 приемника виртуального канала соединен с шестым входом блока буферов приемников 10, причем блок разборки контейнера 11 содержит блок декодирования пакетов и их сортировки 15 и блок проверки целостности контейнера 16, первый вход которого соединен с первым входом блока декодирования пакетов и их сортировки 15 и первым входом блока разборки контейнера 11, второй вход которого соединен с вторым входом блока проверки целостности контейнера 16, выход которого соединен с вторым входом блока декодирования пакетов и их сортировки 15, с первого по шестой выходы которого соединены с одноименными выходами блока разборки контейнера 11.
Контроллер межпроцессорного канала обмена данными второго поколения (IPCC2) (фиг. 1) работает следующим образом.
Контроллер решает задачу по организации многопроцессорных архитектур с общей памятью на базе процессоров Elbrus 2S. Функции Контроллера логически разделены на два уровня: канальный уровень (DLL - Data Link Layer) и физический уровень (PhL - Physical Layer). Каждому уровню соответствует свой логический блок.
Обмен по линку осуществляется транспортными пакетами (контейнерами) фиксированного размера. Возможны четыре размера: 16, 32, 48 и 80 байт. Контейнер содержит следующие поля: тип, номер в последовательности, данные и контрольная сумма (CRC). Система нумерации единая для всех типов контейнеров. Номер и контрольная сумма используются приемником для контроля целостности принимаемых данных. Протокол использует механизм группового подтверждения принятия контейнеров. В случае сбоя на линке инициируется процесс повтора последовательности контейнеров с соответствующего номера. Повтора не может быть по причине нехватки ресурсов у приемника: это гарантируется использованием кредитного механизма управления потоком (FC - Flow Control). Каждый контейнер может содержать несколько пакетов протокола когерентности, которые упаковываются в контейнеры по специальным правилам в целях обеспечения приоритета и максимизации пропускной способности линка. Пакеты протокола когерентности распределены между несколькими виртуальными каналами или потоками (VC - Virtual Channels) с разными приоритетами. Для передачи информации об освобождении ресурсов приемника в механизме FC, используются служебные пакеты.
Для обеспечения контроля целостности данных при передаче по линку, используется механизм нумерации контейнеров в последовательности и CRC-кодирование. В служебных полях Header и Tail содержатся: 8-разрядный номер контейнера и 12-разрядный код CRC. Каждому контейнеру присваивается 8-разрядный номер в последовательности CNum. Нумерация начинается с нулевого значения. При этом номера соседних в последовательности контейнеров могут отличаться больше чем на единицу.
В начале тракта по передаче расположен блок буферов передатчиков 1. Функцией блока буферов передатчиков 1 является обеспечение работы системных интерфейсов по принятию пакетов от виртуальных каналов, их буферизация и выдача в блок формирования контейнеров 2.
Блок формирования контейнеров 2 является центральным элементом тракта по передаче и включает схему весового арбитра для обеспечения большей гибкости и сбалансированности при прохождении пакетов разных потоков по линку, логику выбора оптимального типа контейнера и варианта упаковки пакетов, а также логику вычисления номера контейнера CNum и кода CRC и выполняет функцию сборки контейнера из нескольких пакетов от различных виртуальных каналов.
Центральным элементом тракта по приему контейнеров является блок разборки контейнера 11. В нем происходит прием, контроль целостности и разупаковка приходящих контейнеров. Далее пакеты попадают в блок буферов приемников 10, где расположены соответствующие буферы виртуальных каналов 14.0-14.6.
Кроме того, для обеспечения работы контроллера блоки управления потоком данных передатчика 6, управления потоком данных приемника 7, контроля ошибок 8, управления состоянием линка 9, декодирования пакетов и их сортировки 15 и проверки целостности контейнера 16, а также буферы повторов пакетов 5, передатчика виртуального канала 13.0, 13.1, 13.5, приемника соответствующего виртуального канала 14.0, 14.1, 14.6, пересинхронизационные буферы 4 и 12, а также мультиплексор 3 выполняют следующие функции.
Блок управления потоком данных передатчика 6 осуществляет управление потоком данных на передачу, при этом протокол обмена использует кредитный механизм контроля переполнения буферов виртуальных каналов (кредитная система), что позволяет исключить процедуру повтора вследствие занятости приемных буферов виртуальных каналов.
Блок управления потоком данных приемника 7 осуществляет управление потоком данных со стороны приемника, также применяя кредитную систему.
Блок контроля ошибок 8 производит контроль ошибок на линке.
Блок управления состоянием линка 9 осуществляет управление состоянием линка.
Блок декодирования пакетов и их сортировки 15 осуществляет декодирование пакетов и их последующую сортировку.
Блок проверки целостности контейнера 16 проверяет целостность контейнера.
Буфер повторов пакетов 5 осуществляет повторную передачу контейнера в случае ошибки в канале обмена данными.
Буферы передатчика виртуального канала 13.0, 13.1, …, 13.5 осуществляют хранение пакетов соответствующего виртуального канала до момента отправки их в канал обмена данными.
Буферы приемника соответствующего виртуального канала 14.0, 14.1, …, 14.6 осуществляют хранение пакетов соответствующего виртуального канала перед выдачей их процессору.
Буферы пересинхронизационные 4 и 12 производят пересинхронизацию контейнеров на соответствующую частоту.
Мультиплексор 3 осуществляет выбор источника контейнера: блок формирования контейнеров 2 или буфер повторов пакетов 5. Контейнер, передающийся в физический уровень, может браться из блока формирования 2 или же из буфера повтора пакетов 5 в случае, когда пакет не был доставлен. Мультиплексор 3 выполняет функцию выбора источника контейнера.
Таким образом, контроллер межпроцессорного канала обмена данными второго поколения позволяет осуществлять обмен данными между процессорами в многопроцессорных архитектурах с общей памятью на базе процессоров Эльбрус.