[go: up one dir, main page]

KR101869325B1 - Core allocation apparatus in different multi-core - Google Patents

Core allocation apparatus in different multi-core Download PDF

Info

Publication number
KR101869325B1
KR101869325B1 KR1020110133947A KR20110133947A KR101869325B1 KR 101869325 B1 KR101869325 B1 KR 101869325B1 KR 1020110133947 A KR1020110133947 A KR 1020110133947A KR 20110133947 A KR20110133947 A KR 20110133947A KR 101869325 B1 KR101869325 B1 KR 101869325B1
Authority
KR
South Korea
Prior art keywords
core
thread
information
allocation
type
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020110133947A
Other languages
Korean (ko)
Other versions
KR20130067100A (en
Inventor
김상필
엄낙웅
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020110133947A priority Critical patent/KR101869325B1/en
Publication of KR20130067100A publication Critical patent/KR20130067100A/en
Application granted granted Critical
Publication of KR101869325B1 publication Critical patent/KR101869325B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Molds, Cores, And Manufacturing Methods Thereof (AREA)

Abstract

본 발명은 코어 정보 및 쓰레드에 코어를 지정하는 방식을 정의한 코어 배정 정보를 저장하는 코어배정 데이터 저장부, 코어배정 데이터 저장부에 저장된 코어 정보와 코어 배정 정보를 이용하여 쓰레드 각각에 상기 코어를 배정하는 스케쥴러 및 스케쥴러의 배정 명령에 따라 쓰레드 별로 코어를 연결시키는 바인더부를 포함하는 것을 특징으로 한다.The present invention relates to a core allocation data storage unit for storing core allocation information defining core information and a method for designating a core in a thread, a processor for allocating the core to each of the threads using core information and core allocation information stored in the core allocation data storage unit And a binder unit for connecting the cores according to the assignment instruction of the scheduler and the scheduler for each thread.

Description

이종 멀티코어 환경에서의 코어 배정 장치{CORE ALLOCATION APPARATUS IN DIFFERENT MULTI-CORE}[0001] CORE ALLOCATION APPARATUS IN DIFFERENT MULTI-CORE [0002]

본 발명은 이종 멀티코어 환경에서의 코어 배정 장치에 관한 것으로서, 더욱 상세하게는 여러 개의 서비스 또는 작업을 쓰레드로 처리하는 이종 멀티코어 환경에서 각 쓰레드에 코어를 배정하는 이종 멀티코어 환경에서의 코어 배정 장치에 관한 것이다.The present invention relates to a core allocation apparatus in a heterogeneous multicore environment, and more particularly, to a core allocation apparatus in a heterogeneous multi-core environment in which a core is allocated to each thread in a heterogeneous multicore environment in which a plurality of services or jobs are processed by threads. ≪ / RTI >

최근들어 IT 시장에서는 사용자들이 고성능 저전력 프로세서에 대한 요구가 많아지고, 응용프로그램도 동시에 여러 개의 서비스를 처리하는 모드로 변하고 있으며, 이러한 요구사항에 대항하기 위해서는 시스템 또는 프로세서의 성능을 향상시켜야 하는데, 단일 프로세서로 성능을 향상시키는 것은 문제가 있기 때문에 다수개의 프로세서를 사용하는 멀티 프로세서 또는 멀티 코어 사용 환경으로 진화하고 있다.
종래의 멀티 프로세싱은 범용 프로세서(General Purpose Processor)나 특별히 설계된 단일 프로세서를 여러 개 넣어서 만든 동종 멀티코어(Homogeneous Multi-Core) 시스템을 이용해서 멀티프로세싱을 처리하는 방법을 사용해왔다.
동종 멀티코어 시스템은 수행할 멀티미디어 데이터 처리를 여러 프로세서에 나눠서 처리하긴 하지만, 멀티코어에 들어있는 프로세서들이 동일한 범용 프로세서(코어)이기 때문에, 다양한 특성을 갖는 쓰레드를 처리할 때, 최적화 되지 않은 프로세서를 사용하게 되고, 그것 때문에 성능 향상이 제한적일 수밖에 없다.
도 1 은 종래의 멀티 쓰레드 작업을 수행할 때 코어를 배정하는 방식을 보여주고 있다.
종래의 방식은 메인 프로세스에서 새로운 쓰레드가 생성될 때마다, 사용이 가능한 프로세서 코어 목록에서 순차적으로 하나씩 배정해서 쓰레드를 처리하게 하는 방법이다.
이러한 방법은 모든 코어가 동일한 명령어 집합을 갖는 같은 종류의 ASIP(Application Specific Instruction-set Processor) 코어로 이루어진 동종 멀티코어 칩을 사용할 때는 문제가 없지만, 개별 코어가 서로 다른 종류(타입)의 ASIP 코어일 경우 성능에 문제가 생기게 된다.
예를 들어 도 1 에서 쓰레드1에 코어를 배정할 때, 종래의 방법은 순차적으로 배정하기 때문에 코어3이 쓰레드1을 수행하는데 가장 적합한 코어(프로세서)라 하더라도 코어1을 배정하게 된다.
이러한 방법은 이종 멀티코어 환경에서는 적합하지 않으며, 최고의 성능을 올리기 위해서는 각각의 쓰레드에 적합한 코어를 찾아 배정해야 획기적인 성능 향상을 기대할 수 있다.
또한, 종래에는 이종 멀티코어 환경에서 쓰레드에 코어를 할당하는 방법으로써, 쓰레드 수행을 위해서 하드웨어 구조를 재설계하여 쓰레드 수행시 전력 소모와 프로세서 면적을 감소하는 기술이 개시되었다.
그러나, 이러한 방법은 하드웨어 구조를 재설계하여야 하는 문제점이 있었다.
본 발명의 배경기술은 대한민국 특허공개번호 10-2008-0076392호(2008.08.20)에 개시되어 있다.
Recently, in the IT market, users are increasingly demanding high-performance low-power processors, and application programs are changing to a mode of handling multiple services at the same time. In order to cope with these requirements, Improving performance with a processor is evolving into a multiprocessor or multi-core environment that uses multiple processors because of problems.
Conventional multiprocessing has employed a multiprocessing approach using a homogeneous processor (general purpose processor) or a homogeneous multi-core system created by combining several specially designed single processors.
A homogeneous multicore system handles the processing of multimedia data to be executed by dividing it into multiple processors. However, since the processors in a multicore are the same general-purpose processor (core), when processing a thread with various characteristics, So that the performance improvement is limited.
FIG. 1 shows a method of allocating a core when performing a conventional multi-thread operation.
In the conventional method, whenever a new thread is created in the main process, the thread is sequentially allocated one by one in the available processor core list to process the thread.
This method is not problematic when using a homogeneous multicore chip made up of the same kind of ASIP (Application Specific Instruction-Set Processor) core in which all cores have the same instruction set, but when the individual cores are different types of ASIP cores There is a performance problem.
For example, when allocating cores to the thread 1 in FIG. 1, since the conventional method is allocated sequentially, the core 3 allocates the core 1 even if it is the most suitable core (processor) for executing the thread 1.
This method is not suitable for heterogeneous multi-core environments. In order to achieve the best performance, it is necessary to find and allocate a core suitable for each thread, thereby achieving a remarkable improvement in performance.
Conventionally, as a method of assigning a core to a thread in a heterogeneous multicore environment, a technique for reducing power consumption and a processor area when a thread is executed by redesigning a hardware structure for thread execution has been disclosed.
However, this method has a problem of redesigning the hardware structure.
The background art of the present invention is disclosed in Korean Patent Publication No. 10-2008-0076392 (2008.08.20).

본 발명은 전술한 문제점을 개선하기 위해 창작된 것으로서, 서로 다른 명령어 집합(Instruction Set)을 갖는 ASIP(Application Specific Instruction-set Processor) 코어로 이루어진 멀티코어 시스템에서 멀티 쓰레드 작업을 수행할 때 개별 쓰레드에 적합한 ASIP 코어를 배정하는 이종 멀티코어 환경에서의 코어 배정 장치를 제공하는데 그 목적이 있다.The present invention has been made in order to solve the above-mentioned problems, and it is an object of the present invention to provide an ASIP (Application Specific Instruction Set Processor) core having a different instruction set, And an object of the present invention is to provide a core allocation apparatus in a heterogeneous multicore environment in which a suitable ASIP core is allocated.

본 발명의 일 측면에 따른 이종 멀티코어 환경에서의 코어 배정 장치는 코어 정보 및 쓰레드에 코어를 지정하는 방식을 정의한 코어 배정 정보를 저장하는 코어배정 데이터 저장부; 상기 코어배정 데이터 저장부에 저장된 상기 코어 정보와 상기 코어 배정 정보를 이용하여 상기 쓰레드 각각에 상기 코어를 배정하는 스케쥴러; 및 상기 스케쥴러의 배정 명령에 따라 상기 쓰레드 별로 상기 코어를 연결시키는 바인더부를 포함하는 것을 특징으로 한다.A core allocation apparatus in a heterogeneous multicore environment according to an aspect of the present invention includes: a core allocation data storage unit for storing core allocation information defining core information and a method of specifying a core in a thread; A scheduler for allocating the cores to each of the threads using the core information and the core allocation information stored in the core allocation data storage unit; And a binder unit connecting the cores according to the scheduling instruction of the scheduler.

본 발명은 기 설정된 코어 타입에 따라 쓰레드별로 코어를 배정하거나, 자동 탐색 기능을 통해 최적의 코어 배정 방법을 찾아내 각 쓰레드 별로 적합한 코어를 배정함으로써, 멀티 쓰레드 환경에서 단순히 프로세서 개수만 늘려서 멀티프로세싱을 하는 방식으로는 구현할 수 없었던 시스템의 성능을 향상시킨다. According to the present invention, by assigning a core to each thread according to a preset core type, or by finding an optimum core allocation method through an automatic search function and allocating a proper core for each thread, the number of processors is increased in a multi- Which improves the performance of the system, which could not be implemented in such a way.

도 1 은 종래의 순차적 코어 배정 방법을 도시한 도면이다.
도 2 는 본 발명의 일 실시예에 따른 이종 멀티코어 환경에서의 코어 배정 장치의 블럭 구성도이다.
도 3 은 본 발명의 일 실시예에 따른 이종 멀티코어 환경에서의 쓰레드에 설정된 코어 타입에 따라 쓰레드에 코어를 배정하는 예를 도시한 도면이다.
도 4 는 도 3 의 쓰레드에 지정된 코어 타입을 사용할 때 조합 가능한 경우의 수를 도시한 도면이다.
도 5 는 본 발명의 일 실시예에 따른 자동 탐색 기능을 이용하여 쓰레드에 코어를 배정하는 방법을 도시한 도면이다.
도 6 은 도 5 의 전체 코어 타입에 대해 쓰레드를 배정할 때 조합 가능한 경우의 수를 도시한 도면이다.
1 is a diagram showing a conventional sequential core allocation method.
2 is a block diagram of a core allocation apparatus in a heterogeneous multicore environment according to an embodiment of the present invention.
3 is a diagram illustrating an example of assigning a core to a thread according to a core type set in a thread in a heterogeneous multicore environment according to an embodiment of the present invention.
Fig. 4 is a diagram showing the number of possible combinations when using the core type specified in the thread of Fig. 3; Fig.
5 is a diagram illustrating a method of allocating a core to a thread using an automatic search function according to an embodiment of the present invention.
FIG. 6 is a diagram showing the number of possible combinations when assigning threads to the entire core type of FIG. 5; FIG.

이하에서는 본 발명의 일 실시예에 따른 이종 멀티코어 환경에서의 코어 배정 장치를 첨부된 도면을 참조하여 상세하게 설명한다. 이 과정에서 도면에 도시된 선들의 두께나 구성요소의 크기 등은 설명의 명료성과 편의상 과장되게 도시되어 있을 수 있다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례에 따라 달라질 수 있다. 그러므로, 이러한 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 2 는 본 발명의 일 실시예에 따른 이종 멀티코어 환경에서의 코어 배정 장치의 블럭 구성도이다.
본 발명의 일 실시예에 따른 이종 멀티코어 환경에서의 코어 배정 장치는 도 도 1 에 도시된 바와 같이, 코어배정 데이터 저장부(230), 코어 탐색엔진부(220), 스케쥴러(240) 및 바인더부(250)를 포함한다.
코어배정 데이터 저장부(230)는 코어 정보 및 쓰레드에 코어를 배정하는 방식을 정의한 코어 배정 정보를 포함한다.
여기서, 코어 정보는 코어에 대한 다양한 정보를 포함하며, 특히 코어의 특성에 따라 각각 정의된 코어 타입을 포함한다.
코어 배정 정보는 쓰레드에 코어를 배정하는 방법을 정의한 정보로써, 쓰레드에 코어 타입이 지정되었는지 여부에 따라 다양하게 정의될 수 있다.
즉, 코어 배정 정보는 쓰레드에 코어 타입이 지정된 경우에는, 각 쓰레드 별로 지정된 코어 타입에 해당하는 코어를 해당 쓰레드에 배정하는 방식으로 정의된다.
그러나, 쓰레드에 코어 타입이 지정되지 않는 경우에는, 쓰레드 별로 각 코어 타입의 코어를 모두 조합하고, 각각의 조합 결과에 따른 성능을 평가한 후에 이들 중 가장 성능이 우수한 최적의 조합으로 정의된다. 이러한 코어 배정 정보는 코어 탐색엔진부(220)에 의해 생성된다.
코어 탐색엔진부(220)는 상기한 바와 같이 쓰레드에 코어 타입이 지정되지 않은 경우, 코어 배정정보 저장부에서 코어 정보를 읽어들여 코어별로 코어 타입을 체크하고, 각 쓰레드에 각 코어 타입의 코어를 다양하게 배정하여 최적의 코어 배정 정보를 생성하고, 생성된 코어 배정 정보를 코어 배정정보 저장부에 기록한다.
즉, 코어 탐색엔진부(220)는 사용자에 의해 코어 타입이 지정되지 않은 경우, 코어배정정보 저장부에서 코어 정보를 읽어들이고, 각 쓰레드 별로 코어를 배정하여 쓰레드 별로 코어 타입 배정에 대해 가능한 모든 조합을 대상으로 하는 전체 탐색 영역을 찾아서 성능을 평가한 후 최적의 코어 배정 정보를 검색한다. 검색 결과 최적의 코어 배정 정보를 생성하면, 이 코어 배정 정보를 코어배정 데이터 저장부(230)에 저장한다.
스케쥴러(240)는 코어배정 데이터 저장부(230)에 저장된 코어 정보와 코어 배정 정보를 이용하여 쓰레드 각각에 코어를 배정한다.
이러한 스케쥴러(240)는 상기한 바와 같이, 각 쓰레드 별로 코어 타입이 지정된 코어 배정 정보가 저장되어 있으면, 이 코어 배정 정보에 따라 각 쓰레드 별로 코어를 배정한다.
그러나, 각 쓰레드 별로 코어 타입이 지정되지 않아 코어 탐색엔진부(220)에 의해 생성된 코어 배정 정보가 저장되어 있으면, 코어 탐색엔진부(220)에 의해 생성된 코어 배정 정보에 따라 각 쓰레드 별로 코어를 배정한다.
바인더부(250)는 스케쥴러(240)의 배정 명령에 따라 쓰레드 각각에 코어를 배정하여 연결시킴으로써, 쓰레드 각각을 해당 쓰레드 각각에 배정된 코어에서 수행하도록 한다.
즉, 본 발명의 일 실시예에 따른 이종 멀티코어 환경에서의 코어 배정 장치는 상기한 바와 같이, 코어 배정 정보를 기반으로 쓰레드 별로 코어를 배정한다.
이 경우, 사용자 등에 의해 쓰레드 별로 코어 타입이 지정되어 있으면, 쓰레드에 지정된 코어 타입에 속하는 코어를 해당 쓰레드에 배정하고, 반면에 쓰레드 별로 코어 타입이 지정되어 있지 않으면, 코어 탐색엔진부(220)에서 쓰레드 별로 코어 배정에 대해 가능한 모든 조합을 대상으로 하는 전체 탐색 영역을 찾아서 성능을 평가한 후에 최적의 코어 배정 정보를 결정하고, 이를 통해 각 쓰레드 별로 코어를 배정하게 된다.
참고로, 본 실시예에서의 이종 멀티코어는 특정 명령어 집합을 구현한 ASIP(Application Specific Instruction-set Processor) 코어를 특성에 따라 한정된 개수의 코어 타입으로 분류하고, 같은 코어 타입의 코어는 특정 작업에 대해 유사한 성능을 발휘하도록 그룹화된 것을 예시로 설명한다.
이하, 쓰레드에 코어 타입이 지정된 경우와 지정되지 않는 경우, 쓰레드에 코어를 할당하는 과정을 더욱 상세하게 설명한다.
도 3 은 본 발명의 일 실시예에 따른 이종 멀티코어 환경에서의 쓰레드에 설정된 코어 타입에 따라 쓰레드에 코어를 배정하는 예를 도시한 도면이고, 도 4 는 도 3 의 쓰레드에 지정된 코어 타입을 사용할 때 조합 가능한 경우의 수를 도시한 도면이다.
참고로, 본 실시예에서는 코어 타입이 코어 타입A(360), 코어 타입B(370), 코어 타입C(380) 및 코어 타입D(390)로 구분되고, 코어 타입A(360)에는 코어 A0, 코어 A1, 코어 A2가 포함되며, 코어 타입B(370)에는 코어 B3가 포함되며, 코어 타입C(380)에는 코어 C4, 코어 C5가 포함되며, 코어 타입D(390)에는 코어 D6, 코어 D7이 포함되는 것을 예시로 설명한다.
아울러, 코어 타입A(360)에 속하는 프로세서 코어인 코어A0(361), 코어A1(362) 그리고 코어A2(363)은 특정 쓰레드 작업에 대해 개별적으로 성능이 약간 차이가 나지만 다른 코어 타입B(370), 코어 타입C(380) 및 코어 타입D(390) 보다는 성능이 뛰어나다.
그러나, 본 발명의 기술적 범위는 상기한 실시예에 한정되는 것은 아니며, 더욱 세분화되고 다양한 코어 타입으로 구분되고, 각 코어 타입에는 다양한 개수의 코어가 포함되는 것을 모두 포함한다할 것이다.
먼저, 쓰레드 별로 코어 타입이 지정된 경우는, 쓰레드의 특성과 코어 타입의 특성을 모두 알고 있는 경우에 사용될 수 있다.
이 경우, 스케쥴러(240)는 코어배정 데이터 저장부(230)에서 코어 배정 정보를 입력받는데, 쓰레드가 생성될 때 해당 코어 타입에 대한 정보도 같이 제공한다.
이 경우, 코어 배정 정보에서, 쓰레드 별로 코어 타입이 지정되어 있기 때문에 스케쥴러(240)는 해당 코어 타입에 속한 코어 종류 중에서 사용 가능한 코어를 배정한다.
따라서, 도 3 에 도시된 바와 같이, 코어를 코어 타입별로 배정할 경우, 쓰레드0(320)에 배정할 코어 타입은 코어 타입A(360)이므로, 코어A0, 코어A1, 코어 A2 중 어느 하나 이상이 가능하다.
이는 나머지 코어 타입B, 코어 타입C 및 코어 타입D에서도 동일하게 적용될 수 있다.
따라서 도 4 에 도시된 바와 같이, 4개의 쓰레드(320,330,340,350)에 코어를 배정하는 방법은 코어 타입A(360)의 3가지, 코어 타입B(370)의 1가지, 코어 타입C(380)의 2가지 그리고 코어 타입D(390)의 2가지가 될 수 있고, 각 경우를 곱하면 총 12가지 경우의 수가 나온다.
이와 같이, 쓰레드에 코어 타입이 지정된 경우에는, 쓰레드에 코어를 배정한 각 조합간에 약간의 성능 차이는 발생될 수 있다. 그러나, 각 코어 타입이 그 성능 별로 구분된 것이므로, 큰 성능 차이가 크게 발생하지는 않게 된다.
다음은 쓰레드에 코어가 지정되는 않은 경우, 쓰레드에 코어를 배정하는 과정을 설명한다.
도 5 는 본 발명의 일 실시예에 따른 자동 탐색 기능을 이용하여 쓰레드에 코어를 배정하는 방법을 도시한 도면이고, 도 6 은 도 5 의 전체 코어 타입에 대해 쓰레드를 배정할 때 조합 가능한 경우의 수를 도시한 도면이다.
사용자가 쓰레드 별로 코어 타입을 지정하지 않는 경우는 코어 검색엔진부(220)를 이용해서 쓰레드 별로 코어타입 지정에 대해 가능한 모든 조합을 대상으로 하는 전체 탐색 영역을 찾아서 성능을 평가한 후에 최적의 코어 배정 정보를 결정한다.
이 경우 도 5 에 도시된 바와 같이, 생성된 쓰레드1(510)은 코어 타입A(550)에서 수행될 수도 있으나, 나머지 코어 타입B(560), 코어 타입C(570), 코어 타입D(580)에서 수행될 수도 있다.
게다가, 쓰레드2(520), 쓰레드3(530), 쓰레드4(540)도 코어 타입A(550)도 코어 타입B(560) 뿐만 아니라, 코어 타입A(550), 코어 타입C(570), 코어 타입D(580) 에서도 수행될 수 있다.
즉, 쓰레드1(510), 쓰레드2(520), 쓰레드3(530) 및 쓰레드4(540)가 모든 코어 타입에 의해 수행될 수 있다.
따라서, 코어 탐색엔진(220)은 가능한 조합을 모두 탐색해서 실제로 가능한 조합 각각에 대한 성능 평가를 통해 최적의 코어 배정 방식을 결정하고, 이 코어 배정 정보를 코어배정 데이터 저장부(230)에 저장한다.
이를 통해, 차후에 프로그램을 수행할 때 쓰레드 별로 최적의 코어에서 수행시킴으로써, 최적의 성능 향상을 이룰 수 있다.
도 6 은 도 5 에 나와 있는 모든 경우에 대한 코어 배정 조합으로 가능한 경우 수는 순열로 4!(4x3x2x1)이므로, 24가지 서로 다른 방법이 존재하게 된다.
이러한 방법은 모든 가능한 조합에 대해 성능 평가를 하기 때문에 가장 최적의 코어 배정 정보를 얻을 수 있다.
상술한 바와 같이 본 발명은 서로 다른 작업처리에 최적화된 ASIP 코어 기반 멀티코어 멀티쓰레드 시스템에서, 코어를 쓰레드에 대응되는 복수 개의 코어 타입으로 구분하고, 쓰레드가 생성될 때 해당 쓰레드에 최적화된 코어 타입의 코어를 배정함으로서 단순히 순차적으로 쓰레드에 코어를 배정하는 방식에 비해 시스템의 성능을 크게 향상시킬 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 하여 설명되었으나, 이는 예시적인 것에 불과하며, 당해 기술이 속하는 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 기술적 보호범위는 아래의 특허청구범위에 의해서 정하여져야 할 것이다.
Hereinafter, a core allocation apparatus in a heterogeneous multicore environment according to an embodiment of the present invention will be described in detail with reference to the accompanying drawings. In this process, the thicknesses of the lines and the sizes of the components shown in the drawings may be exaggerated for clarity and convenience of explanation. In addition, the terms described below are defined in consideration of the functions of the present invention, which may vary depending on the intention or custom of the user, the operator. Therefore, definitions of these terms should be made based on the contents throughout this specification.
2 is a block diagram of a core allocation apparatus in a heterogeneous multicore environment according to an embodiment of the present invention.
1, a core allocation apparatus in a heterogeneous multicore environment according to an embodiment of the present invention includes a core allocation data storage unit 230, a core search engine unit 220, a scheduler 240, (250).
The core allocation data storage unit 230 includes core allocation information defining core information and a method of allocating cores to the threads.
Here, the core information includes various types of information about the core, and in particular, core types defined according to characteristics of the core.
The core allocation information defines how to allocate a core to a thread, and can be variously defined depending on whether or not the core is assigned to the thread.
That is, when the core type is designated to the thread, the core allocation information is defined as a method of allocating a core corresponding to the core type designated for each thread to the thread.
However, when the core type is not specified in the thread, the core is combined with each core type for each thread, and the performance according to the result of each combination is evaluated, and then the best combination of these is defined as the optimal combination. The core allocation information is generated by the core search engine unit 220.
If the core type is not specified in the thread as described above, the core search engine unit 220 reads the core information from the core allocation information storage unit, checks the core type for each core, and sets each core type core Thereby generating optimum core allocation information, and recording the generated core allocation information in the core allocation information storage unit.
That is, when the core type is not specified by the user, the core search engine unit 220 reads the core information from the core allocation information storage unit, allocates cores for each thread, And searches for the optimal core allocation information after evaluating the performance. When the optimum core allocation information is generated as a result of the search, the core allocation data storage unit 230 stores the core allocation information.
The scheduler 240 allocates cores to the threads using the core information and the core allocation information stored in the core allocation data storage unit 230. [
As described above, the scheduler 240 allocates cores for each thread according to the core allocation information if the core allocation information having the core type specified for each thread is stored.
However, if the core type information generated by the core search engine unit 220 is not stored for each thread and the core type information is stored for each thread, the core allocation information generated by the core search engine unit 220 is stored in the core .
The binder unit 250 allocates and connects the cores to the threads according to the allocation instruction of the scheduler 240 so that each of the threads is executed on the core assigned to each of the threads.
That is, as described above, the core allocation apparatus in the heterogeneous multicore environment according to the embodiment of the present invention allocates cores on a thread-by-thread basis based on the core allocation information.
In this case, if a core type is designated for each thread by a user or the like, a core belonging to a core type assigned to the thread is allocated to the thread, whereas if the core type is not designated for each thread, After searching the entire search area for all possible combinations of threads for each thread, evaluating the performance, determining the optimal core allocation information, and allocating the core for each thread.
For reference, the heterogeneous multicore in this embodiment classifies an ASIP (Application Specific Instruction-Set Processor) core that implements a specific instruction set into a limited number of core types according to characteristics, Are grouped so as to exhibit similar performance with respect to each other.
Hereinafter, the process of assigning a core to a thread will be described in more detail, if the thread is assigned a core type or not.
3 is a diagram illustrating an example of assigning a core to a thread according to a core type set in a thread in a heterogeneous multicore environment according to an embodiment of the present invention. Fig. 2 is a diagram showing the number of combinations when possible.
For reference, in this embodiment, the core type is divided into a core type A (360), a core type B (370), a core type C (380) and a core type D (390) The core type B 370 includes the core B3, the core type C 380 includes the core C4 and the core C5, the core type D 390 includes the core D6, D7 will be described as an example.
The core A0 361, core A1 362 and core A2 363 belonging to the core type A 360 individually have slightly different performance for a specific thread work but different core types B 370 ), Core type C (380) and core type D (390).
However, the technical scope of the present invention is not limited to the above-described embodiments, but may be further divided into various core types, and each core type includes all the various numbers of cores included.
First, if a core type is specified for each thread, it can be used when both the characteristics of the thread and the characteristics of the core type are known.
In this case, the scheduler 240 receives the core allocation information from the core allocation data storage unit 230, and also provides information on the core type when the thread is generated.
In this case, since the core type is designated for each thread in the core allocation information, the scheduler 240 assigns a usable core among the core types belonging to the core type.
3, since the core type to be allocated to the thread 0 320 is the core type A 360, it is preferable that at least one of the core A 0, the core A 1 and the core A 2 This is possible.
The same applies to the remaining core type B, core type C and core type D.
4, there are three methods of allocating cores to the four threads 320, 330, 340 and 350: three types of core type A 360, one type of core type B 370, two types of core type C 380 Branch type, and core type D (390), and multiplying each case gives a total of 12 cases.
Thus, when a core type is assigned to a thread, some performance difference may occur between each combination of assigning a core to a thread. However, since each core type is classified according to its performance, a large performance difference does not occur.
The following describes the process of assigning a core to a thread if the thread is not assigned a core.
FIG. 5 is a diagram illustrating a method of assigning a core to a thread using an automatic search function according to an embodiment of the present invention. FIG. 6 is a flowchart illustrating a method of assigning a core Fig.
If the user does not specify the core type for each thread, the core search engine unit 220 is used to find the entire search area for all possible combinations of core types for each thread, evaluate the performance, Determine information.
5, the generated thread 1 510 may be executed in the core type A 550, but the remaining core type B 560, core type C 570, core type D 580 ). ≪ / RTI >
In addition to the core type A (550), the core type A (550), the core type C (570), and the core type A (550) Core Type D (580).
That is, thread 1 510, thread 2 520, thread 3 530, and thread 4 540 may be performed by all core types.
Accordingly, the core search engine 220 searches all the possible combinations, determines an optimal method of allocating the cores through performance evaluation for each of the possible combinations, and stores the core allocation information in the core allocation data storage unit 230 .
Thus, when the program is executed in the future, optimum performance can be achieved by executing the program on an optimum core for each thread.
FIG. 6 shows that there are 24 different methods because the number of permutations possible is 4! (4x3x2x1) as a permutation if possible in all cases shown in FIG.
Since this method performs performance evaluation for all possible combinations, it is possible to obtain the most optimal core allocation information.
As described above, in the ASIP core-based multicore multi-thread system optimized for different task processes, the core is divided into a plurality of core types corresponding to threads, and a core type optimized for the thread The performance of the system can be greatly improved as compared with a method of simply allocating the cores to the threads sequentially.
While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. I will understand. Accordingly, the technical scope of the present invention should be defined by the following claims.

220: 코어 탐색엔진부 230: 코어 배정 데이터 저장부
240: 스케쥴러 250: 바인더부
220: core search engine unit 230: core assignment data storage unit
240: scheduler 250: binder part

Claims (12)

코어의 특성에 따라 그룹화된 복수의 코어 타입들 중 코어 타입에 대한 정보를 포함하는 코어 정보, 및 쓰레드에 상기 코어 타입을 지정하는 방식을 정의한 코어 배정 정보를 저장하는 코어배정 데이터 저장부;
상기 코어배정 데이터 저장부에 저장된 상기 코어 정보와 상기 코어 배정 정보를 이용하여 상기 쓰레드에 지정된 상기 코어 타입에 포함된 복수의 코어들 중 하나의 코어를 선택하여 상기 쓰레드에 배정하는 스케쥴러; 및
상기 스케쥴러의 배정 명령에 따라 상기 쓰레드와 상기 배정된 코어를 연결시키는 바인더부를 포함하는 코어 배정 장치.
A core allocation data storage unit for storing core allocation information that defines core information including information on a core type among a plurality of core types grouped according to characteristics of the core and a method for specifying the core type in a thread;
A scheduler for selecting one core among a plurality of cores included in the core type specified in the thread using the core information and the core allocation information stored in the core allocation data storage unit and assigning the selected core to the thread; And
And a binder unit for connecting the thread and the allocated core according to a scheduling instruction of the scheduler.
삭제delete 제1 항에 있어서,
상기 복수의 코어 타입들은 서로 다른 특성을 갖고,
상기 코어는 상기 특성에 따라 상기 복수의 코어 타입 중 어느 하나로 분류되는 코어 배정 장치.
The method according to claim 1,
The plurality of core types having different characteristics,
Wherein the core is classified into one of the plurality of core types according to the characteristic.
삭제delete 제1 항에 있어서,
상기 스케쥴러는,
상기 쓰레드에 배정되는 상기 코어 타입에 대응되는 코어 중 사용 가능한 코어를 배정하는 코어 배정 장치.
The method according to claim 1,
The scheduler includes:
And allocates usable cores among the cores corresponding to the core types assigned to the threads.
제1 항에 있어서,
상기 쓰레드에 상기 코어를 지정하는 방식이 정의되지 않은 경우, 상기 코어 정보에 근거하여 새로운 코어 배정 정보를 생성하는 코어 탐색엔진부를 더 포함하는 코어 배정 장치.
The method according to claim 1,
Further comprising a core search engine for generating new core allocation information based on the core information if a manner of assigning the core to the thread is not defined.
제6 항에 있어서,
상기 코어 탐색엔진부는,
상기 코어배정 데이터 저장부로부터 상기 코어 정보를 수신하고, 상기 쓰레드 별로 상기 코어 타입을 모두 조합하여 상기 새로운 코어 배정 정보를 생성하고, 상기 새로운 코어 배정 정보를 상기 코어배정 데이터 저장부에 제공하는 코어 배정 장치.
The method according to claim 6,
The core search engine unit,
A core allocation data storing unit for storing the core allocation data in the core allocation data storing unit, the core allocation data storing unit for storing the core allocation data, Device.
제7 항에 있어서,
상기 코어 탐색엔진부는,
상기 조합 결과에 따른 성능을 평가하고, 상기 평가된 성능에 근거하여 코어 배정 방식을 결정하여 상기 새로운 코어 배정 정보를 생성하는 코어 배정 장치.
8. The method of claim 7,
The core search engine unit,
Evaluating performance based on the combination result, and determining a core allocation method based on the evaluated performance to generate the new core allocation information.
제8 항에 있어서,
상기 코어 탐색엔진부는,
서로 다른 복수의 상기 쓰레드 각각에 서로 다른 복수의 상기 코어 타입 중 어느 하나를 배정하는 개수만큼 상기 조합 결과를 생성하는 코어 배정 장치.
9. The method of claim 8,
The core search engine unit,
And generates the combination result by the number of assigning any one of a plurality of different core types to each of the plurality of different threads.
제6 항에 있어서,
상기 스케쥴러는,
상기 쓰레드에 상기 코어를 지정하는 방식이 정의되지 않은 경우에 상기 코어 탐색엔진부가 생성한 상기 새로운 코어 배정 정보를 상기 코어배정 데이터 저장부로부터 수신하는 코어 배정 장치.
The method according to claim 6,
The scheduler includes:
And receives the new core allocation information generated by the core search engine unit from the core allocation data storage unit when the manner of designating the core to the thread is not defined.
코어 배정 데이터 저장부에 코어 특성에 따라 정의된 코어 타입에 대한 정보를 포함하는 코어 정보 및 쓰레드에 상기 코어 타입을 지정하는 코어 배정 정보를 저장하는 단계;
상기 쓰레드에 상기 코어 타입이 지정된 경우, 스케쥴러가 상기 코어 타입에 포함된 복수의 코어들 중 하나의 코어를 선택하여 상기 쓰레드에 배정하는 단계;
상기 쓰레드에 상기 코어 타입이 지정되지 않은 경우, 코어 탐색엔진부가 상기 코어 정보를 수신하여 상기 쓰레드에 상기 코어를 지정하는 새로운 코어 배정 정보를 생성하는 단계; 및
상기 코어 배정 데이터 저장부가 상기 새로운 코어 배정 정보를 저장하고, 상기 스케쥴러가 상기 새로운 코어 배정 정보에 근거하여 상기 쓰레드에 상기 코어를 배정하는 단계를 포함하는 코어 배정 방법.
Storing core allocation information for specifying the core type in a thread and core information including information on a core type defined according to core characteristics in a core allocation data storage unit;
Selecting a core of a plurality of cores included in the core type and assigning the core to the thread when the core type is designated to the thread;
If the core type is not specified in the thread, the core search engine unit receives the core information and generates new core allocation information specifying the core in the thread; And
Wherein the core allocation data storage stores the new core allocation information and the scheduler allocates the core to the thread based on the new core allocation information.
제11 항에 있어서,
상기 새로운 코어 배정 정보를 생성하는 단계는,
상기 쓰레드 별로 상기 코어 타입을 모두 조합하는 단계; 및
상기 조합 결과에 따른 성능을 평가하여 코어 배정 방식을 선택하는 단계를 포함하는 코어 배정 방법.
12. The method of claim 11,
Wherein the step of generating the new core allocation information comprises:
Combining all the core types for each thread; And
And evaluating performance based on the result of the combination to select a core allocation method.
KR1020110133947A 2011-12-13 2011-12-13 Core allocation apparatus in different multi-core Active KR101869325B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110133947A KR101869325B1 (en) 2011-12-13 2011-12-13 Core allocation apparatus in different multi-core

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110133947A KR101869325B1 (en) 2011-12-13 2011-12-13 Core allocation apparatus in different multi-core

Publications (2)

Publication Number Publication Date
KR20130067100A KR20130067100A (en) 2013-06-21
KR101869325B1 true KR101869325B1 (en) 2018-06-21

Family

ID=48863083

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110133947A Active KR101869325B1 (en) 2011-12-13 2011-12-13 Core allocation apparatus in different multi-core

Country Status (1)

Country Link
KR (1) KR101869325B1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101684677B1 (en) * 2013-12-26 2016-12-09 한국전자통신연구원 Apparatus and method for optimizing system performance of multi-core system
KR102197874B1 (en) 2014-09-01 2021-01-05 삼성전자주식회사 System on chip including multi-core processor and thread scheduling method thereof
KR102464678B1 (en) * 2016-03-18 2022-11-11 한국전자통신연구원 Method and apparatus for scheduling thread in a in manycore system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090031317A1 (en) 2007-07-24 2009-01-29 Microsoft Corporation Scheduling threads in multi-core systems
US20110067029A1 (en) * 2009-09-11 2011-03-17 Andrew Wolfe Thread shift: allocating threads to cores

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4028444B2 (en) * 2003-06-27 2007-12-26 株式会社東芝 Scheduling method and real-time processing system
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
KR100888675B1 (en) * 2007-02-15 2009-03-13 고려대학교 산학협력단 Extended processor for multithreaded execution on the embedded core and multithreaded execution on the embedded core
US7958333B2 (en) * 2007-05-30 2011-06-07 XMOS Ltd. Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected
KR101553650B1 (en) * 2008-12-24 2015-09-16 삼성전자주식회사 Load Balancing Device and Method in Multicore Systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090031317A1 (en) 2007-07-24 2009-01-29 Microsoft Corporation Scheduling threads in multi-core systems
US20110067029A1 (en) * 2009-09-11 2011-03-17 Andrew Wolfe Thread shift: allocating threads to cores

Also Published As

Publication number Publication date
KR20130067100A (en) 2013-06-21

Similar Documents

Publication Publication Date Title
US9047196B2 (en) Usage aware NUMA process scheduling
US8700838B2 (en) Allocating heaps in NUMA systems
KR101666395B1 (en) Priority based RTOS task scheduling method in multicore environment
US8813073B2 (en) Compiling apparatus and method of a multicore device
TWI533211B (en) Computer system, method and computer-readable storage medium for tasks scheduling
US8732714B2 (en) Method for reorganizing tasks for optimization of resources
US20090025004A1 (en) Scheduling by Growing and Shrinking Resource Allocation
US20030056091A1 (en) Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
US20120278811A1 (en) Stream processing on heterogeneous hardware devices
US20150186184A1 (en) Apparatus and method for optimizing system performance of multi-core system
US6304866B1 (en) Aggregate job performance in a multiprocessing system by incremental and on-demand task allocation among multiple concurrently operating threads
US9612867B2 (en) Apparatus and method for data partition and allocation in heterogeneous multi-processor environment
CN106980532A (en) A kind of job scheduling method and device
KR20110075297A (en) Parallel Processing Unit and Method Considering Parallelism
KR102552954B1 (en) Computing system and method for operating computing system
JP2006244479A (en) System and method for scheduling executable program
Dunstall et al. Heuristic methods for the identical parallel machine flowtime problem with set-up times
US8352702B2 (en) Data processing system memory allocation
KR101177059B1 (en) Method for dynamically assigned of parallel control module
KR101869325B1 (en) Core allocation apparatus in different multi-core
Hsiao et al. A usage-aware scheduler for improving MapReduce performance in heterogeneous environments
KR101998278B1 (en) Scheduling apparatus and method for dynamically setting rotating register size
US20110239217A1 (en) Performing a wait operation to wait for one or more tasks to complete
CN111209099A (en) Multi-thread pool scheduling method and scheduling terminal based on ganesha service
US20180181443A1 (en) METHOD OF PROCESSING OpenCL KERNEL AND COMPUTING DEVICE THEREFOR

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20111213

PG1501 Laying open of application
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20161213

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20111213

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20170911

Patent event code: PE09021S01D

E90F Notification of reason for final refusal
PE0902 Notice of grounds for rejection

Comment text: Final Notice of Reason for Refusal

Patent event date: 20180220

Patent event code: PE09021S02D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20180605

PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20180614

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20180615

End annual number: 3

Start annual number: 1

PG1601 Publication of registration