共享與偽共享

2021-06-19 10:16:52 字數 490 閱讀 9354

共享就是乙個記憶體區域的資料被多個處理器訪問,偽共享就是不是真的共享。這裡的共享這個概念是基於邏輯層面的。實際上偽共享與共享在cache line 上實際都是共享的。

cpu訪問的資料都是從cache line  中讀取的。如果cpu 在cache 中找不到需要的變數,則稱快取未命中。 未命中時,需要通過匯流排從記憶體中讀取進cache 中。每次讀取的記憶體大小就是乙個cache line 的大小。

如果多個cpu訪問的不同記憶體變數被裝載到了同乙個cache line 中,則從程式邏輯層上講,並沒有共享變數,但實際上在cache line 上他們是共享訪問的,這個就是典型的偽共享。

偽共享與共享 在 cache line 的層面上必須都是共享的。多個cpu對共享記憶體的訪問安全通過快取一致性來保證。

共享必須滿足2個條件: 1 .資料都在乙個cache line , 2 多cpu同時訪問 。如果不兩個cpu對同乙個cache line 的訪問間隔較長時間(cahe line 還不到被清除),也不會發生共享。

cache快取與偽共享

一 cache快取 cache與主存之間是以塊為單位讀寫的,這樣設計是為了符合程式執行的區域性性原理 時間區域性性原理與空間區域性性原理 參見 計算機組成原理 二維陣列行遍歷比列遍歷要快,是由於二維陣列是按行儲存的,cache從主存中讀入塊,會將同行相鄰元素一起寫入cache,導致行遍歷cache命...

cpu快取偽共享

描述 引數 返回值 建立人 yufeng.lin ucarinc.com 建立時間 修改人和其它資訊 public class fadeshare implements runnable public fadeshare int i 設計4個執行緒,執行同乙個計算量 計算前後時間 param arg...

多核程式設計偽共享問題及其對策

多核程式設計中的偽共享問題及其對策 注 本文主要內容摘自筆者所著的 多核計算與程式設計 一書,略有修改,後續還會繼續發布系列文章,如有需要,可以考慮將一下位址加入到您的瀏覽器收藏夾中 偽共享問題在 多核程式設計技術 通過軟體多執行緒提公升效能 一書中有詳細講解,它是由於cpu cache機制造成的,...