KR102604290B1 - 전자 장치의 데이터 패킷 처리 장치 및 방법 - Google Patents

전자 장치의 데이터 패킷 처리 장치 및 방법 Download PDF

Info

Publication number
KR102604290B1
KR102604290B1 KR1020180081520A KR20180081520A KR102604290B1 KR 102604290 B1 KR102604290 B1 KR 102604290B1 KR 1020180081520 A KR1020180081520 A KR 1020180081520A KR 20180081520 A KR20180081520 A KR 20180081520A KR 102604290 B1 KR102604290 B1 KR 102604290B1
Authority
KR
South Korea
Prior art keywords
core
data packets
data
electronic device
size
Prior art date
Application number
KR1020180081520A
Other languages
English (en)
Other versions
KR20200007420A (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 KR1020180081520A priority Critical patent/KR102604290B1/ko
Priority to CN201980041797.0A priority patent/CN112352404B/zh
Priority to PCT/KR2019/008109 priority patent/WO2020013510A1/en
Priority to EP19833609.1A priority patent/EP3782339B1/en
Priority to US16/511,538 priority patent/US11102137B2/en
Publication of KR20200007420A publication Critical patent/KR20200007420A/ko
Application granted granted Critical
Publication of KR102604290B1 publication Critical patent/KR102604290B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • 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
    • H04L49/00Packet switching elements
    • H04L49/65Re-configuration of fast packet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • H04L49/602Multilayer or multiprotocol switching, e.g. IP switching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9021Plurality of buffers per packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/06Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information
    • H04W28/065Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information using assembly or disassembly of packets
    • 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/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Communication Control (AREA)

Abstract

본 발명의 다양한 실시예들은 전자 장치가, 무선 통신 모뎀과, 통신 모뎀과 연결되고, 복수의 코어들(cores)을 포함하는 적어도 하나의 프로세서와, 프로세서와 작동적으로 연결된 비휘발성 메모리를 포함할 수 있다. 비휘발성 메모리는, 실행시에, 프로세서의 제 1 코어가, 무선 통신 모뎀으로부터, 제 1 크기를 가진 제 1 데이터 패킷들을 수신하고, 제 1 데이터 패킷들 중 적어도 일부를 프로세서의 제 2 코어로 전송하도록 하고, 제 2 코어가, 제 1 코어로부터 제 1 데이터 패킷들 중 적어도 일부를 수신하고, 제 1 데이터 패킷들 중 적어도 일부를, 제 1 데이터 패킷들의 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진 복수의 제 2 데이터 패킷들로 병합하고, 제 2 데이터 패킷들을, 제 1 코어 및 제 2코어가 아닌 프로세서의 다른 적어도 하나의 코어로 전송하도록 하는 인스트럭션들(instructions)을 저장할 수 있다.

Description

전자 장치의 데이터 패킷 처리 장치 및 방법{APPARATUS AND METHOD FOR PROCESSING DATA PACKET OF ELETRONIC DEVICE}
본 발명은 수신되는 데이터 패킷을 고속으로 처리할 수 있는 전자 장치의 데이터 패킷 처리 장치 및 방법에 관한 것이다.
전자 장치는 다른 전자 장치와 통신하면서 다양한 종류의 대용량 데이터 패킷을 처리할 수 있다. 예를 들면, 전자 장치는 고해상도 이미지, 비디오 및 음악과 같은 다양한 컨텐츠의 대용량 데이터 패킷을 처리할 수 있다.
전자 장치는 고속의 통신 모뎀을 통해 고속의 대용량 데이터 패킷을 수신할 수 있다. 예를 들면, 5G(5th generation) 이동 통신은 4G(4th generation) 이동 통신에 비하여 대용량 스루풋(예: 2 Gbps - 10Gbps) 및 저지연 통신 서비스를 제공할 수 있다. 전자 장치는 수신되는 고속의 대용량 데이터 패킷을 지연없이 처리할 수 있는 데이터 패킷 처리를 필요로 할 수 있다. 예를 들면, 스트리밍 방식으로 수신되는 데이터 패킷의 경우, 전자 장치는 지연없이 수신되는 데이터 패킷을 처리하는 것이 더 필요할 수 있다.
전자 장치는 데이터 패킷의 스루풋(예: device driver의 throughput)의 성능을 개선하기 위하여 데이터 패킷 분배 및 데이터 패킷의 병합 방법을 적용할 수 있다. 전자 장치는 데이터 패킷들을 분배하는 동작을 수행할 때, 데이터 패킷들의 병합 동작을 수행하는 시간으로 인해 데이터 패킷의 처리 시간이 지연될 수 있다.
다양한 실시 예에 따른 전자 장치는 수신되는 데이터 패킷들의 종류를 분류 및 복수의 코어들에 분배하여 데이터 패킷을 고속으로 처리할 수 있는 장치 및 방법을 제공할 수 있다.
다양한 실시예들에 따른 전자 장치는 수신되는 데이터 패킷들을 분류하여 복수의 코어들에 분산하는 디바이스 드라이버를 수신된 데이터 패킷을 읽어오는 구성과 GRO(generic receive offload) 및 RPS((receive packet steering)를 수행하는 구성을 독립적으로 구성할 수 있는 장치 및 방법을 제공할 수 있다.
다양한 실시예들에 따른 전자 장치는 디바이스 드라이버의 수신 버퍼(Rx queue)의 패킷들을 분류하여 복수의 코어들에 분산하고, 복수의 코어들이 각각 분류된 데이터 패킷의 GRO 동작 및 RPS 동작을 수행할 수 있는 장치 및 방법을 제공할 수 있다.
다양한 실시예들에서, 전자 장치는, 무선 통신 모뎀과, 통신 모뎀과 연결되고, 복수의 코어들(cores)을 포함하는 적어도 하나의 프로세서와, 프로세서와 작동적으로 연결된 비휘발성 메모리를 포함할 수 있다. 비휘발성 메모리는, 실행시에, 프로세서의 제1 코어가, 무선 통신 모뎀으로부터, 제1 크기를 가진 제1 데이터 패킷들을 수신하고, 제1 데이터 패킷들 중 적어도 일부를 프로세서의 제2 코어로 전송하도록 하고, 제2 코어가, 제1 코어로부터 제1 데이터 패킷들 중 적어도 일부를 수신하고, 제1 데이터 패킷들 중 적어도 일부를, 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 제1 크기보다 큰 크기를 가진 복수의 제2 데이터 패킷들로 병합하고, 제2 데이터 패킷들을, 제1 코어 및 제2코어가 아닌 프로세서의 다른 적어도 하나의 코어로 전송하도록 하는 인스트럭션들(instructions)을 저장할 수 있다.
다양한 실시예들에서, 전자 장치의 데이터 패킷 처리 방법은, 수신되는 데이터 패킷들을 분산 처리하여 백로그 큐에 저장하는 제1 데이터 패킷 처리 동작 및 백로그 큐에 저장된 데이터 패킷을 처리하여 상위 레이어에 전달하는 제2 데이터 패킷 처리 동작을 포함할 수 있다. 제1 데이터 패킷 처리 동작은, 제1 코어에서, 무선 통신 모뎀으로부터, 제1 크기를 가진 제1 데이터 패킷들을 수신하고, 제1 데이터 패킷들 중 적어도 일부를 프로세서의 제2 코어로 전송하는 동작 및 제2 코어에서, 상기 제1 코어로부터 제1 데이터 패킷들 중 적어도 일부를 수신하고, 제1 데이터 패킷들 중 적어도 일부를, 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 제1 크기보다 큰 크기를 가진 복수의 제2 데이터 패킷들로 병합하고, 제2 데이터 패킷들을, 적어도 하나의 네트워크 스택 코어의 백로그 큐에 저장하는 동작을 포함할 수 있다.
다양한 실시예들에서, 전자 장치는, 무선 통신 모뎀과, 통신 모뎀과 작동적으로 연결되고, 복수의 코어들(cores)을 포함하는 적어도 하나의 프로세서를 포함할 수 있다. 프로세서는, 수신되는 데이터 패킷들을 처리하여 백로그 큐에 저장하는 제1 데이터 패킷 처리부 및 백로그 큐에 저장된 데이터 패킷을 처리하여 상위 레이어에 전달하는 제2 데이터 패킷 처리부를 포함할 수 있다. 제1 데이터 패킷 처리부는, 상기 무선 통신 모뎀으로부터, 제1 크기를 가진 제1 데이터 패킷들을 수신하고, 제1 데이터 패킷들 중 적어도 일부를 프로세서의 제2 코어로 전송하는 제1 코어 및 제1 코어로부터 제1 데이터 패킷들 중 적어도 일부를 수신하고, 제1 데이터 패킷들 중 적어도 일부를, 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 제1 크기보다 큰 크기를 가진 복수의 제2 데이터 패킷들로 병합하고, 제2 데이터 패킷들을, 적어도 하나의 네트워크 스택 코어로 전송하는 제2 코어를 포함할 수 있다.
다양한 실시예들에 따른 전자 장치는 대용량의 packet 혹은 GRO 적용하여 데이터 패킷을 처리하는 경우, 데이터 패킷을 네트워크 스택으로 전송하기 전에 데이터의 처리 상태에 기반하여 GRO를 수행하기 위한 적어도 하나의 코어를 결정할 수 있다. 전자 장치는 네트워크 디바이스 드라이버에서 CPU 의 동작을 분산시킬 수 있어 데이터 패킷의 처리 지연을 최소화할 수 있다.
도 1은 다양한 실시예들에 따른 네트워크 환경 내의 전자 장치의 블럭도이다.
도 2a 및 도 2b는 다양한 실시예들에 따른 전자 장치의 데이터 패킷 처리 동작을 설명하기 위한 도면이다.
도 3은 다양한 실시예들에 따른 전자 장치의 데이터 패킷 처리 동작을 설명하기 도면이다.
도 4는 다양한 실시예들에 따른 전자 장치에서 데이터 패킷을 처리하는 동작을 설명하기 위한 도면이다.
도 5는 다양한 실시예들에 따른 전자 장치의 데이터 패킷 처리 동작을 설명하기 위한 도면이다.
도 6a 내지 도 6d는 다양한 실시예들에 따른 전자 장치에서 데이터 패킷을 처리하는 예를 도시하는 도면이다.
도 7은 다양한 실시예들에 따른 전자 장치의 데이터 패킷 처리 동작을 도시하는 흐름도이다.
도 8은 다양한 실시예들에 따른 전자 장치가 수신된 데이터 패킷의 처리 상태에 기반하여 데이터 패킷을 처리하는 동작을 도시하는 흐름도이다.
이하 다양한 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 다양한 실시예들에 따른 네트워크 환경(100) 내의 전자 장치(101)의 블럭도이다.
도 1을 참조하면, 네트워크 환경(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)와 별개로, 또는 그 일부로서 구현될 수 있다. 프로세서(120)는 멀티 코어 프로세서(multi-core processor)일 수 있다.
보조 프로세서(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)은 신호 또는 전력을 외부(예: 외부 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시예에 따르면, 안테나 모듈(197)은 하나 이상의 안테나들을 포함할 수 있고, 이로부터, 제1 네트워크 198 또는 제2 네트워크 199와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부 전자 장치 간에 송신되거나 수신될 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
일 실시예에 따르면, 명령 또는 데이터는 제2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부 전자 장치들(102, 104, or 108) 중 하나 이상의 외부 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치 (예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", “A 또는 B 중 적어도 하나,”"A, B 또는 C," "A, B 및 C 중 적어도 하나,”및 “A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제1", "제2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제1) 구성요소가 다른(예: 제2) 구성요소에, “기능적으로” 또는 “통신적으로”라는 용어와 함께 또는 이런 용어 없이, “커플드” 또는 “커넥티드”라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일 실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 전자 장치(101)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(140))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(101))의 프로세서(예: 프로세서(120))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체 는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
도 2a 및 도 2b는 다양한 실시예들에 따른 전자 장치의 데이터 패킷 처리 동작을 설명하기 위한 도면이다.
도 2a를 참조하면, 다양한 실시예들에 따른 전자 장치(예: 도 1의 전자 장치(101))는 모뎀(211) 및 패킷 처리 소프트웨어(200)를 포함할 수 있다. 패킷 처리 소프트웨어(200)는 제1 데이터 패킷 처리부(213), 제2 데이터 패킷 처리부(215), 어플리케이션 프레임워크(application framework)217 및 어플리케이션(applications)(219)를 포함할 수 있다. 패킷 처리 소프트웨어(200)는 메모리(예: 도 1의 메모리(130)의 프로그램(140))에 저장될 수 있으며, 프로세서(예: 도 1의 프로세서(120))에서 실행될 수 있는 소프트웨어 프로그램일 수 있다. 제1 데이터 패킷 처리부(213)는 하나 또는 적어도 2개의 네트워크 디바이스(network device #1 내지 network device #n)들을 포함할 수 있다. 예를 들면, 제2 데이터 패킷 처리부(215)는 네트워크 스택(network stack(TCP/IP, UDP,…))일 수 있다. 도 2a에서 제1 데이터 패킷 처리부(213), 제2 데이터 패킷 처리부(215) 및 어플리케이션 프레임워크(217)는 미들웨어(예: 도 1의 미들웨어(144))에 포함될 수 있다. 모뎀(211)은 하드웨어로 구성될 수 있다.
다양한 실시예들에 따르면, 전자 장치의 프로세서(예: 도 1의 프로세서(120))는 하나의 칩(cpu chip) 내에 복수의 CPU(central processing unit) 코어가 포함되는 멀티 코어 프로세서일 수 있다. 예를 들면, 옥타 코어 프로세서(octa-core processor)는 여덟개의 코어(예: 코어 1 내지 코어8)를 포함할 수 있다. 멀티 코어 프로세서는 전력 소모가 적은 저성능 코어(LITTLE core)와 전력 소모가 많은 고성능 코어(big core)를 포함할 수 있다. 리틀 코어 및 빅코어는 동일한 메모리 영역을 사용할 수 있으며, 상황에 따라 빅코어와 리틀 코어 사이에서 작업을 동적으로 할당할 수 있다. 이하의 설명에서 코어는 프로세서 코어 또는 코어의 의미를 포함하는 용어로 사용될 수 있다.
다양한 실시예들에 따르면, 어플리케이션 프로세서(application processor;AP)(예를 들면, 도 1의 프로세서)(120))는 모뎀(211)(예를 들면, 도 1의 통신 모듈(180)) 을 통해 데이터 패킷을 수신할 수 있으며, 모뎀(211)을 통해 데이터 패킷을 전송할 수 있다. 모뎀(211)은 5G(5th generation) 이동 통신을 지원하는 모뎀일 수 있다. 예를 들면, 모뎀(211)은 통신 프로세서(communication processor; CP)(예: 도 1의 보조 프로세서(123))에 포함될 수 있다. 전자 장치의 AP는 모뎀(211)을 통해 외부 전자 장치(예를 들면, 도 1의 전자 장치(102, 104) 또는 서버(예를 들면, 도 1의 서버(108))에 데이터 패킷을 전송할 수 있으며, 외부 전자 장치 또는 서버에서 전송되는 데이터 패킷을 수신할 수 있다.
다양한 실시예들에 따르면, 어플리케이션(219)는 전자 장치에 관련된 자원을 제어하는 운영 체제(예를 들면, 도 1의 운영 체제(143)) 및/또는 운영 체제 상에서 구동될 수 있다. 운영 체제는, 예를 들면, AndroidTM, LinuxTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 어플리케이션 프레임워크(217)는 어플리케이션(219)이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션(219)이 전자 장치 내부의 제한된 시스템 자원을 사용할 수 있도록 하는 다양한 기능들을 어플리케이션(219)에 제공할 수 있다.
다양한 실시예들에 따르면, 전자 장치의 어플리케이션(219)는 어플리케이션 프레임워크(217)를 통해 제2 데이터 패킷 처리부(215)를 통해 데이터 패킷을 송수신할 수 있다. 제2 데이터 패킷 처리부(215)는 네트워크 계층(예를 들면, tcp/udp/ip등의 인터넷 프로토콜 계층)을 포함할 수 있다. 제2 데이터 패킷 처리부(215)는 제1 데이터 패킷 처리부(213)을 통해 모뎀(211)에 데이터 패킷을 송신하거나 모뎀(211)으로부터 데이터 패킷을 수신할 수 있다. 제1 데이터 패킷 처리부(213)은 네트워크 디바이스(예를 들면, 모뎀(modem), 랜카드(lan card), 블루투스(bluetooth), NFC(near field communication), 와이파이, 디스플레이, 오디오, 비디오)의 디바이스 드라이버들을 포함할 수 있다.
예를 들면, 도 2a는 제2 데이터 패킷 처리부(215)(예: network stack)과 제1 데이터 패킷 처리부(213)(예를 들면, net device driver)를 포함하는 커널(kernel)의 구조의 예가 될 수 있다. 모뎀(211)을 통해 수신되는 데이터 패킷은 커널의 네트워크 디바이스 드라이버에 의해 네트워크 스택으로 올라가게 되고, 상위 계층의 어플리케이션(219)은 해당하는 패킷들을 사용할 수 있다.
다양한 실시예들에 따르면, 커널에서 제1 데이터 패킷 처리부(213)(network device)는 예를들어, NAPI(new API(application program interface)) 또는 netif_rx 방식으로 동작할 수 있다. netif_rx 방식은 매 인터럽트 발생 시 마다 수신 데이터 패킷을 처리할 수 있다. NAPI 방식은 인터럽트 수신 시 폴링(polling) 모드로 전환하여 데이터 패킷을 일정 개수까지 한번에 처리할 수 있다. 제1 데이터 패킷 처리부(213)는 인터럽트가 수신되는 경우, napi_weight만큼의 데이터 패킷을 모뎀(211)으로부터 가져온 후, 자원(예: 프로세스 코어)을 복구(release)하고 다음 스케줄링을 기다릴 수 있다.
다양한 실시예들에 따르면, 수신된 데이터 패킷 처리 방법은 제1 데이터 패킷 처리부(213)가 매 hwirq(hardware interrupt request, 모뎀(211)에서 프로세서에 데이터가 수신됨을 알리는 인터럽트))가 발생될 때 데이터 패킷을NIC(network interface card) 버퍼에서 버퍼(network device buffer(Rx queue))로 가져오는 동작, 제1 데이터 패킷 처리부(213)가 처리된 데이터 패킷을 제2 데이터 패킷 처리부(215)의 각 코어(core)의 백로그 큐(backlog queue)에 삽입하는 동작, 제2 데이터 패킷 처리부(215)가 백로그 큐에 저장된 데이터 패킷들을 리드하여 네트워크 스택 처리를 하는 동작들을 포함할 수 있다. 백로그 큐는 네트워크 스택 연결(예:TCP 연결)을 대기할 수 있는 큐를 의미할 수 있으며, 메모리(예: 도 1의 메모리(130)에 할당될 수 있다.
다양한 실시예들에 따르면, 커널에서 제1 데이터 패킷 처리부(213)는 하드웨어 인터럽트 수신 시의 처리를 최대한 간략하게 하고, 소프트웨어 인터럽트 처리(Bottom half)를 이용해 데이터 패킷 처리의 남은 부분을 완료할 수 있다.
다양한 실시예들에 따르면, 도 2b는 데이터 패킷의 수신에 관계되는 버퍼들의 관계를 설명하기 위한 도면이다. 모뎀(211)에서 프로세서로 (예를 들어, PCIe 인터페이스를 통해) 수신되는 데이터 패킷은 NIC의 내부 수신 버퍼(NIC internal buffer)에 저장될 수 있다. NIC는 저장된 데이터 패킷을 링(ring) 버퍼(예를 들면, received queue)에 저장할 수 있다. 예를 들면, NIC는 데이터 패킷을 수신할 수 있으며, 네트워크 드라이버 설정에 따라 데이터 패킷을 내부 수신 버퍼 또는 지정된 링버퍼에 전송할 수 있다. NIC는 hwirq를 발생하여 프로세서에 데이터 패킷의 수신을 알릴 수 있으며, 프로세서는 해당하는 네트워크 드라이버를 소프트웨어 인터럽트 처리(softirq) 작업을 수행할 수 있다. 수신 버퍼(예; ring buffer, received queue)는 네트워크 디바이스 연결을 대기할 수 있는 큐를 의미할 수 있으며, 메모리(예: 도 1의 메모리(130)에 할당될 수 있다.
다양한 실시예들에 따르면, 드라이버(예: 제1 데이터 패킷 처리부(213))는 링 버퍼에 저장된 패킷들을 처리하여 상위 레이어(예: 제2 데이터 패킷 처리부(215))에 전송할 수 있다. NAPI를 사용하는 경우, 드라이버와 상위 레이어 사이에 버퍼는 없을 수 있다. 상위 레이어는 링 버퍼에 저장된 패킷을 직접 억세스할 수 있다. 상위 레이어에서 처리되는 데이터 패킷의 페이로드 데이터(payload data)는 수신 소켓 버퍼(received socket buffer)에 저장될 수 있다. 어플리케이션은 소켓 버퍼에서 데이터를 억세스할 수 있다. NAPI를 지원하지 않는 드라이버는 상위 레이어의 백로그 큐(backlog queue, 미도시)에 데이터 패킷을 저장할 수 있다. 백로그 큐는 연결 요청이 완전히 처리되지 않은 대기 상태에 있는 큐를 의미할 수 있다. 백로그 설정은 수신 대기자에 대한 보류 중인 연결 큐의 최대 값이 될 수 있으며, 백로크 큐가 가득차면 추가 소켓 요청이 거부될 수 있다. 멀티 코어에서 네트워크 스택을 처리하는 방법에서, 백로그 큐는 각 프로세서 코어 별로 할당될 수 있다. 상위 레이어는 백로그 큐에 저장된 데이터 패킷을 처리하여 소켓 큐에 저장할 수 있다.
도 3은 다양한 실시예들에 따른 전자 장치의 데이터 패킷 처리 동작을 설명하기 도면이다.
도 3을 참조하면, 다양한 실시예들에 따른 전자 장치(예를 들면, 도 1의 전자 장치(101))는 제1 데이터 패킷 처리부(310) 및 제2 데이터 패킷 처리부(340)을 포함할 수 있다. 제1 데이터 패킷 처리부(310)는 네트워크 디바이스 드라이버일 수 있으며, 수신 큐(320) 및 패킷 분배(received packet steering)부(330)을 포함할 수 있다. 수신 큐(320) 및 제2 데이터 패킷 처리부(340)의 숫자 “1”, “2”, “3”은 수신된 패킷의 헤더(예: TCP/IP header) 정보의 예가 될 수 있다. 코어는 GRO(generic receive offload) 기법에 기반하여 헤더 정보가 같은 패킷들을 하나의 패킷으로 묶을(merge) 수 있다.
다양한 실시예들에 따르면, 프로세서(예: 도 1의 프로세서(120))는 모뎀(예를 들면, 도 2a의 모뎀(211)에서 데이터 패킷이 수신 되면 인터럽트를 수신할 수 있다.즉, 모뎀(예: 도 2의 모뎀(211), 도 1의 보조 프로세서(123) 또는 통신 모듈(190))는 AP(예를 들면, 도 1의 프로세서(120))에 데이터 패킷이 수신되었음을 알려주기 위한 HW IRQ(예를 들면, NIC카드에 인터럽트)를 발생시킬 수 있다.다양한 실시예에 따르면, CP는 MTU(maximum trasnsmission unit) 단위의 데이터 패킷을 원하는 만큼 전송한 후 IRQ를 발생시킬 수 있다. 예를 들면, 1개의 IRQ발생 전에 데이터 패킷(예를 들면, 최대 330개의 packet)을 버퍼(예를 들어, 모뎀 버퍼 또는 의 NIC 버퍼)에 저장할 수 있다.
다양한 실시예들에 따르면, CP에서 HW IRQ와 함께 수신된 데이터 패킷은 데이터 종류(예:IPC 데이터, 네트워크 패킷 데이터, RFS 데이터)별로 구분된 저장 공간에 인입(저장)될 수 있다. 예를 들어, NIC 및/또는 제1 데이터 패킷 처리부(310)는 모뎀 버퍼(미도시)에 저장된 데이터 패킷의 헤더를 분석하여, IPC 데이터(즉, 네트워크 및 모뎀 제어 데이터(예를 들어, IPC(inter processor communication)데이터))일 경우 이를 적합한 프로그램 모듈, 예를 들어 RIL(radio interface layer, 미도시)에 전달하고, 네트워크 패킷 데이터(즉, 네트워크에서 수신한 인터넷 패킷 데이터)일 경우 제2 데이터 패킷 처리부(340)(network stack(예: TCP/UDP/IP 레이어))에 전달할 수 있다. 도 3에서 제1 데이터 패킷 분배부(310)의 동작은 코어 3에의해 수행될 수 있다.
다양한 실시예들에 따르면, 제1 데이터 패킷 처리부(310)는 수신 큐(rx queue)(320) 및 패킷 분배부(330)을 포함할 수 있다. 네트워크 데이터 패킷의 경우, 제1 데이터 패킷 처리부(310)는 RPS(receive packet steering)기법으로 제2 데이터 패킷 처리부(340)의 복수의 코어 들에 분산시켜 전달할 수 있다. 분배 정책은, 예를 들어, 수신 데이터 패킷을 설정된 조건(예를 들면, IP address, PORT number, random value)에 따라 분류(제1 데이터 패킷 처리)하고, 분류된 데이터 패킷들을 제2 데이터 패킷 처리부(340)(network stack)의 대응되는 코어 들에 전달할 수 있다. 예를 들면, 제1 데이터 패킷 처리부(310)는 데이터 패킷 별로 현재 활용가능한 코어(예를 들어, 제2 데이터 패킷 처리부의 코어)를 지정/회신하고, 해당 데이터 패킷을 적합한 백로그 큐(예를 들어, 해당 코어 전용으로 지정된 백로그 큐)에 할당/삽입할 수 있다. 예를 들면, 도 3에서 코어 3은 헤더 정보가 “1”인 네트워크 데이터 패킷들을 묶어 코어 4에 전달하고, 헤더 정보가 “2”인 네트워크 데이터 패킷들을 묶어 코어 5에 전달하고, 헤더 정보가 “3”인 네트워크 데이터 패킷들을 묶어 코어 6에 전달할 수 있다.
다양한 실시예들에 따르면, 제2 데이터 패킷 처리부(340)는 지정된 소프트웨어 인터럽트(예:NET_RX IRQ)가 발생되는 경우, 각 버퍼에 저장된 데이터 패킷들을 처리하여 상위 레이어(소켓/애플리케이션)으로 전달할 수 있다. 예를 들면, 제2 데이터 패킷 처리부(340)는 데이터 패킷의 IP 헤더를 분석하고, IP 패킷에 대한 옵션들을 확인하여 데이터 패킷의 다음 경로를 결정할 수 있다. 제1 데이터 패킷 처리부(310)에서 분산되어 전달된 패킷들은 제2 데이터 패킷 처리부(340)의 각 코어 별 지정된 소프트웨어 인터럽트 문맥(예:NET_RX 컨텍스트)에서 처리될 수 있다. 네트워크 데이터 패킷들은 제1 데이터 패킷 처리부(310)의 분배 정책(예:RPS 기법)에 의해 사전에 설정된 제2 데이터 패킷 처리부(340)의 각 코어 들에서 분산 처리될 수 있다. 제2 데이터 패킷 처리부(340)는 특정 CPU 코어에 네트워크 데이터 패킷들이 몰리는 경우를 방지하고, 여러 개의 코어들이 데이터 패킷들을 병렬 처리하여 대용량의 데이터 패킷들을 지연없이 처리할 수 있다.
다양한 실시예들에 따르면, 5G 이동 통신 시스템은 데이터 패킷들을 RPS로 분산 처리하는 경우에도 코어 자원이 부족할 수 있다. GRO(General Receive Offload) 방법은 네트워크 디바이스 드라이버(제1 데이터 패킷 처리부(310))가 네트워크 데이터 패킷 수신시, IP/TCP header 정보가 같은 연속된 패킷 데이터들을 하나의 패킷으로 병합해서(또는, 묶어서)(예를 들면, 최대 64kbyte) Network stack로 올려주는 기법일 수 있다.
도 4는 다양한 실시예들에 따른 전자 장치에서 데이터 패킷을 처리하는 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 다양한 실시예들에 따른 전자 장치(예를 들면, 도 1의 전자 장치(101))는 제1 데이터 패킷 처리부(410) 및 제2 데이터 패킷 처리부(450)을 포함할 수 있다. 제1 데이터 패킷 처리부(410)은 수신 큐(420), 패킷 병합부(430) 및 패킷 분배부(440)을 포함할 수 있다. 예를 들면, 수신 큐(420), 패킷 병합부(430) 및 제2 데이터 패킷 처리부(450)의 숫자 “1”, “2”, “3”은 수신된 패킷의 헤더(예: TCP/IP header) 정보의 예가 될 수 있다. 패킷 병합부(430)는 GRO(generic receive offload) 기법에 기반하여 헤더 정보가 같은 패킷들을 하나의 패킷으로 묶을(merge) 수 있다. 예를 들면, 제1 데이터 패킷 처리부(410)의 동작은 코어 3에서 수행될 수 있다.
다양한 실시예들에 따르면, 수신되는 데이터 패킷은 제1 데이터 패킷 처라부(410)의 수신 큐(420)에 저장될 수 있다. 패킷 병합부(430)는 수신 큐(420)에서 데이터 패킷을 분석하여 연속된 데이터 패킷들을 하나의 패킷으로 병합할 수 있다. 예를 들면, 패킷 병합부(430)는 데이터 패킷의 헤더를 분석하여 IP/TCP 헤더 정보가 동일한 데이터 패킷들을 하나의 패킷으로 병합할 수 있다. 패킷 병합부(410)는 제2 데이터 패킷 처리부(450)의 코어들이 동일한 IP/TCP 헤더를 가지는 데이터 패킷들을 처리할 수 있도록 할 수 있다. 예를 들면, 패킷 병합부(430)는 헤더 정보가 “1”인 네트워크 데이터 패킷들을 제1 데이터 패킷으로 묶을 수 있으며, 헤더 정보가 “2”인 네트워크 데이터 패킷들을 제2 데이터 패킷으로 묶을 있으며, 헤더 정보가 “3”인 네트워크 데이터 패킷들을 제3 데이터 패킷으로 묶을 수 있다. 예를 들면, 패킷 분배부(440)는 패킷 병합부(430)에서 병합된 제1 데이터 패킷, 제2 데이터 패킷 및 제3 데이터 패킷들을 분산하여 제2 데이터 패킷 처리부(450)의 코어 4, 코어 5 및 코어6의 각각 지정된 버퍼들에 전달할 수 있다.
다양한 실시예들에 따르면, 지정된 버퍼는 제2 데이터 패킷 처리부(450)에서 각각 대응되는 코어4, 코어 5 및 코어 6의 백로그 큐가 될 수 있다. 지정된 버퍼에 저장되는 데이터 패킷은 GRO 기능에 의해 동일한 헤더 정보를 가지는 데이터 패킷들이 하나의 패킷으로 병합된 패킷이 될 수 있다. 각 지정된 코어들에서 동작되는 제 2 데이터 패킷 처리부(450)는 백로그 큐에 인입된 패킷들을 네트워크 스택(예:TCP 프로토콜 및/또는 IP 프로토콜) 처리를 수행하고 상위 레이어(예: 소켓 레이어)로 전달할 수 있다.
다양한 실시예들에 따르면, GRO 기능은 제1 데이터 패킷 처리부(410)(예를 들면, network devce driver)와 같은 CPU 문맥(예:코어 3)에서 수행될 수 있으며, 제2 데이터 패킷 처리부(450)(예를 들면, network stack)의 동작은 이전의 동작과 동일한 방법으로 수행될 수 있다. GRO 방법을 사용하면, 제2 데이터 패킷 처리부(450)에 처리되는 데이터 패킷들의 수를 감소시킬 수 있으며, 제2 데이터 패킷 처리부(340)은 데이터 패킷 당 처리 시간을 줄일 수 있다. 예를 들면, 데이터 패킷을 처리하는 경우, 네트워크 디바이스 드라이버는 GRO 방법에 기반하여 수신되는 데이터 패킷들을 병합하여 네트워크 스택의 패킷 처리 시간을 줄일 수 있다. 예를 들면, GRO 기능을 사용하는 경우, AP에서 CP에 송신하는 ack 수를 줄 있어 CP의 부하를 줄일 수 있으며, AP 네트워크 데이터 패킷 처리 시간도 줄일 수 있다.
다양한 실시예들에 따르면, GRO 기능을 사용하는 경우, 제2 데이터 패킷 처리부(450)의 패킷 처리 시간을 줄일 있지만, 제1 데이터 패킷 처리부(410)는 GRO 기능의 수행에 따라 제1 데이터 패킷의 처리 시간이 증가될 수 있다. 예를 들면, GRO 기능을 수행하는 시간이 길어지는 경우, GRO 자체가 차지하는 시간이 전체 데이터 처리 시간 대비 보틀넥(bottle-neck)이 될 수 있다.
도 5는 다양한 실시예들에 따른 전자 장치의 데이터 패킷 처리 동작을 설명하기 위한 도면이다.
도 5를 참조하면, 다양한 실시예들에 따른 전자 장치(예를 들면, 도 1의 전자 장치(101))는 제1 데이터 패킷 처리부(510) 및 제2 데이터 패킷 처리부(570)을 포함할 수 있다. 제1 데이터 패킷 처리부(510)는 수신 큐(520), 제1 패킷 분배부(530), 패킷 병합부(540), 및 제2 패킷 분배부(550)을 포함할 수 있다. 예를 들면, 수신 큐(420), 패킷 병합부(540) 및 제2 데이터 패킷 처리부(570)의 숫자 “1”, “2”, “3”은 수신된 패킷의 헤더(예: TCP/IP header) 정보의 예가 될 수 있다. 패킷 병합부(430)는 GRO(generic receive offload) 기법에 기반하여 헤더 정보가 같은 패킷들을 하나의 패킷으로 묶을(merge) 수 있다. 예를 들면, 수신 큐(520) 및 제1패킷 분배부(530)의 동작은 코어 3에서 수행될 수 있으며, 패킷 병합부(540)의 동작은 코어 1 및 코어 2에서 수행될 수 있으며, 제2 데이터 패킷 처리부(570)은 코어 4 내지 코어 6에서 수행될 수 있다.
다양한 실시예들에 따르면, 제1 데이터 패킷 처리부(510)의 동작을 살펴보면, 수신 큐(520)는 모뎀(예를 들면, 도 2의 모뎀(211))을 통해 수신되는 데이터 패킷을 저장할 수 있다. 다양한 실시예들에 따르면, 전자 장치는(예:도 1의 프로세서(120)) 제1 데이터 패킷 처리부가 동작하는 코어 3과는 다른 코어(예: 코어 1 또는 코어 2)에서 GRO 기능을 수행할 수 있다. 다양한 실시예에 따르면, 제1 패킷 분배부(530)는 수신 큐(520)에 저장된 데이터 패킷을 분석하여 패킷 병합부(540)의 지정된 CPU 코어에 분산 전달할 수 있다. 다양한 실시예에 따르면, 전자 장치(예:도 1의 프로세서(120))는 복수의 코어(예:코어 1 및 코어 2)에서 GRO 기능을 수행할 수 있다. 예를 들어, 제1 패킷 분배부(530)는 수신 큐(520)에 저장된 데이터 패킷을 분석하여 패킷 병합부(540)의 지정된 CPU 코어에 분산 전달할 수 있다. 다양한 실시예에 따르면, 제1 패킷 분배부(530)는 수신 큐(520)에 저장된 데이터 패킷을 분석하여 GRO의 기능 활성화 선택 여부를 결정할 수 있으며, GRO 기능 활성화 선택시 데이터 패킷의 GRO 기능을 수행하기 위한 적어도 하나의 코어를 지정하여 데이터 패킷을 전달할 수 있다. 예를 들어, GRO 기능을 사용하지 않기로 결정된 패킷(예: 패킷 플로우)들은 제2 데이터 패킷 처리부(570)으로 전달될 수 있다.
다양한 실시예들에 따르면, 제2 패킷 분배부(550)는 데이터 패킷을 분석하여 제2 데이터 패킷 처리부(570)의 지정된 CPU 코어에 분산 전달할 수 있다. 제2 패킷 분배부(550)의 동작은 도 3의 패킷 분배부(330) 및 도 4의 패킷 분배부(440)와 동일한 동작으로 실행될 수 있다.
다양한 실시예들에 따르면, 도 5의 제1 데이터 패킷 처리부(510)가 수신 큐(520)으로 데이터 패킷을 읽어오는 구성(예를 들면, 수신 큐(520) 및 제1 패킷 분배부(530))과 GRO를 처리하는 구성(패킷 병합부(540) 및 제2 패킷 분배부(550))를 독립적으로 구성하여 데이터 패킷을 분산 처리할 수 있다. 예를 들면, 제1 데이터 패킷 처리부(510)는 수신 큐(510)으로부터 데이터 패킷을 읽어 패킷을 분석하여 GRO 수행 여부 및 GRO을 수행할 CPU 코어를 결정(제1 RPS기능)하는 코어와, GRO 및 제2 RPS 기능을 수행하는 적어도 하나의 코어를 포함할 수 있다. 또한 제1 데이터 패킷 처리부(510)는 복수의 GRO를 구동하여 복수의 CPU 코어에서 데이터 패킷의 GRO를 수행한다. 제1 패킷 분배부(530)는 수신 큐(520)의 데이터 패킷을 필터링 및 분류하여 각 GRO버퍼에 저장할 수 있다.
예를 들면, 제1 패킷분배부(530)는 데이터 패킷의 헤더 정보에 기반하여 데이터 패킷들을 분산할 수 있다. 예를 들면, 제1 패킷 분배부(530)는 헤더 정보가 “1”인 네트워크 데이터 패킷들을 패킷 병합 동작을 수행하는 코어 1에 전달하고, 헤더 정보가 “2”인 네트워크 데이터 패킷들을 코어 2에 전달할 수 있으며, 헤더 정보가 “3”인 네트워크 패킷들을 제2 패킷 분배부(570에 전달되도록 동작할 수 있다. 패킷 병합부(540)의 코어 1은 헤더 정보가 “1”인 네트워크 데이터 패킷들을 제1 데이터 패킷으로 묶을 수 있으며, 헤더 정보가 “2”인 네트워크 데이터 패킷들을 제2 데이터 패킷으로 묶을 수 있다. 제2 패킷 분배부(560)는 패킷 병합부(540)에서 병합된 제1 데이터 패킷 및 제2 데이터 패킷과, 제1 패킷 분배부(530)에서 전달되는 제3 데이터 패킷들을 제2 데이터 패킷 처리부(450)의 코어 4, 코어 5 및 코어6의 각각 지정된 버퍼들에 분배하여 전달할 수 있다.
다양한 실시예들에 따르면, 제1 RPS 기능의 제1 패킷 분배부(530)은 수신 큐에 저장된 패킷을 분류하여 GRO 기능을 수행하는 적어도 하나의 코어에 분배하는 코어 분배 모듈일 수 있으며, 제2 RPS 기능의 제2 패킷 분배부(550)는 GRO 기법에 처리된(병합된) 데이터 패킷들을 분류하여 네트워크 스택을 위한 적어도 하나의 코어에 분배하는 코어 분배 모듈이 될 수 있다.
다양한 실시예들에 따르면, 제1 데이터 패킷 처리부(510)는 수신 큐(520)에 저장된 데이터 패킷을 패킷 병합부(540)에 전달하기 전에 제1 패킷 분배부(530)에서 GRO 기능을 수행할 CPU 코어를 결정할 수 있다.패킷 병합부(540)의 CPU 코어는 제1 패킷 분배부(530)에 의해 하나 또는 둘 이상의 복수 CPU 코어를 포함할 수 있다. 패킷 병합부(540)는 제1 패킷 분배부(530)에서 결정된 CPU 코어를 통해 데이터 패킷을 병합할 수 있다. 제1 데이터 패킷 처리부(510)는 GRO 로 인해 가중되는 처리 시간(예: 코어 3의 동작 시간)을 단축할 수 있다. 예를 들면, 제1 데이터 패킷 처리부(510)는 GRO 동작을 독립적으로 수행하는 경우, 한 번에 전송된 데이터 패킷(예:330개 패킷) 당 1.6msec 걸리던 네트워크 디바이스 레이어의 처리 시간을 1.4msec 까지 약 10% 감소시킬 수 있으며, 이에 따라 TCP DL TP 도 1.4Gbps에서 1.5Gbps 로 약 10% 증가킬 수 있다.
다양한 실시예들에 따르면, 전자 장치의 프로세서(예를 들면, 도 1의 프로세서(120)의 메인 프로세서(121, AP)의 코어 수는 복수 개로 구성될 수 있다. 또한 복수의 코어들은 처리 속도에 따른 고성능 코어(예:big core) 및 저성능 코어(예:Little core)로 구성할 수 있다. 예를 들면, 프로세서가 8개 코어(octa core)들을 포함하는 경우, 4개의 고성능 코어(예: big core)들과 4개의 저성능 코어(예: LITTLE core)들로 구성할 수 있다. 예를 들어, 전자 장치(예:프로세서(120))는 제 1 데이터 패킷 처리부(510)의 패킷 병합부(540)는 GRO 기능를 수행할 최대 코어 개수 및/또는 제2 데이터 패킷 처리부(570)를 처리할 최대 코어 개수를 지정할 수 있다. 예를 들어, 제1 데이터 패킷 처리부(510)의 제2 패킷 분배부(550)는 제2 데이터 패킷 처리부(570)에서 데이터 패킷들을 분산 처리할 수 있도록 2~3개의 코어들을 지정할 수 있다. 다양한 실시예들에 따르면, 제1 데이터 패킷 처리부(510)는 GRO 분산처리를 위해 추가적인 코어의 지정을 할 수 있다.
다양한 실시예들에 따르면, 전자 장치는 GRO 기능의 수행 여부 및 GRO 기능을 수행하는 코어를 지정할 수 있다. 예를 들어, 전자 장치는 GRO병목 상태로 판단되는 경우(예: GRO 처리 시간이 긴 경우, 해당 코어에서 다른 임의의 코어 처리 작업을 수행 중일 경우, 수신큐(631)에서 인입되는 시간 당 패킷의 양이 임계값 이상인 경우), 제1 RPS기능을 수행하는 코어(예를 들면, 제1 코어)는 런타임에 GRO처리를 위한 다른 코어(예를 들면, 제2 코어, 제3 코어…)를 지정하여 GRO 기능을 분산 처리할 수 있다. 전자 장치는 GRO 처리를 분산 처리를 하는 중(제2 코어 또는 복수의 코어들이 GRO를 수행하는 경우)에 GRO 처리의 병목이 해제되면, 제1 RPS기능을 수행하는 CPU 코어(제1 코어)에서 GRO 기능을 수행(제2 코어, 제3 코어…의 GRO 수행 해제)할 수 있다. 예를 들면, GRO 처리 시간이 다시 짧아지거나, 네트워크 스택에 소켓(port)이 1개만 열려 GRO 처리 시간이 짧을 것으로 예상되는 경우, 전자 장치는 GRO 분산 처리를 하지 않을 수 있다.
다양한 실시예들에 따르면, 전자 장치의 프로세서(예:제1 패킷 분배부(530))는 패킷 병합부(540) 및 제2 패킷 분배부(550)에서 사용할 CPU 코어의 수(제2 코어, 제3 코어…)를 결정/변경할 수 있다. 예를 들어, 전자 장치는, 실제 제2 데이터 패킷 처리부(570)에서 사용되는 소켓(port) 수에 따라 GRO를 분산 처리할 코어 수를 정할 수 있다. 예를 들어, 네트워크 드라이버에서 사용할 수 있는 max 코어의 수가 5개이고, 현재 활성화된 소켓 수가 3개인 경우, 전자 장치는 GRO를 분산처리 할 코어의 수를 3개(예: 제2 코어, 제3 코어, 제4 코어)로 설정하고, 나머지 2개를 제2 데이터 패킷 처리부(50)의 코어(예: 네트워크 스택 코어)로 결정하여, GRO 처리에 코어 개수의 우선순위를 줄 수 있다. 예를 들어, 네트워크 드라이버에서 사용할 수 있는 max 코어 개 수가 5개이고 현재 활성화된 소켓 수가 2개인 경우, 전자 장치는 GRO를 분산처리 할 CPU 코어의 수를 2개(예: 제2 코어, 제3 코어)로 설정하고 나머지 3개를 제2 데이터 패킷 처리부(570)의 CPU 코어(네트워크 스택 코어)로 설정할 수 있다. 예를 들면, 도 5에서 코어 3은 제1 코어, 코어 1은 제2 코어, 코어 2는 제3 코어, 코어 4 내지 코어 6은 네트워크 스택 코어가 될 수 있다.
다양한 실시예들에 따르면, 전자 장치는 GRO 처리에 지정된 코어를 제2 데이터 패킷 처리부(570)의 네트워크 스택 코어로 다시 지정할 수 있으며, 또는 유휴 상태에서 다른 임의의 코어를 네트워크 스택 코어로 지정할 수 있다. 다양한 실시예들에서, 전자 장치는 신속한 GRO처리가 가능하도록 GRO 동작에 코어 수의 우선순위를 줄 수 있으며, 또는 제2 데이터 패킷을 처리하는 코어에 우선 순위를 줄 수도 있다.
다양한 실시예들에 따르면, 전자 장치는 제1 데이터 패킷 처리부(510)에서 사용할 코어 및 제2 데이터 패킷 처리부(570)에서 사용할 코어의 종류를 결정할 수 있다. 예를 들어, 전자 장치는 GRO 처리를 위해 보다 고성능 코어(예:빅 코어)를 할당하고, 제2 데이터 패킷 처리(네트워크 스택 처리)를 위해 저성능 코어(예:리틀 코어)를 할당할 수 있다. 예를 들어, 제1 데이터 패킷 처리부(510)의 패킷 병합부(540)에서 동일한 정보(예: 패킷 헤더)를 가지는 데이터 패킷들이 병합되어, 데이터 패킷은 패킷 개수가 감소되어 제2 데이터 패킷 처리부(570)에 전달될 수 있다. 이로인해 제2 데이터 패킷 처리부(570)의 코어(네트워크 스택 코어)의 부하(load)도 감소될 수 있다. 따라서 제2 데이터 패킷 처리부(570)의 코어(네트워크 스택 코어)는 저성능 코어(예:리틀 코어)를 할당할 수 있다. 들어, 전자 장치의 제1 데이터 패킷 처리부(510)는 각 포트로 입력되는 데이터 패킷 들의 양을 모니터링하여, 패킷 병합부(540)에 배정되는 코어의 종류를 다르게(big. Little) 재 설정할 수 있다. 이 가능하다.
도 6a 내지 도 6d는 다양한 실시예들에 따른 전자 장치에서 데이터 패킷을 처리하는 예를 도시하는 도면이다. 다양한 실시예에 따르면, 전자 장치(예를 들면 도 1의 전자장치(101))의 프로세서(예; 도 1의 프로세서(120))는 복수의 코어 프로세서(예:도 5의 코어 1 내지 코어 6)를 포함할 수 있다. 코어 프로세서들은 하드웨어 인터럽트 및/또는 소프트웨어 인터럽트에 따른 인터럽트 핸들러 문맥(예:도면의 1st NETRX 문맥 내지 2nd NETRX문맥)을 실행할 수 있다.
다양한 실시예들에 따르면, 데이터 패킷을 처리하는 전자 장치(예: 도 1의 전자 장치(101))는 제1 데이터 패킷 처리부(예: 도 5의 제1 데이터 패킷 처리부(510)) 및 제2 데이터 패킷 처리부(예: 도 5의 제2 데이터 패킷 처리부(570))를 포함할 수 있다. 제1 데이터 패킷 처리부는 제1 RPS 기능을 수행하는 제1 코어 및 GRO 및 제2 RPS 기능을 수행하는 적어도 하나의 코어(예: 제2 코어 내지 제N 코어들의 일부 또는 전부)를 포함할 수 있다. 제1 RPS 기능은 수신 큐에 저장된 패킷을 분류하여 GRO 기능을 수행하는 적어도 하나의 코어에 분배하는 기능을 의미할 수 있다. 제2 RPS 기능은 GRO 기법에 처리된(병합된) 데이터 패킷들을 분류하여 네트워크 스택을 위한 적어도 하나의 코어에 분배하는 기능을 의미할 수 있다. 제2 데이터 패킷 처리부는 제1 데이터 패킷 처리부에서 지정되는 적어도 하나의 네트워크 스택 코어를 포함하며, 네트워크 스택 코어는 제1 데이터 패킷 처리부에서 전달되는 데이터 패킷을 처리하여 상위 레이어(소켓, 어플리케이션)에 전달할 수 있다.
도 6a를 참조하면, 다양한 실시예들에 따른 제1 코어(600)는 코어 3이 될 수 있다. 수신되는 데이터 패킷을 저장하는 수신 큐(631) 및 제1 패킷 분배부(633)을 포함할 수 있다.
다양한 실시예들에 따르면, NIC(610)는 프로세서의 모뎀 인터페이스일 수 있다. 전자 장치의 프로세서(예: AP)는 모뎀(예:CP)와 지정된 인터페이스(예:PCIe 인터페이스 및/또는 shared memory 인터페이스 등)로 전기적으로 연결될 수 있으며, NIC 인터페이스를 통해 모뎀으로 데이터를 전송 또는 수신한다. NIC(610)는 모뎀(예: 도 2a의 모뎀(211))에서 전달되는 데이터 패킷을 호스트 메모리(제1 데이터 패킷 처리부(예: 네트워크 드라이버)가 미리 할당해 놓은 호스트 메모리 버퍼)로 전송하고, 운영체제(드라이버)에 인터럽트(HW IRQ)를 알릴 수 있다.
다양한 실시예들에 따르면, 제1 코어(600)는 수신되는 데이터 패킷을 저장하는 수신 큐(631) 및 제1 패킷 분배부(633)을 포함할 수 있다. 제1 코어(600)는 코어 3이 될 수 있다. 프로세서에 HWIRQ가 수신되면, 프로세서는 제1 코어에서 동작하는 인터럽트 핸들러를 실행할 수 있다.. 수신 큐(631)는 수신된 데이터 패킷을 저장할 수 있다. 제1 패킷 분배부(633)는 GRO를 수행하는 코어(예: 제2 코어 내지 제N 코어)로 데이터 패킷을 전달하기 전에 데이터 패킷을 전달할 코어를 결정할 수 있다. 제1 패킷 분배부(633)는 GRO 처리가 현재 병목으로 판단되는 경우(예: GRO 처리 시간이 긴 경우 혹은 해당 CPU 코어에서 다른 임의의 코어 처리 작업을 수행 중일 경우), 런타임에서 GRO처리를 위한 적어도 하나의 코어를 결정하여 데이터 패킷을 분산 처리할 수 있다. 제1 패킷 분배부(633)는 제2 데이터 패킷 처리부에서 사용되는 소켓의 수에 기반하여 GRO를 위한 코어들의 수(코어 수)를 결정 또는 변경할 수 있다. 제1 패킷 분배부(633)는 코어들의 종류(bic core, little core)를 결정할 수 있다.
다양한 실시예들에 따르면, 제2 코어(650)는 패킷 병합부(653) 및 제2 패킷 분배부(655)를 포함할 수 있다. 도 6a는 하나의 CPU 코어가 GRO를 수행하는 예(제2 코어(650))를 도시하고 있으며, 제2 코어(650)는 코어 1이 지정된 예를 표시하고 있다. 패킷 병합부(653)는 수신 큐(631)에 저장된 데이터 패킷을 분석하여 동일한 정보를 가지는 데이터 패킷들을 하나의 데이터 패킷으로 병합할 수 있다. 제2 패킷 분배부(655)는 병합된 데이터 패킷들을 제2 데이터 패킷 처리부의 각 네트워크 스택 코어(680, 690)의 백로그 큐(683, 693)에 분산하여 전달할 수 있다.
다양한 실시예들에 따르면, 제2 데이터 패킷 처리부는 적어도 하나의 네트워크 스택 코어를 포함할 수 있다. 도 6a는 두개의 네트워크 스택 코어(680, 690)이 지정된 예를 도시하고 있다. 네트워크 스택 코어(680)는 백로그 큐(683), TCP/IP 처리부(685)를 포함할 수 있다. 네트워크 스택 코어(680)는 어플리케이션 처리부(687)을 더 포함할 수 있다. 네트워크 스택 코어(690)는 백로그 큐(693), TCP/IP 처리부(695)를 포함할 수 있다. 네트워크 스택 코어(690)는 어플리케이션 처리부(697)을 더 포함할 수 있다. 백로그 큐(683, 693)는 각각 대응되는 네트워크 코어(680, 690)의 수신 네트워크 큐일 수 있다. TPC/IP(685, 695)는 대응되는 백로그 큐(683, 695)에 저장된 데이터 패킷들을 정보(ip/port 정보)에 기반하여 네트워크 tcp/ip 처리하여 소켓 버퍼에 전달할 수 있다. 어플리케이션 처리부(687, 697)는 소켓에서 데이터 리드할 수 있다.
다양한 실시예들에 따르면, 제1 코어(600)는 모뎀(예: 도 2a의 모뎀(211))에서 전달되는 제1 크기를 가진 제1 데이터 패킷들을 수신하여 수신 큐(631)에 저장할 수 있다. 제1 코어(600)는 수신 큐(631)에 저장된 제1 데이터 패킷들 중 적어도 일부를 제2 코어(600)에 전달할 수 있다. 예를 들면, 제1 코어(600)의 제1 패킷 분배부(633)는 GRO의 처리 상태를 분석하여 병목 상태이면제2 코어(650)을 지정하여 수신된 데이터 패킷의 전부 또는 일부를 제2 코어에 전달할 수 있다. 예를 들면, 제1 코어(600)의 제1 패킷 분배부(633)는 수신 큐(631)에서 인입되는 시간 당 패킷의 양이 많다고 판단되는 경우, 2 코어(650)을 지정하여 수신된 데이터 패킷의 전부 또는 일부를 제2 코어에 전달할 수 있다.,
다양한 실시예들에 따르면, 제2 코어(650)는 제1 코어(600)로부터 제1 데이터 패킷들 중 적어도 일부를 수신하고, 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 수신된 제1 데이터 패킷들 중 적어도 일부를 제1 크기보다 큰 크기를 가진 복수의 제2 데이터 패킷들로 병합할 수 있다. 제2 코어(650)는 제2 데이터 패킷들을, 제1 코어 및 상기 제2코어가 아닌 프로세서의 다른 적어도 하나의 코어(예: 네트워크 스택 코어)(680, 690)에 전송할 수 있다. 예를 들면, 제2 코어(650)는 패킷 병합부(655) 및 제2 패킷 분배부(657)를 포함할 수 있으며, 패킷 병합부(655)는 수신된 제1 데이터 패킷의 종류를 확인(예; 패킷 헤더 정보에 의해 확인)하여 동일한 종류의 데이터 패킷들을 병합하여 제2 데이터 패킷을 생성할 수 있다. 제2 패킷 분배부(655)는 패킷 병합부(653)에서 병합된 제2 데이터 패킷을 네트워크 스택 코어(680, 690)의 대응되는 백로그 큐(683, 693)에 저장할 수 있다.
도 6b를 참조하면, 다양한 실시예들에 따른 제1 데이터 패킷 처리부는 제1 코어(600), 제2 코어(650), 제3 코어(660)를 포함할 수 있다. 제1 코어(600)는 코어 3이 될 수 있다. 제1 코어(600)는 수신 큐(631) 및 제1 패킷 분배부(633)을 포함할 수 있다. 제2 코어(650) 및 제3 코어(660)는 각각 패킷 병합부(653, 663) 및 (제2 패킷 분배부(655, 665)를 포함할 수 있다. 제2 코어(650)는 코어 1이 될 수 있으며, 제3 코어(660)는 코어 2가 될 수 있다. 제2 데이터 패킷 처리부는 네트워크 스택 코어(680, 690)를 포함할 수 있다. 네트워크 스택 코어(680, 690)는 각각 백로그 큐(683, 693), TCP/IP(685,695)를 포함할 수 있다. 네트워크 스택 코어(680)는 코어 5가 될 수 있으며, 네트워크 스택 코어(690)는 코어 6이 될 수 있다.
다양한 실시예들에 따르면, 제1 코어(600)는 제1 크기를 가지는 수신된 데이터 패킷들 중 일부를 제2 코어(650)에 전송하고, 제1 데이터 패킷들 중 다른 일부를 제3 코어(660)에 전송할 수 있다. 제2 코어(650)는 제1 코어(600)로부터 제1 데이터 패킷들 중 적어도 일부를 수신하고, 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 수신된 제1 데이터 패킷들 중 적어도 일부를 제1 크기보다 큰 크기를 가진 복수의 제2 데이터 패킷들로 병합할 수 있다. 제2 코어(650)는 제2 데이터 패킷들을, 제1 코어(600) 내지 제3 코어(660)가 아닌 프로세서의 다른 적어도 하나의 코어(예: 네트워크 스택 코어)(680, 690)에 전송할 수 있다. 제3 코어(660)는 제1 코어(600)로부터 제1 데이터 패킷들 중 다른 일부를 수신하고, 데이터 패킷의 종류에 적어도 일부 기반하여, 제1 데이터 패킷들 중 다른 일부를, 제1 크기보다 큰 크기를 가진, 복수의 제3 데이터 패킷들로 병합할 수 있다. 제3 코어(660)는 제3 데이터 패킷들을, 제1 코어(600) 내지 제3 코어(660)가 아닌 프로세서의 다른 적어도 하나의 코어(예: 네트워크 스택 코어)(680, 690)에 전송할 수 있다.
도 6c를 참조하면, 다양한 실시예들에 따른 제1 데이터 패킷 처리부는 제1 코어(600), 제2 코어(650), 제3 코어(660)를 포함할 수 있다. 제1 코어(600)는 코어 3이 될 수 있다. 제1 코어(600)는 수신 큐(631), 제1 패킷 분배부(633) 패킷 병합부(635) 및 제2 패킷 분배부(637)를 포함할 수 있다. 제2 코어(650) 및 제3 코어(660)는 각각 패킷 병합부(653, 663) 및 (제2 패킷 분배부(655, 665)를 포함할 수 있다. 제2 코어(650)는 코어 1이 될 수 있으며, 제3 코어(660)는 코어 2가 될 수 있다. 제2 데이터 패킷 처리부는 네트워크 스택 코어(680, 690)를 포함할 수 있다. 네트워크 스택 코어(680, 690)는 각각 백로그 큐(683, 693), TCP/IP(685,695)를 포함할 수 있다. 네트워크 스택 코어(680)는 코어 5가 될 수 있으며, 네트워크 스택 코어(690)는 코어 6이 될 수 있다.
다양한 실시예들에 따르면, 제1 코어(600)는 제1 크기를 가지는 수신된 데이터 패킷들 중 일부를 제2 코어(650)에 전송하고, 제1 데이터 패킷들 중 다른 일부를 제3 코어(660)에 전송할 수 있다. 제1 코어(600)는 GRO기능 및 제2 RPS 기능을 더 수행할 수 있다. 제1 코어(600)는 제1 데이터 패킷들 중 다른 일부를, 데이터 패킷 종류에 적어도 일부 기반하여, 제1 크기보다 큰 크기를 가진 복수의 제4 데이터 패킷들로 병합할 수 있다. 제1 코어(600)는 제4 데이터 패킷들을, 제1 코어(600) 내지 제3 코어(660)과 다른 적어도 하나의 코어(네트워크 스택 코어(680, 690)에 전송할 수 있다. 제2 코어(650) 및 제3 코어(660)의 동작은 도 6b의 동작과 동일하게 수행될 수 있다.
다양한 실시예들에 따르면, 네트워크 스택 코어(680, 690)의 백로그 큐(683, 693)는 각각 제1 코어(600)에서 전송되는 제4 데이터 패킷, 제2 코어(650)에서 전송되는 제2 데이터 패킷, 제3 코어(660)에서 전송되는 제3 데이터 패킷들을 저장할 수 있다. 네트워크 코어(680, 690)은 각각 수신된 제2 데이터 패킷, 제3 데이터 패킷, 제4 데이터 패킷들을 처리하여 소켓에 전달할 수 있다.
다양한 실시예들에 따르면, 도 6a 내지 도 6c에서, 제1 코어(600), 제2 코어(650), 또는 제3 코어(660) 중 적어도 하나의 코어가 LRO(large receive offload) 프로세스를 수행할 수 있으며, LRO프로세스를 적어도 일부 이용하여, 제1 데이터 패킷들을 병합 데이터 패킷들(예: 제2 데이터 패킷들, 제3 데이터 패킷들 또는 제4 데이터 패킷들) 중 적어도 하나로 병합할 수 있다. LRO는 수신된 패킷(제1 데이터 패킷)을 시스템의 네트워크 스택으로 전달하기 위해 더 큰 패킷 (더 적은 수의 패킷)으로 재 조합하는 기능이 될 수 있다.
도 6d를 참조하면, GRO 처리 시간이 짧아 데이터 패킷의 분산 처리가 필요하지 않은 경우, 다양한 실시예들에 따른 제1 데이터 패킷 처리부(600)는 GRO 기능을 해제할 수 있다. GRO 기능이 해제된 경우, 제1 코어(600)는 제1 코어(600)는 수신 큐(631), 제1 패킷 분배부(633) 및 제2 패킷 분배부(637)를 포함할 수 있다. 제1 코어(600)는 제1 크기를 가지는 제1 데이터 패킷들을 제1 코어(600) 가 아닌 프로세서의 다른 적어도 하나의 코어(예: 네트워크 스택 코어)(680, 690)에 전송할 수 있다.
다양한 실시예들에 따르면, 전자 장치의 제1 코어(도 6a 내지 도 6d의 제1 코어(600))는 제1 RPS 기능을 수행할 수 있다. 제1 코어는 데이터 패킷의 용량 및 코어 밸런싱에 기반하여 적어도 하나의 코어를 결정할 수 있다. 예를 들면, 제1 코어는 도 6a 내지 도 6c와 같이 제2 코어 내지 제N 코어를 결정하여 GRO 및 제2 RPS 기능을 수행할 수 있으며, 도 6c와 같이 제1 코어도 GRO 및 제2 RPS 기능을 수행하는 코어로 결정할 수 있다.
다양한 실시예들에 따르면, 전자 장치는, 무선 통신 모뎀과, 통신 모뎀과 연결되고, 복수의 코어들(cores)을 포함하는 적어도 하나의 프로세서와, 프로세서와 작동적으로 연결된 비휘발성 메모리를 포함할 수 있다. 비휘발성 메모리는, 실행시에, 프로세서의 제 1 코어가, 무선 통신 모뎀으로부터, 제 1 크기를 가진 제 1 데이터 패킷들을 수신하고, 제 1 데이터 패킷들 중 적어도 일부를 프로세서의 제 2 코어로 전송하도록 하고, 제 2 코어가, 제 1 코어로부터 제 1 데이터 패킷들 중 적어도 일부를 수신하고, 제 1 데이터 패킷들 중 적어도 일부를, 제 1 데이터 패킷들의 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진 복수의 제 2 데이터 패킷들로 병합하고, 제 2 데이터 패킷들을, 제 1 코어 및 제 2코어가 아닌 프로세서의 다른 적어도 하나의 코어로 전송하도록 하는 인스트럭션들(instructions)을 저장할 수 있다.
다양한 실시예들에 따르면, 인스트럭션들은, 제 1 코어가, 제 1 데이터 패킷들 중 다른 일부를 프로세서의 제 3 코어로 전송하도록 하고, 제 3 코어가, 제 1 코어로부터 제 1 데이터 패킷들 중 다른 일부를 수신하고, 제 1 데이터 패킷들 중 다른 일부를, 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진, 복수의 제 3 데이터 패킷들로 병합하고, 제 3 데이터 패킷들을, 다른 적어도 하나의 코어로 전송하도록 할 수 있다.
다양한 실시예들에 따르면, 인스트럭션들은, 제 1 코어가, 제 1 데이터 패킷들 중 다른 일부를, 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진 복수의 제 4 데이터 패킷들로 병합하고, 제 4 데이터 패킷들을, 다른 적어도 하나의 코어로 전송하도록 할 수 있다.
다양한 실시예들에 따르면, 인스트럭션들은, 제 1 코어, 제 2 코어, 또는 제 3 코어 중 적어도 하나의 코어가 LRO(large receive offload) 프로세스를 수행하도록 하고, LRO프로세스를 적어도 일부 이용하여, 제 1 데이터 패킷들을, 제 2 데이터 패킷들, 제 3 데이터 패킷들 또는 제 4 데이터 패킷들 중 적어도 하나로 병합하도록 할 수 있다.
다양한 실시예들에 따르면, 전자 장치는, 커널 시스템(예: 리눅스 또는 유닉스커널 시스템)을 오퍼레이팅 시스템으로서 포함하고, 인스트럭션들은, 프로세서가, 커널 시스템에 의하여 제공되며, LRO프로세스의 적어도 일부와 실질적으로(substantially) 동일한 프로세스를 포함하는 GRO(generic receive offload) 프로세스를 수행하도록 할 수 있다.
다양한 실시예들에 따르면, 전자 장치는, 무선 통신 모뎀과, 통신 모뎀과 작동적으로 연결되고, 복수의 코어들(cores)을 포함하는 적어도 하나의 프로세서를 포함할 수 있다. 프로세서는, 수신되는 데이터 패킷들을 처리하여 백로그 큐에 저장하는 제1 데이터 패킷 처리부 및 백로그 큐에 저장된 데이터 패킷을 처리하여 상위 레이어에 전달하는 제2 데이터 패킷 처리부를 포함할 수 있다. 제1 데이터 패킷 처리부는, 무선 통신 모뎀으로부터, 제 1 크기를 가진 제 1 데이터 패킷들을 수신하고, 제 1 데이터 패킷들 중 적어도 일부를 프로세서의 제 2 코어로 전송하는 제1 코어 및 제 1 코어로부터 제 1 데이터 패킷들 중 적어도 일부를 수신하고, 제 1 데이터 패킷들 중 적어도 일부를, 제 1 데이터 패킷들의 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진 복수의 제 2 데이터 패킷들로 병합하고, 제 2 데이터 패킷들을, 적어도 하나의 네트워크 스택 코어로 전송하는 제2 코어를 포함할 수 있다.
다양한 실시예들에 따르면, 제 1 데이터 패킷 처리부가 제3 코어를 더 구비하며, 제 1 코어가, 제 1 데이터 패킷들 중 다른 일부를 프로세서의 제 3 코어로 전송하고, 제 3 코어가, 제 1 코어로부터 제 1 데이터 패킷들 중 다른 일부를 수신하고, 제 1 데이터 패킷들 중 다른 일부를, 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진, 복수의 제 3 데이터 패킷들로 병합하고, 제 3 데이터 패킷들을, 다른 적어도 하나의 네트워크 스택 코어로 전송할 수 있다.
다양한 실시예들에 따르면, 제 1 코어가, 제 1 데이터 패킷들 중 다른 일부를, 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진 복수의 제 4 데이터 패킷들로 병합하고, 제 4 데이터 패킷들을, 다른 적어도 하나의 네트워크 스택 코어로 전송할 수 있다.
다양한 실시예들에 따르면, 제 1 코어, 제 2 코어, 또는 제 3 코어 중 적어도 하나의 코어가 LRO(large receive offload) 프로세스를 수행하고, LRO프로세스를 적어도 일부 이용하여, 제 1 데이터 패킷들을, 제 2 데이터 패킷들, 제 3 데이터 패킷들 또는 제 4 데이터 패킷들 중 적어도 하나로 병합할 수 있다.
다양한 실시예들에 따르면, 전자 장치는, 커널 시스템(kernel system)을 오퍼레이팅 시스템으로서 포함하고, 제 1 코어가, 커널 시스템에 의하여 제공되며, LRO프로세스의 적어도 일부와 실질적으로(substantially) 동일한 프로세스를 포함하는 GRO(generic receive offload) 프로세스를 수행할 수 있다.
다양한 실시예들에 따르면, 제1 코어는 제1 크기의 제1 데이터 패킷을 수신하는 수신 큐 및 데이터 패킷의 처리 시간에 기반하여 GRO(generic receive offload) 처리를 위한 적어도 하나의 제2 코어를 결정하는 제1 패킷 분배(receive packet steering)부를 포함할 수 있다.
다양한 실시예들에 따르면, 제2 코어는, 제1 코어에서 전달되는 제1 데이터 패킷의 정보에 기반하여 동일 정보를 가지는 제1 데이터 패킷들을 제2 데이터 패킷으로 병합하는 GRO부 및 병합된 제2 데이터 패킷들을 네트워크 스택 코어의 백로그에 Ÿp패킷을 적어도 하나의 네트워크 스택 코어의 백로그 큐에 저장하는 제2 패킷 분배부를 포함할 수 있다.
다양한 실시예들에 따르면, 제1 패킷 분배부는, 데이터 패킷 처리 시간이 긴 경우, 제1 데이터 패킷을 병합하기 위한 제3 코어를 더 지정하고, 제3 코어는, 제 1 코어로부터 제 1 데이터 패킷들 중 다른 일부를 수신하고, 제 1 데이터 패킷들 중 다른 일부를, 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진, 복수의 제 3 데이터 패킷들로 병합하는 GRO부 및 제 3 데이터 패킷들을, 다른 적어도 하나의 네트워크 스택 코어의 백로그 큐에 분산하여 전송하는 제2 패킷 분배부를 포함할 수 있다.
다양한 실시예들에 따르면, 제 1 코어가, 제 1 데이터 패킷들 중 다른 일부를, 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진 복수의 제 4 데이터 패킷들로 병합하는 GRO부 및 제 4 데이터 패킷들을, 다른 적어도 하나의 네트워크 스택 코어로 전송하는 제2 패킷 분배부를 더 포함할 수 있다.
다양한 실시예들에 따르면, 제 1 코어, 제 2 코어, 또는 제 3 코어 중 적어도 하나의 코어가, LRO(large receive offload) 프로세스를 수행하고, LRO프로세스를 적어도 일부 이용하여, 제 1 데이터 패킷들을, 제 2 데이터 패킷들, 제 3 데이터 패킷들 또는 제 4 데이터 패킷들 중 적어도 하나로 병합할 수 있다.
도 7은 다양한 실시예들에 따른 전자 장치의 데이터 패킷 처리 동작을 도시하는 흐름도이다.
도 7을 참조하면, 다양한 실시예들에 따른 전자 장치(예: 도 1의 전자 장치(101)는 동작 711에서 모뎀(예: 도 2a의 모뎀(211))으로부터 데이터 패킷을 수신하고 인터럽트가 수신되는 경우 인터럽트 핸들러를 실행할 수 있다. 전자 장치는 동작 713에서 인터럽트에 의해 수신된 패킷을 데이터의 종류(예: IPC, RMNET, RFS)에 기반하여 구분된 저장 공간에 저장할 수 있다. 전자 장치는 동작 715에서 제1 RPS 기능을 수행하여 데이터 패킷을 병합 처리할 코어(예; 도 6a의 제2 코어(650))를 결정할 수 있다. 제1 RPS 기능은 제1 코어(예: 도 6a의 제1 코어(600))에서 수행될 수 있다. 전자 장치는 동작 717에서 GRO 기능을 수행하여 제1 크기를 가지는 동일한 정보의 제1 데이터 패킷들을 병합할 수 있다. 병합된 데이터 패킷은 제1 크기를 가지는 제1 데이터 패킷보다 더 큰 크기를 가질 수 있다. 전자 장치는 동작 719에서 제2 RPS 기능을 수행하여 병합된 데이터 패킷들을 분산하여 전송할 수 있다. 예를 들면, 전자 장치는 네트워크 스택 코어들의 백로그 큐에 병합된 데이터 패킷들을 분산하여 저장할 수 있다. 전자 장치는 백로그 큐에 저장된 병합된 데이터 패킷들을 처리하여 소켓에 전달할 수 있다. 예를 들면, 전자 장치는 백로그 큐에 저장된 병합된 데이터 패킷의 정보(ip/port 정보)를 확인 및 처리(네트워크 tcp/ip 처리)하여 소켓 버퍼로 전달할 수 있다.
다양한 실시예들에 따르면, 전자 장치의 제1 코어는 모뎀으로부터 제1 크기를 가진 제1 데이터 패킷들을 수신할 수 있다. 제1 코어는 수신된 제1 데이터 패킷들 중 적어도 일부를 제2 코어로 전송할 수 있다. 전자 장치의 제2 코어는 제1 코어로부터 제1 데이터 패킷들 중 상기 적어도 일부를 수신할 수 있다. 제2 코어는 수신된 제1 데이터 패킷들 중 적어도 일부를 제1 데이터 패킷들의 종류에 적어도 일부 기반하여 제1 크기보다 큰 크기를 가진 복수의 제2 데이터 패킷들로 병합할 수 있다. 제2 코어는 병합된 제2 데이터 패킷들을 적어도 네트워크 스택 코어의 백로드 큐에 저장할 수 있다.
도 8은 다양한 실시예들에 따른 전자 장치가 수신된 데이터 패킷의 처리 상태에 기반하여 데이터 패킷을 처리하는 동작을 도시하는 흐름도이다.
도 8을 참조하면, 다양한 실시예들에 따른 전자 장치(예: 도 1의 전자 장치(101))는 동작 811에서 HW IRQ가 발생되면, 동작 813에서 데이터 패킷을 수신할 수 있다. 전자 장치는 동작 815에서 데이터 패킷의 처리 상태를 분석할 수 있다. 예를 들면, 전자 장치는 데이터 패킷의 용량(대용량) 및 코어 밸런싱에 기반하여 데이터 패킷의 처리 상태를 확인할 수 있다. 전자 장치는 데이터 패킷이 대용량(예: 일정 시간에 인입되는 패킷량이 임계값 이상)이거나 또는 코어 밸런싱이 필요하다고 판단되는 경우, 동작 817로 진행하여 제1 RPS 기능을 수행할 수 있다. 전자 장치는 동작 819에서 데이터 패킷의 처리 상태에 기반하여 GRO 기능을 수행할 코어의 수(max core) 및 코어의 종류(big core, little core)를 저장할 수 있다. 전자 장치는 동작 821에서 데이터 패킷을 병합 처리할 코어를 결정할 수 있다. 전자 장치는 동작 823에서 GRO 기능을 수행하여 제1 크기를 가지는 동일한 정보의 제1 데이터 패킷들을 병합할 수 있다. 병합된 데이터 패킷은 제1 데이터 패킷보다 더 큰 크기를 가질 수 있다. 전자 장치는 동작 825에서 제2 RPS 기능을 수행하여 병합된 데이터 패킷들을 분산하여 전송할 수 있다. 예를 들면, 전자 장치는 네트워크 스택 코어들의 백로그 큐에 병합된 데이터 패킷들을 분산하여 저장할 수 있다. 전자 장치는 동작 825에서 데이터 패킷이 대용량이 아니거나 코어 밸런싱이 필요하지 않은 경우, 동작 823 단계로 진행하여 제2 RPS 기능을 수행할 수 있다.
다양한 실시예들에 따르면, 전자 장치의 데이터 패킷 처리 방법은, 수신되는 데이터 패킷들을 분산 처리하여 백로그 큐에 저장하는 제1 데이터 패킷 처리 동작 및 백로그 큐에 저장된 데이터 패킷을 처리하여 상위 레이어에 전달하는 제2 데이터 패킷 처리 동작을 포함할 수 있다. 제1 데이터 패킷 처리 동작은, 제1 코어에서, 무선 통신 모뎀으로부터, 제 1 크기를 가진 제 1 데이터 패킷들을 수신하고, 제 1 데이터 패킷들 중 적어도 일부를 프로세서의 제 2 코어로 전송하는 동작 및 제 2 코어에서, 제 1 코어로부터 제 1 데이터 패킷들 중 적어도 일부를 수신하고, 제 1 데이터 패킷들 중 적어도 일부를, 제 1 데이터 패킷들의 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진 복수의 제 2 데이터 패킷들로 병합하고, 제 2 데이터 패킷들을, 적어도 하나의 네트워크 스택 코어의 백로그 큐에 저장하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 제1 데이터 패킷 처리 동작은, 제 1 코어에서, 제 1 데이터 패킷들 중 다른 일부를 프로세서의 제 3 코어로 전송하는 동작 및 제 3 코어에서, 제 1 코어로부터 제 1 데이터 패킷들 중 다른 일부를 수신하고, 제 1 데이터 패킷들 중 다른 일부를, 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진, 복수의 제 3 데이터 패킷들로 병합하고, 제 3 데이터 패킷들을 다른 적어도 하나의 네트워크 스택 코어의 백로드 큐에 저장하는 동작을 더 포함할 수 있다.
다양한 실시예들에 따르면 제1 데이터 패킷 처리 동작은, 제 1 코어에서, 제 1 데이터 패킷들 중 다른 일부를, 종류에 적어도 일부 기반하여, 제 1 크기보다 큰 크기를 가진 복수의 제 4 데이터 패킷들로 병합하고, 제 4 데이터 패킷들을, 다른 적어도 하나의 네트워크 스택 코어의 백로그 큐에 저장하는 동작을 더 포함할 수 있다.
다양한 실시예들에 따르면, 제1 데이터 패킷 처리 동작은, 제 1 코어, 제 2 코어, 또는 제 3 코어 중 적어도 하나의 코어가 LRO(large receive offload) 프로세스를 수행하도록 하는 동작 및 LRO프로세스를 적어도 일부 이용하여, 제 1 데이터 패킷들을, 제 2 데이터 패킷들, 제 3 데이터 패킷들 또는 제 4 데이터 패킷들 중 적어도 하나로 병합하는 동작을 더 포함할 수 있다.
다양한 실시예들에 따르면, 제1 데이터 패킷 처리 동작은, 제1 코어, 제2 코어, 또는 제3 코어 중 적어도 하나의 코어는, 시스템에 의하여 제공되며, LRO프로세스의 적어도 일부와 실질적으로(substantially) 동일한 프로세스를 포함하는 GRO(generic receive offload) 프로세스를 수행할 수 있다.

Claims (19)

  1. 전자 장치에 있어서,
    무선 통신 모뎀;
    상기 통신 모뎀과 연결되고, 복수의 코어들(cores)을 포함하는 적어도 하나의 프로세서;
    상기 프로세서와 작동적으로 연결된 비휘발성 메모리;를 포함하고,
    상기 비휘발성 메모리는, 실행시에,
    상기 프로세서의 제1 코어가,
    상기 무선 통신 모뎀으로부터, 제1 크기를 가진 제1 데이터 패킷들을 수신하고,
    상기 제1 데이터 패킷들의 헤더 정보에 포함된 제1 정보를 기반으로 상기 제1 데이터 패킷들 중 제1 부분을 상기 프로세서의 제2 코어로 전송하고,
    상기 제1 데이터 패킷들의 헤더 정보에 포함된 제2 정보를 기반으로 상기 제1 데이터 패킷들 중 제2 부분을 상기 프로세서의 제3 코어로 전송하고,
    상기 제1 데이터 패킷들 중 상기 제1 부분 및 상기 제2 부분을 제외한 나머지 부분을, 상기 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진 복수의 제4 데이터 패킷들로 병합하고, 상기 제4 데이터 패킷들을 상기 프로세서의 다른 적어도 하나의 코어로 전송하도록 하고,
    상기 제2 코어가,
    상기 제1 코어로부터 상기 제1 데이터 패킷들 중 상기 제1 부분을 수신하고,
    상기 제1 데이터 패킷들 중 상기 제1 부분을, 상기 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진 복수의 제2 데이터 패킷들로 병합하고,
    상기 제2 데이터 패킷들을, 상기 제1 코어, 상기 제2 코어 및 상기 제3 코어가 아닌 상기 다른 적어도 하나의 코어로 전송하고,
    상기 제3 코어가,
    상기 제1 코어로부터 상기 제1 데이터 패킷들 중 상기 제2 부분을 수신하고,
    상기 제1 데이터 패킷들 중 상기 제2 부분을, 상기 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진 복수의 제3 데이터 패킷들로 병합하고, 상기 복수의 제3 데이터 패킷들을 상기 다른 적어도 하나의 코어로 전송하도록 하는 인스트럭션들(instructions)을 저장하는 전자 장치.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서, 상기 인스트럭션들은,
    상기 제1 코어, 상기 제2 코어, 또는 상기 제3 코어 중 적어도 하나의 코어가 LRO(large receive offload) 프로세스를 수행하도록 하고,
    상기 LRO프로세스를 적어도 일부 이용하여, 상기 제1 데이터 패킷들을, 상기 제2 데이터 패킷들, 상기 제3 데이터 패킷들 또는 상기 제4 데이터 패킷들 중 적어도 하나로 병합하도록 하는 전자 장치.
  5. 전자 장치의 데이터 패킷 처리 방법에 있어서,
    수신되는 데이터 패킷들을 분산 처리하여 백로그 큐에 저장하는 제1 데이터 패킷 처리 동작; 및
    상기 백로그 큐에 저장된 데이터 패킷을 처리하여 상위 레이어에 전달하는 제2 데이터 패킷 처리 동작을 포함하며,
    상기 제1 데이터 패킷 처리 동작은,
    프로세서의 제1 코어에서, 무선 통신 모뎀으로부터, 제1 크기를 가진 제1 데이터 패킷들을 수신하는 동작;
    상기 제1 코어에서, 상기 제1 데이터 패킷들의 헤더 정보에 포함된 제1 정보를 기반으로 상기 제1 데이터 패킷들 중 제1 부분을 상기 프로세서의 제2 코어로 전송하고, 상기 제1 데이터 패킷들의 헤더 정보에 포함된 제2 정보를 기반으로 상기 제1 데이터 패킷들 중 제2 부분을 상기 프로세서의 제3 코어로 전송하는 동작;
    상기 제2 코어에서, 상기 제1 코어로부터 상기 제1 데이터 패킷들 중 상기 제1 부분을 수신하고, 상기 제1 데이터 패킷들 중 상기 제1 부분을, 상기 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진 복수의 제2 데이터 패킷들로 병합하고, 상기 제2 데이터 패킷들을, 적어도 하나의 네트워크 스택 코어의 백로그 큐에 저장하는 동작;
    상기 제3 코어에서, 상기 제1 코어로부터 상기 제1 데이터 패킷들 중 상기 제2 부분을 수신하고, 상기 제1 데이터 패킷들 중 상기 제2 부분을, 상기 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진 복수의 제3 데이터 패킷들로 병합하고, 상기 제3 데이터 패킷들을 상기 적어도 하나의 네트워크 스택 코어의 백로그 큐에 저장하는 동작; 및
    상기 제1 코어에서, 상기 제1 데이터 패킷들 중 상기 제1 부분 및 상기 제2 부분을 제외한 나머지 부분을, 상기 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진 복수의 제4 데이터 패킷들로 병합하고, 상기 제4 데이터 패킷들을 상기 적어도 하나의 네트워크 스택 코어의 백로그 큐에 저장하는 동작을 포함하는 방법.
  6. 삭제
  7. 삭제
  8. 제5항에 있어서,
    상기 제1 데이터 패킷 처리 동작은,
    상기 제1 코어, 상기 제2 코어, 또는 상기 제3 코어 중 적어도 하나의 코어가 LRO(large receive offload) 프로세스를 수행하도록 하는 동작; 및
    상기 LRO프로세스를 적어도 일부 이용하여, 상기 제1 데이터 패킷들을, 상기 제2 데이터 패킷들, 상기 제3 데이터 패킷들 또는 상기 제4 데이터 패킷들 중 적어도 하나로 병합하는 동작을 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 제1 데이터 패킷 처리 동작은
    상기 제1 코어, 상기 제2 코어, 또는 상기 제3 코어 중 적어도 하나의 코어는, 상기 LRO프로세스의 적어도 일부와 실질적으로(substantially) 동일한 프로세스를 포함하는 GRO(generic receive offload) 프로세스를 수행하는 방법.
  10. 전자 장치에 있어서,
    무선 통신 모뎀;
    상기 통신 모뎀과 작동적으로 연결되고, 복수의 코어들(cores)을 포함하는 적어도 하나의 프로세서;
    수신되는 데이터 패킷들을 처리하여 백로그 큐에 저장하는 제1 데이터 패킷 처리부; 및
    상기 백로그 큐에 저장된 데이터 패킷을 처리하여 상위 레이어에 전달하는 제2 데이터 패킷 처리부를 포함하며,
    상기 제1 데이터 패킷 처리부는,
    상기 무선 통신 모뎀으로부터, 제1 크기를 가진 제1 데이터 패킷들을 수신하고, 상기 제1 데이터 패킷들의 헤더 정보에 포함된 제1 정보를 기반으로 상기 제1 데이터 패킷들 중 제1 부분을 상기 프로세서의 제2 코어로 전송하고, 상기 제1 데이터 패킷들의 헤더 정보에 포함된 제2 정보를 기반으로 상기 제1 데이터 패킷들 중 제2 부분을 상기 프로세서의 제3 코어로 전송하고, 상기 제1 데이터 패킷들 중 상기 제1 부분 및 상기 제2 부분을 제외한 나머지 부분을, 상기 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진 복수의 제4 데이터 패킷들로 병합하고, 상기 제4 데이터 패킷들을 적어도 하나의 네트워크 스택 코어로 전송하는 상기 프로세서의 제1 코어;
    상기 제1 코어로부터 상기 제1 데이터 패킷들 중 상기 제1 부분을 수신하고, 상기 제1 데이터 패킷들 중 상기 제1 부분을, 상기 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진 복수의 제2 데이터 패킷들로 병합하고, 상기 제2 데이터 패킷들을 상기 적어도 하나의 네트워크 스택 코어로 전송하는 상기 제2 코어; 및
    상기 제1 코어로부터 상기 제1 데이터 패킷들 중 상기 제2 부분을 수신하고, 상기 제1 데이터 패킷들 중 상기 제2 부분을, 상기 제1 데이터 패킷들의 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진 복수의 제3 데이터 패킷들로 병합하고, 상기 제3 데이터 패킷들을 상기 적어도 하나의 네트워크 스택 코어로 전송하는 상기 제3 코어를 포함하는 전자 장치.
  11. 삭제
  12. 삭제
  13. 제10항에 있어서,
    상기 제1 코어, 상기 제2 코어, 또는 상기 제3 코어 중 적어도 하나가,
    LRO(large receive offload) 프로세스를 수행하고,
    상기 LRO프로세스를 적어도 일부 이용하여, 상기 제1 데이터 패킷들을, 상기 제2 데이터 패킷들, 상기 제3 데이터 패킷들 또는 상기 제4 데이터 패킷들 중 적어도 하나로 병합하는 전자 장치.
  14. 제13항에 있어서,
    상기 제 1 코어가,
    상기 LRO프로세스의 적어도 일부와 실질적으로(substantially) 동일한 프로세스를 포함하는 GRO(generic receive offload) 프로세스를 수행하는 전자 장치.
  15. 제10항에 있어서,
    상기 제1 코어는,
    제1 크기의 제1 데이터 패킷을 수신하는 수신 큐; 및
    데이터 패킷의 처리 시간에 기반하여 GRO(generic receive offload) 처리를 위한 적어도 하나의 상기 제2 코어를 결정하는 제1 패킷 분배(receive packet steering)부를 포함하는 전자 장치.
  16. 제15항에 있어서,
    상기 제2 코어는,
    상기 제1 코어에서 전달되는 상기 제1 데이터 패킷의 정보에 기반하여 동일 정보를 가지는 상기 제1 데이터 패킷들을 상기 제2 데이터 패킷으로 병합하는 GRO부; 및
    병합된 상기 제2 데이터 패킷들을 상기 네트워크 스택 코어의 백로그에 Ÿp패킷을 적어도 하나의 상기 네트워크 스택 코어의 백로그 큐에 저장하는 제2 패킷 분배부를 포함하는 전자 장치.
  17. 제16항에 있어서,
    상기 제1 패킷 분배부는,
    상기 데이터 패킷 처리 시간이 긴 경우, 상기 제1 데이터 패킷을 병합하기 위한 제3 코어를 더 지정하고,
    상기 제3 코어는,
    상기 제1 코어로부터 상기 제1 데이터 패킷들 중 상기 제2 부분을 수신하고, 상기 제1 데이터 패킷들 중 상기 제2 부분을, 상기 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진, 복수의 제3 데이터 패킷들로 병합하는 GRO부; 및
    상기 제3 데이터 패킷들을, 상기 적어도 하나의 네트워크 스택 코어의 백로그 큐에 분산하여 전송하는 제2 패킷 분배부를 포함하는 전자 장치.
  18. 제17항에 있어서,
    상기 제1 코어가,
    상기 제1 데이터 패킷들 중 상기 제1 부분 및 상기 제2 부분을 제외한 나머지 부분을, 상기 종류에 적어도 일부 기반하여, 상기 제1 크기보다 큰 크기를 가진 복수의 제4 데이터 패킷들로 병합하는 GRO부; 및
    상기 제4 데이터 패킷들을, 상기 적어도 하나의 네트워크 스택 코어로 전송하는 제2 패킷 분배부를 더 포함하는 전자 장치.
  19. 제18항에 있어서,
    상기 제1 코어, 상기 제2 코어, 또는 상기 제3 코어 중 적어도 하나의 코어가,
    LRO(large receive offload) 프로세스를 수행하고,
    상기 LRO프로세스를 적어도 일부 이용하여, 상기 제1 데이터 패킷들을, 상기 제2 데이터 패킷들, 상기 제3 데이터 패킷들 또는 상기 제4 데이터 패킷들 중 적어도 하나로 병합하는 전자 장치.
KR1020180081520A 2018-07-13 2018-07-13 전자 장치의 데이터 패킷 처리 장치 및 방법 KR102604290B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180081520A KR102604290B1 (ko) 2018-07-13 2018-07-13 전자 장치의 데이터 패킷 처리 장치 및 방법
CN201980041797.0A CN112352404B (zh) 2018-07-13 2019-07-03 用于处理电子设备的数据分组的装置和方法
PCT/KR2019/008109 WO2020013510A1 (en) 2018-07-13 2019-07-03 Apparatus and method for processing data packet of electronic device
EP19833609.1A EP3782339B1 (en) 2018-07-13 2019-07-03 Apparatus and method for processing data packet of electronic device
US16/511,538 US11102137B2 (en) 2018-07-13 2019-07-15 Apparatus and method for processing data packet of electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180081520A KR102604290B1 (ko) 2018-07-13 2018-07-13 전자 장치의 데이터 패킷 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200007420A KR20200007420A (ko) 2020-01-22
KR102604290B1 true KR102604290B1 (ko) 2023-11-20

Family

ID=69138575

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180081520A KR102604290B1 (ko) 2018-07-13 2018-07-13 전자 장치의 데이터 패킷 처리 장치 및 방법

Country Status (5)

Country Link
US (1) US11102137B2 (ko)
EP (1) EP3782339B1 (ko)
KR (1) KR102604290B1 (ko)
CN (1) CN112352404B (ko)
WO (1) WO2020013510A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102604290B1 (ko) * 2018-07-13 2023-11-20 삼성전자주식회사 전자 장치의 데이터 패킷 처리 장치 및 방법
KR20200112439A (ko) * 2019-03-22 2020-10-05 삼성전자주식회사 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법
KR20220126591A (ko) * 2021-03-09 2022-09-16 삼성전자주식회사 패킷을 프로세싱하는 전자 장치 및 그 동작 방법
US11888938B2 (en) * 2021-07-29 2024-01-30 Elasticflash, Inc. Systems and methods for optimizing distributed computing systems including server architectures and client drivers
CN113890789B (zh) * 2021-09-29 2023-03-21 华云数据控股集团有限公司 适用于数据中心的udp隧道流量的分流方法、流量转发方法
CN117561706A (zh) * 2021-11-22 2024-02-13 华为技术有限公司 一种处理数据包的方法和设备
WO2023093984A1 (en) * 2021-11-25 2023-06-01 Huawei Cloud Computing Technologies Co., Ltd. Method and computing device for processing task request
CN114866625A (zh) * 2022-04-19 2022-08-05 哲库科技(北京)有限公司 数据包处理方法及相关产品
CN115185878A (zh) * 2022-05-24 2022-10-14 中科驭数(北京)科技有限公司 一种多核分组网络处理器架构及任务调度方法
CN117834570A (zh) * 2024-03-04 2024-04-05 山东云海国创云计算装备产业创新中心有限公司 传输系统的数据包处理方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150301975A1 (en) * 2014-04-22 2015-10-22 Freescale Semiconductor, Inc. Multi-core processor for managing data packets in communication network

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003089A (en) * 1997-03-31 1999-12-14 Siemens Information And Communication Networks, Inc. Method for constructing adaptive packet lengths in a congested network
US6359877B1 (en) * 1998-07-21 2002-03-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for minimizing overhead in a communication system
US6631422B1 (en) * 1999-08-26 2003-10-07 International Business Machines Corporation Network adapter utilizing a hashing function for distributing packets to multiple processors for parallel processing
US20030235194A1 (en) * 2002-06-04 2003-12-25 Mike Morrison Network processor with multiple multi-threaded packet-type specific engines
KR100489685B1 (ko) 2003-02-20 2005-05-17 삼성전자주식회사 패킷 제어기와 네트워크 프로세서간의 패킷 전송을 위한패킷 송수신 장치와 그 방법
US7395538B1 (en) * 2003-03-07 2008-07-01 Juniper Networks, Inc. Scalable packet processing systems and methods
US7809009B2 (en) * 2006-02-21 2010-10-05 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US8340194B2 (en) * 2008-06-06 2012-12-25 Apple Inc. High-yield multi-threading method and apparatus for video encoders/transcoders/decoders with dynamic video reordering and multi-level video coding dependency management
EP2810413B1 (en) * 2012-02-03 2018-12-26 Telefonaktiebolaget LM Ericsson (publ) Apparatus suitable for use in an advanced digital baseband processor
US9571394B1 (en) * 2014-01-10 2017-02-14 Juniper Networks, Inc. Tunneled packet aggregation for virtual networks
US9880953B2 (en) 2015-01-05 2018-01-30 Tuxera Corporation Systems and methods for network I/O based interrupt steering
US10234930B2 (en) * 2015-02-13 2019-03-19 Intel Corporation Performing power management in a multicore processor
US20160306416A1 (en) * 2015-04-16 2016-10-20 Intel Corporation Apparatus and Method for Adjusting Processor Power Usage Based On Network Load
US10681607B2 (en) * 2018-06-22 2020-06-09 Intel Corporation Receive-side scaling for wireless communication devices
KR102604290B1 (ko) * 2018-07-13 2023-11-20 삼성전자주식회사 전자 장치의 데이터 패킷 처리 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150301975A1 (en) * 2014-04-22 2015-10-22 Freescale Semiconductor, Inc. Multi-core processor for managing data packets in communication network

Also Published As

Publication number Publication date
US11102137B2 (en) 2021-08-24
KR20200007420A (ko) 2020-01-22
US20200021533A1 (en) 2020-01-16
CN112352404A (zh) 2021-02-09
EP3782339A4 (en) 2021-03-10
CN112352404B (zh) 2023-07-25
WO2020013510A1 (en) 2020-01-16
EP3782339A1 (en) 2021-02-24
EP3782339B1 (en) 2022-11-23

Similar Documents

Publication Publication Date Title
KR102604290B1 (ko) 전자 장치의 데이터 패킷 처리 장치 및 방법
US11758023B2 (en) Multicore electronic device and packet processing method thereof
US11392474B2 (en) Electronic device for controlling interface between a plurality of integrated circuits and operation method thereof
US20200314037A1 (en) Method for processing network packets and electronic device therefor
US11924114B2 (en) Device and method for processing data packet
CN111083190B (zh) 处理数据的方法和电子装置
US20230401009A1 (en) Method and memory device for atomic processing of fused commands
KR20210098259A (ko) 표시 장치를 포함하는 전자 장치 및 그의 동작 방법
KR20210060194A (ko) 패킷 전달을 제어하는 전자 장치 및 그의 동작 방법
KR20190140664A (ko) 전자 장치 및 전자 장치의 무선랜 중계기능 제어 방법
KR20200033048A (ko) 패킷을 필터링하는 전자 장치 및 그 작동 방법
US10372632B2 (en) Information processing system, information processing method and information processing device
US11224018B2 (en) Electronic device and method for reducing current consumption of electronic device in near field wireless communication using same
CN117203616A (zh) 电子设备及电子设备的传感器数据处理方法
KR20200114707A (ko) 전자 장치 및 전자 장치에서의 스트리밍 어플리케이션 처리 방법
US20230046243A1 (en) Method and apparatus for controlling transmission of packet
KR20220072756A (ko) 직렬 링크 내 엔트리들을 재입고하기 위한 메모리 장치 및 방법
KR20220134899A (ko) 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
KR20230023159A (ko) 패킷 전송 제어 방법 및 장치
KR20230083186A (ko) 복수의 코어를 사용하여 운영체제를 부팅하는 전자 장치 및 그의 동작 방법
KR20240055585A (ko) 가비지 컬렉션 수행 방법 및 이를 지원하는 전자 장치

Legal Events

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