lshw и lscpu расходятся во мнениях по поводу кэшей — кто из них прав?

lshw и lscpu расходятся во мнениях по поводу кэшей — кто из них прав?

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

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.который может использоваться всеми ядрами."

Связанный контент