KR101880452B1 - 커널 수행 순서 스케줄링 방법 및 장치 - Google Patents

커널 수행 순서 스케줄링 방법 및 장치 Download PDF

Info

Publication number
KR101880452B1
KR101880452B1 KR1020120011723A KR20120011723A KR101880452B1 KR 101880452 B1 KR101880452 B1 KR 101880452B1 KR 1020120011723 A KR1020120011723 A KR 1020120011723A KR 20120011723 A KR20120011723 A KR 20120011723A KR 101880452 B1 KR101880452 B1 KR 101880452B1
Authority
KR
South Korea
Prior art keywords
kernels
kernel
execution
progress index
scheduling
Prior art date
Application number
KR1020120011723A
Other languages
English (en)
Other versions
KR20130091368A (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 KR1020120011723A priority Critical patent/KR101880452B1/ko
Priority to US13/672,085 priority patent/US9244733B2/en
Priority to JP2013020760A priority patent/JP6211272B2/ja
Publication of KR20130091368A publication Critical patent/KR20130091368A/ko
Application granted granted Critical
Publication of KR101880452B1 publication Critical patent/KR101880452B1/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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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
    • 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

마이크로 아키텍쳐를 사용하는 컴퓨터 환경에서 데이터 처리 및 특정 기능을 수행하는 응용 프로그램의 실시간성을 보장하는 방법 및 장치에 관한 것으로, 커널 수행 순서 스케줄링 장치는 유효 프로그레스 인덱스(EPI, Effective Progress Index)에 기초하여 커널의 수행 시간을 추정하고, 커널들의 추정된 수행 시간 및 상기 커널들의 우선순위에 기초하여 상기 커널들의 수행 순서를 결정한다.

Description

커널 수행 순서 스케줄링 방법 및 장치{APPARATUS AND METHOD FOR SCHEDULING KERNEL EXECUTION ORDER}
기술분야는 마이크로 아키텍쳐를 사용하는 컴퓨터 환경에서 데이터 처리 및 특정 기능을 수행하는 응용 프로그램의 정밀한 성능 예측을 통하여 실시간성을 보장하는 방법 및 장치에 관한 것이다.
개인 휴대 단말의 보급과 정보 처리 요구량이 증가함에 따라 컴퓨팅 기기들은 점점 복잡하고, 다양한 응용들을 동시에 처리해야 하는 상황에 놓여 있다. 또한, 실시간 처리를 요구하는 멀티미디어와 같은 어플리케이션이 증가함에 따라, 컴퓨팅 기기들의 시스템 성능에 대한 요구량도 점점 증가하고 있으며, 단일 프로세서 만으로는 어플리케이션을 효율적으로 처리할 수 없는 상황에 놓여 있다.
이러한 상황을 극복하기 위해 반도체 집적기술의 발달과 멀티 프로세서 컴퓨팅 기술이 등장하였다. 멀티 프로세서를 사용하는 경우 단일 프로세서보다 에너지 효율 및 성능향상에 있어서 많은 이점이 있다.
그러나 다중 코어 상에서 동시에 수행되는 응용 프로그램의 특성에 따라, 예상하지 못한 공유 자원 사용의 충돌이 발생하고, 충돌로 인하여 성능이 저하되는 문제가 발생한다.
일 측면에 있어서, 커널 수행 순서 스케줄링 장치는 유효 프로그레스 인덱스(EPI, Effective Progress Index)에 기초하여 커널의 수행 시간을 추정하는 추정부 및 커널들의 추정된 수행 시간 및 상기 커널들의 우선순위에 기초하여 상기 커널들의 수행 순서를 결정하는 제어부를 포함한다.
상기 제어부는 상기 커널들의 스케줄링 방식이 선점(preemptive) 방식인 경우, 상기 커널들의 데드라인(deadline) 시간에 기초하여 상기 커널들의 수행 순서를 스케줄링하는 선점 스케줄링부를 포함할 수 있다.
상기 제어부는 상기 커널들의 스케줄링 방식이 비선점(non??preemptive) 방식인 경우, 상기 커널들의 추정된 수행 시간에 기초하여 소정 크기의 윈도우 단위로 상기 커널들의 수행 순서를 스케줄링하는 비선점 스케줄링부를 포함할 수 있다.
상기 비선점 스케줄링부는 커맨드 큐(command queue)에 입력된 순서, 상기 커널들의 우선순위 및 상기 커널들의 추정된 수행 시간에 기초하여 상기 커널들의 수행이 일정한 시간 간격의 타임 슬롯들로 구성된 윈도우 내에서 완료되도록 상기 커널들의 수행 순서를 스케줄링 할 수 있다.
상기 비선점 스케줄링부는 상기 커널들의 추정된 수행 시간에 기초하여 상기 윈도우 내에서 수행이 완료될 수 있는 커널이 우선적으로 수행되도록 상기 커널들의 수행 순서를 스케줄링 할 수 있다.
상기 제어부는 상기 커널들 중 응용 프로그램의 특성에 따라 주기적으로 수행되는 커널에 대해서는 수행 주기에 해당하는 윈도우의 타임 슬롯들을 예약하고, 나머지 타임 슬롯들에 다른 커널들의 수행 순서를 스케줄링하는 예약 스케줄링부를 더 포함할 수 있다.
상기 제어부는 윈도우 내에서 남은 타임 슬롯들이 커널의 추정된 수행 시간보다 작은 경우에, 상기 윈도우의 크기를 상기 커널의 추정된 수행 시간만큼 변경하는 윈도우 변경부를 더 포함할 수 있다.
상기 윈도우 변경부는 상기 윈도우의 크기의 변경을 요청한 커널이 커맨드 큐에 저장된 커널들 중에서 우선순위가 가장 크고, 요청된 변경의 크기가 기 설정된 윈도우 변경 범위에 포함되고, 상기 윈도우의 크기 변경 요청이 기 설정된 횟수의 범위에서 이루어진 경우에 상기 윈도우의 크기를 변경할 수 있다.
상기 추정부는 상기 커널의 최종 유효 프로그레스 인덱스, 상기 커널이 수행되는 환경의 영향을 나타내는 최종 메모리 프로그레스 인덱스 및 최종 커널 프로그레스 인덱스에 기초하여 상기 커널의 수행 시간을 추정할 수 있다.
상기 추정부는 응용 프로그램을 수행하는 과정에서 반복적으로 수행되는 커널의 히스토리에 기초하여 상기 유효 프로그레스 인덱스, 메모리 프로그레스 인덱스 및 커널 프로그레스 인덱스를 추정하는 프로그레스 인덱스 추정부를 포함할 수 있다.
상기 추정부는 물리 프로그레스 인덱스, 상기 유효 프로그레스 인덱스, 상기 커널의 메모리 효율 및 수행할 커널들에 대한 메모리 효율의 변화량에 기초하여 최종 메모리 프로그레스 인덱스를 추정하는 메모리 프로그레스 인덱스 추정부 및 물리 프로그레스 인덱스, 상기 유효 프로그레스 인덱스, 상기 커널에 대한 운영체제의 효율 및 수행할 커널들에 대한 상기 운영체제의 효율의 변화량에 기초하여 최종 커널 프로그레스 인덱스를 추정하는 커널 프로그레스 인덱스 추정부를 더 포함할 수 있다.
상기 추정부는 단독으로 수행되는 커널의 메모리 효율 및 공동으로 수행되는 커널들의 메모리 효율에 기초하여 상기 메모리 효율의 변화량을 추정하는 제1 변화량 추정부 및 단독으로 수행되는 커널에 대한 운영체제의 효율 및 공동으로 수행되는 커널들에 대한 운영체제의 효율에 기초하여 상기 운영체제의 효율의 변화량을 추정하는 제2 변화량 추정부를 더 포함할 수 있다.
상기 추정부는 상기 커널의 비유효 사이클 및 상기 메모리 프로그레스 인덱스에 기초하여 상기 메모리 효율을 추정하는 메모리 효율 추정부 및 상기 커널의 비유효 사이클 및 상기 커널 프로그레스 인덱스에 기초하여 상기 운영체제의 효율을 추정하는 운영체제 효율 추정부를 더 포함할 수 있다.
상기 프로그레스 인덱스 추정부는 상기 커널을 구성하는 데이터의 크기 및 상기 데이터의 병렬화 레벨에 기초하여 초기 유효 프로그레스 인덱스와 상기 유효 프로그레스 인덱스 간의 상관함수를 계산하는 유효 상관함수 계산부, 상기 커널을 구성하는 데이터의 크기 및 상기 데이터의 병렬화 레벨에 기초하여 초기 메모리 프로그레스 인덱스와 상기 메모리 프로그레스 인덱스 간의 상관함수를 계산하는 메모리 상관함수 계산부 및 상기 커널을 구성하는 데이터의 크기 및 상기 데이터의 병렬화 레벨에 기초하여 초기 커널 프로그레스 인덱스와 상기 커널 프로그레스 인덱스 간의 상관함수를 계산하는 커널 상관함수 계산부를 포함할 수 있다.
다른 일 측면에 있어서, 커널 수행 순서 스케줄링 장치는 유효 수행 방식으로 수행되는 명령어의 수행 시간을 누적하여 상기 유효 프로그레스 인덱스를 생성하는 유효 프로그레스 카운터(EPC, Effective Progress Counter), 상기 커널이 공유 메모리에 접근하는데 소모된 사이클을 누적하여 메모리 프로그레스 인덱스(MPI, Memory Progress Index)를 생성하는 메모리 프로그레스 카운터(MPC, Memory Progress Counter) 및 시스템 커널 수행에 소모된 사이클을 누적하여 커널 프로그레스 인덱스(KPI, Kernel Progress Index)를 생성하는 커널 프로그레스 카운터(KPC, Kernel Progress Counter)를 더 포함할 수 있다.
일 측면에 있어서, 커널 수행 순서 스케줄링 방법은 유효 프로그레스 인덱스(EPI, Effective Progress Index)에 기초하여 커널의 수행 시간을 추정하는 단계 및 커널들의 추정된 수행 시간 및 상기 커널들의 우선순위에 기초하여 상기 커널들의 수행 순서를 결정하는 단계를 포함한다.
상기 결정하는 단계는 커맨드 큐(command queue)에 입력된 순서, 상기 커널들의 우선순위 및 상기 커널들의 추정된 수행 시간에 기초하여 상기 커널들의 수행이 일정한 시간 간격의 타임 슬롯들로 구성된 윈도우 내에서 완료되도록 상기 커널들의 수행 순서를 결정할 수 있다.
상기 추정하는 단계는 상기 커널의 최종 유효 프로그레스 인덱스, 상기 커널이 수행되는 환경의 영향을 나타내는 최종 메모리 프로그레스 인덱스 및 최종 커널 프로그레스 인덱스에 기초하여 상기 커널의 수행 시간을 추정할 수 있다.
상기 추정하는 단계는 응용 프로그램을 수행하는 과정에서 반복적으로 수행되는 커널의 히스토리에 기초하여 상기 유효 프로그레스 인덱스, 메모리 프로그레스 인덱스 및 커널 프로그레스 인덱스를 추정하는 단계를 포함할 수 있다.
상기 추정하는 단계는 물리 프로그레스 인덱스, 상기 유효 프로그레스 인덱스, 상기 커널의 메모리 효율 및 수행할 커널들에 대한 메모리 효율의 변화량에 기초하여 최종 메모리 프로그레스 인덱스를 추정하는 단계 및 물리 프로그레스 인덱스, 상기 유효 프로그레스 인덱스, 상기 커널에 대한 운영체제의 효율 및 수행할 커널들에 대한 상기 운영체제의 효율의 변화량에 기초하여 최종 커널 프로그레스 인덱스를 추정하는 단계를 더 포함할 수 있다.
커널의 수행 시간을 비교적 정확하게 추정함으로써, 소정의 타임 슬롯으로 구성된 윈도우 기반으로 커널 스케줄의 실시간성을 보장할 수 있다.
응용 프로그램의 고유한 수행 특성 지표인 유효 프로그레스 인덱스, 시스템 환경에 따른 성능 지표인 메모리 프로그레스 인덱스 및 커널 프로그레스 인덱스를 이용함으로써, 커널의 수행 시간을 추정할 수 있다.
커널의 추정된 수행 시간에 기초하여 커널의 응답 레이턴시(latency)를 보장하기 위한 실시간 스케줄링을 수행할 수 있다.
시스템의 성능 및 응용 프로그램의 특성을 고려하여 윈도우의 크기를 확장시킴으로써, 타임슬롯의 활용율을 높일 수 있다.
커널의 추정된 수행 시간 및 윈도우 기반의 스케줄링을 이용함으로써, 이기종 다중 코어 방식의 프로그램에서 커널 수행의 성능을 보장하면서, 실시간 성을 요청하는 커널의 응답 속도를 보장할 수 있다.
도 1은 일반적인 응용 프로그램이 수행되는 컴퓨팅 환경을 나타낸 도면이다.
도 2는 일 실시예에 따른 유효 프로그레스 인덱스의 개념을 나타낸 도면이다.
도 3은 일 실시예에 따른 커널 수행 순서 스케줄링 방법이 적용될 수 있는 호스트와 디바이스로 구성된 이기종 컴퓨팅 환경 시스템을 나타낸 도면이다.
도 4는 일 실시예에 따른 커널 수행 순서 스케줄링 장치의 블록도이다.
도 5는 일반적인 커널의 수행 방식을 나타낸 도면이다.
도 6은 일 실시예에 따른 커널 수행 순서 스케줄링 방식을 나타낸 도면이다.
도 7은 일 실시예에 따른 커널 수행 순서 스케줄링 방법에 사용되는 윈도우 및 타임 슬롯을 나타낸 도면이다.
도 8은 다른 일 실시예에 따른 커널 수행 순서 스케줄링 방식을 나타낸 도면이다.
도 9는 또 다른 일 실시예에 따른 커널 수행 순서 스케줄링 방식을 나타낸 도면이다.
도 10은 또 다른 일 실시예에 따른 커널 수행 순서 스케줄링 방식을 나타낸 도면이다.
도 11은 일 실시예에 따른 커널 수행 순서 스케줄링 방법의 흐름도이다.
이하, 일측에 따른 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
OpenCL(Open Computing Language) 및 OpenGL(Open Graphics Library)과 같은 개방형 병렬 플랫폼의 경우, 이기종 컴퓨팅 환경에서, 호스트가 디바이스의 컴퓨팅 자원을 활용하여 프로그램을 작성할 수 있는 플랫폼을 제공한다.
이기종 컴퓨팅 환경은 호스트(Host) 프로세서와 컴퓨팅 디바이스가 버스(Bus)와 같은 상호접속(interconnection)으로 연결되어 있는 환경을 의미한다. 호스트 프로세서는 컴퓨팅 디바이스에서 수행할 프로그램을 버스를 통하여 전달할 수 있다. 이때, 컴퓨팅 디바이스에서 수행할 프로그램을 일반적으로 커널이라고 한다.
호스트 프로세서는 커널의 수행을 위해 컴퓨팅 디바이스로 커맨드(command)를 전송한다. 이때, 일반적으로 커널의 수행은 FIFO(First In First Out) 방식으로 수행되기 때문에, 커널의 우선순위를 보장하거나, 커널의 응답 레이턴시(latency)를 보장하기 어렵다.
GPU(Granphic Processing Unit)의 활용 범위가 광범위해지고, 범용적인 응용 프로그램의 가속을 위한 목적으로 사용되면서, 우선순위 기반의 커널 스케줄링 또는 실시간성 보장의 커널 스케줄링이 필요하다. 또한, 일반적인 GPU의 경우, 커널 수행 방식이 비선점(non??preemptive) 방식이므로, 비선점 방식을 고려한 시실가 스케줄링이 필요하다.
또한, 수행되는 응용 프로그램의 정확한 성능 및 진행이 측정 가능하면 측정된 값을 지표화하여 실시간 스케줄링, 성능 개선, 부하 균형 및 저전력 관리를 위해 응용 프로그램의 현 상태를 나타내는 정보로 활용할 수 있다.
또한, 시스템에서 공유 되는 자원들에 대한 충돌 상태를 효율적으로 모니터링하고, 지표화할 수 있다면, 지표는 응용 프로그램의 수행에 필요한 자원할당, 재분배 및 스케줄링을 결정함에 있어서 중요한 정보로 활용될 수 있다. 문제는 어떠한 지표를 생성하여 효율적으로 자원을 분배할 것인가에 있다.
런타임 성능 저하를 발생시키지 않으면서 응용 프로그램의 상태를 정확하고 정밀하게 측정하는 것은 용이하지 않다. 또한, 응용 프로그램의 수행을 구성하는 명령어들의 수행 시간은 일정하지 않다. 또한, 응용 프로그램의 수행시 함께 수행되는 다른 응용 프로그램들의 예상하지 못한 영향으로 인하여, 응용 프로그램의 상태에 대한 정확한 측정은 쉽지 않다.
단일 응용 프로그램이 수행되는 경우에도 단일 응용을 구성하는 여러 스레드들이 함께 수행되면 서로 영향을 미치게 되며, 하나의 스레드로 구성된 경우에도 스레드를 구성하는 명령어들의 수행시간이 일정하지 않기 때문에 응용 프로그램의 상태 측정이 어렵다.
또한, 다중 코어 상에서 응용 프로그램의 동시 수행으로 인한 공유자원 접근 시 충돌 문제가 발생한다. 특히, 공유 메모리 접근 시 발생하는 충돌로 인하여 시스템의 성능저하가 심해진다. 따라서, 다중코어 상에서 시스템의 수행 상태를 정확하게 모니터링하고, 공유된 자원의 충돌 상태를 모니터링 하여 모니터링 결과를 지표화할 필요가 있다. 이러한 지표들을 활용하여 커널들의 수행을 제어할 수 있다.
도 1은 일반적인 응용 프로그램이 수행되는 컴퓨팅 환경을 나타낸 도면이다.
일반적으로 응용 프로그램은 프로세서 상에서 메모리와 하드웨어 디바이스를 자원으로 하여 정해진 기능을 수행한다. 메모리는 보통의 경우 계층적 구조를 가진다. 이때, 접속(access) 속도가 빠른 메모리는 로컬 버스에 구비되고, 접속 속도는 느리지만 저렴한 메모리는 시스템 버스상에 구비될 수 있다. 또한, 다중 프로세서는 높은 성능의 요구사항을 만족시키기 위해 하나의 시스템에 여러 개의 프로세서들이 집적된 것으로, 응용 프로그램을 병렬처리 한다.
일반적으로 응용 프로그램은 하나 이상의 스레드로 구성된다. 하나의 프로세서 상에서 다중 스레드가 수행될 수 있다. 하나의 프로세서 상에서 다중 스레드가 수행되는 것을 멀티 스레딩이라고 한다. 응용 프로그램의 성능 및 진행 상태를 측정하기 위해서는 응용 프로그램을 구성하는 스레드의 성능 및 진행 상태를 측정할 수 있어야 한다.
도 1은 일반적으로 구성될 수 있는 컴퓨팅 환경의 일 예이며, 일측에 따른 커널 수행 순서 스케줄링 장치의 적용 환경은 도 1에 도시된 예에 한정되지 않는다.
도 2는 일 실시예에 따른 유효 프로그레스 인덱스의 개념을 나타낸 도면이다.
응용 프로그램은 복수의 스레드들로 구성될 수 있다. 스레드는 특정 기능을 수행하기 위한 명령어들로 구성될 수 있다. 명령어의 수행 방식은 유효 수행(effective execution) 방식 및 비 유효 수행(noneffective execution) 방식으로 구분될 수 있다.
명령어의 수행 방식이 유효 수행 방식인 경우, 명령어의 수행 완료 시점 또는 명령어 그룹의 수행완료 시점은 일정한 사이클을 갖는다. 유효 수행 방식으로 수행되는 명령어들은 대부분 프로세서의 외부 상황과는 독립적으로 수행된다. 또한, 유효 수행 방식으로 수행되는 명령어들은 해당 명령어들의 수행 사이클들이 프로그램 진행을 위해서 반드시 필요하다. 또한, 해당 명령어들의 수행 사이클들은 응용 프로그램의 목적에 유효한 명령어들을 수행하는데 필요한 프로세서 사이클들로 측정될 수 있다.
반면, 명령어의 수행 방식이 비 유효 수행 방식인 경우, 명령어 혹은 명령어 그룹의 수행 완료 시점은 일정하지 않은 지연 사이클을 갖는다. 비 유효 수행 방식으로 수행되는 명령어들의 대부분은 입출력단, 메모리 등과 같이 공유되는 자원을 사용해야 하는 경우들이다. 프로세서에서 비 유효 수행 방식의 명령어들이 수행되는 경우, 해당 명령어들의 수행이 완료되기 위해서는 수십 사이클의 지연이 요구될 수 있다. 이러한 지연은 해당 명령어의 수행 시, 프로세서가 접근하려는 공유 자원을 다른 프로세서에서 사용하는 경우 발생할 수 있다. 공유 자원에 다른 프로세서와 동시 접속함으로써 충돌이 발생하고, 충돌로 인하여 지연이 발생할 수 있다.
도 2를 참조하면, 스레드가 수행되는 물리적 시간(Physical time)은 일정하게 증가한다. 이때, 물리적 시간의 증가는 RPI(Real Progress Index, 이하 RPI라 함)로 표시될 수 있다.
유효 수행(effective execution) 방식의 명령어들은 동일한 수행 시간 내에 명령어들이 완료된다. 반면에 비 유효 수행(Noneffective execution) 방식의 명령어들은 다른 스레드들의 수행에 의하여 영향을 받거나, 수행시점에 따라 발생하는 상황 때문에 명령어들의 수행 완료시간이 일정하지 않게 된다.
비 유효 수행은 프로세서의 명령어 수준에서 비 유효 수행을 하는 하드웨어 비 유효 수행(Hardware Noneffective execution, 이하 HWNE라 함)과 명령어들로 구성된 함수 또는 시스템의 커널 수준에서 응용 프로그램의 수행 중에 발생하는 이벤트들로 비 유효 수행을 하는 소프트웨어 비 유효 수행(Software noneffective execution, 이하 SWNE라 함)으로 구분된다. 여기서 시스템의 커널은 일반적인 사용자 응용 프로그램이 아닌 운영체제를 구성하는 시스템 프로그램을 의미할 수 있다. HWNE와 SWNE는 기 설정된 기준에 따라 구분될 수 있다.
실제 스레드의 수행 시간에서 SWNE와 HWNE를 제외한 나머지 부분의 수행 시간은 모두 유효한 수행 시간이라고 할 수 있다. 스레드의 수행에서 SWNE와 HWNE를 제외한 나머지 부분을 수행하는데 필요한 사이클은 매번 동일한 값을 가지므로 SWNE와 HWNE를 제외한 나머지 부분을 지표화하면 스레드의 유효한(effective) 수행 지표로 활용할 수 있다. 여기서 유효한 수행 시간을 나타내는 지표를 유효 프로그레스 인덱스(Effective Progress Index, 이하 EPI라 함)라고 정의한다. EPI는 다음의 수식으로 표현될 수 있다.
P스레드 = P유효 수행 + P비유효 수행
τ유효 스레드 프로그레스 = τ물리적 - (τSWNE + τHWNE)
여기서 응용 프로그램을 구성하는 프로그램 P스레드 는 유효 수행(P유효 수행)과 비유효 수행(P비유효 수행)으로 구분될 수 있다. 스레드의 유효 프로그레스를 나타내는 시간(τ유효 스레드 프로그레스)은 스레드가 수행되는 물리적 시간(τ물리적) 중에서 SWNE 수행 시간(τSWNE)과 HWNE 수행 시간(τHWNE)을 제거하면 된다.
HWNE에 해당하는 명령어들은 공유 자원으로의 접근이 필요한 명령어들이다. 이러한 명령어들의 수행 사이클은 외부 I/O(Input/Output) 또는 메모리 접근 지연에 따른 사이클을 포함할 수 있다. 스레드의 수행 중 외부 I/O(Input/Output) 또는 메모리 접근 지연에 소모된 사이클을 스레드 별로 누적 관리한 지표를 메모리 프로그레스 인덱스(MPI, Memory Progress Index)라고 정의한다.
스레드의 수행 중 시스템의 이벤트를 운영체제의 커널에서 처리하기 위해 소모되는 사이클을 커널 프로그레스 인덱스(KPI, Kernel Progress Index)라고 정의한다. 커널 프로그레스 인덱스는 인터럽트, 스레드 컨텍스트 스위치(context switch) 및 멀록(malloc) 등의 시스템 함수 호출에 따른 커널 공유 자원의 접근 충돌에 따라 측정될 수 있다.
SWNE 및 HWNE를 수행하는 동안 실제 물리적인 시간이 증가하더라도 EPI는 증가하지 않는다. 따라서 EPI 값은 스레드의 수행에 있어서 절대적인 진행 위치를 나타내는 지표로 사용할 수 있다. EPI가 중요한 이유는 실제 응용 프로그램을 구성하는 스레드들의 프로세서 점유율이 아닌, 실제 응용 프로그램의 진행상태를 정확하게 나타낼 수 있기 때문이다.
스레드의 수행에 있어서 SWNE 및 HWNE는 기 설정된 기준에 의해 판단될 수 있다. 기 설정된 기준은 현재까지 측정된 명령어 또는 명령어들로 구성된 함수의 수행시간이 일정한 경우와 일정하지 않은 경우를 고려하여 정의될 수 있다. 다만, 기 설정된 기준은 정의될 수 있는 SWNE 및 HWNE의 일 예일뿐 이에 한정되지 않으며 일측에 따른 발명이 속하는 분야에서 통상의 지식을 가진 자가 용이하게 유추할 수 있는 범위를 포함할 수 있다.
다음의 표 1에서 SWNE 및 HWNE의 일 예가 분류되어 있다.
종류


SWNE
스케쥴 타임 러닝 상태를 제외한 모든 스레드 상태
이벤트 또는 타이머 대기(EventWait(), sleep(),…)
인터럽트 관리 인터럽트 관리 명령어
인터럽스 서비스 루틴
동적 자원 할당 메모리 할당/비할당
스레드 생성/종료
비유효 사용자 함수 비지 웨이팅(Busy waiting)
비유효 외부 디바이스 접속 하드웨어 디바이스를 위한 블록 접속(Blocked access)
기타

HWNE
외부 메모리 접속 DRAM 접속
캐시 미스(Cache miss) 명령어/데이터 캐시 미스
브랜치(Branch) 동적 브랜치 예측(Dynamic branch prediction)
기타
표 1에서 비지 웨이팅은 I/O Access를 위한 Polling 방식의 접근 형태에서 실제 I/O를 통한 데이터 송수신의 경우에는 SWNE에 해당하지 않는다. 비지 웨이팅은 I/O의 상태를 체크하기 위해 "반복적"으로 코드를 수행하는 경우에만 SWNE에 해당한다. SWNE 및 HWNE는 표 1에 예시된 경우가 아니더라도 스레드의 기능을 수행하는데 있어서 유효하지 않은 모든 수행 구간을 포함할 수 있다.
RPI는 스레드가 프로세서에서 수행중 누적된 프로세서 사이클의 누적 값을 의미할 수 있다. 또한, RPI는 스레드의 프로세서 점유율을 나타내는 지표로 사용될 수 있다.
EPI는 스레드의 프로세서 사이클 수준에서 카운트 된 유효 수행 사이클의 누적 값을 의미할 수 있다. 또한, EPI는 스레드의 유효 진행 상태를 나타내는 지표로 사용될 수 있다.
MPI는 스레드의 수행중 공유 자원 접근 충돌에 의해 스톨(Stall)되거나 소모된 사이클의 누적 값을 의미할 수 있다. 또한, MPI는 공유 자원으로의 접근 및 충돌 발생 정도를 나타내는 지표로 사용될 수 있다.
KPI는 스레드의 수행중 시스템 커널 수행에 의해 발생하는 비 유효 사이클의 누적 값을 의미할 수 있다. 또한, KPI는 시스템 커널에서 공유하는 자원으로의 접근 및 충돌 발생 정도를 나타내는 지표로 사용될 수 있다.
각각의 지표들을 활용하여 응용 프로그램을 구성하는 스레드들의 상태가 분석될 수 있다. 예를 들면, EPI와 RPI의 차이를 이용하여 응용 프로그램의 프로세서 점유율 대비 실제 응용 프로그램의 진행 상태를 파악할 수 있다.
EPI는 커널이 수행되는 환경으로부터 독립적인 특성을 갖는다. 즉, 동일한 입력에 대하여 수행 환경에 관계없이 항상 동일한 출력을 가지는 지표이다. 따라서, 시스템과 분리된 상황에서 응용 프로그램의 수행 특성을 나타낼 수 있다.
이기종 컴퓨팅 시스템의 디바이스에서 수행되는 커널은 상기 기술된 스레드에 대응한다. 따라서, 일 실시예에 따른 커널 수행 순서 스케줄링 장치는 상기 기술된 스레드의 EPI, MPI, KPI, RPI를 커널에 적용함으로써, 커널의 수행 성능을 모니터링 할 수 있다.
보다 구체적으로 이기종 컴퓨팅 시스템의 디바이스에서 수행되는 커널에 적용되는 EPI, MPI, KPI는 다음의 의미를 가질 수 있다. EPI는 응용 프로그램이 수행될 시스템의 변화로부터 독립된 응용 프로그램 자채와 프로세서 자체의 수행특성을 나타내는 지표이다. MPI는 시스템 구성 중 메모리의 구조적 특성을 반영하고, 메모리 레이턴시(latency) 및 충돌(collision) 등의 수행특성을 반영한 지표이다. KPI는 시스템의 운영체제의 특성을 반영한 지표로서, 커널의 자원 사용, 동기화 및 공유 자원 할당에 따른 운영체제의 응답 속도 등을 반영한 성능 지표이다.
도 3은 일 실시예에 따른 커널 수행 순서 스케줄링 방법이 적용될 수 있는 호스트와 디바이스로 구성된 이기종 컴퓨팅 환경 시스템을 나타낸 도면이다.
도 3을 참조하면, 호스트는 복수의 CPU들로 구성될 수 있고, 디바이스(310)는 복수의 ME(Micro Execution unit)들로 구성될 수 있다.
호스트는 디바이스(310)에서 커널을 수행하기 위해 커널을 수행하기 위한 커맨드(command)를 디바이스로 전송한다. 전송된 커맨드는 커맨드 큐(command queue)에 푸쉬(push)되고, 디바이스에 의해 팝(pop)되어 해당 커널이 수행된다.
일반적인 경우 커맨드 큐에 푸쉬된 커맨드는 FIFO(First In First Out)방식에 의해 팝되며, 우선순위를 고려하거나 레이턴시(latency)가 고려되지 않는다. 따라서, 높은 우선순위의 커널은 커맨드 큐에 먼저 푸쉬되어 수행되고 있는 낮은 우선순위의 커널 때문에 처리되지 못하고, 커맨드 큐에 펜딩(pending) 상태로 머문다.
우선순위 및 레이턴시를 고려한 커널 스케줄링을 위해서는 커맨드 큐에 푸쉬된 커널들의 우선 순위와 데드라인(deadline)을 고려하여, 커맨드 큐에서 커널들의 수행 순서를 재구성함으로써 구현될 수 있다. 데드라인은 해당 커널의 동작을 완료하기 위한 제한 시간을 의미할 수 있다.
데드라인 기반의 커널 수행 순서를 재구성하기 위해서는 커맨드 큐에 푸쉬된 커널들의 수행 시간을 알아야 하는데, 이때 앞서 기술된 EPI, MPI, KPI가 사용될 수 있다.
도 4는 일 실시예에 따른 커널 수행 순서 스케줄링 장치의 블록도이다.
도 4를 참조하면, 커널 수행 순서 스케줄링 장치는 추정부(410), 제어부(430), 유효 프로그레스 카운터(440), 메모리 프로그레스 카운터(450) 및 커널 프로그레스 카운터(460)를 포함한다.
추정부(410)는 유효 프로그레스 인덱스(EPI, Effective Progress Index)에 기초하여 커널의 수행 시간을 추정한다. 보다 구체적으로 추정부(410)는 커널의 최종 유효 프로그레스 인덱스, 커널이 수행되는 환경의 영향을 나타내는 최종 메모리 프로그레스 인덱스 및 최종 커널 프로그레스 인덱스에 기초하여 커널의 수행 시간을 추정할 수 있다.
최종 유효 프로그레스 인덱스, 최종 메모리 프로그레스 인덱스 및 최종 커널 프로그레스 인덱스의 합이 커널의 수행시간으로 추정될 수 있다.
제어부(430)는 추정부(410)에서 추정된 수행 시간 및 커널들의 우선순위에 기초하여 커널들의 수행 순서를 결정할 수 있다.
추정부(410)는 프로그레스 인덱스 추정부(420), 메모리 프로그레스 인덱스 추정부(411), 커널 프로그레스 인덱스 추정부(412), 제1 변화량 추정부(413), 제2 변화량 추정부(414), 메모리 효율 추정부(415) 및 운영체제 효율 추정부(416)를 포함할 수 있다.
프로그레스 인덱스 추정부(420)는 응용 프로그램을 수행하는 과정에서 반복적으로 수행되는 커널의 히스토리에 기초하여 유효 프로그레스 인덱스, 메모리 프로그레스 인덱스 및 커널 프로그레스 인덱스를 추정할 수 있다.
응용 프로그램이 수행되면, 반복적으로 수행되는 커널이 있다. 프로그레스 인덱스 추정부(420)는 커널이 반복적으로 수행될 때마다 유효 프로그레스 인덱스, 메모리 프로그레스 인덱스 및 커널 프로그레스 인덱스를 추정할 수 있다. 프로그레스 인덱스 추정부(420)는 반복 전의 유효 프로그레스 인덱스와 반복 후의 유효 프로그레스 인덱스를 비교하여, 둘 사이의 상관관계를 계산할 수 있다. 프로그레스 인덱스 추정부(420)는 메모리 프로그레스 인덱스 및 커널 프로그레스 인덱스에 대해서도 상관관계를 계산할 수 있다.
메모리 프로그레스 인덱스 추정부(411)는 물리 프로그레스 인덱스(RPI), 유효 프로그레스 인덱스(EPI), 커널의 메모리 효율(ME, Memory Efficiency) 및 수행할 커널들에 대한 메모리 효율의 변화량(ΔME)에 기초하여 최종 메모리 프로그레스 인덱스를 추정할 수 있다.
커널 프로그레스 인덱스 추정부(412)는 물리 프로그레스 인덱스(RPI), 유효 프로그레스 인덱스(EPI), 커널에 대한 운영체제의 효율(KE, Kernel Efficiency) 및 수행할 커널들에 대한 운영체제의 효율의 변화량(ΔKE)에 기초하여 최종 커널 프로그레스 인덱스를 추정할 수 있다.
제1 변화량 추정부(413)는 단독으로 수행되는 커널의 메모리 효율 및 공동으로 수행되는 커널들의 메모리 효율에 기초하여 메모리 효율의 변화량을 추정할 수 있다.
제2 변화량 추정부(414)는 단독으로 수행되는 커널에 대한 운영체제의 효율 및 공동으로 수행되는 커널들에 대한 운영체제의 효율에 기초하여 운영체제의 효율의 변화량을 추정할 수 있다.
메모리 효율 추정부(415)는 커널의 비유효 사이클 및 메모리 프로그레스 인덱스에 기초하여 메모리 효율을 추정할 수 있다.
EPI와 RPI의 차이를 스레드의 비유효 사이클(Tne)이라고 정의할 수 있다.
메모리 효율 추정부(415)는 비유효 사이클(Tne)과 MPI를 이용하여 커널의 메모리 효율(ME)을 계산할 수 있다. 이때, 메모리 효율(Memory Efficiency, ME)은 다음과 같이 정의할 수 있다. ME=1-(MPI/Tne), ME는 커널 간에 공유되는 메모리 중에서 충돌하지 않고 유효하게 사용되는 구간의 비율을 나타내는 지표로 사용될 수 있다.
운영체제 효율 추정부(416)는 커널의 비유효 사이클 및 커널 프로그레스 인덱스에 기초하여 운영체제의 효율을 추정할 수 있다.
운영체제 효율 추정부(416)는 비유효 사이클(Tne)과 KPI를 이용하여 커널에 대한 운영체제의 효율(KE)을 계산할 수 있다. 이때, 커널에 대한 운영체제의 효율(Kernel Efficiency, KE)는 다음과 같이 정의할 수 있다. KE=1-(KPI/Tne), KE는 운영체제 수행 구간 중 커널 공유 자원에서 충돌하지 않고 유효하게 사용되는 구간의 비율을 나타내는 지표로 사용될 수 있다.
ME 및 KE는 시스템 의존적인 지표이므로, 현재 수행되고 있는 커널들에 나타난 시스템의 상태를 나타낸다고 할 수 있다. 따라서 ME 및 KE를 성능 예측에 반영하여 현재 시스템 상황을 반영한 지표를 생성할 수 있다.
프로그레스 인덱스 추정부(420)는 유효 상관함수 계산부(421), 메모리 상관함수 계산부(423) 및 커널 상관함수 계산부(425)를 포함할 수 있다.
이기종 컴퓨팅 환경 시스템과 같이 개방형 프로그램을 사용하여 작성되는 응용 프로그램에서는 디바이스의 가속성이 이용될 수 있다.
이기종 컴퓨팅 환경 시스템의 호스트는 응용 프로그램을 구성하는 모듈 중 병렬 가속이 가능한 부분에 대하여, '가속에 사용되는 데이터'와 '계산하려는 명령어들'의 집합인 커널을 대상 디바이스에서 수행 가능한 코드로 컴파일 한 후, 대상 디바이스에서 해당 커널을 수행하도록 한다.
해당 커널은 응용 프로그램에서 반복적으로 수행되는 특징을 가지고 있다. 커널로서 처리해야 할 다양한 데이터 집합들이 사용될 수 있다.
프로그레스 인덱스 추정부(420)는 반복적으로 수행되는 커널에 대하여 EPI, MPI 및 KPI를 프로파일링(profiling)할 수 있다. 프로그레스 인덱스 추정부(420)는 프로파일링 된 EPI, MPI 및 KPI를 입력 데이터의 크기(이하 's'라 표기)와 입력 데이터의 병렬화 레벨(이하 'p'라 표기)에 대한 함수로 모델링 할 수 있다.
유효 상관함수 계산부(421)는 커널을 구성하는 데이터의 크기 및 데이터의 병렬화 레벨에 기초하여 초기 유효 프로그레스 인덱스와 유효 프로그레스 인덱스 간의 상관함수를 계산할 수 있다.
메모리 상관함수 계산부(423)는 커널을 구성하는 데이터의 크기 및 데이터의 병렬화 레벨에 기초하여 초기 메모리 프로그레스 인덱스와 메모리 프로그레스 인덱스 간의 상관함수를 계산할 수 있다.
커널 상관함수 계산부(425)는 커널을 구성하는 데이터의 크기 및 데이터의 병렬화 레벨에 기초하여 초기 커널 프로그레스 인덱스와 커널 프로그레스 인덱스 간의 상관함수를 계산할 수 있다.
예를 들어, t0 시간에서의 커널 수행에서 획득한 커널의 성능 지표를 KPIt0, MPIt0, EPIt0 라고 하면, 다음 커널 수행에 따른 성능 지표 KPI', MPI', EPI'는 이전 성능지표와 관계에서, 다음과 같이 표현될 수 있다. 각각의 성능 지표는 지표간 독립적인 지표이고, 이전 지표에 대한 s와p에 대한 함수로 모델링 될 수 있다.
KPI' = fk(s,p)*KPIt0
MPI' = fm(s,p)*MPIt0
EPI' = fe(s,p)*EPIt0
EPI'는 유효 수행사이클에 기반한 성능 지표로서 동일한 입력에 대하여 결정적인(deterministic) 특성을 가진다. 따라서 입력 데이터 세트에 영향을 받는 부분(Cds)과 받지 않는 부분(Cids)으로 구분될 수 있으며, EPI'는 다음과 같이 표현될 수 있다.
EPI' = Cids + f'e(s,p)*Cds
커널이 수행됨에 있어서 입력 데이터의 크기와 병렬화 레벨에 따라 실제 예상되는 수행 시간을 T'p라고 한다면, EPI', MPI', KPI'를 이용하여 다음과 같이 계산될 수 있다.
T'p = KPI' + MPI' + EPI'
프로그레스 인덱스 추정부(420)는 응용 프로그램이 수행될 타겟 시스템의 에뮬레이션을 이용하여 s와 p로 모델링 되는 EPI, KPI, MPI를 추정할 수 있다. 프로그레스 인덱스 추정부(420)는 반복 이전의 EPI, KPI, MPI와 반복 이후의 EPI, KPI, MPI를 비교하여 상관함수를 계산할 수 있다.
프로그레스 인덱스 추정부(420)는 별도로 준비된 응용 프로그램의 런닝 코드의 수행으로부터 s와 p로 모델링 되는 EPI, KPI, MPI를 추정할 수 있다. 또한, 프로그레스 인덱스 추정부(420)는 반복 이전의 EPI, KPI, MPI와 반복 이후의 EPI, KPI, MPI를 비교하여 상관함수를 계산할 수 있다.
프로그레스 인덱스 추정부(420)는 디바이스에서 커널이 반복적으로 수행되는 특성을 활용하여, 실제 커널의 수행 도중에 입력된 데이터 세트(s) 및 병렬화 레벨(p)에 대한 값들을 기록하고, 기록된 값들을 활용하여 상관함수를 계산할 수 있다.
프로그레스 인덱스 추정부(420)는 선형 보간(Linear interpolation)을 통해 상관함수를 계산할 수 있다. 프로그레스 인덱스 추정부(420)는 입력 데이터 세트의 크기(s), 병렬화 레벨(p)의 일차함수 형태로 표현된 상관함수의 계수 값을 계산할 수 있다. 계산된 계수 값은 히스토리 기반의 성능 예측을 위해 수행 커널 코드 별로 저장될 수 있고, 런타임 수행 시에 추출하여 사용될 수 있다.
디바이스에서 커널들이 동시에 수행되면 현재 수행되고 있는 커널들의 KE 및 ME가 커널 수행시간 예측에 반영될 수 있다.
예를 들어, 커널 K1, K2, K3 각각의 단독 수행에서 계산된 MPI와 KPI를 이용하여, 계산된 효율 지표가 각각 ME1, KE1, ME2, KE2, ME3, KE3 라고 가정할 수 있다. 이때 K1과 K2가 디바이스에서 현재 수행되고 있으며, 수행 중에 추정된 각각의 MPI와 KPI를 통해 계산된 효율 지표가 각각 'ME1,'KE1, 'ME2,'KE2라고 하면 K1과 K2의 공동 수행에 의해 변화된 각각의 효율이 계산될 수 있다. 각 커널에 대한 효율의 변화량은 다음과 같이 표현될 수 있다.
△ME1 = ME1-'ME1
△KE1 = KE1-'KE1
동일한 방법으로 K2에 대한 ME, KE의 변화량이 계산될 수 있다. 계산된 변화량을 커널들의 공동 수행 가능한 경우에 대해 평균하면, 디바이스에서 수행될 수 있는 커널들에 대해, 메모리 및 운영체제의 효율의 변화량이 계산될 수 있다. 메모리 효율의 변화량 및 운영체제 효율의 변화량은 다음과 같이 표현될 수 있다.
△KE = ΣKEn /n
△ME = ΣMEn /n
△KE, △ME 및 상관함수를 고려하여 시스템 상황을 반영한 최종 성능 예측 지수인 최종 커널 프로그레스 인덱스 KPI's 및 최종 메모리 프로그레스 인덱스 MPI's 가 아래와 같이 계산될 수 있다.
히스토리 기반의 성능 예측에 의해 KPI', MPI' 및 EPI' 가 추정될 수 있다. KPI', MPI' 및 EPI'를 이용하여 커널의 수행 시간 RPI'가 추정될 수 있다. 그런데, 현재 시스템의 특성을 나타내는 △KE, △ME 값이 있다면, 현재 시스템의 수행 성능 지표를 반영한 KPI's, MPI's 는 다음과 같이 계산될 수 있다.
KPI's = {1-(KE+△KE)}*(RPI' - EPI')
MPI's = {1-(ME+△ME)}*(RPI' - EPI')
시스템의 현재 성능 지표를 반영한 커널의 최종 수행시간 T'p 는 T'p = KPI's + MPI's + EPI'로 추정될 수 있다. EPI'는 시스템의 특성에 영향을 받지 않으므로, KPI's 및 MPI's 와 함께 사용될 수 있다.
유효 프로그레스 카운터(440)는 유효 수행 방식으로 수행되는 명령어의 수행 시간을 누적하여 유효 프로그레스 인덱스를 생성할 수 있다.
메모리 프로그레스 카운터(Memory Progress Counter, 이하 MPC라 함 (450)는 커널이 공유 메모리에 접근하는데 소모된 사이클을 누적하여 메모리 프로그레스 인덱스(MPI, Memory Progress Index)를 생성할 수 있다.
커널 프로그레스 카운터(Kernel Progress Counter, 이하 KPC라 함) (460)는 커널이 프로세서를 점유하고, 시스템 커널 수행에 소모된 사이클을 누적하여 커널 프로그레스 인덱스(KPI, Kernel Progress Index)를 생성할 수 있다.
시스템 커널 수행의 예로는 인터럽트, 스레드 컨텍스트 스위치(thread context switch), malloc 등의 시스템 함수들이 있다. 이러한 시스템 함수들의 호출에 따라 커널 공유 자원으로의 접근 과정에서 충돌이 발생함으로써 비 유효 수행 구간이 발생할 수 있다.
제어부(430)는 선점 스케줄링부(431), 비선점 스케줄링부(433), 예약 스케줄링부(435) 및 윈도우 변경부(437)를 포함할 수 있다.
선점 스케줄링부(431)는 커널들의 스케줄링 방식이 선점(preemptive) 방식인 경우, 커널들의 데드라인(deadline) 시간에 기초하여 커널들의 수행 순서를 스케줄링 할 수 있다. 선점 스케줄링부(431)는 데드라인 시간이 빨리 도달하는 순서대로 커널들의 수행 순서를 스케줄링 할 수 있다.
비선점 스케줄링부(433)는 커널들의 스케줄링 방식이 비선점(non??preemptive) 방식인 경우, 커널들의 추정된 수행 시간에 기초하여 소정 크기의 윈도우 단위로 커널들의 수행 순서를 스케줄링 할 수 있다.
비선점 스케줄링부(433)는 커맨드 큐(command queue)에 입력된 순서, 커널들의 우선순위 및 커널들의 추정된 수행 시간에 기초하여 커널들의 수행이 일정한 시간 간격의 타임 슬롯들로 구성된 윈도우 내에서 완료되도록 커널들의 수행 순서를 스케줄링 할 수 있다.
비선점 스케줄링부(433)는 커널들의 추정된 수행 시간에 기초하여 윈도우 내에서 수행이 완료될 수 있는 커널이 우선적으로 수행되도록 커널들의 수행 순서를 스케줄링 할 수 있다.
예약 스케줄링부(435)는 커널들 중 응용 프로그램의 특성에 따라 주기적으로 수행되는 커널에 대해서는 수행 주기에 해당하는 윈도우의 타임 슬롯들을 예약하고, 나머지 타임 슬롯들에 다른 커널들의 수행 순서를 스케줄링 할 수 있다. 예약 스케줄링부(435)는 예약된 타임 슬롯에서는 예약 커널 외 다른 커널들이 수행되지 않도록 스케줄링 할 수 있다.
윈도우 변경부(437)는 윈도우 내에서 남은 타임 슬롯들이 커널의 추정된 수행 시간보다 작은 경우에, 윈도우의 크기를 커널의 추정된 수행 시간만큼 변경할 수 있다.
윈도우 변경부(437)는 윈도우 크기의 변경을 요청한 커널이 커맨드 큐에 저장된 커널들 중에서 우선순위가 가장 크고, 요청된 변경의 크기가 기 설정된 윈도우 변경 범위에 포함되고, 상기 윈도우의 크기 변경 요청이 기 설정된 횟수의 범위에서 이루어진 경우에 윈도우의 크기를 변경할 수 있다.
도 5는 일반적인 커널의 수행 방식을 나타낸 도면이다.
도 5를 참조하면, 커맨드 큐(Command Queue)에 입력된 순서대로 커널들 K1, K2 및 K3가 수행될 수 있다. 즉, FIFO 방식으로 커널들이 수행될 수 있다. 좀 더 구체적으로 살펴보면, 커널 K1은 Tk1동안 수행되어 데드라인 시간 Dk1을 만족한다. 커널 K2는 Tk2까지 수행되어 데드라인 시간 Dk2을 만족한다. 그런데, 커널 K3는 Tk2이후, 데드라인 시간 Dk3까지 남은 시간이 K3의 필요한 수행시간보다 짧으므로, 데드라인 시간을 만족시킬 수 없다. 데드라인 시간은 응용 프로그램이 오류 없이 실행되기 위해, 대응하는 커널이 수행되어야 할 제한 시간을 의미한다. 데드라인 시간을 만족시키지 못하면 해당 커널에 대응하는 응용 프로그램이 실행되지 않거나, 실행에 오류가 발생할 수 있다.
도 6은 일 실시예에 따른 커널 수행 순서 스케줄링 방식을 나타낸 도면이다.
도 6은 디바이스에서 수행될 커널이 선점(preemption) 가능한 경우의 일 예를 나타낸다.
커널이 선점 가능한 경우란, 커널의 수행 도중, 선순위 커널을 위해 수행 중인 커널을 멈추고 선순위 커널을 수행시키는 것이 가능한 경우를 의미한다. 디바이스는 커맨드 큐(Command queue)에 푸쉬(push)된 커널들 중에서, 추정된 커널의 데드라인 시간에 맞추어 커널들이 수행되도록 커맨드 큐를 재구성 할 수 있다.
도 5와 비교하면, K3의 데드라인 시간이 K2의 데드라인 시간보다 먼저 도래하므로, 디바이스는 K3가 K2보다 먼저 수행되도록 커맨드 큐를 재구성할 수 있다.
또한, 디바이스는 현재 수행중인 커널의 추정된 수행시간이 완료된 후에 다른 커널의 수행이 개시되어도 데드라인 시간을 만족할 수 있다면, 현재 수행중인 커널을 대치하지 않을 수 있다.
또한, 디바이스는 재구성에 의해서도 데드라인 시간을 만족하지 못하는 경우, 우선순위를 고려하여 선순위의 커널이 먼저 수행되도록 커맨드 큐를 재구성 할 수 있다.
도 7은 일 실시예에 따른 커널 수행 순서 스케줄링 방법에 사용되는 윈도우 및 타임 슬롯을 나타낸 도면이다.
디바이스에서 수행될 커널이 선점 가능하지 않은 경우(non??preemptive), 다음과 같은 문제가 발생할 수 있다.
먼저 커맨드 큐(Command Queue)에 푸쉬 된 낮은 우선 순위의 커널이, 커맨드 큐에서 디스패치(dispatch)되어 수행이 시작된 상황에서, 나중에 커맨드 큐에 푸쉬 된 높은 우선 순위의 커널은, 먼저 실행된 커널의 수행이 종료될 때까지 수행을 개시할 수 없다. 다시 말하면, 디바이스는 수행 중인 커널의 수행을 중지하고 선 순위의 커널을 수행시킬 수 없다.
디바이스는 커널 별로 디바이스를 사용할 수 있는 시간에 제한을 둘 수 있다. 커널 수행은 일정한 크기의 윈도우(Window) 단위로 관리될 수 있다.
윈도우 단위로 커널의 수행을 보장함으로써, 응용 프로그램의 실시간 스케줄링(realtime schedule)이 보장될 수 있다. 윈도우는 실시간 성을 보장하는 최소 단위로 사용될 수 있다. 윈도우의 크기를 조절하여 프로그램의 성능이 튜닝(tuning)될 수 있다.
윈도우는 일정한 시간 간격으로 구분된 타임 슬롯(Time??slot)으로 구성될 수 있다. 커널들은 타임 슬롯을 할당 받아 디바이스에서 수행될 수 있다.
커널들은 디바이스로부터 응용프로그램의 우선순위를 고려하여 윈도우 내에서 수행 가능한 타임 슬롯들을 할당 받을 수 있다. 커널들은 윈도우 내에서 할당 받은 타임 슬롯만큼 디바이스에서 수행될 수 있으며, 수행을 개시하는 시점에서 현재의 윈도우를 벗어 나는 경우 다음 윈도우에서 수행이 개시될 수 있다.
새로운 윈도우의 개시 시점에서 해당 커널 보다 높은 우선순위의 커널이 없다면 할당 받은 타임 슬롯만큼 수행될 수 있다.
도 8은 다른 일 실시예에 따른 커널 수행 순서 스케줄링 방식을 나타낸 도면이다.
도 8을 참조하면, 커널 K1, K2 및 K3는 각각, Tk1, Tk2, Tk3을 기점으로 커맨드 큐에 푸쉬된다. Tk1을 T0라고 하면, K2는 K1보다 2슬롯 뒤에, K3은 K1보다 3슬롯 뒤에 푸쉬된다.
커널 K1, K2 및 K3에 할당된 타임 슬롯은 각각 5슬롯, 6슬롯 및 4슬롯이다. T0시점에서 K1은 현재 윈도우 안에서 5 슬롯을 사용하여 수행이 종료될 것으로 추정되었다. 여기서 추정된 5슬롯은 도 4의 추정부(410)에서 추정되는 커널의 수행 시간에 대응한다. K1은 커맨드 큐에서 팝(pop)되어 디바이스에서 5슬롯 동안 수행될 수 있다.
그러나 Tk2시간에 커맨드 큐에 푸쉬된 커널 K2는 할당된 타임 슬롯이 6슬롯으로, 추정된 수행 시간이 5슬롯임에도 불구하고, 현재 윈도우 내에서(T0+W) 종료될 수 없으므로, 수행될 수 없고, 커맨드 큐에 그대로 머물게 된다.
K2에 이어 커맨드 큐에 푸쉬 된 커널 K3는 K1의 수행 종료 시점인 T0 + 5슬롯시점에서, 현재 윈도우 내에서 종료 가능한 3슬롯의 추정된 수행시간을 가지므로, K1 커널이 종료되는 시점에 K3가 수행 되도록 스케줄링 될 수 있다. K3에 할당된 타임 슬롯은 4슬롯이므로 K3는 추정된 수행 시간 3슬롯 동안 수행될 수 있다.
새로운 윈도우가 개시되는 T0+W 시점에서 K2는 커맨드 큐에서 팝되어 디바이스에서 수행될 수 있다. 따라서, 윈도우 단위로 K1, K2 및 K3의 수행 완료가 보장될 수 있다.
도 9는 또 다른 일 실시예에 따른 커널 수행 순서 스케줄링 방식을 나타낸 도면이다.
커널의 수행이 주기적인 특성을 가진 경우라면, 특정 타임 슬롯을 예약 하는 스케줄링 방식이 이용될 수 있다. 응용 프로그램의 특성을 고려하여 응용 프로그램 수준에서 수행 주기(Cyclic)와 예약하고자 하는 슬롯 수가 결정될 수 있다. 커널 수행 순서 스케줄링 장치는 수행 주기와 예약하고자 하는 슬롯 수에 기초하여, 예약된 슬롯이 예약 커널을 위해 비어있도록 다른 커널들을 스케줄링 할 수 있다.
도 9를 참조하면, 커널 K3는 8슬롯을 주기로 하여 수행될 수 있다. K3가 처음 수행되는 타임슬롯으로부터 8슬롯 단위로 추정된 수행시간 3슬롯 동안 타임슬롯들이 예약될 수 있다. 커널 K1 및 K2는 나머지 타임 슬롯에서 수행되도록 스케줄링 될 수 있다.
도 10은 또 다른 일 실시예에 따른 커널 수행 순서 스케줄링 방식을 나타낸 도면이다.
윈도우의 크기는 커널의 수행 시간에 따라 변경될 수 있다. 윈도우 확장 방식은 타임 슬롯의 활용률을 높일 수 있다.
도 10을 참조하면, 커널 K2의 수행 개시 가능 시점에서 현재 윈도우에는 3슬롯만 남아 있는 상태로, K2의 종료 예상 시간인 5슬롯 보다 작기 때문에 K2는 다음 윈도우에서 수행을 개시하게 된다.
그러나 윈도우의 확장이 가능하면, 디바이스의 스케줄러는 윈도우의 크기를 수행의 완료에 필요한 2슬롯만큼 확장할 것을 요청받을 수 있고, 디바이스 스케줄러에서 요청이 수락된 경우, 디바이스에서 커널의 수행이 개시될 수 있다.
윈도우 확장 요청의 수락여부는 다음의 조건에 기초하여 결정될 수 있다.
커널 수행 순서 스케줄링 장치는 윈도우 확장이 요청된 현재 커널의 우선순위보다 높은 커널이 커맨드 큐에 없는 경우, 확장 슬롯이 윈도우 확장이 허용된 슬롯의 범위(MAX_WINDW_EXTENSION) 안에 있는 경우, 윈도우 내에서 이미 확장이 발생하여 커널의 수행 시간이 확장된 윈도우를 초과하여 수행된 적이 없는 경우에 윈도우를 확장할 수 있다.
커널 수행 순서 스케줄링 장치는 위의 조건을 제외한 요청에 대해서는 실시간성 보장을 위해 요청을 거부할 수 있다. 최대 허용 가능한 확장 슬롯의 개수는 응용 프로그램의 특성과 시스템 성능을 고려하여 결정될 수 있다.
도 11은 일 실시예에 따른 커널 수행 순서 스케줄링 방법의 흐름도이다.
1110단계에서 커널 수행 순서 스케줄링 장치는 커널의 최종 유효 프로그레스 인덱스, 커널이 수행되는 환경의 영향을 나타내는 최종 메모리 프로그레스 인덱스 및 최종 커널 프로그레스 인덱스에 기초하여 커널의 수행 시간을 추정한다.
유효 프로그레스 인덱스는 시스템 환경으로부터 독립된 특성을 가지므로, 처음에 추정된 유효 프로그레스 인덱스가 최종 유효 프로그레스 인덱스로 사용될 수 있다.
커널 수행 순서 스케줄링 장치는 물리 프로그레스 인덱스, 유효 프로그레스 인덱스, 커널의 메모리 효율 및 수행할 커널들에 대한 메모리 효율의 변화량에 기초하여 최종 메모리 프로그레스 인덱스를 추정할 수 있다.
커널 수행 순서 스케줄링 장치는 물리 프로그레스 인덱스, 유효 프로그레스 인덱스, 커널에 대한 운영체제의 효율 및 수행할 커널들에 대한 운영체제의 효율의 변화량에 기초하여 최종 커널 프로그레스 인덱스를 추정할 수 있다.
1120단계에서 커널 수행 순서 스케줄링 장치는 커널들의 추정된 수행 시간 및 커널들의 우선순위에 기초하여 커널들의 수행 순서를 결정한다.
커널 수행 순서 스케줄링 장치는 커맨드 큐(command queue)에 입력된 순서, 커널들의 우선순위 및 커널들의 추정된 수행 시간에 기초하여 커널들의 수행이 일정한 시간 간격의 타임 슬롯들로 구성된 윈도우 내에서 완료되도록 커널들의 수행 순서를 결정할 수 있다.
위에서 설명된 실시 예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 커널들 각각의 유효 프로그레스 인덱스(Effective Progress Index)에 기초하여, 상기 커널들의 각각의 수행 시간들을 추정하는 추정부; 및
    상기 커널들의 상기 추정된 수행 시간들 및 상기 커널들의 각각의 우선순위들에 기초하여, 상기 커널들의 수행 순서를 결정하는 제어부를 포함하고,
    상기 제어부는:
    상기 커널들의 스케줄링 방식이 선점(preemptive) 방식인 경우, 상기 커널들 각각의 데드라인(deadline) 시간들에 기초하여, 상기 커널들의 상기 수행 순서를 스케줄링하는 선점 스케줄링부; 및
    상기 커널들의 스케줄링 방식이 비선점(non-preemptive) 방식인 경우, 상기 커널들 각각의 상기 추정된 수행 시간들에 기초하여, 윈도우 단위로 상기 커널들의 상기 수행 순서를 스케줄링하는 비선점 스케줄링부를 포함하는 커널 수행 순서 스케줄링 장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 비선점 스케줄링부는:
    커맨드 큐(command queue)로의 상기 커널들의 입력 순서, 상기 커널들의 상기 우선순위들, 및 상기 커널들의 상기 추정된 수행 시간들에 기초하여, 각각이 소정 시간 구간을 갖는 타임 슬롯들을 포함하는 윈도우 내에서 상기 커널들의 수행이 완료되도록, 상기 커널들의 상기 수행 순서를 스케줄링하는 커널 수행 순서 스케줄링 장치.
  4. 제 3 항에 있어서,
    상기 비선점 스케줄링부는:
    상기 커널들의 상기 추정된 수행 시간들에 기초하여, 상기 윈도우 내에서 수행이 완료될 커널이 우선하여 수행되도록, 상기 커널들의 상기 수행 순서를 스케줄링하는 커널 수행 순서 스케줄링 장치.
  5. 제 1 항에 있어서,
    상기 제어부는:
    상기 커널들 중 응용 프로그램의 특성에 따라 주기적으로 수행되는 커널들에 대해서는 수행 주기에 해당하는 윈도우의 타임 슬롯들을 예약하고, 나머지 타임 슬롯들에 다른 커널들의 수행 순서를 스케줄링하는 예약 스케줄링부를 더 포함하는 커널 수행 순서 스케줄링 장치.
  6. 제 5 항에 있어서,
    상기 제어부는:
    상기 윈도우 내에서 상기 나머지 타임 슬롯들이 커널의 추정된 수행 시간보다 작은 경우, 상기 윈도우의 크기를 상기 커널의 상기 추정된 수행 시간만큼 변경하는 윈도우 변경부를 포함하는 커널 수행 순서 스케줄링 장치.
  7. 제 6 항에 있어서,
    상기 윈도우 변경부는:
    상기 윈도우의 상기 크기의 변경을 요청한 커널이 커맨드 큐에 저장된 커널들 중에서 가장 높은 우선순위를 갖고 상기 요청된 변경의 크기가 기 설정된 윈도우 변경 범위에 포함되고 상기 윈도우의 상기 크기의 변경이 기 설정된 횟수의 범위 내에서 요청된 경우, 상기 윈도우의 상기 크기를 변경하는 커널 수행 순서 스케줄링 장치.
  8. 제 1 항에 있어서,
    상기 추정부는:
    상기 커널들 각각의 최종 유효 프로그레스 인덱스, 상기 커널들이 수행되는 환경의 영향을 나타내는 최종 메모리 프로그레스 인덱스(Memory Progress Index), 및 최종 커널 프로그레스 인덱스(Kernel Progress Index)에 기초하여 상기 커널들의 상기 수행 시간들을 추정하는 커널 수행 순서 스케줄링 장치.
  9. 커널들 각각의 유효 프로그레스 인덱스(Effective Progress Index)에 기초하여, 상기 커널들 각각의 수행 시간들을 추정하는 추정부; 및
    상기 커널들 각각의 상기 추정된 추정 시간들 및 상기 커널들 각각의 우선순위들에 기초하여 상기 커널들의 수행 순서를 결정하는 제어부를 포함하고,
    상기 추정부는:
    응용 프로그램을 수행하는 동안 반복적으로 수행되는 커널의 히스토리에 기초하여, 상기 유효 프로그레스 인덱스, 메모리 프로그레스 인덱스, 및 커널 프로그레스 인덱스를 추정하는 프로그레스 인덱스 추정부;
    물리 프로그레스 인덱스, 상기 유효 프로그레스 인덱스, 상기 커널들 각각의 메모리 효율, 및 수행될 커널들에 대한 메모리 효율의 변화량에 기초하여, 최종 메모리 프로그레스 인덱스를 추정하는 메모리 프로그레스 인덱스 추정부; 및
    상기 물리 프로그레스 인덱스, 상기 유효 프로그레스 인덱스, 상기 커널들 각각에 대한 운영체제의 효율, 및 수행될 커널들에 대한 상기 운영체제의 효율의 변화량에 기초하여, 최종 커널 프로그레스 인덱스를 추정하는 커널 프로그레스 인덱스 추정부를 포함하는 커널 수행 순서 스케줄링 장치.
  10. 제 9 항에 있어서,
    유효 수행 방식으로 수행되는 명령어의 수행 시간을 누적하여 상기 유효 프로그레스 인덱스를 생성하는 유효 프로그레스 카운터;
    상기 커널들이 공유 메모리로 접근하는 데에 소모된 사이클들을 누적하여 메모리 프로그레스 인덱스를 생성하는 메모리 프로그레스 카운터; 및
    시스템 커널의 수행에 소모된 사이클들을 누적하여 커널 프로그레스 인덱스를 생성하는 커널 프로그레스 카운터를 더 포함하는 커널 수행 순서 스케줄링 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020120011723A 2012-02-06 2012-02-06 커널 수행 순서 스케줄링 방법 및 장치 KR101880452B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020120011723A KR101880452B1 (ko) 2012-02-06 2012-02-06 커널 수행 순서 스케줄링 방법 및 장치
US13/672,085 US9244733B2 (en) 2012-02-06 2012-11-08 Apparatus and method for scheduling kernel execution order
JP2013020760A JP6211272B2 (ja) 2012-02-06 2013-02-05 カーネル実行順序スケジューリング方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120011723A KR101880452B1 (ko) 2012-02-06 2012-02-06 커널 수행 순서 스케줄링 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20130091368A KR20130091368A (ko) 2013-08-19
KR101880452B1 true KR101880452B1 (ko) 2018-08-17

Family

ID=48904058

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120011723A KR101880452B1 (ko) 2012-02-06 2012-02-06 커널 수행 순서 스케줄링 방법 및 장치

Country Status (3)

Country Link
US (1) US9244733B2 (ko)
JP (1) JP6211272B2 (ko)
KR (1) KR101880452B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
GB2519080B (en) * 2013-10-08 2021-04-14 Arm Ip Ltd Scheduling function calls
US9965279B2 (en) * 2013-11-29 2018-05-08 The Regents Of The University Of Michigan Recording performance metrics to predict future execution of large instruction sequences on either high or low performance execution circuitry
GB2545508B (en) 2015-12-18 2019-04-10 Imagination Tech Ltd Controlling operation of a GPU
GB2546343A (en) * 2016-01-15 2017-07-19 Stmicroelectronics (Grenoble2) Sas Apparatus and methods implementing dispatch mechanisms for offloading executable functions
US10255106B2 (en) 2016-01-27 2019-04-09 Qualcomm Incorporated Prediction-based power management strategy for GPU compute workloads
US10333987B2 (en) * 2017-05-18 2019-06-25 Bank Of America Corporation Security enhancement tool for a target computer system operating within a complex web of interconnected systems
CN108196949B (zh) * 2017-12-28 2021-05-04 华润电力技术研究院有限公司 一种测风数据处理方法及相关设备
KR102285755B1 (ko) * 2019-11-22 2021-08-05 주식회사 마크애니 인공지능을 활용한 지리 정보 콘텐츠에 대한 무결성 검증 시스템, 무결성 검증 방법, 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090210879A1 (en) 2004-11-11 2009-08-20 Robert Kaiser Method for distributing computing time in a computer system
US20100175069A1 (en) 2009-01-07 2010-07-08 Yamatake Corporation Data processing device, scheduler, and scheduling method
JP2011100338A (ja) 2009-11-06 2011-05-19 Hitachi Automotive Systems Ltd 車載用マルチアプリ実行装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265775A (ja) * 1992-03-19 1993-10-15 Hitachi Ltd ジョブ実行予測制御方法およびジョブ実行状況表示方法
JPH1185541A (ja) * 1997-09-12 1999-03-30 Nec Corp バッチジョブ処理時間見積装置
JP2003091424A (ja) * 2001-09-18 2003-03-28 Matsushita Electric Ind Co Ltd 分散処理システムおよびジョブ分散処理方法
AU2003300948A1 (en) * 2002-12-16 2004-07-22 Globespanvirata Incorporated System and method for scheduling thread execution
JP3889726B2 (ja) * 2003-06-27 2007-03-07 株式会社東芝 スケジューリング方法および情報処理システム
GB0407384D0 (en) 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
US8387052B2 (en) * 2005-03-14 2013-02-26 Qnx Software Systems Limited Adaptive partitioning for operating system
US20080263324A1 (en) 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US8024739B2 (en) * 2007-01-09 2011-09-20 International Business Machines Corporation System for indicating and scheduling additional execution time based on determining whether the execution unit has yielded previously within a predetermined period of time
US9244732B2 (en) * 2009-08-28 2016-01-26 Vmware, Inc. Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution
FR2937439B1 (fr) 2008-10-17 2012-04-20 Commissariat Energie Atomique Procede d'execution deterministe et de synchronisation d'un systeme de traitement de l'information comportant plusieurs coeurs de traitement executant des taches systemes.
JP5676845B2 (ja) 2008-11-06 2015-02-25 イグジット−キューブ,インク. コンピュータシステム、カーネルスケジューリングシステム、リソース割当方法及びプロセス実行共有方法
KR101032873B1 (ko) 2009-07-14 2011-05-06 한양대학교 산학협력단 시스템 콜을 이용한 프로세서 제어 장치 및 프로세서 성능 측정 방법
KR101088563B1 (ko) 2009-12-24 2011-12-05 포항공과대학교 산학협력단 멀티코어프로세서 제어방법, 멀티코어프로세서 제어장치, 멀티코어프로세서 및 멀티코어프로세서 제어방법이 기록된 기록매체
KR20110116553A (ko) * 2010-04-19 2011-10-26 삼성전자주식회사 미디어 프로세싱 애플리케이션 실행 장치 및 방법
KR101635816B1 (ko) * 2010-07-02 2016-07-04 삼성전자주식회사 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090210879A1 (en) 2004-11-11 2009-08-20 Robert Kaiser Method for distributing computing time in a computer system
US20100175069A1 (en) 2009-01-07 2010-07-08 Yamatake Corporation Data processing device, scheduler, and scheduling method
JP2011100338A (ja) 2009-11-06 2011-05-19 Hitachi Automotive Systems Ltd 車載用マルチアプリ実行装置

Also Published As

Publication number Publication date
JP6211272B2 (ja) 2017-10-11
KR20130091368A (ko) 2013-08-19
JP2013161483A (ja) 2013-08-19
US20130205299A1 (en) 2013-08-08
US9244733B2 (en) 2016-01-26

Similar Documents

Publication Publication Date Title
KR101880452B1 (ko) 커널 수행 순서 스케줄링 방법 및 장치
Elliott et al. GPUSync: A framework for real-time GPU management
Schranzhofer et al. Timing analysis for resource access interference on adaptive resource arbiters
Herman et al. RTOS support for multicore mixed-criticality systems
US10528389B2 (en) Method and apparatus for executing real-time tasks
Delgado et al. Kairos: Preemptive data center scheduling without runtime estimates
US8069444B2 (en) Method and apparatus for achieving fair cache sharing on multi-threaded chip multiprocessors
US20130290972A1 (en) Workload manager for mapreduce environments
Devi et al. Efficient synchronization under global EDF scheduling on multiprocessors
CN109542603B (zh) 一种提高不同优先级任务间隔离性的多维资源隔离系统
US20140019987A1 (en) Scheduling map and reduce tasks for jobs execution according to performance goals
Liu et al. Suspension-aware analysis for hard real-time multiprocessor scheduling
US8843932B2 (en) System and method for controlling excessive parallelism in multiprocessor systems
US20140201751A1 (en) Processor provisioning by a middleware processing system
US20120137295A1 (en) Method for displaying cpu utilization in a multi-processing system
CN111176817B (zh) 一种多核处理器上基于划分调度的dag实时任务间的干扰分析方法
US8214836B1 (en) Method and apparatus for job assignment and scheduling using advance reservation, backfilling, and preemption
Pellizzoni et al. Memory servers for multicore systems
US8898675B2 (en) Method of calculating processor utilization rate in SMT processor
Jalle et al. Deconstructing bus access control policies for real-time multicores
CN114564300A (zh) 用于动态分派内存带宽的方法
WO2022217739A1 (zh) 一种感知存储后端尾延迟slo的动态调控资源方法及系统
Erickson et al. Recovering from overload in multicore mixed-criticality systems
Gu et al. Improving OCBP-based scheduling for mixed-criticality sporadic task systems
KR101892273B1 (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