Симметричная многопроцессорная обработка


Традиционно компьютер рассматривается как машина, предназначенная для выполнения последовательных действий. В большинстве языков программирования алгоритм задается в виде последовательных инструкций; при работе программы процессор выполняет машинные команды последовательно, одну за другой. Каждая команда представляется в виде последовательности операций (выборка команды, вы­борка операндов, выполнение операции, сохранение результатов).

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

По мере развития компьютерных технологий и уменьшения стоимости аппа­ратного обеспечения разработчики компьютеров находили все больше возможностей реализации параллелизма. Обычно это делалось для повышения производительно­сти, а в некоторых случаях — для повышения надежности. В данной книге иссле­дуются два наиболее популярных подхода обеспечения одновременной работы про­цессоров в многопроцессорных системах: симметричная многопроцессорность (symmetric multiprocessor — SMP) и кластеры. Симметричная многопроцессорная обработка описана в этом разделе, а кластеры — в шестой части.

 

Архитектура SMP

Рассмотрим, каким образом архитектура SMP соотносится с общей катего­рией параллельных процессоров. Общепринятым методом классификации таких систем по-прежнему является систематика, в которой выделяются системы с па­раллельными процессорами, впервые введенная Флинном (Flynn) [FLYN72]. Флинн предложил ввести следующие классы компьютерных систем.

• Архитектура с одним потоком команд и одним потоком данных (Single Instruction Single Data — SISD). На одном процессоре выполняется один по­ток команд; операции выполняются над данными, которые хранятся в единой области памяти.

• Архитектура с одним потоком команд и многими потоками данных (SingleInstruction Multiple Data — SIMD). С каждым из обрабатываемых элементов связаны хранящиеся в памяти данные, и каждая команда выполняет дейст­вия с различными наборами данных, относящимися к разным процессам. Под эту категорию подпадают векторный и матричный процессоры.

• Архитектура со многими потоками команд и одним потоком данных (Multiple Instruction Single Data — MISD). Последовательность данных пе­редается набору процессоров, каждый из которых выполняет свою последо­вательность команд. Такая структура еще не была реализована.

• Архитектура со многими потоками команд и многими потоками данных (Multiple Instruction Multiple Data — MIMD). Несколько процессоров одновременно выполняют различные последовательности команд с различными наборами данных.

В схеме MIMD процессоры являются универсальными, потому что они должны иметь возможность обрабатывать все команды, необходимые для соответствующего преобразования данных. Дальнейшая классификация систем с архитектурой MIMD может производиться в соответствии с тем, как в них осуществляется обмен данны­ми между процессорами (рис. 4.8). Если каждому процессору выделяется отдельная область памяти, то каждый обрабатывающий элемент является самостоятельным компьютером. Они обмениваются между собой информацией либо через специальные каналы, либо через какие-то сетевые устройства. Такие системы известны под назва­нием кластеры (clusters) или мультикомпьютеры. Если процессоры совместно ис­пользуют общую память, то каждый из них имеет доступ к программам и данным, которые там хранятся. Процессоры могут обмениваться информацией через эту па­мять. Такие системы известны под названием многопроцессорных систем с общей памятью (shared-memory multiprocessor).

Одна из общих классификаций многопроцессорных систем основана на том, как процессы распределяются между процессорами. Два главных подхода — выделение основных и подчиненных процессоров и симметричная многопроцессор­ная обработка. В архитектуре с ведущим и ведомыми процессорами (muster/slave architecture) ядро операционной системы всегда выполняется на специально выделенном процессоре. На других процессорах могут выполняться только пользовательские программы и, возможно, утилиты операционной систе­мы. Ведущий процессор отвечает за планирование процессов или потоков. Если выполняющемуся на ведомом процессоре процессу или потоку понадобится ка­кой-нибудь системный сервис (например, вызов процедуры ввода-вывода), он должен будет послать запрос основному процессору, а затем ждать, пока сервис­ная программа не закончит свою работу. Такой подход довольно прост, и для его реализации достаточно немного усовершенствовать операционную систему, пред­назначенную для однопроцессорных многозадачных систем. Разрешение конфликтов упрощается, благодаря тому что всей памятью и всеми ресурсами ввода-вывода управляет один процессор. Этот подход имеет ряд недостатков.

• Сбой в работе основного процессора влечет за собой отказ всей системы.

• Основной процессор может тормозить работу всей системы, так как только на нем должны производиться все действия по планированию и управлению процессами.

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

Симметричные мультипроцессоры и кластеры имеют сложную архитектуру. Для их разработки нужно решать вопросы, связанные с физической организацией, структурами взаимосвязей, обменом информацией между процессорами, архитекту­рой операционной системы и обеспечением прикладными программами. Обсуждая такие системы в данном разделе и далее, в главе 13, "Распределенные вычисления, архитектура клиент/сервер и кластеры", мы затрагиваем в основном вопросы архи­тектуры операционных систем. Однако и здесь, и позже мы вскользь коснемся вопросов аппаратного устройства таких компьютерных систем.

 



Дата добавления: 2016-06-05; просмотров: 2082;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.