KR970011888B1 - 컴퓨터 시스템용 정보 처리 시스템 및 컴퓨터 시스템내의 데이타 전송 관리 방법 - Google Patents

컴퓨터 시스템용 정보 처리 시스템 및 컴퓨터 시스템내의 데이타 전송 관리 방법 Download PDF

Info

Publication number
KR970011888B1
KR970011888B1 KR1019970011760A KR19970011760A KR970011888B1 KR 970011888 B1 KR970011888 B1 KR 970011888B1 KR 1019970011760 A KR1019970011760 A KR 1019970011760A KR 19970011760 A KR19970011760 A KR 19970011760A KR 970011888 B1 KR970011888 B1 KR 970011888B1
Authority
KR
South Korea
Prior art keywords
bus
data
pci
master
peripheral
Prior art date
Application number
KR1019970011760A
Other languages
English (en)
Inventor
나더 아미니
아슈 코리
그레고리 엔 산토스
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
윌리암 티 엘리스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/068,877 external-priority patent/US5522050A/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션, 윌리암 티 엘리스 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Application granted granted Critical
Publication of KR970011888B1 publication Critical patent/KR970011888B1/ko

Links

Images

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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Abstract

없음.

Description

컴퓨터 시스템용 정보 처리 시스템 및 컴퓨터 시스템내의 데이타 전송 관리 방법
본 발명은 전반적으로 다중 버스 컴퓨터 환경(a multiple bus computer environment)에서 복수의 버스를 상호접속하기 위한 브릿지(bridges)에 관한 것으로, 보다 상세히 설명하면, 상호접속된 버스의 상이한 데이타 관리 프로토콜(different data management protocols)의 동작을 동기시키므로써, 이들 버스간의 데이타 전송 효율을 최적화하기 위해 버퍼(a buffer)가 장착된 브릿지에 관한 것이다.
컴퓨터 시스템 또는 정보 처리 시스템은 통상 복수의 버스를 포함하며, 시스템내의 각 버스에는 이 버스를 통해 국부적으로 서로 통신하는 장치가 접속된다. 예를 들어, 통사의 컴퓨터 시스템은 중앙 처리 장치(CPU)가 접속되는 시스템 버스 또는 CPU 로컬 버스를 포함하며, 이를 통해 CPU는 이 시스템 버스에 접속된 다른 장치와 직접 통신한다. 이 시스템은 또한, 입/출력(I/O) 장치 및 그래픽 패키지와 같은 주변 장치를 컴퓨터 시스템에 접속하는 하나 이상의 주변장치 버스를 포함할 수 있다.
일반적으로, 시스템 버스 및 주변장치 버스는 서로 다른 장치들과 이들에 접속된 구성요소들간의 데이타 전송을 수행하기 위해 상이한 표준 프로토콜 또는 규칙 세트(a different set of standard protocols or rules)을 사용한다. 이들 프로토콜은 버스내에 구성되므로, 버스 "아키텍처"로서 언급된다. 따라서, 주변장치 버스를 접속된 주변장치와 시스템 버스에 접속된 CPU 또는 다른 시스템 구성요소간에 데이타가 전송되어야 할 때 통신상에 문제가 발생한다. 이와 같은 데이타 전송에는 상이한 버스 아키텍처가 관계되므로, 제1버스 아키텍처로부터 전송될 데이타는 수신측의 제2버스 아키텍처에 의해 사용가능 또는 인지가능한 형식이 아닐 수 있다.
따라서, 하나의 버스 아키텍처로부터 다른 아키텍처로 전송되는 데이타를 "번역(translate)"하기 위한 메카니즘(a mechanism)이 필요하다. 이러한 번역 메카니즘은 통상적으로 두 개의 상이한 버스가 접속되는 버스간 브릿지(a bus-to-bus-bridge)또는 버스간 인터페이스) 하드웨어내에 포함된다. 이와 같이 시스템 버스를 주변장치 버스에 접속하는 버스간 브릿지를 통한 호스트 브릿지(a host bridge)라고 부른다. 따라서, 시스템 버스와 주변장치 버스를 접속하는 호스트 브릿지는 두 버스간에 전달되는 정보를 번역하여 이들 두 버스간에 데이타가 인지가능하게 전송될 것을 보장하는 모든 로직 및 하드웨어를 포함한다.
상이한 버스상에서 장치들간의 범시스템적 통신을 허용하기 위해, 버스간 브릿지는 한 버스의 통신 프로토콜이 다른 버스의 통신 프로토콜과 정합하도록 설계되었다. 공지된 버스간 브릿지로서, 모두 1992년 1월 2일 출원되어 IBM사에 양도된 본 발명과 동시계류중인 특허 출원인, "이중 버스 아키텍처를 갖는 컴퓨터 시스템용 버스 제어 로직(BUS CONTROL LOGIC FOR COMPUTER SYSTEM HAVING DUAL BUS A RCHITECTURE)"이란 명칭의 미국 특허 출원 제07/815,922호, 1994년 5월 17일 특허된 "패리티 에러 검출 및 복구(PARITY ERROR DETECTION AND RECOVERY)"란 명칭의 미국 특허 제5,313,627호, "캐쉬 스누핑 및 데이타 무효화 기법(CACHE SNOOPING AND DATA INVALIDATION TECHNIQUE)"이란 명치의 미국 특허 출원 제07/816,204호, 1993년 10월 19일 특허된 "이중 버스 아키텍처를 갖는 컴퓨터 시스템용 버스 인터페이스 로직(BUS INTERFACE LOGIC FOR COMPUTER SYSTEM HAVING DUAL BUS ARCHITECTURE)"이란 명칭의 미국 특허 제5,255,374호, "버스 인터페이스 유닛용 양방향성 데이타 저장장치(BIDIRECTIONAL DATA STORAGE FACILITY FOR BUS INTERFACE UNUT)"란 명칭의 미국 특허 출원 제07/816,691호, "버스의 동작 속도를 제어하기 위한 버스 인터페이스(BUS INTERFACE FOR CONTROLLING SPEED OF BUS OPERATION)"란 명칭의 미국 특허 출원 제07/816,693호, 1993년 11월 23일 특허된 "이중 버스 아키텍처를 갖는 컴퓨터 시스템용 중재 제어 로직(ARBITRATION CONTROL LOGIC FOR COMPUTER SYSTEM HAVING DUAL BUS ARCHITECTURE)"이란 명칭의 미국 특허 제5,265,211호, 및 "버스간 인터페이스시에 어드레스 위치를 판단하기 위한 방법 및 장치(METHOD AND APPRATUS FOR DETERMINING ADDRESS LOCATION AT BUS TO BUS INTERFACE)"란 명칭의 미국 특허 출원 제07/816,698호가 있다. 이들 출원은 시스템내의 상이한 버스에 접속된 장치의 범시스템적 통신을 허용하는 메카니즘을 개시한다.
그러나, 이러한 브릿지는 시스템 버스(X86형 아키텍처 버스)의 불일치하는 프로토콜을 주변장치 구성요소 상호접속(Peripheral Component Interconnect; PCI)버스 아키텍처 또는 그와 유사한 아키텍처를 사용하는 주변장치 버스와 동기시키는데 있어서의 고유한 문제점을 해결하지 못한다. 이러한 불일치의 예로 순차 버스트 전송(a sequential burst transfer)이라고 부르는 특수한 데이타 전송을 수행하기 위해 PCI 버스와 시스템 버스에 의해 사용되는 상이한 방법을 들 수 있다.
순차 버스트 전송(이후 간단히 버스트 전송이라 함)은 어드레스 페이즈(address phase) 동안 하나의 어드레스가 제공된 후 몇 개의 데이타 페이즈가 뒤따르는 데이타 전송을 말한다. 제1데이타 페이즈동안 데이타는 어드레스 페이즈에서 제공된 어드레스로 또는 어드레스로부터 전송된다. 계속되는 복수의 데이타 페이즈를 동안 데이타 전송은 어드레스 페이즈에서 제공된 어드레스에 순차적으로 계속되는 제각각의 어드레스로 수행한다.
PCI 버스트 프로토콜은 임의 어드레스 경계에서 시작되는 무제한된 수의 데이타 스트링의 버스트 전송을 가능하게 한다(물론, PCI 중재 가이드 라인은 이 버스트 전송을 개시하는 장치가 버스 제어를 포기하도록 강요하지 않음을 가정한다). 대조적으로, 시스템 버스 버스트 프로토콜은 버스트 전송에 대해 시작 어드레스를 특정의 어드레스 경계로 제한하며, 단일의 버스트 전송시에 특정 수의 데이타 페이즈만을 허용한다. 따라서, 시스템 버스 아키텍처는 4개의 더블워드(four doblewords) 또는 16바이트 데이타의 버스트 전송만을 허용한다.
이후 개시되는 것을 포함하여 이와 같은 시스템 버스 아키텍처에 있어서의 제한으로 인해 시스템 버스와 PCI 버스를 접속하는 호스트 브릿지는 이들 두 상의 한 버스간에 데이타 전송을 번역해야 할 필요가 있다. 그러나, PCI 버스를 시스템 버스에 접속하는 호스트 브릿지는 이들 두 상이한 아키텍처간의 데이타를 번역하는 것은 물론, 이러한 번역을 가능한한 효율적으로 수행해야 한다.
따라서, 본 발명의 목적은 다중 버스 컴퓨터 시스템에서 CPU 시스템 버스와, PCI 버스 아키텍처 또는 이 PCI 버스 아키텍처와 유사한 특정의 프로토콜을 갖는 버스 아키텍처를 사용하는 버스를 상호접속함은 물론, 이들 상호접속된 버스간의 데이타 전송 효율을 최대화하는 브릿지를 제공하는 것이다.
도 1a 내지 1c는 정보 처리 시스템의 블럭도.
도 2는 기입 동작시 도 1a 내지 1c에 도시된 시스템의 주변장치 버스에 의해 운반되는 다양한 신호의 타이밍도.
도 3은 판독 동작시 도 2에 도시된 신호에 대응하는 타이밍도.
도 4는 도 1a 내지 1c에 도시된 시스템내 호스트 브릿지의 인터페이스 하드웨어의 블럭도.
도 5a 및 5b는 도 4에 도시된 인터페이스 하드웨어의 페이싱 로직의 로직도.
도 6은 도 5에 도시된 페이싱 로직의 FIFO 준비완료 로직 블럭의 로직도.
도 7은 도 4에 도시된 인터페이스 하드웨어의 판독 프리페치 로직의 로직도.
도 8은 도 4에 도시된 인터페이스 하드웨어의 버스트 로직의 로직도.
* 도면의 주요부분에 대한 부호의 설명
10 : 정보 처리 시스템12 : 캐쉬 및 메모리 복합체
100 : 범위 검출 하드웨어102 : PCI 마스터
본 발명에 따르면, 시스템 버스를, PCI 버스 아키텍처를 사용하는 주변장치 버스 또는 PCI 버스 아키텍처와 유사한 버스 아키텍처를 사용하는 주변장치 버스에 접속하는 호스트 브릿지내의 하드웨어 로직이 제공된다. 본 발명에 따른 하드웨어는 두 버스간의 데이타 전송이 이루어지는 속도를 최적화하면서 이들 두 버스의 상이한 아키텍처간의 데이타 전송을 번역한다.
도 1a 내지 1c와 참조하면, 다중 버스 정보 처리 시스템(10)이 도시되며, 시스템 버스(system bus, 이후 S-버스라 함)(16)를 통해 시스템 버스 장치(14)에 접속된 프로세서, 캐쉬 및 메모리 복합체(12)와, 주 PCI 버스(22)를 통해 이들 시스템 버스 장치중 하나인 주 PCI 호스트 브릿지(20)에 접속된 주 PCI 장치(18)를 포함한다. 이하에서는 프로세서, 캐쉬 및 메모리 복합체(12)와, S-버스 장치(14)와, 주 PCI 장치(18)와, 도 1a 내지 도 1c에 도시된 다른 구성요소들이 보다 상세히 설명된다.
프로세서, 캐쉬 및 메모리 복합체(12)는 CPU(24), 자기-진단 회로(self-test circuit)(26), 메모리 제어기(memory controller)(28), CPU 캐쉬(30) 및 기본 시스템 메모리(32)를 포함한다. 이 시스템(10)은 다른 형태의 CPU, 특히 x86-형 마이크로프로세서를 사용해 구현될 수도 있으나, 본 바람직한 실시예의 CPU(24)는 인텔사로부터 구입가능한 i486TM32-비트 마이크로프로세서이다(i486TM은 인텔사의 상표임). 자기 진단 회로(26)는 전원이 켜졌을 때 CPU(24)에 대해 조립 자기 진단(built-in-self-test; BIST) 기능(feature)을 제공한다. 자기 진단 회로는 또한 각각의 S-버스 장치(14)내에 제공될 수도 있는 자기-진단 기능을 제어한다.
CPU(24)는 CPU 로컬 버스(local bus)(34)에 의해 자기-진단 회로(26)와 메모리 제어기(28)에 접속된다. 메모리 제어기(28)는 기본 시스템 메모리 버스(36)에 의해 기본 시스템 메모리(32)에 접속된다. 메모리 제어기(28)는 기본 시스템 메모리 버스(36)를 통한 기본 시스템 메모리(32)로의 판독 및 기입 동작을 제어하며, 이러한 동작은 CPU 로컬 버스(34)를 통해 CPU(24)에 의해 개시되거나 S-버스(16)를 통해 S-버스 장치(14)에 의해 개시된다. 메모리 제어기는 이들 두 버스상의 동작을 관리할 수 있으므로 기본 시스템 메모리 버스(36)와 CPU 로컬 버스(34)를 통한 동작이 동시에 관리될 수 있다. CPU 로컬 버스(34), 기본 시스템 메모리 버스(36) 및 S-버스(16)는 32-비트 버스로서, 이들 각 버스는, 이러한 버스에 있어 전형적인 듯이, 데이타, 어드레스 및 제어 정보 경로(도 1a 내지 1c에서 "D", "A" 및 "C"로 표시됨)를 포함한다.
기본 시스템 메모리(32)는 범시스템적 저장 능력(system-wide storage capability)을 제공하며, 인터리브(interleave)형 혹은 비인터리브형 메모리 카드로 이루어질 수 있다. CPU 캐쉬(30)는 기본 시스템 메모리(32) 또는 시스템(10)내의 다른 곳에 위치한 확장 메모리(expansion memory)내의 정보를 단 기간 저장할 수 있다. 이러한 확장 메모리는, 예를 들면, 시스템내의 주변장치 형태로 접속된 I/O 장치(peripherally attached I/O devices)상에 위치될 수 있다. CPU 캐쉬(30)는 CPU(24)가 자주 액세스하는 기본 시스템 메모리(32)의 어드레스 위치(address locations)를 일시적으로 저장하기 위해 사용되는 랜덤 액세스 메모리(RAM)(도시되지 않음)를 구비한다. CPU(24)는 CPU 캐쉬(30)에 저장된 정보를 직접 액세스하는 반면에, 기본 시스템 메모리(32)에 저장된 정보의 액세스는 메모리 제어기(28)에 의해 처리되어야 한다.
기본 시스템 메모리(32)에 대한 모든 액세스는 기본 시스템 메모리 버스(36)를 통해 메모리 제어기(28)에 의해 제어된다. 메모리 제어기는 기본 시스템 메모리에 대한 시스템 메모리 사이클(system memory cycles)을 개시하며, 이 사이클 동안 CPU(24) 또는 S-버스 장치(14)중 어느 하나가 메모리 제어기(28)를 통해 기본 시스템 메모리를 액세스한다. 기본 시스템 메모리로의 메모리 사이클 동안에 메모리 제어기가 메모리 사이클에 응답한다. 그러나, 메모리 제어기(28)로의 메모리 사이클이 아닌 경우, 정보는 S-버스(16)상으로 보내진다. 메모리 제어기(28)는 자신이 현재 관리중인 동작이 I/O 사이클이라고 판단하면, S-버스 장치(14)에 의해 액세스되도록 S-버스(16)상으로 정보를 전송한다. I/O 사이클이 S-버스 장치를 목표로 하는 것인 경우, 적절한 S-버스 장치가 디코드 커맨드(decode command)로서 메모리 제어기에 응답한다. I/O 동작이 주 PCI 장치(18)에 대한 것이면 PCI 호스트 브릿지(20)는 디코드 커맨드로서 메모리 제어기에 응답하며 적절한 주 PCI 장치로 이 I/O 사이클을 전송한다,
시스템 클럭 모듈(system clock module)(38)은 S-버스 장치(14)를 위한 단일 클럭 신호와, CPU(24)를 위한 한 쌍의 클럭 신호를 제공한다. 바람직한 실시예에서, S-버스에 제공된 클럭 신호는 33MHz로 동작한다. CPU(24)에 제공된 2개의 신호는 각각 33MHz와 66MHz로 동작한다. CPU(24)는 내부적으로 66MHz로 동작하지만, CPU 로컬 버스(34)상으로는 33MHz로 통신하므로 2개의 클럭 신호를 요구한다.
프로세서, 캐쉬 및 메모리 복합체(12)와 S-버스 장치간의 통신은 32-비트 S-버스(16)를 통해 메모리 제어기(28)에 의해 관리된다. 또한, 도 1a 내지 1c의 바람직한 실시예에 도시된 바와 같이, 직접 메모리 액세스(DMA) 제어기(40), 시스템 중재 제어점(system arbitration control point; SACP)(42), I/O 제어기(44), PCMCIA 제어기(46) 및 파워 관리 제어기(48)가 S-버스에 접속된다. 보다 정교한 파워 관리 제어를 원하는 경우 선택사양적 파워 관리 제어기(optional power management controller)(50)가 파워 관리 제어기(48)에 접속될 수도 있다. S-버스(16)상에 DMA 제어기(40)와 I/O 제어기(44)의 중간에 버퍼(a buffer)(52)가 제공된다. 그러나, 도 1a 내지 1c에 도시된 것 이외의 다른 S-버스 장치(14)가 S-버스(16)에 접속될 수도 있다.
PCMCIA 제어기(46)는 PCMCIA 카드 슬롯(54)에 직접 접속된다. 주변 I/O 장치(56)는 버퍼(58)를 통해 PCMCIA 카드 슬롯(54)에 연결될 수 있다. 주변 I/O 장치(56)는 I/O 제어기(44)에 의해 제어된다. 일시 클럭(time-of-day clock)(60)과 RAM 모듈(62)은 I/O 제어기에 접속된다. I/O 제어기(44)는 마우스 포트(mouse port)(64), 직렬 포트(66), 병렬 포드(68) 및 키보트 포트(70)를 포함하는 다양한 포트를 지원한다.
시스템(10)은 S-버스(16)상에서 S-버스 장치(14)를 지원하는 것 외에도 본 바람직한 실시예에서 주 PCI 버스(22)인, 제2고속, 광대역(high bandwidth)버스를 지원한다. 주 PCI 버스(22)는 고성능 버스로서, 비교적 짧은 시간에 초당 최고 120 메가바이트의 유효한 데이타 전송을 수행할 수 있다. PCI 버스는, 부분적으로는, CPU가 접속될 수도 있는, S-버스(14)와 같은 다른 고속 버스에 직접 연결되므로써, PCI버스에 접속된 장치들과 S-버스에 접속된 장치들간에 고속 데이타 전송을 제공할 수 있으므로, 이러한 높은 수준의 성능을 발휘한다. 사실상, 특정의 그래픽 패키지 제어기(graphics packages controllers)와 같은 몇몇 고집적 장치(high integration devices)의 동작은 PCI 버스와 같은 고성능 버스를 통해 S-버스에 직접 연결될 것이 요구된다. 또한, PCI버스 아키텍처는 자신에게 접속된 주변 장치를 동작시키기 위해 "글루 로직(glue logic)"을 전혀 요구하지 않는다. 다른 버스에 적용되는 글루 로직은 전형적으로 주변 장치와 버스의 중간에 설치되는 디코더(decoders), 버프(buffers), 혹은 래치(latches)와 같은 다양한 하드웨어 구성요소로 구성된다.
주 PCI 버스(22)는 33MHz의 동기 클럭 신호상에서 동작하고 PCI 버스를 통해 전송되는 데이타 스트링(strings)은 32-비트 길이다. PCI 버스상의 32-비트 데이타 스트링은 더블워드(double word; DWORD)라 불리며, 각각 8비트 데이타로 구성된 4바이트로 나누어진다. PCI 버스에 의해 전송되는 어드레스와 데이타 정보는 하나의 신호로 다중화된다. 이러한 다중화는 다른 버스 아키텍처에 비해 분리된 어드레스 라인과 데이타 라인을 요구하지 않으며, 이것은 또한 PCI 버스 환경에서 필요한 신호의 수를 감소시킨다. PCI 버스 아키텍처에서 필요한 신호의 수는 45 내지 47 사이인 반면에, 비다중 버스에서는 전형적으로 PCI 버스 아키텍처에서 필요한 수의 2배가 필요하다. 따라서, 필요한 신호의 수가 감소하므로, PCI 버스에 연결된 장치를 지원하는데 필요한 접속 핀의 수도 대응하는 수만큼 감소된다. 그러므로, PCI 아키텍처는 고집적 데스크탑 컴퓨터(desktop computer) 시스템에 특히 적합하다.
PCI 버스 아키텍처의 구조 및 동작에 대한 보다 상세한 설명은 PCI 스페셜 인터레스트 그룹(PCI Special Interest Group)이 1992년 6월 22일 발행한 "주변장치 구성요소 상호 접속(PCI) 개정판 1.0 사양(Peripheral Component Interconnect(PCI) Revision 1.0 Specification)"과, 1992년 11월 1일 발행한 "PCI 시스템 디자인 가이드(Preliminary PCI System Design Guide)" 개정판 0.6과, 1992년 11월 6일 발행한 "주변 장치 구성요소 상호접속(PCI) 애드-인 보트/커넥터 어덴덤(Peripheral Component Interconnect(PCI) Add-in Board/Connector Addendum)"(초안)과, 1993년 4월 30일 발행한 "PCI 개정판 2.0 사양"에서 제공되며, 이들 참조 문헌의 내용은 전체적으로 본 명세서에서 참조로 인용된다.
시스템(10)내의 주 PCI 장치(18)는 주 PCI 버스(22)를 통해 상호 통신한다. 주 PCI 장치는, S-버스상에 상주하는 S-버스 장치인 PCI 호스트 브릿지(20)에 의해 CPU, 캐쉬 및 메모리 복합체(12)와 S-버스(16)상에 상주하는 다른 S-버스 장치(14)와 통신한다. 이 때 PCI 호스트 브릿지(20)는 S-버스(16)와 주 PCI 버스(22)간의 인터페이스 역할을 수행하며, 이들 두 버스와 이들 버스에 접속된 주변장치들 사이에서 효과적인 통신 수단을 제공한다.
PCI 호스트 브릿지(20)는 CPU(24) 또는 다른 S-버스 장치(14)가 주 PCI 장치(18) 또는 그에 접속된 장치를 직접 액세스할 수 있는 저지연 상호접속 메카니즘(low latency interconnect mechanism)이다. 이 브릿지(20)는 또한 주 PCI 장치 또는 그에 접속된 장치가 기본 시스템 메모리(32)를 신속하게 직접적으로 액세스할 수 있도록 하는 고성능 경로(a high performance path)를 제공한다. 또한, 이 호스트 브릿지(20)는 S-버스(16)와 주 PCI 버스(22)간에 데이타가 전송될 수 있도록 인터페이스를 제공하는데 필요한 모든 하드웨어를 제공한다.
정보 처리 시스템(10)의 다른 구성으로 S-버스가 없고, 따라서, 호스트 브릿지가 주 PCI 버스(22)를 CPU 로컬 버스(32)에 직접 접속한 것이 있을 수 있다. 이러한 구성에서는 어떠한 S-버스 장치(14)도 CPU 로컬버스(34)에 접속될 수 있다. S-버스(16)와 CPU 로컬 버스(34)는 동일한 아키텍처를 이용하여 동작하므로, 본 발명에 의해 수행되는 번역 기능은 이후 설명되는 바와 같이, 이러한 다른 실시예에서도 앞서 설명한 바람직한 실시예에서와 동일하다.
주 PCI 버스(22)는 PCI와 호환성이 있는 다양한 장치를 지원할 수 있다. 도 1a 내지 1c에 도시된 바와 같이, 이들 장치는 그래픽 제어기(72), 직렬 소형 컴퓨터 시스템 인터페이스(small computer systems interface; SCSI) 제어기(74), 미래의 PCMCIA 제어기(76), 표준 I/O 버스(예를 들면, ISA 또는 MICRO CHANN ELR(MC-A") 브릿지(78)(확장 브릿지로도 언급됨), PCI 2차 브릿지(80)를 포함할 수 있다. 그러나, 도 1a 내지 1c에 도시된, 주 PCI 버스에 접속된 장치는 PCI 버스 아키텍처를 구현하는 시스템, 즉, 본 명세서에 개시된 구성의 단지 일실시예일뿐, 본 발명을 제한하지 않는다.
그래픽 제어기(72)에는 전형적으로 비디오 프레임(video frames)을 버퍼링(buffering)할 수 있는 VRAM(82) 형태의 메모리 능력이 제공되며, PCI 버스 아키텍처에 의해 지원될 수 있는 모든 공지된 그래픽 패키지(graphics package)를 제어할 수 있다. SPCI 제어기(74)는 SPCI 버스(86)에 접속된 SCSI 장치(84)와 주 PCI 버스(22)간의 인터페이스 역할을 수행하며, PCI 버스 아키텍처에 의해 지원될 수 있는 모든 SCSI 장치를 제어할 수 있다. 미래의 PCMCIA 제어기(76)는 카드 슬롯(card slot)에 접속되어 이들 카드 슬롯을 제어한다.
표준 버스 브릿지(78)는 표준(예를 들어, MC-A 또는 ISA) 버스(92)에 접속된 I/O 장치(90)와 주 PCI 버스(22)간의 인터페이스 역할을 수행한다. 2차 PCI 장치(94)는 2차 PCI 버스(96)를 통해 PCI 2차 브릿지(80)에 접속된다. 2차 PCI 버스(96)에는 임의의 수의 식별되지 않은 2차 PCI 장치(94)가 접속될 수도 있다. PCI 2차 브릿지(80)는 2차 PCI 버스(96)에 접속된 임의의 수의 2차 PCI 장치(94)와 주 PCI 버스(22)간의 인터페이스 역할을 수행한다.
전체 컴퓨터 시스템(10)에 다른 PCI 버스가 없어도 PCI 버스 아키텍처와 호환성이 있는 임의 수의 주변 장치가 주 PCI 버스(22)상에 배열될 수도 있고, 혹은 임의 수의 PCI 주변 장치가, PCI 버스(96)에 부가하여 동일한 수의 제각기 분리된 PCI 브릿지(80)를 통해 주 PCI 버스(22)에 접속된 임의 수의 2차 PCI 버스에 의해 주 PCI 버스(22)에 접속될 수 있다. 각각의 2차 PCI 버스는 또한 PCI 버스는 또한 PCI 브릿지를 통해 접속되는 임의 수의 부가의 PCI 버스를 가질 수 있으며, 이들 "부가의(tertiary)" PCI 버스도 다양한 조합으로 접속되는 PCI 버스를 더 가질 수 있다. 마찬가지로, 각각의 PCI 버스는 그에 접속된 임의 수의 PCI 장치를 가질 수 있다. 두 PCI 버스간의 각 접속은 브릿지(80)와 동일한 PCI 브릿지를 통해 이루어져야 한다.
또한, PCI 호스트 브릿지(20)와 동일한 다수의 브릿지가 S-버스(16)에 의해 구동될 수도 있다. 이 때 이들 각 호스트 브릿지는 임의 수의 PCI 버스와, 시스템(10) 설계자가 원하는 배열로 그들에게 접속된 브릿지 및 장치를 가질 수 있다. 따라서, PCI 버스 아키텍처로 이루어진 시스템(10)의 일부분은 다중 버스와, 다양한 동등 및 계층 조합(peer and hierarchial combinations)(이하 PCI 네트워크라 함)으로 배열된 PCI 주변 장치로 구성될 수 있다.
본 발명의 PCI 호스트 브릿지(20)는 CPU 로컬 버스와 PCI 버스를 상호접속하여 이들 상호접속된 버스간에 데이타 전송 효율을 최대화하기 위한 메카니즘(a mechanism)을 제공한다. 이들 두 버스의 통신 프로토콜은 상이하므로, 이후 더욱 상세히 설명되는 바와 같이, 효율적인 버스간 인터페이스를 제공하는 로직이 제공된다.
도 2를 참조하면, 주 PCI 버스(22)에 접속된 주변장치로의 2개의 연속된 기입 사이클(consecutive write cycle) 동안 PCI 버스 버스(22)를 통해 전송되는 다양한 PCI 버스 신호에 대한 타이밍도(timing diagram)가 도시된다. 이 주변 장치는 그래픽 제어기(graphics controller)(72), 표준 버스 브릿지(standard bus bridge)(78) 또는 PCI 버스로부터 구동될 수 있는 임의의 다른 주변장치일 수 있다. 마찬가지로, 도 2에 도시된 기입 사이클은 주 PCI 버스에만 국한되는 것이 아닌 전형적인 PCI 버스 기입 사이클이다. 즉, 이들은 PCI 네트워크내의 2차 PCI 버스(96) 또는 어떤 다른 PCI 버스상의 기입 사이클일 수 있다.
클럭 신호(CLOCK)는 PCI 네트워크상의 모든 통신을 위한 타이밍(timing)을 제공한다. CLOCK은 모든 PCI 장치와 PCI 브릿지에 입력된다. CLOCK은 동기적(synchronous)으로서, 모든 PCI 아키텍처내의 모든 통신 신호는 적어도 하나의 클럭 폭을 가지며, 커맨드 혹은 데이타 전송은 적어도 하나의 클럭 신호 기간에 걸쳐 실행된다. 도 2의 신호는 세로방향의 점선에 의해 개개의 "클럭(clocks)" 또는 "페이즈(phases)"로 구분된다. 각각의 세로 점선은 한 클럭의 시작과 바로 전 클럭의 끝을 표시한다. 각 라인상의 신호는 클럭 신호의 상스 에지(rising edge)상에서 샘플링(sampling)되거나, 그들의 유효한 의미를 갖는다.
프레임 신호(frame signal; FRAME)는 PCI 버스에 접속된 임의의 PCI 브릿지 또는 주변장치에 의해 이용되며, 이 PCI 버스에 접속된 다른 PCI 브릿진 주변장치로의 액세스 또는 통신 사이클을 개시함을 표시한다. 액세스를 개시하는 주변장치 또는 PCI 브릿지를 마스터(master)라 하고 액세스 대상이 되는 장치 또는 구성 요소를 슬레이브(slave) 또는 목표(target)라 한다. FRAME은 네가티브 액티브 신호(a negative active signal)이다. 따라서, 마스터가, 제2클럭에도시된 바와 같이, FRAME을 로우로 구동하면, 마스터가 액세스를 개시함을 슬레이브축에 알리는 것이다.
개시 준비완료 신호(initiator ready signal; IRDY) 또한 로우일 때 활성화되어 마스터가 데이타 전송을 시작할 준비가 되었음을 표시한다. 따라서, 마스터는, 판독 사이클중 데이타를 받을 준비가 되었을 때 또는 기입 사이클 중 슬레이브로 데이타를 전송할 준비가 되었을 때, IRDY를 로우로 구동한다.
목표 준비완료 신호(target ready signal; TRDY)는 로우일 때 활성화되어 슬레이브가 데이타 전송을 시작할 준비가 되었음을 표시한다. 따라서, 슬레이브는, 기입 사이클 중 마스터로부터 데이타를 받을 준비가 되었을 때 또는 판독 사이클중 마스터로 데이타를 전송할 준비가 되었을 때, TRDY를 로우로 구동한다.
어드레스/데이타 신호(address/data signal; AD)는 데이타 전송의 목적지가 되는 레지스터의 어드레스와 전송될 데이타를 운반하며, 이들은 하나의 라인상에 다중화된다. 어드레스 정보는 어드레스 페이즈(address phase)동안 마스터가 FRAME을 송출할 때 마스트에 의해 AD상에 구동된다. 어드레스 페이즈 후 데이타 페이즈동안 액세스가 판독 사이클인지 기입 사이클인지의 여부에 따라 각기 마스터 또는 슬레이브는 AD상에 구동되는 데이타를 제공한다. 이 어드레스 페이즈는 하나의 클럭 폭을 가지며, 데이타 페이즈는 적어도 하나의 클럭 폭을 갖지만, PCI 마스터에 의한 IRDY 송출 또는 슬레이브의 TRDY 신호 송출에 의해 데이타 전송이 지연될 경우 두 클럭 이상도 될 수 있다.
커맨드/바이트 인에이블 신호(command/byte enable signal; C/BE)는 한 라인 상에 다중화된 PCI 버스 커맨드 및 바이트 인에이블 신호를 제공한다. 버스 커맨드는 마스터가 FRAME을 송출할 때 및 AD상의 어드레스 페이즈동안 마스터에 의해 인가된다. 이 버스 커맨드는 마스터가 개시하고 있는 액세스의 형태에 따라 판독 또는 기입 커맨드일 수 있다.
AD 상으로 데이타가 전송되는 동안 C/BE 상에는 바이트 인에이블 신호가 제공된다. 바이트 인에이블 신호는 4개 비트로 이루어진다. 4 비트가 모두 로우로 활성화되면, AD 상으로 전송되는 4 바이트(32 비트)의 데이타가 모두 인에이블됨을 표시한다. 인에이블된 데이타는 정상의 인지가능한 데이타(normal, intelligible data)이다. 4비트 중 한 비트가 하이(high)인 경우, PCI 버스상에 전송되고 있는 4 바이트의 데이타 중 대응하는 한 바이트가 디스에이블(disable)되어, 특정의 데이타 비트가 인지불가능하므로 데이타 스트링을 수신 또는 전송하는 장치 또는 구성 요소에 의해 무시되어야 함을 의미한다.
도 2에 도시된 바와 같이 간단한 기입 동작중 다양한 PCI 버스 신호의 기능은 다음과 같다.
제2클럭에서, 마스터는 FRAME을 로우로 구동하며, 이것은 마스터가 슬레이브로의 액세스를 개시함을 의미한다. IRDY 및 TRDY는 제2클럭에서 반환 사이클에 놓인다.
이 때, 마스터는 액세서의 목표가 되는 슬레이브내 레지스터의 어드레스를 AD라인상으로 제공하며, 동시에 C/BE라인상으로 기입 커맨드를 발생한다.
제3클럭에서, FRAME은 송출해제(deassert)되며, 이것은 액세스가 완료될 준비가 되었음을 나타낸다. 이제 마스터는 IRDY 라인의 제어를 획득하고, 슬레이브로 데이타를 전송할 준비가 되었다는 표시로 IRDY 라인을 로우로 구동한다. 또한, 슬레이브는 TRDY 라인의 제어를 획득하고, 자신의 내부 레지스터의 어드레스인 어드레스 정보를 디코드(decode)하여 해당 레지스터에 데이타를 받을 준비가 되었다는 표시로 TRDY 라인을 로우로 구동한다. 따라서, 제3클럭에서는 데이타가 마스터로부터 슬레이브의 디코드된 레지스터로 AD 라인을 통해 전송된다.
데이타가 전송될 때, C/BE 라인상에는 바이트 인에이블 신호가 송출되어, 데이타가 인에이블되었는지의 여부를 표시한다. 4비트중 하나 이상이 하이이면, AD 라인상의 데이타의 대응하는 바이트가 인에이블되지 않는다.
제5클럭에서, 다른 기입 사이클이 개시되었으므로 타이밍도는 전술한 바와 같은 과정을 반복한다. 이 두번째 기입 사이클은 동일한 마스터에 의해 개시될 수도 있고, 다른 마스터에 의해 개시될 수도 있다. 마찬가지로, 기입 사이클의 목표 슬레이브도 같을 수도 있고 완전히 다를 수도 있다.
PCI 버스에 접속된 다양한 장치들간에 있을 수 있는 회선경쟁의 위험성을 제거하기 위해 각 라인은 두번째 기입 사이클이 개시되기 전에 반환 사이클을 거친다. 반환 사이클 및 회선경쟁에 관한 완전하 설명에 대하여는, IBM사에 양도되고 본 출원과 동시에 출원되어 계류중인 "다중 버스를 갖는 정보 처리 시스템에서 백-투-백 데이타 전송을 제공하는 방법 및 장치(METHOD AND APPARATUS FOR PROVIDING BACK-TO-BACK DATA TRANSFERS IN AN INFORMATION HANDLING SYSTEM HAVING A MULTIPLEXED BUS)"라는 명칭의 미국 특허 출원에서 찾아볼 수 있다.
도 3을 참조하면, 하나의 판독 사이클과 다른 판독 사이클의 시작에 대한 타이밍도가 도시된다. 제2클럭에서, 마스터는 FRAME을 로우로 구동한다. 본 실시예의 경우 단일의 데이타 페이즈 전송이므로 FRAME은 단지 하나의 클럭 신호인 제2클럭동안만 로우로 유지된다. 이와 동시에, 마스터는 AD 라인상으로 어드레스 정보를 공급하고 C/BE 라인상으로 판독 커맨드를 전송한다.
마스터가 판독을 요구한 데이타를 제공하기 위해 제4클럭에서 슬레이브가 AD 라인을 제어해야 하므로, 제3클럭에서 AD 라인은 반환 사이클로 들어간다. 이러한 반환 사이클은 AD 라인에 대한 마스터와 슬레이브간의 회전경쟁을 제거하기 위해 필요하다. 제3클럭에서 마스터는 IRDY를 로우로 구동하여 요구된 데이타를 판독할 준비가 되었음을 신호한다. 또한, 마스터는 C/BE 라인상으로 바이트 인에이블 신호를 송출한다.
제4클럭 신호동안, 슬레이브는 AD 라인상으로 데이타를 제공하고 TRDY를 송출한다. 이 때 C/BE 라인상의 바이트 인에이블 신호는 유지된다. 제4클럭에서 IRDY가 여전히 로우로 유지되므로, 판독될 데이타는 슬레이브로부터 마스터로 전송된다.
PCI 버스에 접속된 마스터가 CPU 로컬 버스 또는 시스템 버스에 접속된 구성 요소 또는 장치로 데이타 전송을 실행할 경우, 두 단계의 과정이 필요하다.(이들 시스템 버스, 예를 들면, S-버스(16) 및 CPU 로컬 버스는 모두 X86형 버스 아키텍처를 따르며, 따라서, 이후 CPU 로컬 버스 아키텍처로 언급된다.) 제1단계에서, PCI 버스를 CPU 로컬 버스에 접속하는 호스트 브릿지는 PCI 버스상의 데이타 전송에 대해 슬레이브이다. 제2단계에서, 호스트 브릿지는 CPU 로컬 버스상에서 판독 또는 기입 사이클의 어느 경우에 대해서건 마스터가 되며, 이러한 데이타 전송의 목적지가 되는 장치 또는 구성요소는 이러한 특정의 데이타 전송에 대해 슬레이브이다.
예를 들면, 그래픽 제어기(72)가 DMA 제어기(40)에 대한 기입 사이클을 수행할 경우, PCI 호스트 브릿지(20)는 주 PCI 버스(22)상에서 기입 사이클에 대해 슬레이브가 된다. 이 때 기입 사이클 동안 기입될 데이타가 호스트 브릿지(20)로 전송된다. 그리고 나서, 호스트 브릿지(20)는 S-버스(16)상에서 기입 사이클에 대해 마스터가 되며 이 기입 사이클의 슬레이브 또는 목표로서 DMA 제어기(40)를 갖는다. 그리고 나서, 이 기입 사이클동안 데이타는 다시 S-버스(16)를 통해 호스트 브릿지(20)로부터 DAM 제어기(40)로 전송된다. 판독 사이클도 마찬가지로 2단계의 과정으로 동작하며, 호스트 브릿지(20)는 PCI 버스(22)상에서 슬레이브가 된 후, S-버스(16)상에서 마스터가 되어 데이타 전송을 완료한다.
또한, S-버스(16)상에서 마스터가 PCI 버스(22)상의 장치로의 데이타 전송을 개시한 경우, 마스터는 우선 슬레이브로서 호스트 브릿지(20)를 사용해야 한다. 이 때, 호스트 브릿지(20)는 PCI 버스(22)상에서의 데이타 전송에 대해 마스터가 된다.
PCI 네트워크내의 PCI 브릿지(80) 아래의 PCI 버스에 접속된 장치들과 CPU 로컬 버스(34) 또는 S-버스(16)에 접속된 구성요소들간의 데이타 전송은 네트워크를 함께 접속하는 PCI 브릿지로 및 그로부터 연속적인 데이타 전송을 수행하므로써 PCI 네트워크를 통해 완료되어야 한다. 일단 PCI 브릿지(80)가 전송될 데이타를 소유하며, 이러한 데이타 전송이 기입 사이클에 대한 것인 경우, 앞서 설명된 2단계 과정이 이용되어 데이타 전송이 완료되며, 이 때 PCI 브릿지(80)는 PCI 버스(22)상에서 마스터로서 이용되고, 호스트 브릿지(20)는 PCI 버스(22)상에서는 슬레이브, S-버스(16)상에서는 마스터가 된다.
S-버스(16)와 PCI 버스(22)는 상이한 버스 아키텍처를 가지므로, 이들간의 데이타 전송은 2단계로 완료되어야 한다. CPU 로컬 버스 아키텍처에서는, 데이타와 어드레스 정보가 PCI 버스 아키텍처에서 처럼 다중화되지 않고, 분리된 라인상으로 전송된다. 이들 라인상의 데이타 및 어드레스 정보 스트링은 32비트(4 바이트)길이다.
CPU 로컬 버스 아키텍처는 버스 아키텍처에서의 바이트 인에이블 신호와 동일한 기능을 수행하는 바이트 인에이블 라인을 갖는다. 따라서, CPU 로컬 버스 아키텍처에서의 바이트 인에이블 신호는 4비트 길이며, 데이타 라인상의 데이타의 특정 바이트가 인에이블되었는지 디스에이블되었는지의 여부를 표시한다.
CPU 로컬 버스(34) 및 S-버스(16)는 타이밍 신호로서 PCI 버스(22)로 부터의 CLOCK 신호를 이용한다. CPU 로컬 버스(34) 및 S-버스(16)상의 각 클럭 신호의 폭을 하나의 버스 사이클(a bus cycle)이라고 부른다.
PCI 버스 아키텍처와 달리, CPU 로컬 버스(34)의 데이타 및 어드레스 정보는 분리된 라인상으로 전송된다. 따라서, 일단 데이타 전송의 목적지가 되는 슬레이브가 어드레스 라인상으로 전송된 어드레스에 응답하면, CPU 로컬 버스상에서 하나의 버스 사이클내에 데이타 전송이 완료될 수 있다. 몇 개의 32비트 데이타 스트링이 연속적인 어드레스로 전송되는 버스트 전송(burst transfer)시, 일단 슬레이브가 첫번째 전송에 응답하면, 이후 계속되는 각 데이타 전송은 단일의 버스 사이클내에 완료될 수 있다. 데이타 전송중에 마스터는 바이트 인에이블 라인을 통해 CPU 로컬 버스상으로 바이트 인에이블 신호를 발생한다.
도 2를 참조하면, 제2 내지 제4클럭에 예시된 기입 사이클의 최종 목적지가 S-버스(16)에 접속된 구성 요소인 경우, 호스트 브릿지(20)는 PCI 기입 사이클이 지향하는 슬레이브이다. 따라서, 호스트 브릿지(20)는 제2클럭에서 전송된 어드레스에 응답하여 제3클럭에서 자신의 내부 레지스터들중 하나에 전송된 데이타를 수신한다.
그리고, 나서, 호스트 비릿지(20)가 S-버스(16)이 제어를 획득하면, 마스터로서 동작하여, S-버스(16)상으로 기입 사이클을 발생한다. 제1버스 사이클동안 호스트 브릿지(20)는 동일한 어드레스 정보 및 PCI 기입 사이클중에 수신된 바이트 인에이블 신호를 S-버스(16)를 통해 제각기의 라인상으로 전송한다. 적절한 슬레이브가 이 어드레스 정보에 응답하며, 이러한 응답후 다음 버스 사이클에서 데이타가 전송된다.
도 4를 참조하면, 부분적으로 PCI 호스트 브릿지(20)를 형성하며, PCI 버스(22)와 S-버스(16)간에 버스간 인터페이스 메카니즘을 제공하는 로직(100)의 블럭도가 도시된다. 이 로직(100)은 (i)선입선출형(first-in first-out; FIFO) 버퍼 로직(102)과, (ii)S-버스(16)를 FIFO 버퍼 로직(102)과 인터페이스하는 S-버스 인터페이스 로직(104)과, (iii)주 PCI 버스(22)를 FIFO 버퍼 로직(102)과 인터페이스하는 PCI 버스 인터페이스 로직(106)을 포함한다.
FIFO 버퍼 로직(102)은 16바이트(4개의 더블워드(DWORD) 데이타 스트링을 저장할 수 있는(미도시된) 선입선출형 버퍼(FIFO)를 포함한다. 이 FIFO는 S-버스(16)로부터 데이타를 판독-프리페칭(read-prefetching)하고 PCI 버스(22)로부터 데이타를 기입-포스팅(write-posting)할 수 있다. FIFO는, 판독 버스트 전송시 연속되는 어드레스부터 데이타가 판독될 것임을 예측하므로써 데이타를 판독-프리페치하며, 따라서 특정의 마스터가 데이타를 판독하기 위한 전송 요구를 개시하기 전에 이들 어드레스로부터 데이타를 "프리패치(prefetch)"한다. 기입-포스팅은 FIFO가 PCI 마스터로 부터의 기입 버스트 전송중에 연속적인 어드레스부터 데이타를 받아들일 때 발생하며, 따라서, FIFO는 호스트 브릿지가 S-버스(16)에 접속된 슬레이브로 데이타를 전송하기 전에 마스터로부터 데이타를 "포스트(posts)"한다. 이러한 FIFO는, 예를 들면, 더블워드 인터리브형 구조(a double word interleaved structure) 또는 핑-퐁형 구조(a ping-pong structure)로 구현될 수도 있다. 이들 FIFO와 판독-프리페칭 및 기입-포스팅 동작과 관련한 상세한 설명은 앞서 기재된 IBM사에 양도된 동시계류중인 특허 출원에 제공되어 있다.
S-버스 인터페이스 로직(104)은 S-버스(16)로부터 FIFO 버퍼 로직(102)내로 데이타를 판독 또는 판독-프리페치하라는 PCI 버스 인터페이스 로직(106)으로 부터의 요구에 응답한다. S-버스 인터페이스 로직(104)은 또한 FIFO 또는 PCI 버스 인터페이스 로직(106)에 의해 제공되는 상태 정보에 응답하여 FIFO로부터 S-버스(16)로 데이타를 기입한다.
PCI 버스 인터페이스 로직(106)은 S-버스(16)를 목표로 하는 PCI 버스 사이클에 응답한다. 판독 사이클 동안 PCI 버스 인터페이스 로직(106)은 S-버스 로직(104)으로 하여금 S-버스(16)로부터 데이타를 판독 또는 판독-프리페치할 것을 요구하며, 이 요구된 데이타를 FIFO에 의해 제공된 상태 정보에 기초하여 FIFO로부터 출력한다. 기입 사이클동안, PCI 버스 인터페이스 로직(106)은 FIFO로 부터의 상태 신호에 기초하여 FIFO내로 데이타가 기입 또는 기입-포스트되도록 한다.
PCI 버스(22)에 접속된 장치로부터 FIFO로 데이타가 입력되고 있을 때, PCI 인터페이스 로직(106)은 FIFO의 상태를 모니터하여 FIFO내에서 다른 유효 데이타 스트링 위로 새로운 데이타가 너무 빨리 기입되지 않게 보장한다. FIFO의 모든 4개의 더블워드가 데이타로 이미 채워지면, 더 이상의 데이타는 입력될 수 없다.
PCI 버스(22)로부터 개시된 기입-포스트 또는 판독-프리페치 버스트 전송동안, 포스트되거나 프레치되는 데이타가 제각기 FIFO를 채우면, 버스트 전송은 종료되거나 유효 데이타가 FIFO 내에 중복 기입(write over)된다. 버스트 전송을 종료하는데 이용될 수 있는 한가지 방법은, FIFO에 데이타를 제공하거나 FIFO로부터 데이타를 판독하는 장치로 하여금 간단히 PCI 버스(22)에 대한 액세스를 포기하게 하는 것이다. 이것은 결국 호스트 브릿지(20)로부터 장치를 단속(disconnect)하여 데이타 전송을 종료시킨다.
그러나, 일단 장치가 PCI 버스(22)에 대한 액세스를 포기하면, PCI 버스 아키텍처 중재 가이드라인(arbitration guidelines)으로 인해 PCI 버스(22)상의 최소 5개 클럭 기간동안 PCI 버스(22)에 대한 액세스를 재획득할 수 없다. 더욱이, 이 장치는 무한 기간(an indefinite period of time)동안 PCI 버스(22)의 제어를 재획득하지 못할 수도 있다. 따라서, PCI 버스(22)에 접속된 장치로 부터의 S-버스(16)를 목표로 하는 버스트 전송이 몇 개의 데이타 페이즈 길이인 경우, 장치는 이러한 데이타 전송이 완료되기 전에 수회에 걸려 호스트 브릿지(20)로부터 단속되게 된다. 결국 이러한 데이타 전송을 완료하는데 요구되는 시간은 무한하게 되어 여지없이 길어질 것이다.
FIFO내에 데이타가 중복-기재(over-written)되지 않도록 보장하는데 사용될수 있는, 지금까지 공지되지 않은 다른 방법은 데이타 전송을 개시하는 PCI 버스(22)에 접속된 장치(즉, "PCI 마스터)로 하여금 PCI 버스(22)에 대한 액세스를 유지하도록 허용하면서 FIFO가 채워졌을 때 PCI 버스(22)상의 TRDY 신호를 송출해제하는 것이다. FIFO 내의 저장 공간이 이용가능하게 되면, TRDY는 재송출되고 버스트 전송이 완료될 수 있다. 본 발명은 동작개시하는 장치의 PCI 버스(22)에 대한 액세스를 종료시키는 문제점을 제거한다. 따라서, PCI 버스(22)로부터 S-버스(16)로의 버스트 전송은 앞서 설명된 바와 같이 장치를 단속시키는 방법보다 훨씬 더 효율적으로 성취될 수 있다. 더욱이, FIFO내에 저장 공간이 이용가능하게 되는 즉시 FIFO내로 데이타가 전송되므로, 데이타 전송을 완료하는데 요구되는 시간이 최적화된다. 본 발명은 이후 설명되는 본 발명의 페이싱 로직(pacing logic)에 의해 제공된다.
도 5를 참조하면, 페이싱 로직(110)이 도시된다. 이 페이싱 로직(110)은 PCI 버스 인터페이스 로직(106)의 일부를 포함하는 PCI 호스트 브릿지(20)내의 하드웨어 로직이다. 페이싱 로직(110)의 주된 목적은 PCI 버스(22)로부터 FIFO로의 데이타 입력 페이스가 최적의 형태로 제어될 수 있도록 PCI 버스(22)상으로 TRDY신호를 송출해제 및 송출하는 것이다.
앞서 설명된 FIFO는 16바이트 또는 4개의 더블워드 데이타를 일시적으로 저장할 수 있다(이후 본 명세서에 FIFO내의 더블워드 자장 공간을 "FIFO의 더블워드(DWORD of the FIFO)"라고 부른다.) FIFO내의 각 더블워드에서 32비트 PCI 어드레스 신호의 비트2 및 비트3으로 이루어지는 4개의 이진값중 하나가 할당된다. 비트 2 및 비트3은 FIFO내의 더블워드를 선택하는데 필요한 PCI 어드레스의 최소 유효 어드레스 비트이다(비트0 및 비트1은 PCI 아키텍처에 의해 PCI 메모리 어드레스용으로 사용되지 않음). FIFO의 4개의 연속적인 더블워드에 할당된 비트2 및 비트3의 이진값은 00, 01, 10, 11, 즉, 십진값으로 제각기 0, 1, 2, 3이다. 현재 PCI 데이타 페이즈를 위해 비트 2 및 비트3가 PCI_A[2] 및 PCI-A[3]으로 명명된 라인상으로 페이싱 로직(110)에 입력된다.
이들 PCI_A 라인은 2개의 4-입력 멀티플렉서(112,114)에 입력된다. 멀티플렉서(112,114)의 각 입력은 PCI_A 라인상의 신호의 4개의 가능한 값들 중 하나에 대응하며, 따라서, FIFO의 4개 더블워드중 하나에 대응한다. 멀티플렉서(112,114)는 PCI_A 라인상의 현재 값에 대응하는 입력을 선택하여 이 입력으로 부터의 현재 신호를 출력한다.
멀티플렉서(114)로의 입력은 FIFO내의 4개의 더블워드 데이타에 대응하는 4개의 PCI 바이트 인에이블 신호이다. 특정의 더블워드내에 데이타가 존재하지 않는 경우, 이 더블워드에 대한 바이트 인에이블 신호는 1111이 되어 이 더블워드내에 바이트들중 어느 것도 인에이블된 데이타를 포함하지 않음을 표시한다. FIFO의 4개 더블워드에 대한 바이트 인에이블 신호는 호스트 브릿지(20)(도시되지 않음)의 하드웨어내 래치 레지스터내에 저장되며, 이들을 래치된 바이트 유효 신호(the latched byte valid signals)라고 부른다. 래치된 바이트 유효 신호를 멀티플렉서(114)의 입력단으로 전송하는 라인은 DWO_BV, DW1_BV, DW2_BV, DW3_BV로 명명되며, 제각기 FIFO의 DWORD0, DWORD1, DWORD2, DWORD3에 대응한다.
이들 래치된 바이트 유효 신호의 각각은 4개의 4-입력 앤드 게이트(AND gate)를 포함하는 블럭(116)내의 대응하는 앤드 게이트와, 4개의 4-입력 노아 게이트(NOR gate)를 포함하는 블럭(118)내의 대응하는 노아 게이트에 입력된다. 예를 들면, DWO_BV 신호는 블럭(116)의 AND0와 블럭(118)의 NOR0에 입력된다. 이들 블럭(116,118)의 앤드 게이트 및 노아 게이트는 제각기 각각의 4비트 래치된 바이트 유효 신호에 대한 로직 동작을 수행한다.
블럭(116)의 4개 앤드 게이트를 각각으로 부터이 출력은 멀티플렉서(112)의 4개 입력단중 대응하는 입력단으로 입력되며, 대응하는 FIFO의 더블워드가 비어있는지의 여부를 표시한다. 예를 들면, AND0의 출력은 FIFO의 DWORD0에 대응하는 멀티플렉서(112)의 입력단에 접속된다.
블럭(118)의 4개 노아 게이트를 각각으로 부터의 출력은 대응하는 FIFO의 더블워드가 인에이블된 데이타로 채워졌는지의 여부를 표시한다. 예를 들면, NOR0의 출력이 이진4수 하이이면, 이것은 FIFO의 DWORD0가 채워졌음을 표시한다. 이들 신호는 호스트 브릿지(20)를 이루는 나머지 하드웨어로 출력된다.
멀티플렉서(112)의 출력은 2-입력 앤드 게이트(AND4)의 한 입력단에 접속된다. 이 앤드 게이트(AND4)의 다른 입력단으로는 신호 W_CYC가 입력되며, 이 신호는 현재 PCI 버스(22)로 부터의 데이타 전송이 기입 동작을 위한 것이면 항상 이진수 1, 즉, 하이이고, 판독 데이타 전송이면 항상 로우이다.
멀티플렉서(114)의 출력은 2-입력 비교기(120)의 한 입력단에 접속된다. 이 비교기(120)의 다른 입력단으로는 PCI 버스(22)의 C/BE 라인으로 부터의 바이트 인에이블 신호가 입력된다. 비교기(120)는 특정의 FIFO 더블워드의 래치된 바이트 유효 신호인 멀티플렉서(114)의 출력을 현재 판독 전송용 바이트 인에이블 신호에 비교한다. 이들 바이트 인에이블 신호는 판독 전송을 개시한 PCI 마스터에 의해 발생된다. 멀티플렉서(114)로 부터의 신호가 바이트 인에이블 신호보다 작거나 동일하면, 이 때 비교기(120)는 출력 라인(122)상으로 이진값 하이 신호를 발생한다.
출력 라인(122)은 2-입력 앤드 게이트(AND5)의 한 입력단에 접속된다. 이 앤드 게이트(AND5)의 다른 입력단으로는 R_CYC로 명명된 신호가 입력된다. 이 신호 R_CYC는 판독 데이타 전송중 항상 이진값 하이이고, 기입 데이타 전송중 항상 이진값 로우이다.
AND4 및 AND5의 출력은 제각기 2-입력 오아 게이트(OR4)의 입력단으로 입려되며, 이 오아 게이트의 출력은 2-입력 앤드 게이트(AND6)의 한 입력단으로 입력된다. 이 앤드 게이트(AND6)의 다른 입력단으로는 FIFO 준비 로직 블럭(ready logic block)(124)으로 부터의 신호 FIFO_AVLBL가 입력된다. FIFO 준비 로직 블럭(124)은 PCI 마스터에 의해 개시된 현재의 데이타 전송을 위해 FIFO가 이용가능할 때 하이 신호의 FIFO_AVLBLO를 발생한다.
앤드 게이트(AND6)의 출력은 다중 입력 낸드 게이트(a multiple input NAND gate)(126)의 한 입력단으로 입력된다. 이 낸드 게이트(126)의 다른 입력단으로는 PCI 버스(22)상의 TRDY 신호의 송출 및 송출해제에 영향을 미칠 수도 있는 호스트 브릿지(20)내의 다른 신호가 입력된다. 이들 신호는 호스트 브릿지(20)가 다른 데이타 전송의 발생을 원하지 않음을 의미하는 PCI 호스트 브릿지(20) 목표 금지(target abort) 신호일 수도 있고, PCI 호스트 브릿지(20) 목표 단속(target disconnect)신호일 수도 있다.
낸드 게이트(126)의 출력은 TRDY 신호로서 PCI 버스(22)상의 TRDY 라인에 접속된다. 앤드 게이트(AND6)의 출력을 포함하여 낸드 게이트의 모든 입력이 이진값 하이이면, 이 때 낸드 게이트(126)의 출력은 로우가 된다. 따라서, TRDY는 로우로 활성화되어 PCI 버스(22)상의 장치에서 현재의 PCI 데이타 페이즈동안 데이타가 FIFO내로 기입되거나 FIFO로부터 판독될 수 있는 데이타 전송을 개시함을 알린다.
블럭(116)내의 4개 앤드 게이튿들의 출력 또한 모두 4-입력 앤드 게이트(AND7)에 입력되며, 호스트 브릿지(20)를 이루는 나머지 하드웨어로 출력된다. 앞서 설명된 바와 같이, 이들 4개 신호 각각은 하이일 때 호스트 브릿지(20)의 나머지 하드웨어에게 특정의 FIFO 더블워드가 완전히 비어있음을 표시한다. 앤드 게이트(AND7)의 출력은 FIFO_EMPTY로 명명되며, FIFO 준비 로직 블럭(124)으로 입력된다.
도 6을 참조하면, FIFO 준비 로직 블럭(124)의 도면이 도시된다. 앤드 게이트(AND7)로 부터의 FIFO_EMPTY 신호는 2-입력 앤드 게이트(128)의 한 입력단으로 입력된다. 이 앤드 게이트(128)로의 다른 입력은 S_DATA신호이다. S_DATA는 호스트 브릿지(20)내의 공지된 하드웨어에 의해 발생된다. S_DATA가 이진값 하이이면, 이것은 PCI 버스(22)에 접속된 마스터에 의해 개시된 데이타 전송이 S-버스(16)에 접속된 장치 또는 구성요소를 목표로 하며 호스트 브릿지(20)가 데이타 전송을 수행할 수 있는 상태에 있음을 표시한다.
S_DATA는 앤드 게이트(128)에 입력되는 동시에 인버터(130)에 입력된다. 앤드 게이트(128)와 인버터(130)의 출력은 3-입력 멀티플렉서(132)에 제어 신호로서 접속된다. 이 멀티플렉서(132)는 앤드 게이트(128)와 인버터(130)로 부터의 제어신호 값에 따라 3개의 입력중 하나를 선택하여 자신의 출력단으로 전송한다. 앤드 게이트(128)의 출력이 하이이고, 인버터(130)로 부터의 출력이 로우이면, 이 때 멀티플렉서(132)는 이진값 하이에 접속된 자신의 제1입력을 출력한다. 앤드 게이트(18)로 부터의 출력에 관계없이 S_DATA가 로우인 때는 언제나 멀티플렉서(132)는 이진값 로우에 접속된 자신의 제2입력을 출력한다. 인버터(130)와 앤드 게이트(128)로 부터의 출력이 모두 로우이면, 이 때 멀티플렉서(132)는 래치(134)의 출력단에 접속된 자신의 제3입력을 출력한다.
래치(134)의 입력은 멀티플렉서(132)의 출력단에 접속된다. 따라서, 멀티플렉서(132)의 출력 신호는 래치(134)를 통해 멀티플렉서(132)의 제3입력단으로 피드백된다. 멀티플렉서(132)의 출력은 또한 FIFO_AVLBL 신호로서 페이싱 로직(110)의 앤드 게이트(AND6)의 한 입력단에 입력된다.
페이싱 로직(110)은 PCI 마스터에 의해 개시된 버스트 전송이 기입 동작이냐 판독 동작이냐에 따라 다르게 동작한다. 기입 버스트 전송중 동작시, PCI 마스터는 PCI 버스(22)의 AD 라인상으로 특정 범위내의 어드레스를 구동하므로써 S-버스(16)를 목표로 하는 기입 버스트 전송을 개시한다. 호스트 브릿지(20)는 이 어드레스에 응답하여 S_DATA 신호를 하이로 구동한다. 이 시점에서, FIFO가 비어있는 것으로 가정하면, 래치된 바이트 유효 신호의 모든 값은 논리 1이다. 따라서, 블럭(116)내 앤드 게이트들 각각의 출력은 하이가 되어 앤드 게이트(AND7)의 출력 FIFO_EMPTY를 하이로 구동하게 된다.
S_DATA와 FIFO_EMPTY가 모두 하이인 경우, 인버터(130)와 앤드 게이트(128)의 출력은 제각기 로우이고 하이이다. 이렇게 되면, 멀티플렉서(132)의 출력단상으로 하이 신호의 FIFO_AVLBL가 구동된다. 이 하이 신호는 또한 하나의 PCI 클럭신호 기간동안 래치(134)내로 래치된다.
본 실시에에서는 설명을 목적으로, 버스트 전송의 첫번째 어드레스의 비트2 및 비트3이 이진값 "0"를 갖는 것으로 가정하였다. 그러나, 이들은 앞서 설명된 다른 세 개의 가능한 값들중 어느 것을 가질 수도 있다. 이것은 멀티플렉서(112)로 하여금 자신의 출력단으로 AND0로 부터의 출력이 전송되도록 선택하게 하며, 앞서 설명된 바와 같이 DWO_BV가 모두 이진수 1의 값을 갖게 되므로, 이 출력은 이진값 하이가 된다.
멀티플렉서(112)로 부터의 하이 출력은 하이 값의 W_CYC와 함께 앤드 게이트(AND4)에 입력된다. 따라서, 앤드 게이트(AND4)는 하이의 출력을 발생하고 이것은 오아 게이트(OR4)의 출력을 하이가 되게 한다. FIFO_AVLBL이 하이이고 오아 게이트(OR4)로 부터의 출력이 하이이므로, 앤드 게이트(AND6)의 출력은 하이가 된다.
앤드 게이트(AND6)로 부터의 출력이 하이가 된 때 낸드 게이트(126)로 입력된 다른 TRDY 조건이 하이이면, 낸드 게이트(126)는 TRDY를 로우로 활성화한다. 이렇게 하여 데이타가 마스터로부터 FIFO의 DWORD0에 기입된다.
순차 버스트 전송이고 데이타는 FIFO내로 기입-포스트되므로, 제2데이타 사이클을 위한 어드레스의 비트2 및 비트3는 이후 설명되는 호스트 브릿지(20)내의 다른 하드웨어에 의해 "1"로 증가되며 FIFO의 DWORD1이 이 사이클동안 데이타를 수신하는데 사용된다. 따라서, 멀티플렉서(112)는 앤드 게이트(AND1)의 출력을 자신의 출력단으로 전송되도록 선택한다. DWORD1이 비어있으므로, DW1_BV는 모두 1이다. 따라서, 앤드 게이트(AND1)와 멀티플렉서(112)의 출력은 모두 하이 값이다. 이것은 또한 앤드 게이트(AND4) 및 오아 게이트(OR4)의 출력을 모두 하이 값이 되게 한다.
제2데이타 사이클 동안 앤드 게이트(AND0)는 이제 로우의 출력을 갖게 되며, 이것은 DWO_BV가 FIFO의 DWORD0내의 데이타 존재를 표시하는 적어도 하나의 0을 갖는 4자리의 이진값으로 구성되기 때문이다. 따라서, 앤드 게이트(AND7)로 부터의 FIFO_EMPTY 신호는 FIFO가 더 이상의 완전히 비어있지 않으므로 로우 값이 된다.
FIFO_EMPTY 신호는 전체 버스트 전송동안 하이 값을 유지하는 S_DATA와 함께 앤드 게이트(128)에 입력된다. 그러나, FIFO_EMPTY가 이제 로우이므로, 앤드 게이트(128)에 입력된다. 그러나 FIFO_EMPTY가 이제 로우이므로, 앤드 게이트(128)는 그의 출력단으로 로우 값을 발생한다. 따라서, 앤드 게이트(128) 및 인버터(130)로부터 멀티플렉서(132)로 입력되는 이진 제어 값은 모두 로우이다. 이것은 멀티플렉서(132)로 하여금 래치(134)로 부터의 피드백 입력이 자신이 출력단상으로 이진값 하이의 FIFO_AVLBL 신호로서 발생되도록 선택하게 한다.
FIFO_AVLBL과 오아 게이트(OR4)로 부터의 출력이 모두 하이이므로, 앤드 게이트(AND6)의 출력은 하이이다. 이에 의해 낸드 게이트(126)는 TRDY를 로우로 활성화시키며 제2데이타 페이즈동안 마스터로부터 FIFO의 DWORD1내로 데이타가 기입된다.
이 과정은 FIFO의 각 더블워드가 데이타를 포함할 때까지 어드레스의 비트2 및 비트3을 증가시키므로써 반복된다. S-버스(16)에 접속된 슬레이브(이후 "슬레이브" 또는 S-버스 슬레이브"라 함)가 전송을 완료할 수 있도록 이용가능하게 되면, FIFO의 DWORD0로부터 시작하여 데이타가 전송된다. PCI 마스터가 FIFO의 더블워드내로 새로운 데이타를 기입-포스트하려고 하기 전에 FIFO의 더블워드가 비어있으면, 이때 TRDY는 로우 값으로 유지되어 새로운 데이타가 FIFO내로 입력될 수 있게 한다. 따라서, 마스터가 이미 유효 데이타를 포함하고 있는 더블워드내로 데이타를 기입-포스트하려고 할 때까지 데이타는 FIFO내로 연속적으로 입력된다.
S-버스(16)는 한번에 16개의 데이타 바이트만을 버스트 전송할 수 있고 그리고 나서는 일단정지해야 하므로, 이러한 상태는 아마도 복수의 데이타 페이즈 버스트 전송중에 다수회 발생할 것이다. 따라서, S-버스(16)에 접속된 슬레이브는 PCI 버스상의 마스터가 FIFO를 데이타로 채울 수 있는 것보다 더 느리게 FIFO를 비울 수도 있다.
마스터가 이미 유효 데이타를 포함하고 있는 더블워드, 예를 들면, DWORD0내로 데이타를 기입-포스트하려고 하면, 블럭(116)으로 부터의 출력, 특히, 앤드 게이트(AND0)의 출력은 로우가 된다. 멀티플렉서(112)는 이 로우 입력이 출력단으로 구동되도록 선택하며, 결과적으로 낸드 게이트(126)로 로우 값이 입력된다. 이것은 TRDY를 하이로 송출해제하므로써 마스터가 현재의 PCI 클럭 신호동안 데이타 전송을 완료하지 못하게 한다.
TRDY는 DWORD0내의 데이타가 S-버스(16)에 접속된 슬레이브로 출력될 때까지 계속되는 PCI 클럭동안 연속적으로 송출해제된다. 이 때 DWO_BV의 값은 역시 모두 논리 1이 된다. 따라서, 앤드 게이트(AND1)는 멀티플렉서(112), 앤드 게이트(AND4), 오아 게이트(OR4) 및 앤드 게이트(AND6)를 통해 낸드 게이트(126)로 하이 신호를 발생하며, 이에 의해 낸드 게이트(126)의 출력 TRDY`는 로우로 활성화되어 DWORD0내로 데이타가 기입되도록 한다. 이와 같이, 페이싱 로직(110)은 FIFO내지의 더블워드가 이용가능하게 되는 즉시 TRDY를 활성화시키므로써 PCI 버스(22)로부터 FIFO내로의 데이타의 기입-포스팅을 최적화한다.
TRDY의 이러한 송출 및 불가피한 송출해제는 PCI 마스터가 FRAME을 송출해제 하므로써 버스트 전송이 완료되었음을 신호할 때까지 전체 버스트 전송중에 계속된다. 이 경우, S_DATA는 PCI 호스트 블릿지(20)내의 하드웨어에 의해 로우로 구동된다. S_DATA가 로우가 되면, 멀티플렉서(132)는 FIFO_AVLBL을 로우로 구동하여 앤드 게이트(AND6)의 출력을 로우로 TRDY를 하이로 송출해제시킨다.
PCI 버스(22)에 접속된 마스터에 의해 개시되며 S-버스(16)에 접속된 슬레이브를 목표로 하는 판독 버스트 전송중에, 호스트 브릿지(20)는 슬레이브로부터 FIFO내로 데이타를 판독-프리페치한다. TRDY는 PCI 마스터가 특정의 어드레스로부터 판독하고자 시도하고 있는 데이타가 이 어드레스의 비트2 및 비트3에 대응하는 FIFO의 더블워드내에 존재할 때 송출된다. 페이싱 로직(110)은 또한 PCI 버스(22)로부터 개시된 판독 버스트 전송동안 이와 같이 TRDY 송출 기능을 제공한다.
FIFO 준비 로직 블럭(124)은 판독 전송에 대해서도 기입 전송에 대한 것과 동일하게 기능한다. 따라서, PCI 마스터에 의해 S-버스(16)를 목표로 하는 판독 전송이 개시되고 FIFO가 비어있는 경우, S_DATA는 하이가 되어 전체 데이타 전송을 통해 FIFO_AVLBL을 하이로 구동한다.
현재의 PCI 데이타 전송이 지향되는 어드레스의 비트2 및 비트3에 따라 멀티플렉서(114)는 이들 비트번호에 대응하는 특정의 FIFO 더블워드에 대해 래치된 바이트 유효 신호를 출력하게 된다. 예를 들면, 판독 버스트 전송의 초기 데이타 전송이 "0"의 비트2 및 비트3를 갖는 어드레스를 지향하는 경우, 이 때 멀티플렉서(114)는 그의 출력단에 DWO_BV가 구동되도록 선택하게 된다.
멀티플렉서(114)의 출력은 비교기(120)에 입력되어 현재 PCI 데이타 사이클의 바이트 인에이블 신호와 비교된다. 비교기(120)에서 멀티플렉서(114)로 부터의 출력이 바이트 인에이블 신호보다 작거나 같으면, 이때 비교기(120)는 앤드 게이트(AND5)로 입력되는 하이 신호를 출력한다. 이 경우, 마스터가 슬레이브로부터 판독하고자 하는 데이타가 FIFO의 DWORD0내에 존재함을 표시하므로, TRDY는 송출되어야 한다.
따라서, 비교기(120)로 부터의 하이 신호는 앤드 게이트(AND5), 오아 게이트(OR4) 및 앤드 게이트(AND6)를 통해 낸드 게이트(126)로 입력되며, 이에 따라 PCI 마스터에 의해 TRDY가 송출되고, DWORD0로부터 데이타가 판독된다.
DWO_BV가 바이트 인에이블 신호보다 크면, 이 때 요구 데이타는 DWORD0내에 존재하지 않음을 표시한다. 따라서, 비교기(120)로 부터의 출력은 로우가 되고 TRDY는 송출되지 않는다. 그러나, 일단 마스터에 의해 검색된 데이타가 S-버스(16)로부터 DWORD0내로 입력되면, 비교기(120)의 출력은 하이가 되어 TRDY를 로우로 송출되도록 한다.
이러한 과정은 버스트 전송이 완료될 때까지 앞서 설명된 어드레스 값의 비트2 및 비트3을 증가시키므로써 반복된다. 이 경우 브릿지(20)는 S_DATA를 로우로 구동하여 TRDY를 하이로 송출해제시킨다.
도 7을 참조하면, S-버스 인터페이스 로직(104)의 판독-프리페치 로직이 도시된다. 판독-프리페치 로직(150)은 PCI 마스터로 부터의 버스 커맨드에 기초하여 S-버스(16)에 접속된 슬레이브로부터 FIFO내로 데이타가 판독-프리페치되어야 하는 때를 예측한다. 따라서, 판독-프리페치 로직(150)은 PCI 마스터에 의해 버스트 판독 전송이 개시된 때만 즉시 데이타를 "페치"하므로써 FIFO의 사용 및 판독 버스트 전송을 완료하는데 요구되는 시간을 최적화한다.
판독 프리페치 로직(150)은 PCI 버스(22)의 C/BE 라인의 비트3, 비트2, 비트0에 접속된 3개의 입력을 갖는 3-입력 앤드 게이트(152)를 포함한다. 비트0의 값은 앤드 게이트(152)에 입력되기 전에 반전된다. 따라서, PCI 버스(22)의 C/BE 라인의 비트2 및 비트3의 이진값이 모두 하이이고 비트0의 이진값이 로우인 경우 앤드 게이트(152)의 출력은 하이가 된다.
커맨드 사이클중에 이들 3개 비트의 이진 조합은 마스터가 개시한 판독 데이타 전송이 버스트 판독 데이타 전송이며, 따라서, 전체 데이타 전송 속도를 최적화 하기 위해 FIFO내로 데이타가 판독-프리페치되어야 함을 표시한다. 이러한 비트값 조합에 의해 표시되는 특정의 PCI 버스 커맨드는 "Memory Read Long" 및 "Memory Read Multiple"이다.
앤드 게이트(152)의 출력은 3-입력 멀티플렉서(154)의 제1입력단에 접속된다. 멀티플렉서(154)의 제2입력단에는 이진값 로우가 접속된다. 멀티플렉서(154)의 제3입력단에는 래치(156)를 통해 출력이 피드백되어 접속된다.
멀티플렉서(154)는 호스트 브릿지(20)의 하드웨어를 통해 제어 신호로서 수신되는 다양한 PCI 버스 신호의 상태에 기초하여 자신의 출력단으로 입력들중 하나가 구동되도록 선택한다. PCI 커맨드 및 어드레스 페이즈동안, 멀티플렉서(154)는 자신의 제1입력(앤드 게이트(152)로 부터의 출력)이 자신의 출력단으로 구동되도록 선택한다. PCI 버스(22)상의 데이타 페이즈동안 멀티플렉서(154)는 자신의 제3입력이 자신의 출력단으로 구동되도록 선택한다. PCI 버스(22)상의 데이타 페이즈동안 멀티플렉서(154)는 자신의 제3입력이 자신의 출력단으로 구동되도록 선택한다. PCI 마스터에 의해 개시된 판독 버스트 전송이 완료되어 모든 요구된 데이타가 마스터에 의해 판독되면, 이 때 멀티플렉서(154)는 이진값 로우인 자신의 제2입력이 자신의 출력단으로 구동되도록 선택한다.
멀티플렉서(154)의 출력은 래치(156)에 접속될 뿐만 아니라, 앤드 게이트(158)의 한 입력단에도 접속된다. 앤드 게이트(158)로의 다른 입력단으로는 호스트 브릿지(20)의 하드웨어에 의해 발생된 신호 LB_HIT가 입력된다. LB_HIT 신호는, 호스트 브릿지(20)가 PCI 마스터에 의해 발생된 데이타 전송용 어드레스를 디코드하여 이 데이타 전송이 S-버스(16)에 접속된 슬레이브를 목표로 하는 것임을 판단한 때에, 하이가 된다.
앤드 게이트(158)의 출력은 READ_PFTCH로 명명된 신호로서, 호스트 브릿지(20)의 다른 하드웨어에 접속된다. READ_PFTCH가 이진값 하이이면, 이것은 호스트 브릿지(20)의 다른 하드웨어에게 PCI 버스(22)에 접속된 마스터에 의해 판독되도록 데이타가 FIFO내로 프리페치되어야 함을 표시한다.
앤드 게이트(158)로 부터의 출력은 또한 래치(160)에 입력되는 동시에 반전되어 앤드 게이트(162)에 입력된다. 래치(160)의 출력은 앤드 게이트(162)의 다른 입력단에 접속된다.
이들 래치(156,160)는 하나의 PCI 클럭 신호 기간동안 자신들에게 입력된 값을 유지한 후, 다음 계속되는 클럭 신호동안 출력하다. 따라서, 앤드 게이트(158)의 출력이 몇 개의 클럭 기간동안 하이인 후 하나의 클럭 신호동안 로우가 되어 클럭 신호 기간동안 로우로 유지된 경우, 래치(160)는 앤드 게이트(158)의 출력이 로우인 때와 동시에 하나의 크럭 기간동안 하이 신호를 유지하게 된다. 따라서, 하나의 클럭 신호 기간 동안 앤드 게이트(162)의 출력은 하이로 "펄스(pulse)"된 후 다시 로우가 된다.
앤드 게이트(162)의 출력은 3-입력 멀티플렉서(164)의 제어 신호로서 접속된다. 이 멀디플렉서(164)의 다른 제어 입력 신호는 BUSY로 명명된 신호로서, S-버스 인터페이스 로직(104)에 의해 발생된다. BUSY가 하이이면, PCI 마스터에 의해 개시된 판독 버스트 전송에 응답하여 S-버스(16)를 통해 데이타가 아직 프리페치되고 있음을 표시한다.
BUSY가 하이이고, 앤드 게이트(162)의 출력이 하이로 펄스되면, 멀티플렉서(164)는 이진값 하이에 접속된 제1입력을 출력한다. 단지 BUSY만이 하이인 경우, 멀티플렉서(164)는 제3입력을 출력단으로 구동되도록 선택하며, 멀티플렉서(164)의 출력은 래치(166)을 통해 피드백 신호로서 멀티플렉서(164)의 제3입력단에 입력된다. BUSY가 로인 경우, 멀티플렉서(164)는 이진값 로우에 접속된 자신의 제2입력을 출력하다.
멀티플렉서(164)의 출력은 앤드 게이트(168)의 한 입력단에 접속된다. 앤드 게이트(168)의 다른 입력은 S-버스 인터페이스 로직(104)에 의해 발생된 신호 LAST_RDY의 반전된 이진값이다. LAST_RDY는 S-버스(16)에 접속된 슬레이브로부터 FIFO내로 최종 데이타 스트링이 프리페치될 때가지 항상 이진값 하이이다. 슬레이 브로부터 프리페치된 최종 데이타 스트링은 READ_PFTCH 신호가 로우가 된 때 S-버스 인터페이스 로직(104)에 의해 판단된다.
앤드 게이트(168)의 출력은 래치(170)에 접속된다. 래치(170)의 출력은 CLEAR_FIFO로 명명된 신호이다. CLEAR_FIFO가 하이이면, 이것은 FIFO 로직(102)에게 FIFO의 더블워드들을 클리어하고, 바이트 유효 신호를 모두 이진수 1로 세트하도록 알린다. 이에 따라, FIFO는 비워져서 다음 데이타 전송을 준비한다.
동작시에, PCI 마스터는 PCI 버스(22)의 C/BE 라인상으로 Memory Read Long 또는 Memory Read Multiple 커맨드를 송출하므로써 PCI 커맨드/어드레스 페이즈 동안 판독 버스트 전송을 개시한다. 이와 동시에, 마스터는 PCI 버스(22)의 AD 라인 상으로 이 판독 전송이 S-버스(16)에 접속된 슬레이브를 향한 것임을 표시하는 메모리 어드레스를 전송한다.
곧 바로 PCI 버스(22)의 C/BE 라인의 비트0, 비트2, 및 비트3에 앤드 게이트(152)에 입력된다. 이들 비트는 제각기 이진값, 0, 1, 1을 가지며, Memory Read Long 또는 Memory Read Multiple PCI 버스 커맨드를 표시한다. 이들 커맨드는 현재의 판독 데이타 전송이 버스트 전송임을 표시한다. C/BE 라인의 비트0의 로우 값은 앤드 게이트(152)에 입력되기 전에 반전된다. 따라서, 앤드 게이트(152)의 출력은 이진값 하이가 되어 멀티플렉서(154)의 제1입력단으로 입력된다.
현재 PCI 페이즈는 어드레스 페이즈이므로, 멀티플렉서(154)는 자신의 제1입력단으로 입력되는 앤드 게이트(152)로 부터의 하이 신호가 자신의 출력단으로 구동되도록 선택한다. 이러한 어드레스 페이즈 후 연속적인 복수의 PCI 데이타 페이즈동안 멀티플렉서(154)는 피드백 입력인 제3입력이 출력단으로 구동되도록 선택하여, 이것은 래치(156)로 인해 항상 하이 값이 된다.
호스트 브릿지(20)는 PCI 마스터에 의해 송출된 어드레스를 디코드하여, 데이타 전송이 S-버스(16)에 접속된 슬레이브를 목표로 한 것임을 판단한다. 따라서, 호스트 브릿지(20)의 하드웨어는 LB_HIT를 하이 신호로 구동한다.
멀티플렉서(154) 및 LB_HIT로 부터의 하이 값은 앤드 게이트(158)에 입력되며, 앤드 게이트(158)는 하이의 READ_PFTCH를 출력한다. READ_PFTCH가 하이가 되면, FIFO 버퍼 로직(102) 및 S-버스 인터페이스 로직(104)에서 슬레이브로부터 FIFO내로 데이타 프리페치를 시작함을 알린다.
READ_PFTCH는 PCI 마스터가 FRAME 신호를 하이 값으로 송출하므로써 요구한 모든 데이타를 슬레이브로부터(FIFO를 통해) 판독하였음을 표시할 때까지 하이로 유지된다. 이 경우, 멀티플렉서(154)는 이진값 로우인 제2입력이 자신의 출력단으로 구동되도록 선택한다. 이와 같이 하여 앤드 게이트(158)는 READ_PFTCH로 로우 신호를 발생하게 되고, 이것은 S-버스 인터페이스 로직(104)에서 FIFO내로 데이타를 프리페치하는 것을 정지할 것을 표시한다.
PCI 마스터가 FRAME을 하이로 송출하므로써 데이타 전송을 정지하면, FIFO내로 이미 프리페치되었을 수도 있는 데이타는 불필요하므로 마스터에 의해 판독되지 않게 된다. S-버스(16)와 PCI 버스(22)간의 다른 데이타 전송이 시작되기 전에 모든 남아 있는 데이타는 클리어되거나 FIFO로부터 비워져야 한다. 판독 프리페치로직(15)의 나머지 로직은 이러한 기능을 수행한다.
앤드 게이트(158)가 초기에 READ_PFTCH로 로우 값을 발생하는 클럭 신호동안, 이 로우 값은 반전되어 앤드 게이트(162)에 입력된다. 이와 동시에 이 클럭신호동안, 래치(160)는 이전의 클럭 신호로부터 유지하고 있었던 이진값 하이를 출력하게 된다. 따라서, READ_PFTCH가 로우가 되는 하나의 클럭 신호 기간동안 앤드 게이트(162)는 하이 출력을 펄스하다.
이와 같이 앤드 게이트(162)로부터 펄스발생된 하이 출력은 BUSY 신호와 함께 제어 신호로서 멀티플렉서(164)에 입력된다. 이 클럭 신호동안 S-버스(16)는 S-버스(16)는 슬레이브로 부터의 마지막 프리페치를 완료하는 과정에 있게 되므로 BUSY 또한 하이가 된다. 따라서, 멀티플렉서(164)는 자신의 제1입력단에 접속된 하이 신호를 자신의 출력단으로 구동하게 된다.
S-버스(16)가 현재의 데이타 전송결과 판독 프리페치 로직(150)에 의해 개시된 판독 프리페치를 완료하느라고 사용되고 있는 한, BUSY는 하이로 유지된다. 이에 의해 멀티플렉서(164)는 래치(166)로 인해 하이 신호인 피드백 입력을 선택하게 된다.
이 하이 신호는 LAST_RDY와 함께 앤드 게이트(168)에 입력된다. LAST_RDY가 로우가 되어 FIFO내로의 최종 판독 프리페치가 완료되었음을 표시하면, 앤드 게이트(168)는 래치(170)로 하이 신호를 출력하게 된다. 래치(170)는 이 하이 신호를 출력단상의 CLEAR_FIFO 신호로서 유지한다. CLEAR_FIFO는 FIFO 버퍼 로직으로 하여금 사용되지 않은 프리페치된 데이타를 포함하는 FIFO를 비우게 하며, 모든 래치된 바이트 유효 신호를 모두 이진수 1로 복귀시킨다.
이와 같이 하여, 판독 프리페치 로직(150)은 S-버스(16)상에서의 판독 프리페칭을 지능적으로, 또는, PCI 버스(22)에 접속된 마스터에 의해 판독 버스트 전송이 개시된 때만 개시한다. 판독 프리페치 로직(150)은 또한 FIFO를 최적의 형태(optimum fashion)로 클리어하여 이러한 FIFO를 통해 가능한한 빠르게 데이타 전송이 완료될 수 있게 한다.
S-버스(16)와, PCI 버스(22), 호스트 브릿지(20) 및 특히 S-버스 인터페이스 로직(104) 사이의 통신을 충분히 최적화하여 번역하려면, 판독-프리페칭 로직(150)에 부가하여, 버스트 전송에 관려된 제각기의 버스 아키텍처들간의 두 차이점을 조절하기 위한 하드웨어를 포함해야 한다. 이들 차이점중 하나는 앞서 설명된 것으로서, PCI 버스 아키텍처는 임의의 어드레스로부터 시작하는 데이타를 순차적으로 버스트 전송할 수 있지만, CPU 로컬 버스/시스템 버스 아키텍처는 특정의 어드레스에 대해서만 순차적인 버스트 전송을 시작할 수 있다는 것이다.
CPU 로컬 버스와 PCI 버스 아키텍처들간의 버스트 전송에 관련되는 다른 차이점은 CPU 로컬 버스 또는 시스템 버스는 불연속적인 데이타를 버스트 전송할 수 없는데 비해 PCI 버스는 이러한 능력을 가지고 있다는 것이다. 불연속적인 데이타(non-contiguous data)라 함을 제각기의 바이트 인에이블 신호에 의해 인에이블된 둘 이상의 데이타 바이드가 인에이블되지 않은 복수의 데이타 바이트에 의해 분리된 것을 말한다. 버스트 전송중에 불연속적인 데이타는 전송되고 있는 임의의 데이타 스트링에 대한 바이트 인에이블 신호중 몇몇이 또는 모두가 데이타가 인에이블되지 않음을 표시할 때 발생한다. 예를 들면, 4개의 데이타 스트링이 버스트 전송되는 경우 이들 4개의 데이타 스트링 중 어느 것의 바이트 인에이블 신호중 어느 바이트 인에이블 신호가 이진값 하이(즉, "1"의 값)를 가질때 이 버스트 전송은 불연속적이 된다. 앞서 설명된 바와 같이, 이러한 불연속적인 데이타의 버스트 전송은 CPU 로컬 버스(34) 및 S-버스(16)의 버스 아키텍처에서 불가능하다.
도 8을 참조하면, S-버스 인터페이스 로직(104)의 베스트 로직(200)이 도시된다. 이 베스트 로직(200)은 PCI 버스(22)와 S-버스(16)간의 불연속적인 데이타를 포함하는 버스트 전송 속도를 최적화한다. 베스트 로직(200)은 S-버스(16)를 목표로 하는 불연속적인 데이타의 버스트 전송을 검출하고, 이 버스트 전송을 이러한 불연속적인 데이타를 전송하는데 필요한 임의 수의 단일 데이타 전송으로 변환한 후 남아 있는 연속적인 데이타를 버스트 전송하므로써 이러한 최적화를 수행한다. 따라서, 본 발명은 불연속적인 데이타를 포함하는 버스트 전송중에 전송되고 있는 모든 데이타를 평가하여 가능한한 효율적으로 데이타를 전송하게 되는 단일 전송과 버스트 전송의 최적의 조합을 판정한다. 베스트 로직(200)은 또한 S-버스(16)상의 모든 버스트 단일 전송과 버스트 전송의 최적의 조합을 판정한다. 베스트 로직(200)은 또한 S-버스(16)상의 모든 버스트 전송 속도를 최적화하면서 PCI 마스터에 의해 개시되는 임의의 버스트 전송이 S-버스(16) 아키텍처의 제한내의 올바른 어드레스 경계에서 시작하도록 보장한다.
베스트 로직(200)은 3-입력 멀티플렉서(202)의 제1입력단으로 PCI_AD[X : 2]로 명명된 입력 신호를 수신한다. PCI_AD[X : 2]는 PCI 마스터가 S-버스(16)를 목표로 하는 버스트 전송을 개시하기 위해 PCI 어드레스 페이즈중에 PCI 버스(22)상으로 전송한 PCI 어드레스 신호의 하위 비트로 이루어진다. PCI_AD[X : 2]를 구성하는 PCI 어드레스 신호의 비트 번호는 비트 번호 X 내지 2(여기서 2는 이 어드레스 신호의 최하위 비트임)이다. 비트X는 시스템 설계자에 의해 선택되는 비트 번호이며, 설계자가 어느 하나의 PCI/S-버스 데이타 전송시에 PCI 버스(22)상으로 버스트 전송될 수 있게 허용한 PCI 데이타 페이즈의 수에 기초한다. 설계자는 이러한 최대값을, 임의의 한 PCI 마스터가 PCI 버스를 액세스할 수 있도록 설계자가 허용한 시간량에 기초하여 또는 다른 시스템 아키텍처 설계 이유(other system architecture design reasons)로 설정한다.
베스트 로직(200)이 이후 설명되는 바와 같이 초기 PCI 어드레스 신호내의 비트X보다 상위의 비트 번호가 변경되도록 어드레스를 증가시키면, PCI 버스(22)상의 데이타 페이즈의 최대수는 초과된다. 이러한 상태가 발생하면, PCI 인터페이스 로직(106)은 목표 단속(a target disconnect)을 개시하며, 이것은 최대 수의 데이타 페이즈를 초과하는 PCI 데이타 전송에 뒤따르는 버스 사이클에서는 어떤 데이타 전송도 허용하지 않게 된다. 따라서, 마스터는 호스트 브릿지(20)로부터 단속되며, 다른 PCI 마스터가 PCI 버스(22)를 액세스 할 수 있게 된다.
멀티플렉서(202)의 제2입력단은 2-입력 멀티플렉서(204)의 출력단에 접속된다. 멀티플렉서(202)의 출력은 래치(206)를 통해 피드백 입력으로서 멀티플렉서(202)의 제3입력단에 입력된다.
멀티플렉서(202)에 대한 제어 신호는 호스트 브릿지(20)내의 다른 하드웨어 로직에 의해 제공된다. 멀티플렉서(202)는 S-버스(16)를 목표로 하는 전송을 개시한 PCI 어드레스 페이즈동안 자신의 출력단으로 자신의 제1입력이 구동되도록 선택한다. 멀티플렉서(202)의 제2입력은 S-버스(16)상의 임의의 데이타 페이즈가 완료된 후 출력단상으로 구동되며, 다음 시스템 버스 데이타 페이즈용 어드레스가 발생되어야 한다. 멀티플렉서(202)의 제3이력은 시스템 버스 데이타 페이즈동안, 또는 S-버스(16)상의 데이타 페이즈가 완료된때 선택되며, S-버스(16)상의 다음 데이타 페이즈는 완료된 데이타 페이즈와 동일한 어드레스를 목표로 한다. 이중 후자의 상황은 단일 더블워드내의 불연속적인 데이타가 S-버스(16)상으로 전송되어야 하거나 또는 S-버스(16)의 동적 버스-크기조정 기능(dynamic bus-sizing capability)을 수행해야 할 때 발생한다. 이러한 두가지 상황과 이들 상황을 해결하는데 사용된 하드웨어는 IBM사에 양도되고, "정보 처리 시스템에서 상이한 버스 아키텍처간에 정확하고 완전한 통신을 제공하기 위한 방법 및 장치(METHOD AND APPARATUS FOR PROVIDING ACCURATE AND COMPLETE COMMUNICATION BETWEEN DIFF ERENT BUS ARCHITECTURE IN AN INFORMATION HANDLING SYSTEM)"란 명칭으로 동시계류중인 미국 특허 출원에 개시되어 있다.
래치(206)를 통과한 후 멀티플렉서(202)의 출력은 S-버스(16)상의 현재 데이타 페이즈에 대한 어드레스의 비트X 내지 비트2를 포함한다. 이 신호는 SBUS_AD[X : 2]로 명명된다. SBUS_AD[X : 2]는 시스템 버스 인터페이즈 로직(104)으로 출력된다. S-버스 인터페이스 로직(104)은 SBUS_AD[X : 2]를 PCI_AD의 남아 있는 비트 번호들과 결합하며, 이 결합된 어드레스 값을 S-버스(16)상의 현재의 데이타 페이즈동안 S-버스(16)의 어드레스 라인상으로 출력한다.
SBUS_AD의 비트2 및 비트3(SBUS_AD[3 : 2])은 버스트 사이즈 로직 블럭(a burst size logic block)(208)으로 입력되다. 버스트 사이즈 로직 블럭(208)으로의 다른 입력은 FIFO의 더블워드가 채워졌거나 비어있음을 표시하는 페이싱 로직(110)으로 부터의 DWORD_FULL 및 DWORD_FMPTY 신호와, 프리페치 로직(150)으로 부터의 READ_PFTCH 신호와, FIFO_FLUSH 신호를 포함한다. FIFO_FLUSH는 PCI 버스 인터페이스 로직이 FIFO 내의 데이타가 S-버스(16)상의 슬레이브내로 기입되어야 함을 표시한 때 FIFO 버퍼 로직(102)에 의해 발생된다.
버스트 사이즈 로직 블럭(208)은 수신된 입력 값에 기초하여 BSIZE로 명명된 출력을 발생한다. BSIZE는 SBUS_AD[3 : 2]의 현재 값으로 시작하여 S-버스(16)상으로 버스트 전송되어야 하는 데이타 페이즈의 수를 표시한다. BSIZE는 버스트 모드(a burst mode)에서 BSIZE에 의해 표시된 데이타 페이즈 수를 전송하는 S-버스 인터페이스 로직(104)으로 출력된다.
버스트 사이즈 로직 블럭(208)은, 버스트 데이타 전송이 기입 동작(표1)인지 판독 프리페치 동작(표2)인지에 기초하여 아래의 표1 및 표2에 개시된 BSIZE에 대한 값을 발생하는 로직의 조합(a combination of logic)이다.
[표 1]
Figure kpo00001
[표 2]
Figure kpo00002
이들 표에 표시된 바와 같이, S-버스(16)의 아키텍처는 "0" 또는 "10" 값을 갖는 SBUS_AD[3 : 2]로 종료하는 어드레스에서 시작하는 버스트 전송만을 허용한다. 더욱이, 이 값이 "10"인 경우 단지 두개의 버스트 데이타 전송이 허용된다.
또한, 표1이 표시하는 바와 같이, S-버스(16)를 통해 FIFO내의 특정의 데이타 더블워드를 버스트 전송하려면, 이 더블워드에 대한 DWORD_FULL 신호는 이 더블 워드내의 모든 데이타 바이트가 인에이블되어 있음을 표시하는 하이 신호가 되어야 한다. 이렇게 하므로써 S-버스(16)를 통해 불연속적인 데이타가 버스트 전송되지 않게 보장한다. SBUS_AD[X : 2]는 또한 두 개의 가산기(21,22)에 제각기 입력된다. 가산기(210)는 SBUS_AD[X : 2]를 1씩 증가하여 이 새로운 값을 멀티플렉서(204)의 제1입력단으로 출력한다. 가산기(212)는 SBUS-AD[X : 2]의 값을 2씩 증가하여 이 새로운 값을 멀티플렉서(204)의 제2입력단으로 출력한다.
어드레스 증가 로직 블럭(214)은 멀티플렉서(204)로 제어 신호를 제공한다. 어드레스 증가 로직 블럭(214)은 페이싱 로직(110)으로 부터의 DWORD_EMPTY 신호와, SBUS_AD[X : 2]와 FIFO_FLUSH를 입력으로서 수신하며, 이들 입력에 기초하여 멀티플렉서(204)용 제어 신호를 발생한다. 어드레스 증가 로직 블럭(214)에 의해 출력된 제어 신호는 아래의 표3에 개시된 바와 같이 입력에 따라 로우 또는 하이일 수 있다.
[표 3]
Figure kpo00003
어드레스 증가 로직 블럭(214)은 표3의 발생 함수를 제공한다. 어드레스 증가 로직 블럭(214)의 목적은 PCI 마스터에 의해 개시된 버스트 전송중에 마스터가 특정 어드레스에 인에이블된 데이타도 기입되어서는 안됨을 표시할 때 이 어드레스를 스킵(skip)하는 것이다. 어드레스 증가 로직 블럭(214)으로 부터의 출력이 로우이면, 멀티플렉서(204)는 자신의 출력단으로 가산기(210)로 부터의 출력이 구동되도록 선택한다. 이것은 정상 상태(a normal situstion)를 표시하며, S-버스(16)상의 다음 데이타 전송 어드레스는 간단히 1더블워드 어드레스만큼 증가한다. 어드레스 증가 로직 블럭(214)으로 부터의 출력이 하이이면, 멀티플렉서(204)는 자신의 출력단으로 가산기(212)로 부터의 출력이 구동되도록 선택하며, 이에 의해 어드레스 값이 2 더블워드 어드레스만큼 증가된다. 이러한 상황은 S-버스(16)상의 기입되어야 할 FIFO 내의 다음 더블워드 데이타 전체가 인에이블되지 않아서, 이 더블워드의 대응하는 어드레스가 특정의 기입 버스트 전송중에 스킵되어야 함을 표시할 때 발생한다. 따라서, 어떤 데이타도 이 어드레스에 기입되지 않는다.
동작시, S-버스(16)에 접속된 슬레이브로의 기입 버스트 전송동안 PCI 마스터에 의해 제공된 첫번째 PCI 어드레스의 비트X 내지 비트2가 멀티플렉서(202)의 제1입력단으로 입력된다. 멀티플렉서(202)는 이 어드레스 값을 자신의 출력단상으로 구동하며, 이것은 이 첫번째 PCI 어드레스 페이즈가 PCI 버스트 전송의 시작을 표시하기 때문이다. 래치(206)는 이 값을 래치하여 제1 SBUS_AD[X : 2] 값으로 출력한다.
SBUS_AD[3 : 2] 버스트 사이즈 로직 블럭(208)으로 입력된다. 버스트 사이즈 로직 블럭(208)은 FIFO_FLUSH로 하이 신호를 수신할 때까지 출력을 발생하지 않는다. 버스트 사이즈 로직 블럭(208)이 이와 같은 하이 신호를 수신하면, FIFO는 PCI 마스터로 부터의 기입 포스트된 데이타로 채워지게 된다.
버스트 사이즈 로직 블럭(208)은 FIFO_FLUSH 신호를 수신하면, 4개의 DWORD_FULL 신호에 기초하여 FIFO의 각 더블워드내의 데이타가 연속적인 데이타를 포함하는지의 여부를 평가하며 SBUS_AD[3 : 2] 신호를 또한 평가한다. 이들 평가에 기초하여 버스트 사이즈 로직은 BIZE 신호를 발생하게 된다.
예를 들면 비트2 및 비트3의 "0" 값을 갖고, FIFO_FLUSH가 하이이고, 전체 FIFO가 채워져 있는 경우, 이 때 4의 값을 갖는 BSIZE가 발생된다. 따라서, S-버스 인터페이스 로직(104)은 슬레이브로 FIFO 내의 4개 데이타 더블워드를 버스트 기입 전송하게 된다. 이것은 S-버스(16)의 최대 버스트 전송 용량이며, 따라서, 버스트 사이즈 로직 블럭(208)에 입력되는 신호들중 가장 빠른 가능한 조합이다. 마스터에 의해 개시된 기입 전송이 4개 데이타 더블워드보다 긴 경우, FIFO내의 공간이 이용가능하게 될 때 FIFO는 계속해서 마스터로부터 기입-포스트된 데이타로 채워지게 된다. FIFO_FLUSH는 FIFO내의 모든 더블워드가 동시에 비워지거나 또는 PCI 버스 트랜잭션(transation)이 완료될 때까지 계속해서 송출되게 된다.
다음으로, 버스트 사이즈 로직 블럭(208)은 S-버스(16)상의 버스트 전송후 SBUS_AD의 비트2 및 비트3의 증가된 값에 기초하여 다음 BSIZE 신호를 발생한다. S-버스(16)상의 4개 데이타 페이즈의 버스트 전송 후, 이 값은 다시 "0"이 되어 다시 S-버스(16)상의 최적의 버스트 전송을 허용하게 된다. 이것은 버스트 전송이 완료되어 FIFO_FLUSH가 더 이상 발생되지 않을 때까지 계속된다.
대조적으로, 버스트 기입 전송은 SBUS_AD[3 : 2]이 "1"의 값을 갖는 어드레스에 시작할 수도 있다. 이러한 상황에서는 S-버스(16)의 제한 때문에 버스트 사이즈 로직 블럭(208)은 PCI 버스(22)로 부터의 버스트 전송을 S-버스(16)상의 단일의 데이타 전송과 다수의 버스트 전송으로 나눈다. 그러나, 이렇게 하면 이전의 실시예보다 데이타 전송이 더 느려지게 되며, 버스트 사이즈 로직 블럭(208)은 S-버스(16)의 최대 버스트 용량을 사용하여 가능한 한 빨리 전송을 성취한다.
이 때, FIFO_FLUSH가 수신되면 모든 DWORD_FULL 신호가 하이인 것으로 가정하였을 때, BSIZE 값이 1이 되므로, "1" 값으로 종료하는 어드레스의 단일의 데이타 전송이 발생하게 된다. 이러한 데이타 전송 후 이 어드레스는 앞서 설명된 바와 같이 가산기(210)에 의해 1만큼 증가되며, 따라서, SBUS_AD의 비트2 및 비트3의 다음 값은 "10"가 될 것이다. 따라서, BSIZE는 2가 되어 S-버스(16)상의 2개 더블워드의 버스트 전송이 수행된다. 이전의 두 더블워드 버스트 전송으로 인해 어드레스는 2회 더 증가되며, 따라서, SBUS_AD[3 : 2]의 새로운 값은 "0"가 된다. 이제 버스트 사이즈 로직 블럭(208)은 이전의 실시예에서 설명된 바와 같이, PCI 마스터에 의해 데이타 전송이 완료될 때까지 BSIZE로 최대 값을 허용하게 된다.
버스트 사이즈 로직 블럭(208)은 시스템 버스 슬레이브로부터 데이타를 판독 프리페치하는데 있어 시스템 버스 슬레이브로의 버스트 기입 동작에 대해 수행했던 것과 실질적으로 동일한 방법으로 동작한다. 차이점은 DWORD_FULL 대신에 DWORD_EMPTY가 사용되고, FIFO-FLUSH 대신에 READ_PFTCH가 사용되며 표1 대신에 표2가 사용된다는 것이다.
이상 다중 버스 정보 처리 시스템에서 S-버스와 주변장치 버르간의 데이타 전송을 최적화하는 버스간 브릿지의 바람직한 실시예게 설명되었다. 그러나, 이상의 설명은 실시예일 뿐, 본 발명은 본 발명에서 설명된 특정의 실시예에 국한되지 않으며, 특히 청구 범위에 기재된 본 발명의 진정한 범주로부터 벗어나지 않고 다양한 재구성, 변경 및 대체가 가능함을 이해해야 한다.
본 발명에 따르면, 다중 버스 컴퓨터 시스템에서 CPU 시스템 버스와, PCI 버스 아키텍처 또는 이 PCI 버스 아키텍처와 유사한 특정의 프로토콜을 갖는 버스 아키텍처를 사용하는 버스를 상호접속함은 물론, 이들 상호접속된 버스간의 데이타 전송 효율을 최대화하는 브릿지가 제공된다.

Claims (12)

  1. (i) 슬레이브 메모리 장치(a slave memory device)가 접속되는 시스템 버스(a system bus)와, (ii) 상기 시스템 버스를 마스터 주변장치(a master peripheral device)가 접속되는 주변장치 버스(a peripheral bus)에 접속하는 호스트 브릿지(a host bridge)를 포함하는 컴퓨터 시스템용 정보 처리 시스템-상지 주변 장치 버스는 주변장치 구성요소 상호접속(Peripheral Component Interconnect; PCI) 버스 아키텍처(bus architecture)를 따르고, 상기 마스터 주변장치는 상기 호스트 브릿지를 통한 상기 슬레이브 메모리 장치내에 저장된 판독 데이타(read data)의 판독 장치(read operations) 및 상기 호스트 브릿지를 통한 상기 슬레이브 메모리 장치에 기입될 기입 데이타(write data)의 기입 동작(write operations)을 개시하도록 상기 주변장치 버스를 제어할 수 있음-에 있어서,
    ① 상기 판독 데이타 및 상기 기입 데이타를 일시적으로 저장하는 상기 호스트 브릿지내의 버퍼 저장장치(buffer storage)와,
    ② 상기 버퍼 저장장치와 상기 시스템 버스간의 시스템 버스 인터페이스(a system bus interface)와,
    ③ 상기 버퍼 저장장치와 상기 주변장치 버스간의 주변장치 버스 인터페이스(a peripheral bus interface)-상기 주변장치 버스 인터페이스는 단일의 데이타 전송(a single transfer)중에 (i) 상기 버퍼 저장장치가 채워지지 않았을 때, 상기 버퍼 저장장치가 기입 동작동안 상기 마스터 주변장치로부터 데이타를 받아들일 수 있음을 표시하거나 판독 동작동안 상기 마스터 주변장치로 데이타를 전송하기 위해 상기 마스터 주변장치에 의해 검출되도록 목표 준비완료 신호(a target ready signal)를 송출하며, (ii) 상기 버퍼 저장장치가 채워졌을 때, 상기 버퍼 저장장치내로 및 상기 버퍼 저장장치로부터 데이타를 전송하는 것을 일시 중지하고 상기 버퍼 저장장치가 기입 동작동안 상기 마스터 주변장치로부터 데이타를 받아들일 수 없음을 표시하거나 판독 동작동안 상기 마스터 주변장치로 데이타를 전송하기 위해 상기 마스터 주변장치에 의해 검출되도록 상기 목표 준비완료 신호를 송출해제하되, 상기 마스터 주변장치는 상기 단일의 데이타 전송중에 상기 목표 준비완료 신호가 송출되거나 송출해제되는 동안에도 상기 주변장치 버스의 제어를 유지함-를 포함하는 정보 처리 시스템.
  2. 제1항에 있어서, 상기 버퍼 저장장치는 16바이트(128비트)의 판독 또는 기입 데이타를 일시적으로 저장할 수 있는 정보 처리 시스템.
  3. 제2항에 있어서, 상기 버퍼 저장장치는 4개의 더블워드 데이타(four double words of data)를 저장하며, 상기 각 더블워드는 4 바이트(32비트)의 데이타를 포함하는 정보 처리 시스템.
  4. 제1항에 있어서, 상기 마스터 주변장치는 기입 동작의 초기동안 상기 호스트 브릿지로 시스템 버스 목표 어드레스(a system bus target address)를 구동하는 정보 처리 시스템.
  5. 제1항에 있어서, 상기 마스터 주변장치에 의해 개시된 기입 동작동안 상기 호스트 브릿지로부터 상기 슬레이브 메모리 장치로 최대 16 바이트(128비트)의 기입 데이타가 기입될 수 있는 정보 처리 시스템.
  6. 제1항에 있어서, 상기 단일의 데이타 전송은 순차적인 버스트 데이타 전송(a sequential burst data transfer)이며, 하나의 어드레스 페이즈(an address phase)동안 하나의 어드레스가 제공된 후 몇 개의 데이타 페이즈가 발생하는 정보 처리 시스템.
  7. (a) 슬레이브 메모리 장치가 접속되는 시스템 버스와, (b) 상기 시스템 버스를 마스터 주변장치가 접속된 주변장치 버스에 접속하는 호스트 브릿지를 포함하는 컴퓨터 시스템(a computer system)-상기 주변장치 버스는 PCI 버스 아키텍처를 따름-에서 데이타 전송을 관리하는 방법(a method of managing data transfers)에 있어서,
    ① 상기 마스터 주변장치가 상기 호스트 브릿지를 통해 상기 슬레이브 메모리 장치내에 저장된 판독 데이타의 판독 동작 및 상기 호스트 브릿지를 통한 상기 슬레이브 메모리 장치에 기입되는 기입 데이타의 기입 동작을 개시하도록 상기 주변장치 버스를 제어하는 단계와,
    ② 상기 판독 데이타 및 상기 기입 데이타를 상기 호스트 브릿지내의 버퍼 저장장치내에 일시적으로 저장하는 단계와,
    ③ 상기 판독 및 기입 데이타의 단일의 데이타 전송중에, ㉠ 상기 버퍼 저장 장치가 채워지지 않았을 때, 상기 버퍼 저장장치가 기입 동작동안 상기 마스터 주변장치로부터 데이타를 받아들일 수 있음을 표시하거나 판독 동작동안 상기 마스터 주변장치로 데이타를 전송하기 위해 상기 마스터 주변장치에 의해 검출되도록 목표 준비완료 신호를 송출하며, ㉡ 상기 버퍼 저장장치가 채워졌을 때 상기 버퍼 저장 장치로의 데이타 전송 및 상기 버퍼 저장장치로 부터의 데이타 전송을 일시중지하고 상기 버퍼 저장장치가 기입 동작동안 상기 마스터 주변장치로부터 데이타를 받아들일 수 없음을 표시하거나 판독 동작동안 상기 마스터 주변 장치로 데이타를 전송하기 위해 상기 마스터 주변장치에 의해 검출되도록 상기 목표 준비완료 신호를 송출해제하는 단계와,
    ④ 상기 목표 준비완료 신호가 송출되었느냐 송추해제되었느냐에 관계없이 상기 마스터 주변장치가 상기 주변장치 버스의 버스의 제어를 유지하는 단계를 포함하는 데이타 전송 관리 방법.
  8. 제7항에 있어서, 상기 호스트 브릿지내 상기 버퍼 저장장치내에 상기 판독 데이타 및 상기 기입 데이타를 일시적으로 저장하는 단계는 16 바이트(128비트)의 판독 또는 기입 데이타를 일시적으로 저장하는 것을 포함하는 방법.
  9. 제8항에 있어서, 상기 버퍼 저장장치는 4개의 더블워드 데이타를 저장하며, 상기 각 더블워드는 4 바이트(32비트)의 데이타를 포함하는 방법.
  10. 제7항에 있어서, 상기 기입 동작의 초기동안 상기 마스터 주변장치가 상기 호스트 브릿지로 시스템 버스 목표 어드레스를 구동하는 단계를 더 포함하는 방법.
  11. 제7항에 있어서, 상기 마스터 주변장치에 의해 개시된 기입 동작동안 상기 호스트 브릿지로부터 상기 슬레이브 메모리 장치로 최대 16 바이트(128비트)의 기입 데이타가 기입되는 방법.
  12. 제7항에 있어서, 상기 단일의 데이타 전송은 순차의 버스트 데이타 전송이며, 하나의 어드레스 페이즈동안 하나의 어드레스가 제공된 후 몇 개의 데이타 페이즈가 발생하는 방법.
KR1019970011760A 1993-05-28 1997-03-31 컴퓨터 시스템용 정보 처리 시스템 및 컴퓨터 시스템내의 데이타 전송 관리 방법 KR970011888B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/068,877 1993-05-28
US08/068,877 US5522050A (en) 1993-05-28 1993-05-28 Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
KR94011538A KR970008193B1 (en) 1993-05-28 1994-05-26 Bus-to-bus bridge for optimizing data transfers between a system bus and a peripheral bus

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR94011538A Division KR970008193B1 (en) 1993-05-28 1994-05-26 Bus-to-bus bridge for optimizing data transfers between a system bus and a peripheral bus

Publications (1)

Publication Number Publication Date
KR970011888B1 true KR970011888B1 (ko) 1997-07-18

Family

ID=26630397

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1019970011760A KR970011888B1 (ko) 1993-05-28 1997-03-31 컴퓨터 시스템용 정보 처리 시스템 및 컴퓨터 시스템내의 데이타 전송 관리 방법
KR1019970011761A KR100218625B1 (ko) 1993-05-28 1997-03-31 정보 처리 시스템 및 그의 데이타 전송 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1019970011761A KR100218625B1 (ko) 1993-05-28 1997-03-31 정보 처리 시스템 및 그의 데이타 전송 방법

Country Status (1)

Country Link
KR (2) KR970011888B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002037293A1 (en) * 2000-10-25 2002-05-10 Inode Technology Inc. Addressing system for use in storage devices
CN113590520B (zh) * 2021-06-15 2024-05-03 珠海一微半导体股份有限公司 Spi系统自动写入数据的控制方法及spi系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100394246B1 (ko) * 2000-08-29 2003-08-09 바이코시스템 주식회사 자동제어용 디지탈 신호처리장치 및 그 인터페이스 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002037293A1 (en) * 2000-10-25 2002-05-10 Inode Technology Inc. Addressing system for use in storage devices
CN113590520B (zh) * 2021-06-15 2024-05-03 珠海一微半导体股份有限公司 Spi系统自动写入数据的控制方法及spi系统

Also Published As

Publication number Publication date
KR100218625B1 (ko) 1999-09-01

Similar Documents

Publication Publication Date Title
US5564026A (en) Bus-to-bus pacing logic for improving information transfers in a multi-bus information handling system
JP2571673B2 (ja) 多重化バスを有する情報処理システムでバック・ツー・バック・データ転送を提供する方法および装置
US5265211A (en) Arbitration control logic for computer system having dual bus architecture
KR970000842B1 (ko) 정보 처리 시스템 및 컴퓨터 시스템
US5644729A (en) Bidirectional data buffer for a bus-to-bus interface unit in a computer system
US5919254A (en) Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple processing system
US5550989A (en) Bridge circuit that can eliminate invalid data during information transfer between buses of different bitwidths
EP0550224A1 (en) Bus control logic for computer system having dual bus architecture
US5859990A (en) System for transferring data segments from a first storage device to a second storage device using an alignment stage including even and odd temporary devices
US5269005A (en) Method and apparatus for transferring data within a computer system
JPH06124261A (ja) コンピュータ・データ経路指定装置
WO1999036858A1 (en) Data transferring in source-synchronous and common clock protocols
US5416907A (en) Method and apparatus for transferring data processing data transfer sizes
US5809549A (en) Burst SRAMs for use with a high speed clock
US6266723B1 (en) Method and system for optimizing of peripheral component interconnect PCI bus transfers
US6085261A (en) Method and apparatus for burst protocol in a data processing system
US5809260A (en) Burst mode data transmission retry of previously aborted block transfer of data
KR970011888B1 (ko) 컴퓨터 시스템용 정보 처리 시스템 및 컴퓨터 시스템내의 데이타 전송 관리 방법
US6327636B1 (en) Ordering for pipelined read transfers
US6910093B2 (en) Method of pacing and disconnecting transfers on a source strobed bus
US6240474B1 (en) Pipelined read transfers
US5944808A (en) Partial parity correction logic
US5671372A (en) Data processing system with microprocessor/cache chip set directly coupled to memory bus of narrower data width
EP0533428B1 (en) Method and apparatus for operating a computer system
EP0609083A1 (en) Information transfer in a data processing system

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120927

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20130926

Year of fee payment: 17

EXPY Expiration of term