Организации памяти

Классификация многопроцессорных систем по способу

Классификация Головкина

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

Существуют различные подходы к классификации систем параллельной обработки данных /1, 2, 6/. Одной из первых является классификация Майкла Флинна (1966 год), которая основана на двух характеристиках организации процесса обработке: потоке команд и потоке данных. Одиночность и множественность потоков определяется максимально возможным числом команд (или данных), одновременно находящихся на одинаковых стадиях исполнения. В соответствии с классификацией Флинна, можно выделить 4 класса архитектур:

 
 

1) Одиночный поток команд, одиночный поток данных (ОКОД) или Single Instruction Stream Single Data Stream (SISD) (Рисунок 10.1).

Рисунок 10.1 – Архитектура класса ОКОД

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

2) Одиночный поток команд, множественный поток данных (ОКМД) или Single Instruction Stream Multiple Data Stream (SIMD) (Рисунок 10.2).

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


Рисунок 10.2 – Архитектура класса ОКМД

3) Множественный поток команд, одиночный поток данных (МКОД) или Multiple Instruction Stream Single Data Stream (MISD) (Рисунок 10.3).

Рисунок 10.3 – Архитектура класса МКОД

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

4) Множественный поток команд, множественный поток данных (МКМД) или Multiple Instructions Stream Multiple Data Stream (MIMD) (Рисунок 10.4).

Рисунок 10.4 – Архитектура класса МКМД

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

Приведённая выше классификация Флинна порождает неоднозначность группировки существующих архитектур (многообразие систем в классе МКМД, векторный поток можно рассматривать как одиночный и как множественный и др.). Наиболее полной является классификация, предложенная профессором Головкиным Б.А. Она опирается на основные принципы организации обработки данных с учётом многоуровневости их обработки. Выделяют 4 уровня обработки: уровень программ, уровень команд, уровень данных (регистровых передач), уровень слов.

Программам как единицам обработки в качестве средств обработки выступают вычислительные машины и сети. Параллельно могут выполняться части программ (команды), которые выполняют процессоры. На уровне команд параллельно могут выполняться отдельные фазы (выборка команды, декодирование, выборка операндов, выполнение операции). Их выполняют функциональные блоки процессора. Данным, обрабатываемым на уровне регистровых передач, соответствуют АЛУ. Параллельно могут обрабатываться компоненты векторов, матриц и других структур данных (слова). Выполняют преобразования функциональные блоки АЛУ. Параллельно могут обрабатываться разряды слов функциональным преобразователями разрядов в составе операционных блоков АЛУ.

На каждом уровне обработки возможны 4 варианта организации процессов: последовательная, конвейерная, параллельная (многоэлементная), параллельно-конвейерная. Тогда всего возможно 44 = 256 классов обработки и соответствующих им типов архитектур.

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

Как отмечается в /5/, в мультипроцессоре (Рисунок 10.5) все процессоры совместно используют общую физическую память. Любой процессор может считать информацию из памяти или записать в память с помощью соответствующих команд чтения и записи. В мультипроцессорах функционирует только одна копия ОС, поскольку адресное пространство является единым. При этом процессор не просто решает часть задачи, но и может оперировать с ней целиком.

Помимо всего, в состав мультипроцессоров также входят УВВ (диски, сетевые адаптеры. ПУ и т.д.). В одних мультипроцессорах только определённые процессоры получают доступ к УВВ, в других – каждый процессор имеет доступ к любому УВВ. Если все процессоры имеют равный доступ ко всем модулям памяти и УВВ, и между процессорами возможна полная взаимозаменяемость, такие мультипроцессоры называют симметричными – SMP (Symmetric Multi-Processors)/1, 5/.

Рисунок 10.5 – Мультипроцессор

В больших мультипроцессорах память обычно делится на несколько модулей. По способу доступа к общей памяти можно выделить следующие разновидности мультипроцессоров: системы с однородным доступом к памятиUMA (Uniform Memory Access), системы с неоднородным доступом к памятиNUMA (Non Uniform Memory Access) и системы с доступом только к кэш-памятиCOMA (Cache Only Memory Access).

В UMA-системах каждый процессор имеет одно и то же время доступа ко всем модулям памяти. Самые простые мультипроцессоры имеют всего одну шину, которая используется для взаимодействия процессорами и модулями памяти. При этом в каждый момент времени взаимодействовать могут только два устройства: один из процессоров с одним из модулей памяти. При увеличении числа процессоров нагрузка на шину увеличивается, многим процессорам большую часть времени приходится простаивать, что ведёт к снижению общей производительности ВС. Частично эту проблему решает наличие кэшей, но возникает проблема отслеживания идентичности данных в кэшах и основной памяти, т.н., когерентность кэшей. Кроме того, помимо кэша в каждый процессор можно добавить собственную локальную память, к которой он получает доступ через выделенную локальную шину. Для оптимального использования такой конфигурации в блоках локальной памяти целесообразно размещать весь программный код, общие данные, предназначенные только для чтения, а также стеки и локальные переменные. Для увеличения количества процессоров необходимо использовать другие варианты коммуникационные соединений. Например, самой простой схемой соединения нескольких процессоров с несколькими модулями памяти является перекрёстная коммутация, т.н., «решётка». От каждого процессора и каждого модуля памяти идёт отдельная линия – горизонтальная и вертикальная, соответственно. На каждом пересечении этих линии находится коммутационный узел, который можно открыть или закрыть в зависимости от того, нужно соединить линии или нет. Однако при больших количествах процессоров и модулей памяти число соединений возрастает многократно, что не всегда приемлемо.

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

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

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

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

Рисунок 10.6 – Мультикомпьютер

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

Мультикомпьютеры подразделяются на две категории.

К первой категории относятся системы с массовым параллелизмом - MPP (Massive Parallel Processing).Согласно /5/, MPP-системы - это огромные суперкомпьютеры стоимостью в несколько миллионов долларов. Они используются в различных отраслях науки и техники для выполнения сложных вычислений, обработки большого числа транзакций в секунду, управления большими базами данных, и т.д. В большинстве MPP-систем используются стандартные процессоры: например, Intel Pentium, Sun UltraSPARC, IBM RS/600 и DEC Alpha. MPP-системы поставляются вместе с дорогостоящим ПО и библиотеками. Ещё одной характеристикой MPP-систем – огромные объёмы ввода-вывода (до нескольких терабайт). Эти данные должны быть распределены по многочисленным дискам, и их с большой скоростью можно передавать между устройствами MPP-системы. Помимо всего прочего, MPP-системы должны обладать высокой отказоустойчивостью (при наличии тысяч процессоров неисправности возникают регулярно), поэтому в них всегда имеется аппаратная и программная поддержка мониторинга системы, обнаружения неполадок и их исправления.

К MPP-системам можно отнести суперкомпьютер IBM BlueGene фирмы IBM, разработанный для решения задач большой сложности в биологии; суперкомпьютер Red Storm для решения заданий, выдаваемых департаментом энергетики США, и ряд других /5,23/.

Вторая категория мультикомпьютеров включает обычные ПК или рабочие станции (иногда смонтированные в стойки), которые связываются коммуникационной сетью определённой топологии. Принципиальное отлчие COW-систем от MPP-систем заключается в том, что все вычисления MPP-системах выполняются гораздо быстрее, из-за чего управляются и применяются они совершенно по-разному. Эти «доморощенные» системы называют кластерами рабочих станцийCOW (Cluster Of Workstation). Наиболее ярким примером является кластер Google /5/.

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

10.3 Вычислительные системы на кристалле. Многоядерные системы

Возможность реализации всех блоков вычислительной системы на одном кристалле открывает новые возможности для разработчиков и позволяет улучшить общетехнические показатели системы: снизить стоимость, повысить быстродействие и надёжность. Опыт разработки дискретных систем показывает, что, в среднем, стоимость соединения на кристалле в 10 раз ниже, чем на печатной плате; задержки в связях на печатной плате в 10 раз больше, чем на кристалле; надёжность и помехозащищённость соединений на кристалле также существенно выше, чем на плате и в межплатных соединениях /1/.

В связи с развитием технологии производства СБИС, когда уровень интеграции превысил 1 млн. вентилей на кристалле, появилась возможность реализации системы на кристалле. Можно размещать на кристалле как унифицированные блоки: процессор, память, контроллеры шин, так и специализированные устройства, разделяемые средствами программируемой логики на той же СБИС. Общая структура системы на кристалле – System On Programmable Chip (SOPC) содержит следующие блоки (Рисунок 10.7) /1/: процессор, кэш-память, ОЗУ, интерфейс шины для связи с внешней памятью и другими устройствами, последовательный порт, поле программируемой логики для реализации специализированных блоков системы.

Рисунок 10.7 – Общая структура СБИС системы на кристалле

Получили развитие два направления создания кристаллов SOPC /1/: однородные и блочные.

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

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

По мере роста интеграции параллельная обработка информации стала применяться и на уровне мультипроцессорной обработки. Переход к мультипроцессорным системам на кристалле позволяет замедлить рост потребляемой мощности при увеличении ресурсов кристалла. Мультипроцессорные системы на кристалле (многоядерные процессоры) обозначают аббревиатурой CMP (Chip Multi-Processor). Применение полноценных многопроцессорных систем не получило широкого распространения, поскольку требует сложных и дорогостоящих многопроцессорных материнских плат. Разработка многоядерных процессорных систем является перспективным направлением повышения производительности современных ВМ.

Ядро – кристалл кремния, на котором посредством микроскопических логических элементов реализована принципиальная схема процессора (архитектура). Многоядерный процессор – это центральный процессор, содержащий два и более вычислительных ядра на одном процессорном кристалле или в одном корпусе /21/.

Среди CMP – систем, в первую очередь, получили развитие симметричные системы – Symmetric General Purpose coresмультипроцессорные системы на кристалле с симметричными ядрами общего назначения (Рисунок 10.8) /1/.

 
 

Рисунок 10.8 – Симметричная многоядерная архитектура с общей кэш L2

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

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

Применение различных способов организации внутрикристалльной памяти (регистров, кэшей) и механизмов динамического назначения команд на исполнение /1/, позволяет организовать параллельное выполнение нескольких тредов (потоков) в одном процессорном ядре с совместным использованием ресурсов на кристалле. На рисунке 10.9 приведён план кристалла многопотоковой мультиядерной системы с общим кэшем. Такие системы называются мультиплексорными системами на кристалле SMT (Simultaneous Multi-Threading).

По сравнению с обычными симметричными системами сложность разработки SMT-систем возрастает.

Рисунок 10.9 – Многопотоковая многоядерная архитектура с общим

кэшем

В ассиметричных кластерных мультипроцессорных системах ACCMP (Asymetric Cluster CMP) на кристалле размещается ассиметричный кластер процессорных ядер с различной специализированной аппаратурой. Например, кластер может содержать RISC-ядро процессора, ядра специализированных процессоров для цифровой обработки сигналов, блоки памяти, средства коммуникаций. Согласно /22/, функциональная неоднородность в таких архитектурах влечёт за собой структурные отличия во фрагментах системы, содержащих разные процессорные ядра и блоки. Например, они могут отличаться схемами подключения процессорных ядер к СШ, способами взаимодействия процессорных ядер с устройствами и т.д. Ассиметричные кластерные архитектуры являются хорошо масштабируемыми. В ассиметричных архитектурах функции управления вычислительным процессом полностью централизованы, и ОС работает только на одном процессоре. Этот процессор является ведущим, а все остальные - ведомыми. Ведущий берёт на себя функции распределения задач и ресурсов, а ведомые – работают только как обрабатывающие устройства. Ассиметричные архитектуры позволяют повысить производительность по сравнению с симметричными, но при этом требуется разработка специализированных ядер. Кроме того, такая специализация снижает надёжность системы, поскольку процессоры не являются взаимозаменяемыми.

Можно выделить три варианта конструктивного расположения ядер на кристалле:

1) Независимые процессорные ядра (каждое со своей памятью) расположены на одном кристалле и для связи используют общую системную шину.

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

3) Ядра могут быть тесно переплетены между собой на одном кристалле и могут использовать некоторые общие ресурсы кристалла (например, шину и кэш-память).

Преимущества и недостатки мультиядерных процессоров вытекают из преимуществ и недостатков параллельных ВС. Следует отметить, что в настоящее время многоядерные процессоры используются крайне неэффективно. Прирост быстродействия, во многом, зависит от типа приложения. У программ, которые не рассчитаны на работу с многоядерными процессорами, быстродействие увеличивается всего на 5%. А вот оптимизированные под многоядерные процессоры приложения работают быстрее уже на 50% /21/.

10.4 Тенденции развития ВС

Существует два направления развития высокопроизводительных вычислений /1/. Первое направление связано с применением дорогих суперкомпьютеров с уникальной архитектурой (специальные векторные процессоры, дорогостоящая сверхбыстрая память, уникальное периферийное оборудование), например, суперкомпьютеры CRAY, NEC, IBM, Эльбрус и т.д. Второе направление связано с созданием ВС массового параллелизма Основной упор при этом делается на увеличение числа процессоров и повышение степени параллелизма программ. При этом большую популярность приобретают COW-системы, которые постепенно вытесняют MPP

Мультипроцессорные высокопроизводительные ВС находят своё применение в таких областях как исследовательская, промышленная, образовательная, административная, при производстве самих ВС. Такие системы требуются для точного прогнозирования погоды и климата, для развития современного промышленного дизайна, для создания новых фармацевтических средств и т.д. Среди установленных мультипроцессорных систем системы с архитектурой MPP составляют подавляющее большинство (65%), системы SMP – 21%, системы с векторными процессорами -12%, кластерные системы – 2%. Доля кластерных систем постепенно возрастает.

Относительно многоядерных процессоров /22/, лидеры по производству процессоров, компании Intel и AMD продолжают наращивать количество ядер в процессорах. Например, Intel планирует выпускать процессоры, содержащие до сотни ядер. Появление мультиядерных процессоров, в свою очередь, стимулирует разработку ОС и прикладного программного обеспечения, поддерживающих многоядерность. Кроме того, в корпорации Intel планируют выпускать многоядерный процессор с новой архитектурой, в составе которого будет находиться одно мощное центральное ядро, окружённое множеством вспомогательных ядер. Это поможет более эффективно обрабатывать сложные мультимедийные приложения в многопоточном режиме. Кроме ядер общего назначения, процессоры будут обладать специализированными ядрами для выполнения различных классов задач: графика, алгоритмы распознавания речи и т.п.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: