KR20050070013A - 원격 캐쉬 존재 정보를 저장하는 프로세서 캐쉬를 구비한컴퓨터 시스템 - Google Patents
원격 캐쉬 존재 정보를 저장하는 프로세서 캐쉬를 구비한컴퓨터 시스템 Download PDFInfo
- Publication number
- KR20050070013A KR20050070013A KR1020057005294A KR20057005294A KR20050070013A KR 20050070013 A KR20050070013 A KR 20050070013A KR 1020057005294 A KR1020057005294 A KR 1020057005294A KR 20057005294 A KR20057005294 A KR 20057005294A KR 20050070013 A KR20050070013 A KR 20050070013A
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- memory
- data
- block
- remote
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
- G06F2212/2515—Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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
본 발명은 컴퓨터 시스템에 관한 것으로, 더욱 상세히는 컴퓨터 시스템내의 원격 캐슁에 관한 것이다.
일반적으로 컴퓨터 시스템은 메모리에 대한 프로세서의 액세스 지연을 감소하기 위해 하나 이상의 캐쉬를 포함한다. 일반적으로, 캐쉬는 하나 이상의 블록을 저장할 수 있고, 상기 블록 각각은 컴퓨터 시스템의 메모리 시스템 내의 대응 어드레스에 저장된 데이터의 사본이다.
주어진 블록이 하나 이상의 캐쉬에 저장될 수 있기 때문에, 그리고 게다가 상기 메모리 시스템 내의 상기 사본에 관하여 캐쉬된 사본들중 하나가 수정될 수 있기 때문에, 컴퓨터 시스템은 종종 상기 캐쉬들과 상기 메모리 시스템들 사이의 일관성을 유지한다. 만약 블록에 대한 업데이트가 사전 정의된 일관성 프로토콜(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)에 따라 비용을 증가시키는 결과가 된다.
메모리 지연을 감소시키기 위한 공유 메모리 시스템에서 사용되는 다른 기법은 원격 캐슁이다. 원격 캐슁을 사용하는 시스템에서, 하나의 노드에 연결된 시스템의 부분은 다른 노드에 맵된 메모리 위치에 대응되는 데이터를 캐슁하기 위해 할당될 수 있다. 원격 캐슁의 이점은 원격 메모리 지연이 로컬 메모리 지연보다 상당히 큰 시스템에서 현저하게 나타난다.
원격 캐슁을 실행하는 시스템에서, 스토리지 메커니즘은 상기 원격 캐쉬에 포함된 라인들 또는 블록들을 식별하기위해 일반적으로 사용된다. 상기와 같이, 싱글 프로세서 환경내에 배치되어질 직접 회로내의 그러한 기능의 포함은 다이 영영의 낭비 및 증가된 비용을 낳는다.
본 발명의 다른 목적 및 이점들은 하기의 상세한 설명을 읽음으로써 그리고 하기의 도를 참조함으로써 분명해 진다.
도 1은 컴퓨터 시스템의 일 실시예에 대한 블록 도 이다.
도 2는 패킷 정의의 일 실시예를 나타내는 테이블이다.
도 3은 프로세싱 노드의 일 실시예 블록 도 이다.
도 4는 메모리 제어기의 일 실시예 블록 도이다.
도 5는 캐쉬 메모리 서브 시스템의 블록 도이다.
도 6은 일반적인 캐쉬 배열의 일 실시예를 도시한다.
도 7은 직접 맵 디렉토리 캐쉬 조직을 도시한다.
도 8 및 도 9는 디렉토리 엔트리들이 프로브 커맨드 및 응답 트래픽을 필터하기 위해 이용될수 있는 방법을 도시한다.
도 10은 디렉토리 엔트리들이 4-웨이 구성을 사용함으로써 저장되는 캐쉬 배열을 도시한다.
도 11 및 도 12는 대안적인 디렉토리 엔트리 포맷을 도시한다.
도 13은 원격 캐쉬를 포함하는 컴퓨터 시스템의 다른 실시예를 도시한다.
도 14는 프로세싱 노드의 다른 실시예를 나타내는 블록 도이다.
도 15는 현존 벡터를 저장하기 위해 지정된 웨이가 사용되는 캐쉬 메모리 서브 시스템의 구성을 도시한다.
도 16은 주어진 현 비트를 인덱싱(indexing)하기 위한 대안적인 포맷을 도시한다.
본 발명의 다양한 수정과 대안적인 형태가 가능하나, 그것으로부터 특정한 실시예가 도면의 예 방식으로 설명되고 상세한 설명내에 기술된다. 그러나 발명이 도면 및 상세한 설명에 의해 제시된 특정 형태로만 제한되는 것은 아니며, 청구범위에 의해 정의된 본 발명의 사상 및 범위내에서 모든 수정, 균등물, 그리고 대안을 보호하고자 함이다.
원격 캐쉬 존재 정보를 포함하는 프로세서 캐쉬를 구비한 컴퓨터 시스템이 제시된다. 일 실시예에서, 다른 노드에 맵된 특정 데이터 블록이 원격적으로 캐쉬되었는지 여부를 나타내기 위해 다수의 존재 벡터가 저장된다. 상기 존재 벡터를 전용 스토리지에 저장하는 대신, 상기 원격 캐쉬 존재 벡터는 L2 캐쉬처럼 캐쉬 메모리 서브 시스템 내의 지정된 장소에 저장될 수 있다. 예를 들면, 캐쉬의 잔여 웹이들은 일반 프로세서 데이터를 저장하도록 사용되는 대신에, 캐쉬 메모리 서브 시스템의 지정된 웨이가 원격 캐쉬 존재 벡터를 저장하기 위해 할당될 수 있다. 일 특정한 실행에서, 오로지 클린하고 공유된 데이터 블록들만이 원격적으로 캐쉬된다. 새로운 데이터 블록드은 사기 캐쉬 메모리 서브 시스템으로부터의 추출에 응답하여 원격적으로 캐쉬된다. 추가적인 실시예에서, 캐쉬 메모리 서브 시스템의 추가적인 엔트리들이 디렉토리 엔트리를 저장하기 위해 사용되어 프로브 명령 및 응답 트래픽을 필터할 수 있다.
디렉토리 엔트리들의 스토리지를 위해 캐쉬 메모리를 사용함으로써, 독립적인 디렉토리 스토리지에 대한 요구가 없어진다. 따라서, 총체적인 비용, 필요한 보드 범위, 전력 소비, 그리고 쿨링 요구사항들이 감소될 수 있다. 게다가, 디렉토리 엔트리들의 스토리지를 위한 캐쉬 메모리 서브 시스템의 이용은 상기 서브 시스템들이 싱글 프로세서 환경 또는 다중 프로세서 환경에 배치 되는지 여부에 기반하여 선택적으로 인에이블될 수 있는 실시예가 가능하다. 따라서, 싱글 프로세서 환경에 배치되는 경우, 상기 캐쉬 메모리 서브 시스템의 스토리지 위치는 프로세서 캐슁 동작을 위해 독점적으로 이용될 수 있고, 전용 디렉토리 스토리지의 낭비(예로, 이용되지 않음)가 없어질 수 있다.
도 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) 디바이스와 통신하도록 연결된 것이 나타나고, 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에서 예시된 것 보다 더 많거나 혹은 더 적은 프로세싱 노드를 포함할 수 있다. 또한, 각각의 프로세싱 노드가 점대점(poiont-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)로 라우트되어야 하는지를 결정하기위해 사용되는 메모리 맵을 포함할 수 있다. 일 실시예에서, 컴퓨터 시스템내의 어드레스에 대한 일관성 지점은 상기 어드레스에 대응하는 바이트 저장 메모리에 연결된 상기 메모리 제어기(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 커맨드를 수신하는 각각의 노드는 상기 소스 노드에 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 응답 패킷을 상기 희생 블록의 소스 노드로 전송한다. 상기 소스 노드는 상기 데이터가 커미트 되어야 한다는 것을 나타내기 위한 SRcDon 응답 패킷이나, 또는 상기 데이터가 VilBlk 커맨드의 전송과 TgtDone 응답 패킷(예로, 중재 프로브에대한 응답)의 수령중에 무효화되었다는 것을 나타내기 위한 MemCancel 응답 패킷중 하나에 응답한다.
ChangetoDirty 커맨드 패킷은 상기 소스 노드에 의해 쓰기 불가능한 상태로 저장된 블록에 대해 쓰기 허락을 획득하기 위해 소스 노드에 의해 전송된다. ChangetoDirty 커맨드에 의해 개시된 트랙잭션은 상기 타겟 노드가 데이터를 반환하지 않는다는 점을 제외하고는 읽기와 비슷하게 동작한다. 상기 소스 노드가 전체 블록을 업데이트하려고 하는 경우 상기 ValidateBlk 커맨드는 소스 노드에 의해 저장되지 않은 블록에 대한 쓰기 허가를 얻기 위해서도 사용될 수 있다. 그러한 트랜잭션을 위해 데이터가 상기 소스 노드로 전송되는 것은 아니며, 읽기 트랜잭션과 비슷하게 동작한다.
TgtStart 응답은 트랜잭션이 시작되었다는(예로, 다음의 트랙잭션을 명령하기 위해) 것을 나타내기 위해 타겟에 의해 사용될 수 있다. Nop info 패킷은, 예를 들면 버퍼 프리(buffer free) 표시자를 노드들 사이에 전송하기 위해 사용될 수 있는 비 동작 패킷이다. Broadcast 커맨드는 노드들 간에(예로, 상기 브로드캐스트 전송 명령은 인터럽트를 분산하기 이해 사용될 수 있음) 메세지를 브로드캐스트하기 위해 사용될 수 있다. 마지막으로, sync info 패킷은 광 채널 동기화가 선호되는 경우를 위해 사용될 수 있다. 다른 실시예에서도, 다른 커맨드 타입 및 관련 이관성 프로토콜이 사용될 수 있다는 점을 주목하자.
도 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 명령 세트 아키텍쳐가 선택될 수 있다. 대안적으로, Alph, 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은 K-way가 끼워넣기 관련 캐쉬 구조를 세트하는 것처럼 실행되는 하나의 가능한 캐쉬 배열을 도시한다. 캐쉬 메모리(72)내의 스토리지(102)의 블록은 데이터 엔트리, 태그 필트, 그리고 상태 필드와 함께 표시된다. 일 실시예에서, 상기 데이터 엔트리는 64 바이트 데이터로 구성된다. 상기 상태 필트는 MOESI 프로토콜내에서 Modified(수정된), Owned(소유된), Exclusive(배타적), Shared(공유된), 또는 Invalid(무효)와 같은 캐쉬 블록의 상태를 식별한다. 일반적인 방법에서, 캐쉬 적중률은 상기 캐쉬 블록과 함께 저장되는 태그 정보와 상기 캐쉬 메모리를 액세스하기 위해 사용되는 어드레스 태그 필트를 포함함으로써 결정될 수 있다. 캐쉬 메모리의 주어진 일련의 블록들은 상기 어드레스의 색인 부분을 사용하여 액세스된다. LRU 필드는 상기 설정내의 어느 엔트리가 최근에 가장 적게 참조되었는지, 그리고 어느 엔트리가 캐쉬 제어기(74)에 의해 사용되는 캐쉬 대체 알고리즘과 관련되어 사용되었는지를 나타낸다. 도 6에 나타난 캐쉬 배열은 일반적인 것이다. 다른 실시예에서, 캐쉬 메모리(72)는 다른 특정 캐쉬 배열을 사용하여 수행될 수 있다. 또한 단독 프로세서 환경에 배치된 캐쉬 메모리(72)의 모든 스토리지 위치가 일반 캐쉬 엔트리(예로, 단독 프로세서 환경 모드에서 캐쉬 제어기(74)의 모드 스토리지 유닛(75)을 세팅함으로써)를 위해 사용될 수 있다. 상술된 바와 같이, 다중 프로세서 환경에서 배치된 캐쉬 메모리(72)의 일부 위치는 디렉토리 엔트리들을 저장하기 위해 사용될 수 있다. 상기 디렉토리 엔트리들은 유지될 수 있고, 그리고 일관성 동작을 제어하기 위해 일관성 제어 회로(64)에 의해 액세스 될 수 있다.
상기 디렉토리 엔트리들은 다양한 방식으로 캐쉬 메모리(72)내에 유지될 수 있다. 예를 들면, 도 7은 캐쉬 메모리(72)(예로, 상술된 실시예에서 웨이(15))의 지정된 웨이가 디렉토리 엔트리들을 저장하기 위해 사용될 수 있는 캐쉬 배열을 나타낸다. 일 실시예에서, 이 구성은 다중 프로세서 환경 모드에서 캐쉬 제어기(74)의 프로그래밍 모드 스토리지 유닛(74)에 의해 프로그램가능하게 세트될 수 있다.
도 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))에 의해 수행된다. 도 8의 예시에서, 상기 디렉토리 검색에 응답하여 디렉토리 부적중이 발생할 수 있다. 결국, 디렉토리 엔트리가 존재하기 않기 때문에, 상기 블록이 임의의 프로세싱 노드의 캐쉬들에서 공유 또는 무효되는 것만이 가능하다. 결국 프로세싱 노드 P0는 메모리 0으로부터 상기 데이터를 검색하고, 그리고 상기 데이터를 프로세싱 노드 P2를 통하여 프로세싱 노드 P3에 제공한다. 프로세싱 노드 P3 가 상기 데이터를 수신하면, 소스 완료 메세지는 예를 들면 프로세싱 노드 P1을 통하여 프로세싱 노드 P3로부터 프로세싱 노드 P0로 전송될 수 있다. 이는 상기 트랜잭션을 완료시킨다. 이 예에서, 상기 디렉토리 검색은 디렉토리 부적중 결과 낳기 때문에, 프로세싱 노드 P0는 특정 무효화 프로브를 어느 다른 프로세서 노드로 전송할 필요가 없으며, 이는 브로드캐스트 전송 일관성 프로토콜을 사용하는 시스템에서는 이와 달리 요구될 것이다.
도 9는 프로세싱 노드 P3가 읽기 요청을 메모리 0에 맵된 블록에 제기하는 비슷한 예를 나타낸다. 그러나 이 예에서는, 프로세싱 노드 P0가 디렉토리 검색을 수행할 경우, 디렉토리 적중이 캐쉬 메모리의 대응 엔트리에서 발생한다. 상기 디렉토리 엔트리는 상기 블록이 프로세싱 노드 P1에서 ME 상태에 있음을 나타낸다. 프로세싱 노드 P0의 상기 일관성 제어 회로는 프로브 명령을 프로세싱 노드(1)로 전송되도록 하며, 이는 다시 프로세싱 노드(1)가 데이터를 프로세싱 노드 P3로 전송하도록 한다. 일 실시예에서, 상기 데이터는 프로세싱 노드 P3에서 공유된 상태로 설정되었기 때문에, 프로세싱 노드 P1의 상기 캐쉬 제어기는 상기 상태 M에서 O 으로 그것의 상기 블록의 캐쉬된 사본을 다운그레이드할 것이이다. 프로세싱 노드P0의 상기 일관성 제어 회로는 프로세싱 노드 P1에서 O 상태로 캐쉬되었다는 것을 나타내기 위해 상기 블록에 대한 디렉토리 엔트리를 또한 업그레이드 한다. 이 실시예에서, ME 상태에서 블록에 대한 디렉토리 적중이 발생했기 때문에, 프로세싱 노드 P0는 특정 프로세싱 노드로 무효화하는 프로브를 전송할 필요가 없다.
다수의 다른 특정 일관성 동작이 프로세싱 노드에 의해 개시된 다른 트랜잭션에 응답하여 호출될 수 있다. 상기 예와 비슷하게, 프로브 명령 및 응답 트래픽은 액세스 되는 블록에 대한 디렉토리 엔트리의 존재에 기반하여, 그리고/또는 디렉토리 엔트리내에 나타난바와 같이 블록의 상태에 근거하여 필터될 수 있다. 예를 들면, 도 9를 다시 참조하면, 프로세싱 노드 P3가 특정 블록의 배타적인 사본(예로, RdBlkMod 명령을 개시함으로써)수신하기 위해 읽기 명령을 개시하는 경우, 프로세싱 노드 P0는 프로브 명령을 수정된 블록의 사본을 포함하는 상기 프로세싱 노드 P1에 전송할 수 있다. 상기 프로세싱 노드 P1은 대응하여 상기 데이터를 프로세싱 노드 P3에 전송한다. 게다가, 상기 프로세싱 노드 P1은 그것의 사본은 무효로 다운그레이드 하고, 그리고 프로세싱 노드 P0은 상기 블록이 프로세싱 노드 P3에서 ME 상태에 있다는 것을 나타내기 위해 상기 블록에 대한 상기 디렉토리 엔트리를 업그레이드 할 것이다. 다양한 다른 특정 일관성 동작은 트랜잭션의 타입, 디렉토리 엔트리의 존재, 디렉토리 엔트리내의 상기 블록의 상태에 의존하여 비슷한식으로 적절히 수행된다.
다른 실시예에서는 많은 다른 디렉토리 엔트리 형식이 가능하다. 디렉토리 엔트리의 특정한 형식은 다른 요소들 가운데에서 보관된 총 상태 정보, 시스템의 범위성, 그리고 디렉토리 스토리지 과부하에 근거할 수 있다.
도 10은 4-웨이 캐쉬 구성을 사용하여 디렉토리 엔트리들이 저장되는 대안적인 배열을 도시한다. LRC 필드는 대체될 예정인 최근 가장 사용되지 않은 엔트리(세트의)가 디렉토리 충돌 부적중(즉, 새로운 엔트리가 기존 엔트리를 덮어쓰는 경우)의 발생의 경우에 있는지를 결정하기 위해 유지된다. 디렉토리 충돌이 발생하는 경우 상기 일관성 제어 회로는 특정 일관성 활동을 필요시에 호출할 수 있다. 예를 들면, 어떠한 상황에서는, 상기 캐쉬 일관성 회로는 수정된 블록 사본을 갖는 노드로 하여금 후기입(後記入)(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)에 의해 사용되는 원격 캐슁 정책은 오직 공유된 원격 데이터를 저장하는 것이다, 이러한 실시예에서, Modified(수정된), Owned(소유된), 또는 Exclusive(배타적인) 데이터는 상기 원격 캐쉬(302A)에 저장되지 않는다. 상기 원격 캐쉬(302A)는 상기 캐쉬 메모리 서브 시스템(52)에 관하여 비 포함일 수 있고, 그리고 캐쉬 메모리 서브 시스템(52)(그리고 필요시 캐쉬 메모리 서브 시스템(56))으로부터 추출된 공유 블록을 위한 희생 캐쉬로서 동작할 수 있다. 그러한 식으로, 상기 원격 캐쉬(302A)는 상기 원격 캐쉬(302A)에 아직 제시되지 않은 공유된 원격 블록이 캐쉬 메모리 서브 시스템(52)(그리고/또는 캐쉬 메모리 서브시스템(36))에서 대체되는 경우에만 원격 캐쉬 제어기(402)에 의해 쓰여질 수 있다.
도 15는 캐쉬 메모리 서브 시스템(52)의 구성을 예시하는데, 이는 대응되는 원격 블록들이 원격 캐쉬(302)내에 캐쉬되는지 여부를 식별하는 정보를 포함한 존재 벡터를 저장하도록 지정된 웨이(예로, 설명된 실시예의 웨이(14))가 사용될 수 있는 캐쉬 메모리 서브 시스템의 구성을 나타낸다. 캐쉬 블록은 다수의 엔트리들을 포함하는 존재 벡터를 포함할 수 있고, 각각은 대응되는 블록이 상기 원격 캐쉬(302A)내에서 Shared(S) 상태로 제시되었는지 아닌지 여부를 나타낸다. 도 14의 실시예에서, 각각의 엔트리들은 단독 존재 비트로 구성된다. 주어진 존재 벡터는 상기 캐쉬 메모리를 액세스하기 위해 사용된 어드레스의 선택된 색인 비트들(IndexL2)에 따라서 액세스될 수 있다. 비슷한식으로, 주어진 존재 벡터의 존재 비트는 어드레스의 다른 비트들(예로, IndexPV)을 사용함으로써 선택될 수 있다. 존재 벡터 적중은 상기 블록과 함께 저장된 상기 블록 태그(예로, TagL2)가 상기 캐쉬를 액세스하기 위해 사용된 어드레스의 대응 태그 비트들과 매치되는 경우에 발생한다.
원격 캐쉬(302A)를 위해 할당되어진 시스템 메모리(14)의 물리적 어드레스는 원격 캐쉬 제어기(402A)와 관련된 구성 레지스터내에 저장된 RC 기반 어드레스 값에 따라서 지정될수 있다. 메모리(14A)의 원격 캐쉬(302A)내에 원격으로 캐쉬된 블록은 존재 벡터 색인 및 L2 색인을 형성하는 비트들에 관련되는 상기 RC 기반 어드레스를 사용함으로써 주소지정 될 수 있다.
도 14의 실시예에서, 원격 캐쉬(302A)내로의 블록의 인스톨은 Modifed 또는 Owned 데이터(또는 디렉토리를 갖는 시스템에서 독점 권한 데이터에 대한 대체 통지)의 추출을 요구하지 않는다. 게다가, 상기 존재 비트는 블록이 유효하고 그리고 공유된 상태에 있다는 점 모두를 나타내기에 충분하기 때문에 일관성 상태 정보가 원격적으로 캐쉬된 블록을 위해 요구되지 않는다. 공유된 블록이 캐쉬 메모리 서브 시스템(52)(그리고 필요시에 캐쉬 메모리 서브 시스템(56))내에서 대체되는 때에, 상기 블록이 상기 원격 캐쉬내에 아직 제시되지 않았다면 상기 블록은 원격 캐쉬(302A)내에 인스톨된다. 상기 원격 캐쉬(302A)내의 데이터가 결코 더티(dirty)되지 않기 때문에, 상기 원격 캐쉬(302A)내의 블록들은 조용히 대체될 수 있고, 그리고 원격 캐쉬 추출은 불필요하게 될 수 있다. 또다른 노드가 저장을 수행하거나 혹은 현 Shared(S) 상태내에 블록 독점 권한 사본을 요청하는 때에, 프로세싱 노드(12A)에 의해 수신된 프로브 명령을 무효화하는 결과는 검색이 캐쉬 메모리 서브 시스템(52)에서 실행되도록 하고, 그때문에 상기 블록이 상기 원격 캐쉬(302A)내에 또는 캐쉬 메모리 서브 시스템(52)에 제시되었는지 여부를 결정하도록 한다. 상기 블록이 상기 원격 캐쉬(302A)내 또는 상기 캐쉬 메모리 서브 시스템(52)내에서 공유되다는 점을 나타내는 것과 동시에 적중되는 경우, 상기 블록은 무효화된다.
일부 실시예에서, 캐쉬 메모리 서브 시스템(52)은 상술된 바와 같이 디렉토리 엔트리들을 저장하기 위해, 그리고 원격 캐쉬 존재 표시를 저장하기 위해서 사용될 수 있다. 예를 들면, 일 실시예에서, 존재 벡터의 스토리지를 위한 다른 웨이(예로, 웨이 14)를 지정함과 동시에, 캐쉬 메모리 서브 시스템(52)은 디렉토리 엔트리들의 스토리지를 위한 일 웨이(예로, 웨이 15)를 지정할 수 있다. 조합되어 사용되는 캐쉬 메모리 서브 시스템(52)에 대한 단독 액세스는 상기 데이터가 캐쉬되었는지 여부를 결정하기 위해, 그리고 상기 데이터가 상기 원격 캐쉬(302A)에 캐쉬되었는지 여부를 결정하기 위해 수행될 수 있다. 게다가, 상기 액세스가 상기 로컬 노드에 대해 맵된 데이터에 대한 것인 경우에, 상기 캐쉬 메모리 서브 시스템에 대한 상기 액세스는 추가적으로 상기 데이터가 다른 프로세서의 캐쉬에서 Modified, Owned, 또는 Exclusive 상태내에 캐쉬되었는지 여부를 결정할 수 있고, 만약 그렇다면 상기 노드는 상기 데이터를 포함한다. 게다가, 저장(또는 다른 노드로부터 데이터 블록의 독점적인 사본을 수신하기 위한 요청)의 경우에, 상기 프로세싱 노드에 의해 수신된 대응 무효 프로브는 캐쉬 메모리(74)에서의 (예로, 웨이 0-13) 그리고 상기 원격 캐쉬(302A)(예로, 캐쉬 메모리 서브 시스템의 웨이 14내의 상기 블록에 대응되는 상기 존재 비트를 바꿈으로써)에서의 블록의 동시적인 무효화를 초래한다.
다른 실시예에서, 캐쉬 메모리 서브 시스템(54)에 포함된 상기 존재 정보는 다른 특정 구성을 사용하여 저장될 수 있다. 예를 들면, 도 16은 상기 캐쉬 메모리 서브 시스템이 주어진 존재 비트를 액세스하도록 색인될수 있는 대안적인 방식을 도시한다.
게다가, 원격 캐쉬 존재 정보의 스토리지를 위한 캐쉬 메모리 서브 시스템(52)(및/또는 캐쉬 메모리 서브 시스템(56)의 엔트리들(예로, 선택된 웨이)의 사용은 운영 환경에 기반하여 선택적으로 인에이블될 수 있다. 예를 들면, 모드 스토리지 유닛(75)에 저장된 값은 상기 원격 캐쉬 존재 정보 특징이 인에이블되었는지 여부를 제어할 수 있다. 그러듯이, 단독 프로세서 환경에 배치된 상기 모드 스토리지 유닛(75)는 일반 캐슁 동작을 위한 캐쉬 메모리 서브 시스템의 모든 엔트리들을 지정하도록 세트될 수 있고, 그때문에 스토리지 자원 낭비를 피할 수 있다.
상기 제시된 내용을 충분히 이해하면, 수 많은 변형과 수정이 당업자에게는 자명한 것이다. 하기의 청구범위가 이러한 모든 변형과 수정을 포함하도록 해석되어야 한다.
본 발명은 일반적으로 컴퓨터 시스템에 적용될 수 있다.
Claims (10)
- 컴퓨터 시스템에 있어서, 프로세서 코어(50), 캐쉬 메모리 서브 시스템(52), 그리고 제 1 시스템 메모리(14A)를 포함하는 제 1 노드(12A)와; 그리고제 2 시스템 메모리(14B)를 구비하는 제 2 노드(12B)를 포함하며, 상기 캐쉬 메모리 서브 시스템의 적어도 일부 엔트리들은 상기 메모리 서브 시스템의 동작 모드에 의존하여, 프로세서 데이터 또는 원격 캐쉬 존재 정보를 선택적으로 저장하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항에 있어서, 상기 제 1 시스템 메모리(14A)는 상기 제 2 시스템 메모리(14B)에 맵된 데이터를 원격적으로 캐쉬하도록 구성되고, 여기서 상기 원격 캐쉬 존재 정보는 상기 제 1 시스템 메모리에서 상기 데이터의 존재를 나타내는 것을 특징으로 하는 컴퓨터 시스템.
- 제 2항에 있어서, 상기 제 1 노드는 상기 제 1 시스템 메모리내의 상기 데이터의 원격 캐슁을 제어하기 위해 원격 캐쉬 제어기(302A)를 포함하는 것을 특징으로 하는 컴퓨터 시스템
- 제 3항에 있어서, 상기 원격 캐쉬 제어기는 캐슁 정책을 이용하고, 여기서 데이터는 상기 제 1 시스템 메모리내의 공유된 상태에서 원격적으로 캐쉬되고, 그리고, 여기서 수정된 또는 소유된 상태의 데이터는 상기 제 1 시스템 메모리에서 원격적으로 캐쉬되는 것을 특징으로 하는 컴퓨터 시스템
- 제 4항에 있어서, 상기 원격 캐쉬 제어기는 상기 캐쉬 메모리 서브 시스템으로부터의 상기 블록의 대체에 응답하여 상기 제 1 시스템 메모리의 공유된 상태에 데이터 블록을 저장하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템
- 제 5항에 있어서, 상기 원격 캐쉬 제어기는 오로지 상기 캐쉬 메모리 서브 시스템으로부터의 대체에 응답하여서만 상기 제 1 시스템 메모리내에서 데이터를 원격적으로 캐쉬하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
- 제 6항에 있어서, 상기 원격 캐쉬 제어기는 상기 블록이 상기 제 1 시스템 메모리내에서 아직 원격적으로 캐쉬되지 않는 경우에만 상기 제 1 시스템 메모리내에 상기 블록을 저장하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항 내지 제 7항중 어느 한 항에 있어서, 상기 캐쉬 메모리 서브 시스템의 추가적인 엔트리들은 전역 일관성 실행을 제어하기 위해 상기 캐쉬 메모리 서브 시스템의 상기 동작 모드에 의존하여 프로세서 데이터 또는 디렉토리 정보를 선택적으로 저장하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항 내지 제 8항중 어느 한 항에 있어서, 상기 캐시 메모리 서브 시스템의 스토리지의 주어진 라인들은 원격 캐쉬 존재 벡터를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항 내지 제 9항중 어느 한 항에 있어서, 상기 캐쉬 메모리 서브 시스템의 지정된 웨이는 원격 캐쉬 존재 정보를 저장하기 위해 선택적으로 인에이블 되는 것을 특징으로 하는 컴퓨터 시스템.
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 true KR20050070013A (ko) | 2005-07-05 |
KR100970229B1 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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8464004B2 (en) | 2008-03-18 | 2013-06-11 | Fujitsu Limited | Information processing apparatus, memory control method, and memory control device utilizing local and global snoop control units to maintain cache coherency |
Families Citing this family (56)
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 |
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 |
US8214600B2 (en) | 2005-02-10 | 2012-07-03 | International Business Machines Corporation | Data processing system and method for efficient coherency communication utilizing coherency domains |
US7366844B2 (en) * | 2005-02-10 | 2008-04-29 | International Business Machines Corporation | Data processing system and method for handling castout collisions |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 | 腾讯科技(深圳)有限公司 | 一种数据缓存处理方法、系统及数据缓存装置 |
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 |
KR101077370B1 (ko) | 2010-07-09 | 2011-10-26 | 삼성전기주식회사 | 발광피드백을 제공하는 정전용량식 터치스크린 |
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 |
US9384133B2 (en) | 2014-05-30 | 2016-07-05 | International Business Machines Corporation | Synchronizing updates of page table status indicators and performing bulk operations |
US9785554B2 (en) | 2014-05-30 | 2017-10-10 | International Business Machines Corporation | Synchronizing updates of page table status indicators in a multiprocessing environment |
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 |
US9798668B2 (en) | 2014-12-14 | 2017-10-24 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon 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 |
CN107408071A (zh) * | 2015-08-21 | 2017-11-28 | 华为技术有限公司 | 一种内存访问方法、装置和系统 |
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 |
Family Cites Families (30)
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 |
EP0908825B1 (en) | 1997-10-10 | 2002-09-04 | Bull S.A. | A data-processing system with cc-NUMA (cache coherent, non-uniform memory access) architecture and remote access cache incorporated in local memory |
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 |
WO2002008910A1 (en) | 2000-07-20 | 2002-01-31 | 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 |
-
2002
- 2002-09-27 US US10/256,970 patent/US7096323B1/en not_active Expired - Lifetime
-
2003
- 2003-09-18 KR KR1020057005294A patent/KR100970229B1/ko not_active IP Right Cessation
- 2003-09-18 AU AU2003277175A patent/AU2003277175A1/en not_active Abandoned
- 2003-09-18 CN CNB038231441A patent/CN100373353C/zh not_active Expired - Lifetime
- 2003-09-18 JP JP2004540309A patent/JP4230998B2/ja not_active Expired - Fee Related
- 2003-09-18 EP EP03798809A patent/EP1543427A2/en not_active Withdrawn
- 2003-09-18 WO PCT/US2003/031020 patent/WO2004029812A2/en active Application Filing
- 2003-09-25 TW TW092126443A patent/TWI304930B/zh not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8464004B2 (en) | 2008-03-18 | 2013-06-11 | Fujitsu Limited | Information processing apparatus, memory control method, and memory control device utilizing local and global snoop control units to maintain cache coherency |
KR101284969B1 (ko) * | 2008-03-18 | 2013-08-23 | 후지쯔 가부시끼가이샤 | 정보 처리 장치, 메모리 제어 방법 및 메모리 제어 장치 |
Also Published As
Publication number | Publication date |
---|---|
JP4230998B2 (ja) | 2009-02-25 |
WO2004029812A3 (en) | 2004-10-07 |
EP1543427A2 (en) | 2005-06-22 |
TWI304930B (en) | 2009-01-01 |
WO2004029812A2 (en) | 2004-04-08 |
JP2006501548A (ja) | 2006-01-12 |
KR100970229B1 (ko) | 2010-07-16 |
AU2003277175A1 (en) | 2004-04-19 |
CN1685320A (zh) | 2005-10-19 |
TW200408952A (en) | 2004-06-01 |
US7096323B1 (en) | 2006-08-22 |
CN100373353C (zh) | 2008-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100970229B1 (ko) | 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템 | |
KR101014394B1 (ko) | 통합 디렉토리 및 프로세서 캐시를 구비한 컴퓨터 시스템 | |
US7669018B2 (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 | |
US6049847A (en) | System and method for maintaining memory coherency in a computer system having multiple system buses | |
US7373457B2 (en) | Cache coherence protocol for a multiple bus multiprocessor system | |
US7669011B2 (en) | Method and apparatus for detecting and tracking private pages in a shared memory multiprocessor | |
US20020053004A1 (en) | Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links | |
JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
US7117312B1 (en) | Mechanism and method employing a plurality of hash functions for cache snoop filtering | |
US20140229678A1 (en) | Method and apparatus for accelerated shared data migration | |
US20030154351A1 (en) | Coherence message prediction mechanism and multiprocessing computer system employing the same | |
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 |