Файл: Мультипроцессоры (Мультипроцессорная когерентность кэш – памяти ).pdf
Добавлен: 04.04.2023
Просмотров: 106
Скачиваний: 1
Большинство современных суперкомпьютеров является многопроцессорными вычислительными системами, использующими в качестве процессоров либо векторные процессоры, либо SIMD-процессоры. Данный тип машин выделяется в отдельный класс MSIMD.
Как правило, языки программирования высокого уровня и компиляторы, использующиеся при программировании MSIMD – машин предоставляют
программисту языковые конструкции, позволяющие явно указывать параллелизм отдельных участком алгоритма. В пределах отдельных задач компиляторы автоматически распараллеливают циклы, подходящие для этого. MSIMD – системы позволяют использовать наиболее подходящий метод декомпозиции: там где возможно применяются векторные инструкции, а в остальных частях программы применяются гибкие возможности MIMD – архитектуры.
За годы развития вычислительной техники многопроцессорные системы претерпели некоторое количество этапов своего развития. Исторически сложилось так, что технологию SIMD начали исследовать первой, что на мой взгляд, послужило причиной достаточно длительного перерыва в заинтересованности данной технологией. В настоящее время легко отслеживаемой является тенденция к разработке под MIMD – архитектуру. На данный момент интерес обусловлен двумя факторами:
1. Большая гибкость: MSIMD – система может работать как однопользовательская, осуществляя высокопроизводительную поддержку какой – либо задачи (для этого вида работы необходима специфическая настройка аппаратной части), как многозадачная, выполняющая несколько программ одновременно, и как некоторая комбинация этих двух типов работ. 2. Экономическая эффективность: многопроцессорные системы наиболее предсказуемо предоставляют производительность, исходя из соотношения цена/качество. На самом деле практически все современные MSIMD – системы используют процессоры, которые можно найти в обычных персональных компьютерах, рабочих станциях и т.п . Сеть обмена для связи ПЭ элементов друг с другом или с памятью является одной из отличительных особенностей MSIMD – систем. Одним из наиболее важных моментов при построении многопроцессорных вычислительных систем является модель обмена. О чём говорят характеристики производительности, выражаемые через соотношения времени, затраченного на вычисления ко времени, затраченного на передачу данных.
На основе этого было разработано две модели межпроцессорной связи, подходящих каждая для своего типа задач и аппаратного обеспечения: передача сообщений и использование общей памяти. В MSIMD – системах с общей памятью одни из процессоров записывает данные в ячейку памяти, а второй процесс считывает данные из этой же ячейки. Для обеспечения согласованности данных приходится применять синхронизацию процессов, обмен часто является взаимоисключающим: пока не записал первый процесс второму процессу остаётся только ждать освобождения ячейки памяти.
В случае использования локальной памяти в архитектуре вычислений непосредственное разбиение этой памяти невозможно. Вместо этого в данном случае реализуется передача сообщений по сети связи для межпроцессорного взаимодействия. Эффективность коммуникации зависит от канала обмена, пропускной способности памяти, протоколов передачи данных.
Зачастую, программисты не учитывают временные затраты на передачу данных в векторных системах и системах с общей памятью, так как это не показано в явном виде в процессе программирования, хотя не редко может получиться так, что проблема передачи скрадывает весь прирост ускорения при расчёте конкретной прикладной задачи. Конфликты шин, памяти и процессоров являются определяющими факторами при увеличении накладных расходов на межпроцессорное взаимодействие. Чем больше ПЭ было добавлено в систему, тем больше процессов вступают в борьбу за одни и те же данные и шины. Это приводит к состоянию насыщения. В связи с тем, что модель системы с общей памятью очень удобная для программирования её часто используют как средство оценки влияния качества обмена данных на работу всей системы в целом, даже если тестируемая система создана на базе модели локальной памяти и использует передачу сообщений как средство межпроцессорного взаимодействия.
В связи с возрастанием требований к сети передачи данных при коммутации каналов и пакетов возникает возможность перегрузки сети. Для предотвращения данной проблемы становится необходимым переработка форматов и количества передаваемых данных, декомпозиция задачи, а так же грамотная модель распределения задач.
В связи с вышеперечисленным MSIMD – машины подразделяются на два основных класса в зависимости от используемых процессоров, модели организации памяти и методики их соединения.
Первый класс образуют системы с общей памятью, содержащие, как правило, несколько десятков ПЭ, но по причине аппаратных ограничений, обычно их количество не превышает 32. Из-за относительно небольшого количества используемых процессоров появляется возможность выделить общую область памяти и соединить с ней процессорные элементы одной общей шиной. Современные процессоры имеют достаточный объём кэш-памяти для того, чтобы шина с большой пропускной способностью и общая память могли удовлетворить одновременное обращение к памяти нескольких процессоров. По причине того, что существует память с одним и тем же временем доступа такие системы называют UMA (Uniform Memory Access). При относительно небольшом объёме общей памяти и таком подходе к организации памяти эти системы в последние годы очень популярны. Структуры подобной системы можно представить в виде рисунка 1:
Рис. 1. Типовая архитектура MSIMD системы с общей памятью.
Второй класс машин образуют крупномасштабные системы с распределённой памятью. По причине использования очень большого количества процессоров при использовании модели одновременного обращения к памяти несколькими ПЭ может возникнуть ситуация, при которой пропускной способности шины может не хватить для выполнения всех запросов. По этой причине необходимо делить память между процессорами. И, что логично, при подобной организации вычислений необходимо реализовать связь между ПЭ.
На рисунке 2 изображена структура такой системы:
Рис. 2. Типовая архитектура машины с распределенной памятью
С ростом количества процессоров невозможно не заметить потребность в разработке модели с распределённой памятью, обладающей высокоскоростной сетью передачи данных. Со стремительным развитием мощности процессоров и, как следствие, ужесточением требований по увеличению пропускной способности памяти, количество ПЭ в системе, для которой необходима реализация модели с распределённой памятью, уменьшается. То же происходит и в случае уменьшения количества
процессоров, которые удаётся удержать на общей шине при модели с общей памятью.
Распределение памяти между различными узлами обладает рядом преимуществ, главными из которых выделаются следующие два. Первый – это экономически эффективное увеличение пропускной способности памяти, поскольку обращения к локальной памяти могут происходить параллельно в каждом узле системы. Второе – уменьшение времени задержки при обращении ПЭ к локальной области памяти. Указанные преимущества в свою очередь ещё сокращают количество процессорных элементов в системе, для которых модель распределённой памяти будет эффективной.
Как правило, устройства ввода/вывода так же, как и память распределены по вычислительным узлам. Это означает, что каждый узел в свою очередь может содержать относительно небольшое количество процессоров, соединённых другим способом. Такой подход к кластеризации процессоров достаточно экономически и качественно эффективен и является в настоящее время одним из самых популярных подходов при развёртывании высокопроизводительных вычислительных систем.
2. Многопроцессорные системы с общей памятью
Вычислительная система, содержащая несколько процессоров, связанных между собой и с общим для них комплектом внешних устройств, называются мультипроцессорными системами (МПС).
Производительность МПС увеличивается по сравнению с однопроцессорной системой за счет того, что мультипроцессорная организация создает возможность для одновременной обработки нескольких задач или параллельной обработки различных частей одной задачи. В мультипроцессорной системе каждый процессорный элемент (ПЭ) выполняет свою программу достаточно независимо от других процессорных элементов.
Одной из отличительных особенностей многопроцессорной вычислительной системы является сеть обмена, с помощью которой процессоры соединяются друг с другом или с памятью. Модель обмена настолько важна для многопроцессорной системы, что многие характеристики производительности и другие оценки выражаются отношением времени обработки к времени обмена, соответствующим решаемым задачам. По способу связи между процессорами и памятью системы МПС разделяются на МПС с памятью общей (полнодоступной) и индивидуальной (раздельной). В мультипроцессорах с общей памятью имеется память данных и команд, доступная всем ПЭ. С общей памятью ПЭ связываются с помощью общей шины или сети обмена. Структура МПС с общей памятью наиболее универсальна, любая информация, хранимая в памяти системы, в равной степени доступна любому процессору и каналу ввода/вывода. Отрицательное свойство МПС с общей памятью - большие затраты оборудования в коммутаторах.
В противоположность этому варианту в слабосвязанных многопроцессорных системах (машинах с локальной памятью) вся память делится между процессорными элементами и каждый блок памяти доступен только связанному с ним процессору. Отрицательным последствием разделения памяти между процессорами является потеря ресурсов быстродействия в процессе обмена информацией между модулями памяти и общей памятью системы. Потери возникают, во-первых, из-за возможных приостановок работы процессоров для ожидания моментов окончания обмена данными с общей памятью и, во-вторых, из-за дополнительной загрузки модулей памяти операциями обмена.
В МПС с общей памятью каждый из процессоров имеет доступ к любому модулю памяти, которые могут функционировать независимо друг от друга и в каждый момент времени может выполняться одновременные обращения с целью записи или чтения слова информации, число которых определяется числом модулей. Конфликтные ситуации (обращение к одному и тому же модулю памяти) разрешаются коммутатором, начинающим обслуживать первым устройство с наибольшим приоритетом, например, процессор с наименьшим номером. Каждый из процессоров может инициировать работу любого канала ввода/вывода.
Пусть в МПС используются одинаковые процессоры, т.е. МПС - однородная система. Наличие общей оперативной памяти, в которой размещается вся необходимая информация, и однородность системы позволяют выполнять любую программу на любом процессоре, т.е. любой процессор может принять на обслуживание любую заявку. Режим работы МПС, при котором каждый из процессоров может обслуживать любую заявку, называется режимом разделения нагрузки. При этом режиме каждый из N процессоров принимает на обслуживание N-ю часть заявок, т.е. N-ю часть общей нагрузки. Процесс обслуживания заявок в режиме разделения нагрузки можно рассматривать как процесс функционирования одной многоканальной системы массового обслуживания с интенсивностью l входящего потока, общей очередью О, заявки из которой выбираются в порядке поступления их в систему, и средней длительностью обслуживания заявки каждым из процессоров Пр1,…, ПрN равной J.
Заявка, поступающая в систему, содержащую N процессоров, при наличии хотя бы одного свободного процессора немедленно принимается последним на обслуживание. Если все процессоры заняты обслуживанием ранее поступивших заявок, поступающая заявка размещается в очереди.
Пусть в МПС поступает М потоков с интенсивностями l1,...,lM. Обслуживание заявок сводится к выполнению соответствующих программ, средние трудоемкости которых равны Q1,…,QM операций в расчете на один прогон программы. Примем, что обслуживание заявок выполняется на основе дисциплины FIFO. В таком случае можно считать, что система обслуживает однородный поток заявок, поступающих с интенсивностью =i
Для обслуживания любой заявки из суммарного потока требуется в среднем процессорных операций . На каждый из процессоров поступает N-я доля заявок и, следовательно, отдельный процессор обслуживает поток с интенсивностью /N .
Среднее время простоя процессоров можно получить, приняв ti за время простоя i-того процессора, тогда среднее время простоя 1 процессора вычисляется по формуле:
T=i /N,
где N- количество процессоров.
Требования, которые в настоящее время предъявляются современными процессорными элементами к пропускной способности памяти, возможно обойти добавлением больших многоуровневых кэшей. При таком подходе несколько процессоров будут иметь возможность разделять доступ к одной и той же области памяти. Данная идея, подкреплённая большим количеством микропроцессоров на рынке, в 1980 году стимулировала различных разработчиков к созданию мультипроцессоров. В данных схемах несколько ПЭ разделяли бы одну физическую память, которая соединена с ними разделяемой шиной данных. Из-за всё уменьшающегося размера процессоров и увеличения полосы пропускания памяти, достигнутой за счёт возможности реализации большого размера кэш-памяти, такие системы стали очень экономически эффективными . В самом начале разработки технический процесс позволил расположить процессор и кэш-память на одной плате, которая, в дальнейшем, закреплялась на панели, реализующей шинную архитектуру связи. В настоящее время технологии позволяют разместить на одной плате до четырёх ПЭ. На рисунке 1 изображена именно такая схема.