本篇內容介紹了“Java中cache line的狀態(tài)有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

網站建設哪家好,找創(chuàng)新互聯(lián)!專注于網頁設計、網站建設、微信開發(fā)、小程序開發(fā)、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了曲沃免費建站歡迎大家使用!
cache line的狀態(tài):
1、狀態(tài)M表示該緩存行中數據有修改,并且與內存中的數據不一致;
2、狀態(tài)E表示該緩存行中數據有修改,并且與內存中的數據一致;
3、狀態(tài)S表示該緩存行中數據與內存中的數據一致,并且與其它內核中的cache line一致;
4、狀態(tài)I表示該緩存行無效;
每個cache控制器除了監(jiān)聽自己cache的讀寫操作還監(jiān)聽其它cache的讀寫操作與狀態(tài),因此每個緩存行根據當前所處的狀態(tài)與監(jiān)聽的動作進行狀態(tài)轉換,簡稱MESI一致性協(xié)議。讀寫操作具體可分成4種類型(LR-本內核讀取本cache,LW-本內核寫本cache,RR-其它內核讀其對應的cache,RW-其它內核寫其對應的cache)狀態(tài)轉換過程如下:
1、當數據所在cache line處于I狀態(tài)并發(fā)生LR時,如果其它內核cache line中沒有該數據則從內存加載,然后該cache line狀態(tài)變成E;如果其它內核cache line中有該數據并處于狀態(tài)M時,令其寫入到內存后然后本內核從內存中加載,兩個cache line都處于S狀態(tài);如果其它內核cache line中有該數據且已處于狀態(tài)S或者E時,本cache line從內存中加載然后都變成S狀態(tài)。
當數據所在cache line處于I狀態(tài)并發(fā)生LW時,先從內存加載數據然后在cache line中修改,狀態(tài)變成M;如果其它內核cache line中有該數據,且狀態(tài)為M時先令其更新到內存然后狀態(tài)置為I;如果其它內核cache line中有該數據,且狀態(tài)為E時將狀態(tài)置為無效I。而本內核的cache line狀態(tài)一直是M。
當數據所在cache line處于I狀態(tài)并監(jiān)聽到RR和RW時不會作任何反應。
2、當數據所在cache line處于M狀態(tài)并發(fā)生LR時,直接讀取,狀態(tài)不變。
發(fā)生LW時,直接寫入,狀態(tài)不變。
監(jiān)聽到RR時,數據會寫入內存然后狀態(tài)變成S。
監(jiān)聽到RW時,將數據寫入內存便于其它內存讀取最新數據,然后狀態(tài)置無效I。
3、當數據所在cache line處于E狀態(tài)并發(fā)生LR時,直接讀取,狀態(tài)不變。
發(fā)生LW時,直接寫入,狀態(tài)變成M。
監(jiān)聽到RR時,狀態(tài)變成S。
監(jiān)聽到RW時,狀態(tài)置無效I。
4、當數據所在cache line處于S狀態(tài)并發(fā)生LR時,直接讀取,狀態(tài)不變。
發(fā)生LW時,修改cache line中的內容并將狀態(tài)變成M,其余內核的cache line置無效狀態(tài)I。
監(jiān)聽到RR時,狀態(tài)不變。
監(jiān)聽到RW時,cache line置無效狀態(tài)I。
“Java中cache line的狀態(tài)有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網站,小編將為大家輸出更多高質量的實用文章!
文章題目:Java中cacheline的狀態(tài)有哪些
文章鏈接:http://www.yijiale78.com/article20/pcsjjo.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、靜態(tài)網站、品牌網站建設、企業(yè)建站、網站建設、網站設計
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)