KR20120009907A - 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치 - Google Patents
결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000003247 decreasing effect Effects 0.000 claims description 11
- 238000005259 measurement Methods 0.000 claims description 11
- 238000012937 correction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 230000015556 catabolic process Effects 0.000 description 6
- 238000006731 degradation reaction Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine 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
기술분야는 마이크로 아키텍쳐를 사용하는 컴퓨터 환경에서 데이터 처리 및 특정 기능을 수행하는 응용 프로그램의 결정적(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은 일 실시예에 따른 결정적 프로그레스 인덱스 기반 스레드 스케줄링 방법을 나타낸 흐름도이다.
도 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를 제공하여 스레드의 락 획득 순서를 제어할 수 있다.
코어 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를 보정할 수 있다.
도 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를 제공하여 스레드의 수행 순서를 스케줄링 할 수 있다.
도 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)
- 스레드의 락 획득 시점에서, 복수개의 코어들 각각의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI) 중 제1 코어의 DPI(my core, reference) 및 제2 코어(neighbor core)의 DPI를 로딩하는 로딩부;
상기 제1 코어의 DPI 및 상기 제2 코어의 DPI를 비교하는 비교부; 및
상기 제1 코어의 DPI가 상기 제2 코어의 DPI 보다 작고, 상기 제2 코어가 상기 복수개의 코어들 중 비교 대상이 되는 마지막 코어이면, 상기 제1 코어의 스레드에 락을 부여하는 제어부
를 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치. - 제1항에 있어서,
상기 제어부는
상기 제1 코어의 DPI가 상기 제2 코어의 DPI 와 같은 값이고, 상기 제1 코어의 아이디(ID)가 상기 제2 코어의 아이디(ID) 보다 작은 값을 가지면, 상기 제1 코어의 스레드에 락을 부여하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치. - 제1항에 있어서,
상기 로딩부는
상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어가 아니면, 상기 복수개의 코어 중 제3 코어의 DPI를 로딩하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치. - 제1항에 있어서,
동일한 코어 상에서 수행되는 특정 그룹의 스레드 DPI를 누적하여 코어 DPI를 생성하는 코어 DPI 생성부; 및
상기 생성된 코어 DPI를 저장하는 메모리부
를 더 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치. - 제4항에 있어서,
상기 특정 그룹 스레드는 동일한 공유 자원에 접근하기 위해 락(lock) 획득을 시도하는 스레드의 집합인 것을 특징으로 하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치. - 제1항에 있어서,
상기 제1 코어의 DPI를 실제 응용수행을 통한 비결정적 구간의 측정 값만큼 보정하는 코어 DPI 보정부
를 더 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 장치. - 특정 입력에 대하여 수행되는 스레드의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 측정하는 측정부;
상기 측정된 스레드의 DPI에 기초하여 락 획득 시점에서의 각 스레드별 DPI가 저장된 데이터베이스부; 및
상기 저장된 각 스레드별 DPI에 기초하여 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI가 작은 순서대로 스레드의 수행 순서를 스케줄링 하는 제어부
를 포함하는 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치. - 제7항에 있어서,
상기 제어부는
상기 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI 증가 값이 작은 순서대로 스레드의 수행 순서를 스케줄링 하는 결정적 프로그레스 인덱스 기반 스레드 스케줄링 장치. - 스레드의 락 획득 시점에서, 복수개의 코어에 대한 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI) 중 제1 코어의 DPI(my core, reference) 및 제2 코어(neighbor core)의 DPI를 로딩하는 단계;
상기 제1 코어의 DPI 및 상기 제2 코어의 DPI를 비교하는 단계; 및
상기 제1 코어의 DPI가 상기 제2 코어의 DPI 보다 작고, 상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어이면, 상기 제1 코어의 스레드에 락을 부여하는 단계
를 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법. - 제9항에 있어서,
상기 락을 부여하는 단계는
상기 제1 코어의 DPI가 상기 제2 코어의 DPI 와 같은 값이고, 상기 제1 코어의 아이디(ID)가 상기 제2 코어의 아이디(ID) 보다 작은 값을 가지면, 상기 제1 코어의 스레드에 락을 부여하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법. - 제9항에 있어서,
상기 로딩하는 단계는
상기 제2 코어가 상기 복수개의 코어 중 비교 대상이 되는 마지막 코어가 아니면, 상기 복수개의 코어 중 제3 코어의 DPI를 로딩하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법. - 제9항에 있어서,
동일한 코어 상에서 컨텍스트 스위치 이벤트 발생 경우에 이전 스레드의 DPI를 다음 스레드의 DPI 시작 시점으로 사용하여, 코어 DPI를 생성하는 단계; 및
상기 생성된 코어 DPI를 저장하는 단계
를 더 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법. - 제9항에 있어서,
상기 제1 코어의 DPI를 실제 응용수행을 통한 비결정적 구간의 측정 값만큼 보정하는 단계
를 더 포함하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법. - 제13항에 있어서,
상기 비결정적 구간의 최소 및 최대 값을 측정하는 단계를 더 포함하고,
상기 보정하는 단계는 상기 측정된 최소 및 최대 값에 기초하여 결정적인 측정 값만큼 보정하는 결정적 프로그레스 인덱스 기반 락(lock) 제어 방법. - 특정 입력에 대하여 수행되는 스레드의 결정적 프로그레스 인덱스(Deterministic Progress Index, DPI)를 측정하는 단계;
상기 측정된 스레드의 DPI에 기초하여 락 획득 시점에서의 각 스레드별 DPI를 저장하는 단계; 및
상기 저장된 각 스레드별 DPI에 기초하여 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI가 작은 순서대로 스레드의 수행 순서를 스케줄링 하는 단계
를 포함하는 결정적 프로그레스 인덱스 기반 스레드 스케줄링 방법. - 제15항에 있어서,
상기 스케줄링 하는 단계는
상기 락 획득 시점에서 다음 번 락 획득시의 스레드 DPI 증가 값이 작은 순서대로 스레드의 수행 순서를 스케줄링 하는 결정적 프로그레스 인덱스 기반 스레드 스케줄링 방법.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013133586A1 (ko) * | 2012-03-06 | 2013-09-12 | 삼성전자 주식회사 | 락 홀더 선점 회복 방법 및 장치 |
Families Citing this family (8)
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)
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)
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 | 国际商业机器公司 | 用于管理任务事件的方法和系统 |
-
2010
- 2010-07-22 KR KR1020100070964A patent/KR101686082B1/ko active IP Right Grant
-
2011
- 2011-05-03 US US13/099,453 patent/US9047138B2/en active Active
- 2011-07-18 EP EP11174341A patent/EP2420930A3/en not_active Ceased
Patent Citations (1)
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)
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)
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 |