KR101748441B1 - 거짓 공유 검출 장치 및 방법 - Google Patents

거짓 공유 검출 장치 및 방법 Download PDF

Info

Publication number
KR101748441B1
KR101748441B1 KR1020100098403A KR20100098403A KR101748441B1 KR 101748441 B1 KR101748441 B1 KR 101748441B1 KR 1020100098403 A KR1020100098403 A KR 1020100098403A KR 20100098403 A KR20100098403 A KR 20100098403A KR 101748441 B1 KR101748441 B1 KR 101748441B1
Authority
KR
South Korea
Prior art keywords
probability
operations
thread
false sharing
calculating
Prior art date
Application number
KR1020100098403A
Other languages
English (en)
Other versions
KR20120036628A (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 KR1020100098403A priority Critical patent/KR101748441B1/ko
Priority to US13/162,670 priority patent/US8874856B2/en
Priority to EP11180902A priority patent/EP2439646A1/en
Publication of KR20120036628A publication Critical patent/KR20120036628A/ko
Application granted granted Critical
Publication of KR101748441B1 publication Critical patent/KR101748441B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/3452Performance evaluation by statistical analysis
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Abstract

거짓 공유에 의한 성능 저하를 유발할 가능성이 있는 오퍼레이션 세트를 검출하는 오퍼레이션 세트 검출부, 및 검출된 오퍼레이션 세트가 거짓 공유에 의한 성능 저하를 유발하는 실행 패턴으로 실행될 확률로 정의되는 제 1 확률을 계산하고, 계산된 제 1 확률을 이용하여 검출된 오퍼레이션 세트에 포함된 어느 하나의 오퍼레이션에서 거짓 공유에 의한 성능 저하가 발생될 확률로 정의되는 제 2 확률을 계산하는 확률 계산부를 포함하는 거짓 공유 검출 장치가 제공된다.

Description

거짓 공유 검출 장치 및 방법{Apparatus and Method for detecting false sharing}
거짓 공유(false sharing)를 탐지하기 위한 기술과 관련된다.
대칭형 다중 처리 시스템(symmetric multiprocessor, SMP)에는 캐시 일관성(cache coherence)이 보장되는 로컬 캐시(local cache)를 가진 여러 개의 CPU가 존재한다. 거짓 공유(false sharing)란 각각의 CPU에서 수행 중인 스레드(thread)들이 서로 다른 메모리 주소에 접근했음에도 불구하고 캐시 라인(cache line)의 주소가 같아서 동일한 데이터 블록이 캐싱되는 현상을 말한다.
거짓 공유로 인해 로딩된 캐시 라인이 어느 하나의 스레드에 의하여 갱신되면, 캐시 일관성을 보장하는 SMP의 메모리 시스템은 같은 데이터 블록을 캐싱하고 있는 다른 CPU의 캐시 라인을 무효화(invalidation)시킨다. 따라서 다른 CPU의 스레드가 다시 그 캐시 라인에 접근을 하는 경우 새로 데이터 블록을 캐싱하여야 하므로 리로드(reload)로 인한 성능 저하를 유발할 수 있다.
이러한 거짓 공유는 멀티 코어 상에서 수행되는 멀티 스레드 어플리케이션을 개발할 때 피해야 하는 현상이다. 거짓 공유를 탐지하는 방법으로는 CPU 성능 카운터(performance count)를 이용한 방법이 대표적이다. CPU 성능 카운터를 이용한 방법은 잠재적인 거짓 공유를 탐지하는 것이 아니고 이미 거짓 공유에 의해 발생된 성능의 변화를 이용하는 것이므로 "거짓 공유가 발생되었음"을 탐지하는 방법이다. 그렇지만 멀티 스레드 어플리케이션 개발 단계에서 거짓 공유를 고려하기 위해서는 사전에 그 "발생 가능성"을 탐지하는 것이 더 중요하다.
잠재적 거짓 공유(potential false sharing)에 의한 성능 저하를 유발할 가능성이 있는 부분을 검출할 수 있는 장치 및 방법이 제공된다.
본 발명의 일 양상에 따른 거짓 공유 검출 장치는, 거짓 공유에 의한 성능 저하를 유발할 가능성이 있는 오퍼레이션 세트를 검출하는 오퍼레이션 세트 검출부, 및 검출된 오퍼레이션 세트가 거짓 공유에 의한 성능 저하를 유발하는 실행 패턴으로 실행될 확률로 정의되는 제 1 확률을 계산하고, 계산된 제 1 확률을 이용하여 검출된 오퍼레이션 세트에 포함된 어느 하나의 오퍼레이션에서 거짓 공유에 의한 성능 저하가 발생될 확률로 정의되는 제 2 확률을 계산하는 확률 계산부를 포함할 수 있다.
본 발명의 다른 양상에 따른 거짓 공유 검출 방법은, 거짓 공유에 의한 성능 저하를 유발할 가능성이 있는 오퍼레이션 세트를 검출하는 단계, 및 검출된 오퍼레이션 세트가 거짓 공유에 의한 성능 저하를 유발하는 실행 패턴으로 실행될 확률로 정의되는 제 1 확률을 계산하고, 계산된 제 1 확률을 이용하여 검출된 오퍼레이션 세트에 포함된 어느 하나의 오퍼레이션에서 거짓 공유에 의한 성능 저하가 발생될 확률로 정의되는 제 2 확률을 계산하는 단계를 포함할 수 있다.
개시된 장치 및 방법에 의하면, 메모리 접근 추적을 통한 사전 실행 과정에서 거짓 공유에 의한 성능 저하가 유발될 수 있는 부분을 검출하고 그 부분이 실제 어느 정도의 심각성을 가지고 성능 저하를 유발할지 확률적으로 결정하기 때문에 잠재적인 성능 저하를 사전에 검출 및 수정하는 것이 가능하다.
도 1은 본 발명의 일 실시예에 따른 거짓 공유 검출 장치를 도시한다.
도 2는 코드 블록의 일 예를 도시한다.
도 3은 메모리 접근 추적의 예를 도시한다.
도 4는 검출된 오퍼레이션 세트의 일 예를 도시한다.
도 5는 검출된 오퍼레이션 세트의 다른 예를 도시한다.
도 6은 제 1 확률을 구하는 방법에 관한 일 예를 도시한다.
도 7은 제 2 확률을 구하는 방법에 관한 일 예를 도시한다.
도 8은 본 발명의 일 실시예에 따른 거짓 공유 검출 방법을 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 거짓 공유 검출 장치를 도시한다.
도 1을 참조하면, 거짓 공유 검출 장치(100)는 멀티 코어 시스템(110)에 적용될 수 있다. 멀티 코어 시스템(110)은 동시에 스레드(thread)를 처리할 수 있는 프로세싱 코어(111)(112)를 갖는다. 각각의 프로세싱 코어(111)(112)는 전용의 캐시(113)(114)를 갖는다. 각각의 캐시(113)(114)는 각각의 프로세싱 코어(111)(112)의 로컬 캐시가 될 수 있다.
멀티 코어 시스템(110)에 있어서, 프로세싱 코어 A(111)의 스레드 A가 메모리(115)의 오브젝트 X(116)에 접근하는 경우, 오브젝트 X(116)를 포함하는 데이터 블록(117)이 캐시 A(113)로 로딩된다. 캐시 A(113)에 캐시 라인(117-1)이 로딩된 후, 프로세싱 코어 B(112)의 스레드 B가 메모리(115)의 오브젝트 Y(118)에 접근하는 경우, 오브젝트 Y(118)를 포함하는 데이터 블록(117)이 캐시 B(114)로 로딩된다. 이러한 경우, 캐시 B(114)에 로딩된 캐시 라인(117-2)은 실질적으로 캐시 A(113)에 로딩된 캐시 라인(117-1)과 동일하기 때문에, 스레드 B가 캐시 B(114)에 로딩된 캐시 라인(117-2)의 오브젝트 Y에 수정을 가할 때, 캐시 일치성(cache coherence)을 보장하기 위해 캐시 A(113)의 캐시 라인(117-1)은 무효화(invalidation)될 수 있다. 따라서 프로세싱 코어 A(111)의 스레드 A가 다시 오브젝트 X(116)에 접근하는 경우, 또는 동일한 데이터 블록(117)에 상주하고 있는 특정한 오브젝트에 접근하는 경우, 캐시 미스(cache miss) 발생 후 캐시 라인(117-1)이 다시 로딩될 수 있다.
캐시 라인(117-1)의 재로딩은 성능 저하로 이어지는데, 거짓 공유 검출 장치(100)는 특정 오퍼레이션이 실행될 때 거짓 공유에 의한 성능 저하가 발생될 확률을 미리 계산해서 사용자에게 보고하는 것이 가능하다. 거짓 공유 검출 장치는 오퍼레이션 세트 검출부(101), 확률 계산부(102), 및 결과 보고부(103)를 포함한다.
오퍼레이션 세트 검출부(101)는 메모리 접근 및 스레딩 API 호출 추적(memory access & threading API call trace)을 통해 실행될 오퍼레이션들의 메모리 접근 정보, 선후 관계(Happens-before), 및 병렬 관계(Parallel)를 획득한다.
메모리 접근 추적은 실행될 소스 코드(source code) 또는 바이너리 코드(binary code)에 삽입된 인스트루먼테이션 함수(instrumentation function)에 의하여 이루어질 수 있다. 오퍼레이션 세트 검출부(101)는 획득된 메모리 접근 정보, 선후 관계, 및 병렬 관계를 이용하여 거짓 공유에 의한 성능 저하를 유발할 가능성이 있는 오퍼레이션 세트들을 검출한다.
검출되는 오퍼레이션 세트들은 캐시 라인 L에 대응되는 제 1 메모리 오브젝트에 대한 제 1 스레드의 리드 또는 라이트 오퍼레이션인 오퍼레이션 C, 캐시 라인 L을 공유하는 제 2 메모리 오브젝트에 대한 제 2 스레드의 라이트 오퍼레이션인 오퍼레이션 I, 및 오퍼레이션 C보다 나중에 실행되며 캐시 라인 L에 대응되면서 제 2 메모리 오브젝트와 겹치지 않는 제 3 오브젝트에 대한 제 1 스레드의 리드 또는 라이트 오퍼레이션인 오퍼레이션 R을 포함할 수 있다.
확률 계산부(102)는 검출된 오퍼레이션 세트가 거짓 공유에 의한 성능 저하를 유발하는 실행 패턴으로 실행될 확률로 정의되는 제 1 확률을 계산한다. 예를 들어, 제 1 확률은 오퍼레이션 I가 오퍼레이션 C와 오퍼레이션 R 사이에서 실행될 확률로 정의될 수 있다. 만약 오퍼레이션 C, 오퍼레이션 I, 및 오퍼레이션 R 순서로 오퍼레이션들이 실행되면, 오퍼레이션 I에 의해 오퍼레이션 C에서 로딩되었던 캐시 라인 L이 무효화되고, 오퍼레이션 R이 실행됨에 따라 캐시 라인 L의 다시 로딩되기 때문에, 거짓 공유에 의한 성능 저하가 발생된다. 그러나 오퍼레이션 C, 오퍼레이션 R, 및 오퍼레이션 I 순서로 오퍼레이션들이 실행되면, 오퍼레이션 R이 실행되더라도 캐시 라인 L이 다시 로딩될 필요가 없기 때문에, 거짓 공유에 의한 성능 저하가 발생되지 아니한다. 그런데 검출된 오퍼레이션들의 선후 관계 및 병렬 관계는 메모리 접근 및 스레딩 API 호출 추적에 의한 것이므로 코드가 실제로 실행될 때 오퍼레이션들이 어떠한 순서로 실행될지는 알 수가 없다. 따라서 확률 계산부(102)는 검출된 각각의 오퍼레이션 세트에 대해 오퍼레이션 I가 오퍼레이션 C와 오퍼레이션 R 사이에서 실행될 확률인 제 1 확률을 계산함으로써 오퍼레이션들이 거짓 공유에 의한 성능 저하를 유발하는 실행 패턴으로 실행될 확률을 계산하는 것이 가능하다.
또한 확률 계산부(102)는 계산된 제 1 확률을 이용하여 검출된 오퍼레이션 세트에 포함된 어느 하나의 오퍼레이션에서 거짓 공유에 의한 성능 저하가 발생될 확률로 정의되는 제 2 확률을 계산한다. 예를 들어, 제 2 확률은 오퍼레이션 R이 실행될 때 캐시 라인 L에 대한 리로드(reload)가 발생될 확률로 정의될 수 있다.
오퍼레이션 R을 기준으로 보았을 때, 캐시 라인 L의 리로드를 유발시키는 오퍼레이션 I는 여러 개가 존재할 수 있다. 그리고 각각의 오퍼레이션 I는 거짓 공유에 의한 성능 저하를 유발하는 실행 패턴으로 실행될 확률인 제 1 확률을 갖는다. 따라서 확률 계산부(102)는 각각의 제 1 확률을 확률적으로 취합해서 제 2 확률을 계산하는 것이 가능하다.
결과 보고부(103)는 소스 코드 또는 바이너리 코드에서 거짓 공유에 의한 성능 저하가 발생될 수 있는 부분과 그 부분에서의 거짓 공유에 의한 성능 저하 발생 가능성과 관련된 확률을 사용자에게 제공한다. 예를 들어, 결과 보고부(103)는 오퍼레이션 R과 관련된 코드 및 계산된 제 2 확률을 확률 값에 따라 정렬하여 표시하는 것이 가능하다.
도 2는 코드 블록의 일 예를 도시한다.
도 1 및 도 2를 참조하면, 스레드 A는 코어 A(111)에서 실행되고 스레드 B는 코어 B(112)에서 실행될 수 있다. 각각의 스레드는 여러 개의 오퍼레이션으로 구성된다. 예컨대, 스레드 A는 6개의 오퍼레이션(A1~A6)으로 구성될 수 있다. 스레드 B는 4개의 오퍼레이션(B1~B4)으로 구성될 수 있다. X[0]와 X[1]은 메모리 오브젝트를 나타낸다. 예컨대, 스레드 A의 오퍼레이션 A1은 X[0]에 관한 리드(read) 오퍼레이션이 될 수 있다.
X[0]와 X[1]이 같은 캐시 라인을 공유한다고 가정하자. 또한 오퍼레이션들의 실행 순서가 A1→...→B1→B2→...→A4와 같다고 가정하자. 오퍼레이션 A1이 실행되면 X[0]를 포함하는 캐시 라인이 캐시 A(113)로 로딩된다. 그리고 오퍼레이션 B1가 실행되면 X[1]을 포함하는 캐시 라인이 캐시 B(114)로 로딩된다. 이어서 오퍼레이션 B2가 실행되면 캐시 B(114)에 로딩된 캐시 라인에서 X[1]에 데이터가 기록되고 캐시 일관성을 위해 캐시 A(113)에 로딩된 캐시 라인이 무효화된다. 따라서 오퍼레이션 A4가 실행될 때 다시 X[0]를 포함하는 캐시 라인이 캐시 A(113)로 로딩되면서 성능 저하가 발생할 수 있다.
오퍼레이션 세트 검출부(101)는, 메모리 접근 추적을 통해, 도 2와 같은 코드 블록에서 거짓 공유에 의한 성능 저하를 유발할 가능성이 있는 오퍼레이션들, 예컨대, 오퍼레이션 A1, B2, 및 A4 등을 검출할 수 있다.
도 3은 메모리 접근 및 스레딩 API 호출 추적의 예를 도시한다. 이것은 도 2의 코드 블록에 메모리 접근 추적을 위한 인스트루먼테이션 함수를 삽입하고, 인스트루먼테이션 함수가 삽입된 코드 블록을 예비 수행한 결과가 될 수 있다.
도 3을 참조하면, 메모리 접근 및 스레딩 API 호출 추적을 통해 각각의 오퍼레이션이 접근하는 메모리 오브젝트, 각각의 오퍼레이션들의 선후관계/병렬관계 등이 파악될 수 있다. 예를 들어, 스레드 A의 오퍼레이션 A1는 메모리 오브젝트 X[0]로 접근하는 오브젝트이다. 그리고 스레드 A의 오퍼레이션 A1은 스레드 B의 오퍼레이션 B1 보다 Happens-before 관계에 있고, 스레드 A의 오퍼레이션 A2, A3, A4, A5와 스레드 B의 오퍼레이션 B1, B2, B3는 Parallel 관계에 있다. 오퍼레이션들의 Happens-before/Parallel 관계는 스레딩 API 호출 시 스레드 A와 스레드 B가 주고 받은 소정의 차원(dimension)을 갖는 벡터클럭(vector-clock)을 통해 파악하는 것이 가능하다.
오퍼레이션 세트 검출부(101)는 도 3과 같은 메모리 접근 추적을 통해 파악된 오퍼레이션들의 메모리 접근 정보 및 선후관계/병렬관계를 이용하여 거짓 공유에 의한 성능 저하를 유발할 가능성이 있는 오퍼레이션들을 검출하는 것이 가능하다.
도 4는 검출된 오퍼레이션 세트의 일 예를 도시한다.
도 1, 도 3 및 도 4를 참조하면, 오퍼레이션 세트 검출부(101)는 오퍼레이션 C, 오퍼레이션 I, 및 오퍼레이션 R을 포함하는 오퍼레이션 세트를 검출한다.
오퍼레이션 C는 캐시 라인 L에 대응되는 제 1 메모리 오브젝트에 대한 제 1 스레드의 리드 또는 라이트 오퍼레이션을 말한다. 예컨대, 오퍼레이션 A1은 캐시 라인 L에 대응되는 메모리 오브젝트 X[0]에 대한 리드 오퍼레이션이므로 오퍼레이션 C가 될 수 있다.
오퍼레이션 I는 캐시 라인 L을 공유하는 제 2 메모리 오브젝트에 대한 제 2 스레드의 라이트 오퍼레이션을 말한다. 예컨대, 오퍼레이션 B2는 캐시 라인 L에 대응되는 메모리 오브젝트 X[1]에 대한 라이트 오퍼레이션이므로 오퍼레이션 I가 될 수 있다.
오퍼레이션 R은 오퍼레이션 C보다 나중에 실행되며 캐시 라인 L에 대응되면서 제 2 메모리 오브젝트와 겹치지 않는 제 3 오브젝트에 대한 제 1 스레드의 리드 또는 라이트 오퍼레이션을 말한다. 예컨대, 오퍼레이션 A4는 캐시 라인 L에 대응되는 메모리 오브젝트 X[0]에 대한 라이트 오퍼레이션이므로 오퍼레이션 R이 될 수 있다.
본 실시예에 따라, 오퍼레이션 세트 검출부(101)에 검출되는 오퍼레이션 세트, 예컨대, 오퍼레이션 A1, B2, A4들을 "CIR 세트"이라고 지칭하기로 한다. 그리고 도 4에서는 CIR 세트가 하나만 검출되는 것을 예시하였으나 이것은 설명의 편의를 위한 것이다. 즉 오퍼레이션 세트 검출부(101)는, 도 5와 같이, 검출 조건을 만족하는 여러 개의 CIR 세트를 적어도 2개 이상의 스레드에서 검출하는 것이 가능하다.
도 5는 검출된 오퍼레이션 세트의 다른 예를 도시한다.
도 5를 참조하면, 오퍼레이션 세트 검출부(101)에 의해 총 3개의 CIR 세트가 검출될 수 있다. 예를 들어, 스레드 A와 스레드 B에 있어서 C→I→R, C→I`→R 두 개의 CIR 세트가 검출되고, 스레드 A와 스레드 B`에 있어서 C→I``→R 한 개의 CIR 세트가 검출될 수 있다.
도 4 및 도 5와 같이, 오퍼레이션 세트 검출부(101)가 여러 개의 CIR 세트를 검출하면, 확률 계산부(102)는 각각의 CIR 세트가 실제 실행될 때 거짓 공유에 의한 성능 저하를 유발하는 실행 패턴으로 실행될지를 나타내는 제 1 확률을 계산한다. 또한 확률 계산부(102)는 거짓 공유에 의한 성능 저하를 유발하는 실행 패턴으로 실행될 가능성이 있다면 그것으로 인해 얼마나 심각한 성능 저하를 유발하는지를 나타내는 제 2 확률을 계산한다.
도 6은 제 1 확률을 구하는 방법에 관한 일 예를 도시한다.
도 6을 참조하면, 스레드 A의 오퍼레이션들은 스레드 B의 오퍼레이션 I를 기준으로 보았을 때 오퍼레이션 I과 병렬 관계에 있는 영역(601), 오퍼레이션 I보다 선행 관계에 있는 영역(602), 및 오퍼레이션 I보다 후행 관계에 있는 영역(603)으로 구분될 수 있다.
제 1 확률은 오퍼레이션 I가 오퍼레이션 C와 오퍼레이션 R 사이에서 실행될 확률로 계산될 수 있다. 예를 들어, 제 1 확률은 스레드 A의 오퍼레이션들 중에서 오퍼레이션 I와 병렬 관계에 있는 오퍼레이션들의 길이 또는 개수(604)와, 스레드 A의 오퍼레이션 C 및 오퍼레이션 R 사이의 오퍼레이션들 중에서 오퍼레이션 I와 병렬 관계에 있는 오퍼레이션들의 길이 또는 개수(605)를 이용하여 계산될 수 있다. 이를 수식으로 나타내면 다음과 같다.
Figure 112010065217040-pat00001
수학식 1에서, 오퍼레이션 간 거리가 동일한 경우, operation의 길이는 operation의 개수에 1을 더함으로써 구하는 것도 가능하다.
도 7은 제 2 확률을 구하는 방법에 관한 일 예를 도시한다.
도 7을 참조하면, 제 2 확률은 오퍼레이션 R이 실행될 때 캐시 라인에 대한 리로드(reload)가 발생될 확률로 계산될 수 있다. 예컨대, 제 2 확률은 검출된 CIR 세트 별로 계산된 각각의 제 1 확률을 확률적으로 취합하여 구하는 것이 가능하다.
예를 들어, 도 7에서, 오퍼레이션 R을 기준으로 C→I→R과 C→I`→R이 CIR 세트로 검출된 경우를 살펴본다. 제 1 확률인 P(C→I→R) 및 P(C→I`→R)은 수학식 1과 같이 각각 4/7 및 3/5으로 계산될 수 있다.
즉 스레드 A와 스레드 B에서, 오퍼레이션 I와 병렬 관계에 있는 스레드 A의 오퍼레이션들(701)의 길이(703)와 오퍼레이션 I와 병렬 관계에 있는 스레드 A의 오퍼레이션들(701) 중 오퍼레이션 C와 오퍼레이션 R 사이의 길이(704)를 이용해서 P(C→I→R)=4/7을 산출할 수 있다. 또한, 스레드 A와 스레드 B`에서, 오퍼레이션 I`와 병렬 관계에 있는 스레드 A의 오퍼레이션들(702)의 길이(705)와 오퍼레이션 I`와 병렬 관계에 있는 스레드 A의 오퍼레이션들(702) 중 오퍼레이션 C와 오퍼레이션 R 사이의 길이(706)를 이용해서 P(C→I`→R)=3/5을 산출할 수 있다.
제 2 확률은 계산된 P(C→I→R)와 P(C→I`→R)를 확률적으로 취합해서 구하는 것이 가능하다. 확률적으로 취합한다 함은 각각의 확률 값을 단순히 더하는 것을 의미하지 아니한다. 다시 말해, P(C→I→R)와 P(C→I`→R)는 독립 사건이 아니므로 모든 I(또는 I`)를 고려한 R에서의 확률은 전체 확률 1에서 가능한 모든 I(또는 I`)가 C와 R 사이에 들어가지 않을 확률을 뺀 값이 될 수 있다. 구체적인 수식으로 살펴보면 다음과 같다.
Figure 112010065217040-pat00002
따라서, 도 7 및 수학식 2에서, 제 2 확률은 1-(1-(4/7))*(1-(3/5))와 같이 계산될 수 있다.
도 8은 본 발명의 일 실시예에 따른 거짓 공유 검출 방법을 도시한다. 도 1 및 도 8을 참조하여 본 실시예에 따른 거짓 공유 검출 방법을 설명하면 다음과 같다.
먼저, 오퍼레이션 세트를 검출한다(801). 예컨대, 오퍼레이션 세트 검출부(101)가, 도 3 내지 도 5와 같이, 메모리 접근 추적을 통해 다수의 CIR 세트를 검출하는 것이 가능하다.
그리고, 제 1 확률을 계산한다(802). 제 1 확률은 검출된 각각의 CIR 세트가 거짓 공유에 의한 성능 저하를 유발할 수 있는 패턴으로 실행될 확률을 나타낼 수 있다. 예컨대, 확률 계산부(102)가, 도 6 및 수학식 1과 같이, 오퍼레이션 I가 오퍼레이션 C와 R 사이에서 실행될 확률을 통해 제 1 확률을 계산하는 것이 가능하다.
그리고, 제 2 확률을 계산한다(803). 제 2 확률은 CIR 세트의 오퍼레이션 R을 기준으로 거짓 공유에 의한 성능 저하가 발생될 확률을 나타낼 수 있다. 예컨대, 확률 계산부(102)가, 도 7 및 수학식 2와 같이, 제 1 확률을 확률적으로 취합하여 제 2 확률을 계산하는 것이 가능하다.
그리고, 결과를 사용자에게 보고한다(804). 예컨대, 결과 보고부(103)가 거짓 공유에 의한 성능 저하를 유발할 수 있는 오퍼레이션 R과 관련된 코드를 계산된 제 2 확률에 따라 정렬해서 표시하는 것이 가능하다.
이상에서 살펴본 바와 같이, 개시된 장치 및 방법에 의하면, 메모리 접근 추적을 통한 사전 실행 과정에서 거짓 공유에 의한 성능 저하가 유발될 수 있는 부분을 검출하고 그 부분이 실제 어느 정도의 심각성을 가지고 성능 저하를 유발할지 확률적으로 결정하기 때문에 잠재적인 성능 저하를 사전에 검출 및 수정하는 것이 가능하다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.

