KR100234503B1 - 디렉토리 기반의 캐시 코히어런스 프로토콜을 사용하는 멀티프로세서에서의 무효화 버스 최적화 - Google Patents
디렉토리 기반의 캐시 코히어런스 프로토콜을 사용하는 멀티프로세서에서의 무효화 버스 최적화 Download PDFInfo
- Publication number
- KR100234503B1 KR100234503B1 KR1019960032843A KR19960032843A KR100234503B1 KR 100234503 B1 KR100234503 B1 KR 100234503B1 KR 1019960032843 A KR1019960032843 A KR 1019960032843A KR 19960032843 A KR19960032843 A KR 19960032843A KR 100234503 B1 KR100234503 B1 KR 100234503B1
- Authority
- KR
- South Korea
- Prior art keywords
- directory
- processor
- cache
- global directory
- invalidation
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- 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/0826—Limited pointers directories; State-only directories without pointers
-
- 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/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
다단계 상호접속 네트워크 기반의 멀티프로세서에 대한 디렉토리 기반의 캐시 코히어런스 포로토콜을 위한 최적화 스킴은 네트워크 지연을 감소시킴으로써 시스템 성능을 향상시킨다. 적절한 수의 프로세서를 구비한 스케일러블 멀티프로세서 시스템에 최적화 스킴은 적용된다. 공유 데이타를 수정하는 것은 이러한 시스템의 성능 하락에 가장 중요한 인자이다. 디렉토리 기반의 캐시 코히어런스 스킴은 네트워크의 프로세서 측상에 있는 무효화 버스를 사용한다. 무효화 버스는 시스템 내의 모든 전용 캐시를 접속하여 무효화 요청을 처리함으로써 네트워크를 통해 무효 표시를 보내야 할 필요성을 제거한다.
Description
본 발명은 전용 캐시를 갖는 다수의 프로세서가 다단계 상호 접속 네트워크를 통해 공유 메모리에 접속되어 있는 멀티프로세서 시스템, 특히 디렉토리 기반의 캐시 코히어런스 프로토콜을 사용하는 멀티프로세서 시스템에서 무효화 버스를 최적화함으로써 시스템 성능을 향상시키는 것에 관한 것이다.
병렬 처리 시스템의 도래로 종래의 단일 프로세서 시스템에 비해 잠재적인 성능의 증가를 가져왔다. 주기억 장치의 밴드폭은 이러한 시스템에서 프로세서가 요구하는 속도에 대처할 수가 없었다. 이에 따른 엑세스 갭을 완화시키는 방법 중의 하나가 프로세서를 캐시 메모리라고 하는 소형의 고속 버퍼와 연관시키는 것이다. 이 캐시 메모리는 주기억 장치보다 한 자릿수 더 빨라서 보통 프로세서의 속도와 부합된다.
공유 메모리 방식 멀티프로세서는 통상 전용 캐시 메모리를 구비한 다수의 프로세서, 전역 메모리 및 프로세서와 일부 또는 모든 전역 메모리 사이의 상호 접속 네트워크로 이루어진다. 전역 메모리는 프로세서에 의해 공유되는 주기억 장치를 형성하며 흔히 다수의 메모리 모듈로서 구현된다. 공유 메모리 시스템에 저장 되어 있는 메모리 라인의 가능한 다수의 복사본을 구비하는 다수의 캐시로 인해 데이타 불일치성의 문제가 발생한다. 이 문제를 해결하기 위해 현재 이용 가능한 방법에는 두가지가 있다 ; 하드웨어 및 소프트웨어 방식의 캐시 코히어런스이다. 본 발명은 하드웨어 캐시 코히어런스 프로토콜에 관련된다.
하드웨어 프로토콜은 버스 (또는 스누피 snoopy) 기반 및 디렉토리 기반의 두가지 타입으로 분류될 수 있다. 버스 기반의 프로토콜이 일반적으로 비교적 소스의 프로세서를 갖는 시스템에 사용되는 반면, 디렉토리 기반의 프로토콜은 향상된 스칼라 빌리티(scalability)의 대형 시스템에 사용된다. 디렉토리 기반의 프로토콜에서 전역 디렉토리는 보통 주기억 장치와 연관되어 캐리 라인의 전역적 상태와 그 라인의 복사본을 갖는 캐시 메모리의 수 및/또는 위치를 결정하는데 사용되는 정보를 포함한다.
종래의 디렉토리 기반의 캐시 코히어런스 프로토콜에는 모든 프로세서로 하여금 동시에 캐시 코히어런스 작용을 행하게 하는 전역 메카니즘이 존재하지 않았다. 따라서, 전역 디렉토리는 라인들의 전역적 상태와 그 동일성 여부 또는 그 라인의 복사본을 갖는 프로세서의 수를 기록하는 데 사용된다. 프로세서가 라인을 수정하려고 하며 그 라인에 대한 배타적인 판독/기록 액세스를 갖지 않을 경우에 프로세서는 다단계 상호 접속 네트워크(MIN)를 통해 해당 라인과 관련된 전역 디렉토리 엔트리에 수정 요청을 보낸다. 그후, 디렉토리는 해당 라인의 복사본을 갖는 프로세서에 무효 표시를 보내거나 해당 라인의 복사본을 갖는 프로세서의 동일성이 (MIN을 통해서도) 알려지지 않으면 모든 프로세서에 무효 표시를 전송한다. 그후, 무효화 승인이 디렉토리를 다시 보내지거나 또는 MIN을 경유하여 해당 라인을 수정하기를 요구하는 캐시로 보내진다. MIN을 경유하는 무효화 및 승인과 연관된 오버헤드는 MIN에 대한 과도한 경쟁을 야기하여 시스템 성능을 떨어뜨리는 원인이 된다.
전역 디렉토리 기반의 캐시 코히어런스 프로토콜에 대한 여러가지 연구가 행해져 왔다. 예를 들면, 다음의 자료들을 참고한다.
A. Agarwal, R, Simoni, J. Hennessy, 및 M. Horowitz의 "An Evaluation of Directory Schemes for Cache Coherence", Proceedings of the 15th Annual International Symposium of Computer Architecture, pp. 280-289, Honolulu, Hawaii, IEEE Computer Society Press, 1988.
L. M. Censier 및 P. Feautrier의 "A New Solution to Coherence Problems in Multicache Systems", IEEE Transactions on Computers, Vol. C-27, No. 12, pp. 1112-1118, Dec. 1978
M. Dubois and F. A. Briggs, "Effects of Cache Coherency in Multiprocessors", IEEE Transactions on Computers, Vol. C-31, No. 11, Nov. 1982
Daniel Lenoski, James Landon, Kourosh Gharachorloo, Anoop Gupta, 및 John Hennessy의 "The Directory-Based Cache Coherence Protocol for the DASH Multiprocessor", Proc. of the 17th Annual International Symposium of Computer Architecture, May 1990, pp. 148-159
C. K. Tang의 "Cache System Design in the Tightly Coupled Multiprocessor System", Proceedings of the 1976 National computer Conference, pp. 749-753, 1976
W. C. Yen, D. W. L. Yen, 및 K. S. Fu의 "Data Coherence Problem in a Multicache System", IEEE Transactions on computers, pp. 56-65, Jan. 1985
그러나, 이들 자료중의 어떤 것도 이들 프로토콜의 성능에 대해 무효화 및 차후의 승인에 대해 야기된 네트워크의 지연 효과를 감소시킬 것으로 고려되는 것은 없다. 다단계 상호 접속 네트워크(MIN) 및 전용 캐시를 사용하는 멀티프로세서는 통상 데이타 일치성을 유지하기 위해 디렉토리 기반의 캐시 코히어런스 프로토콜을 이용하지만, 네트워크의 지연으로 인해 이러한 시스템의 성능이 제한될 수 있는데, 이는 프로세서가 무효화의 결과가 네트워크를 통해서 2개의 라운드-트립(two round-trips)을 요구한다는 것을 기록하기 때문이다.
L.N. Bhuyan 및 I. Ahmed의 "Analysis of MIN Based Multiprocessors with Private Cache Memories", Proceedings of the International Conference on Parallel Processing, Vol. I. pp. 51-58, 1989, 여기에는 캐시 및 프로세서를 메모리 모듈과 접속시키는 상호접속 네트워크와 연관된 스누핑 버스(snooping bus)를 갖는 멀티프로세서가 개시되어 있다. 이러한 시스템에서 코히어런스 연관의 모든 활동은 이 버스를 경유하여 일어난다. 이 버스가 멀티프로세서 시스템용의 전역 통신원의 역할을 하기 때문에, 무효화 승인은 캐시 코히어런스 프로토콜에서 필요하지 않다. 캐시와 메모리 사이의 데이타 전송용으로만 MIN이 사용된다. 부얀(Bhuyan) 및 아메드(Ahmed)는 이러한 아키텍처가 최대 64개의 프로세서에 대해 스케일러블을 지원한다. 그러나, 스누핑 버스가 프로세서 수의 증가시 포화될 가능성이 존재함으로써 시스템의 스케일러빌러티를 제한한다.
본 발명의 목적은 시스템의 계산 처리 능력을 유지하면서 이러한 시스템에서 발생하는 네트워크의 지연없이 캐시 코히어런스를 제공하는 스케일러블 멀티프로세서 시스템에 사용된 다단계 상호 접속 네트워크(MIN)용의 최적화 스킴을 제공하는 것이다.
본 발명의 다른 목적은 네트워크 지연의 단점을 감소시켜서 시스템 성능을 향상시키는 스케일러블 멀티프로세서 시스템용의 전역 디렉토리 기반의 캐시 코히어런스 프로토콜을 제공하는 것이다.
본 발명에 따르면, 무효화 버스는 무효 표시 전용 또는 무효 승인 표시용으로 사용된다. 전용 캐시, 다단계 상호접속 네트워크(MIN) 및 인터리브형 메모리 모듈을 구비한 공유 메모리형 멀티프로세서 시스템은 본 발명의 양호한 실시예로서 가정된다. 캐시 코히어런스 프로토콜은 디렉토리 기반의 프로티콜에 의해 구현되는 것으로 가정한다. 본 발명의 시스템은 특히 디렉토리 기반의 코히어런스 프로토콜에서 무효 및 승인에 따른 MIN의 오버헤드를 줄이도록 설계되어 있다.
본 발명에 다른 최적화 스킴은 프로세서가 공유 데이타의 수정을 시도할 경우에 원격 캐시에 있는 모든 데이타를 무효화하도록 다단계 상호 접속 네트워크(MIN)의 프로세서 측상의 무효화 버스를 포함한다. 무효화 버스는 코히어런스 프로토콜의 무효화 활동을 프로세서가 병렬오 행하는 것을 용이하게 하는 전액 메카니즘을 제공한다. 디렉토리 기반의 프로토콜이 가정되므로 디렉토리는 여전히 캐시 라인에 대한 상태 정보를 유지할 필요가 있다. 그러나, 본 발명은 해당 라인의 복사본을 갖는 캐시의 동일성을 알 필요가 없기 때문에 종래의 디렉토리 기반의 프로토콜과는 다르다. 본 발명은 단디 해당 라인의 복사본을 갖는 캐시의 수를 아는 것만이 요구된다. 따라서, 무효 표시가 버스 상에 놓이면, 해당 라인의 복사본을 갖는 모든 캐시가 무효화된 것을 디렉토리가 알도록 무효 승인이 필요하다.
본 발명과 부얀 및 아메드 아키텍처의 차이점을 후자가 버스 기반의 캐시 코히어런스 프로토콜을 사용하는 것이다. 이러한 캐시 코히어런스는 전적으로 버스를 통해 구현된다. 반면, 본 발명은 디렉토리 기반의 캐시 코히어런스 프로토콜을 사용한다. 대부분의 코히어런스 프로토콜은 디렉토리를 사용하여 구현된다. 이것을 부얀 및 아메드의 스누피-버스 기법에서 요구되지 않는 무효화 승인의 사용을 필요로 한다. 동시에, 본 발명은 해당 라인의 복사본을 갖는 프로세서의 자취를 유지할 수 없으나 무효 표시용으로 사용되는 무효화 버스가 추가되기 때문에 종래의 디렉토리 기반의 프로토콜과는 다르다. 해당 라인의 복사본을 갖고 있는 프로세서의 실질적 수만이 필요하다. 따라서, 전역 디렉토리의 크기는 작아지며 그 결과로 무효화 버스는 MIN의 경쟁을 줄이게 되어 성능을 향상시킨다.
전역 디렉토리는 양호한 실시예에서 분산형 전역 디렉토리를 형성하는 메모리 모듈과 연관된 다수의 전역 디렉토리 모듈로서 구현된다. 무효화 버스는 프로세서가 공유된 캐시 라인을 기록하려고 할 경우에 요구되는 프로토콜 액션을 최적화하는데 사용된다.
캐시 내의 데이타를 수정하려고 시도하는 프로세서는 무효화 버스상에 해당 데이타의 주소를 띄움과 동시에 전역 디렉토리에 스토어 요청을 전송한다. 모든 캐시가 무효화 버스에 접속되어 있으므로 해당 데이타의 복사본을 갖는 캐시들은 해당 데이타가 곧 수정되고 다음에 그 복사본을 무효화시키는 것을 보게 된다. 자신의 복사본을 무효화시키는 캐시들은 또한 무효 승인 신호를 전역 디렉토리를 보낸다. 동시에, 프로세서는 스토어 요청을 전역 디렉토리로 보낸다. 전역 디렉토리는 무효 승인을 대기한 후 허가 신호를 프로세서로 보낸다.
이러한 무효화 버스없이 종래의 디렉토리 기반의 캐시 코히어런스 프로토콜에서는 네트워크를 통한 2개의 라운드-트립을 필요로 한다. 본 발명의 무효화 버스는 스토어 요청과 무효화를 중첩하여 네트워크를 통한 트립을 감소시킴으로써 스케일러블 시스템의 성능을 향상시킨다. 부얀 및 아메드는 이들 접근 기법이 64개의 프로세서까지 스케일러블하다고 제안한다. 본 발명은 보다 스케일러블하다. 예를 들어, 캐시 라인의 판독 전용의 복사본을 유지하고 있는 절반의 프로세서를 갖는 P-프로세서 멀티프로세서 시스템을 가정하자. 다른 프로세서가 해당 라인을 수정하기를 소망하면, 모든 P/2 개의 프로세서는 해당 라인을 수정하려고 한다. 부얀 및 아메드 아키텍처에서는 제1 프로세서의 캐시가 무효화 신호를 버스 상에 놓는다. 그 후, P/2 개의 모든 프로세서는 해당 라인의 각 복사본을 무효화하고 해당 라인을 요청 캐시에 전달한다. 다음에, P/2 개의 모든 프로세서는 버스가 무효 표시를보내고 해당 라인의 복사본을 얻도록 중재하는 동안 해당 라인을 수정하려고 한다. 통상, 무효 표시를 보내는데 한 버스 사이클이 필요하며 버스를 통해 해당 라인을 전송하는데는 1s/4 버스 사이클(여기서 1s는 바이트 단위의 라인 크기임)이 필요하다. 따라서, 이러한 트랜잭션을 완료하는데 필요한 버스 사이클의 수는 다음과 같다.
멀티프로세서 시스템의 스케일러빌러티는 버스상에 놓여진 요구에 의해 제한된다. 상기 관계식은 부얀 및 아메드 시스템에서 버스 상에 놓여진 요구의 제1차 근사(a first-order approximation)의 역할을 한다.
본 발명의 제1 실시예에 따르면, 단지 무효 표시만이 버스 상에 놓여진다. 따라서, 트랜잭션을 완료하는데 필요한 버스 사이클의 총 수는 다음과 같다 :
본 발명의 제2 실시예에서의 요구되는 버스 사이클의 총 수는 다음과 같이 무효 및 승인을 포함한다. 여기서, 무효 승인은 한 버스 사이클을 사용하는 것을 가정한다.
128 바이트의 라인 크기를 갖는 64 프로세서 시스템의 경우에 부얀 및 아메드 아키텍처는 1089개의 버스 사이클을 필요로 한다. 반면, 동수의 프로세서를 갖는 본 발명의 제1 실시예에서는 단지 33개의 버스 사이클을 필요로 하고 제2 실시예에서는 97개의 버스 사이클을 필요로 한다. 본 발명의 제1 실시예의 결과로 인해 1089/33=33배 더 스케일러블하며 제2 실시예의 결과로는 1089/96=11배 더 스케일러블하다. 따라서, 부얀 및 아메드에 따른 64 프로세서 시스템과 동일한 성능을 내기 위해서는 본 발명은 제1 및 제2 실시예에 대해 각각 적어도 64 × 33 = 2112 및 64 × 11 = 704 프로세서까지 스케일러블하다.
제1a, 1b, 1c 및 1d도는 디렉토리 기반의 캐시 코히어런스 멀티프로세서 시스템에서의 종래의 무효화 프로토콜을 도시하는 기능 블럭도.
제2a, 2b 및 2c도는 최적화된 종래의 무효화 프로토콜을 도시하는 기능 블럭도.
제3도는 본 발명의 양호한 실시예에 따른 디렉토리 및 무효화 버스를 구비한 시스템의 기능 다이어그램.
제4a, 4b 및 4c도는 무효화 버스가 무효화용으로만 사용되는 본 발명의 제1 실시예에 따른 무효화 프로토콜을 도시하는 기능 블럭도.
제5a 및 5b도는 무효화 버스가 무효화 및 승인 양쪽에 사용되는 본 발명의 제2 실시예에 따른 무효화 프로토콜을 도시하는 기능 블럭도.
제6a, 6b, 6c 및 6d도는 종래의 무효화 프로토콜, 최적화된 종래의 무효화 프로토콜, 및 본 발명의 제1 및 제2 실시예에서의 요청을 처리하는데 필요한 시간을 각각 도시하는 타이밍도.
제7a 및 7b도는 종래의 무효화 기법, 및 본 발명에 따른 제1 및 제2 실시예 용의 N-엔트리 분산형 전역 디렉토리를 각각 도시하는 메모리 맵.
〈도면의 주요부분에 대한 부호의 설명 〉
10 : 다단계 상호 접속 네트워크(MIN) 14 : 분산형 전역 디렉토리(DGD)
161내지 16p : 캐시 181내지 18p : 프로세서
20 : 무효화 버스
이제 도면 특히 도1a 내지 도1d에는 멀티프로세서 시스템에서 수행되는 종래의 디렉토리 기반의 무효화 프로토콜이 도시되어 있다. 다단계 상호 접속 네트워크(MIN)를 포함하는 멀티프로세서 시스템을 가정한다. 프로세서들과 디렉토리사이의 모든 통신은 MIN(도시되지 않음)을 경유한다. 도 1a에서는 프로세서 P1이 수정 요청을 디렉토리로 내보낸다. 나머지 프로세서 P2 내지 PP 각각은 수정 요청이 행해지는 라인 또는 라인들에 대한 액세스만을 판독하는 것으로 가정되며, 이 정보는 디렉토리에 저장된다. 도 1b에서는 디렉토리가 여타 프로세서 P2 내지 PP 각각에 무효 표시를 내보낸다. 그후, 도 1c에서는 프로세서 P2 내지 PP 각각의 라인들 상의 각 복사본을 무효화하고 무효 신호를 디렉토리로 내보낸다. 디렉토리가 수정될 라인 또는 라인들의 복사본을 갖는 각 프로세서로부터 모든 무효 승인을 수신하였을 때만 디렉토리는 도 1D에서와 같이 프로세서 P1에 수정 요청을 허가한다.
종래의 무효화 프로토콜은 도 2a 내지 도 2c를 통해 최적화되었다. 이전과 같이 프로세서 P1은 도 2a에서 수정 요청을 디렉토리로 보내지만, 여기서는 디렉토리가 프로세서 P2 내지 PP의 각각에 무효 표시를 보내는 것에 더해 수정 요청의 조건부 허가 신호를 프로세서 P1에 보낸다. 수정 요청의 허가는 여타 프로세서로부터 소정 수의 무효 승인을 수신하여 프로세서 P1에 대해 이루어지는데, 이러한 소정 수는수정 요청의 조건부 허가와 더불어 디렉토리에 의해 프로세서 P1에 주어진다. 도 2c에서 프로세서 P1은 각 프로세서 P2 내지 PP로부터 무효 승인을 바로 수신하고, 그 후 프로세서 P1을 해당 라인 또는 라인들을 자유롭게 수정하는 것이다.
도 3에는 본 발명을 구현하는 MIN 기반의 멀티프로세서 시스템의 기능 블럭도를 도시한다. 시스템은 다수의 메모리 모듈(MM)(12l내지 12m)이 부착되어 있는 다단계 상호 접속 네트워크(MIN)(10)를 포함한다. 다단계 상호 접속 네트워크(MIN)는 이 기술 분야에 공지되어 있다. 예를 들면, 츄안-린 우 및 체-윤 펭의 "On a Class of Multistage Interconnection Networks", IEEE Transactions on Computers, Vol. C-29, No. 8, August 1980, PP.694-702를 참고한다. 메모리 모듈(12l내지 12m)은 시스템의 공유 주기억 장치를 포함한다. 주기억 장치는 캐시라인의 전역 상태 및 해당 라인의 복사본을 갖고 있는 캐시 메모리의 개수 및/또는 위치를 결정하는데 사용되는 정보를 포함하는 전역 디렉토리와 연관되어 있다.
도 3에 도시된 시스템의 전역 디렉토리는 분산형 전역 디렉토리(DGD)(14)를 형성하는 메모리 모듈과 더불어 분산된 다수의 전역 디렉토리 모듈(14l내지 14m)로 구성된다. DGD(14)는 캐시 라인의 전역 상태 뿐만 아니라 해당 라인의 복사본을 갖는 캐시의 개수 및/또는 위치를 결정하는데 사용되는 정보를 포함한다. 또, MIN(10)은 대응하는 프로세서(P)(18l내지 18P)용의 지역 캐시가 되는 다수의 캐시(C)(16l내지 16P)에 부착되어 있다. 이들 각 캐시는 무효화 버스(20)에 바로 접속되는데, 이 버스는 상세히 후술하는 바와 같이 프로세서들 중의 하나에 의해 제기된 무효화 요청의 처리를 최적화하여 네트워크를 통해 무효 표시를 전송할 필요성을 제거한다.
분산형 전역 디엑토리(14)는 캐시들이 해당 라인의 복사본을 갖는 것이 모를 수도 있다. 캐시 동일성 여부의 판을 위해 여러가지 설계 기법상의 선택 사양이있다. 선택적으로 한 설계 기법은 모든 캐시가 해당 라인의 복사본을 갖는지를 결정하는 정보가 있는 디렉토리를 갖는다. 다른 설계 기법은 디렉토리 엔트리당 소수의 캐시 아이덴티파이어를 갖는다. 해당 라인을 공유하는 캐시의 수가 캐시 아이덴티파이어의 수보다 작거나 같으면, 디렉토리는 어느 캐시가 라인을 갖는지를 알것이다. 그렇지 않으면, 디렉토리는 해당 라인을 갖는 캐시의 수만을 알 것이다.
도 4a 내지 도 4c는 본 발명의 제1 실시예에 따른 무효화 프로토콜을 도시한다. 도 4a에서 프로세서 P1은 수정 요청을 디렉토리로 내보냄과 동시에 무효화 요청 신호를 무효화 버스 상에 올린다. 무효화 버스 상의 주소 또는 주소들에 의해 지정되는, 수정될 라인 또는 라인들의 복사본을 갖는 이들 프로세서는 대응하는 라인 또는 라인들을 무효화하고 무효 승인을 디렉토리로 도 4b에서와 같이 보낸다. 디렉토리가 모든 무효 승인을 수신할 때 도 4c에서 디렉토리는 허가 신호를 프로세서 P1에 보낸다.
도 5a및 도 5b는 본 발명의 제2 실시예에 따른 무효화 프로토콜을 도시한다. 도 5a에서 프로세서 P1은 수정 요청을 디렉토리로 내보냄과 동시에 무효화 요청을 무효화 버스 상에 올린다. 도 5b에서는 수정될 해당 라인 또는 라인들의 복사본을 갖는 프로세서의 수에 대응하는 무효 승인의 수를 수신한 후에 디렉토리가 수정에 대한 조건부 허가를 갖는 프로세서 P1에 응답한다. 이 때, 무효 승인은 다른 프로세서들로부터 바로 무효화 버스를 경유하여 프로세서 P1으로 공급된다.
도 6a 내지 도 6d는 여러가지 프로토콜의 성능을 대비하는 타이밍도이다. 도 1a 내지 도 1d에 도시된 종래 시스템의 동작은 도 6a에 도시된다. 네트워크지연은 4 단위를 포함하며 버스 사이클은 1 단위의 시간을 포함하는 것으로 가정한다. 수정 요청이 네트워크를 경유하여 디렉토리에 대해 행해져야 하므로 수정 요청은 도 6a에서 4 단위의 시간을 소비한다. 마찬가지로, 무효 신호는 4 단위 시간을 소비하면서 디렉토리로부터, 네트워크를 경유하여 수정될 해당 라인 또는 라인들의 복사본을 유지하는 다른 프로세서로 전달되어야 한다. 무효화 승인은 다시 한번 다른 4 단위의 시간을 소비하면서 네트워크를 경유하여 디렉토리로 전달되어야 한다. 마지막으로, 디렉토리는 또 다른 4 단위의 시간을 소비하면서 수정 요청의 허가를 네트워크를 경유하여 요구 프로세서로 전달한다. 프로세서는 전부 16 단위의 시간을 소비하였다.
도 2a 내지 도 2c에 도시된 최적화된 종래의 프로토콜은 도 6b에 도시된다. 여기서, 처음 2개의 사이클은 종래의 프로토콜에서와 같다. 그러나, 수정 요청의 허가가 다른 프로세서들로부터 바로 모든 무효 승인을 수신하는 요구 프로세서에 대해 조건부이므로 허가 사이클이 무효화 사이클 또는 무효화 승인 사이클과 중첩되고 그 결과로 4 단위 시간이 절약된다.
종래 및 최적화된 종래의 프로토콜과 달리, 본 발명의 두 실시예는 상당한 양의 시간을 절약하여 멀티프로세서 시스템의 성능을 더욱 향상시킨다. 도 4a 내지 도 4c에 도시된 제1 실시예의 프로토콜은 도 6c에 도시된다. 수정 요청이 무효화 버스 상에 놓이고 동시에 네트워크를 경유하여 디렉토리로 전달되므로, 다른 프로세서가 무효 승인을 디렉토리로 전달하기 전에 단지 한 사이클의 버스 지연이 있을 뿐이다. 따라서, 수정 요청의 수신 후 한 버스 사이클 지연 내에 디렉토리는 네트워크를 경유하여 요구 프로세서에 허가 신호를 보낸다. 사이클은 단지 9 단위 시간에 완료된다.
제2 실시예에 따른 프로토콜의 결과로 훨씬 더 많은 시간을 절약하게 되어 성능이 보다 향상된다. 도 5a 및 도 5b에 도시된 이 프로토콜은 도 6d에 도시된다. 이 경우에 무효화 버스는 수정 요청 및 그 반응의 무효화 승인 모두를 전송한다. 따라서, 수정 요청의 수신시 디렉토리는 즉시 조건부 허가를 내보내고 그 결과로 사이클의 완료에 단지 8 단위 시간이 필요하다.
본 발명의 제1 및 제2 실시예에 대한 N-엔트리 전역 디렉토리 및 종래의 N-엔트리 분산형 전역 디렉토리의 메모리 맵은 각각 도 7a 및 도 7b에 도시한다. 도 7a에 도시된 종래의 디렉토리에서 엔트리는 디렉토리 태그(dtag), 전역 상태(gstate), 각 N개의 프로세서에 대한 프로세서 ID(PID), 재기록 또는 무효화 승인의 대기를 나타내는 이벤트 플래그(WTEVNT), 및 재기록/무효화 승인의 발생을 야기하는 요구된 이벤트에 대한 이벤트 플래그(RQEVNT)로 이루어진다. 보다 컴팩트한 엔트리를 제공하기 위해 PID들은 각 비트가 프로세서를 나타내는 P-벡터에 의해 대체될 수 있다. 반면, 본 발명의 N-엔트리 분산형 전역 디렉토리는 보다 간단하여 PID 또는 P-벡터가 없어도 된다. 도 7b에 도시한 바와 같이 본 발명의 전역 디렉토리에서의 엔트리는 단지 dtag, gstate와 그리고 WTEVNT 및 RQEVNT 플래그만을 필요로 한다.
본 발명이 양호한 실시예를 통해 설명되었지만, 이 분야의 기술자들은 본 발명이 후술되는 특허 청구 범위의 정신 및 범위 내에서 수정이 가능함을 인식할 것이다.
Claims (7)
- 공유 메모리 멀티프로세서 시스템(a shared memory multiprocessor system)에 있어서 각각이 연관된 캐시 메모리를 각각 갖고 있는 다수의 프로세서 ; 각 프로세서의 캐시 메모리와 결합된 다단계 상호접속 네트워크 ; 상기 다단계 상호접속 네트워크와 결합된 다수의 인터리브형 메모리 모듈 ; 캐시 라인(cache line)의 전역 상태(global state)를 결정하기 위해 사용되는 정보를 포함하는 전역 디렉토리(global directory) - 상기 전역 디렉토리는 분산형 전역 디렉토리를 구성하는 다수의 전역 디렉토리 모듈로 이루어지며, 각 메모리 모듈은 연관된 전역 디렉토리 모듈을 구비함 - ; 및 상기 각 캐시 메모리와 직접 결합된 무효화 버스(an invalidation bus)를 포함하며, 데이타를 수정하고자 하는 프로세서는 데이타 수정을 위한 스토어 요청(store request)을 상기 전역 디렉토리로 보냄과 동시에 수정될 데이타의 주소를 상기 무효화 버스 상에 올리며, 모든 캐시 메모리는 상기 무효화 버스 상의 주소에 의해 지정되는 캐시 라인의 복사본을 가지고 있고 그들의 복사본을 무효화시키며, 상기 전역 디렉토리는 상기 프로세서에 데이타의 수정을 허가하는 허가 신호를 보내는 공유 메모리 멀티프로세서 시스템.
- 제1항에 있어서, 상기 전역 디렉토리는 해당 라인의 복사본을 갖는 캐시 메모리의 개수(the mumber of cache memories)에 대한 정보를 포함하는 공유 메모리 멀티프로세서 시스템.
- 제1항에 있어서, 캐시메모리는 상기 무효화 버스를 통해 상기 어드레스에 의해 지정되는 캐시 라인의 복사본을 무효화시키고자 할 때는 무효 승인 신호를 상기 전역 디렉토리로 보내고, 상기 무효 승인 신호를 수신함으로써 상기 전역 디렉토리는 상기 허가 신호를 데이타를 수정하려는 프로세서로 보내는 공유 메모리 멀티프로세서 시스템.
- 제1항에 있어서, 캐시 메모리는 상기 무효화 버스를 통해 상기 어드레스에 의해 지정되는 캐시 라인의 복사본을 무효화시키고자 할 때는 무효 승인 신호를 데이타를 수정하려는 프로세서로 바로 보내며, 상기 전역 디렉토리는 상기 허가 신호 이외에도 프로세서가 수신해야 하는 무효 승인의 총수(a count of the number)를 보내는 공유 메모리 멀티프로세서 시스템.
- 다수의 인터리브형 메모리 모듈이 다단계 상호접속 네트워크를 경유하여 다수의 프로세서와 결합되어 있는 공유 메모리 멀티프로세서 시스템에서 캐시 코히어런스(cache coherence)를 유지하기 위한 무효화 프로토콜에 있어서, 캐시 라인의 전역 상태를 결정하기 위해 사용되는 정보를 포함하는 전역 디렉토리를 제공하는 단계 - 상기 전역 디렉토리는 분산형 전역 디렉토리를 구성하는 다수의 전역 디렉토리 모듈로 이루어지며, 각 메모리 모듈은 연관된 전역 디렉토리 모듈을 구비함 - ; 캐시 메모리의 각각에 직접 결합된 무효화 버스를 제공하는 단계 ; 데이타를 수정하고자 하는 프로세서가 데이타 수정을 위한 스토어 요청을 상기 전역 디렉토리로 보냄과 동시에 수정될 데이타의 주소를 상기 무효화 버스 상에 올리는 단계 ; 상기 무효화 버스 상의 주소에 의해 지정되는 캐시 라인의 복사본을 갖는 모든 캐시 메모리가 각 복사본을 무효화하는 단계 ; 및 상기 전역 디렉토리가 데이타의 수정을 허가하는 허가 신호를 상기 프로세서에 보내는 단계를 포함하는 무효화 프로토콜.
- 제5항에 있어서, 캐시 메모리가 상기 무효화 버스를 통해 상기 어드레스에 의해 지정되는 캐시 라인의 복사본을 무효화시키고자 할 때는 무효 승인 신호를 상기 전역 디렉토리로 보내는 단계 ; 및 상기 전역 디렉토리가 상기 무효 승인 신호를 수신할 때 상기 허가 신호를 데이타를 수정하려는 프로세서로 보내는 단계를 더 포함하는 무효화 프로토콜.
- 제5항에 있어서, 캐시 메모리가 상기 무효화 버스를 통해 상기 어드레스에 의해 지정되는 캐시 라인의 복사본을 무효화시키고자 할 때 무효 승인 신호를 데이타를 수정하려는 프로세서로 바로 보내는 단계 ; 및 상기 전역 디렉토리가 상기 허가 신호 이외에는 상기 프로세서가 수신해야 하는 무효 승인의 총수를 보내는 단계를 더 포함하는 무효화 프로토콜.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8/533,044 | 1995-09-25 | ||
US08/533,044 | 1995-09-25 | ||
US08/533,044 US5778437A (en) | 1995-09-25 | 1995-09-25 | Invalidation bus optimization for multiprocessors using directory-based cache coherence protocols in which an address of a line to be modified is placed on the invalidation bus simultaneously with sending a modify request to the directory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR970016951A KR970016951A (ko) | 1997-04-28 |
KR100234503B1 true KR100234503B1 (ko) | 1999-12-15 |
Family
ID=24124228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960032843A KR100234503B1 (ko) | 1995-09-25 | 1996-08-07 | 디렉토리 기반의 캐시 코히어런스 프로토콜을 사용하는 멀티프로세서에서의 무효화 버스 최적화 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5778437A (ko) |
EP (1) | EP0764905B1 (ko) |
JP (1) | JP3320312B2 (ko) |
KR (1) | KR100234503B1 (ko) |
DE (1) | DE69616226T2 (ko) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5950226A (en) * | 1996-07-01 | 1999-09-07 | Sun Microsystems, Inc. | Multiprocessing system employing a three-hop communication protocol |
US5900015A (en) * | 1996-08-09 | 1999-05-04 | International Business Machines Corporation | System and method for maintaining cache coherency using path directories |
US6094709A (en) * | 1997-07-01 | 2000-07-25 | International Business Machines Corporation | Cache coherence for lazy entry consistency in lockup-free caches |
US6295584B1 (en) * | 1997-08-29 | 2001-09-25 | International Business Machines Corporation | Multiprocessor computer system with memory map translation |
US6633958B1 (en) * | 1997-11-17 | 2003-10-14 | Silicon Graphics, Inc. | Multiprocessor computer system and method for maintaining cache coherence utilizing a multi-dimensional cache coherence directory structure |
US6108721A (en) * | 1998-06-29 | 2000-08-22 | Hewlett-Packard Company | Method and apparatus for ensuring data consistency between an i/o channel and a processor |
US6295598B1 (en) * | 1998-06-30 | 2001-09-25 | Src Computers, Inc. | Split directory-based cache coherency technique for a multi-processor computer system |
US6751698B1 (en) | 1999-09-29 | 2004-06-15 | Silicon Graphics, Inc. | Multiprocessor node controller circuit and method |
JP3571616B2 (ja) * | 2000-05-23 | 2004-09-29 | エヌ・ティ・ティ・コムウェア株式会社 | データの共有方法、端末装置および記録媒体 |
US6725334B2 (en) * | 2000-06-09 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method and system for exclusive two-level caching in a chip-multiprocessor |
US6668308B2 (en) * | 2000-06-10 | 2003-12-23 | Hewlett-Packard Development Company, L.P. | Scalable architecture based on single-chip multiprocessing |
US6633960B1 (en) * | 2000-08-31 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Scalable directory based cache coherence protocol |
US6738836B1 (en) * | 2000-08-31 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Scalable efficient I/O port protocol |
US6763434B2 (en) * | 2000-12-30 | 2004-07-13 | International Business Machines Corporation | Data processing system and method for resolving a conflict between requests to modify a shared cache line |
US6801984B2 (en) * | 2001-06-29 | 2004-10-05 | International Business Machines Corporation | Imprecise snooping based invalidation mechanism |
US7003635B2 (en) * | 2002-10-03 | 2006-02-21 | Hewlett-Packard Development Company, L.P. | Generalized active inheritance consistency mechanism having linked writes |
US7082500B2 (en) * | 2003-02-18 | 2006-07-25 | Cray, Inc. | Optimized high bandwidth cache coherence mechanism |
KR100515059B1 (ko) * | 2003-07-22 | 2005-09-14 | 삼성전자주식회사 | 멀티프로세서 시스템 및 멀티프로세서 시스템의 캐쉬일관성 유지 방법 |
US7249224B2 (en) * | 2003-08-05 | 2007-07-24 | Newisys, Inc. | Methods and apparatus for providing early responses from a remote data cache |
US8205046B2 (en) * | 2005-01-31 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | System and method for snooping cache information using a directory crossbar |
GB2538054B (en) | 2015-04-28 | 2017-09-13 | Advanced Risc Mach Ltd | Data processing apparatus, controller, cache and method |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3845474A (en) * | 1973-11-05 | 1974-10-29 | Honeywell Inf Systems | Cache store clearing operation for multiprocessor mode |
US4142234A (en) * | 1977-11-28 | 1979-02-27 | International Business Machines Corporation | Bias filter memory for filtering out unnecessary interrogations of cache directories in a multiprocessor system |
US4648030A (en) * | 1983-09-22 | 1987-03-03 | Digital Equipment Corporation | Cache invalidation mechanism for multiprocessor systems |
US4959777A (en) * | 1987-07-27 | 1990-09-25 | Motorola Computer X | Write-shared cache circuit for multiprocessor system |
US5058006A (en) * | 1988-06-27 | 1991-10-15 | Digital Equipment Corporation | Method and apparatus for filtering invalidate requests |
US5025365A (en) * | 1988-11-14 | 1991-06-18 | Unisys Corporation | Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors |
JPH0680499B2 (ja) * | 1989-01-13 | 1994-10-12 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチプロセッサ・システムのキャッシュ制御システムおよび方法 |
US5345578A (en) * | 1989-06-30 | 1994-09-06 | Digital Equipment Corporation | Competitive snoopy caching for large-scale multiprocessors |
US5283886A (en) * | 1989-08-11 | 1994-02-01 | Hitachi, Ltd. | Multiprocessor cache system having three states for generating invalidating signals upon write accesses |
US5197139A (en) * | 1990-04-05 | 1993-03-23 | International Business Machines Corporation | Cache management for multi-processor systems utilizing bulk cross-invalidate |
CA2045756C (en) * | 1990-06-29 | 1996-08-20 | Gregg Bouchard | Combined queue for invalidates and return data in multiprocessor system |
US5276852A (en) * | 1990-10-01 | 1994-01-04 | Digital Equipment Corporation | Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions |
US5249283A (en) * | 1990-12-24 | 1993-09-28 | Ncr Corporation | Cache coherency method and apparatus for a multiple path interconnection network |
US5303362A (en) * | 1991-03-20 | 1994-04-12 | Digital Equipment Corporation | Coupled memory multiprocessor computer system including cache coherency management protocols |
US5313609A (en) * | 1991-05-23 | 1994-05-17 | International Business Machines Corporation | Optimum write-back strategy for directory-based cache coherence protocols |
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US5398325A (en) * | 1992-05-07 | 1995-03-14 | Sun Microsystems, Inc. | Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems |
US5511224A (en) * | 1993-02-18 | 1996-04-23 | Unisys Corporation | Configurable network using dual system busses with common protocol compatible for store-through and non-store-through cache memories |
-
1995
- 1995-09-25 US US08/533,044 patent/US5778437A/en not_active Expired - Fee Related
-
1996
- 1996-07-22 JP JP19172496A patent/JP3320312B2/ja not_active Expired - Fee Related
- 1996-08-07 KR KR1019960032843A patent/KR100234503B1/ko not_active IP Right Cessation
- 1996-08-23 DE DE69616226T patent/DE69616226T2/de not_active Expired - Fee Related
- 1996-08-23 EP EP96306163A patent/EP0764905B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69616226T2 (de) | 2002-06-27 |
JP3320312B2 (ja) | 2002-09-03 |
JPH0991255A (ja) | 1997-04-04 |
DE69616226D1 (de) | 2001-11-29 |
US5778437A (en) | 1998-07-07 |
EP0764905A1 (en) | 1997-03-26 |
EP0764905B1 (en) | 2001-10-24 |
KR970016951A (ko) | 1997-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100234503B1 (ko) | 디렉토리 기반의 캐시 코히어런스 프로토콜을 사용하는 멀티프로세서에서의 무효화 버스 최적화 | |
US6810467B1 (en) | Method and apparatus for centralized snoop filtering | |
CA2062910C (en) | Optimum write-back strategy for directory-based cache coherence protocols | |
US6631448B2 (en) | Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol | |
US6615319B2 (en) | Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture | |
EP0817073B1 (en) | A multiprocessing system configured to perform efficient write operations | |
US6088770A (en) | Shared memory multiprocessor performing cache coherency | |
US5822763A (en) | Cache coherence protocol for reducing the effects of false sharing in non-bus-based shared-memory multiprocessors | |
EP0818733B1 (en) | A multiprocessing system configured to perform software initiated prefetch operations | |
EP0301354A2 (en) | Cache consistency protocol for multiprocessor system | |
JPH11506852A (ja) | 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減 | |
US20050144399A1 (en) | Multiprocessor system, and consistency control device and consistency control method in multiprocessor system | |
WO1995025306A2 (en) | Distributed shared-cache for multi-processors | |
JP2000112910A (ja) | 非一様メモリ・アクセス・コンピュ―タ・システム及びその操作方法 | |
JP2000250884A (ja) | 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム | |
US5860109A (en) | Methods and apparatus for a coherence transformer for connecting computer system coherence domains | |
KR101072174B1 (ko) | 능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법 | |
US20030009638A1 (en) | Method and apparatus for maintaining cache coherence in a computer system | |
US20040268052A1 (en) | Methods and apparatus for sending targeted probes | |
US5978886A (en) | Method and apparatus for duplicating tag systems to maintain addresses of CPU data stored in write buffers external to a cache | |
US6813694B2 (en) | Local invalidation buses for a highly scalable shared cache memory hierarchy | |
US20030093722A1 (en) | Victim invalidation | |
US10489292B2 (en) | Ownership tracking updates across multiple simultaneous operations | |
US6826655B2 (en) | Apparatus for imprecisely tracking cache line inclusivity of a higher level cache | |
US5907853A (en) | Method and apparatus for maintaining duplicate cache tags with selectable width |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20070827 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |