WO2022211286A1 - 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 - Google Patents

전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 Download PDF

Info

Publication number
WO2022211286A1
WO2022211286A1 PCT/KR2022/002812 KR2022002812W WO2022211286A1 WO 2022211286 A1 WO2022211286 A1 WO 2022211286A1 KR 2022002812 W KR2022002812 W KR 2022002812W WO 2022211286 A1 WO2022211286 A1 WO 2022211286A1
Authority
WO
WIPO (PCT)
Prior art keywords
session
core
data packet
packet
electronic device
Prior art date
Application number
PCT/KR2022/002812
Other languages
English (en)
French (fr)
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 EP22781407.6A priority Critical patent/EP4319101A4/en
Publication of WO2022211286A1 publication Critical patent/WO2022211286A1/ko
Priority to US18/475,699 priority patent/US20240031297A1/en

Links

Images

Classifications

    • 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/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • 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
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/54Interprogram communication
    • 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/12Avoiding congestion; Recovering from congestion
    • 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/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • 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/0268Traffic management, e.g. flow control or congestion control using specific QoS parameters for wireless networks, e.g. QoS class identifier [QCI] or guaranteed bit rate [GBR]

Definitions

  • Various embodiments of the present disclosure relate to an electronic device and a method for processing a data packet received in the electronic device.
  • the 5G communication system has a higher frequency band (eg, For example, implementation in the 6-60 GHz band) is being considered.
  • an IP multimedia subsystem (IMS) protocol data unit (PDU) session for example, an IP multimedia subsystem (IMS) protocol data unit (PDU) session, an enhanced mobile broadband (eMBB) PDU session, or ultra-reliable and low latency (URLLC) session according to the characteristics of a service or application.
  • IMS IP multimedia subsystem
  • eMBB enhanced mobile broadband
  • URLLC ultra-reliable and low latency
  • eMBB PDU session it can be used in a service or application that requires high throughput
  • a URLLC PDU session it can be used in a service or application requiring low-latency.
  • Data received from the electronic device according to each service or application may be transmitted in the form of a packet from the application processor through the communication processor.
  • the communication processor may store the packet in a buffer and sequentially transmit it to the application processor according to the received order.
  • the application processor may merge a plurality of packets received from the communication processor through the packet merging module and then transmit it to an upper layer.
  • the application processor may distribute received packets to the plurality of cores and process them in parallel.
  • any one of the plurality of cores of the application processor eg, a control core
  • the control core of the application processor merges the packets according to the order received from the communication processor, thereby providing a low-latency service of packets (eg, URLLC data) may be delayed by a large number of normal packets, so that it may not be possible to provide a low-latency service.
  • QoS quality of service
  • the application processor shares group information based on a characteristic (eg, QoS) of an application or service with the communication processor, and a corresponding core mapped according to the group information among a plurality of cores with a packet received from the communication processor It is possible to provide an electronic device capable of reducing a delay time according to packet processing by processing the data packet through , and a method for processing a data packet received in the electronic device.
  • a characteristic eg, QoS
  • group information based on the characteristics (eg, QoS) of an application or service is set to be mapped to each core of a plurality of cores, and a packet received from the communication processor is transmitted through the corresponding core mapped according to the group information. It is possible to provide an electronic device capable of reducing a delay time due to packet processing by processing the packet and a method for processing a data packet received in the electronic device.
  • an electronic device includes an application processor including a plurality of cores, and a communication processor electrically connected to the application processor, wherein the application processor performs at least one session related to each application.
  • the application processor performs at least one session related to each application.
  • QoS quality of service
  • an electronic device includes an application processor including a plurality of cores, and a communication processor electrically connected to the application processor, wherein the application processor performs at least one session related to each application.
  • the application processor performs at least one session related to each application.
  • Set to correspond to at least one of the plurality of cores based on quality of service (QoS) receive a data packet of a first session of the at least one session from the communication processor, and the received first Storing the data packet of the session in a logical buffer allocated for a first core set corresponding to the first session among the plurality of cores, and transferring the data packet of the first session stored in the logical buffer through the first core can be processed
  • QoS quality of service
  • At least one session related to each application is performed using at least one of a plurality of cores included in an application processor based on quality of service (QoS). setting to correspond to a core, transmitting information corresponding to a first core configured for a first session among the at least one session from the application processor to the communication processor, in the application processor from the communication processor to the first Receiving a data packet of a session, based on information corresponding to the first core, processing the received data packet of the first session through the first core established for the first session can
  • QoS quality of service
  • a method of processing a data packet received in an electronic device at least one session related to each application is performed using at least one of a plurality of cores included in an application processor based on quality of service (QoS). setting to correspond to a core, in the application processor, receiving a data packet of a first session of the at least one session from a communication processor, and sending the received data packet of the first session to the one of the plurality of cores
  • QoS quality of service
  • the method may include storing the data packet of the first session stored in the buffer in a buffer allocated for the first core set corresponding to the first session, and processing the data packet of the first session stored in the buffer through the first core.
  • An electronic device and a method for processing a data packet received in the electronic device include, in various embodiments, an application processor that transmits group information based on characteristics (eg, QoS) of an application or service to a communication processor It is possible to reduce the delay time due to packet processing by sharing the data packet with the communication processor and mapping the data packet received from the communication processor to a plurality of cores according to the group information.
  • characteristics eg, QoS
  • FIG. 1 is a block diagram of an electronic device in a network environment, according to various embodiments of the present disclosure
  • FIG. 2 illustrates a hierarchical configuration for processing of a data packet, in accordance with various embodiments.
  • FIG. 3 is a diagram illustrating a transmission delay between an electronic device and a server, according to various embodiments of the present disclosure
  • FIG 4 illustrates an example of data packet processing by an RSS method in an electronic device, according to various embodiments of the present disclosure.
  • FIG 5 illustrates an example of data packet processing by an RPS method in an electronic device, according to various embodiments.
  • FIG 6 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG. 7 illustrates a flow of an operation for processing a data packet in an electronic device according to various embodiments of the present disclosure
  • FIG 8 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 9A illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 9B illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG 10A illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 10B illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 11A illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 11B illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG 12 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG. 13 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • FIG 14 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG. 15 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • 16 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG. 17 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure.
  • FIG. 18 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • FIG 19 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG. 20 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • 21 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 22 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • FIG. 23 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • 24A illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 24B illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 25 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • 26 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 27A illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 27B illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 28A illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 28B illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 29A illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 29B illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • FIG. 30 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • FIG. 31 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • FIG. 32 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure
  • 33 illustrates a flow of an operation for processing a data packet in an electronic device, according to various embodiments of the present disclosure.
  • 34 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • 35 is a block diagram illustrating a program according to various embodiments.
  • FIG. 1 is a block diagram of an electronic device 101 in a network environment 100, according to various embodiments.
  • the electronic device 101 communicates with the electronic device 102 through a first network 198 (eg, a short-range wireless communication network) or a second network 199 . It may communicate with the electronic device 104 or the server 108 through (eg, a long-distance wireless communication network). According to an embodiment, the electronic device 101 may communicate with the electronic device 104 through the server 108 .
  • the electronic device 101 includes a processor 120 , a memory 130 , an input module 150 , a sound output module 155 , a display module 160 , an audio module 170 , and a sensor module ( 176), interface 177, connection terminal 178, haptic module 179, camera module 180, power management module 188, battery 189, communication module 190, subscriber identification module 196 , or an antenna module 197 .
  • at least one of these components eg, the connection terminal 178
  • some of these components are integrated into one component (eg, display module 160 ). can be
  • the processor 120 for example, executes software (eg, a program 140) to execute at least one other component (eg, a hardware or software component) of the electronic device 101 connected to the processor 120. It can control and perform various data processing or operations. According to one embodiment, as at least part of data processing or operation, the processor 120 converts commands or data received from other components (eg, the sensor module 176 or the communication module 190 ) to the volatile memory 132 . may be stored in , process commands or data stored in the volatile memory 132 , and store the result data in the non-volatile memory 134 .
  • software eg, a program 140
  • the processor 120 converts commands or data received from other components (eg, the sensor module 176 or the communication module 190 ) to the volatile memory 132 .
  • the volatile memory 132 may be stored in , process commands or data stored in the volatile memory 132 , and store the result data in the non-volatile memory 134 .
  • the processor 120 is the main processor 121 (eg, a central processing unit or an application processor) or a secondary processor 123 (eg, a graphic processing unit, a neural network processing unit (eg, a graphic processing unit, a neural network processing unit) a neural processing unit (NPU), an image signal processor, a sensor hub processor, or a communication processor).
  • the main processor 121 eg, a central processing unit or an application processor
  • a secondary processor 123 eg, a graphic processing unit, a neural network processing unit (eg, a graphic processing unit, a neural network processing unit) a neural processing unit (NPU), an image signal processor, a sensor hub processor, or a communication processor.
  • the main processor 121 e.g, a central processing unit or an application processor
  • a secondary processor 123 eg, a graphic processing unit, a neural network processing unit (eg, a graphic processing unit, a neural network processing unit) a neural processing unit (NPU), an image signal processor, a
  • the secondary processor 123 may, for example, act on behalf of the main processor 121 while the main processor 121 is in an inactive (eg, sleep) state, or when the main processor 121 is active (eg, executing an application). ), together with the main processor 121, at least one of the components of the electronic device 101 (eg, the display module 160, the sensor module 176, or the communication module 190) It is possible to control at least some of the related functions or states.
  • the coprocessor 123 eg, an image signal processor or a communication processor
  • may be implemented as part of another functionally related component eg, the camera module 180 or the communication module 190 ). have.
  • the auxiliary processor 123 may include a hardware structure specialized for processing an artificial intelligence model.
  • Artificial intelligence models can be created through machine learning. Such learning may be performed, for example, in the electronic device 101 itself on which artificial intelligence is performed, or may be performed through a separate server (eg, the server 108).
  • the learning algorithm may include, for example, supervised learning, unsupervised learning, semi-supervised learning, or reinforcement learning, but in the above example not limited
  • the artificial intelligence model may include a plurality of artificial neural network layers.
  • Artificial neural networks include deep neural networks (DNNs), convolutional neural networks (CNNs), recurrent neural networks (RNNs), restricted boltzmann machines (RBMs), deep belief networks (DBNs), bidirectional recurrent deep neural networks (BRDNNs), It may be one of deep Q-networks or a combination of two or more of the above, but is not limited to the above example.
  • the artificial intelligence model may include, in addition to, or alternatively, a software structure in addition to the hardware structure.
  • the memory 130 may store various data used by at least one component (eg, the processor 120 or the sensor module 176 ) of the electronic device 101 .
  • the data may include, for example, input data or output data for software (eg, the program 140 ) and instructions related thereto.
  • the memory 130 may include a volatile memory 132 or a non-volatile memory 134 .
  • the program 140 may be stored as software in the memory 130 , and may include, for example, an operating system 142 , middleware 144 , or an application 146 .
  • the input module 150 may receive a command or data to be used by a component (eg, the processor 120 ) of the electronic device 101 from the outside (eg, a user) of the electronic device 101 .
  • the input module 150 may include, for example, a microphone, a mouse, a keyboard, a key (eg, a button), or a digital pen (eg, a stylus pen).
  • the sound output module 155 may output a sound signal to the outside of the electronic device 101 .
  • the sound output module 155 may include, for example, a speaker or a receiver.
  • the speaker can be used for general purposes such as multimedia playback or recording playback.
  • the receiver can be used to receive incoming calls. According to one embodiment, the receiver may be implemented separately from or as part of the speaker.
  • the display module 160 may visually provide information to the outside (eg, a user) of the electronic device 101 .
  • the display module 160 may include, for example, a control circuit for controlling a display, a hologram device, or a projector and a corresponding device.
  • the display module 160 may include a touch sensor configured to sense a touch or a pressure sensor configured to measure the intensity of a force generated by the touch.
  • the audio module 170 may convert a sound into an electric signal or, conversely, convert an electric signal into a sound. According to an embodiment, the audio module 170 acquires a sound through the input module 150 , or an external electronic device (eg, a sound output module 155 ) connected directly or wirelessly with the electronic device 101 .
  • the electronic device 102) eg, a speaker or headphones
  • the electronic device 102 may output a sound.
  • the sensor module 176 detects an operating state (eg, power or temperature) of the electronic device 101 or an external environmental state (eg, a user state), and generates an electrical signal or data value corresponding to the sensed state. can do.
  • the sensor module 176 may include, for example, a gesture sensor, a gyro sensor, a barometric pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an IR (infrared) sensor, a biometric sensor, It may include a temperature sensor, a humidity sensor, or an illuminance sensor.
  • the interface 177 may support one or more specified protocols that may be used by the electronic device 101 to directly or wirelessly connect with an external electronic device (eg, the electronic device 102 ).
  • the interface 177 may include, for example, a high definition multimedia interface (HDMI), a universal serial bus (USB) interface, an SD card interface, or an audio interface.
  • the connection terminal 178 may include a connector through which the electronic device 101 can be physically connected to an external electronic device (eg, the electronic device 102 ).
  • the connection terminal 178 may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (eg, a headphone connector).
  • the haptic module 179 may convert an electrical signal into a mechanical stimulus (eg, vibration or movement) or an electrical stimulus that the user can perceive through tactile or kinesthetic sense.
  • the haptic module 179 may include, for example, a motor, a piezoelectric element, or an electrical stimulation device.
  • the camera module 180 may capture still images and moving images. According to an embodiment, the camera module 180 may include one or more lenses, image sensors, image signal processors, or flashes.
  • the power management module 188 may manage power supplied to the electronic device 101 .
  • the power management module 188 may be implemented as, for example, at least a part of a power management integrated circuit (PMIC).
  • PMIC power management integrated circuit
  • the battery 189 may supply power to at least one component of the electronic device 101 .
  • battery 189 may include, for example, a non-rechargeable primary cell, a rechargeable secondary cell, or a fuel cell.
  • the communication module 190 is a direct (eg, wired) communication channel or a wireless communication channel between the electronic device 101 and an external electronic device (eg, the electronic device 102, the electronic device 104, or the server 108). It can support establishment and communication performance through the established communication channel.
  • the communication module 190 may include one or more communication processors that operate independently of the processor 120 (eg, an application processor) and support direct (eg, wired) communication or wireless communication.
  • the communication module 190 is a wireless communication module 192 (eg, a cellular communication module, a short-range communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module 194 (eg, : It may include a local area network (LAN) communication module, or a power line communication module).
  • a wireless communication module 192 eg, a cellular communication module, a short-range communication module, or a global navigation satellite system (GNSS) communication module
  • GNSS global navigation satellite system
  • wired communication module 194 eg, : It may include a local area network (LAN) communication module, or a power line communication module.
  • a corresponding communication module among these communication modules is a first network 198 (eg, a short-range communication network such as Bluetooth, wireless fidelity (WiFi) direct, or infrared data association (IrDA)) or a second network 199 (eg, legacy It may communicate with the external electronic device 104 through a cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (eg, a telecommunication network such as a LAN or a WAN).
  • a first network 198 eg, a short-range communication network such as Bluetooth, wireless fidelity (WiFi) direct, or infrared data association (IrDA)
  • a second network 199 eg, legacy It may communicate with the external electronic device 104 through a cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (eg, a telecommunication network such as a LAN or a WAN).
  • a telecommunication network
  • the wireless communication module 192 uses subscriber information (eg, International Mobile Subscriber Identifier (IMSI)) stored in the subscriber identification module 196 within a communication network such as the first network 198 or the second network 199 .
  • subscriber information eg, International Mobile Subscriber Identifier (IMSI)
  • IMSI International Mobile Subscriber Identifier
  • the electronic device 101 may be identified or authenticated.
  • the wireless communication module 192 may support a 5G network after a 4G network and a next-generation communication technology, for example, a new radio access technology (NR).
  • NR access technology includes high-speed transmission of high-capacity data (eMBB (enhanced mobile broadband)), minimization of terminal power and access to multiple terminals (mMTC (massive machine type communications)), or high reliability and low latency (URLLC (ultra-reliable and low-latency) -latency communications)).
  • eMBB enhanced mobile broadband
  • mMTC massive machine type communications
  • URLLC ultra-reliable and low-latency
  • the wireless communication module 192 may support a high frequency band (eg, mmWave band) to achieve a high data rate, for example.
  • a high frequency band eg, mmWave band
  • the wireless communication module 192 uses various techniques for securing performance in a high-frequency band, for example, beamforming, massive multiple-input and multiple-output (MIMO), all-dimensional multiplexing. It may support technologies such as full dimensional MIMO (FD-MIMO), an array antenna, analog beam-forming, or a large scale antenna.
  • the wireless communication module 192 may support various requirements defined in the electronic device 101 , an external electronic device (eg, the electronic device 104 ), or a network system (eg, the second network 199 ).
  • the wireless communication module 192 may include a peak data rate (eg, 20 Gbps or more) for realizing eMBB, loss coverage (eg, 164 dB or less) for realizing mMTC, or U-plane latency for realizing URLLC ( Example: Downlink (DL) and uplink (UL) each 0.5 ms or less, or round trip 1 ms or less) can be supported.
  • a peak data rate eg, 20 Gbps or more
  • loss coverage eg, 164 dB or less
  • U-plane latency for realizing URLLC
  • the antenna module 197 may transmit or receive a signal or power to the outside (eg, an external electronic device).
  • the antenna module 197 may include an antenna including a conductor formed on a substrate (eg, a PCB) or a radiator formed of a conductive pattern.
  • the antenna module 197 may include a plurality of antennas (eg, an array antenna). In this case, at least one antenna suitable for a communication method used in a communication network such as the first network 198 or the second network 199 is connected from the plurality of antennas by, for example, the communication module 190 . can be selected. A signal or power may be transmitted or received between the communication module 190 and an external electronic device through the selected at least one antenna.
  • other components eg, a radio frequency integrated circuit (RFIC)
  • RFIC radio frequency integrated circuit
  • the antenna module 197 may form a mmWave antenna module.
  • the mmWave antenna module comprises a printed circuit board, an RFIC disposed on or adjacent to a first side (eg, bottom side) of the printed circuit board and capable of supporting a designated high frequency band (eg, mmWave band); and a plurality of antennas (eg, an array antenna) disposed on or adjacent to a second side (eg, top or side) of the printed circuit board and capable of transmitting or receiving signals of the designated high frequency band. can do.
  • peripheral devices eg, a bus, general purpose input and output (GPIO), serial peripheral interface (SPI), or mobile industry processor interface (MIPI)
  • GPIO general purpose input and output
  • SPI serial peripheral interface
  • MIPI mobile industry processor interface
  • the command or data may be transmitted or received between the electronic device 101 and the external electronic device 104 through the server 108 connected to the second network 199 .
  • Each of the external electronic devices 102 or 104 may be the same as or different from the electronic device 101 .
  • all or a part of operations executed in the electronic device 101 may be executed in one or more external electronic devices 102 , 104 , or 108 .
  • the electronic device 101 may perform the function or service itself instead of executing the function or service itself.
  • one or more external electronic devices may be requested to perform at least a part of the function or the service.
  • One or more external electronic devices that have received the request may execute at least a part of the requested function or service, or an additional function or service related to the request, and transmit a result of the execution to the electronic device 101 .
  • the electronic device 101 may process the result as it is or additionally and provide it as at least a part of a response to the request.
  • cloud computing, distributed computing, mobile edge computing (MEC), or client-server computing technology may be used.
  • the electronic device 101 may provide an ultra-low latency service using, for example, distributed computing or mobile edge computing.
  • the external electronic device 104 may include an Internet of things (IoT) device.
  • the server 108 may be an intelligent server using machine learning and/or neural networks.
  • the external electronic device 104 or the server 108 may be included in the second network 199 .
  • the electronic device 101 may be applied to an intelligent service (eg, smart home, smart city, smart car, or health care) based on 5G communication technology and IoT-related technology.
  • FIG. 2 illustrates a hierarchical configuration for data packet processing, in accordance with various embodiments.
  • an electronic device eg, the electronic device 101 of FIG. 1
  • a device area for transmitting or receiving a data packet hereinafter, referred to as a 'packet' for convenience of description.
  • 210 a device area for transmitting or receiving a data packet
  • a kernel area 230 e.g., the kernel area 230
  • a user area 250 e.g., the user area 250
  • Operations in the device region 210 may be executed by a communication processor (CP) (eg, the auxiliary processor 123 of FIG. 1 ) or a communication module (eg, the communication module 190 of FIG. 1 ).
  • the kernel area 230 and the user area 250 may correspond to a memory address space included in at least a part of the program 140 .
  • Operations in the kernel area 230 and the user area 250 may be executed by a processor (eg, the processor 120 of FIG. 1 ) (eg, an application processor (AP)).
  • the processor 120 may perform operations (or functions) in the kernel area 230 and the user area 250 through execution of the software 200 (eg, the program 140 of FIG. 1 ).
  • Instructions (or instructions) related to the above operations may be stored in a memory (eg, the memory 130 of FIG. 1 ).
  • the device area 210 may provide an operation of a hardware device for transmitting or receiving a packet.
  • the device area 210 may include a network connection device 211 (eg, a network interface controller (NIC) or a modem).
  • the network connection device 211 may be a hardware device for physically transmitting or receiving a packet to be transmitted through the network by the electronic device 101 into a signal or bit string.
  • the packet may include a data packet that the transmitting end (or the transmitting-side electronic device) intends to transmit to the receiving end (or the receiving-side electronic device).
  • the network connection device 211 when the network connection device 211 is included in the processor 120 and is configured as one processing chip, the network connection device 211 is an interface (eg, a communication processor for transferring a packet to the application processor). , may mean an inter-processor communication (IPC) interface.
  • IPC inter-processor communication
  • the application processor (AP) (eg, the processor of FIG. 1 ) 120 ) is the network connection device 211 (eg, the communication module 190 of FIG. 1 ).
  • the packet may be received through , and the packet may be transmitted through the network connection device 211 .
  • the network connection device 211 may include a communication processor (CP) (eg, the auxiliary processor 123 or communication module 190 of FIG. 1 ) and an interface between the communication processor 123 and the processor 120 . may include.
  • the AP may transmit a packet to an external electronic device (eg, the electronic devices 102 and 104 of FIG. 1 or a server (eg, the server 108 of FIG.
  • the network connection device 211 is a modem (eg, communication processor 123) electrically connected to the processor 120 (eg, AP). ) and an interface (eg, a PCIe interface, a USB interface, a shared memory interface)
  • the network connection device 211 may include a processor 120 (eg, a main processor). 121 or coprocessor 123).
  • the kernel layer 230 is an operating system (OS) of the electronic device (eg, the electronic device 101 of FIG. 1 ) (eg, the operating system 142 of FIG. 1 ). )) can be included.
  • the kernel layer 230 may control packet processing.
  • the kernel region 230 may include various modules to process a received packet.
  • the kernel region 230 may include a device driver 231 , a packet merging module 233 , and a network packet processing module 235 .
  • the device driver 231 may process a received packet to be processed by an upper layer.
  • the device driver 231 may process the packet to match the operating system operating in the electronic device 101 .
  • the device driver 231 may include one or at least two network device drivers (network device driver #1, network device driver #2, ..., network device driver #N).
  • the network device driver may receive a packet according to a communication protocol defined by the manufacturer of the network connection device 211 .
  • the network device driver may include device drivers of a network device (eg, modem, lan card, Bluetooth, near field communication (NFC), Wi-Fi, display, audio, video). .
  • the network connection device 211 may generate an interrupt (eg, a hardware interrupt request (HW IRQ)) to the processor 120 while transmitting packet(s) to the processor 120 .
  • the network device driver may receive packets with an interrupt. Each network device driver may process received packets into structures.
  • structures may be stored in a buffer for network processing.
  • the buffer may store structures in the form of a list for packet merging.
  • the operation of processing and storing packets into structures may be referred to as packet structuring.
  • the packet merging module 233 may perform an operation (eg, merge, flush, or skip) related to packet merging.
  • the packet merging module 233 may forward the received packets to an upper layer (eg, the network packet processing module 235 ).
  • the packet merging module 233 may transfer the structured packets received from the device driver 231 to an upper layer.
  • the packet merging module 233 may merge received packets and deliver them.
  • an operation related to packet merging upon receiving a packet from the network device driver, contiguous packet data having at least a part of IP/TCP header information is merged (or bundled) into one packet, and the merged packet is combined into a network packet. It may be a technique for uploading to the processing module 235 (eg, a network stack).
  • the packet merging module 233 may reduce the load on the network packet processing module 255 by merging received packets and transferring them to an upper layer at once.
  • the number of responses (eg, acknowledge, ACK) to a received packet is reduced, so that the load on the network connection device 211 may be reduced.
  • processing efficiency may increase and thus throughput (Tput) may increase.
  • the packet aggregation module 233 may transfer received packets to a immediately higher layer (eg, a transmission control protocol (TCP)/internet protocol (IP)).
  • a transmission control protocol TCP
  • IP Internet protocol
  • the packet merging module 233 may directly transfer the received packets to a higher layer.
  • an operation of merging received packets and transferring the received packets to an upper layer or directly transferring received packets to an upper layer in the packet merging module 233 may be referred to as a flush.
  • the flush may refer to an operation of transferring structures stored in a buffer of the packet merging module 233 to an upper layer.
  • the packet merging module 233 may store the structures in a buffer in the form of a list to correspond to a stream (eg, a TCP stream).
  • the packet merging module 233 may include a list of packets corresponding to each stream.
  • an operation related to packet aggregation may be referred to as an offload or a receive offload.
  • An operation related to packet merging may be performed as a function defined in an OS operating in the electronic device 101 .
  • an operation related to packet aggregation may include a generic receiver offload (GRO) of Linux TM .
  • GRO generic receiver offload
  • the operation related to packet aggregation may be receive segment coalescing (RSC) of Windows TM .
  • the operation of the packet merging module 233 is performed in a different processor for each session. It can also be performed in parallel. For example, a packet received from the at least one network connection device 211 is transmitted to any one of the plurality of core processors, and each of the plurality of core processors is transmitted from the at least one network connection device 211 . Received packets can be processed simultaneously and in parallel.
  • the network packet processing module 235 may process a packet received from the packet merging module 233 .
  • the network packet processing module 235 may include a network stack.
  • the network packet processing module 235 may include a network layer (eg, internet protocol (IP), internet control message protocol (ICMP)) and a transport layer (transmission control protocol (TCP), user datagram protocol (UDP)).
  • IP internet protocol
  • ICMP internet control message protocol
  • TCP transmission control protocol
  • UDP user datagram protocol
  • the network packet processing module 235 may receive a packet from the network connection device 211 through the device driver 231 and the packet merging module 233 .
  • the network packet processing module 235 may process the packets received from the device driver 231 and the packet merging module 233 so that they can be processed in the user area, and then transfer the processed packets to the user area.
  • the network packet processing module 235 may perform IP routing. Also, for example, in the TCP layer, the network packet processing module 235 may identify a TCP control block. The network packet processing module 235 may identify the IP and port number of the corresponding packet.
  • the user layer 250 may perform operations using packets transmitted from the kernel layer 230 .
  • forwarded packets may be used to meet the purpose of applications operating in the user layer. For example, a message may be displayed to the user of the electronic device 101 or a video streaming service may be provided.
  • the user area 250 may include an application framework 251 and an application 253 .
  • the application 253 may be run on an operating system (eg, the operating system 142 of FIG. 1 ) that controls resources related to the electronic device and/or the operating system.
  • the operating system may include, for example, Android TM , Linux TM , iOS TM , Windows TM , Symbian TM , Tizen TM , or Bada TM .
  • the application framework 251 may provide the applications 253 with functions commonly required by the applications 253 or provide the applications 253 with various functions that allow the applications 253 to use limited system resources inside the electronic device. have.
  • the application framework 251 may include a package manager, an activity manager, a call manager, a window manager, or a resource manager.
  • packets received from the network connection device 211 are merged through a device driver 231 that may be implemented in the form of software 200 (eg, the program 140 of FIG. 1 ). may be passed to the network packet processing module 235 (eg, network stack) via module 233 , and the application 253 may use the packets processed in the network packet processing module 235 (eg, network stack).
  • a device driver 231 may be implemented in the form of software 200 (eg, the program 140 of FIG. 1 ).
  • the network packet processing module 235 eg, network stack
  • the application 253 may use the packets processed in the network packet processing module 235 (eg, network stack).
  • the operation related to packet merging provided by the packet merging module 233 may reduce the processing load in the network stack by merging several received packets into one and delivering them to the network stack at once.
  • a maximum transmission unit may be the maximum transmission unit of a packet that can be delivered to a network layer (eg, an IP layer of a network stack).
  • the network device driver may deliver a packet having a size of MTU or less to the network stack.
  • the size of i packets flushed to the network stack may exceed the MTU (eg, 999 or 64 kilobytes (kilobytes)).
  • the load on the network stack of the system is reduced and the load on the data transmission hardware such as NIC or modem and the entire network processor is reduced by sending a small number of acknowledgments (ACKs) to the server side.
  • ACKs acknowledgments
  • the packet merging module 233 uniformly merges packets and delivers them to a higher layer, for example, when the network speed is low, such as at the beginning of packet transmission, transmission of an ACK to the received packet is delayed and the network speed is increased. may not increase rapidly.
  • a transport protocol such as TCP may increase the window size each time an ACK is received for congestion control. For example, at the beginning of transmission, each time an ACK is received, the window size may be increased exponentially until it exceeds a threshold value. For example, at the beginning of transmission, the faster the response to the transmitted packet, the faster the network speed may increase. However, when a small amount of response (ACK) is transmitted, the increase in network speed becomes slow, which may slow the time until the first screen starts when playing a streaming video. For example, if an ACK is transmitted once for a plurality of merged packets instead of an ACK for each received packet, the transmitter may increase the window size by considering only one ACK.
  • ACK small amount of response
  • the number of occurrences of ACK is reduced, so that the throughput can be reduced compared to the case where the operation related to packet aggregation is not applied. Since the number of occurrences of ACK increases as the network conditions improve, a decrease in throughput due to an operation related to packet aggregation may occur.
  • the packets are adaptively (or variably) merged and delivered to a higher layer based on the session characteristics (eg, IP type or application type) corresponding to the received data packet, or the received packet is transmitted to the upper layer. By passing it directly to the upper layer, throughput can be improved.
  • An operation of transferring packets (eg, merged packets) from the packet merging module 233 to an upper layer (eg, the network packet processing module 235) may be referred to as a flush.
  • URLLC data supporting an ultra-low latency service in a 5G communication network may be processed within 10 ms from the server 320 (eg, a mobile edge computing (MEC) server) to the application 300 .
  • MEC mobile edge computing
  • it can be processed from the server 320 to the application 300 within 1 ms.
  • the target processing time from the server 320 to the application 300 in the electronic device 101 decreases, the proportion of time occupied for processing packets in the electronic device 101 may relatively increase.
  • the final processing time of the low-latency service may be delayed.
  • a time delay that may occur during packet processing in the electronic device 101 will be described with reference to FIGS. 4 and 5 .
  • the electronic device 101 is a CP 110 (eg, the communication module 190 ) and a processor 120 (eg, the processor 120 of FIG. 1 ) (hereinafter, referred to as an AP for convenience of description). .), and a memory 130 (eg, the memory 130 of FIG. 1 ).
  • CP 110 eg, the communication module 190
  • processor 120 eg, the processor 120 of FIG. 1
  • AP for convenience of description
  • the AP 120 may include a plurality of cores (or core processors), and in the following description, for convenience of description, four cores (eg, a first core 441 (core 0), a second core 442 ) ) (Core 1), the third core 443 (Core 2), and the fourth core 444 (Core 3) are exemplified as including, but embodiments to be described below are not limited to the above number.
  • the first core 441 and the second core 442 may be referred to as a balance cluster
  • the third core 443 and the fourth core 444 may be a performance cluster ( performance cluster).
  • the cores corresponding to the performance cluster may be cores having relatively superior performance compared to the cores corresponding to the balance cluster and consuming a large amount of battery.
  • the cores corresponding to the balance cluster may have relatively low performance and low battery consumption compared to the cores corresponding to the performance cluster.
  • the cores corresponding to the balance cluster may be referred to as small cores, and the cores corresponding to the performance cluster may be referred to as big cores. not.
  • a core having intermediate performance between the balance cluster and the performance cluster may be referred to as a middle core.
  • the CP 110 may include a filter 430 and a plurality of buffers. Packets received by the CP 110 may be distributed to any one of a plurality of buffers through the filter 430 .
  • the filter 430 may check the header of the received packet (or hash the header) and store packets of the same session (or the same flow) in the same buffer. For example, the packets 401 of the first session may be stored in the first buffer through the filter 430 , and the packets 402 of the second session and the packets 403 of the third session are stored in the filter 430 . ) may be stored in the second buffer.
  • the packets 401 of the first session stored in the first buffer may be delivered to the AP 120 , and the AP 120 transmits the packets 401 of the first session received from the first buffer to the first buffer. It can be controlled to process through the core 441 .
  • the packets 402 of the second session and packets 403 of the third session stored in the second buffer may be transferred to the AP 120 , and the AP 120 may transmit the second session packets 402 stored in the second buffer.
  • the packets 402 of the session and the packets 403 of the third session may be controlled to be processed through the second core 442 .
  • an operation related to packet aggregation may be performed on the packets transmitted to each core through the packet merging module 460 (eg, the packet merging module 233 of FIG. 2 ).
  • the packet merging module 460 may perform an operation (eg, merge, flush, or skip) related to packet merging.
  • the packet merging module 460 may forward the received packets to an upper layer (eg, the network packet processing module 480 (eg, the network packet processing module 235 of FIG. 2 )). Since a specific embodiment has been described with reference to FIG. 2 , a detailed description thereof will be omitted.
  • the packet merging module is the buffer 461 corresponding to the first core 441 , the buffer 462 corresponding to the second core 442 , the buffer 463 corresponding to the third core 443 , and the fourth It may be performed in parallel in the buffer 464 corresponding to the core 444 .
  • an operation related to packet merging may be performed.
  • the packet data 402 of the second session or the packet data 403 of the third session allocated to the second core 442 are stored in the buffer 462 corresponding to the second core 442 and are related to packet merging. Operations may be performed in parallel.
  • the data packets stored in the buffer 461 corresponding to the first core 441 and processed to be merged and the data packets stored in the buffer 462 corresponding to the second core 442 and processed to be merged are processed by network packet processing. may be passed to module 480 .
  • the packet merging process may be performed after the packet merging process for the packet data 402 of the second session is completed, A time delay may occur.
  • the packet data 403 of the third session includes cores corresponding to the balance cluster (eg, the third core 443 and the fourth core 444 ) rather than the cores corresponding to the performance cluster (eg, the first core 444 ). It is processed through the first core 441 and the second core 442 ), so that the processing speed may be relatively reduced.
  • the electronic device 101 may include a CP 110 (eg, the communication module 190 ), an AP 120 , and a memory 130 (eg, the memory 130 of FIG. 1 ). have.
  • the AP 120 may include a plurality of cores (or core processors).
  • the first core 441 and the second core 442 may be referred to as a balance cluster, and the third core 443 and the fourth core 444 may be a performance cluster ( performance cluster).
  • the CP 110 may include a filter 430 and a plurality of buffers.
  • the plurality of buffers included in the CP 110 may be one physical buffer or a plurality of virtual buffers implemented in software.
  • Packets input from the CP 110 may be input into one reception buffer.
  • the reception buffer may store a plurality of packets according to an input order to the CP 110 . For example, after storing the packets 401 of the first session, the reception buffer may store the packets 403 of the third session.
  • the packets 401 of the first session and the packets 403 of the third session that are sequentially stored in the reception buffer may be delivered to the AP 120 , and the AP 120 receives the first packet received from the first buffer.
  • the packets 401 of the session and the packets 403 of the third session may be controlled to be processed through the first core 441 .
  • an operation related to packet merging may be performed on the packets transmitted to the first core 441 through the packet merging module 460 (eg, the packet merging module 233 of FIG. 2 ).
  • the packet merging module 460 may perform an operation (eg, merge, flush, or skip) related to packet merging.
  • the packet merging module 460 transmits the received packets 401 of the first session and packets 403 of the third session to an upper layer (eg, the network packet processing module 480) through the packet steering module 470 ( Example: It can be transmitted to the network packet processing module 235 of Fig. 2. Since the detailed description of the packet merging module 460 has been described with reference to Fig. 2, a detailed description thereof will be omitted.
  • the data packet 401 of the first session and the data packet 403 of the third session stored in the buffer 461 of the first core 441 and subjected to packet aggregation are processed by the packet merging module 460 .
  • the packet steering module 470 may be processed in separate cores.
  • the packet steering module 470 receives the merge-processed packet and stores it in the buffer 471 corresponding to the first core 441 , or stores it in the buffer 472 corresponding to the second core 442 , or , may be stored in the buffer 473 corresponding to the third core 443 , or may be stored in the buffer 474 corresponding to the fourth core 444 .
  • a packet stored in the buffer 471 corresponding to the first core 441 may be processed through the network packet processing module 480 of the first core 441 , and a buffer corresponding to the second core 442 .
  • the packet stored in 472 may be processed through the network packet processing module 480 of the second core 442
  • the packet stored in the buffer 473 corresponding to the third core 443 may be stored in the third core 443 .
  • ) may be processed through the network packet processing module 480 of the fourth core 444
  • packets stored in the buffer 474 corresponding to the fourth core 444 are processed through the network packet processing module 480 of the fourth core 444 .
  • the first session data packet 401 may be stored in the buffer 461 corresponding to the first core 441 and merged and then transferred to the network packet processing module 480 of the third core 443 .
  • the third session data packet 403 may be stored in the buffer 461 corresponding to the first core 441 , merged, and then transferred to the network packet processing module 480 of the fourth core 444 .
  • the AP 120 eg, the processor 120 in FIG.
  • the third session data packet 403 may be processed as a network packet in a core separate from the first session data packet 401 , but packet aggregation of the first session data packet 403 in the first core 441 .
  • a time delay may occur.
  • various embodiments that can reduce the delay time according to packet processing by mapping to a plurality of cores according to group information based on the characteristics (eg, QoS) of the application or service are described. to explain
  • the AP 120 and the CP 110 are described separately as separate components, but the limitation is that the AP 120 and the CP 110 are configured as separate chips. it is not
  • the AP 120 and the CP 110 may be configured as separate chips, or may be configured to include an application processor and a communication processor within one chip.
  • the controller 410 may be included in the AP 120 , or may be included in a hardware configuration separate from the AP 120 .
  • the controller 410 may be stored in the form of a program 140 in the memory 130 of FIG.
  • an operating system 142 eg, Android TM , Linux TM , iOS TM , Windows TM , Symbian TM ) , Tizen TM , or Bada TM
  • an operating system 142 eg, Android TM , Linux TM , iOS TM , Windows TM , Symbian TM ) , Tizen TM , or Bada TM
  • an operating system 142 may be implemented in the form of any one of the middleware 144 , or the application 146 .
  • the electronic device 101 may include a CP 110 (eg, the communication module 190 ), an AP 120 , and a memory 130 (eg, the memory 130 of FIG. 1 ). have.
  • the AP 120 may include a plurality of cores (or core processors).
  • the first core 441 and the second core 442 may be referred to as a balance cluster, and the third core 443 and the fourth core 444 may be a performance cluster ( performance cluster).
  • the CP 110 may include a filter 430 and a plurality of buffers. A plurality of buffers included in the CP 110 may be physically one buffer and may be logically divided.
  • the controller 410 may transmit group information for each session to the filter 430 of the CP 110 based on information stored in the database 420 .
  • the filter 430 may receive group information for each session from the controller 410 and store it in a buffer mapped to a corresponding group according to the session of the received packet.
  • the filter 430 may receive group information for each session from the controller 410 and generate a buffer (eg, a logical buffer) corresponding to the group.
  • a reception buffer A and a reception buffer B may be generated as two logical buffers corresponding to two groups.
  • the controller 410 may map the first session to the first group and the third session to the second group and store the mapping in the database 420 .
  • the controller 410 may transmit the group information for each session to the filter 430 in the CP 110 .
  • the filter 430 may receive group information for each session from the controller 410 , and generate a reception buffer A corresponding to the first group and a reception buffer B corresponding to the second group.
  • the filter 430 may receive a data packet corresponding to each session, check a header of the corresponding data packet, and confirm the session of the received data packet. For example, when the session of the received data packet is identified as the data packet 401 of the first session, the filter 430 converts the identified data packet 401 of the first session to the first group mapped to the first session. It can be stored in the reception buffer A generated in response to . When the session of the received data packet is identified as the data packet 403 of the third session, the filter 430 corresponds to the identified data packet 403 of the third session to the second group mapped to the third session. can be stored in the generated receive buffer B.
  • the packets 401 of the first session and the packets 403 of the third session stored in the respective reception buffers are to be delivered to the control core of the AP 120 (eg, the first core 441 (core 0)).
  • the control core eg, the first core 441 (core 0)
  • meta information eg, a buffer number (or group number)
  • the control core eg, the first core 441
  • the AP 120 performs a mapping module based on the group and core mapping information received from the controller 410 before merging the received packets.
  • the mapping module 450 of the first core 441 compares the data packet 401 of the first session received from the reception buffer A based on the information received from the controller 410 to the packet of the first core 441 . may be transmitted to the merging module 460 .
  • the mapping module 450 of the first core 441 converts the data packet 403 of the third session received from the reception buffer B based on the information received from the controller 410 to the packet merging module of the fourth core 444 . 460 .
  • the packets 401 of the first session delivered to the first core 441 are stored in a buffer 461 corresponding to the first core 441 to be stored in the packet merging module 460 (eg, : An operation related to packet merging may be performed through the packet merging module 233 of FIG. 2 .
  • the packet merging module 460 may perform an operation (eg, merge, flush, or skip) related to packet merging.
  • the packets 403 of the third session delivered to the fourth core 444 are stored in a buffer 464 corresponding to the fourth core 444 and then stored in the packet merging module 460 (eg, the packet merging of FIG. 2 ).
  • An operation related to packet aggregation may be performed through the module 233).
  • the packet merging module 460 which will be described later in FIGS. 6 and 7 , independently merges packets for each session within each core 441 , 442 , 443 , 444 under the control of the controller 410 .
  • a policy may be applied, and a packet aggregation policy may be independently applied to each core 441 , 442 , 443 , and 444 .
  • the packet merging data packets 401 of the first session processed through the first core 441 are processed in separate cores through the packet steering module 470 in the packet merging module 460 .
  • the packet steering module 470 may receive the merge-processed data packet 401 of the first session and store it in the buffer 471 corresponding to the first core 441 .
  • the data packet 401 of the first session stored in the buffer 471 corresponding to the first core 441 may be processed through the network packet processing module 480 of the first core 441 .
  • the data packets 403 of the third session that have been packet merged through the fourth core 444 may be processed by separate cores through the packet steering module 470 in the packet aggregation module 460 .
  • the packet steering module 470 may receive the merge-processed data packet 403 of the third session and store it in the buffer 474 corresponding to the fourth core 444 .
  • the data packet 403 of the third session stored in the buffer 474 corresponding to the fourth core 444 may be processed through the network packet processing module 480 of the fourth core 444 .
  • the controller 410 may control the packet merging module 460 to apply the packet merging policy of the packet merging module 460 to each core.
  • the controller 410 controls the mapping module 450 and/or the packet steering module 470 as described above to select a core in which a data packet of a specific session corresponding to a mapped group for each session is set.
  • the mapping module 450 may directly transmit the packet to the network packet processing module 480 .
  • the electronic device 101 includes an application processor (eg, the processor 120 of FIG. 1 ) including a plurality of cores, and a communication processor 120 electrically connected to the application processor (CP). ) (eg, the communication module 190 of FIG. 1 ).
  • an application processor eg, the processor 120 of FIG. 1
  • CP application processor
  • the application processor of the electronic device 101 sets at least one session related to each application to correspond to at least one of the plurality of cores based on quality of service (QoS). can be set.
  • QoS quality of service
  • the application processor may map at least one session related to each application to a group, and the group may be mapped to a specific core among the plurality of cores.
  • the application processor of the electronic device 101 transmits information (eg, first group information) corresponding to a first core configured for a first session among at least one session to the communication processor in operation 720 .
  • the communication processor of the electronic device 101 may generate a logical buffer corresponding to each group based on the information received from the application processor.
  • the application processor of the electronic device 101 receives information corresponding to the first core from the communication processor (eg, of the reception buffer A allocated to the group A corresponding to the first core). meta information), the packet data of the first session may be received. For example, when the communication processor transmits the packets to the AP 120 , meta information (eg, a buffer number (or group number)) related to a corresponding reception buffer generated in response to each group, a buffer start position, and an end of the buffer location, the number of packets in the buffer, or the number of sessions in the buffer).
  • meta information eg, a buffer number (or group number) related to a corresponding reception buffer generated in response to each group, a buffer start position, and an end of the buffer location, the number of packets in the buffer, or the number of sessions in the buffer).
  • the application processor of the electronic device 101 may process the received packet data of the first session through a first core configured for the first session in operation 740 .
  • Packet data of the second session set to the group B which is a group different from the first session, may be processed through the second core set for the group B.
  • the electronic device 101 may include a CP 110 (eg, the communication module 190 ), an AP 120 , and a memory 130 (eg, the memory 130 of FIG. 1 ). have.
  • the AP 120 may include a plurality of cores (or core processors).
  • the first core 441 and the second core 442 may be referred to as a balance cluster, and the third core 443 and the fourth core 444 may be a performance cluster ( performance cluster).
  • the CP 110 may include a filter 430 and a plurality of buffers. A plurality of buffers included in the CP 110 may be physically one buffer and may be logically divided.
  • the controller 410 may transmit group information for each session to the filter 430 of the CP 110 based on information stored in the database 420 .
  • the filter 430 may receive group information for each session from the controller 410 and store it in a buffer mapped to a corresponding group according to the session of the received packet.
  • the filter 430 may receive group information for each session from the controller 410 and generate a buffer (eg, a logical buffer) corresponding to the group.
  • a reception buffer A and a reception buffer B may be generated as two logical buffers corresponding to two groups.
  • the controller 410 may map the first session and the second session to the first group, map the third session to the second group, and store it in the database 420 .
  • the controller 410 may transmit the group information for each session to the filter 430 in the CP 110 .
  • the filter 430 may receive group information for each session from the controller 410 , and generate a reception buffer A corresponding to the first group and a reception buffer B corresponding to the second group.
  • the filter 430 may receive a data packet corresponding to each session, check a header of the corresponding data packet, and confirm the session of the received data packet. For example, if the session of the received data packet is identified as the data packet 401 of the first session or the data packet 402 of the second session, the filter 430 may determine the data packet 401 of the first session or The data packet 402 of the second session may be stored in the reception buffer A generated corresponding to the first session or the first group mapped to the second session. When the session of the received data packet is identified as the data packet 403 of the third session, the filter 430 corresponds to the identified data packet 403 of the third session to the second group mapped to the third session. can be stored in the generated receive buffer B.
  • the packets 401 of the first session, packets 402 of the second session, and packets 403 of the third session stored in the respective reception buffers are stored in the control core (eg, the first core ( 441) (Core 0)).
  • the control core eg, the first core ( 441) (Core 0)
  • meta information eg, a buffer number (or group number) related to a corresponding reception buffer generated in response to each group, a buffer start position, and an end of the buffer location, the number of packets in the buffer, or the number of sessions in the buffer.
  • the control core (eg, the first core 441 ) of the AP 120 performs a mapping module based on the group and core mapping information received from the controller 410 before merging the received packets.
  • the mapping module 450 of the first core 441 receives the data packet 401 of the first session and the data packet 402 of the second session received from the reception buffer A based on the information received from the controller 410 . ) may be transmitted to the packet merging module 460 of the first core 441 .
  • the mapping module 450 of the first core 441 converts the data packet 403 of the third session received from the reception buffer B based on the information received from the controller 410 to the packet merging module of the fourth core 444 . may be sent to 460 .
  • the packets 401 of the first session and the packets 402 of the second session stored in the buffer 461 corresponding to the first core 441 are the packets of the first core 441 .
  • An operation related to packet merging may be performed through the merging module 460 (eg, the packet merging module 233 of FIG. 2 ).
  • the packet merging module 460 may perform an operation (eg, merge, flush, or skip) related to packet merging.
  • the packets 403 of the third session stored in the buffer 464 corresponding to the fourth core 444 are stored in the packet merging module 460 of the fourth core 444 (eg, the packet merging module 233 of FIG. 2 ). )), an operation related to packet aggregation may be performed.
  • the data packets 403 may be processed in separate cores through the packet steering module 470 in the packet merging module 460 .
  • the packet steering module 470 may receive the data packet 401 of the first session merged through the first core 441 and store it in the buffer 472 corresponding to the second core 442 .
  • the data packet 401 of the first session stored in the buffer 472 corresponding to the second core 442 may be processed through the network packet processing module 480 of the second core 442 .
  • the packet steering module 470 may receive the data packet 402 of the second session merged by the first core 441 and store it in the buffer 473 corresponding to the third core 443 .
  • the data packet 402 of the second session stored in the buffer 473 corresponding to the third core 443 may be processed through the network packet processing module 480 of the third core 443 .
  • the packet steering module 470 may store the data packet 403 of the third session merged by the fourth core 444 in a buffer 474 corresponding to the fourth core 444 .
  • the data packet 403 of the third session stored in the buffer 474 corresponding to the fourth core 444 may be processed through the network packet processing module 480 of the fourth core 444 .
  • the controller 410 transmits meta information of each reception buffer (eg, reception buffer A and reception buffer B) from the CP 110 to the AP 120 and/or state information of each session. It is possible to determine the operating core of the data packet 402 of each session based on the . For example, the controller 410 may use a packet aggregation module ( A core that will perform packet merging processing through 460 and/or a core that will perform network packet processing through the network packet processing module 480 may be determined. According to various embodiments, the controller 410 provides information on data packets for each session based on meta information of each reception buffer and/or state information of each session transmitted from the CP 110 to the AP 120 . In the packet aggregation process, the packet aggregation level of the corresponding packet aggregation module 460 may be adjusted.
  • a packet aggregation module A core that will perform packet merging processing through 460 and/or a core that will perform network packet processing through the network packet processing module 480 may be determined.
  • the controller 410 provides
  • the reception buffer (eg, reception buffer A, reception buffer B) of the CP 110 is a memory space for storing packets received from the CP 110 , and the AP 120 or the controller 410 ), a new reception buffer corresponding to the corresponding group may be created according to the group addition request, or the reception buffer corresponding to the corresponding group may be deleted according to the group deletion request.
  • the mapping module 450 may check the meta information (or meta data) received from the CP 110 , and distribute the received packet data of each session to a corresponding core.
  • the mapping module 450 may check the core mapping information of the packet merging module 460 for the reception buffers (eg, reception buffer A and reception buffer B) generated for each group through the controller 410 .
  • the mapping module 450 may allocate a corresponding buffer to each core and activate the mapped core based on the check result.
  • the controller 410 may monitor an application (app), a service, or a framework.
  • the controller 410 may monitor a feature app, a specific service, or a specific session, and provide related information to the filter 430 of the CP 110 based on information stored in a database.
  • the controller 410 may transmit the packet aggregation policy set for each operating core to the packet aggregation module 460 .
  • the controller 410 monitors the mapping module 450 and the packet merging module 460, adds a group according to a set condition, and transmits it to the CP 110, or in a reception buffer corresponding to a specific group according to a set condition.
  • the mapped core (eg, the core of the packet merging module 460 or the core of the network packet processing module 480 ) may be updated.
  • the database 420 may store group mapping information for each session.
  • the database 420 may store the hourly throughput for each session, the core usage policy for each group state, and the merge policy for each group state received through the controller 410 .
  • the controller 410 controls or changes the core mapping of the mapping module 450 and/or the packet steering module 470 with reference to information stored in the database 420 , or a packet aggregation policy of the packet aggregation module 460 . can be adjusted.
  • the controller 410 may receive data related to a specific service (eg, a UE route selection policy (URSP), an edge discovery response message) and update the database 420 .
  • the controller 410 may provide the changed group information for each session to the filter 430 of the CP 110 based on the updated database 420 .
  • the filter 430 of the CP 110 may store the received data packet in a reception buffer based on the group information.
  • the CP 110 may interrupt the control core (eg, the first core 441 ) of the AP 120 when data is transferred to the AP 120 in each reception buffer, and meta information about each reception buffer can be updated.
  • control core of the AP 120 may check the updated meta information and map each reception buffer to each core of the packet merging module 460 based on the checked meta information.
  • the AP 120 may merge data packets of a corresponding session in each mapped core.
  • the controller 410 may monitor a session state and update an operation core of the mapping module 450 and/or the packet steering module 470 .
  • the controller 410 may update the operation level of the packet merging module 460 .
  • FIG. 9A and 9B illustrate examples of data packet processing in an electronic device, according to various embodiments.
  • the cores allocated to each session or group may be changed.
  • cores mapped to the packet merging module 460 may be allocated according to a predefined core number for each receive buffer as shown in FIG. 9A .
  • the core mapped to the network packet processing module 480 overlaps as the number of receive buffers is changed, the core of the overlapping session may be changed to another core in the changed cluster of the corresponding group as shown in FIG. 9B. .
  • a logical buffer 1 431a corresponding to the first group mapped to the first session may be generated.
  • the controller 410 sets a core to be mapped to the packet merging module 460 for the first group (hereinafter, referred to as a 'first operating core' for convenience of description) as the first core 441 , a core to be mapped to the network packet processing module 480 (hereinafter, referred to as a 'second operating core' for convenience of description) may be set as the fourth core 444 .
  • a logical buffer 2 431b corresponding to the second group mapped to the second session may be generated.
  • the controller 410 may set the first operating core as the fourth core 444 and the second operating core as the fourth core 444 for the second group.
  • the second working core of the first session and the second working core of the second session may overlap.
  • the second working core of the first session may be changed to a third core 443 that is another core in the same cluster as the fourth core 444 .
  • a method of reallocating cores according to the overlapping sessions may be random, round robin, or a load recognition-based method, but there is no limitation.
  • a session allocated to a specific logical buffer eg, logical buffer 2 431b
  • a specific protocol eg, URSP
  • the first operation core does not use the second operation core and directly A data packet may be transferred to a higher layer, or the second operating core may be assigned to the same core as the first operating core.
  • 10A and 10B illustrate examples of data packet processing in an electronic device, according to various embodiments.
  • the controller 410 takes precedence in a lower order according to the priority of the groups defined in the database 420 . to move to the first operating core of the subgroup.
  • the electronic device 101 may use a hotplug method according to the state of the electronic device 101 (eg, a low battery state or a high temperature), a system design (eg, CPU usage), or an algorithm.
  • a specific core can be dynamically processed online/offline.
  • the core currently available in the electronic device 101 and the core intended to be used by the buffer may be different from each other.
  • the controller 410 can schedule a set core with priority to a group buffer of high priority.
  • a data packet of a first session may be stored in logical buffer 1
  • a data packet of a second session may be stored in logical buffer 2
  • a data packet of a third session may be stored in logical buffer 3 have.
  • the first working core and the second working core of the first session may be set as the first core 441 .
  • the first working core and the second working core of the second session may be set as the second core 442 .
  • the first working core and the second working core of the third session may be set as the third core 443 .
  • the fourth core 444 may be controlled in an offline state.
  • the additional core eg, the third core 443
  • goes offline or the first operating core and the logical buffer available by adding or increasing the logical buffer. If the number of is different, it can operate as follows.
  • the controller 410 may set the first operation core and the second operation core as the first core 441 for the first session and the second session having relatively low priorities.
  • the controller 410 may control the processing by changing the first working core and the second working core to the second core 442 for the third session having a low priority.
  • 11A and 11B illustrate examples of data packet processing in an electronic device, according to various embodiments.
  • the controller 410 prioritizes the groups defined in the database 420 according to the priority of the same cluster.
  • An action core and a mask can be assigned.
  • the number of allocated cores of the operating core and the mask may be changed in proportion to the number of available cores.
  • the number of cores allocated to the operating core and the mask may be different according to the number of available cores to follow a predefined policy. For example, according to the priority, the lower group may be allocated by avoiding the operation core of the upper group. When the number of working cores available in the lower group and the number of cores allocated to the mask is less than or equal to a threshold value, the working cores of the upper group may not be avoided.
  • the data packet of the first session and the data packet of the second session may be stored in logical buffer 1
  • the data packet of the third session may be stored in logical buffer 2
  • the first operating core of the data packet of the first session and the data packet of the second session may be set to the same first core 441 .
  • the second operating core of the data packet of the first session is set as the second core 442
  • the second operating core of the data packet of the second session is different from the first session as the third core ( 443) can be set.
  • the first working core and the second working core of the data packet of the third session may be set as the fourth core 444 .
  • the third session allocated to the fourth core 444 has a relatively high priority. Therefore, it can be changed and allocated to the third core 443, which is another core in the same cluster. Since the second session and the third session overlap with the second operating core of the third core 443 , the second operating core of the second session having a relatively low priority is transferred from the third core 443 to the second core ( 442) can be changed.
  • the controller 410 may check meta information. As a result of checking the meta information, if the number of logical buffers of the CP 110 is different from the previous meta information, the controller 410 allocates to each operation core. The degree of packet aggregation of old packets may be increased above a threshold level for a threshold time and/or a threshold number of packets.
  • the packet aggregation degree of the packet merging module 460 may be increased to a threshold level or higher for a threshold time and/or a threshold number of packets.
  • the electronic device 101 may start a controller event handler in operation 1310 .
  • the controller 410 of the electronic device 101 may check whether the number of receive logical buffers is changed in operation 1320 . As a result of the check in operation 1320, if the number of receive logical buffers is not changed (operation 1320 - NO), the controller event handler may be terminated in operation 1360 . As a result of the check in operation 1320, if the number of receive logical buffers is changed (operation 1320 - Yes), as described above in FIG. 12 , the threshold value of the threshold packet and/or the aggregation level of previously received packets during the threshold time in operation 1330 can be weighted.
  • the controller 410 of the electronic device 101 may newly allocate the first operating core to each group in operation 1340 and update the operating core of the previous group. As shown in FIG. 12 , the controller 410 may newly allocate the second operating core to each group in operation 1350 and update the operating core of the previous group. When the new allocation and update of the first operation core and the second operation core are completed, the controller event handler may be terminated in operation 1360 .
  • FIG. 14 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • the threshold for the packet aggregation level of the corresponding session may be weighted.
  • the filter 430 may store the received data packet of the first session in the logical buffer 2 .
  • the controller 410 may map the first session to the second group.
  • the controller 410 may allocate a fourth core 444 as a first operating core and a second operating core for the second group.
  • a threshold value e.g, in FIG.
  • the controller 410 weights the threshold value of the packet aggregation level of the first session stored in the buffer 464 corresponding to the fourth core 444 and processed by the packet merging module 460 . can do it As the threshold value of the packet aggregation level of the first session is weighted, the controller 410 transfers the second working core of the second group mapped to the first session from the fourth core 444 to the third core 443 . ) can be changed to By adjusting the packet aggregation level of the packet merging module 460 for the first session, the movement time of the second operating core for the first session can be secured, and accordingly, according to the movement of the second operating core of the first session, Error occurrence can be prevented.
  • the controller 410 of the electronic device 101 may start monitoring in operation 1510 .
  • the controller 410 may check the meta information received from the mapping module 450 .
  • the controller 410 may determine the number of packets in each reception logical buffer based on the meta information in operation 1520, determine the number of sessions inserted into each reception logical buffer in operation 1530, and in operation 1540 It is possible to determine the packet throughput per hour of the related session.
  • a threshold value for the packet aggregation level of the corresponding session may be weighted. As the threshold of the packet aggregation level of the first session is weighted, the controller 410 assigns the second working core of the second group mapped to the first session to the fourth core 444 as illustrated in FIG. 14 . ) to the third core 443 .
  • the filter 430 of the CP 110 may store the data packet of the first session and the data packet of the second session in logical buffer 1, and the data packet of the third session may be stored in logical buffer 2.
  • the first operating core of the data packet of the first session and the data packet of the second session may be set to the same first core 441 .
  • the second operating core of the data packet of the first session is set as the second core 442
  • the second operating core of the data packet of the second session is different from the first session as the third core ( 443) can be set.
  • the first working core and the second working core of the data packet of the third session may be set as the fourth core 444 .
  • an event for a service or app occurs in the application 300 or the cloud 1600, or an event for a socket of the service or app (eg: execution, deletion, or information update request).
  • the controller 410 receives an event for a service or app from the application 300 or cloud 1600, or an event for a socket of the service or app, based on the received event, the IP, port, and group information may be updated in the database 420 .
  • the controller 410 may transmit group information for each session to the filter 430 of the CP 110 based on the updated information in the database 420 .
  • a logical buffer corresponding to the updated number of groups may be generated.
  • the electronic device 101 may detect occurrence of a controller update event in operation 1710 .
  • the controller update event includes executing an application or process, calling an event from the application or platform to the controller 410, receiving specific information from the MEC server, changing a URSP policy, and generating an event in a mapping module handler can do.
  • the controller 410 of the electronic device 101 may determine an event occurring in operation 1720 and update the database 420 in operation 1730 as described above with reference to FIG. 16 . According to various embodiments, if it is determined in operation 1740 that a socket related to the changed content exists (operation 1740 - Yes), the controller 410 of the electronic device 101 sends the filter 430 to the group update in operation 1750 .
  • the group filter may be updated by transmitting the changed group information for each session. When the group filter is updated, event processing may end in operation 1760 . If it is determined that the socket related to the changed content does not exist in operation 1740 (operation 1740 - NO), event processing may be terminated in operation 1760 .
  • the electronic device 101 may detect occurrence of a socket event in operation 1810 .
  • the socket event may include socket open or close, and packet reception of a specific protocol.
  • the controller 410 of the electronic device 101 may determine a socket event that has occurred in operation 1820 and may determine database-related information using a corresponding socket address in operation 1830 . As a result of determining the database-related information, the controller 410 of the electronic device 101 determines that the group filter needs to be updated in operation 1840 (operation 1840 - Yes), the controller 410 of the electronic device 101 performs operation 1850
  • the group filter may be updated by transferring the changed group information for each session to the filter 430 for group update.
  • event processing may end in operation 1860 . If it is determined in operation 1840 that the update of the group filter is not necessary (operation 1840 - NO), event processing may end in operation 1860 .
  • the database 420 may store an app management table, a group mapping table, and a session management table.
  • the app management table may be managed as follows.
  • the group definition method when adding app information to the app management table, is assigned according to predefined mapping information of an app and a group, allocated according to predefined meta-information and mapping information of a group, or as a default value. can be assigned.
  • the meta-information value of the app may be obtained from "Manifest" information of the operating formulation, meta-information of the app provided by the app market, or mapping information between the app and meta-information defined in advance.
  • the app management table may be managed in the form shown in ⁇ Table 1> below.
  • App name App/Service ID group com.samXX.app1 10340
  • the group mapping table may be managed in the form shown in Table 2 below.
  • mapping table of categories and groups may be managed in the form shown in Table 3 below.
  • the session management table may be managed in the form shown in Table 4 below.
  • Flow ID App/Service ID group protocol Srcip address 00001 10340 One TCP 192.168.0.1 00002 10340 One UDP 192.168.0.1 00003 10400 One VoIP 192.168.0.1 00004 10500 0 TCP 192.168.0.2
  • the session information may be generated when a first received packet or a first transmitted packet of a session that is not in the session management table occurs.
  • session information when the session does not communicate for more than a threshold time, when the socket of the session is closed, when an app/service of the session is deleted, when the interface of the session is deleted or changed, session information may be deleted.
  • the interface of the session when the group of apps/services of the session is changed, when the group for the protocol of the session is changed, when the controller changes the group of the session, the session information can be changed .
  • a group of new session information may be allocated as follows.
  • the session information may be referred to as a flow ID in Table 4 and may be generated based on connection information.
  • the session information hashes at least one of a source IP address, a source port, a destination IP address, a destination port, and an IP protocol. can be created by
  • the priority of a group application request in a session includes a predefined priority, a chronological order of the request (e.g., oldest order, newest order), any priorities, predefined priorities according to any combination of requests can do.
  • the method of updating the group of the session when the group applied to the session is released may apply the group of the next priority if it is applied according to the priority, apply it as the default group and initialize it, or among the overlapping groups Any group can be applied.
  • the CPU mapping table for each group may be represented as shown in ⁇ Table 5>
  • the merge level weight table for each group may be represented as shown in ⁇ Table 6> below
  • the session packet management table may be shown in ⁇ Table 7> >
  • the static policy table for each available core and group level can be represented as shown in ⁇ Table 8> below.
  • first action core mask second action core mask 0 0x01 (1000
  • QoS class Merge level weights 0 10 One One
  • the controller 410 may determine a group based on the MEC service information.
  • MEC mobile edge computing
  • the AP 120 may communicate with the MEC control server through at least one of an operating system, middleware, and service framework stored in the memory 130 , and the AP 120 is the MEC control server.
  • the MEC service information may include an MEC service application name, an MEC service full qualified domain name (FQDN), an MEC service IP address, whether a specified application is an MEC service, whether a specified IP address is an MEC service, or a specified FQDN. It may contain an IP address.
  • the controller 410 may check the MEC service information and manage it through the database 420 . The controller 410 may determine a group based on MEC service information stored in the database 420 .
  • the AP 120 of the electronic device 101 may check and update MEC service information through the MEC server in operation 2010 .
  • the controller 410 may confirm that the MEC service information is updated in operation 2020 and may update the MEC service related information in the database 420 .
  • the controller 410 may transmit group update information to the filter 430 of the CP 110 based on the MEC-related information stored in the database 420 in operation 2040 .
  • the MEC service app list as MEC service information received by the AP 120 from the MEC control server may be stored in the database 420 as shown in Table 9 below, and the MEC service information is It may be stored in the database 420 as shown in Table 10>.
  • the AP 120 may directly store the changed MEC information in the database 420 and transmit the change to the controller 410 .
  • the AP 120 may generate an event in the controller 410 so that the controller 410 can check the MEC information change in the database 420 .
  • the controller 410 may operate to periodically check the MEC information change in the database 420 .
  • the controller 410 may define an app and a group in the app management table based on meta information included in the MEC service app list.
  • the meta information may include category and specified group information.
  • a method of defining a group based on the meta information may be arbitrarily allocated or may be allocated based on predefined meta information and group mapping information.
  • the controller 410 when MEC information is deleted from the MEC service app list, the controller 410 performs a random allocation method, a default allocation method, and a method of applying a second priority group based on a priority in case of overlapping application. You can update app and group information in the app management table.
  • the controller 410 updates the session group based on the updated app management table, or based on the MEC service information received from the MEC control server, the session The group can be updated.
  • the app group is determined and the app management table is updated, and the session is updated in the session management table based on the updated app management table.
  • the session is updated in the session management table
  • the application 253 of the AP 120 of the electronic device 101 may receive a URSP policy (URSP rule) from the CP 110 .
  • the application 253 may interpret and manage the URSP policy received from the CP 110 .
  • the application 253 may allocate a socket of a specific app to a specific interface according to the URSP policy received from the CP 110 .
  • the interface allocation information may be provided to the controller 410 .
  • the controller 410 may store and manage the interface allocation information in the database 420 .
  • the controller 410 may generate group information for each session based on the interface allocation information stored in the database 420 and transmit it to the filter 430 of the CP 110 .
  • the AP 120 may receive a URSP rule from the CP 110 in operation 2210 .
  • the AP 120 may create an interface according to the URSP rule in operation 2220 .
  • the controller 410 may confirm the creation of the new interface in operation 2230 , and determine whether interface information update is required in the database 420 in operation 2240 . As a result of the determination in operation 2240, when it is determined that the update of interface information in the database is necessary (operation 2240 - Yes), the controller 410 may update the interface information in the database in operation 2250.
  • the controller 410 confirms that the interface information is updated in operation 2250 , and uses the interface update information stored in the database 420 in operation 2260 as the filter 430 of the CP 110 , based on the interface update information stored in the database 420 .
  • Group update information may be transmitted.
  • the group update information may be terminated without transmitting the group update information to the filter 430 of the CP 110 .
  • the controller 410 may monitor an interface change. For example, when an interface change command is commanded from the AP 120 , the command result may be transmitted to the controller 410 . As another embodiment, the controller 410 may operate to periodically check the status of the interface. According to various embodiments, the controller 410 checks whether there is a change in the interface list in the database 420 , or checks whether a predefined keyword is included in the interface name among the updated interfaces, or in the AP 120 . It is possible to determine whether the interface information needs to be updated by checking whether the updated interface name or IP is notified to the controller 410 or whether an interface assigned to a predefined IP is created or deleted.
  • the interface management table stored and managed in the database 420 may be configured as shown in Table 11 below.
  • the controller 410 may allocate a new group to an interface requiring update and an assigned IP, and store it in the database 420 as an interface management table as shown in Table 11 above.
  • the controller 410 may randomly allocate a group based on the interface, allocate a new group that is not previously defined, or allocate a group based on mapping information of a predefined interface and group. can For example, when a corresponding interface is used among existing sockets or an IP address is used as an address, the controller 410 may update the group of the corresponding socket with the group address of the corresponding interface.
  • the AP 120 may create a new interface in operation 2310 .
  • the controller 410 may confirm the creation of the new interface in operation 2320 , and determine whether the newly created interface is a URLLC-related interface in operation 2330 . If it is determined in operation 2330 that the newly created interface is a URLLC-related interface (operation 2330 - Yes), the controller 410 may update interface information in the database in operation 2340 .
  • the controller 410 confirms that the interface information is updated in operation 2340 , and uses the interface update information stored in the database 420 in operation 2350 as the filter 430 of the CP 110 .
  • Group update information may be transmitted.
  • the group update information may be terminated without transmitting the group update information to the filter 430 of the CP 110 .
  • the controller 410 may check whether the interface has been changed by transferring the command result to the controller 410 . As another method, the controller 410 may periodically check the interface status. The controller 410 may check whether a URLLC-related interface exists through whether a predefined keyword (eg, urllc, urllc-rmnet0) is included in the interface name. According to various embodiments, by notifying the controller 410 of the interface name or IP for URLLC from the AP 120 , the controller 410 may check whether the URLLC-related interface exists. According to various embodiments, the controller 410 may check whether the interface is URLLC related through whether it is an interface allocated to a predefined IP.
  • a predefined keyword eg, urllc, urllc-rmnet0
  • the controller 410 may allocate a new group ID to the URLLC interface and the assigned IP and store it in the database 420 .
  • the controller 410 may update the group of the corresponding socket with the group address of the corresponding interface.
  • a table to which a new group ID of the URLLC-related interface stored and managed in the database 420 is allocated may be configured as shown in Table 12 below.
  • the table of URLLC-related sockets stored in the database 420 may be updated from the following ⁇ Table 13> to the table of ⁇ Table 14>.
  • the first session, the second session, and the third session may be stored in the logical buffer 2 corresponding to the second group.
  • the data packet of the first session, the data packet of the second session, and the data packet of the third session may be assigned a fourth core 444 as a first operating core.
  • the data packet of the first session may be allocated to a second core 442 as a second operation core, and the data packet of the second session and the data packet of the third session may be allocated to the third core 443 as the second operation core. ) can be assigned.
  • the controller 410 may request the update of the additional group from the filter 430 of the CP 110 based on the packet throughput per hour of each session in the packet merging module 460 .
  • the CP 110 may generate logical buffer 3 as shown in FIG. 24B so that a data packet of a corresponding session (eg, a third session) is processed by a separate core. For example, as shown in FIG. 24B , the data packet of the first session and the data packet of the second session may be stored in the newly created logical buffer 3 .
  • the data packet of the third session may be stored in the existing logical buffer 2 as it is.
  • the third session stored in the logical buffer 2 may be assigned a third core 443 as a first working core and a second working core.
  • the data packet of the first session and the data packet of the second session may be assigned a fourth core 444 as the first operating core.
  • a data packet of the first session may be assigned a second core 442 as a second operating core, and a data packet of the second session may be assigned a first core 441 as a second operating core.
  • the controller 410 may start monitoring in operation 2510 .
  • the controller 410 may determine the number of packets in each reception logical buffer based on the meta information in operation 2520, and determine the number of sessions inserted into each reception logical buffer in operation 2530, and in operation 2540, the number of related sessions per hour Packet throughput can be determined.
  • the controller 410 may remove the corresponding session from the corresponding reception logical buffer filter and create a new group filter based on the information determined in operation 2550 .
  • the controller 410 may share QoS class information with the filter 430 of the CP 110 to create the new group.
  • the CP 110 may divide a write start point on a memory into a plurality and allocate data based on a plurality of offsets according to a filter.
  • the CP 110 transmits meta information (or meta data) together with a ring buffer to the AP 120 , and the AP 120 transmits the received data packets based on the transferred meta information to a plurality of data packets. It can map to working cores 441 , 442 , 443 , 444 .
  • the filter 430 may receive the data packet 401 of the A session, and store the received data packet 401 in a receiving buffer at a location next to the pre-stored data packet of the A session.
  • the filter 430 may receive the data packet 403 of the B session, and store the received data packet 403 in a position next to the previously stored data packet of the B session in a reception buffer.
  • the CP 110 may perform parallel processing of a plurality of software interrupts (bottom half) by utilizing one physical interrupt (top half).
  • the CP 110 may generate a flow ID (or a session ID) by utilizing the size and meta information of each received frame. For example, A 15 as shown in FIG. Meta information A and a frame size of 15 bytes can be represented.
  • the CP 110 may generate a flow ID based on meta information of a frame by utilizing separate hardware or internal resources of the CP.
  • the information utilized by the CP 110 is at least one of a source IP address, a source port, a destination IP address, a destination port, and an IP protocol. may contain one.
  • the CP 110 may generate a flow ID or a session ID in the same or similar method to the above-described method of generating a flow ID or a session ID in the AP 120 .
  • the CP 110 may determine the reception buffer by utilizing the flow ID and the group mapping information (or the session ID and the group mapping information) based on the flow ID of the received frame. Frames not in the table can be set to an arbitrary group or a predefined default group can be set.
  • the CP 110 may update the state of the buffer after locating the corresponding frame data in the determined position of the receiving buffer. For example, when the CP 110 places the received frame in the buffer, the number of packets inserted into the buffer and the number of inserted sessions may be updated.
  • the buffer memory information may be transmitted to the AP 120 as meta information.
  • the meta information may include at least one of a buffer number, a start position of a buffer, an end position of a buffer, the number of packets in the buffer, and the number of sessions in the buffer.
  • the CP 110 may initialize the buffer information.
  • FIG. 27A and 27B illustrate examples of data packet processing in an electronic device, according to various embodiments.
  • the stack processing for the second session may take a minimum of 270 ⁇ s and a maximum of 730 ⁇ s.
  • packet distribution and merging processing 2701 for the first session and packet distribution and merging processing 2702 for the second session are performed in CPU0 (eg, the first core) can be
  • the network stack processing 2703 for the first session may be performed by CPU1 (eg, the second core).
  • the network stack processing for the second session is processed after the network stack processing 2703 for the first session is completed in CPU1 as in 2704a, or is processed in parallel through CPU2 (eg, the third core) as in 2704b.
  • CPU2 e.g. the third core
  • the network stack processing for the second session is processed as in 2704a, it may take 730 ⁇ s, and when processed as in 2704b, it may take 270 ⁇ s.
  • the second session as shown in CPU0 2711 may be mapped to a separate core before packet merging processing.
  • a packet merging process 2701 may be performed in CPU0 and a network stack process 2703 may be performed in CPU1.
  • packet merging processing 2702 and network stack processing 2704c may be performed in CPU4.
  • the stack processing for the second session may take 60 ⁇ s.
  • the delay for packet processing can be reduced by the method of FIG. 27B.
  • FIG. 28A and 28B illustrate examples of data packet processing in an electronic device, according to various embodiments.
  • the stack processing for the second session may take 650 ⁇ s.
  • packet distribution and merging processing 2801 for the first session and packet distribution and merging processing 2802 for the second session are performed in CPU0 (eg, the first core) can be
  • the network stack processing 2803a , 2803b , and 2803c for the first session may be distributed in CPU1 , CPU2 , and CPU3 .
  • the network stack processing for the second session may be processed after the network stack processing 2803a, 2803b, and 2803c for the first session is completed in each CPU as in 2804a, 2804b, and 2804c.
  • the network stack processing for the second session is processed as in 2804a, 2804b, and 2804c, it may take 650 ⁇ s.
  • the second session in CPU0 may be mapped to a separate core before packet merging processing.
  • packet merging processing 2801 is performed in CPU0
  • network stack processing 2803a, 2803b, 2803c is performed in parallel in CPU1, CPU2, and CPU3.
  • packet merging processing 2802 and network stack processing 2804d may be performed in CPU4.
  • the stack processing for the second session may take 60 ⁇ s.
  • the delay for packet processing can be reduced by the method of FIG. 28B.
  • 29A and 29B illustrate examples of data packet processing in an electronic device, according to various embodiments.
  • the processing of a session with a lower priority may be delayed.
  • the buffer processing 2901 of the first priority data is completed
  • the buffer processing 2902 of the second priority data is completed
  • the buffer of the third priority data Process 2903 may be completed.
  • the first priority data, the second priority data, and the third priority data may be mapped to separate cores as shown in CPU0 to 2910 .
  • the buffer processing 2901 of the first priority data, the buffer processing 2902 of the second priority data, and the buffer processing 2903 of the third priority data may be processed in parallel in CPU1, CPU2, and CPU3, respectively.
  • the CP 110 may receive data.
  • the filter 430 of the CP 110 may insert data into a basic logical queue (logical buffer) in operation 3030 .
  • the filter 430 of the CP 110 transmits data to a logical queue (logical buffer) number designated based on the filter in operation 3040. can be inserted.
  • the CP 110 may receive updated filter information from the AP 120 in operation 3110 . If it is determined in operation 3120 that a filter to be updated exists (operation 3120 - Yes), in operation 3130 , it may be checked whether the current queue is empty. If it is determined in operation 3130 that the current queue is empty (operation 3130 - Yes), the CP 110 may update the filter in operation 3140 and process data based on the current filter in operation 3150 . If it is determined in operation 3120 that the filter to be updated does not exist (operation 3120 - NO), data may be processed based on the current filter in operation 3150 . If it is determined in operation 3130 that the current queue is not empty (operation 3130 - NO), data may be processed based on the current filter in operation 3150 .
  • the controller 410 may start updating the filter in operation 3210 . If it is determined in operation 3220 that the number of types of groups has changed (operation 3220 - Yes), the controller 410 may update the logical queue information with each logical queue start address per predefined number of groups in operation 3230 . In operation 3240 , the controller 410 may request the CP 110 to update filter information, and in operation 3250 , the filter information update may end. If it is determined in operation 3220 that the number of types of groups has not changed (operation 3220 - NO), the controller 410 may request filter information update from the CP 110 without updating logical queue information in operation 3240 .
  • the AP 120 may start an AP interrupt map engine (mapping module) handler in operation 3310 .
  • the AP 120 may inquire meta data in operation 3320 and determine whether the number of logical queues for each group is different from the previous one in operation 3330 . If it is determined in operation 3330 that the number of logical queues per group is not different from the previous one (operation 3330 - NO), the AP 120 may transmit a logical queue number change event to the controller 410 in operation 3340 .
  • the AP 120 performs the first operation core for each group of the database 42 through the controller 410 in operation 3350. can be viewed.
  • the AP 120 may map a logical queue for each group to a first operation core for each group in operation 3360 and activate each mapped first operation core in operation 3370 .
  • the AP interrupt handler may be terminated.
  • the filter structure may be configured as shown in ⁇ Table 15>, and the logical queue (receive buffer) may be configured as shown in ⁇ Table 16> and ⁇ Table 17> below.
  • the reception buffer size may be determined by the CP 110 or the AP 120 .
  • the CP 110 may determine the size of the buffer according to the internal policy.
  • the CP 110 may determine the size of the buffer according to a predefined policy or a policy received from the AP 120 .
  • Each policy referenced by the CP 110 may include statistics for each buffer of the CP, the number of frames inserted into each buffer during the critical time, and the total number of frames received during the critical time.
  • the AP 120 may determine the size of the buffer using the interface of the CP 110 according to each policy. For example, the AP 120 may utilize the number of frames inserted into each buffer during the threshold time or the total number of frames received during the threshold time as statistics for each buffer of the CP 110 , and may be received during the threshold time as statistics and information for each session.
  • the number of received packets per buffer or the size of the buffer assigned to the category and category of the app can be referred to.
  • the predefined policy may include a fixed size, the same ratio to the total size, and a defined size or ratio for each group.
  • the size is an absolute size, a relative It may include a size (ratio), a relative ratio to an absolute size, an absolute number of buffers, a relative number of buffers, and a relative ratio to the total number.
  • FIG. 34 illustrates an example of data packet processing in an electronic device, according to various embodiments.
  • the above-described embodiments may be implemented by creating reception buffers 491 and 192 in the AP 120 .
  • At least one reception buffer may be generated in the memory of the AP 120 .
  • the AP 120 may classify and store the frame (or data packet) transmitted from the CP 110 in the reception buffers 491 and 492 in the AP 120 in response to the filter received from the controller 410 .
  • the form of the frame is similar to the case where the CP 110 processes received data according to the platform implemented in the AP 120 to receive the frame (or data packet) from the CP 110 , the kernel receives the packet.
  • a structure for management eg, sk_buff in the case of the Linux kernel
  • the configuration replacing the above-described CP 110 in the AP 120 in the above-described embodiments is implemented as a program operating in at least one of a driver of a kernel or a packet processing platform or a filter engine. can be
  • the AP 120 and the CP 110 are described separately as separate components, but the limitation is that the AP 120 and the CP 110 are configured as separate chips. it is not
  • the AP 120 and the CP 110 may be configured as separate chips, or may be configured to include an application processor and a communication processor within one chip.
  • the controller 410 may be included in the AP 120 , or may be included in a hardware configuration separate from the AP 120 .
  • the controller 410 may be stored in the form of the program 140 of FIGS.
  • the operating system 142 eg, Android TM , Linux TM , iOS TM , Windows TM , Symbian TM ). , Tizen TM , or Bada TM
  • the middleware 144 may be implemented in the form of any one of the middleware 144 , or the application 146 .
  • 35 is a block diagram 3500 illustrating a program 140 in accordance with various embodiments.
  • the program 140 executes an operating system 142 , middleware 144 , or an application 146 executable in the operating system 142 for controlling one or more resources of the electronic device 101 .
  • may include Operating system 142 may include, for example, Android TM , iOS TM , Windows TM , Symbian TM , Tizen TM , or Bada TM .
  • At least some of the programs 140 are, for example, preloaded into the electronic device 101 at the time of manufacture, or an external electronic device (eg, the electronic device 102 or 104 ), or a server (eg, the electronic device 102 or 104 ) when used by a user. 108)), or may be updated.
  • the operating system 142 may control management (eg, allocation or retrieval) of one or more system resources (eg, a process, memory, or power) of the electronic device 101 .
  • the operating system 142 may additionally or alternatively include other hardware devices of the electronic device 101 , for example, the input module 150 , the sound output module 155 , the display module 160 , and the audio module 170 . , sensor module 176 , interface 177 , haptic module 179 , camera module 180 , power management module 188 , battery 189 , communication module 190 , subscriber identification module 196 , or It may include one or more driver programs for driving the antenna module 197 .
  • the middleware 144 may provide various functions to the application 146 so that functions or information provided from one or more resources of the electronic device 101 may be used by the application 146 .
  • the middleware 144 includes, for example, an application manager 3501 , a window manager 3503 , a multimedia manager 3505 , a resource manager 3507 , a power manager 3509 , a database manager 3511 , and a package manager 3513 . ), connectivity manager 3515 , notification manager 3517 , location manager 3519 , graphics manager 3521 , security manager 3523 , call manager 3525 , or voice recognition manager 3527 . can
  • the application manager 3501 may manage the life cycle of the application 146 , for example.
  • the window manager 3503 may manage one or more GUI resources used in a screen, for example.
  • the multimedia manager 3505, for example, identifies one or more formats required for playback of media files, and encodes or decodes a corresponding media file among the media files using a codec suitable for the selected format. can be done
  • the resource manager 3507 may manage the space of the source code of the application 146 or the memory of the memory 130 , for example.
  • the power manager 3509 may, for example, manage the capacity, temperature, or power of the battery 189 , and use the corresponding information to determine or provide related information required for the operation of the electronic device 101 . . According to an embodiment, the power manager 3509 may interwork with a basic input/output system (BIOS) (not shown) of the electronic device 101 .
  • BIOS basic input/output system
  • the database manager 3511 may create, retrieve, or change a database to be used by the application 146 , for example.
  • the package manager 3513 may manage installation or update of an application distributed in the form of a package file, for example.
  • the connectivity manager 3515 may manage, for example, a wireless connection or a direct connection between the electronic device 101 and an external electronic device.
  • the notification manager 3517 may provide, for example, a function for notifying the user of the occurrence of a specified event (eg, an incoming call, a message, or an alarm).
  • the location manager 3519 may manage location information of the electronic device 101 , for example.
  • the graphic manager 3521 may manage, for example, one or more graphic effects to be provided to a user or a user interface related thereto.
  • Security manager 3523 may provide, for example, system security or user authentication.
  • the telephony manager 3525 may manage, for example, a voice call function or a video call function provided by the electronic device 101 .
  • the voice recognition manager 3527 for example, transmits the user's voice data to the server 108, and based at least in part on the voice data, a command corresponding to a function to be performed in the electronic device 101; Alternatively, the converted text data may be received from the server 108 based at least in part on the voice data.
  • the middleware 3544 may dynamically delete some existing components or add new components.
  • at least a portion of the middleware 144 may be included as a part of the operating system 142 or implemented as software separate from the operating system 142 .
  • Application 146 includes, for example, home 3551 , dialer 3553 , SMS/MMS 3555 , instant message (IM) 3557 , browser 3559 , camera 3561 , alarm 3563 . , Contacts 3565, Voice Recognition 3567, Email 3569, Calendar 3571, Media Player 3573, Album 3575, Watch 3577, Health 3579 (such as exercise or blood sugar) measuring biometric information) or environment information 3581 (eg, measuring atmospheric pressure, humidity, or temperature information). According to an embodiment, the application 146 may further include an information exchange application (not shown) capable of supporting information exchange between the electronic device 101 and an external electronic device.
  • an information exchange application not shown
  • the information exchange application may include, for example, a notification relay application configured to transmit specified information (eg, call, message, or alarm) to an external electronic device, or a device management application configured to manage the external electronic device.
  • the notification relay application for example, transmits notification information corresponding to a specified event (eg, mail reception) generated in another application (eg, email application 3569) of the electronic device 101 to the external electronic device.
  • the notification relay application may receive notification information from the external electronic device and provide it to the user of the electronic device 101 .
  • the device management application is, for example, a power supply (eg, turn-on or turn-off) of an external electronic device or some component thereof (eg, a display module or a camera module of the external electronic device) that communicates with the electronic device 101 . ) or a function (eg brightness, resolution, or focus).
  • the device management application may additionally or alternatively support installation, deletion, or update of an application operating in an external electronic device.
  • the electronic device includes an application processor including a plurality of cores and a communication processor electrically connected to the application processor, wherein the application processor includes at least one A session is set to correspond to at least one core among the plurality of cores based on quality of service (QoS), and information corresponding to a first core configured for a first session among the at least one session is transmitted to the communication processor transmits to, receives the data packet of the first session from the communication processor, and based on information corresponding to the first core, transmits the data packet of the received first session to the first session established for the first session It can be processed through 1 core.
  • QoS quality of service
  • the first session may be a session related to ultra reliable low latency communication (URLLC), and the first core may be a core having a relatively faster processing speed among the plurality of cores.
  • URLLC ultra reliable low latency communication
  • the communication processor receives information corresponding to the first core from the application processor, and allocates a logical buffer corresponding to the first core based on the information corresponding to the first core and, upon receiving the data packet of the first session from the external electronic device, the received data packet of the first session may be stored in a logical buffer allocated to the first core.
  • the information corresponding to the first core may correspond to first group information set by grouping at least one session.
  • the application processor distributes the data packet received from the communication processor to each core of the plurality of cores, and for the data packet distributed to each core, for each session of the received data packet You can control to apply the packet aggregation policy.
  • the application processor may control the first core to perform packet merging processing for the first session, and control the first core to perform network packet processing for the first session.
  • the application processor controls the first core to perform packet aggregation processing for the first session, and processes network packets in a second core different from the first core for the first session can be controlled to perform
  • the application processor receives meta information from the communication processor, and based on the received meta information, transmits the data packet of the first session received from the communication processor through the first core. You can control the processing.
  • the electronic device includes an application processor including a plurality of cores and a communication processor electrically connected to the application processor, wherein the application processor includes at least one Set a session to correspond to at least one of a plurality of cores included in an application processor based on quality of service (QoS), and receive a data packet of a first session among the at least one session from the communication processor; , store the received data packet of the first session in a buffer allocated for a first core set corresponding to the first session among the plurality of cores, and store the data packet of the first session stored in the buffer in the first session It can be processed through 1 core.
  • QoS quality of service
  • the application processor may apply a packet aggregation policy to the data packet of the first session through the first core.
  • the first session may be a session related to ultra reliable low latency communication (URLLC), and the first core may be a core having a relatively faster processing speed among the plurality of cores.
  • URLLC ultra reliable low latency communication
  • At least one session related to each application is provided to an application processor based on quality of service (QoS).
  • QoS quality of service
  • an operation of setting to correspond to at least one core among a plurality of included cores an operation of transmitting information corresponding to a first core configured for a first session among the at least one session from the application processor to the communication processor; receiving the data packet of the first session from the communication processor in the application processor, and setting the received data packet of the first session for the first session based on information corresponding to the first core It may include an operation of processing through the first core.
  • the first session may be a session related to ultra reliable low latency communication (URLLC), and the first core may be a core having a relatively faster processing speed among the plurality of cores.
  • URLLC ultra reliable low latency communication
  • the method includes receiving information corresponding to the first core from the application processor and allocating a logical buffer corresponding to the first core based on the information corresponding to the first core and, upon receiving the data packet of the first session from the external electronic device, storing the received data packet of the first session in a logical buffer allocated to the first core.
  • the information corresponding to the first core may correspond to first group information set by grouping at least one session.
  • the method includes distributing a data packet received from the communication processor for each core of the plurality of cores, and each session of the received data packet with respect to the data packet distributed for each core. It may include an operation of controlling to apply the packet aggregation policy for each.
  • the method includes controlling the first core to perform packet merging processing for the first session, and controlling the first core to perform network packet processing for the first session It may include an action to
  • the method includes controlling to perform packet merging processing in the first core for the first session, and a network packet in a second core different from the first core for the first session It may include an operation to control the processing to be performed.
  • the method includes: receiving, in the application processor, meta information from the communication processor; and, based on the received meta information, converting the data packet of the first session received from the communication processor to the It may include an operation of processing through the first core.
  • At least one session related to each application is provided to an application processor based on quality of service (QoS). setting to correspond to at least one core among a plurality of included cores, receiving, in the application processor, a data packet of a first session of the at least one session from a communication processor, of the received first session Storing a data packet in a buffer allocated for a first core set corresponding to the first session among the plurality of cores, and processing the data packet of the first session stored in the buffer through the first core It can include actions.
  • QoS quality of service
  • the method may include applying a packet aggregation policy to the data packet of the first session through the first core.
  • the first session may be a session related to ultra reliable low latency communication (URLLC), and the first core may be a core having a relatively faster processing speed among the plurality of cores.
  • URLLC ultra reliable low latency communication
  • the processing chip includes an application processor including a plurality of cores, and a communication processor electrically connected to the application processor in the processing chip, wherein the application processor comprises: set to correspond to at least one core among the plurality of cores based on quality of service (QoS), and corresponding to a first core configured for a first session among the at least one session transmit information to the communication processor, receive a data packet of the first session from the communication processor, and convert the received data packet of the first session to the first session based on information corresponding to the first core It can be processed through the first core set for .
  • QoS quality of service
  • the electronic device may have various types of devices.
  • the electronic device may include, for example, a computer device, a portable communication device (eg, a smart phone), a portable multimedia device, a portable medical device, a camera, a wearable device, or a home appliance device.
  • a portable communication device eg, a smart phone
  • portable multimedia device e.g., a portable medical device
  • portable medical device e.g., a portable medical device
  • camera e.g., a camera
  • a wearable device e.g., a smart phone
  • first”, “second”, or “first” or “second” may simply be used to distinguish the component from other such components, and refer to those components in other aspects (e.g., importance or order) is not limited. that one (e.g., first) component is “coupled” or “connected” to another (e.g., second) component with or without the terms “functionally” or “communicatively” When referenced, it means that one component can be connected to the other component directly (eg by wire), wirelessly, or through a third component.
  • module may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with terms such as, for example, logic, logic block, component, or circuit.
  • a module may be an integrally formed part or a minimum unit or a part of the part that performs one or more functions.
  • the module may be implemented in the form of an application-specific integrated circuit (ASIC).
  • ASIC application-specific integrated circuit
  • Various embodiments of the present document include software (eg, one or more instructions stored in a storage medium (eg, internal memory or external memory) readable by a machine (eg, a master device or a task performing device)) For example, it can be implemented as a program).
  • a processor of a device eg, a master device or a task performing device
  • the one or more instructions may include code generated by a compiler or code executable by an interpreter.
  • the device-readable storage medium may be provided in the form of a non-transitory storage medium.
  • 'non-transitory' only means that the storage medium is a tangible device and does not contain a signal (eg, electromagnetic wave), and this term is used in cases where data is semi-permanently stored in the storage medium and It does not distinguish between temporary storage cases.
  • a signal eg, electromagnetic wave
  • the method according to various embodiments disclosed in this document may be provided in a computer program product (computer program product).
  • Computer program products may be traded between sellers and buyers as commodities.
  • the computer program product is distributed in the form of a machine-readable storage medium (eg compact disc read only memory (CD-ROM)), or through an application store (eg Play Store TM ) or on two user devices ( It can be distributed (eg downloaded or uploaded) directly, online between smartphones (eg: smartphones).
  • a portion of the computer program product may be temporarily stored or temporarily created in a machine-readable storage medium such as a memory of a server of a manufacturer, a server of an application store, or a relay server.
  • each component eg, a module or a program of the above-described components may include a singular or a plurality of entities.
  • one or more components or operations among the above-described corresponding components may be omitted, or one or more other components or operations may be added.
  • a plurality of components eg, a module or a program
  • the integrated component may perform one or more functions of each component of the plurality of components identically or similarly to those performed by the corresponding component among the plurality of components prior to the integration. .
  • operations performed by a module, program, or other component are executed sequentially, in parallel, repeatedly, or heuristically, or one or more of the operations are executed in a different order, or omitted. , or one or more other operations may be added.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

다양한 실시예에 따라서, 전자 장치는, 복수의 코어(core)들을 포함하는 어플리케이션 프로세서, 및 상기 어플리케이션 프로세서와 전기적으로 연결된 통신 프로세서를 포함하고, 상기 어플리케이션 프로세서는, 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 상기 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하고, 상기 적어도 하나의 세션 중 제1 세션에 대해 설정된 제1 코어에 대응하는 정보를 상기 통신 프로세서로 전송하고, 상기 통신 프로세서로부터 상기 제1 세션의 데이터 패킷을 수신하고, 상기 제1 코어에 대응하는 정보에 기반하여, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 세션에 대해 설정된 상기 제1 코어를 통해 처리할 수 있다. 그 밖의 다양한 실시예가 가능하다.

Description

전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
본 개시의 다양한 실시예는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하기 위한 방법에 관한 것이다.
이동통신 기술의 발전으로 다양한 기능을 제공하는 휴대 단말기의 사용이 보편화됨에 따라, 증가 추세에 있는 무선 데이터 트래픽 수요를 충족시키기 위해 5G 통신 시스템이 서비스되고 있다. 5G 통신 시스템은 높은 데이터 전송률을 달성하기 위해, 보다 빠른 데이터 전송 속도를 제공할 수 있도록, 3G 통신 시스템과 LTE(long term evolution) 통신 시스템에서 사용하던 주파수 대역에 추가하여, 더 높은 주파수 대역(예를 들어, 6~60GHz 대역)에서의 구현이 고려되고 있다.
예컨대, 5G 통신 방식의 전자 장치에서는 서비스 또는 어플리케이션의 특성에 따라 IMS(IP multimedia subsystem) PDU(protocol data unit) 세션, eMBB(enhanced mobile broadband, 초광대역) PDU 세션, URLLC(utra-reliable and low latency communication, 초저지연) PDU 세션, mMTC(massive machine-type communications, 초연결) PDU 세션, LADN(local area data network) PDU 세션을 포함하는 다양한 유형의 PDU 세션들을 운용할 수 있다. 예를 들어, eMBB PDU 세션의 경우 높은 전송 속도(throughput)를 요구하는 서비스 또는 어플리케이션에서 사용할 수 있는 방식이며, URLLC PDU 세션의 경우 저 지연(low-latency)이 필요한 서비스 또는 어플리케이션에서 사용할 수 있다.
각 서비스 또는 어플리케이션에 따라 전자 장치에서 수신되는 데이터는 통신 프로세서를 통해 어플리케이션 프로세서에서 패킷(packet)의 형태로 전달될 수 있다. 통신 프로세서는 상기 패킷을 버퍼(buffer)에 저장한 후, 수신된 순서에 따라 순차적으로 어플리케이션 프로세서에 전달할 수 있다. 어플리케이션 프로세서는 통신 프로세서로부터 수신된 복수의 패킷들을 패킷 병합 모듈을 통해 병합한 후 상위 계층으로 전달할 수 있다.
어플리케이션 프로세서가 복수의 코어(core)들을 포함하는 경우, 어플리케이션 프로세서는 수신된 패킷들을 복수의 코어들로 분산하여 병렬적으로 처리할 수 있다. 예컨대, 상기 어플리케이션 프로세서의 복수의 코어들 중 어느 하나의 코어(예: 제어 코어)는 통신 프로세서로부터 수신된 복수의 패킷들을 상기 복수의 코어들 중 어느 하나의 코어로 분배할 수 있다.
상기 통신 프로세서에서 QoS(quality of service)가 서로 상이한 복수의 세션들에 대한 패킷들을 수신하는 경우, 상기 어플리케이션 프로세서의 제어 코어에서는 상기 통신 프로세서로부터 수신된 순서에 따라 패킷들을 병합 처리함에 따라 저지연 서비스의 패킷(예컨대, URLLC 데이터)이 대량의 일반 패킷들에 의해 지연 처리되어 저지연 서비스를 제공하지 못할 수 있다.
다양한 실시예에서는, 어플리케이션 프로세서가 어플리케이션 또는 서비스의 특성(예컨대, QoS)에 기반한 그룹 정보를 통신 프로세서와 공유하고, 통신 프로세서로부터 수신된 패킷을 복수의 코어들 중 상기 그룹 정보에 따라 매핑된 해당 코어를 통해 처리하도록 함으로써 패킷 처리에 따른 지연 시간을 줄일 수 있는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법을 제공할 수 있다.
다양한 실시예에서는, 어플리케이션 또는 서비스의 특성(예컨대, QoS)에 기반한 그룹 정보를 복수의 코어들의 각 코어에 매핑하도록 설정하고, 통신 프로세서로부터 수신된 패킷을 상기 그룹 정보에 따라 매핑된 해당 코어를 통해 처리하도록 함으로써 패킷 처리에 따른 지연 시간을 줄일 수 있는 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법을 제공할 수 있다.
다양한 실시예에 따라서, 전자 장치는, 복수의 코어(core)들을 포함하는 어플리케이션 프로세서, 및 상기 어플리케이션 프로세서와 전기적으로 연결된 통신 프로세서를 포함하고, 상기 어플리케이션 프로세서는, 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 상기 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하고, 상기 적어도 하나의 세션 중 제1 세션에 대해 설정된 제1 코어에 대응하는 정보를 상기 통신 프로세서로 전송하고, 상기 통신 프로세서로부터 상기 제1 세션의 데이터 패킷을 수신하고, 상기 제1 코어에 대응하는 정보에 기반하여, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 세션에 대해 설정된 상기 제1 코어를 통해 처리할 수 있다.
다양한 실시예에 따라서, 전자 장치는, 복수의 코어(core)들을 포함하는 어플리케이션 프로세서, 및 상기 어플리케이션 프로세서와 전기적으로 연결된 통신 프로세서를 포함하고, 상기 어플리케이션 프로세서는, 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 상기 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하고, 상기 통신 프로세서로부터 상기 적어도 하나의 세션 중 제1 세션의 데이터 패킷을 수신하고, 상기 수신된 제1 세션의 데이터 패킷을 상기 복수의 코어들 중 상기 제1 세션에 대응하여 설정된 제1 코어를 위해 할당된 논리 버퍼에 저장하고, 상기 논리 버퍼에 저장된 제1 세션의 데이터 패킷을 상기 제1 코어를 통해 처리할 수 있다.
다양한 실시예에 따라서, 전자 장치에서 수신된 데이터 패킷을 처리하는 방법은, 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 어플리케이션 프로세서에 포함된 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하는 동작, 상기 적어도 하나의 세션 중 제1 세션에 대해 설정된 제1 코어에 대응하는 정보를 상기 어플리케이션 프로세서에서 통신 프로세서로 전송하는 동작, 상기 어플리케이션 프로세서에서 상기 통신 프로세서로부터 상기 제1 세션의 데이터 패킷을 수신하는 동작, 상기 제1 코어에 대응하는 정보에 기반하여, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 세션에 대해 설정된 상기 제1 코어를 통해 처리하는 동작을 포함할 수 있다.
다양한 실시예에 따라서, 전자 장치에서 수신된 데이터 패킷을 처리하는 방법은, 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 어플리케이션 프로세서에 포함된 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하는 동작, 상기 어플리케이션 프로세서에서, 통신 프로세서로부터 상기 적어도 하나의 세션 중 제1 세션의 데이터 패킷을 수신하는 동작, 상기 수신된 제1 세션의 데이터 패킷을 상기 복수의 코어들 중 상기 제1 세션에 대응하여 설정된 제1 코어를 위해 할당된 버퍼에 저장하는 동작, 상기 버퍼에 저장된 상기 제1 세션의 데이터 패킷을 상기 제1 코어를 통해 처리하는 동작을 포함할 수 있다.
본 발명의 다양한 실시예들에 따른 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법은, 다양한 실시예에서는, 어플리케이션 프로세서가 어플리케이션 또는 서비스의 특성(예컨대, QoS)에 기반한 그룹 정보를 통신 프로세서와 공유하고, 통신 프로세서로부터 수신된 데이터 패킷을 상기 그룹 정보에 따라 복수의 코어에 매핑하여 처리하도록 함으로써 패킷 처리에 따른 지연 시간을 줄일 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 다양한 실시예들에 따른, 네트워크 환경 내의 전자 장치의 블록도이다.
도 2는 다양한 실시예들에 따른, 데이터 패킷의 처리를 위한 계층적 구성을 도시한다.
도 3은 다양한 실시예들에 따른, 전자 장치와 서버 간의 전송 지연을 나타내는 도면이다.
도 4는 다양한 실시예들에 따른, 전자 장치에서의 RSS 방식에 의한 데이터 패킷 처리의 예를 도시한다.
도 5는 다양한 실시예들에 따른, 전자 장치에서의 RPS 방식에 의한 데이터 패킷 처리의 예를 도시한다.
도 6은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 7은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 8은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 9a는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 9b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 10a는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 10b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 11a는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 11b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 12는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 13은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 14는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 15는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 16은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 17은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 18은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 19는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 20은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 21은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 22는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 23은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 24a는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 24b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 25는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 26은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 27a는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 27b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 28a는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 28b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 29a는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 29b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 30은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 31은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 32는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 33은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다.
도 34는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다.
도 35는 다양한 실시예에 따른 프로그램을 예시하는 블록도이다.
도 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), 연결 단자(178), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 연결 단자(178))가 생략되거나, 하나 이상의 다른 구성요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들(예: 센서 모듈(176), 카메라 모듈(180), 또는 안테나 모듈(197))은 하나의 구성요소(예: 디스플레이 모듈(160))로 통합될 수 있다.
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 저장하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서) 또는 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 신경망 처리 장치(NPU: neural processing unit), 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 예를 들어, 전자 장치(101)가 메인 프로세서(121) 및 보조 프로세서(123)를 포함하는 경우, 보조 프로세서(123)는 메인 프로세서(121)보다 저전력을 사용하거나, 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 디스플레이 모듈(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다. 일실시예에 따르면, 보조 프로세서(123)(예: 신경망 처리 장치)는 인공지능 모델의 처리에 특화된 하드웨어 구조를 포함할 수 있다. 인공지능 모델은 기계 학습을 통해 생성될 수 있다. 이러한 학습은, 예를 들어, 인공지능이 수행되는 전자 장치(101) 자체에서 수행될 수 있고, 별도의 서버(예: 서버(108))를 통해 수행될 수도 있다. 학습 알고리즘은, 예를 들어, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)을 포함할 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은, 복수의 인공 신경망 레이어들을 포함할 수 있다. 인공 신경망은 심층 신경망(DNN: deep neural network), CNN(convolutional neural network), RNN(recurrent neural network), RBM(restricted boltzmann machine), DBN(deep belief network), BRDNN(bidirectional recurrent deep neural network), 심층 Q-네트워크(deep Q-networks) 또는 상기 중 둘 이상의 조합 중 하나일 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은 하드웨어 구조 이외에, 추가적으로 또는 대체적으로, 소프트웨어 구조를 포함할 수 있다.
메모리(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)은 터치를 감지하도록 설정된 터치 센서, 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 압력 센서를 포함할 수 있다.
오디오 모듈(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)에 공급되는 전력을 관리할 수 있다. 일실시예에 따르면, 전력 관리 모듈(188)은, 예를 들면, 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(wireless fidelity) direct 또는 IrDA(infrared data association)와 같은 근거리 통신 네트워크) 또는 제2 네트워크(199)(예: 레거시 셀룰러 네트워크, 5G 네트워크, 차세대 통신 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부의 전자 장치(104)와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성요소(예: 단일 칩)로 통합되거나, 또는 서로 별도의 복수의 구성요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 또는 인증할 수 있다.
무선 통신 모듈(192)은 4G 네트워크 이후의 5G 네트워크 및 차세대 통신 기술, 예를 들어, NR 접속 기술(new radio access technology)을 지원할 수 있다. NR 접속 기술은 고용량 데이터의 고속 전송(eMBB(enhanced mobile broadband)), 단말 전력 최소화와 다수 단말의 접속(mMTC(massive machine type communications)), 또는 고신뢰도와 저지연(URLLC(ultra-reliable and low-latency communications))을 지원할 수 있다. 무선 통신 모듈(192)은, 예를 들어, 높은 데이터 전송률 달성을 위해, 고주파 대역(예: mmWave 대역)을 지원할 수 있다. 무선 통신 모듈(192)은 고주파 대역에서의 성능 확보를 위한 다양한 기술들, 예를 들어, 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO(multiple-input and multiple-output)), 전차원 다중입출력(FD-MIMO: full dimensional MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 또는 대규모 안테나(large scale antenna)와 같은 기술들을 지원할 수 있다. 무선 통신 모듈(192)은 전자 장치(101), 외부 전자 장치(예: 전자 장치(104)) 또는 네트워크 시스템(예: 제2 네트워크(199))에 규정되는 다양한 요구사항을 지원할 수 있다. 일실시예에 따르면, 무선 통신 모듈(192)은 eMBB 실현을 위한 Peak data rate(예: 20Gbps 이상), mMTC 실현을 위한 손실 Coverage(예: 164dB 이하), 또는 URLLC 실현을 위한 U-plane latency(예: 다운링크(DL) 및 업링크(UL) 각각 0.5ms 이하, 또는 라운드 트립 1ms 이하)를 지원할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부의 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일실시예에 따르면, 안테나 모듈(197)은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 안테나를 포함할 수 있다. 일실시예에 따르면, 안테나 모듈(197)은 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다. 이런 경우, 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부의 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC(radio frequency integrated circuit))이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
다양한 실시예에 따르면, 안테나 모듈(197)은 mmWave 안테나 모듈을 형성할 수 있다. 일실시예에 따르면, mmWave 안테나 모듈은 인쇄 회로 기판, 상기 인쇄 회로 기판의 제1 면(예: 아래 면)에 또는 그에 인접하여 배치되고 지정된 고주파 대역(예: mmWave 대역)을 지원할 수 있는 RFIC, 및 상기 인쇄 회로 기판의 제2 면(예: 윗 면 또는 측 면)에 또는 그에 인접하여 배치되고 상기 지정된 고주파 대역의 신호를 송신 또는 수신할 수 있는 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, 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, 또는 108) 중 하나 이상의 외부의 전자 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부의 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부의 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 모바일 에지 컴퓨팅(MEC: mobile edge computing), 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다. 전자 장치(101)는, 예를 들어, 분산 컴퓨팅 또는 모바일 에지 컴퓨팅을 이용하여 초저지연 서비스를 제공할 수 있다. 다른 실시예에 있어서, 외부의 전자 장치(104)는 IoT(internet of things) 기기를 포함할 수 있다. 서버(108)는 기계 학습 및/또는 신경망을 이용한 지능형 서버일 수 있다. 일실시예에 따르면, 외부의 전자 장치(104) 또는 서버(108)는 제2 네트워크(199) 내에 포함될 수 있다. 전자 장치(101)는 5G 통신 기술 및 IoT 관련 기술을 기반으로 지능형 서비스(예: 스마트 홈, 스마트 시티, 스마트 카, 또는 헬스 케어)에 적용될 수 있다.
도 2는 다양한 실시예들에 따른, 데이터 패킷 처리를 위한 계층적 구성을 도시한다.
도 2를 참고하면, 다양한 실시예에 따른 전자 장치(예: 도 1의 전자 장치(101))는 데이터 패킷(이하, 설명의 편의상 '패킷'이라고 한다.)을 송신 또는 수신하기 위한 디바이스 영역(210), 커널 영역(230), 및 사용자 영역(250)을 포함할 수 있다. 디바이스 영역(210)에서의 동작들은 통신 프로세서(communication processor; CP)(예: 도 1의 보조 프로세서(123)) 또는 통신 모듈(예컨대, 도 1의 통신 모듈(190))에 의해 실행될 수 있다. 커널 영역(230) 및 사용자 영역(250)은 프로그램(140)의 적어도 일부에 포함된 메모리 주소 공간(memory address space)에 대응할 수 있다. 커널 영역(230) 및 사용자 영역(250)에서의 동작들은 프로세서(예: 도 1의 프로세서(120))(예: 어플리케이션 프로세서(application processor; AP))에 의해 실행될 수 있다. 프로세서(120)는 소프트웨어(200)(예: 도 1의 프로그램(140))의 실행을 통해 커널 영역(230) 및 사용자 영역(250)에서의 동작들(또는, 기능들)을 수행할 수 있다. 상기 동작들과 관련된 명령어들(또는, 인스트럭션들(instructions))은 메모리(예: 도 1의 메모리(130))에 저장될 수 있다.
다양한 실시예들에 따르면, 디바이스 영역(210)은, 패킷을 송신 또는 수신하기 위한 하드웨어 장치의 동작을 제공할 수 있다. 디바이스 영역(210)은 네트워크 연결 장치(211)(예: 네트워크 인터페이스 컨트롤러(network interface controller; NIC) 또는 모뎀(modem))를 포함할 수 있다. 네트워크 연결 장치(211)는 전자 장치(101)가 네트워크를 통해 전달하고자 하는 패킷을 신호 또는 비트열로 변환하여 물리적으로 송신 또는 수신하기 위한 하드웨어 장치일 수 있다. 패킷은 송신단(또는, 송신측 전자 장치)이 수신단(또는, 수신측 전자 장치)에게 전달하고자 하는 데이터 패킷을 포함할 수 있다. 다양한 실시예에 따라, 네트워크 연결 장치(211)가 프로세서(120) 내에 포함되어 하나의 프로세싱 칩으로 구성되는 경우, 상기 네트워크 연결 장치(211)는 통신 프로세서에서 어플리케이션 프로세서로 패킷을 전달하는 인터페이스(예컨대, IPC(inter-processor communication) 인터페이스)를 의미할 수도 있다.
다양한 실시예들에 따르면, 어플리케이션 프로세서(application processor; AP)(예를 들면, 도 1의 프로세서)(120))는 네트워크 연결 장치(211)(예를 들면, 도 1의 통신 모듈(190))를 통해 패킷을 수신할 수 있으며, 네트워크 연결 장치(211)를 통해 패킷을 전송할 수 있다. 예를 들면, 네트워크 연결 장치(211)는 통신 프로세서(communication processor; CP)(예: 도 1의 보조 프로세서(123) 또는 통신 모듈(190)) 및 통신 프로세서(123)와 프로세서(120) 간 인터페이스를 포함할 수 있다. AP는 네트워크 연결 장치(211)를 통해 외부 전자 장치(예를 들면, 도 1의 전자 장치(102, 104) 또는 서버(예를 들면, 도 1의 서버(108))에 패킷을 전송할 수 있으며, 외부 전자 장치 또는 서버로부터 전송된 패킷을 수신할 수 있다. 다양한 실시예에 따르면, 네트워크 연결 장치(211)는 프로세서(120)(예: AP)에 전기적으로 연결된 모뎀(예: 통신 프로세서(123))과의 인터페이스(예:PCIe 인터페이스, USB 인터페이스, 공유메모리(shared memory) 인터페이스)를 포함할 수 있다. 다양한 실시예에 따르면, 상기 네트워크 연결 장치(211)는 프로세서(120)(예컨대, 메인 프로세서(121) 또는 보조 프로세서(123)) 내에 포함될 수도 있다.
다양한 실시예들에 따르면, 커널 영역(kernel layer)(230)은 전자 장치(예: 도 1의 전자 장치(101))의 운영 체제(operating system, OS)(예: 도 1의 운영 체제(142))에 포함될 수 있다. 커널 영역(kernel layer)(230)은 패킷 처리를 제어할 수 있다. 커널 영역(230)은 수신되는 패킷을 처리하기 위하여 다양한 모듈들을 포함할 수 있다. 커널 영역(230)은 디바이스 드라이버(231), 패킷 병합 모듈(233), 및 네트워크 패킷 처리 모듈(235)을 포함할 수 있다.
다양한 실시예들에 따르면, 디바이스 드라이버(231)는 수신되는 패킷을 상위 계층에서 처리가 가능하도록 가공할 수 있다. 디바이스 드라이버(231)는 전자 장치(101)에서 동작 중인 운영체제에 부합하도록 패킷을 가공할 수 있다. 디바이스 드라이버(231)는 하나 또는 적어도 2개의 네트워크 디바이스 드라이버들(네트워크 디바이스 드라이버(network device driver) #1, 네트워크 디바이스 드라이버 #2,... , 네트워크 디바이스 드라이버 #N)을 포함할 수 있다. 네트워크 디바이스 드라이버는, 네트워크 연결 장치(211)의 제조사에서 정의된 통신 규약에 따른 패킷을 수신할 수 있다. 네트워크 디바이스 드라이버는 네트워크 디바이스(예를 들면, 모뎀(modem), 랜카드(lan card), 블루투스(Bluetooth), NFC(near field communication), 와이파이, 디스플레이, 오디오, 비디오)의 디바이스 드라이버들을 포함할 수 있다. 네트워크 연결 장치(211)는 프로세서(120)에 패킷(들)을 전송하면서 프로세서(120)에 인터럽트(interrupt)(예: HW IRQ(hardware interrupt request))를 발생시킬 수 있다. 네트워크 디바이스 드라이버는 인터럽트와 함께 패킷들을 수신할 수 있다. 각 네트워크 디바이스 드라이버는 수신되는 패킷들을 구조체들로 가공할 수 있다.
다양한 실시예들에 따르면, 구조체들은 네트워크 처리를 위한 버퍼에 저장될 수 있다. 상기 버퍼는 패킷 병합을 위해 구조체들을 리스트의 형태로 저장할 수 있다. 패킷을 구조체로 가공 및 저장하는 동작은, 패킷 구조화로 지칭될 수 있다.
다양한 실시예들에 따르면, 패킷 병합 모듈(233)은, 패킷 병합과 관련된 동작(예컨대, 병합(merge), 플러시(flush), 또는 스킵(skip))을 수행할 수 있다. 패킷 병합 모듈(233)은 수신되는 패킷들을 상위 계층(예: 네트워크 패킷 처리 모듈(235))으로 전달할 수 있다. 패킷 병합 모듈(233)은 디바이스 드라이버(231)로부터 수신된 구조화된 패킷들을 상위 계층으로 전달할 수 있다. 패킷 병합 모듈(233)은 수신되는 패킷들을 병합하여 전달할 수 있다. 패킷 병합과 관련된 동작은 네트워크 디바이스 드라이버로부터 패킷 수신 시, IP/TCP 헤더(header) 정보의 적어도 일부가 같은 연속된 패킷 데이터들을 하나의 패킷으로 병합하고(또는, 묶고), 병합된 패킷을 네트워크 패킷 처리 모듈(235)(예컨대, 네트워크 스택)로 올려주는 기법일 수 있다. 패킷 병합 모듈(233)은 수신되는 패킷들을 병합하여 한 번에 상위 계층으로 전달함으로써, 네트워크 패킷 처리 모듈(255)의 부하를 줄일 수 있다. 또한, 패킷 병합과 관련된 동작을 통해, 수신된 패킷에 대한 응답(예: acknowledge, ACK)의 횟수가 감소하여, 네트워크 연결 장치(211)의 부하가 줄어들 수 있다. 또는, 시스템 내 전체적인 부하가 감소함에 따라, 처리 효율이 증가할 수 있어 처리량(throughput; Tput)이 상승할 수 있다.
다양한 실시예들에 따르면, 패킷 병합 모듈(233)은 수신되는 패킷들을 바로 상위 계층(예: TCP(transmission control protocol)/IP(internet protocol))으로 전달할 수도 있다. 패킷들의 수신이 완료됨(complete)을 가리키는 알림을 수신하거나 특정 조건이 만족되는 경우, 패킷 병합 모듈(233)은 수신되는 패킷들을 바로 상위 계층으로 전달할 수 있다.
다양한 실시예들에 따르면, 패킷 병합 모듈(233)에서, 수신되는 패킷들을 병합하여 상위 계층으로 전달하거나 혹은 수신되는 패킷들을 바로 상위 계층으로 전달하는 동작은, 플러시(flush)로 지칭될 수 있다. 플러시는, 패킷 병합 모듈(233)의 버퍼에 저장된 구조체들을 상위 계층으로 전달하는 동작을 의미할 수 있다. 패킷 병합 모듈(233)은 구조체들을 스트림(예: TCP 스트림)에 대응하도록, 리스트 형태로 버퍼에 저장할 수 있다. 패킷 병합 모듈(233)은 각 스트림에 대응하는 패킷 리스트를 포함할 수 있다.
다양한 실시예들에 따르면, 패킷 병합과 관련된 동작은, 오프로드(offload) 혹은 수신 오프로드(receive offload)로 지칭될 수 있다. 패킷 병합과 관련된 동작은, 전자 장치(101)에서 동작 중인 OS에 정의된 함수로서 수행될 수 있다. 예를 들어, 패킷 병합과 관련된 동작은, LinuxTM의 GRO(generic receiver offload)를 포함할 수 있다. 다른 예를 들어, 패킷 병합과 관련된 동작은, WindowsTM의 RSC(receive segment coalescing)일 수 있다.
다양한 실시예에서, 프로세서(예: 도 1의 프로세서(120))가 복수 개의 코어(코어 프로세서)를 가진 멀티코어 프로세서일 경우, 상기 패킷 병합 모듈(233)의 동작은 각 세션 별로 각기 다른 프로세서에서 병렬적으로 수행될 수도 있다. 예컨대, 적어도 하나의 네트워크 연결 장치(211)에서 수신된 패킷은 복수 개의 코어 프로세서들 중 어느 하나의 코어 프로세서로 전달되고, 상기 복수 개의 코어 프로세서들 각각은 상기 적어도 하나의 네트워크 연결 장치(211)로부터 수신된 패킷을 동시에 병렬적으로 처리할 수 있다.
다양한 실시예들에 따르면, 네트워크 패킷 처리 모듈(235)은 패킷 병합 모듈(233)로부터 수신된 패킷을 처리할 수 있다. 네트워크 패킷 처리 모듈(235)은 네트워크 스택(network stack)을 포함할 수 있다. 네트워크 패킷 처리 모듈(235)은 네트워크 계층(예: IP(internet protocol), ICMP(internet control message protocol)) 및 전송 계층(TCP(transmission control protocol), UDP(user datagram protocol))을 포함할 수 있다. 네트워크 패킷 처리 모듈(235)은 디바이스 드라이버 (231) 및 패킷 병합 모듈(233)을 통해 네트워크 연결 장치(211)로부터 패킷을 수신할 수 있다. 네트워크 패킷 처리 모듈(235)은 사용자 영역에서 처리할 수 있도록 상기 디바이스 드라이버(231) 및 패킷 병합 모듈(233)로부터 수신된 패킷을 처리한 뒤, 처리된 패킷을 사용자 영역으로 전달할 수 있다. 예를 들어, IP 계층에서, 네트워크 패킷 처리 모듈(235)은 IP 라우팅을i 수행할 수 있다. 또한, 예를 들어, TCP 계층에서, 네트워크 패킷 처리 모듈(235)은 TCP 제어 블록(TCP control block)을 식별할 수 있다. 네트워크 패킷 처리 모듈(235)은 해당 패킷의 IP와 포트 번호를 식별할 수 있다.
다양한 실시예들에 따르면, 사용자 영역(user layer)(250)은 커널 영역(230)으로부터 전달된 패킷들을 사용하는 동작들이 수행될 수 있다. 사용자 영역(user layer)(250)에서는 사용자 계층에서 동작하는 어플리케이션들의 목적에 부합하도록, 전달된 패킷들이 사용될 수 있다. 예를 들어, 전자 장치(101)의 사용자에게 메시지를 표시(display)하거나, 비디오 스트리밍 서비스를 제공할 수 있다. 사용자 영역(250)은 어플리케이션 프레임워크(251) 및 어플리케이션(253)을 포함할 수 있다.
다양한 실시예들에 따르면, 어플리케이션(253)은 전자 장치에 관련된 자원을 제어하는 운영 체제(예를 들면, 도 1의 운영 체제(142)) 및/또는 운영 체제상에서 구동될 수 있다. 운영 체제는, 예를 들면, AndroidTM, LinuxTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 어플리케이션 프레임워크(251)는 어플리케이션(253)이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션(253)이 전자 장치 내부의 제한된 시스템 자원을 사용할 수 있도록 하는 다양한 기능들을 어플리케이션(253)에 제공할 수 있다. 예컨대, 어플리케이션 프레임워크(251)는 패키지 매니저, 액티비티 매니저, 통화 매니저, 윈도우 매니저, 또는 리소스 매니저를 포함할 수 있다.
다양한 실시예들에 따르면, 네트워크 연결 장치(211)로부터 수신되는 패킷들은, 소프트웨어(200)(예: 도 1의 프로그램(140))의 형태로 구현될 수 있는 디바이스 드라이버(231)를 통해 패킷 병합 모듈(233)을 거쳐 네트워크 패킷 처리 모듈(235)(예컨대, 네트워크 스택)로 전달될 수 있으며, 어플리케이션(253)은, 네트워크 패킷 처리 모듈(235)(예컨대, 네트워크 스택)에서 처리된 패킷들을 사용할 수 있다.
다양한 실시예들에 따르면, 패킷 병합 모듈(233)에서 제공되는 패킷 병합과 관련된 동작은, 여러 개의 수신된 패킷들을 하나로 병합하여 한 번에 네트워크 스택으로 전달함으로써, 네트워크 스택에서의 처리 부하를 줄일 수 있다. MTU(maximum transmission unit)는 네트워크 계층(예: 네트워크 스택의 IP 계층)으로 전달될 수 있는 패킷의 최대 전송 단위일 수 있다. 패킷 병합과 관련된 동작이 적용되지 않는 경우, 네트워크 디바이스 드라이버는, MTU 이하의 크기의 패킷을 네트워크 스택으로 전달할 수 있다. 패킷 병합과 관련된 동작이 적용되는 경우, 네트워크 스택으로 플러시되는i 패킷의 크기는 MTU(예컨대, 999개 또는 64KB(kilobyte))를 초과할 수 있다. 패킷 병합과 관련된 동작이 적용되면, 시스템의 네트워크 스택에 부하가 줄어들고 서버 측에 적은 수의 패킷에 대한 응답(ACK)이 송신됨으로써 NIC 혹은 모뎀과 같은 데이터 전송 하드웨어와 전체 네트워크 처리기들에 부하가 줄어들 수 있다. 그러나, 패킷 병합 모듈(233)이 일률적으로 패킷들을 병합하여 상위 계층으로 전달하면, 예컨대, 패킷의 전송 초기와 같이 네트워크 속도가 낮은 경우 수신된 패킷에 대한 응답(ACK)의 송신이 지연되어 네트워크 속도가 빠르게 증가하지 못할 수 있다.
다양한 실시예들에 따르면, TCP와 같은 전송 프로토콜은 혼잡 제어를 위하여 ACK이 수신될 때마다 윈도우 크기를 증가시킬 수 있다. 예를 들어, 전송 초기에는 ACK이 수신될 때마다 윈도우 크기가 임계값을 초과할 때까지 지수적으로 증가시킬 수 있다. 예를 들어, 전송 초기에는, 전송된 패킷에 대한 응답이 빠를수록, 네트워크 속도가 빠르게 증가할 수 있다. 그러나, 적은 양의 응답(ACK)을 송신하게 되면 네트워크 속도의 증가가 더디게 되고, 이로 인해 스트리밍 동영상 재생 시 처음 화면이 시작되는 때까지의 시간이 느려질 수 있다. 예를 들어, 수신되는 패킷마다 ACK을 전송하는 것이 아니라, 병합된 다수의 패킷들에 대해 1회의 ACK을 전송하게 되면, 송신단에서는 1회의 ACK만을 고려하여 윈도우의 크기를 증가시킬 수 있다. 패킷 병합과 관련된 동작의 적용 시, ACK의 발생 횟수가 감소하여 처리량은 패킷 병합과 관련된 동작이 적용되지 않는 경우보다 감소할 수 있다. 네트워크 상황이 좋을수록 ACK의 발생 횟수가 증가하기 때문에, 패킷 병합과 관련된 동작으로 인한 처리량 감소가 발생할 수 있다.
다양한 실시예에 따르면, 수신된 데이터 패킷에 해당하는 세션의 특성(예컨대, IP 유형 또는 어플리케이션 유형)에 기반하여 패킷들을 적응적(또는, 가변적)으로 병합하여 상위 계층으로 전달하거나, 수신된 패킷을 바로 상위 계층으로 전달함으로써 처리량을 향상시킬 수 있다. 상기 패킷 병합 모듈(233)에서의 패킷(예: 병합된 패킷)들을 상위 계층(예컨대, 네트워크 패킷 처리 모듈(235))으로 전달하는 동작은, 플러시(flush)로 지칭될 수 있다.
도 3은 다양한 실시예들에 따른, 전자 장치와 서버 간의 전송 지연을 나타내는 도면이다. 도 3을 참조하면, 5G 통신 네트워크에서 초저지연 서비스를 지원하는 URLLC 데이터의 경우 서버(320)(예: MEC(mobile edge computing) 서버)로부터 어플리케이션(300)까지 10ms 이내로 처리될 수 있다. 6G 통신 네트워크에서는 서버(320)로부터 어플리케이션(300)까지 1ms 이내로 처리될 수 있다. 상기 서버(320)로부터 전자 장치(101) 내의 어플리케이션(300)까지 목표로 하는 처리 시간이 줄어들수록 상기 전자 장치(101) 내에서 패킷을 처리하는데 점유되는 시간의 비중이 상대적으로 증가할 수 있다. 예컨대, 저지연 서비스(예: 클라우드 게임, V2X)와 대용량 트래픽(예: 고화질 비디오)이 동시에 발생하는 경우, 저지연 서비스의 최종 처리 시간이 지연될 수 있다. 이하, 도 4 및 도 5를 참조하여 상기 전자 장치(101) 내에서 패킷 처리 시 발생할 수 있는 시간 지연을 설명한다.
도 4는 다양한 실시예들에 따른, 전자 장치에서의 RSS(receive side steering) 방식에 의한 데이터 패킷 처리의 예를 도시한다. 도 4를 참조하면, 전자 장치(101)는 CP(110)(예: 통신 모듈(190)) 및 프로세서(120)(예: 도 1의 프로세서(120))(이하, 설명의 편의상 AP라 한다.), 메모리(130)(예: 도 1의 메모리(130))를 포함할 수 있다. AP(120)는 복수의 코어(또는 코어 프로세서)들을 포함할 수 있으며, 후술하는 설명에서는 설명의 편의를 위하여 4개의 코어(예: 제1 코어(441)(코어 0), 제2 코어(442)(코어 1), 제3 코어(443)(코어 2), 제4 코어(444)(코어 3))를 포함하는 것으로 예시하고 있으나, 후술하는 실시예들이 상기 개수로 한정되는 것은 아니다. 다양한 실시예에 따라, 제1 코어(441) 및 제2 코어(442)는 밸런스 클러스터(balance cluster)로 지칭될 수 있으며, 상기 제3 코어(443) 및 제4 코어(444)는 퍼포먼스 클러스터(performance cluster)로 지칭될 수 있다. 상기 퍼포먼스 클러스터에 해당하는 코어들은 상기 밸런스 클러스터에 해당하는 코어들에 비해 상대적으로 성능이 우수하며 배터리 소모가 큰 코어들일 수 있다. 상기 밸런스 클러스터에 해당하는 코어들은 상기 퍼포먼스 클러스터에 해당하는 코어들에 비해 상대적으로 성능이 낮으며 배터리 소모가 작은 코어들일 수 있다. 상기 밸런스 클러스터에 해당하는 코어들은 작은 코어(little core)로 지칭될 수 있으며, 퍼포먼스 클러스터에 해당하는 코어들은 큰 코어(big core)로 지칭될 수 있으나, 후술하는 실시예들이 상기 용어에 한정되는 것은 아니다. 다양한 실시예에 따라, 상기 밸런스 클러스터와 상기 퍼포먼스 클러스터의 중간 성능을 갖는 코어는 미들 코어(middle core)로 지칭될 수 있다.
다양한 실시예에 따라, CP(110)는 필터(430) 및 복수의 버퍼들을 포함할 수 있다. CP(110)에 수신된 패킷들은 필터(430)를 통해 복수의 버퍼들 중 어느 하나의 버퍼로 분배될 수 있다. 상기 필터(430)는 수신된 패킷의 헤더를 확인하여(또는, 헤더를 해싱(hashing)하여), 동일한 세션(session)(또는 동일한 플로우i(flow))의 패킷은 동일한 버퍼에 저장할 수 있다. 예컨대, 제1 세션의 패킷들(401)은 필터(430)를 통해 제1 버퍼에 저장될 수 있으며, 제2 세션의 패킷들(402) 및 제3 세션의 패킷들(403)은 필터(430)를 통해 제2 버퍼에 저장될 수 있다. 상기 제1 버퍼에 저장된 제1 세션의 패킷들(401)은 AP(120)로 전달될 수 있으며, AP(120)는 상기 제1 버퍼로부터 수신된 제1 세션의 패킷들(401)을 제1 코어(441)를 통해 처리하도록 제어할 수 있다. 상기 제2 버퍼에 저장된 제2 세션의 패킷들(402) 및 제3 세션을 패킷들(403)은 AP(120)로 전달될 수 있으며, AP(120)는 상기 제2 버퍼로부터 수신된 제2 세션의 패킷들(402) 및 제3 세션의 패킷들(403)을 제2 코어(442)를 통해 처리하도록 제어할 수 있다.
다양한 실시예에 따라, 상기 각 코어에 전달된 패킷들은 패킷 병합 모듈(460)(예: 도 2의 패킷 병합 모듈(233))을 통해 패킷 병합과 관련된 동작이 수행될 수 있다. 예컨대, 패킷 병합 모듈(460)은, 패킷 병합과 관련된 동작(예컨대, 병합(merge), 플러시(flush), 또는 스킵(skip))을 수행할 수 있다. 패킷 병합 모듈(460)은 수신되는 패킷들을 상위 계층(예: 네트워크 패킷 처리 모듈(480)(예: 도 2의 네트워크 패킷 처리 모듈(235))으로 전달할 수 있다. 상기 패킷 병합 모듈(460)의 구체적인 실시예는 도 2에서 설명하였으므로 상세한 설명은 생략하기로 한다.
다양한 실시예에 따라, 도 4에 도시된 바와 같이 AP(120)(예: 도 1의 프로세서(120))가 복수 개의 코어(예: 코어 프로세서)를 가진 멀티 코어 프로세서일 경우, 상기 패킷 병합 모듈(460)의 동작은 제1 코어(441)에 대응하는 버퍼(461), 제2 코어(442)에 대응하는 버퍼(462), 제3 코어(443)에 대응하는 버퍼(463), 제4 코어(444)에 대응하는 버퍼(464)에서 병렬적으로 수행될 수 있다. 예컨대, 제1 코어(441)에 할당된 제1 세션의 패킷 데이터(401)는 제1 코어(441)에 대응하는 버퍼(461)에 저장된 후 패킷 병합과 관련된 동작이 수행될 수 있다. 동시에 제2 코어(442)에 할당된 제2 세션의 패킷 데이터(402) 또는 제3 세션의 패킷 데이터(403)는 제2 코어(442)에 대응하는 버퍼(462)에 저장된 후서 패킷 병합과 관련된 동작이 병렬적으로 수행될 수 있다. 상기 제1 코어(441)에 대응하는 버퍼(461)에 저장되어 병합 처리된 데이터 패킷들 및 상기 제2 코어(442)에 대응하는 버퍼(462)에 저장되어 병합 처리된 데이터 패킷들은 네트워크 패킷 처리 모듈(480)로 전달될 수 있다.
다양한 실시예에 따라, 제3 세션의 패킷 데이터(403)가 저지연 서비스 데이터인 경우, 상기 제2 세션의 패킷 데이터(402)에 대한 패킷 병합 처리가 완료된 후 패킷 병합 처리가 수행될 수 있으므로, 시간 지연이 발생할 수 있다. 또한, 상기 제3 세션의 패킷 데이터(403)는 퍼포먼스 클러스터에 해당하는 코어들(예: 제3 코어(443), 제4 코어(444))이 아닌 밸런스 클러스터에 해당하는 코어들(예: 제1 코어(441), 제2 코어(442))을 통해 처리되어 상대적으로 처리 속도가 저하될 수 있다.
도 5는 다양한 실시예들에 따른, 전자 장치에서의 RPS(receive packet steering) 방식에 의한 데이터 패킷 처리의 예를 도시한다. 도 5를 참조하면, 전자 장치(101)는 CP(110)(예: 통신 모듈(190)) 및 AP(120), 메모리(130)(예: 도 1의 메모리(130))를 포함할 수 있다. AP(120)는 복수의 코어(또는 코어 프로세서)들을 포함할 수 있다. 다양한 실시예에 따라, 제1 코어(441) 및 제2 코어(442)는 밸런스 클러스터(balance cluster)로 지칭될 수 있으며, 상기 제3 코어(443) 및 제4 코어(444)는 퍼포먼스 클러스터(performance cluster)로 지칭될 수 있다. 다양한 실시예에 따라, CP(110)는 필터(430) 및 복수의 버퍼들을 포함할 수 있다. 상기 CP(110)에 포함된 복수의 버퍼들은 물리적으로 하나의 버퍼일 수 있으며, 소프트웨어로 구현된 가상의 복수의 버퍼일 수 있다.
CP(110)에서 입력된 패킷들은 하나의 수신 버퍼로 입력될 수 있다. 상기 수신 버퍼는 CP(110)로 입력된 순서에 따라 복수의 패킷들을 저장할 수 있다. 예컨대, 수신 버퍼는 제1 세션의 패킷들(401)을 저장한 후, 제3 세션의 패킷들(403)을 저장할 수 있다.
상기 수신 버퍼에 순차적으로 저장된 제1 세션의 패킷들(401) 및 제3 세션의 패킷들(403)은 AP(120)로 전달될 수 있으며, AP(120)는 제1 버퍼로부터 수신된 제1 세션의 패킷들(401) 및 제3 세션의 패킷들(403)을 제1 코어(441)를 통해 처리하도록 제어할 수 있다.
다양한 실시예에 따라, 상기 제1 코어(441)에 전달된 패킷들은 패킷 병합 모듈(460)(예: 도 2의 패킷 병합 모듈(233))을 통해 패킷 병합과 관련된 동작이 수행될 수 있다. 예컨대, 패킷 병합 모듈(460)은, 패킷 병합과 관련된 동작(예컨대, 병합(merge), 플러시(flush), 또는 스킵(skip))을 수행할 수 있다. 패킷 병합 모듈(460)은 수신되는 제1 세션의 패킷들(401) 및 제3 세션의 패킷들(403)을 패킷 스티어링 모듈(470)을 통해 상위 계층(예: 네트워크 패킷 처리 모듈(480)(예: 도 2의 네트워크 패킷 처리 모듈(235))으로 전달할 수 있다. 상기 패킷 병합 모듈(460)의 구체적인 설명은 도 2에서 설명하였으므로 상세한 설명은 생략하기로 한다.
다양한 실시예에 따라, 상기 제1 코어(441)의 버퍼(461)에 저장되어 패킷 병합 처리된 제1 세션의 데이터 패킷(401) 및 제3 세션의 데이터 패킷(403)은 패킷 병합 모듈(460)에서 패킷 스티어링 모듈(470)을 통해 각각 별개의 코어에서 처리되도록 할 수 있다. 예컨대, 상기 패킷 스티어링 모듈(470)은 병합 처리된 패킷을 수신하여 제1 코어(441)에 대응하는 버퍼(471)에 저장하거나, 제2 코어(442)에 대응하는 버퍼(472)에 저장하거나, 제3 코어(443)에 대응하는 버퍼(473)에 저장하거나, 제4 코어(444)에 대응하는 버퍼(474)에 저장할 수 있다. 예컨대, 제1 코어(441)에 대응하는 버퍼(471)에 저장된 패킷은 제1 코어(441)의 네트워크 패킷 처리 모듈(480)을 통해 처리될 수 있으며, 제2 코어(442)에 대응하는 버퍼(472)에 저장된 패킷은 제2 코어(442)의 네트워크 패킷 처리 모듈(480)을 통해 처리될 수 있으며, 제3 코어(443)에 대응하는 버퍼(473)에 저장된 패킷은 제3 코어(443)의 네트워크 패킷 처리 모듈(480)을 통해 처리될 수 있으며, 제4 코어(444)에 대응하는 버퍼(474)에 저장된 패킷은 제4 코어(444)의 네트워크 패킷 처리 모듈(480)을 통해 처리될 수 있다.
예컨대, 제1 세션 데이터 패킷(401)은 제1 코어(441)에 대응하는 버퍼(461)에 저장되어 병합 처리된 후 제3 코어(443)의 네트워크 패킷 처리 모듈(480)로 전달될 수 있으며, 제3 세션 데이터 패킷(403)은 제1 코어(441)에 대응하는 버퍼(461)에 저장되어 병합 처리된 후 제4 코어(444)의 네트워크 패킷 처리 모듈(480)로 전달될 수 있다. 다양한 실시예에 따라, 도 5에 도시된 바와 같이 AP(120)(예: 도 1의 프로세서(120))가 복수 개의 코어(코어 프로세서)를 가진 멀티 코어 프로세서일 경우, 저지연 서비스 데이터에 해당하는 상기 제3 세션 데이터 패킷(403)은 상기 제1 세션 데이터 패킷(401)과 별개의 코어에서 네트워크 패킷 처리될 수 있으나, 제1 코어(441)에서 제1 세션 데이터 패킷(403)의 패킷 병합 처리 이후에 제4 코어(444)로 재분배됨에 따라, 상기 제1 세션의 패킷 데이터(401)에 대한 패킷 병합 처리가 완료된 후 패킷 병합 처리가 수행될 수 있으므로, 시간 지연이 발생할 수 있다. 이하, 도 6 내지 도 34를 참조하여, 어플리케이션 또는 서비스의 특성(예컨대, QoS)에 기반한 그룹 정보에 따라 복수의 코어에 매핑하여 처리하도록 함으로써 패킷 처리에 따른 지연 시간을 줄일 수 있는 다양한 실시예들을 설명하기로 한다.
후술하는 다양한 실시예들에서는 AP(120)와 CP(110)가 별도의 구성으로 구분하여 설명하고 있으나, 상기 AP(120)와 CP(110)가 별도의 칩(chip)으로 구성되는 것을 한정하는 것은 아니다. 예컨대, 상기 AP(120)와 CP(110)는 각각 별도의 칩으로 구성될 수도 있으며, 하나의 칩 내에서 어플리케이션 프로세서와 통신 프로세서가 포함되도록 구성될 수도 있다. 다양한 실시예에 따라, 후술하는 실시예에서, 컨트롤러(410)는 상기 AP(120) 내에 포함될 수도 있으며, 상기 AP(120)와는 별도의 하드웨어 구성에 포함될 수도 있다. 예컨대, 상기 컨트롤러(410)는 상기 도 1의 메모리(130) 내에 프로그램(140) 형태로 저장될 수 있으며, 운영 체제(142)(예: AndroidTM, LinuxTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM), 미들 웨어(144), 또는 어플리케이션(146) 중 어느 하나의 형태로 구현될 수 있다.
도 6은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 6을 참조하면, 전자 장치(101)는 CP(110)(예: 통신 모듈(190)) 및 AP(120), 메모리(130)(예: 도 1의 메모리(130))를 포함할 수 있다. AP(120)는 복수의 코어(또는 코어 프로세서)들을 포함할 수 있다. 다양한 실시예에 따라, 제1 코어(441) 및 제2 코어(442)는 밸런스 클러스터(balance cluster)로 지칭될 수 있으며, 상기 제3 코어(443) 및 제4 코어(444)는 퍼포먼스 클러스터(performance cluster)로 지칭될 수 있다. 다양한 실시예에 따라, CP(110)는 필터(430) 및 복수의 버퍼들을 포함할 수 있다. 상기 CP(110)에 포함된 복수의 버퍼들은 물리적으로 하나의 버퍼일 수 있으며, 논리적으로 구분될 수 있다.
다양한 실시예에 따라, 컨트롤러(410)는 데이터베이스(420)에 저장된 정보에 기반하여 세션별 그룹 정보를 CP(110)의 필터(430)로 전송할 수 있다. 상기 필터(430)는 컨트롤러(410)로부터 세션별 그룹 정보를 수신하고, 수신된 패킷의 세션에 따라 해당 그룹에 매핑된 버퍼에 저장할 수 있다. 예컨대, 필터(430)는 컨트롤러(410)로부터 세션별 그룹 정보를 수신하고, 해당 그룹에 대응하는 버퍼(예컨대, 논리 버퍼)를 생성할 수 있다. 상기 도 6을 참조하면, 두 개의 그룹에 대응하는 두 개의 논리 버퍼로서 수신 버퍼 A 및 수신 버퍼 B가 생성될 수 있다. 예컨대, 컨트롤러(410)는 제1 세션을 제1 그룹에 매핑하고, 제3 세션을 제2 그룹에 매핑하여 데이터베이스(420)에 저장할 수 있다. 상기 컨트롤러(410)는 상기 각 세션별 그룹 정보를 CP(110) 내의 필터(430)에 전송할 수 있다. 필터(430)는 상기 컨트롤러(410)로부터 세션별 그룹 정보를 수신하고, 제1 그룹에 대응하는 수신 버퍼 A 및 제2 그룹에 대응하는 수신 버퍼 B를 생성할 수 있다.
다양한 실시예에 따라, 필터(430)는 각 세션에 대응하는 데이터 패킷을 수신하고, 해당 데이터 패킷의 헤더를 검사하여, 수신된 데이터 패킷의 세션을 확인할 수 있다. 예컨대, 상기 필터(430)는 수신된 데이터 패킷의 세션이 제1 세션의 데이터 패킷(401)으로 확인되면, 확인된 제1 세션의 데이터 패킷(401)을 상기 제1 세션에 매핑된 제1 그룹에 대응하여 생성된 수신 버퍼 A에 저장할 수 있다. 상기 필터(430)는 수신된 데이터 패킷의 세션이 제3 세션의 데이터 패킷(403)으로 확인되면, 확인된 제3 세션의 데이터 패킷(403)을 상기 제3 세션에 매핑된 제2 그룹에 대응하여 생성된 수신 버퍼 B에 저장할 수 있다.
상기 각 수신 버퍼에 저장된 제1 세션의 패킷들(401) 및 제3 세션의 패킷들(403)은 AP(120)의 제어 코어(예: 제1 코어(441)(코어 0))로 전달될 수 있다. 상기 CP(110)는 상기 패킷들을 AP(120)로 전달할 때, 각 그룹에 대응하여 생성된 해당 수신 버퍼와 관련된 메타 정보(예컨대, 버퍼 번호(또는 그룹 번호), 버퍼의 시작 위치, 버퍼의 종료 위치, 버퍼의 패킷 수, 또는 버퍼의 세션 수)를 함께 전달할 수 있다. 다양한 실시예에 따라, AP(120)의 제어 코어(예: 제1 코어(441))는 수신된 패킷을 병합 처리하기 전 컨트롤러(410)로부터 수신된 그룹과 코어의 매핑 정보에 기반하여 매핑 모듈(450)을 통해 설정된 코어로 분배할 수 있다. 예컨대, 제1 코어(441)의 매핑 모듈(450)은 컨트롤러(410)로부터 수신된 정보에 기반하여 수신 버퍼 A로부터 수신된 제1 세션의 데이터 패킷(401)을 제1 코어(441)의 패킷 병합 모듈(460)로 전송할 수 있다. 제1 코어(441)의 매핑 모듈(450)은 컨트롤러(410)로부터 수신된 정보에 기반하여 수신 버퍼 B로부터 수신된 제3 세션의 데이터 패킷(403)을 제4 코어(444)의 패킷 병합 모듈(460)로 전송할 수 있다.
다양한 실시예에 따라, 상기 제1 코어(441)에 전달된 제1 세션의 패킷들(401)은 제1 코어(441)에 대응하는 버퍼(461)에 저장되어 패킷 병합 모듈(460)(예: 도 2의 패킷 병합 모듈(233))을 통해 패킷 병합과 관련된 동작이 수행될 수 있다. 예컨대, 패킷 병합 모듈(460)은, 패킷 병합과 관련된 동작(예컨대, 병합(merge), 플러시(flush), 또는 스킵(skip))을 수행할 수 있다. 상기 제4 코어(444)에 전달된 제3 세션의 패킷들(403)은 제4 코어(444)에 대응하는 버퍼(464)에 저장되어 패킷 병합 모듈(460)(예: 도 2의 패킷 병합 모듈(233))을 통해 패킷 병합과 관련된 동작이 수행될 수 있다. 다양한 실시예에 따라, 도 6 및 도 7 이하에서 후술하는 패킷 병합 모듈(460)은 컨트롤러(410)의 제어에 따라 각 코어(441, 442, 443, 444) 내에서 각 세션별로 독립적으로 패킷 병합 정책을 적용할 수도 있으며, 각 코어(441, 442, 443, 444) 별로 독립적으로 패킷 병합 정책을 적용할 수도 있다.
다양한 실시예에 따라, 상기 제1 코어(441)를 통해 패킷 병합 처리된 제1 세션의 데이터 패킷(401)은 패킷 병합 모듈(460)에서 패킷 스티어링 모듈(470)을 통해 각각 별개의 코어에서 처리되도록 할 수 있다. 예컨대, 상기 패킷 스티어링 모듈(470)은 병합 처리된 제1 세션의 데이터 패킷(401)을 수신하여 제1 코어(441)에 대응하는 버퍼(471)에 저장할 수 있다. 상기 제1 코어(441)에 대응하는 버퍼(471)에 저장된 제1 세션의 데이터 패킷(401)은 제1 코어(441)의 네트워크 패킷 처리 모듈(480)을 통해 처리될 수 있다. 상기 제4 코어(444)를 통해 패킷 병합 처리된 제3 세션의 데이터 패킷(403)은 패킷 병합 모듈(460)에서 패킷 스티어링 모듈(470)을 통해 각각 별개의 코어에서 처리되도록 할 수 있다. 예컨대, 상기 패킷 스티어링 모듈(470)은 병합 처리된 제3 세션의 데이터 패킷(403)을 수신하여 제4 코어(444)에 대응하는 버퍼(474)에 저장할 수 있다. 상기 제4 코어(444)에 대응하는 버퍼(474)에 저장된 제3 세션의 데이터 패킷(403)은 제4 코어(444)의 네트워크 패킷 처리 모듈(480)을 통해 처리될 수 있다.
다양한 실시예에 따라, 상기 제3 세션이 저지연 서비스와 관련된 세션인 경우, 상기 제1 세션의 데이터 패킷(401)을 병합 처리하기 전 상기 제3 세션의 데이터 패킷(403)을 상대적으로 성능이 우수한 퍼포먼스 클러스터의 제4 코어(444)에 별도 매핑하여 병합 처리함으로써 패킷 처리에 따른 지연을 줄일 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 패킷 병합 모듈(460)을 제어하여 상기 패킷 병합 모듈(460)의 패킷 병합 정책을 각 코어별로 적용하도록 할 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 전술한 바와 같이 매핑 모듈(450) 및/또는 패킷 스티어링 모듈(470)을 제어하여 각 세션별 매핑된 그룹에 해당하는 특정 세션의 데이터 패킷이 설정된 코어를 통해 처리되도록 제어할 수 있다. 다양한 실시예에 따라, 상기 제3 세션의 데이터 패킷(403)이 저지연 서비스와 관련된 데이터 패킷인 경우 빠른 패킷 처리를 위해 상기 패킷 병합 모듈(460) 및/또는 상기 패킷 스티어링 모듈(470)을 거치지 않고 상기 매핑 모듈(450)에서 네트워크 패킷 처리 모듈(480)로 직접 전송할 수도 있다.
도 7은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 7을 참조하면, 전자 장치(101)는 복수의 코어(core)들을 포함하는 어플리케이션 프로세서(예: 도 1의 프로세서(120)), 및 상기 어플리케이션 프로세서와 전기적으로 연결된 통신 프로세서(120)(CP)(예: 도 1의 통신 모듈(190)를 포함할 수 있다.
다양한 실시예에 따라, 상기 전자 장치(101)의 어플리케이션 프로세서는 동작 710에서 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 상기 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정할 수 있다. 예컨대, 상기 어플리케이션 프로세서는 각 어플리케이션과 관련된 적어도 하나의 세션을 그룹에 매핑하고, 상기 그룹은 상기 복수의 코어들 중 특정 코어에 매핑할 수 있다.
다양한 실시예에 따라, 상기 전자 장치(101)의 어플리케이션 프로세서는 동작 720에서 적어도 하나의 세션 중 제1 세션에 대해 설정된 제1 코어에 대응하는 정보(예컨대, 제1 그룹 정보)를 통신 프로세서로 전송할 수 있다. 다양한 실시예에 따라, 상기 전자 장치(101)의 통신 프로세서는 상기 어플리케이션 프로세서로부터 수신된 정보에 기반하여 각 그룹에 대응하는 논리 버퍼를 생성할 수 있다.
다양한 실시예에 따라, 상기 전자 장치(101)의 어플리케이션 프로세서는 동작 730에서 상기 통신 프로세서로부터 상기 제1 코어에 대응하는 정보(예컨대, 제1 코어에 대응하는 그룹 A에 대해 할당된 수신 버퍼 A의 메타 정보)에 기반하여 상기 제1 세션의 패킷 데이터를 수신할 수 있다. 예컨대, 상기 통신 프로세서는 상기 패킷들을 AP(120)로 전달할 때, 각 그룹에 대응하여 생성된 해당 수신 버퍼와 관련된 메타 정보(예컨대, 버퍼 번호(또는 그룹 번호), 버퍼의 시작 위치, 버퍼의 종료 위치, 버퍼의 패킷 수, 또는 버퍼의 세션 수)를 함께 전달할 수 있다.
다양한 실시예에 따라, 상기 전자 장치(101)의 어플리케이션 프로세서는 동작 740에서 상기 수신된 제1 세션의 패킷 데이터를 상기 제1 세션에 대해 설정된 제1 코어를 통해 처리할 수 있다. 상기 제1 세션과 상이한 그룹인 그룹 B로 설정된 제2 세션의 패킷 데이터는 상기 그룹 B에 대해 설정된 제2 코어를 통해 처리할 수 있다.
도 8은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 8을 참조하면, 전자 장치(101)는 CP(110)(예: 통신 모듈(190)) 및 AP(120), 메모리(130)(예: 도 1의 메모리(130))를 포함할 수 있다. AP(120)는 복수의 코어(또는 코어 프로세서)들을 포함할 수 있다. 다양한 실시예에 따라, 제1 코어(441) 및 제2 코어(442)는 밸런스 클러스터(balance cluster)로 지칭될 수 있으며, 상기 제3 코어(443) 및 제4 코어(444)는 퍼포먼스 클러스터(performance cluster)로 지칭될 수 있다. 다양한 실시예에 따라, CP(110)는 필터(430) 및 복수의 버퍼들을 포함할 수 있다. 상기 CP(110)에 포함된 복수의 버퍼들은 물리적으로 하나의 버퍼일 수 있으며, 논리적으로 구분될 수 있다.
다양한 실시예에 따라, 컨트롤러(410)는 데이터베이스(420)에 저장된 정보에 기반하여 세션별 그룹 정보를 CP(110)의 필터(430)로 전송할 수 있다. 상기 필터(430)는 컨트롤러(410)로부터 세션별 그룹 정보를 수신하고, 수신된 패킷의 세션에 따라 해당 그룹에 매핑된 버퍼에 저장할 수 있다. 예컨대, 필터(430)는 컨트롤러(410)로부터 세션별 그룹 정보를 수신하고, 해당 그룹에 대응하는 버퍼(예컨대, 논리 버퍼)를 생성할 수 있다. 상기 도 8을 참조하면, 두 개의 그룹에 대응하는 두 개의 논리 버퍼로서 수신 버퍼 A 및 수신 버퍼 B가 생성될 수 있다. 예컨대, 컨트롤러(410)는 제1 세션 및 제2 세션을 제1 그룹에 매핑하고, 제3 세션을 제2 그룹에 매핑하여 데이터베이스(420)에 저장할 수 있다. 상기 컨트롤러(410)는 상기 각 세션별 그룹 정보를 CP(110) 내의 필터(430)에 전송할 수 있다. 필터(430)는 상기 컨트롤러(410)로부터 세션별 그룹 정보를 수신하고, 제1 그룹에 대응하는 수신 버퍼 A 및 제2 그룹에 대응하는 수신 버퍼 B를 생성할 수 있다.
다양한 실시예에 따라, 필터(430)는 각 세션에 대응하는 데이터 패킷을 수신하고, 해당 데이터 패킷의 헤더를 검사하여, 수신된 데이터 패킷의 세션을 확인할 수 있다. 예컨대, 상기 필터(430)는 수신된 데이터 패킷의 세션이 제1 세션의 데이터 패킷(401) 또는 제2 세션의 데이터 패킷(402)으로 확인되면, 확인된 제1 세션의 데이터 패킷(401) 또는 제2 세션의 데이터 패킷(402)을 상기 제1 세션 또는 제2 세션에 매핑된 제1 그룹에 대응하여 생성된 수신 버퍼 A에 저장할 수 있다. 상기 필터(430)는 수신된 데이터 패킷의 세션이 제3 세션의 데이터 패킷(403)으로 확인되면, 확인된 제3 세션의 데이터 패킷(403)을 상기 제3 세션에 매핑된 제2 그룹에 대응하여 생성된 수신 버퍼 B에 저장할 수 있다.
상기 각 수신 버퍼에 저장된 제1 세션의 패킷들(401), 제2 세션의 패킷들(402) 및 제3 세션의 패킷들(403)은 AP(120)의 제어 코어(예: 제1 코어(441)(코어 0))로 전달될 수 있다. 상기 CP(110)는 상기 패킷들을 AP(120)로 전달할 때, 각 그룹에 대응하여 생성된 해당 수신 버퍼와 관련된 메타 정보(예컨대, 버퍼 번호(또는 그룹 번호), 버퍼의 시작 위치, 버퍼의 종료 위치, 버퍼의 패킷 수, 또는 버퍼의 세션 수)를 함께 전달할 수 있다. 다양한 실시예에 따라, AP(120)의 제어 코어(예: 제1 코어(441))는 수신된 패킷을 병합 처리하기 전 컨트롤러(410)로부터 수신된 그룹과 코어의 매핑 정보에 기반하여 매핑 모듈(450)을 통해 설정된 코어로 분배할 수 있다. 예컨대, 제1 코어(441)의 매핑 모듈(450)은 컨트롤러(410)로부터 수신된 정보에 기반하여 수신 버퍼 A로부터 수신된 제1 세션의 데이터 패킷(401) 및 제2 세션의 데이터 패킷(402)을 제1 코어(441)의 패킷 병합 모듈(460)로 전송할 수 있다. 제1 코어(441)의 매핑 모듈(450)은 컨트롤러(410)로부터 수신된 정보에 기반하여 수신 버퍼 B로부터 수신된 제3 세션의 데이터 패킷(403)을 제4 코어(444)의 패킷 병합 모듈(460)로 전송할 수 있다.
다양한 실시예에 따라, 상기 제1 코어(441)에 대응하는 버퍼(461)에 저장된 제1 세션의 패킷들(401) 및 제2 세션의 패킷들(402)은 제1 코어(441)의 패킷 병합 모듈(460)(예: 도 2의 패킷 병합 모듈(233))을 통해 패킷 병합과 관련된 동작이 수행될 수 있다. 예컨대, 패킷 병합 모듈(460)은, 패킷 병합과 관련된 동작(예컨대, 병합(merge), 플러시(flush), 또는 스킵(skip))을 수행할 수 있다. 상기 제4 코어(444)에 대응하는 버퍼(464)에 저장된 제3 세션의 패킷들(403)은 제4 코어(444)의 패킷 병합 모듈(460)(예: 도 2의 패킷 병합 모듈(233))을 통해 패킷 병합과 관련된 동작이 수행될 수 있다.
다양한 실시예에 따라, 상기 제1 코어(441) 및 제4 코어(444)를 통해 패킷 병합 처리된 제1 세션의 데이터 패킷(401), 제2 세션의 데이터 패킷(402), 제3 세션의 데이터 패킷(403)은 패킷 병합 모듈(460)에서 패킷 스티어링 모듈(470)을 통해 각각 별개의 코어에서 처리되도록 할 수 있다. 예컨대, 상기 패킷 스티어링 모듈(470)은 제1 코어(441)를 통해 병합 처리된 제1 세션의 데이터 패킷(401)을 수신하여 제2 코어(442)에 대응하는 버퍼(472)에 저장할 수 있다. 상기 제2 코어(442)에 대응하는 버퍼(472)에 저장된 제1 세션의 데이터 패킷(401)은 제2 코어(442)의 네트워크 패킷 처리 모듈(480)을 통해 처리될 수 있다. 상기 패킷 스티어링 모듈(470)은 제1 코어(441)에서 병합 처리된 제2 세션의 데이터 패킷(402)을 수신하여 제3 코어(443)에 대응하는 버퍼(473)에 저장할 수 있다. 상기 제3 코어(443)에 대응하는 버퍼(473)에 저장된 제2 세션의 데이터 패킷(402)은 제3 코어(443)의 네트워크 패킷 처리 모듈(480)을 통해 처리될 수 있다. 상기 패킷 스티어링 모듈(470)은 제4 코어(444)에서 병합 처리된 제3 세션의 데이터 패킷(403)을 제4 코어(444)에 대응하는 버퍼(474)에 저장할 수 있다. 상기 제4 코어(444)에 대응하는 버퍼(474)에 저장된 제3 세션의 데이터 패킷(403)은 제4 코어(444)의 네트워크 패킷 처리 모듈(480)을 통해 처리될 수 있다.
다양한 실시예에 따라, 상기 컨트롤러(410)는 상기 CP(110)로부터 AP(120)로 전달되는 각 수신 버퍼(예: 수신 버퍼 A, 수신 버퍼 B)의 메타 정보 및/또는 각 세션의 상태 정보에 기반하여 각 세션의 데이터 패킷(402)의 동작 코어를 결정할 수 있다. 예컨대, 상기 컨트롤러(410)는 상기 CP(110)로부터 AP(120)로 전달되는 각 수신 버퍼의 메타 정보 및/또는 각 세션의 상태 정보에 기반하여, 각 세션별 데이터 패킷에 대해 패킷 병합 모듈(460)을 통해 패킷 병합 처리를 수행할 코어 및/또는 네트워크 패킷 처리 모듈(480)을 통해 네트워크 패킷 처리를 수행할 코어를 결정할 수 있다. 다양한 실시예에 따라, 상기 컨트롤러(410)는 상기 CP(110)로부터 AP(120)로 전달되는 각 수신 버퍼의 메타 정보 및/또는 각 세션의 상태 정보에 기반하여, 각 세션별 데이터 패킷에 대한 패킷 병합 처리 시 해당 패킷 병합 모듈(460)의 패킷 병합 수준을 조절할 수 있다.
다양한 실시예에 따라, 상기 CP(110)의 수신 버퍼(예: 수신 버퍼 A, 수신 버퍼 B)는 CP(110)에서 수신된 패킷을 저장하는 메모리 공간으로서, 상기 AP(120) 또는 컨트롤러(410)의 그룹 추가 요청에 따라 해당 그룹에 대응하는 새로운 수신 버퍼가 생성되거나, 그룹 삭제 요청에 따라 해당 그룹에 대응하는 수신 버퍼가 삭제될 수 있다.
다양한 실시예에 따라, 상기 매핑 모듈(450)은 CP(110)로부터 전달받은 메타 정보(또는 메타 데이터)를 확인하고, 수신된 각 세션의 패킷 데이터를 해당 코어에 분배할 수 있다. 상기 매핑 모듈(450)은 상기 컨트롤러(410)를 통해 각 그룹별로 생성된 수신 버퍼(예: 수신 버퍼 A, 수신 버퍼 B)에 대한 패킷 병합 모듈(460)에 대한 코어 매핑 정보를 확인할 수 있다. 상기 매핑 모듈(450)은 상기 확인 결과에 기반하여, 각 코어에 해당 버퍼를 할당하고, 매핑된 코어를 활성화(activate)시킬 수 있다.
다양한 실시예에 따라, 상기 컨트롤러(410)는 어플리케이션(앱), 서비스, 또는 프레임워크(framework)를 모니터링할 수 있다. 상기 컨트롤러(410)는 특징 앱, 특정 서비스, 또는 특정 세션을 모니터링하고, 데이터베이스에 저장된 정보에 기반하여 CP(110)의 필터(430)에 관련 정보를 제공할 수 있다. 상기 컨트롤러(410)는 패킷 병합 모듈(460)에 각 동작 코어별로 설정된 패킷 병합 정책을 전달할 수 있다. 상기 컨트롤러(410)는 매핑 모듈(450) 및 패킷 병합 모듈(460)을 모니터링하여, 설정된 조건에 따라 그룹을 추가하여 CP(110)에 전달하거나, 설정된 조건에 따라 특정 그룹에 대응하는 수신 버퍼에 매핑된 코어(예컨대, 패킷 병합 모듈(460)의 코어, 또는 네트워크 패킷 처리 모듈(480)의 코어)를 갱신할 수 있다.
다양한 실시예에 따라, 상기 데이터베이스(420)는 각 세션에 대한 그룹 매핑 정보를 저장할 수 있다. 상기 데이터베이스(420)는 컨트롤러(410)를 통해 수신된 세션별 시간당 처리량, 그룹 상태별 코어 사용량 정책, 그룹 상태별 병합 정책을 저장할 수 있다. 상기 컨트롤러(410)는 상기 데이터베이스(420)에 저장된 정보를 참조하여 매핑 모듈(450) 및/또는 패킷 스티어링 모듈(470)의 코어 매핑을 제어 또는 변경하거나, 패킷 병합 모듈(460)의 패킷 병합 정책을 조정할 수 있다.
다양한 실시예에 따라, 컨트롤러(410)는 특정 서비스와 관련된 데이터(예컨대, URSP(UE route selection policy), 에지 디스커버리(edge discovery) 응답 메시지)를 수신하고, 데이터베이스(420)를 갱신할 수 있다. 상기 컨트롤러(410)는 상기 갱신된 데이터베이스(420)에 기반하여 변경된 세션별 그룹 정보를 CP(110)의 필터(430)로 제공할 수 있다. CP(110)의 필터(430)는 수신된 데이터 패킷을 상기 그룹 정보에 기반하여 수신 버퍼에 저장할 수 있다. 상기 CP(110)는 각 수신 버퍼에 데이터를 AP(120)에 전달할 때, AP(120)의 제어 코어(예: 제1 코어(441))를 인터럽트할 수 있으며, 각 수신 버퍼에 대한 메타 정보를 갱신할 수 있다. 다양한 실시예에 따라, AP(120)의 제어 코어는 갱신된 메타 정보를 확인하고, 확인된 메타 정보에 기반하여 각 수신 버퍼를 패킷 병합 모듈(460)의 각 코어에 매핑할 수 있다. AP(120)는 매핑된 각 코어에서 해당 세션의 데이터 패킷을 병합 처리할 수 있다. 상기 컨트롤러(410)는 세션 상태를 모니터링하고, 상기 매핑 모듈(450) 및/또는 패킷 스티어링 모듈(470)의 동작 코어를 업데이트할 수 있다. 상기 컨트롤러(410)는 상기 패킷 병합 모듈(460)의 동작 수준을 업데이트할 수 있다.
도 9a 및 도 9b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 다양한 실시예에 따르면, 컨트롤러(410)로부터 수신된 정보에 기반하여 수신 버퍼(예: 논리 큐(logical queue))의 개수가 변경되는 경우, 각 세션 또는 그룹에 대해 할당된 코어가 변경될 수도 있다. 예컨대, 수신 버퍼의 개수가 변경되는 경우, 도 9a에 도시된 바와 같이 사전에 정의된 수신 버퍼별 코어 번호에 따라 패킷 병합 모듈(460)에 매핑되는 코어가 할당될 수 있다. 상기 수신 버퍼의 개수가 변경됨에 따라 네트워크 패킷 처리 모듈(480)에 매핑되는 코어가 중복되는 경우, 도 9b에 도시된 바와 같이 중복되는 세션의 코어를 변경된 해당 그룹의 클러스터 내의 다른 코어로 변경할 수 있다.
도 9a를 참조하면, 제1 세션이 생성됨에 따라 상기 제1 세션에 매핑된 제1 그룹에 대응하는 논리 버퍼 1(431a)이 생성될 수 있다. 컨트롤러(410)는 상기 제1 그룹에 대해 패킷 병합 모듈(460)에 매핑할 코어(이하, 설명의 편의상 '제1 동작 코어'라 지칭하기로 한다.)를 제1 코어(441)로 설정하고, 네트워크 패킷 처리 모듈(480)에 매핑할 코어(이하, 설명의 편의상 '제2 동작 코어'라 지칭하기로 한다.)를 제4 코어(444)로 설정할 수 있다.
도 9b를 참조하면, 제2 세션이 생성됨에 따라 상기 제2 세션에 매핑된 제2 그룹에 대응하는 논리 버퍼 2(431b)가 생성될 수 있다. 컨트롤러(410)는 상기 제2 그룹에 대해 제1 동작 코어를 제4 코어(444)로 설정하고, 제2 동작 코어를 제4 코어(444)로 설정할 수 있다. 상기 제2 세션에 대한 코어 설정에 따라 상기 제1 세션의 제2 동작 코어와 상기 제2 세션의 제2 동작 코어가 중복될 수 있다. 상기 코어가 중복됨에 따라, 상기 제1 세션의 제2 동작 코어는 상기 제4 코어(444)와 동일 클러스터 내의 다른 코어인 제3 코어(443)로 변경될 수 있다. 상기 중복되는 세션에 따라 코어를 재할당하는 방법은 랜덤, 라운드 로빈(round robin), 또는 부하 인지 기반의 방법이 적용될 수 있으나 제한은 없다.
다양한 실시예에 따라, 특정 논리 버퍼(예: 논리 버퍼 2(431b))에 할당된 세션이 특정 프로토콜(예: URSP)을 사용할 경우, 제2 동작 코어를 사용하지 않고, 제1 동작 코어에서 직접 상위 레이어로 데이터 패킷을 전달하거나, 제2 동작 코어를 제1 동작 코어와 동일한 코어로 할당할 수 있다.
도 10a 및 도 10b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 다양한 실시예에 따라, 현재 사용 가능한 코어가 모든 그룹별 버퍼가 사용 가능한 제1 동작 코어를 포함하지 못하는 경우, 컨트롤러(410)는 데이터베이스(420)에 정의된 그룹의 우선순위에 따라 낮은 순서에 우선하여 하위 그룹의 제1 동작 코어로 이동시킬 수 있다. 예컨대, 전자 장치(101)는 전자 장치(101)의 상태(예: 낮은 배터리 상태, 또는 높은 온도), 시스템의 설계(예: CPU 사용량), 또는 알고리즘에 따라 핫 플러그(hotplug) 방식을 이용하여 특정 코어를 동적으로 온라인(online)/오프라인(offline) 처리할 수 있다. 이 경우, 전자 장치(101)에서 현재 사용 가능한 코어와 버퍼가 사용하고자 하는 코어는 서로 상이하게 될 수 있다.다양한 실시예에 따라, 상이한 두 그룹이 하나의 코어에 할당되는 경우, 컨트롤러(410)는 높은 우선 순위의 그룹 버퍼를 우선하여 설정된 코어에 스케줄링할 수 있다.
예컨대, 도 10a를 참조하면, 제1 세션의 데이터 패킷은 논리 버퍼 1에 저장되고, 제2 세션의 데이터 패킷은 논리 버퍼 2에 저장되고, 제3 세션의 데이터 패킷은 논리 버퍼 3에 저장될 수 있다. 다양한 실시예에 따라, 제1 세션의 제1 동작 코어와 제2 동작 코어는 제1 코어(441)로 설정될 수 있다. 제2 세션의 제1 동작 코어와 제2 동작 코어는 제2 코어(442)로 설정될 수 있다. 제3 세션의 제1 동작 코어와 제2 동작 코어는 제3 코어(443)로 설정될 수 있다. 전술한 바와 같이 제4 코어(444)는 오프라인 상태로 제어 될 수 있다.
다양한 실시예에 따라, 도 10b를 참조하면, 상기 설명한 바와 같이 추가적인 코어(예: 제3 코어(443))가 오프라인 상태가 되거나, 논리 버퍼의 추가 또는 증가로 가용 가능한 제 1 동작 코어와 논리 버퍼의 개수가 상이한 경우 다음과 같이 동작할 수 있다. 컨트롤러(410)는 상대적으로 우선 순위가 낮은 제1 세션 및 제2 세션은 제1 동작 코어 및 제2 동작 코어를 제1 코어(441)로 설정할 수 있다. 다음으로 컨트롤러(410)는 우선 순위가 낮은 제3 세션에 대해 제1 동작 코어 및 제2 동작 코어를 제2 코어(442)로 변경하여 처리되도록 제어할 수 있다.
도 11a 및 도 11b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 다양한 실시예에 따라, 현재 사용 가능한 코어가 모든 그룹 버퍼의 사용 가능한 제2 동작 코어를 포함하지 못하는 경우, 컨트롤러(410)는 데이터베이스(420)에 정의된 그룹의 우선순위에 따라 우선하여 동일 클러스터의 동작 코어와 마스크를 할당할 수 있다. 상기 동작 코어와 마스크의 할당된 코어의 개수는 가용 코어 수에 비례하여 변경될 수 있다. 상기 동작 코어와 마스크에 할당된 코어의 개수는 가용 코어 수에 따라 차등하여 사전에 정의된 정책을 따를 수 있다. 예컨대, 우선 순위에 따라 하위 그룹은 상위 그룹의 동작 코어를 회피하여 할당할 수 있다. 상기 하위 그룹이 가용한 동작 코어와 마스크에 할당된 코어의 개수가 임계 값 이하인 경우, 상위 그룹의 동작 코어를 회피하지 않을 수 있다.
다양한 실시예에 따라, 도 11a를 참조하면, 제1 세션의 데이터 패킷 및 제2 세션의 데이터 패킷은 논리 버퍼 1에 저장되고, 제3 세션의 데이터 패킷은 논리 버퍼 2에 저장될 수 있다. 다양한 실시예에 따라, 제1 세션의 데이터 패킷 및 제2 세션의 데이터 패킷의 제1 동작 코어는 동일한 제1 코어(441)로 설정될 수 있다. 다양한 실시예에 따라, 제1 세션의 데이터 패킷의 제2 동작 코어는 제2 코어(442)로 설정되고, 제2 세션의 데이터 패킷의 제2 동작 코어는 상기 제1 세션과 달리 제3 코어(443)로 설정될 수 있다. 다양한 실시예에 따라, 제3 세션의 데이터 패킷의 제1 동작 코어 및 제2 동작 코어는 제4 코어(444)로 설정될 수 있다.
다양한 실시예에 따라, 도 11b를 참조하면, 제4 코어(444)가 오프라인 상태가 되어 가용하지 않은 상태가 되면, 상기 제4 코어(444)에 할당된 제3 세션은 상대적으로 우선 순위가 높으므로 동일한 클러스터 내의 다른 코어인 제3 코어(443)로 변경하여 할당될 수 있다. 상기 제3 코어(443)의 제2 동작 코어에 제2 세션과 제3 세션이 중복되므로, 상대적으로 우선 순위가 낮은 제2 세션의 제2 동작 코어를 제3 코어(443)에서 제2 코어(442)로 변경시킬 수 있다.
도 12는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 12를 참조하면, 컨트롤러(410)는 메타 정보를 확인할 수 있으며, 상기 메타 정보 확인 결과 CP(110)의 논리 버퍼 개수가 직전의 메타 정보와 상이한 경우, 컨트롤러(410)는 각 동작 코어에 할당된 패킷들의 패킷 병합 정도를 임계 시간 및/또는 임계 패킷 수 동안 임계 수준 이상으로 증가시킬 수 있다.
예컨대, 도 12를 참조하면, 상기 컨트롤러(410)는 상기 제1 세션에 대한 패킷 병합 모듈(460)을 제1 코어(450)에 의해 처리할 때, 제2 세션에 의해 논리 버퍼 2가 생성됨에 따라 패킷 병합 모듈(460)의 패킷 병합 정도를 임계 시간 및/또는 임계 패킷 수 동안 임계 수준 이상으로 증가시킬 수 있다. 상기 제1 세션에 대한 패킷 병합 정보를 조정함으로써 제2 세션에 대한 제2 동작 코어의 할당 및 제1 세션에 대한 제2 동작 코어의 이동 시간을 확보할 수 있으며, 이에 따라 제1 세션의 제2 동작 코어 이동에 따른 오류 발생을 방지할 수 있다.
도 13은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 13을 참조하면, 전자 장치(101)는 동작 1310에서 컨트롤러 이벤트 핸들러(controller event handler)를 시작할 수 있다. 전자 장치(101)의 컨트롤러(410)는 동작 1320에서 수신 논리 버퍼의 개수가 변경되었는지 확인할 수 있다. 상기 동작 1320의 확인 결과, 수신 논리 버퍼의 개수가 변경되지 않은 경우(동작 1320-아니오), 동작 1360에서 컨트롤러 이벤트 핸들러를 종료시킬 수 있다. 상기 동작 1320의 확인 결과, 수신 논리 버퍼의 개수가 변경된 경우(동작 1320-예), 도 12에서 상술한 바와 같이 동작 1330에서 임계 패킷 및/또는 임계 시간 동안 이전 수신된 패킷들의 병합 수준의 임계값을 가중시킬 수 있다.
다양한 실시예에 따라, 전자 장치(101)의 컨트롤러(410)는 동작 1340에서 각 그룹별 제1 동작 코어를 신규 할당하고, 이전 그룹의 동작 코어를 갱신할 수 있다. 컨트롤러(410)는 도 12에 도시된 바와 같이 동작 1350에서 각 그룹별 제2 동작 코어를 신규 할당하고, 이전 그룹의 동작 코어를 갱신할 수 있다. 상기 제1 동작 코어 및 제2 동작 코어에 대한 신규 할당 및 갱신이 완료되면, 동작 1360에서 컨트롤러 이벤트 핸들러는 종료될 수 있다.
도 14는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 다양한 실시예에 따라, 전자 장치(101)의 매핑 모듈(450)에서 CP(110)로부터 수신된 메타 정보의 확인 결과, 논리 버퍼에 저장된 패킷의 수가 임계 값 이상인 경우 및/또는 해당 논리 버퍼에 삽입된 패킷의 세션 수가 임계 값 이하인 경우, 해당 세션의 패킷 병합 수준에 대한 임계 값을 가중시킬 수 있다.
도 14를 참조하면, 필터(430)는 수신된 제1 세션의 데이터 패킷을 논리 버퍼 2에 저장할 수 있다. 컨트롤러(410)는 상기 제1 세션을 제2 그룹에 매핑할 수 있다. 상기 컨트롤러(410)는 상기 제2 그룹에 대한 제1 동작 코어 및 제2 동작 코어로서 제4 코어(444)를 할당할 수 있다. 다양한 실시예에 따라, 상기 논리 버퍼 2에 저장된 제1 세션의 데이터 패킷의 개수가 임계값 이상이거나, 상기 CP(110)의 논리 버퍼에 저장된 세션의 수가 임계값 이하인 경우(예컨대, 도 14에서는 세션이 하나인 경우), 컨트롤러(410)는 상기 제4 코어(444)에 대응하는 버퍼(464)에 저장되어 패킷 병합 모듈(460)에서 처리되는 상기 제1 세션의 패킷 병합 수준의 임계값을 가중시킬 수 있다. 상기 제1 세션의 패킷 병합 수준의 임계값을 가중시킴에 따라, 컨트롤러(410)는 상기 제1 세션에 매핑된 제2 그룹의 제2 동작 코어를 제4 코어(444)에서 제3 코어(443)로 변경시킬 수 있다. 상기 제1 세션에 대한 패킷 병합 모듈(460)의 패킷 병합 수준을 조정함으로써 제1 세션에 대한 제2 동작 코어의 이동 시간을 확보할 수 있으며, 이에 따라 제1 세션의 제2 동작 코어 이동에 따른 오류 발생을 방지할 수 있다.
도 15는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 15를 참조하면, 전자 장치(101)의 컨트롤러(410)는 동작 1510에서 모니터링을 시작할 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 매핑 모듈(450)로부터 수신된 메타 정보를 확인할 수 있다. 예컨대, 컨트롤러(410)는 동작 1520에서 상기 메타 정보에 기반하여 각 수신 논리 버퍼의 패킷 수를 판단할 수 있으며, 동작 1530에서 각 수신 논리 버퍼에 삽입된 세션 수를 판단할 수 있으며, 동작 1540에서 관련 세션의 시간당 패킷 처리량을 판단할 수 있다.
다양한 실시예에 따라, 상기 확인 결과 설정된 조건을 만족하면(예컨대, 수신 논리 버퍼에 저장된 패킷이 임계값 이상인 경우 및/또는 해당 수신 논리 버퍼에 삽입된 패킷의 세션 수가 임계 값 이하인 경우), 상기 컨트롤러(410)는 동작 1550에서 해당 세션의 패킷 병합 수준에 대한 임계 값을 가중시킬 수 있다. 상기 제1 세션의 패킷 병합 수준의 임계값을 가중시킴에 따라, 도 14에 예시된 바와 같이 컨트롤러(410)는 상기 제1 세션에 매핑된 제2 그룹의 제2 동작 코어를 제4 코어(444)에서 제3 코어(443)로 변경시킬 수 있다.
도 16은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 16을 참조하면, CP(110)의 필터(430)는 제1 세션의 데이터 패킷 및 제2 세션의 데이터 패킷을 논리 버퍼 1에 저장하고, 제3 세션의 데이터 패킷은 논리 버퍼 2에 저장할 수 있다. 다양한 실시예에 따라, 제1 세션의 데이터 패킷 및 제2 세션의 데이터 패킷의 제1 동작 코어는 동일한 제1 코어(441)로 설정될 수 있다. 다양한 실시예에 따라, 제1 세션의 데이터 패킷의 제2 동작 코어는 제2 코어(442)로 설정되고, 제2 세션의 데이터 패킷의 제2 동작 코어는 상기 제1 세션과 달리 제3 코어(443)로 설정될 수 있다. 다양한 실시예에 따라, 제3 세션의 데이터 패킷의 제1 동작 코어 및 제2 동작 코어는 제4 코어(444)로 설정될 수 있다.
다양한 실시예에 따라, 어플리케이션(300) 또는 클라우드(1600)에서는 서비스 또는 앱에 대한 이벤트(예: 실행, 삭제, 또는 정보 갱신)가 발생하거나, 해당 서비스 또는 앱의 소캣(socket)에 대한 이벤트(예: 실행, 삭제, 또는 정보 갱신 요청)가 발생할 수 있다. 상기 컨트롤러(410)는 상기 어플리케이션(300) 또는 클라우드(1600)로부터 서비스 또는 앱에 대한 이벤트를 수신하거나, 해당 서비스 또는 앱의 소켓에 대한 이벤트를 수신하면, 상기 수신된 이벤트에 기반하여 해당 소켓의 IP 또는 포트(port), 그룹 정보를 데이터베이스(420)에서 갱신할 수 있다. 컨트롤러(410)는 상기 데이터베이스(420)에 갱신된 정보에 기반하여 세션별 그룹 정보를 CP(110)의 필터(430)에 전달할 수 있다. CP(110)의 수신 버퍼가 비워지고, 상기 컨트롤러(410)로부터 수신된 세션별 그룹 정보에 의해 그룹의 수가 갱신되면, 상기 갱신된 그룹 수에 대응하는 논리 버퍼가 생성될 수 있다.
도 17은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 17을 참조하면, 전자 장치(101)는 동작 1710에서 컨트롤러 업데이트 이벤트 발생을 감지할 수 있다. 다양한 실시예에 따라, 상기 컨트롤러 업데이트 이벤트는 어플리케이션 또는 프로세스의 실행, 어플리케이션 또는 플랫폼에서 컨트롤러(410)로 이벤트 호출, MEC 서버로부터 특정 정보 수신, URSP 정책의 변경, 매핑 모듈 핸들러에서의 이벤트 발생을 포함할 수 있다.
다양한 실시예에 따라, 전자 장치(101)의 컨트롤러(410)는 동작 1720에서 발생한 이벤트를 판단하고, 동작 1730에서 도 16에서 전술한 바와 같이 데이터베이스(420)를 갱신할 수 있다. 다양한 실시예에 따라, 동작 1740에서 변경된 내용과 관련된 소켓이 존재하는 것으로 판단되면(동작 1740-예), 전자 장치(101)의 컨트롤러(410)는 동작 1750에서 그룹 갱신을 위해 필터(430)로 변경된 세션별 그룹 정보를 전달함으로써 그룹 필터가 갱신될 수 있다. 상기 그룹 필터가 갱신 처리되면, 동작 1760에서 이벤트 처리가 종료될 수 있다. 상기 동작 1740에서 변경된 내용과 관련된 소켓이 존재하지 않는 것으로 판단되면(동작 1740-아니오), 동작 1760에서 이벤트 처리가 종료될 수 있다.
도 18은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 18을 참조하면, 전자 장치(101)는 동작 1810에서 소켓 이벤트 발생을 감지할 수 있다. 다양한 실시예에 따라, 상기 소켓 이벤트는 소켓의 열림(open) 또는 닫힘(close), 특정 프로토콜의 패킷 수신을 포함할 수 있다.
다양한 실시예에 따라, 전자 장치(101)의 컨트롤러(410)는 동작 1820에서 발생한 소켓 이벤트를 판단하고, 동작 1830에서 해당 소켓 주소를 이용하여 데이터베이스 관련 정보를 판단할 수 있다. 전자 장치(101)의 컨트롤러(410)는 상기 데이터베이스 관련 정보 판단 결과, 동작 1840에서 그룹 필터의 갱신이 필요하다고 판단되면(동작 1840-예), 전자 장치(101)의 컨트롤러(410)는 동작 1850에서 그룹 갱신을 위해 필터(430)로 변경된 세션별 그룹 정보를 전달함으로써 그룹 필터가 갱신될 수 있다. 상기 그룹 필터가 갱신 처리되면, 동작 1860에서 이벤트 처리가 종료될 수 있다. 상기 동작 1840에서 그룹 필터의 갱신이 필요하지 않다고 판단되면(동작 1840-아니오), 동작 1860에서 이벤트 처리가 종료될 수 있다.
다양한 실시예에 따라, 상기 데이터베이스(420)는 앱 관리 테이블, 그룹 매핑 테이블, 세션 관리 테이블을 저장할 수 있다. 다양한 실시예에 따라, 상기 앱 관리 테이블은 다음과 같이 관리될 수 있다.
- 앱이 단말에 설치되었을 때. 앱 관리 테이블에서 해당 앱과 정보를 추가
- 앱이 단말에서 삭제 되었을 때, 앱 관리 테이블에서 해당 앱과 정보를 삭제
다양한 실시예에 따라, 상기 앱 관리 테이블에 앱 정보 추가 시 그룹 정의 방법은 미리 정의된 앱과 그룹의 매핑 정보에 따라 할당되거나, 미리 정의된 메타정보 및 그룹의 매핑 정보에 따라 할당되거나 기본 값으로 할당될 수 있다. 상기 앱의 메타 정보 값은 운영 제제의 "Manifest" 정보, 앱 마켓에서 제공하는 앱의 메타 정보, 또는 사전에 정의된 앱 및 메타 정보의 매핑 정보로부터 획득할 수 있다.
다양한 실시예에 따라, 상기 앱 관리 테이블은 하기 <표 1>과 같은 형태로 관리될 수 있다.
앱 명 앱/서비스 ID 그룹
com.samXX.app1 10340 1
com.samXX.app6 10500 2
다양한 실시예에 따라, 상기 그룹 매핑 테이블은 하기 <표 2>와 같은 형태로 관리될 수 있다.
앱 명 그룹
com.samXX.app1 1
com.samXX.app6 2
다양한 실시예에 따라, 카테고리 및 그룹의 매핑 테이블은 하기 <표 3>과 같은 형태로 관리될 수 있다.
메타 정보 그룹
게임 1
VOIP 2
다양한 실시예에 따라, 세션 관리 테이블은 하기 <표 4>와 같은 형태로 관리될 수 있다.
Flow ID 앱/서비스 ID 그룹 프로토콜 Srcip address
00001 10340 1 TCP 192.168.0.1
00002 10340 1 UDP 192.168.0.1
00003 10400 1 VoIP 192.168.0.1
00004 10500 0 TCP 192.168.0.2
다양한 실시예에 따라, 세션 정보는 세션 관리 테이블에 없는 세션의 첫 수신 패킷 시 또는 첫 송신 패킷 발생시 생성될 수 있다. 다양한 실시예에 따라, 세션이 임계 시간 이상 통신하지 않는 경우, 세션의 소켓이 닫히게 된 경우, 세션의 앱/서비스가 삭제된 경우, 세션의 인터페이스가 삭제되거나 변경된 경우 세션 정보는 삭제될 수 있다. 다양한 실시예에 따라, 세션의 인터페이스가 변경된 경우, 세션의 앱/서비스의 그룹이 변경된 경우, 세션의 프로토콜에 대한 그룹이 변경된 경우, 컨트롤러가 세션의 그룹을 변경하는 경우 세션 정보가 변경될 수 있다.
다양한 실시예에 따라, 신규 세션 정보의 그룹은 다음과 같이 할당될 수 있다.
- 앱 관리 테이블의 앱 및 그룹의 매핑 정보에 기반하여 할당
- 사전에 정의된 프로토콜 및 그룹의 매핑 정보에 기반하여 할당
- 인터페이스 주소 및 그룹의 매핑 정보에 기반하여 할당
- 기본 값으로 할당
다양한 실시예에 따라, 세션 정보는 <표 4>의 플로우 ID(flow ID)로 지칭될 수 있으며, 접속(connection)의 정보에 기반하여 생성될 수 있다. 예컨대, 상기 세션 정보는, 소스 IP 주소(source IP address), 소스 포트(source port), 목적지 IP 주소(destination IP address), 목적지 포트(destination port), IP 프로토콜(IP protocol) 중 적어도 하나를 해싱함으로써 생성될 수 있다.
다양한 실시예에 따라, 세션에 상이한 정책에 따라 상이한 그룹 적용이 요청될 때 세션의 그룹 적용 요청의 우선순위에 따라 적용되거나 임의의 요청의 그룹을 적용할 수 있다. 예컨대, 세션의 그룹 적용 요청의 우선 순위는 사전에 정의된 우선 순위, 요청의 시간 순서(예: 오래된 순서, 최신 순서), 임의의 우선 순위, 요청의 조합에 따라 사전에 정의된 우선 순위를 포함할 수 있다.
다양한 실시예에 따라, 세션에 적용된 그룹이 해제될 때 세션의 그룹을 갱신하는 방식은 우선 순위에 따라 적용된 경우 차 순위의 그룹을 적용할 수 있으며, 기본 그룹으로 적용하여 초기화하거나, 중복 적용 그룹 중 임의의 그룹을 적용할 수 있다.
다양한 실시예에 따라, 그룹별 CPU 매핑 테이블은 하기 <표 5>와 같이 나타낼 수 있으며, 그룹 별 병합 수준 가중치 테이블은 하기 <표 6>과 같이 나타낼 수 있으며, 세션 패킷 관리 테이블은 하기 <표 7>과 같이 나타낼 수 있으며, 가용 코어 및 그룹 수준 별 정적 정책 테이블은 하기 <표 8>과 같이 나타낼 수 있다.
그룹 제1 동작 코어 마스크 제2 동작 코어 마스크
0 0x01(1000|0000) 0x22(0100|0100)
1 0x10(0000|1000) 0x44(0010|0010)
QoS 클래스 병합 수준 가중치
0 10
1 1
Flow ID 제1 동작 코어 번호 제2 동작 코어 번호 단위 시간당
패킷 처리량
병합 수준
00001 4 6 200 2
00002 4 2 10,000 4
00003 4 6 5,000 2
00004 1 5 200,000 MAX
가용 코어 그룹 수 정책 1
(그룹 별 코어 매핑 테이블 번호)
8 4개 이상 1
8 3 2
도 19는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 19를 참조하면, 전자 장치(101)가 MEC(mobile edge computing) 서비스 앱 또는 MEC 서비스 IP를 컨트롤러에 지원하는 경우 컨트롤러(410)는 상기 MEC서비스 정보에 기반하여 그룹을 결정할 수 있다.
다양한 실시예에 따라, AP(120)는 메모리(130)에 저장된 운영체제, 미들웨어, 서비스의 프레임워크 중 적어도 하나를 통해 MEC 제어 서버와 통신을 할 수 있으며, 상기 AP(120)는 상기 MEC 제어 서버와 통신하여 MEC 서비스 정보를 확인할 수 있다. 다양한 실시예에 따라, 상기 MEC 서비스 정보는 MEC 서비스 어플리케이션 명칭, MEC 서비스 FQDN(full qualified domain name), MEC 서비스 IP 주소, 지정된 어플리케이션의 MEC 서비스 여부, 지정된 IP 주소의 MEC 서비스 여부, 또는 지정된 FQDN 의 IP 주소를 포함할 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 상기 MEC 서비스 정보를 확인하고 데이터베이스(420)를 통해 관리할 수 있다. 상기 컨트롤러(410)는 상기 데이터베이스(420)에 저장된 MEC 서비스 정보에 기반하여 그룹을 결정할 수 있다.
도 20은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 20을 참조하면, 전자 장치(101)의 AP(120)는 도 19에서 전술한 바와 같이 동작 2010에서 MEC 서버를 통해 MEC 서비스 정보를 확인하고 갱신할 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 동작 2020에서 상기 MEC 서비스 정보가 갱신된 것을 확인하고, 데이터베이스(420)에 상기 MEC 서비스 관련 정보를 갱신할 수 있다. 컨트롤러(410)는 동작 2040에서 상기 데이터베이스(420)에 저장된 MEC 관련 정보에 기반하여 CP(110)의 필터(430)로 그룹 갱신 정보를 전달할 수 있다.
다양한 실시예에 따라, 상기 AP(120)가 MEC 제어 서버로부터 수신하는 MEC 서비스 정보로서 MEC 서비스 앱 리스트는 하기 <표 9>와 같이 데이터베이스(420)에 저장될 수 있으며, MEC 서비스 정보는 하기 <표 10>과 같이 데이터베이스(420)에 저장될 수 있다.
FQDN 메타 정보(카테고리, 우선 순위)
com.samXX.app1 s1.domain.com 클라우드 게임, 1
com.samXX.app2 s2.domain.com 영상 스트리밍, 2
요청 FQDN 응답 IP
s1.domain.com Ff:ff:ff:ff:ff:ff
s3.domain.com -
다양한 실시예에 따라, AP(120)는 MEC 정보 변경 시, 변경된 MEC 정보를 직접 데이터베이스(420)에 저장하고 컨트롤러(410)에 변경 내용을 전달할 수 있다. 상기 AP(120)는 상기 MEC 정보 변경 시, 컨트롤러(410)에 이벤트를 발생시켜 컨트롤러(410)가 데이터베이스(420) 내의 MEC 정보 변경 내용을 확인하도록 할 수 있다. 다른 실시예로서, 컨트롤러(410)는 주기적으로 데이터베이스(420) 내의 MEC 정보 변경 내용을 확인하도록 동작할 수도 있다.
다양한 실시예에 따라, MEC 정보 변경 시, 컨트롤러(410)는 MEC 서비스 앱 리스트에 포함된 메타 정보에 기반하여 앱 관리 테이블에 앱과 그룹을 정의할 수 있다. 상기 메타 정보는 카테고리, 명시된 그룹 정보를 포함할 수 있다. 상기 메타 정보에 기반하여 그룹을 정의하는 방법은 임의로 할당하거나 미리 정의된 메타 정보 및 그룹 매핑 정보에 기반하여 할당할 수 있다. 다양한 실시예에 따라, MEC 서비스 앱 리스트에서 MEC 정보가 삭제된 경우, 컨트롤러(410)는 임의 할당 방법, 기본값으로 할당하는 방법, 중복 적용 시 우선 순위에 기반하여 차 순위 그룹을 적용하는 방법에 의해 앱 관리 테이블에서 앱과 그룹 정보를 갱신할 수 있다.
다양한 실시예에 따라, MEC 정보 변경 시, 컨트롤러(410)는 갱신된 앱 관리 테이블을 기준으로 세션의 그룹을 갱신하거나, MEC 제어 서버로부터 수신된 MEC 서비스 정보에 기반하여 다음과 같은 방법으로 세션의 그룹을 갱신할 수 있다.
- 갱신된 MEC 서비스 앱 리스트를 기반으로 앱 관리 테이블을 갱신하고, 갱신된 앱 관리 테이블을 기준으로 세션 관리 테이블에 세션을 갱신
- MEC 서비스 FQDN을 기반으로 해당 앱의 그룹을 결정하여 앱 관리 테이블을 갱신하고, 갱신된 앱 관리 테이블을 기준으로 세션 관리 테이블에 세션을 갱신
- MEC 서비스 IP를 기반으로 해당 세션을 세션 관리 테이블에서 갱신
- MEC 서비스 여부 정보를 기반으로 앱 관리 테이블을 갱신하고, 갱신된 앱 관리 테이블을 기준으로 세션 관리 테이블에 세션을 갱신
- FQDN의 쿼리(query) 의 IP 를 기준으로 세션을 세션 관리 테이블에서 갱신
도 21은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 21을 참조하면, 전자 장치(101)의 AP(120)의 어플리케이션(253)은 CP(110)로부터 URSP 정책(URSP rule)을 수신할 수 있다. 예컨대, 어플리케이션(253)은 CP(110)로부터 수신된 URSP 정책을 해석하고 관리할 수 있다. 상기 어플리케이션(253)은 상기 CP(110)로부터 수신된 URSP 정책에 따라 특정 앱의 소켓을 특정 인터페이스에 할당할 수 있다. 상기 인터페이스 할당 정보는 컨트롤러(410)에 제공될 수 있다. 상기 컨트롤러(410)는 상기 인터페이스 할당 정보를 데이터베이스(420)에 저장 및 관리할 수 있다. 상기 컨트롤러(410)는 상기 데이터베이스(420)에 저장된 인터페이스 할당 정보에 기반하여 세션별 그룹 정보를 생성하여 CP(110)의 필터(430)에 전달할 수 있다.
도 22는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 22를 참조하면, 다양한 실시예에 따라 AP(120)는 동작 2210에서 CP(110)로부터 URSP 규칙을 수신할 수 있다. AP(120)는 동작 2220에서 URSP 규칙에 따라 인터페이스를 생성할 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 동작 2230에서 상기 새로운 인터페이스의 생성을 확인하고, 동작 2240에서 데이터베이스(420)에 인터페이스 정보 갱신이 필요한 지 여부를 판단할 수 있다. 상기 동작 2240의 판단 결과, 데이터베이스에 인터페이스 정보 갱신이 필요하다고 판단되는 경우(동작 2240-예), 컨트롤러(410)는 동작 2250에서 데이터베이스에 인터페이스 정보를 갱신할 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 동작 2250에서 상기 인터페이스 정보가 갱신된 것을 확인하고, 동작 2260에서 상기 데이터베이스(420)에 저장된 인터페이스 갱신 정보에 기반하여 CP(110)의 필터(430)로 그룹 갱신 정보를 전달할 수 있다. 상기 동작 2240의 판단 결과, 데이터베이스에 인터페이스 정보 갱신이 필요하지 판단되는 경우(동작 2240-아니오), CP(110)의 필터(430)로 그룹 갱신 정보를 전달하지 않고 종료할 수 있다.
다양한 실시예에 따라, 컨트롤러(410)는 인터페이스 변경을 모니터링 할 수 있다. 예컨대, AP(120)에서 인터페이스 변경 명령 시, 컨트롤러(410)에 명령 결과를 전달할 수 있다. 다른 실시예로서, 컨트롤러(410)가 주기적으로 인터페이스의 상태를 확인하도록 동작할 수도 있다. 다양한 실시예에 따라, 컨트롤러(410)는 데이터베이스(420)에서 인터페이스 목록에 변경사항이 있는지 확인하거나, 갱신된 인터페이스 중, 인터페이스 이름에 사전 정의된 키워드가 포함되어 있는지 확인하거나, AP(120)에서 컨트롤러(410)에 갱신된 인터페이스 명이나 IP를 알려주었는지 확인하거나, 미리 정의된 IP로 할당된 인터페이스가 생성되거나 삭제되었는지 확인함으로써 인터페이스 정보 갱신 필요 여부를 판단할 수 있다. 상기 데이터베이스(420)에 저장 및 관리되는 인터페이스 관리 테이블은 하기 <표 11>과 같이 구성될 수 있다.
인터페이스 명 인터페이스 주소 그룹
Rmnet0 1.1.1.11.1.1.2 1
urllc-rmnet0 Ffff:ffff:ffff:ffff 2
embb-rmnet1 1.1.1.3 3
다양한 실시예에 따라, 컨트롤러(410)는 갱신이 필요한 인터페이스와 할당된 IP에 새로운 그룹을 할당하고, 데이터베이스(420)에 상기 <표 11>과 같이 인터페이스 관리 테이블로 저장할 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 상기 인터페이스에 기반하여 그룹을 임의 할당하거나, 기존에 정의되어 있지 않은 새로운 그룹을 할당하거나, 미리 정의된 인터페이스 및 그룹의 매핑 정보에 기반하여 그룹을 할당할 수 있다. 예컨대, 컨트롤러(410)는 기존 소켓 중에서 해당 인터페이스를 사용하거나 IP 주소를 주소로 사용하는 경우 해당 소켓의 그룹을 해당 인터페이스의 그룹 주소로 갱신할 수 있다.
도 23은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 23을 참조하면, 다양한 실시예에 따라, AP(120)는 동작 2310에서 새로운 인터페이스를 생성할 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 동작 2320에서 상기 새로운 인터페이스의 생성을 확인하고, 동작 2330에서 새로 생성된 인터페이스가 URLLC 관련 인터페이스인지 여부를 판단할 수 있다. 상기 동작 2330의 판단 결과, 새로 생성된 인터페이스가 URLLC 관련 인터페이스로 확인된 경우(동작 2330-예), 컨트롤러(410)는 동작 2340에서 데이터베이스에 인터페이스 정보를 갱신할 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 동작 2340에서 상기 인터페이스 정보가 갱신된 것을 확인하고, 동작 2350에서 상기 데이터베이스(420)에 저장된 인터페이스 갱신 정보에 기반하여 CP(110)의 필터(430)로 그룹 갱신 정보를 전달할 수 있다. 상기 동작 2330의 판단 결과, 데이터베이스에 인터페이스 정보 갱신이 필요하지 판단되는 경우(동작 2330-아니오), CP(110)의 필터(430)로 그룹 갱신 정보를 전달하지 않고 종료할 수 있다.
다양한 실시예에 따라, AP(120)에서 인터페이스 변경 명령 시, 컨트롤러(410)에 명령 결과 전달함으로써 컨트롤러(410)는 인터페이스 변경 여부를 확인할 수 있다. 다른 방법으로서, 컨트롤러(410)는 주기적으로 인터페이스 상태를 확인할 수 있다. 상기 컨트롤러(410)는 인터페이스 이름에 미리 정의된 키워드(예: urllc, urllc-rmnet0)가 포함되어 있는지 여부를 통해 URLLC 관련 인터페이스 여부를 확인할 수 있다. 다양한 실시예에 따라, AP(120)에서 컨트롤러(410)에 URLLC 용 인터페이스 명 또는 IP를 통지함으로써 컨트롤러(410)는 URLLC관련 인터페이스 여부를 확인할 수 있다. 다양한 실시예에 따라, 컨트롤러(410)는 미리 정의된 IP로 할당된 인터페이스인지 여부를 통해 URLLC관련 인터페이스 여부를 확인할 수 있다.
다양한 실시예에 따라, 컨트롤러(410)는 URLLC 인터페이스와 할당된 IP에 새로운 그룹 ID를 할당하고 데이터베이스(420)에 저장할 수 있다. 컨트롤러(410)는 기존 소켓 중에서 해당 인터페이스를 사용하거나 IP 주소를 주소로 사용하는 경우 해당 소켓의 그룹을 해당 인터페이스의 그룹 주소로 갱신할 수 있다. 상기 데이터베이스(420)에 저장 및 관리되는 URLLC 관련 인터페이스의 새로운 그룹 ID가 할당된 테이블은 하기 <표 12>와 같이 구성될 수 있다.
인터페이스 명 IP 주소 그룹
rmnet0 192.168.0.1 1
urllc-rmnet0 192.168.0.2 2
예컨대, 데이터베이스(420)에 저장된 URLLC 관련 소켓의 테이블은 하기 <표 13>에서 하기 <표 14>의 테이블로 갱신될 수 있다.
Flow ID 앱/서비스 ID 그룹 프로토콜 Src ip address
00001 10340 1 TCP 192.168.0.1
00002 10340 1 UDP 192.168.0.1
...
00004 10500 1 TCP 192.168.0.2
Flow ID 앱/서비스 ID 그룹 프로토콜 Src ip address
00001 10340 1 TCP 192.168.0.1
00002 10340 1 UDP 192.168.0.1
...
00004 10500 2 TCP 192.168.0.2
도 24a 및 도 24b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 24a를 참조하면, 제1 세션, 제2 세션 및 제3 세션은 제2 그룹에 대응하는 논리 버퍼 2에 저장될 수 있다. 상기 제1 세션의 데이터 패킷, 제2 세션의 데이터 패킷 및 제3 세션의 데이터 패킷은 제1 동작 코어로서 제4 코어(444)가 할당될 수 있다. 상기 제1 세션의 데이터 패킷은 제2 동작 코어로서 제2 코어(442)가 할당될 수 있으며, 상기 제2 세션의 데이터 패킷 및 제3 세션의 데이터 패킷은 제2 동작 코어로서 제3 코어(443)가 할당될 수 있다.
다양한 실시예에 따라, 매핑 모듈(450)에서 CP(110)로부터 수신한 메타 정보를 기반으로 수신 논리 버퍼의 패킷이 임계 값 이상인 경우 또는 해당 수신 논리 버퍼에 삽입된 패킷의 세션 수가 임계 값 이상인 경우, 컨트롤러(410)는 패킷 병합 모듈(460)에서 각 세션의 시간당 패킷 처리량에 기초하여, CP(110)의 필터(430)로 추가 그룹의 갱신을 요청할 수 있다. 다양한 실시예에 따라, CP(110)는 도 24b에 도시된 바와 같이 논리 버퍼 3을 생성하여 해당 세션(예컨대, 제3 세션)의 데이터 패킷이 별도의 코어에서 처리되도록 할 수 있다. 예컨대, 도 24b에 도시된 바와 같이 제1 세션의 데이터 패킷 및 제2 세션의 데이터 패킷은 새로 생성된 논리 버퍼 3에 저장될 수 있다. 상기 제3 세션의 데이터 패킷은 기존 논리 버퍼 2에 그대로 저장될 수 있다. 다양한 실시예에 따라, 상기 논리 버퍼 2에 저장된 제3 세션은 제1 동작 코어 및 제2 동작 코어로서 제3 코어(443)를 할당받을 수 있다. 상기 제1 세션의 데이터 패킷 및 제2 세션의 데이터 패킷은 제1 동작 코어로서 제4 코어(444)를 할당받을 수 있다. 상기 제1 세션의 데이터 패킷은 제2 동작 코어로서 제2 코어(442)를 할당받을 수 있으며, 제2 세션의 데이터 패킷은 제2 동작 코어로서 제1 코어(441)를 할당받을 수 있다.
도 25는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 25를 참조하면, 다양한 실시예에 따라, 컨트롤러(410)는 동작 2510에서 모니터링을 시작할 수 있다. 상기 컨트롤러(410)는 동작 2520에서 메타 정보에 기반하여 각 수신 논리 버퍼의 패킷 수 판단할 수 있으며, 동작 2530에서 각 수신 논리버퍼에 삽입된 세션 수를 판단할 수 있으며, 2540에서 관련 세션의 시간당 패킷 처리량 판단할 수 있다.
다양한 실시예에 따라, 상기 컨트롤러(410)는 동작 2550에서 상기 판단한 정보들에 기반하여 해당 수신 논리 버퍼 필터에서 해당 세션을 제거하고 신규 그룹 필터를 생성할 수 있다. 상기 컨트롤러(410)는 상기 신규 그룹을 생성하도록 CP(110)의 필터(430)에 QoS 클래스 정보를 공유할 수 있다.
도 26은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 26을 참조하면, CP(110)는 메모리 상 쓰기(write) 시작점을 복수로 나누고, 필터에 따라 복수의 오프셋(offset)을 기준으로 데이터를 할당할 수 있다. CP(110)는 AP(120)에 링 버퍼(ring buffer)와 함께 메타 정보(또는 메타 데이터)를 함께 전달하고, AP(120)는 상기 전달된 메타 정보에 기반하여 수신된 데이터 패킷들을 복수의 동작 코어들(441, 442, 443, 444)로 맵핑할 수 있다. 예컨대, 필터(430)는 A 세션의 데이터 패킷(401)을 수신하고, 상기 수신된 데이터 패킷(401)을 수신 버퍼 상에서 기 저장된 A 세션의 데이터 패킷 다음 위치에 저장할 수 있다. 상기 필터(430)는 B 세션의 데이터 패킷(403)을 수신하고, 상기 수신된 데이터 패킷(403)을 수신 버퍼 상에서 기 저장된 B 세션의 데이터 패킷 다음 위치에 저장할 수 있다. 상기 CP(110)는 한 번의 물리적 인터럽트(physical interrupt(top half))를 활용하여 복수의 소프트웨어 인터럽트(bottom half) 병렬 처리할 수 있다. 다양한 실시예에 따라, CP(110)는 수신한 각 프레임의 크기와 메타 정보를 활용하여 플로우 ID(또는 세션 ID를 생성할 수 있다.) 예컨대, 도 26에 도시된 바와 같이 A(15)는 메타 정보 A와 프레임 크기 15 bytes를 나타낼 수 있다. CP(110)는 별도의 하드웨어나 CP 내부 리소스를 활용하여 프레임의 메타 정보를 기반으로 플로우 ID를 생성할 수 있다. 상기 CP(110)가 활용하는 정보는 소스 IP 주소(source IP address), 소스 포트(source port), 목적지 IP 주소(destination IP address), 목적지 포트(destination port), IP 프로토콜(IP protocol) 중 적어도 하나를 포함할 수 있다. 상기 CP(110)는 전술한 AP(120)에서의 플로우 ID 또는 세션 ID를 생성하는 방법과 동일 또는 유사한 방법으로 플로우 ID 또는 세션 ID를 생성할 수 있다.
다양한 실시예에 따라, CP(110)는 수신한 프레임의 플로우 ID를 기준으로 플로우 ID 및 그룹의 매핑 정보(또는 세션 ID 및 그룹의 매핑 정보) 활용하여 수신 버퍼를 결정할 수 있다. 해당 테이블에 없는 프레임은 임의의 그룹으로 설정하거나, 사전에 정의된 기본 그룹을 설정할 수 있다. 상기 CP(110)는 상기 결정된 수신 버퍼의 위치에 해당 프레임 데이터를 위치시킨 후 버퍼의 상태를 갱신할 수 있다. 예컨대, CP(110)는 수신한 프레임을 버퍼에 위치시킬 때, 버퍼에 삽입된 패킷의 수와, 삽입된 세션의 수를 갱신할 수 있다. 상기 CP(110)가 AP(120)로 현재 버퍼를 전달할 때 버퍼 메모리 정보를 메타 정보로 AP(120)에 전달할 수 있다. 다양한 실시예에 따라, 상기 메타 정보는 버퍼 번호, 버퍼의 시작 위치, 버퍼의 끝 위치, 버퍼의 패킷 수, 버퍼의 세션 수 중 적어도 하나를 포함할 수 있다. 상기 CP(110)가 AP(120)로 버퍼와 메타 정보를 전달하면, CP(110)는 버퍼 정보를 초기화할 수 있다.
도 27a 및 도 27b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 27a를 참조하면, CPU0에서 제1 세션 및 제2 세션에 대한 패킷 분배 및 병합 처리를 수행하는 경우, 제2 세션에 대한 스택 처리는 최소 270μs에서 최대 730μs가 소요될 수 있다. 예컨대, 제1 세션에 대한 패킷 분배 및 병합 처리(2701) 및 제2 세션(예: 저지연 서비스와 관련된 세션)에 대한 패킷 분배 및 병합 처리(2702)는 CPU0(예: 제1 코어)에서 수행될 수 있다. 상기 제1 세션에 대한 네트워크 스택 처리(2703)는 CPU1(예: 제2 코어)에서 수행될 수 있다. 상기 제2 세션에 대한 네트워크 스택 처리는 2704a와 같이 CPU1에서 제1 세션에 대한 네트워크 스택 처리(2703)가 완료된 후에 처리되거나, 2704b와 같이 CPU2(예: 제3 코어)를 통해 병렬적으로 처리될 수 있다. 상기 제2 세션에 대한 네트워크 스택 처리가 2704a와 같이 처리되는 경우, 730μs가 소요될 수 있으며, 2704b와 같이 처리되는 경우 270 μs가 소요될 수 있다.
이와 비교할 때, 도 27b를 참조하면, 전술한 바와 같이 다양한 실시예에 따라 CPU0에서 2711과 같이 제2 세션을 패킷 병합 처리 전 별도 코어에 매핑할 수 있다. 상기 2711과 같이 각 세션에 대한 코어 매핑이 먼저 처리된 후, 제1 세션은 CPU0에서 패킷 병합 처리(2701)가 수행되고, CPU1에서 네트워크 스택 처리(2703)가 수행될 수 있다. 제2 세션은 CPU4에서 패킷 병합 처리(2702) 및 네트워크 스택 처리(2704c)가 수행될 수 있다. 예컨대, 제2 세션은 패킷을 병합 처리하기 전 CPU0에서 CPU4(예: 제5 코어)로 매핑함으로써 제2 세션에 대한 스택 처리는 60μs가 소요될 수 있다. 상기 제2 세션인 URLLC 서비스와 관련된 세션인 경우 도 27b의 방법에 의해 패킷 처리에 대한 지연을 감소시킬 수 있다.
도 28a 및 도 28b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 28a를 참조하면, CPU0에서 제1 세션 및 제2 세션에 대한 패킷 분배 및 병합 처리를 수행하는 경우, 제2 세션에 대한 스택 처리는 650μs가 소요될 수 있다. 예컨대, 제1 세션에 대한 패킷 분배 및 병합 처리(2801) 및 제2 세션(예: 저지연 서비스와 관련된 세션)에 대한 패킷 분배 및 병합 처리(2802)는 CPU0(예: 제1 코어)에서 수행될 수 있다. 상기 제1 세션에 대한 네트워크 스택 처리(2803a, 2803b, 2803c)는 CPU1, CPU2, CPU3에서 분산 처리될 수 있다. 상기 제2 세션에 대한 네트워크 스택 처리는 2804a, 2804b, 2804c와 같이 각 CPU에서 제1 세션에 대한 네트워크 스택 처리(2803a, 2803b, 2803c)가 완료된 후에 처리될 수 있다. 상기 제2 세션에 대한 네트워크 스택 처리가 2804a, 2804b, 2804c와 같이 처리되는 경우, 650μs가 소요될 수 있다.
이와 비교할 때, 도 28b를 참조하면, 전술한 바와 같이 다양한 실시예에 따라, 2811과 같이 CPU0에서 제2 세션을 패킷 병합 처리 전 별도 코어에 매핑할 수 있다. 상기 2811과 같이 각 세션에 대한 코어 매핑이 먼저 처리된 후, 제1 세션은 CPU0에서 패킷 병합 처리(2801)가 수행되고, CPU1, CPU2, CPU3에서 병렬적으로 네트워크 스택 처리(2803a, 2803b, 2803c)가 수행될 수 있다. 제2 세션은 CPU4에서 패킷 병합 처리(2802) 및 네트워크 스택 처리(2804d)가 수행될 수 있다. 예컨대, 제2 세션은 패킷 병합 처리하기 전 CPU0에서 CPU4로 매핑함으로써 제2 세션에 대한 스택 처리는 60μs가 소요될 수 있다. 상기 제2 세션인 URLLC 서비스와 관련된 세션인 경우 도 28b의 방법에 의해 패킷 처리에 대한 지연을 감소시킬 수 있다.
도 29a 및 도 29b는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 29a를 참조하면, 우선 순위에 따라 각 세션을 처리하는 경우 후순위의 세션은 처리가 지연될 수 있다. 예컨대, 제1 순위 데이터의 버퍼 처리(2901)가 완료된 후, 제2 순위 데이터의 버퍼 처리(2902)를 완료하고, 상기 제2 순위 데이터의 버퍼 처리(2902)가 완료된 후 제3 순위 데이터의 버퍼 처리(2903)이 완료될 수 있다.
이와 비교할 때, 도 29b를 참조하면, 전술한 바와 같이 CPU0에서 패킷을 병합 처리하기 전 각 세션의 데이터 패킷을 2910과 같이 CPU0에서 CPU1 내지 CPU3으로 매핑함으로써 전체적인 패킷 처리 속도를 향상시킬 수 있다. 예컨대, 전술한 바와 같이 다양한 실시예에 따라 CPU0에서 2910과 같이 제1 순위 데이터와 제2 순위 데이터와 제3 순위 데이터를 각각 별도 코어에 매핑할 수 있다. 제1 순위 데이터의 버퍼 처리(2901)와 제 2 순위 데이터의 버퍼 처리(2902)와 제3 순위 데이터의 버퍼 처리(2903)는 각각 CPU1, CPU2, CPU3에서 병렬 처리될 수 있다.
도 30은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 30을 참조하면, 동작 3010에서 CP(110)는 데이터를 수신할 수 있다. 동작 3020에서, 메타 정보가 필터에 대응되는 것이 존재하는 경우(동작 3020-예), CP(110)의 필터(430)는 동작 3030에서 기본 논리 큐(논리 버퍼)에 데이터를 삽입할 수 있다. 동작 3020에서, 메타 정보가 필터에 대응되는 것이 존재하지 않는 경우(동작 3020-아니오), CP(110)의 필터(430)는 동작 3040에서 필터에 기반하여 지정된 논리 큐(논리 버퍼) 번호로 데이터를 삽입할 수 있다.
도 31은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 31을 참조하면, CP(110)는 동작 3110에서 AP(120)로부터 갱신된 필터 정보 수신할 수 있다. 동작 3120에서 갱신할 필터가 존재하는 것으로 판단하면(동작 3120-예), 동작 3130에서 현재 큐가 비어 있는지 확인할 수 있다. 상기 동작 3130에서 현재 큐가 비어 있는 것으로 판단하면(동작 3130-예), CP(110)는 동작 3140에서 필터를 갱신하고, 동작 3150에서 현재 필터를 기준으로 데이터를 처리할 수 있다. 동작 3120에서 갱신할 필터가 존재하지 않는 것으로 판단하면(동작 3120-아니오), 동작 3150에서 현재 필터를 기준으로 데이터를 처리할 수 있다. 동작 3130에서 현재 큐가 비어 있지 않는 것으로 판단하면(동작 3130-아니오), 동작 3150에서 현재 필터를 기준으로 데이터를 처리할 수 있다.
도 32는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 32를 참조하면, 컨트롤러(410)는 동작 3210에서 필터 갱신을 시작할 수 있다. 동작 3220에서 그룹의 종류 개수가 변경된 것으로 판단되면(동작 3220-예), 컨트롤러(410)는 동작 3230에서 사전에 정의된 그룹 수 당 각 논리 큐 시작 주소로 논리 큐 정보를 갱신할 수 있다. 동작 3240에서, 컨트롤러(410)는 CP(110)로 필터 정보 갱신을 요청할 수 있으며, 동작 3250에서 필터 정보 갱신이 종료될 수 있다. 동작 3220에서 그룹의 종류 개수가 변경되지 않은 것으로 판단되면(동작 3220-아니오), 컨트롤러(410)는 동작 3240에서, 논리 큐 정보의 갱신 없이 CP(110)로 필터 정보 갱신을 요청할 수 있다.
도 33은 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리를 위한 동작의 흐름을 도시한다. 도 33을 참조하면, AP(120)는 동작 3310에서 AP 인터럽트 맵 엔진(매핑 모듈) 핸들러를 시작할 수 있다. AP(120)는 동작 3320에서 메타 데이터를 조회하고, 동작 3330에서 그룹별 논리 큐의 개수가 직전과 상이한지 판단할 수 있다. 상기 동작 3330의 판단 결과, 그룹별 논리 큐의 개수가 직전과 상이하지 않으면(동작 3330-아니오), AP(120)는 동작 3340에서 컨트롤러(410)에 논리 큐 개수 변경 이벤트를 전달할 수 있다. 상기 동작 3330의 판단 결과, 그룹별 논리 큐의 개수가 직전과 상이하면(동작 3330-예), AP(120)는 동작 3350에서 컨트롤러(410)를 통해 데이터베이스(42)의 그룹별 제1 동작 코어를 조회할 수 있다.
다양한 실시예에 따라, AP(120)는 동작 3360에서 각 그룹 별 논리 큐를 각 그룹 별 제1 동작 코어에 매핑하고, 동작 3370에서 매핑된 각 제1 동작 코어를 활성화시킬 수 있다. 동작 3380에서 AP 인터럽트 핸들러는 종료될 수 있다.
다양한 실시예에 따라, 필터 구조는 하기 <표 15>와 같이 구성될 수 있으며, 논리 큐(수신 버퍼)는 하기 <표 16> 및 <표 17>가 같이 구성될 수 있다.
플로우 ID 그룹
0001 1
0002 1
그룹 수신 버퍼 번호
0 0
1 1
수신 버퍼 번호 시작 주소 오프셋 패킷 수 세션 수
0 0x0000 0x256 2 1
1 0xFFFF 0x0 2 1
다양한 실시예에 따라, 수신 버퍼 크기는 CP(110) 또는 AP(120)에서 결정할 수 있다. 예컨대, CP(110)가 내부 정책에 따라 버퍼의 크기를 결정할 수 있다. CP(110)는 미리 정의된 정책 혹은 AP(120)로부터 전달받은 정책에 따라 버퍼의 크기를 결정할 수 있다. 상기 CP(110)에서 참조하는 각 정책은 CP의 버퍼별 통계, 임계 시간 동안의 각 버퍼 삽입 프레임 수, 임계 시간 동안 수신된 총 프레임 수를 포함할 수 있다.
다양한 실시예에 따라, AP(120)는 각 정책에 따라 CP(110)의 인터페이스를 이용하여 버퍼의 크기를 결정할 수 있다. 예컨대, AP(120)는 CP(110)의 버퍼 별 통계로서 임계 시간 동안의 각 버퍼 삽입 프레임 수, 또는 임계 시간 동안 수신된 총 프레임 수를 활용할 수 있으며, 세션 별 통계 및 정보로서 임계 시간 동안 수신된 각 세션의 패킷 수 또는 수신된 각 세션의 패킷 수와 각 세션이 할당된 버퍼 환산 시 버퍼 별 수신 패킷 수 또는 앱의 카테고리 및 카테고리에 할당된 버퍼 크기를 참조할 수 있다.
다양한 실시예에 따라, 상기 미리 정의된 정책은 고정된 크기, 전체 크기 대비 동일 비율, 그룹 별 정의된 크기 또는 비율을 포함할 수 있으며, 상기 방법들의 버퍼 크기를 결정함에 있어서 크기는 절대 크기, 상대적 크기(비율), 절대적 크기에 대한 상대적 비율, 버퍼의 절대 개수, 버퍼의 상대적 개수, 전체 개수에 대한 상대적 비율을 포함할 수 있다.
도 34는 다양한 실시예들에 따른, 전자 장치에서의 데이터 패킷 처리의 예를 도시한다. 도 34를 참조하면, CP(110)가 그룹에 대응하는 논리 버퍼의 생성을 지원하지 않는 경우, AP(120) 내에 수신 버퍼(491, 192)를 생성하여 전술한 실시예들을 구현할 수 있다.
예컨대, AP(120)의 메모리에 적어도 하나의 수신 버퍼(예: 수신 버퍼 A(491), 수신 버퍼 B(492))를 생성할 수 있다. AP(120)는 CP(110)에서 전달된 프레임(또는 데이터 패킷)에 대하여 컨트롤러(410)로부터 전달받은 필터에 대응하여, 상기 AP(120) 내의 수신 버퍼(491, 492)에 분류하여 저장할 수 있다. 상기 프레임의 형태는 상기 CP(110)로부터 프레임(또는 데이터 패킷)을 수신하기 위해 상기 AP(120) 내에 구현되는 플랫폼에 따라 CP(110) 에서 수신 데이터를 처리하는 경우와 유사하게 커널에서 패킷을 관리하기 위한 구조체(예: 리눅스 커널의 경우, sk_buff)로 할당하기 전의 형태를 포함할 수 있다. 이후의 동작들에서 전술한 실시예들에서의 AP(120)에서 전술한 CP(110)를 대체하는 구성은 커널(kernel)의 드라이버 또는 패킷 프로세싱 플랫폼 또는 필터 엔진 중 적어도 하나에서 동작하는 프로그램으로 구현될 수 있다.
전술한 다양한 실시예들에서는 AP(120)와 CP(110)가 별도의 구성으로 구분하여 설명하고 있으나, 상기 AP(120)와 CP(110)가 별도의 칩(chip)으로 구성되는 것을 한정하는 것은 아니다. 예컨대, 상기 AP(120)와 CP(110)는 각각 별도의 칩으로 구성될 수도 있으며, 하나의 칩 내에서 어플리케이션 프로세서와 통신 프로세서가 포함되도록 구성될 수도 있다. 다양한 실시예에 따라, 전술한 실시예들에서, 컨트롤러(410)는 상기 AP(120) 내에 포함될 수도 있으며, 상기 AP(120)와는 별도의 하드웨어 구성에 포함될 수도 있다. 예컨대, 상기 컨트롤러(410)는 상기 도 1 및 후술하는 도 35의 프로그램(140) 형태로 저장될 수 있으며, 운영 체제(142)(예: AndroidTM, LinuxTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM), 미들 웨어(144), 또는 어플리케이션(146) 중 어느 하나의 형태로 구현될 수 있다.
도 35는 다양한 실시예에 따른 프로그램(140)을 예시하는 블록도(3500)이다. 일실시예에 따르면, 프로그램(140)은 전자 장치(101)의 하나 이상의 리소스들을 제어하기 위한 운영 체제(142), 미들웨어(144), 또는 상기 운영 체제(142)에서 실행 가능한 어플리케이션(146)을 포함할 수 있다. 운영 체제(142)는, 예를 들면, AndroidTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 프로그램(140) 중 적어도 일부 프로그램은, 예를 들면, 제조 시에 전자 장치(101)에 프리로드되거나, 또는 사용자에 의해 사용 시 외부 전자 장치(예: 전자 장치(102 또는 104), 또는 서버(108))로부터 다운로드되거나 갱신 될 수 있다.
운영 체제(142)는 전자 장치(101)의 하나 이상의 시스템 리소스들(예: 프로세스, 메모리, 또는 전원)의 관리(예: 할당 또는 회수)를 제어할 수 있다. 운영 체제(142)는, 추가적으로 또는 대체적으로, 전자 장치(101)의 다른 하드웨어 디바이스, 예를 들면, 입력 모듈(150), 음향 출력 모듈(155), 디스플레이 모듈 (160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 구동하기 위한 하나 이상의 드라이버 프로그램들을 포함할 수 있다.
미들웨어(144)는 전자 장치(101)의 하나 이상의 리소스들로부터 제공되는 기능 또는 정보가 어플리케이션(146)에 의해 사용될 수 있도록 다양한 기능들을 어플리케이션(146)으로 제공할 수 있다. 미들웨어(144)는, 예를 들면, 어플리케이션 매니저(3501), 윈도우 매니저(3503), 멀티미디어 매니저(3505), 리소스 매니저(3507), 파워 매니저(3509), 데이터베이스 매니저(3511), 패키지 매니저(3513), 커넥티비티 매니저(3515), 노티피케이션 매니저(3517), 로케이션 매니저(3519), 그래픽 매니저(3521), 시큐리티 매니저(3523), 통화 매니저(3525), 또는 음성 인식 매니저(3527)를 포함할 수 있다.
어플리케이션 매니저(3501)는, 예를 들면, 어플리케이션(146)의 생명 주기를 관리할 수 있다. 윈도우 매니저(3503)는, 예를 들면, 화면에서 사용되는 하나 이상의 GUI 자원들을 관리할 수 있다. 멀티미디어 매니저(3505)는, 예를 들면, 미디어 파일들의 재생에 필요한 하나 이상의 포맷들을 파악하고, 그 중 선택된 해당하는 포맷에 맞는 코덱을 이용하여 상기 미디어 파일들 중 해당하는 미디어 파일의 인코딩 또는 디코딩을 수행할 수 있다. 리소스 매니저(3507)는, 예를 들면, 어플리케이션(146)의 소스 코드 또는 메모리(130)의 메모리의 공간을 관리할 수 있다. 파워 매니저(3509)는, 예를 들면, 배터리(189)의 용량, 온도 또는 전원을 관리하고, 이 중 해당 정보를 이용하여 전자 장치(101)의 동작에 필요한 관련 정보를 결정 또는 제공할 수 있다. 일실시예에 따르면, 파워 매니저(3509)는 전자 장치(101)의 바이오스(BIOS: basic input/output system)(미도시)와 연동할 수 있다.
데이터베이스 매니저(3511)는, 예를 들면, 어플리케이션(146)에 의해 사용될 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저(3513)는, 예를 들면, 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 갱신을 관리할 수 있다. 커넥티비티 매니저(3515)는, 예를 들면, 전자 장치(101)와 외부 전자 장치 간의 무선 연결 또는 직접 연결을 관리할 수 있다. 노티피케이션 매니저(3517)는, 예를 들면, 지정된 이벤트(예: 착신 통화, 메시지, 또는 알람)의 발생을 사용자에게 알리기 위한 기능을 제공할 수 있다. 로케이션 매니저(3519)는, 예를 들면, 전자 장치(101)의 위치 정보를 관리할 수 있다. 그래픽 매니저(3521)는, 예를 들면, 사용자에게 제공될 하나 이상의 그래픽 효과들 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다.
시큐리티 매니저(3523)는, 예를 들면, 시스템 보안 또는 사용자 인증을 제공할 수 있다. 통화(telephony) 매니저(3525)는, 예를 들면, 전자 장치(101)에 의해 제공되는 음성 통화 기능 또는 영상 통화 기능을 관리할 수 있다. 음성 인식 매니저(3527)는, 예를 들면, 사용자의 음성 데이터를 서버(108)로 전송하고, 그 음성 데이터에 적어도 일부 기반하여 전자 장치(101)에서 수행될 기능에 대응하는 명령어(command), 또는 그 음성 데이터에 적어도 일부 기반하여 변환된 문자 데이터를 서버(108)로부터 수신할 수 있다. 일 실시예에 따르면, 미들웨어(3544)는 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다. 일 실시예에 따르면, 미들웨어(144)의 적어도 일부는 운영 체제(142)의 일부로 포함되거나, 또는 운영 체제(142)와는 다른 별도의 소프트웨어로 구현될 수 있다.
어플리케이션(146)은, 예를 들면, 홈(3551), 다이얼러(3553), SMS/MMS(3555), IM(instant message)(3557), 브라우저(3559), 카메라(3561), 알람(3563), 컨택트(3565), 음성 인식(3567), 이메일(3569), 달력(3571), 미디어 플레이어(3573), 앨범(3575), 와치(3577), 헬스(3579)(예: 운동량 또는 혈당과 같은 생체 정보를 측정), 또는 환경 정보(3581)(예: 기압, 습도, 또는 온도 정보 측정) 어플리케이션을 포함할 수 있다. 일실시예에 따르면, 어플리케이션(146)은 전자 장치(101)와 외부 전자 장치 사이의 정보 교환을 지원할 수 있는 정보 교환 어플리케이션(미도시)을 더 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치로 지정된 정보 (예: 통화, 메시지, 또는 알람)를 전달하도록 설정된 노티피케이션 릴레이 어플리케이션, 또는 외부 전자 장치를 관리하도록 설정된 장치 관리 어플리케이션을 포함할 수 있다. 노티피케이션 릴레이 어플리케이션은, 예를 들면, 전자 장치(101)의 다른 어플리케이션(예: 이메일 어플리케이션(3569))에서 발생된 지정된 이벤트(예: 메일 수신)에 대응하는 알림 정보를 외부 전자 장치로 전달할 수 있다. 추가적으로 또는 대체적으로, 노티피케이션 릴레이 어플리케이션은 외부 전자 장치로부터 알림 정보를 수신하여 전자 장치(101)의 사용자에게 제공할 수 있다.
장치 관리 어플리케이션은, 예를 들면, 전자 장치(101)와 통신하는 외부 전자 장치 또는 그 일부 구성 요소(예: 외부 전자 장치의 디스플레이 모듈 또는 카메라 모듈)의 전원(예: 턴-온 또는 턴-오프) 또는 기능(예: 밝기, 해상도, 또는 포커스)을 제어할 수 있다. 장치 관리 어플리케이션은, 추가적으로 또는 대체적으로, 외부 전자 장치에서 동작하는 어플리케이션의 설치, 삭제, 또는 갱신을 지원할 수 있다.
다양한 실시예 중 어느 하나에 따른 전자 장치는, 복수의 코어(core)들을 포함하는 어플리케이션 프로세서, 및 상기 어플리케이션 프로세서와 전기적으로 연결된 통신 프로세서를 포함하고, 상기 어플리케이션 프로세서는, 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 상기 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하고, 상기 적어도 하나의 세션 중 제1 세션에 대해 설정된 제1 코어에 대응하는 정보를 상기 통신 프로세서로 전송하고, 상기 통신 프로세서로부터 상기 제1 세션의 데이터 패킷을 수신하고, 상기 제1 코어에 대응하는 정보에 기반하여, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 세션에 대해 설정된 상기 제1 코어를 통해 처리할 수 있다.
다양한 실시예에 따라, 상기 제1 세션은 URLLC(ultra reliable low latency communication)와 관련된 세션이며, 상기 제1 코어는 상기 복수의 코어들 중 상대적으로 처리 속도가 더 빠른 코어일 수 있다.
다양한 실시예에 따라, 상기 통신 프로세서는, 상기 어플리케이션 프로세서로부터 상기 제1 코어에 대응하는 정보를 수신하고, 상기 제1 코어에 대응하는 정보에 기반하여, 상기 제1 코어에 대응하는 논리 버퍼를 할당하고, 외부 전자 장치로부터 상기 제1 세션의 데이터 패킷을 수신하면, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 코어에 대응하여 할당된 논리 버퍼에 저장할 수 있다.
다양한 실시예에 따라, 상기 제1 코어에 대응하는 정보는, 적어도 하나의 세션을 그룹화하여 설정한 제1 그룹 정보에 대응할 수 있다.
다양한 실시예에 따라, 상기 어플리케이션 프로세서는, 상기 통신 프로세서로부터 수신된 데이터 패킷을 상기 복수의 코어들의 각 코어별로 분배하고, 상기 각 코어별로 분배된 데이터 패킷에 대해 상기 수신된 데이터 패킷의 각 세션별로 패킷 병합 정책을 적용하도록 제어할 수 있다.
다양한 실시예에 따라, 상기 어플리케이션 프로세서는, 상기 제1 세션에 대해 상기 제1 코어에서 패킷 병합 처리를 수행하도록 제어하고, 상기 제1 세션에 대해 상기 제1 코어에서 네트워크 패킷 처리를 수행하도록 제어할 수 있다.
다양한 실시예에 따라, 상기 어플리케이션 프로세서는, 상기 제1 세션에 대해 상기 제1 코어에서 패킷 병합 처리를 수행하도록 제어하고, 상기 제1 세션에 대해 상기 제1 코어와 다른 제2 코어에서 네트워크 패킷 처리를 수행하도록 제어할 수 있다.
다양한 실시예에 따라, 상기 어플리케이션 프로세서는, 상기 통신 프로세서로부터 메타 정보를 수신하고, 상기 수신된 메타 정보에 기반하여, 상기 통신 프로세서로부터 수신된 상기 제1 세션의 데이터 패킷을 상기 제1 코어를 통해 처리하도록 제어할 수 있다.
다양한 실시예 중 어느 하나에 따른 전자 장치는, 복수의 코어(core)들을 포함하는 어플리케이션 프로세서, 및 상기 어플리케이션 프로세서와 전기적으로 연결된 통신 프로세서를 포함하고, 상기 어플리케이션 프로세서는, 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 어플리케이션 프로세서에 포함된 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하고, 상기 통신 프로세서로부터 상기 적어도 하나의 세션 중 제1 세션의 데이터 패킷을 수신하고, 상기 수신된 제1 세션의 데이터 패킷을 상기 복수의 코어들 중 상기 제1 세션에 대응하여 설정된 제1 코어를 위해 할당된 버퍼에 저장하고, 상기 버퍼에 저장된 제1 세션의 데이터 패킷을 상기 제1 코어를 통해 처리할 수 있다.
다양한 실시예에 따라, 상기 어플리케이션 프로세서는, 상기 제1 코어를 통해 상기 제1 세션의 데이터 패킷에 대한 패킷 병합 정책을 적용할 수 있다.
다양한 실시예에 따라, 상기 제1 세션은 URLLC(ultra reliable low latency communication)와 관련된 세션이며, 상기 제1 코어는 상기 복수의 코어들 중 상대적으로 처리 속도가 더 빠른 코어일 수 있다.
다양한 실시예 중 어느 하나에 따른 전자 장치의 동작 방법은, 전자 장치에서 수신된 데이터 패킷을 처리하는 방법에 있어서, 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 어플리케이션 프로세서에 포함된 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하는 동작, 상기 적어도 하나의 세션 중 제1 세션에 대해 설정된 제1 코어에 대응하는 정보를 상기 어플리케이션 프로세서에서 통신 프로세서로 전송하는 동작, 상기 어플리케이션 프로세서에서 상기 통신 프로세서로부터 상기 제1 세션의 데이터 패킷을 수신하는 동작, 및 상기 제1 코어에 대응하는 정보에 기반하여, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 세션에 대해 설정된 상기 제1 코어를 통해 처리하는 동작을 포함할 수 있다.
다양한 실시예에 따라, 상기 제1 세션은 URLLC(ultra reliable low latency communication)와 관련된 세션이며, 상기 제1 코어는 상기 복수의 코어들 중 상대적으로 처리 속도가 더 빠른 코어일 수 있다.
다양한 실시예에 따라, 상기 방법은, 상기 어플리케이션 프로세서로부터 상기 제1 코어에 대응하는 정보를 수신하는 동작, 상기 제1 코어에 대응하는 정보에 기반하여, 상기 제1 코어에 대응하는 논리 버퍼를 할당하는 동작, 및 외부 전자 장치로부터 상기 제1 세션의 데이터 패킷을 수신하면, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 코어에 대응하여 할당된 논리 버퍼에 저장하는 동작을 포함할 수 있다.
다양한 실시예에 따라, 상기 제1 코어에 대응하는 정보는, 적어도 하나의 세션을 그룹화하여 설정한 제1 그룹 정보에 대응할 수 있다.
다양한 실시예에 따라, 상기 방법은, 상기 통신 프로세서로부터 수신된 데이터 패킷을 상기 복수의 코어들의 각 코어별로 분배하는 동작, 및 상기 각 코어별로 분배된 데이터 패킷에 대해 상기 수신된 데이터 패킷의 각 세션별로 패킷 병합 정책을 적용하도록 제어하는 동작을 포함할 수 있다.
다양한 실시예에 따라, 상기 방법은, 상기 제1 세션에 대해 상기 제1 코어에서 패킷 병합 처리를 수행하도록 제어하는 동작, 및 상기 제1 세션에 대해 상기 제1 코어에서 네트워크 패킷 처리를 수행하도록 제어하는 동작을 포함할 수 있다.
다양한 실시예에 따라, 상기 방법은, 상기 제1 세션에 대해 상기 제1 코어에서 패킷 병합 처리를 수행하도록 제어하는 동작, 및 상기 제1 세션에 대해 상기 제1 코어와 다른 제2 코어에서 네트워크 패킷 처리를 수행하도록 제어하는 동작을 포함할 수 있다.
다양한 실시예에 따라, 상기 방법은, 상기 어플리케이션 프로세서에서 상기 통신 프로세서로부터 메타 정보를 수신하는 동작, 및 상기 수신된 메타 정보에 기반하여, 상기 통신 프로세서로부터 수신된 상기 제1 세션의 데이터 패킷을 상기 제1 코어를 통해 처리하는 동작을 포함할 수 있다.
다양한 실시예 중 어느 하나에 따른 전자 장치의 동작 방법은, 전자 장치에서 수신된 데이터 패킷을 처리하는 방법에 있어서, 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 어플리케이션 프로세서에 포함된 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하는 동작, 상기 어플리케이션 프로세서에서, 통신 프로세서로부터 상기 적어도 하나의 세션 중 제1 세션의 데이터 패킷을 수신하는 동작, 상기 수신된 제1 세션의 데이터 패킷을 상기 복수의 코어들 중 상기 제1 세션에 대응하여 설정된 제1 코어를 위해 할당된 버퍼에 저장하는 동작 및 상기 버퍼에 저장된 상기 제1 세션의 데이터 패킷을 상기 제1 코어를 통해 처리하는 동작을 포함할 수 있다.
다양한 실시예에 따라, 상기 방법은, 상기 제1 코어를 통해 상기 제1 세션의 데이터 패킷에 대한 패킷 병합 정책을 적용하는 동작을 포함할 수 있다.
다양한 실시예에 따라, 상기 제1 세션은 URLLC(ultra reliable low latency communication)와 관련된 세션이며, 상기 제1 코어는 상기 복수의 코어들 중 상대적으로 처리 속도가 더 빠른 코어일 수 있다.
다양한 실시예 중 어느 하나에 따른 프로세싱 칩은, 복수의 코어(core)들을 포함하는 어플리케이션 프로세서, 및 상기 프로세싱 칩 내에서 상기 어플리케이션 프로세서와 전기적으로 연결된 통신 프로세서를 포함하고, 상기 어플리케이션 프로세서는, 각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 상기 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하고, 상기 적어도 하나의 세션 중 제1 세션에 대해 설정된 제1 코어에 대응하는 정보를 상기 통신 프로세서로 전송하고, 상기 통신 프로세서로부터 상기 제1 세션의 데이터 패킷을 수신하고, 상기 제1 코어에 대응하는 정보에 기반하여, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 세션에 대해 설정된 상기 제1 코어를 통해 처리할 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 컴퓨터 장치, 휴대용 통신 장치 (예: 스마트폰), 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "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)(예: 마스터 장치 또는 태스크 수행 장치)의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리 또는 외장 메모리)에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램)로서 구현될 수 있다. 예를 들면, 기기(예: 마스터 장치 또는 태스크 수행 장치)의 프로세서는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체 는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두 개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.

Claims (15)

  1. 전자 장치에 있어서,
    복수의 코어(core)들을 포함하는 어플리케이션 프로세서; 및
    상기 어플리케이션 프로세서와 전기적으로 연결된 통신 프로세서를 포함하고,
    상기 어플리케이션 프로세서는,
    각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 상기 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하고,
    상기 적어도 하나의 세션 중 제1 세션에 대해 설정된 제1 코어에 대응하는 정보를 상기 통신 프로세서로 전송하고,
    상기 통신 프로세서로부터 상기 제1 세션의 데이터 패킷을 수신하고,
    상기 제1 코어에 대응하는 정보에 기반하여, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 세션에 대해 설정된 상기 제1 코어를 통해 처리하는, 전자 장치.
  2. 제1항에 있어서, 상기 제1 세션은 URLLC(ultra reliable low latency communication)와 관련된 세션이며,
    상기 제1 코어는 상기 복수의 코어들 중 상대적으로 처리 속도가 더 빠른 코어인, 전자 장치.
  3. 제1항에 있어서, 상기 통신 프로세서는,
    상기 어플리케이션 프로세서로부터 상기 제1 코어에 대응하는 정보를 수신하고,
    상기 제1 코어에 대응하는 정보에 기반하여, 상기 제1 코어에 대응하는 논리 버퍼를 할당하고,
    외부 전자 장치로부터 상기 제1 세션의 데이터 패킷을 수신하면, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 코어에 대응하여 할당된 논리 버퍼에 저장하는, 전자 장치.
  4. 제3항에 있어서, 상기 제1 코어에 대응하는 정보는,
    적어도 하나의 세션을 그룹화하여 설정한 제1 그룹 정보에 대응하는, 전자 장치.
  5. 제1항에 있어서, 상기 어플리케이션 프로세서는,
    상기 통신 프로세서로부터 수신된 데이터 패킷을 상기 복수의 코어들의 각 코어별로 분배하고,
    상기 각 코어별로 분배된 데이터 패킷에 대해 상기 수신된 데이터 패킷의 각 세션별로 패킷 병합 정책을 적용하도록 제어하는, 전자 장치.
  6. 제1항에 있어서, 상기 어플리케이션 프로세서는,
    상기 통신 프로세서로부터 메타 정보를 수신하고,
    상기 수신된 메타 정보에 기반하여, 상기 통신 프로세서로부터 수신된 상기 제1 세션의 데이터 패킷을 상기 제1 코어를 통해 처리하도록 제어하는, 전자 장치.
  7. 제1항에 있어서, 상기 어플리케이션 프로세서는,
    상기 제1 세션에 대해 상기 제1 코어에서 패킷 병합 처리를 수행하도록 제어하고,
    상기 제1 세션에 대해 상기 제1 코어와 다른 제2 코어에서 네트워크 패킷 처리를 수행하도록 제어하는, 전자 장치.
  8. 전자 장치에 있어서,
    복수의 코어(core)들을 포함하는 어플리케이션 프로세서; 및
    상기 어플리케이션 프로세서와 전기적으로 연결된 통신 프로세서를 포함하고,
    상기 어플리케이션 프로세서는,
    각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 어플리케이션 프로세서에 포함된 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하고,
    상기 통신 프로세서로부터 상기 적어도 하나의 세션 중 제1 세션의 데이터 패킷을 수신하고,
    상기 수신된 제1 세션의 데이터 패킷을 상기 복수의 코어들 중 상기 제1 세션에 대응하여 설정된 제1 코어를 위해 할당된 버퍼에 저장하고,
    상기 버퍼에 저장된 제1 세션의 데이터 패킷을 상기 제1 코어를 통해 처리하는, 전자 장치.
  9. 전자 장치에서 수신된 데이터 패킷을 처리하는 방법에 있어서,
    각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 어플리케이션 프로세서에 포함된 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하는 동작;
    상기 적어도 하나의 세션 중 제1 세션에 대해 설정된 제1 코어에 대응하는 정보를 상기 어플리케이션 프로세서에서 통신 프로세서로 전송하는 동작;
    상기 어플리케이션 프로세서에서 상기 통신 프로세서로부터 상기 제1 세션의 데이터 패킷을 수신하는 동작; 및
    상기 제1 코어에 대응하는 정보에 기반하여, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 세션에 대해 설정된 상기 제1 코어를 통해 처리하는 동작을 포함하는, 전자 장치에서 데이터 패킷을 처리하는 방법.
  10. 제9항에 있어서, 상기 방법은,
    상기 어플리케이션 프로세서로부터 상기 제1 코어에 대응하는 정보를 수신하는 동작;
    상기 제1 코어에 대응하는 정보에 기반하여, 상기 제1 코어에 대응하는 논리 버퍼를 할당하는 동작; 및
    외부 전자 장치로부터 상기 제1 세션의 데이터 패킷을 수신하면, 상기 수신된 제1 세션의 데이터 패킷을 상기 제1 코어에 대응하여 할당된 논리 버퍼에 저장하는 동작을 포함하는, 전자 장치에서 데이터 패킷을 처리하는 방법.
  11. 제10항에 있어서, 상기 제1 코어에 대응하는 정보는,
    적어도 하나의 세션을 그룹화하여 설정한 제1 그룹 정보에 대응하는, 전자 장치에서 데이터 패킷을 처리하는 방법.
  12. 제9항에 있어서, 상기 방법은,
    상기 통신 프로세서로부터 수신된 데이터 패킷을 상기 복수의 코어들의 각 코어별로 분배하는 동작; 및
    상기 각 코어별로 분배된 데이터 패킷에 대해 상기 수신된 데이터 패킷의 각 세션별로 패킷 병합 정책을 적용하도록 제어하는 동작을 포함하는, 전자 장치에서 데이터 패킷을 처리하는 방법.
  13. 제9항에 있어서, 상기 방법은,
    상기 어플리케이션 프로세서에서 상기 통신 프로세서로부터 메타 정보를 수신하는 동작; 및
    상기 수신된 메타 정보에 기반하여, 상기 통신 프로세서로부터 수신된 상기 제1 세션의 데이터 패킷을 상기 제1 코어를 통해 처리하는 동작을 포함하는, 전자 장치에서 데이터 패킷을 처리하는 방법.
  14. 제9항에 있어서, 상기 방법은,
    상기 제1 세션에 대해 상기 제1 코어에서 패킷 병합 처리를 수행하도록 제어하는 동작; 및
    상기 제1 세션에 대해 상기 제1 코어와 다른 제2 코어에서 네트워크 패킷 처리를 수행하도록 제어하는 동작을 포함하는, 전자 장치에서 데이터 패킷을 처리하는 방법.
  15. 전자 장치에서 수신된 데이터 패킷을 처리하는 방법에 있어서,
    각 어플리케이션과 관련된 적어도 하나의 세션을 QoS(quality of service)에 기반하여 어플리케이션 프로세서에 포함된 복수의 코어들 중 적어도 하나의 코어에 대응하도록 설정하는 동작;
    상기 어플리케이션 프로세서에서, 통신 프로세서로부터 상기 적어도 하나의 세션 중 제1 세션의 데이터 패킷을 수신하는 동작;
    상기 수신된 제1 세션의 데이터 패킷을 상기 복수의 코어들 중 상기 제1 세션에 대응하여 설정된 제1 코어를 위해 할당된 버퍼에 저장하는 동작; 및
    상기 버퍼에 저장된 상기 제1 세션의 데이터 패킷을 상기 제1 코어를 통해 처리하는 동작을 포함하는, 전자 장치에서 데이터 패킷을 처리하는 방법.
PCT/KR2022/002812 2021-03-29 2022-02-25 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법 WO2022211286A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP22781407.6A EP4319101A4 (en) 2021-03-29 2022-02-25 ELECTRONIC DEVICE AND METHOD FOR PROCESSING RECEIVED DATA PACKETS BY AN ELECTRONIC DEVICE
US18/475,699 US20240031297A1 (en) 2021-03-29 2023-09-27 Electronic device, and method for processing received data packet by electronic device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2021-0040160 2021-03-29
KR1020210040160A KR20220134899A (ko) 2021-03-29 2021-03-29 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/475,699 Continuation US20240031297A1 (en) 2021-03-29 2023-09-27 Electronic device, and method for processing received data packet by electronic device

Publications (1)

Publication Number Publication Date
WO2022211286A1 true WO2022211286A1 (ko) 2022-10-06

Family

ID=83457673

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/002812 WO2022211286A1 (ko) 2021-03-29 2022-02-25 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법

Country Status (4)

Country Link
US (1) US20240031297A1 (ko)
EP (1) EP4319101A4 (ko)
KR (1) KR20220134899A (ko)
WO (1) WO2022211286A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140164706A1 (en) * 2012-12-11 2014-06-12 Electronics & Telecommunications Research Institute Multi-core processor having hierarchical cahce architecture
KR20170134584A (ko) * 2015-07-13 2017-12-06 구글 엘엘씨 프로세서 코어 동작들 조절
KR20180126401A (ko) * 2017-05-17 2018-11-27 삼성전자주식회사 멀티코어 기반 데이터 처리 방법 및 장치
KR20200112439A (ko) * 2019-03-22 2020-10-05 삼성전자주식회사 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법
KR20200114166A (ko) * 2019-03-27 2020-10-07 삼성전자주식회사 네트워크 패킷 처리 방법 및 이를 위한 전자 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589575B2 (en) * 2010-08-05 2013-11-19 Citrix Systems, Inc. Systems and methods for IIP address sharing across cores in a multi-core system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140164706A1 (en) * 2012-12-11 2014-06-12 Electronics & Telecommunications Research Institute Multi-core processor having hierarchical cahce architecture
KR20170134584A (ko) * 2015-07-13 2017-12-06 구글 엘엘씨 프로세서 코어 동작들 조절
KR20180126401A (ko) * 2017-05-17 2018-11-27 삼성전자주식회사 멀티코어 기반 데이터 처리 방법 및 장치
KR20200112439A (ko) * 2019-03-22 2020-10-05 삼성전자주식회사 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법
KR20200114166A (ko) * 2019-03-27 2020-10-07 삼성전자주식회사 네트워크 패킷 처리 방법 및 이를 위한 전자 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4319101A4 *

Also Published As

Publication number Publication date
US20240031297A1 (en) 2024-01-25
KR20220134899A (ko) 2022-10-06
EP4319101A4 (en) 2024-05-08
EP4319101A1 (en) 2024-02-07

Similar Documents

Publication Publication Date Title
AU2019271627B2 (en) Electronic device for performing network connection based on data transmission of application and method thereof
WO2020149564A1 (en) Electronic device for requesting nssai in wireless communication network and method thereof
WO2021230589A1 (ko) 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
WO2020197184A1 (en) Multicore electronic device and packet processing method thereof
WO2022031029A1 (ko) 전자 장치 및 전자 장치가 외부 장치 디스플레이 상에 어플리케이션 화면을 제공하는 방법
WO2020111572A1 (en) Electronic device for managing bearer and operation method thereof
WO2020009461A1 (en) Apparatus and method for adjusting network parameter
WO2020067677A1 (ko) 외부 장치와 통신이 필요한 어플리케이션의 운영 방법 및 전자 장치
WO2022154363A1 (ko) 오디오 데이터를 처리하기 위한 오디오 장치 및 그의 동작 방법
WO2023063776A1 (ko) 대역폭 부분을 이용하여 통신을 수행하는 전자 장치 및 네트워크와 그들의 동작 방법
WO2022211286A1 (ko) 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법
WO2023146130A1 (ko) 링크 용량에 기반하여 패킷의 병합을 제어하는 전자 장치 및 전자 장치의 동작 방법
WO2022191437A1 (ko) 패킷을 프로세싱하는 전자 장치 및 그 동작 방법
WO2023080447A1 (ko) 복수의 링크를 통한 데이터 전송 및 수신의 스케쥴링을 수행하는 전자 장치 및 전자 장치의 동작 방법
WO2024019286A1 (ko) Twt 모드 또는 절전 모드를 지원하는 전자 장치 및 전자 장치의 동작 방법
WO2022225161A1 (ko) 네트워크 상태 및 처리량의 모니터링에 기초하여 문제 발생시 회복 루틴을 수행하는 프로세서 및 이를 포함하는 전자 장치
WO2024075925A1 (ko) 복수의 링크를 통해 동일한 데이터를 전송하는 전자 장치 및 전자 장치의 동작 방법
WO2023153752A1 (ko) 태스크에 메모리 자원을 할당하는 전자 장치 및 전자 장치의 동작 방법
WO2023059012A1 (ko) 다른 bss의 외부 전자 장치로부터 수신한 응답 신호에 기반하여 twt 파라미터를 설정하는 전자 장치 및 전자 장치의 동작 방법
WO2021225283A1 (ko) 네트워크 슬라이스와 데이터 세션을 형성하는 전자 장치 및 그 동작 방법
WO2021066347A1 (ko) 전자 장치에서 네트워크 데이터 속도 가속 방법 및 장치
WO2022215871A1 (ko) 네트워크 슬라이스를 통하여 패킷을 송신 및/또는 수신하는 전자 장치 및 그 동작 방법
WO2022055259A1 (ko) 전자 장치의 상태에 기반하여 핸드오버를 수행하는 전자 장치 및 전자 장치의 동작 방법
WO2023027288A1 (ko) 영상 통화를 수행하는 동안 복수의 이미지 스트림을 전송하는 전자 장치 및 전자 장치의 동작 방법
WO2023003167A1 (ko) 링크의 매체 동기화를 수행하는 전자 장치 및 전자 장치의 동작 방법

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22781407

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2022781407

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2022781407

Country of ref document: EP

Effective date: 20231027