Добавлен: 22.04.2023
Просмотров: 92
Скачиваний: 1
Введение
На сегодняшний день компьютерная архитектура получила большое развитие и уже не ограничивается стандартными средствами реализации. В качестве примера реализации нестандартной архитектуры можно привести мультипроцессорность. Мультипроцессорность является относительно новым явлением в индустрии информационных технологий, которое положило начало новому витку развития мощностей информационных систем.
Целью данной работы является сбор информации об применении мультипроцессорности для корректного понимания правильности условий использования данной технологии.
Объектом исследования является явление мультипроцессорности, предметом исследования – мультипроцессоры как аппаратное обеспечение.
Задачами данной работы являются:
-
обзор понятия мультипроцессорности;
-
разбор видов мультипроцессорности;
-
рассмотрение программных реализаций мультипроцессорности;
-
обзор понятия мультипроцессора;
-
проведение классификации мультипроцессоров;
-
изучение программирования мультипроцессоров;
-
рассмотрение истории мультипроцессоров.
В основу данного исследования легли работы Таненбаума, Паттерсона и Хеннеси.
Таненбаум является заслуженным профессором Гарвардского университета, опубликовавшим много трудов в сфере информационных технологий, ставших фундаментальными. На его трудах основываются многие исследования, а его учеником был Линус Торвальдс, создатель операционной системы Линукс.
Паттерсон является заслуженным профессором Калифорнийского университета в Беркли, работающим в области микропроцессоров и информатики. Он известен своим вкладом в проектирование RISC-процессоров и создание принципа работы RAID-массивов.
Хеннесси является американским ученым, работающим в области микропроцессоров и информатики. Также он является основателем MIPS Computer Systems Inc. и ректором Стэнфордского университета.
Данные авторы публикуются довольно длительно время, имеют по несколько редакций каждой из своих работ и пользуются спросом у рядовых пользователей, так как описывают сложные технические термины легким для понимания языком.
1. Мультипроцессорность
1.1. Основные понятия мультипроцессорности
Многопроцессорность является использованием в составе одного устройства нескольких физических процессоров.
Программа или операционная система называется многопроцессорной в том случае, когда она способна распределять задачи между процессорами. Данный процесс распределения называется многопоточностью.
Существует несколько вариантов указанного понятия, определение многопроцессорности также имеет возможность меняться в зависимости от контекста, в основном завися от определения процессоров. В качестве примеров определений можно привести множество корпусов в одном системном модуле, множество чипов в одном корпусе и много ядер в одном кристалле[1].
Мультипроцессорностью иногда называют выполнение множественных параллельных программных процессов в системе в противоположность выполнению одного процесса в любой момент времени. Но термины мультипрограммирование или многозадачность являются более подходящими для описания этого понятия, главным образом осуществленного в программном обеспечении, тогда как мультипроцессорная обработка является более соответствующей для описания использования множественных аппаратных процессоров. Система не может быть и мультипрограммированной и многопроцессорной, только или одной из двух, или ни той и ни другой[2] [2, 3].
1.2. Типы мультипроцессорности
1.2.1. Процессорная симметричность
В многопроцессорной системе допустимо, чтобы все центральные процессоры были равными или некоторые были зарезервированы для применения в особых целях. Совокупность конструктивных соображений программного обеспечения операционной и аппаратной системы определяет симметрию или ее отсутствие в данной системе. Например, программные или аппаратные соображения могут потребовать ответа только одного центрального процессора на все аппаратные прерывания, в то время, как вся остальная работа в системе будет распределена одинаково среди процессоров; или выполнение кода привилегированного режима будет ограничено только одним процессором, тогда, как код непривилегированного режима может быть выполнен на любой комбинации процессоров. Часто многопроцессорные системы проще проектировать с введением ограничений, но они имеют тенденцию быть менее эффективными чем системы, в которых используются все центральные процессоры[3] [5, 7].
Системы, обрабатывающие все центральные процессоры одинаково, называются SMP, системами с симметричной многопроцессорной обработкой. В системах, в которых все центральные процессоры не равны, системные ресурсы могут быть разделены многими способами, в том числе qq.v. (кластеризованной многопроцессорной обработкой), NUMA (многопроцессорной обработкой с неоднородным доступом к памяти) и ASMP (асимметричной многопроцессорной обработкой)[4].
1.2.2. Потоки команд и данных
В многопроцессорной обработке процессоры используются для выполнения одной последовательности команд во множественных контекстах (используемый в векторной обработке SIMD, множественные данные или часто или единственная машинная команда), множественные последовательности команд в единственном контексте (одиночный поток данных, множественный поток команд или Архитектура MISD, которая используется для избыточности в отказоустойчивых системах и иногда применяется, чтобы описать гиперпоточность или конвейерные процессоры), или множественные последовательности команд во множественных контекстах (множественные поток данных, множественный поток команд или MIMD)[5] [6].
1.2.3. Соединения процессоров
Многопроцессорные системы с сильной связью содержат несколько процессоров, подключенных на шинном уровне. Данный вид процессоров имеет доступ к центральной разделяемой памяти, или может участвовать в иерархии памяти и с разделяемой и с локальной памятью. В качестве примера мощной системы SMP можно привести IBM p690 Regatta. Процессоры Intel Xeon доминировали над многопроцессорным рынком для деловых рабочих станций и были единственной x86-опцией до 2004 года, когда был произведен выпуск линейки процессоров AMD Opteron. Обе линейки процессоров имели свой собственный встроенный кэш, но по-разному обеспечивали доступ к разделяемой памяти: процессоры Xeon через общий канал, а процессоры Opteron через независимые магистрали к системной оперативной памяти [6].
Мультипроцессорные чипы, включающие больше одного помещенного в однокристальную схему процессора, считаются самой предельной формой многопроцессорной обработки с сильной связью. Мэйнфреймовые системы со множеством процессоров обычно представляют собой системы с сильной связью.
Многопроцессорные системы с гибкой связью часто называют кластерами. Они основаны на множественных автономных двойных или одиночных компьютерах, которые связаны через высокоскоростную систему связи. В качестве примера гибко связанной системы можно привести Кластер Беовульфа под управлением Linux[7].
Системы с сильной связью работают лучше и имеют физически меньший размер, чем гибко связанные системы, но исторически требуют больших начальных инвестиций и могут быстро амортизовываться; узлами в гибко связанной системе обычно являются недорогие компьютеры, которые используются в качестве независимых машин после удаления из кластера.
Системы с сильной связью имеют тенденцию быть намного более энергоэффективнее кластеров. Значительная энергоэффективность достигается за счет предварительного проектирования компонентов в таких системах для работы в конкретной системе, в то время как гибко связанные системы зачастую используют спроектированные для работы в более широком классе систем компоненты[8] [1, 4, 8].
1.3. Программные реализации
1.3.1. Многопроцессорная обработка с SISD
В компьютере с одиночным потоком данных и одиночным потоком команд одним процессором последовательно обрабатываются машинные команды; каждая из которых обрабатывает один элемент данных. В качестве примера можно привести фон-неймановскую архитектуру.
SISD-компьютеры являются обычными, традиционными последовательными компьютерами, в которых в каждый момент времени выполняется лишь одна операция над одним элементом данных, которое является числовым или каким-либо другим значением. Например, большинство персональных компьютеров до последнего времени попадает именно в эту категорию. Также иногда сюда относят некоторые типы векторных компьютеров, но это зависит от того, что понимать под потоком данных[9] [11].
1.3.2. Многопроцессорная обработка SIMD
В компьютере с множественным потоком данных и одиночным потоком команд один процессор обрабатывает поток машинных команд, каждая из которых выполняет параллельные вычисления на множестве данных.
Многопроцессорная обработка SIMD хорошо подходит с целью векторной или параллельной обработки, когда большой набор данных делится на части, обрабатываемые идентичными, но независимым операциями. Одиночный поток команд направляет операцию модулей мультипрограммирования с целью выполнения однотипных манипуляций одновременно на потенциально большом количестве данных[10].
Для определенных типов вычислительных приложений данный тип архитектуры дает значительное увеличение производительности с точки зрения затраченного времени. Но недостатком этой архитектуры являются простои большей части системы при выполнении системных задач или программ, которые не могут быть разделены на обрабатываемые параллельно подзадачи[11].
Также программы должны быть специально тщательно написаны для того, чтобы иметь возможность максимально задействовать возможности архитектуры. Часто применяются специальные оптимизирующие компиляторы, которые спроектированы чтобы создать код специально для использования в этой среде. Некоторыми компиляторами в этой категории обеспечиваются специальные расширения или конструкции, чтобы позволить программистам непосредственно определять выполняющиеся параллельно операции. В качестве примера таких операций можно привести операторы DO FOR ALL в Фортране, используемого на ILLIAC IV, который был многопроцессорным суперкомпьютером с SIMD-архитектурой.
Многопроцессорная обработка SIMD находит широкое применение в некоторых областях, таких как компьютерное моделирование, но малополезна в бизнес-задачах и универсальном настольном компьютере[12] [4, 9, 11].
1.3.3. Многопроцессорная обработка MISD
Многопроцессорная обработка с одиночным потоком данных и множественным потоком команд предлагает главным образом преимущество избыточности, так как модули мультипрограммирования выполняют одни задачи на одних данных, уменьшая возможности неправильных результатов, если один из модулей выходит из строя. Архитектура MISD позволяет сравнивать результаты вычислений в целях обнаружения отказов. Кроме избыточности и отказоустойчивости у этого типа многопроцессорной обработки немного преимуществ. К тому же он не увеличивает производительность и весьма дорог[13] [8].
1.3.4. Многопроцессорная обработка MIMD
Архитектура многопроцессорной обработки MIMD является подходящей для большого числа разнообразных задач, где реализовано параллельное и полностью независимое выполнение команд, которые касаются различных наборов данных. MIMD преобладает в многопроцессорной обработке по этой причине, а также потому что это просто осуществить[14].
Обработка разделена на несколько потоков, каждый с собственным аппаратным состоянием процессора, в пределах множественных процессов или в рамках единственного определенного программным обеспечением процесса. Поскольку система имеет несколько ожидающих выполнения потоков, данный вид архитектуры эффективно использует аппаратные ресурсы[15].
При данной типе обработке могут возникнуть проблемы состязания за обладание ресурсами и взаимной блокировки, так как потоки могут столкнуться непредсказуемым способом при попытке получить доступ к ресурсам. Такая архитектура требует специального кодирования в операционной системе компьютера, но не требует изменений в прикладных программах, кроме тех случаев, в которых программы сами используют множественные потоки. Тип архитектуры MIMD прозрачен для однопоточных программ под управлением большинства операционных систем, если программы сами не отказываются от управления со стороны операционной системы. И пользовательское и системное программное обеспечение, возможно, должны использовать программные конструкции, такие как семафоры, чтобы препятствовать тому, чтобы один поток вмешался в другой, в ситуации, когда они содержат ссылку на одни и те же данные. Данное действие увеличивает сложность кода, снижает производительность и значительно увеличивают количество необходимого тестирования, хотя обычно не настолько чтобы свести на нет преимущества многопроцессорной обработки.