KR102423768B1 - Method for processing a plurality of instructions included in a plurality of threads and electronic device thereof - Google Patents

Method for processing a plurality of instructions included in a plurality of threads and electronic device thereof Download PDF

Info

Publication number
KR102423768B1
KR102423768B1 KR1020170124440A KR20170124440A KR102423768B1 KR 102423768 B1 KR102423768 B1 KR 102423768B1 KR 1020170124440 A KR1020170124440 A KR 1020170124440A KR 20170124440 A KR20170124440 A KR 20170124440A KR 102423768 B1 KR102423768 B1 KR 102423768B1
Authority
KR
South Korea
Prior art keywords
instruction
thread
electronic device
processor
processing
Prior art date
Application number
KR1020170124440A
Other languages
Korean (ko)
Other versions
KR20190035347A (en
Inventor
최정민
이진석
김길윤
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170124440A priority Critical patent/KR102423768B1/en
Publication of KR20190035347A publication Critical patent/KR20190035347A/en
Application granted granted Critical
Publication of KR102423768B1 publication Critical patent/KR102423768B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

본 발명의 다양한 실시예는 이벤트의 처리를 위한 스레딩 방법 및 그 전자 장치에 관한 것이다. 이때 전자 장치는, 프로세서; 및 복수의 스레드들에 포함된 복수의 명령어들을 저장하기 위한 메모리;를 포함하고, 상기 메모리는, 실행 시에, 상기 프로세서가, 이벤트를 검출하고, 상기 이벤트에 기반하여 상기 복수의 스레드들 중에서 우선적으로 처리해야 할 제1 스레드를 결정하고, 상기 제1 스레드는 제1 명령어 및 제2 명령어를 포함하고, 상기 제2 명령어가 상기 제1 명령어를 처리한 결과를 이용하지 않는 경우, 상기 제1 명령어를 처리하는 동안 상기 제2 명령어를 처리하고, 상기 제2 명령어가 상기 제1 명령어를 처리한 결과를 이용하는 경우, 상기 제1 명령어를 처리하는 동안, 상기 복수의 스레드들 중에서 상기 제1 스레드가 처리된 후 처리될 제2 스레드에 포함된 제3 명령어를 처리하도록 하는 인스트럭션들을 저장하도록 제어할 수 있다. 다른 실시 예들도 가능할 수 있다.Various embodiments of the present invention relate to a threading method for processing an event and an electronic device thereof. In this case, the electronic device includes: a processor; and a memory for storing a plurality of instructions included in a plurality of threads, wherein the memory, when executed, causes the processor to detect an event and to prioritize among the plurality of threads based on the event determines a first thread to be processed as , wherein the first thread includes a first instruction and a second instruction When the second instruction is processed while processing and the second instruction uses a result of processing the first instruction, the first thread is processed from among the plurality of threads while processing the first instruction It is possible to control to store instructions for processing a third instruction included in a second thread to be processed after being processed. Other embodiments may be possible.

Description

복수의 스레드들에 포함된 복수의 명령어들을 처리하기 위한 방법 및 그 전자 장치{METHOD FOR PROCESSING A PLURALITY OF INSTRUCTIONS INCLUDED IN A PLURALITY OF THREADS AND ELECTRONIC DEVICE THEREOF}A method for processing a plurality of instructions included in a plurality of threads, and an electronic device thereof

본 발명의 다양한 실시예들은 복수의 스레드들에 포함된 복수의 명령어들을 처리하기 위한 방법 및 그 전자 장치에 관한 것이다.
Various embodiments of the present invention relate to a method and an electronic device for processing a plurality of instructions included in a plurality of threads.

정보통신 기술 및 반도체 기술의 발전으로 전자 장치는 방송 기능, 무선 인터넷 기능, 카메라 기능, 사용자 인증 기능, 또는 전자 결제(payment) 기능과 같은 다양한 기능을 제공할 수 있다. 전자 장치는 다양한 기능을 효율적으로 처리하기 위해 멀티 스레딩(multi-threading) 기법에 따라 복수의 스레드들(threads)을 병렬로 처리할 수 있다.
With the development of information and communication technology and semiconductor technology, electronic devices may provide various functions such as a broadcasting function, a wireless Internet function, a camera function, a user authentication function, or an electronic payment function. The electronic device may process a plurality of threads in parallel according to a multi-threading technique in order to efficiently process various functions.

상기와 같이 전자 장치가 멀티 스레딩 기법에 기반하여 복수의 스레드들을 병렬 처리함에 따라 우선적으로 처리해야 할 싱글 스레드의 처리 속도가 지연되는 문제점이 발생할 수 있다. 구체적으로, 멀티 스레딩 기법은 파이프라인에 배치된 각각의 슬롯을 통해 서로 다른 스레드의 명령어를 병렬적으로 처리함으로써, 복수의 스레드들에 대한 처리 효율을 높일 수 있다. 하지만, 하나의 스레드에 포함되는 각각의 명령어는 한 사이클 동안 하나의 슬롯을 통해서만 처리될 수 있고, 이에 따라 하나의 스레드에 포함되는 각각의 명령어는 다수의 사이클을 거쳐야 처리가 완료되므로 하나의 스레드의 처리 속도가 저하될 수 있다.As described above, as the electronic device parallelly processes a plurality of threads based on the multi-threading technique, there may be a problem in that the processing speed of a single thread to be processed first is delayed. Specifically, the multi-threading technique may increase processing efficiency for a plurality of threads by parallelly processing instructions of different threads through each slot disposed in the pipeline. However, each instruction included in one thread can be processed only through one slot during one cycle, and accordingly, each instruction included in one thread must pass through a plurality of cycles to complete processing. Processing speed may be reduced.

따라서, 본 발명의 다양한 실시예들은 복수의 스레드들에 포함된 복수의 명령어들을 처리하기 위한 방법 및 장치를 제공함에 있다. Accordingly, various embodiments of the present invention provide a method and apparatus for processing a plurality of instructions included in a plurality of threads.

본 발명이 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
The technical problems to be achieved by the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned can be clearly understood by those of ordinary skill in the art to which the present invention belongs from the description below. There will be.

본 발명의 다양한 실시 예에 따르면, 전자 장치는, 프로세서; 및 복수의 스레드들에 포함된 복수의 명령어들을 저장하기 위한 메모리;를 포함하고, 상기 메모리는, 실행 시에, 상기 프로세서가, 이벤트를 검출하고, 상기 이벤트에 기반하여 상기 복수의 스레드들 중에서 우선적으로 처리해야 할 제1 스레드를 결정하고, 상기 제1 스레드는 제1 명령어 및 제2 명령어를 포함하고, 상기 제2 명령어가 상기 제1 명령어를 처리한 결과를 이용하지 않는 경우, 상기 제1 명령어를 처리하는 동안 상기 제2 명령어를 처리하고, 상기 제2 명령어가 상기 제1 명령어를 처리한 결과를 이용하는 경우, 상기 제1 명령어를 처리하는 동안, 상기 복수의 스레드들 중에서 상기 제1 스레드가 처리된 후 처리될 제2 스레드에 포함된 제3 명령어를 처리하도록 하는 인스트럭션들을 저장하도록 제어할 수 있다.According to various embodiments of the present disclosure, an electronic device may include a processor; and a memory for storing a plurality of instructions included in a plurality of threads, wherein the memory, when executed, causes the processor to detect an event and to prioritize among the plurality of threads based on the event determines a first thread to be processed as , wherein the first thread includes a first instruction and a second instruction When the second instruction is processed while processing and the second instruction uses a result of processing the first instruction, the first thread is processed from among the plurality of threads while processing the first instruction It is possible to control to store instructions for processing a third instruction included in a second thread to be processed after being processed.

본 발명의 다양한 실시 예에 따르면, 전자 장치는, 프로세서; 및 복수의 스레드들에 포함된 복수의 명령어들을 저장하기 위한 메모리;를 포함하고, 상기 메모리는, 실행 시에, 상기 프로세서가, 이벤트를 검출하고, 상기 이벤트에 기반하여 상기 복수의 스레드들 중에서 우선적으로 처리해야 할 제1 스레드를 결정하고, 상기 이벤트의 상기 검출에 기반하여 멀티 스레드 모드를 우선 처리 모드로 변경하고, 상기 제1 스레드에서 아이들 사이클을 검출하고, 상기 검출된 아이들 사이클에 포함된 적어도 하나의 슬롯에 상기 복수의 스레드들 중에서 제2 스레드에 포함된 명령어가 배치되도록 스케쥴을 설정하고, 상기 제1 스레드와 상기 제2 스레드를 상기 설정된 스케쥴에 따라 처리하도록 하는 인스트럭션들을 저장하도록 제어할 수 있다.According to various embodiments of the present disclosure, an electronic device may include a processor; and a memory for storing a plurality of instructions included in a plurality of threads, wherein the memory, when executed, causes the processor to detect an event and to prioritize among the plurality of threads based on the event determines a first thread to be processed as , changes the multi-thread mode to a priority processing mode based on the detection of the event, detects an idle cycle in the first thread, and at least included in the detected idle cycle It is possible to set a schedule such that an instruction included in a second thread among the plurality of threads is placed in one slot, and to store instructions for processing the first thread and the second thread according to the set schedule. have.

본 발명의 다양한 실시 예에 따르면, 전자 장치의 동작 방법은, 이벤트를 검출하는 동작; 상기 이벤트에 기반하여 상기 복수의 스레드들 중에서 우선적으로 처리해야 할 제1 스레드를 결정하는 동작; 상기 이벤트의 상기 검출에 기반하여 멀티 스레드 모드를 우선 처리 모드로 변경하는 동작; 상기 제1 스레드에서 아이들 사이클을 검출하는 동작; 상기 검출된 아이들 사이클에 포함된 적어도 하나의 슬롯에 상기 복수의 스레드들 중에서 제2 스레드에 포함된 명령어가 배치되도록 스케쥴을 설정하는 동작; 및 상기 제1 스레드와 상기 제2 스레드를 상기 설정된 스케쥴에 따라 처리하는 동작;을 포함할 수 있다.
According to various embodiments of the present disclosure, a method of operating an electronic device may include detecting an event; determining a first thread to be processed preferentially from among the plurality of threads based on the event; changing the multi-threaded mode to the priority processing mode based on the detection of the event; detecting an idle cycle in the first thread; setting a schedule such that an instruction included in a second thread among the plurality of threads is placed in at least one slot included in the detected idle cycle; and processing the first thread and the second thread according to the set schedule.

본 발명의 다양한 실시예에 따른 방법 및 그 전자 장치는 멀티 스레드 모드로 구동하는 동안 이벤트를 검출할 경우, 우선 처리 모드로 변경함에 따라 우선 처리해야 할 스레드를 먼저 처리함으로써 프로세서의 자원을 효율적으로 관리하면서 우선적으로 처리해야 할 스레드의 처리 속도를 높일 수 있다.The method and the electronic device according to various embodiments of the present disclosure efficiently manage processor resources by first processing a thread to be processed first when an event is detected while driving in a multi-threaded mode, and changing to a priority processing mode You can increase the processing speed of the thread that needs to be processed first.

또한, 본 발명의 다양한 실시예에 따른 방법 및 그 전자 장치는 이벤트에 대응하는 어느 하나의 스레드를 우선 처리하는 경우, 프로세서에 별도의 회로를 추가하지 않고도 아이들 사이클(idle cycle)을 다른 스레드의 명령어를 처리하는 사이클로 이용함에 따라 하드웨어 논리 회로 복잡성을 최소화할 수 있고, 명령어 처리 지연 및 전력 소모를 최소화할 수 있다.In addition, the method and the electronic device according to various embodiments of the present disclosure perform an idle cycle of an instruction of another thread without adding a separate circuit to the processor when any one thread corresponding to an event is first processed. By using it as a cycle for processing , it is possible to minimize hardware logic circuit complexity, and minimize instruction processing delay and power consumption.

도 1a는 본 발명의 다양한 실시예에 따른 전자 장치를 포함하는 네트워크에 대한 환경을 도시한다.
도 1b는 본 발명의 다양한 실시예에 따른 프로세서 및 메모리의 구성을 도시한 블록도이다.
도 1c는 본 발명의 다양한 실시예에 따른 스레드 매니저의 구성을 도시한 블록도이다.
도 2는 본 발명의 다양한 실시예에 따른 이벤트의 처리를 위한 스레딩 방법을 설명하는 흐름도이다.
도 3은 본 발명의 다양한 실시예에 따른 이벤트의 처리를 위한 스레딩 방법을 설명하는 흐름도이다.
도 4는 본 발명의 다양한 실시예에 따른 멀티 스레드 모드로 구동하는 방법을 설명하는 예시도이다.
도 5는 본 발명의 다양한 실시예에 따른 우선 처리 모드로 구동하는 방법을 설명하는 예시도이다.
도 6은 본 발명의 다양한 실시예에 따른 아이들 사이클을 검출하는 방법을 설명하는 흐름도이다.
도 7은 본 발명의 다양한 실시예에 따른 우선 처리 모드에서 데이터 해저드(data hazard)를 처리하는 방법을 설명하는 흐름도이다.
도 8은 본 발명의 다양한 실시예에 따른 우선 처리 모드에서 데이터 해저드(data hazard)를 처리하는 방법을 설명하는 예시도이다.
도 9는 다양한 실시예들에 따른, 네트워크 환경 내의 전자 장치의 블록도이다.
도 10은 다양한 실시예에 따른 프로그램의 블록도이다.
1A illustrates an environment for a network including an electronic device according to various embodiments of the present disclosure.
1B is a block diagram illustrating the configuration of a processor and a memory according to various embodiments of the present invention.
1C is a block diagram illustrating a configuration of a thread manager according to various embodiments of the present invention.
2 is a flowchart illustrating a threading method for processing an event according to various embodiments of the present disclosure.
3 is a flowchart illustrating a threading method for processing an event according to various embodiments of the present disclosure.
4 is an exemplary diagram illustrating a method of driving in a multi-threaded mode according to various embodiments of the present invention.
5 is an exemplary diagram illustrating a method of driving in a priority processing mode according to various embodiments of the present disclosure.
6 is a flowchart illustrating a method of detecting an idle cycle according to various embodiments of the present disclosure.
7 is a flowchart illustrating a method of processing a data hazard in a priority processing mode according to various embodiments of the present disclosure.
8 is an exemplary diagram illustrating a method of processing a data hazard in a priority processing mode according to various embodiments of the present disclosure.
9 is a block diagram of an electronic device in a network environment, according to various embodiments of the present disclosure;
10 is a block diagram of a program according to various embodiments.

이하 본 발명의 다양한 실시 예를 첨부된 도면을 참조하여 상세히 설명한다. 그리고 본 발명의 실시 예를 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우 그 상세한 설명은 생략한다. 그리고 후술되는 용어들은 본 발명의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
Hereinafter, various embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the description of the embodiment of the present invention, if it is determined that a detailed description of a related known function or configuration may unnecessarily obscure the gist of the present invention, the detailed description thereof will be omitted. And the terms described below are terms defined in consideration of the functions of the present invention, which may vary according to the intention or custom of the user or operator. Therefore, the definition should be made based on the content throughout this specification.

도 1a는 본 발명의 다양한 실시예에 따른 전자 장치를 포함하는 네트워크에 대한 환경을 도시한다.1A illustrates an environment for a network including an electronic device according to various embodiments of the present disclosure.

도 1a를 참고하면, 전자 장치(101)는 버스(110), 프로세서(120), 메모리(130), 입출력 인터페이스(140), 및 통신 인터페이스(150)를 포함할 수 있다. 어떤 실시 예에서는, 전자 장치(101)는, 구성요소들 중 적어도 하나를 생략하거나 다른 구성요소를 추가적으로 구비할 수 있다. Referring to FIG. 1A , the electronic device 101 may include a bus 110 , a processor 120 , a memory 130 , an input/output interface 140 , and a communication interface 150 . In some embodiments, the electronic device 101 may omit at least one of the components or may additionally include other components.

버스(110)는 구성요소들(120-150)을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 또는 데이터)을 전달하는 회로를 포함할 수 있다. The bus 110 may include a circuit that connects the components 120 - 150 to each other and transmits communication (eg, a control message or data) between the components.

프로세서(120)는, 중앙처리장치, 어플리케이션 프로세서, 또는 커뮤니케이션 프로세서(communication processor, CP) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서(120)는, 예를 들어, 전자 장치(101)의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다. The processor 120 may include one or more of a central processing unit, an application processor, and a communication processor (CP). The processor 120 may, for example, execute an operation or data processing related to control and/or communication of at least one other component of the electronic device 101 .

한 실시 예에 따르면, 프로세서(120)는 멀티 스레드 모드로 구동할 수 있다. 예를 들어, 프로세서(120)는 인터리브드 멀티 스레딩(interleaved multi threading, IMT) 기법에 따라 복수의 스레드들을 병렬적으로 처리할 수 있고, 파이프라인 스케쥴에 따라 복수의 스레드들을 처리할 수 있다. 여기서 파이프라인은 복수의 사이클들을 포함한 명령어 처리 스케쥴일 수 있다. 상기 복수의 사이클들에 포함된 각각의 사이클은 명령어 펫치(instruction fetch), 명령어 복호(instruction decode), 명령어 실행(execution), 메모리 활성(enable memory), 후 읽기(write back) 등의 단계로 구분될 수 있다. 또한, 파이프라인의 슬롯이란 각각의 사이클의 어느 한 단계에 명령어가 배치될 수 있는 단위 스케쥴일 수 있다.According to an embodiment, the processor 120 may be driven in a multi-threaded mode. For example, the processor 120 may process a plurality of threads in parallel according to an interleaved multi-threading (IMT) technique, and process the plurality of threads according to a pipeline schedule. Here, the pipeline may be an instruction processing schedule including a plurality of cycles. Each cycle included in the plurality of cycles is divided into steps such as instruction fetch, instruction decode, instruction execution, enable memory, and write back. can be In addition, the slot of the pipeline may be a unit schedule in which an instruction can be arranged in any one stage of each cycle.

한 실시 예에 따르면, 프로세서(120)는 이벤트를 검출할 수 있다. 여기서 이벤트는 사용자의 입력, 사용자의 설정 또는 전자 장치(101)의 설정에 따라 우선적으로 처리해야 할 이벤트일 수 있다.According to an embodiment, the processor 120 may detect an event. Here, the event may be an event to be processed preferentially according to a user's input, a user's setting, or a setting of the electronic device 101 .

한 실시 예에 따르면, 프로세서(120)는 이벤트와 관련된 우선 처리할 스레드를 결정할 수 있다. 예를 들어, 프로세서(120)는, 우선 순위에 기반하여, 새로 생성될 복수의 스레드들 중에서 우선 처리할 스레드를 결정할 수 있다. 예컨대, 프로세서(120)는 제1 스레드를 우선 처리할 스레드로 결정할 수 있다.According to an embodiment, the processor 120 may determine a thread to be processed first in relation to the event. For example, the processor 120 may determine a thread to be processed first from among a plurality of threads to be newly created, based on the priority. For example, the processor 120 may determine the first thread as a thread to be processed first.

한 실시 예에 따르면, 프로세서(120)는 이벤트의 검출에 기반하여 멀티 스레드 모드를 우선 처리 모드로 변경할 수 있다. 여기서 우선 처리 모드는 우선적으로 처리해야 할 스레드를 처리하면서 아이들 사이클에 배치된 다른 스레드를 병렬적으로 처리하는 모드일 수 있다. 예를 들어, 프로세서(120)는 우선 처리할 스레드에 해당하는 제1 스레드를 다른 스레드보다 우선적으로 처리할 수 있다.According to an embodiment, the processor 120 may change the multi-threaded mode to the priority processing mode based on the detection of the event. Here, the priority processing mode may be a mode in which other threads arranged in an idle cycle are processed in parallel while processing a thread to be processed with priority. For example, the processor 120 may preferentially process a first thread corresponding to a thread to be processed preferentially over other threads.

한 실시 예에 따르면, 프로세서(120)는 제1 스레드에서 아이들 사이클(idle cycle)이 검출되는 지 확인할 수 있다. 여기서 아이들 사이클은 적어도 하나의 슬롯에 NOP(non-operation) 명령어가 배치될 수 있는 경우일 수 있다. 여기서 NOP 명령어는 파이프라인의 슬롯에 배치되지만 실제로 실행될 작업을 포함하지 않는 명령어일 수 있다. 예컨대, 프로세서(120)는 실행 순서상 후 순위 명령어가 선 순위 명령어의 처리 결과를 이용할 경우, 선 순위 명령어의 처리가 완료되는 사이클보다 앞선 사이클에서 후 순위 명령어의 처리가 시작될 경우 아이들 사이클이 발생하는 것으로 검출할 수 있다. 예를 들어, 명령어의 컴파일 단계에서, 프로세서(120)는 제1 스레드에 포함된 복수의 명령어들을 확인할 수 있고, 복수의 명령어들 중에서 NOP(non-operation) 명령어가 포함되는 지 확인할 수 있다. 이와 달리, 프로세서(120)는 파이프라인의 슬롯에 명령어가 배치되는 동안, NOP 명령어가 배치되는 지 확인할 수 있다.According to an embodiment, the processor 120 may determine whether an idle cycle is detected in the first thread. Here, the idle cycle may be a case in which a non-operation (NOP) instruction may be disposed in at least one slot. Here, a NOP instruction may be an instruction that is placed in a slot in the pipeline but does not actually contain a task to be executed. For example, the processor 120 generates an idle cycle when processing of a lower-order instruction starts in a cycle preceding a cycle in which processing of a higher-order instruction is completed when a lower-order instruction uses the processing result of the upper-order instruction in the execution order. can be detected as For example, in the step of compiling the instruction, the processor 120 may check a plurality of instructions included in the first thread, and check whether a non-operation (NOP) instruction is included among the plurality of instructions. Alternatively, the processor 120 may check whether the NOP instruction is placed while the instruction is placed in the slot of the pipeline.

한 실시 예에 따르면, 프로세서(120)는, 제1 스레드에서 아이들 사이클이 검출될 경우, 아이들 사이클에 포함된 적어도 하나의 슬롯을 제1 스레드에 포함된 명령어에서 제2 스레드에 포함된 명령어로 교체되도록 스케쥴을 설정할 수 있다. 여기서 제2 스레드는 사용자가 설정한 우선 순위 또는 전자 장치의 기능에 따라 결정될 수 있다. According to an embodiment, when an idle cycle is detected in the first thread, the processor 120 replaces at least one slot included in the idle cycle from the instruction included in the first thread to the instruction included in the second thread. You can set the schedule as much as possible. Here, the second thread may be determined according to a priority set by a user or a function of the electronic device.

한 실시 예에 따르면, 프로세서(120)는, 제1 스레드 내지 제2 스레드를 설정된 스케쥴에 따라 처리할 수 있다. 예를 들어, 프로세서(120)는 제1 스레드에 포함된 복수의 명령어들을 파이프라인의 복수의 슬롯들에 배치할 수 있고, nop 명령어가 배치된 슬롯들에 제2 스레드에 포함된 명령어를 배치할 수 있고, 설정된 스케쥴에 따라 제1 스레드 내지 제2 스레드를 처리할 수 있다.According to an embodiment, the processor 120 may process the first thread to the second thread according to a set schedule. For example, the processor 120 may place a plurality of instructions included in the first thread in a plurality of slots of the pipeline, and place the instructions included in the second thread in slots in which the nop instruction is disposed. and may process the first thread to the second thread according to the set schedule.

한 실시 예에 따르면, 프로세서(120)는, 우선 처리해야 할 스레드의 처리를 완료할 경우, 우선 처리 모드를 멀티 스레드 모드로 다시 변경할 수 있다.According to an embodiment, when the processing of the thread to be processed first is completed, the processor 120 may change the priority processing mode back to the multi-thread mode.

메모리(130)는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리(130)는, 예를 들어, 전자 장치(101)의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 일 실시 예에 따르면, 메모리(130)는 전자 카드를 저장하기 위한 보안 영역을 포함할 수 있다. 이와 달리 전자 장치(101)는 전자 카드를 저장하기 위해 메모리(130)와 별도로 보안 요소를 포함할 수 있다.The memory 130 may include volatile and/or non-volatile memory. The memory 130 may store, for example, commands or data related to at least one other component of the electronic device 101 . According to an embodiment, the memory 130 may include a security area for storing the electronic card. Alternatively, the electronic device 101 may include a security element separately from the memory 130 to store the electronic card.

입출력 인터페이스(140)는, 예를 들어, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치(101)의 다른 구성요소(들)에 전달하거나, 또는 전자 장치(101)의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다. The input/output interface 140 transmits, for example, a command or data input from a user or other external device to other component(s) of the electronic device 101 , or another component ( ) can output a command or data received from the user or other external device.

통신 인터페이스(150)는, 예를 들어, 전자 장치(101)와 외부 장치, 또는 서버 간의 통신을 설정할 수 있다. 예를 들어, 통신 인터페이스(150)는 무선 통신 또는 유선 통신을 통해서 네트워크에 연결되어 외부 장치 또는 서버와 통신할 수 있다.
The communication interface 150 may establish, for example, communication between the electronic device 101 and an external device or a server. For example, the communication interface 150 may be connected to a network through wireless communication or wired communication to communicate with an external device or a server.

도 1b는 본 발명의 다양한 실시예에 따른 프로세서 및 메모리의 구성을 도시한 블록도이다.
1B is a block diagram illustrating the configuration of a processor and a memory according to various embodiments of the present invention.

도 1b를 참조하면, 본 발명의 다양한 실시 예에 따른 프로세서(120)(예: 도 1a의 프로세서(120))는 명령어 펫치 모듈(instruction fetch module)(121), 명령어 버퍼(instruction buffer)(122), 스레드 매니저(thread manager, 123), 이벤트 매니저(event manager, 124), 명령어 복호 모듈(instruction decode module)(125), 및 산술 논리 연산 모듈(arithmetic logic unit, ALU)(126)를 포함할 수 있다.Referring to FIG. 1B , the processor 120 (eg, the processor 120 of FIG. 1A ) according to various embodiments of the present disclosure includes an instruction fetch module 121 and an instruction buffer 122 . ), a thread manager 123 , an event manager 124 , an instruction decode module 125 , and an arithmetic logic unit (ALU) 126 . can

프로세서(120)는, 예를 들면, 메모리 인터페이스(memory interface, 131)를 통해 메모리(memory, 130)와 명령어 및/또는 데이터를 송수신할 수 있다.The processor 120 may transmit/receive commands and/or data to and from the memory 130 through, for example, a memory interface 131 .

일 실시 예에서, 프로세서(120)는 컴파일러(compiler)에 의해 아이들 사이클(idle cycle) 정보를 암호화할 수 있다. 예를 들어, 프로세서(120)는 복수의 명령어들을 포함하는 스레드를 구성할 경우, 해당 스레드에서 아이들 사이클이 발생할 수 있다는 식별자를 포함하는 아이들 사이클 발생 정보를 암호화하여 관련 명령어에 포함시킬 수 있다. 예를 들어, 실행 순서상 후 순위 명령어가 선 순위 명령어의 처리 결과를 이용함에 따라 아이들 사이클이 검출될 경우, 프로세서(120)는 선 순위 명령어에 아이들 사이클 발생 정보를 암호화할 수 있다.In an embodiment, the processor 120 may encrypt idle cycle information by a compiler. For example, when a thread including a plurality of instructions is configured, the processor 120 may encrypt idle cycle generation information including an identifier indicating that an idle cycle may occur in the corresponding thread and include it in the related instruction. For example, when an idle cycle is detected as a lower order instruction uses a processing result of a higher priority instruction in the execution order, the processor 120 may encrypt idle cycle generation information in the higher order instruction.

명령어 펫치 모듈(121)은, 예를 들면, 각각의 스레드의 PC 값(value)에 대응하는 명령어 데이터(instruction data)를 캐시 메모리(cache memory)로부터 불러올 수 있다. 일 예로, 명령어 펫치 모듈(121)은 각 스레드마다 펫치(fetch)된 명령어들을 각 스레드에 대응하는 명령어 버퍼(122)에 저장할 수 있다. 명령어 버퍼(122)에 저장된 명령어들은 필요한 시점에 파이프라인(pipeline)으로 배치(예: issue)될 수 있다.The instruction fetch module 121 may, for example, retrieve instruction data corresponding to a PC value of each thread from a cache memory. For example, the instruction fetch module 121 may store instructions fetched for each thread in the instruction buffer 122 corresponding to each thread. The instructions stored in the instruction buffer 122 may be arranged (eg, issued) in a pipeline when necessary.

스레드 매니저(123)는, 예를 들면, 매 사이클마다 파이프라인으로 배치 되어야 할 스레드 및 각 스레드를 구성하는 명령어들을 관리할 수 있다. 일 예로, 멀티 스레드 모드(multi thread mode)에서 스레드 매니저(123)는 복수의 스레드들을 파이프라인의 슬롯에 병렬적으로 배치할 수 있고, 우선 처리 모드(single thread mode)에서 스레드 매니저(123)는 하나의 스레드에 포함된 복수의 명령어들을 파이프라인의 슬롯에 병렬적으로 배치할 수 있다. 예컨대, 스레드 매니저(123)는 이벤트 매니저(124)를 통해 이벤트가 검출될 경우, 멀티 스레드 모드를 우선 처리 모드로 변경할 수 있다. 한편, 여기서 멀티 스레드 모드는 복수의 스레드들을 병렬 처리하는 기법으로 구동하는 모드로서, 예를 들어 IMT(interleaved multi-threading) 기법일 수 있다. 또한, 여기서 우선 처리 모드는 우선적으로 처리해야 할 스레드를 처리하면서 아이들 사이클에 배치된 다른 스레드를 병렬적으로 처리하는 모드일 수 있다.The thread manager 123 may manage, for example, threads to be arranged in a pipeline every cycle and instructions constituting each thread. For example, in a multi-thread mode, the thread manager 123 may arrange a plurality of threads in parallel in a slot of a pipeline, and in a single-thread mode, the thread manager 123 may A plurality of instructions included in one thread may be arranged in parallel in slots of a pipeline. For example, when an event is detected through the event manager 124 , the thread manager 123 may change the multi-thread mode to the priority processing mode. Meanwhile, here, the multi-thread mode is a mode in which a plurality of threads are driven by a parallel processing technique, and may be, for example, an interleaved multi-threading (IMT) technique. Also, here, the priority processing mode may be a mode in which other threads arranged in an idle cycle are processed in parallel while processing a thread to be processed with priority.

이벤트 매니저(124)는, 예를 들면, 이벤트가 발생하는 것을 검출할 수 있다. 예컨대, 이벤트 매니저(124)는 우선 순위에 기반하여 우선적으로 처리해야 할 스레드를 검출할 수 있다.The event manager 124 may detect that an event has occurred, for example. For example, the event manager 124 may detect a thread to be processed preferentially based on the priority.

명령어 복호 모듈(125)은, 예를 들면, 스레드 매니저(13)에 의해 배치된 명령어들을 복호(decode)할 수 있다. 또한, 명령어 복호 모듈(125)은 명령어를 복호하는 동안 아이들 사이클(idle cycle)에 관한 정보가 검출될 경우 아이들 사이클에 관한 정보를 스레드 매니저(123)에 전달할 수 있다.The instruction decoding module 125 may decode instructions arranged by the thread manager 13 , for example. Also, when information on an idle cycle is detected while decoding an instruction, the instruction decoding module 125 may transmit information on the idle cycle to the thread manager 123 .

산술 논리 연산 모듈(126)은, 예를 들면, 복호화된 명령어들을 실행(execution)시킬 수 있다. 명령어들의 실행된 값은 메모리(130)에 후 읽기(write-back)될 수 있다.The arithmetic logic operation module 126 may, for example, execute the decoded instructions. The executed values of the commands may be read back to the memory 130 .

메모리(130)는, 예를 들면, 캐쉬 메모리를 포함할 수 있고, 각 스레드를 구성하는 복수의 명령어들을 저장할 수 있다. 또한, 메모리(130)는 명령어들의 실행된 값을 저장할 수 있다.
The memory 130 may include, for example, a cache memory, and may store a plurality of instructions constituting each thread. Also, the memory 130 may store the executed values of the instructions.

도 1c는 본 발명의 다양한 실시예에 따른 스레드 매니저의 구성을 도시한 블록도이다.
1C is a block diagram illustrating a configuration of a thread manager according to various embodiments of the present invention.

도 1c를 참조하면, 본 발명의 다양한 실시 예에 따른 스레드 매니저(123)(예: 도 1b의 스레드 매니저(123))는 입력부(123a), 스레드 스케쥴러(123b), 스위칭부(123c), 이벤트 검출기(123d), 및 아이들 사이클 검출기(123g)를 포함할 수 있다.Referring to FIG. 1C , the thread manager 123 (eg, the thread manager 123 of FIG. 1B ) according to various embodiments of the present disclosure includes an input unit 123a, a thread scheduler 123b, a switching unit 123c, and an event. It may include a detector 123d, and an idle cycle detector 123g.

스레드 매니저(123)는, 예를 들면, 펫치(fetch)된 명령어들을 포함하는 복수의 스레드들을 설정된 스케쥴에 따라 파이프라인에 배치할 수 있다. 예컨대, 명령어 버퍼(122)에 각각 제1 스레드 내지 제4 스레드가 존재할 경우, 스레드 매니저(123)는 설정된 스케쥴에 따라 파이프라인의 각 슬롯에 제1 스레드 내지 제4 스레드를 병렬적으로 배치할 수 있다.The thread manager 123 may arrange, for example, a plurality of threads including fetched instructions in a pipeline according to a set schedule. For example, when the first to fourth threads exist in the instruction buffer 122 , the thread manager 123 may arrange the first to fourth threads in parallel in each slot of the pipeline according to a set schedule. have.

입력부(123a)는, 예를 들면, 명령어 버퍼(122)로부터 복수의 명령어들을 포함하는 복수의 스레드들을 수신할 수 있고, 복수의 스레드들을 파이프라인에 배치하는 스케쥴을 스레드 스케쥴러(123b)로부터 수신할 수 있다.The input unit 123a, for example, may receive a plurality of threads including a plurality of instructions from the instruction buffer 122, and receive a schedule for arranging the plurality of threads in the pipeline from the thread scheduler 123b. can

