KR20200112439A - 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법 - Google Patents

멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법 Download PDF

Info

Publication number
KR20200112439A
KR20200112439A KR1020190032915A KR20190032915A KR20200112439A KR 20200112439 A KR20200112439 A KR 20200112439A KR 1020190032915 A KR1020190032915 A KR 1020190032915A KR 20190032915 A KR20190032915 A KR 20190032915A KR 20200112439 A KR20200112439 A KR 20200112439A
Authority
KR
South Korea
Prior art keywords
core
packet
location
application
electronic device
Prior art date
Application number
KR1020190032915A
Other languages
English (en)
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 KR1020190032915A priority Critical patent/KR20200112439A/ko
Priority to US16/823,512 priority patent/US11758023B2/en
Priority to PCT/KR2020/003870 priority patent/WO2020197184A1/en
Priority to CN202080022621.3A priority patent/CN113632065A/zh
Priority to EP20779866.1A priority patent/EP3928204A4/en
Publication of KR20200112439A publication Critical patent/KR20200112439A/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/5061Partitioning or combining of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1006Server selection for load balancing with static server selection, e.g. the same server being selected for a specific client

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

다양한 실시에에 따른 멀티 코어를 포함하는 전자 장치는, 통신 장치와, 복수 개의 코어들을 포함하는 멀티 코어와, 메모리를 포함하고, 상기 코어들은 드라이버 코어, 네트워크 처리 코어 및 어플리케이션 코어의 계층으로 구분되어 상기 패킷을 처리하며, 상기 메모리는, 실행 시 상기 멀티 코어 중 어느 하나가 상기 통신 장치를 통해 패킷 수신 시 수신된 패킷을 운영 체제 영역으로 전달하는 드라이버 코어의 위치와 사용자 영역에서 상기 패킷을 처리하는 어플리케이션 코어의 위치, 그리고 수신된 패킷에 해당되는 세션의 처리량을 확인하고, 상기 드라이버 코어의 위치와 상기 어플리케이션 코어의 위치 및 세션의 처리량 중 적어도 하나를 기반으로 상기 코어들 중 트워크 처리 코어의 위치를 결정하고, 상기 결정된 위치의 네트워크 처리 코어에 의해 상기 운영 체제 영역으로 전달된 패킷을에 대해 네트워크 스택 처리하도록 하는 인스트럭션들을 저장할 수 있다. 다른 실시예가 가능하다.

Description

멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법{AN ELECTRONIC DEVICE COMPRISING MULTI-CORES AND METHOD FOR PROCESSING PACKET IN THE SAME}
본 발명의 다양한 실시예는 멀티 코어를 포함하는 전자 장치 및 전자 장치에서 패킷 처리를 위한 방법에 관한 것이다.
5G 네트워크는 저지연 및 고성능(low latency and high throughput)을 표준으로 하는 기술이다. 5G 네트워크 서비스를 제공하는 통신 시스템은 높은 데이터 전송률을 달성하기 위해 고도화된 하드웨어와 소프트웨어 기술을 활용하고 있다.
예를 들어, 5G 네트워크 서비스를 구현하기 위해 전자 장치는 하드웨어 측면으로 복수의 프로세서(예: 멀티 코어 프로세서)를 탑재하고, 소프트웨어 측면으로 멀티 코어를 활용하여 수신된 패킷을 병렬 처리하는 기술을 도입하고 있다. 소프트웨어 측면에서 멀티 코어에 패킷을 분산 처리하는 기술은, 수신된 패킷을 효율적으로 각 코어에게 분산시키는 것이 중요하다. 이러한 패킷의 분산 처리 기술은 예를 들어, 리눅스 운영 체제에서 제공되는 RPS(Receive Packet Steering) 기술과 RFS(Receive Flow Steering) 기술을 포함할 수 있다.
RPS(receive packet steering) 기술은 수신된 패킷을 처리함에 있어 패킷의 세션(session)에 따라 랜덤하게 임의의 코어를 할당하여 해당 패킷의 네트워크 스택(예:TCP/IP layer)을 처리하는 기술이다. RFS(Receive Flow Steering) 기술은 패킷의 세션에 따라 네트워크 스택을 처리할 코어를 결정하는데 있어 세션을 수신하는 어플리케이션 코어와 네트워크 스택을 처리할 코어의 위치를 일치시키는 기술이다.
한편, 전자 장치는 네트워크 인터페이스가 패킷을 수신하였을 때 커널에게 패킷의 수신 상태를 알림하는 과정에서 NAPI(New API) 기술을 적용하고 있다. NAPI 기술은 한번에 처리할만한 양만큼의 패킷이 수신되었을 때, 수신된 패킷을 묶음(Batching) 처리하도록 상위 계층으로 전달하여 효율적으로 데이터를 처리하는 기술이다.
RPS기술에 따르면, 랜덤하게 코어를 선택하므로, 어플리케이션과 코어의 상태를 고려하지 않아 패킷을 처리하는데 있어 지연이 발생하거나 멀티 코어 프로세서의 성능을 최적화하여 활용하지 못하는 문제가 발생할 수 있다. 예를 들어, 드라이버 작업을 처리하는 코어와 네트워크 스택을 처리하는 코어의 성능이 어플리케이션의 성능보다 낮은 경우, NAPI 와 TCP 처리 과정에서 묶음처리(Batching)을 활용하지 못해 낮은 성능과 비효율적인 동작이 발생되고 있다. RFS기술에 따르면 패킷을 어플리케이션의 코어와 동일한 위치의 네트워크 코어에서 처리하더라도 패킷이 단일세션으로 오거나, 특정 세션으로 치우치는 경우, 한 코어에 부하(또는 오버헤드)가 발생할 수 있으며, 이로 인해 멀티 코어의 성능을 충분하게 활용하지 못하고 있다,
다양한 실시예에 따르면, 멀티 코어를 활용하여 패킷을 묶음(batching)하여 분산 처리하는 전자 장치에서 드라이버 코어, 네트워크 스택 코어, 어플리케이션 코어 사이의 성능 및 동작 방식을 고려하여 패킷의 묶음 처리를 최대화하여 불필요한 오버헤드를 줄이고 더 적은 리소스로 보다 높은 성능을 보장할 수 있는 멀티 코어를 포함하는 전자 장치 및 패킷 처리를 위한 코어의 결정 방법 및 장치를 제공하고자 한다.
다양한 실시예에 따르면, 멀티 코어를 포함하는 전자 장치에 있어서, 통신 장치와, 복수 개의 코어들을 포함하는 멀티 코어와, 메모리를 포함하고, 상기 코어들은 드라이버 코어, 네트워크 처리 코어 및 어플리케이션 코어 계층으로 구분되어 상기 패킷을 처리하며, 상기 메모리는, 실행 시 상기 멀티 코어 중 어느 하나가 상기 통신 장치를 통해 패킷 수신 시 수신된 패킷을 운영 체제 영역으로 전달하는 드라이버 코어의 위치와 사용자 영역에서 상기 패킷을 처리하는 어플리케이션 코어의 위치, 그리고 수신된 패킷에 해당되는 세션의 처리량을 확인하고, 상기 드라이버 코어의 위치, 상기 어플리케이션 코어의 위치 및 세션의 처리량 중 적어도 하나를 기반으로 상기 코어들 중 네트워크 처리 코어의 위치를 결정하고, 상기 결정된 위치의 네트워크 처리 코어에 의해 상기 운영 체제 영역으로 전달된 패킷에 대해 네트워크 스택 처리하도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따르면, 멀티 코어를 포함하는 전자 장치에 있어서, 통신 장치와, 복수 개의 코어를 포함하는 멀티 코어와, 메모리 및 프로세서를 포함하고, 상기 코어들은 드라이버 코어, 네트워크 처리 코어 및 어플리케이션 코어의 계층으로 구분되어 상기 패킷을 처리하며, 상기 프로세서는, 상기 통신 장치를 통해 패킷 수신 시 상기 멀티 코어 중 수신된 패킷을 운영 체제 영역으로 전달하는 드라이버 코어의 위치, 사용자 영역에서 상기 패킷을 처리하는 어플리케이션 코어의 위치 및 수신된 패킷에 해당되는 세션의 처리량을 확인하고, 상기 드라이버 코어의 위치, 어플리케이션 코어의 위치 및 상기 세션의 처리량 중 적어도 하나를 기반으로 상기 코어들 중 네트워크 처리 코어의 위치를 결정하고, 상기 멀티 코어 중 상기 결정된 위치의 네트워크 처리 코어에서 상기 패킷에 대해 네트워크 스택 처리하도록 제어할 수 있다.
다양한 실시예에 따르면, 패킷을 처리할 어플리케이션의 코어의 위치를 판단하여 수신된 패킷을 처리하는 드라이버 코어 위치와 어플리케이션 코어의 위치 및 패킷 세션의 처리량을 고려하여 TCP/TP 스택 처리할 네트워크 처리 코어를 결정함으로써, 상위 레이어보다 하위 레이어에서 더 높거나 같은 성능의 코어를 사용하여 멀티 코어를 포함하는 전자 장치에서 패킷의 묶음 처리 성능을 보다 효율적으로 향상시킬 수 있다.
도 1은 다양한 실시예들에 따른 네트워크 환경 내의 전자 장치의 블럭도이다.
도 2는 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치의 구성도이다.
도 3a및 도 3b는 다양한 실시예에 따른 네트워크 패킷 처리 동작을 설명하기 위한 도면이다.
도 4는 다양한 실시예에 따른 네트워크 패킷 처리의 동작 주체를 설명하기 위한 도면이다.
도 5는 일 실시예에 따라 전자 장치의 멀티코어에서 패킷의 처리를 예시한 도면이다.
도 6은 일 실시예에 따라 전자 장치의 멀티코어에서 패킷의 처리를 예시한 도면이다.
도 7은 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도 8은 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도 9는 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도10은 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도11 은 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도12는 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도 13a는 일 실시예에 따라 전자 장치에서 패킷을 처리하는데 소모되는 전류 소모량을 비교한 그래프이다.
도 13b는 일 실시예에 따라 전자 장치에서 세션의 처리량(Throughput) 성능을 비교한 그래프이다.
도 13c는 일 실시예에 따라 전자 장치에서 패킷을 처리하는데 소모되는 전류 소모량을 비교한 그래프이다.
도 1은, 다양한 실시예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블럭도이다.
도 1을 참조하면, 다양한 실시 예들에 따른 전자 장치(101)는 다양한 형태의 장치가 될 수 있다. 전자 장치(101)는, 예를 들면, 휴대용 통신 장치(예: 스마트폰), 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치(wearable device), 또는 가전 장치를 포함할 수 있다. 본 문서의 실시 예에 따른 전자 장치(101)는 전술한 기기들에 한정되지 않는다.
네트워크 환경(100)에서 전자 장치(101)는 제 1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제 2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 표시 장치(160) 또는 카메라 모듈(180))가 생략되거나, 하나 이상의 다른 구성 요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들은 하나의 통합된 회로로 구현될 수 있다. 예를 들면, 센서 모듈(176)(예: 지문 센서, 홍채 센서, 또는 조도 센서)은 표시 장치(160)(예: 디스플레이)에 임베디드된 채 구현될 수 있다.
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)을 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 로드하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일 실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서), 및 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 추가적으로 또는 대체적으로, 보조 프로세서(123)은 메인 프로세서(121)보다 저전력을 사용하거나, 또는 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 표시 장치(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 장치(150)는, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 장치(150)은, 예를 들면, 마이크, 마우스, 키보드, 또는 디지털 펜(예: 스타일러스 펜)을 포함할 수 있다.
음향 출력 장치(155)는 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 장치(155)는, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있고, 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일 실시예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
표시 장치(160)는 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 표시 장치(160)은, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일 실시예에 따르면, 표시 장치(160)는 터치를 감지하도록 설정된 터치 회로(touch circuitry), 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 센서 회로(예: 압력 센서)를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일 실시예에 따르면, 오디오 모듈(170)은, 입력 장치(150)를 통해 소리를 획득하거나, 음향 출력 장치(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102)) (예: 스피커 또는 헤드폰))를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일 실시예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)이 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일 실시예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일 실시예에 따르면, 연결 단자(178)은, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일 실시예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일 실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일 실시예에 따르면, 전력 관리 모듈(388)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성 요소에 전력을 공급할 수 있다. 일 실시예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108))간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일 실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제 1 네트워크(198)(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제 2 네트워크(199)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성 요소(예: 단일 칩)으로 통합되거나, 또는 서로 별도의 복수의 구성 요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 및 인증할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시예에 따르면, 안테나 모듈은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 하나의 안테나를 포함할 수 있다. 일 실시예에 따르면, 안테나 모듈(197)은 복수의 안테나들을 포함할 수 있다. 이런 경우, 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC)이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
다양한 실시예에 따른 전자 장치(101)의 프로세서(120)는, N개의 멀티 코어를 포함할 수 있다. 멀티 코어는 트래픽 처리 성능에 따라 전력 소모가 많지만 처리 능력이 높은 고성능 코어(예:big core)와, 전력 소모가 적지만 처리 능력이 낮은 저승능 코어(예:little core)를 포함할 수 있다.
다양한 실시예에 따르면, 네트워크 환경(100)에서 전자 장치(101)는 네트워크로부터 패킷을 수신하고, 수신된 패킷을 멀티 코어들로 분산하여 처리할 수 있다. 각각의 코어는 예를 들어, 수신된 패킷을 상위 계층으로 전달하는 드라이버 코어, 네트워크 스택 처리를 프로세싱하는 네트워크 처리 코어, 사용자 영역에서 어플리케이션(application)을 처리하는 어플리케이션 코어와 같은 계층으로 구분되며, 각 계층에서 패킷을 처리할 수 있다.
이하, 멀티 코어를 포함하는 전자 장치(101)에서 드라이버 코어의 위치 및 어플리케이션 코어의 위치를 고려하여 네트워크 스택 처리하는 네트워크 처리 코어의 위치를 결정하는 방법 및 이를 위한 전자 장치(101)를 설명하기로 한다.
도 2는 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치의 구성도이이다.
도 2를 참조하면, 일 실시예에 따른 멀티 코어를 포함하는 전자 장치(201)(예: 도 1의 전자 장치(101))는, 멀티 코어(210)(예: 도 1의 프로세서(120)), 네트워크 드라이버(220), 코어 관리 컨트롤러(230) 및 메모리(240)(예: 도 1의 메모리(130))를 포함할 수 있다.
일 실시예에 따르면, 멀티 코어(210)는 적어도 N개의 코어(211,212,213,214)를 포함하는 프로세서를 포함할 수 있다. 멀티 코어(210)는 트래픽 처리 성능에 따라 전력 소모가 많지만 처리 능력이 높은 제1 타입 코어 (예: 고성능 코어, 고전력 코어, 빅 코어(big core))과, 전력 소모가 적지만 처리 능력이 낮은 제2 타입 코어(예: 저성능 코어, 저전력 코어, 리틀 코어(little core))을 포함할 수 있으나, 이에 한정하는 것은 아니다. 제1 타입 코어와 제2 타입 코어의 수는 전자 장치의 사양(또는, 스펙(spec: specification))에 따라 결정될 수 있다.
일 실시예에 따르면, 멀티 코어(210)에 포함된 N개의 코어는 코어 넘버(예: core 0,core 1, core 2, core 3, core 4 ?? core N)로 지칭될 수 있다. 멀티 코어(210)에 포함된 코어들은 성능에 따라 제1 클러스터와, 제2 클러스터로 분류될 수 있다. 전자 장치는 클러스터를 구분하여 코어 넘버가 부여될 수 있다. 예를 들어, 전자 장치가 8개의 멀티 코어를 포함한 경우, core 4 내지 7은 제1 클러스터일 수 있고, core 0 내지 core 3은 제2 클러스터일 수 있다. 전자 장치(101)는, 코어 넘버를 기반으로 각 코어가 제1 클러스터인지 제2 클러스터(cluster)에 위치하는지를 확인할 수 있다.
일 실시예에 따르면, 네트워크 드라이버(220)는 네트워크 인터페이스 카드(NIC: network interface card)(미도시)를 포함 할 수 있다. 네트워크 드라이버(220)는 전자 장치 간 네트워크 통신을 하기 위한 구성으로 소프트웨어일 수 있다. 일 실시예에 따르면, 네트워크 드라이버(200)는 PCI(Peripheral Component Interconnect express) 인터페이스를 통해 커뮤니케이션 프로세서의 모뎀(예: 랜카드 역할)과 연결될 수 있다. 다양한 실시예에 따르면, 네트워크 인터페이스 카드는 랜카드를 포함할 수 있으나, 이에 한정하는 것은 아니다. 전자 장치(201)는 유선 또는 무선으로 네트워크에 접속할 수 있다. 전자 장치(201)는 네트워크 인터페이스 카드 또는 모뎀을 매개체로 맥(MAC) 주소를 사용하여 네트워크에 접속할 수 있다.
일 실시예에 따른 네트워크 드라이버(220)(예:네트워크 인터페이스 카드)는 수신된 패킷을 저장하는 수신버퍼 (Rx)(미도시)와 사용자 영역의 애플리케이션에서 처리된 패킷을 송신하기 위해 저장하는 송신버퍼(Tx)(미도시)를 포함할 수 있다.
일 실시예에 따른 네트워크 드라이버(220)는, 다른 전자 장치와 네트워크 통신을 통해 패킷을 수신할 수 있다. 일 실시예에 따른 네트워크 드라이버(220)는, 커널(kernel)에 탑재될 수 있으며, 네트워크 인터페이스 카드(또는 모뎀을 포함한 커뮤니케이션 프로세서)로부터 패킷 수신에 대한 인터럽트 신호를 수신할 수 있다. 커널은 전자 장치(201)의 운영 체제(예: 도 1의 운영체제 142))에 포함될 수 있다. 일 예를 들어, 패킷은 복수의 패킷을 포함하는 형태일 수 있으나, 이에 한정하는 것은 아니며 이하, 각 계층의 코어로 전달되는 패킷의 양은 복수의 패킷으로 이해될 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(230)는 멀티 코어 중 적어도 하나의 코어에 구동되거나, 도 1의 프로세서(120)의 일부로서 구동될 수 있다.
일 실시예에 따르면, 코어 관리 컨트롤러(230)는 멀티 코어(210)와 독립적으로 운용되는 별도의 하드웨어 구성일 수 있다.
다른 실시예에 따르면, 코어 관리 컨트롤러(230)는 소프트웨어(예: 도 1의 프로그램(140))일 수 있다. 예를 들어, 소프트웨어 형태의 코어 관리 컨트롤러(230)는 메모리(240)에 명령어(또는, 인스트럭션(instruction))들의 형태로 저장되고 프로세서(120)에 의해 코어 관리 컨트롤러(230)의 동작들이 실행될 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(230)는 어플리케이션의 실행을 감지하고, 어플리케이션을 멀티 코어 중 하나의 코어로 할당하고 멀티 코어를 제어하는 동작을 수행할 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(230)는 네트워크를 통해 송수신되는 패킷의 세션과 관련된 정보를 모니터링하고, 패킷을 처리할 코어의 위치를 결정할 수 있다. 예를 들어, 코어의 위치는, 코어의 넘버 또는 클러스터 타입 정보일 수 있다. 일 실시예에 따른 코어 관리 컨트롤러(230)는 병렬 처리 엔진(미도시)으로부터 패킷의 세션 ID, 병렬 처리 엔진으로 패킷을 전달한 드라이버 코어의 넘버, 세션 ID와 관련된 어플리케이션(예를 들어, 패킷을 처리하는 어플리케이션) 코어의 넘버 및/또는 각 세션의 처리 정보 중 적어도 하나를 획득할 수 있다. 예를 들어, 병렬 처리 엔진은 운영체제(예: 도1의 운영체제(142))에서 구동되는 소프트웨어로서, 네트워크로부터 수신된 패킷을 세션 ID로 구별하고 패킷이 각 코어에서 분산 처리될 수 있도록 코어를 할당하는 엔진으로 이해될 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(230)는 병렬 처리 엔진으로부터 전달된 정보에 기반하여 패킷을 네트워크 스택(예: TCP/IP 스택) 처리하는 네트워크 처리 코어의 넘버를 결정할 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(230)는 병렬 처리 엔진으로부터 전달된 정보에 기반하여 패킷을 네트워크 스택(예: TCP/IP 스택) 처리하는 네트워크 처리 코어의 클러스터 타입을 결정할 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(230)는 사용자 영역에서 데이터를 처리하는 어플리케이션 코어의 위치를 모니터링하고, 어플리케이션 코어의 위치가 변경되는 경우 이를 반영하여 네트워크 처리 코어의 위치를 변경할 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(230)는 어플리케이션의 동작 상태를 모니터링하여 어플리케이션 코어의 위치를 결정하고, 어플리케이션 코어의 위치를 변경해야 할 경우, 어플리케이션 코어의 위치가 변경되도록 제어할 수 있다. 일 예를 들어, 어플리케이션 코어의 위치는, 코어 넘버 정보 또는클러스터 타입 정보일 수 있다. 예를 들어, 코어 관리 컨트롤러(230)는 어플리케이션 계층에서 어플리케이션 코어의 위치를 고성능 코어에서 저성능 코어로 변경해야 할 경우, 코어 넘버 정보 또는 코어 클러스터 타입 정보를 기반으로 저성능 클러스터 중 하나의 코어를 선택하여 어플리케이션 코어로 할당할 수 있다.
일 실시예에 따르면, 코어 관리 컨트롤러(230)는 세션 ID를 기반으로 어플리케이션을 처리하는 코어들의 동작 시간 및 처리되는 패킷의 수를 체크하고, 특정 코어의 사용이 기준동작값을 초과하여 구동하는 경우 어플리케이션을 처리한 특정 코어 클러스터를 기반으로 어플리케이션 코어의 위치를 결정할 수 있다. 예를 들어, 오디오재생 앱과 관련하여 패킷을 처리하는 어플리케이션 코어가 고성능 클러스터에서 주로 구동되는 경우, 오디오 재생 앱에 대응하는 어플리케이션 코어의 위치는 고성능 클러스터로 결정할 수 있다.
일 실시예에 따르면, 코어 관리 컨트롤러(230)는 어플리케이션이 포어그라운드 또는 백그라운드에서 실행되는 지 여부에 따라 어플리케이션 코어의 위치를 결정할 수 있다.
일 실시예에 따르면, 코어 관리 컨트롤러(230)는 특정 어플리케이션의 코어 위치를 사전에 지정하거나 또는 학습에 따라 어플리케이션 코어의 위치를 결정할 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(230)는 관련 세션의 네트워크 처리 코어를 결정하기 위해 사용되는 (패킷 처리량의) 임계 레벨 (예: low, medium, high level)을 확인할 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(230)는 어플리케이션 코어의 위치, 패킷을 병렬 처리 엔진으로 전달하는 드라이버 코어의 위치 및 어플리케이션의 특성 정보 중 적어도 하나를 기반으로 어플리케이션의 패킷 처리량(hroughput)에 대한 임계값을 변경하고, 임계값에 대한 임계 레벨을 반영하여 네트워크 처리 코어를 결정할 수 있다. 어플리케이션의 패킷 처리량은 단위 시간당 패킷을 처리하는 데이터의 양으로 BPS(bit per second) 또는 PPS(packet per second) 단위로 나타낼 수 있다.
일 실시예에 따르면, 코어 관리 컨트롤러(230)는 어플리케이션이 실행되는 주 코어의 위치에 따라 어플리케이션의 패킷 처리량에 대한 임계값을 변경할 수 있다.
일 실시예에 따르면, 코어 관리 컨트롤러(230)는 어플리케이션이 포어그라운드 또는 백그라운드에서 실행되는 지에 따라 어플리케이션의 패킷 처리량에 대한 임계값을 변경할 수 있다.
일 실시예에 따르면, 코어 관리 컨트롤러(230)는 사전 설정된 정보 또는 학습에 따라 어플리케이션 코어의 위치를 지정되는 경우 지정된 코어의 위치에 따라 어플리케이션의 패킷 처리량에 대한 임계값을 변경할 수 있다.
일 실시예에 따른 메모리(240)는 DRAM(dynamic random access memory), SRAM(static random access memory), SDRAM(synchronized dynamic random access memory), DDR2(double data rate 2) RAM 또는 RDRAM(rambus dynamic random access memory) 또는 다른 유형의 메모리 중 적어도 하나를 포함할 수 있다.
일 실시예에 따른 메모리(240)는, 예를 들어, 소프트웨어(예: 프로그램(도 1의 프로그램(140)), 병렬 처리 엔진), 소프트웨어와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 적어도 일시적으로 저장할 수 있다.
일 실시예에 따르면, 프로그램은 전자 장치(201)의 하나 이상의 리소스들을 제어하기 위한 운영 체제, 미들웨어 및 어플리케이션 중 적어도 하나를 포함할 수 있다. 운영 체제는 전자 장치(201)의 하나 이상의 시스템 리소스들(예: 프로세스, 메모리, 또는 전원)의 관리(예: 할당 또는 회수)를 제어할 수 있다. 미들웨어는 전자 장치(201)의 하나 이상의 리소스들로부터 제공되는 기능 또는 정보가 어플리케이션에 의해 사용될 수 있도록 다양한 기능들을 어플리케이션으로 제공할 수 있다.
도 3a 및 도 3b는 다양한 실시예에 따른 네트워크 패킷 처리 동작을 설명하기 위한 도면이고, 도 4는 다양한 실시예에 따른 네트워크 패킷 처리의 동작 주체를 설명하기 위한 도면이다. 도 3a 및 도 3b에 도시된 전자 장치는 패킷을 수신하여 처리하는 수신 장치를 예시한 구성일 수 있다.
도 4를 참조하면, 다양한 실시예에 따르면, 멀티 코어(410)(예: 도 2의 멀티 코어(210))를 포함하는 전자 장치(예: 도 2의 전자 장치(201))는 네트워크 드라이버(320)(예: 도2의 네트워크 드라이버(220))를 통해 패킷들을 수신하고, 하드웨어 영역, 운영 체제 영역 및 사용자 영역으로 구분하여 수신된 패킷을 처리할 수 있다.
일 실시예에 따르면, 전자 장치는 도 3a에 도시된 바와 같이, 하드웨어 영역에 배치되는 네트워크 인터페이스 카드(315), 운영 체제 영역에 배치되는 네트워크 드라이버(320), 병렬 처리 엔진(concurrent processing engine) (340), 코어 관리 컨트롤러(330)(예: 도 2의 코어 관리 컨트롤러(220)) 및 TCP/IP 스택(350)을 포함하고, 사용자 영역에 배치되는 어플리케이션(360)을 포함할 수 있다. 여기서, 운영 체제 영역은 커널 영역과 동일하거나 유사한 의미로 사용될 수 있다.
다른 실시예에 따르면, 전자 장치는 도 3b에 도시된 바와 같이, 하드웨어 영역에 배치되는 네트워크 인터페이스 카드(315), 병렬 처리 엔진 A(345), 운영 체제 영역에 배치되는 네트워크 드라이버(320), 병렬 처리 엔진(concurrent processing engine) (340), 코어 관리 컨트롤러(330) 및 TCP/IP 스택(350)을 포함하고, 사용자 영역에 배치되는 어플리케이션(360)을 포함할 수 있다.
도 3b의 실시예에서는 병렬 처리 엔진을 복수의 메모리를 이용해 하드웨어 구조로 추가 구현된 예시이다. 도 3b의 실시예에서 병렬 처리 엔진A (345)는 네트워크 인터페이스 카드에 패킷(예: 복수의 패킷)이 수신되면, 엔진 내부에 장착된 각각의 메모리 버퍼(예 큐)에 패킷 별로 전달하고 각 메모리 버퍼 별로 지정된 각각의 코어들(예: 제1코어, 제2 코어, 등등)를 활성화시킬 수 있다. 활성화된 각 코어는 네트워크 드라이버의 동작을 제어하고, 병렬 처리 엔진(340)을 구동시킬 수 있다. 도 3b의 실시예에는 네트워크 드라이버(320)을 동작시키는 코어가 복수 개로 이해될 수 있다. 이하, 네트워크 인터페이스 카드(315), 네트워크 드라이버(320), 병렬 처리 엔진(340), 코어 관리 컨트롤러(330) 및 TCP/IP 스택(350) 의 동작은 도 3a와 동일하다. 전자 장치는 네트워크 드라이버(320)를 통해 수신된 패킷을 운영 체제 영역에서 처리(예: 디캡슐화(de-encapsulation))하고, 운영 체제 영역에서 처리된 패킷은 사용자 영역의 어플리케이션(360)을 통해 사용자에게 특정 서비스로서 제공할 수 있다. 전자 장치에서 네트워크 드라이버(320)를 통해 수신된 패킷은 네트워크 인터페이스 카드, 네트워크 드라이버(320), TCP/IP 스택(350)) 및 어플리케이션(360)의 순서로 처리될 수 있다. 수신된 패킷은 각 계층에서 서로 다른 넘버를 가진 코어에 의해 처리될 수 있다.
일 실시예에 따르면, 네트워크 드라이버를 통해 수신된 패킷은 도 4에 도시된 바와 같이, 드라이버 코어(A), 네트워크 처리 코어(B), 어플리케이션 코어(C)의 계층 순서로 처리될 수 있으며, 이는 설명의 편의를 위하여 소프트웨어 적으로 구분하였을 뿐, 하드웨어 구성으로 구분된 각 코어들(예: core1, core2, core3..)은 각 계층의 코어 동작을 수행할 수 있다. 이하, 각 계층에서 패킷을 처리하는 코어의 주체 및 동작에 대해서는 후술하기로 한다.
일 실시예에 따른 네트워크 드라이버(320)는 네트워크 인터페이스 카드를 통해 네트워크 패킷을 수신할 수 있다. 네트워크 드라이버(320)는 병렬 처리 엔진(340)으로 수신된 패킷을 전달할 수 있다.
일 실시예에 따르면, 네트워크 드라이버(320)는 패킷이 수신되었을 시 병렬 처리 엔진(340)으로 수신된 패킷을 전달할 수 있다.
일 실시예에 따른 병렬 처리 엔진 (340)은 네트워크 드라이버(320)로부터 전달된 패킷의 세션 ID를 생성하여 패킷을 세션 별로 구분할 수 있다. 병렬 처리 엔진(340)은 패킷의 IP 주소 정보(예: sender ip, receiver ip) 및 포트 정보(예: sender port, receiver port)를 기반으로 패킷 세션을 구분하기 위한 세션 ID를 생성할 수 있다. 병렬 처리 엔진(320)은 코어 관리 컨트롤러(330)에 수신된 패킷의 세션 ID및 병렬 처리 엔진(320)으로 패킷을 전달한 드라이버 코어(A)의 넘버를 전달할 수 있다.
일 실시예에 따르면, 병렬 처리 엔진(320)은 코어 관리 컨트롤러(330)로부터 전자 장치 내에 탑재된 멀티 코어(410)들 중 패킷의 세션을 담당할 코어의 위치 정보를 수신할 수 있다. 코어의 위치 정보는 코어 넘버 또는 코어의 클러스터 정보일 수 있다. 예컨대, 세션을 담당할 코어는 TCP/IP 스택 처리할 코어 예를 들어 도 4의 네트워크 처리 코어(B)를 의미할 수 있다.
일 실시예에 따른 병렬 처리 엔진(320)은 결정된 위치에 대응하는 네트워크 처리 코어를 활성화하고, 네트워크 드라이버(320)로부터 수신된 패킷을 TCP/IP 스택으로 전달할 수 있다.
일 실시예에 따른 TCP/IP 스택(350)은 패킷에 대해 네트워크 계층(IP), 전송 계층(예: TCP, UDP 등) 프로세싱을 수행 할 수 있다. 일 예를 들어, TCP/IP 스택(350)은 수신된 패킷에 대해 IP 처리, TCP 절차를 수행하고, TCP 처리된 패킷을 사용자 버퍼(447) 또는 어플리케이션 코어(C)로 전달할 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(330)는, 매니저(manager)(331) 와 데이터베이스(DB: data base) (332)를 포함할 수 있다.
코어 관리 컨트롤러(330)는, 매니저(331)와 데이터베이스(332)를 기반으로 운영 체제 영역에서 패킷 처리 상태 및 어플리케이션의 동작 상태를 모니터링하고, 병렬 처리 엔진(340)에서 수신된 패킷의 세션 ID및 코어 결정 정책을 기반으로 패킷 처리를 위한 네트워크(예: TCP/IP 스택) 처리 코어(B) 및/또는 어플리케이션 코어(C)의 위치를 결정할 수 있다. 예를 들어, 코어 관리 컨트롤러(330)는, 네트워크 처리 코어(C) 및/또는 어플리케이션 코어(C)의 넘버를 결정하거나 어플리케이션 코어(C)가 어느 클러스터 타입에 위치하는지를 결정할 수 있다.
일 실시예에 따른 코어 관리 컨트롤러(330)의 매니저(331)는 병렬 처리 엔진(340)으로부터 수신된 패킷의 세션ID를 수신할 수 있다. 매니저(331)는 해당 세션 ID와 관련된 정보를 모니터링할 수 있다. 예를 들어, 매니저(331)는 각 세션의 패킷 처리량(throughput), 네트워크 드라이버(320)에서 병렬 처리 엔진(340)으로 해당 세션의 패킷을 전달한 드라이버 코어(A)의 위치, TCP/IP 스택(350)에서 어플리케이션(360)으로 세션의 패킷을 가져가는 어플리케이션 코어(C)의 위치를 모니터링할 수 있다. 일 예를 들면, 매니저(330)는 TCP/IP 스택(350)에 포함된 에이전트(미도시)를 통해 어플리케이션(360)으로 세션의 패킷을 처리하는 어플리케이션 코어(C)의 넘버 또는 클러스터 정보를 확인할 수 있다.
일 실시예에 따른 매니저(331)는, 모니터링 정보(예: 패킷 처리량, 코어 위치)를 데이터 베이스(332)에 저장할 수 있다.
일 실시예에 따른 매니저(331)는 모니터링 정보, 어플리케이션 코어(C)의 위치. 드라이버 코어(A)의 위치 및 해당 세션의 패킷 처리량을 기반으로 해당 세션의 패킷을 처리할 네트워크 처리 코어(B) 및/또는 어플리케이션 코어(C)의 위치를 결정할 수 있다.
일 실시예에 따른 매니저(331)는 네트워크 처리 코어(B) 및/또는 어플리케이션 코어(C)의 위치를 결정할 수 있다. 예를 들어, 매니저(331)가 네트워크 처리 코어(B)를 고성능 클러스터로 결정된 위치 정보를 병렬 처리 엔진(340)으로 전달하면, 병렬 처리 엔진(340)은 고성능 클러스터에 속한 코어들 중 하나의 코어를 선택하여 네트워크 처리 코어(B)로 할당할 수 있다. .
일 실시예에 따르면, 데이터 베이스(DB)(332)는 매니저(331)에 의하여 모니터링 되는 세션의 정보, 사전에 정의된 코어 결정 정책 정보, 세션 별 정보, 코어 별 정보, 및 어플리케이션 정보를 저장할 수 있다. 예를 들어, 데이터 베이스(DB)는 테이블 형태로 저장될 수 있으나, 이는 설명의 편의를 위하여 예시를 들어 설명할 뿐이며, 이에 한정하는 것은 아니다.
일 예를 들어, 다음의 [표 1] 은 코어 별 정보를 나타내는 테이블 표이다. 코어별 정보는 코어 번호에 대응하는 클러스터(Cluster) 타입과 그 코어에서 사용 가능한 최대 클락(Clock) 정보를 포함할 수 있다. 매니저(331)는 코어 별 정보를 통해 코어가 어느 클러스터 타입에 위치하는 지를 확인할 수 있다.
코어넘버 클러스터 타입 최대 클럭
0 LITTLE 1.7GHz
1 LITTLE 1.7GHz
... ... ...
8 BIG 2.7GHz
일 예를 들어, 다음의 [표 2]는 세션 별 정보를 나타내는 테이블이다. 세션 별 정보는 세션 ID에 대응하는 세션의 처리량 (throughput), 수신 데이터 사이즈 드라이버 코어(A) 넘버, 수신 데이터 사이즈, 어플리케이션 코어(C) 넘버, 어플리케이션 식별정보(ID), 사전 정의된 어플리케이션에 대한 임계 처리량 범위 정보를 포함할 수 있다. 세션의 처리량은 설정된 기간 동안 세션에서 패킷이 처리된 양을 의미하며, 예를 들어 하나의 세션에서 초당 10MB의 패킷을 처리한 경우, 세션의 처리량은 10MBps일 수 있다.
일 실시예에 따르면, 세션 별 정보는, 드라이버 코어(A) 넘버, 어플리케이션 코어(C) 넘버 및 코어의 임계 처리량 범위의 조합에 대응하는 네트워크 처리 코어(B) 넘버 포함할 수 있다.
세션 ID 드라이버 코어 어플리케이션 코어 수신 데이터 사이즈 처리량 네트워크처리 코어 어플리케이션 ID
0 0 3 10Mb 10Mbps 2 1
1 0 5 150Mb 150Mbps 7 2
... ... ... ... ... ... ...
N [0,M] [0,M] Number Number [0,M] K
일 예를 들어, [표 3] 은 사전 정의된 어플리케이션의ID 에 대응하여 동작 FLAG 값을 나타낸 테이블이다. FLAG 값은 사전 정의된 어플리케이션인지를 나타내는 정보일 수 있다.
어플리케이션 ID FLAG
0 0
1 1
... ...
K Number
예를 들어, 다음의 [표 4]는 코어 결정 정책을 나타낸 테이블이다. 매니저(331)는 드라이버 코어(A)의 위치 및 어플리케이션 코어(C)의 위치, 세션의 처리량 정보를 기반으로 네트워크 처리 코어(B) 의 위치를 결정할 수 있다. 예를 들어, 드라이버 코어(A)가 저성능 타입에 위치하고, 어플리케이션의 코어(C)가 고성능 타입에 위치하고, 패킷의 처리량이 high 처리량에 해당되는 경우, 매니저(331)는 네트워크 스택 처리 코어(B)를 고성능 타입의 위치로 결정할 수 있다. 또는 매니저(331)는 고성능 타입에 포함되는 코어들 중 넘버를 지정하거나 랜덤하게 선택한 코어에서 네트워크 스택 처리되도록 네트워크 처리 코어(B)의 위치를 결정할 수 있다.
드라이버
코어
어플리케이션 코어 Low throughput medium
throughput
Heavy
throughput
미리 설정된 어플리케이션의 코어
LITTLE LITTLE - LITTLE BIG LITTLE
LITTLE BIG BIG BIG
BIG LITTLE BIG BIG
BIG BIG BIG BIG
이하, 설명의 편의를 위하여 운영 체제 영역에서 패킷을 처리하는 코어의 주체 및 동작을 설명하기로 한다. 도4에 도시된 바와 같이, 일 예를 들어, 멀티 코어(410) 는 core 1(411), core 2 (412), core 3 (413) 및 core 4(414)를 포함할 수 있으나, 이는 예시일 뿐 코어의 수는 한정되지 않는다. 멀티 코어(410)는 성능에 따라 저성능 클러스터와 고성능 클러스터로 구분될 수 있다. 예를 들어, core 1(411) 및 core 2 (412)는 전력 소모가 적지만 처리 능력이 낮은 저성능 클러스터, core 3 (413) 및 core 4 (414)는 트래픽 처리 성능에 따라 전력 소모가 많지만 처리 능력이 높은 고성능 클러스터에 포함될 수 있다.
드라이버 코어(A)는, 네트워크 드라이버(320)에서 병렬 처리 엔진(340)으로 패킷을 전달하는 코어일 수 있다. 예컨대, 드라이버 코어(A)는, 네트워크 드라이버(320)로 전달된 패킷을 병렬 처리 엔진(340)의 엔진 버퍼(442)에 삽입할 수 있다. 드라이버 코어 (A)는 병렬 처리 엔진(340)의 동작을 제어할 수 있다.
일 실시예에 따르면, 병렬 처리 엔진(340)은 코어 관리 컨트롤러(330)로부터 전달받은 코어 할당 정보를 기반으로 멀티 코어(410) 중 어느 하나를 네트워크 처리 코어(B)로 결정할 수 있다. 병렬 처리 엔진(340)은, 결정된 네트워크 처리 코어(B)에 해당되는 넘버의 코어를 활성화하고 결정된 네트워크 처리 코어(B)에 대응되는 엔진 버퍼(442) 에 패킷을 삽입할 수 있다.
네트워크 처리 코어(B)는 TCP/IP 스택(350)에서 패킷을 처리하는 코어일 수 있다. 어플리케이션 코어(C)는TCP 버퍼에서 TCP처리된 패킷을 사용자 영역에서 처리하는 코어일 수 있다.
일 실시예에 따르면, 네트워크 드라이버(320)를 통해 수신된 패킷은 드라이버 코어(A), 네트워크 처리 코어(B), 어플리케이션 코어(C)의 순서로 처리될 수 있다. 패킷은 각 계층에서 서로 다른 넘버를 가진 코어에 의해 처리될 수 있다. 예를 들어, 패킷 처리 과정에서 드라이버 코어(A)는 core 0으로 지정되었으나, 네트워크 처리 코어(B)는 core3으로 지정될 수 있다.
각 계층의 코어들(A, B, C)은 패킷 처리를 위한 버퍼들이 할당되어 동작할 수 있다. 예를 들어, 드라이버 코어(A) 계층은 패킷을 저장하고 병렬 처리 엔진(340)으로 저장된 패킷을 전달하기 위해 드라이버 버퍼(441)가 할당될 수 있다. 병렬 처리 엔진(340)은 임시적으로 네트워크 처리 코어(B)로 전달될 패킷들을 저장하기 위한 엔진 버퍼(442)가 할당될 수 있다. 네트워크 처리 코어(B) 계층은 TCP/TP처리를 위한 TCP버퍼(443)가 할당될 수 있다. TCP버퍼(443)는 세션 별로 할당될 수 있으며, 이에 한정하는 것은 아니다. 어플리케이션 코어(C) 계층은 어플리케이션에서 데이터 처리를 위한 사용자 버퍼(447)가 할당될 수 있다. 도 4의 도면에서는 설명의 편의를 위하여 단일의 버퍼)로 도시하였으나, 각 계층에서의 버퍼는 복수개의 버퍼가 할당될 수도 있다. 각 버퍼는 스택(stack)구조의 메모리 또는 큐(queue) 구조로 구현될 수 있으나 이에 한정하는 것은 아니다. 각 버퍼는 전자 장치(101)(예: 도 1의 전자 장치(101))에 포함된 메모리(예: 도 1의 메모리(130))의 일부 영역에 포함될 수 있다.
일 실시예에 따르면, 네트워크 드라이버(320)는 네트워크 인터페이스 카드(NIC)로부터 수신된 패킷을 임의의 드라이버 코어(A)의 제어 하에 병렬 처리 엔진(340)의 엔진 버퍼(442)로 전달할 수 있다.
예를 들어, 네트워크 드라이버에 패킷이 수신되면 임의의 넘버 예를 들어, core 1(411)이 활성화되고 core 1 (411) 넘버를 가진 드라이버 코어(A)가 병렬 처리 엔진(340)의 동작을 제어하고, 수신된 패킷을 병렬 처리 엔진(340)의 엔진 버퍼(442)로 전달할 수 있다.
병렬 처리 엔진(340)은 패킷의 세션 ID를 생성하고 세션ID 정보 및 패킷을 전달한 드라이버 코어(A)의 위치 정보를 코어 관리 컨트롤러(330)로 전달할 수 있다.
코어 관리 컨트롤러(330)는 수신된 패킷들의 세션 ID와 관련하여 사용자 영역에서 어플리케이션(360)을 처리하는 어플리케이션 코어(C)의 위치를 결정하고, 병렬 처리 엔진(340)으로 어플리케이션 코어(C)의 위치 정보를 제공할 수 있다. 예를 들어, 코어 관리 컨트롤러(330)는 어플리케이션 코어(C)의 위치, 드라이버 코어의 위치 및 각 세션의 패킷 처리량을 기반으로 TCP/TP 스택(350)을 처리할 네트워크 처리 코어(350)의 위치를 결정할 수 있다.
병렬 처리 엔진(340)은 코어 관리 컨트롤러(330)로부터 전달된 위치 정보를 기반으로 결정된 위치에 해당되는 네트워크 처리 코어(B)를 활성화할 수 있다. 병렬 처리 엔진(340)은 코어 관리 컨트롤러(330)로부터 전달된 위치 정보를 기반으로 어플리케이션 코어(C)가 변동되는 위치 정보를 반영하고, 어플리케이션 코어(C) 보다 높거나 같은 성능을 가진 코어가 패킷을 처리 할 수 있도록 네트워크 처리 코어(B)를 할당할 수 있다.
네트워크 처리 코어(B)는, TCP버퍼(443)에 저장된 패킷에 대해 TCP 스택 처리할 수 있다. 예를 들어, 병렬 처리 엔진(340)에 의해 core 3 (413)이 활성화된 경우, core 3 넘버를 가진 네트워크 처리 코어(B)는, 엔진 버퍼(442)에 저장된 패킷을 TCP버퍼(443)로 전달하고, TCP버퍼(443)에 저장된 패킷에 대해 TCP/IP스택 처리할 수 있다.
어플리케이션 코어(C)는 패킷의 세션 ID를 기반으로 네트워크 처리 코어(B)에서 TCP/IP 처리된 패킷을 처리할 수 있다.
일 실시예에 따르면, TCP버퍼(443)는 적어도 2개의 영역으로 할당될 수 있다. 예를 들어, TCP버퍼(443)는 어플리케이션으로 전송하거나 어플리케이션이가져가는 패킷 즉, TCP 처리된 패킷이 저장되는 수신큐(RX) 영역(444)과 TCP/TP 스택 처리할 패킷이 전달되는 백로그(Backlog) 영역(445)을 포함할 수 있다. 수신큐 영역(444)에는 네트워크 처리 코어(B)에서 TCP/IP 처리된 패킷이 저장될 수 있다.
일 실시예에 따르면, 어플리케이션(360)이 수신큐 영역(444)에 저장된 패킷을 사용자 영역으로 전달하거나 가져가는 동안 네트워크 처리 코어(B)는 TCP/TP 스택 처리를 위해 백로그 영역(445)에 패킷을 삽입할 수 있다.
일 실시예에 따르면, 패킷의 세션 ID와 관련된 어플리케이션(360)은 어플리케이션 코어(C)가 수신큐 영역(444)에 저장된 TCP 처리된 모든 패킷을 처리하는 동안, 네트워크 처리 코어(B)는 백로그 영역(445)에 삽입된 모든 패킷에 대해 묶음 처리(Batching)할 수 있다.
다양한 실시에에 따른 전자 장치는 상위 레이어 보다 하위 레이어의 코어에서 더 높거나 같은 성능의 코어로 코어로 동작하도록 결정함으로써, 하위 레이어에서 처리된 패킷에 대한 묶음 처리를 최적화된 상태로 상위 레리어로 전달하여 멀티 코어의 성능을 향상시킬 수 있다
도 5는 일 실시예에 따라 전자 장치의 멀티코어에서 패킷의 처리를 예시한 도면이다.
종래 기술에 따른 코어의 결정에 따르면, RPS기반의 경우 네트워크 드라이버로부터 패킷들이 수신되면, 별도의 우선 순위 없이 복수의 코어 중 하나를 임의적으로 네트워크 처리 코어를 선택하여 TCP/IP를 처리한다. RFS기반의 경우 어플리케이션(590)이 구동되는 코어(core N)의 넘버를 가진 네트워크 처리 코어에서 TCP/IP를 처리하도록 결정한다. 종래 기술에 따르면 네트워크 처리 코어를 선택하는데 있어서 코어의 처리량 및 어플리케이션을 실행하는 코어의 위치를 반영하지 않으며, 어플리케이션 코어와 드라이버 코어의 성능 차이에 따라 멀티 코어를 충분하게 활용하지 못하여 낮은 성능 및 비효율적으로 동작할 수 있다. 또한 패킷이 특정 세션으로 치우치는 경우, 한 코어에 부하(or 오버헤드)가 발생할 수 있으며, 패킷 처리 성능이 저하될 수 있다.
도 5에 도시된 바와 같이, 다양한 실시예에 따르면, 멀티 코어(예: 도 2의 멀티 코어(210), 도 4의 멀티 코어(410))를 포함하는 전자 장치(예: 도 1의 전자 장치(101), 도 2의 전자 장치(201))는 패킷의 세션 ID와 관련하여 어플리케이션 코어의 위치와, 드라이버 코어의 위치 및 세션의 패킷 처리량을 기반으로 TCP/IP스택 처리할 네트워크 처리 코어의 위치(예: 넘버 또는 클러스터 타입)를 결정할 수 있다. 다양한 실시예에 따르면, 하위 레이어의 코어와 상위 레이어의 코어의 성능을 고려하여 네트워크 처리 코어를 결정하고, 결정된 코어에서 패킷을 네트워크 스택 처리함으로써 멀티 코어를 활용한 묶음 처리 성능을 향상시킬 수 있다.
일 실시예에 따르면, 네트워크 드라이버에서 패킷(510)이 수신되면 core 1의 드라이버 코어(530)가 활성화될 수 있다. 이때, 패킷과 관련된 어플리케이션은 core N의 어플리케이션 코어(590)에서 TCP/IP스택 처리된 패킷이 처리될 수 있다. core 1의 드라이버 코어(530)는 참조 부호 520에서와 같이 병렬 처리 엔진(540)(예: 도 3의 병렬 처리 엔진(340))으로 패킷을 전달할 수 있다. 그러면, 병렬 처리 엔진(540)은 코어 관리 컨트롤러로부터 전달된 위치 정보를 기반으로 TCP/IP스택 처리할 네트워크 처리 코어(550)를 core 2로 할당할 수 있다. 네트워크 처리 코어(550)의 위치는 어플리케이션 코어(590)의 위치(core 2)와, 드라이버 코어의 위치(core 1) 및 패킷 세션의 처리량을 고려하여 결정될 수 있다.
core 1의 드라이버 코어(530)가 core 2의 네트워크 처리 코어를 활성화하면, 병렬 처리 엔진(540)에 의해 TCP 버퍼(예: 도 4의 TCP버퍼(443))로 패킷들을 전달할 수 있다. 네트워크 처리 코어(550)는 TCP 버퍼에 저장된 패킷을 TCP/IP스택 처리할 수 있다. 어플리케이션은 core N의 어플리케이션 코어(590)에서 TCP/IP스택 처리된 패킷을 수신하거나 가져와서 처리할 수 있다.
일 실시예에 따르면, 어플리케이션의 동작은 전자 장치의 동작 상태에 따라 어플리케이션 core N에서 core 2로 위치가 이동될 수 있다. 예를 들어, 어플리케이션 은 앱의 실행 위치(예: 포어그라운드, 백그 라운드), 각 코어의 로드 값에 의해 따라 사용자 영역에서 어플리케이션을 실행하는 어플리케이션 코어(590)의 위치가 유동적으로 변동될 수 있다.
어플리케이션 코어(590)의 위치가 참조부호591로 변경되면, 병렬 처리 엔진(540)은 어플리케이션 코어의 위치를 고려하여 네트워크 처리 코어(550)를 core2에서 참조부호 551에서와 같이 core 3으로 변경할 수 있다. 병렬 처리 엔진(540)은 core 3의 TCP 버퍼로 패킷을 전달할 수 있다. core 3의 네트워크 처리 코어는 패킷을 TCP/IP 스택 처리할 수 있다. core 2의 어플리케이션 코어는 core3의 네트워크 처리 코어에서 처리된 패킷을 처리할 수 있다.
일 실시예에 따르면, 멀티 코어를 포함하는 전자 장치는 어플리케이션 코어의 위치를 고려하여 네트워크 스택 처리 코어를 결정할 수 있으며, 또는 드라이버 코어 위치를 고려하여 네트워크 스택 처리 코어를 결정할 수도 있다.
도 6은 일 실시예에 따라 전자 장치의 멀티코어에서 패킷의 처리를 예시한 도면이다.
도 6을 참조하면, 일 실시예에 따르면, 멀티 코어(예: 도 2의 멀티 코어(210), 도 4의 멀티 코어(410))를 포함하는 전자 장치(예: 도 1의 전자 장치(101), 도 2의 전자 장치(201))는 TCP/IP스택 처리할 네트워크 처리 코어뿐만 아니라 어플리케이션 코어의 넘버(또는 클러스터 타입)를 결정하여 패킷을 처리할 어플리케이션 코어의 위치를 변경할 수 있다.
일 예를 들어, 전자 장치는 어플리케이션 코어(690) 위치와, 드라이버 코어(630)의 위치 및 각 세션의 처리량을 고려하여 TCP/IP스택 처리할 네트워크 처리 코어(650)를 core 3으로 결정할 수 있다. 드라이버 코어(630)는 병렬 처리 엔진(640)을 제어 하여 TPC 버퍼에 패킷을 삽입할 수 잇다. core 3의 네트워크 처리 코어(650)는 TCP 버퍼(예: 도 4의 TCP버퍼(443))로 저장된 패킷들을 TCP/IP스택 처리할 수 있다.
일 예를 들어, 어플리케이션 코어(690)는 core N에서 TCP/IP스택 처리된 패킷을 가져와 처리하다가 전자 장치에 의해 참조 부호 691의 core 2로 이동하여 TCP/IP스택 처리된 패킷을 처리할 수 있다. 도 6에서 core N의 어플리케이션 코어(690)에서 동작하는 어플리케이션은 어플리케이션 코어 넘버(또는 클러스터 타입)가 사전 정의된 어플리케이션일 수 있다. 전자 장치는 수신된 패킷의 세션 처리량이 임계 레벨 이상인 조건 일 시 어플리케이션 코어(690)의 위치를 변경할 수 있다. 예를 들어, 전자 장치는 수신된 패킷의 세션 처리량이 middle, high 레벨이며, 사전 정의된 어플리케이션인 경우, 사전 정의된 코어의 위치를 반영하여 어플리케이션 코어의 위치를 core N에서 참조부호 691의 core 2로 변경할 수 있다. 수신된 패킷의 세션 처리량이 low레벨일 경우, 전자 장치는 어플리케이션 코어(690)의 위치를 유지할 수 있다. 전자 장치에 의해 어플리케이션 코어(690)가 위치가 변경되었으므로, 참조 부호 691에서와 같이 core 2의 어플리케이션 코어가 TCP/IP스택 처리된 패킷들을 가져와 처리할 수 있다.
도 7은 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도 7을 참조하면, 다양한 실시예에 따른 동작 710 내지 770은 멀티 코어(예: 도 2의 멀티 코어(210)), 도 4의 멀티 코어(410))를 포함하는 전자 장치(예: 도 1의 전자 장치(101), 도 2의 전자 장치(201))에 의해 수행될 수 있다.
일 실시예에 따르면, 710 동작에서, 전자 장치(101)는 네트워크 인터페이스 카드(예: 도 3의 네트워크 인터페이스 카드(315))를 통해 적어도 하나의 패킷을 수신할 수 있다.
720 동작에서 전자 장치는 패킷 수신 신호를 기반으로 멀티 코어 중 임의의 넘버 X를 가진 드라이버 코어(A)를 활성화할 수 있다.
일 실시예에 따르면, 임의의 코어는 예를 들어, 커뮤니케이션 프로세서에 의해 제어 하에 활성화될 수 있다. 임의의 코어는 전자 장치에 디폴트로 설정된 넘버의 코어일 수 있으나, 랜덤 방식으로 선택될 수도 있다. 또는 임의의 코어는 슬립 모드로 동작 중인 코어 중 하나가 선택될 수도 있다.
730동작에서, 전자 장치의 넘버 X의 드라이버 코어(A)는 수신된 패킷을 병렬 처리 엔진(예; 병렬 처리 엔진(340), 도 5의 병렬처리 엔진(540), 도 6의 병렬 처리 엔진(640)))의 엔진 버퍼(예: 도 4의 엔진 버퍼(442))로 전달할 수 있다.
일 실시예에 따르면, 병렬 처리 엔진은 수신된 패킷들의 세션 ID를 생성하고, 코어 관리 컨트롤러(예: 도 2의 코어 관리 컨트롤러(230), 도 3의 코어 관리 컨트롤러(330))로 패킷들의 세션ID와 병렬 처리 엔진으로 패킷을 전달한 드라이버 코어(A)의 넘버 정보를 전달할 수 있다. 코어 관리 컨트롤러는 드라이버 코어(A) 넘버 X의 위치, 패킷과 관련된 어플리케이션 코어(C) 넘버 Y의 위치 및 패킷 처리량을 고려하여 네트워크 처리 코어(B)의 위치(예: 넘버 또는 클러스터 타입)를 결정할 수 있다.
740동작에서 전자 장치의 드라이버 코어(A)는 코어 관리 컨트롤러로부터네트워크 처리 코어(B)의 위치 정보를 획득할 수 있다.
750동작에서, 드라이버 코어(A)는 획득한 위치에 해당하는 네트워크 처리 코어(B)를 활성화할 수 있다. 네트워크 처리 코어(B)는 병렬 처리 엔진에 저장된 패킷을 TCP 버퍼로 전달할 수 있다.
일 실시예에 따르면, 전자 장치의 드라이버 코어(A)는 네트워크 처리 코어의 위치가 클러스터 타입일 경우, 해당되는 클러스터 타입에 속한 코어 넘버들 중 하나를 활성화할 수 있다.
760동작에서 전자 장치의 네트워크 처리 코어(B)는 패킷에 대해 TCP/IP처리할 수 있다.
770동작에서, 전자 장치의 어플리케이션 코어(C)가 네트워크 처리 코어(B)에서 TCP/TP 처리된 패킷을 처리할 수 있다. 어플리케이션 코어(C)는 수신 패킷의 세션ID와 관련된 어플리케이션이 사용자 영역에서 구동되는 코어일 수 있다.
일 실시예에 따르면 760동작 및 770동작은 동시적 또는 병렬적으로 동작할 수 도 있다. 예를 들어, TCP/TP스택에 할당되는 TCP버퍼는 TCP/IP처리된 패킷들이 저장되는 수신 버퍼와 처리 이전에 저장되는 백로그 버퍼를 포함할 수 있다. 어플리케이션 코어(C)는 수신 버퍼에 삽입된 패킷들을 처리할 수 있으며, 이와 동시에 또는 병렬적으로 네트워크 처리 코어(B)는 백로그 버퍼에 저장된 패킷들에 대해 TCP/IP스택 처리를 수행할 수 있다.
다양한 실시예에 따르면, 멀티 코어(예: 도 2의 멀티 코어(210))를 포함하는 전자 장치(예: 도 1의 전자 장치(101), 도 2의 전자 장치(201)) 에 있어서, 통신 장치(예: 도 1의 통신 모듈(190))과, 복수 개의 코어들을 포함하는 멀티 코어(예: 도 2의 멀티 코어(210)), 와 메모리(예: 도 1의 메모리(130). 도 2의 메모리(240))를 포함하고, 상기 코어들은 드라이버 코어(A), 네트워크 처리 코어(B) 및 어플리케이션 코어(C) 계층으로 구분되어 상기 패킷을 처리하며, 상기 메모리는, 실행 시 상기 멀티 코어 중 어느 하나가, 상기 통신 장치를 통해 패킷 수신 시 수신된 패킷을 운영 체제 영역으로 전달하는 드라이버 코어의 위치와 사용자 영역에서 상기 패킷을 처리하는 어플리케이션 코어의 위치, 그리고 수신된 패킷에 해당되는 세션의 처리량을 확인하고, 상기 드라이버 코어의 위치, 상기 어플리케이션 코어의 위치 및 세션의 처리량 중 적어도 하나를 기반으로 상기 코어들 중 네트워크 처리 코어의 위치를 결정하고, 상기 결정된 위치의 네트워크 처리 코어에 의해 상기 운영 체제 영역으로 전달된 패킷에 대해 네트워크 스택 처리하도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따르면, 상기 네트워크 처리 코어의 위치는 코어 넘버 또는 성능 차이에 따라 구분되는 코어 타입의 클러스터 정보일 수 있다.
다양한 실시예에 따르면, 상기 메모리는 실행 시에, 상기 멀티 코어 중 어느 하나가 멀티 코어에 지정된 코어 넘버를 선택하여 상기 네트워크 처리 코어의 위치를 결정하도록 하는 인스트럭션들을 포함할 수 있다.
다양한 실시예에 따르면, 상기 복수의 코어들은 제1 클러스터 타입 및 제2 클러스터 타입으로 구분되고, 상기 메모리는 실행 시에, 상기 멀티 코어 중 어느 하나가 상기 네트워크 처리 코어의 클러스터 타입을 결정하고 결정된 클러스터 타입에 포함된 하나의 코어 넘버를 램덤하게 선택하여 상기 네트워크 처리 코어의 위치를 결정하도록 하는 인스터력션들을 포함할 수 있다.
다양한 실시예에 따르면, 상기 메모리는, 실행 시에, 상기 멀티 코어 중 임의의 코어 넘버 X 의 드라이버 코어를 활성화하고, 상기 코어 넘버 X 의 드라이버 코어가 상기 운영 체제 영역으로 패킷을 전달하고, 상기 코어 넘버 X 의 드라이버 코어가 상기 결정된 네트워크 처리 코어의 위치를 획득하고. 상기 코어 넘버 X 의 드라이버 코어가 상기 획득한 네트워크 처리 코어의 위치를 기반으로 코어 넘버 Z의 네트워크 처리 코어로 패킷을 전달하고, 상기 코어 넘버 Z의 네트워크 처리 코어가 전달된 패킷에 대해 네트워크 스택 처리하고, 상기 임의의 코어 넘버 Y 의 어플리케이션 코어가 코어 넘버 Z의 네트워크 처리 코어에서 처리된 패킷을 처리하도록 하는 인스트럭션들을 포함할 수 있다.
다양한 실시예에 따르면, 상기 메모리는, 실행 시에, 멀티 코어 중 어느 하나가, 상기 네트워크 처리 코어를 통해 설정된기준 처리량에 대응하는 패킷의 양을 묶음 처리하도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따르면, 상기 운영 체제 영역에서 구동되는 병렬 처리 엔진 및 코어 관리 컨트롤러를 더 포함하고, 상기 메모리는, 실행 시에, 상기 병렬 처리 엔진이, 상기 드라이버 코어로부터 전달된 패킷의 세션 식별 정보를 생성하고, 세션 식별 정보 및 병렬 처리 엔진으로 패킷을 전달한 드라이버 코어의 코어 넘버를 상기 코어 관리 컨트롤러로 전달하고, 상기 코어 관리 컨트롤러로부터 상기 네트워크 처리 코어의 위치를 획득하고, 상기 드라이버 코어로부터 전달된 패킷을 상기 결정된 위치의 네트워크 처리 코어로 패킷을 전달하도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따르면, 상기 메모리는 실행 시에, 상기 코어 관리 컨트롤러가, 상기 수신된 패킷의 세션 식별 정보, 상기 드라이버 코어의 코어 넘버, 세션 식별 정보를 기반으로 패킷을 가져갈 어플리케이션 코어의 코어 넘버 및 세션의 패킷 처리량 정보를 기반으로 상기 네트워크 처리 코어의 코어 넘버를 결정하고, 상기 병렬 처리 엔진으로 네트워크 처리 코어의 코어 넘버를 전달하도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따르면, 상기 메모리는 실행 시에, 상기 멀티 코어 중 어느 하나가, 상기 패킷의 세션 식별 정보를 기반으로 패킷을 처리하는 어플리케이션의 동작을 모니터링하고, 상기 어플리케이션 코어의 위치를 결정하고, 어플리케이션 코어의 위치가 변경되는 조건이 발생되는 경우 상기 멀티 코어 중 상기 패킷을 처리할 어플리케이션 코어의 위치가 변경되도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따르면, 상기 메모리는, 실행 시에, 상기 멀티 코어 중 어느 하나가, 상기 패킷과 관련된 어플리케이션에 대응하여 할당되는 코어의 위치가 지정된 경우 지정된 코어의 위치를 어플리케이션 코어의 위치로 결정하고, 상기 어플리케이션에 대응하여 할당된 코어의 위치가 지정되지 않는 경우 상기 어플리케이션의 동작이 포어그라운드 또는 백그라운드에서 동작하는지에 따라 상기 어플리케이션 코어의 위치를 결정하고, 상기 어플리케이션의 패킷 처리 학습을 기반으로 상기 어플리케이션 코어의 위치를 결정하도록 하는 인스트럭션들을 포함할 수 있다.
도 8은 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도 8을 참조하면, 다양한 실시예에 따른 멀티 코어(예: 도 2의 멀티 코어(210)), 도 4의 멀티 코어(410))를 포함하는 전자 장치(예: 도 1의 전자 장치(101), 도 2의 전자 장치(201))는 810동작에서, 네트워크 인터페이스 카드(예: 도 3의 네트워크 인터페이스 카드(315))가 패킷을 수신할 수 있다.
820동작에서 전자 장치는 패킷 수신에 응답하여 멀티 코어 중 임의의 넘버 X의 드라이브 코어(A)를 활성화할 수 있다.
830동작에서, 전자 장치의 넘버 X의 드라이버 코어(A)는 수신된 패킷을 병렬 처리 엔진(예; 병렬 처리 엔진(340), 도 5의 병렬처리 엔진(540), 도 6의 병렬 처리 엔진(640))의 엔진 버퍼(예: 도 4의 엔진 버퍼(442)에 삽입할 수 있다.
840동작에서, 전자 장치는 병렬 처리 엔진이 패킷의 세션 ID를 생성하고, 코어 관리 컨트롤러(예: 도 2의 코어 관리 컨트롤러(230), 도 3의 코어 관리 컨트롤러(330))로부터 네트워크 처리 코어(B)의 넘버 Y를 획득할 수 있다. 예를 들어, 840의 동작은 도 9의 910 동작 내지 960 동작에 의해 네트워크 처리 코어(B)의 위치 정보(예를 들어, 넘버 Y)를 획득할 수 있다.
일 실시예에 따르면, 병렬 처리 엔진은 수신된 패킷의 세션 ID를 구분하고 코어 관리 컨트롤러부터 병렬 처리 엔진으로 패킷을 전달한 드라이버 코어(A) X의 넘버를 전달하고 코어 관리 컨트롤러로부터 병렬 처리 코어(B)의 넘버 Y를 획득할 수 있다.
일 실시예에 따르면, 코어 관리 컨트롤러는 패킷의 세션 ID와 관련하여 어플리케이션 코어의 위치와, 드라이버 코어의 위치 및 각 세션의 처리량을 고려하여 TCP/IP스택 처리할 네트워크 처리 코어(B)의 넘버를 결정할 수 있다.
일 실시예에 따르면, 코어 관리 컨트롤러는 네트워크 처리 코어(B)의 넘버 정보를 병렬 처리 엔진으로 전달할 수 있다. 그러면, 병렬 처리 엔진은 수신된 패킷을 해당 넘버에 배치된 코어에서 처리되도록 네트워크 처리 코어(B)를 할당할 수 있다.
850동작에서, 드라이브 코어(A)가 넘버 Y를 가진 네트워크 처리 코어(B)를 활성화할 수 있다.
860동작에서, 넘버 Y 의 네트워크 처리 코어(B)가 엔진 버퍼에 삽입된 패킷들을 TCP 버퍼에 삽입할 수 있다.
870동작에서, 넘버 Y의 네트워크 처리 코어(B)가 TCP 버퍼에 삽입된 패킷을 TCP/IP 처리할 수 있다.
880동작에서, 전자 장치는 어플리케이션 코어(C) 가 TCP/IP 처리된 패킷을 처리할 수 있다.
이하, 도 9 내지 도 10의 동작들은 전자 장치에 의해 제어되는 것으로 기재되어 있으나, 이는 도 3에 도시된 코어 관리 컨트롤러 또는 멀티 코어를 제어하는 프로세서에 의해 제어되는 것으로 이해될 수 있다.
도 9는 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도 9를 참조하면, 다양한 실시예에 따른 멀티 코어(예: 도 2의 멀티 코어(210)), 도 4의 멀티 코어(410))를 포함하는 전자 장치(예: 도 1의 전자 장치(101), 도 2의 전자 장치(201))는 네트워크 스택(예: TCP/IP 스택)에서 패킷을 처리하는 네트워크 처리 코어(B)의 위치를 결정할 수 있다. 910 동작 내지 960 동작은 전자 장치에 의해 제어되는 것으로 기재되어 있으나, 이는 도 3에 도시된 코어 관리 컨트롤러(예: 도 2의 코어 관리 컨트롤러(230), 도 3의 코어 관리 컨트롤러(330)) 또는 멀티 코어를 제어하는 프로세서(예: 도 1의 프로세서(120)에 의해 제어되는 것으로 이해될 수 있다.
910동작에서 전자 장치는 병렬 처리 엔진(예; 병렬 처리 엔진(340), 도 5의 병렬처리 엔진(540), 도 6의 병렬 처리 엔진(640))으로부터 패킷의 세션 ID를 획득할 수 있다. 920 동작에서, 전자 장치는 각 세션의 처리 정보를 획득할 수 있다. 930동작에서, 전자 장치는 병렬 처리 엔진으로 패킷을 전달한 드라이버 코어(A)의 위치 정보(예: 코어 넘버)를 획득할 수 있다. 940동작에서, 전자 장치는 세션 ID와 관련된 패킷을 가져가는 어플리케이션 코어(C)의 위치 정보(예: 코어 넘버 또는 클러스터 타입)를 획득할 수 있다.
950동작에서, 전자 장치는 세션의 처리 정보, 코어 정책 정보, 드라이버 코어(A)의 위치X 및 어플리케이션 코어(C)의 위치 Z를 기반하여 네트워크 처리 코어(B)의 위치 Y를 결정할 수 있다. 960 동작에서, 전자 장치는 병렬 처리 엔진으로 네트워크 처리 코어(B)의 넘버 Y에 대한 정보를 전달할 수 있다.
도10은 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도 10을 참조하면, 다양한 실시예에 따른 멀티 코어(예: 도 2의 멀티 코어(210)), 도 4의 멀티 코어(410))를 포함하는 전자 장치(예: 도 1의 전자 장치(101), 도 2의 전자 장치(201))는 사용자 영역에서 데이터를 처리하는 어플리케이션 코어의 위치를 모니터링하여 변경된 어플리케이션 코어의 위치를 반영하여 네트워크 처리 코어(B)의 위치를 결정할 수 있다.
1010동작에서, 전자 장치는 사용자 영역에서TCP 버퍼에 삽입된 패킷을 처리하는 어플리케이션을 감지할 수 있다.
1020동작에서 전자 장치는 어플리케이션 ID를 기준으로 어플리케이션 데이터를 처리하는 어플리케이션의 코어(C)의 넘버 a 를 획득할 수 있다.
일 실시예에 따르면, 전자 장치는 네트워크 처리 스택(예: TCP/IP스택)에 포함된 에이전트(agent)로부터 어플리케이션 ID를 기준으로 어플리케이션 코어(C)의 위치 정보(예: 코어 넘버 또는 클러스터 타입)를 획득할 수 있다.
1030동작에서, 전자 장치는 어플리케이션 동작 상태를 모니터링할 수 있다.
1040 동작에서, 전자 장치는 어플리케이션 코어의 위치를 결정할 수 있다. 일 예를 들어, 어플리케이션 코어의 위치는 클러스터 타입 또는 코어 넘버 정보일 수 도 있다.
일 실시예에 따르면, 전자 장치는 어플리케이션 ID를 기반으로 어플리케이션을 처리하는 코어의 시간 및 처리되는 패킷의 수를 체크하고, 특정 클러스터 타입의 코어들의 사용이 기준 동작값을 초과하는 경우, 해당 코어의 클러스터 타입을 어플리케이션을 처리하는 주 코어의 위치로 지정할 수 있다.
일 실시예에 따르면, 전자 장치는 어플리케이션이 포어그라운드 또는 백그라운드에서 실행되는 지 여부에 따라 어플리케이션 코어의 위치를 지정할 수 있다.
일 실시예에 따르면, 전자 장치는 특정 어플리케이션의 코어 위치를 사전에 지정하거나 또는 학습에 따라 어플리케이션 코어의 위치를 지정할 수 있다.
1050동작에서, 전자 장치는 어플리케이션 코어의 위치에 따라 어플리케이션의 처리량 임계치를 결정할 수 있다.
일 실시예에 따른 전자 장치는 어플리케이션 코어의 위치 정보, 패킷을 병렬 처리 엔진으로 전달하는 드라이버 코어의 위치 정보 및 어플리케이션의 특성 정보를 기반으로 어플리케이션의 패킷 처리량에 대한 임계치를 변경할 수 있다.
일 실시예에 따르면, 전자 장치는 어플리케이션이 실행되는 주 코어의 위치에 따라 처리량 임계값을 변경할 수 있다.
일 실시예에 따르면, 전자 장치는 어플리케이션이 포어그라운드 또는 백그라운드에서 실행되는 지에 따라 처리량 임계값을 변경할 수 있다.
일 실시예에 따르면, 전자 장치는 사전 설정된 정보 또는 학습에 따라 어플리케이션 코어의 위치를 지정되는 경우 지정된 코어의 위치에 따라 처리량 임계값을 변경할 수 있다.
1060동작에서, 전자 장치는 어플리케이션 정보를 갱신할 수 있다. 1070동작에서, 전자 장치는 갱신된 정보를 적용하여 네트워크 처리 코어 및 또는 어플리케이션 코어 중 적어도 하나를 결정할 수 있다.
도11 은 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도 11을 참조하면, 일 실시예에 따른 멀티 코어(예: 도 2의 멀티 코어(210)), 도 4의 멀티 코어(410))를 포함하는 전자 장치(예: 도 1의 전자 장치(101), 도 2의 전자 장치(201))는 1110동작에서 수신된 패킷을 처리하는 어플리케이션(예: 앱(app))의 상태를 확인할 수 있다. 1120동작에서 전자 장치는 어플리케이션이 포어그라운드에서 실행중인지를 판단할 수 있다. 전자 장치는 어플리케이션이 포어그라운드에서 실행 중인 경우 1130동작으로 진행하여 포어 그라운드에서 실행 중인 앱의 코어 맵이 존재하는지를 확인할 수 있다. 전자 장치는 어플리케이션이 포어그라운드에서 실행 중이지 않은 경우, 1125동작으로 진행하여 백 그라운드에서 동작하는 앱의 코어 맵이 존재하는지를 확인할 수 있다. 예를 들어, 앱의 코어맵은 어플리케이션의 ID를 기반으로 사전 지정된 코어의 위치를 나타내는 정보일 수 있다.
전자 장치는1130 동작 및 1125동작 결과, 해당 어플리케이션의 앱 코어 맵이 존재하는 경우, 1140로 진행하여 앱 코어 맵에 따라 TCP/IP 스택 처리를 위한 RPS 코어의 클러스터 타입 위치를 지정할 수 있다. 예를 들어, RPS 코어는 네트워트 처리 코어일 수 있다. 전자 장치는1130 동작 및 1125동작 결과, 해당 어플리케이션의 앱 코어 맵이 존재하지 않는 경우, 1150 동작으로 진행할 수 있다.
1145동작에서 전자 장치는 앱 코어 맵의 업데이트가 필요한지 여부를 판단할 수 있다. 일 실시예에 따르면, 전자 장치는 앱 코어 맵에서 지정된 코어의 위치와 사용자 영역에서 데이터를 처리하는 어플리케이션 코어의 위치가 다른 경우 앱 코어 맵을 업데이트 하는 것으로 결정할 수 있다. 일 실시예에 따르면, 전자 장치는 코어 앱을 업데이트하도록 지정된 주기가 경과된 경우 앱 코어 맵을 업데이트 하는 것으로 결정할 수 있다.
1150 동작에서, 전자 장치는 사용자 영역에서 데이터를 가져가 처리하는 어플리케이션 코어의 위치를 판단하고 저장할 수 있다. 1155 동작에서 전자 장치는 어플리케이션 코어의 위치를 판단하는 과정에서 동일한 코어의 위치 결과로 설정된 N번의 횟수가 반복되는지를 판단하고, N번의 횟수가 반복되는 경우, 1160 동작으로 진행하여 해당 어플리케이션에 대해 코어가 지정된 앱 코어 맵을 업데이트 할 수 있다. 1170 동작 에서 전자 장치는 어플리케이션 코어의 위치를 판단한 결과에 따라 판단된 어플리케이션 코어의 위치 정보를 고려하여 TCP/IP 스택 처리를 위한 RPS 코어를 설정할 수 있다.
도12는 다양한 실시예에 따른 멀티 코어를 포함하는 전자 장치에서 패킷 처리를 위한 코어의 결정 방법을 도시한다.
도 12를 참조하면, 다양한 실시예에 따르면 멀티 코어(예: 도 2의 멀티 코어(210)), 도 4의 멀티 코어(410))를 포함하는 전자 장치(예: 도 1의 전자 장치(101), 도 2의 전자 장치(201))는 1210 동작에서, 멀티 코어 중 임의의 넘버 X를 가진 드라이브 코어(A)를 활성화할 수 있다. 1220 동작에서 전자 장치의 넘버 X를 가진 드라이버 코어(A)가 병렬 처리 엔진으로 패킷을 전달할 수 있다. 1230 동작에서, 전자 장치의 드라이버 코어(A)가 드라이버 코어(A)의 위치 X 및 어플리케이션 코어(C)의 위치 Y에 기반하여 결정된 네트워크 처리 코어(B)의 위치를 획득할 수 있다.
1240 동작에서, 전자 장치의 획득한 위치에 대응하는 코어의 네트워크 처리 코어(B)는 수신된 패킷을 TCP /IP 처리할 수 있다.
1250 동작에서 전자 장치는 어플리케이션 코어(C)의 위치가 변경됐는지를 확인할 수 있다. 예를 들어, 전자 장치는 도 10 또는 도 11의 동작을 수행하여 어플리케이션 코어(C)의 위치가 변경됐는지를 확인할 수 있다.
1250 동작에서 전자 장치는 어플리케이션 코어(C)의 위치가 변경된 경우 변경된 코어 넘버 W의 어플리케이션 코어(C')가 네트워크 처리 코어(B)에서 TCP/IP 처리된 패킷을 처리할 수 있다. 1260 동작에서, 전자 장치는 코어 넘버 Y의 어플리케이션 코어(C) 가 네트워크 처리 코어(B)에서 TCP/IP 처리된 패킷을 처리할 수 있다.
다양한 실시예에 따르면, 전자 장치(예: 도 1의 전자 장치(101), 도 2의 전자 장치(201)) 에 있어서, 통신 장치(예: 도 1의 통신 모듈(190))과, 복수 개의 코어들을 포함하는 멀티 코어(예: 도 2의 멀티 코어(210)), 메모리(예: 도 1의 메모리(130), 도 2의 메모리(240))와, 프로세서(예: 도 1의 프로세서(120))를 포함하고, 상기 코어들은 드라이버 코어(A), 네트워크 처리 코어(B) 및 어플리케이션 코어(C)의 계층으로 구분되어 상기 패킷을 처리하며, 상기 프로세서는, 상기 통신 장치를 통해 패킷 수신 시 상기 멀티 코어 중 어느 하나가 수신된 패킷을 운영 체제 영역으로 전달하는 드라이버 코어의 위치, 사용자 영역에서 상기 패킷을 처리하는 어플리케이션 코어의 위치 및 수신된 패킷에 해당되는 세션의 처리량을 확인하고, 상기 드라이버 코어의 위치, 어플리케이션 코어의 위치 및 상기 세션의 처리량 중 적어도 하나를 기반으로 상기 코어들 중 네트워크 처리 코어의 위치를 결정하고, 상기 멀티 코어 중 상기 결정된 위치의 네트워크 처리 코어에서 상기 패킷에 대해 네트워크 스택 처리하도록 제어할 수 있다.
다양한 실시예에 따르면, 상기 프로세서는, 상기 네트워크 처리 코어를 제어하는 코어 넘버를 선택하여 상기 네트워크 처리 코어의 위치를 결정할 수 있다.
다양한 실시예에 따르면, 상기 멀티 코어는 제1 클러스터 타입 및 제2 클러스터 타입을 포함하고, 상기 프로세서는, 상기 네트워크 처리 코어를 제어하는 코어의 클러스터 타입을 결정하고, 상기 결정된 클러스터 타입에 속한 하나의 코어 넘버를 랜덤하게 선택하여 상기 네트워크 처리 코어의 위치를 결정할 수 있다.
다양한 실시예에 따르면, 상기 프로세서는, 상기 멀티 코어 중 임의의 코어 넘버 X 의 드라이버 코어를 활성화하고, 상기 코어 넘버 X 의 드라이버 코어를 통해 상기 운영체제 영역으로 패킷을 전달하고, 상기 코어 넘버 X 의 드라이버 코어를 통해 상기 코어 관리 컨트롤러부터 상기 네트워크 처리 코어의 위치를 획득하고. 상기 코어 넘버 X 의 드라이버 코어를 통해 상기 획득한 네트워크 처리 코어의 위치를 기반으로 코어 넘버 Z의 네트워크 처리 코어로 패킷을 전달하고, 상기 코어 넘버 Z의 네트워크 처리 코어를 통해 전달된 패킷을 네트워크 스택 처리하고, 상기 임의의 코어 넘버 Y 의 어플리케이션 코어를 통해 코어 넘버 Z의 네트워크 처리 코어에서 처리된 패킷을 처리하도록 제어할 수 있다.
다양한 실시예에 따르면, 상기 네트워크 처리 코어를 통해 설정된 기준 처리량에 대응하는 패킷의 양을 상기 운영 체제 영역에서 묶음 처리하도록 제어할 수 있다.
다양한 실시예에 따르면, 상기 메모리는, 실행 시에, 상기 운영 체제 영역에서 구동되는 병렬 처리 엔진을 더 포함하고, 상기 병렬 처리 엔진은, 상기 드라이버 코어로부터 전달된 패킷의 세션 식별 정보를 생성하고, 세션 식별 정보 및 병렬 처리 엔진으로 패킷을 전달한 드라이버 코어의 넘버를 상기 프로세서로 전달하고, 상기 프로세서로부터 상기 네트워크 처리 코어의 위치를 획득하고, 상기 프로세서의 제어 하에, 상기 결정된 위치의 네트워크 처리 코어로 패킷을 전달할 수 있다.
다양한 실시예에 따르면, 상기 프로세서는, 상기 수신된 패킷의 세션 식별 정보, 상기 드라이버 코어의 코어 넘버, 세션 식별 정보를 기반으로 패킷을 가져갈 어플리케이션 코어의 코어 넘버 및 세션의 패킷 처리량 정보 중 적어도 하나를 기반으로 상기 네트워크 처리 코어의 코어 넘버를 결정하고, 상기 병렬 처리 엔진으로 네트워크 처리 코어의 코어 넘버를 전달하고, 상기 병렬 처리 엔진이 상기 전달된 코어 넘버의 대응하는 네트워크 처리 코어로 상기 패킷을 전달하도록 제어할 수 있다.
다양한 실시예에 따르면, 상기 프로세서는, 상기 패킷의 세션 식별 정보를 기반으로 패킷을 처리하는 어플리케이션의 동작을 모니터링하고, 어플리케이션 코어의 위치를 결정하고, 어플리케이션 코어의 위치가 변경되는 조건이 발생되는 경우 상기 패킷을 처리할 어플리케이션 코어의 위치가 변경되도록 제어하는 전자 장치.
다양한 실시예에 따르면, 상기 프로세서는, 상기 패킷과 관련된 어플리케이션에 대응하여 할당되는 코어의 위치가 지정된 경우 지정된 코어의 위치를 어플리케이션 코어의 위치로 결정하고, 상기 어플리케이션에 대응하여 할당된 코어의 위치가 지정되지 않는 경우 상기 어플리케이션의 동작이 포어그라운드 또는 백그라운드에서 동작하는지에 따라 상기 어플리케이션 코어의 위치를 결정하고, 상기 어플리케이션의 패킷 처리 학습을 기반으로 상기 어플리케이션 코어의 위치를 결정할 수 있다.
도 13a내지 도 13c은 본 발명의 다양한 실시예에 따른 효과를 예시한 도면으로, 도 13a는 전자 장치에서 1개의 세션에 대하여 동일한 패킷을 처리하는데 소모되는 전류 소모량을 비교한 그래프이다. 참조부호1310은 종래 기술을 적용하여 패킷을 처리하는 데 소모되는 전류량이고, 참조부호1320은 본 발명의 다양한 실시예를 적용하여 결정된 코어를 기반으로 패킷을 처리하는데 소모되는 전류량이다. 예를 들어, 종래 기술의 경우, 세션의 패킷 처리량이 임계치 이상인 경우, 네트워크 스택 처리를 빅 타입 코어에서 처리되도록 결정하나, 본원 발명의 다양한 실시예에 따르면, 세션의 패킷 처리량이 임게치 이상이더라도 어플리케이션 코어 및 드라이버 코어의 위치에 따라 네트워크 스택 처리할 코어를 결정할 수 있다. 본 발명의 다양한 실시예를 적용하는 경우, 어플리케이션 코어 및 드라이버 코어의 위치 정보뿐만 아니라, 세션의 처리량을 고려하여 네트워크 스택 처리할 코어를 결정함에 따라 수신된 패에 대한 묶음처리를 최대화할 수 있다. 도 13a에서 보이는 바와 같이, 종래 기술인 1310과 비교하여 본원 발명의 다양한 실시예에 따른 소모 전류는 대략 11%의 전류 개선 효과가 증가된 것을 확인할 수 있다. 도 13b는 전자 장치에서 1개의 세션에 대하여 처리량(Throughput) 성능을 비교한 그래프이다. 도 13b에서 참조부호 1330은 종래 기술인 RPS기법을 반영한 패킷의 처리량이고, 1340은 종래 기술인 argos 기법을 반영한 패킷의 처리량이고 1350은 본원 발명의 다양한 실시예에 따라 네트워크 스택 처리할 코어뿐만 아니라 어플리케이션 코어의 위치의 판단하여 적용된 패킷의 처리량이다. 예를 들어, 종래와 같이 랜덤으로 네트워크 스택 처리할 코어를 선택하는 경우 상대적으로 성능이 낮은 코어가 TCP/IP 처리를 하여 드라이버 코어에서 전달된 패킷들의 묶음 처리가 비효율적으로 동작하게 된다. 본원 발명의 다양한 실시예를 적용하는 경우, 세션의 패킷 처리량, 어플리케이션 코어의 위치 및 드라이버 코어의 위치를 고려하여 묶음 처리된 패킷을 처리하는 코어를 결정함으로써 효율적으로 패킷을 처리할 수 있다. 도 13b에서 도시된 바와 같이, 패킷의 묶음 처리를 최대화 각 코어 별로 패킷 처리를 구현함으로써 종래 기술 대비 6~67%의 패킷 처리량이 증가된 것을 확인할 수 있다. 도 13c는 2개의 세션에 대하여 동일한 패킷을 처리하는데 소모되는 전류 소모량을 비교한 그래프이다. 참조부호1360은 종래 기술을 적용하여 패킷을 처리하는 데 소모되는 전류량이고, 참조부호1370은 본원 발명의 다양한 실시예를 적용하여 결정된 코어를 기반으로 패킷을 처리하는데 소모되는 전류량이다, 본원 발명의 다양한 실시예를 적용하는 경우, 종래 기술과 달리 세션별로 패킷을 처리할 코어의 위치를 다르게 결정함으로써 패킷을 묶음 처리하는 효과를 극대화시킬 수 있다. 도 13c에서 보이는 바와 같이, 종래 기술인 1610과 비교하여 본원 발명의 다양한 실시예에 따른 소모 전류는 대략 6%의 전류 개선 효과가 증가된 것을 확인할 수 있다.
다양한 실시 예들에 따르면, 상기 기술한 구성 요소들의 각각의 구성 요소(예본 명세서와 도면에 개시된 본 발명의 다양한 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
101, 201: 전자 장치
120: 프로세서
210, 410: 멀티 코어
220: 네트워크 드라이버
230, 330: 코어 관리 컨트롤러
240: 메모리
340: 병렬 처리 엔진

Claims (19)

  1. 멀티 코어를 포함하는 전자 장치에 있어서,
    통신 장치; 복수 개의 코어들을 포함하는 멀티 코어; 및
    메모리를 포함하고,
    상기 코어들은 드라이버 코어, 네트워크 처리 코어 및 어플리케이션 코어 계층으로 구분되어 상기 패킷을 처리하며,
    상기 메모리는, 실행 시 상기 멀티 코어 중 어느 하나가,
    상기 통신 장치를 통해 패킷 수신 시 수신된 패킷을 운영 체제 영역으로 전달하는 드라이버 코어의 위치와 사용자 영역에서 상기 패킷을 처리하는 어플리케이션 코어의 위치, 그리고 수신된 패킷에 해당되는 세션의 처리량을 확인하고,
    상기 드라이버 코어의 위치, 상기 어플리케이션 코어의 위치 및 세션의 처리량 중 적어도 하나를 기반으로 상기 코어들 중 수신된 패킷을 처리할 상기 네트워크 처리 코어의 위치를 결정하고, 상기 결정된 위치의 네트워크 처리 코어에 의해 상기 운영 체제 영역으로 전달된 패킷을 네트워크 스택 처리하도록 하는 인스트럭션들을 저장하는 전자 장치.
  2. 제1항에 있어서,
    상기 네트워크 처리 코어의 위치는 코어 넘버 또는 성능 차이에 따라 구분되는 코어 타입의 클러스터 정보인 전자 장치.
  3. 제1항에 있어서,
    상기 메모리는 실행 시에, 상기 멀티 코어 중 어느 하나가
    상기 멀티 코어에 지정된 코어 넘버를 선택하여 상기 네트워크 처리 코어의 위치를 결정하도록 하는 인스트럭션들을 포함하는 전자 장치.
  4. 제1항에 있어서,
    상기 복수의 코어들은 제1 클러스터 타입 및 제2 클러스터 타입으로 구분되고,
    상기 메모리는 실행 시에, 상기 멀티 코어 중 어느 하나가
    상기 네트워크 처리 코어의 클러스터 타입을 결정하고 상기 결정된 클러스터 타입에 포함된 하나의 코어 넘버를 램덤하게 선택하여 상기 네트워크 처리 코어의 위치를 결정하도록 하는 인스터력션들을 포함하는 전자 장치.
  5. 제1항에 있어서,
    상기 메모리는, 실행 시에,
    상기 멀티 코어 중 임의의 코어 넘버 X 의 드라이버 코어를 활성화하고,
    상기 코어 넘버 X 의 드라이버 코어가 상기 운영 체제 영역으로 패킷을 전달하고,
    상기 코어 넘버 X 의 드라이버 코어가 상기 결정된 네트워크 처리 코어의 위치를 획득하고,
    상기 코어 넘버 X 의 드라이버 코어가 상기 획득한 네트워크 처리 코어의 위치를 기반으로 코어 넘버 Z의 네트워크 처리 코어로 패킷을 전달하고,
    상기 코어 넘버 Z의 네트워크 처리 코어가 전달된 패킷에 대해 네트워크 스택 처리하고,
    상기 임의의 코어 넘버 Y 의 어플리케이션 코어가 코어 넘버 Z의 네트워크 처리 코어에서 처리된 패킷을 처리하도록 하는 인스트럭션들을 포함하는 전자 장치.
  6. 제5항에 있어서,
    상기 메모리는, 실행 시에, 멀티 코어 중 어느 하나가,
    상기 네트워크 처리 코어를 통해 설정된기준 처리량에 대응하는 패킷의 양을 묶음 처리하도록 하는 인스트럭션들을 저장하는 전자 장치.
  7. 제1항에 있어서,
    상기 운영 체제 영역에서 구동되는 병렬 처리 엔진 및 코어 관리 컨트롤러를 더 포함하고,
    상기 메모리는, 실행 시에, 상기 병렬 처리 엔진이,
    상기 드라이버 코어로부터 전달된 패킷의 세션 식별 정보를 생성하고, 상기 세션 식별 정보 및 상기 병렬 처리 엔진으로 패킷을 전달한 드라이버 코어의 코어 넘버를 상기 코어 관리 컨트롤러로 전달하고, 상기 코어 관리 컨트롤러로부터 상기 네트워크 처리 코어의 위치를 획득하고, 상기 드라이버 코어로부터 전달된 패킷을 상기 결정된 위치의 네트워크 처리 코어로 패킷을 전달하도록 하는 인스트럭션들을 저장하는 전자 장치.
  8. 제7항에 있어서,
    상기 메모리는 실행 시에, 상기 코어 관리 컨트롤러가,
    상기 수신된 패킷의 세션 식별 정보, 상기 드라이버 코어의 코어 넘버, 패킷을 처리하는 어플리케이션 코어의 코어 넘버 및 세션의 패킷 처리량 정보 중 적어도 하나를 기반으로 상기 네트워크 처리 코어의 코어 넘버를 결정하고, 상기 병렬 처리 엔진으로 상기 네트워크 처리 코어의 코어 넘버를 전달하도록 하는 인스트럭션들을 저장하는 전자 장치.
  9. 제1항에 있어서,
    상기 메모리는 실행 시에, 상기 멀티 코어 중 어느 하나가,
    상기 패킷의 세션 식별 정보를 기반으로 패킷을 처리하는 어플리케이션의 동작을 모니터링하여 어플리케이션 코어의 위치를 결정하고, 상기 어플리케이션 코어의 위치가 변경되는 조건이 발생되는 경우 상기 코어들중 상기 패킷을 처리하는 어플리케이션 코어의 위치를 변경하도록 하는 인스트럭션들을 저장하는 전자 장치.
  10. 제9항에 있어서,
    상기 메모리는, 실행 시에, 상기 멀티 코어 중 어느 하나가,
    상기 패킷과 관련된 어플리케이션에 대응하여 할당되는 코어의 위치가 지정된 경우 지정된 코어의 위치를 상기 어플리케이션 코어의 위치로 결정하고,
    상기 어플리케이션에 대응하여 할당된 코어의 위치가 지정되지 않는 경우 상기 어플리케이션의 동작이 포어그라운드 또는 백그라운드에서 동작하는지에 따라 상기 어플리케이션 코어의 위치를 결정하고,
    상기 어플리케이션의 패킷 처리 학습을 기반으로 상기 어플리케이션 코어의 위치를 결정하도록 하는 인스트럭션들을 포함하는 전자 장치.
  11. 전자 장치에 있어서,
    통신 장치;
    복수 개의 코어들을 포함하는 멀티 코어;
    메모리; 및
    프로세서를 포함하고,
    상기 코어들은 드라이버 코어, 네트워크 처리 코어 및 어플리케이션 코어의 계층으로 구분되어 상기 패킷을 처리하며,
    상기 프로세서는,
    상기 통신 장치를 통해 패킷 수신 시 상기 멀티 코어 중 어느 하나가 수신된 패킷을 운영 체제 영역으로 전달하는 드라이버 코어의 위치, 사용자 영역에서 상기 패킷을 처리하는 어플리케이션 코어의 위치 및 수신된 패킷에 해당되는 세션의 처리량을 확인하고,
    상기 드라이버 코어의 위치, 상기 어플리케이션 코어의 위치 및 상기 세션의 처리량 중 적어도 하나를 기반으로 상기 코어들 중 패킷을 처리할 상기 네트워크 처리 코어의 위치를 결정하고,
    상기 멀티 코어 중 상기 결정된 위치의 네트워크 처리 코어에서 상기 수신된 패킷에 대해 네트워크 스택 처리하도록 설정된 전자 장치.
  12. 제11항에 있어서,
    상기 프로세서는,
    상기 네트워크 처리 코어를 제어하는 코어 넘버를 선택하여 상기 네트워크 처리 코어의 위치를 결정하도록 설정된 전자 장치.
  13. 제11항에 있어서,
    상기 멀티 코어는 제1 클러스터 타입 및 제2 클러스터 타입을 포함하고,
    상기 프로세서는,
    상기 네트워크 처리 코어를 제어하는 코어의 클러스터 타입을 결정하고, 상기 결정된 클러스터 타입에 속한 하나의 코어 넘버를 랜덤하게 선택하여 상기 네트워크 처리 코어의 위치를 결정하도록 설정된 전자 장치.
  14. 제11항에 있어서,
    상기 프로세서는,
    상기 멀티 코어 중 임의의 코어 넘버 X 의 드라이버 코어를 활성화하고,
    상기 코어 넘버 X 의 드라이버 코어를 통해 상기 운영체제 영역으로 패킷을 전달하고,
    상기 코어 넘버 X 의 드라이버 코어를 통해 상기 코어 관리 컨트롤러부터 상기 네트워크 처리 코어의 위치를 획득하고,
    상기 코어 넘버 X 의 드라이버 코어를 통해 상기 획득한 네트워크 처리 코어의 위치를 기반으로 코어 넘버 Z의 네트워크 처리 코어로 패킷을 전달하고,
    상기 코어 넘버 Z의 네트워크 처리 코어를 통해 전달된 패킷을 네트워크 스택 처리하고,
    상기 임의의 코어 넘버 Y 의 어플리케이션 코어를 통해 코어 넘버 Z의 네트워크 처리 코어에서 처리된 패킷을 처리하도록 설정된 전자 장치.
  15. 제11항에 있어서,
    상기 프로세서는,
    상기 네트워크 처리 코어를 통해 설정된 기준 처리량에 대응하는 패킷의 양을 상기 운영 체제 영역에서 묶음 처리하도록 제어하도록 설정된 전자 장치.
  16. 제11항에 있어서,
    상기 운영 체제 영역에서 구동되는 병렬 처리 엔진을 더 포함하고,
    상기 병렬 처리 엔진은,
    상기 드라이버 코어로부터 전달된 패킷의 세션 식별 정보를 생성하고, 상기 세션 식별 정보 및 상기 병렬 처리 엔진으로 패킷을 전달한 드라이버 코어의 넘버를 상기 프로세서로 전달하고, 상기 프로세서로부터 상기 네트워크 처리 코어의 위치를 획득하고, 상기 프로세서의 제어 하에, 상기 결정된 위치의 네트워크 처리 코어로 패킷을 전달하도록 설정된 전자 장치.
  17. 제16항에 있어서,
    상기 프로세서는,
    상기 수신된 패킷의 세션 식별 정보, 상기 드라이버 코어의 코어 넘버, 패킷을 처리하는 어플리케이션 코어의 코어 넘버 및 세션의 패킷 처리량 정보 중 적어도 하나를 기반으로 상기 네트워크 처리 코어의 코어 넘버를 결정하고, 상기 병렬 처리 엔진으로 상기 네트워크 처리 코어의 코어 넘버를 전달하고,
    상기 병렬 처리 엔진은,
    상기 전달된 코어 넘버의 대응하는 네트워크 처리 코어로 상기 패킷을 전달하도록 설정된 전자 장치.
  18. 제11항에 있어서,
    상기 프로세서는,
    상기 패킷의 세션 식별 정보를 기반으로 패킷을 처리하는 어플리케이션의 동작을 모니터링하여 어플리케이션 코어의 위치를 결정하고, 상기 어플리케이션 코어의 위치가 변경되는 조건이 발생되는 경우 상기 패킷을 처리하는 어플리케이션 코어의 위치를 변경하도록 제어하도록 설정된 전자 장치.
  19. 제18항에 있어서,
    상기 프로세서는,
    상기 패킷과 관련된 어플리케이션에 대응하여 할당되는 코어의 위치가 지정된 경우 지정된 코어의 위치를 상기 어플리케이션 코어의 위치로 결정하거나, 상기 어플리케이션에 대응하여 할당된 코어의 위치가 지정되지 않는 경우 상기 어플리케이션의 동작이 포어그라운드 또는 백그라운드에서 동작하는지에 따라 상기 어플리케이션 코어의 위치를 결정하거나, 어플리케이션의 패킷 처리 학습을 기반으로 상기 어플리케이션 코어의 위치를 결정하도록 설정된 전자 장치.
KR1020190032915A 2019-03-22 2019-03-22 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법 KR20200112439A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190032915A KR20200112439A (ko) 2019-03-22 2019-03-22 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법
US16/823,512 US11758023B2 (en) 2019-03-22 2020-03-19 Multicore electronic device and packet processing method thereof
PCT/KR2020/003870 WO2020197184A1 (en) 2019-03-22 2020-03-20 Multicore electronic device and packet processing method thereof
CN202080022621.3A CN113632065A (zh) 2019-03-22 2020-03-20 多核电子装置及其分组处理方法
EP20779866.1A EP3928204A4 (en) 2019-03-22 2020-03-20 MULTI-CORE ELECTRONIC DEVICE AND ASSOCIATED PACKET PROCESSING METHOD

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190032915A KR20200112439A (ko) 2019-03-22 2019-03-22 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법

Publications (1)

Publication Number Publication Date
KR20200112439A true KR20200112439A (ko) 2020-10-05

Family

ID=72514375

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190032915A KR20200112439A (ko) 2019-03-22 2019-03-22 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법

Country Status (5)

Country Link
US (1) US11758023B2 (ko)
EP (1) EP3928204A4 (ko)
KR (1) KR20200112439A (ko)
CN (1) CN113632065A (ko)
WO (1) WO2020197184A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220093923A (ko) * 2020-12-28 2022-07-05 재단법인대구경북과학기술원 다중 코어 할당 장치 및 방법
WO2022211286A1 (ko) * 2021-03-29 2022-10-06 삼성전자 주식회사 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
WO2023249134A1 (ko) * 2022-06-21 2023-12-28 엘지전자 주식회사 홈 어플라이언스

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116436855B (zh) * 2023-06-12 2023-09-12 建信金融科技有限责任公司 数据信息处理方法、装置、电子设备和介质

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5506987A (en) 1991-02-01 1996-04-09 Digital Equipment Corporation Affinity scheduling of processes on symmetric multiprocessing systems
US20080002702A1 (en) 2006-06-30 2008-01-03 Symbol Technologies, Inc. Systems and methods for processing data packets using a multi-core abstraction layer (MCAL)
CN101689158B (zh) 2007-07-09 2012-06-06 惠普发展公司,有限责任合伙企业 用于多核处理器的数据分组处理方法
US20100077403A1 (en) * 2008-09-23 2010-03-25 Chaowei Yang Middleware for Fine-Grained Near Real-Time Applications
KR101622168B1 (ko) 2008-12-18 2016-05-18 삼성전자주식회사 실시간 스케쥴링 방법 및 이를 이용한 중앙처리장치
US8009682B2 (en) * 2009-05-05 2011-08-30 Citrix Systems, Inc. Systems and methods for packet steering in a multi-core architecture
US8289975B2 (en) * 2009-06-22 2012-10-16 Citrix Systems, Inc. Systems and methods for handling a multi-connection protocol between a client and server traversing a multi-core system
US8392661B1 (en) * 2009-09-21 2013-03-05 Tilera Corporation Managing cache coherence
US20110153982A1 (en) * 2009-12-21 2011-06-23 Bbn Technologies Corp. Systems and methods for collecting data from multiple core processors
US8452835B2 (en) * 2009-12-23 2013-05-28 Citrix Systems, Inc. Systems and methods for object rate limiting in multi-core system
US8463887B2 (en) * 2009-12-23 2013-06-11 Citrix Systems, Inc. Systems and methods for server surge protection in a multi-core system
CN107608755A (zh) * 2010-07-01 2018-01-19 纽戴纳公司 为了优化群集特定配置的使用而按进程类型在群集之间分割进程
WO2012019114A1 (en) * 2010-08-06 2012-02-09 Citrix Systems, Inc. Systems and methods for a para-virtualized driver in a multi-core virtual packet engine device
EP2659620B1 (en) * 2010-12-29 2018-10-17 Citrix Systems Inc. Systems and methods for scalable n-core statistics aggregation
US10045153B2 (en) * 2011-08-18 2018-08-07 Rivada Research, Llc Enhanced location based information enabling self-realized leases
US9069553B2 (en) * 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
US8996718B2 (en) 2012-02-02 2015-03-31 Apple Inc. TCP-aware receive side coalescing
US9430239B2 (en) * 2013-03-12 2016-08-30 Qualcomm Incorporated Configurable multicore network processor
US9706004B2 (en) * 2013-04-06 2017-07-11 Citrix Systems, Inc. Systems and methods for exporting client and server timing information for webpage and embedded object access
US9432269B2 (en) * 2013-04-06 2016-08-30 Citrix Systems, Inc. Systems and methods for exporting application details using appflow
KR101553649B1 (ko) 2013-05-13 2015-09-16 삼성전자 주식회사 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법
US9292293B2 (en) * 2013-08-08 2016-03-22 Qualcomm Incorporated Intelligent multicore control for optimal performance per watt
US10044612B2 (en) * 2013-11-06 2018-08-07 Citrix Systems, Inc. Systems and methods for port allocation
US9742682B2 (en) 2014-03-11 2017-08-22 Vmware, Inc. Large receive offload for virtual machines
KR102257737B1 (ko) 2014-08-12 2021-05-28 삼성전자 주식회사 전자장치의 처리량 제어장치 및 방법
US10049327B2 (en) * 2014-12-12 2018-08-14 Qualcomm Incorporated Application characterization for machine learning on heterogeneous core devices
WO2016183028A2 (en) * 2015-05-10 2016-11-17 Apl Software Inc. Methods and architecture for enhanced computer performance
KR20170125564A (ko) 2016-05-04 2017-11-15 한국전자통신연구원 병렬 패킷 처리를 위한 패킷 분배 방법 및 패킷 분배 관리장치
US10613611B2 (en) * 2016-06-15 2020-04-07 Intel Corporation Current control for a multicore processor
US10091904B2 (en) * 2016-07-22 2018-10-02 Intel Corporation Storage sled for data center
KR101873110B1 (ko) 2016-10-19 2018-06-29 부산대학교 산학협력단 애플리케이션의 경로 제어 장치 및 방법
CN110383792B (zh) * 2017-01-25 2022-05-24 微软技术许可有限责任公司 通信系统中的计算系统和方法
EP3404533B1 (en) * 2017-05-17 2021-05-05 Samsung Electronics Co., Ltd. Method and apparatus for data processing based on multicore
US10572400B2 (en) * 2017-06-15 2020-02-25 Mellanox Technologies, Ltd. Shared processing of a packet flow by multiple cores
US11644834B2 (en) * 2017-11-10 2023-05-09 Nvidia Corporation Systems and methods for safe and reliable autonomous vehicles
KR102604290B1 (ko) * 2018-07-13 2023-11-20 삼성전자주식회사 전자 장치의 데이터 패킷 처리 장치 및 방법
KR20210029834A (ko) * 2018-08-03 2021-03-16 삼성전자주식회사 멀티 코어 프로세서에서 연결 및 CAA(clat aware affinity) 기반 스케줄링 설정을 위한 방법 및 장치
KR20200114166A (ko) * 2019-03-27 2020-10-07 삼성전자주식회사 네트워크 패킷 처리 방법 및 이를 위한 전자 장치
US11182221B1 (en) * 2020-12-18 2021-11-23 SambaNova Systems, Inc. Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220093923A (ko) * 2020-12-28 2022-07-05 재단법인대구경북과학기술원 다중 코어 할당 장치 및 방법
WO2022145613A1 (ko) * 2020-12-28 2022-07-07 재단법인대구경북과학기술원 다중 코어 할당 장치 및 방법
WO2022211286A1 (ko) * 2021-03-29 2022-10-06 삼성전자 주식회사 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
WO2023249134A1 (ko) * 2022-06-21 2023-12-28 엘지전자 주식회사 홈 어플라이언스

Also Published As

Publication number Publication date
EP3928204A4 (en) 2022-04-13
CN113632065A (zh) 2021-11-09
WO2020197184A1 (en) 2020-10-01
US11758023B2 (en) 2023-09-12
EP3928204A1 (en) 2021-12-29
US20200301745A1 (en) 2020-09-24

Similar Documents

Publication Publication Date Title
KR20200112439A (ko) 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법
CN112352404B (zh) 用于处理电子设备的数据分组的装置和方法
US10477296B2 (en) Method for controlling earpiece and electronic device for supporting the same
CN107391259B (zh) 资源处理方法和装置、计算机可读存储介质、移动终端
EP3706449B1 (en) System for transmitting response message in bluetooth network environment
KR20200111558A (ko) 무선 통신 채널을 통한 주기적인 측위 통신을 제공하는 전자 장치
EP3909386B1 (en) Electronic device for transmitting response message in bluetooth network environment and method for the same
KR102405773B1 (ko) Usb 타입 c 인터페이스를 이용한 멀티 디바이스 간의 통신 방법 및 이를 구현한 전자 장치
KR20200110086A (ko) 무선 통신 링크의 설정 방법 및 이를 지원하는 전자 장치
KR20200144759A (ko) 블루투스 통신 연결 방법 및 그 전자 장치
US20240007953A1 (en) Electronic device for reducing power consumption in network on basis of wi-fi direct protocol, and method related thereto
KR20200114166A (ko) 네트워크 패킷 처리 방법 및 이를 위한 전자 장치
EP3826246A1 (en) Device and method for processing data packet
EP3812909B1 (en) Terminal, and type c interface anti-corrosion method
KR102608382B1 (ko) 데이터를 처리하는 방법 및 이를 수행하는 전자 장치
KR20210060194A (ko) 패킷 전달을 제어하는 전자 장치 및 그의 동작 방법
KR20190140664A (ko) 전자 장치 및 전자 장치의 무선랜 중계기능 제어 방법
CN117203616A (zh) 电子设备及电子设备的传感器数据处理方法
KR20210128118A (ko) 거리 측정과 관련된 전력 소모를 줄이기 위한 전자 장치 및 그의 동작 방법
US20200413342A1 (en) Electronic device and method for reducing current consumption of electronic device in near field wireless communication using same
KR20210017314A (ko) 모바일 핫스팟을 제공하기 위한 전자 장치 및 모바일 핫스팟을 제공하기 위한 전자 장치의 동작 방법
KR20200033404A (ko) 네트워크에 연결하는 방법 및 이를 수행하는 전자 장치
US20220346167A1 (en) Electronic device for operating link and operatiion method thereof
US20210218505A1 (en) Data transmission method, terminal, and network device
KR20210116733A (ko) 네트워크 연결 방법 및 이를 지원하는 전자 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal