KR102452205B1 - 멀티 코어 제어 시스템 - Google Patents

멀티 코어 제어 시스템 Download PDF

Info

Publication number
KR102452205B1
KR102452205B1 KR1020170154636A KR20170154636A KR102452205B1 KR 102452205 B1 KR102452205 B1 KR 102452205B1 KR 1020170154636 A KR1020170154636 A KR 1020170154636A KR 20170154636 A KR20170154636 A KR 20170154636A KR 102452205 B1 KR102452205 B1 KR 102452205B1
Authority
KR
South Korea
Prior art keywords
core
processing speed
processing
cores
control system
Prior art date
Application number
KR1020170154636A
Other languages
English (en)
Other versions
KR20190057558A (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 KR1020170154636A priority Critical patent/KR102452205B1/ko
Priority to US15/969,964 priority patent/US11093441B2/en
Publication of KR20190057558A publication Critical patent/KR20190057558A/ko
Application granted granted Critical
Publication of KR102452205B1 publication Critical patent/KR102452205B1/ko

Links

Images

Classifications

    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Hardware Redundancy (AREA)
  • Advance Control (AREA)

Abstract

멀티 코어 제어 시스템이 제공된다. 멀티 코어 제어 시스템은, 제1 코어를 포함하는 복수의 코어 및 상기 복수의 코어 각각에서 수행되는 프로세스들 사이의 의존 관계를 인식하는 프로세스 의존성 인식기를 포함하고, 상기 제1 코어는, 제1 프로세스를 처리할 때 제1 시간 동안 대기하는 경우, 상기 제1 프로세스가 의존하는 프로세스를 상기 프로세스 의존성 인식기를 통해 인식한다.

Description

멀티 코어 제어 시스템{MULTI CORE CONTROL SYSTEM}
본 발명은 멀티 코어 제어 시스템에 관한 것이다.
복수의 코어를 포함하는 애플리케이션 프로세서는 호스트로부터 요청 받은 작업을 처리하기 위해 요청 받은 작업과 관련된 프로세스들을 복수의 코어 각각에 적절하게 할당할 수 있다. 이 경우, 처리하는데 상대적으로 오랜 시간이 걸리는 프로세스 또는 복잡한 계산을 요하는 프로세스 등은 고성능 코어에 할당될 수 있고, 처리하는데 상대적으로 적은 시간이 걸리는 프로세스 또는 간단한 계산을 요하는 프로세스 등은 저성능 코어에 할당될 수 있다.
다만, 고성능 코어에 할당된 프로세스를 처리하기 위해 저성능 코어에 할당된 프로세스의 처리가 선행되어야 하는 경우, 고성능 코어는 저성능 코어가 프로세스를 처리할 때까지 대기해야 한다. 이에 따라, 고성능 코어가 좋은 성능을 낼 수 있음에도 불구하고 성능이 떨어지게 되는 문제가 존재한다.
이와 같은 문제점은 의존성 있는 프로세스들을 동일한 코어에서 처리될 수 있도록 사전에 정의해두는 방법으로 해결될 수 있다. 하지만, 이러한 방법에 의할 경우 사전 정의된 데이터를 스케쥴러가 가지고 있어야 하며, 다양한 애플리케이션이 설치 가능한 오픈 시스템(open system)에서는 새로 추가된 프로세스 간 의존성을 계속해서 갱신해야 하므로 비현실적이라는 문제가 존재한다.
본 발명이 해결하고자 하는 기술적 과제는 멀티 코어 제어 시스템에 있어서 고성능 코어의 성능이 떨어지지 않도록 하는 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 멀티 코어 제어 시스템은, 제1 코어를 포함하는 복수의 코어 및 상기 복수의 코어 각각에서 수행되는 프로세스들 사이의 의존 관계를 인식하는 프로세스 의존성 인식기를 포함하고, 상기 제1 코어는, 제1 프로세스를 처리할 때 제1 시간 동안 대기하는 경우, 상기 제1 프로세스가 의존하는 프로세스를 상기 프로세스 의존성 인식기를 통해 인식한다.
몇몇 실시예에 따른 멀티 코어 제어 시스템은, 제1 처리 속도를 갖는 제1 코어, 제2 처리 속도를 갖는 제2 코어 및 제1 프로세스를 상기 제1 코어에 할당하고, 상기 제1 프로세스가 의존하는 제2 프로세스를 상기 제2 코어에 할당하는 스케쥴러를 포함하고, 상기 제1 코어는, 상기 제1 프로세스를 처리할 때 제1 시간 동안 대기하는 경우, 상기 제1 처리 속도가 상기 제2 처리 속도보다 빠른지 여부를 확인하고, 상기 제1 처리 속도가 상기 제2 처리 속도보다 빠르다고 인식한 경우, 상기 제2 처리 속도보다 빠른 제3 처리 속도를 갖는 제3 코어에 상기 제2 프로세스가 재할당되도록 상기 스케쥴러에게 요청한다.
몇몇 실시예에 따른 멀티 코어 제어 시스템은, 제1 코어 및 제2 코어를 포함하는 복수의 코어, 상기 제1 코어에 제1 프로세스를 할당하고, 상기 제2 코어에 제2 프로세스를 할당하는 스케쥴러, 상기 제1 프로세스 및 상기 제2 프로세스 간 의존성을 인식하는 프로세스 의존성 인식기 및 상기 복수의 코어 각각의 성능을 인식하는 코어 성능 인식기를 포함하고, 상기 제1 코어는, 상기 제1 프로세스를 처리할 때 제1 시간 동안 대기하는 경우, 상기 프로세스 의존성 인식기로부터 상기 제1 프로세스가 의존하는 프로세스에 대한 제1 정보를 수신하고, 상기 제1 정보에 기초하여, 상기 코어 성능 인식기로부터 상기 제1 코어의 제1 처리 속도와 상기 제2 코어의 제2 처리 속도에 관한 제2 정보를 수신하고, 상기 제2 정보에 기초하여, 상기 스케쥴러에게 제2 프로세스의 재할당 요청을 전송한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 멀티 코어 제어 시스템을 포함하는 시스템 온 칩의 대략적인 블록도를 도시한 도면이다.
도 2는 몇몇 실시예에 따른 멀티 코어 제어 시스템에 포함된 복수의 코어의 구조의 일례를 설명하기 위한 도면이다.
도 3은 몇몇 실시예에 따른 멀티 코어 제어 시스템에 포함된 복수의 코어의 구조의 다른 일례를 설명하기 위한 도면이다.
도 4는 몇몇 실시예에 따른 멀티 코어 제어 시스템에 포함된 스케쥴러가 복수의 코어 각각에게 프로세스를 할당하는 방법의 일례를 설명하기 위한 도면이다.
도 5는 프로세스들 사이에 의존관계가 존재하는 경우의 일례를 설명하기 위한 도면이다.
도 6은 프로세스들 사이에 의존관계가 존재하는 경우의 다른 일례를 설명하기 위한 도면이다.
도 7은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 코어 성능 저하를 방지하는 방법의 일례를 설명하기 위한 도면이다.
도 8은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 의존하는 프로세스를 인식하는 방법의 일례를 설명하기 위한 흐름도이다.
도 9는 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 복수의 코어의 처리 속도를 인식하는 방법의 일례를 설명하기 위한 도면이다.
도 10은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 복수의 코어의 처리 속도를 인식하는 방법의 다른 일례를 설명하기 위한 도면이다.
도 11은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 복수의 코어의 처리 속도를 인식하는 방법의 또 다른 일례를 설명하기 위한 도면이다.
도 12는 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 복수의 코어의 처리 속도를 인식하는 방법의 또 다른 일례를 설명하기 위한 도면이다.
도 13은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 복수의 코어의 처리 속도를 인식하는 방법의 또 다른 일례를 설명하기 위한 도면이다.
도 14는 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 일례를 설명하기 위한 도면이다.
도 15는 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 다른 일례를 설명하기 위한 도면이다.
도 16은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 또 다른 일례를 설명하기 위한 도면이다.
도 17은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 또 다른 일례를 설명하기 위한 도면이다.
도 18은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 또 다른 일례를 설명하기 위한 도면이다.
도 19는 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 또 다른 일례를 설명하기 위한 도면이다.
도 1은 몇몇 실시예에 따른 멀티 코어 제어 시스템을 포함하는 시스템 온 칩의 대략적인 블록도를 도시한 도면이다. 도 2는 몇몇 실시예에 따른 멀티 코어 제어 시스템에 포함된 복수의 코어의 구조의 일례를 설명하기 위한 도면이다. 도 3은 몇몇 실시예에 따른 멀티 코어 제어 시스템에 포함된 복수의 코어의 구조의 다른 일례를 설명하기 위한 도면이다. 도 4는 몇몇 실시예에 따른 멀티 코어 제어 시스템에 포함된 스케쥴러가 복수의 코어 각각에게 프로세스를 할당하는 방법의 일례를 설명하기 위한 도면이다.
도 1을 참조하면, 시스템 온 칩(1)은 인터페이스(10), 멀티 코어 제어 시스템(20) 및 메모리(30)를 포함할 수 있다. 다만, 상술한 구성 요소들은 시스템 온 칩(1)을 구현하는데 있어서 필수적인 것은 아니어서, 시스템 온 칩(1)은 위에서 열거된 구성요소들 보다 많거나, 또는 적은 구성요소들을 가질 수 있다.
시스템 온 칩(1)은 모바일 컴퓨팅 장치에 포함되는 시스템 온 칩일 수 있다. 여기서, 모바일 컴퓨팅 장치는 이동 전화기, 스마트 폰(smart phone), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(Internet of Things; IOT) 장치, 만물 인터넷(Internet of Everything; IOE) 장치 또는 e-book일 수 있다.
인터페이스(10)는 호스트와 데이터, 작업 요청 등을 주고 받을 수 있다. 예를 들어, 인터페이스(10)는 호스트로부터 작업 요청을 수신할 수 있다.
인터페이스(10)는 PATA 버스(parallel AT attachment bus), SATA 버스(serial AT attachment bus), SCSI, USB, PCIe 등을 통해 호스트와 연결될 수 있다.
멀티 코어 제어 시스템(20)은 복수의 코어(C1~C8), 스케쥴러(21), 코어 성능 인식기(22) 및 프로세스 의존성 인식기(23)를 포함할 수 있다. 다만, 상술한 구성 요소들은 멀티 코어 제어 시스템(20)을 구현하는데 있어서 필수적인 것은 아니어서, 멀티 코어 제어 시스템(20)은 위에서 열거된 구성요소들 보다 많거나, 또는 적은 구성요소들을 가질 수 있다.
도 1에는 멀티 코어 제어 시스템(20)에 8개의 코어들(C1~C8)이 포함되는 것으로 도시되어 있으나, 실시예에 따라 코어들의 개수는 다양해질 수 있다.
예를 들어, 도 2를 참조하면 멀티 코어 제어 시스템은 12개의 코어들(C1~C12)을 포함할 수 있다.
도 1을 다시 참조하면, 복수의 코어(C1~C8)는 동종(homogeneous) 프로세서 코어들일 수도 있고, 이종 프로세서 코어들(heterogeneous processor cores)일 수도 있다.
복수의 코어(C1~C8)가 이종 프로세서 코어들일 경우, 복수의 코어(C1~C8)는 제1 클러스터(CL1) 및 제2 클러스터(CL2)로 구분될 수 있다. 이 경우, 제1 클러스터(CL1)는 복수의 코어들(C1~C8) 중 제1 처리 속도를 갖는 고성능 코어들(C1~C4)을 포함할 수 있고, 제2 클러스터(CL2)는 복수의 코어들(C1~C8) 중 제1 처리 속도보다 느린 제2 처리 속도를 갖는 저성능 코어들(C5~C8)을 포함할 수 있다.
한편, 도 2를 다시 참조하면, 복수의 코어(C1~C12)가 이종 프로세서 코어들인 경우, 제1 클러스터(CL1), 제2 클러스터(CL2) 및 제3 클러스터(CL3)로 구분될 수 있다. 이 경우, 제1 클러스터(CL1)는 복수의 코어들(C1~C12) 중 제1 처리 속도를 갖는 고성능 코어들(C1~C4)을 포함할 수 있다. 제2 클러스터(CL2)는 복수의 코어들(C1~C12) 중 제1 처리 속도보다 느린 제2 처리 속도를 갖는 저성능 코어들(C5~C8)을 포함할 수 있다. 제3 클러스터(CL3)는 복수의 코어들(C1~C12) 중 제1 처리 속도보다 느리고 제2 처리 속도보다 빠른 제3 처리 속도를 갖는 중간 성능 코어들(C9~C12)을 포함할 수 있다.
몇몇 실시예에 따르면, 복수의 코어들(C1~C8)은 Per Core DVFS(Dynamic Voltage and Frequency Scaling) 구조일 수 있다.
도 3을 참조하면, Per Core DVFS 구조에서 복수의 코어(C)에 포함된 각각의 코어에는 서로 다른 주파수를 갖는 클락과 서로 다른 레벨을 갖는 전압이 공급될 수 있다.
예를 들어, 제1 코어(C1)에 공급되는 제1 전압(V1)의 레벨은 제2 코어(C2)에 공급되는 제2 전압(V2)의 레벨 및 제3 코어(C3)에 공급되는 제3 전압(V3)의 레벨과 상이할 수 있다. 다만, 이에 한정되는 것은 아니고, 제1 전압(V1)의 레벨은 제2 전압(V2)의 레벨 및 제3 전압(V3)의 레벨 중 어느 하나의 전압의 레벨에 대응하고, 다른 전압의 레벨과 상이할 수도 있다.
또한, 제1 코어(C1)에 공급되는 제1 클락(CLK1)의 제1 주파수는 제2 코어(C2)에 공급되는 제2 클락(CLK2)의 제2 주파수 및 제3 코어(C3)에 공급되는 제3 클락(CLK3)의 제3 주파수와 상이할 수 있다. 다만, 이에 한정되는 것은 아니고, 제1 클락(CLK1)의 주파수는 제2 클락(CLK2)의 주파수 및 제3 클락(CLK3)의 주파수 중 어느 하나의 클락의 주파수에 대응하고, 다른 클락의 주파수와 상이할 수도 있다.
도 1을 다시 참조하면, 복수의 코어들(C1~C8)은 각각 서로 독립적으로 작동할 수 있다. 예를 들어, 제1 코어(C1)에서 제1 프로세스를 처리하는 경우, 제2 코어(C2)는 제1 프로세스와 전혀 다른 제2 프로세스를 처리할 수 있다.
스케쥴러(21)는 인터페이스(10)를 통해 호스트로부터 요청 받은 작업과 관련된 프로세스들을 복수의 코어들(C1~C8) 각각에 할당할 수 있다.
예를 들어, 도 4를 참조하면, 호스트로부터 요청 받은 작업과 관련된 프로세스가 제1 프로세스(P1) 및 제2 프로세스(P2)를 포함하는 경우, 스케쥴러(21)는 복수의 코어(C) 중 제1 프로세스(P1) 및 제2 프로세스(P2)를 처리할 코어를 선택할 수 있다. 스케쥴러(21)는 복수의 코어(C) 중 제1 프로세스(P1)를 처리할 코어를 제1 코어(C1)로 선택하고, 복수의 코어(C) 중 제2 프로세스(P2)를 처리할 코어를 제2 코어(C2)로 선택할 수 있다. 이 경우, 스케쥴러(21)는 제1 프로세스(P1)를 제1 코어(C1)에 할당하고, 제2 프로세스(P2)를 제2 코어(C2)에 할당할 수 있다.
스케쥴러(21)는 복수의 코어(C1~C8) 각각에 프로세스들을 할당한 후, 복수의 코어(C1~C8) 중 어느 하나의 코어의 성능이 떨어진다고 인식되는 경우 문제가 되는 프로세스를 다른 코어에 재할당할 수 있다.
도 1을 다시 참조하면, 코어 성능 인식기(22)는 복수의 코어(C1~C8) 각각의 성능을 인식할 수도 있고, 복수의 코어(C1~C8) 사이의 성능의 차이를 인식할 수도 있다. 여기서, 성능이라 함은, 코어가 프로세스를 처리하는 처리 속도(예를 들어, 단위 시간단 데이터 처리량)를 의미할 수 있다. 복수의 코어(C1~C8) 사이의 성능의 차이를 인식하는 방법은 도 9 내지 도 13을 참조하여 좀더 자세히 후술한다.
만약, 제1 코어(C1)가 제5 코어(C5)와의 성능의 차이를 코어 성능 인식기(22)에게 요청한 경우, 코어 성능 인식기(22)는 제1 코어(C1)와 제5 코어(C5) 사이의 성능 차이를 확인하여 성능 차이에 관한 정보를 제1 코어(C1)에게 전송할 수 있다. 다만, 이에 한정되는 것은 아니고, 코어 성능 인식기(22)는 제1 코어(C1)와 제5 코어(5) 사이의 성능 차이를 확인하여 성능이 더 좋은 코어에 대한 정보를 제1 코어(C1)에게 전송할 수도 있다.
경우에 따라, 코어 성능 인식기(22)는 멀티 코어 제어 시스템(20)에 포함되지 않을 수도 있다. 이 경우, 복수의 코어(C1~C8) 각각의 성능에 대한 제1 정보는 메모리(30)에 저장되어 있을 수 있고, 복수의 코어(C1~C8) 각각은 필요에 따라 메모리(30)에서 제1 정보를 리드하여 다른 코어와의 성능 차이를 인식할 수도 있다.
프로세스 의존성 인식기(23)는 복수의 코어 각각에서 수행되는 프로세스들 사이의 의존 관계를 인식할 수 있다. 프로세스들 사이의 의존 관계라 함은, 예를 들어 제1 프로세스가 처리되기 위해서 제2 프로세스의 처리가 선행 되어야하는 관계일 수 있다. 이는 도 5 및 도 6을 참조하여 좀더 자세히 후술한다.
도 5 및 도 6은 프로세스들 사이에 의존관계가 존재하는 경우의 일례들을 설명하기 위한 도면들이다.
도 5 및 도 6과 관련하여 제1 프로세스(P1)는 제1 코어(C1)에서 처리되도록 제1 코어(C1)에 할당되어 있고, 제2 프로세스(P2)는 제2 코어(C2)에서 처리되도록 제2 코어(C2)에 할당되어 있다고 가정하고 이하 설명한다.
도 5를 참조하면, 제2 코어(C2)가 제2 프로세스(P2)를 처리하기 위해 공유 자원(R)을 점유하고 있는 상태에서 제1 코어(C1)가 제2 프로세스(P2)를 처리하기 위해 동일한 공유 자원(R)의 점유를 요청한 경우, 제1 코어(C1)의 요청은 거절될 수 있다. 따라서, 제1 코어(C1)는 제2 프로세스(P2)를 처리하기 위해 제2 코어(C2)에서 처리 중인 제1 프로세스(P2)의 처리가 완료되기를 기다려야 한다. 이 경우, 제1 프로세스(P1)는 제2 프로세스(P2)에 의존한다고 볼 수 있다. 여기서, 공유 자원은 하드웨어 공유 자원(R)인 SFR(Special Function Register) 메모리일 수도 있고, mutex 또는 semaphore를 통한 공유 자원일 수도 있다.
도 6을 참조하면, 제1 코어(C1)에서 처리되는 제1 프로세스(P1)가 제2 코어(C2)에서 처리되는 제2 프로세스(P2)의 출력을 대기하는 경우에도 제1 프로세스(P1)가 제2 프로세스(P2)에 의존한다고 볼 수 있다.
예를 들어, 제2 프로세스(P2)가 디스플레이 화면에 출력할 데이터를 드로잉(drawing)하는 프로세스(예를 들어, RenderThread)이고, 제1 프로세스(P1)가 제2 프로세스(P2)에서 출력된 데이터를 프레임 버퍼에 옮기는 프로세스(예를 들어, surfaceflinger)인 경우, 제1 프로세스(P1)는 제2 프로세스(P2)를 통해 출력되는 데이터를 기다려야 한다. 이 경우, 제1 프로세스(P1)가 제2 프로세스(P2)에 의존한다고 볼 수 있다.
한편, 제1 프로세스(P1)가 제2 프로세스(P2)의 출력을 대기하고, 제2 프로세스(P2)가 제1 프로세스(P1)의 출력을 대기하는 경우, 즉 제1 프로세스(P1)와 제2 프로세스(P2)가 양방향성의 의존성을 가질 수도 있다. 하지만, 이는 교착 상태(deadlock)에 해당하는 것으로 시스템 안정성 문제를 야기할 수 있다. 따라서, 제1 프로세스(P1)와 제2 프로세스(P2)가 양방향성의 의존성을 가지는 경우는 논외로 한다.
도 1을 다시 참조하면, 메모리(30)는 복수의 코어(C1~C8) 각각의 성능에 대한 정보를 저장할 수 있다. 복수의 코어(C1~C8) 각각의 성능에 대한 정보는 복수의 코어(C1~C8) 각각의 처리 속도에 대한 정보를 포함할 수 있다. 여기서, 복수의 코어(C1~C8) 각각의 처리 속도에 대한 정보는 복수의 코어 각각의 MIPS(Million Instructions Per Second) 값에 대한 정보를 포함할 수 있다.
메모리(30)는 RAM(Static Random Access Memory)과 같은 휘발성 메모리로 구현될 수 있다. 휘발성 메모리는 RAM(random access memory), SRAM(static RAM), DRAM (dynamic RAM), SDRAM(synchronous DRAM), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다. 다만, 이에 한정되는 것은 아니고 메모리(30)는 비휘발성 메모리로 구현될 수도 있다.
도 7은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 코어 성능 저하를 방지하는 방법의 일례를 설명하기 위한 도면이다. 도 8은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 의존하는 프로세스를 인식하는 방법의 일례를 설명하기 위한 흐름도이다. 도 9 내지 도 13은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 복수의 코어의 처리 속도를 인식하는 방법의 일례들을 설명하기 위한 도면들이다. 도 7 내지 도 13과 관련하여 도 1 내지 도 6과 관련하여 상술한 바와 중복되는 내용은 다시 설명하지 않으며, 이하 차이점을 중심으로 설명한다.
도 7 내지 도 13과 관련하여, 멀티 코어 제어 시스템은 제1 처리 속도를 갖는 제1 코어와 제1 처리 속도보다 느린 제2 처리 속도를 갖는 제2 코어를 포함한다고 가정하고 이하 설명한다. 또한, 제1 코어에 제1 프로세스가 할당되고 제2 코어에 제2 프로세스가 할당되었다고 가정하고 이하 설명한다.
도 7을 참조하면, 제1 코어(C1)는 제1 프로세스(P1)를 처리할 때 제1 시간 동안 대기할 수 있다(S100). 여기서, 제1 시간은 예를 들어, 제1 코어(C1)의 성능이 저하된다고 인식되는 시간일 수 있다.
제1 코어(C1)는 단계(S100)에서 제1 시간 동안 대기하는 경우, 제1 프로세스(P1)가 의존하는 프로세스를 인식할 수 있다(S110). 구체적으로, 제1 코어(C1)가 제1 프로세스를 처리할 때 제1 시간 동안 대기하는 경우, 프로세스 의존성 인식기(도 1의 23)를 통해 제1 프로세스(P1)에 의존하는 프로세스를 인식할 수 있다.
예를 들어, 도 8을 참조하면, 제1 코어(C1)가 제1 프로세스를 처리할 때 제1 시간 동안 대기하는 경우, 프로세스 의존성 인식기(23)에게 제1 프로세스(P1)에 의존하는 프로세스의 검색을 요청할 수 있다(S111). 이 경우, 제1 코어(C1)는 프로세스 의존성 인식기(23)에게 요청 신호를 전송할 수 있다.
프로세스 의존성 인식기(23)는 제1 코어(C1)로부터 요청 신호를 수신함에 따라, 제1 프로세스(P1)가 의존하는 프로세스를 인식할 수 있다(S112). 예를 들어, 프로세스 의존성 인식기(23)는 복수의 코어 각각에서 처리하고 있는 프로세스를 인식하고, 제1 프로세스(P1)에 선행하는 프로세스 즉, 제1 프로세스(P1)가 의존하는 프로세스를 인식할 수 있다.
프로세스 의존성 인식기(23)는 단계(S112)에서 제1 프로세스(P1)가 의존하는 프로세스가 제2 프로세스(P2)라고 인식한 경우, 제1 프로세스(P1)가 의존하는 프로세스가 제2 프로세스(P2)라는 제1 정보를 제1 코어(C1)에게 전송할 수 있다(S113).
제1 코어(C1)는 단계(S113)에서 제1 정보를 수신함에 따라 제1 프로세스(P1)가 의존하는 프로세스가 제2 프로세스(P2)임을 인식할 수 있다.
도 7을 다시 참조하면, 단계(S110)에서 제1 프로세스(P1)가 의존하는 프로세스가 제2 프로세스(P2)라고 인식한 경우, 제1 코어(C1)는 제2 프로세스를 처리하는 제2 코어(C2)를 인식할 수 있다(S120).
예를 들어, 멀티 코어 제어 시스템에 포함된 복수의 코어 각각은 다른 코어들이 어떠한 프로세스를 처리하고 있는지에 대한 정보를 서로 공유할 수 있다. 따라서, 제1 코어(C1)는 제2 프로세스(P2)를 처리하고 있는 코어를 복수의 코어 중에서 검색하여 제2 코어(C2)가 제2 프로세스(P2)를 처리하고 있다고 인식할 수 있다.
제1 코어(C1)는 단계(S120)에서 제2 프로세스(P2)가 제2 코어(C2)에서 처리된다고 인식한 경우, 제1 코어(C1)의 제1 처리 속도와 제2 코어(C2)의 제2 처리 속도를 확인하여 제1 처리 속도가 제2 처리 속도보다 빠른지 여부를 인식할 수 있다(S130). 제1 처리 속도가 제2 처리 속도보다 빠른 경우 제1 코어(C1)의 성능이 저하될 수 있기 때문이다.
일례로, 도 9를 참조하면, 제1 코어(C1)는 메모리(30)에 저장되어 있는 복수의 코어 각각의 MIPS 값에 대한 정보(I1)를 리드(read)할 수 있다. 제1 코어(C1)는 메모리(30)에서 리드한 정보(I1)에 기초하여 제1 코어(C1)의 MIPS 값이 30MIPS 라는 정보와 제2 코어(C2)의 MIPS 값이 10MIPS라는 정보를 확인하고 제1 코어(C1)의 제1 처리 속도가 제2 코어(C2)의 제2 처리 속도보다 빠르다고 인식할 수 있다.
다른 일례로, 도 10을 참조하면, 제1 코어(C1)는 메모리(30)에 저장되어 있는 복수의 코어 각각의 MIPS 값에 대한 정보 중 제1 코어(C1)와 제2 코어(C2)의 MIPS 값에 대한 정보(I2)만 리드할 수 있다. 제1 코어(C1)는 메모리(30)에서 리드한 정보(I2)에 기초하여 제1 코어(C1)의 MIPS 값이 30MIPS이고, 제2 코어(C2)의 MIPS 값이 10MIPS라고 인식할 수 있다. 이 경우, 제1 코어(C1)는 제1 코어(C1)의 제1 처리 속도가 제2 코어(C2)의 제2 처리 속도가 빠르다고 인식할 수 있다.
몇몇 실시예에 따르면, 제1 코어(C1)는 코어 성능 인식기(22)를 통해 제1 코어(C1) 및 제2 코어(C2) 중 어느 코어가 속도가 더 빠른지를 인식할 수도 있다.
일례로, 도 11을 참조하면, 제1 코어(C1)가 코어 성능 인식기(22)에게 제1 코어(C1) 및 제2 코어(C2) 중 처리 속도가 더 빠른 코어에 대한 정보를 요청할 수 있다. 코어 성능 인식기(22)는 상기 요청을 수신함에 따라 메모리(30)에 저장되어 있는 복수의 코어 각각의 MIPS 값에 대한 정보(I1)를 리드할 수 있다. 코어 성능 인식기(22)는 리드한 정보(I1)를 이용하여 제1 코어(C1) 및 제2 코어(C2)의 처리 속도를 확인하고 제1 코어(C1) 및 제2 코어(C2) 중 처리 속도가 더 빠른 코어를 인식할 수 있다. 코어 성능 인식기(22)는 제1 코어(C1) 및 제2 코어(C2) 중 처리 속도가 더 빠른 코어가 제1 코어(C1)라고 인식한 경우, 제1 코어(C1)가 처리 속도가 더 빠르다는 정보(I3)를 제1 코어(C1)에게 전송할 수 있다.
다른 일례로, 도 12를 참조하면, 제1 코어(C1)가 코어 성능 인식기(22)에게 제1 코어(C1) 및 제2 코어(C2) 중 처리 속도가 더 빠른 코어에 대한 정보를 요청할 수 있다. 코어 성능 인식기(22)는 상기 요청을 수신함에 따라 메모리(30)에 저장되어 있는 복수의 코어 중 제1 코어(C1) 및 제2 코어(C2) 각각의 MIPS 값에 대한 정보(I2)만 리드할 수 있다. 코어 성능 인식기(22)는 리드한 정보(I2)를 이용하여 제1 코어(C1) 및 제2 코어(C2) 중 처리 속도가 더 빠른 코어를 인식할 수 있다. 코어 성능 인식기(22)는 제1 코어(C1) 및 제2 코어(C2) 중 처리 속도가 더 빠른 코어가 제1 코어(C1)라고 인식한 경우, 제1 코어(C1)가 처리 속도가 더 빠르다는 정보(I3)를 제1 코어(C1)에게 전송할 수 있다.
도 13을 참조하면, 몇몇 실시예에 따른 코어 성능 인식기(22)는 제1 코어(C1) 및 제2 코어(C2) 중 처리 속도가 더 빠른 코어를 인식할 때 제1 코어(C1)의 MIPS 값 및 제2 코어(C2)의 MIPS 값에 대한 정보뿐만 아니라 제1 코어(C1)에 공급되는 제1 클락(CLK1)의 주파수 및 제2 코어(C2)에 공급되는 제2 클락(CLK2)의 주파수에 대한 정보(I4)를 추가로 확인할 수 있다. Per core DVFS 구조에서 복수의 코어 각각의 처리 속도는 복수의 코어 각각에 공급되는 클락의 주파수에 따라 달라질 수 있기 때문이다.
코어 성능 인식기(22)는 제1 코어(C1)의 MIPS 값 및 제2 코어(C2)의 MIPS 값에 대한 정보와 제1 코어(C1)에 공급되는 제1 클락(CLK1)의 주파수 및 제2 코어(C2)에 공급되는 제2 클락(CLK2)의 주파수에 대한 정보(I4)를 이용하여 제1 코어(C1)의 제1 처리 속도 및 제2 코어(C2)의 제2 처리 속도를 산출할 수 있다.
코어 성능 인식기(22)는 상기 산출된 제1 처리 속도 및 상기 산출된 제2 처리 속도를 이용하여 제1 코어(C1) 및 제2 코어(C2) 중 처리 속도가 더 빠른 코어를 인식하여 제1 코어(C1)에게 처리 속도가 더 빠른 코어가 어느 코어인지에 대한 정보를 전송할 수 있다.
예를 들어, 제1 코어(C1)에 공급되는 제1 클락(CLK1)의 주파수가 1.6GHz이고, 제1 코어(C1)의 MIPS 값이 30MIPS이고, 제2 코어(C2)에 공급되는 제2 클락(CLK2)의 주파수가 800MHz이고, 제2 코어(C2)의 MIPS 값이 10MIPS인 경우, 코어 성능 인식기(22)는 제1 코어(C1)의 처리 속도가 제2 코어(C2)의 처리 속도보다 6배 빠르다는 정보를 산출할 수 있다. 그리고, 코어 성능 인식기(22)는 산출된 정보에 기초하여 제1 코어(C1)가 더 빠르다는 정보를 제1 코어(C1)에게 전송할 수 있다.
다만, 이에 한정되는 것은 아니고, 코어 성능 인식기(22)가 상기 산출된 제1 처리 속도 및 상기 산출된 제2 처리 속도에 대한 정보를 제1 코어(C1)에게 전송하고, 제1 코어(C1)가 제1 코어(C1) 및 제2 코어(C2) 중 처리 속도가 더 빠른 코어가 어느 코어인지를 확인할 수도 있다.
도 7을 다시 참조하면, 제1 코어(C1)는 단계(S130)에서 제1 처리 속도가 제2 처리 속도보다 빠르지 않다고 인식한 경우(S130, N), 제2 프로세스(P2)의 처리가 제2 코어(C2)에서 완료될 때까지 대기할 수 있다(S140).
제1 코어(C1)는 단계(S130)에서 제1 처리 속도가 제2 처리 속도보다 빠르다고 인식한 경우(S130, Y) 제2 프로세스(P2)가 제2 코어(C2)보다 성능이 좋은 제3 코어(C3)에서 처리되도록 제2 프로세스(P2)를 제3 코어(C3)에 재할당할 수 있다(S150). 여기서, 제3 코어(C3)는 제1 처리 속도보다 빠르거나 제1 처리 속도에 대응하는 제3 처리 속도를 가질 수 있다. 제2 프로세스(P2)를 제3 코어(C3)에 재할당하는 방법은 도 14 내지 도 19를 참조하여 좀더 자세히 설명한다.
몇몇 실시예에 따르면, 제1 코어(C1)는 도 7의 단계(S130)에서 제1 처리 속도가 제2 처리 속도보다 기 설정된 정도 이상 빠른지 여부를 인식한 후 기 설정된 정도 이상 빠른 경우에 한하여 제2 프로세스(P2)를 제3 코어(C3)에게 재할당할 수도 있다. 이는 무분별한 코어 재할당을 통해 소모 전력이 지나치게 증가하지 않도록 하기 위함이다.
다른 몇몇 실시예에 따르면, 제1 코어(C1)는 도 7의 단계(S130)에서 제1 처리 속도가 제2 처리 속도보다 빠르다고 인식한 경우, 제2 시간 동안 제2 프로세스(P2)가 완료되기를 기다린 후에 제3 코어에게 제2 프로세스(P2)를 재할당할 수도 있다. 이 역시 무분별한 코어 재할당을 통해 소모 전력이 지나치게 증가하지 않도록 하기 위함이다.
도 14는 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 일례를 설명하기 위한 도면이다. 도 14와 관련하여 도 1 내지 도 13과 관련하여 상술한 바와 중복되는 내용은 다시 설명하지 않으며 이하 차이점을 중심으로 설명한다.
도 14를 참조하면, 멀티 코어 제어 시스템(20)은 스케쥴러(21), 제1 처리 속도를 갖는 코어들(C1~C4)을 포함하는 제1 클러스터(CL1), 제1 처리 속도보다 느린 제2 처리 속도를 갖는 코어들(C5~C8)을 포함하는 제2 클러스터(CL2)를 포함할 수 있다.
제1 프로세스(P1)가 제2 프로세스(P2)에 의존하고, 제1 코어(C1)가 제1 프로세스(P1)를 처리하고 제5 코어(C5)가 제2 프로세스(P2)를 처리하는 경우, 제1 코어(C1)는 제2 프로세스(P2)를 제5 코어(C5)와 다른 코어에게 재할당해 달라고 스케쥴러(21)에게 요청할 수 있다.
스케쥴러(21)는 재할당 요청에 따라 제2 프로세스(P2)를 제1 코어(C1)가 포함된 제1 클러스터(CL1) 내의 코어들(C1~C4) 중 어느 하나의 코어에게 재할당할 수 있다.
예를 들어, 스케쥴러(21)는 제2 프로세스(P2)를 제1 클러스터(CL1)에 포함된 제2 코어(C2)에게 재할당할 수 있다. 제2 코어(C2)는 제1 코어(C1)가 포함된 제1 클러스터(CL1)에 포함된 코어로 제1 코어(C1)와 대응하는 처리 속도를 가질 수 있기 때문이다.
제2 프로세스(P2)가 제2 코어(C2)에 재할당된 경우, 제5 코어(C5)는 제2 프로세스(P2)를 더 이상 처리하지 않고, 제2 코어(C2)가 제2 프로세스(P2)를 처리할 수 있다.
도 15는 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 다른 일례를 설명하기 위한 도면이다. 도 15와 관련하여 도 1 내지 도 13과 관련하여 상술한 바와 중복되는 내용은 다시 설명하지 않으며 이하 차이점을 중심으로 설명한다.
도 15를 참조하면, 멀티 코어 제어 시스템(20)은 스케쥴러(21), 제1 처리 속도를 갖는 코어들(C1~C4)을 포함하는 제1 클러스터(CL1), 제1 처리 속도보다 느린 제2 처리 속도를 갖는 코어들(C5~C8)을 포함하는 제2 클러스터(CL2) 및 제1 처리 속도보다 느리고 제2 처리 속도보다 빠른 코어들(C9~C12)을 포함하는 제3 클러스터(CL3)를 포함할 수 있다.
제1 프로세스(P1)가 제2 프로세스(P2)에 의존하고, 제1 코어(C1)가 제1 프로세스(P1)를 처리하고, 제5 코어(C5)가 제2 프로세스(P2)를 처리하는 경우, 제1 코어(C1)는 제2 프로세스(P2)를 제5 코어(C5)와 다른 코어에게 재할당해 달라고 스케쥴러(21)에게 요청할 수 있다.
스케쥴러(21)는 재할당 요청에 따라, 제2 프로세스(P2)를 제1 클러스터(CL1) 내의 복수의 코어(C1~C4) 중 어느 하나의 코어(예를 들어, 제2 코어(C2))에게 재할당할 수 있다. 제1 클러스터(CL1) 내에 포함된 코어들(C1~C4)은 제1 코어(C1)의 처리 속도에 대응하기 때문이다.
스케쥴러(21)는 제2 프로세스(P2)를 제3 클러스터(CL3)에 포함된 코어들(C9~C12) 중 어느 하나의 코어에게 재할당하지 않는다. 제3 클러스터(CL3)에 포함된 코어들(C9~C12)은 제1 코어(C1)의 처리 속도보다 느린 처리 속도를 가지기 때문이다.
한편, 제2 프로세스(P2)가 제2 코어(C2)에 재할당된 경우, 제5 코어(C5)는 제2 프로세스(P2)를 더 이상 처리하지 않고, 제2 코어(C2)가 제2 프로세스(P2)를 처리할 수 있다.
도 16 및 도 17은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 또 다른 일례를 설명하기 위한 도면이다. 도 16 및 도 17과 관련하여 도 1 내지 도 13과 관련하여 상술한 바와 중복되는 내용은 다시 설명하지 않으며 이하 차이점을 중심으로 설명한다.
도 16 및 도 17을 참조하면, 멀티 코어 제어 시스템(20)은 스케쥴러(21), 제1 처리 속도를 갖는 코어들(C1~C4)을 포함하는 제1 클러스터(CL1), 제1 처리 속도보다 느린 제2 처리 속도를 갖는 코어들(C5~C8)을 포함하는 제2 클러스터(CL2) 및 제1 처리 속도보다 느리고 제2 처리 속도보다 빠른 코어들(C9~C12)을 포함하는 제3 클러스터(CL3)를 포함할 수 있다.
제1 프로세스(P1)가 제2 프로세스(P2)에 의존하고, 제9 코어(C9)가 제1 프로세스(P1)를 처리하고, 제5 코어(C5)가 제2 프로세스(P2)를 처리하는 경우, 제9 코어(C9)는 제2 프로세스(P2)를 제5 코어(C5)와 다른 코어에게 재할당해 달라고 스케쥴러(21)에게 요청할 수 있다.
도 16을 참조하면, 스케쥴러(21)는 재할당 요청에 따라, 제2 프로세스(P2)를 제3 클러스터(CL2) 내의 복수의 코어(C9~C12) 중 어느 하나의 코어(예를 들어, 제10 코어(C10))에 재할당할 수 있다. 제3 클러스터(CL3) 내에 포함된 코어들(C9~C12)은 제9 코어(C9)의 처리 속도에 대응하기 때문이다. 제2 프로세스(P2)가 제10 코어(C10)에 재할당된 경우, 제5 코어(C5)는 제2 프로세스(P2)를 더 이상 처리하지 않고, 제10 코어(C10)가 제2 프로세스(P2)를 처리할 수 있다.
도 17을 참조하면, 스케쥴러(21)는 재할당 요청에 따라, 제2 프로세스(P2)를 제1 클러스터(CL1) 내의 복수의 코어(C1~C4) 중 어느 하나의 코어(예를 들어, 제1 코어(C1))에 재할당할 수 있다. 제1 클러스터(CL1) 내에 포함된 코어들(C1~C4)은 제9 코어(C9)의 처리 속도보다 빠르기 때문이다. 제2 프로세스(P2)가 제1 코어(C1)에 재할당된 경우, 제5 코어(C5)는 제2 프로세스(P2)를 더 이상 처리하지 않고, 제1 코어(C1)가 제2 프로세스(P2)를 처리할 수 있다.
도 18은 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 또 다른 일례를 설명하기 위한 도면이다. 도 18과 관련하여 도 1 내지 도 13과 관련하여 상술한 바와 중복되는 내용은 다시 설명하지 않으며 이하 차이점을 중심으로 설명한다.
도 18을 참조하면, 멀티 코어 제어 시스템(20)은 스케쥴러(21), 제1 처리 속도를 갖는 코어들(C1~C4)을 포함하는 제1 클러스터(CL1), 제1 처리 속도보다 느린 제2 처리 속도를 갖는 코어들(C5~C8)을 포함하는 제2 클러스터(CL2) 및 제1 처리 속도보다 느리고 제2 처리 속도보다 빠른 코어들(C9~C12)을 포함하는 제3 클러스터(CL3)를 포함할 수 있다.
제1 프로세스(P1) 및 제2 프로세스(P2)가 제3 프로세스(P3)에 의존하고, 제1 코어(C1)가 제1 프로세스(P1)를 처리하고, 제9 코어(C9)가 제2 프로세스(P2)를 처리하고 제5 코어(C5)가 제3 프로세스(P3)를 처리하는 경우, 제1 코어(C1) 및/또는 제9 코어(C9)는 제3 프로세스(P3)를 제5 코어(C5)와 다른 코어에게 재할당해 달라고 스케쥴러(21)에게 요청할 수 있다.
몇몇 실시예에 따르면, 스케쥴러(21)는 재할당 요청에 따라, 제1 코어(C1) 및 제9 코어(C9)의 우선 순위를 판단하고 제3 프로세스(P3)를 재할당할 타겟 코어를 검색할 수 있다.
일례로, 제9 코어(C9)의 우선 순위가 더 높은 경우, 스케쥴러(21)는 제3 클러스터(CL3)에 포함된 코어들(C9~C12) 중 어느 하나의 코어를 타겟 코어로 결정하고, 제3 프로세스(P3)를 상기 결정된 타겟 코어에게 재할당할 수 있다.
다른 일례로, 제9 코어(C9)의 우선 순위가 더 높은 경우, 스케쥴러(21)는 제1 클러스터(CL1)에 포함된 코어들(C1~C4) 중 어느 하나의 코어를 타겟 코어로 결정하고, 제3 프로세스(P3)를 상기 결정된 타겟 코어에게 재할당할 수도 있다.
또 다른 일례로, 제1 코어(C1)의 우선 순위가 더 높은 경우, 스케쥴러(21)는 제1 클러스터(CL1)에 포함된 코어들(C1~C4) 중 어느 하나의 코어를 타겟 코어로 결정하고 제3 프로세스(P3)를 상기 결정된 타겟 코어에게 재할당할 수 있다.
다만, 제1 코어(C1)의 우선 순위가 더 높은 경우, 스케쥴러(21)는 제3 클러스터(CL1)에 포함된 코어들(C9~C12) 중 어느 하나의 코어를 타겟 코어로 결정하지 않을 수 있다. 제3 클러스터(CL3)에 포함된 코어들(C9~C12)은 제1 코어(C1)보다 처리 속도가 느려서 제1 코어(C1)의 성능이 떨어지는 문제를 해결하지 못하기 때문이다.
몇몇 실시예에 따르면, 스케쥴러(21)는 재할당 요청에 따라, 제1 코어(C1) 및 제9 코어(C9) 중 처리 속도가 더 빠른 코어를 인식하고 제3 프로세스(P3)를 재할당할 타겟 코어를 결정할 수 있다.
스케쥴러(21)는 제1 코어(C1)의 처리 속도가 더 빠르므로, 제1 클러스터(CL1)에 포함된 코어들(C1~C4) 중 어느 하나의 코어를 타겟 코어로 결정하고, 상기 결정된 타겟 코어에게 제3 프로세스(P3)를 재할당할 수 있다.
도 19는 몇몇 실시예에 따른 멀티 코어 제어 시스템에서 프로세스를 재할당하는 방법의 또 다른 일례를 설명하기 위한 도면이다. 도 19와 관련하여 도 1 내지 도 13과 관련하여 상술한 바와 중복되는 내용은 다시 설명하지 않으며 이하 차이점을 중심으로 설명한다.
도 19와 관련하여 제2 코어(C2)의 제2 처리 속도는 제1 코어(C1)의 제1 처리 속도보다 느리고, 제3 코어(C3)의 제3 처리 속도는 상기 제1 처리 속도에 대응하거나 제1 처리 속도보다 빠르다고 가정하고 이하 설명한다.
도 19를 참조하면, 멀티 코어 제어 시스템(20)은 스케쥴러(21), 제1 코어(C1), 제2 코어(C2) 및 제3 코어(C3)를 포함할 수 있다. 제1 코어(C1)에는 제1 주파수를 갖는 제1 클락(CLK1)이 제공될 수 있고, 제2 코어(C2)에는 제2 주파수를 갖는 제2 클락(CLK2)이 제공될 수 있고, 제3 코어(C3)에는 제3 주파수를 갖는 제3 클락(CLK3)이 제공될 수 있다.
제1 프로세스(P1)가 제2 프로세스(P2)에 의존하고, 제1 코어(C1)가 제1 프로세스(P1)를 처리하고 제2 코어(C2)가 제2 프로세스(P2)를 처리하는 경우, 제1 코어(C1)는 제2 프로세스(P2)를 제2 코어(C2)와 다른 코어에게 재할당해 달라고 스케쥴러(21)에게 요청할 수 있다.
스케쥴러(21)는 재할당 요청에 따라, 제2 프로세스(P2)를 제3 코어(C3)에게 재할당할 수 있다. 제3 코어(C3)는 제1 코어(C1)의 처리 속도에 대응하거나 제1 코어(C1)의 처리 속도보다 빠르기 때문이다.
제2 프로세스(P2)가 제3 코어(C3)에 재할당된 경우, 제2 코어(C2)는 제2 프로세스(P2)를 더 이상 처리하지 않고, 제3 코어(C3)가 제2 프로세스(P2)를 처리할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1: 시스템 온 칩
10: 인터페이스
20: 멀티 코어 제어 시스템
30: 메모리

Claims (20)

  1. 제1 코어를 포함하는 복수의 코어; 및
    상기 복수의 코어 각각에서 수행되는 프로세스들 사이의 의존 관계를 인식하는 프로세스 의존성 인식기를 포함하고,
    상기 제1 코어는,
    제1 프로세스를 처리할 때 제1 시간 동안 대기하는 경우, 상기 제1 프로세스가 의존하는 프로세스의 검색을 요청하는 요청 신호를 상기 프로세스 의존성 인식기에 전송하고,
    상기 프로세스 의존성 인식기는,
    상기 제1 코어로부터의 상기 요청 신호에 응답하여 상기 제1 프로세스가 의존하는 프로세스를 인식하고, 상기 인식된 프로세스에 관한 정보를 상기 제1 코어에 전송하는, 멀티 코어 제어 시스템.
  2. 제 1 항에 있어서,
    상기 제1 코어는,
    상기 제1 프로세스가 상기 복수의 코어에 포함된 제2 코어가 처리하는 제2 프로세스에 의존한다고 인식하면, 상기 제1 코어의 제1 처리 속도와 상기 제2 코어의 제2 처리 속도를 확인하는, 멀티 코어 제어 시스템.
  3. 제 2 항에 있어서,
    상기 제1 코어는,
    메모리에 저장된 상기 복수의 코어 각각의 MPIS 값에 대한 제1 정보를 이용하여 상기 제1 처리 속도 및 상기 제2 처리 속도를 인식하는, 멀티 코어 제어 시스템.
  4. 제 2 항에 있어서,
    메모리에 저장된 상기 복수의 코어 각각의 MIPS 값에 대한 제1 정보 및 상기 제1 코어 및 상기 제2 코어에 제공되는 클락의 주파수에 대한 제2 정보를 인식하고, 상기 제1 정보 및 상기 제2 정보 중 적어도 하나에 기초하여 상기 제1 처리 속도 및 상기 제2 처리 속도를 산출하는 코어 성능 인식기를 더 포함하는,
    상기 제1 코어는,
    상기 코어 성능 인식기를 통해 상기 제1 처리 속도와 상기 제2 처리 속도를 확인하는, 멀티 코어 제어 시스템.
  5. 제 2 항에 있어서,
    상기 프로세스 의존성 인식기는,
    상기 제1 프로세스를 처리할 때 상기 제2 프로세스의 처리 결과를 이용하는 경우, 상기 제1 프로세스가 상기 제2 프로세스에 의존한다고 인식하는, 멀티 코어 제어 시스템.
  6. 제 2 항에 있어서,
    상기 프로세스 의존성 인식기는,
    상기 제1 프로세스를 처리할 때 상기 제2 프로세스가 점유하는 공유 자원을 획득하기 위해 상기 제1 프로세스가 대기하는 경우, 상기 제1 프로세스가 상기 제2 프로세스에 의존한다고 인식하는, 멀티 코어 제어 시스템.
  7. 제 2 항에 있어서,
    상기 제1 코어는,
    상기 제1 처리 속도가 상기 제2 처리 속도보다 빠른 경우, 상기 제2 코어 대신 상기 제2 프로세스를 처리할 타겟 코어를 상기 복수의 코어 중에서 검색하는, 멀티 코어 제어 시스템.
  8. 제 7 항에 있어서,
    상기 타겟 코어는,
    상기 복수의 코어 중 상기 제1 처리 속도에 대응하거나 빠른 제3 처리 속도를 갖는 코어인, 멀티 코어 제어 시스템.
  9. 제 7 항에 있어서,
    상기 복수의 코어 각각에 상기 프로세스들을 할당하는 스케쥴러를 더 포함하고,
    상기 제1 코어는,
    상기 타겟 코어에 상기 제2 프로세스를 재할당하도록 상기 스케쥴러에 요청하는, 멀티 코어 제어 시스템.
  10. 제 9 항에 있어서,
    상기 제1 코어는,
    상기 제1 처리 속도 및 상기 제2 처리 속도를 확인한 후 제2 시간 동안 상기 제2 프로세스의 처리가 완료되지 않은 경우, 상기 타겟 코어에 상기 제2 프로세스를 재할당하도록 상기 스케쥴러에 요청하는, 멀티 코어 제어 시스템.
  11. 제 2 항에 있어서,
    상기 제1 코어는,
    상기 제1 처리 속도가 상기 제2 처리 속도보다 빠르지 않다고 인식한 경우, 상기 제2 코어에서 상기 제2 프로세스의 처리가 완료될 때까지 대기하는, 멀티 코어 제어 시스템.
  12. 제1 처리 속도를 갖는 제1 코어;
    제2 처리 속도를 갖는 제2 코어; 및
    제1 프로세스를 상기 제1 코어에 할당하고, 상기 제1 프로세스가 의존하는 제2 프로세스를 상기 제2 코어에 할당하는 스케쥴러를 포함하고,
    상기 제1 코어는,
    상기 제1 프로세스를 처리할 때 제1 시간 동안 대기하는 경우, 상기 제1 처리 속도가 상기 제2 처리 속도보다 빠른지 여부를 확인하고,
    상기 제1 처리 속도가 상기 제2 처리 속도보다 빠르다고 인식한 경우, 상기 제2 처리 속도보다 빠른 제3 처리 속도를 갖는 제3 코어에 상기 제2 프로세스가 재할당되도록 상기 스케쥴러에게 요청하고,
    상기 제3 처리 속도는,
    상기 제1 처리 속도보다 빠르거나 상기 제1 처리 속도에 대응하는, 멀티 코어 제어 시스템.
  13. 제 12 항에 있어서,
    상기 제1 코어는,
    상기 제1 처리 속도 및 상기 제2 처리 속도를 확인한 후 제2 시간 동안 상기 제2 프로세스의 처리가 완료되지 않은 경우, 상기 제3 코어에 상기 제2 프로세스를 재할당하도록 상기 스케쥴러에 요청하는, 멀티 코어 제어 시스템.
  14. 제 12 항에 있어서,
    상기 제1 코어는,
    상기 제1 처리 속도가 상기 제2 처리 속도보다 빠르지 않다고 인식한 경우, 상기 제2 프로세스의 처리가 완료될 때까지 대기하는, 멀티 코어 제어 시스템.
  15. 제 12 항에 있어서,
    상기 제1 프로세스 및 상기 제2 프로세스 간의 의존 관계를 인식하는 프로세스 의존성 인식기를 포함하고,
    상기 제1 코어는,
    상기 제1 프로세스를 처리할 때 제1 시간 동안 대기하는 경우, 상기 프로세스 의존성 인식기를 통해 상기 제2 프로세스가 상기 제1 프로세스에 의존하는 프로세스인지 여부를 확인하는, 멀티 코어 제어 시스템.
  16. 제 15 항에 있어서,
    상기 제1 코어는,
    상기 제2 프로세스가 상기 제1 프로세스에 의존한다고 인식한 경우 상기 제1 처리 속도가 상기 제2 처리 속도보다 빠른지 여부를 확인하는, 멀티 코어 제어 시스템.
  17. 제 15 항에 있어서,
    상기 제1 코어는,
    메모리에 저장된 상기 제1 및 제2 코어 각각의 MPIS 값에 대한 제1 정보를 이용하여 상기 제1 처리 속도 및 상기 제2 처리 속도를 인식하는, 멀티 코어 제어 시스템.
  18. 제 15 항에 있어서,
    메모리에 저장된 상기 제1 및 제2 코어 각각의 MIPS 값에 대한 제1 정보 및 상기 제1 코어 및 상기 제2 코어에 제공되는 클락의 주파수에 대한 제2 정보를 인식하고, 상기 제1 정보 및 상기 제2 정보 중 적어도 하나에 기초하여 상기 제1 처리 속도 및 상기 제2 처리 속도를 산출하는 코어 성능 인식기를 더 포함하고,
    상기 제1 코어는,
    상기 코어 성능 인식기를 통해 상기 제1 처리 속도와 상기 제2 처리 속도를 확인하는, 멀티 코어 제어 시스템.
  19. 제 12 항에 있어서,
    상기 제3 처리 속도는,
    상기 제1 처리 속도보다 빠르거나 상기 제1 처리 속도에 대응하는, 멀티 코어 제어 시스템.
  20. 제1 코어 및 제2 코어를 포함하는 복수의 코어;
    상기 제1 코어에 제1 프로세스를 할당하고, 상기 제2 코어에 제2 프로세스를 할당하는 스케쥴러;
    상기 제1 프로세스 및 상기 제2 프로세스 간의 의존성을 인식하는 프로세스 의존성 인식기; 및
    상기 복수의 코어 각각의 성능을 인식하는 코어 성능 인식기를 포함하고,
    상기 제1 코어는,
    상기 제1 프로세스를 처리할 때 제1 시간 동안 대기하는 경우, 상기 프로세스 의존성 인식기로부터 상기 제1 프로세스가 의존하는 프로세스에 대한 제1 정보를 수신하고,
    상기 제1 정보에 기초하여, 상기 코어 성능 인식기로부터 상기 제1 코어의 제1 처리 속도와 상기 제2 코어의 제2 처리 속도에 관한 제2 정보를 수신하고,
    상기 제2 정보에 기초하여, 상기 스케쥴러에게 제2 프로세스의 재할당 요청을 전송하는, 멀티 코어 제어 시스템.
KR1020170154636A 2017-11-20 2017-11-20 멀티 코어 제어 시스템 KR102452205B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170154636A KR102452205B1 (ko) 2017-11-20 2017-11-20 멀티 코어 제어 시스템
US15/969,964 US11093441B2 (en) 2017-11-20 2018-05-03 Multi-core control system that detects process dependencies and selectively reassigns processes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170154636A KR102452205B1 (ko) 2017-11-20 2017-11-20 멀티 코어 제어 시스템

Publications (2)

Publication Number Publication Date
KR20190057558A KR20190057558A (ko) 2019-05-29
KR102452205B1 true KR102452205B1 (ko) 2022-10-06

Family

ID=66532382

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170154636A KR102452205B1 (ko) 2017-11-20 2017-11-20 멀티 코어 제어 시스템

Country Status (2)

Country Link
US (1) US11093441B2 (ko)
KR (1) KR102452205B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11435813B2 (en) * 2018-08-29 2022-09-06 Advanced Micro Devices, Inc. Neural network power management in a multi-GPU system
KR102226120B1 (ko) * 2019-11-04 2021-03-11 주식회사 세종피아 다중 코어 사운드 트레이싱 장치 및 방법
CN112087576B (zh) * 2020-08-28 2021-12-07 上海商米科技集团股份有限公司 基于android平台摄像头数据流扩展方法及电子设备
US12019964B1 (en) * 2021-07-15 2024-06-25 Xilinx, Inc. Optimizing use of computer resources in implementing circuit designs through machine learning

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5983623B2 (ja) * 2011-10-21 2016-09-06 日本電気株式会社 タスク配置装置及びタスク配置方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496918B1 (en) * 2004-06-01 2009-02-24 Sun Microsystems, Inc. System and methods for deadlock detection
US7788668B2 (en) * 2005-06-09 2010-08-31 Lockheed Martin Corporation System and method for implementing distributed priority inheritance
US9594859B1 (en) 2006-03-29 2017-03-14 Altera Corporation Apparatus and associated methods for parallelizing clustering and placement
US20080022283A1 (en) 2006-07-19 2008-01-24 International Business Machines Corporation Quality of service scheduling for simultaneous multi-threaded processors
KR101375836B1 (ko) 2007-06-26 2014-04-01 삼성전자주식회사 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치
WO2009008007A2 (en) 2007-07-09 2009-01-15 Hewlett-Packard Development Company L.P. Data packet processing method for a multi core processor
US8544014B2 (en) 2007-07-24 2013-09-24 Microsoft Corporation Scheduling threads in multi-core systems
US8897372B2 (en) 2009-02-18 2014-11-25 Nec Corporation Task allocation device, task allocation method, and storage medium storing task allocation program
US8069446B2 (en) 2009-04-03 2011-11-29 Microsoft Corporation Parallel programming and execution systems and techniques
US9189282B2 (en) 2009-04-21 2015-11-17 Empire Technology Development Llc Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter
US8549524B2 (en) 2009-12-23 2013-10-01 Sap Ag Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems
KR20120017294A (ko) * 2010-08-18 2012-02-28 삼성전자주식회사 어플리케이션을 효율적으로 처리하는 스케쥴링 시스템 및 스케쥴링 방법
KR101703328B1 (ko) 2010-11-23 2017-02-07 삼성전자 주식회사 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법
WO2012093496A1 (ja) * 2011-01-07 2012-07-12 富士通株式会社 マルチタスクスケジューリング方法、およびマルチコアプロセッサシステム
US9417935B2 (en) 2012-05-01 2016-08-16 Microsoft Technology Licensing, Llc Many-core process scheduling to maximize cache usage
US9619284B2 (en) 2012-10-04 2017-04-11 Intel Corporation Dynamically switching a workload between heterogeneous cores of a processor
US9317331B1 (en) 2012-10-31 2016-04-19 The Mathworks, Inc. Interactive scheduling of an application on a multi-core target processor from a co-simulation design environment
KR102082859B1 (ko) * 2013-01-07 2020-02-28 삼성전자주식회사 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
KR101684677B1 (ko) 2013-12-26 2016-12-09 한국전자통신연구원 멀티코어 시스템의 시스템 성능 최적화 장치 및 방법
US9578091B2 (en) 2013-12-30 2017-02-21 Microsoft Technology Licensing, Llc Seamless cluster servicing
JP6246603B2 (ja) * 2014-01-21 2017-12-13 ルネサスエレクトロニクス株式会社 タスクスケジューラ機構、オペレーティングシステム及びマルチプロセッサシステム
KR20160004152A (ko) * 2014-07-02 2016-01-12 삼성전자주식회사 멀티 프로세서의 태스크(task) 우선순위 결정 방법 및 이를 구현하는 전자장치
KR102197874B1 (ko) * 2014-09-01 2021-01-05 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
US9424092B2 (en) 2014-09-26 2016-08-23 Microsoft Technology Licensing, Llc Heterogeneous thread scheduling
US9733978B2 (en) * 2015-08-27 2017-08-15 Qualcomm Incorporated Data management for multiple processing units using data transfer costs

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5983623B2 (ja) * 2011-10-21 2016-09-06 日本電気株式会社 タスク配置装置及びタスク配置方法

Also Published As

Publication number Publication date
US20190155785A1 (en) 2019-05-23
US11093441B2 (en) 2021-08-17
KR20190057558A (ko) 2019-05-29

Similar Documents

Publication Publication Date Title
KR102452205B1 (ko) 멀티 코어 제어 시스템
EP3155521B1 (en) Systems and methods of managing processor device power consumption
US9483319B2 (en) Job scheduling apparatus and method therefor
KR102197874B1 (ko) 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
US10013264B2 (en) Affinity of virtual processor dispatching
US20110202918A1 (en) Virtualization apparatus for providing a transactional input/output interface
US20200142754A1 (en) Computing system and method for operating computing system
US9792209B2 (en) Method and apparatus for cache memory data processing
CN115617494B (zh) 多cpu环境下的进程调度方法、装置、电子设备和介质
CN112346557B (zh) 多核系统及其控制操作
US9069621B2 (en) Submitting operations to a shared resource based on busy-to-success ratios
KR20210143611A (ko) 멀티 테넌시를 지원하는 스토리지 장치 및 이의 동작 방법
EP3188028B1 (en) Buffer management method and apparatus
CN112214292A (zh) 多核系统和控制多核系统的操作的方法
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
CN112352225B (zh) 用于实现单核等效观感的多核计算机系统的客户端-服务器架构
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
KR102592330B1 (ko) OpenCL 커널을 처리하는 방법과 이를 수행하는 컴퓨팅 장치
US20140013148A1 (en) Barrier synchronization method, barrier synchronization apparatus and arithmetic processing unit
US10503513B2 (en) Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type
US9251101B2 (en) Bitmap locking using a nodal lock
WO2020122779A1 (en) Methods and nodes for handling memory
CN104268101A (zh) 一种存储空间分配方法及装置

Legal Events

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