5 6 8
Глава 8. Архитектуры компьютеров параллельного действия
диаметр находится в линейной зависимости от размерности. Другими словами,
диаметр — это логарифм по основанию 2 от числа узлов, поэтому 10-мерный
гиперкуб имеет 1024 узла, но диаметр равен всего 10, что дает очень незначитель-
ные задержки при передаче данных. Отметим, что решетка 32x32, которая также
содержит 1024 узла, имеет диаметр 62, что более чем в шесть раз превышает диа-
метр гиперкуба. Однако чем меньше диаметр гиперкуба, тем больше разветвление
и число каналов (и следовательно, тем выше стоимость). Тем не менее в системах
с высокой производительностью чаще всего используется именно гиперкуб.
Коммутация
Сеть межсоединений состоит из коммутаторов и проводов, соединяющих их. На
рисунке 8.5 изображена небольшая сеть межсоединений с четырьмя коммутатора-
ми. В данном случае каждый коммутатор имеет 4 входных порта и 4 выходных
порта. Кроме того, каждый коммутатор содержит несколько центральных процес-
соров и схемы соединения (на рисунке они показано не полностью). Задача ком-
мутатора — принимать пакеты, которые приходят на любой входной порт, и от-
правлять пакеты из соответствующих выходных портов.
Входной порт
Выходной порт
Конец
пакета
Коммутатор с 4 портами
Середина
пакета
Начало пакета
Рис. 8.5. Сеть межсоединений в форме квадратной решетки с четырьмя коммутаторами.
Здесь показаны только два процессора
Каждый выходной порт связан с входным портом другого коммутатора через
последовательный или параллельный канал (на рис. 8.5. это пунктирная линия).
Последовательные каналы передают один бит единовременно. Параллельные ка-
налы могут передавать несколько битов сразу. Существуют специальные сигналы
для управления каналом. Параллельные каналы характеризуются более высокой
производительностью, чем последовательные каналы с такой же тактовой часто-
Вопросы разработки компьютеров параллельного действия
569
той, но в них возникает проблема
расфазировки данных
(нужно быть уверенным,
что все биты прибывают одновременно), и они стоят гораздо дороже.
Существует несколько стратегий переключения Первая из них —
коммутация
каналов.
Перед тем как послать пакет, весь путь от начального до конечного пунк-
та резервируется заранее. Все порты и буферы затребованы заранее, поэтому ко-
гда начинается процесс передачи, все необходимые ресурсы гарантированно до-
ступны, и биты могут на полной скорости перемещаться от исходного пункта через
все коммутаторы к пункту назначения. На рис. 8.5 показана коммутация каналов,
где резервируются канал от процессора 1 к процессору 2 (черная жирная стрелка).
Здесь резервируются три входных и три выходных порта.
Коммутацию каналов можно сравнить с перекрытием движения транспорта во
время парада, когда блокируются все прилегающие улицы. При этом требуется
предварительное планирование, но после блокирования прилегающих улиц парад
может продвигаться на полной скорости, поскольку никакой транспорт препят-
ствовать этому не будет Недостаток такого метода состоит в том, что требуется
предварительное планирование и любое движение транспорта запрещено, даже если
парад (или пакеты) еще не приближается.
Вторая стратегия —
коммутация с промежуточным хранением.
Здесь не тре-
буется предварительного резервирования. Из исходного пункта посылается целый
пакет к первому коммутатору, где он хранится целиком. На рис. 8 6, а исходным
пунктом является процессор 1, а весь пакет, который направляется в процессор 2,
сначала сохраняется внутри коммутатора А. Затем этот пакет перемещается в ком-
мутатор С, как показано на рис. 8.6,
б.
Затем весь пакет целиком перемещается
в коммутатор D (рис. 8.6,
в).
Наконец, пакет доходит до пункта назначения —
до процессора 2. Отметим, что никакого предварительного резервирования ресур-
сов не требуется.
Процессор 1
Коммутатор с 4 портами
/ , , А , , В
Входной порт
Выходной порт
СЕ
п:
:цы
Яг
ЕЕ
[
ЕЕ
h
В
"Й
EE
a R
ar
ID
ЕЕ
M
E t
\
Н,
:••
'а:
E E
D R
C I :
Весь пакет
Весь пакет
Весь пакет Процессор 2
Рис. 8.6. Коммутация с промежуточным хранением
Коммутаторы с промежуточным хранением должны отправлять пакеты в буфер,
поскольку когда исходный пункт (например, процессор, память или коммутатор)
выдает пакет, требующийся выходной порт может быть в данный момент занят
передачей другого пакета. Если бы не было буферизации, входящие пакеты, кото-
5 7 0 Глава 8. Архитектуры компьютеров параллельного действия
рым нужен занятый в данный момент выходной порт, пропадали бы. Применяется
три метода буферизации. При
буферизации
на
входе
один или несколько буфе-
ров связываются с каждым входным портом в форме очереди типа FIFO («первым
вошел, первым вышел»). Если пакет в начале очереди нельзя передать по причине
занятости нужного выходного порта, этот пакет просто ждет своей очереди.
Однако если пакет ожидает, когда освободится выходной порт, то пакет, иду-
щий за ним, тоже не может передаваться, даже если нужный ему порт свободен.
Ситуация называется
блокировкой начала
очереди. Проиллюстрируем ситуацию
на примере. Представим дорогу из двух рядов. Вереница машин в одном из рядов
не может двигаться дальше, поскольку первая машина в этом ряду хочет повер-
нуть налево, но не может из-за движения машин другого ряда. Даже если второй и
всем следующим за ней машинам нужно ехать прямо, первая машина в ряду пре-
пятствует их движению.
Проблему можно устранить с помощью
буферизации на выходе.
В этой систе-
ме буферы связаны с выходными портами. Биты пакета по мере пребывания со-
храняются в буфере, который связан с нужным выходным портом. Поэтому паке-
ты, направленные в порт т, не могут блокировать пакеты, направленные в порт п.
И при буферизации на входе, и при буферизации на выходе с каждым портом
связано определенное количество буферов. Если места недостаточно для хране-
ния всех пакетов, то какие-то пакеты придется выбрасывать. Чтобы разрешить эту
проблему, можно использовать
общую буферизацию,
при которой один буфер-
ный пул динамически распределяется по портам по мере необходимости. Однако
такая схема требует более сложного управления, чтобы следить за буферами, и
позволяет одному занятому соединению захватить все буферы, оставив другие со-
единения ни с чем. Кроме того, каждый коммутатор должен вмещать самый боль-
шой пакет и даже несколько пакетов максимального размера, а для этого потребу-
ется ужесточить требования к памяти и снизить максимальный размер пакета.
Хотя метод коммутации с промежуточным хранением гибок и эффективен, здесь
возникает проблема возрастающей задержки при передаче данных по сети межсо-
единений. Предположим, что время, необходимое для перемещения пакета по од-
ному транзитному участку на рис. 8.6, занимает Т не. Чтобы переместить пакет из
процессора 1 в процессор 2, нужно скопировать его 4 раза (в А, в С, в D и в процес-
сор 2), и следующее копирование не может начаться, пока не закончится предыду-
щее, поэтому задержка по сети составляет 4Т. Чтобы выйти из этой ситуации, нужно
разработать гибридную сеть межсоединений, объединяющую в себе коммутацию
каналов и коммутацию пакетов. Например, каждый пакет можно разделить на
части. Как только первая часть поступила в коммутатор, ее можно сразу направить
в следующий коммутатор, даже если оставшиеся части пакета еще не прибыли
в этот коммутатор.
Такой подход отличается от коммутации каналов тем, что ресурсы не резерви-
руются заранее. Следовательно, возможна конфликтная ситуация в соревновании
за право обладания ресурсами (портами и буферами). При
коммутации без буфе-
ризации пакетов,
если первый блок пакета не может двигаться дальше, оставшая-
ся часть пакета продолжает поступать в коммутатор. В худшем случае эта схема
Вопросы разработки компьютеров параллельного действия 571
превратится в коммутацию с промежуточным хранением. При другом типе марш-
рутизации, так называемой
«wormhole routing» (червоточина),
если первый блок
не может двигаться дальше, в исходный пункт передается сигнал остановить пе-
редачу, и пакет может оборваться, будучи растянутым на два и более коммутато-
ров. Когда необходимые ресурсы становятся доступными, пакет может двигаться
дальше.
Следует отметить, что оба подхода аналогичны конвейерному выполнению ко-
манд в центральном процессоре. В любой момент времени каждый коммутатор
выполняет небольшую часть работы, и в результате получается более высокая про-
изводительность, чем если бы эту же работу выполнял один из коммутаторов.
Алгоритмы выбора маршрута
В любой сети межсоединений с размерностью один и выше можно выбирать, по
какому пути передавать пакеты от одного узла к другому. Часто существует мно-
жество возможных маршрутов. Правило, определяющее, какую последовательность
узлов должен пройти пакет при движении от исходного пункта к пункту назначе-
ния, называется
алгоритмом выбора маршрута.
Хорошие алгоритмы выбора маршрута необходимы, поскольку часто свобод-
ными оказываются несколько путей. Хороший алгоритм поможет равномерно рас-
пределить нагрузку по каналам связи, чтобы полностью использовать имеющую-
ся в наличии пропускную способность. Кроме того, алгоритм выбора маршрута
помогает избегать взаимоблокировки в сети межсоединений. Взаимоблокировка
возникает в том случае, ее та при одновременной передаче нескольких пакетов ре-
сурсы затребованы таким образом, что ни один из пакетов не может продвигаться
дальше и все они блокируются навечно.
Пример тупиковой ситуации в сети с коммутацией каналов приведен на рис. 8.7.
Тупиковая ситуация может возникать и в сети с пакетной коммутацией, но ее
легче представить графически в сети с коммутацией каналов. Здесь каждый про-
цессор пытается послать пакет процессору, находящемуся напротив него по диа-
гонали. Каждый из них смог зарезервировать входной и выходной порты своего
локального коммутатора, а также один входной порт следующего коммутатора, но
он уже не может получить необходимый выходной порт на втором коммутаторе,
поэтому он просто ждет, пока не освободится этот порт. Если все четыре процессо-
ра начинают этот процесс одновременно, то все они блокируются и сеть зависает.
Алгоритмы выбора маршрута можно разделить на две категории: маршрутиза-
ция от источника и распределенная маршрутизация. При
маршрутизации от ис-
точника
источник определяет весь путь по сети заранее. Этот путь выражается
списком из номеров портов, которые нужно будет использовать в каждом комму-
таторе по пути к пункту назначения. Если путь проходит через
к
коммутаторов, то
первые к байтов в каждом пакете будут содержать к номеров выходных портов,
1 байт на каждый порт. Когда пакет доходит до коммутатора, первый байт отсека-
ется и используется для определения выходного порта. Оставшаяся часть пакета
затем направляется в соответствующий порт. После каждого транзитного участка
пакет становится на 1 байт короче, показывая новый номер порта, который нужно
выбрать в следующий раз.
5 7 2 Глава 8. Архитектуры компьютеров параллельного действия
Процессор 1
В Процессор 2
Процессор 3
Коммутатор с 4 портами
Входной порт
Выходной порт
Рис. 8.7. Тупиковая ситуация в сети с коммутацией каналов
При распределенной маршрутизации каждый коммутатор сам решает, в какой
порт отправить каждый приходящий пакет. Если выбор одинаков для каждого па-
кета, направленного к одному и тому же конечному пункту, то маршрутизация
является
статической.
Если коммутатор при выборе принимает во внимание те-
кущий трафик, то маршрутизация является
адаптивной.
Популярным алгоритмом маршрутизации, который применяется для прямо-
угольных решеток с любым числом измерений и в котором никогда не возникает
тупиковых ситуаций, является
пространственная маршрутизация.
В соответствии
с этим алгоритмом пакет сначала перемещается вдоль оси
х
до нужной координа-
ты, а затем вдоль оси
у
до нужной координаты и т. д. (в зависимости от количества
измерений). Например, чтобы перейти из (3,7, 5) в (6,9, 8), пакет сначала должен
переместиться из точки х=3 в точку х=6 через (4, 7, 5), (5, 7, 5) и (6,7, 5). Затем он
должен переместиться по оси
у
через (6, 8, 5) и (6, 9, 5). Наконец, он должен пере-
меститься по оси
z
в (6, 9, 6), (6, 9, 7) и (6, 9, 8). Такой алгоритм предотвращает
тупиковые ситуации.
Производительность
Цель создания компьютера параллельного действия — сделать так, чтобы он рабо-
тал быстрее, чем однопроцессорная машина. Если эта цель не достигнута, то ника-
кого смысла в построении компьютера параллельного действия нет. Более того,
эта цель должна быть достигнута при наименьших затратах. Машина, которая рабо-
тает в два раза быстрее, чем однопроцессорная, но стоит в 50 раз дороже послед-