KR102013867B1 - 병렬 처리 장치 및 방법 - Google Patents

병렬 처리 장치 및 방법 Download PDF

Info

Publication number
KR102013867B1
KR102013867B1 KR1020150110621A KR20150110621A KR102013867B1 KR 102013867 B1 KR102013867 B1 KR 102013867B1 KR 1020150110621 A KR1020150110621 A KR 1020150110621A KR 20150110621 A KR20150110621 A KR 20150110621A KR 102013867 B1 KR102013867 B1 KR 102013867B1
Authority
KR
South Korea
Prior art keywords
queue
flow
activated
data
stored
Prior art date
Application number
KR1020150110621A
Other languages
English (en)
Other versions
KR20170018138A (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 KR1020150110621A priority Critical patent/KR102013867B1/ko
Priority to US15/180,815 priority patent/US10142245B2/en
Publication of KR20170018138A publication Critical patent/KR20170018138A/ko
Application granted granted Critical
Publication of KR102013867B1 publication Critical patent/KR102013867B1/ko

Links

Images

Classifications

    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • G06F9/3855
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Abstract

본 발명의 일 실시예에 따른 병렬 처리 장치는 하나 이상의 큐를 저장하는 큐 메모리, 데이터를 저장하는 데이터 메모리, 데이터를 플로우로 분류하고, 상기 플로우와 맵핑된 큐에 데이터의 포인터를 저장하는 맵퍼, 데이터에 따른 프로세스를 수행하는 복수의 프로세서 및 큐에 저장된 포인터를 참조하여 데이터 메모리에서 데이터를 추출하고, 데이터를 프로세서로 전송하는 분배기를 포함하되, 분배기는 단일 큐에 상응하는 데이터를 단일 프로세서로 전송하는 것을 특징으로 한다.

Description

병렬 처리 장치 및 방법{APPARATUS AND METHDO FOR PARALLEL PROCESSING}
본 발명은 멀티 프로세서 또는 멀티 코어 환경의 병렬 처리 기술에 관한 것이다.
멀티 코어 환경의 데이터 처리 시스템은 네트워크 트래픽 성능을 고속화 하는 처리 기술이다. 이러한 데이터 처리 시스템은 순서가 설정된 데이터를 하나 이상의 멀티 코어가 동시에 병렬로 처리하더라도 해당 데이터의 순서의 처리 순서가 유지하도록 할 필요가 있다.
이 문제를 해결한 기술은 병렬 네트워크 프로세서 어레이 (PNPA: Parallel Network Processor Array) 및 수신 측 스케일링(RSS: Receive Side Scaling) 기술이다. PNPA 및 RSS 기술은 멀티 프로세서 기반의 라우터에서 수신한 네트워크 트래픽에 대해 플로우 식별 기능을 수행하여, 네트워크 트래픽을 복수의 플로우로 구분하고, 각 플로우에 따른 처리를 상이한 프로세서가 수행하도록 한다. 또한, 해당 기술에서는 동일 플로우로 식별된 트래픽들을 동일한 프로세서가 계속 처리하도록 할당하여, 멀티 프로세서 환경에서 네트워크 트래픽이 멀티 프로세서에 의해 분산 처리되어 고속으로 동시에 병렬 처리되도록 한다. 그러나, 해당 기술은 네트워크 트래픽의 상황과는 상관없이 플로우에 대한 프로세서 매핑이 고정되어, 네트워크 트래픽에 따른 프로세서 스케일링을 제공할 수 없다.
상술한RSS 기술을 개선하여 프로세서에 대한 스케일링을 제공하는 기술은 DRQB(Dynamic Receive Queue Balancing With High And Low Thresholds)이다. DRQB 기술에서는 트래픽의 양에 따라 프로세서에 동작되는 응용 프로그램을 다른 프로세서에 할당하고, 해당 응용 프로그램에서 처리되던 데이터를 새로운 프로세서의 처리 큐로 동적으로 할당함으로써, 트래픽의 양에 따라 프로세서의 스케일링을 제공하는 기술이다. 그러나, DRQB 기술은 프로세서의 스케일링 과정에서 데이터의 재순서화(Re-Ordering) 문제를 내포하고 있으며, 따라서 효과적인 프로세서(또는 코어)의 스케일링을 제공하지 못한다.
본 발명이 해결하고자 하는 과제는 멀티 프로세서 환경 또는 멀티 코어 환경에서 순서를 가지는 데이터의 병렬 처리를 수행하고, 데이터의 재순서화 문제를 제기하지 않으면서, 네트워크 트래픽의 상황에 따른 프로세서(또는 코어)의 스케일링을 제공하는 병렬 처리 장치를 제공하는 것이다.
본 발명의 일 측면에 따르면, 하나 이상의 큐를 저장하는 큐 메모리; 데이터를 저장하는 데이터 메모리; 상기 데이터를 플로우로 분류하고, 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 맵퍼; 상기 데이터에 따른 프로세스를 수행하는 복수의 프로세서; 및 상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 추출하고, 상기 데이터를 상기 프로세서로 전송하는 분배기;를 포함하되, 상기 분배기는 단일 큐에 상응하는 입력 데이터를 단일 프로세서로 전송하는 것을 특징으로 하는 병렬 처리 장치가 제공된다.
상기 병렬 처리 장치는 플로우 정보와 맵핑된 큐 정보를 포함하는 플로우 테이블을 저장하는 테이블 제공부; 를 더 포함하되, 상기 맵퍼는 상기 플로우 테이블을 참조하여, 상기 플로우와 맵핑된 큐를 확인할 수 있다.
상기 맵퍼는 상기 플로우 테이블에 상기 플로우와 기존 활성화된 큐가 매핑되어 있지 않은 경우, 상기 플로우와 신규 큐 또는 기존 활성화된 큐를 맵핑할 수 있다.
상기 맵퍼는 기존 활성화된 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는 경우, 상기 플로우와 상기 신규 큐를 맵핑하고, 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑할 수 있다.
상기 병렬 처리 장치는 상기 맵퍼가 상기 플로우와 상기 신규 큐를 맵핑하는 경우, 상기 신규 큐에 대한 분배기를 배정하는 분배기 매니저; 및 상기 신규 큐에 대한 단일 프로세서를 배정하는 프로세서 매니저;를 더 포함할 수 있다.
상기 맵퍼는, 기존 활성화된 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하고 맵핑 모드가 파워 절약 모드인 경우, 기존 활성화된 각 큐 중 가장 적은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑할 수 있다.
상기 맵퍼는, 기존 활성화된 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하고 맵핑 모드가 균등 분배 모드인 경우, 기존 활성화된 각 큐 중 가장 많은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑할 수 있다.
본 발명의 다른 측면에 따르면, 병렬 처리 장치가 병렬 처리를 수행하는 방법에 있어서, 데이터를 수신하고, 상기 데이터를 데이터 메모리에 저장하는 단계; 상기 데이터를 플로우로 분류하는 단계; 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 단계; 상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 추출하고, 상기 데이터를 상기 큐에 대해 배정된 프로세서로 전송하는 단계; 및 상기 큐에 배정된 상기 프로세서를 통해 상기 데이터에 상응하는 프로세스를 수행하는 단계; 를 포함하는 병렬 처리 방법이 제공된다.
상기 병렬 처리 방법은 플로우 정보와 맵핑된 큐 정보를 포함하는 플로우 테이블을 참조하여, 상기 플로우와 맵핑된 큐를 확인하는 단계를 더 포함할 수 있다.
상기 병렬 처리 방법은 상기 플로우 테이블에 상기 플로우와 기존 활성화된 큐가 매핑되어 있지 않은 경우, 상기 플로우와 신규 큐 또는 기존 활성화된 큐를 맵핑하는 단계를 더 포함할 수 있다.
상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않은 경우, 상기 플로우와 신규 큐 또는 기존 활성화된 큐를 맵핑하는 단계는, 상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는 경우, 상기 플로우와 상기 신규 큐를 맵핑하는 단계; 및 상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑하는 단계를 포함할 수 있다.
상기 병렬 처리 방법은 상기 플로우가 상기 신규 큐에 맵핑되는 경우, 상기 신규 큐에 대한 분배기를 배정하는 단계; 및 상기 신규 큐에 대한 단일 프로세서를 배정하는 단계;를 더 포함할 수 있다.
상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑하는 단계는, 맵핑 모드가 파워 절약 모드인 경우, 기존 활성화된 각 큐 중 가장 적은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 단계일 수 있다.
상기 플로우 테이블에 상기 플로우에 상응하는 플로우 정보가 저장되어 있지 않고 기존 활성화된 각 큐 중 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 상기 플로우와 기존 활성화된 큐를 맵핑하는 단계는, 맵핑 모드가 균등 분배 모드인 경우, 기존 활성화된 각 큐 중 가장 많은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 단계일 수 있다.
상술한 바와 같이 본 발명의 일 실시예에 따르면, 멀티 프로세서 환경 또는 멀티 코어 환경에서 순서를 가지는 데이터의 병렬 처리를 수행할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 데이터의 재순서화 문제를 제기하지 않으면서, 네트워크 트래픽의 상황에 따른 프로세서(또는 코어)의 스케일링을 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 병렬 처리 장치를 예시한 도면.
도 2는 본 발명의 일 실시예에 따른 병렬 처리 장치가 병렬 처리를 수행하는 과정을 예시한 순서도.
도 3은 본 발명의 일 실시예에 따른 병렬 처리 장치의 각 큐에 대한 입력데이터가 프로세서로 전달되는 경로를 예시한 도면.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소로 신호를 “전송한다”로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되어 신호를 전송할 수 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 신호를 전송할 수도 있다고 이해되어야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 병렬 처리 장치를 예시한 도면이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 병렬 처리 장치는 맵퍼(110), 데이터 메모리(120), 테이블 제공부(130), 큐 메모리(140), 큐 매니저(150), 복수의 분배기(160), 분배기 매니저(170), 복수의 프로세서(180), 프로세서 매니저(190)를 포함한다.
맵퍼(110)는 네트워크를 통해 데이터(이하, 맵퍼(110)가 수신한 데이터를 입력 데이터라 지칭)를 수신하고, 플로우 테이블을 참조하여 입력 데이터를 속성에 따라 미리 지정된 플로우 중 어느 하나로 분류하고, 입력 데이터를 데이터 메모리(120)에 저장하고, 입력 데이터의 플로우와 맵핑된 큐에 입력 데이터가 저장된 주소를 나타내는 포인터를 저장한다. 이 때, 플로우 테이블은 각 플로우와 각 큐의 맵핑 관계를 나타내는 테이블이다. 예를 들어, 플로우 테이블은 SIP(Source Internet Protocol) 주소 값, DIP(Destination Internet Protocol) 주소 값, SPORT(Source Port) 필드 값, DPORT(Destination Port) 필드 값, PROTOCOL 필드 값 등과 같은 입력 데이터의 헤더에 포함된 값이나 입력 데이터의 페이로드 정보에 포함된 값(이하, 식별 기준 값이라 지칭)에 대해 비트 마스킹 처리한 값인 플로우 정보와 하나의 큐를 타 큐에 대해 식별할 수 있는 식별 정보인 큐 정보를 맵핑하여 저장하는 테이블일 수 있다. 맵퍼(110)는 플로우 테이블에서 식별 기준 값에 대해 비트 마스킹 처리한 값에 맵핑된 큐 정보를 검색하고, 큐 정보에 따른 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
상술한 바와 달리, 플로우 테이블은 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값인 플로우 정보와 큐 정보를 맵핑하여 저장하는 테이블 일 수 있다. 맵퍼(110)는 플로우 테이블에 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값에 맵핑된 큐 정보를 검색하고, 큐 정보에 상응하는 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
또한, 상술한 두 가지 설명과 달리, 플로우 테이블은 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값인 플로우 정보를 주소로 하였을 때, 해당 주소에 큐 정보를 저장하는 테이블일 수 있다. 맵퍼(110)는 식별 기준 값에 대해 해시 함수를 적용하여 생성한 지정된 크기의 값인 플로우 정보를 주소로 하는 저장 영역에 저장된 큐 정보에 상응하는 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
또한, 맵퍼(110)는 플로우 테이블에 각 플로우에 대한 플로우 만료 정보를 플로우 정보에 맵핑하여 저장할 수 있다. 플로우 만료 정보는 1 bit 이상으로 구성된 값일 수 있고, 각 플로우를 비활성화할 시점을 판단하기 위한 기준이 되는 정보이다.
즉, 맵퍼(110)는 입력 데이터에 상응하는 플로우 정보와 큐 정보가 맵핑되어 있는 경우, 해당 플로우 정보에 매핑된 큐 정보를 추출하고, 입력 데이터에 상응하는 포인터를 해당 큐 정보에 대응하는 큐에 저장한다. 맵퍼(110)는 입력 데이터에 상응하는 플로우 정보 와 큐 정보가 맵핑되어 있지 않은 경우, 현재 큐 메모리(140)에 활성화된 각 큐에 저장된 포인터의 수가 모두 미리 지정된 임계값을 초과하는지 판단한다. 맵퍼(110)는 현재 큐 메모리(140)에 활성화된 각 큐에 저장된 포인터의 수가 모두 미리 지정된 임계값을 초과하는 경우, 신규 큐의 생성을 요청하는 큐 생성 요청 신호를 큐 매니저(150)로 전송한다. 맵퍼(110)는 큐 매니저(150)로부터 큐 정보를 수신하는 경우, 신규 큐에 입력 데이터에 상응하는 포인터를 저장한다. 또는, 맵퍼(110)는 현재 큐 메모리(140)에 활성화된 각 큐에 저장된 포인터의 수가 모두 미리 지정된 임계값을 초과하지 않는 경우, 현재 큐 메모리(140)에 활성화된 큐 중 어느 하나에 입력 데이터에 상응하는 포인터를 저장한다. 이 때, 맵퍼(110)는 미리 설정된 매핑 모드가 "파워 절약 모드"일 경우, 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 큐 중 가장 많은 포인터가 저장되어 있는 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다. 맵퍼(110)는 미리 설정된 매핑 모드가 "균등 분배 모드"일 경우, 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 큐 중 가장 적은 포인터가 저장되어 있는 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다. 이 때, 매핑 모드는 사용자에 의해 미리 설정되는 모드로써, 포인터가 큐에 저장되는 방식을 상술한 "파워 절약 모드" 및 "균등 분배 모드"로 구분하여 나타낸다. 맵퍼(110)는 포인터를 큐에 저장한 이후, 각 플로우 정보와 큐 정보를 맵핑하여 플로우 테이블에 저장하는 갱신 과정을 수행하고, 큐 매니저(150)로 입력 데이터에 대한 포인터의 큐잉이 완료됨을 알리는 큐잉 완료 신호를 전송한다. 또한, 맵퍼(110)는 입력 데이터에 상응하는 플로우가 신규 플로우인 경우(플로우 정보와 큐 정보가 맵핑되어 있지 않은 경우)에 입력 데이터에 대한 큐잉을 완료한 후, 신규 플로우의 포인터를 큐잉함을 알리는 신규 플로우 신호를 큐 매니저(150)로 전송한다.
또한, 맵퍼(110)는 입력 데이터에 상응하는 포인터를 해당 큐 정보에 대응하는 큐에 저장하는 경우, 입력 데이터에 상응하는 플로우 정보에 맵핑된 플로우 만료 정보를 미리 지정된 수치로 리셋(reset)한다.
데이터 메모리(120)는 맵퍼(110)로부터 입력 데이터를 수신하는 경우, 입력 데이터를 저장한다.
테이블 제공부(130)는 플로우 테이블을 저장하고, 맵퍼(110)의 요청에 따라 플로우 테이블을 검색하거나 플로우 테이블을 갱신한다.
큐 메모리(140)는 하나 이상의 큐를 통해 입력 데이터에 상응하는 포인터를 저장한다.
큐 매니저(150)는 맵퍼(110)로부터 큐 생성 요청 신호를 수신하는 경우, 큐 메모리(140) 내에 신규 큐를 생성하고, 신규 큐의 생성이 완료됨을 알리는 큐 생성 완료 신호를 분배기 매니저(170) 및 프로세서 매니저(190)로 전송한다. 큐 매니저(150)는 분배기 매니저(170) 및 프로세서 매니저(190)로부터 신규 큐에 저장된 데이터를 분배할 분배기(160) 또는 신규 큐에 저장된 데이터를 처리할 프로세서(180)의 배정이 완료됨을 알리는 배정 완료 신호를 수신하는 경우, 테이블 제공부(130)에 신규 큐에 상응하는 큐 정보를 저장하도록 큐 테이블을 갱신한다. 이 때, 큐 테이블은 현재 활성화된 큐 정보와 각 큐에 저장된 포인터의 수 및 큐 만료 정보를 맵핑하여 저장하는 테이블일 수 있다. 큐 만료 정보는 1bit 이상으로 구성된 값일 수 있고, 각 큐를 비활성화할 시점을 판단하기 위한 기준이 되는 정보로써, 초기값은 0일 수 있다. 큐 매니저(150)는 큐 테이블을 갱신한 이후, 신규 생성된 큐 정보를 맵퍼(110)로 전송한다. 또한, 큐 매니저(150)는 맵퍼(110)로부터 큐잉 완료 신호를 수신하는 경우, 큐잉 완료 신호에 상응하는 큐에 큐잉된 포인터의 수를 갱신(1만큼 증가)할 수 있다. 큐 매니저(150)는 맵퍼(110)로부터 신규 플로우 신호를 수신하는 경우, 큐 만료 정보를 1만큼 증가시킨다.
하나 이상의 분배기(160)는 하나 이상의 큐에 저장된 포인터에 상응하는 입력 데이터를 데이터 메모리(120)로부터 추출하고, 라운드 로빈(Round Robin), 가중치 라운드 로빈(Weighted Round Robin) 등의 분배 정책에 따라 입력 데이터를 하나 이상의 프로세서(180)로 분배한다. 이 때, 분배기(160)는 단일 큐에 해당하는 플로우에 속하는 입력 데이터를 단일 프로세서(180)로 분배할 수 있다. 즉, 분배기(160)는 단일 큐에 해당하는 플로우에 속하는 입력 데이터를 상이한 복수의 프로세서(180)로 분배하지 않는다. 이 때, 분배기(160)는 큐에 저장된 포인터에 상응하는 입력 데이터를 프로세서(180)로 전송한 이후, 큐 매니저(150)로 분배 완료 신호를 전송한다. 이후, 큐 매니저(150)는 분배 완료 신호를 수신하는 경우, 큐 테이블에 저장된 해당 큐에 대응하는 포인터의 수를 차감할 수 있다.
분배기 매니저(170)는 큐 매니저(150)로부터 신규 큐에 대한 큐 생성 완료 신호를 수신하는 경우, 신규 큐를 분배할 분배기를 배정한다. 분배기 매니저(170)는 분배기의 배정 후, 배정 완료 신호를 큐 매니저(150)로 전송한다. 분배기(160)는 분배기 매니저(170)에 따라 배정된 큐에 대응하는 입력 데이터를 하나 이상의 프로세서(180)로 분배할 수 있다.
하나 이상의 프로세서(180)는 입력 데이터를 분배기(160)로부터 수신하고, 입력 데이터에 따른 처리 과정을 수행한다. 이 때, 프로세서(180)는 단일 큐에 대응하는 모든 플로우의 데이터를 처리할 수 있는 경우, 플로우의 수에 상관없이 해당 플로우의 모든 데이터를 처리할 수 있다. 반대로, 프로세서(180)가 단일 큐에 대응하는 모든 플로우의 데이터를 처리할 수 없는 경우, 큐 매니저(150)는 신규 큐를 큐 메모리(140) 상에 생성하고, 신규 큐의 생성에 따른 큐 생성 완료 신호를 분배기 매니저(170) 및 프로세서 매니저(190)로 전송할 수 있다. 이 때, 큐 매니저(150)는 큐 테이블을 참조하여 단일 큐에 저장된 포인터의 수가 지정된 임계값을 초과하는 경우, 프로세서(180)가 단일 큐에 대응하는 모든 플로우의 데이터를 처리할 수 없는 것으로 판단할 수 있다. 또한, 큐 메니저(150)는 큐 테이블을 참조하여 단일 큐에 저장된 포인터의 수가 지정된 임계값 이하인 경우, 프로세서(180)가 단일 큐에 대응하는 모든 플로우의 데이터를 처리할 수 있는 것으로 판단할 수 있다.
복수의 프로세서(180)는 분배기(160)로부터 데이터를 수신하고, 수신한 데이터에 따른 프로세스를 수행한다. 이 때, 본 발명의 상세한 설명에서는 복수의 프로세서를 포함하는 병렬 처리 장치를 예시하였지만, 병렬 처리 장치는 복수의 코어를 포함하는 하나 이상의 멀티코어 프로세서를 포함할 수 있고, 도 1에서 예시한 각 프로세서(180)는 단일 코어를 지칭할 수 있다. 프로세서(180)는 입력 데이터에 포함된 처리 명령어를 실행시키는 CPU, CPU의 코어 또는 반도체 소자일 수 있다.
프로세서 매니저(190)는 큐 매니저(150)로부터 신규 큐에 대한 큐 생성 완료 신호를 수신하는 경우, 신규 큐에 따른 입력 데이터를 처리할 프로세서(180)를 배정한다. 이 때, 프로세서 매니저(190)는 신규 큐에 대해서는 기존 큐의 입력 데이터를 처리하고 있지 않는 신규 프로세서를 활성화시키고, 신규 프로세서가 신규 큐에 상응하는 입력 데이터를 처리하도록 할 수 있다.
맵퍼(110)는 주기적으로 플로우 테이블의 플로우 만료 정보를 참조하여, 비활성화가 가능한 플로우에 대해서 플로우 테이블에서 해당 플로우에 상응하는 플로우 정보, 큐 정보 및 플로우 만료 정보를 초기화하여 비활성화 시킨다. 이 때, 맵퍼(110)는 주기적으로 플로우 테이블의 각 플로우에 대한 플로우 만료 정보를 1만큼 차감하고, 플로우 만료 정보가 0인 플로우를 비활성화 가능한 플로우로 판단할 수 있다.
또한, 맵퍼(110)는 큐 테이블에 저장된 큐 만료 정보 중 플로우 만료 정보가 0인 플로우가 맵핑된 큐에 대한 큐 만료 정보를 1만큼 차감할 수 있다.
큐 매니저(150)는 주기적으로 큐 테이블을 참조하여, 비활성화가 가능한 큐를 확인한다. 예를 들어, 큐 매니저(150)는 각 큐 중 큐 테이블에 저장된 포인터의 수가 0이고, 큐 만료 정보가 0인 큐를 비활성화가 가능한 큐로 판단할 수 있다. 큐 매니저(150)는 전체 큐 중 어느 하나의 비활성화가 가능할 경우, 해당 큐에 대한 비활성화를 요청하는 비활성화 요청 신호를 분배기 매니저(170) 및 프로세서 매니저(190)로 전송한다.
분배기 매니저(170)는 비활성화 요청 신호를 수신하는 경우, 하나 이상의 분배기(160)가 해당 큐에 상응하는 입력 데이터를 분배하는 것을 중단하도록 할 수 있다. 또한, 분배기 매니저(170)는 하나 이상의 분배기(160)가 입력 데이터를 분배하는 과정을 수행하지 않는 경우, 해당 분배기(160)를 비활성화 시킬 수 있다.
프로세서 매니저(190)는 비활성화 요청 신호를 수신하는 경우, 비활성화가 요청된 큐에 대한 입력 데이터를 처리하는 프로세서(180)를 비활성화 시킨다. 이 때, 프로세서 매니저(190)는 파워 서플라이(미도시)로부터 프로세서(180)로 제공되는 전원을 허용 또는 차단하도록 제어하여 신규 프로세서를 활성화시키거나 기존 활성화된 프로세서를 비활성화 시킬 수 있다. 또는 프로세서 메니저(190)는 프로세서(180)에 가해지는 전압 및 프로세서의 클럭 중 하나 이상을 조정하여 신규 프로세서를 활성화시키거나 기존 활성화된 프로세서를 비활성화 시킬 수 있다
도 2는 본 발명의 일 실시예에 따른 병렬 처리 장치가 병렬 처리를 수행하는 과정을 예시한 순서도이고, 도 3은 본 발명의 일 실시예에 따른 병렬 처리 장치의 각 큐에 대한 입력데이터가 프로세서로 전달되는 경로를 예시한 도면이다. 이하 설명하는 각 과정은 병렬 처리 장치에 포함된 각 기능부에 의해 수행되는 과정이나, 발명의 간결하고 명확한 설명을 위해 각 과정의 주체를 병렬 처리 장치로 통칭하도록 한다.
도 2를 참조하면, 단계 210에서 병렬 처리 장치는 입력 데이터를 수신한다.
단계 220에서 병렬 처리 장치는 입력 데이터를 속성에 따라 하나 이상의 플로우로 분류한다. 예를 들어, 병렬 처리 장치는 SIP, DIP, SPORT, DPORT, PROTOCOL 등과 같은 입력 데이터의 헤더에 포함된 값에 대해 특정 비트 마스킹 처리가 된 값에 따라 입력 데이터를 플로우 중 어느 하나로 분류할 수 있다. 또는 병렬 처리 장치는 SIP, DIP, SPORT, DPORT, PROTOCOL 등과 같은 입력 데이터의 헤더에 포함된 값에 대해 해시 함수를 적용하여 생성한 값에 따라 입력 데이터를 플로우 중 어느 하나로 분류할 수 있다. 이 때, 병렬 처리 장치는 각 플로우에 상응하는 입력 데이터를 데이터 메모리(120)에 저장할 수 있다.
단계 230에서 병렬 처리 장치는 입력 데이터가 신규 플로우에 해당하는지 판단한다. 예를 들어, 병렬 처리 장치는 플로우 테이블에 입력 데이터에 상응하는 플로우 정보와 큐 정보가 맵핑되어 있는 여부에 따라 입력 데이터가 신규 플로우에 해당하는지 판단할 수 있다.
단계 230에서 입력 데이터가 신규 플로우에 해당하지 않는 경우, 단계 240에서 병렬 처리 장치는 기존 활성화된 플로우로써 입력 데이터를 큐에 맵핑한다. 예를 들어, 병렬 처리 장치는 입력 데이터에 상응하는 플로우 정보가 플로우 테이블에 저장되어 있는 경우, 해당 플로우 정보에 매핑된 큐 정보를 추출하고, 해당 큐 정보에 대응하는 큐에 입력 데이터에 상응하는 포인터를 저장할 수 있다.
단계 230에서 입력 데이터가 신규 플로우에 해당하는 경우, 단계 245에서 병렬 처리 장치는 큐 테이블을 참조하여 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는지 판단한다.
단계 245에서 각 큐에 저장된 포인터의 수가 모두 지정된 임계값을 초과하는 경우, 단계 250에서 병렬 처리 장치는 신규 큐를 생성하고, 신규 큐와 신규 플로우를 맵핑한다.
단계 255에서 병렬 처리 장치는 신규 큐에 대한 분배기(160) 및 프로세서(180)를 배정한다. 이 때, 병렬 처리 장치는 신규 큐에 대해 단일 프로세서(180)를 배정할 수 있다.
단계 245에서 저장된 포인터의 수가 지정된 임계값을 초과하지 않는 큐가 존재하는 경우, 단계 260에서 병렬 처리 장치는 맵핑 모드가 어떤 모드인지 판단한다.
단계 260에서 맵핑 모드가 파워 절약 모드인 경우, 단계 265에서 병렬 처리 장치는 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 큐 중 가장 많은 포인터가 저장되어 있는 큐와 플로우를 맵핑한다.
단계 260에서 맵핑 모드가 균등 분배 모드인 경우, 단계 270에서 병렬 처리 장치는 저장된 포인터의 수가 미리 지정된 임계치를 넘지 않는 큐 중 가장 적은 포인터가 저장되어 있는 큐와 플로우를 맵핑한다.
단계 275에서 병렬 처리 장치는 이전 단계에서 매핑된 큐와 플로우에 따라 플로우 테이블을 갱신한다.
단계 280에서 병렬 처리 장치는 플로우와 맵핑된 큐에 입력 데이터의 포인터를 저장한다.
단계 285에서 병렬 처리 장치는 각 큐에 상응하는 입력 데이터를 해당 큐에 배정된 단일 프로세서(또는 코어)를 통해 처리한다. 이 때, 병렬 처리 장치는 각 큐에 대해 단일 프로세서(180)를 배정하였기 때문에, 각 큐에 상응하는 입력 데이터는 단일 큐에 상응하는 입력 데이터는 하나 이상의 분배기(160)를 통해 단일 프로세서(180)로 전송될 수 있다. 도 3을 참조하여 예를 들면, 병렬 처리 장치가 제1 큐(310), 제2 큐(320) 및 제3 큐(330), 제1 분배기(340), 제2 분배기(350), 제1 프로세서(360), 제2 프로세서(370) 및 제3 프로세서(380)를 활성화시키고, 제1 큐(310)에 대해서는 제1 분배기(340), 제2 분배기(350) 및 제1 프로세서(360)가 배정되었다고 가정하는 경우, 병렬 처리 장치는 제1 큐(310)에 상응하는 입력 데이터를 제1 분배기(340) 및 제2 분배기(350)을 통해 제1 프로세서(360)로 전송할 수 있다. 이 때, 병렬 처리 장치는 제1 큐(310)에 상응하는 입력 데이터를 제1 프로세서(360) 이외의 프로세서(370, 380)에 전송되지 않도록 함으로써, 입력 데이터의 처리 순서가 뒤바뀌는 상황을 방지할 수 있다.
단계 290에서 병렬 처리 장치는 입력 데이터의 처리를 통해 생성한 결과 데이터를 출력한다.
상술한 본 발명의 일 실시예에 따른 병렬 처리 장치는 컴퓨터 시스템으로 구현될 수 있다. 이 때, 병렬 처리 장치의 맵퍼(110), 테이블 제공부(130), 큐 매니저(150), 분배기(160), 분배기 매니저(170) 및 프로세서 매니저(190) 중 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장된 소프트웨어 모듈로써, 프로세서(180)에 의해 수행되는 형태로 구현될 수 있다.
이제까지 본 발명에 대하여 그 실시 예를 중심으로 살펴보았다. 전술한 실시 예 외의 많은 실시 예들이 본 발명의 특허청구범위 내에 존재한다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (14)

  1. 하나 이상의 큐를 저장하는 큐 메모리;
    데이터를 저장하는 데이터 메모리;
    상기 데이터를 플로우로 분류하고, 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 맵퍼;
    플로우 정보와 맵핑된 큐 정보를 포함하는 플로우 테이블을 저장하는 테이블 제공부;
    상기 데이터에 따른 프로세스를 수행하는 복수의 프로세서; 및
    상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 추출하고, 상기 데이터를 상기 프로세서로 전송하는 분배기;
    를 포함하고,
    상기 분배기는 단일 큐에 상응하는 데이터를 단일 프로세서로 전송하고,
    상기 맵퍼는 상기 플로우 테이블을 참조하여 상기 플로우와 활성화된 큐가 맵핑되지 않은 경우, 적어도 하나의 활성화된 큐 각각에 저장된 포인터의 수 및 미리 지정된 임계값을 기초로 상기 플로우와 신규 큐 또는 상기 적어도 하나의 활성화된 큐 중 하나의 활성화된 큐를 맵핑하는 병렬 처리 장치.
  2. 삭제
  3. 삭제
  4. 제1 항에 있어서,
    상기 맵퍼는,
    상기 적어도 하나의 활성화된 큐 각각에 저장된 포인터의 수가 모두 상기 미리 지정된 임계값을 초과하는 경우, 상기 플로우와 상기 신규 큐를 맵핑하고,
    상기 적어도 하나의 활성화된 큐 중 저장된 포인터의 수가 상기 미리 지정된 임계값을 초과하지 않는 제1 활성화된 큐가 존재하는 경우, 상기 플로우와 상기 제1 활성화된 큐를 맵핑하는 병렬 처리 장치.
  5. 제4 항에 있어서,
    상기 맵퍼가 상기 플로우와 상기 신규 큐를 맵핑하는 경우, 상기 신규 큐에 대한 분배기를 배정하는 분배기 매니저; 및
    상기 신규 큐에 대한 단일 프로세서를 배정하는 프로세서 매니저;
    를 더 포함하는 병렬 처리 장치.
  6. 제4 항에 있어서,
    상기 맵퍼는,
    상기 제1 활성화된 큐가 복수 존재하고, 맵핑 모드가 파워 절약 모드인 경우, 상기 복수의 제1 활성화된 중 가장 적은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 병렬 처리 장치.
  7. 제4 항에 있어서,
    상기 맵퍼는,
    상기 제1 활성화된 큐가 복수 존재하고, 맵핑 모드가 균등 분배 모드인 경우, 상기 복수의 제1 활성화된 큐 중 가장 많은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 병렬 처리 장치.
  8. 병렬 처리 장치가 병렬 처리를 수행하는 방법에 있어서,
    데이터를 수신하고, 상기 데이터를 데이터 메모리에 저장하는 단계;
    상기 데이터를 플로우로 분류하는 단계;
    플로우 정보와 맵핑된 큐 정보를 포함하는 플로우 테이블을 참조하여 상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 단계;
    상기 큐에 저장된 포인터를 참조하여 상기 데이터 메모리에서 상기 데이터를 추출하고, 상기 데이터를 상기 큐에 대해 배정된 프로세서로 전송하는 단계; 및
    상기 큐에 배정된 상기 프로세서를 통해 상기 데이터에 상응하는 프로세스를 수행하는 단계를 포함하고,
    상기 데이터를 상기 큐에 대해 배정된 프로세서로 전송하는 단계는,
    단일 큐에 상응하는 데이터를 단일 프로세서로 전송하는 단계를 포함하고,
    상기 플로우와 맵핑된 큐에 상기 데이터의 포인터를 저장하는 단계는,
    상기 플로우 테이블을 참조하여 상기 플로우와 활성화된 큐가 매핑되지 않는 경우, 적어도 하나의 활성화된 큐 각각에 저장된 포인터의 수 및 미리 지정된 임계값을 기초로 상기 플로우와 신규 큐 또는 상기 적어도 하나의 활성화된 큐 중 하나의 활성화된 큐를 맵핑하는 단계를 포함하는 병렬 처리 방법.
  9. 삭제
  10. 삭제
  11. 제8 항에 있어서,
    상기 플로우와 신규 큐 또는 상기 적어도 하나의 활성화된 큐 중 하나의 활성화된 큐를 맵핑하는 단계는,
    상기 적어도 하나의 활성화된 큐 각각에 저장된 포인터의 수가 모두 상기 미리 지정된 임계값을 초과하는 경우, 상기 플로우와 상기 신규 큐를 맵핑하는 단계; 및
    상기 적어도 하나의 활성화된 큐 중 저장된 포인터의 수가 상기 미리 지정된 임계값을 초과하지 않는 제1 활성화된 큐가 존재하는 경우, 상기 플로우와 상기 제1 활성화된 큐를 맵핑하는 단계를 포함하는 병렬 처리 방법.
  12. 제11 항에 있어서,
    상기 플로우가 상기 신규 큐에 맵핑되는 경우, 상기 신규 큐에 대한 분배기를 배정하는 단계; 및
    상기 신규 큐에 대한 단일 프로세서를 배정하는 단계;
    를 더 포함하는 병렬 처리 방법.
  13. 제11 항에 있어서,
    상기 플로우와 상기 제1 활성화된 큐를 맵핑하는 단계는,
    상기 제1 활성화된 큐가 복수 존재하고, 맵핑 모드가 파워 절약 모드인 경우, 상기 복수의 제1 활성화된 큐 중 가장 적은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 단계를 포함하는 병렬 처리 방법.
  14. 제11 항에 있어서,
    상기 플로우와 상기 제1 활성화된 큐를 맵핑하는 단계는,
    상기 제1 활성화된 큐가 복수 존재하고, 맵핑 모드가 균등 분배 모드인 경우, 상기 복수의 제1 활성화된 큐 중 가장 많은 포인터가 저장되어 있는 큐와 상기 플로우를 맵핑하는 단계를 포함하는 병렬 처리 방법.
KR1020150110621A 2015-08-05 2015-08-05 병렬 처리 장치 및 방법 KR102013867B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150110621A KR102013867B1 (ko) 2015-08-05 2015-08-05 병렬 처리 장치 및 방법
US15/180,815 US10142245B2 (en) 2015-08-05 2016-06-13 Apparatus and method for parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150110621A KR102013867B1 (ko) 2015-08-05 2015-08-05 병렬 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20170018138A KR20170018138A (ko) 2017-02-16
KR102013867B1 true KR102013867B1 (ko) 2019-08-26

Family

ID=58053175

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150110621A KR102013867B1 (ko) 2015-08-05 2015-08-05 병렬 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US10142245B2 (ko)
KR (1) KR102013867B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984450B (zh) * 2018-06-08 2020-10-23 华为技术有限公司 数据传输方法、装置和设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997011498A1 (en) 1995-09-18 1997-03-27 Philips Electronics N.V. A varicap diode and method of manufacturing a varicap diode
EP1313284B1 (de) * 2001-08-29 2005-08-10 Alcatel Router
US7765405B2 (en) 2005-02-25 2010-07-27 Microsoft Corporation Receive side scaling with cryptographically secure hashing
US7701849B1 (en) * 2006-06-23 2010-04-20 Juniper Networks, Inc. Flow-based queuing of network traffic
US7715428B2 (en) 2007-01-31 2010-05-11 International Business Machines Corporation Multicore communication processing
US7924860B1 (en) * 2008-12-23 2011-04-12 Juniper Networks, Inc. Maintaining data unit order in a network switching device
US8413161B2 (en) 2009-09-29 2013-04-02 International Business Machines Corporation Work queue selection on a local processor within a multiple processor architecture
KR101350333B1 (ko) 2009-11-03 2014-01-10 한국전자통신연구원 대규모 트래픽을 처리하는 온라인 서버 테스트를 위한 네트워크 에뮬레이션 시스템 및 방법
US8346999B2 (en) 2009-12-15 2013-01-01 Intel Corporation Dynamic receive queue balancing with high and low thresholds
KR20140139923A (ko) 2013-05-28 2014-12-08 한국전자통신연구원 멀티코어 프로세서 및 멀티코어 프로세서 시스템

Also Published As

Publication number Publication date
US10142245B2 (en) 2018-11-27
KR20170018138A (ko) 2017-02-16
US20170041237A1 (en) 2017-02-09

Similar Documents

Publication Publication Date Title
US10530846B2 (en) Scheduling packets to destination virtual machines based on identified deep flow
US11863379B2 (en) Container cluster management
US10572290B2 (en) Method and apparatus for allocating a physical resource to a virtual machine
US20150172204A1 (en) Dynamically Change Cloud Environment Configurations Based on Moving Workloads
CN105408879A (zh) 快捷外围部件互连域的资源管理
US11093352B2 (en) Fault management in NVMe systems
CN109726005B (zh) 用于管理资源的方法、服务器系统和计算机可读介质
US20130326000A1 (en) Numa-aware scaling for network devices
US10305724B2 (en) Distributed scheduler
KR101953546B1 (ko) 가상 스위칭 장치 및 방법
US11144473B2 (en) Quality of service for input/output memory management unit
US11093291B2 (en) Resource assignment using CDA protocol in distributed processing environment based on task bid and resource cost
KR102013867B1 (ko) 병렬 처리 장치 및 방법
CN110908939B (zh) 一种报文处理方法、装置及网络芯片
US20150220430A1 (en) Granted memory providing system and method of registering and allocating granted memory
KR20180062607A (ko) 가상 코어 자동 스케일링을 지원하는 병렬 처리 방법 및 이를 위한 장치
US20170147518A1 (en) Scanning memory for de-duplication using rdma
US10182019B2 (en) Interconnected hardware infrastructure resource control
US11316788B2 (en) Dynamic allocation of resources within network devices
US9894670B1 (en) Implementing adaptive resource allocation for network devices
US11112996B2 (en) Computer, computer system, and data quantity restriction method
KR20170056773A (ko) 플로우 기반 병렬 처리 방법 및 장치
KR20150114911A (ko) 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치
US20190007318A1 (en) Technologies for inflight packet count limiting in a queue manager environment
CN111277634A (zh) 一种数据id分配方法、装置、系统以及服务器

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