KR20010050628A - 동기 패킷 전송 방법, 동전송을 실현하는 제어 프로그램을기록한 컴퓨터 판독 가능한 기록 매체, 브릿지 및 패킷전송 제어 대규모 집적 회로 - Google Patents

동기 패킷 전송 방법, 동전송을 실현하는 제어 프로그램을기록한 컴퓨터 판독 가능한 기록 매체, 브릿지 및 패킷전송 제어 대규모 집적 회로 Download PDF

Info

Publication number
KR20010050628A
KR20010050628A KR1020000056214A KR20000056214A KR20010050628A KR 20010050628 A KR20010050628 A KR 20010050628A KR 1020000056214 A KR1020000056214 A KR 1020000056214A KR 20000056214 A KR20000056214 A KR 20000056214A KR 20010050628 A KR20010050628 A KR 20010050628A
Authority
KR
South Korea
Prior art keywords
cycle
identification information
packet
bus
portal
Prior art date
Application number
KR1020000056214A
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
Application filed by 가네코 히사시, 닛폰 덴키 주식회사 filed Critical 가네코 히사시
Publication of KR20010050628A publication Critical patent/KR20010050628A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40058Isochronous transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40065Bandwidth and channel allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40091Bus bridging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • H04L2012/6432Topology
    • H04L2012/6435Bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • H04L2012/6445Admission control
    • H04L2012/6456Channel and bandwidth allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

동기 패킷 전송에 필요한 송신 버퍼 사이즈를 삭감할 수 있으며, 사이클 스타트 패킷 송출이 지연해도 동기 패킷에 일정 지연을 주는 것이 가능한 동기 패킷 전송 방법을 제공한다. 입력 측 버스(40)로부터 수신한 동기 패킷을 지연부(111)에 입력하여, 지연 정보(109)에 따라서 이 동기 패킷을 지연시켜 출력 측 버스(41)에 송신한다. 입력 측 및 출력 측 사이클 식별 정보 생성부(103, 104)는 입력 측 버스(40) 및 출력 측 버스(41)에 사이클 스타트 패킷이 송출되는 타이밍으로 변화하는 사이클 식별 정보(101, 102)를 각각 출력한다. 입력 측 및 출력 측 참조 사이클 식별 정보 생성부(107, 108)는 입력 측 및 출력 측 사이클 식별 정보(101, 102)를 소정 타이밍으로 샘플링하여 입력 측 및 출력 측 참조 사이클 식별 정보(105, 106)를 출력한다. 지연 정보 생성부(110)는 입력 측 및 출력 측 사이클 식별 정보(101, 102)와 입력 측 및 출력 측 참조 사이클 식별 정보(105, 106)에 근거하여, 상기 소정 타이밍으로부터의 버스마다의 경과 사이클 수의 차이에 고정 지연을 더하여 지연 정보(109)를 생성한다.

Description

동기 패킷 전송 방법, 동전송을 실현하는 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체, 브릿지 및 패킷 전송 제어 대규모 집적 회로{Method of transmitting isochronous packets, computer-needable recording medium recorded a control program for realizing the same transmission, and LSI for controlling bridge and packet transmission}
본 발명은 IEEE(전기 전자 기술자 협회) 1394 규격이나 USB(Universal Serial Bus) 사양에 준거하는 버스를 사용한 통신 네트워크 상에 있어서, 미리 전송 대역이 보증되어 있는 패킷을 전송하기 위한 동기(Isochronous) 패킷 전송 방법에 관한다. 또, 본 발명은 이 동기 패킷 전송 방법의 실현 수단인 동기 패킷 전송 제어 프로그램을 기록한 기록 매체, 브릿지 및 패킷 전송 제어 LSI(대규모 집적 회로)에 관한 것이다.
본 명세서는 일본국으로의 특허 출원(일본국 공개 특허 공보 제(평) 11-288750호)에 근거하는 것으로, 이 특허 출원의 기재 내용은 본 명세서의 일부로서 들어간다.
최근, 매초 100메가비트(S100), 매초 20O메가비트(S200) 혹은 매초 400메가비트(S400)라는 고속 전송 능력을 갖는 고성능 시리얼 버스 규격으로서, IEEE 1394 규격("IEEE Std. 1394-1995, IEEE Standard for a High Performance Serial Bus", 이하에서는 「1394 규격」이라 약기한다)이 주목을 받고 있다. 1394 규격에서는, 화상이나 음성과 같이 재생 도중에서 멈춰버려 곤란한 리얼 타임계 데이터를 전송하기 위해, 패킷의 전송 대역을 보증하는 「동기 전송 모드」가 규정되어 있다. 이 동기 전송 모드는 공칭으로 8킬로 헤르쯔의 주파수(125마이크로초의 주기)를 갖는 「사이클」이라는 개념 및 패킷 전송이 가능한 시간을 사이클마다 미리 획득해 두는 순서를 도입함으로써 실현되고 있다. 또한, 이하에서는 동기 전송 모드에서 전송되는 패킷을 「동기 패킷」이라 부르는 것으로 한다.
종래 기술의 문제점을 파악하는 데에는 1394 규격에 관한 지식이 불가결하기 때문에, 약간 길어지지만 이하에 상세하게 설명한다. 우선, 도 17을 참조하여, 사이클을 관리하기 위해 1394 규격에서 규정되어 있는 구체적인 방법을 설명한다. 버스에 접속된 1394 규격의 노드(이후는 간단히 「노드」라 한다) 중에는 「사이클 매스터」라 불리는 노드가 하나 설정되어 있다. 그리고, 버스에 접속된 각 노드가 사이클 매스터로부터 동보되는 「사이클 스타트 패킷」이라 부르는 패킷을 검출함으로써, 사이클 개시가 인식된다. 또, 동기 패킷을 송수신하는 노드와 사이클 매스터는 어느 것도 시각 정보를 격납하기 위한 CYCLE_TIME 레지스터를 실장하고 있다. 사이클 매스터는 이 CYCLE_TIME 레지스터를 사용하여 사이클 스타트 패킷의 송신 주기를 일정하게 유지하고 있다.
여기서, 도 18은 1394 규격으로 규정되어 있는 CYCLE_TIME 레지스터의 포맷을 도시하고 있다. 도시한 바와 같이, CYCLE_TIME 레지스터는 32비트 폭의 레지스터로, 최상위 비트로부터 7비트가 second_count 필드, 이에 연속되는 13비트가 cycle_count 필드, 최하위 비트까지의 12비트가 cycle_offset 필드라 각각 불리고 있다. 이 중, cycle_offset 필드는 공칭 24.576메가 헤르쯔의 클록으로 카운트 업되는 3072진(10진수)의 카운터로, "3071"(10진수)까지 카운트된 후에 "0"으로 돌아간다. 즉, 이 카운터의 카운트치는 사이클 주기인 125마이크로초마다 값이 "0"으로 돌아가게 되어 있다. 또한, 이하에서는 특별히 거절하지 않는 한 모든 수치를 10진수로 표현한다.
다음으로, cycle_count 필드는 사이클 수를 카운트하기 위한 8000진의 카운터로, cycle_offset 필드가 "0"으로 돌아가는 타이밍으로(125마이크로초마다) 그 카운트치가 "1"만큼 카운트 업된다. 즉, 이 카운터의 카운트치는 "7999"까지 카운트되어 1초마다 "O"으로 돌아간다. 다음으로, second_count 필드는 「초」를 카운트하기 위한 128진의 카운터로, cycle_count 필드가 "0"으로 돌아가는 타이밍으로 "1"만큼 카운트 업되어 가며, 그 카운트치가 "127"까지 카운트된 후에 "0"으로 돌아간다.
다음으로, 사이클 스타트 패킷의 포맷을 도 19에 도시한다. 도면 중, 패킷 송신 노드를 나타내는 source_ID 필드에는, 사이클 매스터의 노드 ID(식별자)가 격납된다. 또한, 버스에 접속되어 있는 각 노드에는 각각 고유의 노드 ID가 부여되어 있다. 다음으로, 패킷 수신 노드를 나타내는 destination_ID 필드에는, 모든 노드에 동보되는 것을 나타내는 "FFFF"(16진수)가 격납된다. 다음으로, 패킷의 종별을 나타내는 tcode(transaction code) 필드에는 사이클 스타트 패킷인 것을 나타내는 "8"이 격납된다. 다음으로, cycle_time_data 필드에는, 이 사이클 스타트 패킷을 송신할 때에 사이클 매스터가 보존하고 있는 CYCLE_TIME 레지스터 값이 격납된다. 또한, 상술한 것 이외의 필드는 여기에서의 설명에는 직접 관계하지 않기 때문에 그 설명을 생략한다.
사이클 매스터로 되어 있지 않은 노드는 사이클 스타트 패킷을 수신하여, 자신이 갖는 CYCLE_TIME 레지스터 값을 사이클 스타트 패킷 중의 cycle_time_data 필드 값으로 표서한다. 이렇게 함으로써, 버스에 접속되는 모든 노드가 보존하는 CYCLE_TIME 레지스터 값은 사이클 매스터가 보존하는 CYCLE_TIME 레지스터 값에 동기하게 된다.
그런데, 도 17에 도시하는 바와 같이 사이클 스타트 패킷이 전송되면, 미리 대역을 획득하고 있던 노드가 동기 패킷 송신을 개시한다. 다음으로, 데이터 전송이 없는 「동기 갭」이라 불리는 기간이 경과하고나서 버스 조정(arbitration)을 행하며, 패킷 송신권을 획득한 노드로부터 순서대로 패킷 전송을 행한다. 이러한 것을 반복함으로써, 대역이 획득되어 있던 모든 동기 패킷 전송이 종료한다. 그렇다면, 동기 갭에 상당하는 갭의 기간이 경과해도, 어느 노드도 동기 패킷을 송신하는 경우가 없어진다.
그리고, 이 동기 갭보다도 긴 「서브액션 갭」이라 불리는 시간이 경과해도 동기 패킷이 검출되지 않으면, 비동기(Asynchronous)라 불리는 베스트 에포트(best effort)형 패킷을 전송하는 기간이 된다. 이 비동기 패킷의 전송 기간은 다음 사이클 개시를 나타내는 사이클 스타트 패킷이 검출될 때까지 계속한다. 이상과 같이, 각 사이클의 전반은 대역 보증된 동기 패킷의 전송 기간에 할당되며, 남는 후반은 베스트 에포트형 비동기 패킷 전송 기간에 할당된다. 또한, 동기 패킷의 전송 기간으로서 이용 가능한 대역은 전체(1사이클)에 대해 최대 8O%로 제한되어 있으며, 이로써, 비동기 패킷을 전혀 전송할 수 없는 상황을 회피하고 있다.
사이클 매스터는 CYCLE_TIME 레지스터의 cycle_count 필드가 인크리먼트되는 타이밍으로 사이클 스타트 패킷 송신을 시도한다. 그러나, 사이클 스타트 패킷도 베스트 에포트형 비동기 패킷의 일종이다. 즉, 상술한 CYCLE_TIME 레지스터에 의존하는 타이밍에 더불어, 서브액션 갭을 검출한 후에 버스 조정을 행하여 패킷 송신권을 획득하고나서가 아니면, 사이클 스타트 패킷을 송신할 수 없다. 따라서, 전송중인 패킷이 버스 상에 없으면 cycle_count 필드가 인크리먼트되는 타이밍으로 사이클 스타트 패킷을 바로 송신할 수 있다. 이에 대해, 전송중인 패킷이 버스 상에 있을 경우 등에는, 이 패킷 전송이 완료하고나서가 아니면 사이클 스타트 패킷을 송신할 수 없다.
사이클 스타트 패킷을 송출할 때의 지연 최대치는 허용 가능한 비동기 패킷의 최대 패킷 사이즈에 의존하고 있다. 1394 규격에서는, S100, S200, S400의 각 전송 속도에 있어서의 비동기 패킷의 최대 데이타 필드 길이가 각각 512바이트, 1024바이트, 2048바이트라 규정되어 있다. 따라서, 데이터 필드에 대해 헤더나 CRC(Cyclic Redundancy Check) 필드를 부가하기 위한 처리 시간도 가미하면, 패킷 전송에 요하는 시간은 약 45마이크로초라 시산된다. 이상 설명한 것으로부터 이해되는 바와 같이, 사이클 스타트 패킷에 의해 제어되는 공칭 8킬로 헤르쯔의 사이클 주파수는 버스 상의 트래픽에 따른 지터를 본질적으로 갖고 있다. 또한, 사이클 스타트 패킷이 본래의 송출 타이밍보다도 늦게 송출될 경우에는, 그 지연 분도 포함한 시각 정보가 사이클 스타트 패킷의 cycle_time_data 필드에 격납된다. 또, CYCLE_TIME 레지스터에 격납되는 시각 정보는 사이클 스타트 패킷의 송출 타이밍에 의존하지 않고 갱신된다.
한편, 1394 규격에 있어서는, 복수의 1394 규격의 버스(이하, 「1394 버스」라 부른다)를 서로 접속하여 다른 버스 사이에서 패킷 전송을 행하기 위한 IEEE 1394 브릿지(이하에서는 간단히 「브릿지」라 한다)가 검토되고 있으며, IEEE의 P1394.1 위원회에서 표준화 작업이 행해지고 있다. 이 브릿지를 사용함으로써 1394 규격을 사용한 네트워크의 대규모화나 고효율화를 도모할 수 있다. 이하, 도 20을 참조하여 브릿지의 기본 구성에 대해서 설명한다. 브릿지는 기본적으로 포털과 스위칭 패브릭으로 구성되어 있다. 이 중, 포털은 브릿지가 1394 버스와 접속되는 부분으로, 포털 자신도 노드로서 동작한다. 또, 스위칭 패브릭은 브릿지 내부에 있어서 포털 사이에서 패킷 전송을 행하기 위한 패킷 교환기이다.
도 20에서는, 브릿지(10)가 3개의 포털(20 내지 22)과 이들을 상호 접속하는 스위칭 패브릭(30)을 내장하고 있는 구성이 예시되어 있지만, 1개의 브릿지에 내장되는 포털 수는 2개 이상이면 몇개여도 된다. 포털(20 내지 22)은 각각 1394 버스인 버스(40 내지 42)에 접속되어 있으며, 이들 버스 사이에서 패킷 전송이 가능하게 되어 있다. 이들 버스(40 내지 42)에는 노드(50 내지 52)가 각각 접속되어 있다. 여기서는, 버스(40)에 접속되는 노드(50)로부터 버스(41)에 접속되는 노드(51)에 대해 브릿지(10)를 개재시켜 패킷이 전송될 경우를 예로 들어, 브릿지 동작의 개요를 설명한다.
우선 포털(2O)은 버스(40)를 개재시켜 노드(50)가 송신한 패킷을 수신하고, 다음으로, 수신한 패킷이 버스(40) 이외의 다른 버스에 전송되어야 하는 것인지의 여부를 조사한다. 이것을 조사하는 방법에 대해서는 P1394.1 위원회에서 몇개인지 의론되어 있지만, 여기서는 그 상세함에 대해서는 언급되지 않는다. 그리고, 포털(20)은 수신한 패킷이 다른 버스에 전송되어야 한다고 판단한 경우에, 해당 패킷을 스위칭 패브릭(30)을 향해 출력한다. 스위칭 패브릭(30)은 입력된 패킷을 전송해야 할 버스에 접속된 포털로 해당 패킷을 출력한다. 이 예에 의하면, 패킷은 버스(41)에 접속된 포털(21)로 출력된다. 이로써, 포털(21)은 스위칭 패브릭(30)으로부터 입력된 패킷을 버스(41)에 전송하고, 노드(51)가 버스(41)를 개재시켜 해당 패킷을 수신함으로써, 노드(5O)로부터 노드(51)에 대한 패킷 전송이 완료한다.
이상과 같이, 포털이 자신에게 대응하는 버스로부터 스위칭 패브릭(30)으로 패킷을 전송하는 동작 및 스위칭 패브릭(3O)으로부터 목적으로 하는 버스로 패킷을 전송하는 동작을 포털이 적당히 행함으로써, 패킷의 버스간 전송이 행해진다. 또한, 이 이후의 설명에서는, 포털이 행하는 전자의 동작을 「입력 포털 동작」이라 부르고, 후자의 동작을 「출력 포털 동작」이라 부른다. 또, 상술한 포털(20) 및 포털(21)과 동일한 역할을 하는 포털을 각각 「입력 포털」 및 「출력 포털」이라 부른다.
다음으로, 상술한 브릿지를 사용하여 다른 버스 사이에서 동기 패킷 전송을 행할 경우, 입력 포털 측에 있어서의 패킷 사이의 사이클 간격을 출력 포털 측에 있어서의 버스 상에서도 보존해야만 한다. 그 이유는 동기 패킷 전송에 앞서 획득되어 있는 버스 대역에 위반한 트래픽을 버스에 송출하지 않도록 하기 위함이다. 예를 들면, 입력 포털 측 버스로부터 각 사이클에 1패킷씩 입력되는 패킷을 다른 버스에 전송할 경우는 출력 포털 측 버스라도 각 사이클에 1패킷씩의 비율로 패킷이 전송되어야 한다. 그럼에도 불구하고, 어느 특정 사이클로 출력 포털 측 버스에 패킷을 송신하지 않고, 이에 연속되는 사이클에 있어서 2개의 패킷을 송신해버리면, 해당 후속 사이클에서는 획득한 대역의 2배의 트래픽을 순간적으로 송출해버리게 된다.
또, 상술한 바와 같이 1394 규격에는 조정, 갭 및 사이클 주파수의 지터가 존재한다. 이들 존재에 더불어 지금 서술한 바와 같은 요구를 만족하기 위해, 브릿지(10)는 전송되는 동기 패킷에 대해 수 사이클의 고정 지연을 준 후에 출력 포털 측 버스로 해당 동기 패킷을 송출할 필요가 있다. 또한, 브릿지가 동기 패킷에 주는 상기 고정 지연을 P1394.1 위원회에서는 「동기 지연」(isochronous delay)이라 부르고 있다. 이하, 이러한 동기 지연의 필요성에 대해서 상술한다.
우선 처음에, 도 21a 및 도 21b를 참조하여 조정 및 갭에 기인하는 고정 지연에 대해서 설명한다. 이들 도면에서는 입력 포털 측 버스와 출력 포털 측 버스의 트래픽을 도시함과 동시에, 사이클 지연을 주지 않는 경우(도 21a)와 1사이클의 지연을 준 경우(도 21b)를 대비시켜 도시하고 있다. 또한, 동일 도면에서는 편의적으로 동기 패킷을 "A" 내지 "E" 기호로 표현하고 있지만, 실제로는 동기 버스 패킷의 헤더 중의 채널 필드에 격납되어 있는 채널 번호(channel number) 값에 따라서 개개의 동기 패킷이 식별된다.
입력 포털 측 버스에서는, A, B 및 C라는 3종류의 동기 패킷이 전송되어 있다. 이들 패킷 중에서 패킷(A) 및 패킷(B)이 정상적으로 전송되고 있으며, 패킷(C)은 사이클(C2)에 있어서만 전송된다. 또, 패킷(A, B 및 C) 중에서는 패킷(B)만이 출력 포털 측 버스를 향해 버스간 전송된다. 한편, 출력 포털 측 버스에서 전송되는 동기 패킷은 상기 패킷(B) 이외에 패킷(D) 및 패킷(E)이 있다. 더욱이, 패킷(C)의 송신 노드는 조정 과정에 있어서 패킷(A)이나 패킷(B)의 송신 노드보다도 먼저 버스를 획득할 수 있는 것으로 하고 있다. 또한, 도면 중에서 빗금친 부분은 각 사이클에 있어서 동기 패킷이 전송되는 기간(이하 「동기 기간」이라 한다)으로, 이 동기 기간의 끝을 나타내는 서브액션 갭까지 포함하여 빗금을 붙이고 있다.
이상과 같은 입력 포털 측 버스의 트래픽에 대해, 브릿지에서 사이클 지연을 주지 않을 경우의 출력 포털 측 버스의 트래픽은 도 21a에 도시하는 것이 된다. 도시한 바와 같이, 패킷(B)은 입력 포털로부터 출력 포털의 송신 버퍼에 일단 격납된 후, 출력 포털이 조정에 의해 버스를 획득하고나서 출력 포털 측 버스에 송신된다. 이 경우, 사이클(C1)에서는 패킷(B)의 버스간 전송은 성공 후에 행해지고 있다. 또한, 출력 포털의 송신 버퍼는 FIFO(퍼스트·인·퍼스트·아웃) 메모리 등에 의해 실현되고 있다. 이 FIFO 메모리는 1394 규격의 층(레이어) 구조에 있어서의 링크층을 실현하기 위한 링크층 LSI에 실장되어 있다.
이에 대해 사이클(C2)에서는, 입력 포털 측 버스에 있어서의 조정 결과로서 동기 기간의 후반에 패킷(B)이 송출되었기 때문에, 출력 포털 측 버스에서 동기 기간의 상한 범위 내에 패킷을 송신할 수 없다. 즉, 도시하는 예에서는, 패킷(E)이 전송된 후에 동기 갭이 경과하고, 그리고나서 잠시 후 패킷(B)이 전송된다. 이 때문에, 동기 기간의 마지막에 있는 서브액션 갭의 시간이 충분히 확보되지 않게 되어 있다. 따라서, 패킷(B)을 출력 포털 측 버스에 송신하는 것은 실제로는 가능하지만, 1394 규격에 위반한 패킷이 되어버린다.
또, 사이클(C3)에서는, 출력 포털 측 버스에 대해 패킷(D) 및 패킷(E)이 사이클(C1) 및 사이클(C2)과 같이 송신되는 경우는 없다. 이 때문에, 입력 포털 측 버스로부터 패킷(B)이 전송된 타이밍에 있어서, 출력 포털 측 버스에서는 서브액션 갭이 검출되어 동기 기간(비동기 기간)으로 이행해버리고 있다. 이 때문에, 사이클(C3)에서는 패킷(B)을 송신할 수 없으며, 사이클(C3)에서는 패킷 결핍이 발생한다. 또한, 패킷(B)은 사이클(C3)보다도 나중 사이클에서 송신되게 된다.
이상과 같이, 브릿지에서 사이클 지연을 주지 않으면, 동기 기간 상한 위반이나 동기 패킷이 결핍된 사이클이 출현한다는 문제가 생겨난다.
이에 대해, 동기 패킷을 버스간 전송할 때에 브릿지에서 1사이클 지연을 주면, 도 21b에 도시되는 바와 같이, 조정이나 갭에 의존하지 않고 패킷(B)을 매 사이클 버스간 전송할 수 있다. 즉, 사이클(C1)에서 출력 포털의 송신 버퍼에 격납된 패킷(B)은 사이클(C2)에 있어서 패킷(E)이 송신된 시점으로부터 동기 갭만큼 간격을 두고 버스간 전송된다. 또, 사이클(C2)에서 출력 포털의 송신 버퍼에 격납된 패킷(B)은 사이클(C3)에 있어서 사이클 스타트 패킷이 송신된 시점으로부터 동기 갭만큼 간격을 두고 버스간 전송된다.
다음으로, 도 22a 및 도 22b를 참조하여, 트래픽에 기인하는 지터가 사이클 주파수에 생겼을 때에 필요해져 오는 동기 지연 값에 대해서 설명한다. 또한, 도 21a 및 도 21b의 경우와 마찬가지로 빗금친 부분이 동기 기간에 상당하고 있다. 또, 도 22a 및 도 22b에서는 패킷(B) 이외의 트래픽에 대해서는 도시를 생략하고 있다. 입력 포털 측 버스와 출력 포털 측 버스에서는 트래픽이 서로 독립하고 있기 때문에, 도시한 바와 같이, 사이클 스타트 패킷은 다른쪽 버스에 대해 서로 비동기로 송출된다. 이러한 상황에 있어서, 패킷(B)을 버스간 전송할 때에 브릿지에서 1사이클의 고정 지연을 준 경우의 모양을 도 22a에 도시하고 있다.
동일 도면에 있어서, 입력 포털 측 버스의 사이클(C2)에 있어서의 패킷(B)이 출력 포털의 송신 버퍼에 격납되었을 때에는, 출력 포털 측 버스에서는 이미 사이클(C3)로 들어가 있다. 따라서, 해당 패킷(B)은 바로 출력 포털 측 버스로 송신되어야 하지만, 출력 포털 측 버스에서는 이미 서브액션 갭이 검출되어 비동기 기간으로 들어가버려 있다. 이 때문에, 상기 패킷(B)은 연속되는 사이클(C4)에서 출력 포털 측 버스로 송신되게 되어, 사이클(C3)에서는 패킷(B)이 결핍해버린다.
이렇게, 조정이나 갭에 더불어 사이클 주파수의 지터까지 고려하면, 브릿지에서 1사이클 지연을 주는 것 만으로는 불충분하다. 즉, 도 22b에 도시되는 바와 같이, 입력 포털 측 버스에 전송된 패킷을 출력 포털 측 버스에 송신하는 데 있어서 최저한 2사이클 지연을 줄 필요가 있다. 또한, 주의해야 할 점으로서, 동기 패킷은 사이클 스타트 패킷 직후로부터 조정이 개시되기 때문에, 동기 지연은 출력 포털 측 버스의 사이클에 근거하여 카운트되어야 한다.
다음으로, 최저 2사이클의 동기 지연을 주기 위해 필요해지는 송신 버퍼량에 관해서 설명한다. 링크층 LSI에 실장된 상술한 FIFO는 오버 플로우 또는 언더 플로우를 일으키지 않는 범위 내에 어느 일정 주기로 패킷을 출력함으로써, 입력된 패킷이 갖는 지터를 흡수하고 있다. 즉, 동기 패킷의 버스간 전송에 FIFO를 사용할 경우, 오버 플로우 또는 언더 플로우를 일으키지 않을 정도로 동기 패킷이 FIFO에 저장되고나서, 출력 포털 측 버스에 패킷을 매 사이클 송신하게 된다. 상술한 바와 같이 동기 지연으로서 최저 2사이클 필요한 것과, 사이클 스타트 패킷의 지터가 존재하는 것을 더불어 고려하면, 패킷이 결핍하는 사이클이 생기지 않도록 하는 데에는, 3사이클분 이상의 패킷이 송신 버퍼에 저장되고나서 출력 포털 측 버스로의 송신을 시도하면 된다.
여기서, 상술한 송신 버퍼 제어를 사용하여 동기 패킷을 버스간 전송했을 때에, 송신 버퍼량이 변천해 가는 모양을 도 23에 도시한다. 여기서는, 출력 포털의 송신 버퍼가 사이클(C1)의 개시 시각에서 0인 것으로 한다. 이 경우, 사이클(C1 내지 C3)에서는 입력 포털 측 버스로부터 송신 버퍼 패킷이 격납되어 감에 따라서, 송신 버퍼의 축적량도 점차 증가해간다. 그리고, 패킷(C)이 송신 버퍼에 격납되고나서 출력 포털 측 버스로의 송신이 개시된다. 다만, 사이클 스타트 패킷이 갖는 지터의 영향이 있기 때문에, 패킷(C)의 송신 버퍼로의 격납이 완료하는 것은 출력 포털 측 버스의 사이클(C4)이 된다. 따라서, 사이클(C1)에서 송신 버퍼에 격납된 패킷(A)은 사이클(C4)이 아니라 사이클(C5)에서 송신되게 되어, 동기 지연은 4사이클이 된다. 또, 도 23에 도시한 송신 버퍼 축적량의 그래프로부터 보아 얻어지는 바와 같이, 송신 버퍼에는 4사이클분을 넘는 패킷이 격납되기 때문에, 송신 버퍼 용량은 5사이클분 필요해진다.
이상 서술한 바와 같이, 종래의 송신 버퍼 제어를 사용한 경우, 2사이클 이상의 동기 지연을 확보하면서, 패킷이 결핍된 사이클을 출력 포털 측 버스에서 발생시키지 않기 위해서는, 5사이클분의 송신 버퍼를 확보할 필요가 있다. 여기서, 1394 규격의 최대 전송 속도인 S400에서는 1사이클당 약 4킬로바이트의 동기 패킷을 전송 가능하다. 따라서, 5사이클분의 동기 패킷을 축적하기 위해서는, 약 20킬로바이트의 송신 버퍼를 각 포털에 구비할 필요가 있다. 이 20킬로바이트라는 값은 현시점에 있어서의 링크층 LSI의 제조 기술을 생각하면 대단히 큰 값으로, 칩 사이즈 증대에 의한 코스트 증가를 초래해버리는 것은 피할 수 없다. 그렇기는 해도 코스트를 억제하기 위해 송신 버퍼 사이즈를 작게 해버리면, 1사이클당에서 사용 가능한 버퍼가 작아져버리기 때문에, 브릿지의 전송 스루풋에 제한을 주어버린다는 문제가 있다.
또, 종래의 송신 버퍼 제어를 사용하면 도 24에 도시되는 바와 같은 문제도 발생할 수 있다. 즉, 입력 포털 측 버스의 사이클(C4)에서는 출력 포털 측 버스에 전송되어야 할 동기 패킷이 존재하지 않으며, 패킷(C)과 패킷(D) 사이가 1사이클분만큼 비어 있다. 그렇지만, 송신 버퍼에 의한 평활화 영향에 의해, 출력 포털 측 버스에서는 패킷(C)과 패킷(D) 사이가 채워져 전송되어버린다. 즉, 종래의 송신 버퍼 제어를 사용하면, 버스간 전송 대상이 되는 동기 패킷이 전송되지 않는 사이클이 존재했을 때에, 해당 사이클 이전과 해당 사이클 이후에서 패킷에 주어지는 동기 지연량이 변해버린다. 이 때문에, 출력 포털 측 버스에 있어서 지터가 발생해버린다는 문제가 나온다.
본 발명은 상술한 문제에 비추어 이루어진 것으로, 그 목적은 동기 패킷을 버스간 전송할 때에 필요해지는 송신 버퍼 사이즈를 삭감할 수 있고, 더구나, 사이클 스타트 패킷에 송출 지연이 있는 경우에도 전송되는 동기 패킷에 일정한 동기 지연을 주는 것이 가능한 동기 패킷 전송 방법을 제공함에 있다. 또, 본 발명은 이러한 동기 패킷 방법을 실현하기 위한 동기 패킷 전송 제어 프로그램을 기록한 기록 매체, 브릿지 및 패킷 전송 제어 LSI를 제공하는 것을 한층 더 목적으로 하고 있다.
본 발명의 제 1 양태에서는, 사이클 단위로 전송 대역이 보증된 동기 패킷을 다른 버스 사이에서 전송하는 동기 패킷 전송 방법으로, 사이클 개시를 나타내는 사이클 스타트 패킷이 버스로 송출되는 타이밍에 동기하여 변화하는 사이클 식별 정보를 입력 측 버스 및 출력 측 버스 각각에 대해서 생성하며, 이들 사이클 식별 정보에 근거하여, 미리 정해진 동일 타이밍으로부터의 경과 사이클 수를 입력 측 버스 및 출력 측 버스 각각에 대해 구하고, 이들 경과 사이클 수에 근거하여 산출한 지연 정보가 나타내는 사이클 수가 출력 측 버스 상에서 경과할 때까지, 입력 측 버스로부터 입력된 동기 패킷을 지연시켜 출력 측 버스로 송신하고 있다.
또, 본 발명의 제 2 양태에서는, 사이클 단위로 전송 대역이 보증된 동기 패킷을 다른 버스 사이에서 전송하는 동기 패킷 전송 방법으로, 사이클 개시를 나타내는 사이클 스타트 패킷이 입력 측 버스 상 및 출력 측 버스 상에서 각각 발생하라 정도로 변화하는 사이클 식별 정보를 입력 측 사이클 식별 정보 및 출력 측 사이클 식별 정보로서 각각 생성하고, 입력 측 사이클 식별 정보 및 출력측 사이클 식별 정보를 미리 정해진 동일 타이밍으로 취득하여 입력 측 참조 사이클 식별 정보 및 출력 측 참조 사이클 식별 정보를 각각 생성하며, 입력 측 참조 사이클 식별 정보가 나타내는 사이클로부터 동기 패킷이 입력 측 버스에 나타나는 시점까지의 경과 사이클수인 제 1 값과, 출력 측 참조 사이클 식별 정보가 나타내는 사이클로부터 동기 패킷을 출력 측 버스에 송신해야 할 시점까지의 경과 사이클수인 제 2 값을 각각 산출하며, 제 1 값 및 제 2 값에 근거하여 지연 정보를 생성하며, 출력 측 버스 상에서 지연 정보가 나타내는 사이클 수가 경과할 때까지 동기 패킷을 지연시키고나서 상기 출력 측 버스로 송신하고 있다.
이들 제 1 양태 및 제 2 양태에 의하면, 동기 패킷을 버스간 전송하기 위해 필요해지는 버퍼량을 종래에 비해 삭감할 수 있다. 또, 사이클 스타트 패킷의 송출 지연이 존재하는 상황 하에 있어서도, 동기 패킷에 대해 일정한 전송 지연을 줄 수 있다.
또, 본 발명의 제 3 양태에서는, 상술한 동기 패킷 전송의 각 순서를 컴퓨터에 실행시키도록 하고 있다.
또, 본 발명의 제 4 양태에서는, 사이클 단위로 전송 대역이 보증된 동기 패킷을 적어도 전송하는 복수의 버스 사이에 있어서의 패킷 교환을 행하는 스위치 회로와, 사이클 개시를 나타내는 사이클 스타트 패킷이 버스 상에서 발생할 정도로 변화하는 사이클 식별 정보를 생성하는 복수의 사이클 식별 정보 생성 회로와, 미리 정해진 동일 타이밍으로 사이클 식별 정보를 취득하여 참조 사이클 식별 정보를 생성하는 복수의 참조 사이클 식별 정보 생성 회로와, 사이클 식별 정보 및 참조 사이클 식별 정보에 근거하여 지연 정보를 생성하는 지연 정보 생성 회로와, 출력 측 버스 상에서 지연 정보가 나타내는 사이클수가 경과할 때까지, 버스 사이에서 전송되는 동기 패킷을 지연시키고나서 출력 측 버스로 송신하는 지연 회로를 구비하며, 입력 측 버스로부터 수신한 패킷을 스위치 회로에 출력하는 입력 포털로서의 동작 및 스위치 회로가 출력하는 패킷을 출력 측 버스에 송신하는 출력 포털로서의 동작을 행하여, 다른 버스 사이에서 동기 패킷을 적어도 포함하는 패킷을 전송하고 있다.
이로써, 브릿지에서 동기 패킷을 버스간 전송하기 위해 필요해지는 버퍼량을 삭감할 수 있다. 또, 사이클 스타트 패킷의 송출 지연이 존재하는 상황 하에 있어서도, 동기 패킷에 대해 일정한 전송 지연을 줄 수 있다.
또, 본 발명의 제 5 양태에서는, 상술한 브릿지가 구비하는 각 회로를 집적화하여 패킷 전송 제어 LSI를 구성하고 있다.
도 1은 본 발명의 제 1 실시예에 의한 브릿지 구성을 도시하는 블록도.
도 2는 1394 규격에서 규정되는 N0DE_IDS 레지스터의 포맷을 도시한 설명도.
도 3은 동일 실시예에 의한 브릿지를 사용하여 동기 패킷을 전송할 때의 동작을 도시한 타이밍 챠트.
도 4는 본 발명의 제 2 실시예에 의한 브릿지 구성을 도시하는 블록도.
도 5는 동일 실시예에 의한 포털 구성을 도시한 블록도.
도 6은 동일 실시예에 의한 링크층 LSI의 구성을 도시하는 블록도.
도 7a 및 도 7b는 동일 실시예에 있어서, 패킷 수신 사이클 식별 정보 부가부가 동기 패킷으로 패킷 수신 사이클 식별 정보를 부가할 때의 구체적 방법을 도시한 설명도.
도 7a는 동기 패킷의 포맷을 도시하는 도면.
도 7b는 선두에 헤더를 부가하여 패킷 수신 사이클 식별 정보를 격납한 동기 패킷을 도시하고 있는 도면.
도 8은 동일 실시예에 의한 브릿지를 사용하여 동기 패킷을 전송할 때의 동작을 도시한 타이밍 챠트.
도 9는 본 발명의 제 3 실시예에 의한 링크층 LSI의 구성을 도시하는 블록도.
도 1O은 1394 규격에서 규정되어 있는 PHY configuration 패킷의 포맷을 도시한 설명도.
도 11은 본 발명의 제 4 실시예에 의한 링크층 LSI의 구성을 도시하는 블록도.
도 12a 및 도 12b는 IEC 61883 규격에서 규정되어 있는 헤더의 포맷을 도시한 설명도.
도 12a는 CIP 헤더의 포맷을 도시하는 도면.
도 12b는 소스 패킷 헤더의 포맷을 도시하고 있는 도면.
도 13은 본 발명의 제 5 실시예에 의한 브릿지 구성을 도시한 블록도.
도 14는 동일 실시예에 의한 링크층 LSI의 구성을 도시한 블록도.
도 15는 본 발명의 제 6 실시예에 있어서 퍼스널 컴퓨터를 이용하여 브릿지 기능을 실현하기 위한 구성을 도시한 블록도.
도 16은 동일 실시예에 있어서의 퍼스널 컴퓨터에서 행해지는 처리 순서를 도시한 플로 챠트.
도 17은 1394 규격에서 규정되어 있는 사이클의 관리 방법을 도시한 설명도.
도 18은 1394 규격에서 규정되어 있는 CYCLE_TIME 레지스터의 포맷을 도시한 설명도.
도 19는 1394 규격에서 규정되어 있는 사이클 스타트 패킷의 포맷을 도시한 설명도.
도 20은 종래 기술에 의한 브릿지 구성을 도시하는 블록도.
도 21a 및 도 21b는 조정이나 갭에 기인하여 브릿지에서 필요시되는 전송 지연을 설명한 타이밍 챠트.
도 21a는 전송 지연을 주지 않는 경우의 타이밍 챠트를 도시하는 도면.
도 21b는 1사이클의 전송 지연을 준 경우의 타이밍 챠트를 도시하고 있는 도면.
도 22a 및 도 22b는 사이클 주파수의 지터에 기인하여 브릿지에서 필요시되는 전송 지연을 설명한 타이밍 챠트.
도 22a는 1사이클의 전송 지연을 준 경우의 타이밍 챠트를 도시한 도면.
도 22b는 2사이클의 전송 지연을 준 경우의 타이밍 챠트를 도시하고 있는 도면.
도 23은 동기 지연을 줄 때에 필요시되는 송신 버퍼량을 도시한 설명도.
도 24는 송신 버퍼에 의한 평활화 영향에 의해 동기 지연량이 변해버리는 문제를 설명하기 위한 타이밍 챠트.
* 도면의 주요 부분에 대한 부호의 설명 *
100, 120 : 브릿지 40, 41 : 버스
101, 102, 162 : 사이클 식별 정보
103, 104, 155 : 사이클 식별 정보 생성부
105, 106, 163, 164 : 참조 사이클 식별 정보
107, 108, 158, 159 : 참조 사이클 식별 정보 생성부
109, 165 : 지연 정보 110, 156 : 지연 정보 생성부
111, 157 : 지연부 121, 122, 123 : 포털
124 : 스위칭 패브릭 125, 312 : CPU
126, 132 : 메모리 127 : 호스트 버스
130, 202, 203, 204 : 물리층 LSI 131, 180, 201 : 링크층 LSI
150 : PHY/LINK 인터페이스 151 : 호스트 인터페이스
152 : 패킷 수신기 153 : 패킷 송신기
154 : 패킷 수신 사이클 식별 정보 부가부
160 : 사이클 타임 191, 192 : 타임 스템프 변환부
304 : 1394 인터페이스 보드 305, 307 : LINK 칩
306, 308 : PHY 칩 309 : PCL 버스
310 : PCL 브릿지 313 : RAM
314 : 입출력 컨트롤러 315 : 구동 장치
316 : 기록 매체
이하, 도면을 참조하여 본 발명의 개개의 실시예에 대해서 설명한다.
〔제 1 실시예〕
본 실시예는 본 발명에 의한 동기 패킷 전송 방법 및 이 방법을 실현하기 위한 브릿지 구성에 대해서 그 기본적인 개념을 설명하기 위한 것이다. 도 1은 본 실시예에 의한 브릿지 구성을 도시하는 블록도이다. 본래, 동일 도면에 도시한 브릿지(100)에는 다수의 1394 버스가 접속되어 있다. 그러나, 입력 포털 및 출력 포털로서의 역할을 다하는 포털 이외는 동작에는 직접 관계하지 않는다. 따라서, 도 1에서는 직접 관계가 없는 포털에 접속된 버스의 도시를 생략하여, 버스(40) 및 버스(41)만을 도시하고 있다.
덧붙여 말하면, 브릿지에 접속되는 복수의 버스는 「버스 ID」라 불리는 식별자에 의해 서로를 식별하고 있다. 이 버스 ID는 모든 노드가 구비하고 있는 N0DE_IDS 레지스터의 상위 10비트에 격납된다. 여기서, N0DE_IDS 레지스터의 포맷을 도 2에 도시해 두지만, 버스 ID(도면 중 「bus_id」) 이외의 필드에 대해서는 직접 관계하지 않기 때문에 설명을 생략한다.
또한, 여기서는 편의 상, 버스(40) 및 버스(41)가 각각 입력 포털 측 버스 및 출력 포털 측 버스로서 동작하는 것으로 하고 있다. 즉, 브릿지(100)는 버스(40)로부터 입력된 동기 패킷에 대해 동기 지연을 주고나서 버스(41)에 출력함으로써, 동기 패킷의 버스간 전송을 실현하고 있다. 또, 도 1에서는 스위칭 패브릭, 입력 포털 및 출력 포털에 대해서도 도면으로부터 생략하고 있지만, 이것은 스위칭 패브릭에 있어서 패킷 전송 경로가 이미 결정되어 있는 것을 전제로 하고 있기 때문이다.
브릿지(100)는 사이클 식별 정보(101 및 102)를 각각 생성하는 사이클 식별 정보 생성부(103 및 104)와, 사이클 식별 정보(101 및 102)에 근거하여 참조 사이클 식별 정보(105 및 106)를 각각 생성하는 참조 사이클 식별 정보 생성부(107 및 108)와, 사이클 식별 정보(101 및 102) 및 참조 사이클 식별 정보(105 및 106)에 근거하여 지연 정보(109)를 생성하는 지연 정보 생성부(110)와, 지연 정보(109)에 따라서 버스(4O)로부터 입력되는 동기 패킷을 지연시켜 버스(41)에 송신하는 지연부(111)를 구비하고 있다.
사이클 식별 정보(101 및 102)는 버스(40 및 41) 상에 있어서의 개개의 사이클을 각각 식별하기 위한 정보로, 사이클 스타트 패킷이 버스(40 및 41) 상에 각각 송신되는 타이밍으로 각각의 값이 변화한다. 여기서, 각각의 사이클 식별 정보 값 그 자체에는 특별히 의미는 없고, 사이클이 이행할 때마다 "1"씩 값이 증가해 가는 것이면 적당한 값이어도 된다.
사이클 식별 정보의 제 1 예로서는, 사이클 스타트 패킷이 버스 상에 송신된 타이밍에 있어서, 이 버스 상의 노드에 실장되어 있는 CYCLE_TIME 레지스터의 cycle_count 값을 샘플링함으로써 사이클 식별 정보를 생성할 수 있다. 상술한 바와 같이, cycle_count 값은 사이클이 이행할 때마다 "1"씩 값이 증가해 가기 때문에, 이에 동반하여 사이클 식별 정보도 사이클마다 증가해 간다.
사이클 식별 정보의 제 2 예로서는, 사이클이 이행할 때마다 카운트 업하는 카운터를 사이클 식별 정보 생성부(103 및 104) 내부에 각각 설치하고, 그들 카운트치를 사이클 식별 정보로서 생성해도 된다. 이들 카운터의 카운트치는 전원 투입 등을 계기로 하여 사이클 식별 정보 생성부(103 및 104)를 리셋함으로써 예를 들면 "0"으로 초기화된다. 따라서, 사이클 식별 정보 생성부(1O3 및 104)를 동일 타이밍으로 초기화함으로써, 사이클 식별 정보(1O1 및 102)는 항상 동일한 값이 된다. 다만, 이러한 초기화 순서는 브릿지(100) 내의 각 부에 대해 순차 행하는 것도 생각할 수 있다. 그러한 경우에는, 나중에 게재하는 도 3에 도시하는 바와 같이 이들 카운터의 카운트치는 일치하지 않게 되지만, 이러한 카운트치를 사이클 식별 정보(101 및 102)로서 생성해도 전혀 문제 없다. 더욱이, 지금 서술한 제 1 및 제 2 예 이외의 수법에 의해 생성되는 값을 사이클 식별 정보로서 이용하는 것도 당연히 가능하다.
다음으로, 참조 사이클 식별 정보(105 및 106)는 각각 어느 기준 시각에 있어서의 사이클 식별 정보(101 및 102)를 넣은 값이다. 후술하는 바와 같이, 본 실시예에서는, 참조 사이클 식별 정보(105 및 106)가 도시하는 사이클을 기준으로 한 경과 사이클 수를 입력 포털 측 버스(40) 및 출력 포털 측 버스(41)에 대해 각각 구하고, 이들 경과 사이클 수를 서로 비교함으로써 적절한 지연량을 패킷마다 산출하고 있다. 이 때문에, 참조 사이클 식별 정보(105 및 106)는 입력 포털 측 버스(40)와 출력 포털 측 버스(41)에 대해 반드시 동일 시각에 생성해야만 하고, 또한, 해당 시각은 사이클 스타트 패킷의 송출 지연에 의한 영향을 받지 않는 시각이어야만 한다.
즉, 어느 버스와 다른 버스 사이에서는 일단 버스간 동기 취하고 있지만, 개개의 포털은 기본적으로 독립하고 있기 때문에, 어느 포털과 다른 포털 사이에 있어서의 CYCLE_TIME 레지스터 값에는 「어긋남」이 생기고 있다. 그래서, 참조 사이클 식별 정보(105 및 106)를 생성할 때에는 사이클 식별 정보를 샘플링하는 타이밍을 입력 포털 측 및 출력 포털 측 중 어느 한쪽에 합칠 필요가 있다. 그래서 본 실시예에서는, 출력 측 포털의 버스(도 1에서는 버스(41))에 있어서의 CYCLE_TIME 레지스터 값을 사용하여 상기 기준 시각을 정하고 있다.
여기서, 상술한 바와 같이 사이클 스타트 패킷은 cycle_count 값이 변화하고나서 최대로 약 45마이크로초만큼 늦게 송출될 가능성이 있다. 이 때문에, cycle_count 값이 변화한 시점으로부터 45마이크로초 내지 125마이크로초(즉, 사이클의 최종) 범위 내에서 참조 사이클 식별 정보(105 및 106)를 생성하면 상기 조건을 채우게 된다. 또한, 이 시간 범위를 cycle_offset 필드 값으로 환산하면 "1100" 내지 "3071" 범위가 된다. 그래서, 이 범위 내의 값을 미리 정해 두고, cycle_offset이 이 값이 된 타이밍으로 예를 들면 사이클 식별 정보를 샘플링하여 취득하면, 사이클 스타트 패킷의 송출 지연에 의한 영향을 받지 않는 시각에 있어서, 참조 사이클 식별 정보(105 및 1O6)를 동시에 생성하는 것이 가능해진다.
또한, 참조 사이클 식별 정보를 생성하는 타이밍은 설계의 용이성 등을 고려하여 적당히 결정하면 된다. 예를 들면 본 실시예에서는, 나중에 상술하는 바와 같이, 어느 특정 시각에 있어서만 참조 사이클 식별 정보를 생성하고, 그 후는 참조 사이클 식별 정보 값을 불변으로 하고 있다. 한편, 후술하는 제 2 실시예 등에서는 1사이클마다 참조 사이클 식별 정보를 생성하고 있다. 또, 반드시 1사이클마다 참조 사이클 식별 정보를 생성하지 않아도 되며, 예를 들면 5사이클마다 참조 사이클 식별 정보를 생성해도 된다. 다만, 참조 사이클 식별 정보를 1사이클마다 생성함으로써 참조 사이클 식별 정보 생성부(107 및 108)의 회로 구성을 약간 간단화할 수 있다.
또, 참조 사이클 식별 정보를 생성하는 데에는, 지금 서술한 바와 같이 입력 포털 측 버스(40) 또는 출력 포털 측 버스(41)에 있어서의 cycle_offset 값을 사용하는 구성에 한정되는 것이 아니라, 예를 들면 다음과 같은 구성도 생각할 수 있다. 즉, 참조 사이클 식별 정보를 샘플링하는 타이밍을 생성하기 위한 클록원을 별도 브릿지(100) 내에 설치하여, 이 클록원으로부터 참조 사이클 식별 정보 생성부(107 및 108)에 대해 샘플링 타이밍을 지시하도록 구성해도 된다. 다만, 전자와 같이 구성하면, 후자와 같이 새로운 클록원을 준비할 필요가 없다는 이점은 있다.
다음으로, 지연 정보 생성부(110)가 사이클 식별 정보(101 및 102) 및 참조 사이클 식별 정보(105 및 106)를 입력으로 하여 지연 정보(109)을 생성할 때의 산출 방법에 대해서 설명한다. 우선 처음에 지연 정보 생성부(110)는 사이클 식별 정보(101)로부터 참조 사이클 식별 정보(105)를 감산하여 얻은 제 1 값과, 사이클 식별 정보(102)로부터 참조 사이클 식별 정보(106)를 감산하여 얻은 제 2 값을 각각 계산한다. 여기서, 제 1 값 및 제 2 값은 각각 버스(40) 및 버스(41)에 있어서 참조 사이클 식별 정보(105 및 106)가 생성된 사이클을 기준으로 하는 경과 사이클 수에 상당하고 있다.
다음으로, 지연 정보 생성부(110)는 제 1 값으로부터 제 2 값을 감산하여 얻은 제 3 값을 계산한다. 이 제 3 값은 참조 사이클 식별 정보(106)가 생성되고나서 출력 포털 측 버스(41)에서 경과한 사이클 수를 기준으로 했을 때에, 참조 사이클 식별 정보(1O5)가 생성되고나서 입력 포털 측 버스(40)에서 경과한 사이클 수의 상대치를 나타내고 있다. 따라서 예를 들면, 제 3 값이 "0"이면 양쪽 버스에서 동일 사이클 수의 시간이 경과하고 있는 것을 나타내며, "-1"이면 출력 포털 측 버스(41)에서는 입력 포털 측 버스(40)보다도 "1"만큼 많이 사이클이 경과하고 있는 것을 나타내고 있다. 그리고 마지막에, 지연 정보 생성부(110)는 제 3 값에 대해 고정 지연을 가하여, 이것을 지연 정보(109)로서 생성한다.
또한, 본 실시예에서는 이 고정 지연으로서 2사이클을 더하고 있지만, 고정 지연 값은 최저 2사이클이면 되며, 반드시 2사이클이 아니어도 된다. 다만, 이 2사이클의 고정 지연은 지터를 발생시키는 경우가 없는 최소 지연량으로, 고정 지연 값으로서는 가장 바람직한 값이다. 그 이유는 동기 전송 모드는 본래는 리얼 타임계 데이터를 전송하기 위한 전송 모드이기 때문이고, 브릿지를 경유함으로써 패킷의 지연량은 가능한 작은 것이 바람직하기 때문이다. 더구나, 복수의 브릿지를 경유하여 동기 패킷이 전송되는 경우에는 브릿지를 통과할 정도로 지연이 축적해 가기 때문에, 각 브릿지의 지연량을 작게 할 필요성은 높다.
다음으로, 도 3의 타이밍 챠트를 참조하여, 상기 구성을 구비한 브릿지(100)를 사용하여 동기 패킷 전송을 실시할 때의 동작을 설명한다. 또한, 도 3 중에는 "(d)"라는 표기가 있지만, 이것은 그 직전에 기재된 수치가 10진수인 것을 특히 명시한 것이다. 여기서, 버스(40)와 버스(41) 사이에서는 이미 버스간 동기가 확립되어 있는 것으로 한다.
또한, 동기 패킷의 버스간 전송을 행하는 데 있어서 필요시되는 버스간 동기는 예를 들면 다음과 같이 하여 행한다. 지금, 동기 패킷을 전송하기 위해서는 모든 노드가 동일 사이클 주파수에 따라서 동작할 필요가 있다. 그리고, 어느 하나의 버스에 착안하면, 해당 버스에 접속되어 있는 모든 노드는 사이클 스타트 패킷에 포함되는 cycle_time_data 필드에 근거하여, 사이클 매스터가 갖는 사이클 주파수에 동기하여 동작하게 된다.
따라서, 동기 패킷의 버스간 전송을 행하기 위해서는, 각 버스에 존재하는 사이클 매스터가 갖는 사이클 주파수를 모두 동기시키는 기구를 갖고 있으면 된다. 구체적으로는, 네트워크 전체에 있어서, 매스터가 되는 사이클 주파수를 유일하게 하나만 설정하여, 모든 사이클 매스터가 이 매스터의 사이클 주파수에 동기하도록 자신의 CYCLE_TIME 레지스터 값을 제어하면 된다. 또한, 이 경우는 사이클 주파수의 동기가 목적이기 때문에, cycle_offset 필드 값만을 제어하면 되며, 동기가 확립한 후에 cycle_count 필드 값이 모든 버스에 있어서 일치하고 있을 필요는 없다.
또, 여기서는 설명을 간단히 하기 위해 버스(40 및 41)에 있어서의 사이클 위상은 서로 동기하고 있는 것을 상정한다. 바꾸어 말하면, CYCLE_TIME 레지스터의 cycle_offset 필드 값 그 자체 및 그들 값이 변화하는 타이밍이 쌍방 버스에서 일치하고 있는 것을 가정한다. 단, CYCLE_TIME 레지스터의 cycle_count 필드 값 자체는 버스(40 및 41) 사이에서 일치하고 있지 않은 것으로 한다. 더욱이, 설명을 간단히 하기 위해, 브릿지(100) 내부에 있어서 포털 사이에서 패킷을 전송하기 위해 요하는 시간을 무시하는 것으로 한다.
이렇게 하여 버스(40)와 버스(41) 사이에서 버스간 동기가 확립하고 있는 상태에 있어서, 도 3에 도시한 시각(t1)으로 각 버스 상의 노드가 보존하는 CYCLE_TIME 레지스터의 cycle_count가 변화하면, 각 버스의 사이클 매스터가 각각 사이클 스타트 패킷을 송신한다. 즉, 시각(t2)으로 버스(40)에 사이클 스타트 패킷이 송출되고, 시각(t3)으로 버스(41)에 사이클 스타트 패킷이 송출된다. 또, 사이클 스타트 패킷 송출에 동기하여 사이클 식별 정보가 생성된다. 즉, 시각(t2)에 있어서 사이클 식별 정보 생성부(103)는 사이클 식별 정보(101)로서 "10"을 생성하여, 이것을 참조 사이클 식별 정보 생성부(107) 및 지연 정보 생성부(110)에 송출한다. 또, 시각(t3)에 있어서 사이클 식별 정보 생성부(104)는 사이클 식별 정보(102)로서 "6"을 생성하여, 이것을 참조 사이클 식별 정보 생성부(108) 및 지연 정보 생성부(110)에 송출한다.
또한, 도시한 예에서는 사이클 식별 정보 생성부(103 및 104)가 cycle_count 값을 샘플링하는 것이 아니라, 내부 카운터의 카운트치를 각각 사이클 식별 정보(101 및 102)로서 생성할 경우를 예시하고 있다. 이에 더불어, 동일 도면에서는 사이클 식별 정보 생성부(103 및 104)에 대한 리셋이 순차 행해진 경우를 상정하고 있으며어, 사이클 식별 정보(101, 102) 사이에 "4"만큼 차가 생기고 있는 경우를 예시하고 있다.
여기서, 사이클 스타트 패킷은 각 버스(40 및 41)에 있어서의 cycle_count 값의 변화 시점보다도 빠른 타이밍으로 송신되는 경우는 없지만, 직전 사이클에 있어서의 트래픽에 의존하여 해당 변화 시점보다도 늦게 송신되는 경우가 있다. 이 때문에, 버스 상에 있어서의 실제 사이클 이행은 CYCLE_TIME 레지스터의 cycle_count 값이 아니라, 사이클 스타트 패킷에 의해 제어되게 된다. 또한, 도시한 바와 같이 cycle_count 값은 버스(40) 상에서는 "324", 버스(41) 상에서는 "967"로, 이 이후는 사이클이 전환될 정도로 "1"씩 증가해 간다.
다음으로, 시각(t4)은 참조 사이클 식별 정보를 생성하는 타이밍이기 때문에, 참조 사이클 식별 정보 생성부(107)는 사이클 식별 정보(101)를 샘플링하여, 이것을 참조 사이클 식별 정보(105)로서 지연 정보 생성부(110)에 송출한다. 또, 동일 시각(t4)에 있어서, 참조 사이클 식별 정보 생성부(108)는 사이클 식별 정보(102)를 샘플링하여 얻은 참조 사이클 식별 정보(106)를 지연 정보 생성부(110)에 송출한다. 그러면, 지연 정보 생성부(110)는 상술한 순서에 따라서 제 1 내지 제 3 값을 계산한다. 이 경우는 각 버스에 있어서의 사이클 식별 정보와 참조 사이클 식별 정보가 어느 것도 일치하고 있기 때문에, 이들 값은 모두 "0"이 된다. 이 때문에, 지연 정보 생성부(110)는 제 3 값 "0"에 고정 지연 "2"를 더해 얻어지는 "2"를 지연 정보(109)로서 지연부(111)에 송출한다. 또한, 시각(t4)이 속하는 사이클에서는 버스(40) 상에 동기 패킷이 존재하지 않기 때문에, 지연부(111)는 동기 패킷을 지연시키는 동작을 행하지 않는다.
다음으로, 시각(t5)에서 다음 사이클로 이행하면 cycle_count 값이 전화되며, 시각(t6)에서 버스(41) 상에 사이클 스타트 패킷이 송신되면, 사이클 식별 정보(1O2)가 "6"에서 "7"로 갱신된다. 이 결과, 제 2 값이 "1"〔=(7-6)〕이 되기 때문에 제 3 값이 "-1"〔=(0-1)〕이 되며, 지연 정보 생성부(110)는 지연 정보(109)로서 "1"〔=2+(-1)〕을 출력하게 된다. 이 후의 시각(t7)에서 버스(40) 상에 사이클 스타트 패킷이 송신되면, 사이클 식별 정보(101)가 "11"로 갱신되기 때문에, 제 1 값도 제 2 값과 동일한 "1"이 되며 제 3 값은 "0"이 된다. 따라서, 지연 정보 생성부(110)는 지연 정보(1O9)로서 다시 "2"를 출력하게 된다.
다음으로, 시각(t8)이 되어 패킷(A)이 버스(40)에 입력되지만, 이 때의 지연 정보(109) 값은 "2"이기 때문에, 지연부(111)의 작용에 의해 출력 포털로 패킷(A)이 2사이클만큼 지연된다. 따라서, 브릿지(100)에 입력된 동기 패킷은 사이클 식별 정보(1O2) 값이 "9"〔=(7+2)〕인 사이클에 버스(41)로 송신된다. 그리고 이 이후 동작은 상술한 것과 동일해진다. 즉, 시각(t9)에서 cycle_count 값이 전환되어 새로운 사이클이 되면, 시각(t1O)에서 버스(40)에 사이클 스타트 패킷이 송신되어, 사이클 식별 정보(101)가 "12"로 갱신된다. 그 결과, 제 1 값이 "2"가 되고 제 3 값이 "1"이 되기 때문에, 지연 정보(109)로서는 "3"이 얻어진다.
이 때문에, 동기 패킷이 입력되었으면 사이클 식별 정보(102)가 "10"〔=(7+3)〕인 사이클에 버스(41)로 송신된다. 이 후, 시각(t11)으로 되어 패킷(B)이 버스(40)에 입력되지만, 이 때의 지연 정보(109)는 "3"이기 때문에, 출력 포털에서 패킷(B)이 3사이클만큼 지연시켜진다. 따라서, 브릿지(100)에 입력된 패킷(B)은 사이클 식별 정보(102) 값이 "10"인 사이클에 버스(41)로 송신된다. 다음으로, 시각(t12)으로 되어 버스(41) 상에 사이클 스타트 패킷이 송신되면, 사이클 식별 정보(102)가 "8"로 갱신되는 데 따라 제 2 값이 "2"가 되기 때문에, 제 3 값이 "0"이 되어 지연 정보(109)로서 "2"가 얻어진다.
이 다음의 시각(t13)에서 새로운 사이클에 들어가면, 시각(t14)에서 버스(40)에 사이클 스타트 패킷이 송신되어 사이클 식별 정보(101)가 "13"으로 갱신된다. 그 결과, 제 1 값이 "3"이 되고 제 3 값이 "1"이 되기 때문에, 지연 정보(109)로서 "3"이 얻어진다. 다음으로, 시각(t15)에서 버스(41) 상에 사이클 스타트 패킷이 송신되면, 사이클 식별 정보(102)가 "9"로 갱신되는 데 따라 제 2 값이 "3"이 되기 때문에, 제 3 값이 다시 "0"이 되어 지연 정보(109)는 "2"가 된다. 그리고, 시각(t15)으로부터 동기 갭을 둔 시각(t16)이 되면, 지연부(111)는 2사이클 전의 시각(t8)에 있어서 버스(40)에 입력된 패킷(A)을 버스(41)에 송신한다.
다음으로, 시각(t17)에서 새로운 사이클로 들어가, 시각(t18)에서 버스(40) 및 버스(41)에 대해 거의 동시에 사이클 스타트 패킷이 송신되면, 사이클 식별 정보(101 및 102)가 각각 "14" 및 "10"으로 갱신된다. 그 결과, 제 1 값 및 제 2 값이 모두 "4"가 되기 때문에, 제 3 값이 "0"이 되어 지연 정보(109)는 "2"인 채로 된다. 그리고, 시각(t18)으로부터 동기 갭을 둔 시각(t19)이 되면, 지연부(111)는 3사이클 전(즉, 사이클 식별 정보(102)가 "7")인 시각(t11)에서 버스(4O)로 인력된 패킷(B)을 버스(41)에 송신한다.
이상과 같이, 본 실시예에 의하면, 사이클 스타트 패킷에 존재하는 지터에 의존하지 않고, 동기 지연량을 일정하게 유지하는 것이 가능해진다. 그리고, 동기 지연을 최소치인 2사이클로 한 경우, 송신 버퍼로서는 3사이클분의 축적량을 구비하고 있으면 충분하다. 즉, 상술한 바와 같은 종래 기술에 의한 송신 버퍼 제어와 비교한 경우, 2사이클분에 상당하는 송신 버퍼를 삭감하는 것이 가능해진다. 또, 전송되는 동기 패킷마다 전송 지연이 개별로 주어지기 때문에, 버스간 전송 시에 있어서 패킷에 사이클 단위의 지터를 생기게 하는 경우가 없다.
또, 입력 측 및 출력 측 사이클 식별 정보는 사이클 스타트 패킷이 발생할 정도로 1개 증가해가면서 "0"으로 돌아가도록 하고 있다. 이로써, 입력 측 및 출력 측 사이클 식별 정보를 생성하는 데 있어서, 바이너리 카운터 등의 간단한 회로를 사용할 수 있다.
또, 어느 한 버스에 있어서의 cycle_offset이 미리 정해진 값이 된 타이밍으로, 사이클 식별 정보(101 및 102)를 취득하여 이들을 보존함으로써 참조 사이클 식별 정보(105 및 106)를 생성하고 있다. 이로써, 사이클 식별 정보를 취득하는 타이밍을 생성하기 위한 독립된 클록원 등을 설치할 필요가 없어져, 구성을 간략화할 수 있다.
또, 지연 정보를 생성할 때의 고정 지연량을 "2"사이클에 상당하는 시간으로 하고 있다. 이 때문에, 지터를 발생시키지 않고 최소 지연량으로 동기 패킷을 전송할 수 있게 되어, 리얼 타임성이 요구되는 데이터 전송 등에 적합하다. 특히, 브릿지가 다단 접속되는 구성에 있어서는 브릿지를 통과할 정도로 지연이 축적해 가기 때문에, 각 브릿지의 지연량을 작게 하는 것에 의한 효과는 크다.
〔제 2 실시예〕
도 4는 제 1 실시예에서 설명한 브릿지의 구체적인 실현예를 도시한 블록도이다. 동일 도면에 도시한 브릿지(120)는 3개의 포털(121 내지 123), 스위칭 패브릭(124), 브릿지(120) 동작을 통괄 제어하기 위한 CPU(중앙 처리 장치)(125), CPU(125) 동작을 제어하기 위한 프로그램이나 CPU(125)가 작업용 메모리로서 사용하기 위한 메모리(126), 이들 기능 블록 사이에서 서로 제어 신호나 데이터를 수수하기 위한 호스트 버스(127)로 구성되어 있다. 포털(121 내지 123)은 모두가 동일 구성으로, 각각이 스위칭 패브릭(124)과의 사이에서 동기 패킷을 송신/수신하기 위한 독립된 2개의 포트를 갖고 있다. 이 외에, 포털(121 내지 123)은 어느 것도 스위칭 패브릭(124)과의 사이에서 사이클 식별 정보를 송신/수신하기 위한 독립된 2개의 포트도 구비하고 있다.
이에 대응하도록, 스위칭 패브릭(124)은 입력 포트 및 출력 포트를 각각 6개 구비하고 있다. 이들 입출력 포트 중 3개의 입출력 포트는 동기 패킷 교환용이고, 나머지 3개의 입출력 포트가 사이클 식별 정보 교환용이다. 즉, 스위칭 패브릭(124)은 동기 패킷 교환을 행하기 위한 3포트의 스위치(124a)와 사이클 식별 정보 교환을 행하기 위한 3포트의 스위치(124b)로 구성되어 있다. 그리고, CPU(125)로부터의 지시를 호스트 버스(127)를 개재시켜 받음으로써, 스위칭 패브릭(124)은 2개의 스위치(124a, 124b)를 제어한다. 이로써, 이들 양 스위치가 동일 입력 포털과 출력 포털 사이를 접속하도록 이들 양 스위치가 연동하여 경로 선택을 행하게 된다. 덧붙여 말하면, 스위칭 패브릭 구성은 1394 규격의 대상 외로 되어 있기 때문에, 브릿지의 제조자가 그 상세한 구성을 적당히 정할 수 있다.
여기서, 도 5는 도 4에 도시한 각 포털의 내부 구성을 도시한 블록도이다. 각 포털의 구성은 상술한 바와 같이 동일하기 때문에, 도 5에 있어서는 그들의 대표로서 포털(121)을 도시하고 있다. 도시한 바와 같이, 포털(121)은 기본적으로 물리층 LSI(130), 링크층 LSI(131) 및 메모리(132)에 의해 구성되어 있다. 이 중, 물리층 LSI(130)은 1394 규격의 물리층에 준거한 기능을 실현하는 것으로, 1394 버스(도면 중에서는 「버스」)에 접속되는 1394 포트인 3개 포트(133 내지 135)에 접속되어 있다. 한편, 링크층 LSI(131)은 1394 규격의 링크층에 준거한 기능에 더불어 후술하는 동기 전송 기능을 내장하고 있으며, 버스간 전송되는 동기 패킷이나 사이클 식별 정보를 송수신한다.
한편, 메모리(132)는 포털(121)이 노드로서 동작하기 위해 필요해지는 CSR(Control and Status Register)를 실장하고 있다. 이 외에, 포털(121)은 호스트 버스 접속 포트(136)를 개재시켜 도 4에 도시한 호스트 버스(127)에 접속하고, 동기 패킷 전송 포트(137) 및 사이클 식별 정보 송수신 포트(138)를 개재시켜 도 4에 도시한 스위칭 패브릭(124) 내의 스위치(124a) 및 스위치(124b)에 접속하고 있다. 또한, 부호(139)는 링크층 LSI(131), 메모리(132) 및 호스트 버스 접속 포트(136)를 접속하기 위한 내부 버스이다.
다음으로, 도 6은 도 5에 도시한 링크층 LSI(131)의 내부 구성을 도시한 블록도이다. 도시한 바와 같이, 이 링크층 LSI(131)는 PHY/LINK 인터페이스(150), 호스트 인터페이스(151), 패킷 수신기(152), 패킷 송신기(153), 패킷 수신 사이클 식별 정보 부가부(154), 사이클 식별 정보 생성부(155), 지연 정보 생성부(156), 지연부(157), 참조 사이클 식별 정보 생성부(158), 참조 사이클 식별 정보 생성부(159), 사이클 타임(160)으로 구성되어 있다.
이 중, 패킷 수신기(152) 및 패킷 송신기(153)는 PHY/LINK 인터페이스(150)를 개재시켜 도 5에 도시한 물리층 LSI(130)과의 사이에서 패킷 송수신을 행한다. 다음으로, 호스트 인터페이스(151)는 도 5에 도시한 내부 버스(139)를 개재시켜 도 4에 도시한 호스트 버스(127)와 접속하기 위한 접속 인터페이스이다. 다음으로, 사이클 식별 정보 생성부(155), 지연 정보 생성부(156), 지연부(157), 참조 사이클 식별 정보 생성부(158 및 159)의 동작은 각각, 도 1에 도시한 사이클 식별 정보 생성부(103, 104), 지연 정보 생성부(110), 지연부(111), 참조 사이클 식별 정보 생성부(107 및 1O8)의 동작과 기본적으로 동일하며, 세부 동작 사양이 상술한 것과는 다르다. 또한, 이들 사이의 상위점에 대해서는 후술한다. 이 외에, 지연부(157)는 그 출력이 패킷 송신기(153)에 입력되도록 접속되어 있으며, 각 포털(121 내지 123)이 출력 포털로서 동작할 때에, 동기 패킷에 대해 사이클 지연을 준다.
다음으로, 패킷 수신 사이클 식별 정보 부가부(154)는 동기 패킷이 입력된 시점에서 사이클 식별 정보 생성부(155)로부터 출력되어 있는 사이클 식별 정보(161) 값(이하, 「패킷 수신 사이클 식별 정보」라 한다)을 입력된 동기 패킷에 부가하여 출력한다. 이 때문에, 패킷 수신기(152)가 수신한 동기 패킷은 패킷 수신 사이클 식별 정보 부가부(154)에 입력되어 패킷 수신 사이클 식별 정보가 부가되고나서, 도 5에 도시한 동기 패킷 전송 포트(137)에 출력된다. 나중에 상술하는 바와 같이, 이 패킷 수신 사이클 식별 정보는 포털 사이의 패킷 전송에 요하는 시간이 허용치인 클록 폭에 대해 무시할 수 없을 정도로 클 경우에 극히 유효하다. 또한, 이 허용치는 버스 사이에서 데이터를 패럴렐에 전송할 때에는 그만큼 커진다. 지금 예를 들면, 49.152메가 헤르쯔의 클록을 2분주함으로써 상술한 공칭 24.576메가 헤르쯔의 클록을 얻고 있다고 하자. 그러한 경우, 1비트 전송의 경우에 있어서의 허용치는 약 20ns가 되는 데 대해, 예를 들면 1워드를 16비트 폭으로 하여 패럴렐에 전송을 행할 경우의 허용치는 20ns×16=320ns가 된다.
여기서, 패킷 수신 사이클 식별 정보 부가부(154)가 패킷 수신 사이클 식별 정보를 부가할 때의 구체적인 수법에 대해서, 도 7a 및 도 7b를 참조하면서 설명한다. 패킷 수신 사이클 식별 정보 부가부(154)에는 도 7a에 도시한 포맷을 갖는 동기 패킷 그 자체가 입력된다. 또한, 동기 패킷의 각 필드의 상세함은 여기서는 관계 없기 때문에 특별히 설명하지 않는다. 패킷 수신 사이클 식별 정보 부가부(154)는 입력된 동기 패킷의 선두에 부가 헤더를 부여하여 출력한다. 이 부가 헤더는 1쿼들렛(quadlet;=32비트)으로 구성되어 있으며, 해당 부가 헤더 중에는 패킷 수신 사이클 식별 정보를 격납하기 위한 필드가 확보되어 있다. 본 실시예에서는 도 7b에 도시되는 바와 같이, 부가 헤더의 선두 1비트를 해당 필드로서 사용한다. 그 이유는 후술하는 바와 같이 본 실시예에서는 사이클 식별 정보를 1비트로 표현하고 있기 때문이다.
여기서, 도 6을 다시 참조하면, 사이클 식별 정보 생성부(155)는 사이클이 변화할 때마다 사이클 식별 정보(161)가 "0"과 "1"을 교대로 취하는 사양으로 하고 있다. 이것은 값이 "0"에서 "N-1"(N은 2이상의 정수) 사이에서 순환적으로 변화해 가는 N진 카운터에 있어서, N=2인 경우에 상당하고 있다. 이러한 주기적으로 값이 변화하는 사이클 식별 정보를 사용할 경우, 사이클 식별 정보 및 참조 사이클 식별 정보에 근거하여, 참조 사이클 식별 정보가 생성된 사이클로부터의 경과 사이클 수에 상당하는 제 1 값이나 제 2 값을 산출하기 위해서는, 다음 식을 사용할 수 있다.
제 1 값 또는 제 2 값=(N+사이클 식별 정보 값-참조 사이클 식별 정보 값)%N… (1)
여기서, "A % B"의 표기는 "A"를 "B"로 나누어 얻어지는 나머지를 의미하고 있다. 따라서, 본 실시예와 같이 N이 "2"인 경우에는 (1)식을 다음 식과 같이 간략화할 수 있다.
제 1 값 또는 제 2 값=사이클 식별 정보 값(XOR) 참조 사이클 식별 정보 값… (2)
여기서, "A XOR B"의 표기는 "A"와 "B"의 배타적 논리합을 취하는 것을 의미하고 있다.
또한, 본래라면 제 1 값은 사이클 식별 정보(162) 및 참조 사이클 식별 정보(163)로부터 산출된다. 그렇지만, 본 실시예에 있어서의 제 1 값은 입력 포털인 포털(121)에서 수신된 동기 패킷에 부가한 패킷 수신 사이클 식별 정보(도 7b 참조)와 참조 사이클 식별 정보(163)에 근거하여 산출된다. 이 때문에, 도 6에 도시한 바와 같이, 지연 정보 생성부(156)에는 사이클 식별 정보(162)가 아니라 동기 패킷 전송 포트(137)로부터 보내져 오는 동기 패킷이 입력된다.
또, 패킷 수신 사이클 식별 정보는 동기 패킷에 부가되어 10마이크로초의 포털간 전송 지연을 동반하여 포털(122)에 입력되어 온다. 이 때문에, 제 1 값은 사이클 식별 정보(162)에 대해 1O마이크로초의 지연을 준 것과 참조 사이클 식별 정보(163)의 배타적 논리합을 취함으로써 얻어진다. 한편, 제 2 값을 산출할 때에는, 사이클 식별 정보 생성부(155)와 참조 사이클 식별 정보 생성부(164)가 동일한 출력 포털 내에 있기 때문에, 포털간 전송 지연을 고려할 필요는 없다.
다음으로, 참조 사이클 식별 정보 생성부(158)는 입력 포털 측으로부터 전송되어 오는 사이클 식별 정보(162)에 근거하여 참조 사이클 식별 정보(163)를 생성하여, 이것을 지연 정보 생성부(156)에 출력한다. 이에 대해, 참조 사이클 식별 정보 생성부(159)는 사이클 식별 정보 생성부(155)가 출력하는 사이클 식별 정보(161)에 근거하여 출력 포털 측 버스에 대응한 참조 사이클 식별 정보(164)를 생성하여, 이것을 지연 정보 생성부(156)에 출력한다. 즉, 참조 사이클 식별 정보 생성부(158)는 링크층 LSI(131) 외부로부터 보내져 오는 사이클 식별 정보(162)를 사용하는 데 대해, 참조 사이클 식별 정보 생성부(159)는 링크층 LSI(131) 내부에서 생성되는 사이클 식별 정보(161)를 사용하고 있다. 이 밖에, 지연 정보 생성부(156)가 출력하는 지연 정보(165)는 지연부(157)에 의한 동기 지연의 지연량을 제어한다.
그런데, 본 실시예에서는, 입력 포털로서 동작하는 포털(121)로 동기 패킷이 입력되고나서, 출력 포털로서 동작하는 포털(122)의 지연부(157)에 도달하기까지 10마이크로초 정도의 포털간 전송 지연이 생긴다. 한편, 동기 패킷과는 다른 경로에서 전송되는 사이클 식별 정보(162)의 포털간 전송 지연은 동기 패킷의 포털간 전송 지연에 비해 무시할 수 있을 정도로 작다. 따라서, 출력 포털의 지연부(157)로 입력되는 동기 패킷은 동일한 출력 포털의 참조 사이클 식별 정보 생성부(158)로 입력되는 사이클 식별 정보(162)에 대해, 상기 포털간 전송 지연에 상당하는 만큼의 지연을 갖고 있다고 볼 수 있다. 이러한 지연의 영향에 의해 지연 정보(165)가 오류해버릴 가능성이 있다. 본 실시예에서는 이 문제를 해결하기 위해, 상술한 패킷 수신 사이클 식별 정보를 사용함과 동시에, 포털간 전송의 영향을 받지 않는 시간대에 참조 사이클 식별 정보를 생성하고 있다.
그래서, 후자의 점에 대해서 더욱 상술한다. 일반적으로, 포털 사이에 있어서의 동기 패킷의 전송 지연과 사이클 식별 정보의 전송 지연과의 차를 "d1"마이크로초로 둔다. 그렇게 하면, 참조 사이클 식별 정보를 생성하는 것이 가능한 시간대는 어느 사이클과 다음 사이클 사이의 경계에서 cycle_count 값이 변화한 시점을 기준으로 했을 때에, "45+d1"마이크로초 내지 125마이크로초의 범위가 된다. 여기서, 도 1에 도시한 버스(40)와 버스(41) 사이에 있어서의 버스간 동기의 결과에도 상관 없이, 이들 쌍방의 버스 상에 있어서의 CYCLE_TIME 레지스터의 cycle_count의 변화점에는 2마이크로초의 오프셋이 생기고 있는 것으로 하자. 이러한 오프셋이 생기고 있는 시간대도 참조 사이클 식별 정보를 생성하는 데에는 부적당하기 때문에, 상기 시간대에서 제외할 필요가 있다. 따라서, 버스간 동기 시에 생기는 위상 오프셋의 최대치를 "±d2"(d2는 0이상의 유리수) 마이크로초라 하면, 상기 포털간 전송 지연을 고려하지 않을 경우, 참조 사이클 식별 정보를 생성하는 것이 가능한 시간대는 cycle_count 값이 변화한 시점을 기준으로 하여 "45+d2"마이크로초 내지 "125-d2"마이크로초의 범위가 된다.
또, 포털간 전송 지연 및 위상 오프셋 쌍방을 고려한 경우, 참조 사이클 식별 정보를 생성하는 것이 가능한 시간대는 cycle_count 값이 변화한 시점을 기준으로 하여, "45+d1+d2"마이크로초 내지 "125-d2"마이크로초의 범위가 된다. 상술한 바와 같이, d1=1O마이크로초 또한 d2=2마이크로초이기 때문에, 결국 57마이크로초 내지 123마이크로초의 범위가 참조 사이클 식별 정보를 생성하는 것이 가능한 시간대가 된다. 그래서, 본 실시예에서는 참조 사이클 식별 정보를 생성하는 타이밍을 cycle_count 값이 변화한 시점에으로부터 10O마이크로초가 경과한 시점으로 하고 있다. 이 타이밍을 cycle_offset 값으로 환산한 경우, 참조 사이클 식별 정보 생성부(158 및 159)는 cycle_offset 값이 "2458"의 타이밍으로 사이클 식별 신호(162 및 161)를 각각 샘플링하여 참조 사이클 식별 정보(163 및 164)를 생성하는 수단이 된다. 또한, 본 실시예에서는, cycle_offset 값이 상기 값이 되는 타이밍으로 사이클 식별 정보를 매 사이클 취득하여, 참조 사이클 식별 정보를 생성하고 있다.
다음으로, 사이클 타임(160)은 상술한 CYCLE_TIME 레지스터 값을 생성하여 참조 사이클 식별 정보 생성부(158 및 159)로 공급한다. 이 사이클 타임(160)은 예를 들면, 공칭 24.576메가 헤르쯔의 클록으로 카운트 업하는 카운터로 구성할 수 있다.
다음으로, 도 8에 도시하는 타이밍 챠트를 참조하면서, 상기 구성에 의한 브릿지(120)에 있어서, 도 4에 도시한 포털(121)로부터 포털(122)로 동기 패킷을 전송할 때의 동작에 대해서 설명한다. 또한, 도 8에서는 번잡해지는 것을 피하기 위해, 버스(4O) 상의 트래픽으로서 3개의 패킷(A 내지 C)만을 도시하고 있다. 그렇지만, 실제로는 이들 이외의 패킷이 버스(40)에 끊임 없이 입력되어 있는 것을 상정하고 있다.
우선, 시각(t30)에서는 입력 포털 측 버스인 버스(40)에 패킷(A)이 나타남과 동시에, 출력 포털인 포털(122) 측에서 사이클이 전환됨에 따라 CYCLE_TIME 레지스터 내의 cycle_count도 "967"로 전환된다. 또한, 동일 시각(t30)에서는, 포털간 전송 지연이 가미된 사이클 식별 정보(162)와 참조 사이클 식별 정보(163)와는 어느 것도 "0"이고, 또, 사이클 식별 정보(161) 및 참조 사이클 식별 정보(164)는 어느 것도 "1"인 것으로 한다. 이 때문에, 제 1 값 및 제 2 값은 어느 것도 "0"이 되기 때문에, 제 3 값은 "0"이 되며 지연 정보(165)는 "2"로 되어 있다.
다음으로, 시각(t31)이 되면 포털(121) 측에서 사이클이 전환됨에 따라 CYCLE_TIME 레지스터의 cycle_count도 "324"로 전환된다. 이어서, 시각(t32)이 되면 버스(41) 상에 사이클 스타트 패킷이 송출되게 된다. 그래서, 출력 포털인 포털(122) 내의 사이클 식별 정보 생성부(155)는 사이클 스타트 패킷 송출에 동기하여 사이클 식별 정보(161)를 "1"에서 "0"으로 전환한다. 이 결과, 제 2 값은 사이클 식별 정보(161)와 참조 사이클 식별 정보(164)의 배타적 논리합인 "1"이 되기 때문에, 제 3 값은 "-1"〔=(0-1)〕이 되어 지연 정보(165)는 "1"〔=2+(-1)〕이 된다. 이 결과, 패킷(A)은 지연부(157)에서 1사이클만큼 지연되며, 포털(122)에 있어서의 CYCLE_TIME 레지스터 내의 cycle_count가 "968"인 사이클에 있어서, 출력 포털로부터 버스(41)로 송출되게 된다.
다음으로, 시각(t33)이 되면, 먼저 시각(t30)에서 포털(121)에 입력된 패킷(A)이 포털간 전송 지연을 거쳐 포털(122)에 도달하여, 지연 정보 생성부(156) 및 지연부(157)에 입력된다. 다음으로, 시각(t34)이 되면 버스(40) 상에 사이클 스타트 패킷이 송출되게 된다. 이 때, 입력 포털인 포털(121)의 사이클 식별 정보 생성부(155)는 사이클 식별 정보(도 6에서는 사이클 식별 정보(161)에 상당하고, 도 8에서는 사이클 식별 정보(162)에 상당한다.)를 "0"에서 "1"로 전환한다. 그리고, 이 사이클 식별 정보(162)가 출력 포털 측 참조 사이클 식별 정보 생성부(158)를 향해 송출된다.
이 후, 시각(t34)으로부터 포털간 전송 지연에 상당하는 시간이 경과하여 시각(t35)이 되면, 포털간 전송 지연을 거친 사이클 식별 정보(162)〔도 8에 있어서의 사이클 식별 정보(162)(포털간 전송 지연 있음)〕이 "1"로 전환된다. 그 결과, 제 1 값은 지연된 사이클 식별 정보(162)와 참조 사이클 식별 정보(163)의 배타적 놀리합을 취해 얻어지는 값 "1"이 된다. 이 때, 제 2 값은 "1"인 채이기 때문에, 제 3 값이 "0"이 되어 지연 정보(165)는 "2"가 된다. 또한, 상술한 바와 같이 버스(40) 상에는 패킷이 끊임 없이 입력되어 있기 때문에, 시각(t34) 근방에서 입력된 도시하지 않은 패킷에 부수하여 패킷 수신 사이클 식별 정보가 전송된다. 이 때문에, 도 8에 도시한 바와 같이 시각(t34)에 있어서의 사이클 식별 정보(162)의 변화에 대응하도록, 시각(t35)에서 사이클 식별 정보(162)(포털간 전송 지연 있음)가 변화하게 된다.
이 후의 시각(t36)은 참조 사이클 식별 정보를 생성하는 타이밍이다. 따라서, 참조 사이클 식별 정보 생성부(158)는 사이클 식별 정보(162)를 샘플링하여 출력하여, 참조 사이클 식별 정보(163)가 "1"로 전환된다. 또, 이 때, 참조 사이클 식별 정보 생성부(159)는 사이클 식별 정보(161)를 샘플링하여 출력하여, 참조 사이클 식별 정보(164)가 "O"으로 전환된다. 이들 결과, 제 1 값 및 제 2 값은 어느 것도 "0"이 되기 때문에, 제 3 값에 변화는 없이 "0"이 되어 지연 정보(165)도 "2"인 채가 된다. 그리고 이 이후는 상술한 동작에 준한 동작이 행해져 가게 된다.
즉, 시각(t37)에서 버스(40) 상에 패킷(B)이 나타난 후, 시각(t38)에 있어서 포털(122) 측에서 사이클이 전환되는 데 따라 CYCLE_TIME 레지스터의 cycle_count도 전환된다. 다음으로, 시각(t39)이 되어 버스(41) 상에 사이클 스타트 패킷이 송출되게 되며, 출력 포털 측 사이클 식별 정보 생성부(155)는 사이클 스타트 패킷 송출에 동기하여 사이클 식별 정보(161)를 "1"로 전환한다. 이 결과, 제 2 값은 "1"이 되고 제 3 값은 "-1"이 되며, 지연 정보(165)는 "1"이 된다. 다음으로, 시각(t40)에 있어서 포털(121) 측에서 사이클이 전환되어 CYCLE_TIME 레지스터의 cycle_count도 전환된다.
또, 이와 거의 동시 타이밍에 있어서, 먼저 시각(t37)에서 포털(121)에 입력된 패킷(B)은 포털간 전송 지연을 지나, 포털(122)의 지연 정보 생성부(156) 및 지연부(157)에 도달한다. 이 결과, 지연부(157)는 지연 정보(165)에 의해 지정된 1사이클만큼 패킷(B)을 지연하며, 포털(122)에 있어서의 CYCLE_TIME 레지스터의 cycle_count가 "969"인 사이클에서, 패킷(B)을 출력 포털로부터 버스(41)로 송출한다. 더욱이, 동일 시각(t40)은 시각(t38)에 있어서 사이클 스타트 패킷이 송출되고나서 동기 갭에 상당하는 시간을 둔 타이밍이 되기 때문에, 시각(t33)에서 포털(122)의 지연부(157)에 입력된 패킷(A)이 1사이클분의 지연을 거쳐 포털(122)로부터 버스(41)에 송출된다.
다음으로, 시각(t41)이 되면, 버스(40) 상에 사이클 스타트 패킷이 송출되게 된다. 이와 더불어, 입력 포털 측 사이클 식별 정보 생성부(155)가 사이클 식별 정보(도 6의 사이클 식별 정보(161)에 상당)를 "0"으로 전환하기 때문에, 이것이 사이클 식별 정보(162)로서 출력 포털의 참조 사이클 식별 정보 생성부(158)를 향해 송출된다. 이어서, 시각(t41)으로부터 포털간 전송 지연 시간에 상당하는 시간이 경과한 시각(t42)에 있어서, 사이클 식별 정보(162)〔도 8에 도시하는 사이클 식별 정보(162)(포털간 전송 지연 있음)에 상당〕가 "0"으로 전환된다. 이 결과, 제 1 값이 "1"로 전환되지만, 이 때 제 2 값은 "1"인 채이기 때문에, 제 3 값이 "0"이 되어 지연 정보(165)는 "2"가 된다.
이 후에 시각(t43)에서 버스(40) 상에 패킷(C)이 나타나면, 포털간 전송 지연 시간에 상당하는 시간이 경과한 시각(t44)에 있어서, 해당 패킷(C)이 포털(122)의 지연부(157)에 도달한다. 이 때문에, 패킷(C)은 지연 정보(165)에 의해 지정된 2사이클분의 지연을 지나, 포털(122)에 있어서의 CYCLE_TIME 레지스터의 cycle_count가 "970"인 사이클에 있어서, 포털(122)로부터 버스(41)에 송출된다. 다음으로, 시각(t45)은 참조 사이클 식별 정보를 생성하는 타이밍이기 때문에, 참조 사이클 식별 정보 생성부(158)는 사이클 식별 정보(162)를 샘플링하여 참조 사이클 식별 정보(163)를 "0"으로 전환하고, 참조 사이클 식별 정보 생성부(159)는 사이클 식별 정보(161)를 샘플링하여 참조 사이클 식별 정보(164)를 "1"로 전환한다. 이 결과, 제 1 값 및 제 2 값은 어느 것도 "0"이 되며, 제 3 값 및 지연 정보(165)에 변화는 없다.
다음으로, 시각(t46)에 있어서 포털(122) 측에서 사이클이 전환된 후, 시각(t47)에 있어서 포털(121) 측에서도 사이클이 전환된다. 이어서, 시각(t48)이 되어 버스(40) 상에 사이클 스타트 패킷이 송출되게 되면, 입력 포털 측 사이클 식별 정보 생성부(155)가 사이클 식별 정보를 "1"로 전환한다. 이 때문에, 이 값이 사이클 식별 정보(162)로서 출력 포털의 참조 사이클 식별 정보 생성부(158)를 향해 송출된다. 이 후의 시각(t49)에서 버스(41) 상에 사이클 스타트 패킷이 송출되게 되면, 출력 포털 측 사이클 식별 정보 생성부(155)는 사이클 스타트 패킷 송출에 동기하여 사이클 식별 정보(161)를 "0"으로 전환한다. 이 결과, 제 2 값이 "1"로 전환되어 제 3 값이 "-1"이 되기 때문에, 지연 정보(165)도 "1"로 변화한다.
이 후, 앞의 시각(t49)에서 사이클 스타트 패킷이 송출되고나서 동기 갭에 상당하는 시간을 둔 시각(t50)이 되면, 앞의 시각(t40)에서 포털(122)의 지연부(157)에 입력된 패킷(B)이 1사이클분의 지연을 거쳐 포털(122)로부터 버스(41)에 송출된다. 다음으로, 잎의 시각(t48)으로부터 포털간 전송 지연 시간이 경과한 시각(t51)이 되면, 사이클 식별 정보(162)(포털간 전송 지연 있음)가 "1"로 전환되기 때문에, 제 1 값이 "1"로 전환되어 제 3 값이 "0"이 되며, 지연 정보(165)가 "2"가 된다. 다음으로, 시각(t52)에 있어서 참조 사이클 식별 정보 생성부(158)는 사이클 식별 정보(162)를 샘플링하여 참조 사이클 식별 정보(163)를 "1"로 전환, 참조 사이클 식별 정보 생성부(159)는 사이클 식별 정보(161)를 샘플링하여 참조 사이클 식별 정보(164)를 "0"으로 전환한다. 이 결과, 제 1 값 및 제 2 값이 어느 것도 "0"이 되며, 제 3 값 및 지연 정보(165)에 변화는 없다.
다음으로, 시각(t53)에 있어서 포털(122) 측에서 사이클이 전환되어, 시각(t54)이 되어 버스(41) 상에 사이클 스타트 패킷이 송출되게 된다. 그렇게 하면, 출력 포털 측 사이클 식별 정보 생성부(155)는 사이클 스타트 패킷 송출에 동기하여 사이클 식별 정보(161)를 "1"로 전환한다. 이 결과, 제 2 값이 "1"로 전환되어 제 3 값이 "-1"이 되며, 지연 정보(165)가 "1"이 된다. 이어서, 시각(t55)에서는 포털(121) 측에서 사이클이 전환됨과 동시에, 앞의 시각(t53)에서 사이클 스타트 패킷이 송출되고나서 동기 갭에 상당하는 시간이 경과했기 때문에, 먼저 시각(t44)에서 포털(122)의 지연부(157)에 입력된 패킷(C)이 2사이클분의 지연을 거쳐 포털(122)로부터 버스(41)에 송출된다.
다음으로, 시각(t56)에서 버스(40)에 사이클 스타트 패킷이 송출되게 된다. 그 결과, 입력 포털 측 사이클 식별 정보 생성부(155)가 사이클 식별 정보를 "0"으로 전환, 이것이 사이클 식별 정보(162)로서 출력 포털의 참조 사이클 식별 정보 생성부(158)를 향해 송출된다. 다음으로, 동일 시각(t56)으로부터 포털간 전송 지연 시간에 상당하는 시간이 경과하여 시각(t57)이 되면, 사이클 식별 정보(162)(포털간 전송 지연 있음)가 "0"으로 전환된다. 이 때문에, 제 1 값이 "1"로 전환되어 제 3 값이 "0"이 되며, 지연 정보(165)가 "2"가 된다. 다음으로, 시각(t58)에 있어서 참조 사이클 식별 정보 생성부(158)는 사이클 식별 정보(162)를 샘플링하여 참조 사이클 식별 정보(163)를 "0"으로 전환, 참조 사이클 식별 정보 생성부(159)는 사이클 식별 정보(161)를 샘플링하여 참조 사이클 식별 정보(164)를 "1"로 전환한다. 이 결과, 제 1 값 및 제 2 값이 어느 것도 "0"이 되어, 제 3 값 및 지연 정보(165)에 변화는 없다. 그리고 이 후, 시각(t59) 이후의 사이클에 있어서도 상술한 것과 동일한 동작이 행해진다.
이상과 같이, 본 실시예에서는 모든 동기 패킷에 대해 동등하게 2사이클의 지연을 주면서 버스간 전송을 실현하고 있다. 이 때문에, 예를 들면 전송 속도(S400)로 전송 가능한 동기 패킷의 최대 사이즈는 4킬로바이트가 된다. 이러한 동기 패킷을 전송하기 위해, 종래 기술에서는 5사이클에 상당하는 20킬로바이트분의 축적량을 가진 지연부가 필요해진다. 이에 대해, 본 실시예에서는 12킬로바이트분의 축적량을 가진 지연부를 각 포털에 구비하면 되기 때문에, 종래 기술과 비교하여 8킬바이드분의 축적량을 삭감하는 것이 가능해진다.
또, 본 실시예에서는, 패킷 수신 사이클 식별 정보를 이용하여 패킷에 대한 지연량을 산출하고 있기 때문에, 포털간 전송 지연 영향을 받지 않고 지연량을 정하는 것이 가능해진다. 이 때문에, 예를 들면 도 8에 도시한 패킷(B)과 같이, 입력 포털에 수신된 시점(시각(t37))과 출력 포털 측에 전송된 시점(시각(t40)) 사이에서, 입력 포털 측 버스의 사이클이 변화해버리는 경우라도 불량이 생기는 경우는 없다. 즉, 패킷 수신 사이클 식별 정보가 없으면, 실제로 주어져야하는 지연량보다도 1사이클만큼 큰 지연이 주어져버리지만, 본 실시예에서는 그러한 경우는 없다.
또, 본 실시예에서는 제 1 값이나 제 2 값을 산출하는 데 있어서 N=2로 하고 있기 때문에, 입력 측 및 출력 측 사이클 식별 정보는 2사이클마다 "0", "1"을 반복하게 되어, 사이클 식별 정보를 1비트로 표현할 수 있다. 이 때문에, 포털 사이에서 사이클 식별 정보를 전송하기 위한 신호선 개수를 최소한으로 할 수 있는 것 외에, 신호선 개수가 적기 때문에 사이클 식별 정보를 전송하기 위해 필요해지는 각 부의 구성을 간략화할 수 있다. 또, 제 1 값이나 제 2 값을 산출하는 데에는, 사이클 식별 정보와 참조 사이클 식별 정보와의 배타적 논리합을 취하는 것 만으로 된다. 이 때문에, 2사이클을 넘어 사이클 식별 정보를 순환시킨 경우(즉, N〉2일 때)에 나머지 계산을 필요로 하는 데 비해, 본 실시예에서는 나머지 계산을 행하지 않아도 되며, 배타적 논리합 게이트 등의 간단한 회로를 사용할 수 있기 때문에, 하드웨어 구성을 간략화할 수도 있다.
또한, 상술한 설명에서는 패킷 수신 사이클 식별 정보를 부가 헤더에 격납하도록 했지만, 본 실시예가 이러한 형태에 한정되는 것은 아니다. 예를 들면, 동기 패킷을 전송하기 위한 전송선과는 다른 전송선을 사용하여, 패킷 수신 사이클 식별 정보를 출력 포털로 송신해도 된다.
또, 참조 사이클 식별 정보를 생성하는 타이밍에 있어서의 cycle_offset 값은 cycle_count 값이 변화하고나서 사이클 스타트 패킷 송출까지의 최대 지연 시간에 상당하는 타이밍 내지 각 사이클 끝의 범위 내로 하고 있다. 이 때문에, 버스 조정이나 송신권 획득 등에 기인하여 사이클 스타트 패킷 송출이 지연하는 것에 의한 영향을 받지 않고, 참조 사이클 식별 정보를 생성할 수 있다.
더욱이, 입출력 버스 사이에 있어서의 동기 패킷의 전송 지연에 상당하는 시간이 경과한 후에 참조 사이클 식별 정보를 생성하고 있다. 이로써, 입출력 버스 사이에 있어서의 전송 지연 영향을 받지 않는 시간대에 참조 사이클 식별 정보를 생성할 수 있다. 이 때문에, 입력 측 버스로부터 동기 패킷을 수신한 시점과 출력 측 버스에 동기 패킷을 전송한 시점에서 입력 측 버스의 사이클이 변화해도, 지연 정보가 오류해버린다는 문제를 초래하지 않는다.
게다가, 임의의 버스 사이에 있어서의 cycle_offset 차의 절대치가 항상 "d2" 이하로 한 경우, 참조 사이클 식별 정보를 생성하는 시간대의 개시 시각을 더욱 "d2"에 상당하는 시간만큼 지연시킴과 동시에, 동시간대의 종료 시각을 더욱 "d2"에 상당하는 시간만큼 빠르게 하고 있다. 이로써, 입력 측 버스와 출력 측 버스를 버스간 동기시켰을 때에 이들 버스 사이에서 위상 오프셋이 생기는 시간대에 참조 사이클 식별 정보를 생성해버릴 우려가 없어진다.
또, 동기 패킷에 부가된 패킷 수신 사이클 식별 정보도 사용하여 지연 정보를 생성함으로써, 포털간 전송 지연 영향을 받지 않는 시간대에 있어서 참조 사이클 식별 정보를 생성할 수 있다. 이 때문에, 입력 포털에 수신된 시점과 출력 포털 측에 전송된 시점에서 입력 포털 측 버스 사이클이 변화해도, 지연 정보가 오류해버린다는 문제를 생기지 않는다.
〔제 3 실시예〕
본 실시예는 제 2 실시예에 변형을 가한 것으로, 도 6에 도시한 링크층 LSI(131) 대신 도 9에 도시한 링크층 LSI(180)를 사용하도록 한 것이다. 또한, 도 9에 있어서 도 6에 도시한 것과 동일한 구성 요소에 대해서는 동일 부호를 붙이고 있다. 본 실시예에서는 패킷 수신 사이클 식별 정보가 생성되지 않기 때문에, 제 2 실시예에 존재하고 있던 패킷 수신 사이클 식별 정보 부가부(154)는 존재하지 않는다.
본 실시예에서는, 입력 포털 측으로부터 송신되는 사이클 식별 정보와 출력 포털 측에서 생성되는 참조 사이클 식별 정보를 사용하여, 출력 포털 측에서 산출되어야 할 제 1 값을 산출하고 있다. 그 때문에, 제 2 실시예에서는 사이클 식별 정보(162)가 참조 사이클 식별 정보 생성부(158)에만 공급되고 있던 데 대해, 본 실시예에서는 사이클 식별 정보(162)가 지연 정보 생성부(156)에도 공급되고 있다. 또, 제 2 실시예에서는 동기 패킷이 지연 정보 생성부(156) 및 지연부(157)에 공급되어 있던 데 대해, 본 실시예에서는 후자에게만 공급되도록 구성하고 있다.
여기서, 제 2 실시예에서 설명한 바와 같은 포털간 전송 지연에 기인하여 생기는 지연 정보의 오류 문제는 입력 포털 측 버스에 있어서의 서브액션 갭 값이 포털간 전송 지연 값보다 커지도록 제어함으로써 대처 가능하다. 즉, 동기 패킷이 버스에 전송되고나서 다음 사이클 스타트 패킷이 송신되기까지의 사이에는, 최저라도 서브액션 갭에 상당하는 만큼의 시간이 빈다. 이 때문에, 상기한 바와 같이 서브액션 갭을 포털간 전송 지연보다 크게 하면, 동기 패킷을 포털 사이에서 전송하고 있는 동안에 입력 포털 측 버스에서 사이클이 변해버리는 경우는 없어진다.
또한, 서브 액션 갭의 제어는 1394 규격으로 규정되어 있는 PHY configuration 패킷을 버스 상에 송신함으로써 실현 가능하다. 여기서, PHY configuration 패킷의 포맷을 도 10에 도시해 둔다. 1394 규격에 의하면, 도면 중의 T필드를 "1"로 셋함과 동시에 gap_cnt 필드에 원하는 값을 대입함으로써, 서브액션 갭 값을 임의로 제어하는 것이 가능해진다. 덧붙여 말하면, 이들 이외의 필드는 직접 관련하지 않기 때문에 여기서는 설명을 생략한다.
본 실시예에 있어서의 브릿지 동작은 제 2 실시예 동작으로부터 용이하게 이해할 수 있기 때문에, 여기서는 반복하여 설명하지 않는다. 즉, 제 2 실시예와의 차이는 입력 포털로부터 출력 포털 동기 패킷을 전송할 때에 패킷 수신 사이클 식별 정보가 부가되지 않는 것 및 출력 포털 측에서 지연 정보를 생성할 때에 패킷 수신 사이클 식별 정보가 아니라 사이클 식별 정보(162)가 사용되는 것이다.
이상과 같이, 본 실시예에서는, 서브액션 갭을 포털간 전송 지연보다도 크게 하고 있기 때문에, 동기 패킷이 버스에 전송되고 다음으로 사이클 스타트 패킷이 송신될 때까지 최저라도 서브액션 갭에 상당하는 시간이 빈다. 이 때문에, 동기 패킷을 포털 사이에서 전송하고 있는 동안에 입력 포털 측 버스에서 사이클이 전환되는 경우는 없어진다. 따라서, 입력 포털 측에서 생성되는 사이클 식별 정보와 출력 포털 측에서 생성되는 참조 사이클 식별 정보를 사용하여 지연 정보를 생성할 경우에, 입력 포털에 수신된 시점과 출력 포털 측에 전송된 시점에서 입력 포털 측 버스의 사이클이 변화해도 지연 정보를 실패하는 문제를 초래하는 경우는 없다.
〔제 4 실시예〕
본 실시예도 제 2 실시예에 변형을 가한 것으로, 도 6에 도시한 링크층 LSI(131) 대신 도 11에 도시한 링크층 LSI(190)를 사용하도록 한 것이다. 또한, 도 11에 있어서 도 6에 도시한 것과 동일한 구성 요소에 대해서는 동일 부호를 붙이고 있다. 본 실시예는 IEC(국제 전기 표준 회의) 61883 규격에 근거하는 리얼 타임 데이터가 격납된 동기 패킷을 버스간 전송시키기 위한 것이다. 그 때문에 본 실시예에서는, 제 2 실시예에서 설명한 링크층 LSI(131)에 대해, 타임 스템프 변환부(191 및 192)에 의해 실현되는 타임 스템프 변환 기능을 추가하고 있다.
그래서, 우선 타임 스템프 변환 기능에 대해서 설명한다. 이 타임 스템프 변환은 IEC 61883 규격으로 정해져 있으며, 동화 등의 리얼 타임 데이터가 격납된 동기 패킷을 브릿지에서 버스간 전송할 때에 필요시되는 것이다. IEC 61883 규격에서는, CIP(Common Isochronous Packet) 헤더라 불리는 헤더를 리얼 타임 데이터에 부가하여, 이것을 동기 패킷의 데이타 필드에 격납하는 규격이 정해져 있다. 이 밖에, 전송되는 동화의 종별에 따라서는, 소스 패킷 헤더라 부르는 헤더를 리얼 타임 데이터에 부가한 후에 더욱 CIP 헤더를 부가하여 동기 패킷에 격납하는 경우도 있다.
이러한 동기 패킷을 1394 버스에서 전송하여 수신 기기 측에서 데이터 복호화를 행할 때에는 1394 버스에서 생기는 지터를 흡수하기 위해 타임 스템프가 이용된다. 타임 스템프는 CIP 헤더 또는 소스 패킷 헤더에 격납되어 있으며, CYCLE_TIME 레지스터가 나타내는 현재 시각보다도 미래 값을 나타냄과 동시에, 수신 기기가 자신에게 내장되어 있는 복호화기로 데이터를 건네는 타이밍을 나타내고 있다. 즉, 타임 스템프는 리얼 타임 데이터를 복호화하는 타이밍을 나타낸 시각 정보라 할 수 있다.
여기서, CIP 헤더 및 소스 패킷 헤더 포맷을 각각 도 12a 및 도 12b에 도시해 둔다. CIP 헤더에 타임 스템프를 격납할 경우는, 도 12a에 도시한 바와 같이, 16비트의 SYT 필드에 격납한다. 이 필드에 격납되는 값은 13비트의 cycle_count 필드 중 하위 4비트 값과 12비트의 cycle_offset 필드 값이다. 한편, 소스 패킷 헤더에 타임 스템프를 격납할 경우는, 도 12b에 도시한 바와 같이, 13비트의 cycle_count와 12비트의 cycle_offset 모두를 25비트의 Time Stamp 필드에 타임 스템프로서 격납한다. 또한, 지금 설명한 이외의 필드에 대해서는 직접 관련성이 없기 때문에, 여기서는 그 설명을 생략한다.
상술한 대로, 브릿지를 사용하여 동기 패킷을 버스간 전송할 때에는 2사이클 이상의 동기 지연이 필요한 가운에, 버스간 동기를 확립한 후라도, 각 버스에 있어서의 cycle_count 필드 값은 일반적으로는 일치하지 않고 있다. 이렇기 때문에, IEC 61883에 준거한 리얼 타임 데이터가 격납된 동기 패킷을 브릿지에서 버스간 전송할 때에는 브릿지에서 타임 스템프 값을 변환해 줄 필요가 있다. 즉, 브릿지는 입력 포털 측 버스에서 타임 스템프가 갖고 있는 현재 시각과의 차이를 출력 포털 측 버스에서도 유지하도록 변환을 행한다.
단, 이 변환은 타임 스템프 필드 중 cycle_count 부분에 대해서만 행하며, CIP 헤더 중의 SYT 필드에 관해서는 cycle_count의 하위 4비트에만 대해서 행한다. 예를 들면, 현재 시각인 cycle_count 값이 "3"이고, 입력 포털에서 수신한 패킷의 타임 스템프가 갖는 cycle_count 부분의 값이 "5"인 경우를 상정한다. 이 경우, 후자 값은 전자 값보다도 "2"만큼 크다. 따라서, 출력 포털이 이 패킷을 송출할 때의 cycle_count 값이 예를 들면 "80"이면, 타임 스템프가 갖는 cycle_count 부분의 값을 "5"에서 "82"로 변환한다.
도 11로 이야기를 돌리면, 타임 스템프 변환부(191)는 패킷 수신 사이클 식별 정보 부가부(154)로부터 출력되는 동기 패킷(도 7b 참조)을 인력으로 하여, 그 데이타 필드(도 7b 중의 「data field」)에 격납되어 있는 타임 스템프 값을 변환한다. 즉, 이 타임 스템프가 현재 시각에 대해 갖고 있는 차분을 추출하여, 이 추출된 값으로 타임 스템프 값을 표서하여 변환을 행한다. 그 때에는, 타임 스템프 중 cycle_count 부분(도 18을 참조)에 대해서만 변환을 행하도록 한다. 결국, 타임 스템프 변환은 다음 식에 따라서 행해지게 된다.
타임 스템프(변환 후)={8000+타임 스템프(변환 전)-CYCLE_TIME.cycle_count} % 800O … (3)
여기서, CYCLE_TIME. cycle_count는 현재 시각에 있어서의 CYCLE_TIME 레지스터에 격납된 cycle_count 필드 값을 나타내고 있다.
또한, 타임 스템프가 CIP 헤더의 SYT 필드〔도 12a 참조〕에 격납되어 있을 경우, 타임 스템프 필드에는 cycle_count의 하위 4비트 밖에 격납되지 않는다. 따라서 이 경우는 (3)식에서 얻어진 타임 스템프(변환 후)의 하위 4비트를 최종적인 타임 스템프 값으로서 격납하도록 하면 된다. 그래서 이 경우는 (3)식보다도 간략화된 변환 식으로서 다음 식을 사용할 수 있다.
타임 스템프(변환 후)={타임 스템프(변환 전)-CYCLE_TIME. cycle_count} & 0xF … (4)
여기서, "A&B"가 되는 표기는 "A"와 "B"의 비트마다의 논리곱을 취하는 것을 의미하고 있다. 또, "0xF"는 16진수 표시의 "F"를 의미하고 있다.
한편, 타임 스템프 변환부(192)는 동기 패킷 전송 포트(137)를 통해 스위칭 패브릭(124)(도 4 참조)으로부터 보내져 오는 동기 패킷에 포함되어 있는 타임 스템프를 변환한다. 즉, 입력 포털 측에서 추출된 타임 스템프와 현재 시각 사이의 차분에 대해, 출력 포털 측에 있어서의 현재 시각을 더하도록 한다. 단, 타임 스템프 변환부(192) 출력은 지연부(157)가 지연 정보(165)에 의해 지정한 분만큼 더욱 여러 사이클 지연되고나서 버스 상에 송신된다. 이 때문에, 타임 스템프 변환부(192)는 지연 정보(165)에서 지정된 값을 더욱 더하고나서 지연부(157)로 출력한다. 그 때문에, 타임 스템프 변환부(192)에는 지연 정보(165)가 공급되도록 구성되어 있다.
결국, 타임 스템프 변환부(192)에 있어서의 변환은 다음 식에 따라서 행해진다.
타임 스템프(변환 후)={타임 스템프(변환 전)+CYCLE_TIME. cycle_count+지연 정보(165)} % 8000 … (5)
또한, 타임 스템프가 SYT 필드에 격납되어 있는 것이면, (5)식에서 얻어진 값의 하위 4비트만을 최종적인 타임 스템프로서 사용하도록 한다.
본 실시예에 있어서의 동작도 제 2 실시예에 있어서의 동작과 거의 동일하기 때문에, 여기서는 반복하여 설명하지 않는다. 즉, 본 실시예에서는, 입력 포털 측에서 타임 스템프 변환부(191)에 의한 타임 스템프 변환 처리가 전송해야 할 동기 패킷에 대해 행해지는 것 외에, 출력 포털 측에서 타임 스템프 변환부(192)에 의한 타임 스템프 변환 처리가 전송되어 온 동기 패킷에 대해 행해진다.
이상과 같이, 본 실시예에 의하면, 각 포털이 동기 패킷에 의해 전송되는 리얼 타임 데이터의 복호화 타이밍을 나타내기 위해 부가된 타임 스템프 값을 변환하도록 하고 있다. 이 때문에, 예를 들면, IEC 61883 규격에 준거한 리얼 타임 데이터가 격납된 동기 패킷을 버스간 전송시킬 수 있다. 그 때, cycle_count의 하위 4비트만을 타임 스템프로서 격납함으로써, CIP 헤더로의 SYT 필드에 격납되어 있는 타임 스템프에 대해 타임 스템프 변환을 행할 수도 있다. 또, 본 실시예에서는, 패킷마다 다른 지연량에 따라서 타임 스템프 변환을 행하고 있기 때문에, 사이클 주파수의 지터가 존재하는 상황 하라도 적절한 타임 스템프 변환이 가능하게 되어 있다. 또한, 상술한 설명에서는 IEC 61883 규격에 근거하는 리얼 타임 데이터를 대상으로 하고 있었지만, 이와 동등한 리얼 타임 데이터에 대해서도 본 실시예를 적용 가능한 것은 물론이다.
〔제 5 실시예〕
도 13은 본 실시예에 의한 브릿지 구성을 도시하는 블록도이고, 도 4에 도시한 것과 동일한 구성 요소에 대해서는 동일 부호를 붙이고 있다. 본 실시예에 의한 브릿지(200)는 도 4와 동일한 기능을 구비하고 있으며, 3개 포털을 구비한 구성과 등가인 것이다. 도 4와의 상위점은 포털(121 내지 123)이 링크층 LSI(201) 및 물리층 LSI(202 내지 204)에서 치환되어 있는 것에 있다. 즉, 각 포털에 구비되어 있는 링크층 LSI(131)(도 5 참조)의 기능을 링크층 LSI(201)에 집약함과 동시에, 개개 포털에 구비되어 있는 물리층 LSI(130)(도 5 참조)의 기능을 각각 물리층 LSI(202 내지 2O4)에서 실현한 것이다.
여기서, 링크층 LSI(201)의 내부 구성을 도 14에 도시한다. 도시한 링크층 LSI(201)은 링크 기능부(211 내지 213)를 1칩에 집적화시킨 것으로, 개개의 링크 기능부가 노드 1개분의 링크층 기능을 실현하기 위한 수단으로서 동작한다. 링크 기능부(211 내지 213)는 어느 것도 도 6/도 9/도 11에 도시한 PHY/LINK 인터페이스(150)와 동등한 기능 블록을 갖고 있으며, 각각의 링크 기능부가 도 13에 도시한 물리층 LSI(202 내지 204)에 접속된다. 또, 이들 링크 기능부(211 내지 213)에는 각각 도 5에 도시한 링크층 LSI(131)이 구비하는 기능을 실장하고 있다.
이상과 같은 구성에 의해, 상술한 각 실시예에서 설명한 브릿지가 행하는 것과 완전히 동일한 동기 패킷 전송 기능을 본 실시예에서도 실현하는 것이 가능해진다. 또, 1포털분의 구성을 복수 개 집적화하여 복수 포털분의 기능을 1칩에 실장함으로써 다음과 같은 이점이 있다. 즉, 본 실시예에 의하면, 1포털분의 기능을 갖는 칩을 복수 개 사용하여 브릿지를 구성한 경우와 비교했을 때에, 이들 복수 개의 칩 사이에서 수수되는 사이클 식별 정보 등을 전송하기 위한 신호선을 1칩 내로 수납된다. 이 때문에, 복수 칩으로 구성한 경우에 비해 예를 들면 칩의 핀수를 줄이는 것이 가능해져, 칩의 코스트를 내릴 수 있다.
이 밖에, 도 13에 도시한 링크층 LSI(201) 이외의 구성 요소가 구비하는 기능을 필요에 따라서 링크층 LSI(201)에 실장해도 된다. 예를 들면, 링크층 LSI(201)에 스위칭 패브릭(124)이 맡는 것과 동등한 기능을 실장하는 것이 가능하다. 이렇게 함으로써, 스위칭 패브릭(124)과 링크층 LSI(201) 사이에 배선되는 다수의 고속 신호선을 1칩에 수용 가능해지기 때문에, 고속 동작이나 장치의 소형화에 극히 유효하다.
〔제 6 실시예〕
상술한 각 실시예에서는, 패킷의 전송 성능을 가장 중요시하여 브릿지를 하드웨어에서 실현하는 것을 상정하고 있었다. 이에 대해 본 실시예에서는, 퍼스널 컴퓨터나 워크 스테이션과 같은 극히 일반적인 컴퓨터를 이용하여, 브릿지 기능을 소프트웨어적으로 실현하는 것이다. 최근, 이들 컴퓨터는 일진월보로 고속화 및 고성능화를 이루고 있고, 금후에 있어서도 CPU 성능 등의 한층 더한 향상이 있는 것을 생각하면, 하드웨어가 아니라 소프트웨어에서 브릿지를 실현해도 실용에 견딜 수 있다고 생각된다.
도 15는 본 실시예에 의한 브릿지를 실현하기 위한 시스템 구성예를 도시한 블록도이다. 동일 도면에 도시한 예에서는, 브릿지로서의 역할을 하는 퍼스널 컴퓨터(PC)가 1394 버스(301)와 1394 버스(302) 사이에서 패킷 전송을 행한다. 도시한 바와 같이, 퍼스널 컴퓨터(PC)는 2장의 1394 인터페이스 보드(303 및 304)를 실장하고 있으며, 이들에 접속된 1394 버스(301, 302)와 퍼스널 컴퓨터(PC) 사이의 인터페이스를 담당한다. 1394 인터페이스 보드(303 및 304)는 각각이 포털 1개분(도면 중에서는 각각 포털(#1), 포털(#2))에 대응하고 있다. 이 중, 1394 인터페이스 보드(303)는 1394 규격의 링크층에 준거한 기능을 실현하는 LINK 칩(305)과, 1394 규격의 물리층에 준거한 기능을 실현하는 PHY 칩(306)을 갖고 있으며, 이들 양 칩이 도 6 등에 도시한 PHY/LINK 인터페이스(150)와 동등한 기능을 하고 있다.
또한, LINK 칩(305)은 PHY 칩(306) 또는 후술하는 PCI 버스(309)로부터 보내져 오는 패킷을 버퍼링하기 위한 송신 버퍼를 내장하고 있다. 또, 1394 인터페이스 보드(304)는 LINK 칩(305), PHY 칩(306)과 동일 구성의 LINK 칩(307), PHY 칩(308)을 구비하고 있다. 더욱이, 1394 인터페이스 보드(303 및 304)는 퍼스널 컴퓨터용 버스로서 가장 보급되고 있는 버스의 하나인 PCI(Periphera1 Component Interconnect) 버스(3O9)에 접속되어 있다.
다음으로, PCI 브릿지(310)는 PCI 버스(309)와 CPU 버스인 내부 버스(311)를 상호 접속하기 위한 디바이스이다. 이 내부 버스(311)에는 CPU(312), RAM(Random Access Memory)(313), 입출력 컨트롤러(314)가 접속되어 있다. 또한, 일반적인 퍼스널 컴퓨터의 CPU 버스와 마찬가지로, 내부 버스(311)에는 ROM(Read 0nly Memory)나 각종 인터페이스 카드 등이 접속되어 있어도 된다. CPU(312)는 퍼스널 컴퓨터(PC) 전체를 통괄하여 브릿지로서의 동작을 실현한다. RAM(313)은 CPU(312) 동작을 제어하기 위한 프로그램을 격납하고 있는 것 외에, CPU(312)를 위한 작업용 영역으로서도 사용된다. 또한, 해당 프로그램 내에서는 후술하는 각종 변수를 사용하지만, 이들 변수는 CPU(312)에 내장된 레지스터군이나 RAM(313) 상에 확보된 변수 기억 영역에 기억된다. 덧붙여 말하면, 상기 프로그램 중, 동기 패킷의 버스간 전송을 제어하는 부분을 특히 「동기 패킷 전송 제어 프로그램」이라 부른다.
이 밖에, 사이클 식별 정보(101 및 102) 및 참조 사이클 식별 정보(105 및 106)에 대해서도 RAM(313) 상에 기억 영역이 확보되어 있고, CPU(312)가 그들 값을 적당히 참조 또는 갱신한다. 또, CYCLE_TIME 레지스터에 관해서는, 도 6 등에 도시한 사이클 타임(160)을 내부 버스(311)에 접속할지 혹은 범용 타이머 칩을 이용하여 CPU(312)가 유사적으로 CYCLE_TIME 레지스터 기능을 시뮬레이트해도 된다. 후자의 경우에는, CYCLE_TIME 레지스터용 영역을 RAM(313) 상에 확보함과 동시에, 타임 칩을 내부 버스(311)에 접속해 둔다. 그리고, 예를 들면 상술한 공칭 24.576메가 헤르쯔의 클록과 동일 주기로 타임 칩으로부터 CPU(312)로 삽입된다.
CPU(312)는 이 삽입을 계기로 하여 cycle_offset 필드를 갱신함과 동시에, cycle_count 필드 및 second_count 필드에 관해서는 각각 cycle_offset 필드 및 cycle_count 필드가 "0"에 랩 어라운드한 시점에서 갱신한다. 또, CPU(312)는 cycle_count 필드를 갱신하는 타이밍으로 그 값이 참조 사이클 식별 정보를 생성하는 타이밍인지의 여부를 조사하여, 그렇다면 사이클 식별 정보(101 및 102)를 RAM(313)으로부터 추출하여 각각 참조 사이클 식별 정보(105 및 106)의 기억 영역에 복사한다.
다음으로, 입출력 컨트롤러(314)는 내부 버스(311)와 각종 입출력 기기 사이의 동작을 제어하기 위한 디바이스로, 여기서는 구동 장치(315)를 제어함으로써, 이 구동 장치(315)에 장착된 기록 매체(316)에 대한 액세스를 가능하게 하고 있다.
다음으로, 기록 매체(316)는 플로피 디스크, 광 자기 디스크, CD(컴팩트 디스크) ROM 등, 혹은 하드 디스크와 같은 컴퓨터 판독 가능한 각종 기록 매체이다. 구동 장치(315)는 기록 매체(316)를 구동함으로써, 기록 매체(316)가 예를 들면 CDROM이면 구동 장치(315)는 CDR0M 드라이브이다.
컴퓨터 판독 가능한 기록 매체로서는 지금 서술한 바와 같은 프로그램을 정적으로 기억하는 것에 한정되는 것은 아니다. 예를 들면, 전용선이나 전화 회선 등의 통신 회선을 통해 단시간만 동적으로 프로그램을 보존하는 것, 즉, 인터넷 등의 네트워크 상에 있어서 프로그램이나 데이터를 보존, 전송, 중계하는 서버나 루터, 컴퓨터에 내장된 주기억이나 캐시 메모리와 같이 일정 기간만큼 프로그램을 보존 가능한 것을 모두 포함하고 있다. 또, 상기 프로그램은 이 프로그램을 기억 장치 등에 격납한 컴퓨터로부터 전송 매체 또는 전송 매체 중의 전송파에 의해 다른 컴퓨터에 전송되는 것이어도 된다. 여기서, 전송 매체란 인터넷 등의 통신망이나 전화 회선 등의 통신 회선과 같이, 정보를 전송하는 기능을 가진 매체인 것을 말한다.
이 기록 매체(316)에는 퍼스널 컴퓨터(PC)를 브릿지로서 기능시키기 위한 프로그램의 일부 또 전부가 기억되어 있다. 즉, 이 프로그램은 이하에 상술하는 기능의 일부를 실현하기 위한 것(모듈 등)이어도 되며, 나아가서는 컴퓨터에 이미 기록되어 있는 프로그램과의 조합으로 이들 기능을 실현할 수 있는 것(업데이트 프로그램이나 패치(patch) 등)이어도 된다. 그리고, 퍼스널 컴퓨터(PC)를 동작시킬 때에는 CPU(312)의 지시 하에서 입출력 컨트롤러(314)를 통해 기록 매체(316)로부터 RAM(313) 상에 상기 프로그램을 미리 전송해 둔다. 그 후, CPU(312)가 RAM(313) 상의 프로그램을 실행함으로써 퍼스널 컴퓨터(PC) 내의 각 부를 제어하여, 이하에 서술하는 바와 같은 브릿지 기능을 실현하고 있다.
다음으로, 도 16에 도시하는 플로 챠트를 참조하면서, 상기 구성을 사용하여 동기 패킷을 전송할 때의 순서에 대해서 설명한다. 여기서, 도 16에서는 1394 버스(301)로부터 1394 버스(302)를 향해 동기 패킷을 전송할 때의 순서만을 도시하고 있다. 퍼스널 컴퓨터(PC) 상에서 행해지는 처리로서는, 이 이외에도 포털의 초기화 처리나 1394 버스(301)-1394 버스(302) 사이에 있어서의 비동기 패킷의 전송 처리 등도 있다. 그렇지만, 이들 처리의 상세함은 본 발명의 포인트와 직접적인 관계가 없기 때문에, 특히 플로 챠트로서 도시하지는 않는다. 이 밖에, 상기와는 반대로 1394 버스(302)로부터 1394 버스(301)를 향한 동기 패킷의 전송 처리도 당연히 생각할 수 있다. 단 이 경우는, 이하의 설명 중에 있어서의 1394 버스(301, 302)나 1394 인터페이스 보드(303, 304)를 각각 1394 버스(302, 301)나 1394 인터페이스 보드(304, 3O3)에 재판독하면 된다.
본 실시예에서는 사이클 식별 정보 값이 "0" 내지 "7" 범위에서 "1"씩 증가하면서 주기적으로 변화해 가는 것을 상정하고 있으며, 이것은 제 2 실시예에서 설명한 「N」값이 "8"인 경우에 상당하고 있다. 이 "8"이라는 값 그 자체에 특별한 의미는 없으며, 어떠한 값이어도 된다.
우선 처음에, CPU(312)는 1394 버스(301) 측에서 동기 패킷이 수신되어 있는지의 여부를 조사한다(스텝(S1)). 여기서, 1394 인터페이스 보드(3O3)는 1394 버스(301) 상을 전송되는 데이터를 늘 감시하고 있다. 그리고, 1394 버스(301)로부터 동기 패킷을 수신하고 있는 것이 검출된 경우, PHY 칩(306), LINK 칩(305)에 의한 처리를 순차 거침으로써, 동기 패킷이 PCI 버스(309) 상에 출력된다. 그래서, PCI 브릿지(310)는 이 동기 패킷을 더욱 내부 버스(311)로 전송한다. 덧붙여 말하면, 지금 서술한 동작은 동기 패킷 이외의 패킷(예를 들면, 사이클 스타트 패킷이나 그 밖의 비동기 패킷)에 대해서도 동일함과 동시에, 입력 포털 측에 한하지 않고 출력 포털 측에 대해서도 동일하다. 그리고 CPU(312)는 입력 포털 측/출력 포털 측 중 적어도 한쪽에서 사이클 스타트 패킷이 검출된 경우에, 이것을 계기로 하여 각각 사이클 식별 정보(101 및 102)를 갱신한다.
다음으로, 동기 패킷이 검출되지 않는(스텝(S1)이 "NO") 동안, CPU(312)는 동기 패킷이 수신되어 있는지의 여부를 예를 들면 일정 시간 간격으로 반복하여 조사한다. 그렇게 하고 있는 동안에 동기 패킷이 수신된 것을 검출(스텝(S1)이 "YES")했으면, CPU(312)는 수신된 동기 패킷을 일단 RAM(313)에 기억한다(스텝(S2)). 다음으로, CPU(312)는 수신한 동기 패킷에 대해 주어야 할 지연량을 계산한다. 그 때문에, CPU(312)는 1394 버스(301) 측 사이클 식별 정보 및 참조 사이클 식별 정보를 취득하여 각각 변수(C1) 및 변수(Cr1)에 격납함과 동시에, 1394 버스(302) 측 사이클 식별 정보 및 참조 사이클 식별 정보를 취득하여 각각 변수(C2) 및 변수(Cr2)에 격납한다(스텝(S3)).
다음으로, CPU(312)는 상술한 각 실시예〔예를 들면 제 2 실시예에서 설명한 (1)식〕에 준하여 제 1 값 및 제 2 값을 산출한 후, 제 1 값으로부터 제 2 값을 감산하여 얻은 제 3 값으로 고정 지연량 "2"를 더하여 지연량을 구한다. 또한, CPU(312)는 고정 지연량에 대응시켜 미리 고정치 "2"를 변수(Df)에 기억하고 있다. 도 16에도 도시한 바와 같이, 이 경우는 제 1 값이 (C1-Cr1+8) %8, 제 2 값이 (C2-Cr2+8) %8이기 때문에, 지연량은 {(C1-Cr1+8)%8}-{(C2-Cr2+8)%8}+Df에서 산출된다. 그리고 CPU(312)는 산출된 지연량을 변수(D)에 격납한다(스텝(S4)).
이렇게 하여 지연량이 산출되었으면, CPU(312)는 변수(D) 값을 작업용 변수(i)에 카피(스텝(S5))한 후, 변수(i) 값이 "1"이 되었는지를 판정한다(이 판정을 행하는 이유에 대해서는 후술한다). 상술한 바와 같이 변수(D)에는 고정 지연량 "2"가 포함되어 있기 때문에, 처음은 반드시 스텝(S6)의 판정 결과가 "NO"가 된다. 그래서, CPU(312)는 스텝(S1)에 있어서 포털(#1)에서 동기 패킷이 수신되었는지의 여부를 조사한 바와 같이, 출력 측 포털(#2)(1394 버스(302)) 측에서 사이클 스타트 패킷이 수신되어 있는지의 여부를 조사한다(스텝(S7)). 혹시 수신되어 있지 않은(동일 스텝이 "NO") 것이면, CPU(312)는 예를 들면 일정 시간 간격으로 다시 사이클 스타트 패킷의 수신 유무를 조사한다.
그 후, 포털(#2) 측에서 1사이클이 경과하면, 도시하지 않은 사이클 매스터가 1394 버스(302) 상에 사이클 스타트 패킷을 송출한다. 이로써, 1394 인터페이스 보드(304) 내의 PHY 칩(308), LINK 칩(307) 처리를 거침으로써, 사이클 스타트 패킷이 PCI 버스(309) 상에 송출되며, 동기 패킷의 경우와 동일하게 PCI 브릿지(310)를 통해 내부 버스(311)로 전송되어 온다. 그래서, CPU(312)는 사이클 스타트 패킷이 검출되면(스텝(S7)이 "YES"), 그 때마다 변수(i) 값을 "1"씩 줄여 간다(스텝(S8)). 그리고 이 후는 스텝(S6 내지 S8) 처리를 반복하여 행해 간다.
그렇게 하면 어느 것은 변수(i) 값이 "1"이 된다(스텝(S6)이 "YES"). 이 타이밍은 동기 패킷을 1394 버스(302)로 송신해야 할 사이클보다도 1사이클만큼 이전 타이밍이 된다. 그래서, CPU(312)는 RAM(313)에 기억해 둔 동기 패킷을 추출하여, 내부 버스(311), PCI 브릿지(310), PCI 버스(309)를 통해 1394 인터페이스 보드(304)에 송신하여, 해당 동기 패킷을 1394 버스(302)로 송신하도록 요구한다(스텝(S9)).
1394 인터페이스 보드(304)에서는, LINK 칩(307)이 내장된 송신 버퍼로 동기 패킷을 격납한다. 이렇게 함으로써, 해당 송신 버퍼에 있어서 마지막 1사이클에 상당하는 지연이 주어진다. 다음으로, 1394 인터페이스 보드(304)는 마지막 1사이클의 지연을 거친 다음의 사이클 개시 직후에 있어서, 1394 버스(302) 상에서 조정을 행한 후, 동기 패킷을 1394 버스(302)로 송신한다. 이렇게 하여, 1394 버스(301)로부터 1394 버스(302)로 동기 패킷이 전송된다.
또한, 제 2 실시예에서 설명한 바와 같이, 동기 패킷에 패킷 수신 사이클 식별 정보를 부가하여 입력 포털 측으로부터 출력 포털 측에 전송하는 동작은 다음과 같이 하면 된다. 즉, CPU(312)는 도 16의 스텝(S3)에서 포털(#1)의 사이클 식별 정보를 변수(C1)에 설정할 때에, 그 시점에 있어서의 포털(#1)의 사이클 식별 정보와 CYCLE_TIME 레지스터 값을 사용하여, 동기 패킷의 포털간 전송 지연에 상당하는 시간(상술한 예에서는 10마이크로초)이 경과한 시점에 있어서의 사이클 식별 정보 값을 산출하여, 이 사이클 식별 정보 값을 변수(C1)에 격납한다. 또, 참조 사이클 식별 정보를 생성하는 타이밍은 제 2 실시예에서 설명한대로 미리 설정해두면 된다.
또, 제 3 실시예에서 설명한 바와 같이, 서브액션 갭을 포털간 전송 지연 값보다도 크게 하기 위해서는 다음과 같이 하면 된다. 예를 들면, CPU(312)는 스텝(S9)에 있어서 동기 패킷을 포털(#2) 측으로 송신한 시점(정확하게는, 해당 동기 패킷을 1394 버스(302) 상에서 전송하는 데 요하는 시간이 경과한 시점)으로부터 서브액션 갭에 상당하는 시간 감시를 행하며, 그 때에 있어서의 감시 시간을 포털간 전송 지연 값보다도 큰 값으로 설정해두면 된다.
또, 제 4 실시예에서 설명한 바와 같이, 타이프 스템프 변환을 행할 경우에는 다음과 같이 하면 된다. 즉, CPU(312)는 스텝(S4) 처리를 행한 후에, 타임 스템프가 격납되어 있는 동기 패킷 상의 영역을 추출하고, CYCLE_TIME 레지스터 값과 지연 정보(165)에 대응하는 변수(D) 값을 참조하며, 제 4 실시예에서 상술한 타임 스템프 변환 처리〔(3) 내지 (4)식〕을 실시하여, 이로써 얻어진 값으로 RAM(313) 상에 있어서의 동기 패킷의 타이프 스템프 영역을 갱신한다. 또한, 제 4 실시예에서는 입력 포털 측, 출력 포털 측에서 처리를 별도로 행하고 있었다. 그러나, 출력 포털 측에 있어서의 타임 스템프 변환에서 사용하는 CYCLE_TIME 레지스터 값은 입력 포털 측에 있어서의 CYCLE_TIME 레지스터 값과 포털간 전송 지연에 근거하여 산출할 수 있다. 이 때문에, 양 포털 측에 관한 타임 스템프 변환 처리를 일괄하여 행해버려도 된다.
〔변형예〕
상술한 각 실시예는 어느 것도 3개의 포털을 갖는 브릿지에 관한 것이었다. 그렇지만, 개개의 브릿지가 구비하는 포털 수는 "2"이상이면 몇이어도 된다. 특히, 포털을 2개만 구비하는 브릿지에서는, 서로 다른 포털에 접속된 입력 포트와 출력 포트가 고정적으로 접속되도록 스위칭 패브릭을 구성하면 좋아진다. 이 때문에, 브릿지 구성을 대단히 간단한 구성으로 할 수 있다. 또, 이 경우에는, 복수의 링크층 LSI 또는 링크 기능부에 대해서, 스위칭 패브릭 사이의 인터페이스를 직접 접속하도록 하여, 스위칭 패브릭을 생략하는 구성으로 해도 된다.
또, 상술한 각 실시예에서는, 지연량을 구하는 데 있어서 제 3 값에 고정 지연량에 상당하는 "2"를 더하고 있었지만, 이 고정치 "2"를 제 1 값이나 제 2 값에 포함시키도록 해도 된다.
또, 상술한 설명에서는 이미 규격화되어 있는 IEEE Std. 1394-1995를 전제로 하고 있었지만, 현 시점에 있어서 드래프트 단계에 있는 P1394a, P1394b 등도 1394 규격과 상위 호환성이 있기 때문에, 이들에 준거한 버스에 대해서도 본 발명의 기술 사상을 적용할 수 있다. 더욱이, 상술한 설명에서는 일관해서 IEEE 1394를 전제로 하고 있었지만, USB 사양에 있어서도 동기 전송이 제안되어 있기 때문에, 이러한 버스에 대해 본 발명의 기술 사상을 적용하도록 해도 된다. 즉, 동기 전송 또는 이와 동등한 전송 모드가 서포트되어 있는 버스 전반에 대해 본 발명을 적용할 수 있다.
본 발명은 동기 패킷을 버스간 전송할 때에 필요해지는 송신 버퍼 사이즈를 삭감할 수 있고, 더구나, 사이클 스타트 패킷에 송출 지연이 있는 경우에도 전송되는 동기 패킷에 일정한 동기 지연을 주는 것이 가능한 동기 패킷 전송 방법을 제공함에 있다. 또, 본 발명은 이러한 동기 패킷 방법을 실현하기 위한 동기 패킷 전송 제어 프로그램을 기록한 기록 매체, 브릿지 및 패킷 전송 제어 LSI를 제공한다.

Claims (26)

  1. 사이클 단위로 전송 대역이 보증된 동기 패킷(A, B, C)을 다른 버스(40, 41) 사이에서 전송하는 동기 패킷 전송 방법으로,
    상기 사이클 개시를 나타내는 사이클 스타트 패킷이 버스로 송출되는 타이밍에 동기하여 변화하는 사이클 식별 정보(101, 102)를 입력 측(40) 버스 및 출력 측(41) 버스 각각에 대해서 생성하며,
    이들 사이클 식별 정보에 근거하여, 미리 정해진 동일 타이밍으로부터의 경과 사이클 수를 상기 입력 측 버스 및 상기 출력 측 버스에 대해서 각각 구하며,
    이들 경과 사이클 수에 근거하여 산출한 지연 정보(109)가 나타내는 사이클 수가 상기 출력 측 버스 상에서 경과할 때까지, 상기 입력 측 버스로부터 입력된 상기 동기 패킷을 지연시키고나서 상기 출력 측 버스에 송신하는 동기 패킷 전송 방법.
  2. 사이클 단위로 전송 대역이 보증된 동기 패킷(A, B, C)을 다른 버스(40, 41) 사이에서 전송하는 동기 패킷 전송 방법으로,
    상기 사이클 개시를 나타내는 사이클 스타트 패킷이 입력 측 버스(40) 및 출력 측 버스(41) 상에서 각각 발생할 정도로 변화하는 사이클 식별 정보를 입력 측 사이클 식별 정보(101) 및 출력 측 사이클 식별 정보(102)로서 각각 생성하며,
    상기 입력 측 사이클 식별 정보 및 상기 출력 측 사이클 식별 정보를 미리 정해진 동일 타이밍으로 취득하여 입력 측 참조 사이클 식별 정보(105) 및 출력 측 참조 사이클 식별 정보(1O6)를 각각 생성하며,
    상기 입력 측 참조 사이클 식별 정보가 나타내는 사이클로부터 상기 동기 패킷이 상기 입력 측 버스에 나타나는 시점까지의 경과 사이클수인 제 1 값과, 상기 출력 측 참조 사이클 식별 정보가 나타내는 사이클로부터 상기 동기 패킷을 상기 출력 측 버스에 송신해야 할 시점까지의 경과 사이클 수인 제 2 값을 각각 산출하며,
    상기 제 1 값 및 상기 제 2 값에 근거하여 지연 정보(109)를 생성하며,
    상기 출력 측 버스 상에서 상기 지연 정보가 나타내는 사이클 수가 경과할 때까지 상기 동기 패킷을 지연시키고나서 상기 출력 측 버스에 송신하는 동기 패킷 전송 방법.
  3. 제 2 항에 있어서, 상기 입력 측 사이클 식별 정보 및 상기 출력 측 사이클 식별 정보는 어느 것도 상기 사이클 스타트 패킷이 상기 입력 측 버스 및 상기 출력 측 버스에서 각각 발생할 정도로 값이 1개 증가해 가며, 해당 값이 "M-1"(M은 2이상의 정수)이 된 다음 값이 "0"이 되는 동기 패킷 전송 방법.
  4. 제 3 항에 있어서, 상기 제 1 값은 상기 동기 패킷이 상기 입력 측 버스 상에 나타난 타이밍에 있어서의 상기 입력 측 사이클 식별 정보 값으로부터 상기 입력 측 참조 사이클 식별 정보 값을 빼서 얻어진 값에 "M"을 더한 값을 "M"으로 나누어 얻어지는 잉여로,
    상기 제 2 값은 상기 동기 패킷을 상기 출력 측 버스에 송신해야 할 타이밍에 있어서의 상기 출력 측 사이클 식별 정보 값으로부터 상기 출력 측 참조 사이클 식별 정보 값을 빼서 얻어진 값에 "M"을 더한 값을 "M"으로 나누어 얻어지는 잉여인 동기 패킷 전송 방법.
  5. 제 3 항에 있어서, 상기 M 값이 "2"인 동기 패킷 전송 방법.
  6. 제 2 항에 있어서, 상기 입력 측 버스 또는 상기 출력 측 버스를 포함하는 어느 한 버스에 있어서의 시각 정보가 미리 정해진 값이 되는 타이밍으로 상기 입력 측 사이클 식별 정보 및 상기 출력 측 사이클 식별 정보를 취득하여 보존함으로써, 상기 입력 측 참조 사이클 식별 정보 및 상기 출력 측 참조 사이클 식별 정보를 생성하는 동기 패킷 전송 방법.
  7. 제 6 항에 있어서, 상기 시각 정보는 각 사이클 내의 오프셋을 나타내는 사이클 오프셋과 상기 사이클마다 변화하는 사이클 카운트를 포함하고 있으며,
    상기 미리 정해진 값이 되는 타이밍은 상기 사이클 오프셋이 상기 사이클 카운트 값이 변화하고나서 상기 사이클 스타트 패킷이 송출되기까지의 최대 지연 시간에 상당하는 제 1 타이밍과 각 사이클의 끝에 상당하는 제 2 타이밍 사이에서 미리 정해진 소정의 타이밍인 동기 패킷 전송 방법.
  8. 제 7 항에 있어서, 상기 동기 패킷을 상기 입력 측 버스로부터 상기 출력 측 버스까지 전송하는 데 요하는 전송 지연 시간만큼 상기 제 1 타이밍을 더욱 지연시키는 동기 패킷 전송 방법.
  9. 제 7 항에 있어서, 임의의 2개의 버스에 있어서의 상기 사이클 오프셋 값의 차이의 절대치가 늘 "a"(a는 O이상의 정수) 이하일 경우에, 상기 제 1 타이밍을 해당 "a"에 상당하는 시간만큼 더욱 지연시킴과 동시에, 상기 제 2 타이밍을 해당 "a"에 상당하는 시간만큼 더욱 빠르게 하는 동기 패킷 전송 방법.
  10. 제 1 항 또는 제 2 항에 있어서, 상기 입력 측 버스의 경과 사이클 수와 상기 출력 측 버스의 경과 사이클 수 사이의 차이에 소정의 고정 지연량을 더함으로써 상기 지연 정보를 생성하는 동기 패킷 전송 방법.
  11. 제 10 항에 있어서, 상기 고정 지연량이 "2"사이클에 상당하는 시간인 동기 패킷 전송 방법.
  12. 제 1 항 또는 제 2 항에 있어서, 상기 버스 1IEEE 1394 규격에 준거한 버스인 동기 패킷 전송 방법.
  13. 청구항 제 1 항 또는 제 2 항에 기재된 동기 패킷 전송의 각 순서를 컴퓨터에 실행시키는 동기 패킷 전송 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  14. 사이클 단위로 전송 대역이 보증된 동기 패킷(A, B, C)을 적어도 전송하는 복수의 버스(40, 41) 사이에 있어서의 패킷 교환을 행하는 스위치 회로(124)와,
    상기 사이클 개시를 나타내는 사이클 스타트 패킷이 상기 버스(40, 41) 상에서 발생할 정도로 변화하는 사이클 식별 정보(101, 102)를 생성하는 복수의 사이클 식별 정보 생성 회로(103, 104)와,
    미리 정해진 동일 타이밍으로 상기 사이클 식별 정보를 취득하여 참조 사이클 식별 정보(1O5, 106)를 생성하는 복수의 참조 사이클 식별 정보 생성 회로(107, 108)와,
    상기 사이클 식별 정보 및 상기 참조 사이클 식별 정보에 근거하여 지연 정보(109)를 생성하는 지연 정보 생성 회로(110)와,
    상기 출력 측 버스 상에서 상기 지연 정보가 나타내는 사이클 수가 경과할 때까지, 상기 버스 사이에서 전송되는 상기 동기 패킷을 지연시키고나서 상기 출력 측 버스에 송신하는 지연 회로(111)를 구비하며,
    입력 측 버스로부터 수신한 패킷을 상기 스위치 회로에 출력하는 입력 포털로서의 동작 및 상기 스위치 회로가 출력하는 패킷을 출력 측 버스에 송신하는 출력 포털로서의 동작을 행하여, 다른 버스 사이에서 동기 패킷을 적어도 포함하는 패킷을 전송하는 브릿지.
  15. 제 14 항에 있어서, 상기 복수의 버스에 각각 접속된 복수의 포털(121, 122, 123) 각각이 상기 사이클 식별 정보 생성 회로, 상기 지연 회로, 상기 지연 정보 생성 회로, 제 1 및 제 2 상기 참조 사이클 식별 정보 생성 회로를 구비하며,
    상기 제 1 참조 사이클 식별 정보 생성 회로는 자신이 속하는 포털이 상기 출력 포털로서 동작할 때에, 상기 입력 포털로서 동작하는 포털이 구비하는 상기 사이클 식별 정보 생성 회로가 생성하는 상기 사이클 식별 정보에 근거하여 상기 입력 측 참조 사이클 식별 정보를 생성하며,
    상기 제 2 참조 사이클 식별 정보 생성 회로는 자신이 속하는 포털이 구비하는 상기 사이클 식별 정보 생성 회로가 생성하는 상기 사이클 식별 정보에 근거하여 상기 출력 측 참조 사이클 식별 정보를 생성하는 브릿지.
  16. 제 15 항에 있어서, 상기 각 포털은 상기 입력 측 버스로부터 상기 동기 패킷을 수신한 시점에 있어서의 상기 사이클 식별 정보를 패킷 수신 사이클 식별 정보로서 생성하여 상기 동기 패킷에 부가하는 패킷 수신 사이클 식별 정보 부가 회로(154)를 부가로 구비하며,
    상기 지연 정보 생성 회로는 상기 입력 측 참조 사이클 식별 정보, 상기 출력 측 참조 사이클 식별 정보, 상기 사이클 식별 정보, 상기 입력 포털로서 동작하는 포털이 구비하는 상기 패킷 수신 사이클 식별 정보 부가 회로에서 생성된 상기 패킷 수신 사이클 식별 정보에 근거하여 상기 지연 정보를 생성하는 브릿지.
  17. 제 15 항에 있어서, 상기 지연 정보 생성 회로는 상기 입력 측 참조 사이클 식별 정보, 상기 출력 측 참조 사이클 식별 정보, 자신이 속하는 포털 및 상기 입력 포털로서 동작하는 포털에 각각 구비된 상기 사이클 식별 정보 생성 회로가 각각 생성하는 상기 사이클 식별 정보에 근거하여 상기 지연 정보를 생성하며,
    상기 입력 포털로서 동작하는 포털이 상기 동기 패킷을 출력하고나서 상기 출력 포털로서 동작하는 포털에 입력될 때까지의 포털간 전송 지연이 상기 입력 측 버스에 있어서 상기 동기 패킷의 전송 기간과 해당 동기 패킷 이외의 패킷의 전송 기간을 분리하기 위한 소정의 시간 갭보다도 짧은 브릿지.
  18. 제 15 항에 있어서, 상기 각 포털은 상기 동기 패킷에 의해 전송되는 리얼 타임 데이터의 복호화 타이밍을 나타내기 위해 해당 리얼 타임 데이터에 부가된 타임 스템프 값을 변환하는 제 1 및 제 2 타임 스템프 변환 회로(191, 192)를 부가로 구비하며,
    상기 제 1 타임 스템프 변환 회로는 상기 각 포털이 상기 입력 포털로서 동작할 때에, 해당 포털이 갖는 시각 정보 중 상기 사이클마다 변화하는 사이클 카운트가 "0" 내지 "N-1"(N은 2이상의 정수)을 취할 수 있다고 했을 때, 상기 입력 측 버스로부터 수신한 동기 패킷에 포함되는 타임 스템프 값으로부터 해당 사이클 카운트 값을 뺀 값에 "N"을 더한 값을 "N"으로 나누어 얻어지는 잉여로 해당 타임 스템프 값을 갱신하며,
    상기 제 2 타임 스템프 변환 회로는 상기 각 포털이 상기 출력 포털로서 동작할 때에, 상기 스위치 회로가 출력하는 상기 동기 패킷에 포함된 타임 스템프 값에 해당 포털이 갖는 시각 정보의 사이클 카운트와 상기 지연 정보를 더한 값을 "N"으로 나누어 얻어지는 잉여로 해당 타임 스템프 값을 갱신하는 브릿지.
  19. 제 18 항에 있어서, 상기 타임 스템프에는, 상기 사이클 카운트의 하위 P비트(P는 자연수)에 상당하는 값 및 상기 시각 정보 중 각 사이클 내의 오프셋을 나타내는 사이클 오프셋이 격납되는 브릿지.
  20. 제 15 항에 있어서, 상기 포털을 2개 구비하며,
    상기 스위치 회로는 입력 포트 및 출력 포트를 각각 2개씩 구비하며,
    상기 입력 포트 및 상기 출력 포트에 각각 접속되는 포털을 서로 달리 하여 상기 2개의 포털 사이에서 고정적인 패킷 교환을 행하는 브릿지.
  21. 제 14 항에 있어서, 상기 브릿지는 IEEE 1394 규격에 준거한 버스를 대상으로 하여 상기 동기 패킷의 버스간 전송을 행하는 IEEE 1394 브릿지인 브릿지.
  22. 제 14 항에 있어서, 청구항 제 1 항 또는 제 2 항에 기재된 동기 패킷 전송 방법에 따라서 상기 동기 패킷의 버스간 전송을 행하는 브릿지.
  23. 제 14 항 내지 제 18 항 중 어느 한 항에 기재된 브릿지가 구비하는 각 회로를 집적변한 패킷 전송 제어 LSI.
  24. 제 23 항에 기재된 패킷 전송 제어 LSI가 갖는 각 회로를 복수개 1개의 칩에 집적화한 패킷 전송 제어 LSI.
  25. 제 24 항에 있어서, 상기 스위치 회로를 상기 칩 내부로 더욱 집적화시킨 패킷 전송 제어 LSI.
  26. 제 23 항에 있어서, 상기 패킷 전송 제어 LSI는 IEEE 1394 규격에 준거한 버스를 대상으로 하여 상기 동기 패킷을 버스간 전송하는 IEEE 1394 링크층 LSI(131, 180, 190, 201)인 패킷 전송 제어 LSI.
KR1020000056214A 1999-09-24 2000-09-25 동기 패킷 전송 방법, 동전송을 실현하는 제어 프로그램을기록한 컴퓨터 판독 가능한 기록 매체, 브릿지 및 패킷전송 제어 대규모 집적 회로 KR20010050628A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP27138899A JP3424620B2 (ja) 1999-09-24 1999-09-24 アイソクロナスパケット転送方法,該転送用制御プログラムの記録媒体,ブリッジ及びパケット転送制御lsi
JP99-271388 1999-09-24

Publications (1)

Publication Number Publication Date
KR20010050628A true KR20010050628A (ko) 2001-06-15

Family

ID=17499383

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000056214A KR20010050628A (ko) 1999-09-24 2000-09-25 동기 패킷 전송 방법, 동전송을 실현하는 제어 프로그램을기록한 컴퓨터 판독 가능한 기록 매체, 브릿지 및 패킷전송 제어 대규모 집적 회로

Country Status (5)

Country Link
US (1) US6813282B1 (ko)
EP (1) EP1087581A3 (ko)
JP (1) JP3424620B2 (ko)
KR (1) KR20010050628A (ko)
CA (1) CA2320619A1 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001230821A (ja) * 2000-02-16 2001-08-24 Sony Corp データ中継装置および方法、並びに提供媒体
JP4097891B2 (ja) * 2000-11-27 2008-06-11 三菱電機株式会社 Ieee1394を用いた同期システム
CN1280811C (zh) * 2000-12-20 2006-10-18 皇家菲利浦电子有限公司 包括可被启动和停止的模块单元的设备
US7046670B2 (en) * 2001-03-30 2006-05-16 Sony Corporation Method and system for synchronizing isochronous data on transmit over the IEEE 1394 bus from content unaware devices
JP2002335248A (ja) * 2001-05-09 2002-11-22 Nec Eng Ltd Ieee1394インタフェース切替回路
JP3698074B2 (ja) 2001-06-15 2005-09-21 日本電気株式会社 ネットワーク同期方法、lsi、バスブリッジ、ネットワーク機器、およびプログラム
US7269137B2 (en) * 2001-08-24 2007-09-11 Canon Kabushiki Kaisha Method for setting up an isochronous data stream connection, with the application of a predetermined, total isochronous delay on one or more routing paths
FR2828946A1 (fr) * 2001-08-24 2003-02-28 Canon Kk Procede de gestion des delais isochrones associes a des ponts heterogenes dans un heterogene de bus numeriques
US8213322B2 (en) * 2001-09-24 2012-07-03 Topside Research, Llc Dynamically distributed weighted fair queuing
US7949777B2 (en) * 2002-11-01 2011-05-24 Avid Technology, Inc. Communication protocol for controlling transfer of temporal data over a bus between devices in synchronization with a periodic reference signal
EP1455472A1 (en) * 2003-03-07 2004-09-08 STMicroelectronics Limited Timing control for packet streams
US8275910B1 (en) * 2003-07-02 2012-09-25 Apple Inc. Source packet bridge
US20050000484A1 (en) * 2003-07-03 2005-01-06 Schultz James M. Pre-chambered type spark plug with a flat bottom being aligned with a bottom surface of a cylinder head
US7551606B2 (en) * 2004-08-20 2009-06-23 Sony Corporation Isochronous transmission for IP-oriented network
US20060056424A1 (en) * 2004-09-15 2006-03-16 Yolin Lih Packet transmission using output buffer
KR100668085B1 (ko) * 2005-01-13 2007-01-11 삼성전자주식회사 호스트 디바이스, 디스플레이 시스템 및 dpvl 패킷생성방법
JP4551804B2 (ja) * 2005-03-30 2010-09-29 キヤノン株式会社 伝送システム、中継機器及び制御方法
JP4541949B2 (ja) * 2005-03-31 2010-09-08 富士通株式会社 データ転送装置
JP4653011B2 (ja) * 2006-05-01 2011-03-16 パナソニック株式会社 中継装置及び中継方法
JP5011184B2 (ja) * 2008-03-26 2012-08-29 ルネサスエレクトロニクス株式会社 時間帯予約型ネットワークシステム、フレーム転送方法及びネットワーク装置
US20090268727A1 (en) * 2008-04-24 2009-10-29 Allison Brian D Early header CRC in data response packets with variable gap count
US20090268736A1 (en) * 2008-04-24 2009-10-29 Allison Brian D Early header CRC in data response packets with variable gap count
US20090271532A1 (en) * 2008-04-24 2009-10-29 Allison Brian D Early header CRC in data response packets with variable gap count
DE102012223308A1 (de) * 2012-12-14 2014-06-18 Continental Automotive Gmbh Synchronisieren von Datenpaketen in einem Datenkommunikationssystem eines Fahrzeugs
US10624089B2 (en) 2016-11-14 2020-04-14 Mitsubishi Electric Corporation Network system and communication method
US10674399B2 (en) * 2018-06-20 2020-06-02 MeshPlusPlus, Inc. Clustered synchronization within a distance-vector wireless network
US10687228B2 (en) 2018-06-20 2020-06-16 MeshPlusPlus, Inc. Data aggregation for distributed optimization of a wireless network
JP7103162B2 (ja) * 2018-10-30 2022-07-20 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN115663549B (zh) * 2022-12-08 2023-03-21 蔚来汽车科技(安徽)有限公司 多接口转换装置及车辆

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2360943C3 (de) * 1973-12-06 1978-10-19 Siemens Ag, 1000 Berlin Und 8000 Muenchen Zeitmultiplexsystem zum Übertragen binärer Nachrichten
US5544324A (en) * 1992-11-02 1996-08-06 National Semiconductor Corporation Network for transmitting isochronous-source data using a frame structure with variable number of time slots to compensate for timing variance between reference clock and data rate
US5467342A (en) * 1994-01-12 1995-11-14 Scientific-Atlanta, Inc. Methods and apparatus for time stamp correction in an asynchronous transfer mode network
JPH0823332A (ja) * 1994-07-05 1996-01-23 Mitsubishi Electric Corp リング型atmノードのアクセス制御装置
US5822317A (en) * 1995-09-04 1998-10-13 Hitachi, Ltd. Packet multiplexing transmission apparatus
DE69729068T2 (de) * 1997-04-15 2004-09-16 Samsung Electronics Co., Ltd., Suwon Vorrichtung und Verfahren zum Übertragen von digitalen Audio- und Videodaten
JPH11177591A (ja) 1997-12-15 1999-07-02 Matsushita Electric Ind Co Ltd 伝送媒体接続装置、伝送媒体接続制御装置、動作周期生成装置、および記録媒体
US6032261A (en) 1997-12-30 2000-02-29 Philips Electronics North America Corp. Bus bridge with distribution of a common cycle clock to all bridge portals to provide synchronization of local buses, and method of operation thereof
US6418150B1 (en) * 1998-02-20 2002-07-09 Apple Computer, Inc. Method and apparatus for calibrating an IEEE-1394 cycle master
JP3397124B2 (ja) 1998-03-12 2003-04-14 ソニー株式会社 同期方法及びブリッジ
AU3897099A (en) * 1998-05-11 1999-11-29 Digital Harmony Technologies, L.L.C. Method and system for distributing processing instructions with adata to be processed

Also Published As

Publication number Publication date
EP1087581A2 (en) 2001-03-28
JP3424620B2 (ja) 2003-07-07
JP2001094576A (ja) 2001-04-06
EP1087581A3 (en) 2002-07-31
US6813282B1 (en) 2004-11-02
CA2320619A1 (en) 2001-03-24

Similar Documents

Publication Publication Date Title
KR20010050628A (ko) 동기 패킷 전송 방법, 동전송을 실현하는 제어 프로그램을기록한 컴퓨터 판독 가능한 기록 매체, 브릿지 및 패킷전송 제어 대규모 집적 회로
JP3698074B2 (ja) ネットワーク同期方法、lsi、バスブリッジ、ネットワーク機器、およびプログラム
US7561576B2 (en) Apparatus for and method of predictive time stamping of isochronous data packets transmitted over an IEEE 1394-1995 serial bus network
CN100486143C (zh) 异步数字家庭网络中的多媒体抖动消除装置和方法
KR19980042154A (ko) 1394 직렬 데이터 버스를 통해 에이티엠 셀을 전송하는 방법 및 장치
US20050002402A1 (en) Real-time transport protocol
US7251703B1 (en) Method of time stamping to enable device bridging over dissimilar buses
US6519265B1 (en) System and method for context switching in an electronic network
KR100497166B1 (ko) 데이터 스트림을 처리하기 위한 장치 및 방법
US6804205B1 (en) Method and apparatus for transmitting packet for synchronization using half duplex transmission medium
US6408012B1 (en) Signal processing circuit
JP3799726B2 (ja) 信号処理回路
JP4051339B2 (ja) バスシステムにおけるオーディオデータストリームの同期的伝送のための回路装置およびその方法
JP4045672B2 (ja) 信号処理回路
JPH10336252A (ja) シリアルデータ転送制御装置およびシリアルデータ転送方法
US6367026B1 (en) Unbalanced clock tree for a digital interface between an IEEE 1394 serial bus system and a personal computer interface (PCI)
JP3977594B6 (ja) データフレームの表示時間算出方法及びデータストリーム送信装置
KR20000054885A (ko) 고속 직렬 버스 인터페이스를 위한 연결 전송방법
KR20020047962A (ko) 등시전송 효율을 높인 인터페이스 장치 및 방법
JP2004118704A (ja) インターフェイス装置およびインターフェイス装置の制御方法
KR20010065001A (ko) 자동수신모드를 갖는 비동기화 데이터 수신장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application