KR101531155B1 - 멀티코어 아키텍처에서 직접 펫칭 이득의 동적 결정 - Google Patents

멀티코어 아키텍처에서 직접 펫칭 이득의 동적 결정 Download PDF

Info

Publication number
KR101531155B1
KR101531155B1 KR1020137019466A KR20137019466A KR101531155B1 KR 101531155 B1 KR101531155 B1 KR 101531155B1 KR 1020137019466 A KR1020137019466 A KR 1020137019466A KR 20137019466 A KR20137019466 A KR 20137019466A KR 101531155 B1 KR101531155 B1 KR 101531155B1
Authority
KR
South Korea
Prior art keywords
cache
block
tile
response
direct
Prior art date
Application number
KR1020137019466A
Other languages
English (en)
Other versions
KR20130116903A (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 KR20130116903A publication Critical patent/KR20130116903A/ko
Application granted granted Critical
Publication of KR101531155B1 publication Critical patent/KR101531155B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • 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
    • 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
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

멀티코어 프로세서에서 직접 펫칭의 이득을 결정하기 위한 기술이 여기에서 일반적으로 설명된다. 멀티코어 프로세서는 제1 및 제2 타일을 포함할 수 있다. 제1 타일은 제1 코어 및 제1 캐시를 포함할 수 있다. 제2 타일은 제2 코어, 제2 캐시 및 펫치 위치 포인터 레지스터(FLPR)를 포함할 수 있다. 멀티코어 프로세서는 제1 코어 상에서 실행하는 스레드를 제2 코어로 이송할 수 있다. 멀티코어 프로세서는 제1 캐시의 위치를 FLPR에 저장할 수 있다. 멀티코어 프로세서는 스레드를 제2 코어 상에서 실행할 수 있다. 멀티코어 프로세서는 제2 캐시 내 블록에 대한 캐시 미스를 식별할 수 있다. 멀티코어 프로세서는 블록의 직접 펫칭의 이득이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지를 결정할 수 있다. 멀티코어 프로세서는 결정에 기초하여 직접 펫칭 또는 디렉토리 기반 펫칭을 수행할 수 있다.

Description

멀티코어 아키텍처에서 직접 펫칭 이득의 동적 결정{DYNAMICALLY DETERMINING PROFITABILITY OF DIRECT FETCHING IN A MULTICORE ARCHITECTURE}
여기에서 달리 언급하지 않으면, 본 섹션에서 기술된 내용은 본 출원에서 청구항에 대한 선행 기술이 아니며 본 섹션에 포함한 것에 의해 선행 기술로서 인정된 것이 아니다.
보다 많은 코어가 하나의 멀티코어 칩에 집적됨에 따라, 멀티코어 칩의 온도, 성능 및/또는 기능을 관리하고 향상시키기 위하여 스레드 이송(thread migration)이 점점 더 이용될 수 있다. 보통의 스레드 이송 시나리오에서, 제1 코어는 스레드를 실행할 수 있고, 제1 캐시를 이용할 수 있다. 제1 코어가 스레드를 실행함에 따라, 제1 캐시는 메모리로부터 검색된 요청된 데이터로 채워질 수 있다. 제1 캐시가 채워진 후에, 제1 캐시는 캐시 히트(cache hit)를 산출할 수 있으며, 이로써, 제1 코어는 요청된 데이터를 제1 캐시로부터 효율적으로 검색할 수 있다.
스레드 이송 중에, 제2 코어가 스레드의 실행을 인수하도록 컨트롤러는 스레드를 제1 코어로부터 제2 코어로 이송할 수 있다. 제2 코어는 "콜드(cold)"(즉, 비어 있음)인 제2 캐시를 이용할 수 있다. 결과적으로, 제2 캐시는 캐시 히트 대신에, 캐시 미스(cache miss)를 산출할 수 있고, 이로써 요청된 데이터는 제2 캐시에서 찾아지지 않는다. 각각의 캐시 미스 이후에, 요청된 데이터는 멀티코어 칩 상의 제1 캐시와 같은 다른 캐시로부터 요구에 따라 펫치(fetch)될 수 있다. 제2 캐시가 "워밍 업(warming up)"하면 (즉, 요청된 데이터로 채워지면), 제2 캐시는 캐시 히트를 경험할 수 있다. 그러나, 요구에 따른 펫칭을 통해 제2 캐시를 워밍 업하는 것은 상당한 시간 및 에너지 비용을 발생시킬 수 있다. 그러한 비용은 대형 캐시를 채우는 경우 및 잦은 스레드 이송을 구현하는 아키텍처(architecture)에서 특히 부담일 수 있다.
본 개시는 일반적으로 멀티코어 프로세서에서 직접 펫칭의 이득(profitability)을 결정하기 위한 기법을 설명한다. 멀티코어 프로세서는 직접 펫칭의 이득이 결정될 수 있는 방법을 수행하도록 구성될 수 있다. 일부 예시적인 방법은 멀티코어 프로세서 내 제1 타일에서의 제1 코어 상에서 실행하는 스레드를 제1 타일로부터 멀티코어 프로세서 내 제2 타일에서의 제2 코어로 이송하는 단계를 포함할 수 있다. 제1 타일은 제1 코어 및 제1 캐시를 포함할 수 있다. 제2 타일은 제2 코어, 제2 캐시 및 펫치 위치 포인터 레지스터[fetch location pointer register(FLPR)]를 포함할 수 있다. 예시적인 방법은 또한, 스레드를 제1 타일로부터 제2 타일로 이송하면, 제1 캐시의 위치를 제2 타일에서의 FLPR에 저장하고 스레드를 제2 코어 상에서 실행하는 단계를 포함할 수 있다. 예시적인 방법은, 스레드를 제2 코어 상에서 실행하면, 제2 캐시 내 블록에 대한 캐시 미스를 식별하는 단계, 블록의 직접 펫칭의 이득을 평가하여 이득이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭(directory-based fetch)을 나타내는지 결정하는 단계, 블록의 직접 펫칭의 이득이 직접 펫칭을 나타내는 것으로 결정되는 경우, 제1 캐시로부터 제2 캐시로의 블록의 직접 펫칭을 수행하는 단계 및 블록의 직접 펫칭의 이득이 디렉토리 기반 펫칭을 나타내는 것으로 결정되는 경우 제1 캐시로부터 제2 캐시로의 블록의 디렉토리 기반 펫칭을 수행하는 단계를 더 포함할 수 있다.
또한, 본 개시는 일반적으로 일부 멀티코어 프로세서를 설명한다. 일부 예시적인 멀티코어 프로세서는 제1 타일 및 제2 타일을 포함할 수 있다. 제1 타일은 제1 코어 및 제1 캐시를 포함할 수 있다. 제2 타일은 제2 코어, 제2 캐시 및 펫치 위치 포인터 레지스터(FLPR)를 포함할 수 있다. 일부 예시적인 멀티코어 프로세서는 제1 코어 상에서 실행하는 스레드를 제1 타일에서 제2 타일에서의 제2 코어로 이송하도록 구성될 수 있다. 예시적인 멀티코어 프로세서는 또한, 스레드를 제1 타일로부터 제2 타일로 이송하면, 제1 캐시의 위치를 FLPR에 저장하고, 스레드를 제2 코어 상에서 실행하도록 구성될 수 있다. 예시적인 멀티코어 프로세서는, 스레드를 제2 코어 상에서 실행하면, 제2 캐시 내 블록에 대한 캐시 미스를 식별하고, 블록의 직접 펫칭의 이득을 평가하여 이득이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지를 결정하고, 블록의 직접 펫칭의 이득이 직접 펫칭을 나타내는 것으로 결정되는 경우, 제1 캐시로부터 제2 캐시로의 블록의 직접 펫칭을 수행하고, 블록의 직접 펫칭의 이득이 디렉토리 기반 펫칭을 나타내는 것으로 결정되는 경우, 제1 캐시로부터 제2 캐시로의 블록의 디렉토리 기반 펫칭을 수행하도록 더 구성될 수 있다.
또한, 본 개시는 일반적으로 일부 멀티코어 프로세서를 설명한다. 일부 예시적인 멀티코어 프로세서는 제1 타일 및 제2 타일을 포함할 수 있다. 제1 타일은 제1 코어, 제1 명령어 캐시 및 제1 데이터 캐시를 포함할 수 있다. 제2 타일은 제2 코어, 제2 명령어 캐시, 제2 데이터 캐시, 제1 펫치 위치 포인터 레지스터(FLPR) 및 제2 FLPR을 포함할 수 있다. 일부 예시적인 멀티코어 프로세서는 제1 코어 상에서 실행하는 스레드를 제1 타일로부터 제2 타일에서의 제2 코어로 이송하도록 구성될 수 있다. 예시적인 멀티코어 프로세서는 또한, 스레드를 제1 타일로부터 제2 타일로 이송하면, 제1 캐시의 위치를 FLPR에 저장하고, 스레드를 제2 코어 상에서 실행하도록 구성될 수 있다. 예시적인 멀티코어 프로세서는, 스레드를 제2 코어 상에서 실행하면, 제2 명령어 캐시 내 제1 블록에 대한 명령어 캐시 미스 및 제2 데이터 캐시 내 제2 블록에 대한 데이터 캐시 미스를 식별하고, 제1 블록의 직접 펫칭의 제1 확률을 평가하여 제1 확률이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지 여부를 결정하고, 제1 블록의 직접 펫칭의 제1 확률이 직접 펫칭을 나타내는 것으로 결정되는 경우, 제1 명령어 캐시로부터 제2 명령어 캐시로의 제1 블록의 직접 펫칭을 수행하고, 제1 블록의 직접 펫칭의 제1 확률이 디렉토리 기반 펫칭을 나타내는 경우 제1 명령어 캐시로부터 제2 명령어 캐시로의 제1 블록의 디렉토리 기반 펫칭을 수행하고, 제2 블록의 직접 펫칭의 제2 확률을 평가하여 제2 확률이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지 여부를 결정하고, 제2 블록의 직접 펫칭의 제2 확률이 직접 펫칭을 나타내는 것으로 결정되는 경우 제1 데이터 캐시로부터 제2 데이터 캐시로의 제2 블록의 직접 펫칭을 수행하며, 제2 블록의 직접 펫칭의 제2 확률이 디렉토리 기반 펫칭을 나타내는 경우 제1 데이터 캐시로부터 제2 데이터 캐시로의 제2 블록의 디렉토리 기반 펫칭을 수행하도록 더 구성될 수 있다.
또한, 본 개시는 일반적으로 일부 컴퓨터 판독가능 저장 매체를 설명한다. 일부 컴퓨터 판독가능 저장 매체는 컴퓨터에 의하여 실행되면 컴퓨터가 다양한 동작을 수행하도록 하는 거기에 저장된 컴퓨터 실행가능 명령어를 포함할 수 있다. 일부 예시적인 컴퓨터 실행가능 명령어는 컴퓨터가 멀티코어 프로세서 내 제1 타일에서의 제1 코어 상에서 실행하는 스레드를 제1 타일로부터 멀티코어 프로세서 내 제2 타일에서의 제2 코어로 이송하도록 할 수 있다. 제1 타일은 제1 코어 및 제1 캐시를 포함할 수 있다. 제2 타일은 제2 코어, 제2 캐시 및 펫치 위치 포인터 레지스터(FLPR)를 포함할 수 있다. 예시적인 컴퓨터 실행가능 명령어는, 스레드를 제1 타일로부터 제2 타일로 이송하면, 또한 컴퓨터가 제1 캐시의 위치를 제2 타일에서의 FLPR에 저장하고, 스레드를 제2 코어 상에서 실행하도록 할 수 있다. 예시적인 컴퓨터 실행 가능 명령어는 또한, 스레드를 제2 코어에서 실행하면, 컴퓨터가 제2 캐시 내 블록에 대한 캐시 미스를 식별하고, 블록의 직접 펫칭의 이득을 평가하여 이득이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지 여부를 결정하고, 블록의 직접 펫칭의 이득이 직접 펫칭을 나타내는 것으로 결정되는 경우 제1 캐시로부터 제2 캐시로의 블록의 직접 펫칭을 수행하고, 블록의 직접 펫칭의 이득이 디렉토리 기반 펫칭을 나타내는 것으로 결정되는 경우 제1 캐시로부터 제2 캐시로의 블록의 디렉토리 기반 펫칭을 수행하도록 할 수 있다.
전술한 요약은 예시적인 것일 뿐이고, 어떤 방식으로든 제한을 의도한 것은 아니다. 상술한 예시적인 태양, 실시예 및 특징들에 더하여, 추가의 태양, 실시예 및 특징들이 도면과 이하의 상세한 설명을 참조함으로써 분명하게 될 것이다.
본 개시의 전술한 특징들 및 기타 특징들은, 첨부 도면을 참조하여 이하의 설명 및 첨부된 청구항으로부터 충분히 분명해질 것이다. 이러한 도면들은 본 개시에 따르는 단지 몇 가지의 실시예만을 도시한 것이고, 따라서 그 범위를 제한하는 것으로 간주되어서는 안되는 것을 이해하면서, 본 개시는 첨부된 도면의 사용을 통하여, 더 구체적이고 상세하게 기술될 것이다.
도 1은 이득 측정(profitability measure)를 동적으로 평가하고 이득 측정에 기초하여 직접 펫칭 또는 디렉토리 기반 펫칭을 선택적으로 수행하도록 구성된 예시적인 멀티코어 아키텍처를 도시하는 기능적인 블록도이고;
도 2는 주어진의 블록 주소에 대응하는 블록을 저장하는 하나 이상의 캐시를 나타내도록 구성된 다수의 예시적인 비트 벡터를 나타내는 테이블을 도시하는 도면이고;
도 3은 이득 측정을 동적으로 평가하고 이득 측정에 기초하여 직접 펫칭 또는 디렉토리 기반 펫칭을 선택적으로 수행하도록 구성된 예시적인 프로세스를 도시하는 흐름도이고;
도 4는 예시적인 컴퓨팅 시스템에 대한 컴퓨터 하드웨어 아키텍처를 도시하는 블록도이며;
도 5a-5b는 컴퓨팅 장치 상의 컴퓨터 프로세스를 실행하기 위한 컴퓨터 프로그램을 포함하는 컴퓨터 프로그램 제품을 도시하는 개략도이고, 모두 제시된 적어도 일부 실시예에 따라 배열된다.
이하의 상세한 설명에서, 여기의 일부를 형성하는 첨부 도면에 대한 참조가 이루어진다. 도면에서, 유사한 부호는, 문맥에서 다른 지시가 없다면, 일반적으로 유사한 구성요소를 식별한다. 상세한 설명, 도면, 및 청구항에서 기술된 예시적인 실시예들은 제한하는 것으로 의미되지 않는다. 여기에 제시된 대상의 범위와 사상을 벗어나지 않으면서 다른 실시예가 이용될 수 있고, 다른 변형이 이루어질 수 있다. 여기에서 일반적으로 기술되고 도면에서 도시된 바와 같은 본 개시의 태양들이 다양한 다른 구성으로 배열, 대체, 조합, 분리, 및 설계될 수 있음과, 이 모두가 여기에서 명확히 고려됨이 쉽게 이해될 것이다.
일반적으로 본 개시는, 그 중에서도, 연결 프로세스(attachment process)에 관련되고, 이에 의해, 스레드가 이송되가는 새로운 타일은 스레드가 이송되어오는 예전 타일 상의 캐시에 스스로를 연결하도록 구성될 수 있다. 예시에서, 멀티코어 프로세서는 제1 타일, 제2 타일, 제3 타일 및 제4 타일을 포함할 수 있다. 제1 타일은 제1 코어, 연관된 제1 캐시 및 제1 디렉토리를 포함할 수 있다. 제2 타일은 제2 코어, 연관된 제2 캐시 및 제2 디렉토리를 포함할 수 있다. 제3 타일은 제3 코어, 연관된 제3 캐시 및 제3 디렉토리를 포함할 수 있다. 제4 타일은 제4 코어, 연관된 제4 캐시 및 제4 디렉토리를 포함할 수 있다. 제1 코어는 스레드를 실행하도록 구성될 수 있다.
스레드가 제1 타일로부터 제2 타일로 이송되는 경우, 제2 타일은 제1 캐시의 위치를 펫치 위치 포인터 레지스터[fetch location pointer register(FLPR)]에 저장하거나 제1 타일 상의 다른 적절한 저장 위치에 저장하도록 구성될 수 있다. 스레드 이송에 앞서 제1 코어가 스레드를 가장 최근에 실행하였으므로, 잠정 구역성(temporal locality)은 제2 코어가 스레드를 실행하는 경우 제1 캐시가 요청된 캐시 블록을 포함할 가능성이 있음을 지시할 수 있다. 따라서, 제2 캐시가, 스레드를 실행하는 동안 제2 코어에 의해 요청된 블록이 제2 캐시에서 찾아질 수 없는 캐시 미스를 겪으면, 제2 타일은, 요청된 블록에 대하여, 위치를 FLPR로부터 검색하고 위치에 의해 식별되는 바에 따라 제1 캐시를 쿼리(query)하도록 구성될 수 있다.
제1 캐시가 요청된 블록을 포함하면, 제1 캐시는 요청된 블록을 제2 타일에 제공함으로써 쿼리에 응답하도록 구성될 수 있다. 요청된 블록이 디렉토리를 엑세스하지 않고 검색되는 이러한 프로세스는 여기에서 "직접 펫칭"으로 지칭될 수 있다. 그러나, 직접 펫칭이 처음에 성공적인 경우라고 하더라도, 시간이 지남에 따라, 제1 캐시가 더 이상 요청된 블록을 포함하지 않을 수 있다. 제1 캐시가 요청된 블록을 포함하지 않으면, 제1 캐시는 부정 응답(negative acknowledgement) 또는 일부 다른 적절한 메시지로 쿼리에 응답하도록 구성될 수 있다. 부정 응답을 수신하면, 제2 타일은 요청된 블록을 저장하는 캐시의 위치에 대하여 요청된 블록의 블록 주소에 대응하는 관련 디렉토리를 쿼리하도록 구성될 수 있다. 제2 타일은 이후 요청된 블록을 관련 디렉토리에 의해 식별된 캐시로부터 검색할 수 있다. 요청된 블록이 관련 디렉토리를 액세스함으로써 검색되는 이러한 프로세스는 여기에서 "디렉토리 기반 펫칭"으로 지칭될 수 있다.
디렉토리 기반 펫칭의 예시에서, 제3 디렉토리는 요청된 블록의 블록 주소에 대응할 수 있다. 결과적으로, 제1 타일은 요청된 블록을 포함하는 캐시의 위치에 대하여 제3 디렉토리를 쿼리하도록 구성될 수 있다. 제3 디렉토리는 제4 캐시의 위치에 기초하여 제4 캐시에 통지함으로써 쿼리에 응답하도록 구성될 수 있다. 제4 캐시는 이후 요청된 블록을 제2 타일에 제공함으로써 응답할 수 있다.
종전의 예시에서 도시된 바와 같이, 직접 펫칭은 성공적인 경우 디렉토리 기반 펫칭에 비해 상당한 시간 및 에너지 절약을 제공할 수 있다. 직접 펫칭이 2 개의 타일(예컨대, 상기 예시에서 제1 타일 및 제2 타일) 간의 2-홉 코히어런스 트랜잭션(2-hop coherence transaction)을 수반할 수 있는 반면, 디렉토리 기반 펫칭은 3 개의 타일(예컨대, 상기 예시에서의 제1 타일, 제3 타일 및 제4 타일) 간의 3-홉 코히어런스 트랜잭션을 수반할 수 있다. 그러나, 직접 펫칭이 성공적이지 않으면, 그 위에 타일은 디렉토리 기반 펫칭에 의존하여 요청된 블록을 펫치할 수 있다. 결과적으로, 직접 펫칭에서의 실패는 5-홉 코히어런스 트랜잭션(예컨대, 직접 펫칭을 수행하도록 시도하는 데에 2-홉 및 직접 펫칭이 실패하면 디렉토리 기반 펫칭을 수행하는 데에 3-홉)을 수반할 수 있으며, 이로써 시작부터 단순히 디렉토리 기반 펫칭에 의존하는 것에 비해 추가적인 시간 및 에너지 비용이 초래될 수 있다.
직접 펫칭에 관하여 그러한 추가적인 시간 및 에너지 비용을 경감시키기 위해, 이득 결정 프로세스는, 주어진 타일이 요청된 캐시 블록을 검색하기 위한 직접 펫칭을 중단하고 디렉토리 기반 펫칭으로 전환해야 하는지 여부를 결정하도록 구성될 수 있다. 이득 결정 프로세스를 통하여, 제2 타일은 예컨대, 시간 간격(interval) 동안 디렉토리 기반 펫칭을 수행하기 위하여 제1 지연 시간을 측정하도록 구성될 수 있다. 제2 타일은 시간 간격 동안 직접 펫칭을 수행하기 위한 제2 지연 시간을 측정하도록 더 구성될 수 있다. 제1 지연 시간 및 제2 지연 시간을 측정하면, 제2 타일은 시간 간격 동안의 직접 펫칭의 성공률, 제1 지연 시간, 제2 지연 시간에 기초하여 이득 측정을 결정하도록 구성될 수 있다.
이득 측정은 직접 펫칭이 시간 간격 동안 이득이 있는지 여부를 나타내도록 구성될 수 있다. 이득 측정이 직접 펫칭이 이득이 있었다고 나타내면, 제2 타일은 다음의 시간 간격에 동안 계속해서 직접 펫칭을 수행하도록 구성될 수 있다. 이득 측정이 직접 펫칭이 더 이상 이득이 있지 않다고 나타내면, 제2 타일은 직접 펫칭을 수행하는 것을 중단하고 디렉토리 기반 펫칭을 수행하는 것으로 전환하도록 구성될 수 있다. 제2 타일은 다수의 시간 간격 동안, 선행의 시간 간격에 바로 뒤따르는 연이은 시간 간격에 대하여 직접 펫칭을 계속해서 수행할지 또는 직접 펫칭을 수행하는 것을 중단하고 디렉토리 기반 펫칭을 수행하는 것으로 전환할지 여부를 결정하기 위해 선행하는 시간 간격 동안에 이득 측정을 동적으로 평가하도록 구성될 수 있다. 이득 측정을 동적으로 평가하고 이득 측정의 평가에 기초하여 직접 펫칭 또는 디렉토리 기반 펫칭을 선택적으로 수행함으로써, 제2 타일은 직접 펫칭의 효율로부터 이익을 얻는 한편 또한 직접 펫칭이 실패하는 경우 잠재의 추가적인 시간 및 에너지 비용을 완화할 수 있다.
도 1을 참조하면, 기능적인 블록은, 여기에서 제시된 적어도 일부 실시예에 따라, 이득 측정을 동적으로 평가하고 이득 측정에 기초하여 직접 펫칭 또는 디렉토리 기반 펫칭을 선택적으로 수행하도록 구성되는 예시적인 멀티코어 아키텍처(100)를 도시한다. 아키텍처(100)는 타일 A(104A), 타일 B(104B), 타일 C(104C) 및 타일 D(104D)를 포함하는 다수의 타일을 포함할 수 있다. 타일(104A-104D)은 코어(106A-106D), 캐시(108A-108D), 디렉토리(110A-110D)를 포함할 수 있다. 타일(104A-104D)은 전체적으로 또는 일반적으로 타일(104)로 지칭될 수 있다. 코어(106A-106D)는 전체적으로 또는 일반적으로 코어(106)로 지칭될 수 있다. 캐시(108A-108D)는 전체적으로 또는 일반적으로 캐시(108)로 지칭될 수 있다. 디렉토리(110A-110D)는 전체적으로 또는 일반적으로 디렉토리(110)로 지칭될 수 있다. 도 1에 도시된 예시에서, 아키텍처(100)는 16개의 타일(104)을 포함할 수 있다. 다른 예시에서, 아키텍처(100)는 임의의 적절한 수의 타일 및/또는 캐시를 공유하는 타일 내 적절한 수의 코어를 포함할 수 있다.
코어(106), 캐시(108) 및 디렉토리(110) 각각은 타일(104) 중 하나에 대응할 수 있다. 타일(104)은 컨트롤러(112A-112D) 및 FLPR(114A-114D)을 더 포함할 수 있다. 컨트롤러(112A-112D)는 전체적으로 또는 일반적으로 컨트롤러(112)로 지칭될 수 있다. FLPR(114A-114D)은 전체적으로 또는 일반적으로 FLPR(114)로 지칭될 수 있다. 컨트롤러(112)는 각각의 캐시(108) 및 각각의 디렉토리(110) 상에서 동작을 수행하고 타일(104) 간의 통신을 가능하게 하도록 구성될 수 있다. 일부 다른 실시예에서, 타일(104) 중 하나 이상은 각각 별도의 캐시 컨트롤러 및 디렉토리 컨트롤러와 같은 다수의 컨트롤러를 포함할 수 있다. FLPR(114)에서의 각각의 FLPR은 예전 타일에 대응하는 캐시의 위치를 저장하도록 구성되고 예전 타일로부터 스레드가 FLPR에 대응하는 새로운 타일로 이송될 수 있다.
디렉토리(110)는 각각 블록 주소에 대응하는 블록을 저장하는 캐시(108) 중 하나 이상으로 블록 주소를 매핑하도록 구성될 수 있다. 디렉토리(110) 각각은 블록 주소의 세트, 예컨대, 순차적인 주소의 범위와 연관될 수 있다. 일부 다른 구현예에서, 디렉토리(110) 각각에 할당된 블록 주소는 비순차적(예컨대, 다양한 입상도(granularity)로 인터리빙됨) 일 수 있다. 블록 주소의 그룹은 디렉토리(110) 중에 동등하게 할당될 수 있다. 예컨대, 디렉토리(110A)는 순차적인 블록 주소의 제1 범위와 연관될 수 있고, 디렉토리(110B)는 순차적인 블록 주소의 제2 범위와 연관될 수 있으며, 이하 위와 같은 방식으로 연관될 수 있다. 디렉토리(110) 및 블록 주소 간의 매핑은 고정될 수 있거나 변동될 수 있다. 또한, 디렉토리(110) 사이에서의 매핑은 컨트롤러(112)에 의해 알려질 수 있거나(예컨대, 컨트롤러(112) 상에 미리 프로그래밍됨) 컨트롤러(112)에 의하여 적절한 소스(예컨대, 메모리, 저장 장치, 데이터 베이스 등)로부터 검색될 수 있다.
일부 실시예에서, 디렉토리(110) 각각은 다수의 비트 벡터를 포함할 수 있고, 그 각각은 블록 주소의 세트 내 하나의 블록 주소에 대응할 수 있다. 비트 벡터의 예시는 도 2에 도시되며, 이는 이하에서 더 상세히 설명된다. 각각의 비트 벡터는 캐시(108)의 수에 대응하는 비트의 수를 저장하도록 구성될 수 있다. 예컨대, 각각의 비트 벡터는 16 비트를 저장하도록 구성될 수 있으며, 각각의 비트는 16 캐시 중 하나(예컨대, 도 1의 캐시(108))에 대응할 수 있다. 16 비트 각각은 적어도 2 개의 비트 값 중 하나로 구성될 수 있다. 제1 비트 값(예컨대, 논리 "1")은 대응하는 캐시가 비트 벡터와 연관된 블록 주소에 대응하여 블록을 저장함을 나타낼 수 있다. 제2 비트 값(예컨대, 논리 "0")은 대응하는 캐시가 비트 벡터와 연관된 블록 주소에 대응하여 블록을 저장하지 않음을 나타낼 수 있다. 다양한 다른 실시예는 대략적 비트 벡터(coarse bit vector), 제한 포인터 또는 희소 디렉토리와 같은 다른 적절한 디렉토리 포맷에 의존할 수 있다.
제1 구현예에서, 타일 B(104B)는 스레드를 코어 B(106 B) 상에서 실행하도록 구성될 수 있다. 스레드를 실행하는 동안, 코어 B(106 B)는 데이터를 메모리(도시되지 않음)로부터 검색하고 데이터를 캐시 B(108B)에 저장하도록 구성될 수 있다. 이후 코어 A(104A)가 스레드를 실행할 수 있도록 컨트롤러 B(112B)는 스레드를 타일 B(104B)로부터 타일 A(104A)로 이송하도록 구성될 수 있다. 캐시 A(108A)는 처음에 콜드(cold)일 수 있으므로, 캐시 A(108A)는 스레드의 실행 동안 요청된 데이터에 대하여 캐시 미스를 산출할 수 있다. 각각의 캐시 미스에 응답하여, 컨트롤러 A(112A)는 요청된 데이터의 블록 주소로 매핑되는 디렉토리를 결정하도록 구성될 수 있다. 종전에 설명된 바와 같이, 블록 주소의 범위 및 그 각각의 디렉토리(110) 간의 매핑은 컨트롤러(112)에 의해 알려질 수 있거나 적절한 소스로부터 검색될 수 있다.
이러한 제1 예시에서, 컨트롤러 A(112A)는 디렉토리 C(110C)가 요청된 데이터의 블록 주소로 매핑한다고 결정하도록 구성될 수 있다. 결과적으로, 컨트롤러 A(112A)는 블록 주소에 대응하는 블록을 저장하는 캐시에 대하여 컨트롤러 C(112C)를 쿼리하도록 구성될 수 있다. 디렉토리 C(110C)는 블록 주소에 대응하는 블록을 저장하는 캐시를 식별하는 비트 벡터를 포함할 수 있다. 이러한 예시에서, 디렉토리 C(110C)는 캐시 B(108B)가 블록 주소에 대응하는 블록을 저장함을 식별할 수 있다. 따라서, 컨트롤러 C(112C)는 쿼리를 컨트롤러 B(112B)에 전달하도록 구성될 수 있다. 컨트롤러 B(112B)는, 블록을 캐시 B(108B)로부터 컨트롤러 A(112A)에 제공함으로써 쿼리에 응답할 수 있다. 컨트롤러 A(112A)는 이후 블록을 캐시 A(108A)에 저장하도록 구성될 수 있다.
제1 구현예는 여기서 "디렉토리 기반 펫칭"으로 지칭되며, 타일 A(104A), 타일 B(104B) 및 타일 C(104C) 사이의 3-홉 코히어런스 트랜잭션을 수반한다. 특히, 캐시 A(108A)가 콜드인 경우 캐시 A(108A)가 많은 캐시 미스를 산출할 수 있으므로, 3-홉 코히어런스 트랜잭션은 값비쌀 수 있다. 각각의 캐시 미스 이후, 많은 경우에 데이터가 동일한 소스(예컨대, 제1 예시에서 캐시 B(108B))로부터 검색될 것이라 할지라도, 컨트롤러 A(112A)는 관련 디렉토리에 대하여 별도의 쿼리를 개시하도록 구성될 수 있다. 스레드 이송 전에 코어 B(106B)가 가장 최근에 스레드를 실행하였으므로, 코어 A(106A)가 스레드를 실행하는 경우 잠정 구역성은 캐시 B(108B)가 요청된 캐시 블록을 포함할 가능성이 있음을 지시할 수 있다. 제2 구현예는 시간 및 에너지 비용을 절약하기 위하여 잠정 구역성에 영향을 미치도록 구성됨을 이제 설명될 것이다.
제2 구현예에서, 컨트롤러 B(112B)가 스레드를 타일 B(104B)로부터 타일 A(104A)로 이송하는 경우, 컨트롤러 A(112A)는 캐시 B(108B)의 위치를 FLPR A(114A)에 저장하도록 구성될 수 있다. 캐시 A(108A)가 스레드의 실행 동안 요청된 데이터에 대하여 캐시 미스를 산출하는 경우, 컨트롤러 A(112A)는 캐시 B(108B)의 위치를 FLPR A(114A)로부터 검색하도록 구성될 수 있다. 컨트롤러 B(112B)는 검색된 위치에 의해 식별되는 캐시 B(108B)에 대응할 수 있다. 결과적으로, 컨트롤러 A(112A)는 이후, 요청된 데이터에 대하여 컨트롤러 B(112B)를 쿼리하도록 구성될 수 있다. 컨트롤러 B(112B)는 요청된 데이터에 대응하는 블록을 캐시 B(108B)로부터 컨트롤러 A(112A)로 제공함으로써 쿼리에 응답하도록 구성될 수 있다. 컨트롤러 A(112A)는 이후 블록을 캐시 A(108A)에 저장하도록 구성될 수 있다.
캐시 B(108B)의 위치를 FLPR A(114A)에 저장함으로써, 잠정 구역성이 요청된 데이터가 캐시 B(108B)에 저장될 가능성이 있음을 지시한다는 추정으로 컨트롤러 B(112B)를 직접적으로 쿼리하는 것에 의하여 타일 A(104A)는 잠정 구역성에 영향을 주도록 구성될 수 있다. 캐시 B(108B)가 요청된 데이터를 포함하는 경우, 컨트롤러 A(112A)는 디렉토리 C(110C)에 액세스할 필요가 없으면서 요청된 데이터를 직접적으로 캐시 B(108B)로부터 검색하도록 구성될 수 있다. 제1 구현예의 3-홉 코히어런스 트랜잭션과는 반대로, 제2 구현예는 여기에서 "직접 펫칭"으로 지칭되며, 타일 A(104A) 및 타일 B(104B) 간의 2-홉 코히어런스 트랜잭션을 수반한다. 직접 펫칭은 캐시 B(108B)가 요청된 데이터를 포함하는 경우 상당한 시간 및 에너지 비용 절약을 제공할 수 있지만, 직접 펫칭은 캐시 B(108B)가 요청된 데이터를 포함하지 않는 경우 디렉토리 기반 펫칭에 비하여 추가적인 시간 및 에너지 비용을 발생시킬 수 있다. 직접적인 펫칭이 실패하고 디렉토리 기반 펫칭에 비해 추가적인 시간 및 에너지 비용을 발생시키는 제3 구현예가 이제 설명될 것이다.
제3 구현예에서, 캐시 A(108A)가 스레드의 실행 중에 요청된 데이터에 대하여 캐시 미스를 산출하는 경우, 컨트롤러 A(112A)는 캐시 B(108B)의 위치를 FLPR A(114A)로부터 검색하도록 구성될 수 있다. 컨트롤러 B(112B)는 검색된 위치에 의해 식별되는 캐시 B(108B)에 대응할 수 있다. 결과적으로, 컨트롤러 A(112A)는 이후 요청된 데이터에 대하여 컨트롤러 B(112B)를 쿼리하도록 구성될 수 있다. 그러나, 이러한 제3 예시에서, 캐시 B(108B)는 요청된 데이터를 포함하지 않을 수 있다. 따라서, 컨트롤러 B(112B)는 부정 응답을 컨트롤러 A(112A)에 송신함으로써 쿼리에 응답하도록 구성될 수 있다. 부정 응답은 캐시 B(108B)가 요청된 데이터를 포함하지 않음(즉, 직접 펫칭이 실패함)을 나타낼 수 있다.
부정 응답을 수신하면, 컨트롤러 A(112A)는 디렉토리 기반 펫칭을 수행하도록 구성될 수 있다. 컨트롤러 A(112A)는 블록 주소에 대응하는 블록을 저장하는 캐시에 대하여 컨트롤러 C(112C)를 쿼리하도록 구성될 수 있다. 디렉토리 C(110C)는 블록 주소에 대응하여 블록을 저장하는 캐시를 식별하는 비트 벡터를 포함할 수 있다. 이러한 예시에서, 디렉토리 C(110C)는 캐시 D(108D)가 블록 주소에 대응하여 블록을 저장한다고 식별할 수 있다. 따라서, 컨트롤러 C(112C)는 쿼리를 컨트롤러 D(112D)로 전달하도록 구성될 수 있다. 컨트롤러 D(112D)는 블록을 캐시 D(108D)로부터 컨트롤러 A(112A)에 제공함으로써 쿼리에 응답할 수 있다. 이후 컨트롤러 A(112A)는 블록을 캐시 A(108A)에 저장하도록 구성될 수 있다.
이러한 제3 구현예에서, 컨트롤러 A(112A)는 그 조합이 5-홉 코히어런스 트랜잭션을 수반하는 직접 펫칭 및 디렉토리 기반 펫칭 양자를 필수적으로 수행할 수 있다. 직접 펫칭이 성공적인 경우 상당한 시간 및 에너지 절약을 제공할 수 있지만, 직접 펫칭의 직접 펫칭이 실패한 경우의 불이익 및 직접 펫칭의 이론적 본질은 직접 펫칭을 구현하는 것으로부터 얻어진 다양한 효율에 그늘을 드리울 수 있다. 직접 펫칭에 관한 이러한 문제점을 완화하기 위하여, 컨트롤러 A(112A)는 이득 측정을 동적으로 평가하고, 이득 측정에 기초하여 직접 펫칭 또는 디렉토리 기반 펫칭을 선택적으로 수행하도록 구성될 수 있다.
N 펫치를 다루기 위한 평균 시간은 다음의 식에 의해 정의될 수 있다:
Figure 112013066177768-pct00001
, 여기서, X는 직접 펫칭이 성공적인 N 펫치 내 펫치의 수를 나타낼 수 있고, Tdf는 직접 펫칭을 수행하기 위한 제1 지연 시간을 나타낼 수 있고, Ttrad는 디렉토리 기반 펫칭을 수행하기 위한 제2 지연 시간을 나타낼 수 있다. 식의 첫번째 부분,
Figure 112013066177768-pct00002
은 직접 펫칭이 성공적인 경우의 X 펫치에 대한 전체 시간을 정의할 수 있다. 식의 두번째 부분,
Figure 112013066177768-pct00003
은 직접 펫칭이 성공적이지 않은 N-X 펫치에 대하여 보낸 전체 시간을 정의할 수 있다. 즉, 직접 펫칭이 성공적이지 않은 경우, 각각의 펫치는 제1 지연 시간(Tdf) 및 제2 지연 시간(Ttrad)의 합을 이용할 수 있다.
직접 펫칭이 없이(즉, 디렉토리 기반 펫칭을 이용함), N 펫치를 다루기 위한 평균 시간은 다음의 식에 의해 정의될 수 있다:
Figure 112013066177768-pct00004
. 그렇다면
Figure 112013066177768-pct00005
인 경우 직접 펫칭이 디렉토리 기반 펫칭에 비하여 이득이 있는 것으로 고려될 수 있다는 것이 된다. X/N > Tdf/Ttrad인 경우 식
Figure 112013066177768-pct00006
이 만족될 수 있으며, 여기서 X/N은 직접 펫칭의 성공률을 나타낼 수 있고, Tdf/Ttrad는 제2 지연 시간(Ttrad)에 대한 제1 지연 시간(Tdf)의 지연비를 나타낼 수 있다. 부등식 X/N > Tdf/Ttrad는 여기에서 "이득 측정"으로서 지칭될 수 있다.
컨트롤러 A(112A)는 N 펫치에 대하여 제1 지연 시간(Tdf) 및 제2 지연 시간(Ttrad)을 모니터링하도록 구성될 수 있다. 일부 실시예에서, 숫자 N은 캐시(108)에 관한 캐시 크기 및 블록 크기에 기초하여 정의될 수 있다. 예컨대, 캐시 크기가 512 킬로바이트(kilobyte)이고 블록 크기가 64바이트이면, 캐시(108) 각각은 전체 8,192 블록을 보유할 수 있다. 전체 8,192 블록이 32개의 시간 간격으로 분할되면, N은 256 펫치로 설정된다. 이러한 예시에서, 컨트롤러 A(112A)는 시작하는 각각의 펫치에서 타이머를 시작하고 각 펫치의 끝에서 타이머를 중단하도록 구성될 수 있다. 256 펫치의 세트에 대하여, 컨트롤러 A(112A)는 제1 지연 시간(Tdf)을 결정하기 위해 각각의 직접 펫치를 수행하는 데 이용된 시간을 평균 내도록 구성될 수 있다. 256 펫치의 세트에 대하여, 컨트롤러 A(112A)는 또한 제2 지연 시간(Ttrad)을 결정하기 위해 각각의 디렉토리 기반 펫치를 수행하는데 이용된 시간을 평균내도록 구성될 수 있다. 제1 지연 시간(Tdf) 및 제2 지연 시간(Ttrad)을 결정하면, 컨트롤러 A(112A)는 제2 지연 시간(Ttrad)에 대한 제1 지연 시간(Tdf)의 지연비(Tdf/Ttrad)을 결정하도록 구성될 수 있다.
N 펫치에 대하여 제1 지연 시간(Tdf) 및 제2 지연 시간(Ttrad)을 모니터링하는 것에 더해, 컨트롤러 A(112A)는 또한 주어진 시간 간격에서 N 펫치에 대한 직접 펫치의 수 X를 카운트하도록 구성될 수 있다. N 펫치에 대한 직접 펫치의 수 X를 카운트하면, 컨트롤러 A(112A)는 N 펫치에 대한 직접 펫치의 성공률을 결정하도록 구성될 수 있다. N 펫치에 대한 성공률(X/N) 및 제2 지연 시간(Ttrad)에 대한 제1 지연 시간(Tdf)의 지연비(Tdf/Ttrad)을 결정하면, 컨트롤러 A(112A)는 이득 측정에 따라 성공률 X/N이 지연비(Tdf/Ttrad)보다 큰지 여부를 결정하도록 구성될 수 있다. 성공률(X/N)이 지연비(Tdf/Ttrad)보다 크면, 컨트롤러 A(112A)는 주어진 시간 간격에 이어지는 다음의 시간 간격에 대하여 직접 펫칭을 수행하도록 구성될 수 있다. 성공률(X/N)이 지연비(Tdf/Ttrad) 보다 크지 않은 경우, 컨트롤러 A(112A)는 직접 펫칭을 수행하는 것을 중단하고 이어지는 시간 간격에 대하여 디렉토리 기반 펫칭을 수행하는 것으로 전환하도록 구성될 수 있다.
컨트롤러 A(112A)가 직접 펫칭을 수행하도록 구성될 수 있는 한편, 컨트롤러 A(112A)는 또한 제1 지연 시간(Tdf) 및 제2 지연 시간(Ttrad)을 계속해서 모니터링하고 N 펫치의 각각의 세트에 대하여 직접 펫치의 수(X)를 카운트하도록 구성될 수 있다. 이러한 방식으로, 컨트롤러 A(112A)는 계속해서 이득 측정을 동적으로 평가하고 이득 측정의 평가에 따라 직접 펫칭 또는 디렉토리 기반 펫칭을 선택적으로 수행할 수 있다. 또한, 각 시간 간격 동안의 제1 지연 시간(Tdf) 및 제2 지연 시간(Ttrad)을 모니터링 함으로써, 이득 측정이 새로운 코어 및 예전 코어 간의 거리, 온-칩 네트워크(on-chip network) 상의 혼잡 등과 같은 다양한 관련 요인들에 관하여, 이러한 요인들이 실시간 또는 거의 실시간으로 변화됨에 따라, 평가될 수 있다.
일부 다른 실시예에서, 이득 측정은 변환 색인 버퍼[translation lookaside buffer("TLB")] 상태 이송의 이득을 결정하도록 구성될 수 있다. 이득 측정은 TLB 미스 관리자를 불러오고(invoke) 페이지 테이블 워크(page table walk)를 국지적으로 수행함으로써 TLB 미스를 다루거나 TLB 상태가 이송되어 나오는 예전 타일 내 TLB로부터 TLB 엔트리(entry)를 직접적으로 펫치하도록 시도하는 것이 언제 이득이 있는지를 결정하는 데 이용될 수 있다. 캐시 미스와 대조적으로, TLB 미스는 캐시가 콜드인 경우 훨씬 더 값비쌀 수 있다. 다수 레벨의 페이지 테이블 워크는 다수 메모리 액세스(예컨대, x86-64 아키텍처 내 4 레벨 페이지 테이블에서의 4 액세스)를 수반할 수 있다. 각각의 메모리 액세스가 캐시 미스를 발생하면, TLB 미스 지연은 메모리 액세스 지연의 적어도 4배일 수 있다. 결과적으로, 직접 펫칭은 TLB 상태 이송을 다루기 위하여 상당히 유익할 수 있다. 페이지 테이블 엔트리로부터의 데이터가 국지적으로 캐싱되기 시작하므로, 직접 펫칭은 덜 유익해지게 됨에 따라 중단될 수 있다.
일부 다른 실시예에서, 타일(104) 각각은 별도의 명령어 캐시 및 데이터 캐시를 포함할 수 있다. 그러한 구현예에서, 별도의 이득 측정은 명령어 캐시의 이득 및 데이터 캐시의 이득을 결정하도록 구성될 수 있다. 직접 펫칭의 성공률은 명령어 캐시 및 데이터 캐시에 관하여 별도로 추적될 수 있다. 또한, 직접 펫칭 및 디렉토리 기반 펫칭의 지연은 명령어 캐시 및 데이터 캐시에 관하여 별도로 모니터링될 수 있다. 이러한 방식으로, 직접 펫칭이 명령어 캐시 및 데이터 캐시 중 하나에서 중단되는 경우라도, 직접 펫칭은 여전히 명령어 캐시 및 데이터 캐시 중 다른 하나에서 구현될 수 있다. 별도의 명령어 및 데이터 캐시의 위치는 또한 별도의 FLPR에 저장될 수 있다.
일부 다른 실시예에서, 직접 펫칭은 디렉토리 결합 프로토콜과 통합될 수 있다. 예전 타일이 새로운 타일로부터 요청된 블록(또는 요청된 데이터 블로그 요청된 데이터 블록, TLB 엔트리, 등)에 대한 직접 펫치 요청을 수신하는 경우, 예전 타일은 요청된 블록으로 새로운 타일에 응답하도록 구성될 수 있다. 예전 타일 내 블록의 현재 캐시 결합 상태가 새로운 타일로부터의 요청을 만족시키기에 충분하면, 예전 타일은 공유 통지(share notification)를 요청된 블록과 연관된 관련 디렉토리로 송신하도록 구성될 수 있다. 공유 통지는 관련 디렉토리가 (예컨대, 직접 펫칭이 판독 캐시 미스로부터 발생하는 경우에) 요청된 블록의 공유자로서 새로운 타일을 부가하거나, (예컨대, 직접 펫칭이 기록 캐시 미스로부터 발생한 경우에) 요청된 블록의 하나의 공유자로서 새로운 타일을 나타내도록 공유 목록을 변경함으로써 공유 목록을 갱신하도록 명령하도록 구성될 수 있다. 공유 목록을 갱신하면, 관련 디렉토리는 응답(acknowledgement) 메시지를 예전 타일로 송신함으로써 공유 통지에 대응하도록 구성될 수 있다. 예전 타일이 응답 메시지를 수신할 때까지, 예전 코어는 예전 타일이 요청된 블록을 새로운 타일로 송신했다는 인식을 유지하도록 구성될 수 있다. 예전 타일이 응답 메시지를 수신하는 경우, 예전 타일은 관련 디렉토리가 이제 일치하므로 예전 타일이 요청된 블록을 새로운 타일로 송신했다는 인식을 더 이상 유지하지 않도록 구성될 수 있다. 즉, 관련 디렉토리는 이제 새로운 타일 및 예전 타일 둘 다가 요청된 블록을 포함하거나, 새로운 타일만이 요청된 블록을 포함함을 적절히 나타낼 수 있다.
일부 다른 실시예에서, 직접 펫칭은 하드웨어 프리페처(prefetcher)와 통합될 수 있다. 하드웨어 프리페처는 직접 펫칭을 안내하도록 구성될 수 있다. 예컨대, 하드웨어 프리페처는 코어가 스레드를 실행하면 코어의 순차적인 데이터 액세스를 검출하도록 구성될 수 있다. 하드웨어 프리페처는 검출된 액세스 패턴에 기초하여 장래의 데이터 액세스를 예측하도록 구성될 수 있다. 직접 펫칭은 이득 측정에 따라 이득이 있는 채로 남을 수 있는 한편, 하드웨어 프리페처는 새로운 타일이 순차적인 액세스 패턴에 따라 데이터를 예전 타일로부터 프리펫치(prefetch)하도록 명령하도록 구성될 수 있다. 데이터가 요청되기 전에 데이터를 프리펫치함으로써, 직접 펫칭과 연관된 지연은 0 또는 거의 영으로 감소될 수 있다. 데이터를 프리펫치하면, 새로운 타일은 프리펫치된 데이터를 저장하고 프리펫치된 데이터와 연관된 특수 비트를 플래그(flag)하도록 구성될 수 있다. 특수 비트에 의해 식별되는 프리펫치된 데이터 내 블록이 액세스되는 경우, 성공 카운터는 증가될 수 있고 이로써 하드웨어 프리페처의 효율을 추적할 수 있다. 성공 카운터가 더 이상 하드웨어 프리페처에 의한 직접 펫칭이 효율적이라고 나타내지 않는 경우, 새로운 타일은 하드웨어 프리페처가 디렉토리 기반 펫칭을 이용하도록 구성될 수 있다.
일부 다른 실시예에서, 이득 측정은 캐시 용량 공유를 관리하도록 구성된 멀티코어 아키텍처 기법의 성능 이득을 결정하도록 구성될 수 있다. 일부 구현예에서, 주어진 타일은 인근 타일 내 원격 캐시를 이용하여, 예컨대, 로컬 캐시로부터의 희생 블록 또는 새로이 펫치된 블록을 배치함으로써, 데이터를 원격 캐시에 저장하도록 구성될 수 있다. 다른 어플리케이션이 이러한 인근 타일 내 코어 상에서 실행하는 경우, 인근 타일은 데이터를 원격 캐시로부터 퇴거하도록 구성될 수 있고, 이에 따라 그러한 원격 캐시를 이용하는 성능 이득을 감소시킬 수 있다. 그러한 경우에, 이득 측정은 주어진 타일이 데이터를 그 성능 이득에 따라 데이터를 로컬 캐시에 저장해야 하는지 또는 원격 캐시에 저장해야 하는지를 결정하도록 구성될 수 있다.
도 2로 넘어가면, 여기에서 제시된 적어도 일부 실시예에 따라, 도면은 주어진 블록 주소에 대응하는 블록을 저장하는 캐시 중 하나 이상을 나타내도록 구성된 다수의 예시적인 비트 벡터를 나타내는 테이블(200)을 도시한다. 주어진 디렉토리는 다수의 비트 벡터를 포함할 수 있고, 그 각각은 다수의 블록 주소 중 하나에 대응할 수 있다. 테이블(200)은 다수의 행(202A-202N)을 포함할 수 있으며, 그 각각은 다수의 블록 주소 중 하나에 대응할 수 있다. 테이블(200)은 또한 다수의 열(204A-204N)을 포함할 수 있으며, 그 각각은 캐시(108) 중 하나에 대응할 수 있다. 테이블(200)은 셀(206A-206N)과 같은 다수의 셀을 포함할 수 있으며, 그 각각은 다수의 블록 주소 중 하나 및 캐시(108) 중 하나에 대응할 수 있다. 주어진 행에 따른 셀은 특정한 비트 벡터를 나타낼 수 있다. 예컨대, 제1 행(202A)에 따른 셀(206A-206N)은 제1 블록 주소에 대응하는 예시적인 비트 벡터를 나타낼 수 있다.
도 2에 도시된 예시에서, 논리 1 비트 값은 대응하는 캐시가 블록을 저장함을 나타낼 수 있고, 논리 0 비트 값은 대응하는 캐시가 블록을 저장하지 않음을 나타낼 수 있다. 따라서, 제1 셀(206A) 및 제N 셀(206N) 내 제1 비트 값으로의 논리 1 비트 값은 제1 캐시 및 제N 캐시가 블록을 공유함을 나타낼 수 있다. 셀(206A-206N)에 대응하는 비트 벡터는 멀티코어 아키텍처 내 캐시의 수에 대응하는 비트의 수를 나타낼 수 있다. 컨트롤러(112A-112D)는 추가적인 캐시가 블록을 공유하고/거나 캐시가 무효되거나 개재됨에 따라 비트 벡터를 동적으로 갱신하도록 구성될 수 있다.
도 3으로 넘어가면, 여기에서 제시된 적어도 일부 실시예에 따라, 흐름도는 이득 측정을 동적으로 평가하고 이득 측정에 기초하여 직접 펫칭 또는 디렉토리 기반 펫칭을 선택적으로 수행하도록 구성되는 예시적인 프로세스(300)를 도시한다. 프로세스(300)는 블록(302 내지 316) 중 하나 이상에 의해 도시된 다양한 동작, 기능 또는 작용을 포함할 수 있다.
프로세스(300)는 블록(302)(제1 시간 간격에 대하여 직접 펫칭을 수행)에서 시작할 수 있으며, 여기서 새로운 타일 내 컨트롤러는 제1 시간 간격 동안 직접 펫칭을 수행하도록 구성될 수 있다. 새로운 타일이 캐시 미스를 발생시키면, 컨트롤러는 스레드가 새로운 타일로 이송된 예전 타일 상의 캐시로부터 요청된 데이터를 직접적으로 펫치하도록 구성될 수 있다. 제1 시간 간격은 미리 정의된 수의 펫치에 대응할 수 있다. 직접 펫칭이 실패하면, 컨트롤러는 디렉토리 기반 펫칭을 수행하도록 구성될 수 있다. 블록(302)는 블록(304)로 이어질 수 있다.
블록(304)(직접 펫칭의 제1 지연 시간을 측정)에서, 컨트롤러는 예전 타일로부터 데이터의 직접 펫치의 개시로부터 경과 시간(즉, 지연)의 양 및 직접 펫치의 완료를 측정함으로써 제1 지연 시간을 측정하도록 구성될 수 있다. 컨트롤러는 다수의 직접 펫치에 대하여 직접 펫칭의 제1 지연 시간을 측정, 각각의 직접 펫치와 연관된 측정된 지연을 기록(log) 및/또는 주어진 시간 간격 동안 처리된 직접 펫치의 수집에 대하여 지연 시간의 평균을 계산하도록 구성될 수 있다. 블록(304)는 블록(306)으로 이어질 수 있다.
블록(306)(디렉토리 기반 펫칭의 제2 지연 시간을 측정)에서, 컨트롤러는 요청된 데이터를 포함하는 예전 타일의 위치에 대한 관련 디렉토리로의 요청의 개시로부터의 경과 시간(즉, 지연)의 양 및 예전 타일 상의 캐시로부터의 펫치의 완료를 측정함으로써 제2 지연 시간을 측정하도록 구성될 수 있다. 컨트롤러는 다수의 디렉토리 기반 펫치에 대한 제2 지연 시간을 측정, 각각의 디렉토리 기반 펫치에 대한 시간의 양을 기록 및/또는 주어진 시간 간격 동안의 디렉토리 기반 펫치의 수집에 대한 지연 시간의 평균을 계산하도록 구성될 수 있다. 블록(306)은 블록(308)로 이어질 수 있다.
디렉토리 기반 펫칭의 예시에서, 제3 디렉토리는 요청된 블록의 블록 주소에 대응할 수 있다. 결과적으로, 제1 타일은 요청된 블록을 포함하는 캐시의 위치에 대하여 제3 디렉토리를 쿼리하도록 구성될 수 있다. 제3 디렉토리는 제4 캐시의 위치에 따라 제4 캐시에 통지함으로써 쿼리에 응답하도록 구성될 수 있다. 제4 캐시는 이후 요청된 블록을 제2 타일에 제공함으로써 응답할 수 있다.
블록(308)(제2 지연 시간에 대한 제1 지연 시간의 지연비를 결정)에서, 컨트롤러는 제2 지연 시간에 대한 제1 지연 시간의 지연비를 결정하도록 구성될 수 있다. 지연비는 지연 시간에 관하여 디렉토리 기반 펫칭에 비한 직접 펫칭의 효율을 나타낼 수 있다. 예컨대, 제1 지연 시간이 제2 지연 시간보다 상당히 낮으면, 지연비는 1보다 매우 작을 것이며, 이는 디렉토리 기반 펫칭에 비해 보다 높은 효율의 직접 펫칭을 나타낸다. 제1 지연 시간이 대략 제2 지연 시간과 동일하면, 지연비는 약 1일 것이고, 이는 디렉토리 기반 펫칭에 비해 낮은 효율의 직접 펫칭을 나타낸다. 블록(308)은 블록(310)으로 이어질 수 있다.
블록(310)(직접 펫칭의 성공률을 결정)에서, 컨트롤러는 직접 펫칭이 주어진 시간 간격 동안 성공적인 횟수를 카운트함으로써 성공률을 결정하도록 구성될 수 있다. 직접 펫칭은 데이터가 예전의 타일로부터 검색되면 성공적인 것으로 고려될 수 있다. 데이터가 예전의 타일로부터 검색되지 않으면 직접 펫칭은 비성공적인 것으로 고려될 수 있다. 성공률은 주어진 시간 간격 동안의 펫치의 전체 수에 대하여 직접 펫칭이 성공적인 횟수의 비로 표현될 수 있다. 블록(310)은 블록(312)로 이어질 수 있다.
블록(312)(성공률이 지연비 보다 큰지 결정)에서, 컨트롤러는 성공률이 제2 지연 시간에 대한 제1 지연 시간의 지연비 보다 큰지 여부를 결정하도록 구성될 수 있다. 성공률이 지연비보다 크면 직접 펫칭은 주어진 시간 간격 동안 이득이 있는 것으로 고려될 수 있다. 성공률이 지연비 보다 크지 않으면 디렉토리 기반 펫칭은 주어진 시간 간격 동안 이득이 있는 것으로 고려되지 않는다. 컨트롤러가 직접 펫칭이 이득이 있다고 결정하면, 블록(312)은 블록(314)로 이어진다. 컨트롤러가 직접 펫칭이 이득이 없다고 결정하면, 블록(312)은 블록(316)으로 이어질 수 있다. 상기에 더하여, 이득을 결정하기 위한 추가적인 기법이 있을 수 있다. 제1 예시적인 경우에서, 주어진 시간 간격 내에 어떠한 디렉토리 기반 펫칭도 없는 경우, 직접 펫칭이 이득이 있는 것으로 고려될 수 있다. 제2 예시적인 경우에서, 주어진 시간 간격 내에 어떠한 직접 펫칭도 없는 경우, 직접 펫칭은 이득이 있지 않은 것으로 고려될 수 있으며, 디렉토리 기반 펫칭이 이득이 있는 것으로 고려될 수 있다.
블록(314)(다음의 시간 간격 동안 직접 펫칭을 수행)에서, 컨트롤러는 제1 시간 간격에 이어진 다음의 시간 간격 동안 직접 펫칭을 계속해서 수행하도록 구성될 수 있다. 블록(314)는 블록(304)로 이어질 수 있다. 블록(304-314)는 컨트롤러가 직접 펫칭이 더 이상 이득이 없다고 결정할 때까지 각각의 연이은 시간 간격에 대하여 반복될 수 있다.
블록(316)(디렉토리 기반 펫칭을 수행)에서, 컨트롤러는 이어지는 시간 간격 동안 직접 펫칭 동작으로부터 디렉토리 기반 펫칭으로 전환하도록 구성될 수 있다. 일부 실시예에서, 컨트롤러는 직접 펫칭 모드 및/또는 디렉토리 기반 펫칭 모드를 포함하는 다양한 동작 모드를 포함할 수 있다. 컨트롤러가 블록(312)의 성공률 및 지연비에 기초하여 직접 펫칭 모드에서 동작할지 또는 디렉토리 기반 펫칭 모드에서 동작할지에 관하여 결정한다. 동작 모드 선택은 하드웨어, 소프트웨어, 펌웨어 또는 그들의 조합으로 구현될 수 있다. 블록(316) 이후에, 프로세스(300)는 (예컨대, 주기적으로, 계속적으로 또는 요구에 따라) 반복하거나 종료할 수 있다.
도 4는 여기에서 제시된 적어도 일부 실시예에 따라 구성된 예시적인 컴퓨팅 시스템에 대한 컴퓨터 하드웨어 아키텍처를 나타내는 블록도이다. 도 4은 프로세서(410), 메모리(420) 및 하나 이상의 드라이브(430)를 포함하는 컴퓨터(400)를 포함한다. 컴퓨터(400)는 종래의 컴퓨터 시스템, 임베디드 컨트롤 컴퓨터, 랩탑 또는 서버 컴퓨터, 모바일 장치, 셋탑 박스, 키오스크(kiosk), 차량 정보 시스템, 모바일 전화, 맞춤형 머신 또는 기타 하드웨어 플랫폼으로 구현될 수 있다.
드라이브(430) 및 그 연관된 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(400)에 대한 다른 데이터의 저장을 제공한다. 드라이브(430)는 운영 체제(440), 어플리케이션 프로그램(450), 프로그램 모듈(460) 및 데이터베이스(480)를 포함할 수 있다. 프로그램 모듈(460)은 펫칭 모드 컨트롤 모듈(405)을 포함할 수 있다. 펫칭 모드 컨트롤 모듈(405)은 위에서 보다 상세히 설명한 바(예컨대, 도 1-3 중 하나 이상에 관한 종전의 설명을 참조)와 같이 이득 측정을 동적으로 평가하기 위한 프로세스(300)를 실행하고 이득 측정에 기초하여 직접 펫칭 또는 디렉토리 기반 펫칭을 선택적으로 수행하도록 구성될 수 있다. 일부 실시예에서, 펫칭 모드 컨트롤 모듈(405) 성공률 및 지연비에 기초하여 직접 펫칭 모드 및 디렉토리 기반 펫칭 사이에서 스위치할 수 있다. 컴퓨터(400)는 사용자 입력 장치(490)를 더 포함하며, 이를 통하여 사용자는 명령 및 데이터를 입력할 수 있다. 입력 장치는 전자 디지타이저, 마이크, 키보드, 및 보통 마우스, 트랙볼 또는 터치 패드로 지칭되는 포인팅 장치를 포함할 수 있다. 다른 입력 장치는 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다.
이러한 입력 장치 및 다른 입력 장치는 시스템 버스에 결합되는 사용자 입력 인터페이스를 통하여 프로세서(410)에 결합될 수 있으나, 병렬 포트, 게임 포트 또는 범용 직렬 버스(universal serial bus(USB))와 같은 다른 인터페이스 및 버스 구조에 의해 결합될 수 있다. 컴퓨터(400)와 같은 컴퓨터는 또한 출력 주변장치 인터페이스(494) 등을 통하여 결합될 수 있는 스피커와 같은 다른 주변 출력 장치를 포함할 수 있다.
컴퓨터(400)는 네트워크 인터페이스(496)에 결합된 원격 컴퓨터와 같은 하나 이상의 컴퓨터로의 논리적인 연결을 이용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고 컴퓨터(400)에 관하여 상술한 요소 중 다수 또는 전부를 포함할 수 있다. 네트워킹 환경은 사무실, 기업 광역 통신망(WAN), 근거리 통신망(LAN), 인트라넷 및 인터넷에서 흔하다.
LAN 또는 WLAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(400)는 네트워크 인터페이스(496) 또는 어댑터를 통하여 LAN에 결합될 수 있다. WAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(400)는 보통 모뎀 또는 네트워크(408) 또는 인터넷과 같은 WAN을 통하여 통신을 수립하기 위한 다른 수단을 포함할 수 있다. WAN은 인터넷, 예시된 네트워크(408), 다양한 다른 네트워크 또는 그들의 임의의 조합을 포함할 수 있다. 컴퓨터 간의 통신 링크, 링, 메쉬, 버스, 클라우드 또는 네트워크를 수립하는 다른 메커니즘이 이용될 수 있다는 점이 인정될 것이다.
일부 실시예에 따르면, 컴퓨터(400)는 네트워킹 환경에 결합될 수 있다. 컴퓨터(400)는 드라이브(430) 또는 다른 저장 장치와 연관된 물리적인 컴퓨터 판독 가능 저장 매체(들) 중 하나 이상의 예시를 포함할 수 있다. 시스템 버스는 프로세서(410)가 코드 및/또는 데이터를 컴퓨터 판독가능 저장 매체로/로부터 판독하는 것이 가능하도록 할 수 있다. 매체는 반도체, 자기성 재료, 광학 매체, 전기적 저장 장치, 전기화학 저장 장치 또는 임의의 다른 그러한 저장 기술을 포함하지만 이에는 제한되지 않는 임의의 적절한 기술을 이용하여 구현되는 저장 요소의 형태의 장치를 나타낼 수 있다. 매체는 RAM, ROM, 플래시 또는 다른 유형의 휘발성 또는 비휘발성 기술로서 특징지어지든 아니든, 메모리(420)와 연관된 컴포넌트를 나타낼 수 있다. 매체는 또한 저장 드라이브(430)로 구현되든 아니든 2차 저장 장치를 나타낼 수 있다. 하드 드라이브 구현예는 솔리드 스테이트로서 특징지어질 수 있거나 자기적으로 인코딩된 정보를 저장하는 회전 매체를 포함할 수 있다.
저장 매체는 하나 이상의 프로그램 모듈(460)을 포함할 수 있다. 프로그램 모듈(460)은 프로세서(410)로 로딩되고, 실행되는 경우, 범용 컴퓨팅 시스템을 특수 목적 컴퓨팅 시스템으로 변환하는 소프트웨어 명령어를 포함할 수 있다. 본 설명 전반을 통하여 상세하게 설명된 바와 같이, 프로그램 모듈(460)은 다양한 툴(tool) 또는 기법을 제공할 수 있고, 이에 따라 컴퓨터(400)는 여기에서 설명된 컴포넌트, 로직 흐름 및/또는 데이터 구조를 이용하여 전체적인 시스템 또는 동작 환경 내에 참여할 수 있다.
프로세서(410)는 개별적으로 또는 집합적으로 임의의 수의 상태를 가정할 수 있는, 임의의 수의 트랜지스터 또는 기타 회로 소자로부터 구성될 수 있다. 더 구체적으로, 프로세서(410)는 상태 머신 또는 유한 상태 머신으로 동작할 수 있다. 그러한 머신은 프로그램 모듈(460) 내에 포함된 실행 가능한 명령어를 로딩함으로써 특정 머신 또는 제2 머신으로 변환될 수 있다. 이러한 컴퓨터로 실행 가능한 명령어는, 프로세서(410)가 어떻게 상태 간에 전환하는지를 지정함으로써 프로세서(410)를 변환할 수 있고, 이에 따라 제1 머신으로부터 제2 머신으로 프로세서(410)를 구성하는 트랜지스터 또는 기타의 회로 소자를 변환할 수 있다. 각 머신의 상태는 또한 하나 이상의 사용자 입력 장치(490), 네트워크 인터페이스(496), 기타의 주변장치, 기타의 인터페이스, 또는 하나 이상의 사용자 또는 기타의 행위자로부터 입력을 수신함으로써 변환될 수 있다. 각각의 머신은 또한 프린터, 스피커, 비디오 디스플레이 등과 같은 다양한 출력 장치의 다양한 물리적인 특징 또는 상태를 변환할 수 있다.
프로그램 모듈(460)을 인코딩하는 것은 저장 매체의 물리적 구조를 또한 변환할 수 있다. 본 개시의 상이한 구현예에서, 물리적 구조의 특정 변환은 다양한 요소에 의존할 수 있다. 그러한 요소의 예시는, 저장 매체를 구현하는데 사용되는 기술, 저장 매체가 주 저장장치로 특징지어지는지 또는 이차적인 저장장치로 특징지어지는지 여부 등을 포함할 수 있으나, 이에 제한되지는 않는다. 예를 들어, 저장 매체가 반도체 기반의 메모리로 구현되면, 프로그램 모듈(460)은 소프트웨어가 거기에 인코딩되면 반도체 메모리(420)의 물리적 상태를 변환할 수 있다. 예를 들어, 소프트웨어는 반도체 메모리(420)를 구성하는 트랜지스터, 커패시터, 또는 기타의 이산 회로 소자를 변환할 수 있다.
다른 예시로서, 저장 매체는 드라이브(430)와 같은 자기 또는 광학 기술을 이용하여 구현될 수 있다. 그러한 구현예에서, 프로그램 모듈(460)은 소프트웨어가 거기에 인코딩되면, 자기 또는 광학 매체의 물리적인 상태를 변환할 수 있다. 이러한 변환은 주어진 자기 매체 내에서 특정 위치의 자기적인 특성을 바꾸는 것을 포함할 수 있다. 이러한 변환은 또한 주어진 광학 매체 내에서 특정 위치의 물리적인 특성 또는 특징을 바꾸어, 그 위치의 광학적인 특성을 바꾸는 것을 포함할 수 있다. 본 개시의 범위 및 사상으로부터 벗어나지 않으면서 물리적 매체의 다양한 기타의 변환이 가능하다는 것이 인식되어야 한다.
도 5a-5b로 돌아가면, 여기에서 제시된 적어도 일부 실시예에 따라 배열된, 컴퓨팅 장치 상에서의 컴퓨터 장치를 실행하기 위한 컴퓨터 프로그램을 포함하는 컴퓨터 프로그램 제품(500)을 도시하는 개략도이다. 예시적인 컴퓨터 프로그램 제품의 예시적인 실시예는 신호 포함 매체(502)를 이용하여 제공되고 적어도 504 - 멀티코어 프로세서에서 제1 타일로부터 제2 타일로의 제1 타일에서의 제1 코어 상에서 실행하는 스레드의 이송을 개시하기 위한 하나 이상의 명령어; 제1 타일에서의 제1 캐시로부터 제2 타일에서의 제2 캐시로 전송될 블록의 블록 주소를 결정하기 위한 하나 이상의 명령어; 블록 주소에 대응하는 디렉토리를 포함하는 제3 타일을 식별하기 위한 하나 이상의 명령어; 제2 캐시가 블록을 공유하는 것을 반영하도록 디렉토리를 갱신하기 위한 하나 이상의 명령어; 또는 블록을 제1 캐시로부터 제2 캐시로 전송하기 위한 하나 이상의 명령어 - 중 적어도 하나의 명령어를 포함할 수 있다. 일부 실시예에서, 하나 이상의 컴퓨터 프로그램 제품(500)의 신호 포함 매체(502)는 컴퓨터 판독 가능 매체(506), 기록 가능 매체(508) 및/또는 통신 매체(510)를 포함할 수 있다.
여기에서 설명된 대상이 컴퓨터 시스템 상의 운영 체제 및 어플리케이션 프로그램의 실행과 함께 실행하는 프로그램 모듈의 일반적인 맥락에서 제시되고 있으나, 당업자는 다른 구현예가 다른 유형의 프로그램 모듈과 조합하여 수행될 수 있다는 것을 인식할 것이다. 일반적으로, 프로그램 모듈은, 루틴, 프로그램, 컴포넌트, 데이터 구조 및 특정 태스크를 수행하거나 특정한 추상 데이터 유형(abstract data type)을 구현하는 기타 유형의 구조를 포함한다. 또한, 당업자는 여기에서 설명된 대상이 휴대용 장치, 멀티 코어 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능한 가전, 미니 컴퓨터, 메인 프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성으로 실시될 수 있다는 것을 인정할 것이다.
본 개시는 다양한 태양의 예시로서 의도된 본 출원에 기술된 특정 실시예들에 제한되지 않을 것이다. 당업자에게 명백할 바와 같이, 많은 수정과 변형들이 그 사상과 범위를 벗어나지 않으면서 이루어질 수 있다. 여기에 열거된 것들에 더하여, 본 개시의 범위 안에서 기능적으로 균등한 방법과 장치가 위의 설명으로부터 당업자에게 명백할 것이다. 그러한 수정과 변형들은 첨부된 청구항의 범위에 들어가도록 의도된 것이다. 본 개시는 첨부된 청구항과 그러한 청구항에 부여된 균등물의 전 범위에 의해서만 제한될 것이다. 본 개시가 물론 다양할 수 있는 특정 방법, 시약, 합성 구성 또는 생물학적 시스템에 제한되지 않는 것으로 이해될 것이다. 또한, 여기에서 사용된 용어는 특정 실시예를 기술하기 위한 목적이고, 제한하는 것으로 의도되지 않음이 이해될 것이다.
여기에서 실질적으로 임의의 복수 및/또는 단수의 용어의 사용에 대하여, 당업자는 맥락 및/또는 응용에 적절하도록, 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수의 치환은 명확성을 위해 여기에서 명시적으로 기재될 수 있다.
당업자라면, 일반적으로 본 개시에 사용되며 특히 첨부된 청구범위(예를 들어, 첨부된 청구범위)에 사용된 용어들이 일반적으로 "개방적(open)" 용어(예를 들어, 용어 "포함하는"은 "포함하지만 이에 제한되지 않는"으로, 용어 "갖는"는 "적어도 갖는"으로, 용어 "포함하다"는 "포함하지만 이에 한정되지 않는" 등으로 해석되어야 함)로 의도되었음을 이해할 것이다. 또한, 당업자라면, 도입된 청구항의 기재사항의 특정 수가 의도된 경우, 그러한 의도가 청구항에 명시적으로 기재될 것이며, 그러한 기재사항이 없는 경우, 그러한 의도가 없음을 또한 이해할 것이다. 예를 들어, 이해를 돕기 위해, 이하의 첨부 청구범위는 "적어도 하나" 및 "하나 이상" 등의 도입 구절의 사용을 포함하여 청구항 기재사항을 도입할 수 있다. 그러나, 그러한 구절의 사용이, 부정관사 "하나"("a" 또는 "an")에 의한 청구항 기재사항의 도입이, 그러한 하나의 기재사항을 포함하는 실시예로, 그러한 도입된 청구항 기재사항을 포함하는 특정 청구항을 제한함을 암시하는 것으로 해석되어서는 안되며, 동일한 청구항이 도입 구절인 "하나 이상" 또는 "적어도 하나" 및 "하나"("a" 또는 "an")과 같은 부정관사(예를 들어, "하나"는 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 일반적으로 해석되어야 함)를 포함하는 경우에도 마찬가지로 해석되어야 한다. 이는 청구항 기재사항을 도입하기 위해 사용된 정관사의 경우에도 적용된다. 또한, 도입된 청구항 기재사항의 특정 수가 명시적으로 기재되는 경우에도, 당업자라면 그러한 기재가 일반적으로 적어도 기재된 수(예를 들어, 다른 수식어가 없는 "두 개의 기재사항"을 단순히 기재한 것은, 일반적으로 적어도 두 개의 기재사항 또는 두 개 이상의 기재사항을 의미함)를 의미하도록 해석되어야 함을 이해할 것이다. 또한, "A, B 및 C 등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 및 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템을 포함하지만 이에 제한되지 않음). "A, B 또는 C 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 또는 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템을 포함하지만 이에 제한되지 않음). 또한 당업자라면, 실질적으로 어떠한 이접 접속어(disjunctive word) 및/또는 두 개 이상의 대안적인 용어들을 나타내는 구절은, 그것이 상세한 설명, 청구범위 또는 도면에 있는지와 상관없이, 그 용어들 중의 하나, 그 용어들 중의 어느 하나, 또는 그 용어들 두 개 모두를 포함하는 가능성을 고려했음을 이해할 것이다. 예를 들어, "A 또는 B"라는 구절은 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해될 것이다.
또한, 마쿠쉬 그룹을 이용하여 본 개시의 특징 또는 양상이 기술될 때는, 당업자라면 본 개시가 또한 마쿠쉬 그룹의 임의의 개별 구성원 또는 구성원의 서브그룹을 이용하여 기술됨을 이해할 것이다.
서면의 기재를 제공하는 것과 같은 어떠한 그리고 모든 목적을 위해서, 본 개시에 기재된 모든 범위는 모든 어떠한 가능한 하위범위 및 그 하위범위의 조합을 또한 포괄함이 이해 되어야 한다. 임의의 나열된 범위는, 그 동일한 범위가 적어도 동일한 이분 범위, 삼분 범위, 사분 범위, 오분 범위, 십분 범위 등으로 분할될 수 있으며, 그러한 동일 범위를 충분히 기술하는 것으로 용이하게 인식될 수 있다. 제한되지 않은 예로서, 본 개시에 기재된 각 범위는, 하위 삼분, 중간 삼분, 상위 삼분 등으로 용이하게 분할될 수 있다. 또한, "까지(up to)," "적어도(at least)," "더 큰(greater than)," "더 적은(less than)" 등과 같은 모든 언어는 인용된 수를 포함하며, 상술한 바와 같은 하위 범위로 분할될 수 있는 범위들을 나타냄이 이해되어야 한다. 마지막으로, 범위는 각 개별 구성요소를 포함됨이 이해되어야 한다. 따라서, 예를 들어, 1 내지 3 셀(cell)을 가지는 그룹은 1, 2 또는 3 셀을 가지는 그룹을 나타낸다. 유사하게, 1 내지 5 셀을 가지는 그룹은 1, 2, 3, 4 또는 5 셀을 가지는 그룹을 나타내는 등이다.
다양한 양상 및 실시예들이 본 개시에서 기술되었지만, 다른 양상 및 실시예들이 당업자에게 명확할 것이다. 본 개시에 기재된 다양한 양상 및 실시예는 예시의 목적으로 제시된 것이고, 제한하려고 의도된 것은 아니며, 진정한 범위 및 사상은 이하 청구범위에 의해 나타낸다.

Claims (24)

  1. 멀티코어 프로세서에서 직접 펫칭(direct fetching)의 이득(profitability)을 결정하기 위한 방법으로서,
    상기 멀티코어 프로세서 내 제1 타일에서의 제1 코어 상에서 실행하는 제1 스레드(thread)를 상기 제1 타일로부터 상기 멀티코어 프로세서 내 제2 타일에서의 제2 코어로 이송(migrate)하는 단계 - 상기 제1 타일은 상기 제1 코어 및 제1 캐시를 포함하고 상기 제2 타일은 상기 제2 코어, 제2 캐시 및 펫치 위치 포인터 레지스터(fetch location pointer register(FLPR))을 포함함 -;
    상기 제1 스레드를 상기 제1 타일로부터 상기 제2 타일로 이송하는 것에 응답하여, 상기 제1 캐시의 제1 위치를 상기 제2 타일에서의 상기 FLPR에 저장하고 상기 제1 스레드를 상기 제2 코어 상에서 실행하는 단계; 및
    상기 제1 스레드를 상기 제2 코어 상에서 실행하는 것에 응답하여,
    상기 제2 캐시 내 블록에 대한 캐시 미스(cache miss)를 식별하고,
    직접 펫칭(direct fetching) 및 디렉토리 기반 펫칭(directory-based fetching)을 수행하기 위한 측정된 지연 시간 및 직접 펫칭의 성공률에 기초하여 상기 블록을 펫칭하는 이득 측정(profitability measure)을 평가하여 상기 이득 측정이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지를 결정하고,
    직접 펫칭을 나타내는 것으로 결정되는 상기 블록을 펫칭하는 상기 이득 측정에 응답하여, 상기 FLPR을 이용하여 상기 제1 캐시로부터 상기 제2 캐시로의 상기 블록의 직접 펫칭을 수행하며,
    디렉토리 기반 펫칭을 나타내는 것으로 결정되는 상기 블록을 펫칭하는 상기 이득 측정에 응답하여, 상기 블록의 디렉토리 기반 펫칭을 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 블록을 펫칭하는 상기 이득 측정을 평가하여 상기 이득 측정이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지 결정하는 것은,
    상기 제1 캐시로부터 상기 제2 캐시로의 직접 펫칭을 수행하도록 제1 지연 시간(latency time)을 결정하는 단계;
    디렉토리 기반 펫칭을 수행하도록 제2 지연 시간을 결정하는 단계;
    상기 제1 지연 시간을 상기 제2 지연 시간으로 나눔으로써 지연비(latency ratio)를 결정하는 단계;
    상기 FLPR의 직접 펫칭의 상기 성공률을 식별하는 단계;
    상기 지연비보다 큰 상기 성공률에 응답하여, 상기 블록을 펫칭하는 상기 이득 측정이 직접 펫칭을 나타낸다고 결정하는 단계; 및
    상기 지연비보다 크지 않은 상기 성공률에 응답하여, 상기 블록을 펫칭하는 상기 이득 측정이 디렉토리 기반 펫칭을 나타낸다고 결정하는 단계를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 FLPR을 이용하여 상기 제1 캐시로부터 상기 제2 캐시로의 상기 블록의 직접 펫칭을 수행하는 것은,
    상기 제2 캐시 내 상기 블록에 대하여 상기 캐시 미스를 식별하는 것에 응답하여, 상기 제1 위치를 상기 FLPR로부터 검색(retrieve)하는 단계;
    상기 블록에 대한 펫치 요청을 상기 검색된 제1 위치에 의해 식별되는 바에 따라 상기 제2 캐시로부터 상기 제1 캐시로 송신하는 단계;
    상기 펫치 요청에 응답하여, 상기 제1 캐시가 상기 블록을 포함하는지 또는 상기 제1 캐시가 상기 블록을 포함하는 데 실패하는지 여부를 결정하는 단계;
    상기 제1 캐시가 상기 블록을 포함한다고 결정한 것에 응답하여, 상기 블록을 상기 제1 캐시로부터 검색하는 단계; 및
    상기 검색된 블록을 상기 제1 캐시로부터 상기 제2 캐시로 송신하는 단계를 포함하는, 방법.
  4. 제3항에 있어서,
    상기 제1 캐시가 상기 블록을 포함하는 데 실패한다고 결정한 것에 응답하여 부정 응답(negative acknowledgement)을 상기 제1 캐시로부터 상기 제2 캐시로 송신하는 단계;
    상기 부정 응답에 응답하여, 상기 블록에 대한 쿼리를 상기 제2 캐시로부터 상기 멀티코어 프로세서 내 제3 타일에서의 디렉토리로 송신하는 단계 - 상기 제3 타일은 제3 코어, 제3 캐시 및 상기 디렉토리를 포함함 -;
    상기 디렉토리로의 상기 쿼리에 응답하여, 상기 멀티코어 프로세서 내 제4 타일에서의 제4 캐시의 제2 위치를 상기 디렉토리로부터 검색하는 단계 - 상기 제4 타일은 제4 코어 및 상기 제4 캐시를 포함함 -;
    상기 제2 위치에 의해 식별되는 바에 따라 상기 블록에 대한 제2 펫치 요청을 상기 제2 캐시로부터 상기 제4 캐시로 송신하는 단계;
    상기 제2 펫치 요청에 응답하여, 상기 블록을 상기 제4 캐시로부터 검색하는 단계; 및
    상기 검색된 블록을 상기 제4 캐시로부터 상기 제2 캐시로 송신하는 단계
    를 더 포함하는 방법.
  5. 제3항에 있어서,
    상기 제2 타일에서, 상기 제1 캐시 및 상기 제2 캐시 사이에서 공유되는 블록을 추적(track)하는 단계;
    공유 통지(share notification)를 상기 제2 타일로부터 상기 멀티코어 프로세서 내 제3 타일로 송신하는 단계 - 상기 제3 타일은 제3 코어, 제3 캐시 및 디렉토리를 포함하고, 상기 디렉토리는 상기 블록에 대한 공유 목록을 포함함 -;
    상기 공유 통지에 대응하여, 상기 제1 캐시 및 상기 제2 캐시를 특정(specify)하도록 상기 공유 목록을 갱신하는 단계;
    상기 제1 캐시 및 상기 제2 캐시를 특정하도록 상기 공유 목록이 갱신되었음을 나타내는 응답 메시지를 상기 제3 타일로부터 상기 제2 타일로 송신하는 단계; 및
    상기 응답 메시지에 응답하여, 상기 제2 타일에서 상기 블록의 추적을 종료하는 단계
    를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 공유 목록은 비트 벡터를 포함하고, 상기 비트 벡터는 복수의 비트를 포함하고, 상기 복수의 비트 각각은 상기 멀티코어 프로세서 내 복수의 타일 중 하나에 대응하고, 상기 비트 각각의 값은 상기 타일 중 대응하는 하나가 상기 블록을 포함하는 캐시를 포함하는지 여부를 특정하는, 방법.
  7. 제1항에 있어서,
    상기 블록의 디렉토리 기반 펫칭을 수행하는 것은,
    상기 블록에 대한 쿼리를 상기 제2 캐시로부터 상기 멀티코어 프로세서 내 제3 타일에서의 디렉토리로 송신하는 단계 - 상기 제3 타일은 제3 코어, 제3 캐시 및 상기 디렉토리를 포함함 -;
    상기 디렉토리로의 쿼리에 응답하여, 상기 제1 캐시의 상기 제1 위치를 상기 디렉토리로부터 검색하는 단계;
    상기 검색된 제1 위치에 의해 식별되는 바에 따라 상기 블록에 대한 펫치 요청을 상기 제2 캐시로부터 상기 제1 캐시로 송신하는 단계;
    상기 펫치 요청에 응답하여, 상기 블록을 상기 제1 캐시로부터 검색하는 단계; 및
    상기 검색된 블록을 상기 제1 캐시로부터 상기 제2 캐시로 송신하는 단계를 포함하는, 방법.
  8. 제1항에 있어서,
    예측된 블록을 상기 제1 캐시로부터 검색하고 상기 예측된 블록을 상기 제2 캐시에 저장하도록 구성된 하드웨어 프리페처(hardware prefetcher)를 실행하는 단계
    를 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 제1 코어 상에서 실행하는 제2 스레드를 상기 제1 타일로부터 상기 제2 타일로 이송하고 상기 제2 스레드를 상기 제2 코어 상에서 실행하는 단계;
    상기 제2 스레드의 실행을 평가하여 상기 제2 코어 상의 제2 스레드가 상기 제2 캐시 내 상기 예측된 블록 중 하나를 이용하는지 여부를 결정하는 단계; 및
    상기 제2 캐시 내 상기 예측된 블록 중 하나를 이용하는 것으로 결정되는 상기 제2 코어 상에서의 상기 제2 스레드의 실행에 응답하여, 상기 하드웨어 프리페처에 대한 성공 카운터(success counter)를 증가시키는 단계
    를 더 포함하는 방법.
  10. 제1항에 있어서,
    상기 제1 타일은 제1 변환 색인 버퍼(translation lookaside buffer(TLB))를 더 포함하고, 상기 제2 타일은 제2 TLB를 더 포함하며, 상기 방법은,
    상기 제2 코어 상에서 상기 제1 스레드를 실행하는 것에 응답하여, 상기 제2 TLB 내 엔트리(entry)에 대한 TLB 미스(miss)를 식별하는 단계;
    상기 엔트리를 펫칭하는 제2 이득 측정을 평가하여 상기 제2 이득 측정이 직접 펫칭을 나타내는지 또는 페이지 테이블 워크(page table walk)를 나타내는지를 결정하는 단계;
    직접 펫칭을 나타내는 것으로 결정되는 상기 엔트리를 펫칭하는 상기 제2 이득 측정에 응답하여, 상기 제1 TLB로부터 상기 제2 TLB로의 상기 엔트리의 직접 펫칭을 수행하는 단계; 및
    상기 페이지 테이블 워크를 나타내는 것으로 결정되는 상기 엔트리를 펫칭하는 제2 이득 측정에 응답하여, 상기 멀티코어 프로세서 내 상기 엔트리의 페이지 테이블 워크를 수행하는 단계
    를 더 포함하는 방법.
  11. 멀티코어 프로세서로서,
    제1 코어 및 제1 캐시를 포함하는 제1 타일; 및
    제2 코어, 제2 캐시 및 펫치 위치 포인터 레지스터(FLPR)를 포함하는 제2 타일을 포함하고,
    상기 멀티코어 프로세서는,
    상기 제1 타일에서의 상기 제1 코어 상의 제1 스레드를 상기 제2 타일에서의 상기 제2 코어로 이송하고;
    상기 제1 스레드의 상기 제1 타일로부터 상기 제2 타일로의 이송에 응답하여, 상기 제1 캐시의 제1 위치를 상기 FLPR에 저장하고, 상기 제1 스레드를 상기 제2 코어 상에서 실행하며;
    상기 제2 코어 상의 상기 제1 스레드의 실행에 응답하여,
    상기 제2 캐시 내 블록에 대한 캐시 미스를 식별하고,
    직접 펫칭 및 디렉토리 기반 펫칭을 수행하기 위한 측정된 지연 시간 및 직접 펫칭의 성공률에 기초하여 상기 블록을 펫칭하기 위한 이득 측정을 평가하여 상기 이득 측정이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지를 결정하고,
    직접 펫칭을 나타내는 것으로 결정되는 상기 블록을 측정하기 위한 상기 이득 측정에 응답하여, 상기 FLPR을 이용하여 상기 제1 캐시로부터 상기 제2 캐시로의 상기 블록의 직접 펫칭을 수행하며,
    디렉토리 기반 펫칭을 나타내는 것으로 결정되는 상기 블록을 측정하기 위한 상기 이득 측정에 응답하여, 상기 블록의 디렉토리 기반 펫칭을 수행하도록 구성되는 멀티코어 프로세서.
  12. 제11항에 있어서,
    상기 멀티코어 프로세서는, 상기 블록을 펫칭하기 위한 이득 측정을 평가하기 위하여:
    상기 제1 캐시로부터 상기 제2 캐시로의 직접 펫칭을 수행하기 위한 제1 지연 시간을 결정하고;
    상기 제1 캐시로부터 상기 제2 캐시로의 디렉토리 기반 펫칭을 수행하기 위한 제2 지연 시간을 결정하고;
    상기 제1 지연 시간을 상기 제2 지연 시간으로 나눈 지연비를 결정하고;
    상기 FLPR의 직접 펫칭의 상기 성공률을 식별하고;
    상기 지연비보다 큰 상기 성공률에 응답하여, 상기 블록을 펫칭하기 위한 이득 측정이 직접 펫칭을 나타낸다고 결정하고;
    상기 지연비 보다 크지 않은 상기 성공률에 응답하여, 상기 블록을 펫칭하기 위한 이득 측정이 디렉토리 기반 펫칭을 나타낸다고 결정하도록 구성되는, 멀티코어 프로세서.
  13. 제11항에 있어서,
    상기 멀티코어 프로세서는, 상기 FLPR을 이용하여 상기 제1 캐시로부터 상기 제2 캐시로의 상기 블록의 직접 펫칭을 수행하기 위하여:
    상기 제2 캐시 내 상기 블록에 대한 상기 캐시 미스의 식별에 응답하여, 상기 제1 위치를 상기 FLPR로부터 검색하고;
    상기 검색된 제1 위치에 의해 식별되는 바에 따라 상기 블록에 대한 펫치 요청을 상기 제2 캐시로부터 상기 제1 캐시로 송신하고;
    상기 펫치 요청에 응답하여, 상기 제1 캐시가 상기 블록을 포함하는지 또는 상기 제1 캐시가 상기 블록을 포함하는데 실패하는지 여부를 결정하고;
    상기 블록을 포함하는 것으로 결정되는 상기 제1 캐시에 응답하여, 상기 블록을 상기 제1 캐시로부터 검색하며;
    상기 검색된 블록을 상기 제1 캐시로부터 상기 제2 캐시로 송신하도록 구성되는 멀티코어 프로세서.
  14. 제13항에 있어서,
    상기 멀티코어 프로세서는 제3 타일 및 제4 타일을 더 포함하고,
    상기 제3 타일은 제3 코어, 제3 캐시 및 디렉토리를 포함하고, 상기 제4 타일은 제4 코어 및 제4 캐시를 포함하며, 상기 멀티코어 프로세서는,
    상기 제1 캐시가 상기 블록을 포함하는데 실패한다고 결정하는 상기 멀티코어 프로세서에 의한 결정에 응답하여 부정 응답을 상기 제1 캐시로부터 상기 제2 캐시로 송신하고;
    상기 부정 응답에 응답하여 상기 블록에 대한 쿼리를 상기 제2 캐시로부터 상기 디렉토리로 송신하고;
    상기 디렉토리로의 상기 쿼리에 응답하여, 상기 제4 캐시의 제2 위치를 상기 디렉토리로부터 검색하고;
    상기 제2 위치에 의해 식별된 바에 따라 상기 블록에 대한 제2 펫치 요청을 상기 제2 캐시로부터 상기 제4 캐시로 송신하고;
    상기 제2 펫치 요청에 응답하여, 상기 블록을 상기 제4 캐시로부터 검색하며;
    상기 검색된 블록을 상기 제4 캐시로부터 상기 제2 캐시로 송신하도록 구성되는 멀티코어 프로세서.
  15. 제13항에 있어서,
    상기 멀티코어 프로세서는 제3 타일을 더 포함하고, 상기 제3 타일은 제3 코어, 제3 캐시 및 디렉토리를 포함하고, 상기 디렉토리는 상기 블록에 대한 공유 목록을 포함하고, 상기 멀티코어 프로세서는,
    상기 제2 타일에서, 상기 제1 캐시 및 상기 제2 캐시 사이에서 공유되는 상기 블록을 추적하고;
    공유 통지를 상기 제2 타일로부터 상기 제3 타일로 송신하고;
    상기 공유 통지에 응답하여, 상기 제1 캐시 및 상기 제2 캐시를 특정하도록 상기 공유 목록을 갱신하고;
    상기 제1 캐시 및 상기 제2 캐시를 특정하도록 상기 공유 목록이 갱신되었음을 나타내도록 응답 메시지를 상기 제3 타일로부터 상기 제2 타일로 송신하며;
    상기 응답 메시지에 응답하여, 상기 제2 타일에서의 상기 블록의 추적을 종료하도록 구성되는 멀티코어 프로세서.
  16. 제15항에 있어서,
    상기 공유 목록은 비트 벡터를 포함하고, 상기 비트 벡터는 복수의 비트를 포함하고, 상기 복수의 비트 각각은 상기 멀티코어 프로세서 내 복수의 타일 중 하나에 대응하고, 상기 비트 각각의 값은 상기 타일 중 대응하는 하나가 상기 블록을 포함하는 캐시를 포함하는지 여부를 특정하는, 멀티코어 프로세서.
  17. 제11항에 있어서,
    상기 멀티코어 프로세서는 제3 타일을 더 포함하고, 상기 제3 타일은 제3 코어, 제3 캐시 및 디렉토리를 포함하고;
    상기 블록의 디렉토리 기반 펫칭을 수행하도록 상기 멀티코어 프로세서는
    상기 블록에 대한 쿼리를 상기 제2 캐시로부터 상기 디렉토리로 송신하고;
    상기 디렉토리로의 상기 쿼리에 응답하여, 상기 제1 캐시의 상기 제1 위치를 상기 디렉토리로부터 검색하고;
    상기 검색된 제1 위치에 의해 식별되는 바에 따라 상기 블록에 대한 펫치 요청을 상기 제2 캐시로부터 상기 제1 캐시로 송신하고;
    상기 펫치 요청에 응답하여, 상기 블록을 상기 제1 캐시로부터 검색하며;
    상기 검색된 블록을 상기 제1 캐시로부터 상기 제2 캐시로 송신하도록 구성되는 멀티코어 프로세서.
  18. 제11항에 있어서,
    상기 멀티코어 프로세서는 예측된 블록을 상기 제1 캐시로부터 상기 제2 캐시로 프리펫치(prefetch)하도록 구성된 하드웨어 프리페처를 더 포함하고, 상기 블록의 디렉토리 기반 펫칭을 수행하도록, 상기 하드웨어 프리페처는 상기 예측된 블록을 상기 제1 캐시로부터 검색하고 상기 예측된 블록을 상기 제2 캐시에 저장하도록 구성되는 멀티코어 프로세서.
  19. 제18항에 있어서,
    상기 하드웨어 프리페처는 성공 카운터를 포함하고, 상기 멀티코어 프로세서는,
    상기 제1 타일에서의 상기 제1 코어 상의 제2 스레드를 상기 제2 타일로 이송하고, 상기 제2 스레드를 상기 제2 코어 상에서 실행하고;
    상기 제2 코어 상에서의 상기 제2 스레드의 실행을 평가하여 상기 제2 코어 상에서의 상기 제2 스레드가 상기 제2 캐시 내 상기 예측된 블록 중 하나를 이용하는지 여부를 결정하며;
    상기 제2 캐시 내 상기 예측된 블록 중 하나를 이용하는 것으로 결정되는 상기 제2 코어 상의 상기 제2 스레드의 실행에 응답하여, 상기 하드웨어 프리페처에 대한 성공 카운터를 증가시키도록 더 구성되는 멀티코어 프로세서.
  20. 제11항에 있어서,
    상기 제1 타일은 제1 변환 색인 버퍼(TLB)를 더 포함하고, 상기 제2 타일은 제2 TLB를 더 포함하고, 상기 멀티코어 프로세서는,
    상기 제1 스레드의 상기 제2 코어 상에서의 실행에 응답하여, 상기 제2 TLB 내 엔트리에 대한 TLB 미스를 식별하고;
    상기 엔트리를 펫칭하기 위한 제2 이득 측정을 평가하여 상기 제2 이득 측정이 직접 펫칭을 나타내는지 또는 페이지 테이블 워크를 나타내는지를 결정하고;
    직접 펫칭을 나타내는 것으로 결정되는 상기 제2 이득 측정에 응답하여, 상기 제1 TLB로부터 상기 제2 TLB로의 엔트리의 직접 펫칭을 수행하며;
    상기 페이지 테이블 워크를 나타내는 것으로 결정되는 상기 제2 이득 측정에 응답하여, 상기 멀티코어 프로세서 내 상기 엔트리의 페이지 테이블 워크를 수행하도록 더 구성되는 멀티코어 프로세서.
  21. 멀티코어 프로세서로서,
    제1 코어, 제1 명령어 캐시 및 제1 데이터 캐시를 포함하는 제1 타일; 및
    제2 코어, 제2 명령어 캐시, 제2 데이터 캐시 및 펫치 위치 포인터 레지스터(FLPR)를 포함하는 제2 타일
    을 포함하고, 상기 멀티코어 프로세서는
    상기 제1 타일에서의 상기 제1 코어 상의 스레드를 상기 제2 타일에서의 상기 제2 코어로 이송하고;
    상기 스레드의 상기 제1 타일로부터 상기 제2 타일로의 이송에 응답하여, 상기 제1 명령어 캐시 및 상기 제1 데이터 캐시의 위치를 상기 FLPR에 저장하고, 상기 스레드를 상기 제2 코어 상에서 실행하며;
    상기 제2 코어 상의 상기 스레드의 실행에 응답하여,
    상기 제2 명령어 캐시 내 제1 블록에 대한 명령어 캐시 미스 및 상기 제2 데이터 캐시 내 제2 블록에 대한 데이터 캐시 미스를 식별하고,
    직접 펫칭 및 디렉토리 기반 펫칭을 수행하기 위한 측정된 제1 지연 시간 및 직접 펫칭의 제1 성공률에 기초하여 상기 제1 블록을 펫칭하기 위한 제1 이득 측정을 평가하여 상기 제1 이득 측정이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지를 결정하고,
    직접 펫칭을 나타내는 것으로 결정되는 상기 제1 블록을 펫칭하기 위한 상기 제1 이득 측정에 응답하여, 상기 FLPR을 이용하여 상기 제1 명령어 캐시로부터 상기 제2 명령어 캐시로의 상기 제1 블록의 직접 펫칭을 수행하고,
    디렉토리 기반 펫칭을 나타내는 것으로 결정되는 상기 제1 블록을 펫칭하기 위한 상기 제1 이득 측정에 응답하여, 상기 제1 블록의 디렉토리 기반 펫칭을 수행하고,
    상기 제2 블록의 직접 펫칭 및 디렉토리 기반 펫칭을 수행하기 위한 측정된 제2 지연 시간 및 직접 펫칭의 제2 성공률에 기초하여 상기 제2 블록을 펫칭하기 위한 제2 이득 측정을 평가하여, 상기 제2 이득 측정이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지를 결정하고,
    직접 펫칭을 나타내는 것으로 결정되는 상기 제2 블록을 펫칭하기 위한 상기 제2 이득 측정에 응답하여, 상기 FLPR을 이용하여 상기 제1 데이터 캐시로부터 상기 제2 데이터 캐시로의 상기 제2 블록의 직접 펫칭을 수행하며,
    디렉토리 기반 펫칭을 나타내는 것으로 결정되는 상기 제2 블록을 펫칭하기 위한 상기 제2 이득 측정에 응답하여, 상기 제2 블록의 디렉토리 기반 펫칭을 수행하도록 구성되는 멀티코어 프로세서.
  22. 제21항에 있어서,
    상기 FLPR은 상기 제1 명령어 캐시의 위치를 저장하기 위한 제1 FLPR 및 상기 제1 데이터 캐시의 위치를 저장하기 위한 제2 FLPR을 포함하는, 멀티코어 프로세서.
  23. 컴퓨터 판독 가능 명령어가 저장된 컴퓨터 판독 가능 저장 매체로서, 상기 컴퓨터 판독 가능 명령어는 컴퓨터에 의한 실행에 응답하여, 상기 컴퓨터가,
    멀티코어 프로세서 내 제1 타일에서의 제1 코어 상의 스레드를 상기 제1 타일로부터 상기 멀티코어 프로세서 내 제2 타일에서의 제2 코어로 이송하고 - 상기 제1 타일은 상기 제1 코어 및 제1 캐시를 포함하고, 상기 제2 타일은 상기 제2 코어, 제2 캐시 및 펫치 위치 포인터 레지스터(FLPR)를 포함함 -;
    상기 스레드의 상기 제1 타일로부터 상기 제2 타일로의 이송에 응답하여, 상기 제1 캐시의 위치를 상기 제2 타일에서의 상기 FLPR에 저장하고, 상기 스레드를 상기 제2 코어 상에서 실행하며;
    상기 제2 코어 상의 상기 스레드의 실행에 응답하여,
    상기 제2 캐시 내 블록에 대한 캐시 미스를 식별하고,
    직접 펫칭 및 디렉토리 기반 펫칭을 수행하기 위한 측정된 지연 시간 및 직접 펫칭의 성공률에 기초하여 상기 블록을 펫칭하기 위한 이득 측정을 평가하여 상기 이득 측정이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지를 결정하고,
    직접 펫칭을 나타내는 것으로 결정되는 상기 블록을 펫칭하기 위한 상기 이득 측정에 응답하여, 상기 FLPR을 이용하여 상기 제1 캐시로부터 상기 제2 캐시로의 상기 블록의 직접 펫칭을 수행하고,
    디렉토리 기반 펫칭을 나타내는 것으로 결정되는 상기 블록을 펫칭하기 위한 이득 측정에 응답하여, 상기 블록의 디렉토리 기반 펫칭을 수행하도록 하는, 컴퓨터 판독 가능 저장 매체.
  24. 제23항에 있어서,
    상기 블록을 펫칭하기 위한 상기 이득 측정을 평가하여 상기 이득 측정이 직접 펫칭을 나타내는지 또는 디렉토리 기반 펫칭을 나타내는지 결정하도록, 상기 컴퓨터 판독 가능 저장 매체는, 상기 컴퓨터에 의한 실행에 응답하여, 상기 컴퓨터가,
    상기 제1 캐시로부터 상기 제2 캐시로의 직접 펫칭을 수행하도록 제1 지연 시간을 결정하고;
    상기 블록의 디렉토리 기반 펫칭을 수행하도록 제2 지연 시간을 결정하고;
    상기 제1 지연 시간을 상기 제2 지연 시간으로 나눔으로써 지연비를 결정하고;
    상기 FLPR의 성공률을 식별하고;
    상기 지연비보다 큰 상기 성공률에 응답하여, 상기 블록을 펫칭하기 위한 이득 측정이 직접 펫칭을 나타낸다고 결정하며;
    상기 지연비보다 크지 않은 상기 성공률에 응답하여, 상기 블록을 펫칭하기 위한 이득 측정이 디렉토리 기반 펫칭을 나타낸다고 결정하도록 하는 컴퓨터 판독 가능 명령어를 포함하는 컴퓨터 판독 가능 저장 매체.
KR1020137019466A 2011-03-24 2011-03-24 멀티코어 아키텍처에서 직접 펫칭 이득의 동적 결정 KR101531155B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/029759 WO2012128769A1 (en) 2011-03-24 2011-03-24 Dynamically determining profitability of direct fetching in a multicore architecture

Publications (2)

Publication Number Publication Date
KR20130116903A KR20130116903A (ko) 2013-10-24
KR101531155B1 true KR101531155B1 (ko) 2015-06-24

Family

ID=46878331

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137019466A KR101531155B1 (ko) 2011-03-24 2011-03-24 멀티코어 아키텍처에서 직접 펫칭 이득의 동적 결정

Country Status (3)

Country Link
US (1) US8832414B2 (ko)
KR (1) KR101531155B1 (ko)
WO (1) WO2012128769A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101497516B1 (ko) 2010-12-29 2015-03-02 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 디렉토리 기반의 멀티코어 아키텍처 상에서 캐시 상태 전송의 가속화
US9411733B2 (en) * 2011-09-09 2016-08-09 University Of Rochester Sharing pattern-based directory coherence for multicore scalability (“SPACE”)
US9047194B2 (en) 2012-07-18 2015-06-02 Empire Technology Development Llc Virtual cache directory in multi-processor architectures
US9804896B2 (en) * 2012-07-31 2017-10-31 Empire Technology Development Llc Thread migration across cores of a multi-core processor
US9552293B1 (en) * 2012-08-06 2017-01-24 Google Inc. Emulating eviction data paths for invalidated instruction cache
WO2014196976A1 (en) 2013-06-06 2014-12-11 Empire Technology Development, Llc Shared cache data movement in thread migration
US9785568B2 (en) * 2014-05-19 2017-10-10 Empire Technology Development Llc Cache lookup bypass in multi-level cache systems
US11550723B2 (en) * 2018-08-27 2023-01-10 Qualcomm Incorporated Method, apparatus, and system for memory bandwidth aware data prefetching

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090172424A1 (en) * 2007-12-31 2009-07-02 Qiong Cai Thread migration to improve power efficiency in a parallel processing environment
US20110067029A1 (en) * 2009-09-11 2011-03-17 Andrew Wolfe Thread shift: allocating threads to cores

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090172424A1 (en) * 2007-12-31 2009-07-02 Qiong Cai Thread migration to improve power efficiency in a parallel processing environment
US20110067029A1 (en) * 2009-09-11 2011-03-17 Andrew Wolfe Thread shift: allocating threads to cores

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ACM: An Efficient Approach for Managing Shared Caches in Chip Multiprocessors (The 4th International Conference on High Performance and Embedded Architectures and Compilers, pages 358-362) January 200 *
ACM: An Efficient Approach for Managing Shared Caches in Chip Multiprocessors (The 4th International Conference on High Performance and Embedded Architectures and Compilers, pages 358-362) January 200*
Microarchitectural Approaches for Optimizing Power and Profitability in Multi-core Processors (Northwestern University, pages 75-88) October 2010. *
Microarchitectural Approaches for Optimizing Power and Profitability in Multi-core Processors (Northwestern University, pages 75-88) October 2010.*

Also Published As

Publication number Publication date
KR20130116903A (ko) 2013-10-24
US20120246446A1 (en) 2012-09-27
WO2012128769A1 (en) 2012-09-27
US8832414B2 (en) 2014-09-09

Similar Documents

Publication Publication Date Title
KR101531155B1 (ko) 멀티코어 아키텍처에서 직접 펫칭 이득의 동적 결정
Jevdjic et al. Unison cache: A scalable and effective die-stacked DRAM cache
US9760486B2 (en) Accelerating cache state transfer on a directory-based multicore architecture
US9164676B2 (en) Storing multi-stream non-linear access patterns in a flash based file-system
US9569270B2 (en) Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
TWI506444B (zh) 改良mmio請求處置之處理器及方法
CN101388824B (zh) 一种机群系统中分片存储模式下文件读取的方法及系统
US9053057B2 (en) Cache coherence directory in multi-processor architectures
KR101789190B1 (ko) 스크래치 패드 메모리 구조를 이용한 캐시 및 이를 포함하는 프로세서
US20140089590A1 (en) System cache with coarse grain power management
KR101635395B1 (ko) 멀티포트 데이터 캐시 장치 및 멀티포트 데이터 캐시 장치의 제어 방법
KR20150057798A (ko) 캐시 제어 장치 및 방법
KR20170109108A (ko) 메모리 장치를 포함하는 메모리 시스템 및 그의 동작 방법
CN112416437B (zh) 信息处理方法、信息处理装置和电子设备
US10613984B2 (en) Prefetch tag for eviction promotion
CN109753445A (zh) 一种缓存访问方法、多级缓存系统及计算机系统
CN112840331A (zh) 分层缓存系统中的预取管理
US9710303B2 (en) Shared cache data movement in thread migration
US20160070701A1 (en) Indexing accelerator with memory-level parallelism support
CN102043731A (zh) 一种存储系统的缓存系统
CN104252423A (zh) 基于多内核处理器的一致性处理方法和装置
CN104850508A (zh) 基于数据局部性的访存方法
CN112416436B (zh) 信息处理方法、信息处理装置和电子设备
Yoon et al. Self-learnable cluster-based prefetching method for DRAM-flash hybrid main memory architecture
US9552293B1 (en) Emulating eviction data paths for invalidated instruction cache

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: 20180329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 5