logo
Intel_Corei_Lections_2012

Подсистема кэширования

Однако наибольшие изменения, естественно, коснулись «основной» подсистемы кэширования, а именно — взаимодействия между L1 Cache и L2 Cache, а также появившимся L3 Cache у Nehalem. Во-первых, теперь снова L2 Cache является «персональной собственностью» конкретного ядра, и оно ни с кем его не делит — разделяемым и общим для всех является Cache следующего уровня — L3 Cache. Во-вторых, Intel немного «переиграла» значения латентности для L1 и L2 Cache— у L1 Cache латентность стала на 1 такт больше, чем в Core 2, а у L2 Cache она наоборот стала в полтора раза ниже.

Но основной интерес, конечно же, вызывает L3 Cache. Он, как и L2 Cache в Core 2, является динамически разделяемым. Более того, он наконец-то является не «не-эксклюзивным», а именно инклюзивным: данные, находящиеся в L1/L2 Cache — обязаны присутствовать в L3 Cache. Intel даже объясняет причину подобного решения (далее на рисунках левый соответствует эксклюзивному Cache, а правый — инклюзивному).

Р ассмотрим первую ситуацию: ядро 0 запрашивает данные из L3 Cache, и они там не обнаруживаются.

В случае с эксклюзивным Cache (слева) это ещё ничего не значит: данные могут находится в L1/L2 Cache других ядер. Инклюзивный Cache такую ситуацию исключает, поэтому никаких дополнительных проверок не требуется.

Рассмотрим другую ситуацию: ядро 0 запрашивает данные из L3 Cache, и они там обнаружены. В случае с эксклюзивным Cache, проблем, наоборот, нет никаких: если данные обнаружены в L3 Cache — то больше их нигде нет. В случае с инклюзивным Cache могла бы возникнуть проблема: данные, наоборот, наверняка есть в L1/L2 Cache одного из ядер. Которого?..

Д ля Nehalem эта проблема проблемой не является: каждая строка L3 Cache содержит биты core valid (по количеству физических ядер), которые указывают, копией содержимого L1/L2 какого ядра является данная строчка. Поэтому нет никакой необходимости опрашивать на предмет нахождения данных каждое ядро.

В общем, Intel придерживается достаточно последовательных взглядов в вопросе об оптимальной архитектуре Cache: лучше проиграть в объёме, чем в скорости. Быть может, это связано с тем, что у неё и так хорошо получается делать большие Cache?. Некоторое разочарование вызывает тот факт, что L3 Cache у Core i7 будет работать не на частоте процессора, а на некой фиксированной для целого ряда моделей частоте. Впрочем, эту ложку дёгтя насколько компенсируют два факта: во-первых, у AMD Phenom L3 Cache тоже работает на фиксированной частоте, а во-вторых — у Core i7 эта частота выше (2,66 ГГц).