KR20170056773A - 플로우 기반 병렬 처리 방법 및 장치 - Google Patents

플로우 기반 병렬 처리 방법 및 장치 Download PDF

Info

Publication number
KR20170056773A
KR20170056773A KR1020150159702A KR20150159702A KR20170056773A KR 20170056773 A KR20170056773 A KR 20170056773A KR 1020150159702 A KR1020150159702 A KR 1020150159702A KR 20150159702 A KR20150159702 A KR 20150159702A KR 20170056773 A KR20170056773 A KR 20170056773A
Authority
KR
South Korea
Prior art keywords
queue
flow
data
new
parallel processing
Prior art date
Application number
KR1020150159702A
Other languages
English (en)
Other versions
KR101892920B1 (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 KR1020150159702A priority Critical patent/KR101892920B1/ko
Publication of KR20170056773A publication Critical patent/KR20170056773A/ko
Application granted granted Critical
Publication of KR101892920B1 publication Critical patent/KR101892920B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)

Abstract

본 발명의 실시 예들은, 데이터 병렬 처리에 관한 것으로, 본 발명의 일 실시 예에 따른 플로우 기반 병렬 처리 장치는, 하나 이상의 큐를 저장하는 큐 메모리; 데이터를 저장하는 데이터 메모리; 상기 데이터의 플로우 정보에 기초하여, 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 맵퍼; 입력되는 데이터에 따른 프로세스를 수행하는 복수의 프로세서; 및 상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 독출하고, 상기 독출된 데이터 중 단일 큐에 대응하는 데이터를 상기 복수의 프로세서 중 단일 프로세서로 전송하는 분배기를 포함한다. 본 발명의 실시 예들에 따르면, 멀티 프로세서 또는 멀티 코어 환경에서 순서를 가지는 데이터의 병렬 처리를 수행할 수 있다.

Description

플로우 기반 병렬 처리 방법 및 장치{Flow based parallel processing method and apparatus thereof}
본 발명의 실시 예들은, 데이터 병렬 처리에 관한 것이다.
멀티 코어 환경의 데이터 처리 시스템은, 네트워크 트래픽 성능을 고속화 하는 처리 기술이다. 이러한 데이터 처리 시스템은, 순서가 설정된 데이터를 하나 이상의 멀티 코어가 동시에 병렬로 처리하더라도 해당 데이터의 순서의 처리 순서가 유지하도록 할 필요가 있다.
미국 등록 특허 US 7,765,405 B2 (Receive side scaling with cryptographically secure hashing)
본 발명의 실시 예들은, 멀티 프로세서 또는 멀티 코어 환경의 데이터 처리 시스템에서 순서를 가지는 데이터가 병렬 처리될 수 있도록 하는 방안을 제공한다.
본 발명의 실시 예들은, 순서를 가지는 데이터의 병렬 처리 시에 데이터의 재순서화(re-ordering) 문제가 야기되지 않도록 하는 방안을 제공한다.
본 발명의 실시 예들은, 네트워크 트래픽의 상황에 따라 프로세서 또는 코어의 스케일링이 가능하도록 하는 방안을 제공한다.
본 발명의 일 실시 예에 따른 플로우 기반 병렬 처리 장치는, 하나 이상의 큐를 저장하는 큐 메모리; 데이터를 저장하는 데이터 메모리; 상기 데이터의 플로우 정보에 기초하여, 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 맵퍼; 입력되는 데이터에 따른 프로세스를 수행하는 복수의 프로세서; 및 상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 독출하고, 상기 독출된 데이터 중 단일 큐에 대응하는 데이터를 상기 복수의 프로세서 중 단일 프로세서로 전송하는 분배기를 포함한다.
일 실시 예에서, 상기 맵퍼는, 상기 데이터가 신규 플로우에 해당하는 경우, 상기 신규 플로우를 신규 큐 또는 기존 큐에 맵핑할 수 있다.
일 실시 예에서, 상기 맵퍼는, 플로우 카운터 정보가 임계 값 미만인 기존 큐가 존재하지 않는 경우, 상기 신규 플로우와 신규 큐를 맵핑할 수 있다.
일 실시 예에서, 상기 장치는, 상기 신규 큐에 대한 분배기를 배정하는 분배기 매니저; 및 상기 신규 큐에 단일 프로세서를 배정하는 프로세서 매니저를 더 포함할 수 있다.
일 실시 예에서, 상기 맵퍼는, 플로우 카운터 정보가 임계 값 미만인 기존 큐가 존재하는 경우, 해당 기존 큐와 상기 신규 플로우를 맵핑할 수 있다.
일 실시 예에서, 상기 맵퍼는, 플로우 카운터 정보가 임계 값 미만인 기존 큐가 다수인 경우, 해당 기존 큐들 중 가장 적은 수의 포인터가 저장된 큐와 상기 신규 플로우를 맵핑할 수 있다.
일 실시 예에서, 상기 맵퍼는, 플로우 카운터 정보가 임계 값 미만인 기존 큐가 다수인 경우, 해당 기존 큐들 중 가장 많은 수의 포인터가 저장된 큐와 상기 신규 플로우를 맵핑할 수 있다.
본 발명의 일 실시 예에 따른 플로우 기반 병렬 처리 장치가 데이터 병렬 처리를 수행하는 방법은, 수신되는 데이터를 데이터 메모리에 저장하는 단계; 상기 데이터의 플로우 정보에 기초하여, 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 단계; 상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 독출하는 단계; 및 상기 독출된 데이터 중 단일 큐에 대응하는 데이터를 단일 프로세서로 전송하는 단계를 포함한다.
일 실시 예에서, 상기 방법은, 상기 데이터가 신규 플로우에 해당하는 경우, 상기 신규 플로우를 신규 큐 또는 기존 큐에 맵핑하는 단계를 더 포함할 수 있다.
일 실시 예에서, 상기 방법은, 플로우 카운터 정보가 임계 값 미만인 기존 큐가 존재하지 않는 경우, 상기 신규 플로우와 신규 큐를 맵핑하는 단계를 포함할 수 있다.
일 실시 예에서, 상기 방법은, 상기 신규 큐에 대한 분배기를 배정하는 단계; 및 상기 신규 큐에 대한 단일 프로세서를 배정하는 단계를 더 포함할 수 있다.
일 실시 예에서, 상기 방법은, 플로우 카운터 정보가 임계 값 미만인 기존 큐가 존재하는 경우, 해당 기존 큐와 상기 신규 플로우를 맵핑하는 단계를 포함할 수 있다.
일 실시 예에서, 상기 방법은, 플로우 카운터 정보가 임계 값 미만인 기존 큐가 다수인 경우, 해당 기존 큐들 중 가장 적은 수의 포인터가 저장된 큐와 상기 신규 플로우를 맵핑하는 단계를 포함할 수 있다.
일 실시 예에서, 상기 방법은, 플로우 카운터 정보가 임계 값 미만인 기존 큐가 다수인 경우, 해당 기존 큐들 중 가장 많은 수의 포인터가 저장된 큐와 상기 신규 플로우를 맵핑하는 단계를 포함할 수 있다.
본 발명의 실시 예들에 따르면, 멀티 프로세서 또는 멀티 코어 환경에서 순서를 가지는 데이터의 병렬 처리를 수행할 수 있다.
본 발명의 실시 예들에 따르면, 순서를 가지는 데이터의 병렬 처리를 수행함에 있어, 재순서화 문제를 야기하지 않으면서, 네트워크 트래픽 상황에 따른 스케일링을 가능하도록 할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 플로우 기반 병렬 처리 장치를 설명하기 위한 블록도,
도 2는 본 발명의 일 실시 예에 따른 플로우 테이블을 설명하기 위한 예시도,
도 3은 본 발명의 일 실시 예에 따른 큐 테이블을 설명하기 위한 예시도,
도 4는 본 발명의 일 실시 예에 따른 플로우 기반 병렬 처리 방법을 설명하기 위한 흐름도,
도 5는 입력 데이터가 프로세서로 전달되는 경로를 도시한 예시도.
이하에서, 본 발명의 실시 예들을 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
이하, 첨부되는 도면을 참조하여 본 발명의 실시 예들을 설명한다.
도 1은 본 발명의 일 실시 예에 따른 플로우 기반 병렬 처리 장치를 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 일 실시 예에 따른 플로우 기반 병렬 처리 장치는, 맵퍼(110), 데이터 메모리(120), 테이블 제공부(130), 큐 메모리(140), 큐 매니저(150), 적어도 하나의 분배기(160), 분배기 매니저(170), 적어도 하나의 프로세서(180) 및 프로세서 매니저(190)를 포함한다. 실시 예에 따라, 전술한 구성 요소 중 적어도 하나는 생략될 수 있다.
맵퍼(110)는, 네트워크를 통해 데이터를 수신하고, 수신된 데이터를 데이터 메모리(120)에 저장할 수 있다. 이하, 네트워크를 통하여 수신된 데이터를 입력 데이터라 한다.
맵퍼(110)는, 현재 수신된 입력 데이터가 속하는 플로우를 확인할 수 있다. 현재 수신된 입력 데이터가 속하는 플로우를 확인함에 있어, 맵퍼(110)는, 플로우 테이블을 참조할 수 있다. 플로우 테이블은, 플로우와 큐의 매핑 관계를 나타내는 테이블로서, 맵퍼(110)에 의하여 작성될 수 있고, 테이블 제공부(130)에 저장될 수 있다. 플로우 테이블을 도 2를 참조하여 살펴본다.
도 2는 본 발명의 일 실시 예에 따른 플로우 테이블을 설명하기 위한 예시도이다.
도 2를 참조하면, 본 발명의 일 실시 예에 따른 플로우 테이블은, 플로우 정보, 큐 정보 및 플로우 만료 정보 중 적어도 하나를 포함할 수 있다.
플로우 정보는, 입력 데이터가 속하는 플로우를 나타내는 정보로서, 입력 데이터에 특정 연산을 적용함으로써 생성될 수 있다. 예를 들어, 플로우 정보는, 입력 데이터에 포함된 식별 기준 값을 비트 마스킹 처리한 값이거나, 식별 기준 값에 해시 함수가 적용되어 생성된 값일 수 있다. 여기서, 식별 기준 값은, 예를 들어, 입력 데이터의 헤더에 포함된 SIP(Source Internet Protocol) 주소 값, DIP(Destination Internet Protocol) 주소 값, SPORT(Source Port) 필드 값, DPORT(Destination Port) 필드 값 또는 PROTOCOL 필드 값이거나, 입력 데이터의 페이로드 정보에 포함된 값일 수 있다. 실시 예에 따라, 플로우 정보는, 입력 데이터가 저장된 주소를 가리키는 포인터가 저장된 큐의 큐 정보가 저장된 주소일 수 있다.
큐 정보는, 하나의 큐를 다른 큐와 식별할 수 있는 정보일 수 있다.
플로우 만료 정보는, 해당 플로우를 비활성화할 시점을 판단하기 위한 기준이 되는 정보로서, 1 비트 이상으로 구성될 수 있다. 플로우 만료 정보는, 해당 플로우에 속하는 입력 데이터가 수신되는 경우마다 1씩 증가할 수 있으며, 설정된 주기마다 1씩 감소할 수 있다.
다시 도 1을 참조하여 설명하면, 맵퍼(110)는, 현재 수신된 입력 데이터에 포함된 식별 기준 값에 특정 연산을 적용함으로써, 현재 수신된 입력 데이터에 대한 플로우 정보를 생성할 수 있다. 맵퍼(110)는, 현재 수신된 입력 데이터에 대한 플로우 정보가 플로우 테이블에 저장되어 있는지 여부를 기반으로, 해당 플로우가 신규 플로우인지 여부를 확인할 수 있다.
<1. 현재 수신된 입력 데이터가 신규 플로우에 해당하는 경우>
맵퍼(110)는, 현재 수신된 입력 데이터에 대한 플로우 정보가 플로우 테이블에 저장되어 있지 않은 경우, 현재 수신된 입력 데이터가 신규 플로우에 해당한다고 판단할 수 있다.
이러한 경우, 맵퍼(110)는, 현재 수신된 입력 데이터가 저장된 주소를 가리키는 포인터를 신규 큐 또는 기존 큐에 저장할 수 있다.
맵퍼(110)는, 포인터를 신규 큐에 저장할지 또는 기존 큐에 저장할지 결정하기 위하여 큐 테이블을 참조할 수 있다. 큐 테이블은, 큐 매니저(150)에 의하여 작성될 수 있고, 테이블 제공부(130)에 저장될 수 있다. 큐 테이블의 일 예를 도 3에 도시하였다.
도 3은 본 발명의 일 실시 예에 따른 큐 테이블을 설명하기 위한 예시도이다.
큐 테이블은, 현재 활성화된 큐의 정보, 각 큐에 저장된 포인터의 수 및 플로우 카운터 정보를 맵핑하여 저장할 수 있다.
플로우 카운터 정보는, 각 큐에 활성화된 플로우의 수를 나타내는 정보로서, 1bit 이상으로 구성된 값일 수 있다. 플로우 카운터 정보는, 해당 큐를 비활성화할 시점을 판단하기 위한 기준이 될 수 있으며, 초기값은 0일 수 있다.
다시 도 1을 참조하면, 맵퍼(110)는, 큐 테이블을 참조하여, 큐 메모리(140)에 활성화된 기존 큐들 중 플로우 카운터 정보가 임계 값 미만인 큐가 존재하는지 여부를 판단할 수 있다.
<1-1. 신규 플로우에 대한 포인터를 신규 큐에 저장하는 경우>
맵퍼(110)는, 현재 큐 메모리(140)에 활성화된 큐(기존 큐)들 중 플로우 카운터 정보가 임계 값 미만인 큐가 존재하지 않는 경우, 신규 큐의 생성을 요청하는 신호인 큐 생성 요청 신호를 큐 매니저(150)로 전송할 수 있다.
큐 매니저(150)는, 맵퍼(110)로부터 큐 생성 요청 신호가 수신되는 경우 큐 메모리(140) 내에 신규 큐를 생성하고, 신규 큐를 생성하였음을 알리는 큐 생성 완료 신호를 맵퍼(110), 분배기 매니저(170) 및 프로세서 매니저(190)로 전송할 수 있다. 큐 생성 완료 신호에는, 신규 큐에 대한 정보가 포함될 수 있다.
맵퍼(110)는, 큐 매니저(150)로부터 큐 생성 완료 신호가 수신되는 경우, 현재 수신된 입력 데이터가 저장된 주소를 가리키는 포인터를 신규 큐에 저장하고, 플로우 테이블을 갱신할 수 있다. 예를 들어, 맵퍼(110)는, 신규 플로우의 플로우 정보와 신규 큐의 큐 정보를 매핑하여 플로우 테이블에 저장할 수 있다.
맵퍼(110)는, 신규 큐에 포인터를 저장한 이후, 신규 큐에 포인터를 저장하였음을 알리는 신규 플로우 신호를 큐 매니저(150)로 전송할 수 있다.
큐 매니저(150)는, 맵퍼(110)로부터 신규 플로우 신호가 수신되는 경우, 큐 테이블을 갱신할 수 있다. 예를 들어, 큐 매니저(150)는, 신규 큐에 대한 정보를 큐 테이블에 생성할 수 있다.
<1-2. 신규 플로우에 대한 포인터를 기존 큐에 저장하는 경우>
만약, 현재 큐 메모리(140)에 활성화된 큐들 중 플로우 카운터 정보가 임계 값 미만인 큐가 있는 경우, 맵퍼(110)는, 현재 수신된 입력 데이터가 저장된 주소를 가리키는 포인터를, 플로우 카운터 정보가 임계 값 미만인 큐 중 어느 하나의 큐에 저장할 수 있다.
이 때, 맵퍼(110)는, 현재 설정된 맵핑 모드를 고려하여 포인터가 저장될 큐를 결정할 수 있다. 맵핑 모드는, 사용자에 의하여 미리 설정될 수 있으며, 예를 들어, "파워 절약 모드" 또는 "균등 분배 모드"로 구분될 수 있다. 만약, 현재 설정된 맵핑 모드가 "파워 절약 모드"에 해당하는 경우, 맵퍼(110)는, 플로우 카운터 정보가 임계 값 미만인 큐들 중에서 플로우 카운터 정보가 가장 큰 큐를, 포인터가 저장될 큐로 결정할 수 있다. 만약, 현재 설정된 맵핑 모드가 "균등 분배 모드"에 해당하는 경우, 맵퍼(110)는, 플로우 카운터 정보가 임계 값 미만인 큐들 중에서 플로우 카운터 정보가 가장 작은 큐를, 포인터가 저장될 큐로 결정할 수 있다.
맵퍼(110)는, 기존 큐에 포인터를 저장하고, 플로우 테이블을 갱신할 수 있다. 예를 들어, 맵퍼(110)는, 신규 플로우의 플로우 정보와 기존 큐의 큐 정보를 매핑하여 플로우 테이블에 저장할 수 있다.
맵퍼(110)는, 기존 큐에 포인터를 저장한 이후, 입력 데이터에 대한 포인터가 저장되었음을 알리는 큐잉 완료 신호를 큐 매니저(150)로 전송할 수 있다.
큐 매니저(150)는, 맵퍼(110)로부터 큐잉 완료 신호를 수신하는 경우, 큐 테이블을 갱신할 수 있다. 예를 들어, 큐 매니저(150)는, 큐잉 완료 신호에 대응하는 큐 정보에 맵핑된 포인터 수 및 플로우 카운터 정보를 갱신(예를 들어, 1만큼 증가)할 수 있다.
<2. 현재 수신된 입력 데이터가 신규 플로우에 해당하지 않는 경우>
만약, 현재 수신된 입력 데이터에 대한 플로우 정보와 해당 플로우 정보에 대응하는 큐 정보가 플로우 테이블에 맵핑되어 있는 경우, 맵퍼(100)는 현재 수신된 입력 데이터가 신규 플로우에 해당하지 않는다고 판단할 수 있다.
이러한 경우, 맵퍼(110)는, 플로우 테이블을 참조하여, 현재 수신된 입력 데이터가 저장된 주소를 가리키는 포인터를, 입력 데이터의 플로우와 맵핑된 큐에 저장할 수 있다.
맵퍼(110)는, 기존 큐에 포인터를 저장하고, 플로우 테이블을 갱신할 수 있다. 예를 들어, 맵퍼(110)는, 해당 플로우 정보에 맵핑된 플로우 만료 정보를 리셋할 수 있다. 플로우 만료 정보를 리셋한다는 것은, 플로우 만료 정보를 설정된 초기 값으로 변경함을 의미할 수 있다.
맵퍼(110)는, 기존 큐에 포인터를 저장한 이후, 입력 데이터에 대한 포인터가 저장되었음을 알리는 큐잉 완료 신호를 큐 매니저(150)로 전송할 수 있다.
큐 매니저(150)는, 맵퍼(110)로부터 큐잉 완료 신호가 수신되는 경우, 큐 테이블을 갱신할 수 있다. 예를 들어, 큐 매니저(150)는, 큐잉 완료 신호에 대응하는 큐 정보에 맵핑된 포인터 수를 갱신(예를 들어, 1만큼 증가)할 수 있다.
<3. 분배기 및 프로세서 배정 >
분배기 매니저(170)는, 큐 매니저(150)로부터 큐 생성 완료 신호를 수신하는 경우, 신규 큐를 분배할 분배기를 배정할 수 있다. 분배기의 배정이 완료되면, 분배기 매니저(170)는, 분배기 배정이 완료되었음을 알리는 분배기 배정 완료 신호를 큐 매니저(150)로 전송할 수 있다.
프로세서 매니저(190)는, 큐 매니저(150)로부터 큐 생성 완료 신호를 수신하는 경우, 신규 큐에 대응하는 입력 데이터를 처리할 프로세서(180)를 배정할 수 있다. 이 때, 프로세서 매니저(190)는, 기존 큐에 대응하는 입력 데이터를 처리하고 있지 않는 신규 프로세서를 활성화시키고, 신규 프로세서가 신규 큐에 대응하는 입력 데이터를 처리하도록 할 수 있다. 프로세서의 배정이 완료되면, 프로세서 매니저(190)는, 프로세서의 배정이 완료되었음을 알리는 프로세서 배정 완료 신호를 큐 매니저(150)로 전송할 수 있다.
<4. 입력 데이터 분배>
분배기(160)는, 분배기 매니저(170)가 배정한 큐에 저장된 포인터가 가리키는 입력 데이터를 데이터 메모리(120)로부터 독출하고, 독출된 입력 데이터를 설정된 분배 알고리즘에 따라 적어도 하나의 프로세서(180)에게 분배할 수 있다. 설정된 분배 알고리즘으로는, 예를 들어, 라운드 로빈(Round Robin) 또는 가중치 라운드 로빈(Weighted Round Robin) 알고리즘 등을 이용할 수 있다.
분배기(160)는, 단일 큐에 대응하는 입력 데이터를 단일 프로세서(180)에게 분배할 수 있다. 즉, 분배기(160)는, 하나의 플로우에 속하는 입력 데이터들이 다수의 프로세서(180)에게 분배되지 않도록 할 수 있다. 분배기(160)는 포인터가 가리키는 입력 데이터를 프로세서(180)에게 전송한 이후, 큐 매니저(150)에게 프로세서 분배 완료 신호를 전송할 수 있다.
큐 매니저(150)는, 프로세서 매니저(190)로부터 프로세서 분배 완료 신호가 수신되는 경우, 큐 테이블을 갱신할 수 있다. 예를 들어, 큐 매니저(150)는, 프로세서 매니저(190)로부터 프로세서 분배 완료 신호가 수신되는 경우, 해당 큐의 포인터 수를 1만큼 차감할 수 있다.
프로세서(180)는, 분배기(160)로부터 입력 데이터를 수신하고, 입력 데이터에 따른 프로세스를 수행할 수 있다. 프로세서(180)는, 단일 코어 프로세서 또는 멀티 코어 프로세서일 수 있다. 프로세서(180)는, CPU, CPU의 코어 또는 반도체 소자일 수 있다.
<5. 분배기 및 프로세서 비활성화 >
큐 매니저(150)는, 주기적으로 큐 테이블을 확인하여, 비활성화가 가능한 큐가 있는지 여부를 확인할 수 있다. 예를 들어, 큐 매니저(150)는, 큐 테이블에 저장된 큐 중에서 포인터의 수가 0이고, 플로우 카운터 정보가 0인 큐를 비활성화가 가능한 큐로 판단할 수 있다. 큐 매니저(150)는, 비활성화가 가능한 큐가 있는 경우, 해당 큐에 대한 비활성화를 요청하는 비활성화 요청 신호를 분배기 매니저(170) 및 프로세서 매니저(190)로 전송할 수 있다.
분배기 매니저(170)는, 큐 매니저(150)로부터 비활성화 요청 신호를 수신하는 경우, 분배기(160)가 비활성화가 요청된 큐에 대응하는 입력 데이터를 분배하지 않도록 할 수 있다. 분배기 매니저(170)는, 적어도 하나의 분배기(160) 중에서 입력 데이터를 분배하지 않는 분배기가 있는 경우, 해당 분배기(160)를 비활성화 시킬 수 있다.
프로세서 매니저(190)는, 큐 매니저(150)로부터 비활성화 요청 신호를 수신하는 경우, 비활성화가 요청된 큐에 대응하는 입력 데이터를 처리하는 프로세서(180)를 비활성화 시킬 수 있다. 프로세서 매니저(190)는, 파워 서플라이(미도시)로부터 프로세서(180)로 제공되는 전원을 허용 또는 차단하도록 제어하여 신규 프로세서를 활성화시키거나 기존 활성화된 프로세서를 비활성화 시킬 수 있다. 또는, 프로세서 메니저(190)는, 프로세서(180)에 가해지는 전압 및 프로세서(180)의 클럭 중 하나 이상을 조정하여 신규 프로세서를 활성화시키거나 기존 활성화된 프로세서를 비활성화 시킬 수 있다
도 4는 본 발명의 일 실시 예에 따른 플로우 기반 병렬 처리 방법을 설명하기 위한 흐름도이다. 도 4에 도시된 각 단계들은 플로우 기반 병렬 처리 장치에 포함된 각 구성 요소에 의하여 수행되나, 발명의 간결하고 명확한 설명을 위해 각 단계의 주체를 플로우 기반 병렬 처리 장치로 통칭하도록 한다. 실시 예에 따라, 도 4에 도시된 단계들 중 적어도 하나는 생략될 수 있다.
단계(401)에서, 플로우 기반 병렬 처리 장치는, 현재 수신되는 입력 데이터를 저장하고, 현재 수신된 입력 데이터가 속한 플로우를 확인할 수 있다. 플로우 기반 병렬 처리 장치는, 현재 수신된 입력 데이터가 속한 플로우를 확인하기 위하여, 입력 데이터에 포함된 식별 기준 값에 설정된 연산을 적용하여 플로우 정보를 생성할 수 있다.
단계(403)에서, 플로우 기반 병렬 처리 장치는, 플로우 테이블을 참조하여 현재 수신된 입력 데이터가 신규 플로우에 해당하는지 여부를 판단할 수 있다. 예를 들어, 플로우 기반 병렬 처리 장치는, 현재 수신된 입력 데이터의 플로우 정보가 플로우 테이블에 저장되어 있지 않은 경우, 현재 수신된 입력 데이터가 신규 플로우에 해당한다고 판단할 수 있다. 반대로, 플로우 기반 병렬 처리 장치는, 현재 수신된 입력 데이터의 플로우 정보가 플로우 테이블에 저장되어 있는 경우, 입력 데이터가 기존 플로우에 해당한다고 판단할 수 있다.
단계(405)에서, 플로우 기반 병렬 처리 장치는, 큐 테이블을 참조하여 활성화된 기존 큐들 중 플로우 카운터 정보가 임계 값 미만인 큐가 존재하는지 여부를 판단할 수 있다.
단계(407)에서, 플로우 기반 병렬 처리 장치는, 플로우 카운터 정보가 임계 값 미만인 큐가 존재하지 않는 경우, 신규 큐를 생성하고, 신규 큐와 신규 플로우를 맵핑할 수 있다.
단계(409)에서, 플로우 기반 병렬 처리 장치는, 신규 큐에 대한 분배기 및 프로세서를 배정할 수 있다. 이 때, 플로우 기반 병렬 처리 장치는, 기존 큐에 대응하는 입력 데이터를 처리하고 있지 않는 신규 프로세서를 활성화 시키고, 신규 프로세서가 신규 큐에 대응하는 입력 데이터를 처리하도록 할 수 있다.
단계(411)에서, 플로우 기반 병렬 처리 장치는, 신규 큐에 포인터를 저장할 수 있다.
단계(413)에서, 플로우 기반 병렬 처리 장치는, 플로우 테이블 및 큐 테이블을 갱신할 수 있다. 예를 들어, 플로우 기반 병렬 처리 장치는, 신규 플로우의 플로우 정보와 신규 큐의 큐 정보를 매핑하여 플로우 테이블에 저장할 수 있다. 또한, 예를 들어, 플로우 기반 병렬 처리 장치는, 신규 큐에 대한 정보를 큐 테이블에 생성할 수 있다.
단계(415)에서, 플로우 기반 병렬 처리 장치는, 입력 데이터를 프로세서에게 분배할 수 있다. 이 때, 플로우 기반 병렬 처리 장치는, 하나의 플로우에 속하는 입력 데이터가 다수의 프로세서에게 분배되지 않도록 할 수 있다.
단계(417)에서, 플로우 기반 병렬 처리 장치는, 큐 테이블을 갱신할 수 있다. 예를 들어, 플로우 기반 병렬 처리 장치는, 분배된 입력 데이터에 대응하는 큐의 포인터 수를 1만큼 차감할 수 있다.
단계(419)에서, 플로우 기반 병렬 처리 장치는, 큐에 대응하는 입력 데이터를 해당 큐에 배정된 프로세서를 통하여 처리할 수 있다.
단계(421)에서, 플로우 기반 병렬 처리 장치는, 프로세스 결과 데이터를 출력할 수 있다.
한편, 현재 수신된 입력 데이터가 기존 플로우에 해당하는 경우, 플로우 기반 병렬 처리 장치는, 단계(471)로 진행하여, 해당 기존 플로우에 맵핑된 기존 큐에, 포인터를 저장할 수 있다. 그리고, 플로우 기반 병렬 처리 장치는, 단계(413)로 진행하여, 플로우 테이블 및 큐 테이블을 갱신할 수 있다.
한편, 현재 수신된 입력 데이터가 신규 플로우에 해당하며, 플로우 카운터 정보가 임계 값 미만인 큐가 존재하는 경우, 플로우 기반 병렬 처리 장치는, 단계(451)로 진행하여, 설정된 맵핑 모드에 따라 신규 플로우에 기존 큐를 맵핑할 수 있다. 예를 들어, 플로우 기반 병렬 처리 장치는, 플로우 카운터 정보가 임계 값 미만인 큐들 중에서 플로우 카운터 정보가 가장 큰 큐를, 포인터가 저장될 큐로 결정할 수 있다. 또는, 플로우 기반 병렬 처리 장치는, 플로우 카운터 정보가 임계 값 미만인 큐들 중에서 플로우 카운터 정보가 가장 작은 큐를, 포인터가 저장될 큐로 결정할 수 있다.
그리고, 플로우 기반 병렬 처리 장치는, 단계(471)로 진행하여, 신규 플로우에 맵핑된 기존 큐에 포인터를 저장할 수 있다. 그리고, 플로우 기반 병렬 처리 장치는, 단계(413)로 진행하여 플로우 테이블 및 큐 테이블을 갱신할 수 있다.
도 5는 입력 데이터가 프로세서로 전달되는 경로를 도시한 예시도이다.
도 5를 참조하는 예에서, 제 1 큐(140a)에 대하여 제 1 분배기(160a), 제 2 분배기(160b) 및 제 1 프로세서(180a)가 배정되었다고 가정하자.
이러한 경우, 제 1 큐(140a)에 대응하는 입력 데이터는, 제 1 분배기(160a) 및 제 2 분배기(160b)을 통해 제 1 프로세서(180a)로 전송될 수 있다. 즉, 제 1 큐(140a)에 대응하는 입력 데이터가 제 1 프로세서(180a) 이외의 다른 프로세서(180b, 180c)로 전송되지 않는다. 즉, 플로우 기반 병렬 처리 장치는, 각 큐에 대응하는 입력 데이터를 해당 큐에 배정된 단일 프로세서(또는 코어)를 통하여 처리할 수 있다. 따라서, 입력 데이터의 처리 순서가 뒤바뀌지 않을 수 있다.
이상에서 설명된 본 발명의 실시 예들은 임의의 다양한 방법으로 구현될 수 있다. 예를 들어, 본 발명의 실시 예들은 하드웨어, 소프트웨어 또는 그 조합을 이용하여 구현될 수 있다. 소프트웨어로 구현되는 경우에, 다양한 운영 체제 또는 플랫폼을 이용하는 하나 이상의 프로세서 상에서 실행되는 소프트웨어로서 구현될 수 있다. 추가적으로, 그러한 소프트웨어는 다수의 적합한 프로그래밍 언어들 중에서 임의의 것을 사용하여 작성될 수 있고, 또한 프레임워크 또는 가상 머신에서 실행 가능한 기계어 코드 또는 중간 코드로 컴파일 될 수 있다.
또한, 본 발명의 실시 예들이 하나 이상의 프로세서 상에서 실행되는 경우 이상에서 논의된 본 발명의 다양한 실시 예들을 구현하는 방법을 수행하기 위한 하나 이상의 프로그램이 기록된 프로세서 판독 가능 매체(예를 들어, 메모리, 플로피 디스크, 하드 디스크, 콤팩트 디스크, 광학 디스크 또는 자기 테이프 등)로 구현될 수 있다.

Claims (14)

  1. 하나 이상의 큐를 저장하는 큐 메모리;
    데이터를 저장하는 데이터 메모리;
    상기 데이터의 플로우 정보에 기초하여, 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 맵퍼;
    입력되는 데이터에 따른 프로세스를 수행하는 복수의 프로세서; 및
    상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 독출하고, 상기 독출된 데이터 중 단일 큐에 대응하는 데이터를 상기 복수의 프로세서 중 단일 프로세서로 전송하는 분배기
    를 포함하는 플로우 기반 병렬 처리 장치.
  2. 제 1 항에 있어서, 상기 맵퍼는,
    상기 데이터가 신규 플로우에 해당하는 경우, 상기 신규 플로우를 신규 큐 또는 기존 큐에 맵핑하는
    플로우 기반 병렬 처리 장치.
  3. 제 2 항에 있어서, 상기 맵퍼는,
    플로우 카운터 정보가 임계 값 미만인 기존 큐가 존재하지 않는 경우, 상기 신규 플로우와 신규 큐를 맵핑하는
    플로우 기반 병렬 처리 장치.
  4. 제 3 항에 있어서,
    상기 신규 큐에 대한 분배기를 배정하는 분배기 매니저; 및
    상기 신규 큐에 단일 프로세서를 배정하는 프로세서 매니저
    를 더 포함하는 플로우 기반 병렬 처리 장치.
  5. 제 2 항에 있어서, 상기 맵퍼는,
    플로우 카운터 정보가 임계 값 미만인 기존 큐가 존재하는 경우, 해당 기존 큐와 상기 신규 플로우를 맵핑하는
    플로우 기반 병렬 처리 장치.
  6. 제 5 항에 있어서, 상기 맵퍼는,
    플로우 카운터 정보가 임계 값 미만인 기존 큐가 다수인 경우, 해당 기존 큐들 중 가장 적은 수의 포인터가 저장된 큐와 상기 신규 플로우를 맵핑하는
    플로우 기반 병렬 처리 장치.
  7. 제 5 항에 있어서, 상기 맵퍼는,
    플로우 카운터 정보가 임계 값 미만인 기존 큐가 다수인 경우, 해당 기존 큐들 중 가장 많은 수의 포인터가 저장된 큐와 상기 신규 플로우를 맵핑하는
    플로우 기반 병렬 처리 장치.
  8. 플로우 기반 병렬 처리 장치가 데이터 병렬 처리를 수행하는 방법으로서,
    수신되는 데이터를 데이터 메모리에 저장하는 단계;
    상기 데이터의 플로우 정보에 기초하여, 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 단계;
    상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 독출하는 단계; 및
    상기 독출된 데이터 중 단일 큐에 대응하는 데이터를 단일 프로세서로 전송하는 단계
    를 포함하는 플로우 기반 병렬 처리 방법.
  9. 제 8 항에 있어서,
    상기 데이터가 신규 플로우에 해당하는 경우, 상기 신규 플로우를 신규 큐 또는 기존 큐에 맵핑하는 단계
    를 더 포함하는 플로우 기반 병렬 처리 방법.
  10. 제 9 항에 있어서,
    플로우 카운터 정보가 임계 값 미만인 기존 큐가 존재하지 않는 경우, 상기 신규 플로우와 신규 큐를 맵핑하는 단계
    를 포함하는 플로우 기반 병렬 처리 방법.
  11. 제 10 항에 있어서,
    상기 신규 큐에 대한 분배기를 배정하는 단계; 및
    상기 신규 큐에 대한 단일 프로세서를 배정하는 단계
    를 더 포함하는 플로우 기반 병렬 처리 방법.
  12. 제 9 항에 있어서,
    플로우 카운터 정보가 임계 값 미만인 기존 큐가 존재하는 경우, 해당 기존 큐와 상기 신규 플로우를 맵핑하는 단계
    를 포함하는 플로우 기반 병렬 처리 방법.
  13. 제 12 항에 있어서,
    플로우 카운터 정보가 임계 값 미만인 기존 큐가 다수인 경우, 해당 기존 큐들 중 가장 적은 수의 포인터가 저장된 큐와 상기 신규 플로우를 맵핑하는 단계
    를 포함하는 플로우 기반 병렬 처리 방법.
  14. 제 12 항에 있어서,
    플로우 카운터 정보가 임계 값 미만인 기존 큐가 다수인 경우, 해당 기존 큐들 중 가장 많은 수의 포인터가 저장된 큐와 상기 신규 플로우를 맵핑하는 단계
    를 포함하는 플로우 기반 병렬 처리 방법.
KR1020150159702A 2015-11-13 2015-11-13 플로우 기반 병렬 처리 방법 및 장치 KR101892920B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150159702A KR101892920B1 (ko) 2015-11-13 2015-11-13 플로우 기반 병렬 처리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150159702A KR101892920B1 (ko) 2015-11-13 2015-11-13 플로우 기반 병렬 처리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170056773A true KR20170056773A (ko) 2017-05-24
KR101892920B1 KR101892920B1 (ko) 2018-08-30

Family

ID=59051202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150159702A KR101892920B1 (ko) 2015-11-13 2015-11-13 플로우 기반 병렬 처리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101892920B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113301104A (zh) * 2021-02-09 2021-08-24 阿里巴巴集团控股有限公司 数据处理系统及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030058876A1 (en) * 2001-09-25 2003-03-27 Connor Patrick L. Methods and apparatus for retaining packet order in systems utilizing multiple transmit queues
US20060168217A1 (en) * 2004-12-16 2006-07-27 International Business Machines Corporation Method, computer program product, and data processing system for data queuing prioritization in a multi-tiered network
US7765405B2 (en) 2005-02-25 2010-07-27 Microsoft Corporation Receive side scaling with cryptographically secure hashing
KR20110051121A (ko) * 2009-11-09 2011-05-17 한국전자통신연구원 크로스 플로우 병렬 처리 방법 및 시스템
KR20120053357A (ko) * 2010-11-17 2012-05-25 한국전자통신연구원 다계층 데이터 처리 장치 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030058876A1 (en) * 2001-09-25 2003-03-27 Connor Patrick L. Methods and apparatus for retaining packet order in systems utilizing multiple transmit queues
US20060168217A1 (en) * 2004-12-16 2006-07-27 International Business Machines Corporation Method, computer program product, and data processing system for data queuing prioritization in a multi-tiered network
US7765405B2 (en) 2005-02-25 2010-07-27 Microsoft Corporation Receive side scaling with cryptographically secure hashing
KR20110051121A (ko) * 2009-11-09 2011-05-17 한국전자통신연구원 크로스 플로우 병렬 처리 방법 및 시스템
KR20120053357A (ko) * 2010-11-17 2012-05-25 한국전자통신연구원 다계층 데이터 처리 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113301104A (zh) * 2021-02-09 2021-08-24 阿里巴巴集团控股有限公司 数据处理系统及方法
CN113301104B (zh) * 2021-02-09 2024-04-12 阿里巴巴集团控股有限公司 数据处理系统及方法

