KR100360064B1 - 고도로파이프라인된버스구조 - Google Patents

고도로파이프라인된버스구조 Download PDF

Info

Publication number
KR100360064B1
KR100360064B1 KR1019960704811A KR19960704811A KR100360064B1 KR 100360064 B1 KR100360064 B1 KR 100360064B1 KR 1019960704811 A KR1019960704811 A KR 1019960704811A KR 19960704811 A KR19960704811 A KR 19960704811A KR 100360064 B1 KR100360064 B1 KR 100360064B1
Authority
KR
South Korea
Prior art keywords
phase
bus
data
transaction
agent
Prior art date
Application number
KR1019960704811A
Other languages
English (en)
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 인텔 코오퍼레이션
Application granted granted Critical
Publication of KR100360064B1 publication Critical patent/KR100360064B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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

Landscapes

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

Abstract

데이타 코히어런시를 유지하고 장기 대기 트랜잭션을 지원하고 프로세서 오더를 제공하는 파이프라인된 버스를 지닌 컴퓨터 시스템이 설명된다.
이 컴퓨터 시스템은 인-오더 큐를 가진 버스 에이전트를 포함하는데 이는 시스템 버스에 걸쳐 있는 복수의 아웃스탠딩 트랜잭션을 추적하고 트랜잭션 요구에 응답하며 스누핑을 실행하고 스누핑 결과 및 트랜잭션내에 수정된 데이터를 제공한다.
부가적으로, 이 시스템은 지연된 트랜잭션을 재시작하는데 이용되는 트랜잭션 요구동안 지연된 식별자를 제공하므로써 장기 대기 트랜잭션을 지원한다.

Description

고도로 파이프라인된 버스구조
제1도는 시스템버스를 따라서 트랜잭션의 파이프라이닝을 시작하고 제어하는 복수의 에이전트로 구성된 버스클러스터의 블록도,
제2도는 제1도의 시스템 버스에 의해 지원되는 두 개의 파이프라인된 트랜잭션에 의해서 수행되는 페이즈를 도시하는 일반적인 타이밍페이스도,
제3도는 요구 시작된 "기록" 트랜잭션을 지원하기 위해 제1도의 시스템버스를 통하여 전달하는 정보신호의 타이밍도,
제4도는 응답 시작된 "판독" 트랜잭션을 지원하기 위해 제1도의 시스템버스를 통하여 전달하는 정보신호의 타이밍도,
제5도는 판독트랜잭션동안 수행되는 임플리시트 라이트백 트랜잭션을 지원하기 위해 제1도의 시스템버스를 통하여 전달하는 정보신호의 타이밍도,
제6도는 기록 트랜잭션동안 수행되는 임플리시트 라이트백 트랜잭션을 지원하기 위해 제1도의 시스템버스를 통하여 전달하는 정보신호의 타이밍도,
제7도는 복수의 일부 캐쉬라인 판독 트랜잭션을 지원하기 위해 제1도의 시스템 버스를 통하여 전달하는 정보신호의 타이밍도,
제8도는 동일한 에이전트로부터 복수의 캐쉬라인 판독트랜잭션을 지원하기 위해 제1도의 시스템버스를 통하여 전달하는 정보신호의 타이밍도,
제9도는 복수의 일부 캐쉬라인 기록트랜잭션을 지원하기 위해 제1도의 시스템버스를 통하여 전달하는 정보신호의 타이밍도,
제10도는 복수의 캐쉬라인 기록 트랜잭션을 지원하는 제1도의 파이프라인된 버스의 타이밍도,
제11도는 동일한 데이터를 수정하는 소유권을 요구하는 두 개의 순차 버스트랜잭션을 지원하기 위해 제1도의 시스템버스를 통하여 전달하는 정보신호의 타이밍도,
제12도는 지연된 응답 트랜잭션에 대한 지연된 응답을 지원하기 위해 제1도의 시스템버스를 통하여 전달하는 정보신호의 타이밍도,
제13도는 지연된 트랜잭션에 대한 스누핑책임을 지원하기 위해 제1도의 시스템버스를 통하여 전달하는 정보신호의 타이밍도,
제14도는 제1도의 시스템버스의 상태를 모니터하는데 이용하기 위해 제1도의 에이전트에 구현된 인-오더큐(in-order queue)를 도시하는 블록도,
제15도는 제1도의 마이크로 프로세서들중 하나내에 채용되는 버퍼링 구조의 블록도,
(발명의 분야)
본발명은 일반적으로 컴퓨티 시스템 분야에 관련된다.
특히 본발명은 밀티프로세서 컴퓨터 시스템에서 이용되는 고도로 파이프라인된 버스 구조에 관련된다.
(관련기술)
컴퓨터 시스템이 마이크로 프로세서뿐만아니라 메모리장치, 입출력장치등(이하 '에이전트'라 한다)의 많은 구성요소로 이루어져 있다는 것은 주지의 사실이다. 이들 에이전트들은 보통 시스템버스를 통하여 서로 정보를 교환한다. 컴퓨터 시스템의 전체적 성능은 시스템버스의 교환속도(내지 효율등)에 직접 관계되어 있기 때문에 이 호율을 향상시키는데에 많은 노력이 기울여져 왔다.
시스템버스의 성능을 향상시키기 위한 종래방법중 하나는 파이프라이닝이다. 파이프라이닝 이전의 버스 트랜잭션이 완료되기전에 새로운 버스트랜잭션을 허락하는 프로세스를 의미한다. 이 프로세스는 데이터의 판독 또는 기록 요구와 실제의 판독 또는 기록 트랜잭션간의 지연시간을 다른 트랜잭션이 이용할수 있도록 하기 때문에 효과적이라고 판명되었다. 이러한 시간지연은 에이전트들의 응답능력의 차이에 의해서 야기된다. 그래서 파이프라이닝을 갖춘 시스템버스는 시스템의 전체적 성능을 향상시키는데 매우 효과적으로 이용되고 있다.
컴퓨터 시스템의 설계분야에서 다양한 개발이 컴퓨터 시스템의 전체적 성능을 향상시키고 있지만 그 개발이 시스템버스상에서 데이터를 전송하는 프로세스를 더욱 복잡하게 한다. 그래서 파이프라이닝은 지지받기가 더욱 어렵다.
그러한 개발중 하나의 예로서 "다중처리"(multiprocessing)방식이 있다. 다중처리란 하나의 컴퓨터 시스템내에 복수의 마이크로 프로세서를 사용하여 각각의 마이크로 프로세서가 다른것과 동시에 각자의 데스크를 수행하도록 하는 것이다. 이론적으로 n 개의 마이크로 프로세서를 가진 하나의 컴퓨터 시스템은 n개의 작업을 수행할수 있고, 단일의 마이크로 프로세서를 가진 컴퓨터 시스템보다 n배가 빠르다고 할수 있다.
다중처리를 위한 조건은, 가장 최근의 데이타 버전이 항상 위치결정가능하여야(locatable)하는 것과 그 가장 최근의 데이타 버전이 작업 수행에 필요할때에 제공될 것이라는 것을 각각의 마이크로 프로세서가 확인할수 있어야 하는 것이다. 이것을 '데이타 코히어런시'(coherency) 라 한다. 하지만 데이타 코히어런시를 제공하는 것은 버스트랜잭션의 파이프라이닝을 어렵게 한다. 그 이유는 복수의 트랜잭션이 출현할 때 가장 최근의 데이타 버전이 어느위치에 지정되어 있는가를 결정하는 것이 종종 어렵기 때문이다. 이러한 난점에 대한 통상적인 대응책은, 데이터를 캐쉬하고 있는 에이전트가 데이터를 메모리에 기록할때까지 버스 트랜잭션의 실행을 포기하는 것이다. 하지만 이러한 대응책은 파이프라이닝으로부터 얻었던 이점들을 사실상 사라지게하는 것이다.
시스템버스의 성능을 향상시키기 위하여 별개로 사용되는 다른 방법은 멀티 프로세서 시스템내에 "프로세서 오더링"(processor ordering)을 지원하는 방식이다. 프로세서 오더링이란 컴퓨터 시스템내의 어느 프로세서가 발생시킨 트랜잭션들이 그 컴퓨터 시스템내의 모든 에이전트에 의해 동일한 순서로 관측되도록 하는 것이다. 트랜잭션이 중도 포기될수 있는 파이프라이닝된 환경에서 한 세트의 프로토콜이 프로세서 오더링을 보장하기 위하여 적소에 존재하여야 한다.
시스템버스의 성능을 향상시키기 위한 또 다른 방법은 지연된 트랜잭션을 이용하는 것이다. 지연된 트랜잭션은 요구당시에 완료될수 없는 트랜잭션을 버스상에서 데이터 제공을 책임지고 있는 구성요소(즉 "응답에이전트")에 의해서 지연되도록 한다. 데이터가 가용인(available)때에, 응답에이전트는 데이터를 요구한 구성요소(즉 "요구에이전트")로 보내어지는 새로운 트랜잭션을 개시한다. 이것은 아직 가용불능인 데이터에 대한 반복적인 요구실패로 버스가 가득차는 것을 방지한다.
시스템버스의 효율을 증가시키기 위한 지연된 트랜잭션방식의 사용은 하나의 컴퓨터 시스템내에서 복수개의 마이크로 프로세서의 사용과 충돌할수 있다. 그 이유는 트랜잭션이 지연되고 있는 동안 최신 데이터 버전의 위치가 변환될수 있기 때문이다. 또한 하나의 컴퓨터 시스템 내에서의 복수의 마이크로 프로세서의 사용은 버스시스템의 좀더 효율적인 이용과 충돌할 수 있다.
컴퓨터 버스시스템의 효율을 향상시키기 위하여 별도로 사용하는 방법들간의 다양한 충돌과 멀티프로세서 시스템에 대한 필요조건 때문에, 멀티프로세서 컴퓨터 시스템의 전체효율은 그의 최고 성능으로 결코 실현될수 없었다. 하지만 만약 MESI 캐쉬 코히런시와 프로세서 오더링과 지연된 트랜잭션 응답지원을 가지고 복수의 마이크로 프로세서를 지원하면서 고도로 파이프라이닝된 구조를 제공하도록 시스템버스가 개발될수 있다면, 최고성능에 더욱 근접하는 컴퓨터 시스템이 실현될수 있을 것이다.
발명의 요약
본발명은 단일처리 또는 바람직하게는 다중처리 컴퓨터 시스템내에서 이용되는 다양한 장치들간에 메시지와 데이터의 교환을 위한 방법과 시스템이다.
본발명의 실시태양의 하나에서 하나의 시스템버스가 하나의 컴퓨터 시스템내에 제공된다.
시스템버스는 데이터라인, 어드레스라인, 상태라인과 에러라인을 한 세트로 하는 많은 신호선을 포함한다. 트랜잭션은 아비트레이션(arbitration), 요구, 에러, 스누핑, 응답과 데이터의 6페이즈로 분류된다. 각 페이즈간에 발생한 클록사이클의 수와 각 페이즈 동안에 데이터를 운송하는 신호선의 수는, 복수의 트랜잭션이 버스 시스템을 통하여 파이프라이닝될수 있도록 지향된다. 부가적으로 서로 다른 트랜잭션의 서로 다른 페이즈도 만약 그들의 역할을 실행하기 위하여 동일한 신호선을 요구하지 않는다면 버스상에 동시에 놓일수 있다.
바람직한 실시예에서 데이터 코히런시는 임플리시트 라이트백(Implicit Writeback) 트랜잭션을 이용하므로써 유지된다. 데이터 전송을 위하여 버스를 이용하는 디바이스("에이전트")와 로칼메모리를 갖는 디바이스("캐쉬")는 버스트랜잭션의 요구페이즈 후 캐쉬 스누핑을 실행하도록 요구되고, 스누핑 페이즈동안 그 스누핑의 결과를 제공한다. 만약 요구된 데이터의 최신 복제 데이터가 스누핑동안에 캐쉬에이전트에 의해 검출된다면, 그 에이전트는 파이프라이닝을 혼란시키지 않고 요구에이전트에게 그 데이터를 제공하여야 한다. 부가적으로, 그 데이터의 소유권은 그 트랜잭션내내 통제되고, 그래서 동일한 데이터를 요구하는 다른 트랜잭션은 최신데이타 버전을 수신할 수 있도록 보장될 것이다.
본발명의 바람직한 실시예에서는 또한 장기대기(long latency) 트랜잭션이 지원된다. 요구된 트랜잭션이 소정의 시간주기에 종료될 수 없는 경우에 데이터를 제공하는 에이전트("응답 에이전트")는 파이프라이닝을 혼란시키지 않고 데이터를지연할수도 있다. 데이타가 가용인 때에 그 응답에이전트는 새로운 트랜잭션을 시작하고 본래의 요구에이전트에게는 완료 응답과 어떤 데이터를 제공할수 있다. 지연 트랜잭션의 경우에 프로세서 오더링을 유지하기 위하여, 제1 트랜잭션을 위해 수행될 스누핑 결과가 가용일 때 까지는 동일한 에이전트로부터 백-투-백기록 트랜잭션은 금지된다.
상세한 설명
본발명의 특징과 이점은 다음의 상세한 설명으로부터 명료해질 것이다.
본발명은 파이프라이닝의 혼란을 일으키지 않고 프로세서 오더링지원을 제공하고 데이터 코히런시를 유지하기 위한 파이프라이닝된 시스템버스의 효율적인 동작에 관한 방법 및 장치이다. 이하 상세한 설명에서의 많은 특별한 세부사항과 다양한 버스트랜잭션의 타이밍 다이어그램의 도시가 본 발명을 완전히 설명하기 위하여 표현되어 있다. 하지만 이들 특별한 세부사항이 없이도 본 발명이 실시 가능하며 어떠한 컴퓨터 시스템내에서도 사용될수 있는 넓은 적용범위를 발견할수 있음은 당해 기술분야의 전문가에게 분명하다.
여기의 상세한 설명에서의 많은 용어들은 컴퓨터 시스템내 구성요소의 어떤 특성을 설명하기 위하여 자주 사용하는 것들이다. 이들 용어는 서로 배제하지 않는다. "요구에이전트"는 데이터의 전형적 판독과 기록을 위한 요구를 시작하는 에이전트이다. "응답에이전트"는 데이터를 제공하여 요구에 응답하는 에이전트이다. "캐슁에이전트"는 마이크로 프로세서처럼 캐쉬 능력을 갖는 에이전트이다. "스누핑에이전트" 는 버스 트랜잭션에 의한 데이터 요구에 대해 내부 메모리를 스누핑하는에이전트로서, 통상적으로 캐슁에이전트중의 하나가 된다. 좀더 일반적인 용어에는, 통상적으로 기록 트랜잭션으로부터 데이터를 수신하는 "수신에이전트"와 시스템 버스를 따라 데이터를 전송하는 요구에이전트나 응답에이전트 또는 스누핑에이전트등인 "데이타 전송에이전트"가 포함된다.
제1도는 4개의 마이크로 프로세서(2, 4, 6, 8)와 입출력(I/O) 브릿지(10)와 메모리제어기(12)가 시스템 버스(20)와 결합되어 있는 버스클러스터(15)의 다이어그램이다. 상기 에이전트들은 각각 버스상으로 데이터와 메시지를 송신과/또는 수신을 할 수 있는 기능을 갖는다. 이 실시예에서, 입출력 브릿지(10)는 시스템버스(20)와 입출력장치(22)에 결합된 다수의 주변장치 (여기에는, 디스플레이장치(23), 문자숫자입력장치(21), 대량 저장장치(26)와 하드카피장치(27)등이 포함되며 그러나 이에 한정되지는 않는다) 사이에 통신경로를 제공한다. 동 실시예에서 메모리제어기(12)는 동적 임의접근메모리(DRAM)(19)의 집합과 결합되어 있으며 다른 메모리 디바이스와의 결합도 가능하다. 더 나아가 클러스터 브릿지(14)는 시스템 버스(20)와 클러스터 상호접속자(16)(interconnect)에 결합되어 있고, 상호 접속자는 버스클러스터가 다른 버스클러스터(17a- 17m, m 은 임의 값)와 통신수 있도록 한다.
시스템버스(20)의 신호선과 논리회로는, 전력소모가 적고 전자파 방해(EMI)가 적은 제록스 코퍼레이션의 거닝 트랜시버 로직(GTL) [Gunning Transciever Logic]을 이용하여 구현된다. 이 기술의 이용은 시스템버스(20)에 8개 까지의 에이전트가 결합되는 것을 허락하고도 버스를 록속도를 100MHz 까지 유지할수 있도록한다. 다양한 실시예가 13.3MHz 44.4MHz 66.7MHz 등을 포함하는 클록속도를 구현하며 다른 클록속도 또한 이용가능하다. 이들 클록속도는 본발명이 다양한 하드웨어 성능을 지닌 컴퓨터 시스템에서 구현되도록 한다.
제2도는 제1도의 시스템버스에 의해 지원되는 두 버스 트랜잭션의 페이즈를 나타내는 타이밍 다이어그램이다. 각 버스 트랜잭션은 6개의 페이즈를 갖는다. 이 페이즈들은 시스템 클록 "CLK"(29)의 다수의 선택된 클록사이클(예를들면 "T1", "T2" 등)에 의해 적절히 분리되어 있다. 즉, 6개의 페이즈는 아비트레이션, 요구, 에러, 스누핑, 데이터와 응답 페이즈이다. 이들 페이즈는 다양한 타이밍 요소와 함께 필요에 따라 배열될수 있다는 것은 예상된다.
아비트레이션 페이즈 동안에, 나머지 페이즈 동안의 버스 소유권이 결정된다.
요구페이즈동안에, 아비트레이션 페이즈의 시스템버스를 소유한 에이전트는 요구에이전트가 바라는 트랜잭션을 시작하기 위하여 다른 에이전트에 필요한 정보를 제공한다.
이 정보에는 처리될 데이터의 어드레스를 포함하며, 실행될 동작을 나타내는 코드를 포함할 수는 있다. 요구페이즈 동안에 검출된 어떤 패리티(parity) 에러는 에러신호를 에러 페이즈동안 표명(assert)될수 있도록 한다.
스누핑 페이즈동안에, 시스템 버스상에서 캐슁에이전트가 수행한 스누핑의 결과가 표명된다.
데이터 페이즈동안에, 요구된 데이터의 전송이 완성된다. 트랜잭션은 버스파이프라인으로부터 제거되고 그 트랜잭션의 결과는 응답 페이즈동안에 표명된다. 정보를 제공하기 위하여 각 페이즈 동안에 다양한 신호들이 사용되는데 다음에 이를 설명한다.
바람직한 실시예에 지원되는 트랜잭션의 유형에는 다음과 같은 것이 포함된다. 하지만 그들에만 한정되지는 않는다.
(i) 캐쉬라인 판독과 기록, 여기서 캐쉬라인은 32바이트 또는 4개의 8바이트 "천크"(Chunks)로 구성된다.
(ii) 8바이트와 16바이트 판독과 기록(부분 캐쉬라인 판독과 기록으로 불리운다).
(iii) 캐쉬라인 판독과 무효화(invalidate).
(iv) 캐쉬라인 무효화
무효화 트랜잭션은 다른 캐슁 에이전트들이 요구된 데이터를 저장하는 그들의 캐쉬 라인을 "무효"상태(무효상태에 대한 설명은 다음에 한다)에 두도록 하며,
그래서 요구에이전트가 자신의 캐쉬내에서 그 요구된 데이터의 소유권을 독점적으로 얻을수 있도록 한다. 이들은 본발명의 일실시예에 지원되는 트랜잭션이며, 다른 실시예에서는 여전히 본발명을 구체화하는 다른 트랜잭션의 집합을 이용할수 있다.
버스 아비트레이션을 수행하는데 있어서, 제1도의 각 에이전트는 4개 그룹의 아비트레이션 신호에 의존한다. 즉 BR[3:0]#, BPRI#, BNR# 과 LOCK# 신호들이다. BR[3:0]# 신호는 버스 소유 요구를 수신하고 송신하는데 사용하는 일종의 버스요구신호이다. BPRI# 신호는 에이전트가 최우선 버스 에이전트로부터의 버스 소유 요구를 수신하고 있는 있다는 것을 나타내기 위하여 사용하는 일종의 우선 요구신호이다. LOCK# 신호는 버스소유권이 현재 고정(lock)되어 있는것(즉 어떤 에이전트가 LOCK# 신호를 표명하고 있는 동안에는 버스 소유권이 변경될 수 없다는 것)을 다른 모든 에이전트에게 알려주기 위해 어떤 에이전트에 의해 사용되는 일종의 버스-고정 트랜잭션 신호이다. BNR# 신호는 새로운 버스 트랜잭션을 표명함으로써 다른 모든 에이전트를 일시적으로 요구하기 위해 임의의 에이전트에 의해 표명되는 신호이다.
요구페이즈에서, 새로운 버스트랜잭션의 요구를 발생시키는데 이용되는 신호로서 ADS#, REQ[4:0]#, A[35:3]#, AP[1:0]# 과 RP# 가 있다. ADS# 의 표명은 요구페이즈에서 잔여 신호가 유효하다는 것을 나타낸다. REQ[4:0]#은 버스트랜잭션동안에 만들어진 요구 유형을 나타낸다. A[35:3]# 은, 요구된 버스트랜잭션에 의해 만약 지정되었다면, 그 지정된 어드레스를 나타낸다. RP#와 AP[1:0]# 는 각각 신호 REQ[4:0]#과 A[35:3]# 상의 패리티보호를 제공한다. 이러한 응용에서, ADS# 가 표명될때부터 시작하는 두 개의 연속적인 클록사이클에 대해서 신호 ADS#, REQ[4:0]# A[35:3]#, AP[1:0]# 과 RP#는 유효하다. 참조를 용이하게 하기 위해서, 제1 클록사이클에서 표명된 신호는 첨자 "a" 가 붙여질 것이며 제2 클록사이클에서 표명된 신호는 첨자 "b"가 붙여질 것이다.
예를들면 제1 클록사이클에서 표명된 REQO# 은 REQaO#으로 나타내진다. 마찬가지로 제2 클록 사이클에서 표명된 REQO#은 REQbO#으로 나타내어진다.
에러 페이즈에서, 만약 요구신호가 패리티 에러를 갖고 있다면 AERR#이 표명된다. AERR#의 표명은 트랜잭션의 진행을 취소시키고 에이전트에게 아비트레이션 페이즈로부터 재시작하는 트랜잭션을 발송할 것을 요구한다. AERR#의 표명은 또한 모든 에이전트에게 그들의 아비트레이션 상태를 재동기화 시켜서 아비트레이션의 실패로부터 일어나는 패리티 에러에 의한 "자동보정"(auto-correction)을 허락하도록 한다.
스누핑 페이즈에서, 바람직한 실시예의 스누핑 결과를 제공하기 위해 사용되는 신호들은 HIT#, HITM#이다. HIT#는 요구된 데이터가 공유된 상태로 캐쉬안으로 입력되어야 한다는 것을 요구에이전트에게 지시하기 위하여 공유된 상태 또는 독점상태(아래에서 설명함)로 요구된 데이터를 가지는 모든 캐슁 에이전트에 의하여 표명된다. HITM#은 수정된 상태(아래에서 설명함)로 요구된 데이터를 가지는 어떤 캐슁 에이전트에 의하여 표명된다. 만약 스누핑 페이즈동안 HITM#이 표명되면, 요구에이전트와 스누핑 에이전트와 메모리 에이전트에게, 임플리시트 라이트백이라고 불리우는 특별한 트랜잭션이 발생하여 제6도와 제7도에서 설명되는 것과 같이 데이터 코히어런시가 유지될수 있다는 것이 알려진다.
만약 어떤 에이전트가 스누핑을 완성하기 위하여 부가적인 시간을 필요로 한다면, HIT#와 HITM# 모두는 두 사이클동안 스누핑 페이즈를 지연하도록 동시에 표명될수 있다. 이것은 파이프라이닝을 잠정적으로 중지할 것이지만, 플러시(flush)되도록 요구 하지는 않을 것이다. 또한 만약 응답에이전트가 요구된 데이터가 즉시 가용하지 않다는 것을 결정하면, 응답에이전트는 DEFER# 신호를 표명할수 있으며,여기서 DEFER# 신호는 트랜잭션을 그후에 재시작할 수 있는 선택여지를 응답에이전트에게 제공하고, 요구된 데이터를 제공하거나 요구에이전트가 트랜잭션을 재시도하도록 하게 한다.
응답 페이즈는 트랜잭션의 종료를 나타내며 응답/스누핑 시작된 데이터 페이즈가 시작된 것을 나타낸다. RS[2:0]# 신호는 응답페이즈가 들어가고 있다는 것을 나타내는 코드화된 메시지와 트랜잭션의 결과를 보내는데에 사용된다.
이들 "응답결과"는 아래와 같이 표A 에 열거되어 있다.
표A .... "응답 결과"
어떤 RS[2:0]#이 표명될때까지 응답결과는 "유휴중"을 유지한다. "재시도" 응답은(HITM#의 인액티브 상태에서) DEFER#이 스누핑 페이즈동안 표명될때에만 허용된다. 재시도 응답과 함께 응답에이전트는 요구에이전트에게 트랜잭션이 재시도되어야 한다는 것을 알린다. "대실수"는 트랜잭션이 실패한 것을 나타내는 유효한 응답이다. 요구에이전트는 복구동작을 취하도록 요구된다. "데이타없음" 응답은 아무런 데이터도 어드레스된 에이전트에 의해 반환되지 않을때와 DEFER#와 HITM#이 스누핑 페이즈에서 인액티브 상태에 있을때에 요구된다. "임플리시트 라이트백" 은 스누핑 페이즈동안 HITM# 이 표명될때에 요구되는 응답이다.
이 스누핑 에이전트는 수정상태로 발견된 캐쉬 라인을 전송하기 위하여 요구된다. 메모리에어전트는 수정된 캐쉬라인을 수용하고 응답을 동작시키기 위하여 요구된다. "정상데이타" 는 버스요구가 요구페이즈동안 판독응답을 요구하고 HITM# 과 DEFER# 모두가 스누핑페이즈동안 표명포기(de-asserted)될때에 요구된다. "정상데이타" 응답과 함께 응답에이전트는 그 응답과 함께 판독데이타를 전송하도록 요구된다.
데이터 페이즈 동안에 수많은 버스라인이 동작되고, 그러한 버스라인들은 D[63:0]#, DEP[7:0]#, DRDY#와 DBSY# 신호들과 연관되어 있다. D[63:0]#은 각각 64데이타 라인을 통하여 일 데이터 비트를 전송하는데 조력하는 데이터 신호들이다.
DEP[7:0]# 은 D[63:0]# 과 결합하여 사용되는 패리티 신호들이다. DRDY# 와 DBSY# 는 데이터라인 D[63:0]#의 사용을 제어하고 조정하는데 사용되는 신호들이다. DBSY#, DRDY#, D[63:0]#과 DEP[7:0]#등 모든 데이터 페이즈의 버스 신호들은 데이터전송 에이전트에 의해 구동된다. 클록사이클 "n" 동안 D[63:0]# 라인위에 데이터를 놓기 위하여 데이터 전송에이전트는 클록사이클 "n-1"동안 표명포기된 DBSY#를 관측하여야 한다. 이것은 다음 트랜잭션동안 데이터 라인이 자유로운 상태로 될 것이라는 것을 지시한다. DRDY#는 유효한 데이터가 데이터라인 D[63:0]# 위에 놓여있을때에 표명된다. 또한 버스 신호 "TRDY#"는, 때때로 요구시작된("기록") 트랜잭션을 위한 데이터 페이즈전에 응답 에이전트가 요구에이전트로부터 데이터를 수신할 준비가 되어있다는 것을 나타내기 위하여 응답에이전트에 의해 표명된다. TRDY#는 또한 임플리시트 라이트백 트랜잭션동안 수정된 데이터를 포함하는 스누핑 에이전트로부터 데이터를 수신할 준비가 되어 있음을 나타내는데 사용된다.
다음의 프로토콜 규칙은 상기 열거한 제어신호들의 사용법을 지시하며 그것은 차례로 데이터 페이즈에서 데이터 전송을 하는데 이용된다. 요구에이전트에 관련된 프로토콜 규칙도 또한 설명되어 있으며, 한 트랜잭션과 다음 트랜잭션간의 부드러운 전환을 보장하기 위하여 요구페이즈와 데이터 페이즈의 상호작용은 중요하다.
n번째 요구 시작된("기록")트랜잭션에 응답하여, 요구 시작된 TRDY#는 그 트랜잭션이 요구페이즈의 제1번째 사이클후 최소 3개 클록사이클을 전송하기 위해서 그리고 이전의 n-1번째 트랜잭션의 응답페이즈후 최소 1개 클록사이클을 전송하기 위하여 기록데이터를 가질 때 표명된다. 응답에이전트는 TRDY# 신호를 표명하는데 책임이 있다.
또한 스누핑-시작된 TRDY# 표명은 만약 n 번째 트랜잭션에 대한 스누핑 결과가 HITM# 표명을 나타낸다면 필수적으로 발생하여야 한다. 스누핑-시작된 TRDY# 표명을 스누핑 에이전트에게 응답에이전트가 임플리시트 라이트 백 데이터를 받을 준비가 되어 있음을 나타낸다.
TRDY#는 인액티브인 DBSY#와 액티브인 TRDY#가 일 클록사이클 동안 관측되었을 때 표명포기 된다. 만약 TRDY#가 표명되었던 클록사이클에서 DBSY#가 인액티브로 관측되었고 다음 클록사이클이 이전의 TRDY# 표명으로부터 3개의 클록사이클이라면, TRDY#는 일 클록사이클후에 표명포기될수 있다. TRDY#는 응답결과가 제공될때까지 표명포기될수 없고, 이는 임플리시트 라이트백이 기록 트랜잭션동안 요구되지 않는 경우에 그러하다. 여기서 TRDY#는 임플리시트 라이트백을 위하여 필요한 제2의 표명을 허락하기 위하여 가능한한 빨리 표명포기되어야 한다.
n번째 트랜잭션에 대한 스누핑 결과가 제공된 후에 그리고 이전의 n-1번째 트랜잭션에 대한 응답결과가 제공된 후에, n 번째 트랜잭션에 대한 응답결과(응답페이즈)가 제공된다. 만약 트랜잭션이 기록 데이터를 포함하면, TRDY#가 표명되고 인액티브 DBSY#와 함께 관측된 후에만 응답페이즈가 발생할수 있다. 만약 트랜잭션이 기록 데이터를 포함하고 임플리시트 라이트백과 연관되어 있다면, TRDY#가 두 번 표명되고 인액티브 DBSY#와 함께 관측된 후에만, 응답페이즈가 발생할수 있다. 만약 응답결과가 정상 데이터 응답을 나타내면, 이전의 트랜잭션으로부터 DBSY# 표명이 인액티브로 관측된 후에만, 응답페이즈가 발생할수 있다.
일반적으로 TRDY#가 액티브 상태로 관측되고 DBSY#가 인액티브 상태로 관측된후 일클록사이클에서 TRDY#에 응답하는 에이전트는 데이터를 제공하거나 DBSY#를 표명한다. 만약 데이터가 아직도 가용하지 아니하면, DBSY#는 데이터 라인을 "홀드"(hold)하도록 표명될 것이다. 만약 데이터를 제공하는 에이전트가 TRDY#를 관측한다면, 그것은 에이전트가 DBSY#를 현재 표명하고 미리 표명포기를 예측할 수있다면, DBSY#가 표명포기로 관측되기전 일 클록사이클에 그 데이터를 기록하기 시작할수 있다. 판독전송은 응답페이즈가 구동되는 동일 클록사이클에서 시작하여야 한다. 이 프로토콜은 다양한 동작에 대한 일련의 도시적 다이어그램을 통해 보여질수 있다.
본발명의 바람직한 실시예에서 이용된 시스템 버스는 MESI 캐쉬 프로토콜을 사용하여 데이타 코히어런시를 유지한다. MESI 캐쉬 프로토콜은, 시스템버스상의 각각의 캐슁 에이전트가 그것이 캐쉬하는 각각의 데이터 라인과 함께 4개의 상태중 하나와 결합하도록 요구한다. 이들 상태는 "수정", "독점", "공유", "무효"상태들이며, 그래서 "MESI"라고 한다. 더욱 명확히 말하면, 수정된 상태의 캐쉬라인은 데이터가 캐슁에이전트에 의하여 변경되고 그래서 메모리 에이전트로부터 가용한 데이터와 상이하다는 것을 나타낸다. 만약 시스템이 정확히 작동한다면, 수정된 상태에서 이 데이터는 가용한 데이터의 최신 버전이 될 것이다. 그외에 독점상태의 캐슁에이전트는 메모리 에이전트내에 저장된 것과 동일한 데이터를 갖고 다른 어떤 캐슁에이전트도 현재 동일한 데이터를 캐쉬하고 있지 않음을 나타낸다. 공유된 상태의 캐쉬라인은 그 캐슁에이전트와 다른 캐슁에이전트와 메모리 에이전트가 데이터의 현재 버전을 갖고 있음을 나타낸다. 무효상태의 캐쉬라인은 캐쉬라인내의 데이터가 무효임을 나타낸다. MESI 캐쉬 프로토콜이 각각의 캐슁에이전트에게 요구페이즈 동안에 제공된 정보에 기초한 스누핑을 실행 하고 그 스누핑 페이즈의 결과를 표명하도록 요구하므로써, MESI 캐쉬 프로토롤은 시스템 버스상의 모든 트랜잭션에 의하여 이용될수 있다.
제3도는 요구시작된 데이터 전송 즉 기록 트랜잭션을 표시하는 타이밍 다이어그램이며, 여기서 "Tn"은 시스템버스 클록("CLK")의 n번째 클록사이클을 나타낸다. ADS# 와 REQaO#은 트랜잭션 요구를 시작하는데 사용된다. 이 어플리케이션 전체를 통하여, 모든 이벤트들이 관측되기 일 클록사이클전에 이들이 표명된다. 예를들면, ADS#는 시간 T2에서 로우(low)되는 것이 보여진다. 즉, 관측된다.
이것은 ADS#가 어떤 에이전트에 의해 클록사이클 T1 동안 논리적 로우로 표명된 결과이다. 이러한 규약은 트랜잭션들이 버스 전체에 걸쳐서 관측되는데에 일 클록사이클이 소요되기 때문에 이용된다. 원은 신호의 "관측" 나타내며, 정사각형은 "표명"을 나타 내는데 사용된다.
제3도에 관련하여, 시간 T2에서 신호(ADS#와 REQaO#)의 표명에 의하여 나타난 것처럼, 트랜잭션의 요구페이즈동안 기록요구를 발행하고 시스템버스의 제어를 얻을 때 요구 시작된 트랜잭션이 시작한다. 그 다음에 요구에이전트는 TRDY#가 시간 T5에서 그 데이터를 수용할 에이전트에 의하여 표명될때까지 대기한다.
여기서 일반적으로 그 에이전트는 DRAM 과 결합된 메모리 제어기이다. 신호 HITM#이 스누핑 페이즈 동안에 클록사이클 T6에서 표명되지 않으면, 아무런 임플리시트 라이트백 트랜잭션도 필요치 않다. 일단 TRDY#가 표명되면, 요구에이전트는 DBSY#가 표명되었는지를 결정하고, 여기서 시간 T4와 T5에는 표명되지 않으며, 그리고 DBSY#를 표명함과 동시에 데이터 페이즈 동안 D[63:0]# 라인상에 데이터를 올려놓음으로써 클록사이클(T6) 동안에 데이터 제공을 시작한다. 이것은 클록사이클(T7)에서 관측된다.
트랜잭션이 단일 8바이트 천크에 관련된 부분 캐쉬라인 기록인 경우에 데이터라인 D[63:0]# 가 다음 클록사이클 동안에 가용일 것이기 때문에 DBSY#는 표명될 필요가 없다.
트랜잭션이 복수의 8바이트 천크들에 관련되어 있다면, DBSY# 는 T6에서 표명되었을 것이고, 최후의 천크가 제공되기 일 클록사이클 전까지 표명되어 유지되었을 것이다. TRDY# 가 표명되고 인액티브인 DBSY#와 함께 관측된후 기록 트랜잭션 을 위하여 응답결과가 표명된다.
제4도는 데이터 전송을 갖는 응답 시작된("판독") 트랜잭션에 대한 타이밍 다이어그램이다. ADS# 의 표명과 REQaO#의 표명포기에 의해서 시간 T2에서 보여진 버스 트랜잭션의 요구페이즈 동안에 판독요구가 만들어진 때에 판독 트랜잭션이 시작한다 한번 판독 요구가 만들어지면, 요구에이전트가 데이터 판독을 시작하기 전에 시스템 버스상에 유효한 데이터가 위치하였음을 나타내는 DRDY# 가 표명될때까지, 요구에이전트가 대기한다. 응답시작된 트랜잭션 동안에 TRDY# 는 표명될 필요가 없다. 트랜잭션이 두 8바이트 천크에 관련된 부분 캐쉬라인 판독인 경우에, 제2천크가 제공되는 클록사이클의 일 클록사이클 전, T8까지 DBSY#가 표명된다. 판독 트랜잭션동안, 스누핑 결과가 관측되고 DBSY#가 인액티브 상태로 관측된후 일 사이클에서 응답 결과가 표명된다.
제5도는 임플리시트 라이트백에 관련된 데이터 전송을 갖는 응답시작된 트랜잭션의 타이밍 다이어그램이다. 판독 트랜잭션을 나타내는 T2에서의 ADS#의 표명과 REQaO#의 표명포기와 함께, 그 트랜잭션은 시작된다. 캐슁에이전트가 자신의 캐쉬를 스누핑하고 요구된 데이터의 최신 버전을 가졌다는 것을 검출하였때, 이것은 트랜잭션의 스누핑 페이즈 동안 T6에서 HITM#을 표명하므로써 데이터의 소유권의 자신에게 있음을 나타낸다. 그 다음에 스누핑 에이전트는 요구에이전트에게 데이터를 제공하는 것에 책임이 있다. 한번 HITM#이 표명되면, 비록 이전에 그럴 필요가 없었을 지라도 캐슁에이전트로부터 데이터를 수신하기 위하여 TRDY#를 표명하는 것에 대해 응답에이전트가 책임이 있다. 이것은 T7동안 행해지고 T8에서 관측된다. 스누핑에이전트는 TRDY# 표명을 검출하고, D[63:0]# 라인상에 데이터를 놓고 DBSY#와 DBSY#를 표명하므로써 데이터 제공을 시작한다. 이때 캐슁에이전트가 다른 모든 클록사이클에서 데이터 천크를 단지 제공할수만 있기 때문에, DRDY# 는 다른 모든 클록사이클에서 표명될수만 있으며, DBSY# 는 T16에서 데이터의 최후 천크가 관측되기전 일 사이클에서 표명포기로 관측된다. TRDY#가 표명된 것으로 관측되고 DBSY#가 클록사이클(T8)에서 표명포기로 관측된 후에 요구결과는 클록사이클(T9)에서 표명되고, T10에서 관측된다.
제6도는 기록 트랜잭션동안 일어나는 임플리시트 라이트백을 도시하는 개략적인 타이밍 다이어그램이다. 임플리시트 라이트백이 기록 트랜잭션동안 일어났을 때 두 개의 데이터 전송이 필요하다. 첫째는 정상적 요구시작기록이고, 둘째는 임플리시트 라이트백이다. 수신 에이전트(통상적으로 메모리 에이전트)는 두 개의 기록을 수신하고 그 정보를 하나의 캐쉬라인으로 병합시키며, 그것은 메모리로 들어갈 것이다.
일단 기록요구가 시간(T2)에서 ADS#와 REQaO# 표명에 의해 발행되면,시간(T5)에서 3 클록사이클이 경과한 후에 응답에이전트는 제1TRDY#를 표명한다. 임플리시트 라이트백이 필요하다는 것을 나타내면서 T6에서 HITM#이 관측된다. 또한 수신에이전트에 의한 제2 TRDY# 표명이 T8에서 관측되고, 스누핑 결과가 T6에서 관측된후 그리고 제1TRDY# 가 T6에서 표명포기된 후에 일어난다.
그리하여 두 표명은 구별될수 있다. DRDY# 와 DBSY#를 표명하고 데이터를 D[63:0]# 라인상에 위치시키므로써 제1 TRDY# 가 T5에서 표명된후 요구에이전트는 데이터 제공을 시작한다. 스누핑에이전트는, 데이터 제공의도를 나타내는 DBSY#를 T10에서 표명하기 전에 요구시작된 데이터 전송의 완료를 나타내는 DBSY# 가 T8에서 표명포기되었음을 검출할때까지, 대기해야 한다. 주목할 것은 비록 DBSY#가 T10에서 표명되더라도 데이터는 DRDY# 표명에 의해 지시되는데로 T12까지 사실상 제공되지 않는다는 것이다.
스누핑에이전트가 만약 아무런 데이터도 가지고 있지 않으면 T10에서 DBSY#를 표명하지 않을 것이며, 아무런 데이터 전송도 일어나지 않을 것이다. 응답 결과는 임플리시트 라이트백 응답을 지시하면서 T10에서 시스템 버스상에 위치한다.
제7도는 복수의 부분 라인 판독 트랜잭션이 정상상태 양식으로 일어나고 있는 것을 도시하는 타이밍 다이어그램이다. 오직 하나의 데이터 천크가 각각의 트랜잭션동안 기록되기 때문에 DBSY# 는 결코 표명될수 없다. 이 다이어그램에 도시된 바와같이 판독은 정상상태의 매 3 클록사이클마다 일어나는 것이 가능하다.
제8도는 동일한 에이전트로부터 백-투-백으로 일어나는 전체 캐쉬라인 판독의 정상 상태 행동을 보여준다. 트랜잭션(1)을 위한 응답과 데이터 전송은 스누핑페이즈후 2 클록사이클(T8)에서 일어난다. 데이터는 4개의 연속적 2 클록사이클 시간프레임에서 전송된다. DBSY# 는 트랜잭션(1)을 위하여 T8에서 표명되며 최후의 데이터 전송전 클록사이클(T11)까지 표명되는 것이 유지된다.
만약 데이터가 동일한 에이전트로부터 제공되고 있다면, 중간의 턴 어라운드 사이클 없이 연속적 데이터 전송이 일어날 수 있다. 이것은 에이전트가 클록사이클(T11과 T15)에서의 DBSY#의 표명포기를 예측할수 있고 일 클록사이클의 손실도 없이 다음 트랜잭션을 위한 데이터 페이즈를 시작할수 있다는 사실 때문이다. 판독 트랜잭션이 있고 스누핑 결과가 아무런 임플리시트 라이트백 데이터 전송도 나타내지 않기 때문에 TRDY# 는 표명되지 않는다. 주목할 것은 제1데이타 전송이 동일 클록사이클에서 응답 페이즈로서 일어나야 한다는 것이다. 이것은 RS[2:0]# 신호의 표명에 의하여 나타내진다. 만약 응답이 "정상데이타" 즉 임플리시트 라이트백 응답이면 현재 트랜 잭션을 위한 응답이 작동되기전에 이전 트랜잭션을 위한 DBSY# 가 표명포기되어야 한다.
제9도는 전속력 부분 기록 트랜잭션을 가진 시스템 버스의 정상상태 행동을 도시한다. 제1 트랜잭션은 유휴중인 시스템 버스상에서 일어나며 제3도에서의 간단한 기록의 경우와 동일하게 보여진다. ADS#와 REQ[4:0]#이 표명포기된후 3클록(T5)에서 TRDY#가 표명된다. 인액티브 HITM#이 임플리시트 라이트백 없음을 나타내면서 T6에서 관측된후, T8 에서 응답결과는 표명된다. T5에서 TRDY#는 액티브로 DBSY# 는 인액티브로서 관측된다. 그래서 데이터전송은 DBSY# 표명에 나타나는 것처럼 T7에서 시작될수 있다. 데이터 전송은 일클록사이클만을 취할수 있으므로 DBSY# 는표명될 수 없다. 제2 트랜잭션을 위한 TRDY#는 제1 트랜잭션을 위한 응답결과가 샘플링될때까지 대기하여야 한다. TRDY#는 응답결과가 관측된 그 출력사이클후에 표명된다.
제2 트랜잭션을 위한 스누핑 결과가 T9에서 관측되고 있기 때문에 그 응답은 T11에서 보내질 수도 있다. TRDY#는 T10에서 표명포기된 DBSY# 와 함께 관측되고, 데이터는 T12에서 보내진다.
제10도는 두 에이전트간의 데이터전송과 함께 전속력 전체 라인 기록 트랜잭션을 가진 시스템 버스의 정상상태 행동을 도시한다. 제1 트랜잭션은 유휴중인 시스템버스상에서 일어난다. TRDY# 는 T6까지 지연된다. 응답결과는 T6에서 관측된 인액티브 HITM#이 임플리시프 라이트백 없음을 나타낸후 T8에서 보내어질수 있다. 하지만 이 예에서는 T9에서 보내어진다. T6에서 TRDY#는 액티브로 관측되고 DBSY#는 인액티브로 관측된다. 그래서 데이터 전송은 DBSY# 표명에 의해 나타난 것처럼 T8에서 시작될수 있다.
만약 RS[2:0]#와 TRDY#모두가 동일한 에이전트로부터 왔다면 제2 트랜잭션을 위한 TRDY#는 응답 결과가 보내어진 그 클록사이클후에 보내어질 수 있다. 동일한 에어전트가 두 개의 요구 시작데이타 전송을 보낼때는 특별한 최적화가 만들어질 수 있다. T11에서 요구에이전트가 DBSY# 표명포기를 하고 트랜잭션(2)를 위해 표명된 TRDY#를 샘플링하고 트랜잭션(2)를 위한 데이터전송을 소유하기 때문에, 요구 에이전트는 DBSY# 가 표명포기된후 일 클록사이클(T12)에서 다음 데이터 전송을 할수 있다. T12에서 데이터를 수신한 에이전트는 TRDY#를 액티브로 DBSY#를 인액티브로 샘플링하고, T12에서 시작되는 데이터 전송을 받아들인다. 트랜잭션(2)에 대한 스누핑 결과가 T9에서 관측되기 때문에, 응답 에이전트는 T12에서 자유롭게 응답을 보낸다.
주목할 것은 어떠한 대기상태도 요구에이전트에 의하여 삽입될 수 없다는 것이다. 결국 이 시나리오에서 버스의 후단(back end)이 선단(front end)을 쓰로틀링(throttling)할 것이지만. 전체의 버스 대역폭은 확보가능하다. 일 실시예에서 마이크로프로세서는 항상, 어떤 순간에는 회피할지라도, 기록 데이터 전송 간에 턴-어라운드 사이클을 삽입한다.
임플리시트 라이트백 트랜잭션동안 두 개의 파이프라인된 트랜잭션간의 데이터 코히어런시를 유지하기 위하여, 트랜잭션을 원래 요구했던 에이전트 즉, 요구에이전트는 제1트랜잭션의 스누핑 페이즈를 관측한후 캐쉬라인에 대한 스누핑 책임을 진다. 요구에이전트는 또한 임플리시트 라이트백(스누핑 시작 전송)이 요구된 것 이상의 부가적인 데이터를 포함하고 있는지를 결정하기 위하여 응답페이즈를 항상 관측한다. 예를들면 만약 원래의 요구가 부분 라인 판독 트랜잭션(전 캐쉬라인중 일부만을 필요로 하는 트랜잭션)이면, 요구에이전트는 캐쉬라인 라이트백의 제1의 8바이트 천크로부터 필요한 데이터를 얻는데, 이것은 32 바이트를 포함한다. 만약 원래의 요구가 판독라인 또는 판독무효라인 트랜잭션(다른 모든 캐슁 에이전트에게 데이터가 무효상태로 위치되는 것을 알려주는 트랜잭션)이면, 요구에이전트는 라인 전체를 흡수한다. 만약 원래의 요구가 무효라인 트랜잭션이고 그 라인이 다른 캐쉬내에서 변경되면, 요구에이전트는 스누핑 시작 데이터 페이즈에서 수신되는 갱신된캐쉬라인으로 그의 내부 캐쉬라인을 갱신한다. 만약 원래의 무효라인 트랜잭션이 지연응답을 수신하면, 지연응답의 스누핑 페이즈에서 HITM#은 '데이터가 반환될 것이다'라는 것을 나타내고, 요구에이전트는 자신의 내부 캐쉬를 그 데이터로 갱신한다. 요구에이전트가 캐쉬라인에 대한 스누핑 책임을 인정하고 후속 트렌잭션에 응답하여 그 책임을 즉시 포기할 때, 그 캐쉬라인을 내부적 이용을 위하여 정확히 한 번 사용하는 것이 임플리시트 라이트백의 실행전에 허락된다.
요구에이전트는 판독/기록 트랜잭션동안 다른 에이전트가 그들 자신의 캐쉬를 스누핑하도록 시키는 것 외에, 그 자신의 캐쉬를 스누핑할수도 있다. 이러한 재귀- 스누핑은 요구에이전트가 스누핑 페이즈동안 그 자신의 트랜잭션요구를 스누핑하고 그 스누핑결과를 표현하도록 허락한다. 만약 그 스누핑이 요구에이전트의 캐쉬내의 "수정된" 캐쉬라인을 히트(hit)하면, 요구에이전트는 HITM#을 표명하고 스누핑 시작 데이터 페이즈에 대한 책임을 진다. 메모리 에이전트는 재귀 스누핑으로 인한 임플리시트 라이트백과 정상 스누핑으로 인한 임플리시트 라이트백을 구별하지 않는다. 두 경우에는 어드레싱된 메모리 에이전트는 응답에이전트를 유지하고 또한 임플리시트 라이트백을 수신하고 그것을 기록데이타와 병합한다.
예를들면 요구에이전트가 버스-고정 변수로 불리는 어떤 유형의 데이터에 접근할 때, 버스 트랜잭션을 발송하기 전에 내부캐쉬 조사를 요구하지 않고 버스고정 트랜잭션의 부분으로서 내부캐쉬로부터 캐쉬라인은 벗어난다. 그러므로 그 트랜잭션은 재귀스누핑을 요구한다. 만약 페이지 테이블 엔트리(즉, 페이지 속성)가 주소지정된 변수를 캐쉬불능(데이타가 캐쉬메모리내에 저장되지 않는다.)으로 정의하면, 또한 재귀 스누핑이 요구된다. 이 경우 내부 캐쉬 조사없이 트랜잭션은 시스템 버스에게 발송한다. 페이지 테이블 에일리어싱(aliasing)이나 다른 이유로 인하여 캐쉬라인은 여전히 자신의 내부 캐쉬라인내에 있을수도 있다. 이 경우 그것은 버스 트랜잭션의 일부로서 캐쉬로부터 라이트백된다.
간단히 말하면, 스누핑 에이전트는 트랜잭션의 스누핑 페이즈동안 HITM#을 표명하는 에이전트이다. 스누핑 에이전트는 또한 임플리시트 라이트백 동안 두 파이프라인된 트랜잭션간의 데이터 코히어런시를 유지하는 일정한 책임을 진다. HITM#을 표명하면서, 스누핑 에이전트는 트랜잭션의 임플리시트 라이트백에 대한 책임을 인정한다. 스누핑 에이전트는 메모리 에이전트로부터 스누핑 시작 TRDY# 표명을 기다리고, 메모리 에이전트에 의하여 임플리시트 라이트백 응답 표명과 동기화된 액티브 TRDY#(와 인액티브 DBSY#)로부터 정확히 2 클록에서 DBSY# 표명과 함께 임플리시트 라이트백 데이터 전송을 시작한다.
TRDY# 표명이 스누핑시작인지 요구시작인지는 그 트랜잭션과 함께 시작했던 요구의 유형에 따라 결정된다. 기록 트랜잭션에 대하여, 제1 TRDY# 표명은 항상 기록데이타전송(요구시작 데이터 전송)을 요구하고 선택사항으로서 제2 TRDY# 표명은 임플리시트 라이트백 데이터 전송(스누핑 시작 데이터 전송)을 요구한다. 만약 스누핑된 트랜잭션이 전체 캐쉬라인을 기록하면, 스누핑 에이전트는 임플리시트 라이트백 데이터를 보낼수도 있고 보내지 않을수도 있다.
트랜잭션이 원래 지향되었던 에이전트(통상 DRAM을 제어하는 에이전트)는 주소지정된 메모리 에이전트라고 불리운다. 주소지정된 메모리 에이전트는 또한 임플리시트 라이트백동안 두 파이프라인된 트랜잭션간의 데이타 코히어런시를 유지할 일정한 책임을 진다. 스누핑 페이즈에서 HITM#을 액티브으로 관측하면서, 주소지정된 메모리 에이전트는 응답 에이전트로 남아있지만 그 응답을 임플리시트 라이트백 응답으로 변화시킨다. 만약 트랜잭션이 요구시작된 데이터전송(기록)을 포함하면, 그것은 기록데이타 전송이 시작가능하다는 것을 나타내는 TRDY# 표명에 대한 책임을 갖는다.
만약 스누핑된 트랜잭션이 요구시작된 데이터 전송이고 스누핑 시작된 데이터전송(예를들면 수정된 라인 라이트백)을 포함하면, 그 트랜잭션은 두 데이터 전송을 포함할 것이다. 요구시작된 TRDY#에 대한 TRDY#표명과 표명포기가 완료된후, 일단 수정 된 라인 라이트백을 수신할 프리 캐쉬라인 버퍼를 가지며, 메모리 에이전트는 스누핑 시작된 TRDY#를 표명한다. 액티브 TRDY#와 인액티브 DBSY#로부터 정확히 2클록 에서 메모리 에이전트는 그 에이전트의 임플리시트 라이트백 데이터 전송을 위하여 스누핑 에이전트로부터의 DBSY# 표명과 동기화된 임플리시트 라이트백 응답을 보낸다. 부가적으로 메모리 에이전트는 기록데이타를 라이트백 캐쉬라인과 병합하는 것에 대해 책임이 있다. 그 다음에 메모리 에이전트는 주 메모리를 최신 캐쉬라인 데이터로 갱신한다. 만약 스누핑된 트랜잭션이 전체 캐쉬라인을 기록한다면, 임플리시트 라이트백 데이터가 존재할수 있고 그러하지 않을 수도 있다. 만약 DBSY#가 액티브 TRDY# 와 인액티브 DBSY#로부터 정확히 2클록에서 표명되지 않으면, 어떠한 임플리시트 라이트백 데이터도 존재하지 않는다.
제11도는 두 순차적(즉, 백-투-백) 파이프라인된 트랜잭션이 동일한 데이터위치지정을 어디에 요구하는가 그리고 파이프라인이 유지되는 동안 어떻게 데이터 코히어런시를 유지하는가에 대한 상황을 도시하는 타이밍 다이어그램이다. 제1버스 에이전트(A1)는 논리적 로우 ADS#를 표명하므로써 클록사이클(T2)에서 제1무효라인 트랜잭션을 시작한다. A1 은 데이터 수정을 원하기 때문에 무효라인 트랜잭션은 시스템 버스상의 다른 모든 메모리 에이전트에게 이 데이터 위치를 무효상태에 두도록 신호한다. 3클록후에, 제2버스 에이전트(A2)는 ADS#상에 논리-로우에 나타나는 그 동일한 어드 레스를 요구한다. 본발명을 구체화하는 시스템버스의 바람직한 실시예에서 A1은 제2 요구를 관측하고, 제1트랜잭션에서 그것이 요구했던 동일한 데이터 위치지정에 대한 것임을 결정한다. A1은 제1트랜잭션의 스누핀 페이즈후에 데이터 위치지정에 대해 소유권을 갖고 있기 때문에, 제2트랜잭션의 스누핑 페이즈동안 HITM#을 표명하면서 적절한 스누핑 결과를 제공할 것이다.
제2 트랜잭션의 스누핑 페이즈동안 HITM# 표명은 A2 뿐만아니라 시스템 버스상의 모든 메모리 에이전트에서 A1 이 데이터 페이즈동안 필요한 데이타를 제공할 것을 알린다. 제1트랜잭션의 응답 페이즈는 클록사이클(T8)동안 제1트랜잭션의 완료를 나타내면서 발생한다. 클록사이클(T11)동안, A2 는 TRDY#표명에 의해서 어드레싱된 데이터를 수신할 준비가 되어 있음을 나타낸다. 두클록사이클후, A1은 RS[2:0]#, DBSY# 및 D[63:0]#을 표명하므로써 데이터 제공을 시작한다. 그래서 동일한 데이터를 요구하는 두 파이프라인된 트랜잰션을 통하여 데이타 코히어런시가 유지된다.
장기 대기(long latency) 트랜잭션 또한 본발명의 바람직한 실시예에서 지원한다. 요구된 데이터를 제공할 책임이 있지만 그 요구된 시간에 그렇게 할 수 없는 에이전트는 DEFER#신호가 적절하지 않다라고 나타내는 정보를 포함하는 요구를 제외하고는 스누핑 페이즈동안 DEFER# 신호를 표명할 수 있다. 이것이 장기 대기 트랜잭션의 일예이다. 만약 다른 어떤 에이전트도 HITM#을 표명하지 않았다면, 이것은 현재 트랜잭션의 응답페이즈동안 고유한 지연코드가 들어가도록 하게 할것이고, 응답 에이전트(DEFER#를 표명하는 에이전트)가 데이터를 제공할수 있고 신규동작을 시작할수 있다는 것을 결정할 때까지 데이터 전송이 연기되도록 하게할 것이다. 지연동작은 그것이 요구에이전트가 아직 가용하지 않은 데이터를 반복적으로 요구발송해야 하는 것을 방지하기 때문에 유용하다. 이것은 불필요한 버스 트랜잭션을 제거하고, 때로는 에이전트가 성공할 수 없는 재시도 트랜잭션을 발행하는 자신들의 우선권을 낭비해야하는 경쟁적 상황을 방지 할수 있다.
지연동작에서 하나의 에이전트는 분명히 메모리 에이전트이거나 I/O에이전트이다. 이 메모리 어드레싱된 에이전트가 지연응답과 응답하기 위하여 DEFER# 신호가 그 트랜잭션의 스누핑 페이즈동안 표명된다. 이러한 동작은 요구에이전트에게 그 트랜잭션이 지연될수도 있고 순서적 종료가 보장되지 않을수도 있다는 표시를 미리 한다. 결과적으로 요구에이전트는 지연동작이 성공적으로 완료될때까지 순차적 순서의존 트랜잭션의 발행을 중지하여야 한다. 주목할 것은 또 다른 캐슁 에이전트가 임플리시트 라이트백을 가지고 트랜잭션의 순서적 종료에 대한 책임을 넘겨받기 때문에 스누핑 페이즈에서 액티브 HITM# 은 액티브 DEFER# 신호를 오버라이(override) 한다는 것이다.
임플리시트 라이트백 트랜잭션과 함께 지연동작동안 메모리 오더링의 유지와 스누핑 책임의 정확한 지정은 멀티프로세서 시스템에서 버스 파이프라인을 유지하고 데이타 코히어런시를 유지하면서 지연동작이 성취되도록 보장하는 것에 대해 결정적으로 중요하다. 일단 DEFER#가 스누핑페이즈에서 어떤 트랜잭션을 위하여 표명되고, 만약 그 책임이 메모리 에이전트 또는 I/O 에이전트(HITM# 인액티브)에 남아있으면, 그 에이전트는 또한 요구에이전트 대신에 그 캐쉬라인에 후속 액세스를 위하여 그 캐쉬라인에 대한 책임을 진다. 주목할 것은 만약 어드레싱된 에이전트가 재시도 응답을 의도하면(HITM#을 인액티브로 가정함), DEFER# 은 또한 스누핑페이즈에서 표명된다. 일단 DEFER# 이 어떤 트랜잭션을 위하여 표명되고 HITM#이 인액티브이면, 메모리 또는 I/O 에이전트는 재시도 응답과 함께 그 트랜잭션을 취소하거나 응답페이즈동안 지연응답을 주거나 둘중 하나를 하도록 요구된다.
제12도는 판독 동작에 대한 대응 지연된 응답이 따르는 지연응답을 도시한다. T2에서, 요구에이전트는 이것이 판독라인요구를 발송할 때 ADS#를 표명하고 REQ[4:0]#을 구동시킨다. T5 와 T6에서 스누핑페이즈동안 그 요구가 주소지정된 에이전트(즉 응답에이전트)는 트랜잭션이 순서대로 완료될수 없는가를 결정하고, T6에서 DEFER#를 표명한다. HITM#이 T6에서 인액티브로 관측되기 때문에, 응답에이전트는 T8에서 RS[2:0]#상에 적절한 인코딩을 표명하므로써 "지연된" 응답을 돌려준다.
T10 이전에 응답에이전트는 지연된 요구에서 필요로 하는 데이터를 얻는다. T10에서 원래의 응압에이전트는 원래의 트랜잭션에서 디바이스식별신호(DID[7:0]#)로부터 래칭(latching)된 값을 어드레스로 사용하여, 지연된 응답트랜잭션을 발행한다. T13에서 응답에이전트는 리턴된 라인의 최종 캐쉬상태를 나타내도록 HIT# 신호상에 유효 레벨을 보낸다. 원래의 요구에이전트는 스누핑 책임을 진다. T15에서 원래의 요구에이전트는 정상 완료응답을 보내고 또한 데이타 페이즈를 시작한다.
T11에서 원래의 요구에이전트는 지연된 응답 트랜잭션을 관측한다. 이것은 그것의 아웃 스탠딩 트랜잭션 큐(queue)내에 원래의 요구와 함께 저장된 지연된 식별자(identifier)에 대해 DID[7:0]#을 매칭(matching)한다. 원래의 요구에이전트는 T14에서 그 리턴된 캐쉬라인의 최종상태를 관측한다. T16에서 이것은 트랜잭션 응답을 관측하고 제14도에 도시된 인-오더 큐("IOQ")와 아웃 스탠딩 트랜잭션 큐로부터 그 트랜잭션을 제거한다. 이것으로써 전체지연동작 시퀀스를 완료한다.
데이타 코히어런시를 유지하기 위하여, 스누핑 소유권은 지연동작중에 명확히 지정되어 있어야 한다. 캐쉬라인 트랜잭션의 스누핑페이즈에서 DEFER#를 표명한후 응답 에이전트는 제1도에 도시된 버스 클러스터내에서 그 캐쉬라인에 대한 스누핑 소유권을 받아들인다. 그래서 그 버스 클러스터내에서 동일한 캐쉬라인의 후속액세스에 대해 응답에이전트는 두 개의 잠재적 행동(즉, 데이터와 재시도)을 취할수 있다. 재시도 응답은 충돌하는 트랜잭션을 취소하기 위하여 응답페이즈동안 응답에이전트에 의하여 발행된다. 이러한 메카니즘은 에이전트가 기능적으로 정확한 동작을 할수 있도록 하는 수단을 제공한다. 선택사항으로 응답에이전트는 DEFER# 신호를 발송하고 버스클러스터내의 캐쉬라인 상태에 대한 완전한 책임을 지므로써,복수의 재시도 요구를 가지는 것을 피할수 있다. 응답에이전트는 제1요구에이전트에게 지연된 응답 트랜잭션을 발행한다. 동일 캐쉬라인의 그 다음 요구 에이전트에 지연된 응답을 돌려보내기전에, 만약 제2요구의 지연된 응답완료에 의해 요구된다면, 이것은 제1요구에이전트의 캐쉬로부터 그 캐쉬 라인을 명확히 무효화 시키기 위하여 무효 트랜잭션을 발행한다.
원래 요구의 지연된 응답완료이전에 상기 클러스터에 결합된 다른 시스템 버스로부터의 요구의 결과로서 응답에이전트는 또한 무효라인 트랜잭션을 시작할수 있다. 이 경우 버스로부터의 외향(out bound)트랜잭션에 앞서 그 시스템 버스로 부터의 내향(inbound)트랜잭션을 명령한다. 이 메카니즘은 복수의 버스 클러스터로부터 동일 캐쉬라인에 대한 충돌하는 액세스들간의 경쟁적 상황을 제거하는 메카니즘으로서 클러스터 브릿지(즉 제1도의 클러스터 브릿지)에 의해 사용될수 있고 복수의 버스 클러스터가 연결되도록 한다.
제13도는 응답에이전트가 제1무효라인 요구에 지연된 응답을 줄 때, 응답에이전트가 획득한 스누핑 소유권의 효과를 도시한다. 지연된 응답이 없을 때, 스누핑 소유권은 요구에이전트에게 즉시 이전된다. T2에서 요구에이전트(1)는 제1무효라인요구를 발송하기 위하여 REQ[4:0]#을 보내고 ADS#를 표명한다. T5에서, 다른 요구에이전트(2)는 동일 캐쉬라인에 제2무효라인요구를 발송하기 위하여 REQ[4:0]#을 보내고 ADS#를 표명한다.
메모리 에이전트는 제1무효라인요구에게 지연된 응답이 주어질 것을 나타내기 위하여 응답페이즈에서 지연된 응답을 그리고 스누핑 페이즈에서 DEFER#를 표명한다. 이것은 또한 제2 무효라인요구를 관측하고, 그 요구된 어드레스가 DEFER# 표명되었던 캐쉬라인과 동일하다는 것을 알려준다. 충돌하는 어드레스를 알려주면서, 이것은 제2응답이 재시도될 것이라는 것을 나타내기 위하여 응답에이전트에서 재시도 응답을 그리고 스누핑페이즈에서 DEFER#를 표명한다. 제2 요구를 재발송하기 위하여 다른 요구에이전트가 하는 모든 연속적인 시도에 대해 메모리 에이전트에 의하여 재시도 응답이 주어진다.
T6에서 요구에이전트는 DEFER# 가 액티브임을 관측하고 그 트랜잭션이 순서적완료를 위한 처리로 되고 있지 않음을 알린다. 이것은 그 캐쉬라인 소유권을 받아들이지 않는다. 결국 이것은 제2 트랜잭션의 스누핑페이즈 T8에서 HITM#을 표명하지 않는다. T9에서 다른 요구에 이전트는 DEFER#가 액티브임을 관측하고, 그 트랜잭션이 순서적 완료를 위한 처리로 되고 있지 않음을 알리고, 그 캐쉬라인에 대해 무효상태로 남는다.
메모리 에이전트가 버스클리스터내에서 그 캐쉬라인 소유권을 받아들인 후, 그것은 T14에서 지연된 응답 트랜잭션(2d)을 시작한다. T15에서 다른 요구에이전트는 요구(2r)를 재발송한다. 이때 메모리 에이전트는 트랜잭션(2r)에 대한 어떠한 재시도 응답도 발생시키지 않는다. 요구(2r)를 관측하면서, T17에서 캐쉬라인 소유권을 획득했던 요구에이전트는 제12도와 유사하게 그것을 완료한다.
제14도는 파이프라인된 버스에 걸합된 에이전트 각각에 구현된 "인-오더 큐" 의 블록 다이어그램이다. 시스템 버스상에서 복수의 아웃스텐딩 트랜잭션을 지원하기 위하여, 각각의 에이전트는 어떤 최소한의 정보 트랙을 유지하여야 하는데, 이것은 어떤 특정 순간에 시스템버스상에 위치하는 정보가 식별될수 있고 그 트랜잭션에 관련된 에이전트들이 알려질수 있도록 하기 위함이다. 인-오더 큐(IOQ: 100)가 이러한 정보를 저장한다. IOQ(100)는 복수의 트랜잭션 레지스터를 포함하는데; 예를들면 8개의 트랜잭션 레지스터(101-108), 2개 큐 포인터 레지스터(110과 112), 스누핑 포인터 레지스터(113) 및 '빈(empty)" 레지스터(114)이다. IOQ(100)의 상단부터 하단에 이르는 화살표(115)는 IOQ(100)이 순환적임을 나타낸다. 그래서 제1큐 포인터(즉, 요구) 레지스터(110)가 트랜잭션 레지스터(108)를 포인팅하고 그 요구레지스터(110)가 증가될 때, 이것은 트랜잭션 레지스터(101)을 포인팅할 것이다.
비록 8개의 트랜잭션 레지스터가 바람직한 실시예에서 사용되지만, 그 이상 또는 그 이하의 레지스터도 사용될수 있다. 이러한 트랜잭션 레지스터(101-108)는 다음과 같은 필드를 포함한다. 즉, 그것이 데이터 전송을 지원하고 있다는 것을 나타내는 데이터 전송필드, 그 트랜잭션을 위한 캐슁 에이전트의 HITM# 표명을 나타내는 임플리시트 라이트백 필드, 그것의 판독 또는 기록 트랜잭션을 나타내는 판독/기록 필드등이 있다.
버스 트랜잭션이 시스템 버스상에 발행될 때, 요구레지스터(110)에 의해 포인팅된 트랜잭션 레지스터에 들어가고 그 다음에 요구레지스터(110)가 증가된다. 어떤 트랜잭션에 대한 응답페이즈가 수신된후, IOQ(100)상단의 트랜잭션이 제거되고 제2큐 포인터 "응답" 레지스터(112)가 증가된다. 응답레지스터(112)는 항상 요구레지스터(110)를 뒤따른다. 부가적으로 스누핑 포인터 레지스터(113)는 현재 스누핑되고 있는 트랜잭션을 포인팅한다.
두 큐 포인터 레지스터(110과 112)가 동일한 트랜잭션 레지스터를 포인팅하고 빈 레지스터(114)가 인액티브일 때, IOQ(100)은 풀 상태이다. 하지만 만약 빈 레지스터(114)가 액티브이면, IOQ(100)은 빈 상태이다. 만약 어떤 트랜잭션도 아웃스탠딩 상태가 아니라면, 빈 레지스터(114)는 세팅된다. 패리티 에러를 방지하기 위하여 트랜잭션은 그들이 발송된 동일한 순서로 그들의 응답과 데이터를 수신하고, 그래서 IOQ(100)상단의 트랜잭션 각각은 그 다음에 응답 및 데이터 페이즈로 들어가고, 그 트랜잭션 이전의 최후 페이즈는 완료된다.
각각의 에이전트가 그 IOQ내에서 다음의 정보를 최소한도로 저장하는 것이 바람직하다. 즉 아웃스탠딩 트랜잭션의 수, 다음에 스누핑될 트랜잭션이 무엇인가, 다음에 응답을 수신할 트랜잭션이 무엇인가 및 그 트랜잭션이 이 에이전트로부터 또는 이 에이전트에게 발송되었는가 등이다. 에이전트-특정된 다른 버스 정보는 추적될수도 있지만, 그렇다고 모든 에이전트가 이러한 정보를 추적할 필요는 없다. 예를들면, 요구에이전트는 다음 사항을 추적할수도 있다. 즉, 이 에이전트가 얼마나 많은 트랜잭션을 더 발행할수 있을까(주의: 바람직한 실시예에서 마이크로 프로세서는 4개의 아웃 스탠딩 트랜잭션을 가질수 있다), 이 트랜잭션이 판독인가 또는 기록인가, 이 버스 에이전트가 데이터 제공을 필요로 하는가 또는 수신을 필요로 하는가 등이다. 응답에이전트는 다음 사항을 트랙할수도 있다. 즉, 이 에어전트가 IOQ 상단의 트랜잭션의 응답을 소유하는가, 이 트랜잭션이 임플리시트 라이트백 데이터를 포함하는가 및 이 에이전트가 라이트백 데이터를 받아들여야 하는가, 트랜잭션이 판독인가, 이 에이전트가 데이터 전송을 소유하는가, 만약 트랜잭션이 기록이라면 이 에이전트가 데이터를 받아 들여야 하는가 및 버퍼 자원가용성, 그래서 필요하다면 그 에이전트는 그 이상의 트랜잭션을 중지시킬수 있다. 스누핑 에이전트는 다음 사항을 추적할수도 있다. 즉, 트랜잭션이 스누핑될 필요가 있는지 여부, 스누핑페이즈가 연장된 필요가 있는지 여부, 이 트랜잭션이 이 에이전트에 의해 공급될 임플리시트 라이트백 데이터를 포함하는가 얼마나 많은 요구가 큐에 있는가 등이다. 부가적으로, 지연될 수 있는 트랜잭션을 갖는 에이전트는 지연된 트랜잭션과 그 에이전트의 ID 및 버퍼 자원의 가용성을 추적할수도 있다. 바람직한 실시예에서, 이러한 트랜잭션 정보의 유형은 복수의 큐를 구현하거나 IOQ를 모두 포함하는 하나의 큐를 구현하므로써 추적될 수도 있다.
캐쉬 코히어런시를 위협하는 액세스 충돌이 발생가능한 어떤 부가적인 상황이 있다. 우선 이것은 출력트랜잭션이 현재의 버스 트랜잭션과 동일한 어드레스를 가질 때 발생한다. 이것을 좀더 이해하기 위해, 본발명의 바람직한 실시예에서 사용되며 출력 트랜잭션이 저장되는 버퍼구조가 개념적으로 설명되고 그 다음에 이러한 충돌을 해결하기 위해 사용되는 접근방법이 설명된다.
제15도는 본발명의 일 실시예에서 사용되는 프로세서 버퍼 구조를 도시한다. 아비트레이션과 응답시간이 짧기 때문에 버스상의 대부분의 에이전트는 그러한 프로세서 버퍼 구조를 유지해야 한다. 프로세서 버퍼구조의 실제적인 실시가 제15도에 도시한 것과 동일하게 되지 않을 수도 있지만, 이러한 실시는 이 프로세서 버퍼 구조의 사상과 기능을 반영하고 있다고 생각된다. 아웃 스탠딩 요구버퍼는 로칼버스로 출력되는 요구를 포함하지만 그 트랜잭션은 완료되지 앓는다. 버퍼내의 모든요구는 적절한 라인 상태를 보장하기 위하여 스누핑될 필요가 있다. 아웃 스탠딩 버퍼는 시스템 버스상으로 출력 예정된 요구들을 홀딩한다. 만약 또 다른 에이전트로부터 현재 버스 트랜잭션의 어드레스가 버퍼내의 임의의 요구와 매칭하면 충돌문제 해결하기 위하여 하기의 동작들이 취해질 필요가 있다.
현재의 버스요구의 어드레스가 출력버퍼내의 요구중의 하나의 어드레스와 매칭할 때, 동일 버스 클러스터내에 충돌이 발생한다. 관련된 모든 프로세서가 동일 버스상에 주재하므로, 접근순서가 확립되어야 한다. 특히, 만약 출력요구가 판독이거나 부분 라인 기록이면 어떤 특별한 동작도 요구되지 않으며, 이것은 원거리 에이전트의 요구가 로한 에이전트의 판독/기록 미스 또는 부분 기록요구에 영향을 미치지 않기 때문이다.
만약 출력 요구가 판독이 없는 무효라인 트랜잭션이고 그리고 만약 또다른 에이전트로부터와 현재 버스요구가 무효라인이거나 부분 기록요구이거나 기록라인이면, 출력라인 무효요구는 판독무효라인 요구로 전환될 필요가 있다. 이것은 또다른 에이전트로부터의 현재 요구가 로칼 캐쉬내에 주재하는 현재 라인을 무효화 하기 때문이다. 만약 또 다른 에이전트로부터 현재 버스 요구가 판독-라인이거나 판독 부분라인이면, 어떤 특별한 동작도 필요하지 않으며, 이것은 원거리 에이전트의 요구가 로칼캐쉬라인의 제거를 일으키지 않기 때문이다.
만약 출력요구가 라이트백 라인 트랜잭션이고 현재 버스요구가 판독-라인이거나 판독-부분 라인이거나 판독 무효 라인이거나 무효라인이거나 기록 부분 라인이거나 BLR판독라인 트랜잭션이면, 라이트백은 임플리시트 라이트백으로 전환되고출력요구는 제거되거나 또는 만약 현재 버스요구가 기록-라인 트랜잭션이면, 최적적으로 임플리시트 라이트백 데이터 전송은 현재 버스 요구가 모든 라인을 오버라이트하기 때문에 취소된다.
지연된 트랜잭션 뿐만아니라 멀티프로세서 준비 데이타 코히어런시를 공급하는 파이프라인된 버스를 제공하는 것 외에도, 상기 버스 시스템은 프로세서 오더링을 허락한다. 프로세서 오더링은 각각의 마이크로 프로세서가 순서의존 동작에 대한 모든 요구를 연기시키는 기술로써 이룩된다. 한편 이것은 그들이 의존하는 동작이 관측되고 그 동작이 그들이 취소될수 있는 장소(즉, 스누핑페이즈)로 갈때까지 그렇다. 의존하는 동작은 연산될 필요가 있는 다른 데이터에 영향을 미치는 동작이다. 이것은 파이프라인 시스템에서 문제점이 될 수도 있다. 왜냐하면 하나의 프로세서가 두 개의 순차적(즉 백투백)명령을 요구할수도 있고 그래서 그중 하나가 연속된 페이즈동안 지연 또는 재시도 중의 하나에 의하여 취소될 수도 있기 때문이다. 이것은 바람직한 실시예에서 사용된 마이크로 프로세서가 취소 가능성이 큰 위험한 명령을 한 후에 일어날 가능성이 있는 이벤트이다. 또 다른 에이전트가 후속 트랜잭션을 발행한후 필요 데이타를 확보할수 없는 것을 방지하기 위하여, 백투백 기록은 스누핑 페이즈가 도달되고 어떤 DEFER#도 표명되지 않을 때까지 대기해야 한다. 그러므로 백투백기록은 다른 트랜잭션에 대해서는 매3클록사이클마다 표명되는 것과는 반대로 매6 클록사이클에서만 표명가능하다.
멀티프로세서가 갖춰지고 장기 대기 트랜잭션이 허락되는 고도로 파이프라인된 버스 시스템을 제공하기 위한 방법과 수단이 설명되었다. 본 발명의 다양한 실시예에 개시된 것과 다른것도 가능하다는 것은 당해 기술분야의 전문가에게는 분명할 것이다. 일반적으로 여기서 설명한 실시예는 본 발명을 단지 예시한 것이고 본발명의 범위를 제한하는 것으로 다루어져서는 안된다.
본발명은 다음의 청구범위에 의해 정해져야 한다.

Claims (27)

  1. 선택된 프로토콜에 따라 동작하는 캐쉬를 포함하는 적어도 하나의 마이크로 프로세서를 가진 제2복수의 마이크로프로세서를 포함하는 복수의 에이전트와 결합된 버스를 포함하는 컴퓨터 시스템에서, 상기 복수의 에이전트중의 적어도 하나에 의하여 개시되고 데이터 전송시에 복수의 다중-페이즈 버스 트랜잭션을 지원하는 방법에 있어서,
    (i) 상기 복수의 다중-페이즈 버스 트랜잭션의 각 스누핑페이즈동안 캐쉬 스누핑을 수행하고, (ii) 만약 상기 적어도 하나의 마이크로 프로세서의 상기 캐쉬가 상기 데이터를 수정된 상태로 포함하면 그것의 대응 스누핑페이즈에 즉시 따르는 데이터 페이즈 동안 상기 데이터를 제공하여, 상기 적어도 하나의 마이크로 프로세서에 의해 상기 데이터 코히어런시를 유지하는 단계; 및
    만약 (i) 상기 복수의 다중-페이즈 버스 트랜잭션중의 적어도 하나에 대한 정보를 제공하도록 주소지정된 상기 복수의 에이전트중 하나의 에이전트가 적시에 상기 정보를 제공할 수 없고, (ii) 상기 적어도 하나의 마이크로 프로세서의 상기 캐쉬가 상기 정보를 상기 수정된 상태로 포함하지 않으면, 상기 복수의 다중-페이즈 버스 트랜잭션중의 적어도 하나를 지연하는 단계;를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 데이터 페이즈동안 상기 데이터를 제공하기 전에, 상기 유지하는 단계는,
    만약 상기 적어도 하나의 마이크로 프로세서가 상기 캐쉬가 상기 데이터를 상기 수정된 상태로 포함하는 것을 검출하면, 상기 스누핑 페이즈동안 상기 버스의 제1 제어라인을 표명하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서, 상기 제1제어라인표명후, 상기 데이터페이즈동안 상기 데이터를 제공하기 전에 상기 유지하는 단계는,
    만약 상기 적어도 하나의 마이크로 프로세서가 상기 캐쉬가 상기 데이터를 공유 상태 및 대안으로서 독점 상태로 포함하는 것을 검출한다면, 상기 스누핑페이즈 동안 상기 버스의 제2제어라인을 표명하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서, 상기 지연하는 단계는,
    상기 복수의 다중-페이즈 버스 트랜잭션중 상기 적어도 하나가 지연될 것이라는 지시를 하는 지연된 신호를 상기 스누핑 페이즈동안 상기 에이전트가 발행하는 단계와; 지연된 식별자를 응답페이즈동안 상기 에이전트가 저장하는 단계를 더 포함하며, 상기 지연된 식별자는 대응 지연된 응답 트랜잭션에 대한 요구 어드레스로서 이용되는 것을 특징으로 하는 방법.
  5. 제4항에 있어서, 상기 지연하는 단계는,
    상기 복수의 다중-페이즈 버스 트랜잭션중 상기 적어도 하나를 완료하기 위하여 상기 대응 지연된 응답 트랜잭션을 시작하도록 상기 에이전트가 상기 정보를 적시에 제공한 후에 상기 에이전트에 의해 저장된 상기 지연된 식별자를 발행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서, 상기 복수의 다중-페이즈 버스 트랜잭션중 하나가 지연될 수 없거나 취소될 수 없을때까지, 상기 제2 복수의 마이크로 프로세서에 상기 복수의 다중-페이즈 버스 트랜잭션중의 하나에 의존하는 다중-페이즈 버스 트랜잭션 요구를 연기하도록 요청함으로써 데이터에 대한 상기 복수의 다중-페이즈 버스 트랜잭션의 프로세서 오더링을 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 복수의 마이크로 프로세서와 메모리 디바이스는 파이프라인된 버스 구조를 이용하는 시스템 버스에 결합되고, 선택된 프로토콜에 따라 동작하는 캐쉬를 포함하는 적어도 하나의 마이크로 프로세서를 가진 상기 복수의 마이크로 프로세서와 상기 메모리 디바이스를 포함하는 복수의 에이전트를 포함하는 컴퓨터 시스템에서 데이터 코히어런시를 유지하기 위한 방법에 있어서,
    요구페이즈동안 상기 복수의 마이크로 프로세서중의 하나에 의해서 상기 메모리 디바이스의 소정의 어드레스 위치에 저장된 데이터에 대한 트랜잭션 요구를 발행하는 단계;
    스누핑페이즈동안 상기 적어도 하나의 마이크로 프로세서에 의해서 상기 소정의 어드레스 위치에 기초한 스누핑을 수행하는 단계; 및
    상기 스누핑 페이즈동안 상기 시스템 버스에 상기 스누핑의 결과를 제공하는 단계;를 포함하고,
    상기 적어도 하나의 마이크로 프로세서는, 만약 상기 적어도 하나의 마이크로 프로세서의 상기 캐쉬가 상기 데이터를 수정된 상태로 포함한다면 제1제어신호를 표명하고, 상기 트랜잭션 요구를 지원하기 위하여 데이터 페이즈동안 상기 데이터를 제공하는 책임을 지는 것을 특징으로 하는 방법.
  8. 제7항에 있어서, 상기 수정된 상태에 있는 상기 데이터가 상기 캐쉬내에 포함되어 있다는 것을 상기 적어도 하나의 마이크로 프로세서가 결정하면, 상기 데이터 페이즈 동안 상기 적어도 하나의 마이크로 프로세서로부터 상기 데이터를 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서, 상기 데이터를 제공하는 단계는,
    만약 상기 트랜잭션 요구가 판독이라면 상기 데이터를 수신할 준비를 지시하는 수신 에이전트로부터 제1신호를 수신한 후 상기 적어도 하나의 마이크로 프로세서로부터 상기 데이터를 제공하는 단계; 및
    만약 상기 트랜잭션 요구가 기록이라면, 상기 데이터를 수신할 준비를 지시하는 상기 수신 에이전트로부터 제2신호를 수신한 후 상기 적어도 하나의 마이크로 프로세서로부터 상기 데이터를 제공하는 단계를 더 포함하는 것을 특징으로 하는방법.
  10. 제7항에 있어서, 상기 결과를 제공하는 단계는,
    만약 상기 데이터가 상기 캐쉬내에 상기 수정된 상태로 포함되어 있지 않으면, 상기 메모리 디바이스가 상기 데이터를 제공하는 책임을 지게하도록 상기 적어도 하나의 마이크로 프로세서에 의해 상기 제1제어신호를 표명 포기하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 제10항에 있어서, 상기 데이터 페이즈동안 상기 메모리 디바이스로부터 상기 데이터를 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 선택된 프로토콜에 따라 동작하는 캐쉬를 포함하는 적어도 하나의 마이크로 프로세서를 가진 제2복수의 마이크로 프로세서를 포함하는 복수의 에이전트에 결합된 버스를 포함하는 컴퓨터 시스템에서 상기 복수의 에이전트중의 적어도 하나에 의해 개시되고 데이터 전송시에 복수의 다중-페이즈 버스 트랜잭션을 지원하는 방법에 있어서,
    만약 (i) 상기 복수의 다중-페이즈 버스 트랜잭션중의 적어도 하나에 대한 정보를 제공하도록 주소지정된 상기 복수의 에이전트중 하나의 에이전트가 적시에 상기 정보를 제공할 수 없고, (ii) 상기 적어도 하나의 마이크로 프로세서의 상기 캐쉬가 상기 정보를 수정된 상태로 저장하고 있지 않으면, 상기 복수의 다중-페이즈 버스 트랜잭션중의 적어도 하나를 지연하는 단계; 및
    상기 복수의 다중-페이즈 버스 트랜잭션중 하나가 지연될수 없거나 취소될수 없을때까지 상기 복수의 다중-페이즈 버스 트랜잭션중 하나에 의존하는 다중-페이즈 버스 트랜잭션 요구를 연기하기 위하여 상기 제2복수의 마이크로 프로세서를 요구함으로써 상기 복수의 다중 페이즈 버스 트랜잭션의 프로세서 오더링을 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  13. 제12항에 있어서, (i) 상기 복수의 다중-페이즈 버스 트랜잭션의 각 스누핑페이즈동안 캐쉬스누핑을 수행하고, (ii) 만약 상기 적어도 하나의 마이크로 프로세서의 상기 캐쉬가 상기 데이터를 상기 수정된 상태로 포함하면 그것의 대응 스누핑 페이즈에 즉시 따르는 데이터 페이즈동안 상기 데이터를 제공하는 상기 적어도 하나의 마이크로 프로세서에 의해 상기 데이터의 코히어런시를 유지하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  14. 적어도 제1 및 제2의 다중-페이즈 버스 트랜잭션을 지원하도록 데이터를 전송하는 버스; 및
    (i) 상기 데이터를 저장하기 위한 메모리 디바이스와 (ii) 상기 메모리 디바이스로부터의 데이터를 임시로 포함하는 캐쉬 메모리를 가진 적어도 하나의 마이크로 프로세서를 포함하는 복수의 마이크로 프로세서를 포함하는 복수의 에이전트;를 포함하고,
    상기 복수의 에이전트는 상기 버스의 소유에 대해 아비트레이팅하고, 상기 버스상에서 현재 다른 페이즈에 있는 상기 제1 다중-페이즈 버스 트랜잭션과 동시에 지원되고 상기 제2다중-페이즈 버스 트랜잭션 이전에 요구된 상기 버스상에 상기 제2다중-페이즈 버스 트랜잭션을 위치시키도록 상기 복수의 에이전트중 하나가 버스요구를 발행하는 것을 특징으로 하는 컴퓨터 시스템.
  15. 제14항에 있어서, 상기 복수의 버스 에이전트 각각은 상기 버스에 결합된 인-오더큐를 포함하며, 상기 인-오더큐는 상기 적어도 제1 및 제2다중-페이즈 버스 트랜잭션을 트랙하는데 필요한 정보를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  16. 제15항에 있어서, 상기 인-오더큐는,
    상기 적어도 제1 및 제2 다중-페이즈 버스 트랜지션에 관한 필수 정보를 저장하는데 사용되는 복수의 트랜잭션 레지스터를 포함하는 순환버퍼;
    현재의 요구페이즈에서 상기 적어도 제1 및 제2 다중-페이즈 버스 트랜잭션중 하나에 관한 정보를 어느 트랜잭션션 레지스터가 포함하는지를 모니터링 하는 제1 트랜잭션 포인터 레지스터,
    현재의 응답페이즈에서 상기 적어도 제1 및 제2 다중-페이즈 버스 트랜잭션중 하나에 관한 정보를 어느 트랜잭션 레지스터가 저장하는지를 모니터링하는 제2 트랜잭션 포인터 레지스터; 및
    상기 순환 버퍼가 빈상태인지 및 대안으로 상기 순환 버퍼가 풀상태인지를 지시하는 빈 레지스터;를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  17. 제16항에 있어서, 상기 인-오더 큐는 현재의 스누핑 페이즈애서 상기 적어도 제1 및 제2 다중-페이즈 버스 트랜잭션중 하나에 관한 정보를 어느 트랜잭션 레지스터가 포함하는지를 모니터링하는 제3트랜잭션 포인터 레지스터를 더 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  18. 적어도 제1 및 제2 다중-페이즈 버스 트랜잭션을 지원하도록 데이터를 전송하는 버스 수단; 및
    상기 적어도 제1 및 제2 다중-페이즈 버스 트랜잭션을 위한 버스 요구를 시작하는 에이전트 수단;을 포함하고,
    상기 에이전트 수단은 상기 버스의 소유에 대해 아비트레이팅하고, 상기 에이전트 수단중 하나는 현재의 다른 페이즈에서 적어도 상기 제1 다중-페이즈 버스 트랜잭션과 동시에 상기 버스상에서 지원되고 상기 제2 다중-페이즈 버스 트랜잭션 이전에 요구되도록 상기 버스 상에 상기 제2다중-페이즈 버스 트랜잭션을 위치시키는 버스요구를 발행하는 것을 특징으로 하는 컴퓨터 시스템.
  19. 캐쉬; 및
    파이프라인 구조로 전송된 복수의 다중 페이즈 트랜잭션을 트랙하고, 상기트랜잭션을 지연시키기 위하여 상기 복수의 다중 페이즈 트랜잭션중의 하나의 트랜잭션에 대한 정보와 관련하여 상기 버스 에이전트에 의해 수신된 지연 신호와 상기 스누핑 페이즈동안 표명되었을 때 적어도 하나이상의 버스 사이클동안 상기 캐쉬를 스누핑하도록 스누핑 페이즈를 연장하는 복수의 제어 신호를 포함하는 복수의 신호를 사용하여 통신하는 로직;을 포함하는 것을 특징으로 하는 버스 에이전트.
  20. 제 19 항에 있어서, 상기 복수의 제어 신호는 HIT# 신호와 HITM# 신호를 포함하는 것을 특징으로 하는 버스 에이전트.
  21. 제 20 항에 있어서, 상기 HITM# 신호가 상기 스누핑 페이즈 동안 표명되면, 임플리시트 라이트백 트랜잭션을 수행하는 로직을 더 포함하는 것을 특징으로 하는 버스 에이전트.
  22. 제 21 항에 있어서, 응답 페이즈동안 지연된 식별자를 저장하고, 상기 지연된 식별자를 지연된 응답 트랜잭션에 대한 요구 어드레스로 사용하는 로직을 더 포함하는 것을 특징으로 하는 버스 에이전트.
  23. 제 19 항에 있어서, 상기 복수의 다중 페이즈 버스 트랜잭션중의 상기 적어도 하나의 트랜잭션이 지연될 수 없거나 취소될 수 없을때까지, 상기 버스 에이전트에 상기 복수의 다중 페이즈 버스 트랜잭션중의 하나에 의존하는 다중 페이즈 버스 트랜잭션 요구를 연기하도록 요청함으로써 상기 복수의 다중 페이즈 버스 트랜잭션의 프로세서 오더링을 유지하는 로직을 더 포함하는 것을 특징으로 하는 버스 에이전트.
  24. 제 23 항에 있어서, 오더 독립 트랜잭션을 계속 요구하는 로직을 더 포함하는 것을 특징으로 하는 버스 에이전트.
  25. 제 19 항에 있어서, 상기 지연 신호는 상기 트랜잭션을 지연시키는 역할을 하고, 상기 지연 신호와 그 지연 신호와 함께 전송된 상기 트랜잭션에 대한 상기 정보는 상기 트랜잭션을 완료하여, 상기 트랜잭션에 의해 영향받은 캐쉬 라인에 대한 코히어런시 유지 책임을 다른 버스 에이전트로 전가하는 것을 특징으로 하는 버스 에이전트.
  26. 제 19 항에 있어서, 상기 트랜잭션에 대한 상기 정보는 그 트랜잭션이 지연된다는 것을 지시하는 복수의 응답 버스 신호를 포함하는 것을 특징으로 하는 버스 에이전트.
  27. 제 26 항에 있어서, 상기 지연 신호는 상기 스누핑 페이즈 동안 수신되고, 상기 복수의 응답 버스 신호는 응답 페이즈 동안 수신되는 것을 특징으로 하는 버스 에이전트.
KR1019960704811A 1994-03-01 1995-03-01 고도로파이프라인된버스구조 KR100360064B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US20638294A 1994-03-01 1994-03-01
US39096995A 1995-02-21 1995-02-21
US08/206,382 1995-02-21
US08/390,969 1995-02-21

Publications (1)

Publication Number Publication Date
KR100360064B1 true KR100360064B1 (ko) 2003-03-10

Family

ID=26901290

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960704811A KR100360064B1 (ko) 1994-03-01 1995-03-01 고도로파이프라인된버스구조

Country Status (8)

Country Link
US (1) US5796977A (ko)
EP (2) EP0748481B1 (ko)
JP (1) JP3660679B2 (ko)
KR (1) KR100360064B1 (ko)
AU (1) AU1973595A (ko)
BR (1) BR9506997A (ko)
DE (1) DE69531933T2 (ko)
WO (1) WO1995024678A2 (ko)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615343A (en) 1993-06-30 1997-03-25 Intel Corporation Method and apparatus for performing deferred transactions
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
US5673413A (en) * 1995-12-15 1997-09-30 International Business Machines Corporation Method and apparatus for coherency reporting in a multiprocessing system
EP0832459B1 (en) * 1996-03-15 2005-06-29 Sun Microsystems, Inc. Split transaction snooping bus and method of arbitration
US5983326A (en) * 1996-07-01 1999-11-09 Sun Microsystems, Inc. Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
KR100454652B1 (ko) * 1997-04-11 2005-01-13 엘지전자 주식회사 하이파이버스시스템의주기억장치
US6260117B1 (en) * 1997-09-18 2001-07-10 International Business Machines Corporation Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
US6070231A (en) * 1997-12-02 2000-05-30 Intel Corporation Method and apparatus for processing memory requests that require coherency transactions
US6029225A (en) * 1997-12-16 2000-02-22 Hewlett-Packard Company Cache bank conflict avoidance and cache collision avoidance
US6292906B1 (en) * 1997-12-17 2001-09-18 Intel Corporation Method and apparatus for detecting and compensating for certain snoop errors in a system with multiple agents having cache memories
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
US6138218A (en) * 1998-02-17 2000-10-24 International Business Machines Corporation Forward progress on retried snoop hits by altering the coherency state of a local cache
US6330591B1 (en) * 1998-03-09 2001-12-11 Lsi Logic Corporation High speed serial line transceivers integrated into a cache controller to support coherent memory transactions in a loosely coupled network
US6269360B1 (en) * 1998-04-24 2001-07-31 International Business Machines Corporation Optimization of ordered stores on a pipelined bus via self-initiated retry
US6546429B1 (en) * 1998-09-21 2003-04-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry
US6216190B1 (en) * 1998-09-30 2001-04-10 Compaq Computer Corporation System and method for optimally deferring or retrying a cycle upon a processor bus that is destined for a peripheral bus
US7555603B1 (en) * 1998-12-16 2009-06-30 Intel Corporation Transaction manager and cache for processing agent
US6732208B1 (en) 1999-02-25 2004-05-04 Mips Technologies, Inc. Low latency system bus interface for multi-master processing environments
US6397304B1 (en) * 1999-06-16 2002-05-28 Intel Corporation Method and apparatus for improving system performance in multiprocessor systems
US6681283B1 (en) 1999-08-12 2004-01-20 Mips Technologies, Inc. Coherent data apparatus for an on-chip split transaction system bus
US6490642B1 (en) 1999-08-12 2002-12-03 Mips Technologies, Inc. Locked read/write on separate address/data bus using write barrier
US6393500B1 (en) 1999-08-12 2002-05-21 Mips Technologies, Inc. Burst-configurable data bus
US6493776B1 (en) 1999-08-12 2002-12-10 Mips Technologies, Inc. Scalable on-chip system bus
US6604159B1 (en) 1999-08-12 2003-08-05 Mips Technologies, Inc. Data release to reduce latency in on-chip system bus
US6519685B1 (en) 1999-12-22 2003-02-11 Intel Corporation Cache states for multiprocessor cache coherency protocols
US6681320B1 (en) 1999-12-29 2004-01-20 Intel Corporation Causality-based memory ordering in a multiprocessing environment
US6609171B1 (en) 1999-12-29 2003-08-19 Intel Corporation Quad pumped bus architecture and protocol
US6438737B1 (en) 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US6745297B2 (en) * 2000-10-06 2004-06-01 Broadcom Corporation Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent
US6601145B2 (en) 2000-12-27 2003-07-29 International Business Machines Corporation Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers that uses dynamic hardware/software controls
US6546468B2 (en) * 2000-12-27 2003-04-08 International Business Machines Corporation Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers performing directory update
US6742160B2 (en) 2001-02-14 2004-05-25 Intel Corporation Checkerboard parity techniques for a multi-pumped bus
US6546470B1 (en) 2001-03-12 2003-04-08 International Business Machines Corporation Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers with banked directory implementation
US6546469B2 (en) 2001-03-12 2003-04-08 International Business Machines Corporation Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers
US7076627B2 (en) * 2001-06-29 2006-07-11 Intel Corporation Memory control for multiple read requests
US7114038B2 (en) * 2001-12-28 2006-09-26 Intel Corporation Method and apparatus for communicating between integrated circuits in a low power mode
US7085889B2 (en) 2002-03-22 2006-08-01 Intel Corporation Use of a context identifier in a cache memory
US7343395B2 (en) * 2002-03-29 2008-03-11 Intel Corporation Facilitating resource access using prioritized multicast responses to a discovery request
EP1376373B1 (en) * 2002-06-20 2006-05-31 Infineon Technologies AG Arrangement having a first device and a second device connected via a cross bar switch
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US6986010B2 (en) * 2002-12-13 2006-01-10 Intel Corporation Cache lock mechanism with speculative allocation
US7043656B2 (en) * 2003-01-28 2006-05-09 Hewlett-Packard Development Company, L.P. Methods and apparatus for extending a phase on an interconnect
US20040226011A1 (en) * 2003-05-08 2004-11-11 International Business Machines Corporation Multi-threaded microprocessor with queue flushing
US7747733B2 (en) 2004-10-25 2010-06-29 Electro Industries/Gauge Tech Power meter having multiple ethernet ports
US20060143384A1 (en) * 2004-12-27 2006-06-29 Hughes Christopher J System and method for non-uniform cache in a multi-core processor
US7788240B2 (en) * 2004-12-29 2010-08-31 Sap Ag Hash mapping with secondary table having linear probing
US7360008B2 (en) * 2004-12-30 2008-04-15 Intel Corporation Enforcing global ordering through a caching bridge in a multicore multiprocessor system
US7886086B2 (en) * 2005-02-03 2011-02-08 International Business Machines Corporation Method and apparatus for restricting input/output device peer-to-peer operations in a data processing system to improve reliability, availability, and serviceability
US8490107B2 (en) 2011-08-08 2013-07-16 Arm Limited Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels
US20170063566A1 (en) * 2011-10-04 2017-03-02 Electro Industries/Gauge Tech Internet of things (iot) intelligent electronic devices, systems and methods
US10771532B2 (en) 2011-10-04 2020-09-08 Electro Industries/Gauge Tech Intelligent electronic devices, systems and methods for communicating messages over a network
US10862784B2 (en) 2011-10-04 2020-12-08 Electro Industries/Gauge Tech Systems and methods for processing meter information in a network of intelligent electronic devices
US11816465B2 (en) 2013-03-15 2023-11-14 Ei Electronics Llc Devices, systems and methods for tracking and upgrading firmware in intelligent electronic devices
US11734396B2 (en) 2014-06-17 2023-08-22 El Electronics Llc Security through layers in an intelligent electronic device
US10958435B2 (en) 2015-12-21 2021-03-23 Electro Industries/ Gauge Tech Providing security in an intelligent electronic device
US11686594B2 (en) 2018-02-17 2023-06-27 Ei Electronics Llc Devices, systems and methods for a cloud-based meter management system
US11734704B2 (en) 2018-02-17 2023-08-22 Ei Electronics Llc Devices, systems and methods for the collection of meter data in a common, globally accessible, group of servers, to provide simpler configuration, collection, viewing, and analysis of the meter data
US11754997B2 (en) 2018-02-17 2023-09-12 Ei Electronics Llc Devices, systems and methods for predicting future consumption values of load(s) in power distribution systems
US11863589B2 (en) 2019-06-07 2024-01-02 Ei Electronics Llc Enterprise security in meters
US11941428B2 (en) 2021-04-16 2024-03-26 Apple Inc. Ensuring transactional ordering in I/O agent

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5353416A (en) * 1989-10-25 1994-10-04 Zenith Data Systems Corporation CPU lock logic for corrected operation with a posted write array
JPH04119445A (ja) * 1990-09-11 1992-04-20 Canon Inc 計算機システム
US5339399A (en) * 1991-04-12 1994-08-16 Intel Corporation Cache controller that alternately selects for presentation to a tag RAM a current address latch and a next address latch which hold addresses captured on an input bus
US5218564A (en) * 1991-06-07 1993-06-08 National Semiconductor Corporation Layout efficient 32-bit shifter/register with 16-bit interface
US5327570A (en) * 1991-07-22 1994-07-05 International Business Machines Corporation Multiprocessor system having local write cache within each data processor node
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
GB2260628A (en) * 1991-10-11 1993-04-21 Intel Corp Line buffer for cache memory
US5353415A (en) * 1992-10-02 1994-10-04 Compaq Computer Corporation Method and apparatus for concurrency of bus operations
US5420991A (en) * 1994-01-04 1995-05-30 Intel Corporation Apparatus and method for maintaining processing consistency in a computer system having multiple processors

Also Published As

Publication number Publication date
EP0748481B1 (en) 2003-10-15
EP1215584A3 (en) 2004-04-21
BR9506997A (pt) 1997-11-18
AU1973595A (en) 1995-09-25
DE69531933T2 (de) 2004-08-12
EP1215584A2 (en) 2002-06-19
EP0748481A4 (en) 2000-07-05
WO1995024678A3 (en) 1995-10-12
JP3660679B2 (ja) 2005-06-15
DE69531933D1 (de) 2003-11-20
US5796977A (en) 1998-08-18
WO1995024678A2 (en) 1995-09-14
EP0748481A1 (en) 1996-12-18
JPH09510308A (ja) 1997-10-14

Similar Documents

Publication Publication Date Title
KR100360064B1 (ko) 고도로파이프라인된버스구조
JP3999821B2 (ja) データ処理システム内でバス仲裁プロトコルを実行する方法および装置
US6128711A (en) Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes
US6292705B1 (en) Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
KR100371845B1 (ko) 데이타처리시스템
US5958019A (en) Multiprocessing system configured to perform synchronization operations
US5524235A (en) System for arbitrating access to memory with dynamic priority assignment
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
US5953538A (en) Method and apparatus providing DMA transfers between devices coupled to different host bus bridges
US5893151A (en) Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5774700A (en) Method and apparatus for determining the timing of snoop windows in a pipelined bus
KR100348947B1 (ko) 노드 상호 접속망 상에서 요구를 예측 방식으로 발행하는 비균일 메모리 액세스 데이터 처리 시스템
US6021456A (en) Method for communicating interrupt data structure in a multi-processor computer system
US6018792A (en) Apparatus for performing a low latency memory read with concurrent snoop
US5572702A (en) Method and apparatus for supporting read, write, and invalidation operations to memory which maintain cache consistency
EP0817077B1 (en) A multiprocessing system configured to perform prefetching operations and method therefor
US5682516A (en) Computer system that maintains system wide cache coherency during deferred communication transactions
US5848254A (en) Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space
US5659709A (en) Write-back and snoop write-back buffer to prevent deadlock and to enhance performance in an in-order protocol multiprocessing bus
JP3696012B2 (ja) 書込み動作順序付けバスブリッジ
US5961621A (en) Mechanism for efficiently processing deferred order-dependent memory access transactions in a pipelined system
US5991855A (en) Low latency memory read with concurrent pipe lined snoops
US20040111565A1 (en) High speed memory cloner with extended cache coherency protocols and responses
US5586274A (en) Atomic operation control scheme
US5923857A (en) Method and apparatus for ordering writeback data transfers on a bus

Legal Events

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

Payment date: 20120919

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee