Что такое вс в компьютере

Обновлено: 06.07.2024

Компьютеры, даже персональные, становятся все сложнее. Не так уж давно в гудящем на столе ящике все было просто — чем больше частота, тем больше производительность. Теперь же системы стали многоядерными, многопроцессорными, в них появились специализированные ускорители, компьютеры все чаще объединяются в кластеры.
Зачем? Как во всем этом многообразии разобраться?
Что значит SIMD, SMP, GPGPU и другие страшные слова, которые встречаются все чаще?
Каковы границы применимости существующих технологий повышения производительности?

Введение

Откуда такие сложности?

Компьютерные мощности быстро растут и все время кажется, что все, существующей скорости хватит на все.
Но нет — растущая производительность позволяет решать проблемы, к которым раньше нельзя было подступиться. Даже на бытовом уровне есть задачи, которые загрузят ваш компьютер надолго, например кодирование домашнего видео. В промышленности и науке таких задач еще больше: огромные базы данных, молекулярно-динамические расчеты, моделирование сложных механизмов — автомобилей, реактивных двигателей, все это требует возрастающей мощности вычислений.
В предыдущие годы основной рост производительности обеспечивался достаточно просто, с помощью уменьшения размеров элементов микропроцессоров. При этом падало энергопотребление и росли частоты работы, компьютеры становились все быстрее, сохраняя, в общих чертах, свою архитектуру. Менялся техпроцесс производства микросхем и мегагерцы вырастали в гигагерцы, радуя пользователей возросшей производительностью, ведь если «мега» это миллион, то «гига» это уже миллиард операций в секунду.
Но, как известно, рай бывает либо не навсегда, либо не для всех, и не так давно он в компьютерном мире закончился. Оказалось, частоту дальше повышать нельзя — растут токи утечки, процессоры перегреваются и обойти это не получается. Можно, конечно, развивать системы охлаждения, применять водные радиаторы или совсем уж жидким азотом охлаждать — но это не для каждого пользователя доступно, только для суперкомпьютеров или техноманьяков. Да и при любом охлаждении возможность роста была небольшой, где-то раза в два максимум, что для пользователей, привыкших к геометрической прогрессии, было неприемлемо.
Казалось, что закон Мура, по которому число транзисторов и связанная с ним производительность компьютеров удваивалась каждые полтора-два года, перестанет действовать.
Пришло время думать и экспериментировать, вспоминая все возможные способы увеличения скорости вычислений.

Формула производительности

Возьмем самую общую формулу производительности:


Видим, что производительность можно измерять в количестве выполняемых инструкций за секунду.
Распишем процесс поподробнее, введем туда тактовую частоту:


Первая часть полученного произведения — количество инструкций, выполняемых за один такт (IPC, Instruction Per Clock), вторая — количество тактов процессора в единицу времени, тактовая частота.
Таким образом, для увеличения производительности нужно или поднимать тактовую частоту или увеличивать количество инструкций, выполняемых за один такт.
Т.к. рост частоты остановился, придется увеличивать количество исполняемых «за раз» инструкций.

Включаем параллельность

Как же увеличить количество инструкций, исполняемых за один такт?
Очевидно, выполняя несколько инструкций за один раз, параллельно. Но как это сделать?
Все сильно зависит от выполняемой программы.
Если программа написана программистом как однопоточная, где все инструкции выполняются последовательно, друг за другом, то процессору (или компилятору) придется «думать за человека» и искать части программы, которые можно выполнить одновременно, распараллелить.

Параллелизм на уровне инструкций

Возьмем простенькую программу:
a = 1
b = 2
c = a + b

Первые две инструкции вполне можно выполнять параллельно, только третья от них зависит. А значит — всю программу можно выполнить за два шага, а не за три.
Процессор, который умеет сам определять независимые и непротиворечащие друг другу инструкции и параллельно их выполнять, называется суперскалярным.
Очень многие современные процессоры, включая и последние x86 — суперскалярные процессоры, но есть и другой путь: упростить процессор и возложить поиск параллельности на компилятор. Процессор при этом выполняет команды «пачками», которые заготовил для него компилятор программы, в каждой такой «пачке» — набор инструкций, которые не зависят друг от друга и могут исполняться параллельно. Такая архитектура называется VLIW (very long instruction word — «очень длинная машинная команда»), её дальнейшее развитие получило имя EPIC (explicitly parallel instruction computing) — микропроцессорная архитектура с явным параллелизмом команд)
Самые известные процессоры с такой архитектурой — Intel Itanium.
Есть и третий вариант увеличения количества инструкций, выполняемых за один такт, это технология Hyper Threading В этой технологии суперскалярный процессор самостоятельно распараллеливает не команды одного потока, а команды нескольких (в современных процессорах — двух) параллельно запущенных потоков.
Т.е. физически процессорное ядро одно, но простаивающие при выполнении одной задачи мощности процессора могут быть использованы для выполнения другой. Операционная система видит один процессор (или одно ядро процессора) с технологией Hyper Threading как два независимых процессора. Но на самом деле, конечно, Hyper Threading работает хуже, чем реальные два независимых процессора т.к. задачи на нем будут конкурировать за вычислительные мощности между собой.

Технологии параллелизма на уровне инструкций активно развивались в 90е и первую половину 2000х годов, но в настоящее время их потенциал практически исчерпан. Можно переставлять местами команды, переименовывать регистры и использовать другие оптимизации, выделяя из последовательного кода параллельно исполняющиеся участки, но все равно зависимости и ветвления не дадут полностью автоматически распараллелить код. Параллелизм на уровне инструкций хорош тем, что не требует вмешательства человека — но этим он и плох: пока человек умнее микропроцессора, писать по-настоящему параллельный код придется ему.

Параллелизм на уровне данных

Векторные процессоры

Мы уже упоминали скалярность, но кроме скаляра есть и вектор, и кроме суперскалярных процессоров есть векторные.
Векторные процессоры выполняют какую-то операцию над целыми массивами данных, векторами. В «чистом» виде векторные процессоры применялись в суперкомьютерах для научных вычислений в 80-е годы.
По классификации Флинна, векторные процессоры относятся к SIMD — (single instruction, multiple data — одиночный поток команд, множественный поток данных).
В настоящее время в процессорах x86 реализовано множество векторных расширений — это MMX, 3DNow!, SSE, SSE2 и др.
Вот как, например, выглядит умножение четырех пар чисел одной командой с применением SSE:

float a[4] = < 300.0, 4.0, 4.0, 12.0 >;
float b[4] = < 1.5, 2.5, 3.5, 4.5 >;
__asm movups xmm0, a ; // поместить 4 переменные с плавающей точкой из a в регистр xmm0
movups xmm1, b ; // поместить 4 переменные с плавающей точкой из b в регистр xmm1
mulps xmm1, xmm0 ; // перемножить пакеты плавающих точек: xmm1=xmm1*xmm0
movups a, xmm1 ; // выгрузить результаты из регистра xmm1 по адресам a
>;

Таким образом, вместо четырех последовательных скалярных умножений мы сделали только одно — векторное.
Векторные процессоры могут значительно ускорить вычисления над большими объемами данных, но сфера их применимости ограничена, далеко не везде применимы типовые операции над фиксированными массивами.
Впрочем, гонка векторизации вычислений далеко не закончена — так в последних процессорах Intel появилось новое векторное расширение AVX (Advanced Vector Extension)
Но гораздо интереснее сейчас выглядят

Графические процессоры


Теоретическая вычислительная мощность процессоров в современных видеокартах растет гораздо быстрее, чем в обычных процессорах (посмотрим знаменитую картинку от NVIDIA)

Не так давно эта мощность была приспособлена для универсальных высокопроизводительных вычислений с помощью CUDA/OpenCL.
Архитектура графических процессоров (GPGPU, General Purpose computation on GPU – универсальные расчеты средствами видеокарты), близка к уже рассмотренной SIMD.
Она называется SIMT — (single instruction, multiple threads, одна инструкция — множество потоков). Так же как в SIMD операции производятся с массивами данных, но степеней свободы гораздо больше — для каждой ячейки обрабатываемых данных работает отдельная нить команд.
В результате
1) Параллельно могут выполняться сотни операций над сотнями ячеек данных.
2) В каждом потоке выполняется произвольная последовательность команд, она может обращаться к разным ячейкам.
3) Возможны ветвления. При этом, правда, параллельно могут выполняться только нити с одной и той же последовательностью операций.

GPGPU позволяют достичь на некоторых задачах впечатляющих результатов. но существуют и принципиальные ограничения, не позволяющие этой технологии стать универсальной палочкой-выручалочкой, а именно
1) Ускорить на GPU можно только хорошо параллелящийся по данным код.
2) GPU использует собственную память. Трансфер данных между памятью GPU и памятью компьютера довольно затратен.
3) Алгоритмы с большим количеством ветвлений работают на GPU неэффективно

Мультиархитектуры-

Итак, мы дошли до полностью параллельных архитектур — независимо параллельных и по командам, и по данным.
В классификации Флинна это MIMD (Multiple Instruction stream, Multiple Data stream — Множественный поток Команд, Множественный поток Данных).
Для использования всей мощности таких систем нужны многопоточные программы, их выполнение можно «разбросать» на несколько микропроцессоров и этим достичь увеличения производительности без роста частоты. Различные технологии многопоточности давно применялись в суперкомпьютерах, сейчас они «спустились с небес» к простым пользователям и многоядерный процессор уже скорее правило, чем исключение. Но многоядерность далеко не панацея.

Суров закон, но это закон

Параллельность, это хороший способ обойти ограничение роста тактовой частоты, но у него есть собственные ограничения.
Прежде всего, это закон Амдала, который гласит
Ускорение выполнения программы за счет распараллеливания её инструкций на множестве вычислителей ограничено временем, необходимым для выполнения её последовательных инструкций.

Ускорение кода зависит от числа процессоров и параллельности кода согласно формуле


Действительно, с помощью параллельного выполнения мы можем ускорить время выполнения только параллельного кода.
В любой же программе кроме параллельного кода есть и последовательные участки и ускорить их с помощью увеличения количества процессоров не получится, над ними будет работать только один процессор.


Например, если выполнение последовательного кода занимает всего 25% от времени выполнения всей программы, то ускорить эту программу более чем в 4 раза не получится никак.
Давайте построим график зависимости ускорения нашей программы от количества параллельно работающих вычислителей-процессоров. Подставив в формулу 1/4 последовательного кода и 3/4 параллельного, получим

Грустно? Еще как.
Самый быстрый в мире суперкомпьютер с тысячами процессоров и терабайтами памяти на нашей, вроде бы даже неплохо (75%!) параллелящейся задаче, меньше чем вдвое быстрее обычного настольного четырехядерника.
Причем всё еще хуже, чем в этом идеальном случае. В реальном мире затраты обеспечение параллельности никогда не равны нулю и потому при добавлении все новых и новых процессоров производительность, начиная с некоторого момента, начнет падать.
Но как же тогда используется мощь современных очень-очень многоядерных суперкомпьютеров?
Во многих алгоритмах время исполнения параллельного кода сильно зависит от количества обрабатываемых данных, а время исполнения последовательного кода — нет. Чем больше данных требуется обработать, тем больше выигрыш от параллельности их обработки. Потому «загоняя» на суперкомп большие объемы данных получаем хорошее ускорение.
Например перемножая матрицы 3*3 на суперкомпьютере мы вряд ли заметим разницу с обычным однопроцессорным вариантом, а вот умножение матриц, размером 1000*1000 уже будет вполне оправдано на многоядерной машине.
Есть такой простой пример: 9 женщин за 1 месяц не могут родить одного ребенка. Параллельность здесь не работает. Но вот та же 81 женщина за 9 месяцев могут родить (берем максимальную эффективность!) 81 ребенка, т.е.получим максимальную теоретическую производительность от увеличения параллельности, 9 ребенков в месяц или, в среднем, тот же один ребенок в месяц на 9 женщин.
Большим компьютерам — большие задачи!

Мультипроцессор

Мультипроцессор — это компьютерная система, которая содержит несколько процессоров и одно видимое для всех процессоров. адресное пространство.
Мультипроцессоры отличаются по организации работы с памятью.

Системы с общей памятью


В таких системах множество процессоров (и процессорных кэшей) имеет доступ к одной и той же физической оперативной памяти. Такая модель часто называется симметричной мультипроцессорностью (SMP). Доступ к памяти при таком построении системы называется UMA (uniform memory access, равномерный доступ) т.к. любой процессор может обратиться к любой ячейке памяти и скорость этого обращения не зависит от адреса памяти. Однако каждый микропроцессор может использовать свой собственный кэш.

Несколько подсистем кэш-памяти процессоров, как правило, подключены к общей памяти через шину

Посмотрим на рисунок.
Что у нас хорошего?
Любой процессор обращается ко всей памяти и вся она работает одинаково. Программировать для таких систем проще, чем для любых других мультиархитектур. Плохо то, что все процессоры обращаются к памяти через шину, и с ростом числа вычислительных ядер пропускная способность этой шины быстро становится узким местом.
Добавляет головной боли и проблема обеспечения когерентности кэшей.

Когерентность кэша

Допустим, у нас есть многопроцессорный компьютер. Каждый процессор имеет свой кэш, ну, как на рисунке вверху. Пусть некоторую ячейку памяти читали несколько процессоров — и она попала к ним в кэши. Ничего страшного, пока это ячейка неизменна — из быстрых кэшей она читается и как-то используется в вычислениях.
Если же в результате работы программы один из процессоров изменит эту ячейку памяти, чтоб не было рассогласования, чтоб все остальные процессоры «видели» это обновление придется изменять содержимое кэша всех процессоров и как-то тормозить их на время этого обновления.
Хорошо если число ядер/процессоров 2, как в настольном компьютере, а если 8 или 16? И если все они обмениваются данными через одну шину?
Потери в производительности могут быть очень значительные.

Многоядерные процессоры


Как бы снизить нагрузку на шину?
Прежде всего можно перестать её использовать для обеспечения когерентности. Что для этого проще всего сделать?
Да-да, использовать общий кэш. Так устроены большинство современных многоядерных процессоров.

Посмотрим на картинку, найдем два отличия от предыдущей.
Да, кэш теперь один на всех, соответственно, проблема когерентности не стоит. А еще круги превратились в прямоугольники, это символизирует тот факт, что все ядра и кэши находятся на одном кристалле. В реальной действительности картинка несколько сложнее, кэши бывают многоуровневыми, часть общие, часть нет, для связи между ними может использоваться специальная шина, но все настоящие многоядерные процессоры не используют внешнюю шину для обеспечения когерентности кэша, а значит — снижают нагрузку на нее.
Многоядерные процессоры — один из основных способов повышения производительности современных компьютеров.
Уже выпускаются 6 ядерные процессоры, в дальшейшем ядер будет еще больше… где пределы?
Прежде всего «ядерность» процессоров ограничивается тепловыделением, чем больше транзисторов одновременно работают в одном кристалле, тем больше этот кристалл греется, тем сложнее его охлаждать.
А второе большое ограничение — опять же пропускная способность внешней шины. Много ядер требуют много данных, чтоб их перемалывать, скорости шины перестает хватать, приходится отказываться от SMP в пользу

NUMA (Non-Uniform Memory Access — «неравномерный доступ к памяти» или Non-Uniform Memory Architecture — «Архитектура с неравномерной памятью») — архитектура, в которой, при общем адресном пространстве, скорость доступа к памяти зависит от ее расположения Обычно у процессора есть " своя" память, обращение к которой быстрее и «чужая», доступ к которой медленнее.
В современных системах это выглядит примерно так


Процессоры соединены с памятью и друг с другом с помощью быстрой шины, в случае AMD это Hyper Transport, в случае последних процессоров Intel это QuickPath Interconnect
Т.к. нет общей для всех шины то, при работе со «своей» памятью, она перестает быть узким местом системы.
NUMA архитектура позволяет создавать достаточно производительные многопроцессорные системы, а учитывая многоядерность современных процессоров получим уже очень серьезную вычислительную мощность «в одном корпусе», ограниченную в основном сложностью обеспечения кэш-когерентности этой путаницы процессоров и памяти.
Но если нам нужна еще большая мощность, придется объединять несколько мультипроцессоров в

Мультикомпьютер

Сводим все воедино

Ну вот, вкратце пробежались почти по всем технологиям и принципам построения мощных вычислительных систем.
Теперь есть возможность представить себе строение современного суперкомпьютера.
Это мультикомпьютер-кластер, каждый узел которого — NUMA или SMP система с несколькими процессорами, каждый из процессоров с несколькими ядрами, каждое ядро с возможностью суперскалярного внутреннего параллелизма и векторными расширениями. Вдобавок ко всему этому во многих суперкомпьютерах установлены GPGPU — ускорители.
У всех этих технологий есть плюсы и ограничения, есть тонкости в применении.
А теперь попробуйте эффективно загрузить-запрограммировать всё это великолепие!
Задача нетривиальная… но очень интересная.
Что-то будет дальше?

В связи с кризисом классической структуры ЭВМ дальнейшее поступательное развитие вычислительной техники напрямую связано с переходом к параллельным вычислениям, с идеями построения многопроцессорных систем и сетей, объединяющих большое количество отдельных процессоров и (или) ЭВМ. Здесь появляются огромные возможности совершенствования средств вычислительной техники. Но следует отметить, что при несомненных практических достижениях в области параллельных вычислений, до настоящего времени отсутствует их единая теоретическая база.

Термин вычислительная система появился в начале - середине 60-х гг. при появлении ЭВМ III поколения. Это время знаменовалось переходом на новую элементную базу - интегральные схемы. Следствием этого явилось появление новых технических решений: разделение процессов обработки информации и ее ввода-вывода, множественный доступ и коллективное использование вычислительных ресурсов в пространстве и во времени. Появились сложные режимы работы ЭВМ - многопользовательская и многопрограммная обработка.

Под вычислительной системой (ВС) понимают совокупность взаимосвязанных и взаимодействующих процессоров или ЭВМ, периферийного оборудования и программного обеспечения, предназначенную для сбора, хранения, обработки и распределения информации.

Отличительной особенностью ВС по отношению к ЭВМ является наличие в них нескольких вычислителей, реализующих параллельную обработку. Создание ВС преследует следующие основные цели: повышение производительности системы за счет ускорения процессов обработки данных, повышение надежности и достоверности вычислений, предоставление пользователям дополнительных сервисных услуг и т.д.


Параллелизм в вычислениях в значительной степени усложняет управление вычислительным процессом, использование технических и программных ресурсов. Эти функции выполняет операционная система ВС.

Классификация вычислительных систем

Существует большое количество признаков, по которым классифицируют вычислительные системы.

  • универсальные
  • специализированные.
  • многомашинные
  • многопроцессорные
    • процессоров;
    • оперативной памяти;
    • каналов связи.

    Взаимодействие на уровне оперативной памяти (ОП) сводится к программной реализации общего поля оперативной памяти, что несколько проще, но также требует существенной модификации ОС. Под общим полем имеется в виду равнодоступность модулей памяти: все модули памяти доступны всем процессорам и каналам связи.

    На уровне каналов связи взаимодействие организуется наиболее просто и может быть достигнуто внешними по отношению к ОС программами-драйверами, обеспечивающими доступ от каналов связи одной машины к внешним устройствам других (формируется общее поле внешней памяти и общий доступ к устройствам ввода-вывода).

    Все вышесказанное иллюстрируется схемой взаимодействия компьютеров в двухмашинной ВС, представленной на рис. 1.



    Рис. 1. Схема взаимодействия компьютеров в двухмашинной ВС

    Ввиду сложности организации информационного взаимодействия на 1-м и 2-м уровнях в большинстве многомашинных ВС используется 3-й уровень, хотя и динамические характеристики (в первую очередь быстродействие), и показатели надежности таких систем существенно ниже.

    Многопроцессорные системы (МПС) содержат несколько процессоров, информационно взаимодействующих между собой либо на уровне регистров процессорной памяти, либо на уровне ОП. Этот тип взаимодействия используется в большинстве случаев, ибо организуется значительно проще и сводится к созданию общего поля оперативной памяти для всех процессоров. Общий доступ к внешней памяти и устройствам ввода-вывода обеспечивается обычно через каналы ОП. Важным является и то, что многопроцессорная вычислительная система работает под управлением единой ОС, общей для всех процессоров. Это существенно улучшает динамические характеристики ВС, но требует наличия специальной, весьма сложной ОС.

    Однако МПС имеют и существенные недостатки. Они, в первую очередь, связаны с использованием ресурсов общей оперативной памяти. При большом количестве объединяемых процессоров возможно возникновение конфликтных ситуаций, в которых несколько процессоров обращаются с операциями типа ”чтение” и ”запись” к одним и тем же ячейкам памяти. Помимо процессоров к ОП подключаются все процессоры ввода-вывода, средства измерения времени и т.д. Поэтому вторым серьезным недостатком МПС является проблема коммутации и доступа абонентов к ОП. Процедуры взаимодействия очень сильно усложняют структуру ОС МПС. Опыт построения подобных систем показал, что они эффективны при небольшом числе объединяемых процессоров (от 2 до 10). Схема взаимодействия процессоров в ВС показана на схеме рис. 2. Типичным примером массовых многомашинных ВС могут служить компьютерные сети, примером многопроцессорных ВС — суперкомпьютеры.


    Рис. 2. Схема взаимодействия процессоров в ВС

    • однородные системы
    • неоднородные системы.

    Неоднородная ВС включает в свой состав различные типы компьютеров или процессоров. При построении системы приходится учитывать их различные технические и функциональные характеристики, что существенно усложняет создание и обслуживание неоднородных систем.

    • централизованные
    • децентрализованные
    • со смешанным управлением.

    В децентрализованных системах функции управления распределены между ее элементами. Каждая ЭВМ (процессор) системы сохраняет известную автономию, а необходимое взаимодействие между элементами устанавливается по специальным наборам сигналов. С развитием ВС и, в частности, сетей ЭВМ, интерес к децентрализованным системам постоянно растет.

    В системах со смешанным управлением совмещаются процедуры централизованного и децентрализованного управления. Перераспределение функций осуществляется в ходе вычислительного процесса, исходя из сложившейся ситуации.

    По принципу закрепления вычислительных функций за отдельными ЭВМ (процессорами) различают системы с жестким и плавающим закреплением функций. В зависимости от типа ВС следует решать задачи статического или динамического размещения программных модулей и массивов данных, обеспечивая необходимую гибкость системы и надежность ее функционирования.

    • территориально-сосредоточенные –это когда все компоненты располагаются в непосредственной близости друг от друга;
    • распределенные –это когда компоненты могут располагаться на значительном расстоянии, например, вычислительные сети;
    • структурно-одноуровневые –это когда имеется лишь один общий уровень обработки данных;
    • многоуровневые(иерархические) структуры это когда в иерархических ВС машины или процессоры распределены по разным уровням обработки информации, некоторые машины (процессоры) могут специализироваться на выполнении определенных функций.

    На рис. 3 представлена принципиальная схема классификации вычислительных систем.


    Рис. 3. Принципиальная схема классификации вычислительных систем.

    Суперкомпьютеры и особенности их архитектуры

    К суперкомпьютерам относятся мощные многопроцессорные вычислительные машины с быстродействием сотни миллионов — десятки миллиардов операций в секунду. Создать такие высокопроизводительные компьютеры на одном микропроцессоре (МП) не представляется возможным ввиду ограничения, обусловленного конечным значением скорости распространения электромагнитных волн (300 000 км/с), т.к. время распространения сигнала на расстояние несколько миллиметров (линейный размер стороны МП) при быстродействии 100 млрд операций/с становится соизмеримым со временем выполнения одной операции. Поэтому суперкомпьютеры создаются в виде высокопараллельных многопроцессорных вычислительных систем (МПВС).

    1. Магистральные (конвейерные) МПВС, у которых процессор одновременно выполняет разные операции над последовательным потоком обрабатываемых данных. По принятой классификации такие МПВС относятся к системам с многократным потоком команд и однократным потоком данных (МКОД или MISD — Multiple Instruction Single Data).
    2. Векторные МПВС, у которых все процессоры одновременно выполняют одну команду над различными данными — однократный поток команд с многократным потоком данных (ОКМД или SIMD — Single Instruction Multiple Data).
    3. Матричные МПВС, у которых микропроцессор одновременно выполняет разные операции над последовательными потоками обрабатываемых данных —многократный поток команд с многократным потоком данных (МКМД или MIMD — Multiple Instruction Multiple Data).
    • структура MIMD в классическом ее варианте;
    • параллельно-конвейерная модификация, иначе MMISD, то есть многопроцессорная (Multiple) MISD-архитектура;
    • параллельно-векторная модификация, иначе MSIMD, то есть многопроцессорная SIMD-архитектура.


    Рис. 3. Условные структуры однопроцессорной (SISD) и названных многопроцессорных ВС

    Кластерные суперкомпьютеры и особенности их архитектуры

    Существует технология построения больших компьютеров и суперкомпьютеров на базе кластерных решений. По мнению многих специалистов, на смену отдельным, независимым суперкомпьютерам должны прийти группы высокопроизводительных серверов, объединяемых в кластер.

    Кластер - это связанный набор полноценных компьютеров, используемый в качестве единого вычислительного ресурса.

    Удобство построения кластерных ВС заключается в том, что можно гибко регулировать необходимую производительность системы, подключая к кластеру с помощью специальных аппаратных и программных интерфейсов обычные серийные серверы до тех пор, пока не будет получен суперкомпьютер требуемой мощности. Кластеризация позволяет манипулировать группой серверов как одной системой, упрощая управление и повышая надежность.

    Важной особенностью кластеров является обеспечение доступа любого сервера к любому блоку как оперативной, так и дисковой памяти. Эта проблема успешно решается, например, объединением систем SMP-архитектуры на базе автономных серверов для организации общего поля оперативной памяти и использованием дисковых систем RAID для памяти внешней (SMP — Shared Memory multiprocessing, технология мультипроцессирования с разделением памяти).

    Для создания кластеров обычно используются либо простые однопроцессорные персональные компьютеры, либо двух- или четырех- процессорные SMP-серверы. При этом не накладывается никаких ограничений на состав и архитектуру узлов. Каждый из узлов может функционировать под управлением своей собственной операционной системы. Чаще всего используются стандартные ОС: Linux, FreeBSD, Solaris, Unix, Windows NT. В тех случаях, когда узлы кластера неоднородны, то говорят о гетерогенных кластерах.

    1. Первый подход применяется при создании небольших кластерных систем. В кластер объединяются полнофункциональные компьютеры, которые продолжают работать и как самостоятельные единицы, например, компьютеры учебного класса или рабочие станции лаборатории.
    2. Второй подход применяется в тех случаях, когда целенаправленно создается мощный вычислительный ресурс. Тогда системные блоки компьютеров компактно размещаются в специальных стойках, а для управления системой и для запуска задач выделяется один или несколько полнофункциональных компьютеров, называемых хост-компьютерами. В этом случае нет необходимости снабжать компьютеры вычислительных узлов графическими картами, мониторами, дисковыми накопителями и другим периферийным оборудованием, что значительно удешевляет стоимость системы.
    • высокая суммарная производительность;
    • высокая надежность работы системы;
    • наилучшее соотношение производительность/стоимость;
    • возможность динамического перераспределения нагрузок между серверами;
    • легкая масштабируемость, то есть наращивание вычислительной мощности путем подключения дополнительных серверов;
    • удобство управления и контроля работы системы.
    • задержки разработки и принятия общих стандартов;
    • большая доля нестандартных и закрытых разработок различных фирм, затрудняющих их совместное использование;
    • трудности управления одновременным доступом к файлам;
    • сложности с управлением конфигурацией, настройкой, развертыванием, оповещениями серверов о сбоях и т.п.

    1 пример из «жизни» систем

    • память: T2-P: PC1600/PC2100/PC2700/PC3200, до 2Гб, 2 DIMM слота
    • память: T2-R: PC1600/PC2100/PC2700, до 2Гб, 2 DIMM слота;
    • материнская плата: P4P8T, Intel 865G / ICH 5, 800/533/400МГц FSB
    • материнская плата: P4R8T, ATI RS300/IXP200, 800/533/400MГц FSB;
    • видео: интегрированная 64Mб
    • ATI Radeon 9100, DVI, 64Mб;
    • слоты: одинаковы для обеих систем: PCI, AGP 8x;
    • сеть: 10/100Mбит/с, Wireless 802.11b WiFi
    • сеть: 10/100Мбит/с;
    • аудио: 6-канальный AC97 S/PDIF выход кнопки Audio DJ, Audio CD, FM radio studio
    • аудио: 6-канальный AC97 S/PDIF выход;
    • карты памяти: Compact Flash Type I/II, Microdrive, Memory Stick, Memory Stick Pro, Secure Digital, MultiMedia Card, Smart Media Card
    • карты памяти: нет;
    • отсеки для приводов: 3.5 FDD, 3.5 HDD, 5.25 ODD
    • отсеки для приводов: 3.5 FDD, 3.5 HDD, 5.25 ODD;
    • выходы на задней панели: 4xUSB 2.0, PS/2 клавиатура, PS/2 мышь, VGA (D-SUB), Game / MIDI, RJ-45 LAN (10/100 Мбит/с), Line-in/out, выход динамиков, FM антенна, антенна адаптера 802.11b, GIGA LAN, ТВ-тюнер
    • выходы на задней панели: 2xUSB 2.0, PS/2 клавиатура, PS/2 мышь, VGA (D-SUB), Game / MIDI, RJ-45 LAN(10/100 Мбит/с), Line-in/out, выход наушников, FM антенна

    Blue Gene будет установлен в Ливерморскую национальную лабораторию им. Лоуренса. Основные его задачи - моделирование погодных условий и изучение космического пространства.

    Blue Gene будет состоять из 130 тысяч процессоров, и его производительность будет составлять 360 терафлопс.

    Чипы IBM используются в системе, неформально называемой Big Mac. PowerPC 970 состоит из 1100 двухпроцессорных компьютеров Apple G5, занимая в общем списке третью строчку, с производительностью в 10,3 триллионов операций в секунду.

    Процессоры Opteron используются в 2816-процессорном кластере, и его производительность составляет 8 триллионов операций в секунду.

    Интересен факт, что общая производительность 500 лучших систем растет экспоненциально, увеличиваясь в десять раз примерно каждые четыре года. Порог в 1000 терафлопов (триллионов операций в секунду) планируется достигнуть к 2005 году.

    Самые прочные позиции в списке у HP или IBM: соотношение числа систем - 165 против 159 в пользу HP

    Виды вычислительных систем (ВС) можно выделить по их классификации:

    • По назначению - 1. Универсальные; 2. Специализированные.
    • По типу построения - 1. Многомашинные; 2. Многопроцессорные.
    • По типу используемых ЭВМ или процессоров - 1. Однородные; 2. Неоднородные.
    • По принципу закрепления вычислительных функций за отдельным ЭВМ (процессорами) - 1. С жёстким закреплением функций; 2. С плавающим закреплением функций.
    • По методу управления элементами ВС - 1. Централизованные; 2. Децентрализованные; 3. Со смешанным управлением.
    • По степени территориальной разобщенности вычислительных модулей ВС - 1. Территориально-сосредоточенные; 2. Распределённые; 3. Структурно-одноуровневые; 4. Многоуровневые (иерархические) структуры.

    По назначению ВС различаются лишь тем, как они используются т.е. решение узко специализированных классов задач ( Специализированные) или широкого спектра задач ( Универсальные) . Например сервера и домашние ПК.

    По типу построения ВС различают количеством машин или процессоров. Например кластерные системы или домашние пк. Сервера или однопроцессорные ЭВМ (в настоящее время практически не используются).

    По типу используемых ЭВМ или процессоров ВС различаются характеристиками или, иначе, похожестью используемых компьютеров или процессоров.

    Однородные ВС используют однотипные компьютеры или процессоры, характеристики которых одинаковые. Тем самым такие ВС лучше организованы так как могут использовать определённые стандарты. По типу процедур, программных и технических средств, протоколов. Их проще обслуживать и модернизировать.

    Неоднородные ВС используют различные компьютеры и процессоры с разными характеристиками. Такие ВС значительно сложнее построить, так как приходится учитывать функциональные и технические характеристики.

    По принципу закрепления вычислительных функций за отдельным ЭВМ (процессорами) ВС различаются типом решаемых задач динамических или статических. Например массивы данных будут динамическими если под них выделяется память и освобождается при необходимости, а статическими если память выделяется при компиляции и не меняется в ходе работы программы. К примеру комментарии к этой статье и таблица умножения.

    По методу управления элементами ВС различают по тому как выполняются процессы управления нагрузками на компьютеры или процессоры.

    Централизованные ВС содержат один компьютер или процессор, который берёт на себя роль управляющего ресурсами и координацией взаимодействия. Тем самым повышается надёжность системы.

    Децентрализованные ВС сохраняют автономию компьютером или процессоров, однако, взаимосвязь происходит, но только по определённым наборам сигналов.

    ВС со смешанным управлением совмещены процедуры управления благодаря тому, что функции распределяются исходя из сложившейся ситуации.

    По степени территориальной разобщенности вычислительных модулей ВС различают их удалённостью друг от друга и, можно сказать, по типу связи.

    Соответственно т ерриториально-сосредоточенные ВС находятся на незначительном расстоянии друг от друга.

    А распределённые ВС располагаются в непосредственном удалении друг от друга.

    Структурно-одноуровневые ВС имеют общий уровень обработки данных. В случае с процессорами выглядит примерно так:



    Многоуровневые (иерархические) структуры ВС имеют более одного уровня обработки данных, где компьютерры или процессоры могут быть специализированы на обработку определённых данных. В случае с процессорами, это выглядит примерно так:



    Так же некоторые источники выделяют классификацию по режиму работы ВС, различающиеся временем решения задач. Например ВС реального времени, предполагающие автоматизацию процедур обработки данных, их ввода и вывода.

    Назначение и характеристики ВС. Организация вычислений в вычислительных системах. ЭВМ параллельного действия, понятия потока команд и потока данных. Ассоциативные системы. Матричные системы. Конвейеризация вычислений. Конвейер команд, конвейер данных. Суперскаляризация.

    - понятие потока команд;

    - понятие потока данных;

    - типы вычислительных систем;

    - архитектурные особенности вычислительных систем

    Вычислительные системы

    Вычислительная система (ВС) – совокупность взаимосвязанных и взаимодействующих процессоров или ЭВМ, периферийного оборудования и программного обеспечения, предназначенная для сбора, хранения, обработки и распределения информации.

    Создание ВС преследует следующие основные цели:

    · повышение производительности системы за счёт ускорения процессов обработки данных;

    · повышение надёжности и достоверности вычислений;

    · предоставление пользователю дополнительных сервисных услуг т.д.

    Тема 3.2Классификация вычислительных систем

    Классификация ВС в зависимости от числа потоков команд и данных: ОКОД (SISD), ОКМД (SIMD), МКОД (MISD), МКМД (MIMD).

    Классификация многопроцессорных ВС с разными способами реализации памяти совместного использования: UMA, NUMA, СОМА. Сравнительные характеристики, аппаратные и программные особенности.

    Классификация многомашинных ВС: МРР, NDW и COW. Назначение, характеристики, особенности.

    Примеры ВС различных типов. Преимущества и недостатки различных типов вычислительных систем.

    Классификация вычислительных систем

    Отличительной особенностью ВС по отношению к классическим ЭВМ является наличие в ней нескольких вычислителей, реализующих параллельную обработку.

    Параллелизм выполнения операций существенно повышает быстродействие системы; он может существенно повысить и надёжность (при отказе одного компонента системы его функцию может взять на себя другой), а также достоверность функционирования системы, если операции будут дублироваться, а результаты сравниваться.

    Вычислительные системы можно разделить на две группы:

    · многомашинные;

    · многопроцессорные.

    Многомашинная вычислительная система состоит из нескольких отдельных компьютеров. Каждый компьютер в многомашинной системе имеет классическую архитектуру, и такая система применяется достаточно широко. Однако эффект от применения такой вычислительной системы может быть получен только при решении задачи, имеющей специальную структуру: она должна разбиваться на столько слабо связанных подзадач, сколько компьютеров в системе.

    Многопроцессорная архитектура предполагает наличие в компьютере нескольких процессоров, поэтому параллельно может быть организовано много потоков данных и много потоков команд. Таким образом, одновременно может выполняться несколько фрагментов одной задачи. Преимущество в быстродействии многопроцессорных вычислительных систем перед однопроцессорными очевидно.

    Недостатком является возможность возникновения конфликтных ситуаций при обращении нескольких процессоров к одной области памяти.

    Особенностью многопроцессорных вычислительных систем является наличие общей оперативной памяти в качестве общего ресурса (рисунок 11).

    Рисунок 11 - Архитектура многопроцессорной вычислительной системы

    Классификация Флинна

    Среди всех рассматриваемых систем классификации ВС наибольшее распространение получила классификация, предложенная в 1966г М. Флинном. В её основу положено понятие потока, под которым понимается последовательность элементов команд или данных, обрабатываемая процессором. В зависимости от количества потоков команд и потоков данных Флинн выделяет 4 класса архитектур:

    · ОКОД – одиночный поток команд - одиночный поток данных. К ним относятся классические фон – неймановские ВМ. Конвейерная обработка не имеет значения, поэтому в класс ОКОД попадают как ВМ 6600 со скалярными функциональными устройствами, так и 7600 с конвейерными.

    · МКОД – множественный поток команд - одиночный поток данных. В этой архитектуре множество процессоров обрабатывают один и тот же поток данных. Примером могла бы служить ВС, на процессоры которой подаётся искажённый сигнал, а каждый из процессоров обрабатывает этот сигнал с помощью своего алгоритма фильтрации. Тем не менее ни Флинн, ни другие специалисты в области архитектуры компьютеров до сих пор не сумели представить реально существующей ВС, построенной на данном принципе. Ряд исследователей относят к этому классу конвейерные системы, однако это не нашло окончательного признания. Наличие пустого класса не следует считать недостатком классификации Флинна. Такие классы могут стать полезными при разработке новых концепций в теории и практике построения ВС.

    · ОКМД – один поток команд – много потоков данных – команды выдаются одним управляющим процессором, а выполняются одновременно на всех обрабатывающих процессорах над локальными данными этих процессоров. SIMD (single instruction – multiple data)

    · МКМД – много потоков команд - много потоков данных- совокупность компьютеров, работающих по своим программам со своими исходными данными. MIMD (multiple instruction – multiple data)

    Схема классификации Флинна является наиболее распространённой при первоначальной оценке ВС, поскольку сразу позволяет оценить базовый принцип работы системы. Однако у классификации Флинна имеются и очевидные недостатки: например, неспособность однозначно отнести некоторые архитектуры к тому или иному классу. Второй недостаток - чрезмерная насыщенность класса MIMD.

    Существующие вычислительные системы класса MIMD образуют три подкласса: симметричные мультипроцессоры (SMP) , кластеры и массово параллельные системы (MPP). В основе этой классификации лежит структурно – функциональный подход.

    Симметричные мультипроцессоры состоят из совокупности процессоров, обладающих одинаковыми возможностями доступа к памяти и внешним устройствам и функционирующих под управлением одной операционной системы (ОС). Частный случай SMP – однопроцессорные компьютеры. Все процессоры SMP имеют разделяемую общую память с единым адресным пространством.

    Использование SMP обеспечивает следующие возможности:

    · масштабирование приложений при низких начальных затратах, путём применения без преобразования приложений на новых более производительных аппаратных средствах;

    · создание приложений в привычных программных средах;

    · одинаковое время доступа ко всей памяти;

    · поддержку когерентности совокупности кэшей и блоков основной памяти, неделимые операции синхронизации и блокировки.

    Кластерная система образуется из модулей, объединённых системой связи или разделяемыми устройствами внешней памяти, например, дисковыми массивами.

    Размер кластера варьируется от нескольких модулей до нескольких десятков модулей.

    В рамках как совместно используемой, так и распределенной памяти реализуется несколько моделей архитектур системы памяти. На рисунке 12 приведена классификация таких моделей, применяемых в вычислительных системах класса MIMD (верна и для класса SIMD).

    Рисунок 12 – Классификация моделей архитектур памяти вычислительных систем

    В системах с общей памятью все процессоры имеют равные возможности по доступу к единому адресному пространству. Единая память может быть построена как одноблочная или по модульному принципу, но обычно практикуется второй вариант.

    Вычислительные системы с общей памятью, где доступ любого процессора к памяти производится единообразно и занимает одинаковое время, называют системами с однородным доступом к памятии обозначают аббревиатурой UMA (Uniform Memory Access). Это наиболее распространенная архитектура памяти параллельных ВС с общей памятью

    Альтернативный способ построения многопроцессорной ВС с общей памятью на основе UMA показан на рисунке 13в. Здесь шина заменена коммутатором, маршрутизирующим запросы процессора к одному из нескольких модулей памяти. Несмотря на то, что имеется несколько модулей памяти, все они входят в единое виртуальное адресное пространство. Преимущество такого подхода в том, что коммутатор в состоянии параллельно обслуживать несколько запросов. Каждый процессор может быть соединен со своим модулем памяти и иметь доступ к нему на максимально допустимой скорости. Соперничество между процессорами может возникнуть при попытке одновременного доступа к одному и тому же модулю памяти. В этом случае доступ получает только один процессор, а прочие - блокируются.

    К сожалению, архитектура UMA не очень хорошо масштабируется. Наиболее распространенные системы содержат 4-8 процессоров, значительно реже 32-64 процессора. Кроме того, подобные системы нельзя отнести к отказоустойчивым, так как отказ одного процессора или модуля памяти влечет отказ всей ВС.

    Рисунок 13 - Общая память:

    а)объединение процессоров с помощью шины и система с локальными кэшами;

    б) производительность системы как функция от числа процессоров на шине;

    в) многопроцессорная ВС с общей памятью, состоящей из отдельных модулей

    Другим подходом к построению ВС с общей памятью является неоднородный доступ к памяти, обозначаемый как NUMA (Non-Uniform Memory Access). Здесь, по-прежнему, фигурирует единое адресное пространство, но каждый процессор имеет локальную память. Доступ процессора к собственной локальной памяти производится напрямую, что намного быстрее, чем доступ к удаленной памяти через коммутатор или сеть. Такая система может быть дополнена глобальной памятью, тогда локальные запоминающие устройства играют роль быстрой кэш-памяти для глобальной памяти. Подобная схема может улучшить производительность ВС, но не в состоянии неограниченно отсрочить выравнивание прямой производительности. При наличии у каждого процессора локальной кэш-памяти (рисунок 13а) существует высокая вероятность (р> 0,9) того, что нужные команда или данные уже находятся в локальной памяти. Разумная вероятность попадания в локальную память существенно уменьшает число обращений процессора к глобальной памяти и, таким образом, ведет к повышению эффективности. Место излома кривой производительности (верхняя кривая на рисунке 13б), соответствующее точке, в которой добавление процессоров еще остается эффективным, теперь перемещается в область 20 процессоров, а точка, где кривая становится горизонтальной, - в область 30 процессоров.

    В рамках концепции NUMA реализуется несколько различных подходов, обозначаемых аббревиатурами СОМА, CC-NUMA и NCC-NUMA.

    В архитектуре только с кэш-памятью(СОМА, Cache Only Memory Architecture) локальная память каждого процессора построена как большая кэш-память для быстрого доступа со стороны «своего» процессора. Кэши всех процессоров в совокупности рассматриваются как глобальная память системы. Собственно глобальная память отсутствует. Принципиальная особенность концепции СОМА выражается в динамике. Здесь данные не привязаны статически к определенному модулю памяти и не имеют уникального адреса, остающегося неизменным в течение всего времени существования переменной. В архитектуре СОМА данные переносятся в кэш-память того процессора, который последним их запросил, при этом переменная не фиксирована уникальным адресом и в каждый момент времени может размещаться в любой физической ячейке. Перенос данных из одного локального кэша в другой не требует участия в этом процессе операционной системы, но подразумевает сложную и дорогостоящую аппаратуру управления памятью. Для организации такого режима используют так называемые каталоги кэшей. Отметим также, что последняя копия элемента данных никогда из кэш-памяти не удаляется.

    Поскольку в архитектуре СОМА данные перемещаются в локальную кэш-память процессора-владельца, такие ВС в плане производительности обладают существенным преимуществом над другими архитектурами NUMA. С другой стороны, если единственная переменная или две различные переменные, хранящиеся в одной строке одного и того же кэша, требуются двум процессорам, эта строка кэша должна перемещаться между процессорами туда и обратно при каждом доступе к данным. Такие эффекты могут зависеть от деталей распределения памяти и приводить к непредсказуемым ситуациям.

    Отличие модели с кэш-некогерентным доступом к неоднородной памяти(NCC-NUMA, Non-Cache Coherent Non-Uniform Memory Architecture) от CC-NUMA очевидно из названия. Архитектура памяти предполагает единое адресное пространство, но не обеспечивает согласованности глобальных данных на аппаратном уровне. Управление использованием таких данных полностью возлагается на программное обеспечение (приложения или компиляторы). Несмотря на это обстоятельство, представляющееся недостатком архитектуры, она оказывается весьма полезной при повышении производительности вычислительных систем с архитектурой памяти типа DSM, рассматриваемой в разделе «Модели архитектур распределенной памяти».

    В целом, ВС с общей памятью, построенные по схеме NUMA, называют архитектурами с виртуальной общей памятью(virtual shared memory architectures). Данный вид архитектуры, в частности CC-NUMA, в последнее время рассматривается как самостоятельный и довольно перспективный вид вычислительных систем класса M1MD.

    Подобная организация характеризуется рядом достоинств. Во-первых, при доступе к данным не возникает конкуренции за шину или коммутаторы: каждый процессор может полностью использовать полосу пропускания тракта связи с собственной локальной памятью. Во-вторых, отсутствие общей шины означает, что нет и связанных с этим ограничений на число процессоров: размер системы ограничивает только сеть, объединяющая процессоры. В-третьих, снимается проблема когерентности кэш-памяти. Каждый процессор вправе самостоятельно менять свои данные, не заботясь о согласовании копий данных в собственной локальной кэш-памяти с кэшами других процессоров.

    - примеры ВС различных типов.

    - выбирать тип вычислительной системы в соответствии с решаемой задачей.

    Читайте также: