Разница между кэшем с прямым отображением и полностью ассоциативным кэшем
Я не могу понять основные различия между двумя кэшами, и мне было интересно, может ли кто-нибудь помочь мне?
Я знаю, что с полностью ассоциативным кэшем адрес может храниться в любой строке массива тегов, а кэш с прямым отображением может иметь только один адрес в одной строке.
но это все, что я знаю.
2 ответов
короче говоря, вы в основном ответили на свой вопрос. Это два разных способа организации кэша (еще один будет Н-канальный наборно-ассоциативный, который сочетает в себе оба, и чаще всего используется в реальном мире CPU).
Кэш С Прямым Отображением проще (требуется только один компаратор и один мультиплексор), в результате дешевле и работает быстрее. Учитывая любой адрес, легко определить единственную запись в кэше, где она может быть. Главный недостаток при использовании DM кэш называется конфликт Мисс, когда два разных адреса соответствуют одной записи в кэше. Даже если кэш большой и содержит много устаревших записей, он не может просто вытеснить их, потому что позиция в кэше предопределена адресом.
Полностью Ассоциативный Кэш намного сложнее, и это позволяет хранить адрес в любой записи. За это есть цена. Чтобы проверить, находится ли определенный адрес в кэше, он должен сравнить все текущие записи (теги, чтобы быть точным). Кроме того, для поддержания временной локальности он должен иметь политику выселения. Обычно приближение LRU (крайней мере в последнее время используется) реализован, но он также добавляет в схему дополнительные компараторы и транзисторы и, конечно же, занимает некоторое время.
полностью ассоциативные кэши практичны для небольших кэшей (например, кэши TLB на некоторых процессорах Intel полностью ассоциативный), но эти тайники маленькие, очень маленькие. Речь идет не более чем о нескольких десятках записей.
даже кэши L1i и L1d больше и требуют комбинированного подхода: кэш разделен на наборы, и каждый набор состоит из "путей". Наборы непосредственно сопоставляются и внутри себя являются полностью ассоциативными. Количество "способов" обычно невелико, например, в процессоре Intel Nehalem есть 4-way (L1i), 8-way (L1d, L2) и 16-way (L3) наборы. N-образный ассоциативный кэш решает проблему временной локальности, а не того комплекса, который будет использоваться на практике.
Я бы настоятельно рекомендовал курс 2011 года UC Berkeley, "Computer Science 61C",свободно доступны на YouTube. В дополнение к другим материалам он содержит 3 лекции об иерархии памяти и реализациях кэша.
Direct mapped cache в этом типе кэша есть одна строка на набор, что означает, например, в первой строке A сидит в другой строке B сидит и так далее, но в полностью ассоциативном кэше есть только один набор, и все сидят случайным образом мы не знаем, в какой строке блока a сидит и B сидит надеюсь, вы понимаете, если не ссылаться RE Брайант программисты перспективные