스레드 스케쥴러(123b)는, 예를 들면, 복수의 스레드들을 각각의 사이클마다 파이프라인의 적어도 하나의 슬롯에 스레드를 배치하는 스케쥴을 설정할 수 있다. 예컨대, 스레드 스케쥴려(123b)는 아이들 사이클 검출기로부터 아이들 사이클 정보를 수신할 경우, 아이들 사이클의 일부 슬롯에 배치된 스레드의 명령어를 다른 스레드에 포함된 명령어로 교체할 수 있다.The thread scheduler 123b may set, for example, a schedule for arranging a plurality of threads in at least one slot of the pipeline for each cycle. For example, when receiving idle cycle information from the idle cycle detector, the thread scheduler 123b may replace an instruction of a thread disposed in some slots of an idle cycle with an instruction included in another thread.

이벤트 검출기(123d)는, 예를 들면, 이벤트 매니저(124)로부터 이벤트가 발생했다는 정보를 수신할 수 있다. 예컨대, 이벤트 검출기(123d)는 수신한 이벤트가 발생했다는 정보를 스위칭부(123c)에 제공할 수 있다.The event detector 123d may receive, for example, information that an event has occurred from the event manager 124 . For example, the event detector 123d may provide information that the received event has occurred to the switching unit 123c.

스위칭부(123c)는, 예를 들면, 멀티 스레드 모드와 우선 처리 모드간 모드 변경을 제어할 수 있다. 일 예로, 스위칭부(123c)는 멀티 스레드 모드로 동작하는 동안 이벤트 검출기(123d)로부터 이벤트 발생 정보를 수신할 경우, 멀티 스레드 모드를 우선 처리 모드로 변경되도록 스위칭할 수 있다.The switching unit 123c may control mode change between the multi-threaded mode and the priority processing mode, for example. For example, when receiving event generation information from the event detector 123d while operating in the multi-threaded mode, the switching unit 123c may switch the multi-threaded mode to the priority processing mode.

아이들 사이클 검출기(123g)는, 각 명령어를 해당 파이프라인에 배치할 때 명령어에 포함된 아이들 사이클 정보를 검출할 수 있다. 예를 들어, 명령어의 컴파일 도중 컴파일러가 아이들 사이클이 발생할 수 있다는 정보를 암호화하여 관련 명령어에 포함시킬 수 있고, 아이들 사이클 검출기(123g)는 아이들 사이클 정보를 검출할 수 있다.
The idle cycle detector 123g may detect idle cycle information included in the instruction when arranging each instruction in the corresponding pipeline. For example, during compilation of the instruction, the compiler may encrypt information that an idle cycle may occur and include it in the related instruction, and the idle cycle detector 123g may detect the idle cycle information.

본 발명의 다양한 실시 예에 따르면, 전자 장치는, 프로세서; 및 복수의 스레드들에 포함된 복수의 명령어들을 저장하기 위한 메모리;를 포함하고, 상기 메모리는, 실행 시에, 상기 프로세서가, 이벤트를 검출하고, 상기 이벤트에 기반하여 상기 복수의 스레드들 중에서 우선적으로 처리해야 할 제1 스레드를 결정하고, 상기 제1 스레드는 제1 명령어 및 제2 명령어를 포함하고, 상기 제2 명령어가 상기 제1 명령어를 처리한 결과를 이용하지 않는 경우, 상기 제1 명령어를 처리하는 동안 상기 제2 명령어를 처리하고, 상기 제2 명령어가 상기 제1 명령어를 처리한 결과를 이용하는 경우, 상기 제1 명령어를 처리하는 동안, 상기 복수의 스레드들 중에서 상기 제1 스레드가 처리된 후 처리될 제2 스레드에 포함된 제3 명령어를 처리하도록 하는 인스트럭션들을 저장하도록 제어할 수 있다.According to various embodiments of the present disclosure, an electronic device may include a processor; and a memory for storing a plurality of instructions included in a plurality of threads, wherein the memory, when executed, causes the processor to detect an event and to prioritize among the plurality of threads based on the event determines a first thread to be processed as , wherein the first thread includes a first instruction and a second instruction When the second instruction is processed while processing and the second instruction uses a result of processing the first instruction, the first thread is processed from among the plurality of threads while processing the first instruction It is possible to control to store instructions for processing a third instruction included in a second thread to be processed after being processed.

다양한 실시 예에 따르면, 상기 이벤트는 상기 프로세서가 멀티 스레딩(multi-threading) 기법에 따라 구동하는 동안 검출될 수 있다.According to various embodiments, the event may be detected while the processor is driven according to a multi-threading technique.

다양한 실시 예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 이벤트의 상기 검출에 기반하여 멀티 스레드 모드를 우선 처리 모드로 변경하도록 할 수 있다.According to various embodiments, the instructions may cause the processor to change the multi-threaded mode to the priority processing mode based on the detection of the event.

다양한 실시 예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 우선 순위에 기반하여 상기 제1 스레드를 처리한 이후에 처리할 스레드 중에서 상기 제1 스레드를 교체할 스레드를 상기 제2 스레드로 결정하도록 할 수 있다.According to various embodiments, the instructions may cause the processor to determine, as the second thread, a thread to replace the first thread among threads to be processed after processing the first thread based on priority. have.

본 발명의 다양한 실시 예에 따르면, 전자 장치는, 프로세서; 및 복수의 스레드들에 포함된 복수의 명령어들을 저장하기 위한 메모리;를 포함하고, 상기 메모리는, 실행 시에, 상기 프로세서가, 이벤트를 검출하고, 상기 이벤트에 기반하여 상기 복수의 스레드들 중에서 우선적으로 처리해야 할 제1 스레드를 결정하고, 상기 이벤트의 상기 검출에 기반하여 멀티 스레드 모드를 우선 처리 모드로 변경하고, 상기 제1 스레드에서 아이들 사이클을 검출하고, 상기 검출된 아이들 사이클에 포함된 적어도 하나의 슬롯에 상기 복수의 스레드들 중에서 제2 스레드에 포함된 명령어가 배치되도록 스케쥴을 설정하고, 상기 제1 스레드와 상기 제2 스레드를 상기 설정된 스케쥴에 따라 처리하도록 하는 인스트럭션들을 저장하도록 제어할 수 있다.According to various embodiments of the present disclosure, an electronic device may include a processor; and a memory for storing a plurality of instructions included in a plurality of threads, wherein the memory, when executed, causes the processor to detect an event and to prioritize among the plurality of threads based on the event determines a first thread to be processed as , changes the multi-thread mode to a priority processing mode based on the detection of the event, detects an idle cycle in the first thread, and at least included in the detected idle cycle It is possible to set a schedule such that an instruction included in a second thread among the plurality of threads is placed in one slot, and to store instructions for processing the first thread and the second thread according to the set schedule. have.

다양한 실시 예에 따르면, 상기 아이들 사이클은 적어도 하나의 슬롯에 NOP(non-operation) 명령어가 배치될 수 있다.According to various embodiments, a non-operation (NOP) instruction may be disposed in at least one slot in the idle cycle.

다양한 실시 예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 제1 스레드에 포함된 복수의 명령어들을 확인하고, 상기 제1 스레드에 포함된 상기 복수의 명령어들은 제1 명령어 및 제2 명령어를 포함하고, 상기 제1 명령어의 처리 결과를 상기 제2 명령어가 이용하는 지 확인하고, 상기 제1 명령어의 처리 결과를 상기 제2 명령어가 이용할 경우, 상기 제1 명령어가 포함된 사이클과 상기 제2 명령어가 포함된 사이클 사이에 배치된 적어도 하나의 사이클을 상기 아이들 사이클로 검출하도록 할 수 있다.According to various embodiments, in the instructions, the processor identifies a plurality of instructions included in the first thread, and the plurality of instructions included in the first thread includes a first instruction and a second instruction, , check whether the second instruction uses the processing result of the first instruction, and when the second instruction uses the processing result of the first instruction, the cycle including the first instruction and the second instruction are included At least one cycle arranged between the cycles may be detected as the idle cycle.

다양한 실시 예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 제1 스레드에 포함된 상기 복수의 명령어들 중 어느 하나의 명령어의 처리 사이클이 기준 사이클 이상인 지 확인하고, 상기 제1 스레드에 포함된 상기 복수의 명령어들 중 상기 어느 하나의 명령어의 상기 처리 사이클이 상기 기준 사이클 이상일 경우, 상기 어느 하나의 명령어의 상기 처리 사이클을 상기 아이들 사이클로 검출하도록 할 수 있다.According to various embodiments, the instructions include, by the processor, whether a processing cycle of any one of the plurality of instructions included in the first thread is equal to or greater than a reference cycle, and the processor included in the first thread When the processing cycle of the one instruction among a plurality of instructions is equal to or greater than the reference cycle, the processing cycle of the one instruction may be detected as the idle cycle.

다양한 실시 예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 아이들 사이클에 포함된 슬롯이 2개 이상인 지 확인하고, 상기 아이들 사이클에 포함된 상기 슬롯이 2개 이상일 경우, 상기 제2 스레드에 포함된 복수의 명령어들을 확인하고, 상기 제2 스레드에 포함된 상기 복수의 명령어들은 제3 명령어 및 제4 명령어를 포함하고, 상기 제3 명령어의 처리 결과를 상기 제4 명령어가 이용하는 지 확인하고, 상기 제3 명령어의 처리 결과를 상기 제4 명령어가 이용할 경우, 상기 제3 명령어 또는 상기 제4 명령어 중 어느 하나를 상기 복수의 스레드들 중에서 제3 스레드에 포함된 명령어로 교체되도록 스케쥴을 설정하도록 할 수 있다.According to various embodiments, the instructions include, by the processor, whether the number of slots included in the idle cycle is two or more, and when the number of slots included in the idle cycle is two or more, the instructions included in the second thread Check a plurality of instructions, the plurality of instructions included in the second thread include a third instruction and a fourth instruction, determine whether the fourth instruction uses a processing result of the third instruction, and When the fourth instruction uses the processing result of three instructions, a schedule may be set to replace any one of the third instruction or the fourth instruction with an instruction included in a third thread among the plurality of threads .

다양한 실시 예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 제3 명령어의 처리 결과를 상기 제4 명령어가 이용하지 않는 경우, 상기 제3 명령어를 처리하는 동안 상기 제4 명령어를 처리하도록 할 수 있다.According to various embodiments, the instructions may cause the processor to process the fourth instruction while processing the third instruction when the fourth instruction does not use the processing result of the third instruction .

다양한 실시 예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 우선 순위에 기반하여 상기 제1 스레드를 교체할 스레드를 상기 제2 스레드로 결정하도록 할 수 있다.According to various embodiments, the instructions may cause the processor to determine a thread to replace the first thread as the second thread based on priority.

다양한 실시 예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 제1 스레드를 처리한 이후 상기 우선 처리 모드를 상기 멀티 스레드 모드로 변경하도록 할 수 있다.
According to various embodiments, the instructions may cause the processor to change the priority processing mode to the multi-threaded mode after processing the first thread.

도 2는 본 발명의 다양한 실시예에 따른 이벤트의 처리를 위한 스레딩 방법을 설명하는 흐름도이다. 이하 설명에서 전자 장치는 도 1a의 전자 장치(101) 또는 전자 장치(101)의 적어도 일부(예: 프로세서(120))를 포함할 수 있다.2 is a flowchart illustrating a threading method for processing an event according to various embodiments of the present disclosure. In the following description, the electronic device may include the electronic device 101 of FIG. 1A or at least a part of the electronic device 101 (eg, the processor 120 ).

도 2 를 참조하면, 전자 장치(101)는 동작 201에서, 이벤트를 검출할 수 있다. 예를 들어, 프로세서(120)는 멀티 스레딩 기법에 따라 복수의 스레드들을 병렬적으로 처리하는 동안, 이벤트를 검출할 수 있다. 이벤트는 사용자의 입력, 사용자의 설정 또는 전자 장치(101)의 설정에 따라 우선적으로 처리해야 할 이벤트일 수 있다.Referring to FIG. 2 , the electronic device 101 may detect an event in operation 201 . For example, the processor 120 may detect an event while processing a plurality of threads in parallel according to a multi-threading technique. The event may be an event to be processed preferentially according to a user's input, a user's setting, or a setting of the electronic device 101 .

전자 장치(101)는 동작 203에서, 이벤트에 기반하여 우선적으로 처리해야 할 스레드를 결정할 수 있다. 예를 들어, 프로세서(120)는 제1 스레드를 이벤트와 관련되어 우선적으로 처리해야 할 스레드로 결정할 수 있다. 여기서 제1 스레드는 복수의 명령어들을 포함할 수 있고, 복수의 명령어들은 순차적으로 실행될 수 있다. 예컨대, 제1 스레드는 먼저 처리되는 선 순위 명령어인 제1 명령어와 제1 명령어보다 후에 처리되는 후 순위 명령어인 제2 명령어를 포함할 수 있다.In operation 203 , the electronic device 101 may determine a thread to be processed preferentially based on the event. For example, the processor 120 may determine the first thread as a thread to be processed preferentially in relation to the event. Here, the first thread may include a plurality of instructions, and the plurality of instructions may be sequentially executed. For example, the first thread may include a first instruction that is a priority instruction that is processed first and a second instruction that is a second instruction that is processed after the first instruction.

전자 장치(101)는 동작 205에서, 후 순위 명령어가 선 순위 명령어의 처리 결과를 이용하는 지 판단할 수 있다. 예를 들어, 프로세서(120)는 제2 명령어가 제1 명령어의 처리 결과를 이용하는 지 판단할 수 있다.In operation 205 , the electronic device 101 may determine whether the lower order command uses the processing result of the prior order command. For example, the processor 120 may determine whether the second instruction uses a processing result of the first instruction.

만약, 제2 명령어가 제1 명령어의 처리 결과를 이용할 경우, 전자 장치(101)는 동작 207로 진행하여 제1 명령어를 처리하는 동안 제2 스레드에 포함된 제3 명령어를 처리할 수 있다. 여기서 제2 스레드는 실행 대기 중인 복수의 스레드들 중에서 우선 순위에 기반하여 결정된 스레드일 수 있다. 따라서, 프로세서(120)는 복수의 스레드들 중 제1 스레드를 우선적으로 처리하면서 제2 스레드를 병렬적으로 처리할 수 있다.If the second command uses the processing result of the first command, the electronic device 101 may process the third command included in the second thread while processing the first command in operation 207 . Here, the second thread may be a thread determined based on a priority among a plurality of threads waiting to be executed. Accordingly, the processor 120 may process the second thread in parallel while preferentially processing the first thread among the plurality of threads.

반면, 제2 명령어가 제1 명령어의 처리 결과를 이용하지 않을 경우, 전자 장치(101)는 동작 209로 진행하여 제1 명령어를 처리하는 동안 제2 명령어를 처리할 수 있다. 따라서, 프로세서(120)는 복수의 스레드들 중 제1 스레드만을 우선적으로 처리할 수 있다.On the other hand, when the second command does not use the processing result of the first command, the electronic device 101 proceeds to operation 209 to process the second command while processing the first command. Accordingly, the processor 120 may preferentially process only the first thread among the plurality of threads.

이와 같이 전자 장치는 멀티 스레딩 기법에 따라 복수의 스레드들을 병렬 처리하면서 명령어 처리율을 높일 수 있고, 이벤트에 따라 우선 처리해야 할 스레드를 우선 처리함에 따라 우선 처리해야 할 스레드의 처리 속도를 높일 수 있다. 하기에서 도 3 내지 도 8에 따라 멀티 스레드 모드 및 우선 처리 모드에 따른 스레딩 기법을 구체적으로 설명한다.
As described above, the electronic device may increase the command processing rate while parallel processing a plurality of threads according to the multi-threading technique, and may increase the processing speed of the thread to be processed first by prioritizing the thread to be processed according to an event. Hereinafter, a threading technique according to the multi-threaded mode and the priority processing mode will be described in detail with reference to FIGS. 3 to 8 .

도 3은 본 발명의 다양한 실시예에 따른 이벤트의 처리를 위한 스레딩 방법을 설명하는 흐름도이다. 도 4는 본 발명의 다양한 실시예에 따른 멀티 스레드 모드로 구동하는 방법을 설명하는 예시도이다. 도 5는 본 발명의 다양한 실시예에 따른 우선 처리 모드로 구동하는 방법을 설명하는 예시도이다. 이하 설명에서 전자 장치는 도 1a의 전자 장치(101) 또는 전자 장치(101)의 적어도 일부(예: 프로세서(120))를 포함할 수 있다.
3 is a flowchart illustrating a threading method for processing an event according to various embodiments of the present disclosure. 4 is an exemplary diagram illustrating a method of driving in a multi-threaded mode according to various embodiments of the present invention. 5 is an exemplary diagram illustrating a method of driving in a priority processing mode according to various embodiments of the present disclosure. In the following description, the electronic device may include the electronic device 101 of FIG. 1A or at least a part of the electronic device 101 (eg, the processor 120 ).

