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

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

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

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

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

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

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

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

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

Давайте будем гением компьютера.