Параллелизм на уровне процессоров
XalionКонвейеры и суперскалярные архитектуры ускоряют компьютер в 5 - 10 раз, но можно добиться ускорения в 100 раз – cтроить компьютеры с несколькими процессорами.
Плюс таких компьютеров – они имеют большую вычислительную мощность, чем обычные и используют меньшее количество транзисторов.
Такие компьютеры разделяются на виды: матричные, мультипроцессоры и мультикомпьютеры.
Для научных и технических задач, часто приходиться производить одни и те же операции с разным набором данных. Упорядоченность данных позволяет распараллелить вычисления и ускорить их.
Существует две схемы ускорения вычислений больших научных задач:
SIMD-процессоры и векторные процессоры.
SIMD-процессор (Single Instruction-stream Multiple Data-stream) – комплекс ядер с командным процессором. Он содержит не меньше 1024 процессоров, которые выполняют одинаковую последовательность команд к разным наборам данных под управлением командного блока.
Такая архитектура используется в графических процессорах(GPU), потому что большинство алгоритмов имеют четкую структуру с повторением операций для пикселей, ребер или текстур.
В ядре Nvidia Fermi находятся 16 потоковых мультипроцессоров, в каждом находится 32 SIMD-процессора.
![](/file/bb602cb7c75a78f0da9c5.png)
Векторный процессор работает с векторными массивами однотипных данных. Для этого выделен векторный регистр, состоит из набора обыкновенных регистров.
Пример: сложение двух векторов.
команда сложения достаёт векторы из регистров и отправляет их в суммирующее устройство ---> внутри проходит операция сложения и выходит другой вектор ---> возвращается в регистр или используется для других операций.
Команды SSE в Intel Core используют такую модель расширения для ускорения обработки мультимедийных и научных данных.
Мультипроцессоры – система из нескольких параллельных процессоров, имеют общую память и блок управления, который их контролирует.
Чтобы не возникало конфликтов, между несколькими процессорами, при записи данных, работа всех процессоров контролируется программистом с помощью набора программ.
В этой системе процессоры называются сильно связанными (tightly coupled), потому что они могут тесно взаимодействовать друг с другом.
![](/file/5cf518c96279e874f235c.png)
Но если количество процессоров будет слишком большим, то будут возникать конфликты, потому что процессоры пытаются получить доступ к памяти по одной шине.
Эту проблему решают локальной памятью, не доступной для других процессоров. Её не нужно разделять между всеми процессорами.
![](/file/fe37cf70a4a1705fc7106.png)
Главный плюс мультипроцессоров перед другими параллельными системами –единая память, потому что с ней проще работать.
Разрабатывать мультипроцессорные системы просто до тех пор, пока количество процессоров в них не превышает 256. После 256 процессора появляются проблемы с общей памятью.
Для более трудных задач существуют мультикомпьютеры.
Мультикомпьютер - система компьютеров. У каждого компьютера своя память, доступная только ему.
Компьютеры соединены локальной сетью: по кольцу, дереву, двух- или трехмерной решетке.
Каждый компьютер отправляет друг другу сообщения, что-то вроде электронной почты, только в тысячи раз быстрее. Сообщения проходят через несколько компьютеров пока не дойдут до получателя, время передачи занимает несколько микросекунд.
![](/file/8bded7b9700a4e83d2616.jpg)
Мультикомпьютер Blue Gene/P от IMB состоит из 250 тысяч процессоров.
Мультипроцессоры и мультикомпьютеры более обширно рассмотрим позже. В следующих статьях разберемся с компьютерной памятью.