TW202131174A - 用於處理無結構源資料的方法及系統 - Google Patents
用於處理無結構源資料的方法及系統 Download PDFInfo
- Publication number
- TW202131174A TW202131174A TW110104669A TW110104669A TW202131174A TW 202131174 A TW202131174 A TW 202131174A TW 110104669 A TW110104669 A TW 110104669A TW 110104669 A TW110104669 A TW 110104669A TW 202131174 A TW202131174 A TW 202131174A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- partition
- partitions
- chip
- storage device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
本發明描述一種用於處理無結構源資料的系統及方法。將具有範圍V的輸入資料自晶片外儲存元件加載至晶片上儲存元件。經由晶片上儲存元件將輸入資料分區成P個臨時父分區,其中P個臨時父分區中的一個特定父分區具有範圍V/P。P個臨時父分區自晶片上儲存裝置儲存至晶片外儲存元件。對P個臨時父分區進行分區以產生P個臨時子分區,直至產生目標數目T個分區為止,其中來自P個臨時父分區的資料是源資料以供遞回地加載、分區以及儲存源資料。應用經組態以自T個分區存取分區資料以用於產生輸出。分區資料的存取是晶片外儲存元件的順序讀取存取。
Description
本申請案是關於存取儲存在外部儲存元件中的無結構、低局部性資料,且更特定言之,是關於以有效的方式將此類資料轉換成高局部性資料。
處理無結構資料的系統所經歷的瓶頸中的一個是此類資料可以隨機方式儲存在記憶體中。因此,對所儲存資料的資料存取亦為隨機的。無結構資料可稱為低局部性資料,這是因為在資料內的相鄰或鄰近條目可在其等之間具有寬範圍。
當低局部性資料儲存在外部儲存元件及/或晶片外儲存元件,諸如(例如)動態隨機存取記憶體(dynamic random access memory;DRAM)或快閃固態磁碟機(solid state drive;SSD)中時,對資料的隨機存取可對處理資料的應用產生瓶頸。此類應用的實例包含參與大規模資料分析的應用,諸如圖形處理應用及機器學習核心。此類應用所經歷的瓶頸常常是由於以下事實:存取外部儲存元件上的資料的潛時通常比例如使用積體處理器計算儲存在晶片上記憶體中的資料所經歷的潛時高得多。此晶片上記憶體的實例可包含靜態隨機存取記憶體(static random access memory;SRAM),且此積體處理器的實例可包含現場可程式化閘陣列(field-programmable gate array;FPGA)。當自外部儲存元件存取低局部性隨機資料且每次檢索行線資料時,由於資料儲存在外部儲存元件中的隨機方式,可使用資料的相對較小的部分,從而浪費頻寬的較大部分。因此,對外部儲存元件的頻繁訪問及記憶體頻寬的不良利用可對上文提及的處理無結構資料的應用產生瓶頸。
因此,需要減輕對外部儲存元件的隨機存取的不利影響的系統及方法,以用於增強利用無結構資料的應用的效能及可擴充性。
本揭露的實施例是針對一種用於處理無結構源資料的方法。處理器判定目標數目T個分區且將輸入資料自晶片外儲存元件加載至晶片上儲存元件。輸入資料具有範圍V。經由晶片上儲存元件將輸入資料分區成P個臨時父分區,其中P個臨時父分區中的一個特定父分區具有範圍V/P。P個臨時父分區自晶片上儲存元件儲存至晶片外儲存元件。對P個臨時父分區進行分區以產生P個臨時子分區,直至產生目標數目T個分區為止。在一個實施例中,來自P個臨時父分區的資料是源資料以供遞回地加載、分區以及儲存源資料。應用經組態以自T個分區存取分區資料以用於產生輸出。分區資料的存取是晶片外儲存元件的順序讀取存取。在一個實施例中,T、V以及P是大於0的數值。
根據一個實施例,T是基於晶片上儲存元件的儲存容量,其中所產生的T個分區中的一個特定分區中的分區資料的範圍在晶片上元件的儲存容量內。
根據一個實施例,用於分區的第一層級的輸入資料是源資料,其中源資料具有範圍R,其中所產生的T個分區中的特定一分區中的分區資料的範圍是R/T。
根據一個實施例,分區資料具有比源資料的局部性更高的局部性。
根據一個實施例,輸入資料的加載是經由晶片外儲存元件的順序讀取操作來分批地進行,且P個臨時父分區的儲存是經由晶片外儲存元件的順序寫入操作來進行。
根據一個實施例,在晶片外儲存元件中分配固定記憶體空間,其中在特定遞回步驟處產生的全部分區儲存在固定記憶體空間中。
根據一個實施例,P個臨時子分區的儲存包含調用資料儲存處理程序,所述資料儲存處理程序包含:動態地分配具有固定大小的資料區塊,其中資料區塊儲存來自給定父分區的P個臨時子分區中的第一子分區的一部分及來自下一鄰近父分區的P個臨時子分區中的對應第一子分區的一部分,以用於最大化資料區塊的儲存空間的使用。
根據一個實施例,自晶片外儲存元件存取的分區資料的一部分儲存在晶片上儲存元件上,方法更包括:經由隨機資料存取來存取晶片上儲存元件上的分區資料。
根據一個實施例,所述晶片上儲存元件是靜態隨機存取記憶體,且晶片外儲存元件是動態隨機存取記憶體或固態磁碟機。
根據一個實施例,無結構源資料是圖形資料,且應用是圖形處理應用。
本揭露的實施例亦是針對一種用於處理無結構源資料的系統。所述系統包括晶片外儲存元件、晶片上儲存元件以及耦接至晶片上儲存元件及晶片外儲存元件的處理器。所述處理器經組態以:判定目標數目T個分區;將輸入資料自晶片外儲存元件加載至晶片上儲存元件,輸入資料具有範圍V;經由晶片上儲存元件將輸入資料分區成P個臨時父分區,其中P個臨時父分區中的一個特定父分區具有範圍V/P;將P個臨時父分區自晶片上儲存元件儲存至晶片外儲存元件;以及對P個臨時父分區進行分區以產生P個臨時子分區,直至產生目標數目T個分區為止,其中來自P個臨時父分區的資料是源資料以供遞回地加載、分區以及儲存源資料,其中應用經組態以自T個分區存取分區資料以用於產生輸出,其中分區資料的存取是晶片外儲存元件的順序讀取存取,且其中T、V以及P是大於0的數值。
各種技術可用於解決隨機資料存取模式的問題,以減輕由隨機資料存取產生的瓶頸。一種被稱為排序優先技術的此類技術包含採用高速排序演算法(諸如歸併排序(MergeSort)演算法)來首先將所產生的低局部性隨機資料排序成高局部性(例如排序的,高速存取友好的)資料,使得資料的後續處理可享有順序存取模式。因此,高局部性資料意味著資料內的相鄰或鄰近條目彼此距離很近。此類技術的一個特徵是,可將計算代價大的隨機存取與所儲存資料的多個順序存取進行交換,以改良效能。由於記憶體的順序資料存取模式可比隨機存取更好地執行,故總體效可能增加。歸併排序演算法可與FPGA平台結合使用,另外,在FPGA中的實施可移除對晶片外記憶體(例如DRAM或SSD)的任何隨機存取,藉此最大化晶片上記憶體(例如SRAM)的超低潛時特權。此使得在FPGA上有效實施的歸併排序具有低開銷,且可達成效能增益。
然而,儘管有其優勢,但是使用歸併排序的排序優先技術仍然存在多個問題。首先,使用排序優先技術,在可開始高局部性資料存取之前對資料進行排序。此意謂對整個資料進行最少的log(N)次傳遞以用於實現完全排序。此數目可較高,尤其是當處理較大資料大小時,諸如在圖形處理域中的彼等。因此,使用較少次數通過輸入資料的技術可產生更好的效能。
其次,當處理較大資料大小(亦即,資料太大以致無法放入系統的可用DRAM中)時,使用歸併排序策略的鄰近內部排序塊之間的依賴性可引起對外部儲存元件的頻繁訪問。歸併排序可藉由將鄰近內部排序塊連續「合併」為更大的塊,直至完全排序整個資料來操作。在資料太大以致無法放入DRAM中的情況下,此可能需要超出理論數目的對外部SSD進行額外存取調用,從而可能引起效能方面的缺陷。
本揭露的實施例提供一種用於在時間上且使用有限空間將儲存在外部儲存元件中的相對較大大小及低局部性資料有效地轉換為高局部性資料的技術。低局部性輸入資料可為隨機輸入資料(例如隨機鍵值對)、來自應用上下文的工作負荷(例如圖形處理工作負荷)及/或其類似者。在一個實施例中,藉由以迭代的方式分區外部儲存元件中的原始資料直至達成特定粒度,可將低局部性資料轉換為高局部性資料。在一個實施例中,分區經由積體處理器在晶片上進行。另外,在一個實施例中,分區方案不需要完全排序所得資料。由於不必完全排序原始輸入資料,故對外部儲存元件中的輸入資料進行較少的順序傳遞,從而提供高於完全排序資料的先前技術的改良效能。
在一個實施例中,資料表示方案用於在分區製程的每一迭代處儲存分區資料,以確保使用相同固定空間來儲存每一層級/迭代處產生的分區資料。根據一個實施例,以對用於進行儲存而分配的每一資料區塊達成最大資料填充的方式來儲存分區資料。因此,無論產生迭代及分區的數目如何,使用相同記憶體空間來儲存分區資料。
在外部儲存元件中儲存更高局部性資料作為原始輸入資料的分區有助於在處理無結構資料的若干處理上下文中加速隨機存取模式。因此,在不試圖提供資料的完美排序的情況下,改良記憶體/儲存元件存取的局部性。當自外部儲存元件存取分區資料時,此類存取是順序的,從而允許記憶體頻寬飽和。因此,本揭露的實施例藉由減少對外部儲存元件的計算代價大的隨機存取及將隨機存取換成對輸入資料的幾次順序傳遞來提供時間效率。由於順序存取可比隨機存取更有效,故達成優良效能。可用作分區的高局部性資料輸出可進一步具有低得多的潛時SRAM處理。
圖1為例示隨機存取模式的一個問題的產生用於由目標系統102存取的資料的源系統100的概念方塊圖。在圖1的實施例中,源系統100產生未排序資料104。未排序資料104可為例如隨機鍵值對或來自應用上下文的工作負荷(例如圖形處理工作負荷)。在圖形處理上下文中,源系統100可為圖形的節點(例如節點106),其中每一節點產生意欲由目標系統102的節點(例如節點110)消耗/提交的值(例如值108)。如圖1的實例中所描繪,源資料104是隨機且未排序資料(低局部性資料),而目標資料112是順序的。源資料104對目標資料112的消耗/提交涉及隨機存取模式。舉例而言,將資料提交至目標系統102可基於諸如(例如)以順序次序的存取資料的廣度優先搜尋功能的功能。由於源系統100中的資料未排序,故對高局部性目標中的資料的存取遭受損害目標系統102的效能的隨機資料存取模式的問題。
在一個實施例中,經由在有效時間且使用有限空間將低局部性資料變換為高局部性資料的系統及方法來解決關於圖1論述的隨機存取模式問題。通過所述系統及方法執行的方法被稱為動作。
圖2是根據例示性實施例的經組態具有低局部性資料轉換方法的系統的方塊圖。系統可包含耦接至晶片上儲存元件202及外部記憶體介面(external memory interface;EMI)204的處理器200。在一個實施例中,處理器200、晶片上儲存元件202以及EMI 204含有在單個積體電路晶片206中。EMI 204進一步耦接至晶片外/外部儲存元件208。
處理器200可為經組態具有處理電路硬體的任何處理器,諸如(例如)中央處理單元(central processing unit;CPU)核心、現場可程式化閘陣列(FPGA)或其類似者。晶片上儲存元件202可為例如SRAM。晶片外儲存元件208可為例如DRAM或SSD。EMI 204可為經組態具有用於在積體電路晶片206與晶片外儲存元件208之間通訊的適當匯流排協定的匯流排。
在一個實施例中,處理器200可經組態以執行分區模組210,以用於加載及分區儲存在晶片外儲存元件208中的資料,且將分區資料緊湊地重新加載回晶片外儲存元件中。就此而言,分區模組210可經組態具有使得處理器將分批的源資料自晶片外儲存元件208加載至晶片上儲存元件202的指令。將每一加載批次分區成P個(例如2個)臨時分區。自每一加載批次產生的數目P個臨時分區可被稱為分區扇出。可將P個臨時分區加載回晶片外儲存元件208中,以用於完成分區的第一層級。在一個實施例中,以最大化所分配的記憶體空間的方式將分區加載回至晶片外儲存元件208中。
在一個實施例中,自第一層級產生的每一子分區變成用於分區的第二層級的輸入源資料(且因此,充當父級),其中此類輸入源資料自晶片外儲存元件208加載至晶片上儲存元件202,進行分區,且儲存回晶片外儲存元件中。在一個實施例中,分區模組參與每一父分區的樹狀遞回分區以產生子分區,直至達到分區的目標數目。在一個實施例中,分區的目標數目是基於晶片上儲存元件202的儲存容量。更具體而言,分區模組210在晶片外儲存元件208中對資料進行分區,直至每一分區中的鍵的範圍在晶片上儲存元件202的容量內。以此方式,不是在晶片外儲存元件中執行資料的完全排序,而是將資料分區為與晶片上儲存元件202的容量對準的粒度層級。當與完全排序輸入資料的傳統機制(諸如排序優先技術)相比時,此使得通過輸入源的次數更少。在晶片上儲存元件202上進行任何隨機存取,從而使得此類存取比對晶片外儲存元件208的隨機存取更快且更有效。
在一個實施例中,處理器亦可經組態以執行資料計算模組212,以用於在發生分區的實質上同一時間處進行計算。舉例而言,資料計算模組212可包含經組態以使用分區資料執行頂點功能的圖形處理模組。本揭露的實施例藉由避免對晶片外儲存元件的高潛時隨機存取而有助於加速此類計算。舉例而言,本揭露的實施例可促進對社交網路的圖形分析以用於偵測恐怖主義網路,促進對電力網格的圖形分析以用於最佳化電力分配及/或其類似者。
儘管將分區模組210描述為與資料計算模組212分離的功能單元,但所屬技術領域中具有通常知識者將認識到,在不脫離本發明概念的精神及範疇的情況下,模組的功能可組合或整合至單個模組中,或進一步再分成另外的子模組。舉例而言,分區模組210的功能可藉由資料計算模組212在執行頂點功能的同時執行,從而允許同時計算及分區圖形工作負荷。
圖3是根據一個例示性實施例的回應於將低局部性資料轉換方法應用於輸入源資料而產生的分區的概念方塊圖。儲存在晶片外儲存元件208中的低局部性資料300經由低局部性資料轉換方法302處理,以將低局部性資料300變換為高局部性資料304。接著,高局部性資料304儲存回晶片外儲存元件208中。例如藉由資料計算模組212判定的高局部性目標306現在可經由對晶片外儲存元件208的順序存取來消耗高局部性資料,從而最大化晶片外元件208的可用頻寬且改良資料計算模組212的效能。在一個實施例中,可減少及/或消除對晶片外儲存元件208的隨機存取。實情為,在順序存取晶片外儲存元件208中的資料且將其加載至晶片上儲存元件之後,可在晶片上儲存元件202上進行對資料的任何隨機存取(例如由於分區本身中的資料可不完全排序的事實)。此類順序存取可在資料計算模組212的計算功能期間進行。因此,在需要對資料隨機存取的情況下,可利用且最大化晶片上儲存元件202的低潛時。因此,根據一個實施例,系統的效能可取決於晶片外儲存元件208的頻寬,從而允許採用由以記憶體為中心的架構提供的較大內部頻寬。
圖4是根據一個例示性實施例的由低局部性資料轉換方法產生的樹狀遞回分區的概念佈局圖。分區以原始輸入源資料400開始,所述原始輸入源資料400可為採取隨機鍵值對形式的無結構資料。在實例中,無結構源資料為圖形資料。在圖4的實例中,輸入源資料的最低鍵為1,且最高鍵為11。因此,輸入源資料400具有範圍10。
在分區402的第一層級期間,將輸入源資料400分區成分區A 404及分區B 406。在一個實施例中,每一分區的範圍計算如下:
分區的範圍=輸入批次的範圍(V)/分區扇出(P)
對於圖4的實例使用以上公式,分區402的第一層級中的每一分區404、分區406具有範圍10/2 = 5。就此而言,當自晶片外儲存元件208讀取輸入源資料400時,取決於鍵是較小(在此情況下將其寫入至分區A 404)還是較大(在此情況下將其寫入分區B 406)而將其緩衝至晶片上儲存元件202的右分區(分區A 404或分區B 406)中。因此,在圖4的實例中,分區A中的資料僅具有在1與5之間的鍵值,而分區B中的資料僅具有在6與11之間的鍵值。在一個實施例中,在分區的每一層級期間,自分區的當前層級產生的分區資料比在分區的先前層級中產生的資料具有更高的局部性。
在一個實施例中,分區402的第一層級要求對原始輸入源資料400進行單個順序的讀取及寫入傳遞,以創建P個(例如2個)子分區。在一個實施例中,將寫入傳遞的區塊大小與晶片外儲存元件208中的一個I/O區塊大小對準。此有助於提供晶片外儲存元件208的可用頻寬的最大利用。
另一單個順序讀取及寫入傳遞可在分區408的第二層級期間進行,以自父分區A 404產生分區C 410及分區D 412,且自父分區B 406產生分區E 414及分區F 416。因此,在完成分區408的第二層級之後,產生大於一個指數數目的分區(P2
= 22
)。執行一系列額外遞回分區,直至獲得目標T個分區數目。在一個實施例中,基於晶片上儲存元件202的容量而判定目標T個分區數目,且將其作為輸入參數與同扇出值P一起饋入至低局部性資料轉換方法。
在一個實施例中,將低局部性資料轉換方法併入用於將分區有效地儲存在晶片上記憶體202及晶片外記憶體208兩者中的資料儲存技術。在一個實施例中,資料儲存技術允許動態記憶體分配及儲存元件中的資料的緊密填充,以不僅最大化儲存元件的使用,而且改良效能。舉例而言,應用於晶片上儲存元件202的資料儲存技術有助於支持更高的扇出數目P,此轉化為更好的效能,若扇出數目愈高,則在產生目標T個分區數目之前通過輸入資料的數目愈短。
圖5是根據一個例示性實施例的用於藉由分區模組210創建分區的處理程序的概念佈局圖。處理程序開始,且存取儲存在晶片外儲存元件208中的一批輸入源資料400,且以塊的形式流至晶片上儲存元件202。在一個實施例中,此為自晶片外儲存元件208的順序讀取操作。如圖5中所示,輸入源資料400可以是鍵值對的形式,例如<K,V>。
分區模組210根據例如由使用者定義的分區函數f(P)
將所加載的批次分區成P個臨時分區。假設將P設定為2,則產生兩個分區(例如分區A 404及分區B 406),且在晶片上儲存元件202中緩衝分區的結果。在一個實施例中,由於晶片上儲存元件202的低潛時,分區函數f(P)
使用單個處理器時鐘週期。
所產生的臨時分區404、臨時分區406可流回晶片外儲存元件208,且可儲存在晶片外儲存元件208的所分配空間中。在實例中,可以分配固定記憶體空間在晶片外儲存元件中,其中在特定遞回步驟處產生的全部分區儲存在固定記憶體空間中。處理程序針對當前批次中的每一塊繼續,直至塊被加載、分區且儲存回至晶片外儲存元件208,以用於完成分區的第一層級。在一個實施例中,塊儲存回晶片外儲存元件208中調用順序寫入操作。在一個實施例中,每一寫入操作的區塊大小可與晶片外儲存元件208中的一個I/O區塊大小對準,從而允許最大化利用外部儲存元件208的可用頻寬。
在一個實施例中,分區模組210可經組態以調用用於將資料緊密地填充在記憶體中的資料儲存技術,以用於最大化儲存空間且改良效能。晶片上記憶體元件202及晶片外記憶體元件208中的資料的儲存在分區的每一層級期間進行。根據一個實施例的資料儲存技術使用資料表示方案,所述資料表示方案有助於確保使用記憶體中的相同空間來儲存分區的每一層級中的資料。如所屬技術領域中具有通常知識者將認識到,取決於真實世界工作負荷,所產生的分區可含有更多或更少的資料。亦即,在分區期間,一些分區可比其他分區含有更多或更少的資料。因此,將目標分區表示為晶片外儲存元件208中的固定陣列可為低效的且使得記憶體中的資料溢出。
在一個實施例中,由低局部性資料轉換方法所採用的資料儲存技術經組態以提供資料填充效率。當處理較大大小的資料時,分區模組212可產生大量分區。因此,可在不同的分區層級處產生額外不同分區,且將分區填充在一起的低效率亦可在每一相應層級處以指數方式增加。在一個實施例中,資料儲存技術經組態以將資料完全且緊密地填充在儲存元件中,使得無論分區的層級或數目,相同記憶體大小均足以儲存分區資料。
在一個實施例中,由低局部性資料轉換方法所採用的資料儲存技術亦經組態以改良產生分區的效能。可影響此類效能的一個參數是分區扇出(P)參數。在每一層級處產生的分區愈多(P的值愈高),通過輸入源以產生所需的分區數目(T)的數目愈少。在一個實施例中,分區層級的數目及因此通過輸入資料的數目[如]計算為logp
(T)。舉例而言,若P為16且T為65,536,則分區模組256使得四(4)次通過輸入資料以達成65,536個分區。然而,若P為256,則分區模組210僅使得兩(2)次傳遞以產生相同目標數目(65,536)個分區。在實例中,在分區的每一層級期間,僅部分的臨時父分區可以分區為子分區,只要在至少一次分區之後的最終分區的分區數目達到T。由於晶片上記憶體的限制,用許多固定大小的陣列來表示晶片上(例如SRAM)子分區將引起晶片上儲存元件202的溢出。然而,藉由經由本揭露的實施例的資料儲存技術來表示晶片上子分區,可使用有限的晶片上資源表示許多子分區(亦即,P的相對較大值),從而實現效能的整體改良。
圖6是根據一個例示性實施例的用於將資料填充至晶片外儲存元件208上的製程的概念佈局圖。相同製程亦可用於在晶片上儲存元件202中填充資料。另外,儘管將資料儲存技術描述為由分區模組210實施,但所屬技術領域中具有通常知識者將認識到,可經由專用於回應於分區模組210的命令而進行資料填充的獨立模組來實施所述資料儲存技術。
在圖6的實例中,分區模組210在分區的第二層級期間自父分區A 404及父分區B 406產生子分區C 410至子分區F 416。在一個實施例中,分區模組210經組態以將子分區410至子分區416儲存在晶片外儲存元件208的所分配空間中,使得不留下空的空間。就此而言,可動態地分配資料區塊600至資料區塊612(例如儲存元件中的固定寬度的陣列空間)以儲存增長的分區資料。在一個實施例中,將分區儲存為動態分配的資料區塊的鏈接列表。每當屬於分區的資料要儲存在儲存元件中,且為所述資料分配的可用空間被填滿(例如分區C的區塊600)時,為所述資料分配另一資料區塊(例如區塊602)且將其鏈接至與分區相關聯的最後的資料區塊(例如區塊600)。
在一個實施例中,分區模組210儲存用於追蹤哪些資料區塊屬於哪些分區的元資料資訊614。就此而言,對於由分區標識符616標識的每一分區,元資料資訊614可包含標識其中儲存分區的區塊的資料區塊偏移618。如圖6所示,資料區塊偏移618指示分區C儲存在區塊B0及B1中,分區D儲存在區塊B2及B3中,分區E儲存在區塊B1及B4中,並且分區F儲存在區塊B3、B5及B6中。對於每一分區,文件開始620及文件結束622標識所標識的區塊內分區資料所在的位置。
在一個實施例中,對NB數目的鍵值對進行分區使用第(1/D)(亦即,NB/D)個元資料空間(其中D是資料區塊大小,並且NB是輸入輸入批次的大小)。若NB = 1,000,000鍵值(kvs),D = 10,000鍵值,則將1/10000(亦即,100 kvs)用於元資料空間。若NB = 1,000,000,000鍵值,D = 10,000鍵值,則將1/10000(亦即,100,000 kvs)用於元資料空間。
在一個實施例中,當將子分區410至子分區416儲存在資料儲存元件中時,資料儲存技術使得其資料自前述[父的]父分區中的對應子分區停止的地方儲存。可視需要預設對應子分區。舉例而言,假設分區Pi1(例如分區C)是父分區Pi(例如父分區A)的第一子分區,且分區P(i+1)1(例如分區E)是父P(i+1)(例如,父分區B)的第一子分區。亦假設分區Pi2(例如分區D)是分區Pi(例如父分區A)的第二子,而分區P(i+1)2(例如分區F)是分區P(i+1)(例如,父分區B)的第二子。在一個實例中,資料儲存技術可經組態以使得分區P(i+1)1(例如分區E)在分區Pi1(例如分區C)結束的地方開始儲存其資料,且分區P(1+1)2(例如分區F)自分區Pi2(例如分區D)結束的地方開始儲存其資料。以此方式,可達成分區層級中的全部對應子分區的緊密耦接,同時允許使用相同(固定寬度)空間(例如,工作區域)來儲存任意數目的子分區。當然,所屬技術領域中具有通常知識者應認識到,其他類型的對應子分區組態亦是可能的。
在圖6的實例中,分區模組210藉由將分區C資料儲存在動態分配的區塊600及區塊602中來開始。僅區塊602的部分602a填充有分區C資料。分區模組210接著繼續在動態分配的區塊604及區塊606中儲存分區D資料。因此,區塊606的部分606a填充有分區D資料。
在圖6的實例中,分區模組210接著繼續在儲存元件中儲存分區E資料。藉此,在分配另一資料區塊608以儲存剩餘的分區E資料之前,分區模組210首先藉由將分區E資料的一部分儲存至部分602b中來最大化區塊602的使用。類似地,當分區F資料儲存在儲存元件中時,在動態地分配區塊610及區塊612以儲存剩餘的分區F資料之前,分區模組210首先藉由將分區F資料的一部分儲存至部分606b中來最大化區塊606的使用。
在一個實施例中,分區模組210進一步經組態具有在創建分區時進一步提供空間效率的記憶體管理技術。在一個實施例中,使用相等、固定大小的晶片外儲存元件208中的兩個工作空間/區域來產生分區。
圖7是根據一個例示性實施例的在分區的每一層級期間交替使用的晶片外儲存元件208的兩個工作區域700、工作區域702的佈局方塊圖。在一個實施例中,在分區402的第一層級期間,工作區域700中的資料儲存原始輸入源資料400。就此而言,在分區402的第一層級期間,工作區域700可被稱為源工作區域。分區模組210可使用源工作區域700中的輸入源資料400來加載資料且將所述資料分區成兩個目標分區(分區A 404及分區B 406)。一旦分區,則分區A 404及分區B 406儲存在工作區域702中,所述工作區域702在分區的第一層級期間可被稱為目標工作區域。
在分區408的第二層級期間,在工作區域702中儲存的分區的第一層級中產生的每一分區(例如分區A及分區B)現在變為已加載且分區成分區410至分區416的源資料。由於源資料(分區A及分區B)儲存在工作區域702中,故工作區域700中的資料可能不再有用。因此,在分區的第二層級期間,工作區域702是源工作區域,且工作區域700是目標工作區域。在分區的第二層級期間產生的分區410至分區416儲存在目標工作區域700中,覆寫原始輸入源資料400。
當分區的其他層級進行時,工作區域700及工作區域702交換角色作為源工作區域及目標工作區域,直至產生目標數目個分區。將工作區域交換為源區域及目標區域有助於提供空間效率,以使得在一個實施例中,低局部性資料轉換方法僅需要2×NB(其中NB是輸入批次的大小)以產生目標數目(T)個分區。另外,由於低局部性資料轉換方法使用的資料填充技術,提供分區的最大空間填充,以使得每一工作區域700、工作區域702可為足夠的,而不管在每個層級處待儲存的分區的數目。
圖8A及圖8B是根據一個例示性實施例的以交替方式使用兩個工作區域700及工作區域702以在分區的每一層級處產生分區的處理程序的概念佈局圖。在如圖8A中所描繪的分區的第一層級期間,工作區域700是源工作區域,自所述源工作區域加載源輸入資料的批次800。運行取決於分區扇出值P的分區函數802以產生P個數目的分區(例如,分區A 404及分區B 406)。所產生的分區儲存在晶片上記憶體202的輸出緩衝器804中,且加載至晶片外儲存元件208的工作區域702。
在如8B圖中所描繪的分區的第二層級期間,工作區域702是源工作區域,自所述源工作區域加載源輸入資料的批次810。運行分區函數802以用於P個數目的分區(例如,分區E 414及分區F 416)。接著,將分區414及分區416儲存在晶片上記憶體202的輸出緩衝器804中,且以最大化資料填充的方式儲存至晶片外儲存元件208的工作區域700。
根據各種實施例的低局部性資料轉換方法允許在更長時間內以區塊層級(例如用於SSD的NAND實體頁面大小)將較大低局部性資料轉換為高局部性資料(儲存為分區)而不是整個資料集。由於其處理的資料的低局部性而受隨機存取模式影響的大的資料應用(例如圖形處理應用)可因此經由將低局部性資料變換為高局部性分區資料而受益。另外,低局部性資料轉換方法可不需要資料的完美順序性。實情為,在一個實施例中,提供SSD頁面層級局部性以用於對儲存元件的隨機存取。採用儲存元件(諸如FPGA)附近的可用資源來聚結對儲存元件的隨機存取及細粒度存取。
在一個實施例中,低局部性資料轉換方法提供樹狀的遞回分區策略,所述策略允許利用且最大化晶片上儲存元件(當與晶片外儲存元件的潛時相比時)的低得多的潛時。對於分區的每一連續層級(L),經由輸入資料源進行單個順序掃描,以產生指數數目(PL
)的分區。在一個實施例中,所揭露的系統可避免對晶片外記憶體元件的許多形式的隨機存取。因此,可使系統的效能取決於晶片外(例如DRAM)位寬。在一個實施例中,晶片外儲存元件經歷順序資料存取模式。由於更高的頻寬效率,此類順序存取模式可比隨機存取模式更有效。
在一個實施例中,晶片上儲存元件中的子分區的資料表示允許低局部性資料轉換系統支持高數目的P,此轉化為更好的效能。在最終產生T之前,高數目的P轉化為通過輸入資料的較短次數。
在一個實施例中,晶片外儲存的資料填充技術允許空間效率。在分區的每個層級處,產生額外指數數目的分區。因此,低局部性資料轉換方法的資料儲存技術允許將資料緊密地填充在儲存元件中,以使得不管NB(輸入批次大小)、L(分區的當前層級)或T(所需的分區的目標數目)的值如何,相同工作區域大小將為足夠的。
圖9是根據一個例示性實施例的用於使用工作區域700及工作區域702來創建分區的處理程序的流程圖。製程開始,且在動作900中,分區模組210判定要產生的分區的目標T數目。
根據一個實施例,晶片外儲存元件208的工作區域700最初充當源工作區域,且晶片外儲存元件的工作區域702最初充當目標工作區域。就此而言,在動作902中,分區模組210自工作區域700(當前源工作區域)加載資料。
在動作904中,分區模組210將資料分區成P個分區。
在動作906中,分區模組210將分區加載回晶片外儲存元件中,且將分區保存至工作區域702(當前目標工作區域)中。
在動作908中,判定是否已創建目標T個分區數目。若應答為是,則處理程序結束,且可藉由資料計算模組212來存取當前目標工作區域中的分區資料。
若應答為否,在動作910中則分區模組將當前目標工作區域(工作區域702)設定為源工作區域,且進一步將當前源工作區域(工作區域700)設定為目標工作區域。重複加載902、分區904以及加載回906的動作,直至產生目標數目T個分區。
在一些實施例中,上文所描述的包含分區模組210及資料計算模組212的模組在一或多個處理電路中實施。如本文所使用的術語「處理電路」可意指用於處理資料或數位信號的硬體、韌體以及軟體的任何組合。處理電路硬體可包含(例如)特殊應用積體電路(application specific integrated circuit;ASIC)、通用或專用中央處理單元(CPU)、數位信號處理器(digital signal processor;DSP)、圖形處理單元(graphics processing unit;GPU)以及可程式化邏輯元件,諸如現場可程式化閘陣列(FPGA)。在處理電路中,如本文中所使用,藉由經組態(即,硬連線)以執行彼功能的硬體或藉由經組態以執行儲存於非暫時性儲存媒體中的指令的更一般目的硬體(諸如CPU)執行每一功能。處理電路可製造於單個印刷電路板(printed circuit board;PCB)上或分佈於若干互連PCB上。處理電路可含有其他處理電路;例如處理電路可包含在PCB上互連的兩個處理電路FPGA及CPU。
將理解,儘管本文中可使用術語「第一」、「第二」、「第三」等以描述各種元件、組件、區、層及/或區段,但此等元件、組件、區、層及/或區段不應受此等術語限制。此等術語僅用於區分一個元件、組件、區、層或區段與另一元件、組件、區、層或區段。因此,在不脫離本揭露內容的精神及範疇的情況下,本文中論述的第一元件、組件、區、層或區段可稱為第二元件、組件、區、層或區段。
本文中使用的術語僅出於描述特定實施例的目的,且並不意欲限制本發明概念。如本文中所使用,術語「實質上」、「約」以及類似術語用作表示近似的術語且不用作表示程度的術語,且意欲考慮將由所屬技術領域中具有通常知識者辨識的量測值或計算值的固有偏差。
如本文中所使用,除非上下文另外明確指示,否則單數形式「一(a/an)」亦意欲包含複數形式。將進一步理解,術語「包括(comprises/comprising)」在用於本說明書中時指明存在所陳述的特徵、整數、步驟、操作、元件及/或組件,但不排除存在或添加一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組。如本文中所使用,術語「及/或」包含相關聯所列項目中的一或多者的任何及所有組合。諸如「……中之至少一者」的表述在位於元件清單之前時修飾元件的整個清單,且並不修飾清單的個別元件。另外,當描述本發明概念的實施例時「可」的使用是指「本揭露的一或多個實施例」。此外,術語「例示性」意欲指代實例或示出。如本文中所使用,可認為術語「使用(use/using/used)」分別與術語「利用(utilize/utilizing/utilized)」同義。
應理解,當稱元件或層在另一元件或層「上」、「連接至」另一元件或層、「耦接至」另一元件或層或「鄰近於」另一元件或層時,其可直接在所述另一元件或層上、連接至所述另一元件或層、耦接至所述另一元件或層或鄰近於所述另一元件或層,或可存在一或多個介入元件或層。相比之下,當稱元件或層「直接在」另一元件或層「上」、「直接連接至」另一元件或層、「直接耦接至」另一元件或層或「緊鄰於」另一元件或層時,不存在介入元件或介入層。
本文中所列舉的任何數值範圍均意欲包含被包含在所列舉的範圍內的具有相同數值精確度的所有子範圍。舉例而言,「1.0至10.0」的範圍意欲包含所列舉的最小值1.0與所列舉的最大值10.0之間(且包含所列舉的最小值1.0與所列舉的最大值10.0)的所有子範圍,亦即,具有等於或大於1.0的最小值及等於或小於10.0的最大值,諸如,2.4至7.6。本文中所列舉的任何最大數值限制意欲包含經包含於其中的所有較低數值限制,且在本說明書中所列舉的任何最小數值限制意欲包含經包含於其中的所有較高數值限制。
儘管本文中已具體描述及示出用於將低局部性資料轉換為高局部性資料的系統及方法的例示性實施例,但許多修改及變化對於所屬技術領域中具通常知識者將顯而易見。因此,應理解,除如在本文中具體描述外,可體現根據本揭露的原理來建構的用於知識蒸餾的系統及方法。本揭露亦定義於以下申請專利範圍及其等效物中。
100:源系統
102:目標系統
104:未排序資料/源資料
106、110:節點
108:值
112:目標資料
200:處理器
202:晶片上儲存元件
204:外部記憶體介面
206:積體電路晶片
208:晶片外/外部儲存元件
210:分區模組
212:資料計算模組
300:低局部性資料
302:低局部性資料轉換方法
304:高局部性資料
306:高局部性目標
400:原始輸入源資料
402、408:分區
404:分區A
406:分區B
410:分區C
412:分區D
414:分區E
416:分區F
600、602、604、606、608、610、612:資料區塊
602a、602b、606a、606b:部分
614:元資料資訊
616:分區標識符
618:資料區塊偏移
620:文件開始
622:文件結束
700、702:工作區域
800、810:批次
802:分區函數
804:輸出緩衝器
900、902、904、906、908、910:動作
圖1為產生用於由目標系統存取的資料的源系統的概念方塊圖。
圖2是根據例示性實施例的經組態具有低局部性資料轉換方法的系統的方塊圖。
圖3是根據一個例示性實施例的回應於將低局部性資料轉換方法應用於輸入源資料而產生的分區的概念方塊圖。
圖4是根據一個例示性實施例的由低局部性資料轉換方法產生的樹狀遞回分區的概念佈局圖。
圖5是根據一個例示性實施例的用於藉由分區模組創建分區的製程的概念佈局圖。
圖6是根據一個例示性實施例的用於將資料填充至晶片外儲存元件上的製程的概念佈局圖。
圖7是根據一個例示性實施例的在分區的每一層級期間交替使用的晶片外儲存元件的兩種工作區域的佈局方塊圖。
圖8A及圖8B是根據一個例示性實施例的以交替方式使用圖7的兩個工作區域以在分區的每一層級處產生分區的製程的概念佈局圖。
圖9是根據一個例示性實施例的用於以交替方式使用圖7的兩個工作區域創建分區的製程的流程圖。
900、902、904、906、908、910:動作
Claims (20)
- 一種用於處理無結構源資料的方法,所述方法包括: 判定目標數目T個分區; 將輸入資料自晶片外儲存元件加載至晶片上儲存元件,所述輸入資料具有範圍V; 經由所述晶片上儲存元件將所述輸入資料分區成P個臨時父分區,其中所述P個臨時父分區中的一個特定父分區具有範圍V/P; 將所述P個臨時父分區自所述晶片上儲存元件儲存至所述晶片外儲存元件;以及 對所述P個臨時父分區進行分區以產生P個臨時子分區,直至產生所述目標數目T個分區為止,其中來自所述P個臨時父分區的資料是源資料以供遞回地加載、分區以及儲存所述源資料,其中應用經組態以自所述T個分區存取分區資料以用於產生輸出,其中所述分區資料的存取是所述晶片外儲存元件的順序讀取存取, 其中T、V以及P是大於0的數值。
- 如請求項1所述的方法,其中T是基於所述晶片上儲存元件的儲存容量,其中所產生的所述T個分區中的一個特定分區中的所述分區資料的範圍在所述晶片上儲存元件的所述儲存容量內。
- 如請求項2所述的方法,其中用於分區的第一層級的所述輸入資料是所述源資料,其中所述源資料具有範圍R,其中在所產生的所述T個分區中的一個特定分區中的分區資料的範圍是R/T。
- 如請求項1所述的方法,其中所述分區資料具有比所述源資料的局部性更高的局部性。
- 如請求項1所述的方法,其中所述輸入資料的加載是經由所述晶片外儲存元件的順序讀取操作來分批地進行,且所述P個臨時父分區的儲存是經由所述晶片外儲存元件的順序寫入操作來進行。
- 如請求項1所述的方法,其中在所述晶片外儲存元件中分配固定記憶體空間,其中在特定遞回步驟處產生的全部分區儲存在所述固定記憶體空間中。
- 如請求項1所述的方法,所述P個臨時子分區的儲存包含調用資料儲存處理程序,所述資料儲存處理程序包含: 動態地分配具有固定大小的資料區塊,其中所述資料區塊儲存來自給定父分區的P個臨時子分區中的第一子分區的一部分及來自下一鄰近父分區的P個臨時子分區中的對應第一子分區的一部分,以用於最大化所述資料區塊的儲存空間的使用。
- 如請求項1所述的方法,其中自所述晶片外儲存元件存取的所述分區資料的一部分儲存在所述晶片上儲存元件上,所述方法更包括: 經由隨機資料存取來存取所述晶片上儲存元件上的分區資料。
- 如請求項1所述的方法,其中所述晶片上儲存元件是靜態隨機存取記憶體,且所述晶片外儲存元件是動態隨機存取記憶體或固態磁碟機。
- 如請求項1所述的方法,其中所述無結構源資料是圖形資料,且所述應用是圖形處理應用。
- 一種用於處理無結構源資料的系統,所述系統包括: 晶片外儲存元件; 晶片上儲存元件;以及 處理器,耦接至所述晶片上儲存元件及所述晶片外儲存元件,所述處理器經組態以: 判定目標數目T個分區; 將輸入資料自所述晶片外儲存元件加載至所述晶片上儲存元件,所述輸入資料具有範圍V; 經由所述晶片上儲存元件將所述輸入資料分區成P個臨時父分區,其中所述P個臨時父分區中的一個特定父分區具有範圍V/P; 將所述P個臨時父分區自所述晶片上儲存元件儲存至所述晶片外儲存元件;以及 對所述P個臨時父分區進行分區以產生P個臨時子分區,直至產生所述目標數目T個分區為止,其中來自所述P個臨時父分區的資料是源資料以供遞回地加載、分區以及儲存所述源資料,其中應用經組態以自所述T個分區存取分區資料以用於產生輸出,其中所述分區資料的存取是所述晶片外儲存元件的順序讀取存取, 其中T、V以及P是大於0的數值。
- 如請求項11所述的系統,其中T是基於所述晶片上儲存元件的儲存容量,其中所產生的所述T個分區中的一個特定分區中的分區資料的範圍在所述晶片上儲存元件的所述儲存容量內。
- 如請求項11所述的系統,其中用於分區的第一層級的所述輸入資料是所述源資料,其中所述源資料具有範圍R,其中所產生的所述T個分區中的一個特定分區中的分區資料的範圍是R/T。
- 如請求項11所述的系統,其中所述分區資料具有比所述源資料的局部性更高的局部性。
- 如請求項11所述的系統,其中所述輸入資料的加載是經由所述晶片外儲存元件的順序讀取操作來分批地進行,且所述P個臨時父分區的儲存是經由所述晶片外儲存元件的順序寫入操作來進行。
- 如請求項11所述的系統,其中在所述晶片外儲存元件中分配固定記憶體空間,其中所述處理器經組態以使用所述固定記憶體空間來儲存在特定遞回步驟處產生的全部分區。
- 如請求項11所述的系統,其中所述P個臨時子分區的儲存包含調用資料儲存處理程序,所述資料儲存處理程序包含: 動態地分配具有固定大小的資料區塊,其中所述資料區塊儲存來自給定父分區的P個臨時子分區中的第一子分區的一部分及來自下一鄰近父分區的P個臨時子分區中的對應第一子分區的一部分,以用於最大化所述資料區塊的儲存空間的使用。
- 如請求項11所述的系統,其中所述處理器經組態以將自所述晶片外儲存元件存取的分區資料的一部分儲存在所述晶片上儲存元件上,所述處理器進一步經組態以: 經由隨機資料存取來存取所述晶片上儲存元件上的分區資料。
- 如請求項11所述的系統,其中所述晶片上儲存元件是靜態隨機存取記憶體,且所述晶片外儲存元件是動態隨機存取記憶體或固態磁碟機。
- 如請求項11所述的系統,其中所述無結構源資料是圖形資料,且所述應用是圖形處理應用。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062976296P | 2020-02-13 | 2020-02-13 | |
US62/976,296 | 2020-02-13 | ||
US16/795,510 US11442643B2 (en) | 2020-02-13 | 2020-02-19 | System and method for efficiently converting low-locality data into high-locality data |
US16/795,510 | 2020-02-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202131174A true TW202131174A (zh) | 2021-08-16 |
TWI843934B TWI843934B (zh) | 2024-06-01 |
Family
ID=77273447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110104669A TWI843934B (zh) | 2020-02-13 | 2021-02-08 | 用於處理無結構源資料的方法及系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11442643B2 (zh) |
CN (1) | CN113325999B (zh) |
TW (1) | TWI843934B (zh) |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6813701B1 (en) | 1999-08-17 | 2004-11-02 | Nec Electronics America, Inc. | Method and apparatus for transferring vector data between memory and a register file |
AU2002234258A1 (en) | 2001-01-22 | 2002-07-30 | Sun Microsystems, Inc. | Peer-to-peer network computing platform |
US8756404B2 (en) | 2006-12-11 | 2014-06-17 | International Business Machines Corporation | Cascaded delayed float/vector execution pipeline |
US8219749B2 (en) * | 2007-04-27 | 2012-07-10 | Netapp, Inc. | System and method for efficient updates of sequential block storage |
US8886796B2 (en) | 2008-10-24 | 2014-11-11 | Microsoft Corporation | Load balancing when replicating account data |
US8429497B2 (en) * | 2009-08-26 | 2013-04-23 | Skymedi Corporation | Method and system of dynamic data storage for error correction in a memory device |
US9213732B2 (en) | 2012-12-28 | 2015-12-15 | Sap Ag | Hash table and radix sort based aggregation |
US9465622B2 (en) | 2012-10-17 | 2016-10-11 | Samsung Electronics Co., Ltd. | Application defined computing component configuration |
US8959301B2 (en) * | 2012-11-09 | 2015-02-17 | International Business Machines Corporation | Accessing data in a storage system |
US9251081B2 (en) * | 2013-08-01 | 2016-02-02 | Advanced Micro Devices, Inc. | Management of caches |
JP6149595B2 (ja) | 2013-08-13 | 2017-06-21 | 富士通株式会社 | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 |
IN2013MU03836A (zh) * | 2013-12-06 | 2015-07-31 | Tata Consultancy Services Ltd | |
CN105320466A (zh) | 2014-07-29 | 2016-02-10 | 广明光电股份有限公司 | 固态硬盘安排操作的方法 |
US10356150B1 (en) * | 2014-12-15 | 2019-07-16 | Amazon Technologies, Inc. | Automated repartitioning of streaming data |
US10146806B2 (en) * | 2015-02-12 | 2018-12-04 | Oracle International Corporation | Adaptive resolution hsitogram |
CN107615388A (zh) * | 2015-03-20 | 2018-01-19 | 波利伍德有限责任公司 | 存储控制器中的可配置多级纠错 |
US9715502B1 (en) * | 2015-03-25 | 2017-07-25 | Amazon Technologies, Inc. | Distributed data migration using chunking |
US10657116B2 (en) * | 2015-10-19 | 2020-05-19 | Oracle International Corporation | Create table for exchange |
US10496283B2 (en) * | 2016-01-22 | 2019-12-03 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
US10468093B2 (en) | 2016-03-03 | 2019-11-05 | Nvidia Corporation | Systems and methods for dynamic random access memory (DRAM) sub-channels |
CN105843775B (zh) * | 2016-04-06 | 2018-12-04 | 中国科学院计算技术研究所 | 片上数据划分读写方法、系统及其装置 |
US10409727B2 (en) | 2017-03-31 | 2019-09-10 | Intel Corporation | System, apparatus and method for selective enabling of locality-based instruction handling |
CN113791907B (zh) | 2017-04-17 | 2022-11-22 | 迪普西格有限公司 | 无线电信号处理数据流操作的放置与调度 |
-
2020
- 2020-02-19 US US16/795,510 patent/US11442643B2/en active Active
-
2021
- 2021-02-02 CN CN202110141151.9A patent/CN113325999B/zh active Active
- 2021-02-08 TW TW110104669A patent/TWI843934B/zh active
Also Published As
Publication number | Publication date |
---|---|
CN113325999B (zh) | 2023-09-15 |
US20210255792A1 (en) | 2021-08-19 |
TWI843934B (zh) | 2024-06-01 |
KR20210103385A (ko) | 2021-08-23 |
US11442643B2 (en) | 2022-09-13 |
CN113325999A (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7381429B2 (ja) | ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法 | |
US12112423B2 (en) | Systems and methods for distributed scalable ray processing | |
WO2024051388A1 (zh) | 一种基于禁忌搜索算法的神经网络片上映射方法和装置 | |
US20200090051A1 (en) | Optimization problem operation method and apparatus | |
Chen et al. | Towards efficient allocation of graph convolutional networks on hybrid computation-in-memory architecture | |
CN109491934B (zh) | 一种集成计算功能的存储管理系统控制方法 | |
TW202207031A (zh) | 用於記憶體通道控制器之負載平衡 | |
CN115390788A (zh) | 基于fpga的图卷积神经网络稀疏矩阵乘法分配系统 | |
US11429299B2 (en) | System and method for managing conversion of low-locality data into high-locality data | |
Liu et al. | ReGNN: a ReRAM-based heterogeneous architecture for general graph neural networks | |
KR20210024751A (ko) | 이종 메모리 장치를 포함하는 그래프 처리 시스템 및 그래프 처리 시스템의 동작방법 | |
US20230403232A1 (en) | Data Transmission System and Method, and Related Device | |
TW202131174A (zh) | 用於處理無結構源資料的方法及系統 | |
KR20210081663A (ko) | 인터커넥트 장치, 인터커넥트 장치의 동작 방법 및 인터커넥트 장치를 포함하는 AI(Artificial Intelligence) 가속기 시스템 | |
KR102723995B1 (ko) | 저-지역성 데이터를 고-지역성 데이터로 효율적으로 변환하기 위한 시스템 및 방법 | |
CN115906684A (zh) | 面向申威架构的流体动力学多重网格求解器并行优化方法 | |
CN117114055B (zh) | 面向工业应用场景的fpga二值神经网络加速方法 | |
CN118014098B (zh) | 机器学习训练数据调度方法及设备 | |
US20220318614A1 (en) | Graph execution using access request response dynamic batch assembly | |
Wang et al. | Hexagonal Tiling based Multiple FPGAs Stencil Computation Acceleration and Optimization Methodology | |
CN118519768A (zh) | 向共享缓存进行数据溢出的方法、装置、设备和存储介质 | |
Bear | A Novel Processing-In-Memory Architecture for Dense and Sparse Matrix Multiplications |