TW201835777A - 記憶體存取監測 - Google Patents

記憶體存取監測 Download PDF

Info

Publication number
TW201835777A
TW201835777A TW107104870A TW107104870A TW201835777A TW 201835777 A TW201835777 A TW 201835777A TW 107104870 A TW107104870 A TW 107104870A TW 107104870 A TW107104870 A TW 107104870A TW 201835777 A TW201835777 A TW 201835777A
Authority
TW
Taiwan
Prior art keywords
monitoring
circuit system
area
monitoring data
address
Prior art date
Application number
TW107104870A
Other languages
English (en)
Other versions
TWI764985B (zh
Inventor
傑佛里懷曼 布萊克
派沃 桑米斯
Original Assignee
英商Arm股份有限公司
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 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW201835777A publication Critical patent/TW201835777A/zh
Application granted granted Critical
Publication of TWI764985B publication Critical patent/TWI764985B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一種裝置具有監測資料儲存器,該監測資料儲存器用來儲存監測資料,該監測資料指示記憶體位址空間中要被監測改變的區域,該等區域可包括至少兩個非鄰接的區域。處理電路系統回應於更新監測指令而更新監測資料。監測電路系統監測對於記憶系統所進行的存取且在與受監測區域中的一者相關聯的資料已改變時向處理電路系統提供通知。這藉由減少了輪詢多個區域的改變的管理成本而改良了效能及能源效率。

Description

記憶體存取監測
本技術關於資料處理的領域。
資料處理系統可具有可能需要彼此通訊的多個動作元(actor)。各個動作元可為任何獨立的記憶體存取源(例如,該多個動作元可包括系統內的不同硬體設備,及/或可包括運行在相同硬體設備上的不同軟體程序)。為了在動作元之間進行通訊,傳送動作元可將信息寫入到共享記憶體中可接著由接受動作元所讀取的區域。可使用兩種技術來允許接受器偵測來自傳送動作元的信息:傳送動作元可向接受動作元觸發中斷訊號以使用旗標來通報已發送了信息,或接受動作元可連續輪詢(讀取)可能在接收到信息時改變的相關記憶體位置,以檢查資料實際上是否已改變。然而,這些方法中沒有一個方法良好地隨著信息流的數量增加而增加規模。
至少某些實例提供了一種裝置,該裝置包括: 一監測資料儲存器,用來儲存指示記憶體位址空間中要被監測改變的複數個區域的監測資料,其中該監測資料儲存器能夠儲存指示該記憶體位址空間的至少兩個非鄰接區域的監測資料; 處理電路系統,回應於一更新監測指令而更新由該監測資料儲存器所儲存的該監測資料;及 監測電路系統,用來監測對一記憶體系統所進行的存取,及用來回應於偵測到與由該監測資料所指示的所述複數個區域中的至少一者相關聯的資料已改變,而向該處理電路系統提供一通知。
至少某些實例提供了一種方法,該方法包括以下步驟: 回應於一更新監測指令,更新指示一記憶體位址空間中要被監測改變的複數個區域的監測資料,該複數個區域包括該記憶體位址空間的至少兩個非鄰接區域; 監測對一記憶體系統所進行的存取;及 回應於偵測到與由該監測資料所指示的所述複數個區域中的至少一者相關聯的資料已改變,而向該處理電路系統提供一通知。
至少某些實例提供了一種儲存媒體,該儲存媒體儲存一虛擬機器電腦程式,該虛擬機器電腦程式用於在被一資料處理裝置執行時依據上述的裝置提供一指令執行環境。
存在可能需要多工傳輸許多通訊流的各種處理應用。這對於高效能計算或資料中心應用來說是特別有用的。通訊流可例如來自一系列的來源,包括機器內的共享記憶體更新、對緩存器進行的遠程直接記憶存取(RDMA)寫入行為及/或以經由網路所接收的新封包來更新緩存器的乙太網路網路設備。在全面通訊(all-to-all communication)普及的情況下,通訊流的數量在現代的處理環境中可能是數以千計的。在傳統的系統中,可安置新信息的各個記憶體位置的中斷訊號或輪詢行為可用來在通訊流上以訊號傳遞新的信息。然而,由於現今系統中所存在的通訊流的數量,中斷訊號可能使系統過載,因為接受器可能從各個信息源接收到許多單獨的中斷訊號。並且,輪詢是昂貴的及能源上低效的,因其需要重複讀取各個受監測的記憶體位置,無論彼等記憶體位置實際上是否改變。輪詢所花費的時間傾向於隨著要多工傳輸的通訊流的數量而線性地增減規模,這造成了接受器的效能瓶頸。
本揭示案描述了一種裝置,該裝置具有:監測資料儲存器,用來儲存指示記憶體位址空間中要被監測改變的許多區域的監測資料。該監測資料儲存器能夠儲存指示記憶體位址空間的至少兩個非鄰接區域的監測資料。處理電路系統可使用指令方式執行更新監測行為來更新由監測資料儲存器所儲存的監測資料。監測電路系統監測對記憶體系統所進行的存取,及回應於偵測到與由監測資料儲存器所指示的區域中的至少一者相關聯的資料已改變,而向處理電路系統提供通知。
在使用此方法的情況下,處理電路系統可將多個記憶體區域登錄到監測資料儲存器,且監測電路系統可在不需要干涉處理電路系統的情況下監視彼等區域的改變。雖然亦會可能將監測資料儲存器配置為監測一系列鄰接的位址,監測資料儲存器亦支援界定位址空間的多個非鄰接區域。因此,可藉由在監測資料儲存器中記錄相對應的位址位置來監測多個獨立的通訊流的改變。因為監測電路系統監測記憶體存取及在受監測的區域中的至少一者中的資料改變時向處理電路系統提供通知,不需要處理電路系統重複輪詢資料並未改變的區域,而減少了存取受監測區域所花費的時間。因此,可改良處理電路系統處的處理效能。
因為處理電路系統不需要在監測電路系統正在針對受監測的區域監測改變的同時操作,處理電路系統可在等待通知的同時在節能狀態下操作,以減少電力消耗。例如,處理電路系統可支援等待事件指令的行為,該等待行為觸發處理電路系統進入節能狀態直到某個事件發生為止。例如,可藉由減少時脈頻率或藉由執行電力選通(power gating)以將處理電路系統的某些元件與電源隔離,來實施節能狀態。處理電路系統可回應於來自監測電路系統的通知而離開節能狀態,該通知指示已偵測到受監測區域中的至少一者的改變。因此,藉由在監測資料儲存器中設置了適當的監測資料之後執行等待事件指令的行為,處理電路系統可節省電力且不需要不斷週期性地蘇醒以輪詢受監測的記憶體區域,因為監測行為反而是由監測電路系統來執行的。
由處理電路系統所執行以在監測資料儲存器中設定監測資料的更新監測指令可採取各種形式。在一個實施方式中,可能使用以記憶體映射的暫存器來界定監測資料儲存器的監測資料,使得更新監測指令可僅僅是將資料儲存到相對應於彼等以記憶體映射的暫存器的記憶體位址的常規儲存指令。然而,提供與標準儲存指令分開的專用指令以供更新監測資料可能是更高效的。例如,可在由處理電路系統所支援的指令集架構(ISA)中將專用的指令運算碼分配給更新監測指令。
在一個實例中,更新監測指令可在監測資料的更新之後識別二或更多個位址,該等位址識別要被監測改變的區域。例如,更新監測指令可指定基礎位址及位元映像,該位元映像識別要被監測的多個位址相對於基礎位址的偏移。基礎位址及位元映像可被編碼為由更新監測指令的編碼所明確識別的立即值,或可從由更新監測指令的編碼所指定的暫存器來存取。因此,可回應於單一指令而將多個非鄰接區域登錄在監測資料儲存器中,這可藉由減少設置監測資料的管理成本來改良效能。由更新監測指令所觸發的更新可覆寫與先前受監測的位址區域相關聯的任何資料,使得先前受監測的位址區域不再被監測改變。或者,除了任何先前受監測的位址區域以外,更新可界定要添加到受監測區域組的新區域。可取決於是否要維持或清除先前受監測的區域而界定不同版本的更新監測指令。
或者,在其他實施方式中,更新監測指令可僅識別單一的記憶體位址。在此情況下,可執行多個更新監測指令,各個更新監測指令指定不同的位址,以將多個非鄰接位址中的各者登錄在監測資料儲存器中。因此,在使用此方法的情況下,指令被解譯為界定要添加到由監測資料所追蹤的區域組的新的區域。例如,可使用界定要監視的一組位址的過濾器表示(例如布隆過濾器)來表示由監測資料所指示的位址空間區域,每次執行更新監測指令可能接著將額外的位址添加到過濾器。
雖然某些實施方式可回傳資料改變的特定區域的指示以及發送到處理電路系統的通知,在許多實施方式中,在不識別資料改變的特定區域的情況下讓通知包括中斷訊號或指示事件已發生的其他訊號可能是更高效的。例如,這可允許與一般的事件等待機制共享記憶體改變回報機制,該一般的事件等待機制亦用於監測其他事件而無關於由監測電路系統所進行的監測(例如可使用一般的事件回報中斷訊號)。並且,因為處理電路系統可能在接收到通知時處於節能狀態,用於回應哪個區域被存取的指示的電路系統可能還不是操作的。因此,讓處理電路系統在接收到區域中的至少一者已改變的通知之後明確請求受監測區域中的何者被存取的指示可能是更高效的。
因此,處理電路系統可支援回報監測結果指令,該指令可由處理電路系統執行以請求監測電路系統回傳資料已改變的至少一個區域的指示。例如,回報監測結果指令可觸發監測電路系統以回傳指示已改變的特定區域的位址的偏移的位元映像(據以計算該等偏移的基礎位址可能是隱含的,且因此可能不需要由監測電路系統傳送,因為該等基礎位址可能已經由原本更新監測資料而界定受監測區域的程序所知)。或者,監測電路系統可回傳已改變的區域的單一位址,且可能需要執行多個回報監測結果指令以請求回傳各個已改變的位址直到不再存在已改變的區域為止。
記憶系統可從由實體位址所識別的記憶體存取資料,該等實體位址是從由被處理電路系統執行的程式指令所指定的虛擬位址所轉譯的。對於平常的記憶體存取而言,用於將虛擬位址轉譯成實體位址的單向轉譯機制可能是足夠的。然而,監測電路系統可能需要例如回應於回報監測結果指令而回報受監測的多個區域中的哪一個特定區域改變了。因此,可提供逆向轉譯機制以供將實體位址轉譯回虛擬位址。可在監測資料儲存器本身內提供逆向轉譯機制(例如可針對各個受監測的區域提供用於監測區域的虛擬及實體位址兩者的指示,使得在基於實體位址偵測到監測區域的改變時,則該實體位址可被轉譯成相對應的虛擬位址以通知處理器哪個區域改變了)。或者,逆向轉譯機制可與監測資料儲存器分開(例如在監測資料儲存器界定受監測區域的過濾器表示時,其可能不包含各個受監測位址的明確指示,因此單獨的逆向轉譯儲存器可包含實體轉虛擬位址的映射)。並且,亦可使用軟體來提供逆向轉譯機制,其中執行在處理電路系統上的軟體將由監測電路系統回報為已改變的實體位址轉譯成如由處理電路系統所使用的虛擬位址。
處理電路系統亦可支援清除監測指令,該指令觸發處理電路系統從監測資料儲存器清除監測資料,使得不再由監測電路系統針對先前登錄的記憶體位置監測改變。在某些實施方式中,清除監測指令可能導致所有監測資料被清除,使得不再有任何一個先前登錄的記憶體位置被監測改變。對於監測資料儲存器的某些實施方式而言,亦可能提供一種版本的清除監測指令,該版本的清除監測指令可指定記憶體區域中要被清除監測資料的至少一個特定位址,使得在執行清除監測指令之後,其他區域仍可被監測電路系統監測。
亦可在發生異常事件時清除監測資料儲存器中的監測資料。在異常發生(例如上下文交換(context switch)、硬體分頁錯誤、中斷等等)之後,要由在異常發生之前執行的受中斷程序所監測的信息不太可能與在異常之後執行的後續程序相關。為了避免不必要地中斷後續的程序,可在異常發生時清除記憶體監測資料。在從異常處理的完成返回之後,受中斷的程序可掃描受監視的位址以檢查任何改變(例如藉由向受監測位址中的各者發出一系列的讀取操作來檢查),在此之前藉由執行另一更新監測指令以觸發監測電路系統再次恢復監測來重設監測資料。
在具有可從共享的記憶系統存取資料的多個主設備或高速緩存記憶體的系統中,可提供互連器以基於在主設備或高速緩存記憶體及互連器之間依據特定的一致性協定所交換的一致性協定交易(transaction)(例如監聽交易)來管理主設備或高速緩存記憶體之間的一致性。例如在某些情況下,在共享的資料被一個主設備更新時,可向可能保持相對應資料的其他高速緩存記憶體發送監聽交易以觸發來自彼等其他高速緩存記憶體的資料的無效化(invalidation)。可由監測電路系統重複使用此類一致性架構以供偵測與由監測資料儲存器所指示的區域中的一者相關聯的資料是否已改變。因此,監測電路系統並不需要讀取記憶體位置本身,而是可基於一致性協定交易來偵測受監測區域中的一者中的資料是否已改變。這可使用不同的方式來實施。在某些情況下,可將監測電路系統視為要在共享的資料更新之後被監聽關於對共享資料的更新的另一主設備或高速緩存記憶體,使其將從互連器接收監聽交易作為一致性方案中要被通知其他處的資料改變的部分。或者,監測電路系統可獨立於被針對維持一致性的主設備及高速緩存記憶體,但可截獲穿越互連器及其他主設備或高速緩存記憶體之間的一致性訊務,且基於彼等一致性協定交易來偵測受監測區域中的一者何時已存在改變。
由監測資料所界定的各個區域的大小可能從一個實施方式到另一實施方式是有所不同的。一般而言,各個區域相對應於具有給定大小的某個位址區塊。
然而,若監測資料將具有相同大小的區域界定為相對應於各個一致性協定交易的區域,則重複使用一致性架構以供由監測電路系統監測記憶體存取可能是更高效的。一致性協定可操作在預定的高速緩存列大小的粒度下,使得各個一致性協定交易指定具有該預定高速緩存列大小的資料區塊的位址。因此,監測資料儲存器亦可界定具有該預定高速緩存列大小的區域。
然而,由互連器及記憶系統所使用的高速緩存列大小可能對於執行在處理器上的軟體通常是不可見的。相同的代碼可執行在使用不同高速緩存列大小的微架構上。因此,裝置可被提供為具有配置暫存器,該配置暫存器指定指示在一致性協定中由互連器所使用的預定高速緩存列大小的值。配置暫存器對於執行在處理電路系統上的軟體可能是可見的,使得程控器可包括指令以讀取高速緩存列大小及接著將要受監測的位址映射到適當高速緩存列大小的區域上。
可在微架構的層級下以不同的方式來實施監測資料儲存器。在一個實例中,監測資料儲存器可包括具有許多儲存格的監測資料高速緩存記憶體,各個儲存格界定位址空間中要被監測改變的相對應區域。各個儲存格亦可包括其他資訊,例如上文所論述的從實體位址到相對應的虛擬位址的逆向位址轉譯映射。監測資料高速緩存記憶體可被包括在由互連器所管理的一致性方案中,使得以與跟給定主設備相關聯的常規資料高速緩存記憶體或指令高速緩存記憶體類似的方式對待(為了監聽的目的)該監測資料高速緩存記憶體。因此,互連器可依據一致性協定針對包括監測資料高速緩存記憶體的多個高速緩存記憶體管理一致性。監測資料高速緩存記憶體可在其他高速緩存記憶體或記憶體位置中的相對應資料改變時接收監聽請求,且此類監聽請求可觸發監測資料高速緩存記憶體處的一致性狀態上的改變,該改變可由監測電路系統所偵測到且用來對處理電路系統觸發通知。
不像常規的資料或指令高速緩存記憶體,監測資料高速緩存記憶體不需要實際儲存與相對應位址相關聯的資料,因為僅儲存位址標籤及一致性狀態界定資料可能就足以允許識別資料中由其他設備所觸發的改變。
在具有多個主設備的系統(各個主設備具有可能需要設定要被監測改變的位址空間區域的處理電路系統)中,各個主設備可具有單獨的監測資料高速緩存記憶體以供向相對應主設備的處理電路系統通知所指定的位址區域的改變。
在處理電路系統執行更新監測指令時,監測資料高速緩存記憶體可分配一致性協定的共享一致性狀態下的至少一個新的儲存格。互連器可在一致性協定下操作,使得在二或更多個高速緩存記憶體針對處於共享一致性狀態下的給定位址保持儲存格時,對於彼等儲存格中的一者進行的寫入行為觸發其他高速緩存記憶體中的相對應儲存格的無效化。因此,互連器可回應於偵測到對位址空間的相對應區域進行的寫入行為,而觸發監測資料高速緩存記憶體的給定儲存格從共享一致性狀態轉變到無效(invalid)一致性狀態。監測電路系統可對監測資料高速緩存記憶體監測從共享一致性狀態轉變到無效一致性狀態的儲存格,且在偵測到轉變到無效一致性狀態之後,監測電路系統可向處理電路系統提供通知以訊號傳遞位址空間的受監測區域中的一者已改變。
不像常規的高速緩存記憶體(對於常規的高速緩存記憶體而言,高速緩存記憶體的儲存格的無效化使得該儲存格可用於重新分配給另一位址),在使用監測資料高速緩存記憶體的情況下,從共享一致性狀態轉變到無效一致性狀態的儲存格可被保留在監測資料高速緩存記憶體中。處理電路系統可預期從某些通訊流接收到多個信息,且因此一旦目前的信息已被讀取,可能仍需要對相同的位置監測改變,且因此將儲存格保留在監測資料高速緩存記憶體中可能是較佳的。將儲存格保留在監測資料高速緩存記憶體中在無效一致性狀態下亦允許儲存格的部分追蹤已向處理電路系統回報相關位址處的資料改變的程度。追蹤已向處理電路系統回報資料改變的程度可幫助避免信息被處理電路系統錯失或信息被回報多次。
在一個實例中,可在處理電路系統已被提供為具有將相對應的區域識別為偵測到改變的區域的區域指示(例如區域指示可為回應於回報監測結果指令而回傳的位元映像或其他資訊)之後,回應於偵測到由處理電路系統對相對應區域進行的讀取或寫入存取而自動將監測資料儲存器的儲存格從無效一致性狀態切換到共享一致性狀態。一直到處理電路系統觸發了對記憶體位址空間的已改變的區域進行的讀取或寫入存取行為的時間點,都不需要繼續監測該區域,因為一般而言,傳送動作元可具有機制以供防止對表示信息的記憶體位址進行後續更新直到已偵測到相對應的區域已被接受器讀取或寫入為止。然而,一旦處理電路系統向相對應的區域發出讀取或寫入,可能可由傳送動作元發送另一信息。藉由回應於對相對應區域進行的讀取/寫入而將監測資料高速緩存記憶體的相對應儲存格從無效一致性狀態切換到共享一致性狀態,這使得相對應的高速緩存列自動進入工作狀態,使得監測電路系統將接著繼續對該位址區域監測改變且避免了受監測區域的改變被錯失了的錯誤否定。
注意,從處理電路系統進行的觸發從無效一致性狀態轉變到共享一致性狀態的存取可為讀取存取或寫入存取。處理電路系統可在不讀取信息位置的情況下對該信息位置發出寫入行為可能看起來是違反直覺的,因為吾人會預期處理電路系統讀取所接收到的信息。然而,有時候受監測的區域可能並未儲存要傳送動作元從發送到接收動作元的實際信息或共享資料,而是可能反而儲存了用來控制對於某些其他的共享資源所進行的專有存取行為的鎖定變數。因此,在偵測到傳送動作元已改變了受監測區域中的資料之後,此舉可以訊號傳遞傳送動作元已撤回鎖定,而允許處理電路系統發出寫入存取以為它自己索取鎖定且因此提供了對於與鎖定相關聯的另一共享資源的存取權。因此,由處理電路系統在接收到特定的位址區域已改變的回報之後所發出的交易可為讀取或寫入行為,且讀取及寫入行為皆可觸發監測資料高速緩存列自動進入工作狀態到共享一致性狀態以重新開始監測。
除了依據相關的一致性協定來指示關於高速緩存記憶體的各個儲存格的一致性狀態的資訊以外,各個監測資料高速緩存記憶體儲存格亦可指定回報狀態資訊,該回報狀態資訊指示已向處理電路系統回報與相對應區域相關聯的資料上的改變的程度。雖然在某些實施方式中,單一的狀態欄位可指示一致性狀態及回報狀態資訊兩者,在高速緩存記憶體一致性狀態是由來自回報狀態資訊的單獨欄位所指示時,將監測資料高速緩存記憶體與現存的一致性協定整合在一起,使得可使用由一致性機制的其他高速緩存記憶體所使用的相同格式來指示一致性狀態,可能是較簡單的。
回報狀態資訊可指示各個儲存格是否處於以下狀態中的一者下: 無效回報狀態,指示監測電路系統仍要偵測與相對應區域的相關聯資料的改變; 已改變狀態,指示監測電路系統已偵測到與相對應區域相關聯的資料改變,但仍要將區域指示提供給處理電路系統,該區域指示將相對應的區域識別為偵測到改變的區域;及 已回報狀態,指示處理電路系統仍要在被提供了所述的區域指示之後存取相對應的區域。
例如,各個儲存格可具有二位元欄位,該欄位用於針對監測高速緩存記憶體的相對應儲存格將三個回報狀態中的一者指示為目前的回報狀態。二位元欄位的第四個編碼可為無效或可被重複用於其他的用途或額外的回報狀態。
在回應於處理電路系統執行更新監測指令而首次將新的儲存格分配到高速緩存記憶體時,新分配的儲存格可能開始處於無效回報狀態下,因為還未回報相對應區域中的資料的任何改變。在由監測電路系統偵測到受監測區域中的一者的改變時,監測資料高速緩存記憶體的相對應儲存格可接著從無效回報狀態轉變成已改變狀態(且一致性狀態亦可在此時間點從共享的轉變成無效的)。
在處理電路系統執行回報監測結果指令以請求哪些區域已改變的指示時,監測電路系統可向處理電路系統回傳區域指示,且亦觸發與已回報的區域指示相關聯的儲存格從已改變狀態轉變成已回報狀態,該區域指示相對應於監測資料高速緩存記憶體的相對應儲存格目前處於已改變狀態下所針對的任何區域。因此,若處理電路系統接著執行另一回報監測結果指令,則已經回應於先前回報監測結果指令的執行而被回報的區域將已經處於已回報狀態下,且因此彼等區域將不被再次回報,因為回報監測結果指令觸發儲存格是處於已改變狀態下的彼等區域的回報行為。這提供了用於避免處理電路系統需要處理亂真的重複更新的機制,而確保了受監測區域的各個改變被回報一次。
在用於給定區域的儲存格處於已回報狀態時,這指示,處理電路系統已被提供了特定區域改變了的事實的指示(而不是僅是在不識別特定區域的情況下一般地接收至少一個區域改變了的通知)。處理電路系統可接著隨後如上文所論述地向已改變的區域發出讀取或寫入存取,且在此時間點,監測電路系統可觸發相對應的高速緩存記憶體儲存格從回報狀態轉變成無效回報狀態,以指示將需要向處理電路系統再次回報記憶系統中的相對應區域的任何後續改變。如上所述,回報狀態的此轉變可能與從無效轉變成共享的高速緩存記憶體一致性狀態符合,以重新開始監測相對應位址的改變。
如上文所論述地將監測資料儲存器實施為監測資料高速緩存記憶體可能是實施監測資料儲存器的相對高效的方式,因為監測資料高速緩存記憶體僅向互連器呈現為另一高速緩存記憶體且因此不需要現存互連器或一致性機制的任何改變,並且高速緩存記憶體亦可提供上文所論述的逆向轉譯機制,因為在用於基於監聽位址來尋找高速緩存記憶體的實體位址標籤旁邊添加虛擬位址標籤可能足以提供逆向的位址轉譯。
處理電路系統可存取的配置暫存器可界定監測資料高速緩存記憶體的大小(儲存格數量),使得軟體可識別可同時監測的位址區域的有多少。例如,取決於特定系統實施方式的需要,高速緩存記憶體可為相對小的且僅支援一次監測某個數量(例如8或16)的儲存格,或可為較大的。
然而,亦存在著可表示監測資料儲存器的其他方式。如上所述,可使用過濾器表示,而不是提供明確識別要監測的各個位址的儲存格,其中可使用資料已改變的區域的位址來詢問該過濾器表示且在詢問偵測到與過濾器表示匹配時向處理電路系統提供通知。例如,過濾器表示可包括位元陣列,且在更新監測資料以添加要監測的額外區域之後,可使用基於額外區域的位址的一或更多個散列函數來選擇的位元來設定受選的位元子集。在詢問過濾器之後,可使用類似的方式散列化資料已改變的區域的位址,且若相對應於該位址的所有位元皆已被設定,則可能偵測到匹配。此方法可減少需要儲存來界定要監測的給定數量的位址的儲存容量,雖然資料已改變的區域的位址實際上不是要監測的位址中的一者,但可在已改變位址的散列化湊巧與已回應於由處理電路系統所指定的其他位址而被設定的一組位元匹配時容許某些偽陽性偵測。儘管如此,偶發的偽陽性偵測可能是可接受的,以減少監測資料的儲存管理成本。
在使用過濾器方法的情況下,可能不存在用於要監測的各個位址的專用儲存格,且因此追蹤相對應區域的回報狀態可能是不可能的。為了減少對於受監測位址的更新被處理電路系統錯失的可能性,可提供位址佇列來儲存過濾器的詢問所針對而偵測到匹配的一或更多個位址的指示。因此,在偵測到過濾器結構的匹配時,可將相對應資料更新的位址公佈到位址佇列,處理電路系統在準備好的時候可隨後從該位址佇列讀取被匹配的位置以識別哪些區域改變了。
監測資料儲存器可定位在互連器或記憶系統的其他部分內,而不是與設定相對應監測資料的特定處理電路系統在同一區域。例如,可在一致點處實施提供過濾器表示的資料結構(例如與由互連器所使用的監聽過濾器平行實施以追蹤哪些高速緩存記憶體保持來自特定位址的資料)。因此,在偵測到且在監聽過濾器中尋找對給定位址進行的資料存取時,亦可針對過濾器表示詢問該資料存取以識別該資料存取是否匹配受監測的區域中的任一者。在具有多個主設備的系統(各個主設備具有能夠設定監測資料以界定所要針對監測改變的位址空間區域的處理電路系統)中,可提供二或更多個過濾器表示,每個主設備一個過濾器表示,其中各個過濾器表示儲存了指示如由相對應的主設備所指定的要監測的區域的資料。因此,互連器可詢問多個過濾器且接著取決於中過濾器的哪一者與受監測的位址匹配而向相關的主設備觸發通知。
圖1示意性地繪示資料處理系統2的實例,可在該資料處理系統中使用此案中所描述的技術。系統2具有許多主設備4、6,該等主設備共享記憶體8的存取權。在此實例中,主設備包括兩個中央處理單元(CPU)4及網路介面控制器(NIC)6,但將理解到,這僅是一個實例,且可提供許多其他類型的主設備,例如圖形處理單元(GPU)、顯示控制器、直接記憶體存取(DMA)控制器、周邊輸入/輸出(I/O)控制器等等。一致互連器10被提供為依據一致性協定管理各別主設備之間的一致性。合適一致性協定的實例可包括由英國劍橋的ARM®有限公司所提供的ARM® AMBA® ACE或ARM® AMBA® CHI,但將理解到,亦可使用其他的一致性協定。某些主設備(例如CPU 4)具有用於從記憶系統高速緩存指令或資料的一或更多個高速緩存記憶體12。雖然圖1為了簡潔起見繪示各個CPU 4具有單一的高速緩存記憶體12,但給定的主設備可具有多個高速緩存記憶體,例如單獨的指令及資料高速緩存記憶體或多個等級的高速緩存記憶體(例如等級1及等級2的高速緩存記憶體)。裝置亦可包括至少一個系統等級高速緩存記憶體14(例如耦接到互連器10),該系統等級高速緩存記憶體未被分配給特定的主設備但被定位得較靠近記憶系統。系統高速緩存記憶體14可用於加速由未高速緩存化的主設備(例如網路介面控制器6,其本身不具有高速緩存記憶體)對於記憶系統進行的存取。
互連器10具有監聽過濾器16,該監聽過濾器追蹤哪些高速緩存記憶體保持來自特定位址的資料。監聽過濾器16可為準確的,或可使用更近似的表示(例如過濾器表示),該表示容許給定的位址被高速緩存在特定的高速緩存記憶體中的某些偽陽性偵測但並不容許偽陰性(資料被高速緩存但這未被過濾器偵測到的時候的情況)。在偵測到從給定的主設備對給定的位址所進行的讀取或寫入存取之後,一致互連器10對監聽過濾器16尋找相對應的位址,且識別哪些高速緩存記憶體可能正保持著該資料,且依需要向相對應的高速緩存記憶體傳送監聽請求以詢問由彼等高速緩存記憶體所保持的資料的一致性狀態、回傳相對應的資料值及/或觸發無效化。一致性協定可界定在資料被保持在特定一致性狀態下的高速緩存記憶體中時對於特定類型的交易要採取什麼回應。例如,在資料被高速緩存在共享狀態下而指示要與其他高速緩存記憶體中的相對應資料維持一致性時,則由一個設備對於共享資料所進行的寫入行為可能觸發系統中其他處的高速緩存記憶體中的相對應資料的無效化,以避免其他的主設備存取可能過期了的資訊。因此,互連器10可與各別的高速緩存記憶體或主設備交換各種一致性協定交易(例如讀取、寫入或監聽交易)。
運行在CPU 4中的一者上的軟體程序可能需要快速及高效地多工傳輸從其他動作元所接收的許多通訊流。這些通訊流可能例如來自可能正在更新共享記憶體的其他主設備4、經由網路介面控制器6或周邊I/O設備來自外部來源或來自執行在相同的主設備上的另一軟體程序(例如另一虛擬機器)。為了避免軟體程序需要連續輪詢大量的記憶體位置,圖1中的各個CPU 4被提供為具有用於儲存監測資料的監測資料高速緩存記憶體20及用來監測對於記憶系統所進行的存取的監測電路系統22,該監測資料界定記憶體位址空間中要被監測改變的區域。在監測資料儲存器20中的區域中的一者中的資料的改變被監測電路系統22偵測到時,監測電路系統22向相對應的CPU 4發送中斷訊號以通知CPU 4受監測的位址中的一者已改變。監測資料儲存器20能夠儲存界定許多非鄰接位址的監視資料,使得可平行地對多個高速緩存列監測改變。
在架構的等級下,處理器4可支援指令集架構中控制監測資料儲存器20中的監測資料的設定及清除以及回報哪些區域已改變的許多指令。各個處理器4的指令解碼器可偵測所擷取以供處理的指令運算碼,且在遭遇到下文中所論述的記憶體監測指令中的一者時控制處理電路系統4以觸發監測資料高速緩存記憶體20中的資料的更新或從監測電路系統20請求哪些區域已改變的回報。
因此,提供了多記憶體等待指令以允許CPU 4將記憶體位置登錄到CPU本端的監測儲存器20,使得相對應的監測電路22可接著監視彼等位置的改變發生,同時CPU可進入低電力模式以等待被通知彼等改變且不錯失任何改變。這導致了整體輪詢時間上的實質改良,因為用於監測多個通訊流的輪詢時間減少到了常規的輪詢技術中針對單一通訊流進行輪詢所花費的時間(T_輪詢 = t_單一_通訊流,其為一常數)而不是與通訊流的數量線性地增減規模。
可在架構中使用不同的方式指定多記憶體等待指令(更新監測指令)。一個實現方式會是載入多記憶體等待(load multi-memory wait, ldmmw)指令,該載入多記憶體等待指令指定基礎位址及基礎位址之後要監視的順序位址的位元映像: ldmmw %base, %bitmap 其中%base指定儲存基礎位址的基礎暫存器,而%bitmap指定儲存位元映像的暫存器,該位元映像識別受監測位址相對於基礎位址的偏移。
或者,ldmmw指令可指定要監測改變的單一位址(ldmmw %base %offset)。在此情況下,可在迴圈中使用不同的位址呼叫ldmmw指令多次。CPU微架構可接著建構要監視存取行為的位址組的過濾器表示,該等存取行為會改變彼等位址的值。
接著在使用等待事件(wait-for-event, wfe)指令的情況下,處理器可被切換到節能狀態,且處理器4接著等待監測電路系統22以訊號傳遞已偵測到改變。在監測電路系統22通知處理器已發生事件時,可執行取得多記憶體等待結果(get multi-memory wait result, gmmwr)指令(回報監測結果指令)以觸發監測電路系統22回傳哪些位址改變了的指示。例如 gmmwr %dest (其中%dest指定目的地暫存器,已改變區域的位址的位元映像要儲存到該目的地暫存器)。在背景中,處理器仍可在等待事件指令之間收集關於所登錄的記憶體位置的事件。
或者,若ldmmw指令指定單一的位址偏移,則相對應的gmmwr指令可回傳單一位址,且在WFE在正常情況下回傳時,CPU可接著呼叫gmmwr %dest多次以收集在處於WFE下的同時改變了的位址。在發生異常的情況下,將針對處理器清除監測器,且在從異常返回之後,gmmwr指令將回傳錯誤結果,而強制處理器重設監測器及掃描其位址組。
清除多記憶體等待(clear-multi-memory-wait, clear monitor)指令亦可被界定為清除監測器以使處理器停止監視位址及向其通知改變。在異常(上下文交換、硬體分頁故障、中斷等等)之後,可清除監測器,且WFE可在異常的完成之後回傳,而強制處理器掃描受監視的位址以檢查改變及接著藉由執行另一更新監測指令來重設監測器。
應注意,這些指令接受虛擬位址,但它們可透過記憶體管理單元(MMU)處理而被轉換成實體位址以參與微架構的實施方式。
在架構等級下,系統可具有一或更多個配置暫存器30、32,該等配置暫存器指定由執行在處理器4上的代碼所使用的參數以決定如何設定要監測的區域的位址。例如,配置暫存器可包括界定由一致性協定所使用的高速緩存列大小30的資訊,而界定了一致性交易用以參照位址空間的區域的粒度。各個一致性協定信息可指具有某個高速緩存列大小的資料區塊,且藉由使得處理器4可看見此大小,處理器4可設定具有相對應大小的區域作為監測資料儲存器20中的受監測區域。這使得受監測區域的改變的偵測是更高效的,因為在一致性交易及受監測區域之間存在著一對一映射。並且,配置暫存器可包括指定監測資料高速緩存記憶體20的儲存格數量的監測高速緩存記憶體大小指示32,使得軟體可識別可同時監測位址空間的不同區域有多少個。
如圖1中所示,能夠設定用於監測記憶體位置的請求的各個主設備4被提供為具有其自己的單獨監測資料高速緩存記憶體20及監測電路系統22。監測資料高速緩存記憶體20被整合到由一致互連器10所管理的一致性方案中,使得監測資料高速緩存記憶體20中的儲存格依據相關的一致性協定標有一致性狀態,使得它們將回應於相對應位址中的資料改變而被監聽。
圖2示出監測資料高速緩存記憶體20的實例,該監測資料高速緩存記憶體包括許多儲存格40,各個儲存格相對應於要被監測改變的一個區域。各個儲存格40包括了許多資訊片段,該等資訊片段包含一致性狀態42、回報狀態44以及實體標籤46及虛擬標籤48,該一致性狀態依據由互連器10所管理的一致性協定來指示相對應的高速緩存列的狀態,該回報狀態指示已向相對應的處理電路系統4回報與相對應區域相關聯的資料中的任何改變的程度,該實體標籤及虛擬標籤表示要監測的相對應區域的實體及虛擬位址的部分。藉由在監測資料高速緩存記憶體20中提供實體標籤46及虛擬標籤48兩者,監測資料高速緩存記憶體20提供了逆向轉譯機制,因為可基於一致性協定的實體位址來查找監測高速緩存記憶體40且在偵測到匹配時可將該實體位址映射到要向處理器4回報的相對應虛擬位址。不像常規的資料或指令高速緩存記憶體,並不存在用於儲存與受監測位址相關聯的實際資料的資料欄位,因為狀態指示及位址標籤已足以監測記憶系統中的其他處的資料是否已改變。
圖3為狀態圖,示出一致性狀態42及回報狀態44是如何回應於與監測相對應的位址區域相關的不同事件而改變的。如圖3中所示,一致性狀態(C)可能處於無效一致性狀態及共享一致性狀態中的一者下。在一致性協定中,無效一致性狀態會指示,相對應的高速緩存記憶體儲存格並不包含有效資料,而共享一致性狀態會指示,要與保持在其他高速緩存記憶體中的相對應資料維持一致性且因此在其他處對於共享資料進行的寫入行為應觸發相對應的高速緩存記憶體儲存格的無效化。監測方案重複使用這些一致性狀態,使得在儲存格40處於無效一致性狀態下時,這指示了相對應的位址區域目前並不被監測改變,而共享一致性狀態指示位址正在被監測改變。注意,一致性協定亦可界定無效或共享以外的額外一致性狀態(例如潔淨(Clean)或不淨(Dirty)),但這些可能無關於監測用途所以不需要被記錄。
回報狀態(R)可能處於無效狀態、已改變狀態或已回報狀態中的一者下。注意,無效回報狀態是與無效一致性狀態獨立的–高速緩存列可處於無效一致性狀態下又處於無效以外的回報狀態下,或處於無效回報狀態下又處於共享一致性狀態下。無效回報狀態指示,位址可能被監測或可能不被監測,但若發生了監測行為,則相對應區域的改變還未被識別。已改變狀態指示,改變已被監測電路系統20偵測到,但處理器4還未請求哪個區域改變了的通知。已回報狀態指示,已通知處理器哪些區域改變了,但處理器還未讀取或寫入相對應的記憶體位置。
圖3的狀態轉變如下: 在導致系統初始化的系統重設或其他事件之後,監測資料高速緩存記憶體20的各個儲存格開始處於一致性狀態C及回報狀態R兩者是無效的狀態50下。 回應於執行指定要被監測改變的一或更多個位址的更新監測指令(ldmmw),將一或更多個儲存格分配給高速緩存記憶體20,且新分配的儲存格轉變成一致性狀態C是共享的而回報狀態R保持無效的狀態52。因為監測高速緩存記憶體20包含了共享資料,相對應的位址會在互連器10的監聽過濾器16中被標記為被監測資料高速緩存記憶體20所保持,且因此會回應於相對應位址區域中的資料改變而監聽監測資料高速緩存記憶體20。
在從一致互連器10接收到指定受監測位址中的一者的無效化監聽請求之後,受監測位址區域的資料改變被偵測到,且監測資料高速緩存記憶體20的相對應儲存格的一致性狀態C從共享的轉變成無效的。並且,回報狀態R從無效的轉變成已改變的。對CPU進行的通知(例如用來觸發從等待事件狀態離開的中斷訊號)亦可能由此從狀態52轉變成狀態54的行為所觸發。雖然一致性狀態現在是無效的,但儲存格被保留在高速緩存記憶體中以允許追蹤回報狀態,且儲存格不能被重新分配給不同的位址直到其已返回到狀態50(無效-無效)為止。
在對任何高速緩存列執行回報監測結果指令(report monitoring result instruction, gmmw)之後,監測電路系統回傳相對應高速緩存記憶體儲存格40的回報狀態R是已改變的一或更多個位址的指示,且位址被回報的儲存格從已改變的回報狀態轉變成已回報的回報狀態(圖3的狀態56)。
在對相對應的監測高速緩存記憶體儲存格40所針對而處於已回報的回報狀態56下的區域進行的CPU讀取或寫入被偵測到時,這將該儲存格返回到狀態52,亦即一致性狀態C從無效的轉變成共享的,且回報狀態R從已回報的轉變成無效的。因此,對先前回報的區域所進行的CPU讀取或寫入自動使監測資料儲存器20進入工作狀態,使得監測電路系統22將重新開始對相對應的區域監測改變(共享資料將在其他處的資料被更新時再次被互連器20監聽)。在CPU讀取/寫入之後進行的從狀態56轉變成狀態52的行為消除了偽陰性回報(在處理器已讀取/寫入受監測區域之後對該受監測區域進行的更新被錯失時的情況)的可能性。
在處於狀態52及56中的任一者下時,清除記憶體監測指令(clear memory monitor instruction, clmmw)的執行或異常的發生使得所有高速緩存列轉變成狀態50(無效-無效)。或者,清除記憶體監測指令可被界定為指定要清除監測資料的特定位址,且在此情況下,只有彼等特定的位址可讓它們的高速緩存列轉變回到無效-無效50。異常亦可能使得從狀態54、56中的一者轉變成無效-無效,因為回報狀態資訊的丟失在此情況下可能不是個問題,因為在任何情況下,設定監測資料的程序可在完成異常處理之後對受監測的位址掃描改變且接著重設監測資料。
總而言之,此狀態控制機制避免了錯失更新且亦避免了需要處理重複的更新,因為已改變及已回報狀態的使用確保了各個已改變的位置將僅被特定的gmmw指令執行回報一次。
圖4示出以硬體實施監測資料儲存器20的替代方式。在此情況下,監測儲存器反而包括在相關的一致點處所提供的一組過濾器儲存器60,而不是在現存的高速緩存記憶體12旁邊針對各個主設備4提供監測資料高速緩存記憶體。例如,圖4示出過濾器儲存器60被提供在互連器的監聽過濾器16旁邊。可能在系統內存在著多個一致點(互連器的等級)以供管理不同的主設備子集中的一致性,且因此各個一致點可能具有單獨的監測資料儲存器60組。為了追蹤由不同主設備所指定的不同組的監測位址,各個一致點可具有多個過濾器,每個主設備一個過濾器,如圖4中所示。
各個監測過濾器60可使用一種過濾器表示,該過濾器表示儲存了具有取決於要監測的位址的散列而設定的位元圖案的某個數量的過濾器位元,且針對已改變的資料的位址詢問過濾器表示的行為使用與在設定過濾器時所使用的彼等散列函數相對應的散列函數來散列化已改變的位址,且若從已改變位址的散列化所識別的所有位元已經被設定在過濾器中則偵測到匹配。例如,可使用布隆過濾器。過濾器60即使在處理器不是在執行等待事件的行為且處於節能狀態下時亦可保持收集及公佈通知以保證不丟失更新。為了即使在處理器休眠時亦保持收集事件,可針對各個處理器提供硬體信息佇列(FIFO)70以持續收集可接著由處理器4在下次蘇醒時讀取的位址。
在使用此方法的情況下,可針對各個主設備提供單獨的逆向位址轉譯機制72,以執行從由一致的組構(fabric)所使用的實體位址逆向位址轉譯回到由相對應的處理器4所使用的虛擬位址的行為。圖4為了簡潔起見示出用於CPU 4中的兩者的逆向轉譯機制72,但將理解到,可針對能夠在過濾器60中設定受監測位址的主設備中的各者提供一個逆向轉譯機制。或者,執行在CPU 4上的軟體可將受監測記憶體存取的實體位址轉譯回到由CPU 4所使用的虛擬位址來識別已改變的記憶體存取,而不是使用硬體來提供逆向轉譯機制。各個過濾器60的大小會需要大到足以避免產生太多關於未監視的位址的亂真偽陽性通知(過濾器越小,相對應於給定的未監視位址的位元圖案越可能湊巧由於與受監視位址組的散列重疊而是全被設定的)。
對於具有目錄風格的一致性的大系統而言,另一選項可為向各個指揮節點傳遞示例布隆過濾器,或可為針對需要監測的位址將黏滯位元(sticky-bit)擴增給各個目錄節點,使得該等位址在沒有處理器擁有高速緩存記憶體中的該特定列時不被丟棄。例如,如圖5中所示,互連器或其他一致性基本架構內的監聽目錄80除了一致性狀態資訊42、實體位址標籤44及指示哪些高速緩存記憶體保持著用於相對應位址的有效資料的高速緩存記憶體位元映像82以外,亦可保持一組監測位元84,各個監測位元指示相對應的位址是否被相對應的處理器或其他主設備監測。若監測位元84中的一或更多者被設定,則即使在所有高速緩存記憶體無效化資料時亦會保留目錄儲存格,且在偵測對受監測位址進行的寫入行為之後,被旗標標記為監視該位址的處理器會被通知。再次地,可每個主設備提供一個位址佇列70以供記錄改變已被通知的位址。或者,可存留過濾器或黏滯位元,而允許在處理器目前不處於等待事件的情況下的同時持續產生通知以便不丟失到來的事件。或者,各個目錄可針對各個處理器儲存過濾器,或將更多儲存格添加到目錄以針對可能不再被高速緩存的高速緩存列儲存黏滯位元,而不是在一個目錄中指示多個處理器。這可導致將許多額外的位元儲存在區域及效能敏感的結構中。此外,此實施方式亦會需要逆向的轉譯機制,例如儲存實體位址轉虛擬位址的映射的另一高速緩存記憶體,該高速緩存記憶體會看起來與圖2的監測高速緩存記憶體20類似。
圖6示出用於給定處理器4的方法,該方法用來回應於針對給定的軟體程序所指定的指令而請求監測某群位址區域及處置彼等位址區域中的資料改變的通知。在步驟100處,判定是否執行更新監測指令,且若如此,則在步驟102處,監測資料儲存器20、60中的監測資料被更新為界定位址空間中要監測的多個(可能是非鄰接的)區域。若未執行更新監測指令,則步驟102被跳過。在步驟104處,判定處理器是否已執行等待事件(WFE)指令,且若否,則萬一處理器4仍然等待著使用後續的更新監測指令來界定要監測的進一步記憶體區域,則處理器返回步驟100。
在步驟104處執行等待事件指令時,則方法繼續進行到步驟105,在步驟105處,處理電路系統4檢查事件是否已經發生了。可能情況的是,監測電路系統22可能已經回應於WFE指令而在還未進入節能狀態之前接收到事件通知及將該事件通知排好佇列,在該情況下,被排佇列的事件可有效地取消WFE指令。若事件還未發生,則方法繼續進行到步驟106,在步驟106處,處理器進入節能狀態,例如在該節能狀態下,處理器的某些元件被電力選通以減少電力消耗,或連到某些元件的時脈被選通或減少頻率。在處於節能狀態下的同時,監測電路系統22監測監測資料儲存器20中所界定的受監測區域的改變。監測電路系統22在偵測到受監測區域的改變時向處理電路系統4觸發事件通知(例如中斷訊號)。在步驟108處,處理電路系統4中在節能狀態期間保持通電的部分判定是否已接收到事件通知,且若否,則返回到步驟106以繼續等待事件通知。在接收到事件通知時,接著方法繼續進行到步驟110以離開節能狀態。在步驟112處,執行回報監測結果指令以識別哪些區域改變了。回應於回報監測結果指令,受監測的電路系統22回傳被偵測到改變的一或更多個位址的指示。例如,被回報的位址可為圖2-3的實例中的相對應高速緩存記憶體儲存格40所針對而處於已改變回報狀態下的位址,或是圖4的實例中的儲存在位址佇列70中的位址。若在步驟105處,事件已經發生,則步驟106-110被省略,且方法從步驟105繼續進行到步驟112。
在步驟114處,處理電路系統偵測任何區域實際上是否改變了。可能需要此步驟,因為可能將等待事件機制與可回應於監測區域中的資料改變以外的事件而觸發事件通知的其他功能共享,且因此可能的情況是,即使在受監測區域中的任一者中沒有資料改變時亦可能已接收到事件通知。若沒有區域實際上已改變了,則方法返回到步驟104以執行另一等待事件指令及繼續等待受監測區域的改變。若受監測區域中的任一者確實改變了,則在步驟116處,處理電路系統4觸發讀取或寫入交易以讀取或寫入已改變區域中的資料(例如讀取接收到的信息或設定鎖定變數)。在步驟118處,判定是否仍然需要進行監測,且若如此,則方法返回到步驟104以執行另一等待事件指令以重新進入節能狀態及繼續等待對監測區域的進一步更新。若不再需要進行監測,則在步驟120處,執行清除監測指令以從監測資料儲存器清除監測資料,且因此停止監測電路系統22通知處理器對於這些區域的任何後續更新。
因此,希望在二或更多個非鄰接記憶體區域中的任一者中的資料改變時接收通知的軟體可在最終執行清除監測指令以停止監測之前循環經過一指令迴圈,該指令迴圈包括更新監測指令、等待事件指令、回報監測結果指令及記憶體讀/寫指令。在使用此方法的情況下,處理器不需要持續輪詢受監測區域中的各者,而允許處理器保持在節能狀態下更長時間,且亦減少了記憶系統中的記憶體訊務量,且因此改良了能源效率及處理效能。
圖7示意性地繪示適於實施本文中的某些示例實施例中所述的技術的虛擬機器實施例。雖然先前所述的實施例在用於操作支援所涉及的技術的特定處理硬體的裝置及方法的意義上實施本發明,亦可能提供硬體設備的所謂的虛擬機器實施方式。這些虛擬機器實施方式運行在主機處理器530上,該主機處理器150運行支援虛擬機器程式510的主機作業系統520。一般而言,需要更強力的處理器來提供在合理速度下執行的虛擬機器實施方式,但此類方法在某些環境中可被調整(justify),例如在基於相容性或重複使用的理由而有需要運行另一處理器的原生代碼時。虛擬機器程式510被儲存在儲存媒體上,該儲存媒體可為非暫時性儲存媒體。虛擬機器程式510向應用程式500提供了應用程式介面,該應用程式介面與會由真實硬體所提供的應用程式介面相同,該真實硬體是被虛擬機器程式510模仿的設備。因此,在上文所論述的記憶體監測的情況下,虛擬機器程式510可界定回應於應用程式500的更新監測指令、回報監測結果指令或清除監測指令而執行的操作,使得會以如上文所論述的硬體方式執行的相對應操作被虛擬機器程式510以軟體方式觸發。類似地,虛擬機器程式510可包括用於如上文所論述地追蹤狀態轉變及監測高速緩存記憶體的相對應改變的指令。如此,在虛擬機器下執行的應用等級的軟體500不需要輪詢多個記憶體位置,其中記憶體存取的監測反而是由虛擬機器回應於應用程式500的記憶體監測配置指令而執行的。
在本案中,用詞「配置為...」用來意指裝置的構件具有能夠實現所界定的操作的配置。在此背景脈絡下,「配置」意指硬體或軟體互連的佈置或方法。例如,裝置可具有提供所界定操作的專用硬體,或處理器或其他處理裝置可編程為執行該功能。「配置為」並不暗示的是,裝置構件需要以任何方式改變以提供所界定的操作。
雖然已參照附圖而在本文中詳細描述本發明的說明性實施例,要了解到,本發明不限於彼等準確的實施例,且本領域中的技術人員可在該等實施例中作出各種改變及更改而不脫離如由隨附請求項所界定的發明的範圍及精神。
2‧‧‧系統
4‧‧‧中央處理單元(CPU)
6‧‧‧網路介面控制器(NIC)
8‧‧‧主記憶體
12‧‧‧高速緩存記憶體
14‧‧‧系統等級高速緩存記憶體
16‧‧‧監聽過濾器
20‧‧‧監測資料高速緩存記憶體
22‧‧‧監測電路系統
30‧‧‧高速緩存列大小
32‧‧‧監測高速緩存記憶體大小
40‧‧‧儲存格
42‧‧‧一致性狀態
44‧‧‧回報狀態
46‧‧‧實體標籤
48‧‧‧虛擬標籤
50‧‧‧狀態
52‧‧‧狀態
54‧‧‧狀態
56‧‧‧狀態
60‧‧‧過濾器儲存器
70‧‧‧硬體信息佇列(FIFO)
72‧‧‧逆向位址轉譯機制
82‧‧‧高速緩存記憶體位元映像
84‧‧‧監測位元
100‧‧‧步驟
102‧‧‧步驟
104‧‧‧步驟
105‧‧‧步驟
106‧‧‧步驟
108‧‧‧步驟
110‧‧‧步驟
112‧‧‧步驟
114‧‧‧步驟
116‧‧‧步驟
118‧‧‧步驟
120‧‧‧步驟
500‧‧‧應用程式
510‧‧‧虛擬機器程式
520‧‧‧主機作業系統
530‧‧‧主機處理器
將藉由以下的實例說明來理解本技術的進一步的態樣、特徵及優點,該實例說明要與附圖結合閱讀。
圖1示意性地繪示一種裝置的實例,該裝置具有:監測資料儲存器,用於儲存指示記憶體位址空間的至少兩個非鄰接區域的監測資料;及監測電路系統,用來監測對於彼等區域所進行的存取及在受監測的區域中的資料已改變時通知處理電路系統;
圖2示出監測資料高速緩存記憶體的實例;
圖3示出狀態圖,其針對監測高速緩存記憶體的給定儲存格指示一致性狀態及回報狀態的轉變;
圖4示出一種裝置的第二實例,該裝置具有:監測資料儲存器,其中該監測資料儲存器是使用在一致點(point of coherency)處所提供的過濾器來實施的;
圖5示出另一替代方案,其中監測資料儲存器包括互連器(interconnect)的監聽目錄;
圖6示出流程圖,其繪示一種監測對記憶體所進行的存取的方法;及
圖7示出可使用的虛擬機器實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無

Claims (21)

  1. 一種裝置,包括: 一監測資料儲存器,用來儲存指示記憶體位址空間中要被監測改變的複數個區域的監測資料,其中該監測資料儲存器能夠儲存指示該記憶體位址空間的至少兩個非鄰接區域的監測資料; 處理電路系統,回應於一更新監測指令而更新由該監測資料儲存器所儲存的該監測資料;及 監測電路系統,用來監測對一記憶體系統所進行的存取,及用來回應於偵測到與由該監測資料所指示的所述複數個區域中的至少一者相關聯的資料已改變,而向該處理電路系統提供一通知。
  2. 如請求項1所述的裝置,其中回應於一等待事件指令,該處理電路系統被配置為進入一節能狀態;及 該處理電路系統被配置為回應於來自於該監測電路系統的該通知而離開該節能狀態。
  3. 如請求項1及2中的任一者所述的裝置,其中該更新監測指令在更新該監測資料的該步驟之後識別複數個位址,該複數個位址識別要被監測改變的區域。
  4. 如請求項3所述的裝置,其中該更新監測指令指定一基礎位址及一位元映像,該位元映像識別所述複數個位址相對於所述基礎位址的偏移。
  5. 如請求項1所述的裝置,其中該更新監測指令識別至少一個位址,該至少一個位址識別要添加到由該監測資料所指示的一組區域的至少一個新區域。
  6. 如請求項1所述的裝置,其中回應於一回報監測結果指令,該處理電路系統被配置為請求該監測電路系統回傳所述資料已改變的所述至少一個區域的一指示。
  7. 如請求項1所述的裝置,其中該處理電路系統被配置為回應於以下情況中的一者而清除該監測資料: 由該處理電路系統執行一清除監測指令;及 一異常事件發生。
  8. 如請求項1所述的裝置,包括一互連器,該互連器用來基於複數個主設備或高速緩存記憶體與該互連器之間所交換的一致性協定交易來管理該等主設備或高速緩存記憶體之間的一致性; 其中該監測電路系統被配置為基於該一致性協定交易來偵測與由該監測資料所指示的所述複數個區域中的至少一者相關聯的資料是否已改變。
  9. 如請求項8所述的裝置,其中各個一致性協定交易指定具有一預定高速緩存列大小的一資料區塊的一位址;及 該裝置包括一配置暫存器,該配置暫存器指定指示所述預定高速緩存列大小的一值。
  10. 如請求項1所述的裝置,其中該監測資料儲存器及該監測電路系統中的至少一者包括一逆向轉譯機制,該逆向轉譯機制用來將針對對於該記憶系統所進行的受監測存取所指定的實體位址轉譯成由該處理電路系統所使用的虛擬位址。
  11. 如請求項1所述的裝置,其中該監測資料儲存器包括一監測資料高速緩存記憶體,該監測資料高速緩存記憶體包括複數個儲存格,各個儲存格界定該位址空間中要被監測改變的一相對應區域;及 該裝置包括一互連器,該互連器用來依據一一致性協定針對包括所述監測資料高速緩存記憶體的複數個高速緩存記憶體管理一致性。
  12. 如請求項11所述的裝置,其中回應於該處理電路系統執行該更新監測指令,該監測資料高速緩存記憶體被配置為分配處於該一致性協定的一共享一致性狀態下的至少一個新的儲存格; 該互連器被配置為回應於偵測到對該相對應區域所進行的一寫入行為,而觸發該監測資料高速緩存記憶體的一給定儲存格從該共享一致性狀態轉變成一無效一致性狀態的一轉變行為;及 該監測電路系統被配置為回應於偵測到所述給定儲存格從該共享一致性狀態轉變成該無效一致性狀態的該轉變行為,而向該處理電路系統提供該通知。
  13. 如請求項12所述的裝置,其中該監測資料高速緩存記憶體被配置為在從該共享一致性狀態轉變成該無效一致性狀態的該轉變行為之後保留該給定儲存格。
  14. 如請求項12所述的裝置,其中該監測電路系統被配置為在已將一區域指示提供給該處理電路系統之後,回應於偵測到由該處理電路系統對該相對應區域所進行的一讀取或寫入存取,而將一儲存格從該無效一致性狀態切換成該共享一致性狀態,該區域指示將相對應的區域識別為被偵測到一改變的一區域。
  15. 如請求項11所述的裝置,其中該監測資料高速緩存記憶體的各個儲存格指定回報狀態資訊,該回報狀態資訊指示該儲存格是否處於以下狀態中的一者: 一無效回報狀態,指示該監測電路系統仍要偵測與該相對應區域的相關聯資料的一改變; 一已改變狀態,指示該監測電路系統已偵測到與該相對應區域相關聯的資料的一改變,但仍要將一區域指示提供給該處理電路系統,該區域指示將該相對應的區域識別為偵測到一改變的一區域;及 一已回報狀態,指示該處理電路系統仍要在被提供了所述的區域指示之後存取該相對應的區域。
  16. 如請求項15所述的裝置,其中回應於由該處理電路系統執行一回報監測結果指令,該監測電路系統被配置為向該處理電路系統回傳相對應於至少一個區域的至少一個區域指示,該監測資料高速緩存記憶體的該相對應儲存格針對該至少一個區域而處於該已改變狀態下,且該監測電路系統被配置為針對所述至少一個區域中的各者觸發該相對應的儲存格從該已改變狀態轉變成該已回報狀態的一轉變行為。
  17. 如請求項15所述的裝置,其中回應於由該處理電路系統對該監測資料高速緩存記憶體的該相對應儲存格所針對而處於該已回報狀態下的一給定區域所進行的一讀取或寫入存取,該監測電路系統被配置為觸發該監測資料高速緩存記憶體的該相對應儲存格從該回報狀態轉變成該無效回報狀態的一轉變行為。
  18. 如請求項1所述的裝置,其中該監測資料儲存器被配置為儲存一資料結構,該資料結構提供要監測的該複數個區域的一過濾器表示; 其中該監測電路系統被配置為以資料已改變的一區域的一位址詢問該過濾器表示,及在該詢問行為偵測到與該過濾器表示匹配的一匹配行為時向該處理電路系統提供該通知。
  19. 如請求項18所述的裝置,包括一位址佇列,該位址佇列用來儲存被該過濾器的該詢問行為偵測到一匹配的一或更多個位址的一指示。
  20. 一種方法,包括以下步驟: 回應於一更新監測指令,更新指示一記憶體位址空間中要被監測改變的複數個區域的監測資料,該複數個區域包括該記憶體位址空間的至少兩個非鄰接區域; 監測對一記憶體系統所進行的存取;及 回應於偵測到與由該監測資料所指示的所述複數個區域中的至少一者相關聯的資料已改變,而向該處理電路系統提供一通知。
  21. 一種儲存媒體,儲存一虛擬機器電腦程式,該虛擬機器電腦程式用來在由一資料處理裝置所執行時依據如請求項1到19中的任一者所述的裝置提供一指令執行環境。
TW107104870A 2017-03-16 2018-02-12 記憶體存取監測 TWI764985B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/460,358 2017-03-16
US15/460,358 US10649684B2 (en) 2017-03-16 2017-03-16 Memory access monitoring

Publications (2)

Publication Number Publication Date
TW201835777A true TW201835777A (zh) 2018-10-01
TWI764985B TWI764985B (zh) 2022-05-21

Family

ID=61157227

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107104870A TWI764985B (zh) 2017-03-16 2018-02-12 記憶體存取監測

Country Status (6)

Country Link
US (1) US10649684B2 (zh)
EP (1) EP3596601A1 (zh)
KR (1) KR102536449B1 (zh)
CN (1) CN110402433B (zh)
TW (1) TWI764985B (zh)
WO (1) WO2018167455A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795820B2 (en) * 2017-02-08 2020-10-06 Arm Limited Read transaction tracker lifetimes in a coherent interconnect system
NO344681B1 (en) * 2017-09-05 2020-03-02 Numascale As Coherent Node Controller
US10366027B2 (en) * 2017-11-29 2019-07-30 Advanced Micro Devices, Inc. I/O writes with cache steering
GB2571539B (en) 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
GB2571536B (en) 2018-02-28 2020-03-11 Imagination Tech Ltd Coherency manager
GB2571538B (en) 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
KR102183648B1 (ko) * 2018-11-30 2020-11-26 서울대학교산학협력단 중첩 페이징 없이 커널을 보호하는 방법 및 그 장치
US11055221B2 (en) * 2019-03-22 2021-07-06 Samsung Electronics Co., Ltd. Speculative DRAM read, in parallel with cache level search, leveraging interconnect directory
WO2021167659A1 (en) * 2019-11-14 2021-08-26 Trideum Corporation Systems and methods of monitoring and controlling remote assets
GB2597938A (en) * 2020-08-10 2022-02-16 Advanced Risc Mach Ltd Monitoring memory locations to identify whether data stored at the memory locations has been modified
KR20220055771A (ko) * 2020-10-27 2022-05-04 삼성전자주식회사 전자 장치, 차량용 장치 및 데이터 센터
EP4276638A4 (en) * 2021-02-09 2024-02-21 Huawei Tech Co Ltd SYSTEM AND METHOD FOR ACCESSING A REMOTE RESOURCE
CN113672499A (zh) * 2021-07-20 2021-11-19 平头哥(杭州)半导体有限公司 追踪可执行程序中的目标变量的方法和系统

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765195A (en) * 1995-12-08 1998-06-09 Ncr Corporation Method for distributing interprocessor interrupt requests via cache memory coherency mechanisms
GB2393270B (en) * 2002-09-19 2005-07-27 Advanced Risc Mach Ltd Executing variable length instructions stored within a plurality of discrete memory address regions
CN100382043C (zh) * 2004-09-20 2008-04-16 华为技术有限公司 一种内存监控的装置及方法
US8019947B2 (en) 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
JP4890048B2 (ja) * 2006-02-24 2012-03-07 株式会社日立製作所 記憶制御装置及び記憶制御装置を用いたデータマイグレーション方法
US8527709B2 (en) * 2007-07-20 2013-09-03 Intel Corporation Technique for preserving cached information during a low power mode
US8468531B2 (en) 2010-05-26 2013-06-18 International Business Machines Corporation Method and apparatus for efficient inter-thread synchronization for helper threads
US8812786B2 (en) * 2011-10-18 2014-08-19 Advanced Micro Devices, Inc. Dual-granularity state tracking for directory-based cache coherence
US9268683B1 (en) * 2012-05-14 2016-02-23 Kandou Labs, S.A. Storage method and apparatus for random access memory using codeword storage
US20140129784A1 (en) 2012-11-07 2014-05-08 Mellanox Technologies, Ltd. Methods and systems for polling memory outside a processor thread
US9311243B2 (en) * 2012-11-30 2016-04-12 Intel Corporation Emulated message signaled interrupts in multiprocessor systems
US8938587B2 (en) * 2013-01-11 2015-01-20 International Business Machines Corporation Data recovery for coherent attached processor proxy
US20140250442A1 (en) 2013-03-01 2014-09-04 Advanced Micro Devices, Inc. Conditional Notification Mechanism
US9411663B2 (en) 2013-03-01 2016-08-09 Advanced Micro Devices, Inc. Conditional notification mechanism
US10705961B2 (en) * 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address
US9361233B2 (en) * 2013-12-20 2016-06-07 Intel Corporation Method and apparatus for shared line unified cache
EP3090347A1 (en) * 2014-01-03 2016-11-09 Stefanos Kaxiras System and method for event monitoring in cache coherence protocols without explicit invalidations
US9720837B2 (en) * 2014-06-27 2017-08-01 International Business Machines Corporation Allowing non-cacheable loads within a transaction
US20170286301A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga

Also Published As

Publication number Publication date
US20180267741A1 (en) 2018-09-20
CN110402433B (zh) 2024-04-12
KR20190126849A (ko) 2019-11-12
CN110402433A (zh) 2019-11-01
WO2018167455A1 (en) 2018-09-20
KR102536449B1 (ko) 2023-05-25
EP3596601A1 (en) 2020-01-22
US10649684B2 (en) 2020-05-12
TWI764985B (zh) 2022-05-21

Similar Documents

Publication Publication Date Title
TWI764985B (zh) 記憶體存取監測
US7925840B2 (en) Data processing apparatus and method for managing snoop operations
US8838907B2 (en) Notification protocol based endpoint caching of host memory
JP6022849B2 (ja) 共有キャッシュメモリ制御
US20070156971A1 (en) Monitor implementation in a multicore processor with inclusive LLC
US8539164B2 (en) Cache coherency within multiprocessor computer system
EP3588297A1 (en) System, apparatus and method for barrier synchronization in a multi-threaded processor
CN110865968A (zh) 多核处理装置及其内核之间数据传输方法
US10613999B2 (en) Device, system and method to access a shared memory with field-programmable gate array circuitry without first storing data to computer node
US6711651B1 (en) Method and apparatus for history-based movement of shared-data in coherent cache memories of a multiprocessor system using push prefetching
US6195731B1 (en) Instrumentation device for a machine with non-uniform memory access
WO2017117319A1 (en) System, method, and apparatuses for remote monitoring
US8769211B2 (en) Monitoring thread synchronization in a distributed cache
US7581042B2 (en) I/O hub resident cache line monitor and device register update
CN115858420B (zh) 用于支持多处理器架构的系统缓存架构和芯片
US20240086195A1 (en) Monitor exclusive instruction
JP2006202285A (ja) レジスタを同期させる方法
Dash et al. Energy-efficient cache coherence for embedded multi-processor systems through application-driven snoop filtering
US20230280904A1 (en) Monitoring memory locations to identify whether data stored at the memory locations has been modified
JP6272011B2 (ja) キャッシュ装置、キャッシュ装置を備えるコンピュータ、および、キャッシュ制御方法
US20240037038A1 (en) Coherency Domain Cacheline State Tracking
CN116501456A (zh) 用于利用一致性接口的队列管理的系统、方法和设备
Esteve García Analysis of opportunities for cache coherence in heterogeneous embedded systems
JPH09198310A (ja) マルチプロセッサシステム