TWI499908B - 用以維持共享記憶體編程中之釋出一致性的方法及系統 - Google Patents

用以維持共享記憶體編程中之釋出一致性的方法及系統 Download PDF

Info

Publication number
TWI499908B
TWI499908B TW102113793A TW102113793A TWI499908B TW I499908 B TWI499908 B TW I499908B TW 102113793 A TW102113793 A TW 102113793A TW 102113793 A TW102113793 A TW 102113793A TW I499908 B TWI499908 B TW I499908B
Authority
TW
Taiwan
Prior art keywords
processing unit
memory
computing device
page
shared
Prior art date
Application number
TW102113793A
Other languages
English (en)
Other versions
TW201411344A (zh
Inventor
Ravindra Babu Ganapathi
Hu Chen
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201411344A publication Critical patent/TW201411344A/zh
Application granted granted Critical
Publication of TWI499908B publication Critical patent/TWI499908B/zh

Links

Classifications

    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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/0614Improving the reliability of 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

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

Description

用以維持共享記憶體編程中之釋出一致性的方法及系統
本發明係有關用以維持共享記憶體編程中之釋出一致性的方法及系統。
共享記憶體係指在多處理器及/或多核心計算裝置或系統中可由多於一個處理器或處理器核心存取的記憶體。當處理器或核心需要對記憶體快速存取,儲存於共享記憶體中的資料可轉移至快取記憶體。當一處理器或核心的快取記憶體以可能需要被其他處理器或核心使用的資訊而更新時,其他處理器或核心需要知道更新,以避免數個處理器或核心處理不同調的資料。
在離散式共享記憶體系統中,可使用軟體或韌體編程協定(其可稱作「一致性模型」)以確保記憶體係一致的且記憶體操作的結果對所有處理器及/或核心為可預測的。一般來說,一致性模型係定義記憶體更新之順序及能見度的編程規則。釋出一致性模型使用兩個同步操作: 「釋出」及「取得」。在釋出一致性模型中,首先需要取得物件,並接著在稍後釋出。在取得物件之後且在將其釋出之前,處理器或核心可使用物件施行一或多個寫入操作,其中資料係寫入至本地記憶體(對取得處理器或核心為本地)。若在第一處理器/核心釋出寫入操作的物件之後以及在其他處理器/核心將其取得之前,一處理器或核心的寫入操作對其他處理器或核心來說為可見的,則可認為達成了釋出一致性。
施行釋出一致性的兩類型協定為「消極(lazy)」協定及「積極(eager)」協定。在這些協定中,所有一致的動作係於釋出操作上施行。亦即,其他處理器/核心無法看見資料寫入直到已經施行了釋出操作。在消極協定中,處理器或核心並不請求虛擬記憶體之頁,直到頁被存取;亦即,直到發生頁錯誤。在積極協定中,當計算一被卸載,便轉移虛擬記憶體的所有可存取頁(例如資料),亦即在取得操作上。
100‧‧‧計算裝置
110‧‧‧中央處理單元
112‧‧‧輸入/輸出子系統
114‧‧‧特殊處理單元
116‧‧‧特殊處理單元
120‧‧‧核心
122‧‧‧快取記憶體
124‧‧‧記憶體
126‧‧‧作業系統
128‧‧‧釋出一致性應用程式碼
130‧‧‧預提取器邏輯
132‧‧‧共享記憶體位址表格
134‧‧‧共享記憶體
140‧‧‧核心
142‧‧‧快取記憶體
144‧‧‧記憶體
146‧‧‧作業系統
148‧‧‧釋出一致性應用程式碼
150‧‧‧預提取器邏輯
152‧‧‧共享記憶體位址表格
154‧‧‧共享記憶體
156‧‧‧直接記憶體存取子系統
160‧‧‧箭頭
162‧‧‧箭頭
164‧‧‧箭頭
210‧‧‧箭頭
212‧‧‧箭頭
214‧‧‧箭頭
216‧‧‧箭頭
218‧‧‧箭頭
220‧‧‧箭頭
300‧‧‧方法
本文所述之本發明係以附圖中之例示及非限制方式加以顯示。為了描述的簡單及明瞭,於圖中所示之元件並不必然依規格繪出。例如,部份元件的尺寸為了清楚起見可能相對其他元件放大。再者,當適當考量時,參考標號係於各圖式中重複,以表示對應或類似元件。
圖1為計算裝置之至少一具體實施例的簡化方塊圖。
圖2為釋出一致性協定之至少一具體實施例的簡化模組圖。
圖3為用以維持共享記憶體編程中之釋出一致性之方法之至少一具體實施例的簡化流程圖。
雖然本案的概念係容許各種修改及替代形式,但其特定例示具體實施例係以圖中之例示方式加以顯示並將於本文中詳細說明。然而,應了解的是,沒有意圖將本案的概念限制於特定所揭示形式,相反地,欲涵蓋落於隨附申請專利範圍所定義的本發明精神與範疇內的所有修改、等效及替換。
以下說明中,各種特定細節(例如邏輯實施法、運算碼、指明運算元的手段、資源分割/共享/複製實施、系統元件的類型及相互關係、及邏輯分割/積集選擇)將被提出以提供對本案揭示的更完全了解。然而,熟此技藝者將了解到,本案之具體實施例可以在沒有這些特定細節下實施。在其他實例中,控制結構、閘級電路、及全軟體指令順序並未被詳細顯示,以不混淆本發明。熟此技藝者以所包含之發明說明,在無須過度實驗下,將能實施適當功能。
在說明書中之指明「一具體實施例」、「具體實施例」、「範例具體實施例」等表示於此所述之具體實施例可以包含一特定特性、結構、或特徵,但每一具體實施例 可不必然包含該特定特性、結構、或特徵。再者,此等用語可能不必然指相同具體實施例。再者,當有關於一具體實施例所描述一特定特性、結構或特徵時,則主張在熟習於本技藝者之知識內可配合其他不管已否詳述之其他具體實施例作用此特性、結構或特徵。
本發明之具體實施例可以由硬體、韌體、軟體或其任意組合加以實現。於電腦系統實施之本發明之具體實施例可以包含一或更多匯流排為主的互連於元件之間及/或一或更多點對點互連於元件之間。本發明之具體實施例也可以實施為由暫態或非暫態之機器可讀取媒體所執行或儲存於其中的指令,其可由一或更多處理器所讀取及執行。機器可讀取媒體可具體化為用以由機器(例如計算裝置)可讀取之形式儲存或傳輸資訊的任何裝置、機制或實體結構。舉例來說,機器可讀取媒體可具體化為唯讀記憶體(ROM)、隨機存取記憶體(RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置、迷你或微SD卡、記憶條、電子信號及其他。
在圖式中,示意元件(例如表示元件、模組、指令區塊及資料元件)的特定安排及順序可顯示以便於描述。然而,熟此技藝者應理解到,圖式中示意元件的特定順序及安排並不意欲暗示處理的特定順序或序列、或程序的分割是必需的。此外,圖式中包含示意元件並不意欲暗示此類元件在所有具體實施例中是必需的、或此類元件所表示的特徵在某些具體實施例中可能不包含或與其他元件結合。
一般來說,用以表示指令區塊的示意元件可使用機器可讀指令的適當形式實施,例如軟體或韌體應用程式、程式、函數、模組、常式、處理、程序、外掛程式、小型應用程式、界面工具集、程式碼區段及/或其他,且每一此指令可使用任何適當的編程語言、函式庫、應用編程介面(API)、及/或其他軟體開發工具而施行。舉例來說,某些具體實施例可使用C、C++、及/或其他編程語言而施行。
類似地,用以表示資料或資訊的示意元件可使用任何合適的電子安排或結構而施行,例如暫存器、資料儲存、表格、紀錄、陣列、索引、雜湊、映射、樹狀圖、列表、圖表、檔案(任何檔案種類)、文件夾、目錄、資料庫、及/或其他。
此外,在圖式中,當使用連接元件(例如實線或虛線或箭頭)來描述二或更多其他示意元件之間的連接、關係或聯合時,缺乏任何此類連接元件並不意指無連接、關係或聯合可存在。換言之,元件之間的某些連結、關係或聯合可能未顯示於圖式中,以不模糊本發明的揭露。再者,為便於描述,單一連接元件可用以表示元件間的多個連接、關係或聯合。舉例來說,當連接元件表示信號、資料或指令的通訊,熟此技藝者應理解到此類元件可表示可能需要的一或多個信號路徑(例如匯流排)以實現通訊。
現在參考圖1,根據共享記憶體編程模型,例示性的計算裝置100包含中央處理單元(CPU)110及一或多個 特殊處理單元(SPU)114、116,其係經由輸入/輸出(I/O)子系統112而耦合至中央處理單元110。共享記憶體編程模型的某些範例係揭露於Chen等人在2008年12月30日所申請之美國專利公開案2010/0118041。根據例示性的共享記憶體模型,中央處理單元110及一或多個特殊處理單元114、116之每一者係組態具有虛擬記憶體,其映射至記憶體124、144的實體位置。虛擬記憶體包括私用及共享記憶體空間兩者。處理單元110、114、116之每一者的私用虛擬記憶體空間無法由其他處理單元110、114、116所存取。然而,處理單元110、114、116之每一者的共享虛擬記憶體空間(例如共享記憶體134、154)可由一或多個其他處理單元110、114、116所存取,使得當對應的處理單元110、114、116需要時,在共享記憶體134、154中的資料可在運行時間於快取記憶體122、142之間移動。釋出一致性應用程式碼128、148係具體化於處理單元110、114、116的記憶體124、144中,且可由處理器及/或核心120、140分別執行,以維持共享記憶體134、154中資料的釋出一致性。釋出一致性應用程式碼128、148的例示性範例係描述於前述的美國專利申請案公開號2010/0118041。
如以下將進一步解釋,具體化於處理單元110、114、116之記憶體124、144中的預提取器邏輯130、150係藉由允許共享記憶體134、154中之資料的多於一個(但少於全部)頁被隨選地請求並轉移到快取記憶體 122、142(例如在一頁錯誤期間)而增強釋出一致性應用程式碼128、148。預提取器邏輯130、150亦允許在一頁錯誤期間被請求及轉移之頁的數量(或資料量)針對特定應用或需求而客製化。舉例來說,頁的數目或數量可預先判定或在運行時間判定。在某些具體實施例中,在頁錯誤過程中所請求及轉移的頁數目可參照後續電腦操作之執行實際所需的頁或頁列表而判定。取代或補充地,在某些具體實施例中,在頁錯誤過程中所請求及轉移的頁數目可基於例如I/O子系統112的一或多個特徵(例如頻寬)。因此,預提取器邏輯130、150可藉由允許多個頁回應單一頁錯誤而被轉移以降低頁錯誤花費。預提取器邏輯130、150也藉由允許隨選之較少但尺寸較大的資料轉移(例如在頁錯誤期間)而改善效能。此外,由於具有預提取器邏輯130、150,資料轉移係隨選地發生,預提取器邏輯130、150消除了向前轉移所有頁(如在積極協定中)的需求,並降低了有關在頁的大區塊內設置一所需頁的花費量。底下的表格1包含從在異質計算裝置上之選擇計算程序執行中利用預提取器邏輯130、150的初步實驗所產生的測試資料,其中中央處理單元係經由PCI-Express子系統而連接至離散特殊處理單元,其係相較於上述之傳統的消極及積極協定。
計算裝置100可具體化於或可為任何種類的計算裝置,例如桌上型電腦系統、膝上型電腦、平版電腦、筆記型電腦、隨身型易網機、手持或行動計算裝置、伺服器、企業電腦系統、電腦網路、或其他電子裝置(例如「智慧型」裝置,像是智慧型電視及設備),其係取決特定應用。在某些具體實施例中,計算裝置100可使用多積體核心(MIC)架構而具體化。例示性的中央處理單元110係具體化至少一處理器及/或處理器核心或單一核心的邏輯區段120(其在本文中可簡稱為「節點」,以便於描述)。一或多個節點120可組態以處理多線程電腦程式。節點120包含或可通訊地耦合至一或多個快取記憶體122。快取記憶體122可用以在釋出一致性應用程式128、預提取器CPU邏輯130、及/或計算裝置100之其他組件的操作過程中暫時地儲存資料及/或指令。
除了快取記憶體122,處理器及/或核心120包含、或另外通訊地耦合至記憶體124。記憶體124的部份可具體化為任何類型的合適記憶體裝置,例如動態隨機存取記憶體裝置(DRAM)、同步動態隨機存取記憶體 (SDRAM)、雙資料率動態隨機存取記憶體裝置(DDR SDRAM)及/或其他揮發記憶體裝置。
中央處理單元110也通訊地耦合至I/O子系統112。雖未特別顯示,例示性I/O子系統112可具體化為記憶體控制器(例如記憶體控制器集線器(MCH)或北橋)、輸入/輸出控制器(例如輸入/輸出控制器集線器(ICH)或南橋)、及韌體裝置。當然,在其他具體實施例中,可使用具有其他組態的I/O子系統。舉例來說,在某些具體實施例中,I/O子系統112可形成系統晶片(SoC)的部份且可與處理器110及計算裝置100的其他組件一起合併於單一積體電路晶片上。因此,將理解到,I/O子系統112的每一組件在某些具體實施例中可設置於一共同積體電路晶片上。此外,在某些具體實施例中,處理單元110、I/O子系統112、及/或特殊處理單元114、116的一或多個可設置於一共同積體電路晶片上。
例示性特殊處理單元114、116係具體化為至少一處理器及/或處理器核心或單一核心的邏輯區段140(其在本文中可簡稱為「節點」,以便於描述)。在某些具體實施例中,一或多個特殊處理單元114、116具有與中央處理單元不同的指令集架構(ISA)(例如計算裝置100包含異質平台)。一或多個節點140可組態以處理多線程電腦程式。節點140包含或可通訊地耦合至一或多個快取記憶體142。快取記憶體142可用以在釋出一致性應用程式148、預提取器SPU邏輯150、及/或計算裝置100之其他 組件的操作過程中暫時地儲存資料及/或指令。
除了快取記憶體142,節點140包含、或另外通訊地耦合至記憶體144。記憶體144的部份可具體化為任何類型的合適記憶體裝置,例如動態隨機存取記憶體裝置(DRAM)、同步動態隨機存取記憶體(SDRAM)、雙資料率動態隨機存取記憶體裝置(DDR SDRAM)及/或其他揮發記憶體裝置。
一或多個特殊處理單元114、116可直接地(如在中央處理單元110與積體特殊處理單元晶片組配對的具體實施例中,像是積體圖形晶片組)或透過介面非直接地(如在特殊處理單元114、116為離散硬體組件的具體實施例中,像是圖形處理單元或其他加速度器)通訊耦合至CPU 110。虛線箭頭160、162、164係用於圖1中以指示特殊處理單元114、116及中央處理單元110之間的連接可為直接(若特殊處理單元114、116與中央處理單元110整合)或經由I/O子系統112而為間接(若特殊處理單元114、116為離散裝置)。
在一或多個特殊處理單元114、116為離散裝置的具體實施例中,例示性I/O子系統112包含直接記憶體存取(DMA)子系統156,其組態以幫助共享記憶體134、154及快取記憶體122、142之間的資料轉移。例示性DMA子系統156係組態使得特殊處理單元114、116可獨立地存取處理器及/或核心120之共享記憶體134,且使得中央處理單元110可獨立地存取處理器及/或核心140之共享記 憶體154。在某些具體實施例中,DMA子系統156係具體化為DMA控制器或DMA「引擎」,例如週邊組件互連(PCI)裝置、週邊組件互連快速(PCI-Experss)裝置、I/O加速度技術(I/OAT)裝置及/或其他。每一、任一、任何之特殊處理單元114、116可具體化為例如圖形卡、視訊卡、浮點加速度計、數位信號處理器、共同處理器、組態供通用計算的圖形處理單元(如GPGPU)、及/或其他。
雖未特定顯示,應理解到,I/O子系統112可通訊地耦合至一或多個儲存裝置,其可具體化為用以儲存資料及/或指令的任何合適裝置,例如碟片儲存(如硬碟)、記憶卡、記憶條、及/或其他。在某些具體實施中,一或多個作業系統(O/S)126、146、釋出一致性應用程式128、148、預提取器邏輯130、150及/或共享記憶體位址表格132、152(描述於下)可具體化於儲存裝置中。如圖1所示,在運行時間,所有或部份的例示性作業系統126、146、釋出一致性應用程式128、148、預提取器邏輯130、150及/或共享記憶體位址表格132、152可從儲存裝置載入至記憶體124、144及/或快取記憶體122、142供更為快速的處理或其他理由。
應理解到,計算裝置100可包含為了清楚描述而未顯示於圖1中的其他組件、次組件、及裝置(例如週邊裝置、網路介面、及/或其他)。一般而言,計算裝置100的組件可藉由一或多個信號路徑而如圖1所示通訊地耦 合,其係以雙向箭頭示意地表示。此類信號路徑可具體化為能夠幫助個別裝置間之通訊的任何類型的有線或無線信號路徑。舉例來說,信號路徑可具體化為任何數量的線路、印刷電路板軌跡、介層、匯流排、點對點互連、中介裝置、及/或類似者。
在例示性具體實施例中,共享虛擬記憶體134、154係劃分為鄰近虛擬記憶體位址的區塊(例如頁)。在例示性具體實施例中,每一頁的尺寸(例如頁粒度)可根據特定具體實施例的需求而變化,但可在約四千位元組或更多的範圍內。現在參考圖2,預提取器SPU邏輯150與預提取器CPU邏輯130界接,以維持共享虛擬記憶體134、154及快取記憶體122、142中之頁的釋出一致性。雙向箭頭210、212、214、216、218、220表示共享虛擬記憶體134、154及快取記憶體122、142之間頁的轉移。熟此技藝者應理解到,本文中所使用之在計算裝置100之組件之間資料傳播之上下文中的術語「轉移」係意圖涵蓋實體及/或邏輯的轉移。舉例來說,在某些具體實施例中,「邏輯的」轉移可包括僅使一請求組件得知所請求頁的記憶體位址,而無明確地將資料從一位置移動到另一位置。
當中央處理單元110執行電腦程式(如軟體應用程式)卸載計算操作(例如資料密集計算)至特殊處理單元114、116的其中一者,當計算操作一卸載,接收卸載請求的特殊處理單元114、116就初始化包含從共享虛擬記憶體134、154到其快取記憶體142之操作所需資料之頁 的轉移。如參考圖3所做的更詳細說明,預提取器SPU邏輯150判定在共享記憶體134、154中鄰近所請求頁之頁的範圍(例如虛擬記憶體的區塊),並與預提取器CPU邏輯130界接以完成這些頁從共享記憶體134、154到快取記憶體142的轉移。
現在參考圖3,其顯示用以從共享記憶體134、154「預提取」虛擬記憶體之頁範圍的例示性方法300。方法300係具體化為電腦化邏輯及/或指令(如軟體、韌體及/或硬體),其某些部份由中央處理單元110所執行,且其他部份由特殊處理單元114、116所執行。根據方法300,方塊312、318、及322所表示的任務係由中央處理單元110所施行,且方塊310、316、320、及324所表示的任務係由特殊處理單元114、116所施行。在方法300的執行過程中,中央處理單元110與特殊處理單元114、116之間資料及指令的通訊係由I/O子系統112及/或DMA子系統156所協助,如前文所述。
在區塊310中,特殊處理單元114、116將共享記憶體134、154中的所有頁標記為不可存取。在例示性具體實施例中,這可藉由更新在特殊處理單元之本地共享記憶體位址表格152中之頁之虛擬記憶體位址的狀態而完成(例如藉由設定一旗標或位元為關聯於資料不可存取性的特定值)。將頁標記為不可存取係迫使一頁錯誤回應由特殊處理單元114、116所做的後續請求而存取一或多個所標記的頁(例如當計算操作係卸載至特殊處理單元114、 116時)。
在區塊312中,在執行電腦程式或軟體應用程式的過程中,舉例來說,中央處理單元110初始化需要存取在共享記憶體134、154中之頁之計算操作(例如計算)的卸載至特殊處理單元114、116。在某些具體實施例中,卸載指令可經由例如應用編程介面(API)或其他電腦編程機制發佈至特殊處理單元114、116。在方塊314,當共享記憶體134、154的頁已標記為不可存取,試圖存取請求頁將落入頁錯誤。方塊314係以虛線描述,以指示其表示一事件(頁錯誤)的發生且非方法300的編程邏輯或指令。
回應於頁錯誤,特殊處理單元114、116判定在共享記憶體134、154中之虛擬記憶體位址的範圍,其包含並鄰近所請求的頁。在某些具體實施例中,虛擬記憶體位址的範圍可預先判定。取代或補充地,虛擬記憶體位址的範圍可在運行時間判定或更新。鄰近虛擬記憶體位址或虛擬記憶體之區塊的範圍可包含低於所請求頁之位址的某些位址及/或高於所請求頁之位址的某些位址。在某些具體實施例中,位址的範圍係判定使得所請求頁約在範圍的中間或使得位址的範圍相對於所請求頁係對稱地安排。在某些具體實施例中,位址的範圍可對應頁的一列表,例如由中央處理單元110所維持之「已使用(dirty)」頁(例如使用中的頁)的一列表。在某些具體實施例中,位址的範圍可根據針對特殊處理單元114、116、共享記憶體134、 154、DMA子系統156、及/或其他組件或因素的一或多個設計或實施需求而客製化或最佳化。資料集的尺寸(位址的範圍)可基於計算裝置100、特殊處理單元114、116、共享記憶體134、154、DMA子系統156、及/或其他組件或因素之特定設計或實施的需求或態樣而組態。在某些具體實施例中,預提取資料集的尺寸(位址的範圍)可在約512千位元組到約百萬位元組的範圍中。一旦設定預提取範圍的參數,特殊處理單元114、116傳送請求在預提取範圍中之位址的一預提取訊息(或關聯於在預提取範圍中之位址的資料)至中央處理單元110。在某些具體實施例中,預提取訊息可包括關聯於第一或起始虛擬記憶體位址的資料以及關聯於第二或結束虛擬記憶體位址的資料。在其他具體實施例中,預提取訊息可包含關聯於起始或結束虛擬記憶體位址以及範圍的理想長度或尺寸(例如一百萬位元組)的資料。
在區塊318中,中央處理單元110處理預提取訊息並更新共享記憶體主位址表格132(例如藉由設定一旗標或位元為特定值)以向中央處理單元110及所有的特殊處理單元114、116指示關聯於預提取範圍的資料係由請求特殊處理單元114、116所獲得。
在區塊320中,請求特殊處理單元114、116在頁錯誤過程中初始化從共享記憶體134、154到其本地快取記憶體142之在預提取範圍中之頁的轉移。在請求特殊處理單元114、116為離散組件的具體實施例中,這可包括經 由DMA子系統156初始化直接記憶體存取交易。在其他具體實施例中,例如當請求特殊處理單元114、116為積體組件時,這可僅包含經由I/O子系統112初始化直接轉移。回應於在方塊320從請求特殊處理單元114、116所接收之指令,在方塊322中,中央處理單元110執行資料轉移(例如DMA交易或直接轉移)。一旦完成轉移,請求特殊處理單元114、116將轉移的頁標記為可用於在特殊處理單元114、116的寫入操作(例如藉由在本地共享記憶體位址表格152中設定一旗標或位元為特定值),如此關聯於O/S126、146、應用程式128、148、或在中央處理單元110及/或特殊處理單元114、116上執行的一或多個其他應用程式或線程的後續指令或邏輯的執行可繼續。
範例
本文所描述之裝置、系統及方法的描述性範例係提出如下。裝置、系統及方法的具體實施例可包含下述範例的任一或更多、及任何組合。
在一範例中,至少一計算裝置可組態以維持釋出一致性。至少一計算裝置可包含一第一處理單元、耦合至第一處理單元的至少一第一記憶體裝置、一第二處理單元、以及耦合至第二處理單元的至少一第二記憶體裝置,其中第一記憶體裝置及第二記憶體裝置之其中至少一者係儲存有複數個指令,當複數個指令由第一處理單元及第二處理單 元執行時係造成第二處理單元組態計算裝置的共享記憶體,使得回應於一頁錯誤,第二處理單元係:判定在共享記憶體中之記憶體位址的一數目係大於一並小於在共享記憶體中的所有記憶體位址;傳送一請求至第一處理單元以將關聯於所判定之記憶體位址之數目的資料轉移至第二處理單元;以及將轉移資料標記為可用於至少一寫入操作。
在一範例中,至少一計算裝置可組態以藉由在請求對共享記憶體的存取之前將共享記憶體標記為非可存取而初始化頁錯誤。在一範例中,至少一計算裝置係組態以藉由更新儲存於第二處理單元之一虛擬記憶體位址表格而將共享記憶體標記為非可存取。在一範例中,記憶體位址可包含一固定長度、連續範圍的虛擬記憶體位址。在一範例中,第一處理單元可包含一中央處理單元,且第二處理單元可包含一專用處理單元。在一範例中,第二處理單元可包含一硬體加速器。在一範例中,第二處理單元可包含一圖形卡、視訊卡、浮點加速器、數位信號處理器、共同處理器、及組態供通用計算的圖形處理單元之其中至少一者。在一範例中,至少一計算裝置可包含一多積體核心架構。在一範例中,第一處理單元及第二處理單元可具有不同的指令集架構。在一範例中,至少一計算裝置可包含一直接記憶體存取子系統,其通訊地耦合第一處理單元及第二處理單元。在一範例中,直接記憶體存取子系統可包含一週邊組件互連裝置及一週邊組件互連快速裝置之其中至少一者。在一範例中,請求之所判定之記憶體位址的數目 可對應具有範圍在約512千位元組至約1百萬位元組之一尺寸的一記憶體區塊。在一範例中,請求之記憶體位址的數目可對應一記憶體區塊且至少一計算裝置係組態以在運行時間判定記憶體區塊之尺寸。在一範例中,至少一計算裝置可包含一直接記憶體存取子系統,其中至少一計算裝置係組態以基於該直接記憶體存取子系統的至少一特性而判定記憶體區塊之尺寸。在一範例中,請求之記憶體位址的數目可對應具有範圍在約四千位元組之頁粒度的複數個頁。在一範例中,至少一計算裝置可組態以基於執行一指令所需之頁之一列表以及鄰近執行指令所需之一頁的複數個頁之其中至少一者而判定請求之記憶體位址的數目。
在另一範例中,至少一計算裝置可組態以維持釋出一致性,且可包含一第一處理單元、耦合至第一處理單元的至少一第一記憶體裝置、至少一第二處理單元、以及耦合至至少一第二處理單元的至少一第二記憶體裝置。在一範例中,第一記憶體裝置及第二記憶體裝置之其中至少一者可儲存有複數個指令,當複數個指令由第一處理單元及第二處理單元之其中至少一者執行時係造成第一處理單元:卸載一計算操作至第二處理單元,且回應卸載計算操作:接收來自第二處理單元之一請求,其係針對包含多於一並小於在共享記憶體中的所有頁之在計算裝置之共享記憶體中的複數個頁;回應該請求而更新一記憶體位址;以及將關聯於請求頁的資料轉移至第二處理單元。
在一範例中,第一處理單元及第二處理單元可具有不 同的指令集架構。在一範例中,至少一計算裝置可包含一多積體核心架構。在一範例中,請求之複數個頁可對應虛擬記憶體之連續、固定長度頁的一範圍。在一範例中,針對在共享記憶體中之複數個頁之請求係對應執行一指令所需之頁的一列表。在一範例中,針對在共享記憶體中之複數個頁之請求係對應執行一指令所需之一頁以及鄰近執行指令所需之頁的複數個頁。在一範例中,記憶體位址表格可儲存於第一計算裝置。在一範例中,至少一計算裝置係組態以使用直接記憶體存取以將關聯於所請求頁的資料轉移至第二處理單元。
在另一範例中,一種用以維持釋出一致性的方法可包含在包含至少一第一處理單元及至少一第二處理單元的一計算裝置上:於一第二處理單元初始化一頁錯誤;回應於頁錯誤,判定在由第二處理單元及第一處理單元所共享之虛擬記憶體中之連續頁的一數目,頁的數目大於一並小於整體的共享記憶體;初始化頁從第一處理單元至第二處理單元的轉移;以及回應於在第二處理單元接收頁,將頁標記為可用於至少一寫入操作。在一範例中,方法包含基於計算裝置之一直接記憶體存取子系統的至少一特性而判定在共享虛擬記憶體中之連續頁的數目。在一範例中,方法可包含基於執行一指令所需之一頁以及鄰近執行指令所需之頁的至少一頁的其中至少一者而判定在共享虛擬記憶體中之連續頁的數目。在一範例中,方法可包含在運行時間判定在共享虛擬記憶體中之連續頁的數目。
在一範例中,計算裝置可組態以維持釋出一致性,且可包含至少一處理器;以及耦合至至少一處理器之電腦電路,其中電腦電路可安排以使至少一處理器施行任一項上述方法。在一範例中,至少一種電腦可存取媒體可包含複數個指令,其回應於被執行而造成一計算裝置施行任一項上述方法。
在另一範例中,用以維持釋出一致性的方法可包含,在包含至少一第一處理單元、至少一第二處理單元、由至少一第一處理單元及至少一第二處理單元所共享之虛擬記憶體、以及具有資料轉移頻寬之至少一直接記憶體存取子系統的一計算裝置上:標記共享虛擬記憶體,使得回應於存取在共享記憶體中之資料的一請求而初始化一頁錯誤,以及回應於頁錯誤:判定共享虛擬記憶體之數量係小於共享記憶體之總量並大到足以完全地利用直接記憶體存取子系統之資料轉移頻寬;以及使用直接記憶體存取子系統而初始化從第一處理單元至第二處理單元之資料的轉移,資料係關聯於所判定之共享虛擬記憶體的數量。在一範例中,方法可包含基於執行一指令所需之一頁以及鄰近執行指令所需之頁的至少一頁之其中至少一者而判定共享虛擬記憶體的數量。在一範例中,方法可包含在運行時間判定共享虛擬記憶體中之數量。
在另一範例中,計算裝置可組態以維持釋出一致性,且可包含至少一處理器;以及耦合至至少一處理器之電腦電路,其中電腦電路可安排以使至少一處理器施行任一項 上述方法。在一範例中,至少一電腦可存取媒體可組態以維持釋出一致性,且可包含複數個指令,其回應於被執行而造成一計算裝置施行任一項上述方法。
雖然已在圖式及前文描述中詳細說明及描述本發明,但此說明及描述係視為範例性而非限制性,應理解到僅顯示及描述說明性範例,且在本發明精神內的所有改變及修改均應受到保護。此外,雖然本發明各態樣係以異質多核心系統的背景來做描述,但將理解到各種態樣具有其他應用,例如欲提供多重處理器或核心之間之記憶體一致性管理的任何應用。此類應用可包含例如加速度器或類似元件用以加速在中央處理單元上運行之應用程式或部份應用程式(例如使用通用圖形處理單元或GPGPU的應用程式)的任何應用。
100‧‧‧計算裝置
110‧‧‧中央處理單元
112‧‧‧輸入/輸出子系統
114‧‧‧特殊處理單元
116‧‧‧特殊處理單元
120‧‧‧核心
122‧‧‧快取記憶體
124‧‧‧記憶體
126‧‧‧作業系統
128‧‧‧釋出一致性應用程式碼
130‧‧‧預提取器邏輯
132‧‧‧共享記憶體位址表格
134‧‧‧共享記憶體
140‧‧‧核心
142‧‧‧快取記憶體
144‧‧‧記憶體
146‧‧‧作業系統
148‧‧‧釋出一致性應用程式碼
150‧‧‧預提取器邏輯
152‧‧‧共享記憶體位址表格
154‧‧‧共享記憶體
156‧‧‧直接記憶體存取子系統
160‧‧‧箭頭
162‧‧‧箭頭
164‧‧‧箭頭

Claims (35)

  1. 一種可組態以維持釋出一致性的計算裝置,包含:一第一處理單元;至少一第一記憶體裝置,耦合至該第一處理單元;一第二處理單元;以及至少一第二記憶體裝置,耦合至該第二處理單元;該第一記憶體裝置及該第二記憶體裝置之其中至少一者係儲存有複數個指令,當該複數個指令由該第一處理單元及該第二處理單元執行時係造成該第二處理單元組態該計算裝置的共享記憶體,使得回應於一頁錯誤,該第二處理單元係:判定在該共享記憶體中之記憶體位址的一數目係大於一並小於在該共享記憶體中的所有記憶體位址;傳送一請求至該第一處理單元以將關聯於所判定之記憶體位址之數目的資料轉移至該第二處理單元;以及將針對該轉移資料之該記憶體位址標記為可用於至少一寫入操作。
  2. 如申請專利範圍第1項所述之計算裝置,其中該至少一計算裝置係組態以藉由在請求對該共享記憶體的存取之前將該共享記憶體標記為非可存取而初始化該頁錯誤。
  3. 如申請專利範圍第2項所述之計算裝置,其中該至少一計算裝置係組態以藉由更新儲存於該第二處理單元之一虛擬記憶體位址表格而將該共享記憶體標記為非可存取。
  4. 如申請專利範圍第1項所述之計算裝置,其中該記憶體位址包含一固定長度、連續範圍的虛擬記憶體位址。
  5. 如申請專利範圍第1項所述之計算裝置,其中該第一處理單元包含一中央處理單元,且該第二處理單元包含一專用處理單元。
  6. 如申請專利範圍第1項所述之計算裝置,其中該第二處理單元包含一硬體加速器。
  7. 如申請專利範圍第1項所述之計算裝置,其中該第二處理單元包含一圖形卡、視訊卡、浮點加速器、數位信號處理器、共同處理器、及組態供通用計算的圖形處理單元之其中至少一者。
  8. 如申請專利範圍第1項所述之計算裝置,包含一多積體核心架構。
  9. 如申請專利範圍第1項所述之計算裝置,其中該第一處理單元及該第二處理單元具有不同的指令集架構。
  10. 如申請專利範圍第1項所述之計算裝置,包含一直接記憶體存取子系統,其通訊地耦合該第一處理單元及該第二處理單元。
  11. 如申請專利範圍第10項所述之計算裝置,其中該直接記憶體存取子系統包含一週邊組件互連裝置及一週邊組件互連快速裝置之其中至少一者。
  12. 如申請專利範圍第1項所述之計算裝置,其中請求之該所判定之記憶體位址的數目係對應具有範圍在約512千位元組至約1百萬位元組之一尺寸的一記憶體區 塊。
  13. 如申請專利範圍第1項所述之計算裝置,其中請求之該記憶體位址的數目係對應一記憶體區塊且該至少一計算裝置係組態以在運行時間判定該記憶體區塊之尺寸。
  14. 如申請專利範圍第13項所述之計算裝置,包含一直接記憶體存取子系統,其中該計算裝置係組態以基於該直接記憶體存取子系統的至少一特性而判定該記憶體區塊之尺寸。
  15. 如申請專利範圍第1項所述之計算裝置,其中請求之該記憶體位址的數目係對應具有範圍在約四千位元組之頁粒度的複數個頁。
  16. 如申請專利範圍第1項所述之計算裝置,其中該至少一計算裝置係組態以基於執行一指令所需之頁之一列表以及鄰近執行該指令所需之一頁的複數個頁之其中至少一者而判定請求之該記憶體位址的數目。
  17. 一種可組態以維持釋出一致性的計算裝置,包含:一第一處理單元;至少一第一記憶體裝置,耦合至該第一處理單元;至少一第二處理單元;以及至少一第二記憶體裝置,耦合至該至少一第二處理單元;該第一記憶體裝置及該第二記憶體裝置之其中至少一者係儲存有複數個指令,當該複數個指令由該第一處理單 元及該第二處理單元之其中至少一者執行時係造成該第一處理單元:卸載一計算操作至該第二處理單元,且回應卸載該計算操作:接收來自該第二處理單元之一請求,其係針對包含多於一並小於在共享記憶體中的所有頁之在該計算裝置之共享記憶體中的複數個頁;回應該請求而更新一記憶體位址表格;以及將關聯於該請求頁的資料轉移至該第二處理單元。
  18. 如申請專利範圍第17項所述之計算裝置,其中該第一處理單元及該第二處理單元具有不同的指令集架構。
  19. 如申請專利範圍第17項所述之計算裝置,包含一多積體核心架構。
  20. 如申請專利範圍第17項所述之計算裝置,其中該請求之複數個頁係對應虛擬記憶體之連續、固定長度頁的一範圍。
  21. 如申請專利範圍第17項所述之計算裝置,其中針對在共享記憶體中之複數個頁之該請求係對應執行一指令所需之頁的一列表。
  22. 如申請專利範圍第17項所述之計算裝置,其中針對在共享記憶體中之複數個頁之該請求係對應執行一指令所需之一頁以及鄰近執行該指令所需之該頁的複數個頁。
  23. 如申請專利範圍第17項所述之計算裝置,其中該記憶體位址表格係儲存於該第一計算裝置。
  24. 如申請專利範圍第17項所述之計算裝置,其中該至少一計算裝置係組態以使用直接記憶體存取以將關聯於該請求頁的資料轉移至該第二處理單元。
  25. 一種用以維持釋出一致性的方法,包含:在包含至少一第一處理單元及至少一第二處理單元的一計算裝置上;於一第二處理單元初始化一頁錯誤;回應於頁錯誤,判定在由該第二處理單元及一第一處理單元所共享之虛擬記憶體中之連續頁的一數目,該頁的數目大於一並小於整體的共享記憶體;初始化該頁從該第一處理單元至該第二處理單元的轉移;以及回應於在該第二處理單元接收該頁,標記該頁為可用於至少一寫入操作。
  26. 如申請專利範圍第25項所述之方法,包含基於該計算裝置之一直接記憶體存取子系統的至少一特性而判定在該共享虛擬記憶體中之連續頁的數目。
  27. 如申請專利範圍第25項所述之方法,包含基於執行一指令所需之一頁以及鄰近執行該指令所需之該頁的至少一頁的其中至少一者而判定在該共享虛擬記憶體中之連續頁的數目。
  28. 如申請專利範圍第25項所述之方法,包含在運行時間判定在該共享虛擬記憶體中之連續頁的數目。
  29. 一種組態以維持釋出一致性的計算裝置,包含: 至少一處理器;以及耦合至該至少一處理器之電腦電路,該電腦電路係安排以使該至少一處理器施行如申請專利範圍第25至28項之任一項所述之方法。
  30. 一種電腦可存取媒體,包含複數個指令,其回應於被執行而造成一計算裝置施行如申請專利範圍第25至28項之任一項所述之方法。
  31. 一種用以維持釋出一致性的方法,包含:在包含至少一第一處理單元、至少一第二處理單元、由該至少一第一處理單元及該至少一第二處理單元所共享之虛擬記憶體、以及具有一資料轉移頻寬之至少一直接記憶體存取子系統的一計算裝置上:標記該共享虛擬記憶體,使得回應於存取在該共享記憶體中之資料的一請求而初始化一頁錯誤,以及回應於該頁錯誤:判定該共享虛擬記憶體之一數量係小於共享記憶體之總量並大到足以完全地利用該直接記憶體存取子系統之該資料轉移頻寬;以及使用該直接記憶體存取子系統而初始化從該第一處理單元至該第二處理單元之資料的轉移,該資料係關聯於所判定之共享虛擬記憶體的該數量。
  32. 如申請專利範圍第31項所述之方法,包含基於執行一指令所需之一頁以及鄰近執行該指令所需之該頁的至少一頁之其中至少一者而判定共享虛擬記憶體的數量。
  33. 如申請專利範圍第31項所述之方法,包含在運行時間判定共享虛擬記憶體中之數量。
  34. 一種組態以維持釋出一致性的計算裝置,包含:至少一處理器;以及耦合至該至少一處理器之電腦電路,該電腦電路係安排以使該至少一處理器施行如申請專利範圍第31至33項之任一項所述之方法。
  35. 一種可組態以維持釋出一致性的電腦可存取媒體,包含複數個指令,其回應於被執行而造成一計算裝置施行如申請專利範圍第31至33項之任一項所述之方法。
TW102113793A 2012-04-25 2013-04-18 用以維持共享記憶體編程中之釋出一致性的方法及系統 TWI499908B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/074638 WO2013159288A1 (en) 2012-04-25 2012-04-25 Method and system for maintaining release consistency in shared memory programming

Publications (2)

Publication Number Publication Date
TW201411344A TW201411344A (zh) 2014-03-16
TWI499908B true TWI499908B (zh) 2015-09-11

Family

ID=49482119

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102113793A TWI499908B (zh) 2012-04-25 2013-04-18 用以維持共享記憶體編程中之釋出一致性的方法及系統

Country Status (5)

Country Link
US (2) US9405477B2 (zh)
EP (1) EP2842031A4 (zh)
CN (1) CN104321750B (zh)
TW (1) TWI499908B (zh)
WO (1) WO2013159288A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI832298B (zh) * 2016-12-31 2024-02-11 美商英特爾股份有限公司 用於異質計算之系統,方法,及設備

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104321750B (zh) 2012-04-25 2019-03-08 英特尔公司 在共享存储器编程中保持释放一致性的方法和系统
US9292446B2 (en) * 2012-10-04 2016-03-22 International Business Machines Corporation Speculative prefetching of remote data
CN103152394B (zh) * 2013-02-06 2016-09-28 华为技术有限公司 数据存取系统、内存共享设备及数据读取方法
US9766916B2 (en) 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
WO2017067569A1 (en) * 2015-10-19 2017-04-27 Telefonaktiebolaget Lm Ericsson (Publ) Method and memory merging function for merging memory pages
US11416411B2 (en) * 2019-03-15 2022-08-16 Intel Corporation Preemptive page fault handling

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101065736A (zh) * 2004-11-30 2007-10-31 国际商业机器公司 管理多处理器操作
TW200821832A (en) * 2006-03-23 2008-05-16 Ibm Low-cost cache coherency for accelerators
CN101523361A (zh) * 2006-10-17 2009-09-02 Arm有限公司 数据处理设备中对共享存储器的写访问请求的处理
US7624236B2 (en) * 2004-12-27 2009-11-24 Intel Corporation Predictive early write-back of owned cache blocks in a shared memory computer system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574749B1 (en) * 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
US7702743B1 (en) * 2006-01-26 2010-04-20 Symantec Operating Corporation Supporting a weak ordering memory model for a virtual physical address space that spans multiple nodes
US7774645B1 (en) 2006-03-29 2010-08-10 Emc Corporation Techniques for mirroring data within a shared virtual memory system
JP4631948B2 (ja) * 2008-08-13 2011-02-16 日本電気株式会社 情報処理装置及び順序保証方式
US8531471B2 (en) * 2008-11-13 2013-09-10 Intel Corporation Shared virtual memory
CN104321750B (zh) 2012-04-25 2019-03-08 英特尔公司 在共享存储器编程中保持释放一致性的方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101065736A (zh) * 2004-11-30 2007-10-31 国际商业机器公司 管理多处理器操作
US7624236B2 (en) * 2004-12-27 2009-11-24 Intel Corporation Predictive early write-back of owned cache blocks in a shared memory computer system
TW200821832A (en) * 2006-03-23 2008-05-16 Ibm Low-cost cache coherency for accelerators
CN101523361A (zh) * 2006-10-17 2009-09-02 Arm有限公司 数据处理设备中对共享存储器的写访问请求的处理

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI832298B (zh) * 2016-12-31 2024-02-11 美商英特爾股份有限公司 用於異質計算之系統,方法,及設備

Also Published As

Publication number Publication date
CN104321750A (zh) 2015-01-28
US9552303B2 (en) 2017-01-24
EP2842031A1 (en) 2015-03-04
CN104321750B (zh) 2019-03-08
EP2842031A4 (en) 2015-12-30
US20160335197A1 (en) 2016-11-17
TW201411344A (zh) 2014-03-16
WO2013159288A1 (en) 2013-10-31
US20140258643A1 (en) 2014-09-11
US9405477B2 (en) 2016-08-02

Similar Documents

Publication Publication Date Title
TWI499908B (zh) 用以維持共享記憶體編程中之釋出一致性的方法及系統
US11221762B2 (en) Common platform for one-level memory architecture and two-level memory architecture
KR101720676B1 (ko) 대용량 저장소 디바이스들을 관리하기 위한 장치 및 방법
TW201905714A (zh) 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體
KR101350541B1 (ko) 프리페치 명령어
TW201107974A (en) Cache coherent support for flash in a memory hierarchy
US8990486B2 (en) Hardware and file system agnostic mechanism for achieving capsule support
KR102106261B1 (ko) 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
US11586369B2 (en) Hybrid hardware-software coherent framework
US20180018095A1 (en) Method of operating storage device and method of operating data processing system including the device
US10198357B2 (en) Coherent interconnect for managing snoop operation and data processing apparatus including the same
US10552334B2 (en) Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
US11921639B2 (en) Method for caching data, a host device for caching data, and a storage system for caching data
US11669454B2 (en) Hybrid directory and snoopy-based coherency to reduce directory update overhead in two-level memory
CN107250995B (zh) 存储器管理设备
TW201705000A (zh) 電腦系統及非揮發性記憶體的控制方法
US10754791B2 (en) Software translation prefetch instructions
US20130007768A1 (en) Atomic operations on multi-socket platforms
US8593472B1 (en) System and method for accessing a frame buffer via a storage driver
KR20230082484A (ko) 전자 장치의 동작 방법
TWI506537B (zh) 使用反射記憶體實行同調之技術
US11809341B2 (en) System, device and method for indirect addressing
JP2018060538A (ja) コンピューティングシステム及びその動作方法
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法
RU2504000C1 (ru) Способ копирования данных в кэш-памяти и устройство для его осуществления