[go: up one dir, main page]

KR19990072313A - Cache coherency protocol having a hovering (h) state for instructions and data - Google Patents

Cache coherency protocol having a hovering (h) state for instructions and data Download PDF

Info

Publication number
KR19990072313A
KR19990072313A KR1019990002795A KR19990002795A KR19990072313A KR 19990072313 A KR19990072313 A KR 19990072313A KR 1019990002795 A KR1019990002795 A KR 1019990002795A KR 19990002795 A KR19990002795 A KR 19990002795A KR 19990072313 A KR19990072313 A KR 19990072313A
Authority
KR
South Korea
Prior art keywords
cache
data
state
data item
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
KR1019990002795A
Other languages
Korean (ko)
Inventor
아리밀리레비쿠마
도드슨존스티븐
루이스제리돈
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR19990072313A publication Critical patent/KR19990072313A/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture

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

데이터 처리 시스템에서 캐시 코히어런시(cache coherency)를 유지하기 위한 캐시 및 방법을 개시하고 있다. 상기 데이터 처리 시스템은 각각이 다수의 캐시들중 하나에 각각 관련되어 있는 다수의 프로세서를 포함한다. 상기 방법에 따르면, 하나의 데이터 항목은 상기 데이터 항목의 하나의 주소를 지정하는 하나의 주소 태그(address tag)와 관련되어 캐시들중 제1 캐시에 저장된다. 제1 캐시의 코히어런시 지시기(coherency indicator)는 데이터 항목이 유효(valid)함을 나타내는 제1 상태로 설정된다. 상기 코히어런시 지시기가 제1 상태로 설정되어 있는 동안에, 상기 캐시들중 또 다른 하나가 상기의 주소 태그가 지정하는 주소에 저장할 의도를 내비치면, 이에 응답하여 제1 캐시의 코히어런시 지시기는 상기 주소 태그는 유효하지만 제1 캐시의 데이터 항목은 무효(invalid)임을 나타내는 제2 상태로 갱신된다. 그 후, 하나의 실시예에 따르면, 코히어런시 지시기가 제2 상태로 설정되어 있는 동안에 주소 태그가 지정하는 주소와 관련된 데이타 전송을 감지하고, 이에 응답하여 제1 데이터 항목은 제2 데이터 항목을 상기 제1 캐시에 주소 태그와 관련해 저장함으로써 대체된다. 또한, 코히어런시 지시기는 제2 데이터 항목이 유효함을 나타내는 제3 상태로 갱신된다.A cache and method are disclosed for maintaining cache coherency in a data processing system. The data processing system includes a plurality of processors, each associated with one of the plurality of caches. According to the method, one data item is stored in a first one of the caches in association with one address tag specifying one address of the data item. The coherency indicator of the first cache is set to a first state indicating that the data item is valid. While the coherency indicator is set to the first state, if one of the caches intends to store at the address specified by the address tag, in response to the coherency of the first cache The indicator is updated to a second state indicating that the address tag is valid but the data item in the first cache is invalid. Then, according to one embodiment, the data transmission associated with the address specified by the address tag while detecting the coherency indicator is set to the second state, and in response, the first data item is detected as the second data item. Is stored in association with an address tag in the first cache. The coherency indicator is also updated to a third state indicating that the second data item is valid.

Description

명령어 및 데이터를 위한 배회 상태를 가지는 캐시 코히어런시 프로토콜{ CACHE COHERENCY PROTOCOL HAVING A HOVERING (H) STATE FOR INSTRUCTIONS AND DATA}CACHE COHERENCY PROTOCOL HAVING A HOVERING (H) STATE FOR INSTRUCTIONS AND DATA}

본 발명은 데이터 처리용 방법 및 시스템에 관한 것으로, 특히 멀티 프로세서 데이터 처리 시스템에서의 캐시 코히어런시를 유지하기 위한 방법 및 시스템에 관한 것이다. 더 상세히 말하면, 본 발명은 제2 캐시가 제1 및 제2 캐시들을 결합시키는 인터커넥트상에 유효한 데이터를 독립적으로 전송하면, 이에 응답하여 제1 캐시가 유효한 데이터를 가지고 갱신되도록 해주는 배회(hovering; H) 상태를 포함하는 멀티 프로세서 데이터 처리 시스템용의 개량된 캐시 코히어런시 프로토콜에 관한 것이다.TECHNICAL FIELD The present invention relates to methods and systems for data processing, and more particularly, to methods and systems for maintaining cache coherency in multiprocessor data processing systems. More specifically, the present invention provides an Hovering (H) that allows the first cache to be updated with valid data in response to the second cache independently transmitting valid data on the interconnect combining the first and second caches. And an improved cache coherency protocol for a multiprocessor data processing system.

종래의 대칭 멀티 프로세서(symmetric multiprocessor; SMP) 데이터 처리 시스템에서 모든 프로세서들은 일반적으로 서로 동일하고, 즉 모든 프로세서들이 공통의 명령 세트 및 통신 프로토콜을 사용하고, 유사한 하드웨어 구조를 가지며, 유사한 메모리 계층 구조를 일반적으로 지원받고 있다. 예를 들어, 종래의 SMP 데이터 처리 시스템은 하나의 시스템 메모리, 각각이 하나의 프로세서 및 하나 이상의 레벨의 캐시 메모리를 가지는 다수의 처리 소자들, 및 처리 소자들을 서로 그리고 시스템 메모리에 결합시키는 시스템 버스(system bus)를 포함한다. 하나의 SMP 데이터 처리 시스템에서 유효한 실행 결과를 얻기 위해서는, 코히어런트한 메모리 계층 구조를 유지하는 것, 즉 메모리 내용들의 똑같은 관점(view)을 모든 프로세서들에 지원하는 것이 중요하다.In a conventional symmetric multiprocessor (SMP) data processing system, all processors are generally identical to one another, that is, all processors use a common instruction set and communication protocol, have similar hardware structures, and have similar memory hierarchies. Generally supported. For example, a conventional SMP data processing system includes one system memory, a plurality of processing elements each having one processor and one or more levels of cache memory, and a system bus that couples the processing elements to each other and to system memory. system bus). In order to obtain valid execution results in one SMP data processing system, it is important to maintain a coherent memory hierarchy, that is, to support all processors with the same view of memory contents.

코히어런트한 메모리 계층 구조는 MESI 프로토콜과 같은 하나의 선택된 메모리 코히어런시 프로토콜을 사용함으로써 유지된다. MESI 프로토콜에서는, 코히어런시 상태의 표시(indication)가 적어도 모든 상위 레벨 (캐시) 메모리들의 각각의 코히어런시 그래뉼(granule) (예를 들어, 캐시 라인이나 섹터)과 관련되어 저장된다. 각각의 코히어런시 그래뉼은 캐시 디렉토리에서 두 개의 비트로 표시되는 수정(modified; M) 상태, 배제(exclusive; E) 상태, 공유(shared; S) 상태, 또는 무효(invalid; I) 상태들중 하나의 상태를 가질 수 있다. 수정 상태(modified state)는 하나의 코히어런시 그래뉼이 수정된 코히어런시 그래뉼을 저장하는 캐시에서만 단지 유효하고 수정된 코히어런시 그래뉼의 값은 시스템 메모리에 기록되지 않았었음을 나타낸다. 하나의 코히어런시 그래뉼이 배제 상태(exclusive state)를 나타낼때는, 그 코히어런시 그래뉼이 메모리 계층 구조의 그 레벨에 있는 모든 캐시들중에서 배제 상태의 코히어런시 그래뉼을 가지는 캐시에만 상주한다. 그러나, 배제 상태에서 데이터는 시스템 메모리와 일치한다. 만약, 하나의 코히어런시 그래뉼이 하나의 캐시 디렉토리에서 공유(shared)로 표시되어 있다면, 코히어런시 그래뉼은 관련 캐시 및 시스템 계층 구조의 동일한 레벨의 적어도 하나의 다른 캐시에도 상주한다. 상기의 코히어런시 그래뉼의 모든 카피들은 시스템 메모리와 일치한다. 마지막으로, 무효 상태(invalid state)는 하나의 코히어런시 그래뉼과 관련되어 있는 데이터 및 주소 태그가 모두 무효임을 나타낸다.The coherent memory hierarchy is maintained by using one selected memory coherency protocol, such as the MESI protocol. In the MESI protocol, an indication of coherency status is stored in association with each coherent granule (eg, cache line or sector) of at least all of the upper level (cache) memories. Each coherency granule is one of two states, modified (M), exclusive (E), shared (S), or invalid (I) states, represented by two bits in the cache directory. It can have one state. The modified state indicates that one coherency granule is only valid in a cache that stores the modified coherency granule and that the value of the modified coherency granule has not been written to system memory. When a coherency granule exhibits an exclusive state, the coherency granule resides only in a cache that has an exclusive coherency granule among all caches in that level of the memory hierarchy. do. However, in the exclusion state, the data is consistent with the system memory. If one coherency granule is marked as shared in one cache directory, the coherency granule resides in at least one other cache of the same level of the associated cache and system hierarchy. All copies of the coherency granules above correspond to system memory. Finally, an invalid state indicates that both data and address tags associated with one coherent granule are invalid.

각각의 코히어런시 그래뉼 (예를 들어, 캐시 라인)이 설정되어 있는 상태는 캐시 라인의 전 상태 및 요구하는 프로세서(requesting processor)에 의해 달성된 메모리 접근 타입(type of memory access)에 모두 달려있다. 따라서, 멀티 프로세서 데이터 처리 시스템에서 메모리 코히어런시를 유지하는 것은 프로세서들이 기억 장소들에서 판독하거나 기록하고자 하는 의도를 나타내면서 시스템 버스를 통해 메시지를 통신하는 것을 요구한다. 예를 들어, 하나의 프로세서가 하나의 기억 장소에 데이터를 기록하고자 할 때, 그 프로세서는 먼저 모든 다른 처리 소자들에게 그 기억 장소에 데이터를 기록한다는 것을 알리고, 모든 다른 처리 소자들로부터 허가를 받은 후에 기록 행위를 할 수 있다. 상기의 요구하는 프로세서가 수신한 허가 메시지들은 그 기억 장소 내용들의 다른 모든 저장된 카피들이 무효가 되었음을 나타내고, 그로 인해 다른 프로세서들이 실효한 국부 데이터(stale local data)에 접근 하지 않을 것임을 보증한다. 이러한 메시지들의 교환은 교차-무효화(cross-invalidation; XI)라고 알려져 있다.The state in which each coherency granule (e.g., cache line) is set depends on both the state of the cache line and the type of memory access achieved by the requesting processor. have. Thus, maintaining memory coherency in a multiprocessor data processing system requires processors to communicate messages over the system bus indicating the intention to read or write in storage locations. For example, when a processor wants to write data to one storage location, the processor first informs all other processing elements that it is writing data to that storage location, and gets permission from all other processing elements. You can record later. The permission messages received by the requesting processor indicate that all other stored copies of the storage contents have been invalidated, thereby ensuring that other processors will not have access to stale local data. The exchange of such messages is known as cross-invalidation (XI).

본 발명은 캐시 엔트리들의 교차-무효화가 SMP 테이타 처리 시스템에서 메모리 코히어런시를 유지하도록 하는 동안에, 반대로 원거리 프로세서들에 의한 캐시 엔트리(cache entry)들의 무효화가 국부 캐시들에서 히트 비(hit ratio)들을 감소 시킴으로써 데이터 처리 시스템의 성능에 영향을 미친다는 인식을 포함한다. 그러므로, 대용량 국부 캐시들을 구비하더라도, 하나의 처리 소자는 하나의 국부 캐시에 한번이라도 상주한 적이 있는 데이터를 또 다른 처리 소자에 있는 다른 하나의 원거리 캐시 또는 시스템 메모리로부터 검색할 때, 긴 접근 대기 시간(access latency)을 초래할 수 있다. 위에서 드러난 바와 같이, 캐시 엔트리들의 교차-무효화에 의해 초래된 성능상의 결점을 줄일 수 있는 메모리 코히어런시를 유지하기 위한 방법과 시스템을 SMP 데이터 처리 시스템에 지원하는 것이 바람직하다.The present invention allows the cross-validation of cache entries to maintain memory coherency in an SMP data processing system, whereas the invalidation of cache entries by remote processors is a hit ratio in local caches. By reducing the number of elements), which may affect the performance of the data processing system. Thus, even with large local caches, one processing element may have a long access latency when retrieving data from a remote cache or system memory in another processing element that once resided in one local cache. may result in access latency. As noted above, it is desirable to support a SMP data processing system with a method and system for maintaining memory coherency that can reduce the performance shortcomings caused by cross-validation of cache entries.

