關於使用CPU快取的乙個小栗子

2022-04-10 08:45:19 字數 1739 閱讀 7698

一、背景知識

cpu快取(cache memory),是位於cpu與記憶體之間的臨時儲存器,它的容量比記憶體小的多但是交換速度卻比記憶體要快得多。快取記憶體的出現主要是為了解決cpu運算速度與記憶體讀寫速度不匹配的矛盾,因為cpu運算速度要比記憶體讀寫速度快很多,這樣會使cpu花費很長時間等待資料到來或把資料寫入記憶體。在快取中的資料是記憶體中的一小部分,但這一小部分是短時間內cpu即將訪問的,當cpu呼叫大量資料時,就可避開記憶體直接從快取中呼叫,從而加快讀取速度。

----以上引自度娘百科,懶吶- -"

快取中是由快取行來管理的,典型的快取行大小為64bytes,一次讀入就是64bytes。即使僅僅想讀入乙個int64,實際上也是將其後的56bytes也讀進來。

因此如果需要操作乙個length為8的int64陣列,一次讀入,次次命中,嗨吧~~

二、栗子

設計了乙個小栗子,是累加乙個二維int64的資料:

如果從一維迴圈,那麼類似於順序讀入,這樣應該能實現1次讀入快取,後7次命中,效能應該會好一些。

如果從二維迴圈,那麼讀入一次快取,後面的就沒辦法命中了,效能一定是底很多。

三、栗子**

1

using

system;23

namespace

performanceofcachelinetest420

}2122 console.writeline("

starting....");

2324 datetime start =system.datetime.now;

25 int64 sum = 0;26

for (int i = 0; i < one_dimension; i++)

2732

}33 datetime end =system.datetime.now;

34 console.writeline("

one dimension first: using

" + (end -start).totalmilliseconds);

3536

37 start =system.datetime.now;

38for (int j = 0; j < two_dimension; j++)

3944

}45 end =system.datetime.now;

46 console.writeline("

two dimension first: using

" + (end -start).totalmilliseconds);

4748 console.writeline("

...ended");

49console.read();50}

51}52 }

四、栗子結果

五、結論

差距還是很明顯的喲,印證了假設。

作為一枚肉鳥,學到新的東西總是讓人耳目一新,世界觀都不一樣了呢*_*。。。需要學習的東西還很多呀!!!

Python教程 乙個小栗子和乙個小練習

python教程正在更新中 檢視python教程目錄 學了這麼多,我們來做幾個小練習。1.從命令列讀入出生年份是2001年,並且計算年齡例如那麼今年的年齡就是19歲 birth year input birth year age 2020 birth year print age 這是我們最樸素的思...

關於 auto 使用的乙個小細節

class a a const a other m a other.m a int get a a get class void solve output a a const a 0 從output可以看出,auto 自動推導了 a t a.get class 故呼叫了class a的拷貝建構函式 ...

乙個利用sed和awk處理文字的小栗子

這兩天做 linux作業系統 課程的作業,碰到了乙個題目,感覺很有意思,很考驗對awk掌握的熟練度,故特意拿來分享。首先說題目是這樣的,有這樣一段文字 record 這是多餘的注釋行one record type students 這是多餘的注釋行two f sno 11111110000 f na...