KR101483603B1 - 통신 시스템에서 효율이 개선된 자원 제어 방법 및 장치 - Google Patents

통신 시스템에서 효율이 개선된 자원 제어 방법 및 장치 Download PDF

Info

Publication number
KR101483603B1
KR101483603B1 KR20120084817A KR20120084817A KR101483603B1 KR 101483603 B1 KR101483603 B1 KR 101483603B1 KR 20120084817 A KR20120084817 A KR 20120084817A KR 20120084817 A KR20120084817 A KR 20120084817A KR 101483603 B1 KR101483603 B1 KR 101483603B1
Authority
KR
South Korea
Prior art keywords
core
thread
data packet
host
nic
Prior art date
Application number
KR20120084817A
Other languages
English (en)
Other versions
KR20140017926A (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 KR20120084817A priority Critical patent/KR101483603B1/ko
Publication of KR20140017926A publication Critical patent/KR20140017926A/ko
Application granted granted Critical
Publication of KR101483603B1 publication Critical patent/KR101483603B1/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/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 네트워크 통신 시스템 상에서 CPU의 자원을 절약하여 프로그램이 동작하는 데 필요한 CPU 자원의 효율성을 높일 수 있는 자원 제어 방법 및 장치를 제공한다.
본 발명은 호스트 및 상기 호스트와 PCI를 통해 연결된 PCI 장치를 포함하며, 상기 PCI 장치는 포트로부터 데이터 패킷이 수신되면 설정된 동작 조건에 따라 수신큐별 상기 수신된 데이터 패킷을 분산하여 인큐하는 네트워크 인터페이스 카드(NIC)를 포함하고, 상기 호스트는 코어별 복수의 스레드를 생성하고, 상기 생성된 스레드에 입/출력(I/O) 혹은 연산에 특화된 동작을 지정하여 상기 NIC로부터 수신된 데이터 패킷을 처리하는 멀티 코어 프로세서부를 포함함을 특징으로 한다.

Description

통신 시스템에서 효율이 개선된 자원 제어 방법 및 장치{METHOD AND APPARATUS FOR CONTROLING RESOURCE WITH ENHANCED EFFICIENCY IN COMMUNICATION SYSTEM}
본 발명은 네트워크 통신 시스템의 데이터 처리에 관한 것으로, 보다 상세하게는 CPU의 코어별 적어도 둘 이상의 스레드를 생성하여 각 스레드별 특화된 데이터 처리 기능을 부여함으로써 CPU 자원의 효율을 개선시키는 기술을 제공하고자 한다. 본 발명은 스레드의 역할 분리를 통해서 I/O 유닛에서 I/O 처리가 수행되는 동안에도 연산 유닛에서 데이터 패킷이 처리되도록 하여 데이터 처리 시 CPU 자원의 효율을 개선시키는 기술을 제공하고자 한다.
고속 네트워킹이 필수적으로 되어가는 현대 컴퓨팅 시스템에서, 하나의 시스템 내에 일반적으로 다수의 프로세싱 코어(즉, 프로세서)를 사용한다. 멀티 코어 프로세서는 보다 강력한 성능과 소비 전력 절감, 그리고 여러 개의 작업을 보다 효율적으로 한 번에 처리하기 위해 두 개 이상의 코어가 결합되어 동시에 인터럽트를 수신하고 패킷을 처리한다. 네트워크상의 패킷량이 지속적으로 증가하면서 이러한 패킷을 처리해야 하는 네트워크 장비들도 지속적으로 성능 향상이 요구되고 있으며, 성능 향상을 위해 네트워크 장비에도 멀티 코어 프로세서의 사용이 증가하고 있다.
컴퓨팅 시스템에서 이벤트에 대한 처리방식으로 인터럽트 방식과 폴링(polling) 방식이 있다. 인터럽트 방식은 비동기적인 이벤트가 발생하는 순간 해당 인터럽트를 처리하는 방식이며, 폴링 방식은 지속적으로 이벤트가 발생하는 것을 감시하고 발생한 이벤트에 따른 명령을 처리하는 방식이다. 인터럽트 방식의 네트워크 카드 드라이버는 인터럽트에 의한 문맥전환 및 기타 인터럽트 처리로직에 의한 오버헤드가 발생할 수 있으며, 폴 모드 드라이버(poll mode driver)는 상기와 같은 인터럽트 방식 드라이버의 오버헤드를 줄이기 위해 등장하게 되었다.
상기 폴 모드 드라이버는 폴링(polling)을 하며 감시해야 하는 장치에 접근 하기 위해서 지속적으로 PCI 접근을 하게 되는데, 상기 PCI 접근을 시도하고 있는 동안은 PCI 트랜잭션(transaction)에 의해 CPU 자원이 소모되는 상황이 발생하게 된다.
예를 들어, 도 1을 참조하면, 호스트의 코어(core 0)은 스레드를 통해 PCI 장치(114)로부터 수신된 데이터(118)를 처리하기 위해 프로세싱 및 I/O 처리를 수행하고, PCI 장치(114)는 데이터를 호스트의 지정된 버퍼에 DMA(Direct Memory Access)와 같은 메모리 억세스 방식을 통해서 전달하고 전송이 완료되었다는 것을 레지스터에 기록하게 된다.
일반적으로 폴 모드 드라이버는 특정 CPU의 특정 코어에 바인딩되서 동작하고 있는 스레드가 지속적으로 PCI 장치(114)의 레지스터에 접근하여 해당 장치에 처리가 완료된 데이터가 있는지 계속해서 확인을 하게 된다. 만일 PCI 장치(114)에 처리가 완료된 데이터가 있다는 것이 확인되면 데이터를 프로세싱 처리하며 새로운 데이터가 올 때까지 계속해서 해당 장치의 레지스터를 확인하는 작업을 수행하게 된다.
상기와 같은 방식으로 동작하는 폴 모드 드라이버가 2개이고, CPU의 각 코어마다 하이퍼 스레딩(Hyper threading)을 2개씩 지원한다고 가정한다. 하이퍼 스레딩은 CPU의 하나의 코어의 자원을 공유하여 복수의 코어가 존재하는 것처럼 데이터를 처리하는 기술이다. 만약, 하이퍼 스레딩에 의해 하나의 코어 자원을 공유하는 가상 코어 2개에 스레드가 각각 바인딩되어 동작하게 되면, 한 개의 코어에서 2개의 폴 모드 드라이버가 동작하는 것과 같다.
이러한 경우, 각 가상 코어에 바인딩되어 동작하는 각 스레드가 동시에 연산 유닛을 사용하거나 동시에 I/O 유닛을 사용하게 되면, 1개의 연산 유닛 또는 I/O 유닛을 각 스레드가 동시에 나누어 사용하는 것이 되어 코어 1개에 1개의 스레드만 동작시키는 것과 성능적으로 이득이 없게 되는 문제가 발생한다.
본 발명은 네트워크 통신 시스템 상에서 CPU의 자원을 절약하여 프로그램이 동작하는 데 필요한 CPU 자원의 효율성을 높일 수 있는 자원 제어 방법 및 장치를 제공하고자 한다.
본 발명의 일 견지에 따르면, 통신 시스템의 자원 제어 장치에 있어서, 호스트 및 상기 호스트와 PCI를 통해 연결된 PCI 장치를 포함하며, 상기 PCI 장치는 포트로부터 데이터 패킷이 수신되면 설정된 동작 조건에 따라 수신큐별 상기 수신된 데이터 패킷을 분산하여 인큐하는 네트워크 인터페이스 카드(NIC)를 포함하고, 상기 호스트는 코어별 복수의 스레드를 생성하고, 상기 생성된 스레드에 입/출력(I/O) 혹은 연산에 특화된 동작을 지정하여 상기 NIC로부터 수신된 데이터 패킷을 처리하는 멀티 코어 프로세서부를 포함함을 특징으로 한다.
본 발명의 다른 견지에 따르면, 통신 시스템의 자원 제어 방법은 복수의 코어들을 포함하는 멀티 코어 프로세서에서, 상기 코어별 복수의 스레드를 생성하는 과정과, 포트로부터 데이터 패킷이 수신되면 네트워크 인터페이스 카드(NIC)는 설정된 동작조건에 따라 수신큐별 상기 수신된 데이터 패킷을 분산하여 인큐(enqueue)하는 과정과, 상기 수신큐별 데이터 패킷의 큐잉 정보를 직접 메모리 액세스(DMA)를 통해 호스트로 전달하는 과정과, 각 코어별 해당 코어의 입/출력(I/O) 처리 요구에 대응하는 제1 스레드를 통해 상기 NIC의 수신큐별 헤드 레지스터에 대한 값을 모니터링하는 과정과, 상기 수신큐별 헤드 레지스터 값의 변경 여부에 따라 데이터 패킷 연산 처리 요구에 대응하는 제2 스레드를 통해 상기 호스트에 저장된 데이터 패킷의 연산 처리 수행 여부를 결정하는 과정을 포함함을 특징으로 한다.
본 발명은 멀티 코어 프로세서 환경에서 스레드의 역할을 분리하여 I/O 유닛에서 I/O 처리가 수행되는 동안에도 연산 유닛이 중단 없이 연속적으로 데이터 패킷 을 처리할 수 있도록 한다. 또한, 각 코어는 NIC의 큐를 하나만 사용하므로 호스트 측면에서 메모리 자원도 절약할 수 있다.
따라서, 본 발명은 연산 유닛의 효율성이 높아지고 더 나아가 CPU 자원 및 시스템 자원의 효율이 개선되는 효과가 있다.
도 1은 종래 폴 모드 드라이버 방식을 이용한 네트워크 패킷 처리 시스템의 동작 구성도.
도 2는 본 발명의 일 실시 예에 따른 통신 시스템에서 자원 제어에 관한 전체 시스템의 개략적인 구성도.
도 3은 본 발명의 일 실시 예에 따른 통신 시스템에서 자원 제어에 관한 전체 흐름도.
도 4는 본 발명의 일 실시 예에 따른 통신 시스템에서 자원 제어 장치에 관한 상세 블록도.
이하 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기 설명에서는 구체적인 구성 소자 등과 같은 특정 사항들이 나타나고 있는데 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정 사항들이 본 발명의 범위 내에서 소정의 변형이나 혹은 변경이 이루어질 수 있음은 이 기술 분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다.
본 발명은 네트워크 통신 시스템의 데이터 처리에 관한 것으로, CPU의 코어별 적어도 둘 이상의 스레드를 생성하여 각 스레드별 특화된 데이터 처리 기능을 부여함으로써 CPU 자원의 효율을 개선되는 기술을 제공한다.
본 발명은 호스트의 멀티 코어 프로세서에서 코어별로 복수로 스레드를 생성하고, 해당 코어에 생성된 스레드 중 데이터 패킷에 대한 입/출력(I/O) 처리를 수행하는 스레드와 연산 처리를 수행하는 스레드를 지정한다. I/O 처리를 수행하는 제1 스레드는 호스트와 연결된 네트워크 인터페이스 카드(NIC)의 큐잉 정보를 모니터링하고, 큐의 헤드 레지스터 값의 변경 여부에 따라 연산 처리를 수행하는 제2 스레드를 통해 데이터 패킷에 대한 처리 수행 여부를 결정한다. 따라서, 멀티 코어 프로세서에서 스레드 분리를 통해서 I/O 유닛에서 I/O 처리가 수행되는 동안에도 연산 유닛에서 데이터 패킷 처리가 가능하므로 데이터 처리 시 CPU 자원의 효율이 개선될 수 있다.
이하, 본 발명의 일 실시 예에 따른 통신 시스템에서 효율이 개선된 자원 제어 기술에 관하여 도 2 및 3을 걸쳐 자세히 살펴보기로 한다.
먼저, 도 2는 본 발명의 일 실시 예에 따른 통신 시스템에서 효율이 개선된 자원 제어에 관한 전체 시스템의 개략적인 구성도이다.
도 1을 참조하면, 본 발명이 적용된 시스템은 호스트, PCI(Peripheral Component Interconnect) 버스를 통해 상기 호스트와 데이터를 송수신하는 PCI 장치를 포함한다. PCI 장치는 외부로부터 데이터 패킷을 수신하는 포트(210)와, 매체접근제어(Medium Access Control)방식으로 데이터를 송수신하며, 상기 호스트 단말과 데이터를 송수신하도록 하는 NIC(Network Interface Card, 212)와, PCI 버스와 인터페이스를 수행하는 PCI 인터페이스부(222)를 포함한다. 호스트는 상기 PCI 장치의 NIC로부터 수신된 데이터 패킷을 처리하는 멀티코어 프로세서를 포함한다. 멀티코어 프로세서는 복수의 프로세싱 코어(226, 228)를 포함한다.
상기 NIC(212)는 헤드(head)/테일(tail) 레지스터 및 큐의 식별자(Q_Count_1, 2...N)로 구성된 수신큐(214, 218)를 포함하며, 포트(210)로부터 수신된 데이터 패킷을 수신큐 별로 분산하여 인큐(enqueue)한다. NIC(212)는 각 수신큐(214, 218)에 데이터 패킷이 인큐되면 DMA(Direct Memory Access)를 통해 해당 수신큐의 데이터 패킷을 호스트의 메모리(또는, 큐)(21, 23)에 전달하고, 해당 수신큐의 헤드 레지스터값을 증가시킨다.
상기 복수의 프로세싱 코어(226, 228)는 하이퍼 스레딩(Hyper threading)을 지원하여 각 코어별로 적어도 복수의 스레드(230, 232, 234, 236)를 생성할 수 있다. 이하에서는, 설명의 편의를 위해 각 코어별로 2개의 스레드를 생성한 경우를 가정하여 설명한다. 각 코어별로 생성된 스레드에 I/O처리 요구에 대응하는 스레드(232, 236) 및 데이터 연산처리 요구에 대응하는 스레드(230, 234)를 각각 지정하고, 각 코어의 I/O처리 요구에 대응하는 스레드(232, 236)는 각각 상기 NIC의 수신큐별(214, 218) 헤드 레지스터값을 모니터링한다.
NIC의 수신큐의 헤드 레지스터값에 변경이 있으면, 해당 수신큐를 모니터링하는 I/O처리 스레드는 그 결과를 호스트(224)의 수신큐별 헤드 변수 레지스터에 상기 모니터링 값을 복사(copy)한다.
각 코어의 데이터 연산처리 요구에 대응하는 스레드(230, 234)는 상기 호스트에 복사된 헤드 레지스터값의 변경 여부에 따라 호스트의 메모리(또는, 큐)(21, 23)에 큐잉된 데이터 패킷에 대한 처리 수행 여부를 결정한다. 즉, 각 코어의 데이터 연산처리 요구에 대응하는 스레드(230, 234)는 스레드와 연계된 수신큐의 헤드 레지스터값이 변경되는 경우, 해당 수신큐로부터 수신되어 호스트에 저장되어 있는 데이터 패킷을 처리하게 된다.
이상에서는, 도 2를 참조하여 본 발명의 일 실시 예에 따른 통신 시스템에서 효율이 개선된 자원 제어에 관한 전체 시스템을 개략적으로 살펴보았다.
이하, 본 발명의 일 실시 예에 따른 통신 시스템에서 효율이 개선된 자원 제어 방법에 관해 도 3을 참조하여 자세히 살펴보기로 한다.
도 3은 본 발명의 일 실시 예에 따른 통신 시스템에서 효율이 개선된 자원 제어에 관한 전체 흐름도이다.
도 3을 참조하면, 먼저 310 과정에서는 복수의 코어들을 포함하는 멀티 코어 프로세서에서, 상기 코어별로 복수의 스레드를 생성한다.
여기서, 상기 스레드는 프로세스 안에서 여러 개의 실행단위를 의미하는 것으로, 본 발명의 실시 예에서는 각 코어마다 데이터 패킷을 연산 처리하는 스레드와 I/O 처리를 수행하는 스레드를 각각 생성하여 지정된 동작을 수행하도록 한다.
312 과정에서는 포트로부터 데이터 패킷이 수신되면 NIC는 설정된 동작 조건에 따라 수신큐별 상기 수신된 데이터 패킷을 분산하여 인큐(enqueue)하고, 314 과정에서는 상기 수신큐별로 큐잉된 데이터 패킷을 직접 메모리 액세스(DMA)를 통해 호스트로 전달한다.
이때, NIC는 DMA를 통해 호스트 시스템으로 전달한 데이터 패킷의 큐잉 정보에 따라 수신큐별 헤드 레지스터 값을 갱신한다.
상기 호스트의 프로세서에 새로운 데이터 패킷이 처리를 위해 도착하였다는 것을 알리기 위해 인터럽트 또는 폴링 기술이 사용될 수 있다. 프로세싱 코어들은 데이터 패킷들의 전송 및 수신을 위한 전송 및 수신큐 이용을 제어하기 위한 소프트웨어를 실행한다.
316 과정에서 각 코어별 해당 코어의 I/O 처리 요구에 대응하는 제1 스레드와 데이터 연산처리 요구에 대응하는 제2 스레드를 지정하고, 318 과정에서 상기 I/O 처리 요구에 대응하는 제1 스레드를 통해 상기 NIC의 헤드 레지스터에 대한 값을 모니터링한다.
한편, NIC의 수신큐는 코어와 일대일 대응되고, 각 스레드는 하이퍼 스레딩을 통해 코어의 자원을 공유하여 데이터를 처리할 수 있다. 즉, 각 코어는 하이퍼 스레딩을 통해 I/O 처리 요구에 대응하는 제1 스레드와 데이터 연산처리 요구에 대응하는 제2 스레드의 프로세싱을 수행할 수 있다.
320 과정에서는 318 과정의 모니터링 결과 헤드 레지스터 값의 변경 여부를 체크하여, 대응되는 수신큐의 헤드 레지스터 값이 변경된 경우 322 과정을 수행한다. 즉, 상기 제2 스레드를 통해 상기 호스트에 전달된 데이터 패킷에 대한 연산 처리를 수행한다.
상기 제2 스레드는 호스트의 수신큐별 헤드 변수 레지스터에 복사된 수신큐의 헤드 정보를 모니터링하여 헤드 변수가 변경된 경우 상기 호스트의 메모리에 저장된 데이터 패킷의 연산 처리를 수행한다. NIC는 DMA를 통해 수신큐의 데이터 패킷을 호스트로 전달하고 헤드 레지스터 값을 증가시키므로, 변경된 헤드 레지스터 값은 전송 처리가 완료된 데이터 패킷의 양에 대응될 수 있다.
이와 같이, 상기 제1 스레드는 코어별 I/O 처리 유닛에 대한 독점권이 부여되고, 상기 제2 스레드는 코어별 데이터 연산유닛에 대한 독점권이 부여되어 동작된다.
이상에서는, 본 발명의 일 실시 예에 따른 통신 시스템에서 효율이 개선된 자원 제어 방법에 대해서 살펴보았다.
이하, 본 발명의 일 실시 예에 따른 통신 시스템에서 효율이 개선된 자원 제어 장치에 대해 도 4를 참조하여 살펴보기로 한다.
도 4는 본 발명의 일 실시 예에 따른 통신 시스템에서 효율이 개선된 자원 제어 장치에 관한 상세 블록도이다.
도 4를 참조하면, 본 발명이 적용된 네트워크 통신 장치(400)는 PCI 장치와 호스트(410)를 포함하며, PCI 장치는 포트(448), NIC(434), PCI 인터페이스부(432)를 포함한다.
NIC(434)는 미리 설정된 개수의 수신큐를 포함하며, 해당 수신큐에 대한 정보는 헤드, 테일 및 Q_Count로 큐(440, 442, 444, 446)를 포함한다. 상기 NIC(434)는 포트로부터 데이터 패킷이 수신되면 설정된 동작 조건에 따라 수신큐별 상기 수신된 데이터 패킷을 분산하여 인큐한다. 큐잉 제어부(438)는 포트(448)를 통해 수신된 데이터 패킷의 큐잉을 제어한다. 큐잉 제어부(438)는 데이터 패킷을 큐잉할 수신큐를 선택하고, 상기 선택된 큐별 인큐(enqueue) 혹은 디큐(dequeue)를 수행하여 데이터 패킷을 분산한다. DMA부(436)는 각 수신큐에 저장된 데이터 패킷을 DMA(Direct Memory Access)를 통해 호스트에 전달한다. 큐잉 제어부(438)와 DMA부(436)는 소프트웨어 모듈로 구현될 수도 있고, 하드웨어로 구현될 수도 있다.
상기 NIC(434)는 PCI 인터페이스부(432)를 통해 상기 호스트(410)와 연결되며, PCI 인터페이스부(432)는 호스트(410)의 PCI 버스와 인터페이스를 수행한다. 호스트(410)는 NIC(434)의 수신큐로부터 데이터 패킷을 수신하여 처리하는 멀티코어 프로세서부(412)를 포함한다. 멀티코어 프로세서부(412)는 코어별로 I/O 처리를 수행하는 스레드와 데이터 연산 처리를 수행하는 스레드를 생성하고, 각 코어는 하이퍼 스레딩을 통해 I/O 처리를 수행하는 스레드와 데이터 연산 처리를 수행하는 스레드를 실행한다. 이하에서는 설명의 편의를 위해 프로세싱 코어의 개수가 2개인 경우를 가정하기로 한다.
상기 멀티 코어 프로세서부(412)는 다수의 프로세싱 코어부(420, 426)와 제어부(414)를 포함한다. 제어부(414)는 각 프로세싱 코어부(420, 426)를 제어하고, 각 프로세싱 코어부(420, 426)는 하이퍼 스레딩(Hyper threading)을 통해 복수의 스레드를 실행할 수 있다. 예를 들어, 각 프로세싱 코어부(420, 426)에는 데이터 패킷에 대한 서로 다른 처리를 수행하는 제1 스레드(418, 422)와 제2 스레드(424, 426)가 각각 생성될 수 있다.
여기서, 상기 제1 스레드는 코어별 I/O 처리 유닛에 대한 독점권이 부여되고, 상기 제2 스레드는 코어별 데이터 연산유닛에 대한 독점권이 부여되어 각 프로세싱 코어부(420, 426)는 NIC(434)의 수신큐로부터 전송받은 데이터 패킷을 처리하게 된다.
상기 제1 스레드는 I/O 처리를 수행하도록 지정된 스레드로, NIC의 수신큐의 헤드 레지스터 값을 모니터링하고, 헤드 레지스터 값에 변경이 있는 경우 수신큐의 헤드 정보를 호스트에 복사한다.
상기 제2 스레드는 데이터 패킷의 연산 처리를 수행하도록 지정된 스레드로, 호스트에 복사된 NIC의 수신큐의 헤드 정보를 모니터링하여 헤드 관련 변수가 변경된 경우 상기 호스트의 메모리에 저장된 데이터 패킷의 연산처리를 수행한다.
이러한 경우, 코어의 개수만큼 상기 NIC의 수신큐가 사용된다. 이는 상기 호스트(410)에서 패킷을 연산 처리하는 스레드가 코어 개수만큼 동작하기 때문에 NIC(434)의 수신큐도 코어 개수만큼만 필요하다.
NIC 드라이버(430)는 PCI 버스를 통해 연결된 NIC(434)를 관리하고, 호스트(410)와 NIC 사이의 데이터 송수신을 중계한다.
상기와 같이 본 발명에 따른 통신 시스템에서 효율이 개선된 자원 제어 방법 및 장치에 관한 동작이 이루어질 수 있으며, 한편 상기한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나 여러 가지 변형이 본 발명의 범위를 벗어나지 않고 실시될 수 있다. 따라서 본 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 청구범위와 청구범위의 균등한 것에 의하여 정하여져야 할 것이다.
410: 호스트 412: 멀티코어프로세서부
414: 제어부 420, 426: 프로세싱 코어부
430: NIC 드라이버 432: PCI 인터페이스부
434: NIC 436: DMA부
438: 큐잉 제어부

Claims (12)

  1. 통신 시스템의 자원 제어 방법에 있어서,
    복수의 코어들을 포함하는 멀티 코어 프로세서에서, 상기 코어별 복수의 스레드를 생성하는 과정과,
    포트로부터 데이터 패킷이 수신되면 네트워크 인터페이스 카드(NIC)는 설정된 동작조건에 따라 수신큐별 상기 수신된 데이터 패킷을 분산하여 인큐(enqueue)하는 과정과,
    상기 수신큐별 데이터 패킷의 큐잉 정보를 직접 메모리 액세스(DMA)를 통해 호스트로 전달하는 과정과,
    각 코어별 해당 코어의 입/출력(I/O) 처리 요구에 대응하는 제1 스레드를 통해 상기 NIC의 수신큐별 헤드 레지스터에 대한 값을 모니터링하는 과정과,
    상기 수신큐별 헤드 레지스터 값의 변경 여부에 따라 데이터 패킷 연산 처리 요구에 대응하는 제2 스레드를 통해 상기 호스트에 저장된 데이터 패킷의 연산 처리 수행 여부를 결정하는 과정을 포함하고,
    상기 DMA를 통해 호스트로 전달된 데이터 패킷의 큐잉 정보에 따라 상기 NIC의 수신큐별 헤드 레지스터 값을 갱신하는 과정을 더 포함하고,
    상기 제1 스레드는 코어별 I/O 처리 유닛에 대한 독점권이 부여되고, 상기 제2 스레드는 코어별 데이터 연산유닛에 대한 독점권이 부여되어 동작됨을 특징으로 하는 통신 시스템의 자원 제어 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 제2 스레드는,
    상기 수신큐별 헤드 레지스터 값이 변경된 경우 상기 호스트의 메모리에 저장된 데이터 패킷의 연산 처리를 수행함을 특징으로 하는 통신 시스템의 자원 제어 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 코어별 사용하는 NIC의 수신큐는 코어와 일대일 대응됨을 특징으로 하는 통신 시스템의 자원 제어 방법.
  6. 제1항에 있어서,
    상기 각 코어들은 하이퍼 스레딩(Hyper threading)을 통해 상기 제1 스레드와 상기 제2 스레드를 분리하여 실행함을 특징으로 하는 통신 시스템의 자원 제어 방법.
  7. 통신 시스템의 자원 제어 장치에 있어서,
    호스트 및 상기 호스트와 PCI를 통해 연결된 PCI 장치를 포함하며,
    상기 PCI 장치는 포트로부터 데이터 패킷이 수신되면 설정된 동작 조건에 따라 수신큐별 상기 수신된 데이터 패킷을 분산하여 인큐하는 네트워크 인터페이스 카드(NIC)를 포함하고,
    상기 호스트는 코어별 복수의 스레드를 생성하고, 상기 생성된 스레드에 입/출력(I/O) 혹은 연산에 특화된 동작을 지정하여 상기 NIC로부터 수신된 데이터 패킷을 처리하는 멀티 코어 프로세서부를 포함하고,
    상기 NIC는,
    상기 포트를 통해 수신된 데이터 패킷의 처리를 위해 수신 큐를 선택하고, 상기 선택된 큐별 인큐 혹은 디큐를 수행하여 데이터 패킷을 분산하여 큐잉하는 큐잉 제어부와,
    상기 수신큐별 데이터 패킷을 DMA(Direct Memory Access)를 이용하여 호스트에 전달하는 DMA부를 포함하고,
    상기 멀티 코어 프로세서부에서 생성된 스레드 중 제1 스레드는,
    상기 NIC의 수신큐별 헤드 레지스터에 대한 값을 모니터링하고,
    상기 멀티 코어 프로세서부에서 생성된 스레드 중 제2 스레드는,
    상기 NIC의 수신큐별 헤드 레지스터 값이 변경된 경우 상기 호스트의 메모리에 저장된 데이터 패킷의 연산 처리를 수행하고,
    상기 제1 스레드는 코어별 I/O 처리 유닛에 대한 독점권이 부여되고, 상기 제2 스레드는 코어별 데이터 연산유닛에 대한 독점권이 부여되어 동작됨을 특징으로 하는 통신 시스템의 자원 제어 장치.
  8. 삭제
  9. 제7항에 있어서, 상기 멀티 코어 프로세서부는,
    복수의 프로세싱 코어를 포함하고, 각 코어는 하이퍼 스레딩(Hyper threading)을 통해 I/O 처리 요구에 대응하는 제1 스레드와 데이터 패킷 연산 처리 요구에 대응하는 제2 스레드를 분리하여 처리함을 특징으로 하는 통신 시스템의 자원 제어 장치.
  10. 삭제
  11. 삭제
  12. 삭제
KR20120084817A 2012-08-02 2012-08-02 통신 시스템에서 효율이 개선된 자원 제어 방법 및 장치 KR101483603B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20120084817A KR101483603B1 (ko) 2012-08-02 2012-08-02 통신 시스템에서 효율이 개선된 자원 제어 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20120084817A KR101483603B1 (ko) 2012-08-02 2012-08-02 통신 시스템에서 효율이 개선된 자원 제어 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20140017926A KR20140017926A (ko) 2014-02-12
KR101483603B1 true KR101483603B1 (ko) 2015-01-16

Family

ID=50266275

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20120084817A KR101483603B1 (ko) 2012-08-02 2012-08-02 통신 시스템에서 효율이 개선된 자원 제어 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101483603B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120085798A (ko) * 2009-10-27 2012-08-01 베리사인 인코포레이티드 효율적인 다중 패킷 필터 통계 생성

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120085798A (ko) * 2009-10-27 2012-08-01 베리사인 인코포레이티드 효율적인 다중 패킷 필터 통계 생성

Also Published As

Publication number Publication date
KR20140017926A (ko) 2014-02-12

Similar Documents

Publication Publication Date Title
US8543729B2 (en) Virtualised receive side scaling
EP2701074B1 (en) Method, device, and system for performing scheduling in multi-processor core system
US10331595B2 (en) Collaborative hardware interaction by multiple entities using a shared queue
US9448846B2 (en) Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
EP2240852B1 (en) Scalable sockets
CN104994032B (zh) 一种信息处理的方法和装置
JP2007079789A (ja) 計算機システム及びイベント処理方法
US9389923B2 (en) Information processing device and method for controlling information processing device
CN104102548A (zh) 任务资源调度处理方法和系统
US6256660B1 (en) Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts
US6012121A (en) Apparatus for flexible control of interrupts in multiprocessor systems
JP5109748B2 (ja) 仮想計算機システム及びパケット送信制御方法並びにそれに用いるネットワークインターフェースカード
Lin et al. {RingLeader}: efficiently Offloading {Intra-Server} Orchestration to {NICs}
WO2020166423A1 (ja) リソース管理装置およびリソース管理方法
KR101483603B1 (ko) 통신 시스템에서 효율이 개선된 자원 제어 방법 및 장치
CN116821041A (zh) 针对用户空间分组处理的高效队列存取
US9921891B1 (en) Low latency interconnect integrated event handling
WO2023002547A1 (ja) サーバ内データ転送装置、サーバ内データ転送方法およびプログラム
JP7574902B2 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
TW201421420A (zh) 圖形處理單元虛擬裝置、圖形處理單元主機裝置及其圖形處理單元程式處理方法
WO2022195826A1 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
WO2024013830A1 (ja) サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム
US20240129255A1 (en) Server delay control device, server delay control method, and program
Garcia et al. Implementation and comparative evaluation of an outsourcing approach to real-time network services in commodity hosted environments
Cascón et al. Accelerating network applications by distributed interfaces on heterogeneous multiprocessor architectures

Legal Events

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

Payment date: 20180112

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190110

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 6