KR20000036144A - 다수의 시스템 버스를 가지는 컴퓨터 시스템 내의 메모리 일관성을 유지하기 위한 시스템 및 방법 - Google Patents
다수의 시스템 버스를 가지는 컴퓨터 시스템 내의 메모리 일관성을 유지하기 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR20000036144A KR20000036144A KR1019997002186A KR19997002186A KR20000036144A KR 20000036144 A KR20000036144 A KR 20000036144A KR 1019997002186 A KR1019997002186 A KR 1019997002186A KR 19997002186 A KR19997002186 A KR 19997002186A KR 20000036144 A KR20000036144 A KR 20000036144A
- Authority
- KR
- South Korea
- Prior art keywords
- bus
- coherency
- memory
- cache
- address
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 595
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000004891 communication Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 14
- 230000001427 coherent effect Effects 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 238000011010 flushing procedure Methods 0.000 claims description 2
- 230000002401 inhibitory effect Effects 0.000 claims 5
- 230000003111 delayed effect Effects 0.000 description 18
- 238000013507 mapping Methods 0.000 description 11
- 241001522296 Erithacus rubecula Species 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000254158 Lampyridae Species 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- 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/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 다중 시스템 버스(1, 2) 및 I/O 버스(30)를 공유된 주 메모리(132)에 상호연결하고, 시스템 내의 지연시간 및 대역폭에 의한 영향을 최소화하면서 캐시 일관성을 효율적으로 유지하기 위한 캐시 일관성, 다중버스, 다중처리 시스템 및 방법에 관한 것이다. 본 시스템은 캐시 메모리 일관성을 작은 양의 크로스 버스 트래픽으로 유지할 수 있도록 버스간 통신을 조정하는 일관성 필터(200)를 제공한다. 또한 본 시스템은 다중버스와 상호접속하는 다중포트화된 메모리 셀 영역을 제공한다.
Description
단일 중앙 처리 장치(central processing unit; CPU)를 가지는 컴퓨터의 성능을 개선하기 위하여, 컴퓨터 설계자들은 다수의 CPU를 가지는 컴퓨터를 개발해왔다. 종종 이러한 다중처리(multiprocessing) 컴퓨터의 CPU들은 하나의 공통 버스를 통해 서로 연결되며, 또한 시스템의 주 메모리와도 연결된다. 그러나 최근에는 CPU 성능이 버스 성능 기술보다 빠른 속도로 증가하고 있으며, 이러한 고속의 내부 CPU 성능은 보다 넓은 외부 대역폭을 요구한다. 다시 말해, 증가된 CPU 성능을 지원하기 위해서는 공통 버스 상에서 전송되는 데이터의 양을 증가시켜야 한다. 따라서 공통 버스와 연결될 수 있는 CPU의 개수는 CPU를 지원하기 위해 필요한 대역폭과 공통 버스의 전체 대역폭에 의해 제한된다.
다중처리 시스템에서 각 프로세서에 의해 요구되는 버스 대역폭을 감소시키기 위한 하나의 방법은 각 프로세서와 공통 버스 사이에 캐시 유닛(cache unit)을 두는 것이다. 프로세서의 연관된 캐시 유닛에 데이터가 로드되면, 이 프로세서는 공통 버스를 사용하지 않고서도 캐시 유닛 내의 데이터에 액세스할 수 있다. 일반적으로 프로세서가 캐시 유닛으로부터 데이터를 얻는 경우, 제한된 대역폭의 공통 버스를 통해 보다 적은 양의 데이터가 전송된다.
많은 경우에, 프로세서는 특정 데이터 값을 수회 수정하며, 따라서 데이터 값이 수정될 때마다 이 데이터 값을 주 메모리에 다시 재기록(rewrite)할 필요가 있다. 그러나 수정된 데이터 값을 주 메모리에 다시 재기록하는 것은 프로세서를 지원하기 위해 필요한 버스 대역폭의 양을 증가시킨다. 그러므로 기록 동작의 개수를 감소시킬 수 있으면, 프로세서를 지원하기 위해 필요한 버스 대역폭을 감소시킬 수 있다.
기록 동작의 개수를 감소시키는 캐시 유닛의 한 형태를 "재기록(write-back) 캐시라 한다. 재기록 캐시(write-back cache)는 수정된 데이터 값을 임시로 저장하며, 따라서 데이터 값을 주 메모리에 재기록하는데 필요한 버스 트랜잭션(bus transaction)의 수를 감소시킨다. 예를 들어, 프로세서는 주 메모리에 데이터를 재기록하지 않고서도 재기록 캐시 내의 데이터 값을 수회 수정할 수 있다. 재기록 캐시는 수정된 데이터가 결과적으로 주 메모리에 재기록되었음을 보장한다.
재기록 캐시는 다중처리 시스템에 의해 요구되는 전체 버스 대역폭을 감소시키는 데 있어서는 매우 효율적일 수 있지만, 재기록 캐시는 불행하게도 메모리 일관성 문제점을 발생시킨다. 예를 들어, 각 재기록 캐시는 데이터 값에 대한 그 자신의 복사본을 포함한다. 이러한 경우 하나 이상의 프로세서가 데이터 값을 독립적으로 수정하면, 동일한 데이터 값에 대하여 서로 다른 버전이 하나 이상의 재기록 캐시 내에 존재할 수 있다. 이것은 잘못된 동작(erroneous operation)을 발생시키며, 따라서 일부 메커니즘에서는 모든 프로세서가 항상 모든 데이터 값에 대하여 일관성(consistency)을 유지하고 있음을 확인해야 한다.
예를 들어, 프로세서가 어느 데이터 값을 수정하면, 수정된 데이터 값은 주 메모리에 재기록되기 전에 재기록 캐시에 존재한다. 이러한 예에서, 재기록 캐시가 수정된 데이터 값을 주 메모리에 재기록할 때까지, 주 메모리 및 다른 캐시 유닛은 이 데이터 값에 대한 쓸모 없는 복사본(stale copy)을 가지게 된다. 그러나 데이터 완전성(data integrity)을 유지하기 위해, 데이터 값을 요청하는 다른 프로세서는, 쓸모 없는 데이터 값이 아닌 최신 버전(up-to-date version)의 데이터 값을 얻어야 한다.
모든 프로세서가 모든 데이터 값에 대하여 일관성을 가지고 있는 지를 확인하는 절차를 캐시 일관성(cache coherency)이라 한다. 캐시 일관성을 구현하기 위한 대중적이고 성공적인 하나의 방법은 "스누핑 동작(snooping operation)"이라 불리는 동작에 의존한다. 다양한 형태의 스누핑 동작이 존재하지만, 기본적으로 캐시 유닛 내의 스누핑 동작은 공통 버스 상의 버스 트랜잭션을 모니터한다. 스누핑 동작은 어느 트랜잭션이 캐시 유닛 내의 내용에 영향을 미치는 지를 식별하거나, 어느 트랜잭션이 캐시 유닛 내에 존재하는 수정된 데이터 값과 연관되어 있는 지를 식별한다. 일반적으로 스누핑 동작은 모든 프로세서 및 프로세서에 연관된 캐시 유닛이 공통 버스를 공유할 것을 요구한다. 공통 버스를 공유함으로써 캐시 유닛은 버스 트랜잭션을 모니터할 수 있으며, 특정 캐시 유닛이 수정된 데이터 값을 가지고 있는 경우 버스 트랜잭션과 인터페이스할 가능성이 있다.
또한 캐시 일관성 방법은 일반적으로 캐시 유닛 내의 특정 데이터 값이 무효화(invalid) 상태인지, 수정되었는지, 공유되었는지, 또는 배타적으로 점유(exclusively owned)인지 등의 여부를 표시하는 일관성 상태 정보(coherency status information)를 사용한다. 다수의 캐시 일관성 방법이 존재하지만, 2개의 대중적인 방법에는 MESI 캐시 일관성 프로토콜과 MOESI 캐시 일관성 프로토콜이 있다. MESI는 수정(Modified), 배타적(Exclusive), 공유(Shared), 및 무효화(Invalid) 상태의 두문자이며, MOESI는 수정(Modified), 점유(Owned), 배타적(Exclusive), 공유(Shared), 및 무효화(Invalid) 상태의 두문자이다.
이들 상태의 의미는 각 실행마다 다르다. 광범위하게 말하면, 수정 상태는 일반적으로 특정 캐시 유닛이 수정된 특정 데이터 값을 가지고 있음을 의미한다. 배타적 상태 및 점유 상태는 일반적으로 특정 캐시 유닛 데이터 값에 대한 복사본을 수정할 수 있음을 의미한다. 공유 상태는 일반적으로 데이터 값의 복사본이 서로 다른 캐시 유닛 내에 존재할 수 있음을 의미하며, 무효 상태는 캐시 유닛 내의 데이터 값이 무효 상태임을 의미한다.
동작 시에, 캐시 유닛은 버스 동작을 스누핑하고, 일관성 상태 정보를 사용하여 캐시 일관성을 확인한다. 예를 들어, 제1 캐시 유닛을 구비하는 제1 프로세서가 특정 데이터 값을 얻기를 원한다고 가정한다. 또한 제2 캐시 유닛을 구비하는 제2 프로세서가 수정된 버전의 데이터 값을 포함하고 있다고 가정한다. 일관성 상태 정보는 제2 캐시 유닛 내의 데이터 값이 수정된 상태임을 표시한다.
이 예에서, 제1 프로세서는 데이터 값을 얻기 위해 판독 버스 요청(read bus request)을 개시한다. 제2 캐시 유닛은 이러한 판독 버스 요청을 스누핑하고, 자신이 수정된 버전의 데이터 값을 포함하고 있는 지의 여부를 결정한다. 그 후 제2 캐시 유닛이 개입하여, 공통 버스를 통해 수정된 데이터 값을 제1 프로세서로 전달한다. 시스템에 따라, 수정된 데이터 값은 이와 동시에 주 메모리에 기록될 수도 있으며, 기록되지 않을 수도 있다.
다른 예로서, 제1 프로세서가 특정 데이터 값을 배타적으로 소유하기를 원한다고 가정한다. 또한 제2 캐시 유닛이 수정되지 않았으며, 공유된 복사본의 데이터 값을 포함하고 있다고 가정한다. 일관성 상태 정보는 제2 캐시 유닛 내의 데이터 값이 공유 상태임을 표시한다. 이 예에서 제1 프로세서는 배타적 사용을 위한 데이터를 요청하는 판독 버스 요청을 개시한다.
제2 캐시 유닛은 판독 버스 요청을 스누핑하고 자신이 데이터 값의 공유된 복사본을 포함하고 있는 지를 결정한다. 그 후 제2 캐시 유닛은 데이터 값의 일관성 상태 정보를 무효 상태로 변경함으로써 공유된 데이터 값을 무효화한다. 데이터 값의 일관성 상태를 무효 상태로 변경함으로써 제2 캐시 유닛 내의 데이터 값을 무효화한다. 그 후 제1 프로세서는 판독 버스 요청을 완료하고 배타적 사용을 위해 주 메모리로부터 데이터 값의 복사본을 얻는다.
단일 공통 버스를 구비하는 다중처리 시스템에서는 스누핑 동작을 통하여 캐시 일관성을 유지하지만, 보다 강력한 컴퓨터는 다중 프로세서와 주 메모리를 상호연결하는 하나 이상의 버스를 포함한다. 즉 공통 버스가 지원할 수 있는 프로세서의 수를 늘리는 것에는 제한이 있기 때문에, 원하는 레벨의 성능을 구현하기 위해서는 다중버스 시스템이 필요할 수 있다. 그러나 이와 같은 다중버스 시스템은 하나의 버스 상의 프로세서가 다른 버스 상의 프로세서에 의해 개시된 트랜잭션을 모니터할 수 없다는 문제점이 있다. 따라서 스누핑 동작은 다중버스 컴퓨터 내에서는 메모리 일관성을 유지할 수 없다.
다중버스 시스템 내의 캐시 일관성을 유지하기 위한 하나의 방법은 각 버스 상에서 개시된 버스 트랜잭션을 모든 다른 버스로 통보(broadcasting)하는 것이다. 불행하게도, 이러한 방법은 각 버스로 전송된 모든 버스의 버스 대역폭 로드(bus bandwidth load)를 결합시키는 결과를 가져온다. 예상할 수 있듯이, 이것은 시스템 성능을 상당히 감소시키며, 다중버스의 이점을 감소시킨다.
다중버스 시스템 내의 캐시 일관성을 유지하기 위한 다른 방법은 소위 디렉토리-기초(directory-based) 캐시 일관성 방법이라고 불리는 방법이다. IEEE 기준화 일관성 상호접속(Scaleable Coherent Interconnect; SCI)은 다중버스, 디렉토리-기초 캐시 일관성 시스템의 일례이다. 디렉토리 방식에서, 프로세서는 버스 트랜잭션을 스누핑하지 않는다. 대신, 주 메모리 서브시스템은 실제 데이터를 가지는 추가 정보를 저장함으로써 메모리 일관성을 유지한다.
주 메모리 서브시스템 내의 추가 정보는 일반적으로 1) 어느 프로세서 또는 프로세서들이 데이터 값에 대한 복사본을 얻었는 지에 대한 정보 및 2) 데이터 값에 대한 일관성 상태를 표시한다. 예를 들어 추가 정보는 하나 이상의 프로세서가 동일한 데이터 값을 공유하고 있음을 표시할 수 있다. 또 다른 예로, 추가 정보는 단지 하나의 프로세서만이 특정 데이터 값을 수정할 권리가 있음을 표시할 수 있다.
프로세서가 데이터 값을 요청하면, 주 메모리 서브시스템은 이 프로세서가 최신 버전의 데이터 값을 가지고 있는 지를 결정한다. 이 프로세서가 최신 버전의 데이터 값을 가지고 있지 않다면, 주 메모리 서브시스템은 최신 데이터 값을 가지는 프로세서로부터 데이터 값을 요청한 프로세서(이를 요청 프로세서(requesting processor)라 함)로 최신 데이터 값을 전송한다. 다른 예로서, 주 메모리가 다른 프로세서 중 어느 프로세서가 최신 값을 가지고 있는 지를 요청 프로세서에 표시할 수 있다.
주 메모리 서브시스템이 각 데이터 값에 대한 최신 버전이 어디에 위치하고 있는 가에 대한 정보를 보존하고 있기 때문에, 프로세서는 버스 트랜잭션을 "스누핑"할 필요가 없다. 그러나 이러한 디렉토리를 보존하는 것은 시스템에 대한 비용을 상당히 증가시키는데, 이는 각 데이터 값에 대하여 주 메모리 내에서 유지해야 하는 추가 정보 때문이다. 또한 각 데이터 값에 대한 디렉토리를 주 메모리 내에서 유지하는 것은 요청된 데이터를 요청 프로세서에 위치시키거나 전송시키는 데 필요한 시간 때문에 시스템 성능을 열화시킨다.
디렉토리-기초 시스템의 대안으로서, 실제적으로 캐시 유닛 내에 실제 저장된 데이터 값과 연관된 일관성 상태 정보를 저장하는 버스 상호접속(bus interconnect)을 들 수 있다. 이에 따라, (디렉토리-기초 방식에서와 같이) 주 메모리가 증가함에 따라 저장이 이에 비례하여 증가하는 것 대신에, 주 메모리보다 훨씬 작은 크기의 결합 캐시 유닛과 연관되어 있다. 그러나 이러한 방법은 다중버스 시스템이 각 캐시 유닛 내의 모든 데이터 값과 연관된 일관성 상태 정보의 이중화 복사본(duplicate copy)을 저장하기를 요구한다.
예를 들어, Sun Microsystem사의 UltraSpare 시스템은 버스 스위치를 사용하여 다중버스를 상호연결하며, 여기서 각 버스는 내부 캐시 유닛을 구비하는 프로세서와 통신한다. 버스 스위치는 캐시 유닛 내의 모든 데이터 값과 연관된 일관성 상태 정보의 이중화 복사본을 유지한다. UltraSpare 시스템에서, 버스 스위치는 일관성 상태 정보의 이중화 복사본을 유지할 수 있는데, 이는 UltraSpare 시스템 의 프로세서가 외부 캐시 태그(tag)를 유지하면서 어느 데이터 값이 대체되는 지에 대한 정확한 정보를 제공하도록 구성되어 있기 때문이다.
그러나 이러한 버스 스위치는 정확한 캐시 데이터 대체 정보를 출력하지 못하기 때문에, 다수의 오프 더 셀프(off-the-shelf) 프로세서에 있어서 실용적이지 못하다. 예를 들어, 다수의 종래 프로세서는 그들의 내부 캐시 유닛 내에서만 정확한 일관성 상태 정보를 유지할 수 있다. 그리하여, 다른 장치는 언제 데이터 값이 내부 캐시 유닛으로부터 제거(remove)되는 지를 결정할 수 없다. 내부 캐시 유닛 내의 일관성 상태 정보에 대한 정확한 정보가 없으면, 버스 스위치는 일관성 상태 정보의 이중화 복사본을 유지할 수 없다.
본 발명은 다수의 시스템 버스를 가지는 컴퓨터 시스템 내의 메모리 일관성(memory coherency)을 유지하는 시스템 및 방법에 관한 것이며, 구체적으로 말하면 다중 시스템 버스 및 I/O 버스를 공유된 주 메모리에 상호연결하고, 시스템 내의 지연시간 및 대역폭에 의한 영향을 최소화하면서 캐시 일관성을 효율적으로 유지하기 위한 캐시 일관성, 다중버스, 다중처리 시스템 및 방법에 관한 것이다.
본 발명의 이들 및 다른 특징, 이점 및 신규한 특징은 다음의 도면을 참조하여 다음의 상세한 설명을 읽는다면 명확해질 것이다.
도 1은 본 발명의 실시예에 따른 다중처리, 다중버스 시스템의 블록도이며,
도 2는 본 발명의 실시예에 따른 시스템 액세스 제어장치(system access controller)의 블록도이며,
도 3은 본 발명의 실시예에 따른 일관성 필터(coherency filter) 및 태그 메모리(tag memory)의 블록도이며,
도 4는 본 발명의 실시예에 따른 캐시 라인 어드레스 및 태그 메모리의 블록도이며,
도 5a 및 도 5b는 본 발명의 실시예에 따른 버퍼 관리자(buffer manager)의 블록도이며,
도 6은 중앙 요청 리스트(central request list)의 블록도이며,
도 7은 데이터 인터페이스 버퍼(data interface buffer)의 블록도이며,
도 8은 본 발명의 실시예에 따른 버스 판독 커맨드(Bus Read command) 동안에 메모리 일관성을 유지하기 위한 방법을 나타내는 순서도이며,
도 9는 본 발명의 실시예에 따른 버스 무효화 커맨드(Bus Invalidate command) 동안에 메모리 일관성을 유지하는 방법을 나타내는 순서도이며,
도 10은 본 발명의 다른 실시예에 따른 무효화 큐(invalidation queue)의 블록도이다.
도면에서, 세자리 수의 첫 번째 숫자는 구성요소가 처음으로 도시되는 도면의 번호를 표시한다. 예를 들어, 도면부호 402를 가지는 구성요소는 도 4에 처음 도시된다. 또한 구성요소간의 일치성을 표시하기 위해 도면 전체에 걸쳐 동일한 도면부호가 동일한 구성요소를 가리키도록 한다.
본 발명은 단일 버스 시스템의 전체 프로세서 성능 제한을 효과적으로 증가시키는 캐시-일관성 다중버스 시스템을 제공한다. 본 발명은 다중버스, 다중처리 시스템이 1) 다수의 시스템 버스 및 다수의 I/O 장치와 상호접속하여 주 메모리와 공유하는 시스템, 및 2) 시스템 내의 지연시간 및 전체 대역폭에 대한 영향을 최소화하면서 캐시 일관성을 효율적으로 유지하는 시스템과 같은 지연시간이 짧으며(low latency), 고대역의 시스템이 필요로 함을 인식한다. 본 발명은 이들 문제점을 "일관성 필터"를 사용하여 버스간 통신을 조정하여, 크로스 버스 트래픽의 오버헤드(overhead)를 감소시키면서 캐시 메모리 일관성을 유지한다.
본 발명의 실시예에서, 시스템 버스, I/O 버스 및 메모리 유닛은 다중포트화된 버스 스위치를 통해 연결된다. 버스 스위치는 임의의 시스템 버스 또는 I/O 버스를 임의의 메모리 유닛과 연결시킬 뿐만이 아니라 크로스 버스 트래픽을 다룬다. 또한 본 발명의 실시예에 의한 버스 스위치는 버스 트랜잭션에 응답하기 위해 필요한 동작을 결정하는 버스 인터페이스 로직(logic)을 포함한다. 그러나 본 발명이 이러한 다중포트화 버스 스위치에 제한되는 것은 아니며, 서로 다른 데이터 경로에 대하여 개별적인 버스 브리지가 존재하는 경우와 같은 다양한 형태의 다른 버스 상호접속에 적용될 수 있다.
다중버스, 다중처리 시스템 내의 캐시 일관성을 보장하기 위해, 캐시를 지원하는 각 버스는 할당된 일관성 필터를 구비한다. 각 일관성 필터는 태그 제어장치, 사이클 인코더(cycle encoder) 및 규칙표(rules table)를 포함한다. 또한 각 일관성 필터는 태그 메모리와 연결된다. 일반적으로 말해, 각 태그 제어장치는 모든 태그 메모리와 인터페이스한다. 각 사이클 인코더는 사이클 인코더의 할당된 버스 상에서 발생하는 버스 트랜잭션의 종류를 결정하고, 각 규칙표는 캐시 일관성을 유지하기 위해 필요한 버스 트랜잭션을 결정한다.
태그 메모리에 초점을 맞춰 설명하면, 각 태그 메모리는 1) 태그 메모리의 할당된 버스에 연결된 캐시 유닛에 위치하는 데이터 값의 어드레스 및 2) 데이터 값과 연관된 캐시 일관성 상태에 대한 레코드를 유지한다. 공지되어 있는 바와 같이, 주 메모리 내의 각 데이터 값은 해당 메모리 어드레스에 의해 식별된다. 본 발명의 실시예에서, 태그 메모리는 실제 데이터 값이 아니라, 데이터 값을 식별하는 데이터 값 어드레스를 저장한다. 본 발명의 실시예에 의한 태그 메모리는 데이터 값 어드레스 저장하는 것 이외에도, 데이터 값 어드레스와 연관된 일관성 상태 정보를 저장한다.
예를 들어, 제1 일관성 필터 및 제1 태그 메모리가 제1 버스에 할당되어 있다고 가정한다. 또한 제1 버스 상의 제1 프로세서가 주 메모리로부터 데이터 값을 요구한다고 가정한다. 제1 일관성 필터는 제1 태그 메모리 내의 메모리 어드레스의 레코드를 유지하며, 또한 제1 태그 메모리 내의 메모리 어드레스와 연관된 일관성 상태 정보를 저장한다.
메모리 트랜잭션 내에서 액세스된 데이터의 양은 시스템마다 다르다. 종래의 시스템에서, 프로세서가 메모리 판독 트랜잭션을 수행하면, 프로세서는 내부 캐시 메모리의 일부를 채우기 위해 메모리를 충분히 액세스한다. 일반적으로 내부 캐시 메모리는 다중 데이터 값을 캐시 라인에 저장한다.
공지되어 있는 바와 같이, 종래 컴퓨터 처리 시스템은 8 비트(바이트) 수량, 16 비트(워드) 수량, 32 비트(더블 워드) 수량으로 분할된다. 현재의 다수의 32 비트 프로세서에 있어서, 주 메모리는 더블 워드(32 비트) 경계(boundary)로 구성된다. 대부분의 32 비트 프로세서에 있어서, 각 캐시 라인은 다수의 더블 워드를 유지할 수 있다.
일반적으로, 프로세서가 일정한 데이터 값을 요구하면, 프로세서는 전체 캐시 라인을 채우기에 충분한 데이터를 구한다. 예를 들어, Pentium Pro 프로세서에 있어서, 각 내부 데이터 값의 크기는 다양하지만, 64 비트보다는 크지 않다. 그러나 Pentium Pro의 캐시 라인은 32 바이트의 데이터(256 비트)를 유지한다. Pentium Pro 프로세서가 주 메모리로부터 데이터 값을 구하면, 일반적으로 하나의 캐시 라인을 채우는데 필요한 8 데이터 값(256 비트)을 구한다.
종래의 시스템에 있어서, 각 캐시 라인은 캐시 라인 어드레스에 의해 식별된다. 예를 들어, Pentium Pro 시스템에서, 캐시 라인은 캐시 라인 내의 하위 데이터 값의 메모리 어드레스와 동일한 캐시 라인 어드레스를 가진다. 그러나 각 캐시 라인이 32 바이트의 데이터를 포함하기 때문에, 각 캐시 라인의 캐시 라인 어드레스는 길이가 더 짧으며, 5개의 하위 어드레스 비트를 포함하지 않는다. 본 발명의 실시예에서, 특정 버스에 할당된 각 태그 메모리는 캐시 라인 어드레스를 저장한다.
각 태그 메모리는 캐시 라인 어드레스를 저장하는 것 이외에도, 캐시 라인 어드레스와 연관된 일관성 상태를 저장한다. 일관성 상태는 캐시 유닛 내의 캐시 라인의 상태와 연관되어 있다. 본 발명의 실시예에서, 일관성 상태는 3개의 서로 다른 일관성 상태―무효 상태, 공유 상태 또는 점유 상태―를 포함한다.
무효 상태는 캐시 라인이 무효 상태이며, 캐시 라인을 저장하는 캐시 엔트리가 비어 있으며 새로운 캐시 라인을 저장할 수 있음을 의미한다. 공유된 상태는 프로세서가 캐시 라인의 복사본을 가지고 있으며, 수정 권한을 가지고 있지 않음을 의미한다. 예를 들어, 공유된 캐시 라인은 종종 수정되지 않은 프로그램 인스트럭션이거나, 가장 최근에 판독된 데이터 항목이다.
그러나 당업자는 캐시 라인의 일관성 상태가 무효, 공유 및 점유 프로토콜로 제한되지 않는다는 것을 이해하게 될 것이다. 사실 당업자는 일관성 상태가 수정, 배타적, 공유, 및 무효(MESI) 프로토콜, 수정, 점유, 배타적, 공유 및 무효(MOESI) 프로토콜, 수정, 공유, 및 무효(MSI) 프로토콜, 무효 및 점유의 2상태 프로토콜, 버클리 프로토콜, the University of Illinois 일관성 프로토콜, Digital Equipment의 Firefly 프로토콜, Xerox Dragon 프로토콜 등과 같은 다양한 범위의 일관성 프로토콜을 사용하여 구현될 수 있다. 본 발명의 실시예에서는 무효, 공유 및 점유 상태를 사용하며, 이는 이들 상태가 MESI 프로토콜을 사용하는 Pentium Pro 프로세서와 효율적으로 인터페이스할 수 있기 때문이다.
다수의 종래의 프로세서에 있어서, 프로세서는 내부 캐시 유닛 내에 저장된 캐시 라인에 대하여 정확한 일관성 상태 정보를 출력하지 않는 내부 캐시 유닛을 구비한다. 예를 들어, 내부 캐시 유닛은 캐시 라인이 폐기되었음을 신호하지 않고, 수정되지 않은 캐시 라인을 폐기할 수 있다. 다른 예에서, 내부 캐시 유닛은 캐시 유닛이 수정하지 않는 수정 특권(modification privilege)을 가지는 캐시 라인을 구할 수 있다. 이 예에서, 캐시 유닛은 캐시 라인이 폐기되었음을 신호하지 않고, 캐시 라인을 폐기할 수 있다. 따라서 캐시 유닛을 모니터하는 장치는 캐시 라인이 사실상 폐기된 캐시 라인을 가지는 경우 캐시 유닛이 캐시 라인의 수정된 복사본을 가진다는 사실을 믿을 수 있다. 그러나 본 발명의 실시예에서, 각 태그 메모리는 독창적으로 현재의 일관성 상태 정보를 출력하지 않는 내부 캐시 유닛에 대한 캐시 일관성을 보장하기에 적합하다.
본 발명의 중요한 특징은 각 태그 메모리가 현재 내부 캐시 유닛 내에 유지될 가능성이 있는 캐시 라인 어드레스의 슈퍼세트를 유지함으로써 캐시 일관성을 보장한다는 것이다. 따라서 태그 메모리 내의 캐시 라인 어드레스의 슈퍼세트는 캐시 유닛이 사실상 폐기된 캐시 라인을 가지고 있는 경우, 캐시 유닛 내의 특정 캐시 라인이 공유 상태임을 표시할 수 있다. 다른 경우, 태그 메모리 내의 캐시 라인 어드레스의 슈퍼세트는 캐시 유닛이 사실상 캐시 라인을 주 메모리에 재기록하는 경우 캐시 유닛 내의 특정 캐시 라인이 수정 상태임을 표시할 수 있다.
캐시 라인 어드레스의 슈퍼세트를 유지하기 위해, 본 발명의 실시예에 의한 일관성 필터는 포함 규칙(inclusion rule)이라 불리는 규칙을 사용한다. 포함 규칙은 특정 버스와 연결된 캐시 유닛 내에 저장된 캐시 라인 어드레스가 항상 버스에 할당된 태그 메모리 내의 캐시 라인 어드레스의 서브세트임을 보장한다. 각 일관성 필터가 연관된 버스에 의해 액세스된 모든 캐시 라인을 모니터하기 때문에, 각 액세스된 캐시 라인과 연관된 어드레스는 버스에 할당된 태그 메모리 내에서 유지된다. 캐시 라인 어드레스가 태그 메모리 중의 하나로부터 삭제되면, 포함 규칙은 연관된 캐시 유닛에게 그들의 캐시 메모리 내의 캐시 라인을 삭제하도록 지시한다.
예를 들어, 태그 메모리가 새로운 캐시 라인 어드레스를 유지하기 위한 메모리 용량을 가지고 있지 않으면, 태그 메모리에 존재하는 하나의 캐시 라인 어드레스(구 캐시 라인 어드레스)를 배출시킴으로써 새로운 캐시 라인 어드레스를 위한 공간을 태그 메모리 내에 형성해야 한다. 구 캐시 라인 어드레스가 무효 상태이면, 버스와 연결된 캐시 유닛은 더 이상 구 캐시 어드레스와 연관된 캐시 라인을 사용하지 않으며, 태그 메모리에 할당된 일관성 필터는 단순히 구 캐시 라인 어드레스를 새로운 캐시 라인 어드레스로 교체한다.
그러나 구 캐시 라인 어드레스가 공유 또는 점유 상태이면, 캐시 유닛이 구 캐시 라인 어드레스를 무효화할 때까지, 일관성 필터는 태그 메모리로부터 구 캐시 라인 어드레스를 배출할 수 없다. 전술한 바와 같이, 본 발명의 실시예에 의한 태그 메모리는 캐시 라인 어드레스의 슈퍼세트를 유지해야 하며, 따라서 구 캐시 라인 어드레스를 새로운 캐시 라인 어드레스로 교체하기 전에 캐시 유닛 내의 구 캐시 라인 어드레스가 먼저 무효화되어야 한다.
일관성 필터는 무효화 버스 트랜잭션을 수행함으로써 캐시 유닛 내의 구 캐시 라인 어드레스를 먼저 무효화시킨다. 무효화 버스 트랜잭션은 버스와 연결된 캐시 유닛에게 구 캐시 라인 어드레스 및 할당된 캐시 라인을 내부적으로 무효화하도록 지시한다.
예를 들어, 제1 캐시 유닛을 구비하는 제1 프로세서 및 제2 캐시 유닛을 구비하는 제2 프로세서가 할당된 일관성 필터 및 태그 메모리를 가지는 제1 버스와 연결되어 있다고 가정한다. 또한 제1 캐시 유닛이 공유 상태의 제1 캐시 라인을 포함한다고 가정한다. 이 실시예에서, 태그 메모리는 제1 캐시 라인 어드레스 및 공유된 상태의 정보를 포함한다. 또한 제2 프로세서가 제2 캐시 라인을 요구하는 판독 버스 트랜잭션을 개시한다고 가정한다. 최종적으로 태그 메모리가 제2 캐시 라인 어드레스에 대한 메모리 용량을 가지고 있지 않다고 가정한다.
이 실시예에서, 일관성 필터는 제2 캐시 라인 어드레스에 대한 공간을 형성하기 위해 제1 캐시 라인 어드레스를 배출시켜야 한다. 그러나 일관성 필터가 제1 캐시 라인 어드레스를 배출하기 전에, 일관성 필터는 제1 캐시 유닛 내의 제1 캐시 라인 어드레스를 개시하는 버스 트랜잭션을 수행해야 한다. 제1 캐시 라인 어드레스를 무효화하기 위해, 일관성 필터는 무효화 버스 트랜잭션을 수행하는데, 여기서 무효화 버스 트랜잭션은 제1 캐시 유닛에게 제1 캐시 라인 어드레스와 연관된 캐시 라인을 무효화하도록 지시한다.
무효화 버스 트랜잭션을 수행하는 동안, 일관성 필터는 제2 캐시 라인 어드레스에 대한 판독 버스 트랜잭션을 연기한다. 제1 캐시 라인 어드레스(제1 캐시 라인은 수정되지 않음)가 공유 상태이기 때문에, 제1 캐시 유닛은 무효화 버스 트랜잭션에 응답하고 제1 캐시 라인을 무효화한다. 무효화 버스 트랜잭션이 완료된 후에, 일관성 필터는 태그 메모리 내의 제1 캐시 라인 어드레스를 제2 캐시 라인 어드레스로 대체한다.
때때로, 제1 캐시 유닛은 수정된 제1 캐시 라인(다시 말해, 제1 캐시 라인은 점유 상태임)이다. 제1 캐시 라인이 점유 상태이면, 제1 일관성 필터는 제1 캐시 라인을 무효화하는 무효 버스 트랜잭션을 다시 수행한다. 그러나 제1 캐시 유닛이 제1 캐시 유닛을 수정하면, 제1 캐시 유닛은 수정된 제1 캐시 라인을 주 메모리로 재기록하는 기록 버스 트랜잭션을 수행함으로써 무효화 버스 트랜잭션에 응답한다.
수정된 제1 캐시 라인을 주 메모리에 기록한 후에, 제1 캐시 유닛은 제1 캐시 라인을 무효화한다. 그후 일관성 필터는 태그 메모리 내의 제1 캐시 라인 어드레스를 제2 캐시 라인 어드레스로 대체한다. 그리하여 때로는 태그 메모리 내의 캐시 라인 어드레스의 슈퍼세트를 유지하는 것은 캐시 유닛에게 태그 메모리 내의 캐시 라인을 무효화하기 전에, 수정된 데이터를 주 메모리에 재기록할 것을 요구한다.
본 발명의 실시예에서, 일관성 필터는 직접 매핑 기술(direct mapping techniques)을 사용하여 태그 메모리 내에 캐시 라인 어드레스를 저장한다. 직접 매핑 기술은 각 캐시 라인 어드레스가 태그 메모리 내의 하나의 특정 태그 엔트리에 매핑하도록 지정한다. 본 발명의 실시예에서는 직접 매핑 기술을 사용하지만, 당업자는 다수의 다른 기술을 사용하여 태그 메모리 내의 캐시 라인 어드레스를 구성할 수 있다는 것을 이해하게 될 것이다. 완전한 어소시어티브 시스템에서는, 임의의 태그 엔트리 내에 임의의 캐시 라인 어드레스가 존재할 수 있다. 다른 실시예에서 각 캐시 라인 어드레스는 2개의 서로 다른 태그 엔트리(2중 세트 어소시어티브) 중에서 단지 하나의 태그 엔트리에만 저장되거나 4개의 서로 다른 태그 엔트리(4중 세트 어소시어티브) 중에서 단지 하나의 태그 엔트리에 저장될 수 있다.
본 발명의 실시예의 직접 매핑 기술에 초점을 맞춰, 각 캐시 라인 어드레스는 특정 태그 엔트리를 식별하는 인덱스로서 사용된다. 본 발명의 실시예에서, 태그 메모리 내의 엔트리의 개수는 태그 페이지의 크기를 결정한다. 바람직하게 각 시스템에 연결된 태그 메모리는 동일한 태그 페이지 크기를 가진다. 태그 페이지 크기는 프로세서의 캐시 내의 전체 캐시 메모리의 양과 연관되어 있다. 또한 이들 장치에 비해 I/O 버스와 연결된 태그 메모리는 그 크기가 작으며, 이는 일반적으로 I/O 브리지와 연결된 작은 크기의 캐시 유닛 때문이다.
태그 페이지는 주 메모리의 페이지와 구분되어서는 안된다. 공지되어 있는 바와 같이, 컴퓨터의 물리적 메모리 어드레스 공간은 개념적으로 메모리 페이지라 불리는 다중 섹션으로 구성될 수 있으며, 각 메모리 페이지는 다중 캐시 라인을 포함한다. 메모리 페이지는 처리 시스템에 의해 구성되며, 태그 페이지와 독립적이다.
본 발명의 실시예에서, 캐시 라인 어드레스는 1)캐시 라인 어드레스를 포함하는 태그 페이지 2) 태그 페이지 내의 캐시 라인 어드레스의 위치를 식별한다. 특히 캐시 라인 어드레스 내의 상위 비트가 태그 페이지를 식별하고, 하위 비트는 태그 페이지 내의 캐시 라인 어드레스의 위치를 식별한다.
일반적으로 하위 비트는 태그 페이지 내의 캐시 라인 어드레스의 위치를 식별하기 때문에, 인덱스(index)라 불린다. 예를 들어, 제1 태그 페이지 내의 제1 캐시 라인 어드레스에 있어서, 상위 어드레스 비트는 제1 태그 페이지를 식별하고, 하위 어드레스 비트는 제1 태그 페이지 내의 캐시 어드레스 라인의 위치를 식별한다.
본 발명의 실시예에서, 일관성 필터 내의 태그 제어장치는 캐시 라인 어드레스를 태그 메모리로 직접 매핑한다. 예를 들어, 제1 버스와 연결된 프로세서가 특정 캐시 라인 어드레스를 요청하는 버스 트랜잭션을 개시하면, 제1 태그 제어장치는 캐시 라인 어드레스를 평가한다. 제1 태그 제어장치는 하위 어드레스 비트를 인덱스로 사용하여, 제1 태그 메모리 내의 특정 태그 엔트리를 식별한다. 그후 제1 태그 제어장치는 상위 비트(태그 페이지)를 식별된 태그 엔트리에 저장한다.
본 발명의 실시예에서, 태그 메모리는 정적(static) 메모리로서 구현된다. 정적 메모리는 버스 트랜잭션 동안에 각 태그 제어장치가 각 태그 메모리를 신속하게 액세스하는 것을 허용한다. 본 발명이 정적 메모리에서 구현되지만, 당업자는 서로 형태의 저장 메커니즘을 사용하여 태그 메모리를 구현할 수 있다는 것을 인식하게 될 것이다. 바람직하게 서로 다른 형태의 저장 메커니즘은 버스 클록 속도와 비례하는 메모리 액세스 속도를 제공하여, 성능을 최적화시킨다.
2개의 캐시 라인 어드레스가 동일한 태그 엔트리로 매핑되면, 태그 제어장치는 이전의 캐시 라인 어드레스를 배출시켜, 새로운 캐시 라인 어드레스를 위한 공간을 형성한다. 전술한 바와 같이, 이러한 프로세스는 구 캐시 라인 어드레스가 무효화될 때까지 새로운 캐시 라인 어드레스와 연관된 버스 트랜잭션을 연기시킬 수 있다. 또한 구 캐시 라인 어드레스를 무효화하는 것은 태그 메모리가 캐시 유닛 내에 존재하는 캐시 라인 어드레스의 슈퍼세트를 유지한다는 것을 보장하기 위한 추가 버스 트랜잭션을 요구할 수 있다.
본 발명의 실시예에서, 각 일관성 필터는 새로운 캐시 라인 어드레스와 연관된 버스 트랜잭션을 연기하지 않고 구 캐시 라인 어드레스와 새로운 캐시 라인 어드레스를 유지하는 무효화 큐를 추가로 포함한다. 이것은 시스템 성능을 증가시키며, 이는 이후에 구 캐시 라인을 무효화하는 무효화 버스 트랜잭션이 발생할 수 있기 때문이다.
다중버스 내의 캐시 일관성을 유지하기 위한 방법에 초점을 맞춰 설명하면, 본 발명의 실시예에 의한 일관성 필터는 할당된 버스 상에서 버스 트랜잭션을 모니터함으로써 언제 크로스 버스 트랜잭션이 요구되는 지를 결정한다. 특히 각 일관성 필터 내의 사이클 인코더는 일관성 필터의 할당된 버스 상에서 발생하는 각 버스 트랜잭션을 모니터한다. 본 발명의 실시예에서, 사이클 인코더는 버스 제어 라인을 모니터하는 공지된 버스 모니터링 로직을 사용한다. 그후 사이클 인코더는 1) 버스 트랜잭션의 형태 및 2) 버스 트랜잭션과 연관된 태그 메모리 내의 캐시 상태 정보를 일관성 규칙표로 전송한다.
규칙표에 초점을 맞춰 설명하면, 규칙표는 캐시 일관성 보장하기 위해 크로스 버스 트랜잭션을 수행해야 하는 시간을 결정한다. 본 발명의 실시예에서, 규칙표는 태그 메모리 내의 일관성 상태 정보에 부분적으로 기초하여 크로스 버스 트랜잭션을 수행해야 하는 지의 여부를 결정한다. 예를 들어, 제1 버스 상의 버스 판독 트랜잭션이 특정 캐시 라인 어드레스를 식별하면, 제1 버스에 할당된 규칙표는 다른 버스에 할당된 태그 메모리(리모트 태그 메모리) 내의 캐시 라인 어드레스의 일관성 상태를 평가한다.
리모트 태그 메모리로부터의 일관성 상태를 사용하여, 규칙표는 캐시 일관성을 보장하기 위해 리모트 버스 트랜잭션이 필요한 지의 여부를 결정한다. 아래에서 더 상세하게 기술되어 있듯이, 특정 일관성 필터에서, 태그 제어장치는 리모트 태그 메모리를 액세스하고, 캐시 상태를 규칙표에 입력한다. 또한 사이클 인코더는 버스 트랜잭션의 형태를 결정하고, 버스 트랜잭션 정보를 규칙표에 입력한다.
본 발명의 실시예에서, 규칙표는 큰 진리표의 기능을 수행한다. 버스 트랜잭션 정보 및 리모트 태그 메모리 정보를 사용하여, 규칙표는 캐시 일관성을 유지하기 위해 필요한 크로스 버스 트랜잭션 또는 버스 트랜잭션의 세트를 결정한다.
예를 들어, 프로세서가 제1 버스 상에서 판독 버스 트랜잭션을 시작한다고 가정한다. 이 예에서, 버스 트랜잭션을 시작하는 제1 버스를 로컬 버스라 하며, 다중버스 시스템 내의 다른 버스를 리모트 버스라 한다. 판독 버스 트랜잭션은 원하는 캐시 라인 어드레스를 로컬 버스에 할당된 일관성 필터(로컬 일관성 필터)로 전송한다. 그후 로컬 일관성 필터는 캐시 라인 어드레스가 리모트 버스에 할당된 태그 메모리(리모트 태그 메모리) 내에 존재하는 지의 여부를 평가한다.
이 예에서의 리모트 태그 메모리는 원하는 캐시 라인 어드레스의 일관성 상태가 무효 상태임을 표시한다. 이러한 경우 캐시 일관성을 유지하기 위해 크로스 버스 트랜잭션을 수행할 필요가 없으며, 이는 리모트 버스 내의 캐시 라인 어드레스가 무효 상태이기 때문에 가능하다. 그러므로 로컬 일관성 규칙표는 리모트 버스 상에서 트랜잭션을 발생시키지 않으며, 버스 트랜잭션을 로컬 버스 및 주 메모리로 제한한다. 버스 트랜잭션을 로컬 버스로 제한하는 것은 크로스 버스 트래픽을 감소시킨다.
그러나 리모트 태그 메모리는 크로스 버스 트랜잭션이 필요함을 표시하며, 규칙표는 캐시 일관성을 보장하기 위해 필요한 적당한 크로스 버스 트랜잭션 또는 트랜잭션 세트를 결정한다. 예를 들어, 리모트 태그 메모리 중의 하나는 캐시 라인 어드레스가 점유 상태임을 표시할 수 있으며, 따라서 리모트 버스와 연결된 캐시 유닛은 캐시 라인의 수정된 버전을 소유할 가능성이 있다. 리모트 태그 메모리가 캐시 라인 어드레스가 점유 상태임을 표시하면, 로컬 진리표는 캐시 일관성을 보장하기 위해 리모트 버스와 연결된 버스 마스터 로직이 리모트 버스 상에서 버스 판독 커맨드를 수행할 필요가 있음을 표시한다.
버스 판독 커맨드가 리모트 상에서 실행되면, 리모트 캐시 유닛이 버스 판독 커맨드를 스누핑하고, 이들이 원하는 캐시 라인의 수정된 버전을 가지고 있는 지의 여부를 결정한다. 리모트 버스 상의 리모트 캐시 유닛 중의 하나가 캐시 라인의 수정된 버전을 되돌리면, 규칙표는 캐시 라인을 로컬 버스 상의 요청 프로세서로 전송한다.
그러나 리모트 버스 상의 캐시 라인 중의 어느 하나라도 수정된 캐시 라인을 수정하지 않으면, 캐시 유닛은 버스 판독 커맨드에 응답하지 않는다. 그후 규칙표는 최신 캐시 라인이 주 메모리 내에 존재하는 지의 여부를 결정한다. 따라서 본 발명의 실시예에서는 캐시 일관성을 유지하기 위해 크로스 버스 트랜잭션이 필요한 경우에는 태그 메모리 내의 캐시 라인 어드레스의 슈퍼세트를 사용한다.
본 발명의 다른 특징은 입/출력 장치와 인터페이스하기 위한 전용 제3 버스를 사용한다는 것이다. 본 발명의 실시예에 의한 I/O 버스는 다른 프로세서 버스와 동일한 형태를 가진다. 그러나 당업자는 I/O 버스 및 각 다른 프로세서 버스가 서로 다른 버스 프로토콜을 사용할 수 있다는 것을 이해하게 될 것이다.
본 발명의 실시예에 의한 I/O 버스는 다른 프로세서와 유사한 방식으로 동작한다. 대부분의 고성능 컴퓨터의 I/O 버스는 직접 메모리 액세스(direct memory access; DMA) 전송을 수행한다. DMA 전송은 일반적으로 I/O 장치에 의해 시작되며, I/O 장치는 중앙 프로세서와는 직접 연관되지 않으며 주 메모리와 I/O 장치 사이에서 데이터를 직접 이동시킨다. I/O 버스 상에서 발생하는 I/O 트랜잭션에 대하여 메모리 일관성을 유지하는 것은 각 DMA 전송이 이루어지기 전 및 후에 캐시 유닛 내의 캐시 라인의 플러싱(flushing)을 방지한다.
다른 형태의 I/O 전송은 프로세서에 의한 I/O 데이터의 직접 프로그래밍 액세스와 관련되어 있다. 본 발명의 실시예에서, 버스 스위치는 직접 I/O 전송을 I/O 버스로 전송하고, 메모리-매핑된 I/O 전송으로서 주 메모리 어드레스 공간에 대한 액세스 이외의 모든 메모리 액세스를 I/O 버스로 전송한다. 아래에서 보다 상세하게 기술하고 있듯이, 이러한 I/O 전송은 캐시 일관성과 관련되어 있지 않지만, 독창적인 방법을 사용하여 하나의 버스로부터 다른 버스로 전송된다.
본 발명의 실시예에 의한 I/O 버스는 I/O 일관성 필터 및 I/O 버스 인터페이스를 포함하며, 이는 다중 시스템 버스 양단의 I/O 매핑을 개선시키며, I/O 데이터 처리를 개선시키며, 시스템 버스의 구조를 간단하게 한다. 버스 상에서 발생하는 I/O 데이터 트랜잭션은 I/O 버스로 자동적으로 전송된다. 또한 I/O 버스 상에서 시작되는 트랜잭션은 목적지 버스로 전송되며 버스 트랜잭션을 다른 버스로 전송하지 않는다.
본 발명의 다른 특징은 다중버스간의 통신을 최적화하는 것이다. 예를 들어, 종래의 버스 스위치는 서로 다른 버스를 독립적인 접속 경로와 상호접속시킨다. 그리하여 종래의 다중버스 시스템에서, 제1 버스 및 제2 버스는 항상 독립적인 제1 접속 경로와 상호접속되어 있으며, 제1 버스 및 제3 버스는 독립적인 제2 접속 경로와 상호접속되어 있으며, 제2 버스 및 제3 버스는 독립적인 제3 접속 경로와 상호접속되어 있다. 예상되는 바와 같이, 이러한 독립적인 접속 경로는 버스 스위치 구현을 더 복잡하게 한다.
예를 들어, 제1 버스가 제1 버스 트랜잭션이 제2 버스를 향하는 것을 원한다면, 제1 버스는 제1 버스 트랜잭션을 제1 큐 내에 위치시켜, 제1 버스를 제2 버스와 링크한다. 이와 유사하게, 제2 버스가 제2 버스 트랜잭션이 제1 버스를 향하는 것을 원한다면, 제2 버스는 제2 버스 트랜잭션을 제2 큐 내에 위치시켜, 제2 버스를 제1 버스와 링크한다. 그후 제1 버스는 제2 큐의 출력으로부터 제2 버스 트랜잭션을 구한다.
따라서 2개의 버스는 2개의 큐를 요구한다. 추가 버스가 상호접속되면, 더 많은 수의 큐가 필요하다. 예를 들어, 3중 버스 시스템에서, 각 버스간 접속은 2개의 큐를 요구한다. 따라서 3중 버스 시스템은 6개의 큐를 요구한다.
그러나 본 발명의 실시예에 의한 새로운 버스 스위치 구현 방법은 모든 버스에 의해 액세스 가능한 다중포트화된 메모리 셀 영역을 사용하여 이러한 시스템의 구성을 더 간단하게 한다. 새로운 버스 스위치를 사용함으로써, 데이터를 임의의 버스로부터 다른 임의의 버스로 전송할 수 있으며, 동일한 시간에 발생할 수 있는 다른 데이터 전송과 충돌하지 않는다. 아래에서 보다 상세하게 기술되어 있는 바와 같이, 각 버스로부터의 버스 전송은 공통 메모리 셀 영역으로 입력된다. 그후 공통 메모리 셀 영역의 버스 트랜잭션은 목적지 버스로 향하게 된다. 임의의 버스는 독립적인 접속 경로를 사용하지 않고서도 임의의 다른 버스로부터 데이터를 판독하거나 기록할 수 있다.
본 발명의 실시예에서, 각 버스 트랜잭션과 연관된 정보는 3개의 서로 다른 메모리 셀―데이터 셀, 요청 셀 및 어드레스 셀―에 저장된다. 데이터 셀은 버스 트랜잭션과 연관된 데이터를 저장한다. 요청 셀은 목적지 버스로 전송된 버스 트랜잭션의 형태를 정의하는 버스 트랜잭션 정보를 포함한다. 최종적으로 어드레스 셀은 버스 트랜잭션과 관련된 어드레스 정보 및 일관성 상태 정보를 포함한다.
본 발명의 실시예에서, 각 데이터 셀, 각 요청 셀, 각 어드레스 셀간에는 1대1 대응이 존재한다. 따라서 각 데이터 셀, 요청 셀, 또는 어드레스 셀, 또는 이들 셀의 임의의 조합은 특정 버스 트랜잭션에 대한 정보를 포함할 수 있다. 본 발명의 실시예에서 메모리 셀을 사용하여 버스 트랜잭션 정보를 유지하지만, 버스 트랜잭션 정보는 3개 이하의 메모리 셀 내에 존재할 수 있다.
개념적으로, 데이터 셀, 요청 셀 및 어드레스 셀을 다중포트화된 단일 메모리 영역으로 간주할 수 있다. 본 발명의 실시예에서는 데이터 셀, 요청 셀, 어드레스 셀이 서로 다른 구성요소에 위치하지만, 이들은 계속하여 1대1 대응을 유지한다. 본 발명의 실시예에서, 데이터 인터페이스 버퍼는 데이터 셀을 포함하고, 시스템 액세스 제어장치는 어드레스 셀 및 요청 셀을 포함한다.
본 발명의 실시예에 의한 데이터 인터페이스 버퍼에 초점을 맞춰 설명하면, 데이터 인터페이스 버퍼 내의 각 데이터 셀은 다중포트화되어 모든 버스에 의해 액세스 가능하다. 각 데이터 셀은 특정 버스 트랜잭션과 연관된 데이터를 포함한다. 데이터 인터페이스 버퍼 내의 데이터 셀 영역은 버스 데이터 경로와 상호접속하는 것이 바람직하다.
본 발명의 실시예에 의한 시스템 액세스 제어장치에 초점을 맞춰 설명하면, 시스템 제어장치는 중앙 요청 리스트, 버퍼 관리자, 복수의 버스 마스터 및 복수의 버스 슬레이브를 포함한다. 공지되어 있는 바와 같이, 각 버스 마스터는 하나의 버스 상에서 버스 트랜잭션을 시작하고, 각 버스 슬레이브는 상기 하나의 버스와 연결된 다른 장치에 의해 시작된 버스 트랜잭션을 수신한다. 중앙 요청 리스트는 요청 셀 영역을 관리하고, 버퍼 관리자는 어드레스 셀 영역을 관리한다.
중앙 요청 셀 내의 각 요청 셀은 다중포트화되며, 모든 버스에 의해 액세스 가능하다. 각 요청 셀은 타겟 버스 식별자, 버스 트랜잭션 코드로 불리는 동작 코드 및 오너 버스 식별자를 포함한다. 타겟 버스 식별자는 특정 목적지 버스를 식별하며, 버스 트랜잭션 코드는 특정 버스 트랜잭션을 식별하고, 오너 버스 식별자는 발신(originating) 버스를 식별한다.
버퍼 관리자 내의 어드레스 셀 영역에 초점을 맞춰 설명하면, 각 어드레스 셀은 다중포트화되며 "사용중" 정보, 메모리 어드레스 및 데이터 셀 상태 정보를 포함한다. 어드레스 셀 내의 사용중 정보는 어드레스 셀이 사용가능한 지의 여부를 표시한다. 본 발명의 실시예에서, 사용중 정보는 어드레스 셀이 사용중인지 또는 미사용 상태인지를 표시하도록 설정된 사용중 비트를 포함한다. 사용중 비트가 미사용 상태로 설정되면, 유효 데이터가 데이터 셀 내에 존재할 수 있다. 이것은 미사용 데이터 셀 내의 유효 데이터를 최적으로 재사용할 수 있도록 허용한다.
한편 메모리 어드레스는 버스 트랜잭션과 연관된 메모리 어드레스를 포함하며, 데이터 셀 상태는 데이터 셀 내의 데이터의 상태를 표시한다. 버퍼 관리자는 어드레스 셀 영역 이외에도 어드레스 셀 우선순위 인코더, 다중 FIFO(first-in first-out) 메모리 및 다중 어드레스 비교기를 포함한다. 어드레스 셀 우선순위 인코더는 사용중인 셀, 및 새로운 버스 트랜잭션 정보를 수신할 수 있는 미사용 상태의 셀을 결정한다. 본 발명의 실시예에서, 어드레스 셀 우선순위 인코더는 각 어드레스 셀 내의 사용중 정보를 평가하여, 미사용 상태의 셀을 결정한다.
어드레스 셀 우선순위 인코더는 미사용 상태의 셀을 결정할 뿐만 아니라, 미사용 상태의 어드레스 셀을 서로 다른 버스에 할당한다. 바람직하게, 어드레스 셀 우선순위 인코더는 미사용 상태의 어드레스 셀을 서로 다른 버스에 할당한다. 미사용 상태의 어드레스 셀을 버스에 할당한 후에, 어드레스 우선순위 인코더는 사용중 비트를 어드레스 셀이 미사용 상태가 아님을 표시하도록 설정한다. 본 발명의 실시예에 의한 우선순위 인코더는 제1 미사용 상태의 어드레스 셀을 제1 버스에 할당하고, 제2 미사용 상태의 어드레스 셀을 제2 버스에 할당하고, 제3 미사용 상태의 어드레스 셀을 제3 버스에 할당한다.
제4 어드레스 셀이 미사용 상태가 되면, 어드레스 셀 우선순위 인코더는 제1 버스를 역회전하고, 제4 어드레스 셀을 제1 버스에 할당한다. 본 발명의 실시예에 의한 어드레스 셀 우선순위 인코더는 이러한 기술을 사용하여 미사용 상태의 어드레스 셀을 서로 다른 버스에 할당하지만, 당업자는 어드레스 셀 우선순위 인코더가 광범위한 범위의 할당 방식을 사용하여 미사용 상태의 어드레스 셀을 서로 다른 버스에 할당할 수 있다는 것을 이해하게 될 것이다.
버퍼 관리자의 FIFO 메모리에 초점을 맞춰 설명하면, FIFO 메모리는 할당된 어드레스 셀이 버스에 의해 요구될 때까지 이들을 저장한다. 본 발명의 실시예에서, FIFO 메모리는 할당된 어드레스 셀을 식별하는 어드레스 셀 식별자를 저장한다. 어드레스 셀 식별자는 할당된 어드레스 셀의 메모리 위치를 포함하는 가변 데이터이다. 버스는 어드레스 셀 식별자를 사용하여, 어드레스 셀 식별자에 의해 식별된 어드레스 셀 메모리 위치를 액세스한다.
본 발명의 실시예에서, 각 FIFO 메모리는 특정 메모리로 할당된다. 또한 각 FIFO 메모리는 버스 슬레이브 중 하나 및 각 FIFO 메모리와 동일한 버스에 할당된 일관성 필터 중의 하나와 연결된다. 하나의 버스 슬레이브 또는 하나의 일관성 필터가 버스 트랜잭션을 다른 버스로 전송하기를 원한다면, 이들 장치는 할당된 FIFO 메모리로부터 어드레스 셀 식별자 중의 하나를 구한다.
예를 들어, 제1 버스 상의 제1 프로세서가 데이터 값을 제2 버스 상의 제2 I/O 장치로 전송하기를 원한다고 가정한다. 이 예에서, 제1 버스 슬레이브는 제1 버스와 연결된다. 제1 프로세서가 제2 I/O 장치로 데이터 값을 전송하는 버스 트랜잭션을 시작하면, 제1 버스 슬레이브는 이러한 버스 트랜잭션을 수신한다. 그후 제1 버스 슬레이브는 제2 버스로 전송될 필요가 있는 버스 트랜잭션을 결정한다.
따라서 제1 버스 슬레이브는 버퍼 관리자 내의 제1 FIFO 메모리를 액세스하고, 어드레스 셀 식별자를 구한다. 어드레스 셀 식별자를 사용하여, 제1 버스 슬레이브는 식별된 어드레스 셀을 액세스하고, 데이터 값 어드레스를 저장하며, 필요하다면 어드레스 셀 내의 데이터 값의 일관성 상태를 저장한다. 해당 요청 셀에 있어서, 제1 버스 슬레이브는 제2 버스를 타겟 버스 식별자에 지정하고, 버스 트랜잭션 코드를 동작 코드(버스 트랜잭션 코드라고도 함)에 지정하고, 제1 버스를 오너 버스 식별자에 지정한다. 또한 제1 버스 슬레이브는 버스 트랜잭션과 연관된 데이터 값을 해당 데이터 셀 내에 저장한다.
다른 예에서는, 제1 버스에 할당된 제1 캐시 일관성 필터에 의해 캐시 라인 액세스가 제2 버스 상에서 캐시 일관성을 보장하기 위한 버스 트랜잭션을 요구한다 것이 결정되었다고 가정한다. 이 예에서, 제1 캐시 일관성 필터는 버퍼 관리자 내의 FIFO 메모리를 액세스하고, 어드레스 셀 식별자를 구한다.
제1 일관성 필터는 어드레스 셀 식별자를 사용하여 식별된 어드레스 셀을 액세스한다. 그후 제1 일관성 필터는 캐시 라인 어드레스 및 어드레스 셀 내의 일관성 상태 정보를 포함한다. 또한 요청 셀에서, 제1 일관성 필터는 타겟 버스 식별자 내의 제2 버스, 적당한 버스 트랜잭션 코드 및 버스 식별자 내의 제1 버스를 지정한다. 그러나 이 예에서, 해당 데이터 셀은 빈 상태로 남으며, 이는 캐시 일관성을 보장하기 위해 캐시 라인 데이터가 필요하지 않기 때문에 가능하다. 버스 트랜잭션 정보가 셀에 더해지면, 적당한 버스는 버스 트랜잭션 정보를 구하고 원하는 버스 트랜잭션을 실행시킨다.
본 발명의 실시예에서, 중앙 요청 리스트 내의 복수의 버스 우선순위 인코더는 요청 셀로 연결된다. 전술한 바와 같이, 요청 셀 내의 타겟 버스 식별자는 목적지 버스를 식별한다. 일반적으로 말해, 버스 우선순위 인코더는 요청 셀 내의 타겟 버스 식별자를 평가하여, 버스 트랜잭션을 수행해야할 버스를 결정한다.
예를 들어, 요청 셀 내의 타겟 버스 식별자가 제1 버스와 제2 버스를 지정한다고 가정한다. 이 예에서, 제1 버스 우선순위 인코더는 요청 셀 내의 타겟 버스 식별자를 평가하여, 제1 버스를 위한 요청 셀을 식별하고, 제2 버스 우선순위 인코더는 타겟 버스 식별자를 평가하여 제2 버스를 위한 요청 셀을 식별한다.
목적지 버스를 식별하는 것 이외에도, 각 버스 우선순위 인코더는 가장 높은 우선순위를 가지는 특정 버스와 연관된 버스 요청 셀을 결정한다. 본 발명의 실시예에서, 각 버스 우선순위 인코더는 라운드 로빈 기술을 사용하여 가장 높은 우선순위를 가지는 버스 요청 셀을 결정한다. 라운드 로빈 기술은 각 버스 우선순위 인코더가 가장 높은 우선순위를 버스 요청 셀에 순차적으로 할당하도록 한다.
각 버스 우선순위 인코더는 가장 높은 우선순위를 가지는 버스 요청 셀을 하나의 버스 마스터로 전송한다. 전술한 바와 같이, 버스 식별자를 가지는 것 이외에도, 요청 셀은 버스 트랜잭션 코드를 포함한다. 그후 버스 마스터는 요청 셀 내에 식별된 버스 트랜잭션을 수행한다. 아래에서 보다 상세하게 기술하고 있는 바와 같이, 트랜잭션을 수행하는 버스는 버스 트랜잭션을 시작한 버스로 데이터를 재기록할 필요가 있다. 이러한 경우에 버스 마스터는 데이터 셀을 사용하여 재기록 데이터를 저장하고, 발신 버스와 통신하기 위해 요청 셀을 재사용한다. 전술한 바와 같이, 발신 버스는 요청 셀 내에 존재하는 오너 버스 식별자에 의해 식별된다. 그러나 버스 트랜잭션이 완료되는 즉시, 버스 마스터는 어드레스 셀(500), 요청 셀(600) 및 데이터 셀(700)을 미사용 상태로 설정한다.
버스 마스터가 버스 트랜잭션을 수행하면, 버스 우선순위 인코더는 버스에 할당된 우선순위가 다음으로 가장 높은 요청 셀을 식별하고, 상기 요청 셀을 버스 마스터로 전송한다. 버스 우선순위 인코더가 버스에 할당된 최종 버스 요청 셀에 도달하면, 버스 우선순위 인코더는 버스에 할당된 제1 버스 요청 셀을 역회전시킨다. 라운드 로빈 방식에 기초하여 각 버스 요청 셀에 가장 높은 우선순위를 부여함으로써 결과적으로 모든 버스 요청 셀을 버스로 전송한다. 새로운 요청 셀이 중앙 요청 리스트로 더해지면, 각 버스 우선순위 인코더는 새로운 요청 셀을 즉각적으로 액세스하여 가장 높은 우선순위를 할당한다.
본 발명의 다른 특징에서, 버퍼 관리자는 어드레스 충돌을 식별하는 복수의 어드레스 비교기를 포함한다. 일반적으로 2개의 서로 다른 버스 트랜잭션이 동일한 데이터 값과 연관되어 있으면, 거의 동시에 어드레스 충돌이 발생한다. 이러한 경우에, 동일한 데이터에 대한 2개의 버스 트랜잭션이 어드레스 셀, 요청 셀, 및 데이터 셀 내에 동시에 존재할 수 있다. 예상할 수 있는 바와 같이, 이러한 어드레스 충돌은 적당하지 않는 결과를 초래한다.
본 발명의 실시예에서, 하나의 어드레스 비교기 세트는 각 버스로 할당된다. 각 어드레스 비교기 세트는 버퍼 관리자 내의 하나의 일관성 필터, 하나의 버스 슬레이브, 및 모든 어드레스 셀과 연결된다. 각 버스 트랜잭션에 있어서, 상기 버스에 할당된 어드레스 비교기 세트는 버스 트랜잭션 어드레스를 어드레스 셀 내의 모든 어드레스와 비교한다. 어드레스 충돌이 검출되면, 적당한 동작을 보장하기 위해, 아래에서 상세하게 기술하고 있는 바와 같이 적당한 동작이 수행되어야 한다.
본 발명의 실시예는 1) 다중 시스템 버스 및 I/O 버스를 공유된 주 메모리와 상호연결하며, 2) 시스템 내의 지연시간 및 전체 대역폭에 대한 영향을 최소화하면서 캐시 일관성을 효율적으로 유지하는, 캐시-일관성, 다중버스 시스템을 제공한다. 특히 본 발명은 버스간(bus-to-bus) 통신을 조정하여, 캐시 메모리 일관성을 작은 양의 크로스 버스 트래픽(cross-bus traffic)으로 유지하는 일관성 필터를 포함한다.
이하에서는 본 발명의 실시예에 따른 다중버스 시스템에 대하여 기술하고 있지만, 본 발명이 이러한 다중버스 시스템에 한정되는 것은 아니며, 다른 형태의 다중버스에서도 사용될 수 있다. 본 발명의 완전한 이해를 돕기 위해, 나머지 상세한 설명은 다음의 항과 하부 항으로 구성되어 있다.
Ⅰ. 용어 및 두문자의 용어해설
Ⅱ. 본 발명의 실시예에 따른 다중버스 시스템의 개요
Ⅲ. 시스템 액세스 제어장치
A. 일관성 필터
1. 태그 메모리
2. 태그 제어장치
3. 사이클 인코더(cycle encoder)
4. 규칙표(rules table)
B. 버퍼 관리자
C. 중앙 요청 리스트
Ⅳ. 데이터 인터페이스 버퍼
Ⅴ. 캐시 일관성 유지
A. 버스 판독 라인 커맨드 처리
B. 버스 판독 무효화 라인 커맨드 처리
Ⅵ. 다른 실시예
Ⅶ. 결론
Ⅰ. 용어 및 두문자의 용어해설
ASIC: 응용 주문용 집적 회로(Application-Specific Integrated Circuit)
BRL 커맨드: 버스 판독 라인 커맨드(Bus Read Line Command). 버스 판독 라인 커맨드는 버스 상의 캐시 라인을 판독한다.
BRIL 커맨드: 버스 판독 무효화 라인 커맨드(Bus Read Invalidate Line Command). 버스 판독 무효화 라인 커맨드는 버스 상에서 캐시 라인을 판독하고 이를 무효화한다.
버스 마스터(bus master): 특정 버스 트랜잭션을 제어하는 제어 로직. 하나 이상의 장치가 공통 버스를 공유하는 몇몇의 시스템에서, 각 장치는 버스 마스터가 되기 위한 내부 로직을 가진다. 버스 마스터가 버스 트랜잭션을 수행한 후에, 버스 마스터는 다른 장치가 버스 마스터가 되도록 하기 위해 이 버스에 대한 제어권을 폐기(relinquish)한다. 이러한 장치에는 프로세서, I/O 장치, 메모리 제어장치 등이 있다.
버스 슬레이브(bus slave): 버스 마스터로부터 버스 트랜잭션을 수신하는 제어 로직.
버스 스누핑: 다른 프로세서에 의해 수행된 메모리 트랜잭션을 모니터하기 위해 캐시 메모리를 구비하는 프로세서에 의해 사용되는 기술.
DIB: 데이터 인터페이스 버퍼(data interface buffer)
DEFER# 신호: DEFER# 신호는 버스 트랜잭션을 지연시킨다. Pentium Pro 버스의 예에서 DEFER# 신호는 DEFER# 신호의 의미를 표시하는 제어 신호를 부호화하는 유일한 신호는 아니지만 독창적인(unique) 신호이다.
DEN# 신호: DEN# 신호는 언제 버스 트랜잭션이 지연될 수 있는 지를 표시한다. 지연된 버스 트랜잭션은 무순서(out of order)로 실행된다. 다시 말해, 제1 버스 트랜잭션이 지연되면, 지연된 제1 버스 트랜잭션 이전에 제2 버스 트랜잭션이 완료된다. 버스 트랜잭션을 발행(issue)하는 프로세서는 DEN# 신호를 인가함으로써 버스 트랜잭션이 지연가능하는 지의 여부를 표시한다.
FIFO: 선입선출(first-in first-out) 메모리. FIFO는 항목이 더해지는 순서와 동일한 순서로 항목을 출력하는 메모리 큐이다. 다시 말해 첫 번째 항목이 제일 먼저 출력된다.
HIT# 신호: 본 발명의 실시예에서, 각 프로세서는 버스 상에서 함께 논리합(OR) 연산된 HIT# 신호를 가진다. 프로세서는 HIT# 신호를 발생시켜, 데이터 값이 공유되고 있음을 표시한다. 예를 들어, 제1 프로세서가 데이터 값을 요청하면, 제2 프로세서는 버스 트랜잭션을 모니터하여, 제2 프로세서가 요청된 데이터 값의 복사본을 포함하는 경우 HIT# 신호를 발생시킨다.
HITM# 신호: 본 발명의 실시예에서, 각 프로세서는 HITM# 신호를 가진다. 수정된 데이터 값이 프로세서의 캐시 메모리 내에 존재한다는 사실이 버스 스누핑 동작에 의해 표시되면, 프로세서는 HITM# 신호를 인가한다.
I/O: 입/출력. 일반적으로 입/출력 장치와의 입/출력 트랜잭션을 가리킨다.
PCI 버스: 주변 장치 접속 버스(Peripheral Component Interconnect Bus)
프로세서: 본 발명의 상세한 설명에서 프로세서는 계산형 유닛 또는 제어 유닛을 의미한다. 프로세서는 버스 트랜잭션을 통해 주 메모리와 통신하며, CPU, 마이크로프로세서, 스마트 입/출력 장치 및 정보를 저장하고 처리하거나 전송하기 위한 다른 장치를 포함한다.
RAM: 임의 액세스 메모리(Random Access Memory)
SRAM: 정적 임의 액세스 메모리(Static Random Access Memory)
SDRAM: 동기식 동적 임의 액세스 메모리(Synchronous Dynamic Random Access Memory)
스누핑 히트: 프로세서에 의해 캐시 메모리가 특정 메모리 트랜잭션에서 요청되는 데이터를 포함하고 있다는 사실이 검출되면, 스누핑 히트가 발생한다.
Ⅱ. 본 발명의 실시예에 따른 다중버스 시스템의 개요
도 1에 도시되어 있는 바와 같이, 본 발명의 실시예에 따른 다중버스 시스템(100)은 3개의 시스템 버스―제1 시스템 버스(102), 제2 시스템 버스(104), 및 제3 시스템 버스(106)―를 포함한다. 각 시스템 버스(102, 104 및 106)는 어드레스 및 제어 라인 세트(108a, 108b 및 108c) 및 데이터 라인 세트(110a, 110b, 및 110c)를 포함한다. 이들 어드레스 및 제어 라인은 총괄하여 어드레스 및 제어 라인(108)으로 언급된다. 또한 이들 데이터 라인(110a, 110b, 및 110c)은 총괄하여 데이터 라인(110)으로 언급된다. 이하의 설명에서는, 제1 시스템 버스(102)를 좌측 버스(102)라 지칭하며, 제2 시스템 버스(104)를 우측 버스(104)라 지칭하며, 제3 시스템 버스(106)를 I/O 버스(106)라 지칭한다.
본 발명의 실시예에서, 각 시스템 버스(102, 104 및 106)는 Intel사에서 규정한 Pentium Pro 시스템이다. Pentium Pro 시스템 버스는 36 비트의 어드레스, 64 비트의 데이터 및 다양한 형태의 제어 및 오류 검출 신호(erroneous detection signal)를 제공한다. 본 발명의 실시예에서는 Pentium Pro 버스를 사용하고 있지만, 당업자는 본 발명을 캐시 일관성 프로토콜 스누핑을 구현하는 광범위한 시스템 버스에 적용할 수 있음을 인식하게 될 것이다. 또한 버스의 포맷(format)은 버스마다 서로 다를 수 있다.
좌측 버스(102)에 복수의 프로세서(112a, 및 112b 등)가 연결되어 있으며, 우측 버스(104)에 복수의 프로세서(112c, 및 112d 등)가 연결되어 있다. 프로세서(112a, 112b, 112c, 및 112d)는 총괄하여 프로세서(112)로 언급된다. 본 발명의 실시예에서, 각 프로세서(112)는 내부 캐시 유닛(114)을 구비한다. 도 1에는 4개의 프로세서(112)가 도시되어 있지만, 각 버스(102, 및 104)는 추가 프로세서(112)에 연결될 수도 있다. 본 발명의 실시예에서 사용되는 프로세서(112)는 Intel사에서 제조되는 Pentium Pro 프로세서이다. 본 발명의 실시예에서는 Pentium Pro 프로세서를 사용하고 있지만, 당업자는 본 발명을 특정 시스템 버스와 호환가능한(compatible) 광범위한 프로세서(112)에 적용할 수 있다는 것을 인식하게 될 것이다.
프로세서(112) 내의 캐시 메모리(114)는 데이터를 국부적(locally)으로 저장함으로써 처리 성능을 개선시킨다. 일반적으로, 캐시 메모리(114)는 작은 버스 대역폭을 사용하여, 프로세서(112)가 데이터 값을 액세스하도록 허용한다. 본 발명의 실시예에 의한 캐시 메모리(114)는 데이터 값을 캐시 라인으로 편성하는데, 여기서 상기 캐시 라인은 32 바이트의 데이터를 포함한다.
본 발명의 실시예에서의 제3 시스템 버스(106)는 복수의 I/O 브리지(120)와 주 메모리(132) 사이에서 입/출력 트랜잭션을 전송하며, 이에 따라 I/O 버스(106)로 언급된다. 본 발명의 실시예의 I/O 브리지(120)는 Intel사에서 제조되는 82450 GX PCIset Orion PCI 브리지이다. 본 발명의 실시예에서, I/O 브리지(120)는 PCI 버스를 사용하여 I/O 버스(106)로부터 I/O 트랜잭션을 복수의 I/O 장치(122)로 전송한다. 그러나 당업자는 I/O 브리지(120)를 다양한 I/O 장치(122)를 액세스하는 광범위한 장치로 구현할 수 있다는 것을 인식하게 될 것이다. 또한 I/O 브리지(120)는 선택적(optional)이며, 호환성 I/O 장치(122)가 I/O 버스(106)에 직접 부착될 수 있다.
또한 본 발명의 실시예에 의한 다중버스 시스템(100)은 홀수 주 메모리 모듈(odd main memory module; 132a), 짝수 주 메모리 모듈(even main memory module; 132b) 및 데이터 인터페이스 버퍼(134)를 포함한다. 본 발명의 실시예에서, 홀수 주 메모리 모듈(132a) 및 짝수 주 메모리 모듈(132b)은 총괄하여 주 메모리(132)로 언급된다. 본 발명의 실시예에 따른 홀수 메모리 모듈(132a) 및 짝수 메모리 모듈(132b)은 32 메가바이트 내지 32 기가바이트의 크기를 가지는 SDRAM을 포함한다. SDRAM은 고속 데이터 버스팅(high-speed bursting of data)을 제공하는 동기식 파이프라인 인터페이스를 사용한다.
또한 본 발명의 실시예의 다중버스 시스템은 시스템 액세스 제어장치(130) 및 데이터 인터페이스 버퍼(134)를 포함한다. 일반적으로 말하면, 시스템 액세스 제어장치는 다중버스 시스템의 동작을 제어한다. 시스템 액세스 제어장치는 각 버스(102, 104 및 106)의 어드레스 및 제어 라인(108a, 108b, 및 108c)과 연결되어 있다. 또한 시스템 액세스 제어장치(130)는 홀수 메모리 어드레스 및 제어 라인 세트(138a), 짝수 메모리 어드레스 및 제어 라인 세트(138b), 및 데이터 인터페이스 버퍼(DIB) 제어 라인 세트(140)와 연결되어 있다.
한편, 데이터 인터페이스 버퍼(134)는 서로 다른 버스(102, 104, 및 106)들 및 주 메모리 사이에 데이터 경로(data path)를 제공한다. 데이터 인터페이스 버퍼(134)는 각 버스(102, 104, 및 106)의 데이터 라인(110a, 110b, 및 110c)과 연결된다. 또한 데이터 인터페이스 버퍼(134)는 주 메모리 데이터 라인(142)과 연결된다.
프로세서(112)는 주 메모리(132)로부터 데이터를 판독함으로써 자신들의 캐시 메모리(114)를 채운다. 캐시 메모리(114) 내의 최신 데이터를 유지하기 위해, 특정 버스 상의 프로세서(112) 내의 캐시 메모리(114)는 자신에 할당된 버스(102, 104 또는 106) 상에서 발생하는 주 메모리 버스 트랜잭션을 스누핑한다. 이것을 버스 스누핑이라 한다.
캐시 메모리(114)가 버스 트랜잭션에서 식별된 캐시 라인과 동일한 캐시 라인을 포함하면, 스누핑 히트가 발생한다. 스누핑 히트가 발생하면, 이 데이터 값에 대한 공유된 복사본을 가지고 있는 프로세서(112) 또는 프로세서들(112)이 HIT# 신호를 인가한다. HIT# 신호는 어드레스 및 제어 라인(108) 중의 하나에 인가된다. HIT# 신호는 다른 프로세서(112)에게 메모리 트랜잭션과 연관된 데이터를 공유하고 있음을 통지한다. 본 발명의 실시예에서, 다른 프로세서(112) 중 어느 프로세서도 HIT# 신호를 인가하지 않으면, 요청 프로세서는 원하는 데이터 값의 일관성 상태를 그 자신의 상태로 설정한다.
다른 경우에, 프로세서(112)는 자신의 캐시 메모리(114) 내의 캐시 라인을 수정할 수 있다. 그러나 버스 트래픽을 감소시키기 위해, 캐시 메모리(114)는 다른 프로세서(112)가 주 메모리(132)로부터 동일한 캐시 라인을 요청할 때까지, 수정된 캐시 라인을 주 메모리(132)로 전송하지 않을 수 있다. 예를 들어, 어떤 프로세서(112)가 캐시 라인을 수정하면, 다른 프로세서(112)는 이 캐시 라인의 복사본을 가지고 있지 않거나, 동일한 캐시 라인을 얻고자 할 수도 있다. 이러한 경우에, 최신 캐시 라인을 가지는 프로세서(112)는 최신 캐시 라인을 주 메모리(132)에 기록하지 않고, 그 대신에, 프로세서(112)는 캐시 메모리(114) 내의 최신 캐시 라인을 유지한다.
본 발명의 실시예에서, 수정된 캐시 라인이 프로세서의 캐시 메모리(114) 내에 존재한다는 사실이 버스 스누핑 동작에 의해 표시되면, 프로세서들(112) 중 하나의 프로세서가 HITM# 신호를 인가한다. HITM# 신호는 어드레스 및 제어 라인(108) 중의 하나에 인가되며, 최신 캐시 라인을 가지는 프로세서(112)가 캐시 라인을 주 메모리(132)에 재기록할 필요가 있음을 표시한다. 예를 들어, 본 발명의 실시예에서, 좌측 버스(102) 상의 제1 프로세서(112a)가 캐시 메모리(114) 내의 수정된 캐시 라인을 포함하고 있다고 가정한다. 좌측 버스(102) 상의 제2 프로세서(112b)가 동일한 캐시 라인의 복사본을 얻고자 하는 경우, 제2 프로세서(112b)는 좌측 버스(102)에 대한 제어권을 획득하고, 원하는 캐시 라인을 식별하는 주 메모리(132)로의 메모리 트랜잭션을 실행한다. 그 후 제1 프로세서(112a)는 이 메모리 트랜잭션을 스누핑하고, 제1 프로세서(112a)가 원하는 캐시 라인의 수정된 버전을 포함하고 있는 지를 결정한다.
이에 응답하여, 제1 프로세서(112a)는 자신이 수정된 버전의 캐시 라인을 포함하고 있음을 표시하는 HITM# 신호를 인가한다. 제1 프로세서(112a)는 좌측 버스(102)의 커맨드를 수신하여, 수정된 캐시 라인을 주 메모리(132)에 재기록한다. 제1 프로세서(112a)가 수정된 캐시 라인을 주 메모리(132)에 재기록한 후에, 제2 프로세서(112b)는 주 메모리 트랜잭션을 다시 개시하여, 최신 캐시 라인을 획득한다.
본 발명의 실시예의 프로세서(112)는 버스 트랜잭션이 지연될 수 있는 지의 여부를 표시한다. 버스 트랜잭션을 발행하는 프로세서(112)는 DEN# 신호를 사용하여 버스 트랜잭션을 지연할 수 있는 지의 여부를 표시한다. HITM# 신호를 인가하는 프로세서는 트랜잭션 응답을 제어한다. 프로세서가 HITM# 신호를 인가하는 경우, 프로세서는 메모리가 행하듯이, 버스 트랜잭션을 순서대로 실행한다. 또는 트랜잭션이 지연가능한 경우에는, 시스템 액세스 제어장치(130)가 버스 트랜잭션을 지연시키는 DEFER# 신호를 인가한다. DEFER# 신호는 특정 제어 라인(108)의 부호화(encoding) 신호이다.
Ⅲ. 시스템 액세스 제어장치
도 2에 도시된 시스템 액세스 제어장치(130)에 초점을 맞춰 설명하면, 본 발명의 실시예에 따른 시스템 액세스 제어장치(130)는 응용 주문용 집적 회로(Application-Specific Integrated Circuit; ASIC)로 구현된다. 일반적으로 말하면, 시스템 액세스 제어장치(130)는 다중버스 시스템(100) 내의 캐시 일관성을 유지하면서, 3개의 버스(102, 104, 및 106) 및 주 메모리(132)를 제어한다.
시스템 엑세스 제어장치(130)는 좌측 일관성 필터(200a), 우측 일관성 필터(200b), 및 I/O 일관성 필터(200c)를 포함한다. 이하의 설명에서는 좌측 일관성 필터(200a), 우측 일관성 필터(200b), 및 I/O 일관성 필터(200c)를 일관성 필터(200)라 지칭한다. 또한 시스템 액세스 제어장치(130)는 좌측 버스 마스터(202a), 우측 버스 마스터(202b) 및 I/O 버스 마스터(202c)를 포함한다. 이하의 설명에서는 좌측 버스 마스터(202a), 우측 버스 마스터(202b) 및 I/O 버스 마스터(202c)를 총괄하여 버스 마스터(202)라 지칭한다.
또한 시스템 액세스 제어장치(130)는 좌측 버스 슬레이브(204a), 우측 버스 슬레이브(204b), 및 I/O 버스 슬레이브(204c)를 포함한다. 이하의 설명에서는, 좌측 버스 슬레이브(204a), 우측 버스 슬레이브(204b), 및 I/O 버스 슬레이브(204c)를 총괄하여 버스 슬레이브(204)라 지칭한다. 또한 시스템 액세스 제어장치(130)는 홀수 메모리 제어장치(206a) 및 짝수 메모리 제어장치(206b)를 포함한다. 이하의 설명에서는, 홀수 메모리 제어장치(206a) 및 짝수 메모리 제어장치(206b)를 총괄하여 메모리 제어장치(206)라 지칭한다.
또한 시스템 액세스 제어장치(130)는 중앙 요청 리스트(208) 및 버퍼 관리자(210)를 포함한다. 최종적으로 시스템 액세스 제어장치(130)는 외부 좌측 태그 메모리(212a), 외부 우측 태그 메모리(212b), 및 내부 I/O 태그 메모리(212c)와 연결된다. 이하의 설명에서는, 좌측 태그 메모리(212a), 우측 태그 메모리(212b), 및 내부 I/O 태그 메모리(212c)를 총괄하여 태그 메모리(212)라 지칭한다.
본 발명의 실시예에서, 좌측 태그 메모리(212a), 좌측 일관성 필터(200a), 좌측 버스 마스터(202a) 및 좌측 버스 슬레이브(204a)는 좌측 버스(102)로 할당된다. 우측 태그 메모리(212b), 우측 일관성 필터(200b), 우측 버스 마스터(202b) 및 우측 버스 슬레이브(204b)는 우측 버스(102)에 할당된다. I/O 태그 메모리(212c), I/O 일관성 필터(200c), I/O 버스 마스터(202c), 및 I/O 버스 슬레이브(204c)는 I/O 버스(106)에 할당된다.
시스템 액세스 제어장치(130)의 상호접속에 초점을 맞춰 설명하면, 좌측 일관성 필터(200a)는 좌측 버스 어드레스 및 제어 라인(108a), 좌측 태그 메모리(212a), 우측 태그 메모리(212b), I/O 태그 메모리(212c), 버퍼 관리자(210) 및 중앙 요청 리스트(208)와 통신한다. 우측 일관성 필터(200b)는 우측 버스 어드레스 및 제어 라인(108b), 좌측 태그 메모리(212a), 우측 태그 메모리(212b), I/O 태그 메모리(212c), 버퍼 관리자(210) 및 중앙 요청 리스트(208)와 통신한다. I/O 일관성 필터(200c)는 I/O 버스 어드레스 및 제어 라인(108c), 좌측 태그 메모리(212a), 우측 태그 메모리(212b), I/O 태그 메모리(212c), 버퍼 관리자(210) 및 중앙 요청 리스트(208)와 통신한다.
좌측 버스 마스터(202a)는 좌측 버스 어드레스 및 제어 라인(108a) 및 중앙 요청 리스트(208)와 통신한다. 우측 버스 마스터(202b)는 우측 버스 어드레스 및 제어 라인(108b) 및 중앙 요청 리스트(208)와 통신한다. I/O 버스 마스터(202c)는 I/O 버스 어드레스 및 제어 라인(108c) 및 중앙 요청 리스트(208)와 통신한다.
좌측 버스 슬레이브(204a)는 좌측 버스 어드레스 및 제어 라인(108a), 홀수 메모리 제어장치(206a), 짝수 메모리 제어장치(206b) 및 버퍼 관리자(210)와 통신한다. 우측 버스 슬레이브(204b)는 우측 버스 어드레스 및 제어 라인(108b), 홀수 메모리 제어장치(206a), 짝수 메모리 제어장치(206b) 및 버퍼 관리자(210)와 통신한다. I/O 버스 슬레이브(204c)는 I/O 버스 어드레스 및 제어 라인(108c), 홀수 메모리 제어장치(206a), 짝수 메모리 제어장치(206b) 및 버퍼 관리자(210)와 통신한다.
따라서 중앙 요청 리스트는 좌측 일관성 필터(200a), 우측 일관성 필터(200b), I/O 일관성 필터(200c), 좌측 버스 마스터(202a), 우측 버스 마스터(202b), 및 I/O 버스 마스터(202c)와 통신한다. 버퍼 관리자(210)는 좌측 일관성 필터(200a), 우측 일관성 필터(200b), I/O 일관성 필터(200c), 좌측 버스 마스터(202a), 우측 버스 마스터(202b), 및 I/O 버스 마스터(202c), 좌측 버스 슬레이브(204a), 우측 버스 슬레이브(204b), I/O 버스 슬레이브(204c), 홀수 메모리 제어장치(206a) 및 짝수 메모리 제어장치(206b)와 통신한다.
버스 마스터(202)에 초점을 맞춰 설명하면, 버스 마스터(202)는 자신에 할당된 버스(102, 102 및 106) 상의 버스 트랜잭션을 제어한다. 예를 들어, 좌측 버스 마스터(202a)는 좌측 버스(102) 상의 버스 트랜잭션을 개시한다. 버스 마스터(202)가 하나 이상의 버스 트랜잭션을 수행한 후에는, 버스 마스터(202)가 이 버스를 폐기하여, 다른 장치가 버스 마스터가 되도록 한다. 버스 마스터(202)를 구현하기 위한 제어 로직은 당업자에게 공지되어 있다.
버스 슬레이브(204)에 초점을 맞춰 설명하면, 버스 슬레이브(204)는 자신에 할당된 버스(102, 104, 및 106) 상의 프로세서들(112) 또는 I/O 브리지(120) 중 하나에 의해 개시된 버스 트랜잭션을 수신한다. 예를 들어, 프로세서들(112) 중 하나의 프로세서는 주 메모리(132) 내의 특정 데이터 값에 대한 판독 버스 트랜잭션을 개시할 수 있다. 버스 슬레이브(204)는 버스 트랜잭션을 수신하고, 주 메모리(132)로부터 요청된 데이터 값을 구한다. 버스 슬레이브(204)를 구현하기 위한 제어 로직은 당업자에게 공지되어 있다.
홀수 메모리 제어장치(206a) 및 짝수 메모리 제어장치(206b)는 각각 홀수 주 메모리 모듈(132a) 및 짝수 주 메모리 모듈(132b)에 대한 액세스를 제어한다. 홀수 메모리 제어장치(206a) 및 짝수 메모리 제어장치(206b)는 당업자에게 공지된 메모리 제어 기술을 사용하여 홀수 주 메모리 모듈(132a) 및 짝수 주 메모리 모듈(132b)을 제어한다.
A. 일관성 필터
본 발명의 실시예의 일관성 필터(200)에 초점을 맞춰 설명하면, 각 일관성 필터(200)는 어느 버스 트랜잭션 또는 어느 세트의 버스 트랜잭션이 캐시 일관성을 유지하기 위해 필요한 지를 결정한다. 본 발명의 실시예에서, 각 일관성 필터(200)는 캐시 일관성을 유지하기 위해 크로스 버스 트랜잭션이 반드시 필요할 것은 아닌 경우에 크로스 버스 트래픽을 제한함으로써, 다중버스 시스템(200)의 성능을 개선한다.
전술한 바와 같이, 좌측 일관성 필터(200a)는 좌측 버스 어드레스 및 제어 라인(108a)을 모니터하고, 우측 일관성 필터(200b)는 우측 버스 어드레스 및 제어 라인(108b)을 모니터하고, I/O 일관성 필터(200c)는 I/O 어드레스 및 제어 라인(108c)을 모니터한다. 도 3에 도시되어 있는 바와 같이, 각 일관성 필터(200)는 태그 제어장치(300), 사이클 인코더(302) 및 규칙표(304)를 포함한다. 또한 각 일관성 필터(200)는 태그 메모리(212)중의 하나에 할당된다.
1. 태그 메모리
본 발명의 실시예에서, 각 태그 메모리(212)는 시스템 액세스 제어장치(130)의 외부에 위치한 SRAM에 저장된다. 좌측 태그 메모리(212a) 및 우측 태그 메모리(212b)는 동일한 크기를 가지는 것이 바람직하며, 반면 I/O 태그 메모리의 크기는 I/O 브리지(120) 등과 연결된 작은 크기의 캐시 때문에 일반적으로 이들 장치에 비해 작다. 특정 버스에 할당된 태그 메모리(212)는 1) 할당된 버스와 연결된 캐시 메모리(114)에 위치하는 캐시 라인 및 2) 캐시 라인의 캐시 상태에 대한 슈퍼셋(superset) 레코드를 유지한다. 본 발명의 실시예에서, 캐시 상태는 캐시 메모리(114) 내의 캐시 일관성 상태보다 적은 수의 상태를 포함하는 캐시 일관성 상태 세트에 의해 표현된다.
공지되어 있는 바와 같이, 주 메모리 내의 각 캐시 라인은 캐시 라인 어드레스로 식별된다. 캐시 라인의 크기는 다중버스 시스템(100)에서부터 다른 다중버스 시스템(100)에 이르기까지 다양하다. 본 발명의 실시예에서, 캐시 라인은 32개의 8비트 데이터 값(256 비트)을 포함한다. 각 태그 메모리(212)는 실제 캐시 라인을 저장하는 것이 아니라, 캐시 라인을 식별하기 위한 캐시 라인 어드레스를 저장한다. 캐시 라인 어드레스를 저장하는 것 이외에도, 또한 각 태그 메모리(212)는 캐시 라인 어드레스와 연관된 일관성 상태 정보를 저장한다. 그리하여 각 태그 메모리(212)는 태그 메모리의 할당된 버스와 연결된 캐시 메모리(114)에 저장된 데이터의 상태 및 가능성 있는 내용(probable content)에 관한 정보를 저장한다.
예를 들어 좌측 버스(102) 상의 프로세서(112a)가 주 메모리(132) 내의 캐시 라인을 액세스하는 판독 버스 트랜잭션을 발생시키는 경우, 이 프로세서(112a)는 원하는 캐시 라인 어드레스를 좌측 버스 어드레스 및 제어 라인(108a) 상에 위치시킨다. 아래에서 보다 상세하게 기술하듯이, 좌측 일관성 필터(200a)는 원하는 캐시 라인 어드레스를 수신하고 이 캐시 라인 어드레스를 좌측 태그 메모리(212a)에 저장한다. 또한 좌측 일관성 필터(200a)는 이 캐시 라인 어드레스와 연관된 일관성 상태를 좌측 태그 메모리(212a)에 저장한다.
각 캐시 라인 어드레스와 연관된 일관성 상태는 캐시 메모리(114) 내의 캐시 라인의 상태와 관련되어 있다. 본 발명의 실시예에서, 일관성 상태는 3개의 서로 다른 일관성 상태―무효 상태, 공유 상태 또는 점유 상태―를 포함한다. 무효 상태는 캐시 라인이 무효 상태이며 프로세서(112)가 이 캐시 라인을 사용해서는 안된다는 것을 의미한다. 공유 상태는 프로세서(112)가 캐시 라인을 수정할 수 없음을 의미한다. 예를 들어, 공유된 캐시 라인은 종종 수정되지 않은 프로그램 인스트럭션이다. 점유 상태는 캐시 라인이 자신을 점유하는 프로세서(112)에 의해 수정될 수 있음을 의미한다. 본 발명의 실시예에서는 무효, 공유, 및 점유 프로토콜을 사용하는데, 이는 이들 프로토콜이 Pentium Pro 프로세서(112)에 의해 사용된 MESI 프로토콜을 포함하는 광범위한 캐시 일관성 프로토콜에 적용가능하기 때문이다.
그러나 당업자는 캐시 라인의 일관성 상태가 무효, 공유 및 점유 프로토콜에 한정되지 않는다는 것을 이해할 것이다. 사실 당업자는 수정(M), 배타적(E), 공유(S), 무효(I)의 MESI 프로토콜, 수정(M), 점유(0), 배타적(E), 공유(S) 및 무효(I)의 MOESI 프로토콜, 수정(M), 공유(S), 무효(I)의 MSI 프로토콜, 및 버클리(Berkeley) 프로토콜, University of Illinois 일관성 프로토콜과 같은 광범위한 일관성 프로토콜을 사용하여 일관성 상태를 구현할 수 있다는 것을 인식하게 될 것이다.
일관성 상태는 2개의 무효 및 점유 프로토콜과 같은 2상태 일관성 프로토콜에 의해서도 구현될 수 있다. 이중 버스(dual-bus) 시스템에서, 임의의 버스의 2상태 일관성 프로토콜은 임의의 캐시 라인의 공유된 복사본을 가지는 것으로 간주된다. 이는 종종 일관성 메모리의 크기를 감소시키는데, 이는 모든 캐시 라인이 공유된 것으로 처리되는 경우, 일관성 메모리는 단지 무효 및 점유 상태의 데이터 값과 연관된 레코드만을 유지하면 되기 때문이다. 버스가 공유된 데이터에 대하여 표준 판독 트랜잭션을 수행하는 경우, 공유된 상태 정보는 일관성 메모리에 저장되지 않는다. 이것은 일관성 메모리 내의 일관성 상태 정보의 슈퍼세트를 유지하는데 있어서 발생하는 문제점을 감소시킨다.
그러나 이러한 2상태 시스템에서, 모든 배타적 판독 트랜잭션 또는 무효화 트랜잭션은 캐시 일관성을 보장하기 위해 하나 이상의 크로스 버스 트랜잭션을 요구한다. 이러한 크로스 버스 트랜잭션은 다른 버스가 실제로 무효화 커맨드의 배타적 판독 트랜잭션과 연관된 데이터의 공유된 버전을 포함하는 지를 살펴볼 필요가 있다. 이중 버스 시스템에서, 2상태 프로토콜은 전체적 성능을 향상시키는데, 2개 이상의 버스를 가지는 경우 2상태 프로토콜의 이점은 작업 로드(work load)의 특성에 따라 많이 달라진다.
본 발명의 Pentium Pro 프로세서(112)는 자신의 내부 캐시 메모리(114)에 저장된 캐시 라인에 대한 정확한 일관성 상태 정보를 출력하지 않는다. 예를 들어, 내부 캐시 메모리(114)는 캐시 라인이 폐기되었다는 신호를 발생하지 않고 수정되지 않은 캐시 라인을 폐기한다. 본 발명의 실시예에서, 각 태그 메모리(212)는 현재의 일관성 상태 정보를 출력하지 않는 내부 캐시 메모리(114) 내의 캐시 일관성을 보장하는데 독창적으로 적용된다.
각 태그 메모리(212)는 특정 버스와 연결된 내부 캐시 메모리(114)에서 현재 보유하고 있을 가능성이 있는 캐시 라인 어드레스의 슈퍼세트를 유지함으로써 캐시 일관성을 보장한다. 예를 들어, 좌측 태그 메모리(212)는 프로세서(112a) 및 프로세서(112b)의 내부 캐시 메모리(114)에서 보유하고 있을 가능성이 있는 캐시 라인 어드레스의 슈퍼세트를 유지한다. 캐시 라인 어드레스의 슈퍼세트가 반드시 정확한 태그 상태 정보를 포함해야 하는 필요가 있는 것은 아니기 때문에, 캐시 메모리(114)가 사실상 캐시 라인을 폐기하는 경우, 태그 메모리(212)는 캐시 메모리(114) 내의 특정 캐시 라인이 공유 상태임을 표시할 수 있다. 다른 경우, 캐시 메모리(114)가 사실상 캐시 라인을 주 메모리(132)에 재기록하는 경우, 태그 메모리(212) 내의 캐시 라인 어드레스 슈퍼세트는 캐시 메모리(114) 내의 특정 캐시 라인이 수정된 상태임을 표시할 수 있다.
캐시 라인 어드레스의 슈퍼세트를 유지하기 위해, 본 발명의 실시예의 태그 메모리(212)는 포함 규칙(inclusion rule)이라 불리는 규칙을 사용한다. 포함 규칙은 특정 버스와 연결된 캐시 메모리(114)에 저장된 캐시 라인 어드레스가 항상 버스에 할당된 태그 메모리(212) 내의 캐시 라인 어드레스의 서브세트임을 보장한다. 캐시 라인 어드레스가 태그 메모리(212) 중의 하나로부터 삭제되면, 포함 규칙은 연관된 캐시 메모리(114)에게 그들의 캐시 메모리 내의 캐시 라인을 무효화하도록 지시한다.
예를 들어, 좌측 태그 메모리(212a)가 새로운 캐시 라인 어드레스를 유지하기 위한 메모리 용량 또는 연관성(associativity)을 가지고 있지 않는 경우에는, 좌측 태그 메모리(212)로부터 존재하는 하나의 캐시 라인 어드레스(구 캐시 라인 어드레스)를 배출시킴으로써 새로운 캐시 라인 어드레스를 위한 공간을 좌측 태그 메모리(212a) 내에 형성해야 한다. 구 캐시 라인 어드레스가 무효 상태인 경우, 버스와 연결된 캐시 메모리(114)는 더 이상 구 캐시 어드레스와 연관된 캐시 라인을 사용하지 않으며, 좌측 일관성 필터(200a)는 단순히 구 캐시 라인 어드레스를 새로운 캐시 라인 어드레스로 교체한다.
그러나 구 캐시 라인 어드레스가 공유 또는 점유 상태인 경우에는, 캐시 메모리(114)가 구 캐시 라인 어드레스를 무효화할 때까지, 좌측 일관성 필터(200a)는 좌측 태그 메모리(212a)로부터 구 캐시 라인 어드레스를 배출할 수 없다. 전술한 바와 같이, 좌측 태그 메모리(212a)는 좌측 버스(102)와 연결된 캐시 메모리(114) 내의 캐시 라인 어드레스의 슈퍼세트를 유지해야 하며, 따라서 좌측 태그 메모리(212a)가 구 캐시 라인 어드레스를 새로운 캐시 라인 어드레스로 교체하기 전에 캐시 메모리(114)내의 구 캐시 라인 어드레스가 먼저 무효화되어야 한다.
아래에서 보다 상세하게 기술하듯이, 좌측 일관성 필터(200a)는 무효화 버스 트랜잭션을 수행함으로써 좌측 버스(102)와 연결된 캐시 메모리(114) 내의 구 캐시 라인 어드레스를 무효화시킨다. 캐시 메모리(114)에게 구 캐시 라인 어드레스를 내부적으로 무효화하도록 지시하는 무효화 버스 트랜잭션이 좌측 버스 상에서 발생한다.
그러나 때로는 구 캐시 라인이 점유 상태가 될 수 있으며, 캐시 메모리(114) 중의 하나가 구 캐시 라인을 수정했을 수도 있다. 어떤 캐시 메모리(114)가 구 캐시 라인을 수정하면, 버스 판독 무효화 라인(BRIL) 트랜잭션이 수행된다. 캐시 메모리(114)가 구 캐시 라인을 수정하면, 버스 판독 무효화 라인 트랜잭션 동안, 캐시 메모리(114)는 버스 트랜잭션의 커맨드를 수신하고, 구 캐시 라인 어드레스에 해당하는 수정된 캐시 라인을 주 메모리(132)에 재기록한다. 수정된 캐시 라인을 주 메모리에 재기록한 후에, 좌측 일관성 필터(200a)는 좌측 태그 메모리(212a) 내의 구 캐시 라인 어드레스를 새로운 캐시 라인 어드레스로 대체한다. 따라서 때로는 태그 메모리(212) 내의 캐시 라인 어드레스의 슈퍼세트를 유지하기 위해, 캐시 메모리(114)는 구 캐시 라인이 대체되기 전에 수정된 데이터를 주 메모리(132)에 재기록해야 한다.
캐시 라인 어드레스(400) 및 각 태그 메모리(212)의 포맷이 도 4에 도시되어 있다. 캐시 라인 어드레스(400)는 개념적으로 2개의 부분으로 분할된다. 제1 부분은 태그 페이지 어드레스(402)를 포함하며, 제2 부분은 오프셋 어드레스(404)를 포함한다. 본 발명의 실시예에서, 태그 메모리(212) 내의 태그 엔트리(410)의 개수는 태그 페이지의 크기를 정의한다. 바람직하게, 각 태그 메모리(212)는 일정한 개수의 태그 엔트리(410)를 가지며, 따라서 동일한 크기의 태그 페이지를 가진다.
본 발명의 실시예에서, 태그 페이지 어드레스(402)는 캐시 라인 어드레스(400)를 포함하는 태그 페이지를 식별하며, 오프셋 어드레스(404)는 태그 페이지 내의 캐시 라인 어드레스(400)의 위치를 식별한다. 특히 캐시 라인 어드레스(400) 내의 상위 비트(high-order bit)는 태그 페이지 어드레스를 식별하고, 하위 비트(lower-order bit)는 오프셋 어드레스(404)를 식별한다.
일반적으로, 하위 비트는 태그 페이지 내의 캐시 라인 어드레스의 위치를 식별하기 때문에, 이 하위 비트는 인덱스(index)라 지칭된다. 예를 들어, 제1 캐시 라인 어드레스(400)에 있어서, 상위 어드레스 비트는 태그 페이지 어드레스(402)를 식별하고, 하위 어드레스 비트는 태그 페이지 내의 캐시 어드레스 라인(400)의 위치를 식별한다.
태그 페이지의 크기가 변할 수 있기 때문에, 태그 페이지 어드레스(402) 및 오프셋 어드레스(404)에 할당된 비트의 개수 또한 변할 수 있다. 본 발명의 실시예에서, 좌측 태그 메모리(212a) 및 우측 태그 메모리(212b)는 216개의 엔트리를 포함하며, 오프셋 어드레스(404)는 하위 16 비트의 캐시 라인 어드레스(400)를 포함하며, 태그 페이지 어드레스(402)는 상위 15 비트의 캐시 라인 어드레스(400)를 포함한다. 전술한 바와 같이, I/O 태그 메모리(212c)는 크기가 더 작으며, 따라서 적은 수의 엔트리를 포함한다. 본 발명의 실시예에서, I/O 태그 메모리(212)는 32개의 엔트리를 포함한다.
다음의 표 1은 태그 메모리(212)의 서로 다른 크기 및, 이에 해당하는 캐시 라인 어드레스(400) 내의 태그 페이지 어드레스(402) 및 오프셋 어드레스(404)의 크기를 예시한다.
[표 1]
태그 메모리의크기 | 태그 페이지어드레스의 폭 | 오프셋의 폭 |
216엔트리 | 15 비트 | 16 비트 |
217엔트리 | 14 비트 | 17 비트 |
218엔트리 | 13 비트 | 18 비트 |
219엔트리 | 12 비트 | 19 비트 |
본 발명의 실시예에서, 일관성 필터(200)는 직접 매핑 기술(direct mapping techniques)을 사용하여 태그 메모리(200) 내에 캐시 라인 어드레스(400)를 저장한다. 직접 매핑 기술은 각 캐시 라인 어드레스(400)가 하나의 특정 태그 엔트리(410)에 매핑됨을 의미한다. 도 4는 216개의 태그 엔트리(410)를 포함하는 태그 메모리(212)의 예를 도시한다. 각 태그 엔트리(410)는 캐시 라인 어드레스(400)의 태그 페이지 어드레스(402)를 포함한다. 또한 각 태그 엔트리(410)는 일관성 상태 비트(412) 및 패리티 비트(414)를 포함한다. 패리티 비트(414)는 잘 알려진 패리티 오류 검출을 제공한다.
프로세서(112)가 캐시 라인 어드레스(400)를 액세스하면, 일관성 필터(200)는 오프셋 어드레스(404)를 사용하여 특정 태그 엔트리(410)를 식별한다. 그 후 일관성 필터(200)는 태그 페이지 어드레스(402)를 식별된 태그 엔트리(410)에 저장한다. 예를 들어, 좌측 버스(102) 상의 제1 프로세서(112a)가 제1 태그 페이지 내의 제1 캐시 라인 어드레스(400)를 액세스하면, 좌측 일관성 필터(200a)는 캐시 라인 오프셋 어드레스(404)를 사용하여, 좌측 태그 메모리(212a) 내에 제1 태그 엔트리(410)를 위치시킨다. 그 후 좌측 일관성 필터(212a)는 좌측 태그 메모리(212a) 내의 제1 태그 엔트리(410)에 태그 페이지 어드레스(402)를 저장한다.
태그 엔트리(410)는 캐시 라인 어드레스(400)의 태그 페이지 어드레스(402)를 저장하는 것 이외에도, 또한 캐시 라인 어드레스(400)에 대한 하나의 일관성 상태 비트 세트(412)를 저장한다. 바람직하게, 태그 엔트리(410) 내의 일관성 상태 비트(412)는 3개의 일관성 상태―무효 상태, 공유 상태 또는 점유 상태―를 포함하는 것이 바람직하다. 이들 3개의 일관성 상태는 2개의 일관성 상태 비트(412)로 해 표현된다. 다음의 표 2는 일관성 상태 비트(412)로 할당된 일관성 상태를 정의한다.
[표 2]
일관성 상태 비트 | 일관성 상태 |
0 | 무효화 |
1 | 공유 |
10 | 점유 |
11 | (보류) |
2. 태그 제어장치
캐시 라인 어드레스(400)를 태그 메모리(212)에 직접 매핑하기 위한 제어 로직이 태그 제어장치(300)에 위치한다. 좌측 버스(102)로 할당된 태그 제어장치(300)를 좌측 태그 제어장치(300a)라 지칭하고, 우측 버스(104)로 할당된 태그 제어장치(300)를 우측 태그 제어장치(300b)라 지칭하고, I/O 버스(106)로 할당된 태그 제어장치(300)를 I/O 태그 제어장치(300c)라 지칭한다. 예를 들어, 좌측 태그 제어장치(300)는 캐시 라인 어드레스(400)를 좌측 태그 메모리(212a)에 직접 매핑하는 직접 매핑 로직을 포함한다.
태그 제어장치(300) 내의 제어 로직은 캐시 라인을 캐시 메모리(114)에 직접 매핑하기 위해 사용되는 제어 로직과 유사하다. 따라서 태그 제어장치(300)는 당업자에게 널리 알려진 직접 매핑 로직을 사용한다. 그러나 이는 4중 세트 어소시어티브 매핑(four-way set associative mapping) 기술을 사용하는 Pentium Pro 프로세서(112) 내의 캐시 제어 로직과는 다르다.
아래에서 상세하게 기술하듯이, 일관성 필터(200)는 부분적으로 태그 메모리(212) 내의 일관성 상태 정보에 기초하여 크로스 버스 트랜잭션을 수행할 것인 지의 여부를 결정한다. 본 발명의 실시예에서, 또한 각 태그 제어장치(300)는 그 자신의 태그 메모리(212) 및 다른 버스에 할당된 태그 메모리(212)와 연결된다. 각 태그 제어장치(300)는 태그 메모리(212) 내의 태그 엔트리(410)를 액세스할 수 있으며, 각 태그 제어장치(300)는 할당된 태그 메모리(212) 내의 태그 엔트리만을 수정할 수 있다. 예를 들어, 좌측 태그 제어장치(300a)는 좌측 태그 메모리(212a), 우측 태그 메모리(212b) 및 I/O 태그 메모리(212c) 내의 태그 엔트리(410)를 액세스할 수 있으며, 좌측 태그 제어장치(300)는 좌측 태그 메모리(212a) 내의 태그 엔트리(410)만을 수정할 수 있다.
예를 들어, 좌측 버스(102)가 특정 캐시 라인 어드레스(400)에 대한 버스 트랜잭션을 전송하면, 좌측 태그 제어장치(300a)는 캐시 라인 어드레스(400)를 사용하여 우측 태그 메모리(212a) 및 I/O 태그 메모리(212c)로부터 대응하는 일관성 상태 비트(412)를 얻는다. 이 예에서는, 캐시 라인 어드레스(400)를 우측 태그 메모리(212b)에 직접 매핑하여, 우측 일관성 상태 비트를 구한다. 또한 캐시 라인 어드레스를 I/O 태그 메모리(212c)에 직접 매핑하여, I/O 일관성 상태 비트(412)를 구한다. 이하의 설명에서는, 다른 버스에 할당된 다른 태그 메모리(212)로부터 구해진 일관성 상태 비트(412)를 리모트(remote) 상태 비트(412)라 지칭한다. 좌측 태그 제어장치(300a)가 리모트 일관성 상태 비트(412)를 얻으면, 좌측 태그 제어장치(300a)는 이 리모트 일관성 상태 비트(412)를 사이클 인코더(302)로 전송한다.
3. 사이클 인코더
각 사이클 인코더(302)는 어떤 종류의 버스 트랜잭션이 버스(102, 104, 또는 106) 중의 하나의 버스 상에서 발생하는 지를 결정한다. 좌측 버스(102)를 모니터하기 위해 할당된 사이클 인코더(302)를 좌측 사이클 인코더(302a)라 지칭한다. 우측 버스(104)를 모니터하기 위해 할당된 사이클 인코더(302)를 우측 사이클 인코더(302b)라 지칭하며, I/O 버스(102)를 모니터하기 위해 할당된 사이클 인코더(302)를 I/O 사이클 인코더(302c)라 지칭한다. 그리하여 각 사이클 인코더(302)는 할당된 버스(102, 104, 또는 106)와 연관된 어드레스 및 제어 라인(108)을 모니터한다.
바람직하게 사이클 인코더(302)는 버스(102, 104, 및 106) 상에서 구현된 특정 버스 프로토콜과 관련된 공지된 기술을 사용하여, 버스 트랜잭션이 주 메모리(132)로부터 데이터를 판독하는지, 또는 주 메모리(132)에 데이터를 기록하는 지를 결정하기 위해 버스 제어 라인을 모니터한다. 본 발명의 실시예에서, 사이클 인코더(302)는 공지된 기술을 사용하여 Pentium Pro 버스 트랜잭션이 주 메모리(132)로부터 데이터를 판독하고 주 메모리(132)에 기록하는 지를 결정한다. 사이클 인코더(302)가 자신에 할당된 버스 상에서 발생하는 버스 트랜잭션의 형태를 결정하면, 사이클 인코더(302)는 버스 사이클의 형태를 규칙표(304)로 전송한다.
4. 규칙표
도 3에 도시된 규칙표(304)에 초점을 맞춰 설명하면, 규칙표는 캐시 일관성을 보장하기 위해 언제 크로스 버스 트랜잭션을 수행하는 지를 결정한다. 본 발명의 실시예에서, 좌측 버스(102)로 할당된 규칙표(304)를 좌측 규칙표(304a)라 지칭하고, 우측 버스(102)로 할당된 규칙표(304)를 우측 규칙표(304b)라 지칭하며, I/O 버스로 할당된 규칙표(304)를 I/O 규칙표(304c)라 지칭한다.
각 규칙표(304)는 사이클 인코더(302)로부터 구해진 리모트 일관성 상태 비트(412) 및 버스 트랜잭션 형태 정보를 평가한다. 본 발명의 실시예에서, 각 규칙표(304)는 SRAM에 위치한 큰 규모의 진리표(truth table)이다. 캐시 일관성을 보장하기 위해 실행될 필요가 있는 크로스 버스 트랜잭션 및 로컬 버스 트랜잭션의 형태는 각 규칙표 메모리 위치에 저장되어 있다.
또한 규칙표(304)는 스누핑 동작을 수행한다. 본 발명의 실시예에서, 리모트 태그 메모리가 캐시 라인의 공유된 복사본을 가지고 있음을 표시하면 규칙표(304)는 HIT# 신호를 인가할 수 있다. 인가된 HIT# 신호는 리모트 버스 상의 하나 이상의 캐시 메모리가 캐시 라인의 공유된 복사본을 가지고 있음을 표시한다. 규칙표(304)는 HIT# 신호를 인가하여 코드 판독 트랜잭션을 공유 상태로 설정할 수 있으며, 그 결과 다른 버스 상에서 앞으로 실행될 코드 판독 트랜잭션은 크로스 버스 트래픽을 발생시키지 않는다.
캐시 일관성을 보장할 필요가 있는 특정 크로스 버스 트랜잭션 코드는 시스템 액세스 제어장치(130)의 제어 하의 규칙표(304)에 로드된다. 시스템이 개시되는 동안, 본 발명의 실시예의 다중버스 시스템(100)은 크로스 버스 트랜잭션 코드를 규칙표(304)에 로드한다. 크로스 버스 트랜잭션 코드를 수정할 수 있기 때문에, 크로스 버스 트랜잭션은 서로 다른 다중버스 시스템(100)에 있어서 융통성있게 튜닝될 수 있다.
B. 버퍼 관리자
도 1 및 도 2에 도시된 버퍼 관리자(210), 중앙 요청 리스트(208), 및 데이터 인터페이스 버퍼(134)는 다중버스간의 통신을 최적화한다. 본 발명의 실시예에서, 중앙 요청 리스트(208), 버퍼 관리자(210) 및 데이터 인터페이스 버퍼(134)는 모든 버스(102, 104, 및 106)에 의해 액세스 가능한 (도시되지 않은) 메모리 셀의 다중포트화 영역(multiported pool)을 포함한다. 바람직하게, 임의의 버스(102, 104, 또는 106)는 독립적인 접속 경로(connection path)를 사용하지 않고서도 다른 모든 버스(102, 104, 또는 106)로부터 데이터를 판독하거나 데이터를 기록할 수 있다.
본 발명의 실시예에서, 각 버스 트랜잭션과 연관된 정보는 3개의 부분으로 분할되어, 3개의 서로 다른 메모리 셀―어드레스 셀, 요청 셀 및 데이터 셀―에 저장된다. 따라서 각 데이터 셀, 각 요청 셀, 각 어드레스 셀간에는 1대1 대응이 존재한다. 아래에서 상세하게 기술하듯이, 어드레스 셀은 버퍼 관리자(210)에 위치하며, 요청 셀은 중앙 요청 리스트(208)에 위치하며, 데이터 셀은 데이터 인터페이스 버퍼(134)에 위치한다.
본 발명의 실시예에 따른 버퍼 관리자(210)가 도 5a 및 도 5b에 도시되어 있다. 도 5a에 초점을 맞춰 설명하면, 버퍼 관리자(210)는 어드레스 셀 영역(address cell pool; 500), 어드레스 셀 우선순위 인코더(address cell priority encoder; 504), 좌측 FIFO 메모리(506a), I/O FIFO 메모리(506b) 및 우측 FIFO메모리(506c)를 포함한다. 각 어드레스 셀(500)은 다중포트화되어 있으며, 어드레스 셀 우선순위 인코더(504), 버스 마스터(202), 버스 슬레이브(204), 메모리 제어장치(206)와 통신하며, 도 5b에 도시되어 있듯이 비교기(510)와도 통신한다.
본 발명의 실시예에 따른 버퍼 관리자(210)는 64개의 어드레스 셀(500)을 포함한다. 도 5a에 도시되어 있듯이, 각 어드레스 셀(500)은 "사용중(in-use)" 비트(502), 메모리 어드레스(504) 및 데이터 셀 상태 비트(505) 세트를 포함한다. 사용중 비트(502)는 특정 어드레스 셀(500)이 사용가능한 지의 여부를 표시한다. 본 발명의 실시예에서, 사용중 비트(502)는 어드레스 셀(500)이 사용 중인지 아니면, 미사용 상태인지를 표시하도록 설정되어 있다. 메모리 어드레스(504)는 메모리 어드레스(504)를 포함하며, 데이터 셀 상태 비트(505)는 버스 트랜잭션의 형태를 표시한다. 특히 데이터 셀 상태 비트(505)는 무효화 버스 트랜잭션이 수행되는 지의 여부를 표시한다.
어드레스 셀 우선순위 인코더(504)에 초점을 맞춰 설명하면, 어드레스 셀 우선순위 인코더(504)는 어느 어드레스 셀(500)이 사용중이며, 어는 어드레스 셀(500)이 새로운 버스 트랜잭션을 수신할 수 있는 미사용 상태의 어드레스(500)인지를 결정한다. 본 발명의 실시예에서, 어드레스 셀 우선순위 디코더(504) 내의 로직은 각 어드레스 셀(500) 내의 사용중 비트(502)를 평가함으로써 미사용 상태의 어드레스 셀(500)을 결정한다. 사용중 비트(502)가 설정되면, 어드레스 셀(500)은 사용 중 상태가 된다. 사용중 비트(502)가 설정되지 않으면, 어드레스 셀은 미사용 상태가 된다. 미사용 상태의 셀은 라운드 로빈 방식(round robin fashion)으로 선택된다.
어드레스 셀 우선순위 인코더(504)는 미사용 상태의 어드레스 셀(500)을 결정할 뿐만이 아니라, 미사용 상태의 어드레스 셀(500)을 서로 다른 버스(102, 104, 및 106)로 할당한다. 바람직하게, 어드레스 셀 우선순위 인코더(504)는 라운드 로빈 방식을 사용하여 미사용 상태의 어드레스 셀(500)을 서로 다른 버스(102, 104, 및 106)로 할당한다. 아래에서 보다 상세하게 기술하고 있듯이, 버스 트랜잭션 정보가 미사용 상태의 어드레스 셀(500)에 저장되면, 사용 중 비트(502)는 이 어드레스 셀(500)이 미사용 상태가 아님을 표시하도록 설정된다.
예를 들어, 제1, 제2, 및 제3 어드레스 셀(500)을 미사용 상태로 가정한다. 우선순위 인코더(504)는 제1, 제2, 및 제3 어드레스 셀(500)이 미사용 상태임을 결정하고, 제1 어드레스 셀(500)을 좌측 버스(102)로 할당하고, 제2 어드레스 셀(500)을 우측 버스(104)로 할당하고, 제3 어드레스 셀(500)을 I/O 버스(106)로 할당한다. 제4 어드레스 셀(500)이 미사용 상태가 되면, 어드레스 셀 우선순위 인코더(504)는 좌측 버스(102)로 역순환(cycles back)시키고, 제4 어드레스 셀(500)을 좌측 버스(500)로 할당한다. 본 발명의 실시예에서는 어드레스 셀 우선순위 인코더(504)가 미사용 상태의 어드레스 셀을 서로 다른 버스로 할당하지만, 당업자는 어드레스 셀 우선순위 인코더(504)가 광범위한 할당 방식을 사용하여 미사용 상태의 어드레스 셀(500)을 서로 다른 버스(102, 104, 및 106)로 할당할 수 있다는 것을 이해하게 될 것이다.
버퍼 관리자의 FIFO 메모리(506)에 초점을 맞춰 설명하면, FIFO 메모리(506)는 할당된 어드레스 셀(500)을 식별하는 어드레스 셀 식별자(identifier)를 임시로 저장한다. 어드레스 셀 식별자는 할당된 어드레스 셀(500)의 메모리 위치를 포함하는 데이터 변수이다. 본 발명의 실시예에서, 어드레스 셀 식별자는 64개의 어드레스 셀(504)을 식별한다. 아래에서 보다 상세하게 기술하고 있듯이, 버스 마스터(202)는 FIFO 메모리(506) 내의 어드레스 셀 식별자를 사용하여, 어드레스 셀 식별자에 의해 식별되는 어드레스 셀 메모리 위치를 액세스한다.
본 발명의 실시예에서, 각 FIFO 메모리(508)는 버스 슬레이브(204) 및 일관성 필터(200)로 출력한다. 즉 좌측 FIFO 메모리(506a)는 좌측 버스 슬레이브(204a) 및 좌측 일관성 필터(200a)로 출력한다. 우측 FIFO 메모리(506b)는 우측 버스 슬레이브(204b) 및 우측 일관성 필터(200b)로 출력하고, I/O FIFO 메모리(506c)는 I/O 버스 슬레이브(204c) 및 I/O 일관성 필터(200c)로 출력하고, 버스 슬레이브(204) 중의 하나의 슬레이브 또는 일관성 필터(200) 중의 하나의 필터가 다른 버스에 버스 트랜잭션을 전송하기를 희망하면, 이들 장치는 이들의 할당된 FIFO 메모리(506)로부터 어드레스 셀 식별자를 구한다.
그리하여 본 발명의 실시예에 의한 버퍼 관리자(210)는 모든 버스(102, 104, 및 106)와 상호접속하는 어드레스 셀(500) 영역을 제공한다. 개별적인 버스 경로 대신에 이러한 하나의 어드레스 셀 영역(500)을 제공하는 것은 결과적으로 시스템 구성을 간단하게 한다. 또한 어드레스 셀 우선순위 인코더(504) 및 FIFO 메모리(506)는 미사용 상태의 어드레스 셀(500)이 버스(102, 104, 및 106) 사이에 균등하게 분배되도록 한다.
도 5b에 도시된 본 발명의 다른 태양에서, 본 발명의 실시예에 의한 버퍼 관리자(210)는 어드레스 충돌(conflict)을 식별하는 복수의 어드레스 비교기(510)를 포함한다. 2개의 서로 다른 버스 트랜잭션이 동일한 데이터 값과 연관되어 있으면, 일반적으로 거의 동시에 어드레스 충돌이 발생한다. 이러한 상황에서, 2개의 어드레스 셀(500)은 어드레스 셀(500) 내의 2개의 서로 다른 버스 트랜잭션에 대하여, 동일한 메모리 어드레스(504)를 포함할 수 있다. 이러한 상황에서는 부적절한 버스 트랜잭션이 발생할 수 있다.
하나의 버스 슬레이브(204)가 버스 트랜잭션을 수신하면, 버스 슬레이브(204)는 상기 버스 트랜잭션과 연관된 어드레스를 버스 슬레이브(204)와 동일한 버스에 할당된 어드레스 비교기(510)에 전송한다. 어드레스 비교기(510)는 새로운 메모리 어드레스(504)를 사용중인 어드레스 셀(500)에 존재하는 모든 메모리 어드레스(504)와 비교한다. 사용중인 어드레스 셀(500) 내에서 동일한 메모리 어드레스가 검출되면, 어드레스 비교기(510)는 어드레스 충돌이 발생했다는 것을 버스 슬레이브(204)에 통지하기 위해 출력을 발생시킨다. 그 후 버스 슬레이브(204)는 프로세서(112)에 게 어드레스 충돌을 발생시킨 버스 트랜잭션을 개시하는 재시도(retry) 신호를 전송한다. 이후에 프로세서(112)는 버스 트랜잭션을 개시다.
본 발명의 실시예에서, 어드레스 비교기(510) 세트가 각 버스에 할당된다. 즉 좌측 어드레스 비교기 세트(510a)가 좌측 버스(102)에 할당되고, 우측 어드레스 비교기 세트(510c)는 우측 버스(104)에 할당되며, I/O 어드레스 비교기 세트(510c)는 I/O 버스(106)에 할당된다. 버스 슬레이브(204)가 새로운 메모리 어드레스(504)를 수신하면, 버스 슬레이브(204)는 이 새로운 메모리 어드레스(504)를 어드레스 비교기(510)에 전송한다. 그후 어드레스 비교기(501)는 사용중인 어드레스 셀(500) 내에 존재하는 메모리 어드레스(504)를 평가하여 어드레스 충돌이 존재하는 지의 여부를 결정한다.
예를 들어, 우측 버스 슬레이브(202b)는 I/O 버스(106) 상에서 하나의 I/O 브리지(120) 중 하나에 입력되는 I/O 트랜잭션을 수신할 수 있다. 우측 버스 슬레이브(202b)는 I/O 트랜잭션과 연관된 메모리 어드레스를 수신하는 즉시, 메모리 어드레스를 우측 어드레스 비교기(510c)로 전송한다. 우측 어드레스 비교기(510c)는 이 메모리 어드레스를 사용중인 어드레스 셀(500) 내에 존재하는 메모리 어드레스(504)와 비교한다. 이 메모리 어드레스의 복사본이 사용중인 어드레스 셀(500) 내에 존재하면, 어드레스 비교기는 우측 버스 슬레이브(202b)에게 어드레스 충돌이 발생했다는 것을 통지하기 위해 신호를 재전송한다. 이 실시예에서, 우측 버스 슬레이브(202b)는 프로세서(112c 또는 112d)에게 이후에 I/O 트랜잭션을 재시도하도록 지시한다.
태그 메모리(212) 중의 하나의 메모리 내의 엔트리를 무효화하기 위한 무효화 버스 트랜잭션을 수행할 필요가 있는 경우, 그 버스가 사용중이 아닌 경우가 될 때까지 무효화 동작을 지연하는 것이 바람직하다. 이에 대해 하나의 방법은 버퍼 관리자 내에 구 캐시 라인 어드레스(무효화될 캐시 라인 어드레스)를 저장하는 것이다. 본 발명의 실시예에서, 버퍼 관리자(210) 내의 어드레스 셀(500)은 캐시 라인의 전체 메모리 어드레스를 포함하며, 여기서 전체 메모리 어드레스는 캐시 라인과 연관된 태그 페이지 어드레스(402) 및 오프셋 어드레스(404)를 포함한다. 구 캐시 라인 어드레스를 어드레스 셀(500) 중의 하나의 어드레스 셀에 더하는 것은 구 캐시 라인 어드레스가 실제로 무효화되지 않았음에도 불구하고 다중버스 시스템(100)이 새로운 버스 트랜잭션을 처리할 수 있도록 한다.
다른 버스 트랜잭션이 버퍼 관리자(210) 내에 존재하는 구 캐시 라인 어드레스(400)와 연관되어 있다고 가정하면, 버스 트랜잭션이 버스 슬레이브(204) 중의 하나의 슬레이브에 의해 수신되는 경우, 버스 슬레이브(204)는 이러한 버스 트랜잭션과 연관된 어드레스를 어드레스 비교기(510)에 전송한다. 어드레스 비교기(510)는 버스 트랜잭션과 연관된 오프셋 어드레스(404)를 구 캐시 라인 어드레스의 오프셋 어드레스(404)와 비교한다. 어드레스 충돌이 존재하면, 비교기는 데이터 셀 상태 비트(505)를 평가한다. 데이터 셀 상태 비트(505)가 구 캐시 라인 어드레스를 무효화할 필요가 있음을 표시하면, 구 캐시 라인 어드레스(400)를 무효화할 수 있을 때까지 새로운 버스 트랜잭션을 재시도한다. 이러한 접근방법 이외의 다른 방법에 대해서는 "다른 실시예"라는 이름 하의 장에서 상세하게 기술한다.
C. 중앙 요청 리스트
도 6에 도시된 본 발명의 실시예에 의한 중앙 요청 리스트(208)에 초점을 맞춰 설명하면, 중앙 요청 리스트(208)는 요청 셀 영역(600), 좌측 버스 우선순위 인코더(602a), 우측 버스 우선순위 인코더(602b), 및 I/O 버스 우선순위 인코더(602c)를 포함한다. 각 요청 셀(600)은 다중포트화되며, 각 어드레스 셀 우선순위 인코더(602)와 통신한다. 본 발명의 실시예에 의한 중앙 요청 리스트(208)에서는, 64개의 요청 셀(600)이 존재한다. 또한 64개의 어드레스 셀(500)과 64개의 요청 셀(600) 사이에는 1대1 대응이 존재한다.
각 요청 셀(600)은 타겟 버스 식별자(604), 버스 트랜잭션 코드(606), 및 오너(owner) 버스 식별자(608)를 포함한다. 타겟 버스 식별자(604)는 목적지 버스(102, 104, 106)를 식별한다. 아래에서 보다 상세하게 기술하고 있듯이, 버스 식별자(604)가 미리 정의되어 있는 것은 아니며, 오히려 본 발명의 실시예에서는 버스 식별자(604)를 우측 버스(102), 좌측 버스(104) 또는 I/O 버스(106) 중의 하나를 식별할 필요가 있는 것으로 설정한다. 예를 들어, 타겟 버스 식별자(604)는 버스 트랜잭션 코드(606)가 우측 버스(104)에 대한 것인가를 지정할 수 있다. 한편 버스 트랜잭션 코드는 목적지 버스 상에서 수행될 버스 트랜잭션의 형태를 식별한다. 본 발명의 실시예에서, 버스 마스터(202)는 버스 트랜잭션 코드(606)에 의해 식별된 버스 트랜잭션을 수행한다. 오너 버스 식별자(owner bus identifier; 608)는 발신(originating) 버스를 식별한다. 예를 들어, 오너 버스 식별자(608)는 좌측 버스(102) 상에서 발신된 버스 트랜잭션 코드(606)를 표시할 수 있다.
버스 우선순위 인코더는 각 요청 셀(600) 내의 타겟 버스 식별자(604)를 평가하여, 어느 요청 셀이 서로 다른 버스를 지정하는 지를 결정한다. 그후, 버스(102, 104, 및 106) 중의 하나의 버스와 연관된 버스 마스터(202)는 특정 요청 셀(600) 내에서 식별된 버스 트랜잭션을 수행한다. 예를 들어, 좌측 버스 우선순위 인코더(602)는 모든 타겟 버스 식별자(604)를 평가하여, 어느 요청 셀(600)이 좌측 버스(102)에 대한 것인지를 식별한다. 우측 버스 우선순위 인코더(602b)는 모든 타겟 버스 식별자(604)를 평가하여, 요청 셀(600)이 우측 버스(104)에 대한 것인지를 식별한다. I/O 버스 우선순위 인코더(602c)는 모든 타겟 버스 식별자(604)를 평가하여, 어느 요청 셀(600)이 I/O 버스(106)에 대한 것인지를 식별한다.
목적지 버스(102, 104, 및 106)를 식별하는 것 이외에, 또한 각 버스 우선순위 인코더(602)는 특정 버스(102, 104, 또는 106)와 연관된 요청 셀(500) 중 가장 높은 우선순위를 가지는 요청 셀을 결정한다. 본 발명의 실시예에서, 각 버스 우선순위 인코더(602)는 라운드 로빈 로직을 사용하여 우선순위가 가장 높은 요청 셀(600)을 결정한다. 각 버스 우선순위 인코더(602)가 우선순위가 가장 높은 요청 셀(600)을 할당된 버스에 전송하면, 각 버스 우선순위 인코더(602)는 각 요청 셀(600)에 대하여 우선순위를 순환식으로 할당한다. 라운드 로빈 로직은 각 버스 우선순위 인코더(602)가 가장 높은 우선순위를 순차적으로 모든 버스 요청 셀(600)에 할당한다. 이러한 라운드 로빈 회로는 당업자에게 공지되어 있다.
예를 들어, 우측 버스 우선순위 인코더(602b)가 우측 버스(104)에 대하여 2개의 요청 셀(600)을 식별했다고 가정한다. 우측 버스 우선순위 인코더(602b)는 제1 요청 셀(600)에 가장 높은 우선순위를 할당하고, 제1 요청 셀 식별자를 우측 버스 마스터(202b)로 전송한다. 그리고 나서 우측 버스 우선순위 인코더(602b)는 제2 요청 셀(600)에 가장 높은 우선순위를 할당하고, 제2 요청 셀 식별자를 우측 버스 마스터(202b)로 전송한다. 우측 버스 우선순위 인코더(602b)가 우측 버스(104)에 할당된 요청 셀(600)의 끝에 도달하면, 우측 버스 우선순위 인코더는 요청 셀(500) 영역의 처음으로 되돌아간다.
그리하여 중앙 요청 리스트(208)는 모든 버스(102, 104, 및 106)를 상호연결시키는 요청 셀(600) 영역을 제공한다. 개별적인 버스 연결 경로와 비교하여, 이러한 요청 셀(600) 영역은 결과적으로 시스템 구성을 간단하게 한다. 또한 중앙 요청 리스트(208) 내의 버스 우선순위 인코더(602)는 요청 셀 내의 각 버스 트랜잭션이 버스(102, 104 및 106)에 의해 수행됨을 보장한다.
Ⅳ. 데이터 인터페이스 버퍼
도 7에 도시된 본 발명의 실시예에 의한 데이터 인터페이스 버퍼(134)에 초점을 맞춰 설명하면, 데이터 인터페이스 버퍼(134)는 데이터 셀 영역(700)과, 제어 및 인덱싱 메커니즘(indexing mechanism; 702)을 포함한다. 각 요청 셀(600)은 다중포트화되며, 홀수 주 메모리 모듈(132a) 및 짝수 주 메모리 모듈(132b)과 연결된 데이터 라인(110a, 110b, 및 110c) 및 데이터 라인(142a 및 142b)과 통신한다. 본 발명의 실시예에 의한 중앙 요청 리스트(208)에는 64개의 데이터 셀(700)이 존재한다. 또한 64개의 데이터 셀(700), 64개의 요청 셀(600) 및 64개의 어드레스 셀(500) 사이에는 1대1 대응이 존재한다. 각 데이터 셀(700)은 버스 트랜잭션과 연관된 데이터 값을 포함한다.
제어 및 인덱싱 메커니즘(702)은 버스 슬레이브(204)로부터 DIB 제어 라인(140)을 수신한다. DIB 제어 라인(140)은 특정 데이터 셀(700) 및 버스(102, 104, 106) 중 하나의 버스를 식별한다. 예를 들어, I/O 버스 슬레이브(204)가 새로운 버스 트랜잭션을 어드레스 셀(500) 중 하나의 어드레스 셀과 요청 셀(600) 중 하나의 요청 셀에 더하면, I/O 버스 슬레이브(204)는 또한 새로운 버스 트랜잭션과 연관된 데이터를 해당 데이터 셀(700)에 더한다. 이 예에서, I/O 버스 슬레이브(204)는 적당한 데이터 셀(700)을 식별하기 위해 DIB 제어 라인을 인가한다. 그후, 제어 및 인덱싱 메커니즘(702)은 I/O 데이터 라인(110c)으로부터 데이터를 수신하기 위해 적당한 데이터 셀(700)을 인에이블한다.
그리하여 데이터 인터페이스 버퍼는 임의의 버스(102, 104, 106)에 의해 액세스 가능한 데이터 셀(700) 영역을 제공한다. 개별적인 버스 상호연결 대신에 데이터 셀 영역(700)을 제공하는 것은 결과적으로 시스템 구성을 간단하게 하며, 성능을 증가시킨다.
Ⅴ. 캐시 일관성 유지
일관성 필터(200)에 의해 모니터된 버스 트랜잭션은 버스 판독 라인(Bus Read Line; BRL) 커맨드 및 버스 판독 무효화 라인(Bus Read Invalidate; BRIL) 커맨드를 포함한다. 버스 판독 라인(BRL) 커맨드는 인스트럭션 코드의 캐시 라인 또는 주 메모리(132)로부터의 데이터를 무효화한다. 버스 판독 무효화 라인(BRIL) 커맨드는 캐시 라인을 무효화한다. 본 발명의 실시예에 의한 규칙표(304)가 이들 버스 커맨드에 적용되지만, 당업자는 규칙표(304)가 이와 다른 버스 커맨드에 적용될 수 있으며, 따라서 본 발명의 실시예의 버스 커맨드에 한정되지 않는다는 것을 인식하게 될 것이다.
A. 버스 판독 라인 커맨드 처리
도 8은 버스(102, 104 또는 106) 중의 하나의 버스가 버스 판독 라인(BRL) 커맨드를 실행하는 경우, 캐시 일관성을 유지하기 위한 순서도를 도시한다. BRL 커맨드가 실행되는 동안, 프로세서들(112) 중의 하나는 원하는 캐시 라인의 캐시 라인 어드레스(400)를 할당된 일관성 필터(200) 및 버스 슬레이브(204)로 전송한다.
버스 슬레이브(204)가 캐시 라인 어드레스를 수신하면, 버스 슬레이브(204)는 캐시 라인 어드레스를 동일한 버스에 할당된 어드레스 비교기(510)로 전송한다. 어드레스 비교기(510)는 오프셋 어드레스(404)를 사용중인 어드레스 셀(500) 내에 존재하는 메모리 어드레스(504)의 오프셋 부분과 비교하여, 어드레스 충돌이 존재하는 지의 여부를 결정한다. 또한 어드레스 비교기(510)는 데이터 셀 상태 비트(505)를 평가하여, 어드레스 충돌을 발생시키는 어드레스 셀(500)이 무효화 트랜잭션과 연관되어 있는 지를 관찰한다. 만약 연관되어 있다면, 어드레스 비교기(510)는 어드레스 충돌 신호를 버스 슬레이브(204)로 전송한다. 그후 버스 슬레이브(204)는 요청 프로세서(112a)에게 이후에 BRL 커맨드를 재시도할 것을 지시한다.
본 발명의 실시예의 단계(802)에서, 어드레스 비교기가 어드레스 충돌이 존재하지 않음을 표시하면, 사이클 인코더(302)는 버스(102, 104, 또는 106)가 BRL 커맨드를 수행하는 지의 여부를 결정한다. 또한 버스(102, 104, 또는 106)에 할당된 태그 제어장치(300)는 BRL 커맨드에서 식별된 캐시 라인 어드레스(400)를 사용하여, 다른 버스(102, 104, 또는 106)로 할당된 태그 메모리(212)(또는 리모트 태그 메모리(212)) 내의 캐시 라인 어드레스(400)를 액세스한다. 이 리모트 태그 메모리(212)는 리모트 캐시 라인 어드레스(400)가 무효 상태인지, 공유 상태인지, 또는 점유 상태인지를 표시하는 리모트 일관성 상태 비트(412)를 되돌린다.
단지 하나의 리모트 태그 메모리(212)만이 점유 상태의 특정 캐시 라인 어드레스를 포함할 수 있다. 그러나 하나 이상의 리모트 태그 메모리(212)는 공유 또는 무효 상태의 특정 캐시 라인 어드레스를 포함할 수 있다. 하나의 리모트 태그 메모리(212)가 공유 상태의 캐시 라인 어드레스의 복사본을 포함하고 다른 리모트 태그 메모리(300)가 무효 상태의 동일한 캐시 라인 어드레스의 복사본을 포함하면, 공유 상태의 일관성 상태 비트(412)가 우선순위를 가진다. 아래에서 보다 상세하게 기술하듯이, 하나 이상의 리모트 태그 메모리(300)가 공유 상태의 특정 캐시 라인 어드레스의 복사본을 포함하고 있으면, 일관성 규칙(304)은 하나 이상의 리모트 버스(102, 104, 또는 106) 상에서 리모트 버스 트랜잭션을 수행하여 캐시 일관성을 보장할 수 있다. 또한 리모트 태그 메모리(300) 중 어느 것도 특정 캐시 라인 어드레스(400)를 포함하고 있지 않으면, 캐시 라인 어드레스(400)와 연관된 리모트 일관성 상태 비트(412)는 무효 상태로 처리된다.
예를 들어, 단계 802에서 좌측 버스(102) 상의 제1 프로세서(112a)가 특정 캐시 라인 어드레스(400)에 대하여 BRL 커맨드를 발생시키면, 좌측 사이클 인코더(302a)는 좌측 버스가 BRL 커맨드를 수행하고 있는 지를 결정한다. 또한 좌측 태그 제어장치(300)는 이 캐시 라인 어드레스(400)를 사용하여, 리모트 우측 태그 메모리(212b) 및 리모트 I/O 태그 메모리(212c)를 액세스한다. 태그 제어장치(300)는 우측 태그 메모리(212b) 및 I/O 태그 메모리(212c)로부터 리모트 일관성 상태 비트(412)를 구하는데, 이 리모트 일관성 상태 비트는 우측 태그 메모리(212b) 및 I/O 태그 메모리(212c) 내의 캐시 라인 어드레스(400)가 무효 상태인지, 공유 상태인지, 또는 점유 상태인지를 표시한다. 우측 태그 메모리(212b) 및 I/O 태그 메모리(212c) 중의 어느 하나도 캐시 라인 어드레스(400)를 포함하고 있지 않으면, 좌측 태그 제어장치(300a)는 리모트 일관성 상태 비트(412)를 무효 상태로 처리한다.
본 발명의 실시예에 의한 규칙표(304)의 동작에 초점을 맞춰 설명하면, 로컬 또는 리모트 목적지를 사용하여, 로컬 버스(102, 104, 또는 106)와 연관된 사이클 인코더(302)는 로컬 규칙표(304)에 버스 트랜잭션의 형태(BRL 커맨드) 및 리모트 캐시 상태 비트(412)의 상태를 전송한다. 리모트 일관성 상태 비트(412)가 리모트 캐시 라인 어드레스(400)가 무효 상태임을 표시하면, 로컬 규칙표(304)는 단계(804)로 진행된다. 본 발명의 실시예에서, 리모트 일관성 상태 비트(412)가 무효 상태이면, 로컬 규칙표(304)는 어떠한 리모트 버스(102, 104, 또는 106) 상에서도 BRL 크로스 버스 트랜잭션을 발생시키지 않는다. 오히려 로컬 규칙표(304)는 로컬 태그 메모리(300) 내의 캐시 라인 어드레스의 슈퍼세트(400)를 유지한다.
단계(804)에서, 로컬 프로세서(112)는 임의의 로컬 프로세서(112)가 원하는 캐시 라인의 복사본을 포함하고 있는 지를 결정하기 위해, 내부 캐시 메모리(114)를 질의(interrogate)한다. 본 발명의 실시예에서, 또한 버스 스누핑 동작이 수정된 캐시 라인이 프로세서의 캐시 메모리(114) 내에 존재한다는 것을 표시하면, 프로세서(112) 중 하나가 HITM# 신호를 인가한다. HITM# 신호는 어드레스 및 제어 라인(108) 중의 하나이며, 최신의 캐시 라인을 가지는 프로세서(112)가 주 메모리(132)에 캐시 라인을 재기록할 필요가 있다는 것을 표시한다.
단계(806)에서, 수정된 캐시 라인을 가지는 로컬 프로세서는 수정된 캐시 라인을 주 메모리(132)에 재기록함으로써, 버스 트랜잭션에 응답하고 이와 동시에 주 메모리(132)를 갱신한다. 단계(808)에서, 로컬 규칙표(304)는 로컬 태그 제어장치(300)에게 로컬 태그 메모리(212) 내의 일관성 상태 비트(412)를 공유 상태로 설정하도록 지시한다. 그 후에 로컬 규칙표(304)는 마지막 단계인 단계(810)로 진행한다.
단계(804)에서, 로컬 프로세서(112)가 캐시 라인의 수정된 복사본을 포함하지 않으면, 규칙표(304)는 단계(812)로 진행된다. 단계(812)에서, 로컬 규칙표(304)는 로컬 버스(102, 104, 106) 상의 HIT# 신호를 평가한다. 전술한 바와 같이, 로컬 프로세서(112)가 자신의 캐시 메모리(114) 내에 캐시 라인의 수정되지 않은 복사본을 포함하는 경우, 로컬 프로세서(112)는 HIT# 신호를 발생한다. 로컬 프로세서(112)가 캐시 라인의 수정되지 않은 복사본을 포함하고 있는 경우, 로컬 규칙표(304)는 단계(814)로 진행된다.
단계(814)에서, 로컬 버스 슬레이브(204)는 주 메모리(132)로부터 캐시 라인을 구한다. 이 캐시 라인 어드레스가 홀수이면, 로컬 버스 슬레이브(204)는 홀수 주 메모리(132a)로부터 캐시 라인을 구하여, 캐시 라인 어드레스가 짝수이면, 로컬 버스 슬레이브(204)는 짝수 주 메모리(132b)로부터 캐시 라인을 구한다. 그후, 로컬 버스 슬레이브(204)는 캐시 라인을 요청 프로세서(112)로 전송한다.
단계(808)에서, 로컬 규칙표(304)는 로컬 태그 제어장치(300)에게 로컬 태그 메모리(300) 내의 일관성 상태 비트(412)를 공유 상태로 설정할 것을 지시한다. 그후 로컬 규칙표(304)는 마지막 단계인 단계(810)로 진행된다.
단계(812)에서, 로컬 프로세서(112)가 HIT# 신호 또는 HITM# 신호를 인가하지 않으면, 단계(816)에 나타낸 바와 같이, 캐시 라인은 더 이상 로컬 프로세서(112)에 존재하지 않는다. 단계(818)에서, 로컬 태그 메모리(212)가 캐시 라인 어드레스(400)의 복사본을 가지고 있지 않으면, 규칙표(304)는 캐시 라인 어드레스(400)를 로컬 태그 메모리(212)에 더한다. 전술한 바와 같이, 로컬 태그 메모리는 로컬 태그 메모리에 존재하는 캐시 라인 어드레스를 배출시켜 새로운 캐시 라인 어드레스를 위한 공간을 형성할 필요가 있을 수 있다. 새로운 캐시 라인 어드레스를 위한 공간을 형성하였다면, 새로운 캐시 라인을 로컬 태그 메모리에 더하기 전에 구 캐시 라인 어드레스를 먼저 무효화시킨다. 그후 좌측 버스 슬레이브는 주 메모리(132)로부터 원하는 캐시 라인을 구하고, 이를 요청 프로세서(112)에 전송한다.
단계(822)에서 로컬 규칙표(304)는 로컬 태그 제어장치(300)에게 로컬 태그 메모리(212) 내의 캐시 라인의 일관성 상태 비트(412)를 점유 상태로 설정하도록 지시한다. 그러나 로컬 버스 상의 프로세서(112) 중 하나가 HIT# 신호를 인가하면, 로컬 태그 메모리(212)는 공유 상태로 설정된다. 또한 BRL 커맨드가 코드용이고, 리모트 상태가 점유되지 않으면, 규칙표(304)는 HIT# 신호를 인가한다. 어떠한 HIT# 신호도 검출되지 않으면, BRL 커맨드를 개시한 프로세서는 자신의 내부 캐시 상태를 공유 상태로 표시한다. HITM# 신호가 인가되면, 숨겨진(implicit) 재기록이 수행되고 로컬 태그 메모리(212)가 공유상태로 설정된다. 로컬 규칙표(304)는 마지막 단계인 단계(810)로 진행된다.
단계(802)에서, 리모트 태그 메모리(300)가 리모트 캐시 라인 어드레스(400)가 공유 상태임을 표시하는 경우에 발생하는 것에 초점을 맞춰 설명한다. 리모트 일관성 상태 비트(412)가 캐시 라인 어드레스(400)가 공유 상태임을 표시하면, 로컬 규칙표(304)는 리모트 버스(102, 104, 또는 106) 상에서 BRL 크로스 버스 트랜잭션을 발생시키지 않는다. 오히려 로컬 규칙표(304)는 주 메모리(132)로부터 원하는 캐시 라인을 구하고, 로컬 태그 메모리(300)를 수정한다.
단계(830)에서, 코드 판독에 대하여, 로컬 규칙표(304)는 로컬 버스(102, 104, 106) 상에서 HIT# 신호를 인가한다. 그후 로컬 규칙표(304)는 단계(832)로 진행된다. 단계(832)에서, 로컬 규칙표(304)는 주 메모리(132)로부터 원하는 캐시 라인을 구한다. 원하는 캐시 라인 어드레스가 로컬 태그 메모리(212) 내에 존재하지 않으면, 태그 제어장치는 새로운 캐시 라인 어드레스(400)를 로컬 태그 메모리(212)에 더한다. 전술한 바와 같이, 태그 제어장치(300)는 구 캐시 라인 어드레스(400) 중의 하나를 배출시켜, 새로운 캐시 라인 어드레스(400)에 대한 새로운 공간을 형성한다.
단계(808)에서, 로컬 규칙표(304)는 캐시 라인의 일관성 상태 비트(412)를 공유 상태로 설정하고, 마지막 단계인 단계(810)로 진행된다.
단계(802)에서, 리모트 태그 메모리(212) 중의 하나가 리모트 캐시 라인 어드레스(400) 중의 하나가 점유 상태임을 표시하는 경우에 발생하는 것에 초점을 맞춰 설명한다. 리모트 일관성 상태 비트(412)가 리모트 캐시 라인 어드레스(400) 중의 하나가 점유 상태임을 표시하면, 리모트 버스는 원하는 최신 버전의 캐시 라인을 가지게 되며, 따라서 리모트 버스로부터 최신 캐시 라인을 구해야 한다. 단계(802)에서, 규칙표(304)는 캐시 일관성을 보장하기 위해 필요한 BRL 크로스 버스 트랜잭션을 발생시켜야 한다. 본 발명의 실시예에 의한 무효화, 공유 및 점유 프로토콜에서는, 주어진 시각에 단지 하나의 버스만이 그 자신의 캐시 라인을 소유할 수 있다. 따라서 리모트 캐시 라인은 서로 다른 일관성 상태로 변해야 한다.
단계(840)에서, 로컬 규칙표(304)는 로컬 BRL 커맨드가 지연될 수 있는 지의 여부를 결정한다. 로컬 BRL 커맨드를 지연하는 것은 로컬 버스가 계속하여 버스 트랜잭션을 전송할 수 있도록 한다. 전술한 바와 같이, 버스 트랜잭션을 발행하는 프로세서(104)는 DEN# 신호를 인가함으로써 상기 버스 트랜잭션을 지연할 수 있는 지의 여부를 표시한다. DEN# 신호가 인가되면, 로컬 규칙표(304)는 단계(842)로 진행되며, 로컬 버스 슬레이브(204)에게 로컬 BRL 커맨드를 지연하도록 지시한다. 그후 단계(844)에서, 로컬 규칙표(304)는 리모트 버스(102, 104, 또는 106) 중의 하나의 버스 상에서 BRL 커맨드를 수행하도록 지시한다.
단계(840)에서, 버스 트랜잭션을 지연할 수 없으면, 로컬 규칙표(304)는 단계(846)로 진행되며, 로컬 버스 슬레이브(204)에게 로컬 BRL 커맨드를 기능정지(stall)시키도록 지시한다. 그후 단계(844)에서, 구 로컬 규칙표(304)는 리모트 버스(102, 104, 또는 106) 중의 하나의 버스 상에서 BRL 커맨드를 수행하도록 지시한다.
단계(844)에서, 버퍼 관리자(210) 및 중앙 요청 리스트(208)는 BRL 커맨드를 원하는 버스로 전송한다. 예를 들어, 좌측 버스(102) 내의 제1 프로세서(112a)가 특정 캐시 라인 어드레스에 대하여 BRL 커맨드를 실행한다고 가정한다. 또한 캐시 라인 어드레스(400)에 대한 우측 버스 일관성 상태 비트(412)가 캐시 라인 어드레스(400)가 점유 상태임을 표시한다고 가정한다.
이 예에서, 좌측 규칙표(304a)는 캐시 일관성을 보장하기 위해 우측 버스(104) 상의 BRL 커맨드가 필요한지의 여부를 결정한다. 그후 좌측 규칙표(304a)는 좌측 FIFO(506a)로부터 미사용 상태의 어드레스 셀 식별자를 구한다. 좌측 규칙표(304a)는 어드레스 셀 식별자에 의해 식별된 어드레스 셀(506a)을 액세스하고, 캐시 라인 어드레스(400)를 메모리 어드레스(504)에 입력한다. 또한 좌측 규칙표(304a)는 해당 요청 셀(600)을 액세스하고, 타겟 버스 식별자(604) 내의 우측 버스 식별자, 버스 트랜잭션 코드(606) 내의 BRL 커맨드, 오너 버스 식별자(608) 내의 좌측 버스 식별자를 저장한다.
우측 버스 우선순위 인코더(602b)가 가장 높은 우선순위를 요청 셀(600)에 할당하면, 우측 버스 마스터(202b)는 우측 버스(104) 상에서 BRL 커맨드를 수행한다. 단계(848)에서, 우측 프로세서는 우측 버스(104) 상에서 BRL 커맨드에 응답한다. 단계(848)에서, 우측 프로세서는 자신의 캐시 메모리(114) 내의 캐시 라인 어드레스의 상태를 평가한다. 우측 프로세서가 더 이상 원하는 캐시 라인 어드레스의 복사본을 가지고 있지 않다면, 우측 프로세서는 HIT# 신호 및 HITM# 신호를 인가하지 않는다.
단계(850)에서, 우측 태그 제어장치(300b)는 우측 태그 메모리(212b) 내의 일관성 상태 비트(412)를 무효 상태로 설정한다. 로컬 버스 트랜잭션이 지연되면, 좌측 버스 슬레이브(202a)는 좌측 버스(102) 상에서 지연된 응답 트랜잭션을 발행한다. 단계(818)에서, 좌측 버스 슬레이브(202a)는 주 메모리(132)로부터 원하는 캐시 라인을 구하고, 이를 좌측 버스(102) 상의 요청 프로세서(112)로 전송한다. 그후 좌측 규칙표(304a)는 단계(822) 또는 단계(824)를 통해, 전술한 마지막 단계(810)에 도달한다.
단계(848)로 돌아가 설명하면, 우측 프로세서(112c 또는 112d)가 캐시 라인의 수정되지 않은 복사본을 포함하고 있으면, 이들 장치는 우측 HIT# 신호를 인가하고, 본 실시예는 단계(852)로 진행된다. 단계(852)에서, 우측 태그 제어장치(300b)는 우측 태그 메모리(212b) 내의 일관성 상태 비트(412)를 공유 상태로 설정한다.
단계(854)에서, 좌측 태그 메모리(212b)가 캐시 라인 어드레스(400)의 복사본을 가지고 있지 않으면, 좌측 규칙표(304)는 좌측 태그 제어장치(300A)에게 캐시 라인 어드레스(400)를 좌측 태그 메모리(212a)에 더하도록 지시한다. 전술한 바와 같이, 로컬 태그 메모리는 좌측 태그 메모리 내에 존재하는 캐시 라인 어드레스(400)를 배출시켜 새로운 캐시 라인 어드레스를 위한 공간을 형성할 필요가 있다. 만약 새로운 캐시 라인 어드레스를 위한 공간이 형성하였다면, 구 캐시 라인 어드레스를 먼저 무효화한 다음, 새로운 캐시 라인 어드레스를 좌측 태그 메모리에 더한다.
단계(852)에서, 좌측 버스 슬레이브는 주 메모리(132)로부터 원하는 캐시 라인을 구하고, 이를 좌측 버스(102) 상의 요청 프로세서(112a)로 전송한다. 단계(808)로 진행하여, 좌측 규칙표(304a)는 좌측 태그 제어장치(300a)에게 좌측 태그 메모리(212a) 내의 일관성 상태 비트(412)를 공유 상태로 설정하고, 마지막 단계인 단계(810)로 진행된다.
단계(848)로 돌아가 설명하면, 우측 프로세서(112c 또는 112d) 중의 하나의 프로세서가 자신의 캐시 메모리(114) 내의 캐시 라인의 수정된 복사본을 가지고 있으면, 우측 프로세서(112c 또는 112d)는 우측 HITM# 신호를 인가한다. 단계(858)에서, 수정된 캐시 라인은 좌측 버스(102)에 제공된다. 특히, 수정된 캐시 라인은 데이터 인터페이스 버퍼(134) 내의 해당 데이터 셀(700)에 로드되어, 그후 오너 버스 식별자(608) 내에서 식별된 좌측 버스(102)로 전송된다. 그후 데이터 셀(700)은 수정된 캐시 라인을 좌측 버스(102)로 전송하는 좌측 버스 슬레이브(204a)에 의해 액세스되며, 여기서 캐시 라인은 원 버스 트랜잭션이 지연가능한 경우 지연된 응답을 가진다. 또한 우측 태그 제어장치(300b)는 우측 태그 메모리 내의 일관성 상태 비트를 공유 상태로 설정한다.
단계(858)에서, 응답의 일부분으로서, 수정된 캐시 라인은 주 메모리(132)에 재기록된다. 그후 본 발명은 전술한 바와 같이 단계(852, 854), 단계(808), 및 마지막 단계인 단계(810)로 진행된다. 그리하여 본 발명은 캐시 일관성을 유지하기 위해 필요한 경우에는 BRL 크로스 버스 트랜잭션을 수행한다. 상기한 예에서는 좌측 버스(102)가 BRL 커맨드를 개시하는 경우의 절차에 대하여 기술하였지만, 이와 유사한 절차가 우측 버스(104) 또는 I/O 버스(106)가 BRL 커맨드를 개시하는 경우에 발생할 수 있다.
B. 버스 판독 무효화 라인 커맨드 절차
도 9는 버스(102, 104, 또는 106) 중의 하나의 버스가 버스 판독 무효화 라인(Bus Read Invalidate Line(BRIL) 커맨드)을 실행하는 경우에 캐시 일관성을 유지하기 위한 순서도를 도시한다. BRIL 커맨드를 실행하는 동안, 프로세서(112) 중의 하나가 원하는 캐시 라인 어드레스(400)를 할당된 일관성 필터(200)로 전송한다.
단계(902)에서, 사이클 인코더(302)는 버스(102, 104, 또는 106)가 BRIL 커맨드를 수행하는 지의 여부를 결정한다. 또한 할당된 태그 제어장치(300)는 BRIL 커맨드에서 식별된 캐시 라인 어드레스(400)를 사용하여, 리모트 태그 메모리(212) 내의 캐시 라인 어드레스(400)를 액세스한다. 리모트 태그 메모리(212)가 캐시 라인 어드레스(400)를 포함하고 있으면, 리모트 태그 메모리는 리모트 캐시 라인 어드레스(400)가 무효 상태임을 표시하는 리모트 일관성 상태 비트(412)를 공유 상태 또는 점유 상태로 되돌린다.
전술한 바와 같이, 단지 하나의 리모트 태그 메모리(212)만이 점유 상태의 특정 캐시 라인 어드레스를 포함할 수 있다. 그러나 하나 이상의 리모트 태그 메모리(212)는 공유 상태 또는 무효 상태의 특정 캐시 라인 어드레스를 포함할 수 있다. 하나의 리모트 태그 메모리(212)가 공유 상태의 캐시 라인 어드레스의 복사본을 포함하고, 다른 리모트 태그 메모리(300)가 무효 상태의 동일한 캐시 라인 어드레스의 복사본을 포함하는 경우, 공유 상태의 일관성 상태 비트(412)가 우선순위를 가진다. 아래에서 보다 상세하게 기술되어 있듯이, 하나 이상의 리모트 태그 메모리(300)가 공유 상태의 특정 캐시 라인 어드레스의 복사본을 포함하면, 일관성 규칙(304)은 하나 이상의 리모트 버스(102, 104, 또는 106) 상에서 리모트 버스 트랜잭션을 수행하여 캐시 일관성을 보장할 수 있다. 또한 모든 리모트 태그 메모리(300)가 특정 캐시 라인 어드레스(400)를 포함하고 있지 않다면, 캐시 라인 어드레스(400)와 연관된 리모트 일관성 상태 비트(412)는 무효 상태로 처리된다.
예를 들어, 단계(902)에서 좌측 버스(102) 상의 프로세서(112a)가 특정 캐시 라인 어드레스(400)에 대하여 BRIL 커맨드를 발생하면, 좌측 사이클 인코더(302a)는 좌측 버스(102)가 BRIL 커맨드를 수행하는 지의 여부를 결정한다. 또한 좌측 태그 제어장치(300a)는 캐시 라인 어드레스(400)를 사용하여 우측 태그 메모리(212b) 및 I/O 태그 메모리(212c)에 액세스한다. 태그 제어장치(300)는 우측 태그 메모리(212b) 및 I/O 태그 메모리(212c)로부터 리모트 일관성 상태 비트(412)를 구하는데, 여기서 리모트 일관성 상태 비트(412)는 우측 태그 메모리(212b) 및 I/O 태그 메모리(212c) 내의 캐시 라인 어드레스가 무효 상태인지, 공유 상태인지, 또는 점유 상태인지를 표시한다. 우측 태그 메모리(212b) 또는 I/O 태그 메모리(212c) 중의 어느 하나도 캐시 라인 어드레스(400)를 포함하고 있지 않으면, 좌측 태그 제어장치(300a)는 리모트 일관성 상태 비트(412)를 무효 상태로 처리한다.
본 발명의 실시예에 의한 규칙표(304)의 동작과, 로컬 및 리모트 목적지를 사용하는 것에 대하여 초점을 맞춰 설명하면, 로컬 버스(102, 104, 또는 106)와 연관된 사이클 인코더(302)는 리모트 일관성 상태 비트(412)의 상태 및 버스 트랜잭션의 형태(BRIL 커맨드)를 로컬 규칙표(304)로 전송한다. 리모트 일관성 상태 비트(412)가 리모트 캐시 라인 어드레스(400)가 무효 상태임을 표시하면, 로컬 규칙표(304)는 단계(904)로 진행된다. 본 발명의 실시예에서, 리모트 일관성 상태 비트(412)가 무효 상태이면, 로컬 규칙표(304)는 어떠한 리모트 버스(102, 104, 또는 106) 상에서도 BRIL 크로스 버스 트랜잭션을 발생시키지 않는다. 오히려 로컬 규칙표(304)는 로컬 태그 메모리(300) 내의 캐시 라인 어드레스(400) 슈퍼세트를 유지한다.
단계(904)에서, 로컬 프로세서(112)는 임의의 로컬 프로세서(112)가 원하는 캐시 라인의 복사본을 포함하고 있는 지를 결정하기 위해, 그들의 내부 캐시 메모리(114)를 질의한다. 본 발명의 실시예에서, 버스 스누핑 동작이 프로세서의 캐시 메모리(114) 내에 수정된 캐시 라인이 존재한다는 것을 표시하면, 프로세서(112) 중의 하나가 또한 HITM# 신호를 인가한다. HITM# 신호는 어드레스 및 제어 라인(108) 중의 하나이며, 최신 캐시 라인을 가지는 프로세서(112)가 주 메모리(132)에 캐시 라인을 재기록할 필요가 있다는 것을 표시한다.
단계(906)에서, 로컬 프로세서(112)는 수정된 캐시 라인을 주 메모리(132)에 재기록함으로써, 버스 트랜잭션에 응답하고 이와 동시에 주 메모리(132)를 갱신한다. 단계(908)에서, 로컬 규칙표(304)는 로컬 태그 제어장치(300)에게 로컬 태그 메모리(212) 내의 일관성 상태 비트(412)를 점유 상태로 설정하도록 지시한다. 그후 로컬 규칙표(304)는 마지막 단계인 단계(910)로 진행된다.
단계(904)에서, 로컬 프로세서(112)가 캐시 라인의 수정된 복사본을 포함하고 있지 않으면, 로컬 규칙표(304)는 단계(912)로 진행된다. 전술한 바와 같이, 로컬 태그 메모리(212)가 캐시 라인 어드레스(400)의 복사본을 가지고 있지 않으면, 로컬 규칙표(304)는 캐시 라인 어드레스(400)를 로컬 태그 메모리(304)에 더한다. 그리하여 로컬 태그 메모리는 로컬 태그 메모리에 존재하는 캐시 라인 어드레스를 배출시켜 새로운 캐시 라인 어드레스를 위한 공간을 형성할 필요가 있다. 만약 새로운 캐시 라인 어드레스를 위한 공간을 형성하였다면, 구 캐시 라인 어드레스를 먼저 무효화한 다음, 새로운 캐시 라인 어드레스를 로컬 태그 메모리에 더한다. 단계(912)에서, 좌측 버스 슬레이브는 주 메모리(132)로부터 원하는 캐시 라인을 구하고, 이를 요청 프로세서(112)에 전송한다.
단계(902)로 돌아가, 리모트 태그 메모리(300)가 리모트 캐시 라인 어드레스(400)가 공유 또는 점유 상태임을 표시하는 경우에 발생하는 것에 초점을 맞춰 설명한다. 리모트 일관성 상태 비트(412)가 리모트 캐시 라인 어드레스(400)가 공유 또는 점유 상태임을 표시하면, 로컬 규칙표(304)는 캐시 일관성을 유지하는데 필요한 BRIL 크로스 버스 트랜잭션을 발생시킨다.
단계(920)에서, 로컬 규칙표(304)는 로컬 BRIL 커맨드가 지연될 수 있는지를 결정한다. 전술한 바와 같이, 버스 트랜잭션을 발행하는 프로세서(104)는 DEN# 신호를 인가함으로써 버스 트랜잭션이 지연가능한 지를 표시한다. DEN# 신호가 인가되면, 로컬 규칙표(304)는 단계(922)로 진행하고, 로컬 버스 슬레이브(204)에게 로컬 BRIL 커맨드를 지연하도록 지시한다. 그후 단계(924)에서 로컬 규칙표(304)는 리모트 버스(102, 104, 또는 106) 상에서 BRIL 커맨드를 수행하도록 지시한다.
단계(920)로 돌아가 설명하면, 버스 트랜잭션을 지연할 수 없는 경우에는, 로컬 규칙표(304)는 단계(926)로 진행되고, 로컬 버스 슬레이브(204)에게 로컬 BRIL 커맨드를 기능정지하도록 지시한다. 단계(924)에서, 로컬 규칙표(304)는 리모트 버스(102, 104, 또는 106) 상에서 리모트 BRIL 커맨드를 수행하도록 지시한다.
단계(924)에서, 단계(844)와 관련하여 전술한 바와 같이, 버퍼 관리자(210) 및 중앙 요청 리스트(208)는 BRIL 커맨드를 원하는 리모트 버스(102, 104, 또는 106)로 전송한다. 단계(928)에서, BRIL 커맨드가 리모트 버스(102, 104, 및 106) 상에서 실행된다. 단계(928)에서, 리모트 프로세서는 자신들의 캐시 메모리(114) 내의 캐시 라인 어드레스의 상태를 평가한다. 리모트 프로세서가 더 이상 원하는 캐시 라인 어드레스(400)의 복사본을 가지고 있지 않으면, 우측 프로세서는 HIT# 신호 또는 HITM# 신호를 인가하지 않는다.
단계(930)에서, 리모트 태그 제어장치(300)는 리모트 태그 메모리(212) 내의 일관성 상태 비트(412)를 무효 상태로 설정한다. 단계(932)에서, 좌측 버스 슬레이브는 주 메모리(132)로부터 원하는 캐시 라인을 구하고, 이를 좌측 버스(102) 상의 요청 프로세서(112)로 전송한다. 또한 캐시 라인 어드레스(400)가 로컬 태그 메모리(212) 내에 존재하지 않으면, 로컬 규칙표(304)는 로컬 태그 제어장치(300)에게 새로운 캐시 라인 어드레스(400)를 로컬 태그 메모리에 더하도록 지시한다. 전술한 바와 같이, 이것은 현존하는 캐시 라인 어드레스의 무효화를 요구할 수 있다. 단계(908)에서, 로컬 태그 제어장치(300)는 로컬 태그 메모리(212) 내의 일관성 상태 비트를 점유 상태로 하고, 그후에 마지막 단계인 단계(910)로 진행된다.
단계(928)로 돌아가 설명하면, 리모트 프로세서(112)가 캐시 라인의 수정되지 않은 복사본을 포함하는 경우, 이들 장치는 리모트 HIT# 신호를 인가하고, 본 발명의 실시예는 전술한 바와 같이, 단계(930), 단계(932), 단계(908)로 진행된 후에 마지막 단계인 단계(910)로 진행된다. 단계(928)로 다시 돌아가 설명하면, 리모트 프로세서(112) 중의 하나가 자신의 캐시 메모리(114) 내의 캐시 라인의 수정된 복사본을 가지고 있으면, 리모트 프로세서(112)는 리모트 HITM# 신호를 인가한다.
단계(934)에서, 수정된 캐시 라인은 로컬 버스(102, 104, 또는 106)로 제공된다. 특히 수정된 캐시 라인은 데이터 인터페이스 버퍼(134) 내의 적당한 데이터 셀(700)에 로드되어, 오너 버스 식별자(608) 내에서 식별된 버스로 재전송된다. 그후 로컬 버스 슬레이브(204)는 로컬 좌측 버스(102) 상에서 (원(original) 버스 트랜잭션이 지연가능하다면, 지연된 응답을 가지는) 수정된 캐시 라인을 전송한다. 또한 리모트 태그 제어장치(300)는 리모트 태그 메모리 내의 리모트 일관성 상태 비트를 무효 상태로 설정한다. 응답의 일부로서, 수정된 캐시 라인은 주 메모리(132)로 재기록된다.
전술한 바와 같이, 그후에 본 발명의 실시예는 단계(908)로 진행된 다음, 마지막 단계인 단계(910)로 진행된다. 그리하여 본 발명의 실시예는 캐시 일관성을 유지하기 위해 필요한 경우에는 BRIL 크로스 버스 트랜잭션을 수행한다.
Ⅵ. 다른 실시예
본 발명의 다른 실시예는 무효화 큐(invalidation queue)를 포함하여 구현된다. 도 10에 도시된 무효화 큐(1000)에 초점을 맞춰 설명하면, 각 버스는 할당된 무효화 큐(1000)를 가진다. 무효화 큐(1000)는 비교적 적은 개수의 큐 엔트리(1002)를 가진다. 각 큐 엔트리(1002)는 하나의 캐시 라인 어드레스(400)에 대한 태그 페이지 어드레스(402), 오프셋 어드레스(404), 일관성 상태 비트(412) 및 패리티 비트(414)를 저장한다.
본 발명의 실시예에서, 본 발명의 실시예에 의한 태그 메모리(212)의 크기는 주 메모리(132)에 비해 작다. 그리하여, 하나 이상의 캐시 라인 어드레스(400)가 동시에 동일한 태그 엔트리(410)로 매핑된다. 캐시 라인이 점유된(occupied) 태그 엔트리(410)로 매핑되면, 태그 제어장치(300)는 태그 메모리(212)로부터 점유된 태그 엔트리(410)를 배출시켜야 한다. 다시 말해, 태그 제어장치(300)가 새로운 캐시 라인 어드레스(400)를 태그 엔트리(410)에 저장하도록 하기 위해, 점유된 태그 엔트리(410) 내에 존재하는 캐시 라인을 무효화시켜야 한다.
또한 2개의 프로세서(112)가 동일한 태그 엔트리(410)와 매핑되는 2개의 캐시 라인을 액세스하려고 시도하면, 일관성 필터(200)는 제1 캐시 라인 어드레스(400)를 무효화하고, 이를 제2 캐시 라인 어드레스(400)로 대체한다. 그후 일관성 필터(200)는 제2 캐시 라인 어드레스(400)를 무효화한 다음, 이를 제1 캐시 라인 어드레스(400)로 대체한다. 이러한 핑퐁 효과(ping-pong effect)를 태그 메모리 스래싱(tag memory thrashing)이라 한다. 보다 큰 태그 메모리(212)를 사용하여 태그 메모리 스래싱을 최소화하는 것이 가능하지만, 이러한 접근방법은 태그 메모리(212)의 비용을 상당히 증가시킨다. 이에 비해 무효화 큐(1000)는 추가되는 메모리 비용을 최소화시키면서 태그 메모리 스래싱을 상당히 감소시킨다.
또한 구 캐시 라인 어드레스를 무효화해야 되는 경우, 구 캐시 라인의 무효화 동작이 완료될 때까지 새로운 캐시 라인 어드레스와 연관된 버스 트랜잭션을 지연시켜야 한다. 본 발명의 실시예에 의한 무효화 큐(1000)는 새로운 버스 트랜잭션이 처리되도록 한다. 버스가 미사용 상태가 되면, 이후에 구 캐시 라인 어드레스를 무효화시킬 수 있다.
일관성 필터(200) 중 하나가 태그 메모리(212)로부터 태그 엔트리(410)를 배출시킬 필요가 있는 경우, 태그 엔트리(410)는 일관성 필터의 무효화 큐(1002)에 저장된다. 본 발명의 실시예에 의한 무효화 큐(1000)는 최대 8개의 배출된 태그 엔트리(410)를 저장할 수 있지만, 무효화 큐(1002)는 이보다 더 많은 개수의 배출된 태그 엔트리(410)를 포함할 수 있다. 일관성 필터(200) 중의 하나의 필터가 8개 이상의 태그 엔트리(410)를 배출하면, 무효화 큐(1000)는 가장 최근에 액세스된 태그 엔트리(410)를 유지하고, 플러시(flush)된 태그 엔트리(410)를 무효화한다.
무효화 큐(1000)는 큐 엔트리(1002)를 태그 메모리(212) 내의 태그 엔트리(410)와는 다른 포맷으로 저장한다. 특히 본 발명의 실시예에 의한 큐 엔트리(1002)는 태그 메모리(212)로부터 배출된 태그 엔트리(410)의 태그 페이지 어드레스(402), 오프셋 어드레스(404), 일관성 상태 비트(412) 및 패리티 비트(414)를 포함한다. 임의의 캐시 라인 어드레스(400)가 임의의 큐 엔트리(1002) 내에 존재할 수 있기 때문에, 각 무효화 큐는 완전히 연관되어 있다고 표현된다.
각 무효화 큐(1000)가 비교적 적은 수의 무효화 큐 엔트리(1002)를 포함하고 있기 때문에, 각 무효화 큐(1000)는 태그 메모리(212)의 크기를 증가시키는 것에 대한 낮은 비용의 대안을 제공한다. 본 발명의 실시예에서, 무효화 큐(1000)는 시스템 액세스 제어장치(130) 내에 존재하는 SRAM을 사용하여 구현된다.
Ⅶ. 결론
본 발명의 실시예에 대하여 기술하였지만, 이들 실시예는 단지 예시를 목적으로 기술되었으며, 이들 실시예가 본 발명의 범위를 제한하는 것은 아니다. 예를 들어, 본 명세서에 기술된 본 발명의 실시예에서는 3중 버스(three-bus) 시스템(100)을 사용하고 있지만, 그 이상의 버스를 사용할 수도 있다. 또한 본 발명은 다양한 형태의 다중처리 시스템 상에서 구현될 수 있다. 따라서 본 발명의 원리 및 범위는 다음의 청구의 범위에 의해 정의된다.
상기 내용 참고
Claims (52)
- 시스템 메모리;상기 시스템 메모리와 통신하며, 여기에 연결된 적어도 하나의 캐시 메모리―여기서 캐시 메모리는 상기 시스템 메모리로부터 구해진 복수의 데이터 값을 저장하도록 구성되며, 상기 데이터 값에 대한 캐시 일관성 상태 정보를 제1 일관성 상태 세트로 유지하도록 구성됨―를 구비하는 제1 버스;상기 제1 버스와 통신하며, 상기 데이터 값과 연관된 일관성 상태 레코드를 제2 일관성 상태 세트―여기서 제2 일관성 상태 세트는 상기 제1 일관성 상태 세트보다 적은 수의 일관성 상태를 포함함―로 유지하도록 구성되는 일관성 메모리;상기 시스템 메모리와 통신하며, 버스 트랜잭션을 발생시킬 수 있는 제2 버스; 및상기 제2 버스와 통신하며, 상기 제2 버스 상의 상기 버스 트랜잭션을 모니터하고 상기 일관성 상태 레코드에 기초하여 상기 제1 버스 상의 크로스 버스 트랜잭션을 금지(inhibit)하도록 구성되는 일관성 필터를 포함하는 다중버스, 다중처리 시스템.
- 제1항에 있어서,캐시 일관성 정보를 상기 제1 일관성 상태 세트로 유지하는 복수의 캐시 메모리를 추가로 포함하는 다중버스, 다중처리 시스템.
- 제1항에 있어서,상기 버스 트랜잭션은 상기 데이터 값 중 하나의 데이터 값과 연관된 메모리 어드레스를 식별하는 다중버스, 다중처리 시스템.
- 제3항에 있어서,상기 일관성 상태 레코드는 복수의 엔트리―여기서 각 엔트리는 상기 캐시 메모리에 저장된 데이터 값과 연관된 메모리 어드레스를 저장하도록 구성됨―를 포함하는 다중버스, 다중처리 시스템.
- 제1항에 있어서,상기 각 엔트리는 상기 제2 일관성 상태 세트를 저장하도록 구성되는 다중버스, 다중처리 시스템.
- 제5항에 있어서,상기 각 엔트리는 상기 제2 일관성 상태 세트 중의 하나를 저장하도록 구성되는 다중버스, 다중처리 시스템.
- 제6항에 있어서,상기 각 메모리 어드레스는 상기 엔트리 중의 하나의 엔트리로 직접 매핑되는 다중버스, 다중처리 시스템.
- 다중버스 시스템 내에서 캐시 일관성을 유지하는 방법에 있어서,제1 버스와 연결된 캐시 유닛 내에 존재하는 복수의 제1 데이터 값과 연관된 캐시 상태 정보―여기서 캐시 상태 정보는 제1 일관성 상태 세트에 기초함―를 유지하는 단계;상기 데이터 값과 연관되어 있으며, 제2 일관성 상태 세트―여기서 제2 일관성 상태 세트는 상기 제1 일관성 상태 세트보다 적은 수의 일관성 상태를 사용함―에 기초하는 일관성 상태 레코드를 유지하는 단계;제2 버스 상에 버스 트랜잭션을 전송하는 단계; 및상기 일관성 상태 레코드가 상기 버스 트랜잭션으로부터 메모리 일관성 오류(incoherency)가 발생되지 않음을 표시하는 경우, 상기 제1 버스 상의 크로스 버스 트랜잭션을 금지하는 단계를 포함하는 캐시 일관성 유지 방법.
- 제8항에 있어서,상기 일관성 상태 레코드는 각 엔트리가 상기 제2 일관성 상태 세트 중 하나를 포함하도록 상기 각 데이터 값에 대한 복수의 엔트리를 유지하는 캐시 일관성 유지 방법,
- 제9항에 있어서,상기 감지 단계는 상기 엔트리가 무효 상태임을 결정하기 위해 상기 버스 트랜잭션과 연관된 상기 일관성 상태 레코드 내의 상기 엔트리를 조사(consulting)하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 제9항에 있어서,상기 감지 단계는 상기 엔트리가 무효 상태임을 결정하기 위해 상기 버스 트랜잭션과 연관된 상기 일관성 상태 레코드 내의 상기 엔트리를 조사하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 제11항에 있어서,상기 엔트리가 점유 상태이면 상기 버스 트랜잭션과 연관된 상기 엔트리를 수정하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 제11항에 있어서,상기 버스 트랜잭션과 연관된 상기 엔트리를 점유 상태에서 공유 상태로 수정하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 제11항에 있어서,상기 버스 트랜잭션과 연관된 상기 엔트리를 점유 상태에서 무효 상태로 수정하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 시스템 메모리;상기 시스템 메모리와 통신하며, 여기에 연결된 적어도 하나의 캐시 메모리―여기서 캐시 메모리는 상기 시스템 메모리로부터 구해진 복수의 데이터 값을 저장하도록 구성되며, 상기 데이터 값에 대한 캐시 일관성 정보를 제1 일관성 상태 세트로 유지하도록 구성됨―를 구비하는 시스템 버스;상기 시스템 버스와 통신하며, 상기 데이터 값과 연관된 시스템 버스 일관성 상태 레코드를 제2 일관성 상태 세트―여기서 제2 일관성 상태 세트는 상기 제1 일관성 상태 세트보다 적은 수의 일관성 상태를 포함함―로 유지하도록 구성되는 일관성 메모리;상기 시스템 메모리와 통신하며, 적어도 하나의 버스 트랜잭션을 발생시킬 수 있는 입/출력 버스; 및상기 입/출력 버스와 통신하며, 상기 입/출력 버스 상의 상기 버스 트랜잭션을 모니터하고 상기 시스템 버스 일관성 상태 레코드에 기초하여 상기 시스템 버스 상의 크로스 버스 트랜잭션을 금지하도록 구성되는 입/출력 일관성 필터를 포함하는다중버스, 다중처리 시스템.
- 제15항에 있어서,상기 입/출력 일관성 필터는 상기 입/출력 버스 상의 직접 메모리 액세스(direct memory access; DMA)를 모니터하고, 상기 캐시 메모리 내의 캐시 라인의 플러싱(flushing)을 방지하는데 필요한 크로스 버스 트랜잭션을 수행하도록 추가로 구성되는다중버스, 다중처리 시스템.
- 제15항에 있어서,상기 입/출력 버스는 내부 I/O 캐시 메모리를 포함하는 복수의 I/O 브리지를 추가로 포함하며,상기 I/O 캐시 메모리는 복수의 제2 데이터 값을 저장하도록 구성되며, 상기 데이터 값에 대한 캐시 일관성 정보를 상기 제1 일관성 상태 세트로 유지하도록 구성되는다중버스, 다중처리 시스템.
- 제17항에 있어서,상기 I/O 버스와 통신하는 I/O 일관성 메모리를 추가로 포함하며,상기 I/O 일관성 메모리는 상기 데이터 값과 연관된 I/O 일관성 상태 레코드를 상기 제2 일관성 상태 세트로 유지하도록 구성되는다중버스, 다중처리 시스템.
- 제18항에 있어서,상기 시스템 버스와 통신하는 시스템 버스 일관성 필터를 추가로 포함하며,상기 시스템 버스 일관성 필터는 상기 시스템 버스 상의 상기 버스 트랜잭션을 모니터하고 상기 I/O 일관성 상태 레코드에 기초하여 상기 I/O 버스 상의 크로스 버스 트랜잭션을 금지하도록 구성되는다중버스, 다중처리 시스템.
- 다중버스 시스템 내에서 캐시 일관성을 유지하는 방법에 있어서,시스템 버스와 연결된 캐시 유닛 내에 존재하는 복수의 제1 데이터 값과 연관된 캐시 상태 정보―여기서 캐시 상태 정보는 제1 일관성 상태 세트에 기초함―를 유지하는 단계;상기 데이터 값과 연관되어 있으며, 제2 일관성 상태 세트―여기서 제2 일관성 상태 세트는 상기 제1 일관성 상태 세트보다 적은 수의 일관성 상태를 포함함―에 기초하는 일관성 상태 레코드를 유지하는 단계;입/출력 버스 상에 버스 트랜잭션을 전송하는 단계; 및상기 일관성 상태 레코드가 상기 입/출력 버스 트랜잭션으로부터 메모리 일관성 오류가 발생되지 않음을 표시하는 경우, 상기 시스템 버스 상의 크로스 버스 트랜잭션을 금지하는 단계를 포함하는 캐시 일관성 유지 방법.
- 제20항에 있어서,상기 입/출력 버스 상에 버스 트랜잭션을 전송하는 단계는 직접 메모리 액세스인 캐시 일관성 유지 방법.
- 제20항에 있어서,상기 입/출력 버스 상에서 전송된 복수의 I/O 데이터 값을 캐시에 저장하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 제22항에 있어서,상기 제1 일관성 상태 세트에 기초하여 상기 I/O 데이터 값과 연관된 캐시 상태 정보를 유지하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 제23항에 있어서,상기 I/O 데이터 값과 연관되어 있으며, 상기 제2 일관성 상태 세트에 기초하는 I/O 일관성 상태 레코드를 유지하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 제24항에 있어서,상기 시스템 버스 상에 버스 트랜잭션을 전송하는 단계; 및상기 I/O 일관성 상태 레코드가 상기 시스템 버스 트랜잭션으로부터 메모리 일관성 오류가 발생되지 않음을 표시하는 경우, 상기 I/O 버스 상의 크로스 버스 트랜잭션을 금지하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 시스템 메모리;상기 시스템 메모리와 통신하며, 여기에 연결된 적어도 하나의 캐시 메모리―여기서 캐시 메모리는 상기 시스템 메모리로부터 구해진 복수의 데이터 값을 저장하도록 구성되며, 상기 데이터 값에 대한 캐시 일관성 정보를 제1 일관성 상태 세트로 유지하도록 구성됨―를 구비하는 제1 시스템 버스 및 제2 시스템 버스;상기 제1 시스템 버스와 통신하며, 상기 제1 시스템 버스에 연결된 상기 캐시 유닛 내의 상기 데이터 값과 연관된 제1 일관성 상태 레코드를 제2 일관성 상태 세트―여기서 제2 일관성 상태 세트는 상기 제1 일관성 상태 세트보다 적은 수의 일관성 상태를 포함함―로 유지하도록 구성되는 제1 일관성 메모리;상기 제2 시스템 버스와 통신하며, 상기 제2 시스템 버스와 연결된 상기 캐시 메모리 내의 상기 데이터 값과 연관된 제2 일관성 상태 레코드를 상기 제2 일관성 프로토콜로 유지하도록 구성되는 제2 일관성 메모리;상기 제1 버스와 통신하며, 상기 제1 버스 상의 버스 트랜잭션을 모니터하고 상기 제2 일관성 상태 레코드에 기초하여 상기 제2 버스 상의 크로스 버스 트랜잭션을 금지하도록 구성되는 제1 일관성 필터; 및상기 제2 버스와 통신하며, 상기 제2 버스 상의 버스 트랜잭션을 모니터하고 상기 제1 일관성 상태 레코드에 기초하여 상기 제1 버스 상의 크로스 버스 트랜잭션을 금지하도록 구성되는 제2 일관성 필터를 포함하는 다중버스, 다중처리 시스템.
- 제26항에 있어서,상기 시스템 메모리 및 복수의 I/O 장치―여기서 복수의 I/O 장치는 적어도 하나의 I/O 캐시 메모리 내의 I/O 데이터 값을 저장함―와 통신하는 I/O 버스; 및상기 I/O 버스와 통신하며, I/O 데이터 값과 연관된 I/O 일관성 상태 레코드를 상기 제2 일관성 프로토콜로 유지하도록 구성된 I/O 일관성 메모리를 추가로 포함하는 다중버스, 다중처리 시스템.
- 제27항에 있어서,상기 제1 일관성 필터는 또한 상기 I/O 일관성 메모리와 통신하며, 상기 제1 버스 상의 버스 트랜잭션을 모니터하고 상기 I/O 일관성 상태 레코드에 기초하여 상기 I/O 버스 상의 크로스 버스 트랜잭션을 금지하는다중버스, 다중처리 시스템.
- 제27항에 있어서,상기 제2 일관성 필터는 또한 상기 I/O 일관성 메모리와 통신하며, 상기 제2 버스 상의 버스 트랜잭션을 모니터하고 상기 I/O 일관성 상태 레코드에 기초하여 상기 I/O 버스 상의 크로스 버스 트랜잭션을 금지하는다중버스, 다중처리 시스템.
- 제27항에 있어서,상기 제1 일관성 메모리 및 상기 제2 일관성 메모리와 통신하며, 상기 I/O 버스 상의 버스 트랜잭션을 모니터하고, 상기 제1 일관성 상태 레코드에 기초하여 상기 제1 버스 상의 크로스 버스 트랜잭션을 금지하고, 상기 제2 일관성 상태 레코드에 기초하여 상기 제2 버스 상의 크로스 버스 트랜잭션을 금지하는 I/O 일관성 필터를 추가로 포함하는 다중버스, 다중처리 시스템.
- 시스템 메모리;상기 시스템 메모리와 통신하며, 여기에 연결된 적어도 하나의 캐시 메모리―여기서 캐시 메모리는 상기 시스템 메모리로부터 구해진 복수의 데이터 값을 저장하도록 구성되며, 상기 데이터 값에 대한 캐시 일관성 정보를 복수의 일관성 상태를 포함하는 제1 일관성 프로토콜로 유지하도록 구성됨―를 구비하는 제1 버스 및 제2 버스;상기 데이터 값과 연관된 제1 일관성 상태 레코드를 제2 일관성 프로토콜―여기서 제2 일관성 프로토콜은 상기 제1 일관성 프로토콜과는 다른 일관성 상태를 포함함―로 유지하는 제1 일관성 메모리 수단; 및상기 제2 버스 상의 버스 트랜잭션을 모니터하고 상기 제1 일관성 상태 레코드에 기초하여 상기 제1 버스 상의 크로스 버스 트랜잭션을 금지하는 제1 일관성 필터 수단을 포함하는 다중버스, 다중처리 시스템.
- 시스템 메모리;상기 시스템 메모리와 통신하며, 여기에 연결된 적어도 하나의 캐시 메모리―여기서 캐시 메모리는 상기 시스템 메모리로부터 구해진 복수의 데이터 값을 저장하도록 구성되며, 상기 데이터 값에 대한 캐시 일관성 상태 정보를 제1 일관성 상태로 유지하도록 구성됨―를 구비하는 제1 버스;상기 제1 버스와 통신하며, 상기 데이터 값과 연관된 일관성 상태 레코드를 제2 일관성 상태 세트―여기서 제2 일관성 상태 세트는 상기 제1 일관성 상태 세트와는 다름―로 유지하는 일관성 메모리;상기 시스템 메모리와 통신하며, 버스 트랜잭션을 발생시킬 수 있는 제2 버스; 및상기 제2 버스와 통신하며, 상기 제2 버스 상의 버스 트랜잭션을 모니터하고 상기 일관성 상태 레코드에 기초하여 상기 제1 버스 상의 크로스 버스 트랜잭션을 금지하기 위한 일관성 필터를 포함하는 다중버스, 다중처리 시스템.
- 제32항에 있어서,상기 제1 일관성 필터는 제1 일관성 메모리 제어장치를 추가로 포함하며,상기 제1 일관성 메모리 제어장치는 버스 트랜잭션 어드레스를 수신하도록 구성되며, 상기 버스 트랜잭션 어드레스에 해당하는 상기 제2 일관성 상태 레코드 내의 엔트리를 액세스하도록 구성되는 다중버스, 다중처리 시스템.
- 제33항에 있어서,상기 제1 일관성 메모리 제어장치는 상기 엔트리 내에 존재하는 상기 일관성 상태를 구하는 다중버스, 다중처리 시스템.
- 제34항에 있어서,상기 제1 일관성 필터는 상기 버스 트랜잭션을 식별하는 버스 트랜잭션 코드를 식별하는 사이클 인코더를 추가로 포함하는 다중버스, 다중처리 시스템.
- 제35항에 있어서,상기 제1 일관성 필터는 상기 일관성 상태 및 상기 버스 트랜잭션을 식별하는 버스 트랜잭션 코드를 수신하는 규칙표를 추가로 포함하는 다중버스, 다중처리 시스템.
- 다중버스 시스템 내에서 캐시 일관성을 유지하는 방법에 있어서,제1 버스와 연결된 캐시 유닛 내에 존재하는 복수의 제1 데이터 값과 연관된 캐시 상태 정보―여기서 캐시 상태 정보는 제1 일관성 상태 세트에 기초함―를 유지하는 단계;상기 데이터 값과 연관되어 있으며, 제2 일관성 상태 세트―여기서 제2 일관성 상태 세트는 상기 제1 일관성 상태 세트와는 다름―에 기초하는 일관성 상태 레코드를 유지하는 단계;제2 버스 상에 버스 트랜잭션을 전송하는 단계; 및상기 일관성 상태 레코드가 상기 버스 트랜잭션으로부터 메모리 일관성 오류가 발생되지 않음을 표시하는 경우, 상기 제1 버스 상의 크로스 버스 트랜잭션을 금지하는 단계를 포함하는 캐시 일관성 유지 방법.
- 제37항에 있어서,버스 트랜잭션 어드레스에 해당하는 상기 제2 일관성 상태 레코드 내의 엔트리를 액세스하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 제37항에 있어서,상기 엔트리 내에 존재하는 상기 일관성 상태를 구하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 제39항에 있어서,상기 버스 트랜잭션을 식별하는 버스 트랜잭션 코드를 생성하기 위해, 상기 버스 트랜잭션 코드를 부호화하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 제40항에 있어서,캐시 일관성을 유지하기 위해 크로스 버스 트랜잭션이 필요한 지의 여부를 결정하기 위해 상기 버스 트랜잭션 코드 및 상기 일관성 상태를 평가하는 단계를 추가로 포함하는 캐시 일관성 유지 방법.
- 시스템 메모리;상기 시스템 메모리와 통신하며, 여기에 연결된 복수의 캐시 메모리―여기서 캐시 메모리는 스누핑 동작을 수행하고 상기 시스템 메모리로부터 구해진 복수의 데이터 값에 대한 캐시 상태 정보를 유지하도록 구성되며, 내부적 수정을 외부로 출력하지 않고 상기 데이터 값 중의 일부와 연관된 상기 캐시 상태 정보를 내부적으로 수정하도록 구성됨―를 구비하는 제1 버스 및 제2 버스;상기 제1 버스와 통신하며, 상기 제1 버스 상의 캐시 메모리에 의해 구해진 상기 데이터 값과 연관된 일관성 상태 레코드를 유지하도록 구성된 일관성 메모리; 및상기 제2 버스와 통신하며, 상기 제2 버스 상의 버스 트랜잭션을 모니터하고 상기 일관성 상태 레코드에 기초하여 상기 제1 버스 상의 크로스 버스 트랜잭션을 금지하도록 구성된 일관성 필터를 포함하는 다중버스, 다중처리 시스템.
- 다중버스 시스템 내에서 캐시 일관성을 유지하는 방법에 있어서,시스템 버스와 연결된 캐시 유닛 내에 존재하는 복수의 제1 데이터 값과 연관된 캐시 상태 정보를 유지하는 단계;상기 캐시 유닛 내의 상기 캐시 상태 정보를 내부적으로 수정하고, 상기 내부적 수정을 출력하지 않는 단계;상기 데이터 값과 연관된 일관성 상태 레코드를 유지하는 단계;제2 버스 상에 버스 트랜잭션을 전송하는 단계; 및상기 일관성 상태 레코드가 상기 버스 트랜잭션으로부터 메모리 일관성 오류가 발생되지 않음을 표시하는 경우, 상기 시스템 버스 상의 크로스 버스 트랜잭션을 금지하는 단계를 포함하는 캐시 일관성 유지 방법.
- 다중처리 시스템 내에서 메모리 일관성을 유지하는 일관성 필터에 있어서,복수의 엔트리―여기서 각 엔트리는 복수의 프로세서에 존재하는 데이터 값의 일관성 상태를 기록하도록 구성됨―를 가지는 메모리 어레이; 및상기 메모리 어레이와 통신하며, 상기 메모리 어레이보다 더 높은 정도의 연관성(associativity)을 가지도록 구성되며 상기 메모리 어레이로부터 배출된 상기 엔트리를 저장하도록 구성된 무효화 큐를 포함하는 일관성 필터.
- 여기에 연결된 적어도 하나의 프로세서를 구비하는 제1 버스;여기에 연결된 적어도 하나의 프로세서를 구비하는 제2 버스;상기 제1 버스 및 상기 제2 버스와 연결되어 있으며, 상기 제1 버스와 상기 제2 버스 사이에서 버스 트랜잭션을 전송하도록 구성된 메모리 셀 영역(pool of memory cell)―여기서 각 메모리 셀은 상기 제1 버스 또는 상기 제2 버스 중의 하나를 목적지 버스로 식별하는 버스 코드를 저장하도록 구성되며, 상기 목적지 버스에게 버스 트랜잭션을 수행하도록 지시하는 버스 트랜잭션 정보를 저장하도록 구성됨―을 구비하는 다중포트화 메모리;상기 메모리 셀 및 상기 제1 버스와 연결되어 있으며, 상기 메모리 셀을 평가하여 상기 제1 버스를 지정하는 메모리 셀을 식별하도록 구성된 제1 버스 우선순위 인코더; 및상기 메모리 셀 및 상기 제1 버스와 연결되어 있으며, 상기 메모리 셀을 평가하여 상기 제2 버스를 지정하는 메모리 셀을 식별하도록 구성된 제2 버스 우선순위 인코더를 포함하는 다중버스, 다중처리 시스템.
- 제45항에 있어서,버스 트랜잭션 정보를 저장할 수 있는 미사용 상태의 셀(fee cell)을 결정하도록 구성된 미사용 상태의 셀 인코더를 추가로 포함하는 다중버스, 다중처리 시스템.
- 제45항에 있어서,새로운 버스 트랜잭션을 상기 메모리 셀 내에 존재하는 상기 버스 트랜잭션과 비교하며, 언제 상기 새로운 버스 트랜잭션과 상기 메모리 셀 내에 존재하는 상기 버스 트랜잭션 사이에 충돌이 발생하는 지를 표시하도록 구성된 하나의 어드레스 비교기 세트를 추가로 포함하는 다중버스, 다중처리 시스템.
- 제45항에 있어서,상기 각 메모리는 어드레스 셀, 요청 셀 및 데이터 셀을 포함하는 다중버스, 다중처리 시스템.
- 제48항에 있어서,상기 각 어드레스 셀이 버스 트랜잭션 어드레스 정보를 저장하도록 구성된 다중버스, 다중처리 시스템.
- 제49항에 있어서,상기 각 어드레스 셀이 사용중인(in-use) 정보를 저장하도록 추가로 구성된 다중버스, 다중처리 시스템.
- 제48항에 있어서,상기 각 요청 셀은 상기 버스 코드 및 상기 버스 트랜잭션 정보를 저장하도록 구성된 다중버스, 다중처리 시스템.
- 제48항에 있어서,상기 각 데이터 셀은 상기 버스 트랜잭션 데이터를 저장하도록 구성된 다중버스, 다중처리 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/714,750 US5897656A (en) | 1996-09-16 | 1996-09-16 | System and method for maintaining memory coherency in a computer system having multiple system buses |
US08/714,750 | 1996-09-16 | ||
US8/714,750 | 1996-09-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000036144A true KR20000036144A (ko) | 2000-06-26 |
KR100491435B1 KR100491435B1 (ko) | 2005-05-24 |
Family
ID=24871306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-1999-7002186A KR100491435B1 (ko) | 1996-09-16 | 1997-09-16 | 다수의 시스템 버스를 가지는 컴퓨터 시스템 내의 메모리 일관성을 유지하기 위한 시스템 및 방법 |
Country Status (9)
Country | Link |
---|---|
US (2) | US5897656A (ko) |
EP (1) | EP1021768A4 (ko) |
JP (1) | JP4316016B2 (ko) |
KR (1) | KR100491435B1 (ko) |
CN (1) | CN1130644C (ko) |
AU (1) | AU4345197A (ko) |
CA (1) | CA2264518C (ko) |
RU (1) | RU2221271C2 (ko) |
WO (1) | WO1998011488A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170123683A (ko) * | 2015-07-22 | 2017-11-08 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 로그 및 무 잠금(no lock)과 함께 비휘발성 메모리를 사용하는 공유 메모리에서의 하드웨어 트랜잭셔널 메모리를 위한 코히어런스 프로토콜 |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6581126B1 (en) * | 1996-12-20 | 2003-06-17 | Plx Technology, Inc. | Method, system and apparatus for a computer subsystem interconnection using a chain of bus repeaters |
US6073225A (en) * | 1997-06-24 | 2000-06-06 | Intel Corporation | Method and apparatus for monitoring bus transactions based on cycle type and memory address range |
US7197625B1 (en) * | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6516442B1 (en) | 1997-12-07 | 2003-02-04 | Conexant Systems, Inc. | Channel interface and protocols for cache coherency in a scalable symmetric multiprocessor system |
US6065077A (en) | 1997-12-07 | 2000-05-16 | Hotrail, Inc. | Apparatus and method for a cache coherent shared memory multiprocessing system |
US6292705B1 (en) | 1998-09-29 | 2001-09-18 | Conexant Systems, Inc. | Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system |
US6633945B1 (en) | 1997-12-07 | 2003-10-14 | Conexant Systems, Inc. | Fully connected cache coherent multiprocessing systems |
US6418537B1 (en) | 1997-12-07 | 2002-07-09 | Conexant Systems, Inc. | Accurate timing calibration for each of multiple high-speed clocked receivers using a single DLL |
US6134635A (en) * | 1997-12-09 | 2000-10-17 | Intel Corporation | Method and apparatus of resolving a deadlock by collapsing writebacks to a memory |
US6334172B1 (en) * | 1998-02-17 | 2001-12-25 | International Business Machines Corporation | Cache coherency protocol with tagged state for modified values |
US6289419B1 (en) * | 1998-03-06 | 2001-09-11 | Sharp Kabushiki Kaisha | Consistency control device merging updated memory blocks |
US6295598B1 (en) * | 1998-06-30 | 2001-09-25 | Src Computers, Inc. | Split directory-based cache coherency technique for a multi-processor computer system |
US6304945B1 (en) | 1999-05-13 | 2001-10-16 | Compaq Computer Corporation | Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses |
US6469988B1 (en) | 1999-07-08 | 2002-10-22 | Conexant Systems, Inc. | Low-level circuit implementation of signal flow graphs for real-time signal processing of high-speed digital signals |
US6643787B1 (en) | 1999-10-19 | 2003-11-04 | Rambus Inc. | Bus system optimization |
JP3946393B2 (ja) * | 1999-10-19 | 2007-07-18 | 株式会社東芝 | 階層構造をもつ並列計算機 |
US7558923B1 (en) | 1999-12-22 | 2009-07-07 | Intel Corporation | Prevention of live-lock in a multi-processor system |
US6662278B1 (en) * | 2000-09-22 | 2003-12-09 | Intel Corporation | Adaptive throttling of memory acceses, such as throttling RDRAM accesses in a real-time system |
US6868481B1 (en) * | 2000-10-31 | 2005-03-15 | Hewlett-Packard Development Company, L.P. | Cache coherence protocol for a multiple bus multiprocessor system |
US7085866B1 (en) * | 2002-02-19 | 2006-08-01 | Hobson Richard F | Hierarchical bus structure and memory access protocol for multiprocessor systems |
US6959372B1 (en) * | 2002-02-19 | 2005-10-25 | Cogent Chipware Inc. | Processor cluster architecture and associated parallel processing methods |
US6757790B2 (en) * | 2002-02-19 | 2004-06-29 | Emc Corporation | Distributed, scalable data storage facility with cache memory |
CN100401731C (zh) * | 2002-06-15 | 2008-07-09 | 华为技术有限公司 | 高速数据链路控制协议接收处理模块及其数据处理方法 |
CN1293739C (zh) * | 2002-06-15 | 2007-01-03 | 华为技术有限公司 | 高速数据链路控制协议发送处理模块及其数据处理方法 |
US8185602B2 (en) | 2002-11-05 | 2012-05-22 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters |
US7191318B2 (en) * | 2002-12-12 | 2007-03-13 | Alacritech, Inc. | Native copy instruction for file-access processor with copy-rule-based validation |
US7032079B1 (en) * | 2002-12-13 | 2006-04-18 | Unisys Corporation | System and method for accelerating read requests within a multiprocessor system |
US7636815B1 (en) | 2003-04-09 | 2009-12-22 | Klaiber Alexander C | System and method for handling direct memory accesses |
US8751753B1 (en) | 2003-04-09 | 2014-06-10 | Guillermo J. Rozas | Coherence de-coupling buffer |
US7334123B2 (en) * | 2003-05-02 | 2008-02-19 | Advanced Micro Devices, Inc. | Computer system including a bus bridge for connection to a security services processor |
DE10329680A1 (de) * | 2003-07-01 | 2005-02-10 | Universität Stuttgart | Prozessorarchitektur für exakte Zeigeridentifizierung |
US8117392B2 (en) * | 2003-10-22 | 2012-02-14 | Intel Corporation | Method and apparatus for efficient ordered stores over an interconnection network |
US20050216625A1 (en) * | 2004-03-09 | 2005-09-29 | Smith Zachary S | Suppressing production of bus transactions by a virtual-bus interface |
US7434008B2 (en) * | 2004-04-23 | 2008-10-07 | Hewlett-Packard Development Company, L.P. | System and method for coherency filtering |
US7398338B2 (en) * | 2004-06-30 | 2008-07-08 | Sap Ag | Flexible and error resistant data buffering and connectivity |
CN100463393C (zh) * | 2004-08-20 | 2009-02-18 | 中兴通讯股份有限公司 | 一种异构***之间数据安全共享的装置及方法 |
US7594081B2 (en) | 2004-09-10 | 2009-09-22 | Cavium Networks, Inc. | Direct access to low-latency memory |
JP2008512786A (ja) | 2004-09-10 | 2008-04-24 | カビウム・ネットワークス | データ構造の選択的複製方法および装置 |
US7941585B2 (en) | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
US7417883B2 (en) * | 2004-12-30 | 2008-08-26 | Intel Corporation | I/O data interconnect reuse as repeater |
US7366931B2 (en) | 2004-12-30 | 2008-04-29 | Intel Corporation | Memory modules that receive clock information and are placed in a low power state |
US7203780B2 (en) * | 2005-02-22 | 2007-04-10 | Kabushiki Kaisha Toshiba | System and method for facilitating communication between devices on a bus using tags |
JP4956900B2 (ja) * | 2005-03-07 | 2012-06-20 | 富士通株式会社 | アドレススヌープ方法及びマルチプロセッサシステム |
US7386683B2 (en) * | 2005-03-29 | 2008-06-10 | International Business Machines Corporation | Method and apparatus for filtering snoop requests in a point-to-point interconnect architecture |
US7290074B2 (en) * | 2005-04-06 | 2007-10-30 | Kabushiki Kaisha Toshiba | Back-off timing mechanism |
US7971002B1 (en) | 2005-04-07 | 2011-06-28 | Guillermo Rozas | Maintaining instruction coherency in a translation-based computer system architecture |
US7373444B2 (en) * | 2005-04-15 | 2008-05-13 | Kabushiki Kaisha Toshiba | Systems and methods for manipulating entries in a command buffer using tag information |
US7738483B2 (en) * | 2005-09-08 | 2010-06-15 | Kabushiki Kaisha Toshiba | Systems and methods for managing communication between master and slave devices |
JP2007079958A (ja) * | 2005-09-14 | 2007-03-29 | Hitachi Ltd | 記憶制御装置、データ処理方法、及びコンピュータプログラム |
US20070088918A1 (en) * | 2005-10-13 | 2007-04-19 | Sun Microsystems, Inc. | Tracking dependencies among memory requests |
US8924653B2 (en) * | 2006-10-31 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | Transactional cache memory system |
US7613859B2 (en) * | 2007-09-12 | 2009-11-03 | Kabushiki Kaisha Toshiba | Back-off timing mechanism in a digital signal processor |
JP5453872B2 (ja) * | 2009-03-27 | 2014-03-26 | 日本電気株式会社 | ディスクアレイ装置、ディスク制御装置、ディスクアレイ装置における負荷分散方法 |
WO2011048582A1 (en) * | 2009-10-25 | 2011-04-28 | Plurality Ltd. | Shared cache for a tightly-coupled multiprocessor |
FR2992446B1 (fr) * | 2012-06-22 | 2015-04-10 | Commissariat Energie Atomique | Systeme et procede de traitement de donnees a gestion d'une coherence de caches dans un reseau de processeurs munis de memoires caches. |
CN104298617B (zh) * | 2014-08-20 | 2017-12-08 | 深圳大学 | 一种numa平台中非核部件数据流缓冲管理的优化方法及*** |
US9921962B2 (en) * | 2015-09-24 | 2018-03-20 | Qualcomm Incorporated | Maintaining cache coherency using conditional intervention among multiple master devices |
US10102129B2 (en) * | 2015-12-21 | 2018-10-16 | Intel Corporation | Minimizing snoop traffic locally and across cores on a chip multi-core fabric |
EP3260986B1 (en) * | 2016-06-23 | 2019-08-14 | Advanced Micro Devices, Inc. | Shadow tag memory to monitor state of cachelines at different cache level |
US10073776B2 (en) | 2016-06-23 | 2018-09-11 | Advanced Micro Device, Inc. | Shadow tag memory to monitor state of cachelines at different cache level |
US10303603B2 (en) | 2017-06-13 | 2019-05-28 | Microsoft Technology Licensing, Llc | Low power multi-core coherency |
US10282298B2 (en) | 2017-06-13 | 2019-05-07 | Microsoft Technology Licensing, Llc | Store buffer supporting direct stores to a coherence point |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4245344A (en) * | 1979-04-02 | 1981-01-13 | Rockwell International Corporation | Processing system with dual buses |
US4796232A (en) * | 1987-10-20 | 1989-01-03 | Contel Corporation | Dual port memory controller |
US4982321A (en) * | 1987-10-23 | 1991-01-01 | Honeywell Inc. | Dual bus system |
US5225374A (en) * | 1988-05-13 | 1993-07-06 | The United States Of America As Represented By The Secretary Of The Navy | Method of fabricating a receptor-based sensor |
US4953081A (en) * | 1988-12-21 | 1990-08-28 | International Business Machines Corporation | Least recently used arbiter with programmable high priority mode and performance monitor |
US5119485A (en) * | 1989-05-15 | 1992-06-02 | Motorola, Inc. | Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation |
US5261066A (en) * | 1990-03-27 | 1993-11-09 | Digital Equipment Corporation | Data processing system and method with small fully-associative cache and prefetch buffers |
US5317718A (en) * | 1990-03-27 | 1994-05-31 | Digital Equipment Corporation | Data processing system and method with prefetch buffers |
US5325510A (en) * | 1990-05-25 | 1994-06-28 | Texas Instruments Incorporated | Multiprocessor system and architecture with a computation system for minimizing duplicate read requests |
US5115411A (en) * | 1990-06-06 | 1992-05-19 | Ncr Corporation | Dual port memory system |
EP0461926B1 (en) * | 1990-06-15 | 1998-09-02 | Compaq Computer Corporation | Multilevel inclusion in multilevel cache hierarchies |
IE860318L (en) * | 1990-10-01 | 1986-08-05 | Digital Equipment Corp | System bus for a multi-cache data processing system |
US5265232A (en) * | 1991-04-03 | 1993-11-23 | International Business Machines Corporation | Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data |
US5293603A (en) * | 1991-06-04 | 1994-03-08 | Intel Corporation | Cache subsystem for microprocessor based computer system with synchronous and asynchronous data path |
DE69227956T2 (de) * | 1991-07-18 | 1999-06-10 | Tandem Computers Inc., Cupertino, Calif. | Multiprozessorsystem mit gespiegeltem Speicher |
US5369748A (en) * | 1991-08-23 | 1994-11-29 | Nexgen Microsystems | Bus arbitration in a dual-bus architecture where one bus has relatively high latency |
US5269005A (en) * | 1991-09-17 | 1993-12-07 | Ncr Corporation | Method and apparatus for transferring data within a computer system |
US5359715A (en) * | 1991-09-16 | 1994-10-25 | Ncr Corporation | Architectures for computer systems having multiple processors, multiple system buses and multiple I/O buses interfaced via multiple ported interfaces |
US5265211A (en) * | 1992-01-02 | 1993-11-23 | International Business Machines Corporation | Arbitration control logic for computer system having dual bus architecture |
US5319766A (en) * | 1992-04-24 | 1994-06-07 | Digital Equipment Corporation | Duplicate tag store for a processor having primary and backup cache memories in a multiprocessor computer system |
US5553258A (en) * | 1992-04-24 | 1996-09-03 | Digital Equipment Corporation | Method and apparatus for forming an exchange address for a system with different size caches |
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 |
US5495585A (en) * | 1992-10-16 | 1996-02-27 | Unisys Corporation | Programmable timing logic system for dual bus interface |
US5404462A (en) * | 1992-10-16 | 1995-04-04 | Unisys Corporation | Dual bus interface transfer system for central processing module |
US5442754A (en) * | 1992-12-04 | 1995-08-15 | Unisys Corporation | Receiving control logic system for dual bus network |
US5386517A (en) * | 1993-01-26 | 1995-01-31 | Unisys Corporation | Dual bus communication system connecting multiple processors to multiple I/O subsystems having a plurality of I/O devices with varying transfer speeds |
US5553263A (en) * | 1993-07-16 | 1996-09-03 | Unisys Corporation | Cache memory system with fault tolerance having concurrently operational cache controllers processing disjoint groups of memory |
US5857084A (en) | 1993-11-02 | 1999-01-05 | Klein; Dean A. | Hierarchical bus structure access system |
US5623628A (en) * | 1994-03-02 | 1997-04-22 | Intel Corporation | Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue |
EP0735487B1 (en) * | 1995-03-31 | 2001-10-31 | Sun Microsystems, Inc. | A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system |
US5684977A (en) * | 1995-03-31 | 1997-11-04 | Sun Microsystems, Inc. | Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system |
US5802278A (en) | 1995-05-10 | 1998-09-01 | 3Com Corporation | Bridge/router architecture for high performance scalable networking |
US5740400A (en) * | 1995-06-05 | 1998-04-14 | Advanced Micro Devices Inc. | Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field |
US5673400A (en) | 1995-06-06 | 1997-09-30 | National Semiconductor Corporation | Method and apparatus for identifying and controlling a target peripheral device in a multiple bus system |
US5822755A (en) * | 1996-01-25 | 1998-10-13 | International Business Machines Corporation | Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache |
US5829033A (en) * | 1996-07-01 | 1998-10-27 | Sun Microsystems, Inc. | Optimizing responses in a coherent distributed electronic system including a computer system |
US5900011A (en) * | 1996-07-01 | 1999-05-04 | Sun Microsystems, Inc. | Integrated processor/memory device with victim data cache |
-
1996
- 1996-09-16 US US08/714,750 patent/US5897656A/en not_active Expired - Lifetime
-
1997
- 1997-09-16 EP EP97941565A patent/EP1021768A4/en not_active Withdrawn
- 1997-09-16 CA CA002264518A patent/CA2264518C/en not_active Expired - Fee Related
- 1997-09-16 WO PCT/US1997/016207 patent/WO1998011488A1/en active IP Right Grant
- 1997-09-16 CN CN97199718A patent/CN1130644C/zh not_active Expired - Fee Related
- 1997-09-16 RU RU99107385/09A patent/RU2221271C2/ru not_active IP Right Cessation
- 1997-09-16 AU AU43451/97A patent/AU4345197A/en not_active Abandoned
- 1997-09-16 JP JP51390898A patent/JP4316016B2/ja not_active Expired - Lifetime
- 1997-09-16 KR KR10-1999-7002186A patent/KR100491435B1/ko not_active IP Right Cessation
-
1999
- 1999-01-12 US US09/228,665 patent/US6622214B1/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170123683A (ko) * | 2015-07-22 | 2017-11-08 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 로그 및 무 잠금(no lock)과 함께 비휘발성 메모리를 사용하는 공유 메모리에서의 하드웨어 트랜잭셔널 메모리를 위한 코히어런스 프로토콜 |
US11614959B2 (en) | 2015-07-22 | 2023-03-28 | Huawei Technologies Co., Ltd. | Coherence protocol for hardware transactional memory in shared memory using non volatile memory with log and no lock |
Also Published As
Publication number | Publication date |
---|---|
CA2264518C (en) | 2006-01-10 |
EP1021768A4 (en) | 2002-08-14 |
US6622214B1 (en) | 2003-09-16 |
JP4316016B2 (ja) | 2009-08-19 |
JP2001503889A (ja) | 2001-03-21 |
CA2264518A1 (en) | 1998-03-19 |
RU2221271C2 (ru) | 2004-01-10 |
WO1998011488A1 (en) | 1998-03-19 |
KR100491435B1 (ko) | 2005-05-24 |
CN1130644C (zh) | 2003-12-10 |
CN1238050A (zh) | 1999-12-08 |
EP1021768A1 (en) | 2000-07-26 |
AU4345197A (en) | 1998-04-02 |
US5897656A (en) | 1999-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100491435B1 (ko) | 다수의 시스템 버스를 가지는 컴퓨터 시스템 내의 메모리 일관성을 유지하기 위한 시스템 및 방법 | |
US6049847A (en) | System and method for maintaining memory coherency in a computer system having multiple system buses | |
US6405289B1 (en) | Multiprocessor system in which a cache serving as a highest point of coherency is indicated by a snoop response | |
US9792210B2 (en) | Region probe filter for distributed memory system | |
US5394555A (en) | Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory | |
JP3722415B2 (ja) | 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム | |
US6789173B1 (en) | Node controller for performing cache coherence control and memory-shared multiprocessor system | |
US6633967B1 (en) | Coherent translation look-aside buffer | |
JP3533355B2 (ja) | キャッシュ・メモリ・システム | |
US5878268A (en) | Multiprocessing system configured to store coherency state within multiple subnodes of a processing node | |
US6826653B2 (en) | Block data mover adapted to contain faults in a partitioned multiprocessor system | |
US7093079B2 (en) | Snoop filter bypass | |
US20030046356A1 (en) | Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system | |
US6266743B1 (en) | Method and system for providing an eviction protocol within a non-uniform memory access system | |
US6334172B1 (en) | Cache coherency protocol with tagged state for modified values | |
US6560681B1 (en) | Split sparse directory for a distributed shared memory multiprocessor system | |
JPH0576060B2 (ko) | ||
US6269428B1 (en) | Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system | |
US6226718B1 (en) | Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system | |
US6247098B1 (en) | Cache coherency protocol with selectively implemented tagged state | |
US6701416B1 (en) | Cache coherency protocol with tagged intervention of modified values | |
US6341336B1 (en) | Cache coherency protocol having tagged state used with cross-bars | |
US6813694B2 (en) | Local invalidation buses for a highly scalable shared cache memory hierarchy | |
JPH09128346A (ja) | 階層バスシステム | |
US6484241B2 (en) | Multiprocessor computer system with sectored cache line system bus protocol mechanism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
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: 20090513 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |