Какая разница между провалом и пропускной способностью
Пропуск пропускной способности возникает из-за того, что блоки отбрасываются из кеша, поскольку кэш не может содержать все блоки, необходимые для выполнения программы (рабочий набор программы намного больше, чем объем кэша).
Пропадание конфликтов происходит в случае установки ассоциативных или прямых сопоставленных стратегий размещения блоков, конфликтные промахи возникают, когда несколько блоков сопоставляются с одним и тем же множеством или блочным кадром; также называемые столкновениями или помехами.
Действительно ли они очень тесно связаны?
Например, если все строки кэша заполнены и у нас есть запрос на чтение для памяти 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.