Claims (18)

  1. 거짓 공유에 의한 성능 저하를 유발할 가능성이 있는 오퍼레이션 세트를 검출하는 오퍼레이션 세트 검출부; 및
    상기 검출된 오퍼레이션 세트가 거짓 공유에 의한 성능 저하를 유발하는 실행 패턴으로 실행될 확률로 정의되는 제 1 확률을 계산하고, 상기 계산된 제 1 확률을 이용하여 상기 검출된 오퍼레이션 세트에 포함된 어느 하나의 오퍼레이션에서 거짓 공유에 의한 성능 저하가 발생될 확률로 정의되는 제 2 확률을 계산하는 확률 계산부; 를 포함하는 거짓 공유 검출 장치.
  2. 제 1 항에 있어서, 상기 오퍼레이션 세트 검출부는
    제 1 메모리 오브젝트에 대한 제 1 스레드의 리드 또는 라이트 오퍼레이션인 오퍼레이션 C, 상기 제 1 메모리 오브젝트와 캐시 라인을 공유하는 제 2 메모리 오브젝트에 대한 제 2 스레드의 라이트 오퍼레이션인 오퍼레이션 I, 및 상기 오퍼레이션 C보다 나중에 실행되며 상기 캐시 라인에 대응되면서 상기 제 2 메모리 오브젝트와 겹치지 않는 제 3 오브젝트에 대한 제 1 스레드의 리드 또는 라이트 오퍼레이션인 오퍼레이션 R을 포함하는 오퍼레이션 세트를 검출하는 거짓 공유 검출 장치.
  3. 제 1 항에 있어서, 상기 오퍼레이션 세트 검출부는
    메모리 접근 또는 스레딩 API 호출 추적을 위해 소스 코드 또는 바이너리 코드에 삽입된 인스트루먼테이션 함수에 기초하여 오퍼레이션들의 메모리 접근 정보, 오퍼레이션들의 선후 관계, 및 오퍼레이션들의 병렬 관계를 획득하는 거짓 공유 검출 장치.
  4. 제 2 항에 있어서, 상기 확률 계산부는
    상기 오퍼레이션 I가 상기 오퍼레이션 C와 상기 오퍼레이션 R 사이에서 실행될 확률을 이용하여 상기 제 1 확률을 계산하는 거짓 공유 검출 장치.
  5. 제 4 항에 있어서, 상기 확률 계산부는
    상기 제 1 스레드의 오퍼레이션들 중에서 상기 오퍼레이션 I와 병렬 관계에 있는 오퍼레이션들의 길이 또는 개수와,
    상기 제 1 스레드의 상기 오퍼레이션 C 및 상기 오퍼레이션 R 사이의 오퍼레이션들 중에서 상기 오퍼레이션 I와 병렬 관계에 있는 오퍼레이션들의 길이 또는 개수를 이용하여, 상기 제 1 확률을 계산하는 거짓 공유 검출 장치.
  6. 제 2 항에 있어서, 상기 확률 계산부는
    상기 오퍼레이션 R이 실행될 때 상기 캐시 라인에 대한 리로드(reload)가 발생될 확률을 이용하여 상기 제 2 확률을 계산하는 거짓 공유 검출 장치.
  7. 제 6 항에 있어서, 상기 확률 계산부는
    검출된 오퍼레이션 세트 별로 계산된 각각의 상기 제 1 확률을 확률적으로 취합하여 상기 제 2 확률을 계산하는 거짓 공유 검출 장치.
  8. 제 2 항에 있어서,
    상기 오퍼레이션 R과 관련된 코드 및 상기 제 2 확률을 사용자에게 제공하는 결과 보고부; 를 더 포함하는 거짓 공유 검출 장치.
  9. 제 8 항에 있어서, 상기 결과 보고부는
    상기 제 2 확률에 따라 상기 코드를 정렬하여 표시하는 거짓 공유 검출 장치.
  10. 거짓 공유에 의한 성능 저하를 유발할 가능성이 있는 오퍼레이션 세트를 검출하는 단계; 및
    상기 검출된 오퍼레이션 세트가 거짓 공유에 의한 성능 저하를 유발하는 실행 패턴으로 실행될 확률로 정의되는 제 1 확률을 계산하고, 상기 계산된 제 1 확률을 이용하여 상기 검출된 오퍼레이션 세트에 포함된 어느 하나의 오퍼레이션에서 거짓 공유에 의한 성능 저하가 발생될 확률로 정의되는 제 2 확률을 계산하는 단계; 를 포함하는 거짓 공유 검출 방법.
  11. 제 10 항에 있어서, 상기 오퍼레이션 세트를 검출하는 단계는
    제 1 메모리 오브젝트에 대한 제 1 스레드의 리드 또는 라이트 오퍼레이션인 오퍼레이션 C, 상기 제 1 메모리 오브젝트와 캐시 라인을 공유하는 제 2 메모리 오브젝트에 대한 제 2 스레드의 라이트 오퍼레이션인 오퍼레이션 I, 및 상기 오퍼레이션 C보다 나중에 실행되며 상기 캐시 라인에 대응되면서 상기 제 2 메모리 오브젝트와 겹치지 않는 제 3 오브젝트에 대한 제 1 스레드의 리드 또는 라이트 오퍼레이션인 오퍼레이션 R을 포함하는 오퍼레이션 세트를 검출하는 거짓 공유 검출 방법.
  12. 제 10 항에 있어서, 상기 오퍼레이션 세트를 검출하는 단계는
    메모리 접근 또는 스레딩 API 호출 추적을 위해 소스 코드 또는 바이너리 코드에 삽입된 인스트루먼테이션 함수에 기초하여 오퍼레이션들의 메모리 접근 정보, 오퍼레이션들의 선후 관계, 및 오퍼레이션들의 병렬 관계를 획득하는 거짓 공유 검출 방법.
  13. 제 11 항에 있어서, 상기 제 1 확률을 계산하는 단계는
    상기 오퍼레이션 I가 상기 오퍼레이션 C와 상기 오퍼레이션 R 사이에서 실행될 확률을 이용하여 상기 제 1 확률을 계산하는 거짓 공유 검출 방법.
  14. 제 13 항에 있어서, 상기 제 1 확률을 계산하는 단계는
    상기 제 1 스레드의 오퍼레이션들 중에서 상기 오퍼레이션 I와 병렬 관계에 있는 오퍼레이션들의 길이 또는 개수와,
    상기 제 1 스레드의 상기 오퍼레이션 R 및 상기 오퍼레이션 C 사이의 오퍼레이션들 중에서 상기 오퍼레이션 I와 병렬 관계에 있는 오퍼레이션들의 길이 또는 개수를 이용하여, 상기 제 1 확률을 계산하는 거짓 공유 검출 방법.
  15. 제 11 항에 있어서, 상기 제 2 확률을 계산하는 단계는
    상기 오퍼레이션 R이 실행될 때 상기 캐시 라인에 대한 리로드(reload)가 발생될 확률을 이용하여 상기 제 2 확률을 계산하는 거짓 공유 검출 방법.
  16. 제 15 항에 있어서, 상기 제 2 확률을 계산하는 단계는
    검출된 오퍼레이션 세트 별로 계산된 각각의 상기 제 1 확률을 확률적으로 취합하여 상기 제 2 확률을 계산하는 거짓 공유 검출 방법.
  17. 제 11 항에 있어서,
    상기 오퍼레이션 R과 관련된 코드 및 상기 제 2 확률을 사용자에게 제공하는 단계; 를 더 포함하는 거짓 공유 검출 방법.
  18. 제 17 항에 있어서, 상기 제공하는 단계는
    상기 제 2 확률에 따라 상기 코드를 정렬하여 표시하는 거짓 공유 검출 방법.
KR1020100098403A 2010-10-08 2010-10-08 거짓 공유 검출 장치 및 방법 KR101748441B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020100098403A KR101748441B1 (ko) 2010-10-08 2010-10-08 거짓 공유 검출 장치 및 방법
US13/162,670 US8874856B2 (en) 2010-10-08 2011-06-17 Apparatus and method for detecting false sharing
EP11180902A EP2439646A1 (en) 2010-10-08 2011-09-12 Apparatus and method for detecting false sharing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100098403A KR101748441B1 (ko) 2010-10-08 2010-10-08 거짓 공유 검출 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120036628A KR20120036628A (ko) 2012-04-18
KR101748441B1 true KR101748441B1 (ko) 2017-06-19

Family

ID=44785360

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100098403A KR101748441B1 (ko) 2010-10-08 2010-10-08 거짓 공유 검출 장치 및 방법

Country Status (3)

Country Link
US (1) US8874856B2 (ko)
EP (1) EP2439646A1 (ko)
KR (1) KR101748441B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9058270B2 (en) * 2011-06-24 2015-06-16 International Business Machines Corporation False sharing detection logic for performance monitoring
US9223699B2 (en) * 2013-03-15 2015-12-29 Intel Corporation Cache management in managed runtime environments
US9678883B2 (en) * 2013-07-26 2017-06-13 Futurewei Technologies, Inc. System and method for detecting false sharing
US9547599B2 (en) 2013-07-26 2017-01-17 Futurewei Technologies, Inc. System and method for predicting false sharing
US20180081811A1 (en) * 2016-09-20 2018-03-22 Qualcomm Incorporated Dynamic cache partitioning through hill-climbing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100088472A1 (en) 2007-06-20 2010-04-08 Fujitsu Limited Data processing system and cache control method

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4423559A1 (de) * 1993-11-09 1995-05-11 Hewlett Packard Co Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher
US5835950A (en) * 1996-07-12 1998-11-10 Samsung Electronics Co., Ltd. Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus
US6094709A (en) 1997-07-01 2000-07-25 International Business Machines Corporation Cache coherence for lazy entry consistency in lockup-free caches
US6289419B1 (en) * 1998-03-06 2001-09-11 Sharp Kabushiki Kaisha Consistency control device merging updated memory blocks
KR100257993B1 (ko) * 1998-05-19 2000-06-01 윤덕용 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US6591355B2 (en) * 1998-09-28 2003-07-08 Technion Research And Development Foundation Ltd. Distributed shared memory system with variable granularity
US6317816B1 (en) * 1999-01-29 2001-11-13 International Business Machines Corporation Multiprocessor scaleable system and method for allocating memory from a heap
JP2000267935A (ja) 1999-03-18 2000-09-29 Fujitsu Ltd キヤッシュメモリ装置
US6457107B1 (en) 2000-02-28 2002-09-24 International Business Machines Corporation Method and apparatus for reducing false sharing in a distributed computing environment
US6742086B1 (en) * 2000-08-11 2004-05-25 Unisys Corporation Affinity checking process for multiple processor, multiple bus optimization of throughput
JP4043225B2 (ja) * 2001-12-10 2008-02-06 株式会社ルネサステクノロジ キャッシュ装置および方法
US6944722B2 (en) 2003-04-14 2005-09-13 Sun Microsystems, Inc. Method and system for postmortem identification of falsely shared memory objects
US7185147B2 (en) 2003-12-12 2007-02-27 Intel Corporation Striping across multiple cache lines to prevent false sharing
US7114036B2 (en) 2004-01-14 2006-09-26 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US7496908B2 (en) 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7093081B2 (en) 2004-01-14 2006-08-15 International Business Machines Corporation Method and apparatus for identifying false cache line sharing
US7243194B2 (en) * 2005-02-09 2007-07-10 International Business Machines Corporation Method to preserve ordering of read and write operations in a DMA system by delaying read access
US7350034B2 (en) * 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US7730463B2 (en) 2006-02-21 2010-06-01 International Business Machines Corporation Efficient generation of SIMD code in presence of multi-threading and other false sharing conditions and in machines having memory protection support
US8443341B2 (en) * 2006-11-09 2013-05-14 Rogue Wave Software, Inc. System for and method of capturing application characteristics data from a computer system and modeling target system
US8825982B2 (en) * 2010-06-10 2014-09-02 Global Supercomputing Corporation Storage unsharing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100088472A1 (en) 2007-06-20 2010-04-08 Fujitsu Limited Data processing system and cache control method

Also Published As

Publication number Publication date
EP2439646A1 (en) 2012-04-11
US8874856B2 (en) 2014-10-28
US20120089785A1 (en) 2012-04-12
KR20120036628A (ko) 2012-04-18

Similar Documents

Publication Publication Date Title
US10394714B2 (en) System and method for false sharing prediction
Zhao et al. Dynamic cache contention detection in multi-threaded applications
Pesterev et al. Locating cache performance bottlenecks using data profiling
US7681015B2 (en) Generating and comparing memory access ranges for speculative throughput computing
KR101748441B1 (ko) 거짓 공유 검출 장치 및 방법
US9146746B2 (en) Systems and methods for providing deterministic execution
Muzahid et al. Vulcan: Hardware support for detecting sequential consistency violations dynamically
US10402292B2 (en) System and method for detecting false sharing
US8359291B2 (en) Architecture-aware field affinity estimation
CN110168508B (zh) 监测断点出现的存储器位置的方法、计算机系统和介质
Chabbi et al. Featherlight on-the-fly false-sharing detection
US8612952B2 (en) Performance optimization based on data accesses during critical sections
US8898648B2 (en) Methodology for fast detection of false sharing in threaded scientific codes
Pasqualin et al. Online sharing-aware thread mapping in software transactional memory
US8910125B2 (en) Monitoring software performance
Günther et al. Assessing cache false sharing effects by dynamic binary instrumentation
Wicaksono et al. Detecting false sharing in openmp applications using the darwin framework
Nair et al. Gapp: A fast profiler for detecting serialization bottlenecks in parallel linux applications
Helm et al. Automatic identification and precise attribution of dram bandwidth contention
Wang et al. Real time cache performance analyzing for multi-core parallel programs
Helm et al. On the correct measurement of application memory bandwidth and memory access latency
Patel et al. CHERI-picking: Leveraging capability hardware for prefetching
Helm et al. Measurement of Main Memory Bandwidth and Memory Access Latency in Intel Processors
Bouksiaa Performance variation considered helpful
Hagersten et al. Efficient Cache Modeling with Sparse Data

Legal Events

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