KR20160027541A - 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법 - Google Patents
멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법 Download PDFInfo
- Publication number
- KR20160027541A KR20160027541A KR1020140115318A KR20140115318A KR20160027541A KR 20160027541 A KR20160027541 A KR 20160027541A KR 1020140115318 A KR1020140115318 A KR 1020140115318A KR 20140115318 A KR20140115318 A KR 20140115318A KR 20160027541 A KR20160027541 A KR 20160027541A
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- core
- scheduling
- executed
- requested
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5033—Allocation 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 data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
Abstract
본 발명의 실시 예에 따른 멀티-코어 프로세서를 포함하는 시스템 온 칩의 스케줄링 방법은, 상기 멀티-코어 프로세서에서 실행될 쓰레드의 스케줄링 요청을 검출하는 단계, 상기 멀티-코어 프로세서에서 실행 중인 쓰레드들 중에서 상기 스케줄링 요청된 쓰레드와 동일한 컨텍스트를 갖는 콜링 쓰레드를 검출하는 단계, 그리고 상기 동일한 컨텍스트를 갖는 콜링 쓰레드가 실행되는 코어의 성능에 따라 상기 스케줄링 요청된 쓰레드를 실행할 코어를 재할당 또는 재설정하는 단계를 포함한다.
Description
본 발명은 반도체 장치에 관한 것으로, 좀 더 구체적으로는 멀티-코어 프로세서를 구비하는 시스템 온 칩 및 그것의 쓰레드 관리 방법에 관한 것이다.
최근, 스마트폰, 테이블릿 PC, 디지털 카메라, MP3 플레이어, PDA 등과 같은 모바일 장치의 이용이 폭발적으로 증가하고 있다. 이러한 모바일 장치에서도 멀티미디어의 구동 및 각종 데이터의 처리량이 증가하면서, 고속 프로세서 및 대용량 저장 매체의 채용이 확대되고 있다. 모바일 장치에는 다양한 응용 프로그램(Application program)들이 구동된다. 다양한 응용 프로그램들을 구동하기 위하여, 모바일 장치에는 워킹 메모리(예를 들면, DRAM), 불휘발성 메모리, 그리고 응용 프로세서(Application Processor: 이하, AP)와 같은 반도체 장치들이 사용된다. 그리고 모바일 환경에서의 고성능화에 대한 요구에 따라 상술한 반도체 장치들의 집적도 및 구동 주파수는 날로 높아지고 있다.
모바일 장치에는 응용 프로세서(Application Processor)에는 높은 성능을 제공하기 위한 멀티-코어 프로세서(Multi-Core Processor)가 사용되고 있다. 멀티-코어 프로세서는 동종 멀티-코어(Homogenous Multi-core)와 이종 멀티-코어(Heterogeneous Multi-core)로 구분될 수 있다. 동종 멀티-코어 프로세서(Homogenous Multi-core Processor)는 동일한 성능 또는 동일한 사이즈의 멀티-코어(Multi-Core)들이 포함될 수 있다. 이종의 멀티-코어(Heterogeneous Multi-core) 프로세서에는 서로 다른 사이즈 또는 성능의 코어들이 구비된다.
특히, 이종 멀티-코어(Heterogeneous Multi-core)는 태스크 부하에 따라 고성능 클러스터와 저성능 클러스터의 스위칭 방식으로 운용될 수 있다. 더불어, 이종 멀티-코어(Heterogeneous Multi-core)는 서로 다른 클러스터의 코어들이 동시에 복수의 쓰레드를 처리하도록 제어될 수도 있다. 하지만, 특정 동작에서 서로 다른 성능의 코어들이 동시에 구동되는 방식은 클러스터 스위칭 방식에 비해서 상대적으로 성능 열화가 발생할 수도 있다.
본 발명의 목적은 멀티-코어 프로세서를 사용하는 시스템 온 칩 또는 응용 프로세서에서 이종의 코어들이 사용될 때 발생하는 비효율성을 제거할 수 있는 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 멀티-코어 프로세서를 포함하는 시스템 온 칩의 스케줄링 방법은, 상기 멀티-코어 프로세서에서 실행될 쓰레드의 스케줄링 요청을 검출하는 단계, 상기 멀티-코어 프로세서에서 실행 중인 쓰레드들 중에서 상기 스케줄링 요청된 쓰레드와 동일한 컨텍스트를 갖는 콜링 쓰레드를 검출하는 단계, 그리고 상기 동일한 컨텍스트를 갖는 콜링 쓰레드가 실행되는 코어의 성능에 따라 상기 스케줄링 요청된 쓰레드를 실행할 코어를 재할당 또는 재설정하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 시스템 온 칩은, 서로 다른 구동 속도를 갖는 복수의 코어들을 포함하는 멀티-코어 프로세서, 그리고 상기 멀티-코어 프로세서에 의해서 구동되는 운영 체제 및 응용 프로그램이 로드되는 워킹 메모리를 포함하되, 상기 운영 체제는 상기 응용 프로그램에서 발생하는 쓰레드의 스케줄링 요청에 따라 상기 쓰레드가 실행될 코어를 할당하는 스케줄러를 포함하며, 상기 스케줄러는 상기 멀티-코어 프로세서에서 이미 실행중인 복수의 쓰레드들 중에서 상기 스케줄링 요청된 쓰레드와 동일한 컨텍스트를 갖는 쓰레드의 존재 여부에 따라 상기 스케줄링 요청된 쓰레드가 실행될 코어를 선택 또는 설정한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 멀티-코어 프로세서의 쓰레드 스케줄링 방법은, 상기 멀티-코어 프로세서에서 실행 중인 쓰레드들 중에서 동일한 컨텍스트를 공유하는 쓰레드가 존재하는지 검출하는 단계, 동일한 컨텍스트를 공유하는 쓰레드들이 각각 서로 다른 코어들에 분산되어 실행되는지 검출하는 단계, 그리고 상기 동일한 컨텍스트를 공유하는 쓰레드들 중 저속 코어에서 실행되는 쓰레드를 상기 서로 다른 코어들 중에서 고속 코어로 마이그레이션하는 단계를 포함한다.
본 발명에 따른 모바일 장치 및 그것의 제어 방법에 따르면, 멀티-코어 프로세서에서 이종의 코어들이 활성화되는 경우에 발생하는 성능 저하 및 전력 소모를 최소화할 수 있다.
도 1은 본 발명의 실시 예에 따른 모바일 장치를 보여주는 블록도이다.
도 2는 도 1의 멀티-코어 프로세서(110)의 구조를 보여주는 블록도이다.
도 3은 도 1의 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 스케줄러의 동작을 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 스케줄링 방법을 보여주는 순서도이다.
도 6 내지 도 8은 본 발명의 스케줄러에 의한 쓰레드의 코어 선택 또는 설정 방법을 간략히 보여주는 타이밍도들이다.
도 9는 본 발명의 다른 실시 예에 따른 멀티-코어 프로세서의 스케줄링 방법을 보여주는 순서도이다.
도 10은 본 발명의 실시 예에 따른 휴대용 단말기를 도시한 블록도이다.
도 2는 도 1의 멀티-코어 프로세서(110)의 구조를 보여주는 블록도이다.
도 3은 도 1의 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 스케줄러의 동작을 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 스케줄링 방법을 보여주는 순서도이다.
도 6 내지 도 8은 본 발명의 스케줄러에 의한 쓰레드의 코어 선택 또는 설정 방법을 간략히 보여주는 타이밍도들이다.
도 9는 본 발명의 다른 실시 예에 따른 멀티-코어 프로세서의 스케줄링 방법을 보여주는 순서도이다.
도 10은 본 발명의 실시 예에 따른 휴대용 단말기를 도시한 블록도이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다. 동일한 구성 요소들은 동일한 참조번호를 이용하여 인용될 것이다. 유사한 구성 요소들은 유사한 참조번호들을 이용하여 인용될 것이다. 아래에서 설명될 본 발명에 따른 모바일 장치 또는 프로세서에 의해 수행되는 동작은 예를 들어 설명한 것에 불과하며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능하다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 모바일 장치를 보여주는 블록도이다. 도 1을 참조하면, 모바일 장치(100)는 시스템 온 칩(SoC)과 워킹 메모리(130), 액정 표시 장치(152), 터치 패널(154), 저장 장치(170) 등을 포함할 수 있다. 시스템 온 칩(SoC)은 멀티-코어 프로세서(110), 디램 컨트롤러(120), 성능 컨트롤러(140), 사용자 인터페이스 컨트롤러(150), 메모리 인터페이스(160), 가속기(180) 등을 포함할 수 있다. 모바일 장치(100)의 구성 요소들은 도시된 구성 요소들에만 국한되지 않음은 잘 이해될 것이다. 예를 들면, 모바일 장치(100)는 영상 데이터를 처리하기 위한 하드웨어 코덱, 보안 블록 등을 더 포함할 수 있다.
멀티-코어 프로세서(110)는 모바일 장치(100)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. 멀티-코어 프로세서(110)는 워킹 메모리(130)에 로드되는 운영 체제(OS)를 실행할 것이다. 멀티-코어 프로세서(110)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)을 실행할 것이다. 멀티-코어 프로세서(110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다.
본 발명의 멀티-코어 프로세서(110)의 멀티-코어들 각각은 독립된 구동 클록 및 독립된 구동 전압에 의해서 동작하는 복수의 파워 도메인(Power Domain)으로 구성될 수 있다. 그리고 멀티-코어들 각각에 공급되는 구동 전압과 구동 클록을 코어 단위로 차단 또는 연결할 수 있다. 멀티-코어들 각각은 구동 클록의 주파수 및 구동 전압의 레벨은 코어들 각각의 처리 로드에 따라 가변될 수 있다. 즉, 각각의 코어는 부하의 크기에 따라 구동 클록의 주파수나 구동 전압의 레벨을 상승시키는 동적 전압 주파수 스케일링(Dynamic Voltage Frequency Scaling: 이하, DVFS) 방식으로 제어될 수 있다.
특히, 본 발명의 멀티-코어 프로세서(110)에 어느 하나의 쓰레드를 스케줄링할 경우, 고성능의 코어에서 실행되는 쓰레드와 동일한 컨텍스트를 가졌는지 검출된다. 검출 결과, 고성능의 코어에서 실행되는 쓰레드와 컨텍스트를 공유하는 것으로 검출되는 쓰레드는 고성능 코어에서 실행되도록 쓰레드 마이그레이션(Thread migration)이 수행될 수 있다. 이러한 스케줄링은 운영 체제(OS)의 커널(Kernel)에서 수행될 것이다.
디램 컨트롤러(120)는 워킹 메모리(130)와 시스템 온 칩(SoC) 사이에서 인터페이싱을 제공한다. 디램 컨트롤러(120)는 멀티-코어 프로세서(110)나 다른 기능 블록(Intellectual Property: IP)의 요청에 따라 워킹 메모리(130)를 액세스할 것이다. 예를 들면, 디램 컨트롤러(120)는 멀티-코어 프로세서(110)의 쓰기 요청에 따라 데이터를 워킹 메모리(130)에 기입할 수 있다. 또는, 디램 컨트롤러(120)는 멀티-코어 프로세서(110)의 읽기 요청에 따라 워킹 메모리(130)로부터 데이터를 읽어내어 데이터 버스(Data bus)를 통해서 멀티-코어 프로세서(110)나 메모리 인터페이스(160)에 전달할 수 있다.
워킹 메모리(130)에는 부팅시에 운영 체제(OS)나 응용 프로그램들(Application Program)이 로드될 것이다. 예를 들면, 모바일 장치(100)의 부팅시에 저장 장치(170)에 저장된 OS 이미지가 부팅 시퀀스에 의거하여 워킹 메모리(130)로 로드된다. 운영 체제(OS)에 의해서 모바일 장치(100)의 제반 입출력 동작들이 지원될 수 있다. 마찬가지로, 사용자의 의하여 선택되거나 기본적인 서비스 제공을 위해서 응용 프로그램들이 워킹 메모리(130)에 로드될 수 있다. 워킹 메모리(130)는 이뿐 아니라, 카메라와 같은 이미지 센서로부터 제공되는 영상 데이터를 저장하는 버퍼 메모리로 사용될 수도 있을 것이다. 워킹 메모리(130)는 SRAM(Static Random Access Memory)이나 DRAM(Dynamic Random Access Memory)과 같은 휘발성 메모리이거나, PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등의 비휘발성 메모리일 수 있다.
성능 컨트롤러(140)는 운영 체제(OS)의 커널(Kernel)로부터 제공되는 제어 요청에 따라 시스템 온 칩(SoC)의 동작 파라미터들을 조정할 수 있다. 예를 들면, 성능 컨트롤러(140)는 시스템 온 칩(SoC)의 성능을 높이기 위해서 DVFS(Dynamic Voltage Frequency Scaling)의 레벨을 조정할 수 있다. 또는, 성능 컨트롤러(140)는 커널(Kernel)의 요청에 따라 멀티-코어 프로세서(110)의 빅앤리틀(Big.LITTLE)과 같은 구동 모드를 제어할 수 있다. 이때, 성능 컨트롤러(140)는 내부에 구동 전압 및 구동 클록의 주파수를 설정하는 성능 테이블(142)을 포함할 수 있다.
사용자 인터페이스 컨트롤러(150)는 사용자 인터페이스 장치들로부터의 사용자 입력 및 출력을 제어한다. 예를 들면, 사용자 인터페이스 컨트롤러(150)는 멀티-코어 프로세서(110)의 제어에 따라 액정 표시 장치(152)에 데이터를 입력하기 위한 키보드 화면 등을 표시할 수 있다. 또는, 사용자 인터페이스 컨트롤러(150)는 사용자가 요청한 데이터를 표시하도록 액정 표시 장치(152)를 제어할 수 있다. 사용자 인터페이스 컨트롤러(150)는 터치 패널(154)과 같은 사용자 입력 수단으로부터의 제공되는 데이터를 사용자 입력 데이터로 디코딩할 수 있다.
메모리 인터페이스(160)는 멀티-코어 프로세서(110)의 요청에 따라 저장 장치(170)를 액세스한다. 즉, 메모리 인터페이스(160)는 시스템 온 칩(SoC)과 저장 장치(170) 사이의 인터페이스를 제공한다. 예를 들면, 멀티-코어 프로세서(110)에 의해서 처리된 데이터가 메모리 인터페이스(160)를 통해 저장 장치(170)에 저장된다. 다른 예로써, 저장 장치(170)에 저장된 데이터는 메모리 인터페이스(160)를 통해 멀티-코어 프로세서(110)에 제공될 수 있다.
저장 장치(170)는 모바일 장치(100)의 저장 매체(Storage Medium)로서 제공된다. 저장 장치(170)는 응용 프로그램들(Application Program), 운영 체제 이미지(OS Image) 및 각종 데이터를 저장할 수 있다. 저장 장치(170)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)로 제공될 수도 있다. 저장 장치(170)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)를 포함할 수 있다. 또는, 저장 장치(170)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다. 본 발명의 다른 실시 예에서는 저장 장치(170)는 시스템 온 칩(SoC)의 내부에 구비되는 내장 메모리일 수 있다.
가속기(180)는 멀티미디어 또는 멀티미디어 데이터의 처리 속도를 향상하기 위한 별도의 기능 블록(IP)으로 제공될 수 있다. 예를 들면, 가속기(180)는 텍스트(Text), 오디오(Audio), 정지 영상들(Still images), 애니메이션(Animation), 비디오(Video), 2차원 데이터, 또는 3차원 데이터의 처리 성능을 향상시키기 위한 기능 블록(IP)으로 제공될 수 있다.
시스템 인터커넥터(190)는 시스템 온 칩(SoC)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)이다. 시스템 인터커넥터(190)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 워킹 메모리(130)이나 저장 장치(170)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스(Address bus)는 기능 블록들(IPs) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 기능 블록들(IPs) 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 시스템 인터커넥터(190)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
이상의 설명에 따르면, 모바일 장치(100)는 멀티-코어 프로세서(110)에서 서로 다른 코어에서 수행되는 컨텍스트를 공유하는 쓰레드를 검출하고, 검출 결과에 따라 쓰레드의 할당을 변경시킬 수 있다. 따라서, 상호 의존적인 쓰레드들이 서로 다른 코어에서 실행됨에 따라 발생하는 처리 지연이나 전력 소모를 줄일 수 있다.
도 2는 도 1의 멀티-코어 프로세서(110)의 구조를 예시적으로 보여주는 도면이다. 도 2를 참조하면, 이종(Heterogeneous)의 코어들(Cores)을 포함하는 멀티-코어 프로세서(110)가 예시적으로 도시되어 있다. 멀티-코어 프로세서(110)는 제 1 클러스터(112), 제 2 클러스터(114) 그리고 캐시 코히런트 인터커넥터(116)를 포함할 수 있다.
제 1 클러스터(112)는 상대적으로 높은 처리 속도를 제공하지만, 전력 소모가 큰 코어들(BCore_1, BCore_2, BCore_3, BCore_4)을 포함한다. 코어들(BCore_1, BCore_2, BCore_3, BCore_4) 각각은 독립적인 연산이 가능하며, 각각 독립적으로 전원 제어가 가능하다. 즉, 코어(BCore_1)는 전원 전압(VDD11)과 클록(CLK11)을 제공받을 수 있다. 코어(BCore_2)는 전원 전압(VDD12)과 클록(CLK12)을 제공받을 수 있다. 코어(BCore_3)는 전원 전압(VDD13)과 클록(CLK13)을 제공받을 수 있다. 코어(BCore_4)는 전원 전압(VDD14)과 클록(CLK14)을 제공받을 수 있다.
여기서, 전원 전압들(VDD11, VDD12, VDD13, VDD14) 각각은 동일한 레벨로 또는 서로 다른 레벨로 제공될 수 있다. 즉, 어느 하나의 코어는 전원을 제공받아 구동되는 동안에 다른 하나의 코어는 대기 상태나 유휴 상태(Idle), 또는 플러그 아웃 상태로 관리될 수 있다. 클록들(CLK11, CLK12, CLK13, CLK14) 각각도 서로 다른 주파수 또는 동일한 주파수로 관리될 수 있다. 이러한 전원 전압과 클록의 주파수 관리는 DVFS 정책에 따라서 제어될 것이다.
제 2 클러스터(114)는 상대적으로 처리 속도는 낮지만, 높은 전력 효율을 갖는 코어들(LCore_1, LCore_2, LCore_3, LCore_4)을 포함한다. 코어들(LCore_1, LCore_2, LCore_3, LCore_4) 각각은 독립적인 연산 처리가 가능하다. 그리고 코어들(LCore_1, LCore_2, LCore_3, LCore_4) 각각은 코어들(BCore_1, BCore_2, BCore_3, BCore_4)에 비해서 상대적으로 저성능의 프로세서로 구성될 수 있다.
도시된 바와 같이 코어들(LCore_1, LCore_2, LCore_3, LCore_4) 각각은 전원 전압들(VDD21, VDD22, VDD23, VDD24)을 제공받을 수 있다. 전원 전압들(VDD21, VDD22, VDD23, VDD24) 각각은 서로 다른 레벨로 제공될 수 있고, 스케줄링에 의해서 특정 코어의 전원 전압은 차단될 수도 있을 것이다. 코어들(LCore_1, LCore_2, LCore_3, LCore_4) 각각은 클록들(CLK21, CLK22, CLK23, CLK24)을 제공받을 수 있다. 클록들(CLK21, CLK22, CLK23, CLK24) 각각의 주파수는 대응하는 코어의 전원 전압과 연동하여 변화될 수도 있을 것이다. 즉, 클록들(CLK21, CLK22, CLK23, CLK24)의 주파수는 DVFS 방식에 따라 제어될 수 있을 것이다.
여기서, 제 1 클러스터(112)의 적어도 하나의 코어와 제 2 클러스터(114)의 적어도 하나의 코어들은 서로 혼용될 수 있다. 즉, 높은 성능과 전력 효율을 위해서 제 1 클러스터(112)와 제 2 클러스터(114)의 어느 하나의 클러스터만이 선택되는 클러스터 스위칭(Cluster switching)뿐 아니라, 제 1 클러스터(112)의 코어 중 적어도 하나와 제 2 클러스터(114)의 코어들 중 적어도 하나를 동시에 구동할 수 있다. 이러한 방식을 이종 멀티 프로세싱(Heterogeneous Multi-Processing: 이하, HMP라 칭함) 방식이라 한다.
더불어, 제 1 클러스터(112)와 제 2 클러스터(114)에서 활성화된 코어들은 적어도 하나의 쓰레드를 실행할 수 있다. 그리고 코어들(BCore_1, BCore_2, BCore_3, BCore_4)은 동일한 컨텍스트(Context)를 공유하는 쓰레드들을 서로 다른 코어에서 또는 동일한 코어에서 실행할 수 있는 멀티-쓰레드(Multi-thread)를 지원할 수 있다. 멀티-쓰레드는 제 1 클러스터(112)와 제 2 클러스터(114)에 관계없이 적용될 수 있다. 즉, 제 1 클러스터(112)의 어느 하나의 코어가 실행하는 쓰레드와 제 2 클러스터(114)의 다른 하나의 코어가 실행하는 쓰레드가 동일한 컨텍스트(Context)를 가질 수 있다.
캐시 코히런트 인터커넥터(116, CCI)는 클러스터들(112, 114) 간의 태스크 마이그레이션(Task Migration)을 지원한다. 즉, 제 1 클러스터(112)가 비활성화되고, 제 2 클러스터(114)가 활성화되는 경우, 제 1 클러스터(112)의 캐시 데이터들이 제 2 클러스터(114)의 캐시로 이동해야 한다. 더불어, 컨텍스트를 공유하는 쓰레드의 마이그레이션도 동일한 절차에 의해서 수행될 수 있을 것이다. 이러한 클러스터들(112, 114) 간의 데이터 일관성을 제공하기 위한 구조로 캐시 코히런트 인터커넥터(116)가 제공될 것이다.
쓰레드(Thread)는 일반적으로 운영 체제(OS)가 프로세서 시간을 할당하는 기본적인 단위로 간주할 수 있다. 즉, 쓰레드(Thread)는 하나의 프로세스에 포함되는 독립적 처리 단위로 스케줄링의 최소 단위에 해당한다. 일반적으로 하나의 프로세스(Process)는 복수의 쓰레드를 포함할 수 있다. 이러한 쓰레드는 예외 핸들러와 스케줄 우선 순위, 시스템 스케줄에 따른 쓰레드 컨텍스트를 저장하기 위한 구조체 집합을 의미할 수 있다. 쓰레드는 레지스터(Register Set), 커널 스택(Kernel Stack), 사용자 스택 등의 여러 가지 실행 환경 정보를 보관하고 있다. 그리고 이러한 정보들을 컨텍스트(Context)라고 한다. 컨텍스트(Context)는 쓰레드가 작업을 진행하는 동안 작업에 대한 정보를 보관하고 있으며, 다른 쓰레드로 작업 순서가 넘어갈 때 저장된다.
본 발명의 스케줄링 방식에 따르면, 이종(Heterogeneous) 멀티-코어(Multi-Core) 프로세서(110)에서 이종 멀티-프로세싱(HMP) 동작시에 발생하는 비효율성을 차단할 수 있다. 즉, 고성능의 코어에 할당된 쓰레드와 저성능 코어에 할당된 쓰레드가 동일한 컨텍스트(Context)를 공유하는 경우에 이러한 비효율성이 발생할 수 있다. 즉, 고성능의 코어에서 실행되는 쓰레드가 저성능 코어에서 실행되는 쓰레드의 실행 결과를 대기하는 경우에 고성능 코어는 실질적으로는 대기 상태로 존재하면서도 전력 소모는 일정하게 유지하게 된다. 따라서, 컨텍스트를 공유하면서도 서로 다른 성능의 코어들에 쓰레드가 분산되는 경우에는 상술한 비효율성이 발생하게 될 것이다.
본 발명의 멀티-코어 프로세서(110)에 대한 스케줄링 방법에 따르면, 컨텍스트를 공유하는 쓰레드들이 서로 다른 성능의 코어들로 분산되는 상황을 차단할 수 있다. 따라서, 이종 멀티-프로세싱(HMP) 동작시 발생하는 전력 소모와 동작의 지연을 최소화할 수 있다.
도 3은 도 1의 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다. 도 3을 참조하면, 워킹 메모리(130)에 로드되고 멀티-코어 프로세서(110)에 의해서 구동되는 모바일 장치(100)의 소프트웨어 계층 구조는 간략히 응용 프로그램(132)과 커널(Kernel, 134)로 구분될 수 있다. 물론, 운영 체제(OS)에는 메모리나 모뎀, 이미지 처리 장치와 같은 다양한 장치들을 관리하는 장치 드라이버(Device driver)가 더 포함될 수 있을 것이다.
응용 프로그램(132)은 기본적인 서비스로서 구동되거나, 사용자의 요청에 의해서 구동되는 상위 계층의 소프트웨어이다. 응용 프로그램(132)은 복수의 쓰레드들(TH1, TH2, TH3, TH4)을 생성할 수 있다. 응용 프로그램은 특정 작업을 위해서 프로세스(Process)를 생성할 수 있다. 프로세서는 하나 이상의 쓰레드로 구성된다. 예를 들면, 사용자에 의해서 동영상 파일의 재생이 요청되면, 동영상을 재생하기 위한 응용 프로그램(예를 들면, 비디오 플레이어)이 실행된다. 그러면, 실행된 플레이어는 사용자가 요청한 동영상 파일을 재생하기 위한 저장 장치(170)로의 읽기 요청(Read request) 또는 쓰기 요청(Write request)을 생성할 것이다. 이러한 요청들은 프로세서를 구성하고, 각각의 프로세서들은 쓰레드를 실행 단위로 수행될 것이다.
커널(134)은 운영 체제(OS)의 구성으로, 응용 프로그램(132)과 하드웨어(Hardware) 사이에서 제어 동작을 수행한다. 커널(134)은 프로그램의 실행, 인터럽트, 멀티 태스킹, 메모리 관리, 파일 시스템, 그리고 장치 드라이버 등을 포함할 수 있다. 본 발명에서, 커널(134)의 일부로 제공되는 스케줄러(135) 및 CPU 거버너(137)에 대해서만 설명하기로 한다.
스케줄러(135)는 응용 프로그램(132)에서 제공된 쓰레드를 멀티-코어 프로세서(110)의 각 코어들에 할당한다. 스케줄러(135)는 응용 프로그램(132)이나 운영체제에서 발생하는 스케줄링 이벤트를 모니터링할 것이다. 만일, 스케줄링 이벤트가 발생하면, 스케줄러(135)는 스케줄링할 쓰레드의 평균 부하에 따라 복수의 멀티 코어들 중 어느 하나에 할당할 것이다. 그리고 스케줄러(135)는 이미 실행중인 쓰레드들 중에서 스케줄링 요청된 쓰레드와 컨텍스트를 공유하는 것이 존재하는지 검색할 것이다. 만일, 동일한 컨텍스트를 가진 콜링 쓰레드(Calling Thread)가 고성능의 코어에서 실행중인 경우, 스케줄러(135)는 스케줄링 요청된 쓰레드를 콜링 쓰레드와 동일한 코어에서 실행되도록 코어 스위칭을 수행할 것이다. 이러한 일련의 과정을 통해서 본 발명의 스케줄러(135)는 컨텍스트가 동일한 쓰레드들을 동일한 코어 또는 동일한 성능으로 구동되는 코어로 할당할 수 있다. 따라서, 본 발명의 스케줄러(135)를 통해서 동일한 컨텍스트를 갖지만 서로 다른 성능의 코어들에 분산된 쓰레드들에 의해서 발생하는 전력 효율의 저하를 최소화할 수 있다. 본 발명의 스케줄러(135)에 대한 구체적인 구성에 대해서는 후술하는 도 4에서 상세히 설명될 것이다.
CPU 거버너(137)는 커널(134) 내에서 멀티-코어 프로세서(110)의 구동 전압 및 구동 클록을 구할 수 있다. 멀티-코어 프로세서(110)의 구동 전압 및 구동 클록에 따라 구동 클록(CLK)의 주파수나 구동 전압(VDD)의 레벨이 결정될 수 있다. 하지만, 멀티-코어 프로세서(110)의 구동 전압 및 구동 클록은 여기에 개시된 것들에만 국한되지 않음을 잘 이해될 것이다. CPU 거버너(137)는 커널(134)이나 스케줄러(135)의 요청에 따라 멀티-코어 프로세서(110)의 구동 전압과 구동 클록 주파수를 조정할 수 있다. 물론, 커널(134)에서 구동되는 CPU 거버너(137)의 제어에 따라 하드웨어적으로 멀티-코어 프로세서(110)의 구동 클록 주파수나 구동 전압의 레벨을 조정하는 구성이 존재할 수 있다. 예를 들면, 소프트웨어인 커널(134)의 호출에 따라 멀티-코어 프로세서(110)나 다양한 구성들의 구동 클록, 구동 전압을 가변하는 퍼포먼스 컨트롤러(140)가 이러한 멀티-코어 프로세서(110)의 구동 전압 및 구동 클록을 하드웨어적으로 제어할 수 있을 것이다.
이상의 운영 체제(OS)의 커널(134) 계층에서 수행되는 본 발명의 멀티-코어 프로세서의 쓰레드 스케줄링 방법이 간략히 설명되었다. 본 발명의 실시 예에 따르면, 어느 하나의 쓰레드에 대한 스케줄링 이벤트가 발생하면, 동일한 컨텍스트의 쓰레드가 고성능 코어에서 실행되는지 검출된다. 만일, 스케줄링 요청된 쓰레드와 동일한 컨텍스트를 갖는 쓰레드가 고성능 코어에서 구동중인 것으로 검출되면, 스케줄링 요청된 쓰레드는 고성능 코어로 재할당될 수 있다. 따라서, 동일한 컨텍스트를 갖는 쓰레드들이 서로 다른 성능의 코어로 분산되어 발생되는 비효율성을 방지할 수 있다.
도 4는 본 발명의 실시 예에 따른 스케줄러의 동작을 보여주는 블록도이다. 도 4를 참조하면, 스케줄러(135)는 이벤트 발생 모듈(135a), 쓰레드 부하 계산 모듈(135b), 쓰레드 제어 모듈(135c)을 포함할 수 있다. 그리고 스케줄러(135)의 제어에 따라 CPU 거버너(137)는 선택된 쓰레드를 마이그레이션하고, 해당 코어에 대한 구동 전압이나 클록 주파수를 제어할 것이다.
이벤트 발생 모듈(135a)은 응용 프로그램(132)이나 운영체제(OS)에서 발생하는 스케줄링 이벤트를 감지한다. 이벤트 발생 모듈(135a)은 스케줄링을 위한 요청에 응답하여 해당 쓰레드를 미리 정해진 스케줄링 정책에 따라 선택된 코어에 할당하게 될 것이다. 미리 정해진 스케줄링 정책에는 다양한 스케줄링 방식들이 적용될 수 있다. 예를 들면, 쓰레드의 종류나 포함되는 프로세서의 특성에 따라 스케줄링 요청된 쓰레드가 실행될 코어가 할당될 수 있다.
쓰레드 부하 계산 모듈(135b)은 스케줄링 요청된 쓰레드의 평균 부하를 계산한다. 즉, 스케줄링 요청된 쓰레드에 의한 일차적으로 할당된 코어에서의 대기열 크기나 코어의 사용율을 참조하여 평균 부하의 크기를 계산할 수 있을 것이다. 만일, 스케줄링 요청된 쓰레드에 의해서 발생하는 부하의 크기가 기준치보다 큰 경우에는 해당 쓰레드를 고성능의 코어로 재할당해야 할 것이다. 반면, 계산된 평균 부하가 기준치와 같거나 작은 경우, 저성능의 코어가 스케줄링 요청된 쓰레드에 할당될 것이다.
쓰레드 제어 블록(135c)은 본 발명의 실시 예에 따른 동일 컨텍스트를 공유하는 쓰레드를 검색하고, 검색 결과에 따라 스케줄링 요청된 쓰레드를 실행할 코어를 재할당한다. 쓰레드 제어 블록(135c)은 스케줄링 요청된 쓰레드와 컨텍스트를 공유하는 쓰레드를 검출하고, 검출 결과를 참조하여 스케줄링 요청된 쓰레드를 실행할 코어를 재할당하기 위해, 쓰레드 컨텍스트 분류 모듈(135c_1), 쓰레드 상태 검출 모듈(135c_2) 그리고 불균형 상태 체크 모듈(135c_3)을 포함할 수 있다.
쓰레드 컨텍스트 분류 모듈(135c_1)은 스케줄링 요청된 쓰레드와 동일한 컨텍스트를 갖는 쓰레드를 검색한다. 즉, 쓰레드 컨텍스트 분류 모듈(135c_1)은 스케줄링 이벤트에 해당하는 쓰레드와 자원을 공유하는 쓰레드들이 존재하는지 검출하게 될 것이다. 이러한 검출을 위해서 쓰레드 컨텍스트 분류 모듈(135c_1)은 메모리 자원 내에서 쓰레드 레지스터, 커널 스택, 사용자 스택 등의 컨텍스트 정보를 검색할 것이다. 그리고 동일한 컨텍스트 정보를 갖는 쓰레드가 존재하는지 여부를 쓰레드 상태 검출 모듈(135c_2)에 알려줄 수 있다.
쓰레드 상태 검출 모듈(135c_2)은 스케줄링 요청된 쓰레드와 컨텍스트를 공유하는 쓰레드의 상태를 검출한다. 쓰레드 상태 검출 모듈(135c_2)은 컨텍스트를 공유하는 쓰레드가 실행되는 코어의 종류, 코어의 전압이나 클록 주파수, 코어의 상태 등을 검출하게 될 것이다. 예를 들면, 쓰레드 상태 검출 모듈(135c_2)은 컨텍스트를 공유하는 코어가 고성능 모드로 구동되는지, 또는 저성능 모드로 구동중인지를 검출할 수 있다. 또는, 쓰레드 상태 검출 모듈(135c_2)은 이종 멀티 프로세싱 동작에서 컨텍스트를 공유하는 콜링 쓰레드(Calling Thread)가 빅 코어(big Core)에서 실행되고 있는지 또는 리틀 코어(LITTLE Core)에서 실행되고 있는지를 검출할 수 있다. 만일, 컨텍스트를 공유하는 콜링 쓰레드(Calling Thread)가 저성능의 리틀 코어(LITTLE Core)에서 실행 중인 경우에는, 스케줄링 요청된 쓰레드의 코어 재할당은 실행되지 않아도 된다. 하지만, 컨텍스트를 공유하는 콜링 쓰레드(Calling Thread)가 빅 코어(big Core) 또는 고성능 코어에서 실행중이고, 스케줄링 요청된 쓰레드가 저성능 또는 리틀 코어(LITTLE Core)에서 실행중이라면, 스케줄링 요청된 쓰레드의 코어 재할당이 발생할 것이다.
불균형 상태 검출 모듈(135c_3)은 쓰레드 컨텍스트 분류 모듈(135c_1)과 쓰레드 상태 검출 모듈(135c_2)로부터 제공되는 정보를 참조하여 스케줄링 요청된 쓰레드가 전력 효율이나 성능 저하의 원인이 되는지 판단한다. 현재 스케줄링 요청된 쓰레드가 저성능 코어에서 실행되고, 컨텍스트를 공유하는 콜링 쓰레드가 고성능 코어에서 실행되는 것으로 검출된 것으로 가정하다. 그러면 불균형 상태 검출 모듈(135c_3)은 스케줄링 요청된 쓰레드를 고성능의 코어에서 실행되도록 스위칭을 수행할 수 있다. 반면, 스케줄링 요청된 쓰레드가 고성능 코어에서 실행되고 있는 것으로 검출되면, 불균형 상태 검출 모듈(135c_3)은 컨텍스트를 공유하는 콜링 쓰레드의 실행 위치에 관계없이 현재의 쓰레드 할당 상태를 유지하도록 CPU 거버너(137)를 제어할 수 있을 것이다.
CPU 거버너 블록(137)은 상향 마이그레이터(137a), 하향 마이그레이터(137b) 그리고 DVFS 매니저(137c) 등을 포함할 수 있다. CPU 거버너 블록(137)은 스케줄러(135)에서 결정된 방식에 따라 본 발명의 쓰레드 재할당을 수행할 수 있다. 상향 마이그레이터(137a)는 스케줄러(135)의 제어에 따라 스케줄링 요청된 쓰레드를 현재의 코어보다 고성능의 코어에서 실행되도록 쓰레드의 할당을 조정할 수 있다. 반면, 하향 마이그레이터(137b)는 스케줄러(135)의 제어에 따라 스케줄링 요청된 쓰레드를 현재의 코어보다 저성능의 코어에서 실행되도록 쓰레드의 할당을 조정할 수 있다. 더불어, DVFS 매니저(137c)는 스케줄러(135)의 제어에 따라 멀티-코어 프로세서(110)의 클러스터들 각각의 구동 전압이나 구동 클록의 주파수를 제어할 수 있다. 즉, 대기열에 누적된 태스크들의 수가 증가하는 경우, DVFS 매니저(137c)는 멀티-코어 프로세서(110)의 구동 전압과 구동 클록의 주파수를 유기적으로 상향시킬 수 있다. 하지만, DVFS 매니저(137c)는 반대의 경우에 대해서도 동일하게 적용될 수 있다.
도 5는 본 발명의 일 실시 예에 따른 멀티-코어 프로세서의 스케줄링 방법을 간략히 보여주는 순서도이다. 도 5를 참조하면, 주기적으로 발생하는 쓰레드의 스케줄링 이벤트들 중 하나의 쓰레드에 대한 처리 과정이 간략히 설명되어 있다. 어느 하나의 쓰레드에 대한 스케줄링 이벤트가 발생하면, 컨텍스트를 공유하는 다른 쓰레드들에 대한 검색이 진행되고, 검색 결과에 따라 스케줄링 요청된 쓰레드가 실행될 코어가 결정될 수 있다.
S110 단계에서, 스케줄러(135, 도 3 참조)는 주기적으로 발생하는 쓰레드의 스케줄링 이벤트를 모니터링하고 검출하게 될 것이다. 여기서, 설명의 편의를 위해서 어느 하나의 쓰레드에 대한 스케줄링 절차를 설명하기로 한다.
S120 단계에서, 스케줄러(135)가 스케줄링 이벤트를 검출하면(Yes 방향) 절차는 S130 단계로 이동한다. 반면, 스케줄링 이벤트의 발생이 검출되지 않으면(No 방향), 절차는 S110 단계로 복귀하여 이벤트 발생을 지속적으로 모니터링할 것이다.
S130 단계에서, 스케줄러(135)는 스케줄링 요청된 쓰레드의 컨텍스트를 추출하여 동일한 컨텍스트를 갖는 쓰레드를 검색할 것이다. 스케줄러(135)는 쓰레드 풀(Thread pool)에 존재하는 복수의 쓰레드들에 대한 컨텍스트의 비교를 수행한다. 예를 들면, 스케줄러(135)는 쓰레드 레지스터, 커널 스택이나 사용자 스택 등의 쓰레드에 대한 실행 정보를 검색하여 스케줄링 요청된 쓰레드의 컨텍스트와 비교할 수 있다.
S140 단계에서, 스케줄러(135)는 쓰레드 풀(Thread pool)에 존재하는 쓰레드들의 컨텍스트 중에서 스케줄링 요청된 쓰레드의 컨텍스트와 동일한 것이 존재하는지 판단할 것이다. 만일, 현재 실행중인 쓰레드들 중에서 스케줄링 요청된 쓰레드의 컨텍스트와 동일한 것이 존재하는 것으로 판단되면(Yes 방향), 절차는 S160 단계로 이동한다. 반면, 현재 실행중인 쓰레드들 중에서 스케줄링 요청된 쓰레드의 컨텍스트와 동일한 것이 존재하지 않는 것으로 판단되면(No 방향), 절차는 S150 단계로 이동한다.
S150 단계에서, 현재 실행중인 쓰레드들 중에서 스케줄링 요청된 쓰레드의 컨텍스트를 공유하는 것이 존재하지 않으므로, 계산된 평균 부하의 크기에 따라 코어를 할당할 것이다. 즉, 스케줄링 요청된 쓰레드의 특성을 고려하여 이미 결정된 스케줄링 정책에 따라 어느 하나의 코어를 할당하게 될 것이다.
S160 단계에서, 스케줄러(135)는 스케줄링 요청된 쓰레드를 실행하고 있는 코어가 컨텍스트를 공유하는 콜링 쓰레드를 실행하는 코어보다 저성능인지 판단하게 될 것이다. 예를 들면, 스케줄러(135)는 스케줄링 요청된 쓰레드와 동일한 컨텍스트를 갖는 콜링 쓰레드가 빅 코어(big Core)에서 구동되고, 스케줄링 요청된 쓰레드는 리틀 코어(LITTLE Core)에서 실행되고 있는지 결정할 수 있다. 만일, 스케줄링 요청된 쓰레드를 실행하고 있는 코어가 컨텍스트를 공유하는 콜링 쓰레드를 실행하는 코어보다 고성능에 해당하면(No 방향), 요청된 스케줄링을 위한 제반 절차는 종료될 것이다. 반면, 스케줄링 요청된 쓰레드를 실행하고 있는 코어가 컨텍스트를 공유하는 콜링 쓰레드를 실행하는 코어보다 저성능에 해당하면(Yes 방향), 절차는 S170 단계로 이동한다.
S170 단계에서, 스케줄러(135)는 스케줄링 요청된 쓰레드를 실행할 코어에 대한 재할당 또는 재설정을 수행할 수 있다. 예를 들면, 스케줄러(135)는 스케줄링 요청된 쓰레드를 저성능의 코어에서 고성능의 코어로 스위칭할 수 있을 것이다. 바람직하게는 콜링 쓰레드가 실행되는 고성능 코어에 스케줄링 요청된 쓰레드를 할당할 수도 있을 것이다. 또는, 스케줄링 요청된 쓰레드를 실행하고 있는 코어의 성능을 향상시키는 조작도 가능하다. 즉, 스케줄링 요청된 쓰레드를 현재 실행하고 있는 코어의 전압이나 클록 주파수를 콜링 쓰레드를 수행하는 코어와 동일하게 조정할 수도 있을 것이다. 하지만, 스케줄링 요청된 쓰레드에 대한 재설정 방법은 여기의 개시에만 국한되지 않음은 잘 이해될 것이다.
S180 단계에서, 스케줄링 요청된 쓰레드에 대한 코어 재할당 또는 재설정이 완료되면, 재할당 또는 재설정된 코어에서 스케줄링 요청된 쓰레드를 실행할 것이다. 만일, 스케줄링 요청된 쓰레드와 콜링 쓰레드가 동일한 고성능 코어에서 실행된다면, 어느 하나의 쓰레드에서 다른 하나의 쓰레드의 동작 완료 시점을 기다리는 상황은 발생하지 않을 것이다.
이상에서 본 발명의 개략적인 스케줄링 방법이 설명되었다. 이종 멀티-쓰레드 방식의 코어를 제어하기 위해서, 스케줄링 이벤트가 발생하면 컨텍스트를 공유하는 쓰레드의 존재 유무가 검출될 것이다. 그리고 검출 결과에 따라 스케줄링 요청된 쓰레드를 고성능 코어로 재할당할지가 결정된다. 이러한 쓰레드의 관리 방법에 따라 컨텍스트를 공유하는 쓰레드들이 서로 다른 성능의 코어들에 분산되어 발생하는 비효율성은 차단될 수 있다.
도 6 내지 도 8은 본 발명의 스케줄러에 의한 쓰레드의 코어 선택 또는 설정 방법을 간략히 보여주는 타이밍도들이다. 도 6 내지 도 7은 스케줄링 요청된 쓰레드에 대한 코어 재할당 방법을 도시하고 있고, 도 8은 스케줄링 요청된 쓰레드가 실행되는 코어의 재설정 방법을 도시하고 있다. 여기서, 멀티-코어 프로세서는 예시적으로 빅앤리틀(big.LITTLE) 구조의 이종 멀티-코어 프로세서를 예시적으로 나타내었다. 하지만, 본 발명의 이점은 서로 다른 성능이나 구동 속도로 제어될 수 있는 다양한 멀티-코어 프로세서에 적용될 수 있음은 잘 이해될 것이다.
도 6은 스케줄링 요청된 쓰레드의 상향 마이그레이션(Up Migration)을 예시적으로 보여준다. 도 6을 참조하면, 스케줄링 이벤트에 의해서 스케줄링 요청된 제 3 쓰레드(TH3)가 저성능의 코어에서 고성능의 코어로 상향 마이그레이션 절차에 따라서 재할당된다.
제 1 쓰레드(TH1)는 고속의 빅 코어(BCore1)에서 실행되고, 제 2 쓰레드(TH2)는 고속으로 구동되는 빅 코어(BCore2)에서, 그리고 제 4 쓰레드(TH4)는 저속으로 구동되는 리틀 코어(LCore2)에서 각각 실행되고 있다고 가정하자. 그리고 스케줄링 요청된 제 3 쓰레드(TH3)는 제 1 쓰레드(TH1)와 컨텍스트를 공유하는 것으로 가정하기로 한다.
시점 (t0)에서 스케줄링 이벤트가 발생하고, 스케줄링 정책에 따라 제 3 쓰레드(TH3)가 생성된다. 생성된 제 3 쓰레드(TH3)는 우선적으로 리틀 코어(LCore1)에 할당되어 실행될 것이다. 그러면, 스케줄러(135)의 쓰레드 부하 계산 모듈(135b)은 리틀 코어(LCore1)에서 실행되는 제 3 쓰레드(TH3)의 평균 부하를 계산할 것이다. 더불어, 스케줄러(135)는 제 3 쓰레드(TH3)와 동일한 컨텍스트를 갖는 쓰레드가 현재 실행중인 쓰레드들 중에서 존재하는지 검색할 것이다. 스케줄러(135)는 제 3 쓰레드(TH3)와 동일한 컨텍스트를 갖는 제 1 쓰레드(TH1)가 존재함을 검출하게 될 것이다. 스케줄러(135)는 제 1 쓰레드(TH1)가 실행되는 코어가 고속의 코어인지, 저속의 코어인지 검출할 것이다. 그리고 스케줄러(135)는 제 1 쓰레드(TH1)와 제 3 쓰레드(TH3)가 서로 다른 코어에서 실행됨에 따라 발생하는 동작의 비효율성이 존재하는지 판단할 것이다. 판단 결과에 따라, 스케줄러(135)는 제 3 쓰레드(TH3)가 실행될 코어를 고속의 빅코어(BCore1)로 재할당하게 될 것이다.
시점(t1)부터는 제 3 쓰레드(TH3)가 제 1 쓰레드(TH1)와 함께 빅 코어(BCore1)에서 실행될 것이다. 즉, 제 3 쓰레드(TH3)는 저속의 리틀 코어(LCore1)에서 고속의 빅 코어(BCore1)로 상향 마이그레이션 처리된다. 동일한 컨텍스트를 갖는 제 1 쓰레드(TH1)와 제 3 쓰레드(TH3)는 동일한 코어에서 실행되기 때문에, 제 3 쓰레드(TH3)의 응답 지연에 따른 빅 코어(BCore1)의 대기 상황은 방지될 수 있다. 더불어, 리틀 코어(LCore1)에서 실행되는 쓰레드가 존재하지 않는다면, 리틀 코어(LCore1)는 핫플러그 아웃으로 관리될 수 있을 것이다.
이상의 도 6의 타이밍도에 따르면, 컨텍스트를 공유하는 쓰레드들이 고속의 코어와 저속의 코어에서 분산되어 처리되는 경우, 본 발명의 스케줄러(135)는 저속의 코어에서 실행되는 쓰레드를 고속의 코어에서 실행되도록 스케줄링한다. 특히, 동일한 코어에 컨텍스트를 공유하는 쓰레드들이 실행되도록 설정하면, 동작 속도의 향상 및 전력 효율이 극대화될 수 있다.
도 7은 스케줄링 요청된 쓰레드가 콜링 쓰레드가 실행되는 코어가 아닌 다른 코어로의 상향 마이그레이션(Up Migration)을 예시적으로 보여준다. 도 7을 참조하면, 스케줄링 요청된 제 3 쓰레드(TH3)는 저성능의 코어(LCore1)에서 고성능의 코어(BCore2)로 상향 마이그레이션된다. 즉, 콜링 쓰레드에 대응하는 제 1 쓰레드(TH1)와는 다른 코어로 제 3 쓰레드(TH3)가 이동한다.
제 1 쓰레드(TH1)는 고속의 빅 코어(BCore1)에서 실행되고, 제 2 쓰레드(TH2)는 고속으로 구동되는 빅 코어(BCore2)에서, 그리고 제 4 쓰레드(TH4)는 저속으로 구동되는 리틀 코어(LCore2)에서 각각 실행되고 있다고 가정하자. 그리고 스케줄링 요청된 제 3 쓰레드(TH3)는 제 1 쓰레드(TH1)와 컨텍스트를 공유하는 것으로 가정하기로 한다.
시점(t0)에서 스케줄링 이벤트가 발생하고, 스케줄링 정책에 따라 제 3 쓰레드(TH3)가 생성된다. 생성된 제 3 쓰레드(TH3)는 우선적으로 리틀 코어(LCore1)에 할당되어 실행될 것이다. 그러면, 스케줄러(135)는 제 3 쓰레드(TH3)와 동일한 컨텍스트를 갖는 쓰레드가 현재의 쓰레드 풀에 존재하는지 검색할 것이다. 스케줄러(135)는 제 3 쓰레드(TH3)와 동일한 컨텍스트를 갖는 제 1 쓰레드(TH1)가 존재함을 검출하게 될 것이다. 스케줄러(135)는 제 1 쓰레드(TH1)가 실행되는 코어가 고속의 코어인지, 저속의 코어인지 검출할 것이다. 그리고 스케줄러(135)는 제 1 쓰레드(TH1)와 제 3 쓰레드(TH3)가 서로 다른 코어에서 실행됨에 따라 발생하는 동작의 비효율성이 존재하는지 판단할 것이다. 판단 결과에 따라, 스케줄러(135)는 제 3 쓰레드(TH3)를 실행할 코어로 고속의 빅 코어(BCore2)로 재할당하게 될 것이다.
시점(t1)부터, 제 3 쓰레드(TH3)는 빅 코어(BCore2)에서 실행될 것이다. 즉, 제 3 쓰레드(TH3)는 저속의 리틀 코어(LCore1)에서 고속의 빅 코어(BCore2)로 상향 마이그레이션된다. 하지만, 제 3 쓰레드와 제 1 쓰레드(TH1)는 처리 속도는 동일하지만, 서로 다른 빅 코어들(BCore1, BCore2)에서 각각 실행될 것이다.
동일한 컨텍스트를 갖는 제 1 쓰레드(TH1)와 제 3 쓰레드(TH3)는 동일한 성능 또는 구동 속도를 갖는 코어들(BCore1, BCore2)에서 실행되기 때문에, 제 3 쓰레드(TH3)의 응답 지연에 따른 처리 지연은 최소화될 수 있다. 더불어, 리틀 코어(LCore1)에서 실행되는 쓰레드가 더 이상 남아있지 존재하지 않는다면, 리틀 코어(LCore1)는 핫플러그 아웃으로 관리될 수 있을 것이다.
컨텍스트를 공유하는 쓰레드가 콜링 쓰레드와 다른 코어에 상향 마이그레이션되는 예가 설명되었다. 이러한 경우는 예를 들면, 콜링 쓰레드(TH1)가 실행되는 고속의 코어에 이미 상대적으로 많은 수의 멀티-쓰레드가 실행되고 있는 경우일 수 있다. 즉, 콜링 쓰레드(TH1)와 동일한 코어에 스케줄링 요청된 쓰레드(TH3)를 마이그레이션하기 어려운 상태일 때, 스케줄러(135)는 차선책으로 동일한 속도의 다른 코어를 선택할 수 있을 것이다. 동일한 속도의 다른 코어에 스케줄링 요청된 쓰레드(TH3)가 이동하면, 제 3 쓰레드(TH3)의 처리 지연에 따른 문제는 해결될 수 있다.
이상에서는 컨텍스트를 공유하는 쓰레드들이 고속의 코어와 저속의 코어에서 분산되어 처리되는 경우, 저속의 코어에서 실행되는 쓰레드가 콜링 쓰레드가 실행되는 코어가 아닌 다른 코어로 상향 마이그레이션될 수 있음이 설명되었다. 특히, 동일한 성능의 코어에서 컨텍스트를 공유하는 쓰레드들이 실행되도록 설정하면, 어느 하나의 쓰레드의 응답 지연에 따른 성능 저하나 전력 비효율성은 해결될 수 있을 것이다.
도 8은 스케줄링 요청된 쓰레드의 마이그레이션 없이 응답 속도를 높이기 위한 예시적인 방법을 보여주는 타이밍도이다. 도 8을 참조하면, 스케줄링 요청된 제 2 쓰레드(TH2)는 이미 빅 코어(BCore2)에 할당되고, 컨텍스트를 공유하는 제 1 쓰레드(TH1)는 빅 코어(BCore1)에서 실행되고 있다. 하지만, 제 2 쓰레드(TH2)가 실행되는 빅 코어(BCore2)의 동작 모드가 저속 모드로 구동되고 있다고 가정한다.
시점(t0)에서 스케줄링 이벤트가 발생하고, 스케줄링 정책에 따라 제 2 쓰레드(TH2)가 생성된다. 생성된 제 2 쓰레드(TH2)는 우선적으로 빅 코어(BCore2)에 할당되어 실행될 것이다. 그러면, 스케줄러(135)는 제 2 쓰레드(TH2)와 동일한 컨텍스트를 갖는 쓰레드가 현재의 쓰레드 풀에 존재하는지 검색할 것이다. 스케줄러(135)는 제 2 쓰레드(TH2)와 동일한 컨텍스트를 갖는 제 1 쓰레드(TH1)가 존재함을 검출하게 될 것이다. 스케줄러(135)는 제 1 쓰레드(TH1)가 실행되는 코어가 고속의 코어인지, 저속의 코어인지 검출할 것이다. 그리고 스케줄러(135)는 제 1 쓰레드(TH1)와 제 2 쓰레드(TH2)가 서로 다른 코어에서 실행됨에 따라 발생하는 동작의 비효율성이 존재하는지 판단할 것이다. 판단 결과에 따라, 스케줄러(135)는 제 2 쓰레드(TH2)를 실행할 다른 코어를 선택할지, 현재의 코어를 유지할지 결정할 것이다. 제 2 쓰레드(TH2)가 빅 코어(BCore2)에서 실행되고 있으므로 스케줄러(135)는 동작의 비효율성을 개선하기 위해서 저속 모드로 구동되는 빅 코어(BCore2)의 모드를 고속 모드로 스위칭하도록 결정할 것이다.
시점(t1)부터, 제 2 쓰레드(TH2)는 마이그레이션 없이 빅 코어(BCore2)에서 실행될 것이다. 다만, 스케줄러(135)의 제어에 따라 CPU 거버너(137)는 빅 코어(BCore2)의 클록 주파수 및 전원 전압의 레벨을 상향시킬 것이다. 즉, 스케줄러(135)는 DVFS 제어를 통해서 빅 코어(BCore2)의 처리 속도를 빅 코어(BCore1)와 동일하게 전환하게 될 것이다.
동일한 컨텍스트를 갖는 제 1 쓰레드(TH1)와 제 2 쓰레드(TH2)가 동일한 성능 또는 처리 속도를 갖는 코어들(BCore1, BCore2)에서 각각 실행되기 때문에, 제 2 쓰레드(TH2)의 응답 지연에 따른 처리 지연은 최소화될 수 있다.
도 9는 본 발명의 다른 실시 예에 따른 멀티-코어 프로세서의 스케줄링 방법을 간략히 보여주는 순서도이다. 도 9를 참조하면, 하나의 쓰레드에 대한 스케줄링 이벤트를 처리하는 절차를 통해서 본 발명의 이점이 설명될 것이다. 하나의 쓰레드에 대한 스케줄링 이벤트가 발생하면, 컨텍스트를 공유하는 쓰레드들의 존재 여부가 검출되고, 검출 결과에 따라 스케줄링 요청된 쓰레드의 마이그레이션 여부가 결정될 수 있다. 좀더 자세히 설명하면 다음과 같다.
S205 단계에서, 스케줄러(135, 도 3 참조)는 주기적으로 발생하는 쓰레드의 스케줄링 이벤트를 모니터링하고 검출하게 될 것이다.
S210 단계에서, 스케줄러(135)가 스케줄링 이벤트가 발생한 것을 검출하면(Yes 방향) 절차는 S215 단계로 이동한다. 반면, 스케줄링 이벤트의 발생이 검출되지 않으면(No 방향), 절차는 S205 단계로 복귀하여 이벤트 발생을 지속적으로 모니터링할 것이다.
S215 단계에서, 스케줄러(135)는 스케줄링 이벤트가 발생한 쓰레드들 중에서 어느 하나를 선택할 것이다. 그리고 선택된 쓰레드는 특정 스케줄링 정책에 따라 또는 미리 결정된 우선 순위에 따라 복수의 코어들 중 어느 하나에 할당될 것이다.
S220 단계에서, 스케줄러(135)는 스케줄링 요청된 어느 하나의 쓰레드에 대해서 평균 부하를 계산할 것이다. 평균 부하를 계산하는 방식에는 다양한 방법이 사용될 수 있으며, 이러한 평균 부하의 계산 예는 도 5에서 예시적으로 설명되었으므로 이하에서는 생략하기로 한다.
S225 단계에서, 스케줄러(135)는 현재 스케줄링 요청된 쓰레드가 저속 코어 또는 리틀 코어(LITTLE Core)에서 실행되고 있는지 판단한다. 만일, 스케줄링 요청된 쓰레드가 저속 코어 또는 리틀 코어(LITTLE Core)에서 실행중인 경우, 절차는 S245 단계로 이동한다. 반면, 스케줄링 요청된 쓰레드가 고속 코어 또는 빅 코어(big Core)에서 실행중인 경우, 평균 부하에 따라 코어 재할당을 수행하기 위한 S245 단계로 이동한다.
S230 단계에서, 스케줄러(135)는 스케줄링 요청된 쓰레드의 컨텍스트와 동일한 컨텍스트를 갖는 쓰레드를 검색할 것이다. 스케줄러(135)는 쓰레드 풀(Thread pool)에 존재하는 복수의 쓰레드들에 대한 컨텍스트의 비교를 수행한다. 예를 들면, 스케줄러(135)는 멀티-쓰레딩을 수행하기 위한 동일한 쓰레드 그룹(또는, 쓰레드 풀)에서 쓰레드 레지스터, 커널 스택이나 사용자 스택 등의 쓰레드에 대한 실행 정보를 검색하여 스케줄링 요청된 쓰레드의 컨텍스트와 비교할 수 있다.
S235 단계에서, 스케줄러(135)는 실행중인 쓰레드들 중에서 스케줄링 요청된 쓰레드의 컨텍스트를 공유하는 것이 존재하는지 판단할 것이다. 만일, 현재 실행중인 쓰레드들 중에서 스케줄링 요청된 쓰레드의 컨텍스트와 동일한 것이 존재하는 것으로 판단되면(Yes 방향), 절차는 S240 단계로 이동한다. 반면, 현재 실행중인 쓰레드들 중에서 스케줄링 요청된 쓰레드의 컨텍스트와 동일한 것이 존재하지 않는 것으로 판단되면(No 방향), 절차는 S245 단계로 이동한다.
S240 단계에서, 스케줄러(135)는 스케줄링 요청된 쓰레드의 컨텍스트를 공유하는 쓰레드가 고속 코어 또는 빅 클러스터에서 실행되는지 판단한다. 만일, 컨텍스트를 공유하는 쓰레드가 고속 코어나 빅 클러스터가 아닌 코어에서 실행되고 있다면, 절차는 추가적으로 쓰레드를 검출하기 위한 S230 단계로 이동한다. 반면, 컨텍스트를 공유하는 쓰레드가 고속 코어나 빅 클러스터에서 실행되고 있다면, 절차는 S270 단계로 이동한다.
S245 단계에서, 스케줄러(135)는 S220 단계에서 계산된 스케줄링 요청된 쓰레드에 대해서 평균 부하의 값을 기초로 실행 코어를 선택할 것이다. 예를 들면, 평균 부하가 상한 기준치(uTH)를 초과하면, 절차는 고속 또는 빅 코어를 선택하기 위한 S270 단계로 이동한다. 반면, 평균 부하가 상한 기준치(uTH) 이하이면, 절차는 S250 단계로 이동한다.
S250 단계에서, 스케줄링 요청된 쓰레드의 평균 부하가 하한 기준치(dTH)와 같거나 크면(No), 절차는 현재 할당된 코어나 클러스터를 유지하기 위하여 S255 단계로 이동한다. 반면, 스케줄링 요청된 쓰레드의 평균 부하가 하한 기준치(dTH) 미만(Yes)이면, 절차는 저속 또는 리틀 코어를 선택하기 위한 S260 단계로 이동한다.
S255 단계는 특정 정책에 따라 스케줄링 요청된 쓰레드가 임시적으로 실행되는 코어 또는 클러스터의 할당을 유지하는 것을 나타낸다. S260 단계는 특정 정책에 따라 스케줄링 요청된 쓰레드를 실행하기 위한 코어 또는 클러스터로 저속 또는 리틀 클러스터를 선택하는 절차를 보여준다. S270 단계는 특정 정책에 따라 스케줄링 요청된 쓰레드를 실행하기 위한 코어 또는 클러스터로 고속 또는 빅 클러스터를 선택하는 절차를 보여준다.
S280 단계에서, 스케줄러(135)는 컨텍스트를 공유하는 쓰레드를 참조하여 선택된 코어 또는 클러스터에서 스케줄링 요청된 쓰레드를 실행하도록 제어할 것이다.
이상에서 본 발명의 개략적인 스케줄링 방법이 설명되었다. 이종 멀티-쓰레드 방식의 코어 제어에 있어서, 스케줄링 이벤트가 발생하면 컨텍스트를 공유하는 쓰레드의 존재 유무가 검출될 것이다. 그리고 검출 결과에 따라 스케줄링 요청된 쓰레드를 고속 또는 빅 클러스터로 재할당할지가 결정된다. 이러한 쓰레드의 관리 방법에 따라 컨텍스트를 공유하는 쓰레드들이 서로 다른 성능의 코어들에 분산되어 발생하는 비효율성은 차단될 수 있다.
도 10은 본 발명의 실시 예에 따른 휴대용 단말기를 나타내는 블록도이다. 도 14를 참조하면, 본 발명의 실시 예에 따른 휴대용 단말기(1000)는 이미지 처리부(1100), 무선 송수신부(1200), 오디오 처리부(1300), 이미지 파일 생성부(1400), 불휘발성 메모리 장치(1500), 사용자 인터페이스(1600), 그리고 컨트롤러(1700)를 포함한다.
이미지 처리부(1100)는 렌즈(1110), 이미지 센서(1120), 이미지 프로세서(1130), 그리고 디스플레이부(1140)를 포함한다. 무선 송수신부(1210)는 안테나(1210), 트랜시버(1220), 모뎀(1230)을 포함한다. 오디오 처리부(1300)는 오디오 프로세서(1310), 마이크(1320), 그리고 스피커(1330)를 포함한다.
여기서, 불휘발성 메모리 장치(1500)는 본 발명의 실시 예에 따른 메모리 카드(MMC, eMMC, SD, micro SD) 등으로 제공될 수 있다. 더불어, 컨트롤러(1700)는 응용 프로그램, 운영 체제 등을 구동하는 시스템 온 칩(SoC)으로 제공될 수 있다. 시스템 온 칩(SoC)에서 구동되는 운영 체제의 커널(Kernel)에는 본 발명의 실시 예에 따라 쓰레드를 관리하는 스케줄러와 CPU 거버너가 포함될 수 있다. 커널에 의해서 서로 다른 성능의 코어들이 동시에 활성화되는 프로세서들에 컨텍스트를 공유하는 쓰레드들이 분산되는 동작 상태를 차단하거나 바로잡을 수 있다. 따라서, 이종 멀티-프로세싱을 수행하는 응용 프로세서의 전력 또는 처리 속도의 효율을 높일 수 있을 것이다.
본 발명에 따른 시스템 온 칩 그리고/또는 멀티-코어 프로세서는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장 될 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100 : 모바일 장치
110 : CPU
112 : 제 1 클러스터 114 : 제 2 클러스터
116 : 캐시 코히런트 인터페이스
120 : 디램 컨트롤러 130 : 워킹 메모리
132 : 응용 프로그램 134 : 커널
135 : 스케줄러 137: CPU 거버너
140 : 성능 컨트롤러 150 : UI 컨트롤러
152 : 액정 표시 장치 154 : 터치 패널
160 : 메모리 인터페이스 170 : 저장 장치
180 : 가속기 190 : 시스템 인터커넥터
1000 : 휴대용 단말기 1100 : 이미지 처리부
1110 : 렌즈 1120 : 이미지 센서
1130 : 이미지 프로세서 1140 : 디스플레이 유닛
1200 : 무선 송수신부 1210 : 안테나
1220 : 송수신기 1230 : 모뎀
1300 : 오디오 처리부 1310 : 오디오 프로세서
1320 : 마이크 1330 : 스피커
1400 : 이미지 파일 생성부 1500 : 불휘발성 메모리 장치
1600 : 유저 인터페이스 1700 : 컨트롤러
112 : 제 1 클러스터 114 : 제 2 클러스터
116 : 캐시 코히런트 인터페이스
120 : 디램 컨트롤러 130 : 워킹 메모리
132 : 응용 프로그램 134 : 커널
135 : 스케줄러 137: CPU 거버너
140 : 성능 컨트롤러 150 : UI 컨트롤러
152 : 액정 표시 장치 154 : 터치 패널
160 : 메모리 인터페이스 170 : 저장 장치
180 : 가속기 190 : 시스템 인터커넥터
1000 : 휴대용 단말기 1100 : 이미지 처리부
1110 : 렌즈 1120 : 이미지 센서
1130 : 이미지 프로세서 1140 : 디스플레이 유닛
1200 : 무선 송수신부 1210 : 안테나
1220 : 송수신기 1230 : 모뎀
1300 : 오디오 처리부 1310 : 오디오 프로세서
1320 : 마이크 1330 : 스피커
1400 : 이미지 파일 생성부 1500 : 불휘발성 메모리 장치
1600 : 유저 인터페이스 1700 : 컨트롤러
Claims (10)
- 멀티-코어 프로세서를 포함하는 시스템 온 칩의 스케줄링 방법에 있어서:
상기 멀티-코어 프로세서에서 실행될 쓰레드의 스케줄링 요청을 검출하는 단계;
상기 멀티-코어 프로세서에서 실행 중인 쓰레드들 중에서 상기 스케줄링 요청된 쓰레드와 동일한 컨텍스트를 갖는 콜링 쓰레드를 검출하는 단계; 그리고
상기 동일한 컨텍스트를 갖는 콜링 쓰레드가 실행되는 코어의 성능에 따라 상기 스케줄링 요청된 쓰레드를 실행할 코어를 재할당 또는 재설정하는 단계를 포함하는 스케줄링 방법. - 제 1 항에 있어서,
상기 재할당 또는 재설정하는 단계에서, 상기 콜링 쓰레드가 실행되는 코어의 처리 속도가 상기 스케줄링 요청된 쓰레드가 실행되는 코어의 처리 속도보다 높은 경우, 상기 스케줄링 요청된 쓰레드는 상기 콜링 쓰레드가 실행되는 코어에서 실행되도록 마이그레이션되는 스케줄링 방법. - 제 1 항에 있어서,
상기 재할당 또는 재설정하는 단계에서, 상기 콜링 쓰레드가 실행되는 코어의 처리 속도가 상기 스케줄링 요청된 쓰레드가 실행되는 코어의 처리 속도보다 높은 경우, 상기 스케줄링 요청된 쓰레드는 상기 콜링 쓰레드가 실행되는 코어와 동일한 처리 속도를 갖는 코어에서 실행되도록 마이그레이션되는 스케줄링 방법. - 제 1 항에 있어서,
상기 재할당 또는 재설정하는 단계에서, 상기 콜링 쓰레드가 실행되는 코어의 처리 속도가 상기 스케줄링 요청된 쓰레드가 실행되는 코어의 처리 속도보다 높은 경우, 상기 스케줄링 요청된 쓰레드가 실행되는 코어의 처리 속도를 상기 콜링 쓰레드가 실행되는 코어의 처리 속도에 동기시키는 스케줄링 방법. - 제 4 항에 있어서,
상기 콜링 쓰레드가 실행되는 코어와 상기 스케줄링 요청된 쓰레드가 실행되는 코어는 동종의 코어인 것을 특징으로 하는 스케줄링 방법. - 제 1 항에 있어서,
상기 스케줄링 요청된 쓰레드의 평균 부하를 계산하는 단계를 더 포함하는 스케줄링 방법. - 제 6 항에 있어서,
상기 스케줄링 요청된 쓰레드와 동일한 컨텍스트를 갖는 콜링 쓰레드가 존재하지 않는 경우, 상기 평균 부하의 크기를 참조하여 상기 스케줄링 요청된 쓰레드를 실행할 코어를 재할당하는 스케줄링 방법. - 제 1 항에 있어서,
상기 멀티-코어 프로세서는 서로 다른 성능의 코어를 동시에 구동하는 이종 멀티-프로세싱(Heterogeneous Multi-Processing) 방식으로 구동되는 스케줄링 방법. - 서로 다른 구동 속도를 갖는 복수의 코어들을 포함하는 멀티-코어 프로세서; 그리고
상기 멀티-코어 프로세서에 의해서 구동되는 운영 체제 및 응용 프로그램이 로드되는 워킹 메모리를 포함하되,
상기 운영 체제는 상기 응용 프로그램에서 발생하는 쓰레드의 스케줄링 요청에 따라 상기 쓰레드가 실행될 코어를 할당하는 스케줄러를 포함하며, 상기 스케줄러는 상기 멀티-코어 프로세서에서 이미 실행중인 복수의 쓰레드들 중에서 상기 스케줄링 요청된 쓰레드와 동일한 컨텍스트를 갖는 쓰레드의 존재 여부에 따라 상기 스케줄링 요청된 쓰레드가 실행될 코어를 선택 또는 설정하는 시스템 온 칩. - 제 9 항에 있어서,
상기 스케줄러는 상기 스케줄링 요청된 쓰레드와 동일한 컨텍스트를 갖는 쓰레드의 존재 여부에 따라 상기 스케줄링 요청된 쓰레드가 현재 실행되는 코어의 처리 속도를 제어하는 시스템 온 칩.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140115318A KR102197874B1 (ko) | 2014-09-01 | 2014-09-01 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법 |
US14/721,517 US9753771B2 (en) | 2014-09-01 | 2015-05-26 | System-on-chip including multi-core processor and thread scheduling method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140115318A KR102197874B1 (ko) | 2014-09-01 | 2014-09-01 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160027541A true KR20160027541A (ko) | 2016-03-10 |
KR102197874B1 KR102197874B1 (ko) | 2021-01-05 |
Family
ID=55402594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140115318A KR102197874B1 (ko) | 2014-09-01 | 2014-09-01 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9753771B2 (ko) |
KR (1) | KR102197874B1 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190057558A (ko) * | 2017-11-20 | 2019-05-29 | 삼성전자주식회사 | 멀티 코어 제어 시스템 |
KR102041960B1 (ko) * | 2019-03-22 | 2019-11-07 | 한국과학기술정보연구원 | 병렬 처리 방법 및 병렬 처리 장치 |
KR20200140380A (ko) * | 2018-04-20 | 2020-12-15 | 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 | 프로세서 코어를 스케쥴링하는 방법, 장치, 단말 및 저장 매체 |
US11467836B2 (en) | 2020-02-07 | 2022-10-11 | Alibaba Group Holding Limited | Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10856220B2 (en) | 2015-12-21 | 2020-12-01 | Apple Inc. | Energy-efficient signal processing |
US10503524B2 (en) | 2016-03-22 | 2019-12-10 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Interception of a function call, selecting a function from available functions and rerouting the function call |
US10884761B2 (en) * | 2016-03-22 | 2021-01-05 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd | Best performance delivery in heterogeneous computing unit environment |
US10860499B2 (en) | 2016-03-22 | 2020-12-08 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd | Dynamic memory management in workload acceleration |
US10146287B2 (en) * | 2016-04-01 | 2018-12-04 | Intel Corporation | Processor power monitoring and control with dynamic load balancing |
CN106933663B (zh) * | 2017-03-07 | 2019-07-23 | 武汉科技大学 | 一种面向众核系统的多线程调度方法及系统 |
KR20180107948A (ko) * | 2017-03-23 | 2018-10-04 | 한국전자통신연구원 | 이종 멀티코어 시스템 기반 거버너 제어 장치 및 방법 |
US11301020B2 (en) * | 2017-05-22 | 2022-04-12 | Intel Corporation | Data center power management |
KR102563648B1 (ko) | 2018-06-05 | 2023-08-04 | 삼성전자주식회사 | 멀티 프로세서 시스템 및 그 구동 방법 |
CN110837415B (zh) * | 2018-08-17 | 2024-04-26 | 嘉楠明芯(北京)科技有限公司 | 一种基于risc-v多核处理器的线程调度方法和装置 |
CN111198757B (zh) * | 2020-01-06 | 2023-11-28 | 北京小米移动软件有限公司 | Cpu内核调度方法、cpu内核调度装置及存储介质 |
US11360923B2 (en) * | 2020-06-18 | 2022-06-14 | Western Digital Technologies, Inc. | Multi-function SD card |
US11966750B2 (en) * | 2022-06-29 | 2024-04-23 | Ampere Computing Llc | System-on-chip management controller |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100074920A (ko) * | 2008-12-24 | 2010-07-02 | 삼성전자주식회사 | 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법 |
KR20120017294A (ko) * | 2010-08-18 | 2012-02-28 | 삼성전자주식회사 | 어플리케이션을 효율적으로 처리하는 스케쥴링 시스템 및 스케쥴링 방법 |
KR20130080663A (ko) * | 2012-01-05 | 2013-07-15 | 삼성전자주식회사 | 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치 |
KR20130093995A (ko) * | 2012-02-15 | 2013-08-23 | 한국전자통신연구원 | 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템 |
KR20140078394A (ko) * | 2012-12-17 | 2014-06-25 | 삼성전자주식회사 | 시스템-온 칩과, 이의 동작 방법 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0304628D0 (en) | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
JP4784827B2 (ja) | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US8806491B2 (en) * | 2007-12-31 | 2014-08-12 | Intel Corporation | Thread migration to improve power efficiency in a parallel processing environment |
KR100936601B1 (ko) | 2008-05-15 | 2010-01-13 | 재단법인서울대학교산학협력재단 | 멀티 프로세서 시스템 |
US8881157B2 (en) | 2009-09-11 | 2014-11-04 | Empire Technology Development Llc | Allocating threads to cores based on threads falling behind thread completion target deadline |
US9569270B2 (en) | 2009-04-21 | 2017-02-14 | Empire Technology Development Llc | Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts |
US8650554B2 (en) | 2010-04-27 | 2014-02-11 | International Business Machines Corporation | Single thread performance in an in-order multi-threaded processor |
US9268611B2 (en) | 2010-09-25 | 2016-02-23 | Intel Corporation | Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores |
US8607232B2 (en) * | 2010-11-11 | 2013-12-10 | International Business Machines Corporation | Identifying a transient thread and excluding the transient thread from a processor load calculation |
KR101703328B1 (ko) | 2010-11-23 | 2017-02-07 | 삼성전자 주식회사 | 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법 |
US8782645B2 (en) | 2011-05-11 | 2014-07-15 | Advanced Micro Devices, Inc. | Automatic load balancing for heterogeneous cores |
KR101869325B1 (ko) | 2011-12-13 | 2018-06-21 | 한국전자통신연구원 | 이종 멀티코어 환경에서의 코어 배정 장치 |
US9286116B2 (en) * | 2012-07-06 | 2016-03-15 | Microsoft Technology Licensing, Llc | Multiple core real-time task execution |
US20140173623A1 (en) * | 2012-12-17 | 2014-06-19 | Mediatek Inc. | Method for controlling task migration of task in heterogeneous multi-core system based on dynamic migration threshold and related computer readable medium |
US9436265B2 (en) * | 2013-10-24 | 2016-09-06 | Fujitsu Limited | Information processing apparatus and load control method |
US9684541B2 (en) * | 2014-06-30 | 2017-06-20 | Intel Corporation | Method and apparatus for determining thread execution parallelism |
-
2014
- 2014-09-01 KR KR1020140115318A patent/KR102197874B1/ko active IP Right Grant
-
2015
- 2015-05-26 US US14/721,517 patent/US9753771B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100074920A (ko) * | 2008-12-24 | 2010-07-02 | 삼성전자주식회사 | 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법 |
KR20120017294A (ko) * | 2010-08-18 | 2012-02-28 | 삼성전자주식회사 | 어플리케이션을 효율적으로 처리하는 스케쥴링 시스템 및 스케쥴링 방법 |
KR20130080663A (ko) * | 2012-01-05 | 2013-07-15 | 삼성전자주식회사 | 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치 |
KR20130093995A (ko) * | 2012-02-15 | 2013-08-23 | 한국전자통신연구원 | 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템 |
KR20140078394A (ko) * | 2012-12-17 | 2014-06-25 | 삼성전자주식회사 | 시스템-온 칩과, 이의 동작 방법 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190057558A (ko) * | 2017-11-20 | 2019-05-29 | 삼성전자주식회사 | 멀티 코어 제어 시스템 |
KR20200140380A (ko) * | 2018-04-20 | 2020-12-15 | 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 | 프로세서 코어를 스케쥴링하는 방법, 장치, 단말 및 저장 매체 |
US11782756B2 (en) | 2018-04-20 | 2023-10-10 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method and apparatus for scheduling processor core, and storage medium |
KR102041960B1 (ko) * | 2019-03-22 | 2019-11-07 | 한국과학기술정보연구원 | 병렬 처리 방법 및 병렬 처리 장치 |
US11467836B2 (en) | 2020-02-07 | 2022-10-11 | Alibaba Group Holding Limited | Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core |
Also Published As
Publication number | Publication date |
---|---|
US20160062798A1 (en) | 2016-03-03 |
KR102197874B1 (ko) | 2021-01-05 |
US9753771B2 (en) | 2017-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102197874B1 (ko) | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법 | |
CN111176828B (zh) | 包括多核处理器的片上系统及其任务调度方法 | |
US10133598B2 (en) | Systems and methods of using a hypervisor to assign virtual processor priority based on task priority and to schedule virtual processors for guest operating systems | |
KR102114453B1 (ko) | 모바일 장치 및 그것의 제어 방법 | |
KR102169692B1 (ko) | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법 | |
EP3155521B1 (en) | Systems and methods of managing processor device power consumption | |
US10255118B2 (en) | Processing system including a plurality of cores and method of operating the same | |
EP2823459B1 (en) | Execution of graphics and non-graphics applications on a graphics processing unit | |
US20110161637A1 (en) | Apparatus and method for parallel processing | |
US10768684B2 (en) | Reducing power by vacating subsets of CPUs and memory | |
CN115617494B (zh) | 多cpu环境下的进程调度方法、装置、电子设备和介质 | |
US12001880B2 (en) | Multi-core system and method of controlling operation of the same | |
CN107615246B (zh) | 线程弹性负载平衡的内核负载知识 | |
KR102592330B1 (ko) | OpenCL 커널을 처리하는 방법과 이를 수행하는 컴퓨팅 장치 | |
US20170235607A1 (en) | Method for operating semiconductor device and semiconductor system | |
US20230214271A1 (en) | Method of scheduling cache budget in multi-core processing device and multi-core processing device performing the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |