KR20210129715A - 데이터 처리 - Google Patents
데이터 처리 Download PDFInfo
- Publication number
- KR20210129715A KR20210129715A KR1020217031349A KR20217031349A KR20210129715A KR 20210129715 A KR20210129715 A KR 20210129715A KR 1020217031349 A KR1020217031349 A KR 1020217031349A KR 20217031349 A KR20217031349 A KR 20217031349A KR 20210129715 A KR20210129715 A KR 20210129715A
- Authority
- KR
- South Korea
- Prior art keywords
- heap
- data
- unit
- units
- original 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/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
- 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/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
본 발명은 데이터 처리 기술 분야에 관한 것으로, 특히 데이터 처리 장치, 집적 회로 및 인공 지능(Artificial Intelligence, AI) 가속기에 관한 것이다.
많은 알고리즘 또는 모델에서 정렬 문제에 대처하는 경우가 많으며, 정렬 문제에 대처하는데 힙 정렬(Heapsort)이 널리 사용되어 있다. 힙 정렬이란 힙과 같은 데이터 구조를 이용하여 설계된 정렬 방법이다.
본 발명은 데이터 처리 장치, 집적 회로 및 AI 가속기를 제공한다.
본 발명의 실시예의 제1 양태에 따르면, 데이터 처리 장치를 제공하는바, 상기 장치는 각각 힙의 일 그룹의 노드 데이터를 저장하기 위한 복수의 힙 저장 유닛; 및 각각 적어도 두 개의 힙 저장 유닛을 액세스하며, 입력된 원본 데이터 및 상기 적어도 두 개의 힙 저장 유닛에 기억된 데이터를 정렬하기 위한 복수의 힙 조정 유닛을 구비하되, 상기 일 그룹의 노드는 상기 힙이 같은 층의 노드 중의 적어도 일부의 노드를 포함한다.
본 발명의 실시예의 제2 양태에 따르면, 집적 회로를 제공하는바, 상기 집적 회로는 제1 양태에 기재된 데이터 처리 장치를 포함한다.
본 발명의 실시예의 제3 양태에 따르면, AI 가속기를 제공하는바, 상기 AI 가속기는 제2 양태에 기재된 집적 회로를 포함한다.
본 발명의 실시예에 따르면, 힙 내의 각각의 노드의 데이터를 복수의 힙 저장 유닛에 기억하고, 복수의 힙 저장 유닛 내의 데이터는 독립적으로 판독되거나 기입될 수 있으며, 앞에 하나의 데이터가 상기 복수의 힙 조정 유닛에 의해 정렬되는 동시에, 뒤의 하나의 데이터가 힙에 넣어질 수 있으므로, 힙 구축 과정에서 동시에 정렬을 실행할 수 있으며, 정렬 효율을 향상시켰다.
상기의 일반적인 설명 및 이하의 상세한 설명은 예시적 및 해석적인 것에 지나지 않으며, 본 발명을 한정하려는 것이 아님을 이해해야 한다.
여기서의 도면은 명세서에 병합되어 명세서의 일부를 구성하고, 이러한 도면은 본 발명에 부합되는 실시예를 나타내며, 명세서와 같이 본 발명의 기술 방안을 설명하기 위하여 사용된다.
도 1a는 몇몇의 실시예의 힙을 나타낸 모식도이다.
도 1b는 몇몇의 실시예의 힙 정렬 과정을 나타낸 모식도이다.
도 2는 본 발명의 실시예의 데이터 처리 장치를 나타낸 모식도이다.
도 3a 및 도 3b는 각각 본 발명의 실시예의 데이터 기억 방법을 나타낸 모식도이다.
도 4는 본 발명의 다른 몇몇의 실시예의 데이터 처리 장치를 나타낸 모식도이다.
도 5a부터 도 5f는 본 발명의 실시예의 힙 정렬 과정에서의 데이터 변화를 나타낸 모식도이다.
도 6은 본 발명의 실시예의 데이터 흐름의 과정을 나타낸 모식도이다.
도 1a는 몇몇의 실시예의 힙을 나타낸 모식도이다.
도 1b는 몇몇의 실시예의 힙 정렬 과정을 나타낸 모식도이다.
도 2는 본 발명의 실시예의 데이터 처리 장치를 나타낸 모식도이다.
도 3a 및 도 3b는 각각 본 발명의 실시예의 데이터 기억 방법을 나타낸 모식도이다.
도 4는 본 발명의 다른 몇몇의 실시예의 데이터 처리 장치를 나타낸 모식도이다.
도 5a부터 도 5f는 본 발명의 실시예의 힙 정렬 과정에서의 데이터 변화를 나타낸 모식도이다.
도 6은 본 발명의 실시예의 데이터 흐름의 과정을 나타낸 모식도이다.
여기서 예시적인 실시예를 상세하게 설명하는바, 그 예를 도면에 나타낸다. 이하의 설명에서 도면이 언급될 경우, 특히 명기하지 않는 한, 서로 다른 도면에서의 같은 부호는 같거나 유사한 요소를 나타낸다. 이하의 예시적인 실시예를 통해 설명하는 실시 형태는 본 발명에 부합되는 모든 실시 형태를 나타낸 것은 아니다. 반대로, 이들은 첨부된 특허청구의 범위에 기재되어 있듯이, 본 발명의 몇몇의 양태에 일치한 장치와 방법의 단순한 예다.
본 발명에서 사용되는 용어는 특정 실시예를 설명하는 것만을 목적으로 하고 있으며, 본 발명을 한정하려는 것을 의도하는 것이 아니다. 본 발명 및 첨부된 특허청구의 범위에서 사용되는 "한 가지", "상기” 및 "당해"와 같은 단수형은, 문맥이 기타 의미를 명확히 나타내지 않는 한, 복수형도 포함하는 것을 의도한다. 본 명세서에서 사용되는 "및/또는"과 같은 용어는 하나 또는 복수의 관련되게 리스트된 항목의 임의의 또는 모든 가능한 조합을 나타냄을 더 이해해야 한다. 또한, 본 명세서중의 "적어도 하나"라고 하는 용어는 복수중의 임의의 하나 또는 복수중의 적어도 두 개가 임의의 조합을 나타낸다.
본 발명에서는 제1, 제2, 제3 등과 같은 용어를 사용하여 다양한 정보를 설명할 수 있지만, 이러한 정보는 이러한 용어에 의해 한정되어서는 안됨을 이해해야 한다. 이러한 용어는 같은 타입의 정보를 서로 구별하기 위하여서만 사용된다. 예를 들면 본 발명의 범위에서 일탈하지 않는 전제 하에서, 제1 정보는 또 제2 정보로 불릴 수 있으며, 마찬가지로 제2 정보도 제1 정보로 불릴 수 있다. 문맥에 따라 여기서 사용되는 "만약"과 같은 단어는 "… 면" 또는 "… 경우" 또는 "것이 확정된 것에 응답하여"로 해석될 수 있다.
이하, 당업자가 본 발명의 실시예의 기술 방안을 더 잘 이해하도록 하고, 또한 본 발명의 실시예의 상기 목적, 특징 및 이점을 더 명확하고 이해하기 쉽게 하기 위하여, 도면을 참조하여 본 발명의 실시예의 기술 방안을 더 상세하게 설명한다.
많은 알고리즘 또는 모델 (예를 들면 뉴럴 네트워크 모델)에서 정렬 문제를 처리하는 것이 자주 필요하며, 특히, 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에 나타낸 실시예는 본 발명의 가능한 일 실시 형태에 지나지 않으며, 본 발명은 이에 한정되지 않음을 설명할 필요가 있다. 실제의 적용에 있어서, 힙의 임의의 1 층의 노드 중의 모든 노드의 데이터는 복수의 힙 저장 유닛에 기억될 수도 있다. 예를 들면 노드 P31의 데이터 및 노드 P32의 데이터를 저장하는 힙 저장 유닛은 노드 P33의 데이터 및 노드 P34의 데이터를 저장하는 힙 저장 유닛과 다를 수 있다.
몇몇의 실시예에 있어서, 각 힙 조정 유닛에 의해 액세스된 상기 적어도 두 개의 힙 저장 유닛은 상기 힙의 인접 층의 노드의 데이터를 저장한다. 옵션으로서, 각 힙 조정 유닛은 두개의 힙 저장 유닛을 액세스할 수 있으며, 여기서 상기 두개의 힙 저장 유닛은 힙 내의 인접하는 2 층의 노드 내의 일부 또는 전부의 노드 데이터를 저장한다. 예를 들면 도 3a에 나타낸 실시예에 있어서, 힙 조정 유닛 1은 제1 힙 저장 유닛 및 제2 힙 저장 유닛을 액세스할 수 있고, 힙 조정 유닛 2는 제2 힙 저장 유닛 및 제3 힙 저장 유닛을 액세스할 수 있으며, 힙 조정 유닛 3은 제3 힙 저장 유닛 및 제4 힙 저장 유닛을 액세스할 수 있고, 이하도 마찬가지다. 옵션으로서, 다른 실시예에 있어서, 각 힙 조정 유닛은 또한 두개 이상의 힙 저장 유닛을 액세스함으로써, 상기 두개 이상의 힙 저장 유닛 내의 데이터를 정렬할 수 있으며, 여기서 상기 두개 이상의 힙 저장 유닛 내의 데이터는 인접하는 2 층의 노드 내의 일부 또는 전부의 노드 데이터일 수도 있고, 인접한 3 층 또는 3 층 이상의 노드 내의 일부 또는 전부의 노드 데이터일 수도 있다.
다른 몇몇의 실시예에 있어서, 각 힙 조정 유닛은 또한 힙의 임의의 인접하지 않는 2 층 이상의 노드 내의 적어도 일부의 데이터를 정렬함으로써, 기타 적용 장면의 정렬 요건을 충족시킬 수 있는바, 여기서는 더 이상 설명하지 않는다.
몇몇의 실시예에 있어서, 상기 복수의 힙 조정 유닛 중의 적어도 두 개의 힙 조정 유닛은 병렬로 정렬할 수 있기 때문에, 데이터 처리 효율을 향상시킬 수 있다. 다른 몇몇의 실시예에 있어서, 상기 복수의 힙 조정 유닛은 또한 상기 복수의 힙 저장 유닛 내의 데이터를 직렬로 정렬할 수 있다.
데이터의 경합을 피하기 위하여, 병렬로 정렬하는 적어도 두 개의 힙 조정 유닛에 의해 액세스된 힙 저장 유닛은 서로 다르다. 예를 들면 도 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, …은 힙 저장 유닛의 처리 시간을 나타낸다.
상기의 방법 이외에, 또한 기타 방법을 채용하여 데이터 판독과 기입의 경합 문제를 해결함으로써, 복수의 힙 조정 유닛이 병렬로 정렬하도록 할 수 있는바, 여기서는 더 이상 설명하지 않는다. 복수의 힙 저장 유닛을 채용하기 위하여, 임의의 하나의 힙 저장 유닛에 의한 판독 및 기입 과정이 다른 힙 저장 유닛에 영향을 미치지 않게 한다. 따라서, 다른 힙 저장 유닛을 액세스하는 복수의 힙 조정 유닛이 병렬로 정렬할 수 있고, 정렬 효율을 향상시켰다.
정렬하는 과정에서, 상기 복수의 힙 조정 유닛 중의 각 힙 조정 유닛은 데이터를 취득하고, 취득한 데이터 및 액세스한 상기 적어도 두 개의 힙 저장 유닛 중의 적어도 하나의 힙 저장 유닛 내의 데이터를 정렬할 수 있다.
본 발명의 실시예의 힙 저장 유닛의 구성에 따르면, 힙 구축, 힙 조정 및 힙 퇴출 과정에서, 입력 데이터를 힙 꼭대기로부터 힙에 넣고, 또한 위부터 아래로 조정할 수 있다. 이하, 이해를 쉽게 하기 위하여, 각 힙 저장 유닛이 힙에 1 층의 노드 중의 모든 노드의 데이터를 저장하고, 각 힙 조정 유닛에 의해 액세스된 힙 저장 유닛이 힙의 인접하는 2 층의 노드의 데이터를 저장하는 예를 들어 본 발명의 실시예의 방안을 설명한다. 힙 조정 유닛 i가 제i 힙 저장 유닛 및 제i+1힙 저장 유닛을 액세스하고, i가 양의 정수인 것으로 가정한다. 기타 상황에서의 정렬 방법은 상기의 상황과 유사한바, 여기서는 반복적으로 설명하지 않는다. 본 실시예에 있어서, 힙 내의 인접하는 2 층의 노드의 데이터 조정 조작을 하나의 힙 조정 유닛에 캡슐화하여 실행하며, ceil(log2k) 개의 힙 조정 유닛을 이용하여 힙 조정 파이프라인을 구성한다. 여기서, 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의 데이터인 것으로 가정함)를 루트 노드에 대응하는 힙 저장 유닛에 기입한다. 그 다음, 힙 조정 유닛 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의 데이터인 것으로 가정함)를 루트 노드에 대응하는 힙 저장 유닛에 기입한다. 그 다음, 힙 조정 유닛 2는 힙 조정 유닛 2의 원본 데이터로서 원본 데이터 d1과 노드 P21의 두개의 서브 노드의 데이터를 비교한다. 여기서 가장 큰 데이터(노드 P21의 좌측 서브 노드 P31의 데이터인 것으로 가정함)를 노드 P21에 대응하는 힙 저장 유닛에 기입하며, 이하도 마찬가지다.
몇몇의 실시예에 있어서, 상기 힙의 같은 노드의 각각의 서브 노드의 데이터는 같은 힙 저장 유닛의 같은 주소에 기억되어 있다. 예를 들면 데이터 비트 길이가 n이면, 노드의 좌측 서브 노드의 데이터를 대응하는 기억 주소의 하위 n 비트에 기억하고, 같은 노드의 우측 서브 노드의 데이터를 대응하는 기억 주소의 상위 n 비트에 기억할 수 있다. 이러한 경우에는 힙 저장 유닛의 비트 폭은 데이터 비트 길이의 2배다. 도 3b에 나타낸바와 같이, 노드 P11의 데이터가 힙 저장 유닛 mem1에 기억되며, 노드 P11의 두개의 서브 노드 (즉 P21 및 P22)의 데이터가 힙 저장 유닛 mem2의 같은 주소에 기억되고, 노드 P21의 두개의 서브 노드 (즉 P31 및 P32)의 데이터가 힙 저장 유닛 mem3의 같은 주소(예를 들면 mem3의 제1 행)에 기억되며, 노드 P22의 두개의 서브 노드 (즉 P33 및 P34)의 데이터가 힙 저장 유닛 mem3의 다른 일 주소(예를 들면 mem3의 제2 행)에 기억된다. 같은 노드의 각각의 서브 노드의 데이터를 같은 기억 주소에 기억함으로써, 하나의 클록 주기 내에서 같은 기억 유닛이 같은 기억 주소에서 같은 노드의 각각의 서브 노드의 데이터를 판독할 수 있도록 하기 위하여, 데이터 판독 회수를 줄이고, 데이터 처리 효율을 향상시킨다.
몇몇의 실시예에 있어서, 상기 장치는 데이터 기억 장치로부터 취득한 원본 데이터에 대해 사전 스크리닝 처리를 실행하기 위한 전처리 유닛을 더 구비할 수 있다. 사전 스크리닝 처리를 거친 데이터는 후속의 힙 조정 유닛에 입력된다. 상기 사전 스크리닝 처리란, 원본 데이터에서 힙에 넣을 필요가 없는 데이터를 제외하는 처리를 가리킨다. 사전 스크리닝 처리를 실행함으로써, 데이터 힙에 들어가는 회수를 줄일 수 있기 때문에, 데이터 처리 효율을 향상시킨다. 입력 데이터 량이 클수록, 사전 스크리닝 처리의 이점이 더 선명하며, 특히 상기의 top k 데이터 정렬의 장면에서 이점이 더 크다.
여기서, 상기 데이터 기억 장치는 본 발명에 의해 제공되는 장치의 외부에 위치하는 메모리일 수 있고, 당해 외부 메모리는 본 발명의 데이터 처리 장치에 접속된다. 본 발명은 외부 메모리의 타입을 한정하지 않는바, 예를 들면 RAM(Random Access Memory), SDRAM(Synchronous Dynamic RAM), DDR(Double Data Rate) SDRAM등의 휘발성 메모리일 수도 있고, 하드 디스크, 모바일 하드 디스크, 자기 디스크 등의 불휘발성 메모리일 수도 있다.
옵션으로서, 상기 전처리 유닛은 상기 힙 저장 유닛에 기억된 데이터가 소정의 수량에 도달했을 경우, 새로 취득한 상기 원본 데이터에 대해 사전 스크리닝 처리를 실행할 수 있다. 옵션으로서, 상기 힙 저장 유닛에 기억된 데이터가 소정의 수량에 도달하지 않았을 경우, 상기 전처리 유닛은 직접 상기 원본 데이터를 상기 복수의 힙 조정 유닛에 출력할 수 있다. 상기 소정의 수량은 힙 저장 유닛이 기억 가능한 데이터의 합계와 같을 수 있는바, 즉 복수의 힙 저장 유닛이 가득할 경우에만, 새로 취득한 원본 데이터에 대해 사전 스크리닝 처리를 실행한다. 몇몇의 실시예에 있어서, 원본 데이터 수에 기반하여 액티브화하는 힙 저장 유닛의 수를 확정하고, 이미 액티브화된 힙 저장 유닛이 가득할 경우에만, 새로 취득한 원본 데이터에 대해 사전 스크리닝 처리를 실행한다. 예를 들면 원본 데이터 수량이 모든 힙 저장 유닛의 기억 가능한 데이터 합계 미만일 경우, 일부의 힙 저장 유닛을 액티브화함으로써, 액티브화된 힙 저장 유닛의 기억 가능한 데이터 합계가 원본 데이터 수량과 같도록 한다. 또한, 예를 들면 원본 데이터 수량이 모든 힙 저장 유닛의 기억 가능한 데이터 합계 이상일 경우, 모든 힙 저장 유닛을 액티브화할 수 있다.
몇몇의 실시예에 있어서, 상기 전처리 유닛은 취득한 원본 데이터와 상기 힙의 루트 노드의 데이터를 비교하고, 원본 데이터에 대해 사전 스크리닝 처리를 실행함으로써, 상기 원본 데이터를 힙에 넣을 필요가 있는지 여부를 사전에 판정할 수 있다.
예를 들면 상기 힙이 최소 힙일 경우, 힙의 루트 노드의 데이터가 다른 임의의 노드의 데이터 이하이다. 특정 원본 데이터가 힙의 루트 노드의 데이터 미만일 경우, 당해 원본 데이터도 반드시 힙의 기타 임의의 노드의 데이터 미만이기 때문에, 힙 조정 유닛을 통해 당해 원본 데이터를 정렬할 필요가 없다. 특정 원본 데이터가 힙의 루트 노드의 데이터보다 클 경우에만, 힙 조정 유닛을 통해 당해 원본 데이터를 정렬할 필요가 있다. 따라서, 취득한 원본 데이터가 힙의 루트 노드의 데이터 이하일 경우, 당해 원본 데이터를 힙에 넣을 필요가 없다고 판정하고, 그렇지 않을 경우, 당해 원본 데이터를 힙에 넣을 필요가 있다고 판정한다. 마찬가지로, 상기 힙이 최대 힙일 경우, 취득한 원본 데이터가 힙의 루트 노드의 데이터 이상일 경우, 당해 원본 데이터를 힙에 넣을 필요가 없다고 판정하고, 그렇지 않을 경우, 당해 원본 데이터를 힙에 넣을 필요가 있다고 판정한다.
적용 장면이 원본 데이터 중의 top k 개의 최대 데이터를 확정하는 것일 경우, 최소 힙을 채용하여 데이터 처리 효율을 효과적으로 향상시킬 수 있다. 마찬가지로, 적용 장면이 원본 데이터 중의 top k 개의 최소 데이터를 확정하는 것일 경우, 최대 힙을 채용하여 데이터 처리 효율을 효과적으로 향상시킬 수 있다.
몇몇의 실시예에 있어서, 상기 전처리 유닛의 수량은 복수일 수 있고, 복수의 상기 전처리 유닛을 채용하여 취득한 원본 데이터에 대해 사전 스크리닝 처리를 병렬로 실행할 수 있다. 사전 스크리닝 처리를 실행함으로써, 원본 데이터 중 일부 데이터를 힙에 넣을 필요가 없어진다. top k 정렬의 장면에서, 특히 원본 데이터 수량과 k값 사이의 차이 값이 상대적으로 클 경우, 상당한 부분의 데이터를 힙에 넣을 필요가 없다. 따라서, 복수의 전처리 유닛을 채용하여 사전 스크리닝 처리를 병렬로 실행함으로써, 사전 스크리닝 효율을 효과적으로 향상시켰고, 힙 조정 유닛이 장시간 대기 상태가 되는 것을 피할 수 있다.
옵션으로서, 원본 데이터를 힙에 넣을 필요가 있다고 판정되었을 경우, 상기 전처리 유닛은 상기 원본 데이터를 제1 캐쉬 유닛 또는 힙 조정 유닛에 전송할 수 있다. 힙에 넣을 필요가 있는 원본 데이터에 대해, 먼저 상기 원본 데이터를 제1 캐쉬 유닛에 전송한 후, 제1 캐쉬 유닛 내의 원본 데이터를 상기 복수의 힙 조정 유닛에 순서대로 출력하여 정렬을 실행할 수 있다. 또는 상기 전처리 유닛에 의해 힙에 넣을 필요가 있는 원본 데이터를 직접 상기 복수의 힙 조정 유닛에 순서대로 출력하여 정렬을 실행할 수 있다.
옵션으로서, 상기 원본 데이터를 힙에 넣을 필요가 없다고 판정되었을 경우, 상기 전처리 유닛은 상기 원본 데이터를 삭제할 수 있다. 옵션으로서, 상기 전처리 유닛을 통해 힙에 넣을 필요가 없는 원본 데이터를 상기 데이터 기억 장치에 반환하고, 또한 상기 힙 조정 유닛을 통해 정렬 과정에서 짜낸 원본 데이터를 상기 데이터 기억 장치에 반환함으로써, 힙 저장 유닛에 의해 출력되는 순서 데이터의 양에 대한 제한이 없어지므로, 데이터 처리 장치의 범용성을 향상시킬 수 있다. 여기서, 힙에 넣을 필요가 없는 데이터를 삭제함으로써, 저장 공간을 절약할 수 있다. 이번의 정렬에서 선택되지 않은 데이터를 상기 데이터 기억 장치에 반환함으로써, 후속의 처리 과정에서, 상기 데이터 기억 장치에 반환한 원본 데이터를 다시 사용할 수 있다. 예를 들면 상기 복수의 힙 조정 유닛은 상기 복수의 힙 저장 유닛 내의 데이터의 정렬이 모두 완료되었을 경우, 상기 데이터 기억 장치에 반환한 데이터를 재정렬할 수 있다. 데이터 처리 장치의 하드웨어 파라미터가 확정된 후에, 일 회에 정렬하여 출력하는 순서 데이터 량이 힙 용량에 의해 제한되는바, 예를 들면 힙의 층 수, 힙 조정 유닛의 수량, 힙 저장 유닛의 크기 등의 영향을 받기에, 충분한 수량의 순서 데이터를 출력할 수 없을 가능성이 있다. 본 발명의 실시예에 의해 제공되는 장치는 정렬 과정에서 선택되지 않은 원본 데이터(예를 들면 힙에 넣지 않는 원본 데이터 및 힙에 넣은 후에 짜낸 원본 데이터)를 데이터 기억 장치에 다시 기입하는 것을 지원함으로써, 복수회의 정렬을 실행하고, 데이터 처리 장치의 범용성을 향상시킬 수 있다.
몇몇의 실시예에 있어서, 힙에 넣을 수 있는 데이터에 대해 첫번째 정렬을 실행하고, 첫번째 정렬을 실행한 후에, 첫번째 정렬에서 선택되지 않은 데이터에 대해 다음 번의 정렬을 실행할 수 있다. 또한, 두번째 정렬에 있어서, 첫번째 정렬 방법을 따라 같은 처리를 실행하며, 사전 스크리닝 처리도 다시 실행한다. 이러한 방법을 통해, 특정 정지 조건을 충족시킬 때까지, 복수회의 정렬을 실행할 수 있다. 당해 정지 조건은 정렬 대기의 원본 데이터에 대한 모든 정렬이 완료된 것을 포함한다. 당해 정지 조건은 이미 정렬한 데이터의 수량이 요구되는 수량에 도달한 것도 포함한다. 복수회의 정렬을 통해, 힙 용량이 상대적으로 작은 데이터 처리 장치를 이용하여 수량이 상대적으로 많은 원본 데이터를 정렬할 수 있으며, 힙 용량이 부족함으로 인한 정렬 실패를 피하고, 데이터 처리 장치의 적용 범위를 개선했다. 두번째 및 두번째 이후의 정렬 과정은 첫번째 정렬 과정과 같으므로, 여기서는 반복적으로 설명하지 않는다.
몇몇의 실시예에 있어서, 데이터 기억 장치의 용량이 한정될 경우, 원본 데이터를 배치에서 데이터 기억 장치에 기입하고, 각 배치에 데이터 기억 장치에 기입하는 데이터에 대해, 각각 사전 스크리닝 처리 및 정렬 처리를 실행함으로써, 용량이 상대적으로 작은 데이터 기억 장치를 이용하여 수량이 상대적으로 많은 데이터를 정렬할 수 있고, 데이터 기억 장치의 용량이 부족함으로 인한 정렬 실패를 피했다.
몇몇의 실시예에 있어서, 상기 데이터 처리 장치는 데이터 기억 장치로부터 취득한 원본 데이터를 저장하기 위한 제2 캐쉬 유닛을 더 구비하며, 상기 제2 캐쉬 유닛은 캐쉬 후의 원본 데이터를 상기 복수의 힙 조정 유닛에 송신하고, 상기 복수의 힙 조정 유닛은 상기 제2 캐쉬 유닛으로부터 취득한 원본 데이터 및 상기 복수의 힙 저장 유닛 내의 데이터를 정렬한다. 옵션으로서, 상기 제2 캐쉬 유닛은 한번에 데이터 기억 장치로부터 하나 또는 복수의 원본 데이터를 취득하고, 취득한 원본 데이터를 저장할 수 있다. 옵션으로서, 상기 제1 캐쉬 유닛은 한번에 전처리 유닛으로부터 하나 또는 복수의 원본 데이터를 취득하고, 취득한 원본 데이터를 저장할 수 있다. 상기 제1 캐쉬 유닛 및 상기 제2 캐쉬 유닛은 FIFO(First In First Out, 선입선출) 캐쉬 유닛일 수 있다.
도 4는 본 발명의 다른 몇몇의 실시예의 데이터 처리 장치를 나타낸 모식도이다. 여기서, 당해 예에 있어서, 데이터 처리 장치가 n+1 개의 힙 저장 유닛(201), n 개의 힙 조정 유닛(202), 하나의 제1 캐쉬 유닛(203) 및 4개의 전처리 유닛(204)을 포함한다고 가정한다. 여기서, 각 힙 저장 유닛은 힙에 1 층의 노드의 데이터를 저장하고, 힙 조정 유닛 i는 i번째 힙 저장 유닛 및 i+1 번째 힙 저장 유닛을 액세스한다. top k의 데이터 정렬 태스크를 실행할 때에, 데이터 경로가 아래와 같다고 가정한다.
(1)원본 데이터가 병렬로(4개를 병행된다고 가정함) 4개의 전처리 유닛(204)을 통과하며, 힙 내의 데이터 수량이 k 개에 달하지 않으면, 당해 원본 데이터가 직접 제1 캐쉬 유닛(203)에 넣어지고, 힙 내의 데이터 수량이 k 개에 달하면, 각 전처리 유닛을 통해 입력된 각각의 원본 데이터를 각각 현재 힙 꼭대기 (즉, 힙의 루트 노드)에 위치하는 데이터와 비교하며, 힙이 최소 힙일 경우, 힙 꼭대기보다 큰 원본 데이터를 제1 캐쉬 유닛(203)에 출력하고, 힙 꼭대기 이하인 데이터를 제1 출력단을 통해 외부의 데이터 기억 장치(도면에 나타내지 않았음) 것에 다시 기입함으로써, 복수회의 정렬을 실행하도록 한다.
(2)힙 조정 유닛 1을 통해 제1 캐쉬 유닛(203)로부터 데이터를 취득한다. 복수의 힙 조정 유닛은 병렬로 힙 조정을 실행하고, 힙 내의 데이터를 최소 힙으로 조정하며, 제2 출력단을 통하여 힙으로부터 짜낸 데이터를 데이터 기억 장치에 다시 기입함으로써, 복수회의 정렬을 실행하도록 하는바, 모든 원본 데이터 힙 진입이 완료될 때까지 상기 과정을 되풀이한다.
본예의 장치가 실행하는 명령은 아래와 같다.
(1)초기화 명령을 실행하여 n+1 개의 힙 저장 유닛(201) 내의 플래그 비트를 초기화한다.
(2)힙 진입 명령을 실행하고, 병행 사전 스크리닝 과정 및 병렬 힙 조정 과정을 통하여 k 개의 원본 데이터를 선택하여 최소 힙을 구성하는바, 여기서 복수의 힙 진입 명령을 이용할 수 있다.
(3)힙 퇴출 명령을 실행하여, 병렬 힙 조정을 통해 힙에 수치가 가장 큰 데이터를 입력하고, 힙 내의 k 개의 유효 데이터를 제2 출력단을 통해 순서대로 치환하는바, 치환된 k 개의 데이터가 필요한 top k 데이터이다.
몇몇의 실시예에 있어서, 각 힙 저장 유닛은 플래그 비트를 포함할 수 있으며, 플래그 비트는 상기 힙 저장 유닛 내의 대응하는 위치의 데이터가 유효한지 여부를 지시한다. 도 3b에 나타낸바와 같이, 힙 저장 유닛 mem1은 노드 P11의 데이터 플래그 비트를 포함하고, 도면 내의 flg1의 검은색 사각형에 나타낸바와 같이, 힙 저장 유닛 mem2는 노드 P21 및 노드 P22의 데이터 플래그 비트를 포함하고, 도면 내의 flg2, P21의 플래그 비트는 검은색 사각형으로 나타내며, P22의 플래그 비트는 회색 사각형으로 나타내고, 이하도 마찬가지다. 하나의 기억 유닛에 N 개의 데이터를 저장할 수 있을 경우, 당해 기억 유닛은 N 개의 플래그 비트를 포함할 수 있다. 힙 저장 유닛 내의 데이터가 유효한 것은 상기 데이터가 정렬할 필요가 있는 데이터인 것을 나타내고, 힙 저장 유닛 내의 데이터가 무효인 것은 상기 데이터가 정렬할 필요가 없는 데이터인 것을 나타낸다. 몇몇의 실시예에 있어서, 상기 힙 저장 유닛 내의 데이터가 유효할 경우, 상기 플래그 비트는 제1 수치이다. 상기 힙 저장 유닛 내의 데이터가 무효일 경우, 상기 플래그 비트는 제2 수치이다. 예를 들면 상기 제1 수치는 "1"일 수 있고, 상기 제2 수치는 "0"일 수 있다.
일반적인 힙 정렬 방법은 각각의 힙 저장 유닛 내의 데이터를 초기화하고, 또한 힙의 깊이의 증가에 따라 초기화 시간도 증가된다. 본 발명의 실시예는 플래그 비트를 이용하여 힙 저장 유닛에 데이터를 기입하기 전에, 상기 힙 저장 유닛 내의 각각의 플래그 비트에 대해 초기화 처리를 실행함으로써, 데이터에 대해 초기화 처리를 실행할 필요가 없어진다. 플래그 비트의 비트 길이가 원본 데이터 비트 길이 (예를 들면 플래그 비트는 1bit임) 미만이기 때문에, 몇몇의 예에 있어서, 하나의 클록 주기만을 이용하여 모든 힙 저장 유닛의 플래그 비트에 대한 초기화를 실행할 수 있고, 플래그 비트 초기화 처리를 실행하는 시간이 힙 저장 유닛 내의 데이터를 초기화하는 시간 미만이기 때문에, 데이터 처리 효율을 향상시켰다. 상기 힙 저장 유닛에 하나의 유효 데이터를 기입할 때마다, 기입한 유효 데이터의 플래그 비트를 갱신할 수 있는바, 즉 당해 플래그 비트를 무효로 효율적으로 설정할 수 있기 때문에, 데이터의 플래그 비트만에 기반하여 힙 저장 유닛 내의 데이터가 유효 데이터인지 여부를 확정할 수 있다.
플래그 비트를 설정할 경우, 상기 복수의 힙 조정 유닛 중의 각 힙 조정 유닛은 또한 제1 힙 저장 유닛의 플래그 비트가 대응하는 위치의 데이터가 모두 유효한 데이터이면 지시할 경우, 당해 힙 조정 유닛에 입력하는 원본 데이터 및 상기 유효 데이터를 정렬하고, 상기 제1 힙 저장 유닛 내의 플래그 비트가 대응하는 위치의 데이터가 임의의 무효 데이터를 포함하는 것을 나타낼 경우, 당해 힙 조정 유닛에 입력한 원본 데이터를 무효 데이터 대응하는 위치에 기입한다. 여기서, 제1 힙 저장 유닛은 당해 힙 조정 유닛에 의해 액세스된 적어도 두 개의 힙 저장 유닛 내의 루트 노드에 근접한 힙 저장 유닛이다.
몇몇의 실시예에 있어서, 당해 힙 조정 유닛에 의해 액세스된 힙 저장 유닛 내의 복수의 무효 데이터일 경우, 왼쪽에서 오른쪽으로의 순서에 따라 상기 힙 조정 유닛에 입력된 데이터를 왼쪽의 무효 데이터에 대응하는 위치에 기입한다.
즉, 유효 데이터만을 정렬에 참가시키고, 무효 데이터는 대응하는 힙 조정 유닛에 입력된 원본 데이터에 의해 직접 치환된다. 이러한 방법을 통해, 원본 데이터 힙 진입 과정이 구현되어, 무효 데이터의 유효 데이터의 정렬 과정에 대한 영향을 피할 수 있다.
상기 복수의 힙 저장 유닛 내의 데이터에 대한 정렬이 완료된 후에, 힙 저장 유닛 내의 데이터를 힙에서 꺼낼 필요가 있다. 본 발명의 실시예의 데이터의 힙 퇴출 과정은 데이터 힙 진입 과정의 처리 방법과 유사한바, 모두 상기 복수의 힙 조정 유닛에 하나의 데이터를 입력한 후, 상기 복수의 힙 조정 유닛에 의해 입력된 데이터 및 힙 저장 유닛 내에 기억된 데이터를 정렬할 수 있다.
구체적으로 말하면, 힙 퇴출 과정에서, 상기 복수의 힙 조정 유닛 중의 각 힙 조정 유닛은 적어도 두 개의 힙 저장 유닛을 액세스하고, 취득한 지정된 데이터 및 상기 적어도 두 개의 힙 저장 유닛에 기억된 데이터를 정렬함으로써, 상기 적어도 두 개의 힙 저장 유닛에 기억된 데이터를 힙에서 꺼낼 수 있다. 힙 퇴출 과정은 정렬 과정과 유사한바, 모두 병렬로 실행한다. 힙 퇴출 과정에 있어서, 한번에 상기 복수의 힙 저장 유닛에 하나의 지정된 데이터를 입력하며, 최소 힙의 적용 장면에 있어서, 상기 지정된 데이터의 수치는 상기 복수의 힙 저장 유닛에 기억된 각각의 데이터보다 클 수 있다. 예를 들면 상기 지정된 데이터는 수치가 +∞인 데이터일 수 있다. 소위 +∞의 데이터는 원본 데이터 데이터 포맷 최대치일 수 있는바, 예를 들면 16비트의 고정 소수점 수의 경우, 7c0016은 +∞을 나타낼 수 있다. 최대 힙의 적용 장면에 있어서, 상기 지정된 데이터의 수치는 상기 복수의 힙 저장 유닛에 기억된 각각의 데이터 미만일 수 있다. 예를 들면 상기 지정된 데이터는 수치가 -∞인 데이터일 수 있다. 소위 -∞의 데이터는 원본 데이터 데이터 포맷 최소값일 수 있는바, 예를 들면 16비트의 고정 소수점 수의 경우, fc0016은 -∞을 나타낼 수 있다. 지정된 데이터를 입력한 후에, 힙의 루트 노드의 데이터를 힙 퇴출한 후, 상기 복수의 힙 조정 유닛을 통해 상기 지정된 데이터 및 힙 저장 유닛 내의 기타 데이터를 병렬로 정렬할 수 있다.
이렇게 함으로써, 데이터 힙 진입, 데이터 정렬 및 데이터 힙 퇴출과 같은 세 개의 과정을 같은 흐름에서 실현함으로써, 데이터의 병행 처리에 도움이 되도록 할 수 있다.
상기 초기화, 힙 진입 및 힙 퇴출 과정은 각각 다른 명령을 이용하여 제어할 수 있다. 종래의 힙 정렬 방안에 있어서, 정렬 과정의 전체를 하나의 명령을 채용하여 완료하기 때문에, 파라미터가 고정된 후에, 데이터 처리 장치의 범용성이 저하된다. 본 발명의 실시예에 있어서, 일 회의 정렬이 초기화, 힙 진입, 힙 퇴출과 같은 세 개의 과정으로 분할되며, 각각 세 개의 명령에 대응하여 일 회의 정렬 중에 복수의 힙 진입 명령 (원본 데이터를 복수 회로 나누어 입력할 수 있음)이 있기 때문에, 데이터 기억 장치에 의한 원본 데이터 수량의 제한을 없앨뿐만 아니라, 힙 조정 유닛과 전처리 유닛을 병렬로 운행할 수 있기에, 사용이 비교적으로 유연해진다. 상기 초기화, 힙 진입 및 힙 퇴출 과정의 명령은 상위 컨트롤러에 의해 상기 데이터 처리 장치의 힙 제어 유닛에 송신하고, 상기 힙 제어 유닛의 제어에 의해 구현될 수 있다.
몇몇의 실시예에 있어서, 상기 장치는 초기화 명령을 수신했을 경우, 상기 복수의 힙 저장 유닛이 같은 클록 주기 내에서 초기화를 실행하도록 제어하는 것; 힙 진입 명령을 수신했을 경우, 데이터 기억 장치로부터 원본 데이터를 판독하고, 판독한 상기 원본 데이터를 상기 복수의 힙 조정 유닛에 전송함으로써, 상기 복수의 힙 조정 유닛이 상기 원본 데이터 및 복수의 힙 저장 유닛 내의 데이터를 정렬하도록 하는 것; 및 힙 퇴출 명령을 수신했을 경우, 상기 복수의 힙 조정 유닛이 특정 순서를 따라 상기 복수의 힙 저장 유닛 내의 데이터를 힙 꼭대기로부터 출력하도록 제어하는 것 중의 적어도 하나를 실행하기 위한 힙 제어 유닛을 더 구비한다.
구체적으로 말하면, 상기 힙 제어 유닛은 초기화 명령을 수신했을 경우, 초기화 신호를 힙 저장 유닛에 송신하고, 힙 저장 유닛 내의 각각의 플래그 비트를 초기화할 수 있다. 상기 힙 제어 유닛은 힙 진입 명령을 수신했을 경우, 데이터 기억 장치로부터 원본 데이터를 판독하고, 상기 원본 데이터를 전처리 유닛에 출력하며, 전처리 유닛에 의해 상기 원본 데이터가 사전 스크리닝 처리를 필요로 하는지 여부를 판단할 수 있다. 필요하면, 상기 전처리 유닛은 힙에 넣을 필요가 없는 원본 데이터를 직접 삭제하거나 또는 상기 데이터 기억 장치에 반환하고, 힙에 넣을 필요가 있는 데이터를 제1 캐쉬 유닛에 출력하며, 사전 스크리닝 처리를 실행할 필요가 없으면, 직접 원본 데이터를 제1 캐쉬 유닛에 출력한다. 힙 조정 유닛은 제1 캐쉬 유닛 내의 원본 데이터를 수신하고, 모든 정렬할 필요가 있는 원본 데이터에 대한 처리가 완료 될 때까지, 원본 데이터 크기에 기반하여 힙 저장 유닛 내의 데이터를 단계적으로 조정한다.
상기 힙 제어 유닛은 힙 퇴출 명령을 수신했을 경우, 지정된 데이터를 힙 조정 유닛에 출력하고, 힙 조정 유닛은 상기 지정된 데이터를 수신하며, 힙 저장 유닛 내의 데이터를 단계적으로 조정하고, 각 지정된 데이터가 힙에 넣어진 후, 힙 저장 유닛으로부터 모두 하나의 데이터(즉 힙의 루트 노드의 데이터)가 힙으로부터 짜내지며, 상기 힙 제어 유닛은 당해 짜낸 데이터를 데이터 처리 장치 데이터 출력단에 순서대로 출력한다.
도 5a부터 5f는 본 발명의 실시예의 정렬 과정 중의 노드 데이터 변화를 나타낸 모식도이다. 본 실시예는 최소 힙의 예를 들어 설명하며, 최대 힙의 정렬 과정은 최소 힙과 유사하기 때문에, 여기서는 반복적으로 설명하지 않는다. 힙의 깊이가 6이며, 즉 힙에 6층의 노드가 포함된다고 가정하면, 각 층의 노드 중 각각의 노드의 데이터는 하나의 독립적인 힙 저장 유닛 내에 기억되며, 같은 노드의 각각의 서브 노드의 데이터는 같은 힙 저장 유닛의 같은 주소에 기억되고, 제i 층의 노드에 대응하는 힙 저장 유닛은 힙 저장 유닛 i이며, 힙 저장 유닛 i와 힙 저장 유닛 i+1을 액세스하는 힙 조정 유닛은 힙 조정 유닛 i이며, 제i 층의 각각의 노드를 Pij로서 표기하고, 1≤j≤2i-1이며, i는 양의 정수이다.
초기 시점 t0의 힙이 5a에 나타낸바와 같다고 가정한다. t1 시점에서 도 5b에 나타낸바와 같이 원본 데이터 "70"이 힙에 넣어지며, 노드 P11의 데이터 "8"이 상기 힙 저장 유닛 1로부터 짜내지고, 힙 조정 유닛 1에 의해 힙 저장 유닛 2로부터 노드 P21의 데이터와 노드 P22의 데이터를 판독하며 비교하며, 힙 조정 유닛 1에 의해 노드 P21의 데이터를 노드 P11에 대응하는 힙 저장 유닛 1에 기입하고, 원본 데이터를 "70"을 힙 조정 유닛 2에 출력한다.
t2 시점에서 도 5c에 나타낸바와 같이 힙 조정 유닛 2에 의해 힙 저장 유닛 3으로부터 노드 P31의 데이터와 노드 P32의 데이터를 판독하여 비교하고, 힙 조정 유닛 2에 의해 노드 P31의 데이터를 노드 P21에 대응하는 힙 저장 유닛 2에 기입하고, 원본 데이터를 "70"을 힙 조정 유닛 3에 출력한다.
t3 시점에서 도 5d에 나타낸바와 같이 힙 조정 유닛 3에 의해 힙 저장 유닛 4로부터 노드 P41의 데이터 및 노드 P42의 데이터를 판독하는 동시에, 원본 데이터 "75"이 힙에 넣어지며, 노드 P11의 데이터 "12"가 상기 힙 저장 유닛 1로부터 짜내지며, 힙 조정 유닛 1에 의해 힙 저장 유닛 2로부터 노드 P21의 데이터 및 노드 P22의 데이터를 판독한다.
t4 시점에서 도 5e에 나타낸바와 같이 힙 조정 유닛 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에 출력한다.
t5 시점에서 도 5f에 나타낸바와 같이 힙 조정 유닛 5에 의해 힙 저장 유닛 6으로부터 노드 P61의 데이터 및 노드 P62의 데이터를 판독하는 동시에, 힙 조정 유닛 2에 의해 노드 P34의 데이터를 노드 P22에 대응하는 힙 저장 유닛 2에 기입하고, 원본 데이터 "75"을 힙 조정 유닛 3에 출력하며, 힙 조정 유닛 3에 의해 힙 저장 유닛 4로부터 노드 P47의 데이터 및 노드 P48의 데이터를 판독하는 동시에, 원본 데이터 "80"을 힙에 넣는다.
여기서, 몇몇의 예에 있어서, 힙 조정 유닛의 조정이 두개의 사이클을 필요로 하기 때문에, t1과 t2의 시작 시점 사이에 적어도 두 개의 사이클이 있으며, t2과 t3의 시작 시점 사이에도 적어도 두 개의 사이클이 있다.
상기로부터 알 수 있듯이, t3 시점부터 시작하여 두개의 힙 조정 유닛이 동시에 작업한다. 마찬가지로, t5 시점부터 시작하여 3개의 힙 조정 유닛이 동시에 작업하며, t7 시점부터 시작하여 3개의 힙 조정 유닛이 동시에 작업하며, 이하도 마찬가지다. 비 병행 정렬 방법에서의 각 시점에서 하나의 힙 조정 유닛만이 운행되는 것과 비교하면, 본 발명의 실시예의 병렬 힙 정렬 방법은 정렬 시간을 원래의 1/3로 단축할 수 있다. 힙의 깊이가 깊을 수록, 동시에 작업하는 힙 조정 유닛의 수량도 많아지는바, 즉 병렬도가 높아지며, 단축하는 시간도 많아진다.
도 6은 힙의 깊이가 8일 때의 데이터 흐름 과정을 나타낸 모식도이다. 여기서, d1, d2 등은 입력된 원본 데이터를 나타내고, t1, t2 등은 시간을 나타내며, adj1, adj2 등은 힙 조정 유닛을 나타낸다. 여기서 알 수 있듯이, 본 발명의 실시예는 힙 정렬 과정에서, 힙 구축, 힙 조정과 같은 두개의 과정을 통일된 힙 조정 과정으로 합병하고, 힙의 인접하는 2 층의 노드의 데이터는 하나의 힙 조정 유닛에 의해 조정되며, 복수의 힙 조정 유닛은 배열을 구성하고, 입력 데이터 흐름은 각각의 힙 조정 유닛을 통과하며, 서로 다른 시점에서 복수의 힙 조정 유닛은 병렬로 실행할 수 있다. 또한, t6 시점부터 시작하여 최대의 병행도에 달하는바, 즉 4에 달한다. 예를 들면 t7 시점에서 힙 조정 유닛 1, 힙 조정 유닛 3, 힙 조정 유닛 5 및 힙 조정 유닛7은 동시에 작업한다. 다음 레벨의 힙 조정 유닛에 의해 앞의 레벨의 힙 조정 유닛에 필요한 힙 저장 유닛에 기억된 데이터를 변경할 가능성이 있으며, 데이터 판독과 기입의 경합을 피하기 위하여, 인접하는 두개의 원본 데이터 힙 진입 시간은 1 레벨로 단락 지을 필요가 있다. 즉 m 번째 원본 데이터 자신 또는 m 번째 원본 데이터에 의해 힙 저장 유닛으로부터 치환되는 데이터가 adj3에 의해 정렬될 때에만, m+1 번째 원본 데이터가 adj1에 의해 정렬될 수 있음을 설명할 필요가 있다.
본 발명의 실시예의 데이터 처리 장치의 각각의 유닛은 FPGA(Field Programmable Gate Array, 프로그래머블 게이트 어레이), PLD(programmable logic device, 프로그래머블 로직 디바이스), ASIC(Application Specific Integrated Circuit, 특정 용도 집적 회로)컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 또는 다른 전자 부품에 의해 구현될 수 있다.
본 발명에 의해 제공되는 데이터 처리 장치는 병렬 힙 정렬을 구현하며, 데이터 처리 효율을 향상시켰다. 몇몇의 실시예에 있어서, 힙 저장 유닛 내의 데이터를 초기화할 필요가 없고, 플래그 비트만을 초기화할 필요가 있기 때문에, 초기화 효율을 향상시켰다. 몇몇의 실시예에 있어서, 사전 스크리닝 처리를 실행하고, 원본 데이터를 힙에 넣는 회수를 줄였고, 데이터 처리 효율을 더 향상시켰다. 몇몇의 실시예에 있어서, 복수회의 정렬을 실행할 수 있고, 데이터 기억 장치 중의 원본 데이터에 대한 복수회의 정렬을 지원하며, 또한 원본 데이터를 배치에서 데이터 기억 장치에 기입하는 후에 힙 저장 유닛 내가 같은 배치의 데이터와 정렬하는 것을 지원하기 때문에, 정렬 과정이 힙 저장 유닛 및 데이터 기억 장치의 크기에 의해 한정되지 않으므로, 범용성이 더 좋다.
마찬가지로, 본 발명의 실시예는 집적 회로를 더 제공하는바, 상기 집적 회로는 임의의 실시예에 기재된 데이터 처리 장치를 포함한다.
몇몇의 실시예에 있어서, 상기 집적 회로는 상기 복수의 힙 저장 유닛이 초기화를 실행하도록 지시하기 위한 초기화 명령; 상기 복수의 힙 조정 유닛이 원본 데이터를 취득하고, 상기 원본 데이터 및 상기 복수의 힙 저장 유닛에 기억된 데이터를 정렬하도록 지시하기 위한 힙 진입 명령; 및 상기 복수의 힙 조정 유닛이 특정 순서에 따라 상기 복수의 힙 저장 유닛에 기억된 데이터를 출력하도록 지시하기 위한 힙 퇴출 명령 중의 적어도 하나의 명령을 상기 데이터 처리 장치에 송신하기 위한 컨트롤러를 더 구비한다.
여기서, 상기 초기화 명령, 상기 힙 진입 명령 및 상기 힙 퇴출 명령은 서로 다른 명령일 수 있다. 본 발명의 실시예에 있어서, 일 회의 정렬은 초기화, 힙 진입, 힙 퇴출과 같은 세 개의 과정으로 분할되며, 각각 세 개의 명령에 대응하여 일 회의 정렬 중에 복수의 힙 진입 명령 (원본 데이터는 복수회로 나누어 입력될 수 있음)이 있기 때문에, 데이터 기억 장치에 의한 원본 데이터 수 제한을 없앨뿐만 아니라, 힙 조정 유닛과 전처리 유닛을 병렬로 운행할 수 있고, 사용이 상대적으로 유연해진다. 하나의 예에 있어서, 상기 초기화, 힙 진입 및 힙 퇴출 과정의 명령은 집적 회로의 컨트롤러에 의해 상기 데이터 처리 장치의 힙 제어 유닛에 송신하고, 상기 힙 제어 유닛의 제어에 의해 구현될 수 있다.
마찬가지로, 본 발명의 실시예는 AI(Artificial Intelligence, 인공 지능) 가속기를 더 제공하는바, 상기 AI 가속기는 임의의 실시예에 기재된 집적 회로를 포함한다.
당업자는 구체적인 실시 형태의 상기 방법에 있어서, 각 단계의 기입 순서는 엄밀한 실행 순서를 의미하는 것이 아니고, 실시 과정에 대한 제한을 구성하지 않는바, 각 단계의 구체적인 실행 순서는 그 기능 및 가능의 내부 로직에 의해 결정됨을 이해할 수 있다.
당업자는 명세서를 검토하고 여기에 개시한 발명을 실시한 후에, 본 발명의 다른 실시 형태를 용이하게 생각해낼 수 있다. 본 발명은 본 발명이 임의의 변형, 용도 또는 적응적 변경을 커버함을 의도하고 있으며, 이러한 변형, 용도 또는 적응적 변경은 본 발명의 일반 원칙에 따라 본 발명의 기술 분야에 있어서의 상식 또는 종래의 기술적 수단을 포함한다. 명세서 및 실시예는 예시적인 것으로 간주되어야 하여, 본 발명의 참된 범위 및 정신은 이하의 특허청구의 범위에 의해 지적된다.
본 발명은 상기에 설명되고 도면에 나타낸 정확한 구조에 한정되지 않으며, 그 범위에서 일탈하지 않는 전제 하에서, 다양한 수정 및 변경을 실행할 수 있음을 이해해야 한다. 본 발명의 범위는 첨부된 특허청구의 범위에 의해서만 한정된다.
상기는 본 발명의 상대적으로 바람직한 실시예에 지나지 않으며, 幷불필요以한정 본 발명, 본 개시의 정신 및 원칙의 범위 내에서 이루어진 수정, 동등의 치환, 개선 등은 본 발명의 보호 범위에 포함되어야 한다.
상기의 각각의 실시예의 설명은 각각의 실시예간의 차이를 강조하는 경향이 있어, 같은 또는 유사한 부분은 서로 참조할 수 있고, 간소화를 위하여, 본 명세서는 반복적으로 설명하지 않는다.
Claims (21)
- 데이터 처리 장치에 있어서,
각각 힙의 일 그룹의 노드 데이터를 저장하기 위한 복수의 힙 저장 유닛; 및
각각 적어도 두 개의 힙 저장 유닛을 액세스하며, 입력된 원본 데이터 및 상기 적어도 두 개의 힙 저장 유닛에 기억된 데이터를 정렬하기 위한 복수의 힙 조정 유닛을 구비하되,
상기 일 그룹의 노드는 상기 힙이 같은 층의 노드 중의 적어도 일부의 노드를 포함하는
것을 특징으로 하는 데이터 처리 장치. - 제1항에 있어서,
각 힙 조정 유닛에 의해 액세스된 상기 적어도 두 개의 힙 저장 유닛은 상기 힙의 인접 층의 노드의 데이터를 저장하고, 및/또는,
상기 복수의 힙 조정 유닛 중의 각 힙 조정 유닛은 상기 입력된 원본 데이터를 취득하고, 상기 취득한 원본 데이터 및 액세스한 상기 적어도 두 개의 힙 저장 유닛 중의 적어도 하나의 힙 저장 유닛 내의 데이터를 정렬하는
것을 특징으로 하는 데이터 처리 장치. - 제1항 또는 제2항에 있어서,
상기 복수의 힙 조정 유닛 중 두개의 인접하는 힙 조정 유닛에 의해 각각 액세스된 두개의 힙 저장 유닛은 하나의 같은 힙 저장 유닛을 포함하고, 및/또는,
상기 복수의 힙 조정 유닛 중의 적어도 두 개의 힙 조정 유닛은 병렬로 정렬을 실행하고, 상기 적어도 두 개의 힙 조정 유닛에 의해 액세스된 힙 저장 유닛은 서로 다른
것을 특징으로 하는 데이터 처리 장치. - 제1항 내지 제3항 중 어느 한 항에 있어서,
인접하는 두개의 데이터의 힙 진입 타이밍의 사이에는 두개의 힙 저장 유닛의 처리 사이클이 있는
것을 특징으로 하는 데이터 처리 장치. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 힙의 같은 노드의 각각의 서브 노드의 데이터는 같은 힙 저장 유닛의 같은 주소에 기억되고 있는
것을 특징으로 하는 데이터 처리 장치. - 제1항 내지 제5항 중 어느 한 항에 있어서,
데이터 기억 장치로부터 취득한 원본 데이터에 대해 사전 스크리닝 처리를 실행하기 위한 전처리 유닛을 더 구비하며,
사전 스크리닝 처리를 거친 데이터는 상기 복수의 힙 조정 유닛에 입력되는
것을 특징으로 하는 데이터 처리 장치. - 제6항에 있어서,
상기 전처리 유닛은 상기 힙 저장 유닛에 기억된 데이터가 소정의 수량에 도달했을 경우, 새로 취득한 상기 원본 데이터에 대해 상기 사전 스크리닝 처리를 실행하는
것을 특징으로 하는 데이터 처리 장치. - 제6항 또는 제7항에 있어서,
상기 전처리 유닛은 상기 원본 데이터와 상기 힙의 루트 노드의 데이터를 비교하고, 상기 원본 데이터에 대해 상기 사전 스크리닝 처리를 실행함으로써, 상기 원본 데이터를 힙에 넣을 필요가 있는지 여부를 사전에 판정하는
것을 특징으로 하는 데이터 처리 장치. - 제6항 내지 제8항 중 어느 한 항에 있어서,
상기 전처리 유닛의 수량은 복수이며, 복수의 상기 전처리 유닛은 병렬로 취득한 상기 원본 데이터에 대해 상기 사전 스크리닝 처리를 실행하는
것을 특징으로 하는 데이터 처리 장치. - 제6항 내지 제9항 중 어느 한 항에 있어서,
상기 전처리 유닛은,
상기 원본 데이터를 힙에 넣을 필요가 있다고 판정되었을 경우, 상기 원본 데이터를 캐쉬 유닛 또는 상기 복수의 힙 조정 유닛에 전송하고, 또한,
상기 원본 데이터를 힙에 넣을 필요가 없다고 판정되었을 경우, 상기 원본 데이터를 삭제하거나 또는 상기 데이터 기억 장치에 반환하는
것을 특징으로 하는 데이터 처리 장치. - 제10항에 있어서,
상기 복수의 힙 조정 유닛은 또한,
정렬 과정에서 짜낸 원본 데이터를 상기 데이터 기억 장치에 반환하고,
상기 복수의 힙 저장 유닛 내의 데이터의 정렬이 모두 완료되었을 경우, 상기 데이터 기억 장치에 반환한 원본 데이터를 재정렬하는
것을 특징으로 하는 데이터 처리 장치. - 제6항 내지 제11항 중 어느 한 항에 있어서,
상기 전처리 유닛으로부터 취득한 상기 사전 스크리닝 처리를 거친 원본 데이터를 저장하기 위한 제1 캐쉬 유닛을 더 구비하며,
상기 복수의 힙 조정 유닛은 상기 제1 캐쉬 유닛으로부터 취득한 원본 데이터 및 상기 복수의 힙 저장 유닛 내의 데이터를 정렬하는
것을 특징으로 하는 데이터 처리 장치. - 제1항 내지 제5항 중 어느 한 항에 있어서,
데이터 기억 장치로부터 취득한 원본 데이터를 저장하기 위한 제2 캐쉬 유닛을 더 구비하며,
상기 복수의 힙 조정 유닛은 상기 제2 캐쉬 유닛으로부터 취득한 원본 데이터 및 상기 복수의 힙 저장 유닛 내의 데이터를 정렬하는
것을 특징으로 하는 데이터 처리 장치. - 제1항 내지 제13항 중 어느 한 항에 있어서,
상기 힙 저장 유닛은 모두 플래그 비트를 포함하고,
상기 플래그 비트는 상기 힙 저장 유닛 내의 대응하는 위치의 데이터가 유효한지 여부를 나타내는
것을 특징으로 하는 데이터 처리 장치. - 제14항에 있어서,
상기 힙 저장 유닛은 또한,
상기 힙 저장 유닛 내의 각각의 플래그 비트에 대해 초기화 처리를 실행하고, 및/또는,
하나의 플래그 비트에 대응하는 위치에 유효 데이터를 기입하는 것이 확정되었을 경우, 당해 플래그 비트를 갱신하는
것을 특징으로 하는 데이터 처리 장치. - 제14항 또는 제15항에 있어서,
상기 복수의 힙 조정 유닛 중의 각 힙 조정 유닛은 또한,
당해 힙 조정 유닛에 의해 액세스된 제1 힙 저장 유닛의 플래그 비트가 대응하는 위치의 데이터가 모두 유효 데이터인 것을 나타낼 경우, 당해 힙 조정 유닛에 입력한 원본 데이터 및 상기 유효 데이터를 정렬하고,
여기서, 상기 제1 힙 저장 유닛은 당해 힙 조정 유닛에 의해 액세스된 상기 적어도 두 개의 힙 저장 유닛 내의 루트 노드에 근접한 힙 저장 유닛이며, 또한,
상기 제1 힙 저장 유닛의 플래그 비트가 대응하는 위치의 데이터가 임의의 무효 데이터를 포함하는 것을 나타낼 경우, 당해 힙 조정 유닛에 입력한 상기 원본 데이터를 상기 무효 데이터에 대응하는 위치에 기입하는
것을 특징으로 하는 데이터 처리 장치. - 제1항 내지 제16항 중 어느 한 항에 있어서,
상기 복수의 힙 조정 유닛 중의 각 힙 조정 유닛은,
적어도 두 개의 힙 저장 유닛 중의 적어도 하나의 힙 저장 유닛에 기억된 데이터를 판독하고,
당해 힙 조정 유닛에 입력하는 원본 데이터와 상기 판독한 데이터를 정렬하며, 또한,
정렬 요건에 따라 상기 정렬 결과 중의 상대적으로 크거나 또는 상대적으로 작은 데이터를 상기 적어도 두 개의 힙 저장 유닛 중의 또 하나의 힙 저장 유닛에 기입하되,
상기 또 하나의 힙 저장 유닛과 상기 적어도 하나의 힙 저장 유닛은 같은 힙 저장 유닛이 아닌
것을 특징으로 하는 데이터 처리 장치. - 제1항 내지 제17항 중 어느 한 항에 있어서,
힙 제어 유닛을 더 구비하며,
상기 힙 제어 유닛은,
초기화 명령을 수신했을 경우, 상기 복수의 힙 저장 유닛이 같은 클록 주기 내에서 초기화를 실행하도록 제어하는 것;
힙 진입 명령을 수신했을 경우, 데이터 기억 장치로부터 원본 데이터를 판독하고, 판독한 상기 원본 데이터를 상기 복수의 힙 조정 유닛에 전송함으로써, 상기 복수의 힙 조정 유닛이 상기 원본 데이터 및 복수의 힙 저장 유닛 내의 데이터를 정렬하도록 하는 것; 및
힙 퇴출 명령을 수신했을 경우, 상기 복수의 힙 조정 유닛이 특정 순서를 따라 상기 복수의 힙 저장 유닛 내의 데이터를 힙 꼭대기로부터 출력하도록 제어하는 것 중의 적어도 하나를 실행하는
것을 특징으로 하는 데이터 처리 장치. - 집적 회로에 있어서,
상기 집적 회로는 제1항 내지 제18항 중 어느 한 항에 기재된 데이터 처리 장치를 포함하는
것을 특징으로 하는 집적 회로. - 제19항에 있어서,
상기 집적 회로는 컨트롤러를 더 구비하며,
상기 컨트롤러는,
상기 복수의 힙 저장 유닛이 초기화를 실행하도록 지시하기 위한 초기화 명령;
상기 복수의 힙 조정 유닛이, 원본 데이터를 취득하고, 상기 원본 데이터 및 상기 복수의 힙 저장 유닛에 기억된 데이터를 정렬하도록 지시하기 위한 힙 진입 명령; 및
상기 복수의 힙 조정 유닛이, 특정 순서를 따라 상기 복수의 힙 저장 유닛에 기억된 데이터를 출력하도록 지시하기 위한 힙 퇴출 명령 중의 적어도 하나의 명령을 상기 데이터 처리 장치에 송신하는
것을 특징으로 하는 집적 회로. - 인공 지능(AI) 가속기에 있어서,
상기 AI 가속기는 제19항 또는 제2 0항에 기재된 집적 회로를 포함하는
것을 특징으로 하는 AI 가속기.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010244150.2 | 2020-03-31 | ||
CN202010244150.2A CN113467702A (zh) | 2020-03-31 | 2020-03-31 | 数据处理装置、集成电路和ai加速器 |
PCT/CN2020/136960 WO2021196745A1 (zh) | 2020-03-31 | 2020-12-16 | 数据处理装置、集成电路和ai加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210129715A true KR20210129715A (ko) | 2021-10-28 |
Family
ID=77865417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217031349A KR20210129715A (ko) | 2020-03-31 | 2020-12-16 | 데이터 처리 |
Country Status (5)
Country | Link |
---|---|
JP (1) | JP2022531075A (ko) |
KR (1) | KR20210129715A (ko) |
CN (1) | CN113467702A (ko) |
TW (1) | TWI773051B (ko) |
WO (1) | WO2021196745A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115932532B (zh) * | 2023-03-09 | 2023-07-25 | 长鑫存储技术有限公司 | 故障存储单元的物理地址的存储方法、装置、设备及介质 |
Family Cites Families (19)
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 | 三菱電機株式会社 | プロセッサ回路 |
US7007021B1 (en) * | 2000-11-28 | 2006-02-28 | Altera Corporation | Data structure and method for pipeline heap-sorting |
US6952696B1 (en) * | 2000-11-28 | 2005-10-04 | Altera Corporation | Data structure and method for sorting using heap-supernodes |
US8032561B1 (en) * | 2001-08-16 | 2011-10-04 | Altera Corporation | System and method for scheduling and arbitrating events in computing and networking |
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 |
US10268410B2 (en) * | 2014-10-20 | 2019-04-23 | Netapp, Inc. | Efficient modification of storage system metadata |
US10761979B2 (en) * | 2016-07-01 | 2020-09-01 | Intel Corporation | Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value |
CN106775586B (zh) * | 2016-11-11 | 2019-06-11 | 珠海市杰理科技股份有限公司 | 数据排序方法和装置 |
CN107402741A (zh) * | 2017-08-04 | 2017-11-28 | 电子科技大学 | 一种适宜于fpga实现的排序方法 |
CN108446391A (zh) * | 2018-03-23 | 2018-08-24 | 万帮充电设备有限公司 | 数据的处理方法、装置、电子设备和计算机可读介质 |
CN108319454B (zh) * | 2018-03-27 | 2021-02-09 | 武汉中元华电电力设备有限公司 | 一种基于硬件fpga快速实现最优二叉树的方法 |
CN110825440B (zh) * | 2018-08-10 | 2023-04-14 | 昆仑芯(北京)科技有限公司 | 指令执行方法和装置 |
CN109375989B (zh) * | 2018-09-10 | 2022-04-08 | 中山大学 | 一种并行后缀排序方法及系统 |
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
Also Published As
Publication number | Publication date |
---|---|
CN113467702A (zh) | 2021-10-01 |
TWI773051B (zh) | 2022-08-01 |
TW202138994A (zh) | 2021-10-16 |
JP2022531075A (ja) | 2022-07-06 |
WO2021196745A1 (zh) | 2021-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI554944B (zh) | 快閃記憶體控制裝置、快閃記憶體控制系統以及快閃記憶體控制方法 | |
KR100706246B1 (ko) | 읽기 성능을 향상시킬 수 있는 메모리 카드 | |
US8495286B2 (en) | Write buffer for improved DRAM write access patterns | |
US20210295607A1 (en) | Data reading/writing method and system in 3d image processing, storage medium and terminal | |
JP2008009919A (ja) | カードコントローラ | |
US11163686B2 (en) | Method and apparatus for accessing tensor data | |
CN108875914B (zh) | 对神经网络数据进行预处理和后处理的方法和装置 | |
KR20210129715A (ko) | 데이터 처리 | |
JP2014154119A (ja) | メモリ制御装置及び半導体記憶装置 | |
KR101117145B1 (ko) | 데이터 저장 장치, 데이터 저장 제어 장치 및, 데이터 저장 제어 방법 | |
US9570125B1 (en) | Apparatuses and methods for shifting data during a masked write to a buffer | |
US20150170731A1 (en) | Apparatuses and methods for writing masked data to a buffer | |
CN112667593B (zh) | 一种ETL流程执行hbase快速装载的方法与装置 | |
CN112256203B (zh) | Flash存储器的写入方法、装置、设备、介质及系统 | |
KR20070052240A (ko) | 연합 메모리 디바이스 | |
CN108538332A (zh) | 与非门闪存的读取方法 | |
CN103456354B (zh) | 一种非易失性存储器差分存储格的方法和装置 | |
WO2021017378A1 (zh) | 基于fpga的卷积参数加速装置、数据读写方法 | |
KR102721579B1 (ko) | 프로세싱 시스템 | |
JPWO2019208566A1 (ja) | プロセッサ装置 | |
US20180088866A1 (en) | Link management method and physical device | |
KR102723995B1 (ko) | 저-지역성 데이터를 고-지역성 데이터로 효율적으로 변환하기 위한 시스템 및 방법 | |
US20210255792A1 (en) | System and method for efficiently converting low-locality data into high-locality data | |
US20220327180A1 (en) | Generic image resizer using matrix multiplier accelerator | |
US20240095142A1 (en) | Apparatus for processing a deep learning model and a method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
WITB | Written withdrawal of application |