Файл: Мультипроцессоры (основные понятия).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 22.04.2023

Просмотров: 89

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Подобные конфликты могут возникнуть на аппаратном уровне между процессорами, и обычно должны решаться аппаратными средствами, или с комбинацией оборудования и программного обеспечения[16] [6, 10, 12].

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

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

2.1. Понятие мультипроцессора

Мультипроцессор является это подклассом многопроцессорных компьютерных систем, в которых есть одно видимое для всех процессоров адресное пространство и несколько процессоров. В таксономии Флинна мультипроцессоры относятся к классу SM-MIMD-машин. Мультипроцессор запускает одну копию операционной системы с одним набором таблиц, в том числе следящих какие страницы памяти свободны[17] [10].

2.2. Классификация мультипроцессоров

По ролям, которые играют процессоры в мультипроцессорной системе, различают симметричные мультипроцессоры SMP и асимметричные мультипроцессоры AMP:

  • симметричные мультипроцессоры используются, когда все процессоры имеют одинаковый доступ к периферии и памяти и играют одинаковую роль;

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

Технология ассиметричных процессоров была лишь переходной в 60-х годах до того момента, когда была отработана технология симетричных процессоров [18].

По способу адресации памяти различают несколько типов мультипроцессоров, среди которых:

  • Uniform Memory Access;

  • Non Uniform Memory Access;

  • Cache Only Memory Access.

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

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


Такой способ работы с памятью используется в системах с симметричной мультипроцессорностью, поэтому термины SMP и UMA часто используются вместе как «SMP/UMA».

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

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

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

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

Обычно, существует межпроцессорное взаимодействие между контроллерами кеша для сохранения согласованной картины памяти в случаях, когда более чем один кеш хранит одну и ту же ячейку памяти. Именно поэтому, платформы ccNUMA теряют в производительности в случаях, когда несколько процессоров подряд пытаются получить доступ к одному блоку памяти. Поддерживающая NUMA операционная система пытается уменьшить частоту доступа такого типа путем перераспределения памяти и процессоров таким способом, чтобы избежать блокировки и гонок[22].

В качестве примера многопроцессорных машин с архитектурой ccNUMA можно привести серию машин компании Silicon Graphics SGI Origin 2000. Суперкомпьютер ASCI Blue Mountain является одним из самых мощных суперкомпьютеров 1999 года. Он представлял собой массово-параллельный кластер из 48 машин SGI Origin 2000 по 128 процессоров в каждой.

Также мультипроцессоры могут разделяться на процессоры гомогенного типа, когда все процессоры в системе одинаковы, или гетерогенного типа - когда процессоры в системе, наоборот, разного типа[23] [3, 6, 9, 12].


2.3. Программирование мультипроцессоров

При программировании мультипроцессоров можно использовать две модели программирования: message passing, при котором на каждом процессоре запускается отдельный процесс, и они обмениваются данными друг с другом путем обмена сообщениями, либо многопоточность, при которой на каждом процессоре запускается поток исполнения, и они обмениваются друг с другом данными через общие переменные в общей памяти. Многопоточное программирование используется либо неявно декларативно автоматически самим компилятором или с помощью директив компилятора, либо явно в компилируемых языках программирования с помощью системного API [24] [2].

2.3.1. Мультипоточность

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

Такие потоки называют также потоками выполнения; иногда называют «нитями» или неформально «тредами»[25].

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

Мультипоточность не следует путать ни с мультизадачностью, ни с мультипроцессорностью, несмотря на то, что операционные системы, реализующие мультизадачность, как правило, реализуют и мультипоточность[26].

К достоинствам мультипоточности в программировании можно отнести следующее:

  • повышение производительности процесса за счет распараллеливания процессорных вычислений и операций ввода-вывода;

  • меньшие относительно процесса временны́е затраты на создание потока;

  • упрощение программы в некоторых случаях за счет использования общего адресного пространства[27] [2, 6, 7].

2.3.2. Обмен сообщениями

В информатике обмен сообщениями является формой связи, которая используется во взаимодействии процессов, объектно-ориентированном программировании и параллельных вычислениях. Сообщение реализуется путем посылки пакетов информации получателям, которые могут означать множество вещей: данные, сигналы, вызов функций. Данный метод широко используется во всевозможных системах с параллелизмом для координации действий[28].


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

Системы обмена сообщениями являются закрытыми, так как их абстракция прячет все изменения состояний, которые могут быть использованы в реализации отсылки сообщений[29].

Базирующиеся на этой модели языки программирования обычно определяют передачу сообщения, как посылку элемента данных конечному получателю, которым может быть актор, процесс, поток или сокет. Такой обмен используется SOAP в веб-сервисах. Данная концепция является высокоуровневой версией датаграмм, за исключением того, что сообщения могут быть больше по размерам, чем пакет, и могут быть сделаны безопасными, стойкими, надежными и при желании могут быть охвачены механизмом транзакций[30].

Сообщения также часто используются в том же смысле, что и межпроцессное взаимодействие; другой широкораспространенной техникой являются конвейеры и потоки, где информация посылается в виде последовательности простейших элементов данных[31] [4, 5, 8].

2.4. История мультипроцессоров

Мультипроцессорные машины (SMP/UMA) стали предлагаться на рынке в конце 1980-х — начале 1990-х годов, сначала в виде минисуперкомпьютеров, а после как серверов обработки данных, что помогло быстро приобрести популярность на рынке серверного оборудования. Первыми мультипроцессорами с архитектурой x86 на базе процессоров Intel 80386 и Intel 486 стали сервера Compaq SystemPro, которые поступили на рынок в конце 1989 — в начале 1990 года. Рост предложений на рынке мультипроцессороных x86-серверов привел компанию Intel к созданию стандарта MultiProcessor Specification, ставшим на долгие годы стандартом де-факто для SMP-машин c архитектурой x86[32].

Первыми мультипроцессорами типа ccNUMA были компьютер Denelcor HEP компании Denelcor и KSR1 компании Kendall Square Research в середине 1980-х годов.

Были созданы также мультипроцессоры и без когерентности кэша, такие как nccNUMA.

Развитие миниатюризации в вычислительной электронике позволило размещать несколько процессоров в одном корпусе или на одном кристалле, создавая мульти-ядерные процессоры. Данный метод позволил повысить производительность процессоров путем простого увеличения количества простых по дизайну вычислительных ядер, вместо традиционных попыток усложнения вычислительного конвейера одноядерного процессора или повышения тактовой частоты. При этом многоядерные процессоры работают с многопоточными приложениями, более эффективно используют память, не рассеивают много мощности и тратят мало электроэнергии, что идеально подходит для масштабирования дата-центров[33].


Начиная с 2005 года все процессоры для потребительского рынка вычислительной техники выпускаются в многоядерном варианте, по сути являясь миниатюрными мультипроцессорами. Дальнейшее развитие данного направления приводит к появлению многоядерных мультипроцессоров, являющихся системами, в которых присутствует несколько процессоров, которые, в свою очередь, содержат по нескольку ядер. Наиболее распространенным вариантом серверов в дата-центрах на сегодняшний день является сервер с двумя 8-ядерными процессорами класса IBM POWER, Oracle SPARC или Intel Xeon, которые при этом еще и поддерживают аппаратное одновременное исполнение нескольких потоков[34] [10, 11, 12].

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

Заключение

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

В многопроцессорной обработке процессоры используются для выполнения одной последовательности команд во множественных контекстах, множественные последовательности команд в единственном контексте, или множественные последовательности команд во множественных контекстах. Были выделены 4 программные реализации многопроцессорной обработки: SISD, SIMD, MISD и MIMD.

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

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