Параллельная вычислительная система
Паралле́льная вычисли́тельная систе́ма (параллельный компьютер), компьютер, в архитектуре которого использованы те или иные элементы параллельной обработки данных, т. е. параллелизм и/или конвейерность. Основная цель использования параллелизма в архитектуре компьютеров – это повышение их производительности, уменьшение времени работы программ, ускорение решения задач.
В некоторых случаях использование элементов параллелизма не требует от пользователей каких-либо дополнительных действий. Например, реализация на аппаратном уровне разрядно-параллельной памяти в компьютере IBM 701 (1953) позволила читать слова из памяти не последовательно разряд за разрядом, а одновременно сразу все разряды слова, значительно ускоряя все операции чтения/записи программы. Переход от последовательной к четырёхступенчатой конвейерной реализации обработки команд в компьютере Atlas (1962) позволил уменьшить среднее время выполнения команды почти в 4 раза. Суперскалярная архитектура реализует использование независимых функциональных устройств на уровне аппаратуры, а потенциал параллелизма архитектуры с широким командным словом (англ. very large instruction word) управляется компилятором. Подобные элементы параллелизма в архитектуре компьютеров дают относительно небольшое ускорение, степень параллелизма невелика, но зато для пользователя они прозрачны и не требуют (или почти не требуют) специальных действий для обеспечения их работы: это делает либо аппаратура, либо специальное программное обеспечение.
Сегодня параллелизм становится массовым: присутствует во всех компьютерных системах, от смартфонов и планшетов до суперкомпьютеров. В одном процессоре могут содержаться десятки параллельно работающих ядер, в одном сервере или вычислительном узле – несколько процессоров и ускорителей, в одном ускорителе – тысячи ядер, в одной кластерной системе – тысячи узлов. Степень параллелизма современных вычислительных систем измеряется десятками, тысячами, миллионами: например, процессор Apple A15 Bionic, использующийся в iPhone 13, содержит 6 ядер, в суперкомпьютере Sunway TaihuLight – более 10 млн ядер. Значительное число ядер, с одной стороны, говорит о действительно большом потенциале для ускорения решения задач, но с другой стороны, подобный потенциал практически всегда требует от программиста аккуратного, и главное – явного, использования той или иной технологии параллельного программирования, что не всегда просто и требует дополнительных усилий.
Появилось целое множество классов параллельных вычислительных систем, особенности реализации параллелизма в которых отражается в названии классов:
многоядерные (процессоры серий Intel Xeon, AMD Epyc);
многопроцессорные (IBM RS/6000 SP, SGI Origin 3000);
векторно-конвейерные (Cray-1, Cray T90);
конвейерные (процессор Intel i860);
векторные (NEC SX-Aurora TSUBASA);
массивно-параллельные (Intel Paragon, Cray T3E, IBM Blue Gene);
матричные (ILLIAC IV, ICL DAP, CM-1);
компьютеры с широким командным словом (Multiflow TRACE, процессоры «Эльбрус»);
суперскалярные (IBM POWER9);
компьютеры с многопоточной архитектурой (Tera MTA).
В названиях других классов явного параллелизма в названии может и не быть, но тем не менее именно параллелизм составляет основу их архитектуры: суперкомпьютеры (Fugaku), высокопроизводительные вычислительные кластеры (Dell Frontera), гибридные вычислительные системы (Frontier, IBM Summit, NVIDIA Celene), систолические массивы, dataflow-компьютеры, компьютеры на основе ПЛИС-технологий и многие другие.
Ещё в начальный период развития вычислительной техники большое число архитектур вычислительных систем привело к необходимости структуризации данной области на основе тех или иных характерных свойств. Были предложены различные подходы к их классификации, помогающие понять, какие основные идеи заложены в функционирование той или иной вычислительной системы, какие у неё есть общие черты с другими представителями того же класса, чем она отличается от других систем, а главное – как вычислительную систему строить, сопровождать, использовать.
Поиск ответа на подобные вопросы привёл к появлению целого множества классификаций, причём активные исследования в этом направлении начались после опубликования во 2-й половине 1960-х гг. классификации Флинна. Среди наиболее известных можно назвать классификации Р. Хокни, Т. Фенга (Фэн Цзэюня), В. Хендлера, Л. Cнайдера, Д. Скилликорна, однако именно простая классификация М. Флинна наиболее активно используется в вычислительном сообществе и ныне.
Поиск способа классификации архитектуры вычислительных систем носит не только академический интерес, удачная содержательная классификация может подсказать возможные пути совершенствования компьютеров и технологий их использования. Трудно рассчитывать на нахождение с помощью классификации нетривиальных белых пятен в архитектурах, однако размышления о возможной систематике с точки зрения простоты и технологичности программирования могут оказаться чрезвычайно полезными для поиска направлений развития вычислительных систем в будущем.
Немного особняком стоит класс параллельных вычислительных систем, в котором элементы параллелизма введены для обеспечения надёжности их работы: увеличивая число критически важных и параллельно работающих компонентов, дублирующих работу друг друга, достигается увеличение отказоустойчивости работы всей системы в целом. Примерами систем этого класса могут служить вычислительные системы NonStop компании Tandem Computers или современные отказоустойчивые кластеры.
Интересно, что Интернет также можно рассматривать как параллельную вычислительную систему: узлы сети имеют возможность общаться между собой, передавая друг другу необходимые для решения задачи данные. Такая технология для многих является привлекательной либо в силу доступности вычислительных ресурсов, либо из-за возможности простыми средствами сформировать вычислительную систему значительной производительности. Расшифровка сигналов для поиска внеземных цивилизаций, конструирование лекарственных препаратов, определение пространственной структуры белков, поиск больших простых чисел – эти и многие другие проекты были реализованы с использованием компьютеров, работающих в сети Интернет и формирующих распределённые вычислительные среды. Несмотря на схожесть с классическими параллельными вычислительными системами, распределённые среды могут иметь и ряд собственных специфичных свойств, касающихся большой неоднородности объединяемых вычислительных ресурсов, географической распределённости узлов, непредсказуемой изменчивости конфигурации, её значительного масштаба и даже возможной различной административной подчинённости ресурсов сети. Для поддержки функционирования и организации вычислений в подобных средах проектируются и используются специальные программные средства, например BOINC или Condor.