KR100851738B1 - 로우-레벨 캐시를 포함한 액세스 촉진용 리버스 디렉토리 - Google Patents

로우-레벨 캐시를 포함한 액세스 촉진용 리버스 디렉토리 Download PDF

Info

Publication number
KR100851738B1
KR100851738B1 KR1020037013186A KR20037013186A KR100851738B1 KR 100851738 B1 KR100851738 B1 KR 100851738B1 KR 1020037013186 A KR1020037013186 A KR 1020037013186A KR 20037013186 A KR20037013186 A KR 20037013186A KR 100851738 B1 KR100851738 B1 KR 100851738B1
Authority
KR
South Korea
Prior art keywords
cache
level cache
level
entry
low
Prior art date
Application number
KR1020037013186A
Other languages
English (en)
Other versions
KR20040063793A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26741138&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR100851738(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 썬 마이크로시스템즈, 인코포레이티드 filed Critical 썬 마이크로시스템즈, 인코포레이티드
Publication of KR20040063793A publication Critical patent/KR20040063793A/ko
Application granted granted Critical
Publication of KR100851738B1 publication Critical patent/KR100851738B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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

Landscapes

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

Abstract

발명의 한 실시예는 로우-레벨 캐시를 통한 메모리 액세스를 수행하는 하이-레벨 캐시를 가진 다수의 프로세서를 포함하는 멀티프로세서 시스템을 제공한다. 이 멀티프로세서 시스템은 로우-레벨 캐시에 연결된 리버스 디렉토리를 또한 포함하며, 상기 로우-레벨 캐시는 하이-레벨 캐시의 라인에 해당하는 엔트리를 포함한다. 이때, 각각의 엔트리는 로우-레벨 캐시의 관련 엔트리를 식별한다. 발명의 한 실시예에서, 하이-레벨 캐시는 세트-어소시에이티브(set-associative) 캐시이고, 리버스 디렉토리에 정보를 저장하는 것은, 라인이 저장될 하이-레벨 캐시의 웨이 위치를 명시한다. 이 시스템은 하이-레벨 캐시에서 라인의 웨이 위치 결정을 위해 하이-레벨 캐시에서 탐색을 수행할 필요없이 하이-레벨 캐시의 라인을 무효화시키기 위해 차후 무효화 도작 중 이 웨이 정보를 이용하도록 기능한다.

Description

로우-레벨 캐시를 포함한 액세스 촉진용 리버스 디렉토리{REVERSE DIRECTORY FOR FACILITATING ACCESSES INVOLVING A LOWER-LEVEL CACHE}
본 발명은 멀티프로세서 시스템 설계에 관한 것이다. 특히 본 발명은 로우-레벨 캐시를 통한 액세스를 실행하는 하이-레벨 캐시를 포함한 동작을 촉진시키기 위해 로우-레벨 캐시에 위치한 리버스 디렉토리(reverse directory)를 이용하기 위한 방법 및 장치에 관한 것이다.
고속 연산 성능을 구현하기 위해, 컴퓨터 시스템 설계자들은 병렬로 동작하는 여러개의 프로세서를 이용하여 단일 연산 작업을 수행하는 것을 시도하고 있다. 대중적인 한가지 멀티프로세서 설계는 단일 레벨 2(L2) 캐시(180)와 메모리(183)를 공유하는 레벨 1(L1) 캐시(161-164)에 연결된 다수의 프로세서(151-154)를 포함한다(도 1 참조). 동작 중, 프로세서(151)가 국부 L1 캐시(161)에 존재하지 않는 데이터 아이템에 액세스할 경우, 시스템은 L2 캐시(180)로부터 데이터 아이템을 불러들이려 시도한다. 데이터 아이템이 L2 캐시(180)에 없을 경우, 시스템은 메모리(183)로부터 데이터를 L2 캐시(180)로 불러들여, 그후 L2 캐시(180)로부터 L1 캐시(161)로 데이터 아이템을 불러들인다.
동일한 데이터 아이템의 사본이 두개 이상의 L1 캐시에 존재할 경우 코히어 런스 문제점이 발생할 수 있다. 이 경우에, L1 캐시(161)의 데이터 아이템의 제 1 버전에 대한 수정이 상기 제 1 버전을, L1 캐시(162)의 데이터 아이템의 제 2 버전과 다른 것이도록 하게 할 수 있다.
코히어런시 문제점을 극복하기 위해, 컴퓨터 시스템들은 버스(170) 사이에서 동작하는 코히어런시 프로토콜을 제공하는 경우가 자주 있다. 코히어런시 프로토콜은, 데이터 아이템의 한 사본이 L1 캐시(161)에서 수정될 경우, L1 캐시(162-164), L2 캐시(180), 그리고 메모리(183) 내 동일한 데이터 아이템의 다른 사본들이 이 수정을 반영하도록 업데이트되거나 무효화되는 것을 보장한다.
코히어런시 프로토콜들은 버스(170) 사이에서 무효화 메시지를 브로드캐스팅함으로서 무효화를 실행하는 것이 일반적이다. 이러한 무효화가 자주 발생할 경우, 이 무효화 메시지는 버스(170)에 정체를 일으킬 수 있고, 따라서, 전체 시스템 성능을 저하시킬 수 있다.
이 문제점을 극복하기 위해, 일부 설계자들은 L2 캐시(180) 내 디렉토리 정보의 관리 가능성을 연구하기 시작하였다. 이에 의하면, 시스템이 모든 L1 캐시에 브로드캐스팅 메시지를 보내는 대신에 데이터 아이템을 내장한 L1 캐시에게만 무효화 정보를 전송한다(이 종류의 시스템은, L1 캐시(161-164)와의 통신에 단일 공유 버스(170)를 이용하는 도 1에 도시되는 예에서와는 달리, L1 캐시(161-164) 각각에 대한 무효화 메시지용 별도의 통신 경로가 있다고 가정한다).
그러나, L2 캐시(180)에 각각의 엔트리에 대한 디렉토리 정보를 저장하는 것은, L2 캐시(180)가 L1 캐시(161-164)보다 더 많은 엔트리를 갖는 것이 일반적이기 때문에 낭비라고 볼 수 있다. 이는, L2 캐시(180)에서의 디렉토리 정보에 대한 대부분의 엔트리가 비어있을 것임을 의미한다.
더욱이, L1 캐시(161-164)는 일반적으로 세트-어소시에이티브(set-associative)하다. 따라서, 무효화 메시지를 L1 캐시(161)에서 수신하면, 데이터 아이템의 웨이 위치(way location)의 결정을 위해 탐색 및 비교가 L1 캐시(161)에서 실행되어야 한다. 예를 들어, 4-웨이 세트-어소시에이티브(4-way set-associative) L1 캐시에서, 특정 세트(어드레스 일부에 의해 명시됨)에 속한 데이터 아이템은 네가지 웨이 중 한가지로 저장될 수 있다. 결과적으로, 데이터 아이템의 웨이 위치 결정을 위해 네가지 웨이 각각으로부터의 태그들이 불러들여져 비교되어야 한다. 이 탐색은 시간이 걸리고 시스템 성능을 저하시킬 수 있다.
메모리 낭비없이 L1 캐시에 대한 디렉토리 정보를 관리하기 위한 방법 및 장치가 이제 필요하다.
더욱이, 엔트리의 웨이 위치 결정을 위해 탐색 수행없이 L1 캐시의 엔트리를 무효화시키기 위한 방법 및 장치가 요구된다.
발명의 한 실시예는 로우-레벨 캐시(lower-level cache)을 통한 메모리 액세스를 수행하는 하이-레벨 캐시(higher-level cache)를 가진 다수의 프로세서를 포함한다. 이 멀티프로세서 시스템은 하이-레벨 캐시의 라인에 대응하는 엔트리를 포함하는 로우-레벨 캐시에 연결된 리버스 디렉토리를 또한 포함하며, 이때, 각각의 엔트리는 로우-레벨 캐시의 관련 엔트리(associative entry)를 식별한다.
발명의 한 실시예에서, 로우-레벨 캐시는 로우-레벨 캐시로부터 라인을 불러들이기 위해 하이-레벨 캐시로부터의 요청을 수신하도록 설정된다. 라인이 로우-레벨 캐시 내에 있을 경우, 시스템은 상기 라인이 하이-레벨 캐시에 저장될 수 있도록 하이-레벨 캐시에 상기 라인을 전송한다. 시스템은 상기 라인이 하이-레벨 캐시에 저장됨을 표시하기 위해 리버스 디렉토리에 정보를 또한 저장한다.
본 실시예의 변형으로서, 하이-레벨 캐시는 N-웨이 세트-어소시에이티브(set-associative)이며, 리버스 디렉토리에 정보를 저장하는 것은 라인을 저장할 하이-레벨 캐시의 웨이 위치를 식별하는 웨이 정보 저장 과정을 포함한다. 멀티프로세서 시스템은 차후 무효화 동작 중 이 웨이 정보를 이용하여, 하이-레벨 캐시에서 라인의 웨이 위치 결정을 위해 하이-레벨 캐시에서 탐색을 수행할 필요없이 하이-레벨 캐시의 라인을 무효화시키도록 추가적으로 설정된다.
발명의 한 실시예에서, 로우-레벨 캐시는 라인이 로우-레벨 캐시 내에 있지 않을 경우, 라인을 로우-레벨 캐시 내로 당기도록 미스(miss)를 발생시키도록 설정된다.
발명의 한가지 실시예에서, 로우-레벨 캐시의 타겟 엔트리를 갱신시키는 업데이트 요청을 수신하면, 시스템은 타겟 엔트리가 한개 이상의 하이-레벨 캐시에 내포되는 지를 결정하기 위해 리버스 디렉토리의 탐색을 수행한다. 타겟 엔트리를 내포한 각각의 하이-레벨 캐시의 경우, 시스템은 타겟 엔트리 무효화를 위한 무효화 요청을 하이-레벨 캐시에 전송하고, 타겟 엔트리가 하이-레벨 캐시에서 무효화되었음을 표시하기 위해 리버스 디렉토리의 해당 엔트리를 업데이트한다.
업데이트 요청은 타겟 엔트리 상에서의 로드 미스(load miss), 저장 미스(store miss), 그리고 저장 히트(store hit)를 포함할 수 있다. 업데이트 요청이 저장 히트일 경우, 리버스 디렉토리의 탐색은 저장 히트를 유발시킨 하이-레벨 캐시만을 제외하고, 하이-레벨 캐시의 타겟 엔트리를 탐색하는 과정을 포함한다.
발명의 한 실시예에서, 리버스 디렉토리는 각각의 하이-레벨 캐시의 각각의 엔트리에 대응하는 고정 엔트리를 포함한다.
발명의 한 실시예에서, 리버스 디렉토리의 각각의 엔트리는 로우-레벨 캐시의 대응 엔트리의 위치를 명시하는 정보를 포함한다.
발명의 한 실시예에서, 로우-레벨 캐시는 M-웨이 세트 어소시에이티브 캐시로 조직된다. 본 실시예에서, 리버스 디렉토리의 각각의 엔트리는, 로우-레벨 캐시 내 대응 엔트리의 웨이 위치를 식별하는 웨이 식별자, 로우-레벨 캐시 내 대응 엔트리의 세트 위치를 식별하는 세트 식별자, 그리고 리버스 디렉토리의 엔트리가 유효한 지를 표시하는 유효 플랙(valid flag)을 포함하며, 이때, 상기 세트 식별자는 리버스 디렉토리 내 엔트리 위치로부터 추정될 수 있는 세트 정보를 포함하지 않는다.
발명의 한 실시예에서, 멀티프로세서 시스템은 단일 반도체 칩 상에 위치한다.
본 발명의 한 실시예에서, 로우-레벨 캐시는 L2 캐시이고, 각각의 하이-레벨 캐시는 L1 캐시이다.
발명의 한 실시예에서, 하이-레벨 캐시는 라이트-스루(write-through) 캐시로 조직되어, 하이-레벨 캐시에 대한 업데이트가 로우-레벨 캐시에 즉시 기록(write-through)된다.
발명의 한 실시예에서, 로우-레벨 캐시는 병렬로 액세스될 수 있는 멀티 뱅크(multiple bank)를 포함한다.
도 1A는 멀티프로세서 시스템의 도면.
도 1B는 발명의 한 실시예에 따른 리버스 디렉토리를 지닌 멀티프로세서 시스템의 도면.
도 2는 발명의 한 실시예에 따르는 멀티프로세서 시스템 내 멀티뱅크를 지닌 L2 캐시 도면.
도 3은 본 발명의 한 실시예에 따른 리버스 디렉토리의 도면.
도 4는 본 발명의 한 실시예에 따른 리버스 디렉토리 엔트리의 도면.
도 5는 본 발명의 한 실시예에 따른 리버스 디렉토리 엔트리의 생성/업데이트 과정의 순서도.
도 6은 발명의 한 실시예에 따른 무효화를 수행하기 위해 리버스 디렉토리 엔트리를 이용하는 과정의 순서도.
멀티프로세서 시스템
도 1B는 본 발명의 한 실시예에 따른 리버스 디렉토리를 구비한 멀티프로세서 시스템(100)을 도시한다. 멀티프로세서 시스템(100)의 상당부분이 단일 반도체 칩(1010) 내에 위치한다. 특히, 반도체 칩(101)은 레벨 1(L1) 캐시(112, 122, 132, 142)를 각각 내포하는 다수의 프로세서(110, 120, 130, 140)를 포함한다. L1 캐시(112, 122, 132, 142)는 별도의 명령 및 데이터 캐시일 수도 있고, 또는 통합된 명령/데이터 캐시일 수도 있다. L1 캐시(112, 122, 132, 142)는 레벨 2(L2) 캐시(106)에 연결되며, 레벨 2 (L2) 캐시(106)는 리버스 디렉토리(302)를 포함하고, 리버스 디렉토리(302)는 아래 도 3-6을 참고하여 보다 상세하게 설명될 것이다. L2 캐시(106)는 메모리 콘트롤러(104)를 통해 칩 외부의 메모리(102)에 연결된다.
발명의 한 실시예에서, L1 캐시(112, 122, 132, 142)는 라이트-스루(write-through) 캐시로서, 이는 L1 캐시(112, 122, 132, 142)에 대한 모든 업데이트가 자동적으로 L2 캐시(106)에 전파됨을 의미한다. 이는 코히어런스 프로토콜을 단순하게 한다. 왜냐하면, L1 캐시(112)에 있는 데이터 아이템을 프로세서(110)가 요구할 경우, 프로세서(110)가 데이터 소싱(sourcing)을 위해 L1 캐시(112)를 기다릴 필요없이 L2 캐시(106)로부터 데이터를 수신할 수 있기 때문이다. 더욱이, L1 캐시(112)가 데이터를 소싱하도록 하기 위해, 어떤 전달 네트워크(forwarding network)도 필요하지 않다. 발명의 한 실시예에서, L2 캐시(106)는 "인클러시브 캐시(inclusive cache)"로서, 이는 L1 캐시(112, 122, 132, 142)의 모든 아이템들이 L2 캐시(106)에 포함됨을 의미한다.
멀티뱅크를 지닌 L2 캐시
도 2는 발명의 한 실시예에 따른 멀티 뱅크를 지닌 L2 캐시(106)를 도시한다. 본 실시예에서, L2 캐시(106)는 네 개의 뱅크(202-205)로 구현되며, 이때, 네 개의 뱅크(202-205)는 스위치(220)를 통해 프로세서(110, 120, 130, 140)에 의해 병렬로 액세스될 수 있다. 메모리 요청이 전달될 네 개의 뱅크(202-205) 중 하나를 결정하기 위해 2비트의 어드레스만이 요구된다. 스위치(120)는 입출력 장치와 통신하기 위한 입/출력 포트(150)를 추가적으로 포함한다. 또한, 이들 뱅크(202-205) 각각은 리버스 디렉토리를 포함한다. 더욱이, 각각의 뱅크(202-205)는 독자적인 메모리 콘트롤러(212-215)를 가지며, 이는 칩 외부 메모리(232-235)의 관련 뱅크에 연결된다.
이 구조로, L2 캐시의 독자적 뱅크에 각각의 L1 캐시를 동시에 연결할 수 있고, 이는 L2 캐시(106)로의 대역폭을 증가시킨다.
리버스 디렉토리
도 3은 발명의 한 실시예에 따른 관련 리버스 디렉토리(302)와 함께 L2 뱅크(202)를 도시한다. L2 뱅크(202)는 명령 및 데이터를 저장하기 위한 8-웨이 세트 어소시에이티브 캐시(304)를 내장한다. 어드레스의 일부는 캐시(304) 내 세트를 결정하는 데 사용되며, 이는 캐시(304)의 행으로 표시된다. 주어진 세트 내에서, 8가지의 서로 다른 엔트리가 8개의 서로 다른 "웨이 위치(way locations)" 각각에 저장될 수 있고, 이는 캐시(304)의 8개의 열에 의해 표시된다.
리버스 디렉토리(302)는 각각의 L1 캐시에 대해 별도의 블록을 포함한다. 보다 구체적으로 말하자면, 블록(312)은 L1 캐시(112)에, 블록(322)은 L1 캐시(122)에, 블록(332)은 L1 캐시(132)에, 블록(342)은 L1 캐시(142)에 관련된다.
이 블록들(312, 322, 332, 342)은 관련 L1 캐시(112, 122, 132, 142)의 각각의 라인에 대한 엔트리를 각각 포함한다. 더욱이, L1 캐시(112)가 4-웨이 세트 어소시에이티브 캐시로 조직되기 때문에, 리버스 디렉토리(302) 내의 관련 블록(312)은 동일한 방식으로 또한 조직된다. 그러나, L1 캐시(112) 내의 엔트리들이 데이터 및 명령을 내포함에 비해, 관련 블록(312) 내의 엔트리들은 캐시(304) 내 라인 위치를 명시하는 인덱스 정보를 내포한다.
리버스 디렉토리 엔트리
도 4는 발명의 한 실시예에 따라 리버스 디렉토리 엔트리(430)가 어떻게 생성되는지를 도시한다.
도 4의 상부는 메모리(102) 내 데이터 아이템(또는 명령)의 어드레스(400)를 도시한다. L1 캐시(112)는 이 어드레스를 L1 태그(412), L1 세트 번호(414), 그리고 L1 라인 오프셋(418)으로 나눈다. L1 세트 번호(414)는 4웨이 세트 어소시에이티브 L1 캐시(112)의 구체적 세트를 탐색하는 데 사용된다. L1 태그(412)는 L1 캐시(112)에 저장되며, 각각의 세트에 대해 4-웨이 세트-어소시에이티브 메모리를 구현할 용도로 비교 실행에 사용된다. L1 라인 오프셋(418)은 L1 캐시(112)의 라인 내 구체적 데이터 아이템의 위치를 결정한다.
L2 캐시(106)는 어드레스(400)를 L2 태그(402), L2 세트 번호(404), L2 뱅크 번호(406), 그리고 L2 라인 오프셋(408)으로 나눈다. L2 뱅크 번호(406)는 L2 캐시(106)의 네 개의 뱅크(202-205)로부터 구체적 뱅크를 결정한다. L2 세트 번호(404)는 L2 캐시(106)의 8-웨이 어소시에이티브 뱅크의 구체적 세트를 탐색하는 데 사용된다. L2 태그(402)는 L2 캐시(106)의 구체적 뱅크에 저장되며, 각 세트에 대한 8-웨이 세트-어소시에이티브 메모리를 구현할 용도로 비교 실행에 사용된다. L2 라인 오프셋(408)은 L2 캐시(106)의 라인 내 특정 데이터 아이템의 위치를 결정한다.
리버스 디렉토리(302) 내 어드레스(400)에 대한 관련 엔트리(430)는 잘려진 L2 세트 번호(424), L2 웨이 번호(429), 그리고 유효 비트(427)를 내포한다. 잘려진 L2 세트 번호(424)는 L1 캐시(112) 내 엔트리 위치로부터 결정될 수 없는 L2 세트 번호(404)의 일부분을 포함한다. 다시 말해서, 잘려진 L2 세트 번호(424)는 L1 세트 번호(414)와 겹쳐지지 않는 L2 세브 번호(404) 부분을 내포한다. L2 웨이 번호(429)는 캐시(304)에서, 라인에 대한 8가지 가능한 웨이 위치으로부터, 라인의 열 위치를 명시하는 3-비트 인덱스를 내포한다. 마지막으로, 유효 비트(427)는 엔트리(430)가 유효한 지를 표시한다.
L2 캐시(106) 내의 각각의 라인에 대하여 L1 캐시의 위치를 저장하는 대신, 도시된 실시예는 각각의 L1 캐시의 위치에 대한 엔트리를 저장하며, 이들 엔트리 각각이 상기 L1 캐시의 위치과 관련된 L2 캐시의 위치를 특정한다.
따라서 디렉토리(302)는 "리버스 디렉토리(reverse directory)"라고 여겨질 수 있다. 왜냐하면, 각각의 L2 엔트리로부터 L1 엔트리로 포인터를 유지하는 대신, 각각의 L1 엔트리로부터 대응하는 L2 엔트리로, 역(reverse) 방향으로 포인터를 유지할 수 있기 때문이다. 이에 따라서, L2 엔트리보다 L1 엔트리가 더 적게 존재하는 것이 일반적이기 때문에 메모리가 절약된다.
리버스 디렉토리 엔트리 생성 과정
도 5는 발명의 한 실시예에 따르는 리버스 디렉토리 엔트리를 생성 또는 업데이트하는 과정의 순서도이다. 이 과정은 라인을 불러오기 위한 요청이 L1 캐시(112)로부터 L2 캐시(106)에서 수신될 때 시작된다(502). 이 요청은 어드레스(400), L1 캐시(112)를 식별하는 L1 캐시 번호, 그리고 불려온 후 라인이 저장될 L1 캐시(112) 내의 웨이 위치를 포함한다.
그 다음으로, 요청이 L2 캐시(106)에서의 미스(miss)를 발생시키는 경우, 시스템은 메모리(102)로부터 라인을 L2 캐시(106)로 불러들인다(504). 이렇게 불러들임으로써, L2 캐시(106)의 기존 엔트리가 무효화될 경우, 그 후, 리버스 디렉토리(302)에서의 대응하는 엔트리가 무효화될 수 있다.
그 후 시스템은 L2 캐시(106)로부터 라인을 불러들이고, L1 캐시(112)로 라인을 전송한다(506).
또한 시스템은 리버스 디렉토리(302)를 위해 엔트리(430)를 구축한다(508). 이 엔트리는 잘려진 L2 세트 번호(424), L2 웨이 번호(429), 그리고 유효 비트(427)를 포함한다(도 4 참조).
그 후 시스템이 리버스 디렉토리(302)의 하나의 위치로 엔트리를 저장한다(510). 상기 위치는 다수의 아이템에 의해 결정된다. L2 뱅크 번호(406)로부터, 시스템은 L2 뱅크(202)를 조사할 것을 안다. L1 캐시 번호로부터, 시스템은 블록(312)을 조사할 것을 알며, 상기 블록은 L1 캐시(112)에 관련된 블록이다. 어드레스(400)로부터, 시스템은 특정 L1 세트와 관련된 행을 결정한다. 요청과 함께 수신한 L1 웨이 위치로부터, 시스템은 상기 행 내의 열을 결정한다.
리버스 디렉토리 엔트리의 이용 과정
도 6은 발명의 한 실시예에 따른 무효화(invalidation)를 수행하기 위해 리버스 디렉토리 엔트리를 이용하는 과정의 순서도를 도시한다. 이 시스템은 L2 캐시(106)의 업데이트를 유발시키는 요청을 수신함으로서 시작된다(602). 이 요청은, 또다른 프로세서에 의한 타겟 엔트리에 대한 저장 히트(store hit), 로드 미스(load miss), 또는 저장 미스(store miss)를 포함할 수 있다.
그 후, 시스템은 리버스 디렉토리(302)에서, 요청에 대한 엔트리를 재구축한다. 이는, L2 캐시(106)에서의 조사를 수행하여, 타겟 엔트리가 위치하고 있는 L2 웨이 번호(429)를 결정하고(604), 도 4에서 설명한 바와 같이 어드레스(400)로부터 L2 세트 번호(404)를 불러옴으로써(606), 이뤄진다. 이 값들이 조합되어 리버스 디렉토리 엔트리(130)가 구성된다.
그 후, 시스템은 어떤 L1 캐시가 엔트리를 내포하는 지를 결정하기 위해 리버스 디렉토리(302)를 검색하기 위해, 이 엔트리를 이용한다(608). 시스템은 L2 뱅크 번호(406)에 의해 명시되는 L2 캐시(206)의 뱅크에 관련된 리버스 디렉토리만 검색하면 된다. 덧붙이자면, 리버스 디렉토리 내 세트 번호는 어드레스로부터 결정될 수 있고, 이는 검색이 각각의 세트에 대해 네 가지 가능한 "웨이(ways)"의 엔트리들을 고려하기만 하면 된다는 것을 의미한다. 요청이 또다른 프로세서에 의한 저장 히트일 경우, 시스템은 저장 히트를 유발한 프로세서에 대한 뱅크를 검색할 필요가 없다.
상기 엔트리를 내포한 각각의 L1 캐시의 경우, 시스템은 L1 캐시에 무효화 메시지를 전송한다. 이 무효화 메시지는 L1 웨이 번호를 포함하여, L1 캐시의 관련 탐색을 피할 수 있게 한다. 시스템은 무효화되었음을 표시하기 위해 해당 리버스 디렉토리 엔트리를 또한 업데이트한다(610).

Claims (30)

  1. 멀티프로세서 시스템에 있어서, 상기 시스템은,
    - 다수의 프로세서(110, 120, 130, 140),
    - 하나의 로우-레벨 캐시(106),
    - 상기 다수의 프로세서(110, 120, 130, 140)에 연결된 다수의 하이-레벨 캐시(112, 122, 132, 142), 그리고
    - 상기 로우-레벨 캐시(106)에 연결된 리버스 디렉토리(302)
    를 포함하며, 이때,
    다수의 하이-레벨 캐시(112, 122, 132, 142) 각각은 로우-레벨 캐시(106)를 통한 메모리 액세스를 수행하도록 구성되며, 또한, 상기 리버스 디렉토리(302)에는 다수의 하이-레벨 캐시(112, 122, 132, 142)의 라인에 대한 엔트리(entry)가 포함되며, 이때 상기 각각의 엔트리에 의해 로우-레벨 캐시(106)에서의 관련 엔트리가 식별되며,
    상기 하이-레벨 캐시(112, 122, 132, 142)는 N-웨이 세트-어소시에티브(N-way set-associative) 캐시이고,
    상기 리버스 디렉토리(302)에 정보를 저장하는 것은, 라인이 저장될 하이-레벨 캐시(112, 122, 132, 142)에서의 웨이 위치(way location)을 식별하기 위해 사용되는 웨이 정보(way information)를 저장하는 것을 포함하는 것을 특징으로 하는 멀티프로세서 시스템.
  2. 제 1 항에 있어서, 상기 로우-레벨 캐시(106)는
    - 로우-레벨 캐시(106)로부터 라인을 불러들이기 위한 요청을, 하이-레벨 캐시(112, 122, 132, 142)로부터 수신하도록, 그리고
    상기 라인이 로우-레벨 캐시(106) 내에 존재하는 경우,
    - 상기 하이-레벨 캐시(112, 122, 132, 142)로 라인을 전송하여, 상기 라인이 하이-레벨 캐시(112, 122, 132, 142)에 저장되도록, 그리고
    - 상기 라인이 하이-레벨 캐시(112, 122, 132, 142)에 저장되어 있음을 나타내는 정보를 리버스 디렉토리(302)에 저장하도록
    구성되는 것을 특징으로 하는 멀티프로세서 시스템.
  3. 삭제
  4. 삭제
  5. 제 2 항에 있어서, 상기 로우-레벨 캐시(106)는
    로우-레벨 캐시(106) 내에 라인이 존재하지 않고, 하이-레벨 캐시(112, 122, 132, 142)로부터 수신된 요청에 의해, 상기 로우-레벨 캐시(106)에서 캐시 미스(miss)가 발생한 경우, 상기 하위-레벨 캐시는 메모리(102)로부터 요청된 라인을 불러오도록
    더 구성되는 것을 특징으로 하는 멀티프로세서 시스템.
  6. 제 1 항에 있어서, 상기 로우-레벨 캐시(106)는,
    - 로우-레벨 캐시(106)의 타겟 엔트리를 업데이트시키는 업데이트 요청을 수신하도록,
    - 타겟 엔트리가 하나 이상의 하이-레벨 캐시(112, 122, 132, 142)에 내포될 경우 리버스 디렉토리(302)의 탐색을 수행하도록, 그리고
    타겟 엔트리를 내포한 각각의 하이-레벨 캐시(112, 122, 132, 142)에 대하여,
    - 타겟 엔트리 무효화를 위해 하이-레벨 캐시(112, 122, 132, 142)에 무효화 요청을 전송하도록,
    - 타겟 엔트리가 하이-레벨 캐시(112, 122, 132, 142)에서 무효화되었음을 표시하기 위해 리버스 디렉토리(302)에 대응하는 엔트리를 업데이트하도록
    더 구성되는 것을 특징으로 하는 멀티프로세서 시스템.
  7. 제 6 항에 있어서, 상기 업데이트 요청은,
    - 로드 미스(a load miss),
    - 저장 미스(a store miss),
    - 타겟 엔트리에 대한 저장 히트(a store hit)
    중 하나를 포함하는 것을 특징으로 하는 멀티프로세서 시스템.
  8. 제 7 항에 있어서, 상기 업데이트 요청이 저장 히트(store hit)일 경우, 리버스 디렉토리(302)를 탐색하는 것은, 상기 저장 히트를 촉발시킨 하이-레벨 캐시를 제외하고, 다수의 하이-레벨 캐시(112, 122, 132, 142)의 타겟 엔트리를 탐색하는 것을 포함하는 것을 특징으로 하는 멀티프로세서 시스템.
  9. 제 1 항에 있어서, 상기 리버스 디렉토리(302)는 다수의 하이-레벨 캐시(112, 122, 132, 142) 각각에서 각각의 엔트리에 해당하는 고정 엔트리를 포함하는 것을 특징으로 하는 멀티프로세서 시스템.
  10. 제 9 항에 있어서, 리버스 디렉토리(302)의 각각의 엔트리는 로우-레벨 캐시(106)의 해당 엔트리의 위치를 명시하는 정보를 포함하는 것을 특징으로 하는 멀티프로세서 시스템.
  11. 제 9 항에 있어서,
    상기 로우-레벨 캐시(106)는 M-웨이 세트 어소시에이티브 캐시(M-way set associative cache)로 조직되고,
    리버스 디렉토리(302)의 각각의 엔트리는,
    - 로우-레벨 캐시(106) 내 해당 엔트리의 웨이 위치를 식별하기 위해 사용되는 웨이 식별자(way identifier),
    - 로우-레벨 캐시(106) 내 해당 엔트리의 세트 위치를 식별하기 위해 사용되는 세트 식별자(set identifier)로서, 리버스 디렉토리(302) 내 엔트리의 위치로부터 추정될 수 있는 세트 정보를 포함하지 않는 세트 식별자, 그리고
    리버스 디렉토리(302)의 엔트리의 유효 여부를 나타내는 유효 플랙(valid flag)
    을 포함하는 것을 특징으로 하는 멀티프로세서 시스템.
  12. 제 1 항에 있어서, 상기 멀티프로세서 시스템은 단일 반도체 칩 상에 위치하는 것을 특징으로 하는 멀티프로세서 시스템.
  13. 제 1 항에 있어서,
    상기 로우-레벨 캐시(106)가 L2 캐시이고,
    다수의 하이-레벨 캐시(112, 122, 132, 142) 각각이 L1 캐시인 것을 특징으로 하는 멀티프로세서 시스템.
  14. 제 1 항에 있어서, 다수의 하이-레벨 캐시(112, 122, 132, 142)가 라이트-스루(write-through) 캐시로 조직되어, 다수의 하이-레벨 캐시(112, 122, 132, 142)에 대한 업데이트가 로우-레벨 캐시(106)에 즉시 기록(write through)되는 것을 특징으로 하는 멀티프로세서 시스템.
  15. 제 1 항에 있어서, 로우-레벨 캐시(106)는 병렬로 액세스될 수 있는 여러개의 뱅크(multibank)를 포함하는 것을 특징으로 하는 멀티프로세서 시스템.
  16. 단일-칩 멀티프로세서 시스템에 있어서, 이 시스템은,
    - 반도체 칩,
    - 상기 반도체 칩 내의 다수의 프로세서(110, 120, 130, 140),
    - 반도체 칩 내의 하나의 L2 캐시,
    - 반도체 칩 내에 위치하여 다수의 프로세서(110, 120, 130, 140)에 연결된 다수의 L1 캐시,
    - 상기 L2 캐시에 연결된 리버스 디렉토리(302)
    를 포함하며, 이때, 상기 다수의 L1 캐시 각각은 L2 캐시를 통한 메모리 액세스를 수행하도록 구성되며,
    상기 다수의 L1 캐시는 라이트-스루(write-through)캐시로 조직되어, 다수의 L1 캐시에 대한 업데이트가 L2 캐시에 즉시 기록(write through)되도록 하며,
    이때 상기 리버스 디렉토리(302)에는 다수의 L1 캐시의 라인에 대한 엔트리(entry)가 포함되며, 이때 상기 각각의 엔트리에 의해 L2 캐시에서의 관련 엔트리가 식별되며,
    상기 L1 캐시는 N-웨이 세트-어소시에티브(N-way set-associative) 캐시이며,
    상기 리버스 디렉토리(302)에 정보를 저장하는 것은, 라인이 저장될 하이-레벨 캐시(112, 122, 132, 142)에서의 웨이 위치(way location)을 식별하기 위해 사용되는 웨이 정보(way information)를 저장하는 것을 포함하는 것을 특징으로 하는 것을 특징으로 하는 단일-칩 멀티프로세서 시스템.
  17. 로우-레벨 캐시(106)를 통해 데이터를 액세스하는 다수의 하이-레벨 캐시(112, 122, 132, 142)를 포함하는 컴퓨터 시스템의 동작 방법으로서, 상기 방법은,
    로우-레벨 캐시(106)로부터 라인을 불러들이기 위한 요청을, 하이-레벨 캐시(112, 122, 132, 142)로부터 수신하는 단계, 그리고
    상기 라인이 로우-레벨 캐시(106) 내에 존재하는 경우,
    - 상기 하이-레벨 캐시(112, 122, 132, 142)로 라인을 전송하여, 상기 라인이 하이-레벨 캐시(112, 122, 132, 142)에 저장되는 단계, 그리고
    - 상기 라인이 하이-레벨 캐시(112, 122, 132, 142)에 저장되어 있음을 나타내는 정보를 리버스 디렉토리(302)에 저장하는 단계
    를 포함하며, 이때,
    상기 리버스 디렉토리(302)에는 다수의 하이-레벨 캐시(112, 122, 132, 142)의 라인에 대한 엔트리(entry)가 포함되며, 이때 상기 각각의 엔트리에 의해 로우-레벨 캐시(106)에서의 관련 엔트리가 식별되며,
    상기 하이-레벨 캐시(112, 122, 132, 142)는 N-웨이 세트-어소시에티브(N-way set-associative) 캐시이고,
    상기 리버스 디렉토리(302)에 정보를 저장하는 것은, 라인이 저장될 하이-레벨 캐시(112, 122, 132, 142)에서의 웨이 위치(way location)을 식별하기 위해 사용되는 웨이 정보(way information)를 저장하는 것을 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  18. 삭제
  19. 삭제
  20. 제 17 항에 있어서, 상기 방법은,
    - 로우-레벨 캐시(106)의 타겟 엔트리를 업데이트시키는 업데이트 요청을 수신하는 단계,
    - 타겟 엔트리가 하나 이상의 하이-레벨 캐시(112, 122, 132, 142)에 내포될 경우 리버스 디렉토리(302)의 탐색을 수행하는 단계, 그리고
    타겟 엔트리를 내포한 각각의 하이-레벨 캐시(112, 122, 132, 142)에 대하여,
    - 타겟 엔트리 무효화를 위해 하이-레벨 캐시(112, 122, 132, 142)에 무효화 요청을 전송하는 단계,
    - 타겟 엔트리가 하이-레벨 캐시(112, 122, 132, 142)에서 무효화되었음을 표시하기 위해 리버스 디렉토리(302)에 대응하는 엔트리를 업데이트하는 단계
    를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  21. 제 20 항에 있어서, 상기 업데이트 요청은,
    - 로드 미스(a load miss),
    - 저장 미스(a store miss), 그리고
    - 타겟 엔트리 상의 저장 히트(a store hit)
    중 하나를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  22. 제 21 항에 있어서, 상기 업데이트 요청이 저장 히트(store hit)일 경우, 리버스 디렉토리(302)를 탐색하는 것은, 상기 저장 히트를 촉발시킨 하이-레벨 캐시를 제외하고, 다수의 하이-레벨 캐시(112, 122, 132, 142)의 타겟 엔트리를 탐색하는 것을 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  23. 제 17 항에 있어서, 상기 리버스 디렉토리(302)는 다수의 하이-레벨 캐시(112, 122, 132, 142) 각각에서 각각의 엔트리에 해당하는 고정 엔트리를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  24. 제 23 항에 있어서, 리버스 디렉토리(302)의 각각의 고정 엔트리는 로우-레벨 캐시(106)의 해당 엔트리의 위치를 명시하는 정보를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  25. 제 23 항에 있어서,
    상기 로우-레벨 캐시(106)는 M-웨이 세트-어소시에이티브 캐시(M-way set associative cache)로 조직되고, 그리고
    상기 리버스 디렉토리(302)의 각각의 엔트리는,
    - 로우-레벨 캐시(106) 내 해당 엔트리의 웨이 위치를 식별하는 웨이 식별자(way identifier),
    - 로우-레벨 캐시(106) 내 해당 엔트리의 세트 위치를 식별하기 위해 사용되는 세트 식별자로서, 리버스 디렉토리(302) 내 엔트리 위치로부터 추정될 수 있는 세트 정보를 포함하지 않는 세트 식별자(set identifier), 그리고
    - 리버스 디렉토리(302)의 엔트리가 유효한지의 여부를 나타내는 유효 플래그(valid flag)
    를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  26. 제 17 항에 있어서, 상기 방법은,
    - 로우-레벨 캐시(106) 내에 라인이 존재하지 않고, 하이-레벨 캐시(112, 122, 132, 142)로부터 수신된 요청에 의해, 상기 로우-레벨 캐시(106)에서 캐시 미스(miss)가 발생한 경우, 상기 하위-레벨 캐시는 메모리(102)로부터 요청된 라인을 불러오는 단계
    를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  27. 제 17 항에 있어서,
    상기 다수의 하이-레벨 캐시(112, 122, 132, 142)와 로우-레벨 캐시(106)가 단일 반도체 칩 상에 위치하며, 그리고
    다수의 하이-레벨 캐시(112, 122, 132, 142) 각각이 단일 반도체 칩 상에 위치하는 관련 프로세서에 연결되는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  28. 제 17 항에 있어서,
    상기 로우-레벨 캐시(106)가 L2 캐시이고, 그리고
    상기 다수의 하이-레벨 캐시(112, 122, 132, 142) 각각이 L1 캐시인 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  29. 제 17 항에 있어서, 다수의 하이-레벨 캐시(112, 122, 132, 142)가 라이트-스루(write-through) 캐시로 조직되어, 다수의 하이-레벨 캐시(112, 122, 132, 142)에 대한 업데이트가 로우-레벨 캐시(106)에 즉시 기록(write through)되도록 하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
  30. 제 17 항에 있어서, 상기 로우-레벨 캐시(106)가 병렬로 액세스될 수 있는 여러개의 뱅크(multibank)를 포함하는 것을 특징으로 하는 컴퓨터 시스템 동작 방법.
KR1020037013186A 2001-04-11 2002-04-11 로우-레벨 캐시를 포함한 액세스 촉진용 리버스 디렉토리 KR100851738B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US28325401P 2001-04-11 2001-04-11
US60/283,254 2001-04-11
US10/061,502 US6684297B2 (en) 2001-04-11 2002-01-31 Reverse directory for facilitating accesses involving a lower-level cache
US10/061,502 2002-01-31
PCT/US2002/011560 WO2002084492A2 (en) 2001-04-11 2002-04-11 Reverse directory for facilitating accesses involving a lower-level cache

Publications (2)

Publication Number Publication Date
KR20040063793A KR20040063793A (ko) 2004-07-14
KR100851738B1 true KR100851738B1 (ko) 2008-08-11

Family

ID=26741138

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037013186A KR100851738B1 (ko) 2001-04-11 2002-04-11 로우-레벨 캐시를 포함한 액세스 촉진용 리버스 디렉토리

Country Status (8)

Country Link
US (1) US6684297B2 (ko)
EP (1) EP1537485B1 (ko)
JP (1) JP4162493B2 (ko)
KR (1) KR100851738B1 (ko)
AU (1) AU2002250576A1 (ko)
DE (1) DE60232552D1 (ko)
TW (1) TW567415B (ko)
WO (1) WO2002084492A2 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7139881B2 (en) * 2003-09-25 2006-11-21 International Business Machines Corporation Semiconductor device comprising a plurality of memory structures
WO2006128062A2 (en) * 2005-05-25 2006-11-30 Terracotta, Inc. Database caching of queries and stored procedures using database provided facilities for dependency analysis and detected database updates for invalidation
JP4920378B2 (ja) * 2006-11-17 2012-04-18 株式会社東芝 情報処理装置およびデータ検索方法
US8028131B2 (en) * 2006-11-29 2011-09-27 Intel Corporation System and method for aggregating core-cache clusters in order to produce multi-core processors
US8151059B2 (en) * 2006-11-29 2012-04-03 Intel Corporation Conflict detection and resolution in a multi core-cache domain for a chip multi-processor employing scalability agent architecture
US20090210629A1 (en) * 2008-02-15 2009-08-20 International Business Machines Corporation Method, system and computer program product for selectively purging cache entries
US8095736B2 (en) * 2008-02-25 2012-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
JP4821887B2 (ja) 2009-06-08 2011-11-24 日本電気株式会社 コヒーレンシ制御システム、コヒーレンシ制御装置及びコヒーレンシ制御方法
US8639885B2 (en) * 2009-12-21 2014-01-28 Oracle America, Inc. Reducing implementation costs of communicating cache invalidation information in a multicore processor
US8521960B2 (en) 2010-06-23 2013-08-27 International Business Machines Corporation Mitigating busy time in a high performance cache
CN102117262B (zh) * 2010-12-21 2012-09-05 清华大学 用于多核处理器的Cache的主动复制方法及系统
KR102366808B1 (ko) 2014-10-22 2022-02-23 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US9720834B2 (en) * 2015-12-11 2017-08-01 Oracle International Corporation Power saving for reverse directory
US10956339B2 (en) * 2016-07-14 2021-03-23 Advanced Micro Devices, Inc. System and method for storing cache location information for cache entry transfer

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0512117A (ja) * 1991-07-04 1993-01-22 Toshiba Corp キヤツシユ一致化方式
US5553263A (en) * 1993-07-16 1996-09-03 Unisys Corporation Cache memory system with fault tolerance having concurrently operational cache controllers processing disjoint groups of memory
US5530832A (en) * 1993-10-14 1996-06-25 International Business Machines Corporation System and method for practicing essential inclusion in a multiprocessor and cache hierarchy
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
KR0159699B1 (ko) * 1996-06-12 1999-01-15 김광호 냉장고
US6122709A (en) * 1997-12-19 2000-09-19 Sun Microsystems, Inc. Cache with reduced tag information storage
US6151655A (en) * 1998-04-30 2000-11-21 International Business Machines Corporation Computer system deadlock request resolution using timed pulses
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6338119B1 (en) * 1999-03-31 2002-01-08 International Business Machines Corporation Method and apparatus with page buffer and I/O page kill definition for improved DMA and L1/L2 cache performance
US6725334B2 (en) * 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
(1) Barroso L A ET AL : "Piranha: A Scalable Architecture Based On Single-Chip Multiprocessing" Proceedings of the 27th. International Symposium on Computer Architecture. (ISCA-27). Vancouver, Brithis
(2) Kunle Olukotun, Jules Bergmann, Kun-Yung Chang and Basem A. Nayfeh : "Rationale, Design and Performance of the Hydra Multiprocessor"
(3) Nayfeh B A ET AL: "The impact of shared-cache clustering in small-scale shared-memory multiprocessors"

Also Published As

Publication number Publication date
WO2002084492A2 (en) 2002-10-24
DE60232552D1 (de) 2009-07-16
JP2005509204A (ja) 2005-04-07
KR20040063793A (ko) 2004-07-14
WO2002084492A3 (en) 2005-04-14
US6684297B2 (en) 2004-01-27
TW567415B (en) 2003-12-21
US20020178329A1 (en) 2002-11-28
EP1537485B1 (en) 2009-06-03
EP1537485A2 (en) 2005-06-08
AU2002250576A1 (en) 2002-10-28
JP4162493B2 (ja) 2008-10-08

Similar Documents

Publication Publication Date Title
KR100567099B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
KR100704089B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치
US4774654A (en) Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
US6564302B1 (en) Information processing apparatus with cache coherency
KR100318789B1 (ko) 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법
KR100851738B1 (ko) 로우-레벨 캐시를 포함한 액세스 촉진용 리버스 디렉토리
JPH02297645A (ja) データ処理装置およびその高速待ち行列機構
JPH04227552A (ja) ストアスルーキャッシュ管理システム
KR100828869B1 (ko) 사이클당 다중 캐시 라인 무효화 지원 장치 및 방법
US6792498B2 (en) Memory system with mechanism for assisting a cache memory
US6839806B2 (en) Cache system with a cache tag memory and a cache tag buffer
KR101102260B1 (ko) 가상 어드레스 캐시 및 고유 태스크 식별자를 이용하는데이터를 공유하기 위한 방법
US20010032297A1 (en) Cache memory apparatus and data processing system
US6397298B1 (en) Cache memory having a programmable cache replacement scheme
US20060015689A1 (en) Implementation and management of moveable buffers in cache system
JP2976980B2 (ja) キャッシュ制御方式
JPH10207773A (ja) バス接続装置
JPH07101412B2 (ja) データ事前取出し方法およびマルチプロセッサ・システム
JPH1055309A (ja) 階層キャッシュメモリ装置
JP2000267938A (ja) キャッシュ記憶装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120727

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130723

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140722

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150716

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160720

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190718

Year of fee payment: 12