5. Организация памяти параллельных вычислительных систем. Модели архитектур совместно используемой памяти. Организация памяти: Распределённая слабосвязанная, мультикомпьютер Совместноиспользуемая (общая) сильносвязанная, мультипроцессор *КС – контроллер связи Модели архитектуры памяти: *У MPP и Кластера есть проблема поддержки когерентности памяти UMA – Uniform Memory Access (однородный доступ к памяти), все процессоры связаны со всеми модулями памяти. NUMA – Non UMA, присутствует промежуточная память (кэш). COMA – Cash Only Memory Application (только с кэш-памятью), каждый процессор имеет локальную большую кэш-память. Данные переносятся в кэш того процессора, который последним их запросил. CC-NUMA – Cash Coherent NUMA (NUMA с когерентным кэшем), используется простая физически распределённая память, а для поддержки когерентности и общего адресного пространства используются аппаратные средства, поддерживающие когерентность. NCC-NUMA – Non CC-NUMA, память физически распределена и не использует дополнительные аппаратные средства для поддержки когерентности. Поддержка когерентности осуществляется программно. NORMA – No Remote Memory Access, контроллер никаких операций с памятью не производит, нет когерентности, только передача сообщений и блоков данных. Кластер – вспомни свой домашний компьютер и забей. MPP – Multy Parallel Processor (почти тот же самый кластер, но разрабатывается под определёную задачу, а не берётся готовенький), взаимодействие осуществляется программно (либо через доделанную операционную систему, либо пишем вручную). 6. Мультипроцессорная когерентность КЭШ-памяти. Аппаратные и программные средства поддержания когерентности. Программный способ поддержки когерентности памяти: Программист должен выделить все совместно используемые данные (ну или это сделает компилятор), далее эти данные НЕ подгружаются в кэш, можно только обращаться к многопортовой памяти. В кэш подгружаются локальные данные. Нет сложных аппаратных средств. Аппаратный способ поддержки когерентности памяти: Механизмы преодоления когерентности называются протоколами. 1. Сквозная запись. Новая информация пишется и в кэш и в основную память, причем копия этих данных остальных кэшах объявляется недействительной. «+»: Просто сделать «-»: Увеличивается трафик шины. 2. Обратная запись. Все изменения производятся только в кэше памяти, а обновление основной памяти происходит при удалении блока из кэш-памяти. Если копия данных в одном из локальных кэшей подвергалась модификации, этот блок будет переписан в основную память в двух случаях: - блок удаляется из того кэша, где был изменён; - другой процессор обратился к своей копии изменённого блока. «-»: При сильной связанности неэффективен. Эти два протокола относятся к протоколам наблюдения. Протоколы для поддержания когерентности кэшей: 1. С аннулированием. При записи процессором данных в свой кэш, копии данных во всех остальных кэшах аннулируются. 2. Запись с обновлением. При записи в свою кэш-память эти данные дублируются во всех остальных кэшах. Для работы с несколькими процессорами эти два метода комбинируются с 2мя предыдущими. В общем случае для поддержки когерентности: 1. 2. 3. 4. 5. Совместно используемая кэш-память. Некэшируемая память. Широковещательная запись. Протоколы наблюдения. Протоколы на основе справочника. 11. Потоковые и редукционные вычислительные системы. Потоковые вычислительные системы: Последовательно проходим весь алгоритм. Можно делать по-другому, т.е. использовать потоковую организацию вычислений (СМЫСЛ: операции происходят тогда, когда готовы их операнды). При большой сложности алгоритма (много ветвлений) предпочтительно использовать редукционную модель, т.к. она даёт большую производительность. Как организуется потоковая модель: Существуют вершины нескольких типов: 1) Операционные вершины a. Одновходовые (унарные операции) b. Двувходовые (бинарные операции) 2) Вершины управления a. Вершина копирования b. Вершина слияния . Данные поступают только на одну из вершин (поочерёдно или ещё как-то). c. Коммутаторы d. Арбитр . Может реализовываться разная логика, но обычно по времени поступления данных. Пример реализации цикла: Аппаратная реализация модели потоковых вычислений: БО – блок обновления БВ – блок выборки ПД – память действий ФБ – функциональные блоки ОК – очередь команд БВ производит распределение токенов по функциональным блокам (ФБ). БО производит обновление информации о токенах в памяти действий и постановку следующих готовых операций в очередь команд (ОК). Сама потоковая модель хранится в ПД (т.е. там хранится граф, положение токенов и их значение). Редукционные вычислительные системы: В системах с управлением от потока данных каждая команда, для которой имеются все необходимые операнды, немедленно выполняется. Однако для получения окончательного результата многие из этих вычислений оказываются ненужными. Отсюда прагматичным представляется иной подход, когда вычисления инициируются не по готовности данных, а на основе запроса на данные. Для написания программ под такие системы нужны так называемые функциональные языки программирования (FP, Haskell и др.). На функциональном языке все программы представляются в виде выражений, а процесс выполнения программы заключается в определении значений последних (это называется оценкой выражения). Оценка выражения производится посредством повторения операции выбора и упрощения тех частей выражения, которые можно свести от сложного к простому (такая часть выражения называется редексом, причем сам редекс также является отдельным выражением). Операция упрощения называется редукцией. Процесс редукции завершается, когда преобразованное редукцией выражение больше не содержит редекса. Выражение, не содержащее редекса, называется нормальной формой.