KR20190045001A - 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치 - Google Patents

처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치 Download PDF

Info

Publication number
KR20190045001A
KR20190045001A KR1020170137733A KR20170137733A KR20190045001A KR 20190045001 A KR20190045001 A KR 20190045001A KR 1020170137733 A KR1020170137733 A KR 1020170137733A KR 20170137733 A KR20170137733 A KR 20170137733A KR 20190045001 A KR20190045001 A KR 20190045001A
Authority
KR
South Korea
Prior art keywords
processing
delayed
designated
subtask
processor
Prior art date
Application number
KR1020170137733A
Other languages
English (en)
Other versions
KR102408961B1 (ko
Inventor
김명종
최훈
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170137733A priority Critical patent/KR102408961B1/ko
Publication of KR20190045001A publication Critical patent/KR20190045001A/ko
Application granted granted Critical
Publication of KR102408961B1 publication Critical patent/KR102408961B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명의 다양한 실시예에 따라, 전자 장치에 있어서, 태스크에 포함된 서브 태스크를 처리할 수 있는 하나 이상의 처리 회로들; 및 상기 하나 이상의 처리 회로들 중 적어도 일부 처리 회로를 이용하여 상기 태스크를 처리할 수 있는 프로세서를 포함하고, 상기 프로세서는, 하나 이상의 지정된 서브 태스크들을 포함하는 지정된 태스크를 처리하고, 상기 하나 이상의 지정된 서브 태스크들이 처리되고 있는 상태를 확인하고, 상기 상태에 적어도 기반하여, 상기 하나 이상의 지정된 서브 태스크들 중 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하고, 상기 적어도 일부 처리 회로를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하고, 상기 프로세서를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하고, 상기 적어도 일부 처리 회로를 이용하여 처리된 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크에 대응하는 제 1 처리 결과 및, 상기 프로세서를 이용하여 처리된 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크에 대응하는 제 2 처리 결과 중 지정된 조건을 만족하는 하나의 처리 결과를 상기 처리가 지연되고 있는 적어도 하나의 서브 태스크에 대응하는 처리 결과로 적용하도록 설정된 전자 장치를 포함할 수 있다.
다른 실시예가 가능하다.

Description

처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치 {METHOD FOR PROCESSING A DELAYED TASK AND ELECTRONIC DEVICE IMPLEMENTING THE SAME}
본 발명의 다양한 실시 예는 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치 에 관한 것이다.
기술이 고도화됨에 따라, 전자 장치는 복잡한 작업을 처리하는 것이 요구된다. 뿐만 아니라, 전자 장치는 작업 처리 성능이 뛰어나야 하며 소모 전류도 최적화되는 것이 요구된다.
복잡한 작업을 처리하기 위해, 전자 장치는 하나의 작업을 처리하기 위해 하나의 작업을 복수개의 서브 작업 단위로 처리하며, 각각의 서브 작업들은 적어도 하나의 컴퓨팅 자원에 의해 수행된다.
그러나, 각각의 서브 작업들이 적어도 하나의 컴퓨팅 자원에 의해 수행되면, 전자 장치가 실시간으로 자원 상황을 파악하는데 한계가 있고 전자 장치의 성능상의 이유로 각 서브 작업에 적합한 컴퓨팅 자원을 할당하지 못하는 문제점이 있다. 이로 인해, 각각의 서브 작업들로 이루어진 하나의 작업의 처리 속도는 지연되는 등의 연쇄적인 문제가 발생한다.
본 발명의 다양한 실시예에 따라, 전자 장치에 있어서, 태스크에 포함된 서브 태스크를 처리할 수 있는 하나 이상의 처리 회로들; 및 상기 하나 이상의 처리 회로들 중 적어도 일부 처리 회로를 이용하여 상기 태스크를 처리할 수 있는 프로세서를 포함하고, 상기 프로세서는, 하나 이상의 지정된 서브 태스크들을 포함하는 지정된 태스크를 처리하고, 상기 하나 이상의 지정된 서브 태스크들이 처리되고 있는 상태를 확인하고, 상기 상태에 적어도 기반하여, 상기 하나 이상의 지정된 서브 태스크들 중 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하고, 상기 적어도 일부 처리 회로를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하고, 상기 프로세서를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하고, 상기 적어도 일부 처리 회로를 이용하여 처리된 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크에 대응하는 제 1 처리 결과 및, 상기 프로세서를 이용하여 처리된 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크에 대응하는 제 2 처리 결과 중 지정된 조건을 만족하는 하나의 처리 결과를 상기 처리가 지연되고 있는 적어도 하나의 서브 태스크에 대응하는 처리 결과로 적용하도록 설정된 전자 장치를 포함할 수 있다.
다양한 실시예에 따른 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치 는, 실시간으로 발생하는 작업 성능 지연 현상을 해결하여 작업의 성능을 정상화 할 수 있다.
도 1은 다양한 실시 예에 따른, 네트워크 환경 내의 전자 장치의 블럭도이다.
도 2는 다양한 실시 예에 따른 태스크와 서브 태스크를 나타낸 예시도이다.
도 3은 다양한 실시 예에 따른 동작의 흐름을 나타낸 도면이다.
도 4는 다양한 실시 예에 따른 동작의 흐름을 나타낸 도면이다.
도 5a 및 도 5b는 워스트 노드를 감지하는 예를 나타낸 도면이다.
도 6은 타겟 별 노드를 수행하는 시간을 나타낸 도면이다.
도 7은 다양한 실시 예에 따른 후보 타겟을 선택하는 동작의 흐름을 나타낸 도면이다.
도 1은, 다양한 실시예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블럭도이다. 도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제 1 네트워크(198)(예: 근거리 무선 통신)를 통하여 전자 장치(102)와 통신하거나, 또는 제 2 네트워크(199)(예: 원거리 무선 통신)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 및 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 표시 장치(160) 또는 카메라 모듈(180))가 생략되거나 다른 구성 요소가 추가될 수 있다. 어떤 실시예에서는, 예를 들면, 표시 장치(160)(예: 디스플레이)에 임베디드된 센서 모듈(176)(예: 지문 센서, 홍채 센서, 또는 조도 센서)의 경우와 같이, 일부의 구성요소들이 통합되어 구현될 수 있다.
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 구동하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)을 제어할 수 있고, 다양한 데이터 처리 및 연산을 수행할 수 있다. 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 로드하여 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서), 및 이와는 독립적으로 운영되고, 추가적으로 또는 대체적으로, 메인 프로세서(121)보다 저전력을 사용하거나, 또는 지정된 기능에 특화된 보조 프로세서(123)(예: 그래픽 처리 장치, 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 여기서, 보조 프로세서(123)는 메인 프로세서(121)와 별개로 또는 임베디드되어 운영될 수 있다.
이런 경우, 보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 수행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 표시 장치(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부 구성 요소로서 구현될 수 있다. 메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서모듈(176))에 의해 사용되는 다양한 데이터, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 저장할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 저장되는 소프트웨어로서, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 장치(150)는, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신하기 위한 장치로서, 예를 들면, 마이크, 마우스, 또는 키보드를 포함할 수 있다.
음향 출력 장치(155)는 음향 신호를 전자 장치(101)의 외부로 출력하기 위한 장치로서, 예를 들면, 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용되는 스피커와 전화 수신 전용으로 사용되는 리시버를 포함할 수 있다. 일실시예에 따르면, 리시버는 스피커와 일체 또는 별도로 형성될 수 있다.
표시 장치(160)는 전자 장치(101)의 사용자에게 정보를 시각적으로 제공하기 위한 장치로서, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일실시예에 따르면, 표시 장치(160)는 터치 회로(touch circuitry) 또는 터치에 대한 압력의 세기를 측정할 수 있는 압력 센서를 포함할 수 있다.
오디오 모듈(170)은 소리와 전기 신호를 쌍방향으로 변환시킬 수 있다. 일실시예에 따르면, 오디오 모듈(170)은, 입력 장치(150)를 통해 소리를 획득하거나, 음향 출력 장치(155), 또는 전자 장치(101)와 유선 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102)(예: 스피커 또는 헤드폰))를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 내부의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 외부 전자 장치(예: 전자 장치(102))와 유선 또는 무선으로 연결할 수 있는 지정된 프로토콜을 지원할 수 있다. 일실시예에 따르면, 인터페이스(177)는 HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102))를 물리적으로 연결시킬 수 있는 커넥터, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈, 이미지 센서, 이미지 시그널 프로세서, 또는 플래시를 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리하기 위한 모듈로서, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구성될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성 요소에 전력을 공급하기 위한 장치로서, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108))간의 유선 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되는, 유선 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함하고, 그 중 해당하는 통신 모듈을 이용하여 제 1 네트워크(198)(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제 2 네트워크(199)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 상술한 여러 종류의 통신 모듈(190)은 하나의 칩으로 구현되거나 또는 각각 별도의 칩으로 구현될 수 있다.
일실시예에 따르면, 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 사용자 정보를 이용하여 통신 네트워크 내에서 전자 장치(101)를 구별 및 인증할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부로 송신하거나 외부로부터 수신하기 위한 하나 이상의 안테나들을 포함할 수 있다. 일시예에 따르면, 통신 모듈(190)(예: 무선 통신 모듈(192))은 통신 방식에 적합한 안테나를 통하여 신호를 외부 전자 장치로 송신하거나, 외부 전자 장치로부터 수신할 수 있다.
상기 구성요소들 중 일부 구성요소들은 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input/output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되어 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
일실시예에 따르면, 명령 또는 데이터는 제 2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 외부 전자 장치에서 실행될 수 있다. 일실시예에 따르면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 외부 전자 장치에게 요청할 수 있다. 상기 요청을 수신한 외부 전자 장치는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치 (예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치 중 적어도 하나를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및/또는 B 중 적어도 하나", "A, B 또는 C" 또는 "A, B 및/또는 C 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", "첫째" 또는 "둘째" 등의 표현들은 해당 구성요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 명령어를 포함하는 소프트웨어(예: 프로그램(140))로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시예들에 따른 전자 장치(예: 전자 장치(101))를 포함할 수 있다. 상기 명령이 프로세서(예: 프로세서(120))에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
일시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
이하, 도 2 내지 도 7에서 본 발명에 대해 상세히 설명한다.
도 2는 다양한 실시 예에 따른 태스크와 서브 태스크를 나타낸 예시도이다. 태스크는 처리할 전체 작업을 의미하며, 전체 작업의 일부에 해당하는 복수개의 서브 태스크들을 포함할 수 있다. 본 발명의 상세한 설명에서, 태스크는 그래프(graph)로 설명할 수 있고, 서브 태스크들은 노드(node)들로 설명할 수 있다. 이하, 상세한 설명에서 그래프와 노드로 설명하도록 한다.
도 2를 참조하면, 그래프(200)는 노드들(210 내지 218)을 포함할 수 있다. 노드들(210 내지 218)은 전체 작업을 이루고 있는 각각의 역할들을 수행할 수 있다. 각 노드들마다 수행하는 작업들은 상이할 수 있다. 도 2를 참조하면, 도 2에 도시된 그래프(200)는 영상 또는 이미지를 편집하는 것과 관련된 그래프로 가정한다. 노드 0(210)은 추출(extract)과 관련된 작업을 수행할 수 있다. 노드 1(211), 노드 2(212) 및 노드 3(213)은 크기(scale)와 관련된 작업을 수행할 수 있다. 노드 4(214)는 잘라내기(crop, 크롭)와 관련된 작업을 수행할 수 있다. 노드 5(215) 및 노드 6(216)은 노이즈필터(noisefilter)와 관련된 작업을 수행할 수 있다. 노드 7(217)은 가장자리를 강조(edge enhance)와 관련된 작업을 수행할 수 있다. 노드 8(218)은 결합(combine)과 관련된 작업을 수행할 수 있다.
그래프(200)는 입력단과 출력단을 포함할 수 있으며, 그래프(200)의 입력단과 출력단은 전체 작업의 최초 입력단과 최종 출력단을 의미할 수 있다. 노드들도 각각 입력단과 출력단을 포함할 수 있으며, 노드들은 적어도 하나 이상의 입력단과 적어도 하나 이상의 출력단을 포함할 수 있다. 노드들의 입력단과 출력단은 그래프 관점에서 중간 입력단과 중간 출력단일 수 있다.
도 2를 참조하면, 노드 0(210)의 입력단(251)은 그래프(200)의 최초 입력단일 수 있으며, 노드 8(218)의 출력단(252)은 그래프(200)의 최종 입력단일 수 있다. 노드 0(210)의 출력단(210a, 210b, 210c)은 3개일 수 있으며, 노드 0(210)의 각각의 출력단(210a, 210b, 210c)은 노드 1(211), 노드 2(212) 및 노드 3(213)의 각각의 입력단일 수 있다. 노드 5(215), 노드 6(216) 및 노드 7(217)의 각각의 출력은 노드 8(218)의 입력들로 연결될 수 있다. 노드 0(210)의 출력이 노드 1(211)의 입력과 연결되듯이, 두 노드들 간에는 순서 또는 인과관계 등이 존재할 수 있다.
각 노드들은 전자 장치(예: 전자 장치(101))의 처리 회로들에 의해서 처리될 수 있으며, 처리 회로들은 타겟(target)으로 설명할 수 있다. 타겟들은 전자 장치(예: 전자 장치(101))의 프로세서(120)의 일부를 포함할 수 있다. 일 실시 예로 타겟은 CPU(central processing unit), Advanced SIMD(NEON or “MPE” Media Processing Engine), GPU(graphics processing unit), DSP(digital signal processor) 및 Vision Acceleration hardware 등을 포함할 수 있다. 다른 실시 예로, 카메라에 이미지 시그널 프로세서(Image signal processor(ISP))를 포함하고 있는 경우, 타겟은 카메라에 포함된 이미지 시그널 프로세서를 포함할 수 있다.
도 3 및 도 4는 다양한 실시 예에 따른 동작의 흐름을 나타낸 도면이다.
도 3을 참조하면, 동작 301에서 전자 장치(예: 전자 장치(101))의 프로세서(120)는 그래프에 포함된 노드들을 처리할 수 있는 타겟들이 그래프에 포함된 노드들을 처리하도록 제어할 수 있다. 전자 장치(예: 전자 장치(101))의 프로세서(120)는 타겟들이 처리하고 있는 노드들의 상태를 확인할 수 있다.
동작 302에서 전자 장치(예: 전자 장치(101))의 프로세서(120)는, 처리가 지연되고 있는 노드를 판단할 수 있다. 처리가 지연되는 노드는 워스트 노드를 포함할 수 있다.
동작 303에서 전자 장치(예: 전자 장치(101))의 프로세서(120)는 워스트 노드를 처리할 후보 타겟을 선택할 수 있다.
동작 304에서 전자 장치(예: 전자 장치(101))의 프로세서(120)는 워스트 노드를 우선 처리한 타겟의 처리 결과를 해당 워스트 노드의 결과로 적용할 수 있다. 도 3은 본 발명의 동작을 전반적으로 나타낸 도면이며, 상세한 설명은 도 4에서 진행하도록 한다.
도 4를 참조하면, 본 발명의 다양한 실시 예에 따라 태스크 성능 지연 탐지 및 정상화를 위해 필요한 적어도 하나의 소프트웨어 모듈 간의 통신을 나타낼 수 있다. 본 발명의 다양한 실시 예에 따른 소프트웨어 모듈은, 마스터 모듈(Master)(401), 리소스 매니저 모듈(Resource Manager)(402), 그래프 실행 모듈(Graph Execution Module)(403), 워스트 노드 감지 모듈(Worst Node Detector)(404), 후보 타겟 준비 모듈(Candidate Target Preparer)(405), 노드 수행 가속 모듈(Node Performance Accelerator)(406)을 포함할 수 있다. 전자 장치(예: 전자 장치(101))의 프로세서(120)는 적어도 하나의 소프트웨어 모듈의 일부 혹은 전체를 포함할 수 있다.
마스터 모듈(Master)(401)은 스케쥴러(Scheduler)를 포함할 수도 있고, 스케쥴러로부터 데이터를 수신할 수 있다. 데이터는 그래프를 구성하는 각 노드들을 수행할 타겟을 결정하기 위한 스케쥴 테이블을 포함할 수 있다.
리소스 매니저 모듈(Resource Manager)(402)은 각 노드들을 수행할 타겟에게 필요한 자원을 할당할 수 있다. 자원은 타겟이 노드를 수행할 때 필요한 자원을 포함할 수 있다. 또는, 타겟이 노드를 수행할 때 접근할 수 있는 자원을 포함할 수 있다. 예를 들어, 특정 노드를 수행하는 타겟이 GPU인 경우, 상기 타겟에 할당되는 자원은 GPU가 접근할 수 있는 메모리를 포함할 수 있다.
그래프 실행 모듈(Graph Execution Module)(403)은 그래프를 실행시키는 모듈을 포함할 수 있다.
워스트 노드 감지 모듈(Worst Node Detector)(404)은 그래프 실행 모듈(403)로부터 전달된 그래프 수행 시간 정보를 분석하여 하나 이상의 워스트 노드(Worst node)를 감지할 수 있다. 본 발명의 다양한 실시 예에 따른, 워스트 노드는 그래프를 이루는 노드들 중에서 처리가 지연되고 있는 적어도 하나의 노드를 포함할 수 있다. 그래프 수행 시간 정보는 그래프 N회 수행에 대한 그래프 전제 수행 시간 및 노드 별 수행 시간 정보를 포함할 수 있다. 그래프 수행 시간 정보는 그래프 N회 수행 종료될 때마다 그래프 실행 모듈(403)로부터 전달될 수 있다.
후보 타겟 준비 모듈(Candidate Target Preparer)(405)은 워스트 노드에 추가로 투입할 제 2 타겟을 선택하고, 제 2 타겟의 동작에 필요한 자원을 제 2 타겟에게 할당하도록 리소스 매니저 모듈(402)에게 요청할 수 있다. 일 실시 예로, 후보 타겟 준비 모듈(405)은 리소스 매니저(402)에게 워스트 노드를 수행할 수 있는 타겟 리스트 및 우선순위를 요청하여 전달받을 수 있다. 후보 타겟 준비 모듈(405)은 타겟 리스트를 참조하여 우선 순위가 가장 높은 타겟을 제 2 타겟으로서 선택하고, 해당 타겟을 수행하기 위한 자원을 리소스 매니저(402)에 요청하여 해당 타겟에게 자원을 할당할 수 있다. 다른 실시 예로, 후보 타겟 준비 모듈(405)은 제 2 타겟을 선택하는 것에 있어서, 리소스 매니저(402)로부터 전달 받은 우선 순위 정보 외에 다른 요소도 고려할 수 있다.
노드 수행 가속 모듈(Node Performance Accelerator)(406)은 워스트 노드를 수행할 시점에 그래프 실행 모듈(403)과 통신하여, 워스트 노드를 수행하고 있던 기존의 타겟과 제 2 타겟에게 해당 워스트 노드를 각각 수행(병렬 수행)시키고 먼저 종료되는 타겟의 결과물을 워스트 노드의 출력으로 반영할 수 있다.
도 4을 참조하면, 동작 (411)에서, 마스터 모듈(401)은 스케쥴러로부터 스케쥴 테이블을 수신할 수 있다. 동작 (412)에서 마스터 모듈(401)은 리소스 매니저 모듈(402)로 각각의 노드를 수행할 타겟에세 필요한 자원을 할당할 수 있도록 요청할 수 있다. 동작 (413)에서, 리소스 매니저 모듈(402)는 마스터 모듈(401)에세 상기 요청에 대한 답변을 전송할 수 있다. 동작 (414)에서, 마스터 모듈(401)은 그래프 실행 모듈(403)로 그래프를 실행시키도록 요청할 수 있고, 동작 (415)에서, 그래프 실행 모듈(403)은 그래프를 실행할 수 있다. 동작 (416)에서, 그래프 실행 모듈(403)은 그래프 수행이 종료됨을 마스터 모듈(401)에게 알릴 수 있다. 동작 (417)에서 마스터 모듈(401)은 그래프 실행 모듈(403)과 통신하여 그래프 수행 동작을 N번 반복할 수 있다.
동작 (418)에서, 마스터 모듈(401)은 그래프 수행 시간 정보를 워스트 노드 감지 모듈(404)로 전송할 수 있다. 동작 (419)에서, 워스트 노드 감지 모듈(404)은 전달된 그래프 수행 시간 정보를 분석하여 하나 이상의 워스트 노드를 감지하고, 감지된 워스트 노드에 관한 정보를 노드 수행 가속 모듈(406)로 전달할 수 있다. 동작 (420)에서, 워스트 노드 감지 모듈(404)은 감지된 워스트 노드에 관한 정보를 후보 타겟 준비 모듈(405)로 전달할 수 있다.
동작 (421)에서, 후보 타겟 준비 모듈(405)은 워스트 노드에 추가로 투입할 제 2 타겟을 선택하고, 제 2 타겟의 동작에 필요한 자원을 제 2 타겟에게 할당하도록 리소스 매니저 모듈(402)에게 요청할 수 있다. 동작 (422)에서, 리소스 매니저 모듈(402)은 할당된 자원 정보를 후보 타겟 준비 모듈(405)로 전달할 수 있다. 동작 (423)에서, 후보 타겟 준비 모듈(405)은 전달받은 할당된 자원 정보를 노드 수행 가속 모듈(406)로 전달할 수 있다.
동작 (424)에서, 노드 수행 가속 모듈(404)은 제 2 타겟에게 해당 워스트 노드를 수행시키기 위해, 스케쥴 테이블에 제 2 타겟을 추가하길 그래프 실행 모듈(403)에게 요청할 수 있다(set flags). 동작 (425)에서, 이를 수신한 그래프 실행 모듈(403)은 마스터 모듈(401)에게 대기 신호를 전송할 수 있다. 동작 (426)에서, 마스터 모듈(401)은 그래프 실행 모듈(403)로 그래프를 실행시키도록 요청할 수 있고, 동작 (427)에서, 그래프 실행 모듈(403)은 그래프를 실행할 수 있다. 동작 (428)에서, 그래프 실행 모듈(403)은 그래프 실행 후, 워스트 노드가 수행되는 시점에 워스트 노드의 수행이 시작됨을 노드 수행 가속 모듈(406)로 알릴 수 있다. 이를 수신한 노드 수행 가속 모듈(406)은 제 2 타겟과 기존의 타겟 각각에 해당 워스트 노드를 수행하도록 할 수 있다. 동작 (429)에서, 노드 수행 가속 모듈(406)은 워스트 노드를 가장 먼저 처리한 타겟에 대해, 타겟의 처리가 종료되었음을 그래프 실행 모듈(403)에게 알리고, 또한 가장 먼저 처리한 타겟의 처리 결과를 해당 워스트 노드의 처리 결과로 반영하도록 그래프 실행 모듈(403)에게 명령할 수 있다.
동작 (430)에서, 그래프 실행 모듈(403)은 그래프 수행이 종료됨을 노드 수행 가속 모듈(406)로 알릴 수 있다. 동작 (431)에서, 그래프 실행 모듈(403)은 그래프 수행이 종료됨을 마스터 모듈(401)에게 알릴 수 있다. 동작 (432)에서 마스터 모듈(401)은 그래프 실행 모듈(403)과 통신하여 그래프 수행 동작을 N번 반복할 수 있다. 동작 (433)에서, 노드 수행 가속 모듈(406)은 그래프 실행 모듈(403)에세 제 2 타겟이 더 이상 해당 워스트 노드를 수행하지 않을 것을 알릴 수 있다(reset flags).
동작 (434)에서, 마스터 모듈(401)은 그래프 수행 시간 정보를 워스트 노드 감지 모듈(404)로 전송할 수 있다. 동작 (435)에서, 워스트 노드 감지 모듈(404)은 전달된 그래프 수행 시간 정보를 분석하여 워스트 노드가 감지되지 않음을 그래프 실행 모듈(403)에게 알릴 수 있다. 동작 (436)에서, 이를 수신한 그래프 실행 모듈(403)은 마스터 모듈(401)에게 대기 신호를 전송할 수 있다.
도 5a 및 도 5b는 워스트 노드(worst node)를 감지하는 예를 나타낸 도면이다.
워스트 노드 감지 모듈은 그래프 실행 모듈로부터 전달된 그래프 수행 시간 정보를 분석하여 하나 이상의 워스트 노드를 감지할 수 있다. 본 발명의 다양한 실시 예에 따른, 워스트 노드는 그래프를 이루는 노드들 중에서 처리가 지연되고 있는 적어도 하나의 노드를 포함할 수 있다. 그래프 수행 시간 정보는 그래프 N회 수행에 대한 그래프 전제 수행 시간 및 노드 별 수행 시간 정보를 포함할 수 있다.
워스트 노드 감지 모듈은 N(예: 5)회 수행하여 획득한 그래프 수행 시간 정보에서 그래프 수행 시간을 기준으로 하위 그래프 수행 시간을 가지는 텀과 상위 그래프 수행 시간을 가지는 텀의 수행 시간 격차가 기준 값을 넘는지 확인할 수 있다. 워스트 노드 감지 모듈은 상위 텀과 하위 텀의 그래프 수행 시간 격차가 기준 값을 넘는다고 판단하면, 워스트 노드가 포함되어 있다고 판단할 수 있다. 하위 텀은 그래프 수행 시간이 오래 걸린 텀을 의미할 수 있다. 일 실시 예로, 하위 텀은 그래프 수행 시간 순을 기준으로 하위 20%에 대응하는 텀을 포함할 수 있다. 상위 텀은 그래프 수행 시간 순을 기준으로 상위 80%에 대응하는 텀을 포함할 수 있다. 도 5a를 참조하면, 하위 텀은 소요 시간이 7ms인 2번째로 수행된 텀을 포함할 수 있다. 상위 텀은 소요 시간이 4ms인 1번째, 3번째 및 5번째 텀을 포함할 수 있다. 워스트 노드 감지 모듈은 기준 값이 2ms라고 가정하면, 상위 텀과 하위 텀의 각각 수행 시간의 차이는 3ms이므로 워스트 노드가 포함되어 있다고 판단할 수 있다.
본 발명의 다양한 실시 예에 따라, 워스트 노드 감지 모듈은 하위 텀인 2번째 수행된 텀과 상위 텀인 1번째 수행된 텀 각각의 노드의 수행 시간을 비교하여 가장 차이가 큰 노드를 워스트 노드로 판단할 수 있다. 하기 도 5a를 참조하면, 워스트 노드 감지 모듈은 워스트 노드가 노드 0이라고 판단할 수 있다.
본 발명의 다양한 실시 예에 따라, 워스트 노드 감지 모듈은 하위 20%에 대응하는 텀인 2번째 수행된 텀에서 노드 별 수행 시간이 노드 별로 기 설정된 제한 시간을 초과하는 노드를 워스트 노드로 판단할 수 있다. 하기 도 5a를 참조하면, 워스트 노드 감지 모듈은 워스트 노드가 노드 0이라고 판단할 수 있다. 워스트 노드 감지 모듈은 하위 20%에 대응하는 텀이 복수개인 경우, 노드 별로 기 설정된 제한 시간을 초과하는 노드의 횟수가 가장 많은 노드를 워스트 노드로 판단할 수 있다.
도 6은 타겟 별 노드를 수행하는 시간을 나타낸 도면이다.
후보 타겟 준비 모듈(Candidate Target Preparer)은 워스트 노드에 추가로 투입할 제 2 타겟을 선택하고, 제 2 타겟의 동작에 필요한 자원을 제 2 타겟에게 할당하도록 리소스 매니저 모듈에게 요청할 수 있다. 일 실시 예로, 후보 타겟 준비 모듈은 리소스 매니저에게 워스트 노드를 수행할 수 있는 타겟 리스트 및 타겟 들의 우선 순위에 관한 정보를 요청하여 전달받을 수 있다. 후보 타겟 준비 모듈은 타겟 리스트를 참조하여 우선 순위가 가장 높은 타겟을 제 2 타겟으로서 선택하고, 해당 타겟을 수행하기 위한 자원을 리소스 매니저에 요청하여 해당 타겟에게 자원을 할당할 수 있다. 한 예로, 후보 타겟 준비 모듈은 리소스 매니저로부터 타겟 A, 타겟 B, 타겟 C 및 타겟 D를 포함하는 타겟 리스트 및 각각의 타겟들의 우선 순위를 확인할 수 있다. 타겟 들의 우선 순위는 노드 별로 지정될 수 있다. 워스트 노드로 확인된 노드 0를 수행할 수 있는 타겟들의 우선 순위는 타겟 D가 타겟 B 보다 높을 수 있다. 후보 타겟 준비 모듈은 우선 순위를 참조하여 타겟 D를 노드 0을 수행할 수 있는 후보 타겟으로 선택할 수 있다.
다른 실시 예로, 후보 타겟 준비 모듈은 제 2 타겟을 선택하는 것에 있어서, 리소스 매니저로부터 전달 받은 우선 순위 정보 외에 다른 요소도 고려할 수 있다. 도 6를 참조하면, 도 6는 타겟 별로 노드를 수행하는 시간을 나타내는 도면이다. 후보 타겟 준비 모듈은, 다른 요소로서, 타겟 별로 노드를 수행하는 시간을 참조하여 후보 타겟을 선택할 수 있다. 후보 타겟 준비 모듈은 워스트 노드로 판단된 노드 0이 수행되는 시간 동안 유휴 상태인 타겟을 확인하고, 후보 타겟 준비 모듈은, 유휴 상태인 타겟 B를 후보 타겟으로 선택할 수 있다.
본 발명의 다양한 실시 예에 따라, 후보 타겟 준비 모듈은 반복적으로 워스트 노드를 발생시키는 타겟을 블랙리스트에 추가하고, 블랙리스트를 참조하여 후보 타겟을 선택할 수 있다. 이는 도 7에서 상세히 설명하도록 한다.
도 7은 다양한 실시 예에 따른 후보 타겟을 선택하는 동작의 흐름을 나타낸 도면이다. 도 7을 참조하면, 후보 타겟 준비 모듈은 그래프 수행 시간 정보, 워스트 노드에 관한 정보 및 후보 타겟 우선 순위에 관한 정보를 수신할 수 있다. 후보 타겟 준비 모듈은 마스터 모듈로부터 그래프 수행 시간 정보를 수신할 수 있다. 그래프 수행 시간 정보는 그래프 전체 수행 시간 및/또는 노드 별 수행 시간을 포함할 수 있다. 그래프 수행 시간 정보는 도 4의 동작 418에서 전달될 수 있다. 후보 타겟 준비 모듈은 워스트 노드 감지 모듈로부터 감지된 워스트 노드에 관한 정보를 수신할 수 있다. 워스트 노드에 관한 정보는 도 4의 동작 420에서 전달될 수 있다. 후보 타겟 준비 모듈은 리소스 매니저로부터 워스트 노드를 수행할 수 있는 타겟 리스트 및 타겟 들의 우선 순위에 관한 정보를 요청하여 전달받을 수 있다.
다양한 실시 예에 따라, 도 7에서는 후보 타겟 준비 모듈은 이전에 수행된 텀들 동안, 워스트 노드를 감지해서 해당 워스트 노드에 투입될 적어도 하나의 후보 타겟 선택한 적이 있다고 가정한다. 동작 (701)을 참조하면, 후보 타겟 준비 모듈은 이전 텀(N-1)에서 후보 타겟으로 수행된 워스트 노드가, 이번 텀(N)에서도 워스트 노드 인지 판단할 수 있다.
동작 (701)에서의 판단 결과, 이전 텀에서 감지된 워스트 노드가 이번 텀에서도 워스트 노드라고 판단한 경우, 동작 (702)로 진행할 수 있다. 동작 (702)를 참조하면 후보 타겟 준비 모듈은 이전 텀에서 워스트 노드를 수행한 타겟을, 해당 워스트 노드의 블랙리스트에 블랙리스트 타겟으로서 추가할 수 있다. 블랙리스트 타겟은 해당 노드의 처리 지연을 해결하기 위해 투입되었으나 해결하지 못한 타겟을 포함할 수 있다. 동작 (702)에서 추가 후, 동작 (703)으로 진행할 수 있다.
동작 (703)에서, 후보 타겟 준비 모듈은 타겟을 선택할 때 고려할 순위를 나타내는 값인 K를 1로 설정할 수 있다. K를 1로 설정하는 것은, 1 순위의 후보 타겟을 후보 타겟으로 고려한다는 것을 포함할 수 있다. 동작 (703)에서 설정 후, 동작 (704)로 진행할 수 있다.
동작 (704)에서, 후보 타겟 준비 모듈은 워스트 노드가 수행될 동안 1순위 후보 타겟이 유휴 상태인지를 판단할 수 있다. 후보 타겟 준비 모듈은 마스터 모듈로부터 수신한 그래프 수행 시간 정보를 참조하여 판단할 수 있다.
동작 (704)에서의 판단 결과 제 1 순위 후보 타겟이 유휴 상태가 아니라고 판단한 경우 동작 (708)로 진행할 수 있다.
동작 (708)에서 후보 타겟 준비 모듈은 순위를 나타내는 값인 K에 1 추가할 수 있다. K에 1을 추가 한다는 것은, 다음 순위의 후보 타겟을 후보 타겟으로 고려한다는 것을 포함할 수 있다. 예를 들어, 제 2 순위 후보 타겟을 후보 타겟으로 고려하는 것을 포함할 수 있다.
동작 (709)로 진행하여, 후보 타겟 준비 모듈은 리소스 매니저로부터 수신한 타겟 리스트 및 우선 순위에 관한 정보를 참조하여, 워스트 노드를 수행할 수 있는 제 2 순위 후보 타겟이 존재하는지 판단할 수 있다. 동작 (709)의 판단 결과, 후보 타겟 준비 모듈이 워스트 노드를 수행할 수 있는 제 2 순위 후보 타겟이 존재한다고 판단한 경우 동작 (704)로 진행하여 이후 과정을 반복할 수 있다.
동작 (709)의 판단 결과, 후보 타겟 준비 모듈이 워스트 노드를 수행할 수 있는 제 2 순위 후보 타겟이 존재하지 않는다고 판단한 경우 동작 (710)으로 진행하여 다음 텀에서 워스트 노드를 수행할 후보 타겟을 선정하지 않을 수 있다.
동작 (704)에서 후보 타겟 준비 모듈이 제 1 순위 후보 타겟이 유휴 상태라고 판단한 경우 동작 (705)로 진행할 수 있다.
동작 (705)에서 제 1 순위 후보 타겟이 이전 텀들에서 해당 워스트 노드를 실행할 타겟으로서 선택된 적이 있는지 판단할 수 있다.
동작 (705)에서의 판단 결과, 제 1 순위 후보 타겟이 이전 텀들에서 해당 워스트 노드를 실행할 타겟으로서 선택된 적이 없다고 판단한 경우, 동작 (707)로 진행하여 후보 타겟 준비 모듈은 제 1 순위 후보 타겟을 다음 텀에서 수행될 후보 타겟으로 선택할 수 있다.
동작 (705)에서의 판단 결과, 제 1 순위 후보 타겟이 이전 텀들에서 해당 워스트 노드를 실행할 타겟으로서 선택된 적이 있다고 판단한 경우, 동작 (706)으로 진행할 수 있다. 동작 (706)에서 제 1 순위 후보 타겟이 해당 워스트 노드의 블랙리스트에 블랙리스트 타겟으로서 추가된 횟수가 기준 횟수 이상인지 판단할 수 있다. 동작 (706)에서의 판단 결과, 기준 횟수 이상이 아닌 경우, 동작 (707)로 진행하여 후보 타겟 준비 모듈은 제 1 순위 후보 타겟을 다음 텀에서 수행될 후보 타겟으로 선택할 수 있다. 동작 (706)에서의 판단 결과, 기준 횟수 이상인 경우 동작 (708)로 진행할 수 있다. 동작 (708)에서 후보 타겟 준비 모듈은 순위를 나타내는 값인 K에 1 추가할 수 있다. 동작 (709)로 진행하여, 후보 타겟 준비 모듈은 리소스 매니저로부터 수신한 타겟 리스트 및 우선 순위에 관한 정보를 참조하여, 워스트 노드를 수행할 수 있는 제 2 순위 후보 타겟이 존재하는지 판단할 수 있다. 동작 (709)의 판단 결과, 후보 타겟 준비 모듈이 워스트 노드를 수행할 수 있는 제 2 순위 후보 타겟이 존재한다고 판단한 경우 동작 (704)로 진행하여 이후 과정을 반복할 수 있다.
동작 (709)의 판단 결과, 후보 타겟 준비 모듈이 워스트 노드를 수행할 수 있는 제 2 순위 후보 타겟이 존재하지 않는다고 판단한 경우 동작 (710)으로 진행하여 다음 텀에서 워스트 노드를 수행할 후보 타겟을 선정하지 않을 수 있다.
101: 전자 장치
120: 프로세서
130: 메모리

Claims (20)

  1. 전자 장치에 있어서,
    태스크에 포함된 서브 태스크를 처리할 수 있는 하나 이상의 처리 회로들; 및
    상기 하나 이상의 처리 회로들 중 적어도 일부 처리 회로를 이용하여 상기 태스크를 처리할 수 있는 프로세서를 포함하고,
    상기 프로세서는,
    하나 이상의 지정된 서브 태스크들을 포함하는 지정된 태스크를 처리하고,
    상기 하나 이상의 지정된 서브 태스크들이 처리되고 있는 상태를 확인하고, 상기 상태에 적어도 기반하여, 상기 하나 이상의 지정된 서브 태스크들 중 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하고,
    상기 적어도 일부 처리 회로를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하고,
    상기 프로세서를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하고,
    상기 적어도 일부 처리 회로를 이용하여 처리된 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크에 대응하는 제 1 처리 결과 및, 상기 프로세서를 이용하여 처리된 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크에 대응하는 제 2 처리 결과 중 지정된 조건을 만족하는 하나의 처리 결과를 상기 처리가 지연되고 있는 적어도 하나의 서브 태스크에 대응하는 처리 결과로 적용하도록 설정된 전자 장치.
  2. 제 1 항에 있어서,
    상기 프로세서는,
    상기 지정된 태스크의 처리 시간 또는 상기 하나 이상의 지정된 서브 태스크들의 처리 시간 중 적어도 하나에 기반하여, 상기 하나 이상의 지정된 서브 태스크들 중 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하도록 설정된 전자 장치.
  3. 제 1 항에 있어서,
    상기 프로세서는,
    상기 하나 이상의 지정된 서브 태스크들의 처리 시간이, 서브 태스크 별로 지정된 시간 제한을 초과하는 것에 기반하여, 상기 하나 이상의 지정된 서브 태스크들 중 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하도록 설정된 전자 장치.
  4. 제 1 항에 있어서,
    상기 프로세서는,
    상기 프로세서를 이용해서 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하는 것에 있어서,
    상기 하나 이상의 처리 회로들 중 상기 적어도 일부 처리 회로와는 다른 적어도 일부 처리 회로를 선택하고,
    상기 선택된 적어도 일부 처리 회로를 이용하여 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하도록 설정된 전자 장치.
  5. 제 4 항에 있어서,
    상기 프로세서는,
    지정된 처리 회로의 우선 순위를 기반으로, 상기 다른 적어도 일부 처리 회로를 선택하도록 설정된 전자 장치.
  6. 제 4 항에 있어서,
    상기 프로세서는,
    상기 하나 이상의 처리 회로들 중 유휴 상태인 처리 회로를 상기 다른 적어도 일부 처리 회로로서 선택하도록 설정된 전자 장치.
  7. 제 3 항에 있어서,
    상기 프로세서는,
    상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크가 이전에도 처리가 지연된 적이 있는지 판단하고,
    처리가 지연된 적이 있다고 판단한 경우, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 수행한 처리 회로를 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크의 블랙 리스트 타겟으로서 저장하도록 설정된 전자 장치.
  8. 제 7 항에 있어서,
    상기 프로세서는,
    상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크의 블랙 리스트 타겟으로서 기준 횟수 이하로 저장된 처리 회로를, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하는 처리 회로로 선택하도록 설정된 전자 장치.
  9. 제 1 항에 있어서,
    상기 프로세서는,
    상기 제 1 처리 결과 및 상기 제 2 처리 결과 중 가장 빨리 처리된 결과를 상기 적어도 하나의 서브 태스크에 대응하는 처리 결과로 적용하는 동작을 포함하는 전자 장치.
  10. 하나 이상의 지정된 서브 태스크들을 포함하는 지정된 태스크를 처리하는 동작;
    상기 하나 이상의 지정된 서브 태스크들이 처리되고 있는 상태를 확인하는 동작;
    상기 상태에 적어도 기반하여, 상기 하나 이상의 지정된 서브 태스크들 중 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하는 동작;
    상기 적어도 일부 처리 회로를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하는 동작;
    상기 프로세서를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하고,
    상기 적어도 일부 처리 회로를 이용하여 처리된 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크에 대응하는 제 1 처리 결과 및, 상기 프로세서를 이용하여 처리된 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크에 대응하는 제 2 처리 결과 중 지정된 조건을 만족하는 하나의 처리 결과를 상기 처리가 지연되고 있는 적어도 하나의 서브 태스크에 대응하는 처리 결과로 적용하는 동작을 포함하는 방법.
  11. 제 10 항에 있어서,
    상기 하나 이상의 지정된 서브 태스크들 중 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하는 동작은,
    상기 지정된 태스크의 처리 시간 또는 상기 하나 이상의 지정된 서브 태스크들의 처리 시간 중 적어도 하나에 기반하여, 상기 하나 이상의 지정된 서브 태스크들 중 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하는 동작을 포함하는 방법.
  12. 제 10 항에 있어서,
    상기 하나 이상의 지정된 서브 태스크들 중 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하는 동작은,
    상기 하나 이상의 지정된 서브 태스크들의 처리 시간이, 서브 태스크 별로 지정된 시간 제한을 초과하는 것에 기반하여, 상기 하나 이상의 지정된 서브 태스크들 중 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하도록 설정된 전자 장치.
  13. 제 10 항에 있어서,
    상기 프로세서를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하는 동작은,
    상기 하나 이상의 처리 회로들 중 상기 적어도 일부 처리 회로와는 다른 적어도 일부 처리 회로를 선택하고,
    상기 선택된 적어도 일부 처리 회로를 이용하여 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하는 동작을 포함하는 방법.
  14. 제 13 항에 있어서,
    상기 하나 이상의 처리 회로들 중 상기 적어도 일부 처리 회로와는 다른 적어도 일부 처리 회로를 선택하는 동작은,
    지정된 처리 회로의 우선 순위를 기반으로 선택하는 동작을 포함하는 방법.
  15. 제 13 항에 있어서,
    상기 하나 이상의 처리 회로들 중 상기 적어도 일부 처리 회로와는 다른 적어도 일부 처리 회로를 선택하는 동작은,
    상기 하나 이상의 처리 회로들 중 유휴 상태인 처리 회로를 상기 다른 적어도 일부 처리 회로로서 선택하는 동작을 포함하는 방법.
  16. 제 13 항에 있어서,
    상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크가 이전에도 처리가 지연된 적이 있는지 판단하는 동작;
    처리가 지연된 적이 있다고 판단한 경우, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 수행한 처리 회로를 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크의 블랙 리스트 타겟으로서 저장하는 동작; 및
    상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크의 블랙 리스트 타겟으로서 기준 횟수 이하로 저장된 처리 회로를, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하는 처리 회로로 선택하는 동작을 더 포함하는 방법.
  17. 제 10 항에 있어서,
    상기 적용하는 동작은,
    상기 제 1 처리 결과 및 상기 제 2 처리 결과 중 가장 빨리 처리된 결과를 상기 적어도 하나의 서브 태스크에 대응하는 처리 결과로 적용하는 동작을 포함하는 방법.
  18. 하나 이상의 지정된 서브 태스크들을 포함하는 지정된 태스크를 처리하는 동작;
    상기 하나 이상의 지정된 서브 태스크들이 처리되고 있는 상태를 확인하는 동작;
    상기 상태에 적어도 기반하여, 상기 하나 이상의 지정된 서브 태스크들 중 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 확인하는 동작;
    상기 적어도 일부 처리 회로를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하는 동작;
    상기 프로세서를 이용하여, 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하고,
    상기 적어도 일부 처리 회로를 이용하여 처리된 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크에 대응하는 제 1 처리 결과 및, 상기 프로세서를 이용하여 처리된 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크에 대응하는 제 2 처리 결과 중 지정된 조건을 만족하는 하나의 처리 결과를 상기 처리가 지연되고 있는 적어도 하나의 서브 태스크에 대응하는 처리 결과로 적용하는 프로그램이 기록되어 있는 기록 매체.
  19. 제 18 항에 있어서,
    상기 기록 매체는,
    상기 프로세서를 이용해서 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하는 것에 있어서,
    상기 하나 이상의 처리 회로들 중 상기 적어도 일부 처리 회로와는 다른 적어도 일부 처리 회로를 선택하고,
    상기 선택된 적어도 일부 처리 회로를 이용하여 상기 처리가 지연되고 있는 적어도 하나의 지정된 서브 태스크를 처리하는 프로그램이 기록되어 있는 기록 매체.
  20. 제 18 항에 있어서,
    상기 기록 매체는,
    상기 제 1 처리 결과 및 상기 제 2 처리 결과 중 가장 빨리 처리된 결과를 상기 적어도 하나의 서브 태스크에 대응하는 처리 결과로 적용하는 프로그램이 기록되어 있는 기록 매체.
KR1020170137733A 2017-10-23 2017-10-23 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치 KR102408961B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170137733A KR102408961B1 (ko) 2017-10-23 2017-10-23 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170137733A KR102408961B1 (ko) 2017-10-23 2017-10-23 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치

Publications (2)

Publication Number Publication Date
KR20190045001A true KR20190045001A (ko) 2019-05-02
KR102408961B1 KR102408961B1 (ko) 2022-06-13

Family

ID=66581783

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170137733A KR102408961B1 (ko) 2017-10-23 2017-10-23 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치

Country Status (1)

Country Link
KR (1) KR102408961B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060127120A (ko) * 2004-03-16 2006-12-11 가부시키가이샤 소니 컴퓨터 엔터테인먼트 멀티-프로세서 시스템에서 전력손실을 줄이는 방법 및 장치
WO2008144187A1 (en) * 2007-05-15 2008-11-27 The Mathworks, Inc. Parallel programming interface
KR20090000025A (ko) * 2006-12-15 2009-01-07 주식회사 케이티 작업 정보 관리 시스템 및 그 방법
KR20110081987A (ko) * 2008-09-19 2011-07-15 콸콤 인코포레이티드 멀티 스레드 프로세서에서 인터럽트들을 할당하기 위한 방법들 및 시스템들
KR101595967B1 (ko) * 2014-12-16 2016-02-22 충북대학교 산학협력단 데드라인 부여된 작업의 분산 처리 성능 향상을 위한 맵리듀스 스케쥴링 시스템 및 방법
US20170017522A1 (en) * 2015-07-15 2017-01-19 Xerox Corporation Methods and systems for assigning resources to a task

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060127120A (ko) * 2004-03-16 2006-12-11 가부시키가이샤 소니 컴퓨터 엔터테인먼트 멀티-프로세서 시스템에서 전력손실을 줄이는 방법 및 장치
KR20090000025A (ko) * 2006-12-15 2009-01-07 주식회사 케이티 작업 정보 관리 시스템 및 그 방법
WO2008144187A1 (en) * 2007-05-15 2008-11-27 The Mathworks, Inc. Parallel programming interface
KR20110081987A (ko) * 2008-09-19 2011-07-15 콸콤 인코포레이티드 멀티 스레드 프로세서에서 인터럽트들을 할당하기 위한 방법들 및 시스템들
KR101595967B1 (ko) * 2014-12-16 2016-02-22 충북대학교 산학협력단 데드라인 부여된 작업의 분산 처리 성능 향상을 위한 맵리듀스 스케쥴링 시스템 및 방법
US20170017522A1 (en) * 2015-07-15 2017-01-19 Xerox Corporation Methods and systems for assigning resources to a task

Also Published As

Publication number Publication date
KR102408961B1 (ko) 2022-06-13

Similar Documents

Publication Publication Date Title
US10812768B2 (en) Electronic device for recording image by using multiple cameras and operating method thereof
US11675621B2 (en) Method for controlling execution of application, electronic device and storage medium for the same
CN115053198B (zh) 用于控制进程的电子装置及其方法
US20200257564A1 (en) Electronic device, storage medium, and method for process scheduling
KR20210060213A (ko) 어플리케이션을 프리로드하는 방법 및 이를 지원하는 전자 장치
KR102372644B1 (ko) 운영 체제의 운용 방법 및 이를 지원하는 전자 장치
US11645387B2 (en) Electronic device for classifying malicious code and operation method thereof
US11595902B2 (en) Electronic device for filtering packet and method for operating same
US11422852B2 (en) Electronic device capable of increasing task management efficiency of digital signal processor
CN115454576B (zh) 一种虚拟机进程管理方法、系统及电子设备
EP3819763B1 (en) Electronic device and operating method thereof
US20190227705A1 (en) Method for displaying user interface of application and electronic device thereof
KR102408961B1 (ko) 처리가 지연되고 있는 태스크의 처리 방법 및 이를 지원하는 전자 장치
US11113215B2 (en) Electronic device for scheduling a plurality of tasks and operating method thereof
US11768702B2 (en) Electronic device for scheduling based on heterogeneous multi-processor and operating method thereof
US11609596B2 (en) Electronic device for controlling frequency of processor and method of operating the same
KR102423768B1 (ko) 복수의 스레드들에 포함된 복수의 명령어들을 처리하기 위한 방법 및 그 전자 장치
CN110032443B (en) Processor, task processing method and architecture for processing tasks
US20200244750A1 (en) System for processing user data and controlling method thereof
CN112567326B (zh) 用于处理动态图像的方法及其电子设备
KR102669446B1 (ko) 억세스 정보를 제공하는 서버 및 그 작동 방법
KR20210104521A (ko) 상수 값의 비교 결과에 기반하여 리스토어를 수행하는 전자 장치 및 그 제어 방법
KR20210096917A (ko) 외부 전자 장치의 리소스를 인식하는 방법 및 이를 지원하는 전자 장치
CN117331814A (zh) 应用测试方法、装置、终端设备和计算机可读介质
CN111860069A (zh) 图像处理方法和系统

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