Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!!Экзаменационные вопросы_003.rtf
Скачиваний:
9
Добавлен:
19.09.2019
Размер:
17.62 Mб
Скачать

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) – объявить недействительными все остальные копии. Здесь меньше объем данных, но принципиальные проблемы те же.