
- •Уровни параллелизма
- •К понятию уровня параллелизма тесно примыкает понятие гранулярности.
- •Параллелизм уровня задания
- •Параллелизм уровня команд.
- •Метрики параллельных вычислений.
- •Misd – множественный поток команд и одиночный поток данных
- •Simd – одиночный поток команд и множественный поток данных.
- •Память с чередованием адресов.
- •Модели архитектур распределенной памяти.
- •Мультипроцессорная когерентность кэш – памяти.
- •Программные способы
- •Аппаратные способы решения проблемы некогерентности
- •Совместно используемая кэш – память.
- •Некэшируеые данные.
- •Протоколы на основе справочника
- •Топологии вс.
- •Метрики сетевых соединений.
- •Функции маршрутизации данных
Параллелизм уровня команд.
Параллелизм уровня команд имеет место, когда обработка нескольких команд или выполнение различных этапов одной и той же команды может быть перекрываться во времени. Разработчики вычислительной техники издавна прибегали к методам, известным под общим названием совмещения операций при котором аппаратура ВМ в любой момент времени выполняет одновременно более одной операции . Этот общий принцип включает в себя два понятия: параллелизм и конвейеризацию. Хотя у них много общего и их зачастую трудно различить на практике, термины эти отражают два принципиально различных подхода.
В первом варианте совмещение операций достигается за счет того, что в составе вычислительной системы отдельные устройства присутствуют в нескольких копиях. Так, как в состав процессора может входить несколько АЛУ, и высокая производительность обеспечивается за счет одновременной работы всех этих АЛУ. Второй подход был описан ранее.
Метрики параллельных вычислений.
Профиль параллелизма программы.
Число процессоров многопроцессорной системы, параллельно участвующих в выполнении программы в каждый момент времени определяется понятием степень параллелизма D(t). Графическое представление функции времени D(t) называется профилем параллелизма программы. Изменения в уровне загрузки процессоров за время наблюдения зависят от многих факторов (алгоритма, доступности ресурсов, степени оптимизации, обеспечиваемой компилятором и т.д.)
В прикладных программах имеется широкий диапазон потенциального параллелизма. У вычислительно интенсивных программах в каждом цикле параллельно могут выполняться от 500 до 3500 арифметических операций, если для этого имеется существующая вычислительная среда. Однако даже правильно спроектированный суперскалярный процессор способен поддерживать выполнение от 2 до 5.8 команд за цикл. Эти цифры дают пессимистическую картину возможного параллелизма.
Ускорение, эффективность.
Ускорение – или, точнее, среднее ускорение за счет параллельного выполнения программы – это отношение времени , требуемого для выполнения наилучшего из последовательных алгоритмов на одном процессоре и времени параллельного вычисления на К - процессорах . Величина ускорения как правило меньше К.
Эффективность - К – процессорной системы – это ускорение, отнесенное к одному процессору.
Собственное ускорение – определяется путем реализации параллельного алгоритма на одном процессоре.
Если ускорение, достигнутое на К – процессорах равно К, то говорят об линейном ускорении.
Иногда возможно, когда ускорение может быть больше К. Это случай, когда последовательная программа выполняется при малом объеме оперативной памяти и имеет место большое количество свопингов, или может приводить к большому количеству КЭШ – промахов, чем параллельная версия этой программы.
К факторам, ограничивающим ускорение, следует отнести:
Программные издержки - . Даже если последовательные и параллельные алгоритмы выполняют одни и те же вычисления, параллельным алгоритмам присущи добавочные программные издержки - дополнительные индексные вычисления , неизбежно возникающие из – декомпозиции данных и распределения их по процессорам; различные виды учетных операций, требуемые в параллельных алгоритмах, но отсутствующие в последовательных.
Издержки из дисбаланса загрузки процессоров. Между точками синхронизации каждый процессор должен быть загружен одинаковым объемом работы, иначе часть процессоров будет ожидать, пока остальные завершат свои вычисления; Эта ситуация известна как дисбаланс загрузки. Таким образом, ускорение ограничивается наиболее медленным процессором.
Коммуникационные издержки. Если принять, что обмен информацией и вычисления могут перекрываться, то любые коммуникации между процессорами снижают ускорение. В плане коммуникационных затрат важен уровень гранулярности, определяющий объем вычислительной работы , выполняемой между коммуникационными фазами алгоритма. Для уменьшения коммуникационных издержек выгодно, чтобы вычислительные гранулы были достаточно крупными и доля коммуникаций была меньше.
При проектировании параллельных вычислительных систем под конкретные задачи разработчики детально исследуют типовые для данных задач алгоритмы и используя законы Адамала и Густафсона определяют возможную величину ускорения их выполнения.
Классификация параллельных вычислительных систем.
Среди всех систем классификации ВС наибольшее признание получила классификация, предложенная М Флинном. В ее основу положено понятие потока, под которым понимается последовательность элементов, команд или данных, обрабатываемых процессором. В зависимости от количества потоков команд и потоков данных выделяется четыре класса архитектур: SISD, MISD, SIMD,MIMD.
SISD –одиночный поток команд и одиночный поток данных.
Представителями этого класса являются фон – неймановские ВС, где имеется только один поток команд, команды обрабатываются последовательно и каждая команда инициирует одну операцию с одним потоком данных. Тот факт что для ускорения обработки данных выполняется конвеерная технология не имеет значения.
О
Память
команд
Память данных
АЛУ
бщая
структура такой архитектуры приведена
на рис.
Устройство
управления
Данные
Рис.