[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR970001919B1 - 다수의 버스간의 정보 전송 시스템 및 방법 - Google Patents

다수의 버스간의 정보 전송 시스템 및 방법 Download PDF

Info

Publication number
KR970001919B1
KR970001919B1 KR1019930030596A KR930030596A KR970001919B1 KR 970001919 B1 KR970001919 B1 KR 970001919B1 KR 1019930030596 A KR1019930030596 A KR 1019930030596A KR 930030596 A KR930030596 A KR 930030596A KR 970001919 B1 KR970001919 B1 KR 970001919B1
Authority
KR
South Korea
Prior art keywords
bus
data
information
address
face
Prior art date
Application number
KR1019930030596A
Other languages
English (en)
Other versions
KR940018760A (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 KR940018760A publication Critical patent/KR940018760A/ko
Application granted granted Critical
Publication of KR970001919B1 publication Critical patent/KR970001919B1/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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

내용없음.

Description

다수의 버스간의 정보 전송 시스템 및 방법
제1도는 다수의 버스간 정보 전송 시스템의 제1실시예의 블럭도.
제2a~제2d도는 제1도의 시스템의 도작 설명도.
제3도는 제1도는 프로세스 장치의 시스템 인터페이스의 개념적 블럭도.
제4도는 다수간 버스간 정보 전송 시스템의 제2실시예의 블럭도.
* 도면의 주요부분에 대한 부호의 설명
10 : 정보 전송 시스템 12, 14 : 버스
16, 18, 24, 120, 122 : 프로세스 장치 20, 26, 124 : 입출력 장치
22, 28, 126 : 중재 로직 34 : 버스간 통신 로직(ILC)
36 : 아웃바운드 큐 38 : 인바운드 큐
40 : 제어 로직 100 : 시스템 인터페이스
102 : 스누프 조직 104 : 통합 캐시 메모리
106 : 읽기 큐 108 : 저장 큐
110 : 주소 변환 및 제어 로직 112 : 페쳐
114 : 실행 유닛
본 발명은 데이타 처리 시스템, 특히 다수의 버스 간의 정보 전송 시스템 및 방법에 관한 것이다.
데이타 처리 시스템의 효율 제고를 위한 기술에 의거, 버스를 통해 공통 기억 장치에 연결된 다수의 프로세스 장치들에 의해 명령들이 동시에 실행된다. 하나 이상의 프로세스 장치들이 빈번하게 액세스되는 정보를 저장하는 내장 캐시 매모리(resident cache memory)를 가짐으로써 그 정보가 필요할 때마다 공통 기억 장치를 다시 액세스할 필요가 없게 된다. 다수의 프로세스 장치들간에 공유되는 정보의 무결성(integrity), 특히 프로세스 장치들중 하나의 장치에 의해 수정된 정보의 무결성을 유지하기 위해 코히어런시 기법(coherency technique)이 사용된다. 또한, 하나 이상의 프로세스 장치들은 버스를 통해서 파이프라이닝과 분할 트랜잭션 동작들을 지원할 수도 있다.
다수의 버스들간의 정보 전송이 몇가지 종래의 기법들에 의해 시도되어 왔다. 그러나, 종래의 전형적인 기법들은 버스들이 서로 비동기적으로 동작하거나, 하나 이상의 버스들이 코히어런시 기법, 파이프라이닝 또는 분할 트랜잭션 동작(split-transaction operation)을 지원하는데 있어서 해결 불능의 교착 상태(unresolvable deadlock conditions)에 빠지지 않고 신뢰성 있는 정보 전송을 수행하는데 실패하였다.
따라서, 서로 비동기적으로 동작하는 다수의 버스 간에 정보가 신뢰성 있게 전송되는, 다수의 버스 간의 정보 전송 시스템 또는 방법이 필요하게 되었다. 또한, 정보 전송이 해결 불능의 교착 상채에 빠지지 않는 다수의 버스 간의 정보 전송 시스템 또는 방법이 필요하게 되었다. 게다가, 하나 이상의 버스들이 코히어런시 기법, 파이프라이닝 또는 분할 트랜잭션 동작을 지원하는, 다수의 버스 간의 정보 전송 시스템 또는 방법이 필요하게 되었다.
첫째 관점에서, 본 발명의 방법과 시스템은 다수의 버스 간에 정보를 전송한다.
복수의 제1버스 장치 사이는 제1버스를 통해정보를 전송한다. 상기 제1버스 장치들 중의 적어도 하나의 장치는 각각의 연관된 어드레스 페이스에 각각 응답하여 다수의 데이타 페이스를 완료함으로써 정보를 전송할 수 있으며, 상기 데이타 페이스는 상기 각각의 연관된 어드레스 페이스의 순서대로 완료되기 위해 순서화된다.
복수의 제2버스 장치 사이는 제2버스를 통해 정보를 전송한다.
제1버스와 제2버스 사이는 로직 수단을 통해 정보를 전송한다. 로직 수단을 사용하여, 상기 제1버스 장치가 상기 제2버스 상에서의 별도의 액션을 기다리는 동안 상기 제2버스 장치가 제1버스 장치의 액션을 기다리는 조건에 응답하여 상기 제2데이타 페이스가 상기 제1데이타 페이스 이전에 완료될 수 있도록 상기 제1버스 장치의 액션을 인에이블한다.
둘째 관점에서, 본 발명의 방법과 시스템은 다수의 버스들 사이에 정보를 전송한다. 복수의 제1버스 장치 사이는 제1버스를 통해 정보를 전송한다. 어드레스 페이프(address phase)를 데이타 페이스(data phase)와는 별도로 완성함으로써 하나 이상의 제1버스 장치는 정보를 전송한다. 복수의 제2버스 장치 사이는 제2버스를 통하여 정보를 전송한다. 로직 수단을 사용하여, 어드레스 페이스 및 데이타 페이스가 모니터(monitor)되고 이에 응답하여 제1버스 및 제2버스를 통한 정보의 전송 및 제1버스 및 제2버스 사이의 정보의 전송을 조정한다.
본 발명의 이 관점들의 기술적 장점은 서로 간에 비동기적으로 동작하는 다수의 버스들간에 정보가 신뢰성 있게 전송된다는데 있다. 본 발명의 이 관점들의 또 하나의 기술적 장점은 정보 전송이 해결 불능의 교착 상태에 빠지지 않는다는데 있다. 본 발명의 이 관점들의 또 다른 기술적 장점은 다수의 버스 간에 정보가 전송되며, 이들 중 하나 이상의 버스들이 코히어런시 기법, 파이프라이닝 또는 분할 트랜잭션 동작을 지원하는데 있다.
셋째 관점에서, 본 발명의 처리를 위한 장치는 이 장치를 버스와 제어선에 결합하기 위한 수단을 포함한다. 이 장치는 각각의 관련된 어드레스 페이스에 응답하여 각각 다수의 다이타 페이스들을 완료함으로써 버스를 통해 정보를 전송하기 위한 장치용의 수단을 더 포함한다. 데이타 페이스들은 각각의 관련 어드레스 페이스들의 순서로 완료되기 위해 순서화된다. 게다가, 이 장치는 제어선의 상태에 응답해서 선행 데이타 페이스 이전에 특정한 데이타 페이스를 선택적으로 완료하기 위한 장치용의 수단을 포함한다.
본 발명의 이 관점의 기술적 장점은 해결 불능의 교착 상태에 빠지지 않고 다수의 버스 간에 정보를 전송하는 시스템용의 처리 장치가 마련된다는 것이다.
본 발명의 바람직한 실시예와 그 장점은 도면 제1도~제4도를 참조하면 가장 잘 이해할 수 있고, 각 도면에서 대응하는 부분에는 같은 도면 부호를 붙였다. 제1도는 제1실시예에 따른 버스(12)와 버스(14)간에 정보를 전송하기 위한 시스템(10)의 블럭도이다. 버스(12)는 어드레스 버스 ADDRESS (A)와 데이타 버스 DATA (A)를 포함한다. 또한, 버스(12)는 이하 상술하는 제어선 데이타 버스 기록 전용 DBWO(A), 높은 우선순위 스누프 요청(high-priority snoop request) HP_SNP_REQ(A), 및 어드레스 재시행(address retry) ARTRY(A)를 포함한다. 간결하게 하기 위해, 버스(12)의 부가적인 제어선은 도시하지 않았다. 바람직한 실시예에 있어서, 어드레스 버스 ADDRESS(A), DATA(A)의 폭은 32비트이고, 데이타 버스 DATA(A)의 폭은 64비트이고, 각각은 프로세스 장치(16,18)의 풀 클럭 레이트(full clock rate)에서 동작할 수 있다. 프로세스 장치(16,18) 각각은 버스(12)의 버스 ADDRESS(A), DATA(A)와 버스(12)의 제어선 DBWO(A), HP_SNP_REQ(A), ARTRY(A)에 접속되어 있다. 하나의 입출력 장치(20)이 버스(12)의 제어선 ADDRESS(A), DATA(A)와 제어선 ARTRY(A)에 접속되어 있다. 바람직한 실시예에서, 입출력 장치(20)은 하나의 기억 장치이다. 또 다른 실시예에서, 입출력 장치(20)은 디스크 저장 유닛 또는 버스 인터페이스 유닛 등 다른 형식의 입출력 장치이다.
중재 로직(arbitration logic)(22)는 제어선 DBWO(A)에 접속된다 또한, 중재 로직(22)는 이하 상술하는 바와 같이 제어선 버스 요청BR1(A), 어드레스 버스 허용 BG1(A) 및 데이타 베이스 허용 DBG1(A)를 통해서 프로세스 장치(16)에 결합된다. 이와 유사하게, 중재 로직은 이하 상술되는 바와 같이 제어선 버스 요청 BR2(A), 어드레스 버스 허용 BG2(A) 및 데이타 버스 허용 DBG2(A)를 통해서 프로세스 장치(18)에 접속된다.
버스(14)는 어드레스 버스 ADDRESS(B)와 데이타 버스 DATA(B)를 포함한다. 실시예에 있어서, 버스(14)는 NU-BUS로서 구성된다. 프로세스 장치(24)와 입출력 장치(26)은 버스(14)의 버스 ADDRESS(B), DATA(B)에 접속된다. 중재 로직(28)은 이하 상술하는 바와 같이 제어선 버스 요청 BR1(B)와 버스 허용 BG1(B)를 통해서 프로세스 장치(24)에 결합된다.
실시예에 있어서, 프로세스 장치(24)는 NU-BUS구조에 적합한 마이크로프로세서이다. 바람직한 실시예에 있어서, 입출력 장치(26)은 기억 장치이다. 또 다른 실시예에 있어서, 입출력 장치(26)은 디스크 저장 유닛 또는 버스 인터페이스 유닛 등 다른 형식의 입출력 장치이다.
버스간 통신 로직(ICL)(34)는 아웃바운드 큐(outbound queue)(36), 인바운드 큐(inbound queue)(38) 및 제어로직(40)을 포함한다. 아웃바운드 큐(36)와 인바운드 큐(38)은 각각 버스 ADDRESS(A), DATA(A), ADDRESS(B) 및 DATA(B)에 접속된다. 제어로직(40)은 이하 상술하는 바와 같이 제어선 버스 요청 BR(I), 어드레스 버스 허용 BG(I), 데이타 버스 허용 DBG(I), DEADLOCK(I)를 통하여 중재 로직(22)에 결합된다. 또한, 제어로직(40)은 이하 상술하는 바와 같이 제어선 버스 요청 BR(O)와 버스허용 BG(O)를 통하여 중재 로직(28)에 결합된다. 그리고, 제어 로직(40)은 버스(12)의 제어선 HP_SNP_REQ(A), ARTRY(A)에 연결된다.
프로세스 장치(16,18)과 입출력 장치(20)은 함께 버스(12)에 연결된 장치들의 세트를 형성한다. 다른 실시예에 있어서, 입출력 장치(20)과 프로세스 장치(18)은 점선(42)로 둘러싼 바와 같이, 일체로 되어 있다. 또다른 실시예에 있어서, 그 장치들의 세트는 버스(12)에 연결된 추가의 프로세스 장치들과 입출력 장치들을 포함한다. 또 다른 실시예에 있어서, 프로세스 장치(18)은 버스(12)에 연결되어 있지 않다.
프로세스 장치(24)와 입출력 장치(26)은 버스(14)에 연결된 장치들의 세크를 형성한다. 다른 실시예에 있어서, 입출력 장치(26)과 프로세스 장치(24)는 점선(44)로 둘러싼 바와 같이 일체로 되어 있다. 또다른 실시예에 있어서, 장치들의 세트는 버스(14)에 연결된 추가의 프로세스 장치들과 입출력 장치들을 포함한다.
버스(12,14)는 중앙 중재 장치에 의해 제어되지 않으므로, 버스(14)를 통한 정보의 전송은 버스(12)를 통한 정보의 전송과 비동기적이다. 버스(12)는 ICL(34), 입출력 장치(20) 및 프로세스 장치(16,18)사이에 정보를 전송한다. 중재 로직(22)는 버스(12)에 연결된 잠재적인 버스 매스터들, 즉, ICL(34)와 프로세스 장치들(16,18)사이에 중재함으로써 정보 전송을 동기화시킨다. 버스 매스터는 어드레스 버스 또는 데이타 버스를 제어하여 트랜잭션(transation)을 개시 또는 요청할 수 있다.
트랜잭션은 버스 장치들간의 완전한 교환이다. 트랜잭션은 적어도 버스 매스터가 어드레스 버스를 제어하는 하나의 어드레스 페이스 동안의 어드레스 트랜잭션을 포함한다. 트랜잭션은 교환과 관련된 하나 이상의 데이타 페이스 동안에 데이타 버스 상에서의 하나 이상의 데이타 트랜잭션을 더 포함할 수도 있다.
각 잠재적인 버스 매스터는 상술한 바와 같이 관련 버스 요청, 어드레스 버스 허용 및 데이타 버스 허용 제어선들을 통해서 중재 로직(22)에 결합된다. 다른 실시예에 있어서, 추가의 잠재적 버스 매스터들은 버스(12)에 연결되고, 관련 버스 요청, 어드레스 버스 허용 및 데이타 허용 제어선들을 통하여 중재 로직(22)에 각각 결합된다.
버스(14)는 ICL(34), 입출력 장치(26) 및 프로세스 장치(24)사이에 정보를 전송한다. 중재 로직(28)은 버스(14)에 연결된 잠재적 버스 매스터들 즉 ICL(34)와 프로세스 장치(24) 사이에서 중재함으로써 정보 전송을 동기화시킨다. 각 잠재적 버스 매스터는 상술한 바와 같이 관련 버스 요청과 버스 허용 제어선들을 통하여 중재 로직(28)에 결합된다. 다른 실시예에 있어서, 추가의 잠재적 버스 매스터는 버스(14)에 연결되고, 각각 관련 버스 요청, 어드레스 버스 허용 및 데이타 허용 제어선들을 통하여 중재 로직(28)에 결합된다.
버스(12)는 2개의 버스 슬레이브들 즉, 입출력 장치(20)와 ICL(34)에 연결된다. 버스(14)는 2개의 버스 슬레이드브들 즉, 입출력 장치(26)과 ICL(34)에 연결된다. 따라서 ICL(34)는 버스(12)와 버스(14)에 대해 버스 매스터 및 버스 슬레이브로서 동작한다. 버스 슬레이브는 버스 매스터에 의해 어드레스되는 장치이다. 버스 슬레이브는 어드레스 페이스 동안에 식별되고, 데이타 페이스 동안에 버스 매스터를 위한 데이타를 소싱(sourcing) 또는 싱킹(sinking)할 책임이 있다.
제2a도~제2d도는 시스템(10)의 버스 동작을 나타낸다.
제2a도에서, 중재 로직(28)은 종래의 마이크로프로세서 버스 프로토콜을 지원한다. 프로세스 장치(24)와 입출력 장치(26) 사이의 정보 전송을 위해, 프로세스 장치(24)는 어드레스 페이스(보유 기간(tenure))(50a)동안에 어드레스 버스 ADDRESS(B)상에서의 어드레스 트랜잭션을 완료한다. 어드레스 버스 ADDRESS(B)상에서의 어드레스 트랜잭션에 응답하여 프로세스 장치(24)는 어드레스 페이스(50a)와 관련된 데이타 페이스(보유 기간)(50b) 동안에 데이타 버스 DATA(B)상에서의 데이타 트랜잭션을 완료한다. 이와 유사하게, 나중의 정보 전송 동작들은 어드레스 페이스(52a,54a,56a)와 이와 각각 관련된 데이타 페이스(52b,54b,56b)를 갖는다.
제2a도에 도시한 바와 같이, 종래의 마이크로프로세서 버스 프로토콜에서는 어드레스 페이스(50a)는 그 관련된 데이타 페이스(50b)가 완료될 때까지 계속된다. 따라서, 프로세스 장치(24)가 어드레스 페이스(50a)동안에 어드레스 버스 ADDRESS(B)상에서의 어드레스 트랜잭션을 완료한 후에, 프로세스 장치(24)는 관련 데이타 페이스(50b)동안에 데이타 버스 DATA(B)상에서의 데이타 트랜잭션을 완료한 이후까지 어드레스 버스 ADDRESS(B)의 제어를 계속한다. 페이스(50a,50b)동안에 프로세스 장치(24)는 어드레스 버스 ADDRESS(B)와 데이타 버스 DATA(B)를 동시에 제어한다.
이와 비교하여, 중재 로직(22)는 어드레스 버스 ADDRESS(A)상에서의 어드레스 페이스와 데이타 버스 DATA(A) 상에서의 데이타 페이스를 분리하는 것을 지원한다. 이와 같은 방식으로, 중재 로직(22)는 버스(12)상에서의 파이프라인 및 분할 트랜잭션 동작을 지원한다. 예를들면, 프로세스 장치(16)은 제1트랜잭션이 완료되기 전에 버스(12)상에 제2트랜잭션을 개시할 수 있느며, 또 프로세스 장치(16)은 하나의 트랜잭션을 어드레스 트랜잭션과 데이타 트랜잭션으로 분할할 수 있다.
제2b도에서, 프로세스 장치(16)과 입출력 장치(20) 사이의 정보 전송을 위해 어드레스 페이스(60a)는 그 관련된 데이타 페이스(60b)의 이전에 완료되어 어드레스 페이스(60a)와 그 관련된 데이타 페이스(60b)는 별개가 된다. 이러한 분할 트랜잭션 동작에 의해 프로세스 장치(16)는 데이타 버스 DATA(A)를 제어하여야 함이 없이 어드레스 버스 ADDRESS(A)를 제어할 수 있도록 허용된다.
따라서, 프로세스 장치(16,18)은 데이타 버스 DATA(A)를 사용하지 않고 어드레스 버스 ADDRESS(A)를 통해 어드레스만의 전송을 완료하여 버스 트래픽을 최소화 할 수 있어서 데이타 버스의 대역폭(bandwidth)을 유지하게 된다. 또한, 어드레스 페이스(62a)는 그 관련된 데이타 페이스(62b)가 완료될 때까지 계속될 수도 있다. 게다가, 어드레스 페이스와 데이타 페이스가 별개이므로, 다른 프로세스 장치들의 어드레스 페이스(64a,66a)는 그들과 각각 관련된 데이타 페이스(64b,66b)가 완료되기 전에 완료될 수 있어서 프로세서간 파이프라이닝이 달성된다. 이러한 파이프라인 및 분할 트랜잭션 동작들은 데이타 페이스(64b,66b)와 같이 데이타 페이스들을 연속적으로 허용함으로써 데이타 버스 DATA(A)를 효과적으로 사용하고, 따라서 중재 로직(22)로부터의 지시에 응답하여 버스(12)상에서 프로세스 장치의 다수의 트랜잭션들이 효과적으로 인터리빙된다.
제2c도에서, 각 프로세스 장치(16,18)은 프로세서내 파이프라이닝을 지원하기 위한 내부 큐들을 가지고 있다. 프로세스 장치(16)과 입출력 장치(20) 사이의 정보 전송을 위해 프로세스 장치(16)은 어드레스 페이스(70a)를 그 관련된 데이타 페이스(70b)와 관련된 데이타 페이스(70b)가 완료된다. 또한, 어드레스 페이스(72a)동안에 그 관련된 데이타 페이스(72b)가 완료된다.
프로세스 장치(16)의 다른 정보 전송을 위한 어드레스 페이스(74a,76b)는 각각 관련된 데이타 페이스(74b,76b)가 완료되기 전에 완료될 수 있다. 프로세스 장치(16)은 한번에 최대 2개의 미완료(pending) 데이타 페이스를 허용한다. 따라서, 2개의 데이타 페이스가 완료되지 않았다면, 2개의 미완료 데이타 페이스들 중의 하나가 완료될 때까지 프로세스 장치(16)은 다른 하나의 어드레스 페이스를 완료시키지 않는다. 다른 실시예에서, 프로세스 장치(16)은 한번에 2이상의 미완료 데이타 페이스를 허용한다.
제2b도에서, 버스(12)의 프로토콜은 데이타 페이스들(60b,62b,64b,66b)가 그들의 관련 어드레스 페이스(60a,62a,64a,66a)의 순서로 완료하도록 요청하는 것이 보통이다. 마찬가지로, 제2c도에서의 프로세스 장치(16)은 설계에 의해 데이타 페이스들(70b,72b,74b,76b)를 그들의 관련 어드레스 페이스들(70a,72a,74a,76a)의 순서로 완료시킨다.
그러나, 제2d도에서는 이하 상술하는 바와 같이 어떤 상황에서는 중재 로직(22), ICL(34), 프로세스 장치(16,18)에 의해 순서가 뒤바뀐 분할 트랜잭션(out-of order split-transactions)를 지원한다. 이러한 상황에서의 데이타 페이스들(80b,82b,84b,86b)는 그들의 관련 어드레스 페이스들(80a,82a,84a,86a)의 순서로 완료하도록 요청되지는 않는다. 제2d도에서 도시한 바와 같이, 어드레스 페이스(84a)가 어드레스 페이스(86a)보다 앞서 완료됨에도 불구하고, 데이타 페이스(86b)가 데이타 페이스(84b)보다 앞서 완료된다. 이와 같이 하여, 어드레스 페이스(86a)와 그 관련 데이타 페이스(86b)를 포함하는 정보 전송은 어드레스 페이스(84a)와 그 관련 데이타 페이스(84b)를 포함하는 정보 전송 내에 둘러싸이게 된다(enveloped).
각 어드레스 페이스와 데이타 페이스는 3패이스들 즉, 중재, 전송, 종료를 포함한다. 어드레스 페이스의 중재 페이스 동안에, 중재 로직(22)는 버스 중재 신호들에 응답하고 버스 매스터에 어드레스 버스 ADDRESS(A)의 제어를 허용한다. 데이타 페이스의 중재 페이스 동안에, 중재 로직(22)는 버스 매스터에 데이타 버스 DATA(A)의 제어를 허용한다. 잠재적인 다수의 버스 매스터들은 버스(12)의 공유 자원들을 얻기 위해 경쟁한다. 중재 로직(22)는 공정성(fairness) 또는 다른 프로토콜을 지원한다. 게다가, 중재 로직(22)는 버스 매스터가 버스에 대한 중재없이 버스를 제어하도록 중재 부담을 최소화하기 위해 버스 매스터들을 파킹(park)시킬 수 있다.
어드레스 페이스의 전송 페이스 동안 핸드셰이크 선들과 어드레스 버스 ADDRESS(A)는 버스 매스터에 의해 동작된다. 데이타 페이스의 전송 페이스 동안 버스 매스터는 데이타 버스 DATA(A)를 샘플하거나 구동한다. 종료 페이스 동안 그 페이스는 종료되거나 재시행을 위한 신호를 받는다.
특히, 버스(14)의 프로토콜과 중재 로직(28)은 파이프라인 및 분할 트랜잭션 동작을 지원하지 못한다. 버스(12,14)는 유리하게는 비동기적으로 동작하고 중앙 중재 장치에 의해 제어되지 않으며, 버스(12)는 버그(14)에 직접 링크되지 않게 된다. 이와 같이 하여, 버스(12)와 프로세스 장치(16,18)와 파이프라이닝과 분할 트랜잭션의 장점은 버스(12)를 버스(14)에 직접 링크함에 의해 희생되지 않는다.
제3도는 프로세스 장치(16)의 시스템 인터페이스(100)의 개념적 블럭도이다. 프로세스 장치(18)은 프로세스 장치(16)과 설계가 동일하다. 시스템 인터페이스(100)은 통합 캐시 메모리(104)와 어드레스 버스 ADDRESS(A)사이에 결합된 스누프 로직(102)를 포함한다. 캐시 메모리(104)는 명령과 데이타를 저장한다. 캐시 메모리(104)는 8-웨이 세트 연관성(8-way set associativity)을 갖는 물리적으로 어드레스되고 인덱스된 32킬로바이트 캐시이다.
케시 메모리(104)는 128섹터들의 8세트로 조직된다. 각 16-워드 캐시 라인은 2개의 8-워드 섹커들을 포함한다. 이 2개의 섹터들은 인접 메모리(contiguous memory) 어드레스들을 캐시하고 따라서 공통선 어드레스 태그를 공유한다. 캐시코히어런시는 섹터 세분성(granularity)에 의해 유지된다.
어드레스 번역/제어 로직(110)은 캐시 메모리(104), 읽기 큐(106)과 저장 큐(108)에 결합된다. 또한, 어드레스 번역/제어 로직(110)은 명령 페쳐(112)와 실행 유닛(114)에 결합된다. 실행 유닛(114)는 부동 소숫점(floating point) 프로세서 유닛, 고정 소숫점(fixed point) 프로세서 유닛 및 분기(branch) 프로세서 유닛을 포함한다.
스누프 로직(102)는 캐시 메모리(104)의 코히어런시를 위해 버스(12)상에서의 트랜잭션을 스누프한다. 코히어런시는 프로세스 장칙산에 공유된 정보의 일관성(integrity), 특히 프로세스 장치에 의해 수정된 정보의 일관성을 유지하기 위한 메커니즘이다. 캐시 메모리(104), 읽기 큐(106) 또는 저장 큐(108)에 대해 코히어런시 액션이 요청되는지 결정하기 위해, 프로세스 장치(16)은 버스(12)상에서의 트랜잭션들을 모니터함으로써 스누프한다.
시스템 인터페이스(100)은 어드레스 번역/제어 로직(110)과 어드레스 버스 ADDRESS(A) 사이에 각각 결합된 읽기 큐(106)과 저장 큐(108)을 더 포함한다.
제1도를 참조하여 하나의 예로서, 프로세스 장치(16)은 입출력 장치(20)의 어느 특정 어드레스로부터 정보를 입력받는다. 프로세스 장치(16)은 그 정보를 수정하여 캐시 메모리(104)내에 저장한다. 그후, 프로세스 장치(18)이 입출력 장치(20)의 그 특정 어드레스로부터 정보를 입력받고자 시도한다. 프로세스 장치(16)의 스누프 로직(102)는 어드레스를 스누프하고, 스누프된 어드레스에 대해 입출력 장치(20)내의 관련 정보가 수정된 상태로 캐시 메모리(104)에 저장되어 있는지를 결정한다.
이 부합(match)에 응답하여, 프로세스 장치(16)은 ARTRY(A)가 캐시 메모리(104)내의 수정된 정보와 부합함을 프로세스 장치(18)에 알리도록 한다. 프로세스 장치(16)은 프로세스 장치(18)이 수정된 정보에의 액세스를 필요로 하는 것을 인식하므로, 프로세스 장치(16)은 입출력 장치의 특정 어드레스에 대해 수정된 정보의 버스트 라이트 카피백(burst write copyback)(스누프 푸시)를 실행한다. 그리고 나서, 프로세스 장치(18)은 입출력 장치(20)의 특정 어드레스로부터 정보를 성공적으로 입력받는다.
프로세스 장치의 하나의 트랜잭션은 다수의 어드레스 또는 데이타 비이트(beat)를 포함할 수 있다. 버스트는 일반적으로 그 전체 크기가 캐시 섹터와 같은 다수의 비이트 정보 전송이다. 비이트는 일반적으로 다수의 버스 사이클들을 가로질러 확장할 수 있는 프로세스 장치 인터페이스 상의 단일 상태이다. 버스 사이클은 일반적으로 버스 표본 추출 속도(bus sampling rate)에 의해 정의되는 주기이다.
캐시 코히어런시는 섹터 세분성(granularity)에 의해 유지되며, 별개의 코히어런시 상태 비트들은 캐시 메모리(104)의 각 섹터를 우해 유지된다. 라인의 제1섹터가 메모리로부터 채워지면, 프로세스 장치(16)은 제2섹터를 낮은 우선 순위(low-priority) 버스 동작(다이내믹 리로드 동작(dynamic reload operation)이라 부른다)으로서 로드하도록 시도할 수 있다.
캐시 메모리(104)는 페리와 로드/저장 동작을 위한 어드레스 번역/제어 로직(110) 전용의(dedicated) 단일 포트를 갖는다. 또한, 캐시 메모리(104)는 버스(12)에 대한 스누핑 처리를 위한 스누프 로직(102) 전용의 추가의 포트를 갖는다. 따라서, 스누프 동작은 프로세스 장치(16)의 페치와 로드/저장 동작의 성능을 저하시키지 않는다.
시스템 인터페이스(100)의 읽기 큐(106)과 저장 큐(108)은 어드레스 파이프라이닝, 스누핑 및 쓰기 버퍼링과 같은 특성을 지원한다. 읽기 큐(106)은 2개의 읽기 큐 요소 즉, A 와 B를 포함한다. 읽기 큐 요소 A와 B는 2개까지의 미완료(pending) 읽기 동작을 버퍼한다.
저장 큐(108)은 3개의 저장 큐 요소 즉, SNOOP, A 및 B를 포함한다. 저장 큐 요소 A와 B는 저장 동작과 섹터 대체(replacement) 캐스트 아웃을 버퍼하여, 섹터 대체는 캐시 메모리(104)로부터 입출력 장치(20)으로의 수정된 섹터의 카피백을 앞설 수 있다. 저장 큐 요소 SNOOP은 저장 큐 요소 A와 B내의 동작들 앞쪽으로 스누프 푸시 동작을 큐시킨다. 스누프 푸시 동작이 필요할 때마다, ICL(34)가 HP_SNP_REQ(A)를 요구하는 경우에는 프로세스 장치(16)은 저장 큐 요소 SNOOP내에 푸시 동작을 일으키고 그렇지 않은 경우에는 프로세스 장치(16)을 저장큐 요소 A와 B중의 하나내에 스누프 푸시 동작을 일으킨다.
다시 제1도에서, 잠재적인 다수의 버스 매스터들(프로세스 장치(16), 프로세스 장치(18), ICL(34))는 상술한 바와 같이 중재 로직(22)와 코히어런시 기법에 의하여 버스(12)상에서 지원된다. 또한, 잠재적인 다수의 버스 매스터들(프로세스 장치(24), ICL(34))는 버스(14)의 공유된 자원들을 얻기 위해 경쟁할 수 있다. 중재 로직(28)은 공정성 또는 다른 프로토콜을 지원하며, 중재 부담을 최소화하기 위해 버스 매스터들을 파킹할 수 있다.
멀티프로세서의 소프트웨어 지원은 원자(atomic) 메모리 동작들에 의해 행해진다. 예를들면, 프로세스 장치가 배타적 액세스를 양도하도록 하는 다른 버스 매스터에 의한 액세스가 없이, 원자 버스 액세스는 동일 어드레스에의 읽기-쓰기 동작의 일부가 되도록 시도할 수 있다. 프로세스 장치는 읽기와 쓰기를 별도로 개시하지만, 메모리 시스템에는 하나의 원자 동작을 시도하고 있다고 신호를 보낸다. 동작이 실패하면, 프로세스 장치가 다시 시행할 수 있도록 상태가 보전된다.
버스(12)에 있어서, 잠재적 버스 매스터가 어드레스 버스 ADDRESS(A)의 제어를 요청하고 있는 있는 것을 나타내기 위해, 잠재적 버스 매스터(프로세스 장치(16), 프로세스 장치(18), ICL(34)는 그 버스 요청선(BR1(A), BR2(A), BR(I))를 요구한다. 잠재적 버스 매스터가 버스 처리를 수행할 필요가 있을때, 잠재적 버스 매스터는 그 버스 요청선을 연속적으로 요구(assert)한다. 파크되면, 버스 매스터는 그 버스 요청선을 요구하지 않는다. 파이프라인이 가득찬 경우는 버스 요청선이 요구될 수 있다. 잠재적 버스 매스터가 어드레스 버스 ADDRESS(A)의 제어를 요청하고 있지 않는 것을 나타내기 위해, 잠재적 버스 매스터는 그 버스 요청선을 부정(negate)한다. 이러한 상황에서, 버스 매스터는 미완료 버스 동작을 가지지 않고, 파크될 수도 있고, 또는 버스(12)의 앞선 사이클에서 ARTRY(A)선이 요구될 수도 있다. 다른 처리가 미완료라 하더라도, 중재 로직(22)로부터의 채택된 한정된 버스 허용 이후 1이상의 버스 사이클 동안, 잠재적 버스 매스터는 그 버스 요청선을 부정한다. 요구되고 있는 ARTRY(A)선에 응답하여 1이상의 버스 사이클 동안, 잠재적 버스 매스터는 그 버스 요청선을 부정한다.
그 버스 요청선을 요구하는 잠재적 버스 매스터에 응답하여, 잠재적 버스 매스터가 적절한 한정을 가해 버스(12)의 다음 사이클에서 어드레스 버스 ADDRESS(A)의 제어를 맡을 수 있는 것을 나타내기 위해, 중재 로직(22)는 잠재적 버스 매스터의 허용선(BG1(A), BG2(A), BG(I))를 요구한다. 중재 로직(22)는 언제든지 버스 허용선을 요구할 수 있다. 버스 매스터가 제2트랜잭션을 수행할 필요가 있으면, 제1트랜잭션의 어드레스 페이스가 완료된 후 버스 매스터는 그 버스 허용선의 한정된 요구를 다시 점검한다. 잠재적 버스 매스터의 버스 허용선의 부정은, 버스(12)의 다음 사이클에서 잠재적 버스 매스터가 어드레스 버스 ADDRESS(A)를 사용하는 것이 허락되지 않음을 나타낸다. 중재 로직(22)는 한번에 하나의 버스 허용선만을 요구하고, 어드레스 버스 ADDRESS(A)가 한번에 잠재적 버스 매스터 하나에 의해서만 제어되게 된다.
제어선 ARTRY(A)는 양방향 신호이고, 잠재적 버스 매스터가 다른 잠재적 버스 매스터로 하여금 버스 동작을 재시행(retry)하도록 허락한다. 잠재적 버스 매스터는 캐시/메모리 코히어런시 또는 하드웨어 큐잉 문제를 위해 ARTRY(A)를 요구한다. 예를 들면, 아웃바운드 큐(36)이 가득차 있으면, ICL(34)는 ARTRY(A)를 요구할 수 있다.
스누프된 어드레스 페이스가 재실행되어야 하는 조건을 잠재적 버스 매스터가 검출하는 것을 나타내기 위해, 잠재적 버스 매스터는 제어선 ARTRY(A)를 요구한다. 잠재적 버스 매스터가 스누프의 결과로서 정보를 입출력 장치(20)에 카피백할 필요가 있으면, 상술한 바와 같이 잠재적 버스 매스터는 그 버스 요청선을 요구한다. 제어선 ARTRY(A)를요구하지 않는 것은, 스누프된 어드레스페이스가 재실행될 필요가 없음을 나타낸다.
버스 매스터가 어드레스 버스 ADDRESS(A)를 현재 제어한다면, ARTRY(A)의 요구는, ARTRY(A)의 부정 이후 1 버스 사이클까지 버스 매스터가 즉시 그 버스 요청선을 부정해야 함을 나타낸다. 그리고, 버스 매스터는 스누프된 어드레스 페이스를 재실행할 것을 시도해야 한다. ARTRY(A)의 부정은, 버스 매스터가 스누프된 어드레스 페이스를 재실행할 필요가 없음을 나타낸다.
잠재적 버스 매스터가 현재 제어 어드레스 버스 ADDRESS(A)를 제어하지 않으면, ARTRY(A)의 요구는, ARTRY(A)의 부정 이후 1버스 사이클까지 잠재적 버스 매스터가 즉시 그 버스 요청선은 부정해야 함을 나타낸다.
잠재적 버스 매스터가 적절한 한정을 붙여 버스(12)의 다음 사이클에서 데이타 버스 DATA(A)의 제어를 맡을 수 있음을 나타내기 위해, 중재 로직(22)는 잠재적 버스 매스터의 데이타 버스 허용선(DBG1(A), DBG2(A), DBG(I))를 요구한다. 중재 로직(22)는 언제든지 데이타 허용선을 요구할 수 있다. 자재적 버스 매스터의 버스 허용선의 부정은, 잠재적 버스 매스터가 버스(12)의 다음 사이클에서 데이타 버스 DATA(A)를 사용하기 시작하는 것이 허락되지 않음을 나타낸다.
중재 로직(22)는, 버스 허용선(BG1(A), BG2(A), BG(I))와 데이타 버스 허용선(DBG1(A), DBG2(A), DBG(I))를 선택적으로 요구하고 부정함으로써 파이프라이닝에 영향을 준다. 프로세스 장치(16)이 그 버스동작(프로세서 내 파이프라이닝)을 한 레벨의 깊이(depth)로 파이프라인할 수 있음에도 불구하고, 잠재적인 다수의 버스 매스터들(프로세서내 파이프라이닝)간의 버스(12)에서 발생할 수 있는 파이프라이닝의 레벨들의 최대수는 제한되지 않는다.
버스(12)에 대한 버스 슬레이브로서 ICL(34)는 버스(12)로부터 버스(14)로 향해 읽기와 쓰기 명령들을 입력시키고, ICL(34)는 아웃바운트 큐(36)내에 이러한 명령들을 놓는다. 버스(14)에 대한 버스 매스터로서, 버스(14)의 버스 ADDRESS(B)와 DATA(B)의 제어를 획득하기 위해 ICL(34)는 BR(O)를 중재 로직(28)에 요구한다. ICL(34)에 의한 BR(0)의 요구에 응답하여, 중재 로직(28)은 BG(0)를 요구함으로써 적절한 순간에 버스(14)의 제어를 ICL(34)에 허용한다. 중재 로직(28)에 의한 BG(0)의 요구에 응답하여 ICL(34)는 아웃바운드 큐(36)내에 하나 이상의 명령을 실행한다.
버스(14)에 대한 버스 슬레이브로서, ICL(34)는 버스(14)로부터 버스(12)로 향해 읽기와 쓰기 명령들을 입력시키고, ICL(34)는 이러한 명령들을 인바운드 큐(38)내에 놓는다. 버스(12)에 대한 버스 매스터로서, 버스(12)의 버스 ADDRESS(A)의 제어를 획득하기 위해 ICL(34)는 BR(I)를 중재 로직(22)에 요구한다. ICL(34)에 의한 BR(I)의 요구에 응답하여, 중재 로직(22)는 적절한 순간에 BG(I)를 요구함으로써 ADDRESS(A)의 제어를 ICL(34)에 허용한다. 중재 로직(22)에 의한 BG(I)의 요구에 응답하여, ICL(34)는 인바운드 큐(38)내의 하나 이상의 명령들을 위한 어드레스 페이스들을 완료시킨다. 나중의 적당한 순간에, 중재 로직(22)는 DBG(1)를 요구함으로써 DATA(A)의 제어를 ICL(34)에 허용한다. 중재 로직(22)에 의한 DBG(I)의 요구에 응답하여, ICL(34)는 먼저 완료된 어드레스 페이스와 관련된 데이타 페이스를 완료시킨다.
버스(12)에서의 버스 매스터로서, ICL(34)는 제어선 HP_SNP_REQ(A)를 요구한다. HP_SNP_REQ(A)의 요구에 응답하여, 프로세스 장치(16)은, 저장 큐(108)내에서 최고의 우선 순위 동작으로 저장 큐 요소 SNOOP내에 요청되는 스누프 푸시 동작을 놓으며(제3도 참조), 이러한 스누프 푸시 동작은 버스(12)를 위해 프로세스 장치(16)에 의해 큐되는 다음 동작이다.
제2b도~제2d도에 관련하여 상술한 바와 같이, 버스(12)의 프로토콜은 보통 각각 관련된 어드레스 페이스의 순서로 데이타 페이스가 완료되도록 요청한다. 이와 마찬가지로, 프로세스 장치(16)은 설계에 의해 각각 관련된 어드레스 페이스의 순서로 데이타 페이스를 완료시킨다.
그럼에도 불구하고, 제2d도에 관련하여 상술한 바와 같이, 어떤 상황에서는 순서가 뒤바뀐 분할 트랜잭션이 중재 로직(22), ICL(34) 및 프로세스 장치(16,18)에 의해 지원된다.
이러한 순서가 뒤바뀐 분할 트랜잭션을 지원하기 위해, 중재 로직(22)는 제어선 DBWO(A)를 요구한다. 중재 로직(22)에 의한 제어선 DBWO(A)와 DBG1(A)이 요구에 응답하여, 프로세스 장치(16)은 미완료 읽기 데이타 페이스를 위한 것은 아니고 미완료 쓰기 데이타 페이스를 위해, 데이타 버스 DATA(A)의 제어를 맡는다. 이러한 상황에서 프로세서 장치(16)이 데이타 버스 DATA(A)의 제어를 맡은 후, 관련 읽기 어드레스 페이스가 관련 쓰기 어드레스 페이스를 앞선 곳에 있어서도, 프로세스 장치(16)은 미완료 읽기 데이타 페이스(먼저 완료된 읽기 어드레스 페이스와 관련된)를 완료하기 전에 미완료 쓰기 데이타 페이스(먼저 완료된 쓰기 어드레스 페이스와 관련된)를 완료시킨다.
이와 같이 하여, 쓰기 어드레스 페이스와 그 관련된 쓰기 데이타 페이스를 포함하는 정보 전송은 읽기 어드레스 페이스와 그 관련된 읽기 데이타 페이스를 포함하는 정보 전송 내에 둘러사이게 된다. 이리하여 쓰기 동작은 읽기 동작내에 효과적으로 둘러싸이게 된다. 쓰기 동작은 스누프 푸시 동작일 수 있다. 이와 유사하게, 중재 로직(22)에 의한 제어선 DBWO(A)와 DBG2(A)의 요구에 응답하여, 프로세스 장치(18)은 미완료 쓰기 데이타 페이스를 위한 데이타 버스 DATA(A)의 제어를 맡는다.
다음 이벤트(event)들의 순서는 전형적인 동작을 나타낸다.
(1) 프로세스 장치(16)은 어드레스 재시행 없이 성공적으로 읽기 어드레스 페이스를 완료함으로써 읽기 동작을 개시하며, 관련 읽기 데이타 페이스는 미완료이다. (2) 프로세스 장치(16)은 어드레스 재시행 없이 성공적으로 쓰기 어드레스 페이스를 완료함으로써 쓰기 동작을 개시하며, 관련 쓰기 데이타 페이스는 미완료이다. (3) 중재 로직(22)가 제어선 DBWO(A)와 DBG1(A)를 요구한다. (4) 프로세스 장치(16)은 미완료 쓰기 동작을 읽기 동작 내에 둘러싸고, 쓰기 데이타 페이스는 읽기 데이타 페이스에 관련해서 순서가 뒤바뀌어 완료된다. (5) 중재 로직(22)는 DBWO(A)를 요구함이 없어 제어선 DBG1(A)를 요구한다. (6) 프로세스 장치(16)은 미완료 읽기 데이타 페이스를 완료시킨다. 이 이벤트들 사이에, 다른 잠재적 버스 매스터들이 버스 동작들을 시도할 수 있다.
중재 로직(22)가 DBWO(A)를 요구한 후, 잠재적 버스 매스터가 미완료 쓰기 데이타 페이스를 가진 것을 중재 로직(22)가 검증할 때까지, 중재 로직(22)는 잠재적 버스 매스터의 데이타 버스 허용선을 요구하지 않는다. DBWO(A)의 부정은, 각 잠재적 버스 매스터가 그 각각 관련된 어드레스 페이스의 순서로 데이타 페이스들을 완료해야 한다는 것을 나타낸다.
잠재적 버스 매스터가 미완료 읽기 데이타 페이스를 갖지 않는다 하더라도, 중재 로직(22)는 DBWO(A)를 요구할 수 있으나, 이러한 DBWO(A)의 요구는 쓰기 데이타 페이스들이 완료되는 순서에 영향을 미치지는 않는다. DBG1(A)가 요구될 때는 관계없고, BG1(A)가 요구될 때에는, 쓰기 데이타 페이스들의 정돈은 저장 큐(108)내의 저장 동작들의 순서로 결정된다(제3도 참조).
하나 이상의 쓰기 동작은 단일 읽기 동작 내에 둘러싸일 수 있다. 예를들면 스누프 푸시 동작은 최고 우선 순위의 쓰기 동작이지만, 하나 이상의 스누프 푸시 동작은 특정 시간에 저장 큐(108)내에 있을 수 있다. 이러한 상황에서, 다수의 스누프 푸시 동작들은 단일 읽기 동작 내에 둘러싸일 수 있다.
중재 로직(22)는 버스(12)에 대한 동작을 모니터하고 버스(12)에 관한 버스 매스터와 버스 슬레이브의 액션들을 동기화한다. 프로세스 장치(16,18), 중재 로직(22) 및 ICL(34)는 제어를 위해 액션들을 특정 버스 처리 형태로 인식한다. 파이프 라인된, 분할되고, 순서가 뒤바뀐 처리를 지원하고 동기화하기 위해, 중재 로직(22)는 제어선 DBWO(A), 각 잠재적 버스 매스터의 개별 버스 요청선, 버스 허용선 및 데이타 버스 허용선을 사용한다. 데이타 페이스를 그 관련 어드레스 페이스에 관해 순서가 뒤바뀌어 완료하기 위해, 중재 로직(22)는 순서가 뒤바뀐 데이타 페이스를 그 원래의 어드레스 페이스에 관련시킨다.
시스템(10)은 통신 로직 회로(중재 로직(22)와 ICL(34)를 포함)를 통해서 버스(12)와 버스(14)간의 정보전송을 지원한다. 버스(14)의 프로토콜과 중재 로직(28)은 파이프라인된 분할 트랜잭션 동작을 지원하지 못한다. 유리하게도, 버스(12,14)는 비동기적으로 동작하고 중앙 중재 장치에 의해 제어되지 않으므로, 버스(12)는 버스(14)에 직접 링크되지 않는다. 이와 같이 하여 버스(12)와 프로세스 장치(16,18)의 파이프라이닝과 분할 트랜잭션 장점은, 버스(12)를 버스(14)에 직접 링크함에 의해 희생되지 않는다.
통신 로직 회로(중재 로직(22)와 ICL(34)를 포함)는 버스(14)와 같은 파이프라인되지 않고 비분할 트랜잭션 버스와 버스(12)간에 정보를 전송한다. 이러한 버스간 전송과 관련하여, 제1프로세스 장치가 제2프로세스 장치의 별도의 액션을 기다리는 동안, 버스(14)에 연결된 제2프로세스 장치(예를 들면, 프로세스 장치(24))는 버스(12)에 연결된 제1프로세스 장치(예를 들면, 프로세스 장치(16))의 액션을 기다리는 교착 상태가 발생할 수 있다. 이와 같은 교착 상태에 응답하여, 버스(12)에 연결된 제1프로세스 장치의 액션을 인에이블함으로써 교착상태를 해결하기 위해 통신 로직 회로(중재 로직(22)와 ICL(34)를 포함)은 제어선 DBWO(A)와 DEADLOCK(I)를 사용한다.
다음 이벤트들의 시퀀스는 전형적인 교착 상태와 통신 로직 회로(중재 로직(22)와 ICL(34)를 포함)에 의해 교착 상태를 해결하는 것을 기술한다.
이벤트 1. 프로세스 장치(18)이 어드레스 재시행 없이 성공적으로 읽기 어드레스 페이스를 완료함으로써 입출력 장치(26)에서의 읽기 정보를 위한 읽기 동작을 개시하며, 관련 읽기 데이타 페이스가 미완료되어 읽기 명령은 ICL(34)에 의해 아웃바운드 큐(36)내에 놓이게 된다.
이벤트 2. 프로세스 장치(24)는 읽기 어드레스 트랜잭션을 성공적으로 완료함으로써 입출력 장치(20)에서의 읽기 정보를 위한 읽기 동작을 개시하며, 읽기 명령은 ICL(34)에 의해 인바운드 큐(38)내에 놓이게 된다. 버스(14)의 프로토콜과 중재 로직(28)이 파이프라인과 분할 트랜잭션 동작들을 지원하지 못하므로, 프로세스 장치(24)는 읽기 어드레스 트랜잭션을 완료한 후에 어드레스 버스 ADDRESS(B)의 제어를 양도하지 않는다. 그 대신에, 프로세스 장치(24)는 데이타 버스 DATA(B) 상에서의 데이타 트랜잭션의 완료를 기다리는 동안에 어드레스 버스 ADDRESS(B)와 데이타 버스 DATA(B)를 동시에 제어한다.
이벤트 3. ICL(34)의 제어 로직(40)은 아웃바운드 큐(36)과 인바운드 큐(38)내에 동시에 존재하는 메모리 명령들에 응답하여 잠재적인 교착 상태를 검출한다. 따라서, 제어 로직(40)은 제어선 DEADLOCK(I)을 중재 로직(22)에 요구한다.
이벤트 4. 프로세스 장치(18)은 한번에 최대 2개의 미완료 데이타 페이스를 허락한다. 따라서, DEADLOCK(I)의 요구 및 이미 미완료 읽기 데이타 페이스를 가진 프로세스 장치(18)에 응답하여(이벤트 1과 관련하여 상술한 바 있음), 중재 로직(22)는 (a) 스누프 푸시 동작을 제외한 다음의 버스 동작을 위한 프로세스 장치(18)로부터의 어드레스 버스 ADDRESS(A)의 제어를 억제하기 위해 BG2(A)를 사용하거나, (b) 어드레스 버스 ADDRESS(A)의 제어를 프로세스 장치(18)에 허용할 수 있으나, 메모리에 쓰기 동작 이외의 동작에 응답하여 ARTRY(A)를 요구한다. 이들 2가지 방식중의 어느 하나에 의해, 중재 로직(22)는 필요한 스누프 푸시 동작을 위한 2개의 허락된 미완료 데이타 페이스들 중의 하나를 프로세스 장치(18)이 보유하도록 한다.
이벤트 5. 버스(12)에 대한 버스 매스터로서, ICL(34)는 버스(12)의 버스 ADDRESS(A)의 제어를 획득하기 위해 중재 로직(22)에 BR(I)를 요구한다. ICL(34)에 의한 BR(I)의 요구에 응답하여, 중재 로직(22)는 BR(I)를 요구함으로써 적절한 순간에 ICL(34)에 ADDRESS(A)의 제어를 허용한다. 중재 로직(22)에 의한 BR(I)의 요구에 응답하여, ICL(34)는 HP_SNP_REQ(A)를 요구하고 인바운드 큐(38)내의 읽기 명령(이벤트 2와 관련하여 상술하였음)을 위한 어드레스 페이스를 완료시킨다.
이벤트 6. 프로세스 장치(18)은 어드레스를 스누프하고, 스누프된 어드레스에서 입출력 장치(20)내에 관련정보에 대해 수정된 상태로 캐시 메모리가 정보를 저장하는 것을 결정한다. 이 부합에 응답하여, 프로세스 장치(18)은, 캐시 메모리 내의 수정된 정보와의 부합을 ICL(34)에 통지하기 위해 ARTRY(A)를 요구한다.
이벤트 7. ICL(34)가 수정된 정보에의 액세스를 필요로 하는 것을 프로세스 장치(18)이 인식하고, HP_SNP_REQ(A)가 요구되기 때문에, 프로세스 장치(18)은 그 저장 큐내의 최고 우선 순위 동작으로서 스누프 푸시 동작을 저장 큐 요소 SNOOP내에 놓으며, 이러한 스누프 푸시 동작은 버스(12)를 위한 프로세스 장치(18)에 의해 큐된 다음 동작(the next operation)으로 된다.
이벤트 8. ARTRY(A)의 요구에 응답하여, 프로세스 장치(18)과 버스(12)에 대한 모든 다른 잠재적 버스 매스터들이 모든 버스 요청을 철회한다. 프로세스 장치(18)이 ARTRY(A)를 요구하였으므로, 프로세스 장치(18)는 BR2(A)를 요구한다. BR2(A)의 요구에 응답하여, 중재 로직(22)는 BG2(A)를 요구한다. BG2(A)의 요구에 응답하여, 프로세스 장치(18)은 어드레스 재시행 없이 성공적으로 쓰기 어드레스 페이스를 완료함에 의해 스누프 푸시 동작을 개시하며(이벤트 7에 관련하여 상술하였음), 쓰기 데이타 페이스는 미완료이게 된다.
교착 상태는 이벤트 1~이벤트 8로부터 발생한다. 이벤트 8이후, 프로세스 장치(18)은 2개의 미완료 데이타 페이스를 갖는다. 제1미완료 데이타 페이스는, 프로세스 장치(24)의 별도 액션 즉, 프로세스 장치(24)에 의한 어드레스 버스 ADDRESS(B)와 데이타 버스 DATA(B)의 제어의 양도(relinquish)시까지, 프로세스 장치(18)에 의해 연기되는 읽기 데이타 페이스이다. 프로세스 장치(24)가 ADDRESS(B)와 DATA(B)의 제어를 양도할 때까지, 이벤트 1에서의 프로세스 장치(18)에 의해 개시된 읽기 동작에 응답하여, ICL(34)는 입출력 장치(26)으로부터 정보를 읽을 수 없다. ICL(34)가 이러한 정보를 읽을 수 있을 때까지 프로세스 장치(18)은 제1미완료 데이타 페이스를 완료시키지 않는다. 제2미완료 데이타 페이스는, 제1미완료 데이타 페이스의 완료시까지 프로세스 장치(18)에 의해 연기되는 쓰기 데이타 페이스이다.
그럼에도 불구하고, 프로세스 장치(24)는 프로세스 장치(18)의 액션 즉, 프로세스 장치(18)이 제2미완료 데이타 페이스를 완료하는 것을 기다린다. 프로세스 장치(18)이 제2미완료 데이타 페이스를 완료할 때까지, 이벤트 2에서 프로세스 장치(24)에 의해 개시된 읽기 동작에 응답하여 ICL(34)는 입출력 장치(20)으로부터 정보를 읽을 수 없다. ICL(34)가 이러한 정보를 읽을 수 있을 때까지, 프로세스 장치(24)는 어드레스 버스 ADDRESS(B)와 데이타 버스 DATA(B)의 제어를 양도하지 않는다.
바람직한 실시예의 중요한 관점에서, 버스 중재 로직(22)는 (1) 프로세스 장치(18)이 미완료 읽기 데이타 페이스와 그 뒤의 미완료 쓰기 데이타 페이스를 가지는 것과, (2) ICL(34)가 잠재적 교착 상태를 나타내기 위해 DEADLOCK(I)를 요구하고 있는 것을 검출한다. 이와 같은 상황에서, 버스 중재 로직(22)는 DBG2(A)와 DBWO(A)를 동시에 요구함에 의해 데이차 버스 DATA(A)의 제어를 프로세스 장치(18)에 넘겨준다. DBG2(A)와 DBWO(A)의 요구에 응답하여, 프로세스 장치(18)은 미완료 스누프 푸시 동작을 읽기 동작 내에 둘러싸고, 미완료 쓰기 데이타 페이스는 미완료 읽기 데이타 페이스에 관해 순서가 뒤바뀌어 완료된다.
그리고 나서, 프로세스 장치(18)은 남은 하나의 미완료 읽기 데이타 페이스를 가지며, ICL(34)는 미완료 읽기 데이타 페이스를 갖는다. 중재 로직(22)가 DATA(A)의 제어를 프로세스 장치(18)에 허용했다면, 교착 상태가 계속될 것이다. 따라서, ICL(34)에 의한 DEADLOCK(I)의 계속적인 요구에 응답하여, 중재 로직(22)는 DBG(I)를 요구함에 의해 DATA(A)의 제어를 ICL(34)에 허용한다.
DBG(I)의 요구에 응답하여, ICL(34)는 이벤트 2에서 프로세스 장치(24)에 의해 개시된 읽기 동작에 따라 d비출력 장치(20)으로부터 데이타 버스 DATA(A)를 통하여 정보를 읽으며, ICL(34)의 미완료 읽기 데이타 페이스가 완료된다. 그리고나서, ICL(34)는 이러한 정보를 데이타 버스 DATA(B)를 통해 프로세스 장치(24)로 전송하고 DEADLOCK(I)를 부정한다. 프로세스 장치(24)가 이러한 정보를 입력함에 의해 그 읽기 동작을 완료한 후, 그것은 어드레스 버스 ADDRESS(B)와 데이타 버스 DATA(B)의 제어를 양도한다. 프로세스 장치(24)가 버스(14)의 제어를 양도한 후, 중재 로직(28)은 ICL(34)에 의한 BR(O)의 요구에 응답하여 BG(O)를 요구함에 의해 버스(14)의 제어를 ICL(34)에 허용한다. 그리고나서, ICL(34)는 이벤트 1에서 프로세스 장치(18)에 의해 개시된 읽기 동작에 다라 입출력 장치(16)으로부터 정보를 읽는다.
DEADLOCK(I)가 요구되지 않으므로, 중재 로직(22)는 DBWO(A)를 요구하지 않고 DBG2(A)를 요구함에 의해 DATA(A)의 제어를 프로세스 장치(18)에 허용한다. DBG2(A)의 요구에 응답하여, 프로세스 장치(18)은 이벤트 1에서 프로세스 장치(18)에 의해 개시된 읽기 동작에 따라 ICL(34)로부터 데이타 버스 DATA(A)를 통하여 정보를 입력시키며, 프로세스 장치(18)의 미완료 읽기 데이타 페이스가 완료된다.
제4도는 시스템(10)의 제2실시예의 블럭도이다. 제4도에 도시한 바와 같이, 프로세스 장치(24), 입출력 장치(26)와 중재 로직(28)이 프로세스 장치(120), 프로세스 장치(122), 입출력 장치(124) 및 중재 로직(126)으로 대체된 것을 제외하고는 시스템(10)은 제1도에서와 같다. 프로세스 장치(120,122)는 프로세스 장치(16,18)과 설계에 있어서 동일하다. 게다가, 중재 로직(126)은 중재 로직(22)와 설계가 동일하다. 제4도에 도시한 바와 같이, 버스(14)는 버스(12)와 설계가 동일하다. 버스(14)는 어드레스 버스 ADDRESS(B)와 데이타 버스 DATA(B), 제어선 ARTRY(B), HP_SNP_REQ(B) 및 DBWO(B)를 포함한다. 제4도의 제어선 DEADLOCK(O), DBG(O), BG(O) 및 BR(O)는 제어선 DEADLOCK(I), DBG1(I), BG(I) 및 BR(I)와 각각 설계가 동일하다.
제4도에 도시된 시스템(10)에 관하여, 다음의 이벤드들의 시퀀스는 전형적인 교착 상태와 통신 로직 회로(중재 로직(22), 중재 로직(126) 및 ICL(34)를 포함)에 의한 그 해결을 기술한다.
이벤트 1. 프로세스 장치(18)은 어드레스 재시행 없이 성공적으로 읽기 어드레스 페이스를 완료함에 의해 입출력 장치(124)에서 정보를 읽기 위한 읽기 동작을 개시하며, 관련 읽기 데이타 페이스는 미완료가 되고, 읽기 명령은 ICL(34)에 의해 아웃바운드 큐(38)내에 놓인다.
이벤트 2. 프로세스 장치(120)은 어드레스 재시행 없이 성공적으로 읽기 어드레스 페이스를 완료함에 의해 입출력 장치(20)에서 정보를 읽기 위한 읽기 동작을 개시하며, 관련 읽기 데이타 페이스는 미완료가 되고, 읽기 명령은 ICL(34)에 의해 인바운드 큐(38)내에 놓인다.
이벤트 3. ICL(34)의 제어 로직(40)은, 아웃바운드 큐(36)과 인바운드 큐(38)내에 동시에 존재하는 메모리 명령들에 응답하여 잠재적 교착 상태를 검출한다. 따라서, 제어 로직(40)은 제어선 DEADLOCK(I)를 중재 로직(22)에 요구하고, 제어선 DEADLOCK(O)를 중재 로직(126)에 요구한다.
이벤트 4. DEADLOCK(I)의 요구와 이미 미완료 읽기 데이타 페이스를 가지고 있는 프로세스 장치(18)에 응답하여, 중재 로직(22)는 필요한 스누프 푸시 동작을 위한 2개의 허락된 미완료 데이타 페이스들 중의 하나를 프로세스 장치(18)이 보유하게 된다. 또는, DEADLOCK(O)의 요구와 이미 미완료 읽기 데이타 페이스를 가지고있는 프로세스 장치(120)에 응답하여, 중재 로직(126)은 필요한 스누프 푸시 동작을 위한 2개의 허락된 미완료 데이타 페이스들 중의 하나를 프로세스 장치(120)이 보유하게 된다.
이벤트 5. 버스(12)에 대한 버스 매스터로서, ICL(34)는 버스(12 ADDRESS(A)의 제어를 획득하기 위해 BR(I)를 중재 로직(22)에 요구한다. ICL(34)에 의한 BR(I)의 요구에 응답하여, 중재 로직(22)는, BG(I)를 요구함에 의해 적절한 순간에 ADDRESS(A)의 제어를 ICL(34)에 허용한다. 중재 로직(22)에 의한 BG(I)의 요구에 응답하여, ICL(34)는 HP_SNP_REQ(A)를 요구하고, 인바운드 큐(38)내의 읽기 명령(이벤트 2에 관련해서 상술하였음)을 위한 어드레스 페이스를 완료시킨다.
이벤트 6. 프로세스 장치(18)은 어드레스 스누프하고, 스누프된 어드레스에서 캐시 메모리가 입출력 장치(20)내에 관련 정보에 대해 수정된 상태로 정보를 저장하는 것을 결정한다. 이 부합에 응답하여, 프로세스 장치(18)은 캐시 메모리내의 수정된 정보와의 부합을 ICL(34)에 통지하기 위해 ARTRY(A)를 요구한다.
이벤트 7. ICL(34)가 수정된 정보에의 액세스를 필요로 하는 것을 프로세스 장치(18)이 인식하므로, 또한 HP_SNP_REQ(A)가 요구되므로, 프로세스 장치(18)은 그 저장 큐내에서 최고 우선순위 동작으로서 스누프 푸쉬 동작을 저장 큐 요소 SNOOP내에 놓으며, 이러한 스누프 푸시 동작은 버스(12)를 위해 프로세스 장치(18)에 의해 쿠된 다음 동작(the next operation)으로 된다.
이벤트 8. ARTRY(A)의 요구에 응답하여, 프로세스 장치(18)과 버스(12)에 대한 모든 다른 잠재적 버스 매스터들은 모든 버스 요청을 철회한다. 프로세스 장치(18)이 ARTRY(A)를 요구했으므로, 프로세스 장치(18)은 BR2(A)를 요구한다. BR2(A)의 요구에 응답하여, 중재 로직(22)는 BG2(A)를 요구한다. BG2(A)의 요구에 응답하여, 프로세스 장치(18)은 어드레스 재시행 없이 성공적으로 쓰기 어드레스 페이스를 완료함에 의해 스누프 푸시 동작을 개시하며, 쓰기 데이타 페이스가 미완료로 된다.
이벤트 9. 버스(14)에 대한 버스 매스터로서, ICL(34)는 버스(14)의 버스 ADDRESS(B)의 제어를 획득하기 위해 BR(O)를 중재 로직(126)에 요구한다. ICL(34)에 의한 BR(O)의 요구에 응답하여, 중재 로직(126)은 BG(O)를 요구함에 의해 적절한 순간에 ADDRESS(B)의 제어를 ICL(34)에 허용한다. 중재 로직(126)에 의한 BG(O)의 요구에 응답하여, ICL(34)는 HP_SNP_REQ(B)를 요구하고, 아웃바운트 큐(36)내의 읽기 명령(이벤트 1에 관련하여 상술하였음)을 위한 어드레스 페이스를 완료시킨다.
이벤트 10. 프로세스 장치(120)은 그 어드레스를 스누프하고, 그 스누프된 어드레스에서 그 캐시 메모리가 입출력 장치(124)내의 관련 정보에 대해 수정된 상태로 정보를 저장하는 것을 결정한다. 이 부합에 응답하여, 프로세스 장치(12)은 그 캐시 메모리내의 수정된 정보와의 부합을 ICL(34)에 통지하기 위해 ARTRY(B)를 요구한다.
이벤트 11. ICL(34)가 수정된 정보에의 액세스를 필요로 하는 것을 프로세스 장치(120)이 인식하고, HP_SNP_REQ(B)가 요구되므로, 프로세스 장치(120)은 그 저장 큐내의 최고 우선 순위 동작으로서 스누프 푸시 동작을 저장 큐 요소 SNOOP내에 놓으며, 이러한 스누프 푸시 동작은 버스(14)를 위한 프로세스 장치(120)에 의해 큐된 다음 동작으로 된다.
이벤트 12. ARTRY(B)의 요구에 응답하여, 프로세스 장치(120)과 버스(14)에 대한 모든 다른 잠재적 버스 매스터들은 모든 버스 요청을 철회한다. 프로세스 장치(120)이 이 ARTRY(B)를 요구하였으므로, 프로세스 장치(120)은 BR1(B)를 요구한다. BR1(B)의 요구에 응답하여, 중재 로직(126)은 BG1(B)를 요구한다. BG1(B)의 요구에 응답하여, 프로세스 장치(120)은 어드레스 재시행 없이 성공적으로 쓰기 어드레스 페이스를 완료함에 의해 스누프 동작을 개시하며, 쓰기 데이타 페이스는 미완료로 된다.
교착 상태는 이벤트 1~이벤트 12로부터 발생한다. 이벤트 12이후에, 프로세스 장치(18)은 2개의 마완료 데이타 페이스를 가지며, 프로세스 장치(120)은 2개의미완료 데이타 페이스를 가진다. 프로세스 장치(18)의 제1미완료 데이타 페이스는, 프로세스 장치(120)의 별개의 액션, 즉 프로세스 장치(120)이 그 제2미완료 데이타 페이스를 완료할 때까지 프로세스 장치(18)에 의해 연기되는 읽기 데이타 페이스이다. 프로세스장치(120)이 그 제2미완료 데이타 페이스를 완료할 때까지, ICL(34)는 이벤트1에서 프로세 장치(18)에 의해 개시된 읽기 동작에 응답하여 입출력 장치(124)로부터 정보를 읽을 수 없다. ICL(34)가 이러한 정보를 읽을 수 있을 때까지 프로세스 장치(18)은 그 제1미완료 데이타 페이스를 완료시키지 않는다. 프로세스 장치(18)의 제2미완료 데이차 페이스는 그 제1미완료 데이타 페이스의 완료시까지 프로세스 장치(18)에 의해 연기되는 쓰기 데이타 페이스이다.
그럼에도 불구하고, 프로세스 장치(120)은, 프로세스 장치(18)의 액션 즉, 프로세스 장치(18)이 그 제2미완료 데이타 페이스를 완료하는 것을 기다린다. 프로세스 장치(18)이 그 제2미완료 데이타 페이스를 완료할 때까지, ICL(34)는, 이벤트2에서 프로세스 장치(120)에 의해 개시된 읽기 동작에 응답하여 입출력 장치(20)으로부터 정보를 읽을 수 없다. ICL(34)가 이러한 정보를 읽을 수 있을 때까지, 프로세스 장치(120)은 그 제1미완료 데이타 페이스를 완료시키지 않는다. 프로세스 장치(120)의 제2미완료 데이타 페이스는 그 제1미완료 데이타 페이스의 완료시까지 프로세스 장치(120)에 의해 연기되는 쓰기 데이타 페이스이다.
바람직한 실시예의 중요한 관점에서, 버스 중재 로직(22)는 (1) 프로세스 장치(18)이 미완료 읽기 데이타 페이스와 그 뒤의 미완료 쓰기 데이타 페이스를 갖고, (2) ICL(34)가 잠재적 교착 상태를 나타내기 위해 DEADLOCK(I)를 요구하고 있는 것을 검출한다. 이러한 상황에서, 버스 중재 로직(22)는 DBG2(A)와 DBWO(A)를 동시에 요구함에 의해 데이타 버스 DATA(A)의 제어를 프로세스 장치(18)에 넘겨준다. DBG2(A)와 DBWO(A)의 요구에 응답하여, 프로세스 장치(18)은 그 미완료 스누프 푸시 동작을 그 읽기 동작 내에 둘러싸며, 그 완료 쓰기 데이타 페이스는 그 미완료 읽기 데이타 페이스에 대해 순서가 뒤바뀌어 완료한다.
ICL(34)에 의한 DEADLOCK(I)의 계속적인 요구에 응답하여, 중재 로직(22)는 DBG(I)를 요구함에 의해 DATA(A)의 제어를 ICL(34)에 허용한다. DBG(I)의 요구에 응답하여, ICL(34)는 이벤트2에서의 프로세스 장치(120)에 의해 개시된 읽기 동작에 따라 입출력 장치(20)으로부터 데이타 버스DATA(A)를 통해 정보를 읽으며, ICL(34)의 미완료 읽기 데이타 페이스가 완료로 된다. ICL(34)는 이러한 정보를 데이타 버스 DATA(B)를 통해 프로세스 장치(120)으로 전송하고, DEADLOCK(I)와 DEADLOCK(O)를 부정하며, 교착 상태가 해결된다.
또는, 버스 중재 로직(126)은 (1) 프로세스 장치(120)이 미완료 읽기 데이타 페이스와 그 뒤의 미완료 쓰기 데이타 페이스를 가지고, (2) ICL(34)가 잠재적 교착 상태를 나타내기 위해 DEADLOCK(O)를 요구하고 잇는 것을 검출한다. 이러한 상황에서, 버스 중재 로직(126)은 DBG1(B)와 DBWO(B)를 동시에 요구함에 의해 데이타 버스 DATA(B)의 제어를 프로세스 장치(120)에 넘겨준다. DBG1(B)와 DBWO(B)의 요구에 응답하여, 프로세스 장치(120)은 그 미완료 스누프 푸시 동작을 그 읽기 동작 내에 둘러싸고, 그 미완료 쓰기 데이타 페이스는 그 미완료 읽기 데이타 페이스에 대해 순서가 뒤바뀌어 완료한다.
ICL(34)에 의한 DEADLOCK(O)의 계속적인 요구에 응답하여, 중재 로직(126)은 DBG(O)를 요구함에 의해 DATA(B)의 제어를 ICL(34)에 허용한다. DBG(O)의 요구에 응답하여, ICL(34)는 이벤트1에서의 프로세스 장치(18)에 의해 개시된 읽기 동작에 따라 입출력 장치(124)로부터 데이타 버스 DATA(B)를 통해 정보를 읽으며, ICL(34)의 미완료 읽기 데이타 페이스는 완료로 된다. ICL(34)는 이러한 정보를 데이타 버스 DATA(A)를 총해 프로세스 장치(18)로 전송하고, DEADLOCK(I)와 DEADLOCK(O)를 부정하며, 교착 상태가 해결된다.
재어선 DBWO(A)는 어떤 외부 큐된 제어기(external queued controller) 상황에 유용하며, 덤프 앤드 런(dump and run)동작과 같은 더 복잡한 메모리 동작에도 유용하다. 예를 들면, 제어선 DBWO(A)는 메모리가 로드 동작을 위해 액세서 되는 동안 수정된 캐시 메모리 섹터가 메모리 버퍼들에 캐스트아웃되는데 유용하다. 양호하게는, 이러한 캐스트 아웃은 로드 메모리 대기 시간에 부정적인 영향을 주지 않고 메모리 시스템에 의해 입력된다. 프로세스 장치(16)은 파이프라인 트랜잭션을 할 수 있으므로, 어드레스 버스 트랜잭션이 재시행되는 동안 데이타 버스 트랜잭션은 미완료일 수 있다.
이상 본 발명과 그 장점들을 자세히 기술하였으나, 후술하는 특허청구의 범위에 의해 정의하는 바와 같이, 본 발명의 정신과 범위를 벗어나지 않는 한, 여러가지 수정, 치환 및 변경이 가능하다.

Claims (11)

  1. 다수의 버스 간에 정보를 전송하는 시스템에 있어서, 다수의 데이터 페이스를 각각의 연관된 어드레스 페이스에 각각 응답하여, 상기 각각의 연관된 어드레스 페이스의 배열 순서대로 완료함으로써 복수의 제1버스 장치 사이에서 정보를 전송하기 위한 제1버스 ; 복수의 제2버스 장치 사이에서 정보를 전송하기 위한 제2버스 ; 및 상기 제1 및 제2버스에 결합되어 상기 제1 및 제2버스 사이에서 정보를 전송할 수 있으며, 상기 제1버스 장치가 상기 제2버스 상에서의 별도의 액션을 기다리는 동안 상기 제2버스 장치가 제1버스 장치의 액션을 기다리는 조건에 응답하여 제1버스 장치의 액션-여기서, 상기 제1버스 장치의 액션은 상기 다수의 데이터 페이스 중에서 특정한 데이터 페이스를 상기 데이터 페이스 배열 순서에 있어서 선행하는 데이터 페이스보다 먼저 완료하여, 상기 제1버스 장치에 의한 상기 별도의 액션이 끝날 때까지 상기 선행하는 데이터 페이스를 연기함-을 인에이블하는 로직 수단을 포함하는 것을 특징으로 하는 다수의 버스 간에 정보를 전송하는 시스템.
  2. 제1항에 있어서, 상기 복수의 제1버스 장치는 입출력 장치를 포함하며, 상기 제1버스 장치의 액션은 상기 제1버스 장치가 특정 정보를 상기 입출력 장치에 출력하는 것을 포함하는 것을 특징으로 하는 다수의 버스 간에 정보를 전송하는 시스템.
  3. 제1항에 있어서, 상기 제2버스는 상기 제1버스를 통해 전송되는 정보에 대해 비동기적으로 정보를 전송하는 것을 특징으로 하는 다수의 버스 간에 정보를 전송하는 시스템.
  4. 제1항에 있어서, 상기 별도의 액션은 상기 제2버스 장치가 상기 제2버스의 제어를 해제시키는 것을 포함하는 것을 특징으로 하는 다수의 버스 간에 정보를 전송하는 시스템.
  5. 제1항에 있어서, 상기 복수의 제1버스 장치는 상기 제1버스 장치와 일체인 입출력 장치를 포함하며, 상기 제1버스 장치의 액션은 상기 입출력 장치가 특정 정보를 상기 로직 수단에 출력하는 것을 포함하는 것을 특징으로 하는 다수의 버스 간에 정보를 전송하는 시스템.
  6. 제1항에 있어서, 상기 복수의 제2버스 장치는 상기 제2버스 장치와 일체인 입출력 장치를 포함하며, 상기 별도의 액션은 상기 입출력 장치가 특정 정보를 상기 로직 수단에 출력하는 것을 포함하는 것을 특징으로 하는 다수의 버스간에 정보를 전송하는 시스템.
  7. 다수의 버스 간에 정보를 전송하는 시스템에 있어서, 복수의 제1버스 장치 사이에서 정보를 전송하기 위한 제1버스로서, 상기 제1버스 장치들 중의 적어도 하나의 장치는 다수의 데이타 페이스를 각각의 연관된 어드레스 페이스에 각각 응답하여 완료함으로써 정보를 전송할 수 있으며, 제1 및 제2데이타 페이스는 제1 및 제2어드레스 페이스에 각각 응답하여 완료되며, 상기 제2데이타 페이스가 상기 제1데이타 페이스 이전에 완료될 수 있으며, 상기 제1 데이타 페이스는 상기 제1 및 제2어드레스 페이스 이후에 완료될 수 있는 제1버스 ; 복수의 제2버스 장치 사이에서 정보를 전송하기 위한 제2버스; 및 상기 어드레스 페이스와 데이타 페이스를 모니터하고, 이에 응답하여 상기 제1 및 제2버스를 통해서 그리고 상기 제1 및 제2버스 사이에서 정보를 전송하는 것을 통제하기 위한 로직 수단을 포함하는 것을 특징으로 하는 다수의 버스간에 정보를 전송하는 시스템.
  8. 정보를 처리하기 위한 장치에 있어서, 상기 장치를 버스 및 다수의 상태를 갖는 제어선에 연결하기 위한 수단 ; 다수의 데이터 페이스를 각각의 연관된 어드레스 페이스에 각각 응답하여, 상기 각각의 연관된 어드레스 페이스의 배열 순서대로 완료함으로써 상기 버스를 통하여 정보를 전송하기 위한 수단 ; 및 상기 제어선의 상태들 중의 하나의 상태에 응답하여 상기 데이타 페이스들 중에서 특정한 데이타 페이스를 상기 데이터 페이스 배열순서에 있어서 선행하는 데이타 페이스보다 먼저 선택적으로 완료시키기 위한 수단을 포함하는 것을 특징으로 하는 정보 처리 장치.
  9. 다수의 버스 간에 정보를 전송하는 방법에 있어서, 다수의 데이터 페이스를 각각의 연관된 어드레스 페이스에 각각 응답하여, 상기 각각의 연관된 어드레스 페이스의 배열 순서대로 완료함으로써 복수의 제1버스 장치 사이에서 제1버스를 통하여 정보를 전송하는 단계 ; 제2버스를 통해 복수의 제2버스 장치 사이에서 정보를 전송하는 단계 ; 상기 제1 및 제2버스에 결합된 로직 수단을 통해 상기 제1 버스와 제2버스간에 정보를 전송하는 단계 ; 및 상기 로직 수단을 사용하여 상기 제1버스 장치가 상기 제2버스 상에서의 별도의 액션을 기다리는 동안에 상기 제2버스 장치가 제1버스 장치의 액션을 기다리는 조건에 응답하여 제1버스 장치의 액션-여기서, 상기 제1버스 장치의 액션은 상기 다수의 데이터 페이스 중에서 특정한 데이터 페이스를 상기 데이터 페이스 배열 순서에 있어서 선행하는 데이터 페이스보다 먼저 완료하여, 상기 제1버스장치에 의한 상기 별도의 액션이 끝날 때까지 상기 선행하는 데이터 페이스를 연기함-을 인에이블하기 위한 단계를 포함하는 다수의 버스 간에 정보를 전송하는 방법.
  10. 다수의 버스 간에 정보를 전송하는 방법에 있어서, 제1버스를 통하여 복수의 제1버스 장치 사이에서 정보를 전송하는 단계로서, 상기 제1버스 장치들 중의 적어도 하나의 장치는 각각의 연관된 어드레스 페이스에 각각 응답하여 다수의 데이타 페이스를 완료함으로써 정보를 전송하며, 제1 및 제2 데이타 페이스는 제1 및 제2 어드레스 페이스에 각각 응답하여 완료되며, 상기 제2데이타 페이스가 상기 제1데이타 페이스이전에 완료될 수 있으며, 상기 제1데이타 페이스는 상기 제1 및 제2어드레스 페이스 이후에 완료될 수 있는 정보 전송 단계 ; 제2버스를 통해 복수의 제2버스 장치 사이에서 정보를 전송하는 단계 ; 및 상기 제1 및 제2 버스에 결합된 로직 수단을 사용하여 상기 어드레스 페이스 및 데이타 페이스를 모니터하고, 이에 응답하여 상기 제1 및 제2버스를 통해서 그리고 상기 제1 및 제2버스 사이에서 정보를 전송하는 것을 통제하는 단계를 포함하는 것을 특징으로 하는 정보 전송 방법.
  11. 제8항에 있어서, 상기 특정한 데이타 페이스는 기록 데이타 페이스이며, 상기 선행하는 데이타 페이스는 판독 데이타 페이스인 것을 특징으로 하는 정보 처리 장치.
KR1019930030596A 1993-01-29 1993-12-29 다수의 버스간의 정보 전송 시스템 및 방법 KR970001919B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US1104193A 1993-01-29 1993-01-29
US8/011,041 1993-01-29
US08/011,041 1993-01-29

Publications (2)

Publication Number Publication Date
KR940018760A KR940018760A (ko) 1994-08-18
KR970001919B1 true KR970001919B1 (ko) 1997-02-19

Family

ID=21748611

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930030596A KR970001919B1 (ko) 1993-01-29 1993-12-29 다수의 버스간의 정보 전송 시스템 및 방법

Country Status (7)

Country Link
US (1) US5611058A (ko)
EP (1) EP0609041A1 (ko)
JP (1) JP3189139B2 (ko)
KR (1) KR970001919B1 (ko)
CN (1) CN1102265C (ko)
CA (1) CA2109043A1 (ko)
TW (1) TW283218B (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5037587A (en) * 1989-07-17 1991-08-06 Mitsui Toatsu Chemicals, Inc. Preparation process of polyimide film
US5828856A (en) * 1994-01-28 1998-10-27 Apple Computer, Inc. Dual bus concurrent multi-channel direct memory access controller and method
EP0690382B1 (en) * 1994-07-01 2003-01-02 Sun Microsystems, Inc. Computer system with a multiplexed address bus and pipelined write operations
US5793996A (en) * 1995-05-03 1998-08-11 Apple Computer, Inc. Bridge for interconnecting a computer system bus, an expansion bus and a video frame buffer
US6226695B1 (en) * 1995-09-29 2001-05-01 International Business Machines Corporation Information handling system including non-disruptive command and data movement between storage and one or more auxiliary processors
US6470405B2 (en) * 1995-10-19 2002-10-22 Rambus Inc. Protocol for communication with dynamic memory
US5748914A (en) * 1995-10-19 1998-05-05 Rambus, Inc. Protocol for communication with dynamic memory
US6810449B1 (en) 1995-10-19 2004-10-26 Rambus, Inc. Protocol for communication with dynamic memory
US5778438A (en) * 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5867675A (en) * 1996-08-06 1999-02-02 Compaq Computer Corp Apparatus and method for combining data streams with programmable wait states
US5905876A (en) * 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system
US6055373A (en) * 1997-04-28 2000-04-25 Ncr Corporation Computer system including a digital signal processor and conventional central processing unit having equal and uniform access to computer system resources
US6266379B1 (en) 1997-06-20 2001-07-24 Massachusetts Institute Of Technology Digital transmitter with equalization
US6178477B1 (en) * 1997-10-09 2001-01-23 Vlsi Technology, Inc. Method and system for pseudo delayed transactions through a bridge to guarantee access to a shared resource
AU9604698A (en) 1997-10-10 1999-05-03 Rambus Incorporated Method and apparatus for two step memory write operations
US6401167B1 (en) 1997-10-10 2002-06-04 Rambus Incorporated High performance cost optimized memory
US6032178A (en) * 1998-01-12 2000-02-29 Siemens Aktiengesellschaft Method and arrangement for data transmission between units on a bus system selectively transmitting data in one of a first and a second data transmission configurations
US6061764A (en) * 1998-01-26 2000-05-09 Intel Corporation Coherent variable length reads which implicates multiple cache lines by a memory controller connected to a serial and a pipelined bus utilizing a plurality of atomic transactions
US6347344B1 (en) 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
US6434649B1 (en) 1998-10-14 2002-08-13 Hitachi, Ltd. Data streamer
US6202112B1 (en) * 1998-12-03 2001-03-13 Intel Corporation Arbitration methods to avoid deadlock and livelock when performing transactions across a bridge
US7555603B1 (en) 1998-12-16 2009-06-30 Intel Corporation Transaction manager and cache for processing agent
US8391039B2 (en) * 2001-04-24 2013-03-05 Rambus Inc. Memory module with termination component
US6675272B2 (en) 2001-04-24 2004-01-06 Rambus Inc. Method and apparatus for coordinating memory operations among diversely-located memory components
US6810455B2 (en) 2001-09-28 2004-10-26 Cradle Technologies, Inc. Bus arbitration system and method for carrying out a centralized arbitration with independent bus request and grant lines
US6807593B1 (en) * 2001-11-01 2004-10-19 Lsi Logic Corporation Enhanced bus architecture for posted read operation between masters and slaves
US6839816B2 (en) * 2002-02-26 2005-01-04 International Business Machines Corporation Shared cache line update mechanism
US6907502B2 (en) * 2002-10-03 2005-06-14 International Business Machines Corporation Method for moving snoop pushes to the front of a request queue
TW594490B (en) * 2003-03-20 2004-06-21 Via Tech Inc Bus for control chipset and the arbitration method
US7099971B1 (en) * 2003-06-26 2006-08-29 Emc Corporation Arbitration system
US7301831B2 (en) 2004-09-15 2007-11-27 Rambus Inc. Memory systems with variable delays for write data signals
US7502895B2 (en) * 2005-09-13 2009-03-10 Hewlett-Packard Development Company, L.P. Techniques for reducing castouts in a snoop filter
US8375171B2 (en) * 2010-04-08 2013-02-12 Unisys Corporation System and method for providing L2 cache conflict avoidance
KR101928770B1 (ko) * 2012-03-02 2018-12-13 에이알엠 리미티드 제1 및 제2의 프로토콜 도메인을 갖는 데이터 처리장치와, 그 데이터 처리장치의 방법
US10282109B1 (en) * 2016-09-15 2019-05-07 Altera Corporation Memory interface circuitry with distributed data reordering capabilities

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5526736B2 (ko) * 1973-12-14 1980-07-15
US4096571A (en) * 1976-09-08 1978-06-20 Codex Corporation System for resolving memory access conflicts among processors and minimizing processor waiting times for access to memory by comparing waiting times and breaking ties by an arbitrary priority ranking
JPS56147224A (en) * 1980-04-18 1981-11-16 Toshiba Corp Information processor
US4494193A (en) * 1982-09-30 1985-01-15 At&T Bell Laboratories Deadlock detection and resolution scheme
US4908749A (en) * 1985-11-15 1990-03-13 Data General Corporation System for controlling access to computer bus having address phase and data phase by prolonging the generation of request signal
JP2554050B2 (ja) * 1986-02-26 1996-11-13 株式会社日立製作所 デ−タ処理方法
JP2886856B2 (ja) * 1986-04-09 1999-04-26 株式会社日立製作所 二重化バス接続方式
US4965723A (en) * 1987-10-23 1990-10-23 Digital Equipment Corporation Bus data path control scheme
US5317715A (en) * 1987-12-15 1994-05-31 Advanced Micro Devices, Inc. Reduced instruction set computer system including apparatus and method for coupling a high performance RISC interface to a peripheral bus having different performance characteristics
GB8808353D0 (en) * 1988-04-09 1988-05-11 Int Computers Ltd Data processing system
US5133074A (en) * 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
US5072369A (en) * 1989-04-07 1991-12-10 Tektronix, Inc. Interface between buses attached with cached modules providing address space mapped cache coherent memory access with SNOOP hit memory updates
US5278974A (en) * 1989-12-04 1994-01-11 Digital Equipment Corporation Method and apparatus for the dynamic adjustment of data transfer timing to equalize the bandwidths of two buses in a computer system having different bandwidths
JPH0485646A (ja) * 1990-07-30 1992-03-18 Oki Electric Ind Co Ltd バスインタフェイス制御装置
US5274763A (en) * 1990-12-28 1993-12-28 Apple Computer, Inc. Data path apparatus for IO adapter
US5265216A (en) * 1991-06-28 1993-11-23 Digital Equipment Corporation High performance asynchronous bus interface
US5369748A (en) * 1991-08-23 1994-11-29 Nexgen Microsystems Bus arbitration in a dual-bus architecture where one bus has relatively high latency
US5359715A (en) * 1991-09-16 1994-10-25 Ncr Corporation Architectures for computer systems having multiple processors, multiple system buses and multiple I/O buses interfaced via multiple ported interfaces
US5355455A (en) * 1991-11-19 1994-10-11 International Business Machines Corporation Method and apparatus for avoiding deadlock in a computer system with two or more protocol-controlled buses interconnected by a bus adaptor
US5265211A (en) * 1992-01-02 1993-11-23 International Business Machines Corporation Arbitration control logic for computer system having dual bus architecture
US5309567A (en) * 1992-01-24 1994-05-03 C-Cube Microsystems Structure and method for an asynchronous communication protocol between master and slave processors

Also Published As

Publication number Publication date
CN1094526A (zh) 1994-11-02
CN1102265C (zh) 2003-02-26
CA2109043A1 (en) 1994-07-30
JP3189139B2 (ja) 2001-07-16
JPH076124A (ja) 1995-01-10
US5611058A (en) 1997-03-11
EP0609041A1 (en) 1994-08-03
KR940018760A (ko) 1994-08-18
TW283218B (ko) 1996-08-11

Similar Documents

Publication Publication Date Title
KR970001919B1 (ko) 다수의 버스간의 정보 전송 시스템 및 방법
US5282272A (en) Interrupt distribution scheme for a computer bus
EP0488771B1 (en) Arbitration of packet switched busses, including busses for shared memory multiprocessors
US5265235A (en) Consistency protocols for shared memory multiprocessors
CA2051222C (en) Consistent packet switched memory bus for shared memory multiprocessors
US5191649A (en) Multiprocessor computer system with data bus and ordered and out-of-order split data transactions
EP0535696B1 (en) Apparatus for avoiding processor deadlock in a multiprocessor system
US6526469B1 (en) Bus architecture employing varying width uni-directional command bus
US5261109A (en) Distributed arbitration method and apparatus for a computer bus using arbitration groups
EP0559408B1 (en) A method and apparatus for performing bus arbitration using an arbiter in a data processing system
US6496890B1 (en) Bus hang prevention and recovery for data communication systems employing a shared bus interface with multiple bus masters
US6681283B1 (en) Coherent data apparatus for an on-chip split transaction system bus
US6732208B1 (en) Low latency system bus interface for multi-master processing environments
US5418914A (en) Retry scheme for controlling transactions between two busses
US5271020A (en) Bus stretching protocol for handling invalid data
US5682551A (en) System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto
US5901295A (en) Address and data bus arbiter for pipelined transactions on a split bus
JPH0642225B2 (ja) Dma機能を有する計算機システム
JP2532191B2 (ja) 複式バス・ア―キテクチャを有する計算システムに使用するデ―タ伝送の管理方法
EP0489556B1 (en) Consistency protocols for shared memory multiprocessors
WO1996013774A1 (en) Multiprocessor system bus protocol for optimized accessing of interleaved storage modules
JPH07105146A (ja) 共有メモリ装置
JPH06324988A (ja) 非多重化非同期アドレス/データ・バス・システムを使用するデータ処理システム
US5906659A (en) Computer system buffers for providing concurrency between CPU accesses, local bus accesses, and memory accesses
KR960005395B1 (ko) 최소 경합 프로세서 및 시스템 버스 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J2X1 Appeal (before the patent court)

Free format text: APPEAL AGAINST DECISION TO DECLINE REFUSAL

G160 Decision to publish patent application
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20041227

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee