国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

      【發(fā)明內容】

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

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