ПОЗНАВАТЕЛЬНОЕ Сила воли ведет к действию, а позитивные действия формируют позитивное отношение Как определить диапазон голоса - ваш вокал
Игровые автоматы с быстрым выводом Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими Целительная привычка Как самому избавиться от обидчивости Противоречивые взгляды на качества, присущие мужчинам Тренинг уверенности в себе Вкуснейший "Салат из свеклы с чесноком" Натюрморт и его изобразительные возможности Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д. Как научиться брать на себя ответственность Зачем нужны границы в отношениях с детьми? Световозвращающие элементы на детской одежде Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия Как слышать голос Бога Классификация ожирения по ИМТ (ВОЗ) Глава 3. Завет мужчины с женщиной ![Оси и плоскости тела человека](/img/image001.jpg)
Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д. Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу. Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар. | Протоколы поддержки когерентности для распределенной общей памяти Рассмотрим вопросы поддержания когерентности памяти в NUMA-системе. Очевидно, при каждом промахе в кэш в любом ВМ инициируется запрос требуемой строки из того ВМ, в памяти которого эта строка размещена. В дальнейшем ВМ, содержащий некоторую строку памяти, по отношению к этой строке будем называть резидентным, а строку памяти по отношению к содержащему ее ВМ – резидентной. ВМ, не содержащие некоторую строку памяти, по отношению к этой строке будем называть удаленными, а саму строку по отношению к этим ВМ – удаленной. Для поддержания когерентности памяти в NUMA-системах часто применяется протокол DASH, который рассмотрим подробнее. Протокол DASH (Directory Architecture for SHared memory – «архитектура для общей памяти на основе справочника») был создан в Стенфордском университете в 1992 г. Как следует из названия, протокол DASH, в отличие от MESI, основывается на справочнике, а не на наблюдении. Каждый ВМ для каждой резидентной строки ведет список модулей, в кэшах которых размещена ее копия. С каждой строкой в резидентном для нее модуле связаны три ее возможных глобальных состояния: 1) «некэшированная», если копия строки не находится в кэше какого-либо удаленного ВМ; 2) «удаленно-разделенная», если копии строки размещены в кэшах удаленных ВМ; 3) «удаленно-измененная», если строка изменена операцией записи в каком-либо удаленном ВМ. Кроме этого, каждая кэш-строка в удаленном ВМ находится в одном из трех локальных состояний: 1) «невозможная к использованию», если копии строки нет в кэше, или копия аннулирована; 2) «разделяемая», если в кэше есть неизмененная копия, которая, возможно, размещается также в кэшах других ВМ; 3) «измененная», если копия изменена операцией записи. Каждый ВМ может читать из своего кэша, если состояние читаемой кэш-строки «разделяемая» или «измененная». Если строка находится в состоянии «невозможная к использованию», то в резидентный ВМ посылается запрос «промах чтения». Если глобальное состояние строки в резидентном модуле «некэшированная» или «удаленно-разделенная», то копия строки посылается в запросивший удаленный модуль; сам запросивший модуль который вносится в список ВМ, содержащих копии рассматриваемой строки. Если глобальное состояние строки «удаленно-измененная», то запрос «промах чтения» перенаправляется в удаленный ВМ, содержащий измененную строку. Этот модуль пересылает требуемую строку в запросивший модуль и в резидентный модуль. В резидентном модуле для этой строки устанавливается глобальное состояние «удаленно-разделенная». Если удаленный ВМ выполняет операцию записи в кэш-строку с локальным состоянием «измененная», то запись выполняется и вычисления продолжиются. Если локальное состояние записываемой кэш-строки «невозможная к использованию» или «разделяемая», то в резидентный для строки модуль посылается запрос на захват строки в монопольное использование. Выполнение записи приостанавливается до получения подтверждений, что все удаленные ВМ, разделяющие рассматриваемую строку, перевели ее копии в состояние «невозможная к использованию». Если глобальное состояние строки в резидентном модуле «некэшированная», то строка отсылается запросившему удаленному ВМ, и этот модуль продолжает приостановленные вычисления. Если глобальное состояние строки «удаленно-разделенная», то резидентный модуль рассылает по списку всем ВМ, имеющим копию строки, запрос на перевод этих строк в состояние «невозможная к использованию». По получении этого запроса каждый из удаленных ВМ изменяет локальное состояние своей копии строки на «невозможная к использованию» и посылает подтверждение исполнения в модуль, инициировавший операцию записи. В записывающем ВМ строка после выполнения записи переходит в состояние «измененная». При этом в резидентном модуле глобальное состояние строки устанавливается в «удаленно-измененная». Заметим, что возможна реализация протокола DASH и в SMP-системах с шинной организацией. Перенос же протоколов на основе наблюдения в системы с распределенной общей памятью невозможен по причине отсутствия широковещательной магистрали данных. Среди прочих протоколов на основе справочника можно назвать Tang, Censier, Archibald и другие. Массово-параллельные ВС |