Введение
Вычислительная техника, используемая для достижения параллелизма.
В вычислительной технике множественный поток инструкций, множественный поток данных (MIMD) – это техника, применяемая для достижения параллелизма. Машины, использующие MIMD, имеют несколько процессоров, функционирующих асинхронно и независимо. В любой момент времени разные процессоры могут выполнять различные инструкции над разными данными. Архитектуры MIMD могут применяться в различных областях, таких как системы автоматизированного проектирования/автоматизированного производства, моделирование, симуляция и в качестве коммуникационных коммутаторов. Машины MIMD могут относиться к категориям с общей или распределенной памятью. Эти классификации основаны на способе доступа процессоров MIMD к памяти. Машины с общей памятью могут быть с шиной, расширенной или иерархической архитектурой. Машины с распределенной памятью могут использовать схемы межсоединений в виде гиперкуба или сетки.
Примеры
Примером системы MIMD является Intel Xeon Phi, основанная на микроархитектуре Larrabee. Эти процессоры имеют множество процессорных ядер (до 61 по состоянию на 2015 год), способных выполнять различные инструкции над разными данными. Большинство параллельных компьютеров, по состоянию на 2013 год, представляют собой системы MIMD.
Модель общей памяти
В модели общей памяти все процессоры подключены к "глобально доступной" памяти посредством программных или аппаратных средств. Операционная система обычно обеспечивает когерентность памяти. С точки зрения программиста, эта модель памяти легче для понимания, чем модель распределенной памяти. Дополнительным преимуществом является то, что управление когерентностью памяти осуществляется операционной системой, а не программой. Два известных недостатка: сложность масштабирования системы свыше тридцати двух процессоров и меньшая гибкость модели общей памяти по сравнению с моделью распределенной памяти.
Иерархическая
Машины MIMD с иерархической общей памятью используют иерархию шин (например, как в "жирном дереве"), чтобы обеспечить процессорам доступ к памяти друг друга. Процессоры, расположенные на разных платах, могут взаимодействовать через межсоединительные шины. Шины обеспечивают связь между платами. Архитектура этого типа позволяет создавать машины, поддерживающие более девяти тысяч процессоров.
Распределенная память
В распределенных системах с памятью MIMD (множественные инструкции, множественные данные) каждый процессор имеет собственную, независимую область памяти. Каждый процессор не имеет прямого доступа к памяти других процессоров. Для обмена данными они должны передаваться от одного процессора к другому в виде сообщений. Поскольку отсутствует общая память, конкуренция за ресурсы в таких системах не является столь серьезной проблемой. Экономически нецелесообразно напрямую соединять большое количество процессоров между собой. Чтобы избежать множества прямых соединений, каждый процессор соединяется лишь с несколькими другими. Такая архитектура может быть неэффективной из-за дополнительного времени, необходимого для передачи сообщения от одного процессора к другому по сети соединений. Время, затрачиваемое процессорами на простую маршрутизацию сообщений, может быть значительным. Для уменьшения этих задержек были разработаны различные системы, среди популярных схем взаимосвязи – гиперкуб и сетка. Примеры систем с распределенной памятью (множеством компьютеров) включают MPP (массивно-параллельные процессоры), COW (кластеры рабочих станций) и NUMA (неоднородный доступ к памяти). Первая из них сложна и дорога: это множество суперкомпьютеров, объединенных высокоскоростными сетями. Гиперкуб и сетка – примеры схем взаимосвязи, используемых в таких системах. COW представляет собой более доступную, "самодельную" альтернативу.
Гиперкубическая сеть соединения
В распределенной памяти MIMD с гиперкубической системой межсоединений, содержащей четыре процессора, процессор и модуль памяти размещаются в каждой вершине квадрата. Диаметр системы – это минимальное число шагов, необходимых для отправки сообщения от одного процессора к самому удаленному процессору. Например, диаметр 2-мерного куба равен 2. В гиперкубической системе с восемью процессорами, где каждый процессор и модуль памяти расположены в вершине куба, диаметр равен 3. В общем случае, система, содержащая 2^N процессоров, каждый из которых напрямую соединен с N другими процессорами, имеет диаметр, равный N. Один из недостатков гиперкубической системы заключается в том, что она должна быть сконфигурирована как степень двойки, поэтому приходится строить машину, которая потенциально может иметь гораздо больше процессоров, чем реально требуется для конкретного приложения.
Сеть взаимосвязи сетей
В машине с распределенной памятью MIMD и сетчатой топологией соединения процессоры располагаются в двумерной сетке. Каждый процессор соединен с четырьмя непосредственными соседями. На границах сетки могут быть предусмотрены циклические соединения. Одним из преимуществ сетчатой топологии соединения по сравнению с гиперкубом является то, что размер сетки не обязательно должен быть степенью двойки. Недостатком является то, что диаметр сетчатой сети больше, чем у гиперкуба для систем, содержащих более четырех процессоров.