Notebook 板


LINE

※ 引述《nhsmallcat (在一起不容易)》之铭言: : http://support.microsoft.com/kb/183063/en-us/ : 微软知识库中关於SecondLevelDataCache的说明 : 节录部份如下: : SecondLevelDataCache records the size of the processor cache, also known as : the secondary or L2 cache. If the value of this entry is 0, the system : attempts to retrieve the L2 cache size from the Hardware Abstraction Layer : (HAL) for the platform. If it fails, it uses a default L2 cache size of 256 : KB. If the value of this entry is not 0, it uses this value as the L2 cache : size. This entry is designed as a secondary source of cache size information : for computers on which the HAL cannot detect the L2 cache. : 如果值为0,系统会先透过HAL来读取L2值。就算透过HAL读取失败,预设至少也会是256KB : 如果值不为0,系统就会以此值来作为L2的值。 : 问题来了, : 如果只设为原本实体L2的一半,那L2使用到的容量仅为实体的一半, : 效能应该反而比较慢才对,怎麽会变快呢? 因为它控制的不是使用L2 Cache的数量(从软体层上控制不了) 它的效果是,在某些对应的code上要作出"闪避相隔xxx KB的持续存取 记忆体动作". 为甚麽?因为你要看後面那段 This is not related to the hardware; it is only useful for computers with direct-mapped L2 caches 这两者有甚麽关系?Direct Mapped cache的意思是,假定Cache 256KB好了, 那麽,记忆体位置上,0~32,256KB+32,512KB+32....这几段记忆体,占用的就是同一个区块 假设你真的持续读取这些位置,就会持续使用到同一个cache block,互相把对方挤出去. 变成谁都没有cache的效果可以用.如果我可以避免以这个顺序存取L2 cache,就可以在 "古老的"(至少在x86上,它已经退场超过十年)direct-mapped cache系统上取回cache 的效果.不过因为现在cpu内建的L2 Cache以上,至少都会是4-way,8-way以上,所以 也不会有这个问题需要避开.... 另外,实作上是怎样避开的?它是刻意的打乱logical address和physical address的 对应关系,让它不太连续.因此在现在的电脑上还这样改的话,只会降低效能不会有 甚麽好处 当然关於这个,爱相信的就相信,爱改的就改,反正除了一些storage driver, 陈年老code外,除了变慢还不至於真的有问题..... ==============如果要眼见为凭L2 cache的话=============== 最简单的方法,就是自己作程式,连续作两次"xx KB的读取记忆体", 测量第二次读取的时间,然後换算成每秒的速度. 只有L1 cache的系统 速度 |*** | | | | | |************ | ---------------------->读取量 ^这个点就是L1 Cache的大小 (超过L1 cache大小 会瞬降到外部记忆体的速度) 有L2 Cache产生作用的系统 速度 |*** | \ | \ | ********** | ---------------------->读取量 ^这个点就是L1 Cache的大小 ^第二个斜率转折点就是L2 cache的大小 (以上从Pentium II到Core 2应该都相同,至於有L3的系统, 以及K7以後的exclusive cache,就不会有很漂亮的斜率) =========Sample Code, MS系的编译器用============ #include <iostream.h> #include <windows.h> #define RDTSC(var) \ _asm _emit 0x0F \ _asm _emit 0x31 \ _asm mov DWORD PTR var,eax \ _asm mov DWORD PTR var+4,edx #define LB(var,offset) \ _asm mov ebx,var \ _asm mov edi,offset \ _asm movzx eax,[ebx+edi] #define LW(var,offset) \ _asm mov ebx,var \ _asm mov edi,offset \ _asm mov eax,[ebx+edi] #define space 512 void main(){ long double time,time2; long double overhead[13]; int temp; int loop; int i,j; void* p; p=VirtualAlloc(NULL,1048576*4,MEM_COMMIT,PAGE_READWRITE); __int64 clock1,clock2; RDTSC(clock1); RDTSC(clock2); time=clock2-clock1; cout<<"RDTSC overhead averge using "<<time<<" clocks\n"; //case1 侦测cache之大小 for (j=0;j<=12;j++){ loop=(1024*(1<<j)-64); RDTSC(clock1); for (i=0;i<loop;i+=4){ }; RDTSC(clock2); overhead[j]=clock2-clock1; }; for (j=0;j<=12;j++){ loop=(1024*(1<<j)-64); for (i=0;i<loop;i+=4){ __asm { mov ebx,p mov edi,i mov eax,[ebx+edi] } }; RDTSC(clock1); for (i=0;i<loop;i+=4){ __asm { mov ebx,p mov edi,i mov eax,[ebx+edi] } }; RDTSC(clock2); temp=(1<<j)-0; time=(clock2-clock1-overhead[j])/temp; cout<<"reading "<<(1<<j)<<"kbytes averge using "<<time<<" clocks\n"; cout<<"Averge Speed:"<<((2600/time)*(1<<j)*1024)<<"MB /s \n"; //2600为cpu的MHZ数..不同的需要修改 }; } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.237.63
1F:→ wayne1985:推专业.. 03/12 13:00
2F:推 wayne1985:补推 03/12 13:00
3F:推 wayne1985:但我想...可能没几个人看的懂吗...冏 03/12 13:07
4F:→ wayne1985:M辛酸的XDDD 03/12 13:07
5F:→ nadoka:我看不懂...XD 03/12 13:08
6F:推 a2730046:赶快说专业 不然别人以为我们看不懂 XD 03/12 13:12
7F:推 striving:赶快说专业 不然别人以为我们看不懂 XD 03/12 13:13
8F:→ striving:反正就是 对这些新电脑而言 改了没帮助就是 XD 03/12 13:14
9F:→ cy0816:毕业後都还回去了 (挺) 03/12 13:14
10F:→ wayne1985:我吃饭的工具=,=...忘了我就死定了 03/12 13:21
11F:→ nadoka:所以结论是这是骗人的对吧@@? 03/12 13:32
12F:→ wayne1985:似乎好像是对的...但我没有工具测=,=~我也不知道@@"~ 03/12 13:34
13F:推 lk70691:推 专业 03/12 15:14
14F:推 charlesdc:推看不懂...... 03/12 19:21
15F:推 godjack0709:推看不懂= =a 03/12 19:52
16F:推 han999:这篇我居然看得懂耶XD回nadoka这不是骗人而是看用途在哪? 03/13 00:35
17F:推 Scofiled:真厉害只有有几个地方感觉怪怪的 03/17 04:20







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP