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

19. Когерентность кэш. Примеры реализации когерентности кэш-памяти: VI, msi, mesi.

Когерентность кэш: В многопроцессорной системе у каждого процессора существует свой собственный кэш. Все кэш-памяти работают с одной общей памятью.

Когерентность кэш - синхронизация актуальных данных во всех кэш-памятях.

19.1 Параллелизм уровня потоков

Поток - неделимая в плане распараллеливания часть выполняемой программы (процесса).

  • Разделение вычислений между несколькими исполнительными потоками

    1. несколько независимых последовательных потоков, которые конкурируют за общие ресурсы (память, устройства ввода/вывода).

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

  • Коммуникационная модель.

    1. Общая память (Shared Memory).

■ Единое адресное пространство.

■ Неявная связь с помощью загрузки и сохранения в память.

○ Обмен сообщениями (Message Passing).

■ Раздельное адресное пространство.

■ Явная связь путем отправки и получения сообщений.

19.2 Синхронизация

● Необходимость в синхронизации возникает каждый раз, когда в системе существуют параллельные процессы.

○ Вилки и соединения (Fork and Join): параллельный процесс может подождать, пока не произойдет несколько событий

(Выполнение далее не произойдет, пока оба

процесса P1 и P2 не завершатся. Их необходимо синхронизировать).

○ Производитель и потребитель (Producer-Consumer): потребительский процесс должен ждать, пока процесс производителя не произведет данные

(Потребитель не может быть запущен раньше

чем производитель произведет данные).

○ Взаимное исключение: ОС должна гарантировать, что ресурс используется только одним процессом в данный момент времени.

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

  • Многопоточные программы могут выполняться на одном процессоре с помощью таймшеринга.

    1. Каждый поток выполняется некоторое время (Прерывание по таймеру), а затем ОС переключается на другой поток.

  • Потоково-безопасные многопоточные программы ведут себя одинаково вне зависимости от того, выполняются и они на нескольких процессорах или на одном процессоре.

    1. Мы будем предполагать, что каждый поток имеет свой собственный процессор для запуска.

19.4 Синхронная связь

Решения:

Буфер FIFO

Буфер FIFO ослабляет ограничения, связанные с синхронизацией. Производитель может опередить потребителя на N значений. (N - глубина буфера).

Мультиядерность

Каждое ядро имеет свой program counter и может выполнять разные участки программы.

  • Современные процессоры обычно имеют от 2 до 8 ядер, где каждое ядро имеет собственный кэш для повышения производительности

  • Ядра могут использоваться совместно для ускорения работы приложения. (Использование многопоточности).

  • Ядра взаимодействуют друг с другом через память. (За их синхронизацию отвечают, допустим, семафоры)

Когерентность кэш л18 47:24

Когерентность кэша — свойства кэш-памяти, означающее целостность данных, хранящихся в локальных кэшах, разделяемой системы.

Каждая ячейка кэша имеет флаги, описывающие, как ее состояние соотносится с состоянием ячейки с таким же адресом в других процессорах системы.

Необходимо создать иллюзию единой общей памяти, даже если многоядерные системы имеют несколько приватных(собственных) кэшей.

Информация в приватных кэшах обновляется ядрами и эта обновленная информация должна быть доступна всем другим кэшам, которые собираются использовать эту информацию.