KR100380674B1 - 멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시코히어런스를 유지하는 방법 및 시스템 - Google Patents

멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시코히어런스를 유지하는 방법 및 시스템 Download PDF

Info

Publication number
KR100380674B1
KR100380674B1 KR10-2000-0031588A KR20000031588A KR100380674B1 KR 100380674 B1 KR100380674 B1 KR 100380674B1 KR 20000031588 A KR20000031588 A KR 20000031588A KR 100380674 B1 KR100380674 B1 KR 100380674B1
Authority
KR
South Korea
Prior art keywords
write
cache
system bus
memory
pass
Prior art date
Application number
KR10-2000-0031588A
Other languages
English (en)
Other versions
KR20010015008A (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 KR20010015008A publication Critical patent/KR20010015008A/ko
Application granted granted Critical
Publication of KR100380674B1 publication Critical patent/KR100380674B1/ko

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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4072Drivers or receivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 데이터 프로세싱 시스템에서 기록-통과 기억 동작의 캐시 코히어런스를 유지하는 방법 및 시스템에 관한 것이고, 상기 데이터 프로세싱 시스템에는 다수의 프로세서가 포함되고, 상기 프로세서들이 메모리 계층을 통해 시스템 버스에 결합되고, 그 메모리 계층에는 다수 레벨의 캐시가 포함된다. 기록-통과 기억 동작이 특정한 프로세서로부터 상기 다수 레벨의 캐시 중 어느 하나의 캐시를 통해 시스템 버스로 통과되고 상기 다수 레벨의 캐시 중 어느 하나의 캐시가 그 특정한 프로세서 및 시스템 버스간에 삽입된다. 그 삽입된 캐시들 중 어느 하나의 캐시에서 기록-통과 기억 동작이 수행되고, 그 어느 하나의 캐시에서 기록-통과 기억 동작동안 캐시 히트를 얻는다. 특정한 프로세서 및 시스템 버스간에 삽입되어 있지 않은 상기 다수 레벨의 모든 캐시들은 기록-통과 동작이 이루어질 때까지 시스템 버스의 외부 스눕 경로로부터 상기 기록-통과 동작의 데이터 어드레스를 이용해서 스눕되고, 메모리 계층의 캐시 코히어런스 포인트를 기록-통과 기억 동작동안 시스템 버스에 세트하여 기록-통과 동작이 기타의 명령을 완료하기전에 같은 데이터 어드레스로 성공적으로 완료된다.

Description

멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시 코히어런스를 유지하는 방법 및 시스템{METHOD AND SYSTEM FOR MAINTAINING CACHE COHERENCY FOR WRITE-THROUGH STORE OPERATIONS IN A MULTIPROCESSOR SYSTEM}
본 발명은 일반적으로 데이터 프로세싱용의 개선된 방법 및 시스템, 더 구체적으로는 멀티프로세서 데이터 시스템에서 캐시 코히어런스를 유지하는 개선된 방법 및 시스템에 관한 것이다. 좀 더 구체적으로는, 본 발명은 멀티프로세서 시스템에서 기록-통과 기억 동작동안 캐시 코히어런스를 유지하는 방법 및 시스템에 관한것이다.
대부분의 최신의 고성능 데이터 프로세싱 시스템 구조에서는 그 메모리 계층내에 다수 레벨의 캐시 메모리를 포함하고 있다. 캐시는 데이터 프로세싱 시스템에서 사용되어 시스템 메모리와 연관된 액세스 시간동안 자주 이용된 데이터에 더 빠르게 액세스하여, 시스템의 전체 성능을 개선시킨다. 캐시 레벨이 점차적으로 긴 액세스 대기시간에서 통상적으로 이용된다. 프로세서에 더 가까운 기억 계층내의 레벨에서 적고 빠른 캐시가 사용되는 반면에, 시스템 메모리에 더 가까운 레벨에서 크고 느린 캐시가 사용된다.
종래의 대칭성 멀티프로세서(SMP) 데이터 프로세싱 시스템에서, 공통 명령 세트 및 통신 프로토콜을 사용하고, 비슷한 하드웨어 구조를 갖고, 일반적으로 비슷한 메모리 계층을 구비하는 한 모든 프로세서가 같은 프로세서이다. 예를 들어, 종래의 SMP 데이터 프로세싱 시스템은 시스템 메모리, 복수의 프로세싱 소자 및 시스템 버스를 구비하고, 그 프로세싱 소자 각각이 하나의 프로세서 및 하나 이상의 레벨을 갖는 캐시 메모리를 포함하고, 그 시스템 버스가 그 프로세싱 소자를 서로 결합시키고 그 프로세싱 소자를 그 시스템 메모리에 결합시킨다. 다수의 이와 같은 시스템에는 2개 이상의 프로세서간에 공용된, 적어도 하나의 레벨을 갖는 캐시 메모리가 포함된다. SMP 데이터 프로세싱 시스템에서 유효 실행 결과를 얻기 위해서는, 코히어런트 메모리 계층을 유지하는 것 즉, 메모리 내용을 모든 프로세서에 한번에 볼수 있게 제공하는 것이 중요하다.
캐시 코히어런스가 스눕핑을 통해 유지되도록 설계되지만, "리트라이" 응답으로 인해 프로세서 동작에서 에러가 발생할 수 있다. 특히, 기록-통과 기억 동작 동안, 기록 갱신이 일단 수행되고 새로운 데이터를 판독하도록 연속적인 로드가 허여되기만 하면, 같은 기록-통과 기억 동작을 리트라이하는 것이 문제로 된다.
그러므로, 멀티프로세서 시스템에서는 캐시 코히어런스를 유지하는 방법을 구비하는 것이 바람직하고, 그 시스템에서 특히 캐시 코히어런스가 리트라이를 구비하는 기록-통과 기억 동작에 대해 유지된다.
본 발명의 하나의 목적은 데이터 프로세싱용의 방법 및 시스템을 개선시키는 것이다.
본 발명의 다른 목적은 멀티프로세서 데이터 프로세싱 시스템에서 캐시 코히어런스를 유지하는 방법 및 시스템을 개선시키는 것이다.
본 발명의 또 다른 목적은 멀티프로세서 시스템에서 기록-통과 기억 동작 동안 캐시 코히어런스를 유지하는 방법 및 시스템을 개선시키는 것이다.
앞선 목적들은 지금 설명하듯이 성취된다. 본 발명의 방법 및 시스템은 데이터 프로세싱 시스템에서 기록-통과 기억 동작의 캐시 코히어런스를 유지하기위해 사용되는 것이 가능하고, 상기 데이터 프로세싱 시스템에는 다수의 프로세서가 포함되고, 상기 프로세서들이 메모리 계층을 통해 시스템 버스에 결합되고, 그 메모리 계층에는 다수 레벨의 캐시가 포함된다. 기록-통과 기억 동작이 특정한 프로세서로부터 특정한 프로세서 및 시스템 버스간에 삽입되어 있는 상기 다수 레벨의 캐시중 어느 하나의 캐시를 통해 시스템 버스로 통과된다. 그 삽입된 캐시들 중 어느하나의 캐시에서 기록-통과 기억 동작을 수행하고, 그 어느 하나의 캐시에서 기록-통과 기억 동작동안 캐시 히트를 얻는다. 특정한 프로세서 및 시스템 버스간에 삽입되어 있지 않은 상기 다수 레벨의 모든 캐시들은 기록-통과 동작이 이루어질 때까지 시스템 버스의 외부 스눕 경로로부터 상기 기록-통과 동작의 데이터 어드레스를 이용해서 스눕되고, 메모리 계층의 캐시 코히어런스 포인트를 기록-통과 기억 동작동안 시스템 버스에 세트하여 기록-통과 동작이 기타의 명령을 완료하기전에 같은 데이터 어드레스로 성공적으로 완료된다.
본 발명에서 상기 내용뿐만 아니라 부가 목적, 특성 및 장점은 다음의 상세하게 기록된 설명에서 명백하게 된다.
본 발명의 새로운 특성으로 여겨지는 특징이 첨부된 청구항에서 설명된다. 그러나, 본 발명 자체뿐만 아니라 양호한 사용 형태, 부가 목적 및 그 장점은 첨부 도면을 연관지어 숙독할 때 실시예의 다음의 설명을 참고로 양호하게 이해된다.
도 1은 종래의 스눕핑 기술에 의해 기록-통과(write-through) 기억 명령을 리트라이(retry)할 때 발생하는 에러의 타이밍도.
도 2은 본 발명에 의한 멀티프로세서 데이터 프로세싱 시스템의 고레벨 블럭도.
도 3은 자체-스눕핑 기술을 이용해서 기록-통과 기억 명령을 작동시키는 타이밍도.
도 4는 기록-통과 기억 동작을 수행하는 프로세스의 고레벨 논리 흐름도.
도면, 특히 도 2에는 본 발명에 의한 멀티프로세서 데이터 처리 시스템의 고레벨 블록도가 도시한다. 도시된 바와 같이, 데이터 프로세싱 시스템(8)은 복수의 프로세서 코어(10a-10n)를 프로세서 코어(11a-11n)와 쌍을 이루어 포함하고 있고, 그들 프로세서 각각이 인터내셔널 비지네스 코포레이션사에서 입수가능한 프로세서중 파워피씨(powerPC)(상표)라인의 하나를 구비함이 바람직하다. 프로세서 코어 (10a-10n 및 11a-11n) 각각은, 프로그램 명령을 실행하기위해 사용된 종래의 레지스터, 명령 흐름 논리 및 실행 유닛에 더해져서, 탑재(on-board) 레벨 1(L1)캐시(12a-12n 및 13a-13n)중 연관된 캐시를 포함하고 있다. 그 캐시는 연관된 프로세서에 의해 액세스되는 명령 및 데이터를 일시적으로 기억한다. L1 캐시(12a-12n 및 13a-13n)가 명령 및 데이터 모두(이하에서는 둘다를 데이터로 간단히 부른다)를 기억하는 일체화된 캐시로서 도 2에 도시되지만, 다른 방법으로서 L1 캐시(12a-12n 및 13a-13n) 각각이 명령 캐시 및 데이터 캐시로 분리해서 실행되어도 좋은 것은 당업자에게는 명백해진다.
액세스 대기 시간을 최소화하기위해, 데이터 프로세싱 시스템(8)은 레벨 2 (L2) 캐시 (14a-14n) 등과 같은 하나 이상의 추가 레벨의 캐시 메모리를 포함하고, 그 캐시 (14a-14n)가 L1 캐시(12a-12n 및 13a-13n)에 대한 데이터를 스테이지화하기위해 사용된다. 환언해서, L2 캐시(14a-14n)는 시스템 메모리(18) 및 L1 캐시(12a-12n 및 13a-13n)간의 중간 기억 장치로서 기능하고, L1 캐시(12a-12n 및 13a-13n)보다 매우 큰량의 데이터를 기억할 수 있지만, 긴 액세스 대기 시간이 걸린다. 예를 들어, L2 캐시(14a-14n)는 256 또는 512 킬로바이트의 기억 용량을 갖고, L1 캐시 (12a-12n 및 13a-13n)가 64 또는 128 킬로바이트의 기억 용량을 가진다. 위에서 알 수 있듯이, 도 2에서 2개 레벨의 캐시만을 도시했지만, 데이터 처리 시스템(8)의 메모리 계층은 직렬-연결된 캐시 또는 룩어사이드 캐시에 추가 레벨(L3, L4 등)을 포함하도록 확장시킬 수 있다.
예시했듯이, 데이터 프로세싱 시스템(8)은 입력/출력(I/O) 장치(20), 시스템 메모리(18), 및 비휘발성 기억장치(22)를 포함하고, 그것들이 상호접속선(16)에 각기 결합된다. I/O 장치(20)가 표시 장치, 키보드, 및 그래픽 포인터 등과 같은 종래의 주변 장치를 구비하고, 종래의 어댑터를 통해 상호접속선(16)에 인터페이스된다. 비-휘발성 기억장치(22)가 운용 체계 및 다른 소프트웨어를 기억한다. 그들은 데이터 프로세싱 시스템(8)이 파워온되는 것에 응답해서 휘발성 시스템 메모리(18)로 로드된다. 물론, 데이터 프로세싱 시스템(8)에는 망 또는 부가 장치에 접속하기위한 직렬 및 병렬 포트, 시스템 메모리(18)로의 액세스를 조정하는 메모리 제어기 등과 같은 도 2에 도시 안된 다수의 구성요소를 포함할 수 있음을 당업자는 인식하게 된다.
시스템 버스를 포함하는 하나 이상의 버스를 구비하는 상호접속선(16)은 L2 캐시(14a-14n), 시스템 메모리(18), I/O 장치(20), 및 비휘발성 기억장치(22)간의 통신 트랜잭션용 콘딧(conduit)으로서 역할을 한다. 상호접속선(16)을 거친 대표적인 통신 트랜잭션은 그 트랜잭션의 소스, 그 트랜잭션의 의도된 수신측을 지정하는 목적지 태그, 어드레스 및/또는 데이터를 포함하고 있다. 상호접속선(16)에 결합된 각 장치는, 그 장치의 코히어런스가 트랜잭션을 위해 갱신해야 하는 지를 판단하기 위해 상호접속선(16)을 거친 모든 통신 트랜잭션을 스눕(snoop)하는 것이 바람직하다. 각 캐시로부터 상호접속선(16)의 시스템 버스까지의 외부 스눕 경로를 구비하는 것이 바람직하다.
코히어런트 메모리 계층은 MESI 프로토콜과 같은 선택된 메모리 코히어런스 프로토콜를 사용해서 유지된다. 그 MESI 프로토콜에서, 코히어런스 상태의 표시는 최소한의 모든 상위 레벨(캐시) 메모리의 각 코히어런스 그래뉼(granule)(예를 들어, 캐시 라인 또는 섹터)과 연관해서 기억된다. 각 코히어런스 그래뉼은 변경 상태(M), 배타적 상태(E), 공용 상태(S), 또는 무효 상태(I)로된 4개 상태중 하나를 가질 수 있고, 그것은 캐시 디렉토리에서 2개 비트로 인코드될 수 있다. 변경된 상태는 코히어런스 그래뉼이 그 변경된 코히어런스 그래뉼을 기억하는 캐시에서만 유효하다는 것과 그 변경된 코히어런스 그래뉼의 값이 시스템 메모리에 기록되지 않았다는 것을 표시한다. 코히어런스 그래뉼이 배타적 상태로 표시될 때, 코히어런스 그래뉼은, 그 레벨의 메모리 계층에서 모든 캐시중, 배타적 상태에 있는 코히어런스 그래뉼을 갖는 캐시에만 존재한다. 그러나, 배타적 상태에 있는 데이터는 시스템 메모리와 정합하고 있다. 코히어런스 그래뉼이 캐시 디렉토리에서 공용 상태로서 마크되는 경우, 그 코히어런스 그래뉼은 연관된 캐시, 및 같은 레벨의 메모리 계층에 있는 나머지 캐시에서 존재하고, 코히어런스 그래뉼의 모든 복제는 시스템 메모리와 정합하고 있다. 결국, 무효 상태는 코히어런스 그래뉼과 연관된 데이터 또는 어드레스 태그가 어느 것도 캐시에 존재하지 않는 다는 것을 표시한다.
SMP 시스템에서 데이터의 각 캐시 라인(블럭)은 어드레스 태그 필드, 상태 비트 필드, 인클루시비티(inclusivity) 비트 필드, 및 실제 명령 또는 데이터를 기억하는 기억값 필드를 포함함다. 멀티프로세서 컴퓨터 시스템에서 캐시 코히어런스(캐시에 기억된 값의 유효성을 표시하는)를 유지하기위해 상태 비트 필드 및 인클루시비티 비트 필드를 사용한다. 어드레스 태그는 그 대응하는 메모리 블럭의 모든 어드레스의 서브세트이다. 어드레스 태그 필드내에서 태그중 하나와 들어오는 어드레스의 비교 정합은, 엔트리가 유효 상태라면, 캐시 "히트"를 표시한다.
캐시 코히어런스를 유지할 때, 기록-통과 캐시 기억에서는 캐시에서 기억을 수행하기 전에 캐시 라인 또는 이득 소유권(MESI 프로토콜에서는 E 또는 M 상태)을 할당하지 않는 다. 특히, 기록-통과 또는 기억-통과 캐시는 프로세서 기록 동작동안 캐시 메모리 및 메인 메모리 모두에 기록 동작을 제공하도록 동작하여, 캐시 메모리 및 메인 메모리의 데이터간에 일관성(consistency)을 보증한다. 캐시 코히어런스를 유지하기 위해, 코히어런트 기록-통과 기억 동작에서는 특정한 캐시 코히어런스 포인트로부터 원래의 것을 제외한 프로세서상의 어떤 유효 캐시 라인도 무효화해야하므로, 모든 프로세서의 연속 로드가 새롭게 갱신된 데이터를 얻는 것을 확실시한다.
통상적으로, 캐시 코히어런스 포인트로부터 캐시 라인을 무효화하기 위해 버스 "스눕핑" 기술이 사용된다. 각 캐시는 스눕핑 논리를 포함하여 스눕핑을 행한다. 판독 또는 기록을 행할 때마다, 데이터의 어드레스는 원래의 프로세서 코어로부터 공통 버스를 공용하는 모든 다른 캐시로 전달된다. 각 스눕핑 논리 유닛은 버스로부터의 어드레스를 스눕하고 그 어드레스를 캐시용 어드레스 태그 어레이와 비교한다. 히트의 경우에, 스눕 응답이 복귀되어 순서대로 발생하는 부가 동작이 히트 캐시 라인을 무효화하는 등의 캐시 코히어런스를 유지하게 한다. 이와는 달리, 캐시가 처음에 캐시 외부로 푸쉬되어야 하는 어드레스된 데이터의 변형된 복제를 갖거나 알맞은 스눕핑에서 방지해야할 문제가 있기 때문에, "리트라이(retry)"의 스눕 응답이 캐시의 버스 스눕핑 논리로부터 발생될 수 있다. 리트라이의 경우에, 데이터 어드레스를 발생시키는 프로세서 코어는 판독 또는 기록 동작을 리트라이한다.
양호한 실시예에 대한 대안인 스눕핑 기술에 의해, 도 1에는 기록-통과 기억 명령을 리트라이할 때 발생하는 에러의 타이밍도를 나타낸다. 그 예에서, SMP 구조는 프로세서 코어 0 및 프로세서 코어 1, 각 코어와 연관된 L1 캐시 및 그 2개의 프로세서에 의해 공용된 L2 캐시를 구비한 구조라고 가정한다. 프로세서에 대해 캐시 코히어런스를 유지하는 포인트는 상기 예에서 L2 캐시로 세트된다. 캐시에 프로세서 코어 및 레벨을 추가해서 사용할 수 있으나, 예시를 위해 도 1에서 사용되지 않았다.
예에서, 의사-코드 시퀀스는:
프로세서 코어 0 프로세서 코어 1
2를 A에 기억 루프: A를 로드
A ! = 2 이면 루프
3을 A에 기억
프로세서 코어 0의 기억 동작을 수행하면, 리트라이만 되고, 프로세서 코어 0의 기억를 다시 수행하기전에 프로세서 코어 1의 로드 및 기억을 진행되게 하고, 어드레스 A의 최종 코히어런트 메모리 상태는 2로 되어 올바르지 않다.
타이밍도에 도시된 제1 클럭 사이클(60)에서, 버스를 코어 0(코어 0 WT ST)으로 조정하여 기록-통과 기억 동작 동안 어드레싱 및 데이터(RA)가 L2 래치로 통과된다. 그후, 도면 번호(62)에서, 기록-통과 기억 동작의 데이터 어드레스는 시스템 버스를 통해 모든 넌-오리지네이팅(non-originating) 코어(코어 1)에 전달되어넌-오리지네이팅 코어가 데이터 어드레스를 스눕하는 것이 가능하다. 또한, 같은 사이클동안, 도면 번호(64)에서, 데이터 어드레스는 데이터의 이전 버젼이 L2 캐시에 상주하는 지를 판단하기 위해 L2 태그 어레이와 비교된다. 제3 사이클에서, 도면 번호(66)에서, 그 스눕된 어드레스를 코어(1)와 연관된 L1 캐시의 L1 태그 어레이와 비교한다. 또한, 도면 번호(68)에서 L2 캐시의 L2 히트가 복귀된다. 그후, 도면 번호(70)에서, L2 캐시를 "A=2"로 갱신하는 파이프라인에 기록 명령을 위치시킴으로써 L2 데이터 기록을 수용한다. 다음에, 제4클록 사이클동안, 코어 1의 L1 캐시에 대한 스눕 응답이 도면 번호(72)로 도시했듯이 리트라이로서 복귀된다.
특히 상기와 같은 양호하지 않은 스눕핑 기술에 의해, 기록-통과 기억 동작에서 리트라이를 표시하는 스눕 응답을 복귀하기에 앞서서 L2 캐시의 갱신을 수용한다. 리트라이를 복귀시키기위해서는 M 상태에 있는 하나의 섹터당 하나의 스눕 히트 및, 큐되는 유효 동작상에서 복수의 스눕 히트를 포함해야 하기 때문이다. 코어 1의 L1 캐시가 리트라이를 복귀시킬 때, 코어 0이 세트되어 기록-통과 기억 동작을 리트라이한다. L2 캐시에서 캐시 코히어런스를 유지하여, 리트라이는 L2 캐시에서 기록-통과 기억 동작을 수행하고 기록-통과 동작을 버스에 보내기전에 높은 레벨의 캐시를 갱신한다.
"A!=2"일 때 루프에서 프로세서 코어 1이 대기한다. 코어 0으로부터의 기억 동작이 L2 캐시로 기록될 때, 코어 0에서 리트라이가 세트될 지라도, 코어 1은 로드에 대해 버스를 조정하고 도면 번호 74에서 데이터의 어드레스를 전달한다. 다음에, 도면 번호 76에서 그 어드레스를 L2 캐시의 L2 태그 어레이와 비교한다. 도면번호 78에서 L2 캐시의 히트를 수신한다. 결국, 도면 번호 80에서 "A=2"일때 L2 캐시의 데이터 판독이 수행된다. 데이터를 판독하는 데서의 지연 시간(81)후에, 코어 (1)가 루프에서 브레이크되는 것이 가능하여, "3을 A로 기억"의 기억 동작을 수행한다.
코어 1이 버스를 조정하여 기록-통과 기억 동작을 통과하고 그 동작에서 도면 번호 82에서 기록-통과 기억 동작의 데이터 어드레스가 전달된다. 다음에 도면 번호 84에서 L2 태그가 비교된다. 그런후, 도면 번호 86에서 L2 캐시의 캐시 히트를 수신한다. 결국, 도면 번호 88에서 그 데이터를 "A=3"의 기록으로서 L2 캐시의 파이프라인에 수용한다.
코어 1의 로드 및 기억 동작에서 국부 버스를 조정하기 때문에, 그 버스를 다음 사용할 때까지 코어 0의 "2를 A에 기억" 동작의 리트라이가 지연된다. 도면 번호 90에서 코어 0은 L2 캐시에서 수신되는 기록-통과 기억 동작을 재발생시킨다. 도면 번호 92에서 데이터 어드레스를 국부적으로 보내서 코어 1을 스눕시킨다. 그후 도면 번호 94에서 L1 태그를 코어 1의 L1 캐시에서 비교한다. 다음에서, 도면 번호 96에서 L2 태그를 L2 캐시에서 비교한다. 도면 번호 98에서 L2 캐시로부터 캐시 히트를 복귀시킨다. 결국, 도면 번호 100에서 그 데이터를 L2 캐시에 재기록해서 "A=2" 로 된다.
상기 예시된 바와 같이, 기록-통과 기억 동작을 국부적으로 스눕되게 하고 기억 동작을 리트라이되게 하면, 버스를 조정하는 다른 프로세서 코어는 로드를 수행하고, 그 갱신된 데이터를 L2 캐시에서 발생시키고, 다시 수행되야할 조정을 원래의 기억 동작이 수신하기전에, 기록-통과 기억 동작을 수행한다. 제 1기록-통과 기억 동작은 그것에 따르는 제 2기록-통과 기억 동작으로부터 데이터를 무효로 한다.
도 1에 예시된 문제를 해결하기 위한 하나의 잠정적인 해결책에서는 리트라이 스테이지에 뒤에 데이터 수용 스테이지가 있도록 L2 데이터 및 어드레스 파이프라인을 지연시킨다. 상기 해결책을 수행하기 위해서는 L2 판독을 L2 기록과 분리되게 하거나 L2 판독을 지연되게 해야한다. 첫번째 경우에는 L2 조정의 복잡성은 갑자기 증가한다. 두번째 경우에는 바람직하지 않은 성능 손실을 발생하게 하는 모든 L2 캐시 히트 조건에 2개의 추가 사이클을 더한다.
다른 해결책으로는 본 명세서에서 공지된 레지스터 재명명(renaming) 방식으로 사용된 바와 같은 방법으로 기록-통과 동작의 이전 상태를 기억해서 파이프라인에 수용된 L2 갱신을 플러쉬(flush)되게 하는 것이다. 캐시에서, 그 해결책에서는 캐시의 속도를 감소시키는 복잡성이 바람직하지 않게 추가된다.
본 발명의 양호한 실시예에서 도 3은 자체-스눕핑 기술을 이용한 기록-통과 기억 명령의 작동을 타이밍도로 나타낸 것이다. 도 3에는 도 1에 도시된 프로세서 동작을 예시하나, 도 3에서는 자체-스눕핑을 사용하여 복수의 리트라이로 발생한 에러를 제거한다. 코어 0는 L2 캐시에서 수신되는 기록-통과 기억 동작을 발생시켜서 L2 캐시 조정이 도면 번호 110에서 수행된다. 다음에, 도면 번호 112에서 L2 태그 어레이를 L2 태그와 비교하게 된다. 따라서, 도면 번호 114에서 L2 태그 어레이의 태그로써 캐시 히트를 수신한다. 그래서, 도면 번호 116에서 L2 캐시에 대한 데이터 기록을 실행된 파이프라인에 위치시킨다. 지연 시간(117) 동안, 기록-통과 기억 동작을 메인 메모리에 기록하기 위해 시스템 버스가 조정되고, 그 지연 시간후에 시스템 버스에 따라 자체-스눕을 도면 번호 118에서 조정한다. 도 1에서는 캐시 코히어런스 포인트가 기록-통과 기억 동작동안 L2 캐시에 위치하나, 본 실시예에서는 캐시 코히어런스 포인트가 기록-통과 기억 동작동안 시스템 버스상에 위치된다. 기록-통과 기억 동작동안 캐시 코히어런스 포인트를 시스템 버스상에 위치시킨 상태에서, 자체-스눕동안 리트라이가 발생하면, 리트라이 신호가 복귀하지 않을 때까지 필요한 만큼의 횟수만큼 기록-통과 동작이 다른 명령 대기와 무관하게 시스템 버스상에서 스눕된다. 특히, 시스템 버스가 버스 조정 논리를 포함하고, 기록-통과 기억 동작의 메모리 코히어런스가 모든 캐시에서 종료되어 데이터를 메인 메모리로 기록할 때까지, 버스 조정 논리는 스눕핑 장치가 그 버스에 계속 액세스하는 것을 확실시한다.
자체-스눕에 부가해서, 도면 번호 120에서 기록-통과 기억 동작의 국부 데이터 어드레스가 외부 스눕 경로를 따라 넌-오리지네이팅 코어로 전달된다. 그후, 도면 번호 122에서 L1 태그를 L1 태그 어레이와 비교하는 것이 수행된다. 다음 사이클에서, 도면 번호 124에서 L1 태그 비교에 대한 응답이 복귀된다. 응답이 리트라이이면, L1 캐시가 넌(non)-리트라이 응답을 복귀시킬 때까지 기록-통과 기억 동작의 어드레스가 자체-스눕동안 시스템 버스를 계속 조정한다.
넌-리트라이 응답이 일단 복귀되면, 도면 번호 126에서 코어 1은 국부 버스를 조정하여 로드를 수행한다. 그러나, 대체된 실시예에서, 리트라이없이 시스템버스에 기억 동작을 수용할 때 까지 코어 1 로드는 반드시 대기할 필요는 없다. 예를 들어, 로드가 L2 캐시에서 히트하고 수용되면, 데이터 코히어런스를 붕괴시키지 않으면서 도면 번호 116에서 도시된 L2 데이터 기록후 코어 1 로드를 시작한다. 그후, 도면 번호 128에서 L2 태그를 L2 태그 어레이와 비교하는 것이 수행된다. 다음에, L2 히트가 L2 태그 어레이의 태그로써 도면 번호 130에서 복귀된다. 그후, 도면 번호 132에서 L2로부터 데이터를 판독한다. 지연 시간(133)후, 코어 1은 도면 번호 134에서 기록-통과 기억 동작동안 국부 버스를 조정한다. 그후, 도면 번호 136에서 L2 태그를 L2 태그 어레이와 비교하는 것이 수행된다. 다음에, L2 히트가 L2 태그 어레이의 태그로써 도면 번호 138에서 복귀된다. 그후, 도면 번호 132에서 L2 데이터 기록을 수용한다. 코어 1의 기록-통과 기억 동작에 대해 도시했듯이, 도면 번호 140으로 도시된 L2 데이터 기록을 한 후, 기록-통과 기억 동작을 시스템 버스에 대해 메인 메모리에서 계속 갱신하여 캐시 코히어런스가 시스템 버스에서 자체-스눕을 수행해서 유지된다.
도 4에서 기록-통과 기억 동작를 수행하는 프로세스의 고레벨 논리 흐름도가 예시된다. 블록(150)에서 그 프로세스를 개시하고 그후 블록(152)로 진행한다. 블록(152)에서 프로세스 코어가 기록-통과 기억 동작의 어드레스를 저레벨의 캐시로 보내기위해 국부 버스를 조정한다. 그후, 블록(154)에서 저레벨 캐시에서 어드레스를 태그 어레이와 비교한다. 다음 블록(156)에서 저레벨 캐시에서 태그를 갖는 히트가 있는 지가 판단된다. 저레벨 캐시에서 태그를 갖는 히트가 있다면, 이 프로세스가 블록(158)으로 통과한다. 블록(158)에서 저레벨 캐시에서 기록하기위해 데이터를 수용한다. 그후, 이 프로세스는 블록(160)으로 통과한다. 블록(156)으로 돌아가서, 저레벨 캐시에서 태그를 갖는 히트가 없다면, 이 프로세스는 블록(160)으로 통과한다. 도시하지 않았지만, 블록(154,156 및 158)에 예시된 프로세스가 다수의 저레벨 캐시상에서 이행되는 것이 가능하다.
블록(160)에서 기록-통과 기억 동작을 시스템 버스에 통과하는 것을 도시한다. 다음에, 블록(162)에서 기록-통과 기억 동작의 어드레스를 메모리로 보내는 시스템 버스를 조정하고 시스템 버스의 자체-스눕을 수행한다. 그후, 블록(164)에서 비(non)-통과된 통과 캐시에서 어드레스를 외부 스눕 경로를 통해 스눕시킨다. 예를 들어, 비-통과된 통과 캐시는 프로세서 코어로부터의 경로를 구비하지 않고, 그 프로세서 코어가 기록-통과 기억 동작을 시스템 버스에 발생시킨다. 다음에, 블록(166)에서 비-통과된 통과 캐시에서 그 스눕핑된 어드레스를 태그 어레이와 비교한다. 그후, 블록(168)에서 스눕이 리트라이를 복귀하는 지를 판단한다. 스눕이 리트라이를 복귀시키면, 이 프로세스는 블록(162)으로 통과한다. 스눕이 리트라이를 복귀시키지 않으면, 이 프로세스는 블록(170)으로 통과한다. 블록(170)에서 기록-통과 기억 동작을 메인 메모리에 수용한다. 그후, 블록(172)에서 시스템 버스를 다음 동작으로 릴리스한후 이 프로세스가 복귀한다.
본 발명이 양호한 실시예를 참고로 특히 도시 및 설명되었지만, 형태 및 상세한 내용상의 각종 변경이 본 발명의 정신 및 범위를 벗어남이 없이 본 명세서에서 성취될 수 있음을 당업자는 이해할 것이다. 예를 들어, 대체 실시예에서는 요청을 시스템 버스에 파이프라이닝함으로써, 그 요청이 시스템 버스상에서 나타나는 것과 같은 순서로 수용되고 그 데이터 순서를 또한 유지하기만 하면, 계속중인 요청과 같은 어드레스로의 연속적인 요청은 그 계속중인 요청을 수용하거나(넌-리트라이 응답을 갖는) 완료(연관된 데이터를 판독 또는 기록)하기 전에 조정하는 것이 가능하게 된다.

Claims (8)

  1. 데이터 프로세싱 시스템에서 기록-통과 기억 동작동안 캐시 코히어런스를 유지하는 방법으로서, 상기 데이터 프로세싱 시스템에는 시스템 버스 및 메모리 계층에 결합되는 복수의 프로세서를 포함하고 있고, 상기 메모리 계층에는 복수 레벨의 캐시를 포함하고 있는, 데이터 프로세싱 시스템에서 기록-통과 기억 동작동안 캐시 코히어런스를 유지하는 방법에 있어서,
    (a) 프로세서로부터 기록-통과 기억 동작을 상기 프로세서 및 상기 시스템 버스간에 삽입되어 있는 캐시들을 통해 상기 시스템 버스로 통과시키는 단계와,
    (b) 상기 기록-통과 기억 동작동안 캐시 히트를 얻는 상기 삽입된 캐시들중 어느 하나의 캐시에서 상기 기록-통과 기억 동작을 수행하는 단계와,
    (c) 캐시 코히어런스를 유지하도록, 상기 기록-통과 동작이 이루어질 때까지 상기 기록-통과 동작의 데이터 어드레스를 이용하여 상기 시스템 버스의 외부 스눕 경로로부터 상기 프로세서 및 상기 시스템 버스간에 삽입되어 있지 않은 캐시들을 스눕핑하는 단계를 구비하는 것을 특징으로 하는 데이터 프로세싱 시스템에서 기록 -통과 동작동안 캐시 코히어런스를 유지하는 방법.
  2. 제1항에 있어서, 상기 제1항의 단계(a)에,
    상기 프로세서가 상기 기록-통과 기억 동작의 상기 데이터 어드레스를 상기 삽입된 캐시로 통과시키도록 국부 버스를 조정하는 단계를 더 구비하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 상기 제1항의 단계(b)에,
    상기 삽입된 캐시들에서 상기 기록-통과 동작의 상기 데이터 어드레스를 각 어드레스 태그 어레이와 비교하는 단계와,
    상기 데이터 어드레스를 상기 어드레스 태그 어레이내에서 어느 하나의 태그와 정합시키면 캐시 히트를 복귀시키는 단계를 더 구비하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서, 상기 제1항의 단계(c)에,
    상기 기록-통과 기억 동작동안 상기 시스템 버스를 조정하는 단계와,
    상기 기록-통과 기억 동작의 상기 데이터 어드레스를 상기 시스템 버스의 상기 외부 스눕 경로로 통과시키는 단계와,
    상기 프로세서 및 상기 시스템 버스간에 삽입되지 않은 캐시들에서 상기 데이터 어드레스를 각 어드레스 태그 어레이와 비교하는 단계와,
    상기 시스템 버스에 복귀된 어느 하나의 리트라이 응답에 응답해서 상기 외부 스눕 경로를 따라 상기 데이터 어드레스를 유지하는 단계와,
    리트라이 상태없이 상기 시스템 버스로 복귀하는 상기 스눕에 응답해서 상기 메모리 계층의 시스템 메모리내에서 상기 기록-통과 기억 동작를 완료하는 단계를 더 구비하는 것을 특징으로 하는 방법.
  5. 데이터 프로세싱 시스템에서 기록-통과 기억 동작동안 캐시 코히어런스를 유지하는 시스템으로서, 상기 데이터 프로세싱 시스템에는 시스템 버스 및 메모리 계층에 결합되는 복수의 프로세서를 포함하고 있고, 상기 메모리 계층에는 복수 레벨의 캐시를 포함하고 있는, 데이터 프로세싱 시스템에서 기록-통과 기억 동작동안 캐시 코히어런스를 유지하는 시스템에 있어서,
    (a) 프로세서로부터 기록-통과 기억 동작을 상기 프로세서 및 상기 시스템 버스간에 삽입되어 있는 캐시들을 통해 상기 시스템 버스로 통과시키는 수단과,
    (b) 상기 기록-통과 기억 동작동안 캐시 히트를 얻는 상기 삽입된 캐시들중 어느 하나의 캐시에서 상기 기록-통과 기억 동작을 수행하는 수단과,
    (c) 캐시 코히어런스를 유지하도록, 상기 기록-통과 동작이 이루어질 때까지 상기 기록-통과 동작의 데이터 어드레스를 이용하여 상기 시스템 버스의 외부 스눕 경로로부터 상기 프로세서 및 상기 시스템 버스간에 삽입되어 있지 않은 캐시들을 스눕핑하는 수단을 구비하는 것을 특징으로 하는 데이터 프로세싱 시스템에서 기록-통과 기억 동작의 캐시 코히어런스를 유지하는 시스템.
  6. 제5항에 있어서, 상기 제5항의 수단(a)에,
    상기 프로세서가 상기 기록-통과 기억 동작의 상기 데이터 어드레스를 상기 삽입된 캐시로 통과시키도록 국부 버스를 조정하는 수단을 더 구비하는 것을 특징으로 하는 시스템.
  7. 제5항에 있어서, 상기 제5항의 수단(b)에,
    상기 삽입된 캐시에서 상기 기록-통과 동작의 상기 데이터 어드레스를 각 어드레스 태그 어레이와 비교하는 수단과,
    상기 데이터 어드레스를 상기 어드레스 태그 어레이내에서 어느 하나의 태그와 정합하면 캐시 히트를 복귀시키는 수단을 더 구비하는 것을 특징으로 하는 시스템.
  8. 제5항에 있어서, 상기 제5항의 수단(c)에,
    상기 기록-통과 기억 동작동안 상기 시스템 버스를 조정하는 수단과,
    상기 기록-통과 기억 동작의 상기 데이터 어드레스를 상기 시스템 버스의 상기 외부 스눕 경로로 통과시키는 수단과,
    상기 프로세서 및 상기 시스템 버스간에 삽입되지 않은 캐시들에서 상기 데이터 어드레스를 각 어드레스 태그 어레이와 비교하는 수단과,
    상기 시스템 버스에 복귀된 어느 하나의 리트라이 응답에 응답해서 상기 외부 스눕 경로를 따라 상기 데이터 어드레스를 유지하는 수단과,
    리트라이 상태없이 상기 시스템 버스로 복귀하는 상기 스눕에 응답해서 상기 메모리 계층의 시스템 메모리내에서 상기 기록-통과 기억 동작를 완료하는 수단을 더 구비하는 것을 특징으로 하는 시스템.
KR10-2000-0031588A 1999-06-18 2000-06-09 멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시코히어런스를 유지하는 방법 및 시스템 KR100380674B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US33651699A 1999-06-18 1999-06-18
US09/336,516 1999-06-18

Publications (2)

Publication Number Publication Date
KR20010015008A KR20010015008A (ko) 2001-02-26
KR100380674B1 true KR100380674B1 (ko) 2003-04-18

Family

ID=23316452

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0031588A KR100380674B1 (ko) 1999-06-18 2000-06-09 멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시코히어런스를 유지하는 방법 및 시스템

Country Status (4)

Country Link
JP (1) JP2001043133A (ko)
KR (1) KR100380674B1 (ko)
CN (1) CN1149494C (ko)
TW (1) TW548547B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3800555A1 (en) * 2019-10-03 2021-04-07 ARM Limited An apparatus and method for handling cache maintenance operations

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1320464C (zh) * 2003-10-23 2007-06-06 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US7788451B2 (en) 2004-02-05 2010-08-31 Micron Technology, Inc. Apparatus and method for data bypass for a bi-directional data bus in a hub-based memory sub-system
US7257683B2 (en) 2004-03-24 2007-08-14 Micron Technology, Inc. Memory arbitration system and method having an arbitration packet protocol
US7725619B2 (en) * 2005-09-15 2010-05-25 International Business Machines Corporation Data processing system and method that permit pipelining of I/O write operations and multiple operation scopes
US7568073B2 (en) * 2006-11-06 2009-07-28 International Business Machines Corporation Mechanisms and methods of cache coherence in network-based multiprocessor systems with ring-based snoop response collection
GB0623276D0 (en) * 2006-11-22 2007-01-03 Transitive Ltd Memory consistency protection in a multiprocessor computing system
US20120254541A1 (en) * 2011-04-04 2012-10-04 Advanced Micro Devices, Inc. Methods and apparatus for updating data in passive variable resistive memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3800555A1 (en) * 2019-10-03 2021-04-07 ARM Limited An apparatus and method for handling cache maintenance operations

Also Published As

Publication number Publication date
CN1278625A (zh) 2001-01-03
KR20010015008A (ko) 2001-02-26
JP2001043133A (ja) 2001-02-16
CN1149494C (zh) 2004-05-12
TW548547B (en) 2003-08-21

Similar Documents

Publication Publication Date Title
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US5367660A (en) Line buffer for cache memory
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
US5717898A (en) Cache coherency mechanism for multiprocessor computer systems
US5652859A (en) Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US6760819B2 (en) Symmetric multiprocessor coherence mechanism
KR100194253B1 (ko) 메시 데이터 코히어런시 프로토콜 이용 방법 및 멀티프로세서 시스템
US5301298A (en) Processor for multiple cache coherent protocols
US6418515B1 (en) Cache flush unit
JPH10254773A (ja) アクセス方法、処理装置およびコンピュータ・システム
US7124252B1 (en) Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system
US20070005908A1 (en) Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces
US6711653B1 (en) Flexible mechanism for enforcing coherency among caching structures
JP3661764B2 (ja) 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム
JPH0247756A (ja) 多重プロセツサ・システム用書込み共用キヤツシユ回路
US20050071573A1 (en) Modified-invalid cache state to reduce cache-to-cache data transfer operations for speculatively-issued full cache line writes
JP2006277762A (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
JPH0619786A (ja) キャッシュコヒーレンスを維持する方法及び装置
US5263144A (en) Method and apparatus for sharing data between processors in a computer system
US5379396A (en) Write ordering for microprocessor depending on cache hit and write buffer content
US20210103493A1 (en) Memory interface having data signal path and tag signal path
US6178484B1 (en) DCBST with ICBI mechanism to maintain coherency of bifurcated data and instruction caches
US20010029574A1 (en) Method and apparatus for developing multiprocessore cache control protocols using a memory management system generating an external acknowledgement signal to set a cache to a dirty coherence state
US5920891A (en) Architecture and method for controlling a cache memory
US5737568A (en) Method and apparatus to control cache memory in multiprocessor system utilizing a shared memory

Legal Events

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

Payment date: 20060310

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee