KR101775029B1 - System and method of scheduling - Google Patents
System and method of scheduling Download PDFInfo
- Publication number
- KR101775029B1 KR101775029B1 KR1020160175915A KR20160175915A KR101775029B1 KR 101775029 B1 KR101775029 B1 KR 101775029B1 KR 1020160175915 A KR1020160175915 A KR 1020160175915A KR 20160175915 A KR20160175915 A KR 20160175915A KR 101775029 B1 KR101775029 B1 KR 101775029B1
- Authority
- KR
- South Korea
- Prior art keywords
- work
- core
- dependency
- storage unit
- executed
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- G06F9/4421—
-
- G06F9/4436—
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- 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/466—Transaction processing
- G06F9/467—Transactional memory
-
- 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/468—Specific access rights for resources, e.g. using capability register
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
Abstract
여러 어플리케이션(application)이 공유하여 사용하는 멀티코어 시스템 상의 스케쥴링에 관한 기술이 개시된다. 본 발명의 일 양상에 따라, 코어가 동작하는 동안 의존성 제거(dependency resolving) 작업 및 워크(work)의 탐색 시간을 중첩시킬 수 있는 기술을 제공할 수 있다.BACKGROUND ART [0002] Techniques for scheduling on a multi-core system shared by various applications are disclosed. According to an aspect of the present invention, it is possible to provide a technique capable of overlapping a search time of a dependency resolving operation and a work while a core is operating.
Description
본 발명은 여러 어플리케이션(application)이 공유하여 사용하는 멀티코어 시스템 내에, 의존성(denpendency) 기술자를 갖는 워크(work)가 대기하는 저장부(Queue 또는 Dependency queue)를 갖는 시스템 및 이러한 시스템의 운용방법에 관한 것으로, 보다 상세하게는 워크를 시스템에 요청할 수 있는 저장부(Dependency queue)를 어플리케이션에 제공하고, 어플리케이션으로 하여금 멀티코어 장치에서 수행되어야 할 워크를 저장부(Dependency queue)로부터 코어에 제공하도록 함으로서, 멀티코어 장치에서 워크가 실행될 때까지 시간을 단축하는 스케쥴링 시스템 및 방법에 관한 것이다.The present invention relates to a system having a storage unit (Queue or Dependency queue) in which a work having a dependency descriptor is placed in a multi-core system shared by various applications and a method of operating such a system More specifically, to provide a dependency queue for requesting a work to a system, and to allow an application to provide a work to be performed in a multicore device from a dependency queue to a core, And a scheduling system and method for shortening the time until a work is executed in a multicore device.
여러 어플리케이션(application)이 공유하여 사용하는 시스템을 스케쥴링 하는 기본적인 동작 과정은, 먼저 코어가 유휴상태에 있으면 완료된 워크를 기다리는 다른 모든 워크들과의 의존성을 제거하며, 이러한 과정을 의존성 제거(dependency resolving)이라 한다. 다음으로, 모든 저장부(dependency queue)를 탐색하면서 각각의 dependency queue에 대기 중인 워크를 모두 탐색한다. 이를 통하여 각각의 워크의 의존성이 모두 제거되었는지 확인한다. 만약 의존성이 제거된 워크가 존재한다면 유휴상태 코어로 워크의 수행을 요청한다.The basic operation of scheduling a system that is shared by various applications is to remove the dependency on all other work waiting for the completed work when the core is idle, Quot; Next, all the waiting work queues are searched for in each dependency queue while searching all the dependency queues. This ensures that all work dependencies are removed. If there is a work whose dependency has been removed, it requests execution of the work to the idle core.
이렇게 완료된 워크에 대한 dependency resolving과정과 모든 dependency queue를 탐색하면서 의존성이 제거된 워크를 탐색하는 과정을 수행하는 시간 동안 코어는 계속 유휴상태로 있게 되어 시스템 전체의 효율성이 떨어지게 된다.During the process of doing dependency resolving for the completed work and searching for all the dependency queues and searching for the work whose dependency has been removed, the core becomes idle continuously and the efficiency of the whole system becomes low.
시스템의 스케쥴링 동작에 따라서 외부 시스템과의 동작 효율성을 높이며, 코어가 유휴상태로 머물러있는 시간을 줄인다.According to the scheduling operation of the system, it increases the operation efficiency with the external system and reduces the time during which the core stays idle.
대기 중인 워크 중 선행 워크가 모두 수행완료되면, 의존성이 모두 제거된 상태의 워크를 저장하는 저장부를 통하여 효율적인 멀티코어 시스템을 제공한다.When all the preceding work among the waiting work is completed, an efficient multi-core system is provided through the storage unit storing the work whose dependencies have been removed.
수행완료된 선행 워크를 저장하는 저장부를 제공하여 의존성 제거작업과 의존성을 갖지 않는 워크를 탐색하는 작업을 수행하는 시간지연 없이 코어를 동작시킬 수 있다.It is possible to operate the core without a delay in performing a task of searching for a dependency elimination task and a work having no dependency by providing a storage unit for storing a completed preceding work.
본 발명의 일 양상에 따른 스케쥴링 시스템은 어플리케이션으로부터 워크를 전달받아 다수의 코어에서 실행되도록 할당하는 스케쥴링 시스템에 있어서, 어플리케이션으로부터 전달받은 하나 이상의 워크를 워크 간의 의존성(denpendency)을 고려하여 코어에서 실행될 순서대로 저장하는 실행워크 저장부 및 코어에서 실행하여 완료된 워크를 저장하는 완료워크 저장부를 포함할 수 있다.A scheduling system according to an aspect of the present invention is a scheduling system that receives a work from an application and allocates the work to be executed in a plurality of cores, the scheduling system comprising: An execution work storage unit for storing the completed work and a completed work storage unit for executing the completed work in the core.
또한, 하나 이상의 어플리케이션으로부터 전달받은 복수의 워크를 실행워크 저장부에 저장하기 전에 어플리케이션 별로 저장하는 임시저장부 및 실행워크 저장부에 저장된 워크를 코어에 전달하거나 코어에서 실행하여 완료된 워크를 코어로부터 전달받는 입출력 포트를 포함할 수 있다.In addition, a temporary storage unit for storing a plurality of works received from one or more applications before storing them in the execution work storage unit, and a work stored in the execution work storage unit are transmitted to the core or executed in the core, Lt; RTI ID = 0.0 > I / O < / RTI >
또한, 각각의 임시저장부에 저장된 하나 이상의 워크 중에 의존성을 갖지 않은 워크들을 검색하여 실행워크 저장부에 저장하고, 실행워크 저장부에 저장된 워크들을 유휴상태의 코어에서 실행되도록 입출력 포트를 통하여 전달하며, 코어에서 실행되어 완료된 워크를 입출력 포트를 통하여 전달받아 완료워크 저장부에 저장하는 스케쥴러를 포함할 수 있다.Also, it searches for a work having no dependency among at least one work stored in each temporary storage unit, stores the work in the execution work storage unit, and transmits the work stored in the execution work storage unit through the input / output port to be executed in the idle core And a scheduler that is executed in the core and receives the completed work through the input / output port and stores the completed work in the completed work storage unit.
본 발명의 일 양상에 따른 스케쥴링 방법은 어플리케이션으로부터 워크를 전달받아 다수의 코어에서 실행되도록 할당하는 스케쥴링 방법에 있어서, 어플리케이션으로부터 전달받은 하나 이상의 워크를 워크 간의 의존성(denpendency)을 고려하여 코어에서 실행될 순서대로 저장하는 단계 및 코어에서 실행하여 완료된 워크를 저장하는 단계를 포함할 수 있다.A scheduling method according to an aspect of the present invention is a scheduling method for receiving a work from an application and allocating the work to be executed in a plurality of cores, the scheduling method comprising the steps of, in consideration of denpendency between works, And storing the completed work in the core.
본 발명의 다른 일 양상에 따른 스케쥴링 방법은 어플리케이션으로부터 전달받은 하나 이상의 워크를 상기 워크 간의 의존성(denpendency)을 고려하여 코어에서 실행될 순서대로 저장하는 실행워크 저장부 및 코어에서 실행하여 완료된 워크를 저장하는 완료워크 저장부를 포함하는 스케쥴링 시스템을 통한 다수의 어플리케이션이 멀티코어를 공유하여 사용하도록 할당하는 스케쥴링 방법에 있어서,According to another aspect of the present invention, there is provided a scheduling method including an execution work storage unit for storing at least one work received from an application in order to be executed in the core in consideration of the denpendency between the works, A scheduling method for assigning a plurality of applications through a scheduling system including a completed work storage unit to use and share multicore,
실행워크 저장부에 저장된 워크가 존재하는지 판단하는 단계, 실행워크 저장부에 저장된 워크가 존재한다면, 워크를 실행할 수 있는 유휴상태의 코어가 존재하는지 판단하는 단계, 유휴상태의 코어가 존재하는 경우, 실행워크 저장부에 저장된 워크를 유휴상태의 코어에서 실행되도록 전달하는 단계, 실행워크 저장부에 저장된 워크가 존재하지 않거나 유휴상태의 코어가 존재하지 않는 경우, 완료워크 저장부에 완료된 워크가 존재하는지 판단하는 단계 및 완료워크 저장부에 완료된 워크가 존재한다면, 각각의 어플리케이션으로부터 전달된 하나 이상의 워크 중에서 완료된 워크와 관련하여 의존성을 갖는 워크에 대하여 의존성을 제거하는 단계를 포함할 수 있다.Determining whether or not a work stored in the execution work storage unit exists; if there is a work stored in the execution work storage unit, determining whether there is an idle core capable of executing the work; A step of transferring a work stored in the execution work storage unit to be executed in an idle core, a step of determining whether a work stored in the execution work storage unit does not exist or a core in an idle state does not exist, Determining whether there is a completed work in the finished work storage, and removing the dependency from the at least one work transferred from each application to the work having dependency in relation to the completed work.
시스템의 스케쥴링 동작에 따라서 외부 시스템과의 동작 효율성을 향상하고, 코어가 유휴상태로 머물러있는 시간을 줄여 시스템 전체의 효율성을 높일 수 있다.According to the scheduling operation of the system, it is possible to improve the operation efficiency with the external system and reduce the time during which the core stays idle, thereby improving the efficiency of the system as a whole.
의존성이 모두 제거된 상태의 워크를 저장하는 저장부를 제공하여 멀티코어 시스템의 성능을 향상할 수 있다.The performance of the multicore system can be improved by providing a storage unit for storing work in a state where all dependencies are removed.
수행완료된 선행 워크를 저장하는 저장부를 제공하여 코어가 동작하고 있는 상태에서도 의존성 제거작업과 의존성을 갖지 않는 워크를 탐색하는 작업을 시간지연 없이 수행하여 멀티코어 시스템의 효율성을 높일 수 있다.The storage unit for storing the completed preceding work is provided so that the efficiency of the multi-core system can be improved by performing a task of searching for a dependency removing operation and a work having no dependency with no time delay even when the core is operating.
도 1은 본 발명의 일 실시예에 따른 스케쥴링 시스템을 나타낸 블록도이다.
도 2는 본 발명의 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템을 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 스케쥴링 시스템의 임시저장부(dep-Q)에 저장된 워크 및 워크 간의 의존성을 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템에서 워크의 처리과정(Ⅰ)을 나타낸 도면이다.
도 5는 본 발명의 다른 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템에서 워크의 처리과정(Ⅱ)을 나타낸 도면이다.
도 6는 본 발명의 또 다른 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템에서 워크의 처리과정(Ⅲ)을 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템의 동작과정(Ⅰ)을 나타낸 흐름도이다.
도 8A 및 8B는 본 발명의 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템의 동작과정(Ⅱ)을 나타낸 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 도 8B에 나타낸 (C)단계를 상세하게 나타낸 흐름도이다.1 is a block diagram illustrating a scheduling system according to an embodiment of the present invention.
FIG. 2 is a diagram illustrating a multicore system to which a scheduling system according to an embodiment of the present invention is applied.
FIG. 3 is a diagram showing the dependency between work and work stored in the temporary storage unit dep-Q of the scheduling system according to an embodiment of the present invention.
4 is a diagram illustrating a process (I) of a work in a multicore system to which a scheduling system according to an embodiment of the present invention is applied.
FIG. 5 is a diagram illustrating a process (II) of a work in a multicore system to which a scheduling system according to another embodiment of the present invention is applied.
FIG. 6 is a diagram illustrating a work process (III) in a multi-core system to which a scheduling system according to another embodiment of the present invention is applied.
FIG. 7 is a flowchart illustrating an operation process (I) of a multicore system to which a scheduling system according to an embodiment of the present invention is applied.
8A and 8B are flowcharts illustrating an operation procedure (II) of a multicore system to which a scheduling system according to an embodiment of the present invention is applied.
9 is a flowchart detailing the step (C) shown in FIG. 8B according to an embodiment of the present invention.
이하, 첨부된 도면을 참조하여 본 발명의 일 양상을 상세하게 설명한다.Hereinafter, one aspect of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 일 실시예에 따른 스케쥴링 시스템을 나타낸 블록도이다. 도 1을 참조하면, 다수의 어플리케이션이 멀티코어를 공유하여 사용하도록 할당하는 스케쥴링 시스템은 스케쥴러(Scheduler, 100), 실행워크 저장부(runnable-Q, 110), 완료워크 저장부(finish-Q, 120), 임시저장부(dep-Q, 130), 입출력포트(IO-port, 140)를 포함할 수 있다.1 is a block diagram illustrating a scheduling system according to an embodiment of the present invention. Referring to FIG. 1, a scheduling system that allocates a plurality of applications to use and share multicore includes a
어플리케이션으로부터 워크를 전달받아 다수의 코어에서 실행되도록 할당하는 스케쥴링 시스템 간의 관계를 크게 두 가지로 나누면 첫 번째는 어플리케이션과 스케쥴링 시스템과의 동작 관계, 두 번째는 스케쥴링 시스템과 멀티코어 장치와의 동작 관계로 나눌 수 있다.The relationship between the scheduling system that receives a work from an application and allocates it to be executed in a plurality of cores is largely divided into two. First, an operation relationship between an application and a scheduling system. Second, an operation relationship between a scheduling system and a multicore device Can be divided.
전자의 동작관계는 어플리케이션들이 멀티코어 장치에서 병렬로 수행될 일을 스케쥴링 시스템의 저장부(dependency queue)에 입력(enqueue)하는 것으로, 후자의 동작관계는 스케쥴링 시스템이 어플리케이션들로부터 받은 워크(work) 중 의존성(dependency)을 갖지 않은 워크를 유휴상태 코어(idle core)에 실행 요청하고 워크의 실행이 완료된 코어는 스케쥴링 시스템에게 워크의 완료를 알리는 것으로 대표될 수 있다.The former operation enqueues an application to be executed in parallel in a multi-core device into a dependency queue of the scheduling system, and the latter operation relationship is a work relationship between the scheduling system and the work received from the applications, A work that has no dependency is requested to be executed by an idle core, and a core whose work has been executed can be represented by informing the scheduling system of the completion of the work.
스케쥴링 시스템은 멀티코어 장치와 별도의 코어를 구비한 장치에서 동작한다. 또한 어플리케이션과도 독립적인 실행 흐름을 갖는다. 즉, 저장부(dependency queue)에 워크를 입력(enqueue)하는 동작과, 멀티코어 장치에 요청된 워크의 실행 동작은 모두 스케쥴링 시스템과 병렬로 동작할 수 있다.The scheduling system operates in a device having a core separate from the multicore device. It also has an execution flow independent of the application. That is, both the operation of enqueuing a work in a dependency queue and the execution of a work requested in the multicore device can all operate in parallel with the scheduling system.
실행워크 저장부(110)는 어플리케이션으로부터 전달받은 하나 이상의 워크를 워크 간의 의존성(denpendency)을 고려하여 코어에서 실행될 순서대로 저장한다.The execution
완료워크 저장부(120)는 코어에서 실행하여 완료된 워크를 저장한다.The completed
*임시저장부(130)는 하나 이상의 어플리케이션으로부터 전달받은 복수의 워크를 실행워크 저장부(110)에 저장하기 전에 어플리케이션 별로 저장한다.The
입출력 포트(140)는 실행워크 저장부(110)에 저장된 워크를 코어에 전달하거나 코어에서 실행하여 완료된 워크를 코어로부터 전달받는다.The input /
스케쥴러(100)는 코어에서 실행하여 완료된 워크가 반환되는 경우 완료된 워크를 완료워크 저장부(120)에 저장하고, 어플리케이션으로부터 전달받은 워크가 저장된 워크와 관련하여 의존성을 가진 경우 의존성을 제거하여 실행워크 저장부(110)에 저장한다.The
스케쥴러(100)는 각각의 임시저장부(130)에 저장된 하나 이상의 워크 중에 의존성을 갖지 않은 워크들을 검색하여 실행워크 저장부(110)에 저장하고, 실행워크 저장부(110)에 저장된 워크들을 유휴상태의 코어에서 실행되도록 입출력 포트(140)를 통하여 전달하며, 코어에서 실행되어 완료된 워크를 입출력 포트(140)를 통하여 전달받아 완료워크 저장부(120)에 저장한다.The
또한, 스케쥴러(100)는 워크들이 코어에서 실행되고 있는 동안에, 임시저장부(130)에 저장된 워크 중에서 코어에서 실행되어 완료된 워크와 관련하여 의존성을 갖는 워크에 대하여 의존성을 제거하고, 임시저장부(130)에 저장된 워크 중에 의존성을 갖지 않은 워크들을 검색하여 실행워크 저장부(110)에 저장한다.In addition, the
스케쥴링 시스템은 이러한 장치를 통하여 여러 어플리케이션들로부터 입력된 워크들을 기술된 의존성(dependency) 순서에 맞게 동작시킬 수 있다.The scheduling system can operate the input work from various applications according to the described dependency order through such a device.
도 2는 본 발명의 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템을 나타낸 도면이다. 도 2를 참조하면, 본 발명의 일 양상이 적용된 스케쥴링 시스템은 어플리케이션이 전달하는 워크를 저장하는 임시저장부(dep-Q(1), dep-Q(N))와 워크를 코어에 입력하거나 코어로부터 출력하는 입출력포트(IO port) 사이에 스케쥴러(scheduler), 실행워크 저장부(runnable-Q) 및 완료워크 저장부(finish-Q)가 배치된다.FIG. 2 is a diagram illustrating a multicore system to which a scheduling system according to an embodiment of the present invention is applied. 2, a scheduling system to which an aspect of the present invention is applied includes a temporary storage unit (dep-Q (1), dep-Q (N)) for storing a work delivered by an application, A scheduler, an execution work storage unit (runnable-Q), and a completion work storage unit (finish-Q) are disposed between the input / output ports IO ports output from the I /
실행워크 저장부(runnable-Q)는 의존성이 모두 제거된 상태의 워크들을 모아놓고, 완료워크 저장부(finish-Q)는 실행 완료된 워크를 모아놓는다.The execution work storage unit (runnable-Q) collects the work in the state where the dependency is completely removed, and the completion work storage unit (finish-Q) collects the completed work.
멀티코어 장치(Device A 또는 Device B)의 코어에서 실행하던 워크가 종료되면, 완료된 워크를 스케쥴링 시스템의 완료워크 저장부(finish-Q)에 저장하고(enqueue), 해당 코어(core)는 유휴상태(idle)로 전환된다. 그 즉시, 스케쥴러 시스템의 스케쥴러(scheduler)는 실행워크 저장부(runnable-Q)에 대기 중인 워크를 추출하여(dequeue) 바로 멀티코어 장치의 유휴상태 코어로 워크 실행을 요청한다.When the work executed in the core of the multicore device (Device A or Device B) is terminated, the completed work is stored in the finished work storage unit (finish-Q) of the scheduling system (enqueue) (idle). Immediately thereafter, the scheduler of the scheduler system dequeues the waiting work in the execution work storage (runnable-Q) and immediately requests the work execution to the idle core of the multicore device.
스케쥴러 시스템은 멀티코어 장치의 코어에서 워크가 실행됨과 동시에 완료워크 저장부(finish-Q)에 있는 모든 완료된 워크에 대해서 의존성 제거(dependency resolving) 작업을 수행한 후, 임시저장부(dep-Q)를 탐색한다. 각각의 임시저장부(dep-Q(1),…,dep-Q(N))에 대기 중인 워크를 모두 탐색하면서 의존성을 갖지 않은 워크들을 모두 실행워크 저장부(runnable-Q)로 옮긴다.The scheduler system executes the work in the core of the multicore device, performs a dependency resolving operation on all completed work in the finished work storage (finish-Q), and then executes the temporary storage (dep-Q) . All of the waiting work in all the temporary storages (dep-Q (1),..., Dep-Q (N)) are searched and all the work that has no dependency is moved to the run workable storage unit (runnable-Q).
이렇게 함으로써, 멀티코어 장치의 어떤 코어가 유휴상태가 되면, 실행워크 저장부(runnable-Q)에 대기 중인 워크를 의존성 제거(dependency resolving) 작업 또는 워크 탐색(searching runnable works) 과정에 의한 지연시간 없이 바로 멀티코어 장치의 유휴상태 코어에 워크의 실행을 요청할 수 있다.By doing so, when a core of a multicore device becomes idle, a workpiece waiting in a runnable-Q can be processed without a delay time by a dependency resolving operation or a searching runnable works process It can immediately request the execution of the work in the idle core of the multicore device.
도 3은 본 발명의 일 실시예에 따른 스케쥴링 시스템의 임시저장부(dep-Q)에 저장된 워크 및 워크 간의 의존성을 나타낸 도면이다. 도 3을 참조하면 임시저장부(dep-Q)에 저장된 각각의 워크들은 의존성을 갖는 워크들로서 2개의 임시저장부(dep-Q(1), dep-Q(2))에 총 8개의 워크가 있음을 나타낸다.FIG. 3 is a diagram showing the dependency between work and work stored in the temporary storage unit dep-Q of the scheduling system according to an embodiment of the present invention. Referring to FIG. 3, each work stored in the temporary storage unit dep-Q includes eight workloads in two temporary storage units dep-Q (1) and dep-Q (2) .
워크 간의 의존성과 관련하여 실행 가능 상태를 살펴보면, w1, w2, w5, w6은 어떠한 워크와도 의존성을 갖지 않으므로 바로 실행 가능한 상태이고, w3, w4는 w1이 실행 완료되어야 실행 가능한 상태(w1과 관련하여 의존성을 갖는 상태), w7, w8은 w5가 실행 완료되어야 실행 가능한 상태(w5와 관련하여 의존성을 갖는 상태)이다.W1, w2, w5, and w6 have no dependency on any work, so they can be executed immediately. W3 and w4 are related to w1 And w7 and w8 are executable states (states having dependencies in relation to w5) after w5 has been executed.
도 3에 나타난 임시저장부(dep-Q1, dep-Q2)에 저장된 워크들 간의 관계를 바탕으로 이하의 도 4 내지 도 6의 멀티코어 시스템에서 워크의 처리과정을 설명한다.The process of the work in the multi-core system shown in FIG. 4 to FIG. 6 will be described based on the relationship between the works stored in the temporary storage units dep-Q1 and dep-Q2 shown in FIG.
도 4는 본 발명의 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템에서 워크의 처리과정(Ⅰ)을 나타낸 도면이다.4 is a diagram illustrating a process (I) of a work in a multicore system to which a scheduling system according to an embodiment of the present invention is applied.
도 4의 일 양상의 멀티코어 시스템은 2개의 코어를 갖는 멀티코어 장치를 2개의 어플리케이션이 각각 dep-Q(dependency queue)를 이용하여 워크를 요청하는 과정을 나타낸다.4 illustrates a multicolor system having two cores, in which two applications each request a work using a dep-Q (dependency queue).
어플리케이션은 dep-Q1에 w1, w2를, dep-Q2에 w5, w6을 입력(enqueue)한 다음 dep-Q1에 w3, w4를, dep-Q2에 w7, w8을 추가로 입력(enqueue)하고 있으며, device의 코어(core1, core2)의 초기상태는 유휴상태(idle)임을 나타낸다. 그리고 두 개의 dep-Q 모두 의존성(dependency)을 갖지 않은 워크를 가지고 있다면, 두 개의 dep-Q로부터 추출(dequeue)되는 기회는 동일하다고 가정한다.The application enqueues w1 and w2 to dep-Q1 and w5 and w6 to dep-Q2 and then enqueues w3 and w4 to dep-Q1 and w7 and w8 to dep-Q2. , and the initial state of the core (core1, core2) of the device is idle. And if you have a work that does not have both dep-Q dependencies, it is assumed that the chance of being dequeued from two dep-Q is the same.
멀티코어 장치의 유휴상태 코어(idle core)에게 워크의 실행을 요청하기 위해서는 이미 실행 완료된 워크의 의존성 제거(dependency resolving) 작업과 모든 dep-Q들로부터 의존성을 갖지 않는 워크를 찾는 과정(searching runnable works)이 선행되어야 한다. In order to request the idle core of the multicore device to execute the work, there is a process of performing dependency resolving of the already completed work and a process of searching for the work that does not have dependency from all dep-Qs ) Should be preceded.
스케쥴링 시스템은 멀티코어 장치의 core1이 idle임을 확인하고 모든 dep-Q들에 대해 searching runnable works 작업을 수행한다. 이러한 작업을 통하여 w1, w2, w5, w6이 각각의 dep-Q로부터 추출(dequeue)되고, runnable-Q에 입력(enqueue)된다. 스케쥴링 시스템은 runnable-Q로부터 w1을 추출(dequeue)하고 멀티코어 장치의 core1에 w1의 실행을 요청한다.The scheduling system confirms that core1 of the multicore device is idle and performs searching runnable works on all dep-Qs. Through these operations, w1, w2, w5 and w6 are dequeued from each dep-Q and enqueued to runnable-Q. The scheduling system dequeues w1 from runnable-Q and requests core1 of multi-core device to execute w1.
요청이 끝남과 동시에 스케쥴링 시스템은 멀티코어 장치의 core2가 idle상태임을 확인하고 runnable-Q로부터 w5를 추출(dequeue)하고, core2에 w5의 실행을 요청한다. 멀티코어 장치의 두 코어가 동작 중인 상태에서 스케쥴링 시스템은 멀티코어 장치의 코어가 모두 idle상태가 아님을 확인하고 finish-Q와 dep-Q를 차례대로 탐색하면서 dependency resolving 작업과 searching runnable works 작업을 계속 시도한다.At the end of the request, the scheduling system confirms that core2 of the multicore device is idle, dequeues w5 from runnable-Q, and requests core2 to execute w5. When two cores of the multicore device are in operation, the scheduling system confirms that the cores of the multicore devices are not all idle, and continues the dependency resolving operation and the searching runnable works operation sequentially in the order of finish-Q and dep- Try it.
멀티코어 장치의 core1이 w1의 실행을 완료하면 finish-Q에 완료된 w1을 전달(enqueue)하고 idle상태로 전환된다. 그 즉시 스케쥴링 시스템은 runnable-Q로부터 w2를 추출(dequeue)하고 멀티코어 장치의 core1에 w2의 실행을 요청한다. 그와 동시에 멀티코어 장치의 core2가 w5의 실행을 완료하면 finish-Q에 완료된 w5를 전달(enqueue)하고 idle상태로 전환된다. 스케쥴링 시스템은 멀티코어 장치의 core2가 idle상태임을 확인하고 runnable-Q에서 w6을 추출(dequeue)하고 멀티코어 장치의 core2에 w6의 실행을 요청한다.When core1 of multicore device completes execution of w1, w1 completed in finish-Q is transmitted (enqueue) and is changed into idle state. Immediately, the scheduling system dequeues w2 from the runnable-Q and requests core1 of multicore device to execute w2. At the same time, when the
멀티코어 장치의 두 core가 모두 동작 중인 상태에서 스케쥴링 시스템은 w1과 w5에 관련해서 dependency resolving 작업과 searching runnable works 작업을 연속적으로 수행한다. 이 과정에서 w3, w4, w7, w8이 모두 각각의 dep-Q로부터 runnable-Q로 옮겨진다.When both cores of multicore devices are in operation, the scheduling system continuously performs dependency resolving and searching runnable works on w1 and w5. In this process, w3, w4, w7, w8 are all transferred from each dep-Q to runnable-Q.
이런 과정을 반복함으로써 멀티코어 장치에서의 워크의 수행시간과 dependency resolving 작업 및 search runnable works 작업의 수행시간을 중첩시킬 수 있다. 또한 finish-Q를 두어 완료된 워크에 관련된 dependency resolving 작업보다 멀티코어 장치에서의 워크실행 요청을 먼저함으로써 스케쥴링 시스템과 외부 시스템과의 병렬성을 유지할 수 있다. By repeating this process, it is possible to overlap the execution time of the work in the multicore device with the execution time of the dependency resolving operation and the search runnable works. In addition, it is possible to maintain the parallelism between the scheduling system and the external system by first requesting the work execution in the multicore device rather than the dependency resolving work related to the completed work with finish-Q.
*도 5는 본 발명의 다른 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템에서 워크의 처리과정(Ⅱ)을 나타낸 도면이다.FIG. 5 is a diagram illustrating a process (II) of a work in a multicore system to which a scheduling system according to another embodiment of the present invention is applied.
도 5의 일 양상의 멀티코어 시스템은 2개의 코어를 갖는 멀티코어 장치를 2개의 어플리케이션이 각각 dep-Q(dependency queue)를 이용하여 워크를 요청하는 과정을 나타낸다.5 illustrates a multicolor system having two cores, in which two applications each request a work using a dep-Q (dependency queue).
어플리케이션은 dep-Q1에 w1, w2를, dep-Q2에 w5, w6을 입력(enqueue)한 다음 dep-Q1에 w3, w4를, dep-Q2에 w7, w8을 추가로 입력(enqueue)하고 있으며, device의 코어(core1, core2)의 초기상태는 유휴상태(idle)임을 나타낸다. 그리고 두 개의 dep-Q 모두 의존성(dependency)을 갖지 않은 워크를 가지고 있다면, 두 개의 dep-Q로부터 추출(dequeue)되는 기회는 동일하다고 가정한다.The application enqueues w1 and w2 to dep-Q1 and w5 and w6 to dep-Q2 and then enqueues w3 and w4 to dep-Q1 and w7 and w8 to dep-Q2. , and the initial state of the core (core1, core2) of the device is idle. And if you have a work that does not have both dep-Q dependencies, it is assumed that the chance of being dequeued from two dep-Q is the same.
도 5의 워크의 처리과정(Ⅱ)의 스케쥴링 시스템은 도 4의 처리과정(Ⅰ)과 동일하게, 멀티코어 장치의 core1이 idle임을 확인하고 모든 dep-Q들에 대해 searching runnable works 작업을 수행한다. 이러한 작업을 통하여 w1, w2, w5, w6이 각각의 dep-Q로부터 추출(dequeue)되고, runnable-Q에 입력(enqueue)된다. 스케쥴링 시스템은 runnable-Q로부터 w1을 추출(dequeue)하고 멀티코어 장치의 core1에 w1의 실행을 요청한다.5, the scheduling system of FIG. 5 confirms that the
요청이 끝남과 동시에 스케쥴링 시스템은 멀티코어 장치의 core2가 idle상태임을 확인하고 runnable-Q로부터 w5를 추출(dequeue)한다. core2에 w5의 실행을 요청한다. 멀티코어 장치의 두 코어가 동작 중인 상태에서 스케쥴링 시스템은 멀티코어 장치의 코어가 모두 idle상태가 아님을 확인하고 finish-Q와 dep-Q를 차례대로 탐색하면서 dependency resolving 작업과 searching runnable works 작업을 계속 시도한다.At the end of the request, the scheduling system determines that
멀티코어 장치의 core1이 w1의 실행을 완료하면 finish-Q에 완료된 w1을 전달(enqueue)하고 idle상태로 전환된다. 그 즉시 스케쥴링 시스템은 runnable-Q로부터 w2를 추출(dequeue)하고 멀티코어 장치의 core1에 w2의 실행을 요청한다.When core1 of multicore device completes execution of w1, w1 completed in finish-Q is transmitted (enqueue) and is changed into idle state. Immediately, the scheduling system dequeues w2 from the runnable-Q and requests core1 of multicore device to execute w2.
멀티코어 장치의 core1은 w2가 실행되며, core2에서는 w5가 계속적으로 실행되고 있다. core2가 w5의 실행을 완료하면 finish-Q에 완료된 w5를 전달(enqueue)하고 idle상태로 전환된다. 스케쥴링 시스템은 멀티코어 장치의 core2가 idle상태임을 확인하고 runnable-Q에서 w6을 추출(dequeue)하고 멀티코어 장치의 core2에 w6의 실행을 요청한다.
멀티코어 장치의 두 core가 모두 동작중인 상태에서 스케쥴링 시스템은 먼저 완료된 w1과 관련하여 dependency resolving 작업을 수행하던 중에, 완료된 w5가 전달되어 finish-Q에 저장되면, 수행하던 작업을 중단하고 idle core2에 w6을 실행할 것을 요청하여 다시 두 core가 모두 동작중인 상태에서, 완료된 w1과 w5에 관련해서 dependency resolving 작업과 searching runnable works 작업을 연속적으로 수행한다. 이 과정에서 w3, w4, w7, w8이 모두 각각의 dep-Q로부터 runnable-Q로 옮겨진다.When both cores of the multicore device are in operation, the scheduling system first performs the dependency resolving operation with respect to the completed w1, and when the completed w5 is transferred and stored in the finish-Q, w6 is executed, and both of the cores are running again. Then, the execution of the dependency resolving operation and the searching runnable works are sequentially performed with respect to the completed w1 and w5. In this process, w3, w4, w7, w8 are all transferred from each dep-Q to runnable-Q.
이런 과정을 반복함으로써 멀티코어 장치에서의 워크의 수행시간과 dependency resolving 작업 및 search runnable works 작업의 수행시간을 중첩시킬 수 있다.By repeating this process, it is possible to overlap the execution time of the work in the multicore device with the execution time of the dependency resolving operation and the search runnable works.
도 6는 본 발명의 또 다른 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템에서 워크의 처리과정(Ⅲ)을 나타낸 도면이다.FIG. 6 is a diagram illustrating a work process (III) in a multi-core system to which a scheduling system according to another embodiment of the present invention is applied.
도 6의 일 양상의 멀티코어 시스템은 3개의 코어를 갖는 멀티코어 장치를 2개의 어플리케이션이 각각 dep-Q(dependency queue)를 이용하여 워크를 요청하는 과정을 나타낸다.6 illustrates a multicolor system having three cores, in which two applications request a work using dep-Q (dependency queues), respectively.
어플리케이션은 dep-Q1에 w1, w2를, dep-Q2에 w5, w6을 입력(enqueue)한 다음 dep-Q1에 w3, w4를, dep-Q2에 w7, w8을 추가로 입력(enqueue)하고 있으며, device의 코어(core1, core2)의 초기상태는 유휴상태(idle)임을 나타낸다. 그리고 두 개의 dep-Q 모두 의존성(dependency)을 갖지 않은 워크를 가지고 있다면, 두 개의 dep-Q로부터 추출(dequeue)되는 기회는 동일하다고 가정한다.The application enqueues w1 and w2 to dep-Q1 and w5 and w6 to dep-Q2 and then enqueues w3 and w4 to dep-Q1 and w7 and w8 to dep-Q2. , and the initial state of the core (core1, core2) of the device is idle. And if you have a work that does not have both dep-Q dependencies, it is assumed that the chance of being dequeued from two dep-Q is the same.
도 6의 워크의 처리과정(Ⅲ)의 스케쥴링 시스템은 도 4의 처리과정(Ⅰ)과 동일하게, 멀티코어 장치의 core1이 idle임을 확인하고 모든 dep-Q들에 대해 searching runnable works 작업을 수행한다. 이러한 작업을 통하여 w1, w2, w5, w6이 각각의 dep-Q로부터 추출(dequeue)되고, runnable-Q에 입력(enqueue)된다. 스케쥴링 시스템은 runnable-Q로부터 w1을 추출(dequeue)하고 멀티코어 장치의 core1에 w1의 실행을 요청한다.The scheduling system in the processing step (III) of FIG. 6 confirms that the
요청이 끝남과 동시에 스케쥴링 시스템은 멀티코어 장치의 core2가 idle상태임을 확인하고 runnable-Q로부터 w5를 추출(dequeue)한다. core2에 w5의 실행을 요청한다. 멀티코어 장치의 core3은 이전부터 w0를 실행하고 있는 상태이므로 멀티코어 장치의 세 코어가 동작 중인 상태가 되므로, 스케쥴링 시스템은 멀티코어 장치의 코어가 모두 idle상태가 아님을 인지하게 되고, finish-Q와 dep-Q를 차례대로 탐색하면서 dependency resolving 작업과 searching runnable works 작업을 계속 시도한다.At the end of the request, the scheduling system determines that
멀티코어 장치의 core1이 w1의 실행을 완료하면 finish-Q에 완료된 w1을 전달(enqueue)하고 idle상태로 전환된다. 그 즉시 스케쥴링 시스템은 runnable-Q로부터 w2를 추출(dequeue)하고 멀티코어 장치의 core1에 w2의 실행을 요청한다.When core1 of multicore device completes execution of w1, w1 completed in finish-Q is transmitted (enqueue) and is changed into idle state. Immediately, the scheduling system dequeues w2 from the runnable-Q and requests core1 of multicore device to execute w2.
그와 동시에 멀티코어 장치의 core3가 w0의 수행을 완료하면 finish-Q에 완료된 w0를 전달(enqueue)하고 idle상태로 전환된다. 스케쥴링 시스템은 멀티코어 장치의 core3가 idle상태임을 확인하고 runnable-Q에서 w6을 추출(dequeue)하고 멀티코어 장치의 core3에 w6의 실행을 요청한다. 따라서, 멀티코어 장치의 core1은 w2가 실행되며, core2에서는 w5가 계속적으로 수행되고, core3은 w6이 실행된다.At the same time, when the
멀티코어 장치의 세 core가 모두 동작 중인 상태에서 스케쥴링 시스템은 w0과 w1에 관련해서 dependency resolving 작업과 searching runnable works 작업을 연속적으로 수행한다. 이 과정에서 w3, w4, w7, w8이 모두 각각의 dep-Q로부터 runnable-Q로 옮겨진다.When all three cores of the multicore device are in operation, the scheduling system continuously performs dependency resolving and searching runnable works on w0 and w1. In this process, w3, w4, w7, w8 are all transferred from each dep-Q to runnable-Q.
이러한 과정을 통해 멀티코어 장치의 세 core로부터 완료된 w2, w5, w6이 finish-Q에 저장(enqueue)되면 스케쥴링 시스템은 runnable-Q에 저장된 w3, w4, w7을 추출(dequeue)하여 세 core에 각각 전달한다. 다시 모든 core는 동작중인 상태가 되고, 스케쥴링 시스템은 w2, w5 및 w6과 관련해서 dependency resolving 작업과 searching runnable works 작업을 연속적으로 수행한다.Through this process, when w2, w5, w6 completed from the three cores of the multicore device are enqueued in finish-Q, the scheduling system dequeues w3, w4, w7 stored in runnable-Q, . Again all cores are running, and the scheduling system performs dependency resolving and searching runnable works in succession with respect to w2, w5 and w6.
이런 과정을 반복함으로써 다수의 코어 장치에서의 워크의 수행시간과 dependency resolving 작업 및 search runnable works 작업의 수행시간을 중첩시킬 수 있다.By repeating this process, it is possible to overlap the execution time of the work in a plurality of core devices with the execution time of the dependency resolving operation and the search runnable works.
도 7은 본 발명의 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템의 동작과정(Ⅰ)을 나타낸 흐름도이다. 도 7을 참조하면, 멀티코어 시스템의 동작과정은 기본적으로 6단계로 이루어진다.FIG. 7 is a flowchart illustrating an operation process (I) of a multicore system to which a scheduling system according to an embodiment of the present invention is applied. Referring to FIG. 7, the operation process of the multicore system is basically composed of six steps.
먼저, 어플리케이션으로부터 전달받은 하나 이상의 워크를 워크 간의 의존성(denpendency)을 고려하여 코어에서 실행될 순서대로 저장한다(700). 저장된 차례대로 워크를 시스템 상의 유휴상태의 코어에 전달하여 실행요청하고(710), 전달된 워크는 코어에서 실행된다.First, one or more work delivered from the application is stored in order to be executed in the core in consideration of dependency between the work (700). In the stored order, the work is transmitted to the idle core on the system for execution (710), and the delivered work is executed on the core.
코어에서 실행이 완료된 워크를 저장하고(720), 코어에서 실행될 순서대로 저장된 다음 워크(700단계에서 저장된 워크)를 상기 720단계에서 저장된 워크를 실행 완료하여 유휴상태가 된 코어에 전달하여 실행요청한다(730).The work which has been executed in the core is stored (720), and the next work (the work stored in step 700) stored in the order to be executed in the core is executed and transmitted to the idle core (730).
상기 720단계에서 실행이 완료되어 저장된 워크와 관련하여 어플리케이션으로부터 전달받은 워크 중 의존성을 가진 워크의 의존성 제거(dependency resolving) 작업을 수행하고(740), 어플리케이션으로부터 전달받은 워크 중 의존성을 갖지 않은 워크들을 검색하여 코어에서 실행될 순서대로 저장한다(750).In
상기 750단계를 수행하면서 의존성을 갖지 않은 워크가 저장되는 경우 710단계부터 다시 수행하고, 저장된 워크가 없다면 어플리케이션으로부터 전달받은 새로운 워크가 없는 한 실행하여야 하는 워크가 없는 것이므로 동작을 종료하게 된다.If the work having no dependency is stored in
도 8A 및 8B는 본 발명의 일 실시예에 따른 스케쥴링 시스템이 적용된 멀티코어 시스템의 동작과정(Ⅱ)을 나타낸 흐름도이다.8A and 8B are flowcharts illustrating an operation procedure (II) of a multicore system to which a scheduling system according to an embodiment of the present invention is applied.
전체적인 동작을 보면, 유휴상태 코어(idle core)에 신속하게 워크를 할당하기 위해 runnable-Q를 먼저 탐색하고, 완료된 work와 관련된 의존성 제거(dependency resolving) 작업을 한 후 dependency Q를 탐색하여 dependency가 모두 제거된 work를 runnable-Q로 이동시킨다. 이러한 과정을 반복 수행하므로서, 멀티코어 시스템을 스케쥴링하게 된다.In the overall operation, the runnable-Q is first searched to assign the work to the idle core quickly, the dependency resolving work related to the completed work is performed, Move the removed work to runnable-Q. By repeating this process, the multicore system is scheduled.
보다 상세하게 동작과정을 살펴보면, 먼저, 시스템이 시작되면 runnable-Q를 탐색한다(801). 만약 runnable-Q에 저장된 work가 있으면 멀티코어 장치에 idle core가 있는지 확인한다(802). 만약 idle core가 있으면 runnable-Q에서 work를 dequeue한 후(803) 해당 core에 work의 실행을 요청하고(804) 스케쥴링 시스템은 runnable-Q가 비어있는지 다시 확인한다(801).In more detail, when the system is started, the runnable-Q is searched (801). If there is work stored in the runnable-Q, it is checked whether there is an idle core in the multicore device (802). If there is an idle core, the work is dequeued in the runnable-Q (803), the work is requested to the core (804), and the scheduling system checks again whether the runnable-Q is empty (801).
만약 멀티코어 장치에 idle core가 없거나 runnable-Q가 비어있으면 스케쥴링 시스템은 완료된 work를 확인하기 위해 finish-Q를 탐색한다(805). finish-Q에 완료된 work가 있는 경우 이 work를 finish-Q에서 dequeue하고(806) 해당 work에 대한 dependency resolving 작업을 한다(807).If there is no idle core in multicore device or if runnable-Q is empty, the scheduling system searches for finish-Q to check completed work (805). If there is finished work in finish-Q, this work is dequeued in finish-Q (806) and dependency resolving work is performed for that work (807).
dependency resolving 작업이 완료되면 다시 finish-Q에 완료된 work가 있는지 확인한다(805). finish-Q가 비어있다면 스케쥴링 시스템은 dependency Q들을 탐색하면서 dependency를 갖지 않는 work를 찾는다(808). 만약 어떤 dependency Q에 dependency를 갖지 않는 work가 있다면, 해당 work를 dependency Q에서 dequeue하고(810) runnable-Q에 enqueue한다(811).When the dependency resolving operation is completed, it is checked whether there is work completed in finish-Q (805). If finish-Q is empty, the scheduling system looks for dependency Qs and finds work without dependency (808). If there is work that does not have a dependency on any dependency Q, it dequeues the work in dependency Q (810) and enqueues it to runnable-Q (811).
스케쥴링 시스템은 이 과정을 반복함으로써(812), 여러 어플리케이션들로부터 입력된 work들을 기술된 dependency 순서에 맞게 동작시킬 수 있다. 또한 기존에 dependency Q만을 가지고 동작하는 시스템과는 달리, runnable-Q와 finish-Q를 두어 스케쥴링 시스템과 외부 시스템들과의 동기화 오버헤드(overhead)를 줄임과 동시에 dependency resolving 작업과 dependency Q들로부터 dependency를 갖지 않는 work를 탐색하는 작업을 외부 시스템과 병렬로 수행할 수 있다.The scheduling system may repeat the process (812) to operate the jobs entered from the various applications according to the described order of dependency. In addition, unlike a system that operates only with dependency Q, it has runnable-Q and finish-Q to reduce the synchronization overhead between the scheduling system and external systems. In addition, dependency resolving and dependency Q Can be performed in parallel with the external system.
도 9는 본 발명의 일 실시예에 따른 도 8B에 나타낸 (C)단계를 상세하게 나타낸 흐름도이다.9 is a flowchart detailing the step (C) shown in FIG. 8B according to an embodiment of the present invention.
도 8의 808단계에서 dependency Q에 dependency를 갖지 않은 work가 있는 경우, 스케쥴링 시스템 내의 어느 하나의 dependency Q(첫 번째 dependency Q)를 획득하고(900), 획득된 dependency Q에 저장된 work를 획득한다(901). 획득된 work에 대해 모두 dependency resolving 작업이 수행되었는지 확인하여(902), 모든 작업이 수행되었다면 dependency Q에서 의존성을 갖지 않은 work를 dequeue하여(903) runnable-Q에 work를 enqueue한다(904).In
첫 번째 dependency Q의 모든 work에 대해 runnable-Q로의 enqueue가 수행되도록 작업을 수행하기 위해서, runnable-Q에 enqueue된 work가 첫 번째 dependency Q에 존재하는 마지막 work인지 확인하여(905), 마지막 work가 아닌 경우 첫 번째 dependency Q에 저장된 다음 work를 획득하고(906) 획득한 work에 대하여 상기 902단계부터 다시 수행한다.In order to perform an enqueue to the runnable-Q for all the work of the first dependency Q, it is checked whether the work enqueued in the runnable-Q is the last work existing in the first dependency Q (905) Otherwise, the next work stored in the first dependency Q is acquired (906), and the acquired work is performed again from the
만약 마지막 work인 경우 상기 첫 번째 dependency Q가 스케쥴링 시스템 내에 존재하는 마지막 dependency Q인지 판단하여(907) 마지막 dependency Q가 아닌 경우에는 시스템 내에 존재하는 다음 dependenct Q를 획득하여(908) 획득한 dependency Q에 대하여 상기 901단계부터 다시 수행하고, 마지막 dependency Q인 경우에는 시스템의 전체 수행과정을 다시 수행할 것인지를 판단하여(812) 도 8A에 나타난 801단계부터 반복하여 수행하게 된다.If it is the last work, it is determined whether the first dependency Q is the last dependency Q existing in the scheduling system (907). If it is not the last dependency Q, the next dependency Q existing in the system is acquired (908) If it is the last dependency Q, it is determined whether the entire execution process of the system is to be performed again (812), and the process is repeated from
도 8A 및 도 8B 또는 도 9에 나타난 일련의 처리과정에서, 804단계 또는 멀터코어 시스템 상의 상태에 의해 코어에서 work가 실행되고 있는 동안에 상기 805단계 내지 812단계 또는 상기 900단계 내지 907단계가 수행되므로써, 이전 work가 코어에서 실행되는 것과 동시에 시스템의 dependency resolving 작업 및 dependency를 갖지 않은 work를 탐색하는 작업을 수행할 수 있게 되어 스케쥴링 시스템의 지연 시간을 최소화 할 수 있다.8A and 8B or 9, the
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.Meanwhile, the embodiments of the present invention can be embodied as computer readable codes on a computer readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.Examples of the computer-readable recording medium include a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device and the like, and also a carrier wave (for example, transmission via the Internet) . In addition, the computer-readable recording medium may be distributed over network-connected computer systems so that computer readable codes can be stored and executed in a distributed manner. In addition, functional programs, codes, and code segments for implementing the present invention can be easily deduced by programmers skilled in the art to which the present invention belongs.
이상에서 본 발명의 실시를 위한 구체적인 예를 살펴보았다. 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.The present invention has been described in detail by way of examples. The foregoing embodiments are intended to illustrate the present invention and the scope of the present invention is not limited to the specific embodiments.
100 스케쥴러(Scheduler)
110 실행워크 저장부(runnable-Q)
120 완료워크 저장부(finish-Q)
130 임시저장부(dep-Q)
140 입출력포트(IO-port)100 Scheduler
110 Execution work storage (runnable-Q)
120 Completion work storage (finish-Q)
130 temporary storage unit (dep-Q)
140 I / O port (IO-port)
Claims (19)
상기 어플리케이션으로부터 전달받은 하나 이상의 워크를 상기 워크 간의 의존성(dependency)을 고려하여 상기 코어에서 실행될 순서대로 저장하는 실행워크 저장부;
상기 코어에서 실행하여 완료된 워크를 저장하는 완료워크 저장부; 및
워크들이 상기 코어에서 실행되고 있는 동안에, 상기 어플리케이션으로부터 전달되어 아직 실행되지 않은 워크 중에서 상기 완료워크 저장부에 저장된 워크와 관련하여 의존성을 갖는 워크에 대하여 상기 의존성을 제거하고, 상기 어플리케이션으로부터 전달되어 아직 실행되지 않은 워크 중에서 의존성을 갖지 않은 워크들을 검색하여 상기 실행워크 저장부에 저장하는 스케쥴러를 포함하는 다수의 어플리케이션이 멀티코어를 공유하여 사용하도록 할당하는 스케쥴링 시스템.
A scheduling system for receiving a work from an application and allocating the work to be executed in a plurality of cores,
An execution work storage unit for storing at least one work transferred from the application in an order to be executed in the core in consideration of dependencies between the works;
A completion work storage unit for executing the work in the core and storing the completed work; And
Removing the dependency from a work that has been delivered from the application and has not yet been executed among the works having a dependency in relation to the work stored in the finished work storage unit while the works are being executed in the core, A plurality of applications including a scheduler for searching for a work that does not have a dependency among unexecuted works and storing the same in the execution work storage unit.
상기 코어에서 실행하여 완료된 워크가 반환되는 경우 상기 완료된 워크를 상기 완료워크 저장부에 저장하고, 상기 어플리케이션으로부터 전달받은 워크가 상기 완료워크 저장부에 저장된 워크와 관련하여 의존성을 가진 경우 상기 의존성을 제거하여 상기 실행워크 저장부에 저장하는 스케쥴링 시스템.
The apparatus of claim 1, wherein the scheduler
The work is stored in the completed work storage unit when the completed work is returned from the core and the completed work is returned, and when the work received from the application has a dependency in relation to the work stored in the completed work storage unit, And stores it in the execution work storage unit.
하나 이상의 어플리케이션으로부터 전달받은 복수의 워크를 상기 실행워크 저장부에 저장하기 전에 상기 어플리케이션 별로 저장하는 임시저장부; 및
상기 실행워크 저장부에 저장된 워크를 상기 코어에 전달하거나 상기 코어에서 실행하여 완료된 워크를 상기 코어로부터 전달받는 입출력 포트;를 더 포함하는 스케쥴링 시스템.The method according to claim 1,
A temporary storage unit for storing a plurality of works received from at least one application for each application before storing the programs in the execution work storage unit; And
And an input / output port for transferring the work stored in the execution work storage unit to the core or executing the work in the core to receive the completed work from the core.
각각의 임시저장부에 저장된 하나 이상의 워크 중에 의존성을 갖지 않은 워크들을 검색하여 상기 실행워크 저장부에 저장하고,
상기 실행워크 저장부에 저장된 워크들을 유휴상태의 코어에서 실행되도록 상기 입출력 포트를 통하여 전달하며,
상기 코어에서 실행되어 완료된 워크를 입출력 포트를 통하여 전달받아 상기 완료워크 저장부에 저장하는 스케쥴링 시스템.
The apparatus of claim 3, wherein the scheduler comprises:
Searching for works having no dependency among at least one work stored in each of the temporary storages, storing them in the execution work storage,
The work stored in the execution work storage unit is transmitted through the input / output port to be executed in the idle core,
And a completed work executed in the core is received through an input / output port and stored in the completed work storage unit.
상기 임시저장부에 저장된 워크 중에서 상기 코어에서 실행되어 완료된 워크와 관련하여 의존성을 갖는 워크에 대하여 상기 의존성을 제거하는 스케쥴링 시스템.5. The apparatus of claim 4, wherein the scheduler
Wherein the dependency is removed from a work stored in the temporary storage, the work being executed in the core and having a dependency in relation to a completed work.
상기 코어에서 실행되어 완료된 워크를 전달받은 때에 실시간으로 상기 전달받은 워크와 관련하여 상기 임시저장부에 저장된 워크에 대한 의존성을 제거하거나, 일정 시간 단위로 상기 완료워크 저장부에 저장된 워크들과 관련하여 상기 임시저장부에 저장된 워크의 의존성을 제거하는 스케쥴링 시스템.5. The apparatus of claim 4, wherein the scheduler
The work being executed in the core to receive a completed work, and removing a dependence on the work stored in the temporary storage unit in relation to the received work in real time, or in association with the work stored in the completion work storage unit And removes the dependency of the work stored in the temporary storage unit.
상기 코어에서 실행되어 완료된 워크를 전달받은 때에, 상기 실행워크 저장부에 저장된 워크를 상기 완료된 워크를 전달한 코어에서 실행되도록 전달하는 스케쥴링 시스템.5. The apparatus of claim 4, wherein the scheduler
And delivers the work stored in the execution work storage unit to be executed in the core that has delivered the completed work when the completed work is executed in the core.
상기 워크들이 상기 코어에서 실행되고 있는 동안에, 상기 임시저장부에 저장된 워크 중에서 상기 코어에서 실행되어 완료된 워크와 관련하여 의존성을 갖는 워크에 대하여 상기 의존성을 제거하고, 상기 임시저장부에 저장된 워크 중에 의존성을 갖지 않은 워크들을 검색하여 상기 실행워크 저장부에 저장하는 스케쥴링 시스템.6. The apparatus of claim 5, wherein the scheduler
The work being executed in the core among the works stored in the temporary storage unit to remove the dependency on a work having a dependency in relation to the completed work while the works are being executed in the core, And stores the retrieved work in the execution work storage unit.
상기 어플리케이션으로부터 전달받은 하나 이상의 워크를 상기 워크 간의 의존성(dependency)을 고려하여 상기 코어에서 실행될 순서대로 저장하는 단계;
상기 코어에서 실행하여 완료된 워크를 저장하는 단계; 및
워크들이 상기 코어에서 실행되고 있는 동안에, 상기 어플리케이션으로부터 전달되어 아직 실행되지 않은 워크 중에서 상기 완료되어 저장된 워크와 관련하여 의존성을 갖는 워크에 대하여 상기 의존성을 제거하고, 상기 어플리케이션으로부터 전달되어 아직 실행되지 않은 워크 중에서 의존성을 갖지 않은 워크들을 검색하여 저장하는 단계를 포함하는 다수의 어플리케이션이 멀티코어를 공유하여 사용하도록 할당하는 스케쥴링 방법.
A scheduling method for allocating a work to a scheduling system to be executed in a plurality of cores,
Storing at least one work transferred from the application in order to be executed in the core in consideration of dependency between the works;
Executing on the core to store a completed work; And
Removing the dependency from a work that has been delivered from the application and has not yet been executed among those that have dependencies in relation to the completed and stored work while the works are running on the core, A plurality of applications including a step of searching for and storing works having no dependency in the work, and allocating the plurality of applications to share and use the multi-core.
상기 완료된 워크를 저장하는 단계 이후에 상기 어플리케이션으로부터 전달받은 워크가 상기 완료되어 저장된 워크와 관련하여 의존성을 가진 경우 상기 의존성을 제거하는 단계를 더 포함하는 스케쥴링 방법.
10. The method of claim 9,
And removing the dependency when the work received from the application after the step of storing the completed work has a dependency in relation to the completed and stored work.
상기 코어에서 실행될 순서대로 저장하는 단계는, 각각의 어플리케이션으로부터 전달된 하나 이상의 워크 중에 의존성을 갖지 않은 워크들을 검색하여 저장하는 단계; 및
상기 저장된 워크들을 유휴상태의 코어에서 실행되도록 상기 코어에 전달하는 단계를 더 포함하는 스케쥴링 방법.
10. The method of claim 9,
Wherein the storing in the order to be executed in the core includes searching and storing the works having no dependency among one or more work delivered from each application; And
And delivering the stored works to the core for execution in an idle core.
상기 완료된 워크를 저장하는 단계 이후에, 상기 코어에서 실행되어 완료된 워크를 전달받은 때에, 상기 실행될 순서대로 저장된 워크를 상기 완료된 워크를 전달한 코어에서 실행되도록 전달하는 단계;를 더 포함하는 스케쥴링 방법.
10. The method of claim 9,
And delivering the stored work in the order to be executed, to be executed in the core that delivered the completed work, when receiving the completed work executed in the core after the step of storing the completed work.
상기 실행워크 저장부에 저장된 워크가 존재하는지 판단하는 단계;
상기 실행워크 저장부에 저장된 워크가 존재한다면, 상기 워크를 실행할 수 있는 유휴상태의 코어가 존재하는지 판단하는 단계;
상기 유휴상태의 코어가 존재하는 경우, 상기 실행워크 저장부에 저장된 워크를 상기 유휴상태의 코어에서 실행되도록 전달하는 단계;
상기 실행워크 저장부에 저장된 워크가 존재하지 않거나 상기 유휴상태의 코어가 존재하지 않는 경우, 상기 완료워크 저장부에 완료된 워크가 존재하는지 판단하는 단계; 및
상기 완료워크 저장부에 완료된 워크가 존재한다면, 워크들이 상기 코어에서 실행되고 있는 동안에, 각각의 어플리케이션으로부터 전달된 하나 이상의 워크 중에서 상기 완료된 워크와 관련하여 의존성을 갖는 워크에 대하여 상기 의존성을 제거하고, 상기 어플리케이션으로부터 전달되어 아직 실행되지 않은 워크 중에서 의존성을 갖지 않은 워크들을 검색하여 상기 실행워크 저장부에 저장하는 단계;를 포함하는 스케쥴링 방법.
A scheduling system including an execution work storage unit for storing at least one work received from an application in order to be executed in the core in consideration of the dependency between the works, and a completion work storage unit for storing the completed work executed by the core A scheduling method for assigning a plurality of applications to use and share multicore,
Determining whether a work stored in the execution work storage unit exists;
If there is a work stored in the execution work storage, determining whether there is an idle core capable of executing the work;
Transferring the work stored in the execution work storage unit to be executed in the idle core when the idle core exists;
Determining whether a completed work exists in the completed work storage unit if there is no work stored in the execution work storage unit or the idle core is not present; And
Removing the dependency for a work having a dependency in relation to the completed work among at least one work delivered from each application while the works are being executed in the core, Searching for a work that has not yet been executed and has no dependency from the work delivered from the application and storing the work in the execution work storage unit.
상기 완료워크 저장부에 완료된 워크가 존재하지 않으면, 각각의 어플리케이션으로부터 전달된 하나 이상의 워크 중에 의존성을 갖지 않는 워크들이 존재하는지 판단하는 단계; 및
상기 의존성을 갖지 않는 워크가 존재하는 경우, 상기 의존성을 갖지 않는 워크를 상기 실행워크 저장부에 저장하는 단계;를 포함하는 스케쥴링 방법15. The method of claim 14,
Determining whether there is a work that does not have a dependency among one or more work delivered from each application if the completed work does not exist in the finished work storage; And
And storing the work having no dependency in the execution work storage if the work does not have the dependency.
상기 유휴상태의 코어에서 실행되도록 전달하는 단계를 수행하고 난 후, 또는 상기 의존성을 갖지 않는 워크가 존재하지 않는 경우, 상기 실행워크 저장부에 저장된 워크가 존재하는지 판단하는 단계로 회기하는 스케쥴링 방법.16. The method of claim 15,
To the step of determining whether there is a work stored in the execution work storage unit after performing the step of delivering to be executed in the idle core, or when there is no work that does not have the dependency.
상기 의존성을 갖지 않는 워크가 존재하는 경우, 상기 워크를 전달한 어플리케이션으로부터 전달된 모든 워크를 획득하는 단계;
상기 획득된 워크들에 대해 상기 완료워크 저장부에 저장된 워크와 관련하여 의존성을 제거하는 단계; 및
상기 의존성이 제거된 워크를 상기 실행워크 저장부에 저장하는 단계;를 포함하는 스케쥴링 방법.16. The method of claim 15,
If there is a work having no dependency, acquiring all the work delivered from the application that transferred the work;
Removing dependencies for the obtained works in relation to the work stored in the finished work storage; And
And storing the work whose dependency has been removed in the execution work storage unit.
상기 유휴상태의 코어에서 실행되도록 전달하는 단계를 통하여 상기 코어에서 상기 워크가 실행되는 동안에, 상기 실행워크 저장부에 저장된 워크가 존재하는지 판단하는 단계 또는 그 이후의 단계가 수행되는 스케쥴링 방법.16. The method of claim 15,
Wherein the step of determining whether there is a work stored in the execution work storage is performed during the execution of the work in the core through the step of delivering the work to be executed in the idle core.
상기 의존성을 갖지 않는 워크가 존재하는 경우, 상기 워크를 전달한 어플리케이션이 하나 이상 존재한다면 각각의 어플리케이션에 대한 모든 워크들에 대하여 상기 의존성을 제거하는 단계 및 상기 실행워크 저장부에 저장하는 단계를 반복하여 수행하는 스케쥴링 방법.18. The method of claim 17,
If there is a work that does not have the dependency, if there is more than one application that delivered the work, removing the dependency for all the works for each application and storing the dependency in the execution work storage A scheduling method to perform.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160175915A KR101775029B1 (en) | 2016-12-21 | 2016-12-21 | System and method of scheduling |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160175915A KR101775029B1 (en) | 2016-12-21 | 2016-12-21 | System and method of scheduling |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100079902A Division KR20120017294A (en) | 2010-08-18 | 2010-08-18 | System and method of scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170001682A KR20170001682A (en) | 2017-01-04 |
KR101775029B1 true KR101775029B1 (en) | 2017-09-05 |
Family
ID=57832051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160175915A KR101775029B1 (en) | 2016-12-21 | 2016-12-21 | System and method of scheduling |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101775029B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190048590A (en) * | 2017-10-31 | 2019-05-09 | 한국전자통신연구원 | Apparatus and method for defensing of code reuse attack |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070174831A1 (en) * | 2006-01-20 | 2007-07-26 | Hon Hai Precision Industry Co., Ltd. | System and method for distributing file processing tasks |
JP2009069921A (en) * | 2007-09-11 | 2009-04-02 | Hitachi Ltd | Multiprocessor system |
US20090328047A1 (en) | 2008-06-30 | 2009-12-31 | Wenlong Li | Device, system, and method of executing multithreaded applications |
-
2016
- 2016-12-21 KR KR1020160175915A patent/KR101775029B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070174831A1 (en) * | 2006-01-20 | 2007-07-26 | Hon Hai Precision Industry Co., Ltd. | System and method for distributing file processing tasks |
JP2009069921A (en) * | 2007-09-11 | 2009-04-02 | Hitachi Ltd | Multiprocessor system |
US20090328047A1 (en) | 2008-06-30 | 2009-12-31 | Wenlong Li | Device, system, and method of executing multithreaded applications |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190048590A (en) * | 2017-10-31 | 2019-05-09 | 한국전자통신연구원 | Apparatus and method for defensing of code reuse attack |
KR101989580B1 (en) | 2017-10-31 | 2019-06-14 | 한국전자통신연구원 | Apparatus and method for defensing of code reuse attack |
Also Published As
Publication number | Publication date |
---|---|
KR20170001682A (en) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20120017294A (en) | System and method of scheduling | |
US10810051B1 (en) | Autoscaling using file access or cache usage for cluster machines | |
CN112015713B (en) | Database task processing method and device, electronic equipment and readable medium | |
KR101640848B1 (en) | Job Allocation Method on Multi-core System and Apparatus thereof | |
JP3678414B2 (en) | Multiprocessor system | |
WO2017166777A1 (en) | Task scheduling method and device | |
US20130283286A1 (en) | Apparatus and method for resource allocation in clustered computing environment | |
CN108351783A (en) | The method and apparatus that task is handled in multinuclear digital information processing system | |
US10698729B2 (en) | Method for organizing tasks in the nodes of a computer cluster, associated task organizer and cluster | |
JP2012511204A (en) | How to reorganize tasks to optimize resources | |
US20090019439A1 (en) | Thread pool management apparatus and method | |
CN108958944A (en) | A kind of multiple core processing system and its method for allocating tasks | |
CN106569887B (en) | Fine-grained task scheduling method in cloud environment | |
Yildiz et al. | Chronos: Failure-aware scheduling in shared Hadoop clusters | |
US10013288B2 (en) | Data staging management system | |
US9047121B2 (en) | System and method for scheduling jobs in a multi-core processor | |
CN111158875B (en) | Multi-module-based multi-task processing method, device and system | |
CN110502337B (en) | Optimization system for shuffling stage in Hadoop MapReduce | |
KR101775029B1 (en) | System and method of scheduling | |
CN111143210A (en) | Test task scheduling method and system | |
CN109819674B (en) | Computer storage medium, embedded scheduling method and system | |
Alhussian et al. | An unfair semi-greedy real-time multiprocessor scheduling algorithm | |
JP7122299B2 (en) | Methods, apparatus, devices and storage media for performing processing tasks | |
CN114518940A (en) | Task scheduling circuit, method, electronic device and computer-readable storage medium | |
KR101271211B1 (en) | Apparatus and method for input/output processing of multi thread |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |