Cache命中率分析工具的使用(附源代碼_第1頁
Cache命中率分析工具的使用(附源代碼_第2頁
Cache命中率分析工具的使用(附源代碼_第3頁
Cache命中率分析工具的使用(附源代碼_第4頁
Cache命中率分析工具的使用(附源代碼_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

4、裝完成即可。安裝界面如圖(由于我已經(jīng)安裝了此工具,而且沒有更新的版本,圖上結(jié)果為無可用升級(jí))。五、使用Valgrind分析工具測(cè)試程序的Cache命中率1首先,編寫兩個(gè)C語言程序,主要使用對(duì)數(shù)組數(shù)據(jù)兩種讀寫方式來測(cè)試Cache命中率的不同,同時(shí)根據(jù)程序做同一件事的運(yùn)行時(shí)間來判斷程序質(zhì)量的好壞。代碼如下:cache1.c :#include #include #include #define MAXROW 8000#define MAXCOL 8000int main () struct timeval startTime,endTime; float Timeuse; int i,j;stat

5、ic int xMAXROWMAXCOL;printf (Running!n);gettimeofday(&startTime,NULL); for (i=0;iMAXROW;i+) for (j=0;jMAXCOL;j+) xij = i*j;printf(Completed!n); gettimeofday(&endTime,NULL); Timeuse = *(endTime.tv_sec - startTime.tv_sec) + (endTime.tv_usec - startTime.tv_usec); Timeuse /= ; printf(Timeuse = %fn,Timeu

6、se); return 0;cache2.c :#include #include #include #define MAXROW 8000#define MAXCOL 8000int main () struct timeval startTime,endTime; float Timeuse; int i,j;static int xMAXROWMAXCOL;printf (Running!n);gettimeofday(&startTime,NULL); for (j=0;jMAXCOL;j+) for (i=0;iMAXROW;i+) xij = i*j;printf(Complete

7、d!n); gettimeofday(&endTime,NULL); Timeuse = *(endTime.tv_sec - startTime.tv_sec) + (endTime.tv_usec - startTime.tv_usec); Timeuse /= ; printf(Timeuse = %fn,Timeuse); return 0;2.對(duì)以上兩個(gè)程序進(jìn)行Cache命中率測(cè)試:編譯兩程序:gcc -o cache1 cache1.cgcc -o cache2 cache2.c使用命令 valgrind -tool=cachegrind ./cache1測(cè)試cache1程序的Ca

8、che命中率:使用命令 valgrind -tool=cachegrind ./cache2測(cè)試cache2程序的Cache命中率:3.對(duì)測(cè)試結(jié)果進(jìn)行分析:由cache1測(cè)試結(jié)果可以看出程序cache1的D1 miss rate: 0.8%可知1級(jí)Cache的數(shù)據(jù)未命中率為0.8%,即命中率為99.2%;由Timeuse = 9.可以cache1中數(shù)組循環(huán)完成的時(shí)間是9.s由cache2測(cè)試結(jié)果可以看出程序cache2的D1 miss rate: 14.2%可知1級(jí)Cache的數(shù)據(jù)未命中率為14.2%,即命中率為85.8%;由Timeuse = 15.可以cache1中數(shù)組循環(huán)完成的時(shí)間是15.s綜上可知cache1程序的cache命中率大于cache2,cache1循環(huán)所用時(shí)間少于cache2,即cache1程序質(zhì)量比cache2好。六、感想這次研討主要對(duì)Cache及Cache命中率測(cè)試工具進(jìn)行了討論,準(zhǔn)備這次研討時(shí),我先查找了有關(guān)CPU Cache的資料并進(jìn)行學(xué)習(xí),加深了我對(duì)CPU Cache的理解,之后,查找了各種有關(guān)Cache命中率分析工具的資料,并選擇Linux環(huán)境下的Valgrin

溫馨提示

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

評(píng)論

0/150

提交評(píng)論