KR101509628B1 - 프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘 - Google Patents

프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘 Download PDF

Info

Publication number
KR101509628B1
KR101509628B1 KR20107007196A KR20107007196A KR101509628B1 KR 101509628 B1 KR101509628 B1 KR 101509628B1 KR 20107007196 A KR20107007196 A KR 20107007196A KR 20107007196 A KR20107007196 A KR 20107007196A KR 101509628 B1 KR101509628 B1 KR 101509628B1
Authority
KR
South Korea
Prior art keywords
storage location
block storage
block
accessed
eligible
Prior art date
Application number
KR20107007196A
Other languages
English (en)
Other versions
KR20100054155A (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 KR20100054155A publication Critical patent/KR20100054155A/ko
Application granted granted Critical
Publication of KR101509628B1 publication Critical patent/KR101509628B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU

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

캐시 메모리 시스템이 캐시 메모리(269, 16A, 17A, 18A) 및 블럭 대체 제어기(266)를 포함한다. 캐시 메모리는 복수의 세트들을 포함할 수 있고, 각각의 세트는 복수의 블럭 저장 위치들을 포함한다. 블럭 대체 제어기는 캐시 메모리의 각각의 세트에 대응하는 개별 카운트 값을 유지할 수 있다. 개별 카운트 값은 대체 데이터를 저장할 소정 세트 내에서의 적격 블럭 저장 위치를 가리킨다. 블럭 대체 제어기는, 블럭 저장 위치들 중 적어도 일부 각각에 대해, 대응하는 블럭 저장 위치가 최근에 액세스되었는지 여부를 표시하는 관련된 최근 액세스 비트를 유지할 수 있다. 추가적으로, 블럭 대체 제어기는, 개별 카운트 값이 가리키는 적격 블럭 저장 위치에, 특정 최근 액세스 비트가 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하는지 여부에 따라, 대체 데이터를 저장할 수 있다.

Description

프로세서의 하이 어소시에이티브 캐시 메모리를 위한 SCR 매커니즘{SECOND CHANCE REPLACEMENT MECHANISM FOR A HIGHLY ASSOCIATIVE CACHE MEMORY OF A PROCESSOR}
본 발명은 마이크로프로세서 캐시에 관한 것으로, 특히 캐시 데이터 대체 매커니즘에 관한 것이다.
컴퓨터 시스템의 메인 메모리는 전형적으로 속도보다는 오히려 밀도를 위해 설계되기 때문에, 마이크로프로세서 설계자들은 마이크로프로세서가 메인 메모리에 직접 액세스할 필요성을 감소시키기 위해 그들의 설계에 캐시를 부가해 왔다. 캐시는 메인 메모리보다 더 빠르게 액세스할 수 있는 작은 메모리이다. 캐시는 전형적으로, 메인 시스템 메모리용으로 사용되는 메모리들(전형적으로 다이나믹 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)들 혹은 동기식 다이나믹 랜덤 액세스 메모리(Synchronous Dynamic Random Access Memory, SDRAM))보다 더 빠른 액세스 시간 및 대역폭을 갖는 스태틱 랜덤 액세스 메모리(Static Random Access Memory, SRAM)들과 같은 고속 메모리 셀들로 구성된다.
현대 마이크로프로세서는 전형적으로 온칩 캐시 메모리를 포함한다. 많은 경우에, 마이크로프로세서는 온칩의 계층적 캐시 구조를 포함하며, 이 구조는 레벨 1(L1) 캐시 메모리, 레벨 2(L2) 캐시 메모리, 및 일부 경우에는 레벨 3(L3) 캐시 메모리를 포함한다. 전형적인 캐시 계층은 작고 빠른 L1 캐시를 사용할 수 있으며, 이 캐시는 가장 빈번히 사용되는 캐시 라인을 저장하는 데 사용될 수 있다. L2 캐시는 L1에서는 적합하지 않지만 자주 액세스되는 캐시 라인을 저장하기 위한 더 크고 가능하게는 더 느린 캐시일 수 있다. L3 캐시는 L2 캐시보다 훨씬 더 클 수 있고, L2 캐시에서는 적합하지 않지만 자주 액세스되는 캐시 라인을 저장하기 위해 사용될 수 있다. 앞서 설명된 바와 같은 캐시 계층을 갖게 되면, 프로세서 코어에 의한 메모리 액세스와 관련된 대기시간(latencies)을 감소시켜 프로세스 성능이 개선될 수 있다.
전형적인 캐시 설계에 있어, 임의의 소정 데이터 블럭은 단지 세트(set)(일반적으로는 세트 어소시에이티브 캐시(set associative cache)로 언급됨)로 불리는 어떤 작은 개수의 물리적 위치들 중 하나에만 놓일 수 있다. 세트 당 최대 블럭 개수가 캐시의 어소시에이티비티(associativity)이다. 일단 소정의 세트가 가득 차면, 새로운 데이터가 해당 세트에 들어와야 할 때마다 기존의 엔트리는 새로운 데이터로 오버라이팅되어야만 하거나 대체돼야만 한다. 대체시 기존의 엔트리 중 어느 것이 오버라이팅되어야 하는 지를 결정하기 위해 어떤 알고리즘 타입이 사용돼야만 한다. 대체 알고리즘의 일 타입은 최근 최소 사용 알고리즘(the Least Recently Used algorithm)(LRU 알고리즘)이다. LRU 알고리즘에서, 각각의 세트 내의 모든 엔트리들의 시간 순서는 추적되는데, 그 이름이 의미하고 있는 바와 같이, 최근 최소 사용된 엔트리가 대체된다. 만약 어소시에이티비티가 작다면 이 알고리즘은 잘 동작한다. 더 높은 어소시에이티비티에 대해, LRU 위치를 추적하는 것은 복잡하고 순서 정보(ordering information)를 위한 상당한 량의 저장소가 필요하다.
프로세서 캐시 메모리 시스템의 하이 어소시에이티브 캐시 메모리를 위한 SCR(Second Chance Replacement) 매커니즘의 다양한 실시예가 개시된다. 일 실시예에서, 캐시 메모리 시스템은 블럭 대체 제어기(block replacement controller)에 연결된 캐시 메모리를 포함한다. 캐시 메모리는 복수의 세트(set)들을 포함할 수 있고, 각각의 세트는 복수의 블럭 저장 위치들을 포함한다. 블럭 대체 제어기는 캐시 메모리의 각각의 세트에 대응하는 개별 카운트 값(count value)을 유지하도록 구성될 수 있다. 소정의 세트에 대응하는 카운트 값은, 대체 데이터를 저장할 그 소정의 세트 내에서의 적격 블럭 저장 위치(eligible block storage location) 혹은 블럭 저장 위치들의 그룹을 가리킨다. 블럭 대체 제어기는 블럭 저장 위치들 중 적어도 일부 각각에 대해, 대응하는 블럭 저장 위치가 최근 액세스되었는지 여부를 표시하는 관련된 최근 액세스 비트를 유지할 수 있다. 추가적으로, 블럭 대체 제어기는, 개별 카운트 값이 가리키는 적격 블럭 저장 위치들 중 하나에, 그 적격 블럭 저장 위치에 대응하는 특정 최근 액세스 비트가 그 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하는지 여부에 따라, 대체 데이터를 저장할 수 있다.
하나의 특정 실시예에서, 블럭 대체 제어기는, 개별 카운트 값이 가리키는 적격 블럭 저장 위치에, 그 저장 위치에 대응하는 특정 최근 액세스 비트가 그 저장 위치가 최근에 액세스되지 않았음을 표시하는 것에 응답하여, 대체 데이터를 저장할 수 있다.
또 다른 특정 실시예에서, 블럭 대체 제어기는, 개별 카운트 값이 가리키는 적격 블럭 저장 위치에, 그 적격 블럭 저장 위치에 대응하는 특정 최근 액세스 비트가 그 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하는 것에 응답하여, 대체 데이터를 저장하는 것을 금지할 수 있다.
도 1은 복수 코어 프로세싱 노드를 포함하는 컴퓨터 시스템의 일 실시예의 블럭도이다.
도 2는 도 1의 캐시 메모리의 실시예를 보다 상세하게 설명하는 블럭도이다.
도 3은 도 2의 캐시 메모리의 일 실시예의 동작을 설명하는 흐름도이다.
도 4는 도 1의 캐시 메모리의 또 다른 실시예를 더 상세하게 설명하는 블럭도이다.
도 5는 도 4의 캐시 메모리의 일 실시예의 동작을 설명하는 흐름도이다.
본 발명은 다양하게 변형될 수 있고 대안적 형태를 가질 수 있기 때문에, 예시적으로 그 특정 실시예가 도면에서 도시되고 본 명세서에서 상세히 설명된다. 그러나, 이해해야 하는 것으로, 이러한 도면 및 상세한 설명을 통해 본 발명을 이처럼 개시되는 특정 형태로만 한정시키려는 것이 아니며, 이와는 반대로, 첨부되는 특허청구범위에 의해 정의되는 바와 같이 본 발명의 사상 및 범위 내에 있는 모든 변형물, 등가물 및 대안물을 포괄하도록 의도된 것이다. 주목할 사항으로, 단어 "할 수 있다"의 의미는 본 명세서 전반에 걸쳐 허용적 의미(즉, 가능성을 가지고 있다, 가능하다)로 사용된 것이지 강제적 의미(즉, 해야만 한다)로 사용된 것이 아니다.
이제 도 1을 참조하면, 컴퓨터 시스템(10)의 일 실시예를 나타낸 블럭도가 도시된다. 예시된 실시예에서, 컴퓨터 시스템(10)은 메모리(14)에 연결됨과 아울러 주변 디바이스(13A-13B)에 연결된 프로세싱 노드(12)를 포함한다. 이 노드(12)는 노드 제어기(20)에 연결된 프로세서 코어(15A-15B)를 포함하고, 노드 제어기(20)는 또한 메모리 제어기(22), 복수의 하이퍼트랜스포트(HyperTransport™)(HT) 인터페이스 회로(24A-24C), 및 공유된 레벨 3(L3) 캐시 메모리(60)에 연결된다. HT 회로(24C)는 주변 디바이스(13A)에 연결되고, 주변 디바이스(13A)는 데이지 체인 구성으로 (본 실시예에서는 HT 인터페이스를 사용하여) 주변 디바이스(13B)에 연결된다. 남아있는 HT 회로들(24A, 24B)은 다른 HT 인터페이스(미도시)를 통해 다른 유사한 프로세싱 노드(미도시)에 연결될 수 있다. 메모리 제어기(22)는 메모리(14)에 연결된다. 일 실시예에서, 노드(12)는 도 1에 도시된 회로를 포함하는 단일의 집적 회로 칩일 수 있다. 즉, 노드(12)는 칩 멀티프로세서(Chip MultiProcessor, CMP)일 수 있다. 임의 레벨의 집적화 혹은 개별 컴포넌트들이 사용될 수 있다. 주목할 사항으로, 프로세싱 노드(12)는 간략한 설명을 위해 생략된 다양한 다른 회로들을 포함할 수 있다.
다양한 실시예에서, 노드 제어기(20)는 또한, 프로세서 코어(15A 및 15B)를 서로 상호연결시키고 다른 노드들 및 메모리에 상호연결시키기 위해 다양한 상호연결 회로(미도시)를 포함할 수 있다. 노드 제어기(20)는 또한, 예를 들어, 노드에 대한 최대 및 최소 동작 주파수, 그리고 노드에 대한 최대 및 최소 파워 공급 전압과 같은 다양한 노드 속성을 선택 및 제어하는 기능을 포함할 수 있다. 노드 제어기(20)는 일반적으로, 통신 타입 및 통신에서의 어드레스 등에 따라, 프로세서 코어(15A-15B), 메모리 제어기(22), 및 HT 회로(24A-24C) 간의 통신을 라우팅하도록 구성될 수 있다. 일 실시예에서, 노드 제어기(20)는 시스템 요청 큐(System Request Queue, SRQ)(미도시)를 포함할 수 있고, 수신된 통신은 노드 제어기(20)에 의해 이 시스템 요청 큐에 기입된다. 노드 제어기(20)는 프로세서 코어(15A-15B), HT 회로(24A-24C), 및 메모리 제어기(22) 사이에서 목적지 혹은 목적지들로의 라우팅을 위해 SRQ로부터 통신을 스케쥴링 할 수 있다.
일반적으로, 프로세서 코어(15A-15B)는 컴퓨터 시스템(10)의 다른 컴포넌트들(예를 들어, 주변 디바이스(13A-13B), 다른 프로세서 코어(미도시), 메모리 제어기(22) 등)과의 통신을 위해 노드 제어기(20)에 대한 인터페이스(들)를 사용할 수 있다. 인터페이스는 임의의 요구된 방식으로 설계될 수 있다. 일부 실시예에서, 인터페이스를 위해 캐시 일관성 통신이 정의될 수 있다. 일 실시예에서, 노드 제어기(20)와 프로세서 코어(15A-15B) 간의 인터페이스를 통한 통신은 HT 인터페이스를 통해 사용된 것과 유사한 패킷들의 형태일 수 있다. 다른 실시예에서, 임의의 필요한 통신(예를 들어, 버스 인터페이스를 통한 트랜잭션, 서로 다른 형태의 패킷, 등)이 사용될 수 있다. 다른 실시예에서, 프로세서 코어(15A-15B)는 노드 제어기(20)에 대한 인터페이스를 공유할 수 있다(예를 들어, 공유된 버스 인터페이스). 일반적으로, 프로세서 코어(15A-15B)로부터의 통신은 (메모리 위치를 판독하려는 혹은 프로세서 코어 외부의 레지스터를 판독하려는) 판독 동작, 및 (메모리 위치 혹은 외부 레지스터에 기입하려는) 기입 동작과 같은 요청과, 그리고 (캐시 일관성 실행을 위한) 조사에 대한 응답, 인터럽트 수신확인, 및 시스템 관리 메시지 등을 포함할 수 있다.
앞서 설명된 바와 같이, 메모리(14)는 임의의 적절한 메모리 디바이스를 포함할 수 있다. 예를 들어, 메모리(14)는 RAMBUS DRAM(RDRAM)들, 동기식 DRAM(SDRAM)들, 더블 데이터 레이트(Double Data Rate, DDR) SDRAM과 같은 다이나믹 RAM(DRAM) 군에서의 하나 이상의 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 대안적으로, 메모리(14)는 스태틱 RAM 등을 사용하여 구현될 수 있다. 메모리(14)는 프로그램 명령이 저장될 수 있는 컴퓨터 판독가능 매체로서 언급될 수 있다. 메모리 제어기(22)는 메모리들(14)에 대한 인터페이스를 위한 제어 회로를 포함할 수 있다. 추가적으로, 메모리 제어기(22)는 메모리 요청 등을 큐잉하기 위한 요청 큐를 포함할 수 있다.
HT 회로(24A-24C)는 HT 링크로부터 패킷들을 수신하고 HT 링크를 통해 패킷들을 전송하기 위한 다양한 버퍼 및 제어 회로를 포함할 수 있다. HT 인터페이스는 패킷들을 전송하기 위한 단방향 링크들을 포함한다. 각각의 HT 회로(24A-24C)는 이러한 두 개의 링크(하나는 전송을 위한 것이고, 다른 하나는 수신을 위한 것)에 연결될 수 있다. 소정의 HT 인터페이스가 (예를 들어, 프로세싱 노드들 간에) 캐시 일관성 방식으로 동작될 수 있고, 또는 (예를 들어, 주변 디바이스(16A-16B)로/로부터) 비일관성 방식으로 동작될 수 있다. 예시적 실시예에서, HT 회로(24A-24B)가 사용되지 않고, HT 회로(24C)가 비일관성 링크를 통해 주변 디바이스(16A-16B)에 연결된다.
주목할 사항으로, 본 실시예가 노드들 간의 통신을 위해 그리고 노드와 주변 디바이스들 간의 통신을 위해 HT 인터페이스를 사용하지만, 다른 실시예들은 이러한 통신을 위해 임의의 요구된 인터페이스 혹은 인터페이스들을 사용할 수 있다. 예를 들어, 다른 패킷 기반의 인터페이스들이 사용될 수 있으며, 버스 인터페이스들이 사용될 수 있고, 다양한 표준 주변 인터페이스들(예를 들어, 주변 컴포넌트 상호연결(Peripheral Component Interconnect, PCI), 및 PCI 익스프레스, 등)이 사용될 수 있는 등등이다.
주변 디바이스(13A-13B)는 임의 타입의 주변 디바이스들일 수 있다. 예를 들어, 주변 디바이스(13A-13B)는 또 다른 컴퓨터 시스템과 통신하기 위한 디바이스들을 포함할 수 있으며, 이 디바이스들(예를 들어, 네트워크 인터페이스 카드, 컴퓨터 시스템의 메인 회로 보드 상에 통합되는 네트워크 인터페이스 카드와 유사한 회로, 또는 모뎀)은 상기 또 다른 컴퓨터 시스템과 연결될 수 있다. 더욱이, 주변 디바이스(13A-13B)는 비디오 가속기, 오디오 카드, 하드 혹은 플로피 디스크 드라이브 혹은 드라이브 제어기, SCSI(Small Computer Systems Interface) 어댑터 및 전화 카드, 사운드 카드, 및 GPIP 혹은 필드 버스 인터페이스 카드와 같은 다양한 데이터 획득 카드를 포함할 수 있다. 주목할 것으로, 용어 "주변 디바이스"는 입력/출력(I/O) 디바이스를 포괄하도록 의도되었다.
일반적으로, 프로세서 코어(15A-15B)는 소정의 명령 세트 아키텍처로 정의된 명령을 실행하도록 설계된 회로를 포함할 수 있다. 즉, 프로세서 코어 회로는 이 명령 세트 아키텍처로 정의된 명령들의 결과를 페치하고, 디코딩하고, 실행하고, 그리고 저장하도록 구성될 수 있다. 예를 들어, 일 실시예에서, 프로세서 코어(15A-15B)는 x86 아키텍처를 구현할 수 있다. 프로세서 코어(15A-15B)는, 수퍼파이프라인, 수퍼스칼라, 혹은 이들의 조합을 포함하는 임의의 요구된 구성을 포함할 수 있다. 다른 구성으로는 스칼라, 파이프라인, 비파이프라인 등을 포함할 수 있다. 다양한 실시예들이 비순차적인 추론적 실행 혹은 순차적인 실행을 사용할 수 있다. 프로세서 코어들은, 앞서의 구성들 중 어느 하나와 결합된, 하나 이상의 명령들 혹은 다른 기능들을 위한 마이크로코딩(microcoding)을 포함할 수 있다. 다양한 실시예들이, 캐시들, 변환 룩어사이드 버퍼(Translation Lookaside Buffer, TLB)들, 등과 같은 다양한 다른 설계 특징을 구현할 수 있다. 따라서, 예시된 실시예에서, 양쪽 프로세서 코어가 공유하고 있는 L3 캐시(60)에 추가하여, 프로세서 코어(15A)는 L1 캐시 시스템(16A), L2 캐시 시스템(17A), 및 TLB(18A)를 포함한다. 마찬가지로, 프로세서 코어(15B)는 L1 캐시 시스템(16B), L2 캐시 시스템(17B), 및 TLB(18B)를 포함한다. 각각의 L1 캐시 및 L2 캐시는 마이크로프로세서에서 발견되는 임의의 L1 캐시 및 L2 캐시를 나타낼 수 있다. 또한, 프로세싱 노드(12)는 L3 캐시 서브시스템(30)의 일부인 공유된 L3 캐시(60)를 포함한다. 예시된 실시예에서, L3 캐시 서브시스템(30)은 캐시 제어기 유닛(21)(이것은 노드 제어기(20)의 일부로서 도시됨) 및 L3 캐시(60)를 포함한다. 캐시 제어기(21)는 L3 캐시(60)로 향하는 요청을 제어하도록 구성될 수 있다.
아래에서 더 상세히 설명되는 바와 같이, 캐시들 및/또는 TLB 구조들 중 하나 이상이 대체 매커니즘을 실행할 수 있는데, 이 대체 매커니즘에서 대체 제어기는 데이터 저장 어레이 내의 각각의 블럭 저장 위치에 대해 최근 액세스/사용된 비트를 유지할 수 있다. 추가적으로, 대체 제어기는 각각의 블럭 저장 위치를 연속적으로 가리키는 카운터 값을 유지할 수 있다. 대체 데이터 저장 여부를 결정하기 위해 각각의 적격 블럭 저장 위치가 검사되기 때문에, 최근 액세스/사용된 비트(RU bit)는 대응하는 블럭 저장 위치가 최근에 액세스되었는지 여부를 표시할 수 있다. 따라서, 블럭 대체 제어기는, 카운터 값이 가리키는 블럭 저장 위치에, RU 비트가 그 위치가 최근 액세스되었다고 표시하는지 여부에 근거하여, 대체 데이터를 저장할 수 있다.
또한 주목할 사항으로, 도 1에 도시된 컴퓨터 시스템(10)은 하나의 프로세싱 노드(12)를 포함하지만, 다른 실시예들은 임의 개수의 프로세싱 노드를 구현할 수 있다. 유사하게, 노드(12)와 같은 프로세싱 노드는, 다양한 실시예들에서, 임의 개수의 프로세서 코어들을 포함할 수 있다. 컴퓨터 시스템(10)의 다양한 실시예들은 또한, 노드(12) 당 다른 개수의 HT 인터페이스들을 포함할 수 있고, 그리고 해당 노드 등에 연결된 다른 개수의 주변 디바이스들(16)을 포함할 수 있다.
도 2를 참조하면, 도 1의 캐시 메모리 시스템의 실시예를 더 상세하게 나타낸 블럭도가 제시된다. 캐시 메모리 시스템(200)은 태그 제어(262), 블럭 대체 제어기(266), LRU(Least Recently Used) 저장 어레이(264), 태그 저장 어레이(263), 및 때때로 캐시 메모리로 언급되는 데이터 저장 어레이(265)를 포함한다.
태그 저장 어레이(263)는, 데이터 저장 어레이(265) 내에 저장된 데이터의 캐시 라인의 다수의 어드레스 비트(즉, 태그)를 복수의 위치들 각각에 저장하도록 구성될 수 있다. 일 실시예에서, 태그 제어(262)는 요청된 캐시 라인이 데이터 저장 어레이(265)에 존재하는지 여부를 결정하기 위해 태그 저장 어레이(263)를 검색하도록 구성될 수 있다. 예를 들어, 태그 제어(262)는, 판독 요청과 관련된 하나 이상의 어드레스 비트들이 태그 저장 어레이(263)에 저장된 임의의 어드레스 태그와 정합하는지 여부를 결정할 수 있다. 만약 태그 제어(262)가, 요청된 어드레스에 관한 정합을 발견하면, 태그 제어(262)는 캐시 제어기(21)에 히트 표시(hit indication)를 리턴(return)반환하고, 그리고 만약 태그 어레이(263)에서 정합이 발견되지 않는다면, 미스 표시(miss indication)를 리턴한다.
예시된 실시예에서, 데이터 저장 어레이(265)는 복수의 블럭 저장 위치(예를 들어, 269)를 포함한다. 도시된 바와 같이, 데이터 저장 어레이(265)는 0부터 m-1까지 번호가 부여된 m개의 행과 0부터 n-1까지 번호가 부여된 n개의 열을 가진다. 본 실시예에서, 데이터 저장 어레이(265)는 n개의 어소시에이티비티 웨이(way)들을 포함하는 세트 어소시에이티브 캐시 메모리를 구현한다. 웨이들은 열로 표현되고, 세트는 행으로 표현된다. 예를 들어, 만약 캐시 메모리가 16 웨이 세트 어소시에이티브 캐시라면, n은 16이고, 각각의 세트는 데이터 블럭에 대해 저장소를 제공할 수 있는 16개의 블럭 저장 위치를 포함할 수 있다. 전형적으로 데이터 블럭은 캐시 라인일 수 있다. 세트들의 수는 캐시 메모리의 크기에 따라 달라질 수 있다.
LRU 저장 어레이(264)는 복수의 저장 위치를 포함한다. 예시된 실시예에서, LRU 저장 어레이(264)는 데이터 저장 어레이(265)의 행과 열에 대응하는 행과 열을 포함하고, 여기서 세트들은 행으로 표현된다. LRU 저장 어레이(264)에서 "ru"로 명명된 저장 위치에서, 블럭 대체 제어기(266)는 데이터 저장 어레이(265) 내의 각각의 블럭 저장 위치에 대해 최근 액세스/사용된(RU) 비트를 유지할 수 있다. 각각의 RU 비트는, 데이터 저장 어레이 내의 대응하는 위치가 최근에 액세스되었는지 여부를 표시한다. 본 명세서에 사용되는 용어 "액세스/사용된"은 임의의 동작을 말하며, 이 동작에서, 데이터 저장 어레이 내의 블럭 저장 위치가 그 블럭 저장 위치에서의 데이터에 대한 캐시 요청의 결과로서, 판독되거나 기입되거나 혹은 액세스된다.
RU 비트에 추가하여, 블럭 대체 제어기(266)는 LRU 저장 어레이(264)의 각각의 행 내에 카운트 값을 유지할 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 각각의 행에서의 참조번호(CO, Cl, C2, 및 C3)는 4비트 카운트 값을 나타낸다. 카운트 값은, 16-웨이 세트 어소시에이티브 캐시를 구현할 수 있는, 데이터 저장 어레이(265)의 대응하는 행 내에서의 각각의 블럭 저장 위치에 대한 포인터를 나타낸다. 따라서, 도시된 카운터 값은 4비트 값이다. 만약 웨이의 수가 다르다면, 카운터 값은 다른 개수의 비트들을 가질 수 있다. 예시된 실시예에서, 소정의 세트에 대응하는 카운트 값은 또한 LRU 저장 어레이(264) 내의 관련된 RU 비트에 대한 포인터를 나타낸다.
주목할 사항으로, 일 실시예에서, RU 비트가 클리어(clear) 될 때(즉, RU 비트의 로직 값이 제로(0)일 때), RU 비트는 블럭 저장 위치가 최근에 액세스되지 않았음을 표시할 수 있다. 마찬가지로, RU 비트가 세트(set) 될 때(즉, RU 비트의 로직 값이 일(1)일 때), RU 비트는 블럭 저장 위치가 최근에 액세스되었음을 표시할 수 있다. 그러나, 동일하게 고려할 수 있는 것으로, RU 비트가 세트될 때 혹은 그 로직 값이 일(1)일 때 블럭 저장 위치가 최근에 액세스되지 않았음을 RU 비트가 표시할 수 있고, RU 비트가 클리어될 때 혹은 그 로직 값이 제로(0)일 때 블럭 저장 위치가 최근에 액세스되었음을 RU 비트가 표시할 수 있도록, 로직 값이 지정될 수 있다.
따라서, 도 3의 설명과 함께 아래에서 더 상세히 설명되는 바와 같이, 블럭 대체 제어기(266)는, 만약 블럭 저장 위치가 최근에 액세스되지 않았음을 표시하는 대응하는 RU 비트를 가진 블럭 저장 위치를 카운트 값이 가리킨다면, 데이터 저장 어레이(265) 내에 대체 데이터를 저장하도록 구성될 수 있다. 추가적으로, 본 실시예에서 사용되는 바와 같은 "최근에 액세스된"은 카운트 값이 마지막으로 이러한 블럭 저장 위치를 가리킨 이후로 "액세스/사용된" 것을 말한다.
주목할 사항으로, 대체 매커니즘은 대체 알고리즘을 사용하는 임의 타입의 캐시에서 사용될 수 있다. 예를 들어, 앞서 설명된 캐시 메모리 시스템(200)은 L1 캐시, L2 캐시, 혹은 L3 캐시를 나타낼 수 있다. 더욱이, 프로세서의 마이크로-아키텍처 내에도 또한 다른 타입의 캐시 메모리들이 있다. 예를 들어, 많은 프로세서들이 가상의 혹은 선형 어드레스 대 물리적 어드레스 변환을 저장하기 위한 변환 룩어사이드 버퍼(Translation Look-aside Buffer, TLB)로서 알려진 저장소를 사용한다. 이러한 타입의 저장소는 또한 전형적인 캐시와 많은 부분에서 동일한 방식으로 대체 알고리즘을 사용할 수도 있다. 이처럼, 앞서 설명된 대체 매커니즘은 또한 이러한 타입의 캐시들에 대해 사용될 수 있는 것으로 고려된다.
도 3은 도 2의 캐시 메모리 시스템(200)의 실시예의 동작을 설명하는 흐름도이다. 도 2 및 도 3을 함께 참조하면, 블럭(300)에서, 일 실시예로서, 블럭 대체 제어기(266)는 모든 RU 비트들이 최근에 액세스되지 않았음을 표시하도록 한다. 예를 들어, 이것은 리셋(reset)을 통해 수행될 수 있다. 예를 들어, 소정의 블럭 저장 위치에 대한 판독 요청과 같은 캐시 액세스 요청에 응답하여(블럭(305)), 블럭 대체 제어기(266)는 액세스된 블럭 저장 위치에 대응하는 RU 비트를 세트한다(블럭(310)). 이 동작은 블럭 저장 위치가 액세스될 때마다 일어날 수 있다.
데이터 저장 어레이(265)가 유효 데이터로 가득 찬 경우, 임의의 추가적 데이터가 채워지기 위해서는 데이터가 대체될 필요가 있다. 따라서, 대체 요청에 응답하여(블럭(315)), 블럭 대체 제어기(266)는 상기 요청의 어드레스가 표시하는 세트 내에서 카운트 값이 가리키는 블럭 저장 위치에 대응하는 RU 비트를 점검한다(블럭(320)). 만약 (본 예에서) RU 비트가, 최근에 이 위치가 액세스되지 않았음을 표시하는 클리어 상태라면(블럭(325)), 블럭 대체 제어기(266)는 상기 요청의 어드레스가 표시하는 세트 내에서의 카운트 값이 가리키는 블럭 저장 위치에서 데이터를 교체하고(블럭(330)), 그리고 (최근에 액세스되었음을 표시하도록) 대응하는 RU 비트를 세트한다. 그 다음에, 동작은 앞서 설명된 바와 같은 블럭(305)에서 진행된다.
블럭(325)을 참조하면, 만약 RU 비트가 최근에 해당 위치가 액세스되었음을 표시하는 세트 상태라면, 블럭 대체 제어기(266)는 (최근에 액세스 되지 않았음을 표시하도록) 카운터 값이 현재 가리키는 RU 비트를 클리어하고, 카운터 값을 증분시켜 세트 내의 그 다음 적격 블럭 저장 위치를 가리키도록 한다(블럭(340)). 이후, 블럭 대체 제어기(266)는 그 다음 RU 비트가 클리어 상태인지 혹은 세트 상태인지 여부를 알아내기 위해 해당 RU 비트를 점검할 수 있다. 앞서와 같이, 만약 RU 비트가 다음 위치가 최근에 액세스되었음을 표시하는 세트 상태라면, 블럭 대체 제어기(266)는 (최근에 액세스 되지 않았음을 표시하도록) 카운터 값이 현재 가리키는 RU 비트를 클리어하고, 카운터 값을 증분시켜 세트 내의 그 다음 블럭 저장 위치를 가리키도록 한다. 이러한 동작은 클리어 상태인 RU 비트를 블럭 대체 제어기가 발견할 때까지 계속될 수 있으며, 발견되는 경우 동작은 앞서 설명된 바와 같이 블럭(330)에서 계속된다. 따라서, 일어날 확률이 거의 없지만, 모든 RU 비트들이 하나의 대체 싸이클에서 클리어되는 것도 가능하다.
앞서 설명된 실시예는, 카운터의 연속적인 패스들 사이에서 액세스될 수 있는 임의의 블럭에 대해, 대체되기 전에 2차 기회(second chance)를 제공한다.
도 4를 참조하면, 캐시 메모리 시스템(400)의 또 다른 실시예를 더 상세하게 나타낸 블럭도가 도시된다. 캐시 메모리 시스템(400)은 도 2의 캐시 메모리(200)와 유사하지만, 동작에 있어 약간의 차이가 있다. 특히, 구현에 따라, 데이터 저장 어레이(265) 내에서의 각각이 블럭 저장 위치에 대해 RU 비트를 유지할 필요가 없을 수 있다. 아래에서 설명되는 바와 같이, 카운터 및 RU 비트 양쪽 모두를 포함하는 전체 최근 사용 정보는 블럭 저장 위치 당 일 비트로 유지된다.
도 4에 도시된 실시예에서, 캐시 메모리 시스템(400)은 태그 제어(262), 블럭 대체 제어기(466), LRU(Least Recently Used) 저장 어레이(464), 태그 저장 어레이(263), 및 때때로 캐시 메모리로 언급되는 데이터 저장 어레이(265)를 포함한다. 도시된 바와 같이, 도 4의 데이터 저장 어레이(265)는 복수의 블럭 저장 위치(예를 들어 269)를 포함하고, 그리고 다수의 어소시에이티비티 웨이를 포함하는 세트 어소시에이티브 캐시 메모리를 구현한다. 이에 따라, LRU 저장 어레이(464)도 또한 복수의 저장 위치를 포함한다. 일 실시예에서, 블럭 대체 제어기(466)는 데이터 저장 어레이(265) 내에서의 각각의 세트에 대해 카운터 값을 유지할 수 있다. 이처럼, LRU 저장 어레이(464)는 또한 데이터 저장 어레이(265)의 행과 열에 대응하는 행과 열을 포함하고, 여기서 세트들은 행으로 표현된다. 일 실시예에서, 블럭 대체 제어기(266)는 LRU 저장 어레이(464)의 행 내에 각각의 카운터 값을 저장할 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 각각의 행에서의 참조 번호(CO, Cl, C2, 및 C3)는 4비트 카운터 값을 나타낸다. 카운터 값은 데이터 저장 어레이(265) 내에서의 각각의 블럭 저장 위치에 대한 포인터를 나타낸다.
그러나, 도 2에 도시된 실시예와 대조적으로, 도 4의 블럭 대체 제어기(466)는 데이터 저장 어레이(265) 내에서의 블럭 저장 위치들 중 단지 일부에 대해서만 최근에 액세스/사용된(RU) 비트들을 유지할 수 있다. 예시된 실시예에서, LRU 어레이(464) 내에서의 LRU 정보에 대해 필요한 저장소를 줄이기 위해, 카운터 값이 RU 비트들 사이에 저장된다. 따라서, RU 비트들의 수는 n-log2 n이고, 여기서 n은 어소시에이티비티 웨이의 수이다. 예를 들어, 16-웨이 캐시에서, 12개의 RU 비트들 및 4비트 카운트 값이 존재할 수 있다. 이러한 경우, 포인터가 가장 최근에 지나간 RU 비트들은 로직 제로(0)로 다루어질 수 있어, 이러한 비트들에 대한 저장소는 필요없게 된다. 추가적으로, 절대적 웨이 값에 따르기보다 카운터에 대한 상대적인 위치에 따라 RU 비트를 저장하는 것은 유용할 수 있다. 예를 들어, 블럭 대체 제어기(466)는, 카운터 값 저장 이후 첫 번째 RU 비트 저장 위치가 카운터 값이 가리키고 있는 블럭 저장 위치에 대응되도록, LRU 어레이(464) 내에 카운터 값을 저장할 수 있다. 따라서, 만약 카운터 값이 6이라면, 예를 들어, 열 4에 저장되는 RU 비트는 웨이 번호 6에 대한 블럭 저장 위치에 대응할 수 있으며, 이는 도 2에 제시된 실시예에서와 같이 웨이 번호 4에 대한 블럭 저장 위치에 대응하는 것이 아니다.
도 4와 함께 앞서 설명된 바와 같이, LRU 저장 어레이(464)의 특정 행 내의 RU 비트들은 카운터 값이 증분될 때마다 왼쪽으로 일 비트 위치만큼 시프트된다. RU 비트들 중 어느 하나 혹은 모두가 잠재적으로 대체 요청시 일(1)이 될 수 있기 때문에, 행 당 RU 비트들의 수만큼 많은 웨이들을 갖는 시프터가 필요할 것처럼 보인다. 하지만 필요한 시프터 크기는 어떤 수 'k' 인자만큼 감소될 수 있는데, 이는 카운터를 증분시키기 전에 처음 k개의 RU 비트들이 세트되는 것을 기다리고, 단지 k의 배수로 증분시킴으로써 이루어질 수 있다. 이러한 경우에, 어떤 소정의 대체를 위해 사용될 웨이는 카운터 값이 가리키는 웨이일 필요는 없으며, "카운트 값"으로부터 "카운트 값 + K-1"까지의 웨이들 중 어느 하나일 수 있고, 그것의 RU 비트는 최근 액세스/사용되지 않았음을 표시한다. 예를 들어, 예시적 실시예에서, 카운터 값은 4의 배수로 증분될 수 있다(k=4). 이러한 경우에, 카운터 값의 최하위 2비트는 언제나 로직 제로(0)이고, 이들을 위해서는 어떠한 저장공간도 필요 없다. 이러한 방식으로 절약된 저장 공간은 추가적 RU 비트들을 저장하는데 사용될 수 있다. 따라서, 본 예에서, 세트 당 16 비트의 LRU 저장소가 2 비트의 카운터 값과 14개의 RU 비트들로 배분될 수 있다.
일 실시예에서, 각각의 RU 비트는, 데이터 저장 어레이(265) 내의 대응하는 블럭 저장 위치가 최근에 액세스되었는지 여부를 표시한다. 본 명세서에 사용되는 것으로, "액세스/사용된"은, 데이터 저장 어레이 내에서의 블럭 저장 위치가 해당 블럭 저장 위치에서의 데이터에 대한 캐시 요청의 결과로서 판독되거나 혹은 기입 또는 액세스되는 동작을 말한다.
주목할 사항으로, 일 실시예에서, RU 비트가 클리어될 때(즉, RU 비트의 로직 값이 제로(0)일 때), RU 비트는 블럭 저장 위치가 최근에 액세스되지 않았음을 표시할 수 있다. 마찬가지로, RU 비트가 세트될 때(즉, RU 비트의 로직 값이 일(1)일 때), RU 비트는 블럭 저장 위치가 최근에 액세스되었음을 표시할 수 있다. 그러나, 동일하게 고려할 수 있는 것으로, RU 비트가 세트될 때 혹은 그 로직 값이 일(1)일 때 블럭 저장 위치가 최근에 액세스되지 않았음을 RU 비트가 표시하고, RU 비트가 클리어될 때 혹은 그 로직 값이 제로(0)일 때 블럭 저장 위치가 최근에 액세스되었음을 RU 비트가 표시하도록, 로직 값이 지정될 수 있다.
도 5는, 앞선 문단들에서 수정(modify)된 바와 같이, 도 4에 도시된 실시예의 동작의 세부사항을 설명하는 흐름도이다. 도 4 및 도 5를 함께 참조하면, 도 5의 블럭(500)에서, 블럭 대체 제어기(466)는 모든 RU 비트들이 최근에 액세스되지 않았음을 표시하도록 한다. 이것은 예를 들어 리셋을 통해 수행될 수 있다. 예를 들어, 소정의 블럭 저장 위치에 대한 판독 요청과 같은 캐시 액세스 요청에 응답하여(블럭(505)), 블럭 대체 제어기(466)는, 액세스된 블럭 저장 위치에 대응하는 RU 비트를, 만약 이러한 비트가 요청시 존재한다면, 세트한다(블럭(510)). 이러한 동작은 블럭 저장 위치가 액세스될 때마다 일어날 수 있다.
데이터 저장 어레이(265)가 유효 데이터로 가득 찬 경우, 임의의 추가적 데이터를 채우기 위해서는 데이터가 교체될 필요가 있다. 따라서, 대체 요청에 응답하여(블럭(515)), 블럭 대체 제어기(466)는, 상기 요청의 어드레스가 표시하는 세트에서 카운터 값이 가리키는 블럭 저장 위치에 대응하는 RU 비트 및 해당 세트에 대한 그 다음 3개의 RU 비트들을 점검한다(블럭(520)). 만약 이러한 4개의 RU 비트들 중 어느 하나가, 최근에 해당 위치가 액세스되지 않았음을 표시하는, 클리어 상태라면(블럭(525)), 블럭 대체 제어기(466)는, 이러한 4개의 RU 비트들의 그룹에서의 첫 번째 클리어 RU 비트에 대응하는 블럭 저장 위치에서 데이터를 대체하고(블럭(530)), 그리고 이 비트를 세트하여 최근에 액세스되었음을 표시하게 한다. 동작은 앞서 설명된 바와 같이 블럭(505)에서 계속된다.
블럭(525)을 다시 참조하면, 만약 검사된 4개의 RU 비트들 모두가, 최근에 해당 위치가 액세스되었음을 표시하는, 세트 상태라면, 블럭 대체 제어기(466)는 해당 행에 대한 RU 비트들 모두를 왼쪽으로 4비트 위치만큼 시프트시키고, 오른편을 (최근에 액세스되지 않았음을 표시하는) 제로로 채우고, 그리고 세트 내에서 4개의 블럭 저장 위치들로 구성된 그 다음 적격 그룹을 가리키도록 카운터 값을 4만큼 증분시킨다(블럭(540)). 블럭 대체 제어기(466)는 그 다음에, 이들 중 어느 것이 클리어 상태인지를 알아내기 위해 이러한 4개의 RU 비트들로 구성된 그 다음 그룹을 점검할 수 있다. 앞서와 같이, 만약 4개의 RU 비트들 모두가, 최근에 해당 위치들이 액세스되었음을 표시하는, 세트 상태라면, 블럭 대체 제어기(466)는 그 행에 대한 RU 비트들 모두를 왼쪽으로 4 비트 위치만큼 시프트시키고, (최근에 액세스되지 않았음을 표시하는) 제로로 채우고, 그리고 세트 내에서 4개의 블럭 저장 위치들로 구성된 그 다음 적격 그룹을 가리키도록 카운터 값을 4만큼 증분시킨다. 이러한 동작은, 블럭 대체 제어기가 클리어 상태인 RU 비트를 발견할 때까지 계속될 수 있고, 이러한 비트를 발견한 경우 동작은 앞서 설명된 바와 같이 블럭(530)에서 계속된다. 따라서, 일어날 확률은 희박하지만, RU 비트들 대부분이 하나의 대체 싸이클에서 클리어되는 것도 가능하다.
주목할 사항으로, 대안적 실시예에서, 블럭 대체 제어기(466)는, 첫 번째 4개의 비트들이 세트된 것으로 발견된 때에는 언제나, 그 다음 대체 요청을 기다리지 않고, 소정의 행에 대해 4개의 RU 비트들을 시프트/클리어하도록 구성될 수 있다. 이러한 경우에, 대체 요청이 도달하는 경우, 적어도 하나의 RU 비트가 이미 4개의 RU 비트들로 된 첫 번째 그룹에서 클리어 상태임이 보장되게 된다.
또한 주목할 사항으로, 도시되지는 않았지만, 일부 실시예들에서, 태그 어레이(263)와 함께 저장될 수 있거나 혹은 개별 저장 어레이에 저장될 수 있는 유효 비트/정보가 있을 수 있다. 이처럼, 비유효 데이터를 가진 블럭 저장 위치는 언제나 유효 데이터를 가진 위치 이전에 대체 데이터를 저장하기 위해 사용될 수 있다. 따라서, 캐시 요청이 수신될 때, 어느 위치에 대체 데이터를 저장할지 결정하는 경우, 유효 정보가 RU 정보 이전에 점검될 수 있다.
추가적으로 주목할 사항으로, 비록 앞서 설명된 실시예들이 복수의 프로세서 코어들을 갖는 노드를 포함하지만, 캐시 시스템(200 및 400)과 관련된 기능이 단일 코어 프로세서를 포함하는 임의 타입의 프로세서에서 사용될 수 있음이 고려될 수 있다. 추가적으로, 비록 하드웨어적 측면에서 본 실시예들이 설명되었지만, 이러한 실시예들은 하드웨어, 소프트웨어 혹은 하드웨어와 소프트웨어의 결합으로 구현될 수 있음이 고려될 수 있다. 소프트웨어로 구현된 실시예에서, 프로그램 명령은 예를 들어 도 1의 메모리(14)에 저장될 수 있고, 필요하다면 프로세서 코어(15A 혹은 15B)에 의해 실행될 수 있다. 그러나, 이러한 프로그램 명령들이 임의 타입의 저장 매체에 저장될 수 있음이 고려된다.
앞서의 실시예들이 상당히 상세히 설명되었지만, 앞서 개시된 내용이 완전히 이해되었다면, 그 수많은 변형 및 수정이 가능함은 본 발명의 기술분야에서 숙련된 자들에게는 명백하게 될 것이다. 다음의 특허청구범위는 이러한 변형 및 수정 모두를 포함하는 것으로 해석되어야 한다.
본 발명은 일반적으로 마이크로프로세서에 적용가능하다.

