KR19980079441A - 대칭형 멀티프로세서 시스템 버스를 위한 요구-기반 larx-예약 프로토콜 - Google Patents

대칭형 멀티프로세서 시스템 버스를 위한 요구-기반 larx-예약 프로토콜 Download PDF

Info

Publication number
KR19980079441A
KR19980079441A KR1019970055774A KR19970055774A KR19980079441A KR 19980079441 A KR19980079441 A KR 19980079441A KR 1019970055774 A KR1019970055774 A KR 1019970055774A KR 19970055774 A KR19970055774 A KR 19970055774A KR 19980079441 A KR19980079441 A KR 19980079441A
Authority
KR
South Korea
Prior art keywords
cache
caches
value
processing unit
write
Prior art date
Application number
KR1019970055774A
Other languages
English (en)
Other versions
KR100259433B1 (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 KR19980079441A publication Critical patent/KR19980079441A/ko
Application granted granted Critical
Publication of KR100259433B1 publication Critical patent/KR100259433B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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

Landscapes

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

Abstract

본 발명은 처리 유닛이 다중 레벨 캐쉬들(multi-level caches)을 갖는 멀티프로세서 컴퓨터 시스템(multi-processor computer system)에서 로드-및-예약 인스트럭션들(load-and-reserve instructions)을 취급하는 방법에 관한 것이다. 대칭형 멀티프로세서(symmetric multi-processor: SMP) 컴퓨터는 주어진 메모리 주소들에 대해 동일한 값들이 그 시스템 내의 모든 프로세서들에게 제공되는 것을 보장하기 위해 캐쉬 일관성(cache coherency)을 사용한다. 예를 들어, 빠른 판독-및-기록 동작에서 사용되는 로드-및-예약 인스트럭션들은 불필요하게 복잡해질 수 있다. 본 발명은 메모리 장치로부터 상기 캐쉬들 내로 값을 로딩하고, 상기 값이 상위 캐쉬로부터 캐스트 아웃(cast out)될 때에만 그 상위 캐쉬로부터 다음번 하위 캐쉬로 예약 버스 동작(reserve bus operation)을 전송하고, 그 후 예약 버스 동작을 전송한 후 제 1 캐쉬로부터 상기 값을 캐스트 아웃함으로써 컴퓨터의 메모리 내의 여러 값들에 대한 액세스 방법을 제공한다. 이러한 프로시저는 바람직하게는 다중 레벨 캐쉬 구조 내의 모든 캐쉬에 대해 사용되는데, 다시 말하면 상기 값이 주어진 임의의 캐쉬로부터 캐스트 아웃될 때 예약 버스 동작이 상기 주어진 임의의 캐쉬로부터 다음번 하위-레벨 캐쉬(즉, 버스에 더 가까이 놓여 있는 인접한 캐쉬)로 전송되지만, 그 예약 버스 동작은 하위 캐쉬들 모두에게로 전송되지는 않는다. 상기 값과 관련되어 있는 메모리 장치의 주소에 기록하기 위해 컴퓨터 시스템 내의 다른 모든 처리 유닛에 의해 이루어지는 모든 시도가 모든 상위-레벨 캐쉬들로 전송된다. 상기 주소에 기록하기 위한 상기 모든 시도에 응답하여 해당 블록에 대한 예약 표시가 제거된다.

Description

대칭형 멀티프로세서 시스템 버스를 위한 요구-기반 LARX-예약 프로토콜
본 발명은 컴퓨터 시스템에 관한 것으로, 특히 컴퓨터 프로세서에 의해 사용되는 캐쉬를 동작시키기 위한 인스트럭션들을 취급하는 방법에 관한 것이다.
종래의 멀티프로세서 컴퓨터 시스템 (10)의 기본적인 구조가 도 1에 예시되어 있다. 컴퓨터 시스템 (10)은 (디스플레이 모니터, 키보드, 및 영구 저장 장치와 같은) 입력/출력(I/O) 장치 (14), 프로그램 인스트럭션들을 수행하기 위하여 처리 유닛(processing unit)에 의해 사용되는 (DRAM과 같은) 메모리 장치 (16), 및 컴퓨터가 처음 턴온될 때마다 (통상 영구 메모리 장치인) 주변 장치들 중의 하나로부터 운영 체제를 탐색하여 로드하는 것이 주목적인 펌웨어(firmware) (18)를 포함하는 여러 가지 주변장치들에 접속된 몇 개의 처리 유닛 (12a), (12b) 및 (12c)를 구비하고 있다. 처리 유닛 (12a), (12b) 및 (12c)는 버스 (20)을 포함하는 여러 가지 수단을 통해 주변 장치들과 통신한다. 컴퓨터 시스템(10)은 예를 들어 모뎀 또는 프린터에 접속하기 위한 직렬 포트 및 병렬 포트와 같은 도시되지 않은 다수의 추가적인 구성요소들을 구비할 수 있다. 본 발명 기술 분야의 당업자들은 예를 들어, 디스플레이 어댑터는 비디오 디스플레이 모니터를 제어하는데 사용될 수 있으며, 메모리 제어기는 메모리 (16)을 액세스하는데 사용될 수 있는 등의 경우와 같이, 도 1의 블록 다이어그램에 도시된 구성요소들과 관련하여 사용될 수 있는 기타 다른 구성요소들이 존재한다는 것을 이해할 수 있을 것이다. 또한, 상기 컴퓨터 시스템은 3개 이상의 처리 유닛을 구비할 수 있다.
대칭형 멀티프로세서(symmetric multi-processor: SMP) 컴퓨터에서는, 처리 유닛 (12a), (12b), 및 (12c)가 모두 일반적으로 동일하다. 즉, 이들 처리 유닛은 모두 동작용 인스트럭션들 및 동작용 프로토콜들의 공통 세트 또는 공통 서브세트를 사용하며, 일반적으로 동일한 구조(architecture)를 갖는다. 처리 유닛 (12)의 통상적인 구조가 도 2에 도시되어 있다. 처리 유닛 (12)는 컴퓨터를 동작시키기 위해 프로그램 인스트럭션을 수행하는 복수의 레지스터 및 실행 유닛을 갖는 프로세서 (22)를 포함한다. 프로세서는 또한 인스트럭션 캐쉬 (24) 및 데이터 캐쉬 (26)과 같은 캐쉬들을 구비할 수 있다. 이들 캐쉬는 프로세서의 레지스터 및 실행 유닛과 함께 일체로 패키징될 경우 온-보드(on-board)라고 불리운다. 캐쉬들은 흔히 메모리 (16)으로부터의 값들을 로딩하는 더 긴 단계를 피함으로써 처리 속도를 증가시키기 위해 프로세서에 의해 반복적으로 액세스될 수 있는 값들을 임시로 저장하는데 사용된다.
처리 유닛(12)는 캐쉬(28)과 같은 추가적인 캐쉬를 포함할 수 있다. 캐쉬(28)은 온-보드(레벨 1) 캐쉬(24) 및 (26)을 지원하기 때문에 레벨 2(L2) 캐쉬로 불리운다. 달리 말하면, 캐쉬 (28)은 메모리 (16) 및 온-보드 캐쉬 간의 중개자(intermediary)의 역할을 수행하며, 또한 온-보드 캐쉬가 저장할 수 있는 것보다 훨씬 더 많은 양의 정보(인스트럭션 및 데이터)를 저장할 수 있지만, 액세스 시간이 더 길어진다는 단점이 있다. 예를 들어, 캐쉬(28)은 256 또는 512 킬로바이트의 저장 용량을 갖는 칩이 될 수 있는 반면, 프로세서(12)는 전체 저장 용량이 64 킬로바이트인 온-보드 캐쉬를 갖는 IBM사의 PowerPCTM604-시리즈 프로세서일 수 있다. 캐쉬(28)은 버스(20)과 접속되며, 메모리(16)으로부터 프로세서(12)로 정보를 로딩하는 모든 동작은 캐쉬(28)을 거쳐야 한다. 비록 도 2는 2개의 레벨을 갖는 캐쉬 계층 구조(hierarchy)만을 도시하고 있지만, 직렬로 접속된 캐쉬들의 다수의 레벨들이 존재하는 경우에는 다중 레벨 캐쉬 계층 구조가 사용될 수도 있다.
SMP 컴퓨터에서는, 일관성 메모리 시스템(coherent memory system)을 제공하는 것, 즉 각각의 개별 메모리 위치에 대한 기록이 모든 프로세서에 대해 소정의 순서로 직렬화(serialize)되도록 해주는 것이 중요하다. 예를 들어, 메모리 내의 위치가 1, 2, 3, 4의 값을 갖도록 기록 시퀀스에 의해 갱신되는 것으로 가정한다. 캐쉬-일관성 시스템에서는, 주어진 위치에 대한 기록이 상기 순서대로 발생하는지를 모든 프로세서가 관찰한다. 그러나, 처리 소자(processing element)는 메모리 위치에 대한 기록을 놓칠 가능성이 있다. 메모리 위치를 판독하는 주어진 처리 소자는 값 2에 대한 갱신을 놓쳐서 시퀀스를 1, 3, 4로 인식할 수 있다. 상기 특성들을 구현하는 시스템을 일관된(coherent) 것이라고 부른다. 실제로 모든 일관성 프로토콜(coherency protocols)은 캐쉬 블록의 크기(size)의 세분성(granularity)과 관련하여서만 동작한다는 점에 유의하는 것이 중요하다. 다시 말하면, 일관성 프로토콜은 데이터의 이동 및 데이터에 대한 기록 허가(write permissions)를 캐쉬 블록 단위로 제어하며, 각각의 개별 메모리 위치에 대해서는 별도로 제어하지 않는다.
본 발명 분야의 당업자들에게 공지된 캐쉬 일관성을 달성하기 위한 프로토콜 및 기법들(techniques)이 다수 존재한다. 프로토콜이 주어진 시점에서 주어진 위치(캐쉬 블록)에 대한 기록을 허용하는 허가(permission)를 오직 하나의 프로세서만이 갖도록 해주는 것이 일관성을 유지하기 위한 상기 모든 메카니즘의 핵심 요건이다. 상기 요건의 결과, 처리 소자가 메모리 위치에 대한 기록을 시도할 때마다, 그 처리 소자는 자신이 상기 메모리 위치를 기록하고자 한다는 것을 모든 처리 소자들에게 먼저 알려주고, 모든 다른 처리 소자들로부터 기록을 수행할 허가를 수신하여야 한다. 가장 중요한 점은 시스템 내의 모든 다른 프로세서들이 최초로 동작을 개시한 프로세서에 의한 기록에 관해 그 기록 동작이 수행되기 전에 보고를 받아야만 한다는 점이다.
다중 레벨 계층 구조에서 캐쉬 일관성이 구현되는 방법을 더욱 자세히 예시하기 위해 도 4를 고려하기로 한다. 도 4는 각각이 L1 캐쉬 (40b, 41b, 42b), L2 캐쉬 (40c, 41c, 42c) 및 L3 캐쉬 (40d, 41d, 42d)를 갖는 프로세서 (40a, 41a, 42a)로 이루어진 3개의 처리 유닛(40, 41, 42)을 갖는 SMP 컴퓨터 시스템을 도시하고 있다. 이러한 계층 구조에서는, 각각의 하위-레벨 캐쉬(즉, L3 캐쉬는 L2 캐쉬보다 하위임)는 통상적으로 그 크기가 더 크며, 그 다음 상위-레벨 캐쉬보다 액세스 시간이 더 길다. 또한, 비록 반드시 요구되는 것은 아니지만 하위-레벨 캐쉬들이 상위-레벨 캐쉬들에 존재하는 모든 블록들의 카피(copies)를 포함하는 것이 일반적이다. 예를 들어, 주어진 처리 유닛의 L2 캐쉬 내에 블록이 존재하는 경우, 이것은 그 처리 유닛에 대한 L3 캐쉬가 또한 (나중에는 쓸모없는(stale) 상태가 될) 해당 블록 카피를 갖는다는 것을 암시한다. 또한, 주어진 처리 유닛의 L1 캐쉬 내에 블록이 존재하는 경우, 그 블록은 또한 해당 처리 유닛의 L2 및 L3 캐쉬 내에도 존재한다. 이러한 특성은 포함(inclusion)으로 알려져 있으며, 본 발명 기술 분야의 당업자들에게는 잘 알려져 있다. 이하에서는, 상기 포함 원리가 본 발명과 관련되는 캐쉬들에도 적용되는 것으로 가정한다.
도 4에 도시된 바와 같은 시스템 내에서의 캐쉬 일관성을 구현하기 위해, 프로세서들은 일반화된 공통 상호 접속부(common generalized interconnect) (43)을 통해 서로 통신한다. 프로세서들은 상호 접속부를 통해 메모리 위치를 판독 및 기록하고자 하는 자신들의 의도를 표시하는 메시지를 전달한다. 동작이 상호 접속부 상에서 이루어질 때, 나머지 다른 모든 프로세서들은 상기 동작을 스누프(snoop)하고, 그들 자신의 캐쉬들의 상태가 요구된 동작의 진행을 허용하는 것이 가능한지의 여부와 만일 가능한 경우 어떤 조건하에서 가능한지에 대해 결정한다.
상기 통신이 필요한 이유는 캐쉬들을 구비한 시스템에서는 주어진 메모리 블록의 가장 최근의 유효 카피가 시스템 메모리(44)로부터 그 시스템 내의 하나 이상의 캐쉬들로 이동할 수 있기 때문이다. 하나의 프로세서(예를 들어, (40a))가 그 캐쉬 계층 구조(40b, 40c, 및 40d) 내에 존재하지 않는 메모리 위치에 대한 액세스를 시도하는 경우, 그 메모리 위치에 대한 정확한 값을 포함하는 해당 블록의 정확한 버전(correct version)이 그 해당 시스템 메모리 (44) 내에 존재하거나 또는 처리 유닛(41) 및 (42) 내의 하나 이상의 캐쉬들 내에 존재할 수 있다. 만일 정확한 버전이 시스템 내의 하나 이상의 기타 다른 캐쉬들 내에 있는 경우, 그 정확한 버전은 시스템 메모리 대신에 시스템 내의 캐쉬(들)로부터 정확한 값을 얻기 위해 필요하다.
예를 들어, 프로세서(40a)가 메모리 내의 위치 판독을 시도한다고 하자. 프로세서(40a)는 그 자신의 L1 캐쉬(40b)를 폴링(poll)한다. 만일 블록이 L1 캐쉬(40b)내에 존재하지 않는 경우에는, 요구가 L2 캐쉬(40c)로 전송된다. 만일 블록이 L2 캐쉬 내에 존재하지 않는 경우에는, 요구가 L3 캐쉬(40d)로 전송된다. 만일 블록이 L3 캐쉬(40d)내에 존재하지 않는 경우, 요구는 서비스되는 일반화된 상호 접속부(43) 상에 존재한다. 일단 동작이 일반화된 상호 접속부 상에 서 이루어지는 경우, 다른 모든 처리 유닛은 그 동작을 스누프하고, 해당 블록이 자신들의 캐쉬 내에 존재하는지의 여부를 결정한다. 주어진 처리 유닛, 예를 들어 처리 유닛(42)가 자신의 L1 캐쉬(42a) 내에 처리 유닛(40)에 의해 요구된 데이터 블록을 가지며, 또한 그 데이터가 포함 원리에 의해 갱신되는 경우, L2 캐쉬 (42c) 및 L3 캐쉬 (42d)도 또한 그 블록 카피들(그러나, 프로세서의 캐쉬 내의 카피가 갱신되기 때문에 이들 블록 카피들은 쓸모가 없다)을 갖는다. 따라서, 처리 유닛(42)의 L3 캐쉬(42d)가 판독 동작을 스누프하는 경우, 이것은 요구된 블록이 상위-레벨 캐쉬 내에 존재하고 갱신된다는 것을 결정할 것이다. 이러한 상황이 발생하면, L3 캐쉬(42c)는 메시지가 일반화된 상호 접속부 상에 위치되도록 하여 메모리 위치의 실제값이 메모리 계층 구조의 최상위에 있는 L1 캐쉬 내에 존재하며 또한 그 실제값은 처리 유닛(40)의 판독 요구를 서비스하는 것이 가능하도록 검색되어야 하기 때문에 L3 캐쉬(42c)가 나중에 그 동작을 다시 재시도(retry)해야 한다는 것을 처리 유닛(42)에 통보한다.
일단 처리 유닛(40)으로부터의 요구가 재시도되었으면, L3 캐쉬(42d)는 L1 캐쉬로부터 갱신된 데이터를 검색하는 프로세스를 시작하고, 또한 본 발명과는 구체적으로 관계되지 않는 구현예의 정확하고 상세한 내용에 따라 L3 캐쉬(42d), 메인 메모리(44)에서 또는 이들 양자 모두에서 갱신된 데이터가 이용되도록 한다. 상위-레벨 캐쉬로부터 블록을 검색하기 위해, L3 캐쉬(42d)는 내부-캐쉬 접속부(42x, 42y)를 통해 검색될 블록을 요구하는 상위-레벨 캐쉬(42c, 42d)로 메시지를 전송한다. 이들 메시지가 L1 캐쉬에 도달할 때까지 처리 유닛 계층 구조의 상위 방향으로 전달되어, 해당 블록이 최저 레벨(L3 캐쉬 또는 메인 메모리)까지 계층 구조의 하위 방향으로 이동되어 처리 유닛(40)으로부터의 요구를 서비스할 수 있도록 해준다.
처리 유닛 (40)(구체적으로는 L3 캐쉬 (40d))는 궁극적으로 일반화된 상호 접속부 상에 판독 요구를 표시한다. 그러나, 이 시점에서 갱신된 데이터는 처리 유닛(42)의 L1 캐쉬로부터 이미 검색되었으며, 프로세서(40a)로부터의 판독 요구는 만족될 것이다. 상기 기술된 시나리오를 보통 스누프 푸쉬(snoop push)라고 부른다. 판독 요구는 일반화된 상호 접속부 상에서 스누프되는데, 이 일반화된 상호 접속부는 처리 유닛(42)가 처리 유닛(40)의 판독 요구를 만족시키도록 계층 구조의 최하부로 블록을 푸쉬하도록 한다.
여기서 언급해야 할 가장 중요한 점은 프로세서가 블록을 판독하거나 기록하고자 할 경우에는, 캐쉬 일관성을 유지하기 위해 시스템 내의 다른 처리 장치들과 상기 판독 또는 기록 의도를 통신해야 한다는 점이다. 이것을 달성하기 위해, 캐쉬 일관성 프로토콜은 캐쉬 계층 구조의 각 레벨 내의 각각의 블록과 연관되어 있으며, 상태 표시기(status indicator)는 블록의 현재 상태를 표시한다. 상태 정보는 일반화된 상호 접속부 (43) 및 내부-캐쉬 접속부 (40x, 40y, 41x, 41y, 42x, 42y) 상의 메시지 트래픽(message traffic)을 감소시키는 일관성 프로토콜 내의 소정의 최적화(optimizations)가 가능하도록 하는데 사용된다. 이러한 메카니즘의 하나의 예로, 처리 유닛이 판독을 실행할 때, 처리 유닛은 그 판독이 나중에 포기(retire)되어야만 하는지의 여부를 표시하는 메시지를 수신한다. 판독 동작이 포기되지 않은 경우, 메시지는 또한 일반적으로 상기 처리 유닛으로 하여금 기타 다른 처리 유닛이 또한 여전히 활성 상태에 있는 해당 블록의 카피를 가지고 있는지의 여부를 결정하도록 해주는 정보를 포함한다(이것은 다른 최하위-레벨 캐쉬들로 하여금 이들 최하위-레벨 캐쉬들이 재시도를 하지 않은 모든 판독에 대해 공유(shared) 또는 비공유(not shared) 표시를 부여하도록 함으로써 달성된다). 따라서, 처리 유닛은 시스템 내의 기타 다른 처리 유닛이 해당 블록 카피를 갖는지의 여부를 결정할 수 있다. 기타 다른 처리 유닛 중 어느 것도 활성 상태에 있는 해당 블록의 카피를 갖지 않는 경우, 판독 처리 유닛은 그 해당 블록의 상태를 배타(exclusive)로 표시(mark)한다. 만일 블록이 배타 상태로 표시되는 경우에는 기타 다른 처리 유닛 중 어느 것도 해당 블록의 카피를 갖고 있지 않기 때문에, 시스템 내의 기타 다른 처리 유닛과 먼저 통신하지 않고도 처리 유닛이 나중에 그 해당 블록을 기록하도록 하는 것이 허용될 수 있다. 따라서, 일반적으로 프로세서가 자신의 의도를 상호 접속부 상으로 먼저 통신하지 않고도 위치를 판독하거나 또는 기록하는 것이 가능하다. 그러나, 이것은 기타 다른 프로세서 중 어느 것도 해당 블록에 무관함을 일관성 프로토콜이 보장하는 경우에만 발생한다. 다중-레벨 캐쉬 일관성 프로토콜의 정확한 동작의 몇 가지 상세한 내용들은 단순화를 위해 본 발명의 설명에서는 생략되었다. 그러나, 본 발명과 관련된 기본적인 특징들은 본 명세서에 기술되어 있다. 기술되지 않은 상기 특징들은 본 발명 기술 분야의 당업자에게 잘 알려져 있다.
본 발명과 관련되는 다중-레벨 캐쉬 구조의 또 다른 특징은 제거(evictions)라고 알려진 동작이다. 캐쉬 내에 있는 블록들은 세트들(sets)이라고 불리우는 블록 그룹으로 분할된다. 세트는 주어진 메모리 블록이 상주(reside in)할 수 있는 블록들의 집합이다. 주어진 어떠한 메모리 블록에 대해서도 그 해당 블록이 프리세트 매핑 함수(preset mapping functions)에 따라 매핑될 수 있는 캐쉬 내의 특정 세트(unique set)가 존재한다. 하나의 세트 내에 있는 블록들의 수를 캐쉬의 연관성(associativity)이라고 부른다(예를 들어, 2-웨이 세트 연관(2-way set associative)은 주어진 어떠한 메모리 블록에 대해서도 그 해당 메모리 블록이 매핑될 수 있는 2개의 블록이 캐쉬 내에 존재한다는 것을 의미한다). 그러나, 메인 메모리 내의 몇 개의 서로 상이한 블록들은 주어진 모든 세트에 대해 매핑될 수 있다.
주어진 캐쉬에 대한 하나의 세트의 모든 블록들이 충만 상태이고 그 주어진 캐쉬가 상기 충만된 세트 내로 매핑하는 메모리 위치에 대한 판독 또는 기록 요구를 수신할 때, 해당 캐쉬는 현재 그 세트 내에 있는 블록들 중의 하나를 제거시켜야만 한다. 상기 캐쉬는 본 발명 기술 분야의 당업자에게 알려져 있는 다수의 수단들(최저 사용 빈도(least recently used: LRU), 랜덤(random), 의사-LRU(pseudo-LRU) 등) 중의 하나에 의해 제거되어야 할 하나의 블록을 선택한다. 만일 선택된 블록 내의 데이터가 갱신된 경우, 그 데이터는 (L1 또는 L2 캐쉬인 경우) 또 다른 캐쉬 또는 (L3 캐쉬인 경우) 메인 메모리인 메모리 계층 구조 내의 다음번 하위 레벨에 기록된다. 포함 원리에 따르면, 계층 구조의 하위 레벨은 이미 기록-갱신된 데이터를 보유하는데 사용될 수 있는 블록을 갖는다는 점에 유의하여야 한다. 그러나, 선택된 블록 내의 데이터가 갱신되지 않은 경우, 그 블록은 단순히 포기되고, 계층 구조 내의 다음번 하위 레벨에 기록되지 않는다. 계층 구조의 하나의 레벨로부터 블록을 비우는 상기 프로세스를 제거(eviction)라고 한다. 상기 프로세스가 끝나면, 상기 캐쉬는 제거된 블록의 카피를 더 이상 보유하고 있지 않으며, 또한 제거된 블록에 대한 일관성 프로토콜에 더 이상 능동적으로 참여하지 않는데, 그 이유는 캐쉬가 (일반화된 상호 접속부 (43) 또는 내부-캐쉬 접속부 (40x, 41x, 42x, 40y, 41y, 42y) 중의 어느 하나 상의) 동작을 스누프할 때에 상기 블록이 그 해당 캐쉬 내에서 발견될 수 없기 때문이다.
대칭형 멀티프로세서의 또 다른 특징이 본 발명과 관련된다. 대칭형 멀티프로세서에서는, 하나의 타스크를 실행하는 프로세서들 간의 협력을 가능하도록 하기 위하여 시스템 내의 여러 프로세서들의 동작(actions)을 동기화시키기 위한 수단을 제공하는 것이 필요하다. 이것을 달성하기 위해, 대부분의 최근의 프로세서들은 자신들의 인스트럭션 세트들 내에 동기화를 핸들링하기 위한 명시적인 인스트럭션들을 포함한다. 특히, PowerPCTM인스트럭션 세트는 lwrx 및 stcx로 알려진 2개의 인스트럭션을 제공한다. 이들 인스트럭션은 2개의 형태, 즉 32-비트 구현예에 대한 lwarx 및 stwcx 및 64-비트 구현예에 대한 ldarx 및 stdcx로 되어 있다. 이하에서, lwarx 및 stwcx라는 용어는 상기 구현예들 중 어느 하나에 대한 인스트럭션들을 표시하는 것으로 사용된다(ldarx 및 stdcx 인스트럭션은 ldarx 및 stdcx가 8-바이트 크기에 대해 동작하며 lwarx 및 stwcx는 4-바이트 크기에 대해 동작한다는 점을 제외하고는 기본적으로 동일한 의미 규칙(semantics)을 갖는다). 이들 인스트럭션들은 동기화 프리미티브(synchronization primitives)를 확립하는 기능을 수행한다.
lwarx 인스트럭션은 정렬된 4-바이트로 된 메모리 워드를 프로세서 내의 레지스터로 로드한다. 또한, lwarx는 액세스된 메모리 워드를 포함하는 메모리 블록 상에 예약(reservation)을 위치시킨다. 대부분의 구현예에서는, 예약이 캐쉬 일관성 프로토콜에 사용되는 블록 크기와 동일한 크기인 블록 상에 위치된다. 예약은 블록의 주소 및 플래그(flag)를 포함한다. 상기 플래그는 활성 상태가 되며, lwarx 인스트럭션이 참조된 메모리 워드를 성공적으로 판독할 때 블록 주소가 로드된다. 만일 예약이 유효한 경우(플래그가 활성 상태인 경우), 프로세서 및 메모리 계층 구조는 서로 협력하여 예약이 존재하는 블록에 기록할 수 있는 모든 동작에 대해 전체 시스템을 모니터하여야 한다. 상기와 같은 기록이 발생할 경우, 예약 내의 플래그는 리셋된다. 예약 플래그는 stwcx 인스트럭션의 거동(behavior)을 제어하는데 사용된다.
stwcx 인스트럭션은 lwarx에 대응하는 인스트럭션이다. stwcx 인스트럭션은 먼저 예약 플래그가 유효한지의 여부를 결정한다. 예약 플래그가 유효한 경우, stwcx 인스트럭션은 4-바이트로 된 특정 메모리 워드에 대한 저장을 수행하고, 그 저장이 연속된 것임을 표시하도록 조건 코드 레지스터(condition code register)를 설정하며, 예약 플래그를 리셋한다. 반면에, 예약 내의 예약 플래그가 유효하지 않은 경우, stwcx 인스트럭션은 저장이 예약 플래그의 상태에 좌우되므로 흔히 조건 저장(condition store)이라고 불리운다.
lwarx/stwcx 인스트럭션 시퀀스의 기초가 되는 일반적인 개념에 따르면, 하나의 프로세서는 메모리 위치를 판독하고, 소정의 방법으로 그 위치를 갱신하며, 새로운 값을 메모리에 저장할 수 있도록 하면서, 다른 프로세서는 lwarx가 실행되는 시점으로부터 stwcx가 완료될 때까지 메모리 위치를 변경하지 않는 것을 보장한다. 이러한 시퀀스는 일반적으로 단위 판독-갱신-기록(atomic read-modify-write) 시퀀스라고 불리우는데, 그 이유는 프로세서가 위치를 판독하고, 갱신하며, 그 위치에 대한 또 다른 프로세서의 기록 동작에 의해 인터럽트됨이 없이 새로운 값을 기록할 수 있기 때문이다. lwarx/stwcx 동작 시퀀스는 인터럽트가 불가능한 하나의 시퀀스(one uninterruptable sequence)로 발생하지 않으며, 오히려 프로세서가 lwarx를 실행하고, 그 후 나중에 stwcx를 성공적으로 완료할 수 있다는 사실은 판독-갱신-기록 시퀀스가 실제로는 마치 더 이상 분할할 수 없는(atomic) 것처럼 발생한다는 점을 프로그래머에게 보장한다. 이러한 lwarx/stwcx 시퀀스의 더 이상 분할할 수 없는 특성은 본 발명 기술 분야의 당업자에게 잘 알려진 다수의 동기화 프리미티브를 구현하는데 사용될 수 있다.
캐쉬 일관성 및 lwarx/stwcx 인스트럭션의 의미 규칙의 설명으로부터, 상기 대칭형 멀티프로세서 2가지 특징 간에 서로 강한 상관 관계(strong relationship)가 있음이 분명해졌다. 캐쉬-일관성 프로토콜이 추구하는 것은 모든 프로세서들이 관찰하는 소정의 순서로 주어진 메모리 위치에 대한 모든 기록을 직렬화함으로써 언제 메모리 위치에 대한 기록이 가능한지를 제어하는 것이다. 이러한 목표를 달성하기 위해, 캐쉬 일관성 프로토콜은 메모리 위치에 대한 기록을 원하는 하나의 프로세서가 (다른 모든 프로세서들이 해당 블록에 대한 관심이 있는 경우) 다른 모든 프로세서들에게 자신이 기록을 실행하고자 한다는 의도를 통지하여, 그 기록을 실행하기 전에 상기 다른 모든 프로세서들로부터 허가를 얻어낼 것이 요구된다. 따라서, 기록이 시도되면 모든 메모리 위치에 대한 기록에 관한 정보가 시스템을 통해 통신된다. 반면에, lwarx/stwcx 인스트럭션이 추구하는 것은, 일단 하나의 lwarx가 실행되면 실행된 lwarx에 의해 로드된 메모리 위치를 잠재적으로 변경할 수 있으며 상기 실행된 lwarx 이후에 발생하는 모든 기록들이 프로세서 내의 예약 플래그를 무효화하고, 그에 따라 stwcx가 메모리에 저장되는 것을 방지하는 것을 보장하는 것이다. 상기 2가지 목표를 달성할 수 있는지의 여부는 메모리 위치에 대한 기록 발생 시기에 대한 결정이 가능한지에 달려 있다. 실제로는, lwarx/stwcx 인스트럭션 의미 규칙에 대한 대부분의 구현예들은 기존의 캐쉬 일관성 프로토콜에 좌우되어 lwarx/stwcx 시퀀스들이 실제로 더 이상 분할할 수 없는 것을 보장하는데 도움을 준다. 실제로는, 현재까지의 모든 구현예들은 캐쉬 일관성 알고리즘에 의해 사용되는 블록 크기와 동일한 크기를 갖는 정렬된 메모리 블록에 대해 예약을 유효하게 한다. 이러한 블록을 예약 극소 단위(reservation granule)이라고 부른다. 이러한 구조는 lwarx/stwcx 인스트럭션 의미 규칙을 구현하는 메카니즘들로 하여금 캐쉬 일관성을 위해 시스템 전체를 통해 통신되는 메시지들을 재사용(re-use)하도록 하며, 또한 lwarx/stwcx 인스트럭션의 의미 규칙을 유지하는데 도움을 주는 것이 가능하도록 해준다. 이러한 구현의 결과, 예약 극소 단위 내에 있는 임의의 위치에 대해 발생하는 모든 기록은 그 기록이 상기 lwarx 인스트럭션에 의해 로드된 특정 위치를 변경시키지 않았다 하더라도 예약을 취소할 것이다. 예약 플래그를 리셋함에 있어서 이러한 정확성의 결여는 lwarx/stwcx 인스트럭션 의미 규칙을 구현하는 수단으로 캐쉬 일관성 메시지들을 재사용하도록 해주는 구현예들에서 이루어지는 전형적인 트레이드-오프(trade-off)에 해당한다.
캐쉬 일관성 및 lwarx/stwcx 시퀀스의 구현예가 어떻게 관련되는지를 더욱 상세히 이해하기 위해, lwarx/stwcx를 지원하는데 필요한 추가적인 구성을 갖는 하나의 처리 유닛을 명확히 도시하고 있는 도 5를 참조한다(도 4의 처리 유닛은 비록 이들 유닛이 도 4에 명확히 도시되어 있지는 않지만 상기 추가적인 구성과 동일한 구성을 포함한다는 점에 유의하여야 한다). 도 5의 각 캐쉬에 대해, 예약 유닛(50a, 50b, 50c)가 존재한다. 이들 예약 유닛은 예약, 즉 주소(50d, 50e, 50f) 및 플래그 (50g, 50h, 50i) 양자를 모두 포함한다. 이들 각 예약 유닛은 자신들의 예약 극소 단위 주소(reservation granule address) (50d, 50e, 50f) 내의 모든 기록 동작에 대해 각각의 버스 (51, 52, 53)을 스누프하고, 상기 동작이 검지되면 플래그 (50g, 50h, 50i)를 무효화시킨다. 예약 유닛들은 그 자체가 캐쉬 일관성 구조(cache-coherency scheme)의 일부를 이룬다. 이들 예약 유닛은 버스를 모니터하여, 캐쉬 자신들과 유사한 방법으로 버스 트랜잭션에 응답한다.
종래 기술에서는, 예약 유닛 주소들 및 플래그들은 2가지 일반적인 방법 중의 하나로 설정된다. 하나의 방법에서는, 프로세서가 블록이 자체 메모리 계층 구조의 어떠한 캐쉬 내에도 존재하지 않는 메모리 위치에 대해 lwarx를 발행하는 시도를 할 경우, 판독 동작은 계층 구조 내의 캐쉬들 각각을 통해 그 계층 구조의 최상부에 있는 프로세서로부터 전달되어, 상기 기술한 바와 같이 최종적으로 그 판독 동작이 제공될 일반화된 상호 접속부 상으로 발행된다. 그러나, 앞의 예와는 달리, 이들 판독 동작들은 특정 표시기(indicator)로 태그되어 캐쉬들 내의 예약 유닛들에게 판독이 lwarx에 대한 것이며, 예약 유닛들이 주소 및 플래그를 설정해야만 한다는 것을 통지한다. 또 다른 방법에서는, 프로세서가 L1 캐쉬 내에 이미 존재하는 블록 내의 메모리 위치로 lwarx를 발행할 수 있다. 이러한 상황은 lwarx 히트(lwarx hit)로 알려져 있다. 이 경우, 프로세서의 예약 유닛은 그 예약 주소 및 플래그 (각각 (50d) 및 (50g))를 설정하고, lwarx 예약(이하 RESERVE라 함)으로 알려진 특정 버스 동작을 L1 및 L2 캐쉬 사의의 접속부 (51) 상에 발행한다. L2 캐쉬는 예약 주소를 포함하는 RESERVE 메시지를 수신하고, 그 예약 주소(50e) 및 플래그(50h)를 설정한다. 또한, L2 캐쉬는 RESERVE 메시지를 L2 캐쉬에 의해 취해진 동작들을 반복하게 될 L3 캐쉬 상으로 RESERVE 메시지를 전송하며, 이 시점에서 모든 예약 유닛들은 적절하게 설정된다. L1 캐쉬부터 L3 캐쉬로 RESERVE 메시지를 전달하는 프로세스는 내부-캐쉬 접속부들(51) 및 (52)의 이용 가능성과 특정 구현예의 구체적인 상세한 내용에 따라 임의의 시간이 걸릴 수 있다.
예약 유닛이 설정(set)될 수 있는 또 다른 방법이 있다. 이러한 상황은 블록이 캐쉬 계층 구조로부터 전체가 아닌 일부분이 제거되었을 때 발생한다. 예를 들어, 프로세서가 L1 캐쉬 내에는 존재하지 않지만 L2 캐쉬 (및 포함 원리에 의해 L3 캐쉬) 내에 존재하는 하나의 블록 내에 있는 주소에 대한 lwarx 인스트럭션을 실행한다고 가정한다. 이 경우, 프로세서는 L2 캐쉬에 대한 lwarx용 판독으로 표시되는 판독을 발행한다. L2 캐쉬는 자신이 해당 블록의 카피를 가지고 있다는 것을 결정하고, 그 해당 블록을 프로세서로 직접 복귀(return)시킨다. 일단 해당 블록이 프로세서로 복귀되면, 프로세서는 자신의 예약 주소 및 플래그를 갱신한다. L2 캐쉬는 또한 자신의 예약을설정하고 L3 캐쉬에 RESERVE 버스 동작을 전송하여 L3 캐쉬에 그 예약을 통보한다. 이러한 시나리오는 상기 기술한 2가지 경우를 단순히 결합한 것에 불과하다. 일반적으로, lwarx를 갖는 프로세서로부터의 판독은 그 판독을 만족하는 블록의 카피를 갖는 캐쉬와 만날 때까지 예약 유닛을 설정하는 계층 구조의 하위 방향으로 전달된다. 그 후, 상기 블록 카피를 갖는 캐쉬는 나머지 예약 유닛을 설정하기 위해 RESERVE 버스 동작을 계층 구조의 나머지 부분의 하위 방향으로 전달된다.
이러한 방법으로, 계층 구조 내의 모든 예약 유닛은 적절한 예약 정보를 갖는 lwarx 인스트럭션의 결과로서 로드되며, 예약 극소 단위(reservation granule)에 기록하는 트랜잭션에 대한 스누프 동작을 개시한다. 이렇게 하면, 예약 유닛들이 예약 플래그를 리셋하도록 해주는 것은 물론 예약을 위한 메모리 위치가 갱신되었을 가능성이 있는 경우에는 stwcx 인스트럭션이 완료되지 못하도록 한다.
캐쉬 일관성 및 예약 유닛들 간의 상호 작용(interplay)을 예시하기 위해, 프로세서가 L1 캐쉬 내에 존재하는 위치에 대한 lwarx를 실행하는 상기 기술한 두 번째 경우를 고려한다. 프로세서는 자신의 예약을 설정하고 L1 및 L2 캐쉬 사이의 내부-캐쉬 접속부(51) 상에 RESERVE 버스 동작을 제공한다. 앞서 기술한 바와 같이, RESERVE 버스 동작이 최하위 레벨 캐쉬까지 전달되는 데에는 임의의 시간이 걸릴 수 있다. 예약이 L1 캐쉬 내에서 이루어진 후에, 그리고 RESERVE 버스 동작이 L3 캐쉬까지 전달되기 전에 예약 극소 단위내의 기록 동작이 일반화된 상호 접속부 상에 발생하는 것이 가능하다. 이 경우, L3 캐쉬는 아직 예약에 대한 통보를 받지 못하였으며, 시스템이 잘못 작동하는 것처럼 보일 수도 있다. 그러나, 실제는 그렇지 않다. 오히려, 일관성을 보장하기 위해 버스 상에서 관찰되는 기록에 관한 정보를 계층 구조의 최상부로 전달할 것이 요구된다. 이것은 L1 예약 유닛으로 하여금 기록을 통보받도록 하여, 그 예약 플래그를 리셋하도록 해준다. 일반적으로, 캐쉬 일관성에 따르면 (예약을 갖는 블록에 대해 발생하는 기록들을 포함한) 모든 기록에 대한 정보가 존재하는 블록의 카피를 갖는 계층 구조의 최상위 레벨에 이를 때까지 모든 처리 유닛의 캐쉬 계층 구조의 상위 방향으로 전달될 것을 요구한다. 따라서, 기록에 대한 정보는 해당 블록 카피가 존재하는 레벨에 도달할 때까지 전달되어, L3 캐쉬가 아직 예약을 통보받지 않았다 하더라도 또 다른 프로세서가 예약 극소 단위에 대한 기록을 실행할 경우 프로세서가 리셋되도록 해준다.
그러나, 블록의 일부 또는 전부가 메모리 계층 구조로부터 제거된 경우, 캐쉬 일관성 프로토콜은 존재하는 블록의 카피를 갖는 최상위 캐쉬 레벨보다 상위에 있는 모든 기록에 대한 정보를 전달하지 않는다(즉, 블록이 제거되더라도 모든 예약 플래그의 유효성은 변경되지 않는다). 이 경우, 일부 다른 메카니즘은 프로세서 내의 예약 플래그를 리셋하기 위해 기록에 대한 정보를 프로세서에 대한 계층 구조의 상위 방향으로 전달할 책임을 갖는다. 이것이 예약 유닛이 하는 역할이다. 블록이 캐쉬 계층 구조의 주어진 레벨로부터 제거되었다면, 그 캐쉬는 더 이상 일관성 프로토콜에 참여하지 않지만, 예약에는 계속 참여한다. 예약 유닛이 활성 상태의 예약을 갖는 블록에 대한 기록을 검지하면, 예약 유닛은 예약 플래그를 리셋하고, lwarx/stwcx 인스트럭션의 의미 규칙이 보존되는 것을 보장하기 위하여 계층 구조의 상위 레벨에 이를 때까지 기록에 대한 정보를 상위 방향으로 전달한다. 그러나, 기록에 대한 정보가 적어도 상기 계층 구조 레벨에 이를 때까지 상위 방향으로 전달되는 것을 일관성 메카니즘이 보장한다는 사실로 인하여 블록이 캐쉬 계층 구조의 주어진 레벨로부터 제거될 때까지는 예약을 포함할 필요가 없다. 선행 기술의 시스템이 RESERVE 버스 동작을 lwarx 히트 상에 있는 전체 계층 구조의 하위 방향으로 전달하는 경우, 상기 시스템은 예약 유닛이 단지 현재 필요한 기록보다 빠른 기록에 대해 스누프할 준비를 하도록 해주는 기능을 한다. 예약 유닛은 블록이 캐쉬 계층 구조의 주어진 레벨로부터 제거된 이후에만 기록에 대한 스누프 동작을 수행하여야 한다. 블록이 제거되기 전에 예약 유닛을 설정하는 것은 그다지 엄격하게 요구되는 것은 아니다.
종래 기술의 시스템에서는 프로세서에 의해 lwarx 인스트럭션이 실행되어 캐쉬 계층 구조 내의 블록을 발견하는 경우에는 언제라도 RESERVE 버스 동작이 그 계층 구조의 나머지 부분을 통하여 하위 방향으로 전달된다는 점에 유의하는 것이 중요하다. 이것은 프로세서가 이미 해당 블록에 대한 해결되지 않은 예약(outstanding reservation)을 가지고 있는 경우라 하더라도 일어난다. 예를 들어, 테스트-앤드-테스트-앤드-세트(test-and-test-and-set)라고 불리우며 lwarx/stwcx로 구현되는 공통 동기화 프리미티브(common synchronization primitive)는 먼저 메모리 내의 위치에 대한 lwarx를 수행한다. 상기 위치가 영(0)이 아닌 값을 갖는 경우, 프로세서는 브랜치되어 lwarx로 복귀하여 0이 될 때까지 계속 그 값을 판독한다. lwarx가 0이 되면, 프로세서는 stwcx 인스트럭션을 사용하여 값을 1로 변경하려는 시도를 계속한다. 이것이 성공하면, 프로세서는 0의 값을 판독하여 1로 변경하고, 그 변경된 값을 더 이상 분할할 수 없는 동작으로(automatically) 다시 기록하는 것이 가능하다. 상기 프로시저는 앞에서 기술한 단위 판독-갱신-기록 시퀀스이며, 다른 프로세서들의 절차 진행을 방지하는 로크(lock)를 설정한다(나머지 다른 프로세서들은 1을 판독하고 있으며 프로세서들 자신이 0을 판독할 때까지는 절차를 진행할 수 없는데, 이렇게 하여 상기 판독된 값을 더 이상 분할할 수 없는 동작으로 성공적으로 1로 갱신한다). 평균적으로, 주어진 프로세서는 일부 다른 프로세서가 이미 로크를 갖고 있기 때문에 1로 복귀하는 lwarx 상에서 스핀(spin)한다. 이 경우, 1로 복귀하는 각 lwarx에 대해 RESERVE 동작은 전체 계층 구조의 하위 방향으로 그리고 일반화된 접속부(통상적으로, 로크의 메모리 위치를 갖는 블록은 L1 캐쉬 내에서 발견되는 것이 일반적임) 상으로 전달된다. RESERVE 버스 동작의 반복되는 방송은 lwarx 스톰(lwarx storm)으로 알려져 있다. 이것은 심각한 성능 열화를 가져오고, 선행 기술 시스템을 제한하는 요소가 된다. 따라서, 시스템 버스의 트래픽을 감소시키고 전반적인 시스템이 더 높은 성능을 달성하도록 lwarx/stwcx 의미 규칙을 구현하는 좀 더 효율적인 방법을 고안하는 것이 바람직하다. 이것은 특히 상기 RESERVE 버스 동작이 캐쉬 계층 구조 전체 깊이의 하위 방향으로 전송될 것을 요구하지 않는 경우에 효과적이다.
본 발명의 목적은 멀티프로세서 컴퓨터 시스템 내의 캐쉬-엔트리 예약을 핸들링하는 개선된 방법을 제공하는 것이다.
본 발명의 다른 목적은 로드-및-예약(load-and-reserve: lwarx) 인스트럭션들로부터 버스 트래픽을 감소시키는 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 개선된 성능을 달성하기 위해 기존의 메카니즘을 사용하는 방법을 제공하는 것이다.
도 1은 종래 기술의 멀티프로세서 컴퓨터 시스템의 블록 다이어그램.
도 2는 온-보드(on-board) 인스트럭션 캐쉬 및 데이터 캐쉬들을 갖는 프로세서, 및 하나의 제 2-레벨 캐쉬를 구비한 종래 기술의 처리 유닛의 블록 다이어그램.
도 3은 로드-저장 동작을 위한 캐쉬 엔트리들을 예약하는 것과 관련된 단계들을 기술하는 플로우 차트.
도 4는 다중 레벨 캐쉬 계층 구조를 갖는 종래의 대칭형 멀티프로세서 시스템의 블록 다이어그램.
도 5는 lwarx 및 stwcx 인스트럭션들을 지원하는데 필요한 구성을 상세하게 나타낸 종래의 처리 유닛의 블록 다이어그램.
* 도면의 주요부분에 대한 부호의 설명
10 : 멀티프로세서 컴퓨터 시스템
12a, 12b, 12c, 40, 41, 42 : 처리 유닛(processing unit)
14 : 입력/출력(I/O) 장치
16 : 메모리 장치
18 : 펌웨어(firmware)
20, 51, 52, 53 : 버스
22, 40a, 41a, 42a : 프로세서
24, 26, 28, 40b, 41b, 42b, 40c, 41c, 42c, 40d, 41d, 42d : 캐쉬
40x, 40y, 41x, 41y, 42x, 42y : 내부-캐쉬 접속부
43 : 공통 상호 접속부(common generalized interconnect)
44 : 시스템 메모리
50a, 50b, 50c : 예약 유닛
50d, 50e, 50f : 주소
50g, 50h, 50i : 플래그
상기 목적들은 멀티프로세서 컴퓨터 시스템의 처리 유닛에 사용하기 위한 메모리 장치로부터의 값에 액세스하는 방법에 의해 달성되는데, 상기 액세스 방법은 메모리 장치로부터 모든 캐쉬 내로 값을 로딩하는 단계, 상기 값을 예약된 것으로 수신하는 최상위 캐쉬를 표시(mark)하는 단계, 상기 값이 최상위 캐쉬로부터 캐스트 아웃(cast out)될 때 상기 최상위 캐쉬로부터 제 2 레벨 캐쉬로 예약 버스 동작(reserve bus operation)을 전송하는 단계 및 상기 예약 버스 동작을 제 2 레벨 캐쉬로 전송한 후 상기 최상위 캐쉬로부터 상기 값을 캐스트 아웃하는 단계를 포함한다. 이러한 프로시저는 바람직하게는 다중 레벨 캐쉬 구조 내의 모든 캐쉬에 대해 사용되는데, 다시 말하면 상기 값이 주어진 임의의 캐쉬로부터 캐스트 아웃될 때 예약 버스 동작이 상기 주어진 임의의 캐쉬로부터 다음번 하위-레벨 캐쉬(즉, 버스에 더 가까이 놓여 있는 인접한 캐쉬)로 전송된다. 예약 버스 동작을 전송한 후에, 상기 값은 주어진 캐쉬로부터 캐스트 아웃된다. 그 후, 상기 값과 관련되어 있는 메모리 장치의 주소에 기록하기 위해 컴퓨터 시스템 내의 다른 모든 처리 유닛에 의한 모든 시도가 모든 상위-레벨 캐쉬들로 전송된다. 상기 주소에 기록하기 위한 상기 모든 시도에 응답하여 해당 블록에 대한 예약 표시가 제거된다.
본 발명의 상기 목적 및 추가 목적, 특징, 및 장점들은 이하에서 상세하게 기술하는 설명에서 명확해질 것이다.
본 발명의 신규한 특징들은 첨부된 특허청구범위에 기재되어 있다. 그러나, 본 발명의 바람직한 사용 모드, 추가 목적 및 장점들은 물론 본 발명 자체는 이하에서 첨부되는 도면들과 함께 예시적인 실시예의 상세한 설명을 참조함으로써 가장 잘 이해될 것이다.
본 발명은 도 4 및 도 5의 시스템과 같은 멀티프로세서 시스템에서 캐쉬 예약을 취급하는 방법에 관한 것이지만, 본 발명은 반드시 종래의 것이 아닌 (즉, 새로운 하드웨어 구성요소를 포함하거나 또는 기존의 구성요소에 대한 신규한 상호 접속 구조(architecture)를 갖는) 컴퓨터 시스템들에 적용될 수 있다. 따라서, 본 발명 기술 분야의 당업자들은 본 발명이 도면에 도시된 일반화된 시스템에 제한되는 것은 아니라는 점을 이해할 수 있다.
상기 설명한 바와 같이, 종래 기술에서는 LARX 인스트럭션의 타겟이 캐쉬 레벨 중 어느 레벨에서 발견될 경우 예약(RESERVE) 버스 동작은 예약 극소 단위에 대한 시도된 모든 기록들이 캐쉬 계층 구조 내의 상위 레벨 방향으로 전달되는 것을 보장하기 위하여 계층 구조의 모든 하위 레벨들에 전달된다. 본 발명에서는, 이러한 방식(policy)이 더 높은 성능을 달성하기 위해 변경된다. 구체적으로, 예약 극소 단위에 대응하는 블록이 하나의 레벨(즉, 레벨 N)로부터 할당 해제되어야 할 경우, 다음번 하위 레벨 (N+1)이 예약 버스 동작에 의해 할당 해제를 통보받는다. 블록이 제거되기 전에 다음번 하위 레벨 내의 예약 유닛이 동작하는 것을 보장하기 위해, 다음번 하위 레벨은 상기 블록의 제거가 완료되기 전에 통지를 받아, 일관성 프로토콜이 기록 동작을 전송하는 것을 중지시키도록 한다. 예약 버스 동작은 그 예약 버스 동작이 상위 레벨 (N) 블록에 대한 기록을 시도하는 모든 트랜잭션을 전송하여야 한다는 점을 다음번 하위 레벨에 통지한다. 상기 기록 시도는 캐쉬 일관성을 위해 전송될 필요는 없으며, 이러한 시도는 오히려 lwarx/stwcx 인스트럭션들의 의미 규칙을 유지하는데 필요하다.
또한, 본 발명에서는 예약 버스 동작이 캐쉬 계층 구조의 전체 깊이의 하위 방향으로 전송되지 않는다. 종래 기술과는 달리, 예약 버스 동작의 수령자(recipient)는 예약 극소 단위의 제거에 의해 그 예약 버스 동작이 요구될 때까지 다음번 최하위 레벨에 상기 예약 버스 동작을 전송하지 않는다. 이러한 접근 방법은 일관성을 엄격히 요구하는 것은 아니지만, 가장 적합한 것으로 제공된다. 상기 신규한 프로토콜은 종래 기술의 프로토콜과의 결합이 가능하다. 종래 기술의 프로토콜이 계층 구조의 소정의 레벨에서 채택되는 경우, 그 해당 레벨은 앞서 기술한 바와 같이 단지 다음번 레벨을 현재 필요한 주소보다 빠른 예약 극소 단위 주소에 통보한다. 이것은 프로토콜이 적절히 동작하는 것을 방해하는 것이 아니라, 단지 예약(RESERVE) 버스 동작이 계층 레벨에 대한 일관성이 엄격히 요구되기 전에 계층 레벨의 나머지 부분의 하위 방향으로 전달되도록 해주는 것에 불과하다.
기본적으로, 예약이 상위 레벨 내에 더 이상 존재하지 않으며 따라서 캐쉬 일관성 프로토콜에 의해 보호되지 않는 블록 상에 존재하기 때문에 예약-킬링 동작(reservation-killing operations)을 상위 방향으로 전송하도록 하위 레벨 계층 구조가 명백한 통보를 받아야만 하는 경우에만 예약 동작은 캐쉬 계층 구조의 하위 레벨 방향으로 전송된다. 또한, 예약 동작의 수령자는 예약 극소 단위의 캐스트아웃, 희생(victimization), 또는 스누프 푸쉬로 인해 예약 동작이 전송되어야만 할 때까지 하위 레벨 방향으로 상기 예약 동작을 전송하지 않는다. 이들 단계들은 도 3을 참조하여 더 상세히 설명될 수 있다.
프로세서가 먼저 로드-및-예약 인스트럭션(load-and-reservation instruction)으로 판독될 값에 액세스하는 경우, 그 값은 최상위 레벨 캐쉬에 도달할 때까지 모든 캐쉬 레벨 내에 위치된다(단계 (30)). 캐쉬 내의 대응 블록은 예약된 것으로 표시된다(단계 (32)). 그 후, 프로세서는 로드-및-예약 캐쉬된 값과 관련될 수 있거나 또는 관련되지 않을 수도 있는 다른 인스트럭션들을 실행한다(단계 (34)). 상기 값이 최상위 레벨 캐쉬로부터 제거되어야 할 값이면(단계 (36)), 예약 버스 동작은 하위 방향의 다음번 레벨로 전송된다(단계 (38))(즉, 하위 레벨 캐쉬들 전부가 아니라 반드시 다음번 레벨로만 전송된다). 그렇지 않은 경우(즉, 상기 값이 최상위 레벨 캐쉬로부터 제거된 것이 아닌 경우), 프로세서는 그 값이 캐스트 아웃될 때까지 다른 인스트럭션들을 계속 실행한다. 예약 버스 동작이 다음번 레벨 캐쉬로 전송된 후에는, 블록이 상기 최상위 레벨 캐쉬로부터 할당 해제(deallocate)될 수 있다(단계 (40)). 그 후, 하위 레벨 캐쉬는 캐쉬 및 예약된 주소 상에서 스누프하기 위해 버스를 모니터한다. 블록에 대한 기록 시도가 이루어지면(단계 (42)), 그 시도는 예약을 제거할 최상위 레벨 캐쉬로 전송된다(단계 (44)).
대칭형 멀티프로세서(SMP) 시스템이 2개 이상의 캐슁 레벨을 갖는 처리 유닛을 사용하는 경우, 상기 단계들은 조건 단계 (42)에서 아니오 브랜치에 의해 표시되는 바와 같이 하위 레벨에도 또한 적용된다. 예를 들어, 상기 값이 (L1 캐쉬에서는 이미 캐스트 아웃되었지만) L2 캐쉬로부터 캐스트 아웃되기 전에는 어떠한 기록 스누프도 발생하지 않을 수 있다. 이 경우, 단계(36)에서 블록으로부터 캐스트 아웃에 대한 체크는 L2 캐쉬에도 적용된다. 예약 버스 동작(38)은 L2 캐쉬로부터 L3 캐쉬로 전송되며, 그 후 블록은 L2 캐쉬로부터 할당 해제된다(단계 (40)). 상기 주소에 대해서 발생하는 모든 기록 스누프 히트는 L3 캐쉬로부터 L1 및 L2 캐쉬 양자로 전송된다. 이러한 프로시저는 직렬로 접속된 캐쉬인 경우에는 그 캐쉬의 수에 무관하게 적용될 수 있다.
본 발명은 예약 동작에 대한 시스템 버스 트래픽을 상당히 감소시킬 수 있다. lwarx/stwcx 인스트럭션들이 매우 자주 실행되는 SMP 시스템의 경우, 본 발명은 시스템 전반에 걸쳐 더 높은 성능을 제공할 수 있다. 또한, 이러한 개선은 예약될 블록에 대한 권리를 결정하기 위한 프로토콜인 기존의 메카니즘을 이용하여 달성될 수 있다. 주어진 레벨에 있는 캐쉬가 권리를 포기하는 경우에만 LARX 예약의 전송을 필요로 한다.
비록 본 발명이 특정 실시예를 참조하여 설명되었지만, 이러한 설명이 제한적인 의미를 갖는 것으로 해석되도록 의도한 것은 아니다. 본 발명 기술 분야의 당업자들은 본 발명의 상세한 설명을 참조하여 개시된 실시예에 대한 다양한 변경은 물론 본 발명의 다른 대안들을 생각해 낼 수 있다는 것은 명백하다. 따라서, 첨부된 본 발명의 정신 및 범위를 벗어남이 없이 상기 이러한 변경들이 이루어질 수 있다는 점이 이해될 것이다.

Claims (20)

  1. 적어도 제 1 및 제 2 캐쉬를 갖는 멀티프로세서 컴퓨터 시스템(multi-processor computer system)의 처리 유닛(processing unit)에서 사용하기 위해 메모리 장치로부터의 값에 액세스하는 방법에 있어서,
    a) 상기 메모리 장치로부터 제 1 및 제 2 캐쉬들 양자 내로 상기 값을 로딩 하는 단계
    b) 상기 값을 수신하는 제 1 캐쉬를 예약(reserved) 상태로 표시하는 단계
    c) 상기 값이 제 1 캐쉬로부터 캐스트 아웃(cast out)될 때, 제 1 캐쉬로부터 제 2 캐쉬로 예약 버스 동작(reserve bus operation)을 전송하는 단계 및
    d) 제 2 캐쉬로 예약 버스 동작을 전송한 후 제 1 캐쉬로부터 상기 값을 캐 스트 아웃하는 단계를 포함하는 액세스 방법.
  2. 제 1항에 있어서, 상기 값과 관련된 메모리 장치의 주소에 기록하기 위한, 상기 컴퓨터 시스템의 다른 모든 처리 유닛에 의해 이루어지는 모든 시도를 제 2 캐쉬가 제 1 캐쉬로 전송하는 단계를 추가로 포함하는 액세스 방법.
  3. 제 1항에 있어서, 상기 처리 유닛은 제 3 캐쉬를 가지며, 상기 값이 제 2 캐시로부터 캐스트 아웃될 때, 제 2 캐쉬로부터 제 3 캐쉬로 예약 버스 동작을 전송하는 단계 및 제 3 캐쉬로 예약 버스 동작을 전송한 후 제 2 캐쉬로부터 상기 값을 캐스트 아웃하는 단계를 추가로 포함하는 액세스 방법.
  4. 제 1항에 있어서, 상기 처리 유닛은 제 1 및 제 2 캐쉬 이외에도 복수의 캐쉬를 가지되, 모든 캐쉬들은 상기 처리 유닛의 프로세서와 상기 컴퓨터 시스템의 버스 사이에서 직렬로 접속되고, 상기 값이 주어진 임의의 캐쉬로부터 캐스트 아웃될 때, 그 주어진 임의의 캐쉬로부터 상기 버스에 더 가까이 있는 인접 캐쉬로 예약 버스 동작을 전송하는 단계 및 상기 인접 캐쉬로 예약 버스 동작을 전송한 후 상기 주어진 임의의 캐쉬로부터 상기 값을 캐스트 아웃하는 단계를 추가로 포함하는 액세스 방법.
  5. 제 1항에 있어서, 제 1 캐쉬는 상기 처리 유닛의 프로세서와 제 2 캐쉬에 접속되며, 제 2 캐쉬는 상기 컴퓨터 시스템의 버스에 접속되는 액세스 방법.
  6. 제 1항에 있어서, 제 1 캐쉬가 아직도 예약된 것으로 표시되어 있는 상태에서 상기 처리 유닛이 메모리 장치 내에 새로운 값을 저장하는 단계를 추가로 포함하는 액세스 방법.
  7. 제 2항에 있어서, 상기 메모리 장치의 주소에 기록하기 위한 모든 시도가 캐쉬 일관성 프로토콜(cache-coherency protocol)을 사용하여 검지되는 액세스 방법.
  8. 제 2항에 있어서, 상기 주소에 기록하기 위한 모든 시도에 응답하여 제 1 캐쉬에 대한 상기 예약 표시를 제거하는 단계를 추가로 포함하는 액세스 방법.
  9. 제 3항에 있어서, 상기 값과 관련된 메모리 장치의 주소에 기록하기 위한, 상기 컴퓨터 시스템의 다른 모든 처리 유닛에 의해 이루어지는 모든 시도를 제 3 캐쉬가 제 2 캐쉬로 전송하는 단계를 추가로 포함하는 액세스 방법.
  10. 제 9항에 있어서, 상기 주소에 기록하기 위한, 다른 모든 처리 유닛에 의해 이루어지는 모든 시도를 제 2 캐쉬가 제 1 캐쉬로 전송하는 단계를 추가로 포함하는 액세스 방법.
  11. 컴퓨터 시스템용 처리 유닛(processing unit)에 있어서,
    a) 프로세서(processor) 및
    b) 상기 프로세서에 여러 개의 값들(values)을 제공하기위한 복수의 캐쉬들― 여기서 복수의 캐쉬들은 여러 레벨(levels)로 배열되며, 상위 레벨 캐쉬로 부터 예약된 블록을 캐스트 아웃하기 전에 상기 상위 레벨로부터 다음번 하위 레벨 캐쉬로 예약 버스 동작(reserve bus operation)을 전송하도록 적 합하게 되어 있음―을 포함하는 처리 유닛.
  12. 제 11항에 있어서, 상기 캐쉬들이 상기 프로세서에 일체로 패키지된 하나 이상의 온-보드 캐쉬들(on-board caches)을 포함하는 처리 유닛.
  13. 제 11항에 있어서, 상기 예약된 블록과 관련된 메모리 장치의 주소에 기록하기 위한, 또 다른 처리 유닛에 의해 이루어지는 모든 시도를 상기 캐쉬들 각각이 모든 상위 레벨 캐쉬들로 전송하는 처리 유닛.
  14. 제 13항에 있어서, 상기 주소에 기록하기 위한 모든 시도에 응답하여 상기 캐쉬들 각각이 상기 예약된 블록을 비예약 상태(non-reserved state)로 변경하는 처리 유닛.
  15. 제 14항에 있어서, 상기 주소에 기록하기 위한 모든 시도가 캐쉬 일관성 프로토콜(cache-coherency protocol)을 사용하여 검지되는 처리 유닛.
  16. 멀티프로세서 컴퓨터 시스템(multi-processor computer)에 있어서,
    a) 메모리 장치(memory device)
    b) 상기 메모리 장치에 접속된 버스(bus) 및
    c) 각각이 상기 버스에 접속되는 복수의 처리 유닛(a plurality of processing units)―여기서 복수의 처리 유닛 중의 적어도 하나는 여러 레벨(levels)로 배열된 복수의 캐쉬들을 가지며, 상기 복수의 캐쉬들은 상위 레벨 캐쉬로 부터 예약된 블록을 캐스트 아웃하기 전에 상기 상위 레벨로부터 다음번 하위 레벨 캐쉬로 예약 버스 동작(reserve bus operation)을 전송하도록 적 합하게 되어 있음―을 포함하는 멀티프로세서 컴퓨터 시스템.
  17. 제 16항에 있어서, 상기 복수의 처리 유닛 각각이 여러 레벨(levels)로 배열된 복수의 캐쉬들을 가지며, 상기 복수의 캐쉬들은 모두 상기 상위 레벨 캐쉬로 부터 예약된 블록을 캐스트 아웃하기 전에 상기 상위 레벨로부터 다음번 하위 레벨 캐쉬로 예약 버스 동작(reserve bus operation)을 전송하도록 적합하게 되어 있는 멀티프로세서 컴퓨터 시스템.
  18. 제 16항에 있어서, 상기 예약된 블록과 관련된 메모리 장치의 주소에 기록하기 위한, 또 다른 처리 유닛에 의해 이루어지는 모든 시도를 상기 캐쉬들 각각이 모든 상위 레벨 캐쉬들로 전송하는 멀티프로세서 컴퓨터 시스템.
  19. 제 18항에 있어서, 상기 주소에 기록하기 위한 모든 시도에 응답하여 상기 캐쉬들 각각이 상기 예약된 블록을 비예약 상태(non-reserved state)로 변경하는 멀티프로세서 컴퓨터 시스템.
  20. 제 19항에 있어서, 상기 주소에 기록하기 위한 모든 시도가 캐쉬 일관성 프로토콜(cache-coherency protocol)을 사용하여 검지되는 멀티프로세서 컴퓨터 시스템.
KR1019970055774A 1997-03-13 1997-10-29 대칭형 멀티프로세서 시스템 버스를 위한 요구-기반larx-예약 프로토콜 KR100259433B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/815,647 1997-03-13
US08/815,647 US5895495A (en) 1997-03-13 1997-03-13 Demand-based larx-reserve protocol for SMP system buses

Publications (2)

Publication Number Publication Date
KR19980079441A true KR19980079441A (ko) 1998-11-25
KR100259433B1 KR100259433B1 (ko) 2000-06-15

Family

ID=25218403

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970055774A KR100259433B1 (ko) 1997-03-13 1997-10-29 대칭형 멀티프로세서 시스템 버스를 위한 요구-기반larx-예약 프로토콜

Country Status (3)

Country Link
US (1) US5895495A (ko)
JP (1) JP3431824B2 (ko)
KR (1) KR100259433B1 (ko)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6436104B2 (en) 1996-01-26 2002-08-20 Cordis Corporation Bifurcated axially flexible stent
US6078991A (en) * 1997-04-14 2000-06-20 International Business Machines Corporation Method and system for speculatively requesting system data bus for sourcing cache memory data within a multiprocessor data-processing system
US6065077A (en) * 1997-12-07 2000-05-16 Hotrail, Inc. Apparatus and method for a cache coherent shared memory multiprocessing system
US6418537B1 (en) 1997-12-07 2002-07-09 Conexant Systems, Inc. Accurate timing calibration for each of multiple high-speed clocked receivers using a single DLL
US6516442B1 (en) 1997-12-07 2003-02-04 Conexant Systems, Inc. Channel interface and protocols for cache coherency in a scalable symmetric multiprocessor system
US6633945B1 (en) 1997-12-07 2003-10-14 Conexant Systems, Inc. Fully connected cache coherent multiprocessing systems
US6292705B1 (en) 1998-09-29 2001-09-18 Conexant Systems, Inc. Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
US6128706A (en) * 1998-02-03 2000-10-03 Institute For The Development Of Emerging Architectures, L.L.C. Apparatus and method for a load bias--load with intent to semaphore
US6430657B1 (en) * 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US6425090B1 (en) 1999-06-25 2002-07-23 International Business Machines Corporation Method for just-in-time delivery of load data utilizing alternating time intervals
US6446166B1 (en) 1999-06-25 2002-09-03 International Business Machines Corporation Method for upper level cache victim selection management by a lower level cache
US6427204B1 (en) 1999-06-25 2002-07-30 International Business Machines Corporation Method for just in-time delivery of instructions in a data processing system
US6505277B1 (en) * 1999-06-25 2003-01-07 International Business Machines Corporation Method for just-in-time delivery of load data by intervening caches
US6434667B1 (en) 1999-06-25 2002-08-13 International Business Machines Corporation Layered local cache with imprecise reload mechanism
US6430683B1 (en) 1999-06-25 2002-08-06 International Business Machines Corporation Processor and method for just-in-time delivery of load data via time dependency field
US6463507B1 (en) 1999-06-25 2002-10-08 International Business Machines Corporation Layered local cache with lower level cache updating upper and lower level cache directories
US6397300B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation High performance store instruction management via imprecise local cache update mechanism
US6418513B1 (en) 1999-06-25 2002-07-09 International Business Machines Corporation Queue-less and state-less layered local data cache mechanism
US6397320B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation Method for just-in-time delivery of load data via cycle of dependency
US6393553B1 (en) 1999-06-25 2002-05-21 International Business Machines Corporation Acknowledgement mechanism for just-in-time delivery of load data
US6405285B1 (en) 1999-06-25 2002-06-11 International Business Machines Corporation Layered local cache mechanism with split register load bus and cache load bus
US6385694B1 (en) 1999-06-25 2002-05-07 International Business Machines Corporation High performance load instruction management via system bus with explicit register load and/or cache reload protocols
US6467012B1 (en) 1999-07-08 2002-10-15 International Business Machines Corporation Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors
US6442597B1 (en) * 1999-07-08 2002-08-27 International Business Machines Corporation Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory
US6469988B1 (en) 1999-07-08 2002-10-22 Conexant Systems, Inc. Low-level circuit implementation of signal flow graphs for real-time signal processing of high-speed digital signals
US6779036B1 (en) 1999-07-08 2004-08-17 International Business Machines Corporation Method and apparatus for achieving correct order among bus memory transactions in a physically distributed SMP system
US6535958B1 (en) * 1999-07-15 2003-03-18 Texas Instruments Incorporated Multilevel cache system coherence with memory selectively configured as cache or direct access memory and direct memory access
US6606686B1 (en) * 1999-07-15 2003-08-12 Texas Instruments Incorporated Unified memory system architecture including cache and directly addressable static random access memory
US6349367B1 (en) 1999-08-04 2002-02-19 International Business Machines Corporation Method and system for communication in which a castout operation is cancelled in response to snoop responses
US6353875B1 (en) 1999-08-04 2002-03-05 International Business Machines Corporation Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions
US6338124B1 (en) 1999-08-04 2002-01-08 International Business Machines Corporation Multiprocessor system bus with system controller explicitly updating snooper LRU information
US6343347B1 (en) 1999-08-04 2002-01-29 International Business Machines Corporation Multiprocessor system bus with cache state and LRU snoop responses for read/castout (RCO) address transaction
US6324617B1 (en) 1999-08-04 2001-11-27 International Business Machines Corporation Method and system for communicating tags of data access target and castout victim in a single data transfer
US6321305B1 (en) 1999-08-04 2001-11-20 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly cancelling master allocation of read data
US6343344B1 (en) 1999-08-04 2002-01-29 International Business Machines Corporation System bus directory snooping mechanism for read/castout (RCO) address transaction
US6502171B1 (en) * 1999-08-04 2002-12-31 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data
US6591348B1 (en) 1999-09-09 2003-07-08 International Business Machines Corporation Method and system for resolution of transaction collisions to achieve global coherence in a distributed symmetric multiprocessor system
US6587930B1 (en) 1999-09-23 2003-07-01 International Business Machines Corporation Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock
US6725307B1 (en) 1999-09-23 2004-04-20 International Business Machines Corporation Method and system for controlling data transfers with physical separation of data functionality from address and control functionality in a distributed multi-bus multiprocessor system
US6457085B1 (en) 1999-11-04 2002-09-24 International Business Machines Corporation Method and system for data bus latency reduction using transfer size prediction for split bus designs
US7529799B2 (en) 1999-11-08 2009-05-05 International Business Machines Corporation Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system
US6542949B1 (en) 1999-11-08 2003-04-01 International Business Machines Corporation Method and apparatus for increased performance of a parked data bus in the non-parked direction
US6516379B1 (en) 1999-11-08 2003-02-04 International Business Machines Corporation Method and apparatus for transaction pacing to reduce destructive interference between successive transactions in a distributed symmetric multiprocessor system
US6529990B1 (en) 1999-11-08 2003-03-04 International Business Machines Corporation Method and apparatus to eliminate failed snoops of transactions caused by bus timing conflicts in a distributed symmetric multiprocessor system
US6606676B1 (en) 1999-11-08 2003-08-12 International Business Machines Corporation Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system
US6535941B1 (en) 1999-11-08 2003-03-18 International Business Machines Corporation Method and apparatus for avoiding data bus grant starvation in a non-fair, prioritized arbiter for a split bus system with independent address and data bus grants
US6684279B1 (en) 1999-11-08 2004-01-27 International Business Machines Corporation Method, apparatus, and computer program product for controlling data transfer
US6523076B1 (en) 1999-11-08 2003-02-18 International Business Machines Corporation Method and apparatus for synchronizing multiple bus arbiters on separate chips to give simultaneous grants for the purpose of breaking livelocks
US6654912B1 (en) * 2000-10-04 2003-11-25 Network Appliance, Inc. Recovery of file system data in file servers mirrored file system volumes
US6748501B2 (en) * 2000-12-30 2004-06-08 International Business Machines Corporation Microprocessor reservation mechanism for a hashed address system
JP2004110367A (ja) * 2002-09-18 2004-04-08 Hitachi Ltd 記憶装置システムの制御方法、記憶制御装置、および記憶装置システム
US7263593B2 (en) * 2002-11-25 2007-08-28 Hitachi, Ltd. Virtualization controller and data transfer control method
JP2004220450A (ja) * 2003-01-16 2004-08-05 Hitachi Ltd ストレージ装置、その導入方法、及びその導入プログラム
JP4386694B2 (ja) * 2003-09-16 2009-12-16 株式会社日立製作所 記憶システム及び記憶制御装置
JP2005202893A (ja) * 2004-01-19 2005-07-28 Hitachi Ltd 記憶デバイス制御装置、ストレージシステム、プログラムを記録した記録媒体、情報処理装置、及びストレージシステムの制御方法
US7437541B2 (en) * 2004-07-08 2008-10-14 International Business Machiens Corporation Atomically updating 64 bit fields in the 32 bit AIX kernel
JP4646574B2 (ja) * 2004-08-30 2011-03-09 株式会社日立製作所 データ処理システム
US7197604B2 (en) * 2004-10-14 2007-03-27 International Business Machines Corporation Processor, data processing system and method for synchronzing access to data in shared memory
US7200717B2 (en) * 2004-10-14 2007-04-03 International Business Machines Corporation Processor, data processing system and method for synchronizing access to data in shared memory
JP2006127028A (ja) * 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
US7305522B2 (en) * 2005-02-12 2007-12-04 International Business Machines Corporation Victim cache using direct intervention
US7305523B2 (en) * 2005-02-12 2007-12-04 International Business Machines Corporation Cache memory direct intervention
WO2009122694A1 (ja) * 2008-03-31 2009-10-08 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
US8209489B2 (en) * 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8489819B2 (en) * 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
US8949540B2 (en) * 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8285939B2 (en) * 2009-04-08 2012-10-09 International Business Machines Corporation Lateral castout target selection
US8347036B2 (en) * 2009-04-09 2013-01-01 International Business Machines Corporation Empirically based dynamic control of transmission of victim cache lateral castouts
US8327073B2 (en) * 2009-04-09 2012-12-04 International Business Machines Corporation Empirically based dynamic control of acceptance of victim cache lateral castouts
US8312220B2 (en) * 2009-04-09 2012-11-13 International Business Machines Corporation Mode-based castout destination selection
US9189403B2 (en) * 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
US9411725B2 (en) * 2012-03-22 2016-08-09 Intel Corporation Application-reserved cache for direct I/O
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0348628A3 (en) * 1988-06-28 1991-01-02 International Business Machines Corporation Cache storage system
US5155832A (en) * 1989-07-05 1992-10-13 Hewlett-Packard Company Method to increase performance in a multi-level cache system by the use of forced cache misses
JPH0697449B2 (ja) * 1989-09-20 1994-11-30 株式会社日立製作所 多重化共有メモリ制御方法、多重化共有メモリシステムおよび共有メモリ拡張方法
ATE170642T1 (de) * 1990-06-15 1998-09-15 Compaq Computer Corp Mehrstufeneinschluss in mehrstufigen cache- speicherhierarchien
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
US5426754A (en) * 1992-05-26 1995-06-20 International Business Machines Corporation Cross-interrogate method and means for combined scaler and vector processing system
US5553310A (en) * 1992-10-02 1996-09-03 Compaq Computer Corporation Split transactions and pipelined arbitration of microprocessors in multiprocessing computer systems
US5262109A (en) * 1992-10-19 1993-11-16 James River Ii, Inc. Method and apparatus for forming multilaminate film
JP2500101B2 (ja) * 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
JP2541771B2 (ja) * 1993-01-29 1996-10-09 インターナショナル・ビジネス・マシーンズ・コーポレイション 原子的メモリ参照方法及びシステム
US5524233A (en) * 1993-03-31 1996-06-04 Intel Corporation Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations
US5655103A (en) * 1995-02-13 1997-08-05 International Business Machines Corporation System and method for handling stale data in a multiprocessor system
US5758119A (en) * 1995-08-23 1998-05-26 International Business Machines Corp. System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache

