Параллельное программирование: Учебное пособие, страница 51

Разрешение второй проблемы – когерентности памяти общих для процессов переменных, также связано дополнительными аппаратурными  разработками. Рисунок 2.28 указывает на необходимость размещения между  процессорами и шинами коммуникатора дополнительной кэш-памяти.

Структура коммуникационной среды параллельной многопроцессорной вычислительной системы включает три компоненты: адаптер, сетевой коммутатор и соединительные кабели. Первый реализует интерфейс между ВМ и сетью передачи пакетов и включает в себя приемопередающие части ВМ и сети, между которыми размещается согласующий буфер с входной и выходной FIFO (first-in, first-out) очередями; второй осуществляет коммутацию передаваемых по сети пакетов с временным или пространственным их разделением; третьи обеспечивают подсоединение входных и выходных каналов адаптеров к портам коммутатора и коммутаторов друг с другом для образования требуемой топологии сети.

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

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

Современная коммуникационная среда, скорее всего, будет базироваться на стандарте масштабируемого когерентного интерфейса SCI, архитектура которого определяется структурой адресного пространства (рис. 2.30) и наличием регистров управления и состояния (РУС).


Рисунок 2.30. Структура адресного пространства в SCI.

В SCI принимается 64-разрядная архитектура с 64-битным адресным пространством. Старшие 16 битов задают адрес узла и используются для маршрутизации SCI пакетов между узлами системы. Остальные 48 битов — адресация внутренней памяти узла. SCI ориентирован на поддержку строк размером 64 байта. Другие размеры строк автоматически поддерживаются в многоуровневых кэш-памятях.

Формат пакета показан на рис. 2.31. Пакет состоит из трех частей: заголовка, адресной и информационной части, а также кодов обнаружения и коррекции ошибок. Первый 16-битовый символ заголовка содержит идентификационный код targetid (адрес) узла-получателя. Путем просмотра этого символа заголовка, при получении очередного сообщения, узел определяет: направлено это сообщение ему или должно проследовать через него. Во время прохождения пакета промежуточные агенты просматривают его для маршрутизации пакета между кольцами.


Рисунок 2.31. Формат пакета.

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

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

Третий 16-битовый символ заголовка содержит адрес (sourceid – идентификатор источника) узла, отправившего сообщение. Все пакеты содержат 6-разрядный порядковый номер, который позволяет различать пакеты одного отправителя.

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

·  время смерти — время, когда пакет должен быть уничтожен;

·  начальный относительный 48-разрядный адрес;

·  статус — 48-разрядное поле, возвращающее статус от получателя к источнику;