Многопроцессорные системы Операционные системы UNIX

Многопроцессорные операционные системы

Многопроцессорные системы Операционные системы UNIX

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

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

1. Операционные системы мэйнфреймов

К высшей категории относятся операционные системы мейнфреймов (больших универсальных машин) — компьютеров, занимающих целые залы и до сих пор еще встречающихся в крупных центрах обработки корпоративных данных. Такие компьютеры отличаются от персональных компьютеров по объемам ввода-вывода данных.

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

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

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

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

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

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

Примером операционной системы универсальных машин может послужить OS/390, наследница OS/360. Однако эти операционные системы постепенно вытесняются вариантами операционной системы UNIX, например Linux.

2. Серверные операционные системы

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

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

Типичными представителями серверных операционных систем являются Solaris, FreeBSD, Linux и Windows Server 200x.

Многопроцессорные операционные системы

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

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

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

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

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

На многопроцессорных системах могут работать многие популярные операционные системы, включая Windows и Linux.

Статьи к прочтению:

  • Многоуровневая файловая система
  • Моделирование системной динамики в ithink

:

Источник: http://csaa.ru/mnogoprocessornye-operacionnye-sistemy/

Многопроцессорные системы (MIMD-системы)

Многопроцессорные системы Операционные системы UNIX
Многопроцессорные системы (MIMD-системы)

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

Для MIMD-систем в настоящее время общепризнанна классификация, основанная на используемых способах организации оперативной памяти в этих системах. По этой классификации, прежде всего, различают мультипроцессорные вычислительные системы (или мультипроцессоры) или вычислительные системы с разделяемой памятью (multiprocessors, common memory systems, shared-memory systems) и мультикомпьютерные вычислительные системы (мультикомпьютеры) или вычислительные системы с распределенной памятью (multicomputers, distributed memory systems). Структура мультипроцессорной и мультикомпьютерной систем приведена рис. 1, где – процессор, – модуль памяти.

Рис. 1.  а) – структура мультипроцессора; б) – структура мультикомпьютера.

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

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

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

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

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

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

Однородные мультипроцессоры с равноправным (симметричным) доступом к общей оперативной памяти принято называть SMP-системами (системами с симметричной мультипроцессорной архитектурой). SMP-системы появились как альтернатива дорогим мультипроцессорным системам на базе векторно-конвейерных процессоров и векторно-параллельных процессоров (см. Рис.2).

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

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

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

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

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

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

Однородные мультикомпьютеры с распределенной памятью называются вычислительными системами с массивно-параллельной архитектурой (MPP-системами) – см. рис.2.

Нечто среднее между SMP-системами и MPP-системами представляют собой NUMA-системы.

Кластерные системы (вычислительные кластеры).

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

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

SMP-системы

Все процессоры SMP-системы имеют симметричный доступ к памяти, т.е. память SMP-системы представляет собой UMA-память. Под симметричностью понимается следующее: равные права всех процессоров на доступ к памяти; одна и та же адресация для всех элементов памяти; равное время доступа всех процессоров системы к памяти (без учета взаимных блокировок).

Общая структура SMP-системы приведена на рис. 3. Коммуникационная среда SMP-системы строится на основе какой-либо высокоскоростной системной шины или высокоскоростного коммутатора. Кроме одинаковых процессоров и общей памяти M к этой же шине или коммутатору подключаются устройства ввода-вывода.

За кажущейся простотой SMP-систем скрываются значительные проблемы, связанные в основном с оперативной памятью. Дело в том, что в настоящее время скорость работы оперативной памяти значительно отстает от скорости работы процессора.

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

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

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

Рис. 3.  Общая структура SMP-системы

Наиболее известными SMP-системами являются SMP-cерверы и рабочие станции IBM, HP, Compaq, Dell, Fujitsu и др. SMP-система функционирует под управлением единой операционной системой (чаще всего – UNIX и подобной ей).

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

Известным неприятным свойством SMP-систем является то, что их стоимость растет быстрее, чем производительность при увеличении числа процессоров в системе.

MPP-системы.

MPP-системы строится из процессорных узлов, содержащих процессор, локальный блок оперативной памяти, коммуникационный процессор или сетевой адаптер, иногда – жесткие диски и/или другие устройства ввода/вывода. По сути, такие модули представляют собой полнофункциональные компьютеры (см. рис. 4.).

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

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

Заметим, что необходимость наличия (в том или ином виде) на каждом процессоре MPP-системы операционной системы, позволяет использовать только ограниченный объем памяти каждого из процессоров.

По сравнению с SMP-системами, архитектура MPP-системы устраняет одновременно как проблему конфликтов при обращении к памяти, так и проблему когерентности кэш-памяти.

Главным преимуществом MPP-систем является хорошая масштабируемость. Так супер-ЭВМ серии CRAY T3E, способны масштабироваться до 2048 процессоров. Практически все рекорды по производительности на сегодняшний день установлены именно на MPP-системах, состоящих из нескольких тысяч процессоров.

Рис. 4.  Общая структура MPP-системы.

С другой стороны, отсутствие общей памяти заметно снижает скорость межпроцессорного обмена в MPP-системах. Это обстоятельство для MPP-систем выводит на первый план проблему эффективности коммуникационной среды.

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

Этим же объясняется то, что написание эффективных параллельных программ для MPP-систем представляет собой более сложную задачу, чем написание таких же программ для SMP-систем.

Для широкого круга задач, для которые известны хорошо зарекомендовавшие себя последовательные алгоритмы, не удается построить эффективные параллельные алгоритмы для MPP-систем.

NUMA-системы.

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

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

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

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

Среди NUMA-систем выделяют следующие типы систем:

  • COMA-системы, в которых в качестве оперативной памяти используется только локальная кэш-память процессоров (cache-only memory architecture – COMA);
  • CC-NUMA-системы, в которых аппаратно обеспечивается когерентность локальной кэш-памяти разных процессоров (cache-coherent NUMA – CC-NUMA);
  • NCC-NUMA-системы, в которых аппаратно не поддерживается когерентность локальной КЭШ памяти разных процессоров (non-cache coherent NUMA – NCC-NUMA). К данному типу относится, например, система Cray T3E.

Рис. 5.  Общая структура NUMA-системы.

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

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

Источник: http://bigor.bmstu.ru/?cnt/?prn=y/?doc=Parallel/ch010103.mod

Поддержка многоядерных процессоров во встраиваемых системах

Многопроцессорные системы Операционные системы UNIX

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

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

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

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

Рис. 1. Структура типового многоядерного процессора

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

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

Режимы многопроцессорной обработки и ОСРВ

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

  • асимметричная многопроцессорная обработка (Asymmetric multiprocessing, AMP) – отдельная ОС или индивидуальный образ одной ОС работает на каждом ядре процессора;
  • симметричная многопроцессорная обработка – единый образ ОС одновременно управляет всеми ядрами процессора, и приложения могут использовать любое ядро;
  • исключительная многопроцессорная обработка – единый образ ОС одновременно управляет всеми ядрами процессора, но каждое приложение закреплено за конкретным ядром.

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

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

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

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

https://www.youtube.com/watch?v=qlonD4pJSRs

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

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

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

Разнородная среда исполнения предъявляет несколько иные требования.

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

Для того чтобы избежать конфликтов ресурсов, такие ОС также должны предусматривать стандартизированные механизмы для доступа к разделяемым аппаратным компонентам.

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

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

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

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

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

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

Рис. 2. Использование разнородной асимметричной многопроцессорной обработки (AMP) для режимов работы панели управления и информационной панели

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

В данном случае обе операционные системы, исполняемые на двух ядрах, должны поддерживать последовательный механизм межзадачного взаимодействия, к примеру обладающий свойством «прозрачности» протокол межзадачного взаимодействия (Transparent Inter-Process Communication Protocol).

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

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

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

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

Наиболее типовыми ОС, поддерживающими AMP, являются системы жесткого реального времени, такие как VxWorks, OSE и QNX, однако в настоящий момент и отдельные реализации Linux, адаптированные под реальное время, имеют данную функциональность.

Распределение ресурсов

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

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

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

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

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

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

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

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

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

Симметричная многопроцессорность (Symmetric multiprocessing, SMP) предлагает исполнение только одной ОС во всех ядрах системы.

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

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

Запуская только одну ОС, можно динамически распределять ресурсы между специальными приложениями, но не между ядрами центрального процессора, обеспечивая тем самым более эффективное использование доступного оборудования.

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

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

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

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

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

В действительности, некоторые ОС (такие, как Linux, Solaris, QNX) позволяют применять один и тот же исходный код при исполнении на любом из типов процессоров.

Хорошо спроектированные ОС с симметричной многопроцессорностью, такие как Windows, Solaris, QNX Neutrino, позволяют потокам управления в пределах приложения исполняться одновременно на любом ядре.

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

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

В сценарии панели управления, представленном на рис. 3, симметричная многопроцессорность позволяет всем потокам управления, принадлежащим разным процессам, выполняться на любом ядре. К примеру, процесс интерфейса командной строки (Command-Line Interface, CLI) может выполняться в то время, как приложение трассировки осуществляет интенсивные вычисления.

Рис. 3. Использование симметричной многопроцессорной обработки в панели управления

Исключительная многопроцессорность

Исключительная многопроцессорность (Bound Multiprocessing, BMP) — новый режим, предложенный компанией QNX Software Systems, сохраняющий преимущества прозрачного администратора ресурсов симметричной многопроцессорной обработки и дающий разработчикам возможность привязывать программные задачи к конкретным ядрам.

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

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

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

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

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

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

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

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

Рис. 4. Использование исключительной многопроцессорности в полудуплексном режиме

В примере, показанном на рис.

4, система с исключительной многопроцессорностью работает в полудуплексном режиме.

Принимающий процесс с несколькими потоками управления работает на ядре 0, а передающий процесс, также обладающий несколькими потоками, выполняется на ядре 1.

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

В примере, показанном на рис.

5, приложения панели управления (интерфейс командной строки; эксплуатация, администрирование и техническое обслуживание; управление информационной панелью) выполняются на ядре 0, в то время как входные и выходные приложения информационной панели работают совместно на ядре 1. Разработчики могут реализовать механизм межзадачного взаимодействия (IPC) для этого сценария, используя локальные механизмы ОС или синхронизированные защищенные структуры разделяемой памяти.

Рис.5. Использование исключительной многопроцессорной обработки (BMP) для режимов работы панели управления и информационной панели

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

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

Вопрос выбора

Должен ли разработчик выбрать асимметричную, симметричную или исключительную многопроцессорность?

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

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

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

Андрей Николаев (a.nikolaev@swd.ru) — директор по развитию компании SWD Software (Cанкт-Петербург).

Поддержка многоядерных процессоров во встраиваемых системах

Поделитесь материалом с коллегами и друзьями

Источник: https://www.osp.ru/os/2006/07/3290779

Многопроцессорные системы Операционные системы UNIX

Многопроцессорные системы Операционные системы UNIX

Сохрани ссылку в одной из сетей:

2.2 Виды многопроцессорныхсистем и операционные системы для работыс ними

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

Системыс общей памятью: к системам этого типаотносятся компьютеры с SMP архитектурой,различные разновидности NUMA систем имультипроцессорные векторно-конвейерныекомпьютеры. Характерным словом для этихкомпьютеров является “единый”:единая оперативная память, единаяоперационная система, единая подсистемаввода-вывода. Только процессоры образуютмножество.

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

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

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

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

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

Кластерныетехнологии стали логическим продолжениемразвития идей, заложенных в архитектуреMPP систем.

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

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

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

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

3. Операционная система UNIXв многопроцессорной конфигурации

В середине 60-х годов сотрудникикомпании General Electrics, AT&T Bell Laboratories иМасачусетского института написалиоперационную систему Multics, в которойбыло реализовано то, о чем даже и незадумывались другие разработчикипрограммных продуктов. Проект, из-заслабой развитости и отсутствия поддержкидругих разработчиков, был закрыт в конце60-х годов.

После Multics был разработан UNIX,который, в отличии от предшественницы,поддерживал не только многозадачность,но и работал на разных платформах,включая предков современных ПК, которыхтогда называли как мини-компьютеры. Воснове создания операционной системылежит игра Space Travel, которая была разработанапрограммистом Кеном Томпсоном.

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

Пришлосьусовершенствовать файловую системудля ускорения работоспособности системы,добавить функции управления системнымиустройствами, процессором, памятью.Управление всеми функциональнымивозможностями занимался мощный командныйпроцессор Bourne Again Shell, в народе простоBash. UNIX стал одной из первых POSIX-совместимыхоперационных систем.

