Серверы и суперкомпьютеры, как правило, являются векторными или многопроцессорными вычислительными системами. По классификации вычислительных систем, предложенной Флинном, это системы типов SIMD или MIMD.
Компьютеры типа SIMD подразделяются на классы SM-SIMD и DM-SIMD.Типичный SM-SIMD компьютер — это векторный компьютер, включающий в свой состав скалярный процессор целочисленной арифметики, функциональные блоки для операций сложения и умножения чисел с плавающей точкой, векторный процессор и общую память. Векторный процессор имеет конвейерную архитектуру — состоит из нескольких функциональных блоков. Примеры векторных компьютеров — NEC SX-8B, CDC Cyber 205, ETA-10.
Рис. 1.  Архитектура SM-SIMD компьютера
Многопроцессорная вычислительная система состоит из одного или более узлов. В свою очередь, узел определяется как вычислительная система, работающая под управлением одной операционной системы и состоящая из одного или нескольких процессоров, оперативной памяти и системы ввода-вывода.
Многопроцессорные системы класса DM-SIMD называют также матричными (processor-array machines). Процессоры в этих компьютерах образуют некоторую 2D или 3D сеточную структуру. Один из процессоров (control processor) выполняет управляющие функции. Поскольку все процессоры одновременно должны выполнять одну и ту же операцию, не любой вычислительный процесс может быть эффективно реализован на компьютере этого класса. Поэтому системы DM-SIMD, как правило, являются специализированными, примерами могут быть сигнальные процессоры, компьютеры для статистических расчетов по методу Монте-Карло и т.п.
Рис. 2.  Архитектура DM-SIMD компьютера
Компьютеры типа MIMD параллельно выполняют несколько потоков команд над несколькими потоками данных. К классу компьютеров SM-MIMD, называемых мультипроцессорами, относятся многопроцессорные векторные компьютеры PVP (Parallel Vector Processing) и симметричные многопроцессорные системы SMP (Symmetric multiproccssor).
Для PVP-систем характерно наличие специальных векторно-конвейерных процессоров, в которых предусмотрены команды однотипной обработки векторов независимых данных, эффективно выполняющиеся на конвейерных функциональных устройствах.
В SMP-системах один узел содержит два или более одинаковых процессоров, разделяющих одно и то же адресное пространство и имеющих равноправный доступ к другим ресурсам узла. Так как с увеличением числа процессоров существенно возрастают сложности обеспечения их связи между собой и с общей памятью, архитектура SMP имеет ограничения по числу используемых процессоров — узел обычно включает не более 32 процессоров.
Рис. 3.  Узел SMP
В системах SMP-архитектуры одни и те же данные могут разделяться несколькими процессорами, а несколько копий одной и той же величины могут находиться в разных видах памяти. В этих условиях необходимо обеспечивать целостность данных или, другими словами, когерентность данных, означающую что все процессоры, если им необходимо в одно и то же время использовать одну и ту же переменную, то эта переменная для всех процессоров будет иметь одно и то же значение. А это означает, что изменения одной и той же величины в разных процессорах должны выполняться только последовательно.
В узлах современных компьютеров SMP-архитектуры когерентность реализуется аппаратными средствами. Для этого имеется специальная шина слежения (snoopy bus), через которую происходит передача значений данных, обновляемых некоторым процессором, на другие процессоры, запрашивающие эти данные. Идентификация одних и тех же данных в разных кэшах происходит по их отношению к одной и той же части оперативной памяти. Например, в архитектуре Cray SuperServer 6400 SMP используются четыре шины. Для поддержки когерентности все процессоры подсоединяются к каждой из четырех шин и реализуют протокол следящей шины.
Архитектуры с поддержкой когерентности данных получили название архитектур с неоднородным доступом к памяти — NUMA (Non-Uniform Memory Access). Имеется ряд разновидностей NUMA архитектур. В архитектуре CC-NUMA для SMP компьютеров поддерживается когерентность кэшей внутри каждого узла. Комбинация элементов SMP и MPP имеет место в архитектуре NUMA-Q, предложенной компанией Sequent Corp., ныне входящей в IBM.
В NUMA-Q вычислительные модули (quads) включают каждый четыре процессора, связанных высокоскоростной шиной. Множество таких модулей используются в качестве строительных блоков для формирования одного узла NUMA-Q, управляемого единой операционной системой. Модули одного узла соединены с общей оперативной памятью с помощью моста и внутренних для модулей шин. Используется протокол SCI (Scalable Coherent Interface). Такая конфигурация обеспечивает гораздо более короткий путь для сигналов обращения к памяти, чем общепринятая архитектура общей шины, которая требует, чтобы сигнал прошел весь путь по шине. Подавляющее большинство обращений к памяти при выполнении любой транзакции происходит внутри одного модуля.
С помощью NUMA систем наиболее успешно решаются задачи, имеющие малое пересечение данных, либо при пересечении все процессы могут быть исполнены в рамках одного модуля. Поэтому требуется программное обеспечение, организующее вычислительный процесс в соответствии с принципами NUMA так, чтобы связанные по данным процессы находились в одном модуле.
В архитектурах DM-MIMD проблемы когерентности решаются на программном уровне, поэтому число узлов может быть заметно большим, чем в системах SM-MIMD. В частности, в узлах компьютеров MPP-архитектуры используются свои копии ОС и свое адресное пространство, поэтому не требуется аппаратная поддержка когерентности, она поддерживается программными средствами. Узлы в MPP обычно состоят из одного процессора, небольшой памяти и нескольких устройств ввода-вывода. Настройка производительности MPP-систем включает распределение данных для того, чтобы минимизировать трафик между узлами.
Таким образом, практически все виды параллельных систем по классификации Флинна относятся к одной группе MIMD. Многие специалисты придерживаются классификации MIMD, представленной на рис. 4 [1], где DM-MIMD названы мультикомпьютерами, а SM-MIMD — мультипроцессорами:
Рис. 4.  Типы компьютеров MIMD
Данный поход позволяет различать два важных типа многопроцессорных систем – multiprocessors (мультипроцессоры или системы с общей разделяемой памятью) и multicomputers (мультикомпьютеры или системы с распределенной памятью).
Список Top500 — см. здесь.
Список литературы
1. Классификация вычислительных систем. — http://winhpc.ru/?id=36
2. В.Н. Дацюк, А.А. Букатов, А.И. Жегуло/ МЕТОДИЧЕСКОЕ ПОСОБИЕ по курсу "Многопроцессорные системы и параллельное программирование". -http://rsusu1.rnd.runnet.ru/tutor/method/m1/content.html