專利名稱:多處理器計算機(jī)系統(tǒng)中的讀取操作的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)系統(tǒng),更具體地說,涉及一種在對稱的多處理器計算機(jī)系統(tǒng)中執(zhí)行存儲器讀取操作的方法。
圖1中表示了常規(guī)的多處理器計算機(jī)系統(tǒng)10的基本結(jié)構(gòu)。計算機(jī)系統(tǒng)10具有與各種外部設(shè)備相連的幾個處理單元,圖中表示了其中的兩個處理單元12a、12b,外部設(shè)備包括輸入/輸出(I/O)設(shè)備14(例如顯示器,鍵盤,圖形指示器(鼠標(biāo)),及永久性存儲設(shè)備(硬盤)),由處理單元使用以執(zhí)行程序指令的存儲設(shè)備16(例如隨機(jī)存取存儲器,即RAM),及固件18,固件18的主要用途是每次打開計算機(jī)時,從外圍設(shè)備之一(通常是永久性存儲設(shè)備)找出并加載操作系統(tǒng)。處理單元12a及12b通過各種裝置(包括通用互連或總線20,或者直接存儲器訪問通道(圖中未表示))與外圍設(shè)備通信。計算機(jī)系統(tǒng)10可具有許多圖中未表示出的附加組件,例如用于連接,例如調(diào)制解調(diào)器或打印機(jī)的串行端口和并行端口。本領(lǐng)域的技術(shù)人員將認(rèn)識到還存在可和圖1的方框圖中所示的那些組件一起使用的其它組件;例如,顯示適配器可用于控制視頻顯示器,存儲控制器可用于訪問存儲器16等等。計算機(jī)還可具有兩個以上的處理單元。
在對稱性多處理器(SMP)計算機(jī)中,所有處理單元一般都是相同的;即,所有處理單元都使用同樣的指令集或者指令子集和協(xié)議進(jìn)行操作,并且通常具有相同的體系結(jié)構(gòu)。圖1中表示了一種典型的體系結(jié)構(gòu)。處理單元包括處理器核心22,處理器核心22具有多個寄存器及執(zhí)行單元,執(zhí)行單元執(zhí)行程序指令以操作計算機(jī)。一個例證的處理單元包括IBM公司銷售的PowerPCTM處理器。處理單元還可包括一個或多個高速緩存,例如指令高速緩存24及數(shù)據(jù)高速緩存26,它們由高速存儲器實現(xiàn)。高速緩存一般用于暫時存儲處理器可能會反復(fù)訪問的值,以便通過消除從存儲器16加載這些值的時間較長的步驟來加速處理。當(dāng)這些高速緩存與處理器核心一起整體封裝在單個集成芯片上時,被稱作“單板”。每個高速緩存與一個高速緩存控制器(圖中未表示出)相聯(lián)系,高速緩存控制器管理處理器核心和高速緩存之間數(shù)據(jù)及指令的傳送。
處理單元可包括附加的高速緩存,例如高速緩存30,由于它支持單板(一級)高速緩存24和26,因此被稱為二級(L2)高速緩存。換句話說,高速緩存30起存儲器16與單板高速緩存之間的中介物的作用,和單板高速緩存相比,能存儲更大量的信息(指令及數(shù)據(jù)),但是時間較長。例如,高速緩存30可以是存儲容量為256或512 Kbyte的芯片,而處理器可以是具有總存儲容量為64 Kbyte的單板高速緩存的IBM PowerPCTM604系列處理器。高速緩存30與總線20相連,從存儲器16進(jìn)入處 理器核芯22的所有信息的加載必須經(jīng)過高速緩存30。雖然圖1只描述了兩級高速緩存體系,不過也可提供具有多級(L3、L4等)串聯(lián)連接的高速緩存的多級高速緩存體系。
在SMP計算機(jī)中,重要的是提供相干存儲器系統(tǒng),即,使對各個單獨存儲單元的寫入操作按照一定的順序串行進(jìn)行。在高速緩存相干系統(tǒng)中,所有處理器將遵守對指定存儲單元的寫入操作將按照指示的順序進(jìn)行。存在多種用于實現(xiàn)高速緩存相干的協(xié)議和技術(shù),這些協(xié)議和技術(shù)本領(lǐng)域技術(shù)人員已知。所有這些維持相干的機(jī)制的核心是要求協(xié)議在任意指定時間,只允許一個處理器具有對指定存儲單元(高速緩存塊)進(jìn)行寫入操作的“權(quán)限”。這種要求的結(jié)果是,無論何時處理單元試圖對存儲單元進(jìn)行寫操作,它必須首先把它對該存儲單元進(jìn)行寫操作的要求通知所有其它處理單元,并從所有其它處理單元接收執(zhí)行該寫操作的許可。在進(jìn)行寫操作之前,起始處理器必須把該寫操作通知系統(tǒng)中的所有其它處理器。此外,如果塊存在于指定處理單元的L1高速緩存中,則它還存在于該處理單元的L2及L3高速緩存中。這一特性被稱為包含(inclusion),并為本領(lǐng)域技術(shù)人員眾所周知。
為了在系統(tǒng)中實現(xiàn)高速緩存相干,處理器在共用通用互連(即總線20)上通信。處理器通過該互連傳送指示它們對存儲單元進(jìn)行讀或?qū)懖僮饕蟮南?。?dāng)把一個操作放在該互連上時,所有其它處理器“窺探”(監(jiān)視)該操作,并確定它們的高速緩存狀態(tài)是否允許該請求操作繼續(xù)進(jìn)行下去,如果允許,在什么條件下允許。存在幾種總線事務(wù),這些總線事務(wù)需要窺探及跟蹤動作,以兌現(xiàn)總線事務(wù),并維持存儲器相干。窺探響應(yīng)由系統(tǒng)邏輯電路收集并分析,系統(tǒng)邏輯電路一般存在于系統(tǒng)控制指示器32中。通過接收合格的窺探請求觸發(fā)窺探操作,窺探請求由某些總線信號的確證(assertion)所產(chǎn)生。這一通信是必需的,因為在具有高速緩存的系統(tǒng)中,指定存儲器塊的最新有效副本可能已從系統(tǒng)存儲器16中移到系統(tǒng)的一個或多個高速緩存中。如果處理器(例如12a)試圖訪問不存在于其高速緩存體系中的存儲單元,則含有該存儲單元的實際(當(dāng)前)值的存儲器塊的正確版本可能在系統(tǒng)存儲器16中,或者在另一處理單元,例如處理單元12b的一個或多個高速緩存中。如果該正確版本在系統(tǒng)的一個或多個其它高速緩存中,則必須從系統(tǒng)的這些高速緩存中,而不是從系統(tǒng)存儲器中獲得該正確值。
例如,考慮一個處理器,例如12a試圖讀取存儲器中的一個單元的情況。處理器12a首先輪詢其自身的L1高速緩存(24或26)。如果存儲塊不在L1高速緩存中,則把請求轉(zhuǎn)給L2高速緩存(30)。如果存儲器塊不在L2高速緩存中,則把請求轉(zhuǎn)給更低級的高速緩存,例如L3高速緩存。如果該存儲器塊不在更低級的高速緩存中,則把請求放在通用互連上以便對其進(jìn)行服務(wù)。一旦把一個操作放在通用互連上,所有其它低級高速緩存窺探該操作,并確定該存儲器塊是否存在于它們的高速緩存中。如果指定處理單元在其L1高速緩存中具有起始處理單元請求的存儲器塊,并且存儲器塊中的值被修改,則根據(jù)包含原則,L2高速緩存及任意低級高速緩存也具有該塊的副本(不過由于處理器的高速緩存中的副本已被修改,它們的副本可能是陳舊的)。于是,當(dāng)處理單元的最低級高速緩存(例如L3)窺探該讀取操作時,它將確定所請求的塊存在于更高級的高速緩存中并被修改。當(dāng)發(fā)生這種情況時,L3高速緩存在通用互連上放置一個消息,通知處理單元它必須在稍后再次“重試”其操作,因為存儲單元的實際值位于存儲器體系最頂層的L1高速緩存中,并且必須再次取出該存儲單元的實際值,以使得該實際值能夠服務(wù)起始處理單元的讀取請求。
一旦來自起始處理單元的請求被重試,則L3高速緩存開始從L1高速緩存取出修改值的過程,并根據(jù)取出過程實現(xiàn)的具體細(xì)節(jié),使修改值在L3高速緩存或主存儲器可用,或者在兩者都可用,該過程實現(xiàn)和本發(fā)明并不特別相關(guān)。為了從較高級的高速緩存取出該塊,L3高速緩存通過高速緩存間的連接向較高級的高速緩存發(fā)送請求取出該塊的消息。這些消息在處理單元體系中向上傳播,直到達(dá)到L1高速緩存,并使該塊在體系內(nèi)向下移動到最低一級(L3或者主存儲器),以便能夠服務(wù)來自起始處理單元的請求。
起始處理單元最后在通用互連上重試該讀取請求。不過此時,已從一個處理單元的L1高速緩存中取出該修改值,來自起始處理器的讀取請求將被滿足。上面描述的情況通常被稱為“窺探推送(snooppush)”。在通用互連上窺探一個讀取請求,使處理單元把高速緩存塊推送到高速緩存體系的底部,以滿足起始處理單元的讀取請求。
當(dāng)處理器想要讀或?qū)懜咚倬彺鎵K時,它必須把該請求通知系統(tǒng)中的其它處理單元,以便維持高速緩存相干。要實現(xiàn)這一點,高速緩存相干協(xié)議把高速緩存體系各級中的每個高速緩存塊和指示該高速緩存塊的當(dāng)前“狀態(tài)”的狀態(tài)指示符聯(lián)系起來。狀態(tài)信息用于許可相干協(xié)議中的某些優(yōu)化,減少通用互連及高速緩存之間的連接上的消息通信量。作為這種機(jī)制的一個例子,當(dāng)處理單元執(zhí)行一個讀取操作時,它接收指示是否必須在稍后重復(fù)該讀取操作的消息。如果該讀取操作不被重復(fù),則該消息一般還包括使處理單元能夠確定是否任意其它處理單元也具有該高速緩存塊的仍然有效副本(這是通過使其它最低級高速緩存對它們不重試的任何讀取操作給出“共享”或“不共享”指示實現(xiàn)的)的信息。于是,處理單元能夠確定系統(tǒng)中的任意其它處理器是否具有該高速緩存塊的副本。如果其它處理單元不具有該高速緩存塊的有效副本,則讀取處理單元把該塊的狀態(tài)標(biāo)記為“排他”。如果一個塊被標(biāo)記為排他,則允許處理單元稍后對該塊進(jìn)行寫操作,而不必首先通知系統(tǒng)中的其它處理單元,因為其它處理單元不具有該塊的副本。于是,只要相干協(xié)議已確保其它處理器不打算對該塊進(jìn)行讀或?qū)懖僮鳎瑒t處理器能夠?qū)υ摳咚倬彺鎵K進(jìn)行讀或?qū)懖僮?,而不必首先在互連上傳送該操作意圖。
上述高速緩存相干技術(shù)以如圖2中所示的一種被稱為“MESI”的特殊協(xié)議實現(xiàn)。在該協(xié)議中,高速緩存塊可以是四種狀態(tài)中的一種狀態(tài)“M”(修改),“E”(排他),“S”(共享)或者“I”(無效)。在MESI協(xié)議下,每個高速緩存表目(entry)(例如32字節(jié)扇區(qū))具有指示該表目狀態(tài)的兩個附加位,該狀態(tài)為四種可能狀態(tài)中的一種。根據(jù)表目的初始狀態(tài)及請求處理器所尋找的訪問的類型,狀態(tài)可能被改變,并為請求處理器的高速緩存中的該表目設(shè)置一個特殊的狀態(tài)。例如,當(dāng)扇區(qū)處于修改狀態(tài)時,被訪扇區(qū)只在具有該修改扇區(qū)的高速緩存中有效,并且修改值還未被寫回系統(tǒng)存儲器中。當(dāng)扇區(qū)處于排他狀態(tài)時,它只存在于指出的扇區(qū)中,并且和系統(tǒng)存儲器一致。如果扇區(qū)處于共享狀態(tài),則該扇區(qū)在那個高速緩存及至少另一高速緩存中有效,所有共享扇區(qū)都與系統(tǒng)存儲器一致。最后,當(dāng)扇區(qū)處于無效狀態(tài)時,表示被訪扇區(qū)不存在于該高速緩存中。如圖2中所示,如果扇區(qū)處于修改、共享或者無效狀態(tài)中的任一種狀態(tài),則根據(jù)特定的總線事務(wù),它可在這些狀態(tài)之間移動。雖然處于排他狀態(tài)的扇區(qū)可改變?yōu)槿我馄渌鼱顟B(tài),但是開始處于無效狀態(tài)的扇區(qū)只能改變?yōu)榕潘麪顟B(tài)。
利用前面提及的高速緩存相干協(xié)議可進(jìn)一步改進(jìn)對高速緩存塊的訪問。這種改進(jìn),稱為“干預(yù)”允許控制修改的存儲器塊的高速緩存把該存儲器塊中的數(shù)據(jù)或指令直接提供給請求該值的另一高速緩存(對于讀操作),換句話說,不必把數(shù)據(jù)或指令寫入系統(tǒng)存儲器,隨后再由請求處理器從系統(tǒng)存儲器中讀取寫入的數(shù)據(jù)或指令。干預(yù)可只由具有狀態(tài)被修改的塊中的值的高速緩存進(jìn)行。這種情況下,只有一個高速緩存塊具有該值的有效副本,因此在總線20上提供(source)該值是一件簡單的事情,而不必首先把該值寫入系統(tǒng)存儲器中。這樣由于避免了把該值寫入系統(tǒng)及從系統(tǒng)中讀取該值的較長過程(它實際上涉及三個總線操作及二個存儲器操作),干預(yù)方法加快了數(shù)據(jù)處理。這種方法不僅減少了執(zhí)行時間,而且增大了可用的總線帶寬。
當(dāng)數(shù)據(jù)或指令以未修改(即共享或排他)狀態(tài)被保存時,現(xiàn)有的協(xié)議不提供干預(yù)。一種途徑是把共享高速緩存塊看作處于修改狀態(tài)進(jìn)行處理,這將使該值可被含有該值的高速緩存提供,但是隨后該值還是會被寫入系統(tǒng)存儲器中,這是不必要的,并且會導(dǎo)致進(jìn)一步的延遲。于是最好提出一種維持高速緩存相干的方法,該方法能夠?qū)崿F(xiàn)未修改數(shù)據(jù)或指令的有效干預(yù)。如果能夠不考慮未修改狀態(tài)的特定類型(即共享、排他或任意其它未修改狀態(tài)),以一種簡化值的干預(yù)的方式實現(xiàn)該方法將更為有利。
于是本發(fā)明的目的是提供一種在多處理器計算機(jī)系統(tǒng)中執(zhí)行讀取型操作的改進(jìn)方法,當(dāng)可在另一處理器的高速緩存中找到處于未修改狀態(tài)的目標(biāo)值時,該方法能夠改進(jìn)干預(yù)響應(yīng)。
根據(jù)本發(fā)明的第一方面,提供了一種改進(jìn)與多處理器計算機(jī)系統(tǒng)中的請求處理單元發(fā)出的讀取型操作相關(guān)的存儲器等待時間(memorylatency)的方法,該計算機(jī)系統(tǒng)包括多個處理單元,每個處理單元具有一個相關(guān)高速緩存,該方法包括下述步驟把值從存儲設(shè)備的一個地址載入至少第一及第二高速緩存中;把第一及第二高速緩存標(biāo)記為含有該值的共享、未修改副本;從請求處理單元發(fā)布指示該請求處理單元希望從存儲設(shè)備的地址中讀取該值的消息;并從第一及第二高速緩存中的指定高速緩存?zhèn)魉椭甘驹撝付ǜ咚倬彺婵商峁┰撝档捻憫?yīng)。
根據(jù)本發(fā)明的第二方面,提供了一種改進(jìn)與多處理器計算機(jī)系統(tǒng)中的請求處理單元發(fā)出的讀取型操作相關(guān)的存儲器等待時間的方法,該計算機(jī)系統(tǒng)包括多個處理單元,每個處理單元具有一個相關(guān)高速緩存,該方法包括下述步驟把值從存儲設(shè)備的一個地址載入多個高速緩存中;識別多個高速緩存中的指定高速緩存,該指定高速緩存含有該值的最新讀取的未修改副本;把該指定高速緩存標(biāo)記為含有該值的最新讀取的未修改副本;除該指定高速緩存外,把其它多個高速緩存標(biāo)記為含有該值的共享的未修改副本;從請求處理單元發(fā)布指示該請求處理單元希望從存儲設(shè)備的地址中讀取該值的消息;并從指定高速緩存?zhèn)魉椭甘驹撝付ǜ咚倬彺婵商峁┰撝档捻憫?yīng)。
下面將參考附圖來描述本發(fā)明的一個例證實施例,其中圖1是現(xiàn)有技術(shù)的多處理器計算機(jī)系統(tǒng)的方框圖;圖2是描述現(xiàn)有技術(shù)的高速緩存相干協(xié)議(MESI)的狀態(tài)圖;圖3是描述可用于實現(xiàn)本發(fā)明的新穎的高速緩存相干協(xié)議的狀態(tài)圖。
本發(fā)明目的在于一種在多處理器系統(tǒng),例如圖1的系統(tǒng)中執(zhí)行讀取型指令的方法,不過本發(fā)明也可應(yīng)用于非常規(guī)計算機(jī)系統(tǒng),即這些計算機(jī)系統(tǒng)可包括圖1中未表示的硬件組成部分,或者對于現(xiàn)有的組成部分具有新穎的互連結(jié)構(gòu)。于是,本領(lǐng)域的技術(shù)人員將認(rèn)識到本發(fā)明并不限于圖中所示的一般化系統(tǒng)。
本發(fā)明中,建立了一種協(xié)議,以從與多處理器計算機(jī)系統(tǒng)中的其它處理器相關(guān)的所有高速緩存的窺探器(snooper)向請求讀取操作的處理器傳遞相干響應(yīng)。根據(jù)表1簡明陳述了各種相干響應(yīng)。
表1
信號采取3位窺探響應(yīng)的形式,其值(地址響應(yīng))及定義陳述于表1中。這些信號被編碼,以指示地址使用期(address tenure)之后的窺探結(jié)果。表1表示了類似于現(xiàn)有技術(shù)使用的共享線、修改線及清除(無效線)的響應(yīng),及重試響應(yīng)。表1還表示了三種新的響應(yīng),“共享干預(yù)”、“遠(yuǎn)程狀態(tài)”及“再運行”。遠(yuǎn)程狀態(tài)響應(yīng)只用于讀取操作,用于指示該讀取操作將獲得成功,共享或排他的相干響應(yīng)將在稍后和使用另一信號的數(shù)據(jù)一起被返回。當(dāng)相干響應(yīng)不能被立即確定,并且該請求必須在高速緩存體系中向下發(fā)送時,使用再運行響應(yīng)。再運行響應(yīng)與重試響應(yīng)的區(qū)別在于必須重發(fā)以前的消息,并且該消息必須具有相同的標(biāo)識符,以便它能夠與以前發(fā)送的消息相匹配。
共享干預(yù)響應(yīng)允許高速緩存當(dāng)其具有還未被修改的數(shù)據(jù)或指令副本時,提供一個值,因此不同于現(xiàn)有技術(shù)的修改干預(yù)響應(yīng)。這樣共享干預(yù)響應(yīng)可和任何指示未修改值的狀態(tài)(包括共享狀態(tài)和排他狀態(tài)),以及下面介紹的一種新狀態(tài)(表示最近讀取的“R”狀態(tài))一起使用。共享干預(yù)響應(yīng)告訴請求處理器在總線(通用互連)上查找讀取應(yīng)答數(shù)據(jù)或指令,讀取應(yīng)答數(shù)據(jù)或指令用其請求識別符及一個信號標(biāo)記,該信號表示應(yīng)答數(shù)據(jù)或指令是來自高速緩存,而不是來自存儲器的值。術(shù)語“總線”表示廣義總線,可能存在幾種總線,例如用于應(yīng)答請求及響應(yīng)消息的窺探總線,及與一個交叉點相連的一個或多個其它數(shù)值總線。
應(yīng)答在單獨的數(shù)據(jù)標(biāo)志總線上由一個8位值標(biāo)記,數(shù)據(jù)標(biāo)志總線一個周期一個周期地跟蹤數(shù)據(jù)總線。數(shù)據(jù)標(biāo)志總線上的值指示數(shù)據(jù)總線上的數(shù)據(jù)屬于具有地址總線上發(fā)送的相同值的消息。具有一個輔助信號“高速緩存數(shù)據(jù)非存儲器數(shù)據(jù)”(DCache),該信號在干預(yù)過程中被啟用,指示數(shù)據(jù)來自高速緩存,而不是來自存儲器。理論上在請求者得到干預(yù)響應(yīng)之前,存儲器或高速緩存可開始發(fā)送數(shù)據(jù),如果這樣,Dcache被啟用,指示最近的數(shù)據(jù)正被發(fā)送,如果Dcache被禁用,它必須等待干預(yù)響應(yīng),以了解是否發(fā)生干預(yù),如果發(fā)生了干預(yù),則丟棄該數(shù)據(jù),并等待由Dcache(及相同的匹配數(shù)據(jù)標(biāo)志)標(biāo)記的數(shù)據(jù)。另外,這一新響應(yīng)將命令存儲器系統(tǒng)放棄該讀取請求,因為該讀取請求可由另一高速緩存的干預(yù)所滿足。由于高速緩存等待時間遠(yuǎn)小于存儲器等待時間,因此利用這種新的協(xié)議,可顯著改進(jìn)讀取性能。
值可進(jìn)一步與每個響應(yīng)相聯(lián)系,以使系統(tǒng)邏輯電路能夠確定在對請求處理器表達(dá)單獨響應(yīng)時,哪一個響應(yīng)應(yīng)優(yōu)先,如圖1中所示。例如,如果一個或多個高速緩存以共享干預(yù)響應(yīng)(優(yōu)先級3)應(yīng)答,而一個或多個高速緩存以重試響應(yīng)(優(yōu)先級1)應(yīng)答,則重試響應(yīng)將獲得優(yōu)先權(quán),系統(tǒng)邏輯電路將向請求處理器發(fā)出重試響應(yīng)。系統(tǒng)邏輯電路可存在于各種組成部分中,例如系統(tǒng)控制指示器,或者甚至存在于存儲器控制器中。類似于現(xiàn)有技術(shù),表1中所示的優(yōu)先級初始值為重試響應(yīng)設(shè)置了最高優(yōu)先級。不過,也提供了一種備選優(yōu)先級方案,以增加共享干預(yù)協(xié)議的使用。在由表1中括號中的優(yōu)先級數(shù)表示的這一備選方案中,共享干預(yù)響應(yīng)具有最高的優(yōu)先級,其次是重試響應(yīng),再其次是修改干預(yù)響應(yīng);其它所有優(yōu)先級均與第一方案相同。在這種備選方案中,共享干預(yù)響應(yīng)將總是優(yōu)先于其它響應(yīng),由于下述許多原因,這是可接受的。首先,如果高速緩存線正以共享狀態(tài)保持一個值(數(shù)據(jù)或指令),則其它高速緩存不可能以修改狀態(tài)保持對應(yīng)于相同地址的值,這樣,顯然沒有其它高速緩存能夠以修改干預(yù)響應(yīng)表示應(yīng)答。另外,如果任意其它高速緩存發(fā)布重試響應(yīng),則隨后基于該重試響應(yīng),來自同一高速緩存的任何響應(yīng)至多不過可被共享,這再次意味著首先發(fā)布共享干預(yù)響應(yīng)是可接受的。
在本發(fā)明中,可采取幾種不同的機(jī)制來查明哪一個高速緩存是未修改的值的“所有者”,并且因此有權(quán)提供該未修改的值。如果計算機(jī)系統(tǒng)使用圖2中所示的現(xiàn)有MESI協(xié)議,并且高速緩存線以排他狀態(tài)保持一個值,則該高速緩存是含有該值的有效副本的唯一高速緩存,這樣該高速緩存顯然是所有者,并可發(fā)布共享干預(yù)響應(yīng)。但是,如果高速緩存以共享狀態(tài)保持一個值,則該值還以同樣的狀態(tài)被保持在至少一個其它高速緩存中,這樣,不能直接清楚哪一種情況應(yīng)提供該數(shù)據(jù)。這種情況下,可采用幾種備用方法來確定應(yīng)使用哪一個高速緩存。例如,多個高速緩存可以共享干預(yù)響應(yīng),那么系統(tǒng)邏輯電路(例如,系統(tǒng)控制指示器)能夠選擇哪一個高速緩存來提供該值。這樣,系統(tǒng)能夠向除去其中之一的全部可能的所有者返回重試響應(yīng),并只向選定的所有者返回共享干預(yù)響應(yīng)??扇我獾剡x擇所有者,或者可根據(jù)固定的或變換(rotating)的優(yōu)先級方案選擇所有者。
在含有共享值的多個高速緩存中確定所有者的另一種方法是提供一種指示哪一個高速緩存最近讀取了高速緩存線的機(jī)制。隨后該高速緩存被自動看作是該高速緩存線的所有者,直到另一高速緩存讀取了該高速緩存線,或者該高速緩存線被丟棄為止。這一方法可由圖3的狀態(tài)圖中描述的新的高速緩存相干協(xié)議實現(xiàn)。該協(xié)議與圖2的現(xiàn)有MESI協(xié)議的相似之處在于,它也包括四種相同的狀態(tài)(修改、排他、共享及無效),不過它還包括一種新的“R”狀態(tài)(最近),用于指示最近訪問的塊,否則該塊會具有共享指示。換句話說,當(dāng)兩個或更多高速緩存保持有指令或數(shù)據(jù)值的有效副本時,除了最近訪問過該指令或數(shù)據(jù)值的那個高速緩存之外,它們都將處于共享狀態(tài),而該高速緩存將處于最近狀態(tài)。由于現(xiàn)在總共具有5種可能的狀態(tài),因此每個高速緩存表目需要一個三位字段(而不是如同現(xiàn)有技術(shù)中的二位字段)來識別該表目具有哪種狀態(tài)。
這里把這種新協(xié)議稱為“R-MESI”協(xié)議。正如現(xiàn)有技術(shù)協(xié)議的情況一樣,四個M-E-S-I狀態(tài)可根據(jù)表目的初始狀態(tài)及請求處理器所尋找的訪問的類型而改變。除了下面指出的之外,這四種狀態(tài)的變化方式一般和現(xiàn)有的MESI協(xié)議相同。表2表示了讀取型操作的主高速緩存狀態(tài)轉(zhuǎn)變,這里發(fā)生了“失敗(miss)”表2
<p>對于“讀取失敗”總線操作,如果相干響應(yīng)是修改(Mod)、共享(Shr)或者共享干預(yù)(ShrI),則進(jìn)入最近狀態(tài)(表2的第1行);對于“讀取失敗”操作,如果相干響應(yīng)是修改(Mod),則修改的高速緩存將也向存儲器發(fā)送指令或數(shù)據(jù),這樣它不再是修改(Mod)。如果對于“讀取失敗”操作不存在相干響應(yīng)(Null)(表2的第3行),則和現(xiàn)有技術(shù)的MESI協(xié)議的情況一樣,進(jìn)入排他狀態(tài)。對于“RWITM”操作(RWITM是帶有修改意愿的讀取(Read With Intent To Modify)的縮寫),如果相干響應(yīng)為Null、Shr或ShrI,則進(jìn)入排他狀態(tài)(表2的第2行),如果相干響應(yīng)是Mod,則進(jìn)入修改狀態(tài)(表2的第4行)。RWITM情況只適用于仍然處于準(zhǔn)備執(zhí)行狀態(tài)的數(shù)據(jù)或指令,因為指令一旦準(zhǔn)備好執(zhí)行通常不被修改。
表3表示了對于讀取型操作(讀取命中(read hit)),當(dāng)高速緩存作為窺探器時,總線事務(wù)是如何影響該高速緩存的一個例子表3<
>對于起始狀態(tài)為排他(Exclusive)或最近(Recent)狀態(tài)的情況(表3的第1、第2及第4行),高速緩存將傳送共享干預(yù)相干響應(yīng),意味著它將在不涉及系統(tǒng)存儲器的情況下,借助于干預(yù)直接向請求處理器提供它的指令或數(shù)據(jù)副本。當(dāng)一個指令被這樣提供時,對于“讀取命中(Read hit)”操作(表3的1及第2行),下一狀態(tài)變成共享狀態(tài),或者對于“RWITM命中(hit)”操作(表3的第4行),下一狀態(tài)變成無效狀態(tài)。在起始狀態(tài)為修改狀態(tài)的那些情況下(表3的第3及第5行),就指令而論,仍然不應(yīng)用修改狀態(tài),因為通常不修改程序指令,相干響應(yīng)將是修改(Mod),并且仍然發(fā)生干預(yù)。如果總線操作是“RWITM”,則值只從高速緩存?zhèn)魉偷礁咚倬彺?,但是如果總線操作是讀取操作,則值既被發(fā)送給高速緩存,又被發(fā)送給存儲器。
如上所述,附帶一個條件,即經(jīng)受寫操作的高速緩存表目可具有“R”狀態(tài),并且該高速緩存將以當(dāng)共享表目經(jīng)受寫操作時發(fā)生的轉(zhuǎn)變相類似的方式轉(zhuǎn)變?yōu)樾薷臓顟B(tài),表2及表3中沒有顯示的那些狀態(tài)及操作按照現(xiàn)有技術(shù)的MESI協(xié)議執(zhí)行轉(zhuǎn)變及相干響應(yīng)。此外對于R-MESI協(xié)議還應(yīng)注意以下幾點表目永遠(yuǎn)不可能從無效狀態(tài)轉(zhuǎn)到共享狀態(tài)(而是會轉(zhuǎn)到最近(Recent)狀態(tài));表目永遠(yuǎn)不可能從排他狀態(tài)轉(zhuǎn)到最近狀態(tài)(它應(yīng)轉(zhuǎn)到共享狀態(tài));表目永遠(yuǎn)不可能從最近狀態(tài)轉(zhuǎn)到排他狀態(tài)(正如共享表目不能夠轉(zhuǎn)到排他狀態(tài)一樣);表目永遠(yuǎn)不可能從修改狀態(tài)轉(zhuǎn)到最近狀態(tài)(它應(yīng)轉(zhuǎn)到共享狀態(tài),而請求處理器的高速緩存中的表目應(yīng)轉(zhuǎn)到最近狀態(tài))。
借助這種新的R-MESI協(xié)議,塊的所有權(quán)轉(zhuǎn)移到要讀取指令或數(shù)據(jù)的最后的高速緩存,其增加的優(yōu)點是保持最近最多使用(mostrecently used),從而如果采用最近最少使用(LRU)高速緩存替換機(jī)制,減少了解除分配的機(jī)會?!癛”高速緩存狀態(tài)也可有利地用于其它應(yīng)用,例如中斷最近已讀取高速緩存I/O狀態(tài)存儲單元的處理器/高速緩存的智能輸入/輸出(I/O)控制器,因為該處理器/高速緩存很可能已高速緩存該I/O設(shè)備驅(qū)動程序代碼,于是能夠比需要把該代碼裝入其高速緩存中的另一處理器更快地執(zhí)行該代碼。
通過為共享指令及數(shù)據(jù)(即有效地存在于一個以上的高速緩存中的指令或數(shù)據(jù))提供干預(yù),顯著地改善了存儲器等待時間。在R-MESI協(xié)議的一個評定中,當(dāng)和現(xiàn)有技術(shù)的MESI協(xié)議相比時,按照產(chǎn)業(yè)標(biāo)準(zhǔn)基準(zhǔn)測試,性能從5300TPMC增加到7500TPMC(每分鐘的事務(wù))。一般,本發(fā)明不含存儲器控制器,并且減少了對存儲器帶寬的要求。
盡管上面參考特定實施例描述了本發(fā)明,但是不能狹義地理解上述說明。參考本發(fā)明的說明,公開的實施例的各種修改,及本發(fā)明的其它可能實施例對于本領(lǐng)域的技術(shù)人員將是顯而易見的。于是在不脫離如附加的權(quán)利要求中限定的本發(fā)明范圍的情況下,能夠作出各種修改。
權(quán)利要求
1.一種改進(jìn)存儲器等待時間的方法,所述存儲器等待時間與由多處理器計算機(jī)系統(tǒng)中的請求處理單元發(fā)出的讀取操作相關(guān),所述計算機(jī)系統(tǒng)包括多個處理單元,每個處理單元具有一個相關(guān)高速緩存,所述方法包括下述步驟從存儲設(shè)備的地址中把值載入至少第一及第二高速緩存中;把所述第一及第二高速緩存標(biāo)記為含有所述值的共享的、未修改副本的高速緩存;從請求處理單元發(fā)出一個消息,該消息指示所述請求處理單元想要從所述存儲設(shè)備的所述地址中讀取所述值;及從所述第一及第二高速緩存中的指定高速緩存?zhèn)魉椭甘舅鲋付ǜ咚倬彺婵商峁?source)所述值的響應(yīng)。
2.一種改進(jìn)存儲器等待時間的方法,所述存儲器等待時間與由多處理器計算機(jī)系統(tǒng)中的請求處理單元發(fā)出的讀取操作相關(guān),所述計算機(jī)系統(tǒng)包括多個處理單元,每個處理單元具有一個相關(guān)高速緩存,所述方法包括下述步驟從存儲設(shè)備的地址中把值載入多個高速緩存中;識別所述多個高速緩存中的一個指定高速緩存,該指定高速緩存含有所述值的最近被讀取的未修改副本;把所述指定高速緩存標(biāo)記為含有所述值的最近讀取的、未修改副本的高速緩存;從請求處理單元發(fā)出一個消息,該消息指示所述請求處理單元想要從所述存儲設(shè)備的所述地址中讀取所述值;及從所述指定高速緩存?zhèn)魉椭甘舅鲋付ǜ咚倬彺婵商峁┧鲋档捻憫?yīng)。
3.按照權(quán)利要求1或2所述的方法,其中所述響應(yīng)由系統(tǒng)邏輯電路檢測,還包括把所述響應(yīng)從系統(tǒng)邏輯電路發(fā)送給請求處理單元的步驟。
4.按照權(quán)利要求1或2所述的方法,還包括所述指定高速緩存提供所述值給互連的步驟,所述互連與所述請求處理單元相連。
5.按照權(quán)利要求1所述的方法,其中所述指定高速緩存從第一及第二高速緩存中任意選擇。
6.按照權(quán)利要求1或2所述的方法,其中所述響應(yīng)的傳送,是響應(yīng)指定高速緩存從與所述請求處理單元相連的互連窺探所述消息的步驟。
7.按照權(quán)利要求1或2所述的方法,還包括利用請求識別符標(biāo)記所述消息的步驟。
8.按照權(quán)利要求1或2所述的方法,其中所述存儲設(shè)備檢測所述消息;并且所述響應(yīng)通知所述存儲設(shè)備,所述值將由指定高速緩存提供。
9.按照權(quán)利要求1或2所述的方法,其中除所述指定高速緩存之外的至少一個其它高速緩存?zhèn)魉土硪豁憫?yīng);第一優(yōu)先級值與來自指定高速緩存的響應(yīng)相聯(lián)系;并且第二優(yōu)先級值與所述另一響應(yīng)相聯(lián)系,和第一優(yōu)先級值相比,第二優(yōu)先級值指示較低的優(yōu)先級。
10.按照權(quán)利要求7所述的方法,還包括指定高速緩存作為應(yīng)答提供所述值給與該請求處理單元相連的互連,該應(yīng)答用所述請求識別符標(biāo)記。
11.一種計算機(jī)系統(tǒng),包括存儲設(shè)備;與所述存儲設(shè)備相連的互連;與所述互連相連的多個處理單元,每個處理單元具有存儲來自所述存儲設(shè)備的值的高速緩存,所述高速緩存中的一個指定高速緩存還具有用于指示何時述指定高速緩存含有從所述存儲設(shè)備載入的值的共享、未修改副本的裝置,該值也以共享、未修改副本的形式存在于至少另一個所述高速緩存中;及傳送來自所述指定高速緩存的響應(yīng)的裝置,該響應(yīng)指示所述指定高速緩存可提供從所述存儲設(shè)備加載的該值至請求讀取該值的處理單元。
12.一種計算機(jī)系統(tǒng),包括存儲設(shè)備;與所述存儲設(shè)備相連的互連;與所述互連相連的多個處理單元,每個處理單元具有存儲來自所述存儲設(shè)備的值的高速緩存,所述高速緩存中的一個指定高速緩存還具有用于當(dāng)所述指定高速緩存含有從所述存儲設(shè)備載入的值的最近讀取的、未修改副本時,指示該值也以共享、未修改副本的形式存在于至少另一個所述高速緩存中的裝置;及傳送來自所述指定高速緩存的響應(yīng)的裝置,該響應(yīng)指示所述指定高速緩存可提供從所述存儲設(shè)備加載的該值至請求讀取該值的處理單元。
13.按照權(quán)利要求11或12所述的計算機(jī)系統(tǒng),還包括與所述互連相連的系統(tǒng)控制指示器,所述系統(tǒng)控制指示器具有用于檢測所述響應(yīng),并把所述響應(yīng)轉(zhuǎn)給所述請求處理單元的裝置。
14.按照權(quán)利要求11或12所述的計算機(jī)系統(tǒng),還包括用于提供來自所述指定高速緩存的值至所述請求處理單元的裝置。
15.按照權(quán)利要求11所述的計算機(jī)系統(tǒng),還包括從含有所述值的共享的、未修改副本的高速緩存中隨意選擇所述指定高速緩存的裝置。
16.按照權(quán)利要求11或12所述的計算機(jī)系統(tǒng),其中每個所述高速緩存包括為來自所述請求處理單元的消息窺探所述互連的裝置。
17.按照權(quán)利要求11或12所述的計算機(jī)系統(tǒng),還包括用于確定與所述響應(yīng)相關(guān)的優(yōu)先級的裝置。
18.按照權(quán)利要求16所述的計算機(jī)系統(tǒng),還包括利用請求識別符標(biāo)記所述消息的裝置。
19.按照權(quán)利要求16所述的計算機(jī)系統(tǒng),其中所述存儲設(shè)備檢測所述消息,還包括通知所述存儲設(shè)備,所述值將由所述指定高速緩存提供的裝置。
20.按照權(quán)利要求18所述的計算機(jī)系統(tǒng),還包括提供該值作為應(yīng)答的裝置,所述應(yīng)答用所述請求識別符及附加信號標(biāo)記,附加信號表示該值來自高速緩存,而不是來自所述存儲設(shè)備。
全文摘要
公開了一種改進(jìn)與多處理器計算機(jī)系統(tǒng)中的讀取操作有關(guān)的存儲器等待時間的方法。在從系統(tǒng)存儲器把值(數(shù)據(jù)或指令)載入至少兩個高速緩存之后,把這些高速緩存標(biāo)記為含有該值的共享、未修改副本的高速緩存,當(dāng)請求處理單元發(fā)布指示它想要讀取該值的消息時,這些高速緩存中的指定高速緩存?zhèn)魉椭甘驹撝付ǜ咚倬彺婵商峁┰撝档捻憫?yīng)。傳送該響應(yīng),以響應(yīng)從與該請求處理單元相連的互連窺探消息的高速緩存。該響應(yīng)由系統(tǒng)邏輯電路檢測,并從系統(tǒng)邏輯電路轉(zhuǎn)發(fā)給請求處理單元。隨后該高速緩存提供該值至與請求處理單元相連的互連。系統(tǒng)存儲器檢測該消息,并且通常會提供該值,但是該響應(yīng)通知存儲設(shè)備,該值將由該高速緩存提供。由于高速緩存等待時間可遠(yuǎn)小于存儲器等待時間,因此利用這種新協(xié)議可顯著改善讀取性能。
文檔編號G06F12/08GK1252142SQ98804148
公開日2000年5月3日 申請日期1998年4月3日 優(yōu)先權(quán)日1997年4月14日
發(fā)明者萊維·庫馬·艾里米利, 約翰·史蒂文·多德森, 約翰·邁克爾·凱瑟, 杰麗·頓·路易斯 申請人:國際商業(yè)機(jī)器公司