도 3 내지 도 5를 참조하면, 전자 장치(101)는 동작 301에서, 멀티 스레드 모드로 구동할 수 있다. 예를 들어, 프로세서(120)는 인터리브드 멀티 스레딩(interleaved multi threading, IMT) 기법에 따라 복수의 스레드들을 병렬적으로 처리할 수 있고, 파이프라인 지연(pipeline latency)를 방지할 수 있다. 한편, 프로세서(120)는, 도 3에 도시된 바와 같이 명령어 펫치(IF, instruction fetch), 명령어 복호(ID, instruction decode), 명령어 실행(EX, execution), 메모리 활성(EM, enable memory), 후 읽기(WB, write back)의 5 단계로 구분되는 사이클을 다수 포함하는 파이프라인의 슬롯에 복수의 스레드들을 배치(issue)할 수 있다. 단, 이에 제한되지 않고, 상기 파이프라인은 상기 5 단계 중 어느 하나가 생략될 수 있고, 다른 단계가 더 추가될 수 있다. 한편, 프로세서(120)는 도 4에 도시된 파이프라인에 복수의 스레드들을 스케쥴링할 수 있고, 스케쥴링된 복수의 스레드들을 병렬적으로 처리할 수 있다. 예컨대, 제1 스레드는 도 4에 도시된 바와 같이 복수의 비트 코드들 및 각각의 비트 코드에 대응하는 복수의 명령어들을 포함할 수 있고, 프로세서(120)는 파이프라인의 스케쥴에 따라 제1 스레드의 복수의 명령어들을 순차적으로 처리할 수 있다. 일 예로, 프로세서(120)는 제1 스레드의 ““addb”” 명령어를 5 사이클 동안 처리할 수 있다.3 to 5 , in operation 301 , the electronic device 101 may be driven in a multi-thread mode. For example, the processor 120 may process a plurality of threads in parallel according to an interleaved multi-threading (IMT) technique, and may prevent pipeline latency. On the other hand, the processor 120, as shown in Figure 3, instruction fetch (IF, instruction fetch), instruction decode (ID, instruction decode), instruction execution (EX, execution), memory enable (EM, enable memory), A plurality of threads may be issued in a slot of a pipeline including a plurality of cycles divided into five stages of write back (WB). However, the present invention is not limited thereto, and in the pipeline, any one of the five steps may be omitted, and another step may be further added. Meanwhile, the processor 120 may schedule a plurality of threads in the pipeline illustrated in FIG. 4 and process the plurality of scheduled threads in parallel. For example, as shown in FIG. 4 , the first thread may include a plurality of bit codes and a plurality of instructions corresponding to each bit code, and the processor 120 may execute the first thread according to the schedule of the pipeline. A plurality of commands may be sequentially processed. For example, the processor 120 may process the “addb” instruction of the first thread for 5 cycles.

전자 장치(101)는 동작 303에서, 이벤트를 검출할 수 있다. 여기서 이벤트는 사용자의 입력, 사용자의 설정 또는 전자 장치(101)의 설정에 따라 우선적으로 처리해야 할 이벤트일 수 있다.The electronic device 101 may detect an event in operation 303 . Here, the event may be an event to be processed preferentially according to a user's input, a user's setting, or a setting of the electronic device 101 .

전자 장치(101)는 동작 305에서, 이벤트에 기반하여 우선 처리해야 할 스레드를 결정할 수 있다. 예를 들어, 프로세서(120)는, 이벤트와 관련성 및 우선 순위에 기반하여, 새로 생성될 복수의 스레드들 중에서 우선 처리할 스레드를 검출할 수 있다. 여기서 우선 순위는 사용자가 설정할 수 있고, 전자 장치(101)의 주요 기능에 기반하여 설정될 수 있다. 예를 들어, 사용자는 자주 사용하는 기능(채팅 어플리케이션, 게임 어플리케이션)을 처리할 스레드의 우선 순위를 높게 설정할 수 있고, 전자 장치(101)의 주요 기능을 처리할 스레드의 우선 순위를 높게 설정할 수 있다. 일 예로, 프로세서(120)는 도 5에 도시된 바와 같이 제1 스레드를 우선 처리할 스레드로 검출할 수 있다. 한편, 설명의 편의를 위해 도 4에서 제1 스레드도 멀티 스레드로 처리되는 동작이 도시되어 있지만, 제1 스레드가 우선 처리될 스레드일 경우, 프로세서(120)는, 도 4에 도시된 바와 달리 제1 스레드가 생성되자마자 이를 우선 처리할 스레드라고 결정할 수 있고, 제1 스레드를 처음부터 우선 처리 모드로 처리할 수 있다.In operation 305 , the electronic device 101 may determine a thread to be processed first based on the event. For example, the processor 120 may detect a thread to be processed first from among a plurality of newly created threads based on the event, relevance, and priority. Here, the priority may be set by a user and may be set based on a main function of the electronic device 101 . For example, the user may set a high priority of a thread to process a frequently used function (a chatting application, a game application), and may set a high priority of a thread to process a main function of the electronic device 101 . . For example, as shown in FIG. 5 , the processor 120 may detect the first thread as a thread to be processed first. Meanwhile, for convenience of explanation, the operation of processing the first thread as a multi-thread is illustrated in FIG. 4 . However, when the first thread is a thread to be processed first, the processor 120 performs the first thread processing differently as shown in FIG. 4 . As soon as the first thread is created, it may be determined as the thread to be processed first, and the first thread may be processed in the priority processing mode from the beginning.

전자 장치(101)는 동작 307에서, 멀티 스레드 모드를 우선 처리 모드로 변경할 수 있다. 예를 들어, 프로세서(120)는 이벤트를 검출할 경우, 멀티 스레드 모드를 우선 처리 모드로 변경할 수 있고, 우선 처리 모드에 기반하여 우선 처리할 스레드를 처리할 수 있다. 예컨대, 프로세서(120)는 우선 처리할 스레드에 해당하는 제1 스레드를 결정함에 따라 파이프라인에 제1 스레드만 배치되도록 스케쥴링할 수 있다. 멀티 스레드 모드에서 우선 처리 모드로 변경되는 시기는 이벤트를 검출함과 동시에 또는 그 이후 또는 우선 처리해야 할 스레드를 결정함과 동시에 또는 그 이후 일 수 있다.In operation 307 , the electronic device 101 may change the multi-threaded mode to the priority processing mode. For example, when detecting an event, the processor 120 may change the multi-thread mode to the priority processing mode, and may process a thread to be processed first based on the priority processing mode. For example, the processor 120 may schedule to arrange only the first thread in the pipeline according to determining the first thread corresponding to the thread to be processed first. The time to change from the multi-threaded mode to the priority processing mode may be at the same time or after the event is detected, or at the same time or after determining the thread to be processed with priority.

전자 장치(101)는 동작 309에서, 제1 스레드에서 아이들 사이클(idle cycle)이 검출되는 지 확인할 수 있다. 여기서 아이들 사이클은 적어도 하나의 슬롯에 NOP(non-operation) 명령어가 배치될 수 있는 경우일 수 있다. 예를 들어, 프로세서(120)는 제1 스레드에 포함된 복수의 명령어들을 확인할 수 있고, 복수의 명령어들 중에서 NOP(non-operation) 명령어가 포함되는 지 확인할 수 있다. 예컨대, 프로세서(120)는 실행 순서상 후 순위 명령어가 선 순위 명령어의 처리 결과를 이용할 경우, 선 순위 명령어의 처리가 완료되는 사이클보다 앞선 사이클에서 후 순위 명령어의 처리가 시작될 경우 아이들 사이클이 발생하는 것으로 검출할 수 있다. 일 예로, 도 5에 도시된 바와 같이, 프로세서(120)는 sw 명령어와 and 명령어 사이에 배치된 nop 명령어, and 명령어와 eq 명령어 사이에 배치된 nop 명령어, 및 cl 명령어와 sw 명령어 사이에 배치된 nop 명령어를 확인할 수 있다. 아이들 사이클을 검출하는 자세한 내용은 도 5에서 후술한다.In operation 309 , the electronic device 101 may determine whether an idle cycle is detected in the first thread. Here, the idle cycle may be a case in which a non-operation (NOP) instruction may be disposed in at least one slot. For example, the processor 120 may check a plurality of instructions included in the first thread, and check whether a non-operation (NOP) instruction is included among the plurality of instructions. For example, the processor 120 generates an idle cycle when processing of a lower-order instruction starts in a cycle preceding a cycle in which processing of a higher-order instruction is completed when a lower-order instruction uses the processing result of the upper-order instruction in the execution order. can be detected as For example, as shown in FIG. 5 , the processor 120 may configure a nop instruction disposed between a sw instruction and an and instruction, a nop instruction disposed between an and instruction and an eq instruction, and a cl instruction disposed between the sw instruction and the sw instruction. You can check the nop command. Details of detecting the idle cycle will be described later with reference to FIG. 5 .

한 실시 예에 따르면, 아이들 사이클 발생의 검출 시기는 제1 스레드가 파이프라인에 배치되기 이전에 컴파일 단계일 수 있다. 이와 달리, 아이들 사이클 발생 검출 시기는 제1 스레드가 파이프라인에 배치된 이후에 검출될 수 있다.According to an embodiment, the detection timing of the occurrence of the idle cycle may be a compilation stage before the first thread is placed in the pipeline. Alternatively, the idle cycle occurrence detection timing may be detected after the first thread is placed in the pipeline.

한 실시 예에 따르면, 프로세서(120)는 컴파일러에 의해 스레드에 포함된 복수의 명령어들을 암호화하는 단계 동안, 스레드에 포함된 어느 하나의 명령어를 암호화할 때 아이들 사이클 발생 정보(예: nop 명령어가 발생한다는 정보)도 함께 암호화하여 해당 명령어를 저장할 수 있다. 구체적으로, 예를 들어, 프로세서(120)는 복수의 명령어들을 포함하는 스레드를 암호화할 경우, nop 명령어가 발생한다는 정보를 1 bit에 할당하여 nop 명령어가 발생하는 아이들 사이클보다 1 내지 2 사이클 이전에 배치된 명령어에 반영할 수 있다. 일 예로, 표 1에 기재된 바와 같이, mul 명령어가 포함된 사이클 바로 다음에 nop 명령어가 포함된 아이들 사이클이 존재할 경우, 프로세서(120)는 mul 명령어의 암호화 비트에 nop 명령어가 발생한다는 정보를 1bit로 할당하여 반영할 수 있다. 이와 마찬가지로 프로세서(120)는 nop 명령어가 포함된 아이들 사이클 바로 이전 사이클에 배치된 and 명령어에도 nop 명령어가 발생한다는 정보를 1bit에 할당하여 반영할 수 있다. 각각의 스레드를 컴파일시 코드(code) 압축을 통해 nop 명령어에 의한 코드(code) 사이즈 증가를 방지할 수 있고, 아이들 사이클을 컴파일 단계에서 검출함에 따라 스레드 처리 효율이 올라갈 수 있다.According to an embodiment, during the step of the processor 120 encrypting the plurality of instructions included in the thread by the compiler, when any one instruction included in the thread is encrypted, idle cycle generation information (eg, nop instruction is generated) information) can also be encrypted to store the corresponding command. Specifically, for example, when encrypting a thread including a plurality of instructions, the processor 120 allocates information indicating that the nop instruction is generated to 1 bit, 1 to 2 cycles before the idle cycle in which the nop instruction occurs. It can be reflected in the placed command. For example, as shown in Table 1, when an idle cycle including a nop instruction exists immediately after a cycle including a mul instruction, the processor 120 transmits information indicating that the nop instruction occurs in the encryption bit of the mul instruction to 1 bit. can be assigned and reflected. Similarly, the processor 120 may allocate information that the nop instruction occurs even in the and instruction disposed in the cycle immediately preceding the idle cycle including the nop instruction to 1 bit and reflect it. When compiling each thread, code compression can prevent an increase in code size due to the nop instruction, and thread processing efficiency can be improved by detecting an idle cycle in the compilation step.

instructioninstruction encoding bitencoding bit addadd idle cycle bit = 0idle cycle bit = 0 subsub idle cycle bit = 0idle cycle bit = 0 mulmul idle cycle bit = 1idle cycle bit = 1 nopnop idle cycle bit = 0idle cycle bit = 0 andand idle cycle bit = 1idle cycle bit = 1 nopnop idle cycle bit = 0idle cycle bit = 0

한 실시 예에 따르면, 스레드에 포함된 복수의 명령어들의 암호화 단계에서 아이들 사이클이 발생한다는 정보도 함께 암호화할 경우, 프로세서(120)는 해당 명령어의 복호화(decoding) 단계에서 아이들 사이클 발생 정보를 검출할 수 있다.According to an embodiment, when information indicating that an idle cycle occurs in the encryption step of a plurality of instructions included in a thread is also encrypted, the processor 120 detects the idle cycle occurrence information in the decoding step of the corresponding instruction. can

만약, 제1 스레드에서 아이들 사이클이 검출되지 않을 경우, 전자 장치(101)는 동작 315으로 진행하여, 제1 스레드를 설정된 스케쥴에 따라 처리할 수 있다. 예를 들어, 프로세서(120)는 제1 스레드에 포함된 복수의 명령어들을 파이프라인의 복수의 슬롯에 배치할 수 있고, 복수의 명령어들이 파이프라인에 배치됨에 따라 설정된 스케쥴에 따라 제1 스레드를 처리(예: 명령어 execution 및 write back)할 수 있다.If an idle cycle is not detected in the first thread, the electronic device 101 proceeds to operation 315 to process the first thread according to a set schedule. For example, the processor 120 may arrange a plurality of instructions included in the first thread in a plurality of slots of the pipeline, and process the first thread according to a schedule set as the plurality of instructions are placed in the pipeline. (eg command execution and write back).

반면, 제1 스레드에서 아이들 사이클이 검출될 경우, 전자 장치(101)는 동작 311로 진행하여 아이들 사이클에 포함된 적어도 하나의 슬롯을 제1 스레드에 포함된 명령어에서 제2 스레드에 포함된 명령어로 교체되도록 스케쥴을 설정할 수 있다. 예를 들어, sw와 and 명령어 사이에 nop 명령어가 발생할 경우, 프로세서(120)는 sw와 and 명령어 사이에 nop 명령어 대신 제2 스레드에 포함된 명령어를 배치할 수 있다. 또한, and와 eq 명령어 사이에 nop 명령어가 2개 발생할 경우, 프로세서(120)는 and와 eq 명령어 사이에 nop 명령어 2개 대신 제3 스레드에 포함된 명령어와 제4 스레드에 포함된 명령어를 배치할 수 있다. 여기서 제2 스레드 내지 제4 스레드가 배치되는 순서는 사용자가 설정한 우선 순위 또는 전자 장치의 기능에 따라 설정될 수 있다. On the other hand, when an idle cycle is detected in the first thread, the electronic device 101 proceeds to operation 311 and converts at least one slot included in the idle cycle from the instruction included in the first thread to the command included in the second thread. You can schedule them to be replaced. For example, when the nop instruction occurs between the sw and and instructions, the processor 120 may place the instruction included in the second thread instead of the nop instruction between the sw and the and instruction. Also, when two nop instructions occur between the and and eq instructions, the processor 120 places the instruction included in the third thread and the instruction included in the fourth thread instead of the two nop instructions between the and and eq instructions. can Here, the order in which the second to fourth threads are arranged may be set according to a priority set by a user or a function of the electronic device.

한 실시 예에 따르면, 도면에는 도시되지 않았지만, 제1 스레드보다 우선 순위는 낮지만 먼저 처리할 필요가 있는 스레드가 존재할 경우, 프로세서(120)는 nop 명령어가 발생한 슬롯에 해당 스레드에 포함된 명령어들만 배치할 수 있다. 예컨대, 제2 스레드를 먼저 처리할 필요가 있을 경우, 프로세서(120)는 nop 명령어가 발생한 슬롯들에 제2 스레드에 포함된 명령어만을 우선적으로 배치할 수 있다.According to an embodiment, although not shown in the drawing, when a thread that has a lower priority than the first thread but needs to be processed first exists, the processor 120 only outputs instructions included in the corresponding thread in the slot in which the nop instruction occurs. can be placed For example, when it is necessary to process the second thread first, the processor 120 may preferentially arrange only the instructions included in the second thread in slots in which the nop instruction occurs.

전자 장치(101)는 동작 313에서, 제1 스레드 내지 제4 스레드를 설정된 스케쥴에 따라 처리할 수 있다. 예를 들어, 프로세서(120)는 제1 스레드에 포함된 복수의 명령어들을 파이프라인의 복수의 슬롯들에 배치할 수 있고, nop 명령어가 배치된 슬롯들에 제2 스레드 내지 제4 스레드를 배치할 수 있고, 복수의 스레드들이 파이프라인에 배치됨에 따라 설정된 스케쥴에 따라 제1 스레드 내지 제4 스레드를 처리할 수 있다. 따라서, 프로세서(120)는 우선 처리해야 할 스레드를 처리하는 동안 아이들 타임(idle time, 예: nop 명령어)에 다른 스레드를 처리할 수 있다.In operation 313 , the electronic device 101 may process the first to fourth threads according to a set schedule. For example, the processor 120 may place a plurality of instructions included in the first thread in a plurality of slots of the pipeline, and may place the second to fourth threads in the slots in which the nop instruction is disposed. Also, as the plurality of threads are arranged in the pipeline, the first to fourth threads may be processed according to a schedule set. Accordingly, the processor 120 may process another thread in idle time (eg, nop instruction) while processing the thread to be processed first.

한 실시 예에 따르면, 전자 장치(101)는 우선 처리해야 할 스레드의 처리를 완료할 경우, 우선 처리 모드를 멀티 스레드 모드로 다시 변경할 수 있다.According to an embodiment, when the processing of the thread to be processed first is completed, the electronic device 101 may change the priority processing mode back to the multi-thread mode.

한편, 기존 전자 장치는 아이들 사이클(idle cycle)이 발생함에 따라 프로세서의 컴퓨터 처리율(computational throughput)이 낮아지는 걸 방지하기 위해 실행된 명령어의 값을 후 읽기(write-back) 하기 이전에 다음 명령어에 실행된 명령어의 값을 포워딩(forwarding) 해줄 수 있는 bypass logic을 포함할 수 있다. 그러나, 프로세서에 추가 구성이 필요함에 따라 하드웨어 논리 회로 복잡성(hardware logic complexity)가 상당히 증가할 수 있고, 명령어 처리 지연(delay) 및 전력 소모가 증가할 수 있다. 그러나, 기존과 달리 전자 장치(101)는 아이들 사이클을 방지하는 bypass logic을 제거하여 하드웨어 논리 회로의 복잡성을 감소시킬 수 있고, 발생한 아이들 사이클에 다른 스레드를 배치함에 따라 아이들 타임(idle time)을 감소 시킬 수 있고, 우선 처리할 스레드를 먼저 처리함에 따라 스레드 처리 속도를 기존 대비 3배 이상 높일 수 있다.
On the other hand, in the conventional electronic device, in order to prevent a decrease in the computational throughput of the processor due to the occurrence of an idle cycle, the value of the executed command is read back to the next command before write-back. It can include bypass logic that can forward the value of the executed instruction. However, as the processor requires additional configuration, hardware logic complexity may significantly increase, and instruction processing delay and power consumption may increase. However, unlike the prior art, the electronic device 101 can reduce the complexity of the hardware logic circuit by removing the bypass logic that prevents the idle cycle, and reduces the idle time by arranging another thread in the generated idle cycle. By processing the thread to be processed first, the thread processing speed can be increased more than 3 times compared to the existing one.

도 6은 본 발명의 다양한 실시예에 따른 아이들 사이클을 검출하는 방법을 설명하는 흐름도이다. 이하 설명은 도 2의 동작 309에서 아이들 사이클을 검출하는 동작을 설명한다. 이하 설명에서 전자 장치는 도 1a의 전자 장치(101) 또는 전자 장치(101)의 적어도 일부(예: 프로세서(120))를 포함할 수 있다.
6 is a flowchart illustrating a method of detecting an idle cycle according to various embodiments of the present disclosure. The following description describes an operation of detecting an idle cycle in operation 309 of FIG. 2 . In the following description, the electronic device may include the electronic device 101 of FIG. 1A or at least a part of the electronic device 101 (eg, the processor 120 ).

도 5 및 도 6을 참조하면, 전자 장치(101)는 동작 601에서, 제1 스레드에 포함된 복수의 명령어들을 확인할 수 있다. 예를 들어, 프로세서(120)는 도 5에 도시된 바와 같이 제1 스레드에 포함된 lw 명령어 등을 확인할 수 있다.5 and 6 , in operation 601 , the electronic device 101 may identify a plurality of instructions included in the first thread. For example, the processor 120 may check the lw instruction included in the first thread as shown in FIG. 5 .

전자 장치(101)는 동작 603에서, 제1 스레드에 포함된 복수의 명령어들 중 선 순위 명령어인 제1 명령어의 처리 결과를 후 순위 명령어인 제2 명령어가 이용하는 지 확인할 수 있다. 예를 들어, 프로세서(120)는 도 5에 도시된 and 명령어가 sw 명령어의 처리 결과를 이용하는 것으로 확인할 수 있고, eq 명령어가 and 명령어의 처리 결과를 이용하는 것으로 확인할 수 있다. 처리 결과를 이용하는 지 여부는 명령어의 실행 순서, 명령어간 인접한 정도, 및 명령어 내용에 따라 결정될 수 있다. 한편, 제1 명령어와 제2 명령어는 예시에 불과하고 프로세서(120)는 제1 스레드에 포함된 모든 명령어들 중 어느 하나의 명령어가 다른 명령어의 처리 결과에 의존하는 지 확인할 수 있다. In operation 603 , the electronic device 101 may determine whether the second instruction, which is a lower order instruction, uses the processing result of the first instruction, which is a higher order instruction, among a plurality of instructions included in the first thread. For example, the processor 120 may determine that the and instruction shown in FIG. 5 uses the processing result of the sw instruction, and may determine that the eq instruction uses the processing result of the and instruction. Whether to use the processing result may be determined according to the execution order of the instructions, the degree of adjacency between the instructions, and the content of the instruction. Meanwhile, the first instruction and the second instruction are merely examples, and the processor 120 may determine whether any one instruction among all instructions included in the first thread depends on a processing result of another instruction.

만약, 제1 스레드의 복수의 명령어들 중 제1 명령어의 처리 결과를 제2 명령어가 이용하지 않을 경우, 전자 장치(101)는 동작 607로 진행하여 복수의 명령어들 중 어느 하나의 명령어의 처리 사이클이 기준 사이클을 초과하는 지 확인할 수 있다.If the second instruction does not use the processing result of the first instruction among the plurality of instructions of the first thread, the electronic device 101 proceeds to operation 607 for a processing cycle of any one instruction among the plurality of instructions. It can be checked whether this reference cycle is exceeded.

반면, 제1 스레드의 복수의 명령어들 중 제1 명령어의 처리 결과를 제2 명령어가 이용할 경우, 전자 장치(101)는 동작 605로 진행하여 제1 명령어가 포함된 사이클과 제2 명령어가 포함된 사이클 사이에 배치된 적어도 하나의 사이클을 아이들 사이클로 검출할 수 있다. 예를 들어, 제2 명령어가 제1 명령어의 처리 결과에 의존할 경우, 제1 명령어의 처리 결과를 획득하기 위해 nop 명령어가 발생할 가능성이 높아질 수 있다. 따라서, 프로세서(120)는, 도 4에 도시된 바와 같이, sw 명령어와 and 명령어 사이에 nop 명령어가 포함된 아이들 사이클이 발생하는 것으로 검출할 수 있고, and 명령어와 eq 명령어 사이에 nop 명령어가 포함된 아이들 사이클이 발생하는 것으로 검출할 수 있다.On the other hand, when the second instruction uses the processing result of the first instruction among the plurality of instructions of the first thread, the electronic device 101 proceeds to operation 605 to include a cycle including the first instruction and a cycle including the second instruction. At least one cycle disposed between the cycles may be detected as an idle cycle. For example, when the second instruction depends on the processing result of the first instruction, the probability that the nop instruction is generated to obtain the processing result of the first instruction may increase. Accordingly, as shown in FIG. 4 , the processor 120 may detect that an idle cycle including a nop instruction is generated between the sw instruction and the and instruction, and the nop instruction is included between the and instruction and the eq instruction. It can be detected that an idle cycle has occurred.

전자 장치(101)는 동작 607에서, 복수의 명령어들 중 어느 하나의 명령어의 처리 사이클이 기준 사이클을 초과하는 지 확인할 수 있다. 예컨대, 프로세서(120)는 명령어 처리에 필요한 사이클이 다른 명령어보다 많은 명령어를 확인할 수 있다. 여기서 기준 사이클은 2 이상일 수 있다. 예를 들어, 프로세서(120)는 명령어 처리에 필요한 사이클이 3사이클인 divide 명령어가 존재함을 확인할 수 있다.In operation 607 , the electronic device 101 may determine whether a processing cycle of any one command among a plurality of commands exceeds a reference cycle. For example, the processor 120 may identify an instruction having more cycles required for instruction processing than other instructions. Here, the reference cycle may be two or more. For example, the processor 120 may confirm that there is a divide command having 3 cycles required for processing the command.

전자 장치(101)는 동작 609에서, 어느 하나의 명령어의 처리 사이클을 아이들 사이클로 검출할 수 있다. 예컨대, 명령어 처리에 필요한 사이클 동안 해당 명령어가 배치된 슬롯 이외에 다른 슬롯들에 nop 명령어만 배치될 수 있다. 따라서, 해당 명령어 처리에 필요한 사이클을 아이들 사이클로 검출할 수 있다.In operation 609 , the electronic device 101 may detect a processing cycle of any one command as an idle cycle. For example, only the nop instruction may be arranged in slots other than the slot in which the corresponding instruction is arranged during a cycle required for instruction processing. Accordingly, a cycle necessary for processing a corresponding instruction can be detected as an idle cycle.

한 실시 예에 따르면, 프로세서(120)는 컴파일러 단계에서 스레드가 아이들 사이클을 포함한다는 것을 검출할 수 있고, 명령어 암호화 단계에서 아이들 사이클 발생 정보를 암호화할 수 있고, 명령어 복호화 단계에서 아이들 사이클 발생 정보를 검출할 수 있고, 파이프라인에 명령어를 배치할 때 아이들 사이클이 발생한다는 정보를 파이프라인 스케쥴에 반영할 수 있다.According to an embodiment, the processor 120 may detect that the thread includes an idle cycle in the compiler step, may encrypt the idle cycle occurrence information in the instruction encryption step, and obtain the idle cycle generation information in the instruction decryption step. It can be detected, and information that an idle cycle occurs when an instruction is placed in the pipeline can be reflected in the pipeline schedule.

동작 609 이후 전자 장치(101)는 리턴하여 도 2의 동작 311 및 동작 313을 수행하거나 동작 315을 수행할 수 있다.After operation 609 , the electronic device 101 may return to perform operations 311 and 313 of FIG. 2 or perform operation 315 .

한 실시 예에 따르면, 명령어의 처리 효율을 위해 동작 607 및 동작 609는 생략될 수 있다.
According to an embodiment, operations 607 and 609 may be omitted for processing efficiency of instructions.

도 7은 본 발명의 다양한 실시예에 따른 우선 처리 모드에서 데이터 해저드(data hazard)를 처리하는 방법을 설명하는 흐름도이다. 도 8은 본 발명의 다양한 실시예에 따른 우선 처리 모드에서 데이터 해저드(data hazard)를 처리하는 방법을 설명하는 예시도이다. 이하 설명은 도 2의 동작 311 및 동작 313에서 복수의 스레드들을 처리하는 동작을 설명한다. 이하 설명에서 전자 장치는 도 1a의 전자 장치(101) 또는 전자 장치(101)의 적어도 일부(예: 프로세서(120))를 포함할 수 있다.
7 is a flowchart illustrating a method of processing a data hazard in a priority processing mode according to various embodiments of the present disclosure. 8 is an exemplary diagram illustrating a method of processing a data hazard in a priority processing mode according to various embodiments of the present disclosure. The following description describes an operation of processing a plurality of threads in operations 311 and 313 of FIG. 2 . In the following description, the electronic device may include the electronic device 101 of FIG. 1A or at least a part of the electronic device 101 (eg, the processor 120 ).

도 7 및 도 8을 참조하면, 전자 장치(101)는 동작 701에서, 아이들 사이클에 포함된 슬롯이 2개 이상 인지 확인할 수 있다. 예를 들어, 프로세서(120)는 제1 스레드에 따라 발생한 아이들 사이클에 nop 명령어가 발생한 슬롯이 2개 이상인 지 확인할 수 있다.7 and 8 , in operation 701 , the electronic device 101 may determine whether there are two or more slots included in the idle cycle. For example, the processor 120 may check whether there are two or more slots in which the nop instruction is generated in an idle cycle that occurs according to the first thread.

만약, 아이들 사이클에 포함된 슬롯이 2개 이상이 아닐 경우, 전자 장치(101)는 동작 703으로 진행하여 제2 스레드에 포함된 어느 하나의 명령어를 아이들 사이클의 nop 명령어가 발생한 슬롯에 배치할 수 있다. 그리고 전자 장치(101)는 동작 705로 진행하여 제1 스레드 및 제2 스레드를 설정된 스케쥴에 따라 처리할 수 있다. 그리고 전자 장치(101)는 도 2의 동작들로 리턴하여 해당 절차를 종료할 수 있고, 제1 스레드의 처리를 완료한 이후 멀티 스레드 모드로 변경하여 구동할 수 있다.If the number of slots included in the idle cycle is not two or more, the electronic device 101 proceeds to operation 703 to arrange any one instruction included in the second thread in the slot in which the nop instruction of the idle cycle occurs. have. Then, in operation 705, the electronic device 101 may process the first thread and the second thread according to a set schedule. In addition, the electronic device 101 may return to the operations of FIG. 2 to end the corresponding procedure, and after completing the processing of the first thread, may change to the multi-thread mode and drive it.

반면, 아이들 사이클에 포함된 슬롯이 2개 이상일 경우, 전자 장치는 동작 707로 진행하여 제2 스레드에 포함된 복수의 명령어들을 확인할 수 있다. 예를 들어, 아이들 사이클에 2개 이상의 nop 명령어가 검출된 경우, 프로세서(120)는 제2 스레드에 포함된 복수의 명령어들의 실행 순서, 명령어간 인접 정도, 또는 명령어 내용 등을 확인할 수 있다. 일 예로, 제2 스레드는 제3 명령어와 제4 명령어를 포함할 수 있다.On the other hand, when there are two or more slots included in the idle cycle, the electronic device may proceed to operation 707 to check a plurality of instructions included in the second thread. For example, when two or more nop instructions are detected in an idle cycle, the processor 120 may check an execution order of a plurality of instructions included in the second thread, a degree of adjacency between instructions, or instruction content. As an example, the second thread may include a third instruction and a fourth instruction.

전자 장치(101)는 동작 709에서, 제2 스레드에 포함된 복수의 명령어들 중 제3 명령어의 처리 결과를 제4 명령어가 이용하는지 확인할 수 있다. 예를 들어, 프로세서(120)는 도 8에 도시된 바와 같이 nop 명령어가 발생한 슬롯에 제2 스레드를 배치할 수 있다. 일 예로, 제2 스레드에 포함된 제3 명령어가 도 8의 첫 번째 사이클의 IF 슬롯에 배치될 수 있고, 제2 스레드에 포함된 제4 명령어가 도 8의 첫 번째 사이클의 EX 슬롯에 배치될 수 있다. 예컨대, 제3 명령어와 제4 명령어는 동일 사이클에 배치될 수 있고, 동일 사이클에 배치된 제3 명령어의 처리 결과를 제4 명령어가 이용할 경우, 프로세서(120)는 동일 사이클에 배치된 제3 명령어와 제4 명령어간 데이터 의존성에 따라 데이터 해저드(data hazard)가 발생하는 것으로 판단할 수 있다.In operation 709 , the electronic device 101 may determine whether the fourth instruction uses the processing result of the third instruction among the plurality of instructions included in the second thread. For example, the processor 120 may place the second thread in the slot in which the nop instruction is generated as shown in FIG. 8 . As an example, the third instruction included in the second thread may be placed in the IF slot of the first cycle of FIG. 8 , and the fourth instruction included in the second thread may be placed in the EX slot of the first cycle of FIG. 8 . can For example, the third instruction and the fourth instruction may be arranged in the same cycle, and when the fourth instruction uses the processing result of the third instruction arranged in the same cycle, the processor 120 performs the third instruction arranged in the same cycle. It can be determined that a data hazard occurs according to the data dependency between the and the fourth instruction.

발명의 한 실시 예에 따르면, 제3 명령어와 제4 명령어는 동일 사이클에 배치된 지 여부에 관계 없이 데이터 의존성에 따라 데이터 해저드가 발생한 것으로 판단할 수 있다. 예를 들어, 제3 명령어와 제4 명령어는 서로 다른 사이클에 배치될 수 있다.According to an embodiment of the present invention, it may be determined that a data hazard has occurred according to data dependency regardless of whether the third instruction and the fourth instruction are disposed in the same cycle. For example, the third instruction and the fourth instruction may be placed in different cycles.

만약, 제2 스레드에 포함된 복수의 명령어들 중 제3 명령어의 처리 결과를 제4 명령어가 이용하지 않을 경우, 전자 장치(101)는 동작 711로 진행하여 제2 스레드에 포함된 명령어를 아이들 사이클의 슬롯에 배치할 수 있다. 그리고 전자 장치(101)는 동작 713로 진행하여 제1 스레드 및 제2 스레드를 설정된 스케쥴에 따라 처리할 수 있다. 그리고 전자 장치(101)는 도 2의 동작들로 리턴하여 해당 절차를 종료할 수 있고, 제1 스레드의 처리를 완료한 이후 멀티 스레드 모드로 변경하여 구동할 수 있다.If the fourth instruction does not use the processing result of the third instruction among the plurality of instructions included in the second thread, the electronic device 101 proceeds to operation 711 to perform an idle cycle of the instruction included in the second thread. It can be placed in any slot of The electronic device 101 may proceed to operation 713 to process the first thread and the second thread according to a set schedule. In addition, the electronic device 101 may return to the operations of FIG. 2 to end the corresponding procedure, and after completing the processing of the first thread, may change to the multi-thread mode and drive it.

반면, 제2 스레드에 포함된 복수의 명령어들 중 제3 명령어의 처리 결과를 제4 명령어가 이용할 경우, 전자 장치(101)는 동작 715으로 진행하여 제3 명령어 또는 제4 명령어 중 어느 하나를 제3 스레드에 포함된 명령어로 교체되도록 스케쥴을 설정할 수 있다. 예를 들어, 프로세서(120)는 동일 사이클에 배치된 제2 스레드의 제3 명령어와 제4 명령어간 데이터 해저드를 방지하기 위해 제3 명령어 또는 제4 명령어를 제3 스레드에 포함된 명령어로 교체할 수 있다. 여기서 제3 스레드는 설정된 우선 순위에 따라 결정될 수 있다. 예컨대, 프로세서(120)는 도 8에 도시된 바와 같이 동일 사이클에 배치된 제2 스레드의 명령어 중 어느 하나를 모두 제3 스레드에 포함된 명령어로 교체할 수 있다.On the other hand, when the fourth instruction uses the processing result of the third instruction among the plurality of instructions included in the second thread, the electronic device 101 proceeds to operation 715 to issue either the third instruction or the fourth instruction. 3 You can set the schedule to be replaced by the instruction included in the thread. For example, the processor 120 may replace the third instruction or the fourth instruction with an instruction included in the third thread in order to prevent a data hazard between the third instruction and the fourth instruction of the second thread arranged in the same cycle. can Here, the third thread may be determined according to a set priority. For example, the processor 120 may replace any one of the instructions of the second thread arranged in the same cycle with the instructions included in the third thread as shown in FIG. 8 .

전자 장치(101)는 동작 717에서, 제1 스레드 내지 제3 스레드를 설정된 스케쥴에 따라 처리할 수 있다. 그리고 전자 장치(101)는 도 2의 동작들로 리턴하여 해당 절차를 종료할 수 있고, 제1 스레드의 처리를 완료한 이후 멀티 스레드 모드로 변경하여 구동할 수 있다.
In operation 717 , the electronic device 101 may process the first to third threads according to a set schedule. In addition, the electronic device 101 may return to the operations of FIG. 2 to end the corresponding procedure, and after completing the processing of the first thread, may change to the multi-thread mode and drive it.

본 발명의 다양한 실시 예에 따르면, 전자 장치의 동작 방법은, 이벤트를 검출하는 동작; 상기 이벤트에 기반하여 상기 복수의 스레드들 중에서 우선적으로 처리해야 할 제1 스레드를 결정하는 동작; 상기 이벤트의 상기 검출에 기반하여 멀티 스레드 모드를 우선 처리 모드로 변경하는 동작; 상기 제1 스레드에서 아이들 사이클을 검출하는 동작; 상기 검출된 아이들 사이클에 포함된 적어도 하나의 슬롯에 상기 복수의 스레드들 중에서 제2 스레드에 포함된 명령어가 배치되도록 스케쥴을 설정하는 동작; 및 상기 제1 스레드와 상기 제2 스레드를 상기 설정된 스케쥴에 따라 처리하는 동작;을 포함할 수 있다.According to various embodiments of the present disclosure, a method of operating an electronic device may include detecting an event; determining a first thread to be processed preferentially from among the plurality of threads based on the event; changing the multi-threaded mode to the priority processing mode based on the detection of the event; detecting an idle cycle in the first thread; setting a schedule such that an instruction included in a second thread among the plurality of threads is placed in at least one slot included in the detected idle cycle; and processing the first thread and the second thread according to the set schedule.

다양한 실시 예에 따르면, 상기 아이들 사이클은 적어도 하나의 슬롯에 NOP(non-operation) 명령어가 배치될 수 있다.According to various embodiments, a non-operation (NOP) instruction may be disposed in at least one slot in the idle cycle.

다양한 실시 예에 따르면, 상기 아이들 사이클을 검출하는 동작은, 상기 제1 스레드에 포함된 복수의 명령어들을 확인하는 동작; 여기서 상기 제1 스레드에 포함된 상기 복수의 명령어들은 제1 명령어 및 제2 명령어를 포함하고, 상기 제1 명령어의 처리 결과를 상기 제2 명령어가 이용하는 지 확인하는 동작; 및 상기 제1 명령어의 처리 결과를 상기 제2 명령어가 이용할 경우, 상기 제1 명령어가 포함된 사이클과 상기 제2 명령어가 포함된 사이클 사이에 배치된 적어도 하나의 사이클을 상기 아이들 사이클로 검출하는 동작;을 포함할 수 있다.According to various embodiments, the detecting of the idle cycle may include: checking a plurality of instructions included in the first thread; wherein the plurality of instructions included in the first thread include a first instruction and a second instruction, and checking whether the second instruction uses a processing result of the first instruction; and detecting, as the idle cycle, at least one cycle disposed between a cycle including the first command and a cycle including the second command when the second command uses the processing result of the first command. may include

다양한 실시 예에 따르면, 상기 아이들 사이클을 검출하는 동작은, 상기 제1 스레드에 포함된 상기 복수의 명령어들 중 어느 하나의 명령어의 처리 사이클이 기준 사이클 이상인 지 확인하는 동작; 및 상기 제1 스레드에 포함된 상기 복수의 명령어들 중 상기 어느 하나의 명령어의 상기 처리 사이클이 상기 기준 사이클 이상일 경우, 상기 어느 하나의 명령어의 상기 처리 사이클을 상기 아이들 사이클로 검출하는 동작;을 포함할 수 있다.According to various embodiments, the detecting of the idle cycle may include determining whether a processing cycle of any one of the plurality of instructions included in the first thread is equal to or greater than a reference cycle; and detecting the processing cycle of the one instruction as the idle cycle when the processing cycle of the one instruction among the plurality of instructions included in the first thread is equal to or greater than the reference cycle. can

다양한 실시 예에 따르면, 상기 스케쥴을 설정하는 동작 및 상기 설정된 스케쥴에 따라 처리하는 동작은, 상기 아이들 사이클에 포함된 슬롯이 2개 이상인 지 확인하는 동작; 상기 아이들 사이클에 포함된 상기 슬롯이 2개 이상일 경우, 상기 제2 스레드에 포함된 복수의 명령어들을 확인하는 동작; 여기서 상기 제2 스레드에 포함된 상기 복수의 명령어들은 제3 명령어 및 제4 명령어를 포함하고, 상기 제3 명령어의 처리 결과를 상기 제4 명령어가 이용하는 지 확인하는 동작; 및 상기 제3 명령어의 처리 결과를 상기 제4 명령어가 이용할 경우, 상기 제3 명령어 또는 상기 제4 명령어 중 어느 하나를 상기 복수의 스레드들 중에서 제3 스레드에 포함된 명령어로 교체되도록 스케쥴을 설정하는 동작;을 포함할 수 있다.According to various embodiments, the setting of the schedule and the processing according to the set schedule may include: checking whether two or more slots included in the idle cycle; checking a plurality of instructions included in the second thread when the number of slots included in the idle cycle is two or more; wherein the plurality of instructions included in the second thread include a third instruction and a fourth instruction, and checking whether the fourth instruction uses a processing result of the third instruction; and setting a schedule such that, when the fourth instruction uses the processing result of the third instruction, any one of the third instruction or the fourth instruction is replaced with an instruction included in a third thread among the plurality of threads. action; may include.

다양한 실시 예에 따르면, 상기 제3 명령어의 처리 결과를 상기 제4 명령어가 이용하지 않는 경우, 상기 제3 명령어를 처리하는 동안 상기 제4 명령어를 처리할 수 있다.According to various embodiments, when the fourth instruction does not use the processing result of the third instruction, the fourth instruction may be processed while the third instruction is processed.

다양한 실시 예에 따르면, 우선 순위에 기반하여 상기 제1 스레드를 교체할 스레드를 상기 제2 스레드로 결정하는 동작을 더 포함할 수 있다.According to various embodiments, the method may further include determining a thread to replace the first thread as the second thread based on the priority.

다양한 실시 예에 따르면, 상기 제1 스레드를 처리한 이후 상기 우선 처리 모드를 상기 멀티 스레드 모드로 변경하는 동작을 더 포함할 수 있다.
According to various embodiments, the method may further include changing the priority processing mode to the multi-threading mode after processing the first thread.

도 9는 다양한 실시예들에 따른, 네트워크 환경 내의 전자 장치의 블록도이다.
9 is a block diagram of an electronic device in a network environment, according to various embodiments of the present disclosure;

도 9은, 다양한 실시예들에 따른, 네트워크 환경(900) 내의 전자 장치(901)(예: 도 1a의 전자 장치(101))의 블럭도이다. 도 9을 참조하면, 네트워크 환경(900)에서 전자 장치(901)는 제 1 네트워크(998)(예: 근거리 무선 통신)를 통하여 전자 장치(902)와 통신하거나, 또는 제 2 네트워크(999)(예: 원거리 무선 통신)를 통하여 전자 장치(904) 또는 서버(908)와 통신할 수 있다. 일실시예에 따르면, 전자 장치(901)는 서버(908)를 통하여 전자 장치(904)와 통신할 수 있다. 일실시예에 따르면, 전자 장치(901)는 프로세서(920), 메모리(930), 입력 장치(950), 음향 출력 장치(955), 표시 장치(960), 오디오 모듈(970), 센서 모듈(976), 인터페이스(977), 햅틱 모듈(979), 카메라 모듈(980), 전력 관리 모듈(988), 배터리(989), 통신 모듈(990), 가입자 식별 모듈(996), 및 안테나 모듈(997)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(901)에는, 이 구성요소들 중 적어도 하나(예: 표시 장치(960) 또는 카메라 모듈(980))가 생략되거나 다른 구성 요소가 추가될 수 있다. 어떤 실시예에서는, 예를 들면, 표시 장치(960)(예: 디스플레이)에 임베디드된 센서 모듈(976)(예: 지문 센서, 홍채 센서, 또는 조도 센서)의 경우와 같이, 일부의 구성요소들이 통합되어 구현될 수 있다.9 is a block diagram of an electronic device 901 (eg, the electronic device 101 of FIG. 1A ) in a network environment 900 , according to various embodiments of the present disclosure. Referring to FIG. 9 , in a network environment 900 , the electronic device 901 communicates with the electronic device 902 through a first network 998 (eg, short-range wireless communication), or a second network 999 ( For example, it may communicate with the electronic device 904 or the server 908 through long-distance wireless communication. According to an embodiment, the electronic device 901 may communicate with the electronic device 904 through the server 908 . According to an embodiment, the electronic device 901 includes a processor 920 , a memory 930 , an input device 950 , a sound output device 955 , a display device 960 , an audio module 970 , and a sensor module ( 976 , interface 977 , haptic module 979 , camera module 980 , power management module 988 , battery 989 , communication module 990 , subscriber identification module 996 , and antenna module 997 . ) may be included. In some embodiments, at least one of these components (eg, the display device 960 or the camera module 980 ) may be omitted or another component may be added to the electronic device 901 . In some embodiments, for example, as in the case of a sensor module 976 (eg, a fingerprint sensor, an iris sensor, or an illumination sensor) embedded in a display device 960 (eg, a display), some components It can be integrated and implemented.

프로세서(920)는, 예를 들면, 소프트웨어(예: 프로그램(940))를 구동하여 프로세서(920)에 연결된 전자 장치(901)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)을 제어할 수 있고, 다양한 데이터 처리 및 연산을 수행할 수 있다. 프로세서(920)는 다른 구성요소(예: 센서 모듈(976) 또는 통신 모듈(990))로부터 수신된 명령 또는 데이터를 휘발성 메모리(932)에 로드하여 처리하고, 결과 데이터를 비휘발성 메모리(934)에 저장할 수 있다. 일실시예에 따르면, 프로세서(920)는 메인 프로세서(921)(예: 중앙 처리 장치 또는 어플리케이션 프로세서), 및 이와는 독립적으로 운영되고, 추가적으로 또는 대체적으로, 메인 프로세서(921)보다 저전력을 사용하거나, 또는 지정된 기능에 특화된 보조 프로세서(923)(예: 그래픽 처리 장치, 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 여기서, 보조 프로세서(923)는 메인 프로세서(921)와 별개로 또는 임베디드되어 운영될 수 있다.The processor 920, for example, drives at least one other component (eg, a hardware or software component) of the electronic device 901 connected to the processor 920 by driving software (eg, a program 940). It can control and perform various data processing and operations. The processor 920 loads and processes commands or data received from other components (eg, the sensor module 976 or the communication module 990 ) into the volatile memory 932 , and stores the result data in the non-volatile memory 934 . can be stored in According to an embodiment, the processor 920 is operated independently of the main processor 921 (eg, central processing unit or application processor), and additionally or alternatively, uses less power than the main processor 921, or Alternatively, the auxiliary processor 923 (eg, a graphic processing unit, an image signal processor, a sensor hub processor, or a communication processor) specialized for a specified function may be included. Here, the auxiliary processor 923 may be operated separately from or embedded in the main processor 921 .

이런 경우, 보조 프로세서(923)는, 예를 들면, 메인 프로세서(921)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(921)를 대신하여, 또는 메인 프로세서(921)가 액티브(예: 어플리케이션 수행) 상태에 있는 동안 메인 프로세서(921)와 함께, 전자 장치(901)의 구성요소들 중 적어도 하나의 구성요소(예: 표시 장치(960), 센서 모듈(976), 또는 통신 모듈(990))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일실시예에 따르면, 보조 프로세서(923)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(980) 또는 통신 모듈(990))의 일부 구성 요소로서 구현될 수 있다. 메모리(930)는, 전자 장치(901)의 적어도 하나의 구성요소(예: 프로세서(920) 또는 센서모듈(976))에 의해 사용되는 다양한 데이터, 예를 들어, 소프트웨어(예: 프로그램(940)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 저장할 수 있다. 메모리(930)는, 휘발성 메모리(932) 또는 비휘발성 메모리(934)를 포함할 수 있다. In this case, the coprocessor 923 may, for example, act on behalf of the main processor 921 while the main processor 921 is in an inactive (eg, sleep) state, or when the main processor 921 is active (eg, in a sleep) state. : While in the application execution) state, together with the main processor 921 , at least one of the components of the electronic device 901 (eg, the display device 960 , the sensor module 976 , or the communication module ( 990)) associated with at least some of the functions or states. According to one embodiment, coprocessor 923 (eg, image signal processor or communication processor) is implemented as some component of another functionally related component (eg, camera module 980 or communication module 990). can be The memory 930 includes various data used by at least one component (eg, the processor 920 or the sensor module 976 ) of the electronic device 901 , for example, software (eg, a program 940 ). ) and input data or output data for commands related thereto. The memory 930 may include a volatile memory 932 or a non-volatile memory 934 .

프로그램(940)은 메모리(930)에 저장되는 소프트웨어로서, 예를 들면, 운영 체제(942), 미들 웨어(944) 또는 어플리케이션(946)을 포함할 수 있다. The program 940 is software stored in the memory 930 , and may include, for example, an operating system 942 , middleware 944 , or an application 946 .

입력 장치(950)는, 전자 장치(901)의 구성요소(예: 프로세서(920))에 사용될 명령 또는 데이터를 전자 장치(901)의 외부(예: 사용자)로부터 수신하기 위한 장치로서, 예를 들면, 마이크, 마우스, 또는 키보드를 포함할 수 있다. The input device 950 is a device for receiving commands or data to be used in a component (eg, the processor 920) of the electronic device 901 from the outside (eg, a user) of the electronic device 901, for example, For example, it may include a microphone, mouse, or keyboard.

음향 출력 장치(955)는 음향 신호를 전자 장치(901)의 외부로 출력하기 위한 장치로서, 예를 들면, 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용되는 스피커와 전화 수신 전용으로 사용되는 리시버를 포함할 수 있다. 일실시예에 따르면, 리시버는 스피커와 일체 또는 별도로 형성될 수 있다.The sound output device 955 is a device for outputting a sound signal to the outside of the electronic device 901, and includes, for example, a speaker used for general purposes such as multimedia playback or recording playback, and a receiver used exclusively for receiving calls. may include According to an embodiment, the receiver may be formed integrally with or separately from the speaker.

표시 장치(960)는 전자 장치(901)의 사용자에게 정보를 시각적으로 제공하기 위한 장치로서, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일실시예에 따르면, 표시 장치(960)는 터치 회로(touch circuitry) 또는 터치에 대한 압력의 세기를 측정할 수 있는 압력 센서를 포함할 수 있다. The display device 960 is a device for visually providing information to a user of the electronic device 901 , and may include, for example, a display, a hologram device, or a projector and a control circuit for controlling the corresponding device. According to an embodiment, the display device 960 may include a touch circuitry or a pressure sensor capable of measuring the intensity of the pressure applied to the touch.

오디오 모듈(970)은 소리와 전기 신호를 쌍방향으로 변환시킬 수 있다. 일실시예에 따르면, 오디오 모듈(970)은, 입력 장치(950) 를 통해 소리를 획득하거나, 음향 출력 장치(955), 또는 전자 장치(901)와 유선 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(902)(예: 스피커 또는 헤드폰))를 통해 소리를 출력할 수 있다.The audio module 970 may interactively convert a sound and an electrical signal. According to an embodiment, the audio module 970 acquires a sound through the input device 950 , or an external electronic device (eg, a sound output device 955 ) connected to the electronic device 901 by wire or wirelessly. Sound may be output through the electronic device 902 (eg, a speaker or headphones).

센서 모듈(976)은 전자 장치(901)의 내부의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 센서 모듈(976)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다. The sensor module 976 may generate an electrical signal or data value corresponding to an internal operating state (eg, power or temperature) of the electronic device 901 or an external environmental state. The sensor module 976 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, a temperature sensor, a humidity sensor, Alternatively, it may include an illuminance sensor.

인터페이스(977)는 외부 전자 장치(예: 전자 장치(902))와 유선 또는 무선으로 연결할 수 있는 지정된 프로토콜을 지원할 수 있다. 일실시예에 따르면, 인터페이스(977)는 HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.The interface 977 may support a designated protocol capable of connecting to an external electronic device (eg, the electronic device 902 ) in a wired or wireless manner. According to an embodiment, the interface 977 may include a high definition multimedia interface (HDMI), a universal serial bus (USB) interface, an SD card interface, or an audio interface.

연결 단자(978)는 전자 장치(901)와 외부 전자 장치(예: 전자 장치(902))를 물리적으로 연결시킬 수 있는 커넥터, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.The connection terminal 978 is a connector capable of physically connecting the electronic device 901 and an external electronic device (eg, the electronic device 902 ), for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector. (eg a headphone connector).

햅틱 모듈(979)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 햅틱 모듈(979)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.The haptic module 979 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 979 may include, for example, a motor, a piezoelectric element, or an electrical stimulation device.

카메라 모듈(980)은 정지 영상 및 동영상을 촬영할 수 있다. 일실시예에 따르면, 카메라 모듈(980)은 하나 이상의 렌즈, 이미지 센서, 이미지 시그널 프로세서, 또는 플래시를 포함할 수 있다.The camera module 980 may capture still images and moving images. According to an embodiment, the camera module 980 may include one or more lenses, an image sensor, an image signal processor, or a flash.

전력 관리 모듈(988)은 전자 장치(901)에 공급되는 전력을 관리하기 위한 모듈로서, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구성될 수 있다.The power management module 988 is a module for managing power supplied to the electronic device 901 , and may be configured as, for example, at least a part of a power management integrated circuit (PMIC).

배터리(989)는 전자 장치(901)의 적어도 하나의 구성 요소에 전력을 공급하기 위한 장치로서, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.The battery 989 is a device for supplying power to at least one component of the electronic device 901 , and may include, for example, a non-rechargeable primary battery, a rechargeable secondary battery, or a fuel cell.

통신 모듈(990)은 전자 장치(901)와 외부 전자 장치(예: 전자 장치(902), 전자 장치(904), 또는 서버(908))간의 유선 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(990)은 프로세서(920)(예: 어플리케이션 프로세서)와 독립적으로 운영되는, 유선 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일실시예에 따르면, 통신 모듈(990)은 무선 통신 모듈(992)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(994)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함하고, 그 중 해당하는 통신 모듈을 이용하여 제 1 네트워크(998)(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제 2 네트워크(999)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 상술한 여러 종류의 통신 모듈(990)은 하나의 칩으로 구현되거나 또는 각각 별도의 칩으로 구현될 수 있다. The communication module 990 establishes a wired or wireless communication channel between the electronic device 901 and an external electronic device (eg, the electronic device 902 , the electronic device 904 , or the server 908 ), and establishes the established communication channel. It can support performing communication through The communication module 990 may include one or more communication processors that support wired communication or wireless communication, which are operated independently of the processor 920 (eg, an application processor). According to one embodiment, the communication module 990 is a wireless communication module 992 (eg, a cellular communication module, a short-range communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module 994 (eg, : LAN (local area network) communication module, or power line communication module), and using a corresponding communication module among them, the first network 998 (eg, Bluetooth, WiFi direct or infrared data association (IrDA)) communication network) or the second network 999 (eg, a cellular network, the Internet, or a telecommunication network such as a computer network (eg, LAN or WAN)). The above-described various types of communication modules 990 may be implemented as a single chip or as separate chips.

일실시예에 따르면, 무선 통신 모듈(992)은 가입자 식별 모듈(996)에 저장된 사용자 정보를 이용하여 통신 네트워크 내에서 전자 장치(901)를 구별 및 인증할 수 있다. According to an embodiment, the wireless communication module 992 may distinguish and authenticate the electronic device 901 in the communication network using user information stored in the subscriber identification module 996 .

안테나 모듈(997)은 신호 또는 전력을 외부로 송신하거나 외부로부터 수신하기 위한 하나 이상의 안테나들을 포함할 수 있다. 일시예에 따르면, 통신 모듈(990)(예: 무선 통신 모듈(992))은 통신 방식에 적합한 안테나를 통하여 신호를 외부 전자 장치로 송신하거나, 외부 전자 장치로부터 수신할 수 있다. The antenna module 997 may include one or more antennas for externally transmitting or receiving a signal or power. According to an example, the communication module 990 (eg, the wireless communication module 992 ) may transmit a signal to or receive a signal from the external electronic device through an antenna suitable for a communication method.

상기 구성요소들 중 일부 구성요소들은 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input/output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되어 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.Some of the components are connected to each other through a communication method between peripheral devices (eg, a bus, general purpose input/output (GPIO), serial peripheral interface (SPI), or mobile industry processor interface (MIPI)) to signal (eg commands or data) can be exchanged with each other.

일실시예에 따르면, 명령 또는 데이터는 제 2 네트워크(999)에 연결된 서버(908)를 통해서 전자 장치(901)와 외부의 전자 장치(904)간에 송신 또는 수신될 수 있다. 전자 장치(902, 904) 각각은 전자 장치(901)와 동일한 또는 다른 종류의 장치일 수 있다. 일실시예에 따르면, 전자 장치(901)에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 외부 전자 장치들에서 실행될 수 있다. 일실시예에 따르면, 전자 장치(901)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(901)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 외부 전자 장치에게 요청할 수 있다. 상기 요청을 수신한 외부 전자 장치는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(901)로 전달할 수 있다. 전자 장치(901)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
According to an embodiment, the command or data may be transmitted or received between the electronic device 901 and the external electronic device 904 through the server 908 connected to the second network 999 . Each of the electronic devices 902 and 904 may be the same or a different type of device from the electronic device 901 . According to an embodiment, all or some of the operations performed by the electronic device 901 may be performed by one or a plurality of external electronic devices. According to an embodiment, when the electronic device 901 needs to perform a function or service automatically or upon request, the electronic device 901 performs the function or service with it instead of or in addition to executing the function or service itself. At least some related functions may be requested from the external electronic device. The external electronic device that has received the request may execute the requested function or additional function, and transmit the result to the electronic device 901 . The electronic device 901 may provide the requested function or service by processing the received result as it is or additionally. For this purpose, for example, cloud computing, distributed computing, or client-server computing technology may be used.

도 10은 다양한 실시예에 따른 프로그램의 블록도이다.
10 is a block diagram of a program according to various embodiments.

도 10은 다양한 실시예에 따른 프로그램(1040)의 블록도(1000)이다. 일실시예에 따르면, 프로그램(1040)은 전자 장치(901)의 하나 이상의 리소스들을 제어하기 위한 운영 체제(1042), 미들 웨어(1044), 또는 상기 운영 체제(1042) 상에서 실행 가능한 어플리케이션(1046)을 포함할 수 있다. 운영 체제(1042)는, 예를 들면, AndroidTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 프로그램(1040) 중 적어도 일부 프로그램은, 예를 들면, 제조 시에 전자 장치(901)에 프리로드되거나, 또는 사용자의 사용 환경에서 외부 전자 장치(예: 전자 장치(1002 또는 1004), 또는 서버(1008))로부터 다운로드되거나 갱신 될 수 있다.10 is a block diagram 1000 of a program 1040 according to various embodiments. According to an embodiment, the program 1040 is an operating system 1042 for controlling one or more resources of the electronic device 901 , middleware 1044 , or an application 1046 executable on the operating system 1042 . may include Operating system 1042 may include, for example, Android™, iOS™, Windows™, Symbian™, Tizen™, or Bada™. At least some of the programs 1040 are, for example, preloaded into the electronic device 901 at the time of manufacture, or an external electronic device (eg, the electronic device 1002 or 1004), or a server (eg, the electronic device 1002 or 1004) in the user's use environment. 1008)) or may be updated.

운영 체제(1042)는 전자 장치(901)의 시스템 리소스 (예: 프로세스, 메모리, 또는 전원)를 제어(예: 할당 또는 회수)할 수 있다. 운영 체제(1042)는, 추가적으로 또는 대체적으로, 전자 장치(901)의 다른 하드웨어 디바이스, 예를 들면, 입력 장치(1050), 음향 출력 장치(1055), 표시 장치(1060), 오디오 모듈(1070), 센서 모듈(1076), 인터페이스(1077), 햅틱 모듈(1079), 카메라 모듈(1080), 전력 관리 모듈(1088), 배터리(1089), 통신 모듈(1090), 가입자 식별 모듈(1096), 또는 안테나 모듈(1097)을 구동하기 위한 하나 이상의 드라이버 프로그램들을 포함할 수 있다.The operating system 1042 may control (eg, allocate or reclaim) system resources (eg, a process, memory, or power) of the electronic device 901 . The operating system 1042 may additionally or alternatively include other hardware devices of the electronic device 901 , for example, an input device 1050 , a sound output device 1055 , a display device 1060 , an audio module 1070 . , sensor module 1076 , interface 1077 , haptic module 1079 , camera module 1080 , power management module 1088 , battery 1089 , communication module 1090 , subscriber identification module 1096 , or It may include one or more driver programs for driving the antenna module 1097 .

미들 웨어(1044)는 어플리케이션(1046)이 전자 장치(901)의 하나 이상의 리소스들이 제공하는 기능 또는 정보를 사용할 수 있도록 다양한 기능들을 어플리케이션(1046)으로 제공할 수 있다. 미들 웨어(1044)는, 예를 들면, 어플리케이션 매니저(901), 윈도우 매니저(1003), 멀티미디어 매니저(1005), 리소스 매니저(1007), 파워 매니저(1009), 데이터베이스 매니저(1011), 패키지 매니저(1013), 커넥티비티 매니저(1015), 노티피케이션 매니저(1017), 로케이션 매니저(1019), 그래픽 매니저(1021), 시큐리티 매니저(1023), 통화 매니저(1025), 또는 음성 인식 매니저(1027)를 포함할 수 있다. 어플리케이션 매니저(901)는, 예를 들면, 어플리케이션(1046)의 생명 주기를 관리할 수 있다. 윈도우 매니저(1003)는, 예를 들면, 화면에서 사용되는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저(1005)는, 예를 들면, 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱을 이용하여 미디어 파일의 인코딩 또는 디코딩을 수행할 수 있다. 리소스 매니저(1007)는, 예를 들면, 어플리케이션(1046)의 소스 코드 또는 메모리의 공간을 관리할 수 있다. 파워 매니저(1009)는, 예를 들면, 배터리의 용량, 온도 또는 전원을 관리하고, 이 중 해당 정보를 이용하여 전자 장치(901)의 동작에 필요한 전력 정보를 결정 또는 제공할 수 있다. 일실시예에 따르면, 파워 매니저(1009)는 바이오스(BIOS: basic input/output system)와 연동할 수 있다.The middleware 1044 may provide various functions to the application 1046 so that the application 1046 can use functions or information provided by one or more resources of the electronic device 901 . The middleware 1044 is, for example, an application manager 901, a window manager 1003, a multimedia manager 1005, a resource manager 1007, a power manager 1009, a database manager 1011, a package manager ( 1013 ), including a connectivity manager 1015 , a notification manager 1017 , a location manager 1019 , a graphics manager 1021 , a security manager 1023 , a call manager 1025 , or a voice recognition manager 1027 . can do. The application manager 901 may manage the life cycle of the application 1046 , for example. The window manager 1003 may manage GUI resources used in the screen, for example. The multimedia manager 1005 may, for example, identify a format required for reproduction of media files, and perform encoding or decoding of the media file using a codec suitable for the format. The resource manager 1007 may, for example, manage the space of the source code or memory of the application 1046 . The power manager 1009 may, for example, manage the capacity, temperature, or power of the battery, and may determine or provide power information required for the operation of the electronic device 901 by using the corresponding information. According to an embodiment, the power manager 1009 may interwork with a basic input/output system (BIOS).

데이터베이스 매니저(1011)는, 예를 들면, 어플리케이션(1046)에서 사용될 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저(1013)는, 예를 들면, 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 갱신을 관리할 수 있다. 커넥티비티 매니저(1015)는, 예를 들면, 전자 장치(901)와 외부 전자 장치 간의 무선 또는 유선 연결을 관리할 수 있다. 노티피케이션 매니저(1017)는, 예를 들면, 발생된 이벤트(예: 통화, 메시지, 또는 알람)를 사용자에게 알리기 위한 기능을 제공할 수 있다. 로케이션 매니저(1019)는, 예를 들면, 전자 장치(901)의 위치 정보를 관리할 수 있다. 그래픽 매니저(1021)는, 예를 들면, 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 시큐리티 매니저(1023)는, 예를 들면, 시스템 보안 또는 사용자 인증을 제공할 수 있다. 통화(telephony) 매니저(1025)는, 예를 들면, 전자 장치(901)의 음성 통화 또는 영상 통화 기능을 관리할 수 있다. 음성 인식 매니저(1027)는, 예를 들면, 사용자의 음성 데이터를 서버(1008)로 전송하고, 해당 음성 데이터에 기반하여 전자 장치(901)에서 수행될 기능에 대응하는 명령어(command) 또는 해당 음성 데이터에 기반하여 변환된 문자 데이터를 수신할 수 있다. 일 실시예에 따르면, 미들 웨어(1044)는 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다. 일 실시예에 따르면, 미들 웨어(1044)의 적어도 일부는 운영 체제(1042)의 일부로 포함되거나, 또는 운영 체제(1042)와는 별도의 소프트웨어로 구현될 수 있다.The database manager 1011 may create, search, or change a database to be used in the application 1046 , for example. The package manager 1013 may manage installation or update of an application distributed in the form of a package file, for example. The connectivity manager 1015 may manage, for example, a wireless or wired connection between the electronic device 901 and an external electronic device. The notification manager 1017 may provide, for example, a function for notifying a user of an event (eg, a call, a message, or an alarm) that has occurred. The location manager 1019 may manage location information of the electronic device 901 , for example. The graphic manager 1021 may manage a graphic effect to be provided to a user or a user interface related thereto, for example. The security manager 1023 may provide, for example, system security or user authentication. The telephony manager 1025 may manage, for example, a voice call or a video call function of the electronic device 901 . The voice recognition manager 1027, for example, transmits the user's voice data to the server 1008, and based on the voice data, a command corresponding to a function to be performed in the electronic device 901 or a corresponding voice The converted text data may be received based on the data. According to an embodiment, the middleware 1044 may dynamically delete some existing components or add new components. According to an embodiment, at least a portion of the middleware 1044 may be included as a part of the operating system 1042 or implemented as software separate from the operating system 1042 .

어플리케이션(1046)은, 예를 들면, 홈(1051), 다이얼러(1053), SMS/MMS(1055), IM(instant message)(1057), 브라우저(1059), 카메라(1061), 알람(1063), 컨택트(1065), 음성 인식(1067), 이메일(1069), 달력(1071), 미디어 플레이어(1073), 앨범(1075), 와치(1077), 헬스(1079)(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보(1081)(예: 기압, 습도, 또는 온도 정보) 어플리케이션을 포함할 수 있다. 일실시예에 따르면, 어플리케이션(1046)은 전자 장치(901)와 외부 전자 장치 사이의 정보 교환을 지원할 수 있는 정보 교환 어플리케이션(미도시)을 더 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치로 지정된 정보 (예: 통화, 메시지, 또는 알람)를 전달하기 위한 노티피케이션 릴레이 어플리케이션, 또는 외부 전자 장치를 관리하기 위한 장치 관리 어플리케이션을 포함할 수 있다. 노티피케이션 릴레이 어플리케이션은, 예를 들면, 전자 장치(901)의 다른 어플리케이션(예: 이메일 어플리케이션(1069))에서 발생된 이벤트(예: 메일 수신)에 대응하는 알림 정보를 외부 전자 장치로 전달하거나, 또는 외부 전자 장치로부터 알림 정보를 수신하여 전자 장치(901)의 사용자에게 제공할 수 있다. 장치 관리 어플리케이션은, 예를 들면, 전자 장치(901)와 통신하는 외부 전자 장치 또는 그 일부 구성 요소(예: 표시 장치(1060) 또는 카메라 모듈(1080))의 전원(예: 턴-온 또는 턴-오프) 또는 기능(예: 표시 장치(1060) 또는 카메라 모듈(1080)의 밝기, 해상도, 또는 포커스)을 제어할 수 있다. 장치 관리 어플리케이션은, 추가적으로 또는 대체적으로, 외부 전자 장치에서 동작하는 어플리케이션의 설치, 삭제, 또는 갱신을 지원할 수 있다.
Applications 1046 include, for example, home 1051 , dialer 1053 , SMS/MMS 1055 , instant message (IM) 1057 , browser 1059 , camera 1061 , alarm 1063 . , contact 1065, voice recognition 1067, email 1069, calendar 1071, media player 1073, album 1075, watch 1077, fitness 1079 (e.g. exercise or blood sugar) measurement), or environmental information 1081 (eg, barometric pressure, humidity, or temperature information). According to an embodiment, the application 1046 may further include an information exchange application (not shown) capable of supporting information exchange between the electronic device 901 and an external electronic device. The information exchange application may include, for example, a notification relay application for transmitting designated information (eg, call, message, or alarm) to an external electronic device, or a device management application for managing the external electronic device. have. The notification relay application, for example, transmits notification information corresponding to an event (eg, mail reception) generated in another application (eg, email application 1069) of the electronic device 901 to an external electronic device or , or may receive notification information from an external electronic device and provide it to the user of the electronic device 901 . The device management application is, for example, a power source (eg, turn-on or turn on) of an external electronic device that communicates with the electronic device 901 or some components thereof (eg, the display device 1060 or the camera module 1080). -off) or a function (eg, brightness, resolution, or focus of the display device 1060 or the camera module 1080) may be controlled. 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 according to various embodiments disclosed in this document may have various types of devices. The electronic device may include, for example, at least one of a portable communication device (eg, a smart phone), a computer device, a portable multimedia device, a portable medical device, a camera, a wearable device, and a home appliance device. The electronic device according to the embodiment of the present document is not limited to the above-described devices.

