KR100337219B1 - 정확한 캐시 감응성을 가능하게 하는 캐시 구조 - Google Patents

정확한 캐시 감응성을 가능하게 하는 캐시 구조 Download PDF

Info

Publication number
KR100337219B1
KR100337219B1 KR1019990017613A KR19990017613A KR100337219B1 KR 100337219 B1 KR100337219 B1 KR 100337219B1 KR 1019990017613 A KR1019990017613 A KR 1019990017613A KR 19990017613 A KR19990017613 A KR 19990017613A KR 100337219 B1 KR100337219 B1 KR 100337219B1
Authority
KR
South Korea
Prior art keywords
cache
thread
processor
flexibility
scheduling
Prior art date
Application number
KR1019990017613A
Other languages
English (en)
Other versions
KR20000005675A (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 포만 제프리 엘
Publication of KR20000005675A publication Critical patent/KR20000005675A/ko
Application granted granted Critical
Publication of KR100337219B1 publication Critical patent/KR100337219B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 소정의 프로세서와 그와 관련된 캐시에서 관련 스레드(thread)의 캐시 풋프린트(cache footprint)를 감시함으로써 운영체제로 하여금 양호한 캐시 감지 스케줄링을 수행할 수 있게 하는 기술을 개시한다. 캐시 내의 스레드 풋프린트의 함수는 해당 캐시의 프로세서에 대한 그 스레드의 유연성(affinity)의 표시로서 사용할 수 있다. 예컨대, 캐시 내에 이미 존재하고 있는 캐시라인의 수가 많을수록, 스레드가 해당 프로세서에서 스케줄링될 때 스레드에 발생될 수 있는 캐시 미스의 수가 줄어들게 되고, 따라서 해당 프로세서에 대한 스레드의 유연성이 커지게 된다. 스레드의 우선순위(priority)와 다른 시스템을 한정하는 파라미터 이외에, 특정 프로세서에 스레드 실행을 할당할 때 스케줄링 알고리즘은 캐시 유연성을 고려에 넣을 수 있다. 본 발명은 캐시 감시장치에 의해 결정되는 소유권 등록과 캐시 용도에 기초해서 캐시라인의 상태와 소유권 카운트를 유지함으로써 소정 프로세서와 그와 관련된 연관 캐시에서 스레드의 캐시 풋프린트를 정확히 측정하는 장치를 기술한다.

Description

정확한 캐시 감응성을 가능하게 하는 캐시 구조 {CACHE ARCHITECTURE TO ENABLE ACCURATE CACHE SENSITIVITY}
본 발명은 컴퓨터 시스템의 스레드의 스케줄링에 관한 것으로서, 특히 캐시 감지 스케줄링을 위해서, 스레드의 캐시 풋프린트의 추적을 용이하게 하는 방법 및 시스템에 대한 것이다.
최신의 컴퓨터 구조에서, CPU의 속도는 메모리 액세스 속도보다 훨씬 빠르게 혁신적으로 성장하고 있다. 따라서 메모리 대기시간(memory latency)의 영향을 다루는 것이 점차 중요하게 되었다. 상대적으로 긴 메모리 액세스 시간을 줄이기 위해, 컴퓨터 시스템은, 도 1에 도시된 바와 같이, 마이크로프로세서(μP, 12)와 메모리(13) 사이에 대용량의 캐시(14a, 14b)를 포함하고 있으며, 심지어 다중 레벨 캐시도 흔히 사용되고 있다(14, 15)[1]. 그럼에도 불구하고, 메모리 액세스 속도 향상에 대한 CPU 속도 향상의 차이로 인해 캐시 미스가 발생하는 경우, CPU 사이클 에 대한 캐시 재적재 시간이 길어지게 된다. 명령 의존성 분석(instruction dependency analysis), 투기 실행(speculative execution), 아웃 오브 오더 실행(out-of-order execution) 및 프리페칭(prefetching)과 같은 여러 기술이 캐시 미스를 해결하는 것으로 알려져 있다[1]. 캐시 액세스 시간과 메모리 대기시간 사이의 시간차가 커짐에 따라, 이러한 기술을 사용하여 캐시 미스를 은폐하기가 점점 더 어렵게 되었다. 결과적으로, 마이크로프로세서는 캐시 미스에 의한 기능을 정지하는 횟수가 더 많아져, 하나의 인스트럭션을 실행시키는데 필요한 평균 사이클 수(cpi)를 증가시킨다. 따라서 컴퓨터 시스템의 cpi를 작게 유지하기 위해서는, 마이크로프로세서에서 발생하는 캐시 미스의 수를 감소시키는 것이 중요하다.
일반적으로 캐시 미스는 제한된 캐시 자원 때문에 발생하고, 프로세서의 활성 스레드(active thread)의 작업 세트 전체를 캐시 내에서 제공할 수 없는 경우에 발생한다. 이 경우에, 하나의 스레드가 액세스하는 메모리가 다른 스레드의 캐시 내용을 추출하므로, 스레드들 사이의 스위칭이 캐시 미스를 초래한다. 이러한 문제를 경감하기 위한 한가지 분명한 방법은 실행중의 스레드의 타임 슬라이스를 증가시킴으로써, 그의 긴 기간 중에 캐시를 재사용할 확률을 높이는 것이다. 그러나, 타임 슬라이스의 증가는 응답 시간 등의 다른 시스템 파라미터에 대해서 역효과가 있으며, 이것은 일반적으로 선택할 만한 사항이 아니다.
오늘날, 대다수의 서버 시스템, 혹은 거의 대부분의 서버 시스템은 복수의 프로세서(12a, 12b)를 하나 이상의 메모리 모듈(memory module)(13)에 연결하는 캐시 코히어런트 공유 메모리 다중 프로세서 시스템(MPs)(11)이다[1]. 이러한 시스템에서는, 한 프로세서에서 다른 프로세서로 스레드 실행이 옮겨질 때 캐시 미스가 일어나나, 그 액세스되는 메모리의 일부는 여전히 이전 프로세서의 캐시 상에 캐싱된다. 이러한 메모리 위치로 액세스할 때 캐시 미스가 발생하고, 그 결과 캐시라인이 새로운 프로세서로 이전된다. 상기와 같은 시스템 상의 스케줄러는 스케줄링되는 스레드의 우선순위뿐만 아니라 다른 프로세서에 대한 스레드 유연성을 고려함으로써, 스루풋(throught) 및 응답성(responsiveness) 모두를 개선할 수 있다[2,4,5,6]. 스레드가 일반적으로 높은 유연성을 갖는 프로세서로 스케줄될 경우에 캐시 미스의 전체 수는 감소되고, 따라서 스루풋이 향상된다. 유연성을 갖는 프로세서에서 스레드를 스케줄링하도록 스레드를 스케줄링하는 경우 발생하는 부차적인 지연(minor delay)은 스레드의 응답성을 실제로 증가시킬 수 있는데, 그 이유는 스레드가 실행을 시작할 때 프로세서가 자신의 캐시 내용을 재설정하는 시간을 덜 소비하기 때문이다. 많은 다중 프로세서 스케줄러는 소정 형식의 유연성 기반 스케줄링을 시도하지만, 이러한 스케줄링은 그 효율성이 제한되는데, 그 이유는 스케줄러에 의해 캐시 유연성을 정확히 측정할 수 있는 없기 때문이다.
가상 타임 스탬프(virtual time stamps)의 사용은 운영체제에서 처음으로 시도되어 현재는 다중 프로세서 시스템을 위한 상업용 운영체제에서 가장 널리 확산되어 있다. 이 경우, 프로세서 Pi의 스레드 T를 실행하면, 하나의 프로세서마다 타임 스탬프가 스레드에 할당된다. 소정 프로세서에 대해서 최상위 타임 스탬프를 갖는 스레드에 보다 높은 유연성 값이 할당된다. 이러한 개념을 위해서 매우 간단한 구현 방법(implementation)이 흔히 제공되는데, 즉, 스레드가 소정 프로세서에서 마지막으로 실행된 경우에는 1이란 값이 주어지고, 그렇지 않으면 0이란 값이 주어진다. 이러한 방법은 스레드의 캐시 풋프린트를 고려하지 않는다. 프로세서 상에서 가장 최근에 실행된 스레드가 그 프로세서에 최상위 유연성을 갖는 것으로 가정하는데, 이러한 가정은 종종 부정확하다.
대다수의 프로세서는 세트 인터벌중 캐시 미스의 수를 나타낼 수 있는 메커니즘을 도입했고, 운영체제는 이러한 정보를 사용하기 시작했다[3,4,5,6]. 최소 미스 전략(minimum misses strategy)에서는, 스케줄러가 스레드의 마지막 실행이 이루어지는 동안 발생한 캐시 미스의 수를 기억하고 있다. 소정 스레드에 대한 캐시 미스의 수가 적을수록 그 할당된 캐시 유연성은 높다. 보다 정밀한 전략은 캐시 재적재 천이 모델(cache reload transient model)을 기초로 한다. 재적재 천이는 스레드를 재시작시킨 후에 스레드의 풋프린트를 재확립하기 위한 코스트로 정의된다. 소정 시간에서 스레드의 풋프린트를 평가하는데 마르코프 연쇄 모델(Markov Chain Model)이 사용될 수 있다[3,5,6]. 특히, 마르코프 연쇄는 스레드의 실행이 이루어지는 동안 캐시 미스의 결과로서 활성 캐시라인의 수를 증가시키는 확률을 모델화한다. 예를 들면, N 캐시라인을 가진 시스템과 M 캐시라인을 보유하는 현재 실행중인 스레드 T를 가정하면, 캐시 미스가 T의 캐시 풋프린트를 증가(즉, T의 캐시라인의 어느 것도 미스에 의해 대체되지 않음)시킬 확률은 (N-M)/N이 된다. 다음에 하나 이상의 캐시 미스에 동일한 논리를 적용하여 연쇄를 구성한다. 마찬가지로, 동일한 모델을 사용하여 스레드의 마지막 실행 이후의 캐시 미스 횟수에 대한 스레드의 캐시 풋프린트 감소를 추정하는 것이 가능하다. 그 후 스케줄링 시에 최저의 재적재 천이를 가진 스레드를 선택하는 것을 알 수 있는데, 그 이유는 이전의 상태를 복구하기 위해서 최소 캐시 미스가 발생될 것으로 기대되기 때문이다. 이러한 전략은 시스템을 마르코프 방식(markovian), 즉 스레드의 거동을 정확하게 반영하지 못하고, 또한 캐시 연관성(cache associativity)과 같은 캐시 하드웨어 제한 규정을 반영하지 못한 히스토리의 일부가 빠져 있는 것처럼 보이도록 한다[1]. 또한, 캐시 풋프린트가 스레드의 수명에 대하여 점진적으로 추정되므로, 이러한 모델은 동기가 이루어 지지 않고, 열악한 스케줄링 결정을 가져올 수 있다.
상기한 바와 같이, 스케줄링 기술을 기초로 한 현재 사용되는 유연성의 주요 장애 요인으로는 캐시 유연성 기능이 아주 간단한 발견법, 예를 들어 가상 타임 스탬프를 기초로 하거나, 또는 캐시 풋프린트 측정, 예를 들어 마르코프 연쇄와 같은 확률적인 모델을 기초로 한다는 것이다.
따라서, 정확한 캐시 풋프린트 측정을 기초로 하는 개선된 캐시 유연성 기반 스케줄링을 구비한 운영체제가 필요하다.
참고문헌(References)
1. J. L. Hennessy, D. A. Patterson, 'Computer Architecture: A Quantitative Approach,' Morgan Kaufmann Publishers, ISBN 1-55860-329-8, 1996.
2. U. Vahalla, 'UNIX Internals: The New Frontier,' Prentice Hall, ISBN 0-13-101908-2, 1996.
3. D. Thiebaut, H. Stone, 'Footprints in the Cache,' ACM Transactions on Computer Systems, 5(4), 1987년 11월, pp. 305∼329.
4. M. Squillante, E. Lazowska, 'Using Processor Cache Affinity in Shared-Memory Multiprocessor Scheduling,' IEEE Transactions on Parallel and Distributed Systems, 4(2), 1993년 2월, pp. 131∼143.
5. A. Tucker, 'Efficient Scheduling on Multiprogrammed Shared Memory Multiprocessors,' Ph.D. Thesis, Department of Computer Science, StanfordUniversity, CX-TN-94-4, 1993년 12월.
6. F. Belossa, 'Locality-Information-Based Scheduling in Shared-Memory Multiprocessors,' IPPS'96 Workshop on Job Scheduling Strategies for Parallel Processing, Honolulu, Hawaii, 1996년 4월.
상기 참고문헌 1 내지 6은 참고로서 본 명세서에 포함되어 본 발명의 일부를 이룬다.
본 발명의 목적은 개선된 캐시 유연성을 기반으로 한 스케줄링을 제공하기 위한 것이다. 따라서 본 발명은 각 프로세서에 대한 각 스레드의 캐시 풋프린트를 측정함으로써 다중 프로세서 시스템에서 스레드를 스케줄링하는 방법과 장치를 제공한다. 다음에, 각 프로세서에 대한 각 스레드의 유연성은 상기에서 결정된 캐시 풋프린트를 사용하여 결정된다. 그 다음에, 각 프로세서 상에서 각 스레드의 실행은 유연성에 따라서 스케줄링된다. 본 발명의 보다 구체적인 실시예에 있어서, 각 캐시에 대한 각 스레드의 캐시 풋프린트는 각 스레드에 의해 특정 캐시로부터 인출되는 활성 캐시라인의 수로 측정된다.
도 1은 통합 캐시 구조를 갖는 공유 메모리 다중 프로세서(multi-processor)를 개략적으로 예시하는 도면.
도 2는 본 발명의 다중 프로세서로 통합된 캐시 구조의 상위 레벨을 개략적으로 예시하는 도면.
도 3은 본 발명의 캐시 감시 장치의 내부 구조를 예시하는 도면.
도 4는 본 발명에 따른 캐시 감시 장치 갱신 동작을 개략적으로 예시하는 도면.
도 5는 다음에 실행할 스레드(thread)를 선택하기 위해서 소정 프로세서의 스레드의 실행 우선순위를 결정하는데 사용되는 일반적인 알고리즘을 예시하는 도면.
도 6은 스케줄러를 개략적으로 예시하고, 스레드 중의 하나에 대한 디스패치 대기행렬(dispatch queue)과 유연성(affinity) 벡터를 포함하는 도면.
상기한 바와 같이, 도 1은 복수의 프로세서 또는 CPU(12a ...12b)를 구비한 예시적인 다중 프로세서 시스템(11)을 도시하고 있다. 각 프로세서는 응용 소프트웨어와 운영체제 소프트웨어를 보유 및/또는 지원하는 저장 매체인 단기 메모리(short memory; 13)에 연결된다. 다중 레벨의 캐시(14a, 14b, 15a, 15b)도 가능하지만, 프로세서와 그 연관 메모리의 통신 경로에는 적어도 하나의 각 캐시(14a, 14b)가 포함된다. 상기 캐시의 목적은 보다 빠른 메모리 액세스를 제공하기 위해 빈번히 액세스되는 상기 메모리의 내용을 일시적으로 저장하고, 상기 캐싱된 메모리 내용으로의 빠른 통신 경로를 제공하기 위한 것이다.
도 2에 예시된 바와 같이 본 발명에 따르면, 표준 캐시 구조는 캐시 감시장치(cache monitoring unit: CMU)(20)에 의해 확장된다. 그 명칭에서 알 수 있는 바와 같이, 이러한 확장의 목적은 계산 장치(프로세스, 스레드)의 캐시 풋프린트를 측정하기 위해 캐시의 소유권과 용도를 감시하고 추정하기 위한 것이다. 도 2는 다른 표준 시스템 구성 요소, 즉, 캐시(21), CPU(22), 및 메모리(23)와 CMU의 통합 및 대화의 상위 레벨의 개략적인 구성을 제공한다. CPU 상의 인스트럭션 스트림을 실행하는 현재의 스레드가 적재나 저장 동작 ID(A)/ST(A)(24)를 경유하여 메모리 위치 A (M[A])의 내용에 액세스할 때, CPU는 CPU-캐시-인터페이스(28)를 통하여 자신의 연관 캐시(21)에 이러한 요구를 발행한다. 다음에 캐시의 태스크는 (a) M[A]가 이미 캐시에 저장되어 있고, CPU로 데이터를 리턴시키는지의 여부를 식별하거나, (b) 상기 태스크 (a)를 수행하기 전에 먼저 메인 메모리로부터 M[A]가 인출되어야 하는지의 여부를 식별하는 것이다. M[A]가 이미 캐시 메모리 내에 있는 경우에, M[A]는 메모리 액세스 없이 CPU로 리턴된다. 이 시점에서 CPU와의 대화는 필요하지 않다. 그러나, M[A]가 캐시 메모리 내에서 사용할 수 없는 경우, 캐시는 캐시-메모리-인터페이스(23)를 통하여 메모리 장치로부터 데이터를 인출해야만 한다. 캐시의 메모리는 메인 메모리보다 상당히 작기 때문에, 캐시는 M[A]를 저장하기 위해서 저장공간을 만들거나 캐싱된 다른 메모리(cached memory)를 '추출(evict)' 한다. 캐시는 한정된 캐시라인 수 (NUM_CL)로 편성되고, 여기서 각 캐시라인은 특정 수의 연속 메모리 바이트를 유지하며, 여기서 메모리의 연속 바이트의 특정 수를 캐시라인 크기(CLS)라 한다. 일반적으로 캐시는 간단한 사상(매핑) 함수 F(A)(예를 들어, 주소 비트 해싱(hashing) 함수)를 기초로 하는 그룹으로 다중 캐시라인을 편성한다. 달리 말하면, M[A]는 자신의 연관 캐시라인 그룹 CG[A] 내의 하나의 캐시라인에만 저장될 수 있다. CG[A] 내에 캐시라인중 어느 것도 사용할 수 없는 경우, 캐시는 CG[A] 중에서 하나의 캐시라인을 추출시켜야 한다. 캐시라인을 추출시키는 것은 캐시라인이 변경된 상태, 즉, 메모리와 캐시 내용이 일치하지 않는 상태일 경우에 메모리에 라이트백(write-back)을 통합시키는 것이다. 그런 연후에만 M[A]가 새롭게 비워진 캐시라인으로 인출될 수 있다. 상기 편성 및 추출 메커니즘은 현재의 캐시에서 실제 사용되는 표준이다[1].
그러나, 본 발명의 다른 특징에 따르면, 어느 라인이 추출되고 어느 라인이 메모리 내용으로 채워지는지에 대한 통지가 캐시로부터 요구된다. CMU가 임의의 주어진 시간에 정확한 캐시 풋프린트 측정을 제공하도록 하기 위해서, 이러한 통지는 추출 및 충전 사건이 발생할 때 즉시 발생되어야 한다. 이러한 부가적인 동작은 병렬로 수행될 수 있으며 캐시를 액세스하는 임계 경로 상에서 임의의 추가 오버헤드(overhead)를 발생하지는 않는다. 특히, 일단 캐시가 캐시라인 Li를 추출시킬 것을 결정하면, 캐시는 캐시-CMU 통신 버스(C3 버스; 27)에 evict(Li) 통지를 실행하며, 일단 캐시가 캐시라인을 채우면, filled(Li) 통지가 CMU로 전송된다.
모든 실용상의 목적을 위해, 캐시라인 무효화와 초기 CMU 상태를 제외한 모든 추출이 이루어진 다음에 동일한 캐시라인이 채워진다. 따라서, evict(Li)와 filled(Li)는 하나의 요구 신호로 함께 묶여질 수 있다. 무효 인스트럭션은 추가 파라미터 INV에 의해 상기 요구 신호에 포함될 수 있다(하드웨어에 있어서 추가 파라미터 INV는 캐시 무효 인스트럭션이 발행될 때 나타나는 추가 신호라인임). 따라서, 캐시에서 CMU로 발행되는 각 요구는 REQL,INV 형식을 가지며, 여기서 L은 실행되는 라인을 나타내고, INV는 이러한 요구가 무효 인스트럭션의 결과인지 캐시라인 충전(추출을 암시)의 결과인지를 식별한다.
이후, 캐시로부터 통지 요구에 의해, CMU로 하여금 상기 스레드의 각각에 상기 스레드의 각각에 의해 인출되는 캐시라인 중 몇 개가 캐시 내에서 여전히 활성 상태에 있는지에 대한 측정값을 제공하도록 해주는 방법에 대해서 설명하기로 한다.
CMU는(예를 들어, C3-버스 상의 특정 신호를 줄임으로써) 각 통지 요구 REQL,INV를 픽업하여 긍정 응답을 송신한다. CMU-캐시 인터페이스 이외에, CMU는 CMU의 상태를 변경하고 질의하도록 다음의 두 인스트럭션을 표시하는, CMU에 대한 인터페이스(29)를 제공한다.
1) SETOWNER(OID)는 다른 SETOWNER(OID)가 발행될 때까지 계속 현재 위치에서 인출되는 모든 캐시라인의 소유주를 식별한다. OID는 유효 ID이다.
2) GETUSAGE(OID)는 유효 OID에 의해 소유되는 캐시라인의 수를 검색한다.
유효 OID로서, 다음의 제한 사항: [0 OID MAX_OID]을 가정하며, 여기서 MAX_OID는 소정 시스템의 상수이고, 0은 INV인 경우와 CMU의 초기 상태를 다루기 위해 마련된 것이다. 이 시점에서 본 발명의 실시예의 논의를 단순화 하기 위해서, 가능한 소유자(예를 들면, 스레드, 프로세스)의 수는 MAX_OID를 초과하지 않는 것으로 가정한다. 가능한 소유자의 수가 MAX_OID를 초과하는 경우는 이후에 설명될 것이다
현재의 소유자에 대해서 뿐만 아니라 각 유효 OID에 대해, CMU는 이러한 유효 OID에 의해 소유된 캐시라인의 수를 보유하여야 하고, 여기서 OID가 소유한 캐시라인의 수를 OC(OID)라 칭한다. 상기 캐시라인의 수의 카운트를 보유할 수 있기 위해서, CMU는 각 캐시라인 Li에 대해 캐시라인 소유자 CLO(Li)를 보유해야 한다. 특히, 캐시로부터 수신되는 각 요구 L,INV에 대해서, CMU는 캐시라인 L의 현재 소유자와 관련된 카운터를 감소시키고, 마지막 SETOWNER 인스트럭션에 의해 표시되는 바와 같이, 캐시라인 L의 신 소유자와 연관된 카운터를 증가시킨다. 일반적으로, 운영체제는 구문 절환 시에 CMU에게 SETOWNER 인스트럭션을 발행할 것이다. INV 신호가 요구에서 제기되면, 캐시라인과 연관된 소유자가 없어 새로운 소유자임(0은 유효 OID가 아니라는 것에 유의하라)을 표시하는 0이 선택된다. 마찬가지로 시스템 시동 시에, 모든 캐시라인은 OID가 0으로 추정된다.
도 3은 CMU의 내부 구조를 보다 상세하게 예시하고, 다음에 열거되는 여러 가지 CMU 구성 요소에 따른 상기 요건을 도시하고 있다.
1. 소유자 식별 레지스터 OID-REG(30): 현재 실행 중인 소유자(스레드, 프로세스)를 식별하는 OID(31)를 포함하고 있다.
2. NUM_CL 크기의 캐시라인-OID 벡터(32): 각 캐시라인 L[0..NUM_CL-1](32a∼32z)에 대해 캐시라인 소유자의 OID=CLO(Li)를 보유하고 있다.
3. 카운터 벡터(33): 각 가능한 유효 OID 값에 대해 얼마나 많은 캐시라인이 상기 OID에 의해 소유되는지를 나타내는 계수를 보유한다.
4. C3-버스 인터페이스(34): 캐시장치와 대화한다.
5. CMU 갱신 장치(35): 'evict'와 'filled' 통지를 기초로 하는 CMU 상태를 변경한다.
6. CPU 인터페이스(36): CPU에 의한 SETOWNER와 GETUSAGE 인스트럭션 발행에 따라 동작한다.
CMU가 다른 정보를 쉽게 추적할 수 있고 그렇지 않으면 캐시 코어 하드웨어 자체에 구속된다는 것이 부작용(side effect)이다. 예를 들면, 통지 요구를 간단하게 카운트함으로써, CMU는 실제의 캐시 미스 계산 정보를 제공할 수 있다.
CMU 갱신 장치(35)의 동작은 캐시라인의 적당한 카운트와 소유권을 보유하기 위한 것이다. 도 4의 순서도에 도시된 바와 같이, 다음의 동작 순서가 CMU 갱신 장치에 의해 수행된다:
● 단계 41에서는 C3-버스 인터페이스(34)로부터 다음번 통지 요구 <L,INV>를 검색한다.
● 단계 42에서는 캐시라인-OID 벡터(32)로부터 캐시라인 L의 현재 소유자를 인출한다.
● 단계 43에서는 직전에 결정된 소유자의 엔트리에서 카운터_벡터를 단조감소(--)시킨다.
● 단계 44에서는 INV 신호가 나타나는지를 판단하여, INV 신호가 나타나면 NEW_OWNER는 무효를 나타내는 '0'으로 설정되고(단계 46), 그렇지 않으면 NEW_OWNER는 OID_REG의 내용에 의해 결정된다(단계 45).
● 단계 47에서는 캐시라인의 소유자 CLO(L)를 NEW_OWNER가 되도록 설정한다.
● 단계 48에서는 NEW_OWNER의 카운터_벡터(34)를 단조증가(++)시킨다.
MAX_OID의 선택은 캐시라인의 수 NUM_CL, 캐시라인 크기 CLS, 및 스레드와 프로세스의 수와 같은 여러 가지 시스템 파라미터에 좌우된다. 종래 기술의 캐시 구조와 운영체제 파라미터를 기초로 하는 몇가지 측정값이 다음에 주어질 것이다. 캐시 내의 캐시라인의 수 NUM_CL은 수백만이 아닌 수천 또는 수만 정도이다. 예를 들면, 128 바이트(27)의 캐시라인 크기를 가진 4메가바이트(222)의 캐시는 32768(215) 캐시라인이 생긴다고 가정한다. 또한 4096(212)개까지 생성될 수 있는 스레드의 수를 제한하는 운영체제라고 가정한다. 많은 상업용 운영체제는 매우 적은 스레드 수를 제공한다는 것에 유의해야 한다. 그럼에도 불구하고, 2바이트씩 저장되는 OID의 표시는 216개까지의 상이한 OID가 발행되도록 허용한다. 상기 수가 주어진 경우, 캐시라인-OID-벡터에 대해 64킬로바이트의 저장용량, MAX_OID= 4096의 경우 카운터-벡터에 대해 별도로 8킬로바이트를 포함하며, 전부 합해서 72킬로바이트의 추가 저장용량을 제공하는 캐시 설계가 필요하다. 이것은 원래 저장 용량의 대략 1.75%이다. 캐시 크기가 점점 커지더라도, 캐시라인의 크기가 또한 증가할 가능성이 있으므로 CMU 확장을 위해 필요한 전체 캐시 크기의 유효 퍼센트도 떨어질 가능성이 있다. 따라서 캐시라인의 수는 캐시 크기 자체의 비율로 증가하지 않아, 결국 캐시 칩 전체 크기에 대해 CMU가 필요로 하는 칩의 크기가 줄어든다.
그럼에도 불구하고, OID가 크리티컬 자원(critical resource)이 될 수 있다는 사실을 다루기 위한 운영체제를 마련해야 만 한다. 본 발명은 더 많은 수의 MAX_OID 스레드를 다룰 수 있는 방법을 제공한다. 두 가지 일반적인 방법이 있는데, 첫번째는 정적인 방법으로 스레드를 그룹으로 하는 것이고, 두번째는 동적인 방법으로 시간에 따라 OID 할당을 능동적으로 관리하는 운영체제가 필요하다.
정적인 OID 할당 방법에서, 동일한 주소 공간이나 프로세스에 속한 스레드에는 공통 OID가 할당되어야 한다. 이러한 할당 방법은 랜덤 스레드 그룹화에 비해 장점이 있으며, 그 이유는 동일 프로세스에 속하는 스레드가 흔히 데이터 및/또는 코드, 즉, 메모리를 공유하기 때문이다. 또한 소정 프로세스의 모든 스레드를 여러 개의 스레드 그룹으로 분할하는 것과 이러한 각 그룹에 별개의 OID를 할당하는것이 가능하다. 특히, 스레드의 메모리 공유에 대한 지식을 사용할 수 있다면, 그 주소지정된 메모리의 다수를 공유하는 스레드들은 별개의 OID를 가진 하나의 스레드 그룹에 할당되어야 한다. 이것은 프로세스나 스레드 그룹의 최대 수를 MAX_OID로 제한한다.
동적인 OID 할당 방법은 캐시 유연성 스케줄링에서 제한된 스레드 수만이, 즉 실행하도록 인에이블되는 스레드만이 이용가능하다는 사실을 인식한다. 일반적으로, 많은 스레드는 디스에이블된 상태이고, 이로 인한 초과시간이 스레드의 캐시 풋프린트를 조금이나마 감소시키게 된다. 따라서, 운영체제에 대한 유효한 방법은 (ⅰ) 운영체제가 디스에이블되었다면 하나의 스레드나 스레드 그룹의 OID를 재사용하고, (ⅱ) OID를 다른 엔트리에 재할당하며, (ⅲ) 일단 하나의 스레드나 스레드 그룹이 다시 인에이블되면, 새로운 OID를 운영체제에 할당하는 것이다. 이러한 경우에, MAX_OID는 대부분의 다중 프로세서 운영체제가 어떤 식으로든 내부 자원의 제약 때문에 처리해야 할 스레드 중 스레드 전체 수가 아니라 시스템에서 스레드를 실행시키도록 인에이블된 스레드 수만을 제한한다.
상기 어느 방법이나 각자의 장단점을 모두 가지며, 그 장단점들 대부분은 이러한 시스템 상에서 실행하는 작업부하(workload)에 의존하고, 따라서 정적 기술 또는 동적 기술을 선택하는 문제는 상기 실시예에 대해 선택적으로 이루어질 수 있다.
아래의 설명에 제한되지는 않지만, 대부분의 프로세서 설계는 특정 용도 레지스터 인스트럭션[캐시-라인 무효, 또는 판독-실시간-클록이나 캐시 상태를 검색/재설정(예를 들어, 캐시 미스의 수를 검색함)하는 인스트럭션과 유사함] 또는 적재/저장 인스트럭션 중 어느 하나로서 SETOWNER 및 GETUSAGE 인스트럭션을 제공하며, 이러한 설계에서는 CMU 레지스터가 프로세서의 물리주소 범위의 일부로 사상된다.
일례로서, 레지스터 기반의 인스트럭션 집합, 및 메모리 사상된 CMU 레지스터에 대해 CPU-CMU 인터페이스를 사용하는 운영체제의 간단한 인스트럭션 시퀀스를 예시한다. 당업자는 이러한 일례를 다른 인스트럭션 집합 및/또는 특정 용도 레지스터 상에 쉽게 사상시킬 수 있다. 일반성을 훼손함이 없이, 이러한 일례에서, 레지스터 r4는 스레드 디스크립터 블록(thread discriptor block)의 주소를 보유하고, OID_OFFSET은 이러한 스레드의 OID가 저장되는 상기 블록에 일부 고정된 소정의 오프셋을 나타내고, CMU_OID 상수는 CMU OID 레지스터가 사상되는 물리주소를 나타내고, CMU_VEC는 CMU 카운터 벡터의 첫번째 엔트리가 (각 엔트리당 2 바이트씩) 사상되는 물리주소를 나타낸다고 가정한다.
상기한 바와 같이, 스케줄러는 다음과 유사한 코드를 사용하여, 선택된 태스크로 실행 전환하기 직전의 스케줄링 결정 시점에 OID-REG를 설정하는 것이 바람직하다.
lds r3,r4(OID_OFFSET) //스레드 <OID> 16 비트값을 레지스터 r3로 적재
ldw r5,@CMU_OID // CMU_OID 레지스터의 주소를 적재
stsx r3,0(r5) // CMU_OID 레지스터에서 0-오프셋에 16 비트 저장
캐시 유연성 스케줄링을 수행하기 위해서, 스케줄러는 각 스레드에 대한 캐시 유연성을 캐시 풋프린트의 함수로 설정해야 하고, CMU로부터 나중의 캐시 유연성을 검색해야만 한다.
lds r3,r4(OID_OFFSET) //스레드 <OID> 16 비트값을 레지스터 r3로 적재
ldw r5,@CMU_VEC // CMU_VEC 레지스터의 주소를 적재
shl r3,r3,1 // 정확한 벡터 오프셋을 얻기 위해 1위치만큼 좌로 이동
ldsx r6,r3(r5) // 카운터_벡터 [OID]의 16비트 내용을 r6로 적재
캐시 풋프린트 측정값은 이제 r6에 저장되고 다른 스케줄링 우선순위와 연관하여 전체 실행 우선순위를 도출할 수 있다. 이것은 이하에서 설명된다.
캐시 감시장치의 사용법을 운영체제 스케줄러에 통합하는 방법을 설명한다. 먼저, 도 5에 도시된 일반적이고 추상적인 추측 알고리즘을 설명하고, 다음에 도 6에 도시된 UNIX 스케줄러와 같은 정확한 표준 스케줄러에 대한 통합을 보다 상세하게 설명한다. 하지만, 본 발명은 이러한 설명에 국한되는 것은 아니다. 오히려, 당업자는 캐시 감시장치와 본 발명의 기본 알고리즘을 다른 스케줄링 알고리즘과 일체화하는 과정을 도출할 수 있어야 한다.
결국, 스케줄링 파라미터의 집합이 주어지면, 모든 스케줄러는 각 스레드에 대해 실행 우선순위라 불리우는 소정의 정규화된 수를 도출하는데, 이 실행 우선순위는 다음에 실행할 적당한 스레드를 선택하기 위해서 스케줄러가 이러한 정규화된 수를 비교하게 한다. 일반적인 경우라면, 더 많은 수가 우선 순위를 갖는다고 가정한다. 도 5는 실행 우선순위 ep(50)의 전체 계산에 도움을 주는 여러가지 파라미터를 보여준다. 소정의 기본 우선순위 bp(Tj)(51)를 가진 스레드 Tj가 생성된다. 공정성을 기하기 위해, 스레드 Tj는 자신의 기본 우선순위 bp(Tj)에서 일정하게 스케줄링되지는 않는다. 대신에, 모든 시간 량에 대해 시각 t에서 현재 우선순위 cp(Tj,t)(52)는 소정시간 t의 종속량인 0≤ζ(t) ≤bp(Tj)(53)에 의해 스레드의 기본 우선순위 bp(Tj)를 감소시킴으로써 계산된다. 따라서 현재의 우선순위 cp(Tj,t)는 bp(Tj)보다 작거나 같은 우선순위 간격에 해당한다. 일반적으로 ζ(t)는 소정의 간단한 감소 기술을 사용하여 구현된다. 캐시 유연성을 기반으로 하지 않는 스케줄링에서, 실행 우선순위는 현재의 우선순위와 같다.
ep(Tj,t) = cp(Tj,t) = bp(Tj) - ζ(Tj,t)
본 발명에서 프로세서 Pi에 대한 스레드 Tj의 캐시 유연성 CA(Tj,Pi)는 주어진 프로세서 Pi상의 스레드 Tj에 대한 실행 우선순위를 계산할 때 고려되기 때문에, 동일 시간에 동일 스레드에 대한 실행 우선순위들을 동시에 계산하더라도 다른 프로세서 상에서는 다른 값을 나타낼 수 있다는 것을 의미한다. 특히, 스레드의 현재우선순위 cp(Tj,t)(52)(이것은 프로세서와는 무관함)는 각 스케줄링 시점에서 Δp(55)(0≤Δp≤ΔP)만큼 증가된다(54). ΔP는 스레드가 상기 방식으로 증가될 수 있는 우선순위 레벨의 최대수이다. Δp는 단조함수 Ψ(CA(Tj,Pi))(56)을 통해 캐시 유연성 CA(Tj,Pi)로부터 구해진다. CA(Tj,Pi) 자신은 단조함수 Θ(CFP(Tj,Pi))를 통해 본 발명의 장치에 의해 측정되는 스레드 Tj의 캐시 풋프린트 CFP(Tj,Pi)(59)로부터 계산된다. 따라서 이러한 실행 우선순위는 스레드의 기본 우선순위, 시간 및 프로세서의 함수이고, 기본 우선순위는 프로세서에 대한 자신의 유연성으로 표시된다.
ep(Pi,Tj,t) = cp(Tj,t) + Δp
cp(Tj,t) = bp(Tj) - ζ(Tj,t)
Δp = Ψ(Θ(CFP(Pi,Tj)))
구체적으로 살펴보면, 본 발명의 장치를 일반적인 정확한 UNIX 기반 스케줄러로 통합하는 방법이 예시된다. 본 발명은 본 명세서에 설명된 실시예 대한 통합에 국한되지 않는다는 점에 유의하여야 한다. 오히려 당업자는 이러한 기술을 다른 스케줄링 알고리즘으로 통합시킬 수 있다. 참고문헌 [2]는 본 명세서에 참조되어 본 발명의 일부를 이룬다. 스케줄링 상태의 주요 부분이 되는 중앙 디스패치 벡터(central dispatch vector)나 디스패치 대기행렬(60)이 도 6에 도시된다. 스케줄링 상태는 모든 프로세서에 의해 공유되고 이러한 스케줄링 상태에 대한 액세스는 로크(locks)나 기타 잘 알려진 메커니즘들을 사용하여 적절히 조정된다. 이것이 필요한 이유는, 현재 실행 중인 스레드가 자발적으로 소정 프로세서에 다른 스레드를 내줄 때 또는 이러한 프로세서에서 현재 실행 중인 스레드의 시간이 만료될 때, 스케줄러 코드가 모든 프로세서에서 실행되기 때문이다. 디스패치 대기행렬(60)은 개념적으로 일련의 대기행렬 Qi, 실제로는 대기행렬 Qi의 어레이(61a∼61z)로 구성되고, 여기서 각 대기행렬 Qi는 스레드 제어 블록 TCB(Thread Control Block; 62a ∼62z)의 집합과 연결되고, 각각의 TCB는 스레드의 우선순위와 미사용 레지스터와 같은 상태를 유지한다. max 우선순위가 있으므로 이 벡터 내에는 max 대기열이 있다. Tj가 실행될 준비가 되어 있고 현재 시각 t에서 현재 우선순위 cp(Tj,t)가 PRIOi(여기서 0 ≤ i PRIOmax임)인 경우, 스레드 Tj와 연관되는 TCBj는 Qi로 대기행렬화 된다. TCBj로 표현되는 스레드 Tj는 기본 우선순위 bp(Tj)에 의해 생성되며, 여기서 PRIOmax/2≤bp(Tj)PTIOmax-Δp이다. 스레드의 cp(Tj,t)는 0이나 (bp(Tj)-PRIOmax/2)에 도달할 때까지 모든 시간에 따라 감소한다. 이 시점에서, 스레드의 cp(Tj,t)는 다시 bp(Tj)로 리셋된다.
도 6은 스레드의 캐시 유연성에 기초한 스레드의 실행 우선순위를 스케줄러가 증가시키고자 하는 양을 나타내는 ΔP(63)의 우선순위 간격을 도시하고 있다. 예를 들면, 캐시 유연성을 결정하기 위한 재적재 천이 모델을 가정한다. 이전의 상태를 설정하기 위해 재인출되어야 하는 캐시라인의 수로 측정되는 재적재 천이가 매우 작을 경우, 스케줄러는 ΔP(60)에 근접한 우선순위 조정 Δp(54)를 부여할 것이다. 재적재 천이가 임계 문턱값 미만일 경우, 스케줄러는 스레드를 우선순위 승격에 대해 고려하지 않는다.
Θ(CFP(Tj,Pi))(58)에 의해 결정되는 바와 같이 cp(Tj,Pi)는 단지 스레드의 캐시 풋프린트 CFP(Tj,Pi)와 그 마지막 실행 이후의 캐시 풋프린트 CFP(Tj,Pi)stop인 재적재 천이 사이의 차가 될 것이다. Ψ(CA(Tj,Pi)) 함수(56)는 오히려 간단한 함수가 될 수 있다(예를 들면, 이동 및 비트 마스킹 동작이나 스레드의 CA 값에 대한 테이블 조사).
임의 스레드의 우선순위는 최대로 ΔP(63)까지 증가될 수 있기 때문에, 스케줄러는 단지 대기행렬 Qcur에서 Qcur-(ΔP-1)(61a...61d)까지의 스레드(62a...62f)의 캐시 유연성을 조사 및/또는 계산하기만 하면 된다. 캐시 풋프린트나 캐시 유연성과 관련된 소정 정보는 CA(Tj,Pi) 값을 도출하기 위해서 프로세서당 하나씩 저장되어야 된다. 이러한 프로세서당 벡터값을 유연성 유틸리티 벡터 AUV(64)라 한다. OID 할당 방법(단독이나 그룹)에 따라 AUV는 상이한 데이터 구조와 연관되어야 한다. 단독 할당 방법에서는, AUV가 스레드 제어 블록 TCB(65) 자체와 연관되어야 한다. 공유 OID 할당 방법에서는, AUV는 스레드 그룹과 관련된 공유 데이터 구조(66), 예를 들면, 하나의 프로세스의 모든 스레드가 동일 OID를 공유할 경우의 프로세스 제어 블록과 연관되어야 한다. AUV(64)는 다음에 설명되는 바와 같이 여러가지 의미로 해석 할 수 있다. 종래 기술 부분에서 설명한 타임-스탬프 기반 알고리즘에서, 하나의 비트 벡터는 하나의 AUV로 충분하며, 여기서 스레드가 마지막으로 실행된 프로세서 상의 비트가 나타나거나 마지막 실행이 훨씬 전의 과거에 이루어진 경우 비트 벡터는 존재하지 않는다. 이러한 경우에, AUV 벡터 내의 각 엔트리 AUV[i]는 비트 i로 표시되고, 이진(binary) 캐시 유연성 값을 저장한다. 재적재 천이 모델의 경우에 있어서, AUV[i]는 프로세서 Pi상에서 마지막 실행이 정지되었을 때의 스레드의 캐시 풋프린트를 저장한다.
스케줄링 알고리즘이 프로세서 Pi상에서 실행될 때(예를 들어, 현재 실행 스레드의 자발적인 양도에 기인하거나 타이머 인터럽트에 기인하여), 스케줄러는 대기행렬 Qcur에서 Qcur-ΔP까지의 모든 스레드 Tj를 조사하고, 그 cp(Tj,Pi)를 Ψ(Θ(CFP(Tj,Pi)))만큼 증가시켜, 최대값을 결정해야 한다. 모든 스레드에 대해 CA(Tj,Pi) 값을 구하기 위해서, 스케줄러는 먼저 이러한 스레드의 각각에 대한 GETUSAGE(Tj,OID)를 호출함으로써 각 스레드 Tj에 대한 캐시 풋프린트를 검색해야만 한다.
따라서, 거의 동일한 현재 우선순위를 갖는 다중 스레드는 이전에 계속 실행된 동일 프로세서에서 반복적으로 스케줄링되기 쉽고, 그 결과 성능이 개선된다. 현재 우선순위 cp(Tj,t)를 ζ(Tj,t)만큼 감소시키는 것은 매우 높은 유연성을 갖는 스레드의 실행 우선순위 조차 결국에 보다 낮은 캐시 유연성을 갖는 스레드의 실행 우선순위 이하로 떨어져, 정확하고 응답이 용이한 프로세서 스케줄링을 보장하게 되는 것을 의미한다.
이제 캐시 유연성 사용 상태를 유지하고, 캐시 감시장치와 대화하는 수를 줄이기 위해서 이러한 상태를 조사하는 방법을 설명한다. CMU 질의의 오버헤드가 상당히 클 경우, 이러한 감소가 중요해진다. 이들 방법 중 어느 것도 보편적으로 적용될 수 없지만, 대신에 이들 방법은 선택된 OID 할당 알고리즘에 좌우된다.
각 스레드가 단독 OID를 유지하는 경우에 다음과 같은 최적화 방법이 적용될 수 있다. 이러한 경우와 관련된 데이터 구조는 도면부호 (65)에 도시되어 있다. 단독 OID를 갖는 스레드에 대해, 프로세서 Pi를 향한 스레드의 캐시 풋프린트 CFP(Tj,Pi)도 캐시 유연성 CA(Tj,Pi)도 스레드가 Pi상에서 실행되지 않는다면 둘다 증가할 수 없다는 것은 당업자에게 있어서 자명하다. 따라서, 스케줄러는 (a) 마지막 실행 스레드 Tj에 대한 시간량의 끝 부분에서 CA(Tj,Pi)last를 계산하고, (b) 다음의 수학식;
(여기서, epmax는 지금까지 발견된 최대 실행 우선순위임)
을 만족하는 경우에만, 스레드 선택 단계 동안 CA(Tj,Pi)를 재계산하는 것으로 충분하다. 이러한 기술에서 새로운 스레드는 최대값으로 저장된 CA(Tj,Pi)last를 가져야 한다. 상기 알고리즘에 따르면 각 재인출은 새로 계산된 CA(Tj,Pi)last가 더 작은값이 되는 것을 보장하기 때문에, 낮은 유연성을 가진 스레드에 대해 CFP가 제한된 횟수만(일반적으로 한번만) 재인출되는('GETUSAGE') 거동을 나타낸다. 높은 캐시 유연성을 가진 스레드에 대해, CFP는 스케줄링 과정 동안 더욱 빈번하게 재인출된다.
스레드 그룹화(66)의 경우에 있어서, 상기 가정은 유효하지 않다. 하지만, 스케줄링 시점에 CMU 요구의 수는 대기행렬 Qcur내지 Qcur-(ΔP-1)(61a...61d)의 집합으로 표시되는 스레드 그룹의 수로 줄어들 수 있다. 각 프로세서 벡터 AUV는 동일 스레드 그룹의 모든 스레드, 예를 들면, 프로세서 디스크립터 블록에 공통되는 별개의 데이터 구조(67)에 저장된다. 또한, 타임 스탬프, 바람직하기는 모든 스케줄링 시도마다 증가되는 프로세서당 하나의 시퀀스의 번호(66)는, OID에 의해 식별되는 그룹 디스크립터 블록에 대해 주어진 프로세서 상에서 CFP가 판독되는 마지막 시간을 표시한다. 스케줄링 사이클마다, 소정의 스레드 그룹에 대한 CFP는 오직 한번만 판독되어야 하고, 이것은 자신의 시퀀스 번호(66)가 스케줄링 사이클의 현재 시퀀스 번호와 일치하지 않는 때이다.
상기 최적화 중 어느 것도 바람직하지 않은 경우에, 다음과 같은 근사 방법이 사용될 수 있다. 이것은 단독 OID 할당 방법과 공유 OID 할당 방법 모두에 적용될 수 있다. 각 1회 스케줄링 사이클 상에서 적합한 스레드나 스레드 그룹에 대한 캐시 풋프린트를 액세스하는 것이 아니라, 주어진 스레드나 스레드 그룹 Tj에 대해 스케줄러는 주기적인 CFP(Tj,Pi)(예를 들어 매 n번째 스케줄링 사이클)를 얻을 수 있다. 다른 모든 스케줄링 사이클에서, 스케줄러는 종래 기술 부분에서 설명된 CFP의 근사를 사용할 수 있다. 예를 들면, 재적재 천이 모델에서, 스케줄러는 스케줄링 사이클 당 한번만 판독되어야 하고, 캐시 미스 정보를 사용할 수 있고, 이러한 정보는 CFP(Tj,Pi)가 판독된 마지막 시간 이후 캐시 미스의 수를 기초로 하여 CFP(Tj,Pi)에 대한 변화를 측정할 수 있는 마르코프 연쇄를 사용하여야 한다. 이러한 방법은 스케줄링 알고리즘에 측정 인자를 도입한다; 하지만, 종래 기술 부분에 설명된 실제 스케줄링과 비교할 때, 이러한 방법은 종래 기술 부분에서 소개된 것과 같은 동일한 문제를 겪지는 않는다. 먼저, CFP(Tj,Pi)는 아주 적은 포텐셜 Δp로만 사상되기 때문에, 서로 근접한 CFP 값은 동일한 Δp로 사상될 가능성이 매우 크다. 따라서, CFP(Tj,Pi)를 측정할 때 발생하는 작은 오류는 중요하지 않다. 측정된 CFP(Tj,Pi) 값은 주기적으로 실제 측정값 CFP(Tj,Pi)로 리셋되기 때문에, 작은 오류가 누산되어 Δp 계산의 결과에 실제 영향을 미치게 되는 큰 오류가 되지는 않는다.
본 발명에 따르면 스레드의 캐시 풋프린트의 추적을 용이하게 할 수 있고, 또한 정확한 캐시 풋프린트 측정을 기초로 하여 성능이 개선된 캐시 유연성 기반의 스케줄링 방법이 제공될 수 있다.

Claims (9)

  1. 각각이 적어도 하나의 연관 캐시를 갖는 복수의 프로세서를 구비하는 컴퓨터 시스템에서 각 프로세서의 스레드를 스케줄링하는 방법으로,
    a) 상기 각 캐시로부터 상기 각 스레드가 인출하는 활성 캐시라인의 수를 측정하여 상기 각 프로세서의 각 스레드에 대한 캐시 풋프린트를 측정하는 단계-상기 스레드가 인출하는 상기 활성 캐시라인의 수를 다음의 요소, 즉
    ⅰ) 상기 캐시에서 인출되는 상기 캐시라인을 상기 스레드가 소유하는 지를 나타내는 캐시당 하나의 소유권 식별자,
    ⅱ) 상기 캐시라인 각각의 소유 스레드를 나타내는 캐시라인당 하나의 소유자 표시,
    ⅲ) 캐시당 하나의 카운터 벡터-상기 벡터의 각 성분은 상기 하나의 스레드가 상기 대응의 하나의 캐시에 대해서 갖는 캐시 풋프린트를 표시한다-,
    ⅳ) 상기 스레드 각각에 대해서 상기 카운터 벡터의 내용을 검색하기 위한 캐시당 하나의 방법
    을 유지하여 측정한다-와,
    b) 상기 a) 단계에서 결정된 각 캐시 풋프린트를 이용하여 상기 각 프로세서의 상기 각 스레드에 대한 유연성을 결정하는 단계를 포함하며,
    상기 각 프로세서에서 각 스레드의 실행은 적어도 각 스레드의 유연성에 따라 실행되도록 스케줄링되는
    스레드 스케줄링 방법.
  2. 제1항에 있어서, 상기 캐시 풋프린트의 측정은 캐시 미스 마다 갱신되는 것인 스레드 스케줄링 방법.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서, 상기 스레드는 카운터 벡터의 크기를 초과할 수 있는 것인 스레드 스케줄링 방법.
  6. 제1항에 있어서, 상기 각 스레드는 그의 유연성의 함수인 실행 우선순위를 나중 프로세서에 할당함으로써 하나의 프로세서에 대해 실행되도록 스케줄링되는 것인 스레드 스케줄링 방법.
  7. 제6항에 있어서, 상기 각 스레드에 대하여, 상기 실행 우선순위는 스레드 사용자당 할당된 기본 우선순위, 시간, 및 캐시 유연성의 조합인 것인 스레드 스케줄링 방법.
  8. 제1항에 있어서, 상기 프로세서 중 하나의 프로세서에서 실행되는 스케줄러는,
    상기 스레드 중 하나가 스케줄링 사이클마다 상기 스레드에 대한 실행 우선순위를 재계산하는 대신에 상기 하나의 스레드의 이전에 계산된 유연성에 의거 최상위 실행 우선순위를 산출하는지의 여부를 상기 스케줄러의 결정에 기초 할 수 있는 스레드 스케줄링 방법.
  9. 각각이 적어도 하나의 관련 캐시를 갖는 복수의 프로세서를 구비한 컴퓨터 시스템에서 스레드를 스케줄링하는 방법 단계들을 수행하도록 기계에 의해서 실행 가능한 프로그램 인스트럭션을 유형적으로 구현하는, 상기 기계에 의해 판독가능한 프로그램 저장 장치로서, 상기 스레드를 스케줄링하는 방법 단계는,
    a) 상기 각 캐시로부터 상기 각 스레드가 인출하는 활성 캐시라인의 수를 측정하여 상기 각 프로세서의 각 스레드에 대한 캐시 풋프린트를 측정하는 단계-상기 스레드가 인출하는 상기 활성 캐시라인의 수를 다음의 요소, 즉
    ⅰ) 상기 캐시에서 인출되는 상기 캐시라인을 상기 스레드가 소유하는 지를 나타내는 캐시당 하나의 소유권 식별자,
    ⅱ) 상기 캐시라인 각각의 소유 스레드를 나타내는 캐시라인당 하나의 소유자 표시,
    ⅲ) 캐시당 하나의 카운터 벡터-상기 벡터의 각 성분은 상기 하나의 스레드가 상기 대응의 하나의 캐시에 대해서 갖는 캐시 풋프린트를 표시한다-,
    ⅳ) 상기 스레드 각각에 대해서 상기 카운터 벡터의 내용을 검색하기 위한 캐시당 하나의 방법
    을 유지하여 측정한다-와,
    b) 상기 a) 단계에서 결정된 각 캐시 풋프린트를 이용하여 상기 각 프로세서의 상기 각 스레드에 대한 유연성을 결정하는 단계를 포함하며,
    상기 각 프로세서에서 각 스레드의 실행은 적어도 각 스레드의 유연성에 따라 실행되도록 스케줄링되는
    프로그램 저장 장치.
KR1019990017613A 1998-06-17 1999-05-17 정확한 캐시 감응성을 가능하게 하는 캐시 구조 KR100337219B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/098,988 1998-06-17
US09/098,988 US6243788B1 (en) 1998-06-17 1998-06-17 Cache architecture to enable accurate cache sensitivity

Publications (2)

Publication Number Publication Date
KR20000005675A KR20000005675A (ko) 2000-01-25
KR100337219B1 true KR100337219B1 (ko) 2002-05-17

Family

ID=22271873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990017613A KR100337219B1 (ko) 1998-06-17 1999-05-17 정확한 캐시 감응성을 가능하게 하는 캐시 구조

Country Status (6)

Country Link
US (1) US6243788B1 (ko)
EP (1) EP0965918A3 (ko)
JP (1) JP2000148518A (ko)
KR (1) KR100337219B1 (ko)
CN (1) CN1133942C (ko)
TW (1) TW508533B (ko)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6216178B1 (en) * 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
JP3601677B2 (ja) * 1999-06-09 2004-12-15 日本電気株式会社 タスク処理システム
US7086053B2 (en) * 2000-06-12 2006-08-01 Sun Microsystems, Inc. Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension
US6826754B1 (en) * 2000-09-29 2004-11-30 International Business Machines Corporation Method for eliminating or reducing hang conditions in computer systems
US6615316B1 (en) * 2000-11-16 2003-09-02 International Business Machines, Corporation Using hardware counters to estimate cache warmth for process/thread schedulers
US7069424B2 (en) * 2002-01-02 2006-06-27 Intel Corporation Placing front instruction in replay loop to front to place side instruction into execution stream upon determination of criticality
NZ534314A (en) 2002-01-30 2005-04-29 Real Entpr Solutions Dev B Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor
US8032891B2 (en) * 2002-05-20 2011-10-04 Texas Instruments Incorporated Energy-aware scheduling of application execution
US6920514B2 (en) * 2002-10-10 2005-07-19 International Business Machines Corporation Method, apparatus and system that cache promotion information within a processor separate from instructions and data
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
US6928526B1 (en) * 2002-12-20 2005-08-09 Datadomain, Inc. Efficient data storage system
US7496928B2 (en) * 2003-08-28 2009-02-24 Microsoft Corporation Method and system for moderating thread priority boost for I/O completion
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7631144B1 (en) * 2004-09-13 2009-12-08 Datadomain, Inc. Write latency efficient storage system
US8490101B1 (en) * 2004-11-29 2013-07-16 Oracle America, Inc. Thread scheduling in chip multithreading processors
US7721047B2 (en) * 2004-12-07 2010-05-18 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation requests
US8145870B2 (en) * 2004-12-07 2012-03-27 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation
US7937709B2 (en) 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
US20070061805A1 (en) * 2005-09-15 2007-03-15 Brenner Larry B Method and apparatus for improving thread posting efficiency in a multiprocessor data processing system
US7818747B1 (en) * 2005-11-03 2010-10-19 Oracle America, Inc. Cache-aware scheduling for a chip multithreading processor
US7865895B2 (en) * 2006-05-18 2011-01-04 International Business Machines Corporation Heuristic based affinity dispatching for shared processor partition dispatching
US7870551B2 (en) * 2006-05-18 2011-01-11 International Business Machines Corporation Optimization of thread wake up for shared processor partitions
US8533710B1 (en) * 2006-08-31 2013-09-10 Oracle America, Inc. Using observed thread activity to dynamically tune a virtual machine for responsiveness
US8356284B2 (en) * 2006-12-28 2013-01-15 International Business Machines Corporation Threading model analysis system and method
US7698530B2 (en) * 2007-03-28 2010-04-13 International Business Machines Corporation Workload management in virtualized data processing environment
US7698531B2 (en) * 2007-03-28 2010-04-13 International Business Machines Corporation Workload management in virtualized data processing environment
US7617375B2 (en) * 2007-03-28 2009-11-10 International Business Machines Corporation Workload management in virtualized data processing environment
US8219995B2 (en) * 2007-03-28 2012-07-10 International Business Machins Corporation Capturing hardware statistics for partitions to enable dispatching and scheduling efficiency
US8438003B2 (en) * 2007-04-12 2013-05-07 Cadence Design Systems, Inc. Methods for improved simulation of integrated circuit designs
US20080271027A1 (en) * 2007-04-27 2008-10-30 Norton Scott J Fair share scheduling with hardware multithreading
US8327363B2 (en) * 2007-07-24 2012-12-04 Microsoft Corporation Application compatibility in multi-core systems
US8544014B2 (en) * 2007-07-24 2013-09-24 Microsoft Corporation Scheduling threads in multi-core systems
US9588810B2 (en) * 2007-08-08 2017-03-07 Microsoft Technology Licensing, Llc Parallelism-aware memory request scheduling in shared memory controllers
US7958313B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output (I/O) adapter resources
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US20090165004A1 (en) * 2007-12-21 2009-06-25 Jaideep Moses Resource-aware application scheduling
US8739165B2 (en) * 2008-01-22 2014-05-27 Freescale Semiconductor, Inc. Shared resource based thread scheduling with affinity and/or selectable criteria
JP5012628B2 (ja) * 2008-04-04 2012-08-29 日本電気株式会社 メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法
US8429665B2 (en) * 2010-03-19 2013-04-23 Vmware, Inc. Cache performance prediction, partitioning and scheduling based on cache pressure of threads
US20110066830A1 (en) * 2009-09-11 2011-03-17 Andrew Wolfe Cache prefill on thread migration
US9569270B2 (en) * 2009-04-21 2017-02-14 Empire Technology Development Llc Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
US8881157B2 (en) * 2009-09-11 2014-11-04 Empire Technology Development Llc Allocating threads to cores based on threads falling behind thread completion target deadline
US9189282B2 (en) * 2009-04-21 2015-11-17 Empire Technology Development Llc Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter
JP2009277243A (ja) * 2009-07-21 2009-11-26 Panasonic Corp コンパイラ装置およびオペレーティングシステム
US8607234B2 (en) * 2009-07-22 2013-12-10 Empire Technology Development, Llc Batch scheduling with thread segregation and per thread type marking caps
US8799912B2 (en) * 2009-07-22 2014-08-05 Empire Technology Development Llc Application selection of memory request scheduling
US8839255B2 (en) * 2009-07-23 2014-09-16 Empire Technology Development Llc Scheduling of threads by batch scheduling
US8438574B1 (en) * 2009-08-14 2013-05-07 Translattice, Inc. Generating monotone hash preferences
US8959525B2 (en) * 2009-10-28 2015-02-17 International Business Machines Corporation Systems and methods for affinity driven distributed scheduling of parallel computations
WO2011130604A1 (en) * 2010-04-16 2011-10-20 Massachusetts Institute Of Technology Execution migration
US8935248B2 (en) * 2010-05-17 2015-01-13 United States Postal Service Localized data affinity system and hybrid method
JP5354108B2 (ja) * 2010-09-01 2013-11-27 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
US9015449B2 (en) 2011-03-27 2015-04-21 International Business Machines Corporation Region-weighted accounting of multi-threaded processor core according to dispatch state
WO2012153200A1 (en) 2011-05-10 2012-11-15 International Business Machines Corporation Process grouping for improved cache and memory affinity
KR20130093995A (ko) * 2012-02-15 2013-08-23 한국전자통신연구원 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템
JP6459784B2 (ja) 2015-06-03 2019-01-30 富士通株式会社 並列計算機、マイグレーションプログラム、及び、マイグレーション方法
US10282707B2 (en) * 2015-07-02 2019-05-07 International Business Machines Corporation Scheduling business process
GB2540761B (en) 2015-07-23 2017-12-06 Advanced Risc Mach Ltd Cache usage estimation
US10452397B2 (en) 2017-04-01 2019-10-22 Intel Corporation Efficient multi-context thread distribution
US10691621B2 (en) * 2018-04-12 2020-06-23 Sony Interactive Entertainment Inc. Data cache segregation for spectre mitigation
US10698737B2 (en) * 2018-04-26 2020-06-30 Hewlett Packard Enterprise Development Lp Interoperable neural network operation scheduler
US11593167B2 (en) 2019-05-09 2023-02-28 International Business Machines Corporation Thread embedded cache management

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204875A (ja) * 1992-01-27 1993-08-13 Mitsubishi Electric Corp スレッドのスケジュール方式
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
EP0833247A2 (en) * 1996-09-30 1998-04-01 Nec Corporation Method for maximising cache hit ratio of a computer program
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4985831A (en) * 1988-10-31 1991-01-15 Evans & Sutherland Computer Corp. Multiprocessor task scheduling system
US5185861A (en) * 1991-08-19 1993-02-09 Sequent Computer Systems, Inc. Cache affinity scheduler
US5317738A (en) * 1992-02-18 1994-05-31 Ncr Corporation Process affinity scheduling method and apparatus
US5553305A (en) * 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US5974438A (en) * 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204875A (ja) * 1992-01-27 1993-08-13 Mitsubishi Electric Corp スレッドのスケジュール方式
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
EP0833247A2 (en) * 1996-09-30 1998-04-01 Nec Corporation Method for maximising cache hit ratio of a computer program

Also Published As

Publication number Publication date
JP2000148518A (ja) 2000-05-30
KR20000005675A (ko) 2000-01-25
EP0965918A2 (en) 1999-12-22
US6243788B1 (en) 2001-06-05
TW508533B (en) 2002-11-01
CN1133942C (zh) 2004-01-07
EP0965918A3 (en) 2004-01-21
CN1239249A (zh) 1999-12-22

Similar Documents

Publication Publication Date Title
KR100337219B1 (ko) 정확한 캐시 감응성을 가능하게 하는 캐시 구조
US11513836B2 (en) Scheduling resuming of ready to run virtual processors in a distributed system
US7177985B1 (en) Microprocessor with improved data stream prefetching
US6938252B2 (en) Hardware-assisted method for scheduling threads using data cache locality
US5287508A (en) Method and apparatus for efficient scheduling in a multiprocessor system
US7194582B1 (en) Microprocessor with improved data stream prefetching
Anderson et al. The performance implications of thread management alternatives for shared-memory multiprocessors
US7774522B2 (en) Cache stashing processor control messages
CN102640124B (zh) 用于数据流的储存感知预取的计算系统、方法以及预取单元
US8806177B2 (en) Prefetch engine based translation prefetching
EP0496439B1 (en) Computer system with multi-buffer data cache and method therefor
US6629210B1 (en) Intelligent cache management mechanism via processor access sequence analysis
US5784711A (en) Data cache prefetching under control of instruction cache
Tabbakh et al. G-TSC: Timestamp based coherence for GPUs
US6918021B2 (en) System of and method for flow control within a tag pipeline
US6430659B1 (en) Method and means for increasing performance of multiprocessor computer systems by reducing accesses to global memory locations through the use of quanta
WO2003034229A1 (en) Data prefecthing in a computer system
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ
EP0482706A2 (en) Method for intelligent data cache prefetching, and computer for implementing this method
Sarkar Predictable Task Migration Support and Static Task Partitioning for Scalable Multicore Real-Time 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
FPAY Annual fee payment

Payment date: 20060417

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee