Аутсорсинговый центр

Неземной
аутсорсинг

Когерентность памяти

Когерентность памяти (англ. memory coherence) — свойство компьютерных систем с несколькими процессорами или ядрами, состоящее в согласованности данных при одновременном обращении нескольких вычислительных агентов к одной области памяти.

Что означает термин

Слово «когерентность» заимствовано из физики, где им обозначают согласованное протекание в пространстве и во времени нескольких колебательных или волновых процессов, при котором разность их фаз остаётся постоянной. В вычислительной технике это же образное слово закрепилось за задачей сохранения целостности данных, когда к одной и той же области памяти обращаются сразу несколько процессоров, ядер или иных агентов. Если такое согласование не обеспечено, разные агенты могут получить разные значения одной и той же ячейки, и вычисления становятся некорректными.

Как устроено

Согласование работы с памятью обеспечивается специальными протоколами — memory coherence protocol, которые регламентируют действия агентов при чтении и записи. На уровне модели различают две альтернативные схемы мониторинга: централизованную, при которой согласование идёт через общий контроллер или каталог, и децентрализованную, в которой агенты обмениваются сообщениями между собой. В реальных микропроцессорах обе схемы устроены значительно сложнее теоретических моделей и включают дополнительные механизмы отслеживания состояний строк кэша. В некоторых реализациях режим работы задаётся отдельным битом WT: установка его в 1 переключает кэш в режим сквозной записи (write-through), при котором каждое изменение немедленно отражается в основной памяти.

Где применяется

Проблема поддержания когерентности возникает в любых системах, где несколько вычислительных агентов работают с общей памятью. К таким системам относятся многопроцессорные конфигурации с архитектурой UMA (Uniform Memory Access), где все процессоры имеют одинаковое время доступа к памяти, и системы NUMA (Non-Uniform Memory Access), где время доступа зависит от расположения данных относительно конкретного процессора. Тот же класс задач характерен для современных многоядерных процессоров, у каждого ядра которых есть собственный кэш, — эти кэши должны согласовываться через протоколы когерентности.

Отличие от близких понятий

Родственным, но не тождественным понятием выступает когерентность кэша — целостность данных, хранящихся в локальных кэшах разделяемой системы. В части источников эти термины используются как синонимы, в других разводятся: когерентность кэша рассматривается как частный случай когерентности памяти, относящийся к уровню кэш-памяти. Сама по себе когерентность памяти охватывает более широкий круг агентов и состояний и не сводится только к согласованию содержимого кэшей.

Возврат к списку

База знаний организована при поддержке делового сообщества. Спираль?!