Файл: Мультипроцессоры (Понятие, роль и сущность микропроцессоров).pdf
Добавлен: 27.04.2023
Просмотров: 252
Скачиваний: 1
Использование распределенной общей памяти снижает проблему и задачи при создании мультипроцессоров, но сложность повышается за счёт сложности процесса параллельного программирования.
Рассмотрим принцип организации одновременной многопотоковости, в котором задействован принцип симметричной мультипроцессорности. Такое решение позволяет достаточно легко увеличивать производительность технических средств, но одновременно затрачивает немало финансовых ресурсов.
С другой стороны, проанализировав эффективность современных сложных процессоров, насчитывающих в своем составе десятки и сотни миллионов транзисторов, можно обратить внимание на то, что при выполнении большинства операций оказываются полностью задействованными не все составные компоненты процессоров.
Для повышения загрузки процессора можно организовать спекулятивное исполнение операций, воплощение такого подхода требует существенного усложнения логики аппаратной реализации процессора.
Впервые идея поддержки одновременной многопоточности (simultaneous multithreading, SMT)[12] была предложена в 1995 г. в университете Вашингтона Дином Тулсеном (Dean Tullsen) и позднее активно развита компанией Intel под названием технологии гиперпоточности (hyper threading, HT).
Процессор дополняется средствами запоминания состояния потоков, схемами контроля одновременного выполнения нескольких потоков и т. д. За счет этих дополнительных средств на активной стадии выполнения может находиться несколько потоков; при этом одновременно выполняемые потоки конкурируют за исполнительные блоки единственного процессора, и как результат выполнение отдельных потоков может блокироваться, если требуемые в данный момент времени блоки процессора оказываются уже задействованными.
Как правило, число аппаратно-поддерживаемых потоков равно 2, в более редких случаях этот показатель достигает 4 и даже 8. Важно при этом подчеркнуть, что аппаратно-поддерживаемые потоки на логическом уровне операционных систем Linux и Windows воспринимаются как отдельные процессоры, т. е., например, единственный процессор с двумя аппаратно-поддерживаемыми потоками в менеджере Task Manager операционной системы Windows диагностируется как два отдельных процессора. Использование процессоров с поддержкой многопотоковости может приводить к существенному ускорению вычислений.
Технология одновременной многопоточности дает возможность достичь многопроцессорности на логическом уровне. Затраты на такую технологию небольшие, но и эффект ускорение вычислений от использования реализуется лишь на 30%.
Дальнейшее повышение быстродействия вычислений при таком подходе по-прежнему лежит на пути совершенствования процессора, что – как было отмечено ранее – требует решения ряда сложных технологических проблем. Например, за счёт реализации в единственном кремниевом кристалле несколько вычислительных ядер в составе одного мультипроцессора.
За счёт реализации данной технологии результат оказывается более надежным и более простыми для изготовления.
Поясним сказанное на примере рисунке 1.
В центре рисунка приведены показатели исходного процессора, принятые для дальнейшего сравнения с другими образцами.
Рисунок 1 — Демонстрация зависимости между тактовой частотой, энергопотреблением и производительностью процессора[13]
Например, для увеличения параметров быстродействия процессора, увеличим его тактовую частоту на величину в 20%. В результате параметры производительности будут увеличены не на полную величину в 20%, а только лишь на 13% или меньше. Данное явление обусловлено тратой энергии на другие процессы (на увеличение энергопотребления, нагрев и т.д.).
Подобная ситуация наблюдается и при уменьшении тактовой частоты процессора. Так образом, уменьшение тактовой частоты на 20% снизит производительность на примерно 13%.
Многоядерность, в свою очередь, позволяет повышать производительность процессоров, и данный подход целым рядом привлекательных моментов. То есть многоядерность может быть использована в качестве одного из приоритетных направлений развития компьютерной техники.
Кэш-память L1, L2, L3……
Кэш-память L1
Оперативная память
Кэш-память L1
Вычислительное ядро
Вычислительное ядро
Рисунок 2 - Архитектура двухъядерного процессора[14]
Указанное явление означает, что закон Мура упрощается до выражения: "Количество вычислительных ядер в процессоре будет удваиваться каждые 18 месяцев". Однако, скорое удвоение количества ядер не приводит к мгновенному увеличению производительности, поскольку необходимо определенное время для проработки или совершенствования алгоритмов способных эффективно использовать эти ядра.
Для массового использования пользователями применяются двух-, четырех-, шести- и восьми- ядерные процессоры. Нынешние научно-технические источники информации освещают процессоры с массовой многоядерностью (many-core).
Потенциал производительности мультипроцессоров может быть использован лишь при соответствующей разработке программного обеспечения – программы должны быть очень хорошо распараллелены.
Сложность создания параллельных программ больше, чем затраты на создание обычных приложений, созданных последовательным программированием.
Таким образом, необходимо использование новых идей и перспективных технологий для организации массового производства параллельных программ.
Выводы по первой главе
Рассмотрев положения первой главы, автором определено понятие «мультипроцессор», выявлены его функции и роль в системе вычислительных машин.
Так, мультипроцессор – это специальная система, состоящая из нескольких процессоров, по своему количеству от двух до тысячи. Мультипроцессорные системы — это специальные компьютерные системы, которые в своем составе имеют не один, а сразу несколько процессоров и только одно адресное пространство (адресный путь, поле), которое в свою очередь видно для сразу нескольких процессоров. В себе они реализуют принципы системы MESI, специального протокола, который реализует мониторинг информации в текущем и средних процессорах, а затем отмечает схожую и новую информацию в файлах соответствующим образом.
2. Классификации мультипроцессоров и применение в современных системах
2.1 Классификации мультипроцессоров
Рассмотрим классификации мультипроцессорных систем. Простая классификация предусматривает две категории: гомогенные (одинаковые процессоры в системе) и гетерогенные (разнотипные процессоры в системе).
Кроме того, мультипроцессорные системы классифицируют по ряду признаков, показанном на рисунке 3.
Рисунок 3 — Классификация мультипроцессоров по ряду признаков[15]
Многопоточное программирование используется либо явно (в языках C/C++ с помощью POSIX Threads или в Java и C# – с помощью конструкций языка), либо неявно – декларативно с помощью директив компилятора (Open MP) или автоматически самим компилятором (High Performance Fortran).
Предпосылками разработки мультипроцессоров стала необходимость решения всё более сложных задач. В связи с этим возникли следующие направления[16]:
- разработка высокопроизводительных процессоров;
- разработка мультипроцессорных компьютеров;
- разработка мультикомпьютеров (суперкомпьютеров), в которых все компьютеры объединяются высокоскоростной схемой соединения;
- разработка распределенных вычислительных систем на базе большого количества отдельных компьютеров, объединенных локальной или глобальной сетью.
Основываясь на данных критериях, вычислительные системы стали развиваться в двух направлениях: разработка мультипроцессорных систем и объединение автономных систем в вычислительные сети.
Подобные направления не повлияли значительным образом на работу операционных систем. В мультипроцессорной системе теперь в состоянии выполнения теперь может находиться не один процесс, а несколько.
Соответственно изменяются и алгоритмы планирования, поскольку наличие нескольких р процессов требует более аккуратной реализации взаимоисключений при работе ядра. Изменения в мультипроцессорных вычислительных комплексах затрагивают и уровень алгоритмов, это вызвано рядом причин, представленных на рисунке 4.
Рисунок 4 – Причины изменения в алгоритмах и мультипроцессорах[17]
Как известно, гомогенные мультипроцессоры принадлежат только одной соединяющей компьютерной сети по единой технологии. В то же самое время гетерогенные системы могут состоять из независимых разнородных компьютеров, объединенных разными типами сетей.
Под распределенной системой принято понимать некоторое количество независимых компьютеров, принимаемых пользователями в качестве единой объединенной системы.
Поэтому есть минимально две важные характеристики распределенных систем[18]:
– от пользователей скрыты различия между компьютерами и способами связи между ними;
– пользователи и приложения единообразно работают в распределенных системах, независимо от того, где и когда происходит их взаимодействие.
Для того чтобы поддержать представление различных компьютерных платформ и сетей в виде единой системы, организация распределенной системы часто включает в себя дополнительное программное обеспечение, находящееся между приложениями и операционной системой.
Распределенная обработка данных, при которой процессоры предполагает разделение функций компьютеров. Её плюсами являются: малое время отклика, высокая степень доступности, совместное использование дорогостоящих ресурсов, возможность постоянного наращивания мощности системы.
Операционная система в составе распределенной вычислительной системы может обеспечить поддержку ряда функций распределенной обработки данных.
Значительное облегчение доступа пользователям к удаленным ресурсам и регулирование процесса совместного использования этими ресурсами является основной задачей распределенных систем.
Значит, распределенные системы должны обладать такой степенью виртуализации, при которой они будут представляться пользователям и приложениям в виде единой компьютерной системы. При этом должна быть реализована прозрачность доступа к ресурсам различных компьютеров в сети, призванная скрыть разницу в представлении данных и способах доступа к ресурсам.
Не останавливаясь на технической реализации распределенных систем, рассмотрим принципы организации операционных систем распределенных вычислительных систем.
Операционные системы, разработанные для распределенных компьютерных систем, можно разделить на сильно связанные и слабосвязанные. Сильно связанных системах операционные системы, в основном, работает с одним, глобальным представлением ресурсов, которыми она управляет. Сильно связанные операционные системы обычно принимаются в качестве основных видов распределенных операционных системам (DOS) и применяются в процессе управления мультипроцессорными и гомогенными компьютерными системами[19].
В то время как Слабосвязанные системы, или Network Operating System, функционируют совместно и применяются для управления гетерогенными мультикомпьютерными системами. Они похожи на более примитивные системы, чем распределенные, поскольку они не способны значительным образом обеспечить полноценное представление единой системы. Поэтому важно задействовать ресурсы другого сетевого компьютера, пользователи должны знать о его наличии и уметь это сделать.
Как уже было отмечено, технические средства и их операционные системы зачастую бывают абсолютно неидентичными, но требуется объединение всех их общей сетью и наличие доступа к службам, расположенным на конкретном компьютере. Например, связь с удаленным компьютером часто реализуется через специальные сокеты — объекты, применяемые для обозначения коммуникационного внутрисетевого узла, обеспечивающего прием и передачу данных для процессов.
С целью упрощения разработки и интеграции приложений приходится базировать одну часть программного обеспечения на разных моделях (файлах), а другую часть программного обеспечения связывать с на удаленным вызовом, то есть с сетевым обменом (Remote Procedure Calls, RPC).