TW200816001A - System and method for garbage collection in heterogeneous multiprocessor systems - Google Patents

System and method for garbage collection in heterogeneous multiprocessor systems Download PDF

Info

Publication number
TW200816001A
TW200816001A TW096113386A TW96113386A TW200816001A TW 200816001 A TW200816001 A TW 200816001A TW 096113386 A TW096113386 A TW 096113386A TW 96113386 A TW96113386 A TW 96113386A TW 200816001 A TW200816001 A TW 200816001A
Authority
TW
Taiwan
Prior art keywords
memory
global
tag
mark
stack
Prior art date
Application number
TW096113386A
Other languages
English (en)
Inventor
Michael K Gschwind
John Kevin Patrick O'brien
Kathryn M O'brien
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 TW200816001A publication Critical patent/TW200816001A/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Description

200816001 九、發明說明: 【發明所屬之技術領域】 本申請案一般有關改良的資料處理系統與方 法。更明確地說,本申請案係針對在異質多處理器 系統中進行垃圾收集的系統與方法。 【先前技術】 在電腦程式執行時,電腦程式配置貢料緩衝區 的記憶體。在電腦程式繼續配置此記憶體時,電腦 程式最後可能超出實體記憶體容量。在此情況下, 為了繼續執行,作業系統必須將程式部分放在虛擬 記憶體(即磁碟)上’而這將使電腦程式的執行變 慢。在常式不再需要該記憶體部分之後對記憶體進 行手動解除配置,是程式設計師經常忘了做或做得 不好的繁複工作。 於是發展垃圾收集作為對記憶體進行手動解除 配置的替代方法。垃圾收集是使用軟體常式搜尋記 憶體之閒置資料及指令的區域,以回收一般記憶體 集區的空間,即堆積。垃圾收集器基本上藉由以下 方式來運作:決定在程式未來執行中不會存取程式 中哪個資料物件,及回收這些物件使用的儲存器。 垃圾收集使記憶體的釋放自動化,因此程式設 6 200816001 計師對於釋放不再需要的物件不必再操心。因此, 可以省下程式設計在此方面的許多精力。此外,由 於減少若干類別的執行時間錯誤(如,使用解除配置 物件之參照的不定指標錯誤),垃圾收集有助於使程 式設計語言更安全。 許多稱為「垃圾收集語言」的電腦程式設計語 言現在也需要垃圾收集作為語言規格(如,Java、 C#、及大多數的指令碼語言)的部分或實際上用於實 務的建置(如,像lambda calculus(X演算)的正式語 言)。其他電腦程式設計語言係設計用於搭配手動記 憶體管理使用,但具有垃圾收集建置(如,C、C++)。 其他電腦程式設計語言,如Modula-3,藉由使用收 集及手動管理之物件的個別堆積,允許垃圾收集及 手動記憶體管理二者共存於相同的應用程式中。 追查垃圾收集器是最常見的垃圾收集器類型。 追查垃圾收集器的重點在於決定可達到、或潛在可 達到的哪些物件,然後丟棄所有剩餘物件。可達到 物件的定義為:在直接或透過其他可達到物件之參 照引向物件的程式環境中,存在某個名稱的物件。 更精確地說,物件只能以兩種方式成為可達到。第 一,假設經區別的物件集為可達到,這些物件已知 為「根」。一般而言,這些物件包括自呼叫堆叠中任 200816001 何地方所參照的所有物件,即目前正被叫用之函數 中的所有區域變數及參數及任何全域變數。第二, 自可達到物件所參照的任何物件本身為可達到。這 稱為「傳遞性」。 追查垃圾收集器使用收集器在其中實行垃圾收 集循環的演算法。垃圾收集循環始於收集器決定或 被告知收集器必須回收儲存器時,這尤其發生於系 Ο 統對記憶體的運作不足時。所有追查垃圾收集器均 對三色標記抽象化建置某種轉化,但簡單的收集 器,如標記及清掃收集器,通常並不會讓此抽象化 變得明確。三色標記的運作如下。 第一,建立將在循環期間用以維持進度的初始 白色、灰色、及黑色集。一開始,白色集或充公集, 是使其記憶體再利用之候選物件的物件集。黑色集 ij 是很容易即可證明在白色集中沒有物件參照的物件 集。在許多建置中,黑色集一開始即已清空。灰色 集是在白色集中有物件參照或沒有物件參照的所有 剩餘物件。這些集分割記憶體,使得系統中的每一 個物件,包括根集,均精確地在一集合中。 其後,選擇灰色集中的物件。藉由使灰色物件 直接參照的所有白色物件「變成灰色」,亦即,使物 8 200816001 件參照的所有白色物件及白色物件所參照的物件變 成黑色,使此灰色物件變成黑色,即將其移到黑色 集。重複此步驟直到灰色集清空。當灰色集中沒有 任何物件時,則證明留在白色集中的所有物件為不 可達到,因而可以回收為其所佔用的儲存器。 使用三色標記演算法,沒有任何黑色物件直接 指向白色物件。此確保一旦清空灰色集後,即可安 全地破壞白色物件。 在決定不可達到集(即清空灰色集時所產生的 白色集)後,垃圾收集器只要釋放不可達到物件並保 持每個物件原來的樣子即可。或者,垃圾收集器可 將一些或所有可達到物件複製於記憶體的新區域 中,視需要更新這些物件的所有參照。這些垃圾收 集器分別稱為「非移動」及「移動」垃圾收集器。 亦可藉由考慮在收集循環期間維持三個物件集 (白色、灰色、及黑色)的方式,對追查收集器進行 分類。最直截了當的方法是半空間收集器,這是一 種移動垃圾收集方案,其中將記憶體分割為「所來 空間」及「所去空間」。一開始,將物件配置於「所 去空間」,直到「所去空間」已滿,因而觸發垃圾收 集循環。在垃圾收集開始時,「所去空間」變成「所 9 200816001 來空間 且 根集的可達二『工:將來 依次掃描這些物件,並將這i二指去 已複製於「所去:,間」,直到所有可達到物件均 上二ΪΓΓ置新物件,直到「所去空心 Ο
但因為提議在複製 二;二也點如下:在每-個收集々中 吊大的空閒記憶體相連區域。 物件,t::「標記广清掃」垃圾收集器對於每-::,物件是白色或黑色的-個或兩 苴他:- $,則或是維持為獨立清單,或是使用 二70來識別。隨著在&集循環期間橫越參昭 ::由收集器控管這些位元以反映目前狀態,即: 二色、或灰色。標記及清掃策略的優點在於, 旦决疋不了達到集,即在清空灰色集之後的白色 市,即可繼續進行移動或非移動的收集策略。甚至 /、要可用㊉憶體准許,即可在執行時間做出此 選擇。 在垃圾收集ϋ的-些建置中,標記及清掃垃圾 收集器使用明確的堆疊來儲存已知為可達到的物 200816001 件,但其内容尚未接受檢查(即「灰色」物件)。堆 疊中的每一項目含有基底位址及標記描述符,以指 示可能指標相對於起始位址的位置。標記描述符通 常採取以下形式:或是簡單的長度規格,或是描述 指標位置的位元向量。 除了上述的内容以外,關於垃圾收集器如何中 斷垃圾收集器在其中操作之系統其他操作的方式, f' 垃圾收集器亦可屬於不同的類型。例如, 「stop-the-world(全部停止)」垃圾收集器完全停止 程式運行收集循環的執行,因此保證新物件不會受 到配置,及物件不會在收集器運行時突然變成不可 達到。此具有明顯缺點如下:程式在收集循環正運 行時無法實行有用的運作。 「遞增」垃圾收集器經設計可藉由交錯其運作 〇 與主程式的活動來減少此中斷。必須小心地進行設 計,以確保主程式不會干擾垃圾收集器,且垃圾收 集器不會干擾主程式。例如,當程式需要配置新物 件時,執行時間系統可能必須予以暫停直到收集循 環完成,或以某種方式通知垃圾收集器存在新的可 達到物件。 最後,同時進行的垃圾收集器可即時與對稱多 200816001 重處理機器上的主程式同時運行。為保證正確性, 可能需要複雜的鎖定體制。此外,快取問題也讓此 變得沒有助益。然而,具高效能需求的SMP應用程 式可能需要同時進行的GC。 已針對具有處理器一致性的資料處理環境,如 單一處理器或對稱多重處理(SMP)系統,發展上述 „ 垃圾收集機制。在嘗試將此類垃圾收集機制應用於 ( 非一致的資料處理系統(即異質系統,如非SMP共 處理器系統、軟體管理的記憶體系統、非一致的記 憶體存取(NUMA)系統、及類似系統)時,可能會有 若干問題。位址格式問題、位址轉譯問題、實行垃 圾收集以確保記憶體位置指標不會變更時、不一致 的記憶體潛時、及類似問題只是異質系統所造成的 幾個問題。 〇 【發明内容】 各解說性具體實施例提供在異質系統中實行垃 圾收集的系統與方法。在一些解說性具體實施例 中,在異質多處理器系統中的複數個處理器上分配 垃圾收集操作。在其他解說性具體實施例中,可由 異質多處理器系統中的單一處理器實行垃圾收集操 作。對於此單一垃圾收集處理器具體實施例,垃圾 收集處理器可專用於只實行垃圾收集,或實行除了 12 200816001 其他服務工作以外的垃坡收集。 以在複數減理ϋ各處分配垃圾收集的 具體實施例為例’每一處理器獲得系統記憶體的 佇列的一部分,然後將龙 丨刀)及王域榡記 Γ 的區域存玫區中。因此:々!人该處理器相關聯 :記佇列之不同 均:有:全域 之標項的部分、及處理;;上:是全域標記仵列 之對應不同部分的複制作之系統記憶體 中參照的記憒,物侏:。將在全域標記佇列之部分 記堆疊=σ入含有指標或位址的區域样 憶塊的“:::儲存於區域存放區之記憶體之‘ 器次記憶塊上,由其相應處理 供區域標記堆疊處理器中提 憶體物件,實行始内容)之對應部分的系統記 作。如η 貝 不舌己及清掃(mark and sweep) · ρ =熟此技藝者所知的,此類^ 頁關反覆地橫舳廿 人π神」 的參照,万古sa挪4 ~他記憶體物件對記憶體物件 件。 有記為可達到的所有這些記情體物 當某 次只在系⑼憶體的—記憶塊上操作時, 13 200816001 通常此橫越造成記憶體物件參照不在所操作之系統 »己fe體的§己fe塊之内。除了可達到及非可達到記憶 體物件的參照之外,還必須追蹤此類參照。°心 Γ ϋ 為了追蹤各種類型的記憶體物件,實施例中的 區域垃圾收集操作將利用區域標記堆疊及非區域標 記堆疊二者。區域標記堆疊儲存以下記憶體物件的 指標或位址:在載入處理器區域存放區的系統記憶 體記憶塊之内&記憶體物j牛。非區域標記堆疊儲存 以下記憶體物件的指標或位址:為軟體程式(如其他 記憶體物件)所參照,但不在载人區域存放區的系統 記憶體目前記憶塊之内的記憶體物件。 一開始,使用全域標記佇列的部分埴入 (populate)區域標記堆疊,其含有存在於載入區域存 放區之系統記憶體記憶塊的記憶體物件指標。由於 對區域標記堆疊中之記憶體物件的指標實行「栌艽 及清掃」操作,可能會遇到不存在於載人區域^放 區之系統記憶體記憶塊之其他記憶體物件的盆他指 標。在遇到此種指標時,#此指標加入非區域標記 堆疊。在記憶體物件的標記描述符或系統記憶&記 憶塊的標W符巾,把發現在區域存放區之系統 記憶體記憶塊中為可達到的記憶體物件桿 到。在區域標記堆4中’對每-指標或位址繼續此 14 200816001 程序。 Ο u 在對全域標記彳宁列用以填入區域標記堆疊之部 分的芩照實行標記之後,基於系統記憶體在區域存 放區中的對應§己憶塊,在標記描述符中將參照或指 標標記為可達到或不可達到,或在參照係針對不^ 系統記憶體記憶塊之内的記憶體物件時,將參照或 指標置於第二標記堆疊。 例如,可藉由使用已知為可達到但其内容尚未 接受檢查之儲存物件(即Γ灰色」物件)的明確堆疊, f記憶體物件指標置於區域及非區域標記堆疊Γ堆 疊中的每一項目含有基底位址及偏移,以指示可 指標相對於起始位址的位置。 乂 土疋使用位元映射或其他與記憶體物件、 統記憶體、或更明確地說與线記憶體每—頁面相 關聯的適當描述符表格,將有關在標記婦 :間已達到之記憶體物件的資訊儲存於標記描= (jmptor)中’以指示記憶體物件的可達到性。在 例中,例如’可使用在記憶體物件駐留之記 面的頁面描述符中與記憶體物件相關聯的適 200816001 八在操作期間,參照於處理器之全域標記佇列部 二的a己憶體物件一開始係置於區域標記堆疊中。然 後,使用標記及清掃操作檢查區域標記堆疊中的項 目決定在載入該處理器區域存放區之系統記憶 體§己憶塊中的這些記憶體物件的可達到性。如同已 知的標記及清掃操作,同樣檢查與這些記憶體物件 相關%的芩照,以決定與可達到之原始記憶體物件 〇 相關聯的其他記憶體物件。對於實施例,重複此程 序直到遇到沒有其他相關聯之記憶體物件的記憶體 物件或直到遇到不在載入區域存放區之系統記憶 體1憶塊中的記憶體物件參照,以下將此記憶體物 件稱為「非區域」記憶體物件。在後者的情況中, ,「非區域」記憶體物件的參照加入非區域標記堆 豐,且在對應的標記描述符中,不將其標記為可達 到。 ’ 在處理器檢查全域標記佇列用以填入區域標記 堆疊之部分中的所有系統記憶體物件後,及因此在 以上述方式檢查其相關聯的記憶體物件後,全域標 δ己仔列部分中未標記為可達到的系統記憶體物件 (如果有的話),係為使其記憶體部分回收之候選系 統記憶體物件的系統記憶體物件。然而,此時無法 回收此系統記憶體,因為在全域標記佇列的其他部 分中,對於這些來自系統記憶體物件的物件可能有 16 200816001 其他參照,而異質多處理器系統的其他處理器,根 據特定具體實施例而定,可能會處理或不會處理這 些參照。經表示為可達到的記憶體物件為其系統記 憶體無法回收的物件。將關於這些記憶體物件的資 訊合併回全域標記描述符資料結構,該結構概述系 統記憶體中儲存之所有記憶體物件的可達到性。 其參照為區域標記堆疊或非區域標記堆疊之部 分的物件為「灰色」記憶體物件,即,為可達到但 尚未針對其所能達到的其他物件進行分析的物件。 為完成垃圾收集,必須清空「灰色」物件集,即, 在任何處理元件的任何區域或非區域標記堆疊上或 全域標記佇列中,未留下任何位址。要實現此,理 想上分析區域標記堆疊中的所有參照,直到區域標 記堆疊清空且將非區域標記堆疊合併回全域標記堆 疊。 非區域堆疊中之記憶體物件的參照係與以下項 目合併:全域標記佇列中仍然需要待查的部分及其 他處理器的其他非區域標記堆疊,藉此產生全域標 記佇列之更新的「待查」部分。結果,利用相同或 不同的處理器,以系統記憶體的其他記憶塊重新檢 查不在系統記憶體記憶塊之區域存放區複製中的記 憶體物件參照。重複此程序直到全域標記佇列之更 17 200816001 新的「待查」部分沒有系統記憶體物件的參照。 當全域標記佇列之更新的「待查」部分中沒有 系統記憶體物件的更多參照,將系統記憶體物件的 每一參照標記為可達到或不可達到。在全域標記佇 f、
列之不可達到」的部分中,這些對系統記憶體物 件的參照係與其系統記憶體為可回收(reclaim)的系 統記憶體物件相關聯。與所有其他系統記憶體物件 相關聯的系統記憶體可由軟體程式達到,因此無法 ,收。然後實行回收程序以回收與全域標記堆疊之 「已查」部分中之系統記憶體物件相關聯的系統記 憶體。此回收程序一般為本技術中已知。 ^ 7 貝 1 J T,提供你夕爽埋器貢料處理 糸統中在共用記憶體上實行垃圾收集操作的方法。 該方法包含在多處理器資料處理系統的處理哭中, ΐ入共用記憶體部分之全域標記件列的部 :體::::給處理器之全域標記仵魏^ ’勿件n可在共用記憶體部分 作’猎此識別其相關聯之記憶體無法回收作二: 收集操作部分的可達到^為垃圾 包含在;違 L體物件。该方法進一步 記情^間識別不在指派給處理器之共用 己丨心組邛刀中的記憶體物件參照,以進— 為垃圾收集操作的部分。全域標㈣ ^ 18 200816001 少於全域標記佇列的整個部分。共用記憶體中對應 於全域標記佇列部分的部分可以少於共用記憶體的 整個部分。 載入對應於共用記憶體部分之全域標記佇列的 部分包含一開始基於全域標記佇列部分中的記憶體 物件參照填入區域標記堆疊。可將共用記憶體中對 應於全域標記佇列部分的部分載入處理器的區域存 ' 放區。多處理器資料處理系統之複數個處理器中的 每一處理器可載入全域標記佇列的不同部分及共用 記憶體之對應的不同部分,並可基於全域標記佇列 不同部分中的記憶體物件參照,在共用記憶體的不 同部分上實行標記操作。 基於記憶體物件參照在共用記憶體部分上實行 標記操作包含追查全域標記佇列部分中的記憶體物 Ο 件參照及相依記憶體物件的參照,直到識別不在共 用記憶體部分之内的記憶體物件參照。可將在共用 記憶體部分中的記憶體物件參照儲存於區域標記堆 疊中。可將不在共用記憶體部分之内的記憶體物件 參照儲存於非區域標記堆疊中。 該方法進一步包含合併與區域標記堆疊相關聯 的區域標記描述符資料結構及全域標記描述符資料 19 200816001 結構。該方法亦包含合併非區域標記堆疊及全域標 記佇列的「待查」部分。全域標記佇列的「待查」 部分含有藉由實行標記操作來處理的記憶體物件參 照。區域標記描述符資料結構針對其參照在區域標 記堆疊中的記憶體物件含有可達到性資訊。全域標 記描述符貧料結構在多處理為貢料處理糸統之處理 器的區域標記堆疊中,包含經識別為在共用記憶體 部分中之記憶體物件的所有參照。 多處理器資料處理系統可以是包含控制處理器 及至少一共處理器的異質多處理器資料處理系統。 控制處理器及至少一共處理器可使用不同指令集來 操作。可以利用至少一共處理器的一或多個實行載 入全域標記佇列部分、實行標記操作、及識別不在 共用記憶體部分之内的記憶體物件參照。可以利用 至少一共處理器之一或多個的記憶體流控制器實行 載入、實行、及識別操作。 在其他解說性具體實施例中,提供一種電腦程 式產品,其包含具有電腦可讀程式的電腦可用媒 體。電腦可讀程式在執行於計算裝置上時,將使計 算裝置實行上文有關本方法解說性具體實施例所概 述之操作的各種操作及操作組合。 20 200816001 在又另一解說性具體實施例中,提供一種實行 垃圾收集的系統。該系統包含複數個處理器,每一 處理器具有相關聯的區域存放區及耦合至該複數個 處理器的共用記憶體。該複數個處理器中的一或多 個處理器可實行上文有關本方法解說性具體實施例 所概述之操作的各種操作及操作組合。 ^ 以上及其他特色及優點將在以下對解說性具體 〇 實施例的詳細說明中描述,一般技術者參考以下詳 細說明將明白以上及其他特色及優點。 【實施方式】 各解說性具體實施例提供在異質系統中實行垃 圾收集的系統與方法。可在其中必須實行垃圾收集 的任何異質多處理器系統中建置解說性具體實施例 的機制。此異質多處理器系統的範例包括NUMA系 C 統、非SMP多處理器系統、及類似系統。可在其中 建置解說性具體實施例之示範性方面的一種此異質 多處理器系統是可購自紐約州艾蒙克之IBM的單元 寬頻引擎(Cell Broadband Engine,CBE)。雖然解說 性具體實施例將就建置於CBE架構中的機制進行 說明,但應明白,這僅是示範性的,且在不脫離本 發明之精神與範疇的情況下,亦可在其他異質多處 理器系統中建置解說性具體實施例的機制。 21 200816001 圖1為其中可建置本發明各方面之資料處理系 統的示範性方塊圖。圖1所示示範性資料處理系統 為單元寬頻引擎(CBE)資料處理系統的範例。雖然將 在本發明較佳具體實施例的說明中使用CBE,但如 一般技術者在研究以下說明後所輕易暸解的,本發 明並不僅限於此。 如圖1所示,CBE 100包括:Power處理器元 件(PPE)llO,其具有處理器(PPU)116及其L1快取 112及L2快取114 ;及多個協同(synergistic)處理器 元件(SPE),其各具有其自己的協同處理器單元 (SPU)140-154、記憶體流控制155-162、區域記憶體 或區域存放區(LS)163-170 ;及匯流排介面單元 (BIU)180-194,其可為例如直接記憶體存取 (DMA)、記憶體管理單元(MMU)、及匯流排介面單 元的組合。另外亦提供高頻寬内部元件互連匯流排 (EIB)196、匯流排介面控制器(BIC)197、及記憶體 介面控制器(MIC)198。 CBE 100可以是晶片上系統,致使可在單一微 處理器晶片上提供圖1所繪元件。此外,CBE 100 是異質處理環境,其中每一 SPU自系統中其他SPU 的每一者接收不同的指令。此外,SPU的指令集和 22 200816001 PPU的指令集不同,如,PPU執行基於精簡指令集 電腦(RISC)的指令,而SPU執行SIMD向量指令。 SPE彼此搞合並經由EIB 196 |禺合至L2快取 114。此外,SPE經由EIB 196耦合至MIC 198及 BIC 197。MIC 198提供至共用記憶體199的通信介 面。BIC 197提供CBE 100及其他外部匯流排與裝 置之間的通信介面。
C PPE 110是雙執行緒PPE 110。此雙執行緒ppE 110及八個SPE的組合使CBE 100能夠處理10個同 時的執行緒及超過128個重要的記憶體請求。ppe 110用作其他八個SPE的控制器,以處理大多數的 計算工作負載。可使用PPE 110運行傳統的作業系 統,而SPE則實行如向量化浮點碼執行。 〇 SPE包含協同處理單元(SPU)140-154、記憶體 流控制單元155-162、區域記憶體或區域存放區 163-170、及介面單元18〇_194。在一實施例中,區 域記憶體或區域存放區163_ι7〇包含256 KB指令及 對PPE 110為可見及可由軟體直接定址的資料記憶 體。 PPE 110可以小型程式或執行緒載入SpE,將 23 200816001 SPE串聯一起以處理複雜操作令的— 如,你、1 V —步驟。你ί
如,併~ 1 — DVD、 在每個 束。在 效能, 記憶體流控制單元(MFC)155-162用作SPU與 系統其餘部分及其他元件的介面。MFC 155_162提 供主儲存器及區域儲存器163-170間資料傳送、保 護、及同步的主要機制。邏輯上,在處理器中的每 SPU存在一個]yjFC。一些建置可共用多個SPXJ 間單一 MFC的資源。在此情況下,對於每一 SPU, 定義用於MFC的所有設施及命令必須顯現獨立於 軟體之外。共用MFC的效果限於與建置相依的設施 及命令。 圖2根據本發明一示範性具體實施例,為典型 記憶體流控制(MFC)單元200的示範性方塊圖。在 此實施例中,MFC 200具有:兩個至SPU的介面21〇 及212、至匯流排介面單元(BIU)220的兩個介面214 及216、及至可選SL1快取230的兩個介面222及 224。SPU介面210及212為SPU通道介面210及 SPU區域儲存器介面212。SPU通道介面210允許 24 200816001 SPU存取MFC設施及發出MFC命令。SPU區域儲 存器介面212由MFC 200用以存取SPU中的區域儲 存裔。BIU 220的一個介面216允許對MFC設施的 記憶體映射I/〇(MMIO)存取。此介面216亦允許其 他處理器發出MFC命令。使用MMIO發出的命^ 稱為「MFC代理命令」。
SL1快取的介面222及224主要用於資料傳 送。一個介面222由MFC 200用以存取主儲存器中 =位址轉譯表,及另一個介面224用以傳送主儲存 裔及區域儲存器間的資料。 如K 2所示’典型M F c中的主單元包括:記情 虹映射輸入/輸出(MMI0)介面24〇、mfc靳 250、及DMA控制器26〇。_介面24〇 : j FC设施映射為系、统的真實位址空間。此允 夕手卜統中的任何處理器或任何裝置存取蒙施 外’可組態ΜΜΙΟ介面24〇 此 映射為真實位址空間允=Ρ υ :區域儲存器 哭或住钿狀罢允卉攸糸統中的任何處理 區域存放:對區存器’因而能夠進行 夠直接存取的區域儲存t域並使1/0裝置能 峨暫存器單元25。含有大多數的mfc設 25 200816001 施。對於本發明尤其重要的是,MFc 包括SPU區域儲存器 -早凡250 施,緙搵描服从从 日廿叩。使用此設 方L侍根限的軟體可對SPE之區域 0又下限制,其詳細說明如下。 在MFC 200内,資料的同步與傳送一般是 =AC 26G的責任。DMAC⑽可在spu的區域儲
存為、及主儲存器區之間移動資料。視情況,可在SL1 快取中快取資料。 SPE及PPE透過命令佇列270及280之一,藉 由在^MFC中將DMA命令請求排入佇列,指示mfc 200貫行這些DMA操作。SPE發出的命令在MFC SPU命令佇列270中被排入佇列。PPE發出的命令 在MFC代理命令佇列280中被排入佇列。mFC使 用記憶體映射單元(MMU)290實行DMA傳送所需 〇 的所有MFC位址轉譯及MFC存取保護檢查。 MFC命令提供主要方法讓在spu中執行的程 式碼存取主儲存器及維持與系統中其他處理器及裝 置的同步。亦提供命令以管理可選快取。MFC命令 可由運行於SPU上的程式碼發出,或由運行於另一 處理器或裝置(如PPE)上的程式碼發出。運行於相 關聯之SPU的程式碼執行一連串通道指令,以發出 26 200816001 MFC命令。運;^一 行-連串記^其他處理11或裝置上的程式碼實 出MFC命Γ峽射I/〇(MMI〇)傳送,以對SPE發 之-被排二;烈發出的命令在命令佇列270及280 一般而言, 〇
V MMIO暫存器或可使用MFC暫存器單元250的 令,將命令排透過相關聯之SPU執行的通道指 控制主儲存器及^。預計MMI0方法由ppe用以 的資料傳送。傳〜表SPE之相關聯的區域儲存器間 命令」。永遠以迗資料的MFC命令稱為「MFCDMA 的資料傳# y E的觀點來提出MFC DMA命令 錯存器!ίί:;因此’可將傳送資料至卿主 自SPE(從區的命令視》「取得命令」而將 視為「置放命令子°°至主儲存盗)傳送資料的命令 命令=ir=!「MFcDMA命令」。這些 DMA傳送、Γ每域及主儲存器領域間的 傳送並可維持及處理多;細驅 DMA資料傳送命令請求有關母一說 及有效位址(EA)二者。區域^子錄址(LSA) 址其相關聯之S P U的區域儲存;*址僅能直接定 —般的應用是其可參照主儲fDr區。有效位址較為 省存為’包括所有SPU區 27 200816001 域儲存器區(在這些SPU區域儲存器區轉化成真實 位址空間時)。 實施例提供在異質多處理器系統中實行垃圾收 集操作的機制,如上述的單元寬頻引擎(CBE)。以 CBE作為其中可利用解說性具體實施例機制之其他 異質多處理器系統的示範性例子,可在每一 SPE中 提供垃圾收集機制,以實行實施例的垃圾收集操 Γ、 作,其說明如下。例如,垃圾收集機制可包含與SPE 之記憶體流控制器(M F C)整合的硬體及/或軟體元 件。此外,可為ΡΡΕ 110提供類似機制以實行垃圾 收集。
在一實施例中,在複數個處理器(如異質多處理 器系統(如,CBE 100)中的 SPE 120-134 及 ΡΡΕ 110) 上分配垃圾收集操作。在其他解說性具體實施例 U 中,可由異質多處理器系統中的單一處理器,如SPE 134,實行垃圾收集操作。對於此單一垃圾收集處理 器具體實施例,垃圾收集處理器,如SPE 134,可 專用於僅實行垃圾收集,或實行除了其他服務工作 以外的垃圾收集。 請注意,在以下對實施例的說明中,將引用可 交換使用的「系統記憶體」及「共用記憶體」。預計 28 200816001 此類引用是指έ 、 定程式之掩▲’、、先圮憶體或共用記憶體用作所論特 内運行有^的部分。因此’在異f多處理器系統 統記情夕不同的程式,這些程式利用共用或系 堆積Γ因,且對記憶體的動態配置各具有其自己的 闕=三,本文說明的垃圾收集係針對配置給相 "n式的系統記憶體或共用記憶體來實行。 Ο 以其中在複數個SPE120_134上分配垃 2_為例’在—實施例中’PPE110可指示‘ 二:1:圾收集,以回收共用記憶體199配置給記憶 體物件(以下稱為「系統記憶體物件」)的部分,運 Z異質處理器系統中之程式已不再參照該記憶體 。在替代的解說性具體實施例中,SPE 120-134 基於預定準則,如,共用記憶體199中的可用空間 數里低於臨限值,獨立決定需要垃圾收集,並可自 仃啟始垃圾收集操作。在此替代的具體實施例中, 偵測垃圾收集之需求的SPE 120-134可將此需求傳 達給另一個 SPE 120-134 及 PPE 110。 回應 PPE 110 或 SPE 120_134 的指令,spE 120-134產生用以實行說明如下之垃圾收集操作的 收集執行緒。如在「stop-the-world」類型的垃圾收 集中,SPE 120-134及可能PPE 110停止其對其他執 行緒的執行,然後執行所產生的收集執行緒,以實 29 200816001 行垃圾收集。 作為垃圾收集的部分,PPE 110針對運行的程 式,產生在共用記憶體199中含有記憶體物件參照 的全域標記佇列。此類全域標記佇列的產生一般在 本技術中為已知,因此在此不予詳細說明。例如, 全域標記佇列的產生及全域標記佇列與平行垃圾收 集的使用一般說明於Boehm的「Fast Multiprocessor Memory Allocation and Garbage Collection(快速多 處理器記憶體配置及垃圾收集)」,HP Labs Technical Report 2000-165,HP公司,2000年,其在此以引 用方式併入。 例如,可利用記憶體頁面來組織全域標記仔 列,致使儲存於相同記憶體頁面上的系統記憶體物 件參照在全域標記佇列中表示為相鄰項目。依此方 〇 式,全域標記佇列的部分很容易與共用記憶體199 的部分相關聯。 每一 SPE 120-134的收集執行緒獲得共用記憶 體199的記憶塊及全域標記佇列的對應部分,並將 其儲存在與SPE 120-134相關聯的區域存放區 163-170中。因此,每一 SPE 120-134均具有全域標 記佇列不同部分的複製及其操作之共用記憶體199 30 200816001 ι對應不同記憶塊的複製。在此說明 旦 ^ 憶體的「記憶塊」是所運作的記憶體區:!、在二己 佳具體實施例中,此區域相鄰及共㈣位^ ^ 他具體實施例中,記憶體的「記憶塊」 用記憶請中多個邏輯上或以其 相☆ 料部分組成。 飞相闕的貝 Γ 逆仃於母 ^ 120_134上的收集執行绪美於 標湖之對應部分中的系統記憶二物 件,在共用記憶體199之其相應記憶塊的每—者上 實行「標記及清掃」操作。全域標記件列由spE =o-m擷取的部分對於彻「標記及清掃」操作檢 二的系,記憶體物件’具有來自程式的參照(即指 標)。就是這些參照及其對相依記憶體物件的參,昭, 在「標記及清掃」操作期間受到追查,藉此識別相 關程式可達到及不可達到的記憶體物件。 芩照或指標利用共用記憶體位址空間,因而必 須經轉譯為SPE 12〇_134的區域存放區位址空間, 因為共用記憶體199正被檢查的記憶塊現在駐留於 與SPE 120-134相關聯的區域存放區163_17〇之 内。此類位址轉譯有關如採用共用記憶體199位 址、減去記憶塊被傳送至區域存放區的基底位址、 及加上區域存放區偏移。此位址轉譯提供全域位址 31 200816001 空間指標在全域標記佇列部分中參照之相同系統記 憶體物件的區域存放區位址。一般技術者應明白, 在不脫離本發明之精神與範傳的情況下,可搭配解 說性具體實施例使用其他在位址空間之間轉譯的方 式。 Ο 、在收集執行緒實行Γ標記及清掃」操作期間, 全域彳* S己符列部分所參照的初始記憶體物件將存在 於共用記憶體199载入對應區域存放區163_17〇的 記憶塊中。然而,共用記憶體199的記憶塊在全域 標記佇列的部分中,可含有其他不受指標參照的記 憶體物件,因此在不受其指標在全域標記佇列其他 部分中的記憶體物件參照時,或不受其指標在全域 標記佇列其他部分中的其他記憶體物件參照時, 為「不可達到」。 此外,在「標記及清掃」操作期間,可能 其他不在共用記憶體199載人特定SPE之區域存放 區:170之記憶塊内的物件參照。在共用記憶體 載入區域存放區163-170的記憶塊中,必須 可達到及非可達到記憶體物件的追蹤,一起 ,在共用記憶體199其他記憶塊中的記憶體物件參 i \ \ v 32 200816001 為了追蹤各種類型的記憶體物件,由解說性具 體實施例的收集執行緒實行的區域「標記及清掃」 才呆作母SPE 120-134利用兩個標記堆疊。第一標記 堆疊,即區域標記堆疊,在共用記憶體199載入spE 120-134之區域存放區163_17〇的記憶塊中,儲存軟 體私式可達到之記憶體物件的指標或參照。由全域 標記佇列載入SPE的部分連同其在共用記憶體199 中的對應冗憶塊填入區域標記堆疊。在標記及清掃 操作期間就是橫越此區域標記堆疊,其中根據標記 ,作追查參照於區域標記堆疊的每一記憶體物件, 藉此利用在區域標記堆疊巾所參照的記憶體物件標 記所有可達到記憶體物件。 、 口第,標記堆疊,即非區域標記堆疊,儲存軟體 程式所參照但不在制記憶體w载人區域存放^ ^韻之目前記憶塊中的記憶體物件指標。在區域 標記堆疊中追查記憶體物件參照期 件的指標或位址加入非區域標記堆疊。也就=物 在追查區域標記堆疊中所參照之記憶體物件可 的記憶體物件期間,可能遇到另—不在共 =於區域存放區之記憶塊中之記憶體物二 > 或扣標。回應發生此事,將此「非區域 體物件的參照或指標加入非區域標記堆疊。 〜 200816001 例如,可藉由使用已知為可達到但其内容尚未 接受檢查之儲存物件(即「灰色」物件)的明確堆疊, 實行將記憶體物件指標置於各種堆疊。堆疊中的每 一項目含有基底位址及偏移,以指示可能指標相對 於起始位址的位置。偏移通常採取以下形式:描述 指標位置的簡單長度規格、位元向量、或其類似物。 / 每一記憶體物件可具有相關聯的標記描述符, 以識別記憶體物件為可達到或不可達到。對於共用 記憶體199的記憶塊、共用記憶體199的頁面、或 其類似物,每一記憶體物件的標記描述符可以是一 般標記描述符的部分。記憶體物件屬於全域標記仔 列複製於SPE 120-134之區域存放區163-170之部 分及未被追查的部分可使其標記描述符一開始設為 如「0」或「00」,以指示這些物件為不可達到。其 後,這些標記描述符值可設為例如「1」或「01」, 〇 如在「標記及清掃」操作的標記階段期間決定記憶 體物件為可達到。 因此,一開始,在SPE 120-134的垃圾收集操 作初始化時,在所論程式之堆積中的所有記憶體物 件可設為「不可達到」狀態。當SPE擷取全域標記 佇列的部分及其在共用記憶體199中的對應記憶塊 載入區域存放區時’將記憶體物件在全域標記仔列 34 200816001 口P刀的位址及偏移加入區域標記堆疊。此外,可將 記憶體物件的標記描述符加入共用記憶體199之記 憶塊的一般標記描述符資料結構。雖然,為了清楚 明白之故,在圖式及以下說明中將標記描述符表示 為與區域標記堆疊分開的資料結構,但應明白,對 於加入區域標記堆疊的各種記憶體物件參照,標記 描述符可與區域標記堆疊中的項目相關聯,且 屬於區域標記堆疊中的項目的部分。 在一開始填入區域標記堆疊之後,使用「標記 及清掃」垃圾收集操作的標記操作,識別及追^區 域標記堆疊中的下一個記憶體物件。也就是說,可 將區域標記堆疊中的下一個記憶體物件標記為可達 到,並使其成為「目前」記憶體物件。自共用記憶 體199載入區域存放區的記憶塊識別「目前」記憶 體物件所參照的記憶體物件。決定「目前」記憶; 物件所苓照的記憶體物件是否在共用記憶體1列在 區域存放區中的記憶塊内。若是,將這些記憶體物 件的標記描述符設為「可達到」狀態。 二若在此標記操作期間遇到記憶體物件指向共用 =憶體199不同記憶塊之記憶體物件的參照或指 標,則將載入區域存放區的記憶體物件、該記憶體 物件的芩照加入非區域標記堆疊。因此,透過標記 35 200816001 操作,可在記憶體物件相_的標記描述符中,將 ,域標記堆疊中的記憶體物件參照在區域存放區之 ^記㈣199的記憶塊令標記為可達到。由區域 j堆疊中記憶體物件所參照的其他記憶體物 Ο S記憶體199目前在區域存放區的記憶塊中為可 :至或不可達到。因此,這些記憶體物件可能使苴 fi己描述符更新,以顯示該等記憶體物件在共用i 的記憶塊内為可達到,或若該等記憶體物 ^事貫上在區域存放區之共用記憶體199的記憶塊 為不可達到,則其參照可加人錢域標記堆疊。 在SPE 120-134透過上述「標記及清掃」操作, 檢查全域標記仔列部分中的所有系統記憶體物件 後’針對共用記憶體199的記憶塊保持未達到的系 統圮憶體物件,如,其標記描述符為「〇」或「⑻」,
1,為使其圮憶體部分被回收的候選者。然而,此 時無法回收此純記憶體,目為在全域標記仔列的 其他部分巾’對於這些來自线記憶體物件的記情 體物件可能有其他參照,而CBE 100中的其他SPE 120-134根據特定實施例而定’可能會處理或不 理這些記憶體物件。 曰 >立將系統記憶體物件標記為在共用記憶體bp的 記憶塊中為可達到(即,在處理區域標記堆疊期間達 200816001 到)、不在共用記憶體199的記憶塊中(即,在非區 域標記堆疊中)、或在共用記憶體199的記憶塊中為 不可達到(即,使可能的參照留在全域標記佇列部 分,或先前已經達到)之後,收集執行緒實行合併操 作,以合併非區域標記堆疊中的記憶體物件參照與 全域標記佇列仍需待查的部分,藉此產生全域標記 4宁列之更新的「待查」部分。結果’利用相同或不 同的SPE 120-134,以共用記憶體199的其他記憶塊 Γ、 重新檢查不在共用記憶體19 9記憶塊之區域存放區 複製中的記憶體物件參照。重複此程序直到全域標 記佇列之更新的「待查」部分沒有系統記憶體物件 的參照。 此外,收集執行緒合併關於自處理區域標記堆 疊所獲得之記憶體物件的可達到性資訊(如,標記描 述符)與因處理其他SPE 120-134之其他區域標記堆 〇 疊所獲得的可達到性資訊,以產生擷取於全域標記 描述符的全域可達到性資訊。全域標記描述符代表 軟體程式可達到的這些系統記憶體物件,因此無法 使其系統記憶體被回收。在全域標記描述符中沒有 參照的系統記憶體物件為記憶體回收的候選者。 藉由實行一組OR運算,即可合併指示可達到 記憶體物件的區域標記描述符與全域描述符。然 37 200816001 而,必須保證單元性(atomicity),如上文Boehm的 文章所說明的。因此,合併操作合併記憶體物件的 標記描述符,致使每一合併的記憶體物件均有單一 項目,以指示記憶體物件可由所論軟體程式達到。 也就是說,合併操作消除相同記憶體物件的任何複 製項目。因此,在解說性具體實施例的情況下,不 像更新共同標記描述符的先前技術垃圾收集器,每 一標記執行緒含有區域記憶塊特定的標記描述符, 該描述符被合併至與所論程式相關聯之堆積的全域 標記描述符。 可使用經調適的記憶體流控制器(MFC)實行合 併,該MFC可支援實行單元性的讀取-修改-寫入循 環,以實行區域標記描述符的邏輯OR為全域標記 描述符,MFC已經最佳化以包括特定描述符合併功 能,或藉由使用描述符映射的軟體鎖實行合併。此 類軟體鎖理想上僅在合併程序的短週期期間獲得。 為使合併最佳化及減少合併鎖(merge lock)的競 爭,可維持多個對應於標記描述符區域的合併鎖。 在實施例中,可藉由複製全域標記描述符,獲 得經處理之記憶體記憶塊的標記描述符。有利的 是,此最佳化藉由減少複製追查的數量,減少必須 實行的追查步驟數量。亦可使用此最佳化防止解說 38 200816001 性具體實施例中的活鎖。 在又另一最佳化中,未獲得任何實行複製操作 以獲得區域描述符初始化版本的鎖。此最佳化消除 以遺失可能對追查及標記可達到位置同時更新的至 少一部分為代價的鎖同步額外負擔。 可實行類似合併操作以合併非區域標記堆疊與 全域標記佇列,以產生全域標記佇列之更新的「待 查」部分。合併非區域堆疊至全域標記佇列的合併 操作基本上產生含有系統記憶體物件指標的資料結 構,其中每一系統記憶體物件在資料結構中僅有一 個項目。也就是說,合併操作消除複製項目,致使 每一系統記憶體物件僅出現在所形成的資料結構中 一次。其結果為系統記憶體物件仍需「標記及清掃」 操作追查的清單。 每次SPE 120-134完成其有關全域標記佇列部 分及複製於該SPE 120-134區域存放區之系統記憶 體記憶塊的「標記及清掃」操作時,可由每一 SPE 120-134重複以上程序。應明白,由於系統記憶體物 件的一些參照被合併回全域標記仔列的「待查」部 分,系統的相同參照將被檢查多次。儘管這可能產 生一些無效率,比較有效的平行「標記及清掃」操 39 200816001 作比系統記憶體物件冗餘檢查所經歷的稍微無效 率,提供更大的相對效能好處。 在全域標記佇列之更新的「待查」部分中沒有 系統記憶體物件的更多參照時,在所論軟體程式的 堆積中,出現在共用記憶體199之系統記憶體物件 的每一參照將被標記為在全域標記描述符中為可達 到,或不可由所論軟體程式達到。這些未被標記程 序達到之系統記憶體物件的參照為其在共用記憶體 199之對應部分可被回收的物件。共用記憶體199 與全域標記堆疊中所有其他系統記憶體物件相關聯 的部分可由軟體程式達到,因此不會被回收。 然後實行回收程序,以回收與在全域標記描述 符中未被標記為可達到之系統記憶體物件相關聯的 系統記憶體。此類回收程序一般在本技術中為已 知,因而在此不再提供此類回收程序的詳細解說。 圖3為垃圾收集機制的示範性圖式,該垃圾收 集機制可用來根據一解說性具體實施例實行垃圾收 集。可將圖3所示垃圾收集機制整合至記憶體流控 制器(MFC),如圖2的MFC 200、或圖1的SPE 120-134。因此,圖3的垃圾收集機制可利用MFC 暫存器250、MMIO介面240、MFC命令佇列280、 40 200816001 實施例的垃圾收集 =類似物’以實行解說性具體 得全域標記彳^ ’垃圾收集機制利用MFC命令獲 塊,其中全^萨部分及共用記憶體之對應的記憶 250’及共用記部分儲存於MFC暫存器 的區域存放區。,此的記憶塊儲存於與MFC相關聯 及清掃」操作及合:和:使:MF c命令實行「標記 器250中的娜c各種標:。,請C暫存 …控制器 模組33〇、標記模組34〇二i二二用記憶體介面
'、 才示a己描述符儲存哭3 4 S 王域標記仔列部分儲存器35〇、 口口 36〇、區域標記堆疊儲存器37〇、非;=放= :請、及合併模組390。可將元件== 為硬體、軟體、或硬體及軟體的任何組人 說性具體實施例中,將元件31G_34G、36G = 建置為由一或多個處理元件實行的敕體, MFC功能,而將元件345、350、370、及㈣0 J硬體元件,如記憶體、暫存器、或其類似物。或 者,可將圖3所不所有兀件建置為可整合於式 SPE其他部分的硬體裝置或建置為SpE的專用^ 41 200816001 元。 控制器310控制垃圾收集引擎300的整體操作 及協調其他元件320-390的操作。在根據解說性具 體實施例實行垃圾收集操作時,全域標記佇列介面 模組320負責提供擷取全域標記佇列部分以讓垃圾 收集引擎300使用的機制。經由全域標記佇列介面 模組320所擷取的全域標記佇列部分係儲存於全域 標記佇列部分儲存器350,以用來對全域標記佇列 此部分的參照實行垃圾收集操作。 共用記憶體介面模組330負責提供擷取共用記 憶體部分以經由區域存放區介面360儲存於區域存 放區的機制。所擷取的共用記憶體部分對應於經由 全域標記佇列介面模組320擷取的全域標記佇列部 分。全域標記佇列介面模組320及共用記憶體介面 模組330根據在控制器310中程式化的垃圾收集方 法,在控制器310的指示下與PPE進行通信,以擷 取全域標記佇列的適當部分及共用記憶體的對應部 分0 標記模組340負責在儲存於全域標記佇列部分 儲存器350的全域標記佇列部分中實行參照的標 記。作為標記操作的部分,將控制器310經由全域 42 200816001 標記佇列介面模組320擷取之全域標記佇列部分的 記憶體物件參照加入區域標記堆疊儲存器370。然 後由標記模組340使用「標記及清掃」垃圾收集操 作的標記操作檢查這些參照,藉此識別儲存於區域 存放區之共用記憶體記憶塊的可達到記憶體物件, 及/或其在經由共用記憶體介面模組330及區域存放 區介面360在區域存放區中操取及儲存之共用記憶 體記憶塊内為不可達到的記憶體物件。實行可能遇 到為記憶體物件之反覆追查的記憶體物件參照,及 將為共用記憶體其他記憶塊中之記憶體物件參照的 記憶體物件參照加入非區域標記堆疊儲存器380。 將這些在載入於區域存放區之共用記憶體記憶 塊中為可達到的記憶體物件在對應於這些記憶體物 件的標記描述符中標記為可達到。將共用記憶體記 憶塊的標記描述符儲存於標記描述符儲存器345。 這些標記描述符構成區域標記描述符,該區域標記 描述符稍後合併於與為其實行垃圾收集之所論軟體 程式相關聯之整個堆積的全域標記描述符。 在標記模組340根據上述方法實行區域可達到 記憶體物件及非區域記憶體物件的標記之後’合併 模組390實行合併操作以合併標記描述符儲存器 345中的區域標記描述符與其他SPE之堆疊的其他 43 200816001 區域標記描述符,以產生全域標記堆疊。合併模組 390進一步合併非區域標記堆疊380與全域標記佇 列的「待查」部分,以便可以共用記憶體的適當記 憶塊追查這些參照。 圖4根據一解說性具體實施例,為圖解分配之 垃圾收集操作的示範性圖式。如圖4所示,全域標 記佇列410具有「清除」部分412及「待查」部分 〇 414。「清除」部分412為全域標記佇列410的部分, 全域標記佇列410對已由實行於一或多個SPE 420-426上之「標記及清掃」垃圾收集操作處理的共 用記憶體物件含有參照。隨著全域標記佇列部分配 置於SPE 420-426以進行區域「標記及清掃」垃圾 收集,將全域標記佇列的這些部分加入全域標記佇 列410的「清除」部分412。 全域標記佇列410的「待查」部分414包含尚 未由「標記及清掃」垃圾收集操作處理或經決定為 在共用記憶體430之非區域部分中之共用記憶體物 件之參照之共用記憶體物件的這些參照。隨著全域 標記佇列410之「待查」部分414的部分配置於SPE 420-426以進行垃圾收集,將這些參照加入全域標記 佇列410的「清除」部分412。 44 200816001 如圖4所示,每一 SPE 420-426自全域標記仰 列410的「待查」部分414獲得全域標記佇列41〇 的部分415-418,然後將這些部分加入全域標記传列 410的「清除」部分412。較佳是,這些部分415_418 是全域標記佇列410的連續部分,但此並非解說性 具體實施例的操作所需。 此外’母一 SPE 420-426獲得共用記憶體43〇 的對應記憶塊432-438。每一 SPE 420-426所獲得的 記憶塊432-438對應於SPE 420_426所獲得的全域 標記佇列410部分。 以SPE 420作為在其他SPE 422-426之每—者 使用其在全域標記佇列416-418中自己的區域部分 及共用s己憶體434-438的記憶塊中實行之相同操作 的示範性例子,基於全域標記佇列415的部分及共 〇 用記憶體的對應記憶塊432,SPE 420在共用記憶體 的$丨思塊432上貫行標記操作。使用全域標記彳宁列 415載入SPE 420的部分,以填入區域標記堆疊 (LMS)440,其具有將使用標記操作來檢查之記憶體 物件的參照或指標。此標記操作有關採用區域標記 堆440中的下一個指標或參照,及決定該指標所 參照的系統記憶體物件在共用記憶體儲存於spE區 域存放區的記憶塊432中是否為可達到。這可能需 45 200816001 要將系統記憶體物件的指標從共用記憶體位址空間 轉譯為區域存放區位址空間,如先前在上文所討論。 如果系統記憶體物件存在於共用記憶體的記憶 塊432中,則可在對應之標記描述符46〇的區域存 放區中將參照標記為可達到,及可以反覆方式追查 該記憶體物件參照的任何物件,並以類似方式對其 〇 進行標記。繼續此反覆追查,直到遇到未參照任何 其他€憶體物件的記憶體物件,或遇到不在共用記 fe體之§己|思塊432中的記憶體物件。在spe 420的 區域存放區中,將不在共用記憶體之記憶塊432中 記憶體物件的任何參照標記為非區域記憶體物件。 在依此方式使用區域標記堆疊440追查全域標 記佇列415之部分中的所有參照之後,清空區域標 記堆疊440,並在區域標記描述符46〇中標記記憶 體f件指標,或將記憶體物件指標加入非區域標記 堆璺450。區域標記描述符460含有全域標記佇列 415在糸統$己憶體$己憶塊432中為可達到之部分的 所有系統記憶體物件參照。非區域標記堆疊44〇含 有在全域標記佇列415參照不在區域存放區中系統 u己體之§己憶塊432之糸統記憶體物件的部分中追 查參照期間所遇到的系統記憶體物件參照。 46 200816001 將SPE 420-426的區域標記描述符46〇_466合 併一起,以形成全域標記描述符490。此合併有關 移除冗餘項目,致使系統記憶體物件的每一參照例 如在所形成的全域標記描述符490中僅具有一個項 目。在後續的重複中,可將區域標記描述符 460-466、區域標記堆疊440-446、及非區域標記堆 疊450-456重新初始化,並由後續標記操作重新填 (、 入◦可將從後續重複中所形成的區域標記描述符 460-466與現有的全域標記描述符490合併,以繼續 更新全域標記描述符490。 將SPE 420_426的非區域標記堆疊450-456與 全域標記符列410的「待查」部分414合併,以產 生全域標記仵列410的「合併」部分413。可由相 同或其他SPE 420-426的垃圾收集執行緒連同共用 記憶體430之其他對應的記憶塊處理「合併」部分 ◎ 413。同樣地,此合併有關以每一參照在全域標記佇 列410中僅有一個項目的方式,將參照加回到全域 標記佇列410的「待查」部分414。 在追查全域標記佇列415的部分且完成區域標 記描述符460及非區域標記堆疊450的合併後,可 將區域標記描述符460、區域標記堆疊440、及非區 域標記堆疊450重新初始化,然後將全域標記佇列 47 200816001 410的新部分及共用記憶體430之對應的記憶塊擷 取至SPE 420。然後,在全域標記佇列410的此新 部分及共用記憶體430之對應的記憶塊上實行垃圾 收集。可由每一 SPE 420-426以反覆方式實行此程 序,直到追查所有的全域標記佇列410,因此全域 標記佇列410僅包含「清除」部分412及清空的「待 查」部分414。 在透過上述反覆及分配之垃圾收集操作追查整 個全域標記佇列410時,全域標記描述符490在可 由對應於全域標記佇列410之程式達到的共用記憶 體430中將含有所有系統記憶體物件的參照。因 此,共用記憶體430中未由全域標記描述符490參 照的所有其他物件可使其記憶體空間被回收。可初 始化回收程序以本技術中一般已知的方式實行此回 收。 因此,解說性具體實施例提供以分配方式在異 質多處理器系統中複數個處理器上實行垃圾收集操 作的機制。在此種系統中,可由控制處理器(如圖1 的PPE 110)協調垃圾收集操作,同時在控制處理器 的指示下,可由複數個共處理器(如圖1的SPE 12 0 -13 4)在糸統記憶體部分上貫行分配的垃圾收 集。提供位址轉譯機制以補償控制及共處理器的不 48 200816001 同記憶體觀襟占。 有若干最佳化可提供用以實行上述垃圾收集操 作。例如,在SPE中對全域標記佇列部分完成追查 之後,SPE可查看其他SPE的非區域標記堆疊,以 決定目如載入S P E之區域存放區的糸統記憶體記憶 塊中有無記憶體物件的參照。依此方式,可將其他 SPE之非區域標記堆疊中的此類參照加入目前SPE 1 的區域標記堆疊,而不必將參照合併回全域標記佇 列,然後再將其複製回其他SPE。 此外,可對全域標記佇列進行預先排序,致使 產生對應於個別系統或共用記憶體區域的個別全域 標記佇列區域。將非區域標記堆疊合併回全域標記 佇列的「待查」部分後,將非區域標記堆疊中記憶 體物件的參照合併至全域標記佇列的對應區域。因 C. 此,若第一非區域標記堆疊中的參照代表在共用記 憶體第一區域中的記憶體物件,則將項目合併至全 域標記佇列之第一區域的「待查」部分。同樣地, 若第二非區域標記堆疊中的項目代表在共用記憶體 第二區域中的記憶體物件,則將項目合併至全域標 記佇列之第二區域的「待查」部分。這可加速垃圾 收集操作,因為在垃圾收集的後續重複中,比較不 可能多次決定相同的參照在系統記憶體的非區域部 49 200816001 分0 圖5根據其中利用預先排序之增強標記及清掃 操作的另一解說性具體實施例,為圖解分配之垃圾 收集操作的示範性圖式。圖5與圖4提供的圖解類 似,但有一些比較不一樣的例外之處。如圖5所示, 如由圖1的PPE 110對全域標記佇列51〇進行預先 排序,以具有對應於共用記憶體530之區域532-536 的複數個區域512-516。以上述的相同方式實行個別 SPE 520-526對全域標記仵列510之部分的擷取。然 而’修改SPE 520-526之非區域標記堆疊550-556 的合併以考慮全域標記佇列510的不同區域。 例如,在合併SPE 520-526的非區域標記堆疊 550-556與全域標記佇列的「待查」部分時,合併程 序決定要將非區域標記堆疊550-556中的參照放在 全域標記佇列的哪個區域512_516。這可藉由以下方 式來元成,例如使用共用記憶體位址參照,決定參 知對應於共用At思體530的哪個區域M2-536,鈇後 麥照然後與其對應於全域標記佇列之該區域的「待 查」部分合併。 由於將參照合併至全域標記仵列510對應於共 50 f) Ο 200816001 二記=530中對應於參照之系統記憶體物件所存 在之區域的區域,此預先排序及區域 收集悔相同參照必須重複地與全域標上= 量:结果,減少相同參照的冗餘檢查 數里措此減少貫行垃圾收集操作的時間。 調4ΐ進:=最佳化,可基於堆積的目前狀態 要:所利用之系統或共用記憶體的記 心鬼尺寸。如果堆積為相對地清空,即具 ,配置’則可選擇相對較大的記憶塊尺寸,因; 尺寸之系I娜=體掃描較大記憶塊 P樣地,如果堆積全滿,則在全域標記 對大量指標,因此,可選擇相對較小的4 要〜㈣^錄小的記憶塊尺寸將使垃圾收集操作 更多時間才能完成,但較小的記憶塊尺寸有 晶、二保不冒發生有關區域及非區域標記堆疊的堆 宜位例外狀況。 f姑在又進一步的最佳化中,可將每一 SPE的區域 “Γί成區域存放區的第一部分用以儲存共用記 α之弟一記憶塊,及區域存放區的另一部分用以 200816001 儲存,、用4體之下—個記憶塊部分。可以一般於 ΐ4ΐ所述的方式,在共用記憶體的第—記憶塊上實 订才示5己°在標記共用記憶體的記憶塊後,可例如使 ==[Α ‘作’將共用記憶體的下—個記憶塊放入 :域t放區。依此方式,可以更有效的方式載入共 八Zfe體圮憶塊及其在全域標記佇列中的對應部 为’因為正在實行某種程度的平行載入操作。 (、
在解說性具體實施例的又另一最佳化中,可對 指定用來儲存區域標記彳宁列及非區域標記仔列的記 fe體區域溢位提供特別處理。在第一最佳化中,將 非區域標記㈣合併至_於系統記赌中的全域 標記佇列’然後刪除非區域標記佇列。在第二最佳 1中,將區域標記佇列的部分傳送至維持於系統‘ 的全域標記佇列,然後刪除非區域標記佇列。 在罘三最佳化中,減少記憶塊尺寸並將其延後以便 士來處理,同時_保將對應於延後之記憶塊部分的 標記描述符保留於區域存放區或全域系統記憶體之 一者中。 圖6根據一解說性具體實施例’為概述實行垃 圾收集之示範性操作的流程圖。應明白,可利用電 腦程式指令建置流程圖圖解的每一步驟及流程圖= 解中的步驟組合。可將這些電腦程式指令提供至處 52 200816001 理器或其他可程式資料處理設備以製造機器,致使 執行於處理器或其他可程式資料處理設備的指令可 建立用於實施流程圖方塊中指定功能的構件。亦可 將這些電腦程式指令儲存於指示處理器或其他可程 式資料處理設備按特定方式運作的電腦可讀記憶體 或儲存媒體中,使得儲存於電腦可讀記憶體或儲存 媒體中的指令能夠產生包括實施流程圖方塊中指定 功能之指令構件的製品。 Γ 因此,流程圖中的方塊支援執行指定功能之構 件的組合、執行指定功能之步驟的組合、及執行指 定功能的程式指令構件。运應明白’流程圖中的各 方塊及流程圖中的方塊組合可以利用執行指定功能 或步驟之基於硬體的專用電腦系統或專用硬體及電 腦指令的組合來實施。 I 如圖6所示,操作始於SPE如自另一 SPE或 ΡΡΕ接收指令,以開始垃圾收集操作(步驟610)。 SPE(或視情況為ΡΡΕ)啟始收集執行緒,其利用垃圾 收集引擎在系統或共用記憶體分配給所接收垃圾收 集指令中識別之程式的部分上實行垃圾收集(步驟 620)。ΡΡΕ為配置給程式(即堆積)的系統或共用記憶 體部分產生全域標記佇列,然後初始化全域標記佇 列(步驟630)。所產生的收集執行緒獲得全域標記佇 53 200816001 列部分及系統或共用記憶體的對應記憶塊(步驟 640),以分別複製於區域標記堆疊及區域存放區。 收集執行緒在區域標記堆疊中的參照或指標上 啟始標記及追查操作,該LMS已由全域標記佇列部 分加以初始化。收集執行緒自區域標記堆疊選擇下 一個項目,並啟始對應記憶體區塊中所含所有參照 的標記及追查處理(步驟65 0)。作為標記及追查操作 的部分,收集執行緒識別記憶體區塊中的下一個參 照或指標(步驟660),並決定參照是否指向系統/共 用記憶體之記憶塊中的記憶體物件(步驟670)。若蒼 照指向系統/共用記憶體之記憶塊中的記憶體物 件,則在參照對應於先前不可達到的參照(即,標記 描述符被設為不可達到)時,收集執行緒將參照加入 區域標記堆疊,並如藉由將記憶體物件的參照加入 區域標記描述符貢料結構’在區域標記描述符貢料 結構中將記憶體物件標記為可達到,並隨之設定其 標記描述符位元(步驟680)。若參照指向不在系統或 共用記憶體之記憶塊中的記憶體物件,則收集執行 緒將參照標記為非區域標記參照,然後將參照加入 非區域標記堆疊(步驟690)。 收集執行緒接著決定從目前的記憶體物件參照 中或在全域標記佇列部分中是否還有記憶體物件的 54 200816001 其他參照或指標(步驟700)。若有,則收集執行緒返 回步驟660。若無,則收集執行緒決定區域標記堆 疊是否清空,即標記及追查操作已經處理所有項目 (步驟705)。若未清空,則操作返回步驟650,然後 選擇實行標記及追查操作的下一個區域標記堆疊項 目。若區域標記堆疊已清空,則收集執行緒視情況 針對參照目前處理器之系統或共用記憶體目前記憶 塊之非區域工作堆疊中的參照或指標,輪詢異質多 處理器系統的其他處理器(步驟710)。然後以步驟 650-690的類似方式追查及標記任何此類參照或指 標(步驟720)。 收集執行緒然後合併所形成的區域標記描述符 與全域標記描述符(步驟730)。收集執行緒亦可合併 所形成的非區域標記堆疊與全域標記佇列的「待查」 部分(步驟740)。這涉及決定非區域標記堆疊中的參 I 照對應於全域標記佇列之「待查」部分的哪個區域, 及例如合併參照與參照在全域標記佇列中的相應區 域0 收集執行緒接著重新初始化區域標記描述符、 區域標記堆疊、及非區域標記堆疊(步驟750)。收集 執行緒接著決定全域標記佇列是否還有其他部分要 處理(步驟760)。若是,則操作返回獲得全域標記佇 55 200816001 列之下一個部分及記憶體之對應記憶塊的步驟 640,並重複此程序。若全域標記佇列沒有要處理的 其他部分,則操作終止。請注意,在終止上述分配 之「標記及清掃」操作之後,可實行記憶體回收程 序,以回收系統或共用記憶體配置給未由全域標記 堆疊參照之記憶體物件的部分。 因此,解說性具體實施例提供在異質多處理器 系統中實行垃圾收集的機制。在異質多處理器系統 中,可在複數個處理器上平行實行垃圾收集,並適 當地合併其結果,以識別這些可達到的系統記憶體 物件與這些不可達到的系統記憶體物件。依此方 式,提供一種利用多處理器系統中每一處理器之功 能的有效垃圾收集方法。 請注意,雖然以上就分配之垃圾收集操作來說 明具體實施例,但本發明並不僅限於此。而是,在 不脫離本發明之精神及範疇的情況下,可配置異質 多處理器系統的單一處理器來實行垃圾收集操作。 由於此種處理器的區域存放區具有有限尺寸,仍需 要實行全域標記佇列部分及其上實行垃圾收集的共 用或系統記憶體之對應部分的複製。因此,在不脫 離本發明之精神及範疇的情況下,可使用單一處理 器而非複數個處理器實行上述的相同操作。 56 200816001 解說性具體實施例可採取以下形式:完全硬體 的具體實施例、完全軟體的具體實施例、或含有硬 體及軟體元件二者的具體實施例。在較佳的具體實 施例中,本發明係以軟體實施,軟體包括但不限於 韋刃體、常駐軟體、微碼等。 此外,解說性具體實施例可以採取以下形式: / 可自提供程式碼的電腦可用或電腦可讀媒體存取的 電腦程式產品^以由電腦或任何指令執行糸統使用 或結合電腦或任何指令執行系統使用。為此說明之 目的,電腦可用或電腦可讀媒體可以是任何含有、 儲存、通訊、傳播、或傳送由指令執行系統、設備、 或裝置使用或結合指令執行系統、設備、或裝置使 用之程式的設備。 此媒體可以是電子、磁性、光學、電磁、紅外 線、或半導體系統(或設備或裝置)或傳播媒體。電 腦可讀媒體的範例包括:半導體或固態記憶體、磁 帶、抽取式電腦磁片、隨機存取記憶體(RAM)、唯 讀記憶體(ROM)、磁性硬碟、及光碟。光碟的目前 範例包括:唯讀記憶體(CD-ROM)光碟、讀/寫 (CD-R/W)光碟及 DVD。 57 200816001 如先前所述,適於儲存及/或執行程式碼的資料 處理系統包括至少一透過系統匯流排直接或間接耦 合至記憶體元件的處理器。記憶體元件包括:在實 際執行程式碼期間所用的本機記憶體、大量儲存裝 置、及快取記憶體,快取記憶體暫時儲存至少某個 程式碼,以減少執行期間必須自大量儲存裝置擷取 程式碼的次數。
C 輸入/輸出或I/O裝置(包括但不限於:鍵盤、顯 示器、指標裝置等)可直接耦合至系統或透過中介 I/O控制器耦合至系統。網路配接器亦可耦合至系 統,以讓資料處理系統能夠透過中介專用或公用網 路耦合至其他資料處理系統或遠端印表機或儲存設 備。數據機、有線電視數據機及乙太網路卡正是一 些目前可用的網路配接器類型。 C 請注意,雖然在完整運作之資料處理系統的上 下文中說明本發明,但熟習此項技術者應明白,可 以電腦可讀媒體指令的形式與各種形式分配本發明 的程序,且應明白,無論實際用於執行分配的信號 載負媒體的特定類型,本發明皆一樣適用。電腦可 讀媒體的範例包括:可記錄型媒體,如:軟碟、硬 碟機、RAM、CD-ROM、DVD-ROM ;及傳輸型媒 體,如:使用如射頻與光波傳輸之傳輸形式的數位 58 200816001 與類比通信鏈路、有線或無線通信鏈路。带 媒體可採用解碼以實際用於特定資料處理:二二= 碼格式的形式。 m編 本發明的說明係為解說與說明的目的而提出, 其意不在詳盡說明或以所揭露的形式限制=
明。對於熟習此項技術者而言,顯然可以進行: 修改及變化。具體實施例的選擇與說明係為了對二 餐明的原理、實際應用提出最好的解說,並讓熟習 本技術者瞭解本發明的各種具體實施例具有同 於所想特定使用的各種修改。 〃 【圖式簡單說明】 視為本發明之特性的新穎特色如隨附的申請專 利範圍所述。然而’要完全瞭解本發明本身及^較 ,使用模式、其他目的及優點,請參考解說性。 貫施例的詳細說明並結合附圖來研讀,其中:五 固1為兴貝多處理斋系統的示範性方塊圖,在 該^質多處理器系統中可建置解說性具體實施例的 圖2為圖解記憶體流控制器的示範性圖式,在 該記憶體流控彻巾可建置解說性具體實施例 範性方面; 圖3為垃圾收集機制的示範性圖式,該垃圾收 59 200816001 集機制可用來根據一解說性具體實施例實行垃圾收 集, 圖4根據一解說性具體實施例,為圖解分配之 垃圾收集操作的示範性圖式; 。圖5根據其中利用預先排序之增強標記及清掃 插作的另一解說性具體實施例,為圖解分配之垃圾 收集操作的示範性圖式;及 圖6根據一解說性具體實施例,為概述實行垃 圾收集之示範性操作的流程圖。 【主要元件符號說明】 100 110 112 114 單元寬頻引擎(CBE) Power處理器元件(ppe) L1快取 L2快取 〇 116 120-134 > 420-426 > 520-526 140-154 155-162、200 163-170 180-194、220 196 處理器(PPU) 協同處理器元件(SPE) 協同處理器單元(SPU) 記憶體流控制 區域存放區(LS) 匯流排介面單元(BIU) 向頻寬内部元件互連匯流排 (HIB) 197 匯流排介面控制器(BIC) 60 200816001
198 記憶體介面控制器(MIC) 199、430、530 共用記憶體 210 SPU通道介面 212 SPU區域儲存器介面 214、216、222、224 介面 230 SL1快取 240 記憶體映射輸入/輸出 (MMIO)介面 250 MFC暫存器 260 DMA控制器 270 MFC代理命令佇列 280 MFC SPU命令佇列 290 記憶體映射單元(MMU) 300 垃圾收集引擎 310 控制器 320 全域標記佇列介面模組 330 共用記憶體介面模組 340 標記模組 345 標記描述符儲存器 350 全域標記佇列部分儲存器 360 區域存放區介面 370 區域標記堆疊儲存器 380 非區域標記堆疊儲存器 390 合併模組 61 200816001 410 、 510 全域標記佇列 412 「清除」部分 413 「合併」部分 414 Μ寺查」部分 415-418 全域標記彳宁列部分 432-438 共用記憶體的記憶塊 440-446 區域標記堆疊(LMS) 460-466 區域標記描述符 490 全域標記描述符 512-516 ^ 532-536 區域 550-556 非區域標記堆疊 Ο 62

Claims (1)

  1. ‘喝 16001 申請專利範圍: —種名 々 憶體上:夕處理器資料處理系統中在-共用記 只仃一垃圾收集操作的方法,其包含: ?多處理器資料處理系統 記佇列的—部分;、用彻-部分之-全域標
    分中5 f指派、給該處理器之該全域標記仵列部 實行一體物件參照’在該共用記憶體部分上 法回你!τ己細作’藉此識別其相關聯之記憶體無 體物:作為該垃圾收集操作部分的可達到記憶 ,及 哭,該標記操作期間識別不在指派給該處理 的之4共用記憶體部分令的記憶體物件參照,以 進一步處理作為該垃圾收集操作的部分。
    • =4求項1之方法,其中該全域標記佇列的部分 少於該全域標記佇列的一整體部分,及其中該共 =記憶體中對應於該全域標記佇列之部分的部 刀少於该共用記憶體的一整體部分。 3·如請求項1之方法,其中載入對應於該共用記憶 體一部分之該全域標記佇列的一部分包含·· 一開始基於該全域標記佇列之部分中的記 憶體物件參照,填入(p0pUlate) 一區域標記堆 63 ^ 在该處理器的一區域存放區中載入該共用 2憶體中對應於該全域標記佇列之部分的一部 分L其中該多處理器資料處理系統之該複數個處 理态中的每一處理器載入該全域標記佇列的不 同部分及該共用記憶體之對應的不同部分,並基 於f全域標記佇列之該不同部分的記憶體物件 苓妝,在該共用記憶體的該不同部分上實行一標 記操作。 如請求項3之方法,基於記憶體物件參照在該共 用5己憶體的部分上實行一標記操作包含: 追查在該全域標記彳宁列的部分中的記憶體 物件參照及相依記憶體物件的參照,直到識別一 冗憶體物件不在該共用記憶體之部分中泉 照; > 將在该共用記憶體部分中的記憶體物件參 照儲存於該區域標記堆疊中;及 ^ 將不在3亥共用§己憶體部分之内的記憶體物 件茶照儲存於該非區域標記堆疊中。 如請求項1之方法,進一步包含: “ 4合併一與該區域標記堆疊相關聯的區域標 吕己描述符(descriptor)資料結構及一全域標記描 200816001 述符資料結構;及 合併該非區域標記堆疊與該全域標記仵列 的一「待查」部分,其中該全域標記佇列的該「待 查」部分含有將藉由實行該標記操作來處理的記 憶體物件參照,及其中該區域標記描述符資料結 構含有其參照在該區域標記堆疊中之記憶體物 件的可達到性資訊。
    6·如凊求項5之方法,其中該全域標記描述符資料 結構在該多處理器資料處理系統之處理器的區 域標記堆疊中,包含經識別為在該共用記憶體一 部分中之記憶體物件的所有參照。
    7·如凊求項1之方法,其中該多處理器資料處理系 ,為一包含一控制處理器及至少一共處理器的 ^質多處理器資料處理系統,及其中該控制處理 器及至少一共處理器使用不同指令集來操作。 &如請求項7之方法,其中利用該至少一共處理界 =一~或多個來執行載入該全域標記佇列一 ^ 分、實行一標記操作、及識別不在該共用記 部分之内的記憶體物件參照。 心1 9·如請求項8之方法,其中利用該至少一共處理器 65 Ο
    20〇816〇〇i 載入、每—^ …丨思遐流控制器來執行該等 戰入 μ仃、及識別操作。 1〇_二,包含一具有—電腦可讀程式之電腦可用# „品,其+該電腦可讀;= 杰貝枓處理系統執行以下動作: 处里 中,载處理器資料處理系統的-處理器 記符列的-部分; 1刀〈王域才示 八^於指派給該處理器之該全域標記仵列部 二憶體物件參照,在該共用記憶體部分上 二Θ圮紅作,藉此識別其相關聯之記憶體無 體物件;^該垃圾收集操作部分的可達到記憶 π ,該標記操作期間識別不在指派給該處理 _ 一 Χ ^用5己憶體部分中的記憶體物件參照,以 進ν處理作為該垃圾收集操作的部分。 11·如请求工員10之電腦程式產品,其中該全域標記 ^ 卩分少於該全域標記作列的一整體部 /刀^其中該共用記憶體中對應於該全域標記佇 歹J之卩刀的部分少於該共用記憶體的一整體部 分0 66
    Ο 200816001 10之電腦程式產品,其中該 i壬式猎由以下動作使該多處理器㈣處理“ 載入對應於該共用記憶體一部分之 佇列的一部分: 王3铋5己 一開始基於該全域標記佇列之部分 憶體物件參照’填人—區域標記堆疊;及、° 在該處理器的—區域存放區中載 記憶體中對應於該全域標記仵列之部分的^ ί哭其/該/處理器f /财理纟、狀該複數個處 态中的母一處理器載入該全域標記佇列的不 同部分及該制記憶體之對應的不同部分,並基 於,全域標記佇列之該不同部分的記憶體物: 芩恥,在該共用記憶體的該不同部分上實行一標 記操作。 、 不 。月,項12之電腦程式產品,其中該電腦可讀 程式藉由以下動作使該多處理器資料處理系統 ,於記憶體物件參照在該共用記憶體的部分上 實行一標記操作: 追查在該全域標記佇列的部分中的記憶體 物件參照及相依記憶體物件的參照,直到識別一 记憶體物件不在該共用記憶體之部分中一夂 照; > 67 200816001 將在該共用記憶體部分中的記憶體物件參 照儲存於該區域標記堆疊中;及 將不在該共用記憶體部分之内的記憶體物 件參照儲存於該非區域標記堆疊中。 14. 如請求項10之電腦程式產品,其中該電腦可讀 程式進一步使該多處理器資料處理系統進行以 下動作: i 合併一與該區域標記堆疊相關聯的區域標 記描述符資料結構及一全域標記描述符資料結 構;及 合併該非區域標記堆疊與該全域標記佇列 的一「待查」部分,其中該全域標記佇列的該「待 查」部分含有將藉由實行該標記操作來處理的記 憶體物件爹照’及其中該區域標記描述符資料結 構含有其參照在該區域標記堆疊中之記憶體物 (; 件的可達到性資訊。 15. 如請求項14之電腦程式產品,其中該全域標記 描述符貢料結構在該多處理裔貢料處理糸統之 處理器的區域標記堆疊中,包含經識別為在該共 用記憶體一部分中之記憶體物件的所有參照。 16. 如請求項10之電腦程式產品,其中該多處理器 68 200816001 :1斗處?系統為一包含-控制處理器及至少-/、处理器的異質多處理器資料 該控制處理器及至少一元及/、中 集來操作。至…處理讀用不同指令 項16之電腦程式產品,其中利用該至少 Ο /、處理器的一或多個來執 佇列一部分、實行一 亥王域標兄 ^^ 仃松"己刼作、及識別不在該政 用錢體部分之内的記憶體物件參照。、 -=17之電腦程式產品,其中利用該至少 來執二=該一:戈多個的-記憶體流控制器 仃该寺載入、貫行、及識別操作。 19· 一種實行垃圾收集的系統,包含·· 複數個處理器,每一處理哭 區域存放區;及 -里-具有-相關聯的 —耦合至該複數個處理器的共用圮_ fΑ 中该複數個處理器的一或多個處理器广 - =處理器中載入對應於;亥共用記憶 肢一σ卩分之一全域標記佇列的一部分; :部分上實行-標記操作,藉此識別其 基於指派給該處理器之該全域標 列部分中的記憶體物件參照該; 69 zu^l6〇〇! 相::之記憶體無法回收作為該垃圾收集 紅作部分的可達到記憶體物件,·及 ,該標記操作期間識別不在指派給該 :理益之該共用記憶體部分中的記憶體物 件茶照,⑽—步處料為餘圾收集摔 作的部分。 、
    2〇.如請求項19之系、统,其中該一或多個處理 一步: ^合併一與該區域標記堆疊相關聯的區域標 圮“述符貧料結構及一全域標記描述符資料結 構;及 合併該非區域標記堆疊與該全域標記佇列 的一「待查」部分,其中該全域標記佇列的該「待 查」部分含有將藉由實行該標記操作來處理的記 憶體物件參照,及其中該區域標記描述符資料結
    構含有其參照在該區域標記堆疊中之記憶體物 件的可達到性資訊。 70
TW096113386A 2006-04-28 2007-04-16 System and method for garbage collection in heterogeneous multiprocessor systems TW200816001A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/380,683 US7512745B2 (en) 2006-04-28 2006-04-28 Method for garbage collection in heterogeneous multiprocessor systems

Publications (1)

Publication Number Publication Date
TW200816001A true TW200816001A (en) 2008-04-01

Family

ID=38649664

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096113386A TW200816001A (en) 2006-04-28 2007-04-16 System and method for garbage collection in heterogeneous multiprocessor systems

Country Status (4)

Country Link
US (1) US7512745B2 (zh)
JP (1) JP5147280B2 (zh)
CN (1) CN101075209A (zh)
TW (1) TW200816001A (zh)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0512809D0 (en) * 2005-06-23 2005-08-03 Ibm Arrangement and method for garbage collection in a computer system
US7734827B2 (en) * 2005-09-27 2010-06-08 Sony Computer Entertainment, Inc. Operation of cell processors
CA2705379C (en) 2006-12-04 2016-08-30 Commvault Systems, Inc. Systems and methods for creating copies of data, such as archive copies
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US7831640B2 (en) * 2008-04-15 2010-11-09 Microsoft Corporation Using an overflow list to process mark overflow
US7987215B2 (en) * 2008-04-22 2011-07-26 Microsoft Corporation Efficiently marking objects with large reference sets
US7860906B2 (en) * 2008-05-28 2010-12-28 Microsoft Corporation Overflow per segment
US8239865B2 (en) * 2008-06-02 2012-08-07 Microsoft Corporation Waiting and synchronization of parallel task executions based on task groups and task object representations
US8880775B2 (en) * 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
JP2010072790A (ja) * 2008-09-17 2010-04-02 Toshiba Corp プロセッサ装置、情報処理装置及びメモリ管理方法
US8301672B2 (en) * 2008-09-22 2012-10-30 Advanced Micro Devices, Inc. GPU assisted garbage collection
AU2009296695B2 (en) 2008-09-26 2013-08-01 Commvault Systems, Inc. Systems and methods for managing single instancing data
US9015181B2 (en) 2008-09-26 2015-04-21 Commvault Systems, Inc. Systems and methods for managing single instancing data
US8412677B2 (en) 2008-11-26 2013-04-02 Commvault Systems, Inc. Systems and methods for byte-level or quasi byte-level single instancing
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US8401996B2 (en) 2009-03-30 2013-03-19 Commvault Systems, Inc. Storing a variable number of instances of data objects
US8578120B2 (en) 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
JP5218985B2 (ja) * 2009-05-25 2013-06-26 株式会社日立製作所 メモリ管理方法計算機システム及びプログラム
US8473900B2 (en) * 2009-07-01 2013-06-25 Advanced Micro Devices, Inc. Combining classes referenced by immutable classes into a single synthetic class
US8200718B2 (en) * 2009-07-02 2012-06-12 Roberts Michael L Parallelized, incremental garbage collector
US8645651B2 (en) * 2010-01-26 2014-02-04 Oracle International Corporation Low-contention update buffer queuing for small systems
US8327109B2 (en) * 2010-03-02 2012-12-04 Advanced Micro Devices, Inc. GPU support for garbage collection
DE102010017215A1 (de) * 2010-06-02 2011-12-08 Aicas Gmbh Verfahren zur Durchführung eines Speichermanagements
US8935492B2 (en) 2010-09-30 2015-01-13 Commvault Systems, Inc. Archiving data objects using secondary copies
CN102023891A (zh) * 2010-12-20 2011-04-20 复旦大学 基于Java虚拟机的并发垃圾收集器框架
US8473529B2 (en) 2011-03-14 2013-06-25 International Business Machines Corporation Single pass marking of finalizable objects
US8417744B2 (en) * 2011-03-23 2013-04-09 Microsoft Corporation Techniques to manage a collection of objects in heterogeneous environments
US9053017B2 (en) 2011-09-09 2015-06-09 Microsoft Technology Licensing, Llc Managing object lifetime in a cyclic graph
US8738877B2 (en) 2011-12-14 2014-05-27 Advance Micro Devices, Inc. Processor with garbage-collection based classification of memory
US9020890B2 (en) 2012-03-30 2015-04-28 Commvault Systems, Inc. Smart archiving and data previewing for mobile devices
US9274839B2 (en) * 2012-09-27 2016-03-01 Intel Corporation Techniques for dynamic physical memory partitioning
US9633022B2 (en) 2012-12-28 2017-04-25 Commvault Systems, Inc. Backup and restoration for a deduplicated file system
US8966203B2 (en) * 2013-01-04 2015-02-24 Microsoft Corporation Shared and managed memory unified access
US9367449B2 (en) * 2013-09-11 2016-06-14 Owtware Holdings Limited, BVI Hierarchical garbage collection in an object relational database system
IN2013CH04831A (zh) * 2013-10-28 2015-08-07 Empire Technology Dev Llc
CN103699435B (zh) * 2013-12-25 2017-05-03 龙芯中科技术有限公司 负载均衡方法及装置
US10324897B2 (en) 2014-01-27 2019-06-18 Commvault Systems, Inc. Techniques for serving archived electronic mail
CN104268074B (zh) * 2014-09-05 2017-09-01 北京广利核系统工程有限公司 一种基于dcs系统应用软件在线调试方法
US10324914B2 (en) 2015-05-20 2019-06-18 Commvalut Systems, Inc. Handling user queries against production and archive storage systems, such as for enterprise customers having large and/or numerous files
US10176093B2 (en) 2015-06-30 2019-01-08 International Business Machines Corporation Pauseless location and object handle based garbage collection
US10180902B2 (en) 2015-06-30 2019-01-15 International Business Machines Corporation Pauseless location and object handle based garbage collection
US9734053B2 (en) * 2015-06-30 2017-08-15 International Business Machines Corporation Garbage collection handler to update object pointers
CN107239406B (zh) * 2016-03-29 2021-03-09 斑马智行网络(香港)有限公司 用于垃圾回收的并行标记处理方法及装置
US10146684B2 (en) * 2016-10-24 2018-12-04 Datrium, Inc. Distributed data parallel method for reclaiming space
US10572181B2 (en) * 2017-02-01 2020-02-25 Microsoft Technology Licensing, Llc Multiple stage garbage collector
US10558564B2 (en) * 2017-09-28 2020-02-11 Hewlett Packard Enterprise Development Lp Pointers in a memory managed system
US10691590B2 (en) 2017-11-09 2020-06-23 International Business Machines Corporation Affinity domain-based garbage collection
US10552309B2 (en) 2017-11-09 2020-02-04 International Business Machines Corporation Locality domain-based memory pools for virtualized computing environment
US10445249B2 (en) 2017-11-09 2019-10-15 International Business Machines Corporation Facilitating access to memory locality domain information
US11055184B2 (en) * 2018-12-19 2021-07-06 Vmware, Inc. In-place garbage collection of a sharded, replicated distributed state machine based on supersedable operations
US10877881B2 (en) 2019-01-11 2020-12-29 Vmware, Inc. In-place garbage collection of a sharded, replicated distributed state machine based on mergeable operations
CN110673956B (zh) * 2019-09-24 2022-04-15 Oppo广东移动通信有限公司 回收线程创建方法、装置、计算机设备以及存储介质
US11416390B2 (en) * 2020-09-09 2022-08-16 International Business Machines Corporation Tri-color bitmap array for garbage collection
US11625269B1 (en) * 2021-03-31 2023-04-11 Amazon Technologies, Inc. Scheduling for locality of reference to memory

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6441043A (en) * 1987-08-06 1989-02-13 Ricoh Kk Parallel garbage collector system for list processing
US6865585B1 (en) * 2000-07-31 2005-03-08 Microsoft Corporation Method and system for multiprocessor garbage collection
US7221520B2 (en) * 2003-11-13 2007-05-22 Interdigital Technology Corporation Camera control using wireless technology

Also Published As

Publication number Publication date
US20070255909A1 (en) 2007-11-01
CN101075209A (zh) 2007-11-21
JP5147280B2 (ja) 2013-02-20
US7512745B2 (en) 2009-03-31
JP2007299403A (ja) 2007-11-15

Similar Documents

Publication Publication Date Title
TW200816001A (en) System and method for garbage collection in heterogeneous multiprocessor systems
JP6408568B2 (ja) 複数のアクセスメソッドのためのラッチフリーのログ構造化ストレージ
US7010555B2 (en) System and method for compacting a computer system heap
CN104364775B (zh) 具有段偏移寻址的专用存储器访问路径
CN102460400B (zh) 基于管理程序的本地和远程虚拟内存页面管理
KR101491626B1 (ko) 메모리 저장 장치, 데이터베이스를 위한 트랜잭션 기능을 지원하는 방법 및 메모리 시스템
CN103597451B (zh) 用于高可用性的存储器镜像和冗余生成
US6317756B1 (en) On-the-fly garbage collector
US20170344473A1 (en) Managing objects stored in memory
US20200310963A1 (en) Real-time replicating garbage collection
TW201205286A (en) Controller, data storage device, and program product
CN104572495A (zh) 使用细粒度级别的重映射的混合主存储器
US11620215B2 (en) Multi-threaded pause-less replicating garbage collection
JP6044181B2 (ja) ガーベジコレクションのための情報処理方法、プログラム及び装置
CN111309310B (zh) 面向非易失性内存的JavaScript对象持久化框架
KR101529651B1 (ko) 메모리 저장 장치, 데이터베이스를 위한 트랜잭션 기능을 지원하는 방법 및 메모리 시스템
Do et al. Better database cost/performance via batched I/O on programmable SSD
US8447793B2 (en) Efficient remembered set for region-based garbage collectors
US11550714B2 (en) Compiling application with multiple function implementations for garbage collection
Ghemawat The modified object buffer: a storage management technique for object-oriented databases
WO2014158155A1 (en) Coordinating replication of data stored in a non-volatile memory-based system
Abulila et al. ASAP: architecture support for asynchronous persistence
US10936483B2 (en) Hybrid garbage collection
Kang et al. Making application-level crash consistency practical on flash storage
Degenbaev et al. Concurrent marking of shape-changing objects