Мультипроцессоры UMA, использующие многоступенчатые схемы коммутации

На рис. 8.4, а показана совершенно другая мультипроцессорная архитектура, построен- ная на простых коммутаторах 2 х 2. У такого коммутатора есть два входа и два выхода.

Сообщения, поступающие по любой входной линии, могут быть скоммутированы на любую выходную линию.

Для решения наших задач сообщения будут содержать до четырех частей (рис. 8.4, б). В поле Module (Модуль) сообщается, какой модуль памяти следует использовать. В поле Address (Адрес) указывается адрес в этом модуле. В поле Opcode (Код операции) предоставляется операция, например READ или WRITE. И наконец, необязательное поле Value (Значение) может содержать операнд, например 32-разрядное слово, которое нужно записать с помощью операции WRITE. Коммутатор проверяет содержимое поля Module и использует его для определения того, куда должно быть послано сообщение — на линию X или на линию Y.


а б

С помощью коммутатора 2 х 2 можно построить самые разные большие многоступенчатые коммутаторные сети (multistage switching networks), рассмотренные в Adams et al. (1987), Garofalakis and Stergiou (2013), Kumar and Reddy (1987). Одна из возможных схем, упрощенная сеть омега (omega network), относящаяся к эконом-классу, показана на рис. 8.5. Здесь с помощью 12 коммутаторов восемь центральных процессоров подключаются к восьми модулям памяти. В общем, для n центральных процессоров и n модулей памяти понадобится log2 n ступеней с n/2 коммутаторами на каждую ступень, а всего (n/2) log2 n коммутаторов, что значительно лучше, чем n2 элементов коммутации, особенно для больших n.

Рис. 8.5. Схема коммутации омега


Схему электрической разводки в сети омега часто называют идеальным тасованием (perfect shuffle), поскольку перемешивание сигналов на каждой ступени походит на колоду карт, поделенную на две части, а затем перемешиваемую путем заведения одних
карт за другие. Чтобы разобраться с работой сети омега, предположим, что центральному процессору 011 понадобилось прочитать слово из модуля памяти 110. Центральный процессор посылает сообщение READ коммутатору 1D, в котором в поле Module содержится значение 110. Коммутатор берет первый (то есть самый левый) бит из 110 и использует его для маршрутизации. Если значение равно 0, сообщение направляется на верхний выход, а если 1, сообщение направляется на нижний выход. Поскольку бит содержит 1, сообщение направляется через нижний выход на коммутатор 2D.

Все коммутаторы второй ступени, включая 2D, используют для маршрутизации второй бит. В данном случае он также равен 1, поэтому теперь сообщение направляется через нижний выход к коммутатору 3D.

Там уже тестируется третий бит, который равен 0. Следовательно, сообщение направляется через верхний выход и попадает, как и требовалось, к модулю памяти 110. Путь, по которому проходит это сообщение, помечен на рис. 8.5 буквой а.

По мере прохождения сообщения по схеме коммутации самые левые биты номера модуля утрачивают свое значение. Ими можно воспользоваться снова, записывая в них номер входящей линии, чтобы ответ смог отыскать обратный путь. Для пути а входные линии имеют номера 0 (верхний вход 1D), 1 (нижний вход 2D) и 1 (нижний вход 3D). Ответ будет направлен назад с помощью значения 011, только на этот раз чтение из него будет производиться справа налево.

В это же время центральному процессору 001 требуется записать слово в модуль памяти 001. Здесь происходит аналогичный процесс: сообщение направляется по верхнему, опять по верхнему и по нижнему выходам, этот путь помечен буквой b. Когда сообщение дойдет до адресата, его поле Module будет содержать значение 001, представляющее пройденный им путь. Поскольку рассмотренные запросы не используют одни и те же коммутаторы, линии и модули памяти, они могут выполняться параллельно.

Теперь посмотрим, что произойдет, если центральный процессор 000 одновременно с этим захочет обратиться к модулю памяти 000. Его запрос вступит в конфликт с запросом центрального процессора 001 на коммутаторе 3A. Одному из них придется подождать. В отличие от координатного коммутатора, сеть омега представляет собой блокирующуюся сеть (blocking network). Не все наборы запросов могут обрабатываться одновременно. При использовании линий или коммутаторов могут возникать конфликты как между запросами к памяти, так и между ответами от памяти.

Возникает потребность в равномерном распределении обращений к модулям памяти. Одна из распространенных технологий предусматривает использование младших разрядов в качестве номера модуля. Рассмотрим, к примеру, байт-ориентированное адресное пространство компьютера, который в основном обращается к целым 32-разрядным словам. Два младших разряда обычно имеют значение 00, но следующие три бита будут распределены равномерно. За счет использования этих трех битов в качестве номера модуля последовательные слова будут находиться в последовательных модулях. Система памяти, в которой следующие друг за другом слова находятся в разных модулях, называется чередующейся (interleaved). Чередующиеся системы памяти позволяют добиться максимального распараллеливания, потому что большинство обращений к памяти осуществляется к следующим друг за другом адресам. Для более эффективного распространения потока данных можно также разработать неблокирующиеся схемы коммутации, предлагающие несколько путей от каждого центрального процессора к каждому модулю памяти.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Мультипроцессоры UMA, использующие многоступенчатые схемы коммутации:

  1. 2.6. Многоступенчатая выборка
  2. 4.14. СХЕМЫ ЖАНА ПИАЖЕ
  3. СХЕМЫ ВОЗДЕЙСТВИЯ ПРИ КОДИРОВАНИИ ЧЕЛОВЕКА
  4. СУТОЧНАЯ И СЕЗОННАЯ АКТИВНОСТЬ ОРГАНОВ (ЭЛЕМЕНТОВ СХЕМЫ У СИН)
  5. 3.6. ИСПОЛЬЗУЙТЕ ТОЛЬКО НАСТОЯЩЕЕ ВРЕМЯ
  6. 4.2.2. Используйте или потеряете
  7. 3. Используйте имя Бога
  8. Используйте имя Бога.
  9. Используйте дуальные перспективы.
  10. КАК БАНКИР ИСПОЛЬЗУЕТ ПОДСОЗНАНИЕ
  11. ЧТОБЫ СТАТЬ БОГАТЫМ, ИСПОЛЬЗУЙТЕ СИЛУ ВООБРАЖЕНИЯ