Мультипроцессорная
обработка —
это способ организации вычислительного
процесса в системах с несколькими
процессорами. В отличие от организации
мультипрограммирования на одном
процессоре мультипроцессорная
обработка предполагает действительно
одновременное выполнение нескольких
процессов. Это приводит к усложнению
всех алгоритмов ОС.
Симметричная
архитектура
предполагает однородность всех
процессоров и единообразное их
включение в общую схему. Традиционно
все процессоры при этом разделяют одну
память и как следствие находятся в
одном корпусе.
При
асимметричной архитектуре
процессоры могут отличаться своими
техническими характеристиками и
функциональной ролью. Требование
единого корпуса отсутствует. Система
может состоять из нескольких корпусов
(в каждом может быть один или несколько
процессоров). Такие устройства называются
кластерами.
Для симметричной
архитектуры вычислительный процесс
может строиться симметричным образом
(все процессоры равноправны) или
асимметричным (процессоры различаются
функционально). Дтя асимметричной
архитектуры возможен только асимметричный
способ ор-
В мультипроцессорных
компьютерах имеется несколько
процессоров, каждый из которых может
относительно независимо от остальных
выполнять свою программу. В мультипроцессоре
существует общая для всех процессоров
операционная система, которая оперативно
распределяет вычислительную нагрузку
между процессорами. Взаимодействие
между отдельными процессорами организуется
наиболее простым способом — через общую
оперативную память.
Основное достоинство
мультипроцессора — высокая
производительность, которая достигается
за счет параллельной или конвейерной
работы нескольких процессоров. Так как
при наличии общей памяти взаимодействие
процессоров происходит очень быстро,
мультипроцессоры могут эффективно
выполнять даже приложения с высокой
Еще одним важным
свойством мультипроцессорных систем
является отказоустойчивость, т. е.
способность к продолжению работы при
отказах некоторых элементов, например
процессоров или блоков памяти. При
этом производительность, естественно,
снижается, но не до нуля, как в обычных
системах, в которых отсутствует
избыточность.
Параллельная
обработка.
Необходимость параллельной обработки
может возникнуть, когда требуется
уменьшить время решения данной задачи,
увеличить пропускную способность,
улучшить использование
Для распараллеливания
необходимо соответствующим образом
организовать вычисления. Сюда входит
следующее:
— составление
параллельных программ, т. е. отображение
в явной форме параллельной обработки
с помощью надлежащих конструкций
языка, ориентированного на параллельные
вычислений;
— автоматическое
обнаружение параллелизма. Последовательная
программа автоматически анализируется,
и в результате может быть выявлена явная
или скрытая параллельная обработка.
Последняя должна быть преобразована
в явную.
Рассмотрим граф,
описывающий последовательность процессов
большой программы, представленный на
рис. 3. Видно, что выполнение процесса
Р}
не может начаться до завершения процессов
Р2
и
Р}
и,
в свою очередь, выполнение процессов
Р2
и
Pi
не может
начаться до завершения процесса
Ру
В данном случае для выполнения программы
достаточно трех процессоров.
Ускорение обработки
на мультипроцессоре определяется
отношением времени однопроцессорной
обработки к времени многопроцессорной
обработки:
Конвейерная
обработка улучшает использование
аппаратных ресурсов для заданного
набора процессов, каждый из которых
применяет эти ресурсы заранее
предусмотренным способом. Хорошим
примером конвейерной организации
является сборочный транспортер на
производстве, на котором изделие
последовательно проходит все стадии
вплоть до готового продукта. Преимущество
этого способа состоит в том, что каждое
изделие вдоль своего пути использует
одни и те же ресурсы, и как только
некоторый ресурс освобождается данным
изделием, он сразу же может быть
использован следующим изделием, не
ожидая,
пока предыдущее изделие достигнет конца
сборочной линии. Если транспортер несет
аналогичные, но не тождественные изделия,
то это последовательный конвейер; если
же все изделия одинаковы, это векторный
конвейер.
Последовательные
конвейеры.
На рис. 4, а
показано
устройство обработки команд, в котором
имеется четыре ступени: выборка команды
из памяти, декодирование, определение
адреса и выборка операнда, исполнение.
Ускорение
обработки в данном устройстве измеряется
отношением времени Ts,
необходимого
для последовательного выполнения L
заданий
(т. е. выполнения L
циклов
на одной обрабатывающей ступени), ко
времени Тр
выполнения
той же обработки на конвейере.
Классификация
архитектур многопроцессорных систем.
Мультипроцессоры, ориентированные
на достижение сверхбольших скоростей
работы, могут содержать по нескольку
сравнительно простых процессоров с
упрощенными блоками управления. Удачной
для различных мультипроцессоров является
классификация Флина, которая строится
по признаку одинарности или множественности
потоков команд и данных
Структура
ОКОД (один поток команд, один поток
данных) —
однопроцессорная ЭВМ (рис. 5).
Структура
ОКМД (один поток команд, много потоков
данных)
— матричная многопроцессорная
структура. Система содержит некоторое
число одинаковых сравнительно простых
быстродействующих процессоров,
соединенных друг с другом и с памятью
данных регулярным образом так, что
образуется сетка (матрица), в узлах
которой размещаются процессоры (рис.
6). Возникает сложная задача распараллеливания
алгоритмов решаемых задач для обеспечения
загрузки процессоров. В ряде случаев
эти вопросы лучше решаются в конвейерной
системе.
Структура
МКОД (много потоков команд, один поток
данных)
— конвейерная многопроцессорная
структура (рис. 7). Система имеет регу-
лярную структуру
в виде цепочки последовательно соединенных
процессоров, так что информация на
выходе одного процессора является
входной информацией для следующего в
конвейерной цепочке.
Процессоры образуют
конвейер, на вход которого
одинарный поток данных
доставляет операнды из памяти. Каждый
процессор обрабатывает соответствующую
часть задачи, передавая результаты
соответствующему процессору, который
использует их в качестве исходных
данных. Таким образом, решение задач
для некоторых исходных данных
развертывается последовательно в
конвейерной цепочке. Это обеспечивает
подведение к каждому процессору своего
потока команд, т. е. имеется множественный
поток команд. Структура
МКМД (много потоков команд, много потоков
данных)
представлена на рис. 8.
Существует
несколько типов МКМД: мультипроцессорные
системы, системы с мультиобработкой,
многомашинные системы, компьютерные
сети.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
09.04.2015200.19 Кб131.doc
- #
09.04.2015132.61 Кб511.doc
- #
09.04.2015619.52 Кб151.doc
Мультипроцессорная операционная система
Cтраница 1
Мультипроцессорные операционные системы предоставляют пользователям все возможности многозадачных систем, и, кроме того, обеспечивают одновременное решение двух наиболее важных задач, размещенных в одном или разных разделах оперативной памяти. Кроме псевдопараллельной работы осуществляется параллельное решение двух задач разными процессорами. При выходе из строя одного из процессоров комплекс переходит в однопроцессорный режим функционирования, обеспечивающий такие же возможности, как и однопроцессорная многозадачная операционная система.
[1]
Мультипроцессорная операционная система предназначена для использования в сложных системах реального времени с повышенными требованиями к производительности, времени реакции, а также живучести вычислительной Системы.
[2]
Многозадачная мультипроцессорная операционная система ( работает только на УВК СМ-2) отличается от многозадачной однопроцессорной системы тем, что обеспечивает одновременное выполнение на двух процессорах двух старших по приоритету задач. Задачи, как и операционная система, хранятся в общей оперативной памяти УВК в единственном экземпляре и никак априори не привязаны к процессорам. Если задача, решаемая одним из процессоров, переходит в состояние ожидания какого-либо внешнего по отношению к ней события, то этот процессор переключается на решение менее важной задачи, которая не выполняется другим процессором. Если для процессора не оказывается задачи, готовой к выполнению, процессор переводится в состояние динамического останова.
[3]
Мультипроцессорная операционная система АСПО организует режим мультипроцессорной обработки в конфигурациях вычислительных комплексов с двумя процессорами, работающими на общее поле оперативной памяти — и общую сеть устройств ввода — вывода. Это означает, что обоим процессорам равнодоступны все ячейки оперативной памяти ( до 128 К слов) и все устройства ввода — вывода. Режим мультипроцессорной работы существенно развивает режим мультипрограммной обработки. При обычном мультипрограммировании время одного процессора делится между несколькими задачами, квазиодновременно решающимися на вычислительном комплексе. При мультипроцессорной обработке задачи, готовые к выполнению, обрабатываются несколькими процессорами сразу. Это позволяет достичь значительного повышения производительности и снизить время реакции системы на внешние события. Кроме того, система становится менее уязвимой по отношению к сбоям и отказам процессора, так как выход из строя процессора может отразиться только на одной задаче.
[4]
Простейший способ организации мультипроцессорных операционных систем состоит в том, чтобы статически разделить оперативную память по числу центральных процессоров и дать каждому центральному процессору свою собственную память с собственной копией операционной системы.
[6]
Наконец, к этой книге было добавлено множество разделов, а многие разделы были серьезно пересмотрены. Это разделы по темам: графические интерфейсы пользователя, мультипроцессорные операционные системы, управление энергопотреблением для переносных компьютеров, надежные системы, вирусы, сетевые терминалы, файловые системы для компакт-дисков, RAID, мягкие таймеры, стабильные хранилища, справедливое планирование и новые алгоритмы замещения страниц. Добавлено множество новых задач и многие старые задачи были пересмотрены. Сборник задач с решениями может быть предоставлен профессорам, использующим эту книгу на своем курсе. Они могут получить копию книги у своего локального представителя издательства Prentice Hall. Кроме того, было добавлено более 250 новых ссылок на новейшую литературу, чтобы привести книгу в соответствие с современностью.
[7]
Наконец, к Этой книге было добавлено множество разделов, а многие разделы были серьезно пересмотрены. Это разделы по темам: графические интерфейсы пользователя, мультипроцессорные операционные системы, управление энергопотреблением для переносных компьютеров, надежные системы, вирусы, сетевые терминалы, файловые системы для компакт-дисков, RAID, мягкие таймеры, стабильные хранилища, справедливое планирование и новые алгоритмы замещения страниц. Добавлено множество новых задач и многие старые задачи были пересмотрены. Сборник задач с решениями может быть предоставлен профессорам, использующим эту книгу на своем курсе. Они могут получить копию книги у своего локального представителя издательства Prentice Hall. Кроме того, было добавлено более 250 новых ссылок на новейшую литературу, чтобы привести книгу в соответствие с современностью.
[8]
Мультипроцессор с общей памятью ( или просто мультипроцессор) представляет собой компьютерную систему, в которой два или более центральных процессора делят полный доступ к общей оперативной памяти. Программа, работающая на любом центральном процессоре, видит нормальное ( обычно разбитое на страницы) виртуальное адресное пространство. При правильной организации это свойство формирует основу межпроцессорного обмена информацией: один центральный процессор пишет данные в память, а другой считывает их оттуда. По большей части мультипроцессорные операционные системы представляют собой просто обычные операционные системы. Они обрабатывают системные вызовы, управляют памятью, предоставляют службы файловой системы и управляют устройствами ввода-вывода. Тем не менее есть области, в которых они обладают уникальными свойствами. К этим областям относятся синхронизация процессов, управление ресурсами и планирование. Ниже сначала будет кратко рассмотрено мультипроцессорное аппаратное обеспечение, а затем мы перейдем к одному из этих вопросов операционной системы.
[9]
Так, кроме приоритетов задач может быть учтено и их размещение в модулях оперативной памяти. В таком режиме в каждый данный момент времени выполняются наиболее приоритетные, но расположенные в различных модулях оперативной памяти задачи. Благодаря этому достигается более высокая производительность системы в целом, так как ликвидируются издержки, связанные с одновременной работой нескольких процессоров с одним и тем же модулем памяти. Независимо от дисциплины распределения процессоров между задачами в мультипроцессорной операционной системе проводится периодический контроль правильности работы процессоров и в случае неправильной работы или отказа одного из них осуществляется автоматический переход в режим работы на меньшем числе процессоров. Супервизор мультипроцессорных операционных систем обеспечивает, как правило, выполнение всех обрабатывающих задач, подготовленных для работы в соответствующих однопроцессорных ( однозадачных либо многозадачных) системах, не предъявляя к программам пользователей никаких дополнительных требований по их подготовке. В частности, параллельно используемые реентерабельные программы из основной библиотеки подпрограмм допускают использование одной и той же копии подпрограммы несколькими процессорами одновременно, не требуя дополнительной оперативной памяти на размещение обрабатывающих программ.
[10]
Так, кроме приоритетов задач может быть учтено и их размещение в модулях оперативной памяти. В таком режиме в каждый данный момент времени выполняются наиболее приоритетные, но расположенные в различных модулях оперативной памяти задачи. Благодаря этому достигается более высокая производительность системы в целом, так как ликвидируются издержки, связанные с одновременной работой нескольких процессоров с одним и тем же модулем памяти. Независимо от дисциплины распределения процессоров между задачами в мультипроцессорной операционной системе проводится периодический контроль правильности работы процессоров и в случае неправильной работы или отказа одного из них осуществляется автоматический переход в режим работы на меньшем числе процессоров. Супервизор мультипроцессорных операционных систем обеспечивает, как правило, выполнение всех обрабатывающих задач, подготовленных для работы в соответствующих однопроцессорных ( однозадачных либо многозадачных) системах, не предъявляя к программам пользователей никаких дополнительных требований по их подготовке. В частности, параллельно используемые реентерабельные программы из основной библиотеки подпрограмм допускают использование одной и той же копии подпрограммы несколькими процессорами одновременно, не требуя дополнительной оперативной памяти на размещение обрабатывающих программ.
[11]
Страницы:
1
Взоры ведущих игроков ИТ-индустрии все чаще обращаются к многоядерным процессорам и для этого имеются достаточные основания — по сравнению с традиционными интегральными схемами, они предоставляют большую вычислительную мощность посредством параллелизма, предлагают лучшую системную организацию, а также работают на меньших тактовых частотах.
Взоры ведущих игроков ИТ-индустрии все чаще обращаются к многоядерным процессорам и для этого имеются достаточные основания — по сравнению с традиционными интегральными схемами, они предоставляют большую вычислительную мощность посредством параллелизма, предлагают лучшую системную организацию, а также работают на меньших тактовых частотах. Эффективное использование многоядерной технологии может повысить производительность и масштабируемость встраиваемых приложений.
Процесс перехода к многоядерным процессорам происходит весьма быстрыми темпами — такие процессоры уже заняли центральное место в линейках продуктов ведущих поставщиков полупроводниковых изделий, предлагающих микросхемы, включающие от двух до восьми ядер.
Определенное влияние многоядерные технологии способны оказать на системных разработчиков и программистов, обладающих большим опытом в области однопроцессорных архитектур, но имеющих недостаточно специальных знаний о конфигурациях, предусматривающих многопроцессорную обработку. Например, при управлении разделяемыми ресурсами в многоядерном чипе, когда каждое ядро имеет отдельную кэш-память первого уровня, одновременно разделяя кэш-память второго уровня, подсистемы памяти и прерываний, а также периферийные устройства (рис. 1), системный разработчик должен обеспечить каждому ядру исключительный доступ к определенным ресурсам и гарантировать, что приложения, работающие на одном ядре, не будут обращаться к ресурсам, предназначенным другому ядру.
Взоры ведущих игроков ИТ-индустрии все чаще обращаются к многоядерным процессорам и для этого имеются достаточные основания — по сравнению с традиционными интегральными схемами, они предоставляют большую вычислительную мощность посредством параллелизма, предлагают лучшую системную организацию, а также работают на меньших тактовых частотах. Эффективное использование многоядерной технологии может повысить производительность и масштабируемость встраиваемых приложений.Процесс перехода к многоядерным процессорам происходит весьма быстрыми темпами — такие процессоры уже заняли центральное место в линейках продуктов ведущих поставщиков полупроводниковых изделий, предлагающих микросхемы, включающие от двух до восьми ядер. Определенное влияние многоядерные технологии способны оказать на системных разработчиков и программистов, обладающих большим опытом в области однопроцессорных архитектур, но имеющих недостаточно специальных знаний о конфигурациях, предусматривающих многопроцессорную обработку. Например, при управлении разделяемыми ресурсами в многоядерном чипе, когда каждое ядро имеет отдельную кэш-память первого уровня, одновременно разделяя кэш-память второго уровня, подсистемы памяти и прерываний, а также периферийные устройства (рис. 1), системный разработчик должен обеспечить каждому ядру исключительный доступ к определенным ресурсам и гарантировать, что приложения, работающие на одном ядре, не будут обращаться к ресурсам, предназначенным другому ядру.
Наличие нескольких ядер может привести к увеличению сложности разработки, связанной с подключением дополнительных механизмов и внесением изменений в исходный код, разработанный для одноядерных архитектур. Так, для взаимодействия между собой приложения, выполняемые в различных ядрах, могут потребовать использования эффективных механизмов межзадачного взаимодействия (Interprocess Communication, IPC), инфраструктуру данных в совместно используемой памяти, а также базисные элементы синхронизации для защиты разделяемых ресурсов. Перенос кода также представляет собой проблему. Режимы многопроцессорной обработки и ОСРВОперационная система, выбранная для многоядерной архитектуры, может существенно повлиять на трудоемкость решения проблем, связанных с многоядерными технологиями, однако многое будет зависеть от того, поддерживает ли ОС различные режимы многопроцессорной обработки, предусмотренные в многоядерном микропроцессоре. Данные режимы характеризуются тремя основными реализациями:
Асимметричная многопроцессорная обработкаАссиметричная многопроцессорность предусматривает режим исполнения, подобный используемому в традиционных однопроцессорных системах, который хорошо знает и понимает большинство разработчиков. Следовательно, этот режим предлагает относительно простой путь перенесения существующего кода. Он также реализует прямой механизм для отслеживания того, как используются ядра центрального процессора. Наконец, в большинстве случаев, режим позволяет разработчикам применять стандартные инструменты и методы отладки. Асимметричная многопроцессорная обработка может быть либо однородной — на каждом ядре исполняется операционная система одного типа и версии, либо разнородной — ядра работают под управлением различных ОС или разных версий одной ОС. В однородной среде исполнения разработчики могут использовать несколько ядер путем выбора ОС, которая поддерживает распределенную программную модель, например QNX Neutrino. Установленная на целевую систему, данная модель позволяет исполняемым в одном ядре приложениям прозрачно взаимодействовать с другими приложениями и системными службами (к примеру, с драйверами устройств и наборами протоколов) других ядер, однако без значительной загрузки центрального процессора, свойственной традиционным формам межзадачного взаимодействия. Разнородная среда исполнения предъявляет несколько иные требования. В этом случае разработчик должен либо реализовать собственную схему взаимодействия, либо выбрать две ОС, которые имеют общую инфраструктуру (вероятно, основанную на протоколе IP) для межпроцессорного взаимодействия. Для того чтобы избежать конфликтов ресурсов, такие ОС также должны предусматривать стандартизированные механизмы для доступа к разделяемым аппаратным компонентам. Приведем пример использования разнородной среды: одно ядро обрабатывает входной поток информационного обмена от аппаратного интерфейса, а другое — отвечает за обработку исходящего трафика. В силу того что трафик представляется двумя независимыми потоками, двум ядрам нет необходимости взаимодействовать и обмениваться данными между собой. В результате операционная система не должна обеспечивать механизм межзадачного взаимодействия между ядрами. Несмотря на это, она должна гарантировать производительность в реальном времени, необходимую для того, чтобы справиться с потоками трафика. Существует и другой пример использования однородной среды, в котором два ядра работают с распределенной панелью управления, при этом каждое ядро обращается к различным частям информационной панели. Для правильного управления информационной панелью приложения, выполняемые на нескольких ядрах, должны функционировать в согласованном режиме. Для реализации этой согласованности ОС должна обеспечивать надежную поддержку механизмов межзадачного взаимодействия, таких как инфраструктура общей памяти для информации таблицы маршрутизации.
В приведенном примере использования разнородной среды исполнения (рис. 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) может выполняться в то время, как приложение трассировки осуществляет интенсивные вычисления.
В приведенном примере использования разнородной среды исполнения (рис. 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) может выполняться в то время, как приложение трассировки осуществляет интенсивные вычисления.
Исключительная многопроцессорностьИсключительная многопроцессорность (Bound Multiprocessing, BMP) — новый режим, предложенный компанией QNX Software Systems, сохраняющий преимущества прозрачного администратора ресурсов симметричной многопроцессорной обработки и дающий разработчикам возможность привязывать программные задачи к конкретным ядрам. Как и в случае симметричной многопроцессорности, одна копия ОС сохраняет полное представление обо всех системных ресурсах, позволяя динамически распределять и разделять их между приложениями. Однако во время инициализации приложений определяемая системным разработчиком установка может заставить все потоки управления приложения выполняться только на заданном ядре. По сравнению с полноценным «плавающим» режимом симметричной многопроцессорности, такой подход обеспечивает несколько преимуществ. Он устраняет переполнение кэш-памяти, которое может ухудшить производительность систем с симметричной многопроцессорностью, позволяя приложениям, разделяющим один и тот же набор данных, выполняться исключительно на одном ядре. Также он предлагает более быструю по сравнению с симметричной многопроцессорностью отладку приложений, поскольку все выполняемые в рамках одного приложения потоки управления запускаются на одном ядре. Наконец, он помогает унаследованным приложениям, разработанным для однопроцессорных систем, корректно выполняться, позволяя запускать их на одном ядре. При использовании исключительной многопроцессорности приложение, закрепленное за одним ядром, не может задействовать другие ядра, даже если они простаивают. Разработчик ОС может предложить инструменты для анализа степени использования ресурсов (включая загрузку процессора) для каждого из приложений и рекомендации по лучшему способу распределения приложений по ядрам в целях достижения максимальной производительности. Если ОС также позволяет динамически изменять назначенное процессорное ядро при помощи добавочного микропроцессора, то пользователь получает возможность динамически переключаться с одного ядра на другое без дополнительного введения контрольных точек и остановки/перезапуска приложения.
В примере, показанном на рис. 4, система с исключительной многопроцессорностью работает в полудуплексном режиме. Принимающий процесс с несколькими потоками управления работает на ядре 0, а передающий процесс, также обладающий несколькими потоками, выполняется на ядре 1. Данный подход избавляет разработчиков от трудоемкой задачи по сбору информации отдельно по каждому ядру и ее объединение для последующего анализа. В примере, показанном на рис. 5, приложения панели управления (интерфейс командной строки; эксплуатация, администрирование и техническое обслуживание; управление информационной панелью) выполняются на ядре 0, в то время как входные и выходные приложения информационной панели работают совместно на ядре 1. Разработчики могут реализовать механизм межзадачного взаимодействия (IPC) для этого сценария, используя локальные механизмы ОС или синхронизированные защищенные структуры разделяемой памяти.
В примере, показанном на рис. 4, система с исключительной многопроцессорностью работает в полудуплексном режиме. Принимающий процесс с несколькими потоками управления работает на ядре 0, а передающий процесс, также обладающий несколькими потоками, выполняется на ядре 1. Данный подход избавляет разработчиков от трудоемкой задачи по сбору информации отдельно по каждому ядру и ее объединение для последующего анализа. В примере, показанном на рис. 5, приложения панели управления (интерфейс командной строки; эксплуатация, администрирование и техническое обслуживание; управление информационной панелью) выполняются на ядре 0, в то время как входные и выходные приложения информационной панели работают совместно на ядре 1. Разработчики могут реализовать механизм межзадачного взаимодействия (IPC) для этого сценария, используя локальные механизмы ОС или синхронизированные защищенные структуры разделяемой памяти.
Занимая промежуточное место между асимметричной и симметричной многопроцессорностью, исключительная многопроцессорная обработка предлагает эффективную стратегию переноса пользователям, планирующим перейти на полную симметричную многопроцессорность, которых, однако, беспокоит работоспособность существующего программного кода в действующей параллельной модели исполнения. Пользователи могут переносить имеющийся код в многоядерный процессор и изначально объединять его для одного ядра, чтобы обеспечить правильное функционирование. Связывая приложения (и, возможно, отдельные потоки) с конкретными ядрами, разработчики также могут выявить потенциальные проблемы параллелизма на уровне приложений и потоков. Решение данных проблем позволит приложениям выполняться полностью одновременно, максимизируя тем самым выигрыш в производительности, предоставляемый многоядерными процессорами. Вопрос выбораДолжен ли разработчик выбрать асимметричную, симметричную или исключительную многопроцессорность? Асимметричная многопроцессорность хорошо работает с существующими приложениями, но имеет ограниченную масштабируемость за пределами двух ядер. Симметричная многопроцессорность предлагает прозрачное управление ресурсами, но может не работать с программным обеспечением, спроектированным для однопроцессорных систем. Исключительная многопроцессорность предлагает те же преимущества, что и симметричная, однако позволяет приложениям, рассчитанным на один процессор, работать корректно, значительно упрощая перенос существующего программного обеспечения. Как показано в таблице, гибкость в выборе любой из этих моделей позволяет разработчикам достичь оптимального баланса между производительностью, масштабируемостью и простотой переноса. Андрей Николаев (a.nikolaev@swd.ru) — директор по развитию компании SWD Software (Cанкт-Петербург). Содержание: ВВЕДЕНИЕБольшинство компьютерных систем являются однопроцессорными, то есть имеют только один процессор. Однако, многопроцессорные или параллельные системы в настоящее время приобретают все большее значение. Эти системы имеют несколько параллельно работающих процессоров, которые совместно используют часы компьютера, память, шину, периферийные устройства и т. Д. Изображение, демонстрирующее многопроцессорную архитектуру: Многопроцессорные системы сегодня успешно используются для повышения производительности в системах, одновременно работающих с несколькими программами. Кроме того, многопроцессорные системы продемонстрировали способность значительно улучшить производительность одной программы для определенных приложений, содержащих легко распараллеливаемые циклы. Извлечение грубого параллелизма из описания программного обеспечения и, действительно, изучение языков, используемых для описания параллельного программного обеспечения, являются процветающей областью исследований. Многопроцессорный , в вычислительной технике, режим работы, при котором два или более процессора в компьютере одновременно обрабатывают две или более разных частей одного и того жепрограмма (набор инструкций). Многопроцессорная обработка обычно выполняется двумя или болеемикропроцессоры , каждый из которых фактически является центральным процессором (ЦП) на одном крошечном чипе . Суперкомпьютеры обычно объединяют тысячи таких микропроцессоров для интерпретации и выполнения команд. Основным преимуществом многопроцессорного компьютера является скорость и, следовательно, возможность управлять большими объемами информации. Поскольку каждый процессор в такой системе назначен для выполнения определенной функции, он может выполнить свою задачу, передать набор инструкций следующему процессору и начать работу над новым набором инструкций. Например, разные процессоры могут использоваться для управления памятью, передачей данных или арифметическими функциями. Или больший процессор может использовать «подчиненные» процессоры для выполнения различных служебных обязанностей, таких как управление памятью. Многопроцессорные системы впервые появились на больших компьютерах, известных как мэйнфреймы, прежде чем их стоимость снизилась настолько, чтобы оправдать включение вперсональные компьютеры (ПК). Персональные компьютеры долгое время полагались на увеличение тактовой частоты, измеряемой в мегагерцах (МГц) или гигагерцах (ГГц), что соответствует количеству вычислений, которые ЦП вычисляет в секунду, для выполнения еще более сложных задач. Но поскольку выигрыш в тактовой частоте стало трудно поддерживать, отчасти из-за перегрева в микропроцессорной схеме, появился другой подход, в котором для таких задач, как отображение видео, использовались специализированные процессоры. Эти видеопроцессоры обычно поставляются на модульных устройствах, известных каквидеокарты или графические ускорители. Лучшие карты, которые необходимы, чтобы играть в самые интенсивные графические электронные игры на персональных компьютерах, часто стоят дороже, чем недорогой ПК. Возникла коммерческая потребность в более совершенных картах для запуска все более реалистичных игр на ПК и в системах видеоигр.IBM разрабатывает многопроцессорный микрочип, известный как Cell Broadband Engine, для использования в Sony Computer Entertainment PlayStation 3 и новый суперкомпьютер , включающий в себя тысячи микрочипов.В связи с большой скоростью развития вычислительной техники и информационных систем в настоящее время, мультипроцессоры занимают одну из главных ролей в развитие сферы. Поэтому тема данной работы является актуальной в настоящее время. Объект исследования – мультипроцессоры. Предмет исследование – процесс использование мультипроцессоров в современном мире. Цель данной работы – рассмотрение важности мультипроцессоров в современном мире. Для достижения поставленной цели будут решены следующие задачи: 1)будет рассмотрена теоретическая сущность мультипроцессоров. 2) будут рассмотрены примеры использования мультипроцессоров в современном мире. 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ МУЛЬТИПРОЦЕССОРОВ1.1 Сущность МультипроцессоровВычислительная система (ВС) — это взаимосвязанная совокупность аппаратных средств вычислительной техники и программного обеспечения, предназначенная для обработки информации. Иногда под ВС понимают совокупность технических средств ЭВМ, в которую входит не менее двух процессоров, связанных общностью управления и использования общесистемных ресурсов (память, периферийные устройства, программное обеспечение и т.п.). Элементы массивно-параллельного процессора связаны между собой, поскольку их работу контролирует один блок управления. Система нескольких параллельных процессоров, разделяющих общую память, называется мультипроцессором. Поскольку каждый процессор может записывать или считывать информацию из любой части памяти, их работа должна согласовываться программным обеспечением, чтобы не допустить каких-либо пересечений. Рис. 1. Виды систем Возможны разные способы воплощения этой идеи. Самый простой из них — наличие одной шины, соединяющей несколько процессоров и одну общую память. Схема такого мультипроцессора показана на рис. 1а. Такие системы производят многие компании. Нетрудно понять, что при наличии большого числа быстро работающих процессоров, которые постоянно пытаются получить доступ к памяти через одну и ту же шину, будут возникать конфликты. Чтобы разрешить эту проблему и повысить производительность компьютера, были разработаны различные модели. Одна из них изображена на рис. 1б. В таком компьютере каждый процессор имеет свою собственную локальную память, которая недоступна для других процессоров. Эта память используется для программ и данных, которые не нужно разделять между несколькими процессорами. При доступе к локальной памяти главная шина не используется, и, таким образом, поток информации в этой шине снижается. Возможны и другие варианты решения проблемы (например, кэш-память). Рис. 2. Мультипроцессор с одной шиной и одной общей памятью (а); мультипроцессор,в котором для каждого процессора имеется собственная локальная память (б) Мультипроцессоры имеют преимущество перед другими видами параллельных компьютеров, поскольку с единой разделенной памятью очень легко работать. Например, представим, что программа ищет раковые клетки на сделанном через микроскоп снимке ткани. Фотография в цифровом виде может храниться в общей памяти, при этом каждый процессор обследует какую-нибудь определенную область фотографии. Поскольку каждый процессор имеет доступ к общей памяти, обследование клетки, которая начинается в одной области и продолжается в другой, не представляет трудностей. В мультипроцессорных системах используется несколько процессоров, каждый из которых работает под управлением своих собственных команд и которые обычно обмениваются информацией через общую память. Одним из способов классификации мультипроцессорных систем является проявляющаяся в них степень связности составных частей. В мультипроцессорных системах, содержащих кэши данных, после чтения данных из общей памяти одним из процессоров эти данные могут быть скопированы в какой-либо из кэшей, и последующие обращения за ними могут происходить уже к кэшу, а не к общей основной памяти. Если затем другие процессоры изменяют эти данные в общей памяти, то копия, хранящаяся в кэше, становится некорректной. Этой проблемы не возникает, если кэш служит для размещения только команд, как в MC68020, но при этом теряются преимущества кэш-памяти, связанные с возможностью многократного чтения данных из буферов. Идентичность содержимого кэша и общей памяти в системе Z80000 обеспечивается за счет ограничений, накладываемых на общую память, и предотвращения считывания в кэш емкостью 1К байт каждая. В мультипроцессорных системах часто требуется синхронизация центральных процессоров. В настоящих мультипроцессорных системах (система HIS 645, мультипроцессорная система IBM 360 / M65) непосредственно взаимосвязанные процессоры обладают примерно одинаковой вычислительной мощностью. Ни один из них не является главным, ни один подчиненным. Некоторые устройства могут быть подсоединены к одному ЦП. В мультипрограммных и мультипроцессорных системах управление вычислительным процессом реализуется уже сочетанием как аппаратурных, так и программных средств. Такую систему управления можно представить в виде некоторой иерархической структуры, на верхнем уровне которой располагаются программные средства управления, а на нижнем. Как строятся мультипроцессорные системы с общей памятью. Как строятся мультипроцессорные системы с индивидуальной памятью. При использовании мультипроцессорных систем имеется возможность применять специальные методы повышения эффективности в тех случаях, когда лимитирующим звеном машины оказывается процессор. Когда несколько последовательностей команд выполняются параллельно, необходимы специальные средства управления, которые обеспечивали бы одновременность окончания работы во всех процессорах. Подобный метод еще мало изучен и, по-видимому, для его эффективного использования потребуется разработка новых символических языков. Когда в мультипроцессорной системе имеется несколько часов, работа их синхронизируется таким образом, что все они изменяют свои показания с одинаковой скоростью. В одних мультипроцессорных системах только определенные процессоры имеют доступ к устройствам ввода-вывода и, следовательно, имеют специальную функцию ввода-вывода. Мультипроцессоры содержат многоядерные процессоры, которые имеют свои характеристики. Многоядерный процессор — центральный процессор, содержащий два и более вычислительных ядра на одном процессорном кристалле или в одном корпусе. Многоядерные процессоры можно подразделить по наличию поддержки когерентности кеш-памяти между ядрами. Бывают процессоры с такой поддержкой и без неё. Способ связи между ядрами:
Кеш-память: Во всех существующих на сегодня многоядерных процессорах кеш-памятью 1-го уровня обладает каждое ядро в отдельности, а кеш-память 2-го уровня существует в нескольких вариантах:
В приложениях, оптимизированных под многопоточность, наблюдается прирост производительности на многоядерном процессоре. Однако, если приложение не оптимизировано, то оно не будет получать практически никакой выгоды от дополнительных ядер, а может даже выполняться медленнее, чем на процессоре с меньшим количеством ядер, но большей тактовой частотой. Это в основном приложения, разработанные до появления многоядерных процессоров, либо приложения, в принципе не использующие многопоточность. 1.2 Мультипроцессорные компьютерыВ мультипроцессорных компьютерах имеется несколько процессоров, каждый из которых может относительно независимо от остальных выполнять свою программу. В мультипроцессоре существует общая для всех процессоров операционная система, которая оперативно распределяет вычислительную нагрузку между процессорами. Взаимодействие между отдельными процессорами организуется наиболее простым способом — через общую оперативную память. Сам по себе процессорный блок не является законченным компьютером и поэтому не может выполнять программы без остальных блоков мультипроцессорного компьютера — памяти и периферийных устройств. Все периферийные устройства являются для всех процессоров мультипроцессорной системы общими. Территориальную распределенность мультипроцессор не поддерживает — все его блоки располагаются в одном или нескольких близко расположенных конструктивах, как и у обычного компьютера. Основное достоинство мультипроцессора — его высокая производительность, которая достигается за счет параллельной работы нескольких процессоров. Так как при наличии общей памяти взаимодействие процессоров происходит очень быстро, мультипроцессоры могут эффективно выполнять даже приложения с высокой степенью связи по данным. Еще одним важным свойством мультипроцессорных систем является отказоустойчивость, то есть способность к продолжению работы при отказах некоторых элементов, например процессоров или блоков памяти. При этом производительность, естественно, снижается, но не до нуля, как в обычных системах, в которых отсутствует избыточность. 1) Принцип разомкнутого управления. Состоит в том, что программа управления жестко задана в задающем устройстве или внешним воздействием и управление не учитывает влияние возмущений на параметры процессов. 2) Принцип компенсации. Применяется для нейтрализации известных возмущающих воздействий , если они могут искажать состояние объекта управления до недопустимых пределов. 3) Принцип обратной связи. Управляющее воздействие корректируется в зависимости от выходной величины. Виды систем управления: 1) Системы стабилизации. Обеспечивают неизменное значение управляемой величины при всех видах возмущений. 2) Программные системы. Изменение управляющего воздействия на основе заложенной программы. 3) Следящие системы. Отличаются от программных тем, что программа заранее не известна. В качестве устройства управления выступает устройство, следящее за изменением какого-либо внешнего параметра. 4) Самонастраивающиеся системы. 5) Экстремальные системы. Системы, в которых выходная величина должна всегда принимать экстремальное значение из всех возможных. 6) Адаптивные системы. Предусмотрена возможность автоматической перенастройки параметров или изменение принципиальной схемы систем управления с целью приспособления к изменяющимся внешним условиям. В зависимости от того, в какой системе (большой, сложной, большой) происходит управления, различают системы автоматического управления и автоматизированные системы управления. Автоматическое управление осуществляется, как правило, в простых системах, в которых заранее известны описание объекта управления и алгоритм управления им. По принципу управления системы автоматического управления могут быть разомкнутыми и замкнутыми. Мульти компьютеры – это совокупность объединенных сетью отдельных вычислительных модулей, каждый из которых управляется собственной операционной системой. Узлы мульти компьютера не имеют общих структур кроме сети, обладают высокой степенью автономности и могут состоять из отдельных компьютеров или представлять собой различные комбинации кластеров. Для распределенной операционной системы мульти компьютер выглядит как виртуальный однопроцессорный ресурс; взаимодействие процессов реализуется с помощью явно заданных операций связи между отдельными вычислителями. Обычно в мульти компьютере реализуется согласованный сетевой протокол, и нет единой очереди выполняющихся процессов. Кластер – это набор компьютеров, рассматриваемый операционной системой, системным программным обеспечение, программными приложениями и пользователями как единая система. Кластеры получили широкое распространение благодаря высокому уровню готовности при относительно низких затратах. Высокая готовность объясняется отсутствием совместно используемой оперативной памяти и наличием в каждом узле копий ОС. Специальной ПО производит контроль работоспособности узлов. Если какой-либо узел кластера считается вышедшим из строя, то его ресурсы и программы переназначаются на другие узлы. Два типичных способа организации кластеров – это архитектура с разделяемыми дисками и архитектура без разделяемых дисков. Симметричные мультипроцессоры . SMP системы состоят из нескольких десятков процессоров, разделяющих общую основную (оперативную) память и объединенных общей коммуникационной системой. Каждый процессор имеет доступ ко всей основной памяти, может прерывать другие процессоры и выполнять операции ввода/вывода. Пропускная способность коммуникационной системы достаточна для поддержания быстрого доступа к памяти. У отдельных процессоров имеется один или несколько уровней собственной кэш памяти. При этом возникает проблема сохранения когерентности данных, то есть согласованных изменений содержимого КЭШей и общей памяти. Когда предотвращается использование копий данных в КЭШе какого-либо процессора, если они подверглись модификации в другом процессоре. Следовательно, если модифицируется одна из копий данных, остальные копии должны либо также модифицироваться, либо объявляться недостоверными. Достаточный объем КЭШа и сравнительно небольшое количество процессоров в SMP системах позволяет удовлетворить обращение к основной памяти, поступающих от нескольких процессоров. Так, что время доступа к общей памяти примерно одинаково для всех процессоров. Это объясняет еще одно название таких архитектур UMA (Uniform Memory Access). Передача данных в таких системах между КЭШами разных процессоров выполняется значительно быстрее, чем обмен данными между узлами кластера или мультикомпьютера. Поэтому SMP архитектуры хорошо масштабируются с целью увеличения производительности и обработки большого числа коротких транзакций, свойственных банковским приложениям. Сохранение когерентности требует специальных аппаратных средств быстрой модификации копий данных. Если при этом следовать модели строгой согласованности, когда каждая операция возвращает последнее записанное значение, то снижение производительности системы неизбежно. Невысокая степень готовности SMP систем объясняется сильной связанностью процессоров и наличием одной операционной системы, разделяемой всеми процессорами. 1.3 Основы мультитредовой архитектурыПри всем различии подходов к созданию мультитредовых микропроцессоров, общим для них является введение множества устройств выборки команд, каждое из которых организует окно исполнения для одного треда. В рамках одного треда выполняется предсказание переходов, переименование регистров, динамическая подготовка команд к исполнению. Тем самым, общее число команд, находящихся в обработке, значительно превышает размер окна исполнения однотредового процессора, с одной стороны, и тактовая частота не лимитируется размером окна исполнения, с другой стороны. Выявление тредов может выполняться компилятором при анализе исходного кода на языке высокого уровня или исполняемого кода программы. Однако компиляторы не всегда могут разрешить проблемы зависимостей при использовании регистров и ячеек памяти между тредами, что требуется уже в ходе исполнения тредов. Для этого в микропроцессор вводится специальная аппаратура условного исполнения тредов, предусматривающая возврат с отбрасыванием наработанных результатов при обнаружении нарушения зависимостей между тредами. Нарушением зависимости, например, может служить запись по вычисляемому адресу в одном треде в ту же ячейку памяти, из которой выполняется чтение, которое должно следовать за этой записью, в другом треде. В случае, если адреса записи и чтения не совпадают, нарушение отсутствует. При совпадении адресов фиксируется нарушение, которое должно вернуть исполнение треда к команде чтения правильного значения. Интерфейс между аппаратурой мультитредового процессора, поддерживающей протекание каждого отдельного треда и аппаратурой, общей для исполнения всех тредов, может быть установлен как сразу после устройств выборки команд тредов, так и на уровне доступа к разделяемой памяти. В первом случае все треды используют один регистровый файл и один набор функциональных устройств. Тесная связь по ресурсам позволяет эффективно исполнять последовательные программы с сильной зависимостью между тредами. В этом случае имеет место именно реализация мультискалярного мультитредового процессора[1]. 1.4 Внедрение мультипроцессора и мультикомпьютераМультипроцессор — это компьютерная система с двумя или более центральными процессорами (ЦП), которые имеют полный доступ к общей оперативной памяти. Основная цель использования мультипроцессора — повысить скорость выполнения системы, а другими задачами являются отказоустойчивость и соответствие приложений. Существует два типа мультипроцессоров: один называется мультипроцессором с общей памятью, а другой — мультипроцессором с распределенной памятью. В многопроцессорных системах с общей памятью все ЦП разделяют общую память, но в многопроцессорных системах с распределенной памятью каждый ЦП имеет свою собственную частную память. Приложения мультипроцессора —
Преимущества использования мультипроцессора —
Разница между мультипроцессором и мультикомпьютером:
2. ВИДЫ МУЛЬТИПРОЦЕССОРНЫХ СИСТЕМ2.1 Мультипроцессорные системы общего назначенияВ мультипроцессорных системах (МПС) имеется несколько процессоров, каждый из которых может относительно независимо от остальных выполнять свою программу. В МПС существует общая для всех процессоров операционная система, которая оперативно распределяет вычислительную нагрузку между процессорами. Важным свойством МПС является отказоустойчивость, то есть способность к продолжению работы при отказах некоторых элементов, например процессоров или блоков памяти. При этом производительность, естественно, снижается, но не до нуля, как в обычных системах, в которых отсутствует избыточность[2]. Любая вычислительная система достигает своей наивысшей производительности благодаря использованию высокоскоростных процессорных элементов (ПЭ) и параллельному выполнению большого числа операций[3]. UMA состоит из n процессоров, k модулей памяти и коммуникационной сети, связывающей процессоры и память. Сеть может стать причиной значительной задержки при обращении процессора к памяти. Система, в которой такая задержка одинакова для всех операций доступа к памяти, называется мультипроцессорной системой с однородным доступом к общей памяти (Uniform Memory Access, UMA) или системой с общей памятью. Поскольку процессоры выполняют команды с огромной скоростью, слишком большие задержки на выборку из памяти команд и данных для них не приемлемы. Однако коммуникационные сети с малым временем задержки имеют очень сложную структуру и высокую стоимость. Рис. 2. Мультипроцессорная система типа UMA NUMA каждый процессор имеет доступ не только к собственной локальной памяти, но и к памяти других процессоров сети. Но поскольку при обращении к памяти других процессоров запросы проходят через сеть, они выполняются дольше, чем обращения к локальной памяти. Системы этого типа называются мультипроцессорными системами с неоднородным доступом к памяти (Non-Uniform Memory Access, NUMA). Рис. 3. Мультипроцессорная система типа NUMA Ни один из процессоров не может обратиться к удаленной памяти без взаимодействия с удаленным процессором, которому она принадлежит Взаимодействие между этими двумя процессорами осуществляется в форме обмена сообщениями. Системы такого типа называются системами с распределенной памятью и высокоскоростным протоколом передачи сообщений. CC-NUMA (cache coherent NUMA) — система с кэш-когерентным доступом к неоднородной памяти. В отличие от классической архитектуры NUMA, при использовании кэш-когерентного доступа к неоднородной памяти все процессоры объединены в один узел, причем первый уровень иерархии памяти образует кэш-память процессоров. Архитектура ccNUMA поддерживает когерентность кэш памяти внутри узла аппаратно. Аппаратная когерентность кэш-памяти означает, что не требуется никакого программного обеспечения для поддержки актуальности множества копий данных. В системе сс-NUMA физически распределенная память объединяется, как в любой другой SMP-архитектуре, в единый массив. Не происходит никакого копирования страниц или данных между ячейками памяти. Нет никакой программно-реализованной передачи сообщений. Существует просто одна карта памяти, с частями, физически связанными медным кабелем, и очень умные (в большей степени, чем объединительная плата) аппаратные средства. Аппаратно-реализованная кэш-когерентность означает, что не требуется какого-либо программного обеспечения для сохранения множества копий обновленных данных или для передачи их между множеством экземпляров операционной системы и приложений. Со всем этим справляется аппаратный уровень точно так же, как в любом SMP-узле, с одной копией операционной системы и несколькими процессорами. При использовании большого числа кэшей возникает та же проблема что и в архитектуре UMA: необходимо поддерживать актуальность кэшированных данных. Практически это означает, что изменение любой ячейки памяти, копия которой находится в некотором кэше, должно быть повторено для всех её копий. Учитывая, что число копий может быть велико, это становится сложной технической задачей[4]. 2.2 Практическое применение многопроцессорных системС появлением доступных многопроцессорных систем возник у пользователей: как использовать мощность компьютерной техники. При использовании обыкновенного программного обеспечения количество процессоров системы в основном простаивает. for i in *.flac ; do oggenc —quality=10 «$i» ; done Но при большом количестве файлов простаивающие процессоры слегка вызывают раздражение. Для того, чтобы оценить мощность производительной техники нужно параллельное программное обеспечение. ((‘freemans defclass) defvar n signal lock nwaitsignal) (‘freemans defmethod freemans () (nil setq n (nil nprocs) signal (‘signal newobject) lock (‘lock newobject) nwaitsignal (0 copy))) (‘freemans defmethod enter () (lock progn (nil when (n = 0) (nwaitsignal += 1) (signal wait lock)) (n -= 1))) (‘freemans defmethod exit () (lock progn (n += 1) (nil when (nwaitsignal > 0) (nwaitsignal -= 1) (signal send)))) (‘string defmethod flactoogg (q freemans) (nil let (s (d (‘dir newobject this))) (nil while (‘s set (d read)) (nil let ((fullname (this + «/» s))) (nil cond ((s = «.»)) ((s = «..»)) ((fullname regp) ; is a file (nil let ((ss (s size))) (nil if (ss > 5) (nil when (((s part (ss — 5)) lower) = «.flac») (freemans enter) (nil fork (nil if (0 = («oggenc» system («—quality=» + q) fullname)) (fullname unlink) (cerr writeln «crash oggenc for » fullname)) (freemans exit)))))) ((fullname dirp) ; is dir (fullname flactoogg q freemans))))) (d close))) («.» flactoogg (arg first) (‘freemans newobject)) Результатом использования параллельно запущенных процессов станет полноценная загрузка процессоров полезной работой. И огромная экономия личного времени. Благодаря возможности взаимодействия двух и более процессов мультипроцессоры весьма популярны. Данная модель понятна программистам и позволяет решать широкий круг задач. Для примера рассмотрим программу, которая анализирует битовое отображение и составляет список всех его объектов. В нашем примере некоторые объекты обрабатываются несколькими процессами, поэтому в конце потребуется некоторая координация, чтобы определить количество домов, деревьев и самолетов. Поскольку все процессоры в мультипроцессоре используют единое адресное пространство, функционирует только одна копия операционной системы. Соответственно, имеется только одна карта страниц памяти и одна таблица процессов. Когда процесс блокируется, его процессор сохраняет свое состояние в таблицах операционной системы, а затем просматривает эти таблицы в поисках другого процесса, который нужно запустить. Именно такая организация, в основе которой лежит единая система, и отличает мультипроцессор от мультикомпьютера. Мультипроцессор, как и все компьютеры, должен содержать устройства ввода-вывода (диски, сетевые адаптеры и т. п.). В одних мультипроцессорных системах только определенные процессоры получают доступ к устройствам ввода-вывода и, следовательно, обладают специальными средствами ввода-вывода. В других мультипроцессорных системах каждый процессор может получить доступ к любому устройству ввода-вывода. Если все процессоры имеют равный доступ ко всем модулям памяти и всем устройствам ввода-вывода, и между процессорами возможна полная взаимозаменяемость, такой мультипроцессор называется симметричным (Symmetrie Multiprocessor, SMP). Параллельная обработка требует использования эффективных системных соединений для быстрой связи между входом / выходом и периферийными устройствами, мультипроцессорами и общей памятью. Иерархическая система шин состоит из иерархии шин, соединяющих различные системы и подсистемы / компоненты в компьютере. Каждая шина состоит из нескольких сигнальных, управляющих и силовых линий. Различные шины, такие как местные шины, шины объединительной платы и шины ввода / вывода, используются для выполнения различных функций соединения. Местные автобусы – это автобусы, установленные на печатных платах. Шина объединительной платы – это печатная плата, на которой используется множество разъемов для подключения функциональных плат. Шины, которые подключают устройства ввода-вывода к компьютерной системе, называются шинами ввода-вывода. Коммутируемые сети обеспечивают динамическое соединение между входами и выходами. В системах малого или среднего размера чаще всего используются перекрестные сети. Многоступенчатые сети могут быть расширены до более крупных систем, если проблема увеличенной задержки может быть решена. Как кросс-коммутатор, так и многопортовая организация памяти являются одноступенчатой сетью. Хотя создание одноступенчатой сети обходится дешевле, но для установления определенных соединений может потребоваться несколько проходов. Многоступенчатая сеть имеет более одной ступени распределительных коробок. Эти сети должны иметь возможность подключать любой вход к любому выходу. Многоступенчатые сети или многоступенчатые сети присоединения представляют собой класс высокоскоростных компьютерных сетей, который в основном состоит из элементов обработки на одном конце сети и элементов памяти на другом конце, соединенных коммутационными элементами. Эти сети применяются для создания больших многопроцессорных систем. Это включает в себя Omega Network, Butterfly Network и многое другое. Мультикомпьютеры – это MIMD-архитектуры с распределенной памятью. Следующая диаграмма показывает концептуальную модель мультикомпьютера – Мультикомпьютеры – это машины для передачи сообщений, которые применяют метод коммутации пакетов для обмена данными. Здесь каждый процессор имеет личную память, но нет глобального адресного пространства, поскольку процессор может обращаться только к своей локальной памяти. Таким образом, коммуникация не прозрачна: здесь программисты должны явно поместить коммуникационные примитивы в свой код. Отсутствие глобально доступной памяти является недостатком мультикомпьютеров. Это можно решить с помощью следующих двух схем –
В этих схемах прикладной программист предполагает большую разделяемую память, которая адресуется глобально. При необходимости ссылки на память, создаваемые приложениями, преобразуются в парадигму передачи сообщений. VSM – это аппаратная реализация. Таким образом, система виртуальной памяти операционной системы прозрачно реализована поверх VSM. Таким образом, операционная система считает, что она работает на машине с общей памятью. SVM – это программная реализация на уровне операционной системы с аппаратной поддержкой модуля управления памятью (MMU) процессора. Здесь единица обмена – страницы памяти операционной системы. Если процессор обращается к определенной ячейке памяти, MMU определяет, находится ли страница памяти, связанная с доступом к памяти, в локальной памяти или нет. Если страница отсутствует в памяти, в обычной компьютерной системе она выгружается операционной системой с диска. Но в SVM операционная система выбирает страницу с удаленного узла, которому принадлежит эта конкретная страница. Выбирая технологию процессора, проектировщик мультикомпьютера выбирает недорогие средние процессоры зерна как строительные блоки. Большинство параллельных компьютеров построены со стандартными готовыми микропроцессорами. Распределенная память была выбрана для нескольких компьютеров, а не для использования общей памяти, что ограничивало бы масштабируемость. Каждый процессор имеет свой собственный локальный блок памяти. Для схемы межсоединений мультикомпьютеры имеют прямые сети передачи сообщений, а не сети с коммутацией адресов. Для стратегии управления разработчик нескольких компьютеров выбирает асинхронные операции MIMD, MPMD и SMPD. Космический куб Caltech (Seitz, 1983) – первый мультикомпьютер первого поколения. Компьютеры следующего поколения превратились из мультикомпьютеров среднего и мелкого размера в глобальную виртуальную память. Мультикомпьютеры второго поколения все еще используются в настоящее время. Но с использованием более качественных процессоров, таких как i386, i860 и т. Д., Компьютеры второго поколения получили большое развитие. Компьютеры третьего поколения – это компьютеры следующего поколения, где будут использоваться узлы, реализованные с помощью VLSI. Каждый узел может иметь процессор 14 MIPS, каналы маршрутизации 20 МБ / с и 16 КБ ОЗУ, интегрированные в один чип. Ранее для создания мультикомпьютеров гиперкубов использовались однородные узлы, поскольку все функции были переданы хосту. Таким образом, это ограничило пропускную способность ввода / вывода. Таким образом, для эффективного решения крупномасштабных задач или с высокой пропускной способностью эти компьютеры нельзя было использовать. Система Intel Paragon была разработана для преодоления этой трудности. Он превратил мультикомпьютер в сервер приложений с многопользовательским доступом в сетевой среде. Механизмы передачи сообщений в мультикомпьютерной сети нуждаются в специальной аппаратной и программной поддержке. В этом разделе мы обсудим некоторые схемы. В мультикомпьютере со схемой хранения и прямой маршрутизации пакеты являются наименьшей единицей передачи информации. В сетях, маршрутизируемых через червоточину, пакеты делятся на флиты. Длина пакета определяется схемой маршрутизации и реализацией сети, тогда как длина переброса зависит от размера сети. При хранении и прямой маршрутизации пакеты являются основной единицей передачи информации. В этом случае каждый узел использует буфер пакетов. Пакет передается от исходного узла к узлу назначения через последовательность промежуточных узлов. Задержка прямо пропорциональна расстоянию между источником и пунктом назначения. При маршрутизации по червоточине передача от исходного узла к узлу назначения осуществляется через последовательность маршрутизаторов. Все кадры одного и того же пакета передаются в неразделимой последовательности конвейерным способом. В этом случае только заголовок flit знает, куда идет пакет. Виртуальный канал – это логическая связь между двумя узлами. Он образован буфером в исходном узле и узле приемника и физическим каналом между ними. Когда физический канал выделяется для пары, один исходный буфер соединяется с одним приемным буфером для формирования виртуального канала. Когда все каналы заняты сообщениями и ни один из каналов в цикле не освобожден, возникает ситуация взаимоблокировки. Чтобы избежать этого, необходимо следовать схеме предотвращения тупиковых ситуаций. ЗАКЛЮЧЕНИЕМультипроцессоры могут использоваться для одновременного запуска большего количества потоков или для ускорения выполнения определенного потока. Запускать больше потоков одновременно легко; потоки просто распределяются между процессорами. К сожалению, обычные пользователи ПК должны запускать только небольшое количество потоков в любой момент времени. Быстрее запустить конкретный поток намного сложнее. Программист должен разделить существующий поток на несколько потоков для выполнения на каждом процессоре. Это становится сложным, когда процессоры должны общаться друг с другом. Одна из главных задач для компьютерных дизайнеров и программистов — эффективно использовать большое количество процессорных ядер. Другие формы многопроцессорной обработки включают гетерогенную многопроцессорность и кластеры . Гетерогенные мультипроцессоры , также называемые асимметричными мультипроцессорами , используют отдельные специализированные микропроцессоры для отдельных задач и обсуждаются далее. В кластерной многопроцессорной обработке каждый процессор имеет собственную систему локальной памяти. Кластеризация также может относиться к группе компьютеров, соединенных вместе в сети, на которой запущено программное обеспечение для совместного решения большой проблемы. С позиции реализации такого симбиоза открываются следующие способы повышения производительности: 1) увеличение емкости памяти внутри кристалла; 2) увеличение количества арифметико-логических устройств; 3) введение блоков обработки мультимедийных данных, ранее использовавшихся, например, в сигнальных микропроцессорах; 4) интеграция на кристалле функций управления памятью и периферийными устройствами, для исполнения которых в традиционных микропроцессорах используются наборы микросхем («чипсеты»); 5) интеграция на кристалле интерфейсов сетевых и телекоммуникационных систем, что позволяет соединять эти микропроцессоры друг с другом и телекоммуникационными и вычислительными сетями без дополнительных адаптеров. Принципы универсальных машинных вычислений (по фон Нейману) легли в основу компьютеров первых поколений. На их основе работает и большая часть нынешних компьютеров. Но эти аксиомы существенно ограничивают способы реализации машинного счета. Они диктуют последовательную (команда за командой) реализацию. Такое ограничение сильно сужает разнообразие архитектурных решений и лишает их перспектив к наращиванию производительности за счет увеличения числа одновременно работающих над одной задачей процессоров. Искусство творения компьютеров имеет свои вершины мастерства. Многопроцессорные высокопараллельные архитектуры, выходя за пределы юрисдикции классической модели последовательного счета, требуют от создателей нестандартного, многомерного, но очень здравого мышления. (Здесь мысли могут взлетать очень высоко, чтобы затем разбиться о жесткие реалии.) В этой запредельной, рекордной области компьютеростроения архитектурных тайн и сегодня остается значительно больше, чем найдено решений. И тем ценнее достижения, прошедшие проверку практикой. Через положительный опыт открывается путь к новейшим многокомпонентным архитектурам, способным к полному погружению в микромир новых СБИС-технологий и обладающим за счет этого огромным вычислительным потенциалом. СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
Аннотация: Цель лекции: рассмотреть принципы организации мультипрограммного режима работы и аппаратные средства микропроцессора, используемые для этих целей. Мультипрограммный режим работы микропроцессораМногозадачностью (мультипрограммным режимом работы) называют такой способ организации работы системы, при которой в ее памяти одновременно содержатся программы и данные для выполнения нескольких процессов обработки информации (задач). В этом режиме должна обеспечиваться взаимная защита программ и данных, относящихся к различным задачам, а также возможность перехода от выполнения одной задачи к другой (переключение задач). Под задачей (процессом) понимается последовательность взаимосвязанных действий, ведущих к достижению некоторой цели. В вычислительной технике под задачей понимается конкретная сущность, которая тесно связана с архитектурой процессора и обладает своим виртуальным адресным пространством и состоянием. В более простом смысле будем полагать, что задача — это программа, которая выполняется или ожидает выполнения, пока выполняется другая программа. Процесс может находиться в следующих состояниях:
Применительно к компьютерам в определение задачи обычно включаются ресурсы, необходимые для достижения цели. Понятие «ресурс» строго не определено. Будем считать, что всякий потребляемый объект (независимо от формы его существования), обладающий некоторой практической ценностью для потребителя, является ресурсом: объем оперативной памяти, время счета на процессоре, дисковое пространство и т. д. Основные черты мультипрограммного режима:
Мультипрограммирование предназначено для повышения пропускной способности вычислительной системы путем более равномерной и полной загрузки всего его оборудования, в первую очередь — процессора. При этом скорость работы самого процессора и номинальная производительность ЭВМ не зависят от использования мультипрограммирования. Мультипрограммный режим имеет в ЭВМ аппаратную и программную поддержку. Аппаратура, используемая при организации мультипрограммного режима, включает контроллеры ОЗУ и внешних устройств, которые могут работать параллельно с процессором, систему прерывания, аппаратные средства защиты программ и данных и т. д. Программная составляющая содержит мультизадачную операционную систему, драйверы внешних устройств, обработчики прерываний и другие средства. Операционная система, реализуя мультипрограммный режим, должна распределять (в том числе динамически) между параллельно выполняемыми программами ресурсы системы (время процессора, оперативную и внешнюю память, устройства ввода-вывода) с целью увеличения пропускной способности и с учетом ограничений на ресурсы и требований по срочности выполнения отдельных программ. Эффективность работы мультипрограммной ЭВМ можно оценить количеством задач, выполненных в единицу времени (пропускная способность), и временем выполнения отдельной программы. Важное значение при анализе работы ЭВМ имеет определение степени использования ее ресурсов. Для этого широко применяются следующие показатели (рис. 6.1): коэффициент загрузки устройства: где — время занятости устройства за общее время работы ЭВМ; средняя длина очереди запросов к устройству : где — длина очереди к устройству на интервале времени и Рис. Для представленного на рис. 6.1 случая: Помимо средней длины очереди важна также и динамика изменения ее длины. По значениям , и изменениям во времени значения Lq можно определить наиболее дефицитный ресурс в системе, ее «узкое место«. Устранение этих «узких мест» может проводиться или за счет увеличения производительности соответствующего ресурса, или выбором такой смеси задач, которая обеспечивала бы более равномерное использование всех ресурсов (например, одни задачи более активно используют процессор (счетные задачи), другие — жесткий диск (работа с базами данных), третьи — устройства ввода-вывода (вывод большого объема графической информации)). Рассмотрим пример выполнения четырех программ в мультипрограммном режиме при коэффициенте мультипрограммирования равном 2. Коэффициент мультипрограммирования (КМ) — это количество программ, обрабатываемых одновременно в мультипрограммном режиме. Полагаем, что ЭВМ имеет 3 устройства, которые могут работать параллельно: центральный процессор (CPU), устройство ввода (IN) и устройство вывода (OUT), а программы проходят следующий цикл работы: счет1 — ввод — счет2 — вывод. Времена выполнения соответствующих блоков программ заданы в табл. 6.1. Будем считать, что программы имеют относительный приоритет. То есть, во-первых, если на какой-либо ресурс при его освобождении одновременно претендует несколько программ, то он предоставляется программе с наименьшим номером. Во-вторых, программа, занявшая ресурс, не освобождает его до истечения требуемого времени, даже если в этот период на ресурс станет претендовать программа, имеющая больший приоритет.
Более приоритетной считаем программу с меньшим номером. Очередь программ к процессору обозначим Ready, а общую очередь к внешним устройствам — Wait. |