專利名稱:系統(tǒng)控制器、偵聽標(biāo)簽修改方法和信息處理裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多處理器系統(tǒng)中的系統(tǒng)控制器、偵聽標(biāo)簽(sno叩tag)修 改方法和信息處理裝置,用于控制具有關(guān)于每個(gè)CPU的緩存標(biāo)簽(cache tag)的拷貝信息(copy information)的偵聽標(biāo)簽,以確保緩存存儲(chǔ)器 (cache memory )的 一 致性。
背景技術(shù):
近年來,信息處理裝置已被廣泛用于各個(gè)領(lǐng)域。因此,比以往更多地 要求多處理器配置中的芯片集的高處理能力。圖23示出多處理器系統(tǒng)的示例。在圖23所示的多處理器系統(tǒng)中, CPU 520a和520b經(jīng)由CPU總線530a被連接到系統(tǒng)控制器510,而CPU 520c和520d經(jīng)由CPU總線530c被連接到系統(tǒng)控制器510。 CPU 520a-520d分別包括緩存存儲(chǔ)器521a-521d以及緩存標(biāo)簽522a-522d。另外,系 統(tǒng)控制器510包括對(duì)應(yīng)于各個(gè)CPU 520a-520d中的緩存標(biāo)簽522a-522d的 偵聽標(biāo)簽511a-511d。存儲(chǔ)在緩存存儲(chǔ)器521中的數(shù)據(jù)的狀態(tài)和地址被記錄在緩存標(biāo)簽522 中。關(guān)于相應(yīng)緩存標(biāo)簽522的拷貝信息被記錄在偵聽標(biāo)簽511中。圖24示出傳統(tǒng)的緩存標(biāo)簽/偵聽標(biāo)簽的示例。圖24示出連接到圖23 所示的同一 CPU總線530a的CPU 520a和520b與系統(tǒng)控制器510之間的 關(guān)系。同一索引的條目被示出在CPU 520a的緩存標(biāo)簽522a中,CPU 520b 的緩存標(biāo)簽522b中,以及系統(tǒng)控制器510的偵聽標(biāo)簽511a和偵聽標(biāo)簽 511b中。應(yīng)該注意,緩存存儲(chǔ)器521被假設(shè)受控于4路集合關(guān)聯(lián)方法(4-Way set associative method)。系統(tǒng)控制器510中的偵聽標(biāo)簽511a保留著關(guān)于相應(yīng)緩存標(biāo)簽522a的 拷貝信息。而且,系統(tǒng)控制器510中的偵聽標(biāo)簽511b保留著關(guān)于相應(yīng)緩
存標(biāo)簽522b的拷貝信息。在圖24中,注冊(cè)在緩存標(biāo)簽522中的條目在相 應(yīng)的偵聽標(biāo)簽511中具有有效條目。圖24所示緩存標(biāo)簽522和偵聽標(biāo)簽511中的每個(gè)條目的狀態(tài)和地址被 描述。這里,MESI協(xié)議被用于緩存一致性。MESI協(xié)議是一種緩存一致性 協(xié)議,并且將緩存的每一行劃分成指示修改狀態(tài)的M (Modified,修改 的)、指示獨(dú)占狀態(tài)的E (Exclusive,獨(dú)占的)、指示共享狀態(tài)的S (Shared,共享的)和指示無效狀態(tài)的I (Invalid,無效的),然后控制它 們。圖25示出驅(qū)逐(Eviction)。驅(qū)逐用于從系統(tǒng)控制器510指示針對(duì) CPU 520執(zhí)行緩存排出(ejection)過程。在下文中,驅(qū)逐將利用圖25的 示例來描述。首先,如階段0所示,假設(shè)在緩存標(biāo)簽522和偵聽標(biāo)簽511兩者中同 一索引為空白。此時(shí),當(dāng)CPU 520讀取塊號(hào)(block number) A吋,塊號(hào) A被分別注冊(cè)在緩存標(biāo)簽522和偵聽標(biāo)簽511中,如階段1所示。此外, 當(dāng)CPU 520繼續(xù)通過塊號(hào)B、塊號(hào)C和塊號(hào)D讀取同一索引時(shí),它們變?yōu)?路滿(way-fiill),如階段2所示。在這種路滿狀態(tài)中,如果CPU 520希望進(jìn)一步讀取同一索引的塊號(hào) E, CPU 520則不得不首先刪除緩存標(biāo)簽522中的任何數(shù)據(jù)。這里,塊號(hào) A將被刪除。如果CPU 520不支持緩存替換請(qǐng)求并且塊號(hào)A的狀態(tài)不是M(修改的),則在CPU 520中的塊號(hào)A處發(fā)生靜默丟棄(silent drop)。 如階段3所示,塊號(hào)A在緩存標(biāo)簽522中被刪除。應(yīng)該注意,靜默丟棄將 在不通知他人的情況下拋棄數(shù)據(jù)。類似地,當(dāng)系統(tǒng)控制器510接收到CPU 520對(duì)塊號(hào)E的讀取時(shí),系統(tǒng) 控制器510也將注冊(cè)塊號(hào)E并且不得不刪除偵聽標(biāo)簽511中的任何一個(gè)數(shù) 據(jù)。這里,塊號(hào)B將被刪除。此時(shí),由于存在"存在于緩存標(biāo)簽522中的 條目必須存在于偵聽標(biāo)簽511中"的包含規(guī)則,因此系統(tǒng)控制器510不得 不使得CPU 520也刪除系統(tǒng)控制器510已經(jīng)刪除的條目,從而需要向CPU 520發(fā)布排出請(qǐng)求,如階段4所示。該排出請(qǐng)求被稱為驅(qū)逐。最終,在緩 存標(biāo)簽522和偵聽標(biāo)簽511兩者中都將存在空白條目,從而塊號(hào)E可被分
別注冊(cè)在兩者中,如階段5所示。應(yīng)該注意,描述與用于確保多處理器系統(tǒng)中的緩存存儲(chǔ)器的一致性的 系統(tǒng)控制器相關(guān)的技術(shù)的現(xiàn)有技術(shù)文獻(xiàn)例如包括專利文獻(xiàn)1 (日本專利早期公開No. 2001-43204)。專利文獻(xiàn)1描述了一種與對(duì)應(yīng)于上述系統(tǒng)控制 器510的緩存存儲(chǔ)器控制裝置相關(guān)的技術(shù),用于利用總線偵聽方法來確保 緩存存儲(chǔ)器的一致性。但是,在專利文獻(xiàn)1中描述的技術(shù)無法解決下述問 題。在沒有來自CPU 520的緩存替換請(qǐng)求的系統(tǒng)中,系統(tǒng)控制器510巾的 偵聽標(biāo)簽511通常具有已被替換的條目,就是說,已被CPU 520降到I (無效的)(參考圖25中的階段3)。由于該特性,即使CPU 520尚未路 滿,系統(tǒng)控制器510也可能誤解成CPU 520路滿,并發(fā)布驅(qū)逐(參考圖25 中的階段4)。從而,針對(duì)CPU 520,系統(tǒng)控制器510碰巧發(fā)布了比所需更多的數(shù)據(jù) 排出請(qǐng)求。因此,當(dāng)遭受數(shù)據(jù)排出請(qǐng)求的條目是CPU 520仍舊需要的條目 時(shí),CPU 520不得不在隨后其需要該條目時(shí)發(fā)布讀取請(qǐng)求以再次獲得該條 目,這是系統(tǒng)性能下降的主要原因。發(fā)明內(nèi)容本發(fā)明的目的在于提供用于減少系統(tǒng)控制器驅(qū)逐次數(shù)并防止系統(tǒng)性能 惡化的技術(shù)。本發(fā)明的特征在于與連接到同一 CPU總線的各個(gè)CPU相對(duì)應(yīng)的偵聽 標(biāo)簽在系統(tǒng)控制器中以集成方式被管理,并且當(dāng)同一地址在連接到同一 CPU總線的每個(gè)CPU的緩存標(biāo)簽中都被注冊(cè)成共享狀態(tài)時(shí),該地址僅在 與同一地址被注冊(cè)到的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的任何一個(gè)中被注冊(cè)成共 享狀態(tài)。換言之,系統(tǒng)控制器具有用于進(jìn)行控制以使得處于共享狀態(tài)(共 享的)的同一地址僅被注冊(cè)在連接到同一 CPU總線的CPU的偵聽標(biāo)簽中 的任何一個(gè)中。具體而言,本發(fā)明管理多處理器系統(tǒng)中的多個(gè)包括緩存存儲(chǔ)器的 CPU,其中包括針對(duì)每個(gè)CPU的具有關(guān)于每個(gè)CPU保留的緩存標(biāo)簽的拷
貝信息的偵聽標(biāo)簽,并且如果同一地址被注冊(cè)在連接到同一CPU總線的每 個(gè)CPU中,則該地址僅在與同一地址被注冊(cè)到的CPU相對(duì)應(yīng)的偵聽標(biāo)簽 中的任何一個(gè)中被注冊(cè)成共享狀態(tài)。從而,可以減少系統(tǒng)控制器中的偵聽 標(biāo)簽中的已用條目的數(shù)目。此外,本發(fā)明可以包括執(zhí)行針對(duì)來自CPU的請(qǐng)求的過程的請(qǐng)求處理部 分。如果讀取請(qǐng)求已被從一個(gè)CPU發(fā)布并且被請(qǐng)求讀取的地址已在對(duì)應(yīng)f 與發(fā)布該讀取請(qǐng)求的CPU連接到同一 CPU總線的另一 CPU的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),該請(qǐng)求處理部分則執(zhí)行不將上述地址注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的偵聽標(biāo)簽修改過程。從而,偵聽標(biāo)簽修改中驅(qū)逐的次數(shù)可利用簡(jiǎn)單的電路來減少,這可以提高系統(tǒng)性能。 此外,本發(fā)明可以包括這樣的請(qǐng)求處理部分,如果讀取請(qǐng)求已被從--個(gè)CPU發(fā)布并且被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布該讀取請(qǐng)求的CPU 連接到同一 CPU總線的另一 CPU的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),該請(qǐng)求處理部分則執(zhí)行將上述地址在被請(qǐng)求讀取的地址已被注冊(cè)到的偵聽標(biāo)簽 中的條目改變到無效狀態(tài)的偵聽標(biāo)簽修改過程,并將上述地址注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中。從而,偵聽標(biāo)簽持續(xù)保留CPU 中的緩存標(biāo)簽中已被從s (共享的)降到I (無效的)的條目的可能性可得以降低,這可以提高系統(tǒng)性能。此外,本發(fā)明可以包括這樣的請(qǐng)求處理部分,如果讀取請(qǐng)求已被從一個(gè)CPU發(fā)布并且被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布該讀取請(qǐng)求的CPU 連接到同一 CPU總線的另一 CPU的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),該諾求處理部分則將被請(qǐng)求讀取的地址已被注冊(cè)到的偵聽標(biāo)簽和與發(fā)布讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的空白條目的數(shù)目(空白路的數(shù)目)或己用條目的數(shù)目(已用路的數(shù)目)相比較,并根據(jù)比較結(jié)果,確定是執(zhí)行不將上述地址注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的偵聽標(biāo)簽修 改過程,還是執(zhí)行將上述地址在上述地址已被注冊(cè)到的偵聽標(biāo)簽中的條H 改變到無效狀態(tài)并將上述地址注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的偵聽標(biāo)簽修改過程,并執(zhí)行所確定的偵聽標(biāo)簽修改過程。 從而,可以提高系統(tǒng)性能,同時(shí)維持減少無用驅(qū)逐的發(fā)生和降低偵聽
標(biāo)簽持續(xù)保留CPU中的緩存標(biāo)簽中已從S (共享狀態(tài))降到I (無效狀 態(tài))的條目的可能性之間的平衡。此外,本發(fā)明可以包括這樣的請(qǐng)求處理部分,當(dāng)緩存替換請(qǐng)求己被從一個(gè)CPU發(fā)布時(shí),所述請(qǐng)求處理部分偵聽與發(fā)布緩存替換請(qǐng)求的CPU連 接到同一 CPU總線的另一 CPU的共享狀態(tài),然后作為結(jié)果,如果被請(qǐng)求 緩存替換的地址已在除發(fā)布緩存替換請(qǐng)求的CPU之外的CPU中被注冊(cè)成共享狀態(tài),則執(zhí)行使發(fā)布的緩存替換請(qǐng)求無效的緩存替換請(qǐng)求應(yīng)對(duì)過程。 從而,可以防止緩存替換請(qǐng)求可能導(dǎo)致的偵聽標(biāo)簽中的一致性錯(cuò)誤。 此外,本發(fā)明可以包括這樣的請(qǐng)求處理部分,當(dāng)緩存替換請(qǐng)求己被從一個(gè)CPU發(fā)布時(shí),所述請(qǐng)求處理部分偵聽與發(fā)布緩存替換請(qǐng)求的CPU連 接到同一 CPU總線的另一 CPU的共享狀態(tài),并且作為結(jié)果,如果被請(qǐng)求 緩存替換的地址尚未被注冊(cè)在除發(fā)布緩存替換請(qǐng)求的CPU之外的CPU 中,則執(zhí)行將發(fā)布的緩存替換請(qǐng)求擴(kuò)展為來自與發(fā)布緩存替換請(qǐng)求的CPU 連接到同一 CPU總線的所有CPU的緩存替換請(qǐng)求的緩存替換請(qǐng)求應(yīng)對(duì)過 程。從而,可以防止偵聽標(biāo)簽由于緩存替換請(qǐng)求而持續(xù)保留已被CPU降到I (無效狀態(tài))的地址的條目。此外,本發(fā)明可以包括這樣的請(qǐng)求處理部分,該請(qǐng)求處理部分不僅在讀取請(qǐng)求被從一個(gè)CPU發(fā)布的情況下,而且在同一 CPU總線中CPU中的 緩存標(biāo)簽的條目狀態(tài)被從E (獨(dú)占狀態(tài))修改到S (共享狀態(tài))并且在同 一 CPU中一個(gè)E (獨(dú)占狀態(tài))被改變到兩個(gè)S (共享狀態(tài))注冊(cè)的情況下,執(zhí)行在相應(yīng)偵聽標(biāo)簽中進(jìn)行一個(gè)s (共享狀態(tài))注冊(cè)的偵聽標(biāo)簽修改過程。從而,上述偵聽標(biāo)簽修改過程還可應(yīng)用在將條目狀態(tài)從E (獨(dú)占狀 態(tài))改變到s (共享狀態(tài))的情況下。此外,本發(fā)明可以包括這樣的請(qǐng)求處理部分,該請(qǐng)求處理部分取決于模式信號(hào),在讀取請(qǐng)求被從CPU發(fā)布時(shí),改變將被執(zhí)行的偵聽標(biāo)簽修改處理方法。從而,偵聽標(biāo)簽修改過程的邏輯可被自由地改變,這使得真實(shí)機(jī) 器能夠研習(xí)取決于偵聽標(biāo)簽修改方法的不同的性能變化,并且還能夠針對(duì) 每個(gè)多處理器系統(tǒng)選擇適當(dāng)?shù)膫陕牁?biāo)簽修改處理方法??梢匀Q于提供給請(qǐng)求處理部分的模式信號(hào)來選擇的偵聽標(biāo)簽修改處
理方法包括至少以下方法,例如,在處于共享狀態(tài)的讀取請(qǐng)求已被從一個(gè) CPU發(fā)布并且同一地址已被注冊(cè)在連接到同一 CPU總線的每個(gè)CPU的緩 存存儲(chǔ)器的標(biāo)簽中的情況下進(jìn)行控制以不將上述被請(qǐng)求讀取的地址注冊(cè) 在與發(fā)布讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的方法;進(jìn)行控制以將上述 地址在被請(qǐng)求讀取的地址已被注冊(cè)到的偵聽標(biāo)簽中的條目改變到無效狀態(tài) 并將上述地址注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的方法; 以及與現(xiàn)有技術(shù)類似地,將同一地址在多個(gè)偵聽標(biāo)簽中注冊(cè)成共享狀態(tài)的 方法。根據(jù)本發(fā)明,系統(tǒng)控制器中的偵聽標(biāo)簽中的空白條目的數(shù)目得以增 大,并且偵聽標(biāo)簽的使用可得以減少,這可以減少驅(qū)逐的發(fā)生。當(dāng)驅(qū)逐的 次數(shù)被減少時(shí),必要數(shù)據(jù)被扔到CPU中的緩存存儲(chǔ)器之外的情況的數(shù)目得 以減少,這提高了系統(tǒng)性能。
圖l示出本發(fā)明實(shí)施例中的多處理器系統(tǒng)的配置示例; 圖2示出該實(shí)施例的緩存標(biāo)簽/偵聽標(biāo)簽的示例; 圖3示出該實(shí)施例的請(qǐng)求處理部分的配置示例;圖4是在第一情況中根據(jù)偵聽標(biāo)簽修改樣式1的偵聽標(biāo)簽修改過程流 程圖;圖5是在第一情況中根據(jù)偵聽標(biāo)簽修改樣式2的偵聽標(biāo)簽修改過程流 程圖;圖6是在第一情況中根據(jù)偵聽標(biāo)簽修改樣式3的偵聽標(biāo)簽修改過程流 程圖;圖7A、 7B、 8A和8B示出在第一情況中的偵聽標(biāo)簽修改的示例; 圖9A、 9B、 IOA和IOB示出在第一情況中的偵聽標(biāo)簽修改的示例; 圖11是在第二情況中根據(jù)偵聽標(biāo)簽修改樣式1的偵聽標(biāo)簽修改過程 流程圖;圖12是在第二情況中根據(jù)偵聽標(biāo)簽修改樣式2的偵聽標(biāo)簽修改過程 流程圖13是在第二情況中根據(jù)偵聽標(biāo)簽修改樣式3的偵聽標(biāo)簽修改過程 流程圖;圖14A、 14B、 15A禾卩15B示出在第三情況中的偵聽標(biāo)簽修改的小-例;圖16A、 16B、 17A禾n 17B示出在第四情況中的偵聽標(biāo)簽修改的示例;圖18是在可以改變偵聽標(biāo)簽修改模式的情況下的偵聽標(biāo)簽修改過程 流程圖;圖19A和19B示出使緩存替換請(qǐng)求無效的過程的示例;圖20A和20B示出擴(kuò)展緩存替換請(qǐng)求的過程的示例;圖21是根據(jù)該實(shí)施例的緩存替換請(qǐng)求應(yīng)對(duì)(addressing)過程流程圖;圖22是在可以改變偵聽標(biāo)簽修改模式的情況下的緩存替換請(qǐng)求應(yīng)對(duì) 過程流程圖;圖23示出多處理器系統(tǒng)的示例; 圖24示出傳統(tǒng)的緩存標(biāo)簽/偵聽標(biāo)簽的示例;以及 圖25示出驅(qū)逐。
具體實(shí)施方式
在下文中,本發(fā)明的實(shí)施例將利用附圖來描述。圖l示出根據(jù)本發(fā)明實(shí)施例的多處理器系統(tǒng)的配置示例。圖l所示多 處理器系統(tǒng)被配置以四個(gè)系統(tǒng)板100a-100d和地址交叉(crossbar)板 200。各個(gè)系統(tǒng)板100a-100d和地址交叉板200經(jīng)由局部總線300a-300d、 全局總線301、局部通知路徑302(a-d)、全局通知路徑303等相連。系統(tǒng)板100a包括系統(tǒng)控制器110和四個(gè)CPU 120a-120d。 CPU 120a 和CPU 120b經(jīng)由CPU總線130a連接到系統(tǒng)控制器110,而CPU 120c和 CPU 120d經(jīng)由CPU總線130c連接到系統(tǒng)控制器110。其它系統(tǒng)板100b-100d具有與系統(tǒng)板100a類似的配置。各個(gè)CPU 120a-120d分別包括緩存存儲(chǔ)器121a-121d和緩存標(biāo)簽
122a-122d。在本實(shí)施例中,緩存存儲(chǔ)器121被假設(shè)受控于4路集合關(guān)聯(lián) 方法。系統(tǒng)控制器IIO包括偵聽標(biāo)簽llla-llld、 CPU發(fā)布的請(qǐng)求隊(duì)列112a 和112c、局部仲裁器113、請(qǐng)求處理部分114和請(qǐng)求執(zhí)行部分115。偵聽標(biāo)簽llla-llld分別對(duì)應(yīng)于緩存標(biāo)簽122a-122d。 CPU發(fā)布的諾 求隊(duì)列112保留CPU 120針對(duì)每個(gè)CPU總線130發(fā)布的請(qǐng)求。這鄰., CPU發(fā)布的請(qǐng)求隊(duì)列112a保留由CPU 120a和120b發(fā)布的請(qǐng)求,而CPU 發(fā)布的請(qǐng)求隊(duì)列112c保留由CPU 120c和120d發(fā)布的請(qǐng)求。局部仲裁器 113將保留在CPU發(fā)布的請(qǐng)求隊(duì)列112中的請(qǐng)求輸出到局部總線300a。請(qǐng)求處理部分114執(zhí)行針對(duì)從全局總線301發(fā)送的請(qǐng)求的過程。請(qǐng)求 處理部分114包括資源管理部分116和請(qǐng)求執(zhí)行激活部分117。資源管理 部分116檢查用于處理請(qǐng)求的資源等。請(qǐng)求執(zhí)行激活部分117啟動(dòng)請(qǐng)求執(zhí) 行部分115或修改偵聽標(biāo)簽111。地址交叉板200包括全局仲裁器210和可執(zhí)行性確定電路220。全局 仲裁器210將從局部總線300a-300d輸入的請(qǐng)求經(jīng)由全局總線301輸出到 所有系統(tǒng)板100a-100d??蓤?zhí)行性確定電路220基于從局部通知路徑302a-302d輸入的通知來確定請(qǐng)求執(zhí)行是對(duì)的還是錯(cuò)的,并將結(jié)果和請(qǐng)求執(zhí)行 所需的信息經(jīng)由全局通知路徑303通知給各個(gè)系統(tǒng)板100a-100d。這里,將描述例如在CPU 120a執(zhí)行讀取請(qǐng)求的情況下,圖l所示系 統(tǒng)中的操作。這里,假設(shè)CPU 120a讀取塊號(hào)1000。CPU 120a首先搜索緩存標(biāo)簽122a,以確認(rèn)塊號(hào)1000處的數(shù)據(jù)是否存 在于其自己的緩存存儲(chǔ)器121a中。作為搜索結(jié)果,如果CPU 120a確定在 其自己的緩存存儲(chǔ)器121a中不存在有效數(shù)據(jù),CPU 120a則向CPU總線 130a發(fā)布讀取請(qǐng)求。由CPU 120a發(fā)布的請(qǐng)求經(jīng)由CPU發(fā)布的請(qǐng)求隊(duì)列112a、局部仲裁 器113和局部總線300a被輸入到全局仲裁器210。輸入到全局仲裁器210 的請(qǐng)求被同時(shí)經(jīng)由全局總線301通知給所有系統(tǒng)板100a-100d。在系統(tǒng)板100a上,請(qǐng)求被從全局總線301輸入到請(qǐng)求處理部分114。 請(qǐng)求處理部分114讀取各個(gè)偵聽標(biāo)簽111,并利用資源管理部分116檢杳
是否存在用于處理請(qǐng)求的資源等。結(jié)果被經(jīng)由局部通知路徑302a發(fā)送到 可執(zhí)行性確定電路220??蓤?zhí)行性確定電路220基于來自所有局部通知路徑302a-302d的通知 來確定請(qǐng)求執(zhí)行是對(duì)的還是錯(cuò)的,并經(jīng)由全局通知路徑303將結(jié)果和請(qǐng)求 執(zhí)行所需的信息通知給請(qǐng)求執(zhí)行激活部分117。請(qǐng)求執(zhí)行激活部分117基 于請(qǐng)求執(zhí)行確定的結(jié)果是對(duì)的還是錯(cuò)的和請(qǐng)求執(zhí)行所需的信息來修改偵聽 標(biāo)簽111或啟動(dòng)請(qǐng)求執(zhí)行部分115。例如,如果源己被保護(hù)并且所有搜索偵聽標(biāo)簽111的結(jié)果都是無效 的,請(qǐng)求執(zhí)行激活部分117則將塊號(hào)IOOO注冊(cè)在偵聽標(biāo)簽llla中。應(yīng)該 注意,注冊(cè)的狀態(tài)取決于發(fā)布的請(qǐng)求。同時(shí),請(qǐng)求執(zhí)行部分115讀取存儲(chǔ) 器中的塊號(hào)1000并將獲得的數(shù)據(jù)發(fā)送到CPU 120a。 CPU 120a修改緩存 存儲(chǔ)器121a和緩存存儲(chǔ)器122a。此外,例如,如果源己被保護(hù),并且作為搜索偵聽標(biāo)簽111的結(jié)果, 塊號(hào)1000已在偵聽標(biāo)簽lllc中被注冊(cè)成指示修改狀態(tài)的M (修改的), 請(qǐng)求執(zhí)行激活部分117則將塊號(hào)1000注冊(cè)在偵聽標(biāo)簽llla中。應(yīng)該注 意,注冊(cè)的狀態(tài)取決于發(fā)布的請(qǐng)求。而且,塊號(hào)IOOO在偵聽標(biāo)簽lllc中 的狀態(tài)被改變到指示共享狀態(tài)的S (共享的)或指示無效狀態(tài)的I (無效 的)。此時(shí)將改變的狀態(tài)取決于發(fā)布的請(qǐng)求。同時(shí),請(qǐng)求執(zhí)行部分115指 示CPU 120c發(fā)出塊號(hào)1000處的M數(shù)據(jù),并將輸出的數(shù)據(jù)發(fā)送到CPU 120a。 CPU 120a修改緩存存儲(chǔ)器121a和緩存標(biāo)簽122a,并且CPU 120c 修改緩存標(biāo)簽122c。圖2示出本實(shí)施例的第一情況的緩存標(biāo)簽/偵聽標(biāo)簽的示例。圖2示 出在圖1中連接到同一 CPU總線130a的CPU 120a和CPU 120b與系統(tǒng)控 制器IIO之間的關(guān)系。同一索引的條目被示出在CPU 120a中的緩存標(biāo)簽 122a中、CPU 120b中的緩存標(biāo)簽122b中和系統(tǒng)控制器IIO中的偵聽標(biāo)簽 llla和偵聽標(biāo)簽lllb中。針對(duì)圖2的緩存標(biāo)簽122和偵聽標(biāo)簽111中的每個(gè)條目描述狀態(tài)和地 址。這里,MESI被用于緩存一致性。MESI協(xié)議是一種緩存一致性協(xié) 議,并將緩存的每一行劃分成M (修改的)、E (獨(dú)占的)、S (共享
的)和I (無效的)并控制它們。在偵聽標(biāo)簽lll中,原則上,關(guān)于相應(yīng)緩存標(biāo)簽122的拷貝信息被注冊(cè)。但是,在本實(shí)施例中,如果一個(gè)公共地址在經(jīng)由同一 CPU總線130 連接的多個(gè)CPU 120的緩存標(biāo)簽122中已被注冊(cè)成S (共享的) (registered in S),該公共地址則僅被注冊(cè)在相應(yīng)的各個(gè)偵聽標(biāo)簽111中 的任何一個(gè)中。在圖2中,塊號(hào)1000和2000已在緩存標(biāo)簽122a和緩存標(biāo)簽122b兩 者中被注冊(cè)成S (共享的)。由于CPU 120a和CPU 120b被連接到同一 CPU總線130a,因此該公共地址僅被注冊(cè)在系統(tǒng)控制器110中的偵聽標(biāo) 簽llla和偵聽標(biāo)簽lllb中的任何一個(gè)中。在圖2中,公共地址,即塊號(hào) 1000和2000兩者僅在偵聽標(biāo)簽111a中被注冊(cè)成S (共享的),而不被注 冊(cè)在偵聽標(biāo)簽lllb中。因此,在偵聽標(biāo)簽111b中將不存在關(guān)于塊號(hào)1000和2000的S (共 享的)注冊(cè)信息。但是,如果偵聽標(biāo)簽111需要被涉及,例如由于來自另 一 CPU的對(duì)于塊號(hào)1000的請(qǐng)求,則由于關(guān)于塊號(hào)1000的s (共享的)注 冊(cè)信息被從偵聽標(biāo)簽llla讀出,因此即使偵聽標(biāo)簽lllb中沒有塊號(hào)1000 處的S (共享的)注冊(cè)信息,操作也不會(huì)受到影響。另外,如果已經(jīng)發(fā)生 針對(duì)塊號(hào)1000的緩存存儲(chǔ)器清除請(qǐng)求,則由于CPU 120a和CPU 120b被 連接到同一 CPU總線130a,因此該清除請(qǐng)求由于針對(duì)CPU 120a而同時(shí) 也在CPU 120b中被處理。圖3示出本實(shí)施例的請(qǐng)求處理部分的配置示例。還如圖1所示,請(qǐng)求 處理部分114包括資源管理部分116和請(qǐng)求執(zhí)行激活部分117。另外,請(qǐng) 求執(zhí)行激活部分117包括偵聽標(biāo)簽修改部分118和緩存替換請(qǐng)求應(yīng)對(duì)部分 119。偵聽標(biāo)簽修改部分118修改偵聽標(biāo)簽111。但是,還如圖2的示例所 述,在本實(shí)施例中,為了管理與以集成方式一起連接到同一CPU總線130 的各個(gè)CPU 120相對(duì)應(yīng)的各個(gè)偵聽標(biāo)簽111,還在考慮到這種管理的情況 下修改偵聽標(biāo)簽111。換言之,偵聽標(biāo)簽修改部分118在考慮到相同地址 可能未被注冊(cè)在與連接到同一 CPU總線130的各個(gè)CPU 120相對(duì)應(yīng)的各
個(gè)偵聽標(biāo)簽111中的情況下修改偵聽標(biāo)簽111。各種樣式可被設(shè)想作為本 實(shí)施例的偵聽標(biāo)簽修改樣式。這些樣式隨后將詳細(xì)描述。
另外,偵聽標(biāo)簽修改部分118可以利用模式信號(hào)在多種偵聽標(biāo)簽修改樣式(包括傳統(tǒng)修改樣式)之間切換并執(zhí)行修改。
緩存替換請(qǐng)求應(yīng)對(duì)部分119執(zhí)行使緩存替換請(qǐng)求無效的過程或擴(kuò)展緩 存替換請(qǐng)求的過程,以便應(yīng)對(duì)在發(fā)布緩存替換請(qǐng)求時(shí)可能發(fā)生的問題。在 本實(shí)施例中,由緩存替換請(qǐng)求應(yīng)對(duì)部分119執(zhí)行的操作隨后將詳細(xì)描述。
偵聽標(biāo)簽修改部分118對(duì)偵聽標(biāo)簽111的修改將被描述。這里,例 如,在圖2所示的標(biāo)簽狀態(tài)中,在被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布讀 取請(qǐng)求的CPU 120a連接到同一 CPU總線130a的CPU 120b的偵聽標(biāo)簽 lllb中被注冊(cè)成S (共享的)的情況下,將引入三種偵聽標(biāo)簽修改樣式。
在偵聽標(biāo)簽修改樣式1中,當(dāng)一個(gè)CPU 120a發(fā)布讀取請(qǐng)求時(shí),如果 被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布該讀取請(qǐng)求的CPU 120a連接到同一 CPU總線130a的CPU 120b的偵聽標(biāo)簽111b中被注冊(cè)成S (共享的), 對(duì)應(yīng)于已經(jīng)發(fā)布該讀取請(qǐng)求的CPU 120a的偵聽標(biāo)簽llla則不被修改。換 言之,被請(qǐng)求讀取的地址不被注冊(cè)在與發(fā)布該讀取請(qǐng)求的CPU 120a相對(duì) 應(yīng)的偵聽標(biāo)簽llla中。
例如,在圖2中,如果CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求,則由于 塊號(hào)5000已在與連接到同一 CPU總線130a的CPU 120b相對(duì)應(yīng)的偵聽標(biāo) 簽lllb中被注冊(cè)成S (共享的),因此與發(fā)布該讀取請(qǐng)求的CPU 120a相 對(duì)應(yīng)的偵聽標(biāo)簽llla不被修改。
圖4是在第一情況下,根據(jù)偵聽標(biāo)簽修改樣式1的偵聽標(biāo)簽修改過程 流程圖。CPU 120a發(fā)布讀取請(qǐng)求(步驟SIO)。對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的 CPU 120a連接到同一 CPU總線130a的另一 CPU 120b的偵聽標(biāo)簽111b 被搜索(步驟Sll)。作為搜索結(jié)果,如果被請(qǐng)求讀取的地址尚未被注冊(cè) 成S (共享的)(歩驟S12),則被請(qǐng)求讀取的地址被注冊(cè)在與發(fā)布該讀 取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽111a中(歩驟S13)。如果被請(qǐng)求 讀取的地址已被注冊(cè)成S (共享的)(步驟S12),與發(fā)布該讀取請(qǐng)求的 CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽111a則不被修改。 如上所述,在偵聽標(biāo)簽修改樣式l中,僅僅確定被請(qǐng)求讀取的地址是 否已在偵聽標(biāo)簽lllb中被注冊(cè)成S (共享的),這可以用簡(jiǎn)單的電路來 實(shí)現(xiàn)。另外,在偵聽標(biāo)簽修改樣式1中,與發(fā)布讀取請(qǐng)求的CPU 120a相 對(duì)應(yīng)的偵聽標(biāo)簽llla在被請(qǐng)求讀取的地址已在偵聽標(biāo)簽lllb中被注冊(cè)成 S (共享的)的情況下不被修改,這可以減少在修改偵聽標(biāo)簽時(shí)的驅(qū)逐次 數(shù)并提高系統(tǒng)性能。在偵聽標(biāo)簽修改樣式2中,當(dāng)一個(gè)CPU 120a發(fā)布讀取請(qǐng)求時(shí),如果 被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的CPU 120a連接到同一 CPU總線130a的CPU 120b的偵聽標(biāo)簽lllb中被注冊(cè)成S (共享的), 則從偵聽標(biāo)簽lllb中刪除被請(qǐng)求讀取的地址,以使其狀態(tài)改變到I (無效 的),并且被請(qǐng)求讀取的地址被重新注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU 120a 相對(duì)應(yīng)的偵聽標(biāo)簽llla中。例如,在圖2中,如果CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求,則由于 塊號(hào)5000已在與連接到同一 CPU總線130a的CPU 120b相對(duì)應(yīng)的偵聽標(biāo) 簽lllb中被注冊(cè)成S (共享的),因此該注冊(cè)被刪除,并且塊號(hào)5000被 注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽111a中。此時(shí),如 果在偵聽標(biāo)簽llla中不存在空白條目,則使用驅(qū)逐功能。圖5是在第一情況下根據(jù)偵聽標(biāo)簽修改樣式2的偵聽標(biāo)簽修改過程流 程圖。當(dāng)CPU 120a發(fā)布讀取請(qǐng)求時(shí)(步驟S20),對(duì)應(yīng)于與發(fā)布讀取諾 求的CPU 120a連接到同一 CPU總線130a的另一 CPU 120b的偵聽標(biāo)簽 lllb被搜索(步驟S21)。作為搜索結(jié)果,如果被請(qǐng)求讀取的地址尚未被 注冊(cè)成S (共享的)(步驟S22),被請(qǐng)求讀取的地址則被注冊(cè)在與發(fā)布 讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽111a中(步驟S24)。作為搜索結(jié)果,如果被請(qǐng)求讀取的地址已被注冊(cè)成S (共享的)(歩 驟S22),注冊(cè)在偵聽標(biāo)簽lllb中的地址則被改變成I (無效的)(歩驟 S23),并且被請(qǐng)求讀取的地址被注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì) 應(yīng)的偵聽標(biāo)簽llla中(步驟S24)。如上所述,在偵聽標(biāo)簽修改樣式2中,被請(qǐng)求讀取的地址被注冊(cè)在與 發(fā)布第一讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽llla中,并且相應(yīng)的已
被注冊(cè)在偵聽標(biāo)簽lllb中的地址被改變成I (無效的)。從而,偵聽標(biāo)簽 111持續(xù)保留CPU 120中的緩存標(biāo)簽122中的已從S (共享的)改變到I (無效的)的條目的可能性可得以降低,這可以提高系統(tǒng)性能。在偵聽標(biāo)簽修改樣式3中,當(dāng)一個(gè)CPU 120a發(fā)布讀取請(qǐng)求時(shí),如果 被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的CPU 120a連接到同 CPU總線130a的CPU 120b的偵聽標(biāo)簽111b中被注冊(cè)成S (共享的), 則基于與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽llla中的空白條[:l 的數(shù)目(或已用條目的數(shù)目)和偵聽標(biāo)簽111b中的空白條目的數(shù)目(或 已用條目的數(shù)目),確定其中注冊(cè)有被請(qǐng)求讀取的地址的偵聽標(biāo)簽1。 例如,具有較大空白條目數(shù)目的偵聽標(biāo)簽111被確定為被請(qǐng)求讀取的地址 被注冊(cè)到的偵聽標(biāo)簽lll。例如,在圖2中,如果CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求,則由于 塊號(hào)5000已在與連接到同一 CPU總線130a的CPU 120b相對(duì)應(yīng)的偵聽標(biāo) 簽lllb中被注冊(cè)成S (共享的),因此與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì) 應(yīng)的偵聽標(biāo)簽llla和偵聽標(biāo)簽111b中的空白條目的數(shù)目被比較。這里,注冊(cè)有該地址的偵聽標(biāo)簽111是基于如下條件來確定的"如 果偵聽標(biāo)簽llla中的空白條目的數(shù)目大于或等于偵聽標(biāo)簽111b中的空白 條目的數(shù)目(其中在塊號(hào)5000處的條目被視為空白條目),則被請(qǐng)求讀 取的地址被注冊(cè)在偵聽標(biāo)簽111a中,而如果偵聽標(biāo)簽llla中的空白條目 的數(shù)目小于偵聽標(biāo)簽111b中的空白條目的數(shù)目,則被請(qǐng)求讀取的地址被 注冊(cè)在偵聽標(biāo)簽lllb中"。如圖2所示,偵聽標(biāo)簽111a中空白條目的數(shù)目為0,而偵聽標(biāo)簽 111b中空白條目的數(shù)目為3 (包括塊號(hào)5000處的條目)。由于偵聽標(biāo)簽 111b中空白條目的數(shù)目較大,因此偵聽標(biāo)簽111a不被修改。換言之,被 請(qǐng)求讀取的地址不被注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo) 簽llla中。如果偵聽標(biāo)簽llla中空白條目的數(shù)目較大,則偵聽標(biāo)簽111b中塊號(hào) 5000處的注冊(cè)被降到I (無效的)(dropped to I),并且塊號(hào)5000被注冊(cè) 在與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽llla中。
圖6是在第一情況下根據(jù)偵聽標(biāo)簽修改樣式3的偵聽標(biāo)簽修改過程流程圖。當(dāng)CPU 120a發(fā)布讀取請(qǐng)求時(shí)(步驟S30),對(duì)應(yīng)于與發(fā)布讀取請(qǐng) 求的CPU 120a連接到同一 CPU總線130a的另一 CPU 120b的偵聽標(biāo)簽 lllb被搜索(步驟S31)。作為搜索結(jié)果,如果被請(qǐng)求讀取的地址尚未被 注冊(cè)成S (共享的)(步驟S32),被請(qǐng)求讀取的地址則被注冊(cè)在與發(fā)布 讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽llla中(步驟S36)。作為搜索結(jié)果,如果被請(qǐng)求讀取的地址已被注冊(cè)成S (共享的)(歩 驟S32),則將與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽llla中空 白條目的數(shù)目與偵聽標(biāo)簽lllb中空白條目的數(shù)目相比較(步驟S33)。 這里,應(yīng)該注意,被請(qǐng)求讀取的地址已被注冊(cè)到的偵聽標(biāo)簽lllb中條目 被視為空白條目。如果偵聽標(biāo)簽llla中空白條目的數(shù)目大于或等于偵聽標(biāo)簽l]lb中空 白條目的數(shù)目(步驟S34),則注冊(cè)在偵聽標(biāo)簽lllb中的地址被改變到I (無效的)(步驟S35)。被請(qǐng)求讀取的地址被注冊(cè)在與發(fā)布讀取請(qǐng)求的 CPU120a相對(duì)應(yīng)的偵聽標(biāo)簽llla中(步驟S36)。如果偵聽標(biāo)簽llla中空白條目的數(shù)目小于偵聽標(biāo)簽lllb中空白條目 的數(shù)目(步驟S34),則不修改與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵 聽標(biāo)簽llla。這樣一來,由于偵聽標(biāo)簽修改樣式3以很好的平衡執(zhí)行偵聽標(biāo)簽修改 樣式1和2,因此可以提高系統(tǒng)性能,同時(shí)保持減少無用驅(qū)逐的發(fā)生和降 低偵聽標(biāo)簽持續(xù)保留CPU中的緩存標(biāo)簽中已從S (共享的)改變到I (無 效的)的條目的可能性之間的平衡。圖7A、 7B、 8A和8B示出在第一情況下的偵聽標(biāo)簽修改的示例。在 下文中,通過使用圖7A、 7B、 8A和8B,將描述在被請(qǐng)求讀取的地址已 在對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的CPU 120a連接到同一 CPU總線130a的CPU 120b的偵聽標(biāo)簽lllb中被注冊(cè)成S (共享的)的情況下偵聽標(biāo)簽修改的 示例。圖7A、 7B、 8A和8B示出修改圖l所示配置中的緩存標(biāo)簽122a、 緩存標(biāo)簽122b、偵聽標(biāo)簽llla和偵聽標(biāo)簽lllb中的同一索引的示例。圖7A示出傳統(tǒng)偵聽標(biāo)簽修改的示例。在圖7A中,階段0示出某一
時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。各個(gè)條目的所有狀態(tài)都為S (共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a處于 路滿狀態(tài),因此CPU 120a將塊號(hào)1000降到I (無效的),換言之,將塊 號(hào)1000的狀態(tài)改變到I (無效的),并發(fā)布讀取塊號(hào)5000的請(qǐng)求。各個(gè) 標(biāo)簽變?yōu)殡A段1的狀態(tài)。由于偵聽標(biāo)簽llla處于路滿狀態(tài),因此系統(tǒng)控制器110對(duì)塊號(hào)2000 執(zhí)行驅(qū)逐并注冊(cè)塊號(hào)5000。由于系統(tǒng)控制器IIO執(zhí)行了驅(qū)逐,因此CPU 120a將緩存標(biāo)簽122a中的塊號(hào)2000降到I (無效的),換言之,將塊號(hào) 2000的狀態(tài)改變到I (無效的)。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖7B示出在第一情況下根據(jù)偵聽標(biāo)簽修改樣式1的偵聽標(biāo)簽修改的 示例。在圖7B中,階段0示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。各個(gè)條目的所 有狀態(tài)都為S(共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a處于 路滿狀態(tài),因此CPU 120a將塊號(hào)1000降到I (無效的),并發(fā)布讀取塊 號(hào)5000的請(qǐng)求。各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)。由于塊號(hào)5000已被注冊(cè)在對(duì)應(yīng)于與CPU 120a連接到同一 CPU總線 130a的CPU 120b中的緩存標(biāo)簽122b的偵聽標(biāo)簽Ulb中,因此系統(tǒng)控制 器IIO不修改偵聽標(biāo)簽llla。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)(相對(duì)階段l的狀態(tài)沒有改變)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖8A示出在第一情況下根據(jù)偵聽標(biāo)簽修改樣式2的偵聽標(biāo)簽修改的 示例。在圖8A中,階段0示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。各個(gè)條目的所 有狀態(tài)都為S(共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a處于 路滿狀態(tài),因此CPU 120a將塊號(hào)1000降到I (無效的),并發(fā)布讀取塊 號(hào)5000的請(qǐng)求。各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)。
由于塊號(hào)5000已被注冊(cè)在對(duì)應(yīng)于與CPU 120a連接到同一 CPU總線 130a的CPU 120b中的緩存標(biāo)簽122b的偵聽標(biāo)簽111b中,因此系統(tǒng)控制 器IIO刪除偵聽標(biāo)簽111b中的塊號(hào)5000。由于偵聽標(biāo)簽llla處于路滿狀 態(tài),因此系統(tǒng)控制器110對(duì)塊號(hào)2000執(zhí)行驅(qū)逐并注冊(cè)塊號(hào)5000。山于系 統(tǒng)控制器110執(zhí)行了驅(qū)逐,因此CPU 120a將緩存標(biāo)簽122a中的塊兮 2000降到I (無效的)。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖8B示出在第一情況下根據(jù)偵聽標(biāo)簽修改樣式3的偵聽標(biāo)簽修改的 示例。在圖8B中,階段0示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。各個(gè)條目的所 有狀態(tài)都為S(共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a處于 路滿狀態(tài),因此CPU 120a對(duì)塊號(hào)1000進(jìn)行I降落(I-drop),并發(fā)布讀 取塊號(hào)5000的請(qǐng)求。各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)。系統(tǒng)控制器110將分別對(duì)應(yīng)于連接到同一 CPU總線130a的CPU 120a 和CPU 120b的偵聽標(biāo)簽llla和偵聽標(biāo)簽111b中的已用條目的數(shù)目相比 較。這里,由于偵聽標(biāo)簽111b具有較少已用條目數(shù)目(除塊號(hào)5000 外),因此偵聽標(biāo)簽llla和偵聽標(biāo)簽lllb不被特別修改。各個(gè)標(biāo)簽變?yōu)?階段2的狀態(tài)(相對(duì)階段1的狀態(tài)沒有改變)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖9A、 9B、 IOA和IOB示出在第二情況下偵聽標(biāo)簽修改的示例。在 下文中,通過使用圖9A、 9B、 IOA和IOB,將描述在被請(qǐng)求讀取的地址 已在對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的CPU 120a連接到同一 CPU總線130a的 CPU 120b的偵聽標(biāo)簽111b中被注冊(cè)成S (共享的)的情況下偵聽標(biāo)簽修 改的示例。圖9A、 9B、 IOA和IOB示出修改圖1所示配置中的緩存標(biāo)簽 122a、緩存標(biāo)簽122b、偵聽標(biāo)簽llla和偵聽標(biāo)簽lllb中的同一索引的示圖9A示出在第二情況下傳統(tǒng)偵聽標(biāo)簽修改的示例。在圖9A中,階
段0示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。各個(gè)條目的所有狀態(tài)都為S (共享 的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a未處 于路滿狀態(tài),因此CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求而不執(zhí)行降落。各 個(gè)標(biāo)簽變?yōu)殡A段l的狀態(tài)(相對(duì)階段O的狀態(tài)沒有改變)。系統(tǒng)控制器IIO將塊號(hào)5000注冊(cè)在偵聽標(biāo)簽llla中的空白條目中。 各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖9B示出在第二情況下根據(jù)偵聽標(biāo)簽修改樣式1的偵聽標(biāo)簽修改的 示例。在圖9B中,階段0示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。各個(gè)條目的所 有狀態(tài)都為S(共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a未處 于路滿狀態(tài),因此CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求而不執(zhí)行降落。各 個(gè)標(biāo)簽變?yōu)殡A段l的狀態(tài)(相對(duì)階段O的狀態(tài)沒有改變)。由于塊號(hào)5000己被注冊(cè)在對(duì)應(yīng)于與CPU 120a連接到同一 CPU總線 130a的CPU 120b中的緩存標(biāo)簽122b的偵聽標(biāo)簽111b中,因此系統(tǒng)控制 器IIO不修改偵聽標(biāo)簽llla。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)(相對(duì)階段1的 狀態(tài)沒有改變)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖IOA示出在第二情況下根據(jù)偵聽標(biāo)簽修改樣式2的偵聽標(biāo)簽修改的 示例。在圖10A中,階段O示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。各個(gè)條目的所 有狀態(tài)都為S(共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a未處 于路滿狀態(tài),因此CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求而不執(zhí)行降落,就 是說不改變狀態(tài)。各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)(相對(duì)階段0的狀態(tài)沒有改 變)。由于塊號(hào)5000已被注冊(cè)在對(duì)應(yīng)于與CPU 120a連接到同一 CPU總線
130a的CPU 120b中的緩存標(biāo)簽122b的偵聽標(biāo)簽111b中,因此系統(tǒng)控制 器110刪除偵聽標(biāo)簽11 lb中的塊號(hào)5000。系統(tǒng)控制器110將塊號(hào)5000注 冊(cè)在偵聽標(biāo)簽11 la中的空白條目中。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽22a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖IOB示出在第二情況下根據(jù)偵聽標(biāo)簽修改樣式3的偵聽標(biāo)簽修改的 示例。在圖10B中,階段O示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。各個(gè)條目的所 有狀態(tài)都為S (共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a未處 于路滿狀態(tài),因此CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求而不執(zhí)行降落。各 個(gè)標(biāo)簽變?yōu)殡A段l的狀態(tài)(相對(duì)階段O的狀態(tài)沒有改變)。系統(tǒng)控制器110將分別對(duì)應(yīng)于連接到同一 CPU總線130a的CPU 120a 和CPU 120b的偵聽標(biāo)簽llla和偵聽標(biāo)簽111b中的已用條目的數(shù)目相比 較。這里,由于兩者已用條目的數(shù)目(除塊號(hào)5000夕卜)是相同的,因此 系統(tǒng)控制器IIO刪除注冊(cè)在偵聽標(biāo)簽111b中的塊號(hào)5000。系統(tǒng)控制器 110將塊號(hào)5000注冊(cè)在偵聽標(biāo)簽llla中的空白條目中。各個(gè)標(biāo)簽變?yōu)殡A 段2的狀態(tài)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。在上文中,已經(jīng)描述了在被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布讀取請(qǐng) 求的CPU 120a連接到同一 CPU總線130a的另一 CPU 120b的偵聽標(biāo)簽 lllb中被注冊(cè)成S (共享的)的情況下偵聽標(biāo)簽修改的示例。接下來,將 描述在被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的CPU 120a連接到 同一 CPU總線130a的CPU 120b的偵聽標(biāo)簽111b中被注冊(cè)成E (獨(dú)占 的)的情況下偵聽標(biāo)簽修改的示例。如果被請(qǐng)求讀取的地址己被注冊(cè)成K (獨(dú)占的),則E (獨(dú)占的)被改變?yōu)镾 (共享的),并且執(zhí)行上述偵聽 標(biāo)簽修改。圖11是在第二情況下根據(jù)偵聽標(biāo)簽修改樣式1的偵聽標(biāo)簽修改過程 流程圖。在圖11中,考慮到被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布讀取請(qǐng)
求的CPU 120a連接到同一 CPU總線130a的另一 CPU 120b的偵聽標(biāo)簽 lllb中被注冊(cè)成E (獨(dú)占的)這一情況,根據(jù)上述偵聽標(biāo)簽修改樣式1的 偵聽標(biāo)簽修改被執(zhí)行。CPU 120a發(fā)布讀取請(qǐng)求(步驟S40)。對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的 CPU 120a連接到同一 CPU總線130a的另一 CPU 120b的偵聽標(biāo)簽lHb 被搜索(步驟S41)。作為搜索結(jié)果,如果被請(qǐng)求讀取的地址尚未被注冊(cè) 成E (獨(dú)占的)(步驟S42),被請(qǐng)求讀取的地址則被注冊(cè)在與發(fā)布讀取 請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽111a中(歩驟S43)。作為搜索的結(jié)果,如果被請(qǐng)求讀取的地址已被注冊(cè)成E (獨(dú)占的) (步驟S42),被請(qǐng)求讀取的地址在偵聽標(biāo)簽lllb中的狀態(tài)則被從E (獨(dú) 占的)改變到S (共享的)(步驟S44)。與發(fā)布讀取請(qǐng)求的CPU 120a 相對(duì)應(yīng)的偵聽標(biāo)簽llla不被修改。圖12是在第二情況下根據(jù)偵聽標(biāo)簽修改樣式2的偵聽標(biāo)簽修改過程 流程圖。在圖12中,考慮到被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布讀取請(qǐng) 求的CPU 120a連接到同一 CPU總線130a的另一 CPU 120b的偵聽標(biāo)簽 lllb中被注冊(cè)成E (獨(dú)占的)這一情況,根據(jù)上述偵聽標(biāo)簽修改樣式2的 偵聽標(biāo)簽修改被執(zhí)行。CPU 120a發(fā)布讀取請(qǐng)求(步驟S50)。對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的 CPU 120a連接到同一 CPU總線130a的另一 CPU 120b的偵聽標(biāo)簽111b 被搜索(步驟S51)。作為搜索結(jié)果,如果被請(qǐng)求讀取的地址尚未被注冊(cè) 成E (獨(dú)占的)(步驟S52),被請(qǐng)求讀取的地址則被注冊(cè)在與發(fā)布讀取 請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽111a中(步驟S54)。作為搜索的結(jié)果,如果被請(qǐng)求讀取的地址已被注冊(cè)成E (獨(dú)占的) (步驟S52),注冊(cè)在偵聽標(biāo)簽111b中的地址則被降到I (無效的)(歩 驟S53),并且被請(qǐng)求讀取的地址被注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU 120a 相對(duì)應(yīng)的偵聽標(biāo)簽llla中(步驟S54)。圖13是在第二情況下根據(jù)偵聽標(biāo)簽修改樣式3的偵聽標(biāo)簽修改過程 流程圖。在圖13中,考慮到被請(qǐng)求讀取的地址已在對(duì)應(yīng)于與發(fā)布讀取請(qǐng) 求的CPU 120a連接到同一 CPU總線130a的另一 CPU 120b的偵聽標(biāo)簽lllb中被注冊(cè)成E (獨(dú)占的)這一情況,根據(jù)上述偵聽標(biāo)簽修改樣式3的 偵聽標(biāo)簽修改被執(zhí)行。CPU 120a發(fā)布讀取請(qǐng)求(步驟S60)。對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的 CPU 120a連接到同一 CPU總線130a的另一 CPU 120b的偵聽標(biāo)簽11 lb 被搜索(步驟S61)。作為搜索結(jié)果,如果被請(qǐng)求讀取的地址尚未被注冊(cè) 成E (獨(dú)占的)(步驟S62),被請(qǐng)求讀取的地址則被注冊(cè)在與發(fā)布讀取 請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽111a中(步驟S66)。作為搜索的結(jié)果,如果被請(qǐng)求讀取的地址已被注冊(cè)成E (獨(dú)占的) (步驟S62),則將與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽]lla 中的空白條目的數(shù)目與偵聽標(biāo)簽111b中的空白條目的數(shù)目相比較(步驟 S63)。這里,應(yīng)該注意,被請(qǐng)求讀取的地址已在偵聽標(biāo)簽lllb中被注冊(cè) 到的條目被視為空白條目。如果偵聽標(biāo)簽llla中的空白條目的數(shù)目大于或等于偵聽標(biāo)簽111b中 空白條目的數(shù)目(步驟S64),偵聽標(biāo)簽lllb中注冊(cè)的該地址則被降到I (無效的)(步驟S65)。被請(qǐng)求讀取的地址被注冊(cè)在與發(fā)布讀取請(qǐng)求的 CPU120a相對(duì)應(yīng)的偵聽標(biāo)簽llla中(步驟S66)。如果偵聽標(biāo)簽llla中的空白條目的數(shù)目小于偵聽標(biāo)簽111b中空白條 目的數(shù)目(步驟S64),則將被請(qǐng)求讀取的地址在偵聽標(biāo)簽111b中的狀 態(tài)被從E (獨(dú)占的)改變到S (共享的)(步驟S67)。與發(fā)布讀取請(qǐng)求 的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽llla不被修改。圖14A、 14B、 15A和15B示出第三情況下偵聽標(biāo)簽修改的示例。在 下文中,通過使用圖14A、 14B、 15A和15B,將描述在被請(qǐng)求讀取的地 址已在對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的CPU 120a連接到同一 CPU總線130a的 CPU 120b的偵聽標(biāo)簽111b中被注冊(cè)成E (獨(dú)占的)的情況下偵聽標(biāo)簽修 改的示例。圖14A、 14B、 15A和15B示出修改圖1所示配置中的緩存標(biāo) 簽122a、緩存標(biāo)簽122b、偵聽標(biāo)簽llla和偵聽標(biāo)簽111b中的同一索引 的示例。圖14A示出在第三情況下傳統(tǒng)偵聽標(biāo)簽修改的示例。在圖14A中, 階段O示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。緩存標(biāo)簽122b和偵聽標(biāo)簽111b中
塊號(hào)5000的狀態(tài)為E (獨(dú)占的),而其他條目的狀態(tài)為S (共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a處于 路滿狀態(tài),因此CPU 120a將塊號(hào)1000降到I (無效的),就是說,將塊 號(hào)1000的狀態(tài)改變到I (無效的),然后發(fā)布讀取塊號(hào)5000的請(qǐng)求。此 時(shí),同一 CPU總線130a的CPU 120b將塊號(hào)5000在緩存標(biāo)簽122b中的 狀態(tài)從E (獨(dú)占的)改變到S (共享的)。各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)。由于偵聽標(biāo)簽llla處于路滿狀態(tài),因此系統(tǒng)控制器110對(duì)塊號(hào)2000 執(zhí)行驅(qū)逐并注冊(cè)塊號(hào)5000。此時(shí),塊號(hào)5000在偵聽標(biāo)簽lllb中的狀態(tài)被 從E (獨(dú)占的)改變到S (共享的)。由于系統(tǒng)控制器IIO執(zhí)行了驅(qū)逐, 因此CPU 120a將緩存標(biāo)簽122a中的塊號(hào)2000降到I (無效的),就是 說,將塊號(hào)2000的狀態(tài)改變到I (無效的)。各個(gè)標(biāo)簽變?yōu)殡A段2的狀 態(tài)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖14B示出在第三情況下根據(jù)偵聽標(biāo)簽修改樣式1的偵聽標(biāo)簽修改的 示例。在圖14B中,階段O示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。塊號(hào)5000在 緩存標(biāo)簽122b和偵聽標(biāo)簽lllb中的狀態(tài)為E (獨(dú)占的),而其他條目的 狀態(tài)為S (共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a處于 路滿狀態(tài),因此CPU 120a對(duì)塊號(hào)1000進(jìn)行I降落,并發(fā)布讀取塊號(hào)5000 的請(qǐng)求。此時(shí),同一 CPU總線130a的CPU 120b將塊號(hào)5000在緩存標(biāo)簽 122b中的狀態(tài)從E (獨(dú)占的)改變到S (共享的)。各個(gè)標(biāo)簽變?yōu)殡A段1 的狀態(tài)。由于塊號(hào)5000己在對(duì)應(yīng)于與CPU 120a連接到同一 CPU總線130a的 CPU 120b中的緩存標(biāo)簽122b的偵聽標(biāo)簽lllb中被注冊(cè)成E (獨(dú)占 的),因此系統(tǒng)控制器110將塊號(hào)5000在偵聽標(biāo)簽lllb中的狀態(tài)從E (獨(dú)占的)降到S (共享的)。系統(tǒng)控制器IIO不修改偵聽標(biāo)簽llla。各 個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖15A示出在第三情況下根據(jù)偵聽標(biāo)簽修改樣式2的偵聽標(biāo)簽修改的 示例。在圖15A中,階段O示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。塊號(hào)5000在 緩存標(biāo)簽122b和偵聽標(biāo)簽lllb中的狀態(tài)為E (獨(dú)占的),而其他條目的 狀態(tài)為S (共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a處于 路滿狀態(tài),因此CPU 120a將塊號(hào)1000降到I (無效的),就是說,改變 塊號(hào)1000的狀態(tài)到I (無效的),并發(fā)布讀取塊號(hào)5000的請(qǐng)求。此時(shí), 同一 CPU總線130a的CPU 120b將塊號(hào)5000在緩存標(biāo)簽122b中的狀態(tài) 從E (獨(dú)占的)改變到S (共享的)。各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)。由于塊號(hào)5000已被注冊(cè)在對(duì)應(yīng)于與CPU 120a連接到同一 CPU總線 130a的CPU 120b中的緩存標(biāo)簽122b的偵聽標(biāo)簽111b中,因此系統(tǒng)控制 器UO刪除偵聽標(biāo)簽111b中的塊號(hào)5000。由于偵聽標(biāo)簽llla處于路滿狀 態(tài),因此系統(tǒng)控制器110對(duì)塊號(hào)2000執(zhí)行驅(qū)逐并注冊(cè)塊號(hào)5000。由于系 統(tǒng)控制器110執(zhí)行了驅(qū)逐,因此CPU 120a將緩存標(biāo)簽122a中的塊號(hào) 2000降到I (無效的),就是說,將塊號(hào)2000的狀態(tài)改變到I (無效 的)。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖15B示出在第三情況下根據(jù)偵聽標(biāo)簽修改樣式3的偵聽標(biāo)簽修改的 示例。在圖15B中,階段0示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。塊號(hào)5000在 緩存標(biāo)簽122b和偵聽標(biāo)簽lllb中的狀態(tài)為E (獨(dú)占的),而其他條目的 狀態(tài)為S (共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a處于 路滿狀態(tài),因此CPU 120a將塊號(hào)IOOO降到I (無效的),就是說,改變 塊號(hào)1000的狀態(tài)到I (無效的),并發(fā)布讀取塊號(hào)5000的請(qǐng)求。此時(shí), 同一 CPU總線130a的CPU 120b將塊號(hào)5000在緩存標(biāo)簽122b中的狀態(tài) 從E (獨(dú)占的)改變到S (共享的)。各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)。系統(tǒng)控制器110將分別對(duì)應(yīng)于連接到同一 CPU總線130a的CPU 120a
和CPU 120b的偵聽標(biāo)簽llla和偵聽標(biāo)簽111b中的已用條目的數(shù)目相比 較。這里,由于偵聽標(biāo)簽111b具有較少己用條目數(shù)目(除塊號(hào)5000 外),因此偵聽標(biāo)簽llla不被特別修改。塊號(hào)5000在偵聽標(biāo)簽111b中 的狀態(tài)被從E (獨(dú)占的)改變到S (共享的)。各個(gè)標(biāo)簽變?yōu)殡A段2的狀 態(tài)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖16A、 16B、 17A和17B示出在第四情況下偵聽標(biāo)簽修改的示例。 在下文中,通過使用圖16A、 16B、 17A和17B,將描述在被請(qǐng)求讀取的 地址已在對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的CPU 120a連接到同一 CPU總線130a 的CPU 120b的偵聽標(biāo)簽111b中被注冊(cè)成E (獨(dú)占的)的情況下偵聽標(biāo)簽 修改的示例。圖16A、 16B、 17A和17B示出修改圖1所示配置中的緩存 標(biāo)簽122a、緩存標(biāo)簽122b、偵聽標(biāo)簽llla和偵聽標(biāo)簽111b中的同--索 引的示例。圖16A示出在第四情況下傳統(tǒng)偵聽標(biāo)簽修改的示例。在圖16A中, 階段O示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。塊號(hào)5000在緩存標(biāo)簽122b和偵聽 標(biāo)簽lllb中的狀態(tài)為E (獨(dú)占的),而其他條目的狀態(tài)為S (共享的)。這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a未處 于路滿狀態(tài),因此CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求而不執(zhí)行降落,就 是說,不改變狀態(tài)。此時(shí),同一 CPU總線130a的CPU 120b將塊號(hào)5000 在緩存標(biāo)簽122b中的狀態(tài)從E (獨(dú)占的)改變到S (共享的)。各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)。系統(tǒng)控制器IIO將塊號(hào)5000注冊(cè)在偵聽標(biāo)簽llla中的空白條目中。 此時(shí),塊號(hào)5000在偵聽標(biāo)簽lllb中的狀態(tài)被從E (獨(dú)占的)改變到S (共享的)。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。圖16B示出在第四情況下根據(jù)偵聽標(biāo)簽修改樣式1的偵聽標(biāo)簽修改的 示例。在圖16B中,階段O示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。塊號(hào)5000在
緩存標(biāo)簽122b和偵聽標(biāo)簽lllb中的狀態(tài)為E (獨(dú)占的),而其他條目的 狀態(tài)為S (共享的)。
這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a未處 于路滿狀態(tài),因此CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求而不執(zhí)行降落,就 是說,不改變狀態(tài)。此時(shí),同一 CPU總線130a的CPU 120b將塊號(hào)5000 在緩存標(biāo)簽122b中的狀態(tài)從E (獨(dú)占的)改變到S (共享的)。各個(gè)標(biāo)簽 變?yōu)殡A段l的狀態(tài)。
由于塊號(hào)5000已在對(duì)應(yīng)于與CPU 120a連接到同一 CPU總線130a的 CPU 120b中的緩存標(biāo)簽122b的偵聽標(biāo)簽11 lb中被注冊(cè)成E (獨(dú)占 的),因此系統(tǒng)控制器110將塊號(hào)5000在偵聽標(biāo)簽111b中的狀態(tài)從E (獨(dú)占的)改變到S (共享的)。系統(tǒng)控制器IIO不修改偵聽標(biāo)簽llla。 各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。
響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。
圖17A示出在四情況下根據(jù)偵聽標(biāo)簽修改樣式2的偵聽標(biāo)簽修改的示 例。在圖17A中,階段O示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。塊號(hào)5000在緩 存標(biāo)簽122b和偵聽標(biāo)簽lllb中的狀態(tài)為E (獨(dú)占的),而其他條目的狀 態(tài)為S (共享的)。
這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽22a未處 于路滿狀態(tài),因此CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求而不執(zhí)行降落,就 是說,不改變狀態(tài)。此時(shí),同一 CPU總線130a的CPU 120b將塊號(hào)5000 在緩存標(biāo)簽122b中的狀態(tài)從E (獨(dú)占的)改變到S (共享的)。各個(gè)標(biāo)簽
變?yōu)殡A段l的狀態(tài)。
由于塊號(hào)5000已被注冊(cè)在對(duì)應(yīng)于與CPU 120a連接到同一 CPU總線 130a的CPU 120b中的緩存標(biāo)簽122b的偵聽標(biāo)簽111b中,因此系統(tǒng)控制 器IIO刪除偵聽標(biāo)簽lllb中的塊號(hào)5000。系統(tǒng)控制器IIO將塊號(hào)5000注 冊(cè)在偵聽標(biāo)簽llla中的空白條目中。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。
響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。
圖17B示出在第四情況下根據(jù)偵聽標(biāo)簽修改樣式3的偵聽標(biāo)簽修改的
示例。在圖17B中,階段O示出某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。塊號(hào)5000在 緩存標(biāo)簽122b和偵聽標(biāo)簽lllb中的狀態(tài)為E (獨(dú)占的),而其他條目的 狀態(tài)為S (共享的)。
這里,假設(shè)CPU 120a希望讀取塊號(hào)5000。由于緩存標(biāo)簽122a未處 于路滿狀態(tài),因此CPU 120a發(fā)布讀取塊號(hào)5000的請(qǐng)求而不執(zhí)行降落,就 是說,不改變狀態(tài)。此時(shí),同一 CPU總線B0a的CPU 120b將塊號(hào)5000 在緩存標(biāo)簽122b中的狀態(tài)從E (獨(dú)占的)改變到S (共享的)。各個(gè)標(biāo)簽 變?yōu)殡A段1的狀態(tài)。
系統(tǒng)控制器110將分別對(duì)應(yīng)于連接到同一 CPU總線130a的CPU 120a 和CPU 120b的偵聽標(biāo)簽llla和偵聽標(biāo)簽lllb中的已用條目的數(shù)目相比 較。這里,由于兩者已用條目的數(shù)目(除塊號(hào)5000夕卜)是相同的,因此 系統(tǒng)控制器110刪除注冊(cè)在偵聽標(biāo)簽lllb中的塊號(hào)5000。系統(tǒng)控制器 110將塊號(hào)5000注冊(cè)在偵聽標(biāo)簽llla中的空白條目中。各個(gè)標(biāo)簽變?yōu)殡A 段2的狀態(tài)。
響應(yīng)于讀取結(jié)果的回復(fù),CPU 120a將塊號(hào)5000注冊(cè)在緩存標(biāo)簽122a 中。各個(gè)標(biāo)簽變?yōu)殡A段3的狀態(tài)。
上述各種偵聽標(biāo)簽修改樣式可以利用模式信號(hào)來改變。
圖18是在可以改變偵聽標(biāo)簽修改模式的情況下的偵聽標(biāo)簽修改過程 流程圖。這里,模式A、 B、 C和D分別指的是傳統(tǒng)的偵聽標(biāo)簽修改,偵 聽標(biāo)簽修改樣式1、偵聽標(biāo)簽修改樣式2和偵聽標(biāo)簽修改樣式3。
CPU 120a發(fā)布讀取請(qǐng)求(步驟S70)。如果偵聽標(biāo)簽修改模式為A (歩驟S71),被請(qǐng)求讀取的地址則被注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽llla中(步驟S80)。
如果偵聽標(biāo)簽修改模式不為A,則對(duì)應(yīng)于與發(fā)布讀取請(qǐng)求的CPU 120a連接到同一 CPU總線130a的另一CPU 120b的偵聽標(biāo)簽lllb被搜索 (步驟S72)。作為搜索結(jié)果,如果被請(qǐng)求讀取的地址尚未在偵聽標(biāo)簽 lllb中被注冊(cè)成S (共享的)或E (獨(dú)占的)(步驟S73),被請(qǐng)求讀取 的地址則被注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵聽標(biāo)簽111a屮
(步驟S80)。
如果被請(qǐng)求讀取的地址已在偵聽標(biāo)簽lllb中被注冊(cè)成S (共享的) 或E (獨(dú)占的)(步驟S73),則檢查偵聽標(biāo)簽修改模式是B、 C還是I) (步驟S74)。
如果偵聽標(biāo)簽修改模式為B,則檢查被請(qǐng)求讀取的地址在偵聽標(biāo)簽 lllb中的狀態(tài)是S (共享的)還是E (獨(dú)占的)(步驟S77)。如果地址 狀態(tài)為E (獨(dú)占的),則被請(qǐng)求讀取的地址在偵聽標(biāo)簽lllb中的狀態(tài)被 從E (獨(dú)占的)改變到S (共享的)(步驟S78)。如果地址狀態(tài)為S (共享的),偵聽標(biāo)簽lll則不被修改。
如果偵聽標(biāo)簽修改模式為C,則被請(qǐng)求讀取的地址在偵聽標(biāo)簽lllb 中的狀態(tài)被從S (共享的)或E (獨(dú)占的)改變到I (無效的)(步驟 S79),并且被請(qǐng)求讀取的地址被注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU120a相對(duì) 應(yīng)的偵聽標(biāo)簽llla中(步驟S80)。
如果偵聽標(biāo)簽修改模式為D,則將與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì) 應(yīng)的偵聽標(biāo)簽11 la中的空白條目的數(shù)目與偵聽標(biāo)簽11 lb中空白條目的數(shù) 目相比較(步驟S75)。這里,應(yīng)該注意,被請(qǐng)求讀取的地址在偵聽標(biāo)簽 11 lb中被注冊(cè)到的條目被視為空白條目。
如果偵聽標(biāo)簽lllb中空白條目的數(shù)目大于或等于偵聽標(biāo)簽11b中空 白條目的數(shù)目(步驟S76),則將被請(qǐng)求讀取的地址在偵聽標(biāo)簽lllb屮 的狀態(tài)從S (共享的)或E (獨(dú)占的)改變到I (無效的)(步驟S79), 并且被請(qǐng)求讀取的地址被注冊(cè)在與發(fā)布讀取請(qǐng)求的CPU 120a相對(duì)應(yīng)的偵 聽標(biāo)簽llla中(步驟S80)。
如果偵聽標(biāo)簽Ulb中空白條目的數(shù)目小于偵聽標(biāo)簽lllb中空白條冃 的數(shù)目(步驟S76),則檢查被請(qǐng)求讀取的地址在偵聽標(biāo)簽lllb中的狀 態(tài)是s (共享的)還是E (獨(dú)占的)(步驟S77)。如果地址狀態(tài)為l': (獨(dú)占的),被請(qǐng)求讀取的地址在偵聽標(biāo)簽lllb中的狀態(tài)則被從E (獨(dú) 占的)改變到S (共享的)(步驟S78)。如果地址狀態(tài)為S (共享 的),偵聽標(biāo)簽lll則不被修改。
由于偵聽標(biāo)簽修改過程可以利用模式信號(hào)來改變,因此偵聽標(biāo)簽修改
過程的邏輯可被自由地改變,這使得真實(shí)機(jī)器能夠研習(xí)取決于偵聽標(biāo)簽修 改方法的不同的性能變化。另外,根據(jù)結(jié)果,具有適當(dāng)模式設(shè)置的操作變 為可能。
接下來,將描述緩存替換請(qǐng)求應(yīng)對(duì)部分119的緩存替換請(qǐng)求應(yīng)對(duì)過
程。如圖2所示,在本實(shí)施例中,分別對(duì)應(yīng)于連接到同一 CPU總線30a 的CPU 120a和CPU 120b的偵聽標(biāo)簽llla和偵聽標(biāo)簽lllb被連接到同一 CPU總線130a的CPU 120a和CPU 120b共享。但是,在此狀態(tài)下,當(dāng)發(fā) 布緩存替換請(qǐng)求時(shí),可能出現(xiàn)問題,這是因?yàn)槔绠?dāng)注冊(cè)成S (共享的) 的條目?jī)H僅由于緩存替換請(qǐng)求被降到I (無效的)時(shí),如果連接到同一 CPU總線130a的另一 CPU的緩存標(biāo)簽122保留著注冊(cè)成S (共享的)的 相同地址,則在偵聽標(biāo)簽111中將不保留關(guān)于該地址的S (共享的)注冊(cè) 信息。在下文中,將描述應(yīng)對(duì)由于發(fā)布緩存替換請(qǐng)求而可能導(dǎo)致的問題的 過程。
圖19A和19B示出使緩存替換請(qǐng)求無效的過程的示例。在下文中, 通過使用圖19A和19B,將描述在CPU 120a已經(jīng)發(fā)布緩存替換請(qǐng)求的情 況下的過程示例。圖19A和19B示出在圖1所示配置中的緩存標(biāo)簽 122a、緩存標(biāo)簽122b、偵聽標(biāo)簽llla和偵聽標(biāo)簽lllb中的同一索引的示
圖19A示出在不執(zhí)行使緩存替換請(qǐng)求無效的過程的情況下的示例。 在圖19A中,階段0示出在某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。這里,CPU 120a 發(fā)布針對(duì)塊號(hào)1000的緩存替換請(qǐng)求,并從緩存標(biāo)簽122a中刪除塊號(hào) 1000。各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)。
系統(tǒng)控制器IIO接收來自CPU 120a的緩存替換請(qǐng)求,并從偵聽標(biāo)簽 111a中刪除塊號(hào)1000。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。
但是,在階段2的狀態(tài)中,塊號(hào)1000已被注冊(cè)在與發(fā)布緩存替換請(qǐng) 求的CPU 120a連接到同一 CPU總線130a的CPU 120b中的緩存標(biāo)簽 122b中,然而,塊號(hào)1000尚未被注冊(cè)在系統(tǒng)控制器110中的偵聽標(biāo)簽 llla和偵聽標(biāo)簽lllb中的任何一個(gè)中,這導(dǎo)致一致性錯(cuò)誤。
圖19B示出當(dāng)在本實(shí)施例中執(zhí)行使緩存替換請(qǐng)求無效的過程的情況下
的示例。在圖19B中,階段0示出在某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。這里,
CPU 120a發(fā)布針對(duì)塊號(hào)1000的緩存替換請(qǐng)求,并從緩存標(biāo)簽122a中刪 除塊號(hào)1000。此時(shí),系統(tǒng)控制器IIO的請(qǐng)求處理部分114中的緩存替換請(qǐng) 求應(yīng)對(duì)部分119在CPU總線130a內(nèi)偵聽,并從緩存標(biāo)簽122b中檢測(cè)到 CPU 120b已將塊號(hào)1000注冊(cè)成S (共享的)。各個(gè)標(biāo)簽變?yōu)殡A段1的狀 態(tài)。
根據(jù)偵聽到CPU 120b已將塊號(hào)1000注冊(cè)成S (共享的)的結(jié)果,系 統(tǒng)控制器110使來自CPU 120a的緩存替換請(qǐng)求無效。換言之,偵聽標(biāo)簽 111a中的塊號(hào)1000不被刪除。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。
這樣一來,當(dāng)CPU 120a已經(jīng)發(fā)布緩存替換請(qǐng)求時(shí),發(fā)布該緩存替換 請(qǐng)求的CPU 120a所連接的CPU總線130a的內(nèi)部被偵聽,并且如果在 CPU總線130a中存在其中已注冊(cè)了被請(qǐng)求緩存替換的地址的緩存標(biāo)簽 122b,系統(tǒng)控制器IIO則執(zhí)行使緩存替換請(qǐng)求無效的過程。從而,可以防 止一致性錯(cuò)誤。
圖20A和20B示出擴(kuò)展緩存替換請(qǐng)求的過程的示例。在下文中,通 過使用圖20A和20B,將描述在CPU 120a已經(jīng)發(fā)布緩存替換請(qǐng)求的情況 下的過程示例。圖20A和20B示出在圖1所示配置中的緩存標(biāo)簽122a、 緩存標(biāo)簽122b、偵聽標(biāo)簽llla和偵聽標(biāo)簽lllb中的同一索引的示例。
圖20A示出在不執(zhí)行擴(kuò)展緩存替換請(qǐng)求的過程的情況下的示例。在 圖20A中,階段0示出在某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。這里,CPU 120a發(fā) 布針對(duì)塊號(hào)1000的緩存替換請(qǐng)求,并從緩存標(biāo)簽122a中刪除塊號(hào)1000。 各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)。
系統(tǒng)控制器IIO接收來自CPU 120a的緩存替換請(qǐng)求。但是,由亍塊 號(hào)1000尚未被注冊(cè)在偵聽標(biāo)簽111a中,因此系統(tǒng)控制器IIO不特別執(zhí)行 任何過程。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)(相對(duì)階段l的狀態(tài)沒有改變)。
但是,在階段2的狀態(tài)中,雖然塊號(hào)1000尚未被注冊(cè)在連接到同一 CPU總線130a的CPU 120a和CPU 120b中的任何一個(gè)中,但是塊號(hào)1000 保持被注冊(cè)在偵聽標(biāo)簽111b中,這就留下了垃圾信息。
圖20B示出當(dāng)在本實(shí)施例中執(zhí)行擴(kuò)展緩存替換請(qǐng)求的過程的情況下的
示例。在圖20B中,階段O示出在某一時(shí)刻各個(gè)標(biāo)簽的狀態(tài)。這里,CPU
120a發(fā)布針對(duì)塊號(hào)IOOO的緩存替換請(qǐng)求,并從緩存標(biāo)簽122a中刪除塊" 1000。此時(shí),系統(tǒng)控制器IIO的請(qǐng)求處理部分114中的緩存替換請(qǐng)求應(yīng)對(duì) 部分119在CPU總線130a內(nèi)偵聽,并檢測(cè)到塊號(hào)1000在CPU 120b的緩 存標(biāo)簽122b中也尚未被注冊(cè)。各個(gè)標(biāo)簽變?yōu)殡A段1的狀態(tài)。
根據(jù)塊號(hào)1000也尚未被注冊(cè)在CPU 120b中這一偵聽結(jié)果,系統(tǒng)控制 器110將緩存替換請(qǐng)求從CPU 120a擴(kuò)展到整個(gè)CPU總線130a,并執(zhí)行該 過程,這里假設(shè)緩存替換請(qǐng)求已經(jīng)從連接到同一 CPU總線130a的所有 CPU 120a和CPU 120b被發(fā)布。從而,偵聽標(biāo)簽lllb中的塊號(hào)1000將被 刪除。各個(gè)標(biāo)簽變?yōu)殡A段2的狀態(tài)。
這樣一來,當(dāng)CPU 120a已經(jīng)發(fā)布緩存替換請(qǐng)求時(shí),發(fā)布了該緩存替 換請(qǐng)求的CPU 120a被連接到的CPU總線130a的內(nèi)部被偵聽,如果被請(qǐng) 求緩存替換的地址尚未也被注冊(cè)在CPU總線130a中的另一 CPU 120b 中,則從CPU 120a發(fā)布的緩存替換請(qǐng)求被擴(kuò)展到從連接到CPU總線 130a的所有CPU 120發(fā)布的緩存替換請(qǐng)求。從而,可以防止在偵聽標(biāo)簽 111中留下垃圾。
圖21是根據(jù)本實(shí)施例的緩存替換請(qǐng)求應(yīng)對(duì)過程流程圖。在圖21中, 確定被請(qǐng)求緩存替換的地址是否已被注冊(cè)在發(fā)布該緩存替換請(qǐng)求的CPU 120a所連接的CPU總線130a中的另一 CPU 120b中,并且執(zhí)行使緩存替 換請(qǐng)求無效的過程或者擴(kuò)展緩存替換請(qǐng)求的過程。
CPU 120a發(fā)布緩存替換請(qǐng)求(步驟S90)。發(fā)布該緩存替換請(qǐng)求的 CPU 120a連接到的CPU總線130a的內(nèi)部被偵聽(歩驟S91)。
作為偵聽結(jié)果,如果被請(qǐng)求緩存替換的地址已被注冊(cè)在CPU總線 130a中的另一 CPU 120b中(步驟S92),則來自CPU 120a的緩存替換 請(qǐng)求被拋棄(步驟S93)。
作為偵聽結(jié)果,如果被請(qǐng)求緩存替換的地址尚未被注冊(cè)在CPU總線 130a中的另一 CPU 120b中(步驟S92),則將來自CPU 120a的緩存替 換請(qǐng)求擴(kuò)展到從連接到CPU總線HOa的所有CPU 120發(fā)布的緩存替換請(qǐng) 求(步驟S94),并執(zhí)行緩存替換請(qǐng)求(步驟S95)。
雖然圖3所示緩存替換請(qǐng)求應(yīng)對(duì)部分119執(zhí)行上述過程,但是如果偵 聽標(biāo)簽修改部分U8在包括傳統(tǒng)修改樣式在內(nèi)的偵聽標(biāo)簽修改模式之間切
換,緩存替換請(qǐng)求應(yīng)對(duì)部分119則確定是否執(zhí)行緩存替換請(qǐng)求應(yīng)對(duì)過程。 在傳統(tǒng)修改樣式的情況下,緩存替換請(qǐng)求應(yīng)對(duì)部分119確定不執(zhí)行緩存替
換請(qǐng)求應(yīng)對(duì)過程。
圖22是在偵聽標(biāo)簽修改模式可被改變的情況下的緩存替換請(qǐng)求應(yīng)對(duì) 過程的流程圖。在傳統(tǒng)偵聽標(biāo)簽修改的情況下,不需要使緩存替換請(qǐng)求無 效的過程或擴(kuò)展緩存替換請(qǐng)求的過程。在圖22中,將描述在傳統(tǒng)的偵聽 標(biāo)簽修改和本實(shí)施例的偵聽標(biāo)簽修改可被切換的情況下的過程示例。這 里,傳統(tǒng)的偵聽標(biāo)簽修改是模式A,偵聽標(biāo)簽修改樣式1是模式B,偵聽 標(biāo)簽修改樣式2是模式C并且偵聽標(biāo)簽修改樣式3是模式D。
CPU 120a發(fā)布緩存替換請(qǐng)求(步驟S100)。如果偵聽標(biāo)簽修改模式 為A (步驟SIOI),則執(zhí)行緩存替換請(qǐng)求(步驟S106)。
如果偵聽標(biāo)簽修改模式不為A (步驟S101),則發(fā)布該緩存替換請(qǐng) 求的CPU120a連接到的CPU總線130a的內(nèi)部被偵聽(步驟S102)。
作為偵聽結(jié)果,如果被請(qǐng)求緩存替換的地址已被注冊(cè)在CPU總線 130a中的另一CPU 120b中(歩驟S103),則來自CPU 120a的緩存替換 請(qǐng)求被拋棄(步驟S104)。
作為偵聽結(jié)果,如果被請(qǐng)求緩存替換的地址尚未被注冊(cè)在CPU總線 130a中的另一CPU 120b中(步驟S103),則來自CPU 120a的緩存替換 請(qǐng)求被擴(kuò)展到從連接到CPU總線130a的所有CPU 120發(fā)布的緩存替換請(qǐng) 求(步驟S105),并且該緩存替換請(qǐng)求被執(zhí)行(步驟S106)。
在上文中,雖然已經(jīng)描述了本發(fā)明的實(shí)施例,但是本發(fā)明不局限于以 上描述。例如,雖然有兩個(gè)CPU 120連接到一個(gè)CPU總線BO的示例在 本實(shí)施例中被描述,但是本發(fā)明還可被類似地實(shí)施在有三個(gè)或更多個(gè) CPU連接到一個(gè)CPU總線的情況。
本申請(qǐng)要求2006年8月18日遞交的日本專利申請(qǐng)No. 2006-223231 的優(yōu)先權(quán),該申請(qǐng)的內(nèi)容通過引用被結(jié)合于此。
權(quán)利要求
1.一種在多處理器系統(tǒng)中用于管理包括緩存存儲(chǔ)器的多個(gè)CPU的系統(tǒng)控制器,該控制器包括針對(duì)每個(gè)所述CPU的偵聽標(biāo)簽,其具有關(guān)于每個(gè)CPU所保留的所述緩存存儲(chǔ)器的標(biāo)簽的拷貝信息;以及請(qǐng)求處理部分,其用于執(zhí)行針對(duì)來自所述CPU的請(qǐng)求的過程,其中,當(dāng)要求在緩存存儲(chǔ)器的標(biāo)簽中將地址注冊(cè)成共享狀態(tài)的請(qǐng)求已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),如果同一地址被注冊(cè)在連接到同一CPU總線的每個(gè)CPU的所述緩存存儲(chǔ)器的標(biāo)簽中,則所述請(qǐng)求處理部分執(zhí)行偵聽標(biāo)簽修改過程,以使得所述地址僅在與注冊(cè)有同一地址的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的任何一個(gè)中被注冊(cè)成共享狀態(tài)。
2. 如權(quán)利要求1所述的系統(tǒng)控制器,其中,當(dāng)處于共享狀態(tài)的讀取請(qǐng) 求己被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),如果被請(qǐng)求讀取的地址已 在對(duì)應(yīng)于與發(fā)布該讀取請(qǐng)求的CPU連接到同一 CPU總線的另一 CPU的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),則所述請(qǐng)求處理部分進(jìn)行控制以不將所述被請(qǐng)求讀取的地址注冊(cè)在與發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中。
3. 如權(quán)利要求1所述的系統(tǒng)控制器,其中,當(dāng)處于共享狀態(tài)的讀取諾 求已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),如果被請(qǐng)求讀取的地址已 在對(duì)應(yīng)于與發(fā)布該讀取請(qǐng)求的CPU連接到同一 CPU總線的另一 CPU的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),則所述請(qǐng)求處理部分進(jìn)行控制以將所述地址 在被請(qǐng)求讀取的地址已被注冊(cè)到的偵聽標(biāo)簽中的條目改變到無效狀態(tài),并將所述地址注冊(cè)在與發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中。
4. 如權(quán)利要求1所述的系統(tǒng)控制器,其中,當(dāng)處于共享狀態(tài)的讀取請(qǐng) 求已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),如果被請(qǐng)求讀取的地址已 在對(duì)應(yīng)于與發(fā)布該讀取請(qǐng)求的CPU連接到同一 CPU總線的另一 CPU的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),則所述請(qǐng)求處理部分將被請(qǐng)求讀取的地址已被注冊(cè)到的偵聽標(biāo)簽與對(duì)應(yīng)于發(fā)布該讀取請(qǐng)求的CPU的偵聽標(biāo)簽中的空白條目的數(shù)目或已用條1:1的 數(shù)目相比較,并根據(jù)比較結(jié)果,確定是進(jìn)行控制以不將所述地址注冊(cè)在與 發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中,還是進(jìn)行控制以將所述地址 在所述地址己被注冊(cè)到的偵聽標(biāo)簽中的條目改變到無效狀態(tài)并將所述地址 注冊(cè)在與發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中,并且基于該確定來 執(zhí)行偵聽標(biāo)簽修改過程。
5. 如權(quán)利要求1所述的系統(tǒng)控制器,其中,當(dāng)緩存替換請(qǐng)求已被從所 述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),所述請(qǐng)求處理部分偵聽與發(fā)布該緩存 替換請(qǐng)求的CPU連接到同一 CPU總線的另一 CPU的共享狀態(tài),并且作為 結(jié)果,如果被請(qǐng)求緩存替換的地址已在除發(fā)布該緩存替換請(qǐng)求的CPU之外 的CPU中被注冊(cè)成共享狀態(tài),則進(jìn)行控制以使發(fā)布的緩存替換請(qǐng)求無效。
6. 如權(quán)利要求1所述的系統(tǒng)控制器,其中,當(dāng)緩存替換請(qǐng)求己被從所 述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),所述請(qǐng)求處理部分偵聽與發(fā)布該緩存 替換請(qǐng)求的CPU連接到同一 CPU總線的另一 CPU的共享狀態(tài),并且作為結(jié)果,如果被請(qǐng)求緩存替換的地址尚未被注冊(cè)在除發(fā)布該緩存替換請(qǐng)求的CPU之外的CPU中,則進(jìn)行控制以將發(fā)布的緩存替換請(qǐng)求擴(kuò)展為來自與 發(fā)布該緩存替換請(qǐng)求的CPU連接到同一 CPU總線的所有CPU的緩存替換請(qǐng)求。
7. 如權(quán)利要求1所述的系統(tǒng)控制器,其中,當(dāng)要將注冊(cè)在所述緩存存儲(chǔ)器的標(biāo)簽中的一個(gè)地址的獨(dú)占狀態(tài)改變到共享狀態(tài)的請(qǐng)求已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),所述請(qǐng)求處理部分檢查同一地址是否已在 與連接到同一 CPU總線的另一 CPU相對(duì)應(yīng)的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),并且如果存在同一地址己在其中被注冊(cè)成共享狀態(tài)的偵聽標(biāo)簽,則執(zhí) 行偵聽標(biāo)簽修改過程,以使得所述地址僅在任何一個(gè)偵聽標(biāo)簽中被注冊(cè)成 共享狀態(tài)。
8. 如權(quán)利要求1所述的系統(tǒng)控制器,其中,當(dāng)處于共享狀態(tài)的讀取請(qǐng) 求已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),如果同一地址已被注冊(cè)在 連接到同一 CPU總線的每個(gè)CPU的所述緩存存儲(chǔ)器的標(biāo)簽中,所述請(qǐng)求處理部分則根據(jù)提供給所述請(qǐng)求處理部分的模式信號(hào)來選擇執(zhí)行以下偵聽標(biāo)簽修改過程中的至少一種進(jìn)行控制以不將所述被請(qǐng)求讀取的地址注冊(cè) 在與發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的偵聽標(biāo)簽修改過程;進(jìn) 行控制以將所述地址在被請(qǐng)求讀取的地址已被注冊(cè)到的偵聽標(biāo)簽中的條I I 改變到無效狀態(tài)并將所述地址注冊(cè)在與發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵 聽標(biāo)簽中的偵聽標(biāo)簽修改過程;以及將同一地址在所述被請(qǐng)求讀取的地址已被注冊(cè)到的偵聽標(biāo)簽和與發(fā)布所述讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽兩者中都注冊(cè)成共享狀態(tài)的偵聽標(biāo)簽修改過程。
9. 一種由在多處理器系統(tǒng)中用于管理包括緩存存儲(chǔ)器的多個(gè)CPU的系 統(tǒng)控制器執(zhí)行的偵聽標(biāo)簽修改方法,該系統(tǒng)控制器包括針對(duì)每個(gè)所述CPU 的具有關(guān)于每個(gè)CPU所保留的所述緩存存儲(chǔ)器的標(biāo)簽的拷貝信息的偵聽標(biāo)簽,該方法包括當(dāng)處于共享狀態(tài)的讀取請(qǐng)求已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布 時(shí),檢査與所述CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的拷貝信息,如果同一地址被注冊(cè)在連接到同一 CPU總線的每個(gè)CPU的所述緩存 存儲(chǔ)器的標(biāo)簽中,則執(zhí)行偵聽標(biāo)簽修改過程,以使得該地址僅在與同一地 址被注冊(cè)到的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的任何一個(gè)中被注冊(cè)成共享狀態(tài)。
10. 如權(quán)利要求9所述的偵聽標(biāo)簽修改方法,其中,當(dāng)處于共享狀態(tài) 的讀取請(qǐng)求已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),如果被請(qǐng)求讀取 的地址已在對(duì)應(yīng)于與發(fā)布該讀取請(qǐng)求的CPU連接到同一 CPU總線的另-CPU的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),則所述執(zhí)行偵聽標(biāo)簽修改過程的歩 驟進(jìn)行控制以不將所述被請(qǐng)求讀取的地址注冊(cè)在與發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中。
11. 如權(quán)利要求9所述的偵聽標(biāo)簽修改方法,其中,當(dāng)處于共享狀態(tài) 的讀取請(qǐng)求已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),如果被請(qǐng)求讀取 的地址已在對(duì)應(yīng)于與發(fā)布該讀取請(qǐng)求的CPU連接到同一 CPU總線的另-CPU的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),則所述執(zhí)行偵聽標(biāo)簽修改過程的歩驟進(jìn)行控制以將所述地址在被請(qǐng)求讀取的地址已被注冊(cè)到的偵聽標(biāo)簽中的條目改變到無效狀態(tài),并將所述地址注冊(cè)在與發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中。
12. 如權(quán)利要求9所述的偵聽標(biāo)簽修改方法,其中,當(dāng)處于共享狀態(tài) 的讀取請(qǐng)求已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),如果被請(qǐng)求讀取的地址己在對(duì)應(yīng)于與發(fā)布該讀取請(qǐng)求的CPU連接到同一 CPU總線的另--CPU的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),則所述執(zhí)行偵聽標(biāo)簽修改過程的步驟將被請(qǐng)求讀取的地址己被注冊(cè)到的偵聽標(biāo)簽與對(duì)應(yīng)于發(fā)布該讀取請(qǐng)求的CPU的偵聽標(biāo)簽中的空白條目的數(shù)目或已用條目的數(shù)目相比較,并根據(jù)比較結(jié)果,確定是進(jìn)行控制以不將所述地址注冊(cè)在與發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中,還是進(jìn)行控制以將所述地址在所述地址已被注冊(cè)到的偵聽標(biāo)簽中的條目改變到無效狀態(tài)并將所述地址注冊(cè)在與發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中,并且基于該確定來執(zhí)行偵聽標(biāo)簽修改過程。
13. 如權(quán)利要求9所述的偵聽標(biāo)簽修改方法,其中,當(dāng)緩存替換請(qǐng)求 已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),所述執(zhí)行偵聽標(biāo)簽修改過程 的步驟偵聽與發(fā)布該緩存替換請(qǐng)求的CPU連接到同一 CPU總線的另-CPU的共享狀態(tài),并且作為結(jié)果,如果被請(qǐng)求緩存替換的地址已在除發(fā)布 該緩存替換請(qǐng)求的CPU之外的CPU中被注冊(cè)成共享狀態(tài),則進(jìn)行控制以使發(fā)布的緩存替換請(qǐng)求無效。
14. 如權(quán)利要求9所述的偵聽標(biāo)簽修改方法,其中,當(dāng)緩存替換請(qǐng)求 已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),所述執(zhí)行偵聽標(biāo)簽修改過程 的步驟偵聽與發(fā)布該緩存替換請(qǐng)求的CPU連接到同一 CPU總線的另一 CPU的共享狀態(tài),并且作為結(jié)果,如果被請(qǐng)求緩存替換的地址尚未被注冊(cè) 在除發(fā)布該緩存替換請(qǐng)求的CPU之外的CPU中,則進(jìn)行控制以將發(fā)布的 緩存替換請(qǐng)求擴(kuò)展為來自與發(fā)布該緩存替換請(qǐng)求的CPU連接到同一 CPU 總線的所有CPU的緩存替換請(qǐng)求。
15. 如權(quán)利要求9所述的偵聽標(biāo)簽修改方法,其中,當(dāng)要將注冊(cè)在所述緩存存儲(chǔ)器的標(biāo)簽中的一個(gè)地址的獨(dú)占狀態(tài)改變到共享狀態(tài)的請(qǐng)求已被 從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),所述執(zhí)行偵聽標(biāo)簽修改過程的步 驟檢查同一地址是否已在與連接到同一 CPU總線的另一 CPU相對(duì)應(yīng)的偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài),并且如果存在同一地址已在其中被注冊(cè)成共 享狀態(tài)的偵聽標(biāo)簽,則執(zhí)行偵聽標(biāo)簽修改過程,以使得所述地址僅在任何 一個(gè)偵聽標(biāo)簽中被注冊(cè)成共享狀態(tài)。
16. 如權(quán)利要求9所述的偵聽標(biāo)簽修改方法,其中,當(dāng)處于共享狀態(tài) 的讀取請(qǐng)求已被從所述多個(gè)CPU中的一個(gè)CPU發(fā)布時(shí),如果同一地址巳 被注冊(cè)在連接到同一 CPU總線的每個(gè)CPU的所述緩存存儲(chǔ)器的標(biāo)簽中, 所述執(zhí)行偵聽標(biāo)簽修改過程的步驟則根據(jù)提供給所述請(qǐng)求處理部分的模式信號(hào)來選擇執(zhí)行以下偵聽標(biāo)簽修改過程中的至少一種進(jìn)行控制以不將所述被請(qǐng)求讀取的地址注冊(cè)在與發(fā)布該讀取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中 的偵聽標(biāo)簽修改過程;進(jìn)行控制以將所述地址在被請(qǐng)求讀取的地址己被注 冊(cè)到的偵聽標(biāo)簽中的條目改變到無效狀態(tài)并將所述地址注冊(cè)在與發(fā)布該讀 取請(qǐng)求的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的偵聽標(biāo)簽修改過程;以及將同一地址 在所述被請(qǐng)求讀取的地址已被注冊(cè)到的偵聽標(biāo)簽和與發(fā)布所述讀取請(qǐng)求的 CPU相對(duì)應(yīng)的偵聽標(biāo)簽兩者中都注冊(cè)成共享狀態(tài)的偵聽標(biāo)簽修改過程。
17. —種具有多個(gè)CPU和用于管理所述多個(gè)CPU的系統(tǒng)控制器的信息 處理裝置,其中每個(gè)所述CPU包括緩存存儲(chǔ)器,該系統(tǒng)控制器包括偵聽標(biāo)簽,其具有關(guān)于每個(gè)CPU所保留的所述緩存存儲(chǔ)器的標(biāo)簽的拷 貝信息,該偵聽標(biāo)簽是對(duì)應(yīng)于所述多個(gè)CPU中的每個(gè)CPU來提供的;以 及請(qǐng)求處理部分,其用于執(zhí)行針對(duì)來自所述CPU的請(qǐng)求的過程,其中,當(dāng)要求在緩存存儲(chǔ)器的標(biāo)簽中將地址注冊(cè)成共享狀態(tài)的請(qǐng)求已被從一個(gè) CPU發(fā)布時(shí),如果同一地址被注冊(cè)在連接到同一 CPU總線的每個(gè)CPU的所述緩存存儲(chǔ)器的標(biāo)簽中,則所述請(qǐng)求處理部分執(zhí)行偵聽標(biāo)簽修改過程,以使得所述地址僅在與連接到所述同一 CPU總線的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的任何一個(gè)中被注冊(cè)成共享狀態(tài)。
全文摘要
在多處理器系統(tǒng)中,一種系統(tǒng)控制器包括偵聽標(biāo)簽,所述偵聽標(biāo)簽是關(guān)于各個(gè)CPU保留的緩存標(biāo)簽的拷貝信息。如果同一地址在連接到同CPU總線的每個(gè)CPU的緩存標(biāo)簽中都被注冊(cè)成S(共享狀態(tài)),則該地址僅在與同一地址被注冊(cè)到的CPU相對(duì)應(yīng)的偵聽標(biāo)簽中的任何一個(gè)中被注冊(cè)成S(共享狀態(tài))。
文檔編號(hào)G06F12/08GK101127007SQ20071010702
公開日2008年2月20日 申請(qǐng)日期2007年5月17日 優(yōu)先權(quán)日2006年8月18日
發(fā)明者伊藤大介, 大脅威, 山本崇史, 植木俊和, 畑井田誠, 石塚孝治, 細(xì)川由佳 申請(qǐng)人:富士通株式會(huì)社