- •Многопроцессорные системы – общая характеристика, актуальность. Области применения. История развития. Виды параллелизма – расслоение памяти, векторно-конвейерная обработка, множественные фу.
- •2 Класса архитектур. Общая память – достоинства, недостатки.
- •Классификация Флинна. Примеры.
- •2 Варианта локальной памяти:
- •5. Иерархия памяти в современных компьютерах. Кэш. Терминология. 3 типа кэш-памяти. Стратегии поиска и замещения блоков. Сквозная и обратная запись. Достоинства и недостатки.
- •6. Проблема когерентности кэшей. Кэш с наблюдением (snooping) . Алгоритм mesi.
- •7. Уровни состоятельности. Строгая состоятельность – проблема поиска и проблема синхронизации записи. Владельцы и менеджеры данных. Write-broadcast и write-invalidate схемы записи.
- •Модели с ослаблением состоятельности.
- •Схемы, основанные на каталогах.
- •Виды коммуникационных сред. Составные части. Коммутаторы – простые и составные, с временным и пространственным разделением.
- •Классификация сетей. Терминология. Представление в виде графов. Топологии – решетка, тор, гиперкуб, челнок, дерево и др.
- •Массово-параллельные компьютеры – определение, основные понятия, история. Mpp. Asci Red и Cray t3e.
- •Измерение производительности. Терминология. Время отклика, время цп, таковая частота. Виды тестов. Фирменные тесты. Mips и mflops.
- •Тесты linpack. Ливерморские циклы. Spec. Тесты tpc.
- •Проектирование параллельных алгоритмов. 4 этапа. Характеристика этапов.
- •Декомпозиция – основная задача. 2 метода. Контрольные вопросы.
- •Определение коммуникаций. Варианты. Связь с 1 этапом.
- •Локальные и глобальные коммуникации. Контрольные вопросы.
- •Укрупнение. Цели. Методы. Контрольные вопросы.
- •Время простоя. Пример общей модели.
- •Эффективность и ускорение. Анализ масштабируемости – при фиксированном размере задачи, при переменном размере задачи.
- •Экспериментальные исследования – задачи, характеристика. Сравнение теоретических и экспериментальных данных. Возможные причины отклонений.
- •Модульность в параллельных программах. Виды композиции. Проблема перераспределения данных. Последовательная композиция – spmd. ScaLapack.
- •Параллельная композиция. Конкурентная композиция. Примеры. Правила применения.
- •Анализ производительности программы в целом. Усложняющие факторы. Пример.
- •Средства разработки параллельных программ. Классификация. Pvm – характеристика и идеология. Основные функции.
- •Нити. Синхронизация. Асинхронные коммуникации. Проблема детерминизма. Распределение по процессорам. – 2 фазы. Производительность.
- •Fortran 90 и hpf. Параллельные расширения f90. Основные понятия и директивы hpf. Примеры.
- •OpenMp – идея, технология, основные понятия. Основные директивы. Пример программы.
- •Linda – основные понятия. Функции. Пример – реализация барьерной синхронизации.
6. Проблема когерентности кэшей. Кэш с наблюдением (snooping) . Алгоритм mesi.
Поскольку при наличии иерархии памяти один элемент данных может находиться не только на разных уровнях, но и в разных местах, возникает проблема соответствия данных, известная как проблема когерентности кэшей.
Есть много реализаций. Какая используется – зависит от того, является ли память физически сосредоточенной или распределенной, а также от вида коммуникационной среды.
Сосредоточенная память. Каждый ВМ имеет собственный локальный кэш и имеется обшая разделяемая ОП.
В этом случае обычно используют концепцию «one writer, multiply readers». Наиболее часто применяемый алгоритм – MESI.
PEA читает ячейку x. Копия x заносится в кэш PEA. PEB также читает ячейку x. Копия x также заносится в кэш PEB.
PEA прибавляет 1 к x. x находится в кэше PEA,, так что это попадание. Если PEB снова прочитает x, это тоже будет попаданием. Однако, он прочтет устаревшее (stale) значение x.
Кэш с наблюдением «snooping» реализуется обычно аппаратурой кэша. Эта аппаратура наблюдает за шиной, обнаруживая транзакции, изменяющие ячейки, кэшированные в данном модуле. Кэш тж должен генерировать invalidate-транзакции, если происходит запись в разделяемую ячейку.
Когда аппаратура PEA изменяет x, кэш генерирует invalidate-транзакцию.
Когда аппаратура PEB обнаруживает invalidate-транзакцию, она находит копию x в своем кэше и помечает ее как недействительную. Теперь, если PEB попытается прочесть x, это будет промахом и инициируется транзакция чтения x из основной памяти.
Замечания:
invalidate-транзакция - это address-only транзакция: она просто сообщает адрес строки кэша, которая объявлена недействительной, всем остальным процессорам.
Когда аппаратура PEA встречает запрос на чтение x, она обнаруживает наличие модифицированной копии в собственном кэше и возвращает ответ retry, что заставляет PEB приостановить транзакцию чтения. Теперь PEA записывает измененную строку кэша в основную память. После этого PEB продолжает отложенную транзакцию и считывает из основной памяти корректное значение.
Замечание:
Некоторые системы допускают передачу кэш-кэш (возможно, с параллельной записью в основную память).
7. Уровни состоятельности. Строгая состоятельность – проблема поиска и проблема синхронизации записи. Владельцы и менеджеры данных. Write-broadcast и write-invalidate схемы записи.
Уровни состоятельности:
- строгая состоятельность, когда каждое чтение из некоторой ячейки памяти возвращает значение, записанное туда
- слабая состоятельность, когда система обеспечивает некоторый (слабый) уровень состоятельности, а приложение может установить точки синхронизации
- отсутствие механизма состоятельности, когда синхронизация полностью возлагается на приложение.
Строгую состоятельность обеспечивает, например, модель «one writer, multiply readers». В этом случае - 2 вида проблем.
1. Если данные нерезидентны, их надо обнаружить.
2. Следует синхронизировать доступ так, чтобы 2 процессора не могли одновременно писать в свои кэши.
1. Обычное решение проблемы поиска - введение понятия владельца данных. Владелец либо обладает копией для записи, либо копией для чтения плюс списком всех остальных, у кого есть копии для чтения. Только владелец может записывать. Варианты этого мех-ма:
- фиксированное владение. Владелец каждого элемента данных фиксирован и его можно легко вычислить.
- динамическое владение - передается между процессами, вместе с правом записи. Тогда - проблема поиска владельца. Обычно решается введением понятия менеджера. Он не владеет данными, но знает, где найти владельца. 2 варианта – централизованный и распределенный. Среди распределенных выделяются широковещательные схемы, когда для поиска выдается широковещательный запрос и динамические схемы, когда каждый процессор хранит информацию о вероятных владельцах. Если вероятный владелец не является владельцем, то он может предложить следующего вероятного владельца.
2. Чтобы гарантировать, что ни один процессор не прочтет устаревшие данные, если один из процессоров произвел запись, используется в основном 2 механизма:
- широковещательная трансляция изменений (write-broadcast ): если нет низкоуровневых примитивов широковещания, встает вопрос поиска узлов, имеющих копии данных. Кроме того, широковещание связано со значительными накладными расходами.
- широковещательная трансляция недейств-сти (write-invalidate) – объявить недействительными все остальные копии. Здесь меньше объем данных, но принципиальные проблемы те же.