KR20040054721A - 컴퓨터 시스템의 입력/출력 노드에서 태깅 및 중재 매카니즘 - Google Patents

컴퓨터 시스템의 입력/출력 노드에서 태깅 및 중재 매카니즘 Download PDF

Info

Publication number
KR20040054721A
KR20040054721A KR10-2004-7005559A KR20047005559A KR20040054721A KR 20040054721 A KR20040054721 A KR 20040054721A KR 20047005559 A KR20047005559 A KR 20047005559A KR 20040054721 A KR20040054721 A KR 20040054721A
Authority
KR
South Korea
Prior art keywords
tag
channel
transaction
circuit
tagging
Prior art date
Application number
KR10-2004-7005559A
Other languages
English (en)
Other versions
KR100905802B1 (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 KR20040054721A publication Critical patent/KR20040054721A/ko
Application granted granted Critical
Publication of KR100905802B1 publication Critical patent/KR100905802B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure

Abstract

컴퓨터 시스템의 입력/출력 노드에서의 태깅 및 중재 매카니즘이 개시된다. 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하기 위한 매카니즘은 복수의 제어 명령을 수신하도록 구성된 태그 회로(510)를 포함한다. 상기 태그 회로는 또한 각각의 제어 명령에 대한 태그값을 발생하도록 구성될 수도 있다. 상기 태깅 매카니즘은 또한 상기 태그 회로에 결합되는 버퍼 회로(505)를 포함할 수도 있다. 상기 버퍼 회로는 선택된 제어 명령을 저장하기 위한 복수의 가상 채널의 각각의 가상 채널에 각각 대응하고 상기 각각의 가상 채널에 속하는 복수의 버퍼를 포함할 수도 있다. 또한 상기 태깅 매카니즘은 상기 버퍼 회로에 결합되고 각각의 제어 명령에 대한 태그값에 따라 상기 복수의 버퍼 간에서 중재를 행하도록 구성되는 중재 회로(520)를 포함할 수도 있다.

Description

컴퓨터 시스템의 입력/출력 노드에서 태깅 및 중재 매카니즘{TAGGING AND ARBITRATION MECHANISM IN AN INPUT/OUTPUT NODE OF COMPUTER SYSTEM}
전형적인 컴퓨터 시스템에서, 하나 이상의 프로세서는 하나 이상의 버스를 통하여 입력/출력(I/O) 디바이스와 통신할 수도 있다. 상기 I/O 디바이스는 I/O 브리지를 통하여 상기 프로세서에 결합될 수도 있으며, 상기 I/O 브리지는 상기 I/O 디바이스에 결합된 주변장치 버스와 상기 프로세서에 결합된 공유 버스 간의 정보의 수송을 관리한다. 게다가, 상기 I/O 브리지는 시스템 메모리와 상기 I/O 디바이스 또는 시스템 메모리와 상기 프로세서 간의 정보의 수송을 관리할 수도 있다.
불운하게도, 많은 버스 시스템이 여러가지 결점을 겪고 있다. 예를 들어, 버스에 부착된 다양한 디바이스들은 상기 버스 상의 신호들을 구동하는 디바이스들에 비교적 큰 전기적 캐패시턴스를 제공할 수도 있다. 게다가, 공유 버스 상의 다수의 부착 포인트들은 높은 신호 주파수에서 신호 반사를 일으켜 신호의 무결성을 저하시킨다. 결과적으로, 상기 버스 상의 신호 주파수는 일반적으로 허용가능한 레벨로 신호 무결정을 유지하도록 비교적 낮게 유지된다. 상기 비교적 낮은 신호 주파수는신호 대역폭을 감소시켜, 상기 버스에 부착된 디바이스의 성능을 제한한다.
대다수의 디바이스에 대한 스케일능력(scalability)의 결핍은 공유 버스 시스템의 또다른 단점이다. 공유 버스의 이용가능한 대역폭은 실질적으로 고정되어, 부가적인 디바이스 추가가 상기 버스 상의 신호 주파수의 감소를 야기하는 경우, 상기 버스에서의 상기 대역폭이 감소할 수 있다. 일단 상기 버스에 부착된 디바이스의 대역폭 요건이 상기 버스의 이용가능한 대역폭을 초과하면, 상기 버스에 억세스를 시도할 때 디바이스가 빈번히 정체되어, 상기 공유 버스를 포함하는 컴퓨터 시스템의 전체 성능이 대부분 저하되게 될 것이다. I/O 디바이스에 의해 사용되는 공유 버스의 한 예는 PCI(peripheral component interconnect) 버스이다.
많은 I/O 브리지 디바이스는 버퍼링 매카니즘을 사용하여 PCI 버스로 부터 최종 목적지 버스로 다수의 계류중인 트랜잭션을 버퍼링한다. 일련의 트랜잭션이 큐(queue)에서 버퍼링되고 목적지 버스로 전송 대기할 때, 정체(stall)가 야기될 수도 있으며, 상기 목적지 버스 상에 정체가 발생하면, 순차적인 프로세스를 중단시킬 수 있다. 그러면, 이들 대기중인 트랜잭션을 완료시킬 트랜잭션이 상기 큐에 도착되어 다른 트랜잭션 뒤에 저장된다. 정체를 차단하기 위해선, 상기 큐의 상기 트랜잭션들은 새로 도착된 트랜잭션이 상기 계류중인 트랜잭션에 앞서 전송되게 하도록 재배열되어여만 한다. 따라서, 상기와 같은 시나리오를 방지하기 위해, 상기 PCI 버스 사양서는 PCI 버스 트랜잭션의 처리 및 순서화를 조절하는 한 세트의 재배열 룰을 규정한다.
공유 버스의 일부 결점을 극복하기 위해, 일부 컴퓨터 시스템들은 디바이스들 또는 노드들 간에 패킷-기반 통신(packet-based communication)을 사용할 수도 있다. 이러한 시스템에서, 노드들은 정보의 패킷을 교환하므로써 서로 통신할 수도 있다. 일반적으로, "노드"는 상호접속하에서 트랜잭션에 참여할 수 있는 디바이스이다. 예를 들어, 상기 상호접속은 패킷-기반일 수 있고 상기 노드는 패킷을 수신 및 전송하도록 구성할 수 있다. 일반적으로 말하면, "패킷"은 2개의 노드-상기 패킷을 전송하는 발신 노드 즉, "소스" 노드와 그리고 상기 패킷을 수신하는 목적지 노드 즉, "타겟" 노드-간의 통신이다. 패킷이 타겟 노드에 도달하면, 이 타겟 노드는 상기 패킷에 의해 운반된 정보를 받아들여 내부에서 처리한다. 소스와 타겟 노드 간의 통신 경로에 위치된 노드는 상기 소스 노드로 부터 상기 타겟 노드로 패킷을 변환 또는 전송할 수도 있다.
또한, 패킷-기반 통신과 버스-기반 통신의 조합을 사용하는 시스템이 있다. 예를 들어, 시스템은 PCI 버스 및 AGP와 같은 그래픽 버스에 접속될 수도 있다. 상기 PCI 버스가 패킷 버스 인터페이스에 접속되어, 패킷 버스를 통한 전송을 위해 PCI 버스 트랜잭션을 패킷 트랜잭션으로 변환할 수 있다. 마찬가지로, 상기 그래픽 버스가 AGP 인터페이스에 접속되어, AGP 트랜잭션을 패킷 트랜잭션으로 변환할 수 있다. 각 인터페이스는 상기 프로세서중 한 프로세서와 관련된 호스트 브리지와, 그리고 일부의 경우엔 다른 주변장치 디바이스와 통신할 수도 있다.
PCI 디바이스가 상기 트랜잭션을 시작하면, 상기 패킷-기반 트랜잭션은 PCI Local Bus 사양서에 제시된 바와같은 동일한 순서화 룰에 의해 강제될 수도 있다. 상기 동일한 순서화 룰은 상기 PCI 버스용으로 예정된 패킷 트랜잭션도 적용된다.패킷 버스 인터페이스에서 발생할 수도 있는 트랜잭션 정체가 상기 패킷 버스 인터페이스에서 교착 상태를 야기시킬 수도 있기 때문에, 이들 순서화 룰은 여전히 준수된다. 상기 교착 상태는 상기 패킷 버스 구성내로 또다른 정체을 야기할 수도 있다. 게다가, AGP 트랜잭션은 데이타의 적절한 전송이 보장되도록 한 세트의 트랜잭션 순서화 룰을 따른다.
상기 I/O 노드의 구성에 따라, 트랜잭션은 호스트 브리지로의 방향이나 또는 상기 호스트 브리지로 부터 멀어지는 방향중 어느 한 방향으로 한 노드를 통하여 다른 노드로 전송될 수도 있다. 대안으로, 트랜잭션은 특정한 노드에서 패킷 트래픽내로 유입될 수도 있다. 그 어떤 시나리오에서도, 트랜잭션이 통신 경로을 따라 전송될 시에 상기 트랜잭션을 제어할 수도 있는 I/O 노드 구성이 요구된다.
본 발명은 컴퓨터 시스템 입력/출력(I/O)에 관한 것으로서, 특히 I/O 노드에서의 트랜잭션(transaction) 처리에 관한 것이다.
도 1은 컴퓨터 시스템의 한 실시예의 블럭도.
도 2는 I/O 노드의 한 실시예의 블럭도.
도 3은 트랜잭션 제어 회로의 한 실시예의 블럭도.
도 4는 스케쥴러의 한 실시예의 블럭도.
도 5는 태깅 논리를 포함하는 스케쥴러의 한 실시예의 블럭도.
도 6은 스터베이션(starvation) 회피 논리를 포함하는 트랜잭션 스케쥴러의 한 실시예의 블럭도.
도 7은 공정성(fairness) 회로의 한 실시예의 블럭도.
비록 본 발명은 다양한 변경 및 대체의 형태를 꾀할수 있지만, 본 명세서에서는 본 발명의 특정 실시예만을 도면에 예로서 도시하였고 이하 상세히 설명할 것이다. 그러나, 본 발명에 대한 도면 및 상세한 설명은 본 발명을 기술된 특정 형태로만 제한하고자 의도된 것이 아니며, 본 발명은 첨부된 청구 범위에 의해 정의된 바와같이 본 발명의 정신 및 범위내에 속하는 모든 변경물, 등가물 및 대체물을 포괄하도록 의도된 것이다.
컴퓨터 시스템의 입력/출력 노드에서 태깅 및 중재 매카니즘의 다양한 실시예가 설명된다. 한 실시예에서, 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하기 위한 매카니즘은 복수의 제어 명령을 수신하도록 구성된 태그 회로를 포함한다. 상기 태그 회로는 또한 상기 제어 명령 각각에 대한 태그값을 발생하도록 구성될 수도 있다. 상기 태깅 매카니즘은 또한 상기 태그 회로에 결합되는 버퍼 회로를 포함할 수도 있다. 상기 버퍼 회로는 복수의 버퍼를 포함하는데, 이들 버퍼 각각은 복수의 가상 채널의 각각의 가상 채널에 대응하며 상기 각각의 가상 채널에 속하는 선택된 제어 명령을 저장한다. 또한 상기 태깅 매카니즘은, 상기 버퍼 회로에 결합되고 각각의 제어 명령에 대한 태그값에 따라 상기 복수의 버퍼 간에 중재를 행하도록 구성되는 중재 회로를 포함할 수도 있다.
한 특정한 실시예에서, 각각의 상기 제어 명령에 대한 태그값은 다른 제어 명령에 관하여 각 제어 명령의 태그 회로에 의한 수신 순서를 나타내는 값이다. 상기 복수의 가상 채널은 공시 채널(posted channel), 비-공시 채널(non-posted channel) 및 응답 채널(response channel)을 포함한다. 상기 태그 회로는 응답 채널과 관련된 카운터의 현재의 값 및 상기 비-공시 채널과 관련된 카운터의 현재의 값을 사용하여 각각의 상기 제어 명령에 대한 태그값을 발생시키도록 구성될 수도 있다.
또다른 실시예에서, 상기 태그 회로는 상기 응답 채널과 관련된 카운터의 현재의 값에 대응하는 태그값을 상기 응답 채널과 관련된 상기 제어 명령 각각에 할당하도록 구성될 수도 있다. 상기 태그 회로는 또한 상기 비-공시 채널과 관련된 카운터의 현재의 값에 대응하는 태그값을 상기 비-공시 채널과 관련된 상기 제어 명령 각각에 할당하도록 구성될 수도 있다. 상기 태그 회로는 또한 상기 응답 채널과 관련된 카운터의 현재의 값에 대응하는 태그값과 그리고 상기 비-공시 채널과 관련된 카운터의 현재의 값에 대응하는 태그값을, 상기 비-공시 채널과 관련된 각각의 상기 제어 명령에 할당하도록 구성될 수도 있다. 상기 태그 회로는 또한 상기 비-공시 채널 및 응답 채널과 각기 관련된 제어 명령 다음에 오는 상기 공시 채널과 관련된 제어 명령을 수신하는 상기 태그 회로에 응답하여, 각각의 상기 비-공시 채널 및 응답 채널과 관련된 카운터를 증분시키도록 구성될 수도 있다.
또다른 실시예에서, 중재 회로는 상기 공시 채널 및 상기 비-공시 채널에 대응하는 버퍼들에 저장된 제어명령들에 할당된 태그값들을 비교하여 그 태그값들이 동일한 지를 결정하도록 구성될 수도 있다. 상기 중재 회로는 또한 태그값들 동일함에 응답하여 상기 공시 채널에 대응하는 버퍼에 저장된 제어 명령을 처리하고, 태그값들이 동일하지 않음에 응답하여 상기 비-공시 채널에 대응하는 버퍼에 저장된 제어 명령을 처리하도록 구성될 수도 있다.
또다른 실시예에서, 상기 중재 회로는 상기 공시 채널 및 상기 응답 채널에 대응하는 버퍼들에 저장된 제어명령들에 할당된 태그값들을 비교하여 그 태그값이 동일한 지를 결정하도록 구성될 수도 있다. 상기 중재 회로는 또한 태그값들이 동일함에 응답하여 상기 공시 채널에 대응하는 버퍼에 저장된 제어 명령을 처리하고, 태그값들이 동일하지 않음에 응답하여 상기 응답 채널에 대응하는 버퍼에 저장된 제어 명령을 처리하도록 구성될 수도 있다.
도 1을 참조하면, 컴퓨터 시스템의 한 실시예의 블럭도가 도시되었다. 상기 컴퓨터 시스템은 코히어런트(coherent) 패킷 버스에 의해 각각 상호접속된 프로세서(10A-10D)를 포함한다. 코히러런트 패킷 버스의 각 섹션은 각각의 프로세서(10A 내지 10D) 간에 포이트-대-포인트 링크를 형성할 수도 있다. 비록 4개의 프로세서가 포인트-대-포인트 링크를 사용하는 것으로 도시되었지만, 다른 갯수의 프로세서가 사용될 수도 있고 다른 형태의 버스가 이들 프로세서를 상호접속할 수도 있다. 상기 컴퓨터 시스템은 또한 각기 I/O 패킷 버스(50B 및 50C)에 의해 체인으로 함께 각각 접속된 3개의 I/O 노드(20, 30, 40)를 포함한다. I/O 패킷 버스(50A)는 호스트 노드/프로세서(10A)와 I/O 노드(20)간에 결합된다. 프로세서(10A)는 I/O 패킷 버스(50A)와 통신하기 위한 호스트 브리지를 포함할 수도 있는 호스트 노드로서 묘사된다. 프로세서(10B 내지 10D)는 또한 다른 I/O 패킷 버스(도시되지 않음)와 통신하기 위한 호스트 브리지를 포함할 수도 있다. I/O 패킷 버스(50A 내지 50C)에 의해 형성된 통신 링크는 또한 포이트-대-포인트 링크라고 불릴 수도 있다. I/O 노드(20)는 한쌍의 주변장치 버스(25A 내지 25B)에 접속된다. I/O 노드(30)가 그래픽 버스(35)에 결합되며, I/O 노드(40)는 추가의 주변장치 버스(45)에 접속된다.
프로세서(10A 내지 10D)는 각각 예를 들어 AthlonTM마이크로프로세서와 같은 x86 마이크로프로세서로 될수 있다. 게다가, I/O 패킷 버스(50A 내지 50C)와 같은 패킷 버스의 한 예는 비-코히어런트 HyperTransportTM일 수도 있다. 주변장치 버스(25A 내지 25B) 및 주변장치 버스(45)는 주변기기 접속(PCI) 버스와 같은 공통 주변장치 버스로 될수 있다. 그래픽 버스(35)는 예를 들어, 가속 그래픽 포트(AGP)로 될수 있다. 그러나, 다른 형태의 마이크로프로세서 및 다른 형태의 주변장치 버스가 사용될 수도 있다는 것은 말할 나위도 없다.
비록 3개의 I/O 노드가 호스트 프로세서(10A)에 접속된 것으로 도시되었지만, 다른 실시예는 다른 갯수의 노드를 가질 수도 있고 이들 노드는 다른 토폴로지(topology)로 접속될 수도 있다. 도 1의 체인 토폴로지는 이해를 용이하게 하기 위해 도시한 것이다.
본 실시예에서, 프로세서(10A)의 호스트 브리지는 I/O 노드(20, 30 또는 40)와 같은 다운스트림 노드에서 업스트림 패킷 트랜잭션을 수신할 수도 있다. 대안으로, 상기 프로세서(10A)의 호스트 브리지는 예를 들어 주변장치 버스(25A)에 접속될 수도 있는 주변장치 디바이스(도시되지 않음)와 같은 디바이스로 다운스트림 패킷을 전송할 수도 있다.
동작 동안, I/O 노드(20 및 40)는 PCI 버스 트랜잭션을 I/O 스트림에서 이동하는 업스트림 트랜잭션으로 변환할 수도 있고, 또한 다운스트림 패킷 트랜잭션을 PCI 버스 트랜잭션으로 변환할 수도 있다. 프로세서(10A)의 호스트 브리지가 아닌 다른 노드들에서 발원하는 모든 패킷은 임의의 다른 노드로 전송되기 전에 프로세서(10A)의 호스트 브리지로 업스트림으로 흐를 수도 있다. 프로세서(10A)의 호스트 브리지에서 발원되는 모든 패킷은 I/O 노드(20, 30 또는 40)와 같은 다른 노드로 다운스트림으로 흐를 수도 있다. 본원에 사용된 용어 "업스트림"은 프로세서(10A)의 호스트 브리지 방향으로의 패킷 트래픽 흐름이라 언급되고 "다운스트림"은 프로세서(10A)의 호스트 브리지로 부터 멀어지는 방향으로의 패킷 트래픽 흐름이라 언급된다. 각각의 I/O 스트림은 Unit ID라 불리는 식별자에 의해 식별될 수도 있다. 상기 Unit ID 는 패킷 헤더의 일부이거나 패킷 또는 패킷들에서의 일부의 다른 지정된 수의 비트일 수도 있다. 본 원에 사용된 용어 "I/O 스트림"은 동일한 Unit ID를 포함하고 그러므로써 동일한 노드로 부터 발원된 모든 패킷 트랜잭션이라 언급된다.
주변장치 버스(45) 상의 주변장치 디바이스는 주변장치 버스(25)의 주변장치 디바이스로 향하는 트랜잭션을 시작한다. 상기 트랜잭션은 먼저 유일한 Unit ID를 가진 하나 이상의 패킷으로 변환되고 그 후 업스트림으로 전송될 수도 있다. 각 패킷은 상기 패킷을 식별하는 특정 정보로 엔코드될 수도 있다는 것을 유념할 필요가 있다. 예를 들어, 상기 Unit ID는 패킷 헤더내로 엔코드될 수도 있다. 게다가, 트랜잭션의 형태 역시 상기 패킷 헤더 내로 엔코드될 수도 있다. 각 패킷에는 발원 노드를 식별하는 Unit ID가 할당될 수도 있다. I/O 노드(20)가 다운스트림에서 주변장치 버스(25) 상의 주변 디바이스로 패킷을 전송하지 않을 수도 있기 때문에, 상기 패킷은 프로세서(10A)의 호스트 브리지로 업스트림으로 전송될 수도 있다. 이어서, 상기 프로세서(10A)의 호스트 브리지는, I/O 노드(20)가 주변장치 버스(25)를 통해 주변장치 디바이스용의 패킷을 인식 및 요구할 때까지, 상기 패킷을 상기 프로세서(10A)의 호스트 브리지의 Unit ID와 함께 역 다운스트림으로 전송할 수도 있다. 이어서, I/O 노드(20)는 상기 패킷을 주변장치 버스 트랜잭션으로 변환하고 상기 트랜잭션을 주변장치 버스(25)를 통해 주변장치 디바이스로 전송할 수도 있다.
패킷 트랜잭션이 업스트림 또는 다운스트림으로 이동함에 따라, 패킷은 하나 이상의 I/O 노드를 통과할 수도 있다. 상기 통과는 때때로 터널이라고 언급되고 상기 I/O 노드는 때때로 터널 디바이스라고 언급된다. 업스트림에서 다운스트림으로 또는 다운스트림에서 업스트림으로 전송된 패킷은 "전송(forwarded)" 트래픽이라 언급된다. 게다가, 특정한 I/O 노드에서 발원하여 업스트림 트래픽내에 삽입되는 패킷 트래픽은 "유입된(injected)" 트래픽이라고 언급된다.
이하 보다 상세히 설명되는 바와같이, I/O 노드에 접속될 수도 있는 다양한 버스의 순서 룰을 보존하기 위해, 상기 I/O 노드는 트래픽 재배열 뿐만아니라 패킷 버퍼링을 제공할 수도 있다. 상기 I/O 노드는 또한 전송 트래픽 및 유입 트래픽 양자에 의해 터널내로 또는 터널 밖으로의 패킷의 흐름을 제어하는 제어 논리를 포함할 수도 있다.
도 2를 참조하면, I/O 노드의 한 실시예의 블럭도가 도시되었다. 상기 I/O노드는 도 1의 I/O 노드(20, 30 또는 40)를 나타내며, 이후 간단히 I/O 노드(20)라고 언급될 것이다. 도 2의 I/O 노드(20)는 명령 버스(111)를 통하여 전송기(140)에 결합되고 명령 버스(112)를 통하여 주변장치 인터페이스(150)에 결합되는 트랜잭션 수신기(110)를 포함한다. I/O 노드(20)는 또한 명령 버스(121)를 통하여 전송기(130)에 결합되고 명령 버스(122)를 통하여 주변장치 인터페이스(150)에 결합되는 트랜잭션 수신기(120)를 포함한다. 주변장치 인터페이스(150)는 또한 명령 버스(151)를 통하여 전송기 (130 및 140)에 결합되고 주변장치 버스(152)에 결합된다. 게다가, I/O 노드(20)는 제어 명령 버스(101)를 통하여 각 수신기와, 각 전송기 및 주변장치 인터페이스에 결합되는 트랜잭션 제어 유닛(100)을 포함한다. 본 원에 사용된 용어, 명령 버스는 명령, 제어 및 데이타 신호들을 포함함을 의미한다. 그러므로, 트랜잭션 또는 명령이 각각의 명령 버스를 통하여 전송되는 것으로 설명될 때, 이 트랜잭션 또는 명령은 명령 및 데이타 비트를 포함함을 의미한다.
상기 실시예에서, 수신기(110) 및 전송기(140)는 상기 I/O 터널의 제 1 통신 경로를 형성하고, 수신기(120) 및 전송기(130)는 상기 I/O 터널의 제 2 통신 경로를 형성한다. 각각의 통신 경로가 단-방향이기 때문에, 각 경로는 업스트림 또는 다운스트림 경로로서 접속될 것이다. 따라서, 주변장치 인터페이스(150)로 부터 유입된 트래픽이 전송기(130 및 140)중 한 전송기에 제공된다.
수신기(110 및 120)는 수신 버퍼(도시되지 않음)내로 패킷 트랜잭션을 각각 수신한다. 각 트랜잭션이 수신되면, 수신된 명령에 포함된 정보의 서브세트를 포함하는 제어 명령이 발생된다. 상기 제어 명령은 예를 들어, 발원 노드의 Unit ID와,목적지 정보, 데이타 카운트 및 트랜잭션 형태를 포함할 수 있다. 상기 제어 명령은 다른 정보를 포함할 수도 있거나 또는 여기에 열거된 정보의 일부를 포함하지 않을 수도 있다는 것을 유념할 필요가 있다. 상기 제어 명령은 트랜잭션 제어 유닛(100)에 전송된다.
주변장치 버스(152)로 부터 트랜잭션을 수신함에 응답하여, 주변장치 인터페이스(150)는 또한 전술된 제어 명령과 유사한 정보를 포함하는 제어 명령을 발생할 수도 있다. 주변장치 인터페이스(150)는 또한 트랜잭션을 하나 이상의 버퍼에 저장하고 상기 제어 명령을 트랜잭션 제어 유닛(100)으로 전송할 수 있다.
트랜잭션 제어 유닛(100)은 자신이 수신하는 각각의 제어 명령을 수신 순선에 따라 하나 이상의 버퍼 구조에 저장할 수도 있다. 그의 버퍼들에 저장하는 제어 명령들에 근거하여, 상기 트랜잭션 제어 유닛(100)은 소스 버퍼들(즉, 수신기 및/또는 주변장치 인터페이스)에 대기하는 대응 명령들이 전송될 순서를 결정할 수도 있다. 도 3 내지 도 6에 관련하여 이하 보다 상세히 설명될 바와같이, 트랜잭션 제어 유닛(100)은, 트랜잭션의 형태, 전송기 및 수신기에 빈 버퍼 공간이 있는 지 여부 또는 트랜잭션이 전송 트래픽 또는 유입 트래픽인 지 여부와 같은 인자들에 근거하여, 그의 버퍼들 내의 트랜잭션들 간을 중재할 수도 있다. 따라서, 상기 트랜잭션 제어 유닛(100)은 I/O 노드의 터널을 통한 트랜잭션들의 전체 흐름을 관리 할 수 있다.
일단 어떤 트랜잭션이 처리될 지를 중재하게 되면, 트랜잭션 제어 유닛(100)은 각각의 소스 디바아스로 하여금 계류중인 트랜잭션을 목적지 디바이스에 전송할것을 지시한다. 예를 들어, 상기 트랜잭션 제어 유닛(100)은 그의 버퍼로 부터 수신기(110)에서 전송기(140)로 전송되어진 트랜잭션를 나타내는 제어 명령을 선택한다. 트랜잭션 제어 유닛(100)은 트랜잭션을 명령 버스(111)를 통하여 전송기(140)로 전송할 것을 수신기(110)에 통지한다. 그 후 전송기(140)는 상기 트랜잭션을 체인에 있는 다음 노드로 전송한다. 상기 다음 노드는 업스트림이나 또는 다운스트림중 하나인 또다른 I/O 노드일 수도 있거나 또는 도 1의 호스트 프로세서(10A)와 같은 호스트 노드일 수도 있다. 게다가, 트랜잭션 제어 유닛(100) 및 전송기(140)는 수신 버퍼에 빈 공간이 있는 지의 여부를 또다른 노드에 표시하는 논리(도시되지 않음)를 포함할 수도 있다.
도 3을 참조하면, 트랜잭션 제어 회로 유닛의 한 실시예의 블럭도가 도시되었다. 도 2에 도시된 것에 대응하는 회로 구성 요소들은 단순성 및 명료성을 위해 동일 참조번호가 붙여진다. 트랜잭션 제어 유닛(100)은 도면부호 160, 170, 180으로 각각 표시된 3개의 스케쥴러를 포함한다. 각각의 스케쥴러(160, 170 및 180)는 한 쌍의 가상 채널 명령 버퍼와, 그리고 중재 및 버퍼 관리 유닛을 포함한다. 스케쥴러(160)의 가상 채널 명령 버퍼들은 V.C. FIFO(166 및 167)로 표기되고, 중재 및 버퍼 관리 유닛은 168의 참조번호가 붙여진다. 마찬가지로, 스케쥴러(170)의 가상 채널 명령 버퍼들은 V.C. FIFO(176 및 177)로 표기되고, 중재 및 버퍼 관리 유닛은 178의 참조번호가 붙여지며, 스케쥴러(180)의 가상 채널 명령 버퍼들은 V.C. FIFO(186 및 187)로 표기되고, 중재 및 버퍼 관리 유닛은 188의 참조번호가 붙여진다.
일반적으로 말하면, "가상 채널"은 다양한 처리 노드 간에 패킷을 운반하는 통신 경로이다. 각 가상 채널은 다른 가상 채널에 독립적인 자원이다(즉, 한 가상 채널에 흐르는 패킷은 물리적 전송 측면에서 또다른 가상 채널내의 패킷의 존재 또는 부재에 의해 영향을 받지 않음). 패킷은 패킷 형태에 따라 가상 채널에 할당된다. 동일한 가상 채널에 있는 패킷들은 서로의 전송과 물리적으로 충돌할 수도 있으나(즉, 동일한 가상 채널에 있는 패킷들은 자원 충돌을 겪을 수도 있음), 상이한 가상 채널에 있는 패킷들의 전송과는 물리적으로 충돌하지 않는다.
특정 패킷들이 다른 패킷들과 논리적으로 충돌할 수도 있다(즉, 프로토콜 이유, 코히어런스 이유 또는 다른 그러한 이유로 인하여, 한 패킷이 또다른 패킷과 논리적으로 충돌할 수도 있다). 만약 논리/프로토콜 이유로 인하여 제 2의 패킷이 그의 목적지 노드에 도착되기 전에, 제 1 패킷이 그의 목적지 노드에 도달해야만 하는 경우, 상기 제 2 패킷이 충돌 자원을 점유하므로써 상기 제 1 패킷의 전송을 물리적으로 차단하면, 컴퓨터 시스템은 교착상태에 빠질수 있다. 상기 제 1 및 제 2 패킷을 개별의 가상채널들에 할당하고, 그리고 개별의 가상 채널들에 있는 패킷들이 서로의 전송을 차단하지 못하도록 상기 컴퓨터 시스템 내에 전송 매체를 구현하므로써, 교착이 없는 동작이 달성될 수도 있다. 상이한 가상 채널로 부터의 패킷들이 동일한 물리적 링크를 통하여 전송됨이 주목된다. 그러나, 수신 버퍼가 전송에 앞서 이용가능하기 때문에, 가상 채널들은 이러한 공유 자원을 사용할 지라도 서로 차단하지 않는다.
한 관점에서, 각각의 상이한 패킷 형태(예를 들어, 각각의 상이한 명령 엔코딩)가 그의 자신의 가상 채널에 할당될 수 있고, 따라서 한 실시예에서 개별 버퍼들이 각 가상 채널에 할당된다. 개별 버퍼들이 각 가상 채널에 대해 사용될 수도 있으므로, 한 가상 채널로 부터의 패킷이 또다른 가상 채널로 부터의 패킷과 물리적으로 충돌하지 않을 수도 있다(이들 패킷들은 다른 버퍼들에 위치될 것이기 때문임).
각 스케쥴러는 하나의 특정 목적지 및 2개의 소스에 대응한다. 실시예에서, 목적지로서 도 2의 전송기(130)와 소스들로서 수신기(120) 및 주변장치 인터페이스/브리지(150)를 가진 스케쥴러(160)가 트랜잭션을 제어한다. 이와 유사하게, 도 3의 스케쥴러(170)는 목적지로서 도 2의 전송기(140) 및 소스들로서 수신기(110) 및 브리지(150)를 가진 도 3의 스케쥴러(170)가 트랜잭션을 제어한다. 마지막으로, 목적지로서 도 2의 전송기 및 소스들로서 수신기(110) 및 수신기(120)를 가진 도 3의 스케쥴러(180)가 트랜잭션을 제어한다. 도 3에서, 각 가상채널 명령 버퍼는 각각의 수신기 또는 브리지로 부터, 상기 각각의 수신기 또는 브리지에 의해 수신된 트랜잭션에 대응하는 제어명령을 수신한다. 제어 명령은 상기 제어 명령이 전송되어질 스케쥴러를 지정하는 목적지 비트를 포함할 수도 있다. 통상, 제어 명령은 단지 하나의 목적지 비트 세트를 가질 것이다. 그러나, 트랜잭션이 방송 메시지인 경우엔, 하나 이상의 목적지 비트가 설정되어, 하나 이상의 스케쥴러가 제어 명령을 수신할 수 있도록 한다.
설명을 간단히 하기 위해, 스케쥴러(160)만이 상세히 설명될 것이다. 제어 명령이 V.C. FIFO(166 또는 167)내로 수신될 시에, 이들 명령은 트랜잭션의 형태에따라 각각의 FIFO 섹션내에 위치된다. V.C. FIFO(166 및 167)이 동일하기 때문에, V.C. FIFO(166)만이 상세히 설명될 것이다. V.C. FIFO(166)는 3가지 형태의 트랜잭션 즉, 공시 트랜잭션, 비-공시 트랜잭션 및 응답 트랜잭션에 대응하는 3개의 개별 FIFO 섹션을 포함한다. 제어 명령들은 이들이 수신되는 순서로 각각의 FIFO내에 위치된다. 그러나, 다양한 버스 또는 원래의 명령을 발생한 디바이스의 형태와 관련된 순서 룰을 유지하기 위해, 상기 트랜잭션은 상이한 형태의 트랜잭션 간의 순서를 벗어나 처리되어질 수도 있다.
도 4 내지 도 6과 관련하여 이하 보다 상세히 설명될 바와같이, 중재기 및 버퍼 관리 논리(168)는 V.C. FIFO(166) 또는 V.C. FIFO(167)의 트랜잭션 간에서 어떤 트랜잭션이 첫번째, 두번째 등으로 처리될 수도 있는 지를 중재하도록 구성될 수도 있다. 예를 들어, 응답 명령 전에 V.C. FIFO(166)에 도착된 공시 명령은 순서 룰로 인해 응답 명령 후에 처리되어져야만 한다. 게다가, 중재기 및 버퍼 관리 논리(168)는 한 세트의 공정성(fairness) 룰과, 그리고 공간이 다음 I/O 노드 또는 호스트 브리지의 수신 버퍼에 공간이 이용가능한 지의 여부에 근거하여 어느 V.C. FIFO에서 트랜잭션이 처리될 수 있는 지를 중재할 수 있다. 만약 목적지가 도 2의 브리지(150)이면, 그 특정 중재는 전술된 중재 룰과는 상이할 수도 있다.
도 4를 참조하면, 스케쥴러의 한 실시예의 블럭도가 도시되었다. 도 3에 도시된 것에 대응하는 회로 구성요소들은 단순성 및 명료성을 위해 동일한 참조번호가 붙여진다. 트랜잭션 스케쥴러(400)는 중재 및 공정성 논리(450)에 접속된 가상 채널 FIFO 버퍼(410)를 포함한다. 트랜잭션 스케쥴러(400)는 또한, 중재 및 공정성논리(450)에 또한 접속된 가상 채널 FIFO 버퍼(420)를 포함한다. 중재 및 공정성 논리(450)가 FIFO 버퍼(460)에 접속되며, 상기 버퍼(460)는 버퍼 관리 논리(470)에 접속된다. 버퍼 관리 논리의 출력이 출력 레지스터(480)에 의해 래치된다.
도 3과 관련하여 전술된 바와같이, 각각의 가상 채널 FIFO 버퍼(410 및 420)는 예를 들어, 도 2의 수신기(110) 또는 브리지(150)와 같은 각각의 소스 입력으로 부터 제어 명령을 수신한다. 이 제어 명령은 상기 제어 명령이 나타내는 트랜잭션의 형태에 의해 가상 채널 FIFO 버퍼(410 및 420)내에 위치될 수도 있다. 특히, 상기 제어 명령은 공시, 비-공시 또는 응답 명령을 나타내며, 따라서 각각의 공시, 비-공시 또는 응답 큐를 나타낸다.
본 실시예에서, 중재 및 공정성 논리(450)는 중재 유닛(430 및 440)과 공정성 유닛(445)을 포함한다. 중재 유닛(430)은 가상 채널 FIFO 버퍼(410)에 저장된 하나의 제어 명령을 선택하도록 구성될 수도 있다. 이하 더 상세히 설명될 바와같이, 선택 프로세스는 소정의 중재 알고리즘에 의해 하나의 위너(winner)를 선택하는 단계를 포함할 수도 있다. 마찬가지로, 중재 유닛(420)은 중재 유닛(430)과 유사한 알고리즘을 사용하므로써, 가상 채널 FIFO 버퍼(420)에 저장된 하나의 제어 명령을 선택하도록 구성될 수도 있다. 그 후 공정성 유닛(445)은 중재 유닛(430 및 440)에 의해 선택된 위닝 트랜잭션중 한 트랜잭션을 선택할 수도 있다. 공정성 유닛(445)은 상기 트랜잭션이 전송되는 지 또는 유입되는 지에 근거하여 공정성 알고리즘을 사용할 수도 있다. 스케쥴러의 목적지에 따라, 중재 유닛(430 및 440)은 또한 다음 I/O 노드의 수신기 버퍼와 같은 대응하는 트랜잭션의 목적지 버퍼내 또는 도 1의 프로세서(10A)의 호스트 브리지내의 버퍼 공간의 트랙을 유지하는 논리(도시되지 않음)를 포함할 수도 있다.
본 실시예에서, 스케쥴러(400)를 통해 제어 명령을 전파하기 위한 3개의 클럭 싸이클의 레이턴시(latency)가 있을수도 있다. 가상 채널 FIFO 버퍼(410 및 420)를 각기 우회하도록 바이패스(415) 및 바이패스(425)가 도시되었다. 스케쥴러(400)가 소스로 부터의 제어 명령을 수신하고 주어진 가상 채널 FIFO 버퍼내의 각 큐가 비어있다면, 가상 채널 FIFO 버퍼를 우회하므로써 클럭 싸이클을 절감할 수 있는 기회가 있을 수 있다. 예를 들어, 비-공시 제어 명령이 현재 비어있는 가상 채널 FIFO 버퍼(410)에서 수신된다. 중재 유닛(430)내의 논리는 비-공시된 제어 명령이 가상 채널 FIFO 버퍼(410)를 우회하게할 수도 있고, 중재 유닛(430)이 만약 트랜잭션의 목적지 버퍼에서 이용가능한 버퍼 공간이 있음을 표시하면, FIFO 버퍼(460)에 바로 위치될 수도 있다. 게다가, 공정성 유닛(455)은 전술된 바와같은 공정성 알고리즘에 따라 우회를 허여할 수도 있다. 따라서, 상기 예에서, 한 클럭 싸이클의 레이턴시 감소가 실현될 수도 있다. 비록 상기 실시예는 3개의 클럭 싸이클 레이턴시를 갖는 것으로 도시되었지만은, 다른 실시예가 더 적거나 또는 더 많은 클럭 싸이클 레이턴시를 가질 수도 있음이 주목된다. 게다가, 바이패스(415 및 425)에 의해 실현된 실제 레이턴시 감소는 보다 크거나 또는 보다 적을 수도 있다.
도 4의 FIFO 버퍼(460)는 위닝 제어 명령을 수신한다. 본 실시예에서, FIFO 버퍼(460)는 2개의 딥 버퍼이나, 다른 실시예에서, FIFO 버퍼(460)가 얼마간 버퍼 위치를 가질 수도 있음도 고려된다.
버퍼 관리 논리(470)는 도 2의 전송기(130 또는 140)에서 또는 브리지(150)에서 버퍼 공간의 트랙을 유지하도록 구성된다. 트랜잭션이 FIFO 버퍼(460)에 저장될 시에, 버퍼 관리 논리(470)는 다음 버퍼의 이용가능성을 체크하고, 버퍼 공간이 이용가능할 때까지 그 제어 명령을 홀딩하거나 또는 이 제어 명령이 출력 레지스터(480)로 진행되게 할 수 있다. 일단 제어 명령이 출력 레지스터(480)에 의해 래치된다면, 각각의 트랜잭션 소스는 상기 제어 명령에 대응하는 트래잭션이 도 2의 전송기(130 또는 140)로 또는 브리지(150)로 각기 전송됨 것임을 통지받는다.
도 5를 참조하면, 태깅 논리를 포함하는 스케쥴러의 한 실시예의 블럭도가 도시되었다. 스케쥴러(500)는 가상 채널 FIFO 버퍼(505)에 결합된 태깅 논리(510)를 포함한다. 가상 채널 FIFO 버퍼(505)는 3가지 형태의 트랜잭션 즉, 공시 트랜잭션, 비-공시 트랜잭션 및 응답 트랜잭션에 대응하는 3개의 개별 큐를 포함한다. 태그 비교/중재 논리 유닛(520)이 가상 채널 FIFO 버퍼(505)에 결합된다. 가상 채널 FIFO 버퍼(505)의 확대도가 또한 도시되었다. 상기 확대도는 각각의 비-공시 큐 및 응답 큐가 대응 태그를 갖는 것을 도시한다. 그러나, 공시 큐는 2개의 태그를 갖는바, 이들 태그는 비 공시 큐 및 응답 큐에 각기 대응한다.
태깅 논리(150)는 제어 명령이 가상 채널 FIFO 버퍼(505)에 저장되기에 앞서 각각의 제어 명령에 태그를 할당한다. 제어 명령에는 도 2의 수신기(120) 또는 브리지(150)와 같은 소스 유닛으로 부터 수신되는 순서로 태그가 할당된다. 상기 태그는 제어 명령에 첨부될 수도 있다.
제어 명령이 가상 채널 FIFO 버퍼(505)의 상부 위치에 도착하면, 태그 비교/중재 논리 유닛(520)이 3개의 가상 채널 간에서 중재하도록 구성되어, 위닝 제어 명령을 선정한다. 위너는 I/O 노드에 접속된 주변장치 버스에 의해 유지된 순서 룰에 대응하는 한 세트의 순서 룰에 근거하여 알고리즘을 사용해 선정된다. 한 실시예에서, 상기 순서 룰은 PCI 순서 룰에 대응한다. 다른 실시예에서, 상기 순서 룰은 AGP 순서 룰에 대응할 수도 있다.
본 실시예에서, 태그는 가상 채널 FIFO 버퍼(505)는 최고 16개의 위치를 가질수 있기 때문에 4개의 비트로 된다. 그러나, 다른 실시예에서, 가상 채널 FIFO 버퍼(505)는 다른 갯수의 위치를 포함할 수도 있고 따라서 태그는 대응하는 수의 비트를 포함할 수도 있음이 주목된다. 태깅 논리(510)는 가상 채널 FIFO 버퍼(505)에 저장된 비-공시 및 응답 제어 명령들에 대한 현 태그의 트랙을 유지하는 카운터 논리(도시되지 않음)를 포함한다. 상기 태그는 만약 적어도 하나의 차단가능한 비-공시 또는 응답 제어 명령이 현재의 공시 제어 명령에 앞서 그리고 이전의 공시 제어 명령 이 후에 수신된다면, 공시 제어 명령의 수신 시에 각각의 비-공시 또는 응답 카운터를 증분시키는 알고리즘에 따라 할당될 수도 있다. 본 원에 사용되는 비-공시 또는 응답 제어 명령은, 만약 특정 비트가 상기 비-공시 또는 응답 제어 명령이 가상 채널 FIFO 버퍼(505)의 공시 제어 명령을 통과시킴을 표시하는 각각의 제어 명령으로 설정되는 경우, 차단될 수 있다. 한 실시예에서, 상기 특정 비트는 PassPW 비트라고 언급된다.
태깅 알고리즘의 사용을 설명하면, 표 1은 상기 3개의 공시, 비-공시 및 응답 큐를 엔터(enter)하는 제어 명령의 수신 순서 및 태깅을 묘사한다. 제 1 칼럼은9개의 제어 명령의 수신의 순서를 나타낸다. 제 2 칼럼은 수신된 명령의 형태를 나타낸다. 제 3 칼럼은 비-공시 및 응답 명령에 할당된 태그를 나타내고, 제 4 및 제 5 명령은 비-공시 및 응답 명령 카운터가 공시 제어 명령에 의해 증분된 후의 상기 비-공시 및 응답 명령 카운터값을 나타낸다. 상기 공시 제어 명령이 2개의 태그를 수신하기 때문에, 상기 공시 제어 명령은 각각의 비-공시 카운터 및 응답 카운터에 대해 현재의 카운터 값으로 보인 태그 둘다를 수신한다. 가상 채널 FIFO 버퍼(505)의 확대도는 표 1의 명령이 어떻게 저장될 수도 있는지를 묘사한다.
수신 순서 제어 명령 PassPW 비트 태그값 비-공시 카운터 응답 카운터
1 공시 1 0 0 0
2 응답 1 0 0 0 0
3 공시 2 0 0 1
4 비-공시 1 0 0 0 1
5 응답 2 0 1 0 1
6 비-공시 2 0 0 0 1
7 공시 3 0 1 2
8 응답 3 0 2 1 2
9 비-공시 3 0 1 1 2
표 2는 PassPW 비트가 표 1에 도시된 수신된 제어 명령의 태깅에 어떻게 영향을 미칠수 있는 지를 묘사한다. 상기 PassPW 비트가 비-공시 또는 응답 제어 명령에 대해 설정된다면, 다음 공시 제어 명령은 각각의 카운터를 증분시키지 않을 것이다. 예를들어, 표 2에서, 상기 PassPW 비트가 응답 1에 대해 설정되며, 따라서, 공시 2 제어 명령이 수신되면, 응답 카운터는 증분되지 않는다. 그러나, 상기 PassPW 비트가 비-공시 2에 대해 설정되고, 공시 3 제어 명령은 비-공시 및 응답 카운터 둘다가 증분되게 한다. 이는 비-공시 1 제어 명령이 최종 공시 제어 명령 이후에 그리고 현재의 공시 제어 명령이전에 상기 PassPW 비트 클리어와 함께 수신되어, 카운터를 증가시키는 태깅 룰을 만족시키기 때문이다. 비록 PassPW 비트는 비-공시 또는 응답 제어 명령이 공시 제어 명령을 통과시킴을 표시하도록 설정되는 것으로 설명되고 있지만은, 다른 실시예에서, 이 논리는 그 반대로 되도록 고려될 수 있음이 주목된다.
수신 순서 제어 명령 PassPW 비트 태그값 비-공시 카운터 응답 카운터
1 공시 1 0 0 0
2 응답 1 1 0 0 0
3 공시 2 0 0 0
4 비-공시 1 0 0 0 0
5 응답 2 0 0 0 0
6 비-공시 2 1 0 0 0
7 공시 3 0 1 1
8 응답 3 0 1 1 1
9 비-공시 3 0 1 1 1
도 5를 참조하면, 중재동안, 태그 비교 및 중재 논리 유닛(520)은 각 제어 명령에 첨부된 태그들을 비교하므로써 가상 채널 FIFO 버퍼(505)로 부터 위닝 제어 명령을 선정하도록 구성된다. 게다가, 태그 비교에 앞서, 태그 비교 및 중재 논리 유닛(520)은 각각의 가상 채널에 대한 다음 I/O 노드에서 버퍼 공간이 이용가능한 지의 여부를 식별할 수 있다. 만약 임의의 가상 채널이 차단되면, 이 채널은 그 싸이클동안 중재에 참여하지 않는다. 만일 3개 모두의 채널이 중재를 위해 개방되어 있으면, 중재가 라운드 로빈 방식으로 비-공시 및 응답 채널 간에서 일어나고 공시 채널이 상기 비-공시 채널 및 응답 채널과 개별적으로 비교된다. 마지막으로, 태그 비교 및 중재 논리 유닛(520)은 위너를 결정하는데 있어 공정성 알고리즘을 사용한다. 상기 공정성 알고리즘은 도 6의 설명에 관련하여 이하 보다 상세히 설명될 것이다.
도 6을 참조하면, 스터베이션 회피 논리를 포함하는 트랜잭션 스케쥴러의 한 실시예의 블럭도가 도시되었다. 트랜잭션 스케쥴러(600)는 중재 회로(650)에 또한 결합된 가상 채널 FIFO 버퍼(620)를 더 포함한다. 중재 회로(650)는 FIFO 버퍼(670)에 접속되며, 상기 FIFO 버퍼(670)는 버퍼 관리 논리(680)에 접속된다. 상기 버퍼 관리 논리의 출력은 출력 레지스터(690)에 의해 래치된다.
도 3 및 도 4의 설명과 유사하게, 각각의 가상 채널 FIFO 버퍼(610 및 620)는 예를 들어 도 2의 수신기(110) 또는 브리지(150)와 같은 각각의 소스 입력으로 부터 제어 명령을 수신할 수도 있다. 상기 제어 명령은 상기 제어 명령이 나타내는 표시된 트랜잭션의 형태에 따라 가상 채널 FIFO 버퍼(610 및 620)에 저장될 수도 있다. 예를 들어, 상기 제어 명령은 공시, 비-공시 및 응답 명령을 표시할 수도 있고, 따라서 상기 각각의 공시, 비-공시 또는 응답 큐에 저장될 수도 있다.
본 실시예에서, 중재 회로(650)는 중재 유닛(630 및 640)과 공정성 회로(645)를 포함한다. 중재 싸이클 동안, 중재 회로(630 및 640)는 가상 채널 FIFO 버퍼(610 및 620)내에 각기 저장된 제어 명령을 선택하도록 구성될 수도 있다. 게다가, 공정성 회로(645)는 중재 유닛(630 및 640)중 어느것이 위닝 트랜잭션을 선택할 것인 지를 결정할 수도 있는 선택 조건을 제공할 수도 있다. 도 7의 설명에 관련하여 이하 보다 상세히 설명될 바와같이, 공정성 회로(645)가 공정성 알고리즘을 사용하여, 대역폭을 분배하기 위한 중재 우선권을 정할 수도 있다. 상기 공정성 알고리즘은 스터베이션 회피 논리에 따라 소정 수의 중재 싸이클동안 어떤 트랜잭션이 차단되었는 지를 결정한다.
도 7을 참조하면, 도 6의 공정성 회로의 한 실시예의 블럭도가 도시되었다. 공정성 회로(645)는 8 비트 카운터(705)에 결합되는 32개의 3 비트 카운터(0 내지 31)를 포함하는 공정성 유닛(700)을 포함한다. 삽입율 논리(715)가 래치(710)에 결합된다. 공정성 회로(645)는 또한 스터베이션 임계 레지스터(760)에 결합된 3개의 가상 채널 카운터(755 내지 757)를 포함하는 스터베이션 유닛(750)과, 그리고 공정성 유닛(700) 및 스터베이션 유닛(750)에 결합된 트랜잭션 선택 유닛(775)을 포함한다.
한 실시예에서, 트랜잭션이 터널을 통하여 전송될 때마다, 트랜잭션을 전송한 I/O 노드에 대응하는 상기 3 비트 카운터(0 내지 31)가 증분된다. 게다가, 카운터(705)는 상기 3 비트 카운터(0 내지 31)중 어느 하나가 증분될 때마다 증분될 수도 있다. 상기 3 비트 카운터(0 내지 31)중 한 카운터가 오버플로우하면, 카운터(705)의 값이 래치(710)에 의해 포획될 수도 있다. 상기 포획된 값은 시간적으로 특정한 포인트에서의 다운스트림 노드 트랜잭션 요구율을 나타낸다. 이어서, 삽입율 논리(715)가 상기 포획된 값을 사용하여 그 노드에 대한 허용가능한 삽입율을 계산한다.
트랜잭션 선택 유닛(775)은 도 6의 중재 유닛(630 또는 640)의 포인터가 중재 싸이클 동안 고려되는 가상 채널 버퍼를 포인트하게한다. 전송 가상 채널 버퍼의 가상 채널에서의 트랜잭션들 및 삽입된 버퍼의 동일한 가상 채널에서의 트랜잭션들이 있을 수 있다. 도 7에서, 트랜잭션 선택 유닛(775)은 공정성 회로(700)에 의해 설정된 우선권에 따라 2개의 가상 채널 버퍼를 교대로 선택할 수도 있다. 그러나, 가상 채널이 트랜잭션의 목적지에서 이용가능한 버퍼 공간의 부족과 같은 인자들에 의해 차단되어지는 경우에, 중재 논리는 차단된 채널을 스킵(skip)하고 다음 가상 채널로 진행하여 중재를 계속한다. 상기 차단된 채널이 이용가능하게 되면, 전송 채널에 대해 이용가능한 공간만이 있게 되며, 상기 차단된 채널이 공정성 알고리즘에 따라 삽입 채널에 우선하여 우선권을 가질 수도 있기 때문에, 상기 전송 채널로 부터의 트랜잭션이 전송될 수도 있다. 상기 앞서 차단된 채널이 이용가능하게 되는 다음 번에, 상기 차단된 채널은 재차 현재의 중재 싸이클에 우선권을 갖지 못하므로 따라서 재차 스킵한다. 이러한 상태는 지속적이며, 따라서 삽입 가상 채널을 "스터베이션" 한다. 특정 노드의 구성에 따라, 다른 실시예에선, 상기 전송 채널이 또한 유사한 이벤트에 의해 유입 채널에 의해 스터베이션될 수도 있음이 고려된다.
소정 채널을 스터베이션하는 것을 피하기 위해, 스터베이션 유닛(750)이 트랜잭션이 차단되는 횟수의 트랙을 유지할 수도 있다. 어떤 트랜잭션이 중재에 적합함에도 불구하고 차단되는 지를 트랜잭션 선택 유닛(775)이 결정할 때마다, 트랜잭션 선택 유닛(775)은 대응하는 가상 채널 카운터(755 내지 757)가 증분되게 한다. 스터베이션 임계 레지스터(760)는 중재동안 채널이 스킵될 수 있는 최대 횟수에 대응하는 값을 홀딩한다. 스터베이션 임계 레지스터(760)에 저장된 값은 임의의 소정 시간이 계산된 요구율에 따라 동적으로 변경될 수 있다. 상기 가상 채널 카운트(755 내지 757)중 임의의 카운터가 스터베이션 임계 레지스터내의 값에 부합하면, 대응하는 가상 채널의 우선권이 바뀌게되어, 따라서 트랜잭션 선택유닛(775)은 차단된 트랜잭션이 후속의 중재 싸이클동안 선택되게할 수 있다. 따라서, 우선권을 동적으로 변경함으로써, 특정 채널의 스터베이션이 회피된다. 설명된 논리 구성은 단지 하나의 특정한 구현에 불과한 것이다. 대안의 실시예들에서, 상이한 갯수의 카운터와 이들 카운터에 얼마간 비트를 포함하는 대안의 논리 구성을 사용하여, 전술된 기능을 달성할 수도 있음을 알아야 할 것이다.
또한, 상기 실시예는 스케쥴러의 특정 구현에 관한 것이며, 대안의 실시예들은 부가적인 기능 및/또는 서로 다른 기능을 수행하는 다양한 구현을 포함할 수 있음을 알아야할 것이다
상기 설명을 완전히 이해한 이 분야의 기술에 숙련된 자에게는 다양한 변형 및 변경이 명백해질 것이다. 이하 청구범위는 이러한 모든 변경 및 변형을 포괄하는 것으로 해석되어야할 것이다.
본 발명은 일반적으로 컴퓨터 시스템 입력/출력(I/O)에 응용가능하고 특히, I/O 노드에서의 트랜잭션 처리에 응용가능하다.

Claims (10)

  1. 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 매카니즘에 있어서,
    복수의 제어 명령을 수신하고 상기 제어 명령 각각에 대한 태그값을 발생하도록 구성된 태그 회로(510)와;
    상기 태그 회로에 결합되며, 복수의 가상 채널의 각각의 가상 채널에 각각 대응하고 상기 가상 채널 각각에 속하는 선택된 제어 명령들을 저장하는 복수의 버퍼를 포함하는 버퍼 회로(505)와; 그리고
    상기 버퍼 회로에 결합되고, 상기 제어 명령 각각에 대한 상기 태그값에 따라 상기 복수의 버퍼 간에 중재를 행하도록 구성된 중재 회로(520)를 포함하는 것을 특징으로 하는 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 매카니즘.
  2. 제 1항에 있어서,
    상기 제어 명령 각각에 대한 상기 태그값은, 다른 제어 명령들에 상대적인 상기 제어 명령 각각의 상기 태그 회로에 의한 수신 순서를 나타내는 값인 것을 특징으로 하는 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 매카니즘.
  3. 제 2항에 있어서,
    상기 복수의 가상 채널은 공시 채널, 비-공시 채널 및 응답 채널을 포함하는것을 특징으로 하는 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 매카니즘.
  4. 제 3항에 있어서,
    상기 태그 회로는 상기 응답 채널과 관련된 카운터의 현재의 값 및 상기 비-공시 채널과 관련된 카운터의 현재 값을 사용하여, 상기 제어 명령 각각에 대한 상기 태그값을 발생시키도록 더 구성되는 것을 특징으로 하는 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 매카니즘.
  5. 제 4항에 있어서,
    상기 태그 회로는 상기 응답 채널과 관련된 상기 카운터의 현재의 값에 대응하는 태그값을, 상기 응답 채널과 관련된 상기 제어 명령 각각에 할당하도록 더 구성되는 것을 특징으로 하는 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 매카니즘.
  6. 제 5항에 있어서,
    상기 태그 회로는 상기 비-공시 채널과 관련된 상기 카운터의 현재의 값에 대응하는 태그값을, 상기 비-공시 채널과 관련된 상기 제어 명령 각각에 할당하도록 더 구성되는 것을 특징으로 하는 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 매카니즘.
  7. 제 6항에 있어서,
    상기 태그 회로는 상기 응답 채널과 관련된 상기 카운터의 현재의 값에 대응하는 태그값과 그리고 상기 비-공시 채널과 관련된 상기 카운터의 현재의 값에 대응하는 태그값을, 상기 비-공시 채널과 관련된 상기 제어 명령 각각에 할당하도록 더 구성되는 것을 특징으로 하는 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 매카니즘.
  8. 제 7항에 있어서,
    상기 태그 회로는 상기 비-공시 및 응답 채널과 각기 관련된 제어 명령 다음에 오는 상기 비-공시 채널과 관련된 제어 명령을 수신하는 상기 태그 회로에 응답하여, 상기 비-공시 채널 및 응답 채널과 각각 관련된 카운터를 증분시키도록 더 구성되는 것을 특징으로 하는 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 매카니즘.
  9. 컴퓨터 시스템의 입력/출력 노드에서의 명령들을 태깅하는 방법에 있어서,
    복수의 제어 명령을 수신하는 단계와;
    상기 제어 명령 각각에 대한 태그값을 발생시키는 단계와;
    상기 복수의 제어 명령을, 복수의 가상 채널의 각각의 가상 채널에 대응하는 복수의 버퍼에 저장하는 단계와; 그리고
    상기 제어 명령 각각과 관련된 상기 태그값을 사용하여, 상기 복수의 버퍼간에서 중재를 행하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 방법.
  10. 제 9항에 있어서,
    상기 제어 명령 각각에 대한 상기 태그값은 다른 제어 명령들에 상대적인 상기 제어 명령 각각의 상기 태그 회로에 의한 수신 순서를 나타내는 값인 것을 것을 특징으로 하는 컴퓨터 시스템의 입력/출력 노드에서 명령들을 태깅하는 방법.
KR1020047005559A 2001-10-15 2002-08-09 컴퓨터 시스템의 입력/출력 노드에서 태깅 및 중재 매카니즘 KR100905802B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/978,351 US6728790B2 (en) 2001-10-15 2001-10-15 Tagging and arbitration mechanism in an input/output node of a computer system
US09/978,351 2001-10-15
PCT/US2002/025403 WO2003034249A1 (en) 2001-10-15 2002-08-09 Tagging and arbitration mechanism in an input/output node of a computer system

Publications (2)

Publication Number Publication Date
KR20040054721A true KR20040054721A (ko) 2004-06-25
KR100905802B1 KR100905802B1 (ko) 2009-07-02

Family

ID=25526009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047005559A KR100905802B1 (ko) 2001-10-15 2002-08-09 컴퓨터 시스템의 입력/출력 노드에서 태깅 및 중재 매카니즘

Country Status (8)

Country Link
US (1) US6728790B2 (ko)
EP (1) EP1442376B1 (ko)
JP (1) JP4255833B2 (ko)
KR (1) KR100905802B1 (ko)
CN (1) CN1311374C (ko)
DE (1) DE60204794T2 (ko)
TW (1) TW591490B (ko)
WO (1) WO2003034249A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721816B1 (en) * 2002-02-27 2004-04-13 Advanced Micro Devices, Inc. Selecting independently of tag values a given command belonging to a second virtual channel and having a flag set among commands belonging to a posted virtual and the second virtual channels
US20040059879A1 (en) * 2002-09-23 2004-03-25 Rogers Paul L. Access priority protocol for computer system
US7454551B2 (en) * 2004-05-26 2008-11-18 Synopsys, Inc. Reconstructing transaction order using clump tags
US20060215567A1 (en) * 2005-03-25 2006-09-28 Arun Raghunath Method and apparatus for monitoring path statistics
US7373444B2 (en) * 2005-04-15 2008-05-13 Kabushiki Kaisha Toshiba Systems and methods for manipulating entries in a command buffer using tag information
TWI335517B (en) * 2006-08-25 2011-01-01 Via Tech Inc Method of requests access and scheduling and related apparatus thereof
TWI385981B (zh) * 2009-05-14 2013-02-11 Ic Plus Corp 網路封包的傳遞裝置及其排程方法
US8199759B2 (en) * 2009-05-29 2012-06-12 Intel Corporation Method and apparatus for enabling ID based streams over PCI express
EP2547048A1 (en) * 2010-03-11 2013-01-16 Fujitsu Limited Data block read-out control device
US8543754B2 (en) * 2011-02-25 2013-09-24 International Business Machines Corporation Low latency precedence ordering in a PCI express multiple root I/O virtualization environment
CN103532875B (zh) * 2013-10-12 2017-11-03 丁贤根 一种用于pcie应用层接口的重排序方法
CN103746843A (zh) * 2013-12-31 2014-04-23 百度在线网络技术(北京)有限公司 一种用于处理rpc命令的方法与设备
US9824058B2 (en) * 2014-11-14 2017-11-21 Cavium, Inc. Bypass FIFO for multiple virtual channels
US9842074B2 (en) * 2015-01-30 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Tag allocation for non-posted commands in a PCIe application layer
US10545875B2 (en) 2017-12-27 2020-01-28 Advanced Micro Devices, Inc. Tag accelerator for low latency DRAM cache
US20230065395A1 (en) * 2021-08-30 2023-03-02 Micron Technology, Inc. Command retrieval and issuance policy

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04222049A (ja) * 1990-03-16 1992-08-12 Hewlett Packard Co <Hp> 属性データ記憶及びグラフィックスパイプラインアクセスを可能にするデータストリーム集信装置
JP3365705B2 (ja) * 1995-05-24 2003-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散型データ処理システム
US5751951A (en) 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
US5809328A (en) 1995-12-21 1998-09-15 Unisys Corp. Apparatus for fibre channel transmission having interface logic, buffer memory, multiplexor/control device, fibre channel controller, gigabit link module, microprocessor, and bus control device
US6148395A (en) * 1996-05-17 2000-11-14 Texas Instruments Incorporated Shared floating-point unit in a single chip multiprocessor
US6278532B1 (en) 1996-12-20 2001-08-21 Link2It Apparatus and method for reception and transmission of information using different protocols
JP2970596B2 (ja) 1997-06-10 1999-11-02 日本電気株式会社 Atm通信装置
JPH1185345A (ja) 1997-09-02 1999-03-30 Toshiba Corp 入出力インターフェース回路及び半導体システム
US6016526A (en) 1997-09-19 2000-01-18 International Business Machines Corporation Method and apparatus for transferring data between buses having differing ordering policies via the use of autonomous units
US6076130A (en) 1998-03-19 2000-06-13 Hewlett-Packard Company System and method for efficient communication between buses
US6212621B1 (en) * 1998-06-24 2001-04-03 Advanced Micro Devices Inc Method and system using tagged instructions to allow out-of-program-order instruction decoding
US6173378B1 (en) * 1998-09-11 2001-01-09 Advanced Micro Devices, Inc. Method for ordering a request for access to a system memory using a reordering buffer or FIFO
US6289442B1 (en) * 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
JP2000134218A (ja) * 1998-10-28 2000-05-12 Fujitsu Ltd パケット多重処理方式
JP3446700B2 (ja) * 1999-12-20 2003-09-16 日本電気株式会社 複数ラインバッファ型メモリlsi
JP2001188638A (ja) * 2000-01-05 2001-07-10 Mitsubishi Electric Corp 双方向バス回路

Also Published As

Publication number Publication date
US6728790B2 (en) 2004-04-27
CN1311374C (zh) 2007-04-18
EP1442376A1 (en) 2004-08-04
KR100905802B1 (ko) 2009-07-02
JP4255833B2 (ja) 2009-04-15
DE60204794D1 (de) 2005-07-28
US20030097500A1 (en) 2003-05-22
CN1568464A (zh) 2005-01-19
EP1442376B1 (en) 2005-06-22
JP2005518578A (ja) 2005-06-23
WO2003034249A1 (en) 2003-04-24
TW591490B (en) 2004-06-11
DE60204794T2 (de) 2006-05-18

Similar Documents

Publication Publication Date Title
US7352765B2 (en) Packet switching fabric having a segmented ring with token based resource control protocol and output queuing control
KR100905802B1 (ko) 컴퓨터 시스템의 입력/출력 노드에서 태깅 및 중재 매카니즘
US6834314B1 (en) Method and apparatus for reordering packet transactions within a peripheral interface circuit
US7773618B2 (en) System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels
US20080107105A1 (en) System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel
US6681274B2 (en) Virtual channel buffer bypass for an I/O node of a computer system
KR100968250B1 (ko) 컴퓨터 시스템 i/o 노드
JP4833518B2 (ja) 高速交換環境でマルチキャストするシステム、方法及び論理
JP3492852B2 (ja) ネットワークメッセージルート指定装置のための待ち時間短縮及びルート裁定方法
US6721816B1 (en) Selecting independently of tag values a given command belonging to a second virtual channel and having a flag set among commands belonging to a posted virtual and the second virtual channels
US9665514B2 (en) Integrated circuit having a bus network, and method for the integrated circuit
US20040172493A1 (en) Method and apparatus for handling split response transactions within a peripheral interface of an I/O node of a computer system
US6757755B2 (en) Peripheral interface circuit for handling graphics responses in an I/O node of a computer system
US6820151B2 (en) Starvation avoidance mechanism for an I/O node of a computer system
US6839784B1 (en) Control unit of an I/O node for a computer system including a plurality of scheduler units each including a plurality of buffers each corresponding to a respective virtual channel
US7773617B2 (en) System and method for arbitration for virtual channels to prevent livelock in a richly-connected multi-processor computer system
US6950886B1 (en) Method and apparatus for reordering transactions in a packet-based fabric using I/O streams
CN117135107B (zh) 一种网络通信拓扑系统、路由方法、设备及介质
JP2004242336A (ja) 高速交換環境でマルチキャスティングするシステム、方法及び論理
WO2008057821A2 (en) System and method for preventing deadlock in richly-connected multi-processor computer 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: 20130603

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140609

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150602

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee