KR102384345B1 - 스레드를 실행하는 방법, 프로세서 및 기록매체 - Google Patents

스레드를 실행하는 방법, 프로세서 및 기록매체 Download PDF

Info

Publication number
KR102384345B1
KR102384345B1 KR1020150068191A KR20150068191A KR102384345B1 KR 102384345 B1 KR102384345 B1 KR 102384345B1 KR 1020150068191 A KR1020150068191 A KR 1020150068191A KR 20150068191 A KR20150068191 A KR 20150068191A KR 102384345 B1 KR102384345 B1 KR 102384345B1
Authority
KR
South Korea
Prior art keywords
core
execution
thread
thread set
threads
Prior art date
Application number
KR1020150068191A
Other languages
English (en)
Other versions
KR20160134323A (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 KR1020150068191A priority Critical patent/KR102384345B1/ko
Priority to US15/146,044 priority patent/US9983910B2/en
Publication of KR20160134323A publication Critical patent/KR20160134323A/ko
Application granted granted Critical
Publication of KR102384345B1 publication Critical patent/KR102384345B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Landscapes

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

Abstract

애플리케이션의 실행을 위한 복수의 스레드(thread) 셋을 저장하는 메모리, 메모리로부터 각각 할당 받은 적어도 하나의 스레드 셋을 미리 결정된 실행 순서에 기초하여 실행하는 복수의 코어들 및 복수의 코어들 중 어느 하나의 코어로부터, 할당된 적어도 하나의 스레드 셋의 실행 패턴에 따라 결정되는 스케쥴링 정보를 수신하여 복수의 코어들 중 적어도 하나의 다른 코어에 전송하는 제어부를 포함하고, 복수의 코어들 각각은 결정된 스케쥴링 정보에 기초하여 할당된 적어도 하나의 스레드 셋의 실행 순서를 재결정하는 프로세서가 개시된다.

Description

스레드를 실행하는 방법, 프로세서 및 기록매체 {Method and processor for implementing thread and recording medium thereof}
개시된 기술적 사상은 스레드를 실행하는 방법, 스레드를 실행하는 프로세서 및 스레드를 실행하는 객체를 렌더링하는 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 관한 것이다.
IT(Information Technology) 기술이 발달함에 따라 복잡한 연산을 요구하는 응용 프로그램들이 많아지고 있다. 또한, 단말기가 점점 고도화하면서 단일 코어 프로세서에서 멀티 코어(Multi-Core) 프로세서로 바뀌어 가고 있으며, 스레드(Thread)를 사용하여 응용 프로그램을 병렬처리 하는 방법에 있어서도 단일 코어 프로세서의 시간 분할 멀티플렉싱(Time Division Multiplexing) 방식의 스레드 프로세싱에서 멀티 코어 프로세서에서 병렬로 동시에 멀티 스레드(Multi-Thread)를 프로세싱하는 방식으로 프로세싱 방법도 변화하고 있다.
멀티 스레드 프로세싱 환경에서 단말기는 실행하고자 하는 애플리케이션에 따라 동일한 형태의 스레드를 생성하여, 단말기의 코어에서 스레드를 실행한다. 단일 코어에서는 하나의 코어를 시분할하여 스레드를 실행하고, 멀티 코어 환경에서는 단말기의 멀티 코어에 멀티 스레드를 할당하여 병렬로 스레드를 실행할 수 있다.
복수의 코어들에서 각각 할당된 스레드들을 실행하는 경우, 스레드들의 실행 패턴에 따라 최적화된 스케쥴링 기법을 선택하여, 복수의 코어들 각각에서 스레드들을 실행하는데 필요한 자원을 효과적으로 이용할 수 있는 방법, 프로세서 및 기록매체에 관한 것이다.
일 실시예에 따른 프로세서는 애플리케이션의 실행을 위한 복수의 스레드(thread) 셋을 저장하는 메모리; 메모리로부터 각각 할당 받은 적어도 하나의 스레드 셋을 미리 결정된 실행 순서에 기초하여 실행하는 복수의 코어들; 및 복수의 코어들 중 어느 하나의 코어로부터, 할당된 적어도 하나의 스레드 셋의 실행 패턴에 따라 결정되는 스케쥴링 정보를 수신하여 복수의 코어들 중 적어도 하나의 다른 코어에 전송하는 제어부를 포함하고, 복수의 코어들 각각은, 결정된 스케쥴링 정보에 기초하여 할당된 적어도 하나의 스레드 셋의 실행 순서를 재결정한다.
일 실시예에 따른 프로세서에 있어서, 어느 하나의 코어는, 할당된 적어도 하나의 스레드 셋 중 선택된 스레드 셋의 실행이 가장 먼저 완료된 코어이다.
일 실시예에 따른 프로세서에 있어서, 선택된 스레드 셋은, 적어도 하나의 스레드 셋 중 어느 하나의 코어에 가장 먼저 할당된 스레드 셋이다.
일 실시예에 따른 프로세서에 있어서, 어느 하나의 코어는, 적어도 하나의 스레드 셋 중 선택된 스레드 셋의 실행이 완료되는 경우 검출되는 실행 패턴에 기초하여 스케쥴링 정보를 결정한다.
일 실시예에 따른 프로세서에 있어서, 어느 하나의 코어는, 적어도 하나의 스레드 셋의 실행 패턴이 제 1 패턴인 경우 GRO(Greedy-Then-Oldest) 스케쥴링 기법을 선택하고, 제 2 패턴인 경우, RR(Round-Robin) 스케쥴링 기법을 선택하여, 스케쥴링 정보를 결정한다.
일 실시예에 따른 프로세서에 있어서, 복수의 코어들 각각은, 적어도 하나의 스레드 셋 중 실행이 완료되지 않은 스레드 셋의 실행 순서를 스케쥴링 정보에 기초하여 재결정한다.
일 실시예에 따른 프로세서에 있어서, 복수의 코어들 중 적어도 하나의 다른 코어는. 미리 설정된 스케쥴링 정보와 결정된 스케쥴링 정보가 일치하지 않는 경우, 결정된 스케쥴링 정보가 나타내는 스케쥴링 기법에 따라, 실행 순서를 변경한다.
일 실시예에 따른 프로세서는 그래픽 프로세서이다.
일 실시예에 따른 프로세서에서 스레드를 실행하는 방법은 메모리로부터 코어에 할당된 적어도 하나의 스레드 셋을 미리 결정된 실행 순서에 기초하여 실행하는 단계; 할당된 적어도 하나의 스레드 셋의 실행 패턴에 따라 스케쥴링 정보를 결정하는 단계; 결정된 스케쥴링 정보를 상기 코어를 포함한 복수의 코어들과 연결된 제어부에 전송하는 단계; 및 상기 결정된 스케쥴링 정보에 기초하여 상기 할당된 적어도 하나의 스레드 셋의 실행 순서를 재결정하는 단계를 포함한다.
일 실시예에 따른 프로세서에서 스레드를 실행하는 방법에 있어서, 상기 코어는, 상기 복수의 코어들 중에서, 상기 할당된 적어도 하나의 스레드 셋 중 선택된 스레드 셋의 실행이 가장 먼저 완료된 코어이다.
일 실시예에 따른 프로세서에서 스레드를 실행하는 방법에 있어서, 상기 선택된 스레드 셋은, 상기 적어도 하나의 스레드 셋 중 상기 코어에 가장 먼저 할당된 스레드 셋이다.
일 실시예에 따른 프로세서에서 스레드를 실행하는 방법에 있어서, 상기 스케쥴링 정보를 결정하는 단계는, 상기 적어도 하나의 스레드 셋 중 선택된 스레드 셋의 실행이 완료되는 경우 검출되는 상기 실행 패턴에 기초하여 스케쥴링 정보를 결정한다.
일 실시예에 따른 프로세서에서 스레드를 실행하는 방법에 있어서, 상기 스케쥴링 정보를 결정하는 단계는, 상기 적어도 하나의 스레드 셋 각각에서 실행된 일부 스레드들의 패턴이 제 1 패턴인 경우 GRO 스케쥴링 기법을 선택하고, 제 2 패턴인 경우, RR 스케쥴링 기법을 선택하는 단계를 포함한다.
일 실시예에 따른 프로세서에서 스레드를 실행하는 방법에 있어서, 상기 실행 순서를 재결정하는 단계는, 상기 적어도 하나의 스레드 셋 중 실행이 완료되지 않은 스레드 셋의 실행 순서를 상기 스케쥴링 정보에 기초하여 재결정한다.
일 실시예에 따른 프로세서에서 스레드를 실행하는 방법에 있어서, 상기 실행 순서를 재결정하는 단계는, 미리 설정된 스케쥴링 정보와 상기 결정된 스케쥴링 정보가 일치하지 않는 경우, 상기 결정된 스케쥴링 정보가 나타내는 스케쥴링 기법에 따라 상기 실행 순서를 변경한다.
일 실시예에 따른 프로세서에서 스레드를 실행하는 방법에 있어서, 프로세서는 그래픽 프로세서이다.
프로세서에서 스레드들을 실행하는데 필요한 자원을 효과적으로 이용할 수 있는 기술적 사상을 제공할 수 있다.
도 1은 일 실시예에 따른 프로세서를 도시한 도면이다.
도 2는 일 실시예에 따른 코어를 도시한 블록도이다.
도 3은 다른 실시예에 따른 코어를 설명하기 위한 블록도이다.
도 4는 일 실시예에 따른 프로세서에 포함된 코어가 스레드를 실행하는 방법을 설명하기 위한 흐름도이다.
도 5는 일 실시예에 따른 코어가 스케쥴링 정보를 결정하는 방법을 보다 구체적으로 설명하기 위한 흐름도이다.
도 6은 일 실시예에 따른 적어도 하나의 스레드 셋의 실행 패턴을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 제 1 코어가 제 2 코어에서 결정된 스케쥴링 정보에 기초하여, 적어도 하나의 스레드 셋의 실행 순서를 결정하는 방법을 설명하기 위한 흐름도이다.
도 8은 일 실시예에 따른 제어부가 복수의 코어들에서 복수의 애플리케이션들이 실행되는 경우, 스케쥴링 정보를 전송하는 방법을 설명하기 위한 흐름도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하 첨부된 도면을 참고하여 개시된 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 프로세서(100)를 도시한 도면이다.
도 1에 도시된 프로세서(100)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 1을 참조하면, 프로세서(100)는 메모리(110), 복수의 코어들(122, 124, 126, 128) 및 제어부(130)를 포함할 수 있다.
프로세서(100)는 예컨대 개인용 컴퓨터, 엔터테인먼트 시스템, 미디어 시스템, 게임 시스템, 통신 디바이스, PDA(Personal Digital Assistant) 등의 컴퓨팅 시스템에서 사용될 수 있다. 예를 들어, 프로세서(100)는 그래픽 프로세서일 수 있다.
일 실시예에 따른 메모리(110)는 애플리케이션의 실행을 위한 복수의 스레드(thread) 셋을 저장한다. 여기에서, 애플리케이션은 프로세서(100)에 할당되어 실행될 수 있는 프로그램을 의미한다. 또한, 애플리케이션은 다수의 실행 단위들로 구성될 수 있다. 본 명세서에서는 실행 단위를 스레드로 설명하도록 한다. 스레드는 애플리케이션을 구성하는 명령어를 독립적으로 실행할 수 있는 하나의 제어 흐름이다.
한편, 일 실시예에 따른 메모리(110)는 복수의 스레드들을 스레드 셋 단위로 저장할 수 있다. 여기에서, 스레드 셋은 프로세서(100)에 포함된 복수의 코어들(122, 124, 126, 128)에 할당되는 스레드의 개수에 따라 결정될 수 있다. 예를 들어, 스레드 셋은 워프(warp)이거나 스레드 블록일 수 있다.
복수의 코어들(122, 124, 126, 128)은 메모리(110)로부터 복수의 스레드들을 포함하는 적어도 하나의 스레드 셋을 각각 할당 받아 실행한다. 복수의 코어들(122, 124, 126, 128) 각각은 적어도 하나의 프로세싱 유닛(Processing Unit)을 포함할 수 있다. 각각의 프로세싱 유닛은 적어도 하나의 스레드 셋을 실행할 수 있다. 예를 들어, 프로세싱 유닛은 미리 결정된 순서에 기초하여, 하나의 스레드 셋의 실행 완료 후에 다른 스레드 셋을 실행하는 방식으로 적어도 하나의 스레드 셋을 실행할 수 있다.
일 실시예에 따른, 복수의 코어들(122, 124, 126, 128) 각각은 미리 설정된 스케쥴링 기법에 따라 할당된 적어도 하나의 스레드 셋의 실행 순서를 결정할 수 있다. 스케쥴링 기법에는 GTO(Greedy-Then-Oldest) 스케쥴링 기법과 RR(Round-Robun) 스케쥴링 기법이 포함될 수 있다. GTO 스케쥴링 기법은 가장 먼저 할당된 스레드 셋을 계속해서 우선적으로 실행하는 기법을 의미한다. 또한, RR 스케쥴링 기법은 할당된 적어도 하나의 스레드 셋 각각을 공평하게 돌아가면서 실행하는 기법을 의미한다. 다만, 전술한 스케쥴링 기법들은 일 예일 뿐, 복수의 코어들(122, 124, 126, 128)에 설정되는 스케쥴링 기법이 이에 한정되는 것은 아니다.
한편, 애플리케이션의 실행을 위한 적어도 하나의 스레드 셋 간의 관계에 따라 애플리케이션 별로 최적화된 스케쥴링 기법이 상이할 수 있다. 예를 들어, 적어도 하나의 스레드 셋 간의 관계가 병렬적 관계인지 또는 종속적 관계인지 여부에 따라 적어도 하나의 스레드 셋에 최적화된 스케쥴링 기법이 상이할 수 있다.
일 실시예에 따른 복수의 코어들(122, 124, 126, 128) 각각은 할당된 적어도 하나의 스레드 셋이 실행되는 실행 패턴에 기초하여 적어도 하나의 스레드 셋에 최적화된 스케쥴링 기법을 결정할 수 있다. 실행 패턴은 각각의 코어에 할당된 적어도 하나의 스레드 셋 중 선택된 스레드 셋의 실행이 완료되는 시점까지 다른 스레드 셋에 포함된 스레드들의 실행 개수의 분포에 따라 결정될 수 있다. 또한, 선택된 스레드 셋은 예를 들어, 각각의 코어에 가장 먼저 할당된 스레드 셋일 수 있다. 실행 패턴에 대해서는 도 6을 참조하여 보다 구체적으로 후술하도록 한다.
제어부(130)는 복수의 코어들(122, 124, 126, 128) 중 어느 하나의 코어로부터 스케쥴링 정보를 수신한다.
일 실시예에 따른 제어부(130)는 수신한 스케쥴링 정보를 복수의 코어들 중 다른 코어들(124, 126, 128)에 전송할 수 있다. 다른 실시예에 따른 제어부(130)는 수신한 스케쥴링 정보를 모든 복수의 코어들(122, 124, 126, 128)에 전송할 수도 있다.
복수의 코어들(122, 124, 126, 128)은 결정된 스케쥴링 정보에 기초하여 할당된 적어도 하나의 스레드 셋의 실행 순서를 재결정할 수 있다. 예를 들어, 복수의 코어들(122, 124, 126, 128) 각각은 할당된 적어도 하나의 스레드 셋 중 아직 실행이 완료되지 않은 스레드 셋의 실행 순서를 재결정할 수 있다. 복수의 코어들(122, 124, 126, 128) 각각은 미리 결정된 실행 순서와 재결정된 실행 순서가 상이한 경우, 아직 실행되지 않은 스레드들의 실행 순서를 재결정된 실행 순서에 따라 변경할 수 있다.
도 2는 일 실시예에 따른 코어(200)를 도시한 블록도이다.
도 2에 도시된 코어(200)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 2를 참조하면, 코어(200)는 실행부(210) 및 스케쥴링부(220)를 포함할 수 있다. 한편, 여기에서, 코어(200)는 도 1을 참조하여 전술한 복수의 코어들(122, 124, 126, 128) 중 어느 하나일 수 있다.
실행부(210)는 복수의 실행 유닛들(미도시)을 포함할 수 있다. 실행부(210)는 메모리(미도시)로부터 할당된 적어도 하나의 스레드 셋을 실행할 수 있다. 일 실시예에 따른 실행부(210)는 미리 설정된 스케쥴링 기법에 따라 할당된 적어도 하나의 스레드 셋의 실행 순서를 결정할 수 있다. 예를 들어, 실행부(210)는 GTO 스케쥴링 기법에 따라 가장 먼저 할당된 0번 스레드 셋이 가장 우선적으로 실행되도록 실행 순서를 결정할 수 있다.
한편, 일 실시예에 따른 실행부(210)에 미리 설정된 스케쥴링 기법은 변경될 수 있다. 예를 들어, 실행부(210)는 후술할 스케쥴링부(220)로부터 결정된 스케쥴링 정보를 획득하여, 스케쥴링 기법을 변경할 수 있다. 다른 예에 따라, 실행부(210)는 도 1을 참조하여 전술한 제어부(130)로부터 다른 코어에서 결정된 스케쥴링 정보를 획득하여 스케쥴링 기법을 변경할 수도 있다.
스케쥴링부(220)는 할당된 적어도 하나의 스레드 셋의 실행 정보를 기록할 수 있다. 예를 들어, 스케쥴링부(220)는 적어도 하나의 스레드 셋 각각에서 실행되는 스레드들의 식별 정보 또는 실행이 완료된 스레드의 개수 등을 기록할 수 있다.
또한, 일 실시예에 따른 스케쥴링부(220)는 선택된 스레드 셋에 포함된 스레드들의 실행이 완료되었는지 여부를 모니터링 할 수 있다. 여기에서, 선택된 스레드 셋을 코어(200)에 가장 먼저 할당된 0번 스레드 셋으로 설명하도록 한다.
스케쥴링부(220)는 다른 코어들 중 어느 하나로부터 스케쥴링 정보가 결정되기 이전에 0번 스레드 셋의 실행이 완료된 경우 할당된 적어도 하나의 스레드 셋의 실행 패턴에 기초하여 스케쥴링 기법을 선택할 수 있다.
예를 들어, 0번 스레드 셋의 실행이 완료되기까지 할당된 각각의 스레드 셋에서 실행된 스레드들의 개수 분포가 콘케이브(concave) 패턴을 갖는 경우, 스케쥴링부(220)는 GTO 스케쥴링 기법을 선택할 수 있다. 다른 예에 따라, 0번 스레드 셋의 실행이 완료되기까지 할당된 각각의 스레드 셋에서 실행된 스레드들의 개수 분포가 컨벡스(convex) 패턴을 갖는 경우, 스케쥴링부(220)는 RR 스케쥴링 기법을 선택할 수 있다.
일 실시예에 따른 스케쥴링부(220)는 결정된 스케쥴링 기법을 나타내는 스케쥴링 정보를 제어부(미도시)에 전송할 수 있다. 스케쥴링 정보는 제어부를 통해 다른 적어도 하나의 코어에 전송될 수 있다. 또한, 코어(200)의 실행부(210)는 스케쥴링부(220)에서 결정된 스케쥴링 기법에 따라 적어도 하나의 스레드 셋 중 실행이 완료되지 않은 스레드 셋들의 실행 순서를 재결정할 수 있다.
예를 들어, 실행부(210)는 미리 설정된 스케쥴링 기법와 결정된 스케쥴링 기법이 상이한 경우, 결정된 스케쥴링 기법에 기초하여 적어도 하나의 스레드 셋 중 실행이 완료되지 않은 스레드 셋의 실행 순서를 결정할 수 있다. 다른 예에 따라, 실행부(210)는 미리 설정된 스케쥴링 기법과 결정된 스케쥴링 기법이 동일한 경우, 미리 설정된 스케쥴링 기법을 그대로 유지할 수 있다.
한편, 다른 예에 따라, 코어(200)의 스케쥴링부(220)에서 최적화된 스케쥴링 기법이 결정되기 이전에 다른 코어에서 결정된 스케쥴링 정보가 실행부(210)에 수신되는 경우, 실행부(210)는 수신된 스케쥴링 정보에 기초하여 실행이 완료되지 않은 스레드 셋들의 실행 순서를 재결정할 수 있다.
도 3은 다른 실시예에 따른 코어(300)를 설명하기 위한 블록도이다.
도 3에 도시된 코어(300)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 3을 참조하면, 코어(300)는 코어 파이프라인(310) 및 스케쥴링부(320)를 포함할 수 있다. 한편, 여기에서, 코어(300)는 도 1을 참조하여 전술한 복수의 코어들(122, 124, 126, 128) 중 어느 하나일 수 있다.
일 실시예에 따른 코어 파이프라인(310)에는 디코딩부(312) 및 실행부(314)가 포함될 수 있다.
디코딩부(312)는 메모리(미도시)에 접근하여 읽어들인 데이터를 실행부(314)에서 처리 가능한 기계어로 디코딩할 수 있다. 디코딩부(312)에서 메모리로부터 읽어들인 데이터를 디코딩한 결과에 따라 실행부(314)에는 코어(300)에 할당된 적어도 하나의 스레드 셋이 입력될 수 있다. 한편, 메모리(미도시)와 디코딩부(312) 간에는 데이터를 메모리(미도시)로부터 읽어오는 동작을 수행하는 패치(fetch)부가 별도로 존재할 수 있으나, 본 실시예에서는 생략하여 설명하도록 한다.
실행부(314)는 디코딩하여 생성된 적어도 스레드 셋을 미리 설정된 실행 순서에 기초하여 실행할 수 있다. 예를 들어, 실행부(314)는 GTO 스케쥴링 기법에 따라 가장 먼저 할당된 0번 스레드 셋이 가장 우선적으로 실행되도록 실행 순서를 결정할 수 있다. 또한, 실행부(314)는 후술할 스케쥴링부(320) 또는 다른 코어로부터 획득한 스케쥴링 정보에 기초하여 스케쥴링 기법을 변경할 수 있다.
한편, 실행부(314)는 도 2를 참조하여 전술한 실행부(220)와 대응될 수 있다.
스케쥴링부(320)는 카운터(322) 및 스케쥴링 결정부(324)를 포함할 수 있다. 다만, 이는 일 실시예일 뿐, 스케쥴링부(320)가 이에 한정되는 것은 아니다.
카운터(322)는 실행부(314)에서 실행된 스레드의 개수를 스레드가 포함된 스레드 셋의 종류에 따라 식별하여 기록할 수 있다. 예를 들어, 카운터(322)는 코어(300)에 할당된 8개의 스레드 셋 중 각각의 스레드 셋에서 실행된 스레드의 개수에 대해 기록할 수 있다.
스케쥴링 결정부(324)는 카운터(322)로부터 각각의 스레드 셋에서 실행된 스레드의 개수에 관한 정보를 획득할 수 있다. 스케쥴링 결정부(324)는 각각의 스레드 셋에서 실행된 스레드의 개수의 분포에 기초하여 실행 패턴을 결정할 수 있다. 예를 들어, 각각의 스레드 셋에서 실행된 스레드의 개수가 고르게 분포되어 있는 경우, 스케쥴링 결정부(324)는 실행 패턴을 컨벡스 패턴으로 결정할 수 있다. 다른 예에 따라, 각각의 스레드 셋 중 먼저 할당된 스레드 셋에 실행된 스레드의 개수가 집중되어 있는 경우, 스케쥴링 결정부(324)는 실행 패턴을 콘케이브 패턴으로 결정할 수 있다.
스케쥴링 결정부(324)는 결정된 실행 패턴에 기초하여, 할당된 적어도 하나의 스레드 셋에 최적화된 스케쥴링 기법을 선택할 수 있다. 예를 들어, 스케쥴링 결정부(324)는 결정된 실행 패턴이 컨벡스 패턴인 경우, RR 스케쥴링 기법을 선택할 수 있다. 다른 예에 따라 스케쥴링 결정부(324)는 결정된 실행 패턴이 콘케이브 패턴인 경우, GTO 스케쥴링 기법을 선택할 수 있다. 다만, 이는 일 실시예일 뿐, 스케쥴링 기법이 전술한 바에 한정되는 것은 아니다.
일 실시예에 따른 스케쥴링 결정부(314)는 결정된 스케쥴링 기법을 나타내는 스케쥴링 정보를 제어부(미도시)에 전송할 수 있다. 스케쥴링 정보는 제어부를 통해 다른 적어도 하나의 코어에 전송될 수 있다.
도 4는 일 실시예에 따른 프로세서(100)에 포함된 코어(예를 들어, 122)가 스레드를 실행하는 방법을 설명하기 위한 흐름도이다.
한편, 도 4에서는 코어(예를 들어, 122)에 중 가장 먼저 할당된 0번 스레드 셋이 다른 코어들(예를 들어, 124, 126, 128)에 각각 가장 먼저 할당된 0번 스레드 셋 보다 먼저 실행 완료된 것으로 가정하여 설명하도록 한다.
단계 S410에서, 코어(예를 들어, 122)는 메모리(110)로부터 할당된 적어도 하나의 스레드 셋을 미리 결정된 실행 순서에 기초하여 실행한다. 예를 들어, 코어(예를 들어, 122)는 GTO 스케쥴링 기법에 따라 가장 먼저 할당된 0번 스레드 셋이 가장 우선적으로 실행되도록 실행 순서를 결정할 수 있다.
단계 S420에서, 코어(예를 들어, 122)는 할당된 적어도 하나의 스레드 셋의 실행 패턴에 따라 스케쥴링 정보를 결정한다.
일 실시예에 따른 코어(예를 들어, 122)는 할당된 적어도 하나의 스레드 셋에 포함된 복수의 스레드들 중에서 실행된 스레드의 개수를 스레드 셋의 종류에 따라 식별하여 기록할 수 있다. 다른 예에 따라, 코어(예를 들어, 122)는 실행된 스레드의 식별 정보를 실행된 스레드가 포함된 스레드 셋의 식별 정보와 함께 기록할 수도 있다.
코어(예를 들어, 122)는 각각의 스레드 셋에서 실행된 스레드의 개수의 분포에 기초하여 실행 패턴을 결정할 수 있다. 코어(예를 들어, 122)는 각각의 스케쥴링 기법에 대응되는 실행 패턴에 관한 정보를 미리 저장할 수 있다. 예를 들어, 코어(예를 들어, 122)는 제 1 패턴과 GTO 스케쥴링 기법을 대응시켜 미리 저장할 수 있다. 여기에서, 제 1 패턴은 콘케이브 패턴일 수 있다. 다른 예에 따라, 코어(예를 들어, 122)는 제 2 패턴과 RR 스케쥴링 기법을 대응시켜 미리 저장할 수 있다. 여기에서, 제 2 패턴은 컨벡스 패턴일 수 있다.
한편, 실행 패턴에 관한 구체적인 설명은 도 6을 참조하여 후술하도록 한다.
일 실시예에 따른 코어(예를 들어, 122)는 결정된 실행 패턴에 대응되는 스케쥴링 기법을 선택할 수 있다. 코어(예를 들어, 122)는 결정된 실행 패턴에 기초하여 코어(예를 들어, 122)에 할당된 적어도 하나의 스레드 셋 간의 관계를 확인할 수 있다. 예를 들어, 코어(예를 들어, 122)는 결정된 실행 패턴에 기초하여, 코어(예를 들어, 122)에 할당된 적어도 하나의 스레드 셋 간의 관계가 병렬적 관계인지 또는 종속적 관계인지 여부 등을 확인할 수 있다.
코어(예를 들어, 122)는 실행 패턴을 고려하여 할당된 적어도 하나의 스레드 셋에 최적화된 스케쥴링 기법을 선택할 수 있다.
단계 S430에서, 코어(예를 들어, 122)는 결정된 스케쥴링 정보를 코어를 포함한 복수의 코어들과 연결된 제어부에 전송한다.
일 실시예에 따른 코어(예를 들어, 122)는 선택된 스케쥴링 기법을 나타내는 스케쥴링 정보를 제어부(130)에 전송할 수 있다. 스케쥴링 정보는 제어부를 통해 다른 적어도 하나의 코어에 전송될 수 있다.
단계 S440에서, 코어(예를 들어, 122)는 결정된 스케쥴링 정보에 기초하여 할당된 적어도 하나의 스레드 셋의 실행 순서를 재결정한다.
코어(예를 들어, 122)는 스케쥴링 정보가 나타내는 스케쥴링 기법에 따라 적어도 하나의 스레드 셋 중 실행이 완료되지 않은 스레드 셋들의 실행 순서를 재결정할 수 있다.
예를 들어, 코어(예를 들어, 122)는 미리 설정된 스케쥴링 기법와 결정된 스케쥴링 기법이 상이한 경우, 결정된 스케쥴링 기법에 기초하여 적어도 하나의 스레드 셋 중 실행이 완료되지 않은 스레드 셋의 실행 순서를 결정할 수 있다. 다른 예에 따라, 코어(예를 들어, 122)는 미리 설정된 스케쥴링 기법과 결정된 스케쥴링 기법이 동일한 경우, 미리 설정된 스케쥴링 기법을 그대로 유지할 수 있다.
도 5는 일 실시예에 따른 코어(예를 들어, 122)가 스케쥴링 정보를 결정하는 방법을 보다 구체적으로 설명하기 위한 흐름도이다.
단계 S510에서, 코어(예를 들어, 122)는 메모리(110)로부터 할당된 적어도 하나의 스레드 셋을 미리 결정된 실행 순서에 기초하여 실행할 수 있다.
한편, 단계 S510은 도 4를 참조하여 전술한 단계 S410과 대응될 수 있다.
단계 S520에서, 코어(예를 들어, 122)는 가장 먼저 할당된 스레드 셋의 실행이 완료되었는지 여부를 판단할 수 있다.
코어(예를 들어, 122)는 각각의 스레드 셋에 포함된 스레드들의 실행 정보를 기록할 수 있다. 코어(예를 들어, 122)는 기록된 스레드들의 실행 정보에 기초하여, 각각의 스레드 셋 중 가장 먼저 할당된 스레드 셋인 0번 스레드 셋의 실행이 완료되었는지 여부를 판단할 수 있다.
단계 S530에서, 코어(예를 들어, 122)는 가장 먼저 할당된 스레드 셋의 실행이 완료되기까지 다른 스레드 셋 각각에서 실행된 스레드의 개수에 기초하여 실행 패턴을 결정할 수 있다.
일 실시예에 따른 코어(예를 들어, 122)는 각각의 스케쥴링 기법에 대응되는 실행 패턴에 관한 정보를 미리 저장할 수 있다. 예를 들어, 코어(예를 들어, 122)는 제 1 패턴인 콘케이브 패턴과 GTO 스케쥴링 기법을 대응시켜 미리 저장할 수 있다. 다른 예에 따라, 코어(예를 들어, 122)는 제 2 패턴인 컨벡스 패턴과 RR 스케쥴링 기법을 대응시켜 미리 저장할 수 있다.
예를 들어, 각각의 스레드 셋에서 실행된 스레드의 개수가 고르게 분포되어 있는 경우, 코어(예를 들어, 122)는 실행 패턴을 컨벡스 패턴으로 결정할 수 있다. 다른 예에 따라, 각각의 스레드 셋 중 먼저 할당된 스레드 셋에 실행된 스레드의 개수가 집중되어 있는 경우, 코어(예를 들어, 122)는 실행 패턴을 콘케이브 패턴으로 결정할 수 있다.
단계 S540에서, 코어(예를 들어, 122)는 결정된 실행 패턴이 제 1 패턴인지 여부를 판단할 수 있다. 여기에서, 제 1 패턴은 콘케이브 패턴인 것으로 가정하였으나 이는 일 실시예일 뿐, 개시된 제 1 패턴이 이에 한정되는 것은 아니다.
단계 S550에서, 코어(예를 들어, 122)는 GTO 스케쥴링 기법을 선택할 수 있다.
일 실시예에 따른 코어(예를 들어, 122)는 결정된 실행 패턴이 제 1 패턴에 대응되는 경우, GTO 스케쥴링 기법을 선택할 수 있다. 코어(예를 들어, 122)는 실행 패턴이 제 1 패턴인 콘케이브 패턴인 경우, 0번 스레드 셋에 포함된 스레드들 중 다른 스레드 셋에 포함된 스레드들과 종속적인 관계를 갖는 스레드의 분포가 높지 않다고 결정할 수 있다. 따라서, 코어(예를 들어, 122)는 0번 스레드 셋을 우선적으로 실행하도록 스케쥴링하는 GTO 스케쥴링 기법을 선택할 수 있다.
단계 S560에서, 코어(예를 들어, 122)는 RR 스케쥴링 기법을 선택할 수 있다.
일 실시예에 따른 코어(예를 들어, 122)는 결정된 실행 패턴이 제 1 패턴에 대응되지 않는 경우, RR 스케쥴링 기법을 선택할 수 있다. 도 5를 참조한 본 실시예에서는 실행 패턴의 종류가 제 1 패턴 및 제 2 패턴 중 어느 하나인 것으로 설명하도록 한다.
코어(예를 들어, 122)는 실행 패턴이 제 2 패턴인 컨벡스 패턴인 경우, 0번 스레드 셋에 포함된 스레드들 중 다른 스레드 셋에 포함된 스레드들과 종속적인 관계를 갖는 스레드의 분포가 높다고 결정할 수 있다. 따라서, 코어(예를 들어, 122)는 모든 스레드 셋에 공평하게 실행 기회가 주어지는 RR 스케쥴링 기법을 선택할 수 있다.
단계 S570에서, 코어(예를 들어, 122)는 결정된 스케쥴링 기법을 나타내는 스케쥴링 정보를 제어부(130)에 전송할 수 있다.
한편, 단계 S570은 도 4를 참조하여 전술한 단계 S440과 대응될 수 있다.
도 6은 일 실시예에 따른 적어도 하나의 스레드 셋의 실행 패턴을 설명하기 위한 도면이다.
도 6의 (a)는 각각의 스레드 셋 내에서 실행된 스레드들의 개수가 콘케이브 패턴을 갖는 경우를 설명하기 위한 도면이다.
도 6의 (a)에 도시된 그래프에서 x축은 각각의 스레드 셋에 포함된 스레드들 중 실행된 스레드들의 비율을 나타낸다. 또한, 도 6의 (a)에 도시된 그래프에서 y축은 스레드 셋의 식별 정보를 나타낸다.
도 6의 (a)를 참조하면, 가장 먼저 할당된 0번 스레드 셋에 포함된 스레드들의 실행 비율이 가장 높은 것을 확인할 수 있다. 또한, 다른 스레드 셋에 포함된 스레드들의 실행 비율은 0번 스레드 셋에서 실행된 스레드들의 비율과 큰 차이를 보이는 것을 확인할 수 있다. 코어(예를 들어, 122)는 실행 패턴이 콘케이브 패턴인 경우, 0번 스레드 셋에 포함된 스레드들 중 다른 스레드 셋에 포함된 스레드들과 종속적인 관계를 갖는 스레드의 분포가 높지 않다고 결정할 수 있다.
따라서, 코어(예를 들어, 122)는 할당된 적어도 하나의 스레드 셋의 실행 패턴이 콘케이브 패턴을 갖는 경우 0번 스레드 셋을 우선적으로 실행하는 GTO 스케쥴링 기법을 선택할 수 있다.
다만, 이는 일 실시예일 뿐, 개시된 기술적 사상이 이에 한정되는 것은 아니다.
도 6의 (b)는 각각의 스레드 셋 내에서 실행된 스레드들의 개수가 컨벡스 패턴을 갖는 경우를 설명하기 위한 도면이다.
도 6의 (b)에 도시된 그래프에서 x축은 각각의 스레드 셋에 포함된 스레드들 중 실행된 스레드들의 비율을 나타낸다. 또한, 도 6의 (b)에 도시된 그래프에서 y축은 스레드 셋의 식별 정보를 나타낸다.
도 6의 (b)를 참조하면, 가장 먼저 할당된 0번 스레드 셋에 포함된 스레드들의 실행 비율과 다른 스레드 셋에 포함된 스레드들의 실행 비율 간의 차이가 크지 않다는 것을 확인할 수 있다.
일 실시예에 따른 코어(예를 들어, 122)는 할당된 적어도 하나의 스레드 셋의 실행 패턴이 컨텍스 패턴을 갖는 경우 0번 스레드 셋에 포함된 스레드들 중 다른 스레드 셋에 포함된 스레드들과 종속적인 관계를 갖는 스레드의 분포가 높다고 결정할 수 있다.
따라서, 코어(예를 들어, 122)는 모든 스레드 셋에 공평하게 실행 기회가 주어지는 RR 스케쥴링 기법을 선택할 수 있다.
도 7은 일 실시예에 따른 제 1 코어(122)가 제 2 코어(124)에서 결정된 스케쥴링 정보에 기초하여, 적어도 하나의 스레드 셋의 실행 순서를 결정하는 방법을 설명하기 위한 흐름도이다.
단계 S710에서, 제 1 코어(122)는 메모리(110)로부터 할당된 적어도 하나의 스레드 셋을 미리 결정된 실행 순서에 기초하여 실행한다. 예를 들어, wp 1 코어(122)는 GTO 스케쥴링 기법에 따라 가장 먼저 할당된 0번 스레드 셋이 가장 우선적으로 실행되도록 실행 순서를 결정할 수 있다.
단계 S720에서, 제 1 코어(122)는 제어부(130)로부터 제 2 코어(124)에서 결정된 스케쥴링 정보를 수신할 수 있다.
일 실시예에 따른 제 2 코어(124)는 복수의 코어들(122, 124, 126, 128) 중 선택된 스레드 셋의 실행을 가장 먼저 완료한 코어일 수 있다. 여기에서, 선택된 스레드 셋은 각각의 코어마다 가장 먼저 할당된 0번 스레드 셋일 수 있다.
한편, 제 2 코어(124)에서 스케쥴링 정보를 결정하는 방법은 도 4 및 도 5를 참조하여 전술한 방법과 대응될 수 있다.
단계 S730에서, 제 1 코어(122)는 수신된 스케쥴링 정보가 나타내는 스케쥴링 기법과 미리 결정된 스케쥴링 기법이 대응되는지 여부를 판단할 수 있다.
예를 들어, 제 1 코어(122)는 미리 결정된 GTO 스케쥴링 기법에 따라 할당된 적어도 하나의 스레드 셋을 실행하고 있는 중에, 스케쥴링 정보를 수신할 수 있다. 제 1 코어(122)는 스케쥴링 정보가 나타내는 기법이 GTO 스케쥴링 기법에 해당하는지 또는 GTO 스케쥴링 기법이 아닌 다른 스케쥴링 기법에 해당하는지 여부를 판단할 수 있다. 여기에서, GTO 스케쥴링 기법이 아닌 다른 스케쥴링 기법의 일예에는 RR 스케쥴링 기법이 포함될 수 있다.
단계 S740에서, 제 1 코어(122)는 적어도 하나의 스레드 셋의 실행 순서를 변경할 수 있다.
일 실시예에 따른 제 1 코어(122)는 미리 설정된 스케쥴링 기법과 결정된 스케쥴링 기법이 상이한 경우, 결정된 스케쥴링 기법에 기초하여 적어도 하나의 스레드 셋 중 실행이 완료되지 않은 스레드 셋의 실행 순서를 결정할 수 있다.
단계 S750에서, 제 1 코어(122)는 적어도 하나의 스레드 셋의 실행 순서를 유지할 수 있다.
일 실시예에 따른 제 1 코어(122)는 미리 설정된 스케쥴링 기법과 결정된 스케쥴링 기법이 동일한 경우, 미리 설정된 스케쥴링 기법을 그대로 유지할 수 있다.
도 8은 일 실시예에 따른 제어부(130)가 복수의 코어들(122, 124, 126, 128)에서 복수의 애플리케이션들이 실행되는 경우, 스케쥴링 정보를 전송하는 방법을 설명하기 위한 흐름도이다.
도 8에서는 제 1 코어(122) 및 제 2 코어(124)는 애플리케이션 A에 관한 적어도 하나의 스레드 셋을 실행하고, 제 3 코어(126) 및 제 4 코어(128)는 애플리케이션 B에 관한 적어도 하나의 스레드 셋을 실행하는 것으로 가정한다.
단계 S810에서, 제어부(130)는 복수의 코어들(122, 124, 126, 128) 중 적어도 두 개 이상의 코어로부터 스케쥴링 정보를 수신할 수 있다.
일 실시예에 따른 제어부(130)는 제 1 코어(122) 및 제 2 코어(124) 중 어느 하나의 코어로부터 애플리케이션 A에 관한 적어도 하나의 스레드 셋의 스케쥴링 정보를 수신할 수 있다. 또한, 제어부(130)는 제 3 코어(126) 및 제 4 코어(128) 중 적어도 하나의 코어로부터 애플리케이션 B에 관한 적어도 하나의 스레드 셋의 스케쥴링 정보를 수신할 수 있다.
단계 S820에서, 제어부(130)는 수신한 스케쥴링 정보에 대응되는 애플리케이션에 관한 스레드 셋을 실행하는 코어를 선택할 수 있다.
일 실시예에 따른 스케쥴링 정보에는 애플리케이션의 식별 정보가 포함될 수 있다. 제어부(130)는 스케쥴링 정보에 포함된 애플리케이션의 식별 정보를 확인하여, 스케쥴링 정보를 전송하고자 하는 코어를 선택할 수 있다. 예를 들어, 제어부(130)가 제 1 코어(122)로부터 수신한 스케쥴링 정보에는 애플리케이션 A를 나타내는 식별 정보가 포함될 수 있다. 제어부(130)는 수신한 스케쥴링 정보에 포함된 애플리케이션의 식별 정보를 확인하여, 애플리케이션 A에 관한 적어도 하나의 스레드 셋을 실행하는 제 2 코어(122)를 선택할 수 있다.
단계 S830에서, 제어부(130)는 선택된 코어에 스케쥴링 정보를 전송할 수 있다.
일 실시예에 따라 선택된 코어는 수신한 스케쥴링 정보에 기초하여 선택된 코어에서 실행되는 애플리케이션의 스레드 셋에 대한 최적화된 스케쥴링 기법을 결정할 수 있다.
개시된 실시예에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다.  소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다.  여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다.  컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다.  매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
개시된 실시 예들에서 인용하는 공개 문헌, 특허 출원, 특허 등을 포함하는 모든 문헌들은 각 인용 문헌이 개별적으로 및 구체적으로 병합하여 나타내는 것 또는 개시된 실시 예들에서 전체적으로 병합하여 나타낸 것과 동일하게 개시된 실시 예들에 병합될 수 있다.
개시된 실시 예들의 이해를 위하여, 도면에 도시된 바람직한 실시 예들에서 참조 부호를 기재하였으며, 개시된 실시 예들을 설명하기 위하여 특정 용어들을 사용하였으나, 특정 용어에 의해 개시된 실시 예들이 한정되는 것은 아니며, 개시된 실시 예들은 당업자에 있어서 통상적으로 생각할 수 있는 모든 구성 요소들을 포함할 수 있다.
개시된 실시 예들은 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다.  이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다.  예를 들어, 개시된 실시 예들은 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다.  개시된 실시 예들에의 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 개시된 실시 예들은 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다.  기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다.  또한, 개시된 실시 예들은 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다.  “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다.  상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
개시된 실시 예들에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 개시된 실시 예들의 범위를 한정하는 것은 아니다.  명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다.  또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다.  또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 개시된 실시 예들의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
110: 메모리
122: 제 1 코어
124: 제 2 코어
126: 제 3 코어
128: 제 4 코어
130: 제어부

Claims (17)

  1. 애플리케이션의 실행을 위한 복수의 스레드(thread) 셋을 저장하는 메모리;
    상기 메모리로부터 각각 할당 받은 적어도 하나의 스레드 셋을 미리 결정된 실행 순서에 기초하여 실행하는 복수의 코어들; 및
    상기 복수의 코어들 중 어느 하나의 코어로부터, 상기 할당된 적어도 하나의 스레드 셋의 실행 패턴에 따라 결정되는 스케쥴링 정보를 수신하여 상기 복수의 코어들 중 적어도 하나의 다른 코어에 전송하는 제어부를 포함하고,
    상기 어느 하나의 코어는,
    상기 적어도 하나의 스레드 셋 중 선택된 스레드 셋의 실행이 완료되는 경우 검출되는 상기 실행 패턴에 기초하여 스케쥴링 정보를 결정하고,
    상기 복수의 코어들 각각은,
    상기 결정된 스케쥴링 정보에 기초하여 상기 할당된 적어도 하나의 스레드 셋의 실행 순서를 재결정하며,
    상기 어느 하나의 코어는,
    상기 적어도 하나의 스레드 셋의 실행 패턴이 제 1 패턴인 경우 GRO(Greedy-Then-Oldest) 스케쥴링 기법을 선택하고, 제 2 패턴인 경우, RR(Round-Robin) 스케쥴링 기법을 선택하여, 스케쥴링 정보를 결정하는 프로세서.
  2. 제 1항에 있어서, 상기 어느 하나의 코어는,
    상기 할당된 적어도 하나의 스레드 셋 중 선택된 스레드 셋의 실행이 가장 먼저 완료된 코어인 프로세서.
  3. 제 2항에 있어서, 상기 선택된 스레드 셋은,
    상기 적어도 하나의 스레드 셋 중 상기 어느 하나의 코어에 가장 먼저 할당된 스레드 셋인 프로세서.
  4. 삭제
  5. 제 1항에 있어서, 상기 복수의 코어들 각각은,
    상기 적어도 하나의 스레드 셋 중 실행이 완료되지 않은 스레드 셋의 실행 순서를 상기 스케쥴링 정보에 기초하여 재결정하는 프로세서.
  6. 제 5항에 있어서, 상기 복수의 코어들 중 적어도 하나의 다른 코어는,
    미리 설정된 스케쥴링 정보와 상기 결정된 스케쥴링 정보가 일치하지 않는 경우, 상기 결정된 스케쥴링 정보가 나타내는 스케쥴링 기법에 따라, 상기 실행 순서를 변경하는 프로세서.
  7. 메모리로부터 코어에 할당된 적어도 하나의 스레드 셋을 미리 결정된 실행 순서에 기초하여 실행하는 단계;
    상기 할당된 적어도 하나의 스레드 셋의 실행 패턴에 따라 스케쥴링 정보를 결정하는 단계;
    상기 결정된 스케쥴링 정보를 상기 코어를 포함한 복수의 코어들과 연결된 제어부에 전송하는 단계; 및
    상기 결정된 스케쥴링 정보에 기초하여 상기 할당된 적어도 하나의 스레드 셋의 실행 순서를 재결정하는 프로세서에서 스레드를 실행하는 단계를 포함하고,
    상기 스케쥴링 정보를 결정하는 단계는,
    상기 적어도 하나의 스레드 셋 중 선택된 스레드 셋의 실행이 완료되는 경우 검출되는 상기 실행 패턴에 기초하여 스케쥴링 정보를 결정하고,
    상기 적어도 하나의 스레드 셋의 실행 패턴이 제 1 패턴인 경우 GRO(Greedy-Then-Oldest) 스케쥴링 기법을 선택하고, 제 2 패턴인 경우, RR(Round-Robin) 스케쥴링 기법을 선택하여, 스케쥴링 정보를 결정하는, 프로세서에서 스레드를 실행하는, 방법.
  8. 제 7항에 있어서, 상기 코어는,
    상기 복수의 코어들 중에서, 상기 할당된 적어도 하나의 스레드 셋 중 선택된 스레드 셋의 실행이 가장 먼저 완료된 코어인 프로세서에서 스레드를 실행하는 방법.
  9. 제 8항에 있어서, 상기 선택된 스레드 셋은,
    상기 적어도 하나의 스레드 셋 중 상기 코어에 가장 먼저 할당된 스레드 셋인 프로세서에서 스레드를 실행하는 방법.
  10. 제 7항 내지 제 9항 중 어느 하나의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
KR1020150068191A 2015-05-15 2015-05-15 스레드를 실행하는 방법, 프로세서 및 기록매체 KR102384345B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150068191A KR102384345B1 (ko) 2015-05-15 2015-05-15 스레드를 실행하는 방법, 프로세서 및 기록매체
US15/146,044 US9983910B2 (en) 2015-05-15 2016-05-04 Method and processor for implementing thread and recording medium thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150068191A KR102384345B1 (ko) 2015-05-15 2015-05-15 스레드를 실행하는 방법, 프로세서 및 기록매체

Publications (2)

Publication Number Publication Date
KR20160134323A KR20160134323A (ko) 2016-11-23
KR102384345B1 true KR102384345B1 (ko) 2022-04-19

Family

ID=57277066

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150068191A KR102384345B1 (ko) 2015-05-15 2015-05-15 스레드를 실행하는 방법, 프로세서 및 기록매체

Country Status (2)

Country Link
US (1) US9983910B2 (ko)
KR (1) KR102384345B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102464678B1 (ko) * 2016-03-18 2022-11-11 한국전자통신연구원 매니코어 시스템에서 쓰레드를 스케줄링 하는 방법 및 그 장치
CN111542808B (zh) * 2017-12-26 2024-03-22 三星电子株式会社 预测电子设备上运行应用的线程的最优数量的方法和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631413B1 (en) 1999-01-28 2003-10-07 International Business Machines Corporation Method for optimizing profits in electronic delivery of digital objects
US20030233392A1 (en) 2002-06-12 2003-12-18 Microsoft Corporation Method and system for managing the execution of threads and the processing of data
KR100623217B1 (ko) 2003-06-27 2006-09-18 가부시끼가이샤 도시바 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 실시간 처리시스템
US20110126200A1 (en) * 2006-07-19 2011-05-26 International Business Machine Corporation Scheduling for functional units on simultaneous multi-threaded processors
US8935699B1 (en) 2011-10-28 2015-01-13 Amazon Technologies, Inc. CPU sharing techniques

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US8065690B2 (en) * 2005-12-01 2011-11-22 Cisco Technology, Inc. Method and system for event-based remote procedure call implementation in a distributed computing system
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
US8732711B2 (en) 2010-09-24 2014-05-20 Nvidia Corporation Two-level scheduler for multi-threaded processing
KR101177059B1 (ko) 2011-01-17 2012-08-28 전자부품연구원 병렬 제어 모듈을 동적으로 할당하는 방법
KR101420592B1 (ko) 2012-12-21 2014-07-17 전남대학교산학협력단 컴퓨터 시스템
US8656255B1 (en) * 2013-03-15 2014-02-18 Avalanche Technology, Inc. Method for reducing effective raw bit error rate in multi-level cell NAND flash memory
CN103336718B (zh) 2013-07-04 2016-07-06 北京航空航天大学 一种gpu线程调度优化方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631413B1 (en) 1999-01-28 2003-10-07 International Business Machines Corporation Method for optimizing profits in electronic delivery of digital objects
US20030233392A1 (en) 2002-06-12 2003-12-18 Microsoft Corporation Method and system for managing the execution of threads and the processing of data
KR100623217B1 (ko) 2003-06-27 2006-09-18 가부시끼가이샤 도시바 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 실시간 처리시스템
US20110126200A1 (en) * 2006-07-19 2011-05-26 International Business Machine Corporation Scheduling for functional units on simultaneous multi-threaded processors
US8935699B1 (en) 2011-10-28 2015-01-13 Amazon Technologies, Inc. CPU sharing techniques

Also Published As

Publication number Publication date
US20160335125A1 (en) 2016-11-17
KR20160134323A (ko) 2016-11-23
US9983910B2 (en) 2018-05-29

Similar Documents

Publication Publication Date Title
US9519479B2 (en) Techniques for increasing vector processing utilization and efficiency through vector lane predication prediction
KR102384345B1 (ko) 스레드를 실행하는 방법, 프로세서 및 기록매체
KR102548402B1 (ko) 병렬 프로세서 커널들의 디스패치 크기에 대한 동시 실행 인수를 결정하기 위한 시스템 및 방법
US20150143378A1 (en) Multi-thread processing apparatus and method for sequentially processing threads
US10409350B2 (en) Instruction optimization using voltage-based functional performance variation
KR101603752B1 (ko) 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법
US9344115B2 (en) Method of compressing and restoring configuration data
EP3491522B1 (en) Multi-thread processor and controlling method thereof
US20130275721A1 (en) Reconfigurable instruction encoding method, execution method, and electronic apparatus
US20160147574A1 (en) Facilitating provisioning in a mixed environment of locales
US20200192674A1 (en) Apparatus and method of dispatching instructions for execution
US10776077B2 (en) Method, apparatus and recording medium for processing division calculation
CN107340994B (zh) 一种处理器
KR102179385B1 (ko) 명령어를 실행하는 방법 및 프로세서, 명령어를 부호화하는 방법 및 장치 및 기록매체
KR20170060843A (ko) Vliw 인터페이스 장치 및 제어 방법
US10007553B2 (en) Method for configuring an it system, corresponding computer program and it system
KR102210997B1 (ko) Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
JP2016062388A (ja) 情報処理装置、情報処理方法及びそのプログラム
CN114816748A (zh) 线程调度方法、装置、电子设备和存储介质
US11086626B2 (en) Circuitry and methods
US10185565B2 (en) Method and apparatus for controlling register of reconfigurable processor, and method and apparatus for creating command for controlling register of reconfigurable processor
JP2018521421A (ja) ベクトル被演算子ビットサイズの制御
US9880843B2 (en) Data processing apparatus and method for decoding program instructions in order to generate control signals for processing circuitry of the data processing apparatus
EP3495960A1 (en) Program, apparatus, and method for communicating data between parallel processor cores
CN117389512B (zh) 一种算术逻辑单元alu系统、电子设备和存储介质

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right