ПОД (пособие) (1184372), страница 28
Текст из файла (страница 28)
2), причем первый уровень иерархии памяти образует их кэшпамять, а ccNUMA поддерживает когерентность внутри узла аппаратно. В системахccNUMA распределенная память представляется единым адресным пространством. Непроисходит никакого копирования страниц или данных. Нет программной передачисообщений для синхронизации доступа. Есть просто единый массив памяти (хотяфизически он состоит из отдельных частей). Аппаратная когерентность кэш-памятиозначает, что не требуется никакого ПО для поддержки актуальности множества копийданных. Все это выполняется на аппаратном уровне так же, как в любом SMP-узле, с однимэкземпляром ОС и множеством процессоров. В свою очередь NUMA-Q - это, по сути,реализация архитектуры ccNUMA компанией Sequent.Элементарным блоком платформы NUMA-Q (рис. 3) служил квод (quad), в которомобъединялись четыре процессора, блок разделяемой памяти и шина PCI с семью слотами.Несколько кводов можно было объединить для формирования более крупного одиночногоSMP-узла с аппаратно-реализованной кэш-когерентностью.
Кэш-когерентное соединение,устанавливаемое между шинами, называлось IQ-Link. Оно было практически полностьюпрозрачно для программ, подобно обычной кэш-памяти. В традиционном смысле память вкаждом кводе не была локальной; скорее, это была одна треть адресного пространствафизической памяти, имевшая собственный адресный диапазон. Адресная картараспределялась по памяти равномерно, при этом каждый квод содержал смежную частьадресного пространства. Например, если требуемый адрес находился за пределамидиапазона локальной памяти квода, поиск распространялся на кэш-память IQ-Link, котораяназывалась удаленной.
Доступ к ней осуществлялся с такой же скоростью, как и клокальной памяти квода. Если и в кэш-памяти IQ-Link данные не удавалось найти,отсылался запрос на шину IQ-Link. После того как требуемое значение загружалось издругого квода, оно сохранялось в удаленной кэш-памяти IQ-Link запрашивающего квода.Топологии мультипроцессорных коммутационных сетей.Типы внутренних связей.11.9 Системы со слабо и сильно связанными процессорамиМультипроцессорные системы со слабо связанными процессорами (многомашинныекомплексы) предусматривают соединение двух или более независимых вычислительныхмашин при помощи канала связи (рис.
11.9). При этом каждая машина имеет своюсобственную85Рис. 11.9 Мультипроцессорная система(многомашинный вычислительный комплекс).сослабосвязаннымипроцессорамиРис. 11.10 Мультипроцессорная система с сильно связанными процессорами.операционную систему и память. Машины могут функционировать независимо друг отдруга и взаимодействовать при необходимости. Эти самостоятельные машины могутобращаться к файлам друг друга при помощи канала связи, а в некоторых случаях онимогут передавать задачи для выполнения на менее загруженных процессорах, что позволяетв определенной степени балансировать нагрузку.Мультипроцессорные системы с сильно связанными процессорами (многопроцессорныевычислительные комплексы) (рис. 11.10) имеют единую память, коллективноиспользуемую различными процессорами, и единую операционную систему, котораяуправляет работой всех процессоров и других аппаратных средств системы.11.10 Организация «главный — подчиненный»В мультипроцессорной системе с организацией «главный — подчиненный» один изпроцессоров выполняет функции главного, а другие являются подчиненными.
В качествеглавного используется процессор общего назначения, который может выполнять каквычисления, так и операции ввода-вывода. Подчиненные процессоры выполняют тольковычисления.Подчиненные процессоры могут эффективно выполнять вычисления, задания же, в которыхпреобладают операции ввода-вывода, вызывают частое обращение к услугам, которыеможет предоставлять только главный процессор, что приводит к снижению эффективностиработы системы.
Оценивая подобную организацию с точки зрения надежности, можноотметить, что в случае выхода из строя одного из подчиненных процессоров системапотеряет часть своих вычислительных возможностей, но все же будет продолжатьфункционировать. Если же выйдет из строя главный процессор, система не сможетвыполнять операции ввода-вывода. В некоторых системах эта проблема решается путемпереключения устройств ввода-вывода на один из подчиненных процессоров, с тем чтобыпри рестарте системы этот процессор выполнял функции главного.За последние годы скорости работы процессоров удалось повысить гораздо болеесущественно, чем скорости выполнения операций ввода-вывода. Это привело к тому, чтозадания, которые ранее считались преимущественно вычислительными, теперь сталитребовать относительно больших затрат времени на ввод-вывод, поскольку вычисления,выполняемые между последовательными операциями ввода-вывода, начали производитьсянамного быстрее.
А это в свою очередь привело к тому, что задания, которые ранее моглиэффективно выполняться на одной модели мультипроцессорной системы с организацией86«главный — подчиненный», стало теперь менее целесообразно выполнять на новыхмоделях систем подобной организации с усовершенствованной аппаратурой. Такимобразом, основной недостаток мультипроцессорных систем с организацией «главный —подчиненный» заключается в асимметричности аппаратных средств.
В такой системепроцессоры не эквивалентны, поскольку только главный процессор может выполнять каквычисления, так и операции ввода-вывода. Поэтому более удачной можно считатьсимметричную мультипроцессорную систему, в которой все процессоры функциональноэквивалентны и могут выполнять и вычисления, и операции ввода-вывода.Статические и динамические коммуникаторы.С миру по нитке…Для систем с распределенной памятью обычно используется механизм задач (процессов) ипередачи сообщений (обмен данными). Исходная программа разбивается на задачи(подзадачи), которые могут выполняться параллельно на разных процессорах.
Связь междузадачами осуществляется с помощью передачи сообщений. В основе подхода лежитфундаментальная модель Хоара [12].Очевидно, что не все программы позволяют эффективно использовать распределенныесистемы. Так как обмены сообщениями требуют затрат времени для своего выполнения иприостанавливают процессор при ожидании получения сообщения, очень важно, чтобывремя, необходимое для обмена сообщениями, не доминировало над временем выполненияпрограммы.Распределенные системы лучше всего использовать для тех вычислительных задач, которыемогут быть разбиты на такие подзадачи, для которых время выполнения существеннобольше (долгоживущие процессы), чем время обмена между ними.Имеются разные подходы как к выбору конкретных средств реализации механизма задач ипередачи сообщений, так и отображению этих средств в языке.Во многих системах (EXPRESS, PVM, P4, PARMACS и др.) механизм задач реализуется спомощью библиотечных вызовов.
Накоплен большой опыт использования подобныхсистем; предпринимаются попытки унификации. Проект стандарта MPI (Message PassingInterface) [13] представляет собой стандартный набор библиотечных интерфейсов дляпередачи сообщений.MPI включает большой набор средств, в число которых входят операции передачисообщений от одного источника (процессора) к другому. Каждому из 6 разных (по способусинхронизации) видов передачи сообщений соответствует своя операция; необходимая длявыполнения операции информация задается с помощью параметров процедур.Предусмотрены коллективные операции, включающие как широковещательную передачусообщений, так и функции редукции.Поддерживаются все типы данных, имеющиеся в Фортране и Си, имеются и собственныетипы данных.
Кроме того, для предотвращения коллизии с правилами типов языковверхнего уровня в MPI предусмотрены системные (так называемые "скрытые") объекты,внутреннее представление которых скрыто от пользователя. Предусмотрена возможностьконструирования производных типов (структур), которые обеспечивают возможность спомощью одного вызова передать объекты данных разных типов, передать данные, нерасположенные в непрерывной области памяти или передать секции массивов.87Для адресации используются группы процессов и коммуникаторы .
Коммуникаторы иконтексты обеспечивают возможность делить общее коммуникационное пространство наотдельные замкнутые области.Хотя MPI предлагает большой набор средств, все же, как уже отмечалось, для прикладныхпрограммистов более предпочтительными являются системы, основанные на расширенииязыков.Расширения Фортрана для рассматриваемой архитектуры реализованы, например, в языкеFortran Suprenum [14]. В этом языке используется аппарат динамического создания задач иасинхронная модель передачи сообщений. Языковые средства обеспечивают более высокийуровень программирования, так в операторах передачи сообщений можно указыватьпроизвольный список передаваемых данных, аналогичный списку ввода/вывода Фортрана,что гораздо удобнее, чем средства, имеющиеся в системах, основанных на библиотечномподходе, в которых требуется, чтобы либо все передаваемые данные находились внепрерывной области памяти, длина которой часто указывается в байтах, либо (как в MPI)необходимо предварительно объединить эти данные в структуру.Разработка Fortran Suprenum легла в основу проекта европейского стандарта, которыйразработан в Германии в рамках общеевропейского проекта ESPRIT [15].
Языковыерасширения в данном проекте ориентированы на Фортран 90. Для того, чтобы вводимыерасширения были машинно-независимыми, предлагается модель абстрактной машины GENESIS.Согласно этой модели, прикладная программа содержит одну начальную задачу и можетсодержать другие задачи. Несколько задач могут выполняться параллельно на разныхпроцессорах, однако число задач не ограничивается числом процессоров. Каждая задачаимеет уникальное имя.
Модель предполагает динамическое создание задач; однаждысозданная задача размещается в локальной памяти статически. Задача использует тольколокальную область памяти без разделения данных с другими задачами. Выполнениепрограммы начинается с выполнения начальной задачи. Она создает другие задачи,которые, в свою очередь, могут также создавать новые задачи.Обмен информацией между задачами осуществляется с помощью передачи сообщений.Предусмотрено три способа передачи сообщений: синхронный, асинхронный и передачабез ожидания.В язык введен новый тип данных (имена задач), дополнительный вид программных единиц(программные единицы-задачи), новые операторы, включая операторы передачи сообщенийSEND и RECEIVE, расширен набор стандартных процедур.Группы, контексты, коммуникаторы.Группа - упорядоченное (от 0 до ранга группы) множество идентификаторов процессов (т.е.процессов).