KR102563648B1 - Multi-processor system and method of operating the same - Google Patents

Multi-processor system and method of operating the same Download PDF

Info

Publication number
KR102563648B1
KR102563648B1 KR1020180064711A KR20180064711A KR102563648B1 KR 102563648 B1 KR102563648 B1 KR 102563648B1 KR 1020180064711 A KR1020180064711 A KR 1020180064711A KR 20180064711 A KR20180064711 A KR 20180064711A KR 102563648 B1 KR102563648 B1 KR 102563648B1
Authority
KR
South Korea
Prior art keywords
domain
processors
task
domains
processor
Prior art date
Application number
KR1020180064711A
Other languages
Korean (ko)
Other versions
KR20190138365A (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 KR1020180064711A priority Critical patent/KR102563648B1/en
Priority to US16/245,603 priority patent/US10956210B2/en
Priority to CN201910337547.3A priority patent/CN110569122B/en
Publication of KR20190138365A publication Critical patent/KR20190138365A/en
Priority to US17/204,565 priority patent/US12020065B2/en
Application granted granted Critical
Publication of KR102563648B1 publication Critical patent/KR102563648B1/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Power Sources (AREA)

Abstract

멀티 프로세서 시스템은 복수의 프로세서들, 스케줄러 및 선택기를 포함한다. 복수의 프로세서들은 계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인들 중 적어도 하나에 각각 포함된다. 스케줄러는 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업을 수신하고 관리한다. 선택기는 적어도 하나의 작업이 수신된 경우에, 복수의 도메인들의 상태를 기초로 복수의 도메인들 중 하나를 선택하여 적어도 하나의 작업을 할당하고, 복수의 프로세서들 중 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 적어도 하나의 작업을 할당한다.A multiprocessor system includes a plurality of processors, a scheduler and a selector. The plurality of processors are each included in at least one of three or more domains defined according to a hierarchical domain structure. A scheduler receives and manages at least one task performed by a plurality of processors. When at least one task is received, the selector allocates at least one task by selecting one of a plurality of domains based on the states of the plurality of domains, and the state of processors included in the selected domain among the plurality of processors. At least one processor is selected based on and assigned at least one task.

Description

멀티 프로세서 시스템 및 그 구동 방법{MULTI-PROCESSOR SYSTEM AND METHOD OF OPERATING THE SAME}Multi-processor system and its driving method {MULTI-PROCESSOR SYSTEM AND METHOD OF OPERATING THE SAME}

본 발명은 컴퓨팅 시스템에 관한 것으로서, 더욱 상세하게는 복수의 프로세서들을 포함하는 멀티 프로세서 시스템 및 상기 멀티 프로세서 시스템의 구동 방법에 관한 것이다.The present invention relates to a computing system, and more particularly, to a multi-processor system including a plurality of processors and a method for driving the multi-processor system.

컴퓨팅 시스템에서 실행되는 OS(operating system)는 컴퓨팅 시스템 내의 모든 하드웨어 자원들과 소프트웨어 자원들을 관리하는 역할을 한다. OS는 일련의 작업을 완료하기 위해서 작업들 간의 처리 순서 및 작업에 필요한 자원을 관리하며, CPU(central processing unit)와 같은 프로세서는 OS에 발생하는 대부분의 작업을 처리한다. 최근에는 컴퓨팅 시스템의 성능이 향상됨에 따라, 복수 개의 프로세서들 또는 프로세서 코어들을 포함하는 컴퓨팅 시스템이 개발되고 있으며, 복수 개의 프로세서들 또는 프로세서 코어들의 성능과 전력 소모를 최적화시킬 수 있는 다양한 방식들이 연구되고 있다.An operating system (OS) executed in a computing system serves to manage all hardware resources and software resources in the computing system. In order to complete a series of tasks, the OS manages a processing sequence between tasks and resources required for the tasks, and a processor such as a central processing unit (CPU) processes most of the tasks occurring in the OS. Recently, as the performance of a computing system has improved, a computing system including a plurality of processors or processor cores has been developed, and various methods capable of optimizing the performance and power consumption of the plurality of processors or processor cores have been studied. there is.

본 발명의 일 목적은 복수의 프로세서들의 성능 및 전력 소모를 효율적으로 관리할 수 있는 멀티 프로세서 시스템을 제공하는 것이다.One object of the present invention is to provide a multi-processor system capable of efficiently managing performance and power consumption of a plurality of processors.

본 발명의 다른 목적은 복수의 프로세서들의 성능 및 전력 소모를 효율적으로 관리할 수 있는 멀티 프로세서 시스템의 구동 방법을 제공하는 것이다.Another object of the present invention is to provide a method for driving a multi-processor system capable of efficiently managing performance and power consumption of a plurality of processors.

상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 멀티 프로세서 시스템은 복수의 프로세서들, 스케줄러(scheduler) 및 선택기(selector)를 포함한다. 상기 복수의 프로세서들은 계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인(domain)들 중 적어도 하나에 각각 포함된다. 상기 스케줄러는 상기 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업(task)을 수신하고 관리한다. 상기 선택기는 상기 적어도 하나의 작업이 수신된 경우에, 상기 복수의 도메인들의 상태를 기초로 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당하고, 상기 복수의 프로세서들 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당한다.In order to achieve the above object, a multi-processor system according to embodiments of the present invention includes a plurality of processors, a scheduler, and a selector. Each of the plurality of processors is included in at least one of three or more domains defined according to a hierarchical domain structure. The scheduler receives and manages at least one task performed by the plurality of processors. When the at least one task is received, the selector allocates the at least one task by selecting one of the plurality of domains based on the state of the plurality of domains, and the selected one of the plurality of processors. At least one processor is selected based on states of processors included in the domain and assigned to the at least one task.

상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 복수의 프로세서들을 포함하는 멀티 프로세서 시스템의 구동 방법에서는, 계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인(domain)들 중 적어도 하나에 각각 포함되는 상기 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업(task)이 수신된 경우에, 상기 복수의 도메인들의 상태를 기초로 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당한다. 상기 복수의 프로세서들 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당한다.In order to achieve the above other object, in a method for driving a multi-processor system including a plurality of processors according to embodiments of the present invention, at least three or more of a plurality of domains defined according to a hierarchical domain structure. When at least one task performed by the plurality of processors each included in one is received, one of the plurality of domains is selected based on the state of the plurality of domains, and the at least one task is received. assign tasks Among the plurality of processors, at least one processor is selected based on states of processors included in the selected domain, and the at least one task is assigned.

상기와 같은 본 발명의 실시예들에 따른 멀티 프로세서 시스템 및 그 구동 방법에서는, 세 개 이상의 복수의 도메인들을 계층적 도메인 구조에 따라 정의하고, 작업 패킹 알고리즘을 이용하여 수신된 작업을 두 단계에 걸쳐 특정 도메인 및 특정 프로세서에 할당함으로써, 복수의 프로세서들에 의해 수행되는 작업들을 효율적으로 스케줄링 및 관리할 수 있다. 이에 따라, 다양한 특성을 가진 멀티 클러스터 환경에서 성능과 전력 소모를 효율적으로 관리할 수 있으며, 멀티 프로세서 시스템의 성능이 향상되면서 전력 소모가 감소될 수 있다.In the multi-processor system and method of driving the same according to the embodiments of the present invention as described above, a plurality of domains of three or more are defined according to a hierarchical domain structure, and a received task is processed in two stages by using a task packing algorithm. By assigning specific domains and specific processors, tasks performed by a plurality of processors can be efficiently scheduled and managed. Accordingly, performance and power consumption can be efficiently managed in a multi-cluster environment having various characteristics, and power consumption can be reduced while performance of a multi-processor system is improved.

도 1은 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 멀티 프로세서 시스템을 나타내는 블록도이다.
도 3은 도 1의 계층적 도메인 구조를 정의하는 단계의 일 예를 나타내는 순서도이다.
도 4a, 4b, 4c, 5a 및 5b는 도 3의 계층적 도메인 구조를 정의하는 동작을 설명하기 위한 도면들이다.
도 6 및 7은 도 1의 하나의 도메인을 선택하여 적어도 하나의 작업을 할당하는 단계의 예를 나타내는 순서도들이다.
도 8 및 9는 도 1의 적어도 하나의 프로세서를 선택하여 적어도 하나의 작업을 할당하는 단계의 예를 나타내는 순서도들이다.
도 10a, 10b, 11 및 12는 본 발명의 실시예들에 따른 멀티 프로세서 시스템 및 그 구동 방법의 성능을 나타내는 도면들이다.
도 13 및 14는 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법을 나타내는 순서도들이다.
도 15는 본 발명의 실시예들에 따른 멀티 코어 프로세싱 장치를 나타내는 블록도이다.
1 is a flowchart illustrating a method of driving a multi-processor system according to embodiments of the present invention.
2 is a block diagram illustrating a multi-processor system according to embodiments of the present invention.
FIG. 3 is a flowchart illustrating an example of a step of defining the hierarchical domain structure of FIG. 1 .
4a, 4b, 4c, 5a and 5b are diagrams for explaining an operation of defining the hierarchical domain structure of FIG. 3 .
6 and 7 are flowcharts illustrating an example of selecting one domain of FIG. 1 and allocating at least one task.
8 and 9 are flowcharts illustrating examples of selecting at least one processor of FIG. 1 and allocating at least one task.
10A, 10B, 11 and 12 are diagrams illustrating performance of a multi-processor system and a method for driving the same according to embodiments of the present invention.
13 and 14 are flowcharts illustrating a method of driving a multi-processor system according to embodiments of the present invention.
15 is a block diagram illustrating a multi-core processing device according to embodiments of the present invention.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, with reference to the accompanying drawings, preferred embodiments of the present invention will be described in more detail. The same reference numerals are used for the same components in the drawings, and redundant descriptions of the same components are omitted.

도 1은 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법을 나타내는 순서도이다.1 is a flowchart illustrating a method of driving a multi-processor system according to embodiments of the present invention.

도 1을 참조하면, 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법에서, 상기 멀티 프로세서 시스템에 포함되는 복수의 프로세서들의 특성을 나타내는 제1 정보 및 세 개 이상의 복수의 도메인(domain)들에 대한 제2 정보에 기초하여, 상기 복수의 프로세서들 각각이 적어도 하나의 도메인에 포함되도록 계층적(hierarchical) 도메인 구조를 정의할 수 있다(단계 S100). 상기 멀티 프로세서 시스템의 구조 및 상기 계층적 도메인 구조에 대해서는 도 2 등을 참조하여 상세하게 후술하도록 한다.Referring to FIG. 1 , in a method of driving a multi-processor system according to embodiments of the present invention, first information representing characteristics of a plurality of processors included in the multi-processor system and a plurality of domains of three or more Based on the second information for , a hierarchical domain structure may be defined such that each of the plurality of processors is included in at least one domain (step S100). The structure of the multi-processor system and the hierarchical domain structure will be described later in detail with reference to FIG. 2 and the like.

상기 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업(task)을 수신할 수 있다(단계 S200). OS(operating system) 상에서 비디오, 게임, 웹 브라우저 등과 같은 애플리케이션(application) 또는 프로그램이 실행되는 것을 프로세스(process)라고 하며, 이러한 프로세스를 스케줄링(scheduling)할 수 있는 단위로 나눈 것을 작업이라 한다. 다시 말하면, 하나의 프로세스는 일련의 작업들을 포함하며, 상기 일련의 작업들 중 적어도 하나가 단계 S200에서 수신될 수 있다.At least one task performed by the plurality of processors may be received (step S200). An application or program such as a video, game, web browser, etc. executed on an operating system (OS) is called a process, and dividing such a process into schedulable units is called a task. In other words, one process includes a series of tasks, and at least one of the series of tasks may be received in step S200.

상기 적어도 하나의 작업이 수신된 경우에, 상기 복수의 도메인들의 상태를 기초로 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당한다(단계 S300). 다시 말하면, 상기 적어도 하나의 작업을 수행하기 위한 하나의 도메인이 먼저 결정될 수 있다.When the at least one task is received, one of the plurality of domains is selected based on the state of the plurality of domains and the at least one task is allocated (step S300). In other words, one domain for performing the at least one task may be determined first.

상기 적어도 하나의 작업이 수신되고 상기 적어도 하나의 작업을 수행하기 위한 하나의 도메인이 선택된 이후에, 상기 복수의 프로세서들 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당한다(단계 S400). 다시 말하면, 상기 적어도 하나의 작업을 수행하기 위한 상기 적어도 하나의 프로세서가 상기 선택된 도메인 내에서 결정될 수 있다.After the at least one task is received and one domain for performing the at least one task is selected, selecting at least one processor based on the state of processors included in the selected domain among the plurality of processors The at least one task is assigned (step S400). In other words, the at least one processor for performing the at least one task may be determined within the selected domain.

상기 선택된 도메인 및 상기 선택된 적어도 하나의 프로세서에 의해 상기 적어도 하나의 작업을 수행할 수 있다(단계 S500). 상기 계층적 도메인 구조와 단계 S300 및 S400의 두 단계의 작업 할당을 이용하여, 상기 복수의 프로세서들에 의해 수행되는 상기 적어도 하나의 작업을 효율적으로 스케줄링 및 관리할 수 있다. 단계 S300 및 S400의 동작을 작업 할당 알고리즘 또는 작업 패킹(packing) 알고리즘으로 부를 수 있다.The at least one task may be performed by the selected domain and the selected at least one processor (step S500). The at least one task performed by the plurality of processors may be efficiently scheduled and managed using the hierarchical domain structure and the two-step task allocation of steps S300 and S400. The operations of steps S300 and S400 may be referred to as a task allocation algorithm or a task packing algorithm.

실시예에 따라서, 단계 S100은 생략될 수 있다. 이 경우, 상기 계층적 도메인 구조는 미리 정의되어 있을 수 있고, 미리 정의된 상기 계층적 도메인 구조를 로딩하고 이를 이용하여 단계 S200, S300, S400 및 S500이 수행될 수 있다.Depending on the embodiment, step S100 may be omitted. In this case, the hierarchical domain structure may be predefined, and steps S200, S300, S400, and S500 may be performed by loading the predefined hierarchical domain structure and using it.

도 2는 본 발명의 실시예들에 따른 멀티 프로세서 시스템을 나타내는 블록도이다.2 is a block diagram illustrating a multi-processor system according to embodiments of the present invention.

도 2를 참조하면, 멀티 프로세서 시스템(100)은 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN), 스케줄러(scheduler)(120) 및 선택기(selector)(130)를 포함한다. 멀티 프로세서 시스템(100)은 복수의 클러스터들(CLU1, CLU2, ..., CLUM), 도메인 정의기(domain definer)(110) 및 메모리(140)를 더 포함할 수 있다.Referring to FIG. 2, the multi-processor system 100 includes a plurality of processors P1, P2, P3, P4, P5, P6, ..., P(N-1), PN), a scheduler 120 ) and a selector 130. The multi-processor system 100 may further include a plurality of clusters CLU1, CLU2, ..., CLUM, a domain definer 110, and a memory 140.

복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)은 특정 계산들 또는 태스크들과 같은 다양한 기능들을 실행한다. 일 실시예에서, 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 각각은 CPU(central processing unit), 마이크로프로세서 등을 포함할 수 있다. 다른 실시예에서, 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 각각은 GPU(graphic processing unit), ISP(image signal processor), DSP(digital signal processor), 디스플레이 프로세서(display processor), 통신 프로세서(communication processor), 멀티미디어 프로세서(multimedia processor) 등과 같은 임의의 프로세서를 포함할 수 있다.A plurality of processors (P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) execute various functions, such as specific calculations or tasks. In one embodiment, each of the plurality of processors (P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) may include a central processing unit (CPU), a microprocessor, and the like. can In another embodiment, each of the plurality of processors (P1, P2, P3, P4, P5, P6, ..., P (N-1), PN) is a graphic processing unit (GPU), an image signal processor (ISP) , a digital signal processor (DSP), a display processor, a communication processor, a multimedia processor, and the like.

복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 각각은 복수의 클러스터(cluster)들(CLU1, CLU2, ..., CLUM) 중 하나에 포함될 수 있다. 예를 들어, 도 2에서는 N(N은 3 이상의 자연수)개의 프로세서들 및 M(M은 3 이상의 자연수)개의 클러스터들을 도시하였으며, 프로세서들(P1, P2, P3, P4)은 제1 클러스터(CLU1)에 포함되고, 프로세서들(P5, P6)은 제2 클러스터(CLU2)에 포함되며, 프로세서들(P(N-1), PN)은 제M 클러스터(CLUM)에 포함될 수 있다.Each of the plurality of processors (P1, P2, P3, P4, P5, P6, ..., P (N-1), PN) is a plurality of clusters (CLU1, CLU2, ..., CLUM) can be included in either. For example, in FIG. 2 , N (N is a natural number greater than or equal to 3) processors and M (M is a natural number greater than or equal to 3) clusters are shown, and the processors P1, P2, P3, and P4 are a first cluster CLU1. ), the processors P5 and P6 are included in the second cluster CLU2, and the processors P(N−1) and PN are included in the Mth cluster CLUM.

복수의 클러스터들(CLU1, CLU2, ..., CLUM)은 서로 하드웨어적 및 물리적으로 구분되어 있을 수 있고, 하나의 클러스터는 하드웨어적 및 물리적으로 연결되는 하나의 파워 도메인을 형성하여 개별적으로 파워를 제어할 수 있다. 예를 들어, 제1 클러스터(CLU1)는 제1 파워 도메인을 형성하고, 프로세서들(P1, P2, P3, P4)은 상기 제1 파워 도메인에 속할 수 있다. 제2 클러스터(CLU2)는 상기 제1 파워 도메인과 물리적으로 구분되는 제2 파워 도메인을 형성하고, 프로세서들(P5, P6)은 프로세서들(P1, P2, P3, P4)과 물리적으로 구분되도록 상기 제2 파워 도메인에 속할 수 있다. 다시 말하면, 복수의 클러스터들(CLU1, CLU2, ..., CLUM) 또는 상기 파워 도메인들은 프로세서들에 대한 물리적 구분을 나타낼 수 있다.A plurality of clusters (CLU1, CLU2, ..., CLUM) may be hardware- and physically separated from each other, and one cluster forms one power domain that is hardware- and physically-connected to individually power You can control it. For example, the first cluster CLU1 forms a first power domain, and the processors P1, P2, P3, and P4 may belong to the first power domain. The second cluster CLU2 forms a second power domain physically separated from the first power domain, and the processors P5 and P6 are physically separated from the processors P1, P2, P3, and P4. It may belong to the second power domain. In other words, the plurality of clusters (CLU1, CLU2, ..., CLUM) or the power domains may represent a physical division of processors.

일 실시예에서, 하나의 클러스터는 적어도 하나의 프로세서를 포함하며, 이에 따라 복수의 클러스터들(CLU1, CLU2, ..., CLUM)의 개수는 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)의 개수보다 작거나 같을 수 있다(즉, M≤N).In one embodiment, one cluster includes at least one processor, and accordingly, the number of the plurality of clusters (CLU1, CLU2, ..., CLUM) is a plurality of processors (P1, P2, P3, P4, It may be smaller than or equal to the number of P5, P6, ..., P(N-1), PN) (ie, M≤N).

한편, 도시하지는 않았으나, 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 각각은 L1(level 1) 캐시를 포함할 수 있고, 복수의 클러스터들(CLU1, CLU2, ..., CLUM) 각각은 L2(level 2) 캐시를 포함할 수 있다. 이 경우, 멀티 프로세서 시스템(100)은 캐시 일관성 인터페이스(cache coherent interface)(미도시)와 같은 캐시들을 관리하기 위한 구성요소를 더 포함할 수 있다.Meanwhile, although not shown, each of the plurality of processors (P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) may include an L1 (level 1) cache, Each of the plurality of clusters (CLU1, CLU2, ..., CLUM) may include a level 2 (L2) cache. In this case, the multi-processor system 100 may further include a component for managing caches such as a cache coherent interface (not shown).

복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 각각은 계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인들(DM1, DM2, ..., DMK) 중 적어도 하나에 각각 포함된다. 예를 들어, 도 2에서는 K(K는 3 이상의 자연수)개의 도메인들을 도시하였으며, K개의 도메인들은 제2 도메인(DM2)이 제1 도메인(DM1)을 포함하고 제K 도메인(DMK)이 나머지 도메인들(DM1, DM2)을 포함하도록 계층적으로 구성될 수 있다. 또한, 도 2에 굵은 점선으로 도시된 것처럼, 프로세서들(P1, P2, P3, P4)은 제1 도메인(DM1)에 포함되고, 프로세서들(P5, P6)은 제2 도메인(DM2)에 대응하며, 프로세서들(P(N-1), PN)은 제K 도메인(DMK)에 대응하도록 상기 계층적 도메인 구조를 구성 및 정의할 수 있다.Each of the plurality of processors P1, P2, P3, P4, P5, P6, ..., P(N-1), PN includes three or more plurality of domains DM1, defined according to a hierarchical domain structure. DM2, ..., DMK) are each included in at least one. For example, in FIG. 2 , K domains (where K is a natural number equal to or greater than 3) are shown. In the K domains, the second domain DM2 includes the first domain DM1 and the Kth domain DMK includes the remaining domains. It may be hierarchically configured to include DM1 and DM2. Also, as shown by thick dotted lines in FIG. 2 , the processors P1 , P2 , P3 , and P4 are included in the first domain DM1 , and the processors P5 and P6 correspond to the second domain DM2 . And, the processors P(N-1) and PN may configure and define the hierarchical domain structure to correspond to the K-th domain DMK.

복수의 클러스터들(CLU1, CLU2, ..., CLUM) 또는 상기 파워 도메인들과는 다르게, 복수의 도메인들(DM1, DM2, ..., DMK)은 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)에 의해 수행되는 프로세스 및/또는 작업에 적합하도록 프로세서들에 대한 기능적/개념적 구분을 나타낼 수 있다. 다시 말하면, 본 명세서에서 상기 계층적 도메인 구조에 따라 정의되는 복수의 도메인들(DM1, DM2, ..., DMK)은 파워 도메인과는 구별되는 개념이며, 작업 도메인, 프로세서 도메인 등으로 부를 수도 있다.Unlike the plurality of clusters (CLU1, CLU2, ..., CLUM) or the power domains, the plurality of domains (DM1, DM2, ..., DMK) are a plurality of processors (P1, P2, P3, P4 , P5, P6, ..., P(N-1), PN) may represent functional/conceptual divisions for processors to suit the processes and/or tasks performed by them. In other words, in the present specification, the plurality of domains (DM1, DM2, ..., DMK) defined according to the hierarchical domain structure are concepts distinct from power domains, and may be referred to as work domains, processor domains, and the like. .

일 실시예에서, 하나의 도메인은 적어도 하나의 프로세서를 포함하며, 이에 따라 복수의 도메인들(DM1, DM2, ..., DMK)의 개수는 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)의 개수보다 작거나 같을 수 있다(즉, K≤N).In one embodiment, one domain includes at least one processor, and accordingly, the number of the plurality of domains (DM1, DM2, ..., DMK) is a plurality of processors (P1, P2, P3, P4, It may be less than or equal to the number of P5, P6, ..., P(N-1), PN) (ie, K≤N).

실시예에 따라서, 복수의 도메인들(DM1, DM2, ..., DMK)의 개수는 복수의 클러스터들(CLU1, CLU2, ..., CLUM)의 개수와 같을 수도 있고 서로 다를 수도 있다. 복수의 클러스터들(CLU1, CLU2, ..., CLUM) 또는 상기 파워 도메인들의 구성에 대응하도록 상기 계층적 도메인 구조를 정의할 수도 있고, 복수의 클러스터들(CLU1, CLU2, ..., CLUM) 또는 상기 파워 도메인들의 구성과 무관하게 상기 계층적 도메인 구조를 정의할 수도 있다.Depending on the embodiment, the number of the plurality of domains (DM1, DM2, ..., DMK) may be the same as or different from the number of the plurality of clusters (CLU1, CLU2, ..., CLUM). The hierarchical domain structure may be defined to correspond to a configuration of a plurality of clusters (CLU1, CLU2, ..., CLUM) or the power domains, and a plurality of clusters (CLU1, CLU2, ..., CLUM) Alternatively, the hierarchical domain structure may be defined regardless of the configuration of the power domains.

도메인 정의기(110)는 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)의 특성을 나타내는 제1 정보(PINF) 및 복수의 도메인들(DM1, DM2, ..., DMK)에 대한 제2 정보(DINF)에 기초하여, 복수의 도메인들(DM1, DM2, ..., DMK)을 계층적으로 구성하고 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 각각이 적어도 하나의 도메인에 포함되도록 상기 계층적 도메인 구조를 정의할 수 있다. 예를 들어, 제1 정보(PINF) 및 제2 정보(DINF)는 하드웨어 특성 정보가 포함되어 있는 디바이스 트리(device tree)의 형태로 제공될 수 있다. 도메인 정의기(110)는 상기 계층적 도메인 구조를 나타내는 제3 정보(HDINF)를 발생할 수 있다.The domain definer 110 includes first information (PINF) indicating characteristics of a plurality of processors (P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) and a plurality of Based on the second information (DINF) for the domains (DM1, DM2, ..., DMK), a plurality of domains (DM1, DM2, ..., DMK) are hierarchically configured and a plurality of processors The hierarchical domain structure may be defined so that each of (P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) is included in at least one domain. For example, the first information PINF and the second information DINF may be provided in the form of a device tree including hardware characteristic information. The domain definer 110 may generate third information HDINF representing the hierarchical domain structure.

일 실시예에서, 도메인 정의기(110)는 제1 사용자 설정 신호(USS1)를 수신할 수 있다. 제1 사용자 설정 신호(USS1)가 수신된 경우에, 도메인 정의기(110)는 제1 사용자 설정 신호(USS1)에 기초하여 미리 정의된 상기 계층적 도메인 구조를 변경할 수 있다. 다시 말하면, 상기 계층적 도메인 구조는 사용자 설정 신호에 기초하여 도메인 정의기(110)에 의해 변경 가능할 수 있다.In one embodiment, the domain definer 110 may receive the first user setting signal USS1. When the first user set signal USS1 is received, the domain definer 110 may change the predefined hierarchical domain structure based on the first user set signal USS1. In other words, the hierarchical domain structure may be changeable by the domain definer 110 based on a user setting signal.

스케줄러(120)는 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)에 의해 수행되는 적어도 하나의 작업(TKS)을 수신하고 관리한다. 선택기(130)는 적어도 하나의 작업(TKS)이 수신된 경우에, 복수의 도메인들(DM1, DM2, ..., DMK)의 상태를 기초로 복수의 도메인들(DM1, DM2, ..., DMK) 중 하나를 선택하여 적어도 하나의 작업(TKS)을 할당하고, 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 적어도 하나의 작업(TKS)을 할당한다. 스케줄러(120) 및 선택기(130)는 상기 계층적 도메인 구조를 나타내는 제3 정보(HDINF)에 기초하여 적어도 하나의 작업(TKS)을 스케줄링, 관리 및 할당할 수 있다.The scheduler 120 receives and manages at least one task TKS performed by a plurality of processors P1, P2, P3, P4, P5, P6, ..., P(N-1), PN do. When at least one task TKS is received, the selector 130 selects the plurality of domains DM1, DM2, ..., based on the states of the plurality of domains DM1, DM2, ..., DMK. , DMK) to assign at least one task (TKS), and among a plurality of processors (P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) At least one processor is selected based on the state of the processors included in the selected domain and at least one task (TKS) is allocated. The scheduler 120 and the selector 130 may schedule, manage, and allocate at least one task TKS based on the third information HDINF representing the hierarchical domain structure.

복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 중 선택기(130)에 의해 선택된 프로세서는 적어도 하나의 작업(TKS)을 수행할 수 있다.The processor selected by the selector 130 from among the plurality of processors P1, P2, P3, P4, P5, P6, ..., P(N-1), PN performs at least one task TKS. can

일 실시예에서, 선택기(130)는 제2 사용자 설정 신호(USS2)를 수신할 수 있다. 제2 사용자 설정 신호(USS2)가 수신된 경우에, 선택기(130)는 비활성화되어 상술한 두 단계의 작업 할당을 수행하지 않으며, 이 때 스케줄러(120)가 일반적인 절차에 따라 임의의 프로세서를 선택하여 적어도 하나의 작업(TKS)을 할당할 수 있다. 다시 말하면, 선택기(130)는 제2 사용자 설정 신호(USS2)에 기초하여 비활성화 가능할 수 있다.In one embodiment, the selector 130 may receive the second user setting signal USS2. When the second user setting signal USS2 is received, the selector 130 is inactivated and does not perform the above-mentioned two-step task assignment. At this time, the scheduler 120 selects an arbitrary processor according to a general procedure and At least one task (TKS) can be assigned. In other words, the selector 130 may be deactivated based on the second user setting signal USS2.

메모리(140)는 제1 정보(PINF), 제2 정보(DINF) 및 제3 정보(HDINF)를 저장할 수 있다. 예를 들어, 메모리(140)는 DRAM(dynamic random access memory), SDRAM(synchronous DRAM), SRAM(static random access memory) 등과 같은 휘발성 메모리, 및 플래시 메모리(flash memory), PRAM(phase change random access memory), RRAM(resistance random access memory), NFGM(nano floating gate memory), PoRAM(polymer random access memory), MRAM(magnetic random access memory), FRAM(ferroelectric random access memory) 등과 같은 비휘발성 메모리 중 적어도 하나를 포함할 수 있다. 또한, 실시예에 따라서, 메모리(140)는 SSD(solid state drive), eSSD(embedded SSD), MMC(multimedia card), eMMC(embedded MMC), UFS(universal flash storage) 등과 같은 저장 장치의 형태로 구현될 수도 있다.The memory 140 may store first information PINF, second information DINF, and third information HDINF. For example, the memory 140 may include volatile memory such as dynamic random access memory (DRAM), synchronous DRAM (SDRAM), static random access memory (SRAM), flash memory, phase change random access memory (PRAM), and the like. ), resistance random access memory (RRAM), nano floating gate memory (NFGM), polymer random access memory (PoRAM), magnetic random access memory (MRAM), ferroelectric random access memory (FRAM), and the like. can include Also, according to embodiments, the memory 140 may be in the form of a storage device such as a solid state drive (SSD), an embedded SSD (eSSD), a multimedia card (MMC), an embedded MMC (eMMC), or a universal flash storage (UFS). may be implemented.

도 2의 멀티 프로세서 시스템(100)에 의해 도 1에 도시된 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법이 수행될 수 있다. 예를 들어, 도 1의 단계 S100은 도메인 정의기(110)에 의해 수행되고, 단계 S200은 스케줄러(120)에 의해 수행되고, 단계 S300 및 S400은 선택기(130)에 의해 수행되며, 단계 S500은 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 중 적어도 하나에 의해 수행될 수 있다.The method of driving the multi-processor system according to the embodiments of the present invention shown in FIG. 1 may be performed by the multi-processor system 100 of FIG. 2 . For example, step S100 in FIG. 1 is performed by the domain definer 110, step S200 is performed by the scheduler 120, steps S300 and S400 are performed by the selector 130, and step S500 is performed by the selector 130. It may be performed by at least one of a plurality of processors (P1, P2, P3, P4, P5, P6, ..., P(N-1), PN).

일 실시예에서, 멀티 프로세서 시스템(100)은 시스템 온 칩(system on chip, SOC)의 형태로 구현될 수 있다. 이 경우, 도시하지는 않았으나 멀티 프로세서 시스템(100)은 복수의 기능 블록들을 포함할 수 있다.In one embodiment, the multi-processor system 100 may be implemented in the form of a system on chip (SOC). In this case, although not shown, the multi-processor system 100 may include a plurality of functional blocks.

한편, 도시하지는 않았으나, 멀티 프로세서 시스템(100)에 포함되는 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN), 도메인 정의기(110), 스케줄러(120), 선택기(130) 및 메모리(140)는 버스를 통해 신호 및/또는 데이터를 주고 받을 수 있다. 일 실시예에서, 상기 버스는 AMBA(Advanced Microcontroller Bus Architecture), AHB(Advanced High-performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), ASB(Advanced System Bus) 또는 이들의 결합으로 구현될 수 있다.Meanwhile, although not shown, a plurality of processors (P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) included in the multi-processor system 100, a domain definer ( 110), the scheduler 120, the selector 130, and the memory 140 may exchange signals and/or data through a bus. In one embodiment, the bus is an Advanced Microcontroller Bus Architecture (AMBA), an Advanced High-performance Bus (AHB), an Advanced Peripheral Bus (APB), an Advanced eXtensible Interface (AXI), an Advanced System Bus (ASB), or a combination thereof. can be implemented

도 3은 도 1의 계층적 도메인 구조를 정의하는 단계의 일 예를 나타내는 순서도이다.FIG. 3 is a flowchart illustrating an example of a step of defining the hierarchical domain structure of FIG. 1 .

도 1 및 3을 참조하면, 상기 계층적 도메인 구조를 정의하는데 있어서(단계 S100), 상기 복수의 프로세서들 및 상기 복수의 도메인들을 분석(parsing)할 수 있다(단계 S110). 예를 들어, 도 2에 도시된 것처럼, 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)의 특성을 나타내는 제1 정보(PINF) 및 복수의 도메인들(DM1, DM2, ..., DMK)에 대한 제2 정보(DINF)에 기초하여 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 및 복수의 도메인들(DM1, DM2, ..., DMK)을 분석할 수 있다.1 and 3, in defining the hierarchical domain structure (step S100), the plurality of processors and the plurality of domains may be analyzed (step S110). For example, as shown in FIG. 2 , first information PINF indicating characteristics of the plurality of processors P1, P2, P3, P4, P5, P6, ..., P(N-1), PN ) and the plurality of processors P1, P2, P3, P4, P5, P6, ..., P based on the second information DINF for the plurality of domains DM1, DM2, ..., DMK. (N-1), PN) and a plurality of domains (DM1, DM2, ..., DMK) can be analyzed.

상기 복수의 도메인들을 계층적으로 배치할 수 있고(단계 S120), 상기 복수의 프로세서들 각각을 상기 복수의 도메인들 중 적어도 하나에 포함되도록 배치할 수 있다(단계 S130). 예를 들어, 도 2에 도시된 것처럼, 복수의 도메인들(DM1, DM2, ..., DMK) 및 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)을 포함하는 상기 계층적 도메인 구조를 구성 및 정의할 수 있다. 예를 들어, 복수의 도메인들(DM1, DM2, ..., DMK)은 첫 번째 도메인(DM1)부터 마지막 도메인(DMK)까지 순차적으로 배치될 수 있고, 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)은 첫 번째 프로세서(P1)부터 마지막 프로세서(PN)까지 순차적으로 배치될 수 있다.The plurality of domains may be hierarchically arranged (step S120), and each of the plurality of processors may be arranged to be included in at least one of the plurality of domains (step S130). For example, as shown in FIG. 2, a plurality of domains DM1, DM2, ..., DMK and a plurality of processors P1, P2, P3, P4, P5, P6, ..., P( N-1), the hierarchical domain structure including PN) may be configured and defined. For example, the plurality of domains (DM1, DM2, ..., DMK) may be sequentially arranged from the first domain (DM1) to the last domain (DMK), and the plurality of processors (P1, P2, P3) , P4, P5, P6, ..., P(N-1), PN) may be sequentially arranged from the first processor P1 to the last processor PN.

일 실시예에서, 도 3의 단계 S110, S120 및 S130은 도 2의 도메인 정의기(110)에 의해 수행될 수 있다.In one embodiment, steps S110, S120 and S130 of FIG. 3 may be performed by domain definer 110 of FIG. 2 .

도 4a, 4b, 4c, 5a 및 5b는 도 3의 계층적 도메인 구조를 정의하는 동작을 설명하기 위한 도면들이다.4a, 4b, 4c, 5a and 5b are diagrams for explaining an operation of defining the hierarchical domain structure of FIG. 3 .

도 4a를 참조하면, 8개의 프로세서들(P11, P12, P13, P14, P15, P16, P17, P18)이 3개의 클러스터들(CLU11, CLU12, CLU13)로 구분되어 있다. 제1 클러스터(CLU11)는 제1 파워 도메인을 형성하고, 제1 내지 제4 프로세서들(P11, P12, P13, P14)을 포함할 수 있다. 제2 클러스터(CLU12)는 제2 파워 도메인을 형성하고, 제5 및 제6 프로세서들(P15, P16)을 포함할 수 있다. 제3 클러스터(CLU13)는 제3 파워 도메인을 형성하고, 제7 및 제8 프로세서들(P17, P18)을 포함할 수 있다.Referring to FIG. 4A , eight processors P11, P12, P13, P14, P15, P16, P17, and P18 are divided into three clusters CLU11, CLU12, and CLU13. The first cluster CLU11 forms a first power domain and may include the first to fourth processors P11, P12, P13, and P14. The second cluster CLU12 forms a second power domain and may include fifth and sixth processors P15 and P16. The third cluster CLU13 forms a third power domain and may include seventh and eighth processors P17 and P18.

도 4b를 참조하면, 도 4a의 8개의 프로세서들(P11, P12, P13, P14, P15, P16, P17, P18)을 본 발명의 실시예들에 따라 계층적으로 구성된 3개의 도메인들(DM11, DM12, DM13)에 배치시킨 일 예를 도시하고 있다. 제1 도메인(DM11)은 제2 도메인(DM12)에 포함되고, 제2 도메인(DM12)은 제3 도메인(DM13)에 포함될 수 있다. 제1 내지 제4 프로세서들(P11, P12, P13, P14)은 제1 도메인(DM11)에 포함되고, 제1 내지 제6 프로세서들(P11, P12, P13, P14, P15, P16)은 제2 도메인(DM12)에 포함되며, 제1 내지 제8 프로세서들(P11, P12, P13, P14, P15, P16, P17, P18)은 제3 도메인(DM13)에 포함될 수 있다.Referring to FIG. 4B, the eight processors P11, P12, P13, P14, P15, P16, P17, and P18 of FIG. 4A are hierarchically configured into three domains DM11, An example of arrangement in DM12 and DM13) is shown. The first domain DM11 may be included in the second domain DM12, and the second domain DM12 may be included in the third domain DM13. The first to fourth processors P11, P12, P13, and P14 are included in the first domain DM11, and the first to sixth processors P11, P12, P13, P14, P15, and P16 are included in the second domain DM11. It is included in the domain DM12, and the first to eighth processors P11, P12, P13, P14, P15, P16, P17, and P18 may be included in the third domain DM13.

도 4b의 예에서, 도메인들(DM11, DM12, DM13)의 구성은 클러스터들(CLU11, CLU12, CLU13) 및 파워 도메인들의 구성에 대응할 수 있다. 예를 들어, 제1 도메인(DM11)에만 포함되는 프로세서들(P11, P12, P13, P14)은 제1 클러스터(CLU11)에 포함되고, 제2 도메인(DM12)에만 포함되는 프로세서들(P15, P16)은 제2 클러스터(CLU12)에 포함되며, 제3 도메인(DM13)에만 포함되는 프로세서들(P17, P18)은 제3 클러스터(CLU13)에 포함될 수 있다. 또한, 제1 도메인(DM11)은 상기 제1 파워 도메인의 전부에 대응하고, 제2 도메인(DM12)은 상기 제1 및 제2 파워 도메인들의 전부에 대응하며, 제3 도메인(DM13)은 상기 제1, 제2 및 제3 파워 도메인들의 전부에 대응할 수 있다. 다시 말하면, 제1 도메인(DM11)은 하나의 파워 도메인에 대응하고, 제2 및 제3 도메인들(DM12, DM13)은 각각 서로 다른 두 개 이상의 파워 도메인들에 대응할 수 있다.In the example of FIG. 4B , the configuration of domains DM11 , DM12 , and DM13 may correspond to the configuration of clusters CLU11 , CLU12 , and CLU13 and power domains. For example, the processors P11, P12, P13, and P14 included only in the first domain DM11 are included in the first cluster CLU11, and the processors P15 and P16 included only in the second domain DM12. ) may be included in the second cluster CLU12, and processors P17 and P18 included only in the third domain DM13 may be included in the third cluster CLU13. In addition, the first domain DM11 corresponds to all of the first power domains, the second domain DM12 corresponds to all of the first and second power domains, and the third domain DM13 corresponds to the first power domain. It may correspond to all of the first, second and third power domains. In other words, the first domain DM11 may correspond to one power domain, and the second and third domains DM12 and DM13 may correspond to two or more different power domains, respectively.

도 4c를 참조하면, 도 4a의 8개의 프로세서들(P11, P12, P13, P14, P15, P16, P17, P18)을 본 발명의 실시예들에 따라 계층적으로 구성된 3개의 도메인들(DM11', DM12', DM13')에 배치시킨 다른 예를 도시하고 있다. 제1 도메인(DM11')은 제2 도메인(DM12')에 포함되고, 제2 도메인(DM12')은 제3 도메인(DM13')에 포함될 수 있다. 제1, 제2, 제5 및 제6 프로세서들(P11, P12, P15, P16)은 제1 도메인(DM11')에 포함되고, 제1, 제2, 제3, 제5, 제6 및 제7 프로세서들(P11, P12, P13, P15, P16, P17)은 제2 도메인(DM12')에 포함되며, 제1 내지 제8 프로세서들(P11, P12, P13, P14, P15, P16, P17, P18)은 제3 도메인(DM13')에 포함될 수 있다.Referring to FIG. 4C, the eight processors P11, P12, P13, P14, P15, P16, P17, and P18 of FIG. 4A are hierarchically configured into three domains DM11' according to embodiments of the present invention. , DM12', DM13') shows another example. The first domain DM11' may be included in the second domain DM12', and the second domain DM12' may be included in the third domain DM13'. The first, second, fifth, and sixth processors P11, P12, P15, and P16 are included in the first domain DM11', and the first, second, third, fifth, sixth, and sixth processors are included in the first domain DM11'. The seven processors P11, P12, P13, P15, P16, and P17 are included in the second domain DM12', and the first to eighth processors P11, P12, P13, P14, P15, P16, P17, P18) may be included in the third domain DM13'.

