Я пытаюсь выяснить особенности кэшей (в частности, какие кэши распределяются между ядрами, а какие нет), и они наткнулись на несоответствие.
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
наоборот)?
cpu
cache
system-information
Рафаэль
источник
источник
Ответы:
Спасибо за добавление дополнительной информации о процессоре к вашему вопросу. Полезно знать, что приведенные вами примеры относятся к
Intel Core i7-920 Processor
.Предоставленная информация
lscpu
более точна, поскольку включает в себя все три уровня кеша: L1, L2 и L3. Похоже, что онlshw
был лишь минимально изменен, чтобы отразить добавление Intel кэш-памяти L3 к своим процессорам. Вместо отображения информации обо всех трех уровнях кэша, информация о размере кэша L3, по-видимому, сообщается как кэш L2.Я предполагаю, что спецификации, которые вы рассматривали, не включали кэш L1 и L2, потому что в рамках данной микроархитектуры они все одинаковы. Например, для Nehalem это « 64 КБ L1 кэш / ядро (32 КБ L1 Data + 32 КБ L1 Инструкция) и 256 КБ L2 кэш / ядро ».
Я считаю, что предоставление каждому ядру своих собственных L1 и L2 с одним, гораздо большим общим L3 было впервые представлено как часть Nehalem (микроархитектура) (в ноябре 2008 года?).
Я не знаю, почему
lshw
используется терминExternal Cache
для обозначения L3. Но меня это вводит в заблуждение, поскольку кэш L3 находится на кристалле ЦП, а не на внешнем уровне . Опять же, это похоже на попытку использовать старое программное обеспечение для описания нового оборудования, при этом внося минимальные изменения в программное обеспечение.(Возможно, можно узнать больше, посмотрев на исходный код, но у меня не было времени, чтобы попытаться это сделать.)
Наконец, да, кэш L3 распределяется между ядрами / потоками. Ниже приводится цитата из статьи Википедии связана выше, « Гиперпоточность вновь вводится наряду с уменьшением L2, который включен в качестве кэш - памяти L3 , которая может использоваться всеми ядрами . »
источник
lshw
возвращает результаты кеша, которые он делает. Но, возможно, они не хотели менять свой формат вывода из-за опасений, что они могут сломать скрипт, который проанализировал их вывод. Вы можете легко нарисовать себя в углу с помощью программных инструментов.