детали протокола MESI для многоядерных процессоров - PullRequest
2 голосов
/ 11 октября 2011

Детали протокола MESI для многоядерных процессоров были бы очень важны для меня, но я нигде не могу их найти.Даже http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf не содержит достаточно деталей.Например: предположим, частный L1 и общий кэш L2.Если состояние строки является исключительным в L1, то является ли оно также исключительным в L2 (или недопустимым, потому что только в одном кэше может быть состояние строки исключительным)?И ясно, что если другое ядро ​​пишет эту строку, состояние ранее исключительной строки в L1 становится недействительным, но как меняется состояние строки кэша L2?Если измененная строка в L1 читается другим ядром, будет ли совместно использоваться новое состояние этой строки и записывается ли оно обратно в основную память через кэш L2 или останется измененным в L2?и т.д.

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Причина, по которой у вас возникают проблемы с поиском этих ответов, заключается в том, что традиционные протоколы не были определены для архитектур иерархического кэша, поэтому сам по себе протокол MESI не определяет, что произойдет, если у вас есть кэш L1 и L2.Это зависит от трех других системных атрибутов.

Если L2 спроектирован как исключающий L1 (т. Е. Гарантируется, что L2 и L1 никогда не могут иметь общие строки кэша), тогда любая строка в L1 будетбыть недопустимым состоянием (в основном отсутствует) в L2.

Если L2 включает в себя L1, т. Е. Каждая строка в L1 также должна иметь запись в L2, запись в L2 будет содержать дескриптор, указывающий, какой кэш L1 имеет строку в Eгосударство.

Записывается или нет значение в L2 или в память на этапе чтения из E или W, зависит от того, поддерживает ли ваша система передачи из кэша в кэш или нет.В старые времена, когда каждый чип представлял собой одно ядро, а связь между ядрами была такой же дорогой, как чтение / запись в память, системы записывали данные в память и заставляли читать их другой процессор (это позволяло им не поддерживатьпередача из кэша в кэш).В многоядерном общение через память безумно дорого по сравнению с общением внутри чипа с другими ядрами, поэтому сегодня почти все многоядерные чипы поддерживают передачу из кеша в кеш.Таким образом, чтение из стадии E или W не обслуживается записью в память.

Надеюсь, это поможет.

0 голосов
/ 04 ноября 2011

Я нашел это . Это может помочь.
Третий комментарий здесь также может быть полезен.

...