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燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP