欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

讀缺失時(shí)的處理方法、設(shè)備和系統(tǒng)的制作方法

文檔序號(hào):6493622閱讀:307來(lái)源:國(guó)知局
讀缺失時(shí)的處理方法、設(shè)備和系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明提供一種讀缺失時(shí)的處理方法、設(shè)備和系統(tǒng)。該方法包括第一處理器產(chǎn)生地址信息,所述地址信息中包含Cache?Tag;所述第一處理器在確定出存在第一Cache?Line時(shí),獲取所述第一Cache?Line中記錄的第二處理器的信息,所述第一Cache?Line的Tag與所述Cache?Tag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài);所述第一處理器根據(jù)所述第二處理器的信息,向所述第二處理器單播發(fā)送總線讀事務(wù),使得所述第二處理器在存儲(chǔ)有效的所述第一CacheLine的數(shù)據(jù)副本時(shí),提供所述第一Cache?Line的數(shù)據(jù)。本發(fā)明實(shí)施例可以降低讀缺失時(shí)的功耗開(kāi)銷(xiāo)。
【專(zhuān)利說(shuō)明】讀缺失時(shí)的處理方法、設(shè)備和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)技術(shù),尤其涉及一種讀缺失時(shí)的處理方法、設(shè)備和系統(tǒng)。
【背景技術(shù)】
[0002]高速緩沖存儲(chǔ)器(Cache)是在計(jì)算機(jī)存儲(chǔ)系統(tǒng)的層次結(jié)構(gòu)中,介于處理器和存儲(chǔ)器之間的高速小容量存儲(chǔ)器。Cache —般由很多高速緩沖存儲(chǔ)器線(Cache Line)構(gòu)成,每條Cache Line是Cache中的一個(gè)獨(dú)立的條目。
[0003]在讀操作時(shí),Cache會(huì)接收地址信息,并將地址信息中的高速緩沖寄存器標(biāo)簽(Cache Tag)與Cache Line中的標(biāo)簽(Tag)進(jìn)行比較,當(dāng)不存在與Cache Tag對(duì)應(yīng)的CacheLine,或者存在但該Cache Line為無(wú)效時(shí),就發(fā)生了讀缺失。
[0004]在發(fā)生讀缺失后,該Cache會(huì)通過(guò)總線向總線上所有的Cache廣播總線讀事務(wù),該總線讀事務(wù)中包含缺失的地址信息,接收到總線讀事務(wù)的Cache也會(huì)進(jìn)行Tag比較,并在存在該地址信息對(duì)應(yīng)的有效數(shù)據(jù)時(shí),對(duì)該總線讀事務(wù)進(jìn)行響應(yīng),向缺失的Cache提供該有效數(shù)據(jù)。
[0005]從上述描述可以看出,當(dāng)發(fā)生上述讀缺失時(shí),現(xiàn)有技術(shù)是采用廣播的方式,總線上的所有接收到總線讀事務(wù)的Cache都需要進(jìn)行Tag比較,功耗開(kāi)銷(xiāo)較大。

【發(fā)明內(nèi)容】

[0006]有鑒于此,本發(fā)明實(shí)施例提供了一種讀缺失時(shí)的處理方法、設(shè)備和系統(tǒng),用以解決現(xiàn)有技術(shù)中存在的讀缺失的功耗開(kāi)銷(xiāo)較大的問(wèn)題。
[0007]第一方面,提供了一種讀缺失時(shí)的處理方法,包括:
[0008]第一處理器產(chǎn)生地址信息,所述地址信息中包含Cache Tag ;
[0009]所述第一處理器在確定出存在第一 Cache Line時(shí),獲取所述第一 CacheLine中記錄的第二處理器的信息,所述第一 Cache Line的Tag與所述CacheTag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài);
[0010]所述第一處理器根據(jù)所述第二處理器的信息,向所述第二處理器單播發(fā)送總線讀事務(wù),使得所述第二處理器在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),提供所述第一 Cache Line 的數(shù)據(jù)。
[0011]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,還包括:
[0012]所述第一處理器在所述第一 Cache Line的狀態(tài)位為無(wú)效狀態(tài)后,在所述第一Cache Line中記錄第二處理器的信息,所述第二處理器為最近一次存儲(chǔ)所述第一 CacheLine的數(shù)據(jù)副本的處理器。
[0013]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述第二處理器的信息記錄在所述第一 Cache Line的數(shù)據(jù)區(qū)。
[0014]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,還包括:[0015]所述第一處理器接收所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),其中,當(dāng)所述第二處理器存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí)所述總線讀事務(wù)響應(yīng)中包含所述第一 Cache Line的數(shù)據(jù),或者,當(dāng)所述第一處理器沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),所述總線讀事務(wù)響應(yīng)用于指示所第一處理器在總線上廣播發(fā)送總線讀事務(wù);或者,
[0016]所述第一處理器在設(shè)定時(shí)間內(nèi)沒(méi)有收到所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),則在總線上廣播發(fā)送總線讀事務(wù),所述讀事務(wù)響應(yīng)在所述第二處理器沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí)不發(fā)送。
[0017]第二方面,提供了一種讀缺失時(shí)的處理方法,包括:
[0018]第二處理器接收第一處理器單播發(fā)送的總線讀事務(wù),所述總線讀事務(wù)是所述第一處理器根據(jù)第一 Cache Line中記錄的第二處理器的信息發(fā)送的,所述第一 Cache Line的Tag與所述第一處理器產(chǎn)生的地址信息中的Cache Tag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài);
[0019]所述第二處理器在存儲(chǔ)有效的所述第一Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器提供所述第一 Cache Line的數(shù)據(jù)。
[0020]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,還包括:
[0021]所述第二處理器在沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器發(fā)送用于指示所述第一處理器在總線上廣播總線讀事務(wù)的總線讀事務(wù)響應(yīng);或者,
[0022]所述第二處理器在沒(méi)有存儲(chǔ)有效的所述第一Cache Line的數(shù)據(jù)副本時(shí),不發(fā)送總線讀事務(wù)響應(yīng),使得所述第一處理器在設(shè)定時(shí)間內(nèi)沒(méi)有收到所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),在總線上廣播發(fā)送總線讀事務(wù)。
[0023]第三方面,提供了一種讀缺失時(shí)的處理設(shè)備,包括:
[0024]產(chǎn)生模塊,用于產(chǎn)生地址信息,所述地址信息中包含Cache Tag ;
[0025]獲取模塊,用于在確定出存在第一 Cache Line時(shí),獲取所述第一 CacheLine中記錄的第二處理器的信息,所述第一 Cache Line的Tag與所述CacheTag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài);
[0026]發(fā)送模塊,用于根據(jù)所述第二處理器的信息,向所述第二處理器單播發(fā)送總線讀事務(wù),使得所述第二處理器在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),提供所述第一 Cache Line 的數(shù)據(jù)。
[0027]結(jié)合第三方面,在第三方面的第一種可能的實(shí)現(xiàn)方式中,還包括:
[0028]記錄模塊,用于在所述第一 Cache Line的狀態(tài)位為無(wú)效狀態(tài)后,在所述第一 CacheLine中記錄第二處理器的信息,所述第二處理器為最近一次存儲(chǔ)所述第一 Cache Line的數(shù)據(jù)副本的處理器。
[0029]結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式,在第三方面的第二種可能的實(shí)現(xiàn)方式中,所述第二處理器的信息記錄在所述第一 Cache Line的數(shù)據(jù)區(qū)。
[0030]結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式,在第三方面的第三種可能的實(shí)現(xiàn)方式中,還包括:
[0031]接收模塊,用于接收所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),其中,當(dāng)所述第二處理器存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí)所述總線讀事務(wù)響應(yīng)中包含所述第一Cache Line的數(shù)據(jù),或者,當(dāng)所述第一處理器沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),所述總線讀事務(wù)響應(yīng)用于指示所第一處理器在總線上廣播發(fā)送總線讀事務(wù);或者,
[0032]廣播模塊,用于在設(shè)定時(shí)間內(nèi)沒(méi)有收到所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),則在總線上廣播發(fā)送總線讀事務(wù),所述讀事務(wù)響應(yīng)在所述第二處理器沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí)不發(fā)送。
[0033]第四方面,提供了一種讀缺失時(shí)的處理設(shè)備,包括:
[0034]接收模塊,用于接收第一處理器單播發(fā)送的總線讀事務(wù),所述總線讀事務(wù)是所述第一處理器根據(jù)第一 Cache Line中記錄的第二處理器的信息發(fā)送的,所述第一Cache Line的Tag與所述第一處理器產(chǎn)生的地址信息中的CacheTag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài);
[0035]發(fā)送模塊,用于在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器提供所述第一 Cache Line的數(shù)據(jù)。
[0036]結(jié)合第四方面,在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述發(fā)送模塊還用于:
[0037]在沒(méi)有存儲(chǔ)有效的所述第一Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器發(fā)送用于指示所述第一處理器在總線上廣播總線讀事務(wù)的總線讀事務(wù)響應(yīng);或者,
[0038]在沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),不發(fā)送總線讀事務(wù)響應(yīng),使得所述第一處理器在設(shè)定時(shí)間內(nèi)沒(méi)有收到所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),在總線上廣播發(fā)送總線讀事務(wù)。
[0039]第五方面,提供了一種讀缺失時(shí)的處理系統(tǒng),包括:
[0040]第三方面任一種設(shè)備;以及,
[0041]第四方面任一種設(shè)備。
[0042]通過(guò)上述技術(shù)方案,在Cache Line中記錄最近一次存儲(chǔ)其副本的處理器的信息,在讀缺失時(shí)根據(jù)該處理器的信息向?qū)?yīng)的處理器單播發(fā)送總線廣播事務(wù),可以避免廣播發(fā)送方式引起的問(wèn)題,降低功耗開(kāi)銷(xiāo)。
【專(zhuān)利附圖】

【附圖說(shuō)明】
[0043]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0044]圖1為本發(fā)明實(shí)施例中的Cache的基本結(jié)構(gòu)示意圖;
[0045]圖2為本發(fā)明讀缺失時(shí)的處理方法一實(shí)施例的流程示意圖;
[0046]圖3為本發(fā)明讀缺失時(shí)的處理方法另一實(shí)施例的流程示意圖;
[0047]圖4為本發(fā)明讀缺失時(shí)的處理方法另一實(shí)施例的流程示意圖;
[0048]圖5為本發(fā)明讀缺失時(shí)的處理方法另一實(shí)施例的流程示意圖;
[0049]圖6為本發(fā)明實(shí)施例中本地處理器存儲(chǔ)器讀寫(xiě)操作引起的Cache Line的MSI狀態(tài)變化圖;
[0050]圖7為本發(fā)明實(shí)施例中總線上的處理器存儲(chǔ)器讀寫(xiě)操作引起的CacheLine的MSI狀態(tài)變化圖;
[0051]圖8為本發(fā)明讀缺失時(shí)的處理設(shè)備一實(shí)施例的結(jié)構(gòu)示意圖;
[0052]圖9為本發(fā)明讀缺失時(shí)的處理設(shè)備另一實(shí)施例的結(jié)構(gòu)示意圖;
[0053]圖10為本發(fā)明讀缺失時(shí)的處理設(shè)備另一實(shí)施例的結(jié)構(gòu)示意圖;
[0054]圖11為本發(fā)明讀缺失時(shí)的處理設(shè)備另一實(shí)施例的結(jié)構(gòu)示意圖;
[0055]圖12為本發(fā)明讀缺失時(shí)的處理系統(tǒng)一實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0056]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0057]如圖1所示,為Cache的基本結(jié)構(gòu)示意圖,Cache的地址信息包括高速緩沖存儲(chǔ)器標(biāo)簽(Cache Tag)、高速緩沖存儲(chǔ)器索引(Cache index)和偏移量(offset)三個(gè)部分。其中,Cache index用于索引某條Cache Line在Cache中的位置。一條Cache Line包括狀態(tài)位(Valid bit)、標(biāo)簽(Tag)和數(shù)據(jù)(Data)三部分。假設(shè)Cache擁有w路(way),那么一個(gè)Cache index 可以同時(shí)得到 w 個(gè) Cache Line,這 w 個(gè) Cache Line 組成一個(gè)組(Cache set)。這時(shí)就需要將Cache Tag與Cache Line中的Tag比較,若數(shù)值相等則Cache命中,通過(guò)多路選擇器(MUX)輸出該命中的Cache Line的數(shù)據(jù)。其中,由于Cache Tag與Cache Line中的Tag位數(shù)可能不同,因此在比較時(shí)Cache Tag可以經(jīng)過(guò)旁路轉(zhuǎn)換緩沖(TranslationLookaside Buffer, TLB)轉(zhuǎn)換為與Cache Line中的Tag位數(shù)一致以進(jìn)行比較兩者數(shù)值是否相同。
[0058]Cache能夠大量減少單個(gè)處理器對(duì)存儲(chǔ)器帶寬的要求,如果單個(gè)處理器對(duì)存儲(chǔ)器的帶寬要求減少了,多個(gè)處理器就能共享同一個(gè)存儲(chǔ)器。共享存儲(chǔ)器系統(tǒng)支持共享和私有數(shù)據(jù)的緩存,私有數(shù)據(jù)被單個(gè)處理器使用,而共享數(shù)據(jù)被多個(gè)處理器使用。因?yàn)閮蓚€(gè)不同的處理器所存儲(chǔ)的存儲(chǔ)器視圖是通過(guò)各自的Cache得到的,如果沒(méi)有其他的防范措施,當(dāng)其中一個(gè)處理器在其Cache中更改了共享數(shù)據(jù)的值,而另外一個(gè)處理器仍保留原共享數(shù)據(jù)時(shí),則導(dǎo)致兩個(gè)處理器分別得到兩個(gè)不同的值,這就是Cache —致性問(wèn)題。
[0059]在多處理器系統(tǒng)中實(shí)現(xiàn)寫(xiě)無(wú)效協(xié)議的關(guān)鍵是使用總線或其他廣播媒介來(lái)完成無(wú)效操作。要實(shí)現(xiàn)無(wú)效操作,處理器只要取得總線控制權(quán)然后在總線上廣播無(wú)效數(shù)據(jù)的地址即可(總線寫(xiě)無(wú)效事務(wù))。所有的處理器都要不斷地監(jiān)聽(tīng)總線來(lái)監(jiān)測(cè)地址。處理器要檢查各自的Cache中是否有總線上廣播的地址。如果有,則Cache中相應(yīng)的數(shù)據(jù)要置為無(wú)效。
[0060]當(dāng)一個(gè)處理器發(fā)生讀缺失時(shí),它會(huì)在總線上廣播缺失數(shù)據(jù)的地址(總線讀事務(wù))。所有的處理器都要不斷地監(jiān)聽(tīng)總線來(lái)監(jiān)測(cè)地址。處理器要檢查各自的Cache中是否有總線上廣播的地址。如果有,則對(duì)總線讀事務(wù)做出響應(yīng),提供這個(gè)Cache Line。
[0061]當(dāng)一個(gè)處理器發(fā)生寫(xiě)缺失時(shí),它會(huì)在總線上廣播缺失數(shù)據(jù)的地址(總線互斥讀事務(wù))。所有的處理器都要不斷地監(jiān)聽(tīng)總線來(lái)監(jiān)測(cè)地址。處理器要檢查各自的Cache中是否有總線上廣播的地址。如果有,則對(duì)總線互斥讀事務(wù)做出響應(yīng),提供這個(gè)Cache Line,并將本地副本置為無(wú)效。[0062]不僅是上述的無(wú)效性協(xié)議,現(xiàn)有的一致性協(xié)議在發(fā)生Cache讀缺失時(shí)也是需要廣播總線讀事務(wù)。為了解決廣播引起的功耗開(kāi)銷(xiāo)較大的問(wèn)題,本發(fā)明給出如下實(shí)施例。
[0063]圖2為本發(fā)明讀缺失時(shí)的處理方法一實(shí)施例的流程示意圖,包括:
[0064]21:第一處理器產(chǎn)生地址信息,所述地址信息中包含高速緩沖存儲(chǔ)器標(biāo)簽(CacheTag);
[0065]22:所述第一處理器在確定出存在第一高速緩沖存儲(chǔ)器線(Cache Line)時(shí),獲取所述第一 Cache Line中的第二處理器的信息,所述第一 Cache Line的標(biāo)簽(Tag)與所述Cache Tag的數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài);
[0066]23:所述第一處理器根據(jù)所述第二處理器的信息,向所述第二處理器單播發(fā)送總線讀事務(wù),使得所述第二處理器在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器提供所述第一 Cache Line的數(shù)據(jù)。
[0067]上述的第一處理器可以是指任意一個(gè)要發(fā)起總線讀事務(wù)的處理器。
[0068]可選的,如圖3所示,在讀取第一Cache Line中記錄的處理器的信息之前,以在21之前為例,該方法還可以包括:
[0069]31:所述第一處理器在第一 Cache Line的狀態(tài)位為無(wú)效狀態(tài)后,在所述第一Cache Line中記錄第二處理器的信息,所述第二處理器為最近一次存儲(chǔ)所述第一 CacheLine的數(shù)據(jù)副本的處理器。
[0070]可選的,第二處理器的信息可以是記錄在第一 Cache Line的數(shù)據(jù)區(qū)(data)。
[0071]相應(yīng)的,參見(jiàn)圖4,第二處理器執(zhí)行的流程可以如下:
[0072]41:第二處理器接收第一處理器單播發(fā)送的總線讀事務(wù),所述總線讀事務(wù)是所述第一處理器根據(jù)第一Cache Line中記錄的第二處理器的信息發(fā)送的,所述第一Cache Line的Tag與所述第一處理器產(chǎn)生的地址信息中的CacheTag的數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài);
[0073]42:所述第二處理器在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器提供所述第一 Cache Line的數(shù)據(jù)。
[0074]本實(shí)施例通過(guò)在Cache Line中記錄最近一次存儲(chǔ)其副本的處理器的信息,在讀缺失時(shí)根據(jù)該處理器的信息向?qū)?yīng)的處理器單播發(fā)送總線廣播事務(wù),可以避免廣播發(fā)送方式引起的問(wèn)題,降低功耗開(kāi)銷(xiāo)。
[0075]圖5為本發(fā)明讀缺失時(shí)的處理方法另一實(shí)施例的流程示意圖,包括:
[0076]51:第一處理器產(chǎn)生讀地址。
[0077]該讀地址的結(jié)構(gòu)可以參見(jiàn)圖1,包括Cache Tag、Cache index和offset。
[0078]52:第一處理器根據(jù)該讀地址的索引(Cache index)找到相應(yīng)的Cache Set。
[0079]例如,參見(jiàn)圖1,一個(gè) Cache index 可以找到 w 條 Cache Line,該 w 條 Cache Line組成一個(gè) Cache Set。
[0080]53:第一處理器判斷是否存在匹配的Tag,若是,執(zhí)行54,否則,執(zhí)行59。
[0081]可以將讀地址中的Cache Tag與Cache Set中的每條Cache Line的Tag進(jìn)行比較,如果存在數(shù)值相同的Cache Set和Tag,就表明存儲(chǔ)匹配的Tag,否則不存在。
[0082]54:第一處理器判斷Tag匹配的Cache line狀態(tài)位是否有效,若是,執(zhí)行55,否則執(zhí)行56。[0083]其中,當(dāng)一個(gè)Cache Line 的 Tag 與 Cache Tag 相同時(shí),該 Cache Line 就是 Tag 匹配的 Cache Line。
[0084]如圖1所示,Cache Line包括狀態(tài)位(Valid bit),該狀態(tài)位用于表明是否為有效狀態(tài),例如該Valid bit=l,則表明有效,當(dāng)Valid bit=0則表明無(wú)效。
[0085]55:讀命中,之后第一處理器可以將該數(shù)據(jù)讀出。
[0086]56:從該Tag匹配的Cache line的數(shù)據(jù)區(qū)讀取處理器的編號(hào),該處理器可以稱(chēng)為第二處理器,是最近一次存儲(chǔ)該Cache Line的數(shù)據(jù)副本的處理器,并向該第二處理器單播發(fā)送總線讀事務(wù)。
[0087]其中,對(duì)于Cache Line,當(dāng)其狀態(tài)位表明其為無(wú)效后,例如Valid bit=0后,該Cache Line的數(shù)據(jù)區(qū)中除了記錄寫(xiě)入的數(shù)據(jù)之外,還需要記錄修改該Cache Line數(shù)據(jù)的處理器的信息,并且在處理器每修改一次就更新一次。當(dāng)一個(gè)處理器在修改Cache Line的數(shù)據(jù)時(shí),可以首先將該Cache Line的數(shù)據(jù)存儲(chǔ)在該處理器中,也就是該處理器中會(huì)存儲(chǔ)該Cache Line的數(shù)據(jù)副本。
[0088]由于每次修改Cache Line中都會(huì)記錄相應(yīng)處理器的信息,因此,該CacheLine的數(shù)據(jù)區(qū)可以記錄最近一次修改其數(shù)據(jù)的處理器的信息,也就是最近一次存儲(chǔ)其數(shù)據(jù)副本的處理器的信息,例如處理器的編號(hào)。
[0089]57:第二處理器接收到總線讀事務(wù)后,判斷是否包含有效的副本,該副本是對(duì)應(yīng)Cache Line的數(shù)據(jù)副本,若是,執(zhí)行58,否則執(zhí)行59。
[0090]其中,接收到總線讀事務(wù)的處理器也可以首先比較Cache Tag,找到匹配的CacheLine后,如果該Cache Line的狀態(tài)位為有效,則表明包含有效的對(duì)應(yīng)Cache Line的副本,否則沒(méi)有有效的副本。
[0091]58:第二處理器向第一處理器提供Cache Line數(shù)據(jù)。
[0092]第二處理器可以向第一處理器發(fā)送總線讀事務(wù)響應(yīng),該響應(yīng)中攜帶有效的對(duì)應(yīng)Cache Line的數(shù)據(jù)副本,也就是提供了 Cache Line數(shù)據(jù)。
[0093]59:第一處理器廣播發(fā)送總線讀事務(wù)。也就是執(zhí)行現(xiàn)有的Cache讀缺失流程。
[0094]其中,該廣播的總線讀事務(wù)可以是第一處理器判斷出不存在匹配的Tag時(shí),直接廣播的;或者,
[0095]也可以是,當(dāng)?shù)诙幚砥髦胁淮嬖谟行У腃ache Line的數(shù)據(jù)副本時(shí),第二處理器向第一處理器發(fā)送總線讀事務(wù)響應(yīng),該響應(yīng)表明第二處理器中不存在有效的Cache Line的數(shù)據(jù)副本或其它指示信息,以觸發(fā)第一處理器廣播總線讀事務(wù)。或者,
[0096]也可以是,當(dāng)?shù)诙幚砥髦胁淮嬖谟行У腃ache Line的數(shù)據(jù)副本時(shí),第二處理器不進(jìn)行響應(yīng),當(dāng)?shù)谝惶幚砥髟谠O(shè)定的時(shí)間內(nèi)沒(méi)有收到響應(yīng)時(shí),就廣播發(fā)送總線讀事務(wù)。
[0097]經(jīng)過(guò)上述處理,下面以修改共享無(wú)效(Modified Shared Invalid, MSI)協(xié)議為例說(shuō)明Cache的狀態(tài)變化情況。
[0098]寫(xiě)無(wú)效協(xié)議是指在處理器寫(xiě)數(shù)據(jù)之前保證該處理器能獨(dú)占地訪問(wèn)數(shù)據(jù)項(xiàng),它在執(zhí)行寫(xiě)操作時(shí)要使其它副本無(wú)效。MSI協(xié)議是一種寫(xiě)無(wú)效協(xié)議,它利用三個(gè)狀態(tài)來(lái)區(qū)別CacheLine的狀態(tài),分別為:
[0099]M:已修改狀態(tài)。該狀態(tài)表明:該Cache Line已被處理器修改過(guò),其中的數(shù)據(jù)是系統(tǒng)中唯一正確的數(shù)據(jù),主存中的相應(yīng)數(shù)據(jù)是過(guò)時(shí)的,其它Cache中該Cache Line的副本也都是無(wú)效的。
[0100]S:共享狀態(tài)。該狀態(tài)表明:其它Cache中也可能有該Cache Line的有效副本。
[0101]1:無(wú)效狀態(tài)。該狀態(tài)表明:該Cache Line中的數(shù)據(jù)無(wú)效。
[0102]其中,當(dāng)Cache Line處于M或S狀態(tài)時(shí),相應(yīng)的狀態(tài)位(valid bit)的數(shù)值是1,表明處于有效狀態(tài);當(dāng)Cache Line處于I狀態(tài)時(shí),相應(yīng)的狀態(tài)位(validbit)的數(shù)值是O,表明處于無(wú)效狀態(tài)。
[0103]Cache Line的MSI狀態(tài)除了受到本地處理器存儲(chǔ)器讀寫(xiě)操作的影響之外,還受到共享總線上其它處理器存儲(chǔ)器讀寫(xiě)操作的影響。
[0104]參見(jiàn)圖6,給出了本地處理器存儲(chǔ)器讀寫(xiě)操作對(duì)Cache Line的MSI狀態(tài)的影響。其中,讀命中時(shí),Cache Line的狀態(tài)只可能是M或S狀態(tài),此時(shí)不必發(fā)送總線事務(wù),由Cache提供數(shù)據(jù),Cache Line的狀態(tài)不變。
[0105]讀缺失時(shí),可能是因?yàn)橐L問(wèn)的數(shù)據(jù)不在Cache中,也就是Tag不匹配時(shí),或者,讀缺失也可能是因?yàn)橐L問(wèn)的數(shù)據(jù)在Cache中但處于無(wú)效狀態(tài),此時(shí)需要發(fā)送總線讀事務(wù),取得數(shù)據(jù)并將Cache Line的狀態(tài)置為S狀態(tài)。
[0106]寫(xiě)命中時(shí),若命中的是處于M狀態(tài)的Cache Line,則直接更新該CacheLine, CacheLine的狀態(tài)不變;若寫(xiě)命中處于S狀態(tài)的Cache Line,則需發(fā)送總線寫(xiě)無(wú)效事務(wù)廣播,使其他Cache中該數(shù)據(jù)塊的副本無(wú)效,然后更新該CacheLine,Cache Line的狀態(tài)變?yōu)镸狀態(tài)。
[0107]寫(xiě)缺失時(shí),可能是因?yàn)橐L問(wèn)的數(shù)據(jù)不在Cache中,也可能是因?yàn)橐L問(wèn)的數(shù)據(jù)在Cache中,但處于無(wú)效狀態(tài),此時(shí)需要發(fā)送總線互斥讀事務(wù)廣播,取得數(shù)據(jù)并更新,將Cache Line置為M狀態(tài)。
[0108]與現(xiàn)有技術(shù)不同的是,現(xiàn)有技術(shù)不論是上述兩種哪種讀缺失,都會(huì)廣播總線讀事務(wù),而本發(fā)明實(shí)施例中,當(dāng)要訪問(wèn)的數(shù)據(jù)在Cache中但處于無(wú)效狀態(tài)引起的讀缺失時(shí),將單播總線讀事務(wù)。單播的目的處理器就是上述的CacheLine的數(shù)據(jù)區(qū)記錄的處理器。
[0109]參見(jiàn)圖7,給出了總線上的處理器存儲(chǔ)器讀寫(xiě)操作對(duì)Cache Line的MSI狀態(tài)的影響。
[0110]當(dāng)本地Cache中不包含有總線讀事務(wù)或總線寫(xiě)事務(wù)所指定的Cache Line時(shí)或雖然包含但該Cache Line處于I狀態(tài)時(shí),本地Cache不作出響應(yīng)或者作出響應(yīng)以觸發(fā)發(fā)送總線讀事務(wù)的處理器廣播總線讀事務(wù)。
[0111]當(dāng)本地Cache中包含有總線讀事務(wù)所指定的Cache Line且該Cache Line處于S狀態(tài)時(shí),本地Cache將響應(yīng)總線讀事務(wù)并提供數(shù)據(jù)。
[0112]當(dāng)本地Cache中包含有總線讀事務(wù)所指定的Cache Line且該Cache Line處于M狀態(tài)時(shí),本地Cache將響應(yīng)總線讀事務(wù)提供數(shù)據(jù),然后將本地Cache Line置為S狀態(tài)。
[0113]當(dāng)本地Cache中包含有總線寫(xiě)無(wú)效事務(wù)所指定的Cache Line時(shí),將該CacheLine狀態(tài)置為無(wú)效。
[0114]當(dāng)本地Cache中包含有總線互斥讀事務(wù)所指定的Cache Line且該CacheLine處于M狀態(tài)時(shí),本地Cache將響應(yīng)總線互斥讀事務(wù)提供數(shù)據(jù),然后將本地Cache Line置為I狀態(tài)。
[0115]與現(xiàn)有技術(shù)不同的是,上述的總線讀事務(wù)是被單播發(fā)送的,而不是現(xiàn)有技術(shù)中的廣播發(fā)送方式。[0116]上面以MSI協(xié)議為例,現(xiàn)有技術(shù)中的修改排外共享無(wú)效(ModifiedExclusiveShared Invalid, MESI)協(xié)議、修改占有排外共享無(wú)效(ModifiedOwned Exclusive SharedInvalid MOESI)協(xié)議等一致性協(xié)議也同樣適用于上述在Tag匹配但數(shù)據(jù)無(wú)效引起的讀缺失時(shí),采用單播發(fā)送的方式。
[0117]圖8為本發(fā)明讀缺失時(shí)的處理設(shè)備一實(shí)施例的結(jié)構(gòu)示意圖,該設(shè)備可以為上述的第一處理器,該設(shè)備80包括產(chǎn)生模塊81、獲取模塊82和單播模塊83 ;產(chǎn)生模塊81用于產(chǎn)生地址信息,所述地址信息中包含Cache Tag ;獲取模塊82用于在確定出存在第一 CacheLine時(shí),獲取所述第一 Cache Line中記錄的第二處理器的信息,所述第一 Cache Line的Tag與所述Cache Tag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài);單播模塊83用于根據(jù)所述第二處理器的信息,向所述第二處理器單播發(fā)送總線讀事務(wù),使得所述第二處理器在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),提供所述第一 Cache Line的數(shù)據(jù)。
[0118]可選的,該設(shè)備還可以包括:
[0119]記錄模塊,用于在所述第一 Cache Line的狀態(tài)位為無(wú)效狀態(tài)后,在所述第一 CacheLine中記錄第二處理器的信息,所述第二處理器為最近一次存儲(chǔ)所述第一 Cache Line的數(shù)據(jù)副本的處理器。
[0120]可選的,所述第二處理器的信息記錄在所述第一 Cache Line的數(shù)據(jù)區(qū)。
[0121]可選的,該設(shè)備還可以包括:
[0122]接收模塊,用于接收所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),其中,當(dāng)所述第二處理器存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí)所述總線讀事務(wù)響應(yīng)中包含所述第一Cache Line的數(shù)據(jù),或者,當(dāng)所述第一處理器沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),所述總線讀事務(wù)響應(yīng)用于指示所第一處理器在總線上廣播發(fā)送總線讀事務(wù);或者,
[0123]廣播模塊,用于在設(shè)定時(shí)間內(nèi)沒(méi)有收到所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),則在總線上廣播發(fā)送總線讀事務(wù),所述讀事務(wù)響應(yīng)在所述第二處理器沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí)不發(fā)送。
[0124]參見(jiàn)圖9,為本發(fā)明實(shí)施例提供的另一種設(shè)備的結(jié)構(gòu)示意圖,該設(shè)備可以為上述的第一處理器,該第一處理器90包括收發(fā)器91、CPU 92、高速緩沖存儲(chǔ)器(Cache) 93、以及與上述各模塊連接的總線94,總線94可以包括數(shù)據(jù)總線、地址總線、狀態(tài)總線等。CPU用于根據(jù)通過(guò)收發(fā)器及總線接收的用戶的輸入產(chǎn)生地址信息,所述地址信息中包含Cache Tag ;并在確定出存在第一 Cache Line時(shí),獲取所述第一 Cache Line中記錄的第二處理器的信息,所述第一 Cache Line的Tag與所述Cache Tag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài)。CPU還可以通過(guò)收發(fā)器以及總線根據(jù)所述第二處理器的信息,向所述第二處理器單播發(fā)送總線讀事務(wù),使得所述第二處理器在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),提供所述第一 Cache Line的數(shù)據(jù)。其中,CacheLine是位于Cache中的??梢岳斫獾氖?處理器中還可以包括其他模塊,如算術(shù)邏輯單元、時(shí)鐘發(fā)生器、比較器、定時(shí)器、復(fù)位電路、調(diào)制器等。
[0125]需要說(shuō)明的是,圖8和圖9所示的設(shè)備可以用于實(shí)現(xiàn)以上方法實(shí)施例所提供的關(guān)于第一處理器的任一種方法,且相關(guān)術(shù)語(yǔ)描述以及相關(guān)實(shí)現(xiàn)方式同以上方法實(shí)施例,在此不再贅述。
[0126]本實(shí)施例通過(guò)在Cache Line中記錄最近一次存儲(chǔ)其副本的處理器的信息,在讀缺失時(shí)根據(jù)該處理器的信息向?qū)?yīng)的處理器單播發(fā)送總線廣播事務(wù),可以避免廣播發(fā)送方式引起的問(wèn)題,降低功耗開(kāi)銷(xiāo)。
[0127]圖10為本發(fā)明讀缺失時(shí)的處理設(shè)備另一實(shí)施例的結(jié)構(gòu)示意圖,該設(shè)備可以為上述的第二處理器,該設(shè)備100包括接收模塊101和發(fā)送模塊102 ;接收模塊101用于接收第一處理器單播發(fā)送的總線讀事務(wù),所述總線讀事務(wù)是所述第一處理器根據(jù)第一 Cache Line中記錄的第二處理器的信息發(fā)送的,所述第一 Cache Line的Tag與所述第一處理器產(chǎn)生的地址信息中的Cache Tag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài);發(fā)送模塊102用于在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器提供所述第一 Cache Line的數(shù)據(jù)。
[0128]可選的,所述發(fā)送模塊還用于:
[0129]在沒(méi)有存儲(chǔ)有效的所述第一Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器發(fā)送用于指示所述第一處理器在總線上廣播總線讀事務(wù)的總線讀事務(wù)響應(yīng);或者,
[0130]在沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),不發(fā)送總線讀事務(wù)響應(yīng),使得所述第一處理器在設(shè)定時(shí)間內(nèi)沒(méi)有收到所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),在總線上廣播發(fā)送總線讀事務(wù)。
[0131]參見(jiàn)圖11,為本發(fā)明實(shí)施例提供的另一種設(shè)備的結(jié)構(gòu)示意圖,該設(shè)備可以為上述的第二處理器,該第二處理器110包括收發(fā)器IlUCPU 112、高速緩沖存儲(chǔ)器(Cache) 113、以及與上述各模塊連接的總線114,總線114可以包括數(shù)據(jù)總線、地址總線、狀態(tài)總線等。收發(fā)器用于接收第一處理器單播發(fā)送的總線讀事務(wù),所述總線讀事務(wù)是所述第一處理器根據(jù)第一 Cache Line中記錄的第二處理器的信息發(fā)送的,所述第一 Cache Line的Tag與所述第一處理器產(chǎn)生的地址信息中的Cache Tag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài);以及,用于在通過(guò)CPU判斷出Cache中存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器提供所述第一 Cache Line的數(shù)據(jù)。可以理解的是,處理器中還可以包括其他模塊,如算術(shù)邏輯單元、時(shí)鐘發(fā)生器、比較器、定時(shí)器、復(fù)位電路、調(diào)制器等。
[0132]需要說(shuō)明的是,圖10和圖11所示的設(shè)備可以用于實(shí)現(xiàn)以上方法實(shí)施例所提供的關(guān)于第二處理器的任一種方法,且相關(guān)術(shù)語(yǔ)描述以及相關(guān)實(shí)現(xiàn)方式同以上方法實(shí)施例,在此不再贅述。
[0133]本實(shí)施例通過(guò)在Cache Line中記錄最近一次存儲(chǔ)其副本的處理器的信息,在讀缺失時(shí)根據(jù)該處理器的信息向?qū)?yīng)的處理器單播發(fā)送總線廣播事務(wù),可以避免廣播發(fā)送方式引起的問(wèn)題,降低功耗開(kāi)銷(xiāo)。
[0134]圖12為本發(fā)明讀缺失時(shí)的處理系統(tǒng)一實(shí)施例的結(jié)構(gòu)不意圖,該系統(tǒng)120包括第一處理器121和第二處理器122 ;第一處理器121可以參見(jiàn)圖8或圖9。第二處理器122可以參見(jiàn)圖10或圖11。
[0135]本實(shí)施例通過(guò)在Cache Line中記錄最近一次存儲(chǔ)其副本的處理器的信息,在讀缺失時(shí)根據(jù)該處理器的信息向?qū)?yīng)的處理器單播發(fā)送總線廣播事務(wù),可以避免廣播發(fā)送方式引起的問(wèn)題,降低功耗開(kāi)銷(xiāo)。
[0136]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,僅以上述各功能模塊的劃分進(jìn)行舉例說(shuō)明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
[0137]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0138]所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
[0139]另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0140]所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM, Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM, Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0141]以上所述,以上實(shí)施例僅用以說(shuō)明本申請(qǐng)的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本申請(qǐng)進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請(qǐng)各實(shí)施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種讀缺失時(shí)的處理方法,其特征在于,包括: 第一處理器產(chǎn)生地址信息,所述地址信息中包含高速緩沖存儲(chǔ)器標(biāo)簽Cache Tag ; 所述第一處理器在確定出存在第一高速緩沖存儲(chǔ)器線Cache Line時(shí),獲取所述第一Cache Line中記錄的第二處理器的信息,所述第一 Cache Line的標(biāo)簽Tag與所述CacheTag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài); 所述第一處理器根據(jù)所述第二處理器的信息,向所述第二處理器單播發(fā)送總線讀事務(wù),使得所述第二處理器在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),提供所述第一Cache Line 的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 所述第一處理器在所述第一 Cache Line的狀態(tài)位為無(wú)效狀態(tài)后,在所述第一 CacheLine中記錄第二處理器的信息,所述第二處理器為最近一次存儲(chǔ)所述第一 Cache Line的數(shù)據(jù)副本的處理器。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述第二處理器的信息記錄在所述第一 Cache Line的數(shù)據(jù)區(qū)。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,還包括: 所述第一處理器 接收所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),其中,當(dāng)所述第二處理器存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí)所述總線讀事務(wù)響應(yīng)中包含所述第一Cache Line的數(shù)據(jù),或者,當(dāng)所述第一處理器沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),所述總線讀事務(wù)響應(yīng)用于指示所第一處理器在總線上廣播發(fā)送總線讀事務(wù);或者, 所述第一處理器在設(shè)定時(shí)間內(nèi)沒(méi)有收到所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),則在總線上廣播發(fā)送總線讀事務(wù),所述讀事務(wù)響應(yīng)在所述第二處理器沒(méi)有存儲(chǔ)有效的所述第一Cache Line的數(shù)據(jù)副本時(shí)不發(fā)送。
5.—種讀缺失時(shí)的處理方法,其特征在于,包括: 第二處理器接收第一處理器單播發(fā)送的總線讀事務(wù),所述總線讀事務(wù)是所述第一處理器根據(jù)第一高速緩沖存儲(chǔ)器線Cache Line中記錄的第二處理器的信息發(fā)送的,所述第一Cache Line的標(biāo)簽Tag與所述第一處理器產(chǎn)生的地址信息中的高速緩沖存儲(chǔ)器標(biāo)簽CacheTag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài); 所述第二處理器在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器提供所述第一 Cache Line的數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 所述第二處理器在沒(méi)有存儲(chǔ)有效的所述第一Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器發(fā)送用于指示所述第一處理器在總線上廣播總線讀事務(wù)的總線讀事務(wù)響應(yīng);或者, 所述第二處理器在沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),不發(fā)送總線讀事務(wù)響應(yīng),使得所述第一處理器在設(shè)定時(shí)間內(nèi)沒(méi)有收到所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),在總線上廣播發(fā)送總線讀事務(wù)。
7.一種讀缺失時(shí)的處理設(shè)備,其特征在于,包括: 產(chǎn)生模塊,用于產(chǎn)生地址信息,所述地址信息中包含高速緩沖存儲(chǔ)器標(biāo)簽Cache Tag ; 獲取模塊,用于在確定出存在第一高速緩沖存儲(chǔ)器線Cache Line時(shí),獲取所述第一Cache Line中記錄的第二處理器的信息,所述第一 Cache Line的標(biāo)簽Tag與所述CacheTag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài); 單播模塊,用于根據(jù)所述第二處理器的信息,向所述第二處理器單播發(fā)送總線讀事務(wù),使得所述第二處理器在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),提供所述第一Cache Line 的數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的設(shè)備,其特征在于,還包括: 記錄模塊,用于在所述第一 Cache Line的狀態(tài)位為無(wú)效狀態(tài)后,在所述第一 CacheLine中記錄第二處理器的信息,所述第二處理器為最近一次存儲(chǔ)所述第一 Cache Line的數(shù)據(jù)副本的處理器。
9.根據(jù)權(quán)利要求7或8所述的設(shè)備,其特征在于,所述第二處理器的信息記錄在所述第一 Cache Line的數(shù)據(jù)區(qū)。
10.根據(jù)權(quán)利要求7或8所述的設(shè)備,其特征在于,還包括: 接收模塊,用于接收所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),其中,當(dāng)所述第二處理器存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí)所述總線讀事務(wù)響應(yīng)中包含所述第一 CacheLine的數(shù)據(jù),或者,當(dāng)所述第一處理器沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),所述總線讀事務(wù)響應(yīng)用于指示所第一處理器在總線上廣播發(fā)送總線讀事務(wù);或者, 廣播模塊,用于在設(shè)定時(shí)間內(nèi)沒(méi)有收到所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),則在總線上廣播發(fā)送總線讀事務(wù),所述讀事務(wù)響應(yīng)在所述第二處理器沒(méi)有存儲(chǔ)有效的所述第一Cache Line的數(shù) 據(jù)副本時(shí)不發(fā)送。
11.一種讀缺失時(shí)的處理設(shè)備,其特征在于,包括: 接收模塊,用于接收第一處理器單播發(fā)送的總線讀事務(wù),所述總線讀事務(wù)是所述第一處理器根據(jù)第一高速緩沖存儲(chǔ)器線Cache Line中記錄的第二處理器的信息發(fā)送的,所述第一 Cache Line的標(biāo)簽Tag與所述第一處理器產(chǎn)生的地址信息中的高速緩沖存儲(chǔ)器標(biāo)簽Cache Tag數(shù)值相同,且狀態(tài)位指示為無(wú)效狀態(tài); 發(fā)送模塊,用于在存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器提供所述第一 Cache Line的數(shù)據(jù)。
12.根據(jù)權(quán)利要求11所述的設(shè)備,其特征在于,所述發(fā)送模塊還用于: 在沒(méi)有存儲(chǔ)有效的所述第一Cache Line的數(shù)據(jù)副本時(shí),向所述第一處理器發(fā)送用于指示所述第一處理器在總線上廣播總線讀事務(wù)的總線讀事務(wù)響應(yīng);或者, 在沒(méi)有存儲(chǔ)有效的所述第一 Cache Line的數(shù)據(jù)副本時(shí),不發(fā)送總線讀事務(wù)響應(yīng),使得所述第一處理器在設(shè)定時(shí)間內(nèi)沒(méi)有收到所述第二處理器發(fā)送的總線讀事務(wù)響應(yīng),在總線上廣播發(fā)送總線讀事務(wù)。
13.—種讀缺失時(shí)的處理系統(tǒng),其特征在于,包括: 如權(quán)利要求7-10任一項(xiàng)所述的設(shè)備;以及, 如權(quán)利要求11-12任一項(xiàng)所述的設(shè)備。
【文檔編號(hào)】G06F13/16GK103902470SQ201210571969
【公開(kāi)日】2014年7月2日 申請(qǐng)日期:2012年12月25日 優(yōu)先權(quán)日:2012年12月25日
【發(fā)明者】郭旭斌, 張科, 侯銳, 馮煜晶 申請(qǐng)人:華為技術(shù)有限公司, 中國(guó)科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
新竹市| 莱芜市| 绥芬河市| 韶山市| 江源县| 新田县| 凤凰县| 辽阳县| 固阳县| 新疆| 德州市| 汤阴县| 密云县| 芦山县| 仁寿县| 青河县| 高台县| 麻城市| 吕梁市| 奉节县| 当涂县| 宣汉县| 巴彦县| 吴忠市| 平定县| 普安县| 资兴市| 舞钢市| 金寨县| 虞城县| 宝清县| 海门市| 星子县| 施甸县| 江陵县| 汪清县| 凤翔县| 汶川县| 高陵县| 抚宁县| 永吉县|