TWI773051B - 資料處理裝置、積體電路及人工智能加速器 - Google Patents
資料處理裝置、積體電路及人工智能加速器 Download PDFInfo
- Publication number
- TWI773051B TWI773051B TW109146076A TW109146076A TWI773051B TW I773051 B TWI773051 B TW I773051B TW 109146076 A TW109146076 A TW 109146076A TW 109146076 A TW109146076 A TW 109146076A TW I773051 B TWI773051 B TW I773051B
- Authority
- TW
- Taiwan
- Prior art keywords
- stacking
- data
- unit
- units
- storage unit
- 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
- 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
-
- 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/25—Integrating or interfacing systems involving database management 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
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/24—Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Radar Systems Or Details Thereof (AREA)
Abstract
本揭露實施例提供用於資料處理的裝置、積體電路和AI加速器。用於資料處理的裝置包括多個堆積儲存單元,每個堆積儲存單元用於儲存堆積的一組節點的資料,所述一組節點中包括所述堆積的同一層節點中的至少部分節點;以及多個堆積調整單元,每個堆積調整單元用於訪問至少兩個堆積儲存單元,以對輸入的原始資料與所述至少兩個堆積儲存單元中儲存的資料進行排序。
Description
[01] 本揭露是有關於資料處理技術領域,且特別是有關於資料處理裝置、積體電路和人工智能(Artificial Intelligence,AI)加速器。
在許多算法或者模型中,經常需要處理排序問題,堆積排序(Heapsort)被廣泛用於處理排序問題。堆積排序是指利用堆積這種資料結構所設計的一種排序方式。
本揭露提供資料處理裝置、積體電路和AI加速器。
根據本揭露實施例的第一方面,提供一種資料處理裝置,所述裝置包括:多個堆積儲存單元,每個堆積儲存單元用於儲存堆積的一組節點的資料,所述一組節點中包括所述堆積的同一層節點中的至少部分節點;以及多個堆積調整單元,每個堆積調整單元用於訪問至少兩個堆積儲存單元,以對輸入的原始資料與所述至少兩個堆積儲存單元中儲存的資料進行排序。
根據本揭露實施例的第二方面,提供一種積體電路,所述積體電路包括第一方面所述的資料處理裝置。
根據本揭露實施例的第三方面,提供一種AI加速器,所述AI加速器包括第二方面所述的積體電路。
本揭露實施例將堆積中各個的節點的資料儲存在多個堆積儲存單元中,多個堆積儲存單元中的資料可以獨立地進行讀寫,在前一個資料通過所述多個堆積調整單元進行排序的同時,可以將後一個資料進堆積,從而可以實現在建立堆積過程中同時進行排序,提高了排序效率。
應當理解的是,以上的一般描述和後文的細節描述僅是示例性和解釋性的,而非限制本揭露。
這裏將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式並不代表與本揭露相一致的所有實施方式。相反,它們僅是與如所附請求項書中所詳述的、本揭露的一些方面相一致的裝置和方法的例子。
在本揭露使用的術語是僅僅出於描述特定實施例的目的,而非旨在限制本揭露。在本揭露和所附請求項書中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“及/或”是指並包含一個或多個相關聯的列出項目的任何或所有可能組合。另外,本文中術語“至少一種”表示多種中的任意一種或多種中的至少兩種的任意組合。
應當理解,儘管在本揭露可能採用術語第一、第二、第三等來描述各種資訊,但這些資訊不應限於這些術語。這些術語僅用來將同一類型的資訊彼此區分開。例如,在不脫離本揭露範圍的情况下,第一資訊也可以被稱爲第二資訊,類似地,第二資訊也可以被稱爲第一資訊。取决於語境,如在此所使用的詞語“如果”可以被解釋成爲“在……時”或“當……時”或“回應於確定”。
爲了使本技術領域的人員更好的理解本揭露實施例中的技術方案,並使本揭露實施例的上述目的、特徵和優點能够更加明顯易懂,下面結合附圖對本揭露實施例中的技術方案作進一步詳細的說明。
在許多算法或者模型(例如,神經網路模型)中,經常需要處理排序問題,特別是top k(k爲正整數)排序問題,即,從一組待排序資料中選擇出數值最大或者最小的k個資料。堆積排序被廣泛用於處理排序問題。堆積排序是指利用堆積這種資料結構所設計的一種排序方式。如圖1A所示,堆積是一個近似完全二元樹的結構,且在堆積爲最小堆積的情况下,堆積中的每個節點對應的資料總是小於或等於其子節點;在堆積爲最大堆積的情况下,堆積中的每個節點對應的資料總是大於或等於其子節點。
在一種堆積排序方式中,可以採用一塊完整的儲存單元儲存整個堆積,即,堆積的各個節點對應的資料均儲存在同一儲存單元中。由於讀寫衝突,每次只能對一個節點及其子節點的資料進行排序。如圖1B所示,是一個包括5個節點的示意圖,其中,這5個節點對應的資料均儲存在同一儲存單元中,即圖中的mem。在排序的時候,從堆積底開始,通過比較,首先將儲存單元中節點4的資料與節點1的資料互換,再將節點1與節點0的資料互換,然後將節點4的資料與節點1的資料互換,得到排序後的最大堆積,如左下角的示意圖所示。將堆積頂(即,堆積的根節點)的資料從儲存單元中寫出,剩餘的資料再重複上述排序過程,直到堆積中各個節點對應的資料均從儲存單元中寫出。可見,該堆積排序方式排序效率低。
基於此,本揭露實施例提供一種資料處理裝置,如圖2所示,所述裝置可包括多個堆積儲存單元201和多個堆積調整單元202。
多個堆積儲存單元201,每個堆積儲存單元用於儲存堆積的一組節點的資料,所述一組節點中包括所述堆積的同一層節點中的至少部分節點。
多個堆積調整單元202,每個堆積調整單元用於訪問至少兩個堆積儲存單元,以對輸入的原始資料與所述至少兩個堆積儲存單元中儲存的資料進行排序。
在一種可選的堆積排序方式中,資料從堆積底進堆積,再從堆積頂開始排序,因此,建立堆積和排序過程是獨立進行的,在進堆積過程中無法進行並行排序。本揭露實施例將堆積中各個的節點的資料儲存在多個堆積儲存單元201中,多個堆積儲存單元201中的資料可以獨立地進行讀寫,在前一個資料通過所述多個堆積調整單元202進行排序的同時,可以將後一個資料進堆積,從而可以實現在建立堆積過程中同時進行排序,提高了排序效率。
需要說明的是,對於最後一個堆積調整單元,如圖2所示的堆積調整單元n,雖然也連接了兩個堆積儲存單元,如堆積儲存單元n和堆積儲存單元n+1,但由於沒有調整單元對堆積儲存單元n+1寫入資料,因此,堆積調整單元n實際上無法從堆積儲存單元n+1讀取資料。在具體實踐中,堆積儲存單元n+1可以是一個虛擬的儲存單元,也可以是一個和其他堆積儲存單元類似的儲存單元。
此外,雖然圖2中示意地畫出了在排序時堆積調整單元訪問堆積儲存單元的資料流方向,但在實際應用中,本揭露並不限制堆積調整單元i只能向堆積儲存單元i寫入資料,及/或只能從堆積儲存單元i+1讀出資料。
圖3A是一個包括4層節點的堆積以及所述堆積中各個節點的資料的儲存方式的示意圖。如圖3A所示,第i堆積儲存單元可以用於儲存位於堆積的第i層的全部節點的資料,例如,第1堆積儲存單元用於儲存堆積的第1層節點P11的資料,第2堆積儲存單元用於儲存堆積的第2層節點P21和P22的資料,以此類推。
應當說明的是,圖3A所示的實施例僅爲本揭露的一種可能的實現方式,本揭露不限於此。在實際應用中,堆積的任意一層節點中全部節點的資料也可以儲存在多個堆積儲存單元中。例如,儲存節點P31的資料和節點P32的資料的堆積儲存單元可以與儲存節點P33的資料和節點P34的資料的堆積儲存單元不同。
在一些實施例中,每個堆積調整單元訪問的所述至少兩個堆積儲存單元用於儲存所述堆積的相鄰層節點的資料。可選地,每個堆積調整單元可以訪問兩個堆積儲存單元,其中,所述兩個堆積儲存單元用於儲存堆積中相鄰兩層節點中的部分或全部節點的資料。例如,在圖3A所示的實施例中,堆積調整單元1可以訪問第1堆積儲存單元和第2堆積儲存單元,堆積調整單元2可以訪問第2堆積儲存單元和第3堆積儲存單元,堆積調整單元3可以訪問第3堆積儲存單元和第4堆積儲存單元,以此類推。可選地,在其他實施例中,每個堆積調整單元還可以訪問兩個以上堆積儲存單元,以對所述兩個以上堆積儲存單元中的資料進行排序,其中,所述兩個以上堆積儲存單元中的資料可以是相鄰兩層節點中的部分或全部節點的資料,也可以是相鄰的三層或三層以上節點中的部分或全部節點的資料。
在另一些實施例中,每個堆積調整單元還可以對堆積的任意不相鄰的兩層以上節點中的至少部分資料進行排序,以滿足不同應用場景下的排序需求,此處不再贅述。
在一些實施例中,所述多個堆積調整單元中的至少兩個堆積調整單元可以並行地進行排序,從而提高資料處理效率。在另一些實施例中,所述多個堆積調整單元也可以對所述多個堆積儲存單元中的資料進行串行地排序。
爲了避免資料衝突,並行地進行排序的至少兩個堆積調整單元訪問的堆積儲存單元互不相同。例如,在圖3A所示的實施例中,堆積調整單元2訪問的堆積儲存單元包括第2堆積儲存單元和第3堆積儲存單元,堆積調整單元3訪問的堆積儲存單元包括第3堆積儲存單元和第4堆積儲存單元,由於堆積調整單元2和堆積調整單元3訪問的堆積儲存單元中均包括第3堆積儲存單元,因此,堆積調整單元2和堆積調整單元3不進行並行排序。而堆積調整單元1訪問的堆積儲存單元包括第1堆積儲存單元和第2堆積儲存單元,堆積調整單元3訪問的堆積儲存單元包括第3堆積儲存單元和第4堆積儲存單元,則堆積調整單元1和堆積調整單元3訪問的堆積儲存單元各不相同,即,這兩個堆積調整單元訪問的堆積儲存單元中不包括相同的堆積儲存單元。因此,堆積調整單元1和堆積調整單元3可以並行地進行排序。
作爲一種解决資料讀寫衝突的具體實現方式,多個堆積調整單元中兩個相鄰堆積調整單元分別訪問的兩個堆積儲存單元中包括一個相同的堆積儲存單元。例如,堆積調整單元1訪問的堆積儲存單元中包括第1堆積儲存單元和第2堆積儲存單元,堆積調整單元2訪問的堆積儲存單元中包括第2堆積儲存單元和第3堆積儲存單元,以此類推。在堆積調整單元1訪問第2堆積儲存單元時,堆積調整單元2可以訪問第3堆積儲存單元;堆積調整單元2訪問第2堆積儲存單元時,堆積調整單元1可以訪問第1堆積儲存單元,從而避免資料讀寫衝突。又例如,堆積調整單元1訪問的堆積儲存單元中包括第1堆積儲存單元至第3堆積儲存單元,堆積調整單元2訪問的堆積儲存單元中包括第3堆積儲存單元至第5堆積儲存單元,以此類推。類似的,在堆積調整單元1訪問第3堆積儲存單元時,堆積調整單元2可以訪問第4或第5堆積儲存單元。
作爲另一種解决資料讀寫衝突的具體實現方式,並行地進行排序的任意兩個堆積調整單元之間間隔至少一個堆積調整單元。例如,訪問第1堆積儲存單元和第2堆積儲存單元的堆積調整單元1與訪問第3堆積儲存單元和第4堆積儲存單元的堆積調整單元3之間間隔一個訪問第2堆積儲存單元和第3堆積儲存單元的堆積調整單元2,則堆積調整單元1與堆積調整單元3可以並行地進行排序。
在排序過程中,每次將一個資料進堆積,可以通過所述多個堆積調整單元對進堆積的資料與所述多個堆積儲存單元中儲存的資料進行排序。作爲再一種解决資料讀寫衝突的具體實現方式,相鄰兩個資料的進堆積時序之間至少間隔兩個堆積儲存單元的處理時間。例如,如圖6所示,資料d1在t1的開始時刻進堆積,則下一個資料d2可以在第t3的開始時刻進堆積,其中,t1、t2、t3….表示堆積儲存單元的處理時間。
除了上述方式之外,還可以採用其他方式來解决資料讀寫衝突的問題,以使多個堆積調整單元可以並行地進行排序,此處不再贅述。由於採用了多個堆積儲存單元,任意一個堆積儲存單元的讀寫過程不影響其他的堆積儲存單元。因此,訪問不同堆積儲存單元的多個堆積調整單元可以並行地進行排序,提高了排序效率。
在排序的過程中,所述多個堆積調整單元中每個堆積調整單可以獲取資料,並將獲取到的資料和訪問的所述至少兩個堆積儲存單元中的至少一個堆積儲存單元中的資料進行排序。
基於本揭露實施例的堆積儲存單元的結構,在建立堆積、堆積調整及出堆積過程中,輸入資料可以從堆積頂進堆積,並採用自上到下的方式進行調整。爲了便於理解,下面以每個堆積儲存單元儲存堆積的一層節點中所有節點的資料,每個堆積調整單元訪問的堆積儲存單元用於儲存堆積的相鄰兩層節點的資料爲例,對本揭露實施例的方案進行說明。假設堆積調整單元i用於訪問第i堆積儲存單元和第i+1堆積儲存單元,i爲正整數。其他情况下的排序方式與上述情况類似,此處不再贅述。本實施例中,將堆積中相鄰兩層節點的資料調整操作封裝在一個堆積調整單元中進行,利用ceil(log2
k)個堆積調整單元組成堆積調整流水綫。其中,ceil表示向上取整操作,k爲需要獲取的有序資料的總數,也就是前述top k排序問題中的k。
在進行排序時,先向堆積調整單元1輸入原始資料d1,堆積調整單元1將原始資料d1與第1堆積儲存單元和第2堆積儲存單元中至少一個堆積儲存單元的之前儲存的資料進行排序,並根據排序結果向堆積調整單元2輸出資料d1’,其中d1’可以是原始資料d1,也可以是第2堆積儲存單元中的一個資料。同理,將資料d1’作爲原始資料輸入到堆積調整單元2,堆積調整單元2將資料d1’與第2堆積儲存單元和第3堆積儲存單元中至少一個堆積儲存單元的資料進行排序,並根據排序結果向堆積調整單元3輸出資料d1’’,以此類推。
在堆積爲最小堆積且堆積中資料已滿的情况下,堆積調整單元1先將原始資料d1與根節點P11的兩個子節點的資料進行比較,將其中最小的資料(假設爲根節點的左子節點P21的資料)寫入根節點對應的堆積儲存單元。然後,將原始資料d1作爲堆積調整單元2的原始資料,堆積調整單元2將原始資料d1與節點P21的兩個子節點的資料進行比較,將其中最小的資料(假設爲節點P21的左子節點P31的資料)寫入節點P21對應的堆積儲存單元,以此類推。
進一步的,在堆積爲最小堆積且堆積中資料已滿的情况下,堆積調整單元1先將原始資料d1與根節點P11的兩個子節點的資料進行比較,若d1小於根節點P11的兩個子節點的資料,則可以進一步將d1與根節點P11的資料進行比較。若d1小於等於根節點P11的資料,則直接丟弃d1,若d1大於根節點P11的資料,則將d1儲存到第1堆積儲存單元,後續的堆積調整單元不需要啓動。在這種情况下,堆積調整單元1可以讀取第1堆積儲存單元的資料。
在堆積爲最大堆積且堆積中資料已滿的情况下,堆積調整單元1先將原始資料d1與根節點P11的兩個子節點的資料進行比較,將其中最大的資料(假設爲根節點的左子節點P21的資料)寫入根節點對應的堆積儲存單元。然後,將原始資料d1作爲堆積調整單元2的原始資料,堆積調整單元2將原始資料d1與節點P21的兩個子節點的資料進行比較,將其中最大的資料(假設爲節點P21的左子節點P31的資料)寫入節點P21對應的堆積儲存單元,以此類推。
在一些實施例中,所述堆積的同一節點的各個子節點的資料儲存在同一堆積儲存單元的同一地址中。例如,假設資料位長爲n,則可以將節點的左子節點的資料儲存在對應儲存地址的低n位中,將同一節點的右子節點的資料儲存在對應儲存地址的高n位中。在這種情况下,堆積儲存單元的位寬爲資料位長的兩倍。如圖3B所示,節點P11的資料儲存在堆積儲存單元mem1中,節點P11的兩個子節點(即,P21和P22)的資料儲存在堆積儲存單元mem2的同一地址下,節點P21的兩個子節點(即,P31和P32)的資料儲存在堆積儲存單元mem3的同一地址下(如mem3的第一行),節點P22的兩個子節點(即,P33和P34)的資料儲存在堆積儲存單元mem3的另一地址下(如mem3的第二行)。通過將同一節點的各個子節點的資料儲存在同一儲存地址中,可以在一個時鐘周期內從同一儲存單元的同一儲存地址中讀取到同一節點的各個子節點的資料,從而减少資料讀取次數,提高資料處理效率。
在一些實施例中,所述裝置還可包括:預處理單元,用於對從資料儲存裝置獲取的原始資料進行預篩選處理。經過預篩選處理的資料被輸入後續的堆積調整單元。所述預篩選處理是指從原始資料中過濾掉不需要進堆積的資料。通過進行預篩選處理,能够减少資料進堆積的次數,從而提高資料處理效率。輸入資料量越大,預篩選處理的收益越明顯,特別是對於前述top k資料排序場景中,收益較大。
其中,所述資料儲存裝置可以是位於本揭露提供的裝置外部的記憶體,該外部記憶體與本揭露的資料處理裝置相連。本揭露不限制外部記憶體的類型,例如,可以是易失性記憶體,如RAM(Random Access Memory)、SDRAM(Synchronous Dynamic RAM)、DDR(Double Data Rate) SDRAM等等,也可以是非易失性記憶體,如硬碟、移動硬碟、磁碟等等。
可選地,所述預處理單元可以在所述堆積儲存單元中儲存的資料達到預設數量的情况下,對新獲取到的所述原始資料進行預篩選處理。可選地,在所述堆積儲存單元中儲存的資料未達到預設數量的情况下,所述預處理單元可以直接將所述原始資料輸出至所述多個堆積調整單元。所述預設數量可以等於堆積儲存單元可儲存的資料總數,也就是說,在多個堆積儲存單元存滿的情况下,才對新獲取到的原始資料進行預篩選處理。在一些實施例中,可以根據原始資料的數量確定啓用的堆積儲存單元的數量,在已啓用的堆積儲存單元存滿的情况下,才對新獲取到的原始資料進行預篩選處理。例如,在原始資料的數量小於所有堆積儲存單元可儲存的資料總數的情况下,僅啓用部分堆積儲存單元,以使啓用的堆積儲存單元可儲存的資料總數等於原始資料的數量。又例如,在原始資料的數量大於或等於所有堆積儲存單元可儲存的資料總數的情况下,可以啓用全部堆積儲存單元。
在一些實施例中,所述預處理單元可以通過比較獲取到的原始資料與所述堆積的根節點的資料,對原始資料進行預篩選處理,以預先判定所述原始資料是否需要進堆積。
例如,在所述堆積爲最小堆積的情况下,堆積的根節點的資料小於或等於其餘任一節點的資料。在某一原始資料小於堆積的根節點的資料的情况下,該原始資料必然也小於堆積的其餘任一節點的資料,從而無需通過堆積調整單元對該原始資料進行排序。只有在某一原始資料大於堆積的根節點的資料的情况下,才需要通過堆積調整單元對該原始資料進行排序。因此,在獲取到的原始資料小於或等於堆積的根節點的資料的情况下,判定該原始資料不需要進堆積,否則,判定該原始資料需要進堆積。同理,在所述堆積爲最大堆積的情况下,在獲取到的原始資料大於或等於堆積的根節點的資料的情况下,判定該原始資料不需要進堆積,否則,判定該原始資料需要進堆積。
在應用場景爲確定原始資料中的top k個最大資料的情况下,採用最小堆積能够有效提高資料處理效率。同理,在應用場景爲確定原始資料中的top k個最小資料的情况下,採用最大堆積能够有效提高資料處理效率。
在一些實施例中,所述預處理單元的數量可以爲多個,可以採用多個所述預處理單元並行地對獲取到的原始資料進行預篩選處理。通過進行預篩選處理,使得原始資料中有一部分資料不需要進堆積。在top k排序場景下,尤其是在原始資料的數量與k值相差較大的情况下,會有相當一部分資料不需要進堆積。因此,通過採用多個預處理單元並行地進行預篩選處理,能够有效提高預篩選效率,避免堆積調整單元長時間處於空閑等待狀態。
可選地,在判定原始資料需要進堆積的情况下,所述預處理單元可以將所述原始資料傳輸至第一緩存單元或堆積調整單元。對於需要進堆積的原始資料,可以先將所述原始資料傳輸至第一緩存單元,然後將第一緩存單元中的原始資料依次輸出至所述多個堆積調整單元進行排序。或者,也可以由所述預處理單元將需要進堆積的原始資料直接依次輸出至所述多個堆積調整單元進行排序。
可選地,在判定所述原始資料不需要進堆積的情况下,所述預處理單元可以將所述原始資料删除。可選地,所述預處理單元還將不需要進堆積的原始資料返回所述資料儲存裝置,並且所述堆積調整單元將在排序過程中被擠出的原始資料返回所述資料儲存裝置,從而消除堆積儲存單元對輸出有序資料量的限制,提高資料處理裝置的通用性。其中,通過將不需要進堆積的資料删除,可以節約儲存空間。通過將此次排序未被選中的資料返回所述資料儲存裝置,可以便於在後續處理過程中再次使用返回所述資料儲存裝置的原始資料。例如,所述多個堆積調整單元可以在所述多個堆積儲存單元中的資料均排序完成的情况下,對返回所述資料儲存裝置的資料進行再次排序。資料處理裝置的硬體參數確定後,一次排序輸出的有序資料量受堆積容量的限制,例如,受到堆積的層數、堆積調整單元的數量、堆積儲存單元的大小等的影響,有可能不能輸出足够數量的有序資料。本揭露實施例提供的裝置支持將排序過程中未選中的原始資料(如未進堆積的原始資料和進堆積後被擠出的原始資料)寫回資料儲存裝置,以便進行多次排序,從而提高了資料處理裝置的通用性。
在一些實施例中,可以對進堆積的資料進行第一輪排序,在第一輪排序之後,再對第一輪排序未選中的資料進行下一輪排序。進一步地,在第二輪排序中可以按照第一輪排序的方式進行同樣的處理,包括再次進行預篩選處理。通過這種方式,可以進行多輪排序,直到滿足某一停止條件。該停止條件可以是待排序的原始資料全部排序完成。該停止條件也可以是已排序的資料的數量達到了要求的數量。通過多輪排序,實現了用堆積容量較小的資料處理裝置對數量較多的原始資料進行排序,避免了堆積容量不足導致的排序失敗,提高了資料處理裝置的適用範圍。第二輪及第二輪以後的排序過程與第一輪排序的過程相同,此處不再贅述。
在一些實施例中,在資料儲存裝置容量受限的情况下,也可以將原始資料分批寫入資料儲存裝置,並分別對每一批寫入資料儲存裝置的資料進行預篩選處理以及排序處理,從而實現了通過容量較小的資料儲存裝置來對數量較多的資料進行排序,避免了資料儲存裝置的容量不足導致的排序失敗。
在一些實施例中,所述資料處理裝置還包括第二緩存單元,用於對從資料儲存裝置獲取的原始資料進行緩存,所述第二緩存單元將緩存後的原始資料發送給所述多個堆積調整單元;所述多個堆積調整單元用於對從所述第二緩存單元獲取的原始資料與所述多個堆積儲存單元中的資料進行排序。可選地,所述第二緩存單元每次可以從資料儲存裝置獲取一個或多個原始資料,並對獲取的原始資料進行緩存。可選地,所述第一緩存單元可以每次從預處理單元獲取一個或多個原始資料,並對獲取的原始資料進行緩存。所述第一緩存單元和所述第二緩存單元可以是FIFO(First In First Out,先進先出)緩存單元。
如圖4所示,是本揭露另一些實施例的資料處理裝置的示意圖。其中,在該示例中,假設資料處理裝置包括n+1個堆積儲存單元201、n個堆積調整單元202、1個第一緩存單元203和4個預處理單元204。其中,每個堆積儲存單元用於儲存堆積的一層節點的資料,堆積調整單元i用於訪問第i個堆積儲存單元和第i+1個堆積儲存單元。假設在進行top k的資料排序任務下,資料通路如下。
(1)原始資料並行(假設並行度爲4)經過4個預處理單元204,如果堆積中資料的數量還未達到k個,則該原始資料直接進入第一緩存單元203;如堆積中資料的數量達到k個,則每個預處理單元將輸入的各個原始資料分別與當前堆積頂(即,堆積的根節點)的資料進行比較,在堆積爲最小堆積的情况下,將大於堆積頂的原始資料輸出至第一緩存單元203,將小於或等於堆積頂的資料通過第一輸出端寫回外部的資料儲存裝置(圖中未示出),以便進行多次排序。
(2)堆積調整單元1從第一緩存單元203中取數。多個堆積調整單元進行並行堆積調整,將堆積中資料調整爲最小堆積,可以通過第二輸出端將從堆積中擠出的資料寫回資料儲存裝置,以便多次排序,重複上述過程,直到所有原始資料進堆積完成。
本示例的裝置所執行的指令如下。
(1)執行初始化指令,初始化n+1個堆積儲存單元201中的旗標位元。
(2)執行進堆積指令,通過並行預篩選過程和並行堆積調整過程,選取k個原始數組成最小堆積,可採用多條進堆積指令。
(3)執行出堆積指令,通過並行堆積調整向堆積中輸入數值最大的資料,將堆積中k個有效資料通過第二輸出端依次替換出,替換出的k個資料即爲所需的top k資料。
在一些實施例中,每個堆積儲存單元可以包括旗標位元,旗標位元用於指示所述堆積儲存單元中的對應位置的資料是否有效。如圖3B所示,堆積儲存單元mem1中包括節點P11的資料的旗標位元,如圖中的flg1的黑色方塊所示,堆積儲存單元mem2中包括節點P21和節點P22的資料的旗標位元,如圖中的flg2,P21的旗標位元用黑色方塊表示,P22的旗標位元用灰色方塊表示,以此類推。在一個儲存單元中可儲存N個資料的情况下,該儲存單元中可包括N個旗標位元。堆積儲存單元中的資料有效,表示所述資料是需要進行排序的資料;堆積儲存單元中的資料無效,表示所述資料不是需要進行排序的資料。在一些實施例中,在所述堆積儲存單元中的資料有效的情况下,所述旗標位元爲第一數值。在所述堆積儲存單元中的資料無效的情况下,所述旗標位元爲第二數值。例如,所述第一數值可以是“1”,所述第二數值可以是“0”。
一種常見的堆積排序方式對各個堆積儲存單元中的資料進行初始化,並且,隨著堆積的深度增加,初始化的時間也會增加。而本揭露實施例通過採用旗標位元,在向堆積儲存單元寫入資料之前,可以對所述堆積儲存單元中的各個旗標位元進行初始化處理,從而無需對資料進行初始化處理。由於旗標位元的位長小於原始資料的位長(例如,旗標位元可以是1 bit),因此,在一些例子中可以僅需要1個時鐘周期就能够實現所有堆積儲存單元旗標位元的初始化,對旗標位元進行初始化處理的時間小於對堆積儲存單元中的資料進行初始化的時間,從而提高了資料處理效率。每向所述堆積儲存單元寫入一個有效資料,可以對寫入的有效資料的旗標位元進行更新,也就是將該旗標位元從無效設置爲有效,從而根據資料的旗標位元即可確定堆積儲存單元中的資料是否爲有效資料。
在設置旗標位元的情况下,所述多個堆積調整單元中的每個堆積調整單元還用於:在第一堆積儲存單元的旗標位元指示對應位置的資料均爲有效資料的情况下,對輸入該堆積調整單元的的原始資料和所述有效資料進行排序;在所述第一堆積儲存單元中的旗標位元指示對應位置的資料包括任一無效資料的情况下,輸入到該堆積調整單元的原始資料寫入無效資料對應位置。其中,第一堆積儲存單元爲該堆積調整單元所訪問的至少兩個堆積儲存單元中更靠近根節點的堆積儲存單元。
在一些實施例中,在該堆積調整單元訪問的堆積儲存單元中的多個無效資料的情况下,按照先左後右的這種順序,將輸入到所述堆積調整單元的資料寫入靠左的無效資料對應的位置。
也就是說,只有有效資料才會參與排序,無效資料會被輸入對應堆積調整單元的原始資料直接替換掉。通過這種方式,實現了原始資料的進堆積過程,避免了無效資料對有效資料的排序過程産生影響。
在對所述多個堆積儲存單元中的資料排序完成之後,需要將堆積儲存單元中的資料出堆積。本揭露實施例的資料出堆積過程與資料進堆積過程的處理方式類似,都是向所述多個堆積調整單元輸入一個資料,再由所述多個堆積調整單元對輸入的資料與堆積儲存單元中已儲存的資料進行排序。
具體來說,在出堆積過程中,所述多個堆積調整單元中的每個堆積調整單元可以訪問至少兩個堆積儲存單元,對獲取到的指定資料與所述至少兩個堆積儲存單元中儲存的資料進行排序,以使所述至少兩個堆積儲存單元中儲存的資料出堆積。出堆積過程與排序過程類似,也是並行執行的。在出堆積過程中,每次可以向所述多個堆積儲存單元輸入一個指定資料,在最小堆積應用場景中,所述指定資料的數值可以大於所述多個堆積儲存單元中儲存的各個資料,例如,所述指定資料可以是數值爲+∞的資料。所謂+∞的資料可以是原始資料的資料格式下的最大值,例如,對於16位浮點數,7c0016
可以表示+∞。在最大堆積應用場景中,所述指定資料的數值可以小於所述多個堆積儲存單元中儲存的各個資料,例如,所述指定資料可以是數值爲-∞的資料。所謂-∞的資料可以是原始資料的資料格式下的最小值,例如,對於16位浮點數,fc0016
可以表示-∞。在輸入指定資料之後,可以將堆積的根節點的資料出堆積,再由所述多個堆積調整單元對所述指定資料以及堆積儲存單元中的其他資料並行地進行排序。
這樣,可以將資料進堆積、資料排序和資料出堆積這三個過程統一通過相同的流程實現,從而有利於進行資料並行處理。
上述初始化、進堆積以及出堆積的過程可以分別由不同的指令控制。在傳統的堆積排序方案中,整個排序過程採用一條指令完成,參數固定後,資料處理裝置的通用性較差。在本揭露實施例中,一次排序分爲初始化、進堆積、出堆積三個過程,分別對應三種指令,一次排序中可以有多條進堆積指令(原始資料可以分多次輸入),既可以消除資料儲存裝置對原始資料的數量限制,又可以使堆積調整單元與預處理單元並行運行,使用比較靈活。所述初始化、進堆積以及出堆積的過程中的指令可以由上級控制器發送至所述資料處理裝置中的堆積控制單元,並在所述堆積控制單元的控制下實現。
在一些實施例中,所述裝置還包括:堆積控制單元,用於執行以下至少任一操作:在接收到初始化指令的情况下,控制所述多個堆積儲存單元在同一個時鐘周期內進行初始化;在接收到進堆積指令的情况下,從資料儲存裝置讀取原始資料,將讀取到的所述原始資料傳輸至所述多個堆積調整單元,以使所述多個堆積調整單元對所述原始資料和多個堆積儲存單元中的資料進行排序;以及在接收到出堆積指令的情况下,控制所述多個堆積調整單元按照特定順序將所述多個堆積儲存單元中的資料從堆積頂輸出。
具體來說,所述堆積控制單元在接收到初始化指令的情况下,可以將初始化信號發送至堆積儲存單元,以對堆積儲存單元中的各個旗標位元進行初始化。所述堆積控制單元在接收到進堆積指令的情况下,可以從資料儲存裝置中讀取原始資料,將所述原始資料輸出至預處理單元,由預處理單元判斷所述原始資料是否需要進行預篩選處理。如果需要,所述預處理單元將不需要進堆積的原始資料直接删除或返回所述資料儲存裝置,將需要進堆積的資料輸出至第一緩存單元;如不需要進行預篩選處理,則直接將原始資料輸出至第一緩存單元。堆積調整單元接收到第一緩存單元中的原始資料,根據原始資料的大小對堆積儲存單元中的資料進行逐級調整,直到所有需要排序的原始資料都處理完畢。
所述堆積控制單元在接收到出堆積指令的情况下,將指定資料輸出至堆積調整單元,堆積調整單元接收所述指定資料,對堆積儲存單元中的資料進行逐級調整,每一個指定資料進堆積之後,堆積儲存單元中都會有一個資料(即堆積的根節點的資料)被擠出堆積,所述堆積控制單元將該擠出的資料依次輸出到資料處理裝置的資料輸出端口。
如圖5A至5F是本揭露實施例的排序過程中節點資料變化的示意圖。本實施例以最小堆積爲例進行說明,最大堆積的排序過程與最小堆積類似,此處不再贅述。假設堆積的深度爲6,即,堆積中包括6層節點,每層節點中各個節點的資料儲存在一個獨立的堆積儲存單元中,同一節點的各個子節點的資料儲存在同一堆積儲存單元中相同的地址中,第i層節點對應的堆積儲存單元爲堆積儲存單元i,訪問堆積儲存單元i與堆積儲存單元i+1的堆積調整單元爲堆積調整單元i,第i層的各個節點記爲Pij,1≤j≤2i-1
,i爲正整數。
假設初始時刻t0的堆積如圖5A所示。在t1時刻,原始資料“70”進堆積,節點P11的資料“8”從所述堆積儲存單元1中被擠出,堆積調整單元1從堆積儲存單元2中讀取節點P21的資料和節點P22的資料進行比較,堆積調整單元1將節點P21的資料寫入節點P11對應的堆積儲存單元1,將原始資料“70”輸出至堆積調整單元2,如圖5B所示。
在t2時刻,堆積調整單元2從堆積儲存單元3中讀取節點P31的資料和節點P32的資料進行比較,堆積調整單元2將節點P31的資料寫入節點P21對應的堆積儲存單元2,將原始資料“70”輸出至堆積調整單元3如圖5C所示。
在t3時刻,堆積調整單元3從堆積儲存單元4中讀取節點P41的資料和節點P42的資料;同時,原始資料“75”進堆積,節點P11的資料“12”從所述堆積儲存單元1中被擠出,堆積調整單元1從堆積儲存單元2中讀取節點P21的資料和節點P22的資料,如圖5D所示。
在t4時刻,堆積調整單元3將節點P41的資料寫入節點P31對應的堆積儲存單元3,將原始資料“70”輸出至堆積調整單元4,堆積調整單元4從堆積儲存單元5中讀取節點P51的資料和節點P52的資料;同時,堆積調整單元1將節點P22的資料寫入節點P11對應的堆積儲存單元1,將原始資料“75”輸出至堆積調整單元2,堆積調整單元2從堆積儲存單元3中讀取節點P31的資料和節點P32的資料,堆積調整單元4將節點P51的資料寫入節點P41對應的堆積儲存單元3,將原始資料“70”輸出至堆積調整單元5,如圖5E所示。
在t5時刻,堆積調整單元5從堆積儲存單元6中讀取節點P61的資料和節點P62的資料;同時,堆積調整單元2將節點P34的資料寫入節點P22對應的堆積儲存單元2,將原始資料“75”輸出至堆積調整單元3,堆積調整單元3從堆積儲存單元4中讀取節點P47的資料和節點P48的資料;同時,原始資料“80”進堆積,如圖5F所示。
其中,在一些例子中,由於堆積調整單元的調整需要兩個周期,t1和t2的起始時刻相隔至少兩個周期,t2和t3的起始時刻相隔至少兩個周期。
可見,從t3時刻開始,同時有2個堆積調整單元在工作。同理,從t5時刻開始,同時有3個堆積調整單元在工作,從t7時刻開始,同時有3個堆積調整單元在工作,以此類推。與非並行排序方式中每個時刻只能由一個堆積調整單元在運行相比,本揭露實施例的並行堆積排序的方式能够將排序時間縮短到約爲原來的1/3。堆積的深度越大,同時工作的堆積調整單元的數量也越多,也就是並行度越高,縮短的時間就越多。
圖6是堆積的深度爲8時的資料流動過程的示意圖。其中,d1、d2等表示輸入的原始資料,t1、t2等表示時間,adj1、adj2等表示堆積調整單元。可以看出,本揭露實施例在堆積排序過程中將建立堆積、堆積調整兩個過程合並爲統一的自上而下的堆積調整過程,堆積的相鄰兩層節點的資料通過一個堆積調整單元進行調整,多個堆積調整單元組成陣列,輸入資料流水經過各個堆積調整單元,不同時刻,多個堆積調整單元可並行執行。且從t6時刻開始,達到最大並行度,即,4。例如,在t7時刻,堆積調整單元1、堆積調整單元3、堆積調整單元5和堆積調整單元7均同時工作。應當說明的是,由於下一級堆積調整單元可能會修改上一級堆積調整單元所需的堆積儲存單元中儲存的資料,爲避免資料讀寫衝突,相鄰兩個原始資料進堆積的時間需要間隔一級,即第m個原始資料本身或者被第m個原始資料從堆積儲存單元中替換出來的資料通過adj3進行排序時,第m+1個原始資料才可通過adj1進行排序。
本揭露實施例的資料處理裝置中的各個單元可基於FPGA(Field Programmable Gate Array,現場可程式化邏輯閘陣列)、PLD(programmable logic device,可程式化邏輯元件)、ASIC(Application Specific Integrated Circuit,專用積體電路)控制器、微控制器、微處理器或其他電子元件實現。
本揭露提供的資料處理裝置實現了並行堆積排序,提高了資料處理效率。在一些實施例中,無需對堆積儲存單元中的資料進行初始化,僅需對旗標位元進行初始化,提高了初始化效率。在一些實施例中,可以進行預篩選處理,减少了原始資料進堆積的次數,進一步提高了資料處理效率。在一些實施例中,可以進行多輪排序,支持對資料儲存裝置中的原始資料進行多次排序,也支持將原始資料分批寫入資料儲存裝置後與堆積儲存單元中的同一批資料進行排序,排序過程不受堆積儲存單元以及資料儲存裝置大小的限制,通用性較强。
相應地,本揭露實施例還提供一種積體電路,所述積體電路包括任一實施例所述的資料處理裝置。
在一些實施例中,所述積體電路還包括:控制器,用於向所述資料處理裝置發送以下至少任一指令:初始化指令,用於指示所述多個堆積儲存單元進行初始化;進堆積指令,用於指示所述多個堆積調整單元獲取原始資料,並對所述原始資料和所述多個堆積儲存單元中儲存的資料進行排序;以及出堆積指令,用於指示所述多個堆積調整單元按照特定順序將所述多個堆積儲存單元中儲存的資料輸出。
其中,所述初始化指令、所述進堆積指令和所述出堆積指令可以是不同的指令。在本揭露實施例中,一次排序分爲初始化、進堆積、出堆積三個過程,分別對應三種指令,一次排序中可以有多條進堆積指令(原始資料可以分多次輸入),既可以消除資料儲存裝置對原始資料的數量限制,又可以使堆積調整單元與預處理單元並行運行,使用比較靈活。在一個例子中,所述初始化、進堆積以及出堆積的過程中的指令可以由積體電路的控制器發送至所述資料處理裝置中的堆積控制單元,並在所述堆積控制單元的控制下實現。
相應地,本揭露實施例還提供一種AI(Artificial Intelligence,人工智能)加速器,所述AI加速器包括任一實施例所述的積體電路。
本領域技術人員可以理解,在具體實施方式的上述方法中,各步驟的撰寫順序並不意味著嚴格的執行順序而對實施過程構成任何限定,各步驟的具體執行順序應當以其功能和可能的內在邏輯確定。
本領域技術人員在考慮說明書及實踐這裏揭露的說明書後,將容易想到本揭露的其它實施方案。本揭露旨在涵蓋本揭露的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本揭露的一般性原理並包括本揭露未揭露的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視爲示例性的,本揭露的真正範圍和精神由下面的請求項指出。
應當理解的是,本揭露並不局限於上面已經描述並在附圖中示出的精確結構,並且可以在不脫離其範圍進行各種修改和改變。本揭露的範圍僅由所附的請求項來限制。
以上所述僅爲本揭露的較佳實施例而已,並不用以限制本揭露,凡在本揭露的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本揭露保護的範圍之內。
上文對各個實施例的描述傾向於强調各個實施例之間的不同之處,其相同或相似之處可以互相參考,爲了簡潔,本文不再贅述。
201:堆積儲存單元
202:堆積調整單元
203:第一緩存單元
204:預處理單元
adj1、adj2、adj3、adj4、adj5、adj6、adj7、adj8:堆積調整單元
d1、d2、d3、d4、d5:資料
flg1、flg2、flg3、flg4、flg5:旗標位元
mem:儲存單元
mem1、mem2、mem3、mem4、mem5:堆積儲存單元
P11、P21、P22、P31、P32、P33、P34、P41、P42、P43、P44、P45、P46、P47、P48:節點
t1、t2、t3、t4、t5、t6、t7、t8、t9、t10、t11、t12:時間
此處的附圖被並入說明書中並構成本說明書的一部分,這些附圖示出了符合本揭露的實施例,並與說明書一起用於說明本揭露的技術方案。
圖1A是一些實施例的堆積的示意圖。
圖1B是一些實施例的堆積排序過程的示意圖。
圖2是本揭露實施例的資料處理裝置的示意圖。
圖3A 和圖3B分別是本揭露實施例的資料儲存方式的示意圖。
圖4是本揭露另一些實施例的資料處理裝置的示意圖。
圖5A至圖5F是本揭露實施例的堆積排序過程中資料變化的示意圖。
圖6是本揭露實施例的資料流動過程的示意圖。
201:堆積儲存單元
202:堆積調整單元
Claims (15)
- 一種用於資料處理的裝置,其特徵在於,所述裝置包括:多個堆積儲存單元,每個堆積儲存單元用於儲存堆積的一組節點的資料,所述一組節點中包括所述堆積的同一層節點中的至少部分節點;以及多個堆積調整單元,每個堆積調整單元用於訪問至少兩個堆積儲存單元,以對輸入的原始資料與所述至少兩個堆積儲存單元中儲存的資料進行排序,其中,所述多個堆積調整單元中的至少兩個堆積調整單元並行進行排序,並行地進行排序的所述至少兩個堆積調整單元訪問的堆積儲存單元互不相同。
- 根據請求項1所述的裝置,其特徵在於,每個堆積調整單元訪問的所述至少兩個堆積儲存單元用於儲存所述堆積的相鄰層節點的資料;及/或所述多個堆積調整單元中每個堆積調整單元用於獲取所述輸入的原始資料,並將所述獲取到的原始資料和訪問的所述至少兩個堆積儲存單元中的至少一個堆積儲存單元中的資料進行排序。
- 根據請求項1或2所述的裝置,其特徵在於,所述多個堆積調整單元中兩個相鄰堆積調整單元分別訪問的兩個堆積儲存單元中包括一個相同的堆積儲存單元。
- 根據請求項1或2所述的裝置,其特徵在于,所述裝置還包括:預處理單元,用於對從資料儲存裝置獲取的原始資料進行預篩選處理,經過預篩選處理的資料被輸入所述多個堆積調整單元。
- 根據請求項4所述的裝置,其特徵在於,所述預處理單元用於在所述堆積儲存單元中儲存的資料達到預設數量的情況下,對新獲取到的所述原始資料進行所述預篩選處理。
- 根據請求項4所述的裝置,其特徵在於,所述預處理單元的數量為多個,多個所述預處理單元用於並行對獲取到的所述原始資料進行所述預篩選處理。
- 根據請求項4所述的裝置,其特徵在於,所述預處理單元用於:在判定所述原始資料需要進堆積的情況下,將所述原始資料傳輸至緩存單元或所述多個堆積調整單元;和在判定所述原始資料不需要進堆積的情況下,將所述原始資料删除或返回所述資料儲存裝置;所述多個堆積調整單元還用於:將在排序過程中被擠出的原始資料返回所述資料儲存裝置;和在所述多個堆積儲存單元中的資料均排序完成的情況下,對返回所述資料儲存裝置的原始資料進行再次排序。
- 根據請求項4所述的裝置,其特徵在於,所述裝置還包括:第一緩存單元,用於對從所述預處理單元獲取的經過所述預篩選處理的原始資料進行緩存;所述多個堆積調整單元用於對從所述第一緩存單元獲取的原始資料與所述多個堆積儲存單元中的資料進行排序。
- 根據請求項1或2所述的裝置,其特徵在於,所述裝置還包括:第二緩存單元,用於對從資料儲存裝置獲取的原始資料進行緩存;所述多個堆積調整單元用於對從所述第二緩存單元獲取的原始資料與所述多個堆積儲存單元中的資料進行排序。
- 根據請求項1或2所述的裝置,其特徵在於,所述堆積儲存單元均包括旗標位元,其中,所述旗標位元用於指示所述堆積儲存單元中的對應位置的資料是否有效,所述堆積儲存單元還用於:對所述堆積儲存單元中的各個旗標位元進行初始化處理;及/或在確定一個旗標位元的對應位置寫入有效資料的情況下,對該旗標位元進行更新。
- 根據請求項10所述的裝置,其特徵在於,所述多個堆積調整單元中的每個堆積調整單元還用於: 在該堆積調整單元訪問的第一堆積儲存單元的旗標位元指示對應位置的資料均為有效資料的情況下,對輸入到該堆積調整單元的原始資料和所述有效資料進行排序,其中,所述第一堆積儲存單元為該堆積調整單元所訪問的所述至少兩個堆積儲存單元中更靠近根節點的堆積儲存單元;和在所述第一堆積儲存單元的旗標位元指示對應位置的資料包括任一無效資料的情況下,將輸入到該堆積調整單元的所述原始資料寫入所述無效資料對應的位置。
- 根據請求項1或2所述的裝置,其特徵在於,所述多個堆積調整單元中的每個堆積調整單元用於:讀取至少兩個堆積儲存單元中的至少一個堆積儲存單元中儲存的資料;對輸入該堆積調整單元的原始資料與所述讀取的資料進行排序;以及根據排序的要求,將所述排序結果中較大或較小的資料寫入所述至少兩個堆積儲存單元中另一個堆積儲存單元,其中,所述另一個堆積儲存單元與所述至少一個堆積儲存單元不是同一個堆積儲存單元。
- 根據請求項1或2所述的裝置,其特徵在於,所述裝置還包括:堆積控制單元,用於執行以下至少任一操作:在接收到初始化指令的情況下,控制所述多個堆積儲存單元在同一個時鐘周期內進行初始化; 在接收到進堆積指令的情況下,從資料儲存裝置讀取原始資料,將讀取到的所述原始資料傳輸至所述多個堆積調整單元,以使所述多個堆積調整單元對所述原始資料和多個堆積儲存單元中的資料進行排序;以及在接收到出堆積指令的情況下,控制所述多個堆積調整單元按照特定順序將所述多個堆積儲存單元中的資料從堆積頂輸出。
- 一種積體電路,其特徵在於,所述積體電路包括請求項1至13任意一項所述的資料處理裝置。
- 一種人工智能AI加速器,其特徵在於,所述AI加速器包括請求項14所述的積體電路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010244150.2 | 2020-03-31 | ||
CN202010244150.2A CN113467702A (zh) | 2020-03-31 | 2020-03-31 | 数据处理装置、集成电路和ai加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202138994A TW202138994A (zh) | 2021-10-16 |
TWI773051B true TWI773051B (zh) | 2022-08-01 |
Family
ID=77865417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109146076A TWI773051B (zh) | 2020-03-31 | 2020-12-24 | 資料處理裝置、積體電路及人工智能加速器 |
Country Status (5)
Country | Link |
---|---|
JP (1) | JP2022531075A (zh) |
KR (1) | KR20210129715A (zh) |
CN (1) | CN113467702A (zh) |
TW (1) | TWI773051B (zh) |
WO (1) | WO2021196745A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115932532B (zh) * | 2023-03-09 | 2023-07-25 | 长鑫存储技术有限公司 | 故障存储单元的物理地址的存储方法、装置、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060004897A1 (en) * | 2000-11-28 | 2006-01-05 | Paul Nadj | Data structure and method for sorting using heap-supernodes |
US20060095444A1 (en) * | 2000-11-28 | 2006-05-04 | Paul Nadj | Data structure and method for pipeline heap-sorting |
US20140181126A1 (en) * | 2001-08-16 | 2014-06-26 | Altera Corporation | System and Method for Scheduling and Arbitrating Events in Computing and Networking |
CN107402741A (zh) * | 2017-08-04 | 2017-11-28 | 电子科技大学 | 一种适宜于fpga实现的排序方法 |
TW201804319A (zh) * | 2016-07-01 | 2018-02-01 | 英特爾股份有限公司 | 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令 |
CN108319454A (zh) * | 2018-03-27 | 2018-07-24 | 武汉中元华电电力设备有限公司 | 一种基于硬件fpga快速实现最优二叉树的方法 |
CN109375989A (zh) * | 2018-09-10 | 2019-02-22 | 中山大学 | 一种并行后缀排序方法及系统 |
US20190220195A1 (en) * | 2014-10-20 | 2019-07-18 | Netapp, Inc. | Efficient modification of storage system metadata |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6116327A (ja) * | 1984-07-03 | 1986-01-24 | Agency Of Ind Science & Technol | デ−タ処理装置 |
JPS6154536A (ja) * | 1984-08-24 | 1986-03-18 | Hitachi Ltd | デ−タ整順化回路 |
JPS61150055A (ja) * | 1984-12-25 | 1986-07-08 | Panafacom Ltd | Dmaデ−タ転送方式 |
JP3352786B2 (ja) * | 1993-11-01 | 2002-12-03 | 三菱電機株式会社 | プロセッサ回路 |
CN100555216C (zh) * | 2007-09-12 | 2009-10-28 | 华为技术有限公司 | 一种数据处理方法及处理器 |
US8296306B1 (en) * | 2011-11-28 | 2012-10-23 | Korea Advanced Institute Of Science And Technology | Linear-time top-k sort method |
CN106775586B (zh) * | 2016-11-11 | 2019-06-11 | 珠海市杰理科技股份有限公司 | 数据排序方法和装置 |
CN108446391A (zh) * | 2018-03-23 | 2018-08-24 | 万帮充电设备有限公司 | 数据的处理方法、装置、电子设备和计算机可读介质 |
CN110825440B (zh) * | 2018-08-10 | 2023-04-14 | 昆仑芯(北京)科技有限公司 | 指令执行方法和装置 |
CN109951494B (zh) * | 2019-03-29 | 2021-07-30 | 北京润科通用技术有限公司 | 仿真数据处理方法、装置、仿真设备及存储介质 |
CN110221984A (zh) * | 2019-05-07 | 2019-09-10 | 中国科学院微电子研究所 | 存储系统的建立方法、装置、存储系统和访问方法 |
-
2020
- 2020-03-31 CN CN202010244150.2A patent/CN113467702A/zh active Pending
- 2020-12-16 JP JP2021557465A patent/JP2022531075A/ja active Pending
- 2020-12-16 WO PCT/CN2020/136960 patent/WO2021196745A1/zh active Application Filing
- 2020-12-16 KR KR1020217031349A patent/KR20210129715A/ko not_active Application Discontinuation
- 2020-12-24 TW TW109146076A patent/TWI773051B/zh active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060004897A1 (en) * | 2000-11-28 | 2006-01-05 | Paul Nadj | Data structure and method for sorting using heap-supernodes |
US20060095444A1 (en) * | 2000-11-28 | 2006-05-04 | Paul Nadj | Data structure and method for pipeline heap-sorting |
US20140181126A1 (en) * | 2001-08-16 | 2014-06-26 | Altera Corporation | System and Method for Scheduling and Arbitrating Events in Computing and Networking |
US20190220195A1 (en) * | 2014-10-20 | 2019-07-18 | Netapp, Inc. | Efficient modification of storage system metadata |
TW201804319A (zh) * | 2016-07-01 | 2018-02-01 | 英特爾股份有限公司 | 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令 |
CN107402741A (zh) * | 2017-08-04 | 2017-11-28 | 电子科技大学 | 一种适宜于fpga实现的排序方法 |
CN108319454A (zh) * | 2018-03-27 | 2018-07-24 | 武汉中元华电电力设备有限公司 | 一种基于硬件fpga快速实现最优二叉树的方法 |
CN109375989A (zh) * | 2018-09-10 | 2019-02-22 | 中山大学 | 一种并行后缀排序方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113467702A (zh) | 2021-10-01 |
TW202138994A (zh) | 2021-10-16 |
KR20210129715A (ko) | 2021-10-28 |
JP2022531075A (ja) | 2022-07-06 |
WO2021196745A1 (zh) | 2021-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109791519B (zh) | 具有集成计算引擎的非易失性存储系统和本地快速存储器的优化用途 | |
US10565123B2 (en) | Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module | |
TWI836132B (zh) | 儲存系統以及用於動態地擴縮儲存系統的排序操作的方法 | |
US20240264938A1 (en) | Address map caching for a memory system | |
EP3754563A1 (en) | Technologies for performing in-memory training data augmentation for artificial intelligence | |
US11762597B2 (en) | Memory system and control method controlling nonvolatile memory in accordance with command issued by processor | |
US11783176B2 (en) | Enhanced storage device memory architecture for machine learning | |
US20220269551A1 (en) | Grouping requests to reduce inter-process communication in memory systems | |
US12131045B2 (en) | Memory system and operating method thereof | |
CN102073461A (zh) | 输入输出请求调度方法、存储控制器和存储阵列 | |
TWI773051B (zh) | 資料處理裝置、積體電路及人工智能加速器 | |
KR101876574B1 (ko) | 데이터 입출력 컨트롤러 및 이를 포함하는 시스템 | |
WO2018071333A1 (en) | Hybrid compression scheme for efficient storage of synaptic weights in hardware neuromorphic cores | |
CN110490312A (zh) | 一种池化计算方法和电路 | |
US11734205B2 (en) | Parallel iterator for machine learning frameworks | |
TW202347118A (zh) | 固態儲存驅動器中的硬體加速資料庫排序 | |
TW201721639A (zh) | 記憶體儲存裝置及其操作方法 | |
TWI843934B (zh) | 用於處理無結構源資料的方法及系統 | |
KR102723995B1 (ko) | 저-지역성 데이터를 고-지역성 데이터로 효율적으로 변환하기 위한 시스템 및 방법 | |
US20240370715A1 (en) | 3D Hybrid Bonding 3D Memory Devices with NPU/CPU for AI Inference Application | |
US20220107754A1 (en) | Apparatus and method for data packing and ordering | |
KR102722832B1 (ko) | 저장 디바이스 동작 오케스트레이션 | |
CN118898292A (zh) | 人工智能推理平台及方法 | |
KR20210108487A (ko) | 저장 디바이스 동작 오케스트레이션 | |
CN118466855A (zh) | 一种存储芯片及其数据压缩方法 |