Какая разница между провалом и пропускной способностью

Пропуск пропускной способности возникает из-за того, что блоки отбрасываются из кеша, поскольку кэш не может содержать все блоки, необходимые для выполнения программы (рабочий набор программы намного больше, чем объем кэша).

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

Действительно ли они очень тесно связаны?

Например, если все строки кэша заполнены и у нас есть запрос на чтение для памяти B, для которого мы должны выселить память A.

Итак, следует ли считать это пропускной способностью, поскольку нам не хватает места? И позже, если мы хотим получить доступ к памяти A, и, поскольку она была выселена раньше, она считается конфликтом.

Я правильно понимаю это? Спасибо

Ответы

Ответ 1

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

Предположим, что у вас есть кеш с 32-кратным прямым отображением, и рассмотрим следующие 2 случая:

  • Повторно повторяется массив размером 128 КБ. В этом кеше нет данных, поэтому все промахи - это пропускные способности (за исключением первого доступа к каждой строке, которая является обязательной пропуском, и она останется, даже если вы можете увеличить кеш бесконечно).

  • У вас есть 2 небольших 8k массива, но, к сожалению, они выровнены и сопоставляются с одними и теми же наборами. Это означает, что, хотя они могут теоретически поместиться в кеш (если вы исправите выравнивание), они не будут использовать полный размер кеша и вместо этого конкурировать за одну и ту же группу наборов и трэш друг друга. Это конфликтующие промахи, поскольку данные могут поместиться, но все же сталкиваются из-за организации. Та же проблема может возникать и при наборе ассоциативных кэшей, хотя и реже (скажем, кеш имеет 2-х позиционный характер, но у вас есть 4 выровненных набора данных...).

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

Ответ 2

Мое любимое определение конфликтных промахов от сокращения обязательных и пропускных возможностей Нормана П. Джоупи:

Пропуски конфликтов - это промахи, которые не возникли бы, если бы кеш был полностью ассоциативно с заменой LRU.

Посмотрим на пример. У нас есть кеш с прямым отображением размером 4. Последовательности доступа

<обязательный промах), 1 (обязательный промах), 2 (обязательный промах), 3 (обязательный промах), 4 (обязательный промах) промах), 1 (удар), 2 (удар), 3 (удар), 0 (пропущенность мощности), 4 (ошибка конфликта), 0 (ошибка конфликта)

Второе - последнее 0 - пропускная способность, потому что даже если кеш полностью ассоциативен с кешем LRU, это все равно вызовет пропущенность, потому что к 4,1,2,3 обращаются до последнего 0. Однако последнее 0 является что в полностью ассоциативном кэше последние 4 заменили бы 1 в кеше вместо 0.