2016-11-21 3 views
-1

Я непобежденным в вопросе, как этотЗачем использовать кеш данных и кеш команд для уменьшения пропусков?

В контексте иерархии памяти, почему реализовать кэш данных и кэш команд ?

Я ответил, что полезно уменьшить количество промахов в конфликте и нехватку места. Но кеш данных и кеш команд могут быть заданы в соответствии с количеством данных и инструкций? Потому что я предположил, что число данных выше, чем количество команд (во много раз нам нужно 2 данных для выполнения 1 команды), а кеш данных и кеш команд - в соответствии с этими числами. Верно или совершенно неправильно? В случае, если это неправильно, зачем использовать кеш данных и кеш команд для уменьшения промаха?

+0

Невозможно понять, что означает этот вопрос по тому, как он сформулирован. Почему есть кеш каждого типа? почему они должны быть разделены? Вы должны вернуться к тому, кто попросил его дать разъяснения. – Leeor

+0

Возможный дубликат [Почему размер кеша L1 меньше, чем размер кэша L2 на большинстве процессоров?] (Http://stackoverflow.com/questions/4666728/why-is-the-size-of-l1 -cache-less-than-the-the-l2-cache-in-most-of-the-pro) –

+1

См. [мой ответ на другой вопрос в кеше] (http://stackoverflow.com/questions/4666728/ почему-is-the-size-of-l1-cache-less-than-the-l2-cache-in-most-of-the-pro/38549736 # 38549736), где я указываю, что один большой кеш с достаточным количеством портов чтения/записи для инструкций и данных было бы более энергоемкой и/или невозможно сделать так же быстро, как разделить кеши L1.Данные и инструкции обычно не перекрываются, поэтому разделенные кэши - это почти чистый выигрыш. –

ответ

1

Идея кеша состоит в том, чтобы доставлять кешированные данные за 1 цикл, чтобы поддерживать работу ЦП на максимальной скорости.

Теперь сегодня все процессоры конвейерны. Это означает, что они имеют независимые модули, например, извлекать команду, декодировать ее, извлекать операнды, выполнять инструкцию и записывать результат. Все эти этапы трубопровода выполняются, когда это возможно, в то же время для разных инструкций.
Для максимальной скорости выборка команды должна выполняться одновременно с извлечением операнда ранее декодированной команды. Оба могут выполняться только (в оптимальном случае) в одно и то же время за 1 цикл, если у вас есть кэш команд и кеш данных.

+0

Вы можете создать кеш с двумя портами чтения. Фактически, современные архитектуры x86 делают это для своих кэшей L1D (Intel с SnB, AMD с K8). Haswell даже может даже делать две 32B нагрузки и один 32B-магазин за такт, и, возможно, также передавать данные в/из L2 одновременно, так что это много портов. Таким образом, невозможно считывать инструкции и данные параллельно из одного и того же кеша, это просто отходы транзисторов/мощности, как я прокомментировал этот вопрос. Тем не менее, это достаточно близко, чтобы исправить упрощенное объяснение. –

+1

@ Peter Cordes Я просто прочитал ваш отличный ответ на этот другой вопрос, о котором вы упомянули в своем комментарии выше. Большое спасибо за это подробное разъяснение! –

0

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

  1. Извлечь инструкцию из памяти, вычислить индекс и сохранить его в магазине.
  2. Декодируйте инструкцию и получите адрес данных.
  3. Теперь извлеките данные из памяти, вычислите индекс для хранения данных.
  4. В этом месте есть некоторые данные, что тоже плохо, сбросьте его до кеша следующего уровня и сохраните вновь извлеченные данные.
  5. Выполнение инструкции.
  6. Его время, чтобы декодировать следующую инструкцию, ну ее кеш пропустили, когда мы поменяли запись кэша для наших данных. Теперь попробуйте снова.
  7. Когда мы его получаем, мы должны снова заменить наши данные, так как он имеет тот же самый индекс.

Таким образом, мы будем постоянно обмениваться данными и инструкциями с одной и той же строкой кэша, иначе обманывая.

Смежные вопросы