氟塑料離心泵www.buybeng.com

          jquery教程http://www.software8.co/wzjs/jquery/

          cpu偽共享問題

          CPU內(nèi)部也會有自己的緩存,內(nèi)部的緩存單位是行,叫做緩存行。在多核環(huán)境下會出現(xiàn)CPU之間的內(nèi)存同步問題(比如一個核加載了一份緩存,另外一個核也要用到同一份數(shù)據(jù)),如果每個核每次需要時都往內(nèi)存中存取,這會帶來比較大的性能損耗,這個問題一般是通過MESI協(xié)議來解決的。

                    MESI協(xié)議中包含M、E、S、I四個狀態(tài),分別的意思是:

          • M(修改, Modified): 本地處理器已經(jīng)修改緩存行, 即是臟行, 它的內(nèi)容與內(nèi)存中的內(nèi)容不一樣. 并且此cache只有本地一個拷貝(專有).
          • E(專有, Exclusive): 緩存行內(nèi)容和內(nèi)存中的一樣, 而且其它處理器都沒有這行數(shù)據(jù)
          • S(共享, Shared): 緩存行內(nèi)容和內(nèi)存中的一樣, 有可能其它處理器也存在此緩存行的拷貝
          • I(無效, Invalid): 緩存行失效, 不能使用
                   
                    cpu在對緩存行進行了不同的操作后,在cpu緩存行中會記錄緩存的不同狀態(tài)。當(dāng)一個核要對共享的數(shù)據(jù)進行寫操作時,需要給其他核發(fā)送RFO(REQUEST FOR OWNER)消息并把其他核的數(shù)據(jù)改成I態(tài)。這是一種比較消耗性能的操作。
                    cpu的偽共享問題本質(zhì)是:幾個在邏輯上并不包含在同一個內(nèi)存單元內(nèi)的數(shù)據(jù),由于被cpu加載在同一個緩存行當(dāng)中,當(dāng)在多線程環(huán)境下,被不同的cpu執(zhí)行,導(dǎo)致緩存行失效而引起的大量的緩存命中率降低。
                    例如:當(dāng)兩個線程分別對一個數(shù)組中的兩份數(shù)據(jù)進行寫操作,每個線程操作不同index上的數(shù)據(jù),看上去,兩份數(shù)據(jù)之間是不存在同步問題的,但是,由于他們可能在同一個cpu緩存行當(dāng)中,這就會使這一份緩存行出現(xiàn)大量的緩存失效,如前所述當(dāng)一份線程更新時要給另一份線程發(fā)送RFO消息并把它的緩存失效掉。
                    解決這個問題的一個辦法是讓這個數(shù)組中不同index的數(shù)據(jù)在不同的緩存行:因為緩存行的大小是64個字節(jié),那我們只要讓數(shù)組中沒份數(shù)據(jù)的大小大于64個字節(jié),就可以保證他們在不同的緩存行當(dāng)中,就能避免這樣的偽共享問題。
                    比如一個類當(dāng)中原本只有一個long類型的屬性。這樣這個類型的對象只占了16個字節(jié)(java對象頭有8字節(jié)),如果這個類型被定義成一個長度為4的數(shù)組,這個數(shù)組的所有數(shù)據(jù)都可能在一個緩存行當(dāng)中,就可能出現(xiàn)偽共享問題,那么這個時候,就可以采用補齊(padding)的辦法,在這個類型中加上public long a,b,c,d,e,f,g;這六個無用的屬性定義,使得這個類型的一個實例占用內(nèi)存達(dá)到64字節(jié),這樣這個類型的偽共享問題就得到了解決,在多線程當(dāng)中對這個類型的數(shù)組進行寫操作就能避免偽共享問題。

          posted on 2012-10-29 09:30 你爸是李剛 閱讀(1218) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2012年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          技術(shù)網(wǎng)站

          行業(yè)網(wǎng)站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          站長網(wǎng) 氟塑料離心泵 注塑機 液晶廣告機
          主站蜘蛛池模板: 兴化市| 江西省| 南投县| 天等县| 米易县| 福安市| 门源| 临洮县| 揭阳市| 莎车县| 固始县| 广南县| 舟曲县| 乌拉特前旗| 会宁县| 宁国市| 汤阴县| 邵阳市| 罗平县| 南华县| 曲水县| 宁南县| 澄迈县| 九江县| 奉贤区| 涞源县| 江口县| 卫辉市| 汾西县| 民和| 紫金县| 衢州市| 临泽县| 黄浦区| 中西区| 哈尔滨市| 平罗县| 永登县| 徐汇区| 鱼台县| 哈密市|