Что такое кэш и промах кэша? Почему сбой при переходе в контекст?
Из 11-й главы (Производительность и масштабируемость) и раздела "Контекстное переключение" JCIP book:
Когда новый поток включен, требуемые данные вряд ли будут в кэше локального процессора, поэтому контекстный переключатель вызывает шквал кэш-промахи, и, таким образом, потоки выполняются немного медленнее, когда они первый запланированный.
- Может ли кто-нибудь объяснить в понятном виде концепцию промаха в кеше и его вероятную противоположность (кэш-кеш)?
- Почему переключение контекста вызовет много промахов в кеше?
Ответы
Ответ 1
Может ли кто-нибудь объяснить в понятном виде концепцию промаха в кеше и его вероятную противоположность (кэш попал)?
Пропасть в кэше, как правило, - это когда что-то просматривается в кеше и не найдено - кеш не содержит элемент, который просматривается. Кэш-кэш - это когда вы просматриваете что-то в кеше, и оно хранит элемент и может удовлетворить запрос.
Почему переключение контекста вызовет много промахов в кеше?
Что касается памяти, каждый процессор имеет кэш памяти - высокоскоростную копию небольших частей основной памяти. Когда новый поток переключается по контексту в процессор, локальная кэш-память пуста или не соответствует данным, необходимым для потока. Это означает, что все (или большинство) обращений к памяти, создаваемые этим новым потоком, приводят к промахам в кеше, потому что требуемые данные не сохраняются в кеше локальной памяти. Затем аппаратное обеспечение должно сделать несколько запросов в основную память, чтобы заполнить кеш локальной памяти, из-за чего поток сначала запускается медленнее.
Ответ 2
Вы также должны наблюдать, что если контекстный переключатель вызывает возврат ранее запущенного потока в активное состояние на процессоре с доступом к кэшированным данным, есть вероятность, что требуемый "рабочий набор" все еще находится в кеше. Вероятность того, что это правда, зависит от размера (и структуры) кеша. Это также зависит от рабочей нагрузки: сколько требовалось для кеша во время простоя или периода ожидания потоков и как долго длится период ожидания или ожидания.
Ответ 3
Всякий раз, когда процессор хочет получать данные из основной памяти, сначала он будет смотреть на буфер кэша, чтобы увидеть, присутствует ли соответствующий адрес в буфере. Если он есть, он выполнит операцию, используя кеш; нет необходимости извлекать из основной памяти. Это называется "Кэш-хитом".
Если адрес отсутствует в кеше, он называется "Ошибка кэширования". Если произошел промах кеша, это означает, что процессор перешел в основную память, чтобы извлечь адрес, и требуется еще некоторое время.
Ответ 4
Если процессор обнаруживает, что ячейка памяти находится в кеше, мы говорим, что кэш попал, иначе мы говорим о пропуске кеша.
Ответ 5
Если желаемые данные находятся в L1, тогда он попадает в кеш. И если желаемые данные находятся на другом уровне кэш-памяти, тогда он пропускает кеш.