KR20120009907A - 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치 - Google Patents

결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치 Download PDF

Info

Publication number
KR20120009907A
KR20120009907A KR1020100070964A KR20100070964A KR20120009907A KR 20120009907 A KR20120009907 A KR 20120009907A KR 1020100070964 A KR1020100070964 A KR 1020100070964A KR 20100070964 A KR20100070964 A KR 20100070964A KR 20120009907 A KR20120009907 A KR 20120009907A
Authority
KR
South Korea
Prior art keywords
core
dpi
thread
lock
deterministic
Prior art date
Application number
KR1020100070964A
Other languages
English (en)
Other versions
KR101686082B1 (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 KR1020100070964A priority Critical patent/KR101686082B1/ko
Priority to US13/099,453 priority patent/US9047138B2/en
Priority to EP11174341A priority patent/EP2420930A3/en
Publication of KR20120009907A publication Critical patent/KR20120009907A/ko
Application granted granted Critical
Publication of KR101686082B1 publication Critical patent/KR101686082B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • 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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)

Abstract

마이크로 아키텍쳐를 사용하는 컴퓨터 환경에서 데이터 처리 및 특정 기능을 수행하는 응용 프로그램의 결정적(deterministic) 수행 특성을 보장하기 위한 방법 및 장치를 제공한다. 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 스레드의 락 획득 시점에서, 복수개의 코어에 대한 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI) 중 제1 코어의 DPI(my core, reference) 및 제2 코어(neighbor core)의 DPI를 로딩하는 로딩부, 상기 제1 코어의 DPI 및 상기 제2 코어의 DPI를 비교하는 비교부 및 상기 제1 코어의 DPI가 상기 제2 코어의 DPI 보다 작고, 상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어이면, 상기 제1 코어의 스레드에 락을 부여하는 제어부를 포함한다.

Description

결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치{APPARATUS AND METHOD FOR THREAD SCHEDULING AND LOCK ACQUISITION ORDER CONTROL BASED ON DETERMINISTIC PROGRESS INDEX}
기술분야는 마이크로 아키텍쳐를 사용하는 컴퓨터 환경에서 데이터 처리 및 특정 기능을 수행하는 응용 프로그램의 결정적(deterministic) 수행 특성을 보장하기 위한 방법 및 장치에 관한 것이다.
개인 휴대 단말의 보급과 정보 처리 요구량이 증가함에 따라 컴퓨팅 기기들은 점점 복잡하고, 다양한 응용들을 동시에 처리해야 하는 상황에 놓여 있다. 또한, 실시간 처리를 요구하는 멀티미디어와 같은 어플리케이션이 증가함에 따라, 컴퓨팅 기기들의 시스템 성능에 대한 요구량도 점점 증가하고 있으며, 단일 프로세서 만으로는 어플리케이션을 효율적으로 처리할 수 없는 상황에 놓여 있다.
이러한 상황을 극복하기 위해 반도체 집적기술의 발달과 멀티 프로세서 컴퓨팅 기술이 등장하였다. 멀티 프로세서를 사용하는 경우 단일 프로세서보다 에너지 효율 및 성능향상에 있어서 많은 이점이 있다. 그러나 멀티 프로세서를 이용한 시스템의 설계 및 개발은 쉽지 않으며, 특히 동시성을 가지는 시스템의 검증이 어렵다. 실제 동시성을 가진 시스템의 검증 비용은 기존 순차적 시스템 개발기간의 코어 수의 제곱에 비례하여 증가한다. 검증 비용을 줄이기 위한 다양한 방법들이 제안되고 있는데 다양한 방법의 효율적인 구현을 위해 기본적으로 필요한 기능은 다양한 명령어들을 수행하는 응용 프로그램의 성능 및 진행 상황을 정확하게 측정하는 것이다. 또한, 스레드의 수행 순서가 항상 일정하게 수행되면서, 선순위 스레드의 수행을 기다리는데 필요한 대기 시간이 최소화되어야 한다.
일 측면에 있어서, 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 스레드의 락 획득 시점에서, 복수개의 코어에 대한 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI) 중 제1 코어의 DPI(my core, reference) 및 제2 코어(neighbor core)의 DPI를 로딩하는 로딩부, 상기 제1 코어의 DPI 및 상기 제2 코어의 DPI를 비교하는 비교부 및 상기 제1 코어의 DPI가 상기 제2 코어의 DPI 보다 작고, 상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어이면, 상기 제1 코어의 스레드에 락을 부여하는 제어부를 포함한다.
상기 제어부는 상기 제1 코어의 DPI가 상기 제2 코어의 DPI 와 같은 값이고, 상기 제1 코어의 아이디(ID)가 상기 제2 코어의 아이디(ID) 보다 작은 값을 가지면, 상기 제1 코어의 스레드에 락을 부여할 수 있다.
상기 로딩부는 상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어가 아니면, 상기 복수개의 코어 중 제3 코어의 DPI를 로딩할 수 있다.
다른 일 측면에 있어서, 결정적 프로그레스 인덱스 기반 락(lock) 획득 순서 제어 장치는 동일한 코어 상에서 수행되는 특정 그룹의 스레드 DPI를 누적하여 코어 DPI를 생성하는 코어 DPI 생성부 및 상기 생성된 코어 DPI를 저장하는 메모리부를 더 포함할 수 있다.
상기 특정 그룹 스레드는 동일한 공유 자원에 접근하기 위해 락(lock) 획득을 시도하는 스레드의 집합일 수 있다.
또 다른 일 측면에 있어서, 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 상기 제1 코어의 DPI를 실제 응용수행을 통한 비결정적 구간의 측정 값만큼 보정하는 코어 DPI 보정부를 더 포함할 수 있다.
일 측면에 있어서, 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치는 특정 입력에 대하여 수행되는 스레드의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 측정하는 측정부, 상기 측정된 스레드의 DPI에 기초하여 락 획득 시점에서의 각 스레드별 DPI가 저장된 데이터베이스부 및 상기 저장된 각 스레드별 DPI에 기초하여 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI가 작은 순서대로 스레드의 수행 순서를 스케줄링 하는 제어부를 포함한다.
상기 제어부는 상기 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI 증가 값이 작은 순서대로 스레드의 수행 순서를 스케줄링 할 수 있다.
일 측면에 있어서, 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법은 스레드의 락 획득 시점에서, 복수개의 코어에 대한 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI) 중 제1 코어의 DPI(my core, reference) 및 제2 코어(neighbor core)의 DPI를 로딩하는 단계, 상기 제1 코어의 DPI 및 상기 제2 코어의 DPI를 비교하는 단계 및 상기 제1 코어의 DPI가 상기 제2 코어의 DPI 보다 작고, 상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어이면, 상기 제1 코어의 스레드에 락을 부여하는 단계를 포함한다.
상기 락을 부여하는 단계는 상기 제1 코어의 DPI가 상기 제2 코어의 DPI 와 같은 값이고, 상기 제1 코어의 아이디(ID)가 상기 제2 코어의 아이디(ID) 보다 작은 값을 가지면, 상기 제1 코어의 스레드에 락을 부여할 수 있다.
상기 로딩하는 단계는 상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어가 아니면, 상기 복수개의 코어 중 제3 코어의 DPI를 로딩할 수 있다.
다른 일 측면에 있어서, 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법은 동일한 코어 상에서 컨텍스트 스위치 이벤트 발생 경우에 이전 스레드의 DPI를 다음 스레드의 DPI 시작 시점으로 사용하여, 코어 DPI를 생성하는 단계 및 상기 생성된 코어 DPI를 저장하는 단계를 더 포함할 수 있다.
또 다른 일 측면에 있어서, 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법은 상기 제1 코어의 DPI를 실제 응용수행을 통한 비결정적 구간의 측정 값만큼 보정하는 단계를 더 포함할 수 있다.
또 다른 일 측면에 있어서, 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법은 상기 비결정적 구간의 최소 및 최대 값을 측정하는 단계를 더 포함하고, 상기 보정하는 단계는 상기 측정된 최소 및 최대 값에 기초하여 결정적인 측정 값만큼 보정할 수 있다.
일 측면에 있어서, 결정적 프로그레스 인덱스 기반 스레드 스케줄링 방법은 특정 입력에 대하여 수행되는 스레드의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 측정하는 단계, 상기 측정된 스레드의 DPI에 기초하여 락 획득 시점에서의 각 스레드별 DPI를 저장하는 단계 및 상기 저장된 각 스레드별 DPI에 기초하여 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI가 작은 순서대로 스레드의 수행 순서를 스케줄링 하는 단계를 포함한다.
상기 스케줄링 하는 단계는 상기 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI 증가 값이 작은 순서대로 스레드의 수행 순서를 스케줄링 할 수 있다.
결정적 프로그레스 인덱스 기반 락(lock) 제어 방법을 이용함으로써 범용 마이크로 아키텍쳐에서 제공하는 하드웨어 기능을 활용할 수 있어 적은 비용으로 구현할 수 있다.
또한, 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 코어 단위로 결정적 프로그레스 인덱스를 이용함으로써 스레드의 락 순서를 효율적으로 제어할 수 있다.
또한, 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 다중 코어 상태에서 병렬 처리되는 프로그램들의 결정적인 수행 환경을 매우 적은 런타임 오버헤드(runtime overhead)를 가지고 제공할 수 있다.
또한, 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 다중 코어의 결정적 프로그레스 인덱스를 보정함으로써 선순위 스레드 대기 오버헤드를 최소화 할 수 있다.
또한, 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치는 응용 프로그램의 수행 특성에 적합한 결정적 스레드 스케줄링을 제공할 수 있다.
도 1은 일반적인 응용 프로그램이 수행되는 컴퓨팅 환경을 나타낸 도면이다.
도 2는 일반적인 병렬 수행과 결정적 방식에 따른 병렬 수행을 나타낸 도면이다.
도 3은 균형 락 획득(BLA) 및 불균형 락 획득 (IBLA) 경우에 결정적 병렬 수행의 일 예를 나타낸 도면이다.
도 4a 및 도 4b는 균형 락 획득(BLA) 및 불균형 락 획득 (IBLA) 경우에 스레드별 결정적 프로그레스 인덱스 기준 수행의 일 예를 나타낸 도면이다.
도 5는 일 실시예에 따른 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치의 블록도이다.
도 6은 일 실시예에 따른 코어 결정적 프로그레스 인덱스를 이용하는 경우의 불균형 락 획득 (IBLA) 수행을 나타낸 도면이다.
도 7은 일 실시예에 따른 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치의 블록도이다.
도 8은 일 실시예에 따른 결정적 프로그레스 인덱스 기반 스레드 스케줄링을 이용하는 경우의 불균형 락 획득 (IBLA) 수행을 나타낸 도면이다.
도 9는 일 실시예에 따른 코어 결정적 프로그레스 인덱스를 생성하는 방법을 나타낸 흐름도이다.
도 10은 일 실시예에 따른 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법을 나타낸 흐름도이다.
도 11은 일 실시예에 따른 결정적 프로그레스 인덱스 기반 스레드 스케줄링 방법을 나타낸 흐름도이다.
이하, 일측에 따른 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 일반적인 응용 프로그램이 수행되는 컴퓨팅 환경을 나타낸 도면이다.
일반적으로 응용 프로그램은 프로세서 상에서 메모리와 하드웨어 디바이스를 자원으로 하여 정해진 기능을 수행한다. 메모리는 보통의 경우 계층적 구조를 가진다. 이때, 접속(access) 속도가 빠른 메모리는 로컬 버스에 구비되고, 접속 속도는 느리지만 저렴한 메모리는 시스템 버스상에 구비될 수 있다. 또한, 다중 프로세서는 높은 성능의 요구사항을 만족시키기 위해 하나의 시스템에 프로세서를 집적하여 응용 프로그램을 병렬처리 한다.
일반적으로 응용 프로그램은 하나 이상의 스레드로 구성된다. 따라서, 하나의 프로세서 상에서 다중 스레드가 수행될 수 있다. 여기서 프로세서는 코어와 동일한 의미로 사용될 수 있다. 하나의 프로세서 상에서 다중 스레드가 수행되는 것을 멀티 스레딩이라고 한다. 따라서, 응용 프로그램의 성능 및 진행 사항을 측정하기 위해서는 응용 프로그램을 구성하는 스레드의 성능 및 진행 상황을 측정할 수 있어야 한다. 본 발명의 일실시예에 따른 스레드의 성능 및 진행 상황을 측정하는 방법으로는 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 이용하는 방법이 있다. 스레드는 특정 기능을 수행하기 위한 명령어들로 구성될 수 있다. 명령어의 수행 방식은 결정적(deterministic) 수행 방식 및 비결정적(nondeterministic) 수행 방식으로 구분될 수 있다. 명령어의 수행 방식이 결정적 수행 방식인 경우, 명령어의 수행 완료 시점 또는 명령어 그룹의 수행완료 시점은 항상 일정한 사이클을 갖는다. 반면, 명령어의 수행 방식이 비 결정적 수행 방식인 경우, 명령어 혹은 명령어 그룹의 수행 완료 시점은 일정하지 않은 지연 사이클을 갖는다.
결정적 프로그레스 인덱스(이하 DPI라 함)는 스레드의 수행 중 비결정적으로 수행되는 구간을 제외하고, 결정적으로 수행되는 구간만을 나타내는 값으로 결정적 프로그레스 카운터(Deterministic Progress Counter, DPC)를 이용하여 생성할 수 있다. 스레드의 DPI는 스레드의 진행 상황을 측정하는 지표로 사용될 수 있다. 여기서 비결정적 수행 구간과 결정적 수행 구간은 미리 정의된 일정 기준에 의해 구별될 수 있다. 스레드의 DPI는 해당 스레드의 DPI 전용 메모리 또는 일반 메모리에 저장될 수 있다. 도 1은 일반적으로 구성될 수 있는 컴퓨팅 환경의 일 예이며, 일측에 따른 결정적 프로그레스 인덱스 기반 락(lock) 순서 제어 및 스레드 스케줄링 장치의 적용 환경은 도 1에 도시된 예에 한정되지 않는다.
도 2는 일반적인 병렬 수행과 결정적 방식에 따른 병렬 수행을 나타낸 도면이다.
일반적인 병렬 수행은 먼저 락(lock) 획득을 시도한 시간 순서에 따라 락 획득이 결정된다. 결정적 방식에 따른 병렬 수행은 락 획득 시도의 순서에 상관없이 정해진 기준에 의하여 락 획득이 결정된다. 결정적 방식에 따른 병렬 수행은 결정적 수행 방법으로 표현될 수 있다. 결정적 수행 방법은 스레드의 수행 순서를 일정하게 보장하는 방법으로, 동일한 입력이 이루어지면 동일한 출력이 보장된다. 결정적 수행 방법은 다중 코어 상에서 병렬 수행으로 인한 동시성 문제를 해결하는데 효율적인 방법이다.
그러나 결정적 수행 방법은 스레드의 수행을 인위적으로 제어함에 따라 성능 저하가 발생한다. 즉, 일반적인 병렬 수행은 시간 순서에 따라 먼저 수행된 스레드가 우선순위를 갖고 수행되지만, 결정적 수행 기법은 정해진 순서 또는 특정 기준에 의해 스레드가 수행된다. 따라서, 시간상으로 락을 획득하기 위해 먼저 도달한 스레드보다 먼저 수행되어야 하는 스레드를 위하여 수행을 멈추고 기다려야 하는 경우가 발생한다. 또한, 결정적 수행 방법은 수행 순서를 제어하기 위해 메모리 접근이 필요하고, 수행 순서 선정을 위해 추가적인 컴퓨터 자원을 사용함으로써 오버헤드를 발생시킨다.
결정적 수행 방법은 병렬 프로그램들의 모든 메모리 접근에 대하여 결정적 순서를 보장하는 강한 결정적 수행 방법(strong deterministic execution)과 공유 메모리 접근에 대해서만 결정적 순서를 보장하는 약한 결정적 수행 방법(weak deterministic execution)으로 구분될 수 있다. 강한 결정적 수행 방법은 모든 메모리 접근에 대하여 순서를 보장하기 위해 별도의 하드웨어 모듈이 필요하며, 하드웨어 모듈의 지원이 없으면 성능 저하가 심하게 발생한다. 약한 결정적 수행 방법은 공유 메모리에 대한 락 획득 순서를 보장하기 위해 범용 마이크로 아키텍쳐에서 제공하는 하드웨어의 기능을 이용할 수 있다. 따라서, 약한 결정적 수행 방법은 복잡한 하드웨어 모듈이 필요하지 않고, DPI를 통해 소프트웨어 적으로 응용의 수행도중 발생하는 모든 락에 대한 획득 순서를 보장할 수 있다.
도 2를 참조하면, 일반적 병렬 수행은 시간 순서에 따른 락 획득을 이용한다. 스레드 1, 스레드 2 및 스레드 3은 각각 상이한 코어에서 수행되는 경우이다. 스레드 2가 수행 시간이 가장 짧으므로 먼저 락 획득을 요청한다. 스레드의 락 획득 요청은 Exclusive Read/Write와 같은 메모리를 통해 이루어질 수 있다. 스레드는 락을 획득함으로써 다른 스레드가 공유 메모리에 접근하는 것을 방지할 수 있다. 즉, 락을 통해 다른 스레드의 공유 메모리에 대한 접근을 아토믹(Atomic)하게 보호할 수 있다. 스레드 2가 수행 시간이 가장 짧으므로 먼저 락 획득을 요청하면 나머지 스레드 1 및 스레드 3은 수행 시간이 종료되더라도 공유 메모리에 대한 접근이 차단(Blocked)된다. 스레드 3은 스레드 2가 락을 획득하고, 락에 의해 보호되는 크리티컬 섹션(critical section protected by lock)이 종료된 후에 락 획득을 요청한다. 스레드 3이 락을 획득한 이후에 스레드 1은 락을 획득할 수 있다. 즉, 일반적 병렬 수행은 물리적으로 수행 시간이 짧은 순서에 따라 락 획득을 요청한다. 일반적 병렬 수행에서 스레드의 수행 상태는 예측이 불가능하며, 스레드의 락 획득 시점에 도달하는 순서 또한 예측이 불가능하다.
개발된 응용 프로그램의 안정적인 수행을 검증하기 위한 비용은 스레드의 락 획득 순서를 알고 있으면 감소시킬 수 있다. 즉, 약한 결정적 수행 방법을 이용하여 특정 기준에 따라 공유 메모리에 접근하는 스레드의 락 획득 순서를 결정하면 검증 비용을 절감할 수 있다. 도 2를 참조하면, 특정 기준에 따른 락(lock), 즉 약한 결정적 수행 방법을 통해 락 획득이 요청되고 있다. 스레드 1, 스레드 3 및 스레드 2의 순서로 락 획득 순서가 결정되어 있어서 스레드 1은 수행 시간이 가장 길지만 제일 먼저 락 획득을 요청한다. 스레드의 락 획득 순서가 특정 기준에 기초하여 결정되어 있으므로 결정적으로(deterministic) 수행 순서를 알 수 있다. 본 발명의 일 실시예에 따르면 특정 기준은 DPI가 최소인 스레드의 락 획득 순서가 우선일 수 있으며, 스레드의 DPI가 동일하면, ID가 작은 스레드의 락 획득 순서가 우선일 수 있다. 따라서 도 2의 예에서 수행 시간이 상대적으로 짧은 스레드 3 및 스레드 2는 스레드 1이 락을 획득할 때까지 공유 메모리에 대한 접근이 차단된다.
결정적 수행을 위해 락 획득 순서가 보장되면 후순위 스레드는 선순위 스레드보다 락 획득 시점에 먼저 도달할 수 있다. 이때, 후순위 스레드는 선순위 스레드가 락을 획득할 때까지 대기해야 한다. 즉, 시간 순서에 따른 락(lock) 획득 요청 경우보다 Td2 - T 시간만큼 전체 수행 시간이 지연된다. Td2 - Tc2 시간은 실제 결정적 수행에서 후순위 스레드들의 대기(waiting)에 의해 발생하는 성능 지연 시간이다.
약한 결정적 수행 방법에서 스레드의 락 획득 순서를 결정하는 기준으로 각 스레드의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 이용할 수 있다. 스레드의 DPI가 작은 순서대로 스레드의 락 획득 순서를 결정하려면, 스레드들의 DPI를 전부 메모리에서 읽어와야 한다. 순서를 결정해야 하는 스레드들의 수와 DPI를 저장한 메모리로의 접근속도에 따라 성능 지연 시간이 결정된다. DPI는 모든 코어에서 접근 가능한 공유 메모리 공간에 있어야 한다. 일반적으로, 다중 코어에서 공유 메모리는 2차 메모리 상에 존재하므로 접근 속도가 느리다. 따라서, 많은 수의 스레드별 DPI를 비교하는 과정에서 상당한 성능 저하가 발생하고, 락 획득 시도가 빈번한 응용 프로그램일수록 많은 성능 저하가 발생한다. 그러나 성능 저하가 가장 크게 발생하는 부분은 선순위 스레드를 기다려야 하는 대기 오버헤드(overhead)이다. 실험적으로 대기 오버헤드를 통해 평균 16%이상, 응용 프로그램의 특성에 따라 최대 70%이상의 성능 저하가 발생한다.
따라서, 다중 코어에서 응용 프로그램의 안정성을 검증하기 위해 약한 결정적 수행 방법을 이용하면서도, 선순위 스레드의 대기 시간을 줄이기 위한 방법이 요구된다. 이후부터 언급되는 결정적 수행 방법은 약한 결정적 수행 방법을 의미한다.
도 3은 균형 락 획득(BLA) 및 불균형 락 획득 (IBLA) 경우의 결정적 병렬 수행의 일 예를 나타낸 도면이다.
결정적 수행 방법을 이용하여 스레드의 락 획득 순서를 제어하면 대기 오버헤드(waiting overhead) 및 락 획득 스레드 선정 오버헤드가 발생한다. 이때 오버헤드는 스레드의 락 획득 패턴에 따라 다르게 발생한다. 락 획득 패턴은 균형 락 획득(Balanced Lock Acquisition, BLA) 패턴 및 불균형 락 획득(Imbalanced Lock Acquisition, IBLA) 패턴으로 구분된다.
균형 락 획득 패턴(BLA)은 다중 코어에서 병렬 수행되는 락 획득 패턴이 동일한 경우로, 스레드의 명령어(instruction)가 동일하고 입력 시점이 같은 경우를 포함한다. 즉, 다중 코어 상에서 수행되는 스레드들은 동일한 일을 수행하며 동일한 지점에서 락 획득을 요청하는 경우이다. 스레드들의 락 획득 패턴이 균형 락 획득 패턴(BLA)인 경우에는 스레드들이 거의 동일한 시점에서 락 획득을 요청하므로 대기 오버헤드로 인한 성능 저하가 작다. 상대적으로 스레드의 락 획득 순서를 선정하는 과정에서 발생하는 락 획득 스레드 선정 오버헤드로 인한 성능 저하가 크다. 따라서, 균형 락 획득 패턴(BLA)에서는 락 획득 순서를 결정하는 방법에 따라 주요한 성능 차이가 발생한다.
불균형 락 획득 패턴(IBLA)은 다중 코어에서 병렬 수행되는 락 획득 패턴이 상이한 경우로, 스레드의 명령어 및 입력 시점이 상이한 경우를 포함한다. 불균형 락 획득 패턴(IBLA)은 서로 다른 명령어를 가진 락 획득 패턴이 상이한 응용 프로그램들 간에 결정적 수행을 보장한다. 락 획득 순서를 선정하는데 필요한 시간은 균형 락 획득 패턴(BLA)과 비슷하다. 하지만, 스레드들의 락 획득 시점이 서로 다른 경우가 많아 선순위 DPI를 가진 스레드를 기다려야 하는 대기 오버헤드가 상대적으로 크게 늘어난다.
도 3을 참조하면, (A)는 균형 락 획득 패턴(BLA)의 경우로 스레드 1과 스레드 2는 스레드 프로그레스가 진행되는 동안 동일한 명령어 및 입력 시점으로 인해 락 획득을 요청하는 시점도 유사하다. 토큰(Token)은 락 획득을 의미하며, det_lock(A)는 락A 획득을 요청하는 의사(Pseudo) 코드(wait_for_token(), lock(A), pass_token())를 의미한다. 스레드 1과 스레드 2는 락A를 획득하기 위해 레이싱을 벌이고, 특정 기준에 기초하여 락A의 획득 순서가 결정될 수 있다. 특정 기준은 DPI가 최소인 스레드의 락A 획득 순서가 우선일 수 있으며, 스레드의 DPI가 동일하면, ID가 작은 스레드의 락A 획득 순서가 우선일 수 있다.
도 3을 참조하면, (B)는 불균형 락 획득 패턴(IBLA)의 경우로 스레드 1과 스레드 2의 락 획득 요청 시점이 상이하다. 스레드 2가 먼저 락A의 획득을 요청하고, 계속하여 스레드 1과 스레드 2가 상이한 시점에 락A의 획득을 요청한다. 로드 불균형은 각 스레드에 입력되는 명령어 및 명령어의 입력 시기가 상이하여 락A 획득 요청 시점이 상이한 것을 의미한다.
도 4a 및 도 4b는 균형 락 획득(BLA) 및 불균형 락 획득 (IBLA) 경우에 스레드별 결정적 프로그레스 인덱스 기준 수행의 일 예를 나타낸 도면이다.
스레드별 결정적 프로그레스 인덱스(DPI)는 Tlogical -을 기준으로 화살표의 길이에 따라 크기를 알 수 있다. Tlogical은 논리적인(logical)인 시간을 지표화한 DPI 개념을 나타낸다.
도 4a를 참조하면, 스레드 1 내지 스레드 4는 동일한 크기의 DPI를 가지고 있고, 락 획득 시점 또한 동일하므로 균형 락 획득(BLA) 패턴임을 알 수 있다. 코어 1에서는 스레드 1 및 스레드 2가 수행되고, 코어 2에서는 스레드 3 및 스레드 4가 수행된다. 스레드의 락 획득 순서를 결정하는 기준은 락 획득 시점에서 스레드의 DPI가 가장 작거나, 스레드의 DPI가 동일한 경우에는 스레드의 ID가 작은 경우를 기준으로 한다. 코어 1에서 실제 스레드 1이 수행되는 물리적인 시간(Tphysical)은 결정적 수행 구간(Deterministic Cycle Execution) 및 비결정적 수행 구간(Non-deterministic Cycle Execution)이 반영되므로 결정적 수행 구간만 반영된 DPI보다 긴 시간이 소요된다. 스레드 1의 수행이 종료된 후 스레드 2의 DPI는 0이므로 스레드 2가 수행된다. 스레드 1이 먼저 수행되는 것은 스레드 스케줄링에 의해 결정된다. 스레드 1은 락 획득을 시도하지만 스레드 2의 DPI가 더 작으므로 스레드 2에게 수행을 양보(yield)한다. 스레드 2의 수행이 종료된 후 스레드 1 및 스레드 2의 락 획득이 요청되고, 획득된 락에 의해 크리티컬 섹션(Critical Section)이 보호된다. 크리티컬 섹션은 코어 2에서 스레드 3 및 스레드 4의 공유 메모리에 대한 접근이 차단되는 구간이다.
코어 2에서도 코어 1과 동일한 방식으로 스레드 3 및 스레드 4가 수행된다. 스레드 3 및 스레드 4는 스레드 1 및 스레드 2에 비해 스레드 아이디(ID)가 크므로 스레드 1 및 스레드 2의 락 획득 순서보다 후순위이다. 균형 락 획득(BLA) 패턴이므로 스레드 1 및 스레드 2의 락 획득 순서를 결정하는 방법이 성능에 많은 영향을 준다.
도 4b를 참조하면, 스레드 1 내지 스레드 4는 서로 다른 크기의 DPI를 가지고 있고, 락 획득 시점 또한 상이하므로 불균형 락 획득(IBLA) 패턴임을 알 수 있다. 스레드의 락 획득 순서를 결정하는 기준은 락 획득 시점에서 스레드의 DPI가 가장 작거나, 스레드의 DPI가 동일한 경우에는 스레드의 ID가 작은 경우를 기준으로 한다. 스레드 1 내지 스레드 4에서 DPI는 스레드 3 > 스레드 2 > 스레드 1 = 스레드 4 의 순서이다. 스레드 1 및 스레드 4의 DPI는 20으로 동일하다. 그러나 스레드 1의 스레드 ID가 더 작으므로 락 획득(409)을 스레드 4 보다 먼저 요청할 수 있다. 코어 1에서 스레드 1이 수행된 후 스레드 1이 락 획득을 요청하지만, 스레드 2의 DPI는 0이므로, 스레드 1은 스레드 2에게 수행을 양보(yield)한다. 스레드 2의 수행이 종료된 후 스레드 1의 락 획득을 요청해야 하지만 상기 스레드 2의 수행 종료 시점에서 스레드 4의 DPI가 스레드 2의 DPI보다 작다. 스레드 1의 락 획득 요청은 스레드 4의 수행이 종료될 때까지 대기하여야 한다. 따라서 대기 시간(430)이 발생한다.
스레드 4의 수행이 종료된 후 스레드 1의 락 획득이 요청되고, 획득된 락에 의해 크리티컬 섹션(401)이 보호된다. 크리티컬 섹션에 대한 보호가 종료되는 것을 언락(unlock)이라고 한다. 스레드 1에 대하여 언락되면 스레드 4의 락 획득이 요청되고, 크리티컬 섹션(405)이 보호된다. 스레드 4에 대하여 언락된 후, 스레드 4가 수행된다. 스레드 4의 수행이 종료된 후 스레드 2의 DPI가 스레드 3의 DPI보다 작으므로 스레드 1의 수행이 종료되고, 스레드 2에 대한 락 획득(403) 및 스레드 2에 대하여 언락될 때까지 대기 시간(440)이 발생한다. 스레드 2에 대하여 언락된 후 스레드 3에 대한 락 획득(407)이 이루어진다. 두 번째 사이클에서는 스레드 1 내지 스레드 4의 DPI 순서가 스레드 2 > 스레드 1 > 스레드 3 > 스레드 4이므로 스레드 4(421), 스레드 3(419), 스레드 1(417), 스레드 2의 순서로 락 획득 순서가 결정될 것이다. 불균형 락 획득(IBLA) 패턴이므로 대기 오버헤드(430,440)를 조절하는 방법이 성능에 영향을 미친다.
불균형 락 획득(IBLA) 패턴에서는 스레드에 포함된 비결정적 수행 구간의 사이클도 상이하므로 실제 코어를 점유한 시간(Tphysical)과 결정적 구간만 반영된 DPI 값에 차이가 발생한다. 상기 차이는 비결정적 수행 구간을 의미하는 것으로 Tnd = Tphysical Tlogical로 표현될 수 있다. 불균형 락 획득(IBLA) 패턴에서는 스레드 간에 스레드의 수행 시간 및 스레드에 포함된 비결정 수행 구간도 서로 다르므로 후순위 스레드의 대기 시간이 발생한다. 상기 대기 시간은 다음과 같이 Twait = T선순위스레드_ nd T후순위스레드 _ nd로 표현될 수 있다.
따라서, 균형 락 획득(BLA) 패턴에서는 락 획득 순서를 빨리 결정하는 방법, 불균형 락 획득(IBLA) 패턴에서는 대기 오버헤드를 최소화하는 방법이 요구된다.
도 5는 일 실시예에 따른 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치의 블록도이다.
도 5를 참조하면, 일 실시예에 따른 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 코어 DPI 생성부(510), 메모리부(520), 로딩부(530), 비교부(540), 제어부(550) 및 코어 DPI 보정부(560)를 포함한다.
코어 DPI 생성부(510)는 동일한 코어 상에서 수행되는 특정 그룹의 스레드 DPI를 누적하여 코어 DPI를 생성한다. 다중 코어에서 수행되는 각 스레드의 락 획득 순서를 결정할 때 스레드별 DPI를 비교하여 결정하는 방법은 비교해야 할 스레드의 수가 증가할수록 락 획득 선정 오버헤드가 비례하여 증가한다. 코어 DPI 생성부(510)는 스레드별 DPI가 아닌 코어별 DPI를 생성한다. 특정 그룹 스레드는 동일한 공유 자원에 접근하기 위해 락(lock) 획득을 시도하는 스레드의 집합을 의미한다. 여기서 공유 자원은 다중 코어가 동일하게 접근할 수 있는 공유 메모리를 포함한다. 특정 그룹 스레드는 공유 메모리의 특정 영역에 접근하기 위해 락 획득을 시도하는 스레드의 집합 및 락 획득 순서 결정시 DPI를 비교해야 하는 스레드의 집합을 포함할 수 있다.
코어 DPI 생성부(510)는 코어에서 수행되는 특정 그룹 스레드의 DPI를 이용하여 코어 DPI를 생성한다. 코어 DPI 생성부(510)는 스레드의 컨텍스트 스위치 이벤트가 발생하면 이벤트 발생 이전의 스레드 DPI를 이벤트 발생 이후의 스레드 DPI의 시작 시점으로 사용하여 코어 단위로 DPI를 생성할 수 있다. 여기서 생성되는 스레드 및 코어의 DPI는 결정적 프로그레스 카운터(DPC)에 의해 카운트될 수 있다.
메모리부(520)는 생성된 코어 DPI를 저장한다. 스레드의 DPI가 스레드 별 DPI 메모리에 저장될 수 있는 것처럼 메모리부(520)는 생성된 코어 DPI를 메모리에 저장한다. 메모리부(520)는 다중 코어에서 동일하게 접근 할 수 있도록 공유 메모리를 포함할 수 있다.
로딩부(530)는 스레드의 락 획득 시점에서, 복수개의 코어에 대한 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI) 중 제1 코어의 DPI(my core, reference) 및 제2 코어(neighbor core)의 DPI를 로딩한다. 로딩부(530)는 스레드의 락 획득 시점에서 스레드의 락 순서를 결정하기 위해 제1 코어의 DPI를 로딩한다. 또한, 로딩부(530)는 제1 코어의 DPI와 비교의 대상이 될 수 있는 제2 코어의 DPI를 로딩한다. 제2 코어의 DPI는 복수개의 코어 중 로딩된 적이 없는 코어의 DPI를 의미한다.
또한, 로딩부(530)는 상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어가 아니면, 상기 복수개의 코어 중 제3 코어의 DPI를 로딩할 수 있다. 즉, 로딩부(530)는 제1 코어와 비교 대상이 되는 제2 코어가 복수개의 코어 중 마지막으로 로딩된 코어가 아니라면, 계속해서 비교 대상이 되는 제3 코어의 DPI를 로딩할 수 있다.
비교부(540)는 상기 제1 코어의 DPI 및 상기 제2 코어의 DPI를 비교한다. 비교부(540)는 락 획득 시점에서 스레드의 락 획득 순서를 결정하기 위해 로딩된 제1 코어의 DPI와 제2 코어의 DPI를 비교한다.
제어부(550)는 상기 제1 코어의 DPI가 상기 제2 코어의 DPI 보다 작고, 상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어이면, 상기 제1 코어의 상기 락 획득 시점에서의 스레드에 락을 부여한다. 여기서 스레드의 락 획득 순서를 결정하는 기준은 락 획득 시점에서 코어의 DPI가 가장 작거나, 코어의 DPI가 동일한 경우에는 코어의 ID가 작은 경우를 기준으로 한다. 스레드의 락 획득 순서를 결정하는 기준은 응용 프로그램의 종류에 따라 다르게 설정될 수 있다. 제어부(550)가 스레드에 락을 부여한다는 의미는 스레드가 락을 획득한다는 것과 동일한 의미이다. 제어부(550)는 비교부(540)에서 비교된 제1 코어의 DPI가 제2 코어의 DPI보다 작거나, 제1 코어의 DPI가 제2 코어의 DPI와 동일하더라도 제1 코어의 ID가 제2 코어의 ID보다 작고, 제2 코어가 비교 대상이 되는 마지막 코어이면 제1 코어의 스레드에 락을 부여한다. 제어부(550)가 락을 제어한다는 것은 락 획득 순서를 제어한다는 것을 의미한다.
또한, 제어부(550)는 상기 제1 코어의 DPI가 상기 제2 코어의 DPI 와 같은 값이고, 상기 제1 코어의 아이디(ID)가 상기 제2 코어의 아이디(ID) 보다 작은 값을 가지면, 락 획득 시점에서의 상기 제1 코어의 스레드에 락을 부여할 수 있다. 또한, 제어부(550)는 제1 코어의 DPI가 제2 코어의 DPI 보다 큰 값을 가지거나, 동일한 값을 가지더라도 제1 코어의 ID가 제2 코어의 ID보다 큰 경우에는 락 획득 순서에 대한 제어를 종료한다.
또한, 제어부(550)는 스레드의 락 획득 순서를 제어하기 위해 전체 스레드의 DPI를 비교하는 것이 아니라 코어 DPI만을 비교한다. 코어 DPI만을 비교함으로써 전체 스레드의 DPI를 비교하는 경우에 비해 공유 메모리 접근 횟수가 감소하므로, 락 획득 순서 선정 오버헤드를 줄일 수 있다. 또한, 제어부(550)는 코어 자체의 진행 사항을 표시하는 코어 DPI만으로 순서를 결정하므로 불균형 락 획득(IBLA) 패턴에서 로드 불균형에 의해 상대적으로 불균형한 스케줄을 받게 되는 스레드에 영향을 받지 않는다. 따라서, 대기 오버헤드를 줄일 수 있다. 또한, 제어부(550)는 로딩부(530) 및 비교부(540)의 기능을 수행하는 프로세서를 포함할 수 있다.
다음의 일 예는 락 획득 순서를 정하는 제어부(550)의 알고리즘을 보여 주는 의사 코드(pseudo code)이다. 제어부(550)는 "Bool TakeToken()"과 같은 API를 제공하여 스레드의 락 획득 순서를 제어할 수 있다.
Figure pat00001
코어 DPI 보정부(560)는 상기 제1 코어의 DPI를 실제 응용수행을 통한 비결정적 구간의 측정 값만큼 보정한다. 코어 DPI를 이용하여 락 획득 순서를 제어하는 경우에도 대기 시간을 줄일 수는 있지만, 여전히 선순위 스레드 대기 시간이 발생한다. 왜냐하면, 코어에서 스레드가 실제로 수행되는 구간에는 비결정적 수행 구간이 포함되기 때문이다. 즉, 코어 DPI는 비결정적 수행 구간을 제외한 결정적 수행 구간만 반영된 값이지만, 실제 코어에서 스레드가 수행되는 구간에는 비결정적 수행 구간이 포함되기 때문이다. 코어 DPI 보정부(560)는 코어에서 실제로 수행되는 스레드에 포함된 비결정적 수행 구간의 최대 및 최소 값을 측정할 수 있다. 또한, 스레드에 포함된 비결정적 수행 구간의 최대 및 최소 값의 측정은 별도의 측정부(도시되지 않음)에서 수행될 수도 있다. 코어 DPI 보정부(560)는 측정된 비결정적 수행 구간의 최대 및 최소 값에 기초하여 결정적인 값으로 코어 DPI를 보정할 수 있다. 결정적인 값은 반복적으로 최대 및 최소 값을 측정하여 일정 범위로 수렴되는 값을 의미할 수 있다. 측정된 값이 실제 비결정적 수행 구간 값과 유사할수록 Tnd = Tphysical - Tlogical 값이 줄어들어 결과적으로 대기 시간(Twait)이 감소하게 된다. 이렇게 결정적인 값으로 코어 DPI를 보정하는 방법을 DPI fast-forward(DFF) 방법이라고 할 수 있다.
또한, 코어 DPI 보정부(560)는 다음의 "DetermSWNDClearWithDFF()"와 같은 API를 제공하여 코어 DPI를 보정할 수 있다.
Figure pat00002

도 6은 일 실시예에 따른 코어 결정적 프로그레스 인덱스를 이용하는 경우의 불균형 락 획득 (IBLA) 수행을 나타낸 도면이다.
도 6을 참조하면, 코어 1에서는 스레드 1 및 스레드 2가 수행되고, 코어 2에서는 스레드 3 및 스레드 4가 수행된다. 도 4b의 경우와 마찬가지로 스레드의 락 획득 패턴은 불균형 락 획득(IBLA) 패턴이다. 다만, 코어 DPI를 사용함으로써 스레드 1 및 스레드 2의 DPI는 DPI코어1에 반영되고, 스레드 3 및 스레드 4의 DPI는 DPI코어2에 반영된다. 스레드의 락 획득 순서를 결정하는 기준은 락 획득 시점에서 코어의 DPI가 가장 작거나, 코어의 DPI가 동일한 경우에는 코어의 ID가 작은 경우를 기준으로 한다. 따라서, 코어의 DPI를 비교해보면 스레드 1(613), 스레드 3(619), 스레드 2(615), 스레드 4(621), 스레드 3(623), 스레드 1(617), 스레드 4, 스레드 2의 순서로 락 획득 순서가 결정될 것임을 예상할 수 있다. 물리적으로 실제 코어상에서 스레드가 수행되는 과정을 살펴보면, 스레드 1(601), 스레드 3(607), 스레드 2(603), 스레드 4(609), 스레드 3(611), 스레드 1(605)의 순서대로 락 획득이 요청되고, 락에 의해 크리티컬 섹션이 보호된 것을 알 수 있다.
코어 DPI를 이용하므로 스레드의 락 획득 순서 제어는 결정적으로 수행된다. 즉, 코어 DPI를 알면 스레드의 락 획득 순서를 예측할 수 있다. 그러나, 여전히 코어에서 실제로 수행되는 스레드의 구간에는 비결정적 수행 구간이 포함되므로 대기 시간(630,640)이 발생한다. 코어 DPI 보정부(560)는 비결정적 수행 구간의 최소 및 최대 값을 측정하고 결정적인 값으로 코어 DPI를 보정할 수 있다. 비결정적 수행 구간이 결정적인 값으로 보정되면 대기 시간이 감소하게 된다.
도 7은 일 실시예에 따른 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치의 블록도이다. 스레드 스케줄링은 코어에서 수행되는 스레드의 수행 순서를 결정하는 것이다. 결정적 스케줄링 방법에는 First-In First-Out(FIFO) 및 라운드 로빈(Round Robin) 방식이 있으나 불균형 락 획득(IBLA) 패턴의 경우에는 스케줄 결과가 예상과 다를(unfair) 수 있다. 따라서, 불균형 락 획득(IBLA) 패턴의 경우에도 안정적으로 적용 가능한 결정적 스레드 스케줄링 방법이 요구된다.
도 7을 참조하면, 일 실시예에 따른 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치는 측정부(710), 데이터베이스부(720) 및 제어부(730)를 포함한다.
측정부(710)는 특정 입력에 대하여 수행되는 스레드의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 측정한다. 스레드별 DPI는 동일한 명령어 입력에 대하여 항상 동일한 값을 가진다. DPI는 결정적으로 수행되는, 즉 예측 가능한 수행 기간을 표시하기 위해 사용되는 값이기 때문이다. 측정부(710)는 명령어 입력에 따라 수행되는 스레드의 DPI를 측정할 수 있다. 또한, 측정부(710)는 락 획득 시점에서의 스레드 DPI를 측정할 수 있다.
데이터베이스부(720)에는 상기 측정된 스레드의 DPI에 기초하여 락 획득 시점에서의 각 스레드별 DPI가 저장된다. 데이터베이스부(720)에는 스레드 스케줄링에 필요한 스레드 DPI가 저장될 수 있다. 또한, 데이터베이스부(720)에는 락 획득 시점에서의 스레드 DPI가 스레드별로 구별되어 저장될 수 있다. 또한, 데이터베이스부(720)는 측정된 스레드의 DPI를 복사하는 복사부(도시되지 않음)를 포함할 수 있다.
제어부(730)는 상기 저장된 각 스레드별 DPI에 기초하여 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI가 작은 순서대로 스레드의 수행 순서를 스케줄링 한다. 운영체제는 응용 프로그램을 구성하는 여러 스레드를 통하여 시스템 자원이 효율적으로 활용될 수 있도록 스레드를 관리 및 스케쥴링 한다. 제어부(730)는 데이터베이스부(720)에 저장된 스레드별 DPI에 기초하여 스레드의 수행 순서를 스케줄링 한다. 제어부(720)는 코어에서 처음으로 수행되는 스레드는 스레드 DPI가 제일 작은 스레드로 스케줄링 할 수 있다.
또한, 제어부(720)는 수행되는 응용 프로그램의 종류에 따라 스레드 스케줄링을 다르게 할 수 있다. 예를 들면, 비디오와 같은 응용 프로그램이 다중 코어 상에서 채널당 하나의 스레드로 병렬 수행되는 경우, 채널마다 균형잡인 로드의 스케줄이 요구 된다. 따라서, 제어부(720)는 다음 락 획득 시점에서의 스레드 DPI가 작은 순서대로 스레드를 스케줄링 할 수 있다.
또한, 제어부(730)는 상기 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI 증가 값이 작은 순서대로 스레드의 수행순서를 스케줄링 할 수 있다. 제어부(730)는 스레드 DPI의 증가 값이 작은 스레드를 선순위 스레드로 스케줄링 할 수 있다.
또한, 제어부(730)는 다음의 "DoScheduleThredWithDPI()"와 같은 API를 제공하여 스레드의 수행 순서를 스케줄링 할 수 있다.
Figure pat00003

도 8은 일 실시예에 따른 결정적 프로그레스 인덱스 기반 스레드 스케줄링을 이용하는 경우의 불균형 락 획득 (IBLA) 수행을 나타낸 도면이다.
도 8을 참조하면, 스레드 1 내지 스레드 3은 코어 1에서 수행된다. 스레드의 락 획득 패턴은 불균형 락 획득(IBLA) 패턴이다. 따라서, 스레드 1 내지 스레드 3의 락 획득 시점은 상이하다. 일 실시예에 따른 결정적 프로그레스 인덱스 기반 스레드 스케줄링을 적용하면 제일 먼저 수행될 스레드는 스레드 3(840)이다. 왜냐하면, 최초 락 획득 시점에서 스레드 DPI가 가장 작은 스레드가 스레드 3(840)이기 때문이다. 다음 번 락 획득시의 스레드 DPI를 비교해보면 다음으로 수행될 스레드는 스레드 1(810)이다. 차례로 스레드 1(820), 스레드 2(830), 스레드 3(850)이 수행될 수 있다. 따라서, 스레드 3(840), 스레드 1(810), 스레드 1(820), 스레드 2(830), 스레드 3(850)의 순서로 스레드의 수행 순서를 스케줄링 할 수 있다. 코어 1에서 물리적으로 수행되는 스레드를 살펴보면 스케줄링 된 순서로 스레드가 수행됨을 알 수 있다.
도 9는 일 실시예에 따른 코어 결정적 프로그레스 인덱스를 생성하는 방법을 나타낸 흐름도이다.
901 및 903단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 운영체제에 의한 스케쥴러 및 결정적 프로그레스 인덱스(DPI) 모듈을 초기화한다. 초기화 과정은 새로 수행되는 절차와 기존에 수행된 절차가 구별되게 하기 위함이다.
905단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 스케쥴러 상에서 수행될 명령어에 따라 준비된 스레드를 선택한다. 수행될 명령어는 스레드마다 다르므로 스케쥴러 상에서 정해진 수행 순서에 따라 스레드가 선택된다.
907단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 코어 DPI를 이용할 것인지 판단한다. 코어 DPI의 이용여부는 시스템 설정에 의해 결정될 수 있다. 스레드가 수행되는 모든 경우에 코어 DPI가 이용될 수도 있고, 사용자의 임의 설정에 의해 정해진 구간에서만 코어 DPI가 이용될 수도 있다.
909단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 코어 DPI를 이용하는 것으로 결정되면 특정 그룹의 이전 스레드 DPI를 복사한다. 즉, 특정 그룹의 이전 스레드 DPI를 이용하여 코어 DPI를 생성한다. 특정 그룹 스레드는 동일한 공유 자원에 접근하기 위해 락(lock) 획득을 시도하는 스레드의 집합을 의미한다. 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 동일한 코어 상에서 컨텍스트 스위치 이벤트 발생 경우에 이전 스레드의 DPI를 다음 스레드의 DPI 시작 시점으로 사용하여, 코어 DPI를 생성할 수 있다. 또한, 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 생성된 코어 DPI를 저장할 수 있다.
911단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 복사된 특정 그룹의 이전 스레드 DPI를 결정적 프로그레스 카운터(DPC)의 시작 값으로 세팅한다. 코어 DPI를 이용하지 않는 경우에는 선택된 스레드의 DPI를 DPC의 시작 값으로 세팅한다. 즉, 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 연속적으로 수행되는 스레드의 DPI값을 복사하여 코어 DPI를 생성할 수 있다.
913 및 915단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 스레드를 디스패치하여 상기 스레드가 러닝 상태가 된다. 러닝 상태는 스레드가 결정적 방식으로 수행됨으로서 DPI가 생성되는 상태이다(B).
917 및 919단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 상기 러닝 상태인 스레드에서 스케쥴 이벤트가 발생하면 소프트웨어 비결정적 수행(SWND) 신호를 세트하여 결정적 프로그레스 카운터(DPC)를 중지시킨다. 소프트웨어 비결정적 수행(Software nondeterministic execution, SWND)은 명령어들로 구성된 함수 또는 소프트웨어 적으로 수행 시간이 일정하지 않게 발생하는 이벤트 수준에서 비결정적 수행을 하는 경우를 의미한다. DPC는 소프트웨어 비결정적 수행(SWND) 신호에 의해 제어될 수 있다. DPC가 중지되면 DPI의 생성이 중지되므로 DPI에는 결정적 수행 방식만 반영될 수 있다. 스케쥴 이벤트는 인터럽트가 일반적인 예이며, 입출력 대기, 비결정적 함수 호출과 같은 경우를 포함할 수 있다.
921단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 상기 결정적 프로그레스 카운터(DPC)가 중지된 상태에서 컨텍스트 스위치 이벤트의 발생여부를 판단하고, 925단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 상기 컨텍스트 스위치 이벤트가 발생하면 상기 중지된 결정적 프로그레스 카운터(DPC) 값을 스위치 되기 전 스레드의 결정적 프로그레스 인덱스(DPI) 값으로 저장한다. 또한, 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 컨텍스트 스위치가 발생하는 시점까지 수행된 컨텍스트 결과를 저장한다.
923단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 상기 결정적 프로그레스 카운터가 중지된 상태에서 상기 스케쥴 이벤트가 종료하면 비결정적 수행(SWND) 신호를 클리어하여 상기 중지된 결정적 프로그레스 카운터(DPC)를 동작시킨다.
또한, 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 컨텍스트가 스위치된 후 준비된 스레드를 선택하여 상기 절차를 반복할 수 있다(A).
도 10은 일 실시예에 따른 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법을 나타낸 흐름도이다.
1010단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 스레드의 락 획득 시점에서, 복수개의 코어에 대한 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI) 중 제1 코어의 DPI(my core, reference)를 로딩한다. 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 상기 제1 코어의 DPI를 실제 응용수행을 통한 비결정적 구간의 측정 값만큼 보정할 수 있다. 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법은 상기 비결정적 구간의 최소 및 최대 값을 측정하는 단계를 더 포함하고, 상기 보정하는 단계는 상기 측정된 최소 및 최대 값에 기초하여 결정적인 측정 값만큼 보정할 수 있다. 결정적인 값은 반복적으로 최대 및 최소 값을 측정하여 일정 범위로 수렴되는 값을 의미할 수 있다
1020단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 제1 코어의 DPI와 비교의 대상이 될 수 있는 제2 코어(neighbor core)의 DPI를 로딩한다.
1030단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 로딩된 제1 코어의 DPI 및 제2 코어의 DPI를 비교한다.
1040단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 제1 코어의 DPI가 제2 코어의 DPI보다 큰 값을 갖는지 판단한다. 제1 코어의 DPI가 제2 코어의 DPI보다 큰 값을 가지면 제1 코어에 있는 스레드는 락 획득에 실패한다(1070). 제1 코어의 DPI가 제2 코어의 DPI보다 크지 않으면 다음 단계(1050)로 진행한다.
1050단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 제1 코어의 DPI와 제2 코어의 DPI가 동일하면 제1 코어의 ID가 제2 코어의 ID보다 큰 값을 갖는지 판단한다. 제1 코어의 ID가 제2 코어의 ID보다 큰 값을 가지면 제1 코어에 있는 스레드는 락 획득에 실패한다(1070). 제1 코어에 대한 ID가 제2 코어에 대한 ID보다 크지 않으면 다음 단계(1060)로 진행한다.
1060단계에서 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치는 비교대상이 되는 제2 코어가 마지막으로 코어인지를 판단한다. 즉, 제1 코어의 DPI가 제2 코어의 DPI보다 작은 값을 가지거나, 동일한 값을 가지더라도 제1 코어의 ID가 제2 코어의 ID보다 작은 경우이므로 제2 코어가 마지막 코어라면 제1 코어에 있는 스레드에 락을 부여할 수 있기 때문이다(1080). 스레드에 락을 부여한다는 의미는 스레드가 락을 획득한다는 것과 동일한 의미이다. 제2 코어가 마지막 코어가 아니라면 비교대상이 되는 복수개의 코어 중 새로운 제3 코어를 로딩하는 단계(1020)로 진행한다.
도 11은 일 실시예에 따른 결정적 프로그레스 인덱스 기반 스레드 스케줄링 방법을 나타낸 흐름도이다.
1110단계에서 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치는 특정 입력에 대하여 수행되는 스레드의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 측정한다.
1120단계에서 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치는 상기 측정된 스레드의 DPI에 기초하여 락 획득 시점에서의 각 스레드별 DPI를 저장한다. 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치는 락 획득 시점에서의 스레드 DPI가 스레드별로 구별하여 저장할 수 있다.
1130단계에서 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치는 상기 저장된 각 스레드별 DPI에 기초하여 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI가 작은 순서대로 스레드의 수행 순서를 스케줄링 한다. 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치는 코어에서 처음으로 수행되는 스레드는 스레드의 DPI가 제일 작은 스레드로 스케줄링 할 수 있다. 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치는 상기 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI 증가 값이 작은 순서대로 스레드의 수행 순서를 스케줄링 할 수 있다.
본 발명의 일실시예에 따른 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법을 이용함으로써 코어 DPI에 기반하여 균형 락 획득(BLA) 패턴에서 성능에 영향을 미치는 락 획득 순서 선정 오버헤드(overhead)를 줄일 수 있다. 또한, 불균형 락 획득(IBLA) 패턴에서 성능에 영향을 미치는 선순위 스레드 대기 오버헤드를 줄일 수 있다.
본 발명의 일실시예에 따른 결정적 프로그레스 인덱스 기반 스레드 스케줄링 방법을 이용함으로써, 불균형 락 획득(IBLA) 패턴의 경우에도 결정적으로 스레드의 수행 순서를 스케줄링 할 수 있다.
위에서 설명된 실시 예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (16)

  1. 스레드의 락 획득 시점에서, 복수개의 코어들 각각의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI) 중 제1 코어의 DPI(my core, reference) 및 제2 코어(neighbor core)의 DPI를 로딩하는 로딩부;
    상기 제1 코어의 DPI 및 상기 제2 코어의 DPI를 비교하는 비교부; 및
    상기 제1 코어의 DPI가 상기 제2 코어의 DPI 보다 작고, 상기 제2 코어가 상기 복수개의 코어들 중 비교 대상이 되는 마지막 코어이면, 상기 제1 코어의 스레드에 락을 부여하는 제어부
    를 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치.
  2. 제1항에 있어서,
    상기 제어부는
    상기 제1 코어의 DPI가 상기 제2 코어의 DPI 와 같은 값이고, 상기 제1 코어의 아이디(ID)가 상기 제2 코어의 아이디(ID) 보다 작은 값을 가지면, 상기 제1 코어의 스레드에 락을 부여하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치.
  3. 제1항에 있어서,
    상기 로딩부는
    상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어가 아니면, 상기 복수개의 코어 중 제3 코어의 DPI를 로딩하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치.
  4. 제1항에 있어서,
    동일한 코어 상에서 수행되는 특정 그룹의 스레드 DPI를 누적하여 코어 DPI를 생성하는 코어 DPI 생성부; 및
    상기 생성된 코어 DPI를 저장하는 메모리부
    를 더 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치.
  5. 제4항에 있어서,
    상기 특정 그룹 스레드는 동일한 공유 자원에 접근하기 위해 락(lock) 획득을 시도하는 스레드의 집합인 것을 특징으로 하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치.
  6. 제1항에 있어서,
    상기 제1 코어의 DPI를 실제 응용수행을 통한 비결정적 구간의 측정 값만큼 보정하는 코어 DPI 보정부
    를 더 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치.
  7. 특정 입력에 대하여 수행되는 스레드의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 측정하는 측정부;
    상기 측정된 스레드의 DPI에 기초하여 락 획득 시점에서의 각 스레드별 DPI가 저장된 데이터베이스부; 및
    상기 저장된 각 스레드별 DPI에 기초하여 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI가 작은 순서대로 스레드의 수행 순서를 스케줄링 하는 제어부
    를 포함하는 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치.
  8. 제7항에 있어서,
    상기 제어부는
    상기 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI 증가 값이 작은 순서대로 스레드의 수행 순서를 스케줄링 하는 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치.
  9. 스레드의 락 획득 시점에서, 복수개의 코어에 대한 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI) 중 제1 코어의 DPI(my core, reference) 및 제2 코어(neighbor core)의 DPI를 로딩하는 단계;
    상기 제1 코어의 DPI 및 상기 제2 코어의 DPI를 비교하는 단계; 및
    상기 제1 코어의 DPI가 상기 제2 코어의 DPI 보다 작고, 상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어이면, 상기 제1 코어의 스레드에 락을 부여하는 단계
    를 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법.
  10. 제9항에 있어서,
    상기 락을 부여하는 단계는
    상기 제1 코어의 DPI가 상기 제2 코어의 DPI 와 같은 값이고, 상기 제1 코어의 아이디(ID)가 상기 제2 코어의 아이디(ID) 보다 작은 값을 가지면, 상기 제1 코어의 스레드에 락을 부여하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법.
  11. 제9항에 있어서,
    상기 로딩하는 단계는
    상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어가 아니면, 상기 복수개의 코어 중 제3 코어의 DPI를 로딩하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법.
  12. 제9항에 있어서,
    동일한 코어 상에서 컨텍스트 스위치 이벤트 발생 경우에 이전 스레드의 DPI를 다음 스레드의 DPI 시작 시점으로 사용하여, 코어 DPI를 생성하는 단계; 및
    상기 생성된 코어 DPI를 저장하는 단계
    를 더 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법.
  13. 제9항에 있어서,
    상기 제1 코어의 DPI를 실제 응용수행을 통한 비결정적 구간의 측정 값만큼 보정하는 단계
    를 더 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법.
  14. 제13항에 있어서,
    상기 비결정적 구간의 최소 및 최대 값을 측정하는 단계를 더 포함하고,
    상기 보정하는 단계는 상기 측정된 최소 및 최대 값에 기초하여 결정적인 측정 값만큼 보정하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법.
  15. 특정 입력에 대하여 수행되는 스레드의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 측정하는 단계;
    상기 측정된 스레드의 DPI에 기초하여 락 획득 시점에서의 각 스레드별 DPI를 저장하는 단계; 및
    상기 저장된 각 스레드별 DPI에 기초하여 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI가 작은 순서대로 스레드의 수행 순서를 스케줄링 하는 단계
    를 포함하는 결정적 프로그레스 인덱스 기반 스레드 스케줄링 방법.
  16. 제15항에 있어서,
    상기 스케줄링 하는 단계는
    상기 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI 증가 값이 작은 순서대로 스레드의 수행 순서를 스케줄링 하는 결정적 프로그레스 인덱스 기반 스레드 스케줄링 방법.
KR1020100070964A 2010-07-22 2010-07-22 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치 KR101686082B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020100070964A KR101686082B1 (ko) 2010-07-22 2010-07-22 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치
US13/099,453 US9047138B2 (en) 2010-07-22 2011-05-03 Apparatus and method for thread scheduling and lock acquisition order control based on deterministic progress index
EP11174341A EP2420930A3 (en) 2010-07-22 2011-07-18 Apparatus and method for thread scheduling and lock acquisition order control based on deterministic progress index

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100070964A KR101686082B1 (ko) 2010-07-22 2010-07-22 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20120009907A true KR20120009907A (ko) 2012-02-02
KR101686082B1 KR101686082B1 (ko) 2016-12-28

Family

ID=44512659

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100070964A KR101686082B1 (ko) 2010-07-22 2010-07-22 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치

Country Status (3)

Country Link
US (1) US9047138B2 (ko)
EP (1) EP2420930A3 (ko)
KR (1) KR101686082B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013133586A1 (ko) * 2012-03-06 2013-09-12 삼성전자 주식회사 락 홀더 선점 회복 방법 및 장치

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601486B2 (en) 2011-05-31 2013-12-03 International Business Machines Corporation Deterministic parallelization through atomic task computation
KR101892273B1 (ko) * 2011-10-12 2018-08-28 삼성전자주식회사 스레드 프로그레스 트래킹 방법 및 장치
KR102028663B1 (ko) * 2012-07-24 2019-10-04 삼성전자주식회사 에러 검출 방법 및 장치
US9678897B2 (en) * 2012-12-27 2017-06-13 Nvidia Corporation Approach for context switching of lock-bit protected memory
GB2521155B (en) 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configuring thread scheduling on a multi-threaded data processing apparatus
GB2521151B (en) * 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configurable thread ordering for a data processing apparatus
CN104268024B (zh) * 2014-09-24 2018-02-23 浪潮(北京)电子信息产业有限公司 一种实现进程互斥的方法和装置
US10133602B2 (en) * 2015-02-19 2018-11-20 Oracle International Corporation Adaptive contention-aware thread placement for parallel runtime systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090119549A1 (en) * 2005-01-28 2009-05-07 Vertes Marc P Method for counting instructions for logging and replay of a deterministic sequence of events

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1141827A1 (en) 1998-12-23 2001-10-10 PowerTV, Inc. Method and apparatus for providing operating system scheduling operations
DE10034459A1 (de) 2000-07-15 2002-01-24 Bosch Gmbh Robert Verfahren und Vorrichtung zur Messung der Laufzeit einer Task in einem Echtzeitsystem
US7725897B2 (en) 2004-11-24 2010-05-25 Kabushiki Kaisha Toshiba Systems and methods for performing real-time processing using multiple processors
US7448036B2 (en) 2002-05-02 2008-11-04 International Business Machines Corporation System and method for thread scheduling with weak preemption policy
EP1398700A1 (de) 2002-09-12 2004-03-17 Siemens Aktiengesellschaft Verfahren und Schaltungsanordnung zur Synchronisation redundanter Verarbeitungseinheiten
US7831974B2 (en) * 2002-11-12 2010-11-09 Intel Corporation Method and apparatus for serialized mutual exclusion
US7426656B2 (en) 2004-03-30 2008-09-16 Hewlett-Packard Development Company, L.P. Method and system executing user programs on non-deterministic processors
US20070039000A1 (en) * 2005-08-10 2007-02-15 Hewlett-Packard Development Company, L.P. Lock order determination method and system
US20090106539A1 (en) 2007-07-05 2009-04-23 Mericas Alexander E Method and system for analyzing a completion delay in a processor using an additive stall counter
CN101446909B (zh) 2007-11-30 2011-12-28 国际商业机器公司 用于管理任务事件的方法和系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090119549A1 (en) * 2005-01-28 2009-05-07 Vertes Marc P Method for counting instructions for logging and replay of a deterministic sequence of events

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A. Georges et al., JaRec: a portable record/replay environment for multi-threaded Java applications, Software: Practice and Experience, Vol. 34, Issue 6, 2004.5.* *
Marek Olszewski et al., Kendo: Efficient Deterministic Multithreading in Software, ACM SIGPLAN Notices, vol. 44, No. 3, 2009.* *
Mostefaoui et al., Chapter 5 Reliable Logical Clocks for Unreliable Process Groups, Dependable Network Computing, Kluwer Academic Publisher, 2000.* *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013133586A1 (ko) * 2012-03-06 2013-09-12 삼성전자 주식회사 락 홀더 선점 회복 방법 및 장치
KR20130101877A (ko) * 2012-03-06 2013-09-16 삼성전자주식회사 락 홀더 선점 회복 방법 및 장치
US9916172B2 (en) 2012-03-06 2018-03-13 Samsung Electronics Co., Ltd. Method and apparatus for recovering lock holder preemption

Also Published As

Publication number Publication date
US9047138B2 (en) 2015-06-02
KR101686082B1 (ko) 2016-12-28
EP2420930A3 (en) 2012-03-14
US20120023505A1 (en) 2012-01-26
EP2420930A2 (en) 2012-02-22

Similar Documents

Publication Publication Date Title
KR101686082B1 (ko) 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치
Ebrahimi et al. Parallel application memory scheduling
US9170844B2 (en) Prioritization for conflict arbitration in transactional memory management
US10884822B2 (en) Deterministic parallelization through atomic task computation
US9063796B2 (en) Method and apparatus for improving processing performance of a multi-core processor
Haas et al. Distributed queues in shared memory: multicore performance and scalability through quantitative relaxation
Attiya et al. Transactional scheduling for read-dominated workloads
US9158596B2 (en) Partitioned ticket locks with semi-local spinning
Devi et al. Efficient synchronization under global EDF scheduling on multiprocessors
US8645963B2 (en) Clustering threads based on contention patterns
Xiao et al. Schedulability analysis of non-preemptive real-time scheduling for multicore processors with shared caches
US20130205299A1 (en) Apparatus and method for scheduling kernel execution order
GB2525215A (en) A busy lock and a passive lock featuring embedded load management capabilities
Jiang et al. Scheduling and analysis of parallel real-time tasks with semaphores
Arora et al. Bus-contention aware schedulability analysis for the 3-phase task model with partitioned scheduling
Brandenburg et al. Reader-writer synchronization for shared-memory multiprocessor real-time systems
Johnson et al. A new look at the roles of spinning and blocking
US9223615B2 (en) Apparatus and method for thread progress tracking
Shan et al. APPLES: Efficiently handling spin-lock synchronization on virtualized platforms
US8943503B2 (en) Apparatus and method for thread progress tracking using deterministic progress index
JP2011175378A (ja) マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法
Osborne et al. Simultaneous multithreading applied to real time
Erickson et al. Reducing tardiness under global scheduling by splitting jobs
Choi et al. Work-in-progress: A unified runtime framework for weakly-hard real-time systems
Bonato et al. Supporting global resource sharing in RUN-scheduled multiprocessor systems

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