O significado dos números em index0, index1, etc, não corresponde necessariamente a níveis; eles são apenas numerados. Se você quiser saber o nível de cache, veja o arquivo de nível. 1 significa L1, 2 significa L2, 3 significa L3. Eles tendem a ser numerados de nível mais baixo para o mais alto, mas não sei se há algum requisito disso.
Para saber se L2 é compartilhado, primeiro determine qual cache é L2. Em seguida, observe a shared_cpu_list desse cache. Será startnumber-endnumber do compartilhamento. (Eu não sei o que parece quando não é compartilhado porque meu computador só tem caches compartilhados, mas eu acho que ou apenas um único número ou algo como "0-0"). Por exemplo, no meu quad -core, hyperthreaded Sandy Bridge, se eu olhar para shared_cpu_list do L2, vejo "2-3", que me diz que é compartilhado com cpu2 (que é na verdade o mesmo CPU físico por causa de hyperthreading, por isso não é realmente um compartilhada cache).
Para meu cache L3, do qual há apenas um para todos os caches, vejo "0-7", então presumo que significa que ele é compartilhado para todos os 0 a 7 da CPU. Eu nunca vi um sublinhado em um dos esses arquivos embora.
Alguns outros significados:
- type- "Instrução" significa que é usada apenas para armazenar instruções em cache (código), "Dados" significa que ela é usada apenas para armazenar dados (variáveis, etc) e "Unificada" significa que não existe tal separação e pode armazene qualquer um.
- coherency_line_size - quantos bytes estão em uma linha de cache, que é a unidade na qual a memória é lida e gravada de / para a memória principal.
- ways_of_associativity - em quantos slots de cache diferentes uma determinada linha pode ser mapeada. Maior é melhor (significa que você tem menos probabilidade de ter um conjunto de trabalho menor que o cache, mas que não pode estar simultaneamente no cache porque muitos dados desejam estar nas mesmas linhas de cache), mas é difícil de implementar, especialmente nos caches de nível inferior que precisam ser mais rápidos. 8 é bastante comum para L1.