關於cache line

來源:互聯網
上載者:User
一個L1 DATA CACHE相當於一塊小的記憶體,我們假設它為16K大,它會與一般實體記憶體互動。 它和記憶體互動一般一次傳輸16個位元組(32個位元組),也就是: CACHE 位元組0-15一次寫到/讀取實體記憶體 ,位元組16-31一次寫到/讀取實體記憶體.32-47 ... ... 這些一次被傳輸的位元組被稱為cache line。 -------------------------------------------------------------- 另外,cache寫到實體記憶體的位置不是任意的, 我們假定記憶體為64K,那麼cache地址0的數值只能和實體記憶體的地址0, 16K, 32K互動;cache地址1的數值只能和實體記憶體的地址1, 16K+1, 32K+1互動 。。。 。。。cache地址16K-1的數值只能和實體記憶體的地址6K-1, 16K+16K-1, 32K+16K -1互動 這說明了兩點: (1)假設對象A的一個欄位長為16個位元組,如果它放在物理地址 0-15,那麼它將和cache的第一個cache line 互動,如果放在物理地址 8-23,那麼 如果CPU要訪問這個欄位,必須將第一個和第二個cache line 都讀入,才能獲得這個欄位的資訊,顯然這樣速度慢,所以一般欄位需要cache line對齊, 在這裡就是16個位元組對齊。 (2)關於colour 一般一個對象某些欄位訪問頻繁些。 假定一個cache(這個cache指slab的cache,不是上面提到CPU的L1 DATA CACHE)佔用5個頁面也就是20K. 假定其中對象大小為32個位元組,前16個位元組訪問頻繁許多。 假定對象A起始於物理地址0,對象C起始於31,對象B起始於物理地址16K,那麼對象A,對象B的前16個位元組都和第一個cache line 互動,後16個位元組都和第二個cache line 互動 對象C前16個位元組與第3個cache互動。 我們假定核心訪問A後就訪問B,再訪問A,交錯進行,並且前16個位元組次數都是50次,後16個為10次。C也是。 這樣第一個cache line 要互動100次,第二個20次,一共120次。 如果讓對象B向後移動16個位元組,也就是對象B的前16個位元組與第二個cache line 互動,後16個與第3個互動。 那麼第一個為2次,因為只有開頭結尾2次要與記憶體互動,其它每次都在L1 DATACACHE 中寫就可以了。第2個cache line為20次左右(後面的只須在CACHE中讀寫),第3個cache line為20次, 3個line一共才41次,你不妨仔細類比一下。 所以進行錯位能降低CACHE的互動次數,從而提高CPU處理速度能力。 這個錯位(也就是上面的16個位元組)就是colour.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.