KR20120003088A - 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치 - Google Patents

결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치 Download PDF

Info

Publication number
KR20120003088A
KR20120003088A KR1020100063744A KR20100063744A KR20120003088A KR 20120003088 A KR20120003088 A KR 20120003088A KR 1020100063744 A KR1020100063744 A KR 1020100063744A KR 20100063744 A KR20100063744 A KR 20100063744A KR 20120003088 A KR20120003088 A KR 20120003088A
Authority
KR
South Korea
Prior art keywords
deterministic
thread
progress
counter
execution
Prior art date
Application number
KR1020100063744A
Other languages
English (en)
Other versions
KR101635816B1 (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 KR1020100063744A priority Critical patent/KR101635816B1/ko
Priority to US13/156,492 priority patent/US8943503B2/en
Priority to EP11170970.5A priority patent/EP2418582A3/en
Publication of KR20120003088A publication Critical patent/KR20120003088A/ko
Application granted granted Critical
Publication of KR101635816B1 publication Critical patent/KR101635816B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • G06F11/3423Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time where the assessed time is active or idle time
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)

Abstract

마이크로 아키텍쳐를 사용하는 컴퓨터 환경에서 데이터 처리 및 특정 기능을 수행하는 응용 프로그램의 진행 사항 또는 성능을 측정하기 위한 방법 및 장치를 제공한다. 스레드 프로그레스 트래킹(Thread Progress Tracking) 장치는 응용 프로그램을 구성하는 적어도 하나의 스레드(Thread)를 선택하는 선택부, 상기 스레드를 구성하는 적어도 하나의 명령어에 대하여, 수행 방식이 일정한 사이클을 가지는 결정적(Deterministic) 방식인지 또는 일정하지 않은 지연 사이클을 가지는 비결정적(Non-deterministic) 방식인지 기 설정된 기준에 기초하여 판단하는 판단부 및 상기 비 결정적 방식으로 수행되는 명령어를 제외한 상기 결정적 방식으로 수행되는 명령어에 대하여 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 생성하는 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)를 포함한다.

Description

결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치{APPARATUS AND METHOD FOR THREAD PROGRESS TRACKING USING DETERMINISTIC PROGRESS INDEX}
기술분야는 마이크로 아키텍쳐를 사용하는 컴퓨터 환경에서 데이터 처리 및 특정 기능을 수행하는 응용 프로그램의 진행 사항 또는 성능을 측정하기 위한 방법 및 장치에 관한 것이다.
개인 휴대 단말의 보급과 정보 처리 요구량이 증가함에 따라 컴퓨팅 기기들은 점점 복잡하고, 다양한 응용들을 동시에 처리해야 하는 상황에 놓여 있다. 또한, 실시간 처리를 요구하는 멀티미디어와 같은 어플리케이션이 증가함에 따라, 컴퓨팅 기기들의 시스템 성능에 대한 요구량도 점점 증가하고 있으며, 단일 프로세서 만으로는 어플리케이션을 효율적으로 처리할 수 없는 상황에 놓여 있다.
이러한 상황을 극복하기 위해 반도체 집적기술의 발달과 멀티 프로세서 컴퓨팅 기술이 등장하였다. 멀티 프로세서를 사용하는 경우 단일 프로세서보다 에너지 효율 및 성능향상에 있어서 많은 이점이 있다. 그러나 멀티 프로세서를 이용한 시스템의 설계 및 개발은 쉽지 않으며, 특히 동시성을 가지는 시스템의 검증이 어렵다. 실제 동시성을 가진 시스템의 검증 비용은 기존 순차적 시스템 개발기간의 코어 수의 제곱에 비례하여 증가한다. 검증 비용을 줄이기 위한 다양한 방법들이 제안되고 있는데 다양한 방법의 효율적인 구현을 위해 기본적으로 필요한 기능은 다양한 명령어들을 수행하는 응용 프로그램의 성능 및 진행 상황을 정확하게 측정하는 것이다.
일 측면에 있어서, 스레드 프로그레스 트래킹(Thread Progress Tracking) 장치는 응용 프로그램을 구성하는 적어도 하나의 스레드(Thread)를 선택하는 선택부, 상기 스레드를 구성하는 적어도 하나의 명령어에 대하여, 수행 방식이 일정한 사이클을 가지는 결정적(Deterministic) 방식인지 또는 일정하지 않은 지연 사이클을 가지는 비결정적(Non-deterministic) 방식인지 기 설정된 기준에 기초하여 판단하는 판단부 및 상기 비 결정적 방식으로 수행되는 명령어를 제외한 상기 결정적 방식으로 수행되는 명령어에 대하여 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 생성하는 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)를 포함한다.
상기 일정하지 않은 지연 사이클을 가지는 비결정적(Non-deterministic) 방식은 하드웨어에 기초한 프로세서의 명령어 수준에서 비결정적 방식으로 상기 명령어를 수행하는 하드웨어 비결정적 수행(HWND) 및 소프트웨어에 기초한 명령어들로 구성된 함수 수준에서 비결정적 방식으로 상기 함수를 수행하는 소프트웨어 비결정적 수행(SWND)을 포함할 수 있다.
상기 결정적 프로그레스 카운터(DPC)는 상기 명령어 수행방식이 결정적 방식으로 판단되면 시스템 클럭에 기초하여 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 증가시킬 수 있다.
상기 결정적 프로그레스 카운터(DPC)는 하드웨어에 기초한 프로세서의 명령어 수준에서 비결정적 방식으로 상기 명령어를 수행하는 하드웨어 비결정적 수행(HWND) 신호 또는 소프트웨어에 기초한 명령어들로 구성된 함수 수준에서 비결정적 방식으로 상기 함수를 수행하는 소프트웨어 비결정적 수행(SWND) 신호에 의하여 동작이 제어될 수 있다.
상기 하드웨어 비결정적 수행(HWND) 신호는 프로세서에서 발생하는 스톨(Stall) 신호에 기초하여 생성될 수 있다.
상기 소프트웨어 비결정적 수행(SWND) 신호는 사용자 함수를 수행하는 경우, 별도의 코드(API)를 사용하여 생성될 수 있다.
상기 결정적 프로그레스 카운터(DPC)는 상기 스레드가 러닝 상태(running state)에 있지 않은 경우에 상기 결정적 프로그레스 카운터(DPC)가 동작하지 않도록 소프트웨어에 기초한 명령어들로 구성된 함수 수준에서 비결정적 방식으로 상기 함수를 수행하는 소프트웨어 비결정적 수행(SWND) 신호를 제어하는 제어부를 포함할 수 있다.
상기 제어부는 상기 스레드에서 러닝 상태 중에 인터럽트(interrupt)가 발생하면 상기 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 상기 결정적 프로그레스 카운터(DPC)를 중지시키고, 상기 인터럽트 서비스 루틴 수행 후 다시 상기 스레드가 러닝 상태가 되면 상기 소프트웨어 비결정적 수행(SWND)의 신호를 클리어하여 상기 결정적 프로그레스 카운터(DPC)를 동작시킬 수 있다.
상기 결정적 프로그레스 카운터(DPC)는 프로세서 단위로 위치할 수 있다.
다른 일 측면에 있어서, 스레드 프로그레스 트래킹(Thread Progress Tracking) 장치는 상기 각 스레드 별로 상기 각 스레드에 대응하는 상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 저장하는 메모리 및 상기 스레드가 러닝 상태에 있으면 현재의 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC) 값을 상기 메모리로 복사하는 복사부를 더 포함할 수 있다.
상기 복사부는 상기 스레드가 다른 스레드로 컨텍스트 스위치(context switch)되는 시점에서 상기 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC) 값을 상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)로 상기 메모리에 복사하고, 다른 일 측면에 있어서, 스레드 프로그레스 트래킹(Thread Progress Tracking) 장치는 상기 다른 스레드에서 상기 컨텍스트 스위치 이전의 스레드로 다시 컨텍스트 스위치 되는 경우, 상기 메모리에 복사된 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)로 로딩하는 로딩부를 더 포함할 수 있다.
상기 판단부는 스케쥴러(Scheduler) 상에서 상기 스레드의 스레드 제어 블록에 비결정적 함수(ND Function)가 수행 중임을 나타내기 위해 설정된 플래그 값이 세트되어 있는지 판단하는 세트 판단부를 포함할 수 있다.
상기 세트 판단부는 상기 플래그 값이 세트된 경우에는 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터를 중지시키고, 상기 플래그 값이 세트되지 않은 경우에는 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정할 수 있다.
일 측면에 있어서, 스레드 프로그레스 트래킹(Thread Progress Tracking) 방법은 응용 프로그램을 구성하는 적어도 하나의 스레드(Thread)를 선택하는 단계, 상기 스레드를 구성하는 적어도 하나의 명령어에 대하여, 수행 방식이 일정한 사이클을 가지는 결정적(Deterministic) 방식인지 또는 일정하지 않은 지연 사이클을 가지는 비결정적(Non-deterministic) 방식인지 판단하는 단계 및 상기 비 결정적 방식으로 수행되는 명령어를 제외한 상기 결정적 방식으로 수행되는 명령어에 대하여 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)에 기초하여 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 생성하는 단계를 포함한다.
상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 생성하는 단계는 하드웨어에 기초한 프로세서의 명령어 수준에서 비결정적 방식으로 상기 명령어를 수행하는 하드웨어 비결정적 수행(HWND) 신호 또는 소프트웨어에 기초한 명령어들로 구성된 함수 수준에서 비결정적 방식으로 상기 함수를 수행하는 소프트웨어 비결정적 수행(SWND) 신호에 의하여 동작이 제어될 수 있다.
다른 일 측면에 있어서, 스레드 프로그레스 트래킹(Thread Progress Tracking) 방법은 상기 각 스레드 별로 상기 각 스레드에 대응하는 상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 메모리에 저장하는 단계 및 상기 스레드가 러닝 상태에 있으면 현재의 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC) 값을 상기 메모리로 복사하는 단계를 더 포함할 수 있다.
상기 복사하는 단계는 상기 스레드가 다른 스레드로 컨텍스트 스위치(context switch)되는 시점에서 상기 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC) 값을 상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)로 상기 메모리에 복사하고, 다른 일 측면에 있어서, 스레드 프로그레스 트래킹 방법은 상기 다른 스레드에서 상기 컨텍스트 스위치 이전의 스레드로 다시 컨텍스트 스위치 되는 경우, 상기 메모리에 복사된 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)로 로딩하는 단계를 더 포함할 수 있다.
또 다른 일 측면에 있어서, 스레드 프로그레스 트래킹(Thread Progress Tracking) 방법은 스케쥴러 상에서 수행될 명령어에 따라 준비된 스레드를 선택하는 단계, 상기 스레드에 저장된 결정적 프로그레스 인덱스를 결정적 프로그레스 카운터의 초기 값으로 세팅하는 단계, 상기 스레드의 스레드 제어 블록에 비결정적 함수(ND Function)가 수행 중임을 나타내기 위해 설정된 플래그 값이 세트되어 있는지 판단하는 단계, 상기 플래그 값이 세트된 경우에는 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터를 중지시키는 단계 및 상기 플래그 값이 세트되지 않은 경우에는 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정하고, 상기 소프트웨어 비결정적 수행(SWND) 신호를 클리어하여 상기 중지된 결정적 프로그레스 카운터를 동작시키는 단계를 포함한다.
또 다른 일 측면에 있어서, 스레드 프로그레스 트래킹(Thread Progress Tracking) 방법은 스레드를 디스패치하여 상기 스레드가 러닝 상태가 되는 단계, 상기 러닝 상태인 스레드에서 스케쥴 이벤트가 발생하면 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터를 중지시키는 단계, 상기 결정적 프로그레스 카운터가 중지된 상태에서 컨텍스트 스위치 이벤트가 발생하면 상기 중지된 결정적 프로그레스 카운터 값을 상기 스레드의 결정적 프로그레스 인덱스 값으로 저장하는 단계 및 상기 결정적 프로그레스 카운터가 중지된 상태에서 상기 스케쥴 이벤트가 종료하면 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정하고, 상기 소프트웨어 비결정적 수행(SWND) 신호를 클리어하여 상기 중지된 결정적 프로그레스 카운터를 동작시키는 단계를 포함한다.
상기 판단하는 단계는 상기 스레드의 스레드 제어 블록에 사용자 함수(ND Function)가 수행 중임을 나타내기 위해 설정된 플래그 값이 세트되어 있는지 판단하는 단계를 포함하고, 상기 플래그 값이 세트된 경우에는 소프트웨어 비결정적 수행(SWND) 시작신호를 세트하여 결정적 프로그레스 카운터를 중지시키는 단계, 상기 사용자 함수를 수행하는 단계, 상기 수행이 완료되면 상기 설정된 플래그 값을 클리어하고, 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정한 후, 상기 소프트웨어 비결정적 수행(SWND) 신호를 클리어하여 상기 중지된 결정적 프로그레스 카운터를 동작시키는 단계를 더 포함할 수 있다.
스레드 프로그레스 트래킹(Thread Progress Tracking) 장치를 이용함으로써 응용 프로그램을 구성하는 스레드의 진행상황을 예측할 수 있어 효율적인 스레드 및 시스템 자원관리를 할 수 있다.
또한, 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)는 계산이 간단하여 관리에 따른 성능 저하가 거의 발생하지 않으며 기존 카운터에 소프트웨어 비결정적 수행(SWND) 및 하드웨어 비결정적 수행(HWND) 신호에 의한 동작/중지 기능만 추가하여 적은 비용으로 구현할 수 있다.
또한, 스레드 프로그레스 트래킹 장치는 프로세서 사이클 수준의 정밀한 스레드 프로그레스 인덱스를 제공하여 멀티 스레딩시 정확한 스레드 관리를 할 수 있다.
또한, 스레드 프로그레스 트래킹 장치는 다중 프로세서 상태에서 병렬 처리되는 프로그램들의 결정적인 수행 환경을 매우 적은 런타임 오버헤드(runtime overhead)를 가지고 제공할 수 있다.
또한, 스레드 프로그레스 트래킹 장치는 정밀한 스레드 프로그레스 인덱스를 제공하여 예측 가능한 시스템 제어 기능을 제공하고, 효율적인 부하 분배 및 저전력 관리 기능을 효율적으로 수행할 수 있도록 한다.
또한, 스레드 프로그레스 트래킹 장치는 결정적 프로그레스 인덱스를 통하여 스레드의 진행 상황을 정확히 예측할 수 있으므로 동시성을 가진 시스템을 효과적으로 검증할 수 있다.
도 1은 일반적인 응용 프로그램이 수행되는 컴퓨팅 환경을 나타낸 도면이다.
도 2는 응용 프로그램의 기능을 수행하는 명령어를 결정적 수행 및 비결정적 수행으로 구분하여 나타낸 도면이다.
도 3은 일 실시예에 따른 스레드 프로그레스 트래킹 장치의 블록도이다.
도 4는 일 실시예에 따른 프로그레스 인덱스 개념을 나타낸 도면이다.
도 5는 스레드의 상태 변화에 따른 프로그레스 카운터의 동작여부를 나타낸 도면이다.
도 6은 결정적 프로그레스 카운터와 스레드 별 결정적 프로그레스 인덱스의 관계를 나타낸 예이다.
도 7은 일 실시예에 따른 스레드 프로그레스 트래킹 방법을 설명하기 위한 흐름도이다.
도 8은 일 실시예에 따른 운영체제의 스케쥴러 동작에서 비결정적 함수가 수행되는 경우를 나타낸 흐름도이다.
도 9는 일 실시 예에 따른 스레드가 러닝 상태에 있을 때, 비결정적 함수가 동작하는 경우의 결정적 프로그레스 카운터의 동작을 나타낸 흐름도이다.
도 10은 일 실시 예에 따른 하드웨어 비결정적 수행 신호를 발생시키는 과정을 나타낸 흐름도이다.
이하, 일측에 따른 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
수행되는 응용 프로그램의 정확한 성능 및 진행이 측정 가능하면 측정된 값을 지표화하여 스레드의 성능 개선, 부하 균형 및 저전력 관리에 활용할 수 있다. 그러나 런타임 성능 저하를 발생시키지 않으면서 응용 프로그램의 상태를 정확하고 정밀하게 측정하는 것은 용이하지 않다. 또한, 응용 프로그램의 수행을 구성하는 명령어들의 수행 시간은 일정하지 않다. 또한, 응용 프로그램의 수행시 함께 수행되는 다른 응용 프로그램들에 의해 예상하지 못한 영향으로 인하여, 응용 프로그램의 상태에 대한 정확한 측정은 어렵다. 단일 응용 프로그램이 수행되는 경우에도 단일 응용을 구성하는 여러 스레드들이 함께 수행되면서 영향을 미치게 되며, 하나의 스레드로 구성된 경우에도 스레드를 구성하는 명령어들의 수행시간이 일정하지 않기 때문에 측정이 어렵다.
종래 응용 프로그램의 진행 상태를 측정하는 방법은 크게 부가적인 코드를 삽입하는 방법과 퍼포먼스 카운터(performance counter)를 활용하는 방법이 있다. 부가적인 코드를 삽입하는 방법은 비교적 구현이 용이하나, 삽입에 따른 런타임 오버헤드로 인해 응용 프로그램 진행 상태의 정밀한 측정이 불가능하다. 또한, 퍼포먼스 카운터를 활용하는 방법은 비교적 저렴한 비용으로 구현이 가능하나 기본적으로 retired instruction 이벤트를 사용함으로써 스레드간에 클럭 레이트(rate)의 차이가 발생한다. 또한, 가상 클럭의 레이트를 높여 고정밀 지표를 측정하기 위해서는 퍼포먼스 카운터의 인터럽트 오버헤드가 발생하여 응용 프로그램의 성능을 저하시킨다. 따라서, 응용 프로그램의 프로그래스를 결정적(Deterministic)으로 측정할 수 있고, 정밀하면서도 정확한 실제 스레드 프로그레스를 반영하며 적은 런타임 오버헤드 및 적은 구현 비용이 드는 진행 상태 측정 방법이 요구된다.
도 1은 일반적인 응용 프로그램이 수행되는 컴퓨팅 환경을 나타낸 도면이다.
일반적으로 응용 프로그램은 프로세서 상에서 메모리와 하드웨어 디바이스를 자원으로 하여 정해진 기능을 수행한다. 메모리는 보통의 경우 계층적 구조를 가진다. 이때, 접속(access) 속도가 빠른 메모리는 로컬 버스에 구비되고, 접속 속도는 느리지만 저렴한 메모리는 시스템 버스상에 구비될 수 있다. 또한, 다중 프로세서는 높은 성능의 요구사항을 만족시키기 위해 하나의 시스템에 프로세서를 집적하여 응용 프로그램을 병렬처리 한다.
일반적으로 응용 프로그램은 하나 이상의 스레드로 구성된다. 따라서, 하나의 프로세서 상에서 다중 스레드가 수행될 수 있다.. 하나의 프로세서 상에서 다중 스레드가 수행되는 것을 멀티 스레딩이라고 한다. 따라서, 응용 프로그램의 성능 및 진행 사항을 측정하기 위해서는 응용 프로그램을 구성하는 스레드의 성능 및 진행 상황을 측정할 수 있어야 한다. 도 1은 일반적으로 구성될 수 있는 컴퓨팅 환경의 일 예이며, 일측에 따른 스레드 프로그레스 트래킹 장치의 적용 환경은 도 1에 도시된 예에 한정되지 않는다.
도 2는 응용 프로그램의 기능을 수행하는 명령어를 결정적 수행 및 비결정적 수행으로 구분하여 나타낸 도면이다.
응용 프로그램은 복수의 스레드들로 구성될 수 있다. 스레드는 특정 기능을 수행하기 위한 명령어들로 구성될 수 있다. 명령어의 수행 방식은 결정적(deterministic) 수행 방식 및 비결정적(nondeterministic) 수행 방식으로 구분될 수 있다. 명령어의 수행 방식이 결정적 수행 방식인 경우, 명령어의 수행 완료 시점 또는 명령어 그룹의 수행완료 시점은 항상 일정한 사이클을 갖는다. 반면, 명령어의 수행 방식이 비 결정적 수행 방식인 경우, 명령어 혹은 명령어 그룹의 수행 완료 시점은 일정하지 않은 지연 사이클을 갖는다.
도 2를 참조하면, 스레드가 수행되는 물리적 시간(Physical time)은 일정하게 증가하며 결정적 수행(Deterministic execution) 영역은 항상 동일한 수행 시간 내에 명령어들이 완료된다. 반면에 비결정적 수행(Nondeterministic execution) 영역은 다른 스레드들의 수행에 영향을 받거나 수행시점에 따라 발생하는 다른 상황 때문에 완료시간이 일정하지 않게 된다. 비결정적 수행은 프로세서의 명령어 수준에서 비결정적 수행을 하는 하드웨어 비결정적 수행(Hardware nondeterministic execution, 이하 HWND라 함)과 명령어들로 구성된 함수 또는 소프트웨어 적으로 수행 시간이 일정하지 않게 발생하는 이벤트 수준에서 비결정적 수행을 하는 소프트웨어 비결정적 수행(Software nondeterministic execution, 이하 SWND라 함)으로 구분된다. 실제 스레드의 수행에서 SWND와 HWND를 제외한 나머지 부분의 수행은 명령어의 수행시간이 일정하다고 할 수 있다. 따라서, 스레드의 수행에서 SWND와 HWND를 제외한 나머지 부분을 수행하는데 필요한 사이클은 매번 동일한 값을 가지므로 SWND와 HWND를 제외한 나머지 부분을 지표화하면 스레드의 결정적(deterministic) 수행 지표로 활용할 수 있다. 즉, 결정적 수행 시간에 대한 지표는 스레드 수행에 있어서 항상 동일한 위치를 나타내게 된다. 여기서 결정적 수행 시간을 나타내는 지표를 결정적 프로그레스 인덱스(Deterministic Progress Index, 이하 DPI라 함)라고 한다. DPI는 다음의 수식으로 표현될 수 있다.
P스레드 = P결정적 수행 + P비결정적 수행
τ결정적 스레드 프로그레스 = τ런 상태 - (τSWND + τHWND)
여기서 응용 프로그램을 구성하는 프로그램 P스레드 는 결정적 수행(P결정적 수행)과 비결정적 수행(P비결정적 수행)으로 구분될 수 있다. 따라서, 스레드의 결정적 프로그레스를 나타내는 시간(τ결정적 스레드 프로그레스)은 스레드가 러닝 상태(running state)에 있는 시간(τ런 상태) 중에서 SWND 수행 시간(τSWND)과 HWND 수행 시간(τHWND)을 제거하면 된다. 스레드가 러닝 상태에 있는 경우는 요구되는 명령어를 수행하는 경우를 포함할 수 있다.
도 3은 일 실시예에 따른 스레드 프로그레스 트래킹 장치의 블록도이다.
도 3을 참조하면, 일측에 따른 스레드 프로그레스 트래킹 장치는 선택부(310), 판단부(320) 및 결정적 프로그레스 카운터(330)를 포함한다.
선택부(310)는 응용 프로그램을 구성하는 적어도 하나의 스레드(Thread)를 선택한다. 선택부(310)는 응용 프로그램을 구성하는 스레드 중에서 사용자가 요구하는 기능을 수행할 수 있는 스레드를 선택한다.
판단부(320)는 스레드를 구성하는 명령어들 각각에 대하여, 수행 방식이 일정한 사이클을 가지는 결정적(Deterministic) 방식인지 또는 일정하지 않은 지연 사이클을 가지는 비결정적(Non-deterministic) 방식인지 판단한다. 스레드를 구성하는 명령어들 각각에 대한 결정적 또는 비결정적 방식의 판단은 기 설정된 기준에 기초하여 판단할 수 있다. 여기서 기 설정된 기준은 명령어의 수행시간이 일정한 사이클을 가지는지 여부로 정의될 수 있다. 따라서 명령어 수행방식이 무엇인지 알면 기 설정된 기준에 기초하여 결정적 방식 또는 비결정적 방식 여부를 판단할 수 있다. 이에 대해서는 도 4에서 좀 더 상세히 설명한다. 또한, 기 설정된 기준은 HWND와 SWND로 구분되어 정의 될 수 있다.
또한, 판단부(320)는 스케쥴러(Scheduler) 상에서 스레드의 스레드 제어 블록에 비결정적 함수(ND Function)가 수행 중임을 나타내기 위해 설정된 플래그 값이 세트되어 있는지 판단하는 세트 판단부(도시되지 않음)를 포함할 수 있다. 세트 판단부는 플래그 값을 통하여 비결정적 함수의 수행여부를 판단할 수 있다. 또한, 세트 판단부는 상기 플래그 값이 세트된 경우에 소프트웨어 비결정적(SWND) 신호를 세트하여 결정적 프로그레스 카운터를 중지시키고, 상기 플래그 값이 세트되지 않은 경우에는 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정할 수 있다.
결정적 프로그레스 카운터(330)는 명령어들 중에서 비 결정적 방식으로 수행되는 명령어를 제외한 결정적 방식으로 수행되는 명령어에 대하여 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 생성한다. 즉, 결정적 프로그레스 카운터(330)는 스레드에서 수행되는 명령어가 결정적 방식으로 수행되는 경우에만 카운트를 증가시켜 결정적 프로그레스 인덱스(DPI)를 생성한다.
또한, 하드웨어 비결정적 수행(HWND) 신호는 프로세서에서 발생하는 스톨(Stall) 신호에 기초하여 생성될 수 있다. 또한, 소프트웨어 비결정적 수행(SWND) 신호는 사용자 함수를 수행하는 경우, 별도의 코드(API)를 사용하여 생성될 수 있다. 이에 대해서는 도 9 및 도 10에서 좀 더 상세히 설명한다.
또한, 스레드 프로그레스 트래킹 장치는 각 스레드 별로 상기 각 스레드에 대응하는 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 저장하는 메모리(도시되지 않음)를 포함할 수 있다. 즉, 스레드 프로그레스 트래킹 장치는 각 스레드의 DPI를 저장할 수 있는 메모리를 포함할 수 있다. 또한, 상기 스레드가 러닝 상태에 있으면 현재의 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC) 값을 상기 메모리로 복사하는 복사부(도시되지 않음)를 포함할 수 있다.
또한, 상기 복사부는 상기 스레드가 다른 스레드로 컨텍스트 스위치(context switch)되는 시점에서 상기 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC) 값을 상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)로 상기 메모리에 복사할 수 있다.
또한, 스레드 프로그레스 트래킹 장치는 상기 다른 스레드에서 상기 원래의 스레드로 컨텍스트 스위치 되는 경우, 상기 메모리에 복사된 결정적 프로그레스 인덱스(DPI)를 결정적 프로그레스 카운터(DPC)로 로딩하는 로딩부(도시되지 않음)를 포함할 수 있다.
도 4는 일 실시예에 따른 스레드의 프로그레스 중 하드웨어 비결정적 수행 방식(HWND)과 소프트웨어 비결정적 수행 방식(SWND) 부분이 제외된 결정적 프로그레스 인덱스(DPI) 개념을 나타낸 도면이다.
도 4는 실제 스레드에서 SWND와 HWND가 제외된 논리적인(logical)인 시간을 지표화한 DPI 개념을 나타낸다. SWND 및 HWND가 수행되는 동안 물리적인 시간은 증가하지만 DPI는 증가하지 않는다. 따라서 DPI 값은 스레드의 수행을 나타내는 결정적 지표로 사용될 수 있다. 스레드의 수행에 있어서 SWND 및 HWND는 기 설정된 기준에 의해 판단될 수 있다. 기 설정된 기준은 현재까지 측정된 명령어 또는 명령어들로 구성된 함수의 수행시간이 일정한 경우와 일정하지 않은 경우를 고려하여 정의되었다. 다만, 기 설정된 기준은 정의될 수 있는 SWND 및 HWND의 일 예일뿐 상기 예에 한정되지 않으며 일측에 따른 발명이 속하는 분야에서 통상의 지식을 가진 자가 용이하게 유추할 수 있는 범위를 포함할 수 있다. 다음의 표 1에서 SWND 및 HWND의 일 예가 분류되어 있다.
종류


SWND

스케쥴 타임

러닝 상태를 제외한 모든 스레드 상태

이벤트 또는 타이머 대기(EventWait(), sleep(),…)

인터럽트 관리

인터럽트 관리 명령어

인터럽스 서비스 루틴

동적 자원 할당

메모리 할당/비할당

스레드 생성/종료

비결정적 사용자 함수

비지 웨이팅(Busy waiting)

비결정적 외부 디바이스 접속

비결정적 하드웨어 디바이스를 위한 블록 접속(Blocked access)

기타

HWND

외부 메모리 접속

DRAM 접속

캐시 미스(Cache miss)

명령어/데이터 캐시 미스

브랜치(Branch)

동적 브랜치 예측(Dynamic branch prediction)

기타
또한, SWND 및 HWND는 표 1에 예시된 경우가 아니더라도 스레드의 기능을 수행하는데 있어서 결정적이지 않은 모든 수행 구간을 포함할 수 있다.
도 5는 스레드의 상태 변화에 따른 프로그레스 카운터의 동작여부를 나타낸 도면이다.
운영체제는 응용 프로그램을 구성하는 여러 스레드들을 통하여 시스템 자원이 효율적으로 활용될 수 있도록 관리 및 스케쥴링 한다. 운영체제에 의하여 스레드가 스케쥴 될 때 도 5와 같은 상태 전이를 하게 된다. 스레드는 러닝 상태(running state)에 있는 경우에만 실질적인 수행이 이루어 질 수 있다. 따라서 스레드 프로그레스 트래킹 장치는 스레드가 러닝 상태가 아닌 경우에는 결정적 프로그레스 카운터(DPC)가 동작하지 않도록 SWND 신호를 제어한다. 예를 들면, 스레드 프로그레스 트래킹 장치는 스레드가 러닝 중에 인터럽트(interrupt)가 발생하면 SWND 신호를 세트(set)하여 DPC가 동작하지 않도록 한다. 인터럽트 서비스 루틴 수행 후 스케쥴러 디스패치되어 다시 스레드가 러닝 상태가 되면, 스레드 프로그레스 트래킹 장치는 SWND 신호를 클리어(clear)하여 DPC가 동작하도록 한다. 즉, 스레드 프로그레스 트래킹 장치는 해당 스레드의 DPI가 결정적 수행인 경우에만 증가하도록 한다.
도 6은 일 실시예에 따른 결정적 프로그레스 카운터와 스레드 별 결정적 프로그레스 인덱스의 관계를 나타낸 예이다.
도 6을 참조하면, 결정적 프로그레스 카운터 (DPC)는 프로세서 별로 위치하여 SWND와 HWND신호에 의하여 활성화 여부가 결정될 수 있다. 도 6에서는 OR 논리회로로서 SWND 또는 HWND 신호가 세트된 경우에는 카운터가 불활성화 되도록 구성되어 있다. 여기서 카운터의 활성화 여부는 카운터의 동작 및 부동작 여부를 의미한다. 또한 SWND와 HWND신호에 의하여 카운터가 제어되는 방식은 다양한 방식으로 가능하다. 스레드 프로그레스 트래킹 장치는 스레드 별로 각각의 DPI를 저장할 수 있는 메모리 공간이 있으며 러닝 상태에 있는 스레드의 DPI 메모리에 현재의 DPC 값을 복사할 수 있다. 즉, 스레드 프로그레스 트래킹 장치는 DPC를 통해 카운트 된 값을 DPI로 복사할 수 있다. 이때, 스레드 프로그레스 트래킹 장치는 주기적으로 DPC의 값을 수행 중인 DPI 메모리에 복사할 수도 있다. 그러나 계속적으로 DPC 값을 DPI 메모리에 복사하는 것은 런타임 성능의 저하를 가져오기 때문에 수행 중인 스레드의 DPI는 DPC 자체가 표시 하도록 한다. 그리고 수행 중인 스레드에서 다른 스레드로 컨텍스트 스위치(context switch) 되는 시점에 DPC 값을 DPI 메모리에 복사할 수 있다. 스레드 프로그레스 트래킹 장치는 다른 스레드가 디스패치(dispatch)되어 러닝 상태로 전이되는 경우 상기 다른 스레드의 DPI 메모리에 저장되어 있던 DPI 값을 DPC에 세트하여 이전 수행 지표인 DPI 값부터 DPC가 카운트 되도록 한다.
또한, 스레드 프로그레스 트래킹 장치는 다시 컨텍스트 스위치 이전의 스레드로 다시 컨텍스트 스위치가 발생하는 경우 상기 이전의 스레드에 해당하는 DPI 메모리에 저장된 DPI 값을 로딩하여 DPC의 초기값으로 세트할 수 있다.
또한, 결정적 프로그레스 카운터(DPC)는 시스템 클럭에 기초하여 카운트를 할 수 있으며 SWND 또는 HWND 신호에 의하여 카운터의 동작이 제어됨으로써 결정적 수행에서만 카운터가 증가하도록 할 수 있다.
도 7은 일 실시예에 따른 스레드 프로그레스 트래킹 방법을 설명하기 위한 흐름도이다.
710단계에서, 스레드 프로그레스 트래킹 장치는 응용 프로그램을 구성하는 적어도 하나의 스레드(Thread)를 선택한다. 스레드 프로그레스 트래킹 장치는 사용자가 요구하는 기능을 수행하는 스레드를 선택할 수 있다. 스레드의 선택은 스레드의 진행 상황을 측정하기 위한 전제가 된다.
720단계에서, 스레드 프로그레스 트래킹 장치는 상기 스레드를 구성하는 적어도 하나의 명령어의 수행 방식이 일정한 사이클을 가지는 결정적(Deterministic) 방식인지 또는 일정하지 않은 지연 사이클을 가지는 비결정적(Non-deterministic) 방식인지 판단한다.
730단계에서, 스레드 프로그레스 트래킹 장치는 명령어 수행 방식이 비결정적 방식이면 결정적 프로그래스 카운터를 동작시키지 않고, 비결정적 명령어를 수행한다.
740단계에서, 스레드 프로그레스 트래킹 장치는 상기 적어도 하나의 명령어 중에서 상기 결정적 방식으로 수행되는 명령어인 경우에 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)에 기초하여 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 생성한다. 여기서 결정적 프로그레스 카운터(DPC)는 하드웨어에 기초한 프로세서의 명령어 수준에서 비결정적 방식으로 상기 명령어를 수행하는 하드웨어 비결정적 수행(HWND) 신호 또는 소프트웨어에 기초한 명령어들로 구성된 함수 수준에서 비결정적 방식으로 상기 함수를 수행하는 소프트웨어 비결정적 수행(SWND) 신호에 의하여 동작이 제어될 수 있다.
또한, 스레드 프로그레스 트래킹 장치는 상기 결정적 프로그레스 인덱스가 생성된 이후에 스레드를 구성하는 명령어의 수행 방식이 결정적인 경우에는 계속하여 결정적 프로그레스 인덱스를 생성할 수 있다.
또한, 일측에 따른 스레드 프로그레스 트래킹 방법은 각 스레드 별로 상기 각 스레드에 대응하는 결정적 프로그레스 인덱스(DPI)를 메모리에 저장하는 단계 및 상기 스레드가 러닝 상태에 있으면 현재의 결정적 프로그레스 카운터(DPC) 값을 상기 메모리로 복사하는 단계를 더 포함할 수 있다. 스레드 프로그레스 트래킹 방법은 스레드가 러닝 상태에 있을 때 DPC 값을 스레드의 DPI 메모리에 저장하여 DPI값을 생성할 수 있다.
또한, 상기 복사하는 단계는 상기 스레드가 다른 스레드로 컨텍스트 스위치(context switch)되는 시점에서 상기 결정적 프로그레스 카운터(DPC) 값을 상기 결정적 프로그레스 인덱스(DPI)로 상기 메모리에 복사하고, 상기 다른 스레드에서 상기 컨텍스트 스위치 이전의 스레드로 다시 컨텍스트 스위치 되는 경우, 상기 메모리에 복사된 결정적 프로그레스 인덱스(DPI)를 결정적 프로그레스 카운터(DPC)로 로딩하는 단계를 더 포함할 수 있다.
도 8은 일 실시예에 따른 운영체제의 스케쥴러 동작에서 비결정적 함수가 수행 되는 경우를 나타낸 흐름도이다.
SWND 신호는 스레드의 러닝 상태에서 비결정적 함수가 수행되는 경우에도 발생할 수 있다. 예를 들면, 스레드에 "malloc"과 같은 동적 메모리 할당 시스템 함수가 호출되는 경우 "malloc"의 수행 시간이 일정하지 않기 때문에 스레드 프로그레스 트래킹 장치는 "malloc" 함수를 호출하는 시점에서 결과를 받을 때까지 SWND 수행 구간으로 분류하여 해당 구간에서는 DPC가 동작하지 않도록 해야 한다. 이렇게 수행 시간이 일정하지 않은 "malloc"과 같은 함수를 비결정적 함수(ND function)라고 한다.
801 및 803단계에서 스레드 프로그레스 트래킹 장치는 운영체제에 의한 스케쥴러 및 결정적 프로그레스 인덱스(DPI) 모듈을 초기화한다. 초기화 과정은 새로 수행되는 절차와 기존에 수행된 절차가 구별되게 하기 위함이다.
805단계에서 스레드 프로그레스 트래킹 장치는 스케쥴러 상에서 수행될 명령어에 따라 준비된 스레드를 선택한다. 수행될 명령어는 스레드마다 다르므로 스케쥴러 상에서 정해진 수행 명령어에 따라 스레드가 선택된다.
807단계에서 스레드 프로그레스 트래킹 장치는 스레드에 저장된 결정적 프로그레스 인덱스(DPI)를 결정적 프로그레스 카운터(DPC)의 초기 값으로 세팅한다. 스레드에서 DPC 값이 처음부터 시작된 경우는 0부터 시작될 수도 있지만, 컨텍스트 스위치로 인해 다른 스레드에서 다시 원래의 스레드로 스위치 된 경우에는 DPI 메모리에 저장되어 있는 DPI를 DPC의 초기 값으로 세팅하여 카운트를 시작할 수 있다.
809 및 811단계에서 스레드 프로그레스 트래킹 장치는 스레드의 스레드 제어 블록(Thread Control Block)에 비결정적 함수(ND Function)가 수행 중임을 나타내기 위해 설정된 플래그 값이 세트되어 있는지 판단한다. 스레드 프로그레스 트래킹 장치는 스레드의 러닝 상태에서 비결정적 함수가 수행되는 경우를 나타내기 위해 스레드 제어 블록의 플래그를 이용한다. 즉, 일반적인 스케쥴러 알고리즘에 SWND 구간에서 DPC 카운터가 증가하지 않도록 코드가 추가된다.
813단계에서 스레드 프로그레스 트래킹 장치는 스레드 제어 블록의 플래그 값이 세트되지 않은 경우에는 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정하고, 815단계에서 스레드 프로그레스 트래킹 장치는 비결정적 수행(SWND) 신호를 클리어하여 상기 중지된 결정적 프로그레스 카운터를 동작시킨다. 각각의 구간별 보정해 주어야 하는 DPC 사이클을 정의하고 정의된 값에 따라 DPC를 보정한다. 보정 가능한 DPC 사이클은 세트, 클리어, 비활성화와 같이 형식적으로 사용되는 동작에 필요한 사이클을 포함할 수 있다. 예를 들면, SWND를 세트(set)하는데 사용된 수행시간이 4 사이클이라면 스레드에서 명령어를 수행하는데 필요한 사이클이 아니므로 SWND를 클리어 하기 전에 DPC 값에서 4 사이클을 빼서 보정한다. 마찬가지로 비결정적 함수를 호출하는 경우에도 DPC 값을 보정해야 한다.
817단계에서 스레드 프로그레스 트래킹 장치는 스레드 제어 블록의 플래그 값이 세트된 경우에는 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터(DPC)를 중지시킨다.
819 및 821단계에서 스레드 프로그레스 트래킹 장치는 스레드를 디스패치하여 상기 스레드가 러닝 상태가 된다. SWND가 클리어 된 뒤에는 DPC가 동작하므로 스레드에 요구된 명령어가 계속하여 수행된다(B).
823 및 825단계에서 스레드 프로그레스 트래킹 장치는 상기 러닝 상태인 스레드에서 스케쥴 이벤트가 발생하면 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터(DPC)를 중지시킨다. 스케쥴 이벤트는 인터럽트가 일반적인 예이며, 입출력 대기, 비결정적 함수 호출과 같은 경우를 포함할 수 있다.
827 및 829 단계에서 스레드 프로그레스 트래킹 장치는 인터럽트가 발생하면 인터럽트 서비스 루틴을 수행하고, 이때 SWND 신호를 세트하여 DPC의 카운트 동작을 중지시킬 수 있다. 여기서 827 및 829 단계는 상기 823 및 825단계에서 스케쥴 이벤트가 발생하는 경우의 일 예로 포함될 수 있다.
831단계에서 스레드 프로그레스 트래킹 장치는 상기 결정적 프로그레스 카운터(DPC)가 중지된 상태에서 컨텍스트 스위치 이벤트의 발생여부를 판단하고, 837단계에서 스레드 프로그레스 트래킹 장치는 상기 컨텍스트 스위치 이벤트가 발생하면 상기 중지된 결정적 프로그레스 카운터(DPC) 값을 스위치 되기 전 스레드의 결정적 프로그레스 인덱스(DPI) 값으로 저장한다. 또한, 스레드 프로그레스 트래킹 장치는 컨텍스트 스위치가 발생하는 시점까지 수행된 컨텍스트 결과를 저장한다.
833단계에서 스레드 프로그레스 트래킹 장치는 상기 결정적 프로그레스 카운터가 중지된 상태에서 상기 스케쥴 이벤트가 종료하면 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터(DPC) 증가분을 보정하고, 835단계에서 스레드 프로그레스 트래킹 장치는 비결정적 수행(SWND) 신호를 클리어하여 상기 중지된 결정적 프로그레스 카운터(DPC)를 동작시킨다.
또한, 스레드 프로그레스 트래킹 장치는 컨텍스트가 스위치된 후 준비된 스레드를 선택하여 상기 절차를 반복할 수 있다(A).
도 9는 일 실시예에 따른 스레드가 러닝 상태에 있을 때, 비결정적 함수가 동작하는 경우의 결정적 프로그레스 카운터의 동작을 나타낸 흐름도이다. 도 9는 일반 응용 프로그램 수행 과정에서 사용자 함수가 사용되는 경우의 결정적 프로그레스 카운터의 동작을 나타낸다.
910단계에서 스레드 프로그레스 트래킹 장치는 스레드의 스레드 제어 블록에 사용자 함수(ND Function)가 수행 중임을 나타내기 위해 설정된 플래그 값이 세트되어 있는지 판단한다. SWND를 발생시킬 수 있는 여러 가지 경우에 있어서 사용자 함수의 경우는 별도의 API를 제공하여 SWND 신호가 생성될 수 있도록 한다. 대표적인 경우가 "busy waiting"을 하며 특정 기능을 반복적으로 수행하는 경우이다. 예를 들면, 외부 디바이스의 입력 큐(Queue)가 비어 있는지를 확인하여 비어 있는 경우 데이터를 추가하는 함수인 경우에 외부 디바이스의 상태에 따라 확인에 필요한 지연 시간이 비결정적이게 된다. 따라서 이와 같은 경우 스레드 프로그레스 트래킹 장치는 별도의 API를 제공하여 비결정적인 구간에서 DPC가 동작하지 않도록 할 수 있다. 다음의 일 예는 사용자 busy waiting 함수에 대한 처리 방법을 보여 주는 의사 코드(pseudo code)이다. 또한, "DetermSWNDSet()", "DetermSWNDClear()" API를 제공하여 비결정적 수행 구간을 설정할 수 있다.
Figure pat00001
Figure pat00002
920단계에서 스레드 프로그레스 트래킹 장치는 상기 플래그 값이 세트된 경우에는 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터(DPC)를 중지시킬 수 있다.
930단계에서 스레드 프로그레스 트래킹 장치는 상기 사용자 함수를 수행할 수 있다.
940단계에서 스레드 프로그레스 트래킹 장치는 상기 수행이 완료되면 상기 설정된 플래그 값을 클리어하고, 950단계에서 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정한 후, 960단계에서 비결정적 수행(SWND) 신호를 클리어하여 상기 중지된 결정적 프로그레스 카운터를 수행 시간이 일정한 결정적 구간에서만 동작시킬 수 있다.
도 10은 일 실시예에 따른 하드웨어 비결정적 수행 신호를 발생시키는 과정을 나타낸 흐름도이다.
1010단계에서 스레드 프로그레스 트래킹 장치는 결정적 프로그레스 카운터(DPC)를 초기화한다. 여기서 초기화는 시작되는 명령어 수행 절차가 기존의 명령어 수행 절차로부터 차단되는 것을 의미한다.
1020단계에서 스레드 프로그레스 트래킹 장치는 프로세서의 스톨(stall) 신호를 검토한다. 스레드 프로그레스 트래킹 장치는 스톨 신호 이외에 프로세서의 비결정적인 수행 구간을 나타낼 수 있는 프로세서의 상태 또는 신호가 있다면 DPC를 제어하는 신호로 사용하여 비결정적인 구간에 DPC가 증가하지 않도록 할 수 있다.
1030단계에서 스레드 프로그레스 트래킹 장치는 스톨 신호가 검출되는지 여부를 판단하고, 1050단계에서 스톨 신호가 검출되는 경우에는 하드웨어 비결정적 수행(HWND) 신호를 세트하여 결정적 프로그레스 카운터(DPC)의 동작을 중지시킨다.
1040단계에서 스레드 프로그레스 트래킹 장치는 스톨 신호가 검출되지 않는 경우에는 하드웨어 비결정적 수행(HWND)을 클리어하여 결정적 프로그레스 카운터(DPC)의 동작이 중지되어 있다면 다시 동작하도록 한다. 결정적 프로그레스 카운터(DPC)의 동작이 중지되지 않은 경우에는 계속해서 결정적 프로그레스 카운터(DPC)가 동작하도록 한다.
또한, 결정적 프로그레스 카운터(DPC)의 비트폭(bit-width)은 프로세서의 사이클을 고려하여 결정될 수 있다. 카운터의 비트폭이 너무 작은 경우에는 오버플로우가 자주 발생하여 카운터 업데이트 주기를 매우 작게 해야 한다. 따라서, 카운터의 비트폭을 64비트 이상으로 하면 카운터 오버플로우가 발생하지 않도록 할 수 있고, 그 결과 카운터 업데이트에 따른 성능 저하를 최소화 할 수 있다. 시스템의 동작 클락이 50MHz 이하라면 클락에 비례하게 카운터 비트폭을 줄여 구현상의 비용을 최소화할 수 있다.
위에서 설명된 실시 예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 응용 프로그램을 구성하는 적어도 하나의 스레드(Thread)를 선택하는 선택부;
    상기 스레드를 구성하는 적어도 하나의 명령어에 대하여, 수행 방식이 일정한 사이클을 가지는 결정적(Deterministic) 방식인지 또는 일정하지 않은 지연 사이클을 가지는 비결정적(Non-deterministic) 방식인지 기 설정된 기준에 기초하여 판단하는 판단부; 및
    상기 비 결정적 방식으로 수행되는 명령어를 제외한 상기 결정적 방식으로 수행되는 명령어에 대하여 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 생성하는 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)
    를 포함하는 스레드 프로그레스 트래킹(Thread Progress Tracking) 장치.
  2. 제1항에 있어서,
    상기 일정하지 않은 지연 사이클을 가지는 비결정적(Non-deterministic) 방식은
    하드웨어에 기초한 프로세서의 명령어 수준에서 비결정적 방식으로 상기 명령어를 수행하는 하드웨어 비결정적 수행(HWND); 및
    소프트웨어에 기초한 명령어들로 구성된 함수 수준에서 비결정적 방식으로 상기 함수를 수행하는 소프트웨어 비결정적 수행(SWND)
    을 포함하는 스레드 프로그레스 트래킹 장치.
  3. 제1항에 있어서,
    상기 결정적 프로그레스 카운터(DPC)는
    상기 명령어 수행방식이 결정적 방식으로 판단되면 시스템 클럭에 기초하여 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 증가시키는 스레드 프로그레스 트래킹 장치.
  4. 제1항에 있어서,
    상기 결정적 프로그레스 카운터(DPC)는
    하드웨어에 기초한 프로세서의 명령어 수준에서 비결정적 방식으로 상기 명령어를 수행하는 하드웨어 비결정적 수행(HWND) 신호 또는
    소프트웨어에 기초한 명령어들로 구성된 함수 수준에서 비결정적 방식으로 상기 함수를 수행하는 소프트웨어 비결정적 수행(SWND) 신호에 의하여 동작이 제어되는 스레드 프로그레스 트래킹 장치.
  5. 제4항에 있어서,
    상기 하드웨어 비결정적 수행(HWND) 신호는
    프로세서에서 발생하는 스톨(Stall) 신호에 기초하여 생성되는 것을 특징으로 하는 스레드 프로그레스 트래킹 장치.
  6. 제4항에 있어서,
    상기 소프트웨어 비결정적 수행(SWND) 신호는
    사용자 함수를 수행하는 경우, 별도의 코드(API)를 사용하여 생성되는 것을 특징으로 하는 스레드 프로그레스 트래킹 장치.
  7. 제1항에 있어서,
    상기 결정적 프로그레스 카운터(DPC)는
    상기 스레드가 러닝 상태(running state)에 있지 않은 경우에 상기 결정적 프로그레스 카운터(DPC)가 동작하지 않도록 소프트웨어에 기초한 명령어들로 구성된 함수 수준에서 비결정적 방식으로 상기 함수를 수행하는 소프트웨어 비결정적 수행(SWND) 신호를 제어하는 제어부
    를 포함하는 스레드 프로그레스 트래킹 장치.
  8. 제7항에 있어서,
    상기 제어부는
    상기 스레드에서 러닝 상태 중에 인터럽트(interrupt)가 발생하면 상기 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 상기 결정적 프로그레스 카운터(DPC)를 중지시키고, 상기 인터럽트 서비스 루틴 수행 후 다시 상기 스레드가 러닝 상태가 되면 상기 소프트웨어 비결정적 수행(SWND) 신호를 클리어하여 상기 결정적 프로그레스 카운터(DPC)를 동작시키는 스레드 프로그레스 트래킹 장치.
  9. 제1항에 있어서,
    상기 결정적 프로그레스 카운터(DPC)는
    프로세서 단위로 위치하는 것을 특징으로 하는 스레드 프로그레스 트래킹 장치.
  10. 제1항에 있어서,
    상기 각 스레드 별로 상기 각 스레드에 대응하는 상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 저장하는 메모리; 및
    상기 스레드가 러닝 상태에 있으면 현재의 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC) 값을 상기 메모리로 복사하는 복사부
    를 더 포함하는 스레드 프로그레스 트래킹 장치.
  11. 제10항에 있어서,
    상기 복사부는 상기 스레드가 다른 스레드로 컨텍스트 스위치(context switch)되는 시점에서 상기 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC) 값을 상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)로 상기 메모리에 복사하고,
    상기 다른 스레드에서 상기 컨텍스트 스위치 이전의 스레드로 다시 컨텍스트 스위치 되는 경우, 상기 메모리에 복사된 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)로 로딩하는 로딩부를 더 포함하는 스레드 프로그레스 트래킹 장치.
  12. 제1항에 있어서,
    상기 판단부는
    스케쥴러(Scheduler) 상에서 상기 스레드의 스레드 제어 블록에 비결정적 함수(ND Function)가 수행 중임을 나타내기 위해 설정된 플래그 값이 세트되어 있는지 판단하는 세트 판단부
    를 포함하는 스레드 프로그레스 트래킹 장치.
  13. 제12항에 있어서,
    상기 세트 판단부는
    상기 플래그 값이 세트된 경우에는 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터를 중지시키고,
    상기 플래그 값이 세트되지 않은 경우에는 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정하는
    스레드 프로그레스 트래킹 장치.
  14. 응용 프로그램을 구성하는 적어도 하나의 스레드(Thread)를 선택하는 단계;
    상기 스레드를 구성하는 적어도 하나의 명령어에 대하여, 수행 방식이 일정한 사이클을 가지는 결정적(Deterministic) 방식인지 또는 일정하지 않은 지연 사이클을 가지는 비결정적(Non-deterministic) 방식인지 판단하는 단계; 및
    상기 비 결정적 방식으로 수행되는 명령어를 제외한 상기 결정적 방식으로 수행되는 명령어에 대하여 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)에 기초하여 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 생성하는 단계
    를 포함하는 스레드 프로그레스 트래킹 방법.
  15. 제14항에 있어서,
    상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 생성하는 단계는
    하드웨어에 기초한 프로세서의 명령어 수준에서 비결정적 방식으로 상기 명령어를 수행하는 하드웨어 비결정적 수행(HWND) 신호 또는
    소프트웨어에 기초한 명령어들로 구성된 함수 수준에서 비결정적 방식으로 상기 함수를 수행하는 소프트웨어 비결정적 수행(SWND) 신호에 의하여 동작이 제어되는 스레드 프로그레스 트래킹 방법.
  16. 제14항에 있어서,
    상기 각 스레드 별로 상기 각 스레드에 대응하는 상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 메모리에 저장하는 단계; 및
    상기 스레드가 러닝 상태에 있으면 현재의 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC) 값을 상기 메모리로 복사하는 단계
    를 더 포함하는 스레드 프로그레스 트래킹 방법.
  17. 제16항에 있어서,
    상기 복사하는 단계는 상기 스레드가 다른 스레드로 컨텍스트 스위치(context switch)되는 시점에서 상기 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC) 값을 상기 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)로 상기 메모리에 복사하고,
    상기 다른 스레드에서 상기 컨텍스트 스위치 이전의 스레드로 다시 컨텍스트 스위치 되는 경우, 상기 메모리에 복사된 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)로 로딩하는 단계
    를 더 포함하는 스레드 프로그레스 트래킹 방법.
  18. 스케쥴러 상에서 수행될 명령어에 따라 준비된 스레드를 선택하는 단계;
    상기 스레드에 저장된 결정적 프로그레스 인덱스를 결정적 프로그레스 카운터의 초기 값으로 세팅하는 단계;
    상기 스레드의 스레드 제어 블록에 비결정적 함수(ND Function)가 수행 중임을 나타내기 위해 설정된 플래그 값이 세트되어 있는지 판단하는 단계;
    상기 플래그 값이 세트된 경우에는 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터를 중지시키는 단계; 및
    상기 플래그 값이 세트되지 않은 경우에는 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정하고, 상기 소프트웨어 비결정적 수행(SWND) 신호를 클리어하여 상기 중지된 결정적 프로그레스 카운터를 동작시키는 단계
    를 포함하는 스레드 프로그레스 트래킹 방법.
  19. 스레드를 디스패치하여 상기 스레드가 러닝 상태가 되는 단계;
    상기 러닝 상태인 스레드에서 스케쥴 이벤트가 발생하면 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터를 중지시키는 단계;
    상기 결정적 프로그레스 카운터가 중지된 상태에서 컨텍스트 스위치 이벤트가 발생하면 상기 중지된 결정적 프로그레스 카운터 값을 상기 스레드의 결정적 프로그레스 인덱스 값으로 저장하는 단계; 및
    상기 결정적 프로그레스 카운터가 중지된 상태에서 상기 스케쥴 이벤트가 종료하면 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정하고, 상기 소프트웨어 비결정적 수행(SWND) 신호를 클리어하여 상기 중지된 결정적 프로그레스 카운터를 동작시키는 단계
    를 포함하는 스레드 프로그레스 트래킹 방법.
  20. 제14항에 있어서,
    상기 판단하는 단계는 상기 스레드의 스레드 제어 블록에 사용자 함수(ND Function)가 수행 중임을 나타내기 위해 설정된 플래그 값이 세트되어 있는지 판단하는 단계를 포함하고,
    상기 플래그 값이 세트된 경우에는 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터를 중지시키는 단계;
    상기 사용자 함수를 수행하는 단계;
    상기 수행이 완료되면 상기 설정된 플래그 값을 클리어하고, 실제 스레드의 코드를 수행하는데 사용되지 않은 결정적 프로그레스 카운터 증가분을 보정한 후, 상기 소프트웨어 비결정적 수행(SWND) 신호를 클리어하여 상기 중지된 결정적 프로그레스 카운터를 동작시키는 단계;
    를 더 포함하는 스레드 프로그레스 트래킹 방법.
KR1020100063744A 2010-07-02 2010-07-02 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치 KR101635816B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020100063744A KR101635816B1 (ko) 2010-07-02 2010-07-02 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치
US13/156,492 US8943503B2 (en) 2010-07-02 2011-06-09 Apparatus and method for thread progress tracking using deterministic progress index
EP11170970.5A EP2418582A3 (en) 2010-07-02 2011-06-22 Apparatus and method for thread progress tracking using deterministic progress index

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100063744A KR101635816B1 (ko) 2010-07-02 2010-07-02 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20120003088A true KR20120003088A (ko) 2012-01-10
KR101635816B1 KR101635816B1 (ko) 2016-07-04

Family

ID=44582120

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100063744A KR101635816B1 (ko) 2010-07-02 2010-07-02 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치

Country Status (3)

Country Link
US (1) US8943503B2 (ko)
EP (1) EP2418582A3 (ko)
KR (1) KR101635816B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130091368A (ko) * 2012-02-06 2013-08-19 삼성전자주식회사 커널 수행 순서 스케줄링 방법 및 장치
KR101396781B1 (ko) * 2013-01-08 2014-05-20 주식회사 한올테크놀로지 응용프로그램 관리장치 및 관리방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102028663B1 (ko) * 2012-07-24 2019-10-04 삼성전자주식회사 에러 검출 방법 및 장치
US10108400B1 (en) * 2015-01-06 2018-10-23 Rockwell Collins, Inc. Rapid avionics development environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030233394A1 (en) * 2002-06-14 2003-12-18 Rudd Kevin W. Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
KR100531433B1 (ko) * 1999-12-09 2005-11-28 인텔 코오퍼레이션 다중스레드 프로세서내의 이벤트 어커런스를 처리하는방법 및 장치
US20080104610A1 (en) * 2006-10-30 2008-05-01 Norton Scott J Hardware threads processor core utilization

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3348294B2 (ja) 1992-06-12 2002-11-20 ソニー株式会社 ディジタルコンピュータシステム
US5845310A (en) * 1993-12-15 1998-12-01 Hewlett-Packard Co. System and methods for performing cache latency diagnostics in scalable parallel processing architectures including calculating CPU idle time and counting number of cache misses
US5857097A (en) 1997-03-10 1999-01-05 Digital Equipment Corporation Method for identifying reasons for dynamic stall cycles during the execution of a program
US5835705A (en) 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
KR100279810B1 (ko) 1998-05-23 2001-02-01 윤종용 멀티 타스크 시스템의 퍼포먼스 측정방법
US6625635B1 (en) 1998-11-02 2003-09-23 International Business Machines Corporation Deterministic and preemptive thread scheduling and its use in debugging multithreaded applications
JP2004078338A (ja) 2002-08-12 2004-03-11 Fujitsu Ltd コンピュータ性能評価方法及び装置
EP1856612B1 (en) 2005-01-28 2008-10-01 International Business Machines Corporation Method for counting instructions for logging and replay of a deterministic sequence of events
US7426684B2 (en) * 2005-04-29 2008-09-16 Hewlett-Packard Development Company, L.P. Lost-cycle measurement using cycle counter
US7895579B2 (en) 2006-06-16 2011-02-22 Microsoft Corporation Automated method and system for collecting and reporting API performance profiles
KR20080052343A (ko) 2006-12-05 2008-06-11 한국전자통신연구원 리눅스 커널 실시간 성능 측정 장치 및 방법
US7617385B2 (en) 2007-02-15 2009-11-10 International Business Machines Corporation Method and apparatus for measuring pipeline stalls in a microprocessor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100531433B1 (ko) * 1999-12-09 2005-11-28 인텔 코오퍼레이션 다중스레드 프로세서내의 이벤트 어커런스를 처리하는방법 및 장치
US20030233394A1 (en) * 2002-06-14 2003-12-18 Rudd Kevin W. Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US20080104610A1 (en) * 2006-10-30 2008-05-01 Norton Scott J Hardware threads processor core utilization

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130091368A (ko) * 2012-02-06 2013-08-19 삼성전자주식회사 커널 수행 순서 스케줄링 방법 및 장치
KR101396781B1 (ko) * 2013-01-08 2014-05-20 주식회사 한올테크놀로지 응용프로그램 관리장치 및 관리방법
WO2014109487A1 (ko) * 2013-01-08 2014-07-17 주식회사 한올테크놀로지 응용프로그램 관리장치 및 관리방법
CN104919415A (zh) * 2013-01-08 2015-09-16 韩奥科技有限公司 用于管理应用程序的装置和方法

Also Published As

Publication number Publication date
EP2418582A3 (en) 2017-03-22
KR101635816B1 (ko) 2016-07-04
EP2418582A2 (en) 2012-02-15
US8943503B2 (en) 2015-01-27
US20120005679A1 (en) 2012-01-05

Similar Documents

Publication Publication Date Title
US9336114B2 (en) Apparatus and method for detecting error
US8695002B2 (en) Multi-threaded processors and multi-processor systems comprising shared resources
US8046775B2 (en) Event-based bandwidth allocation mode switching method and apparatus
US20120137295A1 (en) Method for displaying cpu utilization in a multi-processing system
US8930950B2 (en) Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
JP6495319B2 (ja) マルチスレッディング・コンピュータシステムにおけるアイドル時間累積
KR20180053359A (ko) 다중-버전형 태스크들의 효율적 스케줄링
GB2540070B (en) Hardware counters to track utilization in a multithreading computer system
JP2006285350A (ja) Smtプロセッサ用課金処理装置,課金処理方法,および課金処理プログラム
US9760411B2 (en) Switching a locking mode of an object in a multi-thread program
EP2551767A1 (en) Method and device for adjusting clock interrupt cycle
EP2420930A2 (en) Apparatus and method for thread scheduling and lock acquisition order control based on deterministic progress index
KR101203099B1 (ko) 운영체제 태스크의 실행시간 모니터링 방법 및 시스템
US20230127112A1 (en) Sub-idle thread priority class
KR101635816B1 (ko) 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치
KR101892273B1 (ko) 스레드 프로그레스 트래킹 방법 및 장치
US9323642B2 (en) Calculation apparatus, calculation method, and recording medium for calculation program
KR102443089B1 (ko) 컴퓨팅 디바이스에서의 동기화
CN109753338A (zh) 虚拟gpu使用率的检测方法和装置
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
Wada et al. Fast interrupt handling scheme by using interrupt wake-up mechanism
US7904703B1 (en) Method and apparatus for idling and waking threads by a multithread processor
Drung et al. Enhance performance of program automatic online judging systems using affinity algorithm and queuing theory in SMP environment
JP2011008617A (ja) マルチスレッド実行装置、オブジェクトプログラムの生成方法、プログラム

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
FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 4