Claims (10)

  1. 캐시 메모리 시스템(cache memory system)(200)으로서,
    복수의 세트(set)들을 포함하는 캐시 메모리(cache memory)(269, 16A, 17A, 18A) - 상기 세트들 각각은 복수의 블럭 저장 위치(block storage location)들을 포함하고 - 와; 그리고
    상기 캐시 메모리에 연결되어, 상기 캐시 메모리 각각의 세트에 대응하는 개별 카운트 값(separate count value)을 유지하는 블럭 대체 제어기(block replacement controller)(266)를 포함하여 구성되고,
    소정의 세트에 대응하는 상기 개별 카운트 값은 대체 데이터(replacement data)를 저장할 상기 소정의 세트 내에서의 적격 블럭 저장 위치(eligible block storage location)를 가리키고,
    상기 블럭 대체 제어기는 또한, 상기 블럭 저장 위치들 중 적어도 일부 각각에 대응하는 최근 액세스 비트(recent access bit)를 유지하도록 되어있고, 각 최근 액세스 비트는 상기 대응하는 블럭 저장 위치가 최근에 액세스되었는지를 표시하며,
    상기 블럭 대체 제어기는 또한, 상기 개별 카운트 값이 가리키는 상기 적격 블럭 저장 위치 내에, 상기 적격 블럭 저장 위치에 대응하는 상기 최근 액세스 비트들 중 특정 하나가 상기 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하는지 여부에 따라, 상기 대체 데이터를 저장하는 것을 특징으로 하는 캐시 메모리 시스템.
  2. 제1항에 있어서,
    상기 블럭 대체 제어기는, 상기 개별 카운트 값이 가리키는 상기 적격 블럭 저장 위치 내에, 상기 적격 블럭 저장 위치에 대응하는 상기 최근 액세스 비트들 중 상기 특정 하나가 상기 적격 블럭 저장 위치가 최근에 액세스되지 않았음을 표시하는 것에 응답하여, 상기 대체 데이터를 저장하는 것을 특징으로 하는 캐시 메모리 시스템.
  3. 제1항에 있어서,
    상기 블럭 대체 제어기는 또한, 상기 적격 블럭 저장 위치에 액세스하는 캐시 액세스 요청(cache access request)에 응답하여, 상기 적격 블럭 저장 위치에 대응하는 상기 최근 액세스 비트들 중 상기 특정 하나로 하여금, 상기 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하도록 하는 것을 특징으로 하는 캐시 메모리 시스템.
  4. 제1항에 있어서,
    상기 블럭 대체 제어기는 또한, 상기 개별 카운트 값이 가리키는 상기 적격 블럭 저장 위치 내에, 상기 적격 블럭 저장 위치에 대응하는 상기 최근 액세스 비트들 중 상기 특정 하나가 상기 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하는 것에 응답하여, 상기 대체 데이터를 저장하는 것을 금지하는 것을 특징으로 하는 캐시 메모리 시스템.
  5. 제1항에 있어서,
    상기 블럭 대체 제어기는, 상기 최근 액세스 비트들 중 특정 하나로 하여금, 상기 적격 블럭 저장 위치가 최근에 액세스되지 않았음을, 상기 적격 블럭 저장 위치를 상기 개별 카운트 값이 가리키는 것에 응답하여, 표시하도록 하고, 그리고 상기 최근 액세스 비트들 중 특정 하나는 상기 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하는 것을 특징으로 하는 캐시 메모리 시스템.
  6. 복수의 세트들을 포함하는 캐시 메모리(269, 16A, 17A, 18A)를 제공하는 단계 - 상기 세트들 각각은 복수의 블럭 저장 위치들을 포함하고 - 와;
    상기 캐시 메모리 각각의 세트에 대응하는 개별 카운트 값을 유지하는 단계 - 소정의 세트에 대응하는 상기 개별 카운트 값은 대체 데이터를 저장할 상기 소정의 세트 내에서의 적격 블럭 저장 위치를 가리키고 - 와;
    상기 블럭 저장 위치들 중 적어도 일부 각각에 대응하는 최근 액세스 비트를 유지하는 단계 - 각 최근 액세스 비트는 상기 대응하는 블럭 저장 위치가 최근에 액세스되었는지를 표시하며 - 와; 그리고
    상기 개별 카운트 값이 가리키는 상기 적격 블럭 저장 위치 내에, 상기 적격 블럭 저장 위치에 대응하는 상기 최근 액세스 비트들 중 특정 하나가 상기 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하는지 여부에 따라, 상기 대체 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서,
    상기 개별 카운트 값이 가리키는 상기 적격 블럭 저장 위치 내에, 상기 적격 블럭 저장 위치에 대응하는 상기 최근 액세스 비트들 중 상기 특정 하나가 상기 적격 블럭 저장 위치가 최근에 액세스되지 않았음을 표시하는 것에 응답하여, 상기 대체 데이터를 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제6항에 있어서,
    상기 적격 블럭 저장 위치에 액세스하는 캐시 액세스 요청에 응답하여, 상기 적격 블럭 저장 위치에 대응하는 상기 최근 액세스 비트들 중 상기 특정 하나로 하여금, 상기 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하도록 하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제6항에 있어서,
    상기 적격 블럭 저장 위치에 대응하는 상기 최근 액세스 비트들 중 상기 특정 하나가 상기 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하는 것에 응답하여, 상기 개별 카운트 값이 가리키는 상기 적격 블럭 저장 위치 내에, 상기 대체 데이터를 저장하는 것을 금지하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 제6항에 있어서,
    상기 최근 액세스 비트들 중 특정 하나로 하여금, 상기 적격 블럭 저장 위치가 최근에 액세스되지 않았음을, 상기 적격 블럭 저장 위치를 상기 개별 카운트 값이 가리키는 것에 응답하여, 표시하도록 하는 단계를 더 포함하고, 그리고 상기 최근 액세스 비트들 중 특정 하나는 상기 적격 블럭 저장 위치가 최근에 액세스되었음을 표시하는 것을 특징으로 하는 방법.
KR20107007196A 2007-09-04 2008-09-04 프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘 KR101509628B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/849,515 2007-09-04
US11/849,515 US7861041B2 (en) 2007-09-04 2007-09-04 Second chance replacement mechanism for a highly associative cache memory of a processor
PCT/US2008/010368 WO2009032275A1 (en) 2007-09-04 2008-09-04 Second chance replacement mechanism for a highly associative cache memory of a processor

Publications (2)

Publication Number Publication Date
KR20100054155A KR20100054155A (ko) 2010-05-24
KR101509628B1 true KR101509628B1 (ko) 2015-04-08

Family

ID=40002967

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20107007196A KR101509628B1 (ko) 2007-09-04 2008-09-04 프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘

Country Status (7)

Country Link
US (1) US7861041B2 (ko)
EP (1) EP2198370B1 (ko)
JP (1) JP5328792B2 (ko)
KR (1) KR101509628B1 (ko)
CN (1) CN101918925B (ko)
TW (1) TWI451330B (ko)
WO (1) WO2009032275A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268721B2 (en) 2010-11-25 2016-02-23 International Business Machines Corporation Holding by a memory controller multiple central processing unit memory access requests, and performing the multiple central processing unit memory requests in one transfer cycle
US8615636B2 (en) * 2011-03-03 2013-12-24 International Business Machines Corporation Multiple-class priority-based replacement policy for cache memory
US9063945B2 (en) * 2011-06-14 2015-06-23 International Business Machines Corporation Apparatus and method to copy data
US9378153B2 (en) 2013-08-27 2016-06-28 Advanced Micro Devices, Inc. Early write-back of modified data in a cache memory
CN105938447B (zh) * 2015-03-06 2018-12-14 华为技术有限公司 数据备份装置及方法
US10402337B2 (en) * 2017-08-03 2019-09-03 Micron Technology, Inc. Cache filter
US10725782B2 (en) 2017-09-12 2020-07-28 Qualcomm Incorporated Providing variable interpretation of usefulness indicators for memory tables in processor-based systems
CN108304214B (zh) * 2017-12-13 2022-05-13 超聚变数字技术有限公司 一种立即数的完整性的校验方法及装置
US10783083B2 (en) 2018-02-12 2020-09-22 Stmicroelectronics (Beijing) Research & Development Co. Ltd Cache management device, system and method
US11561895B2 (en) 2019-09-05 2023-01-24 Advanced Micro Devices, Inc. Oldest operation wait time indication input into set-dueling

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823427B1 (en) * 2001-05-16 2004-11-23 Advanced Micro Devices, Inc. Sectored least-recently-used cache replacement

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0222751A (ja) * 1988-07-11 1990-01-25 Mitsubishi Electric Corp 優先順位決定手段
FR2645986B1 (fr) * 1989-04-13 1994-06-17 Bull Sa Procede pour accelerer les acces memoire d'un systeme informatique et systeme pour la mise en oeuvre du procede
US5353425A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
JPH10198603A (ja) * 1997-01-08 1998-07-31 Canon Inc 情報処理システム及びその制御方法、情報処理装置
US6243791B1 (en) * 1998-08-13 2001-06-05 Hewlett-Packard Company Method and architecture for data coherency in set-associative caches including heterogeneous cache sets having different characteristics
US6490656B1 (en) * 2000-02-18 2002-12-03 Hewlett-Packard Company Retaining state information of an array of elements by subdividing the array into groups of elements
US6732238B1 (en) * 2001-06-08 2004-05-04 Tensilica, Inc. Set-associative cache memory having variable time decay rewriting algorithm
JP3988485B2 (ja) * 2002-02-25 2007-10-10 セイコーエプソン株式会社 キャッシュ回路、情報処理装置及び電子機器
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
EP1667028A4 (en) * 2003-09-19 2008-10-29 Matsushita Electric Ind Co Ltd ANTEMEMOIRE AND METHOD FOR CONTROLLING ANTEMEMOIRE
WO2005048112A1 (ja) * 2003-11-12 2005-05-26 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法
JP4036206B2 (ja) * 2004-03-31 2008-01-23 日本電気株式会社 セットアソシアティブキャッシュシステム及びキャッシュメモリの制御方法
US8806103B2 (en) * 2004-04-28 2014-08-12 Hewlett-Packard Development Company, L.P. System and method for interleaving memory
US7516275B2 (en) * 2006-04-25 2009-04-07 International Business Machines Corporation Pseudo-LRU virtual counter for a locking cache

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823427B1 (en) * 2001-05-16 2004-11-23 Advanced Micro Devices, Inc. Sectored least-recently-used cache replacement

Also Published As

Publication number Publication date
US7861041B2 (en) 2010-12-28
US20090063776A1 (en) 2009-03-05
TWI451330B (zh) 2014-09-01
JP5328792B2 (ja) 2013-10-30
WO2009032275A1 (en) 2009-03-12
CN101918925B (zh) 2017-05-03
JP2010538390A (ja) 2010-12-09
EP2198370A1 (en) 2010-06-23
EP2198370B1 (en) 2012-07-11
TW200912742A (en) 2009-03-16
KR20100054155A (ko) 2010-05-24
CN101918925A (zh) 2010-12-15

Similar Documents

Publication Publication Date Title
US11074190B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
KR101509628B1 (ko) 프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘
US11803486B2 (en) Write merging on stores with different privilege levels
US6496902B1 (en) Vector and scalar data cache for a vector multiprocessor
US20060155934A1 (en) System and method for reducing unnecessary cache operations
JP2006517040A (ja) キャッシュラインサイズが異なる第一レベルキャッシュと第二レベルキャッシュを備えたマイクロプロセッサ
US20100318741A1 (en) Multiprocessor computer cache coherence protocol
JP2007200292A (ja) エントリの時間経過によるキャッシュ・エントリの所有権喪失
US7882309B2 (en) Method and apparatus for handling excess data during memory access
US7454580B2 (en) Data processing system, processor and method of data processing that reduce store queue entry utilization for synchronizing operations
US20090006777A1 (en) Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor

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