본 발명의 하나의 목적은 데이터 처리를 위한 개량된 방법 및 시스템을 지원하는 것이다.One object of the present invention is to support an improved method and system for data processing.

본 발명의 또 다른 목적은 캐시 코히어런시를 유지하기 위한 개량된 방법 및 시스템을 멀티 프로세서 데이터 처리 시스템에 지원하는 것이다.It is yet another object of the present invention to support multiprocessor data processing systems with an improved method and system for maintaining cache coherency.

본 발명의 또 다른 하나의 목적은 제2 캐시가 제1 및 제2 캐시들을 결합시키는 인터커넥트상에 유효한 데이터를 독립적으로 전송하면, 이에 응답하여 제1 캐시가 유효한 데이터를 가지고 갱신되도록 해주는 배회(H) 상태를 포함하는 멀티 프로세서 데이터 처리 시스템에 캐시 코히어런시 프로토콜을 지원하는 것이다.It is yet another object of the present invention to provide for a roaming request that, when the second cache independently transmits valid data on the interconnect combining the first and second caches, the first cache is updated with valid data in response thereto. It supports the cache coherency protocol for multiprocessor data processing systems that include.

상기의 목적들은 이하에 설명된 것처럼 달성된다. 각각이 다수의 캐시들중 하나에 관련되어 있는 다수의 프로세서들을 포함하는 데이터 처리 시스템이 지원된다. 본 발명의 방법에 따르면, 하나의 데이터 항목은 데이터 항목의 주소를 지정하는 주소 태그와 관련되어 캐시들중 제1 캐시에 저장된다. 제1 캐시에서의 코히어런시 지시기는 상기의 데이터 항목이 유효함을 나타내는 제1 상태로 설정된다. 상기 코히어런시 지시기가 제1 상태로 설정되어 있는 동안에, 상기 캐시들중 또 다른 하나가 상기의 주소 태그가 지정하는 주소에 저장할 의도를 내비치면, 제1 캐시의 코히어런시 지시기는 상기 주소 태그는 유효하지만 제1 캐시의 데이터 항목은 무효임을 나타내는 제2 상태로 갱신된다. 그 후, 하나의 실시예에 따르면, 코히어런시 지시기가 제2 상태로 설정되어 있는 동안에 주소 태그가 지정하는 주소와 관련된 데이타 전송을 감지하고, 이에 응답하여 제1 데이터 항목은 제2 데이터 항목을 주소 태그와 관련해 상기 제1 캐시에 저장함으로써 대체된다. 또한, 코히어런시 지시기는 제2 데이터 항목이 유효함을 나타내는 제3 상태로 갱신된다.The above objects are achieved as described below. Data processing systems are supported that include a plurality of processors, each associated with one of a plurality of caches. According to the method of the present invention, one data item is stored in a first of the caches in association with an address tag that addresses the data item. The coherency indicator in the first cache is set to a first state indicating that the data item is valid. While the coherency indicator is set to the first state, if another one of the caches intends to store at the address specified by the address tag, the coherency indicator of the first cache is The address tag is updated to a second state indicating that the address tag is valid but the data item in the first cache is invalid. Then, according to one embodiment, the data transmission associated with the address specified by the address tag while detecting the coherency indicator is set to the second state, and in response, the first data item is detected as the second data item. Is stored in the first cache in association with an address tag. The coherency indicator is also updated to a third state indicating that the second data item is valid.

본 발명의 상기 뿐만 아니라 추가적인 목적들, 특징들, 및 효과들도 이하의 상세한 설명에서 명백해질 것이다.Further objects, features, and effects as well as the above of the present invention will become apparent from the following detailed description.

도 1은 본 발명에 따른 멀티 프로세서 데이터 처리 시스템의 하나의 예시적 실시예를 도시한 도면.1 illustrates one exemplary embodiment of a multiprocessor data processing system in accordance with the present invention.

도 2는 본 발명에 따른 하나의 캐시의 예시적 실시예를 설명하는 블록도.2 is a block diagram illustrating an exemplary embodiment of one cache in accordance with the present invention.

도 3은 본 발명의 H-MESI 메모리 코히어런시 프로토콜의 하나의 예시적 실시예를 설명한 상태도.3 is a state diagram illustrating one exemplary embodiment of the H-MESI memory coherency protocol of the present invention.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

10 : 프로세서10: processor

12 : L1 캐시12: L1 cache

14 : L2 캐시14: L2 Cache

16 : 인터커넥트16: Interconnect

18 : 시스템 메모리18: system memory

도면들을, 특히 도 1을 참조해 본 발명에 따른 멀티 프로세서 데이터 처리 시스템의 상위 레벨 블록도를 설명하겠다. 도시된 바와 같이, 데이터 처리 시스템(8)은 바람직하게는 각각이 IBM 사로부터 얻을 수 있는 프로세서들중 하나인 PowerPCtm라인을 포함하는 수많은 프로세서(10a-10n)를 포함한다. 종래의 레지스터들, 명령 흐름 로직, 및 프로그램 명령어들의 실행을 위해 사용되는 실행 유닛들에 부가해, 각각의 프로세서(10a-10n)는 온-보드(on-board) 레벨의 L1 캐시들(12a-12n)들중 관련된 하나씩을 포함한다. 상기의 각각의 L1 캐시들(12a-12n)은 관련된 프로세서에 의해 접근되기 쉬운 명령어 및 데이터를 임시로 저장한다. L1 캐시들(12a-12n)이 도 1에서는 명령어 및 데이터 (이하에서는, 단지 데이터로 언급함) 모두를 저장하는 단일화된 캐시들로 설명되어 있을지라도, 당업자는 각각의 L1 캐시들(12a-12n)이 택일적으로 명령 캐시와 데이터 캐시로 분기되어 구현될 수 있음을 이해할 수 있다.The upper level block diagram of a multiprocessor data processing system according to the present invention will be described with reference to the drawings, in particular with reference to FIG. As shown, the data processing system 8 preferably includes a number of processors 10a-10n that each include a PowerPC tm line, one of the processors available from IBM. In addition to conventional registers, instruction flow logic, and execution units used for the execution of program instructions, each processor 10a-10n is on-board level L1 caches 12a-. 12n) of the relevant one. Each of the L1 caches 12a-12n temporarily stores instructions and data that are easily accessible by the associated processor. Although the L1 caches 12a-12n are described in FIG. 1 as unified caches that store both instructions and data (hereafter referred to only as data), those skilled in the art will appreciate that each L1 cache 12a-12n It can be appreciated that) may alternatively be implemented branched to an instruction cache and a data cache.

데이터 접근 대기 시간을 최소화하기 위해서, 데이터 처리 시스템(8)은 L1 캐시들(12a-12n)에 데이터를 올려주기 위해서 사용되는 제2 레벨(L2) 캐시들(14a-14n)과 같은 하나 이상의 추가적인 캐시 메모리 레벨도 역시 포함한다. 즉 L2 캐시들(14a-14n)은 시스템 메모리(18)와 L1 캐시들(12a-12n)들 사이에 중간 저장 수단(intermediate storage)으로 기능해서, L1 캐시들(12a-12n)보다는 훨씬 많은 양의 데이터를 저장할 수 있으나 더 긴 접근 대기 시간을 가진다. 예를 들면, L1 캐시들(12a-12n)이 64 내지 128 킬로바이트의 저장 용량을 가짐에 비해, L2 캐시들(14a-14n)은 256 내지 512 킬로바이트의 저장 용량을 가질 수 있다. 상기에서 드러난 바와 같이, 도 1이 단지 두개의 레벨로 된 캐시를 도시할 지라도, 데이터 처리 시스템(8)의 메모리 계층 구조는 순차적으로 연결되거나, 또는 룩어사이드(lookaside) 캐시들의 추가적인 레벨들을 포함하는 것으로 확장될 수 있다.In order to minimize data access latency, the data processing system 8 may include one or more additional, such as second level (L2) caches 14a-14n used to load data into the L1 caches 12a-12n. It also includes the cache memory level. That is, the L2 caches 14a-14n serve as intermediate storage between the system memory 18 and the L1 caches 12a-12n, so much larger than the L1 caches 12a-12n. Can store data but has a longer access latency. For example, L2 caches 14a-14n may have 256 to 512 kilobytes of storage, whereas L1 caches 12a-12n have a storage capacity of 64 to 128 kilobytes. As noted above, although FIG. 1 only illustrates a two level cache, the memory hierarchy of the data processing system 8 may be concatenated sequentially or include additional levels of lookaside caches. Can be extended to

설명한 대로, 데이터 처리 시스템(8)은 각각이 인터커넥트에 결합되어 있는 입/출력 장치(20), 시스템 메모리(18), 및 불휘발성 저장 장치(non-volatile storage; 22)를 더 포함한다. 입/출력 장치(20)는 각각이 기존의 어댑터들을 통해 인터커넥트(16)에 접속되는 표시 장치, 키보드, 및 그래픽 포인터와 같은 기존의 주변 장치를 포함한다. 불휘발성 저장 장치(22)는 데이터 처리 시스템(8)에 전원이 켜질 때에 응답해서 휘발성 시스템 메모리(18)로 옮겨질 구동 시스템 및 다른 소프트웨어를 저장한다. 물론, 당업자는 도 1에는 나타나지 않았지만 데이터 처리 시스템(8)이 네트워크나 부수 시스템에 연결하기 위한 직렬/병렬 포트 및 시스템 메모리(18)에의 접근을 조정하는 메모리 제어기 등과 같은 많은 추가적인 구성 요소들을 포함할 수 있음을 이해하여야 할 것이다.As described, the data processing system 8 further includes an input / output device 20, a system memory 18, and a non-volatile storage 22, each of which is coupled to an interconnect. Input / output device 20 includes conventional peripherals such as display devices, keyboards, and graphical pointers, each of which is connected to interconnect 16 via existing adapters. The nonvolatile storage device 22 stores the drive system and other software to be transferred to the volatile system memory 18 in response to the data processing system 8 being powered on. Of course, those skilled in the art will include many additional components, such as not shown in FIG. 1, such as a memory controller for coordinating access to the system memory 18 and serial / parallel ports for connecting the data processing system 8 to a network or ancillary systems. It should be understood that it can.

하나 이상의 버스들이나 교차점 스위치(cross-point switch)를 포함할 수 있는 인터커넥트(16)는 L2 캐시들(14a-14n), 시스템 메모리(18), 입/출력 장치(20), 및 불휘발성 저장 장치(22)들 사이의 통신 트랜잭션(communication transaction)을 위한 연결 통로 역할을 한다. 인터커넥트(16)상의 전형적 통신 트랜잭션은 트랜잭션의 소스를 지정하는 소스 태그(source tag), 트랜잭션의 원하는 수취인을 지정하는 목적지 태그, 주소, 및/또는 데이터를 포함한다. 인터커넥트(16)에 연결된 각각의 장치는 바람직하게는 인터커넥트(16)상의 모든 통신 트랜잭션들을 스누프(snoop)한다.Interconnect 16, which may include one or more buses or cross-point switches, includes L2 caches 14a-14n, system memory 18, input / output device 20, and nonvolatile storage. It serves as a connection channel for communication transactions between the (22). A typical communication transaction on interconnect 16 includes a source tag that specifies the source of the transaction, a destination tag, address, and / or data that specifies the desired recipient of the transaction. Each device connected to the interconnect 16 preferably snoops all communication transactions on the interconnect 16.

지금부터 도 2를 참조하면, 본 발명에 따른 L2 캐시(14)의 예시적 실시예의 더 상세한 블록도가 도시되어 있다. 상기의 예시적 실시예에서 L2 캐시(14)는 32비트 주소를 사용하는 4-경로 세트 어소시어티브 캐시(four-way set associate cache)이다. 따라서, L2 캐시(14)의 데이터 어래이(34)는 각각이 캐시 라인들을 저장하기 위해 4개의 경로들을 포함하고 있는 다수의 상동 클래스(congruence class)들을 포함한다. 종래의 세트 어소시어티브 캐시들에서처럼, 시스템 메모리(18)의 기억 장소들은 기억 장소의 주소 안에 인덱스 비트 (예를 들어, 32 비트 주소중에서 20-26 비트임)를 이용해서 데이터 어래이(34)내의 특정한 상동 클래스들에 맵핑(mapping)된다.Referring now to FIG. 2, a more detailed block diagram of an exemplary embodiment of an L2 cache 14 in accordance with the present invention is shown. In the exemplary embodiment above, the L2 cache 14 is a four-way set associate cache using a 32 bit address. Thus, the data array 34 of the L2 cache 14 includes a number of congruence classes, each of which contains four paths for storing cache lines. As in conventional set associative caches, the storage locations of system memory 18 are stored in data array 34 using index bits (eg, 20-26 bits in 32-bit addresses) within the storage location address. Mapped to specific homology classes.

데이터 어래이(34)내에 저장된 캐시 라인들은 데이터 어래이(34)내에 각각의 경로를 위한 하나의 디렉토리 엔트리(directory entry)를 포함하고 있는 캐시 디렉토리(32)에 기록된다. 각각의 디렉토리 엔트리는 태그 필드(tag field; 40), 코히어런시 상태 필드(coherency status field; 42), 최저 사용 빈도 필드(least recently used field; LRU field; 44), 및 포함 필드(inclusion field; 46)를 포함한다. 태그 필드(40)는 캐시 라인의 시스템 메모리 주소의 태그 비트들 (예를 들어, 0-19 비트임)을 저장함으로써, 어떠한 캐시 라인이 데이터 어래이(34)의 해당 경로에 저장되는지를 특정한다. 도 3을 참조해서 이하에 더 상세히 설명하면, 코히어런시 상태 필드(42)는 데이터 어래이(34)의 해당 경로에 저장된 데이터 코히어런시 상태를 미리 정해진 비트 조합들을 사용하여 나타낸다. LRU 필드(44)는 데이터 어래이(34)의 해당 경로가 그것의 상동 클래스의 다른 경로들에 비하여 얼마나 최근에 접근되었는가를 나타내고, 그에 의해서 어떤 캐시 라인이 캐시 미스(cache miss)에 응답해서 상동 클래스 밖으로 캐스트-아웃(cast-out) 되는지를 나타낸다. 마지막으로, 포함 필드(46)는 데이터 어레이(34)의 해당 경로에 저장된 캐시 라인이 관련된 L1 캐시(12)에 또한 저장되는지 여부를 나타낸다.Cache lines stored in data array 34 are written to cache directory 32 which contains one directory entry for each path in data array 34. Each directory entry has a tag field 40, a coherency status field 42, a least recently used field (LRU field) 44, and an inclusion field. 46). The tag field 40 stores the tag bits (eg, 0-19 bits) of the system memory address of the cache line, thereby specifying which cache line is stored in that path of the data array 34. Referring to FIG. 3 in more detail below, the coherency state field 42 indicates the data coherency state stored in the corresponding path of the data array 34 using predetermined bit combinations. LRU field 44 indicates how recently the corresponding path of data array 34 has been accessed relative to other paths of its homology class, whereby a cache line has a homology class in response to a cache miss. Indicates if it is cast out. Finally, the inclusion field 46 indicates whether the cache line stored in the corresponding path of the data array 34 is also stored in the associated L1 cache 12.

도 2를 계속해서 참조하면, L2 캐시(14)는 관련된 L1 캐시(12)로부터 수신된 신호들 및 인터커넥트(16)상에서 스누프된 트랜잭션들에 응답해서, 데이터 어레이(34)속의 데이터 저장과 검색를 관리하고 캐시 디렉토리(32)를 갱신(update)하는 캐시 제어기(36)을 더 포함한다. 상기에서 설명한 것처럼, 캐시 제어기(36)는 캐시 디렉토리(32)를 갱신하고 데이터 어레이(34)에 접근하도록 하는 판독 대기 행렬(50) 및 기록 대기 행렬(52)을 포함한다. 예를 들어, 만약 관련된 L1 캐시(12)로부터 판독 요구를 받으면, 이에 응답하여 캐시 제어기(36)는 판독 요구를 판독 대기 행렬(50)내의 하나의 엔트리 상에 위치시킨다. 캐시 제어기(36)는 요구된 데이터를 관련된 L1 캐시(12)에 공급함으로써 판독 요구에 서비스를 지원하고, 그러고 난 후 상기 판독 요구를 판독 대기 행렬(50)에서 제거한다. 또 다른 예를 들면, 캐시 제어기(36)는 또 다른 L2 캐시들(14a-14n)에 의해 개시되어 원거리 프로세서(10)가 특정한 하나의 캐시 라인의 국부 카피를 수정하고자 함을 나타내는, 하나의 트랜잭션을 스누프할 수 있다. 상기의 트랜잭션을 스누프하고, 이에 응답해 캐시 제어기(36)는 상기의 특정한 캐시 라인이 데이터 어레이(34)에 상주하는지 여부를 결정하기 위해서, 캐시 디렉토리(32)를 판독하라는 요구를 판독 대기 행렬(50)에 위치시킨다. 만약 상주한다면, 캐시 제어기(36)는 인터커넥트(16)상에 적절한 응답을 위치시키고, 만약 필요하다면, 그것을 지원 받을 때 상기의 특정한 캐시 라인과 관련된 코히어런시 상태 필드를 갱신시키라는 디렉토리 기록 요구를 기록 대기 행렬(52)에 끼워넣는다. 도 2가 단지 하나의 판독 대기 행렬과 하나의 기록 대기 행렬만을 사용하는 실시예를 설명할지라도, 캐시 제어기(36)에 의해 지원된 대기 행렬의 수는 설계상의 문제이고, 캐시 제어기(36)는 캐시 디렉토리 접근 및 데이터 어레이 접근을 위해 별개의 대기 행렬들도 지원할 수 있음을 이해해야 한다.With continued reference to FIG. 2, the L2 cache 14 responds to signals received from the associated L1 cache 12 and to snooped transactions on the interconnect 16 to perform data storage and retrieval in the data array 34. It further includes a cache controller 36 for managing and updating the cache directory 32. As described above, cache controller 36 includes a read queue 50 and a write queue 52 that update cache directory 32 and allow access to data array 34. For example, if a read request is received from the associated L1 cache 12, in response the cache controller 36 places the read request on one entry in the read queue 50. Cache controller 36 supports the read request by supplying the requested data to the associated L1 cache 12 and then removes the read request from read queue 50. In another example, cache controller 36 is initiated by another L2 caches 14a-14n to indicate that the far processor 10 wishes to modify a local copy of one particular cache line. You can snoop. Snooping the transaction, and in response, cache controller 36 reads a request to read cache directory 32 to determine whether the particular cache line resides in data array 34. (50). If it resides, cache controller 36 places an appropriate response on interconnect 16 and, if necessary, requests a directory write to update the coherency status field associated with that particular cache line when supported. Is embedded in the recording queue 52. Although FIG. 2 describes an embodiment using only one read queue and one write queue, the number of queues supported by the cache controller 36 is a matter of design, and the cache controller 36 It should be understood that separate queues may also be supported for cache directory access and data array access.

캐시 제어기(36)는 이하에 더 자세히 설명된 것처럼, 그것의 동작을 제어하기 위해 설정할 수 있는 하나 이상의 비트들을 포함하는 모드 레지스트(mode register; 60)를 더 포함한다. 더욱이, 캐시 제어기(36)는 성능 감시기 (performance monitor; 70)를 포함한다. 성능 감시기(70)는 인에이블(enable) 상태일 때 하나 이상의 제어기 레지스트들(CR0-CRm)에 의해 특정되는 하나의 사건, 또는 결합 사건들의 각각의 발생에 응답하여 증가하는 수많은 성능 감시기 카운터들(PMC0-PMCn; 72)을 구비하고 있다. CR들(74)의 설정들에 응답해서 PMC들(72)에 의해 카운터될 수 있는 사건들은 캐시 히트들, 캐시 미스들, 특정한 대기 행렬에서의 엔트리의 수, L2 캐시 히트를 위한 접근 대기 시간, L2 캐시 미스들을 위한 접근 대기 시간 등을 포함한다. PMC들(72) 및 CR들(74) 각각은 바람직하게는 적재 명령 및 저장 명령을 통해 관련된 프로세서(10)에 의해 판독되고 기록될 수 있는 메모리 매핑 레지스터(memory mapped register)들이다.Cache controller 36 further includes a mode register 60 that includes one or more bits that can be set to control its operation, as described in more detail below. Moreover, cache controller 36 includes a performance monitor 70. The performance monitor 70 has a number of performance monitor counters that increase in response to the occurrence of one event, or combination of events, specified by one or more controller resists CR0-CRm when enabled. PMC0-PMCn; 72). Events that can be countered by PMCs 72 in response to the settings of CRs 74 include cache hits, cache misses, number of entries in a particular queue, access latency for L2 cache hits, Access latency for L2 cache misses, and the like. Each of the PMCs 72 and CRs 74 are preferably memory mapped registers that can be read and written by the associated processor 10 via a load instruction and a store instruction.

도 3을 참조하면, 본 발명의 H-MESI 메모리 코히어런시 프로토콜의 하나의 예시적 실시예를 도시하고 있다. 더 상위 레벨의 캐시들은 바람직하게는 종래의 MESI 프로토콜을 구현함에 반하여, H-MESI 프로토콜은 바람직하게는 메모리 계층구조에서 가장 낮은 레벨 [예를 들어, 도 1에서 설명한 데이터 처리 시스템(8)의 실시예에서 L2 캐시들(14a-14n)]에 의해서만 구현된다. 그러나, 데이터 처리 시스템(8)의 선택적인 실시예에서는 H-MESI 프로토콜이 추가적인 상호-캐시 통신량(inter-cache communication traffic)을 대가로 해서 메모리 계층 구조내의 캐시의 각각 레벨에서 구현될 수도 있다.Referring to Figure 3, one exemplary embodiment of the H-MESI memory coherency protocol of the present invention is shown. Higher level caches preferably implement the conventional MESI protocol, whereas the H-MESI protocol preferably implements the lowest level [eg, implementation of the data processing system 8 described in FIG. 1] in the memory hierarchy. In the example only L2 caches 14a-14n]. However, in alternative embodiments of the data processing system 8, the H-MESI protocol may be implemented at each level of the cache in the memory hierarchy at the expense of additional inter-cache communication traffic.

도 3에 나타난 바와 같이, H-MESI 캐시 코히어런시 프로토콜은 참조 번호 80, 82, 84, 및 86으로 각각 식별되는 MESI 프로토콜의 종래의 수정(M), 배제(E), 공유(S), 무효(I) 상태들을 포함한다. 더욱이, 본 발명의 H-MESI 메모리 코히어런시 프로토콜은 관련된 태그 필드(40)에 저장되어 있는 주소 태그는 유효하지만 데이터 어레이(34)의 대응된 경로에 저장된 데이터 항목 (예를 들어, 캐시 라인, 또는 캐시 섹터)은 무효임을 나타내는 배회(hovering; H) 상태(90)를 포함한다.As shown in FIG. 3, the H-MESI cache coherency protocol is a conventional modification (M), exclusion (E), and sharing (S) of the MESI protocol identified by reference numerals 80, 82, 84, and 86, respectively. , Invalid (I) states. Moreover, the H-MESI memory coherency protocol of the present invention is a data item (e.g., cache line) stored in the corresponding path of the data array 34, although the address tag stored in the associated tag field 40 is valid. , Or cache sector) includes a hovering (H) state 90 indicating invalid.

하나의 바람직한 실시예에서, 각각의 L2 캐시 디렉토리(32)의 엔트리 각각에 있는 코히어런시 상태 필드(42)는 전원이 켜질 때 태그 필드(40) 및 데이터 어레이(34)의 해당 경로에 저장된 데이터 모두가 무효임을 나타내는 I 상태(86)로 초기된다. L1 캐시 디렉토리 엔트리들은 종래의 MESI 프로토콜에 따라서 무효 상태로 유사하게 초기화 된다. 그리고 난 후, 무효 상태(86)에 있는 L2 캐시들(14a-14n)중 하나에 저장되어 있는 하나의 캐시 라인 (혹은, 캐시 섹터)의 코히어런시 상태가 프로세서들(10a-10n)에 의해 만들어진 메모리 요구 타입들 및 이러한 요구들에 대한 메모리 계층 구조의 응답에 따라 M 상태(80), E 상태(82), 또는 S 상태(84)중 하나로 갱신될 수 있다.In one preferred embodiment, the coherency status field 42 in each entry of each L2 cache directory 32 is stored in the tag field 40 and the corresponding path of the data array 34 at power up. Initialized to I state 86 indicating that all of the data is invalid. L1 cache directory entries are similarly initialized to an invalid state in accordance with conventional MESI protocols. Then, the coherency state of one cache line (or cache sector) stored in one of the L2 caches 14a-14n in the invalid state 86 is transmitted to the processors 10a-10n. Depending on the type of memory request made and the response of the memory hierarchy to these requests, it may be updated to one of the M state 80, the E state 82, or the S state 84.

예를 들어, 프로세서(10a)가 적재 명령에 응답해서 판독 요구를 한다면, L1 캐시(12a)는 요구된 데이터가 L1 캐시(12a)에 상주하는지 여부를 먼저 결정한다. L1 캐시(12a)에서의 히트(hit)에 응답해서는, L1 캐시(12a)는 프로세서(10a)에 상기 요구된 데이터를 단순히 공급한다. 그러나, L1 캐시(12a)에서의 미스(miss)에 응답해서는, L1 캐시(12a)는 상호-캐시 연결을 통해 L2 캐시(14a)에 판독 요구를 내보낸다. L2 캐시(14a)에서의 히트에 응답해서, 요구된 데이터가 L2 캐시(14a)에 의해 L1 캐시(12a)에 공급되고, L1 캐시(12a)는 적합한 MESI 코히어런시 상태와 관련해 요구된 데이터를 저장하고, 프로세서(10a)에 요구된 데이터를 보내준다. 그러나, 만약 판독 요구가 L1 캐시(12a) 및 L2 캐시(14a)에서 모두 미스된다면, L2 캐시(14a)의 캐시 제어기(36)는 판독 요구를 하나의 트랜잭션으로 인터커넥트(16)상에 내보내고, 이는 각각의 L2 캐시들(14b-14n)에 의해서 스누프된다.For example, if processor 10a makes a read request in response to a load instruction, L1 cache 12a first determines whether the requested data resides in L1 cache 12a. In response to a hit in the L1 cache 12a, the L1 cache 12a simply supplies the requested data to the processor 10a. However, in response to a miss in L1 cache 12a, L1 cache 12a issues a read request to L2 cache 14a via a cross-cache connection. In response to a hit in the L2 cache 14a, the requested data is supplied to the L1 cache 12a by the L2 cache 14a, and the L1 cache 12a requests the data in connection with the appropriate MESI coherency state. Stores the data and sends the requested data to the processor 10a. However, if a read request is missed both in the L1 cache 12a and the L2 cache 14a, the cache controller 36 of the L2 cache 14a issues the read request on the interconnect 16 in one transaction, which is Snoop by the respective L2 caches 14b-14n.

인터커넥트(16)상의 판독 요구를 스누프하고, 이에 응답해서 L2 캐시들(14b-14n) 각각의 캐시 제어기(36)는 요구된 데이터가 자신들의 데이터 어레이(34), 또는 L1 캐시들(12b-12n)의 관련된 하나에 상주하는지 여부를 결정한다. L2 캐시들(14b-14n)이나 L1 캐시들(12b-12n)중 어떤 것도 요구된 데이터를 저장하고 있지 않다면, L2 캐시들(14a-14n) 각각은 L2 캐시(14a)에 널 응답(null response)을 되돌려 보내고, 이어서 시스템 메모리(18)으로부터 데이터를 요구한다. 요구된 데이터가 시스템 메모리(18)으로부터 L2 캐시(14a)로 되돌아왔을 때, 캐시 제어기(36)는 L1 캐시(12a)에 요구된 데이터를 내보내고, 요구된 데이터를 자신의 데이터 어레이(34)에 저장하며, 참조 번호 100으로 나타난 것처럼 요구된 데이터를 I 상태(86)에서 E 상태(82)로 저장하는 경로와 관련되어 있는 코히어런시 상태 필드(42)를 갱신한다. 종래의 MESI 프로토콜에서처럼, E 상태(82)는 관련된 캐시 라인은 유효하지만 메모리 계층 구조의 제2 레벨에 있는 다른 어떤 캐시에도 상주하지 않음을 나타낸다.Snooping a read request on interconnect 16, and in response, the cache controller 36 of each of the L2 caches 14b-14n causes the requested data to be its data array 34, or L1 caches 12b-. Determine whether it resides in the relevant one of 12n). If none of the L2 caches 14b-14n or L1 caches 12b-12n store the required data, then each of the L2 caches 14a-14n is null response to the L2 cache 14a. ), And then request data from system memory 18. When the requested data is returned from the system memory 18 to the L2 cache 14a, the cache controller 36 exports the requested data to the L1 cache 12a, and sends the requested data to its data array 34. And updates the coherency status field 42 associated with the path for storing the requested data from the I state 86 to the E state 82 as indicated by reference numeral 100. As in the conventional MESI protocol, E state 82 indicates that the associated cache line is valid but does not reside in any other cache at the second level of the memory hierarchy.

유사하게, 만약 L1 캐시들(12b-12n)이나 L2 캐시들(14b-14n)중 어떤 것이 요구된 데이터를 E 상태(82), 또는 S 상태(84)로 저장하고 그래서 L2 캐시(14a)에 의해 인터커넥트(16)상에 위치시킨 판독 요구에 공유 응답을 한다면, L2 캐시(14a)는 시스템 메모리(18)로부터 요구된 데이터를 탐색한다. 그러나, 이 경우에 요구된 데이터를 저장하고 있는 L2 캐시(14a)의 경로의 코히어런시 상태는 참조 번호 102에 나타난 것처럼 I 상태(86)에서 S 상태(84)로 전이한다. 요구된 데이터를 E 상태(82)로 저장하고 있는 L2 캐시들(14)의 다른 캐시들도 역시 참조 번호 104에서 나타난 것처럼 S 상태(84)로 갱신된다.Similarly, if either the L1 caches 12b-12n or the L2 caches 14b-14n store the requested data in the E state 82, or the S state 84 and so in the L2 cache 14a. If a shared response is made to the read request placed on the interconnect 16, the L2 cache 14a retrieves the requested data from the system memory 18. In this case, however, the coherency state of the path of the L2 cache 14a that stores the requested data transitions from the I state 86 to the S state 84, as indicated at 102. Other caches of L2 caches 14 that store the requested data in E state 82 are also updated to S state 84 as indicated at 104.

만약, 프로세서(10a)에 의해 요구된 데이터가 L1 캐시(12a) 및 L2 캐시(14a)에 상주하지 않고, 예를 들어 L1 캐시(12n)에 M 상태(80)로 저장되어 있다면, L2 캐시(14n)의 캐시 제어기(36)는 한번의 재시도(retry)로 판독 요구에 응답하고 L1 캐시(12n)에 메모리에 요구된 데이터를 보내라고 신호한다. 그때, L1 캐시(12n) 및 L2 캐시(14n)에 있는 요구된 데이터의 코히어런시 상태는 참조 번호 106에 의해 나타난 것처럼 S 상태(84)로 갱신된다. 그리고 난 후, L2 캐시(14a)가 인터커넥트(16)상에 판독 요구를 다시 보낼 때, L2 캐시(14n)는 공유 응답을 하게되고, L2 캐시(14a)는 상기 설명처럼 시스템 메모리(18)로부터 요구된 데이터를 얻는다. 소위 수정 개입을 지원하는 하나의 선택적 실시예에서는, 요구된 데이터는 시스템 메모리(18)에 의해서가 아니고 L2 캐시(14n)의 캐시 제어기(36)에 의해서 공급되고, 이로 인해 접근 대기 시간을 줄일 수 있다.If the data requested by the processor 10a does not reside in the L1 cache 12a and the L2 cache 14a and is stored in the M state 80 in the L1 cache 12n, for example, the L2 cache ( The cache controller 36 of 14n responds to the read request with one retry and signals the L1 cache 12n to send the requested data to the memory. At that time, the coherency state of the requested data in the L1 cache 12n and the L2 cache 14n is updated to the S state 84 as indicated by reference numeral 106. Then, when the L2 cache 14a sends a read request back on the interconnect 16, the L2 cache 14n makes a shared response, and the L2 cache 14a from the system memory 18 as described above. Get the requested data. In one optional embodiment that supports so-called modification intervention, the required data is supplied by the cache controller 36 of the L2 cache 14n rather than by the system memory 18, thereby reducing the access latency. have.

만약, 하나의 판독 요구 대신에 L1 캐시(12a)가 프로세서(10a)가 수정을 할 목적으로 하나의 메모리 저장 장소를 배타적으로 사용하고자 함을 나타내는 "수정 목적 판독(read with intent to modify)" 요구를 한다면, 특정된 메모리 저장 장소를 포함하는 캐시 라인을 얻을 수 있는 상기 설명된 과정을 따르면 된다. 그러나, 요구된 캐시 라인을 얻었을 때, L1 캐시(12a)는 요구된 캐시 라인을 수정 상태로 저장한다. 더욱이, "수정 목적 판독" 트랜잭션은 요구된 캐시 라인의 다른 카피들은 실효(stale)됨을 나타내기 때문에, 다른 L1 캐시들 및 L2 캐시들은 요구된 캐시 라인의 카피들이 무효임을 나타내어야 한다. L1 캐시들(12b-12n)에서는 요구된 캐시 라인의 어떠한 카피들도 모두 단순히 무효라고 표시되어진다. 그러나, L2 캐시들(14b-14n)에 저장되어 있는 요구된 캐시 라인의 카피들의 코히어런시 상태는 교차-무효화(XI)를 이용하는 종래의 멀티 프로세서 데이터 처리 시스템에서처럼 I 상태(86)로 갱신되지는 않는다. 대신, 본 발명의 중요한 특징에 따르면, 요구된 캐시 라인의 카피를 하나씩 저장하는 L2 캐시들(14b-14n) 각각은 S 상태(84), M 상태(80), 또는 E 상태(82)중 어떤 상태에서 H 상태(90)로 참조 번호 110, 112, 및 114 각각으로 나타난 것처럼 그것의 카피와 관련해서 코히어런시 상태 필드(42)를 갱신한다. 상기에서 언급된 바와 같이, H 상태(90)는 태그 필드(40)에 저장된 태그는 유효한 상태로 남아있지만 데이터 어레이(34)내에 있는 관련 캐시 라인이 무효임을 나타낸다. 하나의 캐시 디렉토리(32)내의 엔트리들은 데이터의 무효화를 요구하는 다른 스누프된 트랜잭션들, 즉 특정한 데이터 블록을 확실히 무효화시키는 트랜잭션들인 킬(kill)들, 특정한 데이터 블록을 무효화시키고 어떤 수정된 데이터를 시스템 메모리에 복사하는 트랜잭션들인 플러시(flush)들, 저장에 응답해서 캐시 라인의 국부 카피가 수정되고 이에 응답해서 원거리 캐시들에서 공유된다고 표시된 캐시 라인의 카피들을 무효화시키는 트랜잭션들인 디클래임(dclaim)들 등에 응답하여, H 상태(90)로 유사하게 갱신된다.If, instead of one read request, the " read with intent to modify " request indicates that the L1 cache 12a intends to exclusively use one memory storage location for the purpose of the processor 10a making the modification. If so, follow the process described above to obtain a cache line that includes the specified memory storage location. However, when the requested cache line is obtained, the L1 cache 12a stores the requested cache line in a modified state. Moreover, since the "Modify Purpose Read" transaction indicates that other copies of the requested cache line are stale, other L1 caches and L2 caches must indicate that the copies of the requested cache line are invalid. In L1 caches 12b-12n, all copies of the required cache line are simply marked as invalid. However, the coherency state of copies of the requested cache line stored in L2 caches 14b-14n is updated to I state 86 as in a conventional multiprocessor data processing system using cross-validation (XI). It doesn't work. Instead, according to an important feature of the present invention, each of the L2 caches 14b-14n storing one copy of the required cache line one by one may be selected from the S state 84, the M state 80, or the E state 82. Update the coherency status field 42 with respect to its copy, as indicated by reference numerals 110, 112, and 114, respectively, in the state to the H state 90. As mentioned above, the H state 90 indicates that the tag stored in the tag field 40 remains valid but the associated cache line in the data array 34 is invalid. Entries in one cache directory 32 invalidate specific data blocks and kill other snooped transactions that require data invalidation, that is, transactions that certainly invalidate a particular data block and invalidate any modified data. Flushes, which are transactions that copy to system memory, declaims, which are transactions that invalidate copies of the cache line marked in response to the storage to be modified and shared in the remote caches in response. In response, and the like, it is similarly updated to the H state 90.

참조 번호 116, 118, 및 120에 의해 참조되는 바와 같이, 하나의 캐시 디렉토리 엔트리는 상기의 캐시에 수신된 트랜잭션들의 타입에 따라 H 상태(90)에서 E 상태(82), M 상태(80),또는 S 상태(84)로 각각 전이할 수 있다. 예를 들면, 시스템 메모리(18)으로부터 탐색된 데이터가 모든 L2 캐시들(14a-14n)중에서 단지 L2 캐시(14a)에만 저장되 있기 때문에 프로세서(10a)가 [L1 캐시(12a)와 L2 캐시(14a) 양자에서 모두 미스한 후]L2 캐시들(14b-14n)로부터 널 응답을 수신하라는 판독 요구를 하면, H 상태(90)의 L2 캐시(14a)의 디렉토리 엔트리는 이에 응답하여 (참조 번호 86에 나타난 것처럼) E 상태(82)로 전이한다. 한편, 만약 프로세서(10a)가 H 상태(90)의 L1 캐시(12a)의 하나의 경로에 데이터를 저장할 의도를 내비친다면, L1 캐시(12a)는 L2 캐시(14)에 상기의 의도를 알리고 인터커넥트(16)상에 "수정 목적 판독" 트랜잭션을 내놓는다. 상기에서 설명한 대로, L2 캐시들(14b-14n)에 저장되어 있는 요구된 캐시 라인의 카피들은 수정 목적 판독 트랜잭션을 스누핑하고, 이에 응답하여 H 상태(90)로 갱신되며, L1 캐시들(12b-12n)에 저장되어 있는 요구된 캐시 라인의 카피들은 무효로 표시된다. 일단, 요구된 캐시 라인이 L1 캐시(12a)로 돌아오고, 프로세서(10a)가 캐시 라인을 갱신하면, 캐시 라인이 유효함을 나타내기 위하여 캐시 라인은 L1 캐시(12a)안에서 수정으로 표시된다. 구현하기에 따라서,수정된 캐시 라인은 시스템 메모리(18)에 역 기록 되지않고, (예를 들어, L1 캐시트 아웃(castout)에 응답해서) L2 캐시(14a)에 연달아서 저장될 수 있다. 만약 그렇다면, 수정된 캐시 라인과 관련이 있는 L2 캐시(14a)의 코히어런시 상태 필드(42)는 참조 번호 118에 나타난 것처럼 M 상태(80)로 갱신된다. 마지막으로, 하나의 H 상태(90)의 L2 캐시 디렉토리 엔트리는 수 많은 다른 요구/응답 시나리오들에 응답하여 S 상태(84)로 갱신된다.As referenced by reference numerals 116, 118, and 120, one cache directory entry may be stored in the H state 90 in the E state 82, the M state 80, in accordance with the type of transactions received in the cache. Or transition to S state 84, respectively. For example, since the data retrieved from the system memory 18 is stored only in the L2 cache 14a among all the L2 caches 14a-14n, the processor 10a may execute the [L1 cache 12a and L2 cache ( 14a) After both miss], if a read request is received to receive a null response from L2 caches 14b-14n, the directory entry of L2 cache 14a in H state 90 responds (reference number 86). Transition to E state 82). On the other hand, if the processor 10a shows the intention of storing data in one path of the L1 cache 12a in the H state 90, the L1 cache 12a informs the L2 cache 14 of the intention. Present a "Modify Purpose Read" transaction on the interconnect 16. As described above, copies of the requested cache line stored in the L2 caches 14b-14n are snooped to the modification purpose read transaction, and in response are updated to the H state 90, and the L1 caches 12b- Copies of the requested cache line stored in 12n) are marked invalid. Once the requested cache line returns to the L1 cache 12a and the processor 10a updates the cache line, the cache line is marked as modified in the L1 cache 12a to indicate that the cache line is valid. Depending on the implementation, the modified cache line may not be written back to the system memory 18, but may be stored in succession in the L2 cache 14a (eg, in response to an L1 castout). If so, the coherency status field 42 of the L2 cache 14a associated with the modified cache line is updated to the M state 80 as indicated at 118. Finally, the L2 cache directory entry of one H state 90 is updated to S state 84 in response to a number of different request / response scenarios.

우선, 관련 프로세서(10)가 태그 필드(40)의 (유효한) 주소 태그가 지정하는 주소에 하나의 판독 요구를 하고, 적어도 하나의 L2 캐시(14)가 공유 응답으로 응답할 때, H 상태(90)의 L2 디렉토리 엔트리는 S 상태(84)로 전이한다. 더 중요하게는, 관련된 프로세서(10)가 하나의 데이터 요구를 내거나 L2 캐시(14)가 인터커넥트(16)상에 하나의 트랜잭션을 개시하지 않고도, H 상태(90)의 L2 디렉토리 엔트리는 S 상태(84)로 갱신될 수 있다. 상기에서 설명된 대로, 각각의 L2 캐시들(14a-14n)은 인터커넥트(16)상의 모든 트랜잭션들을 스누프한다. 만약, L2 캐시들(14a-14n)중 하나가, 예를 들어 L2 캐시(14a)가 H 상태(90)로 L2 캐시(14a)에 저장되어 있는 데이터의 갱신된 (즉, 유효한) 카피를 포함하는 L2 캐시들(14b-14n)의 또 다른 하나에 의한 하나의 트랜잭션을 스누프한다면, L2 캐시(14a)의 캐시 제어기(36)는 인터커넥트(16)로부터 데이터를 샘플하고, 스누프된 데이터를 데이터 어레이(34)에 저장하며, 관련된 코히어런시 상태 필드(42)를 H 상태(90)에서 S 상태(84)로 갱신한다. 물론, L2 캐시(14a)는 코히어런시를 유지하기 위해 응답이 필요하다면, 스누프된 트랜잭션에 대한 응답을 역시 지원한다. 예를 들어, 만약 스누프된 트랜잭션이 판독 요구라면, 요구하는 L2 캐시가 요구된 데이터를 E 상태(82)보다는 S 상태(84)로 저장할 수 있도록, L2 캐시(14a)는 요구된 데이터를 샘플하고자 하는 의도를 나타내는 공유 응답을 지원해야 한다. 유효의 주소 태그와 관련되어 무효 데이터를 갱신하는 이러한 방법으로 스누프될 수 있는 인터커넥트(16)상의 트랜잭션들은 판독 트랜잭션들, 기록 트랜잭션들, 및 캐시 라인 캐스트 아웃들로 인한 시스템 메모리(18)에의 데이터의 역 기록들 등을 포함한다.First, when the associated processor 10 makes one read request to the address specified by the (valid) address tag of the tag field 40, and the at least one L2 cache 14 responds with a shared response, the H state ( L2 directory entry of 90 transitions to S state 84. More importantly, the L2 directory entry in H state 90 remains in the S state (without the need for associated processor 10 to issue one data request or L2 cache 14 to initiate one transaction on interconnect 16). 84). As described above, each of the L2 caches 14a-14n snoops all transactions on the interconnect 16. If one of the L2 caches 14a-14n includes an updated (ie valid) copy of the data, for example, the L2 cache 14a is stored in the L2 cache 14a in the H state 90. If one snoops a transaction by another one of the L2 caches 14b-14n, the cache controller 36 of the L2 cache 14a samples the data from the interconnect 16 and retrieves the snooped data. Stored in data array 34, and update the associated coherency state field 42 from H state 90 to S state 84. Of course, the L2 cache 14a also supports a response to a snooped transaction if a response is needed to maintain coherency. For example, if the snooped transaction is a read request, the L2 cache 14a samples the requested data so that the requesting L2 cache can store the requested data in the S state 84 rather than the E state 82. It must support a shared response that indicates its intention. Transactions on the interconnect 16 that can be snooped in this way in relation to valid address tags to update invalid data are data to system memory 18 due to read transactions, write transactions, and cache line cast outs. Reverse records, and so forth.

도 3에서 설명한 H-MESI 메모리 코히어런시 프로토콜의 예시적 실시예에서 행해지 상태 전이들은 아래의 표 1에 요약되어 있다.State transitions made in the exemplary embodiment of the H-MESI memory coherency protocol described in FIG. 3 are summarized in Table 1 below.

상태 전이State transition 원인(causes)Causes 주석(notes)Notes I → EI → E 널 응답을 갖는 CPU 판독 요구CPU read request with null response I → SI → S 공유 응답, 또는 수정 응답을 갖는 CPU 판독 요구CPU read request with shared or modified response I → MI → M CPU 수정 목적 판독 요구(CPU "read with intent to modify; (rwitm)")CPU "read with intent to modify; (rwitm)" E → SE → S 판독요구 스누프Read request snoop E → ME → M CPU rwitmCPU rwitm E → HE → H 데이터 무효화 요구 스누프Data invalidation request snoop 스누프된 데이터 무효화 요구는 rwitm, dclaim, kill, flush 등이다.Snooped data invalidation requests are rwitm, dclaim, kill, flush, etc. S → MS → M CPU rwitmCPU rwitm 인터커넥트상에 dclaim을 내놓는다.Issue a dclaim on the interconnect. S → HS → H 데이터 무효화 요구 스누프Data invalidation request snoop M → SM → S 판독요구 스누프Read request snoop 만약, 수정 응답이 지원된다면, 데이터를 공급한다.If a modification response is supported, supply data. M → HM → H 데이터 무효화 요구 스누프Data invalidation request snoop 만약, 스누프된 트랜잭션이 rwitm이라면, 수정 개입이 지원될 때 데이터를 공급한다.If the snooped transaction is rwitm, supply the data when modification intervention is supported. H → EH → E 널 응답을 갖는 CPU 판독 요구CPU read request with null response H → SH → S 공유 응답, 또는 수정 응답을 갖는 CPU 판독 요구; 판독, 또는 기록 요구 스누프CPU read request with shared response or modified response; Snoop for read, or write request H → MH → M CPU rwitmCPU rwitm

본 발명의 중요한 특징에 따르면, H-MESI 프로토콜은 정밀(precise)하게 혹은 비정밀(imprecise)하게 구현될 수 있다. H-MESI 프로토콜의 정밀 구현은 무효 캐시 라인들을 H 상태(90)로 리프레시(refresh)하기 위해 L2 캐시들(14a-14n)이 항상 인터커넥트(16)상에서 얻을 수 있는 데이터를 샘플하기를 요구한다. 이와 대조적으로, 비정밀 구현은 L2 캐시들(14a-14b)이 캐시 라인들을 H 상태(90)로 리프레시하기 위해 인터커넥트(16)상의 데이터를 선택적으로 샘플하도록 한다. 도 2에서 설명한 예시적 실시예에서 L2 캐시(14)각각은 다른 나머지 L2 캐시들과 독립해서 그것의 모드 레지시터(60)의 모드 비트(62)의 상태에 기초해서 정밀 모드, 혹은 비정밀 모드 중에 하나로 작동할 수 있다.According to an important feature of the present invention, the H-MESI protocol can be implemented precisely or imprecise. The precise implementation of the H-MESI protocol requires that the L2 caches 14a-14n always sample the data that can be obtained on the interconnect 16 in order to refresh the invalid cache lines to the H state 90. In contrast, the coarse implementation allows L2 caches 14a-14b to selectively sample the data on interconnect 16 to refresh the cache lines to H state 90. In the example embodiment described in FIG. 2, each of the L2 caches 14 is independent of the other remaining L2 caches, either in fine mode or in coarse mode based on the state of the mode bit 62 of its mode register 60. It can work as either.

정밀 모드로 L2 캐시들(14a-14n)을 작동시키는 것은 정밀 모드의 작동이 소프트웨어 동작을 더 예측 가능하게 하고 소프트웨어 타이밍을 더 일치시키기 때문에, 특히 소프트웨어를 디버깅(debugging)할 때, 또는 성능-동조(performance-tuning)할 때에 이득이 있다. 더욱이, 정밀 모드에서는 국부 캐시의 양 레벨에서 미스를 한 (그리고, 국부 L2 캐시(14)에 인터커넥트(16)상에 하나의 트랜잭션을 내보내라고 요구하는) 데이터 요구들이 대체로 드물어서 소프트웨어에서의 가능한 "버그들"의 징후들로 역할을 할 수 있다. 더더욱, 수정 개입을 지원하는 본 발명의 실시예에서 정밀 H-MESI 프로토콜은 프로세서(10)에 의해 요구되고 국부 L2 캐시(14)에 H 상태(90)로 저장되어 있는 데이터가 수정 개입(즉, 빠르게)을 통해 항상 공급될 수 있음을 보증한다. 하나의 L2 캐시(14)를 정밀 모드에서 작동 할 때의 주요한 불이익은 만약 예를 들어 L2 캐시(14)의 기록 대기 행렬(52)이 가득차 있음으로 인해서 상기의 갱신이 실행되지 못한다면, L2 캐시 라인을 H 상태(90)로 갱신할 수 있는 스누프된 트랜잭션들이 재시도되어야 한다는 점이다.Operating the L2 caches 14a-14n in fine mode is particularly useful when debugging, or performance-tuning, because the operation of the fine mode makes the software behavior more predictable and makes the software timing more consistent. There is a benefit in performance-tuning. Moreover, in fine mode, data requests that miss at both levels of the local cache (and require the local L2 cache 14 to send one transaction on the interconnect 16) are generally rare and are possible in software. Act as "signs of bugs". Moreover, in an embodiment of the present invention that supports modification intervention, the precise H-MESI protocol is required by the processor 10 and data stored in H state 90 in the local L2 cache 14 is modified intervention (i.e., Ensure that it can always be supplied. The major disadvantage of operating one L2 cache 14 in fine mode is that the above update cannot be performed, for example, because the write queue 52 of the L2 cache 14 is full, the L2 cache line. Snooped transactions that can update to H state 90 must be retried.

캐시 라인들을 H 상태(90)로 최적의 갱신들을 실행하기 위하여 필요한 작동들, 예를 들어 판독 요구들을 재시도하지 않는 것이 바람직하기 때문에, 대체적으로 L2 캐시들(14a-14n)이 정상적인 작동인 동안은 비정밀 모드인 것이 바람직하다. 상기에서 언급한 바와 같이, 비정밀 모드 작동은 캐시 라인들의 H 상태(90)로의 갱신이 선택적으로 일어나도록 한다. 바람직한 실시예에서는 하나의 L2 캐시(14)가 비정밀 모드에 있을 때, 캐시 라인들의 H 상태(90)로의 갱신들은 단지 기록 대기 행렬(52) (또는 구현되어진다면 하나의 공공으로 지원된 디렉토리 기록 대기 행렬)이 엔트리의 경계치(threshold number)보다 적게 가지고 있을 때에만 실행된다. 그러므로, 모드 비트(62)가 기록 대기 행렬(52)에 있는 엔트리의 수가 이미 정해진 경계치를 초과할 때, 이에 응답하여 L2 캐시(14)안에 있는 하드웨어, 혹은 관련된 프로세서(10)에 의해 실행되는 소프트웨어중 하나는 비정밀 모드에 해당하는 상태로 설정되도록 사용될 수 있다. 그러나, 본 발명의 다른 실시예들은 아래에서 상세히 설명될 것처럼 다른 기준들에 기초해서도 L2 캐시 라인들의 H 상태(90)로의 갱신을 선택적으로 실행할 수 있다.Since it is desirable not to retry the operations necessary for performing optimal updates to the cache lines in the H state 90, for example read requests, generally while the L2 caches 14a-14n are in normal operation. Is preferably in the coarse mode. As mentioned above, the coarse mode operation causes the update of the cache lines to the H state 90 selectively. In the preferred embodiment, when one L2 cache 14 is in coarse mode, updates of cache lines to H state 90 are only written to queue 52 (or one publicly supported directory write, if implemented). Only if the queue has less than the threshold number of entries. Therefore, when the mode bit 62 exceeds the number of entries already in the write queue 52 above a predetermined threshold, the hardware in the L2 cache 14 or software executed by the associated processor 10 in response. One of them may be used to be set to a state corresponding to the coarse mode. However, other embodiments of the present invention may selectively execute the update of the L2 cache lines to the H state 90 based on other criteria as will be described in detail below.

도 2에서 보여진 데이터 처리 시스템(8)의 예시적 실시예에서, L2 캐시들(14a-14n)의 각각은 소프트웨어나 하드웨어에 의해, 또는 양자 모두에 의해 정밀 모드나 비정밀 모드로 독립적으로 설정될 수 있다. 예를 들어, L2 캐시(14a)의 작동 모드를 소프트웨어 제어하고자 한다면, 프로세서(10a)는 모드 레지스트(60)를 목표로 하는 저장 명령을 실행함으로써 단순히 모드 비트(62)를 설정할 수 있다. 선택적으로는, 소프트웨어는 PMC들(72)이 기록 대기 행렬(52)의 엔트리의 추가 및 삭제, L2 캐시 미스들, L2 캐시 미스때의 접근 대기 시간 등과 같은 관심있는 사건들의 발생을 카운터하도록 하는 CR들(74)에 값들을 저장할 수 있다. 그때, 소프트웨어는 적재 명령들을 실행함으로써, 관심있는 PMC들(72)의 값들에 접근할 수 있다. PMC들(72)의 값들중 하나, 또는 그 결합이 소프트웨어의 결정된 경계치들을 초과할 때, 이에 응답하여 소프트웨어는 모드 비트(62)가 정밀모드 및 비정밀 모드중 적절한 하나를 선택하도록 설정할 수 있다. 예를 들어, 만약 L2 캐시(14a)가 비정밀 모드로 작동하고 L2 캐시 미스들의 수가 L2 접근들의 총 수의 이미 결정된 퍼센티지보다 크다면, 소프트웨어는 모드 비트(62)를 정밀 모드에 해당하는 상태로 설정할 수 있다.In the exemplary embodiment of the data processing system 8 shown in FIG. 2, each of the L2 caches 14a-14n may be independently set to fine or non-precision mode by software or hardware, or both. Can be. For example, if a software control of the operating mode of the L2 cache 14a is desired, the processor 10a may simply set the mode bit 62 by executing a store instruction targeting the mode register 60. Optionally, the software allows the PMCs 72 to counter the occurrence of events of interest, such as the addition and deletion of entries in the write queue 52, L2 cache misses, access latency in the case of L2 cache misses, and the like. Values 74 may be stored. The software can then access the values of the PMCs 72 of interest by executing the load instructions. When one of the values of the PMCs 72, or a combination thereof, exceeds the determined thresholds of the software, in response, the software may set the mode bit 62 to select the appropriate one of the fine mode and the coarse mode. . For example, if the L2 cache 14a is operating in coarse mode and the number of L2 cache misses is greater than the predetermined percentage of the total number of L2 accesses, the software may set the mode bit 62 to correspond to fine mode. Can be set.

L2 캐시들(14a-14n)의 작동 모드의 하드웨어 제어는 성능 감시기(70)에 의해 유사하게 구현될 수 있다. 하나의 예시적 실시예에서 하나 이상의 PMC들(72)에서 모아진 하나의 선택된 사건, 또는 결합 사건들의 발생의 수가 미리 정해진 경계치를 초과할 때, 이에 응답하여 각각의 성능 감시기(70)는 모드 비트(62)를 특정한 상태로 설정하는 신호를 발생시키는 로직을 포함한다. 관심있는 사건, 또는 사건들의 샐렉션(selection) 및 PMC들(72)의 인에이블먼트(enablement)는 성능 감시기(70)의 임의 설정들, 또는 관련된 프로세서(10)에 의해 실행되는 소프트웨어에 의해 결정될 수 있다. 또 다른 실시예에서, 하나의 선택된 사건, 또는 결합 사건들의 발생 수가 미리 결정된 경계치를 초과 할 때, 이에 응답하여 성능 감시기(70)가 성능 감시기 인터럽트(performance monitor interrupt; PMI)를 발생하도록 설정될 수 있다. 상기 PMI는 모드 비트(62)의 상태를 변화시키는 인터럽트 처리 루틴(interrupt handler)을 실행하는 관련된 프로세서(10)에 의해 서비스를 지원 받는다.Hardware control of the operating mode of the L2 caches 14a-14n may be similarly implemented by the performance monitor 70. In one exemplary embodiment, when the number of occurrences of one selected event, or combination of events, gathered in one or more PMCs 72 exceeds a predetermined threshold, in response, each performance monitor 70 generates a mode bit ( Logic for generating a signal that sets 62) to a particular state. The event of interest, or the selection of events and the enablement of the PMCs 72 may be determined by any settings of the performance monitor 70, or by software executed by the associated processor 10. Can be. In another embodiment, when the number of occurrences of one selected event, or combination events, exceeds a predetermined threshold, in response, the performance monitor 70 may be set to generate a performance monitor interrupt (PMI). have. The PMI is serviced by the associated processor 10 executing an interrupt handler that changes the state of the mode bit 62.

상기에서 설명되어진 것처럼, 본 발명는 멀티 프로세서 데이터 처리 시스템에서의 메모리 코히어런시를 유지하기 위한 개량된 방법 및 시스템을 지원하고 있다. 본 발명이 지원하는 개량된 메모리 코히어런시 프로토콜은 유효한 주소 태그와 관련된 하나의 캐시안에 저장된 하나의 무효 데이터 항목이 관련된 프로세서가 명시적 판독 요구, 또는 기록 요구를 내놓지 않고도 자동적으로 유효한 데이터를 가지고 갱신될 수 있도록 한다. 이런 방법으로, 원거리 프로세서들의 활동에 의해 무효화된 데이터는 국부 프로세서가 데이터에 접근하기에 앞서 리프레시될 수 있고, 이로 인해 원거리 캐시, 또는 시스템 메모리로부터 데이터를 탐색할 필요성을 제거함으로써 실질적으로 접근 대기 시간을 줄일 수 있다. 캐시 라인들이 메모리에 접근하거나 로크(lock)를 요구함이 없이 갱신되기 때문에, 메모리 접근 및 시스템-와이드 로크(system-wide lock)에 대한 논쟁이 또한 실질적으로 줄어든다.As described above, the present invention supports an improved method and system for maintaining memory coherency in a multiprocessor data processing system. The improved memory coherency protocol supported by the present invention allows a processor associated with one invalid data item stored in one cache associated with a valid address tag to automatically have valid data without having to issue an explicit read or write request. To be updated. In this way, data invalidated by the activity of the remote processors can be refreshed before the local processor can access the data, thereby substantially eliminating the need to retrieve data from the remote cache or system memory. Can be reduced. As cache lines are updated without accessing or requiring memory, the debate over memory access and system-wide lock is also substantially reduced.

본 발명이 하나의 예시적 실시예에 관련해서 특정적으로 묘사되고 설명되었을 지라도, 본 발명의 정신 및 범위를 벗어남이 없이도 당업자는 형식 및 세부 사항에서의 다양한 변화가 여기서 가능하다는 점을 이해할 수 있다. 예를 들어, 도 3에서 설명한 하나의 메모리 코히어런시 프로토콜의 예시적 실시예는 I 상태(86)가 단지 전원이 들어올 때 디렉토리 엔트리들을 초기화하는데 이용되고 또 다른 상태로부터 재 전이(re-enter) 되지않기 때문에, 상기 상태를 제거하는 방향으로 수정될 수도 있다. 만약, I 상태(86)가 제거된다면, 전원이 들어올 때는 각각의 디렉토리 엔트리의 코히어런시 상태 필드는 H 상태(90)로 초기화될 수 있고, 각각의 L2 디렉토리 엔트리의 태그 필드는 적어도 동일한 상동 클래스내에서는 유일한 하나의 태그값으로 초기화될 수 있다. 더욱이, 도 2의 성능 감시기(70)가 각각의 L2 캐시(14)의 내부의 다중 분리 성능 감시기들이 아닌 인터커넥트(16)에 결합된 하나의 시스템-와이트 성능 감시기로써 선택적으로 구현될 수도 있음을 이해해야 한다.Although the invention has been specifically described and described in connection with one exemplary embodiment, those skilled in the art can understand that various changes in form and details are possible herein without departing from the spirit and scope of the invention. . For example, an exemplary embodiment of one memory coherency protocol described in FIG. 3 is used to initialize directory entries when I state 86 is only powered on and re-enter from another state. May be modified in a direction to remove the state. If the I state 86 is removed, the coherency state field of each directory entry may be initialized to the H state 90 upon power up, and the tag field of each L2 directory entry is at least the same homology. Within a class, it can be initialized with only one tag value. Moreover, it should be understood that the performance monitor 70 of FIG. 2 may optionally be implemented as one system-wide performance monitor coupled to the interconnect 16 rather than multiple separate performance monitors inside each L2 cache 14. do.

Claims (18)

각각이 다수의 캐시들중 하나와 각각 관련되어 있는 다수의 프로세서들을 포함하는 데이터 처리 시스템에서 캐시 코히어런시(cache coherency)를 유지하는 방법에 있어서,1. A method of maintaining cache coherency in a data processing system comprising a plurality of processors each associated with one of a plurality of caches, the method comprising: 데이터 항목(data item)의 주소를 지정하는 주소 태그(address tag)와 관련해서 상기의 데이터 항목을 상기 다수의 캐시들중 제1 캐시에 저장하는 단계와,Storing said data item in a first one of said plurality of caches in association with an address tag specifying an address of a data item; 상기 제1 캐시의 캐시 지시기(cache indicator)를 상기 데이터 항목이 유효(valid)함을 나타내는 제1 상태로 설정하는 단계와,Setting a cache indicator of the first cache to a first state indicating that the data item is valid; 상기 코히어런시 지시기가 상기 제1 상태로 설정되어 있는 동안 상기 다수의 캐시들중 또 다른 하나가 상기 주소 태그가 지정하는 상기 주소에 저장할 의도를 내비치면, 이에 응답하여 상기 제1 캐시의 상기 코히어런시 지시기를, 상기 주소 태그는 유효하나 상기 제1 캐시의 상기 데이터 항목은 무효(invalid)임을 나타내는 제2 상태로 갱신(update)하는 단계If another one of the plurality of caches intends to store at the address specified by the address tag while the coherency indicator is set to the first state, in response to the Updating a coherency indicator to a second state indicating that the address tag is valid but the data item in the first cache is invalid 를 포함하는 방법.How to include. 제1항에 있어서, 상기 데이터 처리 시스템은 상기 다수의 프로세서들을 결합하는 인터커넥트(interconnect)를 포함하고 상기 데이터 항목은 제1 데이터 항목이며, 상기 방법은The method of claim 1, wherein the data processing system comprises an interconnect coupling the plurality of processors and the data item is a first data item. 상기 주소 태그가 지정하는 상기 주소와 관련해서 상기 인터커넥트상의 데이터 전송을 식별하기 위해서 상기 인터커넥트를 스누프하는 단계와,Snooping the interconnect to identify a data transmission on the interconnect in relation to the address specified by the address tag; 상기 코히어런시 지시기가 상기 제2 상태로 설정되어 있는 동안 상기 주소 태그가 지정하는 상기 주소와 관련해서 상기 인터커넥트상의 데이터 전송을 감지하고, 이에 응답하여 상기 주소 태그와 관련해서 상기 제2 데이터를 상기 제1 캐시에 저장함으로써 상기 제1 데이터를 교체하며, 상기 제2 데이터 항목이 유효함을 나타내는 제3 상태로 상기 코히어런시 지시기를 갱신하는 단계While the coherency indicator is set to the second state, detect data transmission on the interconnect in association with the address specified by the address tag, and in response, detect the second data in association with the address tag. Replacing the first data by storing in the first cache and updating the coherency indicator to a third state indicating that the second data item is valid 를 더 포함하는 방법.How to include more. 제2항에 있어서, 상기 제2 데이터 항목이 유효함을 나타내는 제3 상태로 상기 코히어런시 지시기를 갱신하는 상기 단계는 상기 제2 데이터 항목이 상기 제1 캐시 및 상기 다수의 캐시들중 또 다른 하나에도 저장됨을 나타내는 공유 상태(shared state)로 상기 코히어런시 지시기를 갱신하는 단계를 포함하는 방법.3. The method of claim 2, wherein updating the coherency indicator to a third state indicating that the second data item is valid further comprises: the second data item being one of the first cache and the plurality of caches. Updating the coherency indicator with a shared state indicating that it is also stored in the other. 제1항에 있어서, 상기 제1 캐시의 코히어런시 지시기를 상기 데이터 항목이 유효함을 나타내는 제1 상태로 설정하는 상기 단계는 상기 제1 캐시에 있는 상기 코히어런시 지시기를 수정 상태(modifed state), 공유 상태 및 배제 상태(exclusive state) 중 하나로 설정하는 단계를 포함하는 방법.2. The method of claim 1, wherein setting the coherency indicator of the first cache to a first state indicating that the data item is valid comprises: modifying the coherency indicator in the first cache a modified state ( setting to one of a modifed state, a shared state, and an exclusive state. 제1항에 있어서, 상기 데이터 처리 시스템은 상기 제1 캐시가 데이터를 검색하는 하위 레벨 메모리를 더 포함하고, 상기 다수의 프로세서들은 상기 제1 캐시와 관련된 제1 프로세서를 하나씩 포함하며, 상기 데이터 항목은 제1 데이터 항목을 포함하되, 상기 방법은The data processing system of claim 1, wherein the data processing system further comprises a low level memory from which the first cache retrieves data, the plurality of processors including one first processor associated with the first cache, the data item Includes a first data item, the method comprising 상기 코히어런시 지시기가 상기 제2 상태로 설정되어 있는 동안 상기 주소 태그가 지정하는 상기 주소와 관련된 데이터에 대한 상기 제1 프로세서의 요구에 응답하여, 상기 하위 레벨 메모리가 아닌 상기 다수의 캐시들중 또 다른 하나로부터 상기 주소와 관련된 유효한 제2 데이터 항목을 얻는 단계를 더 포함하는 방법.The plurality of caches, not the low level memory, in response to a request of the first processor for data associated with the address specified by the address tag while the coherency indicator is set to the second state. Obtaining a valid second data item associated with the address from another one of the following. 제1항에 있어서, 상기 주소 태그 및 상기 데이터 항목이 모두 무효임을 나타내는 무효 상태로 상기 코히어런시 지시기를 설정하는 단계를 더 포함하는 방법.2. The method of claim 1, further comprising setting the coherency indicator to an invalid state indicating that both the address tag and the data item are invalid. 각각이 다수의 캐시들중 하나와 각각 관련되어 있는 다수의 프로세서들을 포함하는 데이터 처리 시스템에서 캐시 코히어런시를 지원하기 위한 캐시에 있어서,A cache for supporting cache coherency in a data processing system each including a plurality of processors each associated with one of a plurality of caches, the cache comprising: 데이터 항목을 저장하는 데이터 저장 장소와,A data storage location for storing data items; 상기 데이터 저장 장소에 포함되어 있는 상기 데이터 항목의 주소를 지정하는 주소 태그를 저장하는 태그 저장 장소와,A tag storage location for storing an address tag specifying an address of the data item included in the data storage location; 상기 데이터 항목이 상기 데이터 저장 장소에 저장되면, 이에 응답하여 상기 데이터 항목이 유효함을 나타내는 제1 상태로 설정되고, 코히어런시 지시기가 상기 제1 상태로 설정되어 있는 동안 다수의 캐시들중 또 다른 하나가 상기 주소 태그가 지정하는 상기 주소에 저장할 의도을 내비치면, 이에 응답하여 상기 주소 태그는 유효하나 상기 데이터 저장 장소에 있는 상기 데이터 항목은 무효임을 나타내는 제2 상태로 설정되는 코히어런시 지시기If the data item is stored at the data storage location, it is set in response to this to a first state indicating that the data item is valid, and among the plurality of caches while a coherency indicator is set to the first state. If another dictates the intention to store at the address specified by the address tag, in response the coherency is set to a second state indicating that the address tag is valid but the data item at the data storage location is invalid. Indicator 를 포함하는 캐시.Cache containing. 제7항에 있어서, 상기 데이터 항목은 제1 데이터 항목이고, 상기 데이터 처리 시스템은 상기 다수의 프로세서들을 결합하는 인터커넥트를 더 포함하되, 상기 캐시는8. The system of claim 7, wherein the data item is a first data item and the data processing system further comprises an interconnect coupling the plurality of processors, wherein the cache is 상기 주소 태그가 지정하는 상기 주소와 관련해서 상기 다수의 캐시들중 또 다른 하나에 의해 개시되고 제2 데이터 항목을 포함하는 하나의 데이터 전송을 상기 인터커넥트상에서 식별하기 위해서 상기 인터커넥트를 스누핑하기 위한 수단과,Means for snooping the interconnect to identify on the interconnect one data transmission initiated by another one of the plurality of caches in association with the address specified by the address tag and comprising a second data item; , 상기 코히어런시 지시기가 상기 제2 상태로 설정되어 있는 동안 상기 주소 태그가 지정하는 상기 주소와 관련해서 상기 인터커넥트상에서 데이터 전송을 감지하면, 이에 응답하여 상기 주소 태그와 관련지어 상기 제2 데이터 항목을 상기 데이터 저장 장치에 저장함으로써 상기 제1 데이터 항목을 대체하기 위한 수단과,If the coherency indicator detects data transmission on the interconnect with respect to the address specified by the address tag while the coherency indicator is set to the second state, in response to the second data item in association with the address tag Means for replacing the first data item by storing the data in the data storage device; 상기 제2 데이터 항목이 유효함을 나타내는 제3 상태로 상기 코히어런시 지시기를 갱신하기 위한 수단Means for updating the coherency indicator with a third state indicating that the second data item is valid 을 더 포함하는 캐시.Cache containing more. 제8항에 있어서, 상기 제2 데이터 항목이 유효함을 나타내는 제3 상태로 상기 코히어런시 지시기를 갱신하기 위한 상기 수단은 상기 제2 데이터 항목이 상기 캐시 및 상기 다수의 캐시들중 또 다른 하나에 모두 저장되어 있음을 나타내는 공유 상태로 상기 코히어런시 지시기를 갱신하는 수단을 포함하는 캐시.9. The apparatus of claim 8, wherein the means for updating the coherency indicator to a third state indicating that the second data item is valid further comprises: the second data item being another of the cache and the plurality of caches. Means for updating the coherency indicator with a shared state indicating that all are stored in one. 제7항에 있어서, 상기 코히어런시 지시기의 상기 제1 상태는 수정 상태, 공유 상태 및 배제 상태 중 하나를 포함하는 캐시.8. The cache of claim 7, wherein said first state of said coherency indicator comprises one of a modified state, a shared state, and an excluded state. 제7항에 있어서, 상기 캐시는 제1 캐시이고, 상기 다수의 프로세서들은 상기 제1 캐시와 관련된 하나의 제1 프로세서를 포함하며, 상기 데이터 처리 시스템은 상기 제1 캐시가 데이터를 탐색할 수 있는 하나의 하위 레벨 메모리를 더 포함하되, 상기 캐시는10. The system of claim 7, wherein the cache is a first cache, the plurality of processors comprises one first processor associated with the first cache, and wherein the data processing system is capable of retrieving data by the first cache. Further includes one low level memory, wherein the cache is 상기 코히어런시 지시기가 상기 제2 상태로 설정되어 있는 동안 상기 주소 태그가 지정하는 상기 주소와 관련된 데이터에 대한 상기 제1 프로세서의 요구에 응답하여 상기 하위 레벨이 아닌 상기 다수의 캐시들중 또 다른 하나로부터 상기 주소와 관련된 유효한 데이터를 얻기 위한 수단을 더 포함하는 캐시.One of the plurality of caches other than the lower level in response to a request of the first processor for data associated with the address specified by the address tag while the coherency indicator is set to the second state; Means for obtaining valid data associated with the address from another one. 제7항에 있어서, 상기 코히어런시 지시기는 상기 주소 태그 및 상기 주소 항목 모두가 무효임을 나타내는 무효 상태를 더 포함하는 캐시.8. The cache of claim 7, wherein the coherency indicator further comprises an invalid state indicating that both the address tag and the address entry are invalid. 데이터 처리 시스템에 있어서,In a data processing system, 인터커넥트와,Interconnect, 상기 인터커넥트에 결합되어 있는 다수의 프로세서들과,A plurality of processors coupled to the interconnect; 각각이 상기 다수의 프로세서들중 하나와 각각 관련된 다수의 캐시Multiple caches, each associated with one of the multiple processors 를 포함하되, 상기 다수의 캐시들중 제1 캐시는Including, wherein the first cache of the plurality of caches are 데이터 항목을 저장하는 데이터 저장 장치와,A data storage device for storing data items; 상기 데이터 저장 장치에 포함되어 있는 상기 데이터 항목의 주소를 지정하는 주소 태그를 저장하는 태그 저장 장치와,A tag storage device configured to store an address tag specifying an address of the data item included in the data storage device; 상기 데이터 항목이 상기 데이터 저장 장소에 저장되면, 이에 응답하여 상기 데이터 항목이 유효함을 나타내는 제1 상태로 설정되고, 코히어런시 지시기가 상기 제1 상태로 설정되어 있는 동안 다수의 캐시들중 또 다른 하나가 상기 주소 태그가 지정하는 상기 주소에 저장할 의도을 내비치면, 이에 응답하여 상기 주소 태그는 유효하나 상기 데이터 저장 장소에 있는 상기 데이터 항목은 무효임을 나타내는 제2 상태로 설정되는 코히어런시 지시기를 포함하는 시스템.If the data item is stored at the data storage location, it is set in response to this to a first state indicating that the data item is valid, and among the plurality of caches while a coherency indicator is set to the first state. If another dictates the intention to store at the address specified by the address tag, in response the coherency is set to a second state indicating that the address tag is valid but the data item at the data storage location is invalid. A system comprising an indicator. 제13항에 있어서, 상기 데이터 항목은 제1 데이터 항목이고, 상기 제1 캐시는The method of claim 13, wherein the data item is a first data item, and the first cache is 상기 주소 태그가 지정하는 상기 주소와 관련해서 상기 다수의 캐시들중 또 다른 하나에 의해 개시되고 제2 데이터 항목을 포함하는 데이터 전송을 상기 인터커넥트상에서 식별하기 위해서 상기 인터커넥트를 스누핑하기 위한 수단과,Means for snooping the interconnect to identify on the interconnect a data transmission initiated by another one of the plurality of caches in association with the address specified by the address tag and comprising a second data item; 상기 코히어런시 지시기가 상기 제2 상태로 설정되어 있는 동안 상기 주소 태그가 지정하는 상기 주소와 관련해서 상기 인터커넥트상에서 하나의 데이터 전송을 감지하면, 이에 응답하여 상기 주소 태그와 관련지어 상기 제2 데이터 항목을 상기 데이터 저장 장치에 저장함으로써 상기 제1 데이터 항목을 대체하기 위한 수단과,If the coherency indicator detects a data transmission on the interconnect in association with the address specified by the address tag while the coherency indicator is set to the second state, in response to the second tag in association with the address tag; Means for replacing the first data item by storing a data item in the data storage device; 상기 제2 데이터 항목이 유효함을 나타내는 제3 상태로 상기 코히어런시 지시기를 갱신하기 위한 수단Means for updating the coherency indicator with a third state indicating that the second data item is valid 을 더 포함하는 시스템.The system further comprising. 제14항에 있어서, 상기 제2 데이터 항목이 유효함을 나타내는 제3 상태로 상기 코히어런시 지시기를 갱신하기 위한 상기 수단은 상기 제2 데이터 항목이 상기 캐시 및 상기 다수의 캐시들중 또 다른 하나에 모두 저장되어 있음을 나타내는 공유 상태로 상기 코히어런시 지시기를 갱신하는 수단을 포함하는 시스템.15. The apparatus of claim 14, wherein the means for updating the coherency indicator to a third state indicating that the second data item is valid further comprises: the second data item being another of the cache and the plurality of caches. Means for updating the coherency indicator with a shared state indicating that all are stored in one. 제13항에 있어서, 상기 코히어런시 지시기의 상기 제1 상태는 수정 상태, 공유 상태 및 배제 상태 중 하나를 포함하는 시스템.The system of claim 13, wherein the first state of the coherency indicator comprises one of a modified state, a shared state, and an excluded state. 제13항에 있어서, 상기 다수의 프로세서들은 상기 제1 캐시와 관련된 하나의 제1 프로세서를 포함하되, 상기 데이터 처리 시스템은The system of claim 13, wherein the plurality of processors comprises one first processor associated with the first cache, wherein the data processing system comprises 상기 제1 캐시가 데이터를 탐색할 수 있는 하위 레벨 메모리와,A low level memory through which the first cache can retrieve data; 상기 코히어런시 지시기가 상기 제2 상태로 설정되어 있는 동안 상기 주소 태그가 지정하는 상기 주소와 관련된 데이터에 대하여 상기 제1 프로세서에 의한 하나의 요구에 응답하여, 상기 하위 레벨이 아닌 상기 다수의 캐시들중 또 다른 하나로부터 상기 주소와 관련있는 유효한 데이터를 얻기 위한 수단The plurality of non-lower levels in response to a request by the first processor for data associated with the address specified by the address tag while the coherency indicator is set to the second state. Means for obtaining valid data associated with the address from another one of the caches 을 더 포함하는 시스템.The system further comprising. 제13항에 있어서, 상기 코히어런시 지시기는 상기 주소 태그 및 상기 주소 항목 모두가 무효임을 나타내는 무효 상태를 더 포함하는 시스템.14. The system of claim 13, wherein the coherency indicator further comprises an invalid state indicating that both the address tag and the address item are invalid.
KR1019990002795A 1998-02-17 1999-01-28 Cache coherency protocol having a hovering (h) state for instructions and data Abandoned KR19990072313A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US2461098A 1998-02-17 1998-02-17
US9/024,610 1998-02-17

Publications (1)

Publication Number Publication Date
KR19990072313A true KR19990072313A (en) 1999-09-27

Family

ID=21821475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990002795A Abandoned KR19990072313A (en) 1998-02-17 1999-01-28 Cache coherency protocol having a hovering (h) state for instructions and data

Country Status (3)

Country Link
JP (1) JPH11272556A (en)
KR (1) KR19990072313A (en)
CN (1) CN1230721A (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7426612B2 (en) * 2004-06-30 2008-09-16 Intel Corporation Methods and apparatus for enforcing instruction-cache coherence
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
WO2018111228A1 (en) * 2016-12-12 2018-06-21 Intel Corporation Apparatuses and methods for a processor architecture
US10282296B2 (en) 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line
CN108664417B (en) * 2017-03-31 2022-10-25 华为技术有限公司 A catalog update method and device
CN117971728B (en) * 2024-03-29 2024-10-18 北京象帝先计算技术有限公司 Buffer, buffer control method, integrated circuit system, electronic component and equipment

Also Published As

Publication number Publication date
CN1230721A (en) 1999-10-06
JPH11272556A (en) 1999-10-08

Similar Documents

Publication Publication Date Title
KR100326980B1 (en) Cache coherency protocol for a data processing system including a multi-level memory hierarchy
US5895495A (en) Demand-based larx-reserve protocol for SMP system buses
US6571322B2 (en) Multiprocessor computer system with sectored cache line mechanism for cache intervention
US5940856A (en) Cache intervention from only one of many cache lines sharing an unmodified value
KR100330934B1 (en) Cache coherency protocol including a hovering(h) state having a precise mode and an imprecise mode
US6353875B1 (en) Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions
US6343344B1 (en) System bus directory snooping mechanism for read/castout (RCO) address transaction
KR100322225B1 (en) Cache coherency protocol having hovering(h) and recent(r) states
US6615321B2 (en) Mechanism for collapsing store misses in an SMP computer system
US5996049A (en) Cache-coherency protocol with recently read state for data and instructions
KR100326632B1 (en) Cache coherency protocol including an h_r state
US6415358B1 (en) Cache coherency protocol having an imprecise hovering (H) state for instructions and data
US6279086B1 (en) Multiprocessor system bus with combined snoop responses implicitly updating snooper LRU position
KR19990072313A (en) Cache coherency protocol having a hovering (h) state for instructions and data
US6658536B1 (en) Cache-coherency protocol with recently read state for extending cache horizontally
US6615320B2 (en) Store collapsing mechanism for SMP computer system
US6272603B1 (en) Cache coherency protocol having hovering (H), recent (R), and tagged (T) states
US6553462B2 (en) Multiprocessor computer system with sectored cache line mechanism for load and store operations
US20020087791A1 (en) Multiprocessor computer system with sectored cache line system bus protocol mechanism
US20040030833A1 (en) Cache invalidation bus for a highly scalable shared cache memory hierarchy
US6324617B1 (en) Method and system for communicating tags of data access target and castout victim in a single data transfer
HK1022970B (en) Cache coherency protocol including a hovering (h) state having a precise mode and an imprecise mode

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 19990128

A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 19990917

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 19990128

Comment text: Patent Application

PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20010526

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20020222

NORF Unpaid initial registration fee
PC1904 Unpaid initial registration fee