KR20060045868A - 데이터 처리 장치 및 흐름 제어 방법 - Google Patents

데이터 처리 장치 및 흐름 제어 방법 Download PDF

Info

Publication number
KR20060045868A
KR20060045868A KR20050036039A KR20050036039A KR20060045868A KR 20060045868 A KR20060045868 A KR 20060045868A KR 20050036039 A KR20050036039 A KR 20050036039A KR 20050036039 A KR20050036039 A KR 20050036039A KR 20060045868 A KR20060045868 A KR 20060045868A
Authority
KR
South Korea
Prior art keywords
flow control
data
packet
header
value
Prior art date
Application number
KR20050036039A
Other languages
English (en)
Other versions
KR100715710B1 (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 KR20060045868A publication Critical patent/KR20060045868A/ko
Application granted granted Critical
Publication of KR100715710B1 publication Critical patent/KR100715710B1/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
    • 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/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • G06F13/4226Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with asynchronous protocol
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명의 장치는 제1 디바이스, 제2 디바이스, 및 상기 제2 디바이스에 설치되어, 상기 제1 디바이스로부터 송신되는 패킷을 유지하는 수신 버퍼로서, 상기 패킷은 각각, 헤더 및 가변 길이의 데이터를 포함하는 패킷이거나, 헤더만 포함하고 데이터를 포함하지 않는 패킷인 것인 수신 버퍼와, 상기 수신 버퍼로부터 출력된 각각의 패킷에 포함된 헤더 및 데이터 각각의 사이즈에 기초하여, 처리된 헤더의 사이즈를 나타내는 제1 값과, 처리된 데이터의 사이즈를 나타내는 제2 값을 계수하는 유닛과, 상기 제1 값 또는 제2 값이 대응하는 기준값에 도달하는 경우에, 상기 제2 디바이스에 의해 수신 가능한 헤더 및 데이터 각각의 사이즈를 나타내는 흐름 제어 정보를 제1 디바이스에 송신하는 유닛을 포함한다.

Description

데이터 처리 장치 및 흐름 제어 방법{DATA PROCESSING APPARATUS AND FLOW CONTROL METHOD}
도 1은 본 발명의 실시형태에 따른 데이터 처리 장치의 시스템 구성을 나타내는 블록도.
도 2는 본 발명의 실시형태에 따른 데이터 처리 장치에 설치되는 디바이스 간의 상호 접속을 나타내는 블록도.
도 3은 본 발명의 실시형태에 따른 데이터 처리 장치의 각 디바이스에 설치되는 흐름 제어 유닛의 구성을 나타내는 블록도.
도 4는 도 3에 도시한 흐름 제어 유닛 내에 설치되는 수신 흐름 제어 업데이트 유닛의 구성을 나타내는 블록도.
도 5는 본 발명의 실시형태에 따른 데이터 처리 장치 내의 디바이스 간에 전송되는 패킷의 구조를 나타내는 도면.
도 6은 본 발명의 실시형태에 따른 데이터 처리 장치에 의해서 수행되는 흐름 제어 동작을 설명하는 흐름도.
도 7은 본 발명의 실시형태에 따른 데이터 처리 장치의 각 디바이스에 설치되는 흐름 제어 유닛의 다른 구성을 나타내는 블록도.
도 8은 본 발명의 실시형태에 따른 데이터 처리 장치에 의해서 수행되는 흐 름 제어 동작의 다른 예를 설명하는 흐름도.
도 9는 도 3 또는 도 7의 흐름 제어 유닛 내에 설치되는 수신 흐름 제어 업데이트 유닛의 다른 구성을 나타내는 블록도.
도 10은 본 발명의 실시형태에 따른 데이터 처리 장치에 의해서 수행되는 흐름 제어 동작의 또 다른 예를 설명하는 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
1 : 데이터 처리 장치
21, 22 : PCI EXPRESS 디바이스
31, 32 : 흐름 제어 유닛
101 : 수신 버퍼
102 : 수신 흐름 제어 업데이트 유닛
103 : 수신 흐름 제어 업데이트 유닛
201 : 헤더/데이터 크레딧 수 검출기
202 : 헤더용 처리된 크레딧 수 카운터
203 : 데이터용 처리된 크레딧 수 카운터
204 : 업데이트 크레딧 수 생성기
205 : UpdateFC DLLP 발행기
본 발명은 컴퓨터와 통신 장치 등의 데이터 처리 장치와, 이 데이터 처리 장치에 이용되는 흐름 제어를 수행하는 방법에 관한 것이다.
PCI EXPRESS라 불리는 제3세대 범용 I/O 상호 접속 인터페이스가 최근, 컴퓨터, 통신 장치, 오디오 비디오 기기 등의 데이터 처리 장치에서 주목받고 있다. 이 PCI EXPRESS는 시리얼 인터페이스를 통해, 디바이스를 상호 접속하기 위한 표준으로서, PCI SIG(Peripheral Component Interconnect Special Interest Group)에 의해 정의되어 있다. PCI EXPRESS에서는 패킷을 이용해서 정보가 디바이스 간에 전송된다. 메모리 기록 요구, 메모리 판독 요구, I/O 기록 요구, I/O 판독 요구 등의 여러 트랜잭션을 충족시키기 위해서, 헤더 및 가변 길이의 데이터를 포함하는 패킷뿐만 아니라, 헤더만 포함하고 데이터를 포함하지 않는 패킷도 이용한다. 예컨대, 메모리 판독을 요구하는 메모리 판독 요구 패킷과, I/O 판독을 요구하는 I/O 판독 요구 패킷은 각각 헤더만 포함한다.
PCI EXPRESS 표준에서는 크레딧 기반(credit-based) 흐름 제어를 이용한다. 이 흐름 제어에서는, 수신 디바이스가 송신 디바이스에게 그 수신 디바이스 내의 유효한 수신 버퍼의 사이즈를 나타내는 크레딧을 흐름 제어 정보로서 미리 통지한다. 송신 디바이스는 크레딧에 의해 지정되는 사이즈만큼의 정보를 송신할 수 있다. PCI EXPRESS에서는, 예컨대 타이머를, 수신 디바이스에서 송신 디바이스로 크레딧을 정기적으로 송신하는 방법으로서 이용할 수 있다.
그러나, 전술한 방법에 있어서, 송신 장치가 정보를 자유롭게 송신하기에 충분한 크FP딧을 가지고 있는 기간 중에도 타이머 값이 타임아웃 시간에 도달할 때마 다, 크레딧이 수신 장치에서 송신 장치로 송신된다. 이 때문에, 디바이스 간의 통신 대역이 쓸데없는 크레딧 전송에 소비되게 된다. 타임아웃 시간이 짧을수록 크레딧 전송에 소비되는 대역이 커진다. 반대로 타임아웃 시간이 매우 길어지면, 송신 디바이스는 크레딧이 부족하게 되어, 정보를 수신 디바이스로 송신할 수 없게 된다.
일본 특허 공개 평9-205442호 공보는 단락 0007에, 수신 버퍼에 소정의 공간이 발생할 때마다, 그 공간 사이즈를 나타내는 크레딧을 송신 디바이스에 송신하는 흐름 제어 기술이 개시되어 있다. 그러나, 이 공보에 개시된 흐름 제어는 고정 길이의 패킷을 사용하는 ATM 네트워크에 대응하는 것이며, 헤더와 데이터를 구별하지 않는다.
헤더와 가변 길이의 데이터를 포함하는 패킷과 헤더만 포함하는 패킷을 모두 사용하는 시스템에 있어서, 큰 사이즈의 데이터를 포함하는 패킷이 수신 버퍼를 차지하는 것을 방지하기 위해서, 헤더와 데이터를 구별하여 흐름 제어하는 것이 필요하다.
본 발명의 목적은 헤더와 데이터를 구별하여 흐름 제어하여, 흐름 제어 정보를 최적의 타이밍에 송신 디바이스에 송신하는 것이 가능한 데이터 처리 장치 및 흐름 제어 방법을 제공하는 것이다.
본 발명의 실시형태에 따라 제공되는 데이터 처리 장치는 제1 디바이스와, 상기 제1 디바이스와 통신하는 제2 디바이스와, 상기 제2 디바이스에 설치되어, 상 기 제1 디바이스로부터 송신되는 패킷을 유지하는 수신 버퍼로서, 각 패킷은, 헤더 및 가변 길이의 데이터를 포함하는 패킷이거나 헤더만 포함하고 데이터를 포함하지 않는 패킷인 것인 수신 버퍼와, 상기 제2 디바이스에 설치되어, 상기 수신 버퍼로부터 출력된 각 패킷에 포함된 헤더와 데이터 각각의 사이즈에 기초하여, 처리된 헤더의 사이즈를 나타내는 제1 값과, 처리된 데이터의 사이즈를 나타내는 제2 값을 계수하는 카운팅 유닛과, 상기 제2 디바이스에 설치되어, 상기 제1 값 또는 제2 값이 대응하는 기준값에 도달한 경우, 상기 제2 디바이스에 의해 수신 가능한 헤더와 데이터 각각의 사이즈를 나타내는 흐름 제어 정보를 상기 제1 디바이스에 송신하는 흐름 제어 정보 송신 유닛을 포함한다.
본 명세서에 포함되어 그 일부를 형성하는 첨부 도면은 전술한 개괄적 설명과 후술하는 실시형태의 상세한 설명과 함께, 본 발명의 원리를 명백하게 하는 것을 돕는다.
도면을 참조하여 본 발명의 실시형태를 설명한다.
도 1은 본 발명의 실시형태에 따른 데이터 처리 장치의 시스템 구성을 도시하고 있다.
데이터 처리 장치(1)는, 예컨대 컴퓨터, 통신 디바이스, 오디오 비디오 기기 등으로서 기능한다. 이하에서는 데이터 처리 장치(1)가 컴퓨터로서 구현되어 있다고 상정한다.
데이터 처리 장치(1)는 도시한 바와 같이, CPU(Central Processing Unit)(11), 호스트 브릿지(12), 메인 메모리(13), 그래픽 컨트롤러(14), I/O 컨트롤러(15), 하드디스크 드라이버(HDD)(16) 및 I/O 디바이스(17, 18)를 포함한다. CPU(11)는 데이터 처리 장치(1)의 동작을 제어하는 프로세서이며, HDD(16)로부터 메인 메모리(13)에 로드되는 각종 프로그램(오퍼레이팅 시스템, 애플리케이션 프로그램)을 실행한다. 호스트 브릿지(12)는 CPU(11)와 I/O 컨트롤러(15)를 연결하는 브릿지 디바이스이다. 브릿지 디바이스는 그래픽 컨트롤러(14)와 통신하는 기능이 있으며, 메인 메모리(13)를 제어하는 메모리 컨트롤러를 포함한다. I/O 컨트롤러(15)는 CPU(11)의 제어 하에서, I/O 디바이스(17, 18)를 제어한다. I/O 컨트롤러(15)는 HDD(16)를 제어하기 위한 IDE(Integrated Drive Electronics) 컨트롤러를 포함한다.
호스트 브릿지(12), 그래픽 컨트롤러(14), I/O 컨트롤러(15), I/O 디바이스(17, 18)는 PCI EXPRESS에 준거한 디바이스(구성품)이다. 호스트 브릿지(12)와 그래픽 컨트롤러(14)는 그 사이에 설치된 PCI EXPRESS 링크(30)를 통해 서로 통신한다. 마찬가지로, 호스트 브릿지(12)와 I/O 컨트롤러(15)도 그 사이에 설치된 PCI EXPRESS 링크(30)를 통해 서로 통신한다. 또한, I/O 컨트롤러(15)와 각 I/O 디바이스(17, 18)도 그 사이에 설치된 PCI EXPRESS 링크(30)를 통해 서로 통신한다.
도 2는 PCI EXPRESS에 준거한 2개의 디바이스(21, 22) 간의 상호 접속을 도시하고 있다. 이들 디바이스(#A)(21)와 디바이스(#B)(22)의 조합은, 예컨대 호스트 브릿지(12)와 그래픽 컨트롤러(14)의 조합, 호스트 브릿지(12)와 I/O 컨트롤러(15)의 조합, 또는 I/O 컨트롤러(15)와 I/O 디바이스(17, 18)의 조합에 대응한다.
디바이스(#A)(21)와 디바이스(#B)(22)는 PCI EXPRESS 링크(30)를 통해 서로 상호 접속되어 있다. PCI EXPRESS 링크(30)는 디바이스(#A)(21)와 디바이스(#B)(22)를 포인트-투-포인트 형식으로 접속하는 시리얼 인터페이스(직렬 버스)이다. 이 PCI EXPRESS 링크(30)는 디바이스(#A)(21)로부터 디바이스(#B)(22)로 정보를 전송하기 위한 차동 신호선 쌍과, 디바이스(#B)(22)로부터 디바이스(#A)(21)로 정보를 전송하기 위한 차동 신호선 쌍을 포함한다. PCI EXPRESS 링크(30)를 통한 디바이스(#A)(21)와 디바이스(#B)(22) 간의 정보 전송은 패킷을 이용하여 이루어진다.
메모리 기록 요구, 메모리 판독 요구, I/O 기록 요구, I/O 판독요구 등의 다양한 트랜잭션은 모두 패킷을 이용하여 디바이스(#A)(21)와 디바이스(#B)(22) 간에 전송된다.
디바이스(#A)(21)와 디바이스(#B)(22)는 디바이스(#A)(21)와 디바이스(#B)(22) 간에 전송되는 정보의 흐름 제어를 실현하기 위해서, 각각 흐름 제어 유닛(31, 32)을 포함한다. 디바이스(#A)(21)의 흐름 제어 유닛(31)은 디바이스(#A)(21) 내의 유효한 수신 버퍼의 사이즈를 나타내는 크레딧 값을 흐름 제어 정보로서 디바이스(#B)(22) 내의 흐름 제어 유닛(32)에 보낸다. 디바이스(#B)(22)는 디바이스(#A)(21)로부터 받은 크레딧 값이 지정하는 사이즈에 대응하는 정보를 디바이스(#A)(21)에 보낼 수 있다. 마찬가지로, 디바이스(#B)(22)의 흐름 제어 유닛(32)은 디바이스(#B)(22) 내의 유효한 수신 버퍼의 사이즈를 나타내는 크레딧 값을 흐름 제어 정보로서 디바이스(#A)(21) 내의 흐름 제어 유닛(31)에 보낸다. 디바이 스(#A)(21)는 디바이스(#B)(22)로부터 받은 크레딧 값이 지정하는 사이즈에 대응하는 정보를 디바이스(#B)(22)에 보낼 수 있다.
도 3을 참조하여, 각 디바이스에 설치되는 흐름 제어 유닛의 구성에 관해서 설명한다. 도 3에는 디바이스(#A)(21)의 흐름 제어 유닛(31)이 대표적으로 도시되어 있다.
PCI EXPRESS에 대응하는 각 디바이스의 기능은 트랜잭션층, 데이터 링크층, 물리층의 3개 층으로 분류된다. 흐름 제어는 트랜잭션층에 의해 실현된다. 흐름 제어 유닛(31)은 트랜잭션층으로서 기능한다.
흐름 제어 유닛(31)은 도 3에 도시하는 바와 같이, 수신 버퍼(101), 수신 흐름 제어 유닛(102), 및 수신 흐름 제어 업데이트 유닛(103)을 포함한다.
수신 버퍼(101)는 디바이스(#B)(22)로부터 수신된 패킷(트랜잭션층 패킷; TLP)을 유지하기 위한 버퍼이다. 도 5에 도시하는 바와 같이, 트랜잭션층 패킷(TLP)은 헤더와 필요한 데이터(데이터 페이로드)를 포함한다. 헤더의 사이즈는 12 바이트 또는 16 바이트이다. 데이터의 사이즈는 가변적이며, 그 최소 사이즈는 0 바이트, 최대 사이즈는 4 K바이트이다. 즉, TLP은 헤더를 포함하지만 데이터는 포함하지 않는 패킷이거나 헤더와 데이터 모두를 포함하는 패킷이다. TLP의 흐름 제어는 크레딧 단위로 이루어진다. 1 크레딧은 16 바이트이다.
예컨대, 메모리 판독을 요구하는 메모리 판독 요구 패킷, I/O 판독을 요구하는 I/O 판독 요구 패킷, 및 구성(configuration) 판독을 요구하는 구성 판독 요구 패킷은 각각 헤더만 포함하고, 데이터 페이로드는 포함하지 않는다. 예컨대, 메모 리 기록을 요구하는 메모리 기록 요구 패킷은 헤더와 가변 길이의 데이터 페이로드 모두를 포함한다.
디바이스(#A)(21)의 흐름 제어 유닛(31)으로부터 디바이스(#B)(22)에 송신되는 흐름 제어 정보는 수신 가능한 헤더의 사이즈를 나타내는 크레딧 값과, 수신 가능한 데이터의 사이즈를 나타내는 크레딧 값을 포함한다. 크레딧 값을 크레딧 수(크레딧의 개수를 의미)라고도 한다. 흐름 제어 정보는 데이터 링크층에 의해서 생성되는 데이터 링크층 패킷(DLLP)을 이용하여 송신된다.
TLP의 헤더는 TLP의 목적 및 특징을 판별하는 데 필요한 정보를 갖는 복수의 필드를 포함한다. TLP의 헤더는 또한 후속하는 데이터 페이로드의 사이즈를 나타내는 필드를 포함한다.
디바이스(#A)(21)의 초기화시에, 흐름 제어 유닛(31)은 유효한 수신 버퍼(101)의 사이즈를 나타내는 초기 크레딧 값을 포함하는 흐름 제어 정보를, 흐름 제어 DLLP(FCDLLP)을 이용하여 상대측 디바이스(#A)(21)에 송신한다. 이 흐름 제어 정보는 수신 가능한 헤더의 사이즈를 나타내는 크레딧 수와, 수신 가능한 데이터의 사이즈를 나타내는 크레딧 수를 포함한다. 디바이스(#A)(21)는 흐름 제어 정보에 의해 지정되는 헤더 및 데이터 사이즈에 대응하는 헤더 및 데이터를 송신할 수 있다.
수신 흐름 제어 유닛(102)은 디바이스(#B)(22)로부터 수신된 TLP의 헤더를 참조하여, 그 수신 TLP에 포함되는 헤더 및 데이터 각각의 사이즈를 크레딧 정보로서 취득한다. 그리고, 수신 흐름 제어 유닛(102)은 수신 버퍼(101)의 오버플로우를 방지하기 위해서, 수신 버퍼(101)에 대한 수신 TLP의 기록을 허가 또는 금지하도록 기록 제어를 수행한다. 이 기록 제어는 흐름 제어 정보에 의해서 디바이스(#B)(22)에 송신을 허가한 헤더 및 데이터 사이즈와, 수신 TLP의 헤더 및 데이터 사이즈에 기초하여 실행된다.
수신 흐름 제어 업데이트 유닛(103)은 수신 버퍼(101)로부터 출력된 TLP에 포함된 헤더이 내용에 기초해서, 수신 TLP에 포함되는 헤더 및 데이터 각각의 사이즈를 크레딧 정보로서 취득한다. 그리고, 수신 흐름 제어 업데이트 유닛(103)은 취득한 크레딧 정보에 기초하여, 처리된 헤더의 사이즈와 처리된 데이터의 사이즈를 계수한다. 처리된 헤더의 사이즈에 대응하는 크레딧 수가 헤더용 업데이트 크레딧 수(P1)에 도달하거나, 처리된 데이터의 사이즈에 대응하는 크레딧 수가 데이터용 업데이트 크레딧 수(P2)에 도달한 경우, 수신 흐름 제어 업데이트 유닛(103)은 업데이트 흐름 제어 정보를 업데이트 흐름 제어 DLLP(UpdateFC DLLP)을 이용하여 디바이스(#A)(21)에 송신한다. 크레딧 수(P1)와 크레딧 수(P2)는 소프트웨어에 의해 설정된다. UpdateFC DLLP는 데이터 링크층에 의해 생성된 데이터 링크층 패킷(DLLP)의 일종이다. 업데이트 흐름 제어 정보는 디바이스(#A)(21)에 의해 수신될 수 있는 헤더의 사이즈를 나타내는 새로운 크레딧 수(업데이트된 헤더 크레딧 수를 의미)와, 디바이스(#A)(21)에 의해 수신될 수 있는 데이터의 사이즈를 나타내는 새로운 크레딧 수(업데이트된 데이터 크레딧 수를 의미)를 포함한다. 업데이트된 헤더 크레딧 수와 업데이트된 데이터 크레딧 수는 수신 흐름 제어 유닛(102)에 제공된다.
도 4는 수신 흐름 제어 업데이트 유닛(103)의 구성을 도시하고 있다. 수신 흐름 제어 업데이트 유닛(103)은 헤더/데이터 크레딧 수 검출기(201), 헤더용 처리된 크레딧 수 카운터(202), 데이터용 처리된 크레딧 수 카운터(203), 업데이트된 레딧 수 생성기(204) 및 UpdateFC DLLP 발행기(205)를 포함한다.
헤더/데이터 크레딧 수 검출기(201)는 수신 버퍼(101)로부터 출력된 TLP에 포함된 헤더를 분석하여, 그 TLP에 포함되는 헤더 및 데이터 각각의 크레딧 수를 검출한다. 어느 TLP에서나 헤더의 크레딧 수는 항상 1이다. 한편, 데이터의 크레딧 수는 TLP에 포함되는 데이터의 사이즈에 의해 결정된다. 헤더용 처리된 크레딧 수 카운터(202)는 헤더용 처리된 크레딧 수(Q1)를 카운트한다. 크레딧 수(Q1)는 현시점까지 수신 버퍼(101)로부터 출력된 처리된 헤더의 총 사이즈를 크레딧 단위로 나타내는 값이다. 하나의 TLP에 포함되는 헤더의 크레딧 수가 항상 1이기 때문에, 크레딧 수(Q1)는 수신 버퍼(101)가 TLP를 출력할 때마다, 1씩 증가한다. 즉, 크레딧 수(Q1)는 처리된 TLP의 수에 일치한다. 데이터용 처리된 크레딧 수 카운터(203)는 데이터용 처리된 크레딧 수(Q2)를 카운트한다. 크레딧 수(Q2)는 현시점까지 수신 버퍼(101)로부터 출력된 처리된 데이터의 총 사이즈를 크레딧 단위로 나타내는 값이다. 하나의 TLP에 포함되는 데이터의 크레딧 수는 가변적이다. 크레딧 수(Q2)는 수신 버퍼(101)가 TLP를 출력할 때마다, 그 TLP에 포함된 데이터 사이즈에 대응하는 크레딧 수만큼 증가한다.
업데이트된 크레딧 수 생성기(204)는 헤더용 처리된 크레딧 수(Q1)가 헤더용 업데이트된 크레딧 수(P1)에 도달하는 경우, 데이터용 처리된 크레딧 수(Q2)가 데 이터용 업데이트 크레딧 수(P2)보다 작지 않는 경우 중 하나가 발생할 경우에 동작하여, 업데이트 헤더 크레딧 수와 업데이트 데이터 크레딧 수를 계산한다. 예컨대, 계산된 업데이트 헤더 크레딧 수는 현재의 헤더용 처리된 크레딧 수(Q1)에 일치하고, 계산된 업데이트 데이터 크레딧의 수는 현재의 데이터용 처리된 크레딧 수(Q2)에 일치한다. UpdateFC DLLP 발행기(205)는 업데이트 크레딧 수 생성기(204)가 계산한 업데이트 헤더 크레딧 수와 업데이트 데이터 크레딧 수를 포함하는 흐름 제어 정보를 UpdateFC DLLP로서 발행하여, 그 UpdateFC DLLP를 상대측 디바이스에 송신한다.
도 6의 흐름도를 참조하여, 흐름 제어 유닛(31)의 동작을 설명한다.
흐름 제어 유닛(31)은 우선, 헤더용 업데이트 크레딧 수(P1)와 데이터용 업데이트 크레딧 수(P2)를 소프트웨어로부터 취득한다(단계 S101). 이들 크레딧 수(P1, P2)는, 예컨대 흐름 제어 유닛(31) 내의 레지스터 등에 유지되어, UpdateFC DLLP의 발생 타이밍을 판정하기 위한 기준값으로서 사용된다. 그리고, 흐름 제어 유닛(31)은 크레딧 수(Q1, Q2)를 각각 제로로 초기화한다(단계 S102).
디바이스(#A)(21)의 트랜잭션층은 수신 버퍼(101)의 선두에서부터 TLP를 순차 판독하여 그 TLP를 순차 처리한다. TLP가 처리될 때, 판독/기록 액세스가 디바이스(#A)(21) 내의 메모리와 레지스터에 도달한다. 하나의 TLP가 수신 버퍼(101)로부터 판독되면(단계 S103의 YES), 흐름 제어 유닛(31)은 그 TLP에 포함되는 헤더 및 데이터 각각의 크레딧 수에 기초하여, 크레딧 수(Q1, Q2)를 업데이트한다(단계 S104). 크레딧 수(Q1)는 1씩 증가하고, 크레딧 수(Q2)는 TLP에 포함되는 데이터의 크레딧 수분만큼 증가한다. TLP에 데이터가 포함되지 않다면, 크레딧 수(Q2)는 업데이트되지 않는다.
흐름 제어 유닛(31)은,
P1=Q1
P2≤Q2
중 어느 한 조건이 성립하면(단계 S105의 YES, 또는 단계 S106의 YES), 업데이트 헤더 크레딧 수와 업데이트 데이터 크레딧 수를 포함하는 흐름 제어 정보를 UpdateFC DLLP로서 생성한다(단계 S107). UpdateFC DLLP는 상대측 디바이스에 송신된다. 이 후, 흐름 제어 유닛(31)은 크레딧 수(Q1, Q2)를 초기화하여 각각 제로로 설정한다(단계 S102).
흐름 제어 유닛(31)은 수신 버퍼(101)로부터 실제로 출력된 패킷에 포함되는 헤더 및 데이터 각각의 사이즈에 기초하여, 처리된 헤더의 사이즈 및 처리된 데이터의 사이즈를 관리한다. 처리된 헤더 및 데이터의 사이즈 중 적어도 하나가 기준값에 도달하는 경우에, 흐름 제어 유닛(31)은 UpdateFC DLLP를 생성한다. 따라서, 송신 디바이스에 크레딧이 부족하기 전에 최적의 타이밍에 크레딧을 송신 디바이스에 송신할 수 있다. UpdateFC DLLP의 다발에 의한 대역의 점유나, 송신 디바이스에서 크레딧이 부족하게 되는 것을 막을 수 있다. 흐름 제어 유닛(31)의 흐름 제어가 헤더와 데이터를 구별하기 때문에, 수신 버퍼에 있어서, 대형 사이즈의 데이터를 포함하는 패킷이 차지하는 것을 방지할 수 있다. 따라서, 수신 버퍼는 오버플로우되지 않지만, 헤더만 포함하는 패킷과, 헤더와 데이터 모두를 포함하는 패킷 모두 가 효율적으로 전송될 수 있다.
도 7은 흐름 제어 유닛(31)의 또 다른 구성예를 도시하는 블록도이다. 이 흐름 제어 유닛(31)은 도 3의 구성품과 함께, 타이머(104)를 포함한다. 타이머(104)는 흐름 제어 정보의 마지막 송신에서부터의 경과 시간을 측정한다. 수신 흐름 제어 업데이트 유닛(103)은 긴 시간 동안 UpdateFC DLLP가 발생하지 않는 것을 방지하기 위해서, 헤더용 처리된 크레딧 수(Q1)와 데이터용 처리된 크레딧 수(Q2), 및 타이머(104)의 값을 이용하여, UpdateFC DLLP의 발생 타이밍을 관리한다.
도 8은 도 7에 도시한 흐름 제어 유닛(31)의 동작을 나타내는 흐름도이다. 흐름 제어 유닛(31)은 우선, 헤더용 업데이트 크레딧 수(P1)와 데이터용 업데이트 크레딧 수(P2)를 소프트웨어로부터 취득한다(단계 S201). 이들 헤더용 업데이트 크레딧 수(P1)와 데이터용 업데이트 크레딧 수(P2)는 흐름 제어 유닛(31) 내의 레지스터 등에 유지되어, UpdateFC DLLP의 발생 타이밍을 판정하기 위한 기준값으로서 사용된다. 그리고, 흐름 제어 유닛(31)은 헤더용 처리된 크레딧 수(Q1)와 데이터용 처리된 크레딧 수(Q2)의 값을 각각 초기화하여, 제로로 설정한다(단계 S202). 이 단계 S202에서는, 또한, 타이머(104)도 초기화된다. 디바이스(#A)(21)의 트랜잭션층은 수신 버퍼(101)의 선두로부터 TLP를 순차 판독하여 그 TLP를 처리한다. 그 결과, 판독/기록 액세스가 디바이스(#A)(21) 내의 메모리와 레지스터에 도달된다.
흐름 제어 유닛(31)은 타이머(104)의 값이 미리 결정된 설정값을 초과하는 지의 여부(타임아웃이 발생 여부)를 판단한다(단계 S203). 만일 타임아웃이 발생하면(단계 S203의 YES), 흐름 제어 유닛(31)은 업데이트 헤더 크레딧 수와 업데이트 데이터 크레딧 수를 포함하는 흐름 제어 정보를 UpdateFC DLLP로서 발생한다(단계 S207). 이들 크레딧 수는 예컨대 현재의 크레딧 수(Q1, Q2)의 값에 기초하여 각각 생성된다. 이 후, 흐름 제어 유닛(31)은 단계 S202로 되돌아가, 크레딧 수(Q1, Q2) 및 타이머(104)를 초기화한다.
타이머(104)의 값이 미리 결정된 설정값을 초과하지 않으면(단계 S203의 NO), 흐름 제어 유닛(31)은 수신 버퍼(101)가 TLP를 출력하는 지의 여부를 판단한다(단계 S204). 수신 버퍼(101)가 TLP를 출력하면(단계 S204의 YES), 흐름 제어 유닛(31)은 그 TLP에 포함되는 헤더 및 데이터 각각의 크레딧 수에 기초하여, 크레딧수(Q1, Q2)를 업데이트한다(단계 S205). Q1은 1씩 증가하고, Q2는 TLP에 포함된 데이터의 크레딧 수만큼 증가한다. TLP에 데이터가 포함되지 않는 경우에는, Q2는 업데이트되지 않는다.
흐름 제어 유닛(31)은,
P1=Q1
P2≤Q2
중 하나가 성립하면(단계 S206의 YES, 또는 단계 S207의 YES), 업데이트 헤더 크레딧 수와 업데이트 데이터 크레딧 수를 포함하는 흐름 제어 정보를 UpdateFC DLLP로서 발생한다(단계 S208). 이 후, 흐름 제어 유닛(31)은 단계 S202로 되돌아가, 크레딧 수(Q1, Q2)와 타이머(104)를 초기화한다.
송신 디바이스로부터 송신되는 TLP의 수가 비교적 적은 경우에는, 헤더용 처리된 크레딧 수(Q1)도 데이터용 처리된 크레딧 수(Q2)도 좀처럼 증가하지 않는다. 이 때문에, 전술한 조건(P1=Q1, P2≤Q2) 중 어느 쪽도 만족하지 않고, UpdateFC DLLP가 긴 시간 동안 송신되지 않는 경우가 있다. 송신 디바이스는 수신 디바이스에 에러가 발생했는지, 또는 그 송신 디바이스가 수신 디바이스로부터 UpdateFC DLLP를 수신하는 데 실패한 것인지를 판별할 수 없다. 따라서, UpdateFC DLLP가 긴 시간 동안 송신되지 않는 상황은 동작의 신뢰성의 관점에서 바람직하지 못하다. 도 7에 나타낸 흐름 제어 유닛(31)에 있는 타이머(104)를 사용함으로써, UpdateFC DLLP가 송신되지 않는 시간 길이의 상한을 소정의 범위 내로 제한하여, 전술한 상황이 발생하는 것을 방지할 수 있다.
다음에, 도 9를 참조하여, 도 3 또는 도 7의 흐름 제어 유닛(31)에 설치되는 수신 흐름 제어 업데이트 유닛(103)의 또 다른 구성을 관해서 설명한다.
도 9의 수신 흐름 제어 업데이트 유닛(103)은 가상 채널마다 이하의 3가지의 TLP 타입을 구별한다.
통보형 요구(P)
이 TLP는 수신 디바이스로부터의 리턴을 필요로 하지 않는 요구 패킷이다. 예컨대, 메모리 기록 요구 패킷은 통보형 요구이다.
비통보형 요구(NP)
이 TLP는 수신 디바이스로부터의 리턴을 필요로 하는 요구 패킷이다. 예컨대, 모든 판독 요구 패킷, I/O 기록 요구 패킷, 구성 기록 요구 패킷은 비통보형 요구이다.
완료(CPL)
이 TLP는 대응하는 비통보형 요구에 관련되는 리턴 패킷이다. 예컨대, 요구를 송신하기 위한 패킷, 응답을 송신하기 위한 패킷은 완료 패킷이다.
수신 흐름 제어 업데이트 유닛(103)의 흐름 제어는 각 TLP 타입마다 헤더와 데이터를 구별한다. 따라서, 흐름 제어에서는, 가상 채널마다 다음의 6개의 타입의 정보가 관리된다.
통보형 요구(P)의 헤더(PH)
통보형 요구(P)의 데이터(PD)
비통보형 요구(NP)의 헤더(NPH)
비통보형 요구(NP)의 데이터(NPD)
완료(CPL)의 헤더(CPLH)
완료(CPL)의 데이터(CPLD)
수신 흐름 제어 업데이트 유닛(103)은 가상 채널 판정 유닛(401), 복수의 가상 채널(VC#0, VC#1, …, VC#n) 각각에 대응하는 n개의 수신 흐름 제어 업데이트 모듈(402)을 포함한다. 가상 채널은 PCI EXPRESS 링크(30) 상에 확립된다. 흐름 제어는 가상 채널마다 독립적으로 실행된다.
각 TLP의 헤더는 그 TLP에 대응하는 가상 채널을 식별하기 위한 식별자(TC)를 포함한다. 가상 채널 판정 유닛(401)은 수신 버퍼(101)로부터 출력되는 TLP의 헤더에 포함되는 TC에 기초하여, 그 TLP에 대응하는 가상 채널 번호(VC#0, VC#1, …, VC#n)를 판별한다. VC#0의 TLP에 관한 정보는 VC#0용의 수신 흐름 제어 업데이트 모듈(402)에 의해서 처리되고, VC#1의 TLP에 관한 정보는 VC#1용의 수신 흐름 제어 업데이트 모듈(402)에 의해서 처리되며, VC#n의 TLP에 관한 정보는 VC#n용의 수신 흐름 제어 업데이트 모듈(402)에 의해서 처리된다.
각 수신 흐름 제어 업데이트 모듈(402)은 TLP 타입 판정 유닛(501), P타입(통보형 요구) TLP 수신 흐름 제어 업데이트 유닛(502), NP타입(비통보형 요구) TLP 수신 흐름 제어 업데이트 유닛(503), 및 CPL타입(완료) TLP 수신 흐름 제어 업데이트 유닛(504)을 포함한다. 각 수신 흐름 제어 업데이트 모듈(402)은 P, NP, CPL 각각마다, 헤더용 처리된 크레딧 수(Q1) 및 데이터용 처리된 크레딧 수(Q2)를 계수한다.
가상 채널의 TLP의 헤더에 포함된 TLP 타입 식별 정보에 기초하여, TLP 타입 판정 유닛(501)은 그 TLP가 P, NP, CPL 타입 중 어느 것인지를 판별한다. P타입 TLP에 관한 정보는 P타입 TLP 수신 흐름 제어 업데이트 유닛(502)에 의해서 처리되며, NP타입 TLP에 관한 정보는 NP타입 TLP 수신 흐름 제어 업데이트 유닛(503)에 의해서 처리되며, CPL타입 TLP에 관한 정보는 CPL타입 TLP 수신 흐름 제어 업데이트 유닛(504)에 의해서 처리된다. P타입 TLP 수신 흐름 제어 업데이트 유닛(502), NP타입 TLP 수신 흐름 제어 업데이트 유닛(503) 및 CPL타입 TLP 수신 흐름 제어 업데이트 유닛(504)의 각각은 도 4에서 설명한 구성을 갖는다. 또한 P타입 TLP 수신 흐름 제어 업데이트 유닛(502), NP타입 TLP 수신 흐름 제어 업데이트 유닛(503) 및 CPL타입 TLP 수신 흐름 제어 업데이트 유닛(504)의 각각은 타이머를 포함하며, 크레딧 수(Q1, Q2)와, 타이머(104)의 값을 사용하여, UpdateFC DLLP의 발생 타이밍을 관리한다.
이어서, 도 10의 흐름도를 참조하여, 도 9의 수신 흐름 제어 업데이트 유닛(103)의 동작을 설명한다.
수신 흐름 제어 업데이트 유닛(103)은 우선, 각 가상 채널(VC)마다 P, NP, CPL의 각각에 대응하는 헤더용 업데이트 크레딧 수(P1)와 데이터용 업데이트 크레딧 수(P2)를 소프트웨어로부터 취득한다(단계 S301). 이들 크레딧 수(P1, P2)는 수신 흐름 제어 업데이트 유닛(103) 내의 레지스터 등에 유지되어, UpdateFC DLLP의 발생 타이밍을 판정하기 위한 기준값으로서 사용된다. 그리고, 수신 흐름 제어 업데이트 유닛(103)은 헤더용 처리된 크레딧 수(Q1)와 데이터용 처리된 크레딧 수(Q2)를 초기화하여 그 값들을 제로로 설정한다(단계 S302). 단계 S302에서는 또한, 각 가상 채널(VC)마다 P, NP, CPL의 각각에 대응하는 타이머(104)를 초기화한다. 타이머(104)는 가상 채널(VC)과 TLP 타입의 각 조합마다 설치되어 있다.
수신 흐름 제어 업데이트 유닛(103)은 타이머(104)의 값이 미리 결정된 값을 초과하는지의 여부(타임아웃의 발생 여부)를 판단한다(단계 S303∼307). 타이머(104)의 값이 미리 결정된 값을 초과하지 않는다면, 수신 흐름 제어 업데이트 유닛(103)은 수신 버퍼(101)가 TLP를 출력하는지의 여부를 판단한다(단계 S308). 수신 버퍼(101)가 TLP를 출력하면(단계 S308의 YES), 수신 흐름 제어 업데이트 유닛(103)은 그 TLP에 대응하는 가상 채널 번호를 판정한다(단계 S309). 가상 채널 번호는 그 TLP의 헤더에 포함된 TC의 값에 의해서 결정된다. 이 후, 수신 흐름 제어 업데이트 유닛(103)은 수신 버퍼(101)로부터 출력된 TLP가 P, N, CPL 타입 중 어느 것인지를 판별한다(단계 S310). 그리고, 다음의 처리가 각 P, N, CPL 타입마다 수 행된다. 여기서는, 수신 버퍼(101)로부터 출력된 TLP의 가상 채널 번호가 VC#0이고, 그 TLP 타입이 P인 경우를 상정한다.
수신 흐름 제어 업데이트 유닛(103)은 수신 버퍼(101)로부터 출력된 P타입 TLP에 포함된 헤더 및 데이터 각각의 크레딧 수에 기초하여, 크레딧 수(Q1, Q2)를 업데이트한다(단계 S401). 크레딧 수(Q1)는 1씩 증가하고, 크레딧 수(Q2)는 P타입 TLP에 포함된 데이터의 크레딧 수만큼 증가한다. P타입 TLP가 데이터를 포함하지 않는다면, 크레딧 수(Q2)는 업데이트되지 않는다.
수신 흐름 제어 업데이트 유닛(103)은,
P1=Q1
P2≤Q2
중 어느 한 조건이 성립하면(단계 S402의 YES, 또는 단계 S403의 YES), 수신 가능한 P타입 TLP의 헤더의 크레딧 수를 나타내는 업데이트 헤더 크레딧 수와, 수신 가능한 P타입 TLP의 데이터의 크레딧 수를 나타내는 업데이트 데이터 크레딧 수를 포함하는 흐름 제어 정보를 UpdateFC DLLP로서 생성한다(단계 S404). UpdateFC DLLP는 가상 채널 번호와 TLP 타입(=P)을 포함한다. 이후, 수신 흐름 제어 업데이트 유닛(103)은 타입 P에 대응하는 크레딧 수(Q1, Q2)와, 가상 채널 번호 VC#0과 타입 P와의 조합에 대응하는 타이머를 초기화한다(단계 S405).
가상 채널 번호 VC#0과 타입 P의 조합에 대응하는 타이머의 타임아웃이 발생한 경우라도(단계 S303의 YES), 수신 흐름 제어 업데이트 유닛(103)은 수신 가능한 P타입 TLP의 헤더의 크레딧 수를 나타내는 업데이트 헤더 크레딧 수와, 수신 가능 한 P타입 TLP의 데이터의 크레딧 수를 나타내는 업데이트 데이터 크레딧 수를 포함하는 흐름 제어 정보를 UpdateFC DLLP로서 생성한다(단계 S404). UpdateFC DLLP는 가상 채널 번호와 TLP 타입(=P)을 포함한다. 이 후, 수신 흐름 제어 업데이트 유닛(103)은 타입 P에 대응하는 크레딧 수(Q1, Q2)와, 가상 채널 번호 VC#0과 타입 P의 조합에 대응하는 타이머를 초기화한다(단계 S405).
전술한 바와 같이, 각 TLP 타입마다 흐름 제어를 행함으로써, 특정 타입의 TLP에 의해서 수신 버퍼가 점유되는 것을 방지할 수 있어, 모든 타입의 TLP를 효율적으로 전송할 수 있다.
한편, 본 실시형태의 흐름 제어는 소프트웨어에 의해서 실현할 수도 있다.
부가 장점 및 변형이 당업자에게 쉽게 발상될 것이다. 이에, 더 넓은 양상에 있어서 본 발명은 본 명세서에 설명하고 도시한 특정의 세부 내용 및 대표적 실시예에 한정되지 않는다. 그에 따라, 다양한 변형예가 첨부하는 청구범위 및 그 등가물에 의한 일반적인 발명의 원리의 사상 또는 범주로부터 이탈하는 일없이 이루어질 수 있다.
본 발명에 따르면, 헤더와 데이터를 구별하여 흐름 제어를 수행할 수 있고, 또한 흐름 제어 정보를 최적의 타이밍에 송신 디바이스에 송신하는 것이 가능해진다.

Claims (10)

  1. 데이터 처리 장치에 있어서,
    제1 디바이스와,
    상기 제1 디바이스와 통신하는 제2 디바이스와,
    상기 제2 디바이스에 설치되어, 상기 제1 디바이스로부터 송신되는 패킷을 유지하는 수신 버퍼로서, 상기 패킷은 각각, 헤더 및 가변 길이의 데이터를 포함하는 패킷이거나, 헤더만 포함하고 데이터를 포함하지 않는 패킷인 것인 수신 버퍼와,
    상기 제2 디바이스에 설치되어, 상기 수신 버퍼로부터 출력된 각각의 패킷에 포함된 헤더 및 데이터 각각의 사이즈에 기초하여, 처리된 헤더의 사이즈를 나타내는 제1 값과, 처리된 데이터의 사이즈를 나타내는 제2 값을 계수하는 카운팅 유닛과,
    상기 제2 디바이스에 설치되어, 상기 제1 값 또는 제2 값이 대응하는 기준값에 도달한 경우, 상기 제2 디바이스에 의해 수신 가능한 헤더 및 데이터 각각의 사이즈를 나타내는 흐름 제어 정보를 상기 제1 디바이스에 송신하는 흐름 제어 정보 송신 유닛을 포함하는 데이터 처리 장치.
  2. 제1항에 있어서, 상기 카운팅 유닛은 상기 제1 값과 제2 값을 소정 사이즈의 크레딧 단위로 계수하는 것인 데이터 처리 장치.
  3. 제1항에 있어서, 상기 흐름 제어 정보의 마지막 송신에서부터의 경과 시간을 측정하는 타이머를 더 포함하고,
    상기 흐름 제어 정보 송신 유닛은 상기 제1 값 또는 제2 값이 대응하는 기준값에 도달하는 조건과, 상기 경과 시간이 소정의 시간에 도달한 조건 중 하나가 성립되는 경우에, 상기 흐름 제어 정보를 상기 제1 디바이스에 송신하도록 구성된 것인 데이터 처리 장치.
  4. 제1항에 있어서, 상기 제2 디바이스에 설치되어, 상기 수신 버퍼로부터 출력된 각각의 패킷이 통보형 요구 패킷, 비통보형 요구 패킷 및 완료 패킷 중 어느 것인지 판별하는 유닛을 더 포함하고,
    상기 카운팅 유닛은 각 상기 통보형 요구 패킷, 비통보형 요구 패킷 및 완료 패킷 타입마다, 상기 제1 값과 제2 값을 계수하도록 구성된 것인 데이터 처리 장치.
  5. 다른 디바이스와 통신하는 디바이스에 있어서,
    상기 다른 디바이스로부터 송신되는 패킷을 유지하는 수신 버퍼로서, 상기 패킷은 각각, 헤더 및 가변 길이의 데이터를 포함하는 패킷이거나 헤더만 포함하고 데이터를 포함하지 않는 패킷인 것인 수신 버퍼와,
    상기 수신 버퍼로부터 출력된 각각의 패킷에 포함되는 헤더 및 데이터 각각 의 사이즈에 기초하여, 처리된 헤더의 사이즈를 나타내는 제1 값과, 처리된 데이터의 사이즈를 나타내는 제2 값을 계수하는 카운팅 유닛과,
    상기 제1 값 또는 제2 값이 대응하는 기준값에 도달한 경우에, 수신 가능한 헤더 및 데이터 각각의 사이즈를 나타내는 흐름 제어 정보를 상기 다른 디바이스에 송신하는 흐름 제어 정보 송신 유닛을 포함하는 디바이스.
  6. 제5항에 있어서, 상기 흐름 제어 정보의 마지막 송신에서부터의 경과 시간을 측정하는 타이머를 더 포함하고,
    상기 흐름 제어 정보 송신 유닛은 상기 제1 값 또는 제2 값이 대응하는 기준값에 도달하는 조건과, 상기 경과 시간이 소정의 시간에 도달하는 조건 중 하나가 성립되는 경우에, 상기 흐름 제어 정보를 상기 다른 디바이스에 송신하도록 구성된 것인 디바이스.
  7. 제5항에 있어서, 상기 수신 버퍼로부터 출력된 각각의 패킷이 통보형 요구 패킷, 비통보형 요구 패킷 및 완료 패킷 중 어느 것인지 판별하는 유닛을 더 포함하고,
    상기 카운팅 유닛은 상기 통보형 요구 패킷, 비통보형 요구 패킷 및 완료 패킷 각각마다 상기 제1 값과 제2 값을 계수하도록 구성된 것인 디바이스.
  8. 제1 디바이스에서 제2 디바이스에 설치된 수신 버퍼로의 패킷 흐름을 제어하 기 위한 흐름 제어를 수행하는 방법으로서,
    상기 패킷은 각각, 헤더 및 가변 길이의 데이터를 포함하는 패킷이거나, 헤더만 포함하고 데이터를 포함하지 않는 패킷이며,
    상기 수신 버퍼로부터 출력된 각각의 패킷에 포함된 헤더 및 데이터 각각의 사이즈에 기초하여, 처리된 헤더의 사이즈를 나타내는 제1 값과, 처리된 데이터의 사이즈를 나타내는 제2 값을 계수하는 단계와,
    상기 제1 값 또는 제2 값이 대응하는 기준값에 도달한 경우, 상기 제2 디바이스에 의해 수신 가능한 헤더 및 데이터 각각의 사이즈를 나타내는 흐름 제어 정보를 상기 제2 디바이스에서 상기 제1 디바이스로 송신하는 단계를 포함하는 흐름 제어 방법.
  9. 제8항에 있어서, 상기 흐름 제어 정보의 마지막 송신에서부터의 경과 시간을 측정하는 단계를 더 포함하고,
    상기 송신 단계는 상기 제1 값 또는 제2 값이 대응하는 기준값에 도달하는 조건과, 상기 경과 시간이 소정의 시간에 도달하는 조건 중 하나가 성립되는 경우에, 상기 흐름 제어 정보를 상기 제2 디바이스에서 상기 제1 디바이스로 송신하는 단계를 포함하는 것인 흐름 제어 방법.
  10. 제8항에 있어서, 상기 수신 버퍼로부터 출력된 각각의 패킷이 통보형 요구 패킷, 비통보형 요구 패킷 및 완료 패킷 중 어느 것인지 판별하는 단계를 더 포함 하고,
    상기 계수 단계는 각 상기 통보형 요구 패킷, 비통보형 요구 패킷 및 완료 패킷마다, 상기 제1 값과 제2 값을 계수하는 단계를 포함하는 것인 흐름 제어 방법.
KR20050036039A 2004-05-20 2005-04-29 데이터 처리 장치 및 흐름 제어 방법 KR100715710B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2004-00150657 2004-05-20
JP2004150657A JP2005332250A (ja) 2004-05-20 2004-05-20 データ処理装置およびフロー制御方法

Publications (2)

Publication Number Publication Date
KR20060045868A true KR20060045868A (ko) 2006-05-17
KR100715710B1 KR100715710B1 (ko) 2007-05-08

Family

ID=34939134

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20050036039A KR100715710B1 (ko) 2004-05-20 2005-04-29 데이터 처리 장치 및 흐름 제어 방법

Country Status (5)

Country Link
US (1) US20050259651A1 (ko)
EP (1) EP1598746A3 (ko)
JP (1) JP2005332250A (ko)
KR (1) KR100715710B1 (ko)
CN (1) CN100417134C (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005008978A1 (ja) * 2003-07-18 2005-01-27 Fujitsu Limited 送信主導型フロー制御装置
US7814242B1 (en) * 2005-03-25 2010-10-12 Tilera Corporation Managing data flows in a parallel processing environment
US7698477B2 (en) * 2005-11-30 2010-04-13 Lsi Corporation Method and apparatus for managing flow control in PCI express transaction layer
US7694049B2 (en) * 2005-12-28 2010-04-06 Intel Corporation Rate control of flow control updates
US8255599B2 (en) * 2006-03-28 2012-08-28 Integrated Device Technology Inc. Packets transfer device having data absorbing buffers with elastic buffer capacities
CN101184022B (zh) * 2006-11-13 2011-10-05 中芯国际集成电路制造(上海)有限公司 信用处理装置和流控制传输装置及其方法
US8166156B2 (en) * 2006-11-30 2012-04-24 Nokia Corporation Failure differentiation and recovery in distributed systems
US20080313240A1 (en) * 2007-06-18 2008-12-18 Freking Ronald E Method for Creating Data Transfer Packets With Embedded Management Information
US20090003335A1 (en) * 2007-06-29 2009-01-01 International Business Machines Corporation Device, System and Method of Fragmentation of PCI Express Packets
US8984193B1 (en) * 2007-07-17 2015-03-17 Unisys Corporation Line speed sequential transaction packet processing
US7869356B2 (en) * 2007-12-18 2011-01-11 Plx Technology, Inc. Dynamic buffer pool in PCIExpress switches
GB2465595B (en) * 2008-11-21 2010-12-08 Nokia Corp A method and an apparatus for a gateway
US8045472B2 (en) * 2008-12-29 2011-10-25 Apple Inc. Credit management when resource granularity is larger than credit granularity
US9137160B2 (en) 2009-01-29 2015-09-15 Qualcomm Incorporated Method and apparatus for accomodating a receiver buffer to prevent data overflow
CN101534173B (zh) * 2009-04-20 2011-11-09 福建星网锐捷网络有限公司 一种数据流量控制方法和系统
US8819305B2 (en) * 2009-11-16 2014-08-26 Intel Corporation Directly providing data messages to a protocol layer
JP5614410B2 (ja) * 2009-11-27 2014-10-29 日本電気株式会社 フロー制御装置、ネットワークシステム、ネットワーク制御方法およびプログラム
JP5414506B2 (ja) * 2009-12-18 2014-02-12 キヤノン株式会社 データ処理装置、データ処理方法、及びプログラム
CN101964745B (zh) * 2010-06-12 2012-06-27 福建星网锐捷网络有限公司 一种网络转发设备及其进行报文转发的方法
JP5958192B2 (ja) * 2012-08-30 2016-07-27 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US9524261B2 (en) 2012-12-21 2016-12-20 Apple Inc. Credit lookahead mechanism
WO2014115250A1 (ja) * 2013-01-22 2014-07-31 富士通株式会社 データ転送装置、データ転送方法およびデータ転送プログラム
CN104375967B (zh) * 2013-08-15 2017-09-05 华为技术有限公司 一种应用于pci‑e的流量控制方法、设备及系统
US9760514B1 (en) * 2016-09-26 2017-09-12 International Business Machines Corporation Multi-packet processing with ordering rule enforcement
KR20230045306A (ko) 2021-09-28 2023-04-04 삼성전자주식회사 흐름 제어 모니터링을 통하여 동작을 제어하는 스토리지 장치 및 시스템

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5063562A (en) * 1990-05-23 1991-11-05 International Business Machines Corporation Flow control for high speed networks
JPH04108242A (ja) * 1990-08-28 1992-04-09 Nec Corp 通信制御装置のデータ転送方式
US5848297A (en) * 1991-12-30 1998-12-08 Apple Computer, Inc. Control apparatus for maintaining order and accomplishing priority promotion in a computer interconnect
US5260942A (en) * 1992-03-06 1993-11-09 International Business Machines Corporation Method and apparatus for batching the receipt of data packets
SG47794A1 (en) * 1993-09-30 1998-04-17 Intel Corp Buffer memory management for a computer network node
JP2929991B2 (ja) * 1996-01-29 1999-08-03 日本電気株式会社 最適化クレジット制御方法
US5920698A (en) * 1997-01-06 1999-07-06 Digital Equipment Corporation Automatic detection of a similar device at the other end of a wire in a computer network
US6977930B1 (en) * 2000-02-14 2005-12-20 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US20020167948A1 (en) * 2001-05-09 2002-11-14 Dayong Chen Communications methods, apparatus, computer program products and data structures using segment sequence numbers
US6826634B2 (en) 2002-06-10 2004-11-30 Sun Microsystems, Inc. Extended message block for network device drivers
US6760793B2 (en) * 2002-07-29 2004-07-06 Isys Technologies, Inc. Transaction credit control for serial I/O systems

Also Published As

Publication number Publication date
EP1598746A2 (en) 2005-11-23
CN1700673A (zh) 2005-11-23
US20050259651A1 (en) 2005-11-24
JP2005332250A (ja) 2005-12-02
CN100417134C (zh) 2008-09-03
EP1598746A3 (en) 2007-10-24
KR100715710B1 (ko) 2007-05-08

Similar Documents

Publication Publication Date Title
KR100715710B1 (ko) 데이터 처리 장치 및 흐름 제어 방법
US7583600B1 (en) Schedule prediction for data link layer packets
US7698477B2 (en) Method and apparatus for managing flow control in PCI express transaction layer
US9836424B2 (en) General input/output architecture, protocol and related methods to implement flow control
US7461195B1 (en) Method and system for dynamically adjusting data transfer rates in PCI-express devices
US9088495B2 (en) General input/output architecture, protocol and related methods to implement flow control
JP4638216B2 (ja) オンチップバス
US7660917B2 (en) System and method of implementing multiple internal virtual channels based on a single external virtual channel
US7165131B2 (en) Separating transactions into different virtual channels
JP5805879B2 (ja) 拡張ヘッダを用いたパケット送信
EP1897333B1 (en) Method for parallel data integrity checking of pci express devices
RU2559727C2 (ru) Способ и устройство для обеспечения потоков на основе идентификатора через шину pci express
EP2546758B1 (en) Data transfer apparatus and image forming system
US10853289B2 (en) System, apparatus and method for hardware-based bi-directional communication via reliable high performance half-duplex link
US20080313240A1 (en) Method for Creating Data Transfer Packets With Embedded Management Information
CN113227991A (zh) 替代协议选择
KR20150109259A (ko) 트랜잭션 계층 패킷의 싱글 엔드형 통신을 위한 방법, 장치 및 시스템
US20080301605A1 (en) Method for designing lsi system and design support device for lsi system
US7039750B1 (en) On-chip switch fabric
US6904545B1 (en) Fault tolerant computing node having multiple host channel adapters
US8185662B2 (en) Using end-to-end credit flow control to reduce number of virtual lanes implemented at link and switch layers
JP4916162B2 (ja) 統合コンピュータシステムファブリックのためのシステム及び方法
EP1161727B1 (en) Bus bridge
EP1188120B1 (en) Computer docking system and method

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
LAPS Lapse due to unpaid annual fee