KR100274771B1 - Smp 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법 - Google Patents

Smp 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법 Download PDF

Info

Publication number
KR100274771B1
KR100274771B1 KR1019980002963A KR19980002963A KR100274771B1 KR 100274771 B1 KR100274771 B1 KR 100274771B1 KR 1019980002963 A KR1019980002963 A KR 1019980002963A KR 19980002963 A KR19980002963 A KR 19980002963A KR 100274771 B1 KR100274771 B1 KR 100274771B1
Authority
KR
South Korea
Prior art keywords
cache
value
response
processing unit
caches
Prior art date
Application number
KR1019980002963A
Other languages
English (en)
Other versions
KR19980079662A (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 KR19980079662A publication Critical patent/KR19980079662A/ko
Application granted granted Critical
Publication of KR100274771B1 publication Critical patent/KR100274771B1/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
    • 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
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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
    • G06F15/163Interprocessor communication

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)
  • Multi Processors (AREA)

Abstract

멀티프로세서 컴퓨터 시스템에서 판독형 동작과 관련된 메모리 레이턴시를 개선하는 방법이 개시되어 있다. 시스템 메모리로부터 둘 이상의 캐시들로 값(데이터 또는 명령)이 로드된 후, 상기 캐시들은 상기 값의 공유, 미변경 카피들을 포함하고 있는 것으로 표시되고, 요구 프로세싱 유닛이 상기 값을 판독하기를 희망한다는 것을 나타내는 메시지를 송출하면, 상기 캐시들 중의 소정의 캐시가 상기 값을 제공(source)할 수 있다는 것을 나타내는 응답을 전송한다. 상기 응답은, 상기 캐시가 요구 프로세싱 유닛에 접속된 상호 접속으로부터 상기 메시지를 스누핑하는 것에 응답하여 전송된다. 상기 응답은 시스템 로직에 의해 검출되어 시스템 로직으로부터 요구 프로세싱 유닛으로 전송된다. 그 후 상기 캐시는 요구 프로세싱 유닛에 접속된 상호 접속에 상기 값을 제공한다. 시스템 메모리가 상기 메시지를 검출하고 통상 상기 값을 제공하게 되지만, 상기 응답은 시스템 메모리 대신에 캐시에 의해 상기 값이 제공될 것임을 메모리 장치에 통지한다. 캐시 레이턴시가 메모리 레이턴시보다 훨씬 짧을 수 있기 때문에, 이 새로운 프로토콜에 의해 판독 성능이 실질적으로 개선될 수 있다.

Description

SMP 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로, 특히, 대칭형 멀티프로세서(SMP : symmetric multi-processor) 컴퓨터 시스템에 있어서 송출 프로세서(issuing processor)가 또 다른 프로세서의 캐시에서 미변경 상태(unmodified state)로 발견될 수 있는 데이터를 판독하기를 희망할 때 개입(intervention)을 이용하여 메모리 판독형 동작의 성능을 개선하는 방법에 관한 것이다.
도 1에는 종래의 멀티프로세서 컴퓨터 시스템(10)의 기본 구성이 도시되어 있다. 컴퓨터 시스템(10)은, (디스플레이 모니터, 키보드, 그래픽 포인터(마우스), 및 영구 기억 장치(하드 디스크)와 같은) 입/출력(I/O) 장치들(14)을 포함하는 각종 주변 장치들에 접속된 수 개의 프로세싱 유닛(processing unit)들―그 중 2개의 프로세싱 유닛(12a, 12b)이 도시되어 있음―과, 프로세싱 유닛들에 의해 프로그램 명령을 수행하는 데 이용되는 (랜덤 액세스 메모리 또는 RAM과 같은) 메모리 장치(16)와, 컴퓨터가 처음 턴 온될 때마다 주변 장치들 중의 하나(대개는 영구 메모리 장치)로부터 운영 체계(operating system)를 찾아내어 로드하는 것을 주목적으로 하는 펌웨어(18)를 구비하고 있다. 프로세싱 유닛들(12a, 12b)은, 범용화된 상호 접속(generalized interconnect) 또는 버스(20), 또는 직접 메모리 액세스 채널(도시되지 않음)을 포함하는, 각종 수단에 의해 주변 장치들과 교신한다. 컴퓨터 시스템(10)은, 예를 들면, 모뎀 또는 프린터에의 접속을 위한 직병렬 포트들과 같은, 도시되지 않은 다수의 부가적인 구성 요소들을 구비할 수도 있다. 당 기술분야의 숙련자라면, 도 1의 블록도에 도시된 구성 요소들과 함께 사용될 수 있는 다른 구성 요소들이 있다는 것도 알 수 있을 것이다. 예를 들면, 비디오 디스플레이 모니터를 제어하기 위해 디스플레이 어댑터(display adapter)가 사용될 수 있으며, 메모리(16)를 액세스하기 위해 메모리 컨트롤러가 사용될 수 있다. 컴퓨터는 2개 이상의 프로세싱 유닛들을 구비할 수도 있다.
대칭형 멀티프로세서(SMP)에서는, 통상 모든 프로세싱 유닛들이 동일하다. 즉, 그것들은 모두 공통의 명령 및 프로토콜 세트 또는 서브세트를 사용하여 동작하며, 통상 동일한 아키텍처를 갖고 있다. 도 1에는 전형적인 아키텍처가 도시되어 있다. 프로세싱 유닛은, 컴퓨터를 동작시키기 위하여 프로그램 명령을 수행하는, 복수의 레지스터들 및 실행 유닛(execution unit)들을 갖는 프로세서 코어(22)를 포함한다. 전형적인 프로세싱 유닛은, 인터내셔널 비지네스 머신즈 코포레이션에 의해 시판되는 PowerPCTM프로세서를 포함한다. 프로세싱 유닛은 또한, 고속 메모리 장치들을 사용하여 구현되는, 명령 캐시(24) 및 데이터 캐시(26)와 같은 하나 이상의 캐시들을 가질 수도 있다. 캐시들은 통상, 메모리(16)로부터 값들을 로드하는 비교적 오래 걸리는 스텝을 피함으로써 처리 속도를 향상시키기 위하여, 프로세서에 의해 반복적으로 액세스될 수 있는 값들을 일시적으로 저장하는 데 사용된다. 이들 캐시들이 단일 집적 칩(28) 상에 프로세서 코어와 함께 일체로 패키지화될 경우, 이들을 "온보드"(on-board)라고 부른다. 각각의 캐시는, 프로세서 코어와 캐시 메모리 사이에서 데이터와 명령의 전송을 관리하는 캐시 컨트롤러(도시되지 않음)와 결합된다.
프로세싱 유닛은, 온보드(레벨 1) 캐시들(24, 26)을 지원하기 때문에 레벨 2(L2)라고 부르는 캐시(30)와 같은 부가적인 캐시들을 포함할 수 있다. 바꾸어 말하면, 캐시(30)는 메모리(16)와 온보드 캐시들 사이에서 매개 역할을 하며, 온보드 캐시들보다 훨씬 많은 양의 정보(명령 및 데이터)를 저장할 수 있지만, 액세스 시간은 더 오래 걸린다. 예를 들면, 캐시(30)는 256 또는 512 킬로바이트의 기억 용량을 갖는 칩일 수 있고, 프로세서는 총 64 킬로바이트의 기억 용량을 갖는 온보드 캐시를 구비한 IBM PowerPCTM604계열 프로세서일 수 있다. 캐시(30)는 버스(20)에 접속되어 있고, 메모리(16)로부터 프로세서 코어(22)로의 모든 정보의 로딩은 캐시(30)를 경유하여야 한다. 도 1은 단지 2레벨의 캐시 계층을 도시하고 있지만, 여러 레벨(L3, L4 등)의 직렬 접속된 캐시들이 있는 경우에는 멀티레벨 캐시 계층(multi-level cache hierarchy)이 제공될 수 있다.
SMP 컴퓨터에서는, 코히어런트 메모리 시스템(coherent memory system)을 제공하는 것이 중요하다. 즉, 각각의 개별 메모리 위치로의 기록들이 모든 프로세서들에 대하여 어떤 순서로 나열되도록 하는 것이 중요하다. 캐시 코히어런트 시스템에서는, 모든 프로세서들이 소정의 위치로의 기록들이 지시된 순서대로 행해지는 것을 본다. 캐시 코히어런시(cache coherency)를 달성하기 위한 다수의 프로토콜 및 기술들이 당 기술분야의 숙련자들에게 공지되어 있다. 코히어런시를 유지하기 위한 이들 메커니즘 모두의 핵심에는, 프로토콜에 의해 하나의 프로세서만이 임의의 소정 시점에 소정의 메모리 위치(캐시 블록)로의 기록을 허락하는 "허가"(permission)를 받게 된다는 요건이 있다. 이 요건의 결과, 하나의 프로세싱 소자가 메모리 위치에 기록하려고 할 때마다, 상기 위치에 기록하고자 하는 그 희망을 먼저 다른 모든 프로세싱 소자들에게 통지하고 다른 모든 프로세싱 소자들로부터 그 기록을 수행하는 허가를 받아야 한다. 시스템 내의 다른 모든 프로세서들은, 그 기록이 행해지기 전에 그 개시 프로세서로부터 그 기록을 통지 받아야 한다. 또한, 소정의 프로세싱 유닛의 L1 캐시 내에 블록이 존재하면, 그 블록은 그 프로세싱 유닛의 L2 및 L3 캐시들 내에도 존재한다. 이 특성은 포함(inclusion)으로 알려져 있고 당 기술분야의 숙련자에게 잘 알려져 있는 것이다.
프로세서들은, 시스템에서의 캐시 코히어런시를 구현하기 위하여, 공통의 범용화된 상호 접속(즉, 버스(20))을 통하여 교신한다. 프로세서들은 상호 접속을 통하여 메모리 위치들을 판독 또는 기록하고자 하는 그들의 희망을 나타내는 메시지들을 전달한다. 상호 접속 상에 어떤 동작(operation)이 올려지면, 다른 모든 프로세서들은 이 동작을 "스누프"(snoop)(모니터)하고, 그들의 캐시들의 상태가 요구된 동작이 진행되는 것을 허락할 수 있는지를 판정하고, 만일 그렇다면, 어떤 상태에서 가능한지를 판정한다. 스누핑(snooping)을 필요로 하는 수 개의 버스 트랜잭션들이 있으며, 그 버스 트랜잭션들을 승인하여 메모리 코히어런시를 유지하기 위한 뒤따르는 액션이 있다. 스누프 응답들은, 전형적으로 시스템 컨트롤 포인트 유닛(32) 내에 존재하는 시스템 로직에 의해 수집되고 분석된다. 스누핑 동작은, 특정한 버스 신호들의 어서션(assertion)에 의해 발생되는, 자격 있는 스누프 요구의 수신에 의해 트리거된다. 이 교신이 필요한 이유는, 캐시들을 갖는 시스템들에서는, 소정 메모리 블록의 가장 최근의 유효 카피가 시스템 메모리(16)로부터 시스템 내의 하나 이상의 캐시들로 옮겨졌을 수 있기 때문이다. 프로세서(예를 들면, 12a)가 그 캐시 계층 내에 존재하지 않는 메모리 위치를 액세스하려고 하는 경우에는, 그 메모리 위치의 실제 (현재) 값을 포함하고 있는 블록의 정본(correct version)이 시스템 메모리(16) 내에 있거나, 또는 또 다른 프로세싱 유닛, 예를 들면 프로세싱 유닛(12b) 내의 하나 이상의 캐시들 내에 있을 수 있다. 그 정본이 시스템 내의 하나 이상의 다른 캐시들 내에 있는 경우에는, 시스템 메모리 대신에 시스템 내의 캐시(들)로부터 그 정확한 값을 획득할 필요가 있다.
예를 들어, 프로세서(예를 들면, 12a)가 메모리 내의 어느 위치를 판독하려고 하는 경우를 생각해 보자. 프로세서는 먼저 그 자신의 L1 캐시(24 또는 26)를 폴링한다. L1 캐시 내에 그 블록이 존재하지 않으면, 요구는 L2 캐시(30)로 전송된다. L2 캐시 내에 그 블록이 존재하지 않으면, 요구는 하층 레벨 캐시들, 예를 들면, L3 캐시로 전송된다. 하층 레벨 캐시들 내에 그 블록이 존재하지 않으면, 요구는 서비스를 받게 위해 범용화된 상호 접속(20) 상에 제공된다. 일단 범용화된 상호 접속 상에 동작이 올려지면, 다른 모든 하층 레벨 캐시들은 그 동작을 스누프하고 그들의 캐시들 내에 그 블록이 존재하는지를 판정한다. 만일 소정의 프로세싱 유닛이 그 L1 캐시 내에 프로세싱 유닛에 의해 요구된 블록을 갖고 있고, 또한 그 블록 내의 값이 포함(inclusion)의 원리에 의해 변경되었다면, L2 캐시와 임의의 하층 레벨 캐시들도 그 블록의 카피들을 가질 것이다(그러나, 프로세서의 캐시 내의 카피가 변경되었기 때문에, 그들의 카피는 진부한 것일 수 있다). 따라서, 프로세싱 유닛의 최하층 레벨 캐시(예를 들면, L3)가 판독 동작을 스누프하면, 그 캐시는 요구된 블록이 상층 레벨 캐시에 존재하고 변경되었다고 판정할 것이다. 이런 경우가 발생하면, L3 캐시는 프로세싱 유닛이 그 동작을 추후 다시 "재시도"해야 함을 그 프로세싱 유닛에 통지하는 메시지를 범용화된 상호 접속 상에 올려놓는데, 이는, 메모리 위치의 실제 값이 메모리 계층 상부의 L1 캐시 내에 있으며, 개시 프로세싱 유닛의 판독 요구에 대해 서비스를 제공하는 데 사용될 수 있도록 그 값이 검색되어야 하기 때문이다.
일단 개시 프로세싱 유닛으로부터의 요구가 재시도되면, L3 캐시는 L1 캐시로부터 변경된 값을 검색하여, 본 발명에는 구체적으로 관련되어 있지 않은 구현의 정확한 세부 사항에 따라, L3 캐시, 주메모리, 또는 양자 모두에서 그 값이 입수될 수 있도록 하는 처리를 시작한다. L3 캐시는, 상위 레벨 캐시들로부터 블록을 검출하기 위하여, 블록이 검출되도록 요구하는 메시지들을 캐시간 접속(inter-cache connection)들을 통하여 상위 레벨 캐시들에 전송한다. 이들 메시지는 프로세싱 유닛 계층 위쪽으로 L1 캐시에 도달할 때까지 전파되고 블록이 계층 아래쪽으로 최하층 레벨(L3 또는 주메모리)까지 옮겨지도록 하여 개시 프로세싱 유닛으로부터의 요구에 대해 서비스를 제공할 수 있게 한다.
개시 프로세싱 유닛은 마침내 범용화된 상호 접속 상에 판독 요구를 재시도한다. 그러나, 이 시점에서는, 변경된 값이 프로세싱 유닛의 L1 캐시로부터 검출되어 있어서, 개시 프로세서로부터의 판독 요구가 만족될 것이다. 방금 기술한 시나리오를 통상 "스누프 푸시"(snoop push)라고 부른다. 판독 요구가 범용화된 상호 접속 상에서 스누프되고, 그로 인해 프로세싱 유닛이 블록을 계층의 하부까지 "푸시"하여 개시 프로세싱 유닛에 의해 요청된 판독 요구를 만족시키게 된다.
프로세서는, 블록을 판독 또는 기록하기를 희망할 경우, 캐시 코히어런시를 유지하기 위하여 시스템 내의 다른 프로세싱 유닛과 그 희망을 교신해야 한다. 이를 달성하기 위하여, 캐시 코히어런시 프로토콜은 블록의 현재 "상태"를 나타내는 상태 지시자(status indicator)를 캐시 계층의 각 레벨 내의 각 블록과 결합시킨다. 이 상태 정보는, 범용화된 상호 접속과 캐시간 접속들 상의 메시지 트래픽(message traffic)을 감소시키는 코히어런시 프로토콜에서의 어떤 최적화를 가능케 하는 데 사용된다. 이 메커니즘의 일례로서, 프로세싱 유닛이 판독을 실행할 경우, 프로세싱 유닛은 그 판독이 추후 재시도되어야 하는지 여부를 나타내는 메시지를 수신한다. 판독 동작이 재시도되지 않는 경우에는, 그 메시지에는 통상 프로세싱 유닛으로 하여금 다른 프로세싱 유닛도 블록의 여전히 유효한 카피(still-active copy of the block)를 갖고 있는지를 판정할 수 있게 하는 정보도 포함된다(이는 다른 최하층 레벨 캐시들로 하여금 그들이 재시도하지 않는 어떠한 판독에 대해서든 "공유"(shared) 또는 "비공유"(not shared) 지시를 제공하게 함으로써 달성된다). 따라서, 프로세싱 유닛이 시스템 내의 다른 어떤 프로세서가 블록의 카피를 갖고 있는지 여부를 판정할 수 있다. 다른 어떤 프로세싱 유닛도 블록의 유효한 카피를 갖고 있지 않은 경우에는, 판독 프로세싱 유닛은 블록의 상태를 "배타"(exclusive)로 표시한다. 블록이 배타로 표시되면, 다른 어떤 프로세싱 유닛도 블록의 카피를 갖고 있지 않기 때문에, 프로세싱 유닛으로 하여금 추후 시스템 내의 다른 프로세싱 유닛들과 먼저 교신하지 않고서 블록을 기록할 수 있게 하는 것이 허용된다. 따라서, 프로세서가 먼저 그 의도를 상호 접속 상에 통신하지 않고서 어느 위치를 판독 또는 기록하는 것이 가능한데, 다만 코히어런시 프로토콜에 의해 다른 어떤 프로세서도 그 블록에 관심을 갖고 있지 않다는 것이 보증된 경우에 한해서만 가능하다.
전술한 캐시 코히어런시 기술은 "MESI"라고 부르는 도 2에 도시되어 있는 특정한 프로토콜에 의해 구현된다. 이 프로토콜에서는, 캐시 블록이 4개의 상태들 중 하나 즉, "M"(Modified; 변경), "E"(Exclusive; 배타), "S"(Shared; 공유), 또는 "I"(Invalid; 무효) 상태에 있을 수 있다. MESI 프로토콜 하에서는, 각 캐시 엔트리(예를 들면, 32 바이트 섹터)는 4개의 가능한 상태들 중에서 엔트리의 상태를 나타내는 2개의 부가적인 비트들을 갖는다. 엔트리의 초기 상태와 요구 프로세서에 의해 시도되는 액세스의 유형에 따라, 상태가 변경될 수 있고, 요구 프로세서의 캐시 내의 엔트리에 대하여 특정 상태가 설정된다. 예를 들어, 섹터가 변경(Modified) 상태에 있을 경우, 어드레싱된 섹터는 그 변경 섹터를 갖는 캐시 내에서만 유효하고, 변경된 값은 도로 시스템 메모리에는 기록되지 않았다. 섹터가 배타(Exclusive) 상태인 경우에는, 그 섹터는 주목되는 섹터에만 존재하며, 시스템 메모리와 일치한다. 섹터가 공유(Shared) 상태인 경우에는, 그 섹터는 해당 캐시와 하나 이상의 다른 캐시에서 유효하며, 모든 공유 섹터들은 시스템 메모리와 일치한다. 마지막으로, 섹터가 무효(Invalid) 상태인 경우, 어드레싱된 섹터가 캐시 내에 존재하지 않음을 나타낸다. 도 2에서 알 수 있는 바와 같이, 섹터가 변경, 공유, 또는 무효 상태들 중 어느 하나의 상태에 있을 경우에는, 섹터는 특별한 버스 트랜잭션에 따라 그 상태들 사이에서 천이할 수 있다. 배타 상태의 섹터는 다른 어떤 상태로도 천이할 수 있지만, 섹터가 배타 상태가 될 수 있으려면 먼저 무효 상태이어야만 한다.
전술한 캐시 코히어런시 프로토콜을 사용하면 캐시 블록들을 액세스하는 것이 더욱 개선될 수 있다. "개입"이라고 부르는 이 개선에 의해, 변경 메모리 블록을 관리하고 있는 캐시가 해당 블록 내의 데이터 또는 명령을 (판독형 동작의 경우) 그 값을 요구하는 또 다른 캐시에 직접 제공할 수 있게 된다. 바꾸어 말하면, 데이터 또는 명령을 시스템 메모리에 기록한 다음, 요구 프로세서로 하여금 메모리로부터 그것을 도로 다시 판독하게 하는 필요성이 배제된다. 개입은 그 상태가 변경인 블록 내에 그 값을 갖는 캐시에 의해서만 수행될 수 있다. 이 상태에서는, 값의 유효한 카피를 갖는 캐시 블록이 하나밖에 없으며, 따라서 먼저 시스템 메모리에 그 값을 기록할 필요 없이 버스(20)를 통하여 값을 제공(source)하는 것은 간단한 일이다. 따라서 개입 절차는 (실제로는 3회의 버스 동작 및 2회의 메모리 동작을 수반하는) 시스템 메모리에 기록하고 시스템 메모리로부터 판독하는 더 오래 걸리는 처리를 피함으로써 처리의 속도를 향상시킨다. 이 절차로 인해 레이턴시(latency)가 더욱 개선될 뿐만 아니라, 사용 가능한 버스 대역폭이 증가된다.
종래의 프로토콜들은, 데이터 또는 명령이 미변경(즉, 공유 또는 배타) 상태로 유지되는 경우에는, 개입을 고려하지 않는다. 한 가지 방법은, 공유 캐시 블록을 변경 상태에 있는 것으로 간주하는 것으로, 그렇게 하면, 그 값을 포함하고 있는 캐시에 의해 그 값이 제공될 수 있지만, 이때는 그 값이 시스템 메모리에도 기록될 것이며, 이는 불필요한 일로서 추가 지연이 생기게 할 수 있다. 따라서, 미변경 데이터 또는 명령의 효과적인 개입을 고려한 캐시 코히어런시 유지 방법을 고안하는 것이 바람직할 것이다. 만일 미변경 상태의 특정한 유형(즉, 공유 또는 배타 또는 다른 임의의 미변경 상태)에 관계없이 값들의 개입을 단순화하는 방식으로 그 방법을 구현할 수 있다면 더욱 유리할 것이다.
따라서, 본 발명의 하나의 목적은, 멀티프로세서 컴퓨터 시스템에서 판독형 동작을 수행하는 개선된 방법을 제공하는 것이다.
본 발명의 또 하나의 목적은, 목표 값이 또 다른 프로세서의 캐시에서 미변경 상태로 발견될 수 있는 경우 개선된 개입 응답을 고려하는, 그러한 방법을 제공하는 것이다.
본 발명의 또 다른 목적은, 캐시 블록들 내에 미변경 상태로 유지된 값들에 대해 다수의 상태들을 정의하는 캐시 코히어런시 프로토콜에 의해 효과적으로 구현될 수 있는, 그러한 방법을 제공하는 것이다.
전술한 목적들은, 멀티프로세서 컴퓨터 시스템에서 요구 프로세싱 유닛에 의해 송출된 판독형 동작과 관련된 메모리 레이턴시(memory latency)를 개선하는 방법에 의해 달성되는데, 상기 방법은 일반적으로, 시스템 메모리로부터의 값을 적어도 제1 및 제2 캐시들로 로드하는 단계, 상기 캐시들을 상기 값의 공유, 미변경 카피들을 포함하고 있는 것으로 표시하는 단계, 요구 프로세싱 유닛으로부터 상기 요구 프로세싱 유닛이 상기 값을 판독하기를 희망한다는 것을 나타내는 메시지를 송출하는 단계 및 상기 캐시들 중 소정의 캐시로부터 상기 소정의 캐시가 상기 값을 제공(source)할 수 있다는 것을 나타내는 응답을 전송하는 단계를 포함한다. 상기 응답은 상기 캐시가 상기 요구 프로세싱 유닛에 접속된 버스로부터 상기 메시지를 스누핑하는 것에 응답하여 전송된다. 상기 응답은 시스템 로직에 의해 검출되어 상기 시스템 로직으로부터 상기 요구 프로세싱 유닛으로 전송된다. 그 후, 상기 캐시는 상기 요구 프로세싱 유닛에 접속된 버스에 상기 값을 제공한다. 상기 메시지에는 요구 식별자(request identifier)가 첨부될 수 있고, 상기 캐시는 상기 요구 식별자가 또한 첨부된 응답으로서 상기 값을 제공한다. 시스템 메모리가 상기 메시지를 검출하고 통상 상기 값을 제공하게 되지만, 상기 응답은 시스템 메모리 대신 캐시에 의해 상기 값이 제공될 것임을 메모리 장치에 통지한다. 상기 소정의 캐시는 여러 방식으로, 예를 들면, 임의로 상기 제1 및 제2 캐시들 중에서 선택될 수 있다. 캐시 레이턴시가 메모리 레이턴시보다 훨씬 짧을 수 있기 때문에, 이 새로운 프로토콜에 의해 판독 성능이 실질적으로 개선될 수 있다.
상기한 것들은 물론 부가적인 본 발명의 목적, 특징 및 이점들을 이하 상세히 기술된 설명에서 명백히 알 수 있을 것이다.
도 1은 종래의 멀티프로세서 컴퓨터 시스템의 블록도.
도 2는 종래의 캐시 코히어런시 프로토콜(MESI)을 도시하는 상태도.
도 3은 본 발명을 수행하는 데 사용될 수 있는 새로운 캐시 코히어런시 프로토콜을 도시하는 상태도.
* 도면의 주요부분에 대한 부호의 설명
10 : 멀티프로세서 컴퓨터 시스템
12a, 12b : 프로세싱 유닛/프로세서
14 : 입/출력 장치
16 : 메모리 장치
18 : 펌웨어
20 : 버스
22 : 프로세서 코어
24 : 명령 캐시
26 : 데이터 캐시
28 : 단일 집적 칩
30 : 레벨 2(L2) 캐시
32 : 시스템 컨트롤 포인트 유닛
발명의 특징으로 여겨지는 새로운 특징들은 첨부된 특허청구범위에 제시되어 있다. 그러나, 발명 자체는 물론 그 바람직한 이용 양태, 부가적인 목적들, 및 이점들에 대해서는 이하 예시적인 실시예들의 상세한 설명을 첨부 도면과 함께 참조함으로써 가장 잘 이해할 수 있을 것이다.
본 발명은 도 1의 시스템과 같은 멀티프로세서 시스템에서 판독형 명령을 실행하는 방법에 관한 것이지만, 본 발명은 반드시 종래의 컴퓨터 시스템들에만 적용될 수 있는 것은 아니다. 즉, 본 발명은 도 1에 도시되지 않은 새로운 하드웨어 구성 요소들을 포함하거나, 또는 기존의 구성 요소들의 새로운 상호 접속 아키텍처를 가질 수 있다. 따라서, 당 기술분야의 숙련자라면, 본 발명이 도면에 도시된 범용화된 시스템에만 국한되지 않는다는 것을 알 것이다.
본 발명에서는, 멀티프로세서 컴퓨터 시스템 내의 다른 프로세서들과 관련된 모든 캐시들의 스누퍼(snooper)들로부터 판독 동작을 요구하는 프로세서로 코히어런시 응답들을 전달하기 위한 프로토콜이 확립된다. 그 응답들은 표 1에 따라 공식화되어 있다.
어드레스 응답 우선 순위 정의
0 - 예약
1 3 (1) 공유 개입
10 6 원격 상태
11 4 재실행
100 1 (2) 재시도
101 2 (3) 변경 개입
110 5 공유
111 7 Null 또는 Clean
신호들은 3비트 스누프 응답의 형태를 취하며, 표 1에 그 값(어드레스 응답)과 정의가 제시되어 있다. 이들 신호는 어드레스 보유 후의 스누프 결과를 나타내도록 부호화된다. 표 1은 재시도(retry) 응답은 물론 공유(shared) 라인, 변경(modified) 라인, 및 클린(clean)(무효) 라인에 대해 종래에 사용된 것들과 유사한 응답들을 보여준다. 표 1은 또한 "공유 개입"(shared intervention), "원격 상태"(remote status), "재실행"(rerun)의 3개의 새로운 응답들도 보여준다. 판독 동작용으로만 사용되는 원격 상태 응답은, 판독이 성공적일 것이며, 추후 공유(Shared) 또는 배타(Exclusive)의 코히어런시 응답이 또 다른 신호를 사용한 데이터와 함께 환송될 것임을 나타내는 데 사용된다. 재실행 응답은, 코히어런시 응답이 즉시 결정될 수 없고 요구가 계층 하부에서 전송되어야 하는 경우에 사용된다. 재실행 응답은, 그 메시지가 재송출(reissue)되어야 하고 앞서 전송된 메시지와 일치될 수 있도록 동일한 식별자를 가져야 한다는 점에서, 재시도와는 다르다.
공유 개입 응답은, 캐시가 아직 변경되지 않은 데이터 또는 명령의 카피를 갖고 있을 경우, 그 캐시가 그 값을 제공할 수 있게 해주며, 따라서 종래의 변경 개입 응답과 구별된다. 따라서 공유 개입 응답은, 공유 상태와 배타 상태는 물론 아래 소개되는 새로운 상태(최근 판독(Recently read)용의 "R" 상태)를 포함하여 미변경 값을 나타내는 어떠한 상태와도 사용될 수 있다. 이 응답은 요구 프로세서에게 그것의 요구 식별자가 첨부된 버스(범용화된 상호 접속) 상의 판독 응답 데이터 또는 명령, 및 그것이 메모리로부터가 아니라 캐시로부터의 값이라는 신호를 찾도록 지시한다. 버스라는 용어는 일반적인 의미로 사용되며, 요구들과 응답 메시지들을 중계하기 위한 스누프 버스(snoop bus) 및 교차점(crosspoint)에 접속된 하나 이상의 다른 값 버스들과 같은 수 개의 "버스들"이 제공되어 있을 수 있다.
응답에는, 사이클마다 데이터 버스를 추적하는 별도의 데이터 태그 버스 상의 8비트 값이 첨부된다. 데이터 태그 버스 상의 값은 데이터 버스 상의 데이터가 어드레스 버스 상에 전송된 동일한 값을 갖는 메시지에 속한다는 것을 나타낸다. 그리고, 이 데이터의 출처가 메모리가 아니라 캐시임을 나타내도록 개입 중에 인에이블되는 부가적인 신호인 "메모리 데이터가 아니라 캐시 데이터"(cache data not memory data)(DCache)가 있다. 메모리 또는 캐시는 이론적으로는 요구자(requester)가 개입 응답을 볼 수 있기 전에 데이터를 전송할 수 있으며, 따라서 DCache가 인에이블되면 최후의 데이타가 전송 중임을 나타내고, 디스에이블되면 개입이 발생하고 있는지를 알기 위해 응답을 기다려야 하고, 만일 개입이 발생하고 있으면 그 데이터를 버리고 DCache (및 동일 매칭 데이터 태그)가 표시된 데이터를 기다린다. 또한, 이 새로운 응답은 메모리 시스템에게 또 다른 캐시의 개입에 의해 판독 요구가 충족될 수 있기 때문에 그 판독 요구를 버리도록 지시한다. 캐시 레이턴시가 메모리 레이턴시보다 훨씬 짧기 때문에, 이 새로운 프로토콜에 의해 판독 성능이 실질적으로 개선될 수 있다.
도 1에 도시된 바와 같이 시스템 로직이 응답들 중 어느 응답이 요구 프로세서에 대한 단일 응답을 공식화하는 데 있어서 우선권을 얻어야 하는지를 판정할 수 있도록 어떤 값이 각 응답과 관련될 수 있다. 예를 들면, 하나 이상의 캐시들이 공유 개입 응답(우선 순위 3)에 의해 응답하고, 하나 이상의 캐시들이 재시도 응답(우선 순위 1)에 의해 응답하는 경우에는, 재시도 응답이 우선권을 얻을 것이고 시스템 로직은 요구 프로세서에 재시도 응답을 송출할 것이다. 이 시스템 로직은 컨트롤 포인트 유닛과 같은 여러 구성 요소들 내에 존재하거나, 심지어는 메모리 컨트롤러 내에도 존재할 수 있다. 표 1에서 우선 순위에 대해 도시된 주요 값들은 재시도 응답에 최고의 우선 순위를 제공하여, 종래 기술과 유사하다. 그러나, 공유 개입 프로토콜의 사용을 증진시키기 위하여 대안적인 우선 순위 체계가 제공될 수 있다. 표 1에서 괄호 안의 우선 순위 번호에 의해 표시된 이 대안에서는, 공유 개입 응답이 최고의 우선 순위를 가지고, 그 다음은 재시도 응답이고, 그 다음은 변경 개입 응답이며, 그 밖의 모든 우선 순위들은 첫 번째 체계에서와 동일하다. 이 대안적인 체계에서는, 공유 개입 응답이 항상 다른 응답들에 우선할 것이며, 이는 여러 가지 이유로 허용될 수 있다. 우선 첫째로, 캐시 라인이 공유 상태에서 값(데이터 또는 명령)을 보유하고 있는 경우에는, 다른 어떤 캐시들도 변경 상태에서 동일한 어드레스에 대응하는 값을 보유할 수 없으며, 따라서 다른 어떤 캐시들도 변경 개입 응답에 의해 응답할 수 없을 것임이 명백하다. 또한, 다른 어떤 캐시가 재시도를 송출하는 경우에는, 그 재시도에 기초한 해당 캐시로부터의 추후의 어떠한 응답도 기껏해야 공유될 수 있을 뿐이며, 이 또한 우선 공유 개입 응답을 송출하는 것이 허용될 수 있음을 의미한다.
본 발명에서는, 어느 캐시가 미변경 값의 "소유자"이며 따라서 그것을 제공할 자격이 있는지를 확인하기 위해 수 개의 서로 다른 메커니즘들이 채용될 수 있다. 컴퓨터 시스템이 도 2에 도시된 종래의 MESI 프로토콜을 사용하고 캐시 라인이 배타 상태에서 값을 보유하고 있는 경우에는, 그 캐시는 그 값의 유효 카피를 포함하는 유일한 캐시이며, 따라서 그 캐시가 명백히 소유자이며 공유 개입 응답을 송출할 수 있다. 그러나, 캐시 라인이 공유 상태에서 값을 보유하고 있는 경우에는, 그 값은 또한 동일한 상태에서 하나 이상의 다른 캐시 내에 보유되며, 따라서 어느 캐시가 그 데이터를 제공해야 하는지가 바로 명백하지는 않다. 그런 경우에는, 어느 캐시가 사용되어야 하는지를 판정하기 위해 수 개의 대안들이 이용될 수 있다. 예를 들면, 다수의 캐시들이 공유 개입에 의해 응답할 수 있으며, 이때 시스템 로직(예를 들면, 시스템 컨트롤 포인트)은 어느 캐시가 그 값을 제공할 것인지를 선택할 수 있다. 이 경우, 시스템은 잠정 소유자들 중의 하나를 제외한 모두에게 재시도 응답을 환송하고, 선택된 소유자에게만 공유 개입 응답을 환송할 수 있다. 소유자는 임의로 선택되거나, 고정 또는 회전 우선 순위 체계(fixed or rotating priority scheme)에 기초하여 선택될 수 있다.
공유 값을 포함하고 있는 복수의 캐시들 중에서 소유자를 판정하는 또 하나의 방법은 어느 캐시가 가장 최근에 캐시 라인을 판독하였는지를 나타내는 메커니즘을 제공하는 것이다. 이때 해당 캐시는, 또 다른 캐시가 이 라인을 판독하거나 그것이 버려질 때까지 자동적으로 이 라인의 소유자로 간주된다. 이 방법은 도 3의 상태도에 도시된 새로운 캐시 코히어런시 프로토콜에 의해 구현될 수 있다. 이 프로토콜은, 도 2에서와 동일한 4개의 상태들(변경, 배타, 공유, 무효)을 포함하고 있다는 점에서, 도 2의 종래의 MESI 프로토콜과 유사하지만, 가장 최근에 조회된 블록의 표시를 제공하기 위한 새로운 "R" 상태(Recent)도 포함하고 있는데, 이 새로운 상태가 없다면 가장 최근에 조회된 블록은 공유 표시를 가질 것이다. 바꾸어 말하면, 둘 이상의 캐시들이 하나의 명령 또는 데이터 값의 유효 카피들을 보유하고 있는 경우, 그들 모두는, 그 명령 또는 데이터 값을 가장 최근에 액세스한 캐시 외에는, 공유 상태에 있을 것이며, 가장 최근에 액세스한 캐시는 최근(Recent) 상태에 있을 것이다. 이제는 총 5개의 가능한 상태들이 있기 때문에, 각 캐시 엔트리는 해당 엔트리가 어느 상태를 지니고 있는지를 식별하기 위해 (종래 기술에서와 같이 2비트 필드 대신에) 3비트 필드를 필요로 한다.
이 새로운 프로토콜을 여기서는 "R-MESI"라고 부른다. 종래의 프로토콜에서와 같이, 4개의 M-E-S-I 상태들은 엔트리의 초기 상태와 요구 프로세서에 의해 시도되는 액세스의 유형에 기초하여 변할 수 있다. 이들 4개의 상태가 변하는 방식은, 하기의 예외들을 제외하면, 일반적으로 종래의 MESI 프로토콜과 동일하다. 표 2는 "미스"(miss)가 발생하는 판독형 동작에서의 마스터 캐시 상태 천이(master cache state transition)들을 보여준다.
버스 동작 마스터 상태 코히어런시 응답
1 판독 I → R ShrI, Shr, 또는 Mod
2 RWITM I → E ShrI, Shr, 또는 Null
3 판독 I → E Null
4 RWITM I → M Mod
코히어런시 응답이 변경(Mod), 공유(Shr), 또는 공유 개입(ShrI)이면 "판독 미스"(Read miss) 버스 동작 시에 최근(Recent) 상태가 개시되고(표 2의 첫 번째 줄), 그 응답이 "판독 미스" 동작 시에 변경(Modified)이면 변경 캐시가 명령 또는 데이터를 메모리에도 전송할 것이며, 따라서 그것은 더 이상 변경이 아니다. "판독 미스" 동작 시에 코히어런시 응답이 없다면(Null)(표 2의 세 번째 줄), 종래의 MESI 프로토콜에서와 같이 배타(Exclusive) 상태가 개시된다. "RWITM 미스" 동작 시(RWITM은 Read With Intent To Modify의 약어임)에는, 코히어런시 응답이 Null, Shr, 또는 ShrI이면 배타 상태가 개시되고(표 2의 두 번째 줄), 코히어런시 응답이 Mod이면 변경 상태가 개시된다(표 2의 네 번째 줄). RWITM의 경우는 아직 실행 준비중인 데이터 또는 명령에만 적용되는데, 이는 일단 실행 준비된 명령은 변경되지 않기 때문이다.
표 3은 캐시가 판독형 동작(판독 적중)(read hit)을 위하여 스누퍼로서 동작할 때 버스 트랜잭션이 캐시에 어떻게 영향을 미치는지에 대한 일례를 보여준다.
버스 동작 스누퍼 상태 코히어런시 응답
1 버스트-판독 R → S ShrI
2 버스트-판독 E → S ShrI
3 버스트-판독 M → S Mod
4 RWITM E 또는 R → I ShrI
5 RWITM M → I Mod
배타(Exclusive) 또는 최근(Recent) 개시 상태에서는(표 3의 첫 번째, 두 번째, 네 번째 줄), 캐시는 공유 개입 코히어런시 응답을 전송할 것이며, 이는 시스템 메모리가 연루됨이 없이 캐시가 개입을 통하여 직접 그것의 명령 또는 데이터의 카피를 요구 프로세서에 제공할 것임을 의미한다. 그렇게 명령이 제공될 때마다, 다음 상태는 "판독 적중" 동작에 대해서는 공유가 되고(표 3의 첫 번째와 두 번째 줄) "RWITM 적중" 동작에 대해서는 무효가 된다(표 3의 네 번째 줄). 프로그램 명령은 일반적으로 변경되지 않기 때문에 명령의 경우에는 적용되지 않는, 개시 상태가 변경인 경우들에서는, 코히어런시 응답이 변경일 것이며, 개입이 여전히 행해진다. 버스 동작이 "RWITM"이었으면, 값은 캐시에서 캐시로만 전송되지만, 버스 동작이 판독이었으면, 값은 캐시와 메모리 양자 모두에 전송된다.
상술한 바와 같이, 표 2와 표 3에 제시되지 않은 상태와 동작들에 대해서는, 천이와 코히어런시 응답들이 종래의 MESI 프로토콜에 따라 수행되는데, 다만 캐시 엔트리는 기록 동작에 처하는 "R" 상태를 가질 수 있다는 한 가지 조건이 수반되며, 해당 엔트리는 공유 엔트리가 기록 동작에 처할 때 일어나는 것과 유사한 방식으로 변경 상태로의 천이를 겪게 될 것이다. R-MESI 프로토콜에 관해서는 다음의 점들이 추가로 주목될 수 있다. 즉, 엔트리는 무효에서 공유로 결코 천이할 수 없다(대신에 최근으로 진행할 것이다)는 점, 엔트리는 배타에서 최근으로 결코 천이할 수 없다(대신에 공유로 진행할 것이다)는 점, (공유 엔트리가 배타로 천이할 수 없는 것과 마찬가지로) 엔트리는 최근에서 배타로 결코 천이할 수 없다는 점, 그리고 엔트리는 변경에서 최근으로 결코 천이할 수 없다(그것은 공유로 천이하고, 요구 프로세서의 캐시 내의 엔트리는 최근으로 천이할 것이다)는 점이다.
이 새로운 R-MESI 프로토콜에 의해, 블록의 소유권은 명령 또는 데이터를 판독하는 마지막 캐시로 이전되며, 이는 가장 최근에 사용된 상태에 머무르는 부가된 이점을 갖고, 그에 따라 최저 사용 빈도(LRU: least recently used) 캐시 교체 메커니즘이 채용되면 할당 해제(deallocation)의 가능성이 줄어든다. "R" 캐시 상태는 저장된 I/O 상태 위치를 가장 최근에 판독한 프로세서/캐시를 중단시키는 지능 입/출력(I/O) 컨트롤러와 같은 다른 응용에도 유리하게 사용될 수 있는데, 그 프로세서/캐시가 I/O 장치 드라이버 코드를 저장하였을 가능성이 가장 크며, 따라서 그 코드를 캐시 내에 페치할 필요가 있는 또 다른 프로세서에서보다 고속으로 그 코드를 실행할 수 있기 때문이다.
공유 명령 및 데이터(즉, 하나 이상의 캐시에 유효하게 존재하는 명령 또는 데이터)에 개입을 제공함으로써, 메모리 레이턴시가 상당히 개선된다. R-MESI 프로토콜의 한 평가에서는, 산업 표준 벤치마크에 따라 성능이 종래의 MESI 프로토콜과 비교하여 5300 TPMc에서 7500 TPMc(transactions per minute)(분당 트랜잭션 수)로 향상되었다. 일반적으로, 본 발명은 메모리 컨트롤러를 완전히 자유롭게 하며, 메모리 대역폭에 대한 수요가 줄어든다.
이상과 같이, 본 발명에 따르면, 멀티프로세서 컴퓨터 시스템에서 판독형 동작을 수행하는 개선된 방법으로서, 목표 값이 또 다른 프로세서의 캐시에서 미변경 상태로 발견될 수 있는 경우 개선된 개입 응답을 고려하고, 캐시 블록들 내에 미변경 상태로 유지된 값들에 대해 다수의 상태들을 정의하는 캐시 코히어런시 프로토콜에 의해 효과적으로 구현될 수 있는 방법이 제공된다.
이상, 특정한 실시예들을 참조하여 본 발명을 설명하였지만, 이 설명은 한정적인 의미로 해석되도록 의도된 것이 아니다. 당 기술분야의 숙련자라면 본 발명의 설명을 참조하고서 본 발명의 대체 실시예는 물론 개시된 실시예의 각종 변형들을 명백히 알 수 있을 것이다. 따라서, 첨부된 특허청구범위에 규정된 본 발명의 사상과 범위를 벗어나지 않고서 그러한 변형이 이루어질 수 있다고 생각된다.

Claims (18)

  1. 관련 캐시를 각각 구비한 복수의 프로세싱 유닛들을 포함하는 멀티프로세서 컴퓨터 시스템에서 요구 프로세싱 유닛(requesting processing unit)에 의해 송출된 판독형 동작(read-type operation)과 관련된 메모리 레이턴시(memory latency)를 개선하는 방법에 있어서, 메모리 장치의 어드레스로부터의 값을 적어도 제1 및 제2 캐시들로 로드하는 단계와, 상기 제1 및 제2 캐시들을 상기 값의 공유, 미변경 카피들(shared, unmodified copies)을 포함하고 있는 것으로 표시(mark)하는 단계와, 요구 프로세싱 유닛으로부터 상기 요구 프로세싱 유닛이 상기 메모리 장치의 상기 어드레스로부터 상기 값을 판독하기를 희망한다는 것을 나타내는 메시지를 송출하는 단계와, 상기 제1 및 제2 캐시들 중의 소정의 캐시로부터 상기 소정의 캐시가 상기 값을 제공(source)할 수 있다는 것을 나타내는 응답을 전송하는 단계를 포함하는 메모리 레이턴시 개선 방법.
  2. 제 1항에 있어서, 상기 응답은 시스템 로직에 의해 검출되며, 상기 시스템 로직으로부터 상기 요구 프로세싱 유닛으로 상기 응답을 전송하는 단계를 더 포함하는 메모리 레이턴시 개선 방법.
  3. 제 1항에 있어서, 상기 소정의 캐시가 상기 요구 프로세싱 유닛에 접속된 상호 접속(interconnect)에 상기 값을 제공하는 단계를 더 포함하는 메모리 레이턴시 개선 방법.
  4. 제 1항에 있어서, 상기 소정의 캐시는 상기 제1 및 제2 캐시들 중에서 임의로 선택되는 메모리 레이턴시 개선 방법.
  5. 제 1항에 있어서, 상기 응답은, 상기 소정의 캐시가 상기 요구 프로세싱 유닛에 접속된 상호 접속으로부터 상기 메시지를 스누핑(snooping)하는 부가적인 단계에 응답하여 전송되는 메모리 레이턴시 개선 방법.
  6. 제 1항에 있어서, 상기 메시지에 요구 식별자(request identifier)를 첨부하는 단계를 더 포함하는 메모리 레이턴시 개선 방법.
  7. 제 1항에 있어서, 상기 메모리 장치는 상기 메시지를 검출하고, 상기 응답은 상기 소정의 캐시에 의해 상기 값이 제공될 것임을 상기 메모리 장치에 통지하는 메모리 레이턴시 개선 방법.
  8. 제 1항에 있어서, 상기 소정의 캐시 외에 하나 이상의 다른 캐시가 또 다른 응답을 전송하고, 제1 우선 순위 값이 상기 소정의 캐시로부터의 상기 응답과 관련되고, 상기 제1 우선 순위 값보다 낮은 우선 순위를 나타내는 제2 우선 순위 값이 상기 또 다른 응답과 관련되는 메모리 레이턴시 개선 방법.
  9. 제 6항에 있어서, 상기 요구 프로세싱 유닛에 접속된 상호 접속에 대한 응답(reply)으로서 상기 소정의 캐시가 상기 값을 제공하는 단계를 더 포함하며, 상기 응답에는 상기 요구 식별자가 첨부되는 메모리 레이턴시 개선 방법.
  10. 컴퓨터 시스템에 있어서, 메모리 장치와, 상기 메모리 장치에 접속된 상호 접속과, 상기 상호 접속에 접속된 복수의 프로세싱 유닛들―각각의 프로세싱 유닛은 상기 메모리 장치로부터의 값들을 저장하기 위한 캐시를 구비하고, 상기 캐시들 중의 소정의 캐시는, 상기 캐시들 중의 하나 이상의 다른 캐시 내에도 공유, 미변경 카피로서 포함된 값인 상기 메모리 장치로부터 로드된 값의 공유, 미변경 카피를 상기 소정의 캐시가 포함하고 있는지 여부를 나타내기 위한 수단을 더 구비하고 있음―과, 상기 소정의 캐시로부터 상기 소정의 캐시가 상기 값의 판독을 요구하는 프로세싱 유닛에 상기 메모리 장치로부터 로드된 상기 값을 제공할 수 있다는 것을 나타내는 응답을 전송하기 위한 수단을 포함하는 컴퓨터 시스템.
  11. 제 10항에 있어서, 상기 상호 접속에 접속된 시스템 컨트롤 유닛―상기 시스템 컨트롤 유닛은 상기 응답을 검출하고 상기 응답을 상기 요구 프로세싱 유닛에 전송하기 위한 수단을 구비하고 있음―을 더 포함하는 컴퓨터 시스템.
  12. 제 10항에 있어서, 상기 소정의 캐시로부터 상기 요구 프로세싱 유닛에 상기 값을 제공하기 위한 수단을 더 포함하는 컴퓨터 시스템.
  13. 제 10항에 있어서, 상기 값의 상기 공유, 미변경 카피들을 포함하는 상기 캐시들 중에서 상기 소정의 캐시를 임의로 선택하기 위한 수단을 더 포함하는 컴퓨터 시스템.
  14. 제 10항에 있어서, 상기 각각의 캐시는 상기 요구 프로세싱 유닛으로부터의 메시지를 찾아 상기 상호 접속을 스누핑하기 위한 수단을 포함하는 컴퓨터 시스템.
  15. 제 10항에 있어서, 상기 응답과 관련된 우선 순위를 판정하기 위한 수단을 더 포함하는 컴퓨터 시스템.
  16. 제 14항에 있어서, 상기 메시지에 요구 식별자를 첨부하기 위한 수단을 더 포함하는 컴퓨터 시스템.
  17. 제 14항에 있어서, 상기 메모리 장치는 상기 메시지를 검출하고, 상기 소정의 캐시에 의해 상기 값이 제공될 것임을 상기 메모리 장치에 통지하기 위한 수단을 더 포함하는 컴퓨터 시스템.
  18. 제 16항에 있어서, 응답으로서 상기 값을 제공하기 위한 수단을 더 포함하며, 상기 응답에는, 상기 요구 식별자와, 상기 값의 출처가 상기 메모리 장치가 아니라 캐시임을 나타내는 부가적인 신호가 첨부되는 컴퓨터 시스템.
