題 linux的cpu文件夾中文件的含義


文件夾中文件的含義是什麼 /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
  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

為什麼我在index1或index2中看不到子語句? shared_cpu_list顯示0_7。是否意味著此緩存與cpu0共享到cpu7?


2
2018-03-26 03:29


起源




答案:


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 - 高速緩存行中有多少字節,這是從主存儲器讀取和寫入內存的單位。
  • ways_of_associativity-給定行可以映射到多少個不同的緩存槽。越高越好(這意味著你不太可能擁有一個小於緩存的工作集,但不能同時在緩存中,因為許多數據想要在同一個緩存行中),但很難實現,尤其是在較低級別的緩存中必須更快。對於L1來說,8很常見。

4
2017-08-06 22:02





在我的機器上,index0具有類型Data,並且index1具有類型指令,因此暗示這兩個事物的L1緩存是不同的,而它們共享L2和L3緩存。


0
2017-09-10 20:01