linux cpu文件夹中文件的含义

wor*_*tor 2 linux cpu cpu-cache

文件夹中的文件是什么意思/sys/devices/system/cpu/cpu0/cache/index0?我在文件夹中看到这些文件:

coherency_line_size  number_of_sets           shared_cpu_list  size  ways_of_associativity
level                physical_line_partition  shared_cpu_map   type
Run Code Online (Sandbox Code Playgroud)
  1. 它们的含义是什么?
  2. 我怎么知道 L2 缓存是否共享。如果是这样,我怎么知道它与哪个 cpu 共享?
  3. index0 index1 .. index3 的含义是什么?index3 代表 L3 缓存,index2 代表 L2 缓存吗?

/sys/devices/system/cpu/cpu0/cache/index3有这些文件:

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
Run Code Online (Sandbox Code Playgroud)

为什么我在 index1 或 index2 中看不到子缓存?并且 shared_cpu_list 显示 0_7。是不是说这个缓存是和cpu0到cpu7共享的?

小智 5

index0、index1等中数字的含义不一定对应级别;他们只是编号。如果你想知道它是什么级别的缓存,查看级别文件。1 表示 L1,2 表示 L2,3 表示 L3。他们倾向于从最低级别到最高级别编号,但我不知道是否有任何要求。

要知道 L2 是否共享,首先要确定哪个缓存是 L2。然后查看该缓存的 shared_cpu_list。它将是共享的开始编号-结束编号。(我不知道不共享时的样子,因为我的计算机只有共享缓存,但我猜只是一个数字或“0-0”之类的东西。)例如,在我的四边形上-core,超线程 Sandy Bridge,如果我看 L2 的 shared_cpu_list,我看到“2-3”,它告诉我它是与 cpu2 共享的(由于超线程,它实际上是同一个物理 CPU,所以它不是真正的共享缓存)。

对于我的 L3 缓存,其中所有缓存只有一个,我看到“0-7”,所以我认为这意味着它为所有 CPU 的 0 到 7 共享。不过,我从未在其中一个文件中看到下划线.

其他几个意思:

  • type-“Instruction”表示仅用于缓存指令(代码),“Data”表示仅用于存储数据(变量等),“Unified”表示没有这种分离,也可以存储。
  • coherency_line_size-缓存行中有多少字节,这是从主内存读取和写入内存的单位。
  • way_of_associativity-给定的行可以映射到多少个不同的缓存槽。越高越好(这意味着您不太可能拥有一个小于缓存但不能同时在缓存中的工作集,因为大量数据想要在相同的缓存行中),但很难实现,尤其是在必须更快的低级缓存中。8 对于 L1 来说很常见。