cache

因为我不知道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.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值