KR20050069934A - 캐시 교체 정책의 간이화한 구현을 갖춘 멀티스레드캐시의 방법 및 장치 - Google Patents

캐시 교체 정책의 간이화한 구현을 갖춘 멀티스레드캐시의 방법 및 장치 Download PDF

Info

Publication number
KR20050069934A
KR20050069934A KR1020047019732A KR20047019732A KR20050069934A KR 20050069934 A KR20050069934 A KR 20050069934A KR 1020047019732 A KR1020047019732 A KR 1020047019732A KR 20047019732 A KR20047019732 A KR 20047019732A KR 20050069934 A KR20050069934 A KR 20050069934A
Authority
KR
South Korea
Prior art keywords
cache
memory
directory
tags
address
Prior art date
Application number
KR1020047019732A
Other languages
English (en)
Other versions
KR100962057B1 (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 KR20050069934A publication Critical patent/KR20050069934A/ko
Application granted granted Critical
Publication of KR100962057B1 publication Critical patent/KR100962057B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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
    • 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
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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

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

멀티스레드 프로세서에서 사용하기 위한 캐시 메모리는 다수의 세트 연관 스레드 캐시들을 포함하고, 하나 이상의 스레드 캐시들(400') 각각은 캐시 메모리에서 요하는 교체 정책 저장량을 감소시키는 액세스 요청 어드레스 기반의 되찾기 프로세스를 구현한다. 적어도, 예시된 실시예에서 스레드 캐시들 중 소정의 캐시는 메모리 위치들의 복수의 세트들(Set 1-Set 4)을 구비한 메모리 어레이(402)와, 메모리 위치들 중 한 위치의 특정 어드레스의 적어도 일부에 각각이 대응하는 태그들(404-k)를 저장하는 디렉토리를 포함한다. 디렉토리(404)는 각각이 태그들(404-k) 중 복수의 태그들을 저장하는 복수의 엔트리들을 구비함으로써, 메모리 어레이 내에 메모리 위치들의 n 세트들이 있다면, 각 디렉토리 엔트리에 연관된 n개의 태그들(404-k)이 있다. 디렉토리(404)는 액세스 요청들과 메모리 어레이의 메모리 위치들간에 세트 연관 어드레스 매핑을 구현하는데 이용된다. 메모리 위치들 중 특정 위치 내 엔트리는 캐시 미스 이벤트에 관련하여 스레드 캐시로부터 되찾기를 행하기 위해서, 캐시 미스 이벤트에 관련된 액세스 요청내의 어드레스의 적어도 일부에 적어도 부분적으로 기초하여 선택된다.

Description

캐시 교체 정책의 간이화한 구현을 갖춘 멀티스레드 캐시의 방법 및 장치{Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy}
본 발명은 여기서 참조로서 첨부된 본 출원과 동시에 출원된 발명의 명칭이 "스레드 식별자에 기초한 캐시 되찾기를 갖춘 멀티스레드 캐시의 방법 및 장치(Method and apparatus for multithreaded cache with cache eviction based on thread identifier)"인 US 특허 출원 관리 번호 1007-2에서 기술된 발명에 관한 것이다.
본 발명은 일반적으로 컴퓨터 구조 분야에 관한 것으로, 특히 멀티스레드 프로세서에 사용하기 위한 캐시 메모리에 관한 것이다.
공지된 바와 같이, 흔히 프로세서들은 서로 다른 저장 요소들의 계층을 포함하는 메모리 시스템과 함께 사용된다. 이러한 메모리 시스템은 예를 들면, 여기 참조로 포함시키는 M. J. Flynn, "Computer Architecture: Pipelined and Parallel Processor Design," Jones and Bartlett Publishers, Boston, MA, 1995에 기술된 바와 같이, 보조기억장치(backing store), 주 메모리 및 캐시 메모리를 포함할 수 있다.
계층적 메모리 시스템에서 최상위 레벨 메모리를 나타내는 보조기억장치는 액세스 시간 면에서 보아 프로세서로부터 가장 멀리 있는 것으로 간주되어, 통상 액세스하는 데에 있어 많은 수의 사이클들을 요한다. 대표적인 예가 하드 드라이브이다. 보조기억장치는 기가바이트(GB) 정도의 용량과 약 10-3 초의 액세스 시간을 가질 수 있다.
주 메모리 또는 레벨 1 메모리는 액세스 시간에서 프로세서에 상당히 가까이 놓여있다. 대표적인 예가 다이나믹 랜덤 액세스 메모리(DRAM)이다. 이것은 메가바이트(MB) 정도의 전형적인 용량을 갖지만 보조기억장치보다는 훨씬 빠른 액세스 시간, 통상 10-8초 정도를 갖는다.
레벨 0 메모리 또는 간단히 "캐시"라고도 하는 캐시 메모리는 가장 빈번하게 사용되는 데이터에의 효율적이고 고속인 액세스를 제공하며, 액세스 시간 면에서 프로세서에 가장 가까이 놓여있다. 대표적인 예는 스태틱 랜덤 액세스 메모리(SRAM)이다. 이것은 통상적으로 킬로바이트(KB) 정도의 용량으로 소용량이지만 10-9 초 정도로 매우 빠른 액세스 시간을 갖는다.
캐시 메모리는 로컬리티(locality) 원리로 동작한다. 로컬리티는 공간적, 시간적, 또는 순차적 로컬리티를 포함할 수 있다. 공간적 로컬리티는 프로세서에 의해 실행되는 프로그램이 실행동안에 동일 또는 이웃한 메모리 위치들을 액세스할 가능성을 말한다. 시간적 로컬리티는 프로그램이 다수의 서로 다른 위치들에의 액세스들의 시퀀스를 포함하는 경우, 이 스퀀스에 이은 액세스들이 이 스퀀스에 연관된 위치들에 행해질 높은 확률이 있는 특성을 말한다. 순차 로컬리티는 특정 위치 s에 액세스가 행해졌다면, 그에 이은 액세스가 s+1 위치에 행해질 것이라는 특성을 말한다. 프로세서 데이터 액세스들을 여기서는 "참조들(references)"이라고도 칭한다.
캐시 제어기에 의해 구현되는 어드레스 매핑 제어 기능은 데이터를 캐시에 저장 및 레벨 1 또는 고 레벨 메모리로부터 캐시로의 이동 방법을 결정한다. 특정의 프로세스 데이터 액세스가 캐시에 의해 만족된다면, 이 액세스를 "캐시 히트(cache hit)"라 하며, 그렇지 않을 경우엔 이 캐시를 "캐시 미스(cache miss)"라 한다. 캐시는 통상적으로 고 레벨 메모리들로부터 여러 라인들의 메모리를 페치(fetch)한다. 라인의 크기는 일반적으로, 실행되는 프로그램들의 예상 공간 로컬리티에 일관성이 있도록 설계된다.
캐시는 요구에 의해 데이터를 페치하거나 데이터를 프리페치(prefetch)하도록 구성될 수도 있다. 대부분의 프로세서들은 요구에 의한 페치 방식을 사용하며 이에 의해 캐시 미스가 발생하였을 때 캐시 제어기는 현재의 라인을 되찾아 이를 프로세서가 참조하는 라인에 교체시켜 놓을 것이다. 프리페치 방식에서, 캐시 제어기는 어느 라인들이 필요하게 될 것인가의 예상을 시도하고 이들 라인들을 프로세서가 이들을 참조하기 전에 캐시에 이동시켜 놓는다.
종래의 캐시 메모리에서 사용되는 3가지 기본적인 유형들의 어드레스 매핑 제어는 완전 연관 매핑, 직접 매핑, 및 세트 연관 매핑이다. 완전 연관 매핑 및 직접 매핑 방식들을 도 1 및 도 2에 각각 도시하였다. 이들 도면에서, 캐시 제어기 및 최소한 이에 대응하는 매핑 로직 회로의 일부는 예시의 간이성과 명료성을 위해 생략되었다.
도 1은 완전 연관 어드레스 매핑을 이용하는 캐시 메모리(100)를 도시한 것이다. 캐시(100)는 메모리 어레이(102) 및 디렉토리(104)를 포함한다. 도면은 캐시가 액세스 요청(106)을 처리하는 방법을 도시한 것이다. 액세스 요청(106)은 태그(110), 오프셋(112), 및 바이트/워드 선택(B/W) 필드(114)를 포함한다. 예시적으로, 액세스 요청(106)의 부분들(110, 112, 114)은 길이가 각각 18비트, 3비트 및 3비트일 수 있다. 태그(110)는 디렉토리(104) 내 엔트리들과 비교된다. 캐시 히트는 디렉토리(104)의 특정 엔트리(104-k) 내 태그(120)가 액세스 요청(106)의 태그(110)와 일치할 경우의 결과이다. 이 경우, 메모리 어레이(102) 내 특정 라인(102-j)을 확인하기 위해서, 디렉토리(104)의 엔트리(104-k)에 저장되어 있는 대응하는 어드레스(122)가 액세스 요청(106)의 오프셋(112)에 관련하여 사용된다. 이어서, 요청된 라인은 프로세서에 보내진다. 캐시 미스는, 이 예에서는, 태그(110)가 디렉토리(104)에 저장된 어떤 태그와도 일치하지 않는 경우 발생한다. 도시된 바와 같은 메모리 어레이(102)는 각각 8바이트의 512 라인들로 배열된 4 kB의 데이터를 포함한다. 도면에 도시된 바와 같이, 메모리 어레이(102) 내 512 라인들 중 특정 라인은 3비트 오프셋(112)과 결합하여, 디렉토리(104)로부터 6비트 어드레스(122)를 포함하는 유일의 9비트 어드레스에 의해 확인된다.
도 2는 직접 매핑을 이용하는 캐시 메모리(200)를 도시한 것이다. 캐시(200)는 메모리 어레이(202) 및 디렉토리(204)를 포함한다. 도면은 캐시가 액세스 요청(206)을 처리하는 방법을 예시한 것이다. 액세스 요청(206)은 태그(210), 인덱스(211), 오프셋(212) 및 B/W 필드(214)를 포함한다. 예시적으로, 액세스 요청(206)의 부분들(210, 211, 212, 214)은 각각 길이가 10비트, 8비트, 3비트, 3비트일 수 있다. 직접 매핑 방식에 따라서, 인덱스(211)는 디렉토리(204) 내 특정 엔트리(204-k)를 확인하는데 사용된다. 특정 엔트리(204-k)는 태그(220)를 포함한다. 인덱스(211)만이 디렉토리(204) 내 특정 엔트리를 확인하는데 사용되므로, 상이한 어드레스들에 대한 액세스 요청은 디렉토리(204) 내 동일 위치에 매핑될 수도 있다. 그러므로, 결과적인 태그(220)는 비교기(222)에서 액세스 요청(206)의 태그(210)와 비교되고, 이의 매치(Match) 출력은 두 개의 태그들이 일치할 경우 논리 하이 레벨로 구동되며, 그렇지 않을 경우엔 논리 로우 레벨에 있게 된다. 매치 출력은 인덱스(211) 및 오프셋(212)에 근거하여 결정되는 것인, 메모리 어레이(202)의 특정 엔트리(202-j)가 프로세서에 공급될 것인지 여부를 판정하는 게이트(224)에 대한 인에이블 신호로서 사용된다. 캐시 히트는 디렉토리(204)의 엔트리(204-k)에 저장된 태그(220)가 액세스 요청(206)의 태그(210)와 일치할 경우의 결과이며, 일치하지 않으면 캐시 미스가 된다. 도시된 바와 같은 메모리 어레이(202)는 각각 8바이트의 2048 라인들로 배열된 16kB 데이터를 포함한다. 메모리 어레이(202) 내 2048 라인들 특정 라인은 3비트 오프셋(212)과 결합하여, 8비트를 포함하는 유일의 11비트 어드레스에 의해 확인된다.
세트 연관 캐시는 액세스 요청 어드레스에 대한 복수의 선택들이 존재할 수 있다는 것을 제외하곤 전술한 직접 매핑되는 캐시(200)와 유사하게 동작한다. 세트 연관 캐시의 메모리 어레이는 서로 다른 부분들 또는 세트들로 분리되고, 디렉토리는 이의 각 엔트리에 복수의 태그들을 포함하며, 각 태그는 세트들 중 하나에 대응한다. 각각의 액세스 요청 어드레스의 태그 부분은 액세스 요청의 인덱스 부분에 의해 확인되는, 디렉토리의 특정 엔트리 내 태그들 각각과 비교된다. 일치되는 것이 있으면, 프로세서에 보내기 위해 여러 세트들의 메모리 어레이 중 한 세트로부터의 한 라인을 선택하는 데에도 이 비교 결과가 사용된다.
전술한 캐시 메모리들 중 하나에서 캐시 미스의 경우, 대응하는 데이터는 일반적으로 캐시로부터 되찾아, 정확한 데이터가 페치되고 캐시에 저장된다. 어느 데이터를 다시 찾아야 할 것인가를 결정하기 위해 많은 교체 정책이 사용가능하다. 예를 들면, 가장 적게 최근에 사용된(Least Recently Used; LRU) 것을 교체하는 정책은 캐시 내 액세스되지 않은 가장 오래된 위치에 연관된 데이터를 항시 제거함으로써 시간적 로컬러티를 활용하는 것을 시도한다. n은 세트 연관 캐시 메모리 내 세트들의 수를 나타내는 n 자원들에 대해 LRU 교체 정책을 구현하기 위해 상태 정보를 유지하기 위해서, 한 공지의 방식은 n2 비트의 상태 정보를 필요로 한다. 여기 참조로 포함시키는, G.A. Blaauw et al., "Computer Architecture: Concepts and Evolution, "Addison-Wesley, Reading, MA, 1997에 기술된 바와 같이, n(n-1)/2 비트 상태 정보로 요건을 감소시키는, 보다 향상된 것들이 개발되었다. 캐시 메모리에 사용되는 다른 예인 교체 정책들은 무작위 교체 및 선입선출(FIFO) 교체를 포함한다.
도 1 및 도 2의 예의 메모리 캐시들은 프로세서가 메모리 위치로부터 데이터를 읽는 맥락에서 기술된다. 프로세서가 메모리 위치에 데이터를 기록하는 유사한 시나리오가 존재한다. 주요 차이점은 데이터가 캐시의 메모리 어레이 내 적합한 위치에 프로세서에 의해 기록되고 캐시는 주 메모리에 다시 이 데이터를 언제 기록할 것인가를 결정해야 한다는 것이다. 라이트-스루(write-through) 캐시는 즉시 주 메모리와 캐시 메모리 어레이 모두에 저장한다. 카피-백(copy-back) 캐시는 라인 내 어떤 위치에 기록이 발생하였다면 이 라인을 "더티(dirty)"로서 표시하고, 주 메모리는 이 라인이 되찾아지고 있고 더티로서 표시되었을 경우에만 갱신된다.
전술한 유형의 종래의 캐시 메모리들에 연관된 중요 문제는 이들이 멀티스레드 프로세서들, 즉 복수의 서로 구별되는 명령 시퀀스들 또는 "스레드들(thread)"에 사용하기엔 최적화되어 있지 않다는 것이다. 그러므로, 멀티스레드 프로세서 내 캐시 메모리의 구현을 위한 향상된 기술들에 대한 필요성이 존재한다.
도 1은 완전 연관 매핑을 구비한 종래의 캐시 메모리를 도시한 도면.
도 2는 직접 매핑을 구비한 종래의 캐시 메모리를 도시한 도면.
도 3A는 본 발명이 구현되는 예로서의 처리 시스템의 블록도.
도 3B는 도 3A의 처리 시스템에서 멀티스레드 프로세서의 보다 상세한 블록도로서 본 발명이 구현되는 멀티스레드 캐시를 도시한 도면.
도 4는 본 발명에 관련하여 이용될 수 있는 세트 완전 연관 어드레스 매핑을 구비한 캐시 메모리를 도시한 도면.
도 5는 본 발명의 실시예에 따른 캐시 메모리를 예시한 도면.
본 발명은 캐시 미스의 이벤트에서 캐시로부터 되찾기를 행할 하나 이상의 라인들 또는 다른 엔트리들의 결정을 제어하기 위해 액세스 요청내의 어드레스의 적어도 일부를 이용함으로서, 예시적인 실시예가 캐시 교체 정책의 간이화한 구현을 제공하는, 향상된 멀티스레드 캐시 메모리를 제공한다.
본 발명의 일 면에 따라서, 멀티스레드 프로세서에서 사용하기 위한 캐시 메모리는 다수의 세트 연관 스레드 캐시들을 포함하고, 하나 이상의 스레드 캐시들 각각은 캐시 메모리에서 요구되는 교체 정책 저장량을 감소시키는 어드레스 기반의 되찾기 프로세스를 구현한다.
실시예에서 하나 이상의 스레드 캐시들 각각은 복수의 메모리 위치의 세트들을 구비한 메모리 어레이와, 각각이 메모리 위치들 중 한 위치의 특정 어드레스의 적어도 일부에 상응하는 태그들을 저장하는 디렉토리를 포함한다. 디렉토리는 각각이 태그들 중 복수의 태그들을 저장하는 복수의 엔트리들을 구비함으로써, 메모리 어레이 내의 메모리 위치들의 n 세트들이 있다면, 각 디렉토리 엔트리에 연관된 n개의 태그들이 있다. 디렉토리는 액세스 요청들과 메모리 어레이의 메모리 위치들간에 세트 연관 어드레스 매핑을 구현하는데 이용된다. 메모리 위치들 중 특정 위치 내 엔트리는 캐시 미스 이벤트에 관련하여 스레드 캐시로부터 되찾기를 행하기 위해서, 캐시 미스 이벤트에 관련된 액세스 요청내 어드레스의 적어도 일부에 적어도 부분적으로 기초하여 선택된다.
보다 특정한 예로서, 디렉토리는 제1 및 제2 부분들로 분할될 수 있어, 디렉토리 내 소정의 엔트리는 각 부분에 두 개 이상의 태그들을 구비하고, 액세스 요청 어드레스의 태그 부분의 최하위 비트는 스레드 캐시로부터 되찾기를 행하기 위해 태그가 선택되는 곳인 디렉토리의 부분을 선택하는데 사용된다. 디렉토리의 특정 부분이 액세스 요청 어드레스의 태그 부분의 최하위 비트를 사용하여 선택된 후에, 선택된 부분으로부터 특정의 태그가 하나 이상의 교체 정책 비트들을 사용하여 결정될 수 있다. 특정의 태그 및 이의 대응하는 메모리 위치 엔트리는 캐시로부터 되찾게 된다.
본 발명은 캐시 메모리의 교체 정책의 상태 복잡도를 감소시켜, 그렇지 않았을 경우에 필요하게 될 것보다 적은 회로로 교체 정책을 구현할 수 있게 하고 이에 의해 앞서 기술한 종래의 방법들에 비해 회로 면적 및 전력 절감을 제공하는 잇점이 있다.
본 발명은 여기서는 멀티스레드 프로세서의 멀티스레드 캐시 메모리에 구현되는 것으로서 예시될 것이다. 그러나, 본 발명은 특정 멀티스레드 캐시 및 예시된 실시예의 프로세스 구성의 사용을 필요로 하지 않는다는 것과, 스레드 처리를 수반하고 또한 교체 정책 회로 복잡성의 감소가 요구되는 어떤 세트 연관 캐시 메모리 애플리케이션에 사용하기에 보다 적합하다는 것을 알 것이다.
본 발명에 따라 멀티스레드 캐시 메모리를 구현하는 예로서의 처리 시스템(300)을 도 3A, 도 3B, 도 4 및 도 5에 관련하여 기술한다. 도 3A는 처리 시스템(300)으로, 주 메모리(304)에 결합된 멀티스레드 프로세서(302)를 포함하는 것으로서 도시하고 있다. 도 3B는 멀티스레드 프로세서(302)의 한 가능한 구현을 보다 상세히 도시한 것이다. 이 실시예에서, 멀티스레드 프로세서(302)는 멀티스레드 캐시(310), 데이터 메모리(312), 캐시 제어기(314), 명령 디코더(316), 레지스터 파일(318), 및 한 세트의 산술 논리 유닛(ALU)(320)을 포함한다. 멀티스레드 캐시(310)는 여기서는 캐시 메모리라고도 칭한다. 도 3A 및 도 3B에 도시한 특정의 구성들은 당업자에 명백하게 되는 바와 같이, 예시의 명료성을 위해 단순화하였고 명백히 도시되지 않은 추가 또는 택일적 요소들이 포함될 수 있음을 부연해 둔다.
멀티스레드 캐시(310)는 복수의 스레드 캐시들(310-1, 310-2,... 310-N)을 포함하며, 여기서 N은 멀티스레드 프로세서(302)에 의해 지원되는 스레드 수를 나타낸다. 따라서, 각각의 스레드는 멀티스레드 캐시(310) 내 그와 연관된 대응하는 스레드 캐시를 갖는다. 마찬가지로, 데이터 메모리(312)는 도시된 바와 같이 데이터 메모리들(312-1, 312-2,... 312-N)로 표기한, N개의 개별 데이터 메모리들을 포함한다.
멀티스레드 캐시(310)는 캐시 제어기(314)를 통해 주 메모리(304)와 인터페이스한다. 캐시 제어기(314)는 주 메모리(304)로부터의 적합한 명령들이 멀티스레드 캐시(310)에 로딩되게 한다. 개개의 스레드 캐시들(310-1, 310-2,... 310-N)에 연관된 논리 회로 또는 이외 다른 처리 요소들과 더불어 동작하는, 이 실시예에서의 캐시 제어기(314)는 세트 연관 어드레스 매핑 및 LRU 교체 정책 중 적어도 일부를 구현한다. 세트 연관 어드레스 매핑 및 LRU 교체 정책을, 도 4 및 도 5와 함께 상세히 기술한다. 그러나, 본 실시예의 특정의 매핑 방법 및 LRU 교체 정책을 본 발명을 한정하는 것으로 해석되어서는 안 된다. 타 세트 연관 매핑 구현 및 또 다른 교체 정책, 이를테면 무작위 교체 또는 FIFO 교체 또한 본 발명에 관련하여 사용할 수 있다.
일반적으로, 멀티스레드 캐시(310)는 멀티스레드 프로세서(302)에 의해 실행될 명령들을 저장하는데 사용되며, 데이터 메모리(312)는 명령들에 의해 연산되는 데이터를 저장한다. 통상의 방식으로 명령들의 실행을 제어함에 있어 레지스터 파일(318) 및 ALU들(320)과 함께 동작하는 명령 디코더(316)에 의해서 명령들이 멀티스레드 캐시(310)로부터 페치된다. 316, 318, 320과 같은 멀티스레드 프로세서 요소들의 동작은 공지되어 있으므로 이에 대해 상세히 기술하지 않는다.
도 4는 멀티스레드 캐시(310)의 스레드 캐시들 중 주어진 캐시에 구현될 수 있는 세트 연관 어드레스 매핑을 예시한 것이다. 도 4에 도시된 바와 같이, 세트 연관 매핑은 본 발명의 향상된 어드레스 기반의 캐시 되찾기 기술들을 포함하지 않는다. 도 5는 본 발명에 따라 어드레스 기반의 캐시 되찾기를 포함하게 구성된 도 4의 스레드 캐시를 도시한 것이다.
먼저 도 4를 참조하면, 세트 연관 어드레스 매핑의 스레드 캐시(400)가 도시되었다. 스레드 캐시(400)는 도 3B의 멀티스레드 캐시(310) 내 스레드 캐시들 중 특정의 캐시에 대응하는 것으로 가정하고 멀티스레드 캐시(310) 내 다른 스레드 캐시들 전부 또는 서브세트(subset)는 유사한 방식으로 구현될 수 있다. 도시된 바와 같은 스레드 캐시(400)는 메모리 어레이(402) 및 디렉토리(404)를 포함한다. 메모리 어레이(402)는 서로 다른 다수의 메모리 위치들의 세트들을 포함한다. 이 실시예에서, 다수의 서로 다른 메모리 위치들의 개수는 4개이고, 세트들을 도시된 바와 같이 Set 1, Set 2, Set 3 및 Set 4로 표기하였는데, 그러나 다른 실시예들은 4개의 세트들 이상 또는 미만을 사용할 수도 있을 것이다. 디렉토리(404)는 복수의 엔트리들을 포함하고, 그 각각은 4개의 태그들을 저장한다. 디렉토리(404) 내 주어진 엔트리 내 태그들 각각은 메모리 어레이(402) 내 세트들 중 대응하는 세트 내 특정의 메모리 위치의 어드레스에 대응한다. 특히, 디렉토리(404) 내 주어진 엔트리(404-k)는 도시된 바와 같이 4개의 서로 구별되는 태그들을 포함하고, 그 각각은 메모리 어레이(402)의 세트들 중 하나, 즉 Set 1, Set 2, Set 3 또는 Set 4 내 대응하는 메모리 위치에의 매핑을 제어한다. 일반적으로, 이러한 유형의 세트 연관 캐시에서, 메모리 어레이(402)가 메모리 위치들의 n 세트들을 포함한다면, 디렉토리(404) 내 각 엔트리는 n 태그들을 저장한다. 이에 따라, 디렉토리(404)는 도면에서 1, 2, 3, 4로 표기된, 각각이 디렉토리(404)의 각 엔트리 내 단일의 태그만에 연관된, 4개의 부분들로 나뉘어지는 것으로 볼 수 있다.
도 4의 세트 연관 스레드 캐시(400)에서, 캐시에 의해 처리되는 예로서의 액세스 요청(406)은 태그(410), 인덱스(411), 오프셋(412) 및 B/W 필드(214)를 포함한다. 액세스 요청은 멀티스레드 프로세서(302)에서 명령 페치 동작에 관련하여 명령 디코더(316)로부터 발원할 수 있다. 예시적으로, 액세스 요청(406)의 부분들(410, 411, 412, 414)은 각각 길이가 12 비트, 6 비트, 3 비트 및 3 비트일 수 있다. 이들 필드 길이들 및 특정의 액세스 요청 구성은 단지 예로서 도시된 것이고, 본 발명의 범위를 한정하는 것으로 해석되어서는 안 된다. 세트 연관 매핑 방법에 따라, 인덱스(411)는 디렉토리(404) 내 특정 엔트리(404-k)를 확인하는데 사용된다. 이 실시예에서 각각의 다른 디렉토리 엔트리들처럼, 특정의 엔트리(404-k)는 도시된 바와 같이, 메모리 어레이(402)의 세트들(Set 1, Set 2, Set 3, Set 4) 중 하나에 각각이 연관된 4개의 태그들을 포함한다. 태그들 각각은 제한없이 이 실시예에서 태그(410)와 동일한 길이, 즉 12비트인 것으로 가정한다. 확인된 엔트리(404-k)의 이들 태그들 각각은 4개의 비교기들(416) 중 대응하는 비교기에서 태그(410)와 비교된다. 특히, 디렉토리 엔트리(404-k)의 부분(1)으로부터의 제1 태그는 비교기(416-1)에서 태그(410)와 비교되고, 부분(2)으로부터의 제2 태그는 비교기(416-2)에서 태그(410)와 비교되고, 부분(3)으로부터의 제3 태그는 비교기(416-3)에서 태그(410)와 비교되고, 부분(4)으로부터의 제4 태그는 비교기(416-4)에서 태그(410)와 비교된다. 비교기들(416)의 출력들은 한 세트의 선택 신호들을 형성하며, 각각은 세트들(Set 1, Set 2, Set 3 또는 Set 4) 중 대응하는 세트를 선택하기 위한 것이다.
디렉토리 엔트리(404-k)로부터 태그들 중 한 태그와 태그(410)간에 일치된 경우, 대응하는 선택신호가 인에이블, 예를 들면 논리 하이 레벨로 구동된다. 일치되지 않는다면, 캐시 미스이고 선택신호는 인에이블되지 않는다. 선택신호들 중 단지 하나의 신호만이 주어진 시간에 인에이블된다. 선택신호들은 멀티플렉서(418)의 선택신호 입력에 인가되며, 멀티플레서(418)는 인에이블되는 선택신호들 중 특정의 선택신호에 기초하여, 프로세서에 보내기 위해서 메모리 어레이(402)의 선택된 세트 내 대응하는 메모리 위치로부터 라인을 선택한다. 특히, 본 실시예에서, 요청된 라인은 멀티스레드 프로세서(302)에서 디코딩 및 실행을 위해 명령 디코더(316)에 보내질 수도 있다.
도시된 바와 같은 메모리 어레이(402)는 각각 8바이트의 2048 라인들로 배열된, 16Kb의 데이터를 포함한다. 세트들( Set 1, Set 2, Set 3 및 Set 4) 각각은 512 라인들을 포함한다. 이에 따라, 메모리 어레이(402)의 4개의 서로 구별되는 세트들 중 주어진 세트 내 라인들 중 특정의 라인은, 이 실시예에서는 3비트 오프셋(412)과 결합하여 6비트 인덱스(411)를 포함하는 것인, 유일의 9비트 어드레스에 의해 식별가능하다.
도 4의 실시예의 태그(410), 인덱스(411) 및 오프셋(412)은 액세스 요청(406)에 관련된 어드레스로서 집단으로 보인다. 여기서 사용되는 용어 "어드레스"는 어드레스 연관 정보를 포함하는 액세스 요청의 어떤 부분 또는 부분들을 포함하는 것으로서 이해해야 한다. 본 발명은 어떤 특정 액세스 요청 어드레스 포맷을 요구하지 않음이 인지된다. 더욱이, 액세스 요청(406)의 특정 포맷은 예시적인 방법일 뿐이고, 본 발명의 요구 조건이 아니다. 본 발명에 따른 소정의 액세스 요청은 다른 포맷들에서, 도 4에 도시된 것 보다 더 많거나 또는 적은 어드레스 정보를 포함할 수 있고, 당업자에 알려진 유형의 부가적인 또는 대안적인 정보가 포함될 수 있다.
본 발명의 일 면에 따라서, 주어진 세트의 메모리 어레이(402) 내 메모리 위치들 중 특정 위치의 라인 또는 타 엔트리는 적어도 부분적으로, 액세스 요청 어드레스에 기초하여 캐시 미스 이벤트에 관련해서 되찾기를 행하기 위해 선택된다. 전술한 바와 같이, 어드레스 기반의 되찾기 프로세스를, 도 5와 관련하여 상세히 기술한다.
도 5는 스레드 캐시(400')를 도시한 것이다. 스레드 캐시(400')는 도 3B의 멀티스레드 캐시(310) 내 스레드 캐시들 중 특정의 캐시에 대응하며, 멀티스레드 캐시(310) 내 타 스레드 캐시들 전부 또는 서브세트는 유사한 방식으로 구성될 수도 있다. 스레드 캐시(400')는 메모리 어레이(402), 디렉토리(404), 비교기들(416) 및 멀티플렉서(318)를 포함하며, 각각은 실질적으로, 액세스 요청(406)과 같은 액세스 요청들을 처리함에 있어 도 4와 관련하여 전에 기술된 바와 같이 동작한다. 예시적인 실시예내의 어드레스 기반 되찾기 프로세스는 액세스 요청(406)의 태그 부분(410)의 낮은 순서 또는 최하위 비트(LSB)(502)를 사용한다. 스레드 캐시(400')는 되찾기 엔트리 결정 멀티플렉서들(506, 508)과, 이 실시예에서 LRU 상태 레지스터(510) 형태인 교체 정책 저장요소를 또한 포함한다. 이 예시적인 실시예의 LRU 상태 레지스터(510)는 상태 정보의 단일 비트(512)를 저장하는 1비트 레지스터를 포함한다.
도 5에 스레드 캐시(400')의 요소들로서 도시되어 있긴 하나, 되찾기 엔트리 결정 멀티플렉서들(506, 508), 및 LRU 상태 레지스터는 각각이 스레드 캐시 전체 또는 부분적으로 이의 외부에 구현될 수 있다. 예를 들면, 주어진 스레드 캐시 내 어드레스 매핑 및 교체 정책 구현에 관계된 이들 및 타 요소들은 캐시 제어기(314)에서 전체 또는 일부가, 또는 멀티스레드 프로세서(302)의 또 다른 부분에 구현될 수도 있다.
되찾기 엔트리 결정 멀티플렉서들(506, 508)은 함께, 디렉토리(404)로부터 되찾을 특정 태그, 그럼으로써 메모리 어레이(402) 내 대응하는 메모리 위치로부터 되찾을 엔트리를 결정한다.
도 5에 도시된 바와 같은 디렉토리(404)는 도시된 바와 같이 좌측부분과 우측부분으로 나뉜다. 특히, 디렉토리(404)의 좌측부분은 2개의 맨 좌측의 부분들(1, 2)을 포함하고, 디렉토리(404)의 우측부분은 2개의 맨 우측부분(3, 4)을 포함한다. 이에 따라, 좌측 부분 및 우측 부분은 함께 전체 디렉토리(404)를 포괄하며, 좌측부분 및 우측부분 각각은 디렉토리(404)의 각 엔트리에 대해 2 개의 태그들을 포함한다. 액세스 요청(406)의 태그 부분(410)의 LSB(502)는 멀티플렉서(508)의 입력에 전달하기 위한 4개 입력들 중 2개를 선택하기 위해 멀티플렉서(506)에 선택신호로서 인가된다. 멀티플렉서들(506)에의 4개의 입력들은 도시된 바와 같이 tOL, tlL, tOR, t1R로서 표기하였고, 디렉토리의 좌측부분으로부터 태그 0, 디렉토리의 좌측부분으로부터 태그 1, 디렉토리의 우측부분으로부터 태그 0, 및 디렉토리의 우측부분으로부터 태그 1에 각각 대응한다. LSB(502)는 멀티플렉서(508)의 입력에 전달하기 위해 좌측 디렉토리 태그들 또는 우측 디렉토리 태그들을 선택하는데 사용된다.
이에 따라, 멀티플렉서(508)에의 입력은 좌측 디렉토리 태그들(t0L, t1L)이거나 또는 우측 디렉토리 태그들(tOR, tlR)이다. LRU 비트(512)는 멀티플렉서(508)에 선택신호로서 공급되고, 이에 의해서 스레드 캐시(400')로부터 되찾기를 행하기 위해, 인가된 좌측 또는 우측 디렉토리 태그들 중 하나를 선택하는데 사용된다. 일단 주어진 태그가 되찾기를 행하기 위해 선택되면, 태그 및 이의 대응하는 메모리 위치 엔트리는 통상의 방식으로 스레드 캐시로부터 되찾아질 수 있고, 예를 들면, 공지의 방식으로 새로운 엔트리 정보로 덮어쓰기가 행해질 수 있다.
액세스 요청 어드레스의 태그 부분(410)의 LSB(502)가 도 5 실시예의 캐시 되찾기 프로세스에서 사용되었지만, 이는 예일 뿐이다. 다른 실시예들에서, 예컨대, 태그 부분의 복수의 낮은 순서 비트들, 액세스 요청 어드레스의 다른 부분들의 하나 이상의 비트들 등과 같은 액세스 요청 어드레스의 다른 부분들이 사용될 수 있다. 주어진 실시예에서 사용된 특정 부분들은 일반적으로, 액세스 요청 포맷, 어드레스 포맷, 캐시 메모리 구성, 등과 같은 애플리케이션 특정 인자들에 의존할 것이다.
전술한 어드레스 기반의 캐시 되찾기 기술은 종래의 기술들에 비해 현저한 개선을 제공한다. 예를 들면, 이 기술은 LRU 교체 정책을 구현하기 위해서 저장되어야 하는 상태 정보량을 현격히 감소시킨다. 특히, 4개의 세트, 즉 n=4인 세트 연관 캐시에 기초한 전술의 예시한 실시예에서, LRU 교체 정책을 위해 상태 정보를 저장하는데 있어서는 단지 단일의 1비트 레지스터만이 요구된다. 앞서 언급한 종래의 기술들은 n2 또는 n(n-1)/2 비트의 교체 정책 상태 정보를 요하며, 전술한 본 실시예에서의 어드레스 기반의 되찾기 기술은 단지 단일 비트의 액세스 요청 어드레스의 사용을 가정할 때 n(N-2)/8 비트의 상태 정보를 필요로 한다. 종래의 기술에 비해 이 실시예에 의해 제공된 개선을 다음의 표에서 예들 든 n의 값들의 함수로서 보였다.
세트들(n)의 수 n2 n(n-1)/2 n(n-2)/8
2 4 1 0
4 16 6 1
8 64 28 6
16 256 120 28
32 1024 496 120
64 4096 2016 496
또한, 교체 정책을 구현하기 위해 저장되어야 하는 상태정보량을 감소시킴으로써, 본 발명은 회로 면적 및 멀티스레드 캐시 메모리의 전력요건의 감소를 제공한다.
전술한 바와 같이, 상기 표는 본 발명의 캐시 되찾기 기술을 구현함에 있어 단일 비트의 액세스 요청 어드레스만의 사용을 가정한 것이다. 그러나, 1비트 이상의 액세스 요청 어드레스를 사용하는 것이 가능하다. 예를 들면, n=8인 실시예는 4부분으로 분할된 디렉토리를 구비하고, 각 부분은 디렉토리 엔트리 당 2개의 태그들을 가지며, 액세스 요청 어드레스의 태그 부분의 2개의 하위 비트들은 교체 정책 상태정보에 기초하여 되찾기를 행하기 위해 태그를 선택하게 되는 4개의 부분들 중 특정의 부분을 선택하는데 사용된다. 이 예에서는 도 5의 실시예와 같이, 단지 단일 비트의 교체 정책 상태정보만이 필요하다.
캐시 메모리의 메모리 어레이 내 메모리 위치들에의 판독 액세스들에 관련하여 기술되었으나, 본 발명은 이러한 위치들에의 기록 액세스들에 사용될 수도 있다. 그렇지 않다면, 종래의 기록 기술들은 기록 액세스들을 위한 본 발명의 기술을 구현하기 위해 본 개시된 바에 기초하여 간단하게 수정될 수 있다.
전술한 바와 같이, 본 발명은 세트 연관 매핑을 이용하도록 구성될 수 있는 임의의 멀티스레드 프로세서에 구현될 수 있다. 이러한 프로세서의 보다 특정의 예는 여기 참조로 포함시키는 2001년 12월 20일에 출원된 미국 가출원 60/341,289에 상세히 기재되어 있다.
본 발명의 전술한 실시예는 단지 예를 들기 위한 것이며, 첨부된 청구항들의 범위 내의 많은 택일적 실시예들이 당업자에게 명백할 것이다. 예를 들면, 소정의 스레드 캐시 디렉토리는 도 5와 같이 좌측 및 우측 부분 이상의 것으로 분할될 수 있으며 즉, 디렉토리 엔트리로부터 되찾기를 행하기 위해 특정의 태그를 선택하는데 사용되는 액세스 요청 어드레스 및 교체 정책 비트들의 수에 적절한 증가와 함께, 3개의 이상의 서로 구별되는 부분들로 분할될 수 있다. 예시된 실시예에서 되찾기 엔트리 결정을 구현하는데 사용되는 특정의 회로 구성들은 다른 구성들로 교체될 수 있다. 위에 나타낸 바와 같이, n 세트들의 수는 다를 수 있다. 또한, 무작위 교체 또는 FIFO 교체와 같은 다른 교체 정책들이 본 실시예의 LRU 교체 정책 대신으로 사용될 수 있다. 무작위 교체에 관한 보다 특정한 예로서, 소정의 디렉토리 내에 특정의 무작위 교체가 행해지게 될 곳을 결정하기 위해서 한 비트 이상의 액세스 요청 어드레스가 사용될 수 있다.

Claims (15)

  1. 복수의 스레드 캐시들(thread caches)을 포함하는, 멀티스레드 프로세서에 사용하기 위한 캐시 메모리에 있어서, 상기 스레드 캐시들 중 적어도 소정의 한 캐시는,
    복수의 메모리 위치들의 세트들을 포함하는 메모리 어레이; 및
    상기 메모리 위치들 중 한 위치의 특정 어드레스의 적어도 일부에 각각 대응하는 태그들을 저장하기 위한 디렉토리(directory)로서, 상기 태그들 중 복수의 태그들을 각각 저장하는 복수의 엔트리(entry)들을 구비하는, 상기 디렉토리를 포함하고,
    상기 메모리 위치들 중 특정 위치 내 엔트리는 캐시 미스 이벤트(cache miss event)에 관련하여 상기 소정의 스레드 캐시로부터 되찾기(eviction)를 행하기 위해 상기 캐시 미스 이벤트에 관련된 액세스 요청내의 어드레스의 적어도 일부에 적어도 부분적으로 기초하여 선택되는, 캐시 메모리.
  2. 제1항에 있어서, 상기 복수의 메모리 위치들의 세트들은 메모리 위치들의 n 세트들을 포함하고, 상기 디렉토리 엔트리들 각각은 n 태그들을 저장하는, 캐시 메모리.
  3. 제2항에 있어서, 상기 소정의 스레드 캐시에 저장되는 교체 정책 상태정보의 총 수는 대략 n(n-2)/8로 주어지는, 캐시 메모리.
  4. 제1항에 있어서, 상기 소정의 스레드 캐시는 세트 연관 캐시로서 동작하는, 캐시 메모리.
  5. 제1항에 있어서, 상기 어드레스의 상기 부분은 상기 어드레스의 태그 부분의 하나 이상의 비트들을 포함하는, 캐시 메모리.
  6. 제1항에 있어서, 상기 소정의 스레드 캐시는 하나 이상의 교체 정책 비트들을 저장하기 위한 레지스터를 더 포함하고, 상기 소정의 스레드 캐시로부터 되찾기를 행하기 위해 선택되는 상기 메모리 위치 엔트리는 상기 액세스 요청 어드레스 및 상기 하나 이상의 저장된 교체 정책 비트들에 적어도 부분적으로 기초하여 선택되는, 캐시 메모리.
  7. 제6항에 있어서, 상기 액세스 요청 어드레스의 하나 이상의 비트들은 상기 소정의 스레드 캐시로부터 되찾을 상기 엔트리의 결정을 위해 태그가 선택되는 곳인 상기 디렉토리의 특정 부분을 결정하는데 사용되고, 상기 특정 부분은 그 주어진 엔트리 내에, 그에 연관된 복수의 태그들을 구비하고, 또한, 상기 하나 이상의 저장된 교체 정책 비트들은 상기 액세스 요청 어드레스의 하나 이상의 비트들에 기초하여 결정되는 상기 특정 부분에 연관된 상기 복수의 태그들로부터의 상기 선택된 태그를 결정하는, 캐시 메모리.
  8. 제1항에 있어서, 상기 소정의 스레드 캐시는 상기 스레드 캐시로부터 되찾을 상기 특정 엔트리를 선택함에 있어 가장 적게 최근에 사용된(least recently used; LRU) 교체 정책을 이용하는, 캐시 메모리.
  9. 제1항에 있어서, 상기 액세스 요청 어드레스의 태그 부분의 하나 이상의 최하위 비트들은 되찾을 상기 메모리 위치 엔트리에 대응하는 태그가 선택되는 곳인 상기 디렉토리의 특정 부분을 결정하는데 이용되는, 캐시 메모리.
  10. 제1항에 있어서, 상기 디렉토리는 제1 부분 및 제2 부분으로 구성되고, 상기 디렉토리의 엔트리들 각각은 상기 디렉토리의 상기 제1 부분에 하나 이상의 연관된 태그들 및 상기 디렉토리의 상기 제2 부분에 하나 이상의 연관된 태그들을 구비하며, 또한, 상기 액세스 요청 어드레스의 상기 태그 부분의 최하위 비트는 되찾을 상기 엔트리에 대응하는 태그가 상기 디렉토리의 상기 제1 부분으로부터 선택될 것인지 상기 디렉토리의 상기 제2 부분으로부터 선택될 것인지를 결정하는데 사용되는, 캐시 메모리.
  11. 제1항에 있어서, 적어도 상기 소정의 스레드 캐시에 연관된 되찾기 결정 회로를 더 포함하고,
    상기 디렉토리의 소정의 엔트리에서 총 개수의 태그들의 서브세트(subset)를, 상기 액세스 요청 어드레스의 하나 이상의 비트들에 기초하여 선택하는 제1 선택회로; 및
    상기 디렉토리로부터 되찾기를 행하기 위해 상기 태그들의 서브세트의 태그들 중 특정 태그를, 상기 소정의 스레드 캐시에 연관된 하나 이상의 교체 정책 비트들에 기초하여 선택하는 제2 선택 회로를 포함하는, 캐시 메모리.
  12. 제11항에 있어서, 상기 제1 선택 회로는 상기 태그들 중 하나에 각각 대응하는 복수의 입력들 및 상기 액세스 요청 어드레스의 하나 이상의 비트들에 대응하는 선택 신호를 구비한 제1 멀티플렉서를 포함하는, 캐시 메모리.
  13. 제12항에 있어서, 상기 제2 선택회로는 상기 제1 멀티플렉서의 출력에 각각 대응하는 복수의 입력들 및 상기 하나 이상의 교체 정책 비트들에 대응하는 선택 신호를 구비한 제2 멀티플렉서를 포함하는, 캐시 메모리.
  14. 멀티스레드 프로세서에 있어서,
    상기 프로세서에 의해 실행될 명령들을 저장하는 캐시 메모리;
    상기 명령들에 따라 처리될 데이터를 저장하는 데이터 메모리;
    상기 캐시 메모리로부터 페치된 명령들을 디코딩하는 명령 디코더; 및
    상기 디코드된 명령들에 따라 상기 데이터에 대해 연산(operation)을 수행하는 하나 이상의 산술 논리 유닛들을 포함하고,
    상기 캐시 메모리는 복수의 스레드 캐시들을 포함하고, 상기 스레드 캐시들 중 적어도 소정의 스레드 캐시는,
    복수의 메모리 위치들의 세트들을 포함하는 메모리 어레이; 및
    상기 메모리 위치들 중 한 위치의 특정 어드레스의 적어도 일부에 각각 대응하는 태그들을 저장하기 위한 디렉토리로서, 상기 태그들 중 복수의 태그들을 각각 저장하는 복수의 엔트리들을 구비하는, 상기 디렉토리를 포함하고,
    상기 메모리 위치들 중 특정 위치내의 엔트리는 캐시 미스 이벤트에 관련하여 상기 소정의 스레드 캐시로부터 되찾기를 행하기 위해 상기 캐시 미스 이벤트에 관련된 액세스 요청내의 어드레스의 적어도 일부에 적어도 부분적으로 기초하여 선택되는, 멀티스레드 프로세서.
  15. 멀티스레드 프로세서에서 복수의 스레드 캐시들을 포함하는 캐시 메모리를 제어하는 방법으로서, 상기 스레드 캐시들 중 적어도 소정의 한 캐시는 복수의 메모리 위치들의 세트들을 구비하는 메모리 어레이, 및 상기 메모리 위치들 중 한 위치의 특정 어드레스의 적어도 일부에 각각 대응하는 태그들을 저장하기 위한 디렉토리로서, 상기 태그들 중 복수의 태그들을 각각 저장하는 복수의 엔트리들을 구비하는, 상기 디렉토리를 포함하는, 상기 캐시 메모리 제어 방법에 있어서,
    상기 소정의 스레드 캐시에서 캐시 미스 이벤트의 발생을 판정하는 단계; 및
    상기 메모리 위치들 중 특정 위치 내 엔트리를, 상기 캐시 미스 이벤트에 관련하여 상기 소정의 스레드 캐시로부터 되찾기를 행하기 위해 상기 캐시 미스 이벤트에 관련된 액세스 요청내의 어드레스의 적어도 일부에 적어도 부분적으로 기초하여 선택하는 단계를 포함하는, 캐시 메모리 제어방법.
KR1020047019732A 2002-06-04 2003-06-03 캐시 치환 폴리시의 간이화한 구현을 갖춘 멀티스레드 캐시의 방법 및 장치 KR100962057B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/161,874 US6912623B2 (en) 2002-06-04 2002-06-04 Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US10/161,874 2002-06-04

Publications (2)

Publication Number Publication Date
KR20050069934A true KR20050069934A (ko) 2005-07-05
KR100962057B1 KR100962057B1 (ko) 2010-06-08

Family

ID=29583502

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047019732A KR100962057B1 (ko) 2002-06-04 2003-06-03 캐시 치환 폴리시의 간이화한 구현을 갖춘 멀티스레드 캐시의 방법 및 장치

Country Status (7)

Country Link
US (1) US6912623B2 (ko)
EP (1) EP1532531A4 (ko)
JP (1) JP2005528695A (ko)
KR (1) KR100962057B1 (ko)
CN (1) CN1317644C (ko)
AU (1) AU2003245384A1 (ko)
WO (1) WO2003102781A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875178B2 (en) 2013-09-27 2018-01-23 Samsung Electronics Co., Ltd. Method and apparatus for controlling cache memory

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925536B2 (en) * 2002-11-05 2005-08-02 Newisys, Inc. Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems
US6920532B2 (en) * 2002-11-05 2005-07-19 Newisys, Inc. Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems
US6934814B2 (en) * 2002-11-05 2005-08-23 Newisys, Inc. Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
WO2005116837A1 (en) * 2004-05-26 2005-12-08 Intel Corporation Automatic caching generation in network applications
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US20070223599A1 (en) * 2005-07-25 2007-09-27 Sysair, Inc., A Delaware Corporation Cellular PC modem architecture and method of operation
US7908236B2 (en) * 2006-07-20 2011-03-15 International Business Machines Corporation Using multiple data structures to manage data in cache
US8035650B2 (en) * 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs
US8819099B2 (en) * 2006-09-26 2014-08-26 Qualcomm Incorporated Software implementation of matrix inversion in a wireless communication system
US9110726B2 (en) * 2006-11-10 2015-08-18 Qualcomm Incorporated Method and system for parallelization of pipelined computations
US7610448B2 (en) * 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
CN101689143B (zh) * 2007-06-20 2012-07-04 富士通株式会社 高速缓存控制装置以及控制方法
EP2602710A1 (en) * 2007-11-05 2013-06-12 Aspen Acquisition Corporation Method of encoding register instruction fields
WO2009097444A1 (en) * 2008-01-30 2009-08-06 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
KR20100133964A (ko) * 2008-03-13 2010-12-22 아스펜 액퀴지션 코포레이션 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법
JP2011530744A (ja) 2008-08-06 2011-12-22 アスペン・アクイジション・コーポレーション 停止可能および再始動可能dmaエンジン
CN101751537B (zh) * 2008-12-01 2012-05-09 中兴通讯股份有限公司 一种射频识别应用系统中标签事件的处理方法及装置
GB2469299B (en) * 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
US8392658B2 (en) * 2009-07-10 2013-03-05 Apple Inc. Cache implementing multiple replacement policies
CN102063407B (zh) * 2010-12-24 2012-12-26 清华大学 用于多核处理器的网络牺牲Cache及基于该Cache的数据请求方法
US9396117B2 (en) 2012-01-09 2016-07-19 Nvidia Corporation Instruction cache power reduction
US9552032B2 (en) 2012-04-27 2017-01-24 Nvidia Corporation Branch prediction power reduction
US20130339620A1 (en) * 2012-06-15 2013-12-19 Futurewei Technololgies, Inc. Providing Cache Replacement Notice Using a Cache Miss Request
US9043554B2 (en) 2012-12-21 2015-05-26 Apple Inc. Cache policies for uncacheable memory requests
CN103455434B (zh) * 2013-08-26 2016-12-28 华为技术有限公司 一种建立缓存目录的方法及系统
CN104636268B (zh) * 2013-11-08 2019-07-26 上海芯豪微电子有限公司 一种可重构缓存产品与方法
KR102354990B1 (ko) 2014-09-17 2022-01-24 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
EP3055775B1 (en) * 2014-12-14 2019-08-21 VIA Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
EP3066571B1 (en) 2014-12-14 2018-06-13 VIA Alliance Semiconductor Co., Ltd. Cache memory budgeted by ways on memory access type
WO2016097806A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
WO2016097812A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
US9811468B2 (en) * 2014-12-14 2017-11-07 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
US9582430B2 (en) 2015-03-27 2017-02-28 Intel Corporation Asymmetric set combined cache
CN105095354A (zh) * 2015-06-19 2015-11-25 北京奇虎科技有限公司 数据更新的方法及装置
JP2017033446A (ja) * 2015-08-05 2017-02-09 株式会社リコー 情報処理システム、情報処理システムの制御方法、及びプログラム
US9952982B2 (en) * 2016-06-06 2018-04-24 International Business Machines Corporation Invoking demote threads on processors to demote tracks indicated in demote ready lists from a cache when a number of free cache segments in the cache is below a free cache segment threshold
US10922230B2 (en) * 2016-07-15 2021-02-16 Advanced Micro Devices, Inc. System and method for identifying pendency of a memory access request at a cache entry
US10565121B2 (en) * 2016-12-16 2020-02-18 Alibaba Group Holding Limited Method and apparatus for reducing read/write contention to a cache
US10394719B2 (en) * 2017-01-25 2019-08-27 Samsung Electronics Co., Ltd. Refresh aware replacement policy for volatile memory cache
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing
US10789175B2 (en) * 2017-06-01 2020-09-29 Mellanox Technologies Ltd. Caching policy in a multicore system on a chip (SOC)
CN109240948A (zh) * 2018-08-21 2019-01-18 北京京东尚科信息技术有限公司 一种缓存数据存储和清理方法和装置
US11086777B2 (en) * 2019-04-01 2021-08-10 Arm Limited Replacement of cache entries in a set-associative cache
JP2023507222A (ja) * 2019-12-23 2023-02-21 マイクロン テクノロジー,インク. ラインキャッシュミスの効果的な回避
US11188465B1 (en) * 2020-09-02 2021-11-30 Shenzhen GOODIX Technology Co., Ltd. Cache memory replacement policy
CN113722244B (zh) * 2021-11-02 2022-02-22 北京微核芯科技有限公司 一种高速缓存结构、访问方法和电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0673114B2 (ja) * 1987-03-31 1994-09-14 日本電気株式会社 キヤツシユ制御装置
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
JP3309425B2 (ja) * 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
US6047358A (en) 1997-10-31 2000-04-04 Philips Electronics North America Corporation Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
CN1168025C (zh) * 1999-03-10 2004-09-22 国际商业机器公司 用于多线程处理机的指令高速缓存器
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
US6405287B1 (en) * 1999-11-17 2002-06-11 Hewlett-Packard Company Cache line replacement using cache status to bias way selection
US6965982B2 (en) * 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875178B2 (en) 2013-09-27 2018-01-23 Samsung Electronics Co., Ltd. Method and apparatus for controlling cache memory

Also Published As

Publication number Publication date
CN1659525A (zh) 2005-08-24
EP1532531A1 (en) 2005-05-25
CN1317644C (zh) 2007-05-23
US20030225976A1 (en) 2003-12-04
KR100962057B1 (ko) 2010-06-08
EP1532531A4 (en) 2008-05-28
AU2003245384A1 (en) 2003-12-19
US6912623B2 (en) 2005-06-28
WO2003102781A1 (en) 2003-12-11
JP2005528695A (ja) 2005-09-22

Similar Documents

Publication Publication Date Title
KR100962057B1 (ko) 캐시 치환 폴리시의 간이화한 구현을 갖춘 멀티스레드 캐시의 방법 및 장치
KR100962058B1 (ko) 스레드 식별자에 기초한 캐시 축출을 갖춘 멀티스레드 캐시의 방법 및 장치
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
US6640283B2 (en) Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
EP0695996B1 (en) Multi-level cache system
US7689772B2 (en) Power-performance modulation in caches using a smart least recently used scheme
KR100637610B1 (ko) 로킹을 사용한 캐시 교체방법
US5235697A (en) Set prediction cache memory system using bits of the main memory address
USRE45078E1 (en) Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems
US6542965B2 (en) Cache line replacement using cable status to bias way selection
KR20010042262A (ko) 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조
GB2389205A (en) Unified tag memory for multi-level cache memory
JPH0364893B2 (ko)
EP0752662B1 (en) Method and apparatus for tagging a multi-way associative cache
US7809890B2 (en) Systems and methods for increasing yield of devices having cache memories by inhibiting use of defective cache entries
US6715040B2 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
US7007135B2 (en) Multi-level cache system with simplified miss/replacement control
EP0942376A1 (en) Method and system for pre-fetch cache interrogation using snoop port
US20090055589A1 (en) Cache memory system for a data processing apparatus
US6601155B2 (en) Hot way caches: an energy saving technique for high performance caches
US7725656B1 (en) Braided set associative caching techniques
KR19990068873A (ko) 캐쉬 메모리

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
LAPS Lapse due to unpaid annual fee