KR20220085578A - System and method of linking core in muti-core environment - Google Patents
System and method of linking core in muti-core environment Download PDFInfo
- Publication number
- KR20220085578A KR20220085578A KR1020200175754A KR20200175754A KR20220085578A KR 20220085578 A KR20220085578 A KR 20220085578A KR 1020200175754 A KR1020200175754 A KR 1020200175754A KR 20200175754 A KR20200175754 A KR 20200175754A KR 20220085578 A KR20220085578 A KR 20220085578A
- Authority
- KR
- South Korea
- Prior art keywords
- core
- function
- interworking
- scheduling table
- interrupt
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Exchange Systems With Centralized Control (AREA)
Abstract
본 발명의 바람직한 실시예에 따른 멀티 코어 환경에서 코어 연동 시스템 은, 멀티 코어의 연동 요구시, 멀티 코어 중에서 어느 하나의 코어에 인터럽트를 발생시키는 API부, 인터럽트 발생한 코어에서 현재 기능을 수행한 후 다음 수행될 기능이 있는지 확인하고, 다음 수행될 기능의 유무에 따라 다음 기능을 수행할 코어에 인터럽트를 발생시키거나 멀티 코어의 연동을 종료하는 인터럽트 서비스 루틴부, 및 상기 멀티 코어의 기능 수행 순서, 및 기능을 수행할 코어 정보를 포함하는 스케줄링 테이블이 저장되는 스케줄링 테이블부를 포함한다.The core interworking system in a multi-core environment according to a preferred embodiment of the present invention performs the current function in the API unit that generates an interrupt to any one of the multi-core cores when the interworking of the multi-cores is requested, and then performs the current function in the core where the interrupt occurred. An interrupt service routine unit that checks whether there is a function to be performed, generates an interrupt to the core to perform the next function or terminates interworking of the multi-cores according to the presence or absence of the function to be performed next, and the order of performing the functions of the multi-cores, and and a scheduling table unit in which a scheduling table including core information to perform a function is stored.
Description
본 발명은 멀티 코어 환경에서 코어 연동 시스템 및 방법에 관한 것이다.The present invention relates to a core interworking system and method in a multi-core environment.
일반적으로 차량의 멀티 코어(Multi-Core) 환경에서는 코어 각각의 로직이 개별적으로 동작하며, 코어 각각은 차량 제어 시스템의 특성에 따라 특정 기능을 수행하도록 역할이 분담되어 있다.In general, in a multi-core environment of a vehicle, the logic of each core operates individually, and each of the cores is assigned a role to perform a specific function according to the characteristics of the vehicle control system.
이러한 멀티 코어 환경에서 코어 각각은 특정 기능이 상호 연관되어 수행되도록 요구되는 경우가 있다.In such a multi-core environment, each core may be required to perform a specific function in correlation with each other.
예를 들면, 3 개의 코어가 존재하는 멀티 코어 환경에서, 첫 번째 코어가 제1 기능을 수행한 이후에 두 번째 코어가 제2 기능을 수행하고, 다시 첫 번째 코어가 제3 기능을 수행한 이후에, 마지막으로 세 번째 코어가 제4 기능을 수행하도록 요구되는 경우가 있을 수 있다.For example, in a multi-core environment in which three cores exist, after the first core performs a first function, the second core performs a second function, and after the first core performs a third function, Finally, there may be a case where the third core is required to perform the fourth function.
이러한 기능 수행 순서에 대한 예의 경우, 멀티 코어 환경에서 코어 각각의 로직이 개별적으로 동작함에 따라 특별한 메커니즘 없이는 구현이 불가능한 문제가 있다.In the case of an example of the order of performing these functions, there is a problem that it is impossible to implement without a special mechanism as the logic of each core operates individually in a multi-core environment.
종래의 멀티 코어 기술의 경우, 일반적인 멀티 코어의 스케줄러를 이용하여 코어 각각의 로직 동작에 대한 스케줄링을 지원하였으나, 코어 각각의 기능 수행 순서, 및 코어 로직의 동작 종료에 따른 즉각적인 기능 수행을 위한 타이밍 제어는 지원하지 않는다.In the case of the conventional multi-core technology, scheduling of each logic operation was supported using a general multi-core scheduler. does not support
즉 종래의 멀티 코어 기술의 경우, 상술한 바 있는 기능 수행 순서 예에 대한 구현이 불가하였으며, 상세한 설계로 이를 구현하더라도 그 강건성을 확보하는데 한계가 있다.That is, in the case of the conventional multi-core technology, it is impossible to implement the above-described example of the function execution sequence, and even if it is implemented with a detailed design, there is a limit in securing its robustness.
이에 본 발명은 상기한 사정을 감안하여 안출된 것으로, 멀티 코어 환경에서 코어 각각의 기능이 연동 수행되도록 이를 지원할 수 있는 메커니즘을 제공하는 멀티 코어 환경에서 코어 연동 시스템 및 방법을 제공하는 것을 목적으로 한다.Accordingly, the present invention has been devised in view of the above circumstances, and an object of the present invention is to provide a core interworking system and method in a multi-core environment that provides a mechanism to support the function of each core to be interlocked in a multi-core environment. .
상기 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 멀티 코어 환경에서 코어 연동 시스템은, 멀티 코어의 연동 요구시, 멀티 코어 중에서 어느 하나의 코어에 인터럽트를 발생시키는 API부; 인터럽트 발생한 코어에서 현재 기능을 수행한 후 다음 수행될 기능이 있는지 확인하고, 다음 수행될 기능의 유무에 따라 다음 기능을 수행할 코어에 인터럽트를 발생시키거나 멀티 코어의 연동을 종료하는 인터럽트 서비스 루틴부; 및 상기 멀티 코어의 기능 수행 순서, 및 기능을 수행할 코어 정보를 포함하는 스케줄링 테이블이 저장되는 스케줄링 테이블부;를 포함한다.In order to achieve the above object, a core interworking system in a multi-core environment according to a preferred embodiment of the present invention includes: an API unit for generating an interrupt to any one of the multi-core cores when the interworking of the multi-cores is requested; Interrupt service routine unit that performs the current function in the interrupted core, checks if there is a function to be performed next, and generates an interrupt in the core that will perform the next function or terminates the interworking of multi-cores depending on whether there is a function to be performed next. ; and a scheduling table unit in which a scheduling table including information on a core to perform a function and a function execution order of the multi-core is stored.
상기 API부는, 상기 스케줄링 테이블을 기초로 멀티 코어의 연동이 진행 중인지를 확인하는 비지 체크 API를 포함할 수 있다.The API unit may include a busy check API for checking whether multi-core interworking is in progress based on the scheduling table.
상기 API부는, 멀티 코어의 연동이 미진행 중인 것으로 확인되면, 멀티 코어의 연동이 동시에 요구되지 않도록 상기 스케줄링 테이블의 수정 방지 플래그의 상태를 변경하는 수정 방지 API를 포함할 수 있다.The API unit may include a modification prevention API for changing the state of the modification prevention flag of the scheduling table so that interworking of the multi-cores is not required at the same time when it is confirmed that the interworking of the multi-cores is not in progress.
상기 API부는, 멀티 코어의 연동에 이용되는 코어 ID와 기능 수행 순서를 상기 스케줄링 테이블에 저장하는 기능 정보 추가 API를 포함할 수 있다.The API unit may include a function information addition API for storing a core ID and a function execution order used for interworking of multi-cores in the scheduling table.
상기 API부는, 멀티 코어의 연동 실행을 요청받으면, 멀티 코어의 연동이 진행 중임을 알리도록 상기 스케줄링 테이블의 비지 플래그의 상태를 변경하는 실행 요청 API를 포함할 수 있다.The API unit may include an execution request API for changing a state of a busy flag of the scheduling table to notify that multi-core interworking is in progress when a multi-core interworking execution request is received.
상기 실행 요청 API는, 상기 스케줄링 테이블을 통해 기능이 수행될 코어를 확인하고, 확인되는 코어에 인터럽트를 발생시킬 수 있다.The execution request API may identify a core on which a function is to be performed through the scheduling table, and may generate an interrupt in the checked core.
상기 인터럽트 서비스 루틴부는, 인터럽트 발생한 코어에 의해 호출되면, 상기 스케줄링 테이블의 기능 주소에 따른 기능을 수행하고, 상시 스케줄링 테이블을 통해 다음 수행할 기능이 있는지를 확인할 수 있다.When the interrupt service routine unit is called by the interrupt generating core, it may perform a function according to the function address of the scheduling table and check whether there is a function to be performed next through the regular scheduling table.
상기 인터럽트 서비스 루틴부는, 다음 수행할 기능이 있는 경우, 상기 스케줄링 테이블의 요소 개수를 저감하고, 다음 기능을 수행할 코어에 인터럽트를 발생시킬 수 있다.When there is a function to be performed next, the interrupt service routine unit may reduce the number of elements in the scheduling table and generate an interrupt to a core that will perform the next function.
상기 인터럽트 서비스 루틴부는, 다음 수행할 기능이 없는 경우, 상기 스케줄링 테이블에서 타겟 요소의 포인터를 초기화시키고, 비지 플래그와 수정 방지 플래그의 상태를 변경하며, 멀티 코어의 연동을 종료할 수 있다.The interrupt service routine unit may initialize a pointer of a target element in the scheduling table, change states of a busy flag and a modification prevention flag, and terminate the interworking of the multi-cores, when there is no function to be performed next.
상기 스케줄링 테이블은, 코어의 기능 수행 순서에 대응하는 타겟 요소 포인터, 수행될 기능 정보의 개수에 대응하는 요소의 개수, 멀티 코어의 연동이 진행 중임을 알리는 비지 플래그, 및 스케줄링 테이블의 수정을 방지하는 수정 방지 플래그를 포함할 수 있다.The scheduling table includes a target element pointer corresponding to the function execution order of the core, the number of elements corresponding to the number of function information to be performed, a busy flag indicating that interworking of multi-cores is in progress, and preventing modification of the scheduling table May include anti-modification flags.
상기 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 멀티 코어 환경에서 코어 연동 방법은, 멀티 코어의 연동 요구에 따라, 멀티 코어의 기능 수행 순서와 기능을 수행할 코어 정보를 스케줄링 테이블에 저장하는 정보 수정 단계; 상기 스케줄링 테이블에 따라, 현재 기능을 수행할 코어에 인터럽트를 발생시키는 인터럽트 단계; 인터럽트 발생한 코어에서 상기 스케줄링 테이블을 기초로 현재 기능을 수행하는 기능 수행 단계; 및 상기 기능 수행 단계 이후에, 상기 스케줄링 테이블을 기초로 다음 수행될 기능의 유무에 따라 다음 기능을 수행할 코어에 인터럽트를 발생시키거나, 멀티 코어의 연동을 종료하는 인터럽트 서비스 루틴 단계;를 포함한다.In a core interworking method in a multi-core environment according to a preferred embodiment of the present invention for achieving the above object, according to the interworking request of the multi-core, the function execution order of the multi-core and the core information to perform the function are stored in a scheduling table. information correction; an interrupt step of generating an interrupt to a core to perform a current function according to the scheduling table; a function execution step of performing a current function based on the scheduling table in the interrupted core; and an interrupt service routine step of generating an interrupt to the core to perform the next function or terminating the interworking of the multi-cores after the function execution step, depending on whether a function to be performed next is based on the scheduling table. .
상기 정보 수정 단계 이전에, 상기 스케줄링 테이블을 기초로 멀티 코어의 연동이 진행 중인지를 확인하는 비지 체크 단계를 더 포함할 수 있다.The method may further include a busy check step of confirming whether multi-core interworking is in progress based on the scheduling table before the information modification step.
상기 멀티 코어의 연동이 미진행 중인 것으로 확인되면, 멀티 코어의 연동이 동시에 요구되지 않도록 상기 스케줄링 테이블의 수정 방지 플래그의 상태를 변경하는 수정 방지 단계를 더 포함할 수 있다.If it is confirmed that the interworking of the multi-cores is not in progress, the method may further include a modification prevention step of changing the state of the modification prevention flag of the scheduling table so that interworking of the multi-cores is not required at the same time.
상기 정보 수정 단계는, 상기 멀티 코어의 연동 실행을 요청받으면, 멀티 코어의 연동이 진행 중임을 알리도록 상기 스케줄링 테이블의 비지 플래그의 상태를 변경할 수 있다.The information modification step may change the state of the busy flag of the scheduling table to inform that the multi-core interworking is in progress when the multi-core interworking is requested.
본 발명의 바람직한 실시예에 따른 멀티 코어 환경에서 코어 연동 시스템 및 방법에 의하면, 멀티 코어 환경에서 코어 각각의 기능이 연동 수행될 수 있으며, 코어 로직의 동작 종료에 따른 즉각적인 기능 수행을 위한 타이밍 제어가 가능하다.According to the core interworking system and method in a multi-core environment according to a preferred embodiment of the present invention, each function of each core can be interlocked in a multi-core environment, and timing control for immediate function execution according to the end of the operation of the core logic is possible. It is possible.
또한, 멀티 코어의 연동이 필요한 차량 제어 시스템에서 타이밍 또는 기능 수행 순서에 민감한 로직에 대한 핸들링이 가능하도록 함으로써, 제어 효율이 향상되고 로직의 강건성을 확보하는 효과가 있다.In addition, by enabling handling of logic sensitive to timing or function execution order in a vehicle control system requiring interworking of multi-cores, control efficiency is improved and logic robustness is secured.
도 1은 본 발명의 바람직한 실시예에 따른 멀티 코어 환경에서 코어 연동 시스템의 블록도이다.
도 2는 도 1의 스케줄링 테이블부의 기능 수행 순서에 따른 멀티 코어의 동작 순서를 나타내는 도면이다.
도 3은 도 1의 API부의 동작 순서 및 동작 순서에 따른 스케줄링 테이블의 데이터의 일 예를 보여주는 도면이다.
도 4는 도 3의 첫 번째 인터럽트 발생한 코어의 동작 순서 및 동작 순서에 따른 스케줄링 테이블의 데이터의 일 예를 보여주는 도면이다.
도 5는 도 3의 두 번째 인터럽트 발생한 코어의 동작 순서 및 동작 순서에 따른 스케줄링 테이블의 데이터의 일 예를 보여주는 도면이다.
도 6은 도 3의 세 번째 인터럽트 발생한 코어의 동작 순서 및 동작 순서에 따른 스케줄링 테이블의 데이터의 일 예를 보여주는 도면이다.
도 7은 도 3의 네 번째 인터럽트 발생한 코어의 동작 순서 및 동작 순서에 따른 스케줄링 테이블의 데이터의 일 예를 보여주는 도면이다.
도 8은 도 1의 API부의 메커니즘의 일 예를 설명하기 위한 도면이다.
도 9는 도 1의 인터럽트 서비스 루틴부의 메커니즘의 일 예를 설명하기 위한 도면이다.
도 10은 본 발명의 바람직한 실시예에 따른 멀티 코어 환경에서 코어 연동 방법의 순서도이다.1 is a block diagram of a core interworking system in a multi-core environment according to a preferred embodiment of the present invention.
FIG. 2 is a diagram illustrating an operation sequence of a multi-core according to a function execution sequence of the scheduling table unit of FIG. 1 .
FIG. 3 is a diagram illustrating an example of an operation sequence of the API unit of FIG. 1 and data of a scheduling table according to the operation sequence;
FIG. 4 is a diagram illustrating an operation sequence of the first interrupt generated core of FIG. 3 and an example of data of a scheduling table according to the operation sequence;
FIG. 5 is a diagram illustrating an example of an operation sequence of a core that has generated a second interrupt of FIG. 3 and data of a scheduling table according to the operation sequence;
FIG. 6 is a diagram illustrating an operation sequence of a core in which a third interrupt has occurred in FIG. 3 and an example of data of a scheduling table according to the operation sequence;
FIG. 7 is a diagram illustrating an operation sequence of a core in which a fourth interrupt has occurred in FIG. 3 and an example of data of a scheduling table according to the operation sequence.
FIG. 8 is a diagram for explaining an example of the mechanism of the API unit of FIG. 1 .
FIG. 9 is a diagram for explaining an example of a mechanism of the interrupt service routine unit of FIG. 1 .
10 is a flowchart of a core interworking method in a multi-core environment according to a preferred embodiment of the present invention.
이하, 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 우선 각 도면의 구성 요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 이하에서 본 발명의 바람직한 실시예를 설명할 것이나, 본 발명의 기술적 사상은 이에 한정하거나 제한되지 않고 당업자에 의해 변형되어 다양하게 실시될 수 있음은 물론이다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. First of all, it should be noted that in adding reference numerals to the components of each drawing, the same components are given the same reference numerals as much as possible even though they are indicated on different drawings. In addition, preferred embodiments of the present invention will be described below, but the technical spirit of the present invention is not limited thereto and may be variously implemented by those skilled in the art without being limited thereto.
도 1은 본 발명의 바람직한 실시예에 따른 멀티 코어 환경에서 코어 연동 시스템의 블록도이다.1 is a block diagram of a core interworking system in a multi-core environment according to a preferred embodiment of the present invention.
도 1을 참고하면, 본 발명의 바람직한 실시예에 따른 멀티 코어 환경에서 코어 연동 시스템(100)은 멀티 코어의 순차적인 기능 수행이 가능하도록, 인터럽트 서비스 콜(Interrupt Service Call) 기능을 통해 멀티 코어를 연동시키고, 멀티 코어의 기능에 대해 스케줄링하는 것을 특징으로 한다.Referring to FIG. 1 , in a multi-core environment according to a preferred embodiment of the present invention, the
따른 멀티 코어 환경에서 코어 연동 시스템(100)은, API부(110), 인터럽트 서비스 루틴부(120), 및 스케줄링 테이블부(130)를 포함한다.In the multi-core environment, the
API부(110)는 멀티 코어 환경하의 특정 코어에서 멀티 코어 연동을 요구하는 경우, 스케줄링 테이블을 이용하여 멀티 코어의 연동을 실행할 수 있다.When a specific core under a multi-core environment requests multi-core interworking, the API unit 110 may execute multi-core interworking by using a scheduling table.
API부(110)는 스케줄링 테이블을 조작하여 기능 정보를 추가하는 기능 정보 추가(Add Function Information) API(111), 멀티 코어의 연동이 진행 중인지를 확인하는 비지 체크(Check Busy) API(113), 멀티 코어의 연동 실행을 요청하는 실행 요청(Execution Request) API(115), 및 다른 코어에서 멀티 코어의 연동을 동시에 요구하지 않도록, 스케줄링 테이블의 정보 수정을 방지하는 수정 방지(Protect Modification) API(117)을 포함할 수 있다.The API unit 110 includes an Add
인터럽트 서비스 루틴부(120)는 멀티 코어 각각에 구비될 수 있다. 인터럽트 서비스 루틴부(120)는 API부(110)에 의한 인터럽트 발생시, 인터럽트 서비스 콜 기능을 통해 수행할 기능을 불러올 수 있다. 인터럽트 서비스 루틴부(120)는 불러온 기능을 수행한 후 다음 수행될 기능이 있는지 확인할 수 있다. 인터럽트 서비스 루틴부(120)는 다음 수행될 기능의 유무에 따라 멀티 코어 중에서 다른 어느 하나의 코어에 인터럽트를 발생시키거나 기능 수행을 종료할 수 있다. 인터럽트 서비스 루틴부(120)는 실행이 보장될 수 있도록 높은 우선순위를 가질 수 있다. 여기서, 우선순위의 레벨은 차량 제어 시스템의 요구 사항에 따라 적절히 적용될 수 있다.The interrupt service routine unit 120 may be provided in each of the multi-cores. The interrupt service routine unit 120 may call a function to be performed through an interrupt service call function when an interrupt is generated by the API unit 110 . After performing the called function, the interrupt service routine unit 120 may check whether there is a function to be performed next. The interrupt service routine unit 120 may generate an interrupt in any one of the multi-core cores or end function execution according to the presence or absence of a function to be performed next. The interrupt service routine unit 120 may have a high priority so that execution can be guaranteed. Here, the level of priority may be appropriately applied according to the requirements of the vehicle control system.
스케줄링 테이블부(130)는 인터럽트 서비스 콜 기능에 따른 멀티 코어의 기능 수행 순서, 및 기능을 수행할 코어 정보를 포함하는 스케줄링 테이블(Scheduling Table)이 저장된다. 스케줄링 테이블에는 기능 정보 어레이(Function Information Array)와 제어 데이터(Control Datas)가 포함될 수 있다.The scheduling table unit 130 stores a scheduling table including information on a multi-core function execution order according to an interrupt service call function, and core information to perform a function. The scheduling table may include a function information array and control data.
기능 정보 어레이는 코어 ID, 기능 주소(Function Address)를 가지는 기능 어레이(Function Array)를 포함할 수 있다.The function information array may include a function array having a core ID and a function address.
제어 데이터는 코어의 기능 수행 순서를 나타내는 타겟 요소 포인터(Pointer of Target element), 요소의 개수(Number of Element), 멀티 코어의 연동이 진행중임을 알리는 비지 플래그(Busy Flag), 및 스케줄링 테이블의 수정을 방지하는 수정 방지 플래그(Modification Protection Flag)를 포함할 수 있다.The control data includes a pointer of a target element indicating the order in which the core functions perform, the number of elements, a busy flag indicating that multi-core interworking is in progress, and modification of the scheduling table. It may include a modification protection flag to prevent it.
인터럽트 서비스 루틴부(120)는 스케줄링 테이블의 데이터를 참조할 수 있다. 스케줄링 테이블은 멀티 코어 각각의 인터럽트 서비스 루틴부(120)에서 접근할 수 있도록 공유 메모리(Shared Memory) 영역에 저장된다.The interrupt service routine unit 120 may refer to data of the scheduling table. The scheduling table is stored in a shared memory area to be accessed by the interrupt service routine unit 120 of each multi-core.
이하에서는, 기능 수행 순서의 일 예에 따른 멀티 코어의 동작 순서를 설명한다.Hereinafter, the operation sequence of the multi-core according to an example of the function execution sequence will be described.
도 2는 도 1의 스케줄링 테이블의 기능 수행 순서에 따른 멀티 코어의 동작 순서를 나타내는 도면이다.FIG. 2 is a diagram illustrating an operation sequence of a multi-core according to a function execution sequence of the scheduling table of FIG. 1 .
도 2를 참고하면, 멀티 코어는 제1 코어(Core #1), 제2 코어(Core #2), 및 제3 코어(Core #3)를 포함할 수 있다.Referring to FIG. 2 , a multi-core may include a first core (Core #1), a second core (Core #2), and a third core (Core #3).
제1 기능(Function #1), 제2 기능(Function #2), 제3 기능(Function #3), 제4 기능(Function #4), 및 제5 기능(Function #5)의 순서로 기능 수행 순서(Sequence)가 마련될 수 있다. 여기서, 제1 기능(Function #1)과 제5 기능(Function #5)은 제1 코어(Core #1)에 의해 수행될 수 있다. 또한, 제2 기능(Function #2)과 제4 기능(Function #4)은 제2 코어(Core #2)에 의해 수행될 수 있다. 또한, 제3 기능(Function #3) 은 제3 코어(Core #3)에 의해 수행될 수 있다.Functions are performed in the order of the first function (Function #1), the second function (Function #2), the third function (Function #3), the fourth function (Function #4), and the fifth function (Function #5). A sequence may be provided. Here, the first function (Function #1) and the fifth function (Function #5) may be performed by the first core (Core #1). Also, the second function (Function #2) and the fourth function (Function #4) may be performed by the second core (Core #2). Also, the third function (Function #3) may be performed by the third core (Core #3).
멀티 코어 환경에서 코어 연동 시스템(100)은 특정 코어에서 멀티 코어의 연동 요구시, 멀티 코어 각각의 태스크 스케줄링과 상관없이, 스케줄링 테이블의 기능 수행 순서 및 타이밍으로 멀티 코어 각각의 로직이 유기적으로 동작되도록 할 수 있다.In a multi-core environment, the
일 실시예에 있어서, 제1 코어(Core #1)는 멀티 코어의 기능 수행 순서를 설정하고, API부(110)를 이용하여 스케줄링 테이블의 기능 수행 순서 및 코어 정보를 수정할 수 있다. 제1 코어(Core #1)는 멀티 코어의 연동 실행을 API부(110)에 요청할 수 있다. API부(110)에 의해 멀티 코어의 연동이 실행되면, 제1 코어(Core #1)는 기능 수행 순서(Sequence)에 따라 제1 기능(Function #1)을 수행할 수 있다.In an embodiment, the first core (Core #1) may set the function execution order of the multi-core, and may use the API unit 110 to modify the function execution order and core information of the scheduling table. The first core (Core #1) may request the multi-core interworking execution from the API unit 110 . When the multi-core interworking is executed by the API unit 110 , the first
제1 코어(Core #1)의 제1 기능(Function #1) 수행이 종료되면, 제3 코어(Core #3)는 하던 작업을 멈추고 제2 기능(Function #2)을 수행할 수 있다.When the performance of the first function (Function #1) of the first core (Core #1) is finished, the third core (Core #3) may stop the current work and perform the second function (Function #2).
제3 코어(Core #3)의 제2 기능(Function #2) 수행이 종료되면, 제2 코어(Core #2)는 하던 작업을 멈추고 제3 기능(Function #3)을 수행할 수 있다.When the execution of the second function (Function #2) of the third core (Core #3) is finished, the second core (Core #2) may stop the current work and perform the third function (Function #3).
제2 코어(Core #2)의 제3 기능(Function #3) 수행이 종료되면, 제3 코어(Core #3)는 하던 작업을 멈추고 제4 기능(Function #4)을 수행할 수 있다.When the execution of the third function (Function #3) of the second core (Core #2) is finished, the third core (Core #3) may stop the current work and perform the fourth function (Function #4).
제3 코어(Core #3)의 제4 기능(Function #4) 수행이 종료되면, 제1 코어(Core #1)는 하던 작업을 멈추고 제5 기능(Function #5)을 수행할 수 있다.When the execution of the fourth function (Function #4) of the third core (Core #3) is finished, the first core (Core #1) may stop the current work and perform the fifth function (Function #5).
이하에서는, 멀티 코어의 연동 요구시, API부(110)의 동작을 설명한다.Hereinafter, the operation of the API unit 110 when a multi-core interworking request is made will be described.
도 3은 도 1의 API부의 동작 순서 및 동작 순서에 따른 스케줄링 테이블의 데이터의 일 예를 보여주는 도면이다.FIG. 3 is a diagram showing an example of an operation sequence of the API unit of FIG. 1 and data of a scheduling table according to the operation sequence;
도 3을 참고하면, 특정 코어에서 멀티 코어의 연동 요구에 따른 API부(110)의 동작 순서를 확인할 수 있다.Referring to FIG. 3 , an operation sequence of the API unit 110 according to a multi-core interworking request in a specific core may be checked.
먼저, 특정 코어에서 동작 중 멀티 코어의 연동이 필요한 경우, 해당 특정 코어는 멀티 코어의 연동이 진행 중인지를 확인하는 비지 체크 API(113)를 호출한다.First, when interworking of multi-cores is required during operation in a specific core, the specific core calls the
비지 체크 API(113)는 스케줄링 테이블의 비지 플래그를 통해 멀티 코어의 연동이 진행 중인지를 확인하고, 멀티 코어의 연동 진행 여부를 해당 특정 코어에 전달한다. 해당 특정 코어는 멀티 코어의 연동이 미진행 중으로 확인되면, 멀티 코어의 연동 실행 관련한 조작을 금지하는 수정 방지 API(117)를 호출한다.The
수정 방지 API(117)는 멀티 코어의 연동이 동시에 요구되지 않도록, 스케줄링 테이블의 수정 방지 플래그(Modification Protection Flag)의 상태를 거짓(FALSE)에서 참(TRUE)으로 변경한다. 이를 통해, 해당 특정 코어가 아닌 다른 코어에서 참으로 상태 변경된 수정 방지 플래그를 확인하는 경우, 멀티 코어의 연동을 요구하지 않게 된다.The
이와 같은 과정이 완료되면, 해당 특정 코어는 스케줄링 테이블의 데이터를 수정하기 위해 기능 정보 추가 API(111)를 호출한다. 해당 특정 코어는 기능 수행 순서와 기능이 수행될 코어 ID를 기능 정보 추가 API(111)로 전달한다.When this process is completed, the specific core calls the function
기능 정보 추가 API(111)는 전달받은 코어 ID, 기능 수행 순서, 및 요소의 개수를 스케줄링 테이블에 저장한다. 여기서, 기능 정보 추가 API(111)는 전달받은 기능 정보의 개수에 따라 요소의 개수를 스케줄링 테이블에 저장할 수 있다.The function
일 실시예에 있어서, 기능 정보 추가 API(111)는 제1 코어(Core #1)의 제1 기능(Function #1)을 기능 정보 어레이의 첫 번째 기능 주소(Function Address [0])에 저장할 수 있다.In one embodiment, the function
그런 다음, 기능 정보 추가 API(111)는 제3 코어(Core #3)의 제2 기능(Function #2)을 기능 정보 어레이의 두 번째 기능 주소(Function Address [1])에 저장할 수 있다.Then, the function
그런 다음, 기능 정보 추가 API(111)는 제2 코어(Core #2)의 제3 기능(Function #3)을 기능 정보 어레이의 세 번째 기능 주소(Function Address [2])에 저장할 수 있다.Then, the function
마지막으로, 기능 정보 추가 API(111)는 제1 코어(Core #1)의 제4 기능(Function #4)을 기능 정보 어레이의 네 번째 기능 주소(Function Address [3])에 저장할 수 있다.Finally, the function
해당 특정 코어는 모든 정보의 등록이 완료되면, 실행 요청 API(115)에 연동 실행을 요청한다.When the registration of all information is completed, the specific core requests interworking execution to the
실행 요청 API(115)는 연동 실행을 요청받으면, 멀티 코어의 연동이 진행중임을 알리는 비지 플래그의 상태를 거짓(FALSE)에서 참(TRUE)으로 변경한다.When the
실행 요청 API(115)는 스케줄링 테이블을 통해 가장 먼저 수행되어야 할 코어의 정보를 확인한다. 실행 요청 API(115)는 기능이 수행될 코어에 인터럽트를 발생시킨다.The
이하에서는, 도 4 내지 도 7을 참고하여 인터럽트가 발생한 코어의 동작을 설명한다.Hereinafter, the operation of the core in which the interrupt has occurred will be described with reference to FIGS. 4 to 7 .
도 4는 도 3의 첫 번째 인터럽트 발생한 코어의 동작 순서 및 동작 순서에 따른 스케줄링 테이블의 데이터의 일 예를 보여주는 도면이다.FIG. 4 is a diagram showing an operation sequence of the first interrupt generated core of FIG. 3 and an example of data of a scheduling table according to the operation sequence;
도 4를 참고하면, 실행 요청 API(115)에 의해 첫 번째 인터럽트 발생한 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)의 동작 순서를 확인할 수 있다.Referring to FIG. 4 , the operation sequence of the interrupt service routine unit 120 of the first core (Core #1) in which the first interrupt is generated by the
제1 코어(Core #1)는 실행 요청 API(115)에 의해 인터럽트가 발생하면, 인터럽트 서비스 루틴부(120)를 호출한다. 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 인터럽트 발생에 의해 동작하며, 스케줄링 테이블의 첫 번째 기능 주소(Function Address [0])를 불러온다. 이때 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 다음 타겟 요소를 지시하도록 스케줄링 테이블의 타겟 요소 포인터를 ‘1’ 증가시키고, 요소의 개수를 ‘1’ 차감한다.When an interrupt is generated by the
그런 다음, 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 첫 번째 기능 주소(Function Address [0])에 따라 제1 기능(Function #1)을 수행한다.Then, the interrupt service routine unit 120 of the first core (Core #1) performs the first function (Function #1) according to the first function address (Function Address [0]).
그런 다음, 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 스케줄링 테이블을 통해 다음으로 수행될 기능이 있는지 확인한다.Then, the interrupt service routine unit 120 of the first core (Core #1) checks whether there is a function to be performed next through the scheduling table.
일 실시예에 있어서, 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 다음 진행할 기능이 있는 경우, 다음 기능을 수행할 제3 코어(Core #3)에 인터럽트를 발생시키고 제1 코어(Core #1)의 기능 수행을 종료한다.In one embodiment, when there is a function to proceed next, the interrupt service routine unit 120 of the first core (Core #1) generates an interrupt to the third core (Core #3) that will perform the next function and generates the first Terminates the function of the core (Core #1).
도 5는 도 3의 두 번째 인터럽트 발생한 코어의 동작 순서 및 동작 순서에 따른 스케줄링 테이블의 데이터의 일 예를 보여주는 도면이다.FIG. 5 is a diagram illustrating an operation sequence of a core in which a second interrupt occurs in FIG. 3 and an example of data of a scheduling table according to the operation sequence;
도 5를 참고하면, 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)에 의해 두 번째 인터럽트 발생한 제3 코어(Core #3)의 인터럽트 서비스 루틴부(120)의 동작 순서를 확인할 수 있다.Referring to FIG. 5 , the operation sequence of the interrupt service routine unit 120 of the third core (Core #3) in which the second interrupt is generated by the interrupt service routine unit 120 of the first core (Core #1) can be checked. have.
제3 코어(Core #3)는 인터럽트가 발생하면, 인터럽트 서비스 루틴부(120)를 호출한다. 제3 코어(Core #3)의 인터럽트 서비스 루틴부(120)는 인터럽트 발생에 의해 동작하며, 스케줄링 테이블의 두 번째 기능 주소(Function Address [1])를 불러온다. 이때 제3 코어(Core #3)의 인터럽트 서비스 루틴부(120)는 다음 타겟 요소를 지시하도록 스케줄링 테이블의 타겟 요소 포인터를 ‘1’ 증가시키고, 요소의 개수를 ‘1’ 차감한다.When an interrupt occurs, the third core (Core #3) calls the interrupt service routine unit 120 . The interrupt service routine unit 120 of the third core (Core #3) operates by generating an interrupt and calls the second function address (Function Address [1]) of the scheduling table. At this time, the interrupt service routine unit 120 of the third core (Core #3) increments the target element pointer of the scheduling table by '1' to indicate the next target element, and subtracts the number of elements by '1'.
그런 다음, 제3 코어(Core #3)의 인터럽트 서비스 루틴부(120)는 두 번째 기능 주소(Function Address [1])에 따라 제2 기능(Function #2)을 수행한다.Then, the interrupt service routine unit 120 of the third core (Core #3) performs the second function (Function #2) according to the second function address (Function Address [1]).
그런 다음, 제3 코어(Core #3)의 인터럽트 서비스 루틴부(120)는 스케줄링 테이블을 통해 다음으로 수행될 기능이 있는지 확인한다.Then, the interrupt service routine unit 120 of the third core (Core #3) checks whether there is a function to be performed next through the scheduling table.
일 실시예에 있어서, 제3 코어(Core #3)의 인터럽트 서비스 루틴부(120)는 다음 진행할 기능이 있는 경우, 다음 기능을 수행할 제2 코어(Core #2)에 인터럽트를 발생시키고 제3 코어(Core #3)의 기능 수행을 종료한다.In one embodiment, when there is a function to proceed next, the interrupt service routine unit 120 of the third core (Core #3) generates an interrupt to the second core (Core #2) that will perform the next function and generates a third Terminates the execution of the function of the core (Core #3).
도 6은 도 3의 세 번째 인터럽트 발생한 코어의 동작 순서 및 동작 순서에 따른 스케줄링 테이블의 데이터의 일 예를 보여주는 도면이다.FIG. 6 is a diagram illustrating an operation sequence of a core that has generated a third interrupt of FIG. 3 and an example of data of a scheduling table according to the operation sequence;
도 6을 참고하면, 제3 코어(Core #3)의 인터럽트 서비스 루틴부(120)에 의해 세 번째 인터럽트 발생한 제2 코어(Core #2)의 인터럽트 서비스 루틴부(120)의 동작 순서를 확인할 수 있다.Referring to FIG. 6 , the operation sequence of the interrupt service routine unit 120 of the second core (Core #2) in which the third interrupt is generated by the interrupt service routine unit 120 of the third core (Core #3) can be checked. have.
제2 코어(Core #2)는 인터럽트가 발생하면, 인터럽트 서비스 루틴부(120)를 호출한다. 제2 코어(Core #2)의 인터럽트 서비스 루틴부(120)는 인터럽트 발생에 의해 동작하며, 스케줄링 테이블의 세 번째 기능 주소(Function Address [2])를 불러온다. 이때 제2 코어(Core #2)의 인터럽트 서비스 루틴부(120)는 다음 타겟 요소를 지시하도록 스케줄링 테이블의 타겟 요소 포인터를 ‘1’ 증가시키고, 요소의 개수를 ‘1’ 차감한다.When an interrupt occurs, the second core (Core #2) calls the interrupt service routine unit 120 . The interrupt service routine unit 120 of the second core (Core #2) operates by generating an interrupt and calls the third function address (Function Address [2]) of the scheduling table. At this time, the interrupt service routine unit 120 of the second core (Core #2) increments the target element pointer of the scheduling table by '1' to indicate the next target element, and subtracts the number of elements by '1'.
그런 다음, 제2 코어(Core #2)의 인터럽트 서비스 루틴부(120)는 세 번째 기능 주소(Function Address [2])에 따라 제3 기능(Function #3)을 수행한다.Then, the interrupt service routine unit 120 of the second core (Core #2) performs a third function (Function #3) according to the third function address (Function Address [2]).
그런 다음, 제2 코어(Core #2)의 인터럽트 서비스 루틴부(120)는 스케줄링 테이블을 통해 다음으로 수행될 기능이 있는지 확인한다.Then, the interrupt service routine unit 120 of the second core (Core #2) checks whether there is a function to be performed next through the scheduling table.
일 실시예에 있어서, 제2 코어(Core #2)의 인터럽트 서비스 루틴부(120)는 다음 진행할 기능이 있는 경우, 다음 기능을 수행할 제1 코어(Core #1)에 인터럽트를 발생시키고 제2 코어(Core #2)의 기능 수행을 종료한다.In one embodiment, when there is a function to proceed next, the interrupt service routine unit 120 of the second core (Core #2) generates an interrupt to the first core (Core #1) that will perform the next function and generates a second Terminates the function of the core (Core #2).
도 7은 도 3의 네 번째 인터럽트 발생한 코어의 동작 순서 및 동작 순서에 따른 스케줄링 테이블의 데이터의 일 예를 보여주는 도면이다.FIG. 7 is a diagram illustrating an operation sequence of a core in which a fourth interrupt has occurred in FIG. 3 and an example of data of a scheduling table according to the operation sequence;
도 7을 참고하면, 제2 코어(Core #2)의 인터럽트 서비스 루틴부(120)에 의해 네 번째 인터럽트 발생한 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)의 동작 순서를 확인할 수 있다.Referring to FIG. 7 , the operation sequence of the interrupt service routine unit 120 of the first core (Core #1) in which the fourth interrupt is generated by the interrupt service routine unit 120 of the second core (Core #2) can be checked. have.
제1 코어(Core #1)는 인터럽트가 발생하면, 인터럽트 서비스 루틴부(120)를 호출한다. 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 인터럽트 발생에 의해 동작하며, 스케줄링 테이블의 네 번째 기능 주소(Function Address [3])를 불러온다. 이때 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 스케줄링 테이블의 요소의 개수를 ‘1’ 차감한다. 또한 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 요소의 개수가 0이 되는 경우, 스케줄링 테이블의 타겟 요소 포인터를 ‘1’ 증가시키지 않고, ‘0’으로 초기화시킬 수 있다.When an interrupt occurs, the first core (Core #1) calls the interrupt service routine unit 120 . The interrupt service routine unit 120 of the first core (Core #1) operates by generating an interrupt and calls the fourth function address (Function Address [3]) of the scheduling table. At this time, the interrupt service routine unit 120 of the first core (Core #1) subtracts '1' from the number of elements in the scheduling table. Also, when the number of elements becomes 0, the interrupt service routine unit 120 of the first core (Core #1) may initialize the target element pointer of the scheduling table to '0' without increasing '1'.
그런 다음, 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 네 번째 기능 주소(Function Address [3])에 따라 제4 기능(Function #3)을 수행한다.Then, the interrupt service routine unit 120 of the first core (Core #1) performs the fourth function (Function #3) according to the fourth function address (Function Address [3]).
그런 다음, 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 스케줄링 테이블을 통해 다음으로 수행될 기능이 있는지 확인한다.Then, the interrupt service routine unit 120 of the first core (Core #1) checks whether there is a function to be performed next through the scheduling table.
일 실시예에 있어서, 제1 코어(Core #1)의 인터럽트 서비스 루틴부(120)는 더 이상 진행할 기능이 없는 경우, 멀티 코어의 연동이 진행 상태가 아님을 알리도록 비지 플래그의 상태를 참에서 거짓으로 변환하고, 스케줄링 테이블의 정보 수정이 가능하도록 수정 방지 플래그의 상태를 참에서 거짓으로 변환한 후 멀티 코어의 연동을 종료한다.In one embodiment, when there is no further function to proceed, the interrupt service routine unit 120 of the first core (Core #1) sets the state of the busy flag from true to inform that the interworking of the multi-core is not in progress. It is converted to false, and the state of the modification prevention flag is changed from true to false so that the information of the scheduling table can be modified, and then the interworking of the multi-core is terminated.
도 4 내지 도 7에서 설명한 과정은 스케줄링 테이블의 요소가 모두 사라질 때까지 반복되며, 이러한 과정을 통해 멀티 코어의 연동이 진행된다.The process described with reference to FIGS. 4 to 7 is repeated until all elements of the scheduling table disappear, and multi-core interworking is performed through this process.
도 8은 도 1의 API부의 메커니즘의 일 예를 설명하기 위한 도면이다.FIG. 8 is a diagram for explaining an example of the mechanism of the API unit of FIG. 1 .
도 8을 참고하면, API부(110)는 비지 체크 API(113), 수정 방지 API(117), 기능 정보 추가 API(111), 및 실행 요청 API(115) 순서로 설계될 수 있다.Referring to FIG. 8 , the API unit 110 may be designed in the order of a
비지 체크 API(113)는 스케줄링 테이블의 비지 플래그를 통해 멀티 코어의 연동이 진행 중임을 확인할 수 있다.The
수정 방지 API(117)는 스케줄링 테이블의 수정 방지 플래그의 상태를 거짓(FALSE)에서 참(TRUE)으로 변경함으로써 다른 코어에서 멀티 코어의 연동 요구가 이루어지지 않도록 할 수 있다.The
기능 정보 추가 API(111)는 코어 ID와 기능 주소를 스케줄링 테이블의 기능 정보 어레이에 추가할 수 있다. 또한, 기능 정보 추가 API(111)는 기능 정보의 개수에 따라 요소의 개수를 증가시킬 수 있다.The function
실행 요청 API(115)는 요소의 개수가 ‘0’으로 스케줄링 테이블이 비어 있는 상태에서 호출되는 경우, 스케줄링 테이블의 수정 방지 플래그의 상태를 참(TRUE)에서 거짓(FALSE)으로 변경할 수 있다.When the
실행 요청 API(115)는 요소의 개수가 ‘1’ 이상으로 스케줄링 테이블이 비어있지 않은 상태에서 호출되는 경우, 스케줄링 테이블의 비지 플래그의 상태를 거짓(FALSE)에서 참(TRUE)으로 변경할 수 있다. 또한, 실행 요청 API(115)는 기능 정보 어레이로부터 기능 수행될 코어 ID를 불러온 뒤 해당 코어에 인터럽트를 발생시킬 수 있다.When the number of elements is '1' or more and the
도 9는 도 1의 인터럽트 서비스 루틴부의 메커니즘의 일 예를 설명하기 위한 도면이다.FIG. 9 is a diagram for explaining an example of a mechanism of the interrupt service routine unit of FIG. 1 .
도 9를 참고하면, 인터럽트 서비스 루틴부(120)는 스케줄링 테이블을 통해 해당 코어에서 수행할 기능 주소를 불러온다. 이 때, 인터럽트 서비스 루틴부(120)는 요소의 개수를 ‘1’ 감소할 수 있다. 일 실시예에 있어서, 요소의 개수가 ‘0’에 도달하는 경우, 인터럽트 서비스 루틴부(120)는 타겟 요소의 포인터를 ‘0’으로 리셋시킬 수 있다. 인터럽트 서비스 루틴부(120)는 요소의 개수가 ‘0’ 도달하지 않은 경우, 타겟 요소의 포인터를 ‘1’ 증가시켜 다음 요소를 지시할 수 있다. 이후, 인터럽트 서비스 루틴부(120)는 기능 주소에 따라 기능을 수행한다.Referring to FIG. 9 , the interrupt service routine unit 120 calls a function address to be performed by the corresponding core through the scheduling table. In this case, the interrupt service routine unit 120 may decrease the number of elements by '1'. In an embodiment, when the number of elements reaches '0', the interrupt service routine unit 120 may reset the pointer of the target element to '0'. When the number of elements does not reach '0', the interrupt service routine unit 120 may indicate the next element by increasing the pointer of the target element by '1'. Thereafter, the interrupt service routine unit 120 performs a function according to the function address.
그런 다음 인터럽트 서비스 루틴부(120)는 요소의 개수를 통해 다음으로 수행될 기능이 있는지 확인한다.Then, the interrupt service routine unit 120 checks whether there is a function to be performed next through the number of elements.
일 실시예에 있어서, 인터럽트 서비스 루틴부(120)는 다음으로 수행될 기능이 있는 경우, 다음 기능을 수행할 코어에 인터럽트를 발생시킨 뒤 동작을 종료한다.In one embodiment, when there is a function to be performed next, the interrupt service routine unit 120 generates an interrupt in the core to perform the next function and then ends the operation.
인터럽트 서비스 루틴부(120)는 다음으로 수행될 기능이 없는 경우, 비지 플래그와 수정 방지 플래그를 초기화시킨 후 멀티 코어의 연동을 종료한다.When there is no function to be performed next, the interrupt service routine unit 120 initializes the busy flag and the modification prevention flag and ends the interworking of the multi-cores.
도 10은 본 발명의 바람직한 실시예에 따른 멀티 코어 환경에서 코어 연동 방법의 순서도이다.10 is a flowchart of a core interworking method in a multi-core environment according to a preferred embodiment of the present invention.
도 1, 및 10을 참고하면, 본 발명의 바람직한 실시예에 따른 멀티 코어 환경에서 코어 연동 방법은, 연동 요구 단계(S110), 정보 수정 단계(S120), 인터럽트 단계(S130), 기능 수행 단계(S140), 기능 유무 판단 단계(S150), 인터럽트 발생 단계(S160), 및 연동 종료 단계(S170)를 포함할 수 있다.1 and 10, the core interworking method in a multi-core environment according to a preferred embodiment of the present invention includes an interworking request step (S110), an information modification step (S120), an interrupt step (S130), and a function execution step ( S140), a function determination step (S150), an interrupt generation step (S160), and an interworking end step (S170) may be included.
연동 요구 단계(S110)에서, 특정 코어는 멀티 코어의 연동을 요구하여 API부(110)를 호출할 수 있다.In the interworking request step ( S110 ), a specific core may call the API unit 110 by requesting interworking of multiple cores.
정보 수정 단계(S120)에서, API부(110)는 멀티 코어의 연동 요구에 따라, 멀티 코어의 기능 수행 순서와 기능을 수행할 코어 정보를 스케줄링 테이블에 저장할 수 있다.In the information correction step ( S120 ), the API unit 110 may store, in the scheduling table, the order of performing the functions of the multi-cores and information on the cores to perform the functions according to the interworking request of the multi-cores.
한편, 정보 수정 단계(S120) 이전에, API부(110)는 스케줄링 테이블을 기초로 멀티 코어의 연동이 진행 중인지를 확인할 수 있다. 또한, API부(110)는 멀티 코어의 연동이 미진행 중인 것으로 확인되면, 멀티 코어의 연동이 동시에 요구되지 않도록 스케줄링 테이블의 수정 방지 플래그의 상태를 변경할 수 있다. 또한, API부(110)는 멀티 코어의 연동 실행을 요청받으면, 멀티 코어의 연동이 진행 중임을 알리도록 스케줄링 테이블의 비지 플래그의 상태를 변경할 수 있다.Meanwhile, before the information correction step ( S120 ), the API unit 110 may check whether multi-core interworking is in progress based on the scheduling table. Also, when it is confirmed that the interworking of the multi-cores is not in progress, the API unit 110 may change the state of the modification prevention flag of the scheduling table so that interworking of the multi-cores is not required at the same time. In addition, when receiving a request for interworking of multi-cores, the API unit 110 may change the state of the busy flag of the scheduling table to notify that interworking of multi-cores is in progress.
정부 수정 단계(S120) 이후 인터럽트 단계(S130)에서, API부(110)는 스케줄링 테이블에 따라 현재 기능을 수행할 코어에 인터럽트를 발생시킬 수 있다.In the interrupt step (S130) after the government correction step (S120), the API unit 110 may generate an interrupt to the core to perform the current function according to the scheduling table.
기능 수행 단계(S140)에서, 인터럽트 서비스 루틴부(120)는 인터럽트 발생한 코어에서 스케줄링 테이블을 기초로 현재 기능을 수행할 수 있다.In the function execution step S140 , the interrupt service routine unit 120 may perform a current function based on the scheduling table in the core where the interrupt has occurred.
기능 유무 판단 단계(S150)에서, 인터럽트 서비스 루틴부(120)는 현재 기능을 수행한 이후에 스케줄링 테이블을 기초로 다음 수행될 기능의 유무를 확인할 수 있다.In the function presence determination step ( S150 ), the interrupt service routine unit 120 may check whether a function to be performed next is based on the scheduling table after the current function is performed.
인터럽트 발생 단계(S160)에서, 인터럽트 서비스 루틴부(120)는 스케줄링 테이블로부터 다음 수행될 기능이 확인되는 경우, 다음 기능을 수행할 코어에 인터럽트를 발생시킬 수 있다.In the interrupt generation step ( S160 ), when the function to be performed next is confirmed from the scheduling table, the interrupt service routine unit 120 may generate an interrupt to the core that will perform the next function.
연동 종료 단계(S170)에서, 인터럽트 서비스 루틴부(120)는 스케줄링 테이블로부터 다음 수행될 기능이 확인되지 않는 경우, 멀티 코어의 연동을 종료할 수 있다. 이때 인터럽트 서비스 루틴부(120)는 스케줄링 테이블에서 타겟 요소의 포인터를 초기화시키고, 비지 플래그와 수정 방지 플래그의 상태를 변경할 수 있다.In the interworking termination step ( S170 ), the interrupt service routine unit 120 may terminate the interworking of the multi-core if a function to be performed next is not confirmed from the scheduling table. In this case, the interrupt service routine unit 120 may initialize the pointer of the target element in the scheduling table and change the states of the busy flag and the modification prevention flag.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다.The above description is merely illustrative of the technical idea of the present invention, and various modifications, changes, and substitutions are possible within the range that does not depart from the essential characteristics of the present invention by those of ordinary skill in the art to which the present invention pertains. will be. Accordingly, the embodiments disclosed in the present invention and the accompanying drawings are for explaining, not limiting, the technical spirit of the present invention, and the scope of the technical spirit of the present invention is not limited by these embodiments and the accompanying drawings .
본 발명에 따른 단계들 및/또는 동작들은 기술분야의 통상의 기술자에 의해 이해될 수 있는 것과 같이, 다른 순서로, 또는 병렬적으로, 또는 다른 에포크(epoch) 등을 위해 다른 실시 예들에서 동시에 일어날 수 있다.Steps and/or operations according to the present invention may occur concurrently in different embodiments, either in a different order, or in parallel, or for different epochs, etc., as would be understood by one of ordinary skill in the art. can
실시 예에 따라서는, 단계들 및/또는 동작들의 일부 또는 전부는 하나 이상의 비-일시적 컴퓨터-판독가능 매체에 저장된 명령, 프로그램, 상호작용 데이터 구조(interactive data structure), 클라이언트 및/또는 서버를 구동하는 하나 이상의 프로세서들을 사용하여 적어도 일부가 구현되거나 또는 수행될 수 있다. 하나 이상의 비-일시적 컴퓨터-판독가능 매체는 예시적으로 소프트웨어, 펌웨어, 하드웨어, 및/또는 그것들의 어떠한 조합일 수 있다. 또한, 본 명세서에서 논의된 "모듈"의 기능은 소프트웨어, 펌웨어, 하드웨어, 및/또는 그것들의 어떠한 조합으로 구현될 수 있다.Depending on the embodiment, some or all of the steps and/or operations run instructions, a program, an interactive data structure, a client and/or a server stored in one or more non-transitory computer-readable media. At least some may be implemented or performed using one or more processors. The one or more non-transitory computer-readable media may be illustratively software, firmware, hardware, and/or any combination thereof. Further, the functionality of a “module” discussed herein may be implemented in software, firmware, hardware, and/or any combination thereof.
100: 코어 연동 시스템
110: API부
111: 기능 정보 추가 API
113: 비지 체크 API
115: 실행 요청 API
117: 수정 방지 API
120: 인터럽트 서비스 루틴부
130: 스케줄링 테이블부100: core interlocking system
110: API unit
111: API for adding feature information
113: Busy Check API
115: Execute Request API
117: Anti-Modification API
120: interrupt service routine unit
130: scheduling table unit
Claims (14)
인터럽트 발생한 코어에서 현재 기능을 수행한 후 다음 수행될 기능이 있는지 확인하고, 다음 수행될 기능의 유무에 따라 다음 기능을 수행할 코어에 인터럽트를 발생시키거나 멀티 코어의 연동을 종료하는 인터럽트 서비스 루틴부; 및
상기 멀티 코어의 기능 수행 순서, 및 기능을 수행할 코어 정보를 포함하는 스케줄링 테이블이 저장되는 스케줄링 테이블부;
를 포함하는 멀티 코어 환경에서 코어 연동 시스템.an API unit for generating an interrupt to any one of the multi-cores when requesting interworking of the multi-cores;
Interrupt service routine unit that performs the current function in the interrupted core, checks if there is a function to be performed next, and generates an interrupt to the core that will perform the next function or terminates the interworking of multi-cores depending on whether the next function is to be performed. ; and
a scheduling table unit for storing a scheduling table including information on a core to perform a function and a function execution order of the multi-core;
In a multi-core environment that includes a core interlocking system.
상기 API부는,
상기 스케줄링 테이블을 기초로 멀티 코어의 연동이 진행 중인지를 확인하는 비지 체크 API를 포함하는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 시스템.The method of claim 1,
The API unit,
The core interworking system in a multi-core environment, characterized in that it includes a busy check API for checking whether interworking of multi-cores is in progress based on the scheduling table.
상기 API부는,
멀티 코어의 연동이 미진행 중인 것으로 확인되면, 멀티 코어의 연동이 동시에 요구되지 않도록 상기 스케줄링 테이블의 수정 방지 플래그의 상태를 변경하는 수정 방지 API를 포함하는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 시스템.The method of claim 1,
The API unit,
When it is confirmed that the interworking of multi-cores is not in progress, the core interworking system in a multi-core environment, characterized in that it includes a modification prevention API for changing the state of the modification prevention flag of the scheduling table so that interworking of multi-cores is not required at the same time .
상기 API부는,
멀티 코어의 연동에 이용되는 코어 ID와 기능 수행 순서를 상기 스케줄링 테이블에 저장하는 기능 정보 추가 API를 포함하는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 시스템.The method of claim 1,
The API unit,
A core interworking system in a multi-core environment, characterized in that it comprises a function information addition API for storing the core ID and function execution order used for interworking of multi-cores in the scheduling table.
상기 API부는,
멀티 코어의 연동 실행을 요청받으면, 멀티 코어의 연동이 진행 중임을 알리도록 상기 스케줄링 테이블의 비지 플래그의 상태를 변경하는 실행 요청 API를 포함하는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 시스템.The method of claim 1,
The API unit,
and an execution request API for changing the state of the busy flag of the scheduling table to inform that multi-core interworking is in progress when a multi-core interworking execution request is received.
상기 실행 요청 API는,
상기 스케줄링 테이블을 통해 기능이 수행될 코어를 확인하고, 확인되는 코어에 인터럽트를 발생시키는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 시스템.6. The method of claim 5,
The execution request API is
A core interworking system in a multi-core environment, characterized in that by checking a core on which a function is to be performed through the scheduling table, and generating an interrupt to the checked core.
상기 인터럽트 서비스 루틴부는,
인터럽트 발생한 코어에 의해 호출되면, 상기 스케줄링 테이블의 기능 주소에 따른 기능을 수행하고, 상기 스케줄링 테이블을 통해 다음 수행할 기능이 있는지를 확인하는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 시스템.The method of claim 1,
The interrupt service routine unit,
A core interworking system in a multi-core environment, characterized in that when a call is made by an interrupt-generated core, a function according to the function address of the scheduling table is performed, and whether there is a next function to be performed through the scheduling table.
상기 인터럽트 서비스 루틴부는,
다음 수행할 기능이 있는 경우, 상기 스케줄링 테이블의 요소 개수를 저감하고, 다음 기능을 수행할 코어에 인터럽트를 발생시키는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 시스템.8. The method of claim 7,
The interrupt service routine unit,
When there is a function to be performed next, the core interworking system in a multi-core environment, characterized in that by reducing the number of elements in the scheduling table, and generating an interrupt to a core to perform the next function.
상기 인터럽트 서비스 루틴부는,
다음 수행할 기능이 없는 경우, 상기 스케줄링 테이블에서 타겟 요소의 포인터를 초기화시키고, 비지 플래그와 수정 방지 플래그의 상태를 변경하며, 멀티 코어의 연동을 종료하는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 시스템.9. The method of claim 8,
The interrupt service routine unit,
Core interworking system in a multi-core environment, characterized in that when there is no function to perform next, the pointer of the target element in the scheduling table is initialized, the states of the busy flag and the modification prevention flag are changed, and the interworking of the multi-core is terminated .
상기 스케줄링 테이블은,
코어의 기능 수행 순서에 대응하는 타겟 요소 포인터, 수행될 기능 정보의 개수에 대응하는 요소의 개수, 멀티 코어의 연동이 진행 중임을 알리는 비지 플래그, 및 스케줄링 테이블의 수정을 방지하는 수정 방지 플래그를 포함하는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 시스템.The method of claim 1,
The scheduling table is
Includes a target element pointer corresponding to the function execution order of the core, the number of elements corresponding to the number of function information to be performed, a busy flag indicating that multi-core interworking is in progress, and a modification prevention flag to prevent modification of the scheduling table A core interlocking system in a multi-core environment, characterized in that
상기 스케줄링 테이블에 따라, 현재 기능을 수행할 코어에 인터럽트를 발생시키는 인터럽트 단계;
인터럽트 발생한 코어에서 상기 스케줄링 테이블을 기초로 현재 기능을 수행하는 기능 수행 단계; 및
상기 기능 수행 단계 이후에, 상기 스케줄링 테이블을 기초로 다음 수행될 기능의 유무에 따라 다음 기능을 수행할 코어에 인터럽트를 발생시키거나, 멀티 코어의 연동을 종료하는 인터럽트 서비스 루틴 단계;
를 포함하는 멀티 코어 환경에서 코어 연동 방법.an information modification step of storing, in a scheduling table, information on a multi-core function execution order and core to perform a function according to a multi-core interworking request;
an interrupt step of generating an interrupt to a core to perform a current function according to the scheduling table;
a function execution step of performing a current function based on the scheduling table in the interrupted core; and
an interrupt service routine step of generating an interrupt to a core to perform a next function or terminating interworking of multi-cores according to the existence of a function to be performed next based on the scheduling table, after the function execution step;
A core interworking method in a multi-core environment comprising a.
상기 정보 수정 단계 이전에, 상기 스케줄링 테이블을 기초로 멀티 코어의 연동이 진행 중인지를 확인하는 비지 체크 단계를 더 포함하는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 방법.12. The method of claim 11,
Prior to the step of modifying the information, the method of claim 1, further comprising a busy check step of checking whether multi-core interworking is in progress based on the scheduling table.
상기 멀티 코어의 연동이 미진행 중인 것으로 확인되면, 멀티 코어의 연동이 동시에 요구되지 않도록 상기 스케줄링 테이블의 수정 방지 플래그의 상태를 변경하는 수정 방지 단계를 더 포함하는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 방법.13. The method of claim 12,
When it is confirmed that the interworking of the multi-cores is not in progress, the method further comprises a modification prevention step of changing the state of the modification prevention flag of the scheduling table so that interworking of the multi-cores is not required at the same time. linkage method.
상기 정보 수정 단계는,
상기 멀티 코어의 연동 실행을 요청받으면, 멀티 코어의 연동이 진행 중임을 알리도록 상기 스케줄링 테이블의 비지 플래그의 상태를 변경하는 것을 특징으로 하는 멀티 코어 환경에서 코어 연동 방법.14. The method of claim 13,
The step of modifying the information is
The core interworking method in a multi-core environment, characterized in that when a request for interworking of the multi-core is received, the state of the busy flag of the scheduling table is changed to inform that interworking of the multi-core is in progress.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200175754A KR102497255B1 (en) | 2020-12-15 | 2020-12-15 | System and method of linking core in muti-core environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200175754A KR102497255B1 (en) | 2020-12-15 | 2020-12-15 | System and method of linking core in muti-core environment |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220085578A true KR20220085578A (en) | 2022-06-22 |
KR102497255B1 KR102497255B1 (en) | 2023-02-06 |
Family
ID=82216358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200175754A KR102497255B1 (en) | 2020-12-15 | 2020-12-15 | System and method of linking core in muti-core environment |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102497255B1 (en) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010244332A (en) * | 2009-04-07 | 2010-10-28 | Nec Corp | Means of task assignment for multi-core system, method of the same, and program of the same |
JP2011237929A (en) * | 2010-05-07 | 2011-11-24 | Toyota Motor Corp | Multi-core processor |
WO2012120654A1 (en) * | 2011-03-08 | 2012-09-13 | 富士通株式会社 | Task scheduling method and multi-core system |
KR20150118035A (en) * | 2014-04-11 | 2015-10-21 | 르네사스 일렉트로닉스 가부시키가이샤 | Semiconductor device, diagnostic test, and diagnostic test circuit |
KR20160076270A (en) | 2014-12-22 | 2016-06-30 | 현대모비스 주식회사 | Multi Core system for the Vehicles |
JP6156379B2 (en) * | 2012-08-13 | 2017-07-05 | 日本電気株式会社 | Scheduling apparatus and scheduling method |
KR20180093199A (en) * | 2017-02-10 | 2018-08-21 | 한국전자통신연구원 | Method and apparatus for task scheduling in multi-core embedded system |
-
2020
- 2020-12-15 KR KR1020200175754A patent/KR102497255B1/en active IP Right Grant
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010244332A (en) * | 2009-04-07 | 2010-10-28 | Nec Corp | Means of task assignment for multi-core system, method of the same, and program of the same |
JP2011237929A (en) * | 2010-05-07 | 2011-11-24 | Toyota Motor Corp | Multi-core processor |
WO2012120654A1 (en) * | 2011-03-08 | 2012-09-13 | 富士通株式会社 | Task scheduling method and multi-core system |
JP6156379B2 (en) * | 2012-08-13 | 2017-07-05 | 日本電気株式会社 | Scheduling apparatus and scheduling method |
KR20150118035A (en) * | 2014-04-11 | 2015-10-21 | 르네사스 일렉트로닉스 가부시키가이샤 | Semiconductor device, diagnostic test, and diagnostic test circuit |
KR20160076270A (en) | 2014-12-22 | 2016-06-30 | 현대모비스 주식회사 | Multi Core system for the Vehicles |
KR20180093199A (en) * | 2017-02-10 | 2018-08-21 | 한국전자통신연구원 | Method and apparatus for task scheduling in multi-core embedded system |
Also Published As
Publication number | Publication date |
---|---|
KR102497255B1 (en) | 2023-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6874149B1 (en) | Hooking of replacement and augmented API functions | |
US9454401B2 (en) | Resource allocation method and apparatus of GPU | |
CN107436799B (en) | Method and device for realizing consistency of distributed transactions | |
US20160335135A1 (en) | Method for minimizing lock contention among threads when tasks are distributed in multithreaded system and appratus using the same | |
CN110795222A (en) | Multithreading task scheduling method, device, equipment and readable medium | |
US20100262810A1 (en) | Concurrent instruction operation method and device | |
CN110187985B (en) | Communication method, system and device | |
EP2256627A2 (en) | Queuing for locks on data | |
CN111367694B (en) | Event processing method, server and computer storage medium | |
KR20220085578A (en) | System and method of linking core in muti-core environment | |
CN111159298B (en) | Service request processing method and device, electronic equipment and storage medium | |
CN112818336A (en) | Data access method, data access device and computer readable storage medium | |
US10303523B2 (en) | Method and apparatus to migrate stacks for thread execution | |
US8689200B1 (en) | Method and system for optimizing an executable program by generating special operations for identical program entities | |
CN111913804A (en) | Pre-visit report generation method and device, electronic equipment and storage medium | |
CN108062224B (en) | Data reading and writing method and device based on file handle and computing equipment | |
CN107203339B (en) | Data storage method and device | |
CN110543360A (en) | Task processing method and system | |
CN113535439B (en) | Service request processing method, device, equipment and storage medium | |
CN115629920A (en) | Data request exception handling method and device and computer readable storage medium | |
CN110543349B (en) | Application starting acceleration method and device and computer readable storage medium | |
CN113032118A (en) | Asynchronous operation processing method for computer application program and corresponding system | |
CN113961366A (en) | Kernel function calling method of operating system and computer equipment | |
CN106897089B (en) | System operation execution method and device | |
CN116756048B (en) | Code analysis method, device, computer equipment and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |