[go: up one dir, main page]

TWI493349B - 用於操控經發佈至資料處理設備內局部快取記憶體結構之存取操作的設備與方法 - Google Patents

用於操控經發佈至資料處理設備內局部快取記憶體結構之存取操作的設備與方法 Download PDF

Info

Publication number
TWI493349B
TWI493349B TW100116884A TW100116884A TWI493349B TW I493349 B TWI493349 B TW I493349B TW 100116884 A TW100116884 A TW 100116884A TW 100116884 A TW100116884 A TW 100116884A TW I493349 B TWI493349 B TW I493349B
Authority
TW
Taiwan
Prior art keywords
access
access operation
cache memory
local
shared
Prior art date
Application number
TW100116884A
Other languages
English (en)
Other versions
TW201211777A (en
Inventor
Frederic Claude Marie Piry
Louis-Marie Vincent Mouton
Luca Scalabrino
Original Assignee
Advanced Risc Mach Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Mach Ltd filed Critical Advanced Risc Mach Ltd
Publication of TW201211777A publication Critical patent/TW201211777A/zh
Application granted granted Critical
Publication of TWI493349B publication Critical patent/TWI493349B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Description

用於操控經發佈至資料處理設備內局部快取記憶體結構之存取操作的設備與方法
本發明係關於一種用於操控經發佈至資料處理設備內局部快取記憶體結構之存取操作的設備與方法,特定言之,其中該資料處理設備提供複數個處理單元,該複數個處理單元之每一者各自具有此種局部快取記憶體結構。
兩個或兩個以上處理單元(例如,處理器核心)共享對共享記憶體之存取的多重處理系統已被揭示。通常,此種系統用於:藉由將不同處理器核心配置成並行執行各別資料處理操作,而獲得較高效能。
為進一步改善存取此多重處理系統內之資料之速度,已知為處理單元中之每一者提供至少一個局部快取記憶體結構,該局部快取記憶體結構用於儲存保存於共享記憶體中的資料之子集。此種局部快取記憶體結構可採用各樣形式,例如,用以儲存由處理單元處理之資料的資料快取記憶體、用以儲存由處理單元執行之指令的指令快取記憶體、在將由處理單元發佈之虛擬位址轉換為實體位址時,用以儲存所使用之頁表資訊的轉換旁視緩衝器(translation lookaside buffer;TLB)等。
在多重處理系統內,應用程式可自一個處理單元遷移至另一處理單元。因此,存在以下可能性:在於一個處理單元上執行時,由應用程式使用的資料在應用程式已遷移至另一處理單元之後,可繼續在該處理單元之局部快取記憶體結構中被快取。雖然,已知提供一致性(coherency)機制,來掌握保留於各樣局部快取記憶體結構中之資料,以確保處理單元將始終存取最新版本之資料,以下情況仍可發生:在局部快取記憶體結構之一或多個項目(entry)執行之操作,可能不會對保存於另一處理單元之局部快取記憶體結構中之資料執行相應的操作,而此時此種操作之執行將較合適。此種情況之一個實例為快取記憶體維護操作之執行。
通常,快取記憶體維護操作係由作業系統發佈,以更新局部快取記憶體結構中之一或多個項目之狀態。若作業系統未完全感知由資料處理設備提供的複數個處理單元,例如可為以下狀況:若該作業系統為由超管理器(hypervisor)軟體層自硬體平臺屏蔽之單處理器作業系統,則該作業系統可發佈快取記憶體維護操作,該快取記憶體維護操作僅將對局部快取記憶體結構執行,該局部快取記憶體結構與正執行之作業系統所在之處理單元相關聯,即使該快取記憶體維護操作將應用之資料可儲存於另一處理單元之局部快取記憶體結構中。僅僅舉例而言,考慮以下情形:快取記憶體維護操作識別出:特定位址範圍或特定程序識別符(程序ID)之任何快取項目應為無效。當對於當前正執行之作業系統所在之處理單元之局部快取記憶體結構執行該操作時,則此種快取記憶體維護操作將恰當地使該局部快取記憶體結構中之任何項目無效,該局部快取記憶體結構未於特定位址範圍內,或與特定程序ID相關聯。然而,對於保存於任何其他處理單元之相應局部快取記憶體結構中之資料,將不採取動作。如之前所述,實際上,該等舉措仍可保留資料,該資料意欲成為此種快取記憶體維護操作之操作對象(subject),但由於作業系統未感知硬體架構,所以該等項目將不為快取記憶體維護操作之操作對象。
雖然此問題不僅將在使用超管理器軟體時出現,但通常該問題可能在使用超管理器軟體層時出現。特定言之,多重處理系統可執行超管理器軟體,以支援至少一個虛擬機在處理電路系統上之執行,每一虛擬機包含:執行一或多個應用程式之作業系統。在此種環境中,作業系統與一或多個應用程式皆無需瞭解下層(underlying)硬體平臺,且尤其將不需感知正在使用多重處理系統。因此,應用程式及/或作業系統可發佈以單處理器環境為前提之快取記憶體維護操作,且因此可能產生上述之問題。
對超管理器而言,解決此種問題之一個方法為,當作業系統及/或應用程式自一個處理單元遷移(於本文中亦稱為「切換」)至另一處理單元時,執行各樣快取記憶體維護操作。例如,在允許被切換之作業系統及/或應用程式在新處理器核心上開始操作之前,超管理器可廣泛地執行資料快取記憶體清除及無效(invalidate)操作、指令快取記憶體無效操作、TLB無效操作等。然而,雖然此種方法將解決該問題,但此種方法顯著地影響了效能,且尤其讓使用多重處理平臺之潛在益處不得實現。
對超管理器軟體而言,替代方法可為:當將作業系統及/或應用程式自來源處理單元遷移至目的處理單元時,將來源處理單元標示(mark)為用於隨後將在目的處理器上執行之某些操作的可能目標。隨後,超管理器將必須進一步將目的處理器程式化,以在遭遇任何此類操作時截獲任何此類操作,以便隨後在發佈此類操作時,超管理器將得到通知。此時,超管理器軟體將隨後決定是否亦需要在來源處理器以及目的處理器上執行此種操作。然而,此種方法之顯著缺陷為:需要截獲在目的處理器上所執行的操作。此舉引起顯著的效能損失,因為超管理器軟體比所需更為頻繁地被調用。特定言之,若並非基於微粒(fine grain)而設計該截獲功能性,則超管理器軟體可能被調用於許多操作,在該等操作中,不需要與來源處理器有關之動作。亦存在顯著的複雜性問題,因為超管理器軟體需要瞭解操作,以決定是否需要在來源處理器以及目的處理器上執行該等操作。
因此,需要提供一種改良技術,該技術用於操控經發佈至具有複數個處理單元之資料處理系統內局部快取記憶體結構之存取操作,該等處理單元中之每一者具有此種局部快取記憶體結構。
自一第一態樣觀察,本發明提供一種資料處理設備,該資料處理設備包含:處理電路系統,該處理電路系統包含:用於執行資料處理操作的複數個處理單元,該資料處理操作需要存取共享記憶體中之資料;每一處理單元具有與該處理單元相關聯之一局部快取記憶體結構,該局部快取記憶體結構用於儲存供該處理單元存取之該資料之一子集;以及具有存取控制電路系統,該存取控制電路系統用於操控經發佈至該局部快取記憶體結構之存取操作,將該局部快取記憶體結構之至少一個類型的存取操作發佈為一局部存取操作或一共享存取操作;一配置儲存器,該配置儲存器用於儲存一存取操作擴充值;共享存取協調電路系統(coordination circuitry),該共享存取協調電路系統用於協調該複數個處理單元對該共享存取操作之操控;在接收到該共享存取操作之後,該存取控制電路系統除對該相關聯之局部快取記憶體結構執行該局部存取操作之外,亦向該共享存取協調電路系統發佈一共享存取訊號;在接收到該局部存取操作之後,若未設定該存取操作擴充值(extension value),則該存取控制電路系統係經配置,以對該相關聯之局部快取記憶體結構執行該局部存取操作,而不向該共享存取協調電路系統發佈該共享存取訊號;以及若已設定該存取操作擴充值,則該存取控制電路系統係經配置,以將該局部存取操作視為該共享存取操作。
根據本發明,可將特定類型之存取操作發佈為局部存取操作或共享存取操作。隨後,提供配置儲存器,該配置儲存器由以下方式用於儲存存取操作擴充值:操控局部存取操作之方式取決於是否已設定該存取操作擴充值而。當與局部快取記憶體結構相關聯之存取控制電路系統接收共享存取操作時,則該存取操作擴充值之值並不相關,且該存取控制電路系統僅將對相關聯之局部快取記憶體結構執行局部存取操作,且另外向共享存取協調電路系統發送共享存取訊號。隨後,該共享存取協調電路系統將向其他處理單元廣播訊號,以使該局部存取操作亦根據與該等處理單元相關聯之局部快取記憶體結構而執行,或者,替代地,在考慮到該共享存取協調電路系統所保留之某種狀態的情況下,該共享存取協調電路系統將決定該等處理單元之子集,係將此種訊號發送至該等處理單元。
當該存取控制電路系統接收到局部存取操作時,則在未設定該存取操作擴充值之情況下,該存取控制電路系統僅對該相關聯之局部快取記憶體結構執行該局部存取操作。然而,若已設定該存取操作擴充值,則根據本發明,即使僅接收到一局部存取操作,該存取控制電路系統亦將該局部存取操作視為一共享存取操作。
藉由此種方法,應理解,上述問題得以緩解。特定言之,一旦已設定該存取操作擴充值,則局部存取操作將被視為共享存取操作,且因此,以下狀況並不要緊:即便使局部存取操作發佈之實體(entity)並未感知該多重處理系統之結構,或可能試圖成為實體的目標之資料實際上可被儲存於另一處理單元之局部快取記憶體結構中。
此外,當與上述之機制相比較時,由於保留在多重處理平臺上執行之效能益處,本發明之方法顯著地改良效能,且減低複雜度。此外,在使用超管理器軟體之實施例中,既不需要截獲任何局部存取操作,亦不需要該超管理器軟體瞭解該等操作,以決定應如何處理此種截獲操作。
一旦已設定該存取操作擴充值,則在一個實施例中,可將所有後續局部存取操作視為共享存取操作,無論其來源如何。然而,在替代實施例中,在該處理電路系統上執行之軟體由複數個軟體階層(hierarchical level)組成,該存取操作擴充值由處於預定階層而實施之軟體設定及復位(unset),且當操控由處於低於該預定階層之一階層之軟體發佈的局部存取操作時,該存取控制電路系統僅回應於該存取操作擴充值。因此,舉例而言,考慮使用超管理器軟體之一實施例,該超管理器軟體可形成最高階層,作業系統可形成較低階層,且在該作業系統上執行之該等應用程式可形成更低階層。若該超管理器階層已設定該存取操作擴充值,則由該作業系統或該等應用程式發佈之任何局部存取操作將視為共享存取操作,然而該超管理器軟體可持續發佈局部存取操作,該局部存取操作係被操控為局部存取操作之。此舉,例如,在該作業系統為單處理器作業系統之情況下可適用,且因此未感知該處理電路系統之多重處理性質。在另一個實例中,即使該作業系統感知該處理電路系統之多重處理器性質,該方法仍可適用,例如:若以該作業系統瞭解操作應以哪個處理器為目標之方式,將該作業系統最佳化,但在超管理器支配下執行該作業系統之情形下,該瞭解可能有誤。
在替代實施例中,若該作業系統已設定該存取操作擴充值,則由該等下層應用程式發佈之任何局部存取操作將視為共享存取操作,但該作業系統(及實際上在該作業系統上層之任何超管理器階層)可持續發佈局部存取操作,該局部存取操作由該存取控制電路系統操控為局部存取操作。
可被發佈為局部存取操作或共享存取操作之該至少一個類型的存取操作可採用各樣形式。在一個實施例中,一個此種類型之存取操作包含:維護存取操作,該維護存取操作係經發佈以更新資料狀態,該資料狀態係儲存於該局部快取記憶體結構之至少一個項目中。因此,維護存取操作通常將不更新儲存於該快取記憶體結構中之該資料本身,但替代地,維護存取操作將產生相關聯之狀態的改變,該相關聯之狀態係保存於與該資料相關聯之該局部快取記憶體結構中。在一個特定實施例中,該維護存取操作對於該局部快取記憶體結構之該至少一個項目,執行清除操作及無效操作中之至少一者。清除操作將使任何錯資料(dirty data)及有效資料被驅逐(evict)至記憶體,錯資料為比保存於記憶體中之資料更新的相應資料。通常,結合資料快取記憶體執行此種維護存取操作。無效操作將例如藉由重設與該項目相關聯之有效位元,而使該局部快取記憶體結構中之特定項目之當前內容無效。通常,結合各樣不同的局部快取記憶體結構(例如,指令快取記憶體、資料快取記憶體、TLB等)以使用無效操作。
在一個實施例中,該處理電路系統執行超管理器軟體,以支援至少一個虛擬機(virtual machine)在該處理電路系統上之執行,該虛擬機係經配置以發佈該至少一個類型的存取操作。通常,每一虛擬機將包含:執行一或多個應用程式之作業系統。如前所述,多重處理系統內之此種超管理器軟體之一個用途為,允許在該多重處理系統上執行單處理器感知作業系統,其中該超管理器軟體使該硬體平臺之特定結構自該作業系統屏蔽。
然而,即使該作業系統能使用多重處理器,在超管理器軟體之控制下執行此種作業系統仍可存在益處。例如,當需要在給定之多重處理器系統上使多個作業系統共存時,可在超管理器軟體之控制下執行能使用多重處理器的作業系統。藉由此種方法,可在該硬體上同時執行兩個已知作業系統,而不對該等作業系統中之任一者進行修改。如另一實例,超管理器軟體通常亦用於多重處理器系統中,其中部分該等處理器的電力開啟及電力切斷係在該超管理器之控制下。在此種實施例中,該作業系統通常將不感知到以下狀況:該作業系統正在執行之該硬體具有取決於工作負荷而啟用(active)之不同數目個處理器。藉由控制該超管理器階層中該多重處理系統之該電力開啟/切斷,委託代工(OEM)供應商可提供附加價值,而無需對所支援之該多個作業系統進行修改。
當使用超管理器軟體時,通常將發生以下狀況:該超管理器軟體將在特定時間點,將該作業系統自該等處理單元中之一者移動至該等處理單元中之另一者,以使得在該移動程序之後,該作業系統隨後將在該處理單元(已將作業系統移動至該處理單元)上連同任何下層應用程式而重新開始操作。在一個特定實施例中,當該超管理器軟體以此方式移動作業系統時,則該超管理器軟體使該存取操作擴充值得以被設定。在設定該存取操作擴充值之後,該存取控制電路系統隨後將自該至少一個虛擬機發佈之任何局部存取操作視為共享存取操作,但該存取控制電路系統持續將自該超管理器軟體發佈之局部存取操作操控為局部存取操作。
如前所述,該局部快取記憶體結構可採用各種形式。在一個實施例中,該局部快取記憶體結構為:用於快取作為運算元資料之資料的資料快取記憶體,該運算元資料係用於該等資料處理操作。或者,該局部快取記憶體結構可包含:轉換旁視緩衝器(translation lookaside buffer),該轉換旁視緩衝器用於快取頁表資料,該頁表資料係自該共享記憶體中之頁表獲得,且在執行該相關聯之處理單元內之虛擬位址至實體位址之轉換時,使用該轉換旁視緩衝器。如另一實例,該局部快取記憶體結構可包含:指令快取記憶體,該指令快取記憶體用於快取指令,該指令用於定義該等資料處理操作。在又一實例中,該局部快取記憶體結構可包含:分支歷史緩衝器(branch history buffer),該分支歷史緩衝器用於儲存資料,該資料為分支預測單元在預測是否將採用分支時所參考,或者分支目標緩衝器(branch target buffer),該分支目標緩衝器用於儲存分支指令之目標位址。
有許多該共享存取協調電路系統可回應於該共享存取訊號之方式。在一個實施例中,該共享存取協調電路系統回應於該共享存取訊號,以向該等處理單元中之每一者(除了該處理單元之存取控制電路系統已發佈該共享存取訊號之處理單元)廣播局部存取操作請求,藉此在該等處理單元中之每一者上執行該局部存取操作。因此,在此類實施例中,該共享存取協調電路系統並不試圖決定哪些處理單元可含有資料,該資料為原始共享存取操作之對象(該原始共享存取操作為經同樣發佈之共享存取操作,或為由該存取控制電路系統升級為共享存取操作之局部存取操作(由於已設定該存取操作擴充值))。替代地,該共享存取協調電路系統僅向該等處理單元中之每一者廣播請求,以使該等處理單元對於該原始共享存取操作所指明的資料執行局部存取操作。
在替代實施例中,該共享存取協調電路系統回應於該共享存取訊號,以自該複數個處理單元決定處理單元之一子集,該子集之局部快取記憶體結構可含有由該共享存取操作識別之資料,及向該子集中之該等處理單元中之每一者發佈一局部存取操作請求。此類方法在以下情況為可能:該共享存取協調電路系統維護已被快取資料之某些記錄,且因此瞭解任何特定資料,局部快取記憶體結構可能儲存該特定資料之複本。此舉使該共享存取協調電路系統發佈的該等請求能夠侷限於該等處理單元之一子集,藉此產生能量效率增益,且藉由減少不必要的所執行之存取操作之數目,潛在地達成更好效能。
雖然本發明之實施例的上述技術係結合存取操作而使用,但亦可結合其他類型之操作使用而該技術。例如,當應用程式想要確保先前之記憶體操作(例如,寫入操作)對該系統之各種其他部分係為可見(visible),或想要確保後續記憶體操作係根據此類先前記憶體操作而被排序(order),則已知此種應用程式執行記憶體屏障(memory barrier)操作,以加強記憶體存取之給定排序,或者確保該先前記憶體操作之結果係為可見。然而,若該應用程式在所述的該記憶體操作與該記憶體屏障操作之間,自一個處理單元遷移至另一處理單元,則該記憶體屏障操作可能將不會達成其預期目的。然而,根據一個實施例,在該由等處理單元中之一第一處理單元執行一記憶體屏障操作之後,若已設定該存取操作擴充值,該等處理單元中之該第一處理單元係經配置,以發佈一記憶體屏障訊號,以使該記憶體屏障操作在該等處理單元中之至少一個其他處理單元上執行。
可為該記憶體屏障訊號提供專用傳播路徑,以使該等其他處理單元知悉該記憶體屏障訊號,且因此需要局部地執行記憶體屏障操作。然而,在一個實施例中,該等處理單元中之該第一處理單元向該共享存取協調電路系統發佈該記憶體屏障訊號,以使該記憶體屏障操作在該等處理單元中之該至少一個其他處理單元上執行。因此,在此種實施例中,該共享存取協調電路系統被重新使用,以管理傳播,該傳播將該記憶體屏障操作傳播至該等所需處理單元。
該共享存取協調電路系統可採用各種形式。然而,在一個實施例中,該共享存取協調電路系統包含:快取記憶體一致性(coherency)電路系統,該快取記憶體一致性系統採用快取記憶體一致性協定,以確保由每一處理單元存取知該資料為最新的。
在一個實施例中,可為整個系統提供單一存取操作擴充值。然而,在替代實施例中,該配置儲存器為該複數個處理單元中之每一處理單元儲存一分離存取操作擴充值,且該存取控制電路系統在操控該局部存取操作時,參考與該存取控制電路系統相關聯知存取操作擴充值。在一個此種實施例中,該配置儲存器可由某中央儲存器提供,或者,可在每一處理單元中提供分離儲存器,該分離儲存器共同形成該配置儲存器,以使得將該相關之存取操作擴充值局部地儲存至每一處理單元。
該複數個處理單元可採用各種形式,在一個實施例中,該等處理單元中之每一者包含:處理器。處理器毋需全部相同,但在一個實施例中,該複數個處理器形成對稱多重處理(symmetric multi-processing;SMP)處理電路系統。
自一第二態樣觀之,本發明提供一種操控經發佈至一資料處理設備內局部快取記憶體結構之存取操作的方法,該資料處理設備具有複數個處理單元,該複數個處理單元用於執行需要存取共享記憶體中之資料之資料處理,每一處理單元具有與該處理單元相關聯之一局部快取記憶體結構,該局部快取記憶體結構用於儲存供該處理單元存取之等資料之一子集,該方法包含以下步驟:提供共享存取協調電路系統,以協調該複數個處理單元對一共享存取操作之操控;儲存一存取操作擴充值;在操控經發佈至該等局部快取記憶體結構中之一者之該共享存取操作時,除對該等局部快取記憶體結構中之該一者執行一局部存取操作之外,亦向該共享存取協調電路系統發佈一共享存取訊號;在操控經發佈至該等局部快取記憶體結構中之一者之一局部存取操作時:(1)若未設定該存取操作擴充值,則對該等局部快取記憶體結構中之該一者執行該局部存取操作,而不向該共享存取協調電路系統發佈該共享存取訊號;以及(2)若已設定該存取操作擴充值,則將該局部存取操作視為該共享存取操作。
自一第三態樣觀之,本發明提供一種資料處理設備,該資料處理設備包含:處理構件電路系統,該處理構件電路系統包含:用於執行資料處理操作的複數個處理單元構件,該資料處理操作需要存取共享記憶體中之資料;每一處理單元構件具有與該處理單元構件相關聯之局部快取記憶體結構構件,該局部快取記憶體結構構件用於儲存供該處理單元構件存取之該資料之一子集,以及具有存取控制構件,該存取控制構件用於操控經發佈至該局部快取記憶體結構構件之存取操作,將該局部快取記憶體結構構件之至少一個類型的存取操作發佈為一局部存取操作或一共享存取操作;配置儲存器構件,該配置儲存器構件用於儲存一存取操作擴充值;共享存取協調構件,該共享存取協調構件用於協調該複數個處理單元構件對該共享存取操作之操控;在接收到該共享存取操作之後,該存取控制構件除用於對該相關聯之局部快取記憶體結構構件執行該局部存取操作之外,亦用於向該共享存取協調構件發佈一共享存取訊號;在接收到該局部存取操作之後,若未設定該存取操作擴充值,則該存取控制構件用於對該相關聯之局部快取記憶體結構構件執行該局部存取操作,而不向該共享存取協調構件發佈該共享存取訊號,以及若已設定該存取操作擴充值,則該存取控制構件用於將該局部存取操作視為該共享存取操作。
本發明將參照本發明之如隨附圖式中所闡釋之實施例,僅以例子而更進一步地描述。
第1圖圖示根據一個實施例之多重處理系統。提供複數個處理單元10、40,在闡釋性實例中,兩個處理單元為:包含處理器核心及相關聯之局部快取記憶體結構之處理器。雖然處理器不須皆相同,但在一個實施例中,處理器被相同地建構,且形成SMP系統。如圖所示,第一處理電路系統10包含:用於執行一連串指令之核心20。核心20可存取一或多個快取記憶體24,在一個實施例中,快取記憶體24可包含:指令快取記憶體及分離資料快取記憶體。亦可提供其他局部快取記憶體結構,諸如記憶體管理單元(memory management unit;MMU) 26在執行記憶體存取控制操作(諸如由虛擬位址轉換至實體位址)時所參考的TLB 28。
亦提供維護電路系統22,以用於對局部快取記憶體結構(在該實例中為快取記憶體24及TLB 28)執行維護操作。在一個實施例中,維護電路系統22可被認為形成部分處理器核心20,例如,且可被認為形成由核心20提供之執行管線中之一者。處理器10亦包括用於配置處理器之操作的一或多個配置暫存器30。根據本發明之實施例,儲存於配置暫存器30中之資訊包括:存取操作擴充值。該存取操作擴充值係維護電路系統22在執行快取記憶體維護操作時所參考。特定言之,如隨後更詳細之描述,取決於存取操作擴充值之值,維護電路系統將改變操控快取記憶體維護操作之方式,該快取記憶體維護操作係經指明為局部操作。
在闡釋性實施例中,處理器40以與處理器10相同之方式被建構,且因此包括核心50、維護電路系統52、快取記憶體54、MMU 56內之TLB 58及一或多個配置暫存器60。
各樣處理單元10、40經由一致性互連(coherent interconnect)70與共享記憶體75連接。一致性互連70確保儲存於各樣局部快取記憶體結構中之資料維持一致性,使得每一處理器具有一致的資料。因此,舉例而言,若核心50發佈資料存取請求,該資料存取請求在核心50之資料快取記憶體54中未得到資料,則此舉將使一請求被發佈至一致性互連70,一致性互連70隨後將決定所需資料是否儲存於處理單元10之相應的資料快取記憶體24內。若是,則將自處理單元10之資料快取記憶體擷取(retrieve)該資料,且將該資料提供至處理單元40。取決於由一致性互連70使用之一致性協定(coherency protocol),可將處理單元10之資料快取記憶體中之相關資料標示為無效,或者,兩個處理單元10、40可將它們的資料複本標示為共享。隨後,此舉將影響關於該資料之後續存取操作如何被操控。只有當在其他快取記憶體中之一者中,未能找到所請求之資料時,才會自記憶體75存取該資料。
雖然,此種技術通常操作得很好,以維持資料之一致性,但當在硬體上執行的作業系統及下層應用程式未感知硬體之多重處理器性質時,可產生問題,諸如,當使用超管理器軟體以允許執行多個虛擬機時,可出現問題。特定言之,如第1圖中所圖示,超管理器軟體80可在由多個處理單元10、40組成的硬體平臺上執行,以支援至少一個虛擬機90在處理電路系統上之執行。每一虛擬機將由執行一或多個應用程式94、96之作業系統92組成。如下文所將更詳細地描述的,當僅有單一虛擬機90正由超管理器80執行時,或者,替代地,可存在多於一個的虛擬機,超管理器軟體正支援該多於一個的虛擬機之執行時,可使用本發明之實施例之技術。因此,如虛線框中所圖示,可提供至少另一個虛擬機100,該虛擬機100由執行數個應用程式104、106之作業系統102組成。
在操作時,超管理器軟體80可將虛擬機自一個處理單元遷移至另一處理單元,例如,當將每一處理單元10、40之電流負載納入考慮,而設法提高效能時。由於由超管理器軟體80將下層硬體自虛擬機屏蔽,所以虛擬機90通常將未感知其正在哪個處理單元10、40上執行,且此外,虛擬機90通常將未感知其操作何時自一個處理單元被切換至另一處理單元。因此,因為虛擬機期望作為該等快取記憶體維護操作之對象的資料將儲存於局部快取記憶體結構中,所以作業系統92及/或應用程式94、96可發佈被指明為局部快取記憶體維護操作之快取記憶體維護操作。然而,若在將資料最初儲存於快取記憶體結構中的時間與發佈快取記憶體維護操作的時間之間,虛擬機已自一個處理單元遷移至另一處理單元,則由於並非所有作為快取記憶體維護操作之對象的資料都正經受該快取記憶體維護操作,此前提可能不正確,且可能潛在地導致不正確的操作。
一致性互連70,及將特定快取記憶體項目標示為共享,本身不足以確保不產生問題。例如,考慮虛擬機將十個資料值寫入快取記憶體之情形,其中將該等資料值中之三個寫入處理單元10之快取記憶體24中,同時虛擬機90正在處理單元10上執行,但隨後超管理器將虛擬機90之執行切換至處理單元40,以使得將剩餘的七個資料值寫入資料快取記憶體54中。若隨後發佈快取記憶體維護操作,以清除包括彼等十個資料值之位址的一範圍位址,而虛擬機90仍在處理單元40上操作,則可預見地,快取記憶體54中之七個資料值將位於快取記憶體中,且執行必要的清除操作。若將該等項目標示為共享,則訊號亦將發佈至一致性互連70,以確保該資料之任何其他複本均無效。然而,就所述的其他三個資料值而言,對於與該三個資料相關聯之位址,處理單元40內局部執行的快取記憶體維護操作將僅偵測到資料不在快取記憶體中,且因此將不再採取動作(替代地,假定已將該資料驅逐至記憶體)。然而,結果為,該等三個資料值仍將常駐於快取記憶體24內,且將未被清除,導致就該等資料值而言,共享記憶體75將為過時的。此舉可導致虛擬機之不正確操作。
根據本發明之實施例,經由提供存取操作擴充位元來解決該問題,該存取操作擴充位元可由處於特定階層之軟體設定,且一旦設定,則將影響處於較低階層之軟體發佈的局部快取記憶體維護操作如何被操控。因此,在一個實施例中,可允許作業系統92設定存取操作擴充位元,以使得由應用程式94、96發佈的任何後續快取記憶體維護操作將取決於:作業系統是否已設定存取操作擴充位元,而被不同地操控。然而,出於以下描述之目的,將假定存取操作擴充位元可由超管理器軟體80設定,以使得由虛擬機(作業系統92或應用程式94、96中之一者)發佈的任何快取記憶體維護操作隨後將取決於:是否已設定存取操作擴充位元,而被不同地操控。
第2圖係一流程圖,其圖示:根據一個實施例,局部快取記憶體維護操作之操控如何受存取操作擴充位元值影響。特定言之,在步驟150,維護電路系統等待接收快取記憶體維護操作。一旦已接收到快取記憶體維護操作,則在步驟155決定快取記憶體維護操作是否為局部存取操作。若否,則程序進入步驟165,在步驟165中,將共享存取訊號發送至一致性互連,以使局部存取操作在一或多個其他處理單元上執行,且另外在步驟170,將對於局部快取記憶體結構執行局部快取記憶體維護操作,該局部快取記憶體結構與在步驟150接收快取記憶體維護操作之維護電路系統相關聯。
應注意,雖然按順序圖示步驟165及步驟170,但可以相反次序執行該等步驟,或實際上可同時執行該等步驟。此外,在某些實施例中,可執行在步驟170所執行的局部快取記憶體維護操作,而不考慮任何其他處理單元上之相應局部快取記憶體維護操作回應共享存取訊號的操作結果。然而,在替代實施例中,可使在步驟170之局部快取記憶體維護操作之操作延遲,直至各樣其他處理單元回應在步驟165發佈至一致性互連之共享存取訊號,而已執行其他處理單元之局部快取記憶體維護操作。
若在步驟155,決定快取記憶體維護操作係局部存取操作,則在步驟160決定是否已設定存取操作擴充位元。若否,則僅將快取記憶體維護操作視為局部操作,且因此在步驟170執行局部快取記憶體維護操作。然而,若在步驟160決定已設定存取操作擴充位元,則實際上局部存取操作將被視為共享存取操作。因此,執行步驟165及步驟170。由此可見,當已設定存取操作擴充位元時,被指明為局部存取操作的快取記憶體維護操作係被「升級」為視為共享存取操作。因此,此舉確保在所有相關快取記憶體結構中均執行快取記憶體維護操作,而不管虛擬機當前正在哪個處理單元上執行。
第3圖為一流程圖,其圖示:根據一個實施例,超管理器軟體80如何決定何時設定存取操作擴充位元。在步驟200,超管理器將作業系統自來源處理單元移動至目的處理單元。在該程序期間,超管理器軟體在步驟205決定作業系統是否能感知多重處理器,在此實例中為是否「能感知SMP」(因為假定硬體為SMP處理電路系統)。若作業系統不能感知SMP,則程序進入步驟210,在步驟210中,設定存取操作擴充位元,而若作業系統能感知SMP,則在步驟215清除存取操作擴充位元。在步驟210或步驟215之後,隨後在步驟220,超管理器允許作業系統在目的處理單元上開始執行。
在參閱第3圖所描述的實施例中,假定若作業系統為能感知SMP,則該作業系統將發佈快取記憶體維護操作,該快取記憶體維護操作能正確地被識別為共享操作或局部操作。然而,在替代實施例中,超管理器僅可經配置成:每當該超管理器將作業系統自一個處理單元移動至另一處理單元時,設定存取操作擴充位元,而不管作業系統是否能感知SMP。例如,若以作業系統瞭解操作應在哪個處理器上執行之方式,將能使用SMP的作業系統最佳化,則此舉可適用,因為當作業系統在超管理器層支配下執行時,該瞭解可能有誤。
第4A圖示意性地圖示:根據一個實施例如何操控局部存取操作。為了本實例,假定多重處理系統提供三個處理單元300、320、340。為了闡述,僅圖示該等處理單元之相關內部結構。因此,每一處理單元300、320、340具有分別與一或多個局部快取記憶體結構310、330、350耦接之相關聯維護電路系統305、325、345。針對處理單元300,存取操作擴充位元307係經圖示,假定在該情況下,已設定該存取操作擴充位元。隨後,各樣訊號線旁之圓圈中之數字指示:在局部存取操作由維護電路系統305接收後之順序。因此,如圖所示,一旦局部存取操作由維護電路系統305接收,則維護電路系統305參考存取操作擴充位元307,在此情況下,維護電路系統305發現存取操作擴充位元307已被設定。因此,維護電路系統305隨後對與其相關聯之局部快取記憶體結構310執行局部存取操作,同時亦將共享存取訊號發佈至一致性互連360內之協調電路系統370。在此實例中,協調電路系統在接收到共享存取訊號後,僅向其他處理單元中之每一者廣播請求,且因此維護電路系統325以及維護電路系統345皆接收執行局部存取操作之請求。因此,如第4A圖中所圖示,兩個維護電路系統325、340隨後分別對與它們相關聯的局部快取記憶體結構330、350執行它們的局部存取操作。
雖然對於局部快取記憶體結構310執行局部存取操作,可完全自以下兩者脫鉤:向協調電路系統發佈共享存取訊號之程序以及後續的其他局部存取操作,但在一個實施例中,維護電路系統305可延緩執行其局部存取操作,直至已執行所有其他局部存取操作,且該等局部存取操作之結果經由協調電路系統370返回至維護電路系統305。因此,如鄰近於局部存取操作訊號路徑(位於維護電路系統305與局部快取記憶體結構310之間)之圓圈中之數字6所示,可在其他操作完成之後,執行該局部存取操作。
第4B圖圖示協調電路系統370保留歷史資料之替代實施例,該歷史資料使協調電路系統370能夠決定,在接收到共享存取訊號後,向哪些其他處理單元發佈請求。在第4B圖中所圖示之特定實例中,假定協調電路系統370保持向局部快取記憶體結構分配資料之歷史380。因此,當共享存取訊號由協調電路系統370接收時,協調電路系統可考慮由共享存取訊號所指明之資料位址,且根據分配歷史380,可決定局部快取記憶體結構330、350中何者在該位址處具有先前被快取之資料。在所闡釋之實例中,協調電路系統370決定局部快取記憶體結構330在該位址處具有先前被快取之資料,但局部快取記憶體結構350不具有該資料。因此,僅向維護電路系統325發佈請求,而不向維護電路系統345發佈請求。
協調電路系統370可採用各樣形式,但在一個實施例中,協調電路系統370將由監聽控制單元形成,該監聽控制單元用於執行監聽操作,該監聽操作為快取記憶體一致性協定所要求。該快取記憶體一致性協定之功能可延伸為:不僅使以資料快取記憶體為對象而發佈之維護操作得以正確操作,而且使以指令快取記憶體、TLB等為對象而發佈之維護操作得以正確操作。
第5圖係一流程圖,其圖示可由虛擬機執行之特定順序之操作。特定言之,在步驟400,產生某些程式碼,在產生該程式碼時,該程式碼通常作為資料被寫入資料快取記憶體。然而,在可執行該程式碼之前,首先需要將該程式碼向外儲存至記憶體,且隨後被擷取至指令快取記憶體中。因此,在步驟410,發佈局部資料快取記憶體清除操作,且在步驟420,發佈局部指令快取記憶體無效操作。局部資料快取記憶體清除操作410將使資料快取記憶體內之有效資料及錯資料被驅逐至記憶體,而局部指令快取記憶體無效操作將確保:可能已由程式碼產生步驟400更新之任何指令將無效,以便隨後在開始執行新程式碼時,不會錯誤地參考該等指令。因此,在步驟430,當執行新程式碼時,將自記憶體擷取正確指令,且該正確指令通常將被儲存於指令快取記憶體中。
若未使用本發明之實施例之上述技術,則存在一時段,在該時段中,自一個處理單元切換至另一處理單元之虛擬機執行可導致不正確操作。特定言之,若在第5圖中所圖示之時段A期間(時段A開始於程式碼產生程序開始之後的一段時間,且結束於在步驟410發佈局部資料快取記憶體清除操作之前),虛擬機自第一處理單元切換至第二處理單元,則當隨後發佈局部資料快取記憶體清除操作時,該操作僅將清除儲存於第二處理單元之資料快取記憶體中之資料。此舉可使某些新產生的程式碼繼續存在於第一處理單元之資料快取記憶體中,而不清除該資料。然而,經由使用上述技術,在步驟410發佈之局部資料快取記憶體清除操作經升級為共享資料快取記憶體清除操作,該升級動作將確保所有所需項目被清除,而不管該等項目是位於第二處理單元之資料快取記憶體中,還是第一處理單元之資料快取記憶體中。
類似地,在時段B期間,若虛擬機之執行自第二處理單元切換回至第一處理單元,則可產生問題。在該實例中,在未使用本發明之情況下,第一處理單元之局部指令快取記憶體將不會在420步驟變得無效,且因此可能在步驟430執行不正確的指令。然而,經由使用前文描述的技術,在步驟420,局部指令快取記憶體無效操作將升級至共享指令快取記憶體無效操作,從而確保兩個指令快取記憶體中之相關項目皆變得無效。
第6圖為一流程圖,其圖示頁表更新程序。特定言之,在步驟450,使用頁表項目來執行位址轉換,在該執行期間,頁表項目通常將儲存於MMU之TLB內。隨後,需要更新頁表項目。因此,在步驟460,發佈局部TLB無效操作,以使即將更新之TLB中之任何快取項目無效。此後,在步驟470,修改相關頁表項目。隨後,在步驟480,藉由使用頁表項目來執行位址轉換,使該程序重新開始,在該執行期間,頁表資料將再次自記憶體儲存於TLB中。若在單一處理單元上執行此種程序,則將不會產生問題。然而,若在第6圖中所圖示之時段A期間的某一時間,虛擬機之操作自第一處理單元切換至第二處理單元,且隨後在時段B期間的某一時間,虛擬機之實施自第二處理單元切換回至第一處理單元;則在未使用本發明之實施例之技術的情況下可產生問題。特定言之,由於在時段A期間發生的切換,所以應理解,在步驟460之局部TLB無效操作將不能使第一處理單元之TLB中之相關頁表項目無效。此意謂當執行隨後在時段B期間返回至第一處理單元時,由於仍存在保留於第一處理單元之TLB內的過期資料,在TLB內可能發生瞬時打斷(hit)。然而,經由使用本發明之實施例的前述技術,不會產生該問題,因為在步驟460發佈之局部TLB無效操作經升級為共享TLB無效操作,且因此兩個TLB中之相關項目皆為無效。
雖然直到現在,已結合快取記憶體維護操作之操控,描述了本發明之實施例之技術,但本發明之實施例之技術亦可用於確保記憶體屏障操作之正確操作,如將參閱第7圖及第8圖之進一步討論。如該技術領域具有通常技術者將理解,若程式想要確保先前記憶體操作(諸如,寫入操作)使該操作結果為系統中之其他代理器(agent)可見,或想要確保在任何後續記憶體操作開始之前,該先前記憶體操作已完成,則可執行記憶體屏障操作。因此,如第7圖之步驟500所圖示,決定是否執行記憶體屏障操作,且每當決定將執行記憶體屏障操作時,則在步驟510決定是否已設定存取操作擴充位元。若否,則在步驟530僅在處理單元上局部地執行記憶體屏障操作,虛擬機當下正在該處理單元上執行。然而,若已設定存取操作擴充位元,則在步驟520向一致性互連發佈記憶體屏障訊號520,且在步驟530局部地執行記憶體屏障操作。隨後,一致性互連將使合適的請求發佈至其他處理單元,以使該等其他處理單元亦局部地實施記憶體屏障操作。當吾人考慮第8圖中所圖示情形之範例順序時,可看到此種方法之益處。
特定言之,在步驟550,在寫入資料得到緩衝之情況下執行寫入操作。特定言之,在許多系統中,當將寫入資料置放於寫入緩衝器(write buffer)中時,寫入操作被認為係已完成,而實際上,在該寫入緩衝器中之寫入資料被取出(drain)且將寫入資料真正地交給記憶體之前,可能尚需許多週期。
因此,若重要的是,以下某操作可見寫入資料,則通常在寫入操作之後發佈記憶體屏障操作,如第8圖中之步驟560所示。此後,當在步驟570執行期望先前寫入操作之寫入資料為可見之操作時,在步驟560執行的記憶體屏障操作將確保該寫入資料確可為該操作所見。然而,若在第8圖中所圖示之時間A處,虛擬機執行自一個處理單元切換至另一處理單元,則應理解,除非使用本發明之實施例之技術,否則記憶體屏障操作560將不能達成其目標,因為記憶體屏障操作560將局部地被應用於處理單元內,虛擬機隨後於該處理單元上執行,而寫入資料實際上將保存於不同處理單元之寫入緩衝器中。然而,經由使用本發明之實施例之技術,在步驟560發佈的記憶體屏障操作將升級為共享記憶體屏障操作,從而在兩個處理單元上執行記憶體屏障操作,且因此使寫入資料被取出至記憶體,且隨後在步驟570執行後續操作時,使寫入資料為可見。
儘管本文已描述特定實施例,但應理解,本發明並非限於該等實施例,且可在本發明之範疇內對該等實施例進行許多修改及添加。例如,在不脫離本發明之範疇之情況下,可將以下附屬項之特徵與獨立項之特徵進行各樣組合。
10...第一處理電路系統/處理單元/處理器
20...核心
22...維護電路系統
24...快取記憶體
26...記憶體管理單元
28...TLB
30...配置暫存器
40...處理單元/處理器
50...核心
52...維護電路系統
54...快取記憶體
56...MMU
58...TLB
60...配置暫存器
70...一致性互連
75...共享記憶體
80...超管理器軟體/超管理器
90...虛擬機
92...作業系統
94...應用程式
96...應用程式
100...虛擬機
102...作業系統
104...應用程式
106...應用程式
150...步驟
155...步驟
160...步驟
165...步驟
170...步驟
200...步驟
205...步驟
210...步驟
215...步驟
220...步驟
300...處理單元
305...維護電路系統
307...存取操作擴充位元
310...局部快取記憶體結構
320...處理單元
325...維護電路系統
330...局部快取記憶體結構
340...處理單元
345...維護電路系統
350...局部快取記憶體結構
360...一致性互連
370...協調電路系統
380...歷史
400...步驟
410...步驟
420...步驟
430...步驟
450...步驟
460...步驟
470...步驟
480...步驟
500...步驟
510...步驟
520...步驟
530...步驟
550...步驟
560...步驟
570...步驟
第1圖為示意性地圖示根據一個實施例之多重處理系統之圖式;
第2圖係一流程圖,其圖示根據一個實施例如何操控快取記憶體維護操作;
第3圖係一流程圖,其圖示根據一個實施例,超管理器可如何設定存取操作擴充位元;
第4A圖示意性地圖示根據一個實施例,在已設定存取操作擴充位元之情形下,操控局部存取操作;
第4B圖示意性地圖示根據一替代實施例,在已設定存取操作擴充位元之情形下,操控局部存取操作;
第5圖係一流程圖,其圖示程式碼產生程序,其中由於自一個處理單元遷移至另一處理單元所產生之問題可經由使用一個實施例之技術以避免;
第6圖係一流程圖,其圖示頁表更新程序,其中由於自第一處理單元遷移至第二處理單元且隨後返回至第一處理單元所產生之問題可經由使用一個實施例之技術以避免;
第7圖係一流程圖,其圖示根據一個實施例可如何操控記憶體屏障操作;以及第8圖係一流程圖,其圖示涉及記憶體屏障操作之一連串操作,其中由於自一個處理單元切換至另一處理單元所產生之問題可經由使用一個實施例之技術避免。
300...處理單元
305...維護電路系統
307...存取操作擴充位元
310...局部快取記憶體結構
320...處理單元
325...維護電路系統
330...局部快取記憶體結構
340...處理單元
345...維護電路系統
350...局部快取記憶體結構
360...一致性互連
370...協調電路系統

Claims (19)

  1. 一種資料處理設備,該資料處理設備包含:處理電路系統,該處理電路系統包含:用於執行資料處理操作的複數個處理單元,該資料處理操作需要存取共享記憶體中之資料,該處理電路經配置而運行由複數個軟體階層組成的軟體;每一處理單元具有與該處理單元相關聯之一局部快取記憶體結構,該局部快取記憶體結構用於儲存供該處理單元存取之該資料之一子集,以及具有存取控制電路系統,該存取控制電路系統用於操控經發佈(issue)至該局部快取記憶體結構之存取操作,將該局部快取記憶體結構之至少一個類型的存取操作發佈為一局部存取操作或一共享存取操作;一配置儲存器,該配置儲存器用於儲存一存取操作擴充值,其中該存取操作擴充值由處於一預定階層而運行之軟體設定及復位;共享存取協調電路系統(coordination circuitry),該共享存取協調電路系統用於協調該複數個處理單元對該共享存取操作之操控;在接收到該共享存取操作之後,該存取控制電路系統除對該相關聯之局部快取記憶體結構執行該局部存取操作之外,亦向該共享存取協調電路系統發佈一共享存取訊號;若該局部存取操作已經由處於低於該預定階層之一階 層之軟體所發佈,在接收到該局部存取操作之後,若未設定該存取操作擴充值(extension value),則該存取控制電路系統係經配置,以對該相關聯之局部快取記憶體結構執行該局部存取操作,而不向該共享存取協調電路系統發佈該共享存取訊號,以及若已設定該存取操作擴充值,則該存取控制電路系統係經配置,以將該局部存取操作視為該共享存取操作。
  2. 如請求項1所述之資料處理設備,其中該至少一個類型的存取操作包含:一維護存取操作,該維護存取操作係經發佈,以更新儲存於該局部快取記憶體結構之至少一個項目(entry)中之資料的一狀態。
  3. 如請求項2所述之資料處理設備,其中該維護存取操作對於該局部快取記憶體結構之該至少一個項目,執行一清除操作及一無效操作中之至少一者。
  4. 如請求項1所述之資料處理設備,其中該處理電路系統執行超管理器(hypervisor)軟體,以支援至少一個虛擬機(virtual machine)在該處理電路系統上之執行,該虛擬機係經配置以發佈該至少一個類型的存取操作。
  5. 如請求項4所述之資料處理設備,其中該至少一個虛擬機中之每一者包含:執行一或多個應用程式之一作業系 統。
  6. 如請求項5所述之資料處理設備,其中當該超管理器軟體將該作業系統自該複數個處理單元中之一第一處理單元移動至該複數個處理單元中之一第二處理單元時,該超管理器軟體使該存取操作擴充值得以被設定。
  7. 如請求項6所述之資料處理設備,其中在設定該存取操作擴充值之後,該存取控制電路系統將自該至少一個虛擬機發佈之任何局部存取操作視為該共享存取操作,但該存取控制電路系統持續將自該超管理器軟體發佈之局部存取操作操控為局部存取操作。
  8. 如請求項1所述之資料處理設備,其中該局部快取記憶體結構為:用於快取作為運算元資料之資料的一資料快取記憶體,該運算元資料係用於該等資料處理操作。
  9. 如請求項1所述之資料處理設備,其中該局部快取記憶體結構包含:一轉換旁視緩衝器(translation lookaside buffer),該轉換旁視緩衝器用於快取頁表資料,該頁表資料係自該共享記憶體中之頁表獲得,且在執行該相關聯之處理單元內之虛擬位址至實體位址之轉換時,使用該轉換旁視緩衝器。
  10. 如請求項1所述之資料處理設備,其中該局部快取記憶體結構為一指令快取記憶體,該指令快取記憶體用於快取指令,該指令用於定義該等資料處理操作。
  11. 如請求項1所述之資料處理設備,其中該共享存取協調電路系統回應於該共享存取訊號,以向該等處理單元中之每一者(除了該處理單元之存取控制電路系統已發佈該共享存取訊號之處理單元)廣播一局部存取操作請求,藉此在該等處理單元中之每一者上執行該局部存取操作。
  12. 如請求項1所述之資料處理設備,其中該共享存取協調電路系統回應於該共享存取訊號,以自該複數個處理單元決定處理單元之一子集,該子集之局部快取記憶體結構可含有由該共享存取操作識別之資料,及向該子集中之該等處理單元中之每一者發佈一局部存取操作請求。
  13. 如請求項1所述之資料處理設備,其中在由該等處理單元中之一第一處理單元執行一記憶體屏障(memory barrier)操作之後,若已設定該存取操作擴充值,該等處理單元中之該第一處理單元係經配置,以發佈一記憶體屏障訊號,以使該記憶體屏障操作在該等處理單元中之至少一個其他處理單元上執行。
  14. 如請求項13所述之資料處理設備,其中該等處理單元 中之該第一處理單元向該共享存取協調電路系統發佈該記憶體屏障訊號,以使該記憶體屏障操作在該等處理單元中之該至少一個其他處理單元上執行。
  15. 如請求項1所述之資料處理設備,其中該共享存取協調電路系統包含:快取記憶體一致性(coherency)電路系統,該快取記憶體一致性系統採用一快取記憶體一致性協定,以確保由每一處理單元存取之該資料為最新的。
  16. 如請求項1所述之資料處理設備,其中該配置儲存器為該複數個處理單元中之每一處理單元儲存一分離存取操作擴充值,且該存取控制電路系統在操控該局部存取操作時,參考與該存取控制電路系統相關聯之存取操作擴充值。
  17. 如請求項1所述之資料處理設備,其中該複數個處理單元形成一對稱多重處理(SMP)處理電路系統之複數個處理器。
  18. 一種操控經發佈至一資料處理設備內局部快取記憶體結構之存取操作的方法,該資料處理設備經配置而運行由複數個軟體階層組成的軟體,該資料處理設備具有複數個處理單元,該複數個處理單元用於執行需要存取共享記憶體中之資料之資料處理操作,每一處理單元具有與該處理單元相關聯之一局部快取記憶體結構,該局部快取記憶體 結構用於儲存供該處理單元存取之等資料之一子集,該方法包含以下步驟:提供共享存取協調電路系統,以協調該複數個處理單元對一共享存取操作之操控;儲存一存取操作擴充值,其中該存取操作擴充值由處於一預定階層而運行之軟體設定及復位;在操控經發佈至該等局部快取記憶體結構中之一者之該共享存取操作時,除對該等局部快取記憶體結構中之該一者執行一局部存取操作之外,亦向該共享存取協調電路系統發佈一共享存取訊號;若該局部存取操作已經由處於低於該預定階層之一階層之軟體所發佈,在操控經發佈至該等局部快取記憶體結構中之一者之一局部存取操作時:(1)若未設定該存取操作擴充值,則對該等局部快取記憶體結構中之該一者執行該局部存取操作,而不向該共享存取協調電路系統發佈該共享存取訊號,以及(2)若已設定該存取操作擴充值,則將該局部存取操作視為該共享存取操作。
  19. 一種資料處理設備,該資料處理設備包含:用於運行由複數個軟體階層組成的軟體之處理構件,該處理構件電路系統包含:用於執行資料處理操作的複數個處理單元構件,該資料處理操作需要存取共享記憶體中 之資料;每一處理單元構件具有與該處理單元構件相關聯之局部快取記憶體結構構件,該局部快取記憶體結構構件用於儲存供該處理單元構件存取之該資料之一子集,以及具有存取控制構件,該存取控制構件用於操控經發佈至該局部快取記憶體結構構件之存取操作,將該局部快取記憶體結構構件之至少一個類型的存取操作發佈為一局部存取操作或一共享存取操作;配置儲存器構件,該配置儲存器構件用於儲存一存取操作擴充值,其中該存取操作擴充值由處於一預定階層而運行之軟體設定及復位;共享存取協調構件,該共享存取協調構件用於協調該複數個處理單元構件對該共享存取操作之操控;在接收到該共享存取操作之後,該存取控制構件除用於對該相關聯之局部快取記憶體結構構件執行該局部存取操作之外,亦用於向該共享存取協調構件發佈一共享存取訊號;若該局部存取操作已經由處於低於該預定階層之一階層之軟體所發佈,在接收到該局部存取操作之後,若未設定該存取操作擴充值,則該存取控制構件用於對該相關聯之局部快取記憶體結構構件執行該局部存取操作,而不向該共享存取協調構件發佈該共享存取訊號,以及在若已設定該存取操作擴充值,則該存取控制構件用於將該局部存取操作視為該共享存取操作。
TW100116884A 2010-06-16 2011-05-13 用於操控經發佈至資料處理設備內局部快取記憶體結構之存取操作的設備與方法 TWI493349B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1010114.5A GB2481232A (en) 2010-06-16 2010-06-16 Cache for a multiprocessor system which can treat a local access operation as a shared access operation

Publications (2)

Publication Number Publication Date
TW201211777A TW201211777A (en) 2012-03-16
TWI493349B true TWI493349B (zh) 2015-07-21

Family

ID=42471761

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100116884A TWI493349B (zh) 2010-06-16 2011-05-13 用於操控經發佈至資料處理設備內局部快取記憶體結構之存取操作的設備與方法

Country Status (10)

Country Link
US (1) US8706965B2 (zh)
EP (1) EP2583182B1 (zh)
JP (1) JP5543022B2 (zh)
KR (1) KR101677900B1 (zh)
CN (1) CN102971718B (zh)
GB (1) GB2481232A (zh)
IL (1) IL222671A (zh)
MY (1) MY162612A (zh)
TW (1) TWI493349B (zh)
WO (1) WO2011158012A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102291455B (zh) * 2011-08-10 2014-02-19 华为技术有限公司 分布式集群处理系统及其报文处理方法
US20130117744A1 (en) * 2011-11-03 2013-05-09 Ocz Technology Group, Inc. Methods and apparatus for providing hypervisor-level acceleration and virtualization services
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
JP6337902B2 (ja) * 2013-09-30 2018-06-06 日本電気株式会社 ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム
JP6369069B2 (ja) * 2014-03-17 2018-08-08 日本電気株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539428B (en) * 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
KR102428563B1 (ko) 2015-09-30 2022-08-03 삼성전자주식회사 수눕 작동을 관리하는 코히런트 인터커넥트와 이를 포함하는 데이터 처리 장치들
US10241913B2 (en) * 2016-01-20 2019-03-26 International Business Machines Corporation Operating local caches for a shared storage device
US10157139B2 (en) * 2016-09-19 2018-12-18 Qualcomm Incorporated Asynchronous cache operations
US10339058B2 (en) * 2017-05-16 2019-07-02 Qualcomm Incorporated Automatic cache coherency for page table data
US10353826B2 (en) * 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US11210222B2 (en) * 2018-01-23 2021-12-28 Vmware, Inc. Non-unified cache coherency maintenance for virtual machines
EP3924832B1 (en) * 2019-02-14 2025-04-09 Telefonaktiebolaget Lm Ericsson (Publ) Methods and devices for controlling memory handling
US11914524B2 (en) * 2022-03-01 2024-02-27 Qualcomm Incorporated Latency management in synchronization events
US12197340B2 (en) * 2022-11-01 2025-01-14 Arm Limited Apparatus and method for cache invalidation
US12197329B2 (en) * 2022-12-09 2025-01-14 Advanced Micro Devices, Inc. Range-based cache flushing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996812B2 (en) * 2001-06-18 2006-02-07 International Business Machines Corporation Software implementation of synchronous memory barriers
TW200905470A (en) * 2007-03-28 2009-02-01 Ibm Workload management in virtualized data processing environment
US7653789B2 (en) * 2006-02-01 2010-01-26 Sun Microsystems, Inc. Multiprocessor system that supports both coherent and non-coherent memory accesses

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04215168A (ja) * 1990-12-13 1992-08-05 Nec Corp コンピュータシステム
JPH0816470A (ja) * 1994-07-04 1996-01-19 Hitachi Ltd 並列計算機
US6088771A (en) * 1997-10-24 2000-07-11 Digital Equipment Corporation Mechanism for reducing latency of memory barrier operations on a multiprocessor system
US6636950B1 (en) * 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
US6766424B1 (en) * 1999-02-09 2004-07-20 Hewlett-Packard Development Company, L.P. Computer architecture with dynamic sub-page placement
US6615322B2 (en) * 2001-06-21 2003-09-02 International Business Machines Corporation Two-stage request protocol for accessing remote memory data in a NUMA data processing system
US7469321B2 (en) * 2003-06-25 2008-12-23 International Business Machines Corporation Software process migration between coherency regions without cache purges
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
US8407451B2 (en) * 2007-02-06 2013-03-26 International Business Machines Corporation Method and apparatus for enabling resource allocation identification at the instruction level in a processor system
US7769957B2 (en) * 2007-06-22 2010-08-03 Mips Technologies, Inc. Preventing writeback race in multiple core processors
JP5104588B2 (ja) * 2007-10-18 2012-12-19 富士通株式会社 マイグレーションプログラム、および仮想マシン管理装置
JP2009193385A (ja) * 2008-02-15 2009-08-27 Nec Corp コンピュータシステム
US8429353B2 (en) * 2008-05-20 2013-04-23 Oracle America, Inc. Distributed home-node hub
WO2010038301A1 (ja) * 2008-10-02 2010-04-08 富士通株式会社 メモリアクセス方法及び情報処理装置
US20100161922A1 (en) * 2008-12-19 2010-06-24 Richard William Sharp Systems and methods for facilitating migration of virtual machines among a plurality of physical machines
US8458688B2 (en) * 2009-12-28 2013-06-04 International Business Machines Corporation Virtual machine maintenance with mapped snapshots

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996812B2 (en) * 2001-06-18 2006-02-07 International Business Machines Corporation Software implementation of synchronous memory barriers
US7653789B2 (en) * 2006-02-01 2010-01-26 Sun Microsystems, Inc. Multiprocessor system that supports both coherent and non-coherent memory accesses
TW200905470A (en) * 2007-03-28 2009-02-01 Ibm Workload management in virtualized data processing environment

Also Published As

Publication number Publication date
TW201211777A (en) 2012-03-16
JP2013528879A (ja) 2013-07-11
EP2583182A1 (en) 2013-04-24
IL222671A0 (en) 2012-12-31
KR20130114606A (ko) 2013-10-17
IL222671A (en) 2015-11-30
GB2481232A (en) 2011-12-21
CN102971718A (zh) 2013-03-13
GB201010114D0 (en) 2010-07-21
EP2583182B1 (en) 2014-11-19
US8706965B2 (en) 2014-04-22
MY162612A (en) 2017-06-30
WO2011158012A1 (en) 2011-12-22
CN102971718B (zh) 2015-12-16
US20110314224A1 (en) 2011-12-22
JP5543022B2 (ja) 2014-07-09
KR101677900B1 (ko) 2016-11-21

Similar Documents

Publication Publication Date Title
TWI493349B (zh) 用於操控經發佈至資料處理設備內局部快取記憶體結構之存取操作的設備與方法
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
US7925840B2 (en) Data processing apparatus and method for managing snoop operations
JP5414912B2 (ja) キャッシュコヒーレンシ制御の方法、システムおよびプログラム
EP3441886B1 (en) Method and processor for processing data
EP3721347B1 (en) An apparatus and method for handling write operations
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
US20160062892A1 (en) Cache backing store for transactional memory
US20060059317A1 (en) Multiprocessing apparatus
US9898416B2 (en) Translation entry invalidation in a multithreaded data processing system
US20140006716A1 (en) Data control using last accessor information
US8788761B2 (en) System and method for explicitly managing cache coherence
JP2009223759A (ja) 情報処理装置,メモリ制御方法およびメモリ制御装置
US9830198B2 (en) Translation entry invalidation in a multithreaded data processing system
US10740233B2 (en) Managing cache operations using epochs
CN105408877A (zh) 将经修改的高速缓存数据写入后备存储器同时保留写权限的方法及装置
JP2007533014A (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
US20060294319A1 (en) Managing snoop operations in a data processing apparatus
KR101192423B1 (ko) 멀티코어 시스템 및 멀티코어 시스템의 메모리 관리 장치
Bhattacharjee et al. Virtual Memory, Coherence, and Consistency
Pyka et al. On-Demand Coherent Cache for Parallelised Hard Real-Time Applications
Jain Memory Models for Embedded Multicore Architecture
Kim et al. Computer Systems Laboratory