亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

具有獨(dú)立實(shí)現(xiàn)優(yōu)化高速緩存操作的高速緩存相關(guān)協(xié)議的制作方法

文檔序號:6416203閱讀:220來源:國知局
專利名稱:具有獨(dú)立實(shí)現(xiàn)優(yōu)化高速緩存操作的高速緩存相關(guān)協(xié)議的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及計(jì)算機(jī)系統(tǒng),更特別地,本發(fā)明涉及一種高速緩存相關(guān)協(xié)議,該協(xié)議提供一種新的用于修改數(shù)據(jù)的相關(guān)狀態(tài),允許在不需要寫干預(yù)數(shù)據(jù)至系統(tǒng)存貯器中的情況下改進(jìn)高速緩存的干預(yù)。
常規(guī)多處理器計(jì)算機(jī)系統(tǒng)10的基本結(jié)構(gòu)示于

圖1。計(jì)算機(jī)系統(tǒng)10有一些處理部件,圖中示出了其中的兩個12a和12b,這些處理部件連接到各種外設(shè),包括輸入/輸出(I/O)設(shè)備14(例如顯示監(jiān)視器、鍵盤、圖形指針(鼠標(biāo))、以及永久存儲器(硬盤))、存貯器設(shè)備16(例如隨機(jī)存取存貯器或RAM)和固件18,其中存貯器設(shè)備16用于處理部件執(zhí)行程序指令,而固件18的主要目的是在每當(dāng)計(jì)算機(jī)首先加電時從一個外設(shè)中(通常為永久存貯器)尋找并加載操作系統(tǒng)。處理部件12a和12b通過各種裝置,包括普通的互連或總線20、或者直接存貯器存取通道(未示出)而與外設(shè)通信。計(jì)算機(jī)10可以具有許多未示出的附加部件,諸如用于連接到例如調(diào)制解調(diào)器或打印機(jī)的串并口等。還有其它部件可以用于連接到示于圖1的方框圖中的部件上;例如,一顯示適配器可以用于控制視頻顯示監(jiān)視器,一存貯控制器可以用于訪問存貯器16,等等。該計(jì)算機(jī)還能具有兩個以上的處理部件。
在對稱多處理器(SMP)計(jì)算機(jī)中,通常所有的處理部件是相同的,即,它們都采用公共指令集或子集和協(xié)議來操作,并且通常具有相同的體系結(jié)構(gòu)。一典型的體系結(jié)構(gòu)示于圖1中。一處理部件包括一具有許多寄存器和執(zhí)行部件的處理器核22,核22執(zhí)行程序指令以便操作計(jì)算機(jī)。典型的處理部件包括由IBM銷售的PowerPCTM處理器。處理部件還可以具有一個或多個高速緩存,例如指令高速緩存24和數(shù)據(jù)高速緩存26,它們采用高速存貯設(shè)備實(shí)現(xiàn)。高速緩存通常用于臨時存儲一些可被處理器重復(fù)訪問的值,以便通過避免從存貯器16中加載這些值的較長步驟而加速處理。當(dāng)這些高速緩存與處理器核整體封裝在一個集成芯片28上時,它們被稱作“板上”高速緩存。每個高速緩存與一個高速緩存控制器(未示出)相關(guān)聯(lián),該控制器管理在處理器核與高速緩沖存貯器之間的指令和數(shù)據(jù)傳送。
處理部件可以包括附加高速緩存,例如高速緩存30,由于它支持板上(1級)高速緩存24和26。因此高速緩存30被稱作二級(L2)高速緩存。換句話說,高速緩存30充當(dāng)在存貯器16和板上高速緩存之間的媒介,并且能夠存儲比板上高速緩存所能存儲的大得多的信息(指令和數(shù)據(jù)),但是需要較長的訪問負(fù)擔(dān)。例如,高速緩存30可以是具有256KB或512KB存儲容量的芯片,而該處理器可以是具有64KB總存儲容量的板上高速緩存的IBM PowerPCTM604系列處理器。高速緩存30連接到總線20,并且從存貯器16至處理器核22的所有信息加載必須經(jīng)由高速緩存30。雖然圖1只描述了兩級高速緩存層次,但是也能提供多級高速緩存層次,其中具有許多級(L3、L4等)串行聯(lián)接的高速緩存。如果一個塊存在于給定的處理部件的L1高速緩存中,則該塊也存在于該處理部件的L2、L3高速緩存中。這種特性是公知的包含原理。此后,假定該包含原理適用于涉及本發(fā)明的高速緩存。
在SMP計(jì)算機(jī)中,重要的是提供一種相關(guān)存貯系統(tǒng),即使對所有處理器的每一特定存貯單元的寫操作以某一次序串行化。例如,假定存貯器中的一存儲單元被一系列寫操作采用值1、2、3、4修改。在一高速緩存相關(guān)系統(tǒng)中,所有的處理器將知道按照所示的次序執(zhí)行對一給定存儲單元的寫操作。但是,一處理部件可能丟失對該存貯單元的一個寫操作。讀該存貯單元的一給定處理部件能夠看到序列1、3、4就會丟失對值2的校正。實(shí)現(xiàn)這些性能的系統(tǒng)被稱作是“相關(guān)的”系統(tǒng)。實(shí)際上所有的相關(guān)協(xié)議只針對高速緩存塊的大小的粒度操作。這就是說,相關(guān)協(xié)議以高速緩存塊為基礎(chǔ)控制數(shù)據(jù)的傳送和寫允許,而不單獨(dú)用于任一特定的存貯單元(其后,術(shù)語“數(shù)據(jù)”常常表示存儲器的值,該存儲器值既可以是由程序使用的數(shù)值,也可以是對應(yīng)于程序指令的值)。
本領(lǐng)域的技術(shù)人員公知的是,存在許多實(shí)現(xiàn)高速緩存相關(guān)的協(xié)議和技術(shù)。用于保持相關(guān)的所有這些機(jī)制需要這些協(xié)議只允許一個處理器具有一“許可”,該“許可”允許在任意給定時間點(diǎn)上對一給定存貯單元(高速緩存塊)的寫操作。這種需求的結(jié)果是,只要一處理部件想要對一存貯單元進(jìn)行寫操作,它就必須首先通知所有其它處理部件它想要對該單元進(jìn)行寫操作,并且從所有其它處理部件接收許可以實(shí)現(xiàn)該寫操作。
為了在系統(tǒng)中實(shí)現(xiàn)高速緩存相關(guān),這些處理器通過共用的普通互連(即、總線20)而通信。這些處理器通過該互連傳送表示需要讀或?qū)懘尜A單元的消息。當(dāng)在互連上發(fā)出一操作時,所有其它的處理器“探聽”(監(jiān)視)該操作并且決定它們的高速緩存的狀態(tài)是否能允許該請求的操作繼續(xù)進(jìn)行,并且如果允許,則確定允許的條件。有一些總線事務(wù)需要探聽和跟蹤行動以尊重這些總線事務(wù)并且維持存貯器相關(guān)。探聽操作由限定的探聽請求觸發(fā),前述探聽請求由某些總線信號的確立而產(chǎn)生。僅當(dāng)產(chǎn)生探聽命中并且探聽狀態(tài)機(jī)確定需要附加高速緩存探聽解決出錯區(qū)域的相關(guān)時才中斷指令處理。
在具有多個高速緩存的系統(tǒng)中,因?yàn)橐唤o定存貯器塊的最新有效拷貝可能已從系統(tǒng)存貯器16傳送至系統(tǒng)內(nèi)的一個或多個高速緩存中(如上所述),所以需要這種通信。如果一處理器(例如12a)試圖訪問一在其高速緩存層次中不存在的存貯單元,則含有該存貯單元的實(shí)際(當(dāng)前)值的該塊的校正版本,可能在系統(tǒng)存貯器16中,或者在另一處理部件,例如處理部件12b的許多高速緩存的其中之一中,如果該校正版本在系統(tǒng)的一個或多個其它的高速緩存中,則需要從系統(tǒng)的(這些)高速緩存中而不是系統(tǒng)存貯器中獲得校正值。
例如,假定一處理器,例如12a試圖讀存貯器的一存貯單元。它首先輪詢自己的¨高速緩存(24或26)。如果該塊不在L1高速緩存中,則該請求轉(zhuǎn)送至L2高速緩存(30)。如果該塊不在L2高速緩存中,則該請求轉(zhuǎn)送至更低級的高速緩存,例如L3高速緩存中。如果該塊不在更低級的高速緩存中,則該請求傳送到普通互連(20)上而被服務(wù)。一旦操作被放到普通互連上,則所有其它處理部件都探聽該操作并且確定該塊是否在它們的高速緩存中。如果一給定處理部件在其L1高速緩存中含有由前述的處理部件請求的塊,并且在該塊中的值被修改,則通過包含原理,L2高速緩存和任何更低級的高速緩存也具有該塊的拷貝(但是,由于在該處理器的高速緩存中的拷貝被修改,因此它們的拷貝是舊的)。因此,當(dāng)處理部件的最低級高速緩存(例如L3)探聽該讀操作時,它將確定該請求的塊在較高級的高速緩存中存在并被修改。當(dāng)該事件發(fā)生時,L3高速緩存發(fā)出一消息到普通互連上,以通知該處理單元它必須在稍后的時刻再“重試”其操作,因?yàn)樵摯尜A單元的實(shí)際值在位于存貯器層次頂部的L2高速緩存中,并且必須被檢索出來以便能夠服務(wù)于最初的處理部件的讀請求。
一旦來自最初的處理部件的請求被重試,L3高速緩存就開始一從L1高速緩存中檢索該修改值的進(jìn)程,并且根據(jù)實(shí)現(xiàn)的具體細(xì)節(jié)使該修改值可存在于L3高速緩存、或者主存貯器或者二者之中。為了從較高級高速緩存中檢索該塊,L3高速緩存通過至較高級高速緩存的中間高速緩存的連接,發(fā)送檢索該塊的消息,這些消息沿著處理部件層次向上傳送直至到達(dá)L1高速緩存,并且使該塊沿著該層次向下傳送到最低級(L3或主存貯器),以便能夠服務(wù)來自最初的處理單元的請求。
最初的處理部件最后重新在普通互連上提出該讀請求。但是,這時該修改值已經(jīng)從一處理部件的L1高速緩存中檢索出來并且放入系統(tǒng)存貯器中,因此將滿足來自最初處理器的讀請求。這種情況通常稱作“探聽下推”。一讀請求在普通互連上被探聽,使得處理部件將該塊“下堆”到該層次的底部以便滿足由最初的處理部件提出的讀請求。
當(dāng)處理器想要讀或?qū)憠K時的關(guān)鍵點(diǎn)是,它必須將該需求傳送到系統(tǒng)中的其它處理部件以便保持高速緩存的相關(guān)性。為了實(shí)現(xiàn)這一點(diǎn),高速緩存相關(guān)協(xié)議與高速緩存層次的每一級中的每一塊相關(guān)聯(lián),一狀態(tài)指示器指示塊的當(dāng)前“狀態(tài)”。該狀態(tài)信息用于允許在相關(guān)協(xié)議中的某些優(yōu)化,這些優(yōu)化減少了在普通互連或高速緩存間連接上的消息量。作為這種機(jī)制的一個例子,當(dāng)一處理部件執(zhí)行一讀操作時,它接收一個表示該讀操作以后是否必須重試的消息。如果該讀操作不被重試,則該消息通常還包括允許該處理部件確定任意其它處理部件是否也具有該塊的靜止的現(xiàn)行拷貝(通過由其它最低級的高速緩存給出一用于任意不重試的讀操作的“共享”或“不共享”指示而實(shí)現(xiàn))。因此,一處理部件可以確定系統(tǒng)中的任意其它處理器是否具有該塊的拷貝。如果沒有其它的處理部件具有該塊的現(xiàn)行拷貝,則正在執(zhí)行讀處理的處理部件標(biāo)記該塊的狀態(tài)為“專用”。如果一個塊被標(biāo)志為專用則就可以允許該處理部件后寫(later write)該塊而不用首先與系統(tǒng)中的其它處理部件通信,因?yàn)闆]有其它的處理部件具有該塊的拷貝。因此,一處理器能夠在事先不將其意圖傳送到互連上的情況下讀或?qū)懸淮尜A單元,但只是其中的相關(guān)協(xié)議必須確保沒有其它的處理器對該塊有利害關(guān)系。
前述的高速緩存相關(guān)技術(shù)實(shí)現(xiàn)于稱作“MESI”的具體協(xié)議中,如圖2所示。在該協(xié)議中,一高速緩存塊處于四種狀態(tài)即“M”(修改)、“E”(專用)、“S”(共享)或“I”(無效)中的一種狀態(tài)。在MESI協(xié)議中,每個高速緩存項(xiàng)(例如,32字節(jié)的區(qū)段)具有指示四種可能狀態(tài)中的項(xiàng)狀態(tài)的兩個附加位。根據(jù)項(xiàng)的初始狀態(tài)和請求處理器想要的訪問類型,狀態(tài)可以改變,并且在該請求處理器的高速緩存中為該項(xiàng)設(shè)置一具體狀態(tài)。例如,當(dāng)一個區(qū)段處于修改狀態(tài)時,則該尋址區(qū)段僅在具有該修改區(qū)段的高速緩存中有效,并且修改值沒有被寫回到系統(tǒng)存貯器。當(dāng)一個區(qū)段處于專用狀態(tài)時,則它只存在于所提到的區(qū)段中,并且與系統(tǒng)存貯器一致。如果一個區(qū)段處于共享狀態(tài)時,則它在該高速緩存和至少一個其它高速緩存中是有效的,所有的共享區(qū)段與系統(tǒng)存貯器一致。最后,當(dāng)一個區(qū)段處于無效狀態(tài)時,則它指示該尋址區(qū)段不駐留在該高速緩存中。如圖2所示,如果一區(qū)段處于修改、共享或無效狀態(tài)中的任何一個狀態(tài)時,它能夠根據(jù)特定的總線事務(wù)而在這些狀態(tài)之間傳遞。而一處于專用狀態(tài)的區(qū)段能夠傳遞到任意其它狀態(tài),一區(qū)段只有在它首先為無效狀態(tài)時才能變成專用狀態(tài)。
采用高速緩存相關(guān)協(xié)議能夠?qū)崿F(xiàn)在訪問高速緩存塊時的另一改進(jìn)。這種改進(jìn)稱作“干預(yù)”,它允許高速緩存具有超越存貯器塊的控制以便直接提供在該高速緩存塊中的數(shù)據(jù)至請求其值的另一高速緩存中(對于讀類型的操作),換句話說就是,忽略數(shù)據(jù)寫入系統(tǒng)存貯器并然后該請求處理器再從存貯器中讀回的需求。干預(yù)只能由在其狀態(tài)為修改或?qū)S玫膲K中具有該值的高速緩存執(zhí)行。在這兩種狀態(tài)中,只有一個高速緩存塊具有該值的有效拷貝,所以只需簡單地發(fā)送(寫)該值到總線20上而不必首先將該值寫到系統(tǒng)存貯器。因此,通過避免寫和讀系統(tǒng)存貯器(實(shí)際上包括三個總線操作和兩個存貯器操作)的較長的處理,該干預(yù)過程加速了處理。該過程不僅獲得了較好的等待時間,而且增加了總線帶寬。
作為干預(yù)過程的一部分,用于系統(tǒng)存貯器的存貯控制器也將接收來自具有修改狀態(tài)的高速緩存行的干預(yù)響應(yīng),以便當(dāng)該修改數(shù)據(jù)發(fā)送到其它處理器時,存貯控制器知道以并行方式讀取該修改數(shù)據(jù)。在該過程結(jié)束時,保持該數(shù)據(jù)為修改狀態(tài)的高速緩存將切換到共享狀態(tài),而其它處理器的高速緩存塊也將從無效狀態(tài)轉(zhuǎn)換到共享狀態(tài),因?yàn)樵撔薷臄?shù)據(jù)已經(jīng)拷貝到系統(tǒng)存貯器。在常規(guī)的高速緩存相關(guān)協(xié)議中,所述修改數(shù)據(jù)必須根據(jù)干預(yù)寫到系統(tǒng)存貯器中,并且,雖然可以用并行方式實(shí)現(xiàn)以便加速處理,但在許多情況下仍然是不必要的。例如,如果在第一處理器中的修改高速緩存塊用于發(fā)送數(shù)據(jù)至第二處理器中的一高速緩存,第二處理器可能正好又修改該數(shù)據(jù),則最后將需要至系統(tǒng)存貯器的另一寫操作。如果在第一處理器發(fā)送數(shù)據(jù)和第二處理器修改數(shù)據(jù)之間的時期內(nèi)沒有其它的處理器需要該數(shù)據(jù)(存貯器塊),則對系統(tǒng)存貯器的第一次寫操作(干預(yù)過程的一部分)是不必要的。
一種避免對系統(tǒng)存貯器的不必需的寫操作的方法是,即使第二處理器只想要所發(fā)送的數(shù)據(jù)用于讀操作,也強(qiáng)迫第二處理器將該數(shù)據(jù)保持在修改狀態(tài)。在這種方式中,第二處理器對在將來把數(shù)據(jù)寫回到系統(tǒng)存貯器負(fù)責(zé)。但是,該實(shí)現(xiàn)的主要問題是,干預(yù)(第一)處理器必須設(shè)置其高速緩存行為無效狀態(tài),所以不能具有數(shù)據(jù)共享;在任一時刻只能一個處理器讀它,并且數(shù)據(jù)必須總在處理器之間來回傳送,從而引起額外的總線通信量。因此,需要設(shè)計(jì)一種保持高速緩存相關(guān)性的方法,該方法允許高效率的數(shù)據(jù)干預(yù)而且避免對系統(tǒng)存貯器的不必需的寫操作。如果在允許數(shù)據(jù)共享的同時,該方法允許修改的數(shù)據(jù)在高速緩存之間傳送而不影響存貯器,則這將是另一個優(yōu)點(diǎn)。
因此,本發(fā)明的一個目的是提供一種在多處理器計(jì)算機(jī)系統(tǒng)中保持高速緩存相關(guān)性的改進(jìn)方法。
本發(fā)明的另一目的是提供這樣一種方法,該方法允許高速緩存干預(yù)但避免對系統(tǒng)存貯器的不必需的寫操作。
本發(fā)明還有的另一目的是提供這樣一種方法,該方法允許修改數(shù)據(jù)的干預(yù),而同時又允許該數(shù)據(jù)由一些不同的高速緩存保持在共享狀態(tài)中。
在多處理器計(jì)算機(jī)系統(tǒng)的一種保持高速緩存相關(guān)性的方法中實(shí)現(xiàn)了前述的目的,其中采用一“標(biāo)記”的相關(guān)狀態(tài)表示一特定高速緩存行含有一修改值(即,一個與系統(tǒng)存貯器設(shè)備中的相應(yīng)存貯器塊不一致的值)并且該高速緩存行至少目前負(fù)責(zé)將該修改值寫回到系統(tǒng)存貯器設(shè)備(或者在存貯器層次中的另外一處,即,通過干預(yù))。雖然含有該修改值的一個拷貝的(在系統(tǒng)中支持其它處理部件的)所有其它高速緩存行被分配了一個也表示這些高速緩存行含有該修改值的第二相關(guān)狀態(tài)(共享),但是這些高速緩存行不負(fù)責(zé)保證系統(tǒng)存貯器最后用該修改值更新。當(dāng)該標(biāo)記狀態(tài)被分配給最新近加載該修改值的高速緩存行時,它能夠(水平地)跨越這些高速緩存而移動。歷史相關(guān)狀態(tài)還可以用于表示一特定高速緩存行含有該修改值并且最近發(fā)送該值,使得通過當(dāng)目前的標(biāo)記的高速緩存行被例如作為最近最少使用的算法結(jié)果而被換出時,切換“輔助”歷史狀態(tài)高速緩存行至該標(biāo)記狀態(tài),從而“原始”標(biāo)記的高速緩存行能夠免除回寫責(zé)任。
本發(fā)明也能適用于一種具有許多處理部件的多處理器計(jì)算機(jī)系統(tǒng),其中的所述許多處理部件分成多個組,并且多級高速緩存支持一給定的組,使得標(biāo)記相關(guān)狀態(tài)能夠適用于在支持分離的處理部件組的每一組高速緩存中的一個高速緩存行。標(biāo)記狀態(tài)也能夠在這樣的分組系統(tǒng)的(多個)較低級中實(shí)現(xiàn)。
在一最佳實(shí)施例中,由本發(fā)明采用的每個相關(guān)狀態(tài)具有一關(guān)聯(lián)的優(yōu)先級,使得,當(dāng)產(chǎn)生訪問一個塊的請求時,僅僅具有最高優(yōu)先級的響應(yīng)傳送到該請求處理部件。采用縱橫開關(guān)(cross bar),任何標(biāo)記干預(yù)響應(yīng)只能傳送到能夠由該干預(yù)響應(yīng)所影響的所選擇的高速緩存。
標(biāo)記協(xié)議能夠與其它高速緩存相關(guān)協(xié)議結(jié)合,例如一高速緩存相關(guān)協(xié)議,其中包括一“最近”(Recent)狀態(tài),表示一高速緩存含有一最近被訪問的值的拷貝,以便允許共享干預(yù)?!癟”(Tagged,標(biāo)記)狀態(tài)還可用于分配一沖突優(yōu)先級,該優(yōu)先級用于廢棄來自其它高速緩存的要求一存貯器塊(一DCLaim操作)的沖突請求。(ⅰ)數(shù)據(jù)干預(yù)、(ⅱ)跟蹤寫修改數(shù)據(jù)至存貯器層次的責(zé)任、以及(ⅲ)提供DCLaim沖突優(yōu)先級等三個功能不需要結(jié)合在單一的標(biāo)記狀態(tài)中,但是能夠采用本發(fā)明的較復(fù)雜的實(shí)現(xiàn)獨(dú)立地進(jìn)行。
在下面的詳細(xì)描述的說明書中,本發(fā)明的上述及其它的目的、性能和優(yōu)點(diǎn)將變得明白。
被新性能認(rèn)可的本發(fā)明特征陳述在后附的權(quán)利要求中。但是,發(fā)明本身以及最佳應(yīng)用模式、其它的目的、優(yōu)點(diǎn),將最好通過結(jié)合附圖、參照下面的示例性的實(shí)施例的詳細(xì)描述來理解,其中圖1是現(xiàn)有技術(shù)中的多處理器計(jì)算機(jī)系統(tǒng)的方框圖2是描述現(xiàn)有技術(shù)的高速緩存相關(guān)協(xié)議(MESI)的狀態(tài)圖;圖3是描述本發(fā)明的高速緩存相關(guān)協(xié)議的狀態(tài)圖,其中提供了一種用于修改數(shù)據(jù)的標(biāo)記狀態(tài),該狀態(tài)在不需要將數(shù)據(jù)寫到系統(tǒng)存貯器的情況下允許干預(yù);以及圖4是具有多級高速緩存體系結(jié)構(gòu)的多處理器計(jì)算機(jī)系統(tǒng)的方框圖,該體系結(jié)構(gòu)能夠適于在全局范圍和局部(CPU組)范圍內(nèi)實(shí)現(xiàn)本發(fā)明的標(biāo)記相關(guān)狀態(tài);以及圖5是描述本發(fā)明的高速緩存相關(guān)協(xié)議結(jié)合允許識別最近讀一個值的高速緩存行的相關(guān)協(xié)議的狀態(tài)圖。
本發(fā)明涉及一種在多處理器系統(tǒng),例如圖1的系統(tǒng)中維持高速緩存相關(guān)性的方法,但是本發(fā)明能夠適應(yīng)于不一定是常規(guī)的計(jì)算機(jī)系統(tǒng),即該計(jì)算機(jī)系統(tǒng)可以包括圖1中未示出的新硬件,或者具有用于現(xiàn)存部件的新互連體系結(jié)構(gòu)。因此,本領(lǐng)域的技術(shù)人員將明白,本發(fā)明不限于示于圖中的普通系統(tǒng)。
現(xiàn)在參照圖3,圖中描述了本發(fā)明的高速緩存相關(guān)協(xié)議的一個實(shí)施例的狀態(tài)圖。該協(xié)議類似于圖2中的先有技術(shù)MESI協(xié)議,在該協(xié)議中它包含了相同的四個現(xiàn)有技術(shù)的狀態(tài)(修改、專用、共享和無效),但是它還包含一個新的“T”狀態(tài)(標(biāo)記),該狀態(tài)用于提供一高速緩存塊已被某個處理器修改但還沒有寫入系統(tǒng)存貯器的指示。例如,當(dāng)在一個處理器中的一高速緩存塊處于修改狀態(tài),并且由另一處理器請求一讀操作時,則第一處理器將發(fā)送一修改干預(yù)響應(yīng),而該讀處理器能夠在此后將數(shù)據(jù)保持在T狀態(tài)(第一處理器從修改切換到共享)。該操作能夠?qū)ζ渌奶幚砥髦貜?fù),使得最近讀該修改數(shù)據(jù)的拷貝的高速緩存是保持該值在T狀態(tài)的高速緩存,而所有其它的具有該值的拷貝的處理器保持該值的共享狀態(tài)。這樣,一個高速緩存被“標(biāo)記”以表示它目前負(fù)責(zé)在將來的某一時刻將該修改數(shù)據(jù)寫入存貯器層次,如果需要,則或者通過在一修改干預(yù)響應(yīng)期間發(fā)送到另一個高速緩存,或者寫回到系統(tǒng)存貯器。這種方法減少了對系統(tǒng)存貯器的寫操作的總次數(shù)。
在先有技術(shù)MESI協(xié)議中。讀一修改值的拷貝的一高速緩存將從無效狀態(tài)切換到共享狀態(tài)(而不是切換到T狀態(tài)),并且修改干預(yù)響應(yīng)還會被存貯控制器獲取以便允許該數(shù)據(jù)寫到存貯器。在這里稱作“T-MESI”協(xié)議的本發(fā)明的基本協(xié)議中,存貯控制器忽略該事務(wù),從而釋放了存貯器帶寬。僅當(dāng)需要時,例如根據(jù)最近最少使用(LRU)的高速緩存重新分配算法的結(jié)果,一修改值才被寫入系統(tǒng)存貯器。
當(dāng)采用現(xiàn)有技術(shù)的協(xié)議時,M-E-S-I四個狀態(tài)可以根據(jù)項(xiàng)的初始狀態(tài)和請求處理器想要的訪問類型而改變。在具有下面的連接的本發(fā)明的方法中,其中所述四個狀態(tài)的改變大致與先有技術(shù)MESI協(xié)議相同。如圖3所示,一高速緩存行還能從無效狀態(tài)到標(biāo)記狀態(tài),從標(biāo)記狀態(tài)到無效狀態(tài),以及從標(biāo)記狀態(tài)到共享狀態(tài)。T-MESI協(xié)議的這個實(shí)施例還可以參照表1來理解,表1說明了在三個不同的處理器P0、P1、P2中的一特定高速緩存塊的高速緩存相關(guān)狀態(tài)表1
在第一行中,所有三個處理器都從高速緩存塊處于無效狀態(tài)開始。在第二行中,處理器P0執(zhí)行一具有修改意圖的讀操作(RWITM),因此其高速緩存行從無效變?yōu)樾薷摹F浜?,處理器P1請求讀該高速緩存行;處理器P0干預(yù)并切換到共享狀態(tài),而處理器P1從無效狀態(tài)變到標(biāo)記狀態(tài)(表1的第三行)。然后,處理器P2請求讀該高速緩存行;處理器P1干預(yù)并切換到共享狀態(tài),而處理器P2從無效狀態(tài)變到標(biāo)記狀態(tài)(表1的第四行)。
表1還說明了在T狀態(tài)的一高速緩存行如何可能被強(qiáng)制寫該數(shù)據(jù)至系統(tǒng)存貯器,即使該高速緩存行還沒有被重新分配。當(dāng)處理器允許對一個塊進(jìn)行寫操作時,包括Power PCTM處理器在內(nèi)的一些處理器體系結(jié)構(gòu)允許執(zhí)行一特殊指令,而不是RWITM指令。一個例子就是“DCLaim”指令。在表1的第五行中,處理器P1發(fā)送了一個用于特定高速緩存行的DCLaim的請求;處理器P2探聽該DCLaim,發(fā)送一重試消息,并且嘗試將該數(shù)據(jù)推入到系統(tǒng)存貯器。一旦該推入完成,該高速緩存行就從標(biāo)記狀態(tài)轉(zhuǎn)變到無效,但是在處理器P0和P1中的該高速緩存行保持共享狀態(tài)。在重試后,處理器P2將再發(fā)出DCLaim,它將不再被重試,因此,該高速緩存行將在P0中變?yōu)闊o效,在P1中變成修改狀態(tài)。
可能的是,某種修改值將在所有的高速緩存范圍內(nèi)移動而永遠(yuǎn)不會實(shí)際地寫入系統(tǒng)存貯器。例如,設(shè)想,請求一個值的RWITM的處理器已經(jīng)保持在T狀態(tài)——除了其高速緩存行位于T狀態(tài)以外,在其它處理器中的所有相應(yīng)的高速緩存行都保持在共享狀態(tài),則采用“擁有”該值的高速緩存(該高速緩存位于T狀態(tài))將該值通過干預(yù)發(fā)送后,該請求處理器將切換到無效狀態(tài)。執(zhí)行該RWITM的新處理器被設(shè)置為修改狀態(tài),因此,已經(jīng)預(yù)先保持在T狀態(tài)的該值永遠(yuǎn)不會寫入系統(tǒng)存貯器。
T狀態(tài)具有共享狀態(tài)(由于數(shù)據(jù)在一個或多個其它處理器中保持在共享狀態(tài))和修改狀態(tài)(由于數(shù)據(jù)已經(jīng)被修改并且還沒有寫回系統(tǒng)存貯器)兩種屬性。實(shí)際上,從CPU的觀點(diǎn)看,T狀態(tài)等于S狀態(tài),而從系統(tǒng)總線的觀點(diǎn)看,具有T狀態(tài)的高速緩存行實(shí)質(zhì)上象修改塊一樣對待。
在圖3的實(shí)施例中,“T”狀態(tài)在高速緩存行之間遷移,而在一替換實(shí)施例中,“T”狀態(tài)與修改該值的原始處理器的高速緩存行在一起。換句話說,保持一個值在修改狀態(tài)的一高速緩存行在發(fā)送該數(shù)據(jù)至另一個處理器時將切換到標(biāo)記(Tagged)狀態(tài)(而不是共享狀態(tài))。除了在修改狀態(tài)的高速緩存行能夠到達(dá)標(biāo)記狀態(tài)但不能到達(dá)共享狀態(tài)外,該替換實(shí)施例的狀態(tài)圖與圖3相似。這個替換實(shí)施例在某些結(jié)構(gòu)中是合乎需求的,以便從高速緩存中“老化”(ageout)該值。例如,如果是多級高速緩存(至少到L3),則通過將值從L2高速緩存推入L3高速緩存,與如果系統(tǒng)必須等待以便從L2級中檢索該值相比,該值能夠在以后更快地發(fā)送到其它的L3高速緩存。根據(jù)背景技術(shù)中的方法,例如根據(jù)LRU重新分配的結(jié)果,不響應(yīng)一特定總線操作,能夠執(zhí)行這種值的推入,因此獲得更有效的整體操作。
在本發(fā)明中,能夠建立協(xié)議以便在多處理器計(jì)算機(jī)系統(tǒng)中從所有與其它處理器相關(guān)聯(lián)的高速緩存的探聽者傳送具體的相關(guān)響應(yīng)至一個請求讀操作的處理器。用于本發(fā)明的一個實(shí)施例的這些響應(yīng)按照表2作出定義
表2
這些信號采用3位探聽響應(yīng)的形式,其值(地址響應(yīng))和定義顯示在表2中。這些信號被編碼以表示在該地址使有期后的探聽結(jié)果。表2顯示了用于共享行和清除(無效)行的響應(yīng),以及重試響應(yīng);這三個響應(yīng)在現(xiàn)有技術(shù)中基本上是公知的。表2還顯示了“標(biāo)記干預(yù)”、“共享干預(yù)”、“遠(yuǎn)程狀態(tài)(remote status)”和“重運(yùn)行”等四個新的響應(yīng)。當(dāng)一高速緩存塊保持一個值在修改或者標(biāo)記狀態(tài)時使用標(biāo)記干預(yù)響應(yīng),表示它能夠干預(yù)該值,但是請求該值的新高速緩存塊必須臨時負(fù)責(zé)拷貝該值到系統(tǒng)存貯器(如下面根據(jù)可選擇的“T”狀態(tài)的實(shí)現(xiàn)所討論的那樣,如果需要,可提供不同的響應(yīng)用于修改和標(biāo)記塊)。
另外的三個響應(yīng)不直接關(guān)系到本發(fā)明。共享干預(yù)響應(yīng)允許一個塊保持該值的有效拷貝以便發(fā)送它(見下面討論的R-MESI協(xié)議)。僅用于讀操作的遠(yuǎn)程狀態(tài)響應(yīng)用于表示該讀操作將是成功的,而共享或者專用相關(guān)響應(yīng)將在后面采用另一信號返回該數(shù)據(jù)。當(dāng)相關(guān)響應(yīng)不能夠被立即確定并且請求必須發(fā)送到層次中的低層時使用重運(yùn)行響應(yīng)。重運(yùn)行響應(yīng)不同于重試響應(yīng),在其中,在前的消息必須重新發(fā)出并且必須具有相同的標(biāo)識符,以便能夠與預(yù)先發(fā)送的消息匹配。
如表2所示,一個優(yōu)先權(quán)值還可以與每個響應(yīng)相關(guān)聯(lián),以便允許系統(tǒng)邏輯在定義對請求處理器的單一響應(yīng)中確定哪個響應(yīng)應(yīng)該獲得優(yōu)先。例如,如果一個或多個高速緩存發(fā)出標(biāo)記響應(yīng)(優(yōu)先級2),一個或多個高速緩存發(fā)出重試響應(yīng)(優(yōu)先級1),則重試響應(yīng)將獲得優(yōu)先級并且系統(tǒng)邏輯將對請求處理器發(fā)出重試響應(yīng)。該系統(tǒng)邏輯可以駐留在各種部件中,例如一系統(tǒng)控制中心部件,或者甚至在存貯控制器中。
示于表2的優(yōu)先級初值為重試響應(yīng)提供了最高優(yōu)先級。也可提供一替換優(yōu)先級方案以增強(qiáng)T-MESI協(xié)議的使用。在由表2的圓括號中的優(yōu)先級數(shù)字表示的該替換方案中,共享干預(yù)響應(yīng)具有最高優(yōu)先級,接下來是重試響應(yīng),再接下來是標(biāo)記干預(yù)響應(yīng);所有其它的優(yōu)先級與第一方案相同,在該替換方案中,共享干預(yù)響應(yīng)將總是優(yōu)先于其它響應(yīng),這有許多可接受的理由。首先,如果一高速緩存行將一個值(數(shù)值或指令)保持在下述的用于共享干預(yù)的“R”狀態(tài),則沒有其它的高速緩存可以將與相同地址對應(yīng)的一個值保持在修改或標(biāo)記狀態(tài),因此很明顯,將沒有其它高速緩存能夠發(fā)出標(biāo)記干預(yù)響應(yīng)。而且,如果任意其它高速緩存發(fā)出一重試,則根據(jù)該重試的來自相同高速緩存的任意后面的響應(yīng)將至多不過是共享,這還意味著首先發(fā)出共享干預(yù)響應(yīng)是可接收的。
本發(fā)明可以選擇地實(shí)現(xiàn)于其中一些高速緩存支持T-MESI協(xié)議而另外的高速緩存不支持該協(xié)議的計(jì)算機(jī)系統(tǒng)中。例如,最初制造和銷售的一多處理器計(jì)算機(jī)系統(tǒng)可以有四個處理部件安裝在系統(tǒng)電路板上,但是有另外四個插座允許以后增加另外的處理部件。這些原始處理部件(或者它們的高速緩存控制器)可以比較便宜并因此不提供對T-MESI協(xié)議的支持,即使系統(tǒng)邏輯(系統(tǒng)控制中心部件)支持該協(xié)議。但是,例如通過采用一位標(biāo)志,這些原始處理部件能夠經(jīng)濟(jì)地提供表示它們是否支持該協(xié)議的裝置,該裝置通知系統(tǒng)邏輯T-MESI支持的存在或不存在。然后,如果加到那些插座上的新處理部件具有支持T-MESI協(xié)議的高速緩存,則系統(tǒng)邏輯能夠采用該標(biāo)志在這些高速緩存之間區(qū)分,并且將該協(xié)議用于適當(dāng)?shù)奶幚聿考?br> 為了進(jìn)一步解釋上述內(nèi)容,設(shè)想一個系統(tǒng)具有一些支持T-MESI協(xié)議的處理部件和一些不支持T-MESI協(xié)議的處理部件。當(dāng)每個部件發(fā)出一讀請求時,該請求包括所述標(biāo)識T-MESI支持的標(biāo)記。如果一個值(由任一類處理部件)在一高速緩存行中保持為修改狀態(tài),并且該值被一不支持T-MESI協(xié)議的處理部件請求,則系統(tǒng)邏輯將發(fā)出一修改干預(yù)響應(yīng)至該請求處理器和存貯控制器;在請求處理器中的該高速緩存行將從無效狀態(tài)切換到共享狀態(tài),并且在干預(yù)過程中存貯控制器將獲取該值并將其存儲在系統(tǒng)存貯器中。但是,如果該請求處理部件支持T-MESI,則系統(tǒng)邏輯將發(fā)出一標(biāo)記干預(yù)響應(yīng)(它將來自一非允許的高速緩存的修改干預(yù)響應(yīng)轉(zhuǎn)換成一標(biāo)記干預(yù)響應(yīng));在請求處理部件中的該高速緩存行將從無效切換到標(biāo)記,而存貯控制器將忽視該事務(wù)。在這兩種情況下,在發(fā)送處理部件中的高速緩存行從修改狀態(tài)切換到共享。該結(jié)構(gòu)允許計(jì)算機(jī)系統(tǒng)具有任意支持T-MESI協(xié)議的處理部件存在的優(yōu)點(diǎn),而不管混合T-MESI和一般MESI高速緩存的理由。該協(xié)議的這個可選擇實(shí)現(xiàn)還能用于診斷目的。
在不考慮使用一標(biāo)志有選擇地實(shí)現(xiàn)基于請求處理器的標(biāo)記狀態(tài)(異質(zhì)支持)的情況下,可以提供一系統(tǒng)標(biāo)志以便允許或禁止在全局基礎(chǔ)上的標(biāo)記狀態(tài),即,在系統(tǒng)邏輯中采用一位字段。例如,主處理器(請求處理器)可以支持T-MESI協(xié)議,但是系統(tǒng)可能希望在存貯器層次中向下傳送該修改值,例如傳送到縱向的L3高速緩存。
如上所述,對于那些沒有示于圖1和圖2中的狀態(tài)和操作,其轉(zhuǎn)換和相關(guān)響應(yīng)根據(jù)現(xiàn)有技術(shù)的MESI協(xié)議實(shí)現(xiàn)。根據(jù)在圖3中實(shí)現(xiàn)的T-MESI協(xié)議進(jìn)一步指出下列特點(diǎn)如果一項(xiàng)目前處于無效狀態(tài),則它只能切換到T狀態(tài)(如果它已經(jīng)處于共享狀態(tài),則它將僅保持在共享狀態(tài),而如果一高速緩存將一個值保持在T狀態(tài),則在任意其它的高速緩存中它不能保持在M或者E狀態(tài));而一個標(biāo)記項(xiàng)只能(根據(jù)修改干預(yù)響應(yīng))切換到共享狀態(tài)、(根據(jù)重新分配或DC Laim推入)切換到無效狀態(tài)、或者切換到修改狀態(tài)(如果同一處理器再修改該已經(jīng)修改的數(shù)據(jù))。
利用該新的T-MESI協(xié)議,如果采用最近最少使用的高速緩存替換機(jī)制,則一個塊的所有權(quán)遷移到最后讀該數(shù)據(jù)的高速緩存,這將是有保持最近使用的附加好處并且借此減小重新分配的可能性。高速緩存的“T”狀態(tài)還能有利地用于其它應(yīng)用,例如,一智能輸入/輸出(I/O)控制器中斷最近讀一存貯I/O狀態(tài)的存儲單元的處理器/高速緩存,由于該處理器/高速緩存很可能已經(jīng)存貯了該I/O設(shè)備驅(qū)動器代碼,因此,與在需要將該代碼讀入其高速緩存的另一處理器中相比能夠更快地執(zhí)行該代碼。當(dāng)然,本發(fā)明的特別優(yōu)點(diǎn)在于,它允許共享已被修改和干預(yù)的數(shù)據(jù)。
“T”狀態(tài)的另一方面是,當(dāng)在該狀態(tài)中的一高速緩存行被重新分配時,通過普通互連,該重新分配對所有的處理器是可見的。這種重新分配的可見性提供的另外的優(yōu)點(diǎn)就是,它允許支持歷史高速緩存狀態(tài)信息。設(shè)想一個與表1所述相似的例子,其中三個處理器具有各自的開始于無效狀態(tài)的高速緩存行。在第一處理器執(zhí)行一RWITM操作時,其高速緩存行從無效變?yōu)樾薷臓顟B(tài),而當(dāng)?shù)诙幚砥髟诖撕笳埱笤摳咚倬彺嫘袝r,第一處理器干預(yù)該數(shù)據(jù),將其高速緩存行切換到共享狀態(tài),并且第二處理器的高速緩存行從無效狀態(tài)變換到標(biāo)記狀態(tài)(類似于表1的最初的三行)。但是現(xiàn)在,第一處理器將其高速緩存行標(biāo)記為一種特殊形式的共享狀態(tài),它可稱作“ST”(共享-標(biāo)記)。然后,如果第三處理器重新分配在“T”狀態(tài)的高速緩存行(例如,通過LRU機(jī)制),則第一處理器將知道該重新分配并且能夠通過改變其在“ST”狀態(tài)的高速緩存行至一不同狀態(tài)而響應(yīng),該不同狀態(tài)依賴于具體的實(shí)現(xiàn)。例如,標(biāo)記高速緩存行能夠?qū)懙较到y(tǒng)存貯器,而在“ST”狀態(tài)的高速緩存行能夠切換到一稱作“R”狀態(tài)(最近訪問)的特定狀態(tài),該特定狀態(tài)能夠用于共享數(shù)據(jù)的干預(yù)?!癛”狀態(tài)下面將進(jìn)一步討論,并且在1997年4月14日提交的序號為08/839,557的美國專利申請中亦有論述,因此該申請將被結(jié)合于此。
在一替換實(shí)現(xiàn)中,不是根據(jù)重新分配將來自“T”狀態(tài)的高速緩存行的修改數(shù)據(jù)值寫到系統(tǒng)存貯器,而是在“ST”狀態(tài)的高速緩存行能夠簡單地回復(fù)到“T”狀態(tài),從而省略該值的推入。由于在共享-標(biāo)記塊中的數(shù)據(jù)是相同的,因此也不需要從標(biāo)記高速緩存塊中拷貝數(shù)據(jù);僅僅修改高速緩存的狀態(tài)。這些步驟描述于表3的最初四行中
表3
因此,共享-標(biāo)記狀態(tài)的使用允許計(jì)算機(jī)系統(tǒng)在一標(biāo)記高速緩存行重新分配后保持干預(yù),借此改進(jìn)了系統(tǒng)性能。
最初四行說明了“ST”狀態(tài)的使用產(chǎn)生于在“M”狀態(tài)中的高速緩存塊的轉(zhuǎn)換,而表3的最低四行說明了一標(biāo)記高速緩存塊如何也能切換到共享-標(biāo)記狀態(tài)。第五和第六行顯示了在處理器P1的高速緩存塊從“T”狀態(tài)切換到“ST”狀態(tài)的情況下“T”狀態(tài)高速緩存塊從處理器至處理器的遷移;處理器P0中的以前為共享-標(biāo)記狀態(tài)的高速緩存塊切換到共享狀態(tài)。在第七行中,處理器P2中的高速緩存塊被重新分配,使得處理器P1中的高速緩存塊從“ST”狀態(tài)切換回“T”狀態(tài)。此時,沒有高速緩存塊處于“ST”狀態(tài),即使一個高速緩存塊處于“S”狀態(tài)而另一個處于“T”狀態(tài)(如果更早地重新分配共享-標(biāo)記高速緩存行,則也能產(chǎn)生這種情況)。不過,例如在最后一行中處理器P2請求另一個讀操作時,“ST”狀態(tài)還能重新出現(xiàn)。
通過使在“T”狀態(tài)的高速緩存行廣播一適當(dāng)?shù)闹甘疽蕾囋凇癝T”狀態(tài)的高速緩存塊避免系統(tǒng)存貯器等操作的需求的消息,能夠?qū)崿F(xiàn)該方法。如果該消息被在“ST”狀態(tài)的高速緩存行接收,則該高速緩存行發(fā)送一適當(dāng)?shù)捻憫?yīng),并且在“T”狀態(tài)的高速緩存行簡單地被重新分配。如果沒有響應(yīng)(即,沒有高速緩存行處于“ST”狀態(tài)),則具有標(biāo)記高速緩存行的處理器必須根據(jù)重新分配將該修改值寫入系統(tǒng)存貯器。
在前述的共享-標(biāo)記狀態(tài)的實(shí)現(xiàn)中,僅有一個高速緩存行能夠根據(jù)標(biāo)記高速緩存行的重新分配而被推進(jìn)到一不同的狀態(tài)。在比較復(fù)雜的實(shí)現(xiàn)中,能夠提供多級歷史高速緩存信息。例如,代替在任意給定時刻僅存在一個共享-標(biāo)記高速緩存塊的是,可具有多個處于共享-標(biāo)記狀態(tài)的高速緩存塊,通過根據(jù)其歷史等級而為每個共享-標(biāo)記高速緩存加上一序列號,能夠方便地完成本實(shí)現(xiàn),即,“ST1”狀態(tài)用于剛剛發(fā)送數(shù)據(jù)至“T”高速緩存行的高速緩存行,“ST2”狀態(tài)用于在以前發(fā)送數(shù)據(jù)至“ST1”高速緩存行的高速緩存行,“ST3”狀態(tài)用于在以前發(fā)送數(shù)據(jù)至“ST2”高速緩存行的高速緩存行,等等。當(dāng)重新分配一標(biāo)記高速緩存行時,則所有的共享-標(biāo)記高速緩存行被推進(jìn)一級,如表4所示表4
在表4的最初三行中,與表1和表3類似,處理器P0的高速緩存行變?yōu)樾薷臓顟B(tài)然后發(fā)送該值到變?yōu)闃?biāo)記狀態(tài)的處理器P1的高速緩存行。處理器P0的高速緩存行切換到共享-標(biāo)記第一級。在接下來的兩行中,標(biāo)記狀態(tài)高速緩存行遷移到處理器P2和處理器P3,而先前的標(biāo)記狀態(tài)高速緩存行切換到共享-標(biāo)記第一級,處于共享-標(biāo)記第一級的任意高速緩存行切換到共享-標(biāo)記第二級,而在第五行中,在處理器P0中的的高速緩存行從共享-標(biāo)記第二級切換到共享-標(biāo)記第三級。在第六行中,在處理器P3中的高速緩存行根據(jù)LRU機(jī)制被重新分配;在處理器P2中的“ST1”高速緩存行切換到“T”狀態(tài),在處理器P1中的“ST2”高速緩存行切換到“ST1”狀態(tài)而在處理器P6中的“ST3”高速緩存行切換到“ST2”狀態(tài)。
關(guān)于共享-標(biāo)記狀態(tài)級的順序標(biāo)識符的使用與LRU重新分配機(jī)制一起也實(shí)現(xiàn)了改進(jìn)的性能,因?yàn)樗鼫p小了一在共享-標(biāo)記特定級狀態(tài)中的高速緩存行將被重新分配的可能,并且因此增加了該修改值將保留在水平高速緩存結(jié)構(gòu)中的總的可能性。對歷史高速緩存信息的級數(shù)的唯一限制是在用于高速緩存行的高速緩存相關(guān)狀態(tài)字段中的位數(shù)。
本發(fā)明的前面的描述一般適用于任意級的高速緩存,例如L2、L3,等等,但是在多級高速緩存的情況下,本發(fā)明還能方便地用于一稍微不同的模式。參照圖4,所示的多處理器計(jì)算機(jī)系統(tǒng)40包括兩個CPU組42a和42b。CPU組42a具有四個CPU 44a、44b、44c、和44d,每一個具有一處理器核以及板上(L1)指令和數(shù)據(jù)高速緩存、以及L2高速緩存。四個CPU 44a、44b、44c、44d的L2高速緩存在連接到共享的L3高速緩存46a,該L3高速緩存通過普通互連或總線50連接到系統(tǒng)存貯器(RAM)48。類似地,CPU組42具有四個CPU 44e、44f、44g、44h,每一個也都具有一處理器核以及板上(L1)指令和數(shù)據(jù)高速緩存,以及L2高速緩存。這四個CPU 44e、44f、44g、44h的L2高速緩存連接到另一共享的L3高速緩存46b,該L3高速緩存也通過總線50連接到存貯器48。在該T-MESI協(xié)議的一層次變化中,最多三個相應(yīng)的高速緩存行能夠處于標(biāo)記狀態(tài)在CPU 44a、44b、44c、44d的L2高速緩存中的一個高速緩存行;在CPU 44e、44f、44g、44h的L2高速緩存中的一個高速緩存行,以及在兩個L3高速緩存46a、46b之間的一個高速緩存行。
考慮下面的例子,其中,在CPU 44a-44h中的所有相應(yīng)高速緩存行都開始于無效狀態(tài)。處理器44a執(zhí)行一RWITM操作,因此其高速緩緩存行從無效狀態(tài)變到修改狀態(tài);在L3高速緩存46a中的相應(yīng)高速緩存行也從無效變成修改狀態(tài)。然后,處理器44b請求對該高速緩存行的讀操作;處理器44a干預(yù)并且其高速緩存行(L2)切換到共享狀態(tài),而處理器44b的高速緩存行(L2)從無效狀態(tài)變成標(biāo)記狀態(tài)。在L3高速緩存46a中的高速緩存行保持修改狀態(tài)。然后,處理器44e請求對該高速緩存行的讀操作;處理器44b干預(yù),但是其高速緩存行(L2)保持在標(biāo)記狀態(tài),因?yàn)樗幱谂c處理器44e不同的CPU組。在處理器44e中的高速緩存行L27仍然從無效狀態(tài)切換到標(biāo)記狀態(tài)。而且,由于該干預(yù)數(shù)據(jù)已經(jīng)經(jīng)由兩個L3高速緩存?zhèn)魉停虼?,在L3高速緩存46a中的高速緩存行從修改狀態(tài)切換到共享,而在L3高速緩存46b中的高速緩存行從無效切換到標(biāo)記狀態(tài)。然后,如果處理器44f請求對該高速緩存行的讀操作,則它能夠通過處理器44e的高速緩存行(L2)發(fā)送。在這種情況下,處理器44e的高速緩存行(L2)從標(biāo)記狀態(tài)切換到共享狀態(tài)而處理器44f的高速緩存行(L2)從無效狀態(tài)切換到標(biāo)記狀態(tài)。這些步驟描述在表5中表5
在表5的最后一行中,每個CPU組有一個處于“T”狀態(tài)的高速緩存行,并且L3高速緩存的其中之一也有一個高速緩存行處于“T”狀態(tài)。這種情況允許該修改數(shù)據(jù)在L2級上從一局部處理器(即,在與請求處理器相同組內(nèi)的一個)發(fā)送,從而進(jìn)一步增強(qiáng)了性能。所以,如果此后處理器44c請求對該高速緩存行的讀操作,則該請求將由處理器44b的高速緩存行(L2)填寫,而如果此后處理器44g請求對該高速緩存行的讀操作,則該請求將由處理器44f的高速緩存行(L2)填寫;兩個操作都在L2級上進(jìn)行,而沒有任何由L3高速緩存46a、46b執(zhí)行的動作。如果提供了兩個以上的CPU組,則“T”高速緩存行能夠類似地在附加的L3高速緩存之間遷移。該原理能夠擴(kuò)展到具有多于三個高速緩存級(L1、L2、L3)的高速緩存結(jié)構(gòu),“T”狀態(tài)不必在所有級中實(shí)現(xiàn)。
本發(fā)明還能與MESI協(xié)議的其它變形結(jié)合,例如上面提到并在前述的美國專利申請No.08/839,557中討論的R MESI協(xié)議。根據(jù)該協(xié)議,一最近狀態(tài)用于讀共享數(shù)據(jù)的最后高速緩存,以便允許共享干預(yù)響應(yīng)。因此能夠設(shè)計(jì)一組合RT-MESI協(xié)議,其一個實(shí)施例示于圖5。在該混合協(xié)議中,一旦修改值發(fā)送到存貯器層次中的某一其它存貯單元(即發(fā)送到另一高速緩存或系統(tǒng)存貯器),則處于標(biāo)記狀態(tài)的高速緩存行就能夠切換到最近狀態(tài),并且類似地,根據(jù)到另一存貯單元的發(fā)送,處于修改狀態(tài)的高速緩存行切換到最近狀態(tài)。一個例子示于表6中。
表6
在表6中,在處理器P0、P1、P2中的三個相應(yīng)高速緩存行都開始于無效狀態(tài)并且(類似于表1),當(dāng)處理器P0對其相應(yīng)存貯器塊執(zhí)行一RWITM時,其高速緩存塊變成修改狀態(tài)。當(dāng)處理器P0執(zhí)行一讀操作時,其相應(yīng)的高速緩存行仍然切換到標(biāo)記狀態(tài),但是現(xiàn)在在處理器P0中的高速緩存行切換到最近狀態(tài),而不是共享狀態(tài)(表6的第三行)。此后,當(dāng)處理器P2執(zhí)行一讀操作時,其高速緩存行切換到標(biāo)記狀態(tài),而同時處理器P1的高速緩存行切換到最近狀態(tài),處理器P0的高速緩存行切換到共享狀態(tài)(表6的第四行)。然后,當(dāng)處理器P2重新分配該塊(例如,由于LRU算法的結(jié)果)時,處理器P1仍然保持該值在“R”狀態(tài)。這樣,處理器P1能夠在將來通過共享干預(yù)響應(yīng)發(fā)送該值。在該協(xié)議的另一個變形中,唯一狀態(tài)能夠被忽略并實(shí)際上由最近狀態(tài)代替。
本領(lǐng)域的技術(shù)人員將明白的是,更復(fù)雜形式的RT-MESI協(xié)議是可能的,例如,一種采用前述“ST”狀態(tài)的混合版本,其中,根據(jù)目前保持該值在“T”狀態(tài)的高速緩存行的重新分配,在“ST”狀態(tài)的高速緩存行切換到“R”狀態(tài)(而不是“T”狀態(tài)),從而假定該值被寫回系統(tǒng)存貯器。采用由多個共享標(biāo)記狀態(tài)提供的歷史高速緩存信息能夠設(shè)計(jì)類似的實(shí)施例。而且,該RT-MESI協(xié)議能夠利用圖4的全局/局部高速緩存結(jié)構(gòu)實(shí)現(xiàn)。例如,假定,處理部件44d的局部高速緩存保持該值在“M”狀態(tài),并且然后發(fā)送該值到處理部件44h。如前所述,在處理部件44h中的高速緩存行將從無效切換到標(biāo)記狀態(tài),但是現(xiàn)在,處理部件44d中的高速緩存行能夠從修改狀態(tài)切換到最近狀態(tài)。
“T”狀態(tài)和“R”狀態(tài)二者都提供了一種用于從共享一個值的一組高速緩存塊中唯一標(biāo)識一高速緩存塊的機(jī)制。如上所述,這些狀態(tài)的方式便于采用干預(yù)塊。這種塊的唯一標(biāo)記還有其它的優(yōu)點(diǎn)。一個優(yōu)點(diǎn)涉及前面提及的DCLaim操作。該操作能夠?qū)嶋H上同時從許多處理器中發(fā)出,從而導(dǎo)致沖突?!癟”狀態(tài)可以用于分配一沖突優(yōu)先級,該優(yōu)先級取消來自其它高速緩存的沖突DCLaim請求。通過提供這種沖突優(yōu)先級,來自“T”狀態(tài)塊的DClaim操作還能夠被登記(例如,放在一用于最后廣播到存貯器層次的剩余部分的高速緩存操作隊(duì)列中),但是DCLaim存儲指令能夠立即執(zhí)行,這樣有助于系統(tǒng)的整體更快地操作,如美國專利申請No.08/024,587中所述。
因此,雖然“T”狀態(tài)可以方便地用于(ⅰ)數(shù)據(jù)干預(yù),(ⅱ)寫修改數(shù)據(jù)至存貯器層次的跟蹤責(zé)任,以及(ⅲ)提供DCLaim沖突優(yōu)先級,但這三個功能不需要合并在一個相關(guān)狀態(tài)中,下面,表7說明了一更復(fù)雜的相關(guān)協(xié)議,其中這些功能被獨(dú)立地實(shí)現(xiàn)表7<
>在表7中,左邊的列表示一特定高速緩存塊的狀態(tài),而右邊的列表示在其它水平高速緩存中相應(yīng)塊的可能相關(guān)狀態(tài)。該協(xié)議變形提供了十五種相關(guān)狀態(tài),所以需要四位用于相關(guān)字段。上面提到的三個功能獨(dú)立地分配如下。首先,具有下標(biāo)“D”的任意相關(guān)狀態(tài)(QD、QDT、RD、RDT、SD或SDT)被允許公布DC Laim操作(即,如果出現(xiàn)沖突DC Laim請求,則這種塊將具有沖突優(yōu)先級)。第二,具有下標(biāo)“T”的任意相關(guān)狀態(tài)(QT、QDT、RT、RDT、ST或SDT)負(fù)責(zé)在存貯器層次中向下寫該修改值。第三,任意“R[x]”相關(guān)狀態(tài)(R、RD、RT或RDT)有權(quán)利干預(yù)該值。“Q[x]”相關(guān)狀態(tài)(Q、QD、QT或QDT)用于在不存在“R[x]”狀態(tài)時提供干預(yù),即,“R[x]”狀態(tài)允許第一級干預(yù),而“Q[x]”狀態(tài)(歷史的)允許第二級干預(yù)?!癏”狀態(tài)是下述的懸停(Hover)狀態(tài)。該實(shí)施例不使用“E”狀態(tài)。
雖然上述的三個功能被獨(dú)立地實(shí)現(xiàn),但是仍然能夠與特定相關(guān)狀態(tài)結(jié)合。干預(yù)和回寫責(zé)任兩個功能被結(jié)合在狀態(tài)RT和QT中。干預(yù)和DCLaim優(yōu)先級兩個功能被結(jié)合在狀態(tài)RD和QD中?;貙懾?zé)任和DCLaim優(yōu)先級兩個功能被結(jié)合在狀態(tài)SDT中。全部三個功能都結(jié)合在狀態(tài)QDT和RDT中。這三個功能的獨(dú)立性能夠通過用一數(shù)據(jù)流引擎設(shè)置系統(tǒng)位來控制。該原理也能適用于支持分組CPU的高速緩存。
最后,本發(fā)明還特別能兼容“縱橫開關(guān)”(cross-bars)的使用。先有技術(shù)的高速緩存設(shè)計(jì)采用地址交叉和數(shù)據(jù)交叉二者以增強(qiáng)通信。一般地,高速緩存沒有點(diǎn)對點(diǎn)的通信,但是必須以廣播的方式發(fā)出請求和響應(yīng)至存貯器層次中的其它存儲單元??v橫開關(guān)僅僅是控制請求和響應(yīng)至總線上的不同路徑的一些開關(guān)或中繼,其目的是更有效地使用總線。換句話說,所有的高速緩存互連到縱橫開關(guān),并且保持一隊(duì)列以便高速緩存操作能夠均勻地分配于總線的各路徑之間,從而產(chǎn)生更大的總線帶寬。系統(tǒng)控制器可以控制縱橫開關(guān)。一給定高速緩存(例如L2)必須通知縱橫開關(guān)控制器該高速緩存應(yīng)該看到關(guān)于一給定標(biāo)記的操作。
由于某些地址和數(shù)據(jù)操作可能只提供給需要這些操作的設(shè)備,因此T-MESI協(xié)議可以與交叉一起使用。設(shè)想四個處理部件的例子,其中一個處理部件具有一處于“T”狀態(tài)的高速緩存塊,另一個具有處于“ST”狀態(tài)的相應(yīng)塊,而其它兩個具有處于“I”狀態(tài)的相應(yīng)塊。當(dāng)后面的兩個處理器的其中之一請求對該值的一個讀操作時,系統(tǒng)邏輯能夠確定最高優(yōu)先級響應(yīng)(標(biāo)記干預(yù))只應(yīng)該發(fā)送至四個處理器中的三個。因此,該地址操作不提供給第四個處理器(其高速緩存塊處于“I”狀態(tài)的非請求處理器)。類似地,數(shù)據(jù)交叉能夠用于僅僅將該值本身提供給請求處理器。如果采用其標(biāo)記干預(yù)響應(yīng)優(yōu)先于重試響應(yīng)的一優(yōu)先級方案,則該響應(yīng)可能需要發(fā)送到重試處理器。
雖然本發(fā)明已經(jīng)參照特定實(shí)施例進(jìn)行了描述,但是該描述不能被看作一種限制。根據(jù)本發(fā)明的描述,對本領(lǐng)域的技術(shù)人員而言,所公開的實(shí)施例的各種修改以及本發(fā)明的替換實(shí)施例將變得很明顯。例如,本協(xié)議能夠與除R-MESI協(xié)議之外的其它高速緩存相關(guān)協(xié)議結(jié)合;美國專利申請No.08/024,610描述了一種“H-MESI”協(xié)議,其中一高速緩存行操作在“懸?!?Hover)狀態(tài)以等待有效數(shù)據(jù)的傳送,并且,例如通過當(dāng)一處于“H”狀態(tài)的高速緩存行加載有效數(shù)據(jù)時使該懸停高速緩存行切換到“ST”狀態(tài),H-MESI協(xié)議能夠與本T-MESI協(xié)議相結(jié)合。因此,可以預(yù)料的是,在不脫離由所附的權(quán)利要求定義的本發(fā)明的范圍或精神的情況下可以作出這樣的修改。
權(quán)利要求
1.一種在具有多個處理部件的多處理器計(jì)算機(jī)系統(tǒng)中保持高速緩存相關(guān)性的方法,每個處理部件具有至少一個高速緩存,其特征在于包括下列步驟拷貝一個與一存貯器塊相關(guān)的值至分別位于第一高速緩存和第二高速緩存中的第一高速緩存塊和第二高速緩存塊,其中該第一高速緩存支持第一處理部件,該第二高速緩存支持第二處理部件;為第一高速緩存塊分配第一相關(guān)狀態(tài)以表示第一高速緩存塊含有該值的一共享拷貝并且將排它地提供該值;以及為第二高速緩存塊分配第二相關(guān)狀態(tài)以表示第二高速緩存塊含有該值的一共享拷貝并且具有優(yōu)先于任何要求該存貯器塊的沖突請求的沖突優(yōu)先級。
2.如權(quán)利要求1的方法,其特征在于,所述值已經(jīng)相對于在該存貯器塊中的較舊的值而被修改,并且還包括步驟拷貝該修改值至位于支持第三處理部件的第三高速緩存中的第三高速緩存塊;以及為第三高速緩存塊分配第三相關(guān)狀態(tài)以表示第三高速緩存塊含有該修改值的一共享拷貝并且負(fù)責(zé)將該修改值寫回至所述存貯器塊。
3.如權(quán)利要求1的方法,其特征在于還包括從第一高速緩存塊提供該值至位于支持第三處理部件的第三高速緩存中的第三高速緩存塊的步驟。
4.如權(quán)利要求1的方法,其特征在于還包括步驟發(fā)出與另一個高速緩存塊相關(guān)的第一請求以要求所述存貯器塊用于將來的修改;發(fā)出與所述第二高速緩存塊相關(guān)的第二請求以要求所述存貯器塊用于將來的修改,使得第二請求與第一請求沖突;以及根據(jù)所述發(fā)出第二請求的步驟取消第一請求。
5.如權(quán)利要求2的方法,其特征在于,還包括從所述第三高速緩存塊將該修改值寫入所述存貯器塊。
6.一種計(jì)算機(jī)系統(tǒng),包括一系統(tǒng)存貯器設(shè)備;一連接到所述系統(tǒng)存貯器設(shè)備的總線;多個連接到所述總線的處理部件,每個所述處理部件具有至少一個用于存儲來自所述系統(tǒng)存貯設(shè)備的值的高速緩存塊;以及高速緩存相關(guān)裝置,該裝置用于(ⅰ)拷貝一與所述系統(tǒng)存貯設(shè)備的一存貯器塊相關(guān)的值至分別與第一處理部件和第二處理部件相關(guān)的第一高速緩存塊和第二高速緩存塊,(ⅱ)為所述第一高速緩存塊分配第一相關(guān)狀態(tài)以表示所述第一高速緩存塊含有該值的一共享拷貝并且將排它地提供該值;以及(ⅲ)為所述第二高速緩存塊分配第二相關(guān)狀態(tài)以表示所述第二高速緩存塊含有該值的一共享拷貝并且具有優(yōu)先于任何要求所述存貯器塊的沖突請求的沖突優(yōu)先級。
7.如權(quán)利要求6的計(jì)算機(jī)系統(tǒng),其特征在于,該值已經(jīng)相對于在所述存貯器塊中的較舊的值而被修改;以及所述高速緩存相關(guān)裝置還包括一裝置,該裝置用于拷貝該修改值至與第三處理部件相關(guān)的第三高速緩存塊,并且為所述第三高速緩存塊分配第三相關(guān)狀態(tài)以表示所述第三高速緩存塊含有該修改值的一共享拷貝并且負(fù)責(zé)將該修改值寫回至所述存貯器塊。
8.如權(quán)利要求6的計(jì)算機(jī)系統(tǒng),其特征在于,所述高速緩存相關(guān)裝置還包括用于從所述第一高速緩存塊提供該值至與第三處理部件相關(guān)的第三高速緩存塊的裝置。
9.如權(quán)利要求6的計(jì)算機(jī)系統(tǒng),其特征在于,所述高速緩存相關(guān)裝置還包括一裝置,該裝置用于(ⅳ)發(fā)出與另一個高速緩存塊相關(guān)的第一請求以要求所述存貯器塊用于將來的修改;(ⅴ)發(fā)出與所述第二高速緩存塊相關(guān)的第二請求以要求所述存貯器塊用于將來的修改,使得第二請求與第一請求沖突,以及(ⅵ)根據(jù)第二請求取消第一請求。
10.如權(quán)利要求7的計(jì)算系統(tǒng),其特征在于,所述高速緩存相關(guān)裝置還包括用于從所述第三高速緩存塊中將該修改值寫入所述存貯器塊。
11.一種在具有多個處理部件的多處理器計(jì)算機(jī)系統(tǒng)中保持高速緩存相關(guān)性的方法,每個處理部件具有至少一個高速緩存,其特征在于包括下列步驟拷貝一個與一存貯器塊相關(guān)的值至分別位于第一高速緩存和第二高速緩存中的第一高速緩存塊和第二高速緩存塊,其中該第一高速緩存支持第一處理部件,該第二高速緩存支持第二處理部件,并且該值已經(jīng)相對于在該存貯器塊中的較舊的值而被修改;為第一高速緩存塊分配第一相關(guān)狀態(tài)以表示第一高速緩存塊含有該修改值的一共享拷貝并且負(fù)責(zé)將該修改值寫回至該存貯器塊;以及為第二高速緩存塊分配第二相關(guān)狀態(tài)以表示第二高速緩存塊含有該修改值的一共享拷貝并且具有優(yōu)先于任何要求該存貯器塊的沖突請求的沖突優(yōu)先級。
12.如權(quán)利要求11的方法,其特征在于還包括步驟發(fā)出與另一個高速緩存塊相關(guān)的第一請求以要求所述存貯器塊用于將來的修改;發(fā)出與第二高速緩存塊相關(guān)的第二請求以要求所述存貯器塊用于將來的修改,使得第二請求與第一請求沖突;以及根據(jù)所述發(fā)出第二請求的步驟取消第一請求。
13.如權(quán)利要求11的方法,其特征在于還包括從第一高速緩存塊中將該修改值寫入該存貯器塊。
14.一種計(jì)算機(jī)系統(tǒng),包括一系統(tǒng)存貯設(shè)備;一連接到所述系統(tǒng)存貯設(shè)備的總線;多個連接到所述總線的處理部件,每個所述處理部件具有至少一個用于存儲來自所述系統(tǒng)存貯設(shè)備的值的高速緩存塊;以及高速緩存相關(guān)裝置,該裝置用于(ⅰ)拷貝一個與所述系統(tǒng)存貯設(shè)備的一存貯器塊相關(guān)的值至分別與第一處理部件和第二處理部件相關(guān)的第一高速緩存塊和第二高速緩存塊,其中該值已經(jīng)相對于在所述存貯器塊中的較舊的值而被修改;(ⅱ)為所述第一高速緩存塊分配第一相關(guān)狀態(tài)以表示所述第一高速緩存塊含有該修改值的一共享拷貝并且負(fù)責(zé)將該修改值寫回至該存貯器塊,以及(ⅲ)為所述第二高速緩存塊分配第二相關(guān)狀態(tài)以表示所述第二高速緩存塊含有該修改值的一共享拷貝并且具有優(yōu)先于任何要求所述存貯器塊的沖突請求的沖突優(yōu)先級。
15.如權(quán)利要求14的計(jì)算機(jī)系統(tǒng),其特征在于,所述高速緩存相關(guān)裝置還包括一裝置,該裝置用于(ⅳ)發(fā)出與另一個高速緩存塊相關(guān)的第一請求以要求所述存貯器塊用于將來的修改;(ⅴ)發(fā)出與所述第二高速緩存塊相關(guān)的第二請求以要求所述存貯器塊用于將來的修改,使得第二請求與第一請求沖突,以及(ⅵ)根據(jù)第二請求取消第一請求。
16.如權(quán)利要求14的計(jì)算機(jī)系統(tǒng),其特征在于,所述高速緩存相關(guān)裝置還包括用于從所述第一高速緩存塊中將該修改值寫入所述存貯器塊。
17.一種在具有多個處理部件的多處理器計(jì)算機(jī)系統(tǒng)中保持高速緩存相關(guān)性的方法,每個處理部件具有至少一個高速緩存,其特征在于包括下列步驟拷貝一個與一存貯器塊相關(guān)的值至分別位于第一高速緩存和第二高速緩存中的第一高速緩存塊和第二高速緩存塊,其中該第一高速緩存支持第一處理部件,該第二高速緩存支持第二處理部件,并且該值已經(jīng)相對于在該存貯器塊中的較舊的值而被修改;為第一高速緩存塊分配第一相關(guān)狀態(tài)以表示第一高速緩存塊含有該修改值的一共享拷貝并且負(fù)責(zé)將該修改值寫回至該存貯器塊;以及為第二高速緩存塊分配第二相關(guān)狀態(tài)以表示第二高速緩存塊含有該值的一共享拷貝并且將排它地提供該修改值。
18.如權(quán)利要求17的方法,其特征在于還包括從第二高速緩存塊中提供該修改值至位于支持第三處理部件的第三高速緩存中的第三高速緩存塊的步驟。
19.如權(quán)利要求17的方法,其特征在于還包括從第一高速緩存塊中將該修改值寫入該存貯器塊。
20.一種計(jì)算機(jī)系統(tǒng),包括一系統(tǒng)存貯設(shè)備;一連接到所述系統(tǒng)存貯設(shè)備的總線;多個連接到所述總線的處理部件,每個所述處理部件具有至少一個用于存儲來自所述系統(tǒng)存貯設(shè)備的值的高速緩存塊;以及高速緩存相關(guān)裝置,該裝置用于(ⅰ)拷貝一個與所述系統(tǒng)存貯設(shè)備的一存貯器塊相關(guān)的值至分別與第一處理部件和第二處理部件相關(guān)的第一高速緩存塊和第二高速緩存塊,其中該值已經(jīng)相對于在所述存貯器塊中的較舊的值而被修改,(ⅱ)為所述第一高速緩存塊分配第一相關(guān)狀態(tài)以表示所述第一高速緩存塊含有該修改值的一共享拷貝并且負(fù)責(zé)將該修改值寫回至該存貯器塊,以及(ⅲ)為所述第二高速緩存塊分配第二相關(guān)狀態(tài)以表示所述第二高速緩存塊含有該修改值的一共享拷貝并且將排它地提供該修改值。
21.如權(quán)利要求20的計(jì)算機(jī)系統(tǒng),其特征在于所述高速緩存相關(guān)裝置還包括用于從第二高速緩存塊中提供該修改值至與第三處理部件相關(guān)的第三高速緩存塊的裝置。
22.如權(quán)利要求20的計(jì)算機(jī)系統(tǒng),其特征在于所述高速緩存相關(guān)裝置還包括用于從所述第一高速緩存塊中將該修改值寫入所述存貯器塊的裝置。
全文摘要
一高速緩存相關(guān)協(xié)議采用一“標(biāo)記”相關(guān)狀態(tài)以便跟蹤用于將一修改值寫回至系統(tǒng)存貯器的責(zé)任。當(dāng)將該標(biāo)記狀態(tài)分配給一最近加載該修改值的高速緩存行時,該標(biāo)記狀態(tài)能夠跨越一些高速緩存而(水平地)遷移。還可以使用與該標(biāo)記狀態(tài)相關(guān)的歷史狀態(tài)。本發(fā)明還可用于具有分成組的處理部件的多處理器計(jì)算機(jī)系統(tǒng),使得該標(biāo)記狀態(tài)能夠用于在支持單獨(dú)的處理部件組的每一組高速緩存中的一個高速緩存行。
文檔編號G06F12/08GK1226705SQ99101100
公開日1999年8月25日 申請日期1999年1月15日 優(yōu)先權(quán)日1998年2月17日
發(fā)明者R·K·阿里米里, J·S·多森, J·D·劉易斯 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1