- •1.Структурные методы повышения
- •1.1.Повышение пропускной способности памяти.
- •1) Cтратегия fifo, в соответствии с которой из основной памяти
- •2) Cтратегия lru, при использовании которой удаляется та страница, обращение к которой имело место раньше, чем к другим.
- •1.2. Повышение производительности процессоров Конвейерная реализация команд. Конвейерный принцип
- •2. Архитектура многопроцессорных систем
- •2.1 Классификация многопроцессорных систем
- •1) В архитектурах mimd используются высокотехнологичные,
- •2) Архитектура mimd дает большую гибкость при наличии
- •2.2 Организация коммуникационной среды в системах
- •2.3. Организация коммуникационной среды в системах
- •2.4. Когерентность кэш- памяти в smp- системах.
- •1. Протоколы на основе справочника (directory based).
- •2. Протоколы наблюдения (snooping). Каждый кэш , который
- •1. Операция чтения ячейки памяти одним процессором, которая
- •2. Операции записи в одну и ту же ячейку памяти выполняются
- •1. Несколько последовательных операций записи в одно и то же
- •2. При наличии многословных блоков в кэш-памяти каждое
- •3. Задержка между записью слова в одном процессоре и чтением
- •2.5. Когерентность кэш- памяти в mpp-системах.
- •2.6. Организация прерываний в мультипроцессорных
- •2.7. Организация межпроцессорного обмена в системах с
- •2.7.1. Структура системы с разделяемой памятью
- •2.7.2 Структура системы с разделяемой распределённой
1. Операция чтения ячейки памяти одним процессором, которая
следует за операцией записи в ту же ячейку памяти другим процессором получит записанное значение, если операции чтения и записи достаточно отделены друг от друга по времени.
2. Операции записи в одну и ту же ячейку памяти выполняются
строго последовательно (иногда говорят, что они сериализованы): это означает, что две подряд идущие операции записи в одну и ту же ячейку памяти будут наблюдаться другими процессорами именно в том порядке, вкотором они появляются в программе процессора, выполняющего эти операции записи.
Первое свойство очевидно связано с определением когерентного
(согласованного) состояния памяти: если бы процессор всегда бы считывал только старое значение данных, мы сказали бы, что память некогерентна. Необходимость строго последовательного выполнения операций записи является более тонким, но также очень важным свойством.
Представим себе, что строго последовательное выполнение операций записи не соблюдается. Тогда процессор P1 может записать данные в ячейку, а затем в эту ячейку выполнит запись процессор P2. Строго последовательное выполнение операций записи гарантирует два важных следствия для этой последовательности операций записи. Во-первых, оно гарантирует, что каждый процессор в машине в некоторый момент времени будет наблюдать запись, выполняемую процессором P2. Если последовательность операций записи не соблюдается, то может возникнуть ситуация, когда какой-нибудь процессор будет наблюдать сначала операцию записи процессора P2, а затем операцию записи процессора P1, и будет хранить это записанное P1 значение неограниченно долго. Более тонкая проблема возникает с поддержанием разумной модели порядка выполнения программ и когерентности памяти для пользователя:
представьте, что третий процессор постоянно читает ту же самую ячейку памяти, в которую записывают процессоры P1 и P2; он должен
стр.42
наблюдать сначала значение, записанное P1, а затем значение, записанное P2. Возможно он никогда не сможет увидеть значения, записанного P1, поскольку запись от P2 возникла раньше чтения. Если он даже видит значение, записанное P1, он должен видеть значение, записанное P2, при последующем чтении. Подобным образом любой другой процессор, который может наблюдать за значениями, записываемыми как P1, так и P2, должен наблюдать идентичное поведение. Простейший способ добиться таких свойств заключается в строгом соблюдении порядка операций записи, чтобы все записи в одну и ту же ячейку могли наблюдаться в том же самом порядке. Это свойство называется последовательным выполнением (сериализацией) операций записи (write serialization). Вопрос о том, когда процессор должен увидеть значение, записанное другим процессором достаточно сложен и имеет заметное воздействие на
производительность, особенно в больших машинах.
Альтернативные протоколы. Имеются две методики поддержания описанной выше когерентности. Один из методов заключается в том, чтобы гарантировать, что процессор должен получить исключительные права доступа к элементу данных перед выполнением записи в этот элемент данных. Этот тип протоколов называется протоколом записи с аннулированием (write ivalidate protocol), поскольку при выполнении записи он аннулирует другие копии. Это наиболее часто используемый протокол как в схемах на основе справочников, так и в схемах наблюдения. Исключительное право доступа гарантирует, что во время выполнения записи не существует никаких других копий элемента данных, в которые можно писать или из которых можно читать: все другие кэшированные копии элемента данных аннулированы. Чтобы увидеть, как такой протокол обеспечивает когерентность, рассмотрим операцию записи, вслед за которой следует операция чтения другим процессором.
Поскольку запись требует исключительного права доступа, любая копия, поддерживаемая читающим процессором должна быть аннулирована (в соответствии с названием протокола). Таким образом, когда возникает операция чтения, произойдет промах кэш-памяти, который вынуждает выполнить выборку новой копии данных. Для выполнения операции записи мы можем потребовать, чтобы процессор имел достоверную (valid) копию данных в своей кэш-памяти прежде, чем выполнять в нее запись.
Таким образом, если оба процессора попытаются записать в один и тот же элемент данных одновременно, один из них выиграет состязание у второго (мы вскоре увидим, как принять решение, кто из них выиграет) и вызывает аннулирование его копии. Другой процессор для завершения своей операции записи должен сначала получить новую копию данных, которая теперь уже должна содержать обновленное значение.
Альтернативой протоколу записи с аннулированием является
обновление всех копий элемента данных в случае записи в этот элемент данных. Этот тип протокола называется протоколом записи с обновлением (write update protocol) или протоколом записи с трансляцией (write broadcast protocol). Обычно в этом протоколе для
стр.43
снижения требований к полосе пропускания полезно отслеживать, является ли слово в кэш-памяти разделяемым объектом, или нет, а именно, содержится ли оно в других кэшах. Если нет, то нет никакой необходимости обновлять другой кэш или транслировать в него обновленные данные.
Разница в производительности между протоколами записи с
обновлением и с аннулированием определяется тремя характеристиками:
