KR101269790B1 - 데이터 플로우 병렬 처리 장치 및 방법 - Google Patents

데이터 플로우 병렬 처리 장치 및 방법 Download PDF

Info

Publication number
KR101269790B1
KR101269790B1 KR1020090122437A KR20090122437A KR101269790B1 KR 101269790 B1 KR101269790 B1 KR 101269790B1 KR 1020090122437 A KR1020090122437 A KR 1020090122437A KR 20090122437 A KR20090122437 A KR 20090122437A KR 101269790 B1 KR101269790 B1 KR 101269790B1
Authority
KR
South Korea
Prior art keywords
data
order
processor
flow
identification information
Prior art date
Application number
KR1020090122437A
Other languages
English (en)
Other versions
KR20110065784A (ko
Inventor
이정희
김정식
박영호
이범철
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020090122437A priority Critical patent/KR101269790B1/ko
Priority to US12/843,166 priority patent/US8743883B2/en
Publication of KR20110065784A publication Critical patent/KR20110065784A/ko
Application granted granted Critical
Publication of KR101269790B1 publication Critical patent/KR101269790B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 플로우 병렬 처리 장치 및 방법이 개시된다. 데이터 플로우 병렬 처리 장치는 입력되는 제1 데이터의 플로우를 구별하는 플로우 구별부와, 복수 개의 프로세서 중 동작하지 않는 프로세서를, 제1 데이터에 할당하는 프로세서 할당부와, 구별된 플로우를 동일하게 갖는 제2 데이터가 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인 경우, 제1 데이터에 대해 순서를 결정하는 순서 결정부와, 할당된 프로세서에 의해 처리된 제1 데이터를 수신하여, 결정된 순서에 따라 출력하는 정렬부를 포함한다.
데이터, 플로우, 프로세서, 정렬 순서

Description

데이터 플로우 병렬 처리 장치 및 방법{Apparatus and Method for parallel processing data flow}
본 발명의 실시예들은 데이터 플로우 병렬 처리 장치 및 방법에 관한 것으로서, 보다 상세하게는 데이터의 플로우 수와 무관하게, 데이터 순서를 유지하면서 데이터를 고속으로 처리할 수 있는 데이터 플로우 병렬 처리 장치 및 방법에 관한 것이다.
데이터 처리 장치는 고성능 처리가 요구됨에 따라, 복수 개의 프로세서를 포함한 프로세서 어레이를 이용하여, 데이터를 병렬 처리하고 있다. 이때, 데이터 처리 장치는 데이터를 고속으로 처리하면서, 데이터의 입력 순서를 유지하는 것이 중요하다.
이에, 데이터의 입력 순서 유지와 성능 요구를 극복하는 병렬 처리 기술로서, 데이터의 플로우 별로 데이터를 프로세서에 각각 할당하여 처리하는 데이터 처리 장치가 제안되었다.
구체적으로, 제안된 데이터 처리 장치는 데이터의 플로우를 구별하여, 플로우 식별정보를 생성한 후, 플로우 식별정보와 동일한 플로우의 데이터가 프로세서 에서 처리되고 있는지를 확인한다. 이후, 제안된 데이터 처리 장치는 동일한 플로우의 데이터가 프로세서에서 처리되고 있지 않은 경우, 동작하지 않는 프로세서(idle processor)에 할당하여 처리한다. 반면, 제안된 데이터 처리 장치는 동일한 플로우의 데이터가 프로세서에서 처리되고 있는 경우, 동일한 플로우의 데이터가 처리 완료될 때까지 대기한 후, 프로세서에 할당하여 처리한다.
그러나, 이러한 데이터 처리 장치는 프로세서의 수보다 플로우 수가 많고, 플로우 별 대역이 낮은 경우 성능이 보장되지만, 프로세서의 수보다 플로우 수가 적은 경우 또는 플로우의 대역이 하나의 프로세서에서 처리할 수 있는 대역을 넘어서는 경우 프로세서의 수와 무관하게 성능이 더 이상 증가하지 않으며, 대기하는 동안 다수의 아이들(idle) 프로세서는 동작하지 않으므로 효율성이 저하된다.
본 발명의 실시예들은, 입력된 데이터의 플로우를 동일하게 갖는 데이터가 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인 경우, 입력된 데이터에 대해 순서를 결정하고, 복수 개의 프로세서에 의해 병렬 처리된 데이터를 상기 결정된 순서에 따라 출력함으로써, 데이터의 플로우 수와 무관하게, 데이터 순서를 유지하면서 데이터를 고속으로 처리할 수 있는 데이터 플로우 병렬 처리 장치 및 방법을 제공하고자 한다.
본 발명의 실시예에 따른 데이터 플로우 병렬 처리 장치는 입력되는 제1 데이터의 플로우를 구별하는 플로우 구별부와, 복수 개의 프로세서 중 동작하지 않는 프로세서를, 상기 제1 데이터에 할당하는 프로세서 할당부와, 상기 구별된 플로우를 동일하게 갖는 제2 데이터가 상기 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인 경우, 상기 제1 데이터에 대해 순서를 결정하는 순서 결정부와, 상기 할당된 프로세서에 의해 처리된 상기 제1 데이터를 수신하여, 상기 결정된 순서에 따라 출력하는 정렬부를 포함한다.
본 발명의 실시예에 따른 데이터 플로우 병렬 처리 방법은 입력되는 제1 데이터의 플로우를 구별하는 단계와, 상기 구별된 플로우를 동일하게 갖는 데이터가 상기 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인지를 판단하는 단계와, 상기 판단 결과, 처리 중인 경우 상기 제1 데이터에 대해 순서를 결정하 고, 복수 개의 프로세서 중 동작하지 않는 프로세서를, 상기 제1 데이터에 할당하는 단계와, 할당된 프로세서에 의해 처리된 상기 제1 데이터를 상기 결정된 순서에 따라 출력하는 단계를 포함한다.
본 발명의 실시예들에 따르면, 입력된 데이터의 플로우를 동일하게 갖는 데이터가 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인 경우, 입력된 데이터에 대해 순서를 결정하고, 복수 개의 프로세서에 의해 병렬 처리된 데이터를 상기 결정된 순서에 따라 출력함으로써, 데이터의 플로우 수와 무관하게, 데이터 순서를 유지하면서 데이터를 고속으로 처리할 수 있다.
이하, 첨부된 도면들을 참조하여 본 발명의 일실시예에 따른 데이터 플로우 병렬 처리 장치 및 방법에 대해 상세히 설명한다.
도 1은 본 발명의 일실시예에 따른 데이터 플로우 병렬 처리 장치의 구성을 나타내는 도면이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 데이터 플로우 병렬 처리 장치(101)는 플로우 구별부(103), 프로세서 할당부(105), 순서 결정부(107), 프로세서 어레이(109), 정렬부(111) 및 데이터베이스(113)를 포함한다.
플로우 구별부(103)는 입력되는 제1 데이터(data)의 플로우를 구별한다. 즉, 플로우 구별부(103)는 기설정된 분류 기준에 따라서, 제1 데이터의 플로우를 구별하고, 구별된 플로우에 대한 플로우 식별정보(FID: Flow Identification)를 생 성할 수 있다.
프로세서 할당부(105)는 제1 데이터 및 플로우 식별정보를 수신하고, 복수 개의 프로세서 중 동작하지 않는 프로세서를, 제1 데이터에 할당한다. 이때, 프로세서 할당부(105)는 복수 개의 프로세서 별 동작 상태가 기록된 프로세서 상태 데이터베이스(115)를 참조하여, 동작 상태가 '아이들(idle) 상태'인 프로세서를 검색하고, 검색된 프로세서에 대한 프로세서 식별정보(PID: Processor Identification)를 생성할 수 있다.
또한, 프로세서 할당부(105)는 제1 데이터의 할당에 따라, 할당된 프로세서의 상태를 전환하고, 프로세서 상태 데이터베이스(115)에 데이터를 처리하는 '엑티브(active) 상태'로 기록할 수 있다.
순서 결정부(107)는 제1 데이터 및 플로우 식별정보를 수신하고, 플로우 식별정보를 동일하게 갖는 제2 데이터가 복수 개의 프로세서(109_1~109_n) 중 어느 하나의 프로세서에 의해 처리 중인 경우, 제1 데이터에 대해 정렬 순서를 결정한다. 이때, 순서 결정부(107)는 정렬 순서 데이터베이스(117)를 참조하여, 제1 데이터의 플로우에 대응하는 정렬 순서를 검색하고, 검색된 정렬 순서를 이용하여 제1 데이터의 정렬 식별정보(SNO: Sequence NO)를 생성할 수 있다. 여기서, 정렬 순서 데이터베이스(117)에 기록된 정렬 순서는 프로세서 어레이(109)에 의해 기록된 것으로, 복수 개의 프로세서(109_1~109_n) 중 어느 하나의 프로세서에 의해 처리 중인, 플로우 식별정보를 동일하게 갖는 데이터 수에 대응한 것일 수 있다.
순서 결정부(107)는 검색된 정렬 순서의 다음 순서를 정렬 식별정보로 생성 하고, 생성된 정렬 식별정보를 정렬 순서 데이터베이스(117)에 기록할 수 있다. 예를 들어, 순서 결정부(107)는 검색된 정렬 순서가 '2'인 경우, 다음 순서인 '3'으로 정렬 식별정보를 생성할 수 있다.
프로세서 어레이(109)는 복수 개의 프로세서(109_1~109_n)를 포함하고, 프로세서 할당부(105) 또는 순서 결정부(107)로부터 수신된 제1 데이터를, 제1 데이터가 할당된 프로세서에서 처리하도록 한다. 구체적으로, 프로세서 어레이(109)는 프로세서 할당부(105)로부터 제1 데이터, 플로우 식별정보 및 프로세서 식별정보를 수신할 수 있다. 이때, 프로세서 할당부(105)로부터 수신된 제1 데이터의 정렬 순서는 기설정된 초기값 예를 들어, 1일 수 있다.
또한, 프로세서 어레이(109)는 순서 결정부(107)로부터 제1 데이터, 플로우 식별정보, 프로세서 식별정보 및 정렬 식별정보를 수신할 수 있다. 이때, 순서 결정부(107)로부터 수신된 제1 데이터의 정렬 순서는 데이터가 처리된 후, 정렬부(111)에서 출력되는 순서를 의미할 수 있다.
프로세서 어레이(109)의 복수 개의 프로세서(109_1~109_n)는 초기에, 각각 데이터를 처리하고 있지 않는 경우, 프로세서의 상태를 프로세서 상태 데이터베이스(115)에 데이터를 처리하지 않는 '아이들(idle) 상태'로 기록할 수 있다.
또한, 프로세서 어레이(109)의 복수 개의 프로세서(109_1~109_n)는 '엑티브(active) 상태'인 경우, 각각 제1 데이터를 처리하고, 처리가 완료되면, 프로세서의 상태를 다시 '아이들 상태'로 환원하고, 프로세서 상태 데이터베이스에 데이터를 처리하지 않는 '아이들(idle) 상태'로 기록할 수 있다.
이때, 각 프로세서(109_1~109_n)의 데이터 처리 시간은 데이터의 크기, 종류에 따라 가변적일 수 있다.
프로세서 어레이(109)의 복수 개의 프로세서(109_1~109_n)는 데이터 처리가 완료되면, 정렬 순서 데이터베이스(117)를 참조하여 제1 데이터의 플로우에 대한 정렬 순서를 검색하고, 검색된 정렬 순서의 이전 순서를 정렬 순서 데이터베이스(117)에 기록할 수 있다. 예를 들어, 각 프로세서(109_1~109_n)는 검색된 정렬 순서가 '5'인 경우, 이전 순서인 '4'로 정렬 식별정보를 생성하여, 정렬 순서 데이터베이스(117)에 기록할 수 있다.
정렬부(111)는 할당된 프로세서에 의해 처리된 제1 데이터를 수신하여, 정렬 순서에 따라 출력한다. 구체적으로, 정렬부(111)는 할당된 프로세서에 의해 처리된 제1 데이터, 플로우 식별정보 및 정렬 식별정보를 수신하여, 플로우 식별정보 별로, 정렬 식별정보에 따라 정렬하여 출력한다. 이때, 정렬부(111)는 결정된 순서에 대한 정렬 식별정보가 기설정된 초기값인 경우, 정렬과 무관하게 제1 데이터를 출력할 수 있다.
데이터베이스(113)는 프로세서 상태 데이터베이스(115) 및 정렬 순서 데이터베이스(117)를 포함한다.
프로세서 상태 데이터베이스(115)는 프로세서의 데이터 처리 여부에 따라, 프로세서의 상태를 '엑티브 상태' 또는 '아이들 상태'로 기록할 수 있다.
정렬 순서 데이터베이스(117)는 동일 플로우 별 정렬 순서 즉, 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인 동일 플로우를 갖는 데이터 수 에 기초하여, 생성된 정렬 순서를 기록할 수 있다.
본 발명의 일실시예에 따른 데이터 플로우 병렬 처리 장치는 입력 데이터의 플로우와 동일한 플로우의 데이터가 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인 경우, 동일 플로우에 대한 입력 데이터의 정렬 식별정보를 이용하여, 복수 개의 프로세서에 의해 병렬 처리된 입력 데이터를 정렬함으로써, 데이터의 플로우 수와 무관하게, 데이터 순서를 유지하면서 데이터를 고속으로 처리할 수 있다
도 2는 본 발명의 일실시예에 따른 데이터 플로우 병렬 처리 방법을 나타내는 흐름도이다. 여기서, 설명의 편의상, 데이터 플로우 병렬 처리 장치의 프로세서 상태 데이터베이스는 각 프로세서의 동작 상태가 기록되어 있고, 정렬 순서 데이터베이스는 각 프로세서에 의해 플로우별 처리 중인 데이터 수가 기록되어 있는 것으로 가정한다.
도 2를 참조하면, 데이터 플로우 병렬 처리 장치는 입력되는 제1 데이터의 플로우를 구별한다(201).
구체적으로, 데이터 플로우 병렬 처리 장치는 기설정된 분류 기준에 따라서, 입력되는 제1 데이터의 플로우를 구별하고, 구별된 플로우에 대한 플로우 식별정보(FID)를 생성할 수 있다.
이어서, 데이터 플로우 병렬 처리 장치는 구별된 플로우를 동일하게 갖는 제2 데이터가 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인지를 판단한다(203).
구체적으로, 데이터 플로우 병렬 처리 장치는 동일 플로우 별 정렬 순서가 기록된 정렬 순서 데이터베이스를 참조하여, 플로우 식별정보를 동일하게 갖는 제2 데이터가 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인지를 판단할 수 있다.
이어서, 데이터 플로우 병렬 처리 장치는 판단 결과, 플로우 식별정보를 동일하게 갖는 제2 데이터가 프로세서에 의해 처리 중인 경우, 제1 데이터에 대해 정렬 순서를 결정한다(205).
이때, 데이터 플로우 병렬 처리 장치는 동일 플로우 별 정렬 순서가 기록된 정렬 순서 데이터베이스를 참조하여, 제1 데이터의 플로우에 대응하는 정렬 순서를 검색한다. 여기서, 정렬 순서 데이터베이스에 기록된 정렬 순서는 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인, 플로우 식별정보를 동일하게 갖는 데이터 수에 대응한 것일 수 있다.
이후, 데이터 플로우 병렬 처리 장치는 검색된 정렬 순서를 이용하여 제1 데이터의 정렬 식별정보(SNO)를 생성할 수 있다. 이때, 데이터 플로우 병렬 처리 장치는 검색된 정렬 순서의 다음 순서를 정렬 식별정보로 생성하고, 생성된 정렬 식별정보를 정렬 순서 데이터베이스에 기록할 수 있다. 예를 들어, 데이터 플로우 병렬 처리 장치는 검색된 정렬 순서가 '2'인 경우, 다음 순서인 '3'으로 정렬 식별정보를 생성하여, 데이터베이스에 기록할 수 있다.
이어서, 데이터 플로우 병렬 처리 장치는 복수 개의 프로세서 중 동작하지 않는 프로세서를, 제1 데이터에 할당할 수 있다(207).
이때, 데이터 플로우 병렬 처리 장치는 복수 개의 프로세서 별 동작 상태가 기록된 프로세서 상태 데이터베이스를 참조하여, 동작 상태가 '아이들(idle) 상태'인 프로세서를 검색하고, 검색된 프로세서에 대한 프로세서 식별정보(PID)를 생성할 수 있다.
여기서, 데이터 플로우 병렬 처리 장치는 제1 데이터의 할당에 따라, 할당된 프로세서의 상태를 전환하고, 프로세서 상태 데이터베이스에 데이터를 처리하는 '엑티브 상태'로 기록할 수 있다.
이후, 데이터 플로우 병렬 처리 장치는 입력 데이터에 할당된 프로세서를 이용하여, 제1 데이터를 처리한다. 이때, 데이터 플로우 병렬 처리 장치는 '엑티브(active) 상태'의 프로세서를 이용하여, 제1 데이터를 처리하고, 처리가 완료되면, 프로세서의 상태를 다시 '아이들 상태'로 환원하고, 프로세서 상태 데이터베이스에 데이터를 처리하지 않는 '아이들(idle) 상태'로 기록할 수 있다.
또한, 데이터 플로우 병렬 처리 장치는 입력 데이터를 처리하고, 처리가 완료되면, 정렬 순서 데이터베이스를 참조하여 제1 데이터의 플로우에 대한 정렬 순서를 검색하고, 검색된 정렬 순서의 이전 순서를 정렬 순서 데이터베이스에 기록할 수 있다. 예를 들어, 데이터 플로우 병렬 처리 장치는 검색된 정렬 순서가 '5'인 경우, 이전 순서인 '4'로 정렬 식별정보를 생성하여, 정렬 순서 데이터베이스에 기록할 수 있다.
이어서, 데이터 플로우 병렬 처리 장치는 할당된 프로세서에 의해 처리된 제1 데이터를 정렬하여 출력한다(209).
구체적으로, 데이터 플로우 병렬 처리 장치는 할당된 프로세서에 의해 처리된 제1 데이터, 플로우 식별정보 및 정렬 식별정보를 수신하여, 플로우 식별정보 별로, 정렬 식별정보에 따라 정렬하여 출력할 수 있다.
이때, 데이터 플로우 병렬 처리 장치는 제1 데이터의 정렬 순서가 결정되지 않거나 결정된 순서에 대한 정렬 식별정보가 기설정된 초기값인 경우, 정렬과 무관하게 제1 데이터를 출력할 수 있다.
한편, 단계 203에서, 데이터 플로우 병렬 처리 장치는 판단 결과, 플로우 식별정보를 동일하게 갖는 제2 데이터가 프로세서에 의해 처리 중이 아닌 경우, 프로세서를 제1 데이터에 할당하고, 프로세서에 의해 처리된 제1 데이터를 출력할 수 있다(211).
이때, 데이터 플로우 병렬 처리 장치는 제1 데이터의 순서를 결정하지 않고, 복수 개의 프로세서 중 동작하지 않는 프로세서를 제1 데이터에 할당한다. 이후, 데이터 플로우 병렬 처리 장치는 할당된 프로세서에 의해 처리된 제1 데이터를 상기 순서와 무관하게 출력할 수 있다.
도 3은 본 발명의 일실시예에 따른 데이터 플로우 병렬 처리 방법의 구체적인 예를 설명하기 위해, 데이터 별 입출력 시간을 도시한 도면이다. 도 4a 내지 도 4c는 도 3에서의 데이터 처리에 따른 프로세서 상태 데이터베이스 및 정렬 순서 데이터베이스의 기록 예를 도시한 도면이다.
도 3, 도 4a 내지 도 4c를 참조하면, 데이터 플로우 병렬 처리 장치는 서로 다른 크기를 갖는 6개의 입력 데이터에 프로세서 #1(P1), 프로세서 #2(P2), 프로세 서 #3(P3), 프로세서 #4(P4), 프로세서 #2(P2), 프로세서 #3(P3)를 t1 , t2 , t3 , t4 , t5 , t6 에서 순차적으로 할당하고, 각 프로세서에 의해 처리된 데이터를 프로세서 #2(P2), 프로세서 #3(P3), 프로세서 #1(P1), 프로세서 #4(P4), 프로세서 #3(P3), 프로세서 #2(P2)로부터 tA , tB , tC tD , tE , tF 에서 순차적으로 출력한다.
구체적으로, t1에서(제1 데이터 입력), 데이터 플로우 병렬 처리 장치는 데이터의 플로우 식별정보(FID)가 100인 제1 데이터를 입력 받으면, 플로우 식별정보(FID)가 100인 제1 데이터에 프로세서 #1(P1)을 할당하고, 프로세서 #1(P1)의 상태를 '엑티브 상태'로 프로세서 상태 데이터베이스(115)에 기록할 수 있다. 이때, 데이터 플로우 병렬 처리 장치는 프로세서 상태 데이터베이스(115)를 참조하여, 플로우 식별정보가 100인 데이터가 처리 중이 아닌 것으로 판단함에 따라, 정렬 순서 데이터베이스(117)에 플로우 식별정보(FID)가 100인 제1 데이터의 정렬 순서를 기록하지 않을 수 있다.
t3에서(제3 데이터 입력), 데이터 플로우 병렬 처리 장치는 데이터의 플로우 식별정보(FID)가 100인 제3 데이터를 입력 받으면, 플로우 식별정보(FID)가 100인 제3 데이터에 프로세서 #3(P3)을 할당하고, 프로세서 #3(P3)의 상태를 '엑티브 상태'로 프로세서 상태 데이터베이스(115)에 기록할 수 있다. 이때, 데이터 플로우 병렬 처리 장치는 프로세서 상태 데이터베이스(115)를 참조하여, 플로우 식별정보가 100인 데이터가 처리 중인 것으로 판단함에 따라, 정렬 순서 데이터베이스(117) 에 플로우 식별정보(FID)가 100인 제3 데이터의 정렬 순서(SNO)를 '2'로 기록할 수 있다.
또한, tB에서(제3 데이터 처리 완료), 데이터 플로우 병렬 처리 장치는 데이터의 플로우 식별정보(FID)가 100인 제3 데이터가 프로세서 #3(P3)에 의해 처리 완료되면, 프로세서 #3(P3)의 상태를 '아이들 상태'로 프로세서 상태 데이터베이스(115)에 기록할 수 있다. 이때, 데이터 플로우 병렬 처리 장치는 정렬 순서 데이터베이스(117)에 플로우 식별정보(FID)가 100인 제3 데이터의 정렬 순서를 '3'에서 '2'로 수정하여 기록할 수 있다.
이하, 각 시점별 데이터 입출력에 따른 데이터베이스의 기록은 상기 서술한 방법에 따른 결과와 동일하므로, 이에 생략한다.
본 발명의 일실시예에 따른 데이터 플로우 병렬 처리는 입력 데이터의 크기와 무관하게, 정렬 식별정보를 이용하여 데이터 순서를 유지하면서 데이터를 고속으로 처리할 수 있다.
본 발명에 따른 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스 크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일실시예에 따른 데이터 플로우 병렬 처리 장치의 구성을 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 데이터 플로우 병렬 처리 방법을 나타내는 흐름도이다.
도 3은 본 발명의 일실시예에 따른 데이터 플로우 병렬 처리 방법의 구체적인 예를 설명하기 위해, 데이터 별 입출력 시간을 도시한 도면이다.
도 4a 내지 도 4c는 도 3에서의 데이터 처리에 따른 프로세서 상태 데이터베이스 및 정렬 순서 데이터베이스의 기록 예를 도시한 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
101: 데이터 플로우 병렬 처리 장치 103: 플로우 구별부
105: 프로세서 할당부 107: 순서 결정부
109: 프로세서 어레이 111: 정렬부
115: 프로세서 상태 데이터베이스 117: 정렬 순서 데이터베이스

Claims (16)

  1. 입력되는 제1 데이터의 플로우를 구별하는 플로우 구별부;
    복수 개의 프로세서 중 동작하지 않는 프로세서를, 상기 제1 데이터에 할당하는 프로세서 할당부;
    상기 구별된 플로우를 동일하게 갖는 제2 데이터가 상기 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인 경우, 상기 제1 데이터에 대해 순서를 결정하는 순서 결정부; 및
    상기 할당된 프로세서에 의해 처리된 상기 제1 데이터를 수신하여, 상기 결정된 순서에 따라 출력하는 정렬부
    를 포함하는 데이터 플로우 병렬 처리 장치.
  2. 제1항에 있어서,
    상기 플로우 구별부는,
    상기 구별된 플로우에 대한 플로우 식별정보를 생성하는, 데이터 플로우 병렬 처리 장치.
  3. 제1항에 있어서,
    상기 프로세서 할당부는,
    상기 복수 개의 프로세서 별 동작 상태가 기록된 프로세서 상태 데이터베이 스를 참조하여, 동작 상태가 '아이들(idle) 상태'인 프로세서를 검색하고, 상기 검색된 프로세서에 대한 프로세서 식별정보를 생성하는, 데이터 플로우 병렬 처리 장치.
  4. 제1항에 있어서,
    상기 프로세서 할당부는,
    상기 제1 데이터로의 할당에 따라, 상기 할당된 프로세서의 상태를 '엑티브(active) 상태'로 전환하고,
    상기 제1 데이터에 대한 처리가 완료되는 경우, 상기 프로세서의 상태를 '아이들 상태'로 환원하는, 데이터 플로우 병렬 처리 장치.
  5. 제1항에 있어서,
    상기 순서 결정부는,
    정렬 순서 데이터베이스로부터 상기 제1 데이터의 플로우에 대응하는 순서를 검색하고, 상기 검색된 순서를 이용하여 상기 제1 데이터의 정렬 식별정보를 생성하는, 데이터 플로우 병렬 처리 장치.
  6. 제5항에 있어서,
    상기 순서 결정부는,
    상기 검색된 순서의 다음 순서를 상기 정렬 식별정보로 생성하고, 상기 생 성된 정렬 식별정보를 상기 정렬 순서 데이터베이스에 기록하는, 데이터 플로우 병렬 처리 장치.
  7. 제5항에 있어서,
    상기 프로세서는,
    상기 제1 데이터를 처리하고, 상기 처리가 완료되면, 상기 정렬 순서 데이터베이스를 참조하여 상기 제1 데이터의 플로우에 대한 순서를 검색하고, 상기 검색된 순서의 이전 순서를 상기 정렬 순서 데이터베이스에 기록하는, 데이터 플로우 병렬 처리 장치.
  8. 제1항에 있어서,
    상기 정렬부는,
    상기 결정된 순서에 대한 정렬 식별정보가 기설정된 초기값인 경우, 상기 순서와 무관하게 상기 제1 데이터를 출력하는, 데이터 플로우 병렬 처리 장치.
  9. 입력되는 제1 데이터의 플로우를 구별하는 단계;
    상기 구별된 플로우를 동일하게 갖는 제2 데이터가 복수 개의 프로세서 중 어느 하나의 프로세서에 의해 처리 중인지를 판단하는 단계;
    상기 판단 결과, 처리 중인 경우 상기 제1 데이터에 대해 순서를 결정하고, 상기 복수 개의 프로세서 중 동작하지 않는 프로세서를, 상기 제1 데이터에 할당하는 단계; 및
    할당된 프로세서에 의해 처리된 상기 제1 데이터를 상기 결정된 순서에 따라 출력하는 단계
    를 포함하는 데이터 플로우 병렬 처리 방법.
  10. 제9항에 있어서,
    상기 제1 데이터의 플로우를 구별하는 단계는,
    상기 구별된 플로우에 대한 플로우 식별정보를 생성하는 단계
    를 포함하는, 데이터 플로우 병렬 처리 방법.
  11. 제9항에 있어서,
    상기 복수 개의 프로세서 중 동작하지 않는 프로세서를, 상기 제1 데이터에 할당하는 단계는,
    상기 복수 개의 프로세서 별 동작 상태가 기록된 프로세서 상태 데이터베이스를 참조하여, 동작 상태가 '아이들(idle) 상태'인 프로세서를 검색하고, 상기 검색된 프로세서에 대한 프로세서 식별정보를 생성하는 단계
    를 포함하는, 데이터 플로우 병렬 처리 방법.
  12. 제9항에 있어서,
    상기 할당된 프로세서의 상태를 '엑티브 상태'로 전환하는 단계; 및
    상기 제1 데이터에 대한 처리가 완료되는 경우, 상기 프로세서의 상태를 '아이들 상태'로 환원하는 단계
    를 더 포함하는, 데이터 플로우 병렬 처리 방법.
  13. 제9항에 있어서,
    정렬 순서 데이터베이스로부터 상기 제1 데이터의 플로우에 대응하는 순서를 검색하는 단계; 및
    상기 검색된 순서를 이용하여 상기 제1 데이터의 정렬 식별정보를 생성하는 단계
    를 더 포함하는, 데이터 플로우 병렬 처리 방법.
  14. 제13항에 있어서,
    상기 제1 데이터의 정렬 식별정보를 생성하는 단계는,
    상기 검색된 순서의 다음 순서를 상기 정렬 식별정보로 생성하고, 상기 생성된 정렬 식별정보를 상기 정렬 순서 데이터베이스에 기록하는 단계
    를 포함하는, 데이터 플로우 병렬 처리 방법.
  15. 제13항에 있어서,
    상기 제1 데이터를 처리하고, 상기 처리가 완료되면, 상기 정렬 순서 데이터베이스를 참조하여 상기 제1 데이터의 플로우에 대한 순서를 검색하는 단계; 및
    상기 검색된 순서의 이전 순서를 상기 정렬 순서 데이터베이스에 기록하는 단계
    를 더 포함하는, 데이터 플로우 병렬 처리 방법.
  16. 제9항에 있어서,
    상기 판단 결과, 처리 중이 아닌 경우 상기 제1 데이터의 순서를 결정하지 않고, 상기 복수 개의 프로세서 중 동작하지 않는 프로세서를, 상기 제1 데이터에 할당하는 단계; 및
    상기 할당된 프로세서에 의해 처리된 제1 데이터를 상기 순서와 무관하게 출력하는 단계
    를 더 포함하는, 데이터 플로우 병렬 처리 방법.
KR1020090122437A 2009-12-10 2009-12-10 데이터 플로우 병렬 처리 장치 및 방법 KR101269790B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090122437A KR101269790B1 (ko) 2009-12-10 2009-12-10 데이터 플로우 병렬 처리 장치 및 방법
US12/843,166 US8743883B2 (en) 2009-12-10 2010-07-26 Apparatus and method for parallel processing data flow

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090122437A KR101269790B1 (ko) 2009-12-10 2009-12-10 데이터 플로우 병렬 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20110065784A KR20110065784A (ko) 2011-06-16
KR101269790B1 true KR101269790B1 (ko) 2013-05-30

Family

ID=44144063

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090122437A KR101269790B1 (ko) 2009-12-10 2009-12-10 데이터 플로우 병렬 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US8743883B2 (ko)
KR (1) KR101269790B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101269790B1 (ko) * 2009-12-10 2013-05-30 한국전자통신연구원 데이터 플로우 병렬 처리 장치 및 방법
RU2507569C1 (ru) * 2012-07-11 2014-02-20 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ параллельной обработки упорядоченных потоков данных

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080095170A1 (en) 2001-07-25 2008-04-24 International Business Machines Corporation Sequence-preserving deep-packet processing in a multiprocessor system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3483039B2 (ja) 1993-09-30 2004-01-06 博文 松尾 画像信号による識別装置
US6542508B1 (en) * 1998-12-17 2003-04-01 Watchguard Technologies, Inc. Policy engine using stream classifier and policy binding database to associate data packet with appropriate action processor for processing without involvement of a host processor
US7436830B2 (en) * 2000-04-03 2008-10-14 P-Cube Ltd. Method and apparatus for wire-speed application layer classification of upstream and downstream data packets
US6854117B1 (en) * 2000-10-31 2005-02-08 Caspian Networks, Inc. Parallel network processor array
US7280540B2 (en) * 2001-01-09 2007-10-09 Stonesoft Oy Processing of data packets within a network element cluster
US7454499B2 (en) * 2002-11-07 2008-11-18 Tippingpoint Technologies, Inc. Active network defense system and method
KR20060013059A (ko) * 2004-08-05 2006-02-09 삼성전자주식회사 휴대 인터넷 시스템의 패킷 처리 방법 및 장치
US8270413B2 (en) * 2005-11-28 2012-09-18 Cisco Technology, Inc. Method and apparatus for self-learning of VPNS from combination of unidirectional tunnels in MPLS/VPN networks
TW201605194A (zh) 2005-12-29 2016-02-01 內數位科技公司 以哆h-arq方法同時選取多傳輸格式及傳送多傳輸塊組方法及裝置
KR101269790B1 (ko) * 2009-12-10 2013-05-30 한국전자통신연구원 데이터 플로우 병렬 처리 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080095170A1 (en) 2001-07-25 2008-04-24 International Business Machines Corporation Sequence-preserving deep-packet processing in a multiprocessor system

Also Published As

Publication number Publication date
US8743883B2 (en) 2014-06-03
KR20110065784A (ko) 2011-06-16
US20110145276A1 (en) 2011-06-16

Similar Documents

Publication Publication Date Title
CN108537543B (zh) 区块链数据的并行处理方法、装置、设备和存储介质
US9015451B2 (en) Processor including a cache and a scratch pad memory and memory control method thereof
KR100721406B1 (ko) 카테고리별 검색 로직을 이용한 상품 검색 시스템 및 방법
US10348815B2 (en) Command process load balancing system
US8365172B2 (en) Horizontal scaling of stream processing
JP6352958B2 (ja) グラフインデックス探索装置及びグラフインデックス探索装置の動作方法
JP2009524852A5 (ko)
US20170003936A1 (en) Dynamic shuffle reconfiguration
US20080140691A1 (en) Method, Device and Computer Program Product for Optimizing File Placement in a Storage System
US11210343B2 (en) Graph data processing method and apparatus thereof
US9612867B2 (en) Apparatus and method for data partition and allocation in heterogeneous multi-processor environment
KR101269790B1 (ko) 데이터 플로우 병렬 처리 장치 및 방법
CN105790967B (zh) 一种网络日志处理方法和装置
WO2012164738A1 (ja) データベース管理システム、装置及び方法
US10324915B2 (en) Information processing apparatus, processing apparatus, data search method
CN114077690A (zh) 向量数据处理方法、装置、设备及存储介质
KR20130130330A (ko) 해시 기반의 스카이라인 질의 처리 방법 및 그 장치
CN112328630B (zh) 数据查询方法、装置、设备及存储介质
US20220156081A1 (en) Processing-in-memory and method of outputting instruction using processing-in-memory
EP3296878B1 (en) Electronic device and page merging method therefor
JP2010152435A (ja) 情報処理装置及び情報処理方法及びプログラム
US7949857B2 (en) Method and system for determining multiple unused registers in a processor
CN109284234B (zh) 一种存储地址分配方法及***
KR102161742B1 (ko) 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법
JP2001005830A (ja) 情報処理装置及びその方法、コンピュータ可読メモリ

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160523

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170518

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180523

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190514

Year of fee payment: 7