国产精品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>

      多片多核處理器的緩存一致性操作方法及多片多核處理器與流程

      文檔序號:11177098閱讀:723來源:國知局
      多片多核處理器的緩存一致性操作方法及多片多核處理器與流程

      本發(fā)明涉及信息技術(shù)領(lǐng)域,并且更具體地,涉及一種多片多核處理器的一致性操作方法及多片多核處理器。



      背景技術(shù):

      在多核處理器(chipmultiprocessor,cmp)的應(yīng)用中,存在一些數(shù)據(jù)塊被該處理器中的一個或者多個處理器核(以下簡稱:核,core)訪問的場景。在該場景下,通常會將該數(shù)據(jù)塊存儲在處理器芯片中的共享緩存(sharingcache)中,以便一個或多個核能夠訪問。為了加速數(shù)據(jù)塊的訪問,在訪問過該數(shù)據(jù)塊的一個或多個核的私有緩存(privatecache)中創(chuàng)建該數(shù)據(jù)塊的拷貝,這樣當(dāng)訪問過該數(shù)據(jù)塊的某一核需要再次訪問該數(shù)據(jù)塊時,只需要到該核的私有緩存中進(jìn)行該數(shù)據(jù)塊的訪問。對數(shù)據(jù)塊的訪問包括讀訪問(readaccess)以及寫訪問(writeaccess)。其中,在對某一數(shù)據(jù)塊進(jìn)行寫訪問時,由于可能有多個核的私有緩存中都存有該數(shù)據(jù)塊的拷貝,在某一核對該數(shù)據(jù)塊進(jìn)行寫操作之后,就需要維護(hù)在多個核的私有緩存中該數(shù)據(jù)塊拷貝之間一致性,也被稱為緩存一致性(cachecoherence)操作。

      緩存一致性操作的基本原理是當(dāng)某一個核的緩存中該數(shù)據(jù)塊的拷貝被寫操作處理時,需要進(jìn)行緩存一致性操作,可通過無效(invalid)其他核的私有緩存中該數(shù)據(jù)塊的拷貝(也即刪除其他核的緩存中該數(shù)據(jù)塊)或者更新(update)其他核的私有緩存中該數(shù)據(jù)塊的拷貝。而為了解決一致性問題就需要確定該數(shù)據(jù)塊在多核處理器中的哪些核存在拷貝(即確定該數(shù)據(jù)塊的訪 問者)。

      常用的緩存一致性解決方式可采用基于總線偵聽(snoop)的一致性協(xié)議和基于目錄(directory)的一致性協(xié)議。對于前者,當(dāng)發(fā)生某一個核內(nèi)的緩存數(shù)據(jù)塊被修改時,需要向存儲該數(shù)據(jù)塊拷貝的其他核發(fā)送該數(shù)據(jù)塊被修改的廣播消息,以便通知這些核進(jìn)行一致性操作;對于后者,利用數(shù)據(jù)塊的訪問目錄記錄數(shù)據(jù)塊的訪問者(即多核處理器中存儲該數(shù)據(jù)塊的核)列表,在發(fā)生某一個處理器核緩存中數(shù)據(jù)塊的拷貝被修改時,只向其他記錄該數(shù)據(jù)塊的訪問者發(fā)送該數(shù)據(jù)塊被修改的通知消息,以便該數(shù)據(jù)塊的其他訪問者針對該數(shù)據(jù)塊進(jìn)行緩存一致性操作。處理器核數(shù)的持續(xù)增長使得基于總線偵聽的一致性解決方案面臨性能和帶寬的瓶頸(廣播消息需要占用大量處理資源以及帶寬),而基于目錄的一致性協(xié)議憑借較好的可擴(kuò)展性被廣泛采用。

      隨著技術(shù)的不斷發(fā)展,現(xiàn)有應(yīng)用對處理器的能力提出了更高的要求,已經(jīng)出現(xiàn)多片多核處理器(multiplechipmultiprocessor,multi-cmp)。這種處理器存在多個處理器芯片,每個芯片包含至少兩個處理器核。對于這樣的處理器,如果要對某一個數(shù)據(jù)塊進(jìn)行了寫操作,不僅需要對發(fā)出寫操作的核所在的處理器芯片進(jìn)行緩存一致性操作,還需要對其他處理器芯片針對該數(shù)據(jù)塊進(jìn)行緩存一致性操作。現(xiàn)有技術(shù)中,對于某一數(shù)據(jù)塊,在多片多核處理器中進(jìn)行一致性操作時,發(fā)出寫操作的核所在的處理器芯片需要和其他處理器芯片進(jìn)行通信,以便確定其他處理器芯片中的哪些芯片以及芯片中的哪些核緩存有該數(shù)據(jù)塊的拷貝,從而進(jìn)行一致性操作。

      由上看出,在多片多核處理器中,每次對數(shù)據(jù)塊進(jìn)行的寫操作,都會觸發(fā)處理器芯片之間的通信以便對待寫入數(shù)據(jù)塊進(jìn)行一致性操作,由此帶來較多的通信開銷,增加了時延以及功耗。



      技術(shù)實現(xiàn)要素:

      本發(fā)明實施例提供了一種多片多核處理器的緩存一致性操作方法及多片多核處理器,能夠減少緩存一致性操作過程中的時延以及功耗。

      第一方面,提供了一種多片多核處理器的緩存一致性操作方法,其中,該多片多核處理器包括有至少兩個處理器芯片以及片間目錄,該片間目錄的每個表項和多片多核處理器中每個被寫入到處理器核私有緩存內(nèi)的數(shù)據(jù)塊一一對應(yīng),在每個片間目錄的表項中,記錄有數(shù)據(jù)塊的標(biāo)識以及存儲該數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識列表,處理器芯片包括至少兩個處理器核以及和該處理器芯片對應(yīng)的片上目錄,每個處理器核包括用來存儲數(shù)據(jù)塊的私有緩存,上述片上目錄的每個表項和該處理器芯片中每個被寫入到處理器核內(nèi)私有緩存的數(shù)據(jù)塊一一對應(yīng),在每個片上目錄的表項中記錄有數(shù)據(jù)塊的標(biāo)識、存儲該數(shù)據(jù)塊的處理器核的核標(biāo)識列表以及片上獨有標(biāo)識,該片上獨有標(biāo)識用于標(biāo)識數(shù)據(jù)塊在多片多核處理器中是否為上述處理器芯片獨有;方法包括:

      接收針對第一數(shù)據(jù)塊的寫請求,該寫請求由第一處理器芯片中第一處理器核發(fā)送,且該寫請求包括第一數(shù)據(jù)塊的標(biāo)識以及待寫入數(shù)據(jù);

      根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在第一處理器芯片中的片上目錄查詢到和第一數(shù)據(jù)塊對應(yīng)的片上目錄的表項,從查詢的片上目錄的表項中確定存儲第一數(shù)據(jù)塊的處理器核的核標(biāo)識,向核標(biāo)識對應(yīng)的處理器核發(fā)送刪除第一數(shù)據(jù)塊的指令消息;

      根據(jù)片上目錄表項中的片上獨有標(biāo)識確定第一數(shù)據(jù)塊是第一處理器芯片獨有時,不發(fā)送針對第一數(shù)據(jù)塊的片間目錄查詢請求;

      指示第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存中。

      在多片多核處理器中設(shè)置片間目錄,在每個處理器芯片內(nèi)部設(shè)置片上目錄,片上目錄中每個表項除包括數(shù)據(jù)塊標(biāo)識、緩存該數(shù)據(jù)塊的處理器核的核標(biāo)識列表之外,還包括片上獨有標(biāo)識,通過片上獨有標(biāo)識記錄該表項對應(yīng)的數(shù)據(jù)塊是否在多片多核處理器中為該處理器芯片獨有,采用上述方式使得在進(jìn)行 緩存一致性操作時,當(dāng)判斷某一數(shù)據(jù)塊對應(yīng)的片上目錄表項中記錄的片上獨有標(biāo)識為true時,就僅在該處理器芯片中進(jìn)行一致性操作,這樣就減少了現(xiàn)有技術(shù)存在的對于任何一個數(shù)據(jù)塊的寫操作都需要片間通信的開銷,從而有效地降低了時延及功耗。

      結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,當(dāng)根據(jù)片上目錄表項中的片上獨有標(biāo)識確定第一數(shù)據(jù)塊不是第一處理器芯片獨有時,

      向片間目錄發(fā)送針對第一數(shù)據(jù)塊的片間目錄查詢請求,該查詢請求中包括第一數(shù)據(jù)塊的標(biāo)識;

      根據(jù)第一數(shù)據(jù)塊的標(biāo)識,查詢片間目錄,確定和第一數(shù)據(jù)塊對應(yīng)的片間目錄的表項;

      從片間目錄的表項中確定保存有第一數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識,向芯片標(biāo)識除所述第一處理器芯片之外其他處理器芯片發(fā)送刪除第一數(shù)據(jù)塊的指令消息,該指令消息包括所述第一數(shù)據(jù)塊的標(biāo)識;

      指示第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存。

      結(jié)合第一方面以及第一方面第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,在指示第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存之后,該方法還包括:指示第一處理器芯片將待寫入數(shù)據(jù)寫入到第一處理器芯片內(nèi)的共享緩存。

      結(jié)合第一方面,第一方面的第一以及第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,當(dāng)根據(jù)第一數(shù)據(jù)塊的標(biāo)識在第一處理器芯片的片上目錄未能查詢到和第一數(shù)據(jù)塊對應(yīng)的表項,且根據(jù)第一數(shù)據(jù)塊的標(biāo)識在片間目錄中查詢到與第一數(shù)據(jù)塊的標(biāo)識對應(yīng)的表項時,

      根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在片間目錄查詢到和第一數(shù)據(jù)塊對應(yīng)的片間目錄的表項,從片間目錄的表項中確定保存有第一數(shù)據(jù)塊的處理器芯片的芯片 標(biāo)識,向芯片標(biāo)識對應(yīng)的處理器芯片發(fā)送刪除第一數(shù)據(jù)塊的指令消息,該指令消息包括第一數(shù)據(jù)塊的標(biāo)識;

      指示第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存;

      在第一處理器芯片中的片上目錄中,創(chuàng)建對應(yīng)第一數(shù)據(jù)塊的表項,將第一處理器核的核標(biāo)識寫入表項中存儲所述第一數(shù)據(jù)塊的處理器核的核標(biāo)識列表中,并設(shè)置片上獨有標(biāo)識為true。

      結(jié)合第一方面,第一方面的第一以及第二種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,當(dāng)根據(jù)第一數(shù)據(jù)塊的標(biāo)識在第一處理芯片的片上目錄未能查詢到和第一數(shù)據(jù)塊對應(yīng)的表項,且根據(jù)第一數(shù)據(jù)塊的標(biāo)識在片間目錄中未能查詢到與第一數(shù)據(jù)塊的標(biāo)識對應(yīng)的表項時,

      指示根據(jù)第一數(shù)據(jù)塊的標(biāo)識,從內(nèi)存中讀取第一數(shù)據(jù)塊,將第一數(shù)據(jù)塊存入第一處理器核的私有緩存;

      在第一處理器芯片的片上目錄中,創(chuàng)建針對第一數(shù)據(jù)塊的片上目錄表項,在存儲第一數(shù)據(jù)塊的核標(biāo)識列表中記錄第一處理器核的標(biāo)識,并設(shè)置片上獨有標(biāo)識為true;

      在片間目錄中,創(chuàng)建對應(yīng)第一數(shù)據(jù)塊的片間目錄表項,在存儲第一數(shù)據(jù)塊的芯片標(biāo)識列表中記錄第一處理器芯片的標(biāo)識。

      結(jié)合第一方面的第一種以及第三種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,在芯片標(biāo)識除第一處理器芯片之外其他處理器芯片接收到刪除所述第一數(shù)據(jù)塊的指令消息之后,該方法還包括:

      除第一處理器芯片之外的各處理器芯片根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在各處理器芯片中的片上目錄查詢和第一數(shù)據(jù)塊對應(yīng)的片上目錄表項,從第一數(shù)據(jù)塊對應(yīng)的各片上目錄的表項中確定存儲有第一數(shù)據(jù)塊的處理器核的核標(biāo)識,向核標(biāo)識對應(yīng)的處理器核發(fā)送刪除第一數(shù)據(jù)塊的指令消息。

      第二方面,還提供一種多片多核處理器,該多片多核處理器包括至少兩個處理器芯片和片間目錄緩存,片間目錄緩存包括片間目錄存儲單元以及片間目錄控制單元,片間目錄存儲單元所存儲的每個片間目錄的表項和多片多核處理器中每個被寫入到處理器核私有緩存內(nèi)的數(shù)據(jù)塊一一對應(yīng),每個片間目錄的表項記錄有數(shù)據(jù)塊的標(biāo)識以及存儲數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識列表,處理器芯片包括至少兩個核以及和處理器芯片對應(yīng)的片上目錄緩存,片上目錄緩存包括片上目錄存儲單元以及片上目錄控制單元,至少兩個核中的每個核包括用來存儲數(shù)據(jù)塊的私有緩存,片上目錄存儲單元所存儲的每個片上目錄表項和處理器芯片中每個被寫入到處理器核內(nèi)私有緩存的數(shù)據(jù)塊一一對應(yīng),每個片上目錄的表項記錄數(shù)據(jù)塊的標(biāo)識、存儲有數(shù)據(jù)塊的處理器核的核標(biāo)識列表以及片上獨有標(biāo)識,片上獨有標(biāo)識用于標(biāo)識數(shù)據(jù)塊在多片多核處理器中是否為處理器芯片獨有;

      第一處理器芯片的片上目錄控制單元接收針對第一數(shù)據(jù)塊的寫請求,寫請求由第一處理器芯片中第一處理器核發(fā)送,且該寫請求包括第一數(shù)據(jù)塊的標(biāo)識以及待寫入數(shù)據(jù);

      第一處理器芯片的片上目錄控制單元所述第一數(shù)據(jù)塊的標(biāo)識,在第一處理器芯片中的片上目錄存儲單元查詢到和第一數(shù)據(jù)塊對應(yīng)的片上目錄的表項,從查詢的片上目錄的表項中確定存儲第一數(shù)據(jù)塊的處理器核的核標(biāo)識,向核標(biāo)識對應(yīng)的處理器核發(fā)送刪除第一數(shù)據(jù)塊的指令消息;

      第一處理器芯片的片上目錄控制單元根據(jù)片上目錄表項中的片上獨有標(biāo)識確定第一數(shù)據(jù)塊是第一處理器芯片獨有時,不向片間目錄控制單元發(fā)送針對第一數(shù)據(jù)塊的片間目錄查詢請求;

      第一處理器芯片的片上目錄控制單元指示第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存。

      結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,當(dāng)根據(jù)片上目錄表項中的片 上獨有標(biāo)識確定第一數(shù)據(jù)塊不是第一處理器芯片獨有時,

      第一處理器芯片的片上目錄控制單元向片間目錄控制單元發(fā)送針對第一數(shù)據(jù)塊的片間目錄查詢請求,查詢請求中包括第一數(shù)據(jù)塊的標(biāo)識;

      片間目錄控制單元根據(jù)第一數(shù)據(jù)塊的標(biāo)識,查詢片間目錄,確定和第一數(shù)據(jù)塊對應(yīng)的片間目錄的表項;

      片間目錄控制單元從片間目錄的表項中確定保存有第一數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識,向芯片標(biāo)識除所述第一處理器芯片之外其他處理器芯片發(fā)送刪除第一數(shù)據(jù)塊的指令消息,該指令消息包括第一數(shù)據(jù)塊的標(biāo)識;

      第一處理器芯片的片上目錄控制單元指示第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存。

      結(jié)合第二方面,以及第二方面的第一種可能的實現(xiàn)方式中,在第二種可能的實現(xiàn)方式中,在指示第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存之后,第一處理器芯片的片上目錄控制單元,還用于指示第一處理器芯片將待寫入數(shù)據(jù)寫入到第一處理器芯片內(nèi)的共享緩存。

      結(jié)合第二方面,以及第二方面的第一種以及第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,當(dāng)根據(jù)第一數(shù)據(jù)塊的標(biāo)識在第一處理器芯片的片上目錄未能查詢到和第一數(shù)據(jù)塊對應(yīng)的表項,且根據(jù)第一數(shù)據(jù)塊的標(biāo)識在片間目錄中查詢到與第一數(shù)據(jù)塊的標(biāo)識對應(yīng)的表項時,

      第一處理器芯片的片上目錄控制單元,還用于指示片間目錄控制單元根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在片間目錄查詢到和第一數(shù)據(jù)塊對應(yīng)的片間目錄的表項,從片間目錄的表項中確定保存有第一數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識,向芯片標(biāo)識對應(yīng)的處理器芯片發(fā)送刪除第一數(shù)據(jù)塊的指令消息,該指令消息包括第一數(shù)據(jù)塊的標(biāo)識;

      第一處理器芯片的片上目錄控制單元,還用于指示第一處理器核將待寫 入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存;

      第一處理器芯片的片上目錄控制單元,還用于在第一處理器芯片中的片上目錄中,創(chuàng)建對應(yīng)第一數(shù)據(jù)塊的表項,將第一處理器核的核標(biāo)識寫入表項中存儲第一數(shù)據(jù)塊的處理器核的核標(biāo)識列表中,并設(shè)置片上獨有標(biāo)識為true。

      結(jié)合第二方面,以及第二方面的第一種以及第二種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,當(dāng)根據(jù)第一數(shù)據(jù)塊的標(biāo)識在第一處理器芯片的片上目錄未能查詢到和第一數(shù)據(jù)塊對應(yīng)的表項,且根據(jù)第一數(shù)據(jù)塊的標(biāo)識在片間目錄中未能查詢到與第一數(shù)據(jù)塊的標(biāo)識對應(yīng)的表項時,

      第一處理器芯片的片上目錄控制單元,還用于指示根據(jù)第一數(shù)據(jù)塊的標(biāo)識,從內(nèi)存中讀取第一數(shù)據(jù)塊,將第一數(shù)據(jù)塊存入第一處理器核的私有緩存;

      第一處理器芯片的片上目錄控制單元,還用于在第一處理器芯片的片上目錄中,創(chuàng)建針對第一數(shù)據(jù)塊的片上目錄表項,在存儲第一數(shù)據(jù)塊的核標(biāo)識列表中記錄第一處理器核的標(biāo)識,并設(shè)置片上獨有標(biāo)識為true;

      第一處理器芯片的片上目錄控制單元,還用于指示片間目錄控制單元在片間目錄中,創(chuàng)建對應(yīng)第一數(shù)據(jù)塊的片間目錄表項,在存儲第一數(shù)據(jù)塊的芯片標(biāo)識列表中記錄第一處理器芯片的標(biāo)識。

      結(jié)合第二方面的第一種以及第三種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,在芯片標(biāo)識對應(yīng)的處理器芯片接收到刪除第一數(shù)據(jù)塊的指令消息之后,各處理器芯片的片上目錄控制單元,用于根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在各處理器芯片中的片上目錄查詢和第一數(shù)據(jù)塊對應(yīng)的片上目錄表項,從第一數(shù)據(jù)塊對應(yīng)的各片上目錄的表項中確定存儲有第一數(shù)據(jù)塊的處理器核的核標(biāo)識,指示核標(biāo)識對應(yīng)的處理器核刪除私有緩存的第一數(shù)據(jù)塊。

      基于上述技術(shù)方案,本發(fā)明實施例通過設(shè)置層次化的一致性目錄,即在多片多核處理器中設(shè)置片間目錄,在每個處理器芯片內(nèi)部設(shè)置片上目錄,片上 目錄中每個表項除包括數(shù)據(jù)塊標(biāo)識、緩存該數(shù)據(jù)塊的處理器核的核標(biāo)識列表之外,還包括片上獨有標(biāo)識,通過片上獨有標(biāo)識記錄該表項對應(yīng)的數(shù)據(jù)塊是否在多片多核處理器中為該處理器芯片獨有,采用上述方式使得在進(jìn)行緩存一致性操作時,當(dāng)判斷某一數(shù)據(jù)塊對應(yīng)的片上目錄表項中記錄的片上獨有標(biāo)識為true時,就僅在該處理器芯片中進(jìn)行一致性操作,這樣就減少了現(xiàn)有技術(shù)存在的對于任何一個數(shù)據(jù)塊的寫操作都需要片間通信的開銷,從而有效地降低了時延及功耗。

      附圖說明

      為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對本發(fā)明實施例中所需要使用的附圖作簡單地介紹。

      圖1是可應(yīng)用本發(fā)明實施例的多片多核處理器的示意圖。

      圖2是本發(fā)明實施例中片間目錄的結(jié)構(gòu)示意圖。

      圖3是本發(fā)明實施例中片間目錄表項的數(shù)據(jù)結(jié)構(gòu)示意圖。

      圖4是本發(fā)明實施例中片上目錄的結(jié)構(gòu)示意圖。

      圖5是本發(fā)明實施例中片上目錄表項的數(shù)據(jù)結(jié)構(gòu)示意圖。

      圖6a是本發(fā)明實施例中片間目錄以及片上目錄所實現(xiàn)的層次化目錄記錄方式示意圖。

      圖6b是本發(fā)明實施例中層次化目錄的訪問方式的示意圖。

      圖7a是本發(fā)明第一實施例中多片多核系統(tǒng)中緩存一致性操作方法的示意性流程圖。

      圖7b是本發(fā)明第二實施例的多片多核系統(tǒng)中緩存一致性操作方法的示意性流程圖。

      圖7c是本發(fā)明第三實施例的多片多核系統(tǒng)中緩存一致性操作方法的示意性流程圖。

      圖7d是本發(fā)明第四實施例的多片多核系統(tǒng)中緩存一致性操作方法的示意性流程圖。

      圖8是本發(fā)明第五實施例的多片多核系統(tǒng)中緩存一致性操作方法的示意性流程圖。

      圖9是本發(fā)明第六實施例的多片多核系統(tǒng)中緩存一致性操作方法的示意性流程圖。

      圖10是本發(fā)明一個實施例的目錄訪問方法的示意性流程圖。

      具體實施方式

      下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述。

      貫穿本說明書,術(shù)語“多核處理器”指的是包含了多個處理器核(core)的處理器,具體可以表現(xiàn)為片上多核處理器,或者板上多核處理系統(tǒng)。其中,片上多核處理器是多個處理器核(core)通過片上網(wǎng)絡(luò)(networkonchip,noc)將各個處理器核互連并集成在一個芯片(chip)上的處理器(processor),板上多核處理系統(tǒng)指的是多個處理器核中每個核分別封裝(package)為處理器,并集成在電路板上所構(gòu)成的處理系統(tǒng)。

      貫穿本說明書,術(shù)語“多片多核處理器”指的是包含了至少兩個處理器芯片且每個處理器芯片包含至少兩個處理器核的處理器。

      貫穿本說明書,術(shù)語“處理器核”是“處理器核心”的簡稱,又稱為內(nèi)核,是cpu(centralprocessingunit)最重要的組成部分,它是由單晶硅以一定的生產(chǎn)工藝制造出來的,cpu所有的計算、接收命令或存儲命令、處理 數(shù)據(jù)都由處理器核執(zhí)行。術(shù)語中“多處理器核”指的是包含至少兩個處理器核,“多處理器核”涵蓋了現(xiàn)有技術(shù)中的多核(multi-core),以及眾核(manycore)所應(yīng)用的范圍。

      貫穿本說明書,術(shù)語“私有緩存”指的是在某一處理器核內(nèi)部,用來存儲該處理器核私有數(shù)據(jù)的緩存空間。在具體實現(xiàn)中,私有緩存一般指的是處理器芯片中的一級(level1)緩存。在多片多核處理器的實現(xiàn)中,處理器核會將部分?jǐn)?shù)據(jù)塊讀取到私有緩存中,以提高處理器核對這部分?jǐn)?shù)據(jù)塊的訪問效率。

      貫穿本說明書,術(shù)語“多片多核處理器的一致性操作”,指的是在多片多核處理器中,當(dāng)某一處理器芯片的處理器核發(fā)出對某一數(shù)據(jù)塊的寫請求后,為了維護(hù)多片多核處理器對于該數(shù)據(jù)塊的緩存一致性,不僅需要進(jìn)行片上緩存一致性操作,即將上述處理器芯片內(nèi)處理器核的私有緩存中所緩存的該數(shù)據(jù)塊刪除,還需要進(jìn)行片間緩存一致性操作,即在多片多核處理器中,將上述處理器芯片之外的其他處理器芯片內(nèi)處理器核的私有緩存中所緩存的該數(shù)據(jù)塊刪除。

      貫穿本說明書,術(shù)語“訪問者”指的是對某一數(shù)據(jù)塊發(fā)起訪問請求的處理器核或者處理器芯片。其中,對該數(shù)據(jù)塊發(fā)出訪問請求的處理器核稱為訪問核,訪問核所在的處理器芯片稱為訪問芯片。作為舉例,處理器芯片b的三個處理器核b1、b2和b3對數(shù)據(jù)塊a發(fā)出過訪問請求訪問過,則在這三個處理器核b1、b2和b3的私有緩存中會存在該數(shù)據(jù)塊a的拷貝,稱處理器核b1、b2和b3是數(shù)據(jù)塊a的訪問核,處理器芯片b是數(shù)據(jù)塊a的訪問芯片。

      貫穿本說明書,術(shù)語“數(shù)據(jù)塊”指的是多核處理器系統(tǒng)中,各個處理器核對數(shù)據(jù)訪問的粒度。在一般實現(xiàn)中,該數(shù)據(jù)塊因為存儲在多核處理器系統(tǒng)的緩存中,該數(shù)據(jù)塊的粒度是緩存行(即cacheline)。本領(lǐng)域普通技術(shù)人員可以理解,該數(shù)據(jù)塊的粒度還可能有其他表現(xiàn)形式,譬如:緩存行的一部分, 或者多個緩存行,對此,本說明書的實施例均不加以限制。當(dāng)某一數(shù)據(jù)塊被多個處理器核訪問,則會存在該數(shù)據(jù)塊的多個拷貝,存儲在這多個處理器核的私有緩存中。

      貫穿本說明書,術(shù)語“片間目錄”,也稱為“片間訪問者目錄”,用來記錄多片多核處理器所緩存的數(shù)據(jù)塊被哪些處理器芯片訪問的數(shù)據(jù)結(jié)構(gòu)。該片間目錄包括至少一個表項,每個片間目錄表項和多片多核處理器中每個被寫入到處理器核私有緩存內(nèi)的數(shù)據(jù)塊一一對應(yīng),表項中至少記錄緩存數(shù)據(jù)塊的標(biāo)識以及該緩存數(shù)據(jù)塊的訪問芯片的芯片標(biāo)識的列表。在具體實現(xiàn)中,片間目錄至少存在三種實現(xiàn)方式,一種是集中式緩存實現(xiàn)方式,即在多片多核處理器獨立于各處理器芯片的緩存中分配一塊存儲空間用來存儲片間目錄;另一種是采用分布式緩存實現(xiàn)方式,即將片間目錄分成若干塊,將這些目錄塊分別存儲在多片多核處理器的多個處理器芯片內(nèi)部的緩存中,通過目錄表項所對應(yīng)的緩存數(shù)據(jù)塊的地址的部分作為索引來訪問;第三種采用的內(nèi)存實現(xiàn)方式,即將片間目錄存儲在內(nèi)存(memory)中,通過內(nèi)存控制器(memorycontroller)實現(xiàn)片間目錄的訪問。

      貫穿本說明書,術(shù)語“片上目錄”,也稱為“片上訪問者目錄”,多片多核處理器中的每個處理器芯片均包含一個片上目錄,用來記錄處理器芯片所緩存的數(shù)據(jù)塊被該處理器芯片中的哪些處理器核訪問的數(shù)據(jù)結(jié)構(gòu)。該片上目錄包括至少一個表項,每個片上目錄表項和該處理器芯片中每個被寫入到處理器核私有緩存內(nèi)的數(shù)據(jù)塊一一對應(yīng),該表項至少記錄緩存數(shù)據(jù)塊的標(biāo)識、該緩存數(shù)據(jù)塊的訪問核的核標(biāo)識的列表以及片上獨有標(biāo)識,其中,片上獨有標(biāo)識用于標(biāo)識該緩存數(shù)據(jù)塊在多片多核處理器中是否為該處理器芯片獨有。在具體實現(xiàn)中,片上目錄常采用緩存的形式實現(xiàn),至少存在兩種實現(xiàn)方式,一種是采用集中式的實現(xiàn)方式,即在處理器芯片中獨立于各處理器核的緩存中分配一塊存儲空間用來存儲片上目錄;另一種是采用分布式的實現(xiàn)方式, 即將片上目錄分成若干塊,將這些目錄塊分別存儲在處理器芯片的多個處理器核內(nèi)部的緩存中,通過目錄表項所對應(yīng)的緩存數(shù)據(jù)塊的地址的部分作為索引來訪問。

      貫穿本說明書,術(shù)語“數(shù)據(jù)塊的標(biāo)識”,指的是緩存數(shù)據(jù)塊的標(biāo)識,一般采用緩存數(shù)據(jù)塊的地址的高位作為該緩存數(shù)據(jù)塊的標(biāo)識,即利用緩存數(shù)據(jù)塊地址中“標(biāo)簽+索引”(即構(gòu)成了緩存數(shù)據(jù)塊的地址高位)作為緩存數(shù)據(jù)塊的唯一標(biāo)識。具體可通過預(yù)先設(shè)定的方式指定。

      貫穿本說明書,術(shù)語“芯片標(biāo)識”,即“處理器芯片的標(biāo)識”,指的是多片多核處理器中各個處理器芯片的唯一編號,可以由管理員預(yù)先分配和設(shè)定,本說明書對編號的方式不加限制。作為舉例,譬如:可以按照自然數(shù)順序進(jìn)行編號。

      貫穿本說明書,術(shù)語“核標(biāo)識”,即“處理器核的標(biāo)識”,指的是處理器芯片內(nèi)處理器核的唯一編號,可以由管理員預(yù)先分配和設(shè)定,本說明書對編號的方式不加限制。作為舉例,譬如:可以按照自然數(shù)順序進(jìn)行編號。

      貫穿本說明書,術(shù)語“共享緩存”指的是處理器芯片內(nèi)部用來存儲多個核共享數(shù)據(jù)的緩存空間。共享緩存的實現(xiàn)方式分為集中式實現(xiàn)方式以及分布式實現(xiàn)方式,前者指的是在處理器芯片內(nèi)部且獨立于各處理器核之外設(shè)置一塊緩存空間作為共享緩存,各個處理器核都可以訪問這塊獨立的共享緩存;后者指的是在處理器芯片內(nèi)部的各個處理器核內(nèi)分配一塊緩存空間,由各個處理器核內(nèi)的緩存空間構(gòu)成的一塊“物理上分散部署、邏輯上統(tǒng)一訪問”的緩存空間作為共享緩存。在具體實現(xiàn)中,該共享緩存一般指的是處理器系統(tǒng)中的二級(level2)緩存或三級(level3)緩存。

      多片多核處理器結(jié)構(gòu)

      圖1是本發(fā)明實施例所應(yīng)用的多片多核處理器結(jié)構(gòu)示意圖。

      如圖1所示,多片多核處理器10中包括多個處理器芯片、以及互聯(lián)結(jié)構(gòu)200。其中,多個處理器芯片通過互聯(lián)結(jié)構(gòu)(interconnect)200相連,互聯(lián)結(jié)構(gòu)200可以通過多種方式實現(xiàn),譬如:總線(bus)等。

      處理器芯片的內(nèi)部結(jié)構(gòu)以處理器芯片100為例來介紹。其中,處理器芯片100包括多個處理器核(圖1中的核11,…,核mn),互聯(lián)結(jié)構(gòu)接口(interconnectinterface)120,片間目錄130,內(nèi)存控制器140。其中,多個處理器核通過片上網(wǎng)絡(luò)相連,片上網(wǎng)絡(luò)主要基于電子或光學(xué)技術(shù),分別稱為片上電網(wǎng)絡(luò)(electricalnetwork-on-chip,enoc)及片上光網(wǎng)絡(luò)(opticalnetwork-on-chip,onoc),這部分技術(shù)屬于本領(lǐng)域的公知技術(shù),本發(fā)明的實施例不再贅述。

      互聯(lián)結(jié)構(gòu)接口120作為處理器芯片100的接口,通過該接口連接在互聯(lián)結(jié)構(gòu)200上。

      片間目錄130用來記錄多片多核處理器10中被寫入到處理器核內(nèi)私有緩存的數(shù)據(jù)塊被哪些處理器芯片訪問的信息(譬如,該信息至少包括:緩存數(shù)據(jù)塊的標(biāo)識,以及該緩存數(shù)據(jù)塊的訪問芯片的標(biāo)識等相關(guān)信息)。

      內(nèi)存控制器140集成在處理器芯片內(nèi)部,用來連接內(nèi)存300,并對內(nèi)存300的訪問進(jìn)行控制。需要說明的是,在多片多核處理器中的處理器芯片中,內(nèi)存控制器140是非必要的部件,將內(nèi)存控制器140集成在處理器芯片內(nèi)部順應(yīng)了提高片上系統(tǒng)(systemonchip,soc)集成度的設(shè)計潮流,對于本領(lǐng)域技術(shù)人員可以理解,內(nèi)存控制器140也可以設(shè)置在處理器芯片之外,獨立于處理器芯片而存在。

      片間目錄的結(jié)構(gòu)

      片間目錄的結(jié)構(gòu)如圖2所示,片間目錄130包括:片間目錄存儲單元131以及片間目錄控制單元132。

      其中,片間目錄存儲單元131中存儲多個片間目錄表項,每個片間目錄的表項和多片多核處理器中每個被寫入到處理器核私有緩存內(nèi)的數(shù)據(jù)塊一一對應(yīng)。

      片間目錄控制單元132用來實現(xiàn)對片間目錄存儲單元131所存儲的片間目錄表項操作的控制,這些表項操作包括但不限于:查找、創(chuàng)建、刪除、修改等。

      片間目錄表項的數(shù)據(jù)結(jié)構(gòu)可參看圖3,片間目錄表項包含被寫入到處理器核私有緩存內(nèi)的數(shù)據(jù)塊的標(biāo)識1311,以及該數(shù)據(jù)塊的訪問芯片的標(biāo)識列表1312。

      處理器芯片100存儲的片間目錄有至少如下三種實現(xiàn)方式,對于這些實現(xiàn)方式,具體實現(xiàn)過程根據(jù)需要選擇,本發(fā)明的所有實施例均不加以限定。

      (1)采用集中式的緩存實現(xiàn):即在多片多核處理器獨立于各處理器芯片的緩存中分配一塊存儲空間用來作為片間目錄存儲單元131,或者在一個處理器芯片的緩存中分配一塊存儲空間作為片間目錄存儲單元131,在該片間目錄存儲單元131設(shè)置邏輯控制電路作為片間目錄控制單元132。

      (2)采用分布式的緩存實現(xiàn):即將片間目錄分成若干塊,將這些目錄塊以緩存目錄(cachedirectory)的方式分別存儲在多片多核處理器的多個處理器芯片內(nèi)部的緩存中,緩存數(shù)據(jù)塊地址的高位一般由標(biāo)簽以及索引構(gòu)成,利用緩存數(shù)據(jù)塊地址中“標(biāo)簽+索引”(即構(gòu)成了緩存數(shù)據(jù)塊的地址高位)作為緩存數(shù)據(jù)塊的唯一標(biāo)識。在每個緩存數(shù)據(jù)塊的片間目錄表項中,將該緩存數(shù)據(jù)塊地址的索引以及標(biāo)簽設(shè)置于該片間目錄表項中,在訪問該片間目錄表項 時,通過索引以及標(biāo)簽確定該與該緩存數(shù)據(jù)塊對應(yīng)的片間目錄表項的位置。對于利用索引和標(biāo)簽來定位片間目錄表項的過程,將在后續(xù)的實施例中加以具體描述。例如:假設(shè)多片多核系統(tǒng)包括16個處理器芯片,則片間目錄可以分成16個部分,分別存儲在這16個處理器芯片中。

      (3)采用內(nèi)存實現(xiàn):即在內(nèi)存中分配一部分存儲空間作為片間目錄存儲單元131,將片間目錄存儲在內(nèi)存中,通過內(nèi)存控制器(作為片間目錄控制單元132)實現(xiàn)對片間目錄的訪問以及控制。

      處理器核的內(nèi)部結(jié)構(gòu)

      結(jié)合圖1,處理器核的內(nèi)部結(jié)構(gòu)以處理器核110為例進(jìn)行介紹。其中包括:

      處理單元111,用來實現(xiàn)對數(shù)據(jù)的處理。

      緩存112,用來存儲處理器核11頻繁訪問的數(shù)據(jù)塊,一般作為處理器核的私有緩存。

      片上目錄113,用于記錄處理器芯片100內(nèi)被存儲在處理器核的私有緩存的數(shù)據(jù)塊被哪些處理器核訪問的信息(即處理器芯片100中緩存的數(shù)據(jù)塊的訪問核的信息,訪問核的信息至少可包括訪問核的核標(biāo)識)。

      網(wǎng)絡(luò)接口114,用來作為處理器核110連接處理器芯片100中片上網(wǎng)絡(luò)的接口。

      片上目錄的結(jié)構(gòu)

      具體實現(xiàn)中,如圖4所示,片上目錄113包括:片上目錄存儲單元1131以及片上目錄控制單元1132。

      其中,片上目錄存儲單元1131中存儲多個片上目錄表項,每個片上目錄的表項和處理器芯片中每個被寫入到處理器核私有緩存內(nèi)的數(shù)據(jù)塊一一對應(yīng)。

      片上目錄控制單元1132用來實現(xiàn)對片上目錄存儲單元1131所存儲的片上目錄表項進(jìn)行查找、創(chuàng)建、刪除、修改等操作的控制。

      片上目錄表項的數(shù)據(jù)結(jié)構(gòu)可參看圖5,片上目錄表項包含被寫入到處理器核私有緩存內(nèi)的數(shù)據(jù)塊的標(biāo)識11311,片上獨有標(biāo)識11312以及該數(shù)據(jù)塊的訪問核的標(biāo)識列表11313。

      在圖1中,處理器核110存儲的片上目錄有至少兩種實現(xiàn)方式,對于這些實現(xiàn)方式,具體實現(xiàn)根據(jù)需要選擇,本發(fā)明的所有實施例均不加以限定。

      (1)采用集中式的緩存實現(xiàn):即在處理器芯片100中獨立于各處理器核的緩存中分配一塊存儲空間用來作為片上目錄存儲單元1131,或者在處理器芯片100中的某一個處理器核的緩存中分配一塊存儲空間作為片上目錄存儲單元1131,在該片上目錄存儲單元1131設(shè)置控制電路作為片上目錄控制單元1132。

      (2)采用分布式的緩存實現(xiàn):即將片上目錄分成若干塊,將這些目錄塊以緩存目錄(cachedirectory)的方式分別存儲在多片多核處理器的多個處理器芯片內(nèi)部的緩存中,緩存數(shù)據(jù)塊地址的高位一般由標(biāo)簽以及索引構(gòu)成,利用緩存數(shù)據(jù)塊地址中“標(biāo)簽+索引”(即構(gòu)成了緩存數(shù)據(jù)塊的地址高位)作為緩存數(shù)據(jù)塊的唯一標(biāo)識。在每個緩存數(shù)據(jù)塊的片上目錄表項中,將該緩存數(shù)據(jù)塊地址的索引以及標(biāo)簽設(shè)置于該片上目錄表項中,在訪問該片上目錄表項時,通過索引以及標(biāo)簽確定該與該緩存數(shù)據(jù)塊對應(yīng)的片上目錄表項的位置。對于利用索引和標(biāo)簽來定位片上目錄表項的過程,將在后續(xù)的實施例中加以具體描述。例如:假設(shè)多核系統(tǒng)包括128個處理器核,則片上目錄可以分成128個部分,分別存儲在這128個處理器核中。

      層次化目錄的記錄方式以及層次化目錄的訪問方式

      采用片間目錄以及片上目錄所實現(xiàn)的層次化目錄記錄方式如圖6a所示。在圖6a中,多片多核處理器包含8個處理器芯片,每個處理器芯片包括8個處理器核,采用向量的方式分別記錄某一數(shù)據(jù)塊的訪問芯片的信息以及對應(yīng)訪問芯片中的訪問核的信息。片間目錄中的向量標(biāo)識該數(shù)據(jù)塊的訪問芯片的情況,該向量中每一比特位分別記錄每一處理器芯片是否為該數(shù)據(jù)塊的訪問芯片(按照“從左到右”的順序,分別標(biāo)識芯片0到芯片7)。片上目錄的向量標(biāo)識該數(shù)據(jù)塊的訪問核的情況,該向量中每一比特分別記錄每一處理器核是否為該數(shù)據(jù)塊的訪問核(按照“從左到右”的順序,分別標(biāo)識核0到核7)。為了更清楚地標(biāo)識該數(shù)據(jù)塊的訪問芯片以及訪問核,采用顏色來區(qū)分,圖6中灰色比特位記錄的是1,白色比特位記錄的是0。

      以數(shù)據(jù)塊1為例,參看圖6a,根據(jù)和數(shù)據(jù)塊1對應(yīng)的片間目錄的表項中,可看出【芯片0、芯片3、芯片4】為數(shù)據(jù)塊1的訪問芯片,根據(jù)和數(shù)據(jù)塊1對應(yīng)的片上目錄的表項中,可看出,在芯片0的片上目錄表項中,【核0、核1、核2、核5】為數(shù)據(jù)塊1的訪問核,在芯片3的片上目錄表項中,【核5】為數(shù)據(jù)塊1的訪問核,在芯片4的片上目錄表項中,【核1、核3、核4】為數(shù)據(jù)塊1的訪問核。由此可以看出,通過這種層次化的目錄記錄方式,能夠清楚地描述數(shù)據(jù)塊的訪問芯片以及訪問核。

      層次化目錄的訪問方式可參看圖6b,在圖6b中,是采用緩存的方式實現(xiàn)片上目錄以及片間目錄。其中,每一個片上目錄表項以及每一個片間目錄表項采用緩存目錄中的表項來記錄,每個緩存數(shù)據(jù)塊的地址包括:標(biāo)簽、索引以及塊內(nèi)偏移。相應(yīng)的,片上目錄使用了緩存目錄的方式存儲,每個片上目錄表項分別記錄緩存數(shù)據(jù)塊地址中的標(biāo)簽、該緩存數(shù)據(jù)塊是否為本處理器芯片獨有的片上獨有標(biāo)識、以及該緩存數(shù)據(jù)塊的訪問核的列表;片間目錄也使用了緩存目錄得方式存儲,每個片間目錄表項分別記錄緩存數(shù)據(jù)塊地址中 的標(biāo)簽以及該緩存數(shù)據(jù)塊的訪問芯片的列表。

      作為舉例,圖6b所示出的多片多核處理器,包括了四個處理器芯片,每個處理器芯片包括16個處理器核。片間目錄采用分布式的方式緩存在各個處理器芯片中,每個處理器芯片的片上目錄也采用分布式的方式緩存在各個處理器核中。由于具體實現(xiàn)中,片上目錄以及片間目錄所包含的表項非常多,作為示意,圖6b中僅示出片上目錄以及片間目錄的一部分。

      在芯片0中的核0存儲的片上目錄中,第一個目錄表項內(nèi)容是【48:1:(4,5,6)】,該表項的索引是0(標(biāo)示在該表項之前),該表項所對應(yīng)的緩存數(shù)據(jù)塊的標(biāo)簽為48,即標(biāo)簽48和索引0的拼接就構(gòu)成了該目錄表項所對應(yīng)的緩存數(shù)據(jù)塊的地址的高位,而由于緩存數(shù)據(jù)塊地址的高位是唯一的,因此,可以用來唯一的標(biāo)識該緩存數(shù)據(jù)塊。另外,可看出該片上目錄表項的片上獨有標(biāo)識是1,所以這個數(shù)據(jù)是芯片0獨有的,后面的(4,5,6)則表示該緩存數(shù)據(jù)塊存儲在芯片0中的編號分別為4,5,以及6的處理器核的私有緩存中。

      在芯片0所存儲的片間目錄中,可看出芯片0中處理器核0內(nèi)標(biāo)簽為48那個緩存數(shù)據(jù)塊的片間目錄表項,表項內(nèi)容是【48:0】,該表項內(nèi)容中的索引為0,其訪問芯片列表只有0,說明標(biāo)簽為48的緩存數(shù)據(jù)塊僅存儲在芯片0上。

      下面通過示意性的舉例來說明采用緩存數(shù)據(jù)塊的標(biāo)簽和索引來確定片間目錄表項以及片上目錄表項的存儲位置。一個處理器芯片上有16個核,所以這里約定標(biāo)簽為16*n(n為整數(shù),且n≥0)的緩存數(shù)據(jù)塊的片上目錄表項存儲在核0上,標(biāo)簽為16*n+1(n為整數(shù),且n≥0)的緩存數(shù)據(jù)塊的片上目錄表項存儲在核1上,以此類推,可以歸納為:標(biāo)簽為16*n+m(n為整數(shù),且n≥0,m為整數(shù),且0≤m≤15)的緩存數(shù)據(jù)塊的片上目錄表項存儲在核m(m為整數(shù),且0≤m≤15)上。

      該多片多核處理器系統(tǒng)有4個芯片,所以這里約定標(biāo)簽為4*s(s為整數(shù), 且s≥0)的緩存數(shù)據(jù)塊的片上目錄表項存儲在芯片0上,標(biāo)簽為4*s+1(s為整數(shù),且s≥0)的緩存數(shù)據(jù)塊的片上目錄表項存儲在芯片1,以此類推??梢詺w納為:標(biāo)簽為4*s+t(s為整數(shù),且s≥0,t為整數(shù),且0≤t≤3)的緩存數(shù)據(jù)塊的片上目錄表項存儲在核t(t為整數(shù),且0≤t≤3)上。

      進(jìn)一步類推,按照上述這種方式,對于一個包含了n個處理器芯片,且每個處理器芯片包含m個核的多片多核處理器,某一緩存數(shù)據(jù)塊的標(biāo)簽為t,則該緩存數(shù)據(jù)塊的片間目錄表項所存儲的處理器芯片的編號可通過取模運算(modulooperation)得到,即:tmodn(即表示對t除以n計算得到結(jié)果進(jìn)行取余);該緩存數(shù)據(jù)塊的片上目錄表項所存儲的處理器核的編號也可通過取模運算得到,即:tmodm(即表示對t除以m計算得到結(jié)果進(jìn)行取余)。

      多片多核處理器中緩存一致性操作方法實施例

      圖7a示出了根據(jù)本發(fā)明實施例的多片多核系統(tǒng)中緩存一致性操作方法700的示意性流程圖,該方法適用于如圖1所示的多片多核處理器的硬件架構(gòu)。

      s710,接收針對第一數(shù)據(jù)塊的寫請求,該寫請求由第一處理器芯片中第一處理器核發(fā)送,且該寫請求包括第一數(shù)據(jù)塊的標(biāo)識以及待寫入數(shù)據(jù)。

      其中,該步驟由第一處理器芯片的片上目錄控制單元來執(zhí)行。在片上目錄控制單元接收到針對第一數(shù)據(jù)塊的寫請求之后,從該寫請求中獲取第一數(shù)據(jù)塊的標(biāo)識。對第一數(shù)據(jù)塊的寫請求中包含該第一數(shù)據(jù)塊的地址,第一數(shù)據(jù)塊的標(biāo)識可通過選擇該數(shù)據(jù)塊的地址的高位來表示。以圖6b為例:該數(shù)據(jù)塊的地址包括標(biāo)簽,索引以及塊內(nèi)偏移,則可通過該數(shù)據(jù)塊地址的“標(biāo)簽+索引”作為該數(shù)據(jù)塊的標(biāo)識。

      s720,根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在第一處理器芯片中的片上目錄查詢到和第一數(shù)據(jù)塊對應(yīng)的片上目錄的表項,從查詢的片上目錄的表項中確定存儲第一數(shù)據(jù)塊的處理器核的核標(biāo)識,向上述核標(biāo)識對應(yīng)的處理器核發(fā)送刪除第一數(shù)據(jù)塊的指令消息。

      其中,第一處理器芯片的片上目錄控制單元在獲取第一數(shù)據(jù)塊的標(biāo)識之后,根據(jù)第一數(shù)據(jù)塊的標(biāo)識查詢片上目錄存儲單元,確定和第一數(shù)據(jù)塊對應(yīng)的片上目錄表項,從中確定緩存有第一數(shù)據(jù)塊的處理器核的核標(biāo)識,并向這些處理器核發(fā)送刪除第一數(shù)據(jù)塊的指令消息,這些處理器核在接收到該指令消息后,將私有緩存內(nèi)的第一數(shù)據(jù)塊刪除。

      s730,根據(jù)片上目錄表項中的片上獨有標(biāo)識確定第一數(shù)據(jù)塊是第一處理器芯片獨有時,不發(fā)送針對第一數(shù)據(jù)塊的片間目錄查詢請求。

      其中,作為具體實現(xiàn)中的舉例,片上目錄控制單元根據(jù)對應(yīng)第一數(shù)據(jù)塊的片上目錄表項中的片上獨有標(biāo)識確定該標(biāo)識為true時,則確定第一數(shù)據(jù)塊由第一處理器芯片獨有,則第一處理器芯片的片上目錄控制單元不向片間目錄控制單元發(fā)送查詢片間目錄表項的請求。

      s740,指示第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存中。

      其中,第一處理器核接收到待寫入數(shù)據(jù)之后,將該待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存中。

      通過上面的實施例可看出,在片上目錄表項中設(shè)置片上獨有標(biāo)識,通過片上獨有標(biāo)識記錄該表項對應(yīng)的數(shù)據(jù)塊是否在多片多核處理器中為該處理器芯片獨有。采用上述方式使得在進(jìn)行一致性操作過程中,當(dāng)判斷某一數(shù)據(jù)塊對應(yīng)的片上目錄表項中記錄的片上獨有標(biāo)識為true時,就僅在該處理器芯片中進(jìn)行緩存一致性操作,這樣就減少了現(xiàn)有技術(shù)存在的對于任何一個數(shù)據(jù)塊的寫操作都需要片間通信的開銷,從而有效地降低了時延及功耗。

      進(jìn)一步的,當(dāng)根據(jù)片上目錄表項中的片上獨有標(biāo)識確定第一數(shù)據(jù)塊不是第一處理器芯片獨有時,參看圖7b,該緩存一致性操作方法還包括:

      s750,向片間目錄發(fā)送針對第一數(shù)據(jù)塊的片間目錄查詢請求,該查詢請求中包括所述第一數(shù)據(jù)塊的標(biāo)識。

      其中,在確定片上獨有標(biāo)識為false時(說明第一數(shù)據(jù)塊不是第一處理器芯片獨有時),第一處理器芯片的片上目錄控制單元向片間目錄控制單元發(fā)送片間目錄查詢請求,該請求中攜帶有第一數(shù)據(jù)塊的標(biāo)識,該第一數(shù)據(jù)塊的標(biāo)識可由該數(shù)據(jù)塊的地址得到。

      s760,根據(jù)第一數(shù)據(jù)塊的標(biāo)識,查詢片間目錄,確定和第一數(shù)據(jù)塊對應(yīng)的片間目錄的表項。

      其中,片間目錄控制單元在接收到上述查詢請求之后,根據(jù)第一數(shù)據(jù)塊的標(biāo)識查詢片間目錄存儲單元中的表項,確定和第一數(shù)據(jù)塊對應(yīng)的片間目錄表項。

      s770,從片間目錄的表項中確定保存有第一數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識,向芯片標(biāo)識除第一處理器芯片之外其他處理器芯片發(fā)送刪除第一數(shù)據(jù)塊的指令消息,上述指令消息包括所述第一數(shù)據(jù)塊的標(biāo)識。

      其中,作為具體實現(xiàn)中的舉例,片間目錄控制單元從和第一數(shù)據(jù)塊對應(yīng)的片間目錄表項中確定保存有第一數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識后,向這些芯片標(biāo)識對應(yīng)的處理器芯片(除第一處理器芯片之外)發(fā)送刪除第一數(shù)據(jù)塊的指令消息。

      s780,指示第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存。

      其中,作為具體實現(xiàn)中的舉例,在發(fā)送刪除第一數(shù)據(jù)塊的指令消息后, 第一處理器芯片中的片上目錄控制單元向第一處理器核發(fā)送指示消息,使得第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核的私有緩存。

      進(jìn)一步的,在s740及s780之后,參看圖7c,該方法實施例還包括:

      s790,指示第一處理器芯片將待寫入數(shù)據(jù)寫入到第一處理器芯片的共享緩存。

      其中,該步驟中,采用的是緩存寫回機(jī)制中的寫通模式(writethrough),由第一處理器芯片的片上目錄控制單元向第一處理器芯片發(fā)送指示消息,以便將待寫入數(shù)據(jù)寫入到第一處理器芯片的共享緩存。

      進(jìn)一步的,當(dāng)在芯片標(biāo)識除第一處理器芯片之外其他處理器芯片接收到刪除第一數(shù)據(jù)塊的指令消息之后,參看圖7d,該方法實施例還包括:

      s771,除第一處理器芯片之外的各處理器芯片根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在各處理器芯片中的片上目錄查詢和第一數(shù)據(jù)塊對應(yīng)的片上目錄表項,從第一數(shù)據(jù)塊對應(yīng)的各片上目錄的表項中確定存儲有第一數(shù)據(jù)塊的處理器核的核標(biāo)識,向核標(biāo)識對應(yīng)的處理器核發(fā)送刪除第一數(shù)據(jù)塊的指令消息。

      其中,收到刪除第一數(shù)據(jù)塊的指令消息的各處理芯片的片上目錄控制單元,根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在各自的片上目錄存儲單元查找和第一數(shù)據(jù)塊對應(yīng)的片上目錄表項,并從該片上目錄表項中確定緩存有第一數(shù)據(jù)塊的處理器核的核標(biāo)識,向這些核標(biāo)識對應(yīng)的處理器核的私有緩存發(fā)送刪除第一數(shù)據(jù)塊的指令消息,使得這些處理器核將存儲在私有緩存的第一數(shù)據(jù)塊刪除。

      另外一種情況下,即當(dāng)根據(jù)第一數(shù)據(jù)塊的標(biāo)識在第一處理器芯片的片上目錄未能查詢到和第一數(shù)據(jù)塊對應(yīng)的表項,且根據(jù)第一數(shù)據(jù)塊的標(biāo)識在片間 目錄中查詢到與第一數(shù)據(jù)塊的標(biāo)識對應(yīng)的表項時,參看圖8。

      s810,根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在片間目錄查詢到和第一數(shù)據(jù)塊對應(yīng)的片間目錄的表項,從片間目錄的表項中確定保存有第一數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識,向上述芯片標(biāo)識對應(yīng)的處理器芯片發(fā)送刪除第一數(shù)據(jù)塊的指令消息,該指令消息包括所述第一數(shù)據(jù)塊的標(biāo)識。

      其中,第一處理器芯片的片上目錄控制單元在第一處理器芯片的片上目錄未能查詢到第一數(shù)據(jù)塊對應(yīng)的表項,但在片間目錄中查詢到和第一數(shù)據(jù)塊對應(yīng)的表項時,向片間目錄控制單元發(fā)送指示消息,指示片間目錄控制單元根據(jù)第一數(shù)據(jù)塊的標(biāo)識,查詢片間目錄,確定保存有第一數(shù)據(jù)塊的片間目錄的表項,從而確定第一數(shù)據(jù)塊的訪問芯片的標(biāo)識,向上述訪問芯片發(fā)送刪除第一數(shù)據(jù)塊的指令消息,以使得這些訪問芯片將緩存的第一數(shù)據(jù)塊刪除。

      s820,指示第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核內(nèi)的私有緩存。

      其中,在發(fā)送刪除第一數(shù)據(jù)塊的指令消息后,第一處理器芯片中的片上目錄控制單元向第一處理器核發(fā)送指示消息,使得第一處理器核將待寫入數(shù)據(jù)寫入到第一處理器核的私有緩存。

      s830,在第一處理器芯片中的片上目錄中,創(chuàng)建對應(yīng)第一數(shù)據(jù)塊的表項,將第一處理器核的核標(biāo)識寫入表項中存儲第一數(shù)據(jù)塊的處理器核的核標(biāo)識列表中,并設(shè)置片上獨有標(biāo)識為true。

      其中,由第一處理器芯片的片上目錄控制單元在第一處理器芯片中的片上目錄中,創(chuàng)建對應(yīng)第一數(shù)據(jù)塊的表項,將第一處理器核的核標(biāo)識寫入表項中存儲第一數(shù)據(jù)塊的處理器核的核標(biāo)識列表中,并設(shè)置片上獨有標(biāo)識為true。

      進(jìn)一步的,當(dāng)在芯片標(biāo)識對應(yīng)的處理器芯片接收到刪除第一數(shù)據(jù)塊的指令消息之后,該方法實施例還包括:

      s811,各處理器芯片根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在各處理器芯片中的片上目錄查詢和第一數(shù)據(jù)塊對應(yīng)的片上目錄表項,從第一數(shù)據(jù)塊對應(yīng)的各片上目錄的表項中確定存儲有第一數(shù)據(jù)塊的處理器核的核標(biāo)識,向核標(biāo)識對應(yīng)的處理器核發(fā)送刪除第一數(shù)據(jù)塊的指令消息。

      其中,收到刪除第一數(shù)據(jù)塊的指令消息的各處理芯片的片上目錄控制單元,根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在各自的片上目錄存儲單元查找和第一數(shù)據(jù)塊對應(yīng)的片上目錄表項,并從該片上目錄表項中確定緩存有第一數(shù)據(jù)塊的處理器核的核標(biāo)識,向這些核標(biāo)識對應(yīng)的處理器核的私有緩存發(fā)送刪除第一數(shù)據(jù)塊的指令消息,使得這些處理器核將存儲在私有緩存的第一數(shù)據(jù)塊刪除。

      另外一種情況下,即當(dāng)根據(jù)第一數(shù)據(jù)塊的標(biāo)識在第一處理芯片的片上目錄未能查詢到和第一數(shù)據(jù)塊對應(yīng)的表項,且所述第一數(shù)據(jù)塊的標(biāo)識在片間目錄中未能查詢到與第一數(shù)據(jù)塊對應(yīng)的表項時,執(zhí)行如下步驟:

      s910,指示根據(jù)第一數(shù)據(jù)塊的標(biāo)識,從內(nèi)存中讀取第一數(shù)據(jù)塊,將第一數(shù)據(jù)塊存入第一處理器核的私有緩存。

      其中,第一處理器芯片的片上目錄以及片間目錄均未查詢到第一數(shù)據(jù)塊對應(yīng)的表項,則說明在多片多核處理器中不存在第一數(shù)據(jù)塊,則需要第一處理器芯片根據(jù)第一數(shù)據(jù)塊的標(biāo)識,從內(nèi)存中讀取第一數(shù)據(jù)塊,并存入第一處理器核的私有緩存。

      s920,在第一處理器芯片的片上目錄中,創(chuàng)建針對第一數(shù)據(jù)塊的片上目錄表項,在存儲第一數(shù)據(jù)塊的核標(biāo)識列表中記錄第一處理器核的標(biāo)識,并設(shè)置片上獨有標(biāo)識為true。

      其中,第一處理器芯片的片上目錄控制單元在所述第一處理器芯片的片上目錄中,創(chuàng)建針對第一數(shù)據(jù)塊的片上目錄表項,在存儲所述第一數(shù)據(jù)塊的 核標(biāo)識列表中記錄所述第一處理器核的標(biāo)識,并設(shè)置片上獨有標(biāo)識為true,即設(shè)置的第一數(shù)據(jù)塊在多片多核處理器中由第一處理器芯片獨有。

      s930,在片間目錄中,創(chuàng)建對應(yīng)第一數(shù)據(jù)塊的片間目錄表項,在存儲第一數(shù)據(jù)塊的芯片標(biāo)識列表中記錄第一處理器芯片的標(biāo)識。

      其中,第一處理器芯片的片上目錄控制單元,指示片間目錄控制單元在片間目錄中,創(chuàng)建對應(yīng)第一數(shù)據(jù)塊的片間目錄表項,在存儲第一數(shù)據(jù)塊的芯片標(biāo)識列表中記錄第一處理器芯片的標(biāo)識。

      下面結(jié)合舉例詳細(xì)描述本發(fā)明實施例的緩存一致性操作的方法。

      圖10為本發(fā)明另一實施例的目錄(包括片上目錄以及片間目錄)的訪問方法的示意性流程圖。結(jié)合圖1所示的多片多核處理器的組成結(jié)構(gòu),以處理器芯片100中的核11發(fā)出訪問請求(讀請求或者寫請求)消息為例來進(jìn)行說明。

      1001,接收針對數(shù)據(jù)塊1的訪問請求。

      其中,對數(shù)據(jù)塊1的訪問請求攜帶有待訪問數(shù)據(jù)塊的地址。

      1002,請求核根據(jù)待訪問的數(shù)據(jù)塊的標(biāo)識訪問片上目錄,若命中片上目錄表項,則執(zhí)行1003;若未命中片上目錄表項,則執(zhí)行1010。

      其中,請求核指的是發(fā)出讀請求或者寫請求的處理器核。作為舉例,可指的是圖1中核11。片上目錄指的是發(fā)出請求的處理器核所屬處理器芯片的片上目錄,用來記錄存儲在該處理器芯片中各處理器核私有緩存中的數(shù)據(jù)塊以及這些數(shù)據(jù)塊的訪問核的信息。作為舉例,即圖1中處理器芯片100上的片上目錄113,其中片上目錄的組成如圖4所示。命中片上目錄表項,指的是根據(jù)待訪問數(shù)據(jù)塊的標(biāo)識找到和該標(biāo)識對應(yīng)的片上目錄表項,作為舉例,片上目錄表項的具體數(shù)據(jù)結(jié)構(gòu)如圖5所示。

      1003,判斷請求類型是讀請求還是寫請求,若為讀請求時,則執(zhí)行1004; 若為寫請求時,則執(zhí)行1005。

      其中,通過訪問請求消息中預(yù)先定義的字段或者比特位來識別是讀請求還是寫請求。作為舉例,預(yù)先在訪問請求消息中設(shè)定w/r比特位來標(biāo)識請求類型,譬如:當(dāng)該比特位為1時表示寫請求,當(dāng)該比特位為0時表示讀請求。

      1004,若為讀請求,將請求核加入片上目錄表項中的訪問核列表。

      例如,對于發(fā)送讀請求的請求核(即發(fā)出讀請求的處理器核),待讀取的數(shù)據(jù)塊會被存入請求核的私有緩存中,需要將該請求核的標(biāo)識記錄在該數(shù)據(jù)塊對應(yīng)的片上目錄表項中的訪問核的標(biāo)識列表。

      1005,若為寫請求時,需要判斷寫請求地址所對應(yīng)的數(shù)據(jù)塊是否為片上獨有。若是片上獨有,則執(zhí)行1006;若不是片上獨有,則執(zhí)行1007。

      其中,對于寫請求,需要判斷寫請求地址所對應(yīng)的數(shù)據(jù)塊是否為片上獨有。結(jié)合圖5所示的片上目錄表項的數(shù)據(jù)結(jié)構(gòu),通過片上獨有標(biāo)識11312來標(biāo)識對應(yīng)的數(shù)據(jù)塊是否為片上獨有。

      1006,當(dāng)寫請求地址對應(yīng)的數(shù)據(jù)塊是片上獨有時,則對該數(shù)據(jù)塊進(jìn)行片上一致性維護(hù)。

      具體的,片上一致性維護(hù)的過程是根據(jù)片上目錄表項中所存儲的訪問核的標(biāo)識列表確定私有緩存中存儲有該數(shù)據(jù)塊的處理器核,發(fā)送刪除該數(shù)據(jù)塊的指令消息,使得這些處理器核將私有緩存內(nèi)的該數(shù)據(jù)塊刪除。

      1007,當(dāng)寫請求地址對應(yīng)的數(shù)據(jù)塊不是片上獨有時,訪問片間目錄。

      例如,可以由圖4中的片上目錄控制模塊發(fā)送片間目錄的訪問請求,該訪問請求中攜帶有數(shù)據(jù)塊的標(biāo)識。在片間目錄找到和該數(shù)據(jù)塊對應(yīng)的片間目錄的表項,根據(jù)圖3所示的片間目錄表項的數(shù)據(jù)結(jié)構(gòu),確定該數(shù)據(jù)塊的訪問芯片的標(biāo)識列表,然后對該寫請求地址對應(yīng)的數(shù)據(jù)塊進(jìn)行全局一致性維護(hù)。

      1008,對寫請求地址對應(yīng)的數(shù)據(jù)塊進(jìn)行全局一致性維護(hù)。

      其中,全局一致性維護(hù),即需要根據(jù)寫請求地址對應(yīng)的數(shù)據(jù)塊的標(biāo)識查詢片間目錄確定訪問芯片,然后根據(jù)該數(shù)據(jù)塊的標(biāo)識分別查詢各個訪問芯片的片上目錄表項確定訪問核,向這些訪問核發(fā)送刪除該數(shù)據(jù)塊的指令消息,由各個訪問核的私有緩存將緩存的該數(shù)據(jù)塊刪除,然后將待寫入數(shù)據(jù)寫到請求核的私有緩存中。

      以圖6a作為舉例,確定【芯片0、芯片3、芯片4】為數(shù)據(jù)塊1的訪問芯片,根據(jù)和數(shù)據(jù)塊1對應(yīng)的片上目錄的表項中,可看出在芯片0的片上目錄表項中,【核0、核1、核2、核5】為數(shù)據(jù)塊1的訪問核,在芯片3的片上目錄表項中,【核5】為數(shù)據(jù)塊1的訪問核,在芯片4的片上目錄表項中,【核1、核3、核4】為數(shù)據(jù)塊1的訪問核。對數(shù)據(jù)塊1進(jìn)行全局一致性維護(hù),即將上述這些數(shù)據(jù)塊1的訪問核中私有緩存中的數(shù)據(jù)塊1刪除。

      1009,在執(zhí)行完全局一致性維護(hù)之后,將該數(shù)據(jù)塊對應(yīng)的片上目錄表項中的片上獨有標(biāo)識置1。

      例如,這里本實施例是采用1個比特作為片上獨有標(biāo)識,當(dāng)該標(biāo)識取值為1時,表示片上獨有;當(dāng)該標(biāo)識取值為0時,表示不是片上獨有。

      1010,當(dāng)訪問片上目錄未命中時,需要訪問片間目錄,確定是否命中。若為是,則執(zhí)行1011;若為否,則執(zhí)行1018。

      其中,本實施例采用的是層次化的目錄結(jié)構(gòu),即每個處理器芯片包含片上目錄,在整個多片多核處理器系統(tǒng)中包含片間目錄。當(dāng)訪問核所在處理器芯片中的片上目錄未能找到相應(yīng)的表項時,需要去片間目錄查詢,看是否其他的處理器芯片作為待訪問數(shù)據(jù)塊的訪問芯片。

      1011,判斷訪問請求的類型是讀請求還是寫請求,如果是讀請求,執(zhí)行1012;如果是寫請求,則執(zhí)行1015。

      例如:通過請求消息中預(yù)先定義的字段或者比特位來識別是讀請求還是寫 請求。

      1012,確定訪問請求為讀請求時,將發(fā)送讀請求的請求核所在處理器芯片的標(biāo)識添加到讀請求對應(yīng)數(shù)據(jù)塊的訪問芯片列表。

      其中,發(fā)送讀請求的請求核(對應(yīng)的是處理器核)將其所在芯片的標(biāo)識添加到片間目錄表項中的訪問芯片列表中。

      1013,新建片上目錄表項。

      其中,由于片上目錄中未能夠命中該寫請求對應(yīng)的數(shù)據(jù)塊的目錄表項,則需要在請求核所在芯片的片上目錄中新建對應(yīng)數(shù)據(jù)塊的片上目錄表項。

      1014,將請求核加入訪問核列表。

      其中,在新創(chuàng)建的片上目錄表項中,將請求核(即發(fā)出請求的處理器核)的標(biāo)識添加到訪問核的標(biāo)識列表中。

      1015,對于1011步驟中的讀寫類型判斷為寫請求時,執(zhí)行全局一致性維護(hù)。

      其中,執(zhí)行全局一致性維護(hù)的過程和步驟1008類似,在此不再贅述。

      1016,新建片上目錄表項。

      其中執(zhí)行新建片上目錄表項的操作和步驟1012類似,在此不再贅述。

      1017,將該數(shù)據(jù)塊對應(yīng)的片上目錄表項中的片上獨有標(biāo)識置1。

      其中執(zhí)行片上獨有標(biāo)識置1的操作和步驟1009類似,在此不再贅述。

      1018,當(dāng)采用待訪問數(shù)據(jù)塊對片間目錄查詢未能夠命中時,新建片間目錄表項。

      其中,在片間目錄中創(chuàng)建針對待訪問數(shù)據(jù)塊的片間目錄表項。作為舉例,創(chuàng)建的片間目錄表項采用圖3所示的數(shù)據(jù)結(jié)構(gòu)的形式。

      1019,在針對待訪問的數(shù)據(jù)塊創(chuàng)建完片間目錄表項之后,需要進(jìn)一步判斷請求類型是讀還是寫。如果是讀請求,執(zhí)行1020;如果是寫請求,則執(zhí)行1023。

      其中,作為舉例,通過訪問請求消息中預(yù)先定義的字段或者比特位來識別是讀請求還是寫請求。作為舉例,預(yù)先在訪問請求消息中設(shè)定w/r比特位來標(biāo)識請求類型,譬如:當(dāng)該比特位為1時表示寫請求,當(dāng)該比特位為0時表示讀請求。

      1020,判斷是讀請求時,將發(fā)出讀請求的核所在的芯片(即請求芯片)添加到訪問芯片列表。

      該步驟和步驟1012的實現(xiàn)方式類似,在此不再贅述。

      1021,新建片上目錄表項。

      該步驟和和步驟1013的實現(xiàn)方式類似,在此不再贅述。

      1022,將請求核的標(biāo)識加入訪問核列表。

      該步驟和和步驟1014的實現(xiàn)方式類似,在此不再贅述。

      1023,將請求芯片加入到訪問芯片列表。

      和步驟1012的執(zhí)行過程一致,在此不再贅述。

      1024,新建片上目錄表項。

      和步驟1013的執(zhí)行過程一致,在此不再贅述。

      1025,將請求核加入訪問核列表。

      和步驟1014的執(zhí)行過程一致,在此不再贅述。

      多片多核處理器實施例

      本發(fā)明實施例還提供了一種能夠加快緩存一致性處理效率的多片多核處理器。如圖1所示并結(jié)合圖2-5,以圖1中的處理器芯片100、以及處理器芯片100中的核11為例。其中,處理器核11中的片上目錄緩存113包括片上目錄存儲單元1131以及片上目錄控制單元1132,片間目錄130包括片間目錄 存儲單元131以及片間目錄控制單元132。

      其中,片間目錄存儲單元1131所存儲的每個片間目錄的表項和多片多核處理器中每個被寫入到處理器核私有緩存內(nèi)的數(shù)據(jù)塊一一對應(yīng),每個片間目錄的表項記錄有數(shù)據(jù)塊的標(biāo)識1311以及存儲所述數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識列表1312。

      片上目錄緩存113包括片上目錄存儲單元1131以及片上目錄控制單元1132,每個核包括用來存儲數(shù)據(jù)塊的私有緩存,片上目錄存儲單元1131所存儲的每個片上目錄表項和處理器芯片中每個被寫入到處理器核內(nèi)私有緩存的數(shù)據(jù)塊一一對應(yīng),每個片上目錄的表項記錄數(shù)據(jù)塊的標(biāo)識11311、片上獨有標(biāo)識11312以及存儲有所述數(shù)據(jù)塊的處理器核的核標(biāo)識列表11313,片上獨有標(biāo)識11312用于標(biāo)識所述數(shù)據(jù)塊在多片多核處理器中是否為處理器芯片獨有。

      核11中片上目錄控制單元1132接收針對第一數(shù)據(jù)塊的寫請求,該寫請求由處理器芯片100中1處理器核11發(fā)送,且該寫請求包括所述第一數(shù)據(jù)塊的標(biāo)識以及待寫入數(shù)據(jù);

      處理器芯片100的片上目錄控制單元1132根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在處理器芯片100中的片上目錄存儲單元1131查詢到和第一數(shù)據(jù)塊對應(yīng)的片上目錄的表項,從查詢的片上目錄的表項中確定存儲第一數(shù)據(jù)塊的處理器核的核標(biāo)識,向核標(biāo)識對應(yīng)的處理器核發(fā)送刪除所述第一數(shù)據(jù)塊的指令消息;

      處理器芯片100的片上目錄控制單元1132根據(jù)片上目錄表項中的片上獨有標(biāo)識確定第一數(shù)據(jù)塊是處理器芯片100獨有時,不向片間目錄控制單元132發(fā)送針對第一數(shù)據(jù)塊的片間目錄查詢請求;

      處理器芯片100的片上目錄控制單元1132指示第一處理器核將待寫入數(shù)據(jù)寫入到所述第一處理器核內(nèi)的私有緩存112。

      當(dāng)根據(jù)片上目錄表項中的片上獨有標(biāo)識11312確定第一數(shù)據(jù)塊不是所述處理器芯片100獨有時,

      處理器芯片100的片上目錄控制單元1132向片間目錄控制單元132發(fā)送針對第一數(shù)據(jù)塊的片間目錄查詢請求,該查詢請求中包括所述第一數(shù)據(jù)塊的標(biāo)識。

      片間目錄控制單元132根據(jù)第一數(shù)據(jù)塊的標(biāo)識,查詢片間目錄存儲單元131存儲的片間目錄表項,確定和第一數(shù)據(jù)塊對應(yīng)的片間目錄的表項;

      片間目錄控制單元132從片間目錄的表項中確定保存有所述第一數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識,向芯片標(biāo)識除處理器芯片100之外其他處理器芯片發(fā)送刪除第一數(shù)據(jù)塊的指令消息,該指令消息包括所述第一數(shù)據(jù)塊的標(biāo)識。

      處理器芯片100的片上目錄控制單元1132指示處理器核110將待寫入數(shù)據(jù)寫入到處理器核110內(nèi)的私有緩存112。

      在指示所述第一處理器核將所述待寫入數(shù)據(jù)寫入到所述第一處理器核內(nèi)的私有緩存之后,處理器芯片100的片上目錄控制單元1132,還用于指示處理器芯片100將待寫入數(shù)據(jù)寫入到處理器芯片100內(nèi)的共享緩存。

      當(dāng)根據(jù)第一數(shù)據(jù)塊的標(biāo)識在處理器芯片100的片上目錄存儲單元1131未能查詢到和第一數(shù)據(jù)塊對應(yīng)的表項,且根據(jù)第一數(shù)據(jù)塊的標(biāo)識在片間目錄存儲單元131中查詢到與第一數(shù)據(jù)塊的標(biāo)識對應(yīng)的表項時,處理器芯片100的片上目錄控制單元1132,還用于指示片間目錄控制單元132根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在片間目錄存儲單元131查詢到和第一數(shù)據(jù)塊對應(yīng)的片間目錄的表項,從片間目錄的表項中確定保存有第一數(shù)據(jù)塊的處理器芯片的芯片標(biāo)識,向該芯片標(biāo)識對應(yīng)的處理器芯片發(fā)送刪除第一數(shù)據(jù)塊的指令消息,上述指令消息包括所述第一數(shù)據(jù)塊的標(biāo)識。

      處理器芯片100的片上目錄控制單元1132,還用于指示處理器核11將待寫入數(shù)據(jù)寫入到處理器核11內(nèi)的私有緩存112。

      處理器芯片100的片上目錄控制單元1132,還用于在處理器芯片100中的片上目錄存儲單元1131中,創(chuàng)建對應(yīng)第一數(shù)據(jù)塊的表項,將處理器核11的核標(biāo)識寫入表項中存儲第一數(shù)據(jù)塊的處理器核的核標(biāo)識列表中,并設(shè)置片上獨有標(biāo)識為true。

      當(dāng)根據(jù)第一數(shù)據(jù)塊的標(biāo)識在處理器芯片100的片上目錄存儲單元1131未能查詢到和第一數(shù)據(jù)塊對應(yīng)的表項,且根據(jù)第一數(shù)據(jù)塊的標(biāo)識在片間目錄存儲單元131中未能查詢到與第一數(shù)據(jù)塊的標(biāo)識對應(yīng)的表項時,處理器芯片100的片上目錄控制單元1132,還用于指示內(nèi)存控制器140根據(jù)第一數(shù)據(jù)塊的標(biāo)識,從內(nèi)存300中讀取第一數(shù)據(jù)塊,將第一數(shù)據(jù)塊存入處理器核11的私有緩存112。

      處理器芯片100的片上目錄控制單元1132,還用于在處理器芯片100的片上目錄存儲單元1131中,創(chuàng)建針對第一數(shù)據(jù)塊的片上目錄表項,在存儲第一數(shù)據(jù)塊的核標(biāo)識列表中記錄第一處理器核的標(biāo)識,并設(shè)置片上獨有標(biāo)識為true。

      處理器芯片100的片上目錄控制單元1132,還用于指示片間目錄控制單元132在片間目錄存儲單元131中,創(chuàng)建對應(yīng)第一數(shù)據(jù)塊的片間目錄表項,在存儲第一數(shù)據(jù)塊的芯片標(biāo)識列表中記錄處理器芯片100的標(biāo)識。

      在芯片標(biāo)識對應(yīng)的處理器芯片接收到刪除所述第一數(shù)據(jù)塊的指令消息之后,多片多核處理器中各處理器芯片的片上目錄控制單元,用于根據(jù)第一數(shù)據(jù)塊的標(biāo)識,在各處理器芯片中的片上目錄存儲單元查詢和第一數(shù)據(jù)塊對應(yīng)的片上目錄表項,從第一數(shù)據(jù)塊對應(yīng)的各片上目錄的表項中確定存儲有第一數(shù)據(jù)塊的處理器核的核標(biāo)識,指示核標(biāo)識對應(yīng)的處理器核刪除私有緩存的第一數(shù)據(jù)塊。

      需要說明的是,本發(fā)明的所有實施例中所提及的“第一”“第二”等僅僅為了區(qū)別彼此以描述方便而使用,不能將這些序號解讀為對后面所連接的實體范圍的限定。

      本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。

      所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。

      在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口、裝置或單元的間接耦合或通信連接,也可以是電的,機(jī)械的或其它的形式連接。

      所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本發(fā)明實施例方案的目的。

      另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中, 也可以是各個單元單獨物理存在,也可以是兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。

      所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分,或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

      以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到各種等效的修改或替換,這些修改或替換都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1