




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、緩存一致性的解決方案摘要:隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,CPU時(shí)計(jì)算機(jī)組成的核心部分,提高CPU的性能一直是一個(gè)很重要的課題,所以CPU從單核提高到多核,但是總會(huì)有一些技術(shù)上的難題需要解決,這其中,Cache的一致性問(wèn)題的解決就推動(dòng)計(jì)算機(jī)多核的發(fā)展,解決一致性人們提出了一些協(xié)議,這其中比較好的解決方案是MESI協(xié)議,MESI協(xié)議通過(guò)監(jiān)視機(jī)制,實(shí)時(shí)監(jiān)視總系的事務(wù),當(dāng)修改某一緩存時(shí),通過(guò)通知其它同樣持有同一內(nèi)容的緩存來(lái)保持緩存的一致性。這一協(xié)議是目前比較好的解決緩存一致性問(wèn)題的解決方案,本篇文章就這一經(jīng)典協(xié)議做了分析與總結(jié)。關(guān)鍵詞:緩存 一致性 窺探 協(xié)議引言現(xiàn)代的CPU上,大部分都需要通過(guò)緩存來(lái)進(jìn)行
2、內(nèi)存訪(fǎng)問(wèn),由于物理架構(gòu)的原因,CPU沒(méi)有管腳直接連到內(nèi)存,所以CPU的讀/寫(xiě)(以及取指令)單元正常情況下不能進(jìn)行直接內(nèi)存訪(fǎng)問(wèn)。相反,CPU和一級(jí)緩存通訊,而一級(jí)緩存才能和內(nèi)存通訊 。而現(xiàn)在又大多有了二級(jí)緩存,甚至三級(jí)緩存。緩存是分段(line)的,即下文要用的“緩存段”(cache line),當(dāng)我們提到”緩存段”的時(shí)候,就是指一段和緩存大小對(duì)齊的內(nèi)存,而不關(guān)心里面的內(nèi)容是否真正被緩存進(jìn)去。當(dāng)CPU看到一條讀內(nèi)存指令時(shí),它會(huì)把內(nèi)存地址傳遞給一級(jí)數(shù)據(jù)緩存,一級(jí)數(shù)據(jù)緩存會(huì)檢查它是否有這個(gè)內(nèi)存地址對(duì)應(yīng)的緩存段,沒(méi)有的話(huà),它會(huì)把對(duì)應(yīng)的緩存段加載進(jìn)來(lái)。如果進(jìn)行的是讀操作,這就很簡(jiǎn)單,所有級(jí)別的緩存都遵循
3、以下規(guī)律:在任意時(shí)刻,任意級(jí)別緩存中的緩存段的內(nèi)容,等同于它關(guān)聯(lián)內(nèi)存中的內(nèi)容。如果進(jìn)行寫(xiě)操作,情況就會(huì)變得復(fù)雜些,一般分為兩種基本的寫(xiě)模式:直寫(xiě)(write-through)和回寫(xiě)(write-back)。直寫(xiě)簡(jiǎn)單一點(diǎn):透過(guò)緩存,直接把數(shù)據(jù)寫(xiě)到下一級(jí)內(nèi)存中,如果對(duì)應(yīng)的段被緩存了,就更新緩存中的內(nèi)容,同樣遵循前面的定律:緩存中的段永遠(yuǎn)和它關(guān)聯(lián)內(nèi)存的內(nèi)容匹配?;貙?xiě)相對(duì)復(fù)雜一些,回寫(xiě)模式下不會(huì)立即把數(shù)據(jù)傳遞給下一級(jí),而是僅僅修改本級(jí)緩存中的內(nèi)容,并將其標(biāo)記為“臟段”,“臟段”會(huì)在觸發(fā)回寫(xiě),就是將緩存段中的內(nèi)容傳遞給下一級(jí),然后臟段又變干凈了,即當(dāng)一個(gè)臟段被丟棄了,總是要進(jìn)行一次回寫(xiě),在回寫(xiě)模式中,去
4、掉了“任意時(shí)刻”這個(gè)修飾詞,而是以相對(duì)弱化的條件代替它:緩存段干凈時(shí),緩存段的內(nèi)容和內(nèi)存一致;緩存段是臟段時(shí),緩存段中的內(nèi)容最終要回寫(xiě)到內(nèi)存中,也就是說(shuō)可以允許關(guān)聯(lián)內(nèi)存不和緩存內(nèi)容同步,但最終要同步。問(wèn)題由來(lái)在計(jì)算機(jī)中,Cache的出現(xiàn)是為了CPU訪(fǎng)問(wèn)內(nèi)存的速度,只有一個(gè)CPU時(shí),不會(huì)出現(xiàn)必將難處理的情況,但是有多個(gè)CPU時(shí),會(huì)出現(xiàn)一個(gè)難解決的問(wèn)題:Cache的一致性如何保證。具體情況是,多組緩存會(huì)共同持有一塊內(nèi)存的內(nèi)容,如果某一緩存修改了這塊內(nèi)存的內(nèi)容,那么其它緩存中就不知道這個(gè)情況,就會(huì)造成緩存的不一致問(wèn)題,想要解決問(wèn)題,如果讓多個(gè)CPU公用一個(gè)緩存,每當(dāng)有指令時(shí),讓這些CPU一個(gè)一個(gè)執(zhí)行
5、指令,所以每次只有一個(gè)CPU在執(zhí)行指令,雖然這樣可以解決緩存不一致問(wèn)題,但這樣會(huì)太浪費(fèi)時(shí)間,效率太低,問(wèn)題的根源在于有多組緩存,而上面的方法是一組緩存,所以如果將多組緩存看成一組緩存,看似很難實(shí)現(xiàn),但這確實(shí)是可行的,為了實(shí)現(xiàn)這樣的想法,緩存一致性協(xié)議就應(yīng)運(yùn)而生了,這個(gè)協(xié)議就是能夠保證緩存內(nèi)容的一致性,使多核的效率很大地提高。緩存一致性協(xié)議又有好幾種,目前多數(shù)計(jì)算機(jī)都采用的使“窺探(snooping)”協(xié)議,這就是本文的主要講的協(xié)議?!案Q探”機(jī)制窺探一種是緩存中的窺探器監(jiān)視總線(xiàn)事務(wù)的機(jī)制,它的目標(biāo)是為了處理好緩存一致性的問(wèn)題,這個(gè)機(jī)制是Ravishankar和Goodman在1983年提出的。當(dāng)
6、一個(gè)特定的數(shù)據(jù)被多個(gè)緩存共享時(shí),并且有一個(gè)處理器要修改這個(gè)共享數(shù)據(jù),那么必須要通知其它擁有這個(gè)數(shù)據(jù)拷貝的緩存。否則,就會(huì)違背緩存一致性。這個(gè)數(shù)據(jù)更改通知就可以通過(guò)監(jiān)視總線(xiàn)來(lái)完成。所有的監(jiān)視器監(jiān)視總線(xiàn)上的每個(gè)事務(wù),如果總線(xiàn)上有一個(gè)修改共享緩存塊事務(wù),相應(yīng)的監(jiān)視器就會(huì)確保緩存的一致性。所謂的修改也就是在上面有提到兩種寫(xiě)模式,在直寫(xiě)模式下,沒(méi)有問(wèn)題,因?yàn)閷?xiě)操作一執(zhí)行,它的效果是立即顯現(xiàn)的,不會(huì)有停留。但是如果存在回寫(xiě)模式,就會(huì)出現(xiàn)問(wèn)題,因?yàn)橛锌赡茉趯?xiě)指令執(zhí)行過(guò)后很久,才會(huì)觸發(fā)回寫(xiě),數(shù)據(jù)被寫(xiě)回內(nèi)存中去(這是由于回寫(xiě)機(jī)制決定的)在這段時(shí)間內(nèi),就可能會(huì)出現(xiàn)其它處理器的緩存也去寫(xiě)這塊內(nèi)存,這樣就情況就變得不
7、好處理。在回寫(xiě)模型中,如果僅僅把寫(xiě)操作信息通知給其它處理器是不夠的,由于回寫(xiě)機(jī)制會(huì)有時(shí)間延遲,所以我們還要做的是,在修改之前就要通知其它處理器,這樣就可以避免其它處理器也去寫(xiě)這塊內(nèi)存。具體想法有了,人們就提出來(lái)解決這個(gè)問(wèn)題的目前最有效的方案,就是MESI協(xié)議(Modified、Exclusive、Shared、Invalid)。MESI協(xié)議MESI是四種緩存狀態(tài)英文首字母的縮寫(xiě),并且規(guī)定多核體統(tǒng)中的cache line都只處于這四種狀態(tài)。· 已修改(Modified)緩存段,表明cache line對(duì)應(yīng)的memory僅在一個(gè)Cache中被緩存了,而且其在Cache中的緩存與在內(nèi)存中的
8、值也是不一致的!· 獨(dú)占(Exclusive)緩存段,表明cache line對(duì)應(yīng)的memory僅在一個(gè)Cache中被緩存了,并且其在緩存中的內(nèi)容與內(nèi)存中的內(nèi)容一致。· 共享(Shared)緩存段,表明cache line對(duì)應(yīng)的memory在多個(gè)Cache中被緩存了,并且所有緩存中的內(nèi)容與在內(nèi)存中的內(nèi)容一致。· 失效(Invalid)緩存段,表明當(dāng)前緩存段無(wú)效。操作狀態(tài)的轉(zhuǎn)換基于兩個(gè)激發(fā)。第一個(gè)激發(fā)是:處理器本身發(fā)出讀或?qū)懻?qǐng)求,當(dāng)一個(gè)CPU在Cache中有一個(gè)緩存段,并且CPU需要從這個(gè)緩存段中讀或?qū)?。第二個(gè)激發(fā)是:來(lái)自于其它處理器,沒(méi)有該緩存段或者在本Cache
9、里已經(jīng)更新數(shù)據(jù),而在其它處理器中的Cache還沒(méi)有更新。總線(xiàn)請(qǐng)求被“窺探器”一直窺探著。寫(xiě)操作:如果cache line是M或E狀態(tài),那么它只能被寫(xiě)。也即在這兩種狀態(tài)下,處理器是獨(dú)占cache line的,所以不會(huì)有任何沖突。如果是S狀態(tài),必須先發(fā)送Requerst-For-Ownership讓其它Cache中關(guān)聯(lián)到同一內(nèi)存地址的cache line變?yōu)镮狀態(tài)后才能被寫(xiě)。讀操作:一個(gè)緩存中有M狀態(tài)的cache line,必須“窺探”所有內(nèi)存關(guān)聯(lián)Cache的讀操作,并且監(jiān)聽(tīng)到讀操作后,可以使讀操作延遲,然后寫(xiě)回主存并將該cache line置為S狀態(tài)。若是E狀態(tài)的cache line,同樣“窺探
10、”所有內(nèi)存關(guān)聯(lián)Cache的讀操作,并在監(jiān)聽(tīng)到讀操作后將其狀態(tài)有E置為S狀態(tài)。一個(gè)緩存中有S狀態(tài)的cache line,必須監(jiān)聽(tīng)來(lái)自其它緩存的棄用或申請(qǐng)主權(quán)廣播,在收到廣播后棄用該cache line,置其于I狀態(tài)。Read For Ownership是一個(gè)緩存一致性里組合一個(gè)讀和一個(gè)丟棄的廣播的操作。該操作是一個(gè)處理器嘗試寫(xiě)一個(gè)處于S或I狀態(tài)的cache line,這個(gè)操作引起所有其它緩存置這樣的cache line于狀態(tài)I,一個(gè)這個(gè)操作是獨(dú)占的,它給緩存帶來(lái)數(shù)據(jù)并丟棄其它所有的cache line。結(jié)論本文就為解決緩存一致性的MESI協(xié)議進(jìn)行了分析,通過(guò)MESI協(xié)議能夠很好地處理多核情況下緩
11、存一致性的問(wèn)題,是比較好的解決方式,是值得程序員們深入理解的一套協(xié)議。PaperPass檢測(cè)報(bào)告簡(jiǎn)明打印版比對(duì)結(jié)果(相似度):26.13%編號(hào):VIP215649標(biāo)題:計(jì)算機(jī)組成原理cache論文長(zhǎng)度:2611字符(不計(jì)空格)句子數(shù):83句時(shí)間:2016-10-28 21:36:15對(duì)比庫(kù):學(xué)術(shù)期刊、學(xué)位論文、會(huì)議論文、互聯(lián)網(wǎng)資源相似資源列表:1.相似度:11.86%篇名:Cache中被緩存了,并且所有緩存中的內(nèi)容與在內(nèi)存中的內(nèi)容一致。2.相似度:88.89%篇名:MESI協(xié)議3.相似度:6.25%篇名:MESI是四種緩存狀態(tài)英文首字母的縮寫(xiě),并且規(guī)定多核體統(tǒng)中的cache line都只處于這
12、四種狀態(tài)。4.相似度:15.52%篇名:Read For Ownership是一個(gè)緩存一致性里組合一個(gè)讀和一個(gè)丟棄的5.相似度:47.89%篇名:U沒(méi)有管腳直接連到內(nèi)存,所以CPU的讀/寫(xiě)(以及取指令)單元正常情況下不能進(jìn)6.相似度:11.27%篇名:ache的讀操作,并且監(jiān)聽(tīng)到讀操作后,可以使讀操作延遲,然后寫(xiě)回主存并將該cache line置為S狀態(tài)。7.相似度:34.29%篇名:e-through)和回寫(xiě)(write-back)。8.相似度:43.42%篇名:在這段時(shí)間內(nèi),就可能會(huì)出現(xiàn)其它處理器的緩存也去寫(xiě)這塊內(nèi)存,這樣就情況就變得9.相似度:16.67%篇名:“窺探”機(jī)制10.相似度:
13、15.38%篇名:一個(gè)緩存中有S狀態(tài)的cache line,必須來(lái)自其它緩存的監(jiān)聽(tīng)棄用或申請(qǐng)主11.相似度:18.42%篇名:不好處理。在回寫(xiě)模型中,如果僅僅把寫(xiě)操作信息通知給其它處理器是不夠的,由于回12.相似度:19.64%篇名:個(gè)修改共享緩存塊事務(wù),相應(yīng)的監(jiān)視器就會(huì)確保緩存的一致性。13.相似度:18.42%篇名:中的內(nèi)容,并將其標(biāo)記為“臟段”,“臟段”會(huì)在觸發(fā)回寫(xiě),就是將緩存段中的內(nèi)容傳14.相似度:26.15%篇名:僅在一個(gè)Cache中被緩存了,并且其在緩存中的內(nèi)容與內(nèi)存中的內(nèi)容一致。15.相似度:12.12%篇名:僅在一個(gè)Cache中被緩存了,而且其在Cache中的緩存與在內(nèi)存中的
14、值也是不一致的!16.相似度:15.79%篇名:令執(zhí)行過(guò)后很久,才會(huì)觸發(fā)回寫(xiě),數(shù)據(jù)被寫(xiě)回內(nèi)存中去(這是由于回寫(xiě)機(jī)制決定的)17.相似度:17.81%篇名:以每次只有一個(gè)CPU在執(zhí)行指令,雖然這樣可以解決緩存不一致問(wèn)題,但這樣會(huì)太浪費(fèi)時(shí)間,效率太低,18.相似度:8.70%篇名:會(huì)出現(xiàn)必將難處理的情況,但是有多個(gè)CPU時(shí),會(huì)出現(xiàn)一個(gè)難解決的問(wèn)題:Cache的一致性如何保證。19.相似度:29.63%篇名:共享(Shared)緩存段,表明cache line對(duì)應(yīng)的memory在多個(gè)20.相似度:48.28%篇名:關(guān)鍵詞:緩存 一致性 窺探 協(xié)議21.相似度:13.16%篇名:具體情況是,多組緩存會(huì)
15、共同持有一塊內(nèi)存的內(nèi)容,如果某一緩存修改了這塊內(nèi)存的內(nèi)22.相似度:14.06%篇名:寫(xiě)操作:如果cache line是M或E狀態(tài),那么它只能被寫(xiě)。也即在這兩種狀23.相似度:10.53%篇名:寫(xiě)機(jī)制會(huì)有時(shí)間延遲,所以我們還要做的是,在修改之前就要通知其它處理器,這樣就24.相似度:23.53%篇名:決一致性人們提出了一些協(xié)議,這其中比較好的解決方案是MESI協(xié)議,MESI協(xié)25.相似度:3.77%篇名:前最有效的方案,就是MESI協(xié)議(Modified、Exclusive、Shared、Invalid)。26.相似度:21.05%篇名:可以避免其它處理器也去寫(xiě)這塊內(nèi)存。具體想法有了,人們就提
16、出來(lái)解決這個(gè)問(wèn)題的目27.相似度:10.53%篇名:回寫(xiě)模式中,去掉了“任意時(shí)刻”這個(gè)修飾詞,而是以相對(duì)弱化的條件代替它:緩存段28.相似度:13.16%篇名:回寫(xiě)相對(duì)復(fù)雜一些,回寫(xiě)模式下不會(huì)立即把數(shù)據(jù)傳遞給下一級(jí),而是僅僅修改本級(jí)緩存29.相似度:15.79%篇名:在上面有提到兩種寫(xiě)模式,在直寫(xiě)模式下,沒(méi)有問(wèn)題,因?yàn)閷?xiě)操作一執(zhí)行,它的效果是30.相似度:12.31%篇名:在計(jì)算機(jī)中,Cache的出現(xiàn)是為了CPU訪(fǎng)問(wèn)內(nèi)存的速度,只有一個(gè)CPU時(shí),不31.相似度:39.53%篇名:失效(Invalid)緩存段,表明當(dāng)前緩存段無(wú)效。32.相似度:15.71%篇名:如果讓多個(gè)CPU公用一個(gè)緩存,每當(dāng)
17、有指令時(shí),讓這些CPU一個(gè)一個(gè)執(zhí)行指令,所33.相似度:33.33%篇名:如果進(jìn)行寫(xiě)操作,情況就會(huì)變得復(fù)雜些,一般分為兩種基本的寫(xiě)模式:直寫(xiě)(writ34.相似度:7.89%篇名:如果進(jìn)行的是讀操作,這就很簡(jiǎn)單,所有級(jí)別的緩存都遵循以下規(guī)律:在任意時(shí)刻,任35.相似度:16.13%篇名:存中,也就是說(shuō)可以允許關(guān)聯(lián)內(nèi)存不和緩存內(nèi)容同步,但最終要同步。36.相似度:13.16%篇名:容,那么其它緩存中就不知道這個(gè)情況,就會(huì)造成緩存的不一致問(wèn)題,想要解決問(wèn)題,37.相似度:38.46%篇名:已修改(Modified)緩存段,表明cache line對(duì)應(yīng)的memory38.相似度:34.21%篇名:干
18、凈時(shí),緩存段的內(nèi)容和內(nèi)存一致;緩存段是臟段時(shí),緩存段中的內(nèi)容最終要回寫(xiě)到內(nèi)39.相似度:31.25%篇名:廣播的操作。該操作是一個(gè)處理器嘗試寫(xiě)一個(gè)處于S或I狀態(tài)的cache line40.相似度:14.47%篇名:當(dāng)一個(gè)特定的數(shù)據(jù)被多個(gè)緩存共享時(shí),并且有一個(gè)處理器要修改這個(gè)共享數(shù)據(jù),那么必41.相似度:100.00%篇名:必須先發(fā)送Requerst-For-Ownership讓其它Cache中關(guān)聯(lián)42.相似度:27.69%篇名:態(tài)下,處理器是獨(dú)占cache line的,所以不會(huì)有任何沖突。如果是S狀態(tài),43.相似度:18.75%篇名:總線(xiàn)請(qǐng)求被“窺探器”一直窺探著。44.相似度:59.26%篇
19、名:意級(jí)別緩存中的緩存段的內(nèi)容,等同于它關(guān)聯(lián)內(nèi)存中的內(nèi)容。45.相似度:60.53%篇名:我們提到”緩存段”的時(shí)候,就是指一段和緩存大小對(duì)齊的內(nèi)存,而不關(guān)心里面的內(nèi)容46.相似度:65.79%篇名:據(jù)緩存,一級(jí)數(shù)據(jù)緩存會(huì)檢查它是否有這個(gè)內(nèi)存地址對(duì)應(yīng)的緩存段,沒(méi)有的話(huà),它會(huì)把對(duì)應(yīng)的緩存段加載進(jìn)來(lái)。47.相似度:40.00%篇名:摘要:隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,CPU時(shí)計(jì)算機(jī)組成的核心部分,提高CPU的性48.相似度:43.84%篇名:是否真正被緩存進(jìn)去。當(dāng)CPU看到一條讀內(nèi)存指令時(shí),它會(huì)把內(nèi)存地址傳遞給一級(jí)數(shù)49.相似度:20.37%篇名:是獨(dú)占的,它給緩存帶來(lái)數(shù)據(jù)并丟棄所有其它的cache l
20、ine。50.相似度:39.47%篇名:更新緩存中的內(nèi)容,同樣遵循前面的定律:緩存中的段永遠(yuǎn)和它關(guān)聯(lián)內(nèi)存的內(nèi)容匹配。51.相似度:16.18%篇名:本文就為解決緩存一致性的MESI協(xié)議進(jìn)行了分析,通過(guò)MESI協(xié)議能夠很好地處52.相似度:3.92%篇名:權(quán)廣播,在收到廣播后棄用該cache line,置其于I狀態(tài)。53.相似度:10.81%篇名:段,并且CPU需要從這個(gè)緩存段中讀或?qū)憽?4.相似度:16.67%篇名:狀態(tài)的轉(zhuǎn)換基于兩個(gè)激發(fā)。55.相似度:37.25%篇名:獨(dú)占(Exclusive)緩存段,表明cache line對(duì)應(yīng)的memory56.相似度:21.13%篇名:現(xiàn)代的CPU上,
21、大部分都需要通過(guò)緩存來(lái)進(jìn)行內(nèi)存訪(fǎng)問(wèn),由于物理架構(gòu)的原因,CP57.相似度:21.05%篇名:理多核情況下緩存一致性的問(wèn)題,是比較好的解決方式,是值得程序員們深入理解的一套協(xié)議。58.相似度:32.89%篇名:直寫(xiě)簡(jiǎn)單一點(diǎn):透過(guò)緩存,直接把數(shù)據(jù)寫(xiě)到下一級(jí)內(nèi)存中,如果對(duì)應(yīng)的段被緩存了,就59.相似度:28.95%篇名:看似很難實(shí)現(xiàn),但這確實(shí)是可行的,為了實(shí)現(xiàn)這樣的想法,緩存一致性協(xié)議就應(yīng)運(yùn)而生了,60.相似度:17.11%篇名:知就可以通過(guò)監(jiān)視總線(xiàn)來(lái)完成。所有的監(jiān)視器監(jiān)視總線(xiàn)上的每個(gè)事務(wù),如果總線(xiàn)上有一61.相似度:7.89%篇名:窺探一種是緩存中的窺探器監(jiān)視總線(xiàn)事務(wù)的機(jī)制,它的目標(biāo)是為了處理好緩
22、存一致性的62.相似度:10.53%篇名:立即顯現(xiàn)的,不會(huì)有停留。但是如果存在回寫(xiě)模式,就會(huì)出現(xiàn)問(wèn)題,因?yàn)橛锌赡茉趯?xiě)指63.相似度:17.65%篇名:第一個(gè)激發(fā)是:處理器本身發(fā)出讀或?qū)懻?qǐng)求,當(dāng)一個(gè)CPU在Cache中有一個(gè)緩存64.相似度:7.04%篇名:第二個(gè)激發(fā)是:來(lái)自于其它處理器,沒(méi)有該緩存段或者在本Cache里已經(jīng)更新數(shù)據(jù)65.相似度:17.65%篇名:緩存一致性協(xié)議又有好幾種,目前多數(shù)計(jì)算機(jī)都采用的使“窺探(snooping)”協(xié)議,這就是本文的主要講的協(xié)議。66.相似度:17.74%篇名:緩存是分段(line)的,即下文要用的“緩存段”(cache line),當(dāng)67.相似度:16
23、.44%篇名:能一直是一個(gè)很重要的課題,所以CPU從單核提高到多核,但是總會(huì)有一些技術(shù)上的68.相似度:18.33%篇名:若是E狀態(tài)的cache line,同樣“窺探”所有內(nèi)存關(guān)聯(lián)Cache的讀操作69.相似度:38.89%篇名:行直接內(nèi)存訪(fǎng)問(wèn)。相反,CPU和一級(jí)緩存通訊,而一級(jí)緩存才能和內(nèi)存通訊 。而現(xiàn)在又大多有了二級(jí)緩存,甚至三級(jí)緩存。70.相似度:10.53%篇名:議通過(guò)監(jiān)視機(jī)制,實(shí)時(shí)監(jiān)視總系的事務(wù),當(dāng)修改某一緩存時(shí),通過(guò)通知其它同樣持有同一內(nèi)容的緩存來(lái)保持緩存的一致性。71.相似度:10.94%篇名:讀操作:一個(gè)緩存中有M狀態(tài)的cache line,必須“窺探”所有內(nèi)存關(guān)聯(lián)C72.相似
24、度:18.42%篇名:這一協(xié)議是目前比較好的解決緩存一致性問(wèn)題的解決方案,本篇文章就這一經(jīng)典協(xié)議做了分析與總結(jié)。73.相似度:20.97%篇名:這個(gè)協(xié)議就是能夠保證緩存內(nèi)容的一致性,使多核的效率很大地提高。74.相似度:21.05%篇名:遞給下一級(jí),然后臟段又變干凈了,即當(dāng)一個(gè)臟段被丟棄了,總是要進(jìn)行一次回寫(xiě),在75.相似度:15.79%篇名:?jiǎn)栴}的根源在于有多組緩存,而上面的方法是一組緩存,所以如果將多組緩存看成一組緩存,76.相似度:21.15%篇名:?jiǎn)栴},這個(gè)機(jī)制是Ravishankar和Goodman在1983年提出的。77.相似度:22.54%篇名:難題需要解決,這其中,Cache的
25、一致性問(wèn)題的解決就推動(dòng)計(jì)算機(jī)多核的發(fā)展,解78.相似度:15.79%篇名:須要通知其它擁有這個(gè)數(shù)據(jù)拷貝的緩存。否則,就會(huì)違背緩存一致性。這個(gè)數(shù)據(jù)更改通79.相似度:19.05%篇名:,并在監(jiān)聽(tīng)到讀操作后將其狀態(tài)有E置為S狀態(tài)。80.相似度:32.43%篇名:,而在其它處理器中的Cache還沒(méi)有更新。81.相似度:15.38%篇名:,這個(gè)操作引起所有其它緩存置這樣的cache line于狀態(tài)I,一個(gè)這個(gè)操作全文簡(jiǎn)明報(bào)告:緩存一致性的解決方案摘要:隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,CPU時(shí)計(jì)算機(jī)組成的核心部分,提高CPU的性能一直是一個(gè)很重要的課題,所以CPU從單核提高到多核,但是總會(huì)有一些技術(shù)上的難題需
26、要解決,這其中,Cache的一致性問(wèn)題的解決就推動(dòng)計(jì)算機(jī)多核的發(fā)展,解決一致性人們提出了一些協(xié)議,這其中比較好的解決方案是MESI協(xié)議,MESI協(xié)議通過(guò)監(jiān)視機(jī)制,實(shí)時(shí)監(jiān)視總系的事務(wù),當(dāng)修改某一緩存時(shí),通過(guò)通知其它同樣持有同一內(nèi)容的緩存來(lái)保持緩存的一致性。這一協(xié)議是目前比較好的解決緩存一致性問(wèn)題的解決方案,本篇文章就這一經(jīng)典協(xié)議做了分析與總結(jié)。關(guān)鍵詞:緩存 一致性 窺探 協(xié)議引言現(xiàn)代的CPU上,大部分都需要通過(guò)緩存來(lái)進(jìn)行內(nèi)存訪(fǎng)問(wèn),由于物理架構(gòu)的原因,CPU沒(méi)有管腳直接連到內(nèi)存,所以CPU的讀/寫(xiě)(以及取指令)單元正常情況下不能進(jìn)行直接內(nèi)存訪(fǎng)問(wèn)。相反,CPU和一級(jí)緩存通訊,而一級(jí)緩存才能和內(nèi)存通訊
27、 。而現(xiàn)在又大多有了二級(jí)緩存,甚至三級(jí)緩存。緩存是分段(line)的,即下文要用的“緩存段”(cache line),當(dāng)我們提到”緩存段”的時(shí)候,就是指一段和緩存大小對(duì)齊的內(nèi)存,而不關(guān)心里面的內(nèi)容是否真正被緩存進(jìn)去。當(dāng)CPU看到一條讀內(nèi)存指令時(shí),它會(huì)把內(nèi)存地址傳遞給一級(jí)數(shù)據(jù)緩存,一級(jí)數(shù)據(jù)緩存會(huì)檢查它是否有這個(gè)內(nèi)存地址對(duì)應(yīng)的緩存段,沒(méi)有的話(huà),它會(huì)把對(duì)應(yīng)的緩存段加載進(jìn)來(lái)。如果進(jìn)行的是讀操作,這就很簡(jiǎn)單,所有級(jí)別的緩存都遵循以下規(guī)律:在任意時(shí)刻,任意級(jí)別緩存中的緩存段的內(nèi)容,等同于它關(guān)聯(lián)內(nèi)存中的內(nèi)容。如果進(jìn)行寫(xiě)操作,情況就會(huì)變得復(fù)雜些,一般分為兩種基本的寫(xiě)模式:直寫(xiě)(write-through)和回
28、寫(xiě)(write-back)。直寫(xiě)簡(jiǎn)單一點(diǎn):透過(guò)緩存,直接把數(shù)據(jù)寫(xiě)到下一級(jí)內(nèi)存中,如果對(duì)應(yīng)的段被緩存了,就更新緩存中的內(nèi)容,同樣遵循前面的定律:緩存中的段永遠(yuǎn)和它關(guān)聯(lián)內(nèi)存的內(nèi)容匹配。回寫(xiě)相對(duì)復(fù)雜一些,回寫(xiě)模式下不會(huì)立即把數(shù)據(jù)傳遞給下一級(jí),而是僅僅修改本級(jí)緩存中的內(nèi)容,并將其標(biāo)記為“臟段”,“臟段”會(huì)在觸發(fā)回寫(xiě),就是將緩存段中的內(nèi)容傳遞給下一級(jí),然后臟段又變干凈了,即當(dāng)一個(gè)臟段被丟棄了,總是要進(jìn)行一次回寫(xiě),在回寫(xiě)模式中,去掉了“任意時(shí)刻”這個(gè)修飾詞,而是以相對(duì)弱化的條件代替它:緩存段干凈時(shí),緩存段的內(nèi)容和內(nèi)存一致;緩存段是臟段時(shí),緩存段中的內(nèi)容最終要回寫(xiě)到內(nèi)存中,也就是說(shuō)可以允許關(guān)聯(lián)內(nèi)存不和緩存內(nèi)
29、容同步,但最終要同步。問(wèn)題由來(lái)在計(jì)算機(jī)中,Cache的出現(xiàn)是為了CPU訪(fǎng)問(wèn)內(nèi)存的速度,只有一個(gè)CPU時(shí),不會(huì)出現(xiàn)必將難處理的情況,但是有多個(gè)CPU時(shí),會(huì)出現(xiàn)一個(gè)難解決的問(wèn)題:Cache的一致性如何保證。具體情況是,多組緩存會(huì)共同持有一塊內(nèi)存的內(nèi)容,如果某一緩存修改了這塊內(nèi)存的內(nèi)容,那么其它緩存中就不知道這個(gè)情況,就會(huì)造成緩存的不一致問(wèn)題,想要解決問(wèn)題,如果讓多個(gè)CPU公用一個(gè)緩存,每當(dāng)有指令時(shí),讓這些CPU一個(gè)一個(gè)執(zhí)行指令,所以每次只有一個(gè)CPU在執(zhí)行指令,雖然這樣可以解決緩存不一致問(wèn)題,但這樣會(huì)太浪費(fèi)時(shí)間,效率太低,問(wèn)題的根源在于有多組緩存,而上面的方法是一組緩存,所以如果將多組緩存看成一組
30、緩存,看似很難實(shí)現(xiàn),但這確實(shí)是可行的,為了實(shí)現(xiàn)這樣的想法,緩存一致性協(xié)議就應(yīng)運(yùn)而生了,這個(gè)協(xié)議就是能夠保證緩存內(nèi)容的一致性,使多核的效率很大地提高。緩存一致性協(xié)議又有好幾種,目前多數(shù)計(jì)算機(jī)都采用的使“窺探(snooping)”協(xié)議,這就是本文的主要講的協(xié)議。“窺探”機(jī)制窺探一種是緩存中的窺探器監(jiān)視總線(xiàn)事務(wù)的機(jī)制,它的目標(biāo)是為了處理好緩存一致性的問(wèn)題,這個(gè)機(jī)制是Ravishankar和Goodman在1983年提出的。當(dāng)一個(gè)特定的數(shù)據(jù)被多個(gè)緩存共享時(shí),并且有一個(gè)處理器要修改這個(gè)共享數(shù)據(jù),那么必須要通知其它擁有這個(gè)數(shù)據(jù)拷貝的緩存。否則,就會(huì)違背緩存一致性。這個(gè)數(shù)據(jù)更改通知就可以通過(guò)監(jiān)視總線(xiàn)來(lái)完成。
31、所有的監(jiān)視器監(jiān)視總線(xiàn)上的每個(gè)事務(wù),如果總線(xiàn)上有一個(gè)修改共享緩存塊事務(wù),相應(yīng)的監(jiān)視器就會(huì)確保緩存的一致性。在上面有提到兩種寫(xiě)模式,在直寫(xiě)模式下,沒(méi)有問(wèn)題,因?yàn)閷?xiě)操作一執(zhí)行,它的效果是立即顯現(xiàn)的,不會(huì)有停留。但是如果存在回寫(xiě)模式,就會(huì)出現(xiàn)問(wèn)題,因?yàn)橛锌赡茉趯?xiě)指令執(zhí)行過(guò)后很久,才會(huì)觸發(fā)回寫(xiě),數(shù)據(jù)被寫(xiě)回內(nèi)存中去(這是由于回寫(xiě)機(jī)制決定的)在這段時(shí)間內(nèi),就可能會(huì)出現(xiàn)其它處理器的緩存也去寫(xiě)這塊內(nèi)存,這樣就情況就變得不好處理。在回寫(xiě)模型中,如果僅僅把寫(xiě)操作信息通知給其它處理器是不夠的,由于回寫(xiě)機(jī)制會(huì)有時(shí)間延遲,所以我們還要做的是,在修改之前就要通知其它處理器,這樣就可以避免其它處理器也去寫(xiě)這塊內(nèi)存。具體想法有了,人們就提出來(lái)解決這個(gè)問(wèn)題的目前最有效的方案,就是MESI協(xié)議(Modified、Exclusive、Shared、Invalid)。MESI協(xié)議MESI是四種緩存狀態(tài)英文首字母的縮寫(xiě),并且規(guī)定多核體統(tǒng)中的cache
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人優(yōu)點(diǎn)總結(jié)20篇
- 下半年個(gè)人工作計(jì)劃
- 中醫(yī)康復(fù)治療技術(shù)模擬練習(xí)題(含參考答案)
- 游泳救生員初級(jí)題庫(kù)與參考答案
- 推拿治療學(xué)試題含答案
- 一通三防工作總結(jié)
- 買(mǎi)房同中介合同范本
- 口罩購(gòu)銷(xiāo)合同范本模板
- 出售混凝土檁條合同范本
- 住宅小區(qū)車(chē)位轉(zhuǎn)讓合同范本
- 2025年棗莊科技職業(yè)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 護(hù)苗行動(dòng)安全教育課件
- 2024年山西同文職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 油品庫(kù)房管理規(guī)定(2篇)
- 礦山工程安全培訓(xùn)課件
- 2025年月度工作日歷含農(nóng)歷節(jié)假日電子表格版
- 2024年長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 2024年精對(duì)苯二甲酸市場(chǎng)分析報(bào)告
- 成人手術(shù)后疼痛評(píng)估與護(hù)理團(tuán)體標(biāo)準(zhǔn)
- 2025年中考數(shù)學(xué)二輪專(zhuān)題復(fù)習(xí) 題型四-二次函數(shù)圖象與性質(zhì)綜合題
- 【數(shù)學(xué)】一元一次方程的應(yīng)用第2課時(shí)盈不足問(wèn)題課件-2024-2025學(xué)年北師大版數(shù)學(xué)七年級(jí)上冊(cè)
評(píng)論
0/150
提交評(píng)論