KR20190138365A - 멀티 프로세서 시스템 및 그 구동 방법 - Google Patents

멀티 프로세서 시스템 및 그 구동 방법 Download PDF

Info

Publication number
KR20190138365A
KR20190138365A KR1020180064711A KR20180064711A KR20190138365A KR 20190138365 A KR20190138365 A KR 20190138365A KR 1020180064711 A KR1020180064711 A KR 1020180064711A KR 20180064711 A KR20180064711 A KR 20180064711A KR 20190138365 A KR20190138365 A KR 20190138365A
Authority
KR
South Korea
Prior art keywords
domain
processors
task
domains
processor
Prior art date
Application number
KR1020180064711A
Other languages
English (en)
Other versions
KR102563648B1 (ko
Inventor
강현주
김상규
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180064711A priority Critical patent/KR102563648B1/ko
Priority to US16/245,603 priority patent/US10956210B2/en
Priority to CN201910337547.3A priority patent/CN110569122B/zh
Publication of KR20190138365A publication Critical patent/KR20190138365A/ko
Priority to US17/204,565 priority patent/US20210200584A1/en
Application granted granted Critical
Publication of KR102563648B1 publication Critical patent/KR102563648B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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

멀티 프로세서 시스템은 복수의 프로세서들, 스케줄러 및 선택기를 포함한다. 복수의 프로세서들은 계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인들 중 적어도 하나에 각각 포함된다. 스케줄러는 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업을 수신하고 관리한다. 선택기는 적어도 하나의 작업이 수신된 경우에, 복수의 도메인들의 상태를 기초로 복수의 도메인들 중 하나를 선택하여 적어도 하나의 작업을 할당하고, 복수의 프로세서들 중 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 적어도 하나의 작업을 할당한다.

Description

멀티 프로세서 시스템 및 그 구동 방법{MULTI-PROCESSOR SYSTEM AND METHOD OF OPERATING THE SAME}
본 발명은 컴퓨팅 시스템에 관한 것으로서, 더욱 상세하게는 복수의 프로세서들을 포함하는 멀티 프로세서 시스템 및 상기 멀티 프로세서 시스템의 구동 방법에 관한 것이다.
컴퓨팅 시스템에서 실행되는 OS(operating system)는 컴퓨팅 시스템 내의 모든 하드웨어 자원들과 소프트웨어 자원들을 관리하는 역할을 한다. OS는 일련의 작업을 완료하기 위해서 작업들 간의 처리 순서 및 작업에 필요한 자원을 관리하며, CPU(central processing unit)와 같은 프로세서는 OS에 발생하는 대부분의 작업을 처리한다. 최근에는 컴퓨팅 시스템의 성능이 향상됨에 따라, 복수 개의 프로세서들 또는 프로세서 코어들을 포함하는 컴퓨팅 시스템이 개발되고 있으며, 복수 개의 프로세서들 또는 프로세서 코어들의 성능과 전력 소모를 최적화시킬 수 있는 다양한 방식들이 연구되고 있다.
본 발명의 일 목적은 복수의 프로세서들의 성능 및 전력 소모를 효율적으로 관리할 수 있는 멀티 프로세서 시스템을 제공하는 것이다.
본 발명의 다른 목적은 복수의 프로세서들의 성능 및 전력 소모를 효율적으로 관리할 수 있는 멀티 프로세서 시스템의 구동 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 멀티 프로세서 시스템은 복수의 프로세서들, 스케줄러(scheduler) 및 선택기(selector)를 포함한다. 상기 복수의 프로세서들은 계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인(domain)들 중 적어도 하나에 각각 포함된다. 상기 스케줄러는 상기 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업(task)을 수신하고 관리한다. 상기 선택기는 상기 적어도 하나의 작업이 수신된 경우에, 상기 복수의 도메인들의 상태를 기초로 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당하고, 상기 복수의 프로세서들 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 복수의 프로세서들을 포함하는 멀티 프로세서 시스템의 구동 방법에서는, 계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인(domain)들 중 적어도 하나에 각각 포함되는 상기 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업(task)이 수신된 경우에, 상기 복수의 도메인들의 상태를 기초로 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당한다. 상기 복수의 프로세서들 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당한다.
상기와 같은 본 발명의 실시예들에 따른 멀티 프로세서 시스템 및 그 구동 방법에서는, 세 개 이상의 복수의 도메인들을 계층적 도메인 구조에 따라 정의하고, 작업 패킹 알고리즘을 이용하여 수신된 작업을 두 단계에 걸쳐 특정 도메인 및 특정 프로세서에 할당함으로써, 복수의 프로세서들에 의해 수행되는 작업들을 효율적으로 스케줄링 및 관리할 수 있다. 이에 따라, 다양한 특성을 가진 멀티 클러스터 환경에서 성능과 전력 소모를 효율적으로 관리할 수 있으며, 멀티 프로세서 시스템의 성능이 향상되면서 전력 소모가 감소될 수 있다.
도 1은 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 멀티 프로세서 시스템을 나타내는 블록도이다.
도 3은 도 1의 계층적 도메인 구조를 정의하는 단계의 일 예를 나타내는 순서도이다.
도 4a, 4b, 4c, 5a 및 5b는 도 3의 계층적 도메인 구조를 정의하는 동작을 설명하기 위한 도면들이다.
도 6 및 7은 도 1의 하나의 도메인을 선택하여 적어도 하나의 작업을 할당하는 단계의 예를 나타내는 순서도들이다.
도 8 및 9는 도 1의 적어도 하나의 프로세서를 선택하여 적어도 하나의 작업을 할당하는 단계의 예를 나타내는 순서도들이다.
도 10a, 10b, 11 및 12는 본 발명의 실시예들에 따른 멀티 프로세서 시스템 및 그 구동 방법의 성능을 나타내는 도면들이다.
도 13 및 14는 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법을 나타내는 순서도들이다.
도 15는 본 발명의 실시예들에 따른 멀티 코어 프로세싱 장치를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법에서, 상기 멀티 프로세서 시스템에 포함되는 복수의 프로세서들의 특성을 나타내는 제1 정보 및 세 개 이상의 복수의 도메인(domain)들에 대한 제2 정보에 기초하여, 상기 복수의 프로세서들 각각이 적어도 하나의 도메인에 포함되도록 계층적(hierarchical) 도메인 구조를 정의할 수 있다(단계 S100). 상기 멀티 프로세서 시스템의 구조 및 상기 계층적 도메인 구조에 대해서는 도 2 등을 참조하여 상세하게 후술하도록 한다.
상기 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업(task)을 수신할 수 있다(단계 S200). OS(operating system) 상에서 비디오, 게임, 웹 브라우저 등과 같은 애플리케이션(application) 또는 프로그램이 실행되는 것을 프로세스(process)라고 하며, 이러한 프로세스를 스케줄링(scheduling)할 수 있는 단위로 나눈 것을 작업이라 한다. 다시 말하면, 하나의 프로세스는 일련의 작업들을 포함하며, 상기 일련의 작업들 중 적어도 하나가 단계 S200에서 수신될 수 있다.
상기 적어도 하나의 작업이 수신된 경우에, 상기 복수의 도메인들의 상태를 기초로 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당한다(단계 S300). 다시 말하면, 상기 적어도 하나의 작업을 수행하기 위한 하나의 도메인이 먼저 결정될 수 있다.
상기 적어도 하나의 작업이 수신되고 상기 적어도 하나의 작업을 수행하기 위한 하나의 도메인이 선택된 이후에, 상기 복수의 프로세서들 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당한다(단계 S400). 다시 말하면, 상기 적어도 하나의 작업을 수행하기 위한 상기 적어도 하나의 프로세서가 상기 선택된 도메인 내에서 결정될 수 있다.
상기 선택된 도메인 및 상기 선택된 적어도 하나의 프로세서에 의해 상기 적어도 하나의 작업을 수행할 수 있다(단계 S500). 상기 계층적 도메인 구조와 단계 S300 및 S400의 두 단계의 작업 할당을 이용하여, 상기 복수의 프로세서들에 의해 수행되는 상기 적어도 하나의 작업을 효율적으로 스케줄링 및 관리할 수 있다. 단계 S300 및 S400의 동작을 작업 할당 알고리즘 또는 작업 패킹(packing) 알고리즘으로 부를 수 있다.
실시예에 따라서, 단계 S100은 생략될 수 있다. 이 경우, 상기 계층적 도메인 구조는 미리 정의되어 있을 수 있고, 미리 정의된 상기 계층적 도메인 구조를 로딩하고 이를 이용하여 단계 S200, S300, S400 및 S500이 수행될 수 있다.
도 2는 본 발명의 실시예들에 따른 멀티 프로세서 시스템을 나타내는 블록도이다.
도 2를 참조하면, 멀티 프로세서 시스템(100)은 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN), 스케줄러(scheduler)(120) 및 선택기(selector)(130)를 포함한다. 멀티 프로세서 시스템(100)은 복수의 클러스터들(CLU1, CLU2, ..., CLUM), 도메인 정의기(domain definer)(110) 및 메모리(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) 등과 같은 임의의 프로세서를 포함할 수 있다.
복수의 프로세서들(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)에 포함될 수 있다.
복수의 클러스터들(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) 또는 상기 파워 도메인들은 프로세서들에 대한 물리적 구분을 나타낼 수 있다.
일 실시예에서, 하나의 클러스터는 적어도 하나의 프로세서를 포함하며, 이에 따라 복수의 클러스터들(CLU1, CLU2, ..., CLUM)의 개수는 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)의 개수보다 작거나 같을 수 있다(즉, 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)(미도시)와 같은 캐시들을 관리하기 위한 구성요소를 더 포함할 수 있다.
복수의 프로세서들(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)에 대응하도록 상기 계층적 도메인 구조를 구성 및 정의할 수 있다.
복수의 클러스터들(CLU1, CLU2, ..., CLUM) 또는 상기 파워 도메인들과는 다르게, 복수의 도메인들(DM1, DM2, ..., DMK)은 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)에 의해 수행되는 프로세스 및/또는 작업에 적합하도록 프로세서들에 대한 기능적/개념적 구분을 나타낼 수 있다. 다시 말하면, 본 명세서에서 상기 계층적 도메인 구조에 따라 정의되는 복수의 도메인들(DM1, DM2, ..., DMK)은 파워 도메인과는 구별되는 개념이며, 작업 도메인, 프로세서 도메인 등으로 부를 수도 있다.
일 실시예에서, 하나의 도메인은 적어도 하나의 프로세서를 포함하며, 이에 따라 복수의 도메인들(DM1, DM2, ..., DMK)의 개수는 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN)의 개수보다 작거나 같을 수 있다(즉, K≤N).
실시예에 따라서, 복수의 도메인들(DM1, DM2, ..., DMK)의 개수는 복수의 클러스터들(CLU1, CLU2, ..., CLUM)의 개수와 같을 수도 있고 서로 다를 수도 있다. 복수의 클러스터들(CLU1, CLU2, ..., CLUM) 또는 상기 파워 도메인들의 구성에 대응하도록 상기 계층적 도메인 구조를 정의할 수도 있고, 복수의 클러스터들(CLU1, CLU2, ..., CLUM) 또는 상기 파워 도메인들의 구성과 무관하게 상기 계층적 도메인 구조를 정의할 수도 있다.
도메인 정의기(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)를 발생할 수 있다.
일 실시예에서, 도메인 정의기(110)는 제1 사용자 설정 신호(USS1)를 수신할 수 있다. 제1 사용자 설정 신호(USS1)가 수신된 경우에, 도메인 정의기(110)는 제1 사용자 설정 신호(USS1)에 기초하여 미리 정의된 상기 계층적 도메인 구조를 변경할 수 있다. 다시 말하면, 상기 계층적 도메인 구조는 사용자 설정 신호에 기초하여 도메인 정의기(110)에 의해 변경 가능할 수 있다.
스케줄러(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)을 스케줄링, 관리 및 할당할 수 있다.
복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 중 선택기(130)에 의해 선택된 프로세서는 적어도 하나의 작업(TKS)을 수행할 수 있다.
일 실시예에서, 선택기(130)는 제2 사용자 설정 신호(USS2)를 수신할 수 있다. 제2 사용자 설정 신호(USS2)가 수신된 경우에, 선택기(130)는 비활성화되어 상술한 두 단계의 작업 할당을 수행하지 않으며, 이 때 스케줄러(120)가 일반적인 절차에 따라 임의의 프로세서를 선택하여 적어도 하나의 작업(TKS)을 할당할 수 있다. 다시 말하면, 선택기(130)는 제2 사용자 설정 신호(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) 등과 같은 저장 장치의 형태로 구현될 수도 있다.
도 2의 멀티 프로세서 시스템(100)에 의해 도 1에 도시된 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법이 수행될 수 있다. 예를 들어, 도 1의 단계 S100은 도메인 정의기(110)에 의해 수행되고, 단계 S200은 스케줄러(120)에 의해 수행되고, 단계 S300 및 S400은 선택기(130)에 의해 수행되며, 단계 S500은 복수의 프로세서들(P1, P2, P3, P4, P5, P6, ..., P(N-1), PN) 중 적어도 하나에 의해 수행될 수 있다.
일 실시예에서, 멀티 프로세서 시스템(100)은 시스템 온 칩(system on chip, SOC)의 형태로 구현될 수 있다. 이 경우, 도시하지는 않았으나 멀티 프로세서 시스템(100)은 복수의 기능 블록들을 포함할 수 있다.
한편, 도시하지는 않았으나, 멀티 프로세서 시스템(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) 또는 이들의 결합으로 구현될 수 있다.
도 3은 도 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)을 분석할 수 있다.
상기 복수의 도메인들을 계층적으로 배치할 수 있고(단계 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)까지 순차적으로 배치될 수 있다.
일 실시예에서, 도 3의 단계 S110, S120 및 S130은 도 2의 도메인 정의기(110)에 의해 수행될 수 있다.
도 4a, 4b, 4c, 5a 및 5b는 도 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)을 포함할 수 있다.
도 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)에 포함될 수 있다.
도 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)은 각각 서로 다른 두 개 이상의 파워 도메인들에 대응할 수 있다.
도 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')에 포함될 수 있다.
도 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 파워 도메인들의 전부에 대응할 수 있다.
도 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)을 포함할 수 있다.
도 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)에 포함될 수 있다.
도 5b의 예에서, 도메인들(DM21, DM22, DM23)의 구성은 클러스터들(CLU21, CLU22, CLU23, CLU24) 및 파워 도메인들의 구성에 부분적으로 대응할 수 있다. 다시 말하면, 제1 도메인(DM21)이 상기 제1 및 제2 파워 도메인들의 전부에 대응하는 것을 제외하면, 도메인들(DM21, DM22, DM23)의 구성은 클러스터들(CLU21, CLU22, CLU23, CLU24) 및 파워 도메인들의 구성에 대응할 수 있다.
본 발명의 실시예들에 따른 계층적 도메인 구조를 정의하는데 있어서 아래와 같은 기준이 적용될 수 있다. 먼저 복수의 도메인들은 계층적인 구조로 구성되어야 한다. 각 프로세서는 적어도 하나의 도메인에 포함되어야 하고, 각 도메인은 해당 도메인에만 포함되는 적어도 하나의 프로세서가 존재하여야 한다. 각 프로세서는 모든 도메인들에 중복하여 포함될 수 있다. 파워 도메인들의 구성에 대응하거나 대응하지 않도록 도메인들을 정의할 수 있고, 서로 다른 두 개 이상의 파워 도메인들을 하나의 도메인으로 정의할 수도 있다. 이 때, 파워 도메인들을 기준으로 도메인들을 정의하는 것이 전력 소모 관리 측면에서 유리할 수 있다.
도 4b, 4c 및 5b의 예에 기초하여 본 발명의 실시예들에 따른 계층적 도메인 구조를 설명하였으나, 본 발명은 이에 한정되지 않으며, 도 4a 및 5a의 프로세서들 각각은 다양한 방식으로 적어도 하나의 도메인에 배치될 수 있다. 또한, 특정 개수의 프로세서들, 클러스터들(또는 파워 도메인들) 및 도메인들에 기초하여 본 발명의 실시예들에 따른 계층적 도메인 구조를 설명하였으나, 본 발명은 이에 한정되지 않을 수 있다. 도 4a, 4b 및 4c에서는 도메인들의 개수가 클러스터들(또는 파워 도메인들)의 개수와 동일한 경우를 예시하였고, 도 5a 및 5b에서는 도메인들의 개수가 클러스터들(또는 파워 도메인들)의 개수보다 적은 경우를 예시하였으나, 본 발명은 이에 한정되지 않으며, 도메인들의 개수가 클러스터들(또는 파워 도메인들)의 개수보다 많은 경우에도 적용될 수 있다.
도 6 및 7은 도 1의 하나의 도메인을 선택하여 적어도 하나의 작업을 할당하는 단계의 예를 나타내는 순서도들이다.
도 1 및 6을 참조하면, 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당하는데 있어서(단계 S300), 먼저 단계 S200에서 하나의 작업인 제1 작업이 수신된 경우에 기초하여 상기 제1 작업을 할당하는 동작을 설명하도록 한다.
상기 제1 작업이 수신된 이후에, 먼저 상기 제1 작업이 최초로 수신 또는 발생된 작업인지 판단할 수 있다(단계 S310).
상기 제1 작업이 최초로 수신된 작업이 아닌 경우에(단계 S310: 아니오), 즉 상기 제1 작업이 아닌 다른 작업을 수행 또는 처리 중인 현재 도메인이 존재하는 경우에, 상기 현재 도메인의 상태를 확인할 수 있다(단계 S320). 예를 들어, 상기 현재 도메인의 상태는 상기 현재 도메인의 사용량(utilization) 및 부하(load)(예를 들어, 워크로드(workload)) 중 적어도 하나를 포함할 수 있고, 그 밖에 전력 등 다양한 요인/변수들 중 적어도 하나를 포함할 수도 있다.
상기 제1 작업이 상기 현재 도메인에서 충분히 처리 가능한 것으로 판단된 경우에(단계 S330: 예), 상기 현재 도메인에 상기 제1 작업을 할당할 수 있다(단계 S340). 상기 제1 작업이 상기 현재 도메인에서 처리 불가능한 것으로 판단된 경우에(단계 S330: 아니오), 상기 복수의 도메인들 중 상기 현재 도메인을 제외한 다른 도메인에 상기 제1 작업을 할당할 수 있다(단계 S350). 다시 말하면, 단계 S330의 판단 결과에 따라 기존 도메인을 유지하거나 새로운 도메인을 선택할 수 있다.
일 실시예에서, 단계 S350의 상기 다른 도메인은 상기 현재 도메인을 포함하는 도메인들 중 하나일 수 있고, 특히 상기 현재 도메인을 직접 포함하는 바로 다음 도메인일 수 있다. 예를 들어, 도 2에 도시된 것처럼, 복수의 도메인들(DM1, DM2, ..., DMK) 중 제1 도메인(DM1)이 상기 현재 도메인인 경우에, 제1 도메인(DM1)을 포함하는 도메인들(DM2, ..., DMK) 중 하나가 상기 다른 도메인일 수 있고, 특히 제2 도메인(DM2)이 상기 다른 도메인일 수 있다.
일 실시예에서, 단계 S330에서는 상기 현재 도메인의 상태, 상기 제1 작업의 사용량 및 우선 순위(priority) 중 적어도 하나에 기초하여 상기 제1 작업이 상기 현재 도메인에서 처리 가능한지 판단할 수 있다. 예를 들어, 상기 제1 작업의 사용량은 상기 제1 작업에 의한 프로세서의 사용량 및/또는 상기 제1 작업에 의한 프로세서 자원의 사용량을 나타낼 수 있다.
한편, 상기 제1 작업이 최초로 수신된 작업인 경우에(단계 S310: 예), 즉 상기 현재 도메인이 존재하지 않는 경우에, 상기 복수의 도메인들 중 가장 작은 도메인에 상기 제1 작업을 할당할 수 있다(단계 S360). 일반적으로 최초로 수신된 작업의 경우 작업량이 많지 않으므로, 상기 가장 작은 도메인에 할당하더라도 무방할 수 있다. 예를 들어, 도 2에 도시된 것처럼, 복수의 도메인들(DM1, DM2, ..., DMK) 중 가장 작은 제1 도메인(DM1)에 상기 제1 작업을 할당할 수 있다.
도 1 및 7을 참조하면, 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당하는데 있어서(단계 S300), 먼저 단계 S200에서 하나의 작업인 제1 작업이 수신된 경우에 기초하여 상기 제1 작업을 할당하는 동작을 설명하도록 한다.
상기 제1 작업이 수신된 이후에, 상기 복수의 도메인들 모두의 상태를 확인할 수 있고(단계 S325), 상기 복수의 도메인들 중 상기 제1 작업이 처리 가능한 최적의 도메인에 상기 제1 작업을 할당할 수 있다(단계 S245). 상기 복수의 도메인들 중 상기 현재 도메인의 상태만을 확인하는 도 6의 실시예와 다르게, 도 7의 실시예에서는 상기 복수의 도메인들 모두의 상태를 확인할 수 있다.
일 실시예에서, 단계 S345에서는 상기 복수의 도메인들 모두의 상태, 상기 제1 작업의 사용량 및 우선 순위 중 적어도 하나에 기초하여 상기 제1 작업이 처리 가능한 최적의 도메인을 선택할 수 있다.
일 실시예에서, 도 6의 단계 S310, S320, S330, S340, S350 및 S360과 도 7의 단계 S325 및 S345는 도 2의 선택기(130)에 의해 수행될 수 있다.
도 8 및 9는 도 1의 적어도 하나의 프로세서를 선택하여 적어도 하나의 작업을 할당하는 단계의 예를 나타내는 순서도들이다.
도 1 및 8을 참조하면, 상기 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당하는데 있어서(단계 S400), 먼저 단계 S200에서 하나의 작업인 제1 작업이 수신된 경우 및 단계 S300에서 하나의 도메인인 제1 도메인이 선택된 경우에 기초하여 상기 제1 작업을 할당하는 동작을 설명하도록 한다.
상기 제1 작업이 수신되고 상기 제1 도메인이 선택되어 상기 제1 작업이 할당된 이후에, 상기 복수의 프로세서들 중 상기 제1 도메인에 포함되는 제1 프로세서들의 상태를 확인할 수 있다(단계 S410). 예를 들어, 도 2에 도시된 것처럼, 복수의 도메인들(DM1, DM2, ..., DMK) 중 제1 도메인(DM1)에 상기 제1 작업이 할당된 경우에, 제1 도메인(DM1)에 포함되는 프로세서들(P1, P2, P3, P4)의 상태를 확인할 수 있다. 예를 들어, 상기 제1 프로세서들의 상태는 상기 제1 프로세서들의 사용 여부, 사용량 및 부하 중 적어도 하나를 포함할 수 있고, 그 밖에 다양한 요인/변수들 중 적어도 하나를 포함할 수도 있다.
상기 제1 프로세서들 중 유휴(idle) 상태인 유휴 프로세서가 존재하는 경우에(단계 S420: 예), 상기 유휴 프로세서에 상기 제1 작업을 할당할 수 있다(단계 S430). 상기 유휴 상태는 액티브(active) 상태와 반대되는 개념이며, 슬립(sleep) 상태, 스탠바이(standby) 상태 등으로 부를 수도 있다.
상기 제1 프로세서들 중 상기 유휴 프로세서가 존재하지 않는 경우에(단계 S420: 아니오), 즉 상기 제1 프로세서들 모두가 상기 유휴 상태가 아닌 상기 액티브 상태인 경우에, 상기 제1 프로세서들의 부하를 확인할 수 있다. 상기 제1 프로세서들 중 가장 적은 부하를 가지는 최소 부하 프로세서가 존재하는 경우에(단계 S440: 예), 상기 최소 부하 프로세서에 상기 제1 작업을 할당할 수 있다(단계 S450).
상기 유휴 프로세서가 존재하지 않는 경우(단계 S420: 아니오), 및 상기 최소 부하 프로세서가 존재하지 않는 경우에(단계 S440: 아니오), 즉 상기 제1 프로세서들 모두가 동일한 부하를 가지는 경우에, 상기 제1 프로세서들 중 상기 제1 도메인에 가장 먼저 정의된 프로세서에 상기 제1 작업을 할당할 수 있다(단계 S460). 예를 들어, 도 2에 도시된 것처럼, 첫 번째 프로세서(P1)부터 순차적으로 정의 또는 배치된 경우에, 첫 번째 프로세서(P1)에 상기 제1 작업을 할당할 수 있다.
도 1 및 9를 참조하면, 상기 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당하는데 있어서(단계 S400), 도 8의 실시예를 보다 구체화하여 상기 제1 프로세서들 모두를 순차적으로 판단하기 위한 실시예를 도시하였다. 이하 도 8과 중복되는 설명은 생략하도록 한다.
상기 제1 도메인에 포함되는 상기 제1 프로세서들 중 X(X는 자연수) 번째로 정의된 프로세서를 현재 프로세서로 설정할 수 있다(단계 S415). 동작 초기에 X=1이며, 첫 번째로 정의된 프로세서부터 판단을 시작할 수 있다.
상기 현재 프로세서가 상기 유휴 상태인 경우(단계 S425: 예), 또는 상기 현재 프로세서가 가장 적은 부하를 가지는 경우에(단계 S445: 예), 상기 현재 프로세서에 상기 제1 작업을 할당할 수 있다(단계 S435). 도 9의 단계 S425 및 S445는 각각 도 8의 단계 S420 및 S440과 유사할 수 있다.
상기 현재 프로세서가 상기 유휴 상태가 아닌 경우(단계 S425: 아니오), 및 상기 현재 프로세서가 가장 적은 부하를 가지지 않는 경우에(단계 S445: 아니오), 상기 제1 프로세서들 모두에 대한 판단이 완료되었는지 확인할 수 있다.
구체적으로, 상기 제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과 실질적으로 동일할 수 있다.
일 실시예에서, 도 8의 단계 S410, S420, S430, S440, S450 및 S460과 도 9의 단계 S415, S425, S435, S445, S455, S460 및 S465는 도 2의 선택기(130)에 의해 수행될 수 있다.
일 실시예에서, 상기 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당하는데 있어서(단계 S400), 도 8 및 9를 참조하여 상술한 알고리즘 뿐만 아니라 기존에 널리 사용되고 있는 다양한 알고리즘들 중 적어도 하나를 이용할 수도 있다.
도 10a, 10b, 11 및 12는 본 발명의 실시예들에 따른 멀티 프로세서 시스템 및 그 구동 방법의 성능을 나타내는 도면들이다.
도 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)에 공평하게 작업이 할당되었다.
도 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)을 장기간 비활성화시킬 수 있어 전력 소모가 감소될 수 있다.
도 11 및 12를 참조하면, CASE1은 도 10a를 참조하여 상술한 종래 기술에 따라 다양한 시나리오들을 실행하는 경우를 나타내며, CASE2는 도 10b를 참조하여 상술한 본 발명의 실시예들에 따라 다양한 시나리오들을 실행하는 경우를 나타낸다. 도 11에 도시된 것처럼, 주소록 실행, 음악 애플리케이션 실행, 화면 터치, 3차원(3D) 게임, 갤러리 애플리케이션 실행, 동영상 재생, 음악 재생, 대기 화면 등 다양한 시나리오에서 본 발명의 전력 소모가 전반적으로 감소됨을 확인할 수 있다. 예를 들어, 전력 소모가 평균적으로 약 2.19mW 감소될 수 있다. 또한, 도 12에 도시된 것처럼, 다양한 웹페이지들(WEBPAGE1, WEBPAGE2, WEBPAGE3, WEBPAGE4, WEBPAGE5, WEBPAGE6, WEBPAGE7, WEBPAGE8)을 실행하는 웹 브라우징 시나리오에서 본 발명의 실행 속도가 전반적으로 빠름을 확인할 수 있다. 예를 들어, 실행 속도가 평균적으로 약 7.4% 증가할 수 있다.
도 13 및 14는 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법을 나타내는 순서도들이다. 이하 도 1과 중복되는 설명은 생략하도록 한다.
도 13을 참조하면, 단계 S100이 생략되고 단계 S600이 추가되는 것을 제외하면, 도 13의 실시예는 도 1의 실시예과 실질적으로 동일할 수 있다.
본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법에서, 상기 계층적 도메인 구조는 미리 정의되어 있을 수 있다. 단계 S200, S300, S400 및 S500이 수행되기 이전에, 사용자 설정 신호에 기초하여 미리 정의된 상기 계층적 도메인 구조를 변경할 수 있다(단계 S600). 예를 들어, 도 2에 도시된 것처럼, 제1 사용자 설정 신호(USS1)가 수신된 경우에, 도메인 정의기(110)는 제1 사용자 설정 신호(USS1)에 기초하여 미리 정의된 상기 계층적 도메인 구조를 변경할 수 있다. 다시 말하면, 상기 계층적 도메인 구조는 외부 설정에 따라 변경 가능할 수 있다.
단계 S600에서 변경된 상기 계층적 도메인 구조에 기초하여 단계 S200, S300, S400 및 S500이 수행될 수 있다.
도 14를 참조하면, 단계 S700이 추가되는 것을 제외하면, 도 14의 실시예는 도 1의 실시예과 실질적으로 동일할 수 있다.
단계 S100 및 S200이 수행된 이후에, 본 발명의 실시예들에 따른 작업 할당 알고리즘 또는 작업 패킹 알고리즘이 활성화되었는지 판단할 수 있다.
상기 작업 할당 알고리즘 또는 상기 작업 패킹 알고리즘이 활성화된 경우에(단계 S700: 예), 단계 S300 및 S400의 두 단계의 작업 할당을 수행하고, 상기 선택된 도메인 및 상기 선택된 적어도 하나의 프로세서에 의해 단계 S500이 수행될 수 있다.
상기 작업 할당 알고리즘 또는 상기 작업 패킹 알고리즘이 비활성화된 경우에(단계 S700: 아니오), 단계 S300 및 S400은 생략될 수 있다. 예를 들어, 도 2에 도시된 것처럼, 제2 사용자 설정 신호(USS2)가 수신된 경우에, 선택기(130)는 비활성화되어 상술한 두 단계의 작업 할당을 수행하지 않을 수 있다. 다시 말하면, 상기 작업 할당 알고리즘 또는 상기 작업 패킹 알고리즘은 외부 설정에 따라 선택적으로 온/오프될 수 있다.
상기 작업 할당 알고리즘 또는 상기 작업 패킹 알고리즘이 비활성화된 경우에, 스케줄러(120)가 일반적인 절차에 따라 임의의 프로세서를 선택할 수 있고, 상기 선택된 프로세서에 의해 단계 S500이 수행될 수 있다.
본 발명의 실시예들에 따른 멀티 프로세서 시스템 및 그 구동 방법에서, 다양한 특성을 가진 복수의 프로세서들이 멀티 클러스터 환경으로 구현되며, 복수의 프로세서들을 효율적으로 관리할 수 있도록 세 개 이상의 복수의 도메인들을 계층적 도메인 구조에 따라 정의하고, 상기 복수의 프로세서들 각각이 적어도 하나의 도메인에 포함되도록 배치할 수 있다. 또한, 작업 패킹 알고리즘을 이용하여 수신된 작업을 두 단계에 걸쳐 특정 도메인 및 특정 프로세서에 할당함으로써, 복수의 프로세서들에 의해 수행되는 작업들을 효율적으로 스케줄링 및 관리할 수 있다. 따라서, 멀티 프로세서 시스템의 성능과 전력 소모를 효율적으로 관리할 수 있으며, 멀티 프로세서 시스템의 성능이 향상되면서 전력 소모가 감소될 수 있다.
한편, 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법은, 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 포함하는 제품 등의 형태로 구현될 수도 있다. 상기 컴퓨터로 판독 가능한 프로그램 코드는 다양한 컴퓨터 또는 다른 데이터 처리 장치의 프로세서로 제공될 수 있다. 상기 컴퓨터로 판독 가능한 매체는 컴퓨터로 판독 가능한 신호 매체 또는 컴퓨터로 판독 가능한 기록 매체일 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 명령어 실행 시스템, 장비 또는 장치 내에 또는 이들과 접속되어 프로그램을 저장하거나 포함할 수 있는 임의의 유형적인 매체일 수 있다.
도 15는 본 발명의 실시예들에 따른 멀티 코어 프로세싱 장치를 나타내는 블록도이다. 이하 도 2와 중복되는 설명은 생략하도록 한다.
도 15를 참조하면, 멀티 코어 프로세싱 장치(200)는 복수의 프로세서 코어들(PC1, PC2, PC3, PC4, PC5, PC6, ..., PC(N-1), PCN), 스케줄러(220) 및 선택기(230)를 포함한다. 멀티 코어 프로세싱 장치(200)는 도메인 정의기(210) 및 메모리(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)와 각각 실질적으로 동일하며, 본 발명의 실시예들에 따라 동작할 수 있다. 이 경우, 본 발명의 실시예들에 따른 멀티 프로세서 시스템의 구동 방법은 멀티 코어 프로세싱 장치의 구동 방법으로 부를 수 있다.
일 실시예에서, 도메인 정의기(210) 및 메모리(240) 중 적어도 하나는 멀티 코어 프로세싱 장치(200)의 외부에 배치될 수 있다.
실시예에 따라서, 도 2 및 15의 도메인 정의기(110, 210), 스케줄러(120, 220) 및 선택기(130, 230)의 일부 또는 전부는 하드웨어의 형태로 구현될 수도 있고, 소프트웨어(즉, 프로그램)의 형태로 구현되어 저장 장치에 저장될 수도 있다.
본 발명의 실시예들은 멀티 프로세서 시스템을 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 컴퓨터(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) 기기 등과 같은 다양한 전자 기기에 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인(domain)들 중 적어도 하나에 각각 포함되는 복수의 프로세서들;
    상기 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업(task)을 수신하고 관리하는 스케줄러(scheduler); 및
    상기 적어도 하나의 작업이 수신된 경우에, 상기 복수의 도메인들의 상태를 기초로 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당하고, 상기 복수의 프로세서들 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당하는 선택기(selector)를 포함하는 멀티 프로세서 시스템.
  2. 제 1 항에 있어서, 상기 선택기는,
    제1 작업이 수신된 경우에, 상기 복수의 도메인들 중 현재 도메인의 상태를 확인하고, 상기 제1 작업이 상기 현재 도메인에서 처리 가능한 것으로 판단된 경우에 상기 현재 도메인에 상기 제1 작업을 할당하며, 상기 제1 작업이 상기 현재 도메인에서 처리 불가능한 것으로 판단된 경우에 상기 복수의 도메인들 중 상기 현재 도메인을 제외한 다른 도메인에 상기 제1 작업을 할당하는 것을 특징으로 하는 멀티 프로세서 시스템.
  3. 제 2 항에 있어서,
    상기 현재 도메인의 상태는 상기 현재 도메인의 사용량(utilization) 및 부하(load) 중 적어도 하나를 포함하고,
    상기 선택기는 상기 현재 도메인의 상태, 상기 제1 작업의 사용량 및 우선 순위(priority) 중 적어도 하나에 기초하여 상기 제1 작업이 상기 현재 도메인에서 처리 가능한지 판단하는 것을 특징으로 하는 멀티 프로세서 시스템.
  4. 제 1 항에 있어서, 상기 선택기는,
    제1 작업이 수신되고 상기 복수의 도메인들 중 제1 도메인에 상기 제1 작업이 할당된 이후에, 상기 복수의 프로세서들 중 상기 제1 도메인에 포함되는 제1 프로세서들의 상태를 확인하고, 상기 제1 프로세서들 중 유휴(idle) 상태인 유휴 프로세서에 상기 제1 작업을 할당하는 것을 특징으로 하는 멀티 프로세서 시스템.
  5. 제 4 항에 있어서, 상기 선택기는,
    상기 제1 프로세서들 모두가 상기 유휴 상태가 아닌 경우에, 상기 제1 프로세서들 중 가장 적은 부하를 가지는 최소 부하 프로세서에 상기 제1 작업을 할당하는 것을 특징으로 하는 멀티 프로세서 시스템.
  6. 제 5 항에 있어서, 상기 선택기는,
    상기 제1 프로세서들 모두가 상기 유휴 상태가 아닌 경우, 및 상기 제1 프로세서들 모두가 동일한 부하를 가지는 경우에, 상기 제1 프로세서들 중 상기 제1 도메인에 가장 먼저 정의된 프로세서에 상기 제1 작업을 할당하는 것을 특징으로 하는 멀티 프로세서 시스템.
  7. 제 1 항에 있어서,
    상기 복수의 프로세서들의 특성을 나타내는 제1 정보 및 상기 복수의 도메인들에 대한 제2 정보에 기초하여, 상기 복수의 프로세서들 각각이 적어도 하나의 도메인에 포함되도록 상기 계층적 도메인 구조를 정의하는 도메인 정의기(definer)를 더 포함하는 것을 특징으로 하는 멀티 프로세서 시스템.
  8. 제 7 항에 있어서,
    상기 복수의 도메인들은 제1, 제2 및 제3 도메인들을 포함하고,
    상기 복수의 프로세서들은 제1, 제2 및 제3 프로세서들을 포함하며,
    상기 도메인 정의기는 상기 제2 도메인이 상기 제1 도메인을 포함하고 상기 제3 도메인이 상기 제2 도메인을 포함하고 상기 제1 프로세서가 상기 제1 도메인에 포함되고 상기 제1 및 제2 프로세서들이 상기 제2 도메인에 포함되며 상기 제1, 제2 및 제3 프로세서들이 상기 제3 도메인에 포함되도록 상기 계층적 도메인 구조를 정의하는 것을 특징으로 하는 멀티 프로세서 시스템.
  9. 복수의 프로세서들을 포함하는 멀티 프로세서 시스템의 구동 방법으로서,
    계층적 도메인 구조에 따라 정의되는 세 개 이상의 복수의 도메인(domain)들 중 적어도 하나에 각각 포함되는 상기 복수의 프로세서들에 의해 수행되는 적어도 하나의 작업(task)이 수신된 경우에, 상기 복수의 도메인들의 상태를 기초로 상기 복수의 도메인들 중 하나를 선택하여 상기 적어도 하나의 작업을 할당하는 단계; 및
    상기 복수의 프로세서들 중 상기 선택된 도메인에 포함되는 프로세서들의 상태를 기초로 적어도 하나의 프로세서를 선택하여 상기 적어도 하나의 작업을 할당하는 단계를 포함하는 멀티 프로세서 시스템의 구동 방법.
  10. 제 9 항에 있어서,
    상기 복수의 프로세서들의 특성을 나타내는 제1 정보 및 상기 복수의 도메인들에 대한 제2 정보에 기초하여, 상기 복수의 프로세서들 각각이 적어도 하나의 도메인에 포함되도록 상기 계층적 도메인 구조를 정의하는 단계를 더 포함하는 것을 특징으로 하는 멀티 프로세서 시스템의 구동 방법.
KR1020180064711A 2018-06-05 2018-06-05 멀티 프로세서 시스템 및 그 구동 방법 KR102563648B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180064711A KR102563648B1 (ko) 2018-06-05 2018-06-05 멀티 프로세서 시스템 및 그 구동 방법
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 (zh) 2018-06-05 2019-04-24 多处理器系统、多核处理设备及其操作方法
US17/204,565 US20210200584A1 (en) 2018-06-05 2021-03-17 Multi-processor system, multi-core processing device, and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180064711A KR102563648B1 (ko) 2018-06-05 2018-06-05 멀티 프로세서 시스템 및 그 구동 방법

Publications (2)

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

Family

ID=68693805

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180064711A KR102563648B1 (ko) 2018-06-05 2018-06-05 멀티 프로세서 시스템 및 그 구동 방법

Country Status (2)

Country Link
US (2) US10956210B2 (ko)
KR (1) KR102563648B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11768702B2 (en) 2020-02-07 2023-09-26 Samsung Electronics Co., Ltd. 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 (23)

* 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
US20100082497A1 (en) 2008-09-18 2010-04-01 Sap Ag Providing Foundation Application as Enterprise Services
CN102270030B (zh) * 2010-05-07 2015-09-09 三星电子株式会社 片上系统、具有其的设备以及该片上系统的电力控制方法
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
JP2014523598A (ja) * 2011-07-26 2014-09-11 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッシング・コンピュータ・システムにおいて作業負荷を管理するための方法、装置、コンピュータ・プログラム(マルチプロセッシング・コンピュータ・システムにおける作業負荷の管理)
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
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
US9785481B2 (en) 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
KR102197874B1 (ko) 2014-09-01 2021-01-05 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
US9910888B2 (en) * 2014-10-01 2018-03-06 Red Hat, Inc. Map-reduce job virtualization
US10423433B2 (en) * 2015-02-23 2019-09-24 Red Hat Israel, Inc. Scoped network address pool management
CN106406987B (zh) * 2015-07-29 2020-01-03 阿里巴巴集团控股有限公司 一种集群中的任务执行方法及装置
US20180018614A1 (en) 2016-07-15 2018-01-18 Lightning Bolt Solutions, Inc. Method and apparatus for optimizing constraint-based data
CN110914805A (zh) * 2017-07-12 2020-03-24 华为技术有限公司 用于分层任务调度的计算系统

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11768702B2 (en) 2020-02-07 2023-09-26 Samsung Electronics Co., Ltd. Electronic device for scheduling based on heterogeneous multi-processor and operating method thereof

Also Published As

Publication number Publication date
US10956210B2 (en) 2021-03-23
KR102563648B1 (ko) 2023-08-04
US20210200584A1 (en) 2021-07-01
CN110569122A (zh) 2019-12-13
US20190370060A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
Chen et al. Accelerating mapreduce on a coupled cpu-gpu architecture
JP5647721B2 (ja) 適応電力管理
US8375390B2 (en) Scheduling method and scheduling apparatus
US20160239333A1 (en) Apparatus and method for scheduling graphics processing unit workloads from virtual machines
US9779469B2 (en) Register spill management for general purpose registers (GPRs)
CN102985910A (zh) 对无用存储单元收集的gpu支持
US20200098082A1 (en) Dynamic memory management on a graphics processing unit
US10261918B2 (en) Process running method and apparatus
CN113590508B (zh) 动态可重构的内存地址映射方法及装置
JPWO2009075070A1 (ja) 共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路
CN115981833A (zh) 一种任务处理方法及装置
EP4060505A1 (en) Techniques for near data acceleration for a multi-core architecture
Maqsood et al. Leveraging on deep memory hierarchies to minimize energy consumption and data access latency on single-chip cloud computers
US20150160973A1 (en) Domain based resource isolation in multi-core systems
CN116762068A (zh) 地址映射感知任务分配机制
KR102563648B1 (ko) 멀티 프로세서 시스템 및 그 구동 방법
CN115934102B (zh) 通用寄存器动态分配方法、装置、计算机设备和存储介质
US20140149691A1 (en) Data processing system and data processing method
CN110569122B (zh) 多处理器系统、多核处理设备及其操作方法
TWI760756B (zh) 共用代碼之系統與代碼共用方法
KR20210007417A (ko) 멀티-코어 시스템 및 그 동작 제어 방법
CN116450055B (zh) 一种多处理卡间的存储区域分配方法和系统
US20230214271A1 (en) Method of scheduling cache budget in multi-core processing device and multi-core processing device performing the same
JP7461433B2 (ja) リソース再設定可能な深層ニューラルネットワーク加速器、システムおよび方法
WO2024043905A1 (en) Adaptive caching of memory request streams

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