Also Published As

Publication number Publication date
US5895495A (en) 1999-04-20
KR100259433B1 (ko) 2000-06-15
JP3431824B2 (ja) 2003-07-28
JPH10254773A (ja) 1998-09-25

Similar Documents

Publication Publication Date Title
KR100259433B1 (ko) 대칭형 멀티프로세서 시스템 버스를 위한 요구-기반larx-예약 프로토콜
JP3888769B2 (ja) データ供給方法及びコンピュータ・システム
US6021468A (en) Cache coherency protocol with efficient write-through aliasing
US7827354B2 (en) Victim cache using direct intervention
KR100318789B1 (ko) 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법
US6571322B2 (en) Multiprocessor computer system with sectored cache line mechanism for cache intervention
US7698508B2 (en) System and method for reducing unnecessary cache operations
US8495308B2 (en) Processor, data processing system and method supporting a shared global coherency state
US5940856A (en) Cache intervention from only one of many cache lines sharing an unmodified value
US6629205B2 (en) System and method for increasing the snoop bandwidth to cache tags in a cache memory subsystem
US5946709A (en) Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing
US6353875B1 (en) Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions
US6343347B1 (en) Multiprocessor system bus with cache state and LRU snoop responses for read/castout (RCO) address transaction
US6275909B1 (en) Multiprocessor system bus with system controller explicitly updating snooper cache state information
US6212605B1 (en) Eviction override for larx-reserved addresses
US20060184743A1 (en) Cache memory direct intervention
US5940864A (en) Shared memory-access priorization method for multiprocessors using caches and snoop responses
US6098156A (en) Method and system for rapid line ownership transfer for multiprocessor updates
US6321306B1 (en) High performance multiprocessor system with modified-unsolicited cache state
JP3661764B2 (ja) 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム
US5996049A (en) Cache-coherency protocol with recently read state for data and instructions
US6178484B1 (en) DCBST with ICBI mechanism to maintain coherency of bifurcated data and instruction caches
US7464227B2 (en) Method and apparatus for supporting opportunistic sharing in coherent multiprocessors
US6279086B1 (en) Multiprocessor system bus with combined snoop responses implicitly updating snooper LRU position
KR100326632B1 (ko) 에이치_알 상태를 포함하는 캐시 일관성 프로토콜

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: 20060216

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee