Модель процессорной согласованности накладывает на аппаратное обеспечение следующие требования:
— все процессоры наблюдают записи любого фиксированного процессора в том же порядке, в котором этот процессор их инициирует;
— после завершения всех операций записи, инициированных одним процессором, и при отсутствии других запросов на запись все процессоры видят последнее записанное процессором значение.
Первый пункт запрещает ситуации, когда один процессор пишет в память значение , затем в то же самое слово значение , а другой процессор, запрашивая два раза, считывает сначала , затем .
Второй пункт нужен для того, чтобы каждое слово в памяти имело определённое значение после того, как процессор совершил несколько операций записи и остановился.
В данной модели согласованности, в отличие от согласованности по последовательности, возможны ситуации типа следующей: первый процессор пишет (то есть посылает запрос на операцию записи) в память значение , второй в то же самое слово — значение , а третий и четвёртый, каждый запрашивая по два раза то же самое слово, получают один , , а другой — , .
Данная модель согласованности более удобна для разработчиков ЭВМ, чем предыдущие, но всё равно накладывает ограничения на упреждающую выборку, дублирование данных и неблокирующую операцию записи.
Наблюдение записей по порядку не гарантируется даже для одного записывающего процессора. Произвол аппаратного обеспечения ограничивается моментами синхронизации.
Периодически выполняется синхронизация, при которой все незавершённые операции продолжаются, но ни одна новая операция не начинается до тех пор, пока все начавшиеся операции записи не завершатся.
Недостаток данного способа упорядочения — периодические задержки, в результате которых страдают и те процессы, которые не имеют никакого отношения к уже начавшимся операциям записи.
Идея свободной согласованности в аппаратном обеспечении та же самая, что и критических секций в программах для многозадачных ОС.
Выделяется некоторое количество критических областей. Критическая область может быть общей для различных процессов. Если процесс выходит за пределы критической области, завершение процессов записи не ожидается. Процессы записи, инициировавшиеся в данной критической области, должны быть завершены до следующего входа любого процесса в ту же самую критическую область.
Модель практически реализуется следующим образом. Синхронизация разделяется на две операции. Чтобы считать или записать переменную, попадающую в одну из критических секций, процессор (то есть процесс, который им выполняется) должен сначала захватить эту переменную. После выполнения операций с переменной процесс даёт команду «освободить». По этой команде процессоры не останавливают работу до завершения всех операций записи, но сама операция «освободить» считается незавершённой до тех пор, пока все операции записи не завершатся.
Когда выдаётся следующая команда «захватить», производится проверка, завершена ли операция «освободить» над критическими секциями, в которые попадает данная переменная, если она попадает хотя бы в одну. Если переменная попадает хотя бы в одну критическую секцию, для которой операция «освободить» не завершена, процесс, давший команду «захватить» приостанавливается до тех пор, пока переменная не освободится.
Способ достаточно эффективен, широко распространён и поддерживается большинством многозадачных ОС, но сложен для программной реализации, ибо согласование использования данных в этой модели существенно возлагается на ПО.
Это самые простые многопроцессорные системы.
Рис. 14.1. Шинная архитектура без кэш-памяти
Если процессору нужно считать слово из памяти, он сначала проверяет, свободна ли шина. Если шина свободна, процессор помещает на шину адрес нужного слова, устанавливает сигналы управления и ждёт, когда память поместит на шину нужное слово.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.