도 4c의 예에서, 도메인들(DM11', DM12', DM13')의 구성은 클러스터들(CLU11, CLU12, CLU13) 및 파워 도메인들의 구성에 대응하지 않을 수 있다. 예를 들어, 제1 클러스터(CLU11)에 포함되는 프로세서들(P11, P12, P13, P14)은 제1 내지 제3 도메인들(DM11', DM12', DM13')에 포함되고, 제2 클러스터(CLU12)에 포함되는 프로세서들(P15, P16)은 제1 도메인(DM11')에만 포함되며, 제3 클러스터(CLU13)에 포함되는 프로세서들(P17, P18)은 제2 및 제3 도메인들(DM12', DM13')에만 포함될 수 있다. 또한, 제1 도메인(DM11')은 상기 제1 및 제2 파워 도메인들의 일부에 대응하고, 제2 도메인(DM12')은 상기 제1, 제2 및 제3 파워 도메인들의 일부에 대응하며, 제3 도메인(DM13')은 상기 제1, 제2 및 제3 파워 도메인들의 전부에 대응할 수 있다.In the example of FIG. 4C , the configuration of the domains DM11', DM12', and DM13' may not correspond to the configuration of the clusters CLU11, CLU12, and CLU13 and the power domains. For example, the processors P11, P12, P13, and P14 included in the first cluster CLU11 are included in the first to third domains DM11', DM12', and DM13', and the second cluster ( The processors P15 and P16 included in CLU12 are included only in the first domain DM11', and the processors P17 and P18 included in the third cluster CLU13 are included in the second and third domains DM12. ', DM13'). In addition, the first domain DM11' corresponds to parts of the first and second power domains, the second domain DM12' corresponds to parts of the first, second, and third power domains. The third domain DM13' may correspond to all of the first, second, and third power domains.

도 5a를 참조하면, 8개의 프로세서들(P21, P22, P23, P24, P25, P26, P27, P28)이 4개의 클러스터들(CLU21, CLU22, CLU23, CLU24)로 구분되어 있다. 제1 클러스터(CLU21)는 제1 파워 도메인을 형성하고, 제1 및 제2 프로세서들(P21, P22)을 포함할 수 있다. 제2 클러스터(CLU22)는 제2 파워 도메인을 형성하고, 제3 및 제4 프로세서들(P23, P24)을 포함할 수 있다. 제3 클러스터(CLU23)는 제3 파워 도메인을 형성하고, 제5 및 제6 프로세서들(P25, P26)을 포함할 수 있다. 제4 클러스터(CLU24)는 제4 파워 도메인을 형성하고, 제7 및 제8 프로세서들(P27, P28)을 포함할 수 있다.Referring to FIG. 5A , eight processors (P21, P22, P23, P24, P25, P26, P27, and P28) are divided into four clusters (CLU21, CLU22, CLU23, and CLU24). The first cluster CLU21 forms a first power domain and may include first and second processors P21 and P22. The second cluster CLU22 forms a second power domain and may include third and fourth processors P23 and P24. The third cluster CLU23 forms a third power domain and may include fifth and sixth processors P25 and P26. The fourth cluster CLU24 forms a fourth power domain and may include seventh and eighth processors P27 and P28.

도 5b를 참조하면, 도 5a의 8개의 프로세서들(P21, P22, P23, P24, P25, P26, P27, P28)을 본 발명의 실시예들에 따라 계층적으로 구성된 3개의 도메인들(DM21, DM22, DM23)에 배치시킨 일 예를 도시하고 있다. 제1 도메인(DM21)은 제2 도메인(DM22)에 포함되고, 제2 도메인(DM22)은 제3 도메인(DM23)에 포함될 수 있다. 제1 내지 제4 프로세서들(P21, P22, P23, P24)은 제1 도메인(DM21)에 포함되고, 제1 내지 제6 프로세서들(P21, P22, P23, P24, P25, P26)은 제2 도메인(DM22)에 포함되며, 제1 내지 제8 프로세서들(P21, P22, P23, P24, P25, P26, P27, P28)은 제3 도메인(DM23)에 포함될 수 있다.Referring to FIG. 5B, three domains (DM21, An example of arrangement in DM22 and DM23) is shown. The first domain DM21 may be included in the second domain DM22, and the second domain DM22 may be included in the third domain DM23. The first to fourth processors P21, P22, P23, and P24 are included in the first domain DM21, and the first to sixth processors P21, P22, P23, P24, P25, and P26 are included in the second domain DM21. It is included in the domain DM22, and the first to eighth processors P21, P22, P23, P24, P25, P26, P27, and P28 may be included in the third domain DM23.

도 5b의 예에서, 도메인들(DM21, DM22, DM23)의 구성은 클러스터들(CLU21, CLU22, CLU23, CLU24) 및 파워 도메인들의 구성에 부분적으로 대응할 수 있다. 다시 말하면, 제1 도메인(DM21)이 상기 제1 및 제2 파워 도메인들의 전부에 대응하는 것을 제외하면, 도메인들(DM21, DM22, DM23)의 구성은 클러스터들(CLU21, CLU22, CLU23, CLU24) 및 파워 도메인들의 구성에 대응할 수 있다.In the example of FIG. 5B , the configuration of domains DM21 , DM22 , and DM23 may partially correspond to the configuration of clusters CLU21 , CLU22 , CLU23 , and CLU24 and power domains. In other words, except that the first domain DM21 corresponds to all of the first and second power domains, the configuration of the domains DM21, DM22, and DM23 includes clusters CLU21, CLU22, CLU23, and CLU24. and configuration of power domains.

본 발명의 실시예들에 따른 계층적 도메인 구조를 정의하는데 있어서 아래와 같은 기준이 적용될 수 있다. 먼저 복수의 도메인들은 계층적인 구조로 구성되어야 한다. 각 프로세서는 적어도 하나의 도메인에 포함되어야 하고, 각 도메인은 해당 도메인에만 포함되는 적어도 하나의 프로세서가 존재하여야 한다. 각 프로세서는 모든 도메인들에 중복하여 포함될 수 있다. 파워 도메인들의 구성에 대응하거나 대응하지 않도록 도메인들을 정의할 수 있고, 서로 다른 두 개 이상의 파워 도메인들을 하나의 도메인으로 정의할 수도 있다. 이 때, 파워 도메인들을 기준으로 도메인들을 정의하는 것이 전력 소모 관리 측면에서 유리할 수 있다.In defining a hierarchical domain structure according to embodiments of the present invention, the following criteria may be applied. First, a plurality of domains must be configured in a hierarchical structure. Each processor must be included in at least one domain, and each domain must have at least one processor included only in the corresponding domain. Each processor may be included redundantly in all domains. Domains may be defined to correspond to or not correspond to the configuration of power domains, and two or more different power domains may be defined as one domain. In this case, defining domains based on power domains may be advantageous in terms of power consumption management.

도 4b, 4c 및 5b의 예에 기초하여 본 발명의 실시예들에 따른 계층적 도메인 구조를 설명하였으나, 본 발명은 이에 한정되지 않으며, 도 4a 및 5a의 프로세서들 각각은 다양한 방식으로 적어도 하나의 도메인에 배치될 수 있다. 또한, 특정 개수의 프로세서들, 클러스터들(또는 파워 도메인들) 및 도메인들에 기초하여 본 발명의 실시예들에 따른 계층적 도메인 구조를 설명하였으나, 본 발명은 이에 한정되지 않을 수 있다. 도 4a, 4b 및 4c에서는 도메인들의 개수가 클러스터들(또는 파워 도메인들)의 개수와 동일한 경우를 예시하였고, 도 5a 및 5b에서는 도메인들의 개수가 클러스터들(또는 파워 도메인들)의 개수보다 적은 경우를 예시하였으나, 본 발명은 이에 한정되지 않으며, 도메인들의 개수가 클러스터들(또는 파워 도메인들)의 개수보다 많은 경우에도 적용될 수 있다.Although the hierarchical domain structure according to the embodiments of the present invention has been described based on the examples of FIGS. 4B, 4C, and 5B, the present invention is not limited thereto, and each of the processors of FIGS. 4A and 5A uses at least one Can be placed in a domain. In addition, although a hierarchical domain structure according to embodiments of the present invention has been described based on a specific number of processors, clusters (or power domains), and domains, the present invention may not be limited thereto. 4a, 4b, and 4c illustrate cases in which the number of domains is equal to the number of clusters (or power domains), and cases in which the number of domains is less than the number of clusters (or power domains) in FIGS. 5a and 5b. , but the present invention is not limited thereto, and may be applied even when the number of domains is greater than the number of clusters (or power domains).

도 6 및 7은 도 1의 하나의 도메인을 선택하여 적어도 하나의 작업을 할당하는 단계의 예를 나타내는 순서도들이다.6 and 7 are flowcharts illustrating an example of selecting one domain of FIG. 1 and allocating at least one task.

도 1 및 6을 참조하면, 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당하는데 있어서(단계 S300), 먼저 단계 S200에서 하나의 작업인 제1 작업이 수신된 경우에 기초하여 상기 제1 작업을 할당하는 동작을 설명하도록 한다.1 and 6, in assigning the at least one task by selecting one of the plurality of domains (step S300), first, based on a case in which a first task, which is one task, is received in step S200 An operation of allocating the first task will be described.

상기 제1 작업이 수신된 이후에, 먼저 상기 제1 작업이 최초로 수신 또는 발생된 작업인지 판단할 수 있다(단계 S310).After the first task is received, it may first be determined whether the first task is received or generated for the first time (step S310).

상기 제1 작업이 최초로 수신된 작업이 아닌 경우에(단계 S310: 아니오), 즉 상기 제1 작업이 아닌 다른 작업을 수행 또는 처리 중인 현재 도메인이 존재하는 경우에, 상기 현재 도메인의 상태를 확인할 수 있다(단계 S320). 예를 들어, 상기 현재 도메인의 상태는 상기 현재 도메인의 사용량(utilization) 및 부하(load)(예를 들어, 워크로드(workload)) 중 적어도 하나를 포함할 수 있고, 그 밖에 전력 등 다양한 요인/변수들 중 적어도 하나를 포함할 수도 있다.If the first task is not the first received task (step S310: No), that is, if there is a current domain performing or processing a task other than the first task, the state of the current domain may be checked. Yes (step S320). For example, the state of the current domain may include at least one of utilization and load (eg, workload) of the current domain, and other various factors such as power/load. It may include at least one of the variables.

상기 제1 작업이 상기 현재 도메인에서 충분히 처리 가능한 것으로 판단된 경우에(단계 S330: 예), 상기 현재 도메인에 상기 제1 작업을 할당할 수 있다(단계 S340). 상기 제1 작업이 상기 현재 도메인에서 처리 불가능한 것으로 판단된 경우에(단계 S330: 아니오), 상기 복수의 도메인들 중 상기 현재 도메인을 제외한 다른 도메인에 상기 제1 작업을 할당할 수 있다(단계 S350). 다시 말하면, 단계 S330의 판단 결과에 따라 기존 도메인을 유지하거나 새로운 도메인을 선택할 수 있다.If it is determined that the first job can be sufficiently processed in the current domain (step S330: Yes), the first job can be assigned to the current domain (step S340). If it is determined that the first job cannot be processed in the current domain (step S330: No), the first job may be assigned to a domain other than the current domain among the plurality of domains (step S350). . In other words, the existing domain may be maintained or a new domain may be selected according to the determination result of step S330.

일 실시예에서, 단계 S350의 상기 다른 도메인은 상기 현재 도메인을 포함하는 도메인들 중 하나일 수 있고, 특히 상기 현재 도메인을 직접 포함하는 바로 다음 도메인일 수 있다. 예를 들어, 도 2에 도시된 것처럼, 복수의 도메인들(DM1, DM2, ..., DMK) 중 제1 도메인(DM1)이 상기 현재 도메인인 경우에, 제1 도메인(DM1)을 포함하는 도메인들(DM2, ..., DMK) 중 하나가 상기 다른 도메인일 수 있고, 특히 제2 도메인(DM2)이 상기 다른 도메인일 수 있다.In one embodiment, the other domain in step S350 may be one of the domains including the current domain, and in particular, may be the immediately following domain directly including the current domain. For example, as shown in FIG. 2, when the first domain DM1 among the plurality of domains DM1, DM2, ..., DMK is the current domain, One of the domains DM2, ..., DMK may be the other domain, and in particular, the second domain DM2 may be the other domain.

일 실시예에서, 단계 S330에서는 상기 현재 도메인의 상태, 상기 제1 작업의 사용량 및 우선 순위(priority) 중 적어도 하나에 기초하여 상기 제1 작업이 상기 현재 도메인에서 처리 가능한지 판단할 수 있다. 예를 들어, 상기 제1 작업의 사용량은 상기 제1 작업에 의한 프로세서의 사용량 및/또는 상기 제1 작업에 의한 프로세서 자원의 사용량을 나타낼 수 있다.In one embodiment, in step S330, it may be determined whether the first job can be processed in the current domain based on at least one of the state of the current domain, the usage amount and priority of the first job. For example, the amount of use of the first task may indicate the amount of processor resource used by the first task and/or the amount of processor resource used by the first task.

한편, 상기 제1 작업이 최초로 수신된 작업인 경우에(단계 S310: 예), 즉 상기 현재 도메인이 존재하지 않는 경우에, 상기 복수의 도메인들 중 가장 작은 도메인에 상기 제1 작업을 할당할 수 있다(단계 S360). 일반적으로 최초로 수신된 작업의 경우 작업량이 많지 않으므로, 상기 가장 작은 도메인에 할당하더라도 무방할 수 있다. 예를 들어, 도 2에 도시된 것처럼, 복수의 도메인들(DM1, DM2, ..., DMK) 중 가장 작은 제1 도메인(DM1)에 상기 제1 작업을 할당할 수 있다.Meanwhile, when the first task is the first received task (step S310: Yes), that is, when the current domain does not exist, the first task may be assigned to the smallest domain among the plurality of domains. Yes (step S360). In general, since the first received task does not have a large amount of work, it may be allotted to the smallest domain. For example, as shown in FIG. 2 , the first task may be assigned to the smallest first domain DM1 among the plurality of domains DM1, DM2, ..., DMK.

도 1 및 7을 참조하면, 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당하는데 있어서(단계 S300), 먼저 단계 S200에서 하나의 작업인 제1 작업이 수신된 경우에 기초하여 상기 제1 작업을 할당하는 동작을 설명하도록 한다.1 and 7, in assigning the at least one task by selecting one of the plurality of domains (step S300), first, based on a case in which a first task, which is one task, is received in step S200 An operation of allocating the first task will be described.

상기 제1 작업이 수신된 이후에, 상기 복수의 도메인들 모두의 상태를 확인할 수 있고(단계 S325), 상기 복수의 도메인들 중 상기 제1 작업이 처리 가능한 최적의 도메인에 상기 제1 작업을 할당할 수 있다(단계 S245). 상기 복수의 도메인들 중 상기 현재 도메인의 상태만을 확인하는 도 6의 실시예와 다르게, 도 7의 실시예에서는 상기 복수의 도메인들 모두의 상태를 확인할 수 있다.After the first job is received, states of all of the plurality of domains may be checked (step S325), and the first job is allocated to an optimal domain capable of processing the first job among the plurality of domains. It can be done (step S245). Unlike the embodiment of FIG. 6 in which only the state of the current domain among the plurality of domains is checked, in the embodiment of FIG. 7 , the state of all of the plurality of domains can be checked.

일 실시예에서, 단계 S345에서는 상기 복수의 도메인들 모두의 상태, 상기 제1 작업의 사용량 및 우선 순위 중 적어도 하나에 기초하여 상기 제1 작업이 처리 가능한 최적의 도메인을 선택할 수 있다.In an embodiment, in step S345, an optimal domain capable of processing the first job may be selected based on at least one of states of all of the plurality of domains, amount of usage and priority of the first job.

일 실시예에서, 도 6의 단계 S310, S320, S330, S340, S350 및 S360과 도 7의 단계 S325 및 S345는 도 2의 선택기(130)에 의해 수행될 수 있다.In one embodiment, steps S310, S320, S330, S340, S350, and S360 of FIG. 6 and steps S325 and S345 of FIG. 7 may be performed by the selector 130 of FIG. 2 .

도 8 및 9는 도 1의 적어도 하나의 프로세서를 선택하여 적어도 하나의 작업을 할당하는 단계의 예를 나타내는 순서도들이다.8 and 9 are flowcharts illustrating examples of selecting at least one processor of FIG. 1 and allocating at least one task.

도 1 및 8을 참조하면, 상기 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당하는데 있어서(단계 S400), 먼저 단계 S200에서 하나의 작업인 제1 작업이 수신된 경우 및 단계 S300에서 하나의 도메인인 제1 도메인이 선택된 경우에 기초하여 상기 제1 작업을 할당하는 동작을 설명하도록 한다.1 and 8, in selecting the at least one processor and allocating the at least one task (step S400), first, when a first task is received in step S200 and one in step S300. An operation of allocating the first task based on a case in which the first domain, which is the domain of , is selected will be described.

상기 제1 작업이 수신되고 상기 제1 도메인이 선택되어 상기 제1 작업이 할당된 이후에, 상기 복수의 프로세서들 중 상기 제1 도메인에 포함되는 제1 프로세서들의 상태를 확인할 수 있다(단계 S410). 예를 들어, 도 2에 도시된 것처럼, 복수의 도메인들(DM1, DM2, ..., DMK) 중 제1 도메인(DM1)에 상기 제1 작업이 할당된 경우에, 제1 도메인(DM1)에 포함되는 프로세서들(P1, P2, P3, P4)의 상태를 확인할 수 있다. 예를 들어, 상기 제1 프로세서들의 상태는 상기 제1 프로세서들의 사용 여부, 사용량 및 부하 중 적어도 하나를 포함할 수 있고, 그 밖에 다양한 요인/변수들 중 적어도 하나를 포함할 수도 있다.After the first task is received, the first domain is selected, and the first task is allocated, states of first processors included in the first domain among the plurality of processors may be checked (step S410). . For example, as shown in FIG. 2 , when the first task is allocated to a first domain DM1 among a plurality of domains DM1, DM2, ..., DMK, the first domain DM1 The states of the processors P1, P2, P3, and P4 included in may be checked. For example, the state of the first processors may include at least one of whether the first processors are in use, usage, and load, and may include at least one of various other factors/variables.

상기 제1 프로세서들 중 유휴(idle) 상태인 유휴 프로세서가 존재하는 경우에(단계 S420: 예), 상기 유휴 프로세서에 상기 제1 작업을 할당할 수 있다(단계 S430). 상기 유휴 상태는 액티브(active) 상태와 반대되는 개념이며, 슬립(sleep) 상태, 스탠바이(standby) 상태 등으로 부를 수도 있다.If there is an idle processor in an idle state among the first processors (step S420: Yes), the first task may be assigned to the idle processor (step S430). The idle state is a concept opposite to the active state, and may also be referred to as a sleep state, a standby state, and the like.

상기 제1 프로세서들 중 상기 유휴 프로세서가 존재하지 않는 경우에(단계 S420: 아니오), 즉 상기 제1 프로세서들 모두가 상기 유휴 상태가 아닌 상기 액티브 상태인 경우에, 상기 제1 프로세서들의 부하를 확인할 수 있다. 상기 제1 프로세서들 중 가장 적은 부하를 가지는 최소 부하 프로세서가 존재하는 경우에(단계 S440: 예), 상기 최소 부하 프로세서에 상기 제1 작업을 할당할 수 있다(단계 S450).When the idle processor does not exist among the first processors (step S420: No), that is, when all of the first processors are in the active state rather than the idle state, the load of the first processors is checked. can If there is a least loaded processor having the least load among the first processors (step S440: Yes), the first task may be assigned to the least loaded processor (step S450).

상기 유휴 프로세서가 존재하지 않는 경우(단계 S420: 아니오), 및 상기 최소 부하 프로세서가 존재하지 않는 경우에(단계 S440: 아니오), 즉 상기 제1 프로세서들 모두가 동일한 부하를 가지는 경우에, 상기 제1 프로세서들 중 상기 제1 도메인에 가장 먼저 정의된 프로세서에 상기 제1 작업을 할당할 수 있다(단계 S460). 예를 들어, 도 2에 도시된 것처럼, 첫 번째 프로세서(P1)부터 순차적으로 정의 또는 배치된 경우에, 첫 번째 프로세서(P1)에 상기 제1 작업을 할당할 수 있다.When the idle processor does not exist (step S420: No), and when the minimum load processor does not exist (step S440: No), that is, when all of the first processors have the same load, the first processor Among the processors, the first task may be assigned to a processor defined first in the first domain (step S460). For example, as shown in FIG. 2 , when the first processor P1 is sequentially defined or arranged, the first task may be assigned to the first processor P1.

도 1 및 9를 참조하면, 상기 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당하는데 있어서(단계 S400), 도 8의 실시예를 보다 구체화하여 상기 제1 프로세서들 모두를 순차적으로 판단하기 위한 실시예를 도시하였다. 이하 도 8과 중복되는 설명은 생략하도록 한다.1 and 9, in selecting the at least one processor and allocating the at least one task (step S400), the embodiment of FIG. 8 is more specifically determined to sequentially determine all of the first processors. An example for this is shown. Hereinafter, a description overlapping with that of FIG. 8 will be omitted.

상기 제1 도메인에 포함되는 상기 제1 프로세서들 중 X(X는 자연수) 번째로 정의된 프로세서를 현재 프로세서로 설정할 수 있다(단계 S415). 동작 초기에 X=1이며, 첫 번째로 정의된 프로세서부터 판단을 시작할 수 있다.Among the first processors included in the first domain, an X (X is a natural number)-th defined processor may be set as a current processor (step S415). At the beginning of the operation, X = 1, and the decision can be started from the first defined processor.

상기 현재 프로세서가 상기 유휴 상태인 경우(단계 S425: 예), 또는 상기 현재 프로세서가 가장 적은 부하를 가지는 경우에(단계 S445: 예), 상기 현재 프로세서에 상기 제1 작업을 할당할 수 있다(단계 S435). 도 9의 단계 S425 및 S445는 각각 도 8의 단계 S420 및 S440과 유사할 수 있다.When the current processor is in the idle state (step S425: Yes) or when the current processor has the least load (step S445: Yes), the first task may be assigned to the current processor (step S445: Yes). S435). Steps S425 and S445 of FIG. 9 may be similar to steps S420 and S440 of FIG. 8 , respectively.

상기 현재 프로세서가 상기 유휴 상태가 아닌 경우(단계 S425: 아니오), 및 상기 현재 프로세서가 가장 적은 부하를 가지지 않는 경우에(단계 S445: 아니오), 상기 제1 프로세서들 모두에 대한 판단이 완료되었는지 확인할 수 있다.When the current processor is not in the idle state (step S425: No), and when the current processor does not have the least load (step S445: No), it is checked whether the determination of all of the first processors is completed. can

구체적으로, 상기 제1 프로세서들의 전체 개수가 Y(Y는 자연수)인 경우에, X와 Y를 비교할 수 있다. X가 Y(Y는 자연수)와 같지 않은 경우에(단계 S455: 아니오), 즉 X가 Y보다 작은 경우에, X를 1만큼 증가시키고(단계 S465), 단계 S415, S425, S445 및 S455를 반복할 수 있다. X가 Y와 같은 경우에(단계 S455: 예), 이는 상기 제1 프로세서들 모두가 동일한 부하를 가지는 것을 의미하므로, 상기 제1 프로세서들 중 상기 제1 도메인에 가장 먼저 정의된 프로세서에 상기 제1 작업을 할당할 수 있다(단계 S460). 도 9의 단계 S460은 도 8의 단계 S460과 실질적으로 동일할 수 있다.Specifically, when the total number of the first processors is Y (Y is a natural number), X and Y may be compared. If X is not equal to Y (Y is a natural number) (step S455: No), that is, if X is smaller than Y, increase X by 1 (step S465), and repeat steps S415, S425, S445 and S455. can do. If X is equal to Y (step S455: Yes), this means that all of the first processors have the same load, and therefore the first processor defined first in the first domain among the first processors has the same load. A task can be assigned (step S460). Step S460 of FIG. 9 may be substantially the same as step S460 of FIG. 8 .

일 실시예에서, 도 8의 단계 S410, S420, S430, S440, S450 및 S460과 도 9의 단계 S415, S425, S435, S445, S455, S460 및 S465는 도 2의 선택기(130)에 의해 수행될 수 있다.In one embodiment, steps S410, S420, S430, S440, S450 and S460 of FIG. 8 and steps S415, S425, S435, S445, S455, S460 and S465 of FIG. 9 are performed by selector 130 of FIG. can

일 실시예에서, 상기 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당하는데 있어서(단계 S400), 도 8 및 9를 참조하여 상술한 알고리즘 뿐만 아니라 기존에 널리 사용되고 있는 다양한 알고리즘들 중 적어도 하나를 이용할 수도 있다.In one embodiment, in selecting the at least one processor and allocating the at least one task (step S400), at least one of various algorithms widely used in the past as well as the algorithm described above with reference to FIGS. 8 and 9 can also be used.

도 10a, 10b, 11 및 12는 본 발명의 실시예들에 따른 멀티 프로세서 시스템 및 그 구동 방법의 성능을 나타내는 도면들이다.10A, 10B, 11 and 12 are diagrams illustrating performance of a multi-processor system and a method for driving the same according to embodiments of the present invention.

도 10a를 참조하면, 종래 기술에 따라 8개의 프로세서들(CPU0, CPU1, CPU2, CPU3, CPU4, CPU5, CPU6, CPU7)을 이용하여 동영상을 재생하는 경우에 프로세서들의 사용 빈도를 나타낸다. 도 10a의 예에서, 프로세서들(CPU0, CPU1, CPU2, CPU3, CPU4, CPU5)은 상대적으로 저전력, 저성능의 제1 도메인에 포함되고, 프로세서들(CPU6, CPU7)은 상대적으로 고전력, 고성능의 제2 도메인에 포함되며, 제1 도메인과 제2 도메인은 계층적으로 구성되지 않고 별도로 구성되었다. 종래 기술에서는 상기 제1 도메인에 포함되는 프로세서들(CPU0, CPU1, CPU2, CPU3, CPU4, CPU5)에 공평하게 작업이 할당되었다.Referring to FIG. 10A , frequency of use of processors is shown when a video is reproduced using eight processors (CPU0, CPU1, CPU2, CPU3, CPU4, CPU5, CPU6, CPU7) according to the prior art. In the example of FIG. 10A , processors CPU0 , CPU1 , CPU2 , CPU3 , CPU4 , and CPU5 are included in a first domain with relatively low power and low performance, and processors CPU6 and CPU7 have relatively high power and high performance. It is included in the second domain, and the first domain and the second domain are not hierarchically configured but configured separately. In the prior art, tasks are equally allocated to the processors (CPU0, CPU1, CPU2, CPU3, CPU4, and CPU5) included in the first domain.

도 10b를 참조하면, 본 발명의 실시예들에 따라 8개의 프로세서들(CPU0, CPU1, CPU2, CPU3, CPU4, CPU5, CPU6, CPU7)을 이용하여 동영상을 재생하는 경우에 프로세서들의 사용 빈도를 나타낸다. 도 10b의 예에서, 제1 도메인은 제2 도메인에 포함되고 상기 제2 도메인은 제3 도메인에 포함되도록 계층적으로 구성되며, 프로세서들(CPU0, CPU1, CPU2, CPU3)은 상기 제1 도메인에 포함되고, 프로세서들(CPU0, CPU1, CPU2, CPU3, CPU4, CPU5)은 상기 제2 도메인에 포함되며, 프로세서들(CPU0, CPU1, CPU2, CPU3, CPU4, CPU5, CPU6, CPU7)은 상기 제3 도메인에 포함된다. 또한, 계층적 도메인 구조를 제외하고는 도 10a의 예와 동일한 조건으로 동영상을 재생하였다. 본 발명의 실시예들에 따르면 상기 제1 도메인에 포함되는 프로세서들(CPU0, CPU1, CPU2, CPU3)에 우선적으로 작업이 할당되고, 사용량이 증가하는 구간에서만 프로세서들(CPU4, CPU5)에 작업이 추가 할당된다. 따라서, 종래 기술 대비 프로세서들(CPU4, CPU5)을 장기간 비활성화시킬 수 있어 전력 소모가 감소될 수 있다.Referring to FIG. 10B , frequency of use of processors is shown when a video is played using 8 processors (CPU0, CPU1, CPU2, CPU3, CPU4, CPU5, CPU6, CPU7) according to embodiments of the present invention. . In the example of FIG. 10B , the first domain is included in the second domain and the second domain is hierarchically configured to be included in the third domain, and the processors CPU0, CPU1, CPU2, and CPU3 are included in the first domain. and the processors (CPU0, CPU1, CPU2, CPU3, CPU4, and CPU5) are included in the second domain, and the processors (CPU0, CPU1, CPU2, CPU3, CPU4, CPU5, CPU6, and CPU7) are included in the third domain. included in the domain. In addition, the video was reproduced under the same conditions as in the example of FIG. 10A except for the hierarchical domain structure. According to embodiments of the present invention, tasks are preferentially allocated to the processors (CPU0, CPU1, CPU2, and CPU3) included in the first domain, and tasks are assigned to the processors (CPU4, CPU5) only in a period in which usage increases. additionally allocated. Therefore, compared to the prior art, the processors CPU4 and CPU5 can be deactivated for a long period of time, and power consumption can be reduced.

도 11 및 12를 참조하면, CASE1은 도 10a를 참조하여 상술한 종래 기술에 따라 다양한 시나리오들을 실행하는 경우를 나타내며, CASE2는 도 10b를 참조하여 상술한 본 발명의 실시예들에 따라 다양한 시나리오들을 실행하는 경우를 나타낸다. 도 11에 도시된 것처럼, 주소록 실행, 음악 애플리케이션 실행, 화면 터치, 3차원(3D) 게임, 갤러리 애플리케이션 실행, 동영상 재생, 음악 재생, 대기 화면 등 다양한 시나리오에서 본 발명의 전력 소모가 전반적으로 감소됨을 확인할 수 있다. 예를 들어, 전력 소모가 평균적으로 약 2.19mW 감소될 수 있다. 또한, 도 12에 도시된 것처럼, 다양한 웹페이지들(WEBPAGE1, WEBPAGE2, WEBPAGE3, WEBPAGE4, WEBPAGE5, WEBPAGE6, WEBPAGE7, WEBPAGE8)을 실행하는 웹 브라우징 시나리오에서 본 발명의 실행 속도가 전반적으로 빠름을 확인할 수 있다. 예를 들어, 실행 속도가 평균적으로 약 7.4% 증가할 수 있다.11 and 12, CASE1 represents a case of executing various scenarios according to the prior art described above with reference to FIG. 10A, and CASE2 represents various scenarios according to the embodiments of the present invention described above with reference to FIG. 10B. Indicates when to run. As shown in FIG. 11, the power consumption of the present invention is generally reduced in various scenarios such as address book execution, music application execution, screen touch, 3D game, gallery application execution, video playback, music playback, standby screen, etc. You can check. For example, power consumption can be reduced by about 2.19 mW on average. In addition, as shown in FIG. 12, it can be confirmed that the execution speed of the present invention is generally fast in a web browsing scenario in which various web pages (WEBPAGE1, WEBPAGE2, WEBPAGE3, WEBPAGE4, WEBPAGE5, WEBPAGE6, WEBPAGE7, WEBPAGE8) are executed. . For example, it can increase execution speed by about 7.4% on average.

도 13 및 14는 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법을 나타내는 순서도들이다. 이하 도 1과 중복되는 설명은 생략하도록 한다.13 and 14 are flowcharts illustrating a method of driving a multi-processor system according to embodiments of the present invention. Hereinafter, a description overlapping with that of FIG. 1 will be omitted.

도 13을 참조하면, 단계 S100이 생략되고 단계 S600이 추가되는 것을 제외하면, 도 13의 실시예는 도 1의 실시예과 실질적으로 동일할 수 있다.Referring to FIG. 13 , the embodiment of FIG. 13 may be substantially the same as the embodiment of FIG. 1 except that step S100 is omitted and step S600 is added.

본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법에서, 상기 계층적 도메인 구조는 미리 정의되어 있을 수 있다. 단계 S200, S300, S400 및 S500이 수행되기 이전에, 사용자 설정 신호에 기초하여 미리 정의된 상기 계층적 도메인 구조를 변경할 수 있다(단계 S600). 예를 들어, 도 2에 도시된 것처럼, 제1 사용자 설정 신호(USS1)가 수신된 경우에, 도메인 정의기(110)는 제1 사용자 설정 신호(USS1)에 기초하여 미리 정의된 상기 계층적 도메인 구조를 변경할 수 있다. 다시 말하면, 상기 계층적 도메인 구조는 외부 설정에 따라 변경 가능할 수 있다.In the method for driving a multi-processor system according to embodiments of the present invention, the hierarchical domain structure may be predefined. Before steps S200, S300, S400, and S500 are performed, the predefined hierarchical domain structure may be changed based on a user setting signal (step S600). For example, as shown in FIG. 2 , when the first user set signal USS1 is received, the domain definer 110 determines the hierarchical domain defined in advance based on the first user set signal USS1. structure can be changed. In other words, the hierarchical domain structure may be changeable according to external settings.

단계 S600에서 변경된 상기 계층적 도메인 구조에 기초하여 단계 S200, S300, S400 및 S500이 수행될 수 있다.Steps S200, S300, S400 and S500 may be performed based on the hierarchical domain structure changed in step S600.

도 14를 참조하면, 단계 S700이 추가되는 것을 제외하면, 도 14의 실시예는 도 1의 실시예과 실질적으로 동일할 수 있다.Referring to FIG. 14 , the embodiment of FIG. 14 may be substantially the same as the embodiment of FIG. 1 except for the addition of step S700.

단계 S100 및 S200이 수행된 이후에, 본 발명의 실시예들에 따른 작업 할당 알고리즘 또는 작업 패킹 알고리즘이 활성화되었는지 판단할 수 있다. After steps S100 and S200 are performed, it may be determined whether a task allocation algorithm or a task packing algorithm according to embodiments of the present invention is activated.

상기 작업 할당 알고리즘 또는 상기 작업 패킹 알고리즘이 활성화된 경우에(단계 S700: 예), 단계 S300 및 S400의 두 단계의 작업 할당을 수행하고, 상기 선택된 도메인 및 상기 선택된 적어도 하나의 프로세서에 의해 단계 S500이 수행될 수 있다.When the task allocation algorithm or the task packing algorithm is activated (step S700: YES), the two-step task allocation of steps S300 and S400 is performed, and step S500 is performed by the selected domain and the selected at least one processor. can be performed

상기 작업 할당 알고리즘 또는 상기 작업 패킹 알고리즘이 비활성화된 경우에(단계 S700: 아니오), 단계 S300 및 S400은 생략될 수 있다. 예를 들어, 도 2에 도시된 것처럼, 제2 사용자 설정 신호(USS2)가 수신된 경우에, 선택기(130)는 비활성화되어 상술한 두 단계의 작업 할당을 수행하지 않을 수 있다. 다시 말하면, 상기 작업 할당 알고리즘 또는 상기 작업 패킹 알고리즘은 외부 설정에 따라 선택적으로 온/오프될 수 있다.If the task allocation algorithm or the task packing algorithm is inactivated (step S700: No), steps S300 and S400 can be omitted. For example, as shown in FIG. 2 , when the second user setting signal USS2 is received, the selector 130 is inactivated and may not perform the above-described two-step task allocation. In other words, the task allocation algorithm or the task packing algorithm may be selectively turned on/off according to external settings.

상기 작업 할당 알고리즘 또는 상기 작업 패킹 알고리즘이 비활성화된 경우에, 스케줄러(120)가 일반적인 절차에 따라 임의의 프로세서를 선택할 수 있고, 상기 선택된 프로세서에 의해 단계 S500이 수행될 수 있다.When the task allocation algorithm or the task packing algorithm is inactivated, the scheduler 120 may select an arbitrary processor according to a general procedure, and step S500 may be performed by the selected processor.

본 발명의 실시예들에 따른 멀티 프로세서 시스템 및 그 구동 방법에서, 다양한 특성을 가진 복수의 프로세서들이 멀티 클러스터 환경으로 구현되며, 복수의 프로세서들을 효율적으로 관리할 수 있도록 세 개 이상의 복수의 도메인들을 계층적 도메인 구조에 따라 정의하고, 상기 복수의 프로세서들 각각이 적어도 하나의 도메인에 포함되도록 배치할 수 있다. 또한, 작업 패킹 알고리즘을 이용하여 수신된 작업을 두 단계에 걸쳐 특정 도메인 및 특정 프로세서에 할당함으로써, 복수의 프로세서들에 의해 수행되는 작업들을 효율적으로 스케줄링 및 관리할 수 있다. 따라서, 멀티 프로세서 시스템의 성능과 전력 소모를 효율적으로 관리할 수 있으며, 멀티 프로세서 시스템의 성능이 향상되면서 전력 소모가 감소될 수 있다.In the multi-processor system and its driving method according to embodiments of the present invention, a plurality of processors having various characteristics are implemented in a multi-cluster environment, and three or more domains are hierarchically managed to efficiently manage the plurality of processors. It is defined according to the domain structure, and each of the plurality of processors may be included in at least one domain. In addition, tasks performed by a plurality of processors can be efficiently scheduled and managed by allocating received tasks to specific domains and specific processors in two steps using a task packing algorithm. Accordingly, performance and power consumption of the multi-processor system can be efficiently managed, and power consumption can be reduced while performance of the multi-processor system is improved.

한편, 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법은, 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 포함하는 제품 등의 형태로 구현될 수도 있다. 상기 컴퓨터로 판독 가능한 프로그램 코드는 다양한 컴퓨터 또는 다른 데이터 처리 장치의 프로세서로 제공될 수 있다. 상기 컴퓨터로 판독 가능한 매체는 컴퓨터로 판독 가능한 신호 매체 또는 컴퓨터로 판독 가능한 기록 매체일 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 명령어 실행 시스템, 장비 또는 장치 내에 또는 이들과 접속되어 프로그램을 저장하거나 포함할 수 있는 임의의 유형적인 매체일 수 있다.Meanwhile, the method of driving a multi-processor system according to embodiments of the present invention may be implemented in the form of a product including a computer-readable program code stored in a computer-readable medium. The computer readable program code may be provided to processors of various computers or other data processing devices. The computer-readable medium may be a computer-readable signal medium or a computer-readable recording medium. The computer-readable recording medium may be any tangible medium capable of storing or including a program in or connected to an instruction execution system, equipment, or device.

도 15는 본 발명의 실시예들에 따른 멀티 코어 프로세싱 장치를 나타내는 블록도이다. 이하 도 2와 중복되는 설명은 생략하도록 한다.15 is a block diagram illustrating a multi-core processing device according to embodiments of the present invention. Hereinafter, a description overlapping with that of FIG. 2 will be omitted.

도 15를 참조하면, 멀티 코어 프로세싱 장치(200)는 복수의 프로세서 코어들(PC1, PC2, PC3, PC4, PC5, PC6, ..., PC(N-1), PCN), 스케줄러(220) 및 선택기(230)를 포함한다. 멀티 코어 프로세싱 장치(200)는 도메인 정의기(210) 및 메모리(240)를 더 포함할 수 있다.Referring to FIG. 15, the multi-core processing apparatus 200 includes a plurality of processor cores (PC1, PC2, PC3, PC4, PC5, PC6, ..., PC(N-1), PCN), a scheduler 220 and selector 230 . The multi-core processing device 200 may further include a domain definer 210 and a memory 240 .

복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)이 복수의 프로세서 코어들(PC1, PC2, PC3, PC4, PC5, PC6, ..., PC(N-1), PCN)로 변경되는 것을 제외하면, 도 15의 멀티 코어 프로세싱 장치(200)는 도 2의 멀티 프로세서 시스템(100)과 실질적으로 동일할 수 있다. 도메인 정의기(210), 스케줄러(220), 선택기(230) 및 메모리(240)는 도 2의 도메인 정의기(110), 스케줄러(120), 선택기(130) 및 메모리(140)와 각각 실질적으로 동일하며, 본 발명의 실시예들에 따라 동작할 수 있다. 이 경우, 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법은 멀티 코어 프로세싱 장치의 구동 방법으로 부를 수 있다.A plurality of processors (P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) a plurality of processor cores (PC1, PC2, PC3, PC4, PC5, PC6, . .., PC(N-1), PCN), the multi-core processing device 200 of FIG. 15 may be substantially the same as the multi-processor system 100 of FIG. The domain definer 210, scheduler 220, selector 230, and memory 240 are each substantially the same as the domain definer 110, scheduler 120, selector 130, and memory 140 of FIG. It is the same and can operate according to the embodiments of the present invention. In this case, the driving method of the multi-processor system according to the embodiments of the present invention may be referred to as a driving method of the multi-core processing device.

일 실시예에서, 도메인 정의기(210) 및 메모리(240) 중 적어도 하나는 멀티 코어 프로세싱 장치(200)의 외부에 배치될 수 있다.In one embodiment, at least one of the domain definer 210 and the memory 240 may be disposed outside the multi-core processing device 200 .

실시예에 따라서, 도 2 및 15의 도메인 정의기(110, 210), 스케줄러(120, 220) 및 선택기(130, 230)의 일부 또는 전부는 하드웨어의 형태로 구현될 수도 있고, 소프트웨어(즉, 프로그램)의 형태로 구현되어 저장 장치에 저장될 수도 있다.Depending on embodiments, some or all of the domain definers 110 and 210, the schedulers 120 and 220, and the selectors 130 and 230 of FIGS. 2 and 15 may be implemented in the form of hardware or software (i.e., It may be implemented in the form of a program) and stored in a storage device.

본 발명의 실시예들은 멀티 프로세서 시스템을 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular), 스마트폰(smart phone), MP3 플레이어, PDA(personal digital assistants), PMP(portable multimedia player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, 사물 인터넷(internet of things; IoT) 기기, VR(virtual reality) 기기, AR(augmented reality) 기기 등과 같은 다양한 전자 기기에 유용하게 적용될 수 있다.Embodiments of the present invention can be usefully used in any electronic device and system including a multi-processor system. For example, embodiments of the present invention may be used in computers, laptops, cellular, smart phones, MP3 players, personal digital assistants (PDAs), portable multimedia players (PMPs), digital TV, digital camera, portable game console, navigation device, wearable device, internet of things (IoT) device, VR (virtual reality) device, AR (augmented reality) device It can be usefully applied to various electronic devices such as

상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.Although the above has been described with reference to preferred embodiments of the present invention, those skilled in the art can variously modify and change the present invention without departing from the spirit and scope of the present invention described in the claims below. you will understand that you can

Claims (10)

계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인(domain)들 중 적어도 하나에 각각 포함되는 복수의 프로세서들;
상기 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업(task)을 수신하고 관리하는 스케줄러(scheduler); 및
상기 적어도 하나의 작업이 수신된 경우에, 상기 복수의 도메인들의 상태를 기초로 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당하고, 상기 복수의 프로세서들 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당하며, 상기 적어도 하나의 작업이 현재 도메인에서 처리 불가능한 것으로 판단된 경우에 상기 현재 도메인을 포함하는 다른 도메인을 선택하는 선택기(selector)를 포함하는 멀티 프로세서 시스템.
a plurality of processors each included in at least one of a plurality of three or more domains defined according to a hierarchical domain structure;
a scheduler for receiving and managing at least one task performed by the plurality of processors; and
When the at least one task is received, the at least one task is allocated by selecting one of the plurality of domains based on the state of the plurality of domains, and being included in the selected domain among the plurality of processors. Selecting at least one processor based on the state of the processors to allocate the at least one task, and selecting another domain including the current domain when it is determined that the at least one task cannot be processed in the current domain A multi-processor system with a selector.
제 1 항에 있어서, 상기 선택기는,
제1 작업이 수신된 경우에, 상기 복수의 도메인들 중 상기 현재 도메인의 상태를 확인하고, 상기 제1 작업이 상기 현재 도메인에서 처리 가능한 것으로 판단된 경우에 상기 현재 도메인에 상기 제1 작업을 할당하며, 상기 제1 작업이 상기 현재 도메인에서 처리 불가능한 것으로 판단된 경우에 상기 복수의 도메인들 중 상기 현재 도메인을 포함하는 상기 다른 도메인에 상기 제1 작업을 할당하는 것을 특징으로 하는 멀티 프로세서 시스템.
The method of claim 1, wherein the selector,
When a first task is received, the status of the current domain among the plurality of domains is checked, and when it is determined that the first task can be processed in the current domain, the first task is assigned to the current domain. and allocating the first task to the other domain including the current domain among the plurality of domains when it is determined that the first task cannot be processed in the current domain.
제 2 항에 있어서,
상기 현재 도메인의 상태는 상기 현재 도메인의 사용량(utilization) 및 부하(load) 중 적어도 하나를 포함하고,
상기 선택기는 상기 현재 도메인의 상태, 상기 제1 작업의 사용량 및 우선 순위(priority) 중 적어도 하나에 기초하여 상기 제1 작업이 상기 현재 도메인에서 처리 가능한지 판단하는 것을 특징으로 하는 멀티 프로세서 시스템.
According to claim 2,
The state of the current domain includes at least one of utilization and load of the current domain;
The multi-processor system of claim 1 , wherein the selector determines whether the first task can be processed in the current domain based on at least one of a state of the current domain, usage and priority of the first task.
제 1 항에 있어서, 상기 선택기는,
제1 작업이 수신되고 상기 복수의 도메인들 중 제1 도메인에 상기 제1 작업이 할당된 이후에, 상기 복수의 프로세서들 중 상기 제1 도메인에 포함되는 제1 프로세서들의 상태를 확인하고, 상기 제1 프로세서들 중 유휴(idle) 상태인 유휴 프로세서에 상기 제1 작업을 할당하는 것을 특징으로 하는 멀티 프로세서 시스템.
The method of claim 1, wherein the selector,
After a first task is received and the first task is allocated to a first domain among the plurality of domains, states of first processors included in the first domain among the plurality of processors are checked, and 1. A multi-processor system, wherein the first task is assigned to an idle processor among processors in an idle state.
제 4 항에 있어서, 상기 선택기는,
상기 제1 프로세서들 모두가 상기 유휴 상태가 아닌 경우에, 상기 제1 프로세서들 중 가장 적은 부하를 가지는 최소 부하 프로세서에 상기 제1 작업을 할당하는 것을 특징으로 하는 멀티 프로세서 시스템.
The method of claim 4, wherein the selector,
When all of the first processors are not in the idle state, the first task is allocated to a least loaded processor having the smallest load among the first processors.
제 5 항에 있어서, 상기 선택기는,
상기 제1 프로세서들 모두가 상기 유휴 상태가 아닌 경우, 및 상기 제1 프로세서들 모두가 동일한 부하를 가지는 경우에, 상기 제1 프로세서들 중 상기 제1 도메인에 가장 먼저 정의된 프로세서에 상기 제1 작업을 할당하는 것을 특징으로 하는 멀티 프로세서 시스템.
The method of claim 5, wherein the selector,
When all of the first processors are not in the idle state and when all of the first processors have the same load, a processor defined first in the first domain among the first processors performs the first task. Multi-processor system, characterized in that for allocating.
제 1 항에 있어서,
상기 복수의 프로세서들의 특성을 나타내는 제1 정보 및 상기 복수의 도메인들에 대한 제2 정보에 기초하여, 상기 복수의 프로세서들 각각이 적어도 하나의 도메인에 포함되도록 상기 계층적 도메인 구조를 정의하는 도메인 정의기(definer)를 더 포함하는 것을 특징으로 하는 멀티 프로세서 시스템.
According to claim 1,
Domain definition for defining the hierarchical domain structure so that each of the plurality of processors is included in at least one domain, based on the first information representing the characteristics of the plurality of processors and the second information about the plurality of domains. A multi-processor system further comprising a definer.
제 7 항에 있어서,
상기 복수의 도메인들은 제1, 제2 및 제3 도메인들을 포함하고,
상기 복수의 프로세서들은 제1, 제2 및 제3 프로세서들을 포함하며,
상기 도메인 정의기는 상기 제2 도메인이 상기 제1 도메인을 포함하고 상기 제3 도메인이 상기 제2 도메인을 포함하고 상기 제1 프로세서가 상기 제1 도메인에 포함되고 상기 제1 및 제2 프로세서들이 상기 제2 도메인에 포함되며 상기 제1, 제2 및 제3 프로세서들이 상기 제3 도메인에 포함되도록 상기 계층적 도메인 구조를 정의하는 것을 특징으로 하는 멀티 프로세서 시스템.
According to claim 7,
The plurality of domains include first, second and third domains,
The plurality of processors include first, second and third processors,
In the domain definer, the second domain includes the first domain, the third domain includes the second domain, the first processor is included in the first domain, and the first and second processors are included in the first domain. 2 domains and defining the hierarchical domain structure so that the first, second and third processors are included in the third domain.
복수의 프로세서들을 포함하는 멀티 프로세서 시스템의 구동 방법으로서,
계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인(domain)들 중 적어도 하나에 각각 포함되는 상기 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업(task)이 수신된 경우에, 상기 복수의 도메인들의 상태를 기초로 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당하는 단계; 및
상기 복수의 프로세서들 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당하는 단계를 포함하고,
상기 적어도 하나의 작업이 현재 도메인에서 처리 불가능한 것으로 판단된 경우에 상기 현재 도메인을 포함하는 다른 도메인을 선택하는 멀티 프로세서 시스템의 구동 방법.
As a driving method of a multi-processor system including a plurality of processors,
When at least one task performed by the plurality of processors each included in at least one of three or more domains defined according to a hierarchical domain structure is received, the plurality of assigning the at least one task by selecting one of the plurality of domains based on a state of the domains; and
Selecting at least one processor from among the plurality of processors based on states of processors included in the selected domain and allocating the at least one task;
and selecting another domain including the current domain when it is determined that the at least one task cannot be processed in the current domain.
제 9 항에 있어서,
상기 복수의 프로세서들의 특성을 나타내는 제1 정보 및 상기 복수의 도메인들에 대한 제2 정보에 기초하여, 상기 복수의 프로세서들 각각이 적어도 하나의 도메인에 포함되도록 상기 계층적 도메인 구조를 정의하는 단계를 더 포함하는 것을 특징으로 하는 멀티 프로세서 시스템의 구동 방법.
According to claim 9,
Defining the hierarchical domain structure so that each of the plurality of processors is included in at least one domain, based on first information indicating characteristics of the plurality of processors and second information about the plurality of domains. A method of driving a multi-processor system, characterized in that it further comprises.
KR1020180064711A 2018-06-05 2018-06-05 Multi-processor system and method of operating the same KR102563648B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180064711A KR102563648B1 (en) 2018-06-05 2018-06-05 Multi-processor system and method of operating the same
US16/245,603 US10956210B2 (en) 2018-06-05 2019-01-11 Multi-processor system, multi-core processing device, and method of operating the same
CN201910337547.3A CN110569122B (en) 2018-06-05 2019-04-24 Multiprocessor system, multi-core processing apparatus, and operation method thereof
US17/204,565 US12020065B2 (en) 2018-06-05 2021-03-17 Hierarchical processor selection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180064711A KR102563648B1 (en) 2018-06-05 2018-06-05 Multi-processor system and method of operating the same

Publications (2)

Publication Number Publication Date
KR20190138365A KR20190138365A (en) 2019-12-13
KR102563648B1 true KR102563648B1 (en) 2023-08-04

Family

ID=68693805

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180064711A KR102563648B1 (en) 2018-06-05 2018-06-05 Multi-processor system and method of operating the same

Country Status (3)

Country Link
US (1) US10956210B2 (en)
KR (1) KR102563648B1 (en)
CN (1) CN110569122B (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210101071A (en) 2020-02-07 2021-08-18 삼성전자주식회사 Electronic device for scheduling based on heterogeneous multi-processor and operating method thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120278637A1 (en) * 2009-06-26 2012-11-01 Chih-Fan Hsin Method and apparatus for performing energy-efficient network packet processing in a multi processor core system
US20160139964A1 (en) * 2014-11-17 2016-05-19 Mediatek Inc. Energy Efficient Multi-Cluster System and Its Operations

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6321133B1 (en) 1998-12-04 2001-11-20 Impresse Corporation Method and apparatus for order promising
US7761876B2 (en) 2003-03-20 2010-07-20 Siemens Enterprise Communications, Inc. Method and system for balancing the load on media processors based upon CPU utilization information
US7299371B2 (en) 2004-08-05 2007-11-20 International Business Machines Corporation Hierarchical management for multiprocessor system
US7680935B2 (en) * 2004-09-30 2010-03-16 Microsoft Corporation Entity domains
US8463971B2 (en) * 2005-08-22 2013-06-11 Oracle America Inc. Approach for distributing interrupts from high-interrupt load devices
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
US7996346B2 (en) 2007-12-19 2011-08-09 International Business Machines Corporation Method for autonomic workload distribution on a multicore processor
EP2297637A1 (en) * 2008-07-02 2011-03-23 Nxp B.V. A multiprocessor circuit using run-time task scheduling
US20100082497A1 (en) 2008-09-18 2010-04-01 Sap Ag Providing Foundation Application as Enterprise Services
US8321614B2 (en) * 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
US8726047B2 (en) * 2010-05-07 2014-05-13 Samsung Electronics Co., Ltd. System on chip, devices having the same, and method for power control of the SOC
CN101916209B (en) * 2010-08-06 2012-11-21 华东交通大学 Cluster task resource allocation method for multi-core processor
US8782451B2 (en) 2010-12-22 2014-07-15 Via Technologies, Inc. Power state synchronization in a multi-core processor
US8539494B2 (en) * 2011-01-31 2013-09-17 Oracle International Corporation Method and system for scheduling threads
US9235447B2 (en) * 2011-03-03 2016-01-12 Cisco Technology, Inc. Extensible attribute summarization
DE112012002545B4 (en) * 2011-07-26 2019-12-12 International Business Machines Corporation Manage workloads in a multiprocessing computer system
US9021138B2 (en) * 2011-08-26 2015-04-28 Microsoft Technology Licensing, Llc Performance of multi-processor computer systems
KR20130093995A (en) * 2012-02-15 2013-08-23 한국전자통신연구원 Method for performance optimization of hierarchical multi-core processor and the multi-core processor system of performing the method
US20130339977A1 (en) 2012-06-19 2013-12-19 Jack B. Dennis Managing task load in a multiprocessing environment
US9619282B2 (en) 2012-08-21 2017-04-11 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
CN103176850A (en) * 2013-04-10 2013-06-26 国家电网公司 Electric system network cluster task allocation method based on load balancing
US9594560B2 (en) 2013-09-27 2017-03-14 Intel Corporation Estimating scalability value for a specific domain of a multicore processor based on active state residency of the domain, stall duration of the domain, memory bandwidth of the domain, and a plurality of coefficients based on a workload to execute on the domain
WO2015070789A1 (en) * 2013-11-14 2015-05-21 Mediatek Inc. Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address (es)
KR102205836B1 (en) * 2014-01-29 2021-01-21 삼성전자 주식회사 Task Scheduling Method and Apparatus
US9671857B2 (en) * 2014-03-25 2017-06-06 Qualcomm Incorporated Apparatus, system and method for dynamic power management across heterogeneous processors in a shared power domain
US9785481B2 (en) 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
KR102197874B1 (en) 2014-09-01 2021-01-05 삼성전자주식회사 System on chip including multi-core processor and thread scheduling method thereof
US9910888B2 (en) * 2014-10-01 2018-03-06 Red Hat, Inc. Map-reduce job virtualization
US9852005B2 (en) * 2014-10-02 2017-12-26 Mediatek Inc. Multi-core processor systems and methods for assigning tasks in a multi-core processor system
US10423433B2 (en) * 2015-02-23 2019-09-24 Red Hat Israel, Inc. Scoped network address pool management
US20180018614A1 (en) 2016-07-15 2018-01-18 Lightning Bolt Solutions, Inc. Method and apparatus for optimizing constraint-based data
CN106993155A (en) * 2017-03-09 2017-07-28 北京溢思德瑞智能科技研究院有限公司 A kind of video flowing multi-processor array
WO2019011420A1 (en) * 2017-07-12 2019-01-17 Huawei Technologies Co., Ltd. Computing system for hierarchical task scheduling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120278637A1 (en) * 2009-06-26 2012-11-01 Chih-Fan Hsin Method and apparatus for performing energy-efficient network packet processing in a multi processor core system
US20160139964A1 (en) * 2014-11-17 2016-05-19 Mediatek Inc. Energy Efficient Multi-Cluster System and Its Operations

Also Published As

Publication number Publication date
CN110569122B (en) 2024-06-07
US10956210B2 (en) 2021-03-23
US20210200584A1 (en) 2021-07-01
CN110569122A (en) 2019-12-13
US20190370060A1 (en) 2019-12-05
KR20190138365A (en) 2019-12-13

Similar Documents

Publication Publication Date Title
CN107526546B (en) Spark distributed computing data processing method and system
US8375390B2 (en) Scheduling method and scheduling apparatus
EP2721480B1 (en) Memory manager with enhanced application metadata
US9218206B2 (en) Memory management model and interface for new applications
US20160239333A1 (en) Apparatus and method for scheduling graphics processing unit workloads from virtual machines
US20140196050A1 (en) Processing system including a plurality of cores and method of operating the same
US10261918B2 (en) Process running method and apparatus
US9286199B2 (en) Modifying memory space allocation for inactive tasks
JP2014523022A (en) Computer-implemented method and computer system
US20130097382A1 (en) Multi-core processor system, computer product, and control method
EP3097492B1 (en) Method and apparatus for preventing bank conflict in memory
CN109840151B (en) Load balancing method and device for multi-core processor
KR102563648B1 (en) Multi-processor system and method of operating the same
CN115981833A (en) Task processing method and device
US9405470B2 (en) Data processing system and data processing method
CN112654965A (en) External paging and swapping of dynamic modules
TWI760756B (en) A system operative to share code and a method for code sharing
US12020065B2 (en) Hierarchical processor selection
US20130166887A1 (en) Data processing apparatus and data processing method
JP7461433B2 (en) Resource reconfigurable deep neural network accelerator, system and method
CN114237841A (en) Task scheduling method, device, medium and computer equipment
CN116414555A (en) Method for scheduling cache budgets in a multi-core processing device and device for performing the same
CN113138909A (en) Load statistical method, device, storage medium and electronic equipment
CN117331669A (en) Dynamic processor cache partition scheduling method and system for realizing application transparency based on lock semantics
EP4323868A1 (en) System and method of dynamically partitioning computers at runtime

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