Вопрос: Зачем нам нужно несколько уровней кеш-памяти?


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

Мой вопрос в том, почему нам нужен несколько уровней кешей (L1, L2, L3), а не один?

Я знаю, что L1 самый быстрый и самый маленький, L2 немного медленнее и немного больше и так далее ... но почему они создают оборудование таким образом?


4
2018-01-01 12:02


Источник


Несколько смежный вопрос: Что такое многоуровневый кеш в процессорах? (Ответы там не сильно зависят от того, почему больше медленнее, поэтому вопрос не является даже почти дубликатом, но вопросы, похоже, связаны). - Paul A. Clayton


Ответы:


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

Если мы хотим включить большой уникальный кеш, он должен находиться на очень коротком расстоянии от MMU, ALU и т. Д. Одновременно. Это затрудняет физический дизайн процессора, поскольку большой кеш занимает много места. Чтобы сделать кеш «локальным» для этих субъединиц, вы должны пожертвовать местностью субъединиц друг к другу.

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

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

Функциональность кэшей в современных процессорах очень сложна, поэтому я даже не буду пытаться правильно описать, но очень упрощенным процессом является то, что адреса цели просматриваются в L1, затем L2, а затем L3, прежде чем прибегать к извлечение системной памяти. Как только эта выборка будет выполнена, она будет восстановлена ​​через кеши.


10
2018-01-01 12:32



Ницца! У вас есть ссылки на источники? - Thor
Одним из интересных аспектов влияния физического размера на большие воспоминания является то, что разработчик может рассмотреть возможность использования более медленных устройств хранения для каждого бита и, тем не менее, увеличить скорость доступа, если более медленные устройства будут значительно меньше. Это означает, что DRAM может иметь смысл для очень больших кешей. (Существуют также методы Non-Uniform Cache Architecture, в которых более близкие части L2 имеют более низкую задержку. При использовании секционированных кэшей L3 физическая [или встроенная сеть] может использоваться при выборе места размещения для повышения производительности.) - Paul A. Clayton
@Thor Это одна из тех странных бит знаний, которую я взял за годы случайного чтения и игры с микропроцессорами, но wiki статья является довольно всеобъемлющим, особенно частью архитектуры многоуровневого кэша. - Polynomial