專利名稱:異構(gòu)代理高速緩存一致性和限制數(shù)據(jù)傳輸?shù)姆椒ê脱b置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及微處理器系統(tǒng),更具體地說,本發(fā)明涉及能夠在具有一致高速緩存的多處理器環(huán)境中操作的微處理器系統(tǒng)。
背景技術(shù):
為了使處理器具有比所有數(shù)據(jù)都需要直接從系統(tǒng)存儲器訪問時可能的速度更快的數(shù)據(jù)訪問,可以使用高速緩存(cache)。從高速緩存讀取可以比從系統(tǒng)存儲器讀取快得多。還可以向高速緩存寫入并推遲更新系統(tǒng)存儲器中相應數(shù)據(jù)直到處理器或其高速緩存方便的時候。當在多處理器環(huán)境中使用處理器高速緩存時,必須注意保證數(shù)據(jù)的各個拷貝是相同的,或者至少保證任何改變都被跟蹤并解釋。數(shù)據(jù)的嚴格相同并不必要甚至并不希望如上所述,有時高速緩存會包含已修改的數(shù)據(jù),并且以后會更新系統(tǒng)存儲器。類似地,幾個處理器可能共享數(shù)據(jù)。如果一個處理器將數(shù)據(jù)的已更新的拷貝寫到其高速緩存當中,則其應或者告訴其它處理器其進行了此操作,以使其它處理器將來不要相信它們的數(shù)據(jù),或者將已更新數(shù)據(jù)的拷貝分發(fā)給其它處理器。保證多處理器高速緩存中數(shù)據(jù)的一致性(coherency)甚至相同性的不同的規(guī)則集合稱為高速緩存一致性方案。
在多處理器系統(tǒng)中,當幾個處理器遵循來自不同的高速緩存一致性方案的規(guī)則的時候,可能出現(xiàn)一種困難。例如,一些高速緩存一致性方案需要將任何對高速緩存的寫存儲都立即回寫到系統(tǒng)存儲器。其它的方案可能允許延遲這種對系統(tǒng)存儲器的寫存儲,以提高系統(tǒng)性能。
即使在利用具有類似的高速緩存一致性方案的處理器的多處理器系統(tǒng)內(nèi),也可能有發(fā)生不必要的數(shù)據(jù)傳輸?shù)那闆r。這些情況可能影響系統(tǒng)的整體性能。一般來說,高速緩存一致性方案可能必須對最壞的情況進行補償。在某些情形下,這可能導致處理器之間不必要的數(shù)據(jù)傳輸。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種微處理器系統(tǒng)和方法,以在具有各種高速緩存一致性方案的多處理器系統(tǒng)內(nèi),減少不必要的操作(例如處理器之間的數(shù)據(jù)傳輸),從而提高系統(tǒng)的性能。
根據(jù)本發(fā)明的第一方面,提供了一種代理,該代理包括高速緩沖存儲器和總線接口,該總線接口耦合到所述高速緩沖存儲器及總線上,所述總線接口包括對所述總線的可持有接口,其中當所述高速緩存啟動寫行傳輸時,所述可持有接口傳達持有能力狀態(tài)。
根據(jù)本發(fā)明的第二方面,提供了一種方法,包括以下步驟從第一代理啟動寫行事務;通過總線來傳達所述第一代理的持有能力狀態(tài);以及響應于所述持有能力狀態(tài),確定第二代理是否應該進行高速緩存監(jiān)聽。
根據(jù)本發(fā)明的第三方面,提供了一種系統(tǒng),該系統(tǒng)包括第一代理,該第一代理包括第一高速緩存和對總線的第一總線接口,其中當所述第一高速緩存啟動第一寫行請求時,所述第一總線接口將可持有狀態(tài)信號驅(qū)使為假;第二代理,該第二代理包括第二高速緩存和對所述總線的第二總線接口,其中當所述第二高速緩存啟動第二寫行請求時,所述第二總線接口將所述可持有狀態(tài)信號驅(qū)使為真;第三代理,該第三代理具有對所述總線的第三總線接口,其中當所述第三高速緩存啟動第三寫行請求時,所述第三總線接口將所述可持有狀態(tài)信號驅(qū)使為假。
由此,多處理器系統(tǒng)中的處理器在啟動寫行請求時,可以通過總線上的信號來傳達持有能力狀態(tài),以便其它處理器決定是否對自身高速緩存進行監(jiān)聽,從而減少不必要的監(jiān)聽操作,提高系統(tǒng)性能。
根據(jù)本發(fā)明的第四方面,提供了一種代理,該代理包括具有高速緩存邏輯的高速緩沖存儲器;所述代理還包括第一后退輸出信號,該信號耦合到所述高速緩存邏輯上,以表示所述代理不需要第二代理供應第一高速緩存行的數(shù)據(jù);所述代理還包括后退輸入信號,該信號耦合到所述高速緩存邏輯上,以允許如果所述后退輸入信號為假,則所述高速緩沖存儲器以第二高速緩存行的數(shù)據(jù)進行插入。
根據(jù)本發(fā)明的第五方面,提供了一種方法,該方法包括以下步驟在第一代理中,對第一高速緩存行啟動高速緩存行寫入請求;對所述第一代理的第一高速緩存進行監(jiān)聽;在所述第一高速緩存中,啟動讀取并使無效的請求;以及如果所述第一高速緩存行處于共享狀態(tài),則將第一后退輸出信號設(shè)置為真。
根據(jù)本發(fā)明的第六方面,提供了一種包括總線的系統(tǒng),該系統(tǒng)還包括第一代理,該第一代理耦合到所述總線上并包括第一高速緩存、第一后退輸出信號和第一后退輸入信號,所述第一后退輸出信號耦合到所述第一高速緩存上,以表示所述第一高速緩存不需要從外部供應第一高速緩存行的數(shù)據(jù),所述第一后退輸入信號耦合到所述高速緩存上,以在所述后退輸入信號為假的情況下,允許所述高速緩存以第二高速緩存行的數(shù)據(jù)進行插入;所述系統(tǒng)還包括存儲器控制器,該存儲器控制器耦合到所述總線上并包括第二后退輸入信號,以在所述后退輸入信號為假的情況下,允許所述存儲器控制器以第二高速緩存行的數(shù)據(jù)進行插入;所述系統(tǒng)還包括經(jīng)由總線橋耦合到所述總線上的音頻輸入/輸出控制器。
由此,多處理器系統(tǒng)中的處理器用后退輸出信號來表示是否需要其它代理供應數(shù)據(jù),并通過后退輸入信號來確定是否需要用自身高速緩存中的數(shù)據(jù)進行插入,從而減少處理器之間不必要的數(shù)據(jù)傳輸,提高系統(tǒng)性能。
以舉例而非限制的方式對本發(fā)明進行了說明,在附圖的圖形中,相似的標號表示相似的元件,其中圖1是根據(jù)一個實施例的多處理器系統(tǒng)的示意圖;圖2是根據(jù)一個實施例,同時具有可持有代理和非可持有代理的多處理器系統(tǒng)的示意圖;圖3A-3D是根據(jù)本發(fā)明的一個實施例,處理器修改共享高速緩存行的示意圖;圖4是根據(jù)本發(fā)明的一個實施例,具有后退信號線的處理器的示意圖;
圖5是根據(jù)本發(fā)明的一個實施例,采用后退信號線的多處理器系統(tǒng)的示意圖。
具體實施例方式
下面的說明描述在微處理器系統(tǒng)中操作高速緩存的技術(shù)。在下面的說明中,闡述了許多具體細節(jié),例如邏輯實現(xiàn)、軟件模塊分配、總線信號技術(shù)和操作細節(jié),以提供對本發(fā)明更全面的理解。但是應該意識到,本領(lǐng)域技術(shù)人員無需這樣的具體細節(jié)也可以實施本發(fā)明。在其它情況下,并未詳細示出控制結(jié)構(gòu)、門級電路和完整的軟件指令序列,以免使本發(fā)明難于理解。利用所包括的敘述,本領(lǐng)域的一般技術(shù)人員將無需過分的實驗就能夠?qū)崿F(xiàn)適當?shù)墓δ?。本發(fā)明是以微處理器系統(tǒng)內(nèi)的硬件的形式公開的。但是,本發(fā)明也可以用處理器的其它形式,例如數(shù)字信號處理器,或者利用包含處理器的計算機,例如小型計算機或大型計算機來實施。
現(xiàn)在參考圖1,根據(jù)一個實施例,示出了多處理器系統(tǒng)100的示意圖。圖1系統(tǒng)可以包括幾個處理器,為清楚起見,僅示出了其中兩個處理器140、160。處理器140、160可以包括一級(L1)高速緩存142、162。在一些實施例中,這些一級高速緩存142、162可能具有相同的高速緩存一致性方案,而在其它實施例中,它們可能具有不同的高速緩存一致性方案,但仍駐留在共同的系統(tǒng)總線106上。高速緩存一致性方案的常見例子是有效/無效(VI)高速緩存、已修改/專有/共享/無效(MESI)高速緩存和已修改/已持有/專有/共享/無效(MOESI)高速緩存。
圖1多處理器系統(tǒng)100可以具有幾個經(jīng)由總線接口144、164、112、108與系統(tǒng)總線106相連接的功能部件。經(jīng)由總線接口與系統(tǒng)總線相連接的功能部件的一般名稱是“代理(agent)”。代理的例子是處理器140和160、總線橋132和存儲器控制器134。存儲器控制器134可以允許處理器140、160對系統(tǒng)存儲器110進行讀取和寫入??偩€橋132可以允許系統(tǒng)總線106與總線116之間的數(shù)據(jù)交換,總線116可以是ISA(工業(yè)標準體系結(jié)構(gòu))總線或PCI(外圍部件互連)總線。在總線116上可以有各種I/O(輸入/輸出)設(shè)備114,包括圖形控制器、視頻控制器和網(wǎng)絡(luò)控制器。另一個總線橋118可以用來允許總線116與總線120之間的數(shù)據(jù)交換。總線120可以是SCSI(小型計算機系統(tǒng)接口)總線、DE(綜合驅(qū)動電子設(shè)備)總線或USB(通用串行總線)總線??梢詫⒘硗獾腎/O器件與總線120相連接。這些可以包括鍵盤和光標控制設(shè)備122,包括鼠標;音頻I/O 124;通信設(shè)備126,包括調(diào)制解調(diào)器和網(wǎng)絡(luò)接口;和數(shù)據(jù)存儲設(shè)備128,包括磁盤驅(qū)動器和光盤驅(qū)動器??梢詫④浖a130存儲在數(shù)據(jù)存儲設(shè)備128上。
現(xiàn)在參考圖2,根據(jù)一個實施例,示出了同時具有可持有(ownershipcapable)代理和非可持有(non-ownership capable)代理的多處理器系統(tǒng)200的示意圖。在圖2實施例中,示出了與系統(tǒng)總線250相連接的六個代理。但是,在其它實施例中,當與系統(tǒng)總線相連接時,也可以使用其它代理組合。
在當前的上下文中,可持有代理是包括可以在回寫(write-back)模式下操作的高速緩存的代理,例如在MESI或MOESI模式下操作的高速緩存。MESI和MOESI高速緩存操作在本領(lǐng)域中是公知的。也可以將包括具有MESI和MOESI之外的高速緩存協(xié)議的高速緩存的代理確定為可持有代理。具有非回寫式高速緩存的代理,例如直寫式(write-through)高速緩存,或者不具有高速緩存的代理,例如總線橋或磁盤控制器,可以對照地稱為非可持有代理。直寫式高速緩存的一個例子是VI高速緩存。
所示出的處理器210、220分別包括VI高速緩存212、222,并且分別包括總線接口214、224。VI高速緩存212、222的存在使處理器210、220成為非可持有代理。在其它實施例中,處理器210、220可以是其它種類的非可持有代理??偩€接口214、224分別經(jīng)由總線抽頭(bus stub)252、254與系統(tǒng)總線250相連接。總線抽頭252、254可以包括各種數(shù)據(jù)、地址和控制信號,在本發(fā)明中,它們的細節(jié)并不重要??偩€接口214、224還分別包括持有能力信號264、266。只要VI高速緩存212、222分別啟動寫行(write-line)請求,持有能力信號264、266就可以驅(qū)使系統(tǒng)總線250上的一條信號線進入邏輯假(false)狀態(tài)。該邏輯假狀態(tài)可以被系統(tǒng)總線250上的其它代理所讀取,表示啟動寫行請求的處理器是非可持有代理。
所示出的處理器230、240分別包括MESI高速緩存232、242,并且分別包括總線接口234、244。MESI高速緩存232、242的存在使處理器230、240成為可持有代理。在其它實施例中,處理器230、240可以是其它種類的可持有代理??偩€接口234、244分別經(jīng)由總線抽頭256、258與系統(tǒng)總線250相連接。總線抽頭256、258可以包括各種數(shù)據(jù)、地址和控制信號,在本發(fā)明中,它們的細節(jié)并不重要??偩€接口234、244還分別包括持有能力信號270、276。只要MESI高速緩存232、242分別啟動寫行請求,持有能力信號270、276就可以驅(qū)使系統(tǒng)總線250上的一條信號線進入邏輯真(true)狀態(tài)。該邏輯真狀態(tài)可以被系統(tǒng)總線250上的其它代理所讀取,表示啟動寫行請求的處理器是可持有代理。
所示出的總線橋296包括總線接口298。在不同的實施例中,總線橋296可以將系統(tǒng)總線250與另一總線(未示出)相連接,例如外圍部件互連(PCI)總線或綜合驅(qū)動電子(IDE)總線??偩€橋296不具有高速緩存的事實使之成為非可持有代理。在其它實施例中,總線橋296可以是另一種非可持有代理,例如磁盤驅(qū)動器控制器、局域網(wǎng)控制器或圖形控制器??偩€接口298經(jīng)由總線抽頭262與系統(tǒng)總線250相連接??偩€接口298還可以包括持有能力信號282。只要總線橋296啟動向存儲器294的寫入請求,持有能力信號282就可以驅(qū)使系統(tǒng)總線250上的一條信號線進入邏輯假狀態(tài)。該邏輯假狀態(tài)可以被系統(tǒng)總線250上的其它代理所讀取,表示啟動寫入請求的處理器是非可持有代理。
所示出的存儲器控制器290經(jīng)由總線接口292,將存儲器294與系統(tǒng)總線250相連接??偩€接口292可以與總線抽頭260相連接,并另外接收持有能力信號288。
一些代理可以產(chǎn)生示出其監(jiān)聽(snoop)結(jié)果的信號,如果這些代理能夠監(jiān)聽的話。例如,作為其監(jiān)聽的結(jié)果,處理器230可以產(chǎn)生HIT信號268和HITM信號266。如果確定了對專有E或共享S狀態(tài)的命中(HIT)或者對已修改M狀態(tài)的命中(HITM),則可以將這些信號設(shè)置為真邏輯狀態(tài)。如果確定了監(jiān)聽失敗,則兩者都不能設(shè)置為真。請求代理,例如處理器240,可以反過來檢查其自身的HIT信號274和HITM信號272上的輸入,以確定其它代理對其讀取或?qū)懭胝埱蟮捻憫T谝恍嵤├?,?qū)使HIT信號和HITM信號的代理可以將兩者都驅(qū)使為真,這可以用來發(fā)出信號表示需要在響應中插入一段停頓時間。
諸如處理器230和處理器240之類的可持有代理一般僅在兩種情況之一下產(chǎn)生寫行請求。一種情況是當臟高速緩存行由于高速緩存需要將此特定高速緩存行的位置用于新的條目而被逐出時,即有時稱為“犧牲”舊高速緩存行的情況。此處,“臟”高速緩存行可以包括在MESI或MOESI協(xié)議高速緩存中處于已修改M或已持有O狀態(tài)的那些高速緩存行。另一種情況是當在由另一代理的讀行(read-line)請求所啟動的監(jiān)聽中捕捉到了臟高速緩存行時。在任何一種情況下,可持有代理都會將不應存在于任何其它代理的高速緩存中的高速緩存行寫入存儲器其它具有高速緩存的代理都不應在其局部高速緩存中具有處于有效狀態(tài)的此特定高速緩存行。
為了減少非必需情況下的監(jiān)聽,在一個實施例中,每個代理都讀取由請求寫行請求的代理所產(chǎn)生的持有能力信號。如果寫行請求的請求代理將持有能力信號驅(qū)使為真,那么其它具有高速緩存的代理就無需監(jiān)聽它們的高速緩存。相反,如果寫行請求的請求代理將持有能力信號驅(qū)使為假,那么其它具有高速緩存的代理就需要監(jiān)聽它們的高速緩存。
在一個例子中,處理器230可以請求寫行請求。因為處理器230是可持有的,所以它將其持有能力信號270驅(qū)使為真。然后,另一個代理,例如具有MESI高速緩存242的處理器240,可以在其進入持有能力信號276上讀取此真值,并了解到處理器240無需監(jiān)聽其MESI高速緩存242。在圖2實施例中,處理器210、220需要驅(qū)使但不一定接收持有能力信號264、266。在一個實施例中,VI高速緩存212、222根本無法進行監(jiān)聽。在其它實施例中,處理器210、220可以具有能夠監(jiān)聽的非可持有高速緩存,并且在此例子中可以響應其持有能力信號264、266上的真值而選擇不監(jiān)聽。
在第二個例子中,處理器210可以請求寫行請求。因為處理器210是非可持有的,所以它將其持有能力信號264驅(qū)使為假。然后,其它代理,例如具有MESI高速緩存232、242的處理器230、240,可以在其進入持有能力信號270、276上讀取此假值,并了解到處理器230、240應該分別監(jiān)聽其MESI高速緩存232、242。在圖2實施例中,處理器220需要驅(qū)使但不一定接收持有能力信號266。在一個實施例中,VI高速緩存222根本無法進行監(jiān)聽。在其它實施例中,處理器220可以具有能夠監(jiān)聽的非可持有高速緩存,并且在此例子中可以響應其持有能力信號266上的假值而選擇監(jiān)聽。
在第三個例子中,總線橋296可以請求寫行請求。因為總線橋296是非可持有的,所以它將其持有能力信號282驅(qū)使為假。然后,其它代理,例如具有MESI高速緩存232、242的處理器230、240,可以在其進入持有能力信號270、276上讀取此假值,并了解到處理器230、240應該分別監(jiān)聽其MESI高速緩存232、242。在圖2實施例中,處理器210、220需要驅(qū)使但不一定接收持有能力信號264、266。在一個實施例中,VI高速緩存212、222根本無法進行監(jiān)聽。在其它實施例中,處理器210、220可以具有能夠監(jiān)聽的非可持有高速緩存,并且在此例子中可以響應其持有能力信號264、266上的假值而選擇監(jiān)聽。
現(xiàn)在參考圖3A-3D,根據(jù)本發(fā)明的一個實施例,示出了處理器修改共享高速緩存行的示意圖。在圖3A-3D實施例中,處理器A和處理器B可以具有包括諸如S狀態(tài)之類的共享狀態(tài)的高速緩存一致性協(xié)議中的一種,例如已修改/共享/無效(MSI)、MESI或MOESI?!耙殉钟小被騉狀態(tài)可能不如M、E、S或I狀態(tài)那樣公知??梢哉J為O狀態(tài)是修改共享(modified-shared)狀態(tài),其允許已修改的共享數(shù)據(jù)保留在高速緩存中。包含O高速緩存行的高速緩存負責在稍后的時刻更新存儲器。為了本發(fā)明的余下部分,可以認為MOESI的“已持有”或O狀態(tài)是共享狀態(tài)的特殊情況。
在圖3A中,處理器A和處理器B都分別啟動將數(shù)據(jù)D3、D2存儲到地址A1的指令。在此時期,處理器A和處理器B都包括這樣的高速緩存行,該高速緩存行包括地址A1、數(shù)據(jù)D1。另外,在此狀態(tài)下,在處理器A和處理器B各自的請求隊列中都沒有條目。
在圖3B中,處理器A和處理器B都已響應于這兩個存儲指令而監(jiān)聽了它們自身的高速緩存。處理器A和處理器B都在它們各自的高速緩存中找到了具有地址A1、數(shù)據(jù)D1,并處于S狀態(tài)的高速緩存行。然后,處理器A和處理器B都在各自處理器的請求隊列中將所述的存儲指令提升為“在地址A1使無效”。先做好準備的處理器將先從其請求隊列執(zhí)行。在圖3B例子中,處理器B先做好了準備,并將“在地址A1使無效”消息發(fā)送給處理器A。
在圖3C中,處理器B已將數(shù)據(jù)D2寫入包含地址A1的高速緩存行當中,并已將狀態(tài)改變?yōu)镸。處理器A已處理了從處理器B接收到的“在地址A1使無效”消息,因此現(xiàn)在具有處于無效狀態(tài)的包括地址A1的高速緩存行。這改變了先前監(jiān)聽的結(jié)果,因此將處理器A的請求隊列中的“在地址A1使無效”升級為“在地址A1讀取并使行無效”。當處理器A從其請求隊列執(zhí)行此指令時,它將“在地址A1讀取并使行無效”消息發(fā)送給處理器B。
在圖3D中,處理器A已將數(shù)據(jù)D3寫入了包含地址A1的高速緩存行中,并已將狀態(tài)改變?yōu)镸。處理器B已處理了從處理器A接收到的“在地址A1讀取并使行無效”消息,因此現(xiàn)在具有了處于無效狀態(tài)的包括地址A1的高速緩存行。作為對從處理器A接收到的“在地址A1讀取并使行無效”消息的響應的一部分,處理器B更新在主存儲器(未示出)中地址A1處的內(nèi)容,并且還將數(shù)據(jù)D2的拷貝發(fā)送給處理器A。處理器A并不需要此數(shù)據(jù)D2的拷貝。
現(xiàn)在參考圖4,根據(jù)本發(fā)明的一個實施例,示出了具有后退(backoff)信號線的處理器400的示意圖。處理器400包括經(jīng)由系統(tǒng)總線抽頭412與系統(tǒng)總線相連接的總線接口邏輯410。處理器400還包括高速緩存420,高速緩存420包括除了其它功能之外還可以控制后退信號線組的高速緩存邏輯424。
為了減少在不必要的情況下處理器內(nèi)的數(shù)據(jù)傳輸,處理器400包括兩個后退輸出信號數(shù)據(jù)后退DBKOFF_OUT 432和插入后退IBKOFF_OUT434,以及后退輸入信號BOFF_IN 436。這三個后退信號可以用來響應于某些情形下的“讀取并使行無效”命令,確定處理器或其它代理何時可以后退而不發(fā)送數(shù)據(jù)。在圖4實施例中,將三個后退信號DBKOFF_OUT432、IBKOFF_OUT 434和BOFF_IN 436實現(xiàn)為能夠采用對應于真或假的邏輯狀態(tài)的邏輯電平的單獨信號。在其它實施例中,可以將所述的三個后退信號實現(xiàn)為共同信號線上的消息,或者實現(xiàn)為通過諸如總線抽頭412所示之類的現(xiàn)有總線信號線的消息。另外,在圖4實施例中,將三個后退信號DBKOFF_OUT 432、IBKOFF_OUT 434和BOFF_IN 436示為與高速緩存420內(nèi)的高速緩存接口邏輯424相連接并由其產(chǎn)生(或被其接收)。在其它實施例中,可以由處理器400內(nèi)諸如總線接口邏輯410或高速緩存420之類的其它電路來產(chǎn)生(或接收)三個后退信號DBKOFF_OUT 432、IBKOFF_OUT 434和BOFF_IN 436。
DBKOFF_OUT 432可以由處理器400(或者在其它情況下,由另一監(jiān)聽代理)在響應于處理器400自身的存儲器傳輸請求的監(jiān)聽階段(自監(jiān)聽)內(nèi)設(shè)置為真,并可以用來阻止其它處理器或代理提供數(shù)據(jù)。具體地說,可以響應于由處理器400在這些情形下所啟動的讀取并使行無效請求,在監(jiān)聽階段期間將DBKOFF_OUT 432設(shè)置為真,這些情形指處理器400在高速緩存420中具有處于共享狀態(tài)的指定高速緩存行時,所述共享狀態(tài)可以包括S狀態(tài)或O狀態(tài)。當響應于由處理器400之外的代理所啟動的存儲器傳輸請求來監(jiān)聽時,處理器400不能將DBKOFF_OUT 432設(shè)置為真。一般來說,在與處理器400可以將IBKOFF_OUT 434設(shè)置為真相同的時間段內(nèi),處理器400可以將DBKOFF_OUT 432設(shè)置為真,其中IBKOFF_OUT 434如下段所述來操作。
IBKOFF_OUT 434可以由處理器400在響應于處理器400自身的存儲器傳輸請求的監(jiān)聽階段(自監(jiān)聽)內(nèi),或者在響應于由另一處理器或代理所啟動的存儲器傳輸請求的監(jiān)聽階段內(nèi)設(shè)置為真。IBKOFF_OUT 434可以用來阻止其它處理器或代理響應于其監(jiān)聽而提供數(shù)據(jù)。在一個實施例中,IBKOFF_OUT 434設(shè)置為真可以既表示所請求的高速緩存行處于有效狀態(tài),又表示處理器400能夠插入并將此高速緩存行的數(shù)據(jù)直接供應給請求代理。在一個實施例中,可以認為有效狀態(tài)是由M狀態(tài)、O狀態(tài)、S狀態(tài)或E狀態(tài)所組成的組中的一個。
BOFF_IN 436可以被處理器400用來接收由其它處理器或代理所產(chǎn)生的后退信號。這些后退信號既可以單獨給出,也可以與BOFF_IN 436合并給出。在一個實施例中,當BOFF_IN 436為真時,可以防止處理器400供應所請求的高速緩存行的數(shù)據(jù)。在一個具體實施例中,如果處理器400在高速緩存420中具有處于共享狀態(tài)的所請求的高速緩存行,那么當且僅當BOFF_IN 436為真時,處理器400可以插入,以從所請求的高速緩存行供應數(shù)據(jù)。
現(xiàn)在參考圖5,根據(jù)本發(fā)明的一個實施例,示出了采用后退信號線的多處理器系統(tǒng)的示意圖。圖5實施例假定后退信號利用正邏輯信號,其中將低電壓解釋為邏輯“假”,并將高電壓解釋為邏輯“真”。在其它實施例中,可以使用負邏輯信號,或者一些正邏輯信號和一些負邏輯信號的混合。在這些實施例中,所需的邏輯門轉(zhuǎn)換將會是本領(lǐng)域公知的。
處理器A 520、處理器B 530、處理器C 540和處理器D 550由系統(tǒng)總線510彼此相連。它們還經(jīng)由連接到系統(tǒng)總線510上的存儲器控制器560,與存儲器570相連接。每個處理器可以包括三個后退信號DBKOFF_OUT、IBKOFF_OUT和BOFF_IN。在一個實施例中,這些信號可以如圖4的DBKOFF_OUT、IBKOFF_OUT和BOFF_IN一樣起作用。存儲器控制器560的BOFF_IN 564能以比圖4中的BOFF_IN信號更簡單的方式起作用,并且只要BOFF_IN 564保持為真,就可以阻止存儲器控制器560從存儲器570中所請求的高速緩存行供應數(shù)據(jù)。
如果處理器A 520、處理器B 530、處理器C 540或處理器D 550這些處理器中的任何一個包括處于有效狀態(tài)的所請求的高速緩存行,那么IBKOFF_OUT 528、IBKOFF_OUT 538、IBKOFF_OUT 548或IBKOFF_OUT 558這些IBKOFF_OUT信號中的至少一個會為真。因此,與BOFF_IN 564相連接的門562的輸出會為真,并由此阻止存儲器控制器560以來自存儲器570的所請求的高速緩存行的數(shù)據(jù)作為響應。此被阻止的響應可能已是不必要的或重復的。并且從存儲器570接收任何數(shù)據(jù)可能都比從另一代理的高速緩存接收數(shù)據(jù)需要更多的時間。
可以認為處理器A 520、處理器B 530、處理器C 540和處理器D 550這些處理器處于相對于彼此的邏輯順序當中。認為它們位于彼此的左邊或者右邊可以使討論更進一步但是,重要的是處理器的邏輯排序,而不是物理排序。每個處理器,處理器A 520、處理器B 530、處理器C 540和處理器D 550的各自的門522、門532、門542和門562的門輸出分別與其BOFF_IN信號,BOFF_IN 524、BOFF_IN 534、BOFF_IN 544和BOFF_IN564相連接。在一個實施例中,門522、門532、門542和門562每個門的輸入與來自其右邊處理器的IBKOFF_OUT信號相連接,并與來自其左邊處理器的DBKOFF_OUT相連接。此后退信號的連接可以用來阻止具有處于共享狀態(tài)的高速緩存行的代理對啟動讀取并使行無效事務的代理的數(shù)據(jù)響應,所述共享狀態(tài)是S狀態(tài)或O狀態(tài)。如果請求代理在處于有效狀態(tài)的所述高速緩存行中不具有所述數(shù)據(jù),則所述的連接還可以提供一種確定性的方式來允許且僅允許一個具有處于共享狀態(tài)的所述高速緩存行的代理向請求代理供應數(shù)據(jù)。
伴隨圖5所示的電路或類似的實施例,可以有一系列規(guī)則。在一個實施例中,在產(chǎn)生讀取并使行無效請求之后,如果請求代理具有處于共享S狀態(tài)或O狀態(tài)的指定高速緩存行,則它可以通過在監(jiān)聽響應階段的時間段期間將其DBKOFF_OUT設(shè)置為真來通知包括存儲器控制器560在內(nèi)的其它代理,即使有它也不需要它們高速緩存中的所述數(shù)據(jù)。然后,請求代理可以更新其自身的高速緩存行,并將該高速緩存行標記為已修改M狀態(tài)。
如果請求代理具有處于無效I狀態(tài)的指定高速緩存行,并且另一監(jiān)聽代理(例如處理器)在其監(jiān)聽之后能夠插入并為指定高速緩存行提供數(shù)據(jù),那么請求代理可以等待其它代理為指定高速緩存行提供數(shù)據(jù)。然后,請求代理可以更新其自身的高速緩存行,并將該高速緩存行標記為已修改M狀態(tài)。
最后,如果請求代理具有處于無效I狀態(tài)的指定高速緩存行,并且沒有監(jiān)聽代理(例如處理器)在其監(jiān)聽之后能夠插入并為指定高速緩存行提供數(shù)據(jù),那么請求代理可以等待存儲器控制器為指定高速緩存行提供數(shù)據(jù)。然后,請求代理可以更新其自身的高速緩存行,并將該高速緩存行標記為已修改M狀態(tài)。
諸如處理器之類的監(jiān)聽代理的責任可以是如下所述的。當接收到讀取并使行無效請求時,如果監(jiān)聽代理具有處于共享S狀態(tài)或O狀態(tài)的指定高速緩存行的數(shù)據(jù),那么它可以將其IBKOFF_OUT設(shè)置為真,表示它能夠插入。如果監(jiān)聽代理在其自身的BOFF_IN上輸入為假,那么它可以向請求代理提供數(shù)據(jù)。另一方面,如果監(jiān)聽代理在其自身的BOFF_IN上輸入為真,那么它不可以向請求代理提供數(shù)據(jù)。然后,在任何一種情況下,監(jiān)聽代理都可以將其指定高速緩存行標記為無效I狀態(tài)。
如果監(jiān)聽代理具有處于已修改M狀態(tài)或?qū)S蠩狀態(tài)的指定高速緩存行的數(shù)據(jù),則它可以將其IBKOFF_OUT設(shè)置為真,表示它能夠插入。由于當監(jiān)聽代理具有指定高速緩存行的數(shù)據(jù)但不處于共享狀態(tài)時,該監(jiān)聽代理無需響應其自身BOFF_IN上的信號,所以它可以無條件地向請求代理提供數(shù)據(jù)。然后,監(jiān)聽代理可以將其指定高速緩存行標記為無效I狀態(tài)。
考慮以下的第一例子,該例子是關(guān)于如何用圖5的后退信號連接來阻止具有處于共享狀態(tài)的高速緩存行的代理對啟動讀取并使行無效事務的代理的數(shù)據(jù)響應。在此第一例子中,令處理器C 540對指定的高速緩存行啟動讀取并使行無效事務。此外,令全部四個處理器,處理器A 520、處理器B 530、處理器C 540和處理器D 550都具有處于共享狀態(tài)的指定高速緩存行中的數(shù)據(jù)。在此情況下,處理器C 540已經(jīng)在所述高速緩存行中具有了所需的數(shù)據(jù),因此任何來自處理器A 520、處理器B 530和處理器D550的數(shù)據(jù)傳輸都是不必要的。因為處理器C 540在指定高速緩存行中具有處于共享狀態(tài)的數(shù)據(jù),并且因為處理器C 540是讀取并使行無效請求的啟動者,所以處理器C 540將其DBKOFF_OUT 546設(shè)置為真。因為處理器C 540已在其自身的高速緩存中找到了指定高速緩存行中數(shù)據(jù)的有效拷貝,所以處理器C 540將其IBKOFF_OUT 548設(shè)置為真。DBKOFF_OUT546為真通過門552阻止處理器D 550以數(shù)據(jù)作為響應。處理器D 550所做的全部就是將高速緩存行狀態(tài)改變?yōu)闊o效I狀態(tài)。IBKOFF_OUT 548為真通過門532、522阻止處理器A 520和處理器B 530以數(shù)據(jù)作為響應。處理器A 520和處理器B 530所做的全部就是將各自的高速緩存行狀態(tài)改變?yōu)闊o效I狀態(tài)。繼其它處理器中的無效之后,處理器C 540具有處于專有E狀態(tài)的數(shù)據(jù),然后可以向高速緩存行寫入,使其前進到已修改M狀態(tài)。注意由于至少一個IBKOFF_OUT線為真,阻止了存儲器控制器560從存儲器570的指定高速緩存行將數(shù)據(jù)發(fā)送到處理器C 540。
考慮以下的第二例子,該例子是關(guān)于圖5的實施例如何提供一種確定性的方式來允許且僅允許一個具有處于共享狀態(tài)的所述高速緩存行的代理向請求代理供應數(shù)據(jù),如果請求代理不具有處于有效狀態(tài)的所述高速緩存行中的所述數(shù)據(jù)的話。在此第二例子中,令處理器B 530對指定的高速緩存行啟動讀取并使行無效事務。此外,令處理器A 520、處理器C 540和處理器D 550具有處于共享狀態(tài)的指定高速緩存行中的數(shù)據(jù)。在此情況下,處理器B 530在所述高速緩存行中不具有所需的數(shù)據(jù)(或者可能具有處于無效I狀態(tài)的所述數(shù)據(jù)),并且需要所述數(shù)據(jù)的至少一份拷貝。因為處理器B 530在所述高速緩存行中不具有所需的數(shù)據(jù),所以處理器B 530將其DBKOFF_OUT 536保持為假。因為處理器B 530還未在其自身的高速緩存中找到指定高速緩存行的數(shù)據(jù)的有效拷貝,所以處理器B 530將其IBKOFF_OUT 538保持為假。現(xiàn)在,其它處理器,處理器A 520、處理器C 540和處理器D 550,不啟動讀取并使行無效事務,因此它們都不可能將它們的DBKOFF_OUT設(shè)置為真。但是,所有處理器都具有處于共享狀態(tài)的指定高速緩存行中的數(shù)據(jù),因此所有處理器都可以將它們的IBKOFF_OUT設(shè)置為真。當IBKOFF_OUT 528、IBKOFF_OUT548和IBKOFF_OUT558全為真時,禁止了處理器A 520和處理器C 540將它們的指定高速緩存行中數(shù)據(jù)的拷貝發(fā)送給處理器B 530。只有處理器D 550可以將其指定高速緩存行中數(shù)據(jù)的拷貝發(fā)送給處理器B 530。然后,處理器A 520、處理器C 540和處理器D 550使它們各自的指定高速緩存行中的數(shù)據(jù)無效。注意由于至少一個IBKOFF_OUT線為真,阻止了存儲器控制器560從存儲器570的指定高速緩存行將數(shù)據(jù)發(fā)送到處理器B 530。
在以上的說明書中,參考其具體的示例性實施例對本發(fā)明進行了描述。但是很明顯,在不脫離如所附權(quán)利要求所闡述的那樣的本發(fā)明更廣的精神和范圍的情況下,可以對其進行各種修改和變化。因此,本說明書及附圖應被看成說明性的而非限制性的。
權(quán)利要求
1.一種代理,包括高速緩沖存儲器;和總線接口,耦合到所述高速緩沖存儲器和總線上,所述總線接口包括對所述總線的可持有接口,其中當所述高速緩存啟動寫行傳輸時,所述可持有接口傳達持有能力狀態(tài)。
2.如權(quán)利要求1所述的代理,其中當所述高速緩存是直寫式高速緩存時,所述總線接口經(jīng)由所述可持有接口發(fā)出表示假的信號。
3.如權(quán)利要求1所述的代理,其中當所述高速緩存是回寫式高速緩存時,所述總線接口經(jīng)由所述可持有接口發(fā)出表示真的信號。
4.如權(quán)利要求3所述的代理,其中所述總線接口從遠程代理接收遠程持有能力狀態(tài)。
5.如權(quán)利要求4所述的代理,其中當所述遠程持有能力狀態(tài)為假時,所述高速緩存響應于所述遠程持有能力狀態(tài),監(jiān)聽所述高速緩存。
6.如權(quán)利要求5所述的代理,其中當所述遠程持有能力狀態(tài)為真時,所述高速緩存響應于所述遠程持有能力狀態(tài),不監(jiān)聽所述高速緩存。
7.如權(quán)利要求1所述的代理,其中所述可持有接口是信號引腳。
8.一種方法,包括從第一代理啟動寫行事務;通過總線來傳達所述第一代理的持有能力狀態(tài);響應于所述持有能力狀態(tài),確定第二代理是否應該進行高速緩存監(jiān)聽。
9.如權(quán)利要求8所述的方法,其中所述傳達包括設(shè)置設(shè)備引腳處的邏輯狀態(tài)。
10.如權(quán)利要求8所述的方法,其中所述確定包括當所述持有能力狀態(tài)為真時,確定所述第二代理不應進行高速緩存監(jiān)聽。
11.如權(quán)利要求8所述的方法,其中所述確定包括當所述持有能力狀態(tài)為假時,確定所述第二代理應該進行高速緩存監(jiān)聽。
12.一種系統(tǒng),包括第一代理,包括第一高速緩存和對總線的第一總線接口,其中當所述第一高速緩存啟動第一寫行請求時,所述第一總線接口將可持有狀態(tài)信號驅(qū)使為假;第二代理,包括第二高速緩存和對所述總線的第二總線接口,其中當所述第二高速緩存啟動第二寫行請求時,所述第二總線接口將所述可持有狀態(tài)信號驅(qū)使為真;和第三代理,具有對所述總線的第三總線接口,其中當所述第三代理啟動第三寫行請求時,所述第三總線接口將所述可持有狀態(tài)信號驅(qū)使為假。
13.如權(quán)利要求12所述的系統(tǒng),其中響應于繼所述第一寫行請求之后的所述可持有狀態(tài)信號,所述第二高速緩存進行監(jiān)聽。
14.如權(quán)利要求12所述的系統(tǒng),其中響應于繼所述第三寫行請求之后的所述可持有狀態(tài)信號,所述第二高速緩存進行監(jiān)聽。
15.如權(quán)利要求12所述的系統(tǒng),其中響應于繼所述第三寫行請求之后的所述可持有狀態(tài)信號,所述第一高速緩存進行監(jiān)聽。
16.如權(quán)利要求12所述的系統(tǒng),其中響應于繼所述第二寫行請求之后的所述可持有狀態(tài)信號,所述第一高速緩存不進行監(jiān)聽。
17.一種代理,包括高速緩沖存儲器,包括高速緩存邏輯;第一后退輸出信號,耦合到所述高速緩存邏輯上,以表示所述代理不需要第二代理供應第一高速緩存行的數(shù)據(jù);和后退輸入信號,耦合到所述高速緩存邏輯上,以在所述后退輸入信號為假的情況下允許所述高速緩沖存儲器以第二高速緩存行的數(shù)據(jù)進行插入。
18.如權(quán)利要求17所述的代理,其中當所述第一高速緩存行以共享狀態(tài)存在于所述高速緩沖存儲器中時,所述第一后退輸出信號為真。
19.如權(quán)利要求17所述的代理,其中當所述第一高速緩存行以無效狀態(tài)存在于所述高速緩沖存儲器中時,所述第一后退輸出信號為假。
20.如權(quán)利要求17所述的代理,其中如果所述第二高速緩存行在所述高速緩存內(nèi)處于共享狀態(tài),并且所述后退輸入信號為假,則所述高速緩存發(fā)送所述第二高速緩存行的所述數(shù)據(jù)。
21.如權(quán)利要求17所述的代理,還包括第二后退輸出信號,以表示所述高速緩沖存儲器何時包括處于有效狀態(tài)的所述第二高速緩存行。
22.如權(quán)利要求21所述的代理,當所述高速緩存能夠插入時,所述第二后退輸出信號為真。
23.一種方法,包括在第一代理中,對第一高速緩存行啟動高速緩存行寫入請求;對所述第一代理的第一高速緩存進行監(jiān)聽;在所述第一代理中,啟動讀取并使無效的請求;以及如果所述第一高速緩存行處于共享狀態(tài),則將第一后退輸出信號設(shè)置為真。
24.如權(quán)利要求23所述的方法,還包括,如果所述第一高速緩存行未處于共享狀態(tài),則將第一后退輸出信號設(shè)置為假。
25.如權(quán)利要求23所述的方法,還包括在第二代理中接收所述讀取并使無效的請求。
26.如權(quán)利要求25所述的方法,還包括響應于所述讀取并使無效的請求來監(jiān)聽所述第二代理的第二高速緩存,以及確定所述第二代理的后退輸入信號的狀態(tài)。
27.如權(quán)利要求26所述的方法,還包括,如果所述第一高速緩存行在所述第二高速緩存中處于有效狀態(tài),則將所述第二代理的第二后退輸出信號設(shè)置為真。
28.如權(quán)利要求27所述的方法,還包括,如果所述第二高速緩存中的所述第一高速緩存行處于共享狀態(tài),并且所述后退輸出信號的所述狀態(tài)為假,則將所述第二高速緩存中的所述第一高速緩存行提供給所述第一高速緩存。
29.一種系統(tǒng),包括總線;第一代理,耦合到所述總線上,該第一代理包括第一高速緩存、第一后退輸出信號和第一后退輸入信號,所述第一后退輸出信號耦合到所述第一高速緩存上,以表示所述第一高速緩存不需要從外部供應第一高速緩存行的數(shù)據(jù),所述第一后退輸入信號耦合到所述高速緩存上,以在所述后退輸入信號為假的情況下,允許所述高速緩存以第二高速緩存行的數(shù)據(jù)進行插入;存儲器控制器,耦合到所述總線上,該存儲器控制器包括第二后退輸入信號,以在所述后退輸入信號為假的情況下,允許所述存儲器控制器以第二高速緩存行的數(shù)據(jù)進行插入;和音頻輸入/輸出控制器,經(jīng)由總線橋耦合到所述總線上。
30.如權(quán)利要求29所述的系統(tǒng),其中所述第一代理的第二后退輸出信號耦合到所述存儲器控制器的所述第二后退輸入信號上。
31.如權(quán)利要求30所述的系統(tǒng),還包括第二代理,耦合到所述總線上,所述第二代理包括第三后退輸出信號,以表示第二高速緩存何時包括處于有效狀態(tài)的所述第二高速緩存行;和第三后退輸入信號,耦合到所述第二高速緩存上,以在所述第三后退輸入信號為假的情況下,允許所述第二高速緩存以所述第一高速緩存行的數(shù)據(jù)進行插入。
32.如權(quán)利要求31所述的系統(tǒng),其中所述第三后退輸出信號耦合到所述第一后退輸入信號和所述第二后退輸入信號上。
33.如權(quán)利要求31所述的系統(tǒng),其中所述第一后退輸出信號耦合到所述第三后退輸入信號上。
全文摘要
本發(fā)明公開了一種用于提高高速緩存性能的系統(tǒng)和方法。在一個實施例中,將高速緩存一致性方案按其是否能夠進行回寫式高速緩存來分類。一個信號可以在處理器間傳送此信息,在某些情況下容許它們阻止監(jiān)聽。在另一實施例中,可以在處理器間交換后退信號,允許它們阻止系統(tǒng)總線上某些不必要的數(shù)據(jù)傳輸。
文檔編號G06F12/08GK1506845SQ20031011573
公開日2004年6月23日 申請日期2003年11月28日 優(yōu)先權(quán)日2002年12月10日
發(fā)明者薩曼莎·J·埃迪里蘇里亞, 蘇亞特·雅米爾, 戴維·E·邁納, R·弗蘭克·奧布萊奈斯, 史蒂文·J·圖, 漢格·T·源, J 圖, 雅米爾, E 邁納, T 源, 伎恕ぐ虜祭襯嗡, 薩曼莎 J 埃迪里蘇里亞 申請人:英特爾公司