專利名稱:用于處理經(jīng)發(fā)布至數(shù)據(jù)處理設(shè)備內(nèi)本地高速緩存結(jié)構(gòu)的訪問操作的設(shè)備與方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于處理發(fā)布至數(shù)據(jù)處理設(shè)備內(nèi)本地高速緩存結(jié)構(gòu)的訪問操作的設(shè)備與方法,具體地,其中該數(shù)據(jù)處理設(shè)備提供多個處理單元,該多個處理單元的每一個各自具有這種本地高速緩存結(jié)構(gòu)。
背景技術(shù):
已知兩個或兩個以上處理單元(例如,處理器核心)共享對共享存儲器的訪問的多重處理系統(tǒng)。通常,這種系統(tǒng)用于通過將不同處理器核心配置成并行執(zhí)行各別數(shù)據(jù)處理操作,而獲得較高性能。為進一步改善訪問多重處理系統(tǒng)內(nèi)的數(shù)據(jù)的速度,已知為處理單元中的每一個提供至少一個本地高速緩存結(jié)構(gòu),該本地高速緩存結(jié)構(gòu)用于儲存保存于共享存儲器中的數(shù)據(jù)的子集。這種本地高速緩存結(jié)構(gòu)可采用各樣形式,例如,用以儲存由處理單元處理的數(shù)據(jù)的數(shù)據(jù)高速緩存、用以儲存由處理單元執(zhí)行的指令的指令高速緩存、在將由處理單元發(fā)布的虛擬地址轉(zhuǎn)換為物理地址時,用以儲存所使用的頁表信息的轉(zhuǎn)換旁視緩沖器(TLB)等。在多重處理系統(tǒng)內(nèi),應(yīng)用程序可自一個處理單元遷移至另一處理單元。因此,存在以下可能性在一個處理單元上執(zhí)行時,由應(yīng)用程序使用的數(shù)據(jù)在應(yīng)用程序已遷移至另一處理單元的后,可繼續(xù)在該處理單元的本地高速緩存結(jié)構(gòu)中被高速緩存。雖然,已知提供一致性機制,來追蹤保留在各樣本地高速緩存結(jié)構(gòu)中的數(shù)據(jù),以確保處理單元將始終訪問最新版本的數(shù)據(jù),以下情況仍可發(fā)生在本地高速緩存結(jié)構(gòu)的一個或多個條目上執(zhí)行的操作,可能不會對保存于另一處理單元的本地高速緩存結(jié)構(gòu)中的數(shù)據(jù)執(zhí)行相應(yīng)的操作,而此時這種操作的執(zhí)行將較合適。這種情況的一個示例為高速緩存維護操作的執(zhí)行。通常,高速緩存維護操作是由操作系統(tǒng)發(fā)布的,以更新本地高速緩存結(jié)構(gòu)中的一個或多個條目的狀態(tài)。如果操作系統(tǒng)未完全感知由數(shù)據(jù)處理設(shè)備提供的多個處理單元,例如可為以下狀況如果該操作系統(tǒng)為由超管理器軟件層自硬件平臺屏蔽的單處理器操作系統(tǒng),則該操作系統(tǒng)可發(fā)布高速緩存維護操作,該高速緩存維護操作僅將對本地高速緩存結(jié) 構(gòu)執(zhí)行,該本地高速緩存結(jié)構(gòu)與正執(zhí)行的操作系統(tǒng)所在的處理單元相關(guān)聯(lián),即使該高速緩存維護操作將應(yīng)用的資料可儲存于另一處理單元的本地高速緩存結(jié)構(gòu)中。僅僅舉例而言,考慮以下情形高速緩存維護操作識別出特定地址范圍或特定程序識別符(程序ID)的任何高速緩存條目應(yīng)為無效。當對于當前正執(zhí)行的操作系統(tǒng)所在的處理單元的本地高速緩存結(jié)構(gòu)執(zhí)行該操作時,則這種高速緩存維護操作將恰當?shù)厥乖摫镜馗咚倬彺娼Y(jié)構(gòu)中的任何條目無效,該本地高速緩存結(jié)構(gòu)未于特定地址范圍內(nèi),或與特定程序ID相關(guān)聯(lián)。然而,對于保存于任何其他處理單元的相應(yīng)本地高速緩存結(jié)構(gòu)中的數(shù)據(jù),將不采取動作。如的前所述,實際上,該舉措仍可保留數(shù)據(jù),該數(shù)據(jù)意欲成為這種高速緩存維護操作的操作對象,但由于操作系統(tǒng)未感知硬件架構(gòu),所以條目將不為高速緩存維護操作的操作對象。雖然此問題不僅將在使用超管理器軟件時出現(xiàn),但通常該問題可能在使用超管理器軟件層時出現(xiàn)。具體地,多重處理系統(tǒng)可執(zhí)行超管理器軟件,以支持至少一個虛擬機在處理電路系統(tǒng)上的執(zhí)行,每一虛擬機包括執(zhí)行一個或多個應(yīng)用程序的操作是統(tǒng)。在這種環(huán)境中,操作系統(tǒng)與一個或多個應(yīng)用程序都無需了解下層硬件平臺,且尤其將不需感知正在使用多重處理系統(tǒng)。因此,應(yīng)用程序及/或操作系統(tǒng)可發(fā)布以單處理器環(huán)境為前提的高速緩存維護操作,且因此可能生成上述的問題。對超管理器而言,解決這種問題的一個方法為,當操作系統(tǒng)及/或應(yīng)用程序自一個處理單元遷移(在本文中還稱為“切換”)至另一處理單元時,執(zhí)行各樣高速緩存維護操作。例如,在允許被切換的操作系統(tǒng)及/或應(yīng)用程序在新處理器核心上開始操作的前,超管理器可廣泛地執(zhí)行數(shù)據(jù)高速緩存清除及無效操作、指令高速緩存無效操作、TLB無效操作等。然而,雖然這種方法將解決該問題,但這種方法顯著地影響了性能,且尤其讓使用多重處理平臺的潛在益處不得實現(xiàn)。 對超管理器軟件而言,替代方法可為當將操作系統(tǒng)及/或應(yīng)用程序自來源處理單元遷移至目標處理單元時,將來源處理單元標識為用于隨后將在目標處理器上執(zhí)行的某些操作的可能目標。隨后,超管理器將必須進一步將目標處理器程序化,以在遭遇任何此類操作時截獲任何此類操作,以便隨后在發(fā)布此類操作時,超管理器將得到通知。此時,超管理器軟件將隨后決定是否還需要在來源處理器以及目標處理器上執(zhí)行這種操作。然而,這種方法的顯著缺陷為需要截獲在目標處理器上所執(zhí)行的操作。此舉引起顯著的性能損失,因為超管理器軟件比所需更為頻繁地被調(diào)用。具體而言,如果并非基于微粒(fine grain)而設(shè)計該截獲功能性,則超管理器軟件可能被調(diào)用于許多操作,在操作中,不需要與來源處理器有關(guān)的動作。還存在顯著的復(fù)雜性問題,因為超管理器軟件需要了解操作,以決定是否需要在來源處理器以及目標處理器上執(zhí)行操作。因此,需要提供一種改進技術(shù),該技術(shù)用于處理發(fā)布至具有多個處理單元的數(shù)據(jù)處理系統(tǒng)內(nèi)本地高速緩存結(jié)構(gòu)的訪問操作,該處理單元中的每一個具有這種本地高速緩存結(jié)構(gòu)。
發(fā)明內(nèi)容
從第一方面來看,本發(fā)明提供一種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備包括處理電路,該處理電路包括用于執(zhí)行數(shù)據(jù)處理操作的多個處理單元,該數(shù)據(jù)處理操作需要訪問共享存儲器中的數(shù)據(jù);每一處理單元具有與該處理單元相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu),該本地高速緩存結(jié)構(gòu)用于儲存供該處理單元訪問的該數(shù)據(jù)的子集;以及具有訪問控制電路,該訪問控制電路用于處理經(jīng)發(fā)布至該本地高速緩存結(jié)構(gòu)的訪問操作,將該本地高速緩存結(jié)構(gòu)的至少一個類型的訪問操作發(fā)布為本地訪問操作或共享訪問操作;配置儲存器,該配置儲存器用于儲存訪問操作擴展值;共享訪問協(xié)調(diào)電路,該共享訪問協(xié)調(diào)電路用于協(xié)調(diào)該多個處理單元對該共享訪問操作的處理;在接收到該共享訪問操作的后,該訪問控制電路除對該相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)執(zhí)行該本地訪問操作的外,還向該共享訪問協(xié)調(diào)電路發(fā)布共享訪問信息;在接收到該本地訪問操作的后,如果未設(shè)置該訪問操作擴展值,則該訪問控制電路被布置,以對該相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)執(zhí)行該本地訪問操作,而不向該共享訪問協(xié)調(diào)電路發(fā)布該共享訪問信息;以及如果已設(shè)置該訪問操作擴展值,則該訪問控制電路被布置,以將該本地訪問操作視為該共享訪問操作。
根據(jù)本發(fā)明,可將特定類型的訪問操作發(fā)布為本地訪問操作或共享訪問操作。隨后,提供配置儲存器,該配置儲存器由以下方式用于儲存訪問操作擴展值處理本地訪問操作的方式取決于是否已設(shè)置該訪問操作擴展值。當與本地高速緩存結(jié)構(gòu)相關(guān)聯(lián)的訪問控制電路接收共享訪問操作時,則該訪問操作擴展 值的值并不相關(guān),且該訪問控制電路僅將對相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)執(zhí)行本地訪問操作,且另外向共享訪問協(xié)調(diào)電路發(fā)送共享訪問信息。隨后,該共享訪問協(xié)調(diào)電路將向其他處理單元廣播信號,以使該本地訪問操作還根據(jù)與處理單元相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)而執(zhí)行,或者,替代地,在考慮到該共享訪問協(xié)調(diào)電路所保留的某種狀態(tài)的情況下,該共享訪問協(xié)調(diào)電路將決定處理單元的子集,將這種信號發(fā)送至處理單元。當該訪問控制電路接收到本地訪問操作時,則在未設(shè)置該訪問操作擴展值的情況下,該訪問控制電路僅對該相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)執(zhí)行該本地訪問操作。然而,如果已設(shè)置該訪問操作擴展值,則根據(jù)本發(fā)明,即使僅接收到本地訪問操作,該訪問控制電路還將該本地訪問操作視為共享訪問操作。通過這種方法,應(yīng)理解,上述問題得以緩解。具體地,一旦已設(shè)置該訪問操作擴展值,則本地訪問操作將被視為共享訪問操作,并且因此,以下狀況并不要緊即便使本地訪問操作發(fā)布的物理并未感知該多重處理的結(jié)構(gòu),或可能試圖成為物理的目標的數(shù)據(jù)實際上可被儲存于另一處理單元的本地高速緩存結(jié)構(gòu)中。此外,當與上述的機制相比較時,由于保留在多重處理平臺上執(zhí)行的性能益處,本發(fā)明的方法顯著地改良性能,且減低復(fù)雜度。此外,在使用超管理器軟件的實施例中,既不需要截獲任何本地訪問操作,還不需要該超管理器軟件了解操作,以決定應(yīng)如何處理這種截獲操作。一旦已設(shè)置該訪問操作擴展值,則在一個實施例中,可將所有后續(xù)本地訪問操作視為共享訪問操作,無論其來源如何。然而,在替代實施例中,在該處理電路上執(zhí)行的軟件由多個軟件層級組成,該訪問操作擴展值由處于預(yù)定層級而實施的軟件設(shè)置及復(fù)位,且當處理由處于低于該預(yù)定層級的層級的軟件發(fā)布的本地訪問操作時,該訪問控制電路僅響應(yīng)于該訪問操作擴展值。因此,舉例而言,考慮使用超管理器軟件的實施例,該超管理器軟件可形成最高層級,操作可形成較低層級,且在該操作系統(tǒng)上執(zhí)行的應(yīng)用程序可形成更低層級。如果該超管理器層級已設(shè)置該訪問操作擴展值,則由該操作或應(yīng)用程序發(fā)布的任何本地訪問操作將視為共享訪問操作,然而該超管理器軟件可繼續(xù)發(fā)布本地訪問操作,該本地訪問操作是被處理為本地訪問操作的。此舉,例如,在該操作系統(tǒng)為單處理器操作是統(tǒng)的情況下可適用,且因此未感知該處理電路的多重處理性質(zhì)。在另一個示例中,即使該操作是統(tǒng)感知該處理電路的多重處理器性質(zhì),該方法仍可適用,例如如果以該操作系統(tǒng)了解操作應(yīng)以哪個處理器為目標的方式,將該操作系統(tǒng)優(yōu)化,但在超管理器支配下執(zhí)行該操作系統(tǒng)的情形下,該了解可能有誤。在替代實施例中,如果該操作系統(tǒng)已設(shè)置該訪問操作擴展值,則由下層應(yīng)用程序發(fā)布的任何本地訪問操作將視為共享訪問操作,但該操作系統(tǒng)(及實際上在該操作上層的任何超管理器層級)可繼續(xù)發(fā)布本地訪問操作,該本地訪問操作由該訪問控制電路處理為本地訪問操作??杀话l(fā)布為本地訪問操作或共享訪問操作的該至少一個類型的訪問操作可采用各樣形式。在一個實施例中,一個這種類型的訪問操作包括維護訪問操作,該維護訪問操作被發(fā)布以更新數(shù)據(jù)狀態(tài),該數(shù)據(jù)狀態(tài)被儲存于該本地高速緩存結(jié)構(gòu)的至少一個條目中。因此,維護訪問操作通常將不更新儲存于該高速緩存結(jié)構(gòu)中的該數(shù)據(jù)本身,但替代地,維護訪問操作將生成相關(guān)聯(lián)的狀態(tài)的改變,該相關(guān)聯(lián)的狀態(tài)是保存于與該數(shù)據(jù)相關(guān)聯(lián)的該本地高速緩存結(jié)構(gòu)中。在一個特定實施例中,該維護訪問操作對于該本地高速緩存結(jié)構(gòu)的該至少一個條目,執(zhí)行清除操作及無效操作中的至少一者。清除操作將使任何錯數(shù)據(jù)及有效數(shù)據(jù)被驅(qū)逐至存儲器,錯數(shù)據(jù)為比保存于存儲器中的數(shù)據(jù)更新的相應(yīng)數(shù)據(jù)。通常,結(jié)合數(shù)據(jù)高速緩存執(zhí)行這種維護訪問操作。無效操作將例如通過重設(shè)與該條目相關(guān)聯(lián)的有效位,而使該本地高速緩存結(jié)構(gòu)中的特定條目的當前內(nèi)容無效。通常,結(jié)合各樣不同的本地高速緩存結(jié)構(gòu)(例如,指令高速緩存、數(shù)據(jù)高速緩存、TLB等)以使用無效操作。在一個實施例中,該處理電路執(zhí)行超管理器軟件,以支持至少一個虛擬機在該處理電路上的執(zhí)行,該虛擬機是經(jīng)配置以發(fā)布該至少一個類型的訪問操作。通常,每一虛擬機將包括執(zhí)行一個或多個應(yīng)用程序的操作系統(tǒng)。如前所述,多重處理系統(tǒng)內(nèi)的這種超管理器 軟件的一個用途為,允許在該多重處理系統(tǒng)上執(zhí)行單處理器感知操作系統(tǒng),其中該超管理器軟件使該硬件平臺的特定結(jié)構(gòu)自該操作系統(tǒng)屏蔽。然而,即使該操作系統(tǒng)能使用多重處理器,在超管理器軟件的控制下執(zhí)行這種操作系統(tǒng)仍可存在益處。例如,當需要在給定的多重處理器系統(tǒng)上使多個操作系統(tǒng)共存時,可在超管理器軟件的控制下執(zhí)行能使用多重處理器的操作系統(tǒng)。通過這種方法,可在該硬件上同時執(zhí)行兩個已知操作系統(tǒng),而不對操作是統(tǒng)中的任一者進行修改。如另一示例,超管理器軟件通常還用于多重處理器系統(tǒng)中,其中部分處理器的電力開啟及電力切斷是在該超管理器的控制下。在這種實施例中,該操作系統(tǒng)通常將不感知到以下狀況該操作通常是在執(zhí)行的該硬件具有取決于工作負荷而啟用的不同數(shù)目個處理器。通過控制該超管理器層級中該多重處理系統(tǒng)的該電力開啟/切斷,委托代工(OEM)供貨商可提供附加價值,而無需對所支持的該多個操作系統(tǒng)進行修改。當使用超管理器軟件時,通常將發(fā)生以下狀況該超管理器軟件將在特定時間點,將該操作系統(tǒng)自處理單元中的一者移動至處理單元中的另一者,以使得在該移動程序的后,該操作系統(tǒng)隨后將在該處理單元(已將操作系統(tǒng)移動至該處理單元)上連同任何下層應(yīng)用程序而重新開始操作。在一個特定實施例中,當該超管理器軟件以此方式移動操作系統(tǒng)時,則該超管理器軟件使該訪問操作擴展值得以被設(shè)置。在設(shè)置該訪問操作擴展值的后,該訪問控制電路是統(tǒng)隨后將自該至少一個虛擬機發(fā)布的任何本地訪問操作視為共享訪問操作,但該訪問控制電路是統(tǒng)繼續(xù)將自該超管理器軟件發(fā)布的本地訪問操作處理為本地訪問操作。如前所述,該本地高速緩存結(jié)構(gòu)可采用各種形式。在一個實施例中,該本地高速緩存結(jié)構(gòu)為用于高速緩存作為操作數(shù)數(shù)據(jù)的數(shù)據(jù)的數(shù)據(jù)高速緩存,該操作數(shù)數(shù)據(jù)是用于數(shù)據(jù)處理操作。或者,該本地高速緩存結(jié)構(gòu)可包括轉(zhuǎn)換旁視緩沖器,該轉(zhuǎn)換旁視緩沖器用于高速緩存頁表數(shù)據(jù),該頁表數(shù)據(jù)是自該共享存儲器中的頁表獲得,且在執(zhí)行該相關(guān)聯(lián)的處理單元內(nèi)的虛擬地址至物理地址的轉(zhuǎn)換時,使用該轉(zhuǎn)換旁視緩沖器。如另一示例,該本地高速緩存結(jié)構(gòu)可包括指令高速緩存,該指令高速緩存用于高速緩存指令,該指令用于定義數(shù)據(jù)處理操作。在又一示例中,該本地高速緩存結(jié)構(gòu)可包括分支歷史緩沖器,該分支歷史緩沖器用于儲存數(shù)據(jù),該數(shù)據(jù)為分支預(yù)測單元在預(yù)測是否將采用分支時所參考,或者分支目標緩沖器,該分支目標緩沖器用于儲存分支指令的目標地址。有許多該共享訪問協(xié)調(diào)電路系統(tǒng)可響應(yīng)于該共享訪問信息的方式。在一個實施例中,該共享訪問協(xié)調(diào)電路響應(yīng)于該共享訪問信息,以向處理單元中的每一者(除了該處理單元的訪問控制電路已發(fā)布該共享訪問信息的處理單元)廣播本地訪問操作請求,藉此在處理單元中的每一者上執(zhí)行該本地訪問操作。因此,在此類實施例中,該共享訪問協(xié)調(diào)電路并不試圖決定哪些處理單元可含有數(shù)據(jù),該數(shù)據(jù)為原始共享訪問操作的對象(該原始共享訪問操作為經(jīng)同樣發(fā)布的共享訪問操作,或為由該訪問控制電路升級為共享訪問操作的本地訪問操作(由于已設(shè)置該訪問操作擴展值))。替代地,該共享訪問協(xié)調(diào)電路僅向處理單元中的每一者廣播請求,以使處理單元對于該原始共享訪問操作所指明的數(shù)據(jù)執(zhí)行本地訪問操作。在替代實施例中,該共享訪問協(xié)調(diào)電路響應(yīng)于該共享訪問信息,以自該多個處理單元決定處理單元的子集,該子集的本地高速緩存結(jié)構(gòu)可含有由該共享訪問操作識別的數(shù)據(jù),及向該子集中的處理單元中的每一者發(fā)布本地訪問操作請求。此類方法在以下情況為可能該共享訪問協(xié)調(diào)電路維護已被高速緩存數(shù)據(jù)的某些記錄,且因此了解任何特定數(shù)據(jù),·本地高速緩存結(jié)構(gòu)可能儲存該特定數(shù)據(jù)的復(fù)本。此舉使該共享訪問協(xié)調(diào)電路發(fā)布的請求能夠局限于處理單元的子集,由此生成能量效率增益,且通過減少不必要的所執(zhí)行的訪問操作的數(shù)目,潛在地達成更好性能。雖然本發(fā)明的實施例的上述技術(shù)是結(jié)合訪問操作而使用的,但還可結(jié)合其他類型的操作使用而該技術(shù)。例如,當應(yīng)用程序想要確保先前的記憶體操作(例如,寫入操作)對該系統(tǒng)的各種其他部分為可見,或想要確保后續(xù)記憶體操作是根據(jù)此類先前記憶體操作而被排序,則已知這種應(yīng)用程序執(zhí)行存儲器屏蔽操作,以加強存儲器訪問的給定排序,或者確保該先前記憶體操作的結(jié)果是為可見。然而,如果該應(yīng)用程序在所述的該記憶體操作與該存儲器屏蔽操作的間,自一個處理單元遷移至另一處理單元,則該存儲器屏蔽操作可能將不會達成其預(yù)期目標。然而,根據(jù)一個實施例,在該由等處理單元中的第一處理單元執(zhí)行存儲器屏蔽操作之后,如果已設(shè)置該訪問操作擴展值,處理單元中的該第一處理單元被布置,以發(fā)布存儲器屏蔽信號,以使該存儲器屏蔽操作在處理單元中的至少一個其他處理單元上執(zhí)行??蔀樵摯鎯ζ髌帘涡盘柼峁S脗鞑ヂ窂?,以使其他處理單元獲知該存儲器屏蔽信號,且因此需要本地地執(zhí)行存儲器屏蔽操作。然而,在一個實施例中,處理單元中的該第一處理單元向該共享訪問協(xié)調(diào)電路是統(tǒng)發(fā)布該存儲器屏蔽信號,以使該存儲器屏蔽操作在處理單元中的該至少一個其他處理單元上執(zhí)行。因此,在這種實施例中,該共享訪問協(xié)調(diào)電路是統(tǒng)被重新使用,以管理傳播,該傳播將該存儲器屏蔽操作傳播至所需處理單元。該共享訪問協(xié)調(diào)電路是統(tǒng)可采用各種形式。然而,在一個實施例中,該共享訪問協(xié)調(diào)電路是統(tǒng)包括高速緩存一致性電路系統(tǒng),該高速緩存一致性系統(tǒng)采用高速緩存一致性協(xié)議,以確保由每一處理單元訪問知該數(shù)據(jù)為最新的。在一個實施例中,可為整個系統(tǒng)提供單一訪問操作擴展值。然而,在替代實施例中,該配置儲存器為該多個處理單元中的每一處理單元儲存分離訪問操作擴展值,且該訪問控制電路系統(tǒng)在處理該本地訪問操作時,參考與該訪問控制電路相關(guān)聯(lián)知訪問操作擴展值。在一個這種實施例中,該配置儲存器可由某中央儲存器提供,或者,可在每一處理單元中提供分離儲存器,該分離儲存器共同形成該配置儲存器,以使得將該相關(guān)的訪問操作擴展值本地地儲存至每一處理單元。該多個處理單元可采用各種形式,在一個實施例中,處理單元中的每一個包括處理器。處理器毋需全部相同,但在一個實施例中,該多個處理器形成對稱多重處理(symmetric multi-processing ;SMP)處理電路是統(tǒng)。從第二方面來看,本發(fā)明提供一種處理發(fā)布至數(shù)據(jù)處理設(shè)備內(nèi)本地高速緩存結(jié)構(gòu)的訪問操作的方法,該數(shù)據(jù)處理設(shè)備具有多個處理單元,該多個處理單元用于執(zhí)行需要訪問共享存儲器中的數(shù)據(jù)的數(shù)據(jù)處理,每一處理單元具有與該處理單元相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu),該本地高速緩存結(jié)構(gòu)用于儲存供該處理單元訪問的等數(shù)據(jù)的子集,該方法包括以 下步驟提供共享訪問協(xié)調(diào)電路,以協(xié)調(diào)該多個處理單元對一共享訪問操作的處理;儲存訪問操作擴展值;在處理經(jīng)發(fā)布至本地高速緩存結(jié)構(gòu)中的一個的該共享訪問操作時,除對本地高速緩存結(jié)構(gòu)中的一個執(zhí)行本地訪問操作以外,還向該共享訪問協(xié)調(diào)電路是統(tǒng)發(fā)布共享訪問信息;在處理經(jīng)發(fā)布至本地高速緩存結(jié)構(gòu)中的一個的本地訪問操作時(1)如果未設(shè)置該訪問操作擴展值,則對本地高速緩存結(jié)構(gòu)中的一個執(zhí)行該本地訪問操作,而不向該共享訪問協(xié)調(diào)電路發(fā)布該共享訪問信息;以及(2)如果已設(shè)置該訪問操作擴展值,則將該本地訪問操作視為該共享訪問操作。從第三方面來看,本發(fā)明提供一種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備包括處理裝置電路,該處理裝置電路包括用于執(zhí)行數(shù)據(jù)處理操作的多個處理單元裝置,該數(shù)據(jù)處理操作需要訪問共享存儲器中的數(shù)據(jù);每一處理單元裝置具有與該處理單元裝置相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)裝置,該本地高速緩存結(jié)構(gòu)裝置用于儲存供該處理單元裝置訪問的該數(shù)據(jù)的子集,以及具有訪問控制裝置,該訪問控制裝置用于處理經(jīng)發(fā)布至該本地高速緩存結(jié)構(gòu)裝置的訪問操作,將該本地高速緩存結(jié)構(gòu)裝置的至少一個類型的訪問操作發(fā)布為本地訪問操作或共享訪問操作;配置儲存器裝置,該配置儲存器裝置用于儲存訪問操作擴展值;共享訪問協(xié)調(diào)裝置,該共享訪問協(xié)調(diào)裝置用于協(xié)調(diào)該多個處理單元裝置對該共享訪問操作的處理;在接收到該共享訪問操作的后,該訪問控制裝置除用于對該相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)裝置執(zhí)行該本地訪問操作的外,還用于向該共享訪問協(xié)調(diào)裝置發(fā)布共享訪問信息;在接收到該本地訪問操作的后,如果未設(shè)置該訪問操作擴展值,則該訪問控制裝置用于對該相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)裝置執(zhí)行該本地訪問操作,而不向該共享訪問協(xié)調(diào)裝置發(fā)布該共享訪問信息,以及如果已設(shè)置該訪問操作擴展值,則該訪問控制裝置用于將該本地訪問操作視為該共享訪問操作。
圖I為示意性地示出了根據(jù)一個實施例的多重處理系統(tǒng)的示圖;圖2是流程圖,其示出了根據(jù)一個實施例如何處理高速緩存維護操作;圖3是流程圖,其示出了根據(jù)一個實施例,超管理器可如何設(shè)置訪問操作擴展位;圖4A示意性地示出了根據(jù)一個實施例,在已設(shè)置訪問操作擴展位的情形下,處理本地訪問操作;圖4B示意性地示出了根據(jù)替代實施例在已設(shè)置訪問操作擴展位的情形下處理本地訪問操作;圖5是流程圖,其標識出了程序代碼生成程序,其中由于自一個處理單元遷移至另一處理單元所生成的問題可經(jīng)由使用一個實施例的技術(shù)以避免;圖6是流程圖,其標識出了頁表更新程序,其中由于自第一處理單元遷移至第二處理單元且隨后返回至第一處理單元所生成的問題可經(jīng)由使用一個實施例的技術(shù)以避免;圖7是流程圖,其示出了根據(jù)一個實施例可如何處理存儲器屏蔽操作;以及圖8是流程圖,其標識出了涉及存儲器屏蔽操作的序列操作,其中由于自一個處理單元切換至另一處理單元所生成的問題可經(jīng)由使用一個實施例的技術(shù)避免。
具體實施例方式本發(fā)明將參照本發(fā)明的如隨附示圖中所闡釋的實施例,僅以例子而更進一步地描述。 圖I示出了根據(jù)一個實施例的多重處理系統(tǒng)。提供多個處理單元10、40,在闡釋性示例中,兩個處理單元為包括處理器核心及相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)的處理器。雖然處理器不須皆相同,但在一個實施例中,處理器被相同地建構(gòu),且形成SMP系統(tǒng)。如圖所示,第一處理電路系統(tǒng)10包括用于執(zhí)行一連串指令的核心20。核心20可訪問一或多個高速緩存24,在一個實施例中,高速緩存24可包括指令高速緩存及分離數(shù)據(jù)高速緩存。還可提供其他本地高速緩存結(jié)構(gòu),諸如存儲器管理單元(memorymanagement unit ;MMU) 26在執(zhí)行存儲器訪問控制操作(諸如由虛擬地址轉(zhuǎn)換至物理地址)時所參考的TLB 28。還提供維護電路系統(tǒng)22,以用于對本地高速緩存結(jié)構(gòu)(在該示例中為高速緩存24及TLB 28)執(zhí)行維護操作。在一個實施例中,維護電路系統(tǒng)22可被認為形成部分處理器核心20,例如,且可被認為形成由核心20提供的執(zhí)行管線中的一者。處理器10還包括用于配置處理器的操作的一個或多個配置寄存器30。根據(jù)本發(fā)明的實施例,儲存于配置寄存器30中的信息包括訪問操作擴展值。該訪問操作擴展值是維護電路22在執(zhí)行高速緩存維護操作時所參考。具體地,如隨后更詳細的描述,取決于訪問操作擴展值的值,維護電路將改變處理高速緩存維護操作的方式,該高速緩存維護操作是經(jīng)指明為本地操作。在闡釋性實施例中,處理器40以與處理器10相同的方式被建構(gòu),且因此包括核心50、維護電路52、高速緩存54、MMU 56內(nèi)的TLB 58及一個或多個配置寄存器60。各樣處理單元10、40經(jīng)由一致性互連(coherent interconnect) 70與共享存儲器75連接。一致性互連70確保儲存于各樣本地高速緩存結(jié)構(gòu)中的數(shù)據(jù)維持一致性,使得每一處理器具有一致的數(shù)據(jù)。因此,舉例而言,如果核心50發(fā)布數(shù)據(jù)訪問請求,該數(shù)據(jù)訪問請求在核心50的數(shù)據(jù)高速緩存54中未得到數(shù)據(jù),則此舉將使請求被發(fā)布至一致性互連70,一致性互連70隨后將決定所需數(shù)據(jù)是否儲存于處理單元10的相應(yīng)的數(shù)據(jù)高速緩存24內(nèi)。如果是,則將自處理單元10的數(shù)據(jù)高速緩存取回該數(shù)據(jù),且將該數(shù)據(jù)提供至處理單元40。取決于由一致性互連70使用的一致性協(xié)議,可將處理單元10的數(shù)據(jù)高速緩存中的相關(guān)數(shù)據(jù)標識為無效,或者,兩個處理單元10、40可將它們的數(shù)據(jù)復(fù)本標識為共享。隨后,此舉將影響關(guān)于該數(shù)據(jù)的后續(xù)訪問操作如何被處理。只有當在其他高速緩存中的一者中,未能找到所請求的數(shù)據(jù)時,才會自存儲器75訪問該數(shù)據(jù)。
雖然,這種技術(shù)通常操作得很好,以維持數(shù)據(jù)的一致性,但當在硬件上執(zhí)行的操作是統(tǒng)及下層應(yīng)用程序未感知硬件的多重處理器性質(zhì)時,可生成問題,諸如,當使用超管理器軟件以允許執(zhí)行多個虛擬機時,可出現(xiàn)問題。具體地,如圖I中所標識出的,超管理器軟件80可在由多個處理單元10、40組成的硬件平臺上執(zhí)行,以支持至少一個虛擬機90在處理電路上的執(zhí)行。每一虛擬機將由執(zhí)行一個或多個應(yīng)用程序94、96的操作系統(tǒng)92組成。如下文所將更詳細地描述的,當僅有單一虛擬機90正由超管理器80執(zhí)行時,或者,替代地,可存在多于一個的虛擬機,超管理器軟件正支持該多于一個的虛擬機的執(zhí)行時,可使用本發(fā)明的實施例的技術(shù)。因此,如虛線框中所示出了,可提供至少另一個虛擬機100,該虛擬機100由執(zhí)行數(shù)個應(yīng)用程序104、106的操作系統(tǒng)102組成。在操作時,超管理器軟件80可將虛擬機自一個處理單元遷移至另一處理單元,例如,當將每一處理單元10、40的電流負載納入考慮,而設(shè)法提高性能時。由于由超管理器軟件80將下層硬件自虛擬機屏蔽,所以虛擬機90通常將未感知其正在哪個處理單元10、40上執(zhí)行,且此外,虛擬機90通常將未感知其操作何時自一個處理單元被切換至另一處理單 元。因此,因為虛擬機期望作為高速緩存維護操作的對象的數(shù)據(jù)將儲存于本地高速緩存結(jié)構(gòu)中,所以操作系統(tǒng)92及/或應(yīng)用程序94、96可發(fā)布被指明為本地高速緩存維護操作的高速緩存維護操作。然而,如果在將數(shù)據(jù)最初儲存于高速緩存結(jié)構(gòu)中的時間與發(fā)布高速緩存維護操作的時間的間,虛擬機已自一個處理單元遷移至另一處理單元,則由于并非所有作為高速緩存維護操作的對象的數(shù)據(jù)都正經(jīng)受該高速緩存維護操作,此前提可能不正確,且可能潛在地導(dǎo)致不正確的操作?!滦曰ミB70將特定高速緩存條目標識為共享,本身不足以確保不產(chǎn)生問題。例如,考慮虛擬機將十個數(shù)據(jù)值寫入高速緩存的情形,其中將數(shù)據(jù)值中的三個寫入處理單元10的高速緩存24中,同時虛擬機90正在處理單元10上執(zhí)行,但隨后超管理器將虛擬機90的執(zhí)行切換至處理單元40,以使得將剩余的七個數(shù)據(jù)值寫入數(shù)據(jù)高速緩存54中。如果隨后發(fā)布高速緩存維護操作,以清除包括彼等十個數(shù)據(jù)值的地址的范圍地址,而虛擬機90仍在處理單元40上操作,則可預(yù)見地,高速緩存54中的七個數(shù)據(jù)值將位于高速緩存中,且執(zhí)行必要的清除操作。如果將條目標識為共享,則信號還將發(fā)布至一致性互連70,以確保該數(shù)據(jù)的任何其他復(fù)本均無效。然而,就所述的其他三個數(shù)據(jù)值而言,對于與該三個數(shù)據(jù)相關(guān)聯(lián)的地址,處理單元40內(nèi)本地執(zhí)行的高速緩存維護操作將僅偵測到數(shù)據(jù)不在高速緩存中,且因此將不再采取動作(替代地,假定已將該數(shù)據(jù)驅(qū)逐至存儲器)。然而,結(jié)果為,三個數(shù)據(jù)值仍將常駐于高速緩存24內(nèi),且將未被清除,導(dǎo)致就數(shù)據(jù)值而言,共享存儲器75將為過時的。此舉可導(dǎo)致虛擬機的不正確操作。根據(jù)本發(fā)明的實施例,經(jīng)由提供訪問操作擴展位來解決該問題,該訪問操作擴展位可由處于特定層級的軟件設(shè)置,且一旦設(shè)置,則將影響處于較低層級的軟件發(fā)布的本地高速緩存維護操作如何被處理。因此,在一個實施例中,可允許操作系統(tǒng)92設(shè)置訪問操作擴展位,以使得由應(yīng)用程序94、96發(fā)布的任何后續(xù)高速緩存維護操作將取決于操作系統(tǒng)是否已設(shè)置訪問操作擴展位,而被不同地處理。然而,出于以下描述的目標,將假定訪問操作擴展位可由超管理器軟件80設(shè)置,以使得由虛擬機(操作系統(tǒng)92或應(yīng)用程序94、96中的一者)發(fā)布的任何高速緩存維護操作隨后將取決于是否已設(shè)置訪問操作擴展位,而被不同地處理。
圖2是一流程圖,其示出了 根據(jù)一個實施例,本地高速緩存維護操作的處理如何受訪問操作擴展位值影響。特定言的,在步驟150,維護電路是統(tǒng)等待接收高速緩存維護操作。一旦已接收到高速緩存維護操作,則在步驟155決定高速緩存維護操作是否為本地訪問操作。如果否,則程序進入步驟165,在步驟165中,將共享訪問信息發(fā)送至一致性互連,以使本地訪問操作在一或多個其他處理單元上執(zhí)行,且另外在步驟170,將對于本地高速緩存結(jié)構(gòu)執(zhí)行本地高速緩存維護操作,該本地高速緩存結(jié)構(gòu)與在步驟150接收高速緩存維護操作的維護電路相關(guān)聯(lián)。應(yīng)注意,雖然按順序標識出了步驟165及步驟170,但可以相反次序執(zhí)行步驟,或?qū)嶋H上可同時執(zhí)行步驟。此外,在某些實施例中,可執(zhí)行在步驟170所執(zhí)行的本地高速緩存維護操作,而不考慮任何其他處理單元上的相應(yīng)本地高速緩存維護操作響應(yīng)共享訪問信息的操作結(jié)果。然而,在替代實施例中,可使在步驟170的本地高速緩存維護操作的操作延遲,直至各樣其他處理單元響應(yīng)在步驟165發(fā)布至一致性互連的共享訪問信息,而已執(zhí)行其他處理單元的本地高速緩存維護操作。 如果在步驟155,決定高速緩存維護操作是本地訪問操作,則在步驟160決定是否已設(shè)置訪問操作擴展位。如果否,則僅將高速緩存維護操作視為本地操作,且因此在步驟170執(zhí)行本地高速緩存維護操作。然而,如果在步驟160決定已設(shè)置訪問操作擴展位,則實際上本地訪問操作將被視為共享訪問操作。因此,執(zhí)行步驟165及步驟170。由此可見,當已設(shè)置訪問操作擴展位時,被指明為本地訪問操作的高速緩存維護操作是被「升級」為視為共享訪問操作。因此,此舉確保在所有相關(guān)高速緩存結(jié)構(gòu)中均執(zhí)行高速緩存維護操作,而不管虛擬機當前正在哪個處理單元上執(zhí)行。圖3為流程圖,其示出了根據(jù)一個實施例,超管理器軟件80如何決定何時設(shè)置訪問操作擴展位。在步驟200,超管理器將操作系統(tǒng)自來源處理單元移動至目標處理單元。在該程序期間,超管理器軟件在步驟205決定操作系統(tǒng)是否能感知多重處理器,在此示例中為是否「能感知SMP」(因為假定硬件為SMP處理電路)。如果操作是統(tǒng)不能感知SMP,則程序進入步驟210,在步驟210中,設(shè)置訪問操作擴展位,而如果操作系統(tǒng)能感知SMP,則在步驟215清除訪問操作擴展位。在步驟210或步驟215的后,隨后在步驟220,超管理器允許操作是統(tǒng)在目標處理單元上開始執(zhí)行。在參閱圖3所描述的實施例中,假定如果操作系統(tǒng)為能感知SMP,則該操作系統(tǒng)將發(fā)布高速緩存維護操作,該高速緩存維護操作能正確地被識別為共享操作或本地操作。然而,在替代實施例中,超管理器僅可經(jīng)配置成每當該超管理器將操作系統(tǒng)自一個處理單元移動至另一處理單元時,設(shè)置訪問操作擴展位,而不管操作系統(tǒng)是否能感知SMP。例如,如果以操作系統(tǒng)了解操作應(yīng)在哪個處理器上執(zhí)行的方式,將能使用SMP的操作系統(tǒng)優(yōu)化,則此舉可適用,因為當操作系統(tǒng)在超管理器層支配下執(zhí)行時,該了解可能有誤。圖4A示意性地示出了根據(jù)一個實施例如何處理本地訪問操作。為了本示例,假定多重處理系統(tǒng)提供三個處理單元300、320、340。為了闡述,僅標識出了處理單元的相關(guān)內(nèi)部結(jié)構(gòu)。因此,每一處理單元300、320、340具有分別與一個或多個本地高速緩存結(jié)構(gòu)310、330,350耦合的相關(guān)聯(lián)維護電路305、325、345。針對處理單元300,訪問操作擴展位307是經(jīng)標識由了,假定在該情況下,已設(shè)置該訪問操作擴展位。隨后,各樣信號線旁的圓圈中的數(shù)字指示在本地訪問操作由維護電路是統(tǒng)305接收后的順序。因此,如圖所示,一旦本地訪問操作由維護電路305接收,則維護電路305參考訪問操作擴展位307,在此情況下,維護電路305發(fā)現(xiàn)訪問操作擴展位307已被設(shè)置。因此,維護電路305隨后對與其相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)310執(zhí)行本地訪問操作,同時還將共享訪問信息發(fā)布至一致性互連360內(nèi)的協(xié)調(diào)電路370。在此示例中,協(xié)調(diào)電路在接收到共享訪問信息后,僅向其他處理單元中的每一者廣播請求,且因此維護電路325以及維護電路345都接收執(zhí)行本地訪問操作的請求。因此,如圖4A中所標識出了,兩個維護電路是統(tǒng)325、340隨后分別對與它們相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)330、350執(zhí)行它們的本地訪問操作。雖然對于本地高速緩存結(jié)構(gòu)310執(zhí)行本地訪問操作,可完全自以下兩者解耦合向協(xié)調(diào)電路是統(tǒng)發(fā)布共享訪問信息的程序以及后續(xù)的其他本地訪問操作,但在一個實施例中,維護電路305可延緩執(zhí)行其本地訪問操作,直至已執(zhí)行所有其他本地訪問操作,且本地訪問操作的結(jié)果經(jīng)由協(xié)調(diào)電路370返回至維護電路305。因此,如鄰近于本地訪問操作信號 路徑(位于維護電路305與本地高速緩存結(jié)構(gòu)310的間)的圓圈中的數(shù)字6所示,可在其他操作完成的后,執(zhí)行該本地訪問操作。圖4B標識出了協(xié)調(diào)電路370保留歷史數(shù)據(jù)的替代實施例,該歷史數(shù)據(jù)使協(xié)調(diào)電路370能夠決定,在接收到共享訪問信息后,向哪些其他處理單元發(fā)布請求。在圖4B中所標識出了的特定示例中,假定協(xié)調(diào)電路370保持向本地高速緩存結(jié)構(gòu)分配數(shù)據(jù)的歷史380。因此,當共享訪問信息由協(xié)調(diào)電路370接收時,協(xié)調(diào)電路可考慮由共享訪問信息所指明的數(shù)據(jù)地址,且根據(jù)分配歷史380,可決定本地高速緩存結(jié)構(gòu)330、350中何者在該地址處具有先前被高速緩存的數(shù)據(jù)。在所闡釋的示例中,協(xié)調(diào)電路370決定本地高速緩存結(jié)構(gòu)330在該地址處具有先前被高速緩存的數(shù)據(jù),但本地高速緩存結(jié)構(gòu)350不具有該數(shù)據(jù)。因此,僅向維護電路325發(fā)布請求,而不向維護電路統(tǒng)345發(fā)布請求。協(xié)調(diào)電路370可采用各樣形式,但在一個實施例中,協(xié)調(diào)電路370將由監(jiān)聽控制單元形成,該監(jiān)聽控制單元用于執(zhí)行監(jiān)聽操作,該監(jiān)聽操作為高速緩存一致性協(xié)議所要求。該高速緩存一致性協(xié)議的功能可擴展為不僅使以數(shù)據(jù)高速緩存為對象而發(fā)布的維護操作得以正確操作,而且使以指令高速緩存、TLB等為對象而發(fā)布的維護操作得以正確操作。圖5是流程圖,其示出了可由虛擬機執(zhí)行的特定順序的操作。特定言的,在步驟400,生成某些程序代碼,在生成該程序代碼時,該程序代碼通常作為數(shù)據(jù)被寫入數(shù)據(jù)高速緩存。然而,在可執(zhí)行該程序代碼的前,首先需要將該程序代碼向外儲存至存儲器,且隨后被取回至指令高速緩存中。因此,在步驟410,發(fā)布本地數(shù)據(jù)高速緩存清除操作,且在步驟420,發(fā)布本地指令高速緩存無效操作。本地數(shù)據(jù)高速緩存清除操作410將使數(shù)據(jù)高速緩存內(nèi)的有效數(shù)據(jù)及錯數(shù)據(jù)被驅(qū)逐至存儲器,而本地指令高速緩存無效操作將確??赡芤延沙绦虼a生成步驟400更新的任何指令將無效,以便隨后在開始執(zhí)行新程序代碼時,不會錯誤地參考指令。因此,在步驟430,當執(zhí)行新程序代碼時,將自存儲器取回正確指令,且該正確指令通常將被儲存于指令高速緩存中。如果未使用本發(fā)明的實施例的上述技術(shù),則存在時段,在該時段中,自一個處理單元切換至另一處理單元的虛擬機執(zhí)行可導(dǎo)致不正確操作。具體地,如果在圖5中所示出了的時段A期間(時段A開始于程序代碼生成程序開始的后的一段時間,且結(jié)束于在步驟410發(fā)布本地數(shù)據(jù)高速緩存清除操作的前),虛擬機自第一處理單元切換至第二處理單元,則當隨后發(fā)布本地數(shù)據(jù)高速緩存清除操作時,該操作僅將清除儲存于第二處理單元的數(shù)據(jù)高速緩存中的數(shù)據(jù)。此舉可使某些新生成的程序代碼繼續(xù)存在于第一處理單元的數(shù)據(jù)高速緩存中,而不清除該數(shù)據(jù)。然而,經(jīng)由使用上述技術(shù),在步驟410發(fā)布的本地數(shù)據(jù)高速緩存清除操作經(jīng)升級為共享數(shù)據(jù)高速緩存清除操作,該升級動作將確保所有所需條目被清除,而不管條目是位于第二處理單元的數(shù)據(jù)高速緩存中,還是第一處理單元的數(shù)據(jù)高速緩存中。類似地,在時段B期間,如果虛擬機的執(zhí)行自第二處理單元切換回至第一處理單元,則可生成問題。在該示例中,在未使用本發(fā)明的情況下,第一處理單元的本地指令高速緩存將不會在420步驟變得無效,且因此可能在步驟430執(zhí)行不 正確的指令。然而,經(jīng)由使用前文描述的技術(shù),在步驟420,本地指令高速緩存無效操作將升級至共享指令高速緩存無效操作,從而確保兩個指令高速緩存中的相關(guān)條目都變得無效。圖6為流程圖,其標識出了頁表更新程序。具體地,在步驟450,使用頁表條目來執(zhí)行地址轉(zhuǎn)換,在該執(zhí)行期間,頁表條目通常將儲存于MMU的TLB內(nèi)。隨后,需要更新頁表條目。因此,在步驟460,發(fā)布本地TLB無效操作,以使即將更新的TLB中的任何高速緩存條目無效。此后,在步驟470,修改相關(guān)頁表條目。隨后,在步驟480,通過使用頁表條目來執(zhí)行地址轉(zhuǎn)換,使該程序繼續(xù),在該執(zhí)行期間,頁表數(shù)據(jù)將再次自存儲器儲存于TLB中。如果在單一處理單元上執(zhí)行這種程序,則將不會生成問題。然而,如果在圖6中所示出了的時段A期間的某一時間,虛擬機的操作自第一處理單元切換至第二處理單元,且隨后在時段B期間的某一時間,虛擬機的實施自第二處理單元切換回至第一處理單元;則在未使用本發(fā)明的實施例的技術(shù)的情況下可生成問題。具體地,由于在時段A期間發(fā)生的切換,所以應(yīng)理解,在步驟460的本地TLB無效操作將不能使第一處理單元的TLB中的相關(guān)頁表條目無效。此意謂當執(zhí)行隨后在時段B期間返回至第一處理單元時,由于仍存在保留于第一處理單元的TLB內(nèi)的過期數(shù)據(jù),在TLB內(nèi)可能發(fā)生瞬時打斷。然而,經(jīng)由使用本發(fā)明的實施例的前述技術(shù),不會生成該問題,因為在步驟460發(fā)布的本地TLB無效操作經(jīng)升級為共享TLB無效操作,且因此兩個TLB中的相關(guān)條目均為無效。雖然直到現(xiàn)在已結(jié)合高速緩存維護操作的處理,描述了本發(fā)明的實施例的技術(shù),但本發(fā)明的實施例的技術(shù)還可用于確保存儲器屏蔽操作的正確操作,如將參閱圖7及圖8的進一步討論。如該技術(shù)領(lǐng)域具有通常技術(shù)者將理解,如果程序想要確保先前記憶體操作(諸如,寫入操作)使該操作結(jié)果為系統(tǒng)中的其他代理器可見,或想要確保在任何后續(xù)記憶體操作開始的前,該先前記憶體操作已完成,則可執(zhí)行存儲器屏蔽操作。因此,如圖7的步驟500所標識出了,決定是否執(zhí)行存儲器屏蔽操作,且每當決定將執(zhí)行存儲器屏蔽操作時,則在步驟510決定是否已設(shè)置訪問操作擴展位。如果否,則在步驟530僅在處理單元上本地執(zhí)行存儲器屏蔽操作,虛擬機當下正在該處理單元上執(zhí)行。然而,如果已設(shè)置訪問操作擴展位,則在步驟520向一致性互連發(fā)布存儲器屏蔽信號520,且在步驟530本地執(zhí)行存儲器屏蔽操作。隨后,一致性互連將使合適的請求發(fā)布至其他處理單元,以使其他處理單元還本地實施存儲器屏蔽操作。當考慮圖8中所標識出了情形的范例順序時,可看到這種方法的益處。具體地,在步驟550,在寫入數(shù)據(jù)得到緩沖的情況下執(zhí)行寫入操作。具體地,在許多系統(tǒng)中,當將寫入數(shù)據(jù)置放于寫入緩沖器中時,寫入操作被認為已完成,而實際上,在該寫入緩沖器中的寫入數(shù)據(jù)被取出且將寫入數(shù)據(jù)真正地交給存儲器的前,可能還需許多周期。因此,如果重要的是,以下某操作可見寫入數(shù)據(jù),則通常在寫入操作的后發(fā)布存儲器屏蔽操作,如圖8中的步驟560所示。此后,當在步驟570執(zhí)行期望先前寫入操作的寫入數(shù)據(jù)為可見的操作時,在步驟560執(zhí)行的存儲器屏蔽操作將確保該寫入數(shù)據(jù)確可為該操作所見。然而,如果在圖8中所示出了的時間A處,虛擬機執(zhí)行自一個處理單元切換至另一處理單元,則應(yīng)理解,除非使用本發(fā)明的實施例的技術(shù),否則存儲器屏蔽操作560將不能達成其目標,因為存儲器屏蔽操作560將本地地被應(yīng)用于處理單元內(nèi),虛擬機隨后于該處理單元上執(zhí)行,而寫入數(shù)據(jù)實際上將保存于不同處理單元的寫入緩沖器中。然而,經(jīng)由使用本發(fā)明的實施例的技術(shù),在步驟560發(fā)布的存儲器屏蔽操作將升級為共享存儲器屏蔽操作,從而在兩個處理單元上執(zhí)行存儲器屏蔽操作,且因此使寫入數(shù)據(jù)被取出至存儲器,且隨后在步驟570執(zhí)行后續(xù)操作時,使寫入數(shù)據(jù)為可見。盡管本文已描述特定實施例,但應(yīng)理解,本發(fā)明并非限于實施例,且可在本發(fā)明的范疇內(nèi)對實施例進行許多修改及添加。例如,在不脫離本發(fā)明的范疇的情況下,可將以下從屬權(quán)利要求的特征與獨立權(quán)利要求的特征進行各種組合。·
權(quán)利要求
1.一種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備包括 處理電路,該處理電路包括用于執(zhí)行數(shù)據(jù)處理操作的多個處理單元,該數(shù)據(jù)處理操作需要訪問共享存儲器中的數(shù)據(jù); 每個處理單元具有與該處理單元相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu),該本地高速緩存結(jié)構(gòu)用于儲存供該處理單元訪問的該數(shù)據(jù)的子集,以及具有訪問控制電路,該訪問控制電路用于處理經(jīng)發(fā)布至所述本地高速緩存結(jié)構(gòu)的訪問操作,將本地高速緩存結(jié)構(gòu)的至少一個類型的訪問操作發(fā)布為本地訪問操作或共享訪問操作; 配置儲存器,該配置儲存器用于儲存訪問操作擴展值; 共享訪問協(xié)調(diào)電路,該共享訪問協(xié)調(diào)電路用于協(xié)調(diào)所述多個處理單元對所述共享訪問操作的處理; 在接收到所述共享訪問操作之后,該訪問控制電路除對該相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)執(zhí)行該本地訪問操作之外,還向該共享訪問協(xié)調(diào)電路發(fā)布共享訪問信號; 在接收到所述本地訪問操作的后,如果未設(shè)置該訪問操作擴展值,則該訪問控制電路被布置,以對該相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)執(zhí)行該本地訪問操作,而不向該共享訪問協(xié)調(diào)電路發(fā)布該共享訪問信號,以及如果已設(shè)置該訪問操作擴展值,則該訪問控制電路是被布置的,則將該本地訪問操作視為所述共享訪問操作。
2.如權(quán)利要求I所述的數(shù)據(jù)處理設(shè)備,其中 在該處理電路系統(tǒng)上執(zhí)行的軟件由多個軟件層級組成; 該存取操作擴充值由在預(yù)定層級上執(zhí)行的軟件設(shè)定和復(fù)位;以及 當處理處理由處于低于所述預(yù)定層級的層級的軟件所發(fā)布的本地訪問操作時,該訪問控制電路僅響應(yīng)于該存取操作擴展值。
3.如權(quán)利要求I或2所述的數(shù)據(jù)處理設(shè)備,其中該至少一個類型的訪問操作包括維護訪問操作,該維護訪問操作被發(fā)布以更新儲存于該本地高速緩存結(jié)構(gòu)的至少一個條目中的數(shù)據(jù)的狀態(tài)。
4.如權(quán)利要求3所述的數(shù)據(jù)處理設(shè)備,其中所述維護訪問操作對于該本地高速緩存結(jié)構(gòu)的該至少一個條目,執(zhí)行清除操作和無效操作中的至少一者。
5.如前述權(quán)利要求中的任一項所述的數(shù)據(jù)處理設(shè)備,其中該處理電路執(zhí)行超管理器軟件,以支持至少一個虛擬機在該處理電路上的執(zhí)行,該虛擬機被布置為發(fā)布所述至少一個類型的訪問操作。
6.如權(quán)利要求5所述的數(shù)據(jù)處理設(shè)備,其中所述至少一個虛擬機中的每一個包括運行一個或多個應(yīng)用程序的操作系統(tǒng)。
7.如權(quán)利要求6所述的數(shù)據(jù)處理設(shè)備,其中當該超管理器軟件將所述操作自所述多個處理單元中的第一處理單元移動至所述多個處理單元中的第二處理單元時,該超管理器軟件使所述訪問操作擴展值得以被設(shè)置。
8.如權(quán)利要求7所述的數(shù)據(jù)處理設(shè)備,其中在設(shè)置該訪問操作擴展值的后,該訪問控制電路將所述至少一個虛擬機發(fā)布的任何本地訪問操作視為所述共享訪問操作,但該訪問控制電路繼續(xù)將該超管理器軟件發(fā)布的本地訪問操作處理作為本地訪問操作處理。
9.如前述權(quán)利要求中的任一項所述的數(shù)據(jù)處理設(shè)備,其中所述本地高速緩存結(jié)構(gòu)是用于高速緩存高速緩存用作所述數(shù)據(jù)處理操作的操作數(shù)數(shù)據(jù)的數(shù)據(jù)高速緩存。
10.如權(quán)利要求I至8中的任一項所述的數(shù)據(jù)處理設(shè)備,其中所述本地高速緩存結(jié)構(gòu)包括轉(zhuǎn)換旁視緩沖器,該轉(zhuǎn)換旁視緩沖器用于高速緩存頁表數(shù)據(jù),該頁表數(shù)據(jù)是從所述共享存儲器中的頁表獲得的,并且,在執(zhí)行該相關(guān)聯(lián)的處理單元內(nèi)的虛擬地址到物理地址的轉(zhuǎn)換時,使用該轉(zhuǎn)換旁視緩沖器。
11.如權(quán)利要求I至8中的任一項所述的數(shù)據(jù)處理設(shè)備,其中所述本地高速緩存結(jié)構(gòu)是指令高速緩存,該指令高速緩存用于高速緩存指令,該指令用于所述數(shù)據(jù)處理操作。
12.如前述權(quán)利要求中的任一項所述的數(shù)據(jù)處理設(shè)備,其中所述共享訪問協(xié)調(diào)電路響應(yīng)于所述共享訪問信號,以向處理單元中的每一個廣播本地訪問操作請求,而非向訪問控制電路已發(fā)布了所述共享訪問信號的處理單元廣播本地訪問操作請求,從而在處理單元中的每一個上執(zhí)行本地訪問操作。
13.如權(quán)利要求I至11中的任一項所述的數(shù)據(jù)處理設(shè)備,其中所述共享訪問協(xié)調(diào)電路響應(yīng)于所述共享訪問信號,以從所述多個處理單元確定處理單元的子集,該子集的本地高速緩存結(jié)構(gòu)可包括由共享訪問操作識別的數(shù)據(jù),并且,向所述子集中的處理單元中的每一個發(fā)布本地訪問操作請求。
14.如前述權(quán)利要求中的任一項所述的數(shù)據(jù)處理設(shè)備,其中在由所述處理單元中的第一處理單元執(zhí)行存儲器屏蔽操作之后,如果已設(shè)置所述訪問操作擴展值,則所述處理單元中的所述第一處理單元被布置,以發(fā)布存儲器屏蔽信號,以使所述存儲器屏蔽操作在所述處理單元中的至少一個其他處理單元上執(zhí)行。
15.如權(quán)利要求14所述的數(shù)據(jù)處理設(shè)備,其中處理單元中的該第一處理單元向該共享訪問協(xié)調(diào)電路是統(tǒng)發(fā)布該存儲器屏蔽信號,以使該存儲器屏蔽操作在處理單元中的該至少一個其他處理單元上執(zhí)行。
16.如前述權(quán)利要求中的任一項所述的數(shù)據(jù)處理設(shè)備,其中所述共享訪問協(xié)調(diào)電路包括高速緩存一致性電路,該高速緩存一致性采用高速緩存一致性協(xié)議,以確保由每一處理單元所訪問的所述數(shù)據(jù)是最新的。
17.如前述權(quán)利要求中的任一項所述的數(shù)據(jù)處理設(shè)備,其中所述配置儲存器為所述多個處理單元中的每一處理單元儲存分離訪問操作擴展值,并且,該訪問控制電路在處理該本地訪問操作時,參考與該訪問控制電路相關(guān)聯(lián)的訪問操作擴展值。
18.如前述權(quán)利要求中的任一項所述的數(shù)據(jù)處理設(shè)備,其中所述多個處理單元形成對稱多重處理SMP處理電路的多個處理器。
19.一種處理經(jīng)發(fā)布至數(shù)據(jù)處理設(shè)備內(nèi)本地高速緩存結(jié)構(gòu)的訪問操作的方法,該數(shù)據(jù)處理設(shè)備具有多個處理單元,該多個處理單元用于執(zhí)行需要訪問共享存儲器中的數(shù)據(jù)的數(shù)據(jù)處理操作,每一處理單元具有與該處理單元相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu),該本地高速緩存結(jié)構(gòu)用于儲存供該處理單元訪問的數(shù)據(jù)的子集,該方法包括以下步驟 提供共享訪問協(xié)調(diào)電路,以協(xié)調(diào)所述多個處理單元對共享訪問操作的處理; 儲存訪問操作擴展值; 在處理經(jīng)發(fā)布至本地高速緩存結(jié)構(gòu)中的一個的所述共享訪問操作時,除對所述本地高速緩存結(jié)構(gòu)中的一個執(zhí)行本地訪問操作以外,還向該共享訪問協(xié)調(diào)電路發(fā)布共享訪問信息; 在處理經(jīng)發(fā)布至本地高速緩存結(jié)構(gòu)中的一個的本地訪問操作時(1)如果未設(shè)置該訪問操作擴展值,則對所述本地高速緩存結(jié)構(gòu)中的一個執(zhí)行本地訪問操作,而不向該共享訪問協(xié)調(diào)電路發(fā)布該共享訪問信息,以及 (2)如果已設(shè)置了該訪問操作擴展值,則將該本地訪問操作視為所述共享訪問操作。
20.一種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備包括 處理裝置電路,該處理裝置電路包括用于執(zhí)行數(shù)據(jù)處理操作的多個處理單元裝置,該數(shù)據(jù)處理操作需要訪問共享存儲器中的數(shù)據(jù); 每個處理單元裝置具有與該處理單元裝置相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)裝置,該本地高速緩存結(jié)構(gòu)裝置用于儲存供該處理單元裝置訪問的所述數(shù)據(jù)的子集,以及具有訪問控制裝置,該訪問控制裝置用于處理發(fā)布至該本地高速緩存結(jié)構(gòu)裝置的訪問操作,該本地高速緩存結(jié)構(gòu)裝置的至少一個類型的訪問操作被發(fā)布為本地訪問操作或共享訪問操作; 配置儲存器裝置,該配置儲存器裝置用于儲存訪問操作擴展值; 共享訪問協(xié)調(diào)裝置,該共享訪問協(xié)調(diào)裝置用于協(xié)調(diào)所述多個處理單元裝置對所述共享訪問操作的處理; 在接收到所述共享訪問操作之后,該訪問控制裝置除了用于對該相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)裝置執(zhí)行該本地訪問操作以外,還用于向該共享訪問協(xié)調(diào)裝置發(fā)布共享訪問信息;在接收到所述本地訪問操作之后,如果未設(shè)置該訪問操作擴展值,則該訪問控制裝置用于對該相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)裝置執(zhí)行該本地訪問操作,而不向該共享訪問協(xié)調(diào)裝置發(fā)布該共享訪問信息,并且,如果已設(shè)置了該訪問操作擴展值,則該訪問控制裝置用于將該本地訪問操作視為所述共享訪問操作。
全文摘要
提供了一種用于處理經(jīng)發(fā)布至數(shù)據(jù)處理設(shè)備內(nèi)本地高速緩存結(jié)構(gòu)的訪問操作的設(shè)備與方法。該數(shù)據(jù)處理設(shè)備包括多個處理單元,每個處理單元具有與該處理單元相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)。還提供了共享訪問協(xié)調(diào)電路系統(tǒng)以協(xié)調(diào)經(jīng)發(fā)布至任一本地高速緩存結(jié)構(gòu)的共享訪問操作的處理。對共享訪問操作而言,與本地高速緩存結(jié)構(gòu)相關(guān)聯(lián)的訪問控制電路系統(tǒng)將對該本地高速緩存結(jié)構(gòu)執(zhí)行本地訪問操作,該共享高速緩存操作是發(fā)布至該本地高速緩存結(jié)構(gòu),并且,訪問控制電路將向共享訪問協(xié)調(diào)電路是統(tǒng)發(fā)布共享訪問信息。對本地訪問操作而言,訪問控制電路系統(tǒng)通常將在相關(guān)聯(lián)的本地高速緩存結(jié)構(gòu)上執(zhí)行本地訪問操作,并且,不通知共享訪問協(xié)調(diào)電路系統(tǒng)。然而,如果已設(shè)置訪問操作擴展值,則訪問控制電路系統(tǒng)將這種本地訪問操作視為共享訪問操作。即使在操作系統(tǒng)和/或應(yīng)用程序自一個處理單元遷移至另一處理單元之后,這種方法仍確保正確操作。
文檔編號G06F12/08GK102971718SQ201180029501
公開日2013年3月13日 申請日期2011年5月11日 優(yōu)先權(quán)日2010年6月16日
發(fā)明者弗雷德里克·克勞德·瑪麗·皮里, 路易斯-瑪麗·文森特·穆頓, 盧卡·斯卡拉布里諾 申請人:Arm 有限公司