TWI432963B - 加速器之低成本快取一致 - Google Patents

加速器之低成本快取一致 Download PDF

Info

Publication number
TWI432963B
TWI432963B TW096107836A TW96107836A TWI432963B TW I432963 B TWI432963 B TW I432963B TW 096107836 A TW096107836 A TW 096107836A TW 96107836 A TW96107836 A TW 96107836A TW I432963 B TWI432963 B TW I432963B
Authority
TW
Taiwan
Prior art keywords
node
block
memory
cached
cache
Prior art date
Application number
TW096107836A
Other languages
English (en)
Other versions
TW200821832A (en
Inventor
Scott D Clark
Andrew H Wottreng
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of TW200821832A publication Critical patent/TW200821832A/zh
Application granted granted Critical
Publication of TWI432963B publication Critical patent/TWI432963B/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/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
    • 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/1016Performance improvement

Landscapes

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

Description

加速器之低成本快取一致
本發明一般係關於多重處理。更特別地,本發明係關於藉由維持加速器與中央處理單元(CPUs)之間一致性的溝通來減少頻寬的消耗,加速器與CPUs係在相同晶片或不同晶片上。。
早期電腦系統包含單一中央處理單元(CPU)、連同CPU的相關記憶體、輸入/輸出(I/O)裝置與大量儲存系統,例如光碟驅動器、光學儲存器、磁帶驅動器與類似物。
不過,將處理功率的需求與日遽增,超過單一處理器的能力,衍生了許多解決方案,以抒解對處理器能力之要求。一種解決辦法係為使用結合CPU的加速器。加速器係為可程式或進行特定功能的自主單元。當實行此一功能的請求由CPU收到時,該功能之實行則可交給加速器。在加速器處理指定任務時,CPU則可繼續到另一任務,從而減少CPU上的負擔並且改善效率。
圖1顯示在互連匯流排120上,連結加速器110的CPU100。CPU100可被連接到記憶體裝置102。記憶體裝置102例如是動態隨機存取記憶體(DRAM)裝置。此外,CPU100亦可包含局部快取記憶體101,以促進到正被處理資料的快速存取。加速器110係連接到互連匯流排120上的CPU,以進行特定功能。例如,加速器110係為進行專業圖形計算與傳送的圖形加速器。該加速器可具有其本身的記憶體112與快取111。
當處理圖形之請求由CPU100收到時,加速器110可被委派處理圖形資料的任務。例如,包含在記憶體102中的區塊1可包含要求處理的圖形資料。當處理請求被送到CPU時,區塊1可被傳送到快取111(或加速器記憶體112)以藉由加速器來處理。當完成區塊1之處理時,其係可藉由加速器往回寫到記憶體102。
先前技術的其中一問題係為加速器與CPUs可被連接,但不具有記憶體一致性。因為處理器與加速器可共享包含在記憶體102與112中的資料,所以當在共享資料上作用時,要求在加速器與CPU之間協調。在確保加速器與CPU沒有存取相同記憶體位置所定址之不同資料上,一致性是需要的。例如,在圖1中,CPU會收到一請求,以在區塊1已經被發送到加速器110以來處理以後,處理區塊1。假如新請求並非圖形處理請求的話,CPU則可快取區塊1,以來處理。假如在CPU處理區塊以前,加速器完成區塊之處理的話,CPU所快取的資料將會過時。因此,CPU將處理不正確的資料。記憶體一致性要求最新修改的資料副本被應用於所有處理裝置。
此問題的一種解決方案係為實施窺探(snooping)協定,以更新在快取中的過時資料。發送到每一處理器的位址與指令可被傳送到每一其他處理器與/或加速器。匯流排監視器可被使用來監視位址線,以用於記憶體存取。假如一快取包含被定址在匯流排上的記憶體區塊副本的話,該快取則可更新其記憶體區塊的副本。例如,在圖1中,匯流排監視器可監視匯流排120。假如當包含區塊1之副本時,加速器110的寫入操作是藉由快取101來檢測的話,快取101則可更新區塊1其本身的副本,以致於它能夠包含最新且準確的區塊1副本,以由CPU處理。
在其他實施例中,快取101使其區塊1的副本無效,以回應檢測到記憶體102中區塊1的記憶體寫入。因此,當CPU試著從快取存取區塊1的話,區塊1的先副本則可從記憶體取得。
不過,在具有複數個加速器、CPUs與共享記憶體的多重處理環境中,快取一致性的實施意味著所有記憶體存取必須普及到全部一致性的單元。各一致性單元隨後可窺探記憶體存取,並且回應該存取的創始者,指出他們是否需要更新。在每一存取的裝置到共享記憶體之間的這種溝通,可消耗很多節點間頻寬,並且大幅減少系統效率。一節點可由共用公共物理匯流排的一組CPUs或加速器組成,經過該匯流排,CPUs與加速器會進行一致性的記憶體存取。常常,但並非一定,節點係在不同晶片上。
因此,需要的是,在複數個CPUs與加速器之間有效維持快取一致性的方法與系統。
本發明實施例一般提供藉由維持加速器與CPUs之間一致性的溝通而來減少晶片間頻寬耗損的方法與系統。
本發明的一種實施例提供一種在多重處理系統中維持至少一第一節點與至少一第二節點之間之記憶體一致性的方法。第一節點一般包含一或多個中央處理單元(CPUs)、與每一CPUs連結的快取記憶體、共享記憶體、以及供辨識在其他節點之共享記憶體位置的目錄。第二節點一般包含一或多個加速器、與每一加速器連結的快取記憶體、以及與每一加速器連結的局部儲存。該方法一般包括將該共享記憶體之一區塊從該第一節點一致地傳送到在該第二節點中一加速器之快取記憶體或局部儲存其中之一;非一致性地在該局部儲存中所傳送之區塊進行一或多個操作;在進行一或多個操作以後,將該記憶體區塊一致性地寫回該共享記憶體裝置。
本發明的另一實施例提供一種在多重處理系統中的至少一第一節點與第二節點之間維持記憶體一致性的方法。第一節點一般包含一或多個中央處理單元(CPUs)、與每一CPUs連結的快取記憶體、共享記憶體、以及供辨識在其他節點之共享記憶體位置的目錄。第二節點一般包含一或多個加速器、與每一加速器連結的快取記憶體、以及與每一加速器連結的局部儲存。該方法一般包含接收一請求,以藉由一或多個中央處理單元其中之一存取該共享記憶體之一區塊;回應該請求之接收,決定該區塊是否在另一位置被快取以及該區塊是否被修改;並假如該區塊在該第二節點被快取與修改的話,則將該區塊的位址傳送到該第二節點。
又一實施例提供一種在多重處理環境中,維持至少一第一節點與至少一第二節點之間之記憶體一致性的系統。該系統包含至少一第一節點與至少一第二節點。第一節點一般包含一或多個中央處理單元(CPUs)、與每一CPUs連結的快取記憶體、共享記憶體、以及以及供辨識在其他節點之共享記憶體位置的目錄。第二節點一般包含一或多個加速器、與每一加速器連結的快取記憶體、以及與每一加速器連結的局部儲存。第一節點一般係用以接收一請求,以存取該共享記憶體之一區塊,並且回應該請求之接收,決定該區塊是否在該第一節點內或是其他節點內被快取以及該區塊是否被修改。假如該存取是讀取存取的話,第一節點係用以提供最新修改共享記憶體區塊。假如該存取是寫入存取的話,則使將該記憶體區塊被快取的位置更新或失效。第二節點一般用以一致發出一請求,以以存取在該第一節點中之共享記憶體區塊,且假如將該區塊被傳送到該局部儲存的話,非一致地在該區塊進行操作。
本發明一般係關於藉由維持加速器與中央處理單元(CPUs)之間一致性的溝通來減少節點間頻寬(inter-node bandwidth)消耗的方法與系統。CPUs與加速器可被聚集在多重處理環境中的個別節點上。包含共享記憶體裝置的每一節點會包含一目錄,以追蹤在其他節點被快取之共享記憶體區塊。因此,只有當記憶體位置被快取於節點以外,指令與位址可被傳送到在其他節點上的處理器與加速器。此外,因為加速器一般並沒有存取與CPUs相同的資料,所以只有最初讀取、寫入與同步化操作可被傳送到其他節點。對資料的中間存取可非一致地進行。因此,可減少為了維持一致性所消耗的晶片間頻寬(inter-chip bandwidth)。
在下文中,可參考本發明的實施例。不過,應該理解的是,本發明不限於特定說明的實施例。然而,不論是否與不同實施例有關,以下特徵與實施例的任何組合都將被考慮用來實施與實踐本發明。再者,在各種實施例中,本發明提供超過先前技術的種種優點。不過,雖然本發明實施例可得到超越其他可能解法以及/或者超越先前技術的優點,但是不管已知實施例是否可得到特定優點,其係並不會限制本發明。因此,以下態樣、特徵、實施例與優點僅供說明,其係並不會被考慮為附加申請專利範圍的元件或限制性,除了被明確列舉於申請專利範圍以外。同樣地,參考〝本發明〞不應該被詮釋為在此所揭露之任何發明主體的概括性,其係並且不應該被視為附加申請專利範圍的元件或限制,除了被明確列舉於申請專利範圍以外。
示範系統
圖2A顯示根據本發明一實施例所設計之包含CPUs210與加速器220的多重處理系統200。系統200的CPUs210與加速器220可被組織成二或更多個節點。每一節點包含處理器或加速器與共享記憶體裝置的任一種組合。該共享記憶體可藉由在該節點內的處理器與/或加速器以及藉由在遠端節點中的處理器與/或加速器來存取。記憶體存取時間可依據記憶體關於請求裝置的位置。此記憶體存取稱為非均勻記憶體存取(Non-Uniform Memory AccessNUMA)。例如,藉由處理器存取到在其他節點內的記憶體,其係會比存取到在遠端節點的記憶體更快。
為了改善效率,處理器與共享記憶體可選擇性地聚集在每一節點,以減少記憶體存取時間。例如,常常存取資料於已知記憶體裝置中的處理器與加速器,可與在相同節點中的記憶體裝置一起聚集。更者,運算系統支援可藉由排程製程來減少在節點之間的存取頻率,使得當他們被執行時乃在相同節點上執行。
因為加速器僅僅在CPU請求時進行專門任務,所以加速器就可被聚集在與包含CPUs之節點不同的節點上。於是,在系統200中,CPUs210會被聚集在節點0中,加速器220會被聚集在節點1中。當顯示兩節點時,熟諳該技藝者將瞭解,任何數目的節點均可被實施在系統中。複數個節點的各個均可藉由連結230來互連。
如圖所示,節點0包含一組CPUs210(圖2A所示者,四個)。每一CPU均可具有局部的快取記憶體211。私下、局部快取可顯示於圖式中,但一般熟諳該技藝者將理解到,複數層快取記憶體亦可被實施。再者,一或多個層快取可在CPUs之間被共享。
節點0亦包含可相通地連接到每一CPU的非局部記憶體212。記憶體212較佳地係為隨機存取記憶體,例如動態隨機存取記憶體(DRAM)。記憶體212可足夠地大,以包含需要藉由CPUs處理的資料。因為藉由CPUs到局部快取記憶體的存取,例如快取記憶體211,其係會比到非局部記憶體的存取快,例如記憶體212,所以藉由每一CPU而處理的資料區塊可從記憶體212複製到局部快取記憶體211,以供處理。記憶體212亦可是共享記憶體,其係可藉由在連結230上之其他節點的CPUs與/或加速器來存取。
假如記憶體212係為可藉由其他節點來存取之共享記憶體的話,節點0亦可包含節點目錄213,以追蹤來自在其他節點上被快取之記憶體212的區塊副本。使用節點目錄213的優點係為該系統僅僅通知在使用已知位址時之當下扮演主動角色的那些處理器有關到那位址的操作。例如,該節點目錄包含有關在其他節點被快取之共享記憶體中之位址的資訊、那些節點的位置以及那資料的狀態。因此,只有當一特定位址在另一節點被快取且該資料被修改時,記憶體存取可被傳送至其他節點。因此,藉由使用節點目錄,所有位址與命令不一定會被傳送到所有節點,從而減少系統過熱、潛伏期與整個連結的頻寬消耗。
節點1包含一或多個加速器220。與CPUs一樣,每一加速器220具有相關的私有快取記憶體221。雖然沒顯示於圖式中,一般熟諳該技藝者將仍然理解到,亦可實施複數個快取。再者,一或多個快取層可被共享於節點的加速器之間。因為在一節點內的存取會比在整個連結230到其他節點的存取更快,所以欲藉由加速器所處理的資料則可被複製入個別快取記憶體221,以供處理。
節點1包含非局部記憶體222。記憶體222係為可藉由其他節點而存取的共享記憶體裝置。與記憶體212一樣,記憶體222亦可是隨機存取記憶體裝置,例如DRAM裝置。假如共享記憶體222被包括於節點1的話,目錄223亦可被包含在內,以追蹤來自記憶體222在其他節點被快取的區塊副本。
每一加速器亦可具有相關的選擇性局部儲存224。局部儲存係為非一致性記憶體,該記憶體主要藉由其所附加的加速器來存取。因為局部儲存224僅僅可藉由它們個別的加速器來存取,所以局部儲存係為非一致性。因此,在加速器與相關局部儲存之間的交易不需要被傳播到其他節點,以確保一致性或者在相同節點內快取。
藉由加速器所處理的資料可被包含在局部儲存224中。因此,藉由每一加速器存取到其局部儲存,而用於最初資料與中間結果,其係不會增加到連結230的頻寬需求條件。在藉由CPUs210存取以前,最終結果可藉由軟體,從局部儲存被複製入記憶體212或222。軟體亦可調合與協調加速器與CPU存取成此類型的共享資料。
在一實施例中,記憶體222、快取221與局部儲存224是選擇性的,其係並且因此從節點1省略。數個因素可影響一或多個上述裝置的內含物。例如,如上所述,因為遍及諸節點的記憶體存取比到局部記憶體的存取更慢,所以含有快取221與局部儲存224是有利的。因此,潛伏期(latency)與晶片間頻寬耗損可藉由含有快取與局部儲存來減少。假如加速器處理大量資料的話,那麼因為在其他節點上到共享記憶體的存取會比在一節點內到共享記憶體的存取更慢,所以含有記憶體222則會是有利的。與快取一樣,含有記憶體可減少潛伏期與晶片間頻寬。又一因素係為在假如記憶體被包含在內所需要之目錄的尺寸與複雜性。大型記憶體需要更大且更複雜的目錄,其係會變成降低性能的瓶頸。
圖2B係為將共享記憶體222省略的本發明替代性實施例。於是,節點目錄223亦可被省略,因為它們並沒有任何共享位置要追蹤。在一實施例中,在圖2B中的快取221可僅僅快取一小量的資料。例如,每一快取221僅僅包含6條快取線。因此,節點目錄213可僅僅追蹤24個位址,其係對應4個快取221之各6個位址。因此,除非有一位址在節點1之24個位置其中之一被快取以外,到記憶體212的CPU存取不需要被傳送到節點1,從而減少頻寬的消耗,以維持整個節點的一致性。
局部快取記憶體211與221是一致的,因為它們包含在另一節點之來自共享記憶體裝置(例如記憶體212與222)的資料副本。因此,在快取211與221中的區塊修改狀態可被追蹤,以確保一致性。例如,假如加速器寫入到已經在其快取中的區塊且該區塊沒被修改的話,那麼在包含該區塊之所有節點中的所有快取狀態則必須轉變。在此情形中,該區塊的位址則必須被傳送到所有這些快取。該定址區塊可轉變成在其他快取中的無效狀態,且只有加速器的快取會被轉變成一修改狀態。同時,假如該區塊之記憶體位置是在與加速器不同的節點上的話,那麼在那節點中的節點目錄亦可被更新,以顯示出該區塊被修改於加速器的遠端節點。
同樣地,假如記憶體區塊在共享記憶體中被更新的話,那麼已經快取區塊的所有位置則必須同樣地被更新或失效。不管怎樣,本發明的一優點係為只有加速器的最初讀取操作、寫入操作與同步化必須被傳送。
讀取操作
最初讀取操作係為將需要被加速器處理的資料從在節點0的共享記憶體位置傳送到節點1的一種操作。此存取可被一致地進行,以確保加速器具有在該系統中有效之資料的最新版本。讀取操作可藉由在每一加速器中之DMA控制器之整個連結230的動態記憶體存取(DMA)所進行。藉由在節點1中之加速器之到共享記憶體位置的DMA存取,例如記憶體212,可指出是否將該資料傳送到非一致局部儲存或一致快取或記憶體。假如將該資料傳送到一致性單元的話,那麼一條目(entry)將會被編進節點目錄213以指出位置、位址與資料狀態。不過,假如將該資料傳送到局部儲存的話,並沒有任何條目會被編進節點目錄。
一般而言,從遠端共享記憶體位置讀取的資料可被儲存在與加速器連結的局部儲存中。因為局部儲存非一致性,所以加速器可在局部儲存中進行操作並且修改在局部儲存中的資料。到局部儲存的存取不會被傳送到其他節點,因而減少頻寬消耗。再者,因為沒有任何條目被編進在節點0上的節點目錄,所以傳送到局部儲存之到記憶體位置的CPU存取則不需要被傳送到節點1。
不過,有些讀取操作會造成資料被傳送到一致單元,而非局部儲存。例如,使用於虛擬位址之硬體轉譯的原子操作(atomic operation)與頁表項(page table entries)則可被快取。加速器在這些快取之資料上的操作係為一致性,其係需要將位址傳送到其他節點。同樣地,CPUs或加速器在此相同資料上之其他節點的操作係為一致性,其係需要將位址從其他節點傳送。
圖4係為操作流程圖,其係被進行以決定是否將一條目編入在含有共享記憶體之節點上的節點目錄。藉由接收來自包含加速器之節點的讀取請求,該些操作起始於步驟401。在步驟402中,假如讀取請求指出該資料讀取正被傳送到局部儲存的話,那麼在步驟403中,沒有任何條目被編入節點目錄。另一方面,假如讀取請求指出該資料被傳送到一致單元的話,例如快取或記憶體單元,那麼在步驟404中,則將一條目編入於節點目錄,以指出正被傳送的位址、傳送的位置以及資料狀態。
圖3顯示在節點0中由CPUs210以及在節點中由加速器220所一致存取之共享記憶體212的記憶體區塊(區塊1)。例如,區塊1可在快取記憶體211a中被快取,以用於在節點0中由CPU210a所處理。接著,包含區塊1的任務會被委派給在節點1中的加速器220a,以要求區塊的副本被發送到節點1。因為區塊1已經被CPU210a所修改,所以在將區塊發送到節點1以前,快取211a必須被檢查,以用於區塊的更新副本。節點目錄213同樣會被檢查,以決定是否在一些其他節點中,區塊1會被快取與修改。在一些實施例中,節點目錄會與快取211a之窺探同時被檢查。假如節點目錄213指出區塊被快取並在節點中被修改的話,區塊的位址就會被發送到節點2。該區塊的目標節點數0亦可被發送到節點。在節點2中的快取會窺探該位址並且在快取231中發現區塊1。區塊1隨後可被傳送到節點0。一般熟諳該技藝者亦將理解到,節點1的目標節點數目可藉由節點0被提供到節點。因此,在節點2中的修改區塊則可被直接傳送到節點1。
圖5係為示範性操作的流程圖,其係被進行以確保在讀取操作期間內,記憶體區塊的最新副本係藉由在第一遠端節點之共享記憶體(例如記憶體212)上的加速器所提供。藉由決定請求的記憶體區塊是否在第一遠端節點內被快取,該操作起始於步驟501。假如該區塊在第一遠端節點內被快取的話,那麼在步驟502中,該區塊會被檢查,以用於對該資料所進行的修改。假如該區塊已經被修改的話,該區塊則可從含有修改區塊的快取來直接讀取。
假如所請求的區塊沒有在第一遠端節點被快取的話,或者假如該區塊被快取但卻沒被修改的話,那麼在步驟504會決定該區塊是否在第二遠端節點被快取以及該區塊是否被修改。這可例如藉由檢查指出該區塊被快取與修改之位置的節點目錄來完成。假如該區塊在第二遠端節點被快取與修改的話,那麼在步驟508,該區塊的位址可被發送到第二遠端節點並被窺探。在步驟506中,所修改的區塊可從在第二遠端節點中含有修改區塊的快取所讀取。
假如記憶體區塊沒有在第二遠端節點被快取或者假如在第二遠端節點的快取區塊沒被修改的話,那麼在步驟507中,該區塊可從在第一遠端節點的共享記憶體裝置被讀取。一般熟諳該技藝者亦將理解到,假如記憶體區塊在兩者被快取的話:也就是在第一遠端節點中的快取以及在第二遠端節點中的快取,最新修改的區塊則可被讀取。
相較於加速器,被CPU讀取最多的操作係為在遠端節點中沒被快取的位置,以及在CPU之節點中的記憶體。在此些情形中,欲被讀取之區塊的位址不需要被傳送到遠端節點。再者,既使該區塊在遠端節點被快取但卻沒被修改的話,該位址還是不需要被傳送。在所有這些情形中,在CPU之節點中的節點目錄可被使用來決定在其他節點之區塊的狀態。因此,該節點目錄可使用來避免將大部分位址傳送到其他節點。
當CPU在其本身節點之共享記憶體中的位置上進行讀取時,該位址可藉由在該節點上的其他快取所窺探。假如任何此種快取含有修改區塊的話,該區塊則可直接從含有修改區塊的快取讀取。假如所請求區塊沒有在該節點中被快取或者假如該區塊被快取但卻沒被修改的話,則可檢查該節點目錄。假如該區塊在遠端節點被快取並被修改的話,該位址則會被傳送到遠端節點並在那裡被窺探。被修改的資料隨後可從在遠端節點中含有修改區塊的快取所讀取。在一實施例中,遠端快取與節點目錄狀態會被改變,以指出該快取線沒被修改。修改資料亦可被寫入到記憶體。由於被熟此技藝者所熟悉的其他快取協定,記憶體寫入可被避免,且其他之快取狀態則是可能的。
寫入操作
寫入操作係為在由加速器處理以後,將資料從在節點1中之加速器往回傳送到在節點0中之共享記憶體的操作。與讀取操作一樣地,寫入操作亦可藉由DMA存取到在遠端節點的共享記憶體來進行。因為此資料的過時副本可被使用於在該系統中的其他快取,所以本操作亦可被一致地進行,以更新含有過時資料的快取。
參考圖3,區塊1首先在快取221a中被快取,以用於在節點1之加速器220a的處理。它隨後可在快取211a中被快取,以被CPU210a處理,或者在快取231中被快取,以被在節點2中的加速器230處理。區塊1可藉由加速器220a來修改,並且可在CPU210a處理區塊以前,被往回寫到共享記憶體212。在一實施例中,當加速器220a寫到區塊1時,區塊1在快取211a與快取231中會失效。失效之進行是為了避免CPU210a存取舊資料。在其他實施例中,當加速器220a寫入到區塊1時,區塊1可在具有最新資料的快取211a與快取231中被更新。在其中的任一方式,CPU210a與加速器230皆可免於在加速器220a寫入到區塊1後存取舊資料。因此,加速器的寫入操作則可被一致地進行。
圖6顯示示範性操作,其係被進行以確保在加速器已經完成資料處理後所有快取被更新。該操作起始於步驟606,而加速器則進行DMA寫入操作到在第一遠端節點的共享記憶體(例如記憶體212)位置。在步驟601中,在第一遠端節點中的快取可窺探寫入操作的位址,並且決定該位址是否被局部快取。假如該位址已經被快取的話,在步驟602中,該快取會更新具有新寫入資料之它們個別的記憶體區塊副本。如稍早所述,在一實施例中,該些快取可使它們個別的記憶體區塊副本失效,以取代更新它們的副本。
在步驟603中,其係決定是否該寫入的位址在第二遠端節點被快取。這可藉由檢查節點目錄來完成,以發現在將定址記憶體區塊快取之其他節點中的位置。假如記憶體區塊在第二遠端節點被快取的話,在步驟607中,該位址則會被傳送到第二遠端節點。該位址可藉由在第二遠端節點上的快取來窺探,且在步驟604中,含有定址記憶體區塊的快取會以新寫入資料來更新。在其他實施例中,該位址區塊會在第二遠端節點的快取中失效。在步驟605中,該資料可被寫入到在第一遠端節點中的共享記憶體。
藉由CPU的寫入操作主要地是在CPU之節點中之共享記憶體中的位置。在此些情形中,欲被寫入之區塊的位址不需要被傳送到遠端節點。在CPU之節點中的節點目錄可被使用來決定在其他節點之區塊的狀態。因此,該節點目錄可被使用來避免將大部分位址傳送到其他節點。
當CPU進行位置之寫入於其本身節點的記憶體中時,會有數種情形要考慮。在一種情形中,該定址區塊已經是在附著到CPU的快取中,且該區塊已經被修改。在此情形中,該快取可直接用新資料來更新。
在第二情形中,該定址區塊已經在附著到CPU的快取中,但是該區塊卻沒被修改。在此情形中,該位址可藉由在該節點中的其他快取所窺探。假如任何此種快取包含被修改之區塊的話,那麼該區塊會失效。節點目錄亦可被檢查。假如該區塊在遠端節點中被快取的話,該位址會被傳送到遠端節點並且在那裡被窺探。在遠端快取中,該區塊會失效。CPU的快取隨後可用寫入資料來更新。
在第三情形中,該定址區塊不在附著到CPU的快取中。在此情形中,該位址可藉由在該節點中的其他快取所窺探。假如任何此種快取包含該區塊並被修改的話,那麼該資料則可從此快取讀取。節點目錄亦可被檢查。假如該區塊在遠端節點中被快取的話,該位址會被傳送到遠端節點並且在那裡被窺探。假如任何遠端快取包含該區塊並且被修改的話,該資料則可從那快取被讀取。假如沒有任何快取具有該區塊之修改副本的話,該區塊則可從記憶體讀取。該區塊可在除了CPU的快取以外的所有快取中失效。CPU的快取隨後可用寫入資料來更新。
藉由進行非一致存取先前被一致存取的資料上,可將位址與指令之傳送到一系統中的其他節點排除,以用於非一致性存取。在完成資料之處理以後,該加速器可一致性地往回寫入資料。因此,可維持資料一致性,同時減少頻寬之消耗,以用於維持多重處理系統之整個節點的記憶體一致性。
但以上所述僅為本發明之較佳實施例而已,並非用以限定本發明之申請專利範圍;凡其它未脫離本發明所揭示之精神下所完成之等效改變或修飾,均應包含在下述之申請專利範圍內。
101...中央處理單元快取
102...中央處理單元記憶體
110...加速器
111...加速器快取
112...加速器記憶體
120...匯流排
200...處理系統
210...中央處理單元
211...快取記憶體
212...記憶體
213...節點目錄
220...加速器
221...快取記憶體
222...選擇性記憶體
223...選擇性節點目錄
224...局部儲存
230...加速器
231...快取記憶體
232...選擇性記憶體
233...選擇性節點目錄
234...局部儲存
圖1係為說明耦合中央處理單元(CPU)之加速器的先前技術圖式。
圖2A係為根據本發明一實施例所設計之示範性多重處理系統的說明。
圖2B係為根據本發明一實施例所設計之示範性多重處理系統的另一說明。
圖3係為由在一節點之中央處理單元與在其他節點之加速器所存取之共享記憶體區塊的說明。
圖4係為示範性操作的流程圖,其係被進行以決定是否將一條目編入包含共享記憶體的節點目錄。
圖5係為示範性操作的流程圖,其係被進行以將被請求之最新修改的記憶體區塊副本提供給加速器。
圖6係為示範性操作的流程圖,其係被進行以更新藉由加速器被寫回到共享記憶體的所有記憶體區塊快取副本。
200...處理系統
210...中央處理單元
211...快取記憶體
212...記憶體
213...節點目錄
220...加速器
221...快取記憶體
222...選擇性記憶體
224...局部儲存
230...連結

Claims (20)

  1. 一種在節點之間維持記憶體一致性的方法,該方法包含:提供至少一第一節點,其中該第一節點包含:一或多個中央處理單元(CPUs);一快取記憶體,與每一CPUs連結;一共享記憶體;以及一節點目錄,辨識存在於該第一節點之共享記憶體中、在其他節點被快取的位置;提供至少一第二節點,其中該第二節點包含:一或多個加速器;一快取記憶體,與每一加速器連結;以及一局部儲存,與每一加速器連結;將該共享記憶體之一區塊從該第一節點一致地傳送到在該第二節點中一加速器之快取記憶體或局部儲存其中之一;非一致性地在該局部儲存中所傳送之區塊進行一或多個操作;以及在進行一或多個操作以後,將該記憶體區塊一致性地寫回該共享記憶體裝置。
  2. 如申請專利範圍第1項之方法,其中將在該第一節點中之該共享記憶體區塊一致地傳送到該第二節點之步驟,包含:決定是否將該記憶體區塊傳送到在該第二節點中的快取記 憶體或者在該第二節點中的局部儲存;以及假如決定將該記憶體區塊傳送到該快取記憶體的話,則進入在該第一節點之節點目錄中之記憶體區塊的位址與快取記憶體的位置。
  3. 如申請專利範圍第2項之方法,包含依據來自該第二節點指出傳送位置的一信號,來決定是否將該記憶體區塊傳送到在該第二節點中的快取記憶體或在該第二節點中的局部儲存。
  4. 如申請專利範圍第1項之方法,其中將在該第一節點中之一或多個共享記憶體區塊一致地傳送到在該第二節點中的一或多個局部儲存之步驟包含:藉由該第二節點,將需要來自該共享記憶體之一記憶體區塊位址,發送到該第一節點;藉由在該第一節點中的一或多個快取記憶體來窺探(snooping)該位址,以決定該記憶體區塊是否在該第一節點內被快取;檢查該節點目錄,以發現在將記憶體區塊在該第一節點以外可能被快取之位置;假如在該第一節點以外的位置上,該記憶體區塊被快取的話,則將該區塊的位址發送到該第一節點以外的位置;決定該記憶體區塊是否在該快取位置被修改;以及 假設該記憶體區塊已被修改,則取回(retrieve)最新所修改的區塊。
  5. 如申請專利範圍第1項之方法,其中在進行一或多個操作以後,將該記憶體區塊一致性地寫回該共享記憶體裝置之步驟,包含:藉由該第二節點,將欲被寫入到該共享記憶體的一記憶體區塊位址,發送到該第一節點;藉由在該第一節點中的一或多個快取記憶體來窺探(snooping)該位址,以決定該記憶體區塊是否在該第一節點內被快取;檢查該節點目錄,以發現在將記憶體區塊在該第一節點以外可能被快取之位置;假如在該第一節點以外的位置上,該記憶體區塊被快取的話,則將該區塊的位址發送到該第一節點以外的位置;將該區塊寫入到該快取位置,以更新該快取;以及將該區塊寫入到在該第一節點中的共享記憶體。
  6. 一種在節點之間維持記憶體一致性的方法,該方法包含:提供至少一第一節點,其中該第一節點包含:一或多個中央處理單元(CPUs);一快取記憶體,與每一CPUs連結;一共享記憶體;以及 一節點目錄,辨識在其它節點被快取的共享記憶體之區塊以及其他節點的位置;提供至少一第二節點,其中該第二節點包含:一或多個加速器;一快取記憶體,與每一加速器連結;以及一局部儲存,與每一加速器連結;接收一請求,以藉由一或多個中央處理單元其中之一存取該共享記憶體之一區塊;回應該請求之接收,存取該節點目錄以決定該區塊是否在該第二節點被快取、該區塊是否被修改以及該第二節點之位置;以及假如該區塊在該第二節點被快取與修改的話,則將該區塊的位址傳送到該第二節點。
  7. 如申請專利範圍第6項之方法,更包含:藉由與一或多個CPUs連結之該快取記憶體來窺探該區塊的位址,以決定該區塊是否在該第一節點內被快取。
  8. 如申請專利範圍第6項之方法,進一步包含從包含被修改區塊的快取,取回該修改區塊。
  9. 如申請專利範圍第6項之方法,進一步包含假如該請求是寫入操作的話,使在包含該區塊的一或多個快取中的區塊 失效。
  10. 一種資料處理系統,包含:至少一第一節點,其包含:一或多個中央處理單元(CPUs);一快取記憶體,與每一CPUs連結;一共享記憶體;以及一節點目錄,辨識在其它節點被快取的共享記憶體之區塊以及其他節點的位置;以及至少一第二節點,其包含:一或多個加速器;一快取記憶體,與每一加速器連結;以及一局部儲存,與每一加速器連結;其中:該第一節點係用以:接收一請求,以存取該共享記憶體之一區塊;以及回應該請求之接收,決定該區塊是否在該第一節點內或是其他節點內被快取以及該區塊是否被修改;假如該存取是讀取存取的話,提供最新修改共享記憶體區塊;以及假如該存取是寫入存取的話,使被快取之該記憶體區塊的位置更新或失效;以及該第二節點係用以:一致地發出一請求,以存取在該第一節點中之共享記憶 體區塊;以及假如將該區塊被傳送到該局部儲存的話,非一致地在該區塊進行操作。
  11. 如申請專利範圍第10項之系統,其中為了存取在該共享記憶體區塊,該第二節點係進一步用以產生一信號,以指出該區塊是否被傳送到該快取記憶體或該局部儲存,而該第一節點進一步用以依據該信號來傳送該區塊。
  12. 如申請專利範圍第11項之系統,其中假如該區塊被傳送到在該第二節點中之快取記憶體的話,該第一節點進一步用以進入在該節點目錄中的該區塊位址與該快取記憶體的位置。
  13. 如申請專利範圍第10項之系統,其中為了提供最新修改的記憶體區塊之副本,該第一節點用以:決定一修改之區塊副本是否在該第一節點中被快取;決定一修改之區塊副本是否在該系統中任一其他節點被快取;以及假如一修改副本存在的話,將最新修改的該區塊副本傳送到該第二節點。
  14. 如申請專利範圍第13項之系統,其中為了決定一修改之區 塊副本是否在該第一節點中被快取,在該第一節點中的快取用以:窺探與該請求連結之該區塊的位址,以決定該區塊是否在該第一節點內被快取;以及假如該區塊被快取的話,決定該區塊是否被修改。
  15. 如申請專利範圍第13項之系統,其中為了決定一修改之區塊副本是否在該系統中任一其他節點被快取,該第一節點用以:檢查該節點目錄,以決定該區塊是否在任一其他節點被快取;假如該區塊在任一其他節點上被快取的話,且假如該區塊被該其他節點修改,則從該其他節點取回該區塊。
  16. 如申請專利範圍第10項之系統,其中為了因應該寫入存取而將該區塊被快取的位置更新或失效,該第一節點係用以:決定該區塊是否在該第一節點被快取;以及決定該區塊是否在該系統中的任一其他節點被快取。
  17. 如申請專利範圍第16項之系統,其中為了決定該區塊是否在該第一節點被快取,在該第一節點中的快取被用以窺探該寫入存取。
  18. 如申請專利範圍第16項之系統,其中為了決定該區塊是否在該系統中的任一其他節點被快取,該第一節點被用以檢查該節點目錄。
  19. 如申請專利範圍第10項之系統,其中該第一節點係進一步被用以:因應決定該區塊在一第三節點上被快取與修改,將該區塊的位址與該第二節點相關的一個數目傳送到該第三節點;以及該第三節點係被用以將該區塊傳送到該第二節點。
  20. 如申請專利範圍第19項之系統,其中該第一節點係被用以檢查該節點目錄,以決定該區塊是否在該第三節點上被快取與該區塊是否被修改。
TW096107836A 2006-03-23 2007-03-07 加速器之低成本快取一致 TWI432963B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/388,013 US7814279B2 (en) 2006-03-23 2006-03-23 Low-cost cache coherency for accelerators

Publications (2)

Publication Number Publication Date
TW200821832A TW200821832A (en) 2008-05-16
TWI432963B true TWI432963B (zh) 2014-04-01

Family

ID=38534940

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096107836A TWI432963B (zh) 2006-03-23 2007-03-07 加速器之低成本快取一致

Country Status (4)

Country Link
US (2) US7814279B2 (zh)
JP (2) JP5153172B2 (zh)
CN (1) CN100495361C (zh)
TW (1) TWI432963B (zh)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US9710384B2 (en) * 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US7925836B2 (en) * 2008-01-25 2011-04-12 Arm Limited Selective coherency control
US9035959B2 (en) * 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US20100115233A1 (en) * 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8205066B2 (en) * 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US8151061B2 (en) * 2009-03-10 2012-04-03 Intel Corporation Ensuring coherence between graphics and display domains
CN101853149A (zh) * 2009-03-31 2010-10-06 张力 多核系统中单生产者/单消费者队列的处理方法及装置
GB2470589A (en) * 2009-05-29 2010-12-01 Vestas Wind Sys As Branching spar wind turbine blade
US8615637B2 (en) * 2009-09-10 2013-12-24 Advanced Micro Devices, Inc. Systems and methods for processing memory requests in a multi-processor system using a probe engine
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
CN102207919A (zh) 2010-03-30 2011-10-05 国际商业机器公司 加速数据传输的处理单元、芯片、计算设备和方法
US9128849B2 (en) * 2010-04-13 2015-09-08 Apple Inc. Coherent memory scheme for heterogeneous processors
US8745329B2 (en) * 2011-01-20 2014-06-03 Google Inc. Storing data across a plurality of storage nodes
US20120233410A1 (en) * 2011-03-13 2012-09-13 National Tsing Hua University Shared-Variable-Based (SVB) Synchronization Approach for Multi-Core Simulation
GB2489278B (en) * 2011-03-24 2019-12-25 Advanced Risc Mach Ltd Improving the scheduling of tasks to be performed by a non-coherent device
CN104321750B (zh) * 2012-04-25 2019-03-08 英特尔公司 在共享存储器编程中保持释放一致性的方法和系统
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
WO2014087654A1 (ja) * 2012-12-07 2014-06-12 日本電気株式会社 データ送信装置、データ送信方法、及び記録媒体
US9501408B2 (en) 2013-02-19 2016-11-22 Globalfoundries Inc. Efficient validation of coherency between processor cores and accelerators in computer systems
WO2014163612A1 (en) * 2013-04-01 2014-10-09 Hewlett-Packard Development Company, L.P. External memory controller
US11126372B2 (en) * 2013-04-01 2021-09-21 Hewlett Packard Enterprise Development Lp External memory controller
CN105556493B (zh) 2013-09-27 2018-12-11 英特尔公司 用于跨设备组合存储器资源的设备、方法
US9766916B2 (en) * 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
US9916259B1 (en) 2015-02-02 2018-03-13 Waymo Llc System and method for low latency communication
US10275853B2 (en) * 2015-04-15 2019-04-30 Intel Corporation Media hub device and cache
CN106293637B (zh) * 2015-05-28 2018-10-30 华为技术有限公司 数据移动、将数据设置为无效的方法、处理器及系统
CN107533512B (zh) * 2015-06-29 2020-07-28 华为技术有限公司 目录中表项合并的方法以及设备
CN105094840B (zh) * 2015-08-14 2019-01-29 浪潮(北京)电子信息产业有限公司 一种基于缓存一致性原理的原子操作实现方法及装置
US10450859B2 (en) * 2015-08-24 2019-10-22 Bitswave Inc. Mud pulser with vertical rotational actuator
CN106250350A (zh) * 2016-07-28 2016-12-21 浪潮(北京)电子信息产业有限公司 一种基于numa架构的页缓存读取方法及系统
US9715470B1 (en) 2016-09-26 2017-07-25 International Business Machines Corporation Direct memory access between an accelerator and a processor using a coherency adapter
GB2554442B (en) * 2016-09-28 2020-11-11 Advanced Risc Mach Ltd Apparatus and method for providing an atomic set of data accesses
US10310897B2 (en) * 2016-09-30 2019-06-04 Intel Corporation Hardware accelerators and methods for offload operations
CN108733315B (zh) 2017-04-17 2021-06-04 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机可读存储介质
CN109101439B (zh) * 2017-06-21 2024-01-09 深圳市中兴微电子技术有限公司 一种报文处理的方法及装置
JP7238262B2 (ja) * 2018-03-27 2023-03-14 日本電気株式会社 計算機、半導体装置、及び制御方法
US10846235B2 (en) * 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
US10915445B2 (en) * 2018-09-18 2021-02-09 Nvidia Corporation Coherent caching of data for high bandwidth scaling
US11409654B2 (en) * 2019-09-05 2022-08-09 Micron Technology, Inc. Intelligent optimization of caching operations in a data storage device
KR20220049978A (ko) 2020-10-15 2022-04-22 삼성전자주식회사 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법
CN112765086B (zh) * 2020-12-30 2023-09-08 北京泽石科技有限公司 固态存储中一种基于cache一致性的软硬件交互方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW469376B (en) * 1995-11-06 2001-12-21 Ibm A method and apparatus for modifying data in a multi-processor data processing system
JP2000330965A (ja) * 1999-03-17 2000-11-30 Hitachi Ltd マルチプロセッサシステム及びそのメモリアクセストランザクションの転送方法
US6457068B1 (en) * 1999-08-30 2002-09-24 Intel Corporation Graphics address relocation table (GART) stored entirely in a local memory of an expansion bridge for address translation
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US6760819B2 (en) * 2001-06-29 2004-07-06 International Business Machines Corporation Symmetric multiprocessor coherence mechanism
JP2003216597A (ja) * 2002-01-23 2003-07-31 Hitachi Ltd マルチプロセッサシステム
US7085897B2 (en) * 2003-05-12 2006-08-01 International Business Machines Corporation Memory management for a symmetric multiprocessor computer system
GB2403561A (en) * 2003-07-02 2005-01-05 Advanced Risc Mach Ltd Power control within a coherent multi-processor system
US7200689B2 (en) * 2003-07-31 2007-04-03 International Business Machines Corporation Cacheable DMA
JP4119380B2 (ja) * 2004-02-19 2008-07-16 株式会社日立製作所 マルチプロセッサシステム
EP1805627B1 (en) * 2004-10-15 2011-02-16 Sony Computer Entertainment Inc. Methods and apparatus for supporting multiple configurations in a multi-processor system
US20060179277A1 (en) * 2005-02-04 2006-08-10 Flachs Brian K System and method for instruction line buffer holding a branch target buffer

Also Published As

Publication number Publication date
JP5431525B2 (ja) 2014-03-05
JP5153172B2 (ja) 2013-02-27
JP2007257637A (ja) 2007-10-04
JP2012181860A (ja) 2012-09-20
US7814279B2 (en) 2010-10-12
US20110029738A1 (en) 2011-02-03
CN100495361C (zh) 2009-06-03
US20070226424A1 (en) 2007-09-27
CN101042679A (zh) 2007-09-26
US8103835B2 (en) 2012-01-24
TW200821832A (en) 2008-05-16

Similar Documents

Publication Publication Date Title
TWI432963B (zh) 加速器之低成本快取一致
US7657710B2 (en) Cache coherence protocol with write-only permission
US6519685B1 (en) Cache states for multiprocessor cache coherency protocols
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US5644753A (en) Fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
US6760819B2 (en) Symmetric multiprocessor coherence mechanism
US5652859A (en) Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
US20040068622A1 (en) Mechanism for resolving ambiguous invalidates in a computer system
US20050188159A1 (en) Computer system supporting both dirty-shared and non dirty-shared data processing entities
KR20000076539A (ko) 공유 인터벤션을 지원하는 비균등 메모리접근 데이터처리시스템
GB2439650A (en) Snoop filter that maintains data coherency information for caches in a multi-processor system by storing the exclusive ownership state of the data
US20020078305A1 (en) Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US7051163B2 (en) Directory structure permitting efficient write-backs in a shared memory computer system
JP2000067024A (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
JP4577729B2 (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
US7024520B2 (en) System and method enabling efficient cache line reuse in a computer system
US20070073977A1 (en) Early global observation point for a uniprocessor system
US6807608B2 (en) Multiprocessor environment supporting variable-sized coherency transactions
US7000080B2 (en) Channel-based late race resolution mechanism for a computer system
US20080082756A1 (en) Mechanisms and methods of using self-reconciled data to reduce cache coherence overhead in multiprocessor systems
US6944721B2 (en) Asynchronous non-blocking snoop invalidation
US6314496B1 (en) Method and apparatus for developing multiprocessor cache control protocols using atomic probe commands and system data control response commands
JPH08106417A (ja) メモリアクセス方法及びメモリ共有システム

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees