Протокол MESIF - MESIF protocol

Протокол MESIF является когерентность кэша и когерентность памяти протокол , разработанный Intel для кэширования когерентных неравномерных архитектур памяти . Протокол состоит из пяти состояний: измененный (M), эксклюзивный (E), общий (S), недействительный (I) и пересылка (F).

Состояния M, E, S и I такие же, как в протоколе MESI . Состояние F является специализированной формой состояния S и указывает, что кэш должен действовать как назначенный ответчик на любые запросы для данной строки. Протокол гарантирует, что, если какой-либо кэш содержит строку в состоянии S, самое большее количество одного (другого) кеша удерживает ее в состоянии F.

В системе кэшей, использующей протокол MESI, запрос строки кэша, который принимается множеством кешей, содержащих строку в состоянии S, будет обслуживаться неэффективно. Это может быть либо из (медленной) основной памяти, либо все совместно используемые кеши могут отвечать, забрасывая запрашивающего избыточными ответами. В системе кэшей, использующей протокол MESIF, на запрос строки кэша будет отвечать только кэш, удерживающий строку в состоянии F. Это позволяет запрашивающей стороне получать копию со скоростью передачи из кэша в кэш, при этом позволяя использовать столько многоадресных пакетов, сколько позволяет топология сети.

 M   E   S   я   F 
 M  Красный XN Красный XN Красный XN Зеленая галочкаY Красный XN
 E  Красный XN Красный XN Красный XN Зеленая галочкаY Красный XN
 S  Красный XN Красный XN Зеленая галочкаY Зеленая галочкаY Зеленая галочкаY
 я  Зеленая галочкаY Зеленая галочкаY Зеленая галочкаY Зеленая галочкаY Зеленая галочкаY
 F  Красный XN Красный XN Зеленая галочкаY Зеленая галочкаY Красный XN

Поскольку кэш может в одностороннем порядке отбросить (сделать недействительным) строку в состоянии S или F, возможно, что ни один кеш не имеет копии в состоянии F, даже если копии в состоянии S существуют. В этом случае запрос строки удовлетворяется (менее эффективно, но все же правильно) из основной памяти. Чтобы свести к минимуму вероятность того, что линия F будет отброшена из-за отсутствия интереса, самому последнему инициатору запроса строки назначается состояние F; когда кэш в состоянии F отвечает, он передает состояние F новому кешу.

Таким образом, основное отличие от протокола MESI состоит в том, что запрос копии строки кэша для чтения всегда поступает в кэш в состоянии F. Единственный способ войти в состояние S - удовлетворить запрос чтения из основной памяти.

Для любой данной пары кэшей разрешенные состояния данной строки кэша перечислены в таблице справа. Порядок, в котором перечислены состояния, не имеет никакого значения, кроме как сделать акроним MESIF произносимым.

Существуют и другие методы для удовлетворения запросов на чтение из общих кешей при подавлении избыточных ответов, но наличие только одного назначенного ответа кеша упрощает аннулирование всех копий при необходимости перехода в монопольное состояние.

Сравнение с протоколом MOESI

Состояние F в этом протоколе не следует путать с состоянием O «Владелец» в протоколе MOESI. Хотя оба состояния идентифицируют один кеш из набора разделяющих сторон для эффективной передачи данных с использованием прямых передач из кеша в кеш (вместо ожидания информации из основной памяти), существует разница в намерениях этих двух состояний.

  • Строка кэша в состоянии F чиста и может быть удалена в любое время без предварительного уведомления.
  • Строка кэша в состоянии O загрязнена и должна быть записана обратно в память перед удалением.

Состояние F в протоколе MESIF - это просто способ выбрать одного из разделителей чистой строки кэша для ответа на запрос чтения данных с использованием прямой передачи из кэша в кеш вместо ожидания данных, поступающих из основного объем памяти. Такая оптимизация имеет смысл в архитектурах, где задержка между кешем намного меньше по сравнению с задержкой доступа к основной памяти. Здесь следует отметить ключевой момент: как и в протоколе MESI, когда данные находятся в общем состоянии (с одним из кешей в состоянии F), данные чистые.

Состояние O в протоколе MOESI - это оптимизация протокола MESI, где требование чистоты общих данных ослаблено. Другими словами, кеши могут совместно использовать данные, которые являются грязными, пока один из участников совместного использования берет на себя ответственность за владение данными. Запросы на общие данные теперь будет удовлетворять владелец. Эта оптимизация позволяет отложить обратную запись данных, разрешая совместное использование грязных данных. Ключевое отличие протокола MOESI заключается в том, что, в отличие от протокола MESIF, состояние Owned не является чистым.

Можно построить протокол MOESIF.

Смотрите также

Ссылки