TW202040384A - 用於分片創建的裝置及系統 - Google Patents
用於分片創建的裝置及系統 Download PDFInfo
- Publication number
- TW202040384A TW202040384A TW108133793A TW108133793A TW202040384A TW 202040384 A TW202040384 A TW 202040384A TW 108133793 A TW108133793 A TW 108133793A TW 108133793 A TW108133793 A TW 108133793A TW 202040384 A TW202040384 A TW 202040384A
- Authority
- TW
- Taiwan
- Prior art keywords
- vertex
- dynamic
- processor circuit
- data elements
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
- G06F16/287—Visualization; Browsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Generation (AREA)
- Debugging And Monitoring (AREA)
Abstract
根據一個一般方面,一種裝置可包括主機處理器介面電路,所述主機處理器介面電路被配置成與外部主機處理器電路傳送資料及命令。所述裝置可包括控制器處理器電路,所述控制器處理器電路被配置成將圖形資料元合併成合併動態分片,其中合併動態分片包括相同數目的圖形資料元。所述裝置可包括非揮發性記憶體,所述非揮發性記憶體被配置成將資料儲存在至少部分的圖形結構中,其中圖形結構包括各自包含頂點及邊緣的資料元,且其中資料元的子部分被分組成分片。
Description
本說明涉及資料的儲存及處理,且更具體來說,涉及用於圖形工作負荷的儲存體中的最佳動態分片創建。
在電腦科學中,圖形理論是對圖形的研究,圖形是用來對物件之間的成對(pairwise)關係進行建模的資料結構。本上下文中的圖形由通過邊緣、弧或線連接的頂點、節點、或者點構成。在計算中,圖形資料庫(graph database,GDB)是使用具有節點、邊緣及屬性的用於語義查詢的圖形結構來表示及儲存資料的資料庫。所述系統的關鍵概念是圖形(或邊緣或關係),圖形與儲存的資料節點的集合以及表示節點之間的關係的邊緣的資料項目直接關聯。所述關係使得儲存中的資料直接聯繫在一起,且在許多情況下通過一個操作進行檢索。圖形資料庫優先保存資料之間的關係。由於圖形資料庫內的關係永久儲存在資料庫本身內,因此查詢圖形資料庫內的關係非常快。使用圖形資料庫可將關係直觀地視覺化,從而使其適用於相互聯繫度非常高的資料。
隨著大資料應用(Big Data application)已變得更加實用,圖形計算近來已變得流行。作為幾個實例,在電腦科學中使用圖形來表示計算的流程。在作業系統中,將資源配置圖形用於進程及鎖死檢測及糾正。圖形用於對分子的研究中、用於對化學中鍵的構造進行研究及對原子的研究。圖形用於生物學及保護工作中,其中頂點表示特定種類存在的區域且邊緣表示在區域之間的遷移路徑或移動。穀歌地圖以及一般來說在全球定位系統(global positioning system,GPS)應用中,使用圖形來構建交通系統,其中兩條(或更多條)道路的交叉點被認為是頂點且連接兩個頂點的道路被認為是邊緣,因此它們的導航系統採用圖形來計算兩個頂點之間的最短路徑。同樣,在搜索及推薦引擎中使用圖形來識別頁面相關性及互連性。在臉書(Facebook)及社交媒體中,用戶被認為是頂點且如果他們是朋友的話,那麼他們之間就會存在邊緣。臉書的朋友建議技術(Friend suggestion technique)使用圖形理論。
圖形應用的重要的性能瓶頸是巨大的圖形大小以及隨機輸入/輸出(input/output,IO或I/O)存取模式。標準稀疏圖形格式(standard sparse graph format)(例如壓縮稀疏列(compressed sparse row,CSR)及壓縮稀疏行(compressed sparse column,CSC))涉及邊緣值的隨機存取。由於具有數百萬個頂點及數十億條邊緣的大的圖形不適合動態隨機存取記憶體(dynamic random access memory,DRAM),因此標準稀疏圖形格式會導致隨機磁碟存取將圖形資料儲存在磁碟上並從磁碟載入圖形資料。計算量少的IO密集型圖形工作負荷由於其隨機IO存取模式而遭受高的IO延遲,這是由於即使是快的快速非揮發性記憶體(non-volatile memory express,NVME)器件也會具有與它們的順序性存取速度相比低得多的隨機讀取及寫入速度。
根據一個一般方面,一種裝置可包括主機處理器介面電路,所述主機處理器介面電路被配置成與外部主機處理器電路傳送資料及命令。所述裝置可包括控制器處理器電路,所述控制器處理器電路被配置成將圖形資料元合併成合併動態分片,其中所述合併動態分片中的每一個合併動態分片包括相同數目的圖形資料元。所述裝置可包括非揮發性記憶體,所述非揮發性記憶體被配置成將資料儲存在至少部分的圖形結構中,其中所述圖形結構包括各自包含頂點及邊緣的資料元,且其中所述資料元的子部分被分組成分片。
根據另一一般方面,一種系統可包括主機處理器電路,所述主機處理器電路被配置成執行與圖形資料結構有關的指令。所述系統可包括至少一個儲存器件。每一個儲存器件可包括主機處理器介面電路,所述主機處理器介面電路被配置成與所述主機處理器電路傳送資料。所述儲存器件可包括控制器處理器電路,所述控制器處理器電路被配置成將圖形資料元合併成合併動態分片,其中每一個合併動態分片包括相同數目的圖形資料元。所述儲存器件可包括非揮發性記憶體,所述非揮發性記憶體被配置成將資料儲存在至少部分的圖形結構中,其中所述圖形結構包括各自包含頂點及邊緣的資料元,且其中所述資料元的子部分被分組成分片。
在附圖及以下說明中闡述一種或多種實施方式的細節。通過本說明及圖式以及通過權利要求書,其他特徵將顯而易見。
實質上在各圖中的至少一個圖中示出和/或結合各圖中的至少一個圖闡述的一種對資料進行儲存及處理的系統和/或方法,且更具體來說,關於用於圖形工作負荷的儲存體中的最佳動態分片創建在權利要求書中予以更完整的闡述。
在下文中,將參照附圖更充分地闡述各種示例性實施例,在所述附圖中示出一些示例性實施例。然而,本發明所揭露主題可被實施為許多不同形式,而不應被視為僅限於本文所述示例性實施例。確切來說,提供這些示例性實施例是為了使本揭露將透徹及完整,並將向所屬領域中的技術人員充分傳達本發明所揭露主題的範圍。在圖式中,為清晰起見,可誇大各個層及各個區的大小及相對大小。
應理解,當稱一元件或層位於另一元件或層“上(on)”、“連接到(connected to)”或“耦合到(coupled to)”另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接到或直接耦合到所述另一元件或層,抑或可存在中間元件或層。相比之下,當稱一元件“直接位於(directly on)”另一元件或層上、“直接連接到(directly connected to)”或“直接耦合到(directly coupled to)”另一元件或層時,則不存在中間元件或層。相同的編號自始至終指代相同的元件。本文所用用語“和/或(and/or)”包括相關列出項中的一個或多個項的任意及所有組合。
應理解,儘管在本文中可使用“第一(first)”、“第二(second)”、“第三(third)”等用語來闡述各個元件、元件、區、層和/或區段,然而這些元件、元件、區、層和/或區段不應受限於這些用語。這些用語僅用於區分各個元件、元件、區、層或區段。因此,以下論述的第一元件、元件、區、層或區段也可被稱為第二元件、元件、區、層或區段,而此並不背離本發明所揭露主題的教示內容。
為易於說明,在本文中可使用例如“在…之下(beneath)”、“在…下面(below)”、“下部的(lower)”、“在…上方(above)”、“上部的(upper)”等空間相對性用語來闡述圖中所示一個元件或特徵與另一(其他)元件或特徵的關係。應理解,空間相對性用語旨在除圖中所繪示的取向外還囊括器件在使用或操作中的不同取向。舉例來說,如果圖中所示器件被翻轉,則被闡述為位於其他元件或特徵“下面”或“之下”的元件此時將被取向為位於所述其他元件或特徵“上方”。因此,示例性用語“在…下面”可囊括“上方”及“下面”兩種取向。器件可具有其他取向(旋轉90度或處於其他取向)且本文所用的空間相對性描述語可相應地進行解釋。
同樣地,為易於說明,在本文中可使用例如“高(high)”、“低(low)”、“上拉(pull up)”、“下拉(pull down)”、“1”、“0”等電性用語來闡述圖中所示電壓準位或電流相對於其他電壓準位的關係或者相對於另一(其他)元件或特徵的關係。應理解,所述電性相對用語旨在除了圖中所繪示的電壓或電流之外還囊括器件在使用或操作中的不同的參考電壓。舉例來說,如果圖中所示器件或訊號被反相或使用其他參考電壓、電流或電荷,則被闡述為“高”或“被上拉”的元件此時與新的參考電壓或電流相比將為“低”或“被下拉”的。因此,示例性用語“高”可囊括相對低的電壓或電流或者相對高的電壓或電流二者。器件可另外地基於不同的電性參考框架且本文所用的電性相對描述語可相應地加以解釋。
本文所用術語僅是出於闡述特定示例性實施例的目的而並非旨在限制本發明所揭露主題。除非上下文清楚地另外指明,否則本文所用單數形式“一(a、an)”及“所述(the)”旨在也包括複數形式。還應理解,當在本說明書中使用用語“包括(comprises和/或comprising)”時,是指明所陳述特徵、整數、步驟、操作、元件和/或元件的存在,但不排除一個或多個其他特徵、整數、步驟、操作、元件、元件和/或其群組的存在或添加。
在本文中參照剖視圖闡述示例性實施例,所述剖視圖是對理想示例性實施例(及中間結構)的示意性例示。由此,預期會因例如製造技術和/或容差而導致相對於例示形狀的變化。因此,示例性實施例不應被視為僅限於本文所示區的特定形狀,而是應包含由例如製造引起的形狀偏差。舉例來說,被例示為矩形的注入區將通常具有圓形特徵或曲線特徵和/或在其邊緣存在注入濃度的梯度而非從注入區到非注入區為二元變化。同樣地,通過注入而形成的掩埋區可在所述掩埋區與在進行注入時所經過的表面之間的區中引起一些注入。因此,圖中所例示的區為示意性的且其形狀並非旨在例示器件的區的實際形狀且並非旨在限制本發明所揭露主題的範圍。
除非另外定義,否則本文所用所有用語(包括技術及科學用語)的含義均與本發明所揭露主題所屬領域中的一般技術人員所通常理解的含義相同。還應理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非在本文中明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
在下文中,將參照附圖詳細闡釋示例性實施例。
圖1是根據所揭露主題的系統100的示例性實施例的方塊圖。在各種實施例中,系統100可包括計算器件,例如(舉例來說)膝上型電腦(laptop)、臺式電腦、工作站、個人數位助理、智慧手機、平板電腦、系統晶片(system-on-a-chip,SoC)及其他適合的電腦或者虛擬機器或虛擬機器的虛擬計算器件。應理解,以上僅為幾個例示性實例,所揭露主題並非僅限於此。
如上所述,圖形計算通常涉及將大量資料儲存在大型儲存系統(常常是分散式儲存系統)上。同樣,圖形資料結構的處理通常在多個計算器件上並行地實行。趨勢是將處理從所述多個器件移離且移到單個計算器件上。儘管如此,但所揭露主題可應用於包括分佈的多個系統的實施例。
如上所述,圖形應用的重要的性能瓶頸是巨大的圖形大小以及隨機輸入/輸出(IO或I/O)存取模式。標準稀疏圖形格式(例如壓縮稀疏列(CSR)及壓縮稀疏行(CSC))涉及邊緣值的隨機存取。由於具有數百萬個頂點及數十億條邊緣的大的圖形不適合動態隨機存取記憶體(DRAM),因此標準稀疏圖形格式會導致隨機磁碟存取將圖形資料儲存在磁碟上並從磁碟載入圖形資料。計算量少的IO密集型圖形工作負荷由於其隨機IO存取模式而遭受高的IO延遲,這是由於即使是快的快速非揮發性記憶體(NVME)器件也會具有與它們的順序性存取速度相比低得多的隨機讀取及寫入速度。
在所示實施例中,系統100可用來嘗試減少對圖形結構進行處理所需的IO存取的量。系統100示出其中在儲存器件106上實行圖形結構處理中的部分處理的一個實施例。在另一實施例中,相同的處理或所述處理中的部分處理仍可由主機處理器件102實行。應理解,以上僅為一個例示性實例,所揭露主題並非僅限於此。
在所示實施例中,系統100可包括主機處理器件或電路102。在此種實施例中,主機處理器102可被配置成執行一個或多個機器可執行指令或者一個或多個軟體、韌體或其組合。在各種實施例中,主機處理器102可包括中央處理器(central processing unit,CPU)或其他通用處理器。在另一實施例中,主機處理器102可包括專用處理器(例如,圖形處理單元(graphical processing unit,GPU)或其他並行的面向計算的(computation-oriented)處理器)。在此種實施例中,主機處理器102可實行圖形結構的總體處理中的大部分處理。應理解,以上僅為幾個例示性實例,所揭露主題並非僅限於此。
在所示實施例中,系統100可包括系統記憶體104。在各種實施例中,系統記憶體104可包括揮發性記憶體(例如,DRAM)、非揮發性記憶體、或其組合。在各種實施例中,記憶體104可被配置成以臨時或半永久的形式儲存資料。
在所示實施例中,系統100可包括儲存器件106。在各種實施例中,儲存器件106可被配置成以半永久或實質上永久的形式儲存資料。在所示實施例中,儲存器件106可包括非揮發性記憶體(例如快閃記憶體、磁性記憶體)。此外,在所示實施例中,儲存器件106可被配置成至少部分的地處理圖形資料結構。在各種實施例中,系統100可包括多個儲存器件106。
在此種實施例中,儲存器件106可包括儲存系統介面或電路118,儲存系統介面或電路118被配置成與主機處理器件102或儲存管理系統(未示出)進行通訊(例如,進行資料及命令二者的通訊),儲存管理系統又與主機處理器102進行通訊。
在此種實施例中,儲存器件106可包括記憶體儲存體(memory storage)116或用於儲存資料的多個記憶單元、電路或元件。在所示實施例中,記憶體儲存體116可被配置成儲存構成圖形資料結構或圖形資料結構的一部分的多個資料元122。
在各種實施例中,儲存器件106可包括被配置成在記憶體儲存體116與儲存系統介面118之間進行通訊的輸入/輸出(IO或I/O)系統或電路114。在各種實施例中,IO系統114可包括快閃記憶體轉換層(flash translation layer,FTL)電路或其他結構。在此種實施例中,IO系統114可包括各種高速緩衝記憶體(cache)、表、或資料結構及用於實施這些高速緩衝記憶體(cache)、表、或資料結構的電路。
在所示實施例中,儲存器件106可包括控制器處理器電路112。在各種實施例中,控制器處理器112可被配置成在儲存器件104內實行各種資料管理活動。在此種實施例中,這可包括磨損均衡(wear-leveling)、寫入合併(write merging)等。在所示實施例中,控制器處理器112還可被配置成至少部分的地處理圖形資料的資料元122。在一些實施例中,主機處理器102可能夠將一些處理任務卸載到控制器處理器112。具體來說,在此種實施例中,控制器處理器112可被配置成將圖形資料元合併成合併動態分片、預測活躍邊緣/頂點、和/或重新指派頂點識別符(identifier,ID)。應理解,以上僅為幾個例示性實例,所揭露主題並非僅限於此。
圖2A及圖2B是根據所揭露主題的資料結構200、204及206的示例性實施例的圖。在各種實施例中,這些資料結構200、204及206可至少部分的地儲存在儲存器件或記憶單元中。
資料結構200示出示例性圖形資料結構。如上所述,圖形資料結構可包括多個頂點212(例如,頂點A、B、C、D及E)。這些頂點212可表示各種現實世界或概念事物(例如,人、十字路口、網頁、待售商品等)。這些頂點212可通過邊緣214連接。一般來說,每一條邊緣214包括與其相關聯的強度或值,所述強度或值指示頂點212之間的關聯的一些屬性。此外,每一條邊緣214可包括方向。一些圖形可為單向的或者雙向的。舉例來說,邊緣X 214可將來源頂點A 212與目的地或目標頂點B 212連接起來。在各種實施例中,大量的其他屬性可與頂點212及邊緣214相關聯。
資料結構204示出:在一個實施例中,每一條邊緣214可被儲存為資料元204。在此種實施例中,資料元204可包括包含來源頂點識別符(ID)252、目標頂點ID 254及邊緣值256的三重資料。在各種實施例中,這些子元252、254及256可包括它們自己的資料結構(例如,陣列、關聯陣列、鍵值對(key-value pair))或者指向資料結構的指標。在各種實施例中,資料元204可包括附加屬性或值。應理解,以上僅為一個例示性實例,所揭露主題並非僅限於此。
資料結構206示出:在一個實施例中,資料結構200可實際上儲存在儲存器件中。在此種實施例中,資料結構206可包括圖形200的每一條邊緣214的資料元270、272、274、276、278及280(統稱為資料元204)。在各種實施例中,資料元204可由來源頂點ID 252進行分類或組織。
圖3A、圖3B及圖3C是根據所揭露主題的系統300及資料結構312、314及316的示例性實施例的圖。在所示實施例中,系統300可還包括主機處理器(示出在圖1中)。
在所示實施例中,圖形資料結構可被修剪或減少成被稱為“分片(shard)”的可管理的部分。圖形結構常常包含數十億條邊緣。這意味著它們必須在大型平行計算集群上進行處理。為了解決這個問題,並行滑動視窗(Parallel Sliding Window,PSW)已被用於處理來自磁碟的非常大的圖形。由於將較大的圖形分成較小的子部分,因而每一個子部分可由單個計算器件(例如,主機處理器)單獨處理,而不需要巨大的集群或分散式運算系統。
如上所述,圖形可被分組成包含共性(commonality)的分片312,例如,所有邊緣具有相同的目的地頂點或來源頂點。在此種實施例中,可對分片的大小進行選擇以平衡計算任務的大小與更多資料的效率。
此外,圖形結構一般會以迴圈(loop)形式或通過多次反覆運算進行處理。在重新開始整個進程之前,計算系統將處理或分析整個圖形。如上所述,在每次反覆運算之間,邊緣/頂點之間的值或連接可能會改變。以一定方式發生改變的值被認為是“活躍的”,而不發生改變的邊緣/頂點常常被認為是“非活躍的”。
在所示實施例中,儲存器件或記憶單元306儲存原始分片312。在所示實施例中,示出三個分片312。第一個分片包括資料元1A、1B、2A、2B、3A及3B。第二個分片包括資料元1C、1D、2C、2D、3C及3D。第三個分片包括資料元1E、1F、2E、2F、3E及3F。
在所示實施例中,處理器件(例如,主機處理器)可將期望的資料元從分片312載入或讀取到系統記憶體304(例如,DRAM)中。在圖3A的所示實施例中,期望的資料元可包括第一個分片的全部元(1A、1B、2A、2B、3A及3B)、第二個分片的元1C及1D以及第三個分片的元1E及1F。這些資料元可包括處理中(in-process)的分片314A。
在此處理期間,處理器件可檢測到分片314A的一部分已發生改變或者是活躍的。這由框315A表示,框315A指示元1A、1C及1E自上次反覆運算以來已發生改變且是活躍的。
在此種實施例中,處理器件可將活躍元315A寫回到儲存體306。這些活躍元315A可包括在一組動態分片316A中,所述一組動態分片316A是分片312的編輯版本(redacted version)或最小化版本。在此種實施例中,這些動態分片316A可僅包括活躍元、具有活躍邊緣的元、或者在一些實施例中具有活躍頂點的元。
繼續進行說明,圖3B示出下一個處理步驟。在第二個處理步驟或階段中,處理器件(例如,主機處理器)可將期望的資料元從分片312載入或讀取到系統記憶體304中。在圖3B的所示實施例中,期望的資料元可包括第一個分片的元2A及2B、第二個分片的所有元以及第三個分片的元2E及2F。這些資料元可包括處理中的分片314B。
在此處理期間,處理器件可檢測到分片314B的一部分已發生改變或者是活躍的(元1A、1C及1E已被檢測為活躍的)。這由框315B表示,框315B指示元2A、2C及2E自上次反覆運算以來已發生改變且是活躍的。在此種實施例中,處理器件可將活躍元315B寫回到儲存體306。這些活躍的元315B可包括在一組動態分片316B中或者附加/添加到一組動態分片316B。
圖3C示出下一個處理步驟。在第三個處理步驟或階段中,處理器件(例如,主機處理器)可將期望的資料元從分片312載入或讀取到系統記憶體304中。在圖3C的所示實施例中,期望的資料元可包括第一個分片的元3A及3B、第二個分片的元3C及3D以及第三個分片的所有元。這些資料元可包括處理中的分片314C。
在此處理期間,處理器件可檢測到分片314C的一部分已發生改變或者是活躍的。這由框315C表示,框315C指示元3A、3C及3E自上次反覆運算以來已發生改變且是活躍的。在此種實施例中,處理器件可將活躍元315C寫回到儲存體306。這些活躍元315C可包括在一組動態分片316C中或者附加/添加到一組動態分片316C。
在所示實施例中,創建三個動態分片316C。第一個動態分片包括元1A、2A及3A。第二個動態分片包括元1C、2C及3C。另外,第三個動態分片包括元1E、2E及3E。應理解,以上僅為一個例示性實例,所揭露主題並非僅限於此。在此種實施例中,由於活躍元可發生改變,因此動態分片316C可在圖形處理的每次反覆運算之後發生改變。
在此種實施例中,由於需要在記憶體304與儲存體306之間傳輸較少的資料,因此使用動態分片316C可減少未來處理(在未來反覆運算中)的IO低效性。然而,小的分片大小會減少圖形處理的並行性的程度並增加磁碟存取的數目。圖形工作負荷的磁碟存取的數目保持相同,同時資料的量減少,從而導致對可用記憶體預算的低效利用。
圖3D、圖3E及圖3F是根據所揭露主題的系統301的示例性實施例的圖。在所揭露主題中,並不接受及使用以上創建的動態分片316,而是可創建提供更高效率的新的動態分片。此外,這種創建可通過卸載電路或引擎來進行。在一些實施例中,這可包括儲存器件本身(進一步減少IO訊務量(traffic))且可由控制器處理器(而非主機處理器)來實行。
在所示實施例中,系統或儲存器件301可包括位於儲存部分中的多個記憶單元356以及包括合併或處理電路354。在各種實施例中,合併電路354可包括儲存器件301的控制器處理器。在另一實施例中,合併操作及合併電路354可包括在主機處理器中。然而,本地化的(而非外部的)合併電路354可減少IO開銷並進一步提高效率,如下所述。
在圖3D的所示實施例中,多個動態分片317(例如,通過上述技術創建的動態分片)可儲存在記憶單元356中。這些分片317可然後被載入到合併電路354中。在另一實施例中,合併電路354可在資料仍處於儲存體356中的情況下實行其工作。
在此種實施例中,合併電路354可將元的子集364D(1A、1C、1E及1G)載入到合併電路354的緩衝器中(作為元364D)。合併電路354可然後根據期望的分片大小及元的數目對元364D進行重新分組。在所示實施例中,合併電路354可將四個較小的動態分片317重新形成為兩個較大的合併動態分片366D。應理解,以上僅為一個例示性實例,所揭露主題並非僅限於此。
在所示實施例中,元1A及1C可被寫回到記憶單元356成為第一合併動態分片。同時,元1E及1G可被寫回到記憶單元356成為第二合併動態分片。這些分片可包括在合併動態分片366D中。
繼續圖3E,合併電路354可將元的子集364E(2A、2C、2E及2G)載入到合併電路354的緩衝器中(作為元364E)。合併電路354可然後根據期望的分片大小及元的數目對元364E進行重新分組。
在所示實施例中,元2A及2C可被寫回或附加到記憶單元356成為第一合併動態分片。同時,元2E及2G可被寫回或附加到記憶單元356成為第二合併動態分片。這些分片可包括在合併動態分片366E中。
繼續圖3F,合併電路354可將元的子集364F(3A、3C、3E及3G)載入到合併電路354的緩衝器中(作為元364F)。合併電路354可然後根據期望的分片大小及元的數目對元364F進行重新分組。
在所示實施例中,元3A及3C可被寫回或附加到記憶單元356成為第一合併動態分片。同時,而元3E及3G可被寫回或附加到記憶單元356成為第二合併動態分片。這些分片可包括在合併動態分片366F中。
在各種實施例中,合併操作可涉及每一個間隔(或每多個間隔)進行重複的讀取操作及寫入操作。在此種實施例中,合併電路354可對多個動態分片317實行讀取以獲得最近更新的值。在此種實施例中,合併電路354可然後對新的合併分片366實行寫入操作。在一個實施例中,在合併過程完成之後,合併電路354可釋放或不再阻止向動態分片317的寫入,這是由於所有活躍邊緣或元均被合併到合併分片366。
在此種實施例中,用於合併操作的(以及由合併電路354進行的)記憶體存取模式可為順序性存取模式和/或串流式(streaming)存取模式。這可能是由於已按來源頂點索引或ID對輸入分片317進行了分類,且合併電路354然後基於邊緣的來源頂點索引或ID對輸出進行分類。在此種實施例中,用於動態分片317的記憶體存取模式可包括順序性讀取且合併分片366的記憶體存取模式可包括順序性寫入。
在各種實施例中,合併操作可在儲存器件內實行,且可不(或最小程度地)影響較大的系統(例如,消耗通往RAM的頻寬、消耗CPU迴圈等)。如上所述,合併電路354可包括在儲存器件的控制器處理器中。在各種實施例中,這可包括也實行一般儲存維護(例如,磨損均衡、寫入合併等)的控制器處理器。然而,在另一實施例中,合併電路356可包括專用處理器,例如嵌入式處理器、平行計算處理器或可重新程式化處理器(例如,現場可程式化閘陣列(field-programmable gate array,FPGA)等)。此外,在各種實施例中,在儲存器件內實施合併操作可減少所需的RAM的量,這是由於所述操作要求只可將來自每一個動態分片的僅一個邊緣表項放置在緩衝器中以供比較。
如上所述,動態分片316的典型創建及用於圖形計算目的的分片的處理通常涉及三個階段:讀取、處理及寫入。從儲存器件讀取原始資料(讀取階段)。然後進行處理,在這種情況下包括創建動態分片316(處理階段)。並且,接著最後寫回到儲存體(寫入階段)。
在所示實施例中,合併動態分片366的創建及處理可在以上過程中在儲存器件不被使用或者在儲存器件具有多餘的資源能力(例如,頻寬、記憶單元356上的讀取/寫入埠等)時進行。在此種實施例中,合併電路354可等待創建合併分片366直到主機處理器已進入處理階段為止。在讀取及寫入階段期間,儲存器件可被使用,但在處理階段期間,儲存器件可能一般是空閒的。在此種實施例中,所揭露主題可在圖形結構的整個處理期間利用未被使用的IO頻寬及計算能力。
返回圖3A,由圖可見,動態分片的創建是基於對活躍邊緣(例如,活躍元315A、315B及315C)的檢測。在各種實施例中,對活躍邊緣的檢測和/或預測可使圖形資料的處理更高效。在各種實施例中,處理器(主機或控制器)可利用多種活躍邊緣(或元)的檢測或預測策略。在此種實施例中,處理器可被配置成基於所採用的圖形應用或設置而在這多種策略之間動態地切換或者動態地修改這些策略的值或閾值。應理解,以上僅為幾個例示性實例,所揭露主題並非僅限於此。
在此種實施例中,處理器(主機或控制器)可被配置成確定頂點及邊緣的活躍性,且還使用不同的預測策略確定活躍邊緣預測的未命中率。因此,失敗的策略可由更準確的策略來代替。在此種實施例中,可針對不同的預測策略來確定不同的參數,這是由於每一個預測策略利用不同的參數進行預測。在各種實施例中,多種預測策略可為正交的,且可加以組合以進行更好的預測。
第一預測策略可包括改變用於預測的預測頻率或歷史深度。基於僅一次先前的反覆運算來決定活躍邊緣對於緊接在所述先前的反覆運算後面的下一次反覆運算來說可能是高效的優化。但可能並非對於接下來的所有反覆運算來說均是最高效的場景。在此種實施例中,在每次反覆運算中不更新活躍邊緣可能是有益的。在各種實施例中,先前活躍的邊緣可在短時間空閒後再次變為活躍的。因此,在動態分片中保持先前活躍的或休眠的邊緣(並使用較大的子圖形)可能比從子圖形移除立即非活躍的邊緣具有較低的未命中預測,因此可具有更低的性能開銷。在此種實施例中,在邊緣被認為非活躍之前非活躍性的水準(交互的數目)可通過確定未命中率來動態地調整預測頻率。在各種實施例中,這可能涉及到使用閾值。
返回圖2B,邊緣更新一般有兩種分類:被觀察到的更新或未被觀察到的更新。被觀察到的更新是在圖形處理的當前反覆運算期間已知的更新。然而,未被觀察到的更新是直到圖形處理的下一次反覆運算才知道的更新。被觀察到的更新是其中目標頂點ID大於來源頂點ID(例如,資料元270、272、274及278)的更新。這一般是由於資料元以其來源頂點ID的次序進行處理。未被觀察到的更新是其中目標頂點ID小於來源頂點ID(例如,資料元276及280)的更新。
在各種實施例中,與未被觀察到的更新相比,活躍邊緣確定/預測機制在如何處置被觀察到的更新方面可能會不同。在一個此種實施例中,所有未被觀察到的邊緣可被認為是活躍的,而不管它們的狀態或值發生任何改變。在此種實施例中,可僅對被觀察到的更新進行測試以查看它們是否實際上發生改變,且因此是活躍的。在此種實施例中,消除未改變的被觀察到的更新對於下一次反覆運算來說可能更IO高效。此外,對邊緣的更新也是關於頂點及邊緣處於“熱的”狀態且未來可能涉及更多更新的指示。
在各種實施例中,一種確定/預測活躍資料元的策略可包括基於頂點的預測及分析。在一個此種實施例中,當給定頂點的傳入邊緣(incoming edge)中的一者發生更新時,處理器可將與此頂點有關的所有邊緣標記為活躍的。在一些實施例中,處理器可被設定成僅傳出邊緣(outgoing edge)是活躍的。在各種實施例中,基於頂點的預測可導致大的動態分片大小,但也可具有比基於邊緣的預測低的未命中預測率且因此具有比基於邊緣的預測低的性能開銷。
在再一實施例中,另一種用於確定/預測活躍資料元的策略可包括基於值的預測模型。在一個實施例中,可採用可變閾值進行活躍邊緣預測。在此種實施例中,並非將任何發生改變的邊緣標記為活躍的,而是可要求邊緣在被認為是活躍的之前改變有意義的(由閾值定義的)量。在此種實施例中,邊緣(或者頂點-如果與以上基於頂點的策略結合使用的話)在被認為是活躍的之前可被允許有特定量的變化。在一個此種實施例中,如果變化的量低於閾值,則處理器可將所述邊緣從活躍邊緣中除去,且因此通過減少被處理的邊緣的量來改善總體系統性能。應理解,以上僅為幾個例示性實例,所揭露主題並非僅限於此。
圖4A及圖4B是根據所揭露主題的資料結構400及401的示例性實施例的圖。在各種實施例中,資料結構400及401可至少部分地儲存在儲存媒體或器件中,如上所述。在各種實施例中,以下闡述的動作可由控制器處理器(或其他處理器,例如主機處理器)來實行。在此種實施例中,控制器處理器可在沒有主機處理器的說明或未使用主機處理器的情況下以及在其中儲存器件可能原本空閒或具有多餘資源的時間段期間實行動作。應理解,以上僅為幾個例示性實例,所揭露主題並非僅限於此。
在所示實施例中,資料結構400可包括多個頂點402,所述多個頂點402由索引或識別符(ID)A到L標記。如圖4A中所示,這些索引可能有些混亂。舉例來說,頂點A經由兩條邊緣連接到頂點L,但從未連接到頂點B。頂點K連接到頂點A、B及J。在此種實施例中,頂點ID可能已由於頂點被添加到資料結構400而被指派,或者由於其他原因被指派。同樣,在許多圖形應用中,資料結構可包括數十億個頂點。在一些實施例中,資料結構400可表示較大圖形的子圖形,其中子圖形儲存在單個儲存器件中。
在各種實施例中,處理器(例如,控制器處理器)可被配置成重新指派頂點ID。在此種實施例中,處理器可被配置成將目的地頂點的頂點ID重新指派為更接近(在數值上更接近,或者在所示實施例中在字母順序上更接近)來源頂點ID的ID。
在各種實施例中,這可通過遍歷圖形結構400來完成。舉例來說,處理器可遍歷圖形結構400、確定來源及目的地、然後根據需要或盡可能地重新指派頂點ID。在一些實施例中,處理器可使用例如廣度優先搜索(Breath First Search,BFS)或深度優先搜索(Depth First Search,DFS)等技術來實行遍歷;儘管如此,但應理解,以上僅為幾個例示性實例,所揭露主題並非僅限於此。
在一個此種實施例中,重新指派技術可產生圖4B的圖形結構401。同樣,頂點402具有從A到L的ID,但這些ID指派的隨機性可小得多或者可更具有順序性。舉例來說,通過將頂點L重新指派為頂點B,頂點A與頂點B現在彼此接近並共用邊緣。應理解,這種重新指派並不會改變頂點L/B的含義或其值,重新指派僅會改變與其相關聯的索引或識別符。同樣,最初在圖形400中被標記或識別為B的頂點在圖形401中沒有“移動”;它僅被重命名或重新指派為標籤D。
然而,在圖2B的結構206中可看出,資料元傾向於基於它們的頂點ID進行分類或儲存。因此,通過重新指派頂點ID以使得來源與目的地彼此更靠近,它們的相關聯的資料元會因而被儲存得彼此更靠近。這可能會實現更高效的資料存取,這是由於資料存取可能更常常是順序性的,而不是隨機的或非順序性的。因此會減少磁碟存取的數目。頂點ID的重新指派可實現圖形的實際資料結構的分類或更高效儲存。
在各種實施例中,這種重新指派可僅對活躍頂點實行。在各種實施例中,活躍頂點的數目通常比整個圖形或子圖形內的頂點的數目小得多。在此種實施例中,將ID重新指派到更少的頂點可增加指派更靠近其來源頂點的ID的可能性。如上所述,在一些實施例中,可採用各種邊緣預測技術來定義什麼是活躍頂點。
在一些實施例中,重新指派技術可實現更快的活躍頂點/邊緣確定或預測。在此種實施例中,當活躍頂點被指派較低的ID時,所述活躍頂點在圖形處理(傾向於根據ID按次序處理資料元)的每次反覆運算的開始(或更接近開始)時被處理。一般來說,為了識別頂點或邊緣是否活躍,處理器需要等到頂點的所有傳入邊緣都被處理完。同樣,通過重新指派資料元或對資料元進行分類以使得相關聯的資料元被分組在一起,可減少等待時間。
在各種實施例中,頂點重新指派可與動態分片的併發合併(concurrent merging)一起使用。如上所述,合併操作可包括在每一個間隔期間進行重複的讀取操作及寫入操作。在此種實施例中,通過重新指派ID以使得更新被部分的化成單個分片,可減少合併動態分片所需的分片存取的數目。這繼而可使收集與新的分片相關聯的所有更新的時間更短。
圖5是可包括根據所揭露主題的原理形成的半導體器件的資訊處理系統500的示意性方塊圖。
參照圖5,資訊處理系統500可包括根據所揭露主題的原理構造而成的一個或多個器件。在另一實施例中,資訊處理系統500可採用或執行根據所揭露主題的原理的一種或多種技術。
在各種實施例中,資訊處理系統500可包括計算器件,例如(舉例來說)膝上型電腦、臺式電腦、工作站、伺服器、刀片伺服器(blade server)、個人數位助理、智慧手機、平板電腦及其他適合的電腦或者虛擬機器或虛擬機器的虛擬計算器件。在各種實施例中,資訊處理系統500可由使用者(圖中未示出)使用。
根據所揭露主題的資訊處理系統500還可包括中央處理器(central processing unit,CPU)、邏輯、或處理器510。在一些實施例中,處理器510可包括一個或多個功能單元塊(functional unit block,FUB)或組合邏輯塊(combinational logic block,CLB)515。在此種實施例中,組合邏輯塊可包括各種布林邏輯運算(例如,反及、反或、反相、互斥或)、穩定化邏輯器件(例如,正反器、鎖存器)、其他邏輯器件或其組合。這些組合邏輯運算可以簡單方式或複雜方式進行配置,以對輸入訊號進行處理來實現期望結果。應理解,儘管闡述了同步組合邏輯運算的幾個例示性實例,然而所揭露主題並不受限於此且可包括非同步運算或其混合。在一個實施例中,組合邏輯運算可包括多個互補金屬氧化物半導體(complementary metal oxide semiconductor,CMOS)電晶體。在各種實施例中,這些CMOS電晶體可被排列成用於實行邏輯運算的門;但是應理解,也可使用其他技術且所述其他技術也處於所揭露主題的範圍內。
根據所揭露主題的資訊處理系統500還可包括揮發性記憶體520(例如,隨機存取記憶體(RAM))。根據所揭露主題的資訊處理系統500還可包括非揮發性記憶體530(例如,硬驅動器、光學記憶體、反及型記憶體或快閃記憶體記憶體)。在一些實施例中,揮發性記憶體520、非揮發性記憶體530或它們的組合或一些部分可被稱為“儲存媒體”。在各種實施例中,揮發性記憶體520和/或非揮發性記憶體530可被配置成以半永久形式或實質上永久形式儲存資料。
在各種實施例中,資訊處理系統500可包括一個或多個網路介面540,所述一個或多個網路介面540被配置成使資訊處理系統500成為通訊網路的一部分且通過通訊網路進行通訊。Wi-Fi協定的實例可包括但不限於電氣及電子工程師協會(Institute of Electrical and Electronics Engineers,IEEE)802.11g、IEEE 802.11n。蜂窩協定的實例可包括但不限於:IEEE 802.16m(又名,先進無線都會區域網路(Metropolitan Area Network,MAN))、先進長期演進(Long Term Evolution,LTE)、增強資料速率全球移動通訊系統(Global System for Mobile Communications,GSM)演進(Enhanced Data rates for GSM Evolution,EDGE)、演進高速資料包存取(Evolved High-Speed Packet Access,HSPA+)。有線協定的實例可包括但不限於IEEE 802.3(又名乙太網)、光纖通道、電力線通訊(例如,家庭插座(HomePlug)、IEEE 1901)。應理解,以上僅為幾個例示性實例,所揭露主題並非僅限於此。
根據所揭露主題的資訊處理系統500還可包括使用者介面單元550(例如,顯示卡、觸覺介面、人機介面器件)。在各種實施例中,這種使用者介面單元550可被配置成從使用者接收輸入和/或向用戶提供輸出。也可使用其他種類的器件來實現與用戶的交互;舉例來說,提供到用戶的回饋可為任意形式的感覺回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且來自用戶的輸入可以任意形式接收,包括聲學輸入、語音輸入或觸覺輸入。
在各種實施例中,資訊處理系統500可包括一個或多個其他器件或硬體元件560(例如,顯示器或監視器、鍵盤、滑鼠、相機、指紋讀取器、視頻處理器)。應理解,以上僅為幾個例示性實例,所揭露主題並非僅限於此。
根據所揭露主題的資訊處理系統500還可包括一條或多條系統匯流排505。在此種實施例中,系統匯流排505可被配置成對處理器510、揮發性記憶體520、非揮發性記憶體530、網路介面540、使用者介面單元550及一個或多個硬體元件560進行通訊耦合。經處理器510處理的資料或從非揮發性記憶體530外部輸入的資料可儲存在非揮發性記憶體530中或揮發性記憶體520中。
在各種實施例中,資訊處理系統500可包括或執行一個或多個軟體元件570。在一些實施例中,軟體元件570可包括作業系統(operating system,OS)和/或應用。在一些實施例中,OS可被配置成向應用提供一種或多種服務並管理或充當應用與資訊處理系統500的各種硬體元件(例如,處理器510、網路介面540)之間的仲介。在此種實施例中,資訊處理系統500可包括一種或多種本地應用,所述一種或多種本地應用可在本地安裝(例如,安裝在非揮發性記憶體530內)且被配置成由處理器510直接執行並與OS直接進行交互作用。在此種實施例中,本地應用可包括預先編譯的機器可執行代碼。在一些實施例中,本地應用可包括腳本解譯器(例如,C shell(csh)、蘋果腳本(AppleScript)、AutoHotkey)或虛擬執行機(virtual execution machine,VM)(例如,Java虛擬機器、微軟公共語言運行時環境(Microsoft Common Language Runtime)),腳本解譯器及虛擬執行機被配置成將原始程式碼或目標代碼轉換成可執行代碼,然後由處理器510來執行所述可執行代碼。
上述半導體器件可使用各種封裝技術來進行包封。舉例來說,根據所揭露主題的原理構造而成的半導體器件可使用以下中的任意一種來進行包封:層疊封裝(package on package,POP)技術、球柵陣列(ball grid array,BGA)技術、晶片尺寸封裝(chip scale package,CSP)技術、塑膠引線晶片載體(plastic leaded chip carrier,PLCC)技術、塑膠雙列直插式封裝(plastic dual in-line package,PDIP)技術、華夫包裝式裸片(die in waffle pack)技術、晶片式裸片(die in wafer form)技術、板上晶片(chip on board,COB)技術、陶瓷雙列直插封裝(ceramic dual in-line package,CERDIP)技術、塑膠公制四方扁平封裝(plastic metric quad flat package,PMQFP)技術、塑膠四方扁平封裝(plastic quad flat package,PQFP)技術、小外形封裝(small outline package,SOIC)技術、縮小型小外形封裝(shrink small outline package,SSOP)技術、薄型小外形封裝(thin small outline package,TSOP)技術、薄型四方扁平封裝(thin quad flat package,TQFP)技術、系統級封裝(system in package,SIP)技術、多晶片封裝(multi-chip package,MCP)技術、晶片級構造封裝(wafer-level fabricated package,WFP)技術、晶片級處理堆疊封裝(wafer-level processed stack package,WSP)技術或所屬領域中的技術人員將知曉的其他技術。
方法步驟可由一個或多個可程式化處理器執行電腦程式來實行,以通過對輸入資料進行操作並產生輸出來實行功能。方法步驟還可由專用邏輯電路系統(例如,現場可程式化閘陣列(field programmable gate array,FPGA)或專用積體電路(application-specific integrated circuit,ASIC))來實行,且裝置可被實施為所述專用邏輯電路系統。
在各種實施例中,電腦可讀媒體可包括指令,所述指令在被執行時會使器件實行方法步驟的至少一部分。在一些實施例中,電腦可讀媒體可包括在磁性媒體、光學媒體、其他媒體或其組合(例如,壓縮磁碟唯讀記憶體(compact disc read only memory,CD-ROM)、硬驅動器、唯讀記憶體、快閃記憶體驅動器)中。在此種實施例中,電腦可讀媒體可為以有形的及非暫時方式實施的製品。
儘管已參照示例性實施例闡述了所揭露主題的原理,然而對所屬領域中的技術人員來說顯而易見的是,在不背離這些所揭露概念的精神及範圍的條件下,可對其作出各種改變及修改。因此,應理解,以上實施例並非限制性的,而是僅為例示性的。因此,所揭露概念的範圍將由以上權利要求及其等效範圍所許可的最廣範圍的解釋來確定,而不應受上述說明約束或限制。因此,應理解,隨附權利要求旨在涵蓋落於實施例的範圍內的所有這種修改及改變。
1A、1B、1C、1D、1E、1F、2A、2B、2C、2E、2F、3A、3B、3C、3D、3E:資料元/元
1G、2G、3G:元
2D、3F、122、270、272、274、276、278、280:資料元
100、300:系統
102:主機處理器件/主機處理器件或電路/主機處理器
104:系統記憶體/記憶體/儲存器件
106:儲存器件
112:控制器處理器電路
114:輸入/輸出(IO或I/O)系統或電路
116:記憶體儲存體
118:儲存系統介面或電路/儲存系統介面
200:資料結構/圖形
204:資料結構/資料元
206:資料結構/結構
212、402:頂點
214、X:邊緣
252:來源頂點識別符(ID)/子元
254:目標頂點ID/子元
256:邊緣值/子元
301:系統/系統或儲存器件
304:系統記憶體/記憶體
306:儲存器件或記憶單元/儲存體
312:資料結構/分片/原始分片
314A、314B、314C:處理中的分片/分片/資料結構
315A、315B、315C:框/活躍元
316A、316B、316C:動態分片/資料結構
317:動態分片/分片
354:合併或處理電路/合併操作及合併電路
356:記憶單元/記憶體
364D、364E、364F:元/子集
366D、366E、366F:合併動態分片/合併分片
400、401:資料結構/圖形結構/圖形
500:資訊處理系統
505:系統匯流排
510:邏輯或處理器
515:組合邏輯塊(CLB)
520:揮發性記憶體
530:非揮發性記憶體
540:網路介面
550:使用者介面單元
560:其他器件或硬體元件
570:軟體元件
A、B、C、D、E、F、G、H、I、J、K、L:索引或識別符/頂點
圖1是根據所揭露主題的系統的示例性實施例的方塊圖。
圖2A及圖2B是根據所揭露主題的資料結構的示例性實施例的圖。
圖3A、圖3B及圖3C是根據所揭露主題的資料結構的示例性實施例的圖。
圖3D、圖3E及圖3F是根據所揭露主題的資料結構的示例性實施例的圖。
圖4A及圖4B是根據所揭露主題的資料結構的示例性實施例的圖。
圖5是可包括根據所揭露主題的原理形成的器件的資訊處理系統的示意性方塊圖。
各個圖式中相同的參考符號指示相同的元件。
100:系統
102:主機處理器件/主機處理器件或電路/主機處理器
104:系統記憶體/記憶體/儲存器件
106:儲存器件
112:控制器處理器電路
114:輸入/輸出(IO或I/O)系統或電路
116:記憶體儲存體
118:儲存系統介面或電路/儲存系統介面
122:資料元
Claims (20)
- 一種裝置,包括: 主機處理器介面電路,被配置成與外部的主機處理器電路傳送資料及命令; 控制器處理器電路,被配置成將圖形資料元合併成合併動態分片,其中所述合併動態分片中的每一者包括相同數目的所述圖形資料元;以及 非揮發性記憶體,被配置成將資料儲存在圖形結構的至少部分中,其中所述圖形結構包括各自包含頂點及邊緣的資料元,且其中所述資料元的子部分被分組成分片。
- 如申請專利範圍第1項所述的裝置,其中所述控制器處理器電路被配置成從僅包括活躍邊緣的資料元創建動態分片。
- 如申請專利範圍第1項所述的裝置,其中所述控制器處理器被配置成至少部分地基於何時所述裝置不被由所述主機處理器介面電路接收的命令佔用來實行所述圖形資料元的合併。
- 如申請專利範圍第1項所述的裝置,其中所述主機處理器介面電路被配置成: 將分片提供到外部的所述主機處理器電路進行處理,其中處理包括更新所述分片內的零個或更多個資料元;以及 若有更新的所述資料元,將更新後的所述資料元寫入到所述非揮發性記憶體作為動態分片的一部分。
- 如申請專利範圍第4項所述的裝置,其中所述控制器處理器電路被配置成: 收集經由所述主機處理器電路寫入的所述動態分片的大小; 決定要合併成合併動態分片的相鄰的動態分片或部分的分片的數目;以及 按來源識別符對活躍邊緣進行分類,以維持所述分片的次序性質。
- 如申請專利範圍第1項所述的裝置,其中所述控制器處理器電路包括緩衝記憶體;且 其中所述控制器處理器電路被配置成: 對於要被合併成合併動態分片的每一個分片, 將來自所述分片中的每一個分片的僅一個資料元從所述非揮發性記憶體複製到所述緩衝記憶體, 將所述資料元分組成一個或多個合併動態分片,以及 將所述資料元作為所述一個或多個合併動態分片的部分寫入到所述非揮發性記憶體。
- 如申請專利範圍第2項所述的裝置,其中通過活躍邊緣預測策略確定活躍邊緣。
- 如申請專利範圍第7項所述的裝置,其中所述活躍邊緣是基於由所述主機處理器電路進行的多次先前的處理反覆運算與動態調整閾值的比較來確定。
- 如申請專利範圍第7項所述的裝置,其中所述活躍邊緣包括在處理反覆運算內未被觀察到的更新後的活躍邊緣。
- 如申請專利範圍第7項所述的裝置,其中所述活躍邊緣預測策略至少部分地基於在處理反覆運算內被觀察到的更新後的活躍邊緣的未命中率來動態地調整。
- 如申請專利範圍第7項所述的裝置,其中所述活躍邊緣通過以下方式確定: 檢測與所述邊緣相關聯的頂點是否已發生改變, 如果所述頂點已發生改變,則將與所述頂點相關聯的所有邊緣或者至少特定類型的邊緣視為活躍邊緣。
- 如申請專利範圍第1項所述的裝置,其中每一個頂點與頂點索引號相關聯;且 其中所述控制器處理器電路被配置成: 將目的地頂點的索引號從第一索引號重新指派為第二索引號,使得所述目的地頂點的所述第二索引號比所述目的地頂點的所述第一索引號在數值上更接近來源頂點的索引號,其中所述來源頂點與所述目的地頂點相關聯。
- 如申請專利範圍第12項所述的裝置,其中所述控制器處理器電路被配置成: 將至少部分的所述圖形結構劃分成多個子圖形結構;以及 採用從第一頂點的遍歷技術來識別來源頂點與目的地頂點關聯性;以及 至少部分地基於所述來源頂點與目的地頂點關聯性來重新指派相應的頂點索引號。
- 如申請專利範圍第12項所述的裝置,其中所述控制器處理器電路被配置成: 如果目的地頂點是活躍頂點,則僅重新指派所述目的地頂點的索引號。
- 如申請專利範圍第12項所述的裝置,其中所述控制器處理器電路被配置成: 創建包括已被重新指派頂點索引號的資料元的一個或多個新的分片。
- 如申請專利範圍第1項所述的裝置,其中所述控制器處理器電路被配置成: 利用頂點識別號的重新指派來使活躍的更新後資料元局部化於一個或多個分片內。
- 一種系統,包括: 主機處理器電路,被配置成執行與圖形資料結構有關的指令;以及 至少一個儲存器件,其中所述至少一個儲存器件中的每一個儲存器件包括: 主機處理器介面電路,被配置成與所述主機處理器電路傳送資料; 控制器處理器電路,被配置成將圖形資料元合併成合併動態分片,其中所述合併動態分片包括相同數目的所述圖形資料元;以及 非揮發性記憶體,被配置成將資料儲存在圖形結構的至少部分中,其中所述圖形結構包括各自包含頂點及邊緣的資料元,且其中所述資料元的子部分被分組成分片。
- 如申請專利範圍第17項所述的系統,其中所述控制器處理器電路被配置成從僅包括活躍邊緣的資料元創建動態分片;且 所述控制器處理器被配置成至少部分地基於何時所述每一個儲存器件不被由所述主機處理器介面電路接收的命令佔用來實行所述圖形資料元的合併。
- 如申請專利範圍第17項所述的系統,其中所述主機處理器電路被配置成採用活躍邊緣預測策略來確定哪些邊緣是活躍邊緣。
- 如申請專利範圍第17項所述的系統,其中每一個頂點與頂點索引號相關聯;且 其中所述主機處理器電路被配置成: 將目的地頂點的索引號從第一索引號重新指派為第二索引號,使得所述目的地頂點的第二索引號比所述目的地頂點的第一索引號在數值上更接近來源頂點的索引號,其中所述來源頂點與所述目的地頂點相關聯。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862780186P | 2018-12-14 | 2018-12-14 | |
US62/780,186 | 2018-12-14 | ||
US16/274,232 | 2019-02-12 | ||
US16/274,232 US20200192880A1 (en) | 2018-12-14 | 2019-02-12 | Optimal dynamic shard creation in storage for graph workloads |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202040384A true TW202040384A (zh) | 2020-11-01 |
TWI833806B TWI833806B (zh) | 2024-03-01 |
Family
ID=71071623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108133793A TWI833806B (zh) | 2018-12-14 | 2019-09-19 | 用於分片創建的裝置及系統 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20200192880A1 (zh) |
JP (1) | JP7469026B2 (zh) |
KR (1) | KR20200073979A (zh) |
CN (1) | CN111324777A (zh) |
TW (1) | TWI833806B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11120082B2 (en) | 2018-04-18 | 2021-09-14 | Oracle International Corporation | Efficient, in-memory, relational representation for heterogeneous graphs |
US11281695B2 (en) * | 2020-01-24 | 2022-03-22 | Cisco Technology, Inc. | Partitioning a temporal graph for distributed storage |
CN111858771A (zh) * | 2020-07-30 | 2020-10-30 | 杭州复杂美科技有限公司 | 分布式数据存储方法、设备和存储介质 |
CN112231589B (zh) * | 2020-10-10 | 2023-09-29 | 腾讯科技(深圳)有限公司 | 信息管理方法及装置 |
US11791838B2 (en) | 2021-01-15 | 2023-10-17 | Samsung Electronics Co., Ltd. | Near-storage acceleration of dictionary decoding |
KR102614966B1 (ko) * | 2021-10-12 | 2023-12-19 | 서울대학교산학협력단 | 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법 |
KR102596700B1 (ko) * | 2022-06-03 | 2023-11-09 | 주식회사 블룸테크놀로지 | 블록체인 네트워크에서 인터샤드 트랜잭션 시스템 및 방법 |
KR102628759B1 (ko) * | 2022-06-14 | 2024-01-23 | 주식회사 블룸테크놀로지 | 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법 |
KR20240024465A (ko) * | 2022-08-17 | 2024-02-26 | 주식회사 블룸테크놀로지 | 블록체인 네트워크에서 다이나믹 샤딩 시스템 및 방법 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4897422B2 (ja) | 2006-09-29 | 2012-03-14 | アイシン・エィ・ダブリュ株式会社 | データ更新システム、端末装置、ナビゲーション装置、及びデータ更新方法 |
US9740762B2 (en) * | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
US9262462B2 (en) * | 2012-07-26 | 2016-02-16 | Mongodb, Inc. | Aggregation framework system architecture and method |
US8438364B2 (en) | 2010-12-30 | 2013-05-07 | Facebook Inc. | Distributed cache for graph data |
US9495477B1 (en) * | 2011-04-20 | 2016-11-15 | Google Inc. | Data storage in a graph processing system |
US20150186427A1 (en) * | 2013-12-26 | 2015-07-02 | Telefonica Digital Espana, S.L.U. | Method and system of analyzing dynamic graphs |
CN104881466B (zh) * | 2015-05-25 | 2018-09-07 | 百度在线网络技术(北京)有限公司 | 数据分片的处理以及垃圾文件的删除方法和装置 |
WO2016191760A1 (en) * | 2015-05-28 | 2016-12-01 | GraphSQL, Inc. | System and method for real-time graph-based recommendations |
US10002205B2 (en) * | 2015-11-20 | 2018-06-19 | Oracle International Corporation | Efficient method for indexing data transferred between machines in distributed graph processing systems |
US20170255708A1 (en) * | 2016-03-01 | 2017-09-07 | Linkedin Corporation | Index structures for graph databases |
US10180992B2 (en) * | 2016-03-01 | 2019-01-15 | Microsoft Technology Licensing, Llc | Atomic updating of graph database index structures |
US10089761B2 (en) * | 2016-04-29 | 2018-10-02 | Hewlett Packard Enterprise Development Lp | Graph processing using a shared memory |
US10409782B2 (en) * | 2016-06-15 | 2019-09-10 | Chen Zhang | Platform, system, process for distributed graph databases and computing |
US20180089324A1 (en) * | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US10810210B2 (en) * | 2017-05-12 | 2020-10-20 | Battelle Memorial Institute | Performance and usability enhancements for continuous subgraph matching queries on graph-structured data |
US10740733B2 (en) * | 2017-05-25 | 2020-08-11 | Oracle International Corporaton | Sharded permissioned distributed ledgers |
-
2019
- 2019-02-12 US US16/274,232 patent/US20200192880A1/en active Pending
- 2019-09-19 TW TW108133793A patent/TWI833806B/zh active
- 2019-10-11 KR KR1020190126498A patent/KR20200073979A/ko active Search and Examination
- 2019-11-15 JP JP2019207293A patent/JP7469026B2/ja active Active
- 2019-11-21 CN CN201911151417.7A patent/CN111324777A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20200073979A (ko) | 2020-06-24 |
TWI833806B (zh) | 2024-03-01 |
CN111324777A (zh) | 2020-06-23 |
JP2020095701A (ja) | 2020-06-18 |
JP7469026B2 (ja) | 2024-04-16 |
US20200192880A1 (en) | 2020-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI833806B (zh) | 用於分片創建的裝置及系統 | |
US9152601B2 (en) | Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units | |
US10083193B2 (en) | Efficient remote pointer sharing for enhanced access to key-value stores | |
US20180300330A1 (en) | Proactive spilling of probe records in hybrid hash join | |
KR102513446B1 (ko) | 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법 | |
US20190146837A1 (en) | Distributed real-time computing framework using in-storage processing | |
CN111198826A (zh) | 存储设备、存储系统及存储方法 | |
US10031947B2 (en) | Method and apparatus for performing a search operation on heterogeneous computing systems | |
US9632831B2 (en) | Distributed real-time computing framework using in-storage processing | |
Yang et al. | Random walks on huge graphs at cache efficiency | |
KR102705751B1 (ko) | 장치, 그것을 포함하는 시스템, 그리고 그것의 키 저장 방법 | |
US10198293B2 (en) | Distributed real-time computing framework using in-storage processing | |
Wu et al. | Data design and analysis based on cloud computing and improved K-Means algorithm | |
US10402533B1 (en) | Placement of cells in a multi-level routing tree | |
Jin et al. | Software systems implementation and domain-specific architectures towards graph analytics | |
Greiner et al. | The efficiency of mapreduce in parallel external memory | |
Adoni et al. | Hgraph: Parallel and distributed tool for large-scale graph processing | |
Dong et al. | Performance optimization of distributed file system based on new type storage devices | |
US11755465B1 (en) | Method of superposition of multiple commands execution | |
US11625525B1 (en) | Grouping cells in cell library based on clustering | |
US20230237095A1 (en) | Metadata for Graph Connected Databases | |
US11755205B2 (en) | Storage space reclamation for transient streaming data | |
CN113554091B (zh) | 分解半导体结构的布局的方法、装置、系统和存储介质 | |
US20220222001A1 (en) | Forking data streams in a streaming data storage platform | |
Dong et al. | A two-stage graph computation model with communication equilibrium |