KR0153487B1 - 장치간의 통신 수행 방법 및 통신 수행 시스템 - Google Patents

장치간의 통신 수행 방법 및 통신 수행 시스템

Info

Publication number
KR0153487B1
KR0153487B1 KR1019950027534A KR19950027534A KR0153487B1 KR 0153487 B1 KR0153487 B1 KR 0153487B1 KR 1019950027534 A KR1019950027534 A KR 1019950027534A KR 19950027534 A KR19950027534 A KR 19950027534A KR 0153487 B1 KR0153487 B1 KR 0153487B1
Authority
KR
South Korea
Prior art keywords
signal
action
outputting
bus
response
Prior art date
Application number
KR1019950027534A
Other languages
English (en)
Other versions
KR960008561A (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 KR960008561A publication Critical patent/KR960008561A/ko
Application granted granted Critical
Publication of KR0153487B1 publication Critical patent/KR0153487B1/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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • 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)
  • Debugging And Monitoring (AREA)
  • Small-Scale Networks (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Abstract

본 발명은 장치간 통신을 수행하는 방법 및 시스템에 관한 것이다. 신호는 제1장치로부터 출력된다. 이 신호에 응답하는 적어도 하나의 액션(action)이 제2장치에 의해 개시된다. 제2장치가 액션을 완료했는지의 여부와 제2장치의 오퍼레이션(operation)이 상기 제1장치가 상기 신호를 재출력하는 것에 무관한지의 여부를 나타내는 표시신호가 출력된다.

Description

장치간의 통신 수행 방법 및 통신 수행 시스템
제1도는 본 발명의 실시예에 따른 정보 처리 시스템의 블럭도.
제2(a-b)도는 제1도의 시스템 버스를 통해 정보 처리 시스템에 의해 수행되는 예시적인 동작을 도시한 도면.
제3(a-b)도는 제1도의 정보 처리 시스템에 의해 수행되는 동작 흐름도.
* 도면의 주요부분에 대한 부호의 설명
10 : 정보 처리 시스템 18 : 메모리
16 : 버스 어댑터 20 : 시스템 버스
본 발명은 정보 처리 시스템(information processing system)에 관한 것으로 특히, 장치간의 통신을 수행하는 방법 및 시스템에 관한 것이다.
정보 처리 시스템(information processing system)에서 장치들은 상호간에 정보를 교환할 수 있다. 하나의 장치는 다른 버스 장치들에 의해 스누프(snoop)되는 시스템 버스(system bus)상에 오퍼레이션 신호(operation signal)를 출력함으로써 버스 오퍼레이션을 개시할 수 있다. 각각의 스누핑 버스 장치(즉, 오퍼레이션 신호를 스누핑하는 각각의 장치)는 시스템 버스상에서 버스 오퍼레이션이 개시된 이래 사전결정되거나 혹은 가변의 지연 시간이 경과된 후에 스누프 응답 표시신호(snoop response indication)를 시스템 버스를 통해 마스터 버스 장치(즉, 버스 오퍼레이션을 개시한 장치)로 출력시킨다.
스누프 응답 표시신호는 제각기의 버스 오퍼레이션에 응답하여 발생한다. 엄격화게 순서화된 시스템(strongly ordered system)에서, 이러한 스누프 응답 표시신호는 제각기의 버스 오퍼레이션과 동일한 순서로 발생하여, 버스 오퍼레이션 및 스누프 응답 표시신호가 상호 엄격하게 순서화되도록 한다. 그렇지만, 일부 이전의 엄격하게 순서화된 시스템에서는 이전의 모든 버스 오퍼레이션이 완료(complete)될 때까지 후속 버스 오퍼레이션의 완료가 지연되는 단점이 있다. 후속 버스 오퍼레이션의 완료는 이러한 후속 오퍼레이션이 지연없이 완료될 수 있는 경우라도 지연되게 된다.
일부 이전 기법은 이러한 단점을 감소시키기 위해 어드레스 재시도 스누프 응답 표시신호(address Retry snoop response indication)를 지원하기도 한다. 후속 버스 오퍼레이션은 이러한 어드레스 재시도 스누프 응답 표시신호에 응답하여 완료될 수 있다. 마스터 버스 장치는 차후에 오퍼레이션 신호를 재출력함으로써 시스템 버스상에서 재시도된 버스 오퍼레이션을 재개시한다.
그러나, 이러한 재시도 기법의 단점은(이전의 재시도 스누프 응답 표시신호에 응답하여 반복된) 재개시된 버스 오퍼레이션이 모든 스누핑 버스 장치에 의해 다시 스누프되고(예를 들어, 이 스누핑 장치의 캐시 메모리의 상태 비트(status bits)를 판독함으로써) 완전히 실행된다(fully acted upon)는 점이다. 또다른 단점은 단지 재시도기법만이 사용되는 경우 교착상태(deadlock)가 발생할 수 있다는 점이다.
예를 들어, 첫번째 스누핑 장치는 버스 오퍼레이션에 응답하여 자신의 액션을 완료하지만 두번째 스누핑 장치는 버스 오퍼레이션에 응답하여 자신의 액션을 완료하는데 실패하여 그 결과 어드레스 재시도 스누프 응답 표시신호를 출력하는 경우 핑-퐁 교착상태(ping-pong deadlock)가 발생할 수 있다. 차후에, 마스터 버스 장치는 시스템 버스상에서 재시도된 버스 오퍼레이션을 재개시한다. 재개시된 버스 오퍼레이션은 모든 스누핑 장치에 의해 다시 스누프되고 완전히 실행되므로, 두번째 스누핑 장치는 재개시된 버스 오퍼레이션에 응답하여 자신의 액션을 완료하지만 첫번째 스누핑 장치는 이 버스 오퍼레이션에 응답하여 자신의 액션을 완료하는데 실패하여 그 결과 어드레스 재시도 스누프 응답 표시신호를 출력하는 경우가 있을 수 있다. 첫번째 및 두번째 장치가 번갈아가며 어드레스 재시도 스누프 응답 표시신호를 출력하면서 이와 같은 상황이 무한정 반복될 수도 있다.
또다른 예로서, 만일 장래의 스누핑 버스 장치 오퍼레이션이 차후에 마스터 버스 장치가 재시도된 버스 오퍼레이션을 반복하는 것에 종속적인 경우, 어떠한 이유로 인해 마스터 버스 장치가 재시도된 버스 오퍼레이션의 반복에 실패하면, 교착상태가 발생할 수 있다.
한편, 만일 마스터 버스 장치가 항상 재시도된 버스 오퍼레이션을 반복할 것이 요구되는 경우, 마스터 버스 장치는 재시도된 버스 오퍼레이션을 반복하지 않을 수도 있는 선택권이 없어져 융통성(flexibility)이 감소할 것이다.
그러므로, 후속 버스 오퍼레이션의 완료가 이전의 모든 버스 오퍼레이션의 완료를 대기하느라 지연되지 않는 장치간 통신 방법 및 시스템에 대한 필요성이 존재한다. 또한, 모든 스누핑 버스 장치가 반복된 버스 오퍼레이션을 스누프하고 완전히 실행할 필요는 없는 장치간 통신 방법 및 시스템에 대한 필요성이 존재한다. 더우기, 교착상태가 발생할 확률이 적은 장치간 통신 방법 및 시스템에 대한 필요성이 존재한다. 또한, 마스터 버스 장치가 버스 오퍼레이션을 반복하지 않을 수 있는 선택권을 가짐으로써 융통성을 지닌 장치간 통신 방법 및 시스템에 대한 필요성이 존재한다.
장치간 통신 방법 및 시스템의 첫번째 측면으로, 제1장치로부터 하나의 신호가 출력된다. 이 신호에 응답하여 적어도 하나의 액션이 제2장치에 의해 개시된다. 제2장치가 액션을 완료했는지의 여부와 제2장치의 오퍼레이션이 제1장치가 신호를 재출력(reoutput)하는 것에 무관한지의 여부를 나타내는 표시신호가 출력된다.
장치간 통신 방법 및 시스템의 두번째 측면으로, 제1장치로부터 하나의 신호가 출력된다. 이 신호에 응답하여 적어도 하나의 액션이 제2장치와 제3장치에 의해 개시된다. 제2 및 제3장치가 액션을 완료했는지의 여부를 나타내는 표시신호가 출력된다. 제2장치가 액션을 완료하는데 실패하였고 제3장치가 액션을 완료하였음을 나타내는 표시신호에 응답하여, 제3장치에 의한 액션을 재개시함이 없이 제1장치로부터 신호가 재출력된다.
본 발명은 후속 버스 오퍼레이션의 완료가 이전의 버스 오퍼레이션의 완료를 대기하느라 지연되지 않도록 하는 기술적인 장점을 제공한다.
본 발명은 모든 스누핑 버스 장치가 반복된 버스 오퍼레이션을 스누프하고 완전히 실행할 필요는 없는 또다른 기술적인 장점을 제공한다.
본 발명은 교착상태의 발생 가능성을 줄이는 또다른 기술적인 장점을 제공한다.
본 발명은 마스터 버스 장치가 버스 오퍼레이션을 반복하지 않을 수 있는 선택권을 가짐으로써 융통성이 부여되는 또다른 기술적인 장점을 제공한다.
본 발명의 예시적인 실시예와 장점들은 다음의 설명과 첨부된 도면을 함께 참조하면 명백하게 이해될 것이다.
본 발명의 예시적인 실시예와 장점들은 제1도 내지 제3(b)도를 참조하면 보다 잘 이해될 수 있을 것이다. 도면에서 동일한 번호는 동일한 부품 또는 구성요소를 표시한다.
제1도에는 예시적인 실시예에 따라 정보 처리 시스템(10)의 블럭도가 도시되어 있다. 정보 처리 시스템(10)은 다수의 버스 장치(12,14,16,18)를 포함한다. 특히, 장치(12)는 제1프로세서 장치(이하 프로세서 A라 칭함), 장치(14)는 제2프로세서 장치(이하 프로세서 B라 칭함)이다. 또한, 장치(16)는 버스 어댑터 장치(bus adapter device)(이하, BA라 칭함)이고 장치(18)는 메모리 장치이다. 프로세서 A, 프로세서 B 및 프로세서 BA(16)는 이하 제2(a-b)도 및 제3(a-b)도를 참조하여 기술되는 예시적인 실시예에 따라 동작한다.
장치(12,14,16,18)는 시스템 버스(20)를 통해 상호 접속된다. 따라서, 장치(12,14,16,18)는 시스템 버스(20)를 통해 상호 정보를 주고 받는다. 제1도의 예시적인 실시예에서, 시스템 버스(20)는 64비트 어드레스 버스(22), 128비트 데이타 버스(24), 8비트 데이타-태그(data-tag;Dtag) 버스(26) 및 10비트 제어/상태 버스(control/status bus)(28)를 포함한다.
또한, BA(16)는 부가적인 버스(30)와 접속된다. 따라서, BA(16)는 시스템 버스(20)와 버스(30)간에 인터페이스(interface)로서 역활한다. 이와 같은 방식으로, 장치(12,14,18)는 BA(16)와 시스템 버스(20)를 통하여 버스(30)에 접속된 하나 이상의 다른 장치들(도시되지 않음)과 정보를 교환한다.
예시적인 실시예에 의한 재실행 기법(ReRun technique)에 따라, 시스템(10)은 공유 버스 오퍼레이션이 시스템 버스(20)상에서 개시된 순서와는 다른(즉, 약하게 순서화된(weakly ordered)) 순서로 완료될 수 있도록 지원한다. 하나의 버스 장치는 다른 버스 장치들에 의해 스누프되는 시스템 버스(20)상에 오퍼레이션 신호를 출력함으로써 버스 오퍼레이션을 개시할 수 있다. 오퍼레이션 신호에 응답하여, 각각의 스누핑 버스 장치(즉, 오퍼레이션 신호를 스누프하는 각각의 장치)는 하나의 액션을 개시한다. 예를 들어, 이러한 액션은 스누핑 장치의 케시 메모리내의 상태 비트를 판독하는 것일 수도 있다. 다른 예로서, 이러한 액션을 BA(16)가 버스(30)에 접속된 하나 이상의 다른 장치들(도시되지 않음)로부터 버스(30)를 통해 원격 상태(remote status)를 판정하는 것일 수도 있다.
또한, 각각의 스누핑 버스 장치는 시스템 버스(20)상에서 버스 오퍼레이션이 개시된 이래 사전결정된 지연 시간이 경과된 후 스누프 응답 표시신호를 시스템 버스(20)를 통해 마스터 버스 장치(즉, 버스 오퍼레이션을 개시한 장치)로 동시에 출력한다. 스누프 응답 표시신호는 이 스누핑 버스 장치가 상기 오퍼레이션 신호에 응답하여 이전에 개시한 액션을 완료했는지의 여부를 나타낸다. 스누핑 장치로 부터의 출력 신호의 부재(즉, 널(Null) 응답 표시신호)는 그 자체로서 하나의 스누프 응답 표시신호로 간주된다.
재실행 기법은 시스템 버스(20)가 스누프 응답 표시신호에 대해 파이프라인형(pipelined) 인지 혹은 완전 인터로크(fully interlocked)인지의 여부에 상관없이, 혹은 스누프 응답 표시신호가 버스 오퍼레이션의 개시로부터 고정 혹은 가변 지연 시간을 갖는지의 여부에 무관하게 적용 가능하다. 예시적인 실시예에서 스누프 응답 표시신호는 제각기의 버스 오퍼레이션에 응답하여 발생한다. 이러한 스누프 응답 표시신호는 제각기의 버스 오퍼레이션과 동일한 순서로 발생하여, 버스 오퍼레이션과 스누프 응답 표시신호는 상호 엄격하게 순서화(strongly ordered)되어 있다.
그럼에도 불구하고, 버스 오퍼레이션에 대한 응답은 항상 버스 오퍼레이션의 완료를 의미하지는 않는다. 따라서, 본 실시예에 따른 재실행 기법을 통해, 버스 오퍼레이션은 이들 버스 오퍼레이션이 시스템 버스(20)상에서 개시된 순서와는 다른(즉, 약하게 순서화된) 순서로 완료될수 있도록 한다. 따라서, 바람직한 실시예의 한가지 중요한 측면으로서, 시스템(10)은 특정 스누핑 버스 장치가 버스 오퍼레이션 신호에 응답하여 이전에 개시한 액션을 완료하는데 필요한 지연 시간이 버스 오퍼레이션 및 시스템(10)의 상태에 따라 변하더라도 이를 지원한다.
본 실시예의 재실행 기법에 따르면, 하나 이상의 버스 스누핑 장치가 재실행 응답 표시신호를 출력하여 마스터 버스 장치가 원래의 버스 오퍼레이션에 대한 스누프 지연 시간을 연장시킬 필요가 있음을 마스터 버스 장치에게 알릴 수 있다. 재실행 응답 표시신호는 원래의 버스 오퍼레이션에 대한 스누프 응답 표시신호로서 동작하므로 다른 버스 오퍼레이션이 계속될 수 있게 하며, 또한(재실행 응답 표시신호를 송출한) 각각의 스누핑 장치로 하여금 원래의 버스 오퍼레이션에 대한 프로세싱(즉, 원래의 버스 오퍼레이션에 대한 액션)을 계속할 수 있도록 한다. (재실행 응답 표시신호를 송출한) 각각의 스누핑 장치는(원래의 버스 오퍼레이션과 관련하여 마스터 버스 장치가 이전에 출력한) 오퍼레이션 태그를 저장하여 차후에 이러한 특정 버스 오퍼레이션이 식별될 수 있도록 한다.
재실행 응답 표시신호가 발생한 이래 얼마간의 시간이 경과한 후, 마스터 버스 장치는 오퍼레이션 신호를 재출력하여 원래의 버스 오퍼레이션을 반복하며, 또한 원래의 버스 오퍼레이션에 관련하여 이전에 출력한 오퍼레이션 태그와 동일한 오퍼레이션 태그를 재출력한다. (재실행 응답 표시신호를 송출한) 각각의 스누핑 장치는 상기 출력 오퍼레이션 태그를 이전에 저장된 오퍼레이션 태그와 비교한다. 상기 오퍼레이션 태그와 이전에 저장된 오퍼레이션 태그간에 일치가 이루어지지 않는 경우, 스누핑 장치는 반복된 버스 오퍼레이션을 무시한다.
비교 결과, 오퍼레이션 태그와 이전에 저장된 어느 하나의 오퍼레이션 태그가 일치하는 경우, 스누핑 장치는 반복된 버스 오퍼레이션에 대해 응답한다. 이전에 재실행 응답 표시신호를 송출했음에도 불구하고 이 스누핑 장치가 반복된 버스 오퍼레이션을 완전히 처리(즉, 상기 오퍼레이션 신호에 응답하여 스누핑 장치에 의해 이전에 개시된 액션을 완료)하는데에는 아직 시간이 더 필요한 경우, 이 스누핑 장치는 다시 또다른 재실행 응답 표시신호를 출력하여, 마스터 버스 장치가 반복된 버스 오퍼레이션에 대한 스누프 지연 시간을 더 연장시킬 필요가 있다는 것을 마스터 버스 장치에게 알린다. 본 발명의 장점으로, 연속적으로 반복된 버스 오퍼레이션에 응답하여 임의의 갯수의 재실행 응답 표시신호가 송출될 수 있고, 이들은 반복된 버스 오퍼레이션에 대한 스누프 응답 표시신호로서 동작하므로 다른 버스 오퍼레이션이 계속될 수 있도록 허용한다.
제2(a-b)도에는 예시적인 실시예의 재실행 시스템 버스 기법에 따라, 제1도의 시스템 버스(20)를 통해 시스템(10)에 의해 수행되는 동작의 예가 도시되어 있다. 특히, 제2(a)도에는 예시적인 실시예의 재실행 시스템 버스 기법에 따라 시스템(10)에 의해 수행되는 SYNC/TLBSYNC 동작의 예가 도시되어 있다. SYNC 명령어 동작(SYNC instruction operation)과 TLBSYNC 명령어 동작은 차후에 더욱 상세히 기술된다. 프로세서와 버스 어댑터 버스 장치는 본 실시예의 재실행 기법을 사용하여 SYNC 및 TLBSYNC 버스 오퍼레이션의 응답을 연장시킬 수 있다.
한편, 제2(b)도는 예시적인 실시예의 재실행 시스템 버스 기법에 따라 시스템(10)에 의해 수행되는 비(non)-SYNC/비(non)-TLBSYNC 동작의 예가 도시되어 있다. 예시적인 실시예에서 버스 어댑터 버스 장치(예를 들어, BA(16))는 재실행 기법을 사용하여 비-SYNC 및 비-TLBSYNC 버스 오퍼레이션의 응답을 연장시킬 수 있다.
제2(a)도를 참조하면, 시스템 버스(20)의 클럭 사이클 1동안 프로세서 A는 시스템 버스(20)를 통해 동기(synchronization:SYNC) 오퍼레이션 신호를 출력한다. 클럭 사이클 1동안 프로세서 A는 시스템 버스(20)를 통해 이 SYNC 오퍼레이션과 관련하여 오퍼레이션 태그=X1 및 R-비트=0을 출력한다. 프로세서 A는 어드레스 버스(22)를 통해 오퍼레이션 태그와 R-비트를 출력한다. 프로세서 A는 제어/상태 버스(28)를 통해 오퍼레이션 유형(예를 들어, SYNC)과 전송 크기(즉, 전송될 바이트의 수)를 출력한다.
시스템 버스(20)의 클럭 사이클 3동안, 프로세서 B는 시스템 버스(20)를 통해 판독(read:RD) 오퍼레이션 신호를 출력한다. 클럭 사이클 3동안 프로세서 B는 시스템 버스(20)를 통해 이 RD 오퍼레이션과 관련하여 오퍼레이션 태그=Y2 및 R-비트=0을 출력한다.
시스템 버스(20)의 클럭 사이클 4동안, 프로세서 B는 프로세서 A가 클럭 사이클 1동안 출력한 SYNC 오퍼레이션에 응답하여 시스템 버스(20)를 통해 재실행 1 오퍼레이션 신호를 출력한다. 이와 달리, 아무런 버스 장치도(클럭 사이클 1동안 프로세서 A가 출력한 SYNC 오퍼레이션 응답하여) 시스템 버스(20)를 통해 클럭 사이클 4 혹은 그 이전에(즉, SYNC 오퍼레이션 이후의 세개의 버스 클럭 사이클로 구성된 사전결정된 고정 지연 시간내에) 재실행 오퍼레이션 신호 혹은 재시도 오퍼레이션 신호를 송출하지 않는다면, 프로세서 A는 클럭 사이클 1동안 자신이 개시한 SYNC 오퍼레이션을 성공적으로 완료한다.
따라서, 예시적인 실시예의 재실행 기법은 특정 스누핑 장치가 오퍼레이션 신호에 응답하여 이전에 개시한 액션을 완료하는데 필요한 지연 시간이 버스 오퍼레이션과 시스템(10)의 상태에 따라(상기 사전결정된 고정된 길이의 지연 응답 시간을 초과하여) 변하더라도 이를 지원한다. 버스 장치는 재실행 오퍼레이션을 송출함으로써 지연 시간을 연장시킬 수 있다. 그럼에도 불구하고, 예시적인 실시예의 재실행 기법은 고정 지연 시간대신 가변 지연 시간을 사용하는 대안적인 시스템에도 적용가능하며 동일한 장점을 발휘한다. 시스템 버스(20)의 클럭 사이클 6동안, 프로세서 B는 제2(a)도에서 완료2(Done2)로 표시된 바와 같이 자신이 클럭 사이클 3동안 개시한 RD 오퍼레이션을 성공적으로 완료한다. 프로세서 B는 다른 버스 장치들이 (RD 오퍼레이션 이후의 세개의 버스 클럭 사이클로 구성된 고정 지연 시간내에)(1) 재시도 오퍼레이션 혹은 (2) 재실행 오퍼레이션을 출력하지 못한 것에 응답하여 RD 오퍼레이션을 성공적으로 완료한다.
(사이클 4의) 재실행 1 오퍼레이션 이후 사전결정된 수의 사이클(즉, 본 실시예에서 2 사이클)이 경과하면, 프로세서 A는 시스템 버스(20)의 클럭 사이클 7동안 시스템 버스(20)를 통해 SYNC 오퍼레이션 신호를 재출력한다. 클럭 사이클 1의 SYNC 오퍼레이션과 마찬가지로, 프로세서 A는 클럭 사이클 7동안 시스템 버스(20)를 통해 이 SYNC 오퍼레이션과 관련하여 오퍼레이션 태그=X1을 출력한다. 그러나, 클럭 사이클 1의 SYNC 오퍼레이션는 다르게, 프로세서 A는 클럭 사이클 7동안 시스템 버스(20)를 통해 이 SYNC 오퍼레이션과 관련하여 R-비트=1을 출력한다.
R-비트=1로 하여, 프로세서 A는 다른 버스 장치들에게 프로세서 A가 이전에 이 SYNC 오퍼레이션을 출력했었다는 것을 알린다. 시스템 버스(20)의 클럭 사이클 10동안, 프로세서 A는 제2(a)도에서 완료1(Done1)로 표시된 바와 같이 자신이 클럭 사이클 7동안 개시한 SYNC 오퍼레이션을 성공적으로 완료하거나, 프로세서 B가 제2(a)도의 클럭 사이클 1에 재실행1으로 표시된 바와 같이 클럭 사이클 7동안 프로세서 A가 출력한 SYNC 오퍼레이션에 응답하여 시스템 버스(20)를 통해 또다른 재실행 1 오퍼레이션 신호를 출력한다.
제2(b)도를 참조하면, 시스템 버스(20)의 클럭 사이클 1동안 프로세서 A는 시스템 버스(20)를 통해 판독(RD1) 오퍼레이션 신호를 출력한다. 프로세서 A는 클럭 사이클 1동안 시스템 버스(20)를 통해 이 RD1 오퍼레이션과 관련하여 오퍼레이션 태그=X1, R-비트=0을 출력한다.
시스템 버스(20)의 클럭 사이클 3동안 프로세서 B는 시스템 버스(20)를 통해 판독(RD2) 오퍼레이션 신호를 출력한다. 프로세서 B는 클럭 사이클 3동안 시스템 버스(20)를 통해 이 RD2 오퍼레이션과 관련하여 오퍼레이션 태그=Y2, R-비트=0을 출력한다.
시스템 버스(20)의 클럭 사이클 4동안 BA(16)는 프로세서 A가 클럭 사이클 1동안 출력한 RD1 오퍼레이션 신호에 응답하여 시스템 버스(20)를 통해 재실행 1 오퍼레이션 신호를 출력한다.
시스템 버스(20)의 클럭 사이클 6동안, 프로세서 B는 제2(a)도에서 완료2로 표시된 바와 같이 자신이 클럭 사이클 3동안 개시한 RD2 오퍼레이션을 성공적으로 완료한다.
시스템 버스(20)의 클럭 사이클 7동안, BA(16)는 이 BA(16)가(클럭 사이클 1동안 프로세서 A로부터 출력된) RD1 오퍼레이션에 응답할 수 있는(혹은 사전결정된 수의 클럭 사이클내에 응답할 수 있을 것으로 예상되는) 것에 응답하여 시스템 버스(20)를 통해 태그-매칭 재실행 오퍼레이션 신호(tag-matching ReRun operation signal)를 출력한다. 예시적인 실시예에서, BA(16)는 버스(30)에 접속된 하나 이상의 장치들(도시되지 않음)로부터 버스(30)를 통해 원격 상태(remote status)를 수신한 후 이 RD1 오퍼레이션에 대하여 응답할 수 있다. 그러나, BA(16)는, 시스템 버스상에서 이 RD1 오퍼레이션에 응답하는 지연 시간을 감소시키기 위해, 원격 상태를 수신하기 이전에도 태그-매칭 재실행 오퍼레이션을 출력할 수 있다.
클럭 사이클 7동안 BA(16)는 시스템 버스(20)를 통해 이 태그-매칭 재실행 오퍼레이션과 관련하여, 오퍼레이션 태그=X1을 출력한다. R-비트는 태그-매칭 재실행 오퍼레이션에는 적용할 수 없다. 태그-매칭 재실행 버스 오퍼레이션은 어드레스 버스(22) 상에서 이루어지는 어드레스-온리(address-only) 오퍼레이션이다. 태그-매칭 재실행 버스 오퍼레이션은 어드레스를 포함하지 않으므로 태그-온리(tag-only)이다.
만일 또하나의 부가적인 버스 어댑터(도시되지 않음)가 시스템 버스(20)에 접속되어 있는 경우, 각각의 버스 어댑터는 다른 버스 어댑터가 태그-매칭 재실행 오퍼레이션 신호를 출력하는 것을 스누프한다. 예를 들어, 만일 부가적인 버스 어댑터가 BA(16)로부터 출력된 태그-매칭 재실행 오퍼레이션 신호를 감지하고 이 태그-매칭 재실행 오퍼레이션의 태그가 이 부가적인 버스 어댑터에 의해 이전에 재실행된 오퍼레이션의 태그와 일치하는 경우, 이 부가적인 버스 어댑터는 또다른 태그-매칭 재실행 오퍼레이션 신호를 출력하지 않는다.
시스템 버스의 클럭 사이클 10동안, 프로세서 A는 클럭 사이클 7동안 BA(16)가 출력한 태그-매칭 재실행 오퍼레이션 신호에 응답하여 시스템 버스(20)를 통해 RD1 오퍼레이션 신호를 출력한다. 클럭 사이클 1의 RD1 오퍼레이션 신호와 마찬가지로, 클럭 사이클 10동안 프로세서 A는 시스템 버스(20)를 통해 이 RD1 오퍼레이션과 관련하여 오퍼레이션 태그=X1을 출력한다. 그러나, 클럭 사이클 1의 RD1 오퍼레이션과 달리, 클럭 사이클 10동안 프로세서 A는 시스템 버스(20)를 통해 이 RD1 오퍼레이션과 관련하여 R-비트=1을 출력한다.
시스템 버스(20)의 클럭 사이클 13동안, 프로세서 A는 제2(b)도의 클럭 사이클 13에서 완료 1로 표시된 바와 같이 자신이 클럭 사이클 10동안 개시한 RD1 오퍼레이션을 성공적으로 완료하거나, 혹은 BA(16)는 제2(b)도의 클럭 사이클 13에서 재실행 1으로 표시된 바와 같이 클럭 사이클 10동안 프로세서 A가 출력한 RD1 오퍼레이션에 응답하여 시스템 버스(20)를 통해 또다른 재실행 1 오퍼레이션 신호를 출력한다.
예를 들어, BA(16)가 사전결정된 수의 클럭 사이클(예를 들어, 본 실시예에서는 6클럭 사이클) 이내에 RD1 오퍼레이션에 응답할 수 있는 자신의 능력을(클럭 사이클 7동안) 잘못 예측한 경우 BA16은(클럭 사이클 10동안 프로세서 A가 출력한 RD1 오퍼레이션에 응답하여) 클럭 사이클 13동안 또다른 재실행 1 오퍼레이션 신호를 시스템 버스(20)를 통해 출력할 수 있다.
따라서, 예시적인 실시예의 시스템(10)은 시스템 버스(20)상에서 공유 버스 오퍼레이션이 개시된 순서에 대해 약하게 순서화된 완료를 지원함으로써 효율성을 향상시킨다. 이러한 장점 중에는 긴 스누프 지연 시간 버스 오퍼레이션이 후속의 보다 짧은 스누프 지연 시간 오퍼레이션의 완료에 영향을 주지 않는 경우 얻어지는 효율성 향상을 포함한다.
더우기, (이전의 재실행 응답 표시신호에 응답하여 반복된) 반복 버스 오퍼레이션은 단지 이전에 재실행 응답 표시신호를 송출한(혹은 이미 송출한 다른 장치가 없었더라면 송출했었을) 각 스누핑 장치에 의해서만 스누프 및 재실행(즉, 완전히 실행)되므로 효율성이 증가하게 된다. 이것은 모든 스누핑 장치가 반복된 버스 오퍼레이션을 스누프하고(예를 들어 스누핑 장치의 케쉬 메모리의 상태 비트를 판독하므로써) 재실행하는 재시도 기법과 같은 이전의 기법들과 비교할 때 유리하다.
본 발명의 장점으로서, 예시적인 실시예에서 스누핑 버스 장치는 후속 버스 오퍼레이션이 계속될 수 있도록 시스템 버스(20)상에 재시도 응답 표시신호이나 재실행 응답 표시신호를 출력할 수 있다. 이러한 목적을 위해, 스누핑 버스 장치는 이 스누핑 버스 장치의 후속 오퍼레이션이 마스터 버스 장치가 차후에 재시도된 버스 오퍼레이션을 반복하는 것에 무관한 경우 재시도 응답 표시신호를 출력한다; 이 경우 마스터 버스 장치는 선택적으로(optionally) 재시도된 버스 오퍼레이션을 반복한다.
이와 달리, 만일 스누핑 버스 장치의 후속 오퍼레이션이 마스터 버스 장치가 차후에 재실행된 버스 오퍼레이션을 반복하는 것에 종속적인 경우, 스누핑 버스 장치는 재실행 응답 표시신호를 출력한다. 이 경우 마스터 버스 장치는 항상 재실행된 버스 오퍼레이션을 반복한다. 따라서, 재실행 응답 표시신호를 출력한 후, 스누핑 버스 장치는 마스터 버스 장치가 차후에 재실행된 버스 오퍼레이션을 반복하지 않을 수도 있다고 우려함이 없이 원래의 버스 오퍼레이션의 처리를 계속할 수 있게 된다.
예시적인 실시예에서의 재실행 기법은 단지 재시도 기법만 사용되었을 경우 발생할 수 있는 교착상태를 방지한다는 점에서 그 기능이 스트림라인와(streamline) 되었다고 할 수 있다. 예를 들어, 만일 스누핑 버스 장치의 후속 오퍼레이션은 마스터 버스 장치가 차후에 재시도된 버스 오퍼레이션을 반복하는 것에 종속적인데, 어떠한 이유로 인해 마스터 버스 장치가 재시도된 버스 오퍼레이션을 반복하지 못한 경우, 이러한 교착상태가 발생할 수 있다.
한편, 마스터 버스 장치로 하여금 항상 재시도된 버스 오퍼레이션을 반복하도록 요구하는 경우, 마스터 버스 장치는 재시도된 버스 오퍼레이션을 반복하지 않을 수 있는 선택권이 없어 융통성을 상실할 것이다.
예시적인 실시예에서 스누핑 버스 장치는 재시도 응답 표시 신호나 재실행 응답 표시신호를 시스템 버스(20)상에 출력하여 후속 버스 오퍼레이션이 계속되도록 할 수 있다. 따라서, 예시적인 실시예에서, 스누핑 버스 장치의 후속 오퍼레이션이 마스터 버스 장치가 차후에 재시도된 버스 오퍼레이션을 반복하는지의 여부와 무관한 경우, 이 스누핑 버스 장치는 재시도 오퍼레이션을 출력한다. 이러한 방식으로, 마스터 버스 장치는 재시도된 버스 오퍼레이션을 반복하지 않을 수도 있는 선택권을 가짐으로써 가치있는 융통성을 지니게 된다. 더우기, 스누핑 버스 장치의 후속 오퍼레이션이 마스터 버스 장치가 차후에 재실행된 버스 오퍼레이션을 반복하는 것에 종속적인 경우, 이 스누핑 버스 장치는 재실행 오퍼레이션을 출력한다. 이러한 방식으로, 스누핑 장치는 마스터 버스 장치가 재실행된 버스 오퍼레이션을 항상 반복하도록 하여 발생 가능한 교착상태를 방지한다.
본 발명의 장점으로서, 예시적인 실시예에서 비록 스누핑 버스 장치가 재실행 오퍼레이션을 출력하더라도, 마스터 버스 장치는 재실행된 버스 오퍼레이션을 중단(abort)시키는 선택권을 가짐으로써 융통성을 갖게 된다. 만일 마스터 버스 장치가 재실행된 버스 오퍼레이션을 중단하기로 결정하면 마스터 버스 장치는 '재실행된 버스 오퍼레이션을 반복(R-비트=1)하고 시스템 버스(20)상에 재시도 응답 표시신호를 출력한다. 이(마스터 버스 장치가 재실행된 버스 오퍼레이션을 반복한 직후 마스터 버스 장치에 의해 출력된) 재시도 응답 표시신호는 마스터 버스 장치가 재실행된 버스 오퍼레이션을 중단시키고 있다는 것을 스누핑 버스 장치에게 알리는 신호로서 역활한다. 이러한 방식으로, 스누핑 버스 장치는 마스터 버스 장치가 재실행된 버스 오퍼레이션을 반복하는 것에 더 이상 의존하지 않음으로써 발생 가능한 교착상태를 방지한다.
제3(a-b)도는 정보 처리 시스템(10)에 의해 수행되는 오퍼레이션의 흐름도이다. 특히, 제3(a)도는 시스템(10)의 마스터 버스 장치(MBD)(예를 들어, 제2(a-b)도의 예에서 프로세서 A)에 의해 수행되는 오퍼레이션을 나타내는 흐름도이다. 한편, 제3(b)도는 스누핑 프로세서(예를 들어, 제2(a)도의 예에서 프로세서 B)와 버스 어댑터(예를 들어, 제2(b)도의 예에서 BA(16))에 의해 수행되는 오퍼레이션을 나타내는 흐름도이다(이하 스누핑 프로세서와 버스 어댑터를 합쳐 스누핑 버스 장치(SBDs)로 칭한다).
제3(a)도에서, 실행은 MBD가 R-비트를 클리어(clear)(즉, R-비트=0)하는 단계(100)로부터 시작한다. 단계(102)에서, MBD는 시스템 버스(20)의 제어권을 획득하여 시스템 버스(20)를 통해 버스 오퍼레이션 신호를 출력한다. 단계(102) 이후, 실행은 판단블럭(104)으로 진행된다.
판단블럭(104)에서, 만일 MBD가 단계(102)의 버스 오퍼레이션에 응답하여 시스템 버스(20)를 통해 널/무(Null/None), 공유(Shared) 혹은 변경(Modified) 응답 표시신호를 수신한 경우 실행은 제3(a)도에 도시된 바와 같이 종료된다. 이와 달리, 만일 MBD가 단계(102)의 버스 오퍼레이션에 응답하여 시스템 버스(20)를 통해 재시도 응답 표시신호를 수신한 경우 실행은 단계(102)로 진행된다. 이와 달리, MBD가 단계(102)의 버스 오퍼레이션에 응답하여 시스템 버스(20)를 통해 재실행 응답 표시신호를 수신한 경우 실행은 판단블럭(106)으로 진행된다.
판단블럭(106)에서 단계(102)의 버스 오퍼레이션이 SYNC 오퍼레이션 혹은 TLBSYNC 오퍼레이션인 경우 실행은 단계(108)로 진행된다. 이와 달리, 단계(102)의 버스 오퍼레이션이 SYNC 오퍼레이션도 TLBSYNC 오퍼레이션도 아닌 경우에는 실행은 단계(110)로 진행되고 앞서 제2(b)도의 클럭 사이클 7과 관련하여 설명한 바와 같이 MBD는 태그-매칭 재실행 오퍼레이션을 대기한다.
단계(110) 이후 실행은 단계(108)로 진행된다. 단계(108)에서 MBD는 R-비트를 세트(즉, R-비트=1)한다. 단계(108) 이후 실행은 단계(102)로 복귀한다.
제3(b)도에 대해 살펴보면, 실행은 SBD가 시스템 버스(20)상에서 버스 오퍼레이션을 대기하는 단계(200)로부터 시작된다. 단계(200)에서 SBD가 버스 오퍼레이션을 스누프한 후, 실행은 판단블럭(202)으로 진행되어 SBD는 R-비트가 0 혹은 1인지를 판정한다. 만일 SBD가 판단블럭(202)에서 R-비트=0인 것으로 판정하면, 실행은 단계(204)로 진행되어 SBD는 스누프 버스 오퍼레이션에 의해 요구된 기능을 개시한다. 더우기 단계(204)에서 버스 오퍼레이션이 비-SYNC/비-TLBSYNC 오퍼레이션인 경우, 실행은 단계(206)로 진행된다.
단계(206)에서 SBD는 버스(30)상의 버스 오퍼레이션에 대한 원격 상태를 수신한다. SBD가 원격 상태를 수신한 후 실행은 단계(208)로 진행된다. 단계(208)에서 SBD는 원래의 스누프된(단계(200)에서 스누프된) 버스 오퍼레이션이 (단계(212)를 참조하여 차후에 논의되며, 또한 예를 들어 제2(b)도의 클럭 사이클 4를 참조하여 앞서 설명한 바와 같이) 이전에 재실행 오퍼레이션을 초래하였던 경우에만(앞서 제2(b)도의 클럭 사이클 7을 참조하여 설명한 바와 같이) 시스템 버스(20)상에 태그-매칭 재실행 오퍼레이션을 출력한다. 단계(208) 이후, 실행은 제3(b)도에 도시된 바와 같이 종료된다.
단계(204) 이후, 실행은 판단블럭(210)으로 진행된다. 단계(204)에서 버스 오퍼레이션이 비-SYNC/비-TLBSYNC 오퍼레이션인 경우, 실행은 판단블럭(210)으로 진행되는 것과 함께 단계(206)로도 진행된다. 판단블럭(210)에서 SBD는 ARespOut 혹은 그 이전에 원래의 스누프된(단계(200)에서 스누프된) 버스 오퍼레이션에 응답할 수 있는지 판정한다.
ARespOut은 단계(200)에서 버스 오퍼레이션이 스누프된 이후 경과된 사전결정된 지연 시간(즉, 클럭 사이클의 갯수)이다. 지연 시간에 관해서는 제2(a-b)도를 참조하여 앞서 설명하였다. 만일 SBD가 판단블럭(210)에서 ARespOut 혹은 그 이전에 원래의 스누프된 버스 오퍼레이션에 응답할 수 없다고 판정하면 실행은 단계(212)로 진행된다. 단계(212)에서 SBD는 앞서 제2(b)도의 클럭 사이클 4를 참조하여 설명한 바와 같이 재실행 오퍼레이션을 출력한다. 단계(212) 이후 실행은 제3(b)도에 도시된 바와 같이 종료된다.
이와 달리, 만일 SBD가 판단블럭(210)에서 ARespOut 혹은 그 이전에 원래의 스누프된 버스 오퍼레이션에 응답할 수 있다고 판정하면 실행은 단계(214)로 진행된다. 단계(214)에서 SBD는 널 응답 표시신호를 출력한다. 단계(214) 이후, 실행은 제3(b)도에 도시된 바와 같이 종료된다.
판단블럭(202)을 다시 참조하면, 만일 SBD가 R-비트=1이라고 판정하면, 실행은 판단블럭(216)으로 진행된다. 판단블럭(216)에서 SBD는 이 스누프된 버스 오퍼레이션이, (단계(212) 및 예를 들어 제2(b)도의 클럭 사이클 4를 참조하여 앞서 설명한 바와 같이) 이전에 자신으로 하여금 재실행 오퍼레이션 신호를 출력하도록 야기한 이전에 스누프된(그러나 완료되지는 않은) 버스 오퍼레이션의 오퍼레이션 태그와 동일한 오퍼레이션 태그를 가지고 있는지 판정한다. 만일 SBD가 판단블럭(216)에서 오퍼레이션 태그가 동일하다고 판정하면, 실행은 판단블럭(210)으로 진행되며, 버스 오퍼레이션이 비-SYNC/비-TLBSYNC 오퍼레이션인 경우 실행은 판단블럭(210)으로 진행됨과 동시에 단계(206)로도 진행된다.
이와 달리, 만일 SBD가 판단블럭(216)에서 오퍼레이션 태그가 동일하지 않다고 판정한 경우, 단계(218)가 실행된다. 단계(218)에서, SBD는 스누프된 버스 오퍼레이션의 완료를 기록한다. 단계(218) 이후, 실행은 제3(b)도에서 도시된 바와 같이 종료된다.
다음의 표는 스누핑 장치(snoopers)가 버스 오퍼레이션에 응답하는 방법을 요약해서 보여준다. 특히, 다음의 표는 버스 어댑터(예를 들어 BA(16))가 비-SYNC/비-TLBSYNC 버스 오퍼레이션에 응답하는 방법 및 프로세서(예를 들어 프로세서 A 및 프로세서 B)와 버스 어댑터가 SYNC 및 TLBSYNC 버스 오퍼레이션에 응답하는 방법을 요약한 것이다.
본 발명의 예시적인 실시예 및 장점들이 앞에서 상세히 설명되었지만 이들을 예로서 기술된 것으로 본 발명을 제한하고자 한 것은 아니다. 본 발명의 폭, 영역 및 사상을 벗어나지 않고서도 다양한 변경, 치환 및 변화가 예시적인 실시예에 대해 이루어질 수 있다. 본 발명의 폭, 영역 및 사상은 예시적인 실시예로 제한되지 않으며 단지 다음의 청구범위 및 이와 균등한 사항에 의해서만 제한되어진다.
[부록 : TLBSYNC 및 SYNC 명령어]
TLBSYNC 명령어의 실행은, TLBIE(즉, TLB 무효 엔트리(TLB invalidation entry)) 명령어에 응답하여 무효화된 변환 우선 참조 버퍼(translation lookaside buffer:TLB) 엔트리를 사용하였을 수도 있는 모든 프로세서내의 모든 로드(LOAD) 명령어 및 저장(STORE) 명령어가 수행되었음을 보장한다. 본 실시예에서는 TLBSYNC 명령어는 한 시점에 하나의 프로세서에 의해서만 송출되며 소프트웨어에 의해 제어된다.
각각의 프로세서 A와 B는 TLBSYNC 마스터 프로세서 혹은 스누핑 프로세서로서 동작할 수 있다. TLBSYNC 명령어의 실행은 이전의 모든 TLBIE 명령어가 시스템 버스(20)로 송출되었다는 것을 보장하지는 않는다. 더우기, 만일 이전의 TLBIE 명령어가 시스템 버스(20)상에서 완료되었다면, TLBSYNC 명령어의 실행은 이러한 이전의 TLBIE 명령어가 스누핑 프로세서에 의해 완료되었다는 것을 보장하지는 않는다. 따라서, 예시적인 실시예에서는, 소프트웨어를 통해 TLBSYNC 명령에 앞에 SYNC 명령어를 두어 이 TLBSYNC 명령어 이전에 수행된 모든 TLBIE 명령어가 시스템 버스(20)상에서 완료되었고 TLBSYNC 명령어가 시스템 버스(20)에 송출되기 전에 모든 프로세서에 의해 완료되었음이 보장되도록 한다. TLBSYNC 버스 오퍼레이션의 완료는 TLBIE 명령어에 의해 무효화된 변환 엔트리를 사용하였을 수도 있는 다른 프로세서상의 모든 명령어가 완료되었음을 보장한다.
TLBSYNC 명령어에 응답하여, 스누핑 프로세서는 TLB 엔트리를 사용한 모든 로드 명령어, 저장 명령어 및 명령어 인출 명령어가 플러쉬(flush)되거나 수행되었음을 보장한다. 스누프된 TLBSYNC 명령어는 스누핑 프로세서에 대해 만일 SYNC 명령어가 이 스누핑 프로세서에 의해 실행되었다면 가져왔을 효과와 동일한 효과를 가져온다. 스누핑 프로세서는 TLBSYNC 명령어를 완료하기 위해 필요한 횟수 만큼의 재실행을 시스템 버스(20)상에 송출할 수 있다.
예시적인 실시예에서 저장 영역의 일부분이 강제적으로 알려진 상태(known state)로 되어야 할 경우 저장 영역은 모든 프로세서에 대하여 동기된다. SYNC 명령어는 주어진 프로세서에 의해 수행되는 모든 명령어의 효과에 대해 순서화 기능(ordering function)을 제공한다. 이것은 명령어 스트림 내에 SYNC 명령어을 삽입하여 동기화가 필요하다는 것을 명시적으로 표시함으로써 이루어질 수 있다. 프로세서는 SYNC 오퍼레이션을 수행함으로써, 그 프로세서에 의해 그 이전에 개시된 모든 명령어가 SYNC 명령어의 완료 전에 완료되었으며 후속 명령어는 SYNC 명령어가 완료되기 전에는 그 프로세서에 의해 개시되지 않음을 보장한다. SYNC 명령어가 완료되었을 때, SYNC 명령어 이전에 그 프로세서에 의해 개시된 모든 저장 영역 액세스의 효과는, 그 프로세서의 다음 명령어가 수행되기 이전에, 저장 영역을 액세스하는 다른 모든 프로세서 및 메카니즘에 대해, 수행되었을 것이다.
프로세서는 SYNC 오퍼레이션을 사용하여 공유 데이타 구조에 대한 모든 갱신이, 이 데이타 구조상의 로크(lock)를 해제할 저장 명령어를 수행하기 이전에, 다른 모든 프로세서에 의해 인식될 수 있도록 보장한다. 프로세서는 SYNC 명령어를 실행하여 그 프로세서에 의해 실행된 TLBIE 명령어가 그 프로세서에 의해 완료되었다는 것을 보장한다. 그러나, SYNC 명령어의 실행은 TLBIE 명령어가 다른 프로세서에 의해 완료되기를 기다리지 않는다. 따라서, 예시적인 실시예에서 프로세서는 TLBSYNC 명령어에 이어서 SYNC 오퍼레이션을 실행하여 이전의 모든 TLBIE 명령어가 모든 프로세서에 의해 완료되었음을 보장한다.
SYNC 명령어는 이후의 모든 명령어에 대해 장벽(barrier)으로서 작용하며, 다른 모든 프로세서내의 수행되지 않은 스누프 푸쉬(snoop pushes)의 완료를 기다린다. 보다 상세히 설명하면, 프로세서는 이전의 모든 명령어의 실행을 종료( 및 완료)할 때까지 SYNC 명령어를 디스패치 단계(dispatch stage)에 유지한다. 프로세서가 이전의 모든 명령어를 완료한 이후, SYNC 버스 오퍼레이션이 시스템 버스(20)상에 송출된다. 프로세서는 SYNC 버스 오퍼레이션이 완료될 때까지 후속 명령어를 디스패치하지 않는다.
만일 프로세서가 SYNC 버스 오퍼레이션에 응답하여 시스템 버스(20)상에서 재시도 신호를 수신한 경우, 프로세서는 SYNC 버스 오퍼레이션을 R=1로 하여 재송출한다. 만일 프로세서가 이 SYNC 버스 오퍼레이션에 응답하여 시스템 버스(20)상에서 널 신호를 수신하면, 이 프로세서는 SYNC 버스 오퍼레이션을 완료한다. SYNC 버스 오퍼레이션에 응답하여, 프로세서는 이전의 모든 스누프된 버스 오퍼레이션 및 이전의 스누프된 버스 오퍼레이션에 의해 야기된 모든 스누프푸쉬가 시스템 버스(20)상에서 완료되지 않은 한 이들이 완료될 때까지 하나 이상의 재실행 신호를 시스템 버스(20)상에서 수신하며, 이들이 완료된 경우 프로세서는 SYNC 버스 오퍼레이션에 응답하여 시스템 버스(20)상에서 널 신호를 수신한다. SYNC 오퍼레이션에 응답하여, 프로세서는 스누프된 버스 오퍼레이션으로 인한 모든 저장 버퍼 엔트리를 완료할 때까지 후속 명령어를 디스패치하지 않는다. 만일 재순서화(reordering)가 발생할 수 없고 메모리 어레이에 대한 액세스가 단지 시스템 버스(20)로 부터인 경우에는 메모리 장치는 SYNC 버스 오퍼레이션을 무시할 수 있다.

Claims (42)

  1. 장치(devices)간의 통신을 수행하는 방법에 있어서, 제1장치(a first device)로부터 신호를 출력(output)하는 단계와; 상기 신호에 응답하여, 제2장치(a second signal)에 의해 적어도 하나의 액션(at least one action)을 개시(initiate)라는 단계와; 상기 제2장치가 상기 동작을 완료(complete)했는지의 여부와, 상기 제2장치의 오퍼레이션(operation)이 상기 제1장치가 상기 출력신호를 재출력(reoutput)하는 것과 무관한지의 여부를 나타내는 표시신호(indication)을 출력하는 단계를 포함하는 장치간의 통신 수행 방법.
  2. 제1항에 있어서, 상기 제2장치가 상기 액션을 완료하는데 실패한 것과 상기 제2장치의 오퍼레이션이 상기 제1장치가 상기 신호를 재출력하는 것에 종속적임을 나타내는 상기 표시신호에 응답하여, 상기 제1장치로부터 상기 신호를 재출력하는 단계를 더 포함하는 장치간의 통신 수행 방법.
  3. 제2항에 있어서, 상기 재출력 신호에 응답하여 상기 제2장치가 상기 액션을 완료했는지 여부를 나타내는 부가적인 표시신호(an additional indication)를 출력하는 단계를 더 포함하는 장치간의 통신 수행 방법.
  4. 제2항에 있어서, 상기 제2장치로부터 부가적인 신호(an additional signal)를 출력하는 단계를 더 포함하며, 상기 재출력 단계는 상기 부가적인 신호에 응답하여 상기 제1장치로부터 상기 신호를 재출력하는 단계를 갖는 장치간의 통신 수행 방법.
  5. 제4항에 있어서, 상기 부가적인 신호를 출력하는 단계는 상기 제2장치가 상기 액션을 완료하는 것에 응답하여 상기 부가적인 신호를 출력하는 단계를 갖는 장치간의 통신 수행 방법.
  6. 제4항에 있어서, 상기 부가적인 신호를 출력하는 단계는 상기 제2장치가 상기 액션의 완료를 예견(predict)한 것에 응답하여 상기 부가적인 신호를 출력하는 단계를 갖는 장치간의 통신 수행 방법.
  7. 제6항에 있어서, 상기 재출력 신호에 응답하여 상기 제2장치가 상기 액션을 완료했는지를 나타내는 부가적인 표시신호를 출력하는 단계를 더 포함하는 장치간의 통신 수행 방법.
  8. 제7항에 있어서, 상기 부가적인 표시신호를 출력하는 단계는 상기 제2장치가 상기 액션을 완료하는데 실패하여 상기 제2장치가 상기 액션의 완료를 잘못 예견한 것을 나타내는 상기 부가적인 표시신호를 출력하는 단계를 포함하는 장치간의 통신 수행 방법.
  9. 제1항에 있어서, 상기 제2장치가 상기 액션을 완료하면 상기 표시신호는 제1유형(a first type)이고, 상기 제2장치가 상기 액션을 완료하는데 실패하고 상기 제2장치의 오퍼레이션은 상기 제1장치가 상기 제1신호를 재출력하는 것에 종속적이면 상기 표시신호는 제2유형(a second type)이고, 상기 제2장치가 상기 액션을 완료하는데 실패하고 상기 제2장치의 오퍼레이션을 상기 제1장치가 상기 신호를 재출력하는 것에 무관한 상기 표시신호는 제3유형(a third type)인 장치간의 통신 수행 방법.
  10. 제9항에 있어서, 상기 제2유형의 표시신호는 재실행 표시신호(a rerun indication)인 장치간의 통신 수행 방법.
  11. 제10항에 있어서, 상기 제3유형의 표시신호는 재시도 표시신호(a retry indication)인 장치간의 통신 수행 방법.
  12. 제11항에 있어서, 상기 제1유형의 표시신호는 널 표시신호(a null indication)인 장치간의 통신 수행 방법.
  13. 장치간의 통신을 수행하는 방법에 있어서, 제1장치로부터 신호를 출력하는 단계와; 상기 신호에 응답하여, 제2장치 및 제3장치에 의해 적어도 하나의 액션을 개시하는 단계와; 상기 제2장치 및 제3장치가 상기 액션을 완료했는지를 나타내는 표시신호를 출력하는 단계와; 상기 제2장치가 상기 액션을 완료하는데 실패하였고 상기 제3장치가 상기 액션을 완료했음을 나타내는 상기 표시신호에 응답하여, 상기 제3장치에 의한 상기 액션을 재개시(reinitiate)하지 않고, 상기 제1장치로부터 상기 신호를 재출력하는 단계를 포함하는 장치간의 통신 수행 방법.
  14. 제13항에 있어서, 상기 재출력 신호에 응답하여 상기 제2장치가 상기 액션을 완료했는지를 나타내는 부가적인 표시신호를 출력하는 단계를 더 포함하는 장치간의 통신 수행 방법.
  15. 제13항에 있어서, 상기 제2장치로부터 부가적인 신호를 출력하는 단계를 더 포함하며, 상기 재출력 단계는 상기 부가적인 신호에 응답하여 상기 제1장치로부터 상기 신호를 재출력하는 단계를 갖는 장치간의 통신 수행 방법.
  16. 제15항에 있어서, 상기 부가적인 신호를 출력하는 단계는 상기 제2장치가 상기 액션을 완료하는 것에 응답하여 상기 부가적인 신호를 출력하는 단계를 갖는 장치간의 통신 수행 방법.
  17. 제15항에 있어서, 상기 부가적인 신호를 출력하는 단계는 상기 제2장치가 상기 액션의 완료를 예견한 것에 응답하여, 상기 부가적인 신호를 출력하는 단계를 갖는 장치간의 통신 수행 방법.
  18. 제17항에 있어서, 상기 재출력 신호에 응답하여 상기 제2장치가 상기 액션을 완료했는지를 나타내는 부가적인 표시신호를 출력하는 단계를 더 포함하는 장치간의 통신 수행 방법.
  19. 제18항에 있어서, 상기 부가적인 표시신호를 출력하는 단계는 상기 제2장치가 상기 액션을 완료하는데 실패하여 상기 제2장치가 상기 액션의 완료를 잘못 예견한 것을 나타내는 상기 부가적인 표시신호를 출력하는 단계를 갖는 장치간의 통신 수행 방법.
  20. 제13항에 있어서, 상기 표시신호를 출력하는 단계는, 상기 제2장치로부터 상기 제2장치가 상기 액션을 완료하는데 실패한 것을 나타내는 재실행 표시신호를 출력하는 단계와; 상기 제3장치로부터 상기 제3장치가 상기 액션을 완료한 것을 나타내는 널(null) 표시신호를 출력하는 단계를 갖는 장치간의 통신 수행 방법.
  21. 제13항에 있어서, 상기 표시신호를 출력하는 단계는 상기 액션을 개시하고 나서 사전결정된 시간(a predetermined time)이 경과되면 상기 표시신호를 출력하는 단계를 갖는 장치간의 통신 수행 방법.
  22. 장치간의 통신 수행 시스템에 있어서, 신호를 출력하는 제1장치와; 상기 제1장치와 접속된 제2장치로서, 상기 신호에 응답하여 적어도 하나의 액션을 개시하고 자신이 상기 액션을 완료했는지의 여부와 자신의 오퍼레이션이 상기 제1장치가 상기 신호를 재출력하는 것과 무관한 지의 여부를 나타내는 표시신호를 출력하는 상기 제2장치를 포함하는 장치간의 통신 수행 시스템.
  23. 제22항에 있어서, 상기 제2장치가 상기 액션을 완료하는데 실패한 것과 상기 제2장치의 오퍼레이션이 상기 제1장치가 상기 신호를 재출력하는 것에 종속적임을 나타내는 상기 표시신호에 응답하여, 상기 제1장치가 상기 신호를 재출력하는 장치간의 통신 수행 시스템.
  24. 제23항에 있어서, 상기 재출력 신호에 응답하여, 상기 제2장치는 자신이 상기 액션을 완료했는지 여부를 나타내는 부가적인 표시신호를 출력하는 장치간의 통신 수행 시스템.
  25. 제23항에 있어서, 상기 제2장치는 부가적인 신호를 출력하고, 상기 제1장치는 상기 부가적인 신호에 응답하여 상기 신호를 재출력하는 장치간의 통신 수행 시스템.
  26. 제25항에 있어서, 상기 제2장치는 자신이 상기 액션을 완료한 것에 응답하여 상기 부가적인 신호를 출력하는 장치간의 통신 수행 시스템.
  27. 제25항에 있어서, 상기 제2장치는 자신이 상기 액션의 완료를 예견한 것에 응답하여 상기 부가적인 신호를 출력하는 장치간의 통신 수행 시스템.
  28. 제27항에 있어서, 상기 제2장치는 상기 재출력 신호에 응답하여 상기 제2장치가 상기 액션을 완료했는지 여부를 나타내는 부가적인 표시신호를 출력하는 장치간의 통신 수행 시스템.
  29. 제28항에 있어서, 상기 제2장치는 자신이 상기 액션을 완료하는데 실패하여 자신이 상기 액션의 완료를 잘못 예견했음을 나타내는 상기 부가적인 표시신호를 출력하는 장치간의 통신 수행 시스템.
  30. 제22항에 있어서, 상기 제2장치가 상기 액션을 완료하면 상기 표시신호는 제1유형이고, 상기 제2장치가 상기 액션을 완료하는데 실패하고 상기 제2장치의 오퍼레이션은 상기 제1장치가 상기 제1신호를 재출력하는 것에 종속적이면 상기 표시신호는 제2유형이고, 상기 제2장치가 상기 액션을 완료하는데 실패하고 상기 제2장치의 오퍼레이션은 상기 제1장치가 상기 신호를 재출력하는 것에 무관하면 상기 표시신호는 제3유형인 장치간의 통신 수행 시스템.
  31. 제30항에 있어서, 상기 제2유형의 표시신호는 재실행 표시신호인 장치간의 통신 수행 시스템.
  32. 제31항에 있어서, 상기 제3유형의 표시신호는 재시도 표시신호인 장치간의 통신 수행 시스템.
  33. 제32항에 있어서, 상기 제1유형의 표시신호는 null 표시신호인 장치간의 통신 수행 시스템.
  34. 장치간의 통신 수행 시스템에 있어서, 신호를 출력하는 제1장치와; 상기 제1장치에 접속되며, 상기 신호에 응답하여 적어도 하나의 액션을 개시하고 자신이 상기 액션을 완료했는지를 나타내는 표시신호를 출력하는 제2장치 및 제3장치를 포함하되; 상기 제1장치는, 상기 제2장치가 상기 액션을 완료하는데 실패하였고 상기 제3장치가 상기 액션을 완료했음을 나타내는 상기 표시신호에 응답하여, 상기 제3장치에 의한 상기 액션을 재개시키지 않고, 상기 신호를 재출력하는 장치간의 통신 수행 시스템.
  35. 제34항에 있어서, 상기 제2장치는, 상기 재출력 신호에 응답하여 자신이 상기 액션을 완료했는지를 나타내는 부가적인 표시신호를 출력하는 장치간의 통신 수행 시스템.
  36. 제34항에 있어서, 상기 제2장치는 부가적인 신호를 출력하며, 상기 제1장치는 상기 부가적인 신호에 응답하여 상기 신호를 재출력하는 장치간의 통신 수행 시스템.
  37. 제36항에 있어서, 상기 제2장치는 자신이 상기 액션을 완료한 것에 응답하여 상기 부가적인 신호를 출력하는 장치간의 통신 수행 시스템.
  38. 제36항에 있어서, 상기 제2장치는 자신이 상기 액션의 완료를 예견한 것에 응답하여 상기 부가적인 신호를 출력하는 장치간의 통신 수행 시스템.
  39. 제38항에 있어서, 상기 제2장치는, 상기 재출력 신호에 응답하여 자신이 상기 액션을 완료했는지 여부를 나타내는 부가적인 표시신호를 출력하는 장치간의 통신 수행 시스템.
  40. 제39항에 있어서, 상기 제2장치는, 자신에 상기 액션을 완료하는데 실패하여 자신이 상기 액션의 완료를 잘못 예견했음을 나타내는 상기 부가적인 표시신호를 출력하는 장치간의 통신 수행 시스템.
  41. 제34항에 있어서, 상기 표시신호는, 상기 제2장치로부터 상기 제2장치가 상기 액션을 완료하는데 실패했음을 나타내는 재실행 표시신호와; 상기 제3장치로부터 상기 제3장치가 상기 액션을 완료했음을 나타내는 널(null) 표시신호를 구비하는 장치간의 통신 수행 시스템.
  42. 제34항에 있어서, 상기 제2장치 및 제3장치는 상기 액션을 개시한 이래 사전결정된 시간이 경과되면 상기 표시신호를 출력하는 장치간의 통신 수행 시스템.
KR1019950027534A 1994-08-31 1995-08-30 장치간의 통신 수행 방법 및 통신 수행 시스템 KR0153487B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US29887394A 1994-08-31 1994-08-31
US8/298,873 1994-08-31
US08/298,873 1994-08-31

Publications (2)

Publication Number Publication Date
KR960008561A KR960008561A (ko) 1996-03-22
KR0153487B1 true KR0153487B1 (ko) 1998-11-16

Family

ID=23152337

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950027534A KR0153487B1 (ko) 1994-08-31 1995-08-30 장치간의 통신 수행 방법 및 통신 수행 시스템

Country Status (6)

Country Link
US (1) US5745698A (ko)
EP (1) EP0700004A3 (ko)
JP (1) JPH0877126A (ko)
KR (1) KR0153487B1 (ko)
CN (2) CN1191533C (ko)
CA (1) CA2155890A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112270A (en) * 1997-10-31 2000-08-29 International Business Machines Corporation Method and system for high speed transferring of strictly ordered bus operations by reissuing bus operations in a multiprocessor system
US6314495B1 (en) * 1998-01-07 2001-11-06 International Business Machines Corporation Method and apparatus for executing multiply-initiated, multiply-sourced variable delay system bus operations
US6128705A (en) * 1998-01-07 2000-10-03 International Business Machines Corporation Method and apparatus for executing multiply-initiated, multiply-sourced variable delay system bus operations
US6192453B1 (en) * 1998-07-13 2001-02-20 International Business Machines Corporation Method and apparatus for executing unresolvable system bus operations
US6898675B1 (en) 1998-08-24 2005-05-24 International Business Machines Corporation Data received before coherency window for a snoopy bus
US6976132B2 (en) * 2003-03-28 2005-12-13 International Business Machines Corporation Reducing latency of a snoop tenure
WO2007099614A1 (ja) 2006-02-28 2007-09-07 Fujitsu Limited システムコントローラおよびキャッシュ制御方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3603932A (en) * 1969-04-07 1971-09-07 Bell Telephone Labor Inc Party line stations for selective calling systems
US4218739A (en) * 1976-10-28 1980-08-19 Honeywell Information Systems Inc. Data processing interrupt apparatus having selective suppression control
US4412285A (en) * 1981-04-01 1983-10-25 Teradata Corporation Multiprocessor intercommunication system and method
US5067071A (en) * 1985-02-27 1991-11-19 Encore Computer Corporation Multiprocessor computer system employing a plurality of tightly coupled processors with interrupt vector bus
US4785394A (en) * 1986-09-19 1988-11-15 Datapoint Corporation Fair arbitration technique for a split transaction bus in a multiprocessor computer system
US4937734A (en) * 1989-02-21 1990-06-26 Sun Microsystems, Inc. High speed bus with virtual memory data transfer and rerun cycle capability
US5208914A (en) * 1989-12-29 1993-05-04 Superconductor Systems Limited Partnership Method and apparatus for non-sequential resource access
US5202973A (en) * 1990-06-29 1993-04-13 Digital Equipment Corporation Method of controlling a shared memory bus in a multiprocessor system for preventing bus collisions and for ensuring a full bus
US5191649A (en) * 1990-12-21 1993-03-02 Intel Corporation Multiprocessor computer system with data bus and ordered and out-of-order split data transactions
US5261109A (en) * 1990-12-21 1993-11-09 Intel Corporation Distributed arbitration method and apparatus for a computer bus using arbitration groups
US5274763A (en) * 1990-12-28 1993-12-28 Apple Computer, Inc. Data path apparatus for IO adapter
US5195089A (en) * 1990-12-31 1993-03-16 Sun Microsystems, Inc. Apparatus and method for a synchronous, high speed, packet-switched bus
US5416510A (en) * 1991-08-28 1995-05-16 Stereographics Corporation Camera controller for stereoscopic video system
JP3466212B2 (ja) * 1991-09-17 2003-11-10 インテル・コーポレーション コンピュータシステム
US5367695A (en) * 1991-09-27 1994-11-22 Sun Microsystems, Inc. Bus-to-bus interface for preventing data incoherence in a multiple processor computer system
US5463753A (en) * 1992-10-02 1995-10-31 Compaq Computer Corp. Method and apparatus for reducing non-snoop window of a cache controller by delaying host bus grant signal to the cache controller
US5459459A (en) * 1992-12-28 1995-10-17 General Electric Company Method and apparatus for transmitting data from an energy meter
JP3261665B2 (ja) * 1993-01-29 2002-03-04 インターナショナル・ビジネス・マシーンズ・コーポレーション データ転送方法及びデータ処理システム

Also Published As

Publication number Publication date
JPH0877126A (ja) 1996-03-22
CA2155890A1 (en) 1996-03-01
EP0700004A2 (en) 1996-03-06
CN1205792C (zh) 2005-06-08
CN1127961A (zh) 1996-07-31
CN1191533C (zh) 2005-03-02
EP0700004A3 (en) 1998-07-01
CN1343054A (zh) 2002-04-03
US5745698A (en) 1998-04-28
KR960008561A (ko) 1996-03-22

Similar Documents

Publication Publication Date Title
JP2641819B2 (ja) キャッシュ・コントローラ並びにフォールト・トレラント・コンピュータ及びそのデータ転送方式
US5133074A (en) Deadlock resolution with cache snooping
JP3218773B2 (ja) キャッシュ・コントローラ
US5572703A (en) Method and apparatus for snoop stretching using signals that convey snoop results
EP0748481B1 (en) Highly pipelined bus architecture
EP0258559B1 (en) Cache memory coherency control provided with a read in progress indicating memory
JPH0625985B2 (ja) 多重プロセッサコンピュータシステムにおけるプロセッサによるシステムリソースに対する適切なアクセスを保証するための方法及び装置
JPH07319767A (ja) コンピュータ・システム
US6553442B1 (en) Bus master for SMP execution of global operations utilizing a single token with implied release
JPH0670779B2 (ja) フェッチ方法
US5822765A (en) System and method for resolving contention arising from execution of cache coherency operations in a multiple cache computer system
US6507880B1 (en) Bus protocol, bus master and bus snooper for execution of global operations utilizing multiple tokens
KR0153487B1 (ko) 장치간의 통신 수행 방법 및 통신 수행 시스템
EP0380842A2 (en) Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units
EP0364226B1 (en) A system for performing a serializing control of a reference to a main storage
US6883077B2 (en) Cache control device and method with TLB search before key receipt
US6460101B1 (en) Token manager for execution of global operations utilizing multiple tokens
TW459201B (en) Flash memory system that ensures normal operation of synchronous cache access and the access method of flash memory
US6460100B1 (en) Bus snooper for SMP execution of global operations utilizing a single token with implied release
US6430639B1 (en) Minimizing use of bus command code points to request the start and end of a lock
JPH11272637A (ja) マルチプロセッサ・システムおよび方法
JP3808525B2 (ja) ライト及び/もしくはリードアクセス優先順位管理装置
US6397304B1 (en) Method and apparatus for improving system performance in multiprocessor systems
US20040111569A1 (en) High speed memory cloning facility via a coherently done mechanism
US6269360B1 (en) Optimization of ordered stores on a pipelined bus via self-initiated retry

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

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee