Операционные системы/Многомашинные, многопроцессорные ассоциации
Материал из eSyr's wiki.
Время одпроцессорных компьютеров потихоньку уходит. То есть те компьютеры, которые мы относим к категории однопроцессорных, на самом деле являются многопроцессорными. Помимо ЦП имеется много других элементов, которые выполняют те или иные специальные функции (обработка видео, графическая и т.д.). Идеально однопроцессорная система сходит на нет. Для работы с современными прикладными задачами требуется либо наличие нескольких компьютеров, либо многопроцессорная архитектура. Причины:
- Мы живем в информационном обществе – интернет как сфера общения между людьми. Необходимо получать информацию извне.
- Появления спектра задач, для решения которых не возможно применять подходы, которые применялись для однопроцессорных систем, или их сложность не позволяет решать их на одном процессоре, следовательно требуется параллельная архитектура
Содержание |
Классификация вычислительных систем Флинна
Есть поток управляющей информации – собственно команд (инструкций) и поток данных. Считаем потоки данных и команд независимыми (условно). Рассмотрим все возможные комбинации:
- ОКОД (SISD – single instruction (одиночный поток команд), single data stream, (одиночный поток данных)) Традиционные компьютеры, которые мы называем однопроцессорными. То есть для каждой команды одиночные порции операндов, которые будут обрабатываться. Пример – классическая машина фон Неймана.
- ОКМД(SIMD – single instruction(одиночный поток команд), multiple data stream (множественный поток данных)) Для каждой команды порция данных (векторная или матричная обработка данных). Можно разделить на две группы:
- массивно-параллельные процессоры (существует набор процессоров, работающих одинаково с данными, например на всех выполняется сложение)
- векторные процессоры (работают с данными как с вектором)
- МКОД (MISD – multiple instruction (множественный поток команд), single data stream (одиночный поток данных)) – это вырожденная категория, считается, что ее нет. Эта категория пока не охваченная, и не понятно, как ее можно охватить, хотя есть интерпретации и этой категории, например, к ней иногда относят всякого рода параллельные специализированные графические системы, которые занимаются, предположим, распознаванием, то есть когда над одной порцией данных одновременно используются разные команды.
- МКМД (MIMD - multiple instruction (множественный поток команд), multiple data stream (множественный поток данных)) Многомашинная ассоциация. Некоторое количество процессорных элементов, каждый из которых обрабатывает свои данные.
MIMD – >=2 процессоров, имеющих свои устройства управления, каждый из которых может выполнять свою программу.
Иерархия MIMD-систем:
Системы с общей оперативной памятью
Для всех процессорных элементов имеется общая оперативная память. Исполняемая программа берется из единого пространства, куда имеет доступ все процессоры. Любое слово памяти может читаться одновременно несколькими процессорами, следовательно необходима синхронизация чтения и записи. С ростом числа процесоров рост производительности замедляется. И начиная с некоторого количества увеличивать число процессоров нет смысла.
UMA, SMP
UMA. Каждый из процессорных элементов, входящих в систему, имеет равные возможности и скорость доступа в ОП.
SMP-системы состоят из нескольких однородных процессоров и массива общей памяти, который обычно состоит из нескольких независимых блоков. Слово «симметричный» в названии данной архитектуры указывает на то, что все процессоры имеют доступ напрямую (т.е. возможность адресации) к любой точке памяти, причем доступ любого процессора ко всем ячейкам памяти осуществляется с одинаковой скоростью. Общая схема SMP-архитектуры:
Процессоры подключены к памяти либо с помощью общей шины, либо с помощью коммутатора. Отметим, что в любой системе с общей памятью возникает проблема кэширования: так как к некоторой ячейке общей памяти имеет возможность обратиться каждый из процессоров, то вполне возможна ситуация, когда некоторое значение из этой ячейки памяти находится в кэше одного или нескольких процессоров, в то время как другой процессор изменяет значение по данному адресу. В этом случае, очевидно, значения, находящиеся в кэшах других процессоров, больше не могут быть использованы и должны быть обновлены. В SMP-архитектурах обычно согласованность данных в кэшах поддерживается аппаратно.
Очевидно, что наличие общей памяти в SMP-архитектурах позволяет эффективно организовать обмен данными между задачами, выполняющимися на разных процессорах, с использованием механизма разделяемой памяти. Однако сложность организации симметричного доступа к памяти и поддержания согласованности кэшей накладывает существенное ограничение на количество процессоров в таких системах – в реальности их число обычно не превышает 32 – в то время, как стоимость таких машин весьма велика.
NUMA
Системы с неоднородным доступом к памяти (NUMA) представляют собой промежуточный класс между системами с общей и распределенной памятью. Память в NUMA-системах является физически распределенной, но логически общедоступной. Это означает, что каждый процессор может адресовать как свою локальную память, так и память, находящуюся на других узлах, однако время доступа к удаленным ячейкам памяти будет в несколько раз больше, нежели время доступа к локальной памяти. Заметим, что единое адресное пространство и доступ к удаленной памяти поддерживаются аппаратно. Обычно аппаратно поддерживается и когерентность (согласованность) кэшей во всей системе.
Системы с неоднородным доступом к памяти строятся из однородных базовых модулей, каждый из которых содержит небольшое число процессоров и блок памяти. Модули объединены между собой с помощью высокоскоростного коммутатора. Обычно вся система работает под управлением единой ОС. Поскольку логически программисту предоставляется абстракция общей памяти, то модель программирования, используемая в системах NUMA, обычно в известной степени аналогична той, что используется на симметричных мультипроцессорных системах, и организация межпроцессного взаимодействия опирается на использование разделяемой памяти.
Масштабируемость NUMA-систем ограничивается объемом адресного пространства, возможностями аппаратуры поддержки когерентности кэшей и возможностями операционной системы по управлению большим числом процессоров.
Схема NUMA-систем:
Системы с распределенной оперативной памятью
MPP
Массивно-параллельные системы состоят из однородных вычислительных узлов, каждый из которых включает в себя:
- один или несколько процессоров
- локальную память, прямой доступ к которой с других узлов невозможен
- коммуникационный процессор или сетевой адаптер
- устройства ввода/вывода
Помимо вычислительных узлов, в систему могут входить специальные узлы ввода-вывода и управляющие узлы. Узлы связаны между собой посредством высокоскоростной среды передачи данных определенной топологии (макроконвейер, n-мерный гиперкуб и др.). Число процессоров в MPP-системах может достигать нескольких тысяч.
Поскольку в MPP-системе каждый узел представляет собой относительно самостоятельную единицу, то, как правило, управление массивно-параллельной системой в целом осуществляется одним из двух способов:
- На каждом узле может работать полноценная операционная система, функционирующая отдельно от других узлов. При этом, разумеется, такая ОС должна поддерживать возможность коммуникации с другими узлами в соответствии с особенностями данной архитектуры.
- «Полноценная» ОС работает только на управляющей машине, а на каждом из узлов MPP-системы работает некоторый сильно «урезанный» вариант ОС, обеспечивающий работу задач на данном узле.
В массивно-параллельной архитектуре отсутствует возможность осуществлять обмен данными между ВУ напрямую через память, поэтому взаимодействие между процессорами реализуется с помощью аппаратно и программно поддерживаемого механизма передачи сообщений между ВУ. Соответственно, и программы для MPP-систем обычно создаются в рамках модели передачи сообщений.
COW
Отдельным подклассом систем с распределенной памятью являются кластерные (COW) системы, которые представляют собой некоторый аналог массивно-параллельных систем, в котором в качестве ВУ выступают обычные рабочие станции общего назначения, причем иногда узлы кластера могут даже одновременно использоваться в качестве пользовательских рабочих станций. Кластер, объединяющий компьютеры разной мощности или разной архитектуры, называют гетерогенным (неоднородным). Для связи узлов используется одна из стандартных сетевых технологий, например, Fast Ethernet.
Главными преимуществами кластерных систем, благодаря которым они приобретают все большую популярность, являются их относительная дешевизна, возможность масштабирования и возможность использования при построении кластера тех вычислительных мощностей, которые уже имеются в распоряжении той или иной организации.
При программировании для кластерных систем, как и для других систем с распределенной памятью, используется модель передачи сообщений. Кластеры имеют две ориентации на использование:
- Кластер как вычислительный узел (высокопроизводительная система)
- Кластеры, которые обеспечивают надёжность (сохранение работоспособности при возможном снижении производительности)
Основная проблема высокопроизводительнах ЭВМ – отвод тепла. Сначала для этой цели использовался воздух, потом вода, потом инертные газы.