Also Published As

Publication number Publication date
KR101892920B1 (ko) 2018-08-30

Similar Documents

Publication Publication Date Title
US11861203B2 (en) Method, apparatus and electronic device for cloud service migration
US10572290B2 (en) Method and apparatus for allocating a physical resource to a virtual machine
CN109983441B (zh) 用于批作业的资源管理
US9608917B1 (en) Systems and methods for achieving high network link utilization
US7765405B2 (en) Receive side scaling with cryptographically secure hashing
CN109726005B (zh) 用于管理资源的方法、服务器系统和计算机可读介质
CN106411558B (zh) 一种数据流量限制的方法及系统
KR20160035972A (ko) 가상 머신들 사이에 서비스 체인 흐름 패킷들을 라우팅하기 위한 기술들
CN107846443B (zh) 网络中的分布式处理
US20220124003A1 (en) Control apparatus, control method and non-transitory computer-readable medium
CN105264509A (zh) 融合网络中的自适应中断联合
KR20200076700A (ko) 성능 기반 패킷 스케줄러를 제공하기 위한 장치 및 방법
US9602364B2 (en) Dynamic and adaptive quota shares
US9141436B2 (en) Apparatus and method for partition scheduling for a processor with cores
US8725873B1 (en) Multi-server round robin arbiter
US9952911B2 (en) Dynamically optimized device driver protocol assist threads
US11734172B2 (en) Data transmission method and apparatus using resources in a resource pool of a same NUMA node
JPWO2014118969A1 (ja) 仮想計算機システムおよび仮想計算機システムのデータ転送制御方法
CN110235106B (zh) 完成侧客户端节流
CN109729113B (zh) 管理专用处理资源的方法、服务器系统和计算机程序产品
WO2017024965A1 (zh) 一种数据流量限制的方法及系统
KR101953546B1 (ko) 가상 스위칭 장치 및 방법
US20140089624A1 (en) Cooperation of hoarding memory allocators in a multi-process system
KR101892920B1 (ko) 플로우 기반 병렬 처리 방법 및 장치
US10270715B2 (en) High performance network I/O in a virtualized environment

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant