KR101869325B1 - Core allocation apparatus in different multi-core - Google Patents
Core allocation apparatus in different multi-core Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000013500 data storage Methods 0.000 claims abstract description 16
- 239000011230 binding agent Substances 0.000 claims abstract description 5
- 238000010586 diagram Methods 0.000 description 10
- 238000007796 conventional method Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
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/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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction 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
본 발명은 이종 멀티코어 환경에서의 코어 배정 장치에 관한 것으로서, 더욱 상세하게는 여러 개의 서비스 또는 작업을 쓰레드로 처리하는 이종 멀티코어 환경에서 각 쓰레드에 코어를 배정하는 이종 멀티코어 환경에서의 코어 배정 장치에 관한 것이다.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
The core allocation
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
If the core type is not specified in the thread as described above, the core
That is, when the core type is not specified by the user, the core
The
As described above, the
However, if the core type information generated by the core
The
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
The core A0 361, core A1 362 and core A2 363 belonging to the
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
In this case, since the core type is designated for each thread in the core allocation information, the
3, since the core type to be allocated to the thread 0 320 is the
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
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
5, the generated thread 1 510 may be executed in the
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
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.
상기 복수의 코어 타입들은 서로 다른 특성을 갖고,
상기 코어는 상기 특성에 따라 상기 복수의 코어 타입 중 어느 하나로 분류되는 코어 배정 장치.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.
상기 스케쥴러는,
상기 쓰레드에 배정되는 상기 코어 타입에 대응되는 코어 중 사용 가능한 코어를 배정하는 코어 배정 장치.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.
상기 쓰레드에 상기 코어를 지정하는 방식이 정의되지 않은 경우, 상기 코어 정보에 근거하여 새로운 코어 배정 정보를 생성하는 코어 탐색엔진부를 더 포함하는 코어 배정 장치.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.
상기 코어 탐색엔진부는,
상기 코어배정 데이터 저장부로부터 상기 코어 정보를 수신하고, 상기 쓰레드 별로 상기 코어 타입을 모두 조합하여 상기 새로운 코어 배정 정보를 생성하고, 상기 새로운 코어 배정 정보를 상기 코어배정 데이터 저장부에 제공하는 코어 배정 장치.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.
상기 코어 탐색엔진부는,
상기 조합 결과에 따른 성능을 평가하고, 상기 평가된 성능에 근거하여 코어 배정 방식을 결정하여 상기 새로운 코어 배정 정보를 생성하는 코어 배정 장치.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.
상기 코어 탐색엔진부는,
서로 다른 복수의 상기 쓰레드 각각에 서로 다른 복수의 상기 코어 타입 중 어느 하나를 배정하는 개수만큼 상기 조합 결과를 생성하는 코어 배정 장치.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.
상기 스케쥴러는,
상기 쓰레드에 상기 코어를 지정하는 방식이 정의되지 않은 경우에 상기 코어 탐색엔진부가 생성한 상기 새로운 코어 배정 정보를 상기 코어배정 데이터 저장부로부터 수신하는 코어 배정 장치.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.
상기 새로운 코어 배정 정보를 생성하는 단계는,
상기 쓰레드 별로 상기 코어 타입을 모두 조합하는 단계; 및
상기 조합 결과에 따른 성능을 평가하여 코어 배정 방식을 선택하는 단계를 포함하는 코어 배정 방법.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.
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)
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)
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)
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 |
-
2011
- 2011-12-13 KR KR1020110133947A patent/KR101869325B1/en active Active
Patent Citations (2)
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 |