因为我不知道WINDOWS下怎么看。LINUX下很方便,你们在如下目录
/sys/devices/system/cpu/cpu0/cache
你也可以执行
grep . /sys/devices/system/cpu/cpu0/cache/index*/*
这样会把CPU0的各个CACHE参数列出来。
我的 CORE 2 I5-2500 ,2500元入手的。L1 L2 是X4的,每个CORE都有自己的。L3是复用的。如下
L1 ,data 32Kbyte 。 ways 8 ,line 64 ,set 64
L1 ,code 32Kbyte 。 ways 8 ,line 64 ,set 64
L2 code 和data 复用 , 256Kbyte ,ways 8 ,line 64 ,set 512
以上是 X4,4个核。
L3 复用,且4个核共同复用 6144Kbytes , 12ways
理论上WAYS 大会更好些。 LINE大对于64位OS更好写。当然TOTAL越大越好。
对新手补充点小知识。
CACHE总体积 = ways * line(byte in one line) * sets
line的意思是,每次CACHE的数据操作,不是一个BYTE或者一个32位,或者64位,而是一组数据,通常是寄存器的数据位宽2到8倍左右。当然也有特例。这样做的目的是,如果你尝试连续计算一组数据,那么a[0] 读取时,a[1]也会同时读取上来,而时间还是一个读取周期(读到当前CACHE)。
set的意思,一个连续的空间,可以在CACHE里连续存放的line的数量。因此我的上面set * lines = 4096.就是说这连续的4096个byte 之间,永远不会在CACHE里面打架冲突。
ways的意思是,上述4096通常算一个页面PAGE,但是我的CACHE如果大于一个PAGE了,则希望在PAGE内相同偏移量的不同PAGE里的数据,能够相互不打架。那么如果有相同偏移量的不同PAGE不打架的数量就是WAYS。
简单的举例,一群人住酒店。我们根据先来后到,做个排序,0.1,2,3,。。N。每个房间可以住下L个人。有W个楼层。每个楼层有S个房间,每个房间的档次都不一样。每个楼层则可以住下L*S个人。
那么你编号取模 L*S,则决定了你只能住某个具体档次的房间,无论是哪个楼层。而你每次入住都会拉前拽后的,纠集和你号码相邻的L个人一起进出。但你住哪个楼层,则根据目前哪个楼层的对应你能的档次房间是否有空来决定,如果都满了,系统会赶走一个不交钱或者交钱最少的出去。
也就是说,可能你的相邻号码属于隔壁房间的,但也有可能不在同一个楼层里面。
上面的L,S,W,就都应line ,set ,way.
L1 ,data 32Kbyte 。 ways 8 ,line 64 ,set 64
L1 ,code 32Kbyte 。 ways 8 ,line 64 ,set 64
L2 code 和data 复用 , 3072Kbyte ,ways 12 ,line 64 ,set 4096
L1 ,data 32Kbyte 。 ways 8 ,line 64 ,set 64
L1 ,code 32Kbyte 。 ways 8 ,line 64 ,set 64
L2 code 和data 复用 , 3072Kbyte ,ways 12 ,line 64 ,set 4096
之前发的少了size, 重发一遍:
L1, Data, 32K, way: 8, line: 64, set 64
L1, Instruction, 32K, way: 8, line: 64, set: 64
L2, Unified, 256K, way: 8, line: 64, set: 512
L3, Unified, 3072K, way: 12, line: 64, set: 4096
######没错.######莫非是上一代的I5?L3比我少一半,是不是2核4进程的。######版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。