專利名稱::具有上級(jí)未定狀態(tài)的高速緩存相干協(xié)議的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種計(jì)算機(jī)系統(tǒng),具體地說(shuō)涉及一種確定是否需要將窺探(snoop)操作向上轉(zhuǎn)給更高級(jí)的高速緩存(cache)的高速緩存相干協(xié)議(cache-coherencyprotocol)。傳統(tǒng)的多處理器計(jì)算機(jī)系統(tǒng)10的基本結(jié)構(gòu)示于圖1。計(jì)算機(jī)系統(tǒng)10具有幾個(gè)處理單元,圖中示出了其中的兩個(gè)12a和12b,它們接至各種外圍裝置,包括輸入/輸出(I/O)裝置(諸如顯示監(jiān)視器,鍵盤,圖形指針(鼠標(biāo)器),永久性存儲(chǔ)裝置(硬盤)等),由執(zhí)行程序指令的處理單元使用的存儲(chǔ)裝置16(諸如隨機(jī)存取存儲(chǔ)器或RAM),以及主要作用是每當(dāng)計(jì)算機(jī)首次接通時(shí)從外圍裝置之一(通常是永久性存儲(chǔ)裝置)找出和裝入操作系統(tǒng)的固件18。處理單元12a和12b通過(guò)各種方式,包括通用互連線或總線20或者直接存儲(chǔ)器存取通道(未示出),與外圍裝置進(jìn)行通信。計(jì)算機(jī)系統(tǒng)10可以具有許多這里沒(méi)有示出的其他部件,諸如用來(lái)與例如調(diào)制解調(diào)器或打印機(jī)連接的串行和并行口。熟悉本
技術(shù)領(lǐng)域:
的人員可以理解,還有其他一些部件可以用來(lái)配合圖1各方框所示部分,例如,可以用顯示適配器來(lái)控制圖像顯示監(jiān)視器,可以用存儲(chǔ)器控制器配合對(duì)存儲(chǔ)器16的訪問(wèn)等。計(jì)算機(jī)也可以具有多于兩個(gè)的處理單元。在對(duì)稱多處理器(SMP)計(jì)算機(jī)中,所有的處理單元通常都是一樣的,也就是說(shuō),它們?nèi)渴褂霉餐闹噶詈蛥f(xié)議集或子集進(jìn)行操作,而且一般具有相同的體系結(jié)構(gòu)。圖1示出了一種典型的體系結(jié)構(gòu)。每個(gè)處理單元包括一個(gè)處理核心22,它具有多個(gè)寄存器和執(zhí)行單元,執(zhí)行程序指令,使計(jì)算機(jī)運(yùn)行。一種典型的處理單元是國(guó)際商用機(jī)器(IBM)公司的PowerPCTM處理器。處理單元還可以有一個(gè)或多個(gè)高速緩存,諸如指令高速緩存24和數(shù)據(jù)高速緩存26,用高速存儲(chǔ)裝置來(lái)實(shí)現(xiàn)。高速緩存通常用來(lái)暫時(shí)存儲(chǔ)處理器可能要反復(fù)存取的值,從而避免要用較長(zhǎng)的步驟從存儲(chǔ)器16裝入這些值,加快了處理速度。這些高速緩存在與處理核心集成在單個(gè)集成芯片28上時(shí)就稱為“片上”高速緩存。每個(gè)高速緩存都配有一個(gè)高速緩存控制器(未示出),用來(lái)管理處理核心與高速緩存之間的數(shù)據(jù)傳送。一個(gè)處理單元可以包括另外一些高速緩存,如高速緩存30,由于它支持片上(第一級(jí))高速緩存24和26,因此稱為第二級(jí)(L2)高速緩存。也就是說(shuō),高速緩存30在存儲(chǔ)器16和片上高速緩存之間起著中介作用,可以存儲(chǔ)比片上高速緩存大得多的信息量(指令和數(shù)據(jù)),但存取時(shí)間比較長(zhǎng)。例如,高速緩存30可以是一個(gè)存儲(chǔ)容量為256k或512k字節(jié)的芯片,而處理器可以是一個(gè)具有總共存儲(chǔ)量為64k字節(jié)的一些片上高速緩存的IBMPowerPCTM604系列的處理器。高速緩存30接到總線20上,而所有要從存儲(chǔ)器16裝入處理核心22的信息都必需通過(guò)高速緩存30。雖然圖1示出的只是一個(gè)二級(jí)高速緩存分級(jí)結(jié)構(gòu),但也可以提供有著由一系列串接的高速緩存構(gòu)成的許多級(jí)(L3,L4等)的多級(jí)高速緩存分級(jí)結(jié)構(gòu)。在一個(gè)SMP計(jì)算機(jī)中,重要的是提供一個(gè)相干存儲(chǔ)器系統(tǒng),也就是說(shuō),使對(duì)每個(gè)單個(gè)存儲(chǔ)器單元的寫入對(duì)于所有的處理器來(lái)說(shuō)是以某種次序串行化的。例如,假設(shè)存儲(chǔ)器中的一個(gè)單元由一個(gè)寫操作序列修改為具有值;1,2,3,4。在高速緩存相干系統(tǒng)中,所有的處理器將注意對(duì)一個(gè)給定單元以所示次序發(fā)生的這些寫入。然而,對(duì)于一個(gè)處理器來(lái)說(shuō)可能遺漏一次對(duì)這個(gè)存儲(chǔ)器單元的寫入。讀這個(gè)存儲(chǔ)器單元的給定處理器可能看到序列1,3,4,而遺漏了更新為值2。貫徹這些特性的系統(tǒng)就稱為是“相干”的。實(shí)際上,所有的相干性協(xié)議只是按一個(gè)高速緩存塊的規(guī)模操作的。也就是說(shuō),相干性協(xié)議是以一個(gè)高速緩存塊為基礎(chǔ)而不是分別為各單個(gè)存儲(chǔ)器單元對(duì)移動(dòng)數(shù)據(jù)和允許寫入數(shù)據(jù)進(jìn)行控制的。如熟悉本
技術(shù)領(lǐng)域:
的人員所知,有許多協(xié)議和技術(shù)可使得高速緩存相干。所有這些維護(hù)相干性的機(jī)制的核心要求是協(xié)議在任何時(shí)刻只允許一個(gè)處理器可以對(duì)某個(gè)存儲(chǔ)區(qū)域(高速緩存塊)進(jìn)行寫入。由于有這個(gè)要求,每當(dāng)一個(gè)處理器要對(duì)一個(gè)存儲(chǔ)區(qū)域進(jìn)行寫入時(shí),它必需首先將它希望寫這個(gè)區(qū)域的意向通知所有其他處理器,在得到所有其他處理器允許后再執(zhí)行寫入。關(guān)鍵問(wèn)題是,在寫入發(fā)生前系統(tǒng)中的所有其他處理器必需得到啟動(dòng)處理器發(fā)生的要寫入的通知。此外,如果一個(gè)信息塊存在于某個(gè)處理單元的L1高速緩存內(nèi),那么它也就存在于這個(gè)處理單元的L2和L3高速緩存內(nèi)。這個(gè)特性稱為包容(inclusion),為熟悉本
技術(shù)領(lǐng)域:
的人員所周知。下面將假設(shè)包容原則適用于與本發(fā)明有關(guān)的這些高速緩存。為了在系統(tǒng)中貫徹高速緩存相干,各處理器通過(guò)公共通用互連線(即總線20)通信。處理器通過(guò)互連線發(fā)送消息,表示它們希望讀或?qū)懘鎯?chǔ)區(qū)域。在一個(gè)操作置于互連線上時(shí),所有其他處理器就“窺探”(監(jiān)視)這個(gè)操作,判定它們的高速緩存的狀態(tài)是否能允許所請(qǐng)求的操作繼續(xù)進(jìn)行,而如果能,那么在什么條件下。有一些總線事務(wù)要求窺探和跟蹤操作,以執(zhí)行這些總線事務(wù)和維護(hù)存儲(chǔ)器相干性。窺探操作在接收到由一定總線信號(hào)有效而產(chǎn)生的一個(gè)合格窺探請(qǐng)求時(shí)啟動(dòng)。這種通信是必需的,因?yàn)樵诰哂懈咚倬彺娴南到y(tǒng)中存儲(chǔ)器的某個(gè)信息塊的最近有效拷貝可能已經(jīng)從系統(tǒng)存儲(chǔ)器16移動(dòng)到系統(tǒng)的一個(gè)或幾個(gè)高速緩存內(nèi),如上所述。如果一個(gè)處理器(如12a)希望訪問(wèn)一個(gè)不在它的高速緩存分級(jí)結(jié)構(gòu)內(nèi)的存儲(chǔ)區(qū)域,含有這個(gè)存儲(chǔ)區(qū)域的實(shí)際(當(dāng)前)值的這個(gè)信息塊的正確文本可能在系統(tǒng)存儲(chǔ)器16內(nèi)或者在另一個(gè)處理單元(如處理單元12b)的一個(gè)或幾個(gè)其他高速緩存內(nèi)。如果正確文本在系統(tǒng)的一個(gè)或幾個(gè)其他高速緩存內(nèi),就必需從系統(tǒng)的這些高速緩存而不是從系統(tǒng)存儲(chǔ)器得到這正確值。例如,考慮一個(gè)處理器(如12a)希望讀存儲(chǔ)器中的一個(gè)區(qū)域的情況。首先,它查詢它自己的L1高速緩存(24或26)。如果在L1高速緩存內(nèi)不存在這個(gè)信息塊,請(qǐng)求就轉(zhuǎn)至L2高速緩存(30)。如果在L2高速緩存內(nèi)也不存在這個(gè)信息塊,請(qǐng)求就轉(zhuǎn)至更低級(jí)的高速緩存,如果有更低級(jí)(如L3)的高速緩存的話。如果在更低級(jí)的高速緩存內(nèi)仍不存在這個(gè)信息塊,請(qǐng)求于是出現(xiàn)在通用互連線(20)上,要求得到服務(wù)。一旦有一個(gè)操作加到了通用互連線上,所有其他處理單元就會(huì)窺探到這個(gè)操作,從而確定是否在自己的高速緩存內(nèi)存有這個(gè)信息塊。如果某個(gè)處理單元在它的L1高速緩存內(nèi)有處理單元(12a)請(qǐng)求的數(shù)據(jù)信息塊,而且這個(gè)數(shù)據(jù)是修改了的,那么按包容原則,它的L2高速緩存和任何更低級(jí)的高速緩存也具有這個(gè)信息塊的拷貝(然而,這些拷貝可能是陳舊的,因?yàn)樵谔幚砥鞯母咚倬彺鎯?nèi)的拷貝是修改了的)。因此,在這個(gè)處理單元的最低級(jí)高速緩存(如L3)窺探到這個(gè)讀操作,它將確定在一個(gè)較高級(jí)的高速緩存內(nèi)存在所請(qǐng)求的信息塊,并且是修改了的。在出現(xiàn)這種情況時(shí),這個(gè)L3高速緩存就將一個(gè)消息加到通用互連線上,通知處理單元(12a),它必需稍后再重試它的操作,因?yàn)榇鎯?chǔ)區(qū)域的實(shí)際值是在存儲(chǔ)器分級(jí)結(jié)構(gòu)最高級(jí)的L1高速緩存內(nèi),必需加以檢索,使它可為啟動(dòng)處理單元(12a)的讀請(qǐng)求服務(wù)。一旦處理單元(12a)再試了它的請(qǐng)求,L3高速緩存就開(kāi)始一個(gè)過(guò)程,從L1高速緩存檢索出修改了的數(shù)據(jù),使這數(shù)據(jù)在L3高速緩存或主存儲(chǔ)器或者這兩者可用,這取決于實(shí)現(xiàn)的確切細(xì)節(jié),具體情況不屬于本發(fā)明范圍。為了從高級(jí)高速緩存檢索信息塊,L3高速緩存通過(guò)高速緩存之間的連接向高級(jí)高速緩存發(fā)送消息,請(qǐng)求檢索信息塊。這些消息順著處理單元的分級(jí)結(jié)構(gòu)向上傳播,直至L1高速緩存,使信息塊順著分級(jí)結(jié)構(gòu)向下移動(dòng)到最低級(jí)(L3高速緩存或主存儲(chǔ)器),以便能為來(lái)自啟動(dòng)處理單元的請(qǐng)求服務(wù)。最后,啟動(dòng)處理單元將讀請(qǐng)求再加到通用互連線上。此時(shí),已經(jīng)從一個(gè)處理單元的L1高速緩存檢索出修改了的數(shù)據(jù),因此來(lái)自啟動(dòng)處理器的讀請(qǐng)求將得到滿足。上述情況一般稱為“窺推(snooppush)”。一個(gè)讀請(qǐng)求在通用互連線上受到窺探后使處理單元將信息塊推到分級(jí)結(jié)構(gòu)的最低級(jí),以滿足啟動(dòng)處理單元提出的讀請(qǐng)求。需要注意的關(guān)鍵一點(diǎn)是,當(dāng)一個(gè)處理器要讀或?qū)懸粋€(gè)信息塊時(shí),它必需將它的意向通知系統(tǒng)中的其他處理單元,這樣才能維護(hù)高速緩存相干。因此,高速緩存相干協(xié)議與高速緩存分級(jí)結(jié)構(gòu)的每一級(jí)中的每個(gè)信息塊、指示信息塊當(dāng)前“狀態(tài)”的狀態(tài)指示符有關(guān)。狀態(tài)信息用來(lái)使得在相干協(xié)議中可以提供某些最佳化,降低通用互連線和高速緩存間連接線上的消息往來(lái)量。作為這種機(jī)制的一個(gè)例子,當(dāng)一個(gè)處理單元執(zhí)行一個(gè)讀操作時(shí),它接收到一個(gè)指示是否必需稍后再試這個(gè)讀操作的消息。如果不用再試讀操作,則這個(gè)消息通常還包含使處理單元可以確定是否任何其他處理單元也具有這個(gè)信息塊的仍有效的拷貝(這是通過(guò)使其他最低級(jí)高速緩存給出一個(gè)“共享”或“非共享”指示來(lái)實(shí)現(xiàn)的,以便不用再試任何讀它們的操作)。因此,一個(gè)處理單元能確定是否這系統(tǒng)中的任何其他處理器具有這個(gè)信息塊的拷貝。如果其他處理單元都沒(méi)有這個(gè)信息塊的有效拷貝,在讀的處理單元就將這個(gè)信息塊的狀態(tài)標(biāo)為“排斥(exclusive)”狀態(tài)。如果一個(gè)信息塊標(biāo)為排斥狀態(tài),就允許處理單元以后寫這個(gè)信息塊可以不用先通知系統(tǒng)中的其他處理單元,因?yàn)槠渌幚韱卧紱](méi)有這個(gè)信息塊的拷貝。因此,一般來(lái)說(shuō),一個(gè)處理器能夠讀或?qū)懸粋€(gè)區(qū)域而不先通過(guò)互連線通知它的意向。然而這只有在相干協(xié)議已經(jīng)保證其他處理器都不關(guān)注這個(gè)信息塊的情況下才能發(fā)生。上述高速緩存相干技術(shù)在一種稱為“MESI”的專用協(xié)議中實(shí)現(xiàn)。如圖2所示,在這種協(xié)議中,一個(gè)高速緩存塊可以處于“M”(已修改)、“E”(排斥)、“S”(共享)和“I”(無(wú)效)這四個(gè)狀態(tài)中的一個(gè)狀態(tài)。在MESI協(xié)議下,每個(gè)高速緩存項(xiàng)(例如為一個(gè)32字節(jié)的區(qū)段)都有兩個(gè)比特指示本項(xiàng)的狀態(tài)是四個(gè)可能狀態(tài)中的哪個(gè)狀態(tài)。根據(jù)項(xiàng)的初始狀態(tài)和提出請(qǐng)求的處理器要訪問(wèn)的類型,狀態(tài)可以改變,而該項(xiàng)的具體狀態(tài)置入提出請(qǐng)求的處理器的高速緩存。例如,在一個(gè)區(qū)段是處于已修改狀態(tài)時(shí),這個(gè)被尋址的區(qū)段只是在具有這個(gè)已修改的區(qū)段的高速緩存內(nèi)是有效的,而修改了的數(shù)據(jù)還沒(méi)有寫回到系統(tǒng)存儲(chǔ)器。在一個(gè)區(qū)段是排斥區(qū)段時(shí),它只存在于所提到的區(qū)段,并且與系統(tǒng)的存儲(chǔ)器一致。如果一個(gè)區(qū)段是共享的,那么它在這個(gè)高速緩存和在至少一個(gè)其他高速緩存內(nèi)是有效的,而且所有共享的區(qū)段與系統(tǒng)存儲(chǔ)器一致。最后,在一個(gè)區(qū)段是無(wú)效區(qū)段時(shí),它表示這個(gè)被尋址的區(qū)段沒(méi)有駐留在高速緩存內(nèi)。如圖2可見(jiàn),如果一個(gè)區(qū)段是處于已修改、共享和無(wú)效這幾個(gè)狀態(tài)中的任何一個(gè)狀態(tài)時(shí),它可以根據(jù)具體總線事務(wù)在這些狀態(tài)之間轉(zhuǎn)移。而一個(gè)處于排斥狀態(tài)的區(qū)段可以轉(zhuǎn)移到任何其它狀態(tài),一個(gè)區(qū)段只有先是無(wú)效狀態(tài)才能轉(zhuǎn)移為排斥狀態(tài)。隨著處理器速度的提高維護(hù)SMP性能的困難之一是系統(tǒng)存儲(chǔ)器總線上的負(fù)荷的增大。減輕這個(gè)影響的方法是增大總線寬度和每個(gè)事務(wù)的傳送數(shù)據(jù)量(即“傳送突發(fā)規(guī)模(transferburstsize)”)。不幸的是,這種傳送規(guī)模成為系統(tǒng)的高速緩存行規(guī)模和相干規(guī)模時(shí),這會(huì)影響軟件模型,如果它具有高速緩存控制指令的話,正如大多數(shù)縮減指令集運(yùn)算(RISC)處理器的情況那樣。為了防止影響軟件,在處理器和系統(tǒng)總線之間采用分段的高速緩存。分段的高速緩存的行規(guī)模等于存儲(chǔ)器和系統(tǒng)的傳送規(guī)模,而一個(gè)區(qū)段的規(guī)模等于處理器高速緩存行規(guī)模。這種結(jié)構(gòu)解決了軟件影響問(wèn)題,但又產(chǎn)生了一些有關(guān)試圖維護(hù)包容性相干性的低級(jí)高速緩存的設(shè)計(jì)問(wèn)題。首先,每當(dāng)高級(jí)高速緩存(L1)執(zhí)行一個(gè)稱為分配和置零指令(在PowerPCTM指令集中的“DCBZ”)的特定指令時(shí),它修改在它的高速緩存內(nèi)的數(shù)據(jù)(使它為零)而不用先從存儲(chǔ)器中讀取原來(lái)數(shù)據(jù)。這個(gè)操作通常在將一些存儲(chǔ)區(qū)域重新分配給一個(gè)新的過(guò)程時(shí)執(zhí)行。低級(jí)高速緩存也需要分配和將它的高速緩存行置零,但它具有較大的高速緩存行。實(shí)現(xiàn)這個(gè)操作的常用方法是從存儲(chǔ)器讀這個(gè)較大的行,然后將與處理器高速緩存行相應(yīng)的部分置零。然而,這種方法違背了操作需避免從終是要重新分配的存儲(chǔ)器讀數(shù)據(jù)的宗旨。此外,很可能處理器要在很短的時(shí)間內(nèi)要對(duì)歸于低級(jí)高速緩存內(nèi)這較大高速緩存行的其余部分的另一些高速緩存行進(jìn)行分配和置零(雖然低級(jí)高速緩存不能假設(shè)這是這種情況)。這樣,第一個(gè)問(wèn)題是始終監(jiān)視那些在高級(jí)(如L1)高速緩存內(nèi)有效而還沒(méi)有在低級(jí)(如L2或L3)高速緩存內(nèi)有效的區(qū)段。第二個(gè)問(wèn)題是怎樣有效地支持可高速緩存寫通操作(cachablewrite-throughoperation),這些操作通常由例如圖像裝置的驅(qū)動(dòng)器(諸如用于圖像顯示視器)使用。在這種情況下,一般要查詢大量數(shù)據(jù),但只有少量數(shù)據(jù)需要修改。由于要求所修改的數(shù)據(jù)對(duì)于處理器處的圖像裝置及時(shí)可見(jiàn),因此采用可高速緩存寫通協(xié)議。這種協(xié)議需要指配高速緩存的所有各級(jí)內(nèi)含有修改了的數(shù)據(jù)的行,以維護(hù)包容性,但實(shí)現(xiàn)比較復(fù)雜,因?yàn)閷懲ú僮鲿?huì)要求部分行寫入能力(一種昂貴和復(fù)雜的性能)來(lái)維持各高速緩存的一致,或者行在寫入時(shí)需要加以清理(flush)和失效處理,這會(huì)對(duì)性能產(chǎn)生不良影響,由于這行在下次受查詢時(shí)需要再次讀取。因此,為了避免不必要的總線操作,需要提供一種方法,指示一個(gè)高速緩存行在一個(gè)給定的高速緩存級(jí)的上級(jí)的指配和有效情況,雖然在這一級(jí)尚未規(guī)定。如果這種方法還能有效地處理對(duì)于這樣一個(gè)上級(jí)已修改的區(qū)段發(fā)生窺探命中(snoophit)的偶有情況,那就更為有利。因此,本發(fā)明的目的是提供一種在具有分段的低級(jí)高速緩存的多處理器計(jì)算機(jī)系統(tǒng)中維護(hù)高速緩存相干性的改進(jìn)方法。本發(fā)明的另一個(gè)目的是提供一種改善對(duì)高速緩存行的置零分配操作性能的方法。本發(fā)明的又一個(gè)目的是提供一種不需要具備復(fù)雜的部分寫入能力還能支持寫通高速緩存操作的方法。本發(fā)明所提出的維護(hù)多處理器計(jì)算機(jī)系統(tǒng)中的高速緩存相干性的方法達(dá)到了上述各個(gè)目的。這種方法主要包括下列步驟將一個(gè)第一值裝入一個(gè)處理單元的一個(gè)第一級(jí)高速緩存內(nèi)的一個(gè)高速緩存行塊和裝入這個(gè)處理單元的一個(gè)第二級(jí)高速緩存內(nèi)的一個(gè)高速緩存行的一個(gè)區(qū)段;修改在處理單元的第一級(jí)高速緩存內(nèi)的這個(gè)高速緩存行塊內(nèi)的值;以及在第二級(jí)高速緩存指示第二層高速緩存內(nèi)的高速緩存行的這個(gè)區(qū)段在上級(jí)已經(jīng)作了修改。作出這個(gè)指示不需要修改第二級(jí)高速緩存內(nèi)的高速緩存行的這個(gè)區(qū)段。可以根據(jù)將處理單元第一級(jí)高速緩存的高速緩存行塊置零的分配和置零(DCBZ)指令執(zhí)行這個(gè)程序。指示步驟包括指示第二級(jí)高速緩存內(nèi)的高速緩存行的多個(gè)區(qū)段中哪個(gè)區(qū)段與第一級(jí)高速緩存內(nèi)作了修改的高速緩存行塊相應(yīng)。在一個(gè)給定的高速緩存行只有兩個(gè)區(qū)段的實(shí)施例中,提供了三個(gè)新的狀態(tài)來(lái)指示哪個(gè)區(qū)段作了修改,或是否對(duì)第一級(jí)高速緩存的高速緩存行執(zhí)行了任何可高速緩存寫通操作。采用這種新的協(xié)議,可以正確監(jiān)視在較高級(jí)上有效的各個(gè)區(qū)段而不用執(zhí)行不必要的總線操作,更有效地支持各種可高速緩存寫通操作。本發(fā)明的以上和其他目的、特性和優(yōu)點(diǎn)在以下的詳細(xì)說(shuō)明中可以看出。在所附權(quán)利要求中列出了本發(fā)明的具有創(chuàng)造性的特點(diǎn)。然而,本發(fā)明本身以及本發(fā)明的優(yōu)選應(yīng)用方式、其他目的和優(yōu)點(diǎn)參照以下結(jié)合附圖對(duì)例示的實(shí)施例所作的詳細(xì)說(shuō)明可以得到充分的理解。在這些附圖中圖1為現(xiàn)有技術(shù)的多處理器計(jì)算機(jī)系統(tǒng)的方框圖;圖2為示出現(xiàn)有技術(shù)的高速緩存相干協(xié)議(MESI)的狀態(tài)圖;以及圖3為示出本發(fā)明的高速緩存相干協(xié)議的狀態(tài)圖。本發(fā)明是針對(duì)在諸如圖1所示那樣的多處理器系統(tǒng)中維護(hù)高速緩存相干性的方法的,但是本發(fā)明也可用于不一定是傳統(tǒng)的計(jì)算機(jī)系統(tǒng),也就是說(shuō)這些計(jì)算機(jī)系統(tǒng)也可以包括圖1中沒(méi)有示出的新的硬件部件,或者具有一種新穎的現(xiàn)有部件互連體系結(jié)構(gòu)。因此,熟悉本
技術(shù)領(lǐng)域:
的人員可以理解,本發(fā)明并不局限如圖所示的通用系統(tǒng)。圖3示出了本發(fā)明的高速緩存相干協(xié)議的一個(gè)實(shí)施例的狀態(tài)圖。這個(gè)協(xié)議與圖2所示的現(xiàn)有技術(shù)MESI協(xié)議類似,包括四個(gè)同樣的狀態(tài)(已修改,排斥,共享和無(wú)效),但還包括三個(gè)新的有關(guān)上級(jí)未定區(qū)段的“U”狀態(tài),這在下面還要加以說(shuō)明;這個(gè)新協(xié)議在這里稱為“U-MESI”協(xié)議。正如現(xiàn)有技術(shù)的協(xié)議的情況那樣,M-E-S-I四個(gè)狀態(tài)可以根據(jù)項(xiàng)的初始狀態(tài)和發(fā)請(qǐng)求的處理器可尋求的訪問(wèn)類型而改變。這四個(gè)狀態(tài)改變的方式除了下述情況以外基本上與現(xiàn)有技術(shù)的MESI協(xié)議相同。在所示這個(gè)實(shí)施例中,U-MESI協(xié)議適合于一個(gè)具有一些帶兩個(gè)區(qū)段的高速緩存行的高速緩存。在這個(gè)實(shí)施例中,由于有三種可能情況(1)兩個(gè)區(qū)段的第一個(gè)區(qū)段(“奇”區(qū)段)被修改;(2)兩個(gè)區(qū)段的第二個(gè)區(qū)段(“偶”區(qū)段)被修改;(3)沒(méi)有一個(gè)區(qū)段被修改(兩個(gè)區(qū)段由于可高速緩存寫通讀操作而都為共享),因此有三個(gè)“U”狀態(tài)。這三個(gè)狀態(tài)的第一個(gè)狀態(tài)在此標(biāo)為“UIM”,第二個(gè)狀態(tài)稱為“UMI”,而第三個(gè)狀態(tài)在此稱為“USS”。在U-MESI協(xié)議的這種實(shí)現(xiàn)方式中,每個(gè)高速緩存項(xiàng)就有三個(gè)比特,指示本項(xiàng)處于七個(gè)可能狀態(tài)(四個(gè)現(xiàn)有技術(shù)的狀態(tài),三個(gè)新的“U”狀態(tài))中的哪個(gè)狀態(tài)。如果一個(gè)高速緩存行有兩個(gè)以上區(qū)段,就會(huì)有更多的“U”狀態(tài),也就需要在高速緩存項(xiàng)中有更多的比特。表1示出了與最高級(jí)(L1)操作有關(guān)的低級(jí)高速緩存狀態(tài)轉(zhuǎn)移的情況。表1</tables>在表1的第一項(xiàng)中,在對(duì)L1高速緩存的高速緩存行內(nèi)的一個(gè)偶區(qū)段(第二區(qū)段)執(zhí)行DCBZ操作(一個(gè)寫入型操作)時(shí),相應(yīng)處于“I”(無(wú)效)狀態(tài)的低級(jí)高速緩存將轉(zhuǎn)移到“UIM”,也就是說(shuō)指示只有第二區(qū)段被修改。在表1的第二項(xiàng)中,在對(duì)L1高速緩存的高速緩存行內(nèi)的一個(gè)奇區(qū)段(第一區(qū)段)執(zhí)行DCBZ操作時(shí),相應(yīng)處于“I”(無(wú)效)狀態(tài)的低級(jí)高速緩存將轉(zhuǎn)移到“UMI”,也就是說(shuō)指示只有第一區(qū)段被修改。如果在一個(gè)行的奇區(qū)段先前已經(jīng)受過(guò)DCBZ操作因而相應(yīng)的低級(jí)高速緩存都處于“UMI”狀態(tài)的情況下再對(duì)同一行的偶區(qū)段執(zhí)行DCBZ(表1的第三項(xiàng)),或者如果在一個(gè)行的偶區(qū)段先前已經(jīng)受過(guò)DCBZ操作因而相應(yīng)的低級(jí)高速緩存都處于“UIM”狀態(tài)的情況下再對(duì)同一行的奇區(qū)段執(zhí)行DCBZ(表1的第四項(xiàng)),那么低級(jí)高速緩存將轉(zhuǎn)移到“M”(已修改)狀態(tài),指示整個(gè)行被修改。然而,如果先前對(duì)某行只執(zhí)行了一個(gè)DCBZ操作從而低級(jí)高速緩存使這行處于“UIM”或“UMI”狀態(tài),而其他(無(wú)效)行是一個(gè)“讀”或“修改性的讀”(readwithintenttomodifyRWITM)操作的對(duì)象,那么低級(jí)高速緩存的行進(jìn)至“I”(無(wú)效),而修改了的區(qū)段從高級(jí)高速緩存中清理掉。在表1的第六項(xiàng)中,如果對(duì)源塊發(fā)生L1“命中”,而低級(jí)高速緩存都處于“USS”狀態(tài),那么這些低級(jí)高速緩存將停留在這個(gè)狀態(tài),也就是說(shuō)它被處理成似乎是無(wú)效的,但不是緩存的。如果對(duì)塊執(zhí)行一個(gè)可高速緩存寫通讀(cachable/write-throughread)操作(表1的第七項(xiàng)),而低級(jí)高速緩存具有相應(yīng)的處于“I”(無(wú)效)狀態(tài)的塊,那么這些低級(jí)高速緩存將轉(zhuǎn)移到“USS”狀態(tài)。最后,如表1的第八項(xiàng)所示,所有其他不在前七項(xiàng)中可規(guī)定的L1操作將導(dǎo)致正常的,也就是按現(xiàn)有技術(shù)MESI協(xié)議,狀態(tài)轉(zhuǎn)移。表2示出了系統(tǒng)總線窺探事務(wù)將怎樣影響處于“U”狀態(tài)的高速緩存。表2</tables>在“U”狀態(tài),高速緩存知道它必需采取行動(dòng),但必需將窺探到的轉(zhuǎn)給上級(jí),以確定適當(dāng)?shù)男袆?dòng)。表2僅示出了那些“U”狀態(tài)之一發(fā)生窺探命中的偶見(jiàn)情況。在這些情況下,低級(jí)高速緩存將清理上級(jí)高速緩存的內(nèi)容而轉(zhuǎn)移到“I”(無(wú)效)狀態(tài),發(fā)生“重試”響應(yīng),但在對(duì)“USS”狀態(tài)發(fā)生讀窺探命中時(shí),相干性響應(yīng)是“共享”。采用上述U-MESI協(xié)議,就能解決前面提到的兩個(gè)問(wèn)題,即始終監(jiān)視在較高級(jí)有效的區(qū)段而不用執(zhí)行不必要的總線操作,以及有效地支持可高速緩存寫通操作。結(jié)果是增大了存儲(chǔ)器帶寬以及解放了地址帶寬和字節(jié)寫能力。雖然本發(fā)明參照具體實(shí)施例作了說(shuō)明,但這種說(shuō)明并不意味著構(gòu)成對(duì)本發(fā)明的限制。對(duì)于熟悉本
技術(shù)領(lǐng)域:
的人員來(lái)說(shuō),在參考了本發(fā)明的說(shuō)明后,顯然可以構(gòu)想出所揭示的實(shí)施例的種種變型和本發(fā)明的其他實(shí)施方式。因此,可以預(yù)料這類變型都可以根據(jù)本發(fā)明的精神得出,因而都屬于在所附權(quán)利要求中所規(guī)定的本發(fā)明的專利保護(hù)范圍之內(nèi)。權(quán)利要求1.一種在具有多個(gè)處理單元的多處理器計(jì)算機(jī)系統(tǒng)中維護(hù)高速緩存相干性的方法,每個(gè)處理單元具有一個(gè)包括至少第一級(jí)和第二級(jí)高速緩存的高速緩存分級(jí)結(jié)構(gòu),其中第一高速緩存級(jí)是第二高速緩存級(jí)的上級(jí),所述方法包括下列步驟將一個(gè)第一值裝入一個(gè)處理單元的一個(gè)第一級(jí)高速緩存內(nèi)的一個(gè)高速緩存行塊,和裝入這個(gè)處理單元的一個(gè)第二級(jí)高速緩存內(nèi)的一個(gè)高速緩存行的一個(gè)區(qū)段;修改在處理單元的第一級(jí)高速緩存內(nèi)的高速緩存行塊內(nèi)的值;以及在第二級(jí)高速緩存指示第二級(jí)高速緩存內(nèi)高速緩存行的區(qū)段在上級(jí)已經(jīng)被修改。2.如權(quán)利要求1所述的方法,其特征是所述修改步驟對(duì)處理單元的第一級(jí)高速緩存的高速緩存行塊置零。3.如權(quán)利要求1所述的方法,其特征是所述方法還包括將至少一個(gè)其他值裝入第一級(jí)高速緩存的與第二級(jí)高速緩存內(nèi)的高速緩存行的區(qū)段相應(yīng)的另一個(gè)高速緩存行塊。4.如權(quán)利要求1所述的方法,其特征是所述方法近包括響應(yīng)來(lái)自一個(gè)第二處理單元的有關(guān)請(qǐng)求訪問(wèn)一個(gè)與第一值相應(yīng)的存儲(chǔ)塊的查詢。5.如權(quán)利要求1所述的方法,其特征是執(zhí)行所述指示步驟并不修改第二級(jí)高速緩存內(nèi)高速緩存行的區(qū)段。6.如權(quán)利要求1所述的方法,其特征是所述指示步驟包括指示第二級(jí)高速緩存內(nèi)高速緩存行的多個(gè)區(qū)段中哪個(gè)區(qū)段與第一級(jí)高速緩存內(nèi)被修改的高速緩存行塊相應(yīng)。7.如權(quán)利要求1所述的方法,其特征是所述第二級(jí)高速緩存內(nèi)的一個(gè)高速緩存行只有兩個(gè)區(qū)段,而所述指示步驟包括指示兩個(gè)區(qū)段中的哪個(gè)區(qū)段與第一級(jí)高速緩存內(nèi)被修改的高速緩存行塊相應(yīng)。8.如權(quán)利要求1所述的方法,其特征是所述指示步驟包括指示對(duì)第一級(jí)高速緩存的高速緩存行執(zhí)行的任何可高速緩存寫通操作。9.如權(quán)利要求7所述的方法,其特征是所述方法還包括對(duì)希望訪問(wèn)上級(jí)已修改高速緩存行的請(qǐng)求作出響應(yīng)指示第一級(jí)高速緩存的高速緩存行無(wú)效的步驟。10.如權(quán)利要求6所述的方法,其特征是所述方法還包括對(duì)希望訪問(wèn)上級(jí)已修改高速緩存行的請(qǐng)求作出響應(yīng)指示第一級(jí)高速緩存的高速緩存行無(wú)效的步驟。11.如權(quán)利要求10所述的方法,其特征是所述指示步驟包括指示對(duì)第一級(jí)高速緩存的高速緩存行執(zhí)行的任何可高速緩存寫通操作。12.如一種計(jì)算機(jī)系統(tǒng),它包括一個(gè)存儲(chǔ)裝置;一個(gè)與所述存儲(chǔ)裝置連接的總線;以及多個(gè)與所述總線連接的處理單元,每個(gè)處理單元有至少一個(gè)第一級(jí)高速緩存和一個(gè)第二級(jí)高速緩存,每個(gè)所述高速緩存有多個(gè)高速緩存行,而所述第二級(jí)高速緩存內(nèi)的每個(gè)所述高速緩存行有多個(gè)區(qū)段,所述處理單元每個(gè)還具有在所述第二級(jí)高速緩存內(nèi)一個(gè)給定高速緩存行的一個(gè)給定區(qū)段在上級(jí)已經(jīng)被修改時(shí)提供指示的裝置。13.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其特征是每個(gè)所述處理單元還對(duì)來(lái)自另一個(gè)處理單元的有關(guān)請(qǐng)求訪問(wèn)一個(gè)與所述給定區(qū)段相應(yīng)的存儲(chǔ)塊的查詢作出響應(yīng),發(fā)送所述指示。14.權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其特征是每個(gè)所述處理單元提供所述指示但并不修改所述給定區(qū)段。15.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其特征是所述第一級(jí)高速緩存內(nèi)每個(gè)所述高速緩存行有多個(gè)區(qū)段,而所述第二級(jí)高速緩存內(nèi)每個(gè)所述高速緩存行有數(shù)目比所述第一級(jí)高速緩存內(nèi)每個(gè)所述高速緩存行所有的更多的區(qū)段。16.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其特征是所述提供指示的裝置包括指示所述第二級(jí)高速緩存內(nèi)所述高速緩存行的多個(gè)區(qū)段中哪個(gè)區(qū)段與所述第一級(jí)高速緩存內(nèi)一個(gè)已被修改的塊相應(yīng)的裝置。17.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其特征是所述提供指示的裝置還包括在對(duì)所述第一級(jí)高速緩存的一個(gè)高速緩存行執(zhí)行任何可高速緩存寫通操作時(shí)進(jìn)行指示的裝置。18.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其特征是所述提供指示的裝置還包括對(duì)希望訪問(wèn)所述第一級(jí)高速緩存的一個(gè)高速緩存行的請(qǐng)求作出響應(yīng)指示與所述第二級(jí)高速緩存的所述給空高速緩存行相應(yīng)的所述第一級(jí)高速緩存的所述高速緩存行無(wú)效的裝置。19.如權(quán)利要求18所述的計(jì)算機(jī)系統(tǒng),其特征是所述提供指示的裝置還包括在對(duì)所述第一級(jí)高速緩存的所述高速緩存行執(zhí)行任何可高速緩存寫通操作時(shí)進(jìn)行指示的裝置。全文摘要本發(fā)明所提出的在多處理器計(jì)算機(jī)系統(tǒng)中維護(hù)高速緩存相干性的方法提供了一些新的狀態(tài),用來(lái)指示上級(jí)高速緩存內(nèi)的區(qū)段已經(jīng)修改而不需執(zhí)行不必要的低級(jí)高速緩存的總線事務(wù)。這些新的“U”狀態(tài)可以指示高速緩存行內(nèi)哪個(gè)區(qū)段被修改,或是否高速緩存行受到了可高速緩存寫通操作。這種協(xié)議作為現(xiàn)有技術(shù)的“MESI”高速緩存相干協(xié)議的改進(jìn)來(lái)實(shí)施的。這種新的協(xié)議特別有利于處理分配和置零指令,使得修改高速緩存內(nèi)的數(shù)據(jù)(置零)不需要從存儲(chǔ)器讀取老數(shù)據(jù)。文檔編號(hào)G06F12/08GK1196530SQ9810568公開(kāi)日1998年10月21日申請(qǐng)日期1998年3月23日優(yōu)先權(quán)日1997年4月14日發(fā)明者雷維·庫(kù)瑪·艾米利,約翰·史蒂文·多德森,杰里·唐·劉易斯申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司