国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于高速緩存一致性協(xié)議的方法、裝置及系統(tǒng)的制作方法

      文檔序號:6570682閱讀:259來源:國知局

      專利名稱::用于高速緩存一致性協(xié)議的方法、裝置及系統(tǒng)的制作方法用于高速緩存一致性協(xié)議的方法、裝置及系統(tǒng)
      背景技術
      :本發(fā)明的實施例涉及基于處理器的系統(tǒng),更具體地說,涉及這樣的系統(tǒng)內存儲器一致性協(xié)議的實現(xiàn)。近年來,處理器對執(zhí)行層次上的并行性的支持愈來愈大。通常,由體系結構開發(fā)的執(zhí)行層次上的并行性是明示的即并非推測性的。為了更進一步增強多線程/多核體系結構的優(yōu)點,人們建議利用推測性執(zhí)行層次上的并行性。采用這樣的解決方案時,代碼被分成幾塊,推測地并行執(zhí)行。事務存儲器上的執(zhí)行是一種類似于允許不同線程進行推測性存取,并寫入存儲器,而忽略了線程之間可能存在數(shù)據(jù)的相關性。在這兩個執(zhí)行模型中,推測性存儲狀態(tài)以原子方式委托(encomendadoatomicamente)該體系結構的狀態(tài)或者根據(jù)執(zhí)行時間的核實(例如,線程之間存儲器的相關性)予以放棄。為了在現(xiàn)有的多線程和多核處理器上有效地實現(xiàn)這些執(zhí)行模型,通過對推測性數(shù)據(jù)管理的支持、對線程之間的數(shù)據(jù)相關性的檢測和對推測狀態(tài)的委托或抑制,使得對該存儲器子系統(tǒng)的硬件支持變得更加廣泛。于是,存儲器子系統(tǒng)可以能夠在存儲器的同一地點為線程保持不同的推測版本,同一應用程序的推測性線程可以共享該存儲器的空間并寫入該存儲器的同一位置。支持推測及多版本的擴展存儲器子系統(tǒng)被命名為多版本高速緩存(MVC)。這樣的系統(tǒng)往往包括集中的表格,諸如消除跟蹤推測性存取的數(shù)據(jù)用的存儲器中的不確定性的表。但是,這樣的硬件支持成本高昂,而且要求相當數(shù)量的空間和能量。這樣的支持一般還要求支持基于硬件的讀順序。此外,還要求在各個系統(tǒng)不同的高速緩存之間進行數(shù)量相當大的通信,包括傳送適當?shù)耐茰y性數(shù)據(jù),這增大了總線上的通信量并對動作和能耗發(fā)生有害的影響。圖1是本發(fā)明一實施例的系統(tǒng)之一部分的框圖;圖2是本發(fā)明一實施例中實現(xiàn)推測性執(zhí)行用的方法的流程圖;圖3是本發(fā)明一實施例中實現(xiàn)推測性附加操作用的流程圖;圖4是本發(fā)明一實施例的另一推測性操作用方法的流程圖;圖5是本發(fā)明一實施例中處理所接收總線消息的方法的流程圖;圖6是本發(fā)明一實施例中委托推測性行動結果用的方法的流程圖7是本發(fā)明一實施例中抑制推測性行動用的方法的流程圖8是表示根據(jù)本發(fā)明一實施例表示應答處理器事件的狀態(tài)的事務處理的示圖9是表示本發(fā)明一實施例中表示應答總線消息的狀態(tài)的事務處理的示圖IO是本發(fā)明一實施例的多處理器系統(tǒng)的框圖。具體實施例方式在不同的實施例中,可以在一個允許多線程推測性處理和/或事務處理的系統(tǒng)上實現(xiàn)多版本高速緩存協(xié)議。這樣,因為線程可以并行地執(zhí)行,故可以獲得更高的性能,而高速緩存的一致性協(xié)議,與管理線程順序的軟件結合,可以確定給定的任何推測性線程是否有效。此外,為了降低硬件的復雜性,根據(jù)本發(fā)明一實施例的多版本高速緩存,不實現(xiàn)推測性線程之間推測性存儲值的通信。不實現(xiàn)這樣的通信,便可顯著簡化硬件,因為它避免使用集中的版本控制邏輯部件。結果,可以將實現(xiàn)推測性線程的執(zhí)行用的硬件減到最小,而且還無需使用集中的目錄或其他集中的高速緩存結構,反之,與局部高速緩存相關聯(lián)的高速緩存控制器可以接收相對于推測性存取的總線通信量,并在這個信息和高速緩存最小的推測性硬件狀態(tài)的基礎上,可以確定是否與存取位置有沖突。若是如此,則該高速^存控制器可以向軟件的一個層次例如,向應用程序操縱器發(fā)送信號,以便確定沖突的本質。確定一個或多個線程要崩潰時,應用程序操縱器可以為總線發(fā)送一條消息,以便產(chǎn)生崩潰。與(一個或多個)線程相關聯(lián)的高速緩存的(一個或多個)控制器^皮撤銷時,可以作為后果而建立與該線程相關聯(lián)的一個或多個高速緩存行的狀態(tài)。在多種實施例中,可以在經(jīng)修改的、共享的、無效的(MSI)/經(jīng)修改的、排他的、共享的、無效的(MESI)傳統(tǒng)協(xié)議的基礎上,實現(xiàn)多版本高速緩存的一致性協(xié)議。這里可稱作MU[E]SLI協(xié)議的協(xié)議,包括附加的狀態(tài)(例如,對應于推測裝入狀態(tài)的L狀態(tài)和對應于不可靠狀態(tài)的U狀態(tài)),并可在字的粒度上進行操作,動態(tài)J4^測各線程之間存儲器的相關性,并為每個數(shù)據(jù)的高速緩存支持存儲器一個位置的推測版本。就是說,該協(xié)議可支持由線程和數(shù)椐高速緩存給定的字的推測版本。推測的存儲器狀態(tài)可以保存在該核的各個局部數(shù)據(jù)高速緩存中,而且不會傳播到被委托的存儲器等級的上層水平。推測地修改的高速緩存行的逐出可以引起在該核建立的推測的線程的#:#:銷。對非推測裝入和存儲造成的一致性活動可以在行的粒度上操作。對于推測裝入和存儲,該協(xié)議可以在字的粒度上操作,以便支持推測版本并減少虛假的共享條件造成的不必要的撤銷。線程之間存儲器的相關性可以動態(tài)地進行驗證。當檢測到數(shù)據(jù)的相關性(例如,"寫后讀"(RAW)或讀后寫(WAR)的線程之間的相關性)時,可以調用違規(guī)操縱器。違規(guī)操縱器可以在應用程序的層次上執(zhí)行并適當?shù)爻蜂N推測活動。為了降^^更件的復雜性,該協(xié)議沒有線程順序的概念。在線程之間存在推測順序的多線程的情況下,可以實現(xiàn)一個管理線程關系的軟件層。例如,在線程之間的數(shù)據(jù)相關性破壞的情況下,所調用的該軟件操縱器負責在撤銷影響讀出(及其所有后續(xù)動作)的推測線程之前,核實是否有"寫后讀"的相關性。在多種實施例中,可以根據(jù)MESI協(xié)議操縱非推測的高速緩存行的逐出。但是,由于推測的存儲器的狀態(tài)和信息的狀態(tài)局部地保存在數(shù)據(jù)高速緩存中,并且被委托之前不傳播到上層,故對推測性存取過(就是說,讀或寫存取)的一個高速緩存行的任何逐出都會類似于線程之間的數(shù)據(jù)相關性,引起一次破壞。另一方面,該協(xié)議可以在同一局部數(shù)據(jù)高速緩存中允許推測的和非推測的裝入/存儲的混合。一般,由一個推測的線程實行的任何裝入/存儲都視為推測。但是,特殊的裝入/存儲,被稱為"可靠的"存取,可以由任何(推測和非推測的)線程實施以存取共享內存,且這些存取可以視為非推測。因而,當同一線程存取同一位置而執(zhí)行推測的和非推測的裝入/存儲時,可以產(chǎn)生某種相互作用。在這種情況下,只要一個非推測裝入/存儲去存取一個被推測性存取過的(亦即涉及位U或L的組合)的字位置,該協(xié)議就可以解決因此而引起破壞情況的問題。在各種實施例中,該一致性協(xié)議可以動態(tài)地跟蹤已推測性存取過的存儲器的數(shù)據(jù)字,并驗證線程之間的數(shù)據(jù)相關性,以便立即檢測出虛假的推測。該動態(tài)地核實線程之間相關性的機制可以依據(jù)不同的總線消息。在一個實施例中,這樣的消息可以加上產(chǎn)生該消息的線程識別符(ID)、存取過的高速緩存行的地址和至少一個指示該行內有存取過的字(若千字)的字掩碼作標簽。在不同的實施例中,這些消息可以采取不同的形式。但是,這些消息可以用來向該高速緩存的其它控制器指出推測性存取過的這些數(shù)據(jù)的狀態(tài)。作為響應,該高速緩存的這些控制器可以采取不同的動作,正如下文中將要更詳細地描迷的。在一個實施例中,可能在推測性存取下產(chǎn)生的總線消息,可以包括讀驗證的消息、寫-驗證的消息、寫非推測性驗證的消息(分別標示為消息ChkRd、ChkWr和ChkNSWr)。盡管可以實施不同系統(tǒng)的實施例,但在一個實施例中,可以在多處理器系統(tǒng)上利用多版本高速緩存。例如,該系統(tǒng)可以包括多個處理器,例如,一個多核處理器的各個核或一個多處理器系統(tǒng)的多個處理器。各核都可包括或關聯(lián)于局部高速緩存,例如,包括高速緩存控制器的一級(L1)高速緩存。參閱圖1,它代表根據(jù)本發(fā)明一實施例的系統(tǒng)之一部分的框圖。如圖1所示,系統(tǒng)10包括一個耦合到系統(tǒng)的存儲器65的處理器20,在一個實施例中,該存儲器可以利用動態(tài)直接存取存儲器(DRAM)。如圖1所示,該處理器20可以經(jīng)由芯片外的接口60耦合到系統(tǒng)的存儲器65,盡管本發(fā)明的范圍不限于這種形態(tài)。也如圖1所示,處理器20包括核30和高速緩存40。在一個實施例中,處理器20可以是單核處理器,盡管在其他實現(xiàn)中該處理器20可以是多核處理器,其中其它的核可以類似地配置有一個核和一個相關聯(lián)的高速緩存。該高速緩存40可以是高速緩存L1,包括一個存儲器矩陣42和高速緩存50的控制器。存儲器矩陣42包括多個高速緩存行43a-43n(統(tǒng)稱為高速緩存行43)。高速緩存的每一行43都可以在數(shù)據(jù)部分49存儲多個數(shù)據(jù)字。盡管本發(fā)明的范圍不限于這種形態(tài),但在一個實施例中,數(shù)據(jù)部分可以存儲8個字。除存儲數(shù)據(jù)外,*高速緩存行43可以包括一個標簽44,它可以在存取該高速緩—存行時使用。此外,各個高速^存行43可以包括第一狀態(tài)部分45,才艮據(jù)選定的高速緩存的一致性協(xié)議的指示符,它本身又可以包括一系列位或指示符。例如,在一個實施例中,這可以是MESI協(xié)議。在其他實施例中,可以利用高速緩存的其它協(xié)議,諸如MSI協(xié)議。繼續(xù)參閱圖l,此外,高速緩存的每一行43都可以包括第三推測性掩碼46,亦稱字的第一掩碼。該第一推測性掩碼46可以包括與數(shù)據(jù)部分49各個字相關聯(lián)的一個位。于是,在圖1的實施例中,第一推測性掩碼46可以包括第一推測性指示符4h-4U(統(tǒng)稱為第一推測性指示符41),它們中的每一個都對與該數(shù)據(jù)部分49中相應的一個字相聯(lián)系。該第一推測性字掩碼46可以用來指示在數(shù)據(jù)部分49曾經(jīng)產(chǎn)生一次相關字的推測性讀出。類似地,第二推測性掩碼48,此處亦稱笫二字掩碼,可以包括與該數(shù)據(jù)部分49各個字相關聯(lián)的一個位。如圖l所示,該第二推測性掩碼48可以包括第二推測性指示符47i-478(統(tǒng)稱為第二推測性指示符47),每一個都與數(shù)據(jù)部分49中相應的字相聯(lián)系。該第二推測性字掩碼可以用來指示該數(shù)據(jù)部分49中相關聯(lián)的字曾經(jīng)發(fā)生過推測性寫入。在一個實施例中,該笫二推測性字掩碼48的各個笫二指示符47可以標示為位U(不可靠的),它是在將一個推測性線程寫入存儲器或將一個事務處理寫入?yún)^(qū)域時在相應的字上建立的。類似地,該第一推測性字l^碼的每個第一指示符41都可以標示為位L(推測性裝入),它指示該數(shù)據(jù)字被該事務處理或推測性線程讀過,而不是由該線程/事務處理產(chǎn)生。推測性裝入可以在具有清空的位U讀出的任何字上建立這個位。因而,當發(fā)生對高速緩存40上的數(shù)椐進行存取的推測性執(zhí)行時,高速緩存控制器50可以在第一推測性掩碼46和第二推測性掩碼48上建立適當?shù)闹甘痉4送?,根?jù)高速緩存給定的行狀態(tài),高速緩存控制器50可以產(chǎn)生并傳送總線消息,以便聯(lián)系高速緩存不同行的狀態(tài),通知系統(tǒng)的其它代理,例如,高速緩存的其它控制器。于是,額外增加最少的硬件即可實現(xiàn)推測性處理。在許多實施例中,高速緩存控制器50還可以配置得接收例如,從高速緩存的其它控制器到達的總線消息,并確定該總線消息指示的地址和高ii緩存40上的位置是否存在沖突,若如此,則高速緩存控制器50可以(例如)向核30發(fā)送一條數(shù)椐相關性破壞的消息,使一個適當?shù)牟倏v器的執(zhí)行能夠進行,以確定沖突的存取之間的順序。也如圖l所示,在處理器20是一個多核處理器的實施例中,處理器20可以包括芯片上的接口55,使處理器內2不同核之間能夠進行通信。盡管已經(jīng)具體地在圖1的實施例中說明此實現(xiàn),但應明白,本發(fā)明的范圍不限于這種形態(tài)?,F(xiàn)參照圖2,該圖表示本發(fā)明一實施例中實現(xiàn)執(zhí)行推測性操作用的方法的流程圖。如圖2所示,該方法100可以從一個線程的推測性執(zhí)行開始(方框IIO)。這樣的推測性執(zhí)行可以對應于一個要執(zhí)行的線ii程,例如,根據(jù)基于對程序流程一個可能的路徑分支的預測。在其他實現(xiàn)中,該推測性執(zhí)行可以對應于根據(jù)本發(fā)明一實施例的事務存儲器系統(tǒng)上的事務處理的執(zhí)行。在推測性線程的執(zhí)行期間,可以確定是否應該進行裝入動作(菱形框115)。若非如此,則控制過程在考慮之前就返回方框110。若要進行裝入操作,則控制過程進到方框120。這時可能要存取局部高速緩存中的數(shù)據(jù)(方框120)。例如,執(zhí)行該線程的核可能要求存于高速緩存L1的數(shù)據(jù)。接著,可以確定在當前推測性執(zhí)行期間對這些數(shù)據(jù)的存取是讀還是寫(菱形框125)。例如,可能要驗證與這些數(shù)據(jù)相關聯(lián)的一個位U和一個位L,以確定要存取的這些數(shù)據(jù)的推測狀態(tài)。若判定在推測性執(zhí)行期間沒有存取這些數(shù)據(jù),則控制過程進到方框130。為了使這些已經(jīng)存取的數(shù)椐能夠是多版本的,與該高速緩存U相關聯(lián)的高速緩存控制器可以為這些向處理器提供的這些數(shù)椐建立一個已推測性裝入的指示符,此外還可以產(chǎn)生一條總線消息(方框130)。更具體地說,高速緩存控制器可以向該核發(fā)送所請求的這些數(shù)據(jù)。此外,高速緩存控制器可以建立一個或多個與這些數(shù)椐相關聯(lián)的推測性裝入的指示符。例如,重新參閱圖l,假定該核要求高速緩存43的整行數(shù)據(jù)。在這樣的前提下,高速緩存控制器建立第一推測性字掩碼46的全部第一指示符41r418,以便指出這些對應于一個高速緩存行43的所有數(shù)據(jù)均已裝入。此外,為了在這些多線程之間保持一致性,該高速緩存控制器還可以產(chǎn)生一條總線消息。請注意,這條總線消息只可以在一個推測性線程期間首次已推測性存取一個數(shù)據(jù)位置時生成。于是,實現(xiàn)了總線通信量的減少,而同時提供需要的信息,就是說,該推測性線程已存取給定的存儲器位置。在一個實施例中,可以發(fā)送一個識別信息,以便指出這些數(shù)據(jù)已在一個實施例中推測性裝入其高速緩存,這可以對應于一條讀驗證總線消息即ChkRd。這條消息可以與該第一字掩碼的地址和內容一起發(fā)送。這條消息可以使高速緩存的其它控制器確定一個字尚未以該字掩碼寫入存儲器。在下文中將考慮對其他高速緩存控制器對該字掩碼的分析。請注意,若這些已經(jīng)存取的數(shù)據(jù)是在當前推測性執(zhí)行期間被讀出或寫入并存入局部高速緩存的,則不執(zhí)行方框130及建立裝入指示符并產(chǎn)生一條總線消息的操作。因而,不進入方框130,而該方法100結束?,F(xiàn)參照圖3,它代表根據(jù)本發(fā)明一實施例進行推測性操作用的方法的流程圖。如圖3所示,方法135可以從繼續(xù)進行一個線程的推測性執(zhí)行開始(方框138)。接著,可以確定是否執(zhí)行了一個存儲操作(菱形框140X若非如此,該控制可以重新進入方框138,以便進行另一次推測性執(zhí)行。反之,若要進行存儲操作,則該控制過程進到方框145。這時,可以在推測性執(zhí)行期間存取這些在局部高速緩存中的數(shù)據(jù)(方框145)。接著,可以確定這些數(shù)據(jù)是否在該推測性執(zhí)行中產(chǎn)生的(菱形框150)。若如此,則可以結束方法135。若非如此,則控制過程從菱形框150進到方框155。這時,可以存儲這些推測性數(shù)據(jù),并且可以建立推測性寫的指示符此外可以產(chǎn)生一條總線消息(方框155)。就是說,除將這些數(shù)椐存入高速緩存行43的數(shù)據(jù)部分49外,還可以在第二推測性掩碼48內建立一個或多個第二指示符47,以指出推測性數(shù)據(jù)已寫入。此外,相關的高速緩存控制器可以發(fā)送一條總線消息,例如寫驗證消息即ChkWr,這可以當時在該笫二推測性掩碼48中檢查是否有任何對應于已寫入的位置裝入的已經(jīng)讀出的一個數(shù)據(jù)字的高速緩存的其它控制器接收。和前面描述的讀驗證消息相同,該寫驗3正消息可以唯一地在首次與推測性線程執(zhí)行期間存儲的數(shù)據(jù)一起提供數(shù)據(jù)位置時發(fā)送。這減少了通信量,而同時提供需要的信息,就是說,在推測性執(zhí)行期間在給定數(shù)據(jù)的地址上經(jīng)修改的信息。請注意,盡管具體地用圖3的實施例描述了此實現(xiàn),^f旦應明白,本發(fā)明的范圍不限于此。此外,請注意,可以在一個系統(tǒng)上開始附加的動作,以證實推測性執(zhí)行是否適當并須#皮委托或是該推測性執(zhí)行須被撤銷,正如下文中將要更詳細地描述的。現(xiàn)參照圖4,其中表示根據(jù)本發(fā)明一實施例更多推測性操作的方法的流程圖。如圖4所示,該方法200從完成推測性處理開始(方框210)。例如,這樣的推測性進程可以在推測性線程達到其指令流終點時,或者在事務存儲器系統(tǒng)上一項事務處理完成其操作時完成。無論在任何情況下,該推測性執(zhí)行可以將推測確定的數(shù)椐寫入局部高速緩存,例如產(chǎn)生推測性執(zhí)行的核的高速緩存L1。當時可以確定已經(jīng)驗證該推測性執(zhí)行^^否有效(菱形框220)。為了作出該確定,可以考慮該核進行推測性執(zhí)行所使用的這些數(shù)據(jù)是否有效。在不同的實施例中,該驗證可以用不同的方式進行,并且可以由不同的軟件與硬件相結合進行。再參閱圖4,若該推測性執(zhí)行成為有效,則控制過程進到方框230,在那里可以將該推測性存儲的狀態(tài)委托給該體系結構的狀態(tài)(方框230)。局部高速緩沖存儲狀態(tài)的這種委托可以根據(jù)下文就圖6所示的流程圖實現(xiàn)。作為替代方案,若該執(zhí)行成為無效,則控制過程進到方框240這時可以撤銷該推測狀態(tài)。在一個實施例中,這樣的撤銷可以根據(jù)在下文中更詳細地考慮的圖7的流程圖實施。如前面描述的,在該推測性執(zhí)行期間除建立指示符并產(chǎn)生總線消息外,高速緩存控制器還可以接收總線消息,例如,來自高速緩存與推測性執(zhí)行相關的其它控制器的總線消息。這些總線消息可以包括有關與發(fā)送這樣的消息的高速緩存控制器相關聯(lián)的高速緩存行上數(shù)據(jù)推測狀態(tài)的信息。在這些消息的基礎上,接收的高速緩存控制器可以確定其局部高速緩存中的位置是否受到影響?,F(xiàn)參照圖5,該圖表示本發(fā)明一實施例中處理所收到的總線消息的方法的流程圖。如圖5所示,對于該方法300可以^^接收一條與推測性4丸行相關聯(lián)的總線消息開始(方框310)。作為例子,這樣的總線消息可以從一個與提交推測性執(zhí)行的線程相關聯(lián)的高速緩存控制器接收。在所接收的總線消息的基礎上,可以確定這些數(shù)據(jù)是否對應于接收該總線消息的高速緩存中存在的總線消息(菱形框320)。例如,在與該總線消息一起良送的標簽信息的基礎上,可以確定在該高速緩存中是否有一個位。若非如此,該方法300可以結束。如果相反,產(chǎn)生影響,控制過程進到方根330。這時可以確定,推測性存取的這些數(shù)椐和該局部高速緩存中的這些數(shù)椐之間是否有沖突。在許多實施例中,該高速緩存控制器可以確定是否有沖突,例如,為此將與該消息一起接收的推測性字掩碼與所達到的該高速緩存行適當?shù)耐茰y性字掩碼加以比較。作為例子,可以在所接收的掩碼和獲得的數(shù)椐行適當?shù)难诖a之間進行位的"與',還輯運算。在下文中更詳細地考慮這種操作。若相符(就是說,"與"邏輯運算的結果為邏輯"r),則指示有沖突。結果,控制過程進到方框340。如果相反,未產(chǎn)生影響(就是說,"與"邏輯運算全部得出邏輯"O"),則不存在任何沖突,因而該方法300可以結束。仍舊參閱圖5,若存在沖突,則高速緩存控制器可以發(fā)出一條數(shù)椐相關性破壞的消息(方框340)。更具體地說,可以發(fā)出一條線程之間數(shù)據(jù)相關性破壞的消息。在一個實施例中,結束該破壞的高速緩存控制器可以(例如)與沖突中的這些線程的識別符一起向相關的核,發(fā)送一條確定破壞的(Viol)消息。該核本身可以發(fā)生矢量(中斷)調用應用程序操縱器,在這些發(fā)生沖突的線程之間進行順序比較。根據(jù)該順序相關性的確定,該應用程序操縱器可以產(chǎn)生總線消息來指出一個或多個線程須被撤銷,以避免數(shù)據(jù)破壞。盡管具體地用圖5的實施例對此實現(xiàn)進行了舉例說明,但應明白,對所達到的這些總線消息的處理也可以用其他形式實現(xiàn)?,F(xiàn)參照圖6,該圖表示本發(fā)明一實施例的將推測性操作結果委托給體系結構狀態(tài)的方法的流程圖。如圖6所示,該方法400可以通過接收委托給總線的消息開始(方框410)。這樣的委托給總線的消息可以由收到推測性存入其高速緩存的這些數(shù)據(jù)被證明有效的指示的高速緩存控制器接收。于是,該高速緩存控制器可以推測地恢復已推測性存取其局部高速緩存的數(shù)據(jù)行的推測狀態(tài)(方框420)。就是說,推測性存取的任何15高速緩存行的兩個推測性字掩碼,第一和第二字掩碼,都可以恢復。此外,在推測性執(zhí)行期間其中一個或多個字要被修改的這些高速緩存行中的任何一個都可以具有更進一步修改的高速緩存的一致性狀態(tài)。更具體地說,對這樣的行中的任何一個都可以建立經(jīng)修改的狀態(tài)(方框430)。例如,在使用MESI協(xié)議的實現(xiàn)中,可以建立位M。于是,這樣的動作可以有效地更新高速緩存的已經(jīng)在局部高速緩存中進行了推測性存取的對應行,以便按照推測性執(zhí)行的驗證反映其適當?shù)捏w系結構狀態(tài)。此外,為了經(jīng)由系統(tǒng)實現(xiàn)正確的體系結構狀態(tài),該高速緩存控制器還可以產(chǎn)生一條更新的總線消息。更具體地說,該高速緩存控制器可以為已被修改的共享數(shù)據(jù)產(chǎn)生這樣的消息(方框440X在一個實施例中,可以發(fā)送一條總線更新消息,即消息DUpd。在這些已經(jīng)在字的等級上進行修改的實現(xiàn)中,這樣的總線消息可以讓一個或多個高速緩存發(fā)送一個進行了無效修改的數(shù)據(jù)行的體系結構值(方框460)。結杲,收到這樣的值時,該局部高速緩存可以將其已推測性寫入的字與該行體系結構值結合起來,以最后將該行正確的體系結構狀態(tài)委托給該存儲器(方框470)。盡管具體地用圖6的實施例對此實現(xiàn)進行了描述,但應明白,本發(fā)明的范圍不限于這種形態(tài)。該應用程序操縱器或其他代理程序可以確定給定的事務處理或線程推測性執(zhí)行違反了數(shù)據(jù)相關性的規(guī)則。發(fā)生這種情況時,可以發(fā)送一條稱為刪除的總線消息?,F(xiàn)參照圖7,該圖表示根椐本發(fā)明一實施例撤銷推測性操作的方法的流程圖。結果,如圖7所示,方法500在收到一條刪除的總線消息時開始(方框510)。例如,在一個實施例中,該消息可以從實現(xiàn)該應用程序操縱器的核接收。但是,在其他實施例中,該消息可以由該高速緩存控制器或由系統(tǒng)的其他代理程序生成。收到這樣的信息時,包含已推測性存取的這些數(shù)椐的高速緩存控制器,可以為已推測性存取的高速緩存行恢復推測狀態(tài)(方框520)。例如,對于該高速緩存的已推測性存取的任何一行,第一和第二推測性字掩碼都祐_擦除。接著,該高速緩存控制器可以將推測性寫入高速緩存的任何一行的狀態(tài)設為無效(方框530)。于是,該高速^存的已經(jīng)在推測性第二字掩碼上建立了指示符的任何一行都可以被設置為無效。這樣設置為無效的處理可以對應于給相應的高速緩存行的MESI狀態(tài)建立無效位。接著參閱圖7,接著,可以確定被設置為無效的任何一行是否處于排他狀態(tài)(菱形框540)。就是說,可以確定已推測性存取的^t設為無效的行是否具有局部高速緩存的排他的所有權。若非如此,該方法500可以結束。反之,若任何一個被設為無效的行處于排他狀態(tài),則控制過程進到方框550。這時,可以為這些先前為排他的高速緩存行發(fā)送一條釋放的總線消息即RelOwner(方框550)。因而,該高速緩存控制器可以發(fā)送一條釋放該高速緩存相關一行或多行的所有權的總線消息,于是,恢復該存儲行的所有權。盡管此實現(xiàn)具體地用圖7的實施例進行了描述,但應明白,本發(fā)明的范圍不限于此,而且在其他實施例中,可以對推測要進行的被設為無效的事務處理或執(zhí)行實現(xiàn)其他形式的擺脫困境或撤銷。圖8和9是本發(fā)明一實施例的狀態(tài)過渡示意圖。圖8代表該處理器對事件的響應,而圖9代表對總線消息的響應。為了更清晰起見,沒有包括過渡狀態(tài)。狀態(tài)的過渡用下列術語"事件或消息/收到的動作和/或產(chǎn)生的消息"來標記。圖8和9所示的協(xié)議中涉及的這些狀態(tài)、事件、動作和消息在表l中描述。表l<table>tableseeoriginaldocumentpage18</column></row><table>作為圖8和9所代表的過渡的不同示例,借助于對預先沒有由同一線程進行存取(讀出或寫入)的字地址進行存取的任何推測性裝入都產(chǎn)生一條消息ChkRd。另一方面,該消息ChkWr由任何推測性存儲在以前尚未推測地寫入的(就是說,并非不可靠的)字位置上生成。如前所述,這些l^證消息只可以第一次在對高速緩存一個字位置上進行推測性裝入或存儲時產(chǎn)生,這些消息ChkNSWr可以由任何非推測的存儲(就是說,由一個非推測的線程產(chǎn)生的存儲或者由任何線程產(chǎn)生的"安全的"存儲)產(chǎn)生。所以,只要該高速緩存控制器收到一條核實消息,并將該消息的字掩碼與進行過存取的高速緩存行的位L或位U進行比較(例如,借助于位的"與"運算),〗!l可以實施真實相關性的驗證。一般,該消息ChkRd使該高速緩存控制器使信息的字掩碼與位U比較,而消息ChkWr與ChkNSWr使字掩碼與位L比較。在已經(jīng)發(fā)生沖突的情況下,就是說,在位的"與"運算結果不為0時,檢測出線程之間的數(shù)據(jù)相關性,而且可以引起一個破壞情況。這種破壞用制造者和使用者線程的ID(識別符)作為參數(shù)來調用應用程序操縱器。由于消息ChkNSWr而產(chǎn)生破壞時,可以傳送特定的線程的ID作為制造者的參數(shù),以便告知那些制造者線程并非推測性的。在各種實現(xiàn)形式中,該應用程序可以經(jīng)由違規(guī)操縱器負責適當?shù)爻蜂N推測性活動。在推測性多線程執(zhí)行模型中,這涉及核實逸些制造者與使用者線程之間的順序,以便^i正破壞是由"寫后讀,,的相關性引起的。若是如此,該操縱器可以發(fā)送一個消息,以便撤銷使用者及其所有后續(xù)的線程。在事務處理存儲系統(tǒng)上,由于這些線程之間沒有順序,唯有撤銷使用者線程。請注意,該協(xié)議可以支持同一字位置的多個版本(每個線程一個版本),因而在線程之間"寫后寫"的數(shù)據(jù)的相關性不會引起任何破壞。對子字的存取可以作特殊處理。當其他線程寫入同一字時,在子字位置上推測性存儲涉及破壞,因為它不保證該高速緩存的一致性。為了做到這一點,推測性對一個子字的存儲可以使相關的該高速緩存控制器建立位U,并和推測性存儲操作一樣,發(fā)送一條消息ChkWr。此外,高速緩存控制器可以建立位L,并行送一條消息ChkRd。這保證了只要其他線程對該字的同一位置實行存儲,就會檢測出線程之間數(shù)據(jù)相關性破壞。當推測性活動成為有效,而且沒有檢測出任何失敗時,推測性存儲狀態(tài)可以寫入該體系結構的狀態(tài)。為了安置寫入過程,發(fā)送一條稱為"BusCommit"("總線委托")的消息,包括推測性線程的線程ID或者要寫入的事務處理區(qū)域。當該高速緩存控制器接收對應于消息的線程ID的消息"BusCommit"時,起始推測性委托存儲器的進程。這個過程可以根據(jù)圖6所展示的流程圖實施。此外,正如下列表2所示,在任何一個給定的狀態(tài)下,繼續(xù)進行由該高速緩存行實施的動作(亦即,"BusCommit"列)。表2狀態(tài)BusCommitBus咖消息新狀態(tài)消息新狀態(tài)IL-I-ISL-S-SEL-EEML-M-MIUBusRdXM-ISUBvisUpgM-IEU-MRel.OwnerIIULBusRdXM-ISULBusUpgM-IEULMRel.OwnerI請注意,該委托進程恢復局部高速緩存行上所有的這些位L和位U,并使具有推測性寫入(亦即,不安全的)任何字的那些行處于M狀態(tài)。為了做到這一點,對局部數(shù)據(jù)高速緩存進行考察。處于SU狀態(tài)或SUL狀態(tài)的那些行產(chǎn)生總線等級上升(BusUpg),以便使該高速緩存行的其他拷貝無效。類似地,處于IU狀態(tài)或IUL狀態(tài)的那些行產(chǎn)生一條讀出總線排他消息(BusRdX),以從該行請求體系結構值并局部地實現(xiàn)按推測寫入的字的結合。另一方面,處于EU或EUL狀態(tài)的行變?yōu)镸狀態(tài),而不產(chǎn)生任何總線消息,因為該行唯一地出現(xiàn)在該高速緩存中。在推測失敗的情況下,須撤銷推測性活動。本發(fā)明一實施例的協(xié)議可以負責清除推測性存儲的由事務處理區(qū)域或撤銷的線程產(chǎn)生的所有狀態(tài)。在一個包括要撤銷的推測性線程的線程ID的實施例中,這是通過一條稱為"BusKiir的總線消息實現(xiàn)的。當收到由該高速緩存控制器產(chǎn)生的帶有與線程ID相同的線程的ID的消息BusKiU時,啟動撤銷推測性存儲的過程。這個過程可以根據(jù)圖7展示的流程圖實現(xiàn)。此夕卜,在表2中代表一個高速緩存行在給定的這些狀態(tài)(亦即BusKill列)中的每個狀態(tài)所進行的動作。如前所述,這個撤銷過程包括恢復局部數(shù)據(jù)高速緩存中全部位L和位U。此外,那些包舍任何推測性(亦即不安全)字的些高速緩存行都設為無效。沒有進行過推測性存取的行不變。因而,那些處于EU,EUL,SU,SUL,IU或IUL狀態(tài)中任何一個的那些行都變?yōu)镮狀態(tài),而處于ML,EL,SL或IL狀態(tài)中任何一個的那些行分別變?yōu)镸,E,S和I狀態(tài)。請注意,當變?yōu)闊o效狀態(tài)時,處于EU或EUL狀態(tài)的行通過一專門的釋放總線消息(亦即RelOwner),釋放存儲行的所有權。于是,在許多實施例中,這些線程的順序借助于負責過濾諸如"寫后讀"操作等線程之間存儲器的相關性的軟件(例如,由編譯器生成的代碼)處理。當這些線程的順序是無關緊要時,本發(fā)明一實施例的協(xié)議還可以支持事務處理存儲的執(zhí)行。這些實施例可以在多種不同類型的系統(tǒng)上實施?,F(xiàn)參照圖10,它表示本發(fā)明一實施例的系統(tǒng)的框圖。如圖IO所示,一個點到點互連系統(tǒng)700包括笫一處理器770和經(jīng)由點到點互連750耦合的第二處理器780。盡管在圖IO上舉例說明為點到互連系統(tǒng),但應明白,本發(fā)明的范圍不限于這種形態(tài),而且在其他實施例中,系統(tǒng)700可以是多總線的體系結構或其他這種類型的系統(tǒng)。如圖10所示,處理器770和780中的每一個都可以是多核處理器,包括處理器的笫一和第二核(亦即處理器的核774a和774b和處理器784a和784b的核)。這些不同的處理器核,每一個都可以包括實現(xiàn)本發(fā)明一實施例的高速^^存一致性協(xié)議的局部高速緩存。于是,利用系統(tǒng)700可以實現(xiàn)推測要進行的多線程事務處理和傳送。此外,第一處理器770還包括存儲器(MCH)772和點到點接口(P-P)776和778的中夾控制器。類似地,第二處理器780包括一個MCH782和P-P接口786和788。如圖10所示,這些MCH772和782將這些處理器耦合到各自的存儲器,亦即耦合到存儲器732和存儲器734,它們可以是局部附裝于各自的處理器的主存儲部分。笫一處理器770和第二處理器780可以分別通過P-P接口752和754耦合到芯片組790。如圖10所示,芯片組790包括P-P接口794和798。此外,芯片組790包括接口792,用以使芯片組790與高性能圖形引擎738耦合。在一個實施例中,可以利用"先進圖形端口(AGP),,總線739將圖形引擎738耦合到芯片組790。AGP總線739可以修改為1998年5月7日由(美國)加利福尼亞,SantaClara的Intel公司發(fā)表的加速圖形端口接口標準2.0版(MemoriadeEspec迅caciondeInterfazdePuertodeGraficosAeelerados,Revision2.0)。作為替4戈方案,點到點互連739也可以耦合這些部件。芯片組790本身可以經(jīng)由接口796耦合到第一總線716。在一個實施例中,該笫一總線716可以是"外設部件互連(PCI)"總線,諸如注明日期為1995年6月的"PCI局部總線規(guī)格,生產(chǎn)版本,修改版2.1"或者諸如PCIE鄧ress(快速)總線等總線或其他第三代輸入/輸出(1/0)互連總線,盡管本發(fā)明的范圍不限于此。如圖IO所示,可以將不同的I/0裝置714耦合到第一總線716,與總線橋718—起將笫一總線726耦合到第二總線720。在一個實施例中,第二總線720可以是一個LPC(低PIN或個人身份識別號)總線在一個實施例中,耦合到第二總線720的可以有不同的裝置,包括,例如,鍵盤/鼠標722、通信裝置726和數(shù)據(jù)存儲器728,后者可包含代碼730。此外,音頻1/0724可以耦合到第二總線720。這些實施例可以用代碼的形式實現(xiàn)并可以存儲在機器可存取的媒體上,諸如在裝有存儲在同一媒體上的指令,可以用來對一個系統(tǒng)進行編程,以便執(zhí)行指令的存儲介質。存儲介質可以包括,但不限于軟盤或只讀存儲器小光盤(CD-ROM)、可重寫小光盤(CD-RW)、磁光盤、諸如只讀存儲器(ROM)、直接存取存儲器(RAM),諸如動態(tài)直接存取存儲器(DRAM)、靜態(tài)直接存取存儲器(SRAM)、可擦可編程只讀存儲器(EPROM)、閃存、電可擦除可編程只讀存儲器(EEPROM)、磁卡或光卡或任何其他類型介質等半導體器件或任何其他類型適宜于電子存儲指令的介質。盡管本發(fā)明就數(shù)目有限的實施例進行了描述,但本專業(yè)的專家對此會想出大量的修改和變化。后附的權利要求書擬包括落在本發(fā)明的精神和范圍內的所有的修改和變化。權利要求1.一種方法,包括在第一高速緩存中接收總線消息,將該總線消息對應于第二線程對第二高速緩存的一部分的推測性存??;以及在最后的高速緩存中動態(tài)地確定在第二線程和與第一高速緩存相關聯(lián)的第一線程之間對于那一部分是否存在線程之間的相關性。2.根據(jù)權利要求l的方法,還包括向與包括第一線程和第二線程的應用程序相關聯(lián)的應用程序操縱器發(fā)出相關性破壞信號。3.根據(jù)4又利要求2的方法,還包括在所述應用程序操縱器上接收所述相關性破壞信號和第一線程和笫二線程的識別符;以及根據(jù)第一線程和第二線程的信息的順序確定須撤銷第一線程和第二線程中的哪一個。4.根據(jù)權利要求l的方法,其中,所述總線消息之接收包含接收消息部分、地址部分以及笫二線程的識別符,而不接收已推測性存取的部分。5.根據(jù)權利要求l的方法,還包括為已被第二線程推測性存取的部分建立推測狀態(tài)的第一指示符;以及若該部分^皮第二線程推測性寫入,則為該已被第二線程推測性存取的部分建立推測狀態(tài)的第二指示符。6.根據(jù)權利要求l的方法,其中動態(tài)地確定包括將所述總線消息的第一掩碼與包括該部分的第一高速緩存的高速緩存行的第一掩碼進行比較;以及根椐該比較確定線程之間的相關性。7.—種裝置,包括包含存儲器矩陣和高速緩存控制器的高速^#,該存儲器矩陣須包含多行,其中每行具有存儲第一掩碼用的狀態(tài)部分,該第一掩碼具有各自指示與該行對應的字的推測性存取的若干笫一推測性指示符;以及存儲第二掩碼用的狀態(tài)部分,該第二掩碼具有各自指示與該行對應的字的推測性寫入的若千第二推測性指示符;以及用于存儲多個字的數(shù)椐部分;所述高速緩存控制器用于發(fā)送并處理對所述高速纟戾存的推測性存W目關聯(lián)的總線消息。8.才權利要求7的裝置,其中,所述狀態(tài)部分和所述數(shù)據(jù)部分不含順序信息,9.根據(jù)權利要求7的裝置,其中,所述狀態(tài)部分還用來存儲對應于經(jīng)修改的、排他的、共享的和無效的一致性協(xié)議的笫一組指示符。10.根據(jù)權利要求9的裝置,其中,所述笫一組指示符須根據(jù)行保持,而第一掩碼和第二掩碼須根據(jù)字保持。11.根據(jù)權利要求7的裝置,其中,所迷高速緩存控制器用來對應用程序操縱器證實線程之間的相關性破壞。12.根據(jù)杈利要求ll的裝置,其中,所述高速緩存控制器證實線程之間的相關性破壞,如果隨到達的總線消息一赴良送的第一或第二掩碼中的一個或另一個與在該存儲器矩陣上相一致的第一或第二掩碼相沖突。13.根據(jù)權利要求7的裝置,其中,所迷高速緩存控制器用來接^示推測性線程的委托的總線消息,如果該推測性線程已成為有效。14.根據(jù)權利要求13的裝置,其中,所述高速緩存控制器釋放與推測性線程相關聯(lián)的行的第一掩碼和第二掩碼,如果該推測性線程已成為有效。15.根據(jù)權利要求7的裝置,其中,所述高速緩存控制器根椐到達的總線消息動態(tài)地驗證線程之間的數(shù)據(jù)相關性。16.根據(jù)權利要求7的裝置,其中,所述高速緩存控制器發(fā)送表示對一行中的一字的推測性存取的笫一總線消息,并發(fā)iH^示對該字的推測性寫入的第二總線消息,其中第一總線消息和第二總線消息須不帶該字傳送。17.根據(jù)權利要求16的裝置,其中,所述第一總線消息包含第一掩碼,而所述笫二總線消息包含第二掩碼。18.—種包含若千指令的機器可讀存儲介質的制品,這些指令若被機器執(zhí)行,則可使該機器實施包含如下步驟的方法在第一高速緩存中從第二高速緩存接收總線消息,以表示第二高速緩存中的數(shù)據(jù)值通過事務處理存儲系統(tǒng)的事務處理作的修改;以及在第一高速緩存中至少部分地根據(jù)該總線消息確定,所述事務處理是否與在與該笫一高速緩存相關聯(lián)的處理器上執(zhí)行的第一線程相沖突。19.根椐權利要求18的制品,其中,所述方法還包括從笫一高速緩存向所述處理器的應用程序操縱器發(fā)送關于破壞的消息,以在判定為沖突時確定所述事務處理和第一線程之間的順序。20.根據(jù)權利要求19的制品,其中,所述方法還包括從所述應用程序操縱器接收消息,以根據(jù)順序之確定撤銷所迷事務處理。21.4財居權利要求20的制品,其中,所述方法還包括在與數(shù)據(jù)值相關聯(lián)的第二高速緩存中恢復推測性指示符;以及從第二高速緩存發(fā)送總線消息以釋放包含該數(shù)據(jù)值的高速緩存行的所有權,如果笫二高速緩存擁有該高速緩存行。22.—種系統(tǒng),包括具有第一核和第一高速緩存的第一處理器;具有第二核和第二高速緩存的笫二處理器,其中,笫一高速緩存和第二高速緩存中的數(shù)據(jù)值的高速緩存之間的數(shù)據(jù)相關性的動態(tài)確定,均基于第一高速緩存和第二高速緩存之間發(fā)送的總線消息;以及與第一處理器和笫二處理器耦合的動態(tài)直接存取存儲器(DRAM)。23.根據(jù)權利要求22的系統(tǒng),其中,第一高速緩存包含第一高速緩存控制器,以動態(tài)地確定高速緩存之間的數(shù)據(jù)相關性。24.根椐權利要求23的系統(tǒng),其中,笫一高速緩存控制器可產(chǎn)生關于破壞的消息,以根據(jù)所述總線消息指示高速緩存之間的數(shù)據(jù)相關性破壞。25.根據(jù)權利要求24的系統(tǒng),還包括操縱器,用以接收關于破壞的消息并確定制造者線程和使用者線程之間的順序。26.根據(jù)權利要求25的系統(tǒng),還包括應用程序,其中包舍所述制造者線程和使用者線程,還包含4吏用所述操縱器的程序。27.根據(jù)權利要求23的系統(tǒng),其中,若第一高速緩存中的推測性存取位置發(fā)生推測性存取,所迷第一高速緩存控制器以信號報告高速緩存之間的數(shù)據(jù)相關性破壞,其中所述推測性存取包括安全操作。全文摘要在一個實施例中,本發(fā)明包括一種方法,用以在第一高速緩存中接收對應于第二線程對第二高速緩存的一部分的推測性存取的總線消息,并在第一高速緩存中動態(tài)地確定,在該第二線程和與該第一高速緩存相關聯(lián)的第一線程之間對于該部分是否存在線程之間的相關性。還描述了其他實施例并對其提出了權利要求。文檔編號G06F12/08GK101449250SQ200680054734公開日2009年6月3日申請日期2006年5月30日優(yōu)先權日2006年5月30日發(fā)明者A·岡薩雷斯,C·加西亞基尼奧內斯,C·馬德里列斯吉梅諾,F·拉托雷,J·桑切斯,P·馬奎洛申請人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1