Cache命中率分析工具的使用附源代碼_第1頁
Cache命中率分析工具的使用附源代碼_第2頁
Cache命中率分析工具的使用附源代碼_第3頁
Cache命中率分析工具的使用附源代碼_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、題目:安裝一種Cache命中率分析工具, 并現(xiàn)場安裝、演示。一、什么是 CPU-CacheCPU緩存(Cache Memory)是位于CPU與內(nèi)存之間的臨時存儲器,它的容 量比內(nèi)存小的多但是交換速度卻比內(nèi)存要快得多。高速緩存的出現(xiàn)主要是為了解決CPU運算速度與內(nèi)存讀寫速度不匹配的矛盾,因為CPU運算速度要比內(nèi)存讀寫速度快很多,這樣會使CPU花費很長時間等待數(shù)據(jù)到來或把數(shù)據(jù)寫入內(nèi)存。 在緩存中的數(shù)據(jù)是內(nèi)存中的一小部分,但這一小部分是短時間內(nèi)CPU即將訪問的,當(dāng)CPU調(diào)用大量數(shù)據(jù)時,就可先緩存中調(diào)用,從而加快讀取速度。CPU包含多個核心,每個核心又有獨自的一級緩存(細(xì)分成代碼緩存和數(shù)據(jù)緩存) 和二

2、 級緩存,各個核心之間共享三級緩存,并統(tǒng)一通過總線與內(nèi)存進(jìn)行交互。二、 關(guān)于 Cache Line整個Cache被分成多個Line,每個Line通常是32byte或64byte , Cache Line 是Cache和內(nèi)存交換數(shù)據(jù)的最小單位,每個 Cache Line包含三個部分 Valid:當(dāng)前緩存是否有效 Tag:對應(yīng)的內(nèi)存地址 Block:緩存數(shù)據(jù)三、Cache命中率分析工具選擇1、Linux 平臺:Valgrind分析工具;2、Windows 平臺如下:java 的 Jprofiler ;C+的VisualStudio2010及以后的版本中自帶 profile工具; Applicati

3、on Verifier ; intel vtune 等。四、選用Valgrind分析工具在Linux-Ubuntu14.04 環(huán)境下實驗1 .Valgrind分析工具的常用命令功能:memcheck :檢查程序中的內(nèi)存問題,如泄漏、越界、非法指針等。 callgrind :檢測程序代碼的運行時間和調(diào)用過程,以及分析程序性能。 cachegrind :分析CPU的cache命中率、丟失率,用于進(jìn)行代碼優(yōu)化。 helgrind :用于檢查多線程程序的競態(tài)條件。massif :堆棧分析器,指示程序中使用了多少堆內(nèi)存等信息。2 .Valgrind分析工具的安裝:使用 Ubuntu 統(tǒng)一安裝命令: su

4、do apt-get install valgrind 之后等待安裝完成即可。安裝界面如圖(由于我已經(jīng)安裝了此工具,而且沒有更新的版本,圖上結(jié)果為無可用升級)。/ e lixiaokangDlIxiackang-VirtualBoK:"Iixiaok ang-Vi rtuslBox: sudo apt'get Install 1 vlgrinrisudo password for lixiaokang:正在日取軟件包列表完成正在分析軟件包的依賴關(guān)系樹正在讀取狀態(tài)信息 完成valgrtnd已經(jīng)是最新的版本.E列軟件包是自助安裝的并且現(xiàn)在不需要了:accou nt-plugin-

5、windows-Itve libntdbi libupsrarn python- ntdbUse ript-get autoreinove' to renove theM.升級了 o個軟件包,新安裝了 o個軟件包,要卸教e個軟件包.有個軟件包未被升 如1.tx 1.acikiir»gltxtaok<ir»g -Vtr tualBox1五、使用Valgrind分析工具測試程序的 Cache命中率1 .首先,編寫兩個C語言程序,主要使用對數(shù)組數(shù)據(jù)兩種讀寫方式來測試Cache命中率的不同,同時根據(jù)程序做同一件事的運行時間來判斷程序質(zhì)量的好壞。代碼如下:cachel.

6、c :#include <stdio.h>#include <time.h>#include<sys/time.h>#define MAXROW 8000#define MAXCOL 8000 int main () struct timeval startTime,endTime;float Timeuse;int i,j;static int xMAXROWMAXCOL;printf ("Running!n");gettimeofday(&startTime,NULL);for (i=0;i<MAXROW;i+)for

7、(j=0;j<MAXCOL;j+) xij = i*j;printf("Completed!n");gettimeofday(&endTime,NULL);Timeuse = 1000000*(endTime.tv_sec - startTime.tv_sec) + (endTime.tv_usec - startTime.tv_usec);Timeuse /= 1000000;printf("Timeuse = %fn",Timeuse);return 0;cache2.c#include <stdio.h>#include

8、<time.h>#include<sys/time.h>#define MAXROW 8000#define MAXCOL 8000 int main () struct timeval startTime,endTime;float Timeuse;int i,j;static int xMAXROWMAXCOL;printf ("Running!n");gettimeofday(&startTime,NULL);for (j=0;j<MAXCOL;j+)for (i=0;i<MAXROW;i+) xij = i*j;print

9、f("Completed!n");gettimeofday(&endTime,NULL);Timeuse = 1000000*(endTime.tv_sec - startTime.tv_sec) + (endTime.tv_usec - startTime.tv_usec);Timeuse /= 1000000;printf("Timeuse = %fn",Timeuse);return 0; 2 .對以上兩個程序進(jìn)行 Cache命中率測試: 編譯兩程序:gcc -o cache1 cache1.cgcc -o cache2 cache2.cf

10、 ' lixiaokanglixjaokang-Virt jalBox:li.xtaokang(?ltxiaokang-VirtudlBox:*$ gcc -o cachel cache! .c ltxtaokangltxtaokang-VtrtLalBox:-S gcc -o cache2 cache2 lixiaokangglixiaokang-Virtual&ox:S |使用命令 valgrind -tool=cachegrind ./cache1測試cache1程序的Cache命中率:|'l.Lxiaokflng0li>iiaokang-Vi.rtijaI

11、Dox:-$ valgrtnd * * toolicachegrtnd »/cachelcachegrind, a cacha and branch-predictton profilerCopyright (C> 26G2-2G13,白nd GNU GPL'%by Nicholas Netercote et aL«for copyr iyhL in口warningi I 3 cache foundits datafortheL L 5inulation.Using VaVgr tnd-3-10*1 and LibVEX, rerun command: ./c

12、achelRunning 1 Corpleted!Tineuse = 9.73339ftLLt II LLtrefs;nisses:miss rate: rate:640,175,485870&6A0.00%U.配男refs:448,0日明 921(384,062,791 rdr64.C24.T3G wr):4,601,295(1,106 rd4,060,189 wr)misses:4,001,01(1,025 rdt4,OGO,176 wr)ntss rate:O.BS(et0W+6.2% )1 ntss rate:e.e%(6.0%6.2% )rd4,002,1fi5C1t976

13、rd4-4,fiaa,1H9 Mr)hisses:4,ee冊86s(1,339 rd+4,000,176 wr)niss rat«0,3%(02%+5,2% )llxlaokargl tjilankang-virtualBox:'$D DI LLd DI LLd使用命令 valgrind -tool=cachegrind ./cache2測試cache2程序的Cache命中率:lixiaokangglixiaokan - VLrtudlBox + valgrtnd - -toolc ache grind ./caches-24icachegrtnd, a cache and

14、branch*predictton profiler=2453=245M=-245 3 -Copyright (C) 2002-913, and CMU CPL'd, Using VaLgrind-3.1041 and LibVEX; rerun Connard: ./cachez倒dning: L3 cache foundt uing its ddtaby Nicholas Methercote et al.with -hforfor copyright trfoLL simulation-Running JCompletedITineuse = 15.T0&8O3LLiII

15、LLirefs: misses: nisses: niss rate: miss rate:640,176,455 893 987O.ODM 機(jī)小D DI LLdCl LLdrefs:Mt弓弓白整士 misses: miss rate; miss rate:448.087,529 (384,()63,162 rd64,001T29b (4,隨9,201 (14.2% ( o.b% (64.024,367 wr)64,Bea,lag wr)4.066,176 wr)”領(lǐng))5.2%)I I refs: LL nisses: LL nisi rate:(54(f>f)7,18B(4peie,6

16、36 ( 0,3*(ItKtaokanf901txldokan-virtualbox r、5 .1,999 rd1,912 rd0.0«64,360,189 wr)4,068,176 wr)6.2 洋)3 .對測試結(jié)果進(jìn)行分析:由cachel測試結(jié)果可以看出程序cachel的D1 miss rate: 0.8%可知1級Cache的數(shù)據(jù)未命中率為0.8% ,即命中率為 99.2% ;由Timeuse = 9.733398 可以cache1中數(shù)組循環(huán)完成的時間是9.733398s由cache2測試結(jié)果可以看出程序cache2的D1 miss rate: 14.2% 可知1級Cache的數(shù)據(jù)未命中率為14.2% ,即命中率為 85.8% ;由Timeuse = 15.708803 可以cache1中數(shù)組循環(huán)完成的時間是15.708803s綜上可知cache1程序的cache命中率大于 cache2 , cache1循環(huán)所用時間少于 cache2,即 cache1程序質(zhì)量比cache2好。六、感想這次研討主要對 Ca

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論