KR1019980002963A 1997-04-14 1998-02-03 Smp 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법 KR100274771B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/837,516 1997-04-14
US08/837,516 US5940856A (en) 1997-04-14 1997-04-14 Cache intervention from only one of many cache lines sharing an unmodified value

Publications (2)

Publication Number Publication Date
KR19980079662A KR19980079662A (ko) 1998-11-25
KR100274771B1 true KR100274771B1 (ko) 2000-12-15

Family

ID=25274682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980002963A KR100274771B1 (ko) 1997-04-14 1998-02-03 Smp 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법

Country Status (4)

Country Link
US (1) US5940856A (ko)
JP (1) JPH10289155A (ko)
KR (1) KR100274771B1 (ko)
TW (1) TW385395B (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6516442B1 (en) 1997-12-07 2003-02-04 Conexant Systems, Inc. Channel interface and protocols for cache coherency in a scalable symmetric multiprocessor system
US6292705B1 (en) 1998-09-29 2001-09-18 Conexant Systems, Inc. Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
US6065077A (en) 1997-12-07 2000-05-16 Hotrail, Inc. Apparatus and method for a cache coherent shared memory multiprocessing system
US6633945B1 (en) 1997-12-07 2003-10-14 Conexant Systems, Inc. Fully connected cache coherent multiprocessing systems
US6418537B1 (en) 1997-12-07 2002-07-09 Conexant Systems, Inc. Accurate timing calibration for each of multiple high-speed clocked receivers using a single DLL
US6446220B1 (en) 1998-08-04 2002-09-03 International Business Machines Corporation Updating data and parity data with and without read caches
US6446237B1 (en) * 1998-08-04 2002-09-03 International Business Machines Corporation Updating and reading data and parity blocks in a shared disk system
US6108764A (en) * 1998-12-17 2000-08-22 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention
US6115804A (en) * 1999-02-10 2000-09-05 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention
US6192452B1 (en) * 1999-02-26 2001-02-20 International Business Machines Corporation Method and system for avoiding data loss due to cancelled transactions within a non-uniform memory access system
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
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
US6418513B1 (en) 1999-06-25 2002-07-09 International Business Machines Corporation Queue-less and state-less layered local data cache mechanism
US6434667B1 (en) 1999-06-25 2002-08-13 International Business Machines Corporation Layered local cache with imprecise reload mechanism
US6397300B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation High performance store instruction management via imprecise local cache update mechanism
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
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
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
US6738837B1 (en) 2001-02-02 2004-05-18 Cradle Technologies, Inc. Digital system with split transaction memory access
US6874049B1 (en) 2001-02-02 2005-03-29 Cradle Technologies, Inc. Semaphores with interrupt mechanism
EP1298506A1 (de) * 2001-09-27 2003-04-02 Siemens Aktiengesellschaft Dynamischer Zugriff auf Automatisierungsressourcen
FR2832859B1 (fr) * 2001-11-28 2004-01-09 Commissariat Energie Atomique Generateur electrochimique au lithium comprenant au moins une electrode bipolaire avec substrats conducteurs en aluminium ou alliage d'aluminium
US6839816B2 (en) * 2002-02-26 2005-01-04 International Business Machines Corporation Shared cache line update mechanism
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
US6976132B2 (en) * 2003-03-28 2005-12-13 International Business Machines Corporation Reducing latency of a snoop tenure
US7085898B2 (en) 2003-05-12 2006-08-01 International Business Machines Corporation Coherency management for a “switchless” distributed shared memory computer system
US6988173B2 (en) * 2003-05-12 2006-01-17 International Business Machines Corporation Bus protocol for a switchless distributed shared memory computer system
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
JP4335298B2 (ja) 2006-02-24 2009-09-30 富士通株式会社 スヌープ制御方法および情報処理装置
US8195890B1 (en) * 2006-08-22 2012-06-05 Sawyer Law Group, P.C. Method for maintaining cache coherence using a distributed directory with event driven updates
WO2008155806A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited バリア同期方法、装置、及びマルチコアプロセッサ
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US9069684B2 (en) * 2012-07-16 2015-06-30 Nvidia Corporation System, method, and computer program product for invalidatng cache lines

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317716A (en) * 1988-08-16 1994-05-31 International Business Machines Corporation Multiple caches using state information indicating if cache line was previously modified and type of access rights granted to assign access rights to cache line
US5297269A (en) * 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
US5210845A (en) * 1990-11-28 1993-05-11 Intel Corporation Controller for two-way set associative cache
JPH04353947A (ja) * 1991-02-13 1992-12-08 Hewlett Packard Co <Hp> メモリページ特性タグ付けシステム
US5319766A (en) * 1992-04-24 1994-06-07 Digital Equipment Corporation Duplicate tag store for a processor having primary and backup cache memories in a multiprocessor computer system
US5553266A (en) * 1992-04-24 1996-09-03 Digital Equipment Corporation Update vs. invalidate policy for a snoopy bus protocol
US5555382A (en) * 1992-04-24 1996-09-10 Digital Equipment Corporation Intelligent snoopy bus arbiter
US5528764A (en) * 1992-12-24 1996-06-18 Ncr Corporation Bus system with cache snooping signals having a turnaround time between agents driving the bus for keeping the bus from floating for an extended period
US5671391A (en) * 1994-01-10 1997-09-23 Ncr Corporation Coherent copyback protocol for multi-level cache memory systems
US5559987A (en) * 1994-06-30 1996-09-24 Digital Equipment Corporation Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system
US5713004A (en) * 1995-05-18 1998-01-27 Data General Corporation Cache control for use in a multiprocessor to prevent data from ping-ponging between caches

Also Published As

Publication number Publication date
JPH10289155A (ja) 1998-10-27
TW385395B (en) 2000-03-21
KR19980079662A (ko) 1998-11-25
US5940856A (en) 1999-08-17

Similar Documents

Publication Publication Date Title
KR100274771B1 (ko) Smp 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법
KR100293136B1 (ko) Smp버스의최근판독상태에서의캐시라인들의공유개입방법
US5963974A (en) Cache intervention from a cache line exclusively holding an unmodified value
JP3888769B2 (ja) データ供給方法及びコンピュータ・システム
US5940864A (en) Shared memory-access priorization method for multiprocessors using caches and snoop responses
US6571322B2 (en) Multiprocessor computer system with sectored cache line mechanism for cache intervention
US6345342B1 (en) Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
US5796980A (en) Reducing cache snooping overhead in a multilevel cache system with inclusion field in shared cache indicating state of data in lower level caches
US5943685A (en) Method of shared intervention via a single data provider among shared caches for SMP bus
JP3007872B2 (ja) マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置
US6662275B2 (en) Efficient instruction cache coherency maintenance mechanism for scalable multiprocessor computer system with store-through data cache
EP0301354A2 (en) Cache consistency protocol for multiprocessor system
US6321306B1 (en) High performance multiprocessor system with modified-unsolicited cache state
US6574714B2 (en) Efficient instruction cache coherency maintenance mechanism for scalable multiprocessor computer system with write-back data cache
JP2000250884A (ja) 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム
US5996049A (en) Cache-coherency protocol with recently read state for data and instructions
US6615321B2 (en) Mechanism for collapsing store misses in an SMP computer system
US6336169B1 (en) Background kill system bus transaction to optimize coherency transactions on a multiprocessor system bus
US7464227B2 (en) Method and apparatus for supporting opportunistic sharing in coherent multiprocessors
EP0976047B1 (en) Read operations in multiprocessor computer system
US6658536B1 (en) Cache-coherency protocol with recently read state for extending cache horizontally
US6385702B1 (en) High performance multiprocessor system with exclusive-deallocate cache state
US6484241B2 (en) Multiprocessor computer system with sectored cache line system bus protocol mechanism
US6374333B1 (en) Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention
US6615320B2 (en) Store collapsing mechanism for SMP computer system

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee