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

10348
Kami

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

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

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

5
Несколько связанный с этим вопрос: [Что такое на самом деле многоуровневый кеш в процессорах?] (Http://superuser.com/questions/269080/what-is-actually-multilevel-cache-in-processors) (Ответы там не очень много в почему «больше» медленнее, так что вопрос даже не дублирует, но вопросы кажутся связанными.) Paul A. Clayton 10 лет назад 1

1 ответ на вопрос

11
Polynomial

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

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

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

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

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

Ницца! Есть ли у вас источники ссылки? Thor 10 лет назад 0
Один интересный аспект влияния физического размера на большие объемы памяти заключается в том, что разработчик может рассмотреть возможность использования более медленных запоминающих устройств для каждого бита и в то же время увеличить скорость доступа, если более медленные устройства достаточно малы. Это означает, что DRAM может иметь смысл для очень больших кэшей. (Существуют также методы неоднородной архитектуры кэша, в которых более близкие части L2 имеют более низкую задержку. С разделенными кэшами L3 физическая близость [или внутренняя сеть] может использоваться для выбора размещения для повышения производительности.) Paul A. Clayton 10 лет назад 0
@Thor Это одно из тех странных знаний, которые я накопил за годы случайного чтения и игры с микропроцессорами, но [статья в вики] (http://en.wikipedia.org/wiki/CPU_cache) довольно всеобъемлющий, особенно часть о многоуровневых архитектурах кэша. Polynomial 10 лет назад 0

Похожие вопросы