KR20060049710A - 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법 - Google Patents

칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법 Download PDF

Info

Publication number
KR20060049710A
KR20060049710A KR1020050058252A KR20050058252A KR20060049710A KR 20060049710 A KR20060049710 A KR 20060049710A KR 1020050058252 A KR1020050058252 A KR 1020050058252A KR 20050058252 A KR20050058252 A KR 20050058252A KR 20060049710 A KR20060049710 A KR 20060049710A
Authority
KR
South Korea
Prior art keywords
cache
block
processor
bit
request
Prior art date
Application number
KR1020050058252A
Other languages
English (en)
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 KR20060049710A publication Critical patent/KR20060049710A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache

Landscapes

  • Engineering & Computer Science (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

칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및 방법이 개시되어 있다. 일 실시예에 있어서, 이 방법은, 프로세서로부터의 수신된 요구에 따라 공유 캐시 내의 캐시 미스가 검출된 경우에 시스템 메모리로부터의 캐시 블록의 요구를 포함한다. 일단 캐시 블록이 요구되면, 수신된 요구의 프로세서 식별자 및 요구 타입에 따라 공유 캐시 내의 희생 블록이 선택된다. 일 실시예에 있어서, 프로세서 식별자 및 요구 타입에 따른 희생 블록의 선택은, 캐시 분할에 따른 이용가능한 캐시 웨이들의 서브세트로부터의 희생 블록의 선택을 제한하기 위해 세트 어소시어티브 공유 캐시의 분할에 기초한다. 다른 실시예들이 기재되고 청구된다.
프로세서, 컨트롤러, 공유 캐시, 캐시 분할, 희생 블록, 캐시 미스

Description

칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및 방법{AN APPARATUS AND METHOD FOR PARTITIONING A SHARED CACHE OF A CHIP MULTI-PROCESSOR}
본 발명의 다양한 실시예들은 첨부도면들을 참조하여 예시적으로 도시되어 있으며, 이것으로 한정하고자 하는 것은 아니다.
도 1은 일 실시예에 있어서, 공유 캐시의 분할을 제공하기 위해 컨트롤러를 포함하는 칩 멀티-프로세서(CMP)를 도시한 블록도.
도 2는 일 실시예에 있어서, 공유 캐시의 캐시 분할을 제공하기 위해 도 1의 공유 캐시 및 컨트롤러를 더 도시한 블록도.
도 3은 일 실시예에 있어서, 도 2의 후보 희생 블록 로직(candidate victim block logic)을 더 도시한 블록도.
도 4는 일 실시예에 있어서, 공유 캐시의 분할에 따라 공유 캐시 내의 희생 블록을 선택하기 위한 방법을 도시한 흐름도.
도 5는 일 실시예에 있어서, 칩 멀티-프로세서(CMP)의 공유 캐시를 분할하기 위한 방법을 도시한 흐름도.
도 6은 일 실시예에 있어서, 공유 캐시의 캐시 분할 방식에 따라 희생 블록을 선택하기 위한 방법을 도시한 흐름도.
도 7은 개시된 기술들을 이용한 설계의 에뮬레이션, 시뮬레이션 및 제조를 위한 다양한 설계 표현들 또는 포맷들을 도시한 블록도.
<도면의 주요 부분에 대한 부호의 설명>
100: 칩 멀티-프로세서(CMP) 110: 프로세서 코어(CPU)
112: 사설 코어 캐시 계층 130: 상호접속 네트워크
150: 공유 캐시 190: 시스템 메모리
192: 시스템 메모리 상호접속 200: 캐시 분할 로직
본 발명의 하나 또는 그 이상의 실시예들은 일반적으로 집적회로 및 컴퓨터 시스템 설계 분야에 관한 것이다. 특히, 본 발명의 하나 또는 그 이상의 실시예들은 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및 방법에 관한 것이다.
칩 멀티-프로세서(chip multi-processor: CMP)들은 동일 다이(die) 상에 여러 개의 프로세서들을 포함한다. 공유 캐시 CMP에서, 일부 레벨의 캐시는 공유되고, 칩 상의 프로세서들의 일부 또는 전부에 의해 액세스된다. 종종, 이러한 공유는, 프로세서들이, 스레드들(threads)이 데이터 및 명령들을 공유하는 멀티-스레드 소프트웨어 애플리케이션(multi-threaded software application)을 실행하기 때문에 이점이 있다. 캐시를 공유함으로써, 하나 이상의 프로세서에 의해 액세스되는 데이터 워드는 캐시 내의 단일 위치를 점유한다. 또한, 임의의 프로세서는, 다른 프로세서들에 의해 필요로 되고 허용된다면, 모든 캐시를 이용할 수 있다. 캐시를 공유하는 것의 단점은, 프로세서들이 이용가능한 것보다 많은 용량을 공동으로 요구하는 경우, 프로세서들은, 프로세서들이 보다 작은 사설 캐시들(private caches)을 갖는 경우보다 많은 전체 캐시 미스(miss)를 경험할 수 있다는 것이다.
세트 어소시어티브(set-associative) 캐시 메모리에서, 캐시 메모리 내의 요구된 데이터의 캐시 미스는, 요구된 블록에게 자리를 내주기 위해 캐시로부터의 블록의 퇴거를 요구하는데, 본 명세서에서는 이러한 캐시로부터 퇴거되는 블록을 "희생 블록(victim block)"이라고 칭한다. 세트 어소시어티브 캐시의 액세스는 캐시 메모리 내의 세트를 선택하는데 이용되는 캐시 요구의 인덱스에 따라 수행된다. 일단 세트가 선택되면, 캐시 요구의 태그값을 이용하여, 요구된 캐시 블록을 포함하는 선택된 세트 내의 웨이를 식별한다. 캐시 요구의 태그값의 비교가, 선택된 세트 내의 대응하는 웨이를 식별하는데에 실패한 경우, 캐시 미스가 검출된다. 공유 캐시에서, 캐시 미스에 응답하여, 퇴거할 희생 블록을 선택하는 것은, 캐시를 공유하는 프로세서들의 수에 따라 문제가 될 수 있다.
칩 멀티-프로세서(CMP)의 공유 캐시를 분할하기 위한 장치 및 방법이 개시된다. 일 실시예에 있어서, 이 방법은, 프로세서로부터의 수신된 요구에 따라 공유 캐시 내의 캐시 미스가 검출된 경우에 시스템 메모리로부터의 캐시 블록의 요구를 포함한다. 일단 캐시 블록이 요구되면, 수신된 요구의 프로세서 ID 및 요구 타입에 따라 공유 캐시 내의 희생 블록이 선택된다. 일 실시예에 있어서, 프로세서 ID 및 요구 타입에 따른 희생 블록의 선택은, 캐시 분할에 따른 이용가능한 캐시 웨이들의 서브세트로부터의 희생 블록의 선택을 제한하기 위해 세트 어소시어티브 공유 캐시의 분할에 기초한다. 일 실시예에 있어서, 어느 하나의 교체 알고리즘에 의해 이용될 수 있는 캐시 웨이들의 서브세트는 상이한 타입의 메모리 요구들 예를 들면, 수요(demand) 및 사전인출(prefetch) 요구들에 대해 상이할 수 있다.
다음의 설명에서는, 특정 용어를 이용하여 본 발명의 특징들을 설명한다. 예를 들어, "로직(logic)"이라는 용어는 하나 또는 그 이상의 기능들을 수행하도록 구성된 하드웨어 및/또는 소프트웨어를 나타낸다. 이를테면, "하드웨어"의 예들은, 집적회로, 유한 상태 기계(finite state machine) 또는 결합 로직을 포함하며, 이것으로 제한되거나 한정되지는 않는다. 집적회로는 마이크로프로세서, 주문형 반도체, 디지털 신호 처리기, 마이크로-컨트롤러 등과 같은 프로세서의 형태를 취할 수 있다.
"소프트웨어"의 예는 애플리케이션, 애플릿, 루틴 또는 일련의 명령들의 형태로 실행가능한 코드를 포함한다. 일 실시예에 있어서, 제조 물품은 일 실시예에 따라 프로세스를 수행하도록 컴퓨터(또는 다른 전자 장치들)를 프로그램하는데 이용될 수 있는 소프트웨어가 저장된 기계 또는 컴퓨터 판독가능한 매체를 포함할 수 있다. 컴퓨터 또는 기계 판독가능한 매체는 프로그램가능한 전자 회로; 휘발성 메모리(예를 들어, RAM(Random Access Memory) 등) 및/또는 비휘발성 메모리(예를 들어, 임의의 타입의 ROM(Read-Only Memory), 플래시 메모리)를 포함하는 반도체 메모리 장치; 플로피 디스켓; 광 디스크(예를 들어, 컴팩트 디스크 또는 DVD(digital video disk)); 하드 드라이브 디스크; 테이프 등을 포함하며, 이것으로 한정되지 않는다.
시스템(System)
도 1은 일 실시예에 있어서, 이용가능한 캐시 웨이들의 서브세트로부터 희생 블록의 선택을 제한하기 위해 공유 캐시를 분할하는 캐시 분할 로직(200)을 갖는 공유 캐시(150)를 포함하는 칩 멀티-프로세서(CMP)(100)를 도시한 블록도이다. 대표적으로, CMP(100)는 동일 다이 상에 제조된 복수의 프로세서 코어들(110(110-1,…, 110-N))을 포함한다. 도시된 바와 같이, 프로세서 코어들(CPUs)(110)은 상호접속 네트워크(130)에 연결되어 공유 캐시(150)에 액세스한다. 일 실시예에 있어서, 각각의 CPU(110)는 데이터의 임시 저장 또는 캐싱(caching)에 이용될 수 있는 사설 코어 캐시 계층(private core cache hierarchy)(112)을 포함한다.
일 실시예에 있어서, CPU들(110)은 상호접속 네트워크(130)에 연결된 시스템 메모리 상호접속(192)을 통해 시스템 메모리(190)에 액세스한다. 일 실시예에 있어서, 시스템 메모리(190)는 RAM(Random Access Memory), DRAM(dynamic RAM), SRAM(static RAM), SDRAM(synchronous DRAM), DDR-SDRAM(double data rate SDRAM), RDRAM(Rambus DRAM) 또는 각 메모리 모듈에서의 데이터의 고속 버퍼링을 지원할 수 있는 임의의 장치로 이루어진 메모리 모듈들을 포함하는 양면 메모리 패키지(double-sided memory package)를 포함할 수 있으며, 이것으로 한정되지 않는다.
대표적으로, 공유 캐시(150)는 CMP(100)의 CPU들(110)에 의해 공유된다. 종종, 이러한 공유는, CPU들(110)이 스레드들(threads)이 데이터 및 명령들을 공유하 는 멀티-스레드 소프트웨어 애플리케이션을 실행하며, 이것에 의해 저장 요구 조건을 감소시킬 뿐만 아니라, 단일 CPU(110)가 프로그램 요구 조건에 따라 전체 공유 캐시에 액세스할 수 있게 해주기 때문에, 이점이 있다. 불행하게도, 캐시(150)를 공유하는 것의 단점은, CPU들(110)이 공유 캐시(150)로부터 이용가능한 것보다 많은 용량을 공동으로 요구하는 경우, CPU들(110)은, CPU들(110)이 보다 작은 사설 캐시들(private caches)을 갖는 경우보다 많은 전체 캐시 미스(miss)를 경험할 수 있다는 것이다.
따라서, 일 실시예에 있어서, 공유 캐시(150)는 어느 프로세서들이 어느 웨이들에 할당할 수 있는지를 제한하는 것에 의해 분할된다. 일 실시예에 있어서, 공유 캐시(150)는 공유 캐시(150) 내의 세트를 식별하는 메모리 요구의 캐시 인덱스에 따라 액세스되는 세트 어소시어티브 공유 캐시이다. 캐시 인덱스에 기초하여, 요구의 태그값을 이용해서, 데이터의 요구된 블록을 포함하는 선택된 세트 내의 웨이를 식별한다. 그러나, 데이터의 요구된 블록이 그 세트 내에 포함되지 않은 경우("캐시 미스"), 요구된 블록에게 자리를 내주기 위해 공유 캐시(150)로부터 퇴거하기 위한 데이터의 블록(본 명세서에서는 "희생 블록(victim block)"이라고 칭함)이 선택된다.
일 실시예에 있어서, 각각의 CPU(110)는 해당 CPU가 실제로 처음에 캐시로 데이터를 가져갔는지 여부를, 공유 캐시(150)의 웨이들의 일부 및 전부에서 (사용) 데이터에 대해 히트(hit)하도록 허용된다. 그러나, 캐시 컨트롤러(도시되지 않음)가 캐시 미스를 검출하고, 요구된 블록에게 자리를 내주기 위해 공유 캐시(150)로 부터 희생 블록을 퇴거할 필요가 있는 경우, 일 실시예에 있어서, 캐시 분할 로직(200)은 메모리 요구가 수신되었던 CPU(110)에 따라 이용가능한 캐시 웨이들의 서브세트로부터의 희생 블록의 선택을 제한한다. 일 실시예에 있어서, 캐시 분할 로직(200)은 도 2에 도시된 바와 같이 공유 캐시(150)의 캐시 컨트롤러 내에 구현된다.
도 2에 도시된 바와 같이, 일 실시예에 있어서, 캐시 분할 로직은 공유 캐시(150)의 분할에 따른 이용가능한 캐시 웨이들의 서브세트로 희생 블록의 선택을 제한하기 위해, 캐시 컨트롤러(210) 및 후보 희생 블록 로직(230)과 함께, 교체 로직(220)을 포함한다. 일 실시예에 있어서, 교체 로직(220)에 의해 이용될 수 있는 캐시 웨이들의 서브세트는 상이한 타입의 메모리 요구들 예를 들면, 수요(demand) 및 사전인출(prefetch) 요구들에 대해 변경된다. 대표적으로, 공유 캐시(150)는 M-웨이들(W1(152-1), W2(152-2),…, WM(152-M))을 포함할 수 있다. 따라서, CPU(110)가 각각의 사설 코어 캐시(112) 내의 캐시 미스를 검출한 경우, CPU(110)는 공유 캐시(150)의 캐시 컨트롤러(210)에 캐시 요구를 전송할 수 있다.
일 실시예에 있어서, 캐시 요구와 연관된 인덱스값(204)을 디코더(160)에 제공하여, 공유 캐시(150) 내의 세트를 식별한다. 일단 세트가 식별되면, 캐시 요구와 연관된 태그값(202)을 공유 캐시(150)의 M-웨이들(152)(152-1,…152-M) 각각과 비교하여, 요구된 캐시 블록을 포함하는 웨이를 식별한다. 그러나, 캐시 미스가 검출된 경우, 일 실시예에 있어서, 후보 희생 블록 로직(230)과 교체 로직(220)은 인덱스(204)에 의해 식별된 세트 내의 희생 블록을 선택함에 있어서 캐시 컨트롤러 (210)를 제한한다.
대표적으로, N-프로세서들(CPU들(110-1,…,110-N))은 공유 캐시(150)의 M-웨이들(152)을 공유한다. 일 실시예에 있어서, 캐시 분할 로직(200)은 N-CPU들(110) 및 CPU들(110)에 의해 발행된 T-타입들의 메모리 요구들에 따라 공유 캐시(150)를 분할할 수 있다. 일 실시예에 있어서, N×T M-비트 레지스터들(웨이 레지스터들)은 D[i][j](여기서, i는 범위[0..N-1]이고, j는 범위[0..T-1]임)의 라벨이 붙는다. 일 실시예에 있어서, (d[i][j][b](여기서, b는 범위[0..M-1]임)로 표시된) 웨이 레지스터 내의 각각의 비트는, 타입 j의 캐시 요구의 캐시 미스에 대해 CPU i가 웨이 b에 할당할 수 있는지 여부((1) 또는 (0))를 나타낸다.
일 실시예에 있어서, 변수 "i"는 캐시 요구를 발행한 CPU의 프로세서 식별자를 가리킨다. 본 명세서에 기재된 바와 같이, 프로세서 식별자는 하나의 프로세서가 CMP(100)의 다른 프로세서와 구별될 수 있는 임의의 신호, 데이터 시퀀스 또는 다른 메커니즘을 의미하도록 정의된다. 일 실시예에 있어서, 하드웨어 식별자는 프로세서 식별자(CPU_ID)로서, CMP(100)의 각각의 프로세서 또는 CPU(110)에 할당된다. 대안적인 실시예에 있어서, 프로세서 식별자 또는 CPU_ID는 CMP(100) 내의 다른 프로세서로부터 각각의 프로세서를 구별하기 위한 일련 번호, 또는 다른 수치 장치 식별 수단(numeric device identification means)이다.
본 명세서에 기재된 바와 같이, "프로세서 식별자(processor identifier)"라는 용어는 대안적으로 요구자 식별자(requester identifier)라고 칭해지는데, 요구자 식별자는 요구자가 CMP(100)의 프로세서인 경우에 프로세서 식별자와 같다. 그 러나, 이 기술분야의 당업자들은, 본 명세서에 기재된 캐시 분할 방식이 프로세서들에 의해 발행된 캐시 요구들로 한정되지 않고, 예를 들어, 공유 캐시(150)에 메모리 컨트롤러가 발행한 캐시 요구와 같이, CMP(100)의 다른 장치들에 의해 발행된 캐시 요구를 청구된 기술 사상의 범위 내에서 포함할 수 있다는 것을 인식할 것이다.
일 실시예에 있어서, 웨이 레지스터들의 구현이 도 3을 참조하여 도시된 바와 같이 제공된다. 대표적으로, 탐색 테이블(d)(240)은 프로세서 식별자(CPU_ID)(206) 및 요구 타입(REQ_TYPE)(208)에 따라 인덱싱된다. 이 2개의 값에 기초하여, 탐색 테이블(240)은 본 명세서에서 "M-비트 마스크"라고도 칭해지는 웨이 레지스터(250)를 식별하는 위치(242)를 식별한다. 일 실시예에 있어서, M-비트 마스크는 공유 캐시(150)의 M-웨이들(152) 각각에 직접 대응한다.
따라서, 다시 도 2를 참조하면, 일 실시예에 있어서, M-비트 웨이 마스크(250)는 공유 캐시(150)로부터 유효 비트들(154)(154-1,…154-M)을 수신하는 로직 게이트들(170)(170-1,…,170-M)에 제공된다. 일단 제공되면, 교체 로직(220)은 세트된 M-비트 웨이 마스크(250)의 대응하는 비트들(252)(252-1,…,252-M)에 따라 캐시 인덱스(204)에서 희생 블록을 선택할 수 있다. 따라서, CPU i가 어드레스 a에 대해 사설 코어 캐시(112)에서 미스한 경우, CPU(110-i)는 공유 캐시(150)에 블록 a에 대한 요구를 전송한다. 일 실시예에 있어서, 공유 캐시 컨트롤러(210)는 블록 a가 공유 캐시(150)에 존재하는지를 검사한다.
블록 a가 존재하는 경우, 공유 캐시는 프로세서 i에 블록 a를 리턴한다. 그 러나, 블록 a가 존재하지 않는 경우, 공유 캐시는 시스템 메모리(190)에 블록 a에 대한 요구를 전송할 것이다. 일 실시예에 있어서, 캐시 컨트롤러(210)는 요구된 블록 a에게 자리를 내주기 위해 캐시 인덱스(204)에서 M-1 블록들 중 하나를 퇴거하도록 요구된다. 일 실시예에 있어서, 희생 블록의 선택은 공유 캐시(150)의 캐시 분할 로직(200)의 교체 로직(220)에 의해 수행된다.
일 실시예에 있어서, 교체 로직은 CPU(110-i)에 대한 타입 k의 메모리 요구에 대해 웨이 레지스터(250)(d[i][k])를 이용함으로써 희생 블록을 선택한다. 레지스터 d[i][k] 내의 비트 b가 세트되면(d[i][k][b]=1), 웨이 b는 퇴거를 위한 후보이다. 일 실시예에 있어서, 세트된 레지스터 d[i][k] 내에 복수의 비트들이 존재하는 경우, 퇴거할 희생 블록들에 대한 복수의 선택들이 존재한다. 일 실시예에 있어서, 교체 로직(220)은 복수의 후보 희생 블록들이 존재하는 경우에 퇴거를 위해 최저 최근 사용 웨이(least recently used way)를 선택한다. 이제, 전술된 실시예들 중 하나 또는 그 이상을 구현하기 위한 절차적 방법들이 제공된다.
동작(Operation)
도 4는 일 실시예에 있어서, 예를 들어, 도 2에 도시된 바와 같이, 분할된 공유 캐시로부터 희생 블록을 선택하기 위한 방법(300)을 도시한 흐름도이다. 프로세스 블록(326)에서, 공유 캐시 내의 캐시 미스가 검출되었는지를 판단한다. 캐시 미스가 검출되지 않은 경우("캐시 히트(cache hit)"), 프로세서 블록(328)에서, 칩 멀티-프로세서(CMP)의 프로세서 코어 또는 CPU와 같은 요구자에게 요구된 블록이 제공된다. 그렇지 않은 경우, 프로세스 블록(330)에서, 수신된 요구에 따라 요 구된 블록에 대한 요구가 시스템 메모리에 발행된다.
일 실시예에 있어서, 프로세스 블록(340)에서, 수신된 요구의 요구자 ID 및 요구 타입에 따라 공유 캐시로부터 퇴거하기 위한 희생 블록이 선택된다. 일 실시예에 있어서, 희생 블록의 선택은 도 2에 도시된 바와 같이, 교체 로직(220)에 의해 수행된다. 프로세스 블록(360)에서, 선택된 희생 블록은 예를 들어, 캐시 컨트롤러에 의해 공유 캐시로부터 퇴거된다. 프로세스 블록(370)에서, 요구된 캐시 블록이 요구자에게 제공된다. 프로세스 블록(380)에서, 요구된 캐시 블록은 희생 블록이 퇴거된 공유 캐시의 일부분 내에 저장된다.
도 5는 일 실시예에 있어서, 희생 블록들의 선택을 제한하기 위해 공유 캐시를 분할하기 위한 방법(310)을 도시한 흐름도이다. 프로세스 블록(312)에서, 캐시를 공유하는 복수의 요구자들로부터 CMP의 CPU와 같은 하나의 요구자가 선택된다. 프로세스 블록(314)에서, 선택된 요구자에 대해 메모리 요구 타입이 선택된다. 일단 선택되면, 프로세스 블록(316)에서, 공유 캐시의 M-웨이들 중 하나 또는 그 이상이 선택된 메모리 요구 타입에 대해 할당된다. 일 실시예에 있어서, 메모리 요구 타입들은 로드(load) 요구들, 저장 요구들, 데이터 사전인출, 데이터 추론(data speculation), 수요 요구들 등을 포함할 수 있으며, 이것으로 한정되지 않는다.
일 실시예에 있어서, 프로세스 블록(318)에서, 프로세스 블록(316)의 할당된 웨이들에 따라 M-비트 마스크가 생성된다. 예를 들어, 도 3을 참조하여 도시된 바와 같이, M-비트 웨이 마스크 또는 웨이 레지스터(250)는 공유 캐시(150) 내의 각각의 웨이에 대응하는 비트 필드(bit field)를 포함한다. 따라서, 캐시 인덱스 (204)에 의해 표시된 세트에서 퇴거를 위한 희생 블록이 선택된 경우, M-비트 웨이 마스크(250) 내의 각각의 세트 비트는 데이터의 요구된 블록에게 자리를 내주기 위해 퇴거될 수 있는 잠재적인 희생 블록을 식별한다.
일단 M-비트 웨이 마스크 또는 웨이 레지스터가 생성되면, 프로세스 블록(320)에서, 선택된 요구자의 요구자 식별자(예를 들어, CPU_ID) 및 요구 타입에 따라 테이블 내의 엔트리를 생성하여 M-비트 웨이 마스크를 식별한다. 일 실시예에 있어서, CPU_ID(206) 및 REQ_TYPE에 따라 인덱싱되는, 예를 들어, 도 3에 도시된 바와 같은 테이블이 형성된다. 프로세스 블록(322)에서, 각각의 메모리 요구 타입에 대하여 프로세스 블록들(314 내지 320)이 반복된다. 프로세스 블록(324)에서, 공유 캐시를 공유하는 칩 멀티-프로세서의 각각의 프로세서 코어와 같은 각각의 요구자에 대하여 프로세스 블록들(312 내지 322)이 반복된다.
도 6은 예를 들어, 도 3을 참조하여 도시된 바와 같이, 일 실시예에 있어서, 공유 캐시 내의 요구된 블록의 캐시 미스에 응답하여 공유 캐시로부터 희생 블록을 선택하기 위한 방법(350)을 도시한 흐름도이다. 프로세스 블록(352)에서, 요구자 및 요구 타입에 따라 테이블을 조회하여, 레지스터 또는 다른 데이터 저장 장치 내에 구현될 수 있는 M-비트 웨이 마스크를 식별한다. 프로세스 블록(354)에서, 예를 들어, 도 2를 참조하여 도시된 바와 같이, 수신된 요구의 캐시 인덱스에 따라 공유 캐시의 세트가 액세스된다. 프로세스 블록(356)에서, M-비트 웨이 마스크의 적어도 하나의 세트 비트에 따라 그 세트에 대한 적어도 하나의 희생 블록이 식별된다.
다시 말하면, 전술한 바와 같이, M-비트 웨이 마스크 내의 각각의 세트 비트는 수신된 요구의 인덱스에 의해 표시된 공유 캐시의 세트에서 후보 희생 블록을 식별한다. 일 실시예에 있어서, 도 2의 교체 로직(220)은 로직(230)으로부터 수신된 M-비트 마스크(250)가 복수의 세트 비트들을 포함하는 경우에 최저 최근 사용 웨이(152)를 선택할 것이다. 본 명세서에 기재된 바와 같이, 다양한 신호들은 액티브 하이(active high) 또는 액티브 로우(active low) 신호들을 표시할 수 있다. 따라서, 본 명세서에 기재된 바와 같이, "어서트(assert)", "어서팅(asserting)", "어서티드(asserted)", "세트(set)", "세팅(setting)", "디어서트(de-assert)", "디어서티드(de-asserted)", "디어서팅(de-asserting)"이라는 용어들 또는 다른 이와 같은 용어들은 액티브 로우 및 액티브 하이 신호들 중 어느 하나인 데이터 신호들을 가리킬 수 있다. 따라서, 신호와 연관된 경우 이러한 용어들은 액티브 로우 및 액티브 하이 신호들 중 어느 하나를 요구하거나 의미하기 위해 상호 교환가능하게 이용된다.
비록 전술한 실시예들 중 하나 또는 그 이상이 칩 멀티-프로세서의 공유 캐시를 참조하여 설명되어 있지만, 이 기술분야의 당업자들은, 본 명세서에 설명된 실시예들이 하나 또는 그 이상의 프로세서들에 의해 하나의 캐시가 공유되는 다른 시스템 구성들에 제공될 수 있다는 것을 인식할 것이다. 또한, 메모리 요구들 및 프로세서 ID에 따른 캐시의 분할은 전술한 실시예들을 구현하기 위한 일례로서 제공된다. 그러나, 희생 블록의 선택을 제한하기 위한 공유 캐시의 추가적인 분할 방식이 또한 가능하고, 이것은 전술한 실시예들의 범위 내에서 유지된다.
도 7은 개시된 기술들을 이용한 설계의 시뮬레이션, 에뮬레이션 및 제조를 위한 다양한 표현들 또는 포맷들을 도시한 블록도이다. 설계를 표현하는 데이터는 다수의 방식들로 그 설계를 표현할 수 있다. 먼저, 시뮬레이션들에 유용한 바와 같이, 하드웨어는, 본질적으로 설계된 하드웨어가 수행할 것으로 예측되는 컴퓨터 모델을 제공하는 하드웨어 기술 언어(hardware description language) 또는 다른 기능 기술 언어(functional description language)를 이용하여 표현될 수 있다. 하드웨어 모델(410)은 컴퓨터 메모리와 같은 저장 매체(400)에 저장될 수 있기 때문에, 모델은 의도한 바와 같이 실제로 기능하는지를 판단하기 위해 하드웨어 모델에 특정 시험 슈트(test suite)(430)를 적용하는 시뮬레이션 소프트웨어(420)를 이용하여 시뮬레이션될 수 있다. 일부 실시예들에 있어서, 시뮬레이션 소프트웨어는 매체에 기록, 저장 또는 수록되지 않는다.
설계의 임의의 표현에 있어서, 데이터는 임의의 형태의 기계 판독가능한 매체에 저장될 수 있다. 정보와 같이 전송을 위해 변조되거나 생성된 광 또는 전자 파(460); 메모리(450); 또는 디스크와 같은 자기 또는 광 저장장치(440)가 기계 판독가능한 매체일 수 있다. 이들 매체들 중 임의의 것은 설계 정보를 운반할 수 있다. 따라서, "운반(carry)"이라는 용어(예를 들어, 정보를 운반하는 기계 판독가능한 매체)는 저장 장치에 저장된 정보 또는 반송파(carrier wave)로 또는 반송파에 인코딩되거나 변조된 정보를 포함한다. 설계 또는 설계의 특징을 기술하는 비트들의 세트는, (반송파 또는 저장 매체와 같은 기계 판독가능한 매체에 포함된 경우) 그 자체의 안밖에 밀폐되거나, 다른 설계 또는 제조를 위해 다른 것들에 의해 이용될 수 있는 물품이다.
대안적인 실시예들
다른 실시예들에 대하여, 다른 시스템 구성이 이용될 수 있다는 것을 알 수 있을 것이다. 예를 들어, 시스템(100)은 칩 멀티 프로세서 시스템을 포함하지만, 적어도 하나의 CPU를 포함한 컴퓨터 시스템은 다양한 실시예들의 캐시 분할 및 희생 블록 선택 방식으로부터 이점이 있을 수 있다. 또한, 예를 들어, 서버, 워크스테이션, 데스크톱 컴퓨터 시스템, 게이밍 시스템(gaming system), 임베디드 컴퓨터 시스템(embedded computer system), 블레이드 서버(blade server) 등과 같은, 상이한 타입의 시스템 또는 상이한 타입의 컴퓨터 시스템이 다른 실시예들에 이용될 수 있다.
개시된 실시예들 및 최적의 모드를 포함하여, 다음의 청구범위에 의해 정의된 바와 같이 본 발명의 실시예들의 범위 내에서 개시된 실시예들에 대한 변경들 및 변형들이 이루어질 수 있다.
본 발명에 따르면, 공유 캐시의 분할에 따른 이용가능한 캐시 웨이들의 서브세트로부터 희생 블록의 선택을 제한할 수 있다.

Claims (30)

  1. 프로세서로부터의 수신된 요구에 따라 공유 캐시 내의 캐시 미스가 검출된 경우에 시스템 메모리로부터 요구된 캐시 블록을 요구하는 단계; 및
    상기 수신된 요구의 프로세서 식별자 및 요구 타입에 따라 상기 공유 캐시로부터 퇴거할 희생 블록을 선택하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 공유 캐시로부터 상기 선택된 희생 블록을 퇴거하는 단계;
    상기 프로세서에 상기 요구된 캐시 블록을 제공하는 단계; 및
    상기 희생 블록이 퇴거된 상기 공유 캐시의 일부분 내에 상기 요구된 캐시 블록을 저장하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 요구 단계 이전에,
    (a) N 프로세서들 및 T 메모리 요구 타입들에 따라 M-웨이 세트 어소시어티브 공유 캐시(M-way set-associative shared cache)를 분할하는 단계; 및
    (b) (a)의 상기 분할에 따른 상기 M-웨이 세트 어소시어티브 공유 캐시의 이용가능한 웨이들의 서브세트로, 희생 블록들의 프로세서 선택을 제한하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 희생 블록들의 프로세서 선택을 제한하는 단계는,
    (a) 프로세서를 선택하는 단계;
    (b) 상기 선택된 프로세서에 대한 메모리 요구 타입을 선택하는 단계;
    (c) 상기 선택된 메모리 요구 타입에, 상기 공유 캐시의 상기 M-웨이들 중 하나 또는 그 이상을 할당하는 단계;
    (d) (c)의 상기 할당된 웨이들에 따라 M-비트 마스크를 생성하는 단계;
    (e) 상기 선택된 프로세서의 프로세서 식별자 및 상기 요구 타입에 따라 테이블 내의 엔트리를 생성하여 상기 M-비트 마스크를 식별하는 단계;
    (f) 상기 T 메모리 요구 타입들 각각에 대하여 (b) 내지 (e)를 반복하는 단계; 및
    (g) 상기 N 프로세서들 각각에 대하여 (a) 내지 (f)를 반복하는 단계를 포함하는 방법.
  5. 제1항에 있어서,
    상기 선택 단계는,
    상기 프로세서 식별자 및 상기 요구 타입에 따라 테이블을 조회하여 M-비트 웨이 마스크를 식별하는 단계;
    상기 수신된 요구의 캐시 인덱스에 따라 상기 공유 캐시의 세트를 액세스하는 단계;
    상기 M-비트 웨이 마스크의 적어도 하나의 세트 비트에 따라 상기 세트로부터 적어도 하나의 희생 블록을 식별하는 단계; 및
    상기 식별된 희생 블록을 퇴거하는 단계를 더 포함하는 방법.
  6. 프로세서로부터의 수신된 요구에 따라 공유 캐시 내의 캐시 미스가 검출된 경우에 시스템 메모리로부터 요구된 캐시 블록을 요구하는 단계; 및
    상기 수신된 요구의 프로세서 식별자 및 요구 타입에 따라 상기 공유 캐시로부터 퇴거할 희생 블록을 선택하는 단계
    를 포함하는 방법을 수행하도록 시스템을 프로그램하는데 이용될 수 있는 명령들이 저장된 기계 판독가능한 매체를 포함하는 제조물.
  7. 제6항에 있어서,
    상기 방법은,
    상기 공유 캐시로부터 상기 선택된 희생 블록을 퇴거하는 단계;
    상기 프로세서에 상기 요구된 캐시 블록을 제공하는 단계; 및
    상기 희생 블록이 퇴거된 상기 공유 캐시의 일부분 내에 상기 요구된 캐시 블록을 저장하는 단계를 더 포함하는 제조물.
  8. 제6항에 있어서,
    상기 방법은, 상기 요구 단계 이전에,
    (a) N 프로세서들 및 T 메모리 요구 타입들에 따라 M-웨이 세트 어소시어티브 공유 캐시를 분할하는 단계; 및
    (b) (a)의 상기 분할에 따른 상기 M-웨이 세트 어소시어티브 공유 캐시의 이용가능한 웨이들의 서브세트로, 희생 블록들의 프로세서 선택을 제한하는 단계를 더 포함하는 제조물.
  9. 제6항에 있어서,
    상기 희생 블록들의 프로세서 선택을 제한하는 단계는,
    (a) 프로세서를 선택하는 단계;
    (b) 상기 선택된 프로세서에 대한 메모리 요구 타입을 선택하는 단계;
    (c) 상기 선택된 메모리 요구 타입에, 상기 공유 캐시의 상기 M-웨이들 중 하나 또는 그 이상을 할당하는 단계;
    (d) (c)의 상기 할당된 웨이들에 따라 M-비트 마스크를 생성하는 단계;
    (e) 상기 선택된 프로세서의 프로세서 식별자 및 상기 요구 타입에 따라 테이블 내의 엔트리를 생성하여 상기 M-비트 마스크를 식별하는 단계;
    (f) 상기 T 메모리 요구 타입들 각각에 대하여 (b) 내지 (e)를 반복하는 단계; 및
    (g) 상기 N 프로세서들 각각에 대하여 (a) 내지 (f)를 반복하는 단계를 포함 하는 제조물.
  10. 제6항에 있어서,
    상기 선택 단계는,
    상기 프로세서 식별자 및 상기 요구 타입에 따라 테이블을 조회하여 M-비트 웨이 마스크를 식별하는 단계;
    상기 수신된 요구의 인덱스에 따라 상기 공유 캐시의 세트를 액세스하는 단계;
    상기 M-비트 웨이 마스크의 적어도 하나의 세트 비트에 따라 상기 세트로부터 적어도 하나의 희생 블록을 식별하는 단계; 및
    상기 식별된 희생 블록을 퇴거하는 단계를 더 포함하는 제조물.
  11. 요구된 캐시 블록이 저장되어 있는지를 판단하기 위해 수신된 요구에 따라 공유 캐시를 검사하는 단계; 및
    상기 요구된 캐시 블록의 캐시 미스가 검출된 경우에 상기 수신된 요구의 요구자 식별자 및 요구 타입에 따라 상기 공유 캐시로부터 선택된 희생 블록을 퇴거하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 공유 캐시를 검사하는 단계 이전에,
    (a) 요구자를 선택하는 단계;
    (b) 상기 선택된 요구자에 대한 메모리 요구 타입을 선택하는 단계;
    (c) 상기 선택된 메모리 요구 타입에, 상기 공유 캐시의 상기 M-웨이들 중 하나 또는 그 이상을 할당하는 단계;
    (d) (c)의 상기 할당된 웨이들에 따라 M-비트 마스크를 생성하는 단계;
    (e) 상기 선택된 요구자의 요구자 식별자 및 상기 요구 타입에 따라 테이블 내의 엔트리를 생성하여 상기 M-비트 마스크를 식별하는 단계;
    (f) T 메모리 요구 타입들 각각에 대하여 (b) 내지 (e)를 반복하는 단계; 및
    (g) N 요구자들 각각에 대하여 (a) 내지 (f)를 반복하는 단계를 더 포함하는 방법.
  13. 제11항에 있어서,
    상기 선택된 희생 블록을 퇴거하는 단계는,
    프로세서 식별자 및 상기 요구 타입에 따라 테이블을 조회하여 M-비트 웨이 마스크를 식별하는 단계를 포함하고,
    상기 M-비트 웨이 마스크 내의 각각의 세트 비트는 상기 수신된 요구의 인덱스에 의해 표시된 상기 공유 캐시의 세트에서 후보 희생 블록을 식별하는 방법.
  14. 제13항에 있어서,
    상기 조회 단계는,
    상기 M-비트 마스크의 적어도 2개의 비트들이 세트된 경우에 상기 선택된 희생 블록으로서, 최저 최근 사용 웨이(least recently used way), 최근 사용 웨이(most recently used way) 및 랜덤 웨이(random way) 중 하나를 선택하는 단계를 더 포함하는 방법.
  15. 제11항에 있어서,
    프로세서로부터의 수신된 요구에 따라 상기 공유 캐시 내의 캐시 미스가 검출된 경우에 시스템 메모리로부터 캐시 블록을 요구하는 단계;
    상기 프로세서에 상기 요구된 캐시 블록을 제공하는 단계; 및
    상기 희생 블록이 퇴거된 상기 공유 캐시의 일부분 내에 상기 요구된 캐시 블록을 저장하는 단계를 더 포함하는 방법.
  16. 수신된 요구에 따라 요구된 캐시 블록이 저장되어 있는지를 판단하기 위해 공유 캐시를 검사하는 단계; 및
    상기 요구된 캐시 블록의 캐시 미스가 검출된 경우에 상기 수신된 요구의 요구자 식별자 및 요구 타입에 따라 상기 공유 캐시로부터 선택된 희생 블록을 퇴거하는 단계
    를 포함하는 방법을 수행하도록 시스템을 프로그램하는데 이용될 수 있는 명령들이 저장된 기계 판독가능한 매체를 포함하는 제조물.
  17. 제16항에 있어서,
    상기 방법은, 상기 공유 캐시를 검사하는 단계 이전에,
    (a) 요구자를 선택하는 단계;
    (b) 상기 선택된 요구자에 대한 메모리 요구 타입을 선택하는 단계;
    (c) 상기 선택된 메모리 요구 타입에, 상기 공유 캐시의 상기 M-웨이들 중 하나 또는 그 이상을 할당하는 단계;
    (d) (c)의 상기 할당된 웨이들에 따라 M-비트 마스크를 생성하는 단계;
    (e) 상기 선택된 요구자의 요구자 식별자 및 상기 요구 타입에 따라 테이블 내의 엔트리를 생성하여 상기 M-비트 마스크를 식별하는 단계;
    (f) T 메모리 요구 타입들 각각에 대하여 (b) 내지 (e)를 반복하는 단계; 및
    (g) N 요구자들 각각에 대하여 (a) 내지 (f)를 반복하는 단계를 더 포함하는 제조물.
  18. 제16항에 있어서,
    상기 선택된 희생 블록을 퇴거하는 단계는,
    프로세서 식별자 및 상기 요구 타입에 따라 테이블을 조회하여 M-비트 웨이 마스크를 식별하는 단계를 포함하고,
    상기 M-비트 웨이 마스크 내의 각각의 세트 비트는 상기 수신된 요구의 인덱스에 의해 표시된 상기 공유 캐시의 세트에서 후보 희생 블록을 식별하는 제조물.
  19. 제18항에 있어서,
    상기 조회 단계는,
    상기 M-비트 마스크의 적어도 2개의 비트들이 세트된 경우에 상기 선택된 희생 블록으로서, 최저 최근 사용 웨이, 최근 사용 웨이 및 랜덤 웨이 중 하나를 선택하는 단계를 더 포함하는 제조물.
  20. 제16항에 있어서,
    상기 방법은,
    프로세서로부터의 수신된 요구에 따라 상기 공유 캐시 내의 캐시 미스가 검출된 경우에 시스템 메모리로부터 캐시 블록을 요구하는 단계;
    상기 프로세서에 상기 요구된 캐시 블록을 제공하는 단계; 및
    상기 희생 블록이 퇴거된 상기 공유 캐시의 일부분 내에 상기 요구된 캐시 블록을 저장하는 단계를 더 포함하는 제조물.
  21. 요구된 블록의 캐시 미스가 검출된 경우에 시스템 메모리로부터 상기 요구된 블록을 요구하고, 수신된 요구의 요구자 식별자 및 요구 타입에 따라 상기 요구된 블록을 저장하기 위해 퇴거할 희생 블록을 선택하는 컨트롤러
    를 포함하는 장치.
  22. 제21항에 있어서,
    상기 컨트롤러는,
    상기 요구자 식별자 및 상기 요구 타입에 따라 테이블을 조회하여 M-비트 웨이 마스크를 식별하는 희생 블록 후보 로직을 더 포함하고,
    상기 M-비트 웨이 마스크 내의 각각의 세트 비트는 상기 수신된 요구의 캐시 인덱스에 의해 표시된 상기 공유 캐시의 세트에서 후보 희생 블록을 식별하는 장치.
  23. 제21항에 있어서,
    상기 컨트롤러는,
    N 프로세서들 및 T 메모리 요구 타입들에 따라 M-웨이 세트 어소시어티브 공유 캐시를 분할하고, 상기 M-웨이 세트 어소시어티브 공유 캐시의 이용가능한 웨이들의 서브세트로, 희생 블록들의 선택을 제한하는 캐시 분할 로직을 더 포함하는 장치.
  24. 제21항에 있어서,
    상기 컨트롤러는,
    상기 수신된 요구의 캐시 인덱스에 따라 상기 공유 캐시의 세트를 액세스하고, 상기 M-비트 웨이 마스크의 적어도 하나의 세트 비트에 따라 상기 세트로부터 적어도 하나의 희생 블록을 식별하고, 상기 식별된 희생 블록을 퇴거하는 교체 로 직을 더 포함하는 장치.
  25. 제24항에 있어서,
    상기 교체 로직은 상기 M-비트 마스크의 적어도 2개의 비트들이 세트된 경우에 상기 선택된 희생 블록으로서, 최저 최근 사용 웨이, 최근 사용 웨이 및 랜덤 웨이 중 하나를 더 선택하는 것인 장치.
  26. 상호접속 네트워크에 연결된 시스템 메모리;
    상기 상호접속 네트워크에 연결된 복수의 프로세서 코어들을 포함하는 칩-멀티-프로세서; 및
    상기 상호접속 네트워크에 연결된 공유 캐시
    를 포함하고,
    상기 공유 캐시는, 상기 복수의 프로세서들의 프로세서 코어로부터의 수신된 요구에 응답하여 상기 공유 캐시 내의 상기 캐시 블록의 캐시 미스가 검출된 경우에 상기 시스템 메모리로부터 캐시 블록을 요구하고, 상기 수신된 요구의 프로세서 식별자 및 요구 타입에 따라 상기 공유 캐시로부터 퇴거할 희생 블록을 선택하도록 캐시 컨트롤러에게 지시하는 캐시 분할 로직을 포함하는
    시스템.
  27. 제26항에 있어서,
    상기 시스템 메모리는 RDRAM을 포함하는 시스템.
  28. 제26항에 있어서,
    상기 캐시 분할 로직은,
    상기 프로세서 식별자 및 상기 요구 타입에 따라 테이블을 조회하여 M-비트 웨이 마스크를 식별하는 희생 블록 후보 로직을 더 포함하고,
    상기 M-비트 웨이 마스크 내의 각각의 세트 비트는 상기 수신된 요구의 캐시 인덱스에 의해 표시된 상기 공유 캐시의 세트에서 후보 희생 블록을 식별하는 시스템.
  29. 제26항에 있어서,
    상기 캐시 분할 로직은,
    상기 수신된 요구의 캐시 인덱스에 따라 상기 공유 캐시의 세트를 액세스하고, 상기 M-비트 웨이 마스크의 적어도 하나의 세트 비트에 따라 상기 세트로부터 적어도 하나의 희생 블록을 식별하고, 상기 식별된 희생 블록을 퇴거하는 교체 로직을 더 포함하는 시스템.
  30. 제29항에 있어서,
    상기 교체 로직은 상기 M-비트 마스크의 적어도 2개의 비트들이 세트된 경우에 상기 선택된 희생 블록으로서, 최저 최근 사용 웨이, 최근 사용 웨이 및 랜덤 웨이 중 하나를 더 선택하는 것인 시스템.
KR1020050058252A 2004-06-30 2005-06-30 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법 KR20060049710A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/882,048 2004-06-30
US10/882,048 US7558920B2 (en) 2004-06-30 2004-06-30 Apparatus and method for partitioning a shared cache of a chip multi-processor

Publications (1)

Publication Number Publication Date
KR20060049710A true KR20060049710A (ko) 2006-05-19

Family

ID=35464043

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050058252A KR20060049710A (ko) 2004-06-30 2005-06-30 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법

Country Status (5)

Country Link
US (1) US7558920B2 (ko)
EP (1) EP1612683A3 (ko)
KR (1) KR20060049710A (ko)
CN (1) CN100511184C (ko)
TW (1) TWI285810B (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101121606B1 (ko) * 2008-06-26 2012-02-28 러셀 에이치. Ⅲ 피시 스레드 최적화 멀티프로세서 아키텍처
US8341604B2 (en) 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8484516B2 (en) 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US8533530B2 (en) 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
KR101627456B1 (ko) * 2015-03-16 2016-06-07 성균관대학교산학협력단 그래픽 사용자 인터페이스 품질 개선방법 및 그 방법을 수행하는 프로그램이 저장된 기록매체
KR20160064720A (ko) * 2014-11-28 2016-06-08 삼성전자주식회사 캐시 메모리 장치 및 이를 포함하는 전자 시스템
KR101639943B1 (ko) * 2015-03-12 2016-07-15 성균관대학교산학협력단 범용 그래픽 프로세서의 공유 메모리를 캐시로 동작시키기 위한 공유 메모리 제어 방법 및 이를 이용한 범용 그래픽 프로세서

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1703404A1 (fr) * 2005-03-16 2006-09-20 Amadeus s.a.s Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants
US20070033371A1 (en) * 2005-08-04 2007-02-08 Andrew Dunshea Method and apparatus for establishing a cache footprint for shared processor logical partitions
US20070073974A1 (en) * 2005-09-29 2007-03-29 International Business Machines Corporation Eviction algorithm for inclusive lower level cache based upon state of higher level cache
US20070094664A1 (en) * 2005-10-21 2007-04-26 Kimming So Programmable priority for concurrent multi-threaded processors
US7415575B1 (en) * 2005-12-08 2008-08-19 Nvidia, Corporation Shared cache with client-specific replacement policy
US7730261B1 (en) 2005-12-20 2010-06-01 Marvell International Ltd. Multicore memory management system
US7962694B2 (en) * 2006-03-31 2011-06-14 Intel Corporation Partial way hint line replacement algorithm for a snoop filter
US8244980B2 (en) * 2006-06-21 2012-08-14 Intel Corporation Shared cache performance
US7434001B2 (en) * 2006-08-23 2008-10-07 Shi-Wu Lo Method of accessing cache memory for parallel processing processors
US7627718B2 (en) * 2006-12-13 2009-12-01 Intel Corporation Frozen ring cache
US8055851B2 (en) * 2006-12-14 2011-11-08 Intel Corporation Line swapping scheme to reduce back invalidations in a snoop filter
US20090037678A1 (en) * 2007-07-31 2009-02-05 Giles Chris M Protected portion of partition memory for computer code
JP5217432B2 (ja) * 2007-12-28 2013-06-19 富士通株式会社 セクタ機能付きキャッシュメモリ
US20090254712A1 (en) * 2008-04-02 2009-10-08 Naveen Cherukuri Adaptive cache organization for chip multiprocessors
US8223650B2 (en) * 2008-04-02 2012-07-17 Intel Corporation Express virtual channels in a packet switched on-chip interconnection network
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8140767B2 (en) * 2009-06-04 2012-03-20 International Business Machines Corporation Cache management through delayed writeback
US8543769B2 (en) * 2009-07-27 2013-09-24 International Business Machines Corporation Fine grained cache allocation
US9311245B2 (en) * 2009-08-13 2016-04-12 Intel Corporation Dynamic cache sharing based on power state
US8745618B2 (en) * 2009-08-25 2014-06-03 International Business Machines Corporation Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments
US20110197031A1 (en) * 2010-02-05 2011-08-11 Nokia Corporation Update Handler For Multi-Channel Cache
US8661200B2 (en) * 2010-02-05 2014-02-25 Nokia Corporation Channel controller for multi-channel cache
TWI420311B (zh) * 2010-03-18 2013-12-21 Univ Nat Sun Yat Sen 基於集合分模組之快取記憶體之分割方法
WO2012015430A1 (en) * 2010-07-30 2012-02-02 Hewlett-Packard Development Company, L.P. Computer system and method for sharing computer memory
JP5683205B2 (ja) 2010-10-18 2015-03-11 キヤノン株式会社 情報処理装置、情報処理装置を制御する制御方法、およびそのプログラム
US20120096295A1 (en) * 2010-10-18 2012-04-19 Robert Krick Method and apparatus for dynamic power control of cache memory
US9021206B2 (en) 2011-08-25 2015-04-28 International Business Machines Corporation Use of cache statistics to ration cache hierarchy access
US20130097387A1 (en) * 2011-10-14 2013-04-18 The Board Of Trustees Of The Leland Stanford Junior University Memory-based apparatus and method
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US8984368B2 (en) 2012-10-11 2015-03-17 Advanced Micro Devices, Inc. High reliability memory controller
US10140219B2 (en) 2012-11-02 2018-11-27 Blackberry Limited Multi-port shared cache apparatus
GB2509755B (en) 2013-01-14 2015-07-08 Imagination Tech Ltd Partitioning a shared cache using masks associated with threads to avoiding thrashing
US9213644B2 (en) 2013-03-07 2015-12-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Allocating enclosure cache in a computing system
WO2014143036A1 (en) 2013-03-15 2014-09-18 Intel Corporation Method for pinning data in large cache in multi-level memory system
US9195606B2 (en) 2013-03-15 2015-11-24 Intel Corporation Dead block predictors for cooperative execution in the last level cache
US10089238B2 (en) 2014-07-17 2018-10-02 Qualcomm Incorporated Method and apparatus for a shared cache with dynamic partitioning
US9612970B2 (en) 2014-07-17 2017-04-04 Qualcomm Incorporated Method and apparatus for flexible cache partitioning by sets and ways into component caches
WO2016097806A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
EP3055775B1 (en) * 2014-12-14 2019-08-21 VIA Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
US9898411B2 (en) * 2014-12-14 2018-02-20 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
EP3129890B1 (en) * 2014-12-14 2019-08-14 VIA Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
KR101817847B1 (ko) 2014-12-14 2018-02-21 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 메모리 접근 타입에 기초한 통로에 의해 버짓화된 캐시 메모리
US9563564B2 (en) * 2015-04-07 2017-02-07 Intel Corporation Cache allocation with code and data prioritization
US9971693B2 (en) 2015-05-13 2018-05-15 Ampere Computing Llc Prefetch tag for eviction promotion
US10180908B2 (en) 2015-05-13 2019-01-15 Qualcomm Incorporated Method and apparatus for virtualized control of a shared system cache
JP6424330B2 (ja) * 2015-10-13 2018-11-21 株式会社アクセル 情報処理装置、及び情報処理方法
EP3258382B1 (en) * 2016-06-14 2021-08-11 Arm Ltd A storage controller
US9928176B2 (en) * 2016-07-20 2018-03-27 Advanced Micro Devices, Inc. Selecting cache transfer policy for prefetched data based on cache test regions
US20180203807A1 (en) * 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
US11080810B2 (en) * 2017-04-21 2021-08-03 Intel Corporation Dynamically reconfigurable memory subsystem for graphics processors
US10482017B2 (en) * 2017-09-29 2019-11-19 Intel Corporation Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization
US10635590B2 (en) * 2017-09-29 2020-04-28 Intel Corporation Software-transparent hardware predictor for core-to-core data transfer optimization
TWI795470B (zh) * 2017-11-20 2023-03-11 南韓商三星電子股份有限公司 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體
KR101936951B1 (ko) * 2018-04-11 2019-01-11 주식회사 맴레이 메모리 제어 장치 및 이를 포함하는 메모리 시스템
US10761988B2 (en) * 2018-07-25 2020-09-01 Arm Limited Methods and apparatus of cache access to a data array with locality-dependent latency characteristics
US10802973B1 (en) 2019-07-01 2020-10-13 Bank Of America Corporation Data access tool
TWI760702B (zh) * 2020-03-03 2022-04-11 瑞昱半導體股份有限公司 資料寫入系統與方法
US10949352B1 (en) * 2020-03-05 2021-03-16 Nxp Usa, Inc. Data processing system having a shared cache
CN111651376B (zh) * 2020-07-06 2023-09-19 Oppo广东移动通信有限公司 数据读写方法、处理器芯片及计算机设备
WO2023165543A1 (zh) * 2022-03-02 2023-09-07 华为技术有限公司 共享缓存的管理方法、装置及存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5584014A (en) * 1994-12-20 1996-12-10 Sun Microsystems, Inc. Apparatus and method to preserve data in a set associative memory device
JP3348367B2 (ja) * 1995-12-06 2002-11-20 富士通株式会社 多重アクセス方法および多重アクセスキャッシュメモリ装置
US6745292B1 (en) * 1995-12-08 2004-06-01 Ncr Corporation Apparatus and method for selectively allocating cache lines in a partitioned cache shared by multiprocessors
US20010029574A1 (en) * 1998-06-18 2001-10-11 Rahul Razdan Method and apparatus for developing multiprocessore cache control protocols using a memory management system generating an external acknowledgement signal to set a cache to a dirty coherence state
US6421762B1 (en) * 1999-06-30 2002-07-16 International Business Machines Corporation Cache allocation policy based on speculative request history
KR100810781B1 (ko) * 1999-12-17 2008-03-06 엔엑스피 비 브이 캐시 메모리를 구비한 데이터 프로세서
US6757793B1 (en) * 2000-03-29 2004-06-29 Advanced Micro Devices, Inc. Reducing probe traffic in multiprocessor systems using a victim record table
US6889291B1 (en) * 2000-06-30 2005-05-03 Intel Corporation Method and apparatus for cache replacement for a multiple variable-way associative cache
US6745293B2 (en) * 2000-08-21 2004-06-01 Texas Instruments Incorporated Level 2 smartcache architecture supporting simultaneous multiprocessor accesses
US6668307B1 (en) * 2000-09-29 2003-12-23 Sun Microsystems, Inc. System and method for a software controlled cache
JP3620473B2 (ja) * 2001-06-14 2005-02-16 日本電気株式会社 共有キャッシュメモリのリプレイスメント制御方法及びその装置
US6748479B2 (en) * 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US7003631B2 (en) * 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341604B2 (en) 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8533530B2 (en) 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8484516B2 (en) 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
KR101121606B1 (ko) * 2008-06-26 2012-02-28 러셀 에이치. Ⅲ 피시 스레드 최적화 멀티프로세서 아키텍처
KR20160064720A (ko) * 2014-11-28 2016-06-08 삼성전자주식회사 캐시 메모리 장치 및 이를 포함하는 전자 시스템
KR101639943B1 (ko) * 2015-03-12 2016-07-15 성균관대학교산학협력단 범용 그래픽 프로세서의 공유 메모리를 캐시로 동작시키기 위한 공유 메모리 제어 방법 및 이를 이용한 범용 그래픽 프로세서
KR101627456B1 (ko) * 2015-03-16 2016-06-07 성균관대학교산학협력단 그래픽 사용자 인터페이스 품질 개선방법 및 그 방법을 수행하는 프로그램이 저장된 기록매체

Also Published As

Publication number Publication date
EP1612683A2 (en) 2006-01-04
US20060004963A1 (en) 2006-01-05
EP1612683A3 (en) 2008-04-30
CN1728112A (zh) 2006-02-01
TWI285810B (en) 2007-08-21
US7558920B2 (en) 2009-07-07
CN100511184C (zh) 2009-07-08
TW200615755A (en) 2006-05-16

Similar Documents

Publication Publication Date Title
KR20060049710A (ko) 칩 멀티-프로세서의 공유 캐시를 분할하기 위한 장치 및방법
TWI784084B (zh) 資料管理方法、多處理器系統以及非暫態電腦可讀取儲存媒體
US7711901B2 (en) Method, system, and apparatus for an hierarchical cache line replacement
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
KR101893544B1 (ko) 물리적 로우에 함께 저장된 태그 및 데이터를 구비한 dram 캐시
JP5090047B2 (ja) ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ
US8255628B2 (en) Structure for multi-level memory architecture with data prioritization
US9251069B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US20130254485A1 (en) Coordinated prefetching in hierarchically cached processors
TW201140319A (en) Replacing cache lines in a cache memory
JP2014517387A (ja) 大型データキャッシュのための効率的なタグストレージ
US10831675B2 (en) Adaptive tablewalk translation storage buffer predictor
JP2017503299A (ja) モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
JP2017507442A (ja) モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
US20080040549A1 (en) Direct Deposit Using Locking Cache
US20110055485A1 (en) Efficient pseudo-lru for colliding accesses
US9104583B2 (en) On demand allocation of cache buffer slots
US10353829B2 (en) System and method to account for I/O read latency in processor caching algorithms
US7293141B1 (en) Cache word of interest latency organization
US20120131305A1 (en) Page aware prefetch mechanism
US10877889B2 (en) Processor-side transaction context memory interface systems and methods
US11354246B2 (en) Memory-side transaction context memory interface systems and methods based on clock cycles and wires
JP2018163571A (ja) プロセッサ
JP2019521410A (ja) 別のキャッシュレベルからのヒントに基づくキャッシュエントリエイジの設定
US20160103766A1 (en) Lookup of a data structure containing a mapping between a virtual address space and a physical address space

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
E601 Decision to refuse application
E801 Decision on dismissal of amendment
J201 Request for trial against refusal decision
AMND Amendment
E801 Decision on dismissal of amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20090128

Effective date: 20110414