KR100393168B1 - 컴퓨터 시스템 내의 적응형 다중화 어드레스 및 데이터버스를 운영하기 위한 방법 및 장치 - Google Patents

컴퓨터 시스템 내의 적응형 다중화 어드레스 및 데이터버스를 운영하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR100393168B1
KR100393168B1 KR10-2001-7002477A KR20017002477A KR100393168B1 KR 100393168 B1 KR100393168 B1 KR 100393168B1 KR 20017002477 A KR20017002477 A KR 20017002477A KR 100393168 B1 KR100393168 B1 KR 100393168B1
Authority
KR
South Korea
Prior art keywords
bus
data
request
address
arbitration
Prior art date
Application number
KR10-2001-7002477A
Other languages
English (en)
Other versions
KR20010073009A (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 KR20010073009A publication Critical patent/KR20010073009A/ko
Application granted granted Critical
Publication of KR100393168B1 publication Critical patent/KR100393168B1/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
    • 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
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

외부 버스 상의 미결된 데이터 및/또는 스눕 트랜잭션의 수에 따라, 경합하는 어드레스와 데이터 요구 사이를 중재하는 중재 로직을 포함하는 컴퓨터 시스템 내의 다중화 128-비트 외부 버스를 운영하기 위한 장치가 기재되어 있다. 이 중재의 결과에 응답하여, 선택 로직은 경합하는 어드레스 또는 데이터 요구 중의 어느 하나에 대해 외부 버스를 허가한다. 중재를 수행할 때, 중재 로직은 미결된 데이터 트랜잭션의 수와 소정의 데이터 임계수치를 비교하는데, 이 데이터 임계수치는, 소정의 조건 하에서 외부 버스 처리율을 최적화하기 위해, 애플리케이션 프로그램 또는 운영 체제에 의해 동적으로 변경될 수 있다.

Description

컴퓨터 시스템 내의 적응형 다중화 어드레스 및 데이터 버스를 운영하기 위한 방법 및 장치{METHOD AND APPARATUS FOR OPERATING AN ADAPTIVE, MULTIPLEXED ADDRESS AND DATA BUS WITHIN A COMPUTER SYSTEM}
컴퓨터 시스템 내의 장치들 간의 통신은 통상적으로 이러한 장치들을 상호 연결하는 하나 이상의 버스를 이용하여 수행된다. 이 버스들은 두 장치를 연결하는 전용 버스(dedicated bus)이거나, 또는 다수의 유닛 및 장치(즉, 버스 에이전트(agents))로 다중화된 비전용 버스(non-dedicated bus)일 수 있다. 또한, 컴퓨터 시스템 내의 버스는 특정 타입의 정보의 전송에 전용될 수 있다. 예를 들면, 인텔 코퍼레이션사(캘리포니아, 산타 클라라)에 의해 개발된 x86 마이크로프로세서 아키텍처는, 어드레스, 데이터 및 제어 신호를 각각 전송하기 위한 어드레스, 데이터 및 제어 버스를 이용하는 3-버스 시스템을 포함한다.
Pentium Pro" 또는 Pentium Ⅱ" 프로세서와 같은, 진보된 아키텍처 및 프로세서를 채택한 컴퓨터 시스템에서, 버스 트랜잭션은 파이프라인 방식으로 발생한다. 특히, 이전의 트랜잭션 요구가 발생되고, 다른 버스 트랜잭션이 개시되기 전에 버스 트랜잭션의 모든 성분 즉 단계가 완료되지 않아도, 다음의 메모리 액세스를 시작할 수 있다. 따라서, 다수의 버스 에이전트로부터의 요구는 어떤 시점에서는 보류중(pending)일 수 있다. 버스 트랜잭션의 파이프라인화(pipelining)는 개별적인 데이터 및 어드레스 버스에 의해 용이해 진다. 요구된 어드레스가 어드레스 버스 상에서 전송되는 동안에, 그 어드레스 버스에서 이전에 발생된 어드레스에 대응하는 데이터(또는 신호)는 데이터 버스 상에 리턴될 수 있다.
증가된 데이터 처리율을 용이하게 하기 위해, 컴퓨터 시스템은 버스트 데이터 전송(burst data transfer)을 도모할 수 있는데, 여기서 어드레스는 어드레스 버스 상에 발생되고, 데이터는 어드레싱된 위치 뿐만 아니라, 예를 들어 인텔 버스트 오더 방식(Intel burst order scheme)에 의해 정의된 바와 같이, 다수의 직후 위치로부터 리턴된다. 예를 들어, 버스트 캐시 전송 동안에, 캐시 메모리에서의 데이터의 전체 라인(예로, 32바이트)이, 그 어드레스 버스 상에 배치된 단일 어드레스에 응답하여, 데이터 버스 상에 배치될 수 있다. 많은 컴퓨터 시스템에서, 이러한 버스트 캐시 전송은 컴퓨터 시스템 내에서 버스 상의 실질적인 부분 액티비티(portion activity)를 설명할 수 있다. 이러한 상황에서, 어드레스 버스는 데이터 버스에 비하여 적게 사용된다는 점(the address bus is being under utilized relative to the data bus)을 이해할 것이다.
본 발명은 일반적으로 컴퓨터 시스템에서의 데이터 전송 분야에 관한 것으로, 특히 향상된 데이터 처리율을 얻기 위한 컴퓨터 시스템 내의 다중화 어드레스 및 데이터 버스를 운영하는 방법에 관한 것이다.
본 발명은 첨부된 도면의 구성으로 한정되지 않고 예시적인 방법으로 설명되며, 여기서, 동일한 참조부호는 유사한 구성 요소를 나타낸다.
도1은 도1a 및 도1b의 관계를 도시한 도면.
도1a 및 도1b는 본 발명의 예시적인 실시예가 구현된 컴퓨터 시스템의 블록도.
도2는 프로세서와 다른 외부 버스 에이전트를 연결하는 외부 버스를 도시한 블록도.
도3은 외부 버스 트랜잭션 내에 포함될 수 있는 6개의 단계를 도시한 타이밍도.
도4는 예시적인 외부 버스 상에 백-투-백 리드 라인 트랜잭션(back-to-back read line transaction)을 위한 신호 천이를 도시한 타이밍도.
도5는 본 발명의 일실시예에 따른, 프로세서와 외부 버스 로직을 각각 포함한 외부 버스를 연결하는 적응형 다중화 128-비트 버스를 도시한 블록도.
도6은 본 발명의 일실시예에 따른, 도5에 도시된 외부 버스 로직 내에 포함될 수 있는 회로를 도시한 블록도.
도7은 본 발명의 일실시예에 따른, 외부 버스 로직 내 및 다중화 버스 상에서의 신호의 트랜잭션을 도시한 타이밍도.
도8은 본 발명의 일실시예에 따른, 컴퓨터 시스템 내의 다중화 어드레스 및 데이터 버스를 운영하는 방법을 도시한 순서도.
도9a 내지 도9c는 본 발명의 각각의 예시적 실시예에 따른, 도8에 도시된 절차에서 사용될 수 있는 3가지 예시적인 중재 방식을 도시한 순서도.
발명의 요약
컴퓨터 시스템 내의 다중화 어드레스 및 데이터 버스를 운영하기 위한 방법 및 장치는, 다중화 버스에 액세스 하기 위해 경합하는 어드레스 요구 및 데이터 요구 사이를 중재하는 단계를 포함한다. 이 중재는 소정의 기준에 따라 수행된다. 그리고 나서, 다중화 버스는 그 중재의 결과에 따라 어드레스 또는 데이터 요구 중 어느 하나에 허가된다.
본 발명의 다른 특징들은 첨부된 도면 및 이하의 상세한 설명으로부터 보다 명확해질 것이다.
컴퓨터 시스템 내의 다중화 어드레스 및 데이터 버스를 운영하기 위한 방법 및 장치가 기재되어 있다. 다음의 기재에서, 설명상, 본 발명의 완전한 이해를 제공하기 위해, 다양한 특정 세목들이 제시되어 있다. 그러나, 이 기술분야의 통상의 지식을 가진 자에게는 본 발명이 이러한 특정 세목들 없이도 실시될 수 있음이 명백할 것이다.
컴퓨터 시스템 개요
도1a 및 도1b는 본 발명의 하나의 예시적인 실시예를 구현할 수 있는 컴퓨터 시스템(10)의 블록도이다. 컴퓨터 시스템(10)은 하나 이상의 프로세서(12)를 포함하는데, 이것은 각각 CISC(Complex Instruction Search Computing) 마이크로 프로세서, RISC(Reduced Instruction Set Computing) 마이크로프로세서, VILW(Very Long Instruction Word) 마이크로프로세서 또는 그 밖의 다른 프로세서 장치일 수 있다. 본 발명의 일실시예에서, 각 프로세서(12)는 인텔 코퍼레이션사(캘리포니아, 산타 클라라)에 의해 제조된 Pentium Pro" 또는 Pentium Ⅱ" 마이크로프로세서일 수 있다. 각 프로세서(12)는 각각의 외부 버스 인터페이스(15)를 통해 외부 버스(12)(FSB(front side bus)라고도 부르는)에 연결된다. 외부 버스 인터페이스(19)를 포함한 추가의 에이전트(17)는 외부 버스(14)에 연결되는 것으로 도시되어있다.
또한, 제어기(16)는 그 안에 포함된 외부 버스 인터페이스(18)를 통해 외부 버스(14)에 연결된다. 외부 버스(14) 및 외부 버스 인터페이스(15, 18)는 제1 주파수(즉, 66 또는 100 MHz)로 동작할 수 있고, 이에 따라 구별된 클럭 도메인을 구성한다. 제어기(16)는 또한 메인 메모리 인터페이스(20)를 포함하도록 도시되는데, 이로써, 제어기(16)는 메인 메모리(22)에 연결된다. 메인 메모리(22) 및 메인 메모리 인터페이스(20)는 구별된 클럭 도메인을 구성하거나, 또는 외부 버스(14) 및 외부 버스 인터페이스(18)의 시간 도메인 안에 통합될 수도 있다.
제어기(16)는 또한, 1995년 6월 1일에 발표된 PCI Local Bus Specification,Revision 2.1에서 정의된 바와 같이, PCI(Peripheral Components Interconnect) 인터페이스(24)를 포함하는데, 이로써, 제어기(16)는 PCI 버스(26)에 연결된다. 일실시예에서, PCI 인터페이스(24) 및 PCI 버스(26)는 33MHz의 주파수로 동작하며, 이에 따라 구별된 클록 도메인을 추가로 구성할 수 있다. AGP(Accelerated Graphics Port) 인터페이스(28)를 포함하는 예시적인 실시예에서, 전용 그래픽 인터페이스는 제어기(16)와 그래픽 버스를 연결시키는데, 여기서, 이 예시적인 실시예는 AGP 버스(30)를 포함하고 있다. AGP 버스(30)는 전적으로 제어기(16)와 전용 그래픽 프로세서(32) 사이의 어드레스 및 데이터 정보의 전송을 위한 것이다. AGP 인터페이스(28)는 1996년 8월 1일에 발표된 AGP Interface Specification, Revision 1.0에 따라 동작한다. 그래픽 프로세서(32)는 인텔 i740 그래픽 가속기 칩을 포함할 수 있다. 그래픽 프로세서(32)는 전용 및 로컬 그래픽 메모리(34), 및 디스플레이 유닛(36)에 연결되고, 컴퓨터 모니터 또는 텔레비젼 셋트를 포함할 수 있다. 하나의 예시적인 실시예에서, AGP 인터페이스(28) 및 AGP 버스(30)는 66MHz의 주파수로 동작하며, 이에 따라 구별된 클럭 도메인을 추가로 구성한다.
제어기(16)의 인터페이스(18, 20, 24)는 상이하고 구별된 클럭 도메인 내에 각각 존재할 수 있다. 그 안에 다양한 인터페이스가 존재하는 클럭 도메인 사이에 신호의 전송을 용이하게 하기 위해, 제어기(16)는 전송 로직(38)을 포함한다. 전송 로직(38)은 또한, 외부 및 AGP 인터페이스의 클럭 도메인을 클럭킹하는 클럭 신호를 동기화하기 위한 회로를 포함한다.
컴퓨터 시스템(10)은 또한 브릿지(40)를 포함하는데, 이것은 PCI 버스(26)와레거시 버스(legacy bus)(42) 간의 통신을 용이하게 한다. 레거시 버스(42)는, ISA Bus Specification P996에 의해 정의된 바와 같이, ISA(Industry Standard Architecture) 버스일 수 있다. 대안적으로, 레거시 버스(42)는, EISA(Extended Industry Standard Architecture) 버스 또는 MCA(Micro Channel Architecture) 버스와 같은 레거시 버스일 수도 있다. 브릿지(40)는 또한 USB(Universal Serial Bus)(44)에 의해 USB 장치(46)에 연결되도록 도시되어 있으며, 이것은 모두 1996년 1월 15일에 발표된 USB Specification, Revision 1.0에 따른다. 브릿지(40)는 또한 IDE(Integrated Device Electronics) 장치(48)에 연결되는 것으로 도시되어 있으며, 이것은 통상적으로 컴퓨터 시스템(10)에서 디스크 드라이브의 형태인 대용량 저장 장치이다. PCI 장치(50) 및 ISA 장치(52)는 PCI 버스(26) 및 ISA 버스(42)에 각각 연결되는 것으로 도시되어 있다. 어떤 수의 PCI 장치(50) 및 ISA 장치(52)도 해당 버스(26, 42)에 연결될 수 있으며, 저장, 입력, 오디오, 디스플레이 또는 네트워크 장치를 포함한 어떤 수의 주변 장치도 포함할 수도 있다는 것을 알 수 있다.
외부 버스 프로토콜
도2는 프로세서(12)와 다른 외부 버스 에이전트(21)를 연결하도록 도시된 외부 버스(14)의 간략화된 표현을 제공한 블록도이며, 여기서, 외부 버스 에이전트(21)는 프로세서 또는 외부 버스(14)에 연결된 그 밖의 다른 장치일 수 있다. 외부 버스(14)는 Pentium Pro" 또는 Pentium Ⅱ" 프로세서에 대한 외부 버스명세를 따르며, 이 경우, 외부 버스(14)는 36-비트 어드레스 버스(14a), 64-비트 데이터 버스(14b) 및 제어 신호(14c)를 포함한다. 프로세서(12) 및 외부 버스 에이전트(21)는 각각 외부 버스 로직(EBL)(60)을 포함하는데, 이것은 미국 특허 번호 5,535,345(Fisch 등)에 더 기재되어 있으며, 여기서 참조로 포함된다. 프로세서(12) 및 에이전트(21) 안에 포함된 외부 버스 로직(60)은, 외부 버스 트랜잭션이 외부 버스(14)를 통해 발생하도록 하기 위해, 해당 장치와 외부 버스 간에 물리적 및 논리적 인터페이스를 제공한다. 이 명세서에 있어서, "트랜잭션(transaction)" 이라는 용어는 단일 버스 액세스 요구에 관련된 버스 액티비티로 정의된다. 트랜잭션은 버스 중재, 및 ADS# 신호의 표명 및 트랜잭션 어드레스의 전파로 시작될 수 있다. IA(Intel Architecture)에 의해 정의된 바와 같이, 트랜잭션은 6개의 단계까지 포함할 수 있으며, 각 단계는 특정 타입의 정보를 전달하기 위해 특정한 신호의 셋트를 이용한다. 도3은 2개의 트랜잭션(즉, 트랜잭션 1 및 2)에 대한 6개의 트랜잭션 단계를 도시한 타이밍도이다. 보다 상세히 말하면, 각 트랜잭션은 다음의 단계를 포함한다.
1. 중재(arbitration) 단계(72);
2. 요구(request) 단계(74);
3. 에러(error) 단계(76);
4. 스눕(snoop) 단계(78);
5. 응답(response) 단계(80); 및
6. 데이터 전송 단계(82).
도3으로부터 알 수 있는 바와 같이, 버스 트랜잭션은 각 트랜잭션의 여러 단계가 오버랩되는 파이프라인형이다. 요구하는 에이전트가 버스를 가지고 있지 않을 경우, 트랜잭션은 요구한 에이전트(예로, 프로세서(12) 또는 외부 버스 에이전트(21))가 버스 소유자가 되는 중재 단계(72)로 시작한다. 그리고 나서, 트랜잭션은 버스 소유자가 버스 상에 요구 및 어드레스 정보를 구동하는 요구 단계(74)로 진입한다. 물론, 전술된 단계는 단지 예시일 뿐이다. 단계(예로, 에러 단계(76)) 중의 어떤 것은 트랜잭션에서 생략될 수 있다.
이제, 특정 참조예가 도4에 만들어져 있는데, 이것은 예시적인 외부 버스(14) 내의 최고 속도 백-투-백 리드 라인 트랜잭션(full speed back-to-back read line transaction)을 위한 신호 천이를 보여주는 타이밍도(90)이다. 타이밍도(90)에 도시된 신호들은 클럭(CLK) 신호(92), 어드레스 스트로브(ADS#) 신호(94), 요구 신호(96), 수정된 캐시 라인에 대한 히트(HIT#) 신호(98), 타깃 준비(TRDY#) 신호(100), 데이터 버스 사용중(DBSY#) 신호(102), 데이터(D[63:0]#) 신호(104), 데이터 준비(DRDY#) 신호(106) 및 응답 상태(RS[2:0]#) 신호(108)를 포함한다.
도3에 도시된 요구 단계(74)는 도4에서 요구 신호(96)의 천이로 도시된 2 클럭 사이클이다. 요구 단계(74)의 제1 클럭(예로, T1)에서, ADS# 신호(94)는 로우(low)로 구동되고, 트랜잭션 어드레스 정보(즉, 요구 신호(96))가 어드레스 버스(14a) 상에 배치된다. 이것은 요구 단계 A(REQA)로 표시되어 있다. 제2 클럭(예로, T2)에서, 추가 정보가 어드레스 버스(14a) 상에 배치된다. 이러한 추가 정보는 바이트 인에이블 정보, 지연된 ID 정보, 및 관련 트랜잭션의 길이에 관한 정보를 포함할 수 있다. 이것은 요구 단계 B(REQB)로 나타내였다.
에러 단계(76)는 요구에 의해 유발된 패리티(parity) 에러를 나타낸다. 에러 단계(76)에서 에러가 나타났기 때문에, 취소되지 않은 모든 트랜잭션은 스눕 단계(78)을 포함하는데, 이것은 요구 단계(74)가 시작된 후에 4 이상의 클럭을 발생한다. 스눕 단계(78) 내에 생성된 결과는 외부 버스 로직(60)에 다시 보고되고, 트랜잭션을 위해 구동된 어드레스가 어떤 버스 에이전트 캐시 안의 유효 또는 수정된(오염된) 캐시 라인을 참조하는지를 나타낸다. 스눕 단계(78)는 또한, 트랜잭션이 이전에 발생된 트랜잭션에 대해 순서적으로 완료될 가능성이 있는지, 취소되어 이후에 재시도 될 가능성이 있는지, 또는 버스 상에서 트랜잭션 요구의 비순서적(out-of-order) 완료를 허용하는 프로세서에 연결된 경우, 가능한 비순서적 완료를 위해 지연될 가능성이 있는지의 여부를 나타낸다. HIT# 신호(98)는 트랜잭션이 버스 에이전트 캐시에서 수정된 캐시 라인을 참조한다는 것을 나타내도록 로우로 구동된다.
응답 단계(80)에서, 외부 버스 에이전트는 외부 버스 로직(60)에, 트랜잭션이 성공했는지 또는 실패했는지, 트랜잭션이 순서대로 완료되었는지, 트랜잭션의 완료가 일시적으로 지연되어야 하는지, 트랜잭션이 재시도되어야 하는지, 및 트랜잭션이 데이터 전송 단계(82)를 포함하는지를 나타내는 정보를 보고한다. 만일, 트랜잭션이 데이터 전송 단계(82)를 포함하는 경우(즉, 요구 에이전트가 전송할 기록 데이터를 가지고 있거나, 또는 판독 데이터를 요구한 경우), 트랜잭션은 데이터 전송 단계(82)로 진입한다.
도4를 다시 참조하면, 최고 속도 백-투-백 리드 라인 트랜잭션 동안, 데이터청크(chunk)(즉, 64비트)는 각각의 4개의 연속 클럭 주기(즉, T7-T11) 동안에 전송된다.
도4에서, 최고 속도 판독 라인 트랜잭션 동안에 2 클럭 요구 단계(74)은 4-클럭 데이터 전송 단계(82)을 생성하는데, 이것은 컴퓨터 시스템 안에서 정규적으로 발생한다. 따라서, 어드레스 버스는 적게 사용되고(the address bus is being under-utilized), 도4에 110으로 나타난 바와 같은 대역폭 낭비가 요구 단계 사이에 발생한다.
다중화 어드레스 및 데이터 버스
도5를 참조하면, 본 발명의 예시적인 실시예에 따라 구성된, 프로세서(12) 및 외부 버스 에이전트(21) 형태의 한쌍의 외부 버스 에이전트가 다중화 어드레스 및 데이터 버스(120)를 통해 연결되는 것으로 도시되어 있다. 다중화 버스(120)는 128-비트 버스이다. 그러나, 본 발명은 32, 64 및 256 비트 버스를 포함한, 다른 사이즈의 버스에도 동일하게 적용될 수 있다. 본 발명의 일실시예에 따른 프로세서(12) 및 외부 버스 에이전트(21)는 각각, 다중화 버스(120)를 통해 해당 프로세서(12)와 버스 에이전트(21)에 의한 통신을 용이하게 하는 외부 버스 로직(EBL)(60)을 포함한다. 본 발명은 도2에 도시된 버스(14)와 같은, 어드레스 버스, 데이터 버스 및 제어 신호를 포함한 외부 버스를 도5에 도시된 다중화 버스(120)와 같은 시간-다중화된(time-multiplexed) 버스로 대체하도록 제안하는데, 여기서, 다중화 버스(120)의 전체 128 비트는 실질적으로 항상 특정한 기능에 전용된다. 따라서, 버스(14)의 각 비트가 소정의 데이터 타입을 전송하도록 전용되는 버스(14)와 대조 구별하여, 다중화 버스(120)의 일부 또는 모든 비트는 상이한 시간에 상이한 정보 타입(즉, 어드레스, 데이터 또는 제어 정보)을 전송할 수 있다. 상세히 말하면, 본 발명은, 다중화 버스(120)를 적응형 또는 지능형 방식으로 어드레스 또는 데이터 정보를 전송하도록 시간 다중화함으로써, 상기 도4에서 설명된, 전용 어드레스 버스(14a)가 적게 이용되는 점(under-utilization of a dedicated address bus 14a)을 다루고자 한다.
도6은 본 발명의 하나의 예시적인 실시예에 따라, 다중화 버스(120)의 기능성을 버스(120)의 사용 중인 대역폭을 감소시키는 방식으로 시간-다중화하기 위해, 외부 버스 로직(60) 내에 포함될 수 있는 회로를 도시한 블록도이다. 외부 버스 로직(60)은, 예를 들어, 프로세서, 버스 브릿지, 제어기 또는 그 밖의 다른 버스 에이전트와 같은 외부 버스에 연결된 모든 버스 에이전트 안에 통합될 수 있다. 외부 버스 로직(60)은 쌍으로된 2대1 멀티플렉서(MUX)(140a, 140b)를 포함하는 것으로 도시되어 있다. MUX(140a)는 어드레스 및 데이터 출력(142a, 144a)을 각각 수신하도록 연결된다. 각각의 어드레스 및 데이터 출력(142a, 144a)은 다중화 버스(120)의 전체 대역폭을 사용할 수 있고, 따라서, 본 발명의 일실시예에 따라, 128 비트를 차지할 수 있다. 따라서, 도4에서 90으로 나타낸 바와 같이, 2-클럭 요구 단계(74)(즉, REQA, REQB)를 필요로 하는, 트랜잭션 어드레스를 포함한 요구 신호가 단일 클럭 사이클로 외부 버스 로직(60)으로부터 전파될 수 있으며, 이 요구 신호는, 도2에 도시된 어드레스 버스(14a)와 같은, 폭이 단지 36비트인 어드레스 버스로 더 이상 제약되지 않는다.
유사하게, 데이터 전송 단계(82) 동안에, 외부 버스 로직(60)은, 도4에서 104로 나타나 바와 같은, 64-비트 데이터 버스(14b)를 통해 4개의 연속 클럭 주기 동안에 4개의 64-비트 데이터 청크를 전송하도록 제한되지 않는다. 상세히 말하면, 본 발명에 따른 외부 버스 로직(60)은 2개의 연속 클럭 싸이클 동안에 4개의 데이터 청크를 전파한다. 유사한 방식으로, MUX(140b)는 외부 버스 로직(60)이 다중화 버스(120)의 전체 대역폭을 이용하여 송신된 어드레스 및 데이터 입력(144b, 142b)을 수신할 수 있도록 한다.
MUX(140a)는, 지시(ADIR#) 신호(146)의 형태로 선택 신호를 표명(assertion) 및 표명해제(desertion)함으로써, 요구 출력(142a) 및 데이터 출력(144a)을 선택하도록 동작할 수 있다. 지시 신호(ADIR#)(146)는, 중재 로직(150)을 포함하는 선택 로직(148)에 의해 표명 및 표명해제된다. 선택 로직(148)은 버스 요구(BREQ#) 신호(152) 및 EARLY_DRDY 신호(154) 모두를 수신하도록 연결되는데, 이것의 표명은 선택 로직(148)에 의해 어드레스 및 데이터 버스 요구로 각각 해석된다.
BREQ# 신호(152)는 대칭-에이전트 버스 마스터 신호이며, 이로써, 대칭 외부 버스 에이전트가 외부 버스를 중재한다. 상세히 말하면, 4개의 외부 버스 에이전트를 포함한 대칭 에이전트 컴퓨터 시스템에서, 특정 버스 에이전트는 전용 출력 라인 상에 BREQ# 신호(152)를 표명하고, 다른 3개의 에이전트로부터 BREQ# 신호를 입력으로 수신한다. 대칭 에이전트는 라운드-로빈 메카니즘에 기반하여 버스 중재를 지원한다. 그 에이전트를 다음의 중재 이벤트에서 최저 우선순위로 뒤쫓도록 4개의 대칭 버스 에이전트에 의해 순환 ID가 사용된다. 대칭 버스 에이전트 중 하나가 유휴 버스 상에 BREQ# 신호(152)를 표명하거나, 또는 현재의 버스 소유자가 버스 소유권을 새로운 버스 소유자에게 양도하도록 BREQ# 신호(152)를 표명해제한 경우에, 중재 이벤트가 발생한다. 도5에 도시된 바와 같이, 선택 로직(148)에 의해 수신된 BREQ# 신호(152)는, 그 안에 관련된 외부 버스 로직(60)을 포함하는 버스 에이전트의 출력 BREQ# 신호(152)이다. 따라서, BREQ# 신호(152)의 표명은 선택 로직(148)이, 연관된 버스 에이전트가 외부 다중화 버스(120)의 제어를 요구할 것인지, 뿐만 아니라, 트랜잭션의 중재 단계(72)에 뒤따르는 요구 단계(74)(이때, 어드레스 정보는 외부 다중화 버스(120) 상에 배치될 수 있다)이 요구되는지를 결정하도록 한다. 본 발명의 실시예에 따르면, BREQ# 신호(152)의 표명은 선택 로직(148)에 의해 어드레스 버스 액세스 요구로 해석된다.
EARLY_DRDY 신호(154)는, 그 안에 외부 버스 로직(60)이 포함되는 버스 에이전트에 의해 표명되는 이른 데이터-준비 신호이고, 버스 에이전트가 외부 다중화 버스(120) 상에 유효 데이터를 배치하기를 원한다는 것을 나타낸다. EARLY_DRDY 신호(154)는 버스 에이전트가 트랜잭션의 데이터 전송 단계(82)에 진입하기를 원한다는 것을 나타낸다. 본 발명의 일실시예에 따르면, EARLY_DRDY 신호(154)는 선택 로직(148)에 의해 데이터 버스 액세스 요구로 해석된다.
각각의 MUX(140a, 140b)는, 해당 MUX를 통해, 인에이블되거나 또는 디스에이블될 수 있는 ENABLE 입력을 갖도록 도시되어 있다. "출력" MUX(140a)는 BREQ# 신호(152) 또는 EARLY_DRDY 신호(154)의 표명에 의해 인에이블되는 것으로 도시되는데, 여기서, 표명은 외부 버스 로직(60)을 포함한 장치가 데이터 출력 또는 요구출력을 발생하기를 원한다는 것을 나타낸다. 한편, "입력" MUX(140b)는, 다중화 버스(120)에 액세스한 다른 장치에 연관된 BREQ# 신호(153) 또는 EARLY_DRDY 신호(155)의 표명에 의해 인에이블되는데, 신호(153, 155)의 표명은 이러한 다른 장치가 요구 또는 데이터 출력을 발생하기를 원한다는 것을 나타내고, 이것은 외부 버스 로직(60)을 포함한 장치에 입력을 포함할 수 있다.
신호(152, 154)를 감시함으로써, 외부 버스 로직(60)에 연관된 버스 에이전트가 언제 다중화 버스(120)에 액세스를 요구하는지, 및 이 액세스의 목적이 트랜잭션의 요구 단계 또는 데이터 전송 단계를 실행(즉, 어드레스 또는 데이터 액세스 요구를 제공)하려는 것인지의 여부를 검출할 수 있다.
어드레스 또는 데이터 버스 액세스 요구가 BREQ# 신호(152) 또는 EARLY_DRDY 신호(154)의 표명에 의해 검출되고, 이러한 액세스 요구와 반대 타입의 액세스 요구 사이에 경합(contention)(즉 어드레스 버스 요구와 데이터 버스 요구 사이에 경합)이 없는 이벤트에서, 선택 로직(148)은 다중화 버스(120)를 관련된 액세스 요구에 대해 간단히 허가한다. 상세히 말하면, BREQ# 신호(152)의 표명에 응답하여, ADIR# 신호(146)를 표명해제함으로써(즉, ADIR# 신호(146)를 하이(high)로 구동함으로써), 선택 로직(148)은 요구 출력(142a) 및 요구 입력(142b)에 대해 다중화 버스(120)를 허가한다. 대안적으로, EARLY_DRDY 신호(152)의 표명에 응답하여, ADIR# 신호(146)를 표명함으로써(즉, ADIR# 신호(146)를 로우로 구동함으로써), 선택 로직(148)은 데이터 출력(144a) 또는 데이터 입력(144b)에 대해 다중화 버스(120)를 허가한다.
한편, 어드레스와 데이터 버스 액세스 요구 간에 경합이 발생하면, 중재 로직(150)은 이들 간의 경합한 버스 액세스 요구를 중재하도록 동작한다. 예를 들어, BREQ# 신호(152) 및 EARLY_DRDY 신호(154)가 동시에 표명되는 경우, 또는 미결인 어느 한 타입의 버스 요구가 있고, 당해 보류 중인 요구에 대한 서비스 제공 이전에 반대 타입의 버스 액세스 요구가 있는 경우에, 어드레스와 데이터 버스 액세스 요구 간에 경합이 발생할 수 있다. 만일, 버스 트랜잭션(데이터 또는 어드레스)이 경합이 일어난 시간에 발생한다면, 중재 로직은 중재 동작을 착수하기 전에 트랜잭션을 완료하도록 해야한다.
중재 로직(150)은 3개의 레지스터, 즉, 임계값 레지스터(156), 요구 카운트 레지스터(158) 및 스눕 카운트 레지스터(160)에 연결되도록 도시되어 있다. 요구 카운트 레지스터(158)는 내부 요구 카운트(예로, IA 아키텍처 프로세서에 의해 유지되는 "RCNT" 값)가 다중화 버스(120) 상에서의 미결된 트랜잭션의 수를 쫓도록 한다. 어떤 버스 에이전트에서 발생한 신규 트랜잭션이 요구 단계(74)에 진입한 경우, 내부 요구 카운트는 하나씩 증가된다. 내부 요구 카운트는 또한, 미결된 트랜잭션이 응답 단계(80)을 완료하거나, 또는 에러 단계(76)에서 멈춰진 경우, 하나씩 감소된다. 일실시예에서, 내부 요구 카운트는 또한, 리셋 및 버스 초기화 동안에 0으로 초기화되고, 0에서 7까지의 값이 될 수 있는데, 이것은 다중화 버스(120) 상에서의 미결된 트랜잭션의 최대 수이다.
스눕 카운트 레지스터(160)는 내부 스눕 카운트(예로, IA 프로세서에 의해 유지되는 "SCNT" 값)가, 여전히 스눕 단계(78)을 완료할 필요가 있는, 다중화 버스(120) 상에서의 미결된 트랜잭션의 수를 쫓도록 유지한다. 내부 스눕 카운트는신규 트랜잭션이 요구 단계(74)에 진입하면 하나씩 증가되고, 미결 트랜잭션이 스눕 단계(78)을 완료하거나, 또는 에러 단계(76)에서 멈춰지면 하나씩 감소된다. 일실시예에서, 내부 스눕 카운트는 또한, 리셋 또는 버스 초기화 동안에, 0으로 초기화되고, 0부터 7까지의 값이 될 수 있다.
임계값 레지스터(156)는, 어드레스와 데이터 버스 액세서 요구 간의 중재를 위해 중재 로직(150)에 의해 요구 카운트 및 스눕 카운트 레지스터(158, 160)에 저장된 내부 요구 카운트와 스눕 카운트 값을 비교한 하나 이상의 임계값을 저장한다. 본 발명의 일실시예에서, 중재 로직(150)은 내부 카운트 값(즉, 다중화 버스 상의 미결된 데이터 트랜잭션의 수)과 임계값 레지스터(156) 안에 유지된 데이터 임계수치를 비교할 수 있다. 만일, 다중화 버스 상의 미결 데이터 트랜잭션의 수가 데이터 임계수치를 초과하면, 데이터 버스 액세스 요구는 중재 이벤트에서 우세한 요구로 지명된다. 본 발명의 다른 실시예에서, 중재 로직(150)은 스눕 카운트 레지스터(160) 안에 저장된 내부 스눕 카운트(즉, 다중화 버스(120) 상의 미결된 스눕 트랜잭션의 수)와 임계값 레지스터(156) 안에 저장된 스눕 임계수치를 비교할 수 있다. 만일, 미결된 스눕 트랜잭션의 수가 스눕 임계수치를 초과하면, 데이터 버스 액세스 요구는 다시 중재 이벤트에서 우세한 요구로 지명된다. 내부 요구 카운트 및 내부 스눕 카운트의 다양한 변경 및 조합을 이용한 다른 중재 방식이, 어드레스와 데이터 버스 액세스 요구 간의 경합을 중재하는데 사용될 수 있다.
레지스터들(156, 158, 160)이 중재 로직(150)에서 분리되어 존재하도록 도시되어 있지만, 이들의 일부 또는 모든 레지스터가 중재 로직(150) 안에 포함될 수도 있다.
임계값 레지스터(156)는 또한, 그 안에 저장된 임계값(예로, 데이터 임계수치 또는 스눕 임계수치)이 동적으로 프로그램가능 하도록 프로그램될 수 있다. 예를 들면, 임계값 레지스터(156) 안에 저장된 임계값은, 그 안에 외부 버스 로직(60)이 사용되는 컴퓨터 시스템의 애플리케이션 프로그램 또는 운영 체제에 의해 설정될 수 있다. 예를 들어, 어떤 애플리케이션 프로그램이 데이터 버스 액세스 요구에 우선 순위를 주기를 원할 수 있는데, 이 경우, 애플리케이션 프로그램은 임계값 레지스터(156)에 액세스하여, 거기에 낮은 데이터 임계수치를 저장할 수 있다. 또한, 레지스터(156) 안에 저장된 임계수치는 애플리케이션 프로그램의 실행 중에 동적으로 변경 또는 프로그램이 가능하게 된다. 예를 들면, 애플리케이션 프로그램은 실행 중에 애플리케이션 프로그램에 의해 감시된 다양한 다른 파라미터에 기반하여 레지스터(156) 안에 저장된 하나 이상의 임계값을 변경할 수 있다.
대안적 실시예에서, 중재 로직(150)은 "정적(static)" 중재 방식을 채택할 수 있으며, 여기서, 보류 중인 액세스 요구 또는 하나의 요구 타입(즉, 보류 데이터 또는 어드레스 요구)은 항상 다른 요구 타입 이상의 성능으로 액세스가 허가된다. 이 경우, 요구 카운트 및 스눕 카운트값은 무시되고, 중재 과정에서 어떤 부분도 실행되지 않는다.
본 발명의 다른 실시예에서, 외부 버스 로직(60)은, 선택 로직(148)을 선택적으로 디스에이블을 하도록 함으로써, 레거시 버스(예를 들면, Pentium Pro" 버스와 같은)와 완전한 호환을 도모하는데, 여기서, 버스(120)에 대한 액세스는MUX(140a, 140b)를 통해서가 아니라 Pentium Pro" 안에 채택된 인터페이스를 통해 제공된다.
도7은 본 발명의 실시에에 따른, 멀티프로세서(MP)에서, 도5에 도시된 다중화 버스(120) 및 외부 버스 로직(60) 내의 신호의 천이를 도시한 타이밍도이다. 상세히 말하면, 도7은 외부 버스 클럭 신호(92), 지시(ADIR#) 신호(146), 어드레스 스트로브(ADS#) 신호(94), 다중화 버스 신호(170) 및 내부 요구 및 스눕 카운트 신호(172)를 도시하고 있다.
174에 나타난 바와 같이, 도3에 도시된 ADS# 신호(94)의 표명은, 176에 나타난 바와 같이, 외부 버스 로직(60)이 다중화 버스(120) 상에서 두 "셋트"의 요구 신호(즉, REQAB1)를 동시에 발생시킬 수 있는 것에 응답하여, 트랜잭션의 요구 단계(74)의 시작을 정의한다. 다중화 버스(120)의 전 128-비트 대역폭이 요구 단계(74) 동안에 요구 신호에 대해 이용가능함에 따라, 외부 버스 로직(60)이 동시에 두 "셋트"의 요구 신호를 발생할 수 있는 능력이 가능해 진다. 요구 단계(74) 동안에는 ADIR# 신호(146)가 표명되지 않는 것이 또한 주목된다. 도6을 다시 참조하면, 요구 출력(142a)이 다중화 버스(120) 상에 전파되도록 MUX(140a)에 의해 선택되는 것을 알 수 있다. 클럭 사이클(T4)의 시작점에서, 선택 로직(148)은, 178로 표시된 것과 같은 ADIR# 신호(146)를 표명하고, 이 신호의 표명은 데이터 전송 단계(82)의 개시를 나타낸다. ADS# 신호(94)는 이 시점에서 표명해제된다. 도6을 다시 참조하면, ADIR# 신호(146)의 표명은 MUX(140)가 다중화 버스(120)의 전파를 위한 데이터 입력(144)을 선택하도록 한다.
176에 나타난 바와 같이, 두 "셋트"의 요구 신호(즉, REQAB1)가 다중화 버스(120) 상에서 발생된 후, 180에 도시된 바와 같이, 1/2 클럭 동안에, 데이터 응답(176에 나타난 요구에 반드시 응답할 필요는 없는)이 제1 128-비트 청크 형태로 다중화 버스(120) 상에 배치될 수 있다. 182에서, 제2 128-비트 청크가 다중화 버스(120) 상에 유사하게 송신된다. 180 및 182에 나타난 데이터 응답은 다중화 버스(120)에 연결된 제1 장치에 의해 발생된 이전의 트랜잭션에 응답하여 발생될 수 있다. 184 및 186에서, 예를 들어, 다중화 버스에 연결된 프로세서와 같은 제2 장치에 의해 발생된 이전의 트랜잭션에 응답하여, 128-비트 청크 형태인 2개의 다른 데이터 응답이 다중화 버스(120) 상에 전파된다. 유사한 방식으로, 176에 나타난 요구에 대한 데이터 응답을 포함한, 2개의 128-비트 청크(미도시)가 얼마 후에 다중화 버스(120)에 전파될 수도 있다. 180-186에 나타난 데이터 응답은, 요구(176)와 유사하게, 다중화 버스(120)에 연결된 하나 또는 2개의 구별된 장치에 의해 다중화 버스(120) 상에 배치된 보다 이른 요구(미도시)에 응답한다.
176에서, 요구의 발생에 따르는 "RCNT" 내부 요구 카운트 값이 "2"인 것으로 도시되었는데, 이것은 2개의 트랜잭션이 다중화 버스(120) 상에 동시에 미결 중임을 나타낸다.
다중화 버스(120)의 전 128-비트 대역폭이 요구 단계(74) 및 데이터 전송 단계(82) 동안에 모두 이용가능함에 따라, Pentium Pro 마이크로프로세서에 의해 채택된 외부 버스 프로토콜에서의 2 클럭 주기와는 대조적으로, 본 발명은 요구 단계(74)이 단일 클럭 주기로 짧아지도록 한다. 데이터 전송 단계(82)은, PentiumPro" 외부 버스 프로토콜에서의 4 연속 클럭 주기와는 대조적으로, 2 연속 클럭 주기로 짧아진다. 단일 버스 상에서의 요구 및 데이터 단계의 시간 다중화는 Pentium Pro" 마이크로프로세서에 채택된 외부 버스의 병렬 계산(parallelism)(및 파이프 깊이(depth))을 줄이는 동시에, 본 발명은, 특히 최고 속도 트랜잭션이 지배하는 아키텍처에서, 증가된 버스 처리율을 초래한다.
다중화 버스(120)는, 라인[A3..A36]을 다중화 버스의 라인[AD0..AD31]에 할당함으로써, Pentium Pro 프로세서의 외부 버스 프로토콜과 호환될 수 있다. 또한, 요구 라인[REQ0..4]은 라인[AD32..AD36]에 할당될 수 있고, 데이터 라인[D0..D64]은 라인[AD64..AD127]에 할당될 수 있다. MUX(140)는 이러한 순서로 단지 요구 출력(142a)으로부터 입력을 수신하고, 데이터 출력(144a)은 디스에이블된다. 또한, ADIR# 신호(146)가 디스에이블되고, 어드레스는 32-비트 더블 워드로 발생된다. 따라서, 종래의 Pentium Pro" 버스 트랜잭션은 다중화 버스(120)를 통해 발생될 수 있다. 다중화 버스(120)의 구성을 고려한 칩셋 및 주변의 통지가 발생되어야 함에 따라, 이러한 호환성은 또한 파워-온/리셋 시에 구성되어야 한다.
도8은 본 발명의 실시예에 따른, 컴퓨터 시스템 내의 다중화 어드레스 및 데이터 버스(120)를 운영하는 절차(179)를 도시한 순서도이다. 이 절차(179)는 181에서 시작되어, 다중화 버스 액세스 요구(즉, 어드레스 또는 데이터 버스 액세스 요구)가 수신되는 단계(183)로 진행된다. 본 발명의 일실시예에서, 선택 로직(148)에 의해 BREQ# 신호(152) 및 EARLY_DRDY 신호(154)의 표명을 검출함으로써, 버스 액세스 요구의 수신이 확인된다. 판단 블록(185)에서, 단계(183)에서 수신된 버스 액세스 요구와, 반대 타입의 보류 또는 동시에 수신된 다른 버스 액세스 사이에 경합이 존재하는지에 대한 판정이 이루어진다. 일실시예에서, 선택 로직(148)은 어드레스와 데이터 버스 액세스 요구 사이에 경합이 존재하는지를 판단할 수 있다. 만일, 존재하지 않는다면, 절차(179)는 단계(183)에서 수신된 버스 액세스 요구에 대해 다중화 버스(120)에 대한 액세스가 허가되는 단계(187)로 진행된다. 상세히 말하면, 선택 로직(148)은 ADIR# 신호(146)를 표명 또는 표명해제함으로써, 요구 출력(142a) 또는 데이터 출력(144a) 중의 어느 하나에 대해 다중화 버스(120)에 대한 액세스를 허가할 수 있다.
한편, 판단 블록(185)에서, 보류 어드레스와 데이터 버스 액세스 요구 사이에 경합이 존재한다고 판단되면, 절차(179)는 단계(190)로 진행되는데, 여기서, 중재 방식이 경합된 버스 액세스 요구 사이를 중재하도록 구현된다. 상세히 말하면, 중재 로직(150)은 경합한 어드레스와 데이터 버스 액세스 요구등 중에 어느 것에 우선 순위가 허가되어야 하는지를 판단하는 다수의 방식 중의 하나에 따라 중재된다. 단계(192)에서, 다중화 버스(120)에 대한 액세스가 우세한 버스 액세스 요구에 허가된다. 상세히 말하면, 선택 로직(148)은 중재 방식의 결과에 따라 ADIR# 신호(146)를 표명 또는 표명해제할 수 있다. 절차(179)는 능동 데이터 또는 어드레스 전송 동안에는 구현되지 않고, ADIR# 신호는 데이터 또는 어드레스 트랜잭션 동안에는 표명 또는 표명해제되지 않는다. 절차(179)는 다음의 클럭 사이클 동안의 버스(120)의 소유자를 판단하는 동안에 단지 1 클럭 사이클인 "요구" 액티비티(예로, 요구 단계(74))가 수행된다.
도9a 내지 도9c는 도8에 도시된 절차(179) 안에 단계(190)에서 채택될 수 있는 3가지 예시적 적응형 중재 방식을 도시한 순서도이다. 물론, 정적인 중재가 또한 채택될 수 있다. 도9a를 먼저 참조하면, 중재 방식(190)은 단계(200)에서 시작되고, 외부 다중화 버스(120) 상에 미결된 데이터 트랜잭션의 수를 결정하는 단계(202)로 진행된다. 일실시예에서, 중재 로직(150)은, 미결된 데이터 트랜잭션의 수를 판단하기 위해, 요구 카운트 레지스터(158) 안에 저장된 내부 요구 카운트를 판독한다.
단계(204)에서, 데이터 임계수치가 결정된다. 일시시예에서, 중재 로직(150)은 임계값 레지스터(156) 안에 저장된 데이터 임계수치를 판독할 수 있다. 전술한 바와 같이, 이 데이터 임계수치는, 예를 들어 컴퓨터 시스템에서 실행되는 애플리케이션 프로그램 및 운영 체제에 의해 동적으로 변경될 수 있다.
판단 블록(206)에서는, 중재 로직(150)에 의해 미결된 데이터 트랜잭션이 데이터 임계수치를 초과하는지에 대한 판정이 이루어진다. 만일, 초과한다면, 이것은 데이터 트랜잭션의 백업이 발생되었음을 나타내고, 이 백업을 클리어하기 위해 데이터 트랜잭션에 우선 순위가 주어져야 한다. 따라서, 이 경우, 중재 방식(190)은, 경합하는 데이터 버스 액세스 요구가 우세한 버스 액세스 요구로 지명되는 단계(208)로 진행된다. 그리고 나서, 이 절차는 단계(210)에서 종료된다.
한편, 판단 블록(206)에서 미결된 데이터 트랜잭션의 수(예로, RCNT)가 데이터 임계수치를 초과하지 않는 것으로 판단된 경우, 중재 방식(190)은 단계(212)로 진행되는데, 여기서, 경합한 어드레스 버스 액세스 요구가 우세한 요구로 지명된다. 그리고 나서, 이 중재 방식(190)은 단계(212)에서 단계(210)로 진행된다.
도9b는 도9a에 도시된 방식에 실질적으로 대응하는 대안적인 중재 방식(190)을 도시하고 있는데, 여기서는 경합하는 한 쌍의 어드레스와 데이터 버스 액세스 요구 중에 어느 것이 우세한 요구로 지명될지를 결정하기 위해, 미결된 스눕 트랜잭션의 수를 판단하여, 스눕 임계수치를 비교하는 것이 다르다.
도9c는 도9a 및 도9b에 도시된 중재 방식의 조합을 필수적으로 포함하는 중재 방식(190)의 다른 실시예를 도시하고 있다. 단계9240)에서, 이 중재 방식(190)은 단계(242)로 진행되는데, 여기서, 다중화 버스 상의 미결된 데이터 및 스눕 트랜잭션의 수 모두에 대한 판단이 이루어진다. 그 후, 단계(244)에서, 데이터 및 스눕 임계수치가 모두 판정된다. 판단 블록9246)에서, 먼저 미결 데이터 트랜잭션이 데이터 임계수치를 초과하는지에 대한 판단이 이루어진다. 만일 그렇다면, 이 절차는 단계(248)로 진행되어, 경합한 데이터 버스 액세스 요구가 우세한 요구로 지명된다.
한편, 판단 블록(246)에서, 미결된 데이터 트랜잭션의 수가 데이터 임계수치를 초과하지 않는 것으로 판단된 경우, 중재 방식(190)은 판단 블록(252)로 진행되어, 미결 스눕 트랜잭션의 수가 스눕 트랜잭션 임계수치를 초과하는지에 대한 판단이 이루어진다. 만일 그렇다면, 중재 방식(190)은 다시 단계(248)로 진행되어, 경합한 데이터 버스 액세스 요구가 우세한 요구로 지명된다. 한편, 미결 스눕 트랜잭션의 수가 스눕 임계수치를 초과하지 않는 경우에는, 중재 방식(190)은 판단 블록(252)에서 단계(254)로 진행되어, 여기서, 경합한 어드레스 버스 액세스 요구가 우세한 요구로 지명된다. 그리고 나서, 중재 방식(190)은 단계(250)에서 종료된다.
도9c에 도시된 중재 방식은, 관련된 애플리케이션에 대한 외부 다중화 버스(120) 출력을 최적화하기 위해, 예를 들어, 애플리케이션 프로그램에 의해 중재 방식의 보다 높은 정도의 튜닝(tuning) 및 개별화(customization)를 가능하게 한다. 중재 방식(190)의 "튜닝"은 관련된 애플리케이션 프로그램에 대해 최적화되는 데이터 및/또는 스눕 임계수치를 설정함으로써 수행된다.
본 발명은 다른 중재 방식으로 확장되는데, 여기서는 중재 방식의 디폴트 결과에 따라, 데이터 또는 어드레스 요구 중 어느 하나가 우세한 요구로 인식된다. 이러한 방식에서는, 다른 팩터(예로, 미결 버스 트랜잭션의 수)는 고려되지 않는다.
중재 로직(150)은 또한 전술된 하나 이상의 중재 방식을 구현할 수 있으며, 구현될 수 있는 많은 중재 방식 사이에서 선택하도록 프로그램될 수 있다. 중재 로직(150)에 의해 채택된 중재 방식의 선택은 컴퓨터 시스템 내에 존재하는 애플리케이션 프로그램 또는 운영 체제에 의해 수행될 수 있다.
본 발명이 외부 버스에 대해 구현되는 것으로 기술되었지만, 본 발명은 또한 프로세서와 캐시 간의 백-사이드(back-side) 버스에도 적용될 수 있다.
이에 따라, 컴퓨터 시스템 내의 다중화 어드레스 및 데이터 버스를 동작시키기 위한 장치 및 방법이 기재되었다. 본 발명이 특정한 예시적 실시예를 참조하여 기재되었지만, 본 발명의 보다 넓은 사상 및 범위로부터 벗어나지 않는 한, 다양한수정 및 변경이 이들 실시예에 대해 수행될 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미라기 보다는 예시적인 의미로 여겨져야 할 것이다.

Claims (36)

  1. 컴퓨터 시스템 내의 다중화 어드레스 및 데이터 버스를 운영하는 방법에 있어서,
    소정의 기준에 따라, 상기 다중화 어드레스 및 데이터 버스에 액세스 하기 위해 경합하는 어드레스 요구와 데이터 요구 사이를 중재하는 단계; 및
    상기 중재의 결과에 따라 상기 어드레스 또는 데이터 요구에 대해 상기 다중화 어드레스 및 데이터 버스를 허가하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 중재 단계는
    상기 다중화 어드레스 및 데이터 버스 상의 미결된(outstanding) 데이터 트랜잭션의 수가 소정의 임계값을 초과하는지를 판단하는 단계
    를 포함하는 방법.
  3. 제1항에 있어서,
    상기 중재 단계는
    상기 다중화 어드레스 및 데이터 버스 상의 미결된 스눕(snoop) 트랜잭션의 수가 소정의 임계값을 초과하는지를 판단하는 단계
    를 포함하는 방법.
  4. 제1항에 있어서,
    상기 중재 단계는
    다른 팩터를 고려하지 않고, 상기 데이터 요구를 상기 중재 단계에서 우세한 요구로 인식하는 단계
    를 포함하는 방법.
  5. 제1항에 있어서,
    상기 중재 단계는
    다른 팩터를 고려하지 않고, 상기 어드레스 요구를 상기 중재 단계에서 우세한 요구로 인식하는 단계
    를 포함하는 방법.
  6. 제1항에 있어서,
    상기 소정의 기준을 수정하는 단계
    를 포함하는 방법.
  7. 제6항에 있어서,
    상기 소정의 기준은
    상기 컴퓨터 시스템 내에서 동작하는 운영 체제에 의해 수정되는
    방법.
  8. 제6항에 있어서,
    상기 소정의 기준은
    상기 컴퓨터 시스템 내에서 실행되는 애플리케이션 프로그램에 의해 수정되는
    방법.
  9. 제6항에 있어서,
    상기 중재 단계 동안에, 상기 다중화 어드레스 및 데이터 버스 상의 미결된 트랜잭션의 수와 비교가 이루어지는 임계수치를 수정하는 단계
    를 포함하는 방법.
  10. 컴퓨터 시스템 내의 다중화 어드레스 및 데이터 버스에 연결되는 버스 인터페이스에 있어서,
    소정의 기준에 따라, 상기 다중화 어드레스 및 데이터 버스에 액세스 하기 위해 경합하는 어드레스 요구와 데이터 요구 사이를 중재하는 중재 로직; 및
    상기 중재의 결과에 따라, 상기 어드레스 또는 데이터 요구에 대해 상기 다중화 어드레스 및 데이터 버스를 허가하는 선택 로직
    을 포함하는 버스 인터페이스.
  11. 제10항에 있어서,
    상기 중재 로직은
    다수의 중재 방식 중의 어느 하나에 따라, 상기 어드레스 요구와 데이터 요구 사이를 중재하도록 구성될 수 있는
    버스 인터페이스.
  12. 제11항에 있어서,
    상기 중재 로직은
    상기 컴퓨터 시스템의 운영 체제 및/또는 애플리케이션 프로그램에 의해 구성될 수 있는
    버스 인터페이스.
  13. 제10항에 있어서,
    상기 중재 로직은
    상기 다중화 어드레스 및 데이터 버스 상의 미결된 데이터 트랜잭션의 수 및 데이터 임계수치를 결정하고, 상기 다중화 어드레스 및 데이터 버스 상의 상기 미결된 데이터 트랜잭션의 수가 상기 데이터 임계수치를 초과하는지를 판단하는
    버스 인터페이스.
  14. 제10항에 있어서,
    상기 중재 로직은
    상기 다중화 어드레스 및 데이터 버스 상의 미결된 스눕 트랜잭션의 수 및 스눕 임계수치를 결정하고, 상기 다중화 어드레스 및 데이터 버스 상의 상기 미결된 스눕 트랜잭션의 수가 상기 스눕 임계수치를 초과하는지를 판단하는
    버스 인터페이스.
  15. 제10항에 있어서,
    상기 중재 로직은
    다른 팩터를 고려하지 않고, 상기 데이터 요구를 상기 중재 단계에서 우세한 요구로 인식하는
    버스 인터페이스.
  16. 제10항에 있어서,
    상기 중재 로직은
    다른 팩터를 고려하지 않고, 상기 어드레스 요구를 상기 중재 단계에서 우세한 요구로 인식하는
    버스 인터페이스.
  17. 제10항에 있어서,
    상기 어드레스 요구와 상기 데이터 요구 사이를 중재하는 상기 중재 로직에 의해 액세스될 수 있는 임계수치를 저장하는 레지스터
    를 포함하되,
    상기 임계수치는 동적으로 변경될 수 있는
    버스 인터페이스.
  18. 컴퓨터 시스템 내의 다중화 어드레스 및 데이터 버스에 연결되는 버스 에이전트에 있어서,
    소정의 기준에 따라, 상기 다중화 어드레스 및 데이터 버스에 액세스 하기 위해 경합하는 어드레스 요구와 데이터 요구 사이를 중재하는 중재 로직; 및
    상기 중재의 결과에 따라, 상기 어드레스 또는 데이터 요구에 대해 상기 다중화 어드레스 및 데이터 버스를 허가하는 선택 로직
    을 포함하는 버스 에이전트.
  19. 제18항에 있어서,
    상기 중재 로직은
    상기 다중화 어드레스 및 데이터 버스 상의 미결된 데이터 트랜잭션의 수가 소정의 데이터 임계수치를 초과하는지를 판단하는
    버스 에이전트.
  20. 제18항에 있어서,
    상기 중재 로직은
    상기 다중화 어드레스 및 데이터 버스 상의 미결된 스눕 트랜잭션의 수가 소정의 스눕 임계수치를 초과하는지를 판단하는
    버스 에이전트.
  21. 제18항에 있어서,
    상기 어드레스 요구와 상기 데이터 요구 사이를 중재하는 상기 중재 로직에 의해 액세스될 수 있는 임계수치를 저장하는 제1 레지스터
    를 포함하되,
    상기 임계수치는 동적으로 변경될 수 있는
    버스 에이전트.
  22. 제18항에 있어서,
    상기 다중화 어드레스 및 데이터 버스 상의 미결된 트랜잭션의 카운트를 저장하는 제2 레지스터
    를 포함하는 버스 에이전트.
  23. 제22항에 있어서,
    상기 제2 레지스터는
    상기 다중화 어드레스 및 데이터 버스 상의 미결된 데이터 트랜잭션의 카운트를 저장하는
    버스 에이전트.
  24. 제22항에 있어서,
    상기 제2 레지스터는
    상기 다중화 어드레스 및 데이터 버스 상의 미결된 스눕 트랜잭션의 카운트를 저장하는
    버스 에이전트.
  25. 제18항에 있어서,
    프로세서를 포함하는
    버스 에이전트.
  26. 제18항에 있어서,
    버스 브릿지를 포함하는
    버스 에이전트.
  27. 컴퓨터 시스템 내의 다중화 어드레스 및 데이터 버스에 연결되는 버스 인터페이스에 있어서,
    소정의 기준에 따라, 상기 다중화 어드레스 및 데이터 버스에 액세스 하기 위해 경합하는 제1 타입의 요구와 제2 타입의 요구 사이를 중재하기 위한 중재 수단; 및
    상기 중재의 결과에 따라, 상기 제1 타입 또는 제2 타입의 요구에 대해 상기 다중화 어드레스 및 데이터 버스를 허가하는 선택 로직
    을 포함하는 버스 인터페이스.
  28. 컴퓨터 시스템에 있어서,
    버스;
    상기 버스에 연결된 버스 에이전트
    를 포함하되,
    상기 버스 에이전트는,
    소정의 기준에 따라, 상기 버스에 액세스 하기 위해 경합하는 제1 요구와 제2 요구 사이를 중재하기 위한 중재 수단; 및
    상기 중재의 결과에 따라, 상기 제1 요구 또는 제2 요구에 대해 상기 버스를 허가하는 선택 로직
    을 포함하되,
    상기 제1 및 제2 요구는 상기 버스 에이전트로부터 발생하고, 서로 상이한 요구 타입인
    컴퓨터 시스템.
  29. 제28항에 있어서,
    상기 중재 로직은
    상기 버스 상의 미결된 트랜잭션의 수가 소정의 임계수치를 초과하는지를 판단하는
    컴퓨터 시스템.
  30. 제29항에 있어서,
    상기 중재 로직은
    상기 버스 상의 제1 타입의 미결된 트랜잭션의 수가 소정의 제1 임계수치를 초과하는지를 판단하는
    컴퓨터 시스템.
  31. 제30항에 있어서,
    상기 중재 로직은
    상기 버스 상의 제2 타입의 미결된 트랜잭션의 수가 소정의 제2 임계수치를 초과하는지를 판단하는
    컴퓨터 시스템.
  32. 제18항에 있어서,
    상기 버스 에이전트는
    상기 어드레스 요구와 상기 데이터 요구 사이를 중재하는 상기 중재 로직에 의해 액세스될 수 있는 임계수치를 저장하는 레지스터
    를 포함하되,
    상기 임계수치는 상기 컴퓨터 시스템 내에 존재하는 애플리케이션 프로그램 또는 운영 체제에 의해 동적으로 변경될 수 있는
    컴퓨터 시스템.
  33. 제28항에 있어서,
    상기 버스 에이전트는 프로세서를 포함하는
    컴퓨터 시스템.
  34. 제28항에 있어서,
    상기 버스 에이전트는 버스 브릿지를 포함하는
    컴퓨터 시스템.
  35. 제28항에 있어서,
    상기 버스는 외부 버스를 포함하는
    컴퓨터 시스템.
  36. 제28항에 있어서,
    상기 버스는 프로세서와 캐시 자원을 연결하는 백사이드 버스(backside bus)를 포함하는
    컴퓨터 시스템.
KR10-2001-7002477A 1998-08-28 1999-08-18 컴퓨터 시스템 내의 적응형 다중화 어드레스 및 데이터버스를 운영하기 위한 방법 및 장치 KR100393168B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/141,970 US6209053B1 (en) 1998-08-28 1998-08-28 Method and apparatus for operating an adaptive multiplexed address and data bus within a computer system
US09/141,970 1998-08-28

Publications (2)

Publication Number Publication Date
KR20010073009A KR20010073009A (ko) 2001-07-31
KR100393168B1 true KR100393168B1 (ko) 2003-07-31

Family

ID=22498027

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-7002477A KR100393168B1 (ko) 1998-08-28 1999-08-18 컴퓨터 시스템 내의 적응형 다중화 어드레스 및 데이터버스를 운영하기 위한 방법 및 장치

Country Status (9)

Country Link
US (1) US6209053B1 (ko)
KR (1) KR100393168B1 (ko)
CN (1) CN1265301C (ko)
AU (1) AU5680799A (ko)
DE (1) DE19983506B3 (ko)
GB (1) GB2357870B (ko)
HK (1) HK1035046A1 (ko)
TW (1) TW455768B (ko)
WO (1) WO2000013092A2 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197589B1 (en) * 1999-05-21 2007-03-27 Silicon Graphics, Inc. System and method for providing access to a bus
CN1129071C (zh) * 1999-10-27 2003-11-26 盖内蒂克瓦尔有限公司 元件之间的通道传输结构及其传输方法
US7187741B2 (en) * 2001-10-31 2007-03-06 Nxp B.V. Clock domain crossing FIFO
US7062582B1 (en) 2003-03-14 2006-06-13 Marvell International Ltd. Method and apparatus for bus arbitration dynamic priority based on waiting period
WO2006027791A1 (en) * 2004-09-08 2006-03-16 Centre For Development Of Telematics A novel architecture for a message bus
US7350051B2 (en) * 2005-02-09 2008-03-25 International Business Machines Corporation Method to optimize effective page number to real page number translation path from page table entries match resumption of execution stream
US7802061B2 (en) * 2006-12-21 2010-09-21 Intel Corporation Command-based control of NAND flash memory
US7814253B2 (en) * 2007-04-16 2010-10-12 Nvidia Corporation Resource arbiter
US7673087B1 (en) * 2008-03-27 2010-03-02 Xilinx, Inc. Arbitration for an embedded processor block core in an integrated circuit
TWI397808B (zh) * 2009-07-16 2013-06-01 Via Tech Inc 多處理器系統及其動態省電方法
US8667197B2 (en) * 2010-09-08 2014-03-04 Intel Corporation Providing a fine-grained arbitration system
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US20140164659A1 (en) * 2012-12-06 2014-06-12 Wasim Quddus Regulating access to slave devices
US9703711B2 (en) * 2015-08-19 2017-07-11 International Business Machines Corporation Managing cache coherence for memory caches
US10237198B2 (en) 2016-12-06 2019-03-19 Hewlett Packard Enterprise Development Lp Shared-credit arbitration circuit
US10944694B2 (en) * 2016-12-06 2021-03-09 Hewlett Packard Enterprise Development Lp Predictive arbitration circuit
US10721185B2 (en) 2016-12-06 2020-07-21 Hewlett Packard Enterprise Development Lp Age-based arbitration circuit
US10452573B2 (en) 2016-12-06 2019-10-22 Hewlett Packard Enterprise Development Lp Scripted arbitration circuit
US10693811B2 (en) 2018-09-28 2020-06-23 Hewlett Packard Enterprise Development Lp Age class based arbitration
US11176038B2 (en) 2019-09-30 2021-11-16 International Business Machines Corporation Cache-inhibited write operations
CN112527205A (zh) * 2020-12-16 2021-03-19 江苏国科微电子有限公司 一种数据安全防护方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5608892A (en) * 1995-06-09 1997-03-04 Alantec Corporation Active cache for a microprocessor
WO1997034237A2 (en) * 1996-03-15 1997-09-18 Sun Microsystems, Inc. Split transaction snooping bus and method of arbitration

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4449207A (en) 1982-04-29 1984-05-15 Intel Corporation Byte-wide dynamic RAM with multiplexed internal buses
US4766536A (en) * 1984-04-19 1988-08-23 Rational Computer bus apparatus with distributed arbitration
US5404482A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5347648A (en) * 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
US5278984A (en) * 1990-12-19 1994-01-11 Bull Hn Information Systems Inc. Method for managing requests by specifying time intervals for transmitting a minimum number of messages for specific destinations and priority levels
US5369651A (en) 1992-06-30 1994-11-29 Intel Corporation Multiplexed byte enable bus for partial word writes to ECC protected memory
US5568620A (en) 1993-06-30 1996-10-22 Intel Corporation Method and apparatus for performing bus transactions in a computer system
US5522054A (en) * 1993-09-13 1996-05-28 Compaq Computer Corporation Dynamic control of outstanding hard disk read requests for sequential and random operations
US5455915A (en) 1993-12-16 1995-10-03 Intel Corporation Computer system with bridge circuitry having input/output multiplexers and third direct unidirectional path for data transfer between buses operating at different rates
US5627991A (en) 1993-12-28 1997-05-06 Intel Corporation Cache memory having a multiplexor assembly for ordering output on a data chunk basis
US5535345A (en) 1994-05-12 1996-07-09 Intel Corporation Method and apparatus for sequencing misaligned external bus transactions in which the order of completion of corresponding split transaction requests is guaranteed
US5606672A (en) 1995-01-27 1997-02-25 Intel Corporation Method and apparatus for multiplexing signals from a bus bridge to an ISA bus interface and an ATA bus interface
US5717876A (en) * 1996-02-26 1998-02-10 International Business Machines Corporation Method for avoiding livelock on bus bridge receiving multiple requests
US5978874A (en) * 1996-07-01 1999-11-02 Sun Microsystems, Inc. Implementing snooping on a split-transaction computer system bus
US5829033A (en) * 1996-07-01 1998-10-27 Sun Microsystems, Inc. Optimizing responses in a coherent distributed electronic system including a computer system
US5954809A (en) * 1996-07-19 1999-09-21 Compaq Computer Corporation Circuit for handling distributed arbitration in a computer system having multiple arbiters
US5936960A (en) * 1997-03-07 1999-08-10 Advanced Micro Devices, Inc. Apparatus for and method of communicating among devices interconnected on a bus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5608892A (en) * 1995-06-09 1997-03-04 Alantec Corporation Active cache for a microprocessor
WO1997034237A2 (en) * 1996-03-15 1997-09-18 Sun Microsystems, Inc. Split transaction snooping bus and method of arbitration

Also Published As

Publication number Publication date
WO2000013092A2 (en) 2000-03-09
AU5680799A (en) 2000-03-21
WO2000013092A3 (en) 2000-11-16
GB2357870B (en) 2003-04-09
CN1265301C (zh) 2006-07-19
DE19983506T1 (de) 2001-07-12
KR20010073009A (ko) 2001-07-31
GB2357870A (en) 2001-07-04
HK1035046A1 (en) 2001-11-09
DE19983506B3 (de) 2013-08-22
CN1342287A (zh) 2002-03-27
TW455768B (en) 2001-09-21
GB0104703D0 (en) 2001-04-11
US6209053B1 (en) 2001-03-27

Similar Documents

Publication Publication Date Title
KR100393168B1 (ko) 컴퓨터 시스템 내의 적응형 다중화 어드레스 및 데이터버스를 운영하기 위한 방법 및 장치
US6122690A (en) On-chip bus architecture that is both processor independent and scalable
US6581124B1 (en) High performance internal bus for promoting design reuse in north bridge chips
US5805842A (en) Apparatus, system and method for supporting DMA transfers on a multiplexed bus
CA2223930C (en) Burst-broadcasting on a peripheral component interconnect bus
US5933610A (en) Predictive arbitration system for PCI bus agents
US6405271B1 (en) Data flow control mechanism for a bus supporting two-and three-agent transactions
US6002882A (en) Bidirectional communication port for digital signal processor
US5954809A (en) Circuit for handling distributed arbitration in a computer system having multiple arbiters
US20010007999A1 (en) High-throughput interface between a system memory controller and a peripheral device
KR20010071327A (ko) 버스 브리지 및 유효 폭 설정 방법
US6598104B1 (en) Smart retry system that reduces wasted bus transactions associated with master retries
JP2003281082A (ja) 二バス間のトランザクションを制御する再試行方法
WO1995020192A1 (en) Bus deadlock avoidance during master split-transactions
EP1068573B1 (en) Method and apparatus for arbitrating access to multiple buses in a data processing system
US5857082A (en) Method and apparatus for quickly transferring data from a first bus to a second bus
KR100291409B1 (ko) 컴퓨터 시스템내의 동일 버스상에 두 개의 부 디코드 에이전트를 지원하는 방법 및 장치
EP1820109A2 (en) Time-based weighted round robin arbiter
US20020078282A1 (en) Target directed completion for bus transactions
US6973520B2 (en) System and method for providing improved bus utilization via target directed completion
US6693914B1 (en) Arbitration mechanism for packet transmission
US7543094B2 (en) Target readiness protocol for contiguous write
US5797018A (en) Apparatus and method of preventing a deadlock condition in a computer system
EP1195686B1 (en) Source triggered transaction blocking
EP1086430A1 (en) A method and system for optimized data transfers in a pci bus system

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

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140701

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee