KR102182295B1 - 하드웨어 기반 태스크 스케쥴링 장치 및 방법 - Google Patents

하드웨어 기반 태스크 스케쥴링 장치 및 방법 Download PDF

Info

Publication number
KR102182295B1
KR102182295B1 KR1020140047693A KR20140047693A KR102182295B1 KR 102182295 B1 KR102182295 B1 KR 102182295B1 KR 1020140047693 A KR1020140047693 A KR 1020140047693A KR 20140047693 A KR20140047693 A KR 20140047693A KR 102182295 B1 KR102182295 B1 KR 102182295B1
Authority
KR
South Korea
Prior art keywords
task
group
information
tasks
cpu
Prior art date
Application number
KR1020140047693A
Other languages
English (en)
Other versions
KR20150121600A (ko
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 KR1020140047693A priority Critical patent/KR102182295B1/ko
Priority to US14/692,354 priority patent/US9880875B2/en
Publication of KR20150121600A publication Critical patent/KR20150121600A/ko
Application granted granted Critical
Publication of KR102182295B1 publication Critical patent/KR102182295B1/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/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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler internals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02BCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
    • Y02B70/00Technologies for an efficient end-user side electric power management and consumption
    • Y02B70/10Technologies improving the efficiency by using switched-mode power supplies [SMPS], i.e. efficient power electronics conversion e.g. power factor correction or reduction of losses in power supplies or efficient standby modes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 일 실시 예에 따르면, 하드웨어 기반 스케쥴러(scheduler) 가속기의 태스크(task) 스케쥴링(scheduling) 방법에 있어서, 시스템의 태스크에 기반하여 태스크 관련 정보를 관리하는 단계, CPU로부터 수신하는 요청에 기반하여 상기 태스크 관련 정보를 업데이트 하는 단계, 상기 업데이트 된 태스크 관련 정보에 기반하여 현재 실행 중인 태스크 다음으로 각 CPU에서 수행될 태스크 후보를 선택하는 단계 및 상기 태스크 후보 선택 결과를 각 CPU에 제공하는 단계를 포함하는 것을 특징으로 하는 방법 및 이를 이용하는 장치를 제공할 수 있다.

Description

하드웨어 기반 태스크 스케쥴링 장치 및 방법{Apparatus for scheduling task based on hardware and method thereof}
본 발명은 전자 장치에서 태스크를 스케쥴링(scheduling)하는 장치 및 태스크를 스케쥴링하는 방법에 대한 것이다. 본 발명은 하드웨어 기반 태스크 스케쥴링 장치 및 방법에 관한 것이다.
최근 기술의 발달로 각종 전자 장치들은 다양한 기능을 포함하고 있다. 일 예로 이동 단말의 경우 음성 통화나 메시지 송수신과 같은 일반적인 통신 기능 외에도 TV(Television) 시청 기능(예컨대, DMB(Digital Multimedia Broadcasting)나 DVB(Digital Video Broadcasting)와 같은 이동 방송), 음악재생기능(예컨대, MP3(MPEG Audio Layer-3)), 사진촬영 기능, 인터넷 접속 기능, 사전 검색 기능 등 각종 멀티미디어 기능들이 부가되고 있다. 이에 따라 각종 멀티미디어 기능들을 실행하기 위한 태스크 할당 요청이 늘어나고 있으나, 태스크를 효과적으로 관리하지 못할 경우 태스크를 할당하지 못해 실행하고자 하는 프로그램을 실행할 수 없는 문제가 발생할 수 있다. 따라서 효율적으로 태스크를 관리하기 위한 방법이 요구되고 있다.
본 발명이 이루고자 하는 기술적 과제는 개선된 태스크 스케쥴링 방법 및 장치를 제공하는 것이다. 본 발명의 실시 예에 따르면 하드웨어에 기반한 새로운 태스크 스케쥴링 장치 및 방법을 제공할 수 있다. 또한, 본 발명의 실시 예에 따르면 하드웨어에 기반한 스케쥴링 장치 및 방법에 이용되는 태스크(task) 관리 방법 및 장치를 제공할 수 있다.
본 발명의 일 실시 예에 따르면, 하드웨어 기반 스케쥴러(scheduler) 가속기의 태스크(task) 스케쥴링(scheduling) 방법에 있어서, 시스템의 태스크에 기반하여 태스크 관련 정보를 관리하는 단계, CPU로부터 수신하는 요청에 기반하여 상기 태스크 관련 정보를 업데이트 하는 단계, 상기 업데이트 된 태스크 관련 정보에 기반하여 현재 실행 중인 태스크 다음으로 각 CPU에서 수행될 태스크 후보를 선택하는 단계 및 상기 태스크 후보 선택 결과를 각 CPU에 제공하는 단계를 포함하는 것을 특징으로 하는 방법을 제공할 수 있다.
또한 본 발명의 일 실시 예에 따르면, 태스크(task) 스케쥴링(scheduling) 하드웨어 기반 스케쥴러(scheduler) 가속기의 장치에 있어서, 적어도 하나의 CPU와 연동할 수 있는 인터페이스 모듈 및 시스템의 태스크에 기반하여 태스크 관련 정보를 관리하고, CPU로부터 수신하는 요청에 기반하여 상기 태스크 관련 정보를 업데이트 하며, 상기 업데이트 된 태스크 관련 정보에 기반하여 현재 실행 중인 태스크 다음으로 각 CPU에서 수행될 태스크 후보를 선택하고, 상기 태스크 후보 선택 결과를 각 CPU에 제공하도록 제어하는 태스크 관리 모듈을 포함하는 것을 특징으로 하는 장치를 제공할 수 있다.
본 발명의 실시 예에 따르면 전자 장치에서 효율적으로 태스크를 스케쥴링하는 방법 및 장치를 제공할 수 있다.
또한, 본 발명의 실시 예에 따르면 하드웨어에 기반한 스케쥴링 장치 및 방법을 이용하여 전체 태스크(task)들에 대한 스케쥴링 공정성을 높일 수 있다. 또한, 하드웨어 기반 스케쥴링 장치에서 스케쥴링을 수행하고 운영체제는 스케쥴링 결과를 이용하기 때문에 스케쥴링 시간을 단축 시킬 수 있다. 또한, 글로벌 스케쥴링을 하기 때문에 각 CPU 별로 밸런스를 맞추기 위한 동작이 없으며, 이를 통해 효율을 높일 수 있다.
또한, 상기와 같은 전반적인 성능 향상 및 전력 감소 효과를 가져올 수 있다.
도 1은 본 발명의 일 실시 예에 따른 하드웨어 기반 스케쥴러 가속기를 설명하는 도면이다.
도 2는 본 발명의 일 실시 예에 따른 태스크/그룹 풀 모듈을 설명하는 도면이다.
도 3은 본 발명의 일 실시 예에서 태스크와 그룹의 관계를 설명하는 도면이다.
도 4는 본 발명의 일 실시 예에 따른 태스크/그룹 풀 모듈에서 관리하는 태스크 정보에 대하여 설명하는 도면이다.
도 5는 본 발명의 일 실시 예에 따른 그룹 정보(group info)를 설명하는 도면이다.
도 6는 본 발명의 일 실시 예에 따른 CPU 상태 모듈을 설명하는 도면이다.
도 7은 본 발명의 일 실시 예에 따른 스케쥴링 방법을 설명하는 도면이다.
도 8은 본 발명의 일 실시 예에 따른 태스크 생성 동작을 설명하는 도면이다.
도 9는 본 발명의 일 실시 예에 따른 태스크 인큐(enqueue) 동작을 설명하는 도면이다.
도 10은 본 발명의 일 실시 예에 따른 태스크 후보 선택 동작을 설명하는 도면이다.
도 11은 본 발명의 일 실시 예에 따른 실행을 위한 태스크를 선택하는 동작을 설명하는 도면이다.
도 12는 본 발명의 일 실시 예에 따른 태스크와 CPU의 관련성(affinity)이 있는 경우 동작을 설명하는 도면이다.
이하, 첨부된 도면들을 참조하여 다양한 실시 예들을 상세히 설명한다. 이때, 첨부된 도면들에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다. 하기의 설명에서는 본 발명의 다양한 실시 예들에 따른 동작을 이해하는데 필요한 부분만이 설명되며, 그 이외 부분의 설명은 본 발명의 요지를 흩트리지 않도록 생략될 것이라는 것을 유의하여야 한다.
본 발명은 운영체제에서 수행되던 태스크 스케쥴링(task scheduling)을 하드웨어 기반 스케쥴링 장치 및 방법을 이용하여 가속시키는 방법 및 장치에 관한 것이다. 멀티 코어(multi-core) 환경에서는 CPU 별로 스케쥴링을 수행하고, 또한 각 CPU 간 부하(load)를 맞추기 위해 로드 밸런싱을 수행한다. 본 발명의 실시 예에서는 이러한 동작을 하드웨어에서 수행함으로써 시스템 전력 사용량의 최소화 및 성능향상을 가져올 수 있다. 하드웨어 기반 가속기에서는 시스템에서 생성된 태스크의 정보 중 스케쥴링을 위해 필요한 정보를 이용하여 다음에 수행[된] 태스크를 결정하고, 그 결과를 운영체제에 알려줄 수 있다. 이와 같은 방법으로 스케쥴링을 가속화 할 수 있다.
하드웨어에 기반한 스케쥴링 기법을 설명하기에 앞서, 운영체제에 기반한 스케쥴링 기법에 대하여 설명한다. 멀티 코어(multi-core) 환경의 운영체제(operating system)에서 수행되는 스케쥴링(scheduling) 기법은 두 가지로 구성된다. 각각 CPU 별로 할당된 태스크(task)들의 수행 시간을 기준으로 타임 쉐어링(time sharing)을 하여 다음 수행될 태스크가 결정된다. 즉, 태스크가 CPU에 할당되면 해당 CPU에 할당된 태스크들의 우선순위에 의해 수행 시간을 할당 받을 수 있도록 태스크들의 수행 순서가 결정된다. 또한 CPU 별로 할당된 태스크의 수가 불균형 할 경우에 이를 전체 시스템에 균등하게 분산 시키기 위해 로드 밸런싱 기법이 사용된다.
멀티 코어(Multi-core) 시스템에서 기존 운영 체제는 각각의 코어 별로 실행 되어야 할 태스크들을 각 CPU 별 실행 큐(per cpu run queue)로 관리하고, 실행 큐(run queue)에 있는 태스크들 중에서 수행되었던 시간이 가장 작은 태스크가 선택이 된다. 수행되어야 태스크들의 수가 증가하게 되면 태스크를 실행 큐(run queue)에 넣거나 정렬하는 시간이 증가하게 된다. 또한 공정하게 모든 태스크들이 수행이 될 수 있도록 수행 시간과 태스크 우선 순위를 고려해 태스크들의 전환(preemption)이 발생하게 되므로 태스크의 수행 시간이 지연될 수 있다.
또한, 각각의 CPU 별로 태스크 스케쥴링(task scheduling)을 하기 때문에 전체 시스템의 밸런스를 유지하기 이해 로드 밸런싱이 수행된다. 로드밸런싱은 각각의 코어에서 독립적으로 수행되는데 자기가 수행할 태스크(task)가 없거나 적을 경우 많은 코어의 태스크를 가져오도록 동작을 한다. 하지만 이러한 동작을 수행하기 위해서는 다른 코어의 상태를 확인해야 하고 또한 태스크(task) 이동을 위해서 크리티컬 섹션(critical section)이 추가되어야 한다. 또한 로드 밸런싱을 수행한다고 하더라고 CPU간의 밸런스가 불균형한 시점이 발생하게 된다. 이와 같은 영향으로 스케쥴링을 위한 수행 시간이 길어지면서 전환(preemption)이 발생하는 빈도가 증가하면 태스크는 지연 실행되게 되는 문제점이 있다.
하기에서는 하드웨어에 기반한 태스크 스케쥴링 장치 및 방법에 대하여 설명한다. 본 발명의 실시 예에서는 멀티 코어 환경에서 스케쥴링을 위해 필요한 작업을 하드웨어에서 수행하고, 운영 체제는 그 결과를 이용하여 스케쥴링을 위한 시간을 단축 시킬 수 있다. 본 발명에서는 글로벌 스케쥴링을 하기 때문에 각 CPU 별로 밸런스를 맞추기 위한 동작이 필요 없고, CPU 자원(CPU resource)이 사용 가능하면 바로 대기중인 태스크를 이용하도록 할 수 있다. 또한, 전체 태스크를 대상으로 타임 쉐어링(time sharing)을 하여 시간을 할당하기 ‹š문에 전체 태스크(task)들에 대한 공정성(fairness)를 높일 수 있어, 시스템의 성능 향상 및 전력 감소 효과를 가져올 수 있다.
도 1은 본 발명의 일 실시 예에 따른 하드웨어 기반 스케쥴러 가속기를 설명하는 도면이다. 도 1을 참조하면, 하드웨어 기반 스케쥴러 가속기(100, scheduler accelerator)는 운영체제(150, ex. Linux)와 태스크 스케쥴링 관련 정보를 교환할 수 있다. 복수의 코어와 하드웨어 기반 스케쥴러 가속기는 버스(BUS)를 통해 연결될 수 있다. 하드웨어 기반 가속기(100)는 운영체제(150)와 연동할 수 있는 기능을 제공하는 스케쥴러 가속기 인터페이스 모듈(110, scheduler accelerator interface module) 및 하드웨어 기반 케쥴러 가속기(100)에서 태스크 스케쥴링에 대한 전반적인 동작을 제어하는 태스크 관리 모듈(130, task manager module)을 포함할 수 있다.
또한, 상기 하드웨어 기반 스케쥴러 가속기(100)는 시스템에 존재하는 태스크 정보 및 적어도 하나의 태스크를 포함하는 그룹에 대한 정보를 저장하는 태스크/그룹 풀 모듈(131, task/group pool module), 각각의 CPU에서 수행 중인 태스크 및 다음 수행될 태스크의 정보를 관리하는 CPU 상태 관리 모듈(133, CPU status management module), 각 태스크의 수행 시간 업데이트를 위한 타이머(135, timer) 및 실행 대기 중인 태스크 정보를 관리하는 그룹 정보 관리 모듈(137, group information module)을 더 포함할 수 있다. 실행 대기 중인 태스크 정보를 나타내는 정보를 그룹 정보(group info)라고 명명할 수 있다. 또한, 상기 그룹 정보(group info)는 비트맵 정보를 이용하여, 실행 대기 중인 상태의 태스크 또는 그룹과 실행 대기 상태가 아닌 태스크 또는 그룹을 구분할 수 있다. 상기 태스크/그룹 풀 모듈(131), CPU 상태 관리 모듈(133), 타이머(135) 및 그룹 정보 관리 모듈(137)은 태스크 관리 모듈(130)의 제어 하에 동작할 수 있다.
본 발명의 실시 예에 따르면, 상기 태스크 관리 모듈(130)은 시스템의 태스크에 기반하여 태스크 관련 정보를 관리하고, CPU로부터 수신하는 요청에 기반하여 상기 태스크 관련 정보를 업데이트 하며, 상기 업데이트 된 태스크 관련 정보에 기반하여 현재 실행 중인 태스크 다음으로 각 CPU에서 수행될 태스크 후보를 선택하고, 상기 태스크 후보 선택 결과를 각 CPU에 제공하도록 제어할 수 있다.
이때 상기 태스크 관련 정보는 시스템에서 이용하는 모든 태스크에 대한 태스크 및 적어도 하나의 태스크를 포함하는 그룹에 대한 태스크/그룹 풀(pool) 정보, 실행 대기 중인 태스크를 관리하는 그룹 정보, 각 태스크의 수행 시간 정보 및 각 CPU에 실행 태스크와 태스크 후보를 포함하는 태스크 상태 정보 중 적어도 하나의 정보를 포함할 수 있다. 또한, 상기 그룹 정보는 시스템의 전체 태스크 및 전체 그룹에 대한 실행 대기 상태에 대응하는 비트 정보로 구성되는 비트맵 정보일 수 있다.
또한, 상기 태스크 관리 모듈(130)은 실행 대기 중인 태스크를 관리하는 그룹 정보에서 비트맵 정보에 기반하여 실행 대기 태스크를 탐색하고, 상기 실행 대기 태스크 중 태스크 수행 시간이 가장 짧은 태스크를 태스크 후보로 선택하도록 제어할 수 있다.
또한, 상기 태스크 관리 모듈(130)은 상기 선택된 수행 시간이 가장 짧은 태스크가 그룹인지 판단하고, 그룹이 아니라고 판단하면, 상기 선택된 태스크를 각 CPU에 대한 태스크 후보로 설정하고, 그룹이라고 판단하면, 그룹에 포함된 태스크 중 수행 시간이 가장 짧은 태스크를 태스크 후보로 선택하도록 제어할 수 있다.
또한, 상기 태스크 관리 모듈(130)은 상기 CPU로부터 수신하는 요청이 태스크 생성 요청이면, 상기 태스크 생성 요청에 포함된 태스크 ID에 기반하여 상기 태스크/그룹 풀 정보를 업데이트 하도록 제어할 수 있다.
또한, 상기 태스크 관리 모듈(130)은 상기 CPU로부터 수신하는 요청이 태스크 인큐(enqueue) 요청이면, 상기 태스크 인큐(euque) 요청에 포함된 태스크 ID에 기반하여 상기 그룹 정보의 비트 정보를 업데이트 하고, 상기 태스크 ID에 대응하는 부모 그룹이 루트 그룹인지 판단하며, 루트 그룹이 아니라고 판단하면, 상기 부모 그룹에 대하여 상기 그룹 정보의 비트 정보를 업데이트 하는 과정 및 루트 그룹인지 판단하는 과정을 수행하도록 제어할 수 있다.
또한, 상기 태스크 관리 모듈(130)은 상기 CPU로부터 수신하는 요청이 태스크 디큐(dequeue) 요청이면, 상기 태스크 디큐(duque) 요청에 포함된 태스크 ID에 기반하여 상기 그룹 정보의 비트 정보를 업데이트 하고, 상기 태스크 ID에 대응하는 부모 그룹에 포함된 모든 태스크가 실행 대기 상태가 아닌지 판단하며, 부모 그룹에 포함된 적어도 하나의 태스크가 실행 대기 상태이면 상기 그룹 정보의 업데이트를 종료하고, 부모 그룹에 포함된 모든 태스크가 실행 대기 상태가 아니면 부모 그룹이 루트 그룹이 될 때까지 상기 그룹 정보 업데이트 과정 및 모든 태스크가 실행 대기 상태가 아닌지 판단하는 과정을 수행하도록 제어할 수 있다.
또한, 상기 태스크 관리 모듈(130)은 상기 태스크 후보가 어떤 CPU에 의해서 선택되면, 상기 태스크 상태 정보의 태스크 후보 필드를 비우고, 상기 태스크 상태 정보의 태스크 후보 필드를 업데이트 하기 위한 새로운 태스크 후보를 선택하도록 제어할 수 있다.
또한, 상기 태스크 관리 모듈(130)은 상기 선택된 태스크가 특정 CPU에서만 실행될 수 있는 관련성(affinity)이 있는지 판단하고, 관련성이 있는 것으로 판단하면, 각 CPU에 대해 관련성이 있는 태스크 중 각 CPU 별로 수행 시간이 가장 짧은 태스크를 탐색하고, CPU와 관련성이 없는 태스크 중 수행 시간이 가장 짧은 태스크를 탐색하며, 각 CPU에 대해 관련성이 있는 태스크와 관련성이 없는 태스크 중 수행 시간이 더 짧은 태스크를 태스크 후보로 선택하도록 제어할 수 있다.
상기에서 스케쥴러 가속기(100)의 구성에 대하여 블록을 나누어 설명하였으나, 이는 설명의 편의를 위한 것으로 본 발명에서 스케쥴러 가속기(100)의 구성이 반드시 이에 한정되는 것은 아니다. 즉, 상기 태스크 관리 모듈(130), 태스크/그룹 풀 모듈(131), CPU 상태 관리 모듈(133), 타이머(135) 및 그룹 정보 관리 모듈(137)을 포함하는 제어부가 상기 스케쥴러 가속기(100)의 동작을 제어할 수도 있다. 상기 태스크 관리 모듈 및 제어부의 동작은 도 1에서 설명한 동작에 한정할 것이 아니라 하기 도 2 내지 도 12를 통해 설명하는 스케쥴링 동작을 제어할 수도 있다.
도 2는 본 발명의 일 실시 예에 따른 태스크/그룹 풀 모듈을 설명하는 도면이다. 도 2를 참조하면, 태스크/그룹 풀 모듈(task/group pool module)은 태스크가 시스템에서 생성되어 종료되지 전까지 모든 태스크의 정보가 저장 된다. 태스크 관련 정보에 대한 접근을 빠르게 하기 위해 태스크 ID를 할당할 수 있다. 태스크 ID는 각 태스크의 생성 순서대로 할당 되고 이는 소프트웨어(software)에서 생성된다. 도 2의 각 태스크에는 ID가 부여되어 있으며, ID의 번호가 낮은 태스크는 시스템에서 먼저 생성된 태스크 일 수 있다. 태스크에는 자신이 속한 그룹에 대한 정보를 포함할 수 있다.
운영체제(Operating system)는 특정 태스크(task)들을 그룹(group)으로 묶어서 실행 시간을 제어한다. 이때, 각 그룹에 대한 정보를 표시하기 위해 그룹 관련 정보가 포함된다. 그룹 정보 역시 접근을 빠르게 하기 위해 태스크와는 다른 ID를 부여 받고 태스크와 구분되는 영역에 지정된다. 운영체제에서 일을 할당하는 단위로 적어도 하나의 태스크를 포함하는 그룹을 할당할 수 있다. 본 발명의 실시 예에서 언급하는 그룹도 운영체제가 일을 할당할 때 이용하는 그룹일 수 있다. 그룹은 실제 일을 수행하는 단위는 아니며 태스크에 대한 정보를 포함하고 있다. 본 발명의 실시 예에서 언급하는 그룹은 일반적인 운영 체제에서 태스크와 그룹 관계와 유사하다. 따라서 하기에서 태스크와 그룹의 관계를 태스크의 실행 시간에 기반하여 설명하나, 본 발명의 권리 범위를 이에 한정하는 것은 아니다.
도 3을 참조하여, 그룹에 대하여 더욱 자세히 설명한다. 도 3에서 그룹1(340)은 적어도 하나의 태스크를 포함할 수 있고, 도 3 상에서 그룹 1(340)은 3개의 태스크들(345, 346, 347)을 포함하고 있다. 그룹은 동일한 위상의 태스크와 동일한 수행 시간을 배분 받은 태스크로 취급될 수 있다. 즉, 상위 그룹에서 볼 때, 상위 그룹 내에 포함된 하위 그룹은 태스크와 동일하게 취급 될 수 있다. 예를 들어, 도 3에서 루트 그룹(300, root group)에는 4개의 동일한 시간을 배분 받은 태스크들(310, 320, 330, 340)이 있다. 그룹1(340)은 그룹이지만 상위 그룹에서 볼 때 동일한 시간을 배분 받은 태스크로 취급 될 수 있다. 예를 들어 각 태스크들(310, 320, 330, 340)에는 동일하게 3sec의 시간이 배분된 것으로 가정할 수 있다. 이때, 그룹1(340)에 복수의 태스크들이 포함되어 있다 하더라도, 그룹1(340)에 배분된 시간은 3sec이다. 한편, 그룹1(340)에 포함된 복수의 태스크들(345, 346, 347)은 상위 그룹인 그룹1(340)에 대하여 동일한 시간을 배분 받은 태스크들이다. 따라서 각 태스크들(345, 346, 347) 각각에는 1sec의 태스크 실행 시간이 배분될 수 있다. 또한, 태스크(345)를 태스크로 표시하였으나, 그룹1(340)의 관점에서 볼 때 태스크인 것이지, 태스크(345) 역시 적어도 하나의 태스크를 포함하는 그룹일 수도 있다.
도 4는 본 발명의 일 실시 예에 따른 태스크/그룹 풀 모듈에서 관리하는 태스크 정보에 대하여 설명하는 도면이다. 도 4를 참조하면, 각 태스크 및 각 그룹의 아이디에 대응하는 필드, 각 태스크의 부모 그룹을 표시하기 위한 필드, 태스크의 우선 순위를 표시하기 위한 필드, CPU 관련성 정보(CPU affinity) 등을 포함할 수 있다. 도시하지 않았지만 추가적인 태스크 관련 정보를 더 포함할 수 있다. 우선 순위는 시스템에서 여러 태스크가 수행하기 위해 경쟁할 때 먼저 처리되어야 하는 순서를 결정하기 위해 사용된다. 부모 그룹이란 각 태스크들이 포함된 상위 그룹을 지시한다. 예를 들어 태스크 0, 2는 그룹 11에 포함된 태스크들이고, 태스크 1은 그룹 12에 포함된 태스크 이며, 태스크 10은 그룹 15에 포함된 태스크이다. 그룹도 부모 그룹을 가질 수 있다. 그룹 11의 부모 그룹은 루트 그룹(root group)이다. 그룹 12는 그룹 11에 포함되었고, 그룹 15는 루트 그룹에 속한다. 이와 같이, 태스크/그룹 풀 모듈에서는 태스크와 그룹의 아이디, 부모 그룹 정보, 우선 순위 등에 대한 정보를 저장하고 관리할 수 있다.
타이머는 각 태스크의 수행 시간을 계산하고, 각 태스크의 수행 시간 업데이트에 이용될 수 있다. 본 발명의 실시 예에서 태스크를 할당 시, 수행 시간이 가장 적은 태스크(task)의 스케쥴링을 위한 다음 태스크로 선정하게 된다.
도 5는 본 발명의 일 실시 예에 따른 그룹 정보(group info)를 설명하는 도면이다. 도 5를 참조하면, 그룹 정보 관리 모듈에서 관리하는 그룹 정보(Group info)는 모든 태스크와 그룹 ID에 대응되는 크기의 비트맵(bitmap)이 존재한다. 그룹(Group)의 ID는 그룹 정보(group info)의 ID와 동일한 오프셋(offset)을 가지기 때문에, 오프셋(offset)으로 쉽게 접근할 수 있다.
그룹 정보(group info)는 태스크들을 그룹으로 관리하기 위해 사용되며 그룹 개수만큼 생성될 수 있다. 태스크 및 그룹 개수에 대응하는 비트맵이 존재할 수 있다. 그룹 정보 관리 모듈은 태스크 및 그룹 개수에 대응하여 생성된 비트맵의 비트 정보를 관리할 수 있다. 설정에 따라 특정 태스크 또는 그룹이 실행 대기 중이라면 비트를 [1]로 설정하고, 실행 대기 중이지 않은 태스크 또는 그룹에 대해서는 비트를 [0]으로 설정할 수 있다.
도 5에서 설명하면, 루트 그룹에 속한 태스크 중 비트 정보가 1인 태스크들(태스크 1, 태스크 2, 태스크 5, 태스크 7)은 실행 대기 중인 태스크이다. 또한 그룹(max_task_id+1)은 실행 대기 중이다. 태스크 관리 모듈은 4개의 태스크와 하나의 그룹을 모두 동일한 위상의 태스크로 간주하고, 각 태스크 중 수행 시간이 가장 적은 태스크를 선택할 수 있다. 예를 들어 그룹(max_task_id+1)이 가장 적은 수행 시간을 가진 경우라고 가정한다. 그룹(max_task_id+1)에 대응하는 그룹 1의 태스크 중 실행 대기 중인 태스크를 검색할 수 있다. 이 경우 그룹 1에서 비트 정보가 [1]인 태스크 0, 태스크 3, 태스크 4가 실행 대기 중인 태스크이다. 각 태스크 중 수행 시간이 가장 적은 태스크를 각 코어의 다음 실행 태스크 후보로 설정할 수 있다. 태스크 관리 모듈은 선택된 태스크에 대응하는 태스크 아이디를 반환하여, 다음 실행 태스크 후보를 알려줄 수 있다. 한편, 가장 적은 수행 시간을 가진 태스크가 그룹일 경우 최종으로 선택되는 태스크가 그룹이 아닌 태스크 일 때까지 상기 동작을 반복할 수 있다. 본 발명의 실시 예에서는 도 5와 같이, 그룹 정보를 비트맵을 이용한 비트 정보로 관리하고 있다. 비트 정보로 관리하기 때문에 각 그룹에 속한 태스크 중 실행 대기 중인 태스크를 비트 연산을 통해 빠른 시간 내에 검색할 수 있다. 이를 통해 동작 시간을 단축하고 시스템의 효율을 향상 시킬 수 있다.
도 6은 본 발명의 일 실시 예에 따른 CPU 상태 모듈을 설명하는 도면이다. 도 6을 참조하면, CPU 상태 모듈(CPU status module)은 각각의 CPU에서 수행 중인 태스크 및 다음 수행될 태스크의 정보를 관리할 수 있다. 도 5에서, 시스템은 4개의 코어들(코어 0, 코어 1, 코어 2 및 코어 3)을 관리하고 있다. 각 코어에 대해서 현재 수행 중인 태스크(current task) 및 각 코어에 현재 수행 태스크 이후 할당할 다음 태스크(next task)에 대한 정보를 관리하고 있다. 이때, 본 발명의 실시 예에서는 글로벌 스케쥴링을 수행하기 때문에 각 코어의 다음 태스크(next task)는 태스크 7로 동일할 수 있다. 따라서 각 코어에 대하여 현재 실행 중인 태스크는 상이하지만 다음 태스크는 동일하다.
각 코어 중 특정 시점에 어떤 코어(예를 들어, 코어 3)가 비는 경우 코어 3은 태스크를 요청할 수 있고, 이때 다음 태스크(next task)로 설정되어 있는 태스크 7을 읽어 해당하는 태스크를 실행할 수 있다. 만약 태스크 7를 읽은 경우 CPU 상태 관리 모듈에서는 모든 코어에 대응하는 다음 태스크를 비울 수(clear) 있다. 또한, 다음 태스크를 비움과 동시에 새로운 다음 태스크 후보를 선정하여 다음 태스크에 설정할 수 있다. 이와 같이, 다음 어떤 코어에 대응하는 다음 태스크가 클리어 될 때 마다 모든 코어에 대응하는 다음 태스크를 클리어 하고, 새로운 다음 태스크를 선정할 수 있다. 또한, 어떤 코어(core, CPU)에서 다음 태스크를 읽어갈지에 대해서 특정 코어가 읽어 가기 전까지 알 수 없기 때문에 각 코어에 대해 각각 현재 태스크 및 다음 태스크를 관리할 수 있다.
한편, 각 코어와 각 태스크 사이에 어피니티(affinity)가 있는 경우, 각 코어의 다음 태스크(next task)는 서로 다른 태스크로 설정될 수 있다. 각 코어 별로 다음 태스크(next task)가 상이하게 설정될 수도 있기 때문에, 각 코어에 대응하는 현재 태스크 및 다음 태스크를 관리하는 것이 효과적이다. 어피니티(affinity) 관련 동작에 대해서는 추후 더욱 자세히 설명한다.
하기에서 도 7 내지 도 12를 통해 설명하는 스케쥴러 가속기의 동작은 스케쥴러 가속기에 포함된 제어부 또는 태스크 관리 모듈에 의해 제어되는 동작임을 가정한다.
도 7은 본 발명의 일 실시 예에 따른 스케쥴링 방법을 설명하는 도면이다. 도 7을 참조하면, 스케쥴러 가속기는 시스템이 동작 중이면 태스크를 관리하고 있을 수 있다(710 단계). 본 발명의 실시 예에서는 종래 운영체제의 태스크 스케쥴링 기능을 하드웨어 기반 스케쥴러 가속기에서 수행한다. 따라서 하드웨어 기반 스케쥴러 가속기는 시스템이 동작중이면 태스크 관련 스케쥴링 동작을 통해 태스크를 관리한다.
720 단계에서 스케쥴러 가속기는 운영체제로부터 태스크 관련 요청을 수신할 수 있다. 태스크 관련 요청은 태스크 생성 요청(task creation request), 태스크 인큐 요청(task enqueue request), 태스크 디큐 요청(task dequeue request) 및 태스크 픽 요청(task pick request)을 포함할 수 있다. 태스크 생성 요청은 태스크 ID에 해당하는 태스크 관련 정보 및 스케쥴링 관련 정보를 업데이트할 것을 요청하는 메시지이다. 태스크 인큐 요청은 태스크 실행 대기 행렬에 태스크를 추가할 것을 명하는 요청이며, 이에 따라 태스크 스케쥴링 관련 정보를 업데이트 할 수 있다. 태스크 디큐 요청은 태스크 실행 대기 행렬에서 태스크를 해제할 것을 명하는 요청이며, 이에 따라 태스크 스케쥴링 관련 정보를 업데이트 할 수 있다. 태스크 픽 요청은 CPU가 idle일 경우 CPU에 태스크를 할당하기 위해 운영체제가 요청하는 메시지이다.
720 단계에서 수신하는 태스크 관련 요청 메시지에 따라 이하 동작이 결정될 수 있다. 태스크 생성 요청을 수신하였으면, 730 단계에서 태스크 생성 관련 동작을 수행할 수 있다. 태스크 인큐 요청을 수신하였으면, 740 단계에서 태스크 인큐 관련 동작을 수행할 수 있다. 태스크 디큐 요청을 수신하였으면, 750 단계에서 태스크 디큐 관련 동작을 수행할 수 있다. 또한, 태스크 픽 요청을 수신하였으면, 760 단계에서 태스크 픽 관련 동작을 수행할 수 있다. 770 단계에서는 태스크 후보 선택 및 실행 태스크를 선택하는 동작을 수행할 수 있다.
730 단계 내지 770 단계의 각 동작에 대해서는 하기 도 8 내지 도 12를 참조하여 더욱 자세히 설명한다. 730 단계 내지 750 단계의 동작을 통해 그룹 정보를 관리할 수 있으며, 관리되는 그룹 정보는 770 단계에서 태스크 후보를 선택하는데 이용될 수 있다. 770 단계에서 선택된 태스크 후보는 760 단계에서 실행 태스크 선택 동작에 이용될 수 있다.
780 단계에서 스케쥴러 가속기는 시스템이 동작 중인지 판단할 수 있다. 시스템이 동작 중인 것으로 판단하면, 720 단계로 복귀하며, 이후 태스크 관련 요청을 수신하고, 수신한 요청 메시지에 기반하여 다음 동작을 수행할 수 있다. 780 단계에서 시스템이 동작 중이지 않은 것으로 판단하면, 동작을 종료할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 태스크 생성 동작을 설명하는 도면이다. 도 8을 참조하면, 810 단계에서 스케쥴러 가속기는 태스크 생성 요청을 수신하면, 태스크 생성 요청에 포함된 태스크 ID에 해당하는 태스크/그룹 풀(task/group pool)의 데이터 필드를 업데이트 할 수 있다. 업데이트는 각 태스크의 부모 그룹 정보, 우선 순위, CPU 어피니티(CPU affinity) 등의 정보가 업데이트 될 수 있다.
830 단계에서 스케쥴러 가속기는 현재 각 CPU에서 수행중인 태스크의 수행 시간 중 가장 작은 값으로 각 태스크의 수행 시간 정보를 설정할 수 있다. 각 태스크에 대한 수행 시간 정보는 추후 각 운영체제에 할당할 태스크 결정 시 이용될 수 있다. 태스크 결정 시 동일한 계층에서 수행 시간이 가장 적은 태스크가 운영체제에 할당될 다음 태스크 후보로 설정될 수 있다.
도 9는 본 발명의 일 실시 예에 따른 태스크 인큐(enqueue) 동작을 설명하는 도면이다. 도 9를 참조하면, 910 단계에서, 태스크/그룹 풀 정보에 포함된 태스크가 실행 대기 상태가 되면, 대응하는 태스크 및 그룹을 대기 열에 추가할 수 있다. 스케쥴러 가속기는 그룹 정보(group info)의 해당 태스크의 비트 정보를 [1]로 설정할 수 있다(대기 행렬 추가를 [1]로 설정하고, 대기 행렬 해제가 [0]으로 설정되어 있는 경우).
930 단계에서 스케쥴러 가속기는 태스크 인큐 요청을 받은 태스크의 부모 그룹이 루트 그룹(root group)인지 판단할 수 있다. 루트 그룹은 태스크를 포함하는 그룹 중 최상위 그룹을 의미한다. 판단 결과에 따라 루트 그룹으로 판단하면 950 단계로 진행하고, 루트 그룹이 아닌 것으로 판단하면 970 단계로 진행할 수 있다.
부모 그룹이 루트 그룹이면, 950 단계에서 요청 받은 태스크를 대기 행렬에 추가하는 동작을 완료하였으므로 추후 태스크를 선택하는 동작을 수행한다. 이후, 그룹 정보에서 비트 정보가 새롭게 [1]로 설정된 태스크와 이미 [1]로 설정되어 있는 태스크들 과의 수행 시간을 비교해 가장 수행 시간이 작은 태스크를 CPU 상태 관리 모듈의 다음 태스크(next task)에 업데이트 할 수 있다. 다음 태스크는 태스크 후보로 명명할 수 있다. 태스크 후보는 운영체제로부터 태스크 할당 요청이 있는 경우 할당할 태스크 후보를 의미할 수 있다.
부모 그룹이 루트 그룹이 아니면, 970 단계로 진행한다. 부모 그룹이 루트 그룹이 아니면 요청 받은 태스크를 대기 행렬에 추가하는 동작이 완료되지 않았으므로 ID를 선택된 태스크의 부모 그룹 ID로 변경한다(970 단계). 이때, 태스크는 그룹일 수 있다. 즉, 태스크가 그룹이 아니면 930 단계에서 부모 그룹이 루트 그룹으로 판단되었을 것이다. 930 단계에서 부모 그룹이 루트 그룹이 아니므로, 태스크는 그룹 일 수 있다. 970 단계에서는 이후 910 단계로 복귀한다. ID는 부모 그룹의 아이디로 변경되었으므로, 변경된 부모 그룹 ID에 대응하는 그룹의 비트를 [1]로 설정한다. 상기 동작은 부모 그룹이 루트 그룹으로 결정되어 태스크 선택 동작을 수행할 때까지 반복적으로 수행될 수 있다.
태스크 디큐(dequeue) 동작은 태스크 인큐(enqueue) 동작과 반대로 동작할 수 있다. 대기 행렬에서 제외할 대상 태스크의 비트 정보를 [0]으로 설정한다. 만약 해당 태스크의 그룹에 속한 모든 태스크가 실행 대기 중이 아니면 부모 그룹의 비트 정보를 [0]으로 설정한다. 그리고 부모 그룹이 루트 그룹일 때까지 상기 과정을 반복할 수 있다. 해당 태스크의 그룹에 속한 적어도 하나의 태스크가 실행 대기 중인 경우 그룹의 비트 정보는 [1] 상태를 유지하고, 그룹 정보 업데이트 동작을 종료한다.
도 10은 본 발명의 일 실시 예에 따른 태스크 후보 선택 동작을 설명하는 도면이다. 도 10을 참조하면, 태스크 후보를 선택하는 동작은 루트 그룹 검색에서부터 시작할 수 있다. 스케쥴러 가속기는 탐색 ID를 루트 그룹으로 설정할 수 있다(1010 단계).
1020 단계에서 스케쥴러 가속기는 루트 그룹 하위 태스크 중 비트 정보가 [1]인 태스크나 그룹 중 태스크 수행 시간이 가장 작은 태스크를 탐색할 수 있다. 스케쥴러 가속기는 대응하는 태스크 ID를 탐색하고, 가장 작은 수행 시간을 가진 태스크 ID를 선택할 수 있다.
1030 단계에서 스케쥴러 가속기는 선택된 ID가 그룹 ID 인지 판단할 수 있다. 선택된 ID가 그룹 ID이면 1040 단계로 진행하고, 그룹 ID가 아닌 태스크 ID 이면 1050 단계로 진행할 수 있다. 선택된 ID가 그룹 ID가 아닌 태스크 ID 이면, 그 ID를 CPU 상태 정보의 다음 태스크로 설정하다. 즉, 태스크 ID를 태스크 후보로 설정하고 저장할 수 있다.
1040 단계로 진행하면 탐색 대상 ID를 선택된 그룹 ID로 변경하고, 1020 단계로 복귀한다. 이후, 그룹에 속한 태스크 중 수행 시간이 가장 작은 태스크를 탐색하고, 선택된 태스크에 대해서 그룹 ID인지 판단하는 과정을 반복한다. 이와 같은 과정을 반복하여 최종적으로 태스크가 선택될 때까지 상기 과정을 반복할 수 있다. 최종적으로 선택된 태스크의 ID는 CPU 상태 정보에서 다음 태스크, 태스크 후보로 설정될 수 있다. 이때, 선택된 ID는 모든 CPU에서 실행 가능하기 때문에 CPU 상태 정보에서 각 CPU에 대응하는 다음 태스크에는 같은 ID가 저장될 수 있다.
한편, 1050 단계 내지 1070 단계를 더 포함할 수 있다. ID가 선택되면 선택된 ID가 특정 CPU와 관련성(affinity)이 있는지 판단할 수 있다. 상기 관련성이란 특정 태스크가 특정 CPU에서만 동작하도록 설정된 경우 또는 특정 태스크가 특정 CPU에 우선 순위가 있는 경우 일 수 있다.
1050 단계에서 관련성이 없는 것으로 판단하면 1060 단계로 진행하고, 관련성이 있는 것으로 판단하면 1070 단계로 진행한다. 1060 단계에서 스케쥴러 가속기는 선택된 ID를 CPU 상태 정보의 태스크 후보로 설정할 수 있다. 1070 단계에서는 선택된 ID가 특정 CPU와 관련 성이 있는 경우 각 CPU에 대한 후보 태스크를 선택하는 방법을 설명한다. 1070 단계의 동작은 하기 도 12에서 더욱 자세히 설명한다.
도 11은 본 발명의 일 실시 예에 따른 실행을 위한 태스크를 선택하는 동작을 설명하는 도면이다. 도 11을 참조하면, CPU로부터 태스크 실행 요청을 수신하면 태스크 후보에 설정된 태스크를 할당할 수 있다(1110 단계). CPU 상태 정보에서 태스크 후보로 설정된 영역은 비워진다.
CPU 상태 정보의 다음 태스크(next task) 또는 태스크 후보에 있는 태스크가 CPU에 의해서 선택이 되면, 그룹 정보(group info)에서 해당 태스크의 비트 정보를 [0]으로 설정한다(1120 단계).
다음으로 그룹의 실행 대기 중인 태스크 수가 0개 인지 판단할 수 있다. 0 개가 아니면, 그룹에 실행 대기 중인 태스크가 존재하는 것 이므로 그룹의 비트 정보를 변경하지 않고 [1]로 유지한 채 과정을 종료한다. 실행 대기 중인 태스크 수가 0 개이면, 1140 단계로 진행한다. 1140 단계에서 그룹 ID에 기반하여 그룹이 루트 그룹인지 판단할 수 있다. 루트 그룹이면 더 이상 상위 그룹이 없으므로 절차를 종료할 수 있다. 루트 그룹이 아니면, 1150 단계로 진행할 수 있다. 1150 단계에서는 ID를 선택된 그룹의 부모 그룹으로 변경한 후 1120 단계로 복귀할 수 있다. 이와 같은 과정은 그룹 ID가 루트 그룹이 될 때까지 반복될 수 있다.
CPU 상태 정보에는 태스크 후보가 비어있으므로, 다음 태스크 후보를 선택하는 과정을 통해 태스크 후보를 설정할 수 있다. 다음 태스크 후보를 결정하는 과정은 특정 CPU에서 CPU 상태 정보에 저장된 태스크 후보를 선택한 이후 진행될 수 있다. 즉, CPU에서 태스크 후보를 선택하여, 각 CPU에 대한 태스크 후보 필드가 비게 되면, 새로운 태스크 후보를 설정하기 위한 태스크 후보 선택 과정을 통해 태스크 후보를 선택할 수 있다.
도 12는 본 발명의 일 실시 예에 따른 태스크와 CPU의 관련성(affinity)이 있는 경우 동작을 설명하는 도면이다. 도 12를 참조하면, 실행 후보로 선택된 태스크에 CPU 관련성(CPU affanity)가 있는 경우, 모든 CPU 상태 정보에 CPU 관련성이 있는 태스크를 후보 태스크로 설정할 수 없다. 즉, 관련성이 있는 CPU 상태 정보에서 태스크 후보는 선택된 태스크를 설정할 수 있으나, 다른 CPU에 대한 CPU 상태 정보에는 관련성이 있는 태스크를 후보로 설정할 수 없다. 이러한 경우 선택된 태스크를 태스크 후보로 설정할 수 없는 다른 CPU에 대한 CPU 상태 정보의 태스크 후보를 선정하는 방법이 필요하다.
검색은 2단계로 진행할 수 있다. 1210 단계에서 먼저 각 CPU 별로 관련성을 갖는 태스크를 탐색할 수 있다. 이 경우 각 CPU에 대해서 관련성이 있는 태스크가 존재할 수도 있고, 존재하지 않을 수도 있다. 각 관련성이 있는 각 태스크에 대해서 각 CPU 별로 수행 시간이 가장 짧은 태스크를 탐색할 수 있다. 또한, 1220 단계에서 CPU 관련성이 없는 태스크 중 가장 수행 시간이 짧은 태스크를 탐색할 수 있다.
1230 단계에서 스케쥴러 검색된 두 개의 태스크 수행 시간을 비교해서 더 작은 값을 갖는 태스크를 해당 CPU의 태스크 후보로 선택할 수 있다. 선택된 태스크가 두 개가 아닐 경우 검색된 하나의 값이 저장될 수 있다.
상기와 같은 방법으로 하드웨어를 이용하여 스케쥴링을 가속시키는 방법 및 장치에 대하여 설명하였다. 본 발명의 실시 예에서는 기존의 운영체제에서 처리되던 태스크 관리 동작을 하드웨어에서 모두 처리하고, 운영체제에서 스케줄러 가속기에서 스케쥴링한 결과만을 이용한다. 하드웨어 내부에서는 불필요한 동작을 감소시키고 빠른 데이터 접근을 위해 비트맵 형태로 스케쥴링 관련 데이터를 정리하고 있다. 태스크의 수가 증가 함에 따라 스케쥴링으로 인해 발생되는 오버헤드가 증가하고 또한 전환(preemption)이 자주 발생할 가능성이 높아 어플리케이션(application) 등의 일이 지연 실행될 가능성이 높다. 본 발명의 실시 예에서는 스케쥴링 관리 동작을 하드웨어에서 처리하므로 기존의 운영체제에서 스케쥴링 하는 경우보다 처리 시간이 짧아져서 전환(preemption)이 발생하지 않도록 한다. 또한, 기존의 CPU 스케쥴링이 아닌 글로벌 스케쥴러로 동작하므로 로드 밸런싱이 불필요하게 되고, 전체 시스템에 있는 모든 태스크들의 공정성을 보장하게 되므로 시스템의 성능을 향상시킬 수 있다.
그리고 본 명세서와 도면에 개시된 실시 예들은 본 발명의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (20)

  1. 하드웨어 기반 스케쥴러(scheduler) 가속기의 태스크(task) 스케쥴링(scheduling) 방법에 있어서,
    시스템의 태스크에 기반하여 태스크 관련 정보를 관리하는 단계;
    제1 태스크를 위해 태스크 인큐(enqueue) 요청을 수신하는 단계;
    상기 제1 태스크를 위해 상기 태스크 관련 정보를 업데이트 하는 단계;
    상기 제1 태스크의 부모 그룹을 식별하는 단계;
    상기 제1 태스크의 부모 그룹이 상위 그룹에 포함되는지 여부를 판단하는 단계;
    상기 부모 그룹이 상기 상위 그룹에 포함되어 있으면, 상기 부모 그룹을 위해 상기 태스크 관련 정보를 업데이트 하는 단계;
    상기 부모 그룹이 상기 상위 그룹에 포함되어 있지 않으면, 상기 제1 태스크를 위해 업데이트 된 상기 태스크 관련 정보에 기반하여 현재 실행 중인 태스크 다음으로 각 CPU에서 수행될 태스크 후보를 선택하는 단계; 및
    상기 태스크 후보 선택 결과를 각 CPU에 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 태스크 관련 정보는,
    상기 시스템에서 이용하는 모든 태스크에 대한 태스크 및 적어도 하나의 태스크를 포함하는 그룹에 대한 태스크/그룹 풀(pool) 정보, 실행 대기 중인 태스크를 관리하는 그룹 정보, 각 태스크의 수행 시간 정보 및 각 CPU에 실행 태스크와 태스크 후보를 포함하는 태스크 상태 정보 중 적어도 하나의 정보를 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서, 상기 그룹 정보는 시스템의 전체 태스크 및 전체 그룹에 대한 실행 대기 상태에 대응하는 비트 정보로 구성되는 비트맵 정보인 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 태스크 후보를 선택하기 위해 실행 대기 중인 태스크를 관리하는 그룹 정보에서 비트맵 정보에 기반하여 실행 대기 태스크를 탐색하는 단계를 더 포함하고,
    상기 실행 대기 태스크 중 태스크 수행 시간이 가장 짧은 태스크를 상기 태스크 후보로 선택하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 선택된 수행 시간이 가장 짧은 태스크가 복수의 태스크를 포함하는 태스크 그룹인지 판단하는 단계,
    상기 태스크 그룹이 아니라고 판단하면, 상기 선택된 태스크를 상기 태스크 후보로 설정하고,
    상기 태스크 그룹이라고 판단하면, 그룹에 포함된 태스크 중 수행 시간이 가장 짧은 태스크를 상기 태스크 후보로 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제2항에 있어서, 상기 CPU로부터 태스크 생성 요청을 수신하면,
    상기 태스크 생성 요청에 포함된 태스크 ID에 기반하여 상기 태스크/그룹 풀 정보를 업데이트 하는 것을 특징으로 하는 방법.
  7. 삭제
  8. 제2항에 있어서,
    상기 CPU로부터 태스크 디큐(dequeue) 요청을 수신하는 단계;
    상기 태스크 디큐(dequeue) 요청에 포함된 태스크 ID에 기반하여 상기 그룹 정보의 비트 정보를 업데이트 하는 단계;
    상기 태스크 ID에 대응하는 상기 부모 그룹에 포함된 모든 태스크가 실행 대기 상태가 아닌지 판단하는 단계; 및
    상기 부모 그룹에 포함된 적어도 하나의 태스크가 실행 대기 상태이면 상기 그룹 정보의 업데이트를 종료하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제2항에 있어서, 상기 태스크 후보가 어떤 CPU에 의해서 선택되면,
    상기 태스크 상태 정보의 태스크 후보 필드를 비우는 단계; 및
    상기 태스크 상태 정보의 태스크 후보 필드를 업데이트 하기 위한 새로운 태스크 후보를 선택 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 제4항에 있어서, 상기 태스크 후보를 선택하는 단계는,
    상기 선택된 태스크가 특정 CPU에서만 실행될 수 있는 관련성(affinity)이 있는지 판단하는 단계,
    관련성이 있는 것으로 판단하면,
    각 CPU에 대해 관련성이 있는 태스크 중 각 CPU 별로 수행 시간이 가장 짧은 태스크를 탐색하는 단계,
    CPU와 관련성이 없는 태스크 중 수행 시간이 가장 짧은 태스크를 탐색하는 단계, 그리고
    각 CPU에 대해 관련성이 있는 태스크와 관련성이 없는 태스크 중 수행 시간이 더 짧은 태스크를 태스크 후보로 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 태스크(task) 스케쥴링(scheduling) 하드웨어 기반 스케쥴러(scheduler) 가속기의 장치에 있어서,
    적어도 하나의 CPU와 연동할 수 있는 인터페이스 모듈; 및
    상기 인터페이스 모듈과 연결되며, 시스템의 태스크에 기반하여 태스크 관련 정보를 관리하고, 제1 태스크를 위해 태스크 인큐(enqueue) 요청을 수신하며, 상기 제1 태스크를 위해 상기 태스크 관련 정보를 업데이트 하고, 상기 제1 태스크의 부모 그룹을 식별하며, 상기 제1 태스크의 부모 그룹이 상위 그룹에 포함되는지 여부를 판단하고, 상기 부모 그룹이 상기 상위 그룹에 포함되어 있으면, 상기 부모 그룹을 위해 상기 태스크 관련 정보를 업데이트 하며, 상기 부모 그룹이 상기 상위 그룹에 포함되어 있지 않으면, 상기 제1 태스크를 위해 업데이트 된 태스크 관련 정보에 기반하여 현재 실행 중인 태스크 다음으로 각 CPU에서 수행될 태스크 후보를 선택하고, 상기 태스크 후보 선택 결과를 각 CPU에 제공하도록 제어하는 태스크 관리 모듈을 포함하는 것을 특징으로 하는 장치.
  12. 제11항에 있어서, 상기 태스크 관련 정보는,
    상기 시스템에서 이용하는 모든 태스크에 대한 태스크 및 적어도 하나의 태스크를 포함하는 그룹에 대한 태스크/그룹 풀(pool) 정보, 실행 대기 중인 태스크를 관리하는 그룹 정보, 각 태스크의 수행 시간 정보 및 각 CPU에 실행 태스크와 태스크 후보를 포함하는 태스크 상태 정보 중 적어도 하나의 정보를 포함하는 것을 특징으로 하는 장치.
  13. 제12항에 있어서, 상기 그룹 정보는 시스템의 전체 태스크 및 전체 그룹에 대한 실행 대기 상태에 대응하는 비트 정보로 구성되는 비트맵 정보인 것을 특징으로 하는 장치.
  14. 제11항에 있어서, 상기 태스크 관리 모듈은,
    실행 대기 중인 태스크를 관리하는 그룹 정보에서 비트맵 정보에 기반하여 실행 대기 태스크를 탐색하고, 상기 실행 대기 태스크 중 태스크 수행 시간이 가장 짧은 태스크를 태스크 후보로 선택하도록 제어하는 것을 특징으로 하는 장치.
  15. 제14항에 있어서, 상기 태스크 관리 모듈은,
    상기 선택된 수행 시간이 가장 짧은 태스크가 복수의 태스크를 포함하는 태스크 그룹인지 판단하고,
    상기 태스크 그룹이 아니라고 판단하면, 상기 선택된 태스크를 상기 태스크 후보로 설정하고,
    상기 태스크 그룹이라고 판단하면, 그룹에 포함된 태스크 중 수행 시간이 가장 짧은 태스크를 상기 태스크 후보로 선택하도록 제어하는 것을 특징으로 하는 장치.
  16. 제12항에 있어서, 상기 태스크 관리 모듈은,
    상기 CPU로부터 태스크 생성 요청을 수신하고, 상기 태스크 생성 요청에 포함된 태스크 ID에 기반하여 상기 태스크/그룹 풀 정보를 업데이트 하도록 제어하는 것을 특징으로 하는 장치.
  17. 삭제
  18. 제12항에 있어서, 상기 태스크 관리 모듈은,
    상기 CPU로부터 태스크 디큐(dequeue) 요청을 수신하며, 상기 태스크 디큐(dequeue) 요청에 포함된 태스크 ID에 기반하여 상기 그룹 정보의 비트 정보를 업데이트 하고, 상기 태스크 ID에 대응하는 상기 부모 그룹에 포함된 모든 태스크가 실행 대기 상태가 아닌지 판단하며, 상기 부모 그룹에 포함된 적어도 하나의 태스크가 실행 대기 상태이면 상기 그룹 정보의 업데이트를 종료하고, 상기 부모 그룹에 포함된 모든 태스크가 실행 대기 상태가 아니면 상기 부모 그룹이 루트 그룹이 될 때까지 상기 그룹 정보 업데이트 과정 및 모든 태스크가 실행 대기 상태가 아닌지 판단하는 과정을 수행하도록 제어하는 것을 특징으로 하는 장치.
  19. 제12항에 있어서, 상기 태스크 관리 모듈은,
    상기 태스크 후보가 어떤 CPU에 의해서 선택되면, 상기 태스크 상태 정보의 태스크 후보 필드를 비우고, 상기 태스크 상태 정보의 태스크 후보 필드를 업데이트 하기 위한 새로운 태스크 후보를 선택하도록 제어하는 것을 특징으로 하는 장치.
  20. 제14항에 있어서, 상기 태스크 관리 모듈은,
    상기 선택된 태스크가 특정 CPU에서만 실행될 수 있는 관련성(affinity)이 있는지 판단하고, 관련성이 있는 것으로 판단하면, 각 CPU에 대해 관련성이 있는 태스크 중 각 CPU 별로 수행 시간이 가장 짧은 태스크를 탐색하고, CPU와 관련성이 없는 태스크 중 수행 시간이 가장 짧은 태스크를 탐색하며, 각 CPU에 대해 관련성이 있는 태스크와 관련성이 없는 태스크 중 수행 시간이 더 짧은 태스크를 태스크 후보로 선택하도록 제어하는 것을 특징으로 하는 장치.
KR1020140047693A 2014-04-21 2014-04-21 하드웨어 기반 태스크 스케쥴링 장치 및 방법 KR102182295B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140047693A KR102182295B1 (ko) 2014-04-21 2014-04-21 하드웨어 기반 태스크 스케쥴링 장치 및 방법
US14/692,354 US9880875B2 (en) 2014-04-21 2015-04-21 Apparatus and method for hardware-based task scheduling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140047693A KR102182295B1 (ko) 2014-04-21 2014-04-21 하드웨어 기반 태스크 스케쥴링 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20150121600A KR20150121600A (ko) 2015-10-29
KR102182295B1 true KR102182295B1 (ko) 2020-11-24

Family

ID=54322107

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140047693A KR102182295B1 (ko) 2014-04-21 2014-04-21 하드웨어 기반 태스크 스케쥴링 장치 및 방법

Country Status (2)

Country Link
US (1) US9880875B2 (ko)
KR (1) KR102182295B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230076494A (ko) 2021-11-24 2023-05-31 엘아이지넥스원 주식회사 복합 센서 이동형 레이더의 실시간 연산 태스크 재할당 장치 및 방법

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170039093A1 (en) * 2015-08-04 2017-02-09 Futurewei Technologies, Inc. Core load knowledge for elastic load balancing of threads
CN105511806B (zh) * 2015-11-30 2018-09-07 华为技术有限公司 处理写请求的方法和移动终端
CN105468450B (zh) * 2015-12-29 2019-02-05 华为技术有限公司 任务调度方法及系统
US10691502B2 (en) 2016-06-03 2020-06-23 International Business Machines Corporation Task queuing and dispatching mechanisms in a computational device
US10185593B2 (en) 2016-06-03 2019-01-22 International Business Machines Corporation Balancing categorized task queues in a plurality of processing entities of a computational device
US11029998B2 (en) * 2016-06-03 2021-06-08 International Business Machines Corporation Grouping of tasks for distribution among processing entities
US10241842B2 (en) * 2016-09-29 2019-03-26 Intel Corporation Cloud container resource binding and tasking using keys
US11150944B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Balancing mechanisms in ordered lists of dispatch queues in a computational device
CN109522101B (zh) * 2017-09-20 2023-11-14 三星电子株式会社 用于调度多个操作系统任务的方法、系统和/或装置
KR102442921B1 (ko) * 2017-12-11 2022-09-13 삼성전자주식회사 디지털 시그널 프로세서(dsp)의 태스크 관리 효율을 높일 수 있는 전자 장치
KR101996768B1 (ko) * 2018-11-30 2019-07-04 건국대학교 산학협력단 자원 관리 방법 및 장치
CN112015539B (zh) * 2020-10-29 2021-02-02 北京世纪好未来教育科技有限公司 任务分配方法、装置和计算机存储介质
CN115437757A (zh) * 2021-06-04 2022-12-06 中兴通讯股份有限公司 调度方法、系统、服务器和计算机可读存储介质
CN115469976A (zh) * 2021-06-10 2022-12-13 华为技术有限公司 一种任务调度的方法、系统和硬件任务调度器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2692647B2 (ja) 1995-05-18 1997-12-17 日本電気株式会社 マルチタスク制御方法および制御システム
JP2000172514A (ja) 1998-12-07 2000-06-23 Nec Ic Microcomput Syst Ltd タスク管理装置及びタスクスケジューリング方法
JP2004326486A (ja) 2003-04-25 2004-11-18 Matsushita Electric Ind Co Ltd タスク管理装置
JP2005534116A (ja) 2002-07-25 2005-11-10 スフェラ コーポレイション 複数の消費者をもつコンピュータシステムで資源を動的に割当てて管理する方法
US20120079494A1 (en) 2010-09-27 2012-03-29 Mark Henrik Sandstrom System And Method For Maximizing Data Processing Throughput Via Application Load Adaptive Scheduling And Content Switching

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050015768A1 (en) * 2002-12-31 2005-01-20 Moore Mark Justin System and method for providing hardware-assisted task scheduling
US8881161B1 (en) * 2010-01-28 2014-11-04 Applied Micro Circuits Corporation Operating system with hardware-enabled task manager for offloading CPU task scheduling
US9183016B2 (en) * 2013-02-27 2015-11-10 Vmware, Inc. Adaptive task scheduling of Hadoop in a virtualized environment
RU2538920C2 (ru) * 2013-05-06 2015-01-10 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Способ распределения задач сервером вычислительной системы, машиночитаемый носитель информации и система для реализации способа
US11307884B2 (en) * 2014-07-16 2022-04-19 Vmware, Inc. Adaptive resource management of a cluster of host computers using predicted data
JP6349264B2 (ja) * 2015-01-19 2018-06-27 株式会社日立製作所 計算資源割当て方法およびシステム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2692647B2 (ja) 1995-05-18 1997-12-17 日本電気株式会社 マルチタスク制御方法および制御システム
JP2000172514A (ja) 1998-12-07 2000-06-23 Nec Ic Microcomput Syst Ltd タスク管理装置及びタスクスケジューリング方法
JP2005534116A (ja) 2002-07-25 2005-11-10 スフェラ コーポレイション 複数の消費者をもつコンピュータシステムで資源を動的に割当てて管理する方法
JP2004326486A (ja) 2003-04-25 2004-11-18 Matsushita Electric Ind Co Ltd タスク管理装置
US20120079494A1 (en) 2010-09-27 2012-03-29 Mark Henrik Sandstrom System And Method For Maximizing Data Processing Throughput Via Application Load Adaptive Scheduling And Content Switching

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230076494A (ko) 2021-11-24 2023-05-31 엘아이지넥스원 주식회사 복합 센서 이동형 레이더의 실시간 연산 태스크 재할당 장치 및 방법

Also Published As

Publication number Publication date
US20150301854A1 (en) 2015-10-22
KR20150121600A (ko) 2015-10-29
US9880875B2 (en) 2018-01-30

Similar Documents

Publication Publication Date Title
KR102182295B1 (ko) 하드웨어 기반 태스크 스케쥴링 장치 및 방법
US11294714B2 (en) Method and apparatus for scheduling task, device and medium
EP3425502B1 (en) Task scheduling method and device
CN106371894B (zh) 一种配置方法、装置和数据处理服务器
EP2300910B1 (en) Scheduler instances in a process
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
WO2011148563A1 (ja) 情報処理システム
WO2016039963A2 (en) Resource sharing between two resource allocation systems
CN111367630A (zh) 一种基于云计算的多用户多优先级的分布式协同处理方法
CN112905342A (zh) 资源调度方法、装置、设备及计算机可读存储介质
US10884781B2 (en) Method and apparatus for a virtual machine
CN111290842A (zh) 一种任务执行方法和装置
CN116157778A (zh) 共享物理主机上混合集中分布式调度的系统和方法
EP3430510B1 (en) Operating system support for game mode
CN114595041A (zh) 资源调度系统以及方法
CN115604273A (zh) 用于管理计算系统的方法、设备和程序产品
EP4109255A1 (en) Scheduling in a container orchestration system utilizing hardware topology hints
CN115904673B (zh) 云计算资源并发调度方法、装置、系统、设备及介质
CN117579619A (zh) 数据下载方法、装置、设备及存储介质
CN108206745B (zh) 业务的操作方法、装置及云计算系统
KR20160114269A (ko) 가상 클러스터 배치 방법 및 이를 제공하기 위한 장치
CN116610422A (zh) 一种任务调度方法、装置和系统
CN117891589A (zh) 异构硬盘的分配方法、装置、设备及计算机可读存储介质
CN115756874A (zh) 多机房作业调度方法、装置、介质及电子设备
KR20110112640A (ko) 태스크의 실시간 처리를 위한 큐 관리 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant