Добавил:
ИВТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экз ответы.docx
Скачиваний:
21
Добавлен:
15.01.2024
Размер:
15.08 Mб
Скачать

Поддержка когерентности

  • В когерентной памяти все загрузки и сохранения размещаются в глобальном порядке

    1. Несколько копий адреса в различных кэшах могут привести к нарушению этого свойства

  • Это свойство может быть обеспечено, если:

    1. Только один кэш одновременно имеет разрешение на запись

○ Никакой кэш не может иметь устаревшую копию данных после того, как была выполнена запись по адресу

Реализация когерентности

  • Протоколы когерентности должны обеспечивать соблюдение 2-х правил:

    1. Распространяющаяся запись (Write Propagation): записи в конечном итоге становятся видимыми для всех процессоров.

○ Сериализация записи (Write Serialization): записи в одно и то же место сериализуются (все процессоры видят их в том же порядке) ● Как обеспечить распространение записи (Write propagation)?

○ Write-invalidate protocols: аннулировать все другие кэшированные копии перед выполнением записи.

○ либо

○ Write-update protocols: обновить все другие кэшированные копии после выполнения записи.

  • Как обеспечить сериализацию записи (Write Serialization)?

    1. Snooping-base protocols: все кэши наблюдают за действиями друг друга через общую шину.

○ либо

○ Directory-based protocols: каталог когерентности отслеживает содержимое частных кэшей и сериализует запросы.

кэш VI: Valid/Invalid

MSI: Modified/Shared/Invalid

Оптимизация msi: e-Состояние (Exclusive)

MESI: https://habr.com/ru/articles/183834/

В данной схеме каждая линия кэша может находиться в одном из четырех состояний:

  • Модифицированная (M) англ. modified. Таким флагом может быть помечена только линия в одном кэше. Данное состояние означает, что данная линия была изменена, но до памяти эти изменения еще не дошли. Хозяин такой линии может спокойно читать и писать в нее без опроса остальных.

  • Эксклюзивная (E) англ. exclusive. Обозначенная таким флагом линия, так же, как и M-линия может находиться только в одном кэше. Содержащиеся в ней данные полностью идентичны данным в оперативной памяти. Записывать и читать из нее можно без внешних запросов, так как она хранится только в одном кэше. После записи такая строка должна быть помечена, как модифицированная.

  • Разделяемая (S) англ. shared. Линия может одновременно содержаться в кэшах нескольких устройств и использоваться совместно. Запросы на запись в такую линию всегда идут на общую шину, что приводит к тому, что все линии с таким адресом в остальных кэшах помечаются как недействительные. При этом содержание основной памяти также обновляется. Чтение же из такой линии, не требует никаких внешних запросов.

  • Недействительная (I) англ. invalid. Такая линия считается невалидной и попытка прочитать приведет к кэш-промаху. Линия помечается недействительной в случае если она пуста или содержит устаревшую информацию.

20. Потоково-безопасное программирование. Семафоры. Примеры распределения и ограничения доступа к ресурсам на основе семафоров.

Потоково-безопасное программирование.

Семафоры - программная конструкция для синхронизации

Примеры семафоров для установки приоритетов.

Изначально семафор равен нулю. Команда wait приостанавливает выполнение инструкций потока B если семафор S = 0. Команда signal(s) наоборот увеличивает семафор на 1, следовательно пока не выполнится операция A2 мы не сможем приступить к выполнению операции B4 т.к. семафор будет равен 0.

Примеры распределения и ограничения доступа к ресурсам на основе семафоров.

Каждый раз когда понадобится ресурс семафор S уменьшится на 1, если ресурсы будут нужны k+1 потоку, то уже после k-ого выделения ресурса значение s будет равно 0 соответственно потоки которым нужны ресурсы будут ждать пока эти ресурсы освободятся и s станет > 0