Я пытаюсь узнать подробности о кэшах (в частности, какие кэши являются общими для ядер, а какие нет) и наткнулся на несоответствие.
sudo lshw
говорит
*-cache:0
description: L1 cache
physical id: a
slot: Internal Cache
size: 64KiB
capacity: 64KiB
capabilities: synchronous internal write-back
*-cache:1
description: L2 cache
physical id: b
slot: External Cache
size: 8MiB
capabilities: synchronous internal write-back
но lscpu
утверждает
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
Меня не слишком беспокоит объединение кэша инструкций и данных, но куда делся L2?
Наблюдалось на машине под управлением Ubuntu 10.10, или, если можно так uname -a
выразиться:
Linux name 2.6.35-32-generic #66-Ubuntu SMP Mon Feb 13 21:04:32 UTC 2012 x86_64 GNU/Linux
Это общий вопрос, но учтите, что ни самый точныйспецификация производителяЯ не смог найти ниВикипедияесть необходимые детали.
Бонусный вопрос, не имеющий отношения к теме: External Cache
означает ли это, что кэш-память распределяется между (четырьмя) ядрами (и Internal Cache
наоборот)?
решение1
Спасибо за добавление дополнительной информации о процессоре к вашему вопросу. Полезно знать, что примеры, которые вы разместили, относятся кIntel Core i7-920 Processor
.
Информация, предоставленная lscpu
более точна, поскольку она включает все три уровня кэша, L1, L2 и L3. Похоже, что она lshw
была лишь минимально изменена, чтобы отразить добавление Intel кэша L3 к своим процессорам. Вместо отображения информации обо всех трех уровнях кэша, информация о размере кэша L3, по-видимому, сообщается как кэш L2.
Я предполагаю, что спецификации, которые вы рассматривали, не включали кэш L1 и L2, поскольку в рамках данной микроархитектуры они все одинаковы. Например, для NehalemЭто"64 КБ кэша L1/ядро (32 КБ данных L1 + 32 КБ инструкций L1) и 256 КБ кэша L2/ядро.".
Я считаю, что предоставление каждому ядру собственных L1 и L2 с одним, гораздо большим общим L3 было впервые введено как частьNehalem (микроархитектура)(в ноябре 2008 года?).
Я не знаю, почему lshw
использует этот термин External Cache
для обозначения L3. Но мне кажется, что это вводит в заблуждение, поскольку кэш L3 находится на кристалле ЦП, а не на том, что я бы считалвнешний. Опять же, это похоже на попытку использовать старое программное обеспечение для описания нового оборудования, внося лишь минимальные изменения в программное обеспечение.
(Возможно, больше информации можно было бы получить, посмотрев на исходный код, но у меня не было времени попытаться сделать это.)
Наконец, да, кэш L3 является общим для ядер/потоков. Следующая цитата взята из статьи Википедии, ссылка на которую приведена выше: "Гиперпоточность вновь введена вместе с сокращением L2, который был включен в кэш L3.который может использоваться всеми ядрами."