본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및/또는 B 중 적어도 하나", "A, B 또는 C" 또는 "A, B 및/또는 C 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", "첫째" 또는 "둘째" 등의 표현들은 해당 구성요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다.It should be understood that the various embodiments of this document and the terms used therein are not intended to limit the technology described in this document to the specific embodiments, and include various modifications, equivalents, and/or substitutions of the embodiments. In connection with the description of the drawings, like reference numerals may be used for like components. The singular expression may include the plural expression unless the context clearly dictates otherwise. In this document, expressions such as “A or B”, “at least one of A and/or B”, “A, B or C” or “at least one of A, B and/or C” refer to all of the items listed together. Possible combinations may be included. Expressions such as “first”, “second”, “first” or “second” can modify the corresponding components regardless of order or importance, and are only used to distinguish one component from another. The components are not limited. When an (eg, first) component is referred to as being “connected (functionally or communicatively)” or “connected” to another (eg, second) component, that component is It may be directly connected to the component or may be connected through another component (eg, a third component).

본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다. As used herein, the term “module” includes a unit composed of 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 one or more functions. For example, the module may be configured as an application-specific integrated circuit (ASIC).

본 문서의 다양한 실시예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)(예: 내장 메모리(936) 또는 외장 메모리(938))에 저장된 명령어를 포함하는 소프트웨어(예: 프로그램(940))로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시예들에 따른 전자 장치(예: 전자 장치(901))를 포함할 수 있다. 상기 명령이 프로세서(예: 프로세서(920))에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.Various embodiments of the present document include instructions stored in a machine-readable storage media (eg, internal memory 936 or external memory 938) that can be read by a machine (eg, a computer). It may be implemented as software (eg, the program 940). The device is a device capable of calling a stored command from a storage medium and operating according to the called command, and may include an electronic device (eg, the electronic device 901 ) according to the disclosed embodiments. When the instruction is executed by a processor (eg, the processor 920), the processor may perform a function corresponding to the instruction by using other components directly or under the control of the processor. Instructions may include code generated or executed by a compiler or interpreter. The device-readable storage medium may be provided in the form of a non-transitory storage medium. Here, 'non-transitory' means that the storage medium does not include a signal and is tangible, but does not distinguish that data is semi-permanently or temporarily stored in the storage medium.

일시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.According to an example, the method according to various embodiments disclosed in this document may be included and provided in a computer program product. Computer program products may be traded between sellers and buyers as commodities. The computer program product may be distributed in the form of a machine-readable storage medium (eg, compact disc read only memory (CD-ROM)) or online through an application store (eg, Play Store™). In the case of online distribution, at least a part of the computer program product may be temporarily stored or temporarily generated in a storage medium such as a memory of a server of a manufacturer, a server of an application store, or a relay server.

다양한 실시예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
Each of the components (eg, a module or a program) according to various embodiments may be composed of a singular or a plurality of entities, and some sub-components of the aforementioned sub-components may be omitted, or other sub-components may be It may be further included in various embodiments. Alternatively or additionally, some components (eg, a module or a program) may be integrated into a single entity to perform the same or similar functions performed by each corresponding component prior to integration. According to various embodiments, operations performed by a module, program, or other component are executed sequentially, parallel, iteratively, or heuristically, or at least some operations are executed in a different order, are omitted, or other operations are added. can be

101, 200, 600, 900 901 : 전자 장치
110 : 버스 120 : 프로세서
130 : 메모리 140 : 입출력 인터페이스
150:통신인터페이스
101, 200, 600, 900 901: electronic device
110: bus 120: processor
130: memory 140: input/output interface
150: communication interface

Claims (20)

전자 장치에 있어서,
프로세서; 및
복수의 스레드들에 포함된 복수의 명령어들을 저장하는 메모리를 포함하고,
상기 프로세서는,
이벤트를 검출하고,
상기 이벤트에 기반하여 상기 복수의 스레드들 중에서 우선적으로 처리해야 할 제1 스레드를 결정하고,
상기 제1 스레드는 제1 명령어 및 제2 명령어를 포함하고, 상기 제2 명령어가 상기 제1 명령어를 처리한 결과를 이용하지 않는 경우, 상기 제1 명령어를 처리하는 동안 상기 제2 명령어를 처리하고,
상기 제2 명령어가 상기 제1 명령어를 처리한 결과를 이용하는 경우, 상기 제1 명령어를 처리하는 동안, 상기 복수의 스레드들 중에서 상기 제1 스레드가 처리된 후 처리될 제2 스레드에 포함된 제3 명령어를 처리하는 전자 장치.

In an electronic device,
processor; and
A memory for storing a plurality of instructions included in a plurality of threads,
The processor is
detect events,
determining a first thread to be processed preferentially from among the plurality of threads based on the event;
The first thread includes a first instruction and a second instruction, and if the second instruction does not use a result of processing the first instruction, it processes the second instruction while processing the first instruction; ,
When the second instruction uses a result of processing the first instruction, a third thread included in a second thread to be processed after the first thread is processed among the plurality of threads while the first instruction is processed An electronic device that processes instructions.

삭제delete 삭제delete 제1 항에 있어서,
상기 프로세서는,
우선 순위에 기반하여 상기 제1 스레드를 처리한 이후에 처리할 스레드 중에서 상기 제1 스레드를 교체할 스레드를 상기 제2 스레드로 결정하는 전자 장치.

The method of claim 1,
The processor is
The electronic device determines, as the second thread, a thread to be replaced with the first thread from among threads to be processed after processing the first thread based on priority.

전자 장치에 있어서,
프로세서; 및
복수의 스레드들에 포함된 복수의 명령어들을 저장하는 메모리를 포함하고,
상기 프로세서는,
이벤트를 검출하고,
상기 이벤트에 기반하여 상기 복수의 스레드들 중에서 우선적으로 처리해야 할 제1 스레드를 결정하고,
상기 이벤트의 상기 검출에 기반하여 멀티 스레드 모드를 우선 처리 모드로 변경하고,
상기 제1 스레드에 포함된 복수의 명령어들을 확인하고,
상기 제1 스레드에 포함된 상기 복수의 명령어들은 제1 명령어 및 제2 명령어를 포함하고, 상기 제1 명령어의 처리 결과를 상기 제2 명령어가 이용하는 지 확인하고,
상기 제1 명령어의 처리 결과를 상기 제2 명령어가 이용할 경우, 상기 제1 명령어가 포함된 사이클과 상기 제2 명령어가 포함된 사이클 사이에 배치된 적어도 하나의 사이클을 아이들 사이클로 검출하고,
상기 검출된 아이들 사이클에 포함된 적어도 하나의 슬롯에 상기 복수의 스레드들 중에서 제2 스레드에 포함된 명령어가 배치되도록 스케쥴을 설정하고,
상기 제1 스레드와 상기 제2 스레드를 상기 설정된 스케쥴에 따라 처리하는 전자 장치.
In an electronic device,
processor; and
A memory for storing a plurality of instructions included in a plurality of threads,
The processor is
detect events,
determining a first thread to be processed preferentially from among the plurality of threads based on the event;
change the multi-threaded mode to the priority processing mode based on the detection of the event;
Check the plurality of instructions included in the first thread,
The plurality of instructions included in the first thread include a first instruction and a second instruction, and check whether the processing result of the first instruction is used by the second instruction,
When the second instruction uses the processing result of the first instruction, at least one cycle disposed between a cycle including the first instruction and a cycle including the second instruction is detected as an idle cycle,
setting a schedule such that an instruction included in a second thread among the plurality of threads is placed in at least one slot included in the detected idle cycle;
An electronic device that processes the first thread and the second thread according to the set schedule.
제5 항에 있어서,
상기 아이들 사이클은 적어도 하나의 슬롯에 NOP(non-operation) 명령어가 배치된 전자 장치.
6. The method of claim 5,
The idle cycle is an electronic device in which a non-operation (NOP) instruction is disposed in at least one slot.
삭제delete 삭제delete 제5 항에 있어서,
상기 프로세서는,
상기 아이들 사이클에 포함된 슬롯이 2개 이상인지 확인하고,
상기 아이들 사이클에 포함된 상기 슬롯이 2개 이상일 경우, 상기 제2 스레드에 포함된 복수의 명령어들을 확인하고,
상기 제2 스레드에 포함된 상기 복수의 명령어들은 제3 명령어 및 제4 명령어를 포함하고, 상기 제3 명령어의 처리 결과를 상기 제4 명령어가 이용하는 지 확인하고,
상기 제3 명령어의 처리 결과를 상기 제4 명령어가 이용할 경우, 상기 제3 명령어 또는 상기 제4 명령어 중 어느 하나를 상기 복수의 스레드들 중에서 제3 스레드에 포함된 명령어로 교체되도록 스케쥴을 설정하는 전자 장치.
6. The method of claim 5,
The processor is
Check whether there are two or more slots included in the idle cycle,
If the number of slots included in the idle cycle is two or more, check a plurality of instructions included in the second thread;
The plurality of instructions included in the second thread include a third instruction and a fourth instruction, and check whether the fourth instruction uses a processing result of the third instruction,
An electronic device that sets a schedule so that, when the fourth instruction uses the processing result of the third instruction, any one of the third instruction or the fourth instruction is replaced with an instruction included in a third thread from among the plurality of threads Device.
제9 항에 있어서,
상기 프로세서는,
상기 제3 명령어의 처리 결과를 상기 제4 명령어가 이용하지 않는 경우, 상기 제3 명령어를 처리하는 동안 상기 제4 명령어를 처리하는 전자 장치.

10. The method of claim 9,
The processor is
When the fourth command does not use the processing result of the third command, the electronic device processes the fourth command while processing the third command.

제5 항에 있어서,
상기 프로세서는,
우선 순위에 기반하여 상기 제1 스레드를 교체할 스레드를 상기 제2 스레드로 결정하는 전자 장치.

6. The method of claim 5,
The processor is
An electronic device that determines a thread to replace the first thread as the second thread based on the priority.

삭제delete 전자 장치의 동작 방법에 있어서,
이벤트를 검출하는 동작;
상기 이벤트에 기반하여 복수의 스레드들 중에서 우선적으로 처리해야 할 제1 스레드를 결정하는 동작;
상기 이벤트의 상기 검출에 기반하여 멀티 스레드 모드를 우선 처리 모드로 변경하는 동작;
상기 제1 스레드에 포함된 복수의 명령어들을 확인하는 동작;
상기 제1 스레드에 포함된 상기 복수의 명령어들은 제1 명령어 및 제2 명령어를 포함하고, 상기 제1 명령어의 처리 결과를 상기 제2 명령어가 이용하는지 확인하는 동작;
상기 제1 명령어의 처리 결과를 상기 제2 명령어가 이용할 경우, 상기 제1 명령어가 포함된 사이클과 상기 제2 명령어가 포함된 사이클 사이에 배치된 적어도 하나의 사이클을 아이들 사이클로 검출하는 동작;
상기 검출된 아이들 사이클에 포함된 적어도 하나의 슬롯에 상기 복수의 스레드들 중에서 제2 스레드에 포함된 명령어가 배치되도록 스케쥴을 설정하는 동작; 및
상기 제1 스레드와 상기 제2 스레드를 상기 설정된 스케쥴에 따라 처리하는 동작을 포함하는 방법.

A method of operating an electronic device, comprising:
detecting an event;
determining a first thread to be processed preferentially from among a plurality of threads based on the event;
changing the multi-threaded mode to the priority processing mode based on the detection of the event;
checking a plurality of instructions included in the first thread;
checking whether the plurality of instructions included in the first thread includes a first instruction and a second instruction, and whether the second instruction uses a processing result of the first instruction;
detecting, as an idle cycle, at least one cycle disposed between a cycle including the first command and a cycle including the second command when the second command uses the processing result of the first command;
setting a schedule such that an instruction included in a second thread among the plurality of threads is placed in at least one slot included in the detected idle cycle; and
and processing the first thread and the second thread according to the set schedule.

삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020170124440A 2017-09-26 2017-09-26 Method for processing a plurality of instructions included in a plurality of threads and electronic device thereof KR102423768B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170124440A KR102423768B1 (en) 2017-09-26 2017-09-26 Method for processing a plurality of instructions included in a plurality of threads and electronic device thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170124440A KR102423768B1 (en) 2017-09-26 2017-09-26 Method for processing a plurality of instructions included in a plurality of threads and electronic device thereof

Publications (2)

Publication Number Publication Date
KR20190035347A KR20190035347A (en) 2019-04-03
KR102423768B1 true KR102423768B1 (en) 2022-07-21

Family

ID=66165672

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170124440A KR102423768B1 (en) 2017-09-26 2017-09-26 Method for processing a plurality of instructions included in a plurality of threads and electronic device thereof

Country Status (1)

Country Link
KR (1) KR102423768B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220048081A (en) * 2020-10-12 2022-04-19 삼성전자주식회사 Electronic device for managing journal file and operating method thereof

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150324205A1 (en) 2014-05-12 2015-11-12 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100280460B1 (en) * 1998-04-08 2001-02-01 김영환 Data processing device and its multiple thread processing method
US8424009B2 (en) * 2009-12-04 2013-04-16 Microsoft Corporation Lock resolution for distributed durable instances
KR20150019349A (en) * 2013-08-13 2015-02-25 삼성전자주식회사 Multiple threads execution processor and its operating method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150324205A1 (en) 2014-05-12 2015-11-12 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor

Also Published As

Publication number Publication date
KR20190035347A (en) 2019-04-03

Similar Documents

Publication Publication Date Title
KR102147088B1 (en) Method and apparatus for offering received information to user in a electronic device
US20170116987A1 (en) Electronic device and method for executing function using speech recognition thereof
KR102599383B1 (en) Electronic device for displaying an executable application on a split screen and method for the same
US20190065240A1 (en) Electronic device for controlling multiple-windows and operation method thereof
TWI601093B (en) Performing scheduling operations for graphics hardware
KR102205836B1 (en) Task Scheduling Method and Apparatus
EP3223131A1 (en) Electronic device with fingerprint sensor and control method thereof
KR102256291B1 (en) Method for recognizing a translatable situation and performancing a translatable function and electronic device implementing the same
KR102157858B1 (en) Apparatas and method for reducing a power consumption in an electronic device
KR102109883B1 (en) Content transmission method and apparatus
US20220210264A1 (en) Method and apparatus for executing application
US20200201518A1 (en) Method for starting application and electronic device for implementing same
KR102137686B1 (en) Method for controlling an content integrity and an electronic device
KR102405593B1 (en) Electronic device and method for operating data of the same
KR102372644B1 (en) Operation method of operating system and electronic device supporting the same
KR102423768B1 (en) Method for processing a plurality of instructions included in a plurality of threads and electronic device thereof
KR20210046426A (en) Application optimizing method and electronic device supporting the same
US20180004380A1 (en) Screen display method and electronic device supporting the same
KR20200040554A (en) Electronic device, external electronic device and method for controlling the external electronic device using the electronic device
EP3819763B1 (en) Electronic device and operating method thereof
KR20210123889A (en) Electronic device and method for task scheduling using the same
KR102115263B1 (en) Electronic Device And Method For Processing User Input Of The Same
KR102666329B1 (en) Method and electronic device for executing application
CN116055443B (en) Method for identifying social scene, electronic equipment and computer readable storage medium
TWI791699B (en) Electronic device and method for processing instruction using the same

Legal Events

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