KR100970229B1 - 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템 - Google Patents

원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템 Download PDF

Info

Publication number
KR100970229B1
KR100970229B1 KR1020057005294A KR20057005294A KR100970229B1 KR 100970229 B1 KR100970229 B1 KR 100970229B1 KR 1020057005294 A KR1020057005294 A KR 1020057005294A KR 20057005294 A KR20057005294 A KR 20057005294A KR 100970229 B1 KR100970229 B1 KR 100970229B1
Authority
KR
South Korea
Prior art keywords
cache
memory subsystem
data
cache memory
remote
Prior art date
Application number
KR1020057005294A
Other languages
English (en)
Other versions
KR20050070013A (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 KR20050070013A publication Critical patent/KR20050070013A/ko
Application granted granted Critical
Publication of KR100970229B1 publication Critical patent/KR100970229B1/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/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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
    • 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

원격 캐시 존재 정보를 포함하는 프로세서 캐시를 구비한 컴퓨터 시스템이 제시된다. 일 실시예에서, 다른 노드에 매핑된 특정 데이터 블록이 원격적으로 캐시되었는지 여부를 나타내기 위해 다수의 존재 벡터가 저장된다. 상기 존재 벡터를 전용 스토리지에 저장하는 대신, 상기 원격 캐시 존재 벡터는 L2 캐시처럼 캐시 메모리 서브 시스템 내의 지정된 장소에 저장될 수 있다. 예를 들면, 캐시의 잔여 웹이들은 일반 프로세서 데이터를 저장하도록 사용되는 대신에, 캐시 메모리 서브 시스템의 지정된 웨이가 원격 캐시 존재 벡터를 저장하기 위해 할당될 수 있다. 일 특정한 실행에서, 오로지 클린하고 공유된 데이터 블록들만이 원격적으로 캐시된다. 새로운 데이터 블록드은 사기 캐시 메모리 서브 시스템으로부터의 추출에 응답하여 원격적으로 캐시된다. 추가적인 실시예에서, 캐시 메모리 서브 시스템의 추가적인 엔트리들이 디렉토리 엔트리를 저장하기 위해 사용되어 프로브 명령 및 응답 트래픽을 필터할 수 있다.

Description

원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템{COMPUTER SYSTEM WITH PROCESSOR CACHE THAT STORES REMOTE CACHE PRESENCE INFORMATION}
본 발명은 컴퓨터 시스템에 관한 것으로, 더욱 상세히는 컴퓨터 시스템내의 원격 캐싱에 관한 것이다.
일반적으로 컴퓨터 시스템은 메모리에 대한 프로세서의 액세스 지연을 감소시키기 위해 하나 이상의 캐시를 포함한다. 일반적으로, 캐시는 하나 이상의 블록을 저장할 수 있고, 상기 블록 각각은 컴퓨터 시스템의 메모리 시스템 내의 대응 어드레스에 저장된 데이터의 사본이다.
주어진 블록이 하나 이상의 캐시에 저장될 수 있기 때문에, 그리고 게다가 상기 메모리 시스템 내의 상기 사본에 관하여 캐시된 사본들중 하나가 수정될 수 있기 때문에, 컴퓨터 시스템은 종종 상기 캐시들과 상기 메모리 시스템들 사이의 일관성을 유지한다. 만약 블록에 대한 업데이트가 사전 정의된 일관성 프로토콜(predefined coherency protocol)을 따라 다른 캐시 사본들에 의해 반영되는 경우 일관성은 유지된다. 다양한 특수 일관성 프로토콜들이 알려져 있다. 여기서 사용되는, "블록"은 일관성 목적을 위한 유닛으로 취급되는 연속 메모리 장소내에 저장된 일련의 바이트이다. 또한 일부 실시예에서, 블록은 캐시내의 할당과 해제의 유닛들일 수 있다. 블록내의 바이트들의 수는 디자인 선택에 따라 변할 수 있고, 그리고 임의의 크기일 수 있다. 일 예로, 32바이트 그리고 64 바이트가 종종 사용된다.
많은 일관성 프로토콜들은 상기 컴퓨터 시스템내의 많은 캐시들과 통신할 수 있게 하기 위해 프로브(probe)의 사용을 포함한다. 일반적으로 말해서, "프로브(probe)"는 상기 캐시가 블록의 사본을 가지고 있는지를 결정하고, 그리고 상황에 따라, 상기 캐시가 상기 블록이 위치해야하는 곳의 상태를 나타내기 위해, 상기 컴퓨터 시스템 내의 상기 일관성 포인트로부터 상기 컴퓨터 시스템 내의 하나 이상의 캐시들에 전송되는 메세지이다. 상기 일관성 포인트는 상기 블록을 읽거나 쓰는 구성 요소(예로, 프로세서)의 명령에 응답하여 상기 프로브들을 전송할 수 있다. 각각의 프로브 수신기는 상기 프로브에 응답하고, 그리고 일단 상기 프로브 응답이 수신되면 상기 명령은 완료된다. 상기 일관성 포인트는 일관성 유지를 책임지는 구성요소, 예를 들어 상기 메모리를 위한 메모리 제어기이다.
컴퓨터 시스템들은 일반적으로 브로드캐스트 캐시 일관성 프로토콜(broadcast cache coherency protocol) 또는 디렉토리 기반 캐시 일관성 프로토콜(directory based cache coherency protocol)중 하나를 사용한다. 브로드캐스트 프로토콜을 사용하는 시스템에서, 프로브들은 모든 프로세서(또는 캐시 서브시스템들)에 브로드캐스트된다. 데이터의 공유 사본을 갖는 서브시스템이 상기 블록에 배타적으로 접근하려는 명령에서 기인된 프로브를 탐지하는 경우, 그것의 사본은 일반적으로 무효가 된다. 이처럼, 데이터 블록을 현재 소유하는 서브시스템이 상기 블록에 대응되는 프로브를 탐지하는 경우, 일반적으로 상기 소유하는 서브시스템은 상기 데이터를 상기 요청자에게 제공하고, 그리고 필요시에는 그것의 사본을 무효화함으로써 대응한다.
대조적으로, 디렉토리 기반 프로토콜을 사용하는 시스템들은 데이터의 캐시된 사본들의 존재를 나타내는 정보를 포함하는 디렉토리를 유지한다. 프로브들을 무조건 브로드캐스트하는 대신에, 상기 디렉토리 정보는 특정 일관성 실행을 일으키기 위해 프로브가 전송될 필요가 있는 특정한 서브시스템(상기 데이터의 캐시된 사본을 포함할 수 있음)을 결정하기 위해 사용된다. 예를 들면, 상기 디렉토리는 많은 서브시스템들이 데이터 블록의 공유된 사본들을 포함하고 있다는 것을 나타내는 정보를 포함할 수 있다. 상기 블록에 배타적으로 액세스하려는 명령에 응답하여, 무효(invalidation) 프로브들이 상기 공유 서브시스템에 전송될 수 있다. 또한 상기 디렉토리는 특정 데이터 블록을 현재 소유하고 있는 서브시스템들을 나타내는 정보를 포함할 수 있다. 따라서, 명령에 대한 응답은 프로브들을 추가적으로 포함할 수 있으며, 상기 프로브는 소유하고 있는 서브 시스템이 데이터를 요청하는 서브 시스템에 전송하도록 한다. 디렉토리 기반 캐시 일관성 프로토콜의 수많은 변형이 잘 알려져 있다.
프로브들은 브로드캐스트 캐시 일관성 프로트콜들을 사용하는 시스템들 내의 모든 다른 프로세서들에 브로드캐스트되야 하기 때문에, 상기 프로세서들과 상호 연결하는 네트워크의 대역폭은 성능면에 있어서 빠르게 제한 인자(limiting factor)가 될 수 있는데, 이는 특별히 수 많은 프로세서를 사용하는 시스템들에 대한 것이거나 또는 수 많은 프로브들이 짧은 기간에 전송되는 경우이다. 그러한 환경에서, 디렉토리 프로토콜을 사용하는 시스템들은 보다 감소된 네트워크 트래픽 및 네트워크 대역폭 병목현상의 해결로 인해 전반적으로 고성능을 달성할 수 있다.
디렉토리 기반 시스템들을 위해 더욱 효과적인 캐시 일관성 프로토콜들을 고려할 수 있지만, 추가적인 하드웨어가 종종 요구된다. 상기 디렉토리 메커니즘은 종종 ASIC(주문형 반도체:application specific integrated circuit) 또는 상기 프로세서와 독립된 다른 주문형 칩 에서 실행될 수 있는 디렉토리 캐시를 종종 포함한다. 상기 디렉토리 캐시가 독립된 칩상에서 실행되는 경우, 상기 시스템의 총체적인 비용, 보드 요구사항, 전력 소비, 그리고 냉각 요구사항들이 증가할 수 있다. 반면에, 상기 프로세서 코어처럼 동일 칩상에 디렉토리 캐시를 통합하는 것도 바람직하지 않을 수 있는데, 이는 싱글 프로세서 또는 다중 프로세서 시스템들 모두에서 사용되도록 고안된 상용 프로세서에서 특히 그러하다. 싱글 프로세서 시스템에 적용 된다면, 상기 디렉토리 캐시는 사용되지 않을 수 있고, 이는 값비싼 다이 영역의 낭비 그리고 감소된 수율(yield)에 따라 비용을 증가시키는 결과가 된다.
메모리 지연을 감소시키기 위한 공유 메모리 컴퓨터 시스템에서 사용되는 다른 기법은 원격 캐싱이다. 원격 캐싱을 사용하는 시스템에서, 하나의 노드에 연결된 시스템 메모리의 부분은 다른 노드에 매핑된 메모리 위치에 대응되는 데이터를 캐싱하기 위해 할당될 수 있다. 원격 캐싱의 이점은 원격 메모리 지연이 로컬 메모리 지연보다 상당히 큰 시스템에서 현저하게 나타난다.
원격 캐싱을 실행하는 시스템에서, 스토리지 메커니즘은 상기 원격 캐시에 포함된 라인들 또는 블록들을 식별하기 위해 일반적으로 사용된다. 상기와 같이, 싱글 프로세서 환경내에 배치될 직접 회로 내의 그러한 기능의 포함은 다이 영역의 낭비 및 증가된 비용을 낳는다.
원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템이 제시된다. 일 실시예에서, 다른 노드에 매핑된 특정 데이터 블록이 원격적으로 캐시되었는지 여부를 나타내기 위해 다수의 존재 벡터가 저장된다. 상기 존재 벡터를 전용 스토리지에 저장하는 대신, 상기 원격 캐시 존재 벡터는 L2 캐시처럼 프로세서 코어에 관련된 캐시 메모리 서브 시스템 내의 지정된 장소에 저장될 수 있다. 예를 들면, 캐시 메모리 서브시스템의 캐시의 잔여 웨이(way)들은 일반 프로세서 데이터를 저장하도록 사용되는 대신에, 캐시 메모리 서브 시스템의 지정된 웨이가 원격 캐시 존재 벡터를 저장하기 위해 할당될 수 있다. 일 특정한 실행에서, 오로지 클린(clean)하고 공유된 데이터 블록들만이 원격적으로 캐시된다. 새로운 데이터 블록들은 상기 캐시 메모리 서브 시스템으로부터의 추출에 응답하여 원격적으로 캐시된다. 추가적인 실시예에서, 캐시 메모리 서브 시스템의 추가적인 엔트리들이 디렉토리 엔트리를 저장하기 위해 사용되어 프로브 명령 및 응답 트래픽을 필터링할 수 있다.
원격 캐시 존재 정보를 저장하기 위해 캐시 메모리 서브 시스템을 사용함으로써, 독립적인 디렉토리에 저장할 필요가 없어진다. 따라서, 총체적인 비용, 필요한 보드 범위, 전력 소비, 그리고 냉각 요구사항들이 감소할 수 있다. 게다가, 원격 캐시 존재 정보를 저장하기 위한 캐시 메모리 서브 시스템의 이용은 상기 서브 시스템들이 싱글 프로세서 환경 또는 다중 프로세서 환경에 배치되는지 여부에 기반하여 선택적으로 인에이블될 수 있는 실시예가 가능하다. 따라서, 싱글 프로세서 환경에 배치되는 경우, 상기 캐시 메모리 서브 시스템의 스토리지 위치는 프로세서 캐싱 동작을 위해 독점적으로 이용될 수 있고, 전용 디렉토리 스토리지의 낭비(예로, 이용되지 않음)가 없어질 수 있다.
본 발명의 다른 목적 및 이점들은 하기의 상세한 설명을 읽음으로써 그리고 하기의 도를 참조함으로써 분명해 진다.
도 1은 컴퓨터 시스템의 일 실시예에 대한 블록도이다.
도 2는 패킷 정의의 일 실시예를 나타내는 테이블이다.
도 3은 프로세싱 노드의 일 실시예 블록도이다.
도 4는 메모리 제어기의 일 실시예 블록도이다.
도 5는 캐시 메모리 서브 시스템의 블록도이다.
도 6은 일반적인 캐시 배열의 일 실시예를 도시한다.
도 7은 직접 맵 디렉토리 캐시 조직을 도시한다.
도 8 및 도 9는 디렉토리 엔트리들이 프로브 커맨드 및 응답 트래픽을 필터하기 위해 이용될수 있는 방법을 도시한다.
도 10은 디렉토리 엔트리들이 4-웨이 구성을 사용함으로써 저장되는 캐시 배열을 도시한다.
도 11 및 도 12는 대안적인 디렉토리 엔트리 포맷을 도시한다.
도 13은 원격 캐시를 포함하는 컴퓨터 시스템의 다른 실시예를 도시한다.
도 14는 프로세싱 노드의 다른 실시예를 나타내는 블록도이다.
도 15는 현존 벡터를 저장하기 위해 지정된 웨이가 사용되는 캐시 메모리 서브 시스템의 구성을 도시한다.
도 16은 주어진 현 비트를 인덱싱(indexing)하기 위한 대안적인 포맷을 도시한다.
본 발명의 다양한 수정과 대안적인 형태가 가능하나, 그것으로부터 특정한 실시예가 도면의 예시 방식으로 설명되고 상세한 설명내에 기술된다. 그러나 발명이 도면 및 상세한 설명에 의해 제시된 특정 형태로만 제한되는 것은 아니며, 청구범위에 의해 정의된 본 발명의 사상 및 범위내에서 모든 수정, 균등물, 그리고 대안을 보호하고자 함이다.
도 1을 참조하면, 컴퓨터 시스템(10)의 일 실시예가 나타난다. 컴퓨터 시스템(10)은 다수의 프로세싱 노드(12A, 12B, 12C, 그리고 12D)를 포함한다. 각 프로세싱 노드는 각각의 메모리 제어기(16A-16D)를 통하여 개별적으로 메모리(14A-14D)에 연결된다. 추가적으로, 각각의 프로세싱 노드(12A-12D)는 다른 프로세싱 노드(12A-12D)와 통신하기 위해 사용되는 인터페이스 로직(18A-18D)를 포함한다. 예를 들면, 프로세싱 노드(12A)는 프로세싱 노드들(12B 및 12C)과 통신하기 위한 인터페이스 로직(18A)을 포함한다. 비슷하게, 프로세싱 노드(12B)는 프로세싱 노드(12A 및 12D)와 통신하기 위한 인터페이스 로직(18B)을 포함하고, 다음도 같다. 도 1의 실시예에서, 프로세싱 노드(12D)가 인터페이스 로직(18D)를 통하여 입력/출력(I/O) 디바이스(20A)와 통신하도록 연결된 것이 나타나고, I/O 디바이스(20A)는 추가적으로 제 2 I/O 디바이스(20B)와 연결된다. 다른 프로세싱 노드들도 비슷한 방식으로 다른 I/O 디바이스들과 통신할 수 있다. 대안적으로, 프로세싱 노드는 I/O 버스에 연결된 I/O 브리지들과 통신할 수 있다.
컴퓨터 시스템(10)은 내부 노드(inter-node) 통신을 위해 패킷 기반 링크를 이행할 수 있다. 상기 기술된 실시예에에서, 상기 링크는 일련의 단방향 라인들(예로, 라인(24A)는 프로세싱 노드(12A)에서 프로세싱 노드(12B)로 패킷을 전송하기 위해 사용되고, 그리고 라인(24B)는 프로세싱 노드(12B)로부터 프로세싱 노드(12A)로 패킷을 전송하기 위해 사용된다)로서 이행된다. 다른 일련의 라인들(24C-2H)은 도 1에서 예시된 바와 같이 다른 프로세싱 노드들 사이의 패킷을 전송하기 위해 사용된다. 상기 링크는 프로세싱 노드들 사이의 통신을 위해 캐시 일관성 방식으로 작동될 수 있거나, 또는 I/O 디바이스(20A-20B)(그리고 바람직하게 추가적인 I/O 디바이스들)사이의 직렬 연결방식 구조처럼 비 일관성 방식(noncoherent fashion)으로 작동될 수 있다. 하나의 프로세싱 노드에서 다른 프로세싱 노드로 전송되는 패킷은 하나 이상의 중간 노드들을 통하여 전송될 수 있다. 예를 들면, 프로세싱 노드(12A)에 의해 프로세싱 노드(12D)로 전송되는 패킷은 도 1에서 예시된 바와 같이 프로세싱 노드(12B) 또는 프로세싱 노드(12C)중 하나를 통하여 전송된다. 임의의 적용가능한 라우팅 알고리즘이 사용될 수도 있다. 컴퓨터 시스템(10)의 다른 실시예에서는 도 1에서 예시된 것 보다 더 많거나 혹은 더 적은 프로세싱 노드를 포함할 수 있다. 또한, 각각의 프로세싱 노드가 점대점(point-to-point) 네트워크를 통하여 모든 다른 프로세싱 노드에 연결되는 형태의 다른 실시예가 가능하다.
상기 도시된 메모리 제어기 및 인터페이스 로직에 더하여, 각각의 프로세싱 노드(12A-12D)는 하기에 더 기술될 바와 같이, 하나 이상의 프로세서들 및 관련 캐시를 포함할 수 있다. 일반적으로 말하면, 프로세싱 노드는 적어도 하나의 프로세서를 포함하고 그리고 바람직하게는 메모리 및 다른 로직과 통신하기 위한 메모리 제어기를 선택적으로 포함 할 수 있다.
메모리들(14A-14D)는 임의의 적용가능한 메모리 디바이스들을 포함할 수 있다. 예를 들면, 메모리(14A-14D)는 하나 이상의 램버스 D램(RAMBUS DRAM)들, 동기식 D램(SDRAM), DRAM, 정적 램(static RAM)등등을 포함할 수 있다. 컴퓨터 시스템의 어드레스 영역은 메모리들(14A-14D) 사이로 나뉘어진다. 각각의 프로세싱 노드(12A-12D)는 어느 어드레스가 어느 메모리들(14A-14D)에 맵(map)되었는지, 그리고 나아가 특정 어드레스에 대한 메모리 요청이 어느 프로세싱 노드들(12A-12D)로 라우팅되어야 하는지를 결정하기 위해 사용되는 메모리 맵을 포함할 수 있다. 일 실시예에서, 컴퓨터 시스템(10) 내의 어드레스에 대한 일관성 지점은 상기 어드레스에 대응하는 바이트 저장 메모리에 연결된 상기 메모리 제어기(16A-16D)이다. 메모리 제어기(16A-16D)는 메모리들(14A-14D)과 인터페이스로 연결되게 하기 위한 제어 회로를 포함할 수 있다. 추가적으로, 메모리 제어기(16A-16D)는 메모리 요청을 대기 행렬에 넣기 위한 요청 대기 행렬(queue)을 포함할 수 있다.
일반적으로, 인터페이스 로직(18A-18D)은 상기 링크로부터 패킷을 수신하기 위한 그리고 상기 링크상에 전송될 패킷을 버퍼링하기 위한 버퍼를 포함할 수 있다. 컴퓨터 시스템(10)은 패킷들을 전송하기 위해 임의의 적용가능한 플로우 제어 메커니즘을 사용할 수 있다.
I/O 디바이스들(20A-20B)은 바람직한 임의의 주변 장치에 대한 예시이다. 예를 들면, I/O 디바이스들(20A-20B)은 네트워크 인터페이스 카드, 비디오 악셀레이터, 오디오 카드, 하드 또는 플로피 디스크 드라이브 또는 드라이브 제어기, SCSI(Small Computer Systems Interface) 아답터 그리고 전화 통신 카드들, 모뎀, 사운드 카드, 그리고 GPIB와 같은 다양한 데이터 획득 카드 또는 필드 버스 인터페이스 카드들을 포함할 수 있다.
컴퓨터 시스템(10)의 프로세싱 노드(12A-12D)사이의 통신은 바람직하게는 다양한 특정 패킷 기반 메세징을 사용함으로써 적용될 수 있다. 도 2는 일 실시예인 컴퓨터 시스템(10)내의 일관성 링크를 따라 사용되는 일련의 예시적인 패킷 기반 메세지를 도시하는 테이블(38)이다. 다른 실시예들이 가능하고 그리고 고려될 수 있으며, 이는 다른 적용가능한 패킷 정의를 사용하는 실시예들, 또는 버스 기반 통신 메커니즘을 사용하는 실시예들이다.
도 2에 도시된바와 같이, 읽기 트랙잭션이 ReadSized, RdBlk, RdBlkS, 또는 RdBlkMod 커맨드들을 사용하여 개시될 수 있다. 상기 ReadSized 커맨드는 캐시 불가능한 읽기 또는 블록 사이즈와 다른 데이터의 읽기를 위해 사용될 수 있다. 읽어지는 데이터의 총양이 ReadSized 커맨드 패킷으로 인코드 된다. 블록의 읽기를 위해, 상기 RdBlk 커맨드는: (1)블록의 쓰기 가능한 사본이 요망 되는 경우에(이 경우에, 상기 RdBlkS 커맨드가 사용됨); 혹은 (2) 블록의 사본이 선호되나 상기 블록을 수정하려는 의도는 없는 경우(이 경우에, RdBlkS 커맨드가 사용됨)에 해당되지 않을 떼에만 사용된다. 일반적으로, 적절한 읽기 커맨드는 상기 트랜잭션을 개시하려는 상기 소스로부터 상기 블록에 대응되는 메모리를 소유하고 있는 타켓 노드로 전송된다. 상기 타겟 노드는 일관성을 유지하기 위해 프로브(Probe) 커맨드를 상기 시스템내의 다른 노드들로 전송한다. 일부 예에서, 상기 Probe 커맨드는 특정 노드내의 블록 상태에 대해 변화를 일으키고 그리고 만일 업데이트된 블록이 존재하는 경우, 업데이트된 블록의 사본이 상기 소스 노드로 전송되도록 한다. Probe 커맨드를 수신하는 각각의 노드는 상기 소스 노드에 ProbeResp 응답 패킷을 전송한다. 만약 탐지된 노드가 읽어진 데이터의 업데이트된 사본(즉, 더티 데이타(dirty data))을 갖는 경우, 상기 노드는 RdResponse 응답 패킷 및 상기 더티 데이터(dirty data)를 전송한다. 선택적으로, 상기 타겟 노드 내의 상기 메모리 제어기는 데이터 패킷내의 상기 데이터를 뒤따라 오는 RdResponse 응답 패킷을 사용하여 요청된 읽어진 데이터를 전송한다. 만약 상기 소스 노드가 상기 탐지된 노드로부터 RdRespnose 응답 패킷을 수신하는 경우, 상기 읽어진 데이터가 사용된다. 그렇지 않은 경우, 상기 타겟노드로부터의 상기 데이터가 사용된다. 일단 각각의 프로브 응답들 및 상기 읽어진 데이터가 상기 소스 노드내에 수신되면, 상기 소스 노드는 트랜잭션의 종료 긍정 응답으로서 SrcDone 응답 패킷을 상기 타겟 노드에 전송한다. 또한 요청된 읽어진 데이타를 상기 타겟 노드가 전송하려할 경우 이를 취소하려는 시도로서 더티 데이터를 전송하는 노드가 상기 타겟 노드에 MemCancel 응답을 전송한다.
쓰기 트랜잭션은 대응 데이터 패킷을 뒤따르는 WrSized or vicBlk 커맨드를 사용함으로써 개시된다. 상기 WrSized 커맨드는 캐시 불가능한 쓰기 또는 블록과 사이즈가 다른 데이터의 쓰기를 위해 사용될 수 있다. WrSized 커맨드에 대한 일관성 유지를 위해, 상기 타겟 노드는 Probe 커맨드를 상기 시스템내의 각각의 다른 노드들로 전송할 수 있다. Probe 커맨드에 응답하여, 각각의 탐지된 노드는 ProbeResp 응답 패킷을 상기 타겟 노드에 전송한다. 만약 탐지된 노드가 더티 데이터를 저장하고 있는 경우, 상기 탐지된 노드는 RedResponse 응답 패킷 및 상기 더티 데이터에 응답한다. 이러한 방식으로, WrSized 커맨드에 의해 업데이트된 블록은 상기 WrSized 커맨드에 의해 제공된 상기 데이터와 합치기 위해 상기 메모리 제어기로 반환된다. 상기 메모리 제어기는, 각각의 탐지된 노드들로부터 프로브 응답을 수신함과 동시에, 트랜잭션 종료의 긍정 응답을 제공하기 위해 TgtDone 응답 패킷을 상기 소스 노드에 전송한다. 상기 소스 노드는 SrcDone 응답 패킷에 응답한다.
노드에 의해서 수정된 그리고 상기 노드내의 캐시에서 대체된 희생 블록은 상기 VicBlk 커맨드를 사용하여 메모리로 재 전송된다. Probe들이 VicBlk 커맨드를 위해 요구 되지는 않는다. 따라서, 희생 블록 데이터를 메모리로 인도(commit)하기 위해 상기 타겟 메모리 제어기가 준비되는 경우, 상기 타겟 메모리 제어기는 TgtDone 응답 패킷을 상기 희생 블록의 소스 노드로 전송한다. 상기 소스 노드는 상기 데이터가 인도되어야 한다는 것을 나타내기 위한 SRcDone 응답 패킷이나, 또는 상기 데이터가 VilBlk 커맨드의 전송과 TgtDone 응답 패킷(예로, 중재 프로브에 대한 응답)의 수령중에 무효화되었다는 것을 나타내기 위한 MemCancel 응답 패킷중 하나에 응답한다.
ChangetoDirty 커맨드 패킷은 상기 소스 노드에 의해 쓰기 불가능한 상태로 저장된 블록에 대해 쓰기 허락을 획득하기 위해 소스 노드에 의해 전송된다. ChangetoDirty 커맨드에 의해 개시된 트랙잭션은 상기 타겟 노드가 데이터를 반환하지 않는다는 점을 제외하고는 읽기와 비슷하게 동작한다. 상기 소스 노드가 전체 블록을 업데이트하려고 하는 경우 상기 ValidateBlk 커맨드는 소스 노드에 의해 저장되지 않은 블록에 대한 쓰기 허가를 얻기 위해서도 사용될 수 있다. 그러한 트랜잭션을 위해 데이터가 상기 소스 노드로 전송되는 것은 아니며, 읽기 트랜잭션과 비슷하게 동작한다.
TgtStart 응답은 트랜잭션이 시작되었다는(예로, 다음의 트랙잭션 순서를 부여하기 위해) 것을 나타내기 위해 타겟에 의해 사용될 수 있다. Nop info 패킷은, 예를 들면 버퍼 프리(buffer free) 표시자를 노드들 사이에 전송하기 위해 사용될 수 있는 비 동작 패킷이다. Broadcast 커맨드는 노드들 간에(예로, 상기 브로드캐스트 전송 명령은 인터럽트를 분산하기 이해 사용될 수 있음) 메세지를 브로드캐스트하기 위해 사용될 수 있다. 마지막으로, sync info 패킷은 패브릭(fabric)의 동기화가 선호되는 경우를 위해 사용될 수 있다(예컨대, 에러 검출, 리셋, 초기화 등). 다른 실시예에서도, 다른 커맨드 타입 및 관련 일관성 프로토콜이 사용될 수 있다는 점을 주목하자.
도 3을 참조하면, 프로세싱 노드(12A)의 일 실시예인 예시적인 블록도가 예시된다. 도 1과 대응되는 회로 부분이 동일하게 번호가 붙어있다. 프로세싱 노드(12A)는 메모리 제어기(16A), 인터페이스 로직(18A), 프로세서 코어(50), 캐시 메모리 서브 시스템(52), 그리고 패킷 프로세싱 로직(58)을 포함한다. 또한 프로세싱 노드(12A)는 하나 이상의 추가적인 프로세서 코어(54) 및 캐시 메모리 서브시스템(56)을 포함할 수 있다. 일 실시예에서, 상기 도시된 프로세싱 노드(12A)의 기능은 싱글 직접 회로에 통합된다. 프로세싱 노드(12B-12D)는 유사하게 구성될 수 있다.
일반적으로, 패킷 프로세싱 노드(58)는 프로세싱 노드(12A)와 연결된 링크상에 수신된 제어 패킷에 응답하도록, 프로세서 코어(50 및 54) 그리고/또는 캐시 메모리 서브 시스템(52 및 56)에 응답하여 제어 패킷을 생성하도록, 서비스를 위한 메모리 제어기(16A)에 의해 선택된 트랙잭션에 응답하여 프로브 명령 및 응답 패킷을 생성하도록, 그리고 패킷을 인터페이스 로직(18A)를 통하는 다른 노드들에 대한 중간 노드인 노드(12A)로 라우팅하도록 연결된다. 인터페이스 로직(18A)는 패킷을 수신하고, 그리고 패킷 프로세싱 로직(58)에 의해 사용되는 내부 클록에 대해 상기 패킷을 동기화하는 로직을 포함할 수 있다.
캐시 서브 시스템(52 및 56)은 데이터 블록을 저장하도록 구성된 고속 캐시 메모리를 포함한다. 캐시 메모리 서브 시스템(52 및 56)은 각각의 프로세서 코어(50 및 54)내에 통합될 수 있다. 대안적으로, 캐시 메모리 서브 시스템(52 및 56)은 필요시에 후방 캐시 구성 또는 인라인(in-line) 구성내의 프로세서 코어(52 및 56)에 연결될 수 있다. 여전히, 캐시 메모리 서브 시스템(52 및 56)은 캐시의 계층으로서 수행될 수 있다. 프로세서 코어(50 및 54)에 더욱 근접한 캐시들은 필요시에 프로세서 코어(50 및 54)내에 통합될 수 있다. 일 실시예에서, 캐시 메모리 서브 시스템(52 및 56) 각각은 L2 캐시 구조를 나타낸다.
프로세서 코어(50 및 54)는 사전 결정된 명령 세트에 따라 명령들을 실행하기 위한 회로를 포함한다. 예를 들면, x86 명령 세트 아키텍쳐가 선택될 수 있다. 대안적으로, Alpha, PowerPc, 또는 임의의 다른 명령 세트 아키텍쳐가 선택될 수 있다. 일반적으로, 상기 프로세서 코어(50 및 54)는 데이터 및 명령을 위한 각각의 상기 캐시 메모리 서브 시스템(52 및 56)을 액세스한다. 만약 캐시 부적중(cache miss)이 탐지되면, 읽기 요청이 발생되고 그리고 부적중 블록이 매핑된 상기 노드내의 메모리 제어기로 전송된다.
하기에 더욱 자세히 기술될 바와 같이, 컴퓨터 시스템(10)의 일 실시예에서, 디렉토리 엔트리들이 프로브 명령 및 임의의 트랜잭션에 대한 응답 트래픽을 필터링하기 위해 유지될 수 있다. 전용 디렉토리 스토리지내에 디렉토리 엔트리들을 저장하는 대신에, 디렉토리 엔트리들은 캐시 메모리 서브 시스템(52)(그리고 상기 수행에 의존하는 캐시 메모리 서비스 시스템(56))의 지정된 장소에 저장 될 수 있다. 컴퓨터 시스템(10)의 추가적인 실시예에서, 캐시 메모리 서브 시스템(52)의 추가적인 위치가 원격 캐시 존재 정보를 저장하기 위해 사용될 수 있다. 상기 디렉토리 엔트리 및/또는 원격 캐시 존재 정보의 스토리지를 위해 캐시 메모리 서브 시스템(52)를 이용함으로써, 독립된 디렉토리 스토리지에 대한 요구가 없어질 수 있다. 따라서, 총체적인 비용, 필요한 보드 범위, 전력 소비, 그리고 냉각 요구사항들이 감소될 수 있다. 게다가, 디렉토리 엔트리들 및/또는 원격 캐시 존재 정보의 스토리지를 위해 캐시 메모리 서브 시스템을 이용하는 것은 상기 서브 시스템들이 싱글 프로세서 환경 또는 다중 프로세서 환경에 배치 되는지 여부에 기반하여 선택적으로 인에이블될 수 있는 실시예를 가능하게 한다. 따라서, 싱글 프로세서 환경에 배치되는 경우, 상기 캐시 메모리 서브 시스템의 스토리지 위치는 프로세서 캐싱 동작을 위해 독점적으로 이용될 수 있고, 전용 디렉토리 스토리지의 낭비(예로, 이용되지 않음)가 없어질 수 있다. 캐시 메모리 서브 시스템(52)의 이러한 특정에 관한 자세한 사항이 하기에 더욱 기술될 것이다.
도 4를 참조하면, 일 실시예인 메모리 제어기(16)의 블록도가 제시된다. 메모리 제어기(16B-16D)는 비슷한 양식으로 구성될 수 있다. 도 4의 실시예에서, 메모리 제어기(16A)는 요청 대기열(60), 일관성 제어 회로(64), 그리고 메모리 액세스 제어 회로(66)을 포함한다.
메모리 제어기(16A)는 패킷 프로세싱 로직(58)으로부터 요청 대기열(60)로 향하는 명령 패킷을 수신한다. 만약 상기 명령에 의해 영향받는 상기 어드레스가 메모리(14A)내의 메모리 위치와 대응된다면, 상기 커맨드 패킷은 패킷 프로세싱 로직(58)에 의해 메모리 제어기(16A)로 라우팅된다. 다시말하면, 만약 상기 커맨드 패킷의 상기 어드레스가 메모리(14A)내에 저장된 블록을 주소 지정하는 경우라면, 상기 명령 패킷은 메모리 제어기(16A)로 라우팅된다. 메모리 제어기(16A)는 요청 대기열(60)내에 명령 정보를 큐(queue)하고, 그리고 상기 명령을 순차적으로 처리한다. 일관성 제어 회로(64)는 상기 명령이 일관성 방식으로 수행된다는 것을 보증한다. 만약 프로브들이 상기 명령을 위해 요구된다면, 일관성 제어 회로(64)는 패킷 프로세싱 로직(58)에 프로브 지시를 전송한다. 예를 들면, 상기 프로브 지시는 대응되는 명령, 상기 어드레스, 그리고 명령의 타입으로부터 나온 SrcNode, SrcUnit, 그리고 SrcTag를 포함한다. 패킷 프로세싱 로직(58)은 상기 프로브 지시에 응답하여 Probe 명령을 전송할 수 있다. 일관성 제어 회로(64)는 패킷 프로세싱 로직(58)으로부터 SrcDone 패킷을 추가적으로 수신할 수 있고, WrSized 명령을 위한 프로브 응답을 수신할 수 있다. 메모리 액세스 제어 회로(66)는 일관성 제어 회로(64)에 의해 인도(commit)된 명령을 실행하도록 메모리(14A)와 인터페이스로 연결된다(예로, 일관성 동작이 전송된 후에 그리고 다른 노드로부터 수신될 특정 응답이 수신되었음). 만약 상기 명령이 읽기인 경우, 데이터는 RdResponse 패킷내의 상기 소스 노드를 전송하기 위해 메모리(14A)로부터 패킷 프로세싱 로직(58)로 반환될 수 있다.
일관성 제어 회로(64)는 특정 데이터 블록을 위해 디렉토리 엔트리들을 유지하도록 추가적으로 구성된다. 상술된 바와 같이, 이러한 디렉토리 엔트리들은 캐시 메모리 서브 시스템(52)의 지정 위치 그리고/또는 캐시 메모리 서브 시스템(56)내에 저장된다. 이러한 목적을 위해서, 일관성 제어 회로(64)는 캐시 메모리 서브 시스템(들)에 대한 인터페이스를 포함할 수 있다. 일관성 제어 회로(64)는 명령의 타입에 기반하여, 그리고 상기 명령에 의해 지정된 상기 어드레스에 대한 디렉토리 엔트리 존재에 기반하여 상기 명령을 위해, 프로브들이 요구되는지를 결정할 수 있다. 상기 디렉토리 엔트리들은 실행에 의존하는 다양한 일관성 정보를 포함할 수 있다. 예를 들면, 디렉토리 엔트리는 주어진 블록의 소유자, 상기 블록이 주어진 모드에서 수정되었는지 여부, 그리고/또는 상기 블록의 사본들을 공유해온 노드들의 존재를 나타낼 수 있다. 다양한 예시적인 디렉토리 엔트리 형식에 관한 더 자세한 사항이 하기에 제시된다.
도 5는 일 실시예인 캐시 메모리 서브 시스템(52)를 나타내는 블록도이다. 상기 캐시 메모리 서브 시스템(52)은 캐시 제어기(74)가 연결된 캐시 메모리(72)에 연결된다. 상술된 실시예에서, 캐시 제어기(74)는 모드 스토리지 유닛(75)를 포함하며, 이는 하기에 기술될바와 같이 캐시 메모리(72)의 위치내에서 디렉토리 엔트리들의 스토리지를 인에이블 하도록 프로그램 가능하게 세트될 수 있다.
일반적인 캐시 엔트리들(즉, 프로세서 코어(50)에 의해 운영되는 데이터를 저장하는 캐시 메모리(72)내의 엔트리들)과 디렉토리 엔트리들은 필요시에 다수의 특정 형식에서 캐시 메모리(72)내에 저장될 수 있다. 도 6은 2L개의 인터리브(interleave)를 가진 K-웨이 세트 연관 캐시(K-way set associative cache) 구조로서의 하나의 가능한 캐시 배열을 도시한다. 캐시 메모리(72)내의 스토리지(102)의 블록은 데이터 엔트리, 태그 필드, 그리고 상태 필드와 함께 표시된다. 일 실시예에서, 상기 데이터 엔트리는 64 바이트 데이터로 구성된다. 상기 상태 필드는 MOESI 프로토콜내에서 Modified(수정된), Owned(소유된), Exclusive(배타적), Shared(공유된), 또는 Invalid(무효)와 같은 캐시 블록의 상태를 식별한다. 종래의 방법에서, 캐시 적중(cache hit)은 상기 캐시 블록과 함께 저장되는 태그 정보와 상기 캐시 메모리를 액세스하기 위해 사용되는 어드레스의 태그 필드를 비교함으로써 결정될 수 있다. 캐시 메모리의 소정의 블록들의 세트는 상기 어드레스의 색인 부분을 사용하여 액세스된다. LRU 필드는 상기 세트내의 어느 엔트리가 최근에 가장 적게 참조되었는지, 그리고 어느 엔트리가 캐시 제어기(74)에 의해 사용되는 캐시 대체 알고리즘과 관련되어 사용되었는지를 나타낸다. 도 6에 나타난 캐시 배열은 일반적인 것이다. 다른 실시예에서, 캐시 메모리(72)는 다른 특정 캐시 배열을 사용하여 실시될 수 있다. 또한 단독 프로세서 환경에 놓였을 때, 캐시 메모리(72)의 모든 스토리지 위치가 일반 캐시 엔트리(예로, 단독 프로세서 환경 모드에서 캐시 제어기(74)의 모드 스토리지 유닛(75)을 세팅함으로써)를 위해 사용될 수 있다.
상술된 바와 같이, 다중 프로세서 환경에서 배치된 캐시 메모리(72)의 일부 위치는 디렉토리 엔트리들을 저장하기 위해 사용될 수 있다. 상기 디렉토리 엔트리들은 일관성 동작을 제어하기 위해 일관성 제어 회로(64)에 의해 유지될 수 있고 액세스 될 수 있다.
상기 디렉토리 엔트리들은 다양한 방식으로 캐시 메모리(72)내에 유지될 수 있다. 예를 들면, 도 7은 캐시 메모리(72)(예로, 상술된 실시예에서 웨이(15))의 지정된 웨이가 디렉토리 엔트리들을 저장하기 위해 사용될 수 있는 캐시 배열을 나타낸다. 일 실시예에서, 이 구성은 다중 프로세서 환경 모드에서 캐시 제어기(74)의 프로그래밍 모드 스토리지 유닛(75)에 의해 프로그램가능하게 세트될 수 있다.
도 7의 실시예는 주어진 캐시 블록이 다수의 디렉토리 엔트리를 저장할 수 있는 직접 맵 디렉토리 캐시 구성을 나타낸다. 예를 들면, 일 실시예에서, 각각의 디렉토리 엔트리들은 16 비트를 포함하여, 캐시 블록내의 64 바이트 데이터 필드는 32개의 디렉토리 엔트리들을 저장할 수 있다. 주어진 디렉토리 엔트리들은 상기 캐시에 액세스하기 위해 사용되는 어드레스의 디렉토리 색인 부분에 의해 색인될 수 있다. 일 실시예에서, 디렉토리 엔트리들은 선택된 어드레스 비트에 기반하는 다중 캐시 메모리 시스템(도 3의 캐시 메모리 서브 시스템(52 및 56)처럼)과 교차되어 인터리브될 수 있다. 상기 캐시 블록과 함께 저장된 상기 블록 태그(예로, TagL2)와 디렉토리 엔트리의 부분으로서 저장되는 상기 디렉토리 태그(예로, Tagdir)모두가 상기 캐시를 액세스 하기 위해 사용되는 어드레스의 대응 태그 부분과 매치되는 경우, 디렉토리 적중이 일어날 수 있다.
컴퓨터 시스템(10)의 일 실시예에서, 디렉토리 엔트리들은 수정, 소유, 또는 배타적 상태 내에 있는 블록을 추적(track)하기 위해 사용된다. 디렉토리 엔트리들의 존재는 상기 블록이 캐시되었음을 의미한다. 프로세서가 Exclusive(배타적)에서 Modified(수정됨)으로 블록을 조용히 변화시키기 때문에 상기 상태 E 및 M은 프로세서 코어 및 대응 캐시 메모리 서브 시스템의 외부에서 구별 불가능하다. 따라서 이러한 실시예에서, 디렉토리 엔트리는 상태 O(Owned:소유됨), 상태 ME(Modified/Exclusive:수정됨/배타적임) 또는 상태 I(Invalid:무효)들 중 하나를 포함할 수 있다. 디렉토리 엔트리의 부재는 상기 블록이 다양한 캐시 메모리 서브 시스템에서 공유 또는 무효되었음을 나타낸다. 캐시 경합 부적중이 발생할 경우 영향받은 캐시블록의 모든 디렉토리 엔트리들은 M, O 또는 E 상태로부터 다운그레이드되어야 한다. 수정된 또는 소유된 블록들은 메모리로 재 카피되고 그리고 S 상태로 변환된다.
도 8 및 도 9는 프로브 명령 및 응답 트래픽을 필터링(또는 제어)하기 위해 컴퓨터 시스템(10)의 실시예에서 이용되는 디렉토리 엔트리들의 방식을 나타낸다. 도 8 및 9에서, 일련의 프로세싱 노드(P0-P3)가 나타나며, 상기 각각은 예를들면 도 1의 개별적인 프로세싱 노드(12)를 나타낸다. 각각의 프로세싱 노드(P0-P3)는 관련 메모리(메모리 0-3) 및 L2 캐시와 함께 예시적인 목적을 위해 나타낸다. 상술된 바와 같이, 각각의 L2 캐시들은 일련의 개별적인 디렉토리 엔트리들과 함께 나타난다.
도 8은 메모리 0에 매핑된 블록에 대한 읽기 요청을 제기하는 프로세싱 노드 P3에 응답하여 수행되는 일련의 설명적인 동작들을 예시한다. 이 예시에서, 상기 읽기 요청은 결과적으로 상기 블록이 프로세싱 노드 P3 내에 공유 상태로 인스톨되게 한다. 도시된 바와 같이, 상기 메모리 요청은 프로세싱 노드 P2를 통하여 프로세싱 노드 P0으로 라우팅되고, 그리고 상기 캐시 블록에 대한 디렉토리 엔트리가 상기 캐시 메모리 서브 시스템내에 존재하는지 여부를 결정하기 위하여 프로세싱 노드 P0(예로, 도 4의 상기 대응 일관성 제어 회로(64))에 의해 디렉토리 검색(directory lookup)이 수행된다. 도 8의 예시에서, 상기 디렉토리 검색에 응답하여 디렉토리 부적중(directory miss)이 발생할 수 있다. 따라서, 디렉토리 엔트리가 존재하기 않기 때문에, 상기 블록이 임의의 프로세싱 노드의 캐시들에서 공유되거나 무효되는 것만이 가능하다. 그러므로, 프로세싱 노드 P0는 메모리(0)으로부터 상기 데이터를 검색하고, 그리고 상기 데이터를 프로세싱 노드 P2를 통하여 프로세싱 노드 P3에 제공한다. 프로세싱 노드 P3가 상기 데이터를 수신하면, 소스 완료(source done) 메세지가 예를 들어 프로세싱 노드 P1을 통하여 프로세싱 노드 P3로부터 프로세싱 노드 P0로 전송될 수 있다. 이는 상기 트랜잭션을 완료시킨다. 이 예에서, 상기 디렉토리 검색의 결과가 디렉토리 부적중이기 때문에, 프로세싱 노드 P0는 특정 무효화 프로브(invalidating probes)를 어느 다른 프로세서 노드로 전송할 필요가 없으며, 그렇지 않은 경우에, 브로드캐스트 일관성 프로토콜을 사용하는 시스템에서는 이와 달리 요구될 것이다.
도 9는 프로세싱 노드 P3가 읽기 요청을 메모리 0에 매핑된 블록에 제기하는 비슷한 예를 나타낸다. 그러나 이 예에서는, 프로세싱 노드 P0가 디렉토리 검색을 수행할 경우, 디렉토리 적중이 캐시 메모리의 대응 엔트리에서 발생한다. 상기 디렉토리 엔트리는 상기 블록이 프로세싱 노드 P1에서 ME 상태에 있음을 나타낸다. 프로세싱 노드 P0의 상기 일관성 제어 회로는 프로브 명령을 프로세싱 노드(1)로 전송되도록 하며, 이는 다시 프로세싱 노드(1)가 데이터를 프로세싱 노드 P3로 전송하도록 한다. 일 실시예에서, 상기 데이터는 프로세싱 노드 P3에서 공유 상태(shared state)로 인스톨되었기 때문에, 프로세싱 노드 P1의 상기 캐시 제어기는 상기 상태 M에서 O 으로 그것의 상기 블록의 캐시된 사본을 다운그레이드할 것이다. 프로세싱 노드P0의 상기 일관성 제어 회로는 프로세싱 노드 P1에서 O 상태로 캐시되었다는 것을 나타내기 위해 상기 블록에 대한 디렉토리 엔트리를 또한 업그레이드 한다. 이 실시예에서, ME 상태에서 블록에 대한 디렉토리 적중이 발생했기 때문에, 프로세싱 노드 P0는 특정 프로세싱 노드로 무효화하는 프로브를 전송할 필요가 없다.
다수의 다른 특정 일관성 동작이 프로세싱 노드에 의해 개시된 다른 트랜잭션에 응답하여 호출될 수 있다. 상기 예와 비슷하게, 프로브 명령 및 응답 트래픽은 액세스 되는 블록에 대한 디렉토리 엔트리의 존재에 기반하여, 그리고/또는 디렉토리 엔트리내에 나타난 바와 같이 블록의 상태에 근거하여 필터링될 수 있다. 예를 들면, 도 9를 다시 참조하면, 프로세싱 노드 P3가 특정 블록의 배타적인 사본을 수신하기 위해 읽기 명령을 개시하는 경우(예로, RdBlkMod 명령을 개시함으로써), 프로세싱 노드 P0는 프로브 명령을 수정된 블록의 사본을 포함하는 상기 프로세싱 노드 P1에 전송할 수 있다. 상기 프로세싱 노드 P1은 대응하여 상기 데이터를 프로세싱 노드 P3에 전송한다. 게다가, 상기 프로세싱 노드 P1은 그것의 사본은 무효로 다운그레이드 하고, 그리고 프로세싱 노드 P0은 상기 블록이 프로세싱 노드 P3에서 ME 상태에 있다는 것을 나타내기 위해 상기 블록에 대한 상기 디렉토리 엔트리를 업그레이드 할 것이다. 다양한 다른 특정 일관성 동작은 트랜잭션의 타입, 디렉토리 엔트리의 존재, 디렉토리 엔트리내의 상기 블록의 상태에 의존하여 비슷한 식으로 적절히 수행된다.
다른 실시예에서는 많은 다른 디렉토리 엔트리 형식이 가능하다. 디렉토리 엔트리의 특정한 형식은 다른 요소들 가운데에서 보관된 총 상태 정보, 시스템의 규모, 그리고 디렉토리 스토리지 오버헤드(overhead)에 근거할 수 있다.
도 10은 4-웨이 캐시 구성을 사용하여 디렉토리 엔트리들이 저장되는 대안적인 배열을 도시한다. LRu 필드는 대체될 예정인 최근 가장 사용되지 않은 엔트리(세트의)가 디렉토리 경합 부적중(즉, 새로운 엔트리가 기존 엔트리를 덮어쓰는 경우)의 발생의 경우에 있는지를 결정하기 위해 유지된다. 디렉토리 충돌이 발생하는 경우 상기 일관성 제어 회로는 특정 일관성 활동을 필요시에 호출할 수 있다. 예를 들면, 어떠한 상황에서는, 상기 캐시 일관성 회로는 수정된 블록 사본을 갖는 노드로 하여금 후기입(後記入)(write-back) 동작을 수행하도록 할 수 있다.
또한 디렉토리 엔트리에 유지된 총 정보는 상기 실행에 의존하여 다양할 수 있다. 도 11은 512 디렉토리 엔트리가 64 바이트 캐시 블록내에 제공될 수 있는 실 시예를 나타낸다. 1 비트 상태 필드는 상기 블록이 수정된, 소유된 또는 배타적 상태(MOE)인지를 나타낸다. 도 12는 64개의 디렉토리 엔트리들이 64 바이트 캐시 블록내에 제공될 수 있는 실시예를 나타낸다. 상술된 예에서, 5 비트 소유자 필드는 ME 또는 O 상태에 대한 상기 소유자를 인코드 하고, 이는 32개의 프로세싱 코어를 지원하기에 충분하다(예로, 각기 4개의 코어를 갖는 8개의 노드들). 도 12의 상기 디렉토리 형식은 수정된 블록이 특정 페이지 집약성(locality)을 나타내는 작업 부하에 잘 적용될 수 있다.
주어진 트랜잭션에 응답하여 호출될 수 있는(예로, 프로브 명령 및 응답) 상기 특정한 일관성 활동은 사용되는 상기 특정 일관성 스키마 및 대응 디렉토리 엔트리내에 포함된 정보-만약 있다면-에 의존할 수 있다. 이에 다양한 특정 디렉토리 기반 프로토콜들이 적용될 수 있다.
게다가, 상기 실시예에서, 캐시 메모리(72)의 특정 웨이가 디렉토리 엔트리들을 저장하도록 사용될 수 있고, 다른 실시예에도 또한 가능할 수 있다. 예를 들면, 일련의 지정된 캐시 메모리(72)가 디렉토리 엔트리들을 저장하도록 사용될 수 있거나 혹은 웨이내의 전체 엔트리들의 일 부분들(예로, 1/2)이 디렉토리 엔트리들을 저장하기 위해 전용될 수 있는 실시예가 가능하다.
게다가, 모드 스토리지 유닛(75)를 포함하지 않는 실시예들 또한 가능하다. 상기 캐시 블록과 함께 유지되는 상기 정보는 디렉토리 정보를 포함하는 것으로 엔트리를 식별하도록 설정될 수 있는 하나 이상의 비트를 포함할 수 있다.
다음으로 도 13을 참조하면, 컴퓨터 시스템(10)의 또다른 실시예는 원격 캐싱 기능을 포함할 수 있고, 여기서 주어진 프로세싱 노드(12)의 시스템 메모리(14)(예로, 14A-14D) 일 부분은 다른 노드의 시스템 메모리에 매핑된 어드레스들을 원격으로 캐싱하기 위해 할당된다. 이러한 원격 캐시 영역들은 도 13에서 원격 캐시들(302A-302D)로 표시된다. 도 1과 대응되는 도 13의 회로 부분이 동일하게 번호가 붙으며, 상기에 기술된 바처럼 동일 기능을 포함할 수 있다.
주어진 시스템 메모리(14)의 상기 원격 캐시(302)내의 원격 데이터의 스토리지는 도 14의 메모리 제어기(16A)내에 상술된 바와 같이, 대응되는 원격 캐시 제어기(402A)에 의해 제어될 수 있다. 프로세싱 노드들(12B-12D)는 비슷한 원격 캐시 제어기들을 포함할 수 있다. 하기에 더욱 기술될 바와 같이, 일 실시예에서 원격 캐시 제어기(402A)는 캐시 메모리 서브 시스템(52)(그리고/또는 캐시 메모리 서브 시스템(56))에 대한 인터페이스를 포함할 수 있다. 캐시 메모리 서브 시스템(52)내의 스토리지 위치는, 특정 어드레스들이 대응 노드의 상기 대응되는 시스템 메모리(14A)내에서 원격 캐시 제어기(402A)에 의해 원격적으로 캐시되는지 여부를 식별하는 정보를 저장하도록 이용될 수 있다. 이 기능에 관련된 더욱 자세한 사항은 하기에 기술된다.
일 실시예에서, 원격 캐시 제어기(402A)에 의해 사용되는 원격 캐싱 정책은 오직 공유된 원격 데이터를 저장하는 것이다, 이러한 실시예에서, Modified(수정된), Owned(소유된), 또는 Exclusive(배타적인) 데이터는 상기 원격 캐시(302A)에 저장되지 않는다. 상기 원격 캐시(302A)는 상기 캐시 메모리 서브 시스템(52)에 관하여 비 포함적(non-inclusive)일 수 있고, 그리고 캐시 메모리 서브 시스템(52)(그리고 필요시 캐시 메모리 서브 시스템(56))으로부터 추출(evict)되는 공유 블록들을 위한 희생 캐시(victim cache)로서 동작할 수 있다. 따라서, 상기 원격 캐시(302A)는 상기 원격 캐시(302A)에 아직 존재하지 않는 공유된 원격 블록이 캐시 메모리 서브 시스템(52)(그리고/또는 캐시 메모리 서브시스템(56))에서 대체(replacement)되는 경우에만 원격 캐시 제어기(402A)에 의해 쓰여질 수 있다.
도 15는 캐시 메모리 서브 시스템(52)의 구성을 예시하는데, 이는 대응되는 원격 블록들이 원격 캐시(302)내에 캐시되는지 여부를 식별하는 정보를 포함한 존재 벡터를 저장하도록 지정된 웨이(예로, 설명된 실시예의 웨이(14))가 사용될 수 있는 캐시 메모리 서브 시스템의 구성을 나타낸다. 캐시 블록은 다수의 엔트리들을 포함하는 존재 벡터를 포함할 수 있고, 각각은 대응되는 블록이 상기 원격 캐시(302A)내에서 공유(Shared)(S) 상태로 존재하는지의 여부를 나타낸다. 도 14의 실시예에서, 각각의 엔트리들은 단독 존재 비트로 구성된다. 주어진 존재 벡터는 상기 캐시 메모리를 액세스하기 위해 사용된 어드레스의 선택된 색인 비트들(IndexL2)에 따라서 액세스될 수 있다. 비슷한 식으로, 주어진 존재 벡터의 존재 비트는 어드레스의 다른 비트들(예로, IndexPV)을 사용함으로써 선택될 수 있다. 존재 벡터 적중은 상기 캐시 블록과 함께 저장된 상기 블록 태그(예로, TagL2)가 상기 캐시를 액세스하기 위해 사용된 어드레스의 대응 태그 비트들과 매치되는 경우에 발생한다.
원격 캐시(302A)를 위해 할당되어진 시스템 메모리(14A)의 물리적 어드레스는 원격 캐시 제어기(402A)와 관련된 구성 레지스터내에 저장된 RC 기반 어드레스 값에 따라 지정될 수 있다. 메모리(14A)의 원격 캐시(302A)내에 원격으로 캐시된 블록은 존재 벡터 색인 및 L2 색인을 형성하는 비트들에 관련되는 상기 RC 기반 어드레스를 사용함으로써 주소지정 될 수 있다.
도 14의 실시예에서, 원격 캐시(302A)내부로의 블록의 인스톨은 수정된(modified) 또는 소유된(Owned) 데이터의 추출(또는 디렉토리를 갖는 시스템에서 배타적 데이터에 대한 대체 통지(replacement notification))을 요구하지 않는다. 게다가, 존재 비트는 블록이 유효(valid)하다는 것과 공유 상태에 있다는 것 둘 모두를 나타내기에 충분하기 때문에, 원격적으로 캐시된 블록을 위해 일관성 상태 정보(coherency state information)가 요구되지는 않는다. 공유된 블록이 캐시 메모리 서브 시스템(52)(그리고 필요시에 캐시 메모리 서브 시스템(56))내에서 대체되는 때에, 상기 블록이 상기 원격 캐시내에 아직 존재하지 않는다면 상기 블록은 원격 캐시(302A)내에 인스톨된다. 상기 원격 캐시(302A)내의 데이터는 더티 데이터(dirty data)가 아니기 때문에, 상기 원격 캐시(302A)내의 블록들은 조용히 대체될 수 있고, 그리고 원격 캐시 추출(remote cache eviction)이 불필요하게 될 수 있다. 또 다른 노드가 현재 공유(S) 상태인 블록의 배타적 사본(exclusive copy)을 저장하거나 요청하는 때에, 프로세싱 노드(12A)에 의해 수신된(홈 노드로부터) 프로브 명령을 무효화하는 결과는 검색이 캐시 메모리 서브 시스템(52)에서 실행되도록 하고, 그때문에 상기 블록이 상기 원격 캐시(302A)내에 또는 캐시 메모리 서브 시스템(52)에 존재하는지 여부를 결정하도록 한다. 적중(hit)이 발생되어 상기 블록이 상기 원격 캐시(302A)내 또는 상기 캐시 메모리 서브 시스템(52)내에서 공유된다는 점을 나타내는 경우에, 상기 블록은 무효화된다.
일부 실시예에서, 캐시 메모리 서브 시스템(52)은 상술된 바와 같이 디렉토리 엔트리들을 저장하기 위해, 그리고 원격 캐시 존재 표시를 저장하기 위해서 사용될 수 있다. 예를 들면, 일 실시예에서, 존재 벡터의 스토리지를 위한 다른 웨이(예로, 웨이 14)를 지정함과 동시에, 캐시 메모리 서브 시스템(52)은 디렉토리 엔트리들의 스토리지를 위한 일 웨이(예로, 웨이 15)를 지정할 수 있다(예로서, 도 7 및 도 10에 도시된 바와 같이). 조합되어 사용되는 캐시 메모리 서브 시스템(52)에 대한 단독 액세스는 상기 데이터가 캐시되었는지 여부를 결정하기 위해(예로, 웨이 10~13), 그리고 상기 데이터가 상기 원격 캐시(302A)에 캐시되었는지 여부를 결정하기 위해 수행될 수 있다. 게다가, 상기 액세스가 상기 로컬 노드에 대해 매핑된 데이터에 대한 것인 경우에, 상기 캐시 메모리 서브 시스템에 대한 상기 액세스는 추가적으로 상기 데이터가 다른 프로세서의 캐시에서 Modified, Owned, 또는 Exclusive 상태내에 캐시되었는지 여부를 결정할 수 있고, 만약 그렇다면 상기 노드는 상기 데이터를 포함한다. 게다가, 저장(또는 다른 노드로부터 데이터 블록의 배타적인 사본을 수신하기 위한 요청)의 경우에, 상기 프로세싱 노드에 의해 수신된 대응 무효 프로브는 캐시 메모리(74)에서의 (예로, 웨이 0-13) 그리고 상기 원격 캐시(302A)(예로, 캐시 메모리 서브 시스템의 웨이 14내의 상기 블록에 대응되는 상기 존재 비트를 바꿈으로써)에서의 블록의 동시적인 무효화를 초래한다.
다른 실시예에서, 캐시 메모리 서브 시스템(54)에 포함된 상기 존재 정보는 다른 특정 구성을 사용하여 저장될 수 있다. 예를 들면, 도 16은 상기 캐시 메모리 서브 시스템이 주어진 존재 비트를 액세스하도록 색인될수 있는 대안적인 방식을 도시한다.
게다가, 원격 캐시 존재 정보의 스토리지를 위한 캐시 메모리 서브 시스템(52)(및/또는 캐시 메모리 서브 시스템(56)의 엔트리들(예로, 선택된 웨이)의 사용은 운영 환경에 기반하여 선택적으로 인에이블될 수 있다. 예를 들면, 모드 스토리지 유닛(75)에 저장된 값은 상기 원격 캐시 존재 정보 특징이 인에이블되었는지 여부를 제어할 수 있다. 그러듯이, 단독 프로세서 환경에 배치된 상기 모드 스토리지 유닛(75)는 일반 캐싱 동작을 위한 캐시 메모리 서브 시스템의 모든 엔트리들을 지정하도록 세트될 수 있고, 그때문에 스토리지 자원 낭비를 피할 수 있다.
상기 제시된 내용을 충분히 이해하면, 수 많은 변형과 수정이 당업자에게는 자명한 것이다. 하기의 청구범위가 이러한 모든 변형과 수정을 포함하도록 해석되어야 한다.
본 발명은 일반적으로 컴퓨터 시스템에 적용될 수 있다.

Claims (17)

  1. 컴퓨터 시스템에 있어서,
    프로세서 코어(50), 캐시 메모리 서브 시스템(52), 그리고 제 1 시스템 메모리(14A)를 포함하는 제 1 노드(12A)와; 그리고
    제 2 시스템 메모리(14B)를 구비하는 제 2 노드(12B)를 포함하며, 상기 캐시 메모리 서브 시스템의 적어도 일부 엔트리들은, 상기 캐시 메모리 서브 시스템의 동작 모드에 의존하여 프로세서 데이터 또는 원격 캐시 존재 정보를 선택적으로 저장하도록 된 것을 특징으로 하는 컴퓨터 시스템.
  2. 제 1항에 있어서,
    상기 제 1 시스템 메모리(14A)는 상기 제 2 시스템 메모리(14B)에 매핑된 데이터를 원격적으로 캐시하도록 구성되고, 여기서 상기 원격 캐시 존재 정보는 상기 제 1 시스템 메모리 내에 상기 데이터가 존재함을 나타내는 것을 특징으로 하는 컴퓨터 시스템.
  3. 제 2항에 있어서,
    상기 제 1 노드는 상기 제 1 시스템 메모리내의 상기 데이터의 원격 캐싱을 제어하기 위한 원격 캐시 제어기(402A)를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  4. 제 3항에 있어서,
    상기 원격 캐시 제어기는 캐싱 정책(caching policy)을 이용하고, 여기서 데이터는 상기 제 1 시스템 메모리내의 공유 상태(shared state)에서 원격적으로 캐시되고, 그리고, 수정 상태(modified state) 또는 소유 상태(owned state)의 데이터는 상기 제 1 시스템 메모리내에서 원격적으로 캐시되지 않는 것을 특징으로 하는 컴퓨터 시스템.
  5. 제 4항에 있어서,
    상기 원격 캐시 제어기는, 공유 상태(shared state)의 데이터 블록이 상기 캐시 메모리 서브 시스템으로부터 대체(replacement)되는 것에 응답하여, 상기 제 1 시스템 메모리 내에 상기 공유 상태의 데이터 블록을 저장하도록 된 것을 특징으로 하는 컴퓨터 시스템.
  6. 제 5항에 있어서,
    상기 원격 캐시 제어기는 오로지 상기 캐시 메모리 서브 시스템으로부터의 대체에 응답하여서만 상기 제 1 시스템 메모리내에 데이터를 원격적으로 캐시하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  7. 제 6항에 있어서,
    상기 원격 캐시 제어기는 상기 블록이 상기 제 1 시스템 메모리내에 아직 원격적으로 캐시되지 않는 경우에만 상기 제 1 시스템 메모리내에 상기 블록을 저장하도록 된 것을 특징으로 하는 컴퓨터 시스템.
  8. 제 1항 내지 제 7항 중 어느 한 항에 있어서,
    상기 캐시 메모리 서브 시스템의 추가적인 엔트리들은 상기 캐시 메모리 서브 시스템의 상기 동작 모드에 의존하여 전역 일관성 실행(global coherence activities)을 제어하기 위하여, 프로세서 데이터 또는 디렉토리 정보를 선택적으로 저장하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  9. 제 1항에 있어서,
    상기 캐시 메모리 서브 시스템의 스토리지의 주어진 라인(given line)은 원격 캐시 존재 벡터를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  10. 제 1항에 있어서,
    상기 캐시 메모리 서브 시스템의 지정된 웨이(way)는 원격 캐시 존재 정보를 저장하기 위해 선택적으로 인에이블 되는 것을 특징으로 하는 컴퓨터 시스템.
  11. 제 5 항에 있어서,
    상기 캐시 메모리 서브 시스템은 L2 캐시 메모리 서브 시스템인 것을 특징으로 하는 컴퓨터 시스템.
  12. 제 8 항에 있어서,
    상기 디렉토리 정보는 상기 제 1 시스템 메모리 내부에 매핑된 어드레스 위치에 대응되는 데이터의 캐시된 사본이 노드 내에 존재하는지 여부를 나타내는 것을 특징으로 하는 컴퓨터 시스템.
  13. 제 12 항에 있어서,
    상기 디렉토리 정보는 상기 캐시된 사본이 수정 상태(modified state), 배타적 상태(exclusive state), 또는 소유 상태(owned state)에 있는지 여부를 나타내는 것을 특징으로 하는 컴퓨터 시스템.
  14. 제 13 항에 있어서,
    상기 캐시 메모리 서브 시스템의 제 1 지정된 웨이는 상기 원격 캐시 존재 정보를 저장하기 위해 선택적으로 인에이블되고, 상기 캐시 메모리 서브 시스템의 제 2 지정된 웨이는 상기 디렉토리 정보를 저장하기 위해 선택적으로 인에이블되는 것을 특징으로 하는 컴퓨터 시스템.
  15. 제 14 항에 있어서,
    상기 캐시 메모리 서브 시스템은 모드 스토리지 유닛에 저장된 값에 근거하여 선택적으로 인에이블되는 것을 특징으로 하는 컴퓨터 시스템.
  16. 제 10 항에 있어서,
    상기 지정된 웨이가 프로세서 데이터 또는 원격 캐시 존재 정보를 저장하기 위해 인에이블되는지 여부를 제어하기 위한 값을 저장하는 모드 스토리지 유닛을 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  17. 제 16 항에 있어서,
    상기 캐시 메모리 서브 시스템의 추가적인 웨이는 상기 캐시 메모리 서브 시스템의 상기 동작 모드에 의존하여 전역 일관성 실행을 제어하기 위하여, 디렉토리 정보를 선택적으로 저장하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
KR1020057005294A 2002-09-27 2003-09-18 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템 KR100970229B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/256,970 2002-09-27
US10/256,970 US7096323B1 (en) 2002-09-27 2002-09-27 Computer system with processor cache that stores remote cache presence information

Publications (2)

Publication Number Publication Date
KR20050070013A KR20050070013A (ko) 2005-07-05
KR100970229B1 true KR100970229B1 (ko) 2010-07-16

Family

ID=32041784

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057005294A KR100970229B1 (ko) 2002-09-27 2003-09-18 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템

Country Status (8)

Country Link
US (1) US7096323B1 (ko)
EP (1) EP1543427A2 (ko)
JP (1) JP4230998B2 (ko)
KR (1) KR100970229B1 (ko)
CN (1) CN100373353C (ko)
AU (1) AU2003277175A1 (ko)
TW (1) TWI304930B (ko)
WO (1) WO2004029812A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101077370B1 (ko) 2010-07-09 2011-10-26 삼성전기주식회사 발광피드백을 제공하는 정전용량식 터치스크린

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI251337B (en) * 2003-12-29 2006-03-11 Powerchip Semiconductor Corp Non-volatile memory cell and manufacturing method thereof
US7373466B1 (en) 2004-04-07 2008-05-13 Advanced Micro Devices, Inc. Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
JP4214941B2 (ja) * 2004-04-09 2009-01-28 日本電気株式会社 プレゼンス情報提供システム、その方法およびサーバ
US7200718B2 (en) * 2004-04-26 2007-04-03 Broadband Royalty Corporation Cache memory for a scalable information distribution system
US20060143384A1 (en) * 2004-12-27 2006-06-29 Hughes Christopher J System and method for non-uniform cache in a multi-core processor
US7788240B2 (en) * 2004-12-29 2010-08-31 Sap Ag Hash mapping with secondary table having linear probing
US7366844B2 (en) * 2005-02-10 2008-04-29 International Business Machines Corporation Data processing system and method for handling castout collisions
US7467323B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Data processing system and method for efficient storage of metadata in a system memory
US7584329B2 (en) * 2005-02-10 2009-09-01 International Business Machines Corporation Data processing system and method for efficient communication utilizing an Ig coherency state
US7474658B2 (en) * 2005-02-10 2009-01-06 International Business Machines Corporation Data processing system, method and interconnect fabric supporting concurrent operations of varying broadcast scope
US8140770B2 (en) * 2005-02-10 2012-03-20 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation
US7389388B2 (en) * 2005-02-10 2008-06-17 International Business Machines Corporation Data processing system and method for efficient communication utilizing an in coherency state
US8230178B2 (en) * 2005-02-10 2012-07-24 International Business Machines Corporation Data processing system and method for efficient coherency communication utilizing coherency domain indicators
US7454578B2 (en) * 2005-02-10 2008-11-18 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory
US7454577B2 (en) * 2005-02-10 2008-11-18 International Business Machines Corporation Data processing system and method for efficient communication utilizing an Tn and Ten coherency states
US8214600B2 (en) 2005-02-10 2012-07-03 International Business Machines Corporation Data processing system and method for efficient coherency communication utilizing coherency domains
US7415030B2 (en) * 2005-02-10 2008-08-19 International Business Machines Corporation Data processing system, method and interconnect fabric having an address-based launch governor
US7536513B2 (en) 2005-03-31 2009-05-19 International Business Machines Corporation Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state
US7237070B2 (en) * 2005-04-19 2007-06-26 International Business Machines Corporation Cache memory, processing unit, data processing system and method for assuming a selected invalid coherency state based upon a request source
US7444494B2 (en) * 2005-05-31 2008-10-28 International Business Machines Corporation Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a history-based prediction
US20070005899A1 (en) * 2005-06-30 2007-01-04 Sistla Krishnakanth V Processing multicore evictions in a CMP multiprocessor
US7380102B2 (en) * 2005-09-27 2008-05-27 International Business Machines Corporation Communication link control among inter-coupled multiple processing units in a node to respective units in another node for request broadcasting and combined response
US7818388B2 (en) * 2005-10-07 2010-10-19 International Business Machines Corporation Data processing system, method and interconnect fabric supporting multiple planes of processing nodes
US7386673B2 (en) * 2005-11-30 2008-06-10 Red Hat, Inc. Method for tracking of non-resident pages
US7526614B2 (en) * 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US7606981B2 (en) * 2005-12-19 2009-10-20 Intel Corporation System and method for reducing store latency
US7404045B2 (en) * 2005-12-30 2008-07-22 International Business Machines Corporation Directory-based data transfer protocol for multiprocessor system
US7512742B2 (en) 2006-01-17 2009-03-31 International Business Machines Corporation Data processing system, cache system and method for precisely forming an invalid coherency state indicating a broadcast scope
US7882307B1 (en) * 2006-04-14 2011-02-01 Tilera Corporation Managing cache memory in a parallel processing environment
US8495308B2 (en) * 2006-10-09 2013-07-23 International Business Machines Corporation Processor, data processing system and method supporting a shared global coherency state
JP2008118184A (ja) * 2006-10-31 2008-05-22 Fujitsu Ltd 処理装置及び処理モジュール
US8205024B2 (en) * 2006-11-16 2012-06-19 International Business Machines Corporation Protecting ownership transfer with non-uniform protection windows
US7890704B2 (en) * 2006-12-19 2011-02-15 International Business Machines Corporation Implementing an enhanced hover state with active prefetches
US7669011B2 (en) * 2006-12-21 2010-02-23 Advanced Micro Devices, Inc. Method and apparatus for detecting and tracking private pages in a shared memory multiprocessor
CN100498740C (zh) * 2007-09-11 2009-06-10 腾讯科技(深圳)有限公司 一种数据缓存处理方法、系统及数据缓存装置
JP2009223759A (ja) 2008-03-18 2009-10-01 Fujitsu Ltd 情報処理装置,メモリ制御方法およびメモリ制御装置
US8223650B2 (en) * 2008-04-02 2012-07-17 Intel Corporation Express virtual channels in a packet switched on-chip interconnection network
US8185695B2 (en) * 2008-06-30 2012-05-22 Advanced Micro Devices, Inc. Snoop filtering mechanism
US8364898B2 (en) * 2009-01-23 2013-01-29 International Business Machines Corporation Optimizing a cache back invalidation policy
US8868847B2 (en) * 2009-03-11 2014-10-21 Apple Inc. Multi-core processor snoop filtering
US20100332762A1 (en) * 2009-06-30 2010-12-30 Moga Adrian C Directory cache allocation based on snoop response information
US8886885B2 (en) * 2009-11-13 2014-11-11 Marvell World Trade Ltd. Systems and methods for operating a plurality of flash modules in a flash memory file system
US8392665B2 (en) 2010-09-25 2013-03-05 Intel Corporation Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines
US20120151232A1 (en) * 2010-12-12 2012-06-14 Fish Iii Russell Hamilton CPU in Memory Cache Architecture
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US9384133B2 (en) 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations
JP6207765B2 (ja) 2014-12-14 2017-10-04 ヴィア アライアンス セミコンダクター カンパニー リミテッド モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
US10719434B2 (en) 2014-12-14 2020-07-21 Via Alliance Semiconductors Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode
WO2016097808A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits
WO2017031637A1 (zh) * 2015-08-21 2017-03-02 华为技术有限公司 一种内存访问方法、装置和系统
CN106649149A (zh) * 2015-10-28 2017-05-10 福州瑞芯微电子股份有限公司 实现地址映射的内存管理系统及方法
US11138178B2 (en) * 2016-11-10 2021-10-05 Futurewei Technologies, Inc. Separation of computation from storage in database for better elasticity
US10073783B2 (en) 2016-11-23 2018-09-11 Advanced Micro Devices, Inc. Dual mode local data store
US10761986B2 (en) 2018-10-23 2020-09-01 Advanced Micro Devices, Inc. Redirecting data to improve page locality in a scalable data fabric
US11914517B2 (en) 2020-09-25 2024-02-27 Advanced Micro Devices, Inc. Method and apparatus for monitoring memory access traffic
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0908825A1 (en) * 1997-10-10 1999-04-14 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. A data-processing system with cc-NUMA (cache coherent, non-uniform memory access) architecture and remote access cache incorporated in local memory

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905141A (en) 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
US5197146A (en) * 1989-06-21 1993-03-23 Hewlett-Packard Company Method for maintaining cache coherence in a multiprocessor computer system
US5875464A (en) 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US5410669A (en) 1993-04-05 1995-04-25 Motorola, Inc. Data processor having a cache memory capable of being used as a linear ram bank
IN188196B (ko) 1995-05-15 2002-08-31 Silicon Graphics Inc
US6279078B1 (en) 1996-06-28 2001-08-21 Compaq Computer Corporation Apparatus and method for synchronizing a cache mode in a dual controller, dual cache memory system operating in a plurality of cache modes
US5864671A (en) 1996-07-01 1999-01-26 Sun Microsystems, Inc. Hybrid memory access protocol for servicing memory access request by ascertaining whether the memory block is currently cached in determining which protocols to be used
US5873117A (en) 1996-07-01 1999-02-16 Sun Microsystems, Inc. Method and apparatus for a directory-less memory access protocol in a distributed shared memory computer system
US5802600A (en) * 1996-11-12 1998-09-01 International Business Machines Corporation Method and apparatus for determining a desirable directory/data block ratio in a cache memory
US6041376A (en) 1997-04-24 2000-03-21 Sequent Computer Systems, Inc. Distributed shared memory system having a first node that prevents other nodes from accessing requested data until a processor on the first node controls the requested data
FR2764097B1 (fr) * 1997-06-02 1999-07-02 Bull Sa Detection de points chauds dans une machine avec memoire a acces non uniforme
US6055610A (en) * 1997-08-25 2000-04-25 Hewlett-Packard Company Distributed memory multiprocessor computer system with directory based cache coherency with ambiguous mapping of cached data to main-memory locations
US6073216A (en) * 1997-11-25 2000-06-06 Intel Corporation System and method for reliable system shutdown after coherency corruption
US6275904B1 (en) * 1998-03-31 2001-08-14 Intel Corporation Cache pollution avoidance instructions
US6295598B1 (en) 1998-06-30 2001-09-25 Src Computers, Inc. Split directory-based cache coherency technique for a multi-processor computer system
US6546429B1 (en) 1998-09-21 2003-04-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry
US6226718B1 (en) 1999-02-26 2001-05-01 International Business Machines Corporation Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system
US6269428B1 (en) * 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
US6434668B1 (en) 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to store information in particular regions of the cache according to information-type
US6763432B1 (en) * 2000-06-09 2004-07-13 International Business Machines Corporation Cache memory system for selectively storing directory information for a higher level cache in portions of a lower level cache
US6775742B2 (en) 2000-07-20 2004-08-10 Silicon Graphics, Inc. Memory device storing data and directory information thereon, and method for providing the directory information and the data in the memory device
US6662276B2 (en) 2000-12-29 2003-12-09 Intel Corporation Storing directory information for non uniform memory architecture systems using processor cache
US6615319B2 (en) * 2000-12-29 2003-09-02 Intel Corporation Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture
US20020138698A1 (en) 2001-03-21 2002-09-26 International Business Machines Corporation System and method for caching directory information in a shared memory multiprocessor system
US6711652B2 (en) 2001-06-21 2004-03-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides precise notification of remote deallocation of modified data
US6760809B2 (en) 2001-06-21 2004-07-06 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having remote memory cache incorporated within system memory
US6959364B2 (en) * 2002-06-28 2005-10-25 Intel Corporation Partially inclusive snoop filter
US6792512B2 (en) * 2002-08-06 2004-09-14 International Business Machines Corporation Method and system for organizing coherence directories in shared memory systems
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0908825A1 (en) * 1997-10-10 1999-04-14 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. A data-processing system with cc-NUMA (cache coherent, non-uniform memory access) architecture and remote access cache incorporated in local memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101077370B1 (ko) 2010-07-09 2011-10-26 삼성전기주식회사 발광피드백을 제공하는 정전용량식 터치스크린

Also Published As

Publication number Publication date
WO2004029812A3 (en) 2004-10-07
WO2004029812A2 (en) 2004-04-08
TW200408952A (en) 2004-06-01
JP4230998B2 (ja) 2009-02-25
CN1685320A (zh) 2005-10-19
EP1543427A2 (en) 2005-06-22
JP2006501548A (ja) 2006-01-12
AU2003277175A1 (en) 2004-04-19
CN100373353C (zh) 2008-03-05
US7096323B1 (en) 2006-08-22
KR20050070013A (ko) 2005-07-05
TWI304930B (en) 2009-01-01

Similar Documents

Publication Publication Date Title
KR100970229B1 (ko) 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템
KR101014394B1 (ko) 통합 디렉토리 및 프로세서 캐시를 구비한 컴퓨터 시스템
US7814286B2 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
KR101497002B1 (ko) 스누프 필터링 메커니즘
US9792210B2 (en) Region probe filter for distributed memory system
US5897656A (en) System and method for maintaining memory coherency in a computer system having multiple system buses
US6295582B1 (en) System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available
US7373457B2 (en) Cache coherence protocol for a multiple bus multiprocessor system
CN108446239B (zh) 用于数据处理的系统、主设备、互连结构、装置和方法
US20020053004A1 (en) Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links
JPH09259036A (ja) ライトバックキャッシュおよびライトバックキャッシュ内で整合性を維持する方法
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US7325102B1 (en) Mechanism and method for cache snoop filtering
JP2000067024A (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
WO2003044670A1 (en) Coherence message prediction mechanism and multiprocessing computer system employing the same
US20140229678A1 (en) Method and apparatus for accelerated shared data migration
US7797495B1 (en) Distributed directory cache
US6279086B1 (en) Multiprocessor system bus with combined snoop responses implicitly updating snooper LRU position
JP2000132456A (ja) 並列計算機のキャッシュメモリ装置

Legal Events

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

Payment date: 20130621

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140702

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150617

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160616

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee