KR101757886B1 - 태스크 분할 할당 시스템 - Google Patents

태스크 분할 할당 시스템 Download PDF

Info

Publication number
KR101757886B1
KR101757886B1 KR1020170004203A KR20170004203A KR101757886B1 KR 101757886 B1 KR101757886 B1 KR 101757886B1 KR 1020170004203 A KR1020170004203 A KR 1020170004203A KR 20170004203 A KR20170004203 A KR 20170004203A KR 101757886 B1 KR101757886 B1 KR 101757886B1
Authority
KR
South Korea
Prior art keywords
routine
task
tasks
assignment
information
Prior art date
Application number
KR1020170004203A
Other languages
English (en)
Inventor
진정훈
이동언
이성원
Original Assignee
엘아이지넥스원 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘아이지넥스원 주식회사 filed Critical 엘아이지넥스원 주식회사
Priority to KR1020170004203A priority Critical patent/KR101757886B1/ko
Application granted granted Critical
Publication of KR101757886B1 publication Critical patent/KR101757886B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Abstract

태스크 분할 할당 시스템을 공개한다. 본 발명은 사용자 명령에 응답하여, 복수개의 태스크와 소프트웨어 프로그램을 구성하는 복수개의 루틴을 생성하고, 태스크 정보와 루틴 정보를 획득하고, 획득된 루틴 정보에 따라 복수개의 루틴을 복수개의 루틴 그룹으로 그룹화하고, 복수개의 루틴 그룹을 복수개의 태스크에 할당 설정하여 루틴 할당 설정값을 획득하고, 루틴 정보와 태스크 정보 및 루틴 할당 설정값을 포함하는 초기값 설정파일을 생성하는 개발자 단말 및 소프트웨어 프로그램을 실행하기 위한 복수개의 CPU 코어가 구현된 적어도 하나의 CPU를 구비하고, 루틴 할당 설정값에 따라 복수개의 루틴 그룹을 복수개의 태스크에 할당하고, 복수개의 태스크를 복수개의 CPU 코어에 할당하는 태스크 할당 설정값을 획득하여, 복수개의 태스크를 복수개의 CPU 코어에 할당하고 소프트웨어 프로그램을 실행함으로써, 복수개의 그룹 각각의 수행 시간을 측정하고, 측정된 복수개의 루틴 각각의 수행 시간으로부터 복수개의 태스크에 할당된 복수개의 루틴 그룹이 모두 수행 완료되는 시간이 최소값으로 계산되는 할당 조합을 갖도록 루틴 할당 설정값 및 태스크 할당 설정값을 수정하여 최적화 설정값으로 획득하는 실행 장치를 포함한다.

Description

태스크 분할 할당 시스템{TASK DIVIDING AND ASSIGNMENT SYSTEM }
본 발명은 태스크 분할 할당 시스템에 관한 것으로, 특히 하드웨어 성능에 따라 실행시간이 최적화되도록 자동으로 복수개의 루틴을 태스크에 자동 할당하는 태스크 분할 할당 시스템에 관한 것이다.
현대 무기체계는 기존의 무기체계에 비해 더욱 다양한 환경에서 적응적으로 지정된 작전을 정확하게 수행할 것이 요구되고 있다. 이를 위해 현재 다수의 무기체계에는 각종 전자 제어 장치를 구비되고 있으며, 각종 전자 제어 장치를 제어하는 제어 소프트웨어 프로그램의 설정에 따라 다양한 운용 환경에서 스스로 판단하여 작전을 수행할 수 있도록 구성되고 있다.
무기체계에서 소프트웨어의 중요도가 높아짐에 따라 소프트웨어를 구현하는 코드 또한 매우 복잡해지고 있다. 무기체계는 그 특성상 다른 분야의 소프트웨어에 비해 더욱 정확성과 신속성이 요구된다. 이러한 정확성과 신속성에 대한 요구를 만족시키기 위해서 기존에도 개발자들은 소프트웨어 개발 시에, 작업량이 많은 소프트웨어를 적어도 하나의 CPU 코어(core) 각각이 실행할 수 있는 작업 단위인 태스크(Task)를 작성하고, 작성된 태스크가 적어도 하나의 CPU 코어에서 분산 실행되도록 함으로써, 요구되는 수행 시간을 만족시키도록 하고 있다.
기존의 전자 제어 장치는 대부분 하나의 CPU를 구비하였으나, 현대의 전자 제어 장치는 대부분 복수개의 CPU를 구비하고 있다. 또한 각각의 CPU는 다시 복수개의 CPU 코어를 구비하도록 구성되며, 각각의 코어는 개별적으로 태스크를 실행할 수 있다. 즉 복수개의 태스크가 각각 서로 다른 코어에 분산되면 병렬로 동시에 실행되어 수행 시간을 단축시킬 수 있다.
다만 수행 시간의 단축을 위해서는 복수개의 태스크를 복수개의 CPU 코어에 효율적으로 할당할 필요성이 있다. 그러나 기존에는 개발자가 소프트웨어 코드의 수행 시간을 직접 측정하고, 측정된 수행 시간에 따라 코드에 포함된 복수개의 루틴(Routine)을 분산 실행될 각각의 태스크에 분할하여 할당하였다. 즉 개발자가 직접 루틴을 복수개의 태스크에 할당하였다. 여기서 루틴은 소프트웨어 코드에서 특정 기능을 수행하는 것으로 구분되는 함수(또는 명령)를 의미한다. 그리고 수행 시간 측정은 여러가지 조건 변화 또는 정확성을 고려하여 복수 횟수로 수행되는 것이 바람직하다. 또한 개발자는 소프트웨어가 실행될 전자 제어 장치의 하드웨어 구성(특히 CPU 코어 구성)을 확인하여 루틴이 할당된 복수개의 태스크를 실행할 CPU 코어를 설정하였다.
따라서 소프트웨어 코드의 변경이 발생되는 경우뿐만 아니라, 소프트웨어 코드 변경이 없더라도 요구되는 수행 시간이 단축되거나, 소프트웨어가 실행될 전자 제어 장치의 하드웨어 구성이나 성능에 변경이 발생되는 경우에도, 다시 수행 시간 측정에 따른 루틴 분할과 태스크 할당 및 실행 CPU 코어를 설정하는 작업을 반복적으로 수행해야 하는 문제가 있었다. 즉 수행 시간 최적화가 제대로 수행되지 않거나, 최적화되더라도 실행 조건이 변화되면 적용하지 못하는 경우가 빈번하게 발생되었다.
한국 공개 특허 제10-2013-0011491호 (2013.01.30 공개)
본 발명의 목적은 하드웨어 성능에 따라 실행시간 최적화가 가능한 태스크 분할 할당 시스템을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 일 예에 따른 태스크 분할 할당 시스템은 사용자 명령에 응답하여, 복수개의 태스크와 소프트웨어 프로그램을 구성하는 복수개의 루틴을 생성하고, 태스크 정보와 루틴 정보를 획득하고, 획득된 상기 루틴 정보에 따라 상기 복수개의 루틴을 복수개의 루틴 그룹으로 그룹화하고, 상기 복수개의 루틴 그룹을 상기 복수개의 태스크에 할당 설정하여 루틴 할당 설정값을 획득하고, 상기 루틴 정보와 상기 태스크 정보 및 루틴 할당 설정값을 포함하는 초기값 설정파일을 생성하는 개발자 단말; 및 상기 소프트웨어 프로그램을 실행하기 위한 복수개의 CPU 코어가 구현된 적어도 하나의 CPU를 구비하고, 상기 루틴 할당 설정값에 따라 상기 복수개의 루틴 그룹을 상기 복수개의 태스크에 할당하고, 상기 복수개의 태스크를 상기 복수개의 CPU 코어에 할당하는 태스크 할당 설정값을 획득하여, 상기 복수개의 태스크를 상기 복수개의 CPU 코어에 할당하고 상기 소프트웨어 프로그램을 실행함으로써, 상기 복수개의 그룹 각각의 수행 시간을 측정하고, 측정된 상기 복수개의 루틴 각각의 수행 시간으로부터 상기 복수개의 태스크에 할당된 상기 복수개의 루틴 그룹이 모두 수행 완료되는 시간이 최소값으로 계산되는 할당 조합을 갖도록 상기 루틴 할당 설정값 및 상기 태스크 할당 설정값을 수정하여 최적화 설정값으로 획득하는 실행 장치; 를 포함한다.
상기 개발자 단말은 상기 사용자 명령에 응답하여, 상기 복수개의 태스크를 생성하는 태스크 생성부; 상기 복수개의 루틴을 획득하여 저장하는 루틴 저장부; 및 상기 태스크 생성부로부터 상기 복수개의 태스크에 대한 태스크 ID와 우선순위, 실행 순서가 포함된 상기 태스크 정보를 인가받고, 상기 루틴 저장부로부터 상기 복수개의 루틴에 대한 루틴 ID와 함수명, 실행 시작 시간 및 선행 루틴 ID가 포함된 상기 루틴 정보를 인가받아, 상기 복수개의 루틴을 상기 복수개의 루틴 그룹으로 그룹화하고, 상기 복수개의 루틴 그룹을 기설정된 방식으로 상기 복수개의 태스크에 할당 설정하여 상기 초기값 설정 파일을 생성하는 초기값 설정부; 를 포함하는 것을 특징으로 한다.
상기 초기값 설정부는 사용자 명령으로 상기 복수개의 루틴 각각에 대한 복잡성 정보가 인가되면, 상기 복잡성 정보에 따라 상기 복수개의 루틴 그룹을 상기 복수개의 태스크에 할당 설정하고, 상기 복잡성 정보가 인가되지 않으면, 상기 복수개의 루틴 그룹을 상기 복수개의 태스크에 순차적으로 또는 임의 할당하는 것을 특징으로 한다.
상기 초기값 설정부는 상기 실행 장치의 상기 복수개의 CPU 코어에 대한 모의 CPU 코어 정보가 획득되면, 상기 복수개의 태스크를 상기 모의 CPU 코어 정보에 따른 상기 복수개의 CPU 코어에 기설정된 방식으로 할당 설정하는 것을 특징으로 한다.
상기 초기값 설정부는 상기 복수개의 루틴 중 상기 루틴 정보에 상기 선행 루틴 ID로 설정된 루틴들을 상기 루틴 그룹으로 그룹화하는 것을 특징으로 한다.
상기 실행 장치는 상기 초기값 설정파일을 인가받아 상기 루틴 정보와 상기 태스크 정보 및 상기 루틴 할당 설정값을 획득하고, 상기 복수개의 CPU 코어에 대한 CPU 코어 정보를 획득하며, 상기 태스크 정보와 상기 CPU 코어 정보에 따라 상기 복수개의 태스크를 상기 복수개의 CPU 코어에 할당 설정하는 상기 태스크 할당 설정값을 획득하고, 상기 복수개의 루틴과 상기 복수개의 태스크 및 상기 복수개의 CPU 코어의 할당 조합을 가변하여 상기 루틴 할당 설정값과 상기 태스크 할당 설정값을 수정하여 저장하는 설정 저장부; 상기 루틴 할당 설정값에 따라 상기 복수개의 루틴을 상기 복수개의 태스크에 할당하는 루틴 할당부; 상기 상기 태스크 할당 설정값에 따라 상기 복수개의 태스크를 상기 복수개의 CPU 코어에 할당하는 태스크 할당부; 상기 복수개의 CPU 코어에 할당된 상기 복수개의 태스크를 실행하여, 상기 복수개의 태스크에 할당된 상기 복수개의 루틴 그룹의 상기 복수개의 루틴 각각의 수행 시간인 루틴 수행 시간을 측정하고, 측정된 상기 루틴 수행 시간을 이용하여 상기 복수개의 루틴 그룹 각각에 대한 루틴 그룹 수행 시간과 루틴 그룹 수행 완료 시간을 계산하는 프로그램 실행부; 및 상기 복수개의 루틴 그룹 각각에 대해 계산된 상기 루틴 그룹 수행 완료 시간 중 최대값을 상기 복수개의 루틴 그룹이 모두 수행 완료되는 시간인 모든 루틴 그룹 수행 완료 시간으로 획득하고, 상기 복수개의 루틴과 상기 복수개의 태스크 및 상기 복수개의 CPU 코어의 모든 할당 조합에 대해 획득된 상기 모든 루틴 그룹 수행 완료 시간 중 최소값으로 계산되는 할당 조합에 따른 상기 루틴 할당 설정값 및 상기 태스크 할당 설정값을 상기 최적화 설정값으로 설정하는 최적화 판별부; 를 포함하는 것을 특징으로 한다.
상기 설정 저장부는 상기 태스크 정보에 포함된 상기 복수개의 태스크 각각의 우선순위, 실행 순서에 따라 상기 복수개의 태스크를 상기 복수개의 CPU 코어에 할당 설정하는 것을 특징으로 한다.
상기 프로그램 실행부는 상기 복수개의 루틴 각각에 대한 상기 루틴 수행 시간과 상기 루틴 정보에서 획득되는 상기 실행 시간의 합으로 상기 복수개의 루틴 그룹 각각에 대한 루틴 그룹 수행 시간을 계산하고, 상기 복수개의 CPU 코어 중 동일 CPU 코어에 서로 다른 루틴 그룹이 연속하여 실행되는 경우, 동일 CPU 코어에서 실행되는 복수개의 상기 루틴 그룹의 각각의 상기 루틴 그룹 수행 시간과 그룹 전환을 위한 콘텍스트 스위칭 시간 및 상기 실행 시간으로부터 상기 루틴 그룹 수행 완료 시간을 계산하는 것을 특징으로 한다.
상기 최적화 판별부는 현재 설정된 할당 조합에 따라 획득된 상기 모든 루틴 그룹 수행 완료 시간을 이전 획득된 이전 모든 루틴 그룹 수행 완료 시간과 비교하여 상기 모든 루틴 그룹 수행 완료 시간이 이전 모든 루틴 그룹 수행 완료 시간보다 작으면, 현재 설정된 할당 조합에 따른 상기 루틴 할당 설정값 및 상기 태스크 할당 설정값을 상기 최적화 설정값으로 설정하고, 가능한 모든 할당 조합에 대해 상기 모든 루틴 그룹 수행 완료 시간이 획득되었는지 판별하여, 가능한 모든 할당 조합에 대해 상기 모든 루틴 그룹 수행 완료 시간이 획득된 것으로 판별되면, 상기 설정 저장부로 최적화 완료 신호를 전송하고, 가능한 모든 할당 조합에 대해 상기 모든 루틴 그룹 수행 완료 시간이 획득되지 않은 것으로 판별되면, 상기 설정 저장부가 루틴 할당 설정값 및 태스크 할당 설정값을 이전과 다른 할당 조합으로 수정하도록 상기 설정 저장부로 재할당 요청 신호를 전송하는 것을 특징으로 한다.
따라서, 본 발명의 태스크 분할 할당 시스템은 복수개의 루틴을 복수개의 태스크에 할당하고, 복수개의 태스크를 복수개의 CPU 코어에 할당하는 할당 조합을 실행 장치에서 사용 가능한 CPU 코어의 개수 및 CPU 코어에서 실제 루틴이 실행되는 수행 시간을 측정하여 최소의 시간에 모든 루틴이 실행될 수 있는 최적의 조합을 자동으로 획득할 수 있다. 그러므로, 요구되는 실행 시간이나 하드웨어 성능 변경에도 소프트웨어 프로그램 변경없이, 최적의 상태로 태스크를 할당할 수 있다.
도1 은 본 발명의 일실시예에 따른 태스크 분할 할당 시스템의 구성을 나타낸다.
도2 는 CPU 코어 정보, 루틴 정보 및 태스크 정보에 포함될 정보의 구성을 나타낸다.
도3 은 루틴 및 태스크가 모의 CPU 코어에 임의 할당되는 일예를 나타낸다.
도4 는 본 발명의 일실시예에 따른 태스크 분할 할당 방법을 나타낸다.
도5 는 도4 의 초기값 설정파일 생성 단계를 상세하게 나타낸 도면이다.
도6 은 CPU 코어 정보와 태스크 정보 및 루틴 정보의 일예를 나타낸다.
도7 은 도6 의 루틴 정보에 따른 루틴 그룹 설정의 일예를 나타낸다.
도8 은 CPU 코어 정보와 태스크 정보 및 루틴 그룹 정보를 시각적으로 나타낸 도면이다.
도9 는 루틴 그룹별 개별 루틴의 수행 시간을 나타낸다.
도10 은 루틴 수행 시간에 따라 계산되는 태스크가 할당된 복수개의 CPU 코어에서 태스크의 수행 완료 시간을 나타낸다.
도11 은 도4 의 최적화 판별 단계를 상세하게 나타낸 도면이다.
도12 는 초기값 설정파일과 최적화 설정값에 따른 수행 시간 측정 결과를 나타낸다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 설명하는 실시예에 한정되는 것이 아니다. 그리고, 본 발명을 명확하게 설명하기 위하여 설명과 관계없는 부분은 생략되며, 도면의 동일한 참조부호는 동일한 부재임을 나타낸다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...부", "...기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도1 은 본 발명의 일실시예에 따른 태스크 분할 할당 시스템의 구성을 나타내고, 도2 는 CPU 코어 정보, 루틴 정보 및 태스크 정보에 포함될 정보의 구성을 나타낸다.
도1 을 참조하면, 본 발명의 태스크 분할 할당 시스템은 개발자 단말(100) 및 실행 장치(200)를 구비한다. 여기서 개발자 단말(100)는 소프트웨어 프로그램을 개발하는 개발자가 사용자로서 이용하는 사용자 단말이며, 실행 장치는 개발된 소프트웨어 프로그램이 실행되는 장치를 의미한다. 실행 장치(200)에는 복수개의 하나의 CPU 코어가 구현된 적어도 하나의 CPU가 구비되어 소프트웨어 프로그램을 실행한다. 그리고 적어도 하나의 CPU 코어 각각은 태스크 단위로 소프트웨어 프로그램을 병렬로 실행할 수 있다.
개발자 단말(100)은 태스크 생성부(110), 루틴 생성부(120) 및 초기값 설정부(130)를 구비할 수 있다.
태스크 생성부(110)는 사용자 명령에 응답하여, 복수개의 태스크를 생성한다. 이때 생성되는 태스크 각각에는 도2 에 도시된 바와 같이, 태스크 식별자인 태스크 ID와 우선순위, 실행 순서 등의 태스크 정보가 포함될 수 있다.
한편 루틴 저장부(120)는 개발자가 작성하는 소프트웨어 코드를 구성하는 복수개의 루틴을 인가받아 저장한다. 상기한 바와 같이, 루틴은 소프트웨어 코드에서 특정 기능을 수행하는 것으로 구분되는 함수(또는 명령)로서, 저장되는 루틴 각각에는 도2 에서와 같이, 루틴 ID와 함수명, 이벤트명, 실행 시작 시간, 선행 루틴 ID 및 스택 사이즈 등의 루틴 정보가 포함될 수 있다. 여기서 이벤트명과 실행 시작 시간은 해당 루틴이 실행될 조건에 대한 정보를 나타낸다. 일부 루틴은 특정 시간 또는 특정 이벤트가 발생하는 경우에 실행되는 함수로 작성될 수 있다. 이렇게 실행 조건이 설정되는 루틴의 경우, 실행 여부를 판별하기 위한 정보로서 실행 시작 시간이나 이벤트명이 루틴에 포함되어야 한다. 그리고 선행 루틴 ID 또한 루틴이 실행될 조건에 대한 정보로서, 루틴이 실행되기 이전에 먼저 실행되어야만 하는 루틴의 ID를 나타낸다.
상기에서는 루틴 저장부(120)가 복수개의 루틴을 인가받아 저장하는 것으로 설명하였으나, 경우에 따라서는 태스크 생성부(110)와 마찬가지로 사용자 명령에 응답하여 복수개의 루틴을 생성하도록 구성될 수도 있으며, 이전 생성되어 저장된 루틴이 호출되어 수정 저장될 수도 있다.
초기값 설정부(130)는 태스크 생성부(110)에서 생성된 복수개의 태스크에 대한 태스크 정보 및 루틴 저장부(120)에 저장된 복수개의 루틴에 대한 루틴 정보를 획득하고, 소프트웨어 프로그램이 실행되는 실행 장치(200)의 CPU 개수 및 CPU 각각의 CPU 코어 개수 등에 정보가 포함된 모의 CPU 코어 정보를 인가받는다. 그리고 획득된 모의 CPU 코어 정보와 태스크 정보 및 루틴 정보를 이용하여 복수개의 루틴이 복수개의 태스크로 할당되도록 설정하고, 복수개의 태스크가 모의 CPU 코어 정보에 따른 복수의 모의 CPU 코어에 할당되도록 설정한다.
도3 은 루틴 및 태스크가 모의 CPU 코어에 할당 설정되는 일예를 나타낸다.
도3 에 도시된 바와 같이, 복수개의 루틴 각각에는 대응하는 함수가 포함되고, 복수개의 루틴 각각은 초기값 설정부(130)에 의해 복수개의 태스크 중 특정 태스크에 할당되도록 설정될 수 있다. 그리고 각각의 태스크에 할당되는 루틴의 개수는 제한되지 않으므로, 각각의 태스크에는 하나의 루틴이 할당될 수도 있으며, 복수개의 루틴이 할당될 수도 있다. 그리고 루틴이 할당된 태스크는 다시 해당 태스크를 실행할 모의 CPU 코어에 할당되도록 설정될 수 있다. 이때 태스크가 할당되도록 설정되는 모의 CPU 코어는 도3 에 도시된 바와 같이 서로 다른 CPU에 대한 모의 CPU 코어이어도 무방하다.
이때 초기값 설정부(130)는 루틴 저장부(120)에서 인가된 루틴 정보에 포함된 선행 루틴 ID를 기반으로 복수개의 루틴을 적어도 하나의 루틴 그룹으로 그룹화할 수 있다. 상기한 바와 같이 선행 루틴 ID는 해당 루틴이 실행되기 이전에 먼저 실행되어야만 하는 루틴의 ID에 대한 정보이다. 즉 선행 루틴 ID로 연계된 복수개의 루틴들은 서로 병렬로 동시 수행될 수 없으며, 연속적으로 수행되는 것이 바람직하다. 따라서 초기값 설정부(130)는 선행 루틴 ID로 연계되는 복수개의 루틴들을 루틴 그룹으로 그룹화하고, 동일 루틴 그룹의 복수개의 루틴들이 동일한 태스크에 할당되도록 함으로써, 순차 실행이 보장되도록 할 수 있다. 초기값 설정부(130)는 선행 루틴 ID가 포함되지 않은 루틴에 대해서는 하나의 루틴을 하나의 루틴 그룹으로 그룹화 할 수 있다.
초기값 설정부(130)는 복수개의 루틴 각각이 실행 장치(200)에서 실행되는 시간인 수행시간을 측정할 수 없을 뿐만 아니라 다른 루틴들이 할당되는 태스크에 대한 정보를 획득하지 못한 상태에서 복수개의 루틴을 복수개의 태스크로 할당 설정하고, 루틴이 할당된 복수개의 태스크를 복수의 모의 CPU 코어에 다시 할당 설정한다. 따라서 초기값 설정부(130)는 복수개의 루틴 및 복수개의 태스크를 최적화하여 할당 설정할 수 없다. 이에 초기값 설정부(130)는 미리 설정된 방식에 따라 복수개의 루틴 및 복수개의 태스크를 할당 설정 할 수 있다. 초기값 설정부(130)는 우선 그룹화된 적어도 하나의 루틴 그룹을 각각 서로 다른 태스크에 순차적으로 또는 랜덤하게 할당 설정할 수 있으며, 루틴 그룹이 할당된 복수개의 태스크 각각을 복수개의 모의 CPU 코어에 순차적으로 또는 랜덤하게 할당 설정할 수 있다.
예를 들면, 초기값 설정부(130)는 복수개의 루틴 그룹을 복수개의 태스크에 균등 개수로 순차 할당 설정할 수 있으며, 복수개의 태스크는 복수개의 모의 CPU 코어에 균등 개수로 순차 할당 설정할 수 있다. 그러나 경우에 따라서 초기값 설정부(130)는 루틴 각각에 대한 복잡성(Complexity) 정보를 인가받고, 인가된 복잡성 정보에 기초하여 복수개의 루틴 그룹을 복수개의 태스크에 분할하여 할당 설정 할 수도 있다. 복수개의 루틴 각각에 대한 복잡성 정보는 개발자로부터 사용자 명령으로 인가될 수도 있으나, 복수개의 루틴 각각에 대한 추가 정보로서, 루틴 저장부(120)에 각각의 루틴에 대응하여 미리 저장될 수도 있다.
그리고 초기값 설정부(130)는 태스크와 루틴 사이의 할당 설정을 루틴 할당 설정값으로 저장하고, 모의 CPU 코어와 태스크 사이의 할당 설정을 태스크 할당 설정값으로 저장하여 디스플레이하여 표시한다. 만일 사용자 명령으로 수정 명령이 인가되면, 루틴 할당 설정값 및 태스크 할당 설정값을 수정할 수 있다. 그러나 초기값 설정 명령이 인가되면, 현재 설정된 루틴 할당 설정값 및 태스크 할당 설정값을 포함하는 초기값 설정파일을 생성 및 저장한다.
상기에서는 초기값 설정부(130)가 복수개의 태스크를 모의 CPU 코어에 할당 설정하는 것으로 설명하였다. 그러나 경우에 따라서 초기값 설정부(130)는 모의 CPU 코어 정보를 획득하지 않을 수도 있다. 모의 CPU 코어 정보는 실행 장치(200)에 구비된 CPU의 CPU 코어 정보를 이용하는 경우, 태스크를 모의 CPU 코어에 할당하는 효과가 있다. 그러나 실행 장치(200)에 구비된 CPU의 CPU 코어 정보를 획득하지 못하는 경우도 빈번하게 발생할 뿐만 아니라, 실행 장치(200)의 CPU 코어 정보가 변경되는 경우도 발생할 수 있다. 따라서 초기값 설정부(130)는 복수개의 태스크를 모의 CPU 코어에 할당 설정하는 태스크 할당 설정값을 생성하지 않고, 루틴 할당 설정값만을 초기값 설정파일에 포함하도록 구성될 수 있다.
한편 실행 장치(200)는 설정 저장부(210), 루틴 할당부(220), 태스크 할당부(230), 프로그램 실행부(240) 및 최적화 판별부(250)를 구비한다. 본 발명이 소프트웨어 프로그램을 실제 실행하기 위한 기술이 아니라, 실행 최적화를 위해 제안된 기술이기 때문에, 본 발명에서 실행 장치(200)는 소프트웨어 프로그램의 구동 따른 동작을 수행하지 않고, 소프트웨어 프로그램의 실행만을 수행하여 소프트웨어 프로그램의 동작을 모의하는 최적화 모드로 구동될 수 있다.
설정 저장부(210)는 우선 실행 장치(200)의 하드웨어 구성으로부터 CPU 코어 정보를 획득하고, 개발자 단말(100)로부터 루틴 정보와 태스크 정보 및 초기값 설정파일을 인가받아 저장한다.
또한 설정 저장부(210)는 최적화 판별부(250)로부터 재할당 요청 신호가 수신되면, 초기값 설정파일에 저장된 초기 설정값 또는 이전 설정 내역에 따라 복수개의 루틴이 복수개의 태스크에 할당된 이력 및 복수개의 태스크가 복수개의 CPU 코어에 할당된 이력을 확인하고, 확인된 이력과 상이하게 복수개의 태스크에 할당되는 복수개의 루틴 및 복수개의 CPU 코어에 할당되는 복수개의 태스크에 대한 조합을 변경하여 설정한다. 즉 루틴 할당 설정값 및 태스크 할당 설정값을 수정한다. 그러나 최적화 판별부(250)로부터 최적화 완료 신호가 수신되면, 현재 설정된 루틴 할당 설정값 및 태스크 할당 설정값을 최적화 설정값으로 저장한다.
여기서 설정 저장부(210)는 초기값 설정파일에 태스크 할당 설정값이 포함되어 있지 않으면, 획득된 태스크 정보와 CPU 코어 정보를 이용하여 직접 복수개의 태스크를 복수개의 CPU 코어에 할당 설정함으로써, 태스크 할당 설정값을 생성할 수 있다.
설정 저장부(210)는 설정된 루틴 할당 설정값과 루틴 정보 및 태스크 정보를 루틴 할당부(220)로 전송하고, 태스크 할당 설정값과 태스크 정보 및 CPU 코어 정보를 태스크 할당부(220)로 전송한다.
루틴 할당부(220)는 루틴 할당 설정값에 따라 루틴 정보로부터 확인되는 복수개의 루틴을 태스크 정보에서 확인되는 복수개의 태스크에 할당한다. 그리고 태스크 할당부(230)는 태스크 할당 설정값에 따라 태스크 정보에서 확인되는 복수개의 태스크를 CPU 코어 정보에서 확인되는 복수개의 CPU 코어에 할당한다.
프로그램 실행부(240)는 태스크 할당부(230)에서 각각의 CPU 코어에 할당된 태스크를 실행한다. 이때 프로그램 실행부(240)는 복수개의 CPU 코어에 할당된 복수개의 태스크 각각의 수행 시간과 복수개의 태스크 각각에 할당된 루틴 그룹 및 루틴 그룹을 구성하는 개별 루틴에 대한 수행 시간을 측정하여 최적화 판별부(250)로 전송할 수 있다.
최적화 판별부(250)는 프로그램 실행부(240)로부터 측정된 개별 루틴, 루틴 그룹 및 태스크 각각의 수행 시간을 인가받아, 기설정된 최적화 기준에 만족하는지 여부를 분석함으로써, 최적화가 수행되었는지 여부를 판별한다. 만일 최적화가 수행되지 않은 것으로 판별되면, 최적화 판별부(250)는 설정 저장부(210)로 재할당 요청 신호를 전송하는 반면, 최적화가 수행된 것으로 판별되면, 최적화 완료 신호를 설정 저장부(210)로 전송한다.
즉 최적화 판별부(250)는 설정 저장부(210)에서 현재 설정된 루틴 할당 설정값 및 태스크 할당 설정값에 따라 실행된 프로그램의 수행 시간으로부터 루틴 할당 설정값 및 태스크 할당 설정값의 최적화 여부를 판별하여 설정 저장부(210)로 전송함으로써, 설정 저장부(210)가 현재 설정된 루틴 할당 설정값 및 태스크 할당 설정값을 최적화 설정값으로 유지하거나, 수정하도록 한다.
상기에서는 실행 장치(200)가 개발자 단말(100)과 별도로 실제 소프트웨어 프로그램이 구동되어 동작하는 장치인 것으로 설명하였으나, 경우에 따라 실행 장치(200)는 실행 장치(200)를 모의한 시뮬레이션 프로그램 또는 시뮬레이션 장치로 구현될 수 있다.
도4 는 본 발명의 일실시예에 따른 태스크 분할 할당 방법을 나타낸다.
도1 내지 도3 을 참조하여, 도4 의 태스크 분할 할당 방법을 설명하면, 우선 개발자 단말(100)의 태스크 생성부(110)가 사용자 명령에 응답하여, 복수개의 태스크를 생성한다(S100). 루틴 저장부(120)는 사용자 명령에 응답하여 복수개의 루틴을 인가받거나 생성하여 저장한다(S200)
그리고 초기값 설정부(130)는 태스크 생성부(110)에서 생성된 복수개의 태스크에 대한 태스크 정보와 루틴 저장부(120)에 저장된 복수개의 루틴에 대한 루틴 정보 및 실행 장치(200)의 CPU 개수 및 CPU 각각의 CPU 코어 개수 등에 정보가 포함된 모의 CPU 코어 정보를 인가받고, 순차 할당 또는 임의 할당과 같이 기설정된 할당 방식에 따라 획득된 모의 CPU 코어 정보와 태스크 정보 및 루틴 정보를 이용하여 복수개의 루틴이 복수개의 태스크로 할당되도록 설정하고, 복수개의 태스크가 복수의 모의 CPU 코어에 할당되도록 설정하여, 태스크 정보와 루틴 정보, 루틴 할당 설정값 및 태스크 할당 설정값을 포함하는 초기값 설정파일을 생성 및 저장한다(S300).
도5 는 도4 의 초기값 설정파일 생성 단계를 상세하게 나타낸 도면이다.
도5 를 참조하면, 초기값 설정 단계는 먼저 초기값 설정부(130)가 실행 장치(200)의 CPU 개수 및 CPU 각각의 CPU 코어 개수 등에 모의 CPU 코어 정보를 획득한다(S310). 그리고 태스크 생성부(110)에서 생성된 복수개의 태스크에 대한 태스크 정보를 획득하고(S320), 루틴 저장부(120)에 저장된 복수개의 루틴에 대한 루틴 정보를 획득한다(S330).
도6 은 CPU 코어 정보와 태스크 정보 및 루틴 정보의 일예를 나타낸다.
도6 에 도시된 일예에서 모의 CPU 코어 정보는 실행 장치(200)의 CPU 개수가 2개이며, 2개의 모의 CPU의 모의 CPU 코어 개수가 각각 4개 및 8개임을 나타낸다. 그리고 태스크 정보를 살펴보면, 태스크 ID 1 ~ 5까지 5개의 태스크가 생성되며, 태스크 우선 순위는 태스크 ID 1 ~ 3의 태스크가 0이고 나머지는 1로 설정되었다. 그리고 실행 순서는 순차적으로 0, 1, 2, 0, 1로 설정되었으며 스택의 사이즈는 모두 0 바이트로 설정되었다. 한편 루틴 정보에는 루틴 ID가 1 ~ 10 로 10개의 루틴이 저장되어 있음을 나타내고 있으며, 각각의 루틴에는 함수명 func1 ~ func10까지 10개의 함수가 포함되어 있다. 또한 각각의 루틴들은 EVT_RTN1 ~ EVT_RTN10까지 10개의 이벤트가 설정되어 있다. 10개의 루틴 중 루틴 ID 6과 7의 경우, 실행 시작 시간이 각각 4 및 8로 설정되어 있으며, 루틴 ID 2, 4, 5, 8 및 10의 경우, 선행 루틴 ID가 각각 1, 3, 4, 7 및 9로 설정되어 있다.
초기값 설정부(130)는 도6 과 같이 모의 CPU 코어 정보와 태스크 정보 및 루틴 정보가 획득되면, 우선 루틴 정보에 포함된 루틴 각각의 선행 루틴 ID를 분석하여, 선행 루틴 ID로 연계되는 복수개의 루틴들을 루틴 그룹으로 그룹화한다(S340).
도7 은 도6 의 루틴 정보에 따른 루틴 그룹 설정의 일예를 나타내고, 도8 은 CPU 코어 정보와 태스크 정보 및 루틴 그룹 정보를 시각적으로 나타낸 도면이다.
도6 에서 도시된 일예에서 10개의 루틴 중 루틴 ID 2, 4, 5, 8 및 10의 경우, 선행 루틴 ID가 각각 1, 3, 4, 7 및 9로 설정되어 있다. 이에 초기값 설정부(130)는 도7 에 도시된 바와 같이, 선행 루틴 ID로 1이 설정된 루틴 ID 2 를 루틴 ID 1과 함께 제1 루틴 그룹으로 설정하고, 유사하게 루틴 ID 7과 8을 제4 루틴 그룹으로 설정하며, 루틴 ID 9와 10을 제5 루틴 그룹으로 설정하였다. 그리고 각각 선행 루틴 ID로 3 및 4가 설정된 루틴 ID 4 및 5 를 루틴 ID 3과 함께 제2 루틴 그룹으로 설정하였다. 다만 루틴 ID 6 의 경우, 선행 루틴 ID가 설정되어 있지 않을 뿐만 아니라, 다른 루틴으로부터 선행 루틴 ID로 설정되지도 않았으므로, 루틴 ID 6의 루틴이 단독으로 제3 루틴 그룹으로 설정되었다.
복수개의 루틴들을 루틴 그룹으로 그룹화되면, 초기값 설정부(130)는 복수개의 루틴 그룹을 복수개의 태스크에 할당 설정하여, 루틴 할당 설정값으로 저장한다(S350). 그리고 복수개의 루틴 그룹이 할당 설정된 복수개의 태스크를 복수개의 CPU 코어에 할당 설정하여, 태스크 할당 설정값을 저장한다(S360).
이때 초기값 설정부(130)는 복수개의 루틴 그룹을 순차적으로 복수개의 태스크에 할당 설정 할 수 있다. 예를 들어 도7 에 도시된 5개의 루틴 그룹을 각각 5개의 태스크에 분할하여 순차적으로 또는 랜덤하게 임의로 할당 설정할 수 있다. 그리고 초기값 설정부(130)는 5개의 태스크를 10개의 CPU 코어 중 5개의 CPU 코어를 순차적으로 또는 랜덤하게 임의로 할당 설정할 수 있다. 다만, 복수개의 태스크를 복수개의 모의 CPU 코어에 순차적으로 할당 설정하는 경우, 복수개의 모의 CPU 중 특정 CPU의 모의 CPU 코어에만 태스크가 집중되어 할당 설정될 수 있다. 이에 복수개의 태스크를 복수개의 모의 CPU 코어에 할당 설정하는 경우, 순차 설정보다는 랜덤 설정이 바람직하다. 이때 초기값 설정부(100)는 태스크 정보에 포함된 우선 순위와 실행 순서에 기초하여, 복수개의 태스크를 복수개의 모의 CPU 코어에 할당 설정할 수 있다.
도8 에 도시된 바와 같이, 초기값 설정부(130)는 우선 순위가 0인 3개의 태스크와 우선 순위가 1 인 2개의 태스크를 구분하고, 우선 순위가 0인 3개의 태스크를 우선 실행 순서에 따라 모의 CPU 코어에 할당 설정하고 이후 우선 순위가 1인 2개의 태스크를 모의 CPU 코어에 다시 실행 순서에 따라 할당 설정한다. 도8 에서는 모의 CPU 코어의 개수가 10개로 태스크의 개수인 5개보다 많으므로, 우선 순위 및 실행 순서로 인한 할당 설정되는 태스크별 실행 순위에 차이가 발생하지 않으나, 모의 CPU 코어의 개수가 태스크의 개수보다 적은 경우, 우선 순위 및 실행 순서가 우선인 태스크가 먼저 실행되도록 할당 설정될 수 있다.
또한 초기값 설정부(130)는 루틴 각각에 대한 복잡성 정보가 인가된 경우, 복잡성 정보에 따라 복수개의 루틴 그룹을 태스크에 분할 할당 할 수 있다. 비록 도6 에서는 5개의 루틴 그룹이 5개의 태스크에 할당되므로, 루틴 복잡성 정보에 의한 차이가 발생하지 않지만, 태스크의 개수가 루틴 그룹의 개수보다 적은 경우에 루틴 그룹의 할당 설정에 영향을 미칠 수 있다. 예를 들어, 태스크의 개수가 3개인 경우를 가정하고 루틴 ID 6의 루틴 복잡성이 제4 루틴 그룹의 루틴 ID 7 및 8의 복잡성 합보다 크다면, 초기값 설정부(130)는 루틴 ID 6만으로 구성된 제3 루틴 그룹을 다른 루틴 그룹과 동일한 태스크에 할당 설정하지 않을 수 있다. 즉 제1 루틴 그룹과 제4 루틴 그룹을 동일한 태스크에 할당 설정할 수도 있다.
초기값 설정부(130)는 복수개의 태스크가 복수개의 모의 CPU 코어에 할당 설정되면, 루틴 할당 설정값과 태스크 할당 설정값에 따른 루틴, 태스크 및 모의 CPU 코어 사이의 할당 설정을 사용자인 개발자에게 표시하고, 초기값 설정 명령이 인가되는지 판별한다(S370). 초기값 설정부(130)는 초기값 설정 명령이 인가되면, 현재 저장된 루틴 할당 설정값과 태스크 할당 설정값과 루틴 정보 및 태스크 정보를 포함하는 초기값 설정 파일을 생성하여 저장한다(S380).
그러나 초기값 설정 명령이 인가되지 않고, 수정 명령이 인가되면, 사용자 명령에 응답하여, 루틴 할당 설정값과 태스크 할당 설정값 중 적어도 하나를 수정한다(S390).
초기값 설정부(130)는 상기한 바와 같이 모의 CPU 코어 정보를 획득하지 않을 수 있으며, 이 경우 초기값 설정파일에 태스크 할당 설정값을 포함하지 않는다.
다시 도4 를 참조하면, 실행 장치(200)의 설정 저장부(210)는 실행 장치(200)의 하드웨어 구성으로부터 CPU 코어 정보를 획득하고, 초기값 설정부(130)로부터 루틴 할당 설정값과 태스크 할당 설정값과 루틴 정보 및 태스크 정보를 포함하는 초기값 설정 파일을 인가받고, 획득된 CPU 코어 정보와 루틴 정보, 태스크 정보, 루틴 할당 설정값 및 태스크 할당 설정값을 시스템 설정값으로 설정한다(S400). 여기서 실행 장치(200)의 CPU 코어 정보는 초기값 설정부(130)에서 설정된 CPU 코어 개수인 10개와 다르개 4개 인 것으로 가정한다. 이는 실행 장치(200)가 도8 에 도시된 2개의 CPU 중 제1 CPU(CPU #1) 만을 구비하거나, 2개의 CPU(CPU #1, #2)를 구비하더라도 하나의 CPU에서 소프트웨어 프로그램을 실행하도록 구동된 경우일 수 있다.
상기한 바와 같이, 설정 저장부(210)는 초기값 설정파일에 태스크 할당 설정값이 포함되어 있지 않으면, 획득된 태스크 정보와 CPU 코어 정보를 이용하여 직접 복수개의 태스크를 복수개의 CPU 코어에 할당 설정함으로써, 태스크 할당 설정값을 생성할 수 있으며, 이때, 도8 에 도시된 바와 같이, 태스크 정보에 포함된 우선 순위와 실행 순서에 기초하여, 복수개의 태스크를 복수개의 모의 CPU 코어에 할당 설정할 수 있다.
그리고 설정 저장부(210)는 설정된 루틴 할당 설정값과 루틴 정보 및 태스크 정보를 루틴 할당부(220)로 전송하고, 루틴 할당부(220)는 루틴 할당 설정값에 따라 루틴 정보로부터 확인되는 복수개의 루틴을 태스크 정보에서 확인되는 복수개의 태스크에 할당한다(S500). 한편, 설정 저장부(210)는 설정된 태스크 할당 설정값과 태스크 정보 및 CPU 코어 정보를 태스크 할당부(220)로 전송하고, 태스크 할당부(230)는 태스크 할당 설정값에 따라 태스크 정보에서 확인되는 복수개의 태스크를 CPU 코어 정보에서 확인되는 복수개의 CPU 코어에 할당한다(S600).
프로그램 실행부(240)는 태스크 할당부(230)에서 각각의 CPU 코어에 할당된 태스크를 실행하고, 복수개의 CPU 코어에 할당된 복수개의 태스크 각각에 할당된 루틴 그룹에 포함된 개별 루틴 각각 대한 수행 시간을 측정한다(S700).
도10 은 루틴 수행 시간에 따라 계산되는 태스크가 할당된 복수개의 CPU 코어에서 태스크의 수행 완료 시간을 나타낸다.
도9 에 도시된 바와 같이, 복수개의 루틴 그룹과 루틴 그룹 내의 루틴 각각은 서로 다른 수행 시간을 가질 수 있다. 또한 루틴 그룹 실행 시간에는 실제 루틴 각각의 수행 시간 이외에 루틴 실행 시작 시간이 함께 반영된다.
프로그램 실행부(240)는 루틴 각각의 수행 시간(PTi, i는 루틴 ID(i = 0 ~ N-1, N은 루틴 개수))을 측정하고, 측정된 루틴 수행 시간(PTi)를 기반으로 루틴 그룹 각각의 수행 시간(GPTj, j는 루틴 그룹 ID(j = 0 ~ M-1, M은 루틴 그룹 개수))를 수학식 1에 따라 계산한다.
Figure 112017003437335-pat00001
여기서 DTi는 루틴 각각에 설정된 실행 시작 시간을 나타내고, RGj는 루틴 그룹에 속한 루틴의 순서 집합을 나타낸다.
그리고 개별 루틴의 수행 시간(PTi)에 따라 각 루틴의 완료 시간(FTi)이 계산되면, 개별 코어에서 각 루틴 그룹의 수행 완료 시간(GFTj)이 계산될 수 있다.
도10 에서는 상기한 바와 같이, 실행 장치(200)에서 4개의 CPU 코어가 소프트웨어 프로그램을 실행하는 것으로 가정하여 4개의 CPU 코어에서 5개의 루틴 그룹이 각각 할당된 5개의 태스크가 실행되는 경우로 제1 CPU 코어에 제1 및 제5 태스크가 할당된 경우의 수행 완료 시간을 도시하였다.
Figure 112017003437335-pat00002
여기서 CSTkl은 콘텍스트 스위칭 시간으로, 동일한 CPU 코어에서 다른 루틴 그룹이 실행되기 위한 전환 시간을 나타내고, k는 이전 루틴 그룹 ID(k = 0 ~ M-1)를 나타내고, l은 이후 루틴 그룹 ID(l = 0 ~ M-1)를 나타낸다. 그리고 Sco는 CPU 코어에 할당되는 루틴 그룹의 시간 순서 집합을 나타낸다. c(c = 0 ~ C-1, C는 CPU 개수)는 CPU ID를 나타내고, o(o = 0 ~ O-1, O는 CPU 코어 개수)는 CPU 코어 ID를 나타낸다.
복수개의 CPU 코어에 할당된 복수개의 태스크 각각의 수행 시간과 복수개의 태스크 각각에 할당된 루틴 그룹 및 루틴 그룹을 구성하는 개별 루틴에 대한 수행 시간이 획득되면, 최적화 판별부(250)가 최적화 여부를 판별한다(S800).
도11 은 도4 의 최적화 판별 단계를 상세하게 나타낸 도면이다.
최적화 판별부(250)는 수학식 3 에 따라 현재 루틴-태스크 할당 조합에서 모든 루틴의 수행 완료 시간(AFTp)를 우선 계산한다(S810).
Figure 112017003437335-pat00003
수학식 3에 나타난 바와 같이, 모든 루틴의 수행 완료 시간(AFTp)은 각 루틴 그룹의 수행 완료 시간(GFTj)의 최대값으로 설정된다.
그리고 최적화 판별부(250)는 획득된 모든 루틴의 수행 완료 시간(AFTp)이 이전 획득된 모든 루틴의 수행 완료 시간(AFTp-1)보다 작은지 판별한다(S820).
만일 모든 루틴의 수행 완료 시간(AFTp)이 이전 획득된 모든 루틴의 수행 완료 시간(AFTp-1)보다 작으면, 현재 설정 저장부(210)에서 설정된 루틴 할당 설정값 및 태스크 할당 설정값을 최적화 설정값으로 저장한다(S830).
즉 현재 설정에 따라 CPU 코어 각각에 할당되는 루틴 그룹의 순서 집합(Sco)를 최적화 루틴 그룹의 시간 순서 집합(OSco)로 설정(OSco = Sco)한다.
이후 최적화 판별부(250)는 할당 시도 횟수(p)가 조합 가능한 모든 할당 설정에 대응하는 횟수(P)인지 판별한다(S840). 할당 시도 횟수(p)가 조합 가능한 모든 할당 설정에 대응하는 횟수(P) 미만이면, 최적화 판별부(250)는 설정 저장부(210)로 재할당 요청 신호를 전송하여, 설정 저장부(210)가 이전과 다른 조합으로 루틴 할당 설정값 및 태스크 할당 설정값을 설정하도록 한다(S400).
그러나 할당 시도 횟수(p)가 조합 가능한 모든 할당 설정에 대응하는 횟수(P)에 도달하였으면, 현재 최적화 설정값이 유지되도록 최적화 완료 신호를 설정 저장부(210)로 전송한다.
즉 최적화 판별부(250)는 수학식 4와 같이 계산된 모든 루틴의 수행 완료 시간(AFTp) 중 최소값을 획득함으로써, 최적화 여부를 판별하고, 최적화 설정값을 획득한다.
Figure 112017003437335-pat00004
도12 는 초기값 설정파일과 최적화 설정값에 따른 수행 시간 측정 결과를 나타낸다.
도12 에서 (a)는 초기값 설정파일에 따른 수행 시간 측정 결과이고, (b)는 최적화 설정값에 따른 수행 시간 측정 결과이다. (a)와 (b)를 비교하면, 본 발명의 태스크 분할 할당 시스템이 루틴 및 태스크의 할당 조합을 변경하여 더 짧은 시간에 모든 태스크가 수행 완료됨을 확인 할 수 있다.
본 발명에 따른 방법은 컴퓨터에서 실행 시키기 위한 매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다. 여기서 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스 될 수 있는 임의의 가용 매체일 수 있고, 또한 컴퓨터 저장 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함하며, ROM(판독 전용 메모리), RAM(랜덤 액세스 메모리), CD(컴팩트 디스크)-ROM, DVD(디지털 비디오 디스크)-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등을 포함할 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다.
따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (9)

  1. 사용자 명령에 응답하여, 복수개의 태스크와 소프트웨어 프로그램을 구성하는 복수개의 루틴을 생성하고, 생성된 상기 복수개의 태스크로부터 태스크 정보를 획득하며, 생성된 상기 복수개의 루틴으로부터 루틴 정보를 획득하고, 획득된 상기 루틴 정보에 따라 상기 복수개의 루틴을 복수개의 루틴 그룹으로 그룹화하고, 상기 복수개의 루틴 그룹을 상기 복수개의 태스크에 할당 설정하여 루틴 할당 설정값을 생성하고, 상기 루틴 정보와 상기 태스크 정보 및 루틴 할당 설정값을 포함하는 초기값 설정파일을 생성하는 개발자 단말; 및
    상기 소프트웨어 프로그램을 실행하기 위한 복수개의 CPU 코어가 구현된 적어도 하나의 CPU를 구비하고, 상기 루틴 할당 설정값에 따라 상기 복수개의 루틴 그룹을 상기 복수개의 태스크에 할당하고, 상기 복수개의 태스크를 상기 복수개의 CPU 코어에 할당 설정하는 태스크 할당 설정값을 생성하며, 상기 복수개의 태스크를 상기 복수개의 CPU 코어에 할당하고 상기 소프트웨어 프로그램을 실행함으로써, 상기 복수개의 그룹 각각의 수행 시간을 측정하고, 측정된 상기 복수개의 루틴 각각의 수행 시간으로부터 상기 복수개의 태스크에 할당된 상기 복수개의 루틴 그룹이 모두 수행 완료되는 시간이 최소값으로 계산되는 할당 조합을 갖도록 상기 루틴 할당 설정값 및 상기 태스크 할당 설정값을 수정하여 최적화 설정값으로 획득하는 실행 장치; 를 포함하는 태스크 분할 할당 시스템.
  2. 제1 항에 있어서, 상기 개발자 단말은
    상기 사용자 명령에 응답하여, 상기 복수개의 태스크를 생성하는 태스크 생성부;
    상기 복수개의 루틴을 획득하여 저장하는 루틴 저장부; 및
    상기 태스크 생성부로부터 상기 복수개의 태스크에 대한 태스크 ID와 우선순위, 실행 순서가 포함된 상기 태스크 정보를 인가받고, 상기 루틴 저장부로부터 상기 복수개의 루틴에 대한 루틴 ID와 함수명, 실행 시작 시간 및 선행 루틴 ID가 포함된 상기 루틴 정보를 인가받아, 상기 복수개의 루틴을 상기 복수개의 루틴 그룹으로 그룹화하고, 상기 복수개의 루틴 그룹을 기설정된 방식으로 상기 복수개의 태스크에 할당 설정하여 상기 초기값 설정 파일을 생성하는 초기값 설정부; 를 포함하는 것을 특징으로 하는 태스크 분할 할당 시스템.
  3. 제2 항에 있어서, 상기 초기값 설정부는
    사용자 명령으로 상기 복수개의 루틴 각각에 대한 복잡성 정보가 인가되면, 상기 복잡성 정보에 따라 상기 복수개의 루틴 그룹을 상기 복수개의 태스크에 할당 설정하고, 상기 복잡성 정보가 인가되지 않으면, 상기 복수개의 루틴 그룹을 상기 복수개의 태스크에 순차적으로 또는 임의 할당하는 것을 특징으로 하는 태스크 분할 할당 시스템.
  4. 제2 항에 있어서, 상기 초기값 설정부는
    상기 실행 장치의 상기 복수개의 CPU 코어에 대한 모의 CPU 코어 정보가 획득되면, 상기 복수개의 태스크를 상기 모의 CPU 코어 정보에 따른 상기 복수개의 CPU 코어에 기설정된 방식으로 할당 설정하는 것을 특징으로 하는 태스크 분할 할당 시스템.
  5. 제2 항에 있어서, 상기 초기값 설정부는
    상기 복수개의 루틴 중 상기 루틴 정보에 상기 선행 루틴 ID로 설정된 루틴들을 상기 루틴 그룹으로 그룹화하는 것을 특징으로 하는 태스크 분할 할당 시스템.
  6. 제2 항에 있어서, 상기 실행 장치는
    상기 초기값 설정파일을 인가받아 상기 루틴 정보와 상기 태스크 정보 및 상기 루틴 할당 설정값을 획득하고, 상기 복수개의 CPU 코어에 대한 CPU 코어 정보를 획득하며, 상기 태스크 정보와 상기 CPU 코어 정보에 따라 상기 복수개의 태스크를 상기 복수개의 CPU 코어에 할당 설정하는 상기 태스크 할당 설정값을 생성하고, 상기 복수개의 루틴과 상기 복수개의 태스크 및 상기 복수개의 CPU 코어의 할당 조합을 가변하여 상기 루틴 할당 설정값과 상기 태스크 할당 설정값을 수정하여 저장하는 설정 저장부;
    상기 루틴 할당 설정값에 따라 상기 복수개의 루틴을 상기 복수개의 태스크에 할당하는 루틴 할당부;
    상기 태스크 할당 설정값에 따라 상기 복수개의 태스크를 상기 복수개의 CPU 코어에 할당하는 태스크 할당부;
    상기 복수개의 CPU 코어에 할당된 상기 복수개의 태스크를 실행하여, 상기 복수개의 태스크에 할당된 상기 복수개의 루틴 그룹의 상기 복수개의 루틴 각각의 수행 시간인 루틴 수행 시간을 측정하고, 측정된 상기 루틴 수행 시간을 이용하여 상기 복수개의 루틴 그룹 각각에 대한 루틴 그룹 수행 시간과 루틴 그룹 수행 완료 시간을 계산하는 프로그램 실행부; 및
    상기 복수개의 루틴 그룹 각각에 대해 계산된 상기 루틴 그룹 수행 완료 시간 중 최대값을 상기 복수개의 루틴 그룹이 모두 수행 완료되는 시간인 모든 루틴 그룹 수행 완료 시간으로 획득하고, 상기 복수개의 루틴과 상기 복수개의 태스크 및 상기 복수개의 CPU 코어의 모든 할당 조합에 대해 획득된 상기 모든 루틴 그룹 수행 완료 시간 중 최소값으로 계산되는 할당 조합에 따른 상기 루틴 할당 설정값 및 상기 태스크 할당 설정값을 상기 최적화 설정값으로 설정하는 최적화 판별부; 를 포함하는 것을 특징으로 하는 태스크 분할 할당 시스템.
  7. 제6 항에 있어서, 상기 설정 저장부는
    상기 태스크 정보에 포함된 상기 복수개의 태스크 각각의 우선순위, 실행 순서에 따라 상기 복수개의 태스크를 상기 복수개의 CPU 코어에 할당 설정하는 것을 특징으로 하는 태스크 분할 할당 시스템.
  8. 제6 항에 있어서, 상기 프로그램 실행부는
    상기 복수개의 루틴 각각에 대한 상기 루틴 수행 시간과 상기 루틴 정보에서 획득되는 상기 실행 시작 시간의 합으로 상기 복수개의 루틴 그룹 각각에 대한 루틴 그룹 수행 시간을 계산하고, 상기 복수개의 CPU 코어 중 동일 CPU 코어에 서로 다른 루틴 그룹이 연속하여 실행되는 경우, 동일 CPU 코어에서 실행되는 복수개의 상기 루틴 그룹의 각각의 상기 루틴 그룹 수행 시간과 그룹 전환을 위한 콘텍스트 스위칭 시간 및 상기 실행 시작 시간으로부터 상기 루틴 그룹 수행 완료 시간을 계산하는 것을 특징으로 하는 태스크 분할 할당 시스템.
  9. 제8 항에 있어서, 상기 최적화 판별부는
    현재 설정된 할당 조합에 따라 획득된 상기 모든 루틴 그룹 수행 완료 시간을 이전 획득된 이전 모든 루틴 그룹 수행 완료 시간과 비교하여 상기 모든 루틴 그룹 수행 완료 시간이 이전 모든 루틴 그룹 수행 완료 시간보다 작으면, 현재 설정된 할당 조합에 따른 상기 루틴 할당 설정값 및 상기 태스크 할당 설정값을 상기 최적화 설정값으로 설정하고, 가능한 모든 할당 조합에 대해 상기 모든 루틴 그룹 수행 완료 시간이 획득되었는지 판별하여, 가능한 모든 할당 조합에 대해 상기 모든 루틴 그룹 수행 완료 시간이 획득된 것으로 판별되면, 상기 설정 저장부로 최적화 완료 신호를 전송하고, 가능한 모든 할당 조합에 대해 상기 모든 루틴 그룹 수행 완료 시간이 획득되지 않은 것으로 판별되면, 상기 설정 저장부가 루틴 할당 설정값 및 태스크 할당 설정값을 이전과 다른 할당 조합으로 수정하도록 상기 설정 저장부로 재할당 요청 신호를 전송하는 것을 특징으로 하는 태스크 분할 할당 시스템.
KR1020170004203A 2017-01-11 2017-01-11 태스크 분할 할당 시스템 KR101757886B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170004203A KR101757886B1 (ko) 2017-01-11 2017-01-11 태스크 분할 할당 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170004203A KR101757886B1 (ko) 2017-01-11 2017-01-11 태스크 분할 할당 시스템

Publications (1)

Publication Number Publication Date
KR101757886B1 true KR101757886B1 (ko) 2017-07-13

Family

ID=59352419

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170004203A KR101757886B1 (ko) 2017-01-11 2017-01-11 태스크 분할 할당 시스템

Country Status (1)

Country Link
KR (1) KR101757886B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110458407A (zh) * 2019-07-12 2019-11-15 平安普惠企业管理有限公司 一种任务分配方法、装置及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012511204A (ja) 2008-12-08 2012-05-17 ケーピーアイティ クミンズ インフォシステムズ リミテッド リソースを最適化するためのタスク再編成方法
JP5786863B2 (ja) 2010-10-28 2015-09-30 日本電気株式会社 タスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラム
KR101674324B1 (ko) 2015-11-30 2016-11-22 숭실대학교산학협력단 실시간 제어 응용에 적용되는 태스크 스케쥴링 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012511204A (ja) 2008-12-08 2012-05-17 ケーピーアイティ クミンズ インフォシステムズ リミテッド リソースを最適化するためのタスク再編成方法
JP5786863B2 (ja) 2010-10-28 2015-09-30 日本電気株式会社 タスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラム
KR101674324B1 (ko) 2015-11-30 2016-11-22 숭실대학교산학협력단 실시간 제어 응용에 적용되는 태스크 스케쥴링 장치 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110458407A (zh) * 2019-07-12 2019-11-15 平安普惠企业管理有限公司 一种任务分配方法、装置及计算机可读存储介质

Similar Documents

Publication Publication Date Title
KR101572879B1 (ko) 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
CN104123184B (zh) 一种用于为构建过程中的任务分配资源的方法和系统
CN105912399B (zh) 一种任务处理方法、装置及系统
US9910711B1 (en) Method and computing device for managing size of thread pool dynamically
US10467722B2 (en) Combined rendering and computing resource allocation management system
KR20200091789A (ko) Gpu 연산의 동시 실행을 위한 플랫폼
CN105074651A (zh) 共享资源争用
KR101757886B1 (ko) 태스크 분할 할당 시스템
CN113010286A (zh) 并行任务调度方法、装置、计算机设备和存储介质
US20040093477A1 (en) Scalable parallel processing on shared memory computers
KR101757882B1 (ko) 태스크 분할 할당 방법
JP6877649B2 (ja) 数値制御装置
CN111966597B (zh) 测试数据生成方法及装置
CN113268331A (zh) 机器人调用方法、机器人调用装置、管理系统和存储介质
EP2503463A1 (en) Parallel computer system, control device and controlling method
JP6156379B2 (ja) スケジューリング装置、及び、スケジューリング方法
KR20160139082A (ko) 역경매 방식 자원할당 장치를 포함하는 하이브리드 클라우드 서버 및 그 자원 할당 방법 및 시스템
CN110609744A (zh) 处理计算任务的方法、设备和计算机程序产品
US20140047454A1 (en) Load balancing in an sap system
JP7328126B2 (ja) 生産シミュレーション装置及び生産シミュレーション方法
JP2008250838A (ja) ソフトウェア生成装置、方法、およびプログラム
CN112631743B (zh) 任务调度方法、装置及存储介质
EP3147786A1 (en) Allocating resources for a number of applications
US10475151B2 (en) Graphics engine resource management and allocation system
KR101470695B1 (ko) 그리드 컴퓨팅 스케쥴링을 위한 생물지리학적 최적화 방법 및 시스템

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant