專利名稱:在相關(guān)的多處理器中支持機(jī)會共享的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及微處理器系統(tǒng),更具體地說,涉及能夠在具有相關(guān)的高速緩存(coherent cache)的多處理器環(huán)境下運(yùn)行的微處理器系統(tǒng)。
背景技術(shù):
處理器可以使用高速緩存(cache),以具有比需要直接從系統(tǒng)存儲器訪問全部數(shù)據(jù)時可能的速度更快的數(shù)據(jù)訪問。從高速緩存進(jìn)行讀取可以比從系統(tǒng)存儲器快得多。也可以寫高速緩存,并延遲對系統(tǒng)存儲器內(nèi)相應(yīng)數(shù)據(jù)的更新,直到處理器或其高速緩存方便的時候。當(dāng)在多處理器環(huán)境下使用處理器高速緩存時,必須注意保證數(shù)據(jù)的各種副本(copy)相同,或至少保證任何改變都能得到跟蹤和解釋。數(shù)據(jù)的嚴(yán)格相等并非必要,甚至不是所期望的如上所述,有時高速緩存會包含修改后的數(shù)據(jù),并且以后會更新系統(tǒng)存儲器。類似地,幾個處理器可以共享數(shù)據(jù)。如果一個處理器向其高速緩存中寫入了數(shù)據(jù)的更新副本,那么它應(yīng)當(dāng)或者告知其它處理器它進(jìn)行了這樣的操作,以使它們將來不要信任它們的數(shù)據(jù),或者它應(yīng)當(dāng)向其它處理器全都發(fā)送一個更新數(shù)據(jù)的副本。即使不能保證多個處理器的高速緩存中的數(shù)據(jù)的相同性(equality),也保證這些數(shù)據(jù)的相關(guān)性(coherency)的各套規(guī)則稱為高速緩存一致性方案。
一種高速緩存一致性方案是使用回寫式(write-back)高速緩存的方案。在回寫式高速緩存中,一般通過寫高速緩存,并把狀態(tài)設(shè)置為已修改(Modified)或“M”狀態(tài),或者設(shè)置為已持有(Owned)或“O”狀態(tài),就可以修改高速緩存中的數(shù)據(jù)。所述的O狀態(tài)可被認(rèn)為是一種修改共享(modified-shared)狀態(tài),其允許修改后的共享數(shù)據(jù)保留在高速緩存中。包含O高速緩存行(cache line)的高速緩存負(fù)責(zé)以后更新存儲器??梢园烟幱谝研薷幕颉癕”狀態(tài),或者已持有或“O”狀態(tài)的高速緩存行稱作臟(dirty)高速緩存行。但是,存儲器內(nèi)數(shù)據(jù)的副本可以保持在非臟狀態(tài)下,避免了立即把臟數(shù)據(jù)寫入存儲器的需求。相對于在修改了高速緩存內(nèi)的數(shù)據(jù)后,立即把臟數(shù)據(jù)寫入存儲器的操作來說,這可以取得性能上的改善。通常,臟數(shù)據(jù)會在觸發(fā)事件后被寫入存儲器。這些觸發(fā)事件可以包括逐出所述的臟高速緩存行,而逐出的原因是因為另一個高速緩存行想要在高速緩存內(nèi)部對應(yīng)的塊中取代它,或者是因為另一個處理器想要修改同一個高速緩存行。
發(fā)明內(nèi)容
本發(fā)明公開了一種用于改善高速緩存性能的處理器、系統(tǒng)和方法。所述處理器包括從第一塊中逐出第一臟高速緩存行的高速緩沖存儲器;和耦合到所述高速緩沖存儲器上和處理器間接口上的處理器間接口邏輯,該處理器間接口邏輯開始對耦合到所述處理器間接口上的第二處理器中的第一替代塊的監(jiān)聽請求。
在本發(fā)明的一個實施例中,所述監(jiān)聽請求在所述第一臟高速緩存行的寫行請求之后。在本發(fā)明的一個實施例中,所述處理器間接口邏輯從所述第二處理器收到處理器間接口消息信號后,將向所述第二處理器發(fā)送所述第一臟高速緩存行。其中,當(dāng)所述第一替代塊處于無效狀態(tài)或共享狀態(tài)時可以發(fā)送所述處理器間接口消息信號。在本發(fā)明另一個實施例中,當(dāng)所述處理器間接口邏輯從耦合到所述處理器間接口上的第三處理器接收到對用于第二臟高速緩存行的第二替代塊的監(jiān)聽請求時,所述高速緩存將發(fā)出接受信號。其中,所述接受信號可以表示所述第二替代塊處于無效狀態(tài)或共享狀態(tài)。在本實施例中,當(dāng)所述處理器的后退信號輸入保持為假時,所述第二替代塊可以接收所述第二臟高速緩存行。
本發(fā)明所提供的方法包括從第一處理器的第一高速緩存中逐出臟高速緩存行;向第二處理器發(fā)送對第一替代塊的監(jiān)聽請求;如果第一替代塊是可用的,則從所述第二處理器發(fā)送處理器間接口消息,該接口消息表示了所述第一替代塊的可用性;以及從所述第一處理器向所述第二處理器的所述第一替代塊發(fā)送所述第一臟高速緩存行。
在本發(fā)明的一個實施例中,上述方法還可以包括從所述第二處理器發(fā)送接受信號以表示所述第二處理器可以接收所述第一臟高速緩存行;還包括接收所述第一臟高速緩存行;確定所述第一替代塊是否處于無效狀態(tài);確定所述第一替代塊是否處于共享狀態(tài);或者禁止第三處理器發(fā)送表示了第二替代塊的可用性的處理器間接口消息。在本發(fā)明的一個實施例中,上述禁止所述第三處理器包括從所述第二處理器向所述第三處理器發(fā)送所述接受信號。其中,所述第三處理器可以在后退輸入端接收所述接受信號。在一個實施例中,所述方法還可以包括禁止存儲器控制器接受所述臟高速緩存行。其中,所述禁止所述存儲器控制器可以包括從所述第二處理器向所述存儲器控制器發(fā)送所述接受信號。其中,所述存儲器控制器可以在后退輸入端接收所述接受信號。
本發(fā)明還提供了一種系統(tǒng),包括處理器間接口;音頻輸入輸出端,其通過接口耦合到所述處理器間接口上;第一處理器,包括要逐出臟高速緩存行的第一高速緩存,和耦合到所述第一高速緩存上和所述處理器間接口上的第一處理器間接口邏輯,所述第一處理器間接口邏輯對應(yīng)所述臟高速緩存行開始沿著所述處理器間接口的監(jiān)聽請求;和第二處理器,包括具有第一替代塊的第二高速緩存,和耦合到所述第二高速緩存上和所述處理器間接口上的第二處理器間接口邏輯,當(dāng)?shù)谝惶娲鷫K可用于接收所述臟高速緩存行時,所述第二處理器間接口邏輯響應(yīng)所述監(jiān)聽請求。
在本發(fā)明的一個實施例中,所述系統(tǒng)還可以包括第三處理器,該第三處理器包括具有第二替代塊的第三高速緩存和耦合到所述第三高速緩存上和所述處理器間接口上的第三處理器間接口邏輯,當(dāng)?shù)诙娲鷫K可用于接收所述臟高速緩存行時,所述第三處理器間接口邏輯響應(yīng)所述監(jiān)聽請求。
在本實施例中,還可以當(dāng)所述第一替代塊可用時,所述第二處理器在接受信號上發(fā)送真值,并且其中,當(dāng)在所述第三處理器的后退輸入端上接收到所述接受信號上的所述真值時,所述第三處理器不表示它能夠接收所述臟高速緩存行。
在本發(fā)明的一個實施例中,所述系統(tǒng)還可以包括耦合到所述處理器間接口上的存儲器控制器,該存儲器控制器包括后退輸入端以表示所述存儲器控制器不能接收所述臟高速緩存行。
在本實施例中,還可以當(dāng)所述第一替代塊可用時,所述第二處理器在接受信號上發(fā)送真值,并且其中,當(dāng)接受信號上的所述真值正被輸入所述存儲器控制器的所述后退輸入端時,所述存儲器控制器不接收所述臟高速緩存行。
在附圖中以示例的方式,而不是以限制性的方式來圖示本發(fā)明,附圖中相似的標(biāo)號代表類似的元件,其中圖1是根據(jù)本發(fā)明一個實施例的多處理器系統(tǒng)的示意圖;圖2是根據(jù)本發(fā)明一個實施例的高速緩存的圖,示出了把高速緩存結(jié)構(gòu)分配為組、塊和字段的方案;圖3是根據(jù)本發(fā)明一個實施例,具有接受和后退信號線的處理器的示意圖;圖4是根據(jù)本發(fā)明一個實施例,采用接受和后退信號線的總線連接的多處理器系統(tǒng)的示意圖;圖5是根據(jù)本發(fā)明另一個實施例,采用接受和后退信號線的點(diǎn)對點(diǎn)連接多處理器系統(tǒng)的示意圖。
具體實施例方式
以下描述將說明用于操作多處理器系統(tǒng)中的高速緩存的技術(shù)。在以下描述中,將闡述許多具體的細(xì)節(jié),例如邏輯實施、軟件模塊分配、總線信令技術(shù)以及操作的細(xì)節(jié),以對本發(fā)明有更徹底的了解。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)意識到,無需這些具體的細(xì)節(jié)就可以實現(xiàn)本發(fā)明。在其它實例中,就不再詳細(xì)地示出控制結(jié)構(gòu)、門級電路和全部軟件指令序列,以免分散了對本發(fā)明內(nèi)容的注意力。在所包括的說明內(nèi)容的幫助下,本領(lǐng)域的普通技術(shù)人員無需過多的試驗就可以實施適當(dāng)?shù)墓δ芴匦?。本發(fā)明以微處理器系統(tǒng)內(nèi)的硬件的形式進(jìn)行公開。然而,還可以用其它形式的處理器來實現(xiàn)本發(fā)明,例如數(shù)字信號處理器,或者用包含處理器的計算機(jī)來實現(xiàn),例如小型計算機(jī)或大型計算機(jī)。
參考圖1,根據(jù)一個實施例示出了多處理器系統(tǒng)100的示意圖。圖1中的系統(tǒng)可以包括幾個處理器,但為了簡明起見,這里只示出了其中兩個處理器140、160。處理器140、160可以包括一級(L1)高速緩存142、162。在一些實施例中,這些一級高速緩存142、162可以具有相同的高速緩存一致性方案,而在其它的實施例中,它們卻可能具有相互不同的高速緩存一致性方案,盡管它們?nèi)匀淮嬖谟诠驳南到y(tǒng)總線106上或者另一種形式的處理器間接口上。高速緩存一致性方案常見的例子是有效/無效(VI)高速緩存、已修改/專有/共享/無效(MESI)高速緩存和已修改/已持有/專有/共享/無效(MOESI)高速緩存?!耙殉钟小被騉狀態(tài)可能不如M、E、S或I狀態(tài)那樣眾所公知。這種O狀態(tài)可被認(rèn)為是一種修改共享狀態(tài),其允許已修改的共享數(shù)據(jù)保留在高速緩存中。包含O高速緩存行(cache line)的高速緩存負(fù)責(zé)隨后更新存儲器。
圖1中的多處理器系統(tǒng)100可以有幾個功能部件(function),這些功能部件通過總線接口144、164、112、108與系統(tǒng)總線106相連。通過總線接口與系統(tǒng)總線相連的功能部件有一個通用的名字叫“代理(agent)”。代理的例子是處理器140和160、總線橋132和存儲器控制器134。存儲器控制器134可以允許處理器140、160對系統(tǒng)存儲器110進(jìn)行讀寫操作??偩€橋132可以允許系統(tǒng)總線106和總線116之間的數(shù)據(jù)交換,所述總線116可以是ISA(工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu))總線或PCI(外圍元件互連)總線。在總線116上可以存在各種I/O(輸入/輸出)設(shè)備114,包括圖形控制器、視頻控制器和網(wǎng)絡(luò)控制器。另一個總線橋118可以用來實現(xiàn)總線116和總線120之間的數(shù)據(jù)交換??偩€120可以是SCSI(小型計算機(jī)系統(tǒng)接口)總線、IDE(綜合驅(qū)動電子設(shè)備)總線或USB(通用串行總線)總線。另外的I/O設(shè)備可以和總線120相連。這些設(shè)備可以包括鍵盤和指針控制設(shè)備122(包括鼠標(biāo))、音頻I/O 124、包括調(diào)制解調(diào)器和網(wǎng)絡(luò)接口在內(nèi)的通信設(shè)備126和包括磁盤驅(qū)動器和光盤驅(qū)動器在內(nèi)的數(shù)據(jù)存儲設(shè)備128。軟件代碼130可以存儲在數(shù)據(jù)存儲設(shè)備128上。
在其它實施例中,可以通過專用點(diǎn)對點(diǎn)接口來連接處理器140、160。例如,處理器140可以通過一個點(diǎn)對點(diǎn)接口與處理器160相連,并且處理器140可以通過第二點(diǎn)對點(diǎn)接口與總線橋132相連。在一些實施例中,可以用其它接口取代總線橋。系統(tǒng)存儲器110可以被進(jìn)一步細(xì)分,使其一部分通過第三點(diǎn)對點(diǎn)接口與處理器140相連接。通用術(shù)語“處理器間接口”可以用來包括系統(tǒng)總線和點(diǎn)對點(diǎn)接口。
參考圖2,示出了一高速緩存的圖,示出了根據(jù)本發(fā)明的一個實施例,把高速緩存結(jié)構(gòu)分配為組(set)、塊(block)和字段(field)的方案。高速緩存一般不存儲單個存儲位置,而是對存儲器中的塊的內(nèi)容進(jìn)行存儲,這些內(nèi)容被稱為“高速緩存行”。按常見的說法,與高速緩存相關(guān)的術(shù)語“塊”可以表示位置(location),而與高速緩存相關(guān)的“高速緩存行”可以表示對應(yīng)的塊中的內(nèi)容。可以把高速緩存歸類為完全關(guān)聯(lián)的、組關(guān)聯(lián)的和直接映射的三種。在完全關(guān)聯(lián)高速緩存中,來自存儲器的塊可以進(jìn)入高速緩存內(nèi)的任何塊位置。在組關(guān)聯(lián)高速緩存中,可以把來自存儲器的給定塊放入高速緩存的一個特定子集內(nèi)的任何塊中,該特定的子集被稱為“組”。最后,在直接映射高速緩存中,來自存儲器的給定塊只可以放入高速緩存中專門的塊內(nèi)。
在圖2的實施例中,具有多個組,每個組有四個塊。這可以稱作四路組關(guān)聯(lián)高速緩存。一般情況下,如果每個組都有n個塊,那么高速緩存就可以被稱作n路組關(guān)聯(lián)高速緩存。注意,可以把完全關(guān)聯(lián)高速緩存看作只有一個組,并且總塊數(shù)為n的n路組關(guān)聯(lián)高速緩存。類似地,可以把直接映射高速緩存看作塊的數(shù)量等于組的數(shù)量的1路組關(guān)聯(lián)高速緩存。
圖2示出了許多組,組0 204、組1 208,向上一直延伸超過組6228。展開組3 216以顯示其所包括的塊,即從塊0 230到塊3 236。每個塊都有數(shù)據(jù)、地址和狀態(tài)字段。例如,塊2包括數(shù)據(jù)Dy 264、地址Ay 254和狀態(tài)E(專有)244。在一些實施例中,地址字段可能包括被稱作標(biāo)簽、索引和塊的子段,如圖2所示。在這些子段中,塊指的是塊號,索引指的是組號,標(biāo)簽指的是形成地址所需的附加位。在其它實施例中,地址字段可能只包括標(biāo)簽。由于上下文可以提供地址的其它部分,所以僅使用標(biāo)簽可能就足夠了。
參考圖3,根據(jù)本發(fā)明的一個實施例,示出了具有接受和后退信號線的處理器300的示意圖。處理器300包括高速緩存320和總線接口邏輯310,該總線接口邏輯310帶有一個用于連接系統(tǒng)總線的總線抽頭(busstub)312。所述總線接口邏輯310是處理器間接口邏輯的一個具體例子,用于與處理器間接口相連接。在其它實施例中,處理器間接口邏輯可能是一個點(diǎn)對點(diǎn)接口邏輯,用于與點(diǎn)對點(diǎn)接口相連接。
高速緩存320可以是一個回寫式高速緩存。如果高速緩存320內(nèi)的高速緩存行是臟的(已修改M或已占有O),則該臟高速緩存行將保留在高速緩存320中而不更新系統(tǒng)存儲器,直到被逐出。在一些實施例中,當(dāng)由于在存儲器事務(wù)上發(fā)生了高速緩存未命中(cache miss)而需要把另一個高速緩存行加載到高速緩存中時,可以逐出一個高速緩存行??梢酝ㄟ^幾種策略之一來選擇所要逐出的現(xiàn)存高速緩存行,包括隨機(jī)選擇法、近來最少使用選擇法和先入先出選擇法。在其它情形中,一個臟高速緩存行可能由于另一個處理器中的存儲器事務(wù)而被逐出,迫使這個臟高速緩存行進(jìn)入無效狀態(tài)。在逐出臟高速緩存行時,如果在逐出過程中,該臟高速緩存行未被寫到其它某個地方,則該臟高速緩存行內(nèi)的更新數(shù)據(jù)可能會丟失。在某些情況下,可以把臟高速緩存行寫入系統(tǒng)存儲器。然而,在圖3的實施例中,高速緩存320可以開始一個寫行事務(wù)(write-line),其包括監(jiān)聽(snoop)在其它帶有高速緩存的代理中的可用替代塊。
由于處理器300可以用在包括其它處理器的多處理器系統(tǒng)中,而所述的其它處理器可以開始一個包括監(jiān)聽在其它帶有高速緩存的代理中的可用替代塊在內(nèi)的寫行事務(wù),所以處理器300可以被設(shè)計為響應(yīng)這樣一種監(jiān)聽本身。對這樣一種監(jiān)聽的響應(yīng)可以采用以下形式,即在高速緩存320內(nèi)尋找可用作另一個處理器的臟高速緩存行的替代塊的高速緩存行。為了被認(rèn)為可用作高速緩存320內(nèi)的替代塊,潛在的替代塊應(yīng)當(dāng)滿足的標(biāo)準(zhǔn)是擁有這樣一個高速緩存行。例如,讓處理器300和另一處理器使用圖2中高速緩存200的設(shè)計,并且讓另一處理器在其組3內(nèi)擁有臟高速緩存行。則處理器300可以有四個塊作為潛在的替代塊在高速緩存320的組3內(nèi)的四個塊。一般而言,如果處理器具有n路組關(guān)聯(lián)高速緩存,那么它就可以有n個潛在的替代塊。
除了要屬于正確的組之外,潛在的替代塊還應(yīng)當(dāng)是可用的。在一個實施例中,如果潛在的替代塊處于無效I狀態(tài),那么就可以把它用作對其它處理器的性能幾乎沒有影響的替代塊。因此,在那個實施例中,對潛在的替代塊的監(jiān)聽可以包括搜索潛在的替代塊以發(fā)現(xiàn)那些處于無效I狀態(tài)的塊。
在另一個實施例中,對潛在的替代塊的監(jiān)聽可以包括搜索潛在的替代塊以發(fā)現(xiàn)那些處于無效I狀態(tài)的塊,并且,如果沒有任何塊處于無效I狀態(tài),則進(jìn)一步搜索潛在的替代塊以發(fā)現(xiàn)處于共享S狀態(tài)的塊。當(dāng)高速緩存行處于S狀態(tài)時,在另一處理器的高速緩存中的至少一個高速緩存內(nèi)存在另一個副本。可以把臟高速緩存行寫到處于S狀態(tài)的高速緩存行的副本上,此高速緩存行的至少一個其它副本保存在處理器的高速緩存之一的某個地方。即使可能需要額外的總線周期來確定S分組的剩余高速緩存行是應(yīng)處于S狀態(tài)還是應(yīng)被轉(zhuǎn)換為專有E狀態(tài),但比起把臟高速緩存行寫入系統(tǒng)存儲器的操作來說,這對系統(tǒng)資源可能還更有效率。
如果處理器300確定它具有用于另一處理器的臟高速緩存行的可用替代塊,那么它就可以在通過系統(tǒng)總線發(fā)送的消息中給出此可用替代塊存在的信號。在其它實施例中,可以通過另一種形式的處理器間接口來發(fā)送該消息,例如通過點(diǎn)對點(diǎn)接口。然而,如果要發(fā)信號通知以下信息,即處理器300是幾個處理器當(dāng)中想要接受臟高速緩存行進(jìn)入它的可用替代塊,而不是進(jìn)入其它處理器的高速緩存內(nèi)的其它可用替代塊的一個處理器,那么可以證明,使用另外的信號進(jìn)行通知是有利的。在一個實施例中,可以使用獨(dú)立的接受(Accept)信號線。然而,在圖3的實施例中,可以在命中/接受信號332上攜帶接受信號,該命中/接受信號332由高速緩存320內(nèi)的高速緩存接口邏輯324控制。命中信號線可預(yù)先存在于處理器中,以在由存儲器讀行(read-line)事務(wù)所產(chǎn)生的監(jiān)聽操作中發(fā)出高速緩存“命中”信號。然而,在諸如高速緩存行逐出等存儲器寫行事務(wù)中,可能不使用該命中信號線。因此,在圖3的實施例中,該命中信號線就用組合命中/接受信號332來取代。在存儲器讀行事務(wù)中,命中/接受信號332可以采用邏輯真值來表示高速緩存命中。在存儲器寫行事務(wù)中,命中/接受信號線332可以采用邏輯真值來表示接受臟高速緩存行進(jìn)入可用替代塊的意愿。在其它實施例中,可以用其它形式發(fā)出“接受”信號。
在高速緩存接口邏輯324中還可以使用后退輸入BOFF IN 336信號線。在一個實施例中,如果在監(jiān)聽替代塊的過程中BOFF IN 336保持為真,那么處理器300就不接受臟高速緩存行進(jìn)入其可用替代塊(如果它有的話),而是讓給其它處理器。如果在監(jiān)聽替代塊的過程中BOFF IN 336保持為假,那么處理器300就可以接受臟高速緩存行進(jìn)入其可用替代塊(如果它有的話)。在一個實施例中,在斷言(assert)命中/接受信號332后,可由處理器300對BOFF IN 336進(jìn)行抽樣。在其它實施例中,可以用其它形式發(fā)出“后退”信號。
參考圖4,根據(jù)本發(fā)明的一個實施例,示出了采用接受和后退信號線的總線連接的多處理器系統(tǒng)400的示意圖。在一個實施例中,處理器A420、處理器B 430、處理器C 440和處理器D 450中的每一個都可以具有和圖3實施例的處理器300一樣的功能。多處理器系統(tǒng)400還可以包括系統(tǒng)總線410,作為處理器間的接口;以及存儲器控制器460,用于和系統(tǒng)400內(nèi)的存儲器470接口。
為了禁止一個以上的處理器從另一個處理器接受臟高速緩存行,處理器A 420、處理器B 430、處理器C 440和處理器D 450各自的命中/接受信號426、436、446、456可以組合起來并給出到后退信號BOFF IN424、434、444、454上。可以使用圖4實施例所示的門422、432來完成對命中/接受信號426、436、446、456的組合。然而,可能還有很多其它種組合也能實現(xiàn)禁止一個以上的處理器從另一個處理器接受臟高速緩存行的功能。所示的實施例想讓處理器D 450來接受臟高速緩存行,因為它的BOFF IN 454輸入端沒有被連接上。類似地,如果處理器D 450不可以接受臟高速緩存行,則處理器C 440可以接受臟高速緩存行;如果處理器C440或處理器D 450不可以接受臟高速緩存行,則處理器B 430可以接受臟高速緩存行。最后,只有當(dāng)沒有其它任何處理器可以接受臟高速緩存行時,處理器A 420才可以接受臟高速緩存行。
存儲器控制器460還包括BOFF IN 464。在一個實施例中,如果在寫行請求之后的監(jiān)聽階段內(nèi)BOFF IN 464為真,那么存儲器控制器460就不能接受要寫入存儲器470的臟高速緩存行。在圖4的實施例中,命中/接受信號426、436、446、456中的每一個都通過門462而連接到BOFF IN464,并且當(dāng)命中/接受信號426、436、446、456中的任何一個保持為真時,BOFF IN 464都會保持為真。按照這種方式,當(dāng)處理器中的任何一個能從另一個處理器接受臟高速緩存行時,存儲器控制器460都不能接受那個臟高速緩存行。
在一個示例中,假設(shè)處理器B 430包括一個臟高速緩存行,并且發(fā)生了導(dǎo)致逐出這個臟高速緩存行的事件。那么處理器B 430就產(chǎn)生寫行請求到系統(tǒng)總線410上。假設(shè)對于這個例子,處理器A 420和處理器C 440都在它們適當(dāng)?shù)母咚倬彺嬷性O(shè)置了當(dāng)前正處于無效I狀態(tài)的塊。然后,當(dāng)處理器A 420和處理器C 440對可用替代塊進(jìn)行監(jiān)聽時,這些處于無效I狀態(tài)的塊將被確認(rèn)為可用替代塊。這時,可以把帶有這方面信息的總線消息發(fā)送給處理器B 430。處理器A 420和處理器C 440也可以把命中/接受信號426和命中/接受信號446分別設(shè)為真?,F(xiàn)在,處理器C 440可以接著在它的BOFF IN 444上讀出邏輯假信號。但是處理器A 420在其BOFF IN424上卻具有邏輯真信號,這是命中/接受信號446通過門422產(chǎn)生的結(jié)果。因此,處理器A 420將“后退”并且不接受臟高速緩存行,但允許處理器C 440接受臟高速緩存行。在命中/接受信號426和命中/接受信號446上的邏輯真值也可以通過門462被傳遞到存儲器控制器460的BOFF IN464,以禁止存儲器控制器460用臟高速緩存行更新存儲器470。
在對讀行請求后的監(jiān)聽階段做出響應(yīng)的時候,也可以把命中/接受信號426、436、446、456提供給系統(tǒng)總線410作為命中信號使用。
參考圖5,根據(jù)本發(fā)明另一個實施例,示出了采用接受和后退信號線的點(diǎn)對點(diǎn)連接多處理器系統(tǒng)500。在這個實施例中,系統(tǒng)總線未被用作處理器間接口。取而代之,點(diǎn)對點(diǎn)接口502、504、506、508被用作連接處理器A 510、處理器B 520、處理器C 530和處理器D 540的處理器間接口。每個處理器可以包括兩個或更多的用于點(diǎn)對點(diǎn)接口的點(diǎn)對點(diǎn)接口邏輯,例如處理器A 510包括點(diǎn)對點(diǎn)接口邏輯A 516和點(diǎn)對點(diǎn)接口邏輯B518。點(diǎn)對點(diǎn)接口邏輯A 516和B 518可以是等同的,或者可以包括用于給定應(yīng)用的專門定制。
每個處理器,例如處理器A 510,可以包括一個用于連接一部分系統(tǒng)存儲器550的存儲器接口512。存儲器接口512可以執(zhí)行許多功能,這些功能通常由存儲器控制器支持。處理器可以對其它處理器的存儲器進(jìn)行讀或?qū)?,但在?zhí)行讀寫操作時可能需要經(jīng)過一個或多個點(diǎn)對點(diǎn)接口。類似地,每個處理器,例如處理器A 510,可以包括高速緩存514。高速緩存可以對它自己的處理器的存儲器進(jìn)行讀或?qū)?,或者可以對另一個處理器的存儲器進(jìn)行讀或?qū)?。例如,處理器A 510的高速緩存514可以從處理器B520的存儲器552中通過點(diǎn)對點(diǎn)接口502讀取高速緩存行。另外的點(diǎn)對點(diǎn)接口可用于連接處理器的各種輸入/輸出設(shè)備(未示出)。
高速緩存514、524、534、544可以用類似于圖3中高速緩存320的方式工作。假設(shè)是處理器A 510的高速緩存514。當(dāng)逐出臟高速緩存行時,高速緩存514可以開始寫行事務(wù),其中包括對處理器B 520、處理器C 530和處理器D 540的高速緩存524、534、544中的可用替代塊進(jìn)行監(jiān)聽的請求。該監(jiān)聽請求不是通過總線進(jìn)行,而是通過點(diǎn)對點(diǎn)接口502、504、506、508進(jìn)行。如果其它高速緩存524、534、544中的一個或多個在潛在的替代塊中具有處于無效I狀態(tài)的高速緩存行,那么就可以把從高速緩存514逐出的臟高速緩存行寫入高速緩存524、534、544中的替代塊。在其它實施例中,可用替代塊可以包括處于無效I狀態(tài)或者共享S狀態(tài)的高速緩存行。這些高速緩存中的一個或多個可以用通過點(diǎn)對點(diǎn)接口502、504、506、508中的一個或多個而發(fā)送的處理器間消息來發(fā)出信號表示替代塊的可用性。
另外,處理器A 510、處理器B 520、處理器C 530和處理器D 540可以分別包括接受信號560、562、564、566。這些接受信號可以表示出相應(yīng)處理器的高速緩存是否包括臟高速緩存行的可用替代塊,其中接受信號的邏輯真值表示了可用替代塊的存在。處理器A 510、處理器B 520、處理器C 530和處理器D 540還可以包括后退信號570、572、574、576。在一個實施例中,如果后退信號保持為邏輯真,則對應(yīng)的處理器將被禁止接受臟高速緩存行進(jìn)入其自身的可用替代塊(如果有的話)。相反,如果后退信號保持為邏輯假,則相應(yīng)的處理器可以接受臟高速緩存行進(jìn)入其自身的可用替代塊(如果有的話)。所述的接受和后退信號都被示出連接于點(diǎn)對點(diǎn)接口邏輯,但是在其它實施例中則可與處理器內(nèi)的其它電路相連接。
用和圖4實施例相似的方式,可以把接受信號560、562、564、566組合起來并給出到后退信號570、572、574、576上,以禁止一個以上的處理器從另一個處理器中接受臟高速緩存行??梢允褂瞄T580、582來完成對接受信號560、562、564、566的組合。然而,可能還有許多其它種組合也可以實現(xiàn)禁止一個以上的處理器從另一個處理器中接受臟高速緩存行的功能。所示的實施例想讓處理器D 540來接受臟高速緩存行,因為它的后退信號576輸入端沒有被連接上。類似地,如果處理器D 540不可以接受臟高速緩存行,則處理器C 530可以接受臟高速緩存行;如果處理器C 530或處理器D 540不可以接受臟高速緩存行,則處理器B 520可以接受臟高速緩存行。最后,只有當(dāng)沒有其它任何處理器可以接受臟高速緩存行時,處理器A 510才可以接受臟高速緩存行。
接受信號560、562、564、566也可以通過門584組合起來以形成存儲器后退信號558。在一個實施例中,可以由存儲器接口512、522、532、542來監(jiān)控存儲器后退信號558。如果存儲器后退信號558為真,則存儲器接口512、522、532、542分別不能接受要寫入存儲器550、552、554、556的臟高速緩存行。在這種方式下,當(dāng)所述處理器中的任何一個能從另一個處理器接受臟高速緩存行時,存儲器接口512、522、532、542不會接受這個臟高速緩存行。
在前面的說明書中,參考其具體的示例性實施例對本發(fā)明進(jìn)行了描述。然而,很顯然,在不偏離如所附權(quán)利要求所述的本發(fā)明更廣的精神和范圍的條件下,可以對以上內(nèi)容進(jìn)行各種修改和改變。因此,本說明書和附圖應(yīng)被視為示意性的而非限制性的。
權(quán)利要求
1.一種處理器,包括高速緩沖存儲器,其從第一塊中逐出第一臟高速緩存行;和耦合到所述高速緩沖存儲器上和處理器間接口上的處理器間接口邏輯,該處理器間接口邏輯開始對耦合到所述處理器間接口上的第二處理器中的第一替代塊的監(jiān)聽請求。
2.如權(quán)利要求1所述的處理器,其中,所述監(jiān)聽請求在所述第一臟高速緩存行的寫行請求之后。
3.如權(quán)利要求1所述的處理器,其中,所述處理器間接口邏輯從所述第二處理器收到處理器間接口消息信號后,將向所述第二處理器發(fā)送所述第一臟高速緩存行。
4.如權(quán)利要求3所述的處理器,其中,當(dāng)所述第一替代塊處于無效狀態(tài)時發(fā)送所述處理器間接口消息信號。
5.如權(quán)利要求3所述的處理器,其中,當(dāng)所述第一替代塊處于共享狀態(tài)時發(fā)送所述處理器間接口消息信號。
6.如權(quán)利要求1所述的處理器,其中,當(dāng)所述處理器間接口邏輯從耦合到所述處理器間接口上的第三處理器接收到對用于第二臟高速緩存行的第二替代塊的監(jiān)聽請求時,所述高速緩存將發(fā)出接受信號。
7.如權(quán)利要求6所述的處理器,其中,所述接受信號表示了所述第二替代塊處于無效狀態(tài)。
8.如權(quán)利要求6所述的處理器,其中,所述接受信號表示了所述第二替代塊處于共享狀態(tài)。
9.如權(quán)利要求6所述的處理器,其中,當(dāng)所述處理器的后退信號輸入保持為假時,所述第二替代塊接收所述第二臟高速緩存行。
10.一種方法,包括從第一處理器的第一高速緩存中逐出臟高速緩存行;向第二處理器發(fā)送對第一替代塊的監(jiān)聽請求;如果第一替代塊是可用的,則從所述第二處理器發(fā)送處理器間接口消息,該接口消息表示了所述第一替代塊的可用性;以及從所述第一處理器向所述第二處理器的所述第一替代塊發(fā)送所述第一臟高速緩存行。
11.如權(quán)利要求10所述的方法,還包括從所述第二處理器發(fā)送接受信號以表示所述第二處理器可以接收所述第一臟高速緩存行。
12.如權(quán)利要求11所述的方法,還包括接收所述第一臟高速緩存行。
13.如權(quán)利要求11所述的方法,還包括確定所述第一替代塊是否處于無效狀態(tài)。
14.如權(quán)利要求11所述的方法,還包括確定所述第一替代塊是否處于共享狀態(tài)。
15.如權(quán)利要求11所述的方法,還包括禁止第三處理器發(fā)送表示了第二替代塊的可用性的處理器間接口消息。
16.如權(quán)利要求15所述的方法,其中,所述禁止所述第三處理器包括從所述第二處理器向所述第三處理器發(fā)送所述接受信號。
17.如權(quán)利要求16所述的方法,其中,所述第三處理器在后退輸入端接收所述接受信號。
18.如權(quán)利要求11所述的方法,還包括禁止存儲器控制器接受所述臟高速緩存行。
19.如權(quán)利要求18所述的方法,其中,所述禁止所述存儲器控制器包括從所述第二處理器向所述存儲器控制器發(fā)送所述接受信號。
20.如權(quán)利要求19所述的方法,其中,所述存儲器控制器在后退輸入端接收所述接受信號。
21.一種系統(tǒng),包括處理器間接口;音頻輸入輸出端,其通過接口耦合到所述處理器間接口上;第一處理器,包括要逐出臟高速緩存行的第一高速緩存,和耦合到所述第一高速緩存上和所述處理器間接口上的第一處理器間接口邏輯,該第一處理器間接口邏輯對應(yīng)所述臟高速緩存行開始沿著所述處理器間接口的監(jiān)聽請求;和第二處理器,包括具有第一替代塊的第二高速緩存,和耦合到所述第二高速緩存上和所述處理器間接口上的第二處理器間接口邏輯,當(dāng)?shù)谝惶娲鷫K可用于接收所述臟高速緩存行時,所述第二處理器間接口邏輯響應(yīng)所述監(jiān)聽請求。
22.如權(quán)利要求21所述的系統(tǒng),還包括第三處理器,該第三處理器包括具有第二替代塊的第三高速緩存及耦合到所述第三高速緩存上和所述處理器間接口上的第三處理器間接口邏輯,當(dāng)?shù)诙娲鷫K可用于接收所述臟高速緩存行時,所述第三處理器間接口邏輯響應(yīng)所述監(jiān)聽請求。
23.如權(quán)利要求22所述的系統(tǒng),其中,當(dāng)所述第一替代塊可用時,所述第二處理器在接受信號上發(fā)送真值,并且其中,當(dāng)在所述第三處理器的后退輸入端上接收到所述接受信號上的所述真值時,所述第三處理器不表示它能夠接收所述臟高速緩存行。
24.如權(quán)利要求21所述的系統(tǒng),還包括耦合到所述處理器間接口上的存儲器控制器,該存儲器控制器包括后退輸入端以表示所述存儲器控制器不能接收所述臟高速緩存行。
25.如權(quán)利要求24所述的系統(tǒng),其中,當(dāng)所述第一替代塊可用時,所述第二處理器在接受信號上發(fā)送真值,并且其中,當(dāng)接受信號上的所述真值正被輸入所述存儲器控制器的所述后退輸入端時,所述存儲器控制器不接收所述臟高速緩存行。
全文摘要
本發(fā)明公開了一種用于改善高速緩存性能的系統(tǒng)和方法。在一個實施例中,處理器帶有高速緩存,而該高速緩存中具有將被逐出的臟高速緩存行,那么該處理器可以把這個臟高速緩存行發(fā)送給另一個處理器的高速緩存中的可用替代塊。在一個實施例中,可用替代塊可以包含處于無效狀態(tài)的高速緩存行。在另一個實施例中,可用替代塊可以包含處于無效狀態(tài)或共享狀態(tài)的高速緩存行。使用一組接受信號和后退信號可以禁止把臟高速緩存行多重轉(zhuǎn)移到一個以上的處理器的高速緩存中??梢园堰@些接受信號組合起來以禁止多個處理器接受臟高速緩存行,同時禁止系統(tǒng)存儲器接受所述臟高速緩存行。
文檔編號G06F12/00GK1506846SQ20031011701
公開日2004年6月23日 申請日期2003年11月27日 優(yōu)先權(quán)日2002年12月10日
發(fā)明者薩曼莎·J·埃迪里蘇里亞, 蘇亞特·雅米爾, 戴維·E·邁納, R·弗蘭克·奧布萊奈斯, 史蒂文·J·圖, 漢格·T·源, J 圖, 雅米爾, E 邁納, T 源, 伎恕ぐ虜祭襯嗡, 薩曼莎 J 埃迪里蘇里亞 申請人:英特爾公司