Введение

Термин в компьютерной архитектуре, касающийся данных общих ресурсов.

В компьютерной архитектуре когерентность кэша – это единообразие данных общих ресурсов, которые оказываются сохраненными в нескольких локальных кэшах. Когда клиенты в системе поддерживают кэши общих ресурсов памяти, могут возникать проблемы с некогерентными данными, что особенно актуально для процессоров в многопроцессорной системе. На иллюстрации справа рассмотрим ситуацию, когда оба клиента имеют кэшированную копию определенного блока памяти, полученную в результате предыдущего чтения. Предположим, клиент внизу обновляет/изменяет этот блок памяти, тогда клиент сверху может остаться с недействительным кэшем памяти, не получив никакого уведомления об изменении. Когерентность кэша предназначена для управления такими конфликтами, поддерживая согласованное представление значений данных в нескольких кэшах.

Механизмы согласованности

Два наиболее распространенных механизма обеспечения когерентности – это прослушивание и каталоги, каждый из которых имеет свои преимущества и недостатки. Протоколы, основанные на прослушивании, как правило, быстрее, если доступна достаточная пропускная способность, поскольку все транзакции представляют собой запрос/ответ, видимый всем процессорам. Недостатком является то, что прослушивание не масштабируется. Каждый запрос должен быть широковещательно отправлен всем узлам в системе, что означает, что с увеличением размера системы необходимо увеличивать размер (логической или физической) шины и пропускную способность, которую она обеспечивает. Каталоги, с другой стороны, обычно имеют большую задержку (с запросом, пересылкой и ответом в три этапа), но используют гораздо меньше пропускной способности, поскольку сообщения передаются напрямую от одного узла к другому, а не транслируются. По этой причине многие крупные системы (более 64 процессоров) используют этот тип обеспечения когерентности кэша.

Шпионить

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

На основе каталога

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