(POSIX- Portable Opereating System Interface for computer environments,интерфейспереносимойоперационнойсистемы.)

За весьма короткий срок операционнаясистема превратилась в мощную многозадачнуюи многопользовательскую операционнуюсистему, которую некто Браян Керниганпредложил назвать Unics, название походилоот системы Multics, а уже позже Unics назваликороче – UNIX.

Первой официальной версиейсистемы является выпущенная в ноябре1971 года система UNIX 1.0. Операционнаясистема UNIX была написана на ассемблере.

Кена Томпсона Деннис Ритчи предложилвнести в исходный код операционнойсистемы некоторые изменения, вплоть дотого, что исходный код системы был позженаписан с использованием языкапрограммирования C.

Неофициально UNIX стал продаваемымпрограммным продуктом уже с 1972 года.Лицензию на владение системой покупалимногие компании, включая IBM, Nowell и дажесама Microsoft.

В 1975 году Калифорнийскийуниверситет в Беркли купил права наUnix и выпустил свою систему – Berkeley SoftwareDistribution, BSD.

позже последовали различныевыпуски Unix BSD, BSD 4 и так далее, из которыхдо сегодняшнего дня сохранилась толькоFreeBSD – сетевая многозадачная имногопользовательская операционнаясистема, ныне основной конкурент Linux.

В 1980 году компания Microsoft, повелению моды, купила Unix и себе, создавна ее основе операционную систему Xenix.На основе данной операционной системыбыл выпущен MS DOS. Система была однозадачнойи однопользовательской и не поддерживаламногозадачность. Многие удивляются,почему команды DOS похожи на командыинтерпретатора Unix? Просто потому чтоDOS – это сильно модифицированный UNIX.

В конце 80-х годов UNIX был полноправнымвладельцем компьютерного рынка. К этомувремени в системе уже был реализованчеткий графический интерфейс пользователя(GUI, Graphic User Interface), их в составе системыобычно было два, которые частичносохранились и до наших времен: Motiff иOpen Look. Позже эти два стандарта былиобъеденены в один: CDE – Common Desktop Environment,еще позже – KDE.

За время своего существованияпроект UNIX стал коммерческим иширокопродаваемым. На его основе быласоздана операционная система Minix (своегорода мини Unix). Распрастранялась системабесплатно, на основе общедоступнойлицензии GPL (General Public Licence). Уже на основеMinix был создан гигант Linux, создателькоторого Линус Торвальдс.

3.1 Общий обзор особенностейсистемы UNIX

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

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

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

Особенности UNIX, отличающие данноесемейство от других ОС:

■ Файловая система древовидная,чувствительная к регистру символов вименах, очень слабые ограничения надлину имён.

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

■ Командная строка находится вадресном пространстве запускаемогопроцесса, а не извлекается системнымвызовом из процесса интерпретатора.

■ Ввод/вывод только черездескрипторы файлов.

■ Традиционно крайне слабаяподдержка асинхронного ввода/вывода,по сравнению с VMS и Windows NT.

■ Интерпретатор команд естьобыкновенное приложение, общающееся сядром обыкновенными системными вызовами(в RSX-11 и VMS интерпретатор команд выполнялсякак специальное приложение, специальнымобразом размещенное в памяти, пользующеесяспециальными системными вызовами,поддерживались также системные вызовы,дающие возможность приложению обращатьсяк своему родительскому интерпретаторукоманд).

■ Команда командной строки естьне более чем имя файла программы, нетребуется специальная регистрация испециальная разработка программ каккоманд (что являлось обычной практикойв RSX-11, RT-11).

■ Не принят подход с программой,задающей пользователю вопросы о режимахсвоей работы, вместо этого используютсяпараметры командной строки (в VMS, RSX-11,RT-11 программы работали также с команднойстрокой, но при её отсутствии выдавализапрос на ввод команд).

■ Пространство имён устройствна диске в каталоге /dev, поддающеесяуправлению администратором, в отличиеот подхода Windows, где это пространствоимен размещается в памяти ядра, иадминистрирование этого пространства(например, задание прав доступа) крайнезатруднено из-за отсутствия егопостоянного хранения на дисках (строитсякаждый раз при загрузке).

■ Широкое использование текстовыхфайлов для хранения настроек, в отличиеот двоичной базы данных настроек, как,например, в Windows.

■ Широкое использование утилитобработки текста для выполненияповседневных задач под управлениемскриптов.

■ «Раскрутка» ОС после загрузкиядра путём исполнения скриптов стандартныминтерпретатором команд.

■ Адресное пространство делитсяна глобальное для всех процессов ядрои на локальную для процесса части, нет«групповой» части адресного пространства,как в VMS и Windows NT, как и возможностизагрузки туда кода и его исполнениятам.

■ Использование двух уровнейпривилегий процессора вместо четырёхв VMS.

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

■ Отсутствие APC и аналогов, тоесть произвольных (а не жестко перечисленныхв стандартном множестве) сигналов, недоставляемых до явного пожеланияпроцесса их получить (Windows, VMS).

Концепция сигнала уникальна дляUNIX, и крайне сложна в переносе на другиеОС, такие, как Windows.

3.1.1 Преимущества операционнаясистема UNIX

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

Корпорация AT&T, ограниченнаязаконами в своих возможностях, продавалалицензии и исходные коды системы подостаточно низкой цене, поэтому UNIX сталапопулярной среди многих пользователейпо всему миру.

Так как в комплект поставкивходили и исходные коды, пользователиимели возможность экспериментироватьс ними, улучшать их, а также обмениватьсядруг с другом созданными изменениями.Корпорация AT&T встраивала многие изновшеств в следующие версии системы.

Развитие системы UNIX оказалосьочень открытым процессом. Добавленияпоступали из учебных заведений,коммерческих организаций и отхакеров-энтузиастов из разных континентови стран мира. Даже после коммерциализацииUNIX многие производители ОС поддержаликонцепцию открытых систем и сделалисвои разработки доступными для других,создавая спецификации открытых систем,такие как NFS.

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

Ядро небольшого размераимело минимальный набор основных служб.Утилиты небольшого размера производилималый объем манипуляций с данными.

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

Источник: https://works.doklad.ru/view/bVFrI3GRIgo/3.html

Многопроцессорные системы

Многопроцессорные системы Операционные системы UNIX

5.1. Основные понятия

Многопроцессорная система (МПС) – система, в которой команды на шине могут быть восприняты более чем от одного микропроцессора. Шиной управляют поочередно много процессоров.

Многопроцессорная система содержит несколько процессоров, рабо­тающих с общей оперативной памятью (общее поле оперативной памяти), и управляется одной общей опера­ционной системой (рис. 16). Часто в микропроцес­сорной системе организуется общее поле внешних запоми­нающих устройств (ВЗУ).

Рис. 16. Структура одно­уровневой многопроцессор­ной системы

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

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

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

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

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

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

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

Многопроцессорные системы могут быть однородными и неоднородными.

Однородные многопроцессорные системы – системы, содержащие однотипные процессоры.

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

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

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

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

Рис. 17. Иерархическая многопроцессорная система

5.2. Разделение и распределение памяти

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

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

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

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

Система обладает наибольшей универсальностью, если информация, хранимая в любом модуле памяти, доступна любому процессору и устройству ввода-вывода.

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

Затраты на такой матричный коммутатор растут пропорционально произведению числа модулей памяти на число процессоров и устройств ввода-вывода.

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

Рис. 18. Многопроцессорная система с матричной архитектурой

Каждый из процессоров П1,…,Пm имеет доступ к любому модулю оперативной памяти ОЗУ1,…,ОЗУn.

Последние работают параллельно и допускают n одно­временных обращений со стороны процессоров или устройств ввода-вывода.

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

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

Рис. 19. Многопроцессорная система с индивидуальной па­мятью

Каждый процессор П1,…,Пm обращается к своему модулю оперативной памяти ОЗУ1,…,ОЗУm. Однако для редкого обмена дан­ными между процессорами предусмотрены блоки обмена БО и вспомогательная общая оперативная память ОЗУ. Операции обмена инициируются процессорами.

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

Рис. 20. Многопроцессорная система с общей памятью данных

5.3. Способы коммутации

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

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

Многопроцессорные системы с матричным коммутатором (рис. 18) обладают наибольшей универсальностью.

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

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

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

Рис. 21. Магистральная много­процессорная система

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

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

Для повышения пропускной способности магистра­ли иногда создают систему с несколькими параллельными магистралями.

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

Рис. 22. Матричная мно­гопроцессорная система

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

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

имеется множественный поток команд.

Рис. 23. Конвейерная многопроцессорная система

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

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

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

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

Отметим, что однопроцессорная система в соответствии с рассматриваемым признаком классификации содержит одинарный поток данных.

Рис. 24. Организация обра­ботки данных в матричной системе

5.4. Организация вычислительного процесса

Организацию вычислений рассмотрим на примере вычисления быстрого преобразования Фурье (БПФ).

При спектральном анализе сигналов с широкой полосой частот (до десятков и сотен мегагерц) даже при использо­вании БПФ требования, предъявляемые к быстродействию вычисли­тельной системы, оказываются весьма жесткими. Данная задача может быть решена только в рамках многопроцессорной ор­ганизации вычислительной системы.

На рис. 25 показан граф, иллюстрирующий необходимую последо­вательность преобразований переменной х (в точках отсчета х0,…,х7) в коэффициенты дискретного ряда Фурье A0,…,A7.

Каждая вершина изображает переменную, а дуги исходят из тех вершин, которые вносят вклад в вершину, к которой направлена дуга. Все вклады аддитивны, и вес каждого вклада Wj = exp(-2jр/N) (где N – число точек отсчета анализируемой переменной) указан рядом с соответствующей дугой.

Из графа видно, что вычисление A7 = B3 + C3W7 можно одновремен­но выполнить на N процессорах (в данном случае на восьми). Процессор Рi в исходном состоянии получает на вход одно из значений х (в порядке, указанном на рис. 25) и в конце вычисления выдает значение Аi.

Таким образом, горизонтальные пути на графе соответствуют обработке внутри процессора, а промежуточные вершины — промежуточным этапам вычисления. Остальные дуги графа определяют межпроцессорные обмены. На каждом этапе вычисления число обменов равно N.

Результаты, полученные на любом этапе, нужны только для следующего этапа.

Рис. 25. Граф преобразования переменных хi в коэффициенты дискретного преобразования Фурье

Если на одном процессоре решение может быть получено за N·log2N шагов, то на N процессорах требуется в N раз меньше шагов.

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

В данном случае все процессоры, начавшие вычисления, заняты их выполнением до получения результата.

На практике процессоры освобождаются постепенно, причем, как правило, в неизвестные заранее моменты времени.

Если освобождающийся ресурс не используется (он выделен только для данной работы), это приводит к снижению параллелизма и соответственно к снижению эффективности использования ресурсов системы.

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

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

5.5. Способы взаимодействия процессоров в системах

Существует два основных способа взаимодействия процессоров в системах: один основан на использовании общей памяти, другой – на передаче сообщений.

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

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

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

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

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

5.6. Применение сопроцессора х87 в машинах типа IBM PC

Примером многопроцессорной системы является использование сопроцессора.

Сопроцессор 8087 для 8086/8088 подключается параллельно прак­тически ко всем интерфейсным сигналам центрального процессора. Отслеживая сигналы состояния процессора, сопроцессор вместе с ним просматривает и декодирует инструкции, “вылавливая” из них свои (по коду “Escape”).

Если команда подра­зумевает обмен данными с памятью, процессор “помогает” сопроцессору в вычислении адреса, освобождая его от всех “хитростей” формирования физического адреса, принятых в 8086.

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

В IBM PC сигнал прерывания от сопро­цессора через логическую схему поступает на вход NMI процессора и вызывает немаски­руемое прерывание (вектор 2).

Сопроцессоры 80287 и 80387 с процессорами 80286 и 80386 обмениваются данны­ми через шинные циклы ввода/вывода, автоматически генерируемые процессором.

Процессоры 486 и выше могут иметь лишь встроенный сопроцессор, интерфейс с внешним сопроцессором у них не предусмотрен.

Не нашли то, что искали? Воспользуйтесь поиском:

Источник: https://studopedia.ru/9_161075_mnogoprotsessornie-sistemi.html

Vse-referaty
Добавить комментарий