significado dos arquivos na pasta cpu do linux

2

Qual é o significado dos arquivos na pasta /sys/devices/system/cpu/cpu0/cache/index0 ? Eu vejo esses arquivos na pasta:

coherency_line_size  number_of_sets           shared_cpu_list  size  ways_of_associativity
level                physical_line_partition  shared_cpu_map   type
  1. Qual é o significado deles?
  2. Como eu poderia saber se o cache L2 é compartilhado ou não. Se é como eu poderia saber com qual cpu ele é compartilhado?
  3. E qual é o significado de index0 index1 .. index3. O index3 representa o cache L3 e o index2 representa o cache L2?

Em /sys/devices/system/cpu/cpu0/cache/index3 , existem esses arquivos:

cache_disable_0      level                    shared_cpu_list  subcaches
cache_disable_1      number_of_sets           shared_cpu_map   type
coherency_line_size  physical_line_partition  size             ways_of_associativity

Por que não consigo ver subcaches no index1 ou index2? E shared_cpu_list mostra 0_7. Isso significa que esse cache é compartilhado com cpu0 para cpu7?

    
por worldterminator 26.03.2012 / 05:29

2 respostas

4

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.
por 07.08.2012 / 00:02
0

Na minha máquina, o index0 tem o tipo Data e o index1 tem o tipo Instruction, portanto, implicando que o cache L1 para essas duas coisas é diferente, enquanto eles compartilham o cache L2 e L3.

    
por 10.09.2016 / 22:01