KR100464468B1 - 데이터 전송 제어장치 및 전자기기 - Google Patents

데이터 전송 제어장치 및 전자기기 Download PDF

Info

Publication number
KR100464468B1
KR100464468B1 KR10-2000-7007150A KR20007007150A KR100464468B1 KR 100464468 B1 KR100464468 B1 KR 100464468B1 KR 20007007150 A KR20007007150 A KR 20007007150A KR 100464468 B1 KR100464468 B1 KR 100464468B1
Authority
KR
South Korea
Prior art keywords
packet
data
bus
data transmission
information
Prior art date
Application number
KR10-2000-7007150A
Other languages
English (en)
Other versions
KR20010024814A (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 KR20010024814A publication Critical patent/KR20010024814A/ko
Application granted granted Critical
Publication of KR100464468B1 publication Critical patent/KR100464468B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • 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/40071Packet processing; Packet format
    • 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/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/40117Interconnection of audio or video/imaging devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

처리의 오버 헤드를 경감하고, 소규모인 하드웨어로 고속인 데이터 전송을 실현할 수 있는 데이터 전송 제어장치 및 전자기기를 제공하는 것이 목적이다. IEEE1394의 데이터 전송 제어장치에 있어서, 패킷 정형 회로(160)가, 각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형하며, 패킷 분리 회로(180)가, 정형된 패킷의 헤더를 RAM의 헤더 영역에 기록하고, 데이터를 데이터 영역에 기록한다. 그리고, 패킷 정형 시에, 패킷 분리 회로로부터 주어진 데이터 포인터를 패킷의 헤더에 부가한다. TAG을 사용하여 패킷을 분리한다. 브로드캐스트 정보, 에러 스테이터스 정보, 셀프 ID 기간에 수신한 패킷인지의 여부를 나타내는 정보를, 패킷 정형 시에 패킷의 트레일러에 부가한다. 패킷 정형에 있어서 시계열로 패킷의 뒤쪽에 부가된 ACK 등의 정보를, RAM에 있어서, 패킷의 헤더의 선두쪽에 기록한다.

Description

데이터 전송 제어장치 및 전자기기{Data transfer controller and electronic device}
최근, IEEE1394라고 불리는 인터페이스 규격이 각광을 받고 있다. 이 IEEE1394는, 차세대 멀티미디어에도 대응 가능한 고속 시리얼 버스 인터페이스를 규격화한 것이다. 이 IEEE1394에 의하면, 동화상 등의 실시간성이 요구되는 데이터도 취급할 수 있다. 또한, IEEE1394의 버스에는, 프린터, 스캐너, CD-R 드라이브, 하드 디스크 드라이브 등의 컴퓨터 주변기기뿐만 아니라, 비디오 카메라, VTR, TV 등의 가정용 전화제품도 접속할 수 있다. 이 때문에, 전자기기의 디지털화를 비약적으로 촉진할 수 있는 것으로서 기대되고 있다.
이러한 IEEE1394의 개요에 대해서는, 예를 들면 「IEEE1394 하이·퍼포먼스·시리얼 버스의 개요」(Interface Apr.1996의 1 내지 10페이지),「PC 주변기기용 버스 규격군 총람」(Interface Jan.1997의 106페이지 내지 116페이지),「IEEE1394-1995(FireWire)의 실시간 전송 모드와 멀티미디어 대응 프로토콜」(Interface Jan.1997의 136 내지 146 페이지)에 개시되어 있다. 또한, IEEE1394에 준거(準據)한 데이터 전송 제어장치로서는, 텍사스·인스트루먼트사제의 TSB12LV31 등이 알려져 있다.
그러나, 이 IEEE1394에 준거한 데이터 전송 제어장치에는 다음과 같은 과제가 있는 것이 판명되었다.
즉, 현재의 IEEE1394 규격에 의하면 최대로 400Mbps의 전송 속도가 실현 가능하게 되어 있다. 그러나, 현실적으로는, 처리의 오버 헤드의 존재에 기인하여, 시스템 전체의 실전송 속도는 이것보다도 상당히 낮게 되어 있다. 결국, CPU상에서 동작하는 펌웨어나 애플리케이션 소프트가, 송신 데이터를 준비하거나, 수신 데이터를 넣는 등의 처리에 많은 시간을 요하게 되어, 버스상에서의 전송 속도가 빨라도, 결국, 고속인 데이터 전송을 실현할 수 없다.
특히, 주변기기에 부착되는 CPU는, 퍼스널 컴퓨터 등의 호스트 시스템에 부착되는 CPU와 비교하여 처리 능력이 낮다. 이 때문에, 펌웨어나 애플리케이션 소프트의 처리의 오버 헤드의 문제는, 대단히 심각한 것으로 된다. 따라서, 이러한 오버 헤드의 문제를 효과적으로 해소할 수 있는 기술이 요구되고 있다.
본 발명은 데이터 전송 제어장치 및 이것을 포함하는 전자기기에 관한 것이다.
도 1a, 도 1b, 도 1c는 비동기 전송과 아이소크로노스 전송에 대하여 설명하기 위한 도면.
도 2a, 도 2b는 트리 식별에 대하여 설명하기 위한 도면.
도 3은 자기 식별에 대하여 설명하기 위한 도면.
도 4a, 도 bB, 도 4c, 도 4d는 셀프 ID 패킷 등의 물리층의 패킷의 포맷을 도시하는 도면.
도 5는 IEEE1394의 프로토콜 구성에 대하여 도시하는 도면.
도 6은 본 실시예의 데이터 전송 제어장치의 구성예를 도시하는 도면.
도 7은 헤더(제어 정보) 영역과 데이터 영역의 분리에 대하여 설명하기 위한 도면.
도 8은 본 실시예의 비교예의 구성예에 대하여 도시하는 도면.
도 9는 도 8의 구성에 의한 데이터 전송의 방법에 대하여 설명하기 위한 도면.
도 10은 데이터 전송의 방법의 다른 예에 대하여 설명하기 위한 도면.
도 11은 본 실시예의 데이터 전송의 방법에 대하여 설명하기 위한 도면.
도 12는 수신 패킷을 헤더와 데이터로 분리하여 RAM의 헤더 영역과 데이터 영역에 격납하는 방법에 대하여 설명하기 위한 도면.
도 13은 헤더 영역에 격납하는 헤더에 데이터 포인터를 포함하게 하는 방법에 대하여 설명하기 위한 도면.
도 14는 패킷 분리 회로가 준 데이터 포인터를, 패킷 정형 회로가 패킷의 헤더에 부가하는 방법에 대하여 설명하기 위한 도면.
도 15는 TAG에 대하여 설명하기 위한 도면.
도 16은 RAM의 각 영역의 사이즈를 가변으로 제어하는 방법에 대하여 설명하기 위한 도면.
도 17a, 도 17b, 도 17c, 도 17d는 브로드캐스트 정보를 패킷의 트레일러에 부가하는 방법에 대하여 설명하기 위한 도면.
도 18a, 도 18b는 에러 스테이터스 정보를 패킷의 트레일러에 부가하는 동시에, 패킷에 에러가 있는 경우에 RAM의 데이터를 무효로 하는 방법에 대하여 설명하기 위한 도면.
도 19는 셀프 ID 기간에 대하여 설명하기 위한 도면.
도 20a, 도 20b는 셀프 ID 기간에 수신한 패킷인지의 여부를 나타내는 정보를, 패킷의 트레일러에 부가하는 방법에 대하여 설명하기 위한 도면.
도 21a, 도 21b는 패킷 정형에 있어서 시계열로 패킷의 뒤쪽에 부가된 정보를, RAM에서 패킷의 헤더의 선두쪽에 기록하는 방법에 대하여 설명하기 위한 도면.
도 22는 수신측의 구성의 일 예를 도시하는 도면.
도 23은 수신측의 동작에 대하여 설명하기 위한 타이밍 파형도.
도 24a는 IEEE1394 규격의 비동기 패킷의 포맷이고, 도 24b는 RAM의 헤더 영역에 격납되는 비동기 수신 패킷의 헤더 부분의 포맷.
도 25a, 도 25b, 도 25c, 도 25d는 헤더 포인터와 데이터 포인터의 갱신에 대하여 설명하기 위한 도면.
도 26a는 패킷이 셀프 ID 패킷인 경우의 헤더 부분의 포맷이고, 도 26b는 패킷이 셀프 ID 패킷 이외의 PHY 패킷인 경우의 헤더 부분의 포맷.
도 27a, 도 27b, 도 27c는 여러 가지 전자기기의 내부 블록도의 예.
도 28a, 도 28b, 도 28c는 여러 가지 전자기기의 외관도의 예.
(발명의 개시)본 발명은 이상과 같은 기술적 과제를 감안하여 이루어진 것이며, 그 목적으로 하는 바는, 펌웨어나 애플리케이션 소프트 등의 처리의 오버 헤드를 경감하고, 소규모인 하드웨어로 고속인 데이터 전송을 실현할 수 있는 데이터 전송 제어장치 및 이것이 사용되는 전자기기를 제공하는 것에 있다.
상기 과제를 해결하기 위해서 본 발명은, 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어장치로서, 각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형하는 패킷 정형 수단과, 정형된 패킷의 제어 정보를 랜덤 액세스 가능한 기억수단의 제어 정보 영역에 기록하고, 정형된 패킷의 데이터를 상기 기억수단의 데이터 영역에 기록하는 패킷 분리 수단을 포함하며, 상기 패킷 분리 수단이, 상기 데이터 영역에 기록되는 데이터의 어드레스를 가리키는 데이터 포인터를 상기 패킷 정형 수단에 주고, 상기 패킷 정형 수단이, 상기 패킷 분리 수단으로부터 주어진 상기 데이터 포인터를 패킷의 제어 정보에 부가하는 것을 특징으로 한다.
본 발명에 의하면, 패킷 정형 수단이, 패킷 분리 수단으로부터 주어진 데이터 포인터를 패킷의 제어 정보에 부가한다. 그리고, 데이터 포인터가 부가된 패킷의 제어 정보가 기억수단의 제어 정보 영역에 기록되고, 패킷의 데이터가 데이터 영역에 기록된다. 이와 같이, 제어 정보를 제어 정보 영역에 기록하며, 데이터를 데이터 영역에 기록하는 것으로, 펌웨어나 애플리케이션 소프트 등의 상층의 처리 부하를 경감시킬 수 있고, 시스템 전체의 실전송 속도를 향상시킬 수 있게 된다. 또한, 펌웨어 등의 상층이, 데이터 포인터를 사용하여, 패킷의 제어 정보에 대응하는 데이터를 데이터 영역으로부터 용이하게 판독할 수 있게 된다. 또한, 데이터 포인터의 부가는 패킷 정형 수단에 의해 행해지며, 패킷 분리 수단이 이것에 관여할 필요가 없기 때문에, 패킷 분리 수단의 구성이나 기억수단으로의 기록 처리를 간소화할 수 있다.
또한 본 발명은 상기 패킷 정형 수단이, 패킷의 적어도 제어 정보와 데이터를 구별하기 위한 태그 정보를 생성하는 동시에, 생성된 그 태그 정보를 패킷에 관련짓고, 상기 패킷 분리 수단이, 패킷에 관련지어진 상기 태그 정보에 의거하여, 패킷의 제어 정보를 상기 제어 정보 영역에 기록하며, 패킷의 데이터를 상기 데이터 영역에 기록하는 것을 특징으로 한다. 이와 같이 하는 것으로, 간이한 하드웨어 구성으로, 패킷의 제어 정보를 제어 정보 영역에 데이터를 데이터 영역으로 분리하여 격납하는 것이 가능하게 된다.
또한 본 발명은, 상기 패킷 분리 수단이, 패킷의 제어 정보가 기록되어 있으면, 패킷에 관련지어진 상기 태그 정보에 의거하여 판단한 경우에는, 상기 제어 정보 영역에 기록되는 제어 정보의 어드레스를 가리키는 제어 정보 포인터를 갱신하고, 패킷의 데이터가 기록되어 있으면, 상기 태그 정보에 의거하여 판단한 경우에는, 상기 데이터 영역에 기록하는 데이터의 어드레스를 가리키는 데이터 포인터를 갱신하는 것을 특징으로 한다. 이와 같이 하면, 제어 정보 포인터의 갱신처리와 데이터 포인터의 갱신처리를 태그 정보를 이용하여 바꾸고, 패킷을 제어 정보와 데이터로 분리할 수 있게 된다. 이로써, 패킷의 분리 처리의 간소화를 도모할 수 있다.
또한 본 발명은, 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어 장치로서, 각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형하는 패킷 정형 수단과, 정형된 패킷을 기억수단에 기록하는 기록 수단을 포함하고, 상기 패킷 정형 수단이, 버스에 접속되는 모든 노드에 대하여 송신된 패킷인지의 여부를 나타내는 브로드캐스트 정보를, 패킷의 제어 정보에 부가하는것을 특징으로 한다.
본 발명에 의하면, 펌웨어 등의 상층은, 처리 대상으로 되는 패킷이 브로드캐스트된 패킷인지의 여부를, 패킷의 제어 정보에 부가된 브로드캐스트 정보를 조사하는 것만으로 알 수 있다. 이 때문에, 다른 정보를 디코드하는 등의 처리를 생략하는 것이 가능하게 되고, 펌웨어 등의 상층의 처리 부담을 경감시킬 수 있다.
또한 본 발명은, 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어 장치로서, 각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형하는 패킷 정형 수단과, 정형된 패킷을 기억수단에 기록하는 기록 수단을 포함하고, 상기 패킷 정형 수단이, 패킷에 에러가 있었는지의 여부를 나타내는 에러 스테이터스 정보를, 패킷의 제어 정보에 부가하는 것을 특징으로 한다.
본 발명에 의하면, 펌웨어 등의 상층은, 처리 대상으로 되는 패킷에 에러가 있는지의 여부를, 패킷의 제어 정보에 부가된 에러 스테이터스 정보를 조사하는 것만으로 알 수 있다. 이 때문에, 다른 정보를 디코드하는 등의 처리를 생략하는 것이 가능하게 되고, 펌웨어 등의 상층의 처리 부담을 경감시킬 수 있다.
또한 본 발명은, 정형된 패킷의 제어 정보를 상기 기억수단의 제어 정보 영역에 기록하고, 정형된 패킷의 데이터를 상기 기억수단의 데이터 영역에 기록하는 패킷 분리 수단을 포함하며, 패킷에 에러가 있다고 판단된 경우에는, 상기 데이터 영역에 기록된 그 패킷의 데이터를 무효로 하는 것을 특징으로 한다. 이와 같이 하는 것으로, 데이터 영역에, 옳은 데이터만을 연속하여 격납할 수 있게 되고, 애플리케이션 소프트 등의 상층이 데이터 영역으로부터 연속하여 옳은 데이터를 판독하는 것이 가능하게 된다. 이로써, 상층과의 인터페이스의 간소화를 도모할 수 있게 된다.
또한 본 발명은, 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어 장치로서, 각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형하는 패킷 정형 수단과, 정형된 패킷을 기억수단에 기록하는 기록 수단을 포함하고, 상기 패킷 정형 수단이, 자기 식별 기간에 수신한 패킷인지의 여부를 나타내는 정보를, 패킷의 제어 정보에 부가하는 것을 특징으로 한다.
본 발명에 의하면, 펌웨어 등의 상층은, 처리 대상으로 되는 패킷이 자기 식별 기간에 수신한 패킷인지의 여부를, 패킷의 제어 정보에 부가된 정보를 조사하는 것만으로 간이하게 알 수 있게 된다. 이로써, 예를 들면, 복수의 자기 식별 패킷을 하나로 패키징하는 것으로 얻어진 패킷과, 그 이외의 패킷과의 구별 등이 용이하게 된다.
또한 본 발명은, 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어 장치로서, 각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형하는 패킷 정형 수단과, 정형된 패킷을 기억수단에 기록하는 기록 수단을 포함하고, 상기 패킷 정형 수단이, 각 노드로부터 전송되어 온 패킷에 대하여 시계열로 뒤쪽에 소정의 정보를 부가하며, 상기 기록 수단이, 상기 소정의 정보를, 상기 기억수단에 있어서 패킷의 제어 정보의 선두쪽에 기록하는 것을 특징으로 한다.
본 발명에 의하면, 시계열로 패킷의 뒤쪽에 부가된 정보가, 기억수단에 있어서 패킷의 제어 정보의 선두쪽에 기록된다. 따라서, 펌웨어 등의 상층은, 다른 정보를 디코드하지 않고서, 소정의 정보를 간이하게 확인할 수 있게 된다. 이 결과, 펌웨어 등의 상층의 처리 부담을 대폭 경감시킬 수 있다.
또 본 발명에서는, 상기 소정의 정보는, 패킷의 전송원으로 되돌려 보낸 애크놀리지먼트 정보, 데이터 전송의 속도를 특정하기 위한 스피드 코드 정보, 버스에 접속되는 모든 노드에 대하여 송신된 패킷인지의 여부를 나타내는 브로드캐스트 정보, 자기 식별 기간에 수신한 패킷인지의 여부를 나타내는 정보, 및 패킷에 에러가 있었는지의 여부를 나타내는 에러 스테이터스 정보의 적어도 하나인 것이 바람직하다.
또한 본 발명은, 후단의 애플리케이션에 접속되는 제 1 버스와, 그 데이터 전송 제어장치를 컨트롤하는 제 2 버스와, 물리층의 디바이스에 전기적으로 접속되는 제 3 버스와, 상기 기억수단에 전기적으로 접속되는 제 4 버스와, 상기 제 1, 제 2, 제 3 버스의 어느 하나와 상기 제 4 버스와의 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정수단을 포함하는 것을 특징으로 한다.
본 발명에 의하면, 서로 분리되는 제 1, 제 2, 제 3 버스가 설치된다. 그리고 조정수단의 조정에 의해, 이들 제 1, 제 2, 제 3 버스의 어느 하나와, 랜덤 액세스 가능한 기억수단의 제 4 버스와의 사이에 데이터 경로가 확립된다. 이와 같이 하는 것으로, 다른 노드로부터 물리층의 디바이스를 통하여 수신한 패킷을, 원하는 배치로 기억수단에 격납하는 것이 가능하게 된다. 또한, 패킷의 제어 정보의 판독이나 기록은 제 2 버스를 사용하여 행하고, 패킷의 데이터의 판독이나 기록은제 1 버스를 사용하여 행하는 것도 가능하게 된다. 이로써, 트랜잭션층이나 애플리케이션층 등의 상층의 처리 부담을 경감시킬 수 있다. 또한, 제 1, 제 2 버스로서 저속인 버스를 채용하거나, 데이터 전송 제어장치를 컨트롤하는 디바이스로서 저속으로 염가인 디바이스를 채용할 수 있다. 이 결과, 데이터 전송 제어장치의 소규모화, 저비용화를 도모할 수 있게 된다.
또, 제 1, 제 2, 제 3, 제 4 버스는, 각각, 애플리케이션, 데이터 전송 제어장치를 컨트롤하는 디바이스, 물리층의 디바이스, RAM에, 적어도 전기적으로 접속되어 있으면 좋고, 이들의 버스상에 다른 디바이스를 개재시켜도 좋다.
또한 본 발명에서는, 상기 패킷 정형 수단과 상기 기억수단과의 사이에 설치되는 FIFO를 포함하도록 하여도 좋다.
또한 본 발명에서는, IEEE1394의 규격에 준거한 데이터 전송을 행하는 것이이 바람직하다.
또한 본 발명에 관련되는 전자기기는, 상기의 어느 하나의 데이터 전송 제어장치와, 상기 데이터 전송 제어 장치 및 및 버스를 통하여 다른 노드로부터 수신한 데이터에 소정의 처리를 실시하는 장치와, 처리가 실시된 데이터를 출력 또는 기억하기 위한 장치를 포함하는 것을 특징으로 한다. 또한 본 발명에 관련되는 전자기기는, 상기의 어느 하나의 데이터 전송 제어 장치와, 상기 데이터 전송 제어장치 및 버스를 통하여 다른 노드에 송신하는 데이터에 소정의 처리를 실시하는 장치와, 처리가 실시되는 데이터를 넣기 위한 장치를 포함하는 것을 특징으로 한다.
본 발명에 의하면, 다른 노드로부터 전송된 데이터를 전자기기에 있어서 출력하거나 기억하기도 하는 처리, 전자기기에 있어서 얻은 데이터를 다른 노드에 전송하기도 하는 처리를 고속화하는 것이 가능하게 된다. 또한, 본 발명에 의하면, 데이터 전송 제어 장치를 소규모화 할 수 있는 동시에, 데이터 전송을 제어하는 펌웨어 등의 처리 부담을 경감시킬 수 있기 때문에, 전자기기의 저 비용화, 소규모화 등을 도모하는 것도 가능하게 된다.
이하, 본 발명의 적합한 실시예에 대하여 도면을 사용하여 상세하게 설명한다.
1. IEEE1394
우선, IEEE1394의 개요에 대하여 간단히 설명한다.
1.1 데이터 전송 속도, 접속 토폴로지
IEEE1394(IEEE1394-1995, P1394.a)에서는 100 내지 400Mbps의 고속인 데이터 전송이 가능하게 되어 있다(P1394.b에서는 800 내지 3200Mbps). 또한, 전송 속도가 다른 노드를 버스에 접속하는 것도 허용된다.
각 노드는 트리형으로 접속되어 있고, 하나의 버스에 최대로 63개의 노드가접속 가능하게 되어 있다. 또, 버스 브리지를 이용하면 약 64000개의 노드를 접속하는 것도 가능하다.
전원이 투입되거나, 도중에 디바이스를 빼고 꽂는 일이 발생하면, 버스 리세트가 발생하고, 접속 토폴로지에 관한 정보가 모두 클리어된다. 그리고, 버스 리세트 후, 트리 식별(루트 노드의 결정), 자기 식별이 행해진다. 그 후, 아이소크로노스 리소스 매니저, 사이클 마스터, 버스 매니저 등의 관리 노드가 결정된다. 그리고, 통상의 패킷 전송이 개시된다.
1.2 전송 방식
IEEE1394에서는, 패킷의 전송방식으로서, 신뢰성이 요구되는 데이터의 전송에 적합한 비동기 전송과, 실시간성이 요구되는 동화상이나 음성 등의 데이터의 전송에 적합한 아이소크로노스 전송이 준비되어 있다.
도 1a에, 비동기 서브 액션의 예를 도시한다. 하나의 서브 액션은, 조정, 패킷 전송, 애크놀리지먼트로 이루어진다. 즉, 데이터 전송에 앞서서, 우선, 버스의 사용권에 관한 조정이 행해진다. 그리고 소스(전송원) 노드로부터 데스티네이션(전송처) 노드에 패킷이 전송된다. 이 패킷의 헤더에는 소스 ID와 데스티네이션 ID가 포함된다. 데스티네이션 노드는, 이 데스티네이션 ID를 읽고, 자노드앞의 패킷인지의 여부를 판단한다. 데스티네이션 노드는, 패킷을 받아들이면, 소스 노드에 애크놀리지먼트(ACK)의 패킷을 되돌려 보낸다.
패킷 전송과 ACK의 사이에는 애크놀리지 갭이 존재한다. 또한, 하나의 서브 액션과 다음의 서브 액션의 사이에는 서브 액션 갭이 존재한다. 그리고, 서브 액션의 갭에 상당하는 일정한 버스·아이들 시간이 경과하지 않으면, 다음의 서브 액션의 조정을 개시할 수 없다. 이로써 서브 액션 상호의 충돌이 회피된다.
도 1b에, 아이소크로노스 서브 액션의 예를 도시한다. 아이소크로노스 전송은 브로드캐스트(버스에 접속되는 모든 노드에 전송)에서 실행되기 때문에, 패킷 수신 시에 ACK는 반송되지 않는다. 또한, 아이소크로노스 전송에서는 노드 ID가 아닌 채널 번호를 사용하여 패킷 전송이 행해진다. 또, 서브 액션간에는 아이소크로노스 갭이 존재한다.
도 1c에, 데이터 전송 시의 버스의 모양을 도시한다. 아이소크로노스 전송은, 사이클 마스터가 일정주기마다 사이클 스타트 패킷을 발생하는 것으로 개시한다. 이로써, 하나의 채널당, 125μs마다 적어도 하나의 패킷을 전송할 수 있게 된다. 이 결과, 동화상이나 음성 등의 실시간성이 요구되는 데이터의 전송이 가능하게 된다.
비동기 전송은 아이소크로노스 전송의 틈에 행해진다. 즉, 아이소크로노스 전송쪽이 비동기 전송보다도 우선순위가 높게 되어 있다. 이것은, 도 1c에 도시하는 바와 같이, 아이소크로노스 갭의 시간을, 비동기 전송의 서브 액션 갭의 시간보다도 짧게 하는 것으로 실현된다.
1.3 트리 식별
트리 식별은 버스 리세트의 후에 행해진다. 트리 식별에 의해 노드간의 페어런트 차일드(親子) 관계나 루트 노드가 결정된다.
우선, 리프 노드(하나의 노드에 밖에 접속되어 있지 않는 노드)가, 인접하는노드에, 페어런트 노티파이를 보낸다. 예를 들면 도 2a와 같이 노드(A, B, C, D, E)가 접속되어 있는 경우에는, 노드(A)로부터 노드(B)에, 노드(D 및 E)로부터 노드(C)에, 페어런트 노티파이(PN)가 보내진다.
페어런트 노티파이를 수취한 노드는, 전송원의 노드를 자신의 차일드(子)라고 인지한다. 그리고, 차일드 노티파이를 그 노드에 보낸다. 예를 들면 도 2a에서는, 노드(B)로부터 노드(A)에, 노드(C)로부터 노드(D 및 E)에 차일드 노티파이(CN)가 보내진다. 이로써 노드(B, A)간, 노드(C, D)간, 노드(C, E)간의 페어런트 차일드 관계가 결정된다.
노드(B, C)의 페어런트 차일드 관계는, 어느 쪽이 먼저 페어런트 노티파이를 보냈는지로 결정된다. 예를 들면 도 2b와 같이, 노드(C)쪽이 먼저 페어런트 노티파이를 보내면, 노드(B)가 페어런트가 되고 노드(C)가 차일드로 된다.
포트의 접속처의 모든 노드가 자신의 차일드로 되는 노드가 루트가 된다. 도 2b에서는, 노드(B)가 루트로 된다. 또, IEEE1394에서는, 모든 노드가 루트로 될 가능성이 있다.
1.4 자기 식별
트리 식별 후, 자기 식별이 행해진다. 자기 식별에 있어서는, 접속 토폴로지에 있어서 루트 노드로부터 먼 노드로부터 차례로 셀프 ID 패킷이 전송된다.
보다 구체적으로는, 예를 들면 도 3에 있어서, 우선, 루트 노드(B)의 포트(1; 번호가 작은 포트)에 접속되는 노드(A)가, 셀프 ID 패킷(자기 식별 패킷)을 모든 노드에 브로드캐스트한다.
다음에, 루트 노드(B)의 포트(2; 번호가 큰 포트)에 접속되는 노드(C)가 선택되고, 이 노드(C)의 포트(1; 번호가 작은 포트)에 접속되는 노드(D)가 셀프 ID 패킷을 브로드캐스트한다. 다음에, 노드(C)의 포트(2; 번호가 큰 포트)에 접속되는 노드(E)가 셀프 ID 패킷을 브로드캐스트하며, 그 후, 노드(C)가 브로드캐스트한다. 마지막에, 루트인 노드(B)가 셀프 ID 패킷을 브로드캐스트하고, 자기 식별이 완료된다.
셀프 ID 패킷에는 각 노드의 ID가 포함된다. 브로드캐스트를 행하는 시점에서 다른 노드로부터 수취한 셀프 ID 패킷의 개수가, 이 각 노드의 ID로 된다. 예를 들면 도 3에서는, 노드(A)가 브로드캐스트를 행하는 시점에서는, 어떠한 노드도 셀프 ID 패킷을 발하고 있지 않기 때문에, 노드(A)의 ID는 0이 된다. 노드(A)는, 이 ID=0을 셀프 ID 패킷에 포함하여 브로드캐스트한다. 또한, 노드(D)가 브로드캐스트를 행하는 시점에서는, 노드(A)만이 셀프 ID 패킷을 발하고 있다. 이 때문에, 노드(D)의 ID는 1로 된다. 마찬가지로, 노드(E, C, B)의 ID는, 각각, 2, 3, 4가 된다.
도 4a에 셀프 ID 패킷의 포맷을 도시한다. 상기 도면에 도시한 것과 같이 셀프 ID 패킷에는 각 노드의 기본정보가 포함된다. 구체적으로는, 각 노드의 ID(PHY_ID), 링크층이 액티브하는지의 여부(L), 갭 카운트(gap_cnt), 전송 속도(sp), 아이소크로노스 리소스 매니저로 될 수 있는 능력을 갖는지의 여부(C), 전력상태(pwr), 포트의 상태(p0, p1, p2) 등에 관한 정보가 포함된다.
또, 도 4b에, 노드의 포트수가 4개 이상인 경우에 사용되는 셀프 ID패킷(#1, #2, #3)의 포맷을 도시한다. 포트수가 4 내지 11개인 경우에는 셀프 ID 패킷(#0; 도 4a 및 #1)이, 12 내지 19개인 경우에는 셀프 ID 패킷(#0, #1 및 #2)이, 20 내지 27개인 경우에는 셀프 ID 패킷(#0, #1, #2 및 #3)이 사용되게 된다.
또한, 도 4c, 도 4d에, 셀프 ID 패킷과 마찬가지로, 물리층의 패킷(PHY 패킷)인 링크 온 패킷, PHY 구성 패킷의 포맷을 도시한다.
1.5 아이소크로노스 리소스 매니저
아이소크로노스 리소스 매니저(IRM)는 이하의 관리 기능을 갖는다.
제 1로, 아이소크로노스 전송에 필요한 여러 가지의 리소스를 제공한다. 예를 들면, 채널 번호 레지스터나 대역폭 레지스터를 제공한다. 제 2로, 버스 매니저의 ID를 나타내는 레지스터를 제공한다. 제 3으로, 버스 매니저가 없는 경우에, 간이적인 버스 매니저가 되는 역할을 갖는다.
IRM으로 될 수 있는 능력을 가지고(아이소크로노스 리소스를 관리하는 능력을 가지고), 동시에, 동작상태로 되어 있는(링크층이 액티브로 되어 있는) 노드의 중에서(IRM이 될 수 있는 자격을 갖는 노드의 중에서), 루트에 가장 가까운(ID가 가장 큰) 노드가 IRM으로 된다. 보다, 구체적으로는, 도 4a의 셀프 ID 패킷에 있어서, IRM이 될 수 있는 능력을 갖는지의 여부를 나타내는 C(CONTENDER) 비트와, 링크층이 액티브하는지의 여부를 나타내는 L(LINK_ACTIVE) 비트가 모두 1로 되어 있는 노드의 중에서, 루트에 가장 가까운 노드(PHY_ID가 가장 큰 노드)가 IRM으로 된다. 예를 들면, 루트 노드의 셀프 ID 패킷의 C 비트와 L 비트가 1인 경우에는, 루트 노드가 IRM으로 된다.
1.6 사이클 마스터, 버스 매니저
사이클 마스터는, 도 1c에 도시하는 사이클 스타트 패킷을 송신하는 역할을 가지며, 루트 노드가 사이클 마스터가 된다.
버스 매니저는, 토폴로지 맵(각 노드의 접속상태)의 작성, 스피드 맵의 작성, 버스의 전력 관리, 사이클 마스터의 결정, 갭 카운트의 최적화 등의 일을 행한다.
1.7 프로토콜 구성
도 5를 사용하여, IEEE1394의 프로토콜 구성(층 구조)에 대하여 설명한다.
IEEE1394의 프로토콜은, 물리층, 링크층, 트랜잭션층에 의해 구성된다. 또한, 시리얼 버스 매니지먼트는, 물리층, 링크층, 트랜잭션층을 모니터하거나 제어하는 것이며, 노드의 제어나 버스의 리소스 관리를 위한 여러 가지 기능을 제공한다.
물리층은, 링크층에 의해 사용되는 로컬 심벌을 전기신호로 변환하거나, 버스의 조정을 행하거나, 버스의 물리적 인터페이스를 정의한다.
링크층은, 어드레싱, 데이터 체크, 데이터 플레이밍, 사이클 제어 등을 제공한다.
트랜잭션층은, 리드, 라이트, 로크 등의 트랜잭션을 행하기 위한 프로토콜을 정의한다.
물리층 및 링크층은, 통상, 데이터 전송 제어장치(인터페이스 칩) 등의 하드웨어에 의해 실현된다. 또한, 트랜잭션층은, CPU 상에서 동작하는 펌웨어나, 하드웨어에 의해 실현된다.
2. 전체 구성
다음에, 본 실시예의 전체 구성에 대하여 도 6을 사용하여 설명한다.
도 6에 있어서, PHY 인터페이스(10)는, 물리층의 프로토콜을 실현하는 PHY 칩과의 인터페이스를 행하는 회로이다.
링크코어(20; 링크 수단)는, 링크층의 프로토콜이나 트랜잭션층의 프로토콜의 일부를 실현하는 회로이고, 노드간에서의 패킷 전송을 위한 각종 서비스를 제공한다. 레지스터(22)는, 이들의 프로토콜을 실현한 링크코어(20)를 제어하기 위한 레지스터이다.
FIFO(ATF; 30), FIFO(ITF; 32), FIFO(RF; 34)는, 각각, 비동기 송신용, 아이소크로노스 송신용, 수신용의 FIFO이고, 예를 들면 레지스터나 반도체 메모리 등의 하드웨어에 의해 구성된다. 본 실시예에서는 이들의 FIFO(30, 32, 34)의 단수(段數)는 대단히 적다. 예를 들면 하나의 FIFO의 단수는, 바람직하게는 3단 이하이며, 더욱 바람직하게는 2단 이하로 된다.
DMAC(40, 42, 44)는, 각각, ATF, ITF, RF용의 DMA 컨트롤러이다. 이들의 DMAC(40, 42, 44)를 사용하는 것으로, CPU(66)에 개입되지 않고서, RAM(80)과 링크코어(20)와의 사이에서의 데이터 전송이 가능하게 된다. 또, 레지스터(46)는, DMAC(40, 42, 44) 등을 제어하는 레지스터이다.
포트 인터페이스(50)는, 애플리케이션층의 디바이스(예를 들면 프린터의 인자처리를 행하는 디바이스)와의 인터페이스를 행하는 회로이다. 본 실시예에서는,이 포트 인터페이스(50)를 사용하여, 예를 들면 8 비트의 데이터 전송이 가능하게 되어 있다.
FIFO(PF; 52)는, 애플리케이션층의 디바이스와의 사이에서의 데이터 전송을 위한 FIFO이고, DMAC(54)는, PF용의 DMA 컨트롤러이다. 레지스터(56)는, 포트 인터페이스(50)나 DMAC(54)를 제어하는 레지스터이다.
CPU 인터페이스(60)는, 데이터 전송 제어장치를 컨트롤하는 CPU(66)와의 인터페이스를 행하는 회로이다. CPU 인터페이스(60)는, 어드레스 디코더(62), 데이터 동기화 회로(63), 인터럽트 컨트롤러(64)를 포함한다. 클록 제어 회로(68)는, 본 실시예에서 사용되는 클록을 제어하는 것이며, PHY 칩으로부터 보내져오는 SCLK나, 마스터 클록인 HCLK가 입력된다.
버퍼 매니저(70)는, RAM(80)과의 인터페이스를 관리하는 회로이다. 버퍼 매니저(70)는, 버퍼 매니저의 제어를 위한 레지스터(72), RAM(80)으로의 버스 접속을 조정하는 조정회로(74), 각종의 제어신호를 생성하는 시퀀스(76)를 포함한다.
RAM(80)은 랜덤 액세스 가능한 패킷 기억 수단으로서 기능하는 것이고, 그 기능은 예를 들면 SRAM, DRAM 등에 의해 실현된다. 그리고, 본 실시예에서는, 도 7에 도시하는 바와 같이, 이 RAM(80)이 헤더 영역(광의로는 제어 정보 영역)과 데이터 영역으로 분리되어 있다. 그리고, 패킷의 헤더(광의로는 제어 정보)는 도 7의 헤더 영역에 격납되고, 패킷의 데이터는 데이터 영역에 격납된다.
또 RAM(80)은 본 실시예의 데이터 전송 제어장치에 내장시키는 것이 특히 바람직하지만, 그 일부 또는 전부를 외장으로 하는 것도 가능하다.
버스(90; 또는 버스 92, 94)는, 애플리케이션에 접속되는 것이다(제 1 버스). 또한 버스(96; 또는 버스 98)는 데이터 전송 제어장치를 컨트롤하기 위한 것이며, 데이터 전송 제어장치를 컨트롤하는 디바이스(예를 들면 CPU)에 전기적으로 접속된다(제 2 버스). 또한 버스(100; 또는 버스(102, 104, 105, 106, 107, 108, 109))는, 물리층의 디바이스(예를 들면 PHY 칩)에 전기적으로 접속되는 것이다 (제 3 버스). 또한, 버스(110)는, 랜덤 액세스 가능한 기억수단인 RAM에 전기적으로 접속되는 것이다(제 4 버스).
버퍼 매니저(70)의 조정회로(74)는, DMAC(40), DMAC(42), DMAC(44), CPU 인터페이스(60), DMAC(54)로부터의 버스 액세스 요구의 조정을 행한다. 그리고, 이 조정 결과에 의거하여, 각각, 버스(105, 107, 109, 98, 94)의 어느 하나와, RAM(80)의 버스(110)와의 사이에 데이터의 경로가 확립된다(제 1, 제 2, 제 3 버스의 어느 하나와 제 4 버스와의 사이에 데이터 경로가 확립된다).
본 실시예의 하나의 특징은, 랜덤 액세스가 가능하고 패킷을 격납하는 RAM(80)을 설치하는 동시에, 서로 분리되는 버스(90, 96, 100)와, 이들의 버스를 RAM(80)의 버스(110)에 접속하기 위한 조정회로(74)를 설치한 점에 있다.
예를 들면 도 8에, 본 실시예와 구성이 다른 데이터 전송 제어장치의 예를 도시한다. 이 데이터 전송 제어장치로서는, 링크코어(902)는, PHY 인터페이스(900), 버스(922)를 통하여 PHY 칩과 접속된다. 또한, 링크코어(902)는, FIFO(904, 906, 908), CPU 인터페이스(910), 버스(920)를 통하여 CPU(912)에 접속된다. 그리고, CPU(912)는, 버스(924)를 통하여, CPU에 로컬한 메모리인RAM(914)에 접속된다.
또, FIFO(904, 906, 908)는, 도 6의 FIFO(30, 32, 34)와 다르고, 대단히 단수가 많은 것으로 된다(예를 들면 하나의 FIFO가 16단 정도).
도 8의 구성의 데이터 전송 제어장치를 사용한 경우의 데이터 전송의 방법에 대하여 도 9를 사용하여 설명한다. PHY 칩(930)을 통하여 다른 노드로부터 보내여져 온 수신 패킷은, 버스(922), 데이터 전송 제어장치(932), 버스(920)를 통하여 CPU(912)가 수취한다. 그리고, CPU(912)는, 수취한 수신 패킷을 버스(924)를 통하여 RAM(914)에 기록한다. 그리고, CPU(912)는, 수신 패킷을 애플리케이션층이 사용할 수 있도록 가공하고, 버스(926)를 통하여 애플리케이션층의 디바이스(934)에 전송한다.
한편, 애플리케이션층의 디바이스(934)로부터의 데이터를 전송하는 경우에는, CPU(912)는, 이 데이터를 RAM(914)에 기록한다. 그리고, RAM(914)의 데이터에 헤더를 부가하는 것으로 IEEE1394에 준거한 패킷을 생성한다. 그리고 생성된 패킷은, 데이터 전송 제어장치(932), PHY 칩(930) 등을 통하여 다른 노드에 송신된다.
그러나, 이러한 데이터 전송방법에 의하면, CPU(912)의 처리 부하가 대단히 커진다. 따라서, 노드간을 접속하는 시리얼 버스의 전송 속도가 고속으로 되어도, CPU(912)의 처리의 오버헤드 등에 기인하여, 시스템 전체의 실전송 속도는 낮아지고, 결국, 고속인 데이터 전송을 실현할 수 없다.
이러한 문제를 해결하는 하나의 방법으로서, 도 10에 도시하는 바와 같이, 데이터 전송 제어 장치(932)와 RAM(914)와의 사이에서의 데이터 전송이나,RAM(914)과 애플리케이션층의 디바이스(934)와의 사이에서의 데이터 전송을, 하드웨어 DMA에 의해 실현하는 방법도 생각할 수 있다.
그러나, 이 방법에서는, CPU 버스(928)가, 데이터 전송 제어장치(932), RAM(914)간에서의 데이터 전송, RAM(914), CPU(912)간에서의 데이터 전송, RAM(914), 애플리케이션층 디바이스(934)간에서의 데이터 전송에 사용되게 된다. 따라서, 시스템 전체의 데이터 전송의 고속화를 도모하고자 하면, CPU 버스(928)로서 PCI 버스와 같은 고속인 버스를 사용하지 않으면 안 되게 되며, 이것은, 데이터 전송 제어장치를 사용하는 전자기기의 고비용화를 초래한다.
이것에 대하여, 본 실시예에서는 도 11에 도시하는 바와 같이, 데이터 전송 제어장치(120), 애플리케이션층 디바이스(124)간의 버스(90)와, CPU 버스(96)와, 데이터 전송 제어 장치(120), RAM(80)간의 버스(110)가 서로 분리되어 있다. 따라서, CPU 버스(96)를 데이터 전송의 제어에만 사용할 수 있게 된다. 또한, 버스(90)를 점유하고, 데이터 전송 제어장치(120), 애플리케이션층 디바이스(124)간에서 데이터 전송을 행할 수 있게 된다. 예를 들면, 데이터 전송 제어장치(120)가 부착되는 전자기기가 프린터인 경우에는, 버스(90)를 점유하여 인자 데이터를 전송할 수 있게 된다. 이 결과, CPU(66)의 처리부하를 경감시킬 수 있고, 시스템 전체의 실전송 속도를 높일 수 있다. 또한 CPU(66)로서 염가인 것을 채용할 수 있는 동시에, CPU 버스(96)로서 고속인 버스를 사용할 필요성이 없게 된다. 이 때문에, 전자기기의 저 비용화, 소규모화를 도모할 수 있게 된다.
3. 수신 패킷 포맷
3.1 본 실시예의 특징
본 실시예에서는, 도 7에 도시하는 바와 같이, RAM(80)의 기억영역을, 패킷의 헤더(광의로는 제어 정보)가 격납되는 헤더 영역(광의로는 제어 정보 영역)과 패킷의 데이터가 격납되는 데이터 영역으로 분리하고 있다.
예를 들면 도 8의 비교예에서는, CPU(912)는, 수신한 순서로 FIFO(908)로부터 수신 패킷을 받아들이지 않으면 안 된다. 따라서, 수신 패킷을 헤더와 데이터로 분리하는 처리를 실현하고자 하면, FIFO(908)로부터 판독한 수신 패킷을 CPU(912)가 로컬 메모리인 RAM(914)에 일단 기록하고, 그 RAM(914)으로부터 CPU(912)가 수신 패킷을 판독하여 헤더와 데이터로 분리할 필요가 있다. 따라서, CPU(912)의 처리 부하가 대단히 무거워지며, 이것은 결국, 시스템 전체의 실전송 속도의 저하라는 사태를 초래한다.
이것에 대하여, 도 6의 본 실시예에서는, RAM(80)의 기억영역이 헤더 영역과 데이터 영역으로 분리된다. 보다 구체적으로는, 도 12에 도시하는 바와 같이, 각 수신 패킷의 헤더와 데이터가 하드웨어에 의해 분리되고, 헤더가 헤더 영역에, 데이터가 데이터 영역에 격납된다. 따라서, CPU(66)의 처리부하가 도 8과 비교하여 대단히 가볍게 되고, 시스템 전체의 실전송 속도를 향상할 수 있다. 또한, CPU(66)로서 염가인 것을 채용할 수 있는 동시에 CPU(66)에 접속되는 버스도 저속인 것으로 충분하기 때문에, 데이터 전송 제어장치나 전자기기의 소규모화, 저 비용화를 도모할 수 있게 된다.
또한, 본 실시예에 의하면, 헤더는 헤더 영역에 정리되어 격납되고, 데이터도 데이터 영역에 정리되어 격납된다. 따라서, 헤더나 데이터의 판독 처리나 기록 처리의 간이화를 도모할 수 있으며, 처리의 오버헤드를 경감화 할 수 있다. 예를 들면, 도 11의 방법으로 데이터 전송을 행하는 경우에는, CPU(66)는, CPU 버스(96)를 통하여 헤더 영역에만 액세스하여 헤더를 판독하거나 기록하는 것만으로 데이터 전송을 제어할 수 있게 된다. 또한, 애플리케이션층의 디바이스(124)는, 데이터 영역의 데이터를 연속하여 버스(90)를 통하여 판독하거나, 데이터를 연속하여 데이터 영역에 기록하는 것이 가능하게 된다.
그리고, 본 실시예에서는, 도 13에 도시하는 바와 같이, 헤더 영역에 격납되는 각 헤더와, 데이터 영역에 격납되는 각 데이터를, 헤더에 포함시킨 데이터 포인터에 의해 대응시키고 있다. 이 데이터 포인터의 부가는 이하와 같이 하여 실현한다.
즉 도 14에 도시하는 바와 같이, 본 실시예에서는, 링크코어(20)가 패킷 정형 회로(160)를 포함하고, DMAC(44; 광의로는 기록 수단)가 패킷 분리 회로(180)를 포함한다. 여기서 패킷 정형 회로(160)는, 각 노드로부터 전송되어 온 패킷을 상층(예를 들면 트랜잭션층, 애플리케이션층)을 사용할 수 있도록 정형한다. 또한, 패킷 분리 회로(180)는, 패킷을 분리하며, 패킷의 헤더나 트레일러(풋터)를 RAM(80)의 헤더 영역에 기록하고, 패킷의 데이터를 RAM(80)의 데이터 영역에 기록하기 위한 처리를 행한다.
패킷 분리 회로(180)는, 데이터 영역에 기록하는 데이터의 어드레스(선두 어드레스)를 가리키는 데이터 포인터를 패킷 정형 회로(160)에 준다. 데이터 포인터를 주어진 패킷 정형 회로(160)는, 그 데이터 포인터를 패킷의 헤더에 부가한다(채워 넣는다). 그리고, 데이터 포인터가 부가된 헤더는, 도 13에 도시하는 바와 같이 헤더 영역에 격납되고, 그 데이터 포인터가 가리키는 데이터는, 데이터 영역에 격납된다. 이 경우, 헤더나 데이터를 기록하는 어드레스 WADR는 패킷 분리 회로(180)가 발생하게 된다.
이상과 같이 하는 것으로, 헤더 영역으로부터 헤더를 판독한 펌웨어 등이, 그 헤더에 대응하는 데이터의 데이터 영역에서의 격납 어드레스를 용이하게 알 수 있게 된다. 또한, 데이터 포인터의 부가는, 패킷 정형 회로(160)에 의해 행해지고, DMAC(44; 패킷 분리 회로(180))는 이것에 관여할 필요가 없다. 따라서, DMAC(44)가 RAM(80)으로의 데이터 기록 처리에 전념할 수 있게 되며, DMAC(44)의 회로 구성이나 처리를 간소화할 수 있게 된다.
또한, 본 실시예에서는, 도 15에 도시하는 바와 같이, 수신 패킷의 스타트(헤더의 최초), 헤더, 데이터, 트레일러를 구별하기 위한 TAG을 생성하고, 이 TAG을 수신 패킷에 관련짓고 있다. 보다 구체적으로는, 도 14에 있어서, 링크코어(20)가, 수신 패킷의 스타트(헤더의 최초), 헤더, 데이터, 트레일러를 RD로서 FIFO(34)에 전송할 때에, 도 15에 도시하는 2 비트의 TAG도 동시에 FIFO(34)에 출력한다. 그리고, 본 실시예에서는, 수신 패킷에 관련지어진 이 TAG을 이용하여, 도 12에 도시하는 바와 같이, 수신 패킷을 헤더와 데이터로 분리하여 헤더 영역과 데이터 영역에 격납하고 있다. 보다 구체적으로는, 도 14에 있어서, DMAC(44)의 패킷 분리 회로(180)가, 수신 패킷과 같이 FIFO(34)로부터 출력되는 DTAG(=TAG)를 판별하며,이 판별결과에 의거하여 수신 패킷을 헤더와 데이터로 분리하고, RAM(80)에 기록하고 있다. 또, TAG은 적어도 헤더와 데이터를 구별할 수 있는 것이면 좋다.
예를 들면, TAG을 이용하지 않고서 수신 패킷의 헤더와 데이터를 분리하는 방법으로서, 헤더에 포함되는 tcode(트랜잭션 코드)를 이용하는 방법을 생각할 수 있다. 즉, tcode를 디코드하고, 헤더의 사이즈를 조사하며, 그 사이즈인 것만 수신 패킷을 헤더 영역에 격납하며, 나머지를 데이터 영역에 격납한다.
그러나, 이 방법으로서는, tcode를 디코드하는 회로가 필요하게 되어, 회로가 대규모화하여 버린다.
이것에 대하여, TAG를 이용하면, DMAC(44)는, TAG을 보는 것만으로 수신 패킷을 헤더와 데이터로 분리할 수 있다. 따라서, 회로를 그다지 대규모화하지 않고서, 간이한 처리로 수신 패킷의 헤더와 데이터를 분리할 수 있게 된다.
또, 본 실시예에서는 도 16에 도시하는 바와 같이, RAM(80)의 헤더 영역을, 수신용, 송신용의 영역으로 분리하는 것이 바람직하다. 또한, 데이터 영역을, 수신용, 송신용의 영역으로 분리하거나, 아이소크로노스 전송용, 비동기 전송용의 영역으로 분리하도록 하여도 좋다. 또한, 헤더 영역과 데이터 영역의 외에, 이들의 영역과 분리된 CPU(66)의 워크 영역을 설치하는 것이 바람직하다.
더욱이, RAM(80)의 기억영역이 복수의 영역으로 분리되는 경우에는, 각 영역의 사이즈를 가변으로 제어하는 것이 바람직하다. 보다 구체적으로는 도 16에 도시하는 바와 같이, 각 영역의 경계의 어드레스를 가리키는 포인터(P1 내지 P6)를 가변으로 제어한다. 이와 같이 하면, 애플리케이션에 따른 최적인 영역 분할을 실현할 수 있다. 이 경우, RAM(80)의 각 영역의 사이즈는, 전원 투입후도 다이나믹하게 가변 제어할 수 있는 것이 바람직하다. 이와 같이 하면, 수신 처리 시는 수신용의 영역을 넓히고, 송신 처리 시는 송신용의 영역을 넓게 하는 것이 가능하게 되며, 한정된 리소스를 유효하게 이용할 수 있게 된다.
또한, 본 실시예에서는, 도 17a에 도시하는 바와 같이, 버스에 접속되는 모든 노드에 대하여 송신된 패킷인지의 여부를 나타내는 BC(광의로는 브로드캐스트 정보)를, 패킷 정형 시에, 패킷의 예를 들면 트레일러(광의로는 제어 정보)에 부가한다.
즉, IEEE1394의 비동기 전송에서는, 전송처의 노드를 지정하기 위해서 패킷에 대하여 16비트의 데스티네이션 ID(DestID)를 포함시킨다. 그리고, 도 17b에 도시하는 바와 같이, 링크코어(링크층)는, 타 노드앞의 패킷에 대해서는 상층의 펌웨어(트랜잭션층)에 전하지 않도록 한다. 이와 같이 하는 것으로, 16 비트의 DestID를 디코드하는 등의 쓸데없는 처리를 펌웨어가 행하는 것을 방지할 수 있다.
그러나, 패킷에 포함되는 DestID가 0x3F인 경우에는, 그 패킷은 모든 노드에 브로드캐스트되게 된다. 따라서, 링크코어는, 그 패킷을 상층의 펌웨어에 전하게 된다. 이 때문에, 결국, 펌웨어는, 그 패킷의 DestID를 디코드하고, 브로드캐스트된 것인지의 여부를 판단하지 않으면 안 되게 된다.
그래서, 본 실시예에서는, 도 17c에 도시하는 바와 같이, DestID가 0x3F인 경우에는, 브로드캐스트 정보인 BC를 1로 한다. 한편, 도 17d에 도시하는 바와 같이, DestID가 0x3F가 아닌 경우에는, BC를 0으로 한다. 이와 같이 하면, 펌웨어는, 1 비트의 BC의 값을 조사하는 것만으로, 그 패킷이 브로드캐스트된 것인지의 여부를 판단할 수 있게 된다. 즉, 펌웨어는, 16 비트의 DestID를 디코드하지 않더라도, 그 패킷이 브로드캐스트된 것인지의 여부를 판단할 수 있게 된다. 따라서, 펌웨어는 DestID를 디코드하지 않아도 되고, 펌웨어의 처리 부담을 경감시킬 수 있다. 이 결과, 시스템 전체의 실전송 속도를 향상할 수 있게 된다.
또한, 본 실시예에서는, 도 18a에 도시하는 바와 같이, 패킷의 예를 들면 헤더에 에러가 있었는지의 여부를 나타내는 HCE(광의로는 에러 스테이터스 정보)를, 패킷 정형 시에, 패킷의 예를 들면 트레일러(광의로는 제어 정보)에 부가한다.
이와 같이 하면, 펌웨어는, 1 비트의 HCE의 값을 조사하는 것만으로, 그 패킷에 에러가 있었는지의 여부를 판단할 수 있게 된다. 즉, 펌웨어는, 32 비트의 헤더 CRC를 디코드하지 않더라도, 그 패킷에 에러가 있었는지의 여부를 판단할 수 있게 된다. 이 결과, 펌웨어의 처리 부담을 경감시킬 수 있고, 시스템 전체의 실전송 속도를 향상할 수 있게 된다.
또, 패킷에 에러가 있다고 판단된 경우에는, 데이터 영역에 기록된 그 패킷의 데이터를 무효로 하는 것이 바람직하다. 보다 구체적으로는, 도 18b에 있어서, 데이터(3)를 포함하는 패킷에 에러가 있다고 판단된 경우에는(HCE=1), 데이터 포인터(DP)를, 데이터(3)가 격납되어 있는 영역의 선두 어드레스로 되돌려 보낸다. 이와 같이 하는 것으로, 데이터 영역에서의 데이터의 연속성을 유지할 수 있다. 즉, 데이터 영역에, 옳은 데이터만을 연속하여 격납할 수 있게 되고, 애플리케이션 소프트가 데이터 영역에서 연속하여 옳은 데이터를 판독하는 것이 가능하게 된다.또한, 패킷에 에러가 있었는지의 여부를 펌웨어가 HCE에 의해 확인하며, 펌웨어가 상대 노드에 대하여 패킷의 재송신을 요구할 수 있게 된다. 이와 같이 본 실시예에 의하면, 펌웨어나 애플리케이션 소프트의 처리 부담을 경감시킬 수 있고, 시스템 전체의 실전송 속도를 향상할 수 있게 된다.
또, 에러 스테이터스 정보로서는, 헤더 CRC 에러 외에도, 데이터 CRC 에러등을 생각할 수도 있다.
그런데, 도 19에 도시하는 바와 같이, 셀프 ID 기간에 있어서는, 버스에 접속되는 모든 노드로부터 셀프 ID 패킷이 보내져온다. 그리고, 각 셀프 ID 패킷의 제 1 쿼드라트는, 노드 ID 등의 기본정보가 포함되는 데이터 본체(바디)로 되어 있고, 제 2 쿼드라트는, 제 1 쿼드라트의 반전인 패리티(에러 체크 정보)로 되어 있다(상세하게는, 도 4a 참조).
예를 들면 도 8의 구성의 데이터 전송 제어장치에서는, 이들의 일련의 셀프 ID 패킷을 도 20a에 도시하는 바와 같이 정형한다. 즉, 물리층의 패킷인 셀프 ID 패킷에 대하여, 상층(트랜잭션층이나 애플리케이션층)에 인터페이스하기 위한 헤더를 부가한다는 패킷 정형이 행해진다. 그리고, 정형된 패킷은, CPU(912)의 로컬 메모리인 RAM(914)에 격납된다.
그러나, 셀프 ID 패킷은, 노드수에 따른 개수만 필요하고, 버스에 63개의 노드가 접속되면, 예를 들면 최소로 63개의 셀프 ID 패킷을 보유할 필요가 있다. 즉, 셀프 ID 패킷의 개수는, 통상, 대단히 많다. 따라서, 이들의 셀프 ID 패킷에 헤더를 부가하고, 그대로 RAM에 격납하면, RAM의 빈 용량이 압박되어 버려, 각 노드의 리소스를 유효하게 이용할 수 없게 되어 버린다. 또한, 각각의 셀프 ID 패킷을 받아들일 때마다, 펌웨어는 필요한 처리를 행하지 않으면 안 된다. 따라서 셀프 ID 패킷의 개수가 증가하면, 펌웨어의 처리 부담이 증가한다. 더욱이, 셀프 ID 기간이 종료한 후, 즉 버스 리세트가 발생하고 나서 최초의 아비트레이션·리세트·갭이 발생한 후에는, 그 수취한 셀프 ID 패킷의 정형작업이 필요하게 된다. 따라서, 셀프 ID 패킷의 개수가 증가하면, 이 정형작업의 처리 부담도 증가한다.
그래서, 본 실시예에서는 도 20b에 도시하는 바와 같이, 전송되어 오는 패킷을, 헤더(광의로는 제어 정보)와, 일련의 셀프 ID 패킷으로 이루어지는 데이터에 의해 프레임이 구성되는 패킷으로 정형하고 있다. 결국, 일련의 셀프 ID 패킷을 하나에 패키징하고, 이 패키징된 것에 하나의 헤더를 부가하여, 상층에 인터페이스하고 있다.
이와 같이 하는 것으로, 본 실시예에서는, 패킷 기억 수단인 RAM(도 6의 RAM(80))의 빈 용량이 압박되는 사태를 효과적으로 해소하는 것에 성공하고 있다. 또한, 본 실시예에서는, 셀프 ID 패킷이 N개 있는 경우에도, 정형 후의 패킷은 하나로 된다. 따라서, 정형 후의 패킷을 RAM으로부터 판독하기 위해서는, 1회의 패킷판독을 행하면 충분하게 된다. 따라서, 펌웨어 등의 처리 부담을 각별히 경감시킬 수 있다.
더욱이 본 실시예에서는, 도 20b에 도시하는 바와 같이, 셀프 ID 기간에 수신한 패킷인지의 여부를 나타내는 스테이터스 정보인 BR를, 패킷의 트레일러(광의로는 제어 정보)에 부가하고 있다.
즉, 도 4a 내지 도 4d에 도시하는 바와 같이, 물리층이 취급하는 PHY 패킷에는, 셀프 ID 패킷의 외에 링크 온 패킷과 PHY 구성 패킷이 있다. 그리고 본 실시예에서는, 셀프 ID 패킷과 다른 PHY 패킷(링크 온 패킷, PHY 구성 패킷)을 펌웨어 등이 용이하게 구별할 수 있는 것이 바람직하다. 셀프 ID 패킷에는 데이터 포인터 등이 부가되어 있고, 셀프 ID 패킷과 다른 PHY 패킷에서는 펌웨어의 취급이 다른 것으로 되기 때문이다.
그런데, 패킷의 종류를 구별하기 위한 정보로서 IEEE1394에 있어서 규격화되어 있는 tcode를 사용하더라도, 처리 대상으로 되는 패킷이, PHY 패킷의 중의 어떤 패킷인지를 구별할 수 없다.
본 실시예에 의하면, 도 20b에 도시하는 바와 같이 패킷의 트레일러에, 셀프 ID 기간에 수신한 패킷인지의 여부를 나타내는 BR이 부가된다. 이 때문에, 셀프 ID 패킷과 다른 PHY 패킷을 펌웨어 등을 용이하게 구별할 수 있게 되고, 처리부하를 경감시킬 수 있다.
또, 본 실시예에서는, 셀프 ID 패킷의 제 2 쿼드라트의 패리티를 삭제하고, 이 패리티가 삭제된 셀프 ID 패킷(셀프 ID 패킷의 데이터 본체)의 배열에 의해, 정형후의 패킷의 데이터 부분을 구성하도록 하는 것이 바람직하다. 이와 같이 하는 것으로, 정형 후의 패킷의 사이즈를, 패리티를 삭제하지 않는 경우와 비교하여 반정도로 할 수 있으며, 셀프 ID 패킷의 기억에 필요한 RAM의 사용 용량을 더욱 절약할 수 있다.
그런데, 도 1a에서 설명한 바와 같이, 비동기 전송으로 데스티네이션 노드가패킷을 수신하면 , 데스티네이션(전송처) 노드는 소스(전송원) 노드에 대하여 ACK를 되돌려 보낸다. 그 한편에서, 데스티네이션 노드의 링크코어는, 수신한 패킷에 대하여, 소스 노드로 되돌려 보낸 ACK를 부가한다. 이로써, 소스 노드로 되돌려 보낸 ACK를 펌웨어 등의 상층에 전할 수 있다. 보다 구체적으로는, 도 14의 패킷 정형 회로(160)가, 도 21a에 도시하는 바와 같이 트레일러에 ACK를 부가한다. 이 ACK는 4 비트의 코드이고, 이 코드에 의해, 애크놀리지 컴프리트, 애크놀리지 펜딩, 애크놀리지 비지, 애크놀리지 에러 등의 상태를 알 수 있다.
그러나, 도 21a에서는, 패킷 정형 시에, 시계열로 뒤쪽에 있는 트레일러에 ACK가 부가되고, RAM에 있어서도, 헤더의 뒤쪽에 ACK가 기록된다. 따라서, 펌웨어가 ACK를 확인하는 경우에는 이하와 같은 처리를 행하지 않으면 안된다. 즉, 우선 펌웨어는, 헤더의 선두쪽에 있는 4비트의 tcode를 디코드하며, 헤더의 사이즈를 조사한다. 그리고, 그 헤더의 사이즈에 의거하여 ACK(트레일러)가 격납되는 어드레스를 산출하고, ACK를 판독한다. 따라서, 펌웨어가 ACK를 확인하기 위한 처리는 부하가 커지며, 시스템 전체의 실전송 속도 향상의 방해로 된다. 특히, 애크놀리지 에러의 경우 등은, ACK를 확인하기 위해서 행한 처리가 모두 쓸모 없는 것으로 되어 버린다.
그래서, 본 실시예에서는, 도 21b에 도시하는 바와 같이, 패킷 정형에 있어서 시계열로 패킷의 뒤쪽에 부가된 ACK 등의 소정의 정보를, RAM에 있어서, 패킷의 헤더의 선두쪽(예를 들면 선두의 제 1 쿼드라트)에 기록하도록 하여도 좋다. 이와 같이 하면, 펌웨어는, tcode를 디코드하지 않고서, ACK 등의 소정의 정보를 확인할수 있게 된다. ACK 등이 헤더의 선두쪽에 격납되어 있고, 헤더의 사이즈 등을 tcode에서 조사할 필요가 없기 때문이다.
또, 헤더 길이(헤더의 사이즈)를 고정으로 하고, ACK 등의 소정의 정보를 헤더 영역에 기록하도록 하여도 좋다. 이와 같이 헤더 길이를 고정으로 하면, 헤더 영역중의 임의의 고정 길이 헤더의 임의의 쿼드라트에 ACK 등의 소정의 정보를 격납하였다고 해도, 펌웨어는, 상기 소정의 정보에 간이하게 액세스할 수 있게 되기 때문이다. 또한, 이 경우에, 헤더 영역중의 임의의 고정 길이 헤더의 선두 쿼드라트 또는 최종 쿼드라트에, 상기 소정의 정보를 격납하는 것이 더욱 바람직하다. 이와 같이 하면, 고정길이 헤더의 선두 또는 최종 쿼드라트 이외에 상기 소정의 정보를 격납하는 경우와 비교하여, 헤더 내의 데이터의 연속성을 유지할 수 있기 때문이다.
또한, 상기 소정의 정보로서는, ACK(소스 노드로 되돌려 보낸 애크놀리지먼트 정보) 이외에도, spd(데이터 전송의 속도를 특정하기 위한 스피드 코드 정보), BC(버스에 접속되는 모든 노드에 대하여 송신된 패킷인지의 여부를 나타내는 브로드캐스트 정보), BR(셀프 ID 기간에 수신한 패킷인지의 여부를 나타내는 정보), HCE(패킷에 에러가 있었는지의 여부를 나타내는 에러 스테이터스 정보)등, 여러 가지를 생각할 수 있다.
3.2 구성
도 22에, 링크코어(20), FIFO(34), DMAC(44)의 상세한 구성의 일 예를 도시한다.
링크코어(20)는, 버스 감시 회로(130), 직렬·병렬 변환 회로(132), 패킷 정형 회로(160)를 포함한다. 그리고, 패킷 정형 회로(160)는, 패킷 진단 회로(142), 시퀀스(167), 버퍼(168), 시렉터(170)를 포함하고, 패킷 진단 회로(142)는, TAG 생성회로(162), 헤더&트레일러 생성회로(164), 에러 체크 회로(166)를 포함한다.
여기서, 버스 감시 회로(130)는, PHY 인터페이스(10)를 통하여 PHY 칩에 접속되는 8비트폭의 데이터 버스(D), 2 비트폭의 컨트롤 버스(CTL)를 감시하는 회로이다.
직렬·병렬 변환 회로(132)는, 데이터 버스(D)의 데이터를 32 비트의 데이터로 변환하는 회로이다. 예를 들면, 전송 속도가 400Mbps의 경우에는 8 비트의 데이터가 32비트의 데이터로, 200Mbps의 경우에는 4 비트의 데이터가 32 비트의 데이터로, 100Mbps의 경우에는 2 비트의 데이터가 32 비트의 데이터로 변환된다.
패킷 진단 회로(142)는, 패킷의 진단을 행하는 회로이다. TAG 생성회로(162)는, 헤더, 데이터, 트레일러 등을 구별하기 위한 TAG을 생성하는 회로이고, 헤더&트레일러 생성회로(164)는, 헤더 및 트레일러(풋터)를 생성하는 회로이다. 또한, 에러 체크 회로(166)는, 패킷에 포함되는 패리티 등의 에러 체크 정보를 체크하여 에러를 검출하는 회로이다.
시퀀스(167)는 각종의 제어신호를 생성하는 것이다. 버퍼(168), 시렉터(170)는, 직렬·병렬 변환 회로(132)로부터의 DI, 패킷 진단 회로(142)로부터의 헤더 및 트레일러, DMAC(44)으로부터의 데이터 포인터의 어느 하나를, 패킷 진단 회로(142)로부터의 신호 SEL에 의해 선택하기 위한 것이다.
FIFO(34)는, 링크코어(20)로부터의 출력 데이터인 RD의 위상과, RAM(80)으로의 기록 데이터인 WDATA의 위상을 조정하기 위한 버퍼로서 기능하는 것이고, FIFO 상태 판단 회로(35)를 포함한다. FIFO 상태 판단 회로(35)는, FIFO가 비게 되면, EMPTY를 액티브로 하며, FIFO가 풀로 되면, FULL을 액티브로 한다.
DMAC(44; 기록 수단)는, 패킷 분리 회로(180), 액세스 요구 실행 회로(190), 액세스 요구 발생 회로(192)를 포함한다.
패킷 분리 회로(180)는, 패킷 정형 회로(160)에 의해 정형된 패킷을 분리하고, 헤더 및 트레일러를 RAM(80)의 헤더 영역에, 데이터를 데이터 영역에 기록하기 위한 회로도이다(도 12 참조). 패킷 분리 회로(180)는, TAG 판별 회로(182), 포인터 갱신 회로(184), 어드레스 발생 회로(188)를 포함한다.
TAG 판별 회로(182)는, TAG 생성회로(162)에 의해 생성된 TAG(DTAG)를 판별하는 회로이다.
포인터 갱신 회로(184)는, TAG 판별 회로(182)의 출력을 받고, RAM(80)으로의 데이터를 기록하기 위한 헤더 포인터(광의로는 제어 정보 포인터)나 데이터 포인터를 갱신하기 위한 회로이다.
어드레스 발생 회로(188)는, 포인터 갱신 회로(184)의 출력을 받고, RAM(80)으로의 기록 어드레스 WADR를 발생하는 회로이다.
액세스 요구 실행 회로(190)는, 링크코어(20)로부터의 액세스 요구를 실행하기 위한 회로이다. 액세스 요구 실행 회로(190)는, FIFO 상태 판단 회로(35)로부터의 FULL이 액티브하게 되면, FFULL을 액티브로 한다. 패킷 정형 회로(160)내의시퀀스(167)는, FFULL이 액티브가 아닌 것을 조건으로, RD(RxData)의 스트로브 신호인 RDS를 액티브로 한다.
또 RFAIL은, 수신에 있어서의 실패를, 시퀀스(167)가 액세스 요구 실행회로(190)에 대하여 알리기 위한 신호이다.
액세스 요구 발생 회로(192)는, RAM(80)으로의 액세스 요구를 발생하기 위한 회로이다. 액세스 요구 발생 회로(192)는, 버퍼 매니저(70)로부터의 기록 애크놀리지먼트인 WACK나 FIFO 상태 판단 회로(35)로부터의 EMPTY를 받고, 기록 요구인 WREQ를 버퍼 매니저(70)에 출력한다.
3.3 수신측의 동작
다음에, 본 실시예의 동작의 상세에 대하여 도 23의 타이밍 파형도 등을 사용하여 설명한다.
우선, 링크코어(20)의 동작에 대하여 설명한다.
PHY 칩을 통하여 다른 노드로부터의 패킷을 수신하면, 패킷 진단 회로(142)가 그 패킷을 진단한다. 그리고, 헤더&트레일러 생성회로(164)가 헤더를 생성(정형)한다. 이 헤더는, 버퍼(168)를 통하여 시렉터(170)에 입력되고, 패킷 진단 회로(142)로부터의 신호 SEL에 의거하여 시렉터(170)가 이 헤더를 선택한다. 이로써, 도 23의 A1에 나타내는 바와 같이, RD로서 헤더(H0 내지 H4)가 FIFO(34)로 출력되게 된다.
또, 도 24a에, 시리얼 버스상에서 전송되는 비동기 패킷의 포맷(IEEE1394 규격)을 도시한다. 한편, 도 24b에, RAM(80)의 헤더 영역에 격납되는 비동기 수신패킷의 헤더 부분의 포맷을 도시한다(상기 도면에 있어서 빗금친 부분이 트레일러이다). 이와 같이 본 실시예에서는, 도 24a에 도시하는 포맷의 패킷을, 펌웨어 등의 상층이 사용할 수 있도록, 도 24b에 도시하는 포맷의 패킷으로 정형하고 있다.
또한 본 실시예에서는, 헤더의 제 4 쿼드라트인 H4(도 23의 A2)는, 도 24b에 도시하는 바와 같이 데이터 영역으로부터 데이터를 꺼내기 위한 데이터 포인터로 되어 있다. 이 데이터 포인터(H4)는, DMAC(44; 포인터 갱신 회로(184))로부터 버퍼(168)를 통하여 시렉터(170)에 입력되고, 시렉터(170)가 이것을 선택한다. 이와 같이, 패킷 정형 회로(160)는, DMAC(44)로부터 데이터 포인터를 받아들이며, 그 데이터 포인터를, RAM(80)에 기록되는 헤더에 채워 넣고 있다.
다음에, PHY 칩으로부터, 데이터 버스(D)를 통하여 패킷의 데이터 부분이 보내져온다. 직렬·병렬 변환 회로(132)는, 이 데이터 부분을 32 비트의 데이터인 DI로 변환하고, 패킷 진단 회로(142) 및 버퍼(168)에 출력한다.
또, DIE는, DI가 유효인지 무효인지를 나타내는 신호이고, DIS는, DI의 넣는 타이밍을 알리기 위한 스트로브 신호이다.
직렬·병렬 변환 회로(132)로부터의 DI는, 버퍼(168)를 통하여 시렉터(170)에 입력되고, 시렉터(170)가 이것을 선택한다. 이로써, A3에 나타내는 바와 같이, RD로서 데이터(D0 내지 Dn)가 FIFO(34)에 출력된다.
다음에, 헤더&트레일러 생성회로(164)로부터의 트레일러가 버퍼(168)를 통하여 시렉터(170)에 입력되고, 시렉터(170)가 이것을 선택한다. 이로써, A4에 나타내는 바와 같이, RD로서 트레일러(H5. 도 24b의 빗금친 부분)가 FIFO(34)에 출력된다.
그런데, TAG 생성회로(162)는, RD로서 출력되는 정보를 구별하기 위한 TAG을 생성하고 있다. 본 실시예에서는 도 15에 도시하는 바와 같이 TAG은 2 비트이고, (00), (01), (10), (11)는, 각각, 헤더, 트레일러, 데이터, 스타트(헤더의 최초)를 나타낸다. 따라서, 예를 들면 도 23에서는, (11), (00), …, (10), …, (01)과 같이 TAG이 변화한다. FIFO(34)에는, 이 2 비트의 TAG와 32비트의 RD로 이루어지는 34 비트의 데이터가 입력되게 된다.
다음에, FIFO(34)의 동작에 대하여 설명한다.
FIFO(34)는, 링크코어(20)로부터의 TAG, RD를 받고, A5, A6에 나타내는 바와 같이, DTAG, WDATA로서 출력한다.
FIFO(34)내의 FIF0 상태 판단 회로(35)는, 내장하는 카운터에 의해, FIFO(34)의 데이터수(FIFO 카운트)를 카운트한다. 그리고, FIF0(34)가 풀(데이터수=2)로 된 경우에는, 도 23의 A7에 나타내는 바와 같이 FULL을 액티브(H 레벨)로 한다. 또한, FIFO(34)이 비게(데이터수: 0) 된 경우에는, A8에 나타내는 바와 같이 EMPTY를 액티브로 한다. FIFO(34)가 풀로 된 것은, FULL, FFULL에 의해, DMAC(44)내의 액세스 요구 실행 회로(190)나 링크코어(20)내의 시퀀스(167)에 전해진다. 또한, FIFO(34)이 비게 된 것은, EMPTY에 의해, DMAC(44)내의 액세스 요구 발생 회로(192)에 전해진다.
다음에, DMAC(44)의 동작에 대하여 설명한다. .
액세스 요구 발생 회로(192)는, A9에 나타내는 바와 같이 EMPTY가비액티브(L 레벨)로 된 것(FIFO(34)이 비지 않는 것)을 조건으로, A10에 나타내는 바와 같이 WREQ를 액티브로 한다. 그리고, 버퍼 매니저(70)로부터 WACK를 받아들이면, WREQ를 비액티브로 한다.
그런데, 본 실시예에서는, 수신 시의 버스 조정에 있어서는, DMAC(44)로부터의 액세스 요구의 우선 순위를 가장 높게 하고 있다. 따라서, A10, A11에 나타내는 바와 같이, DMAC(44)으로부터의 WREQ와, CPU 인터페이스(60)나 포트용의 DMAC(54)로부터의 OtherWREQ가 경합한 경우에는, WREQ 쪽이 우선한다. 즉, A12, A13에 나타내는 바와 같이, WACK 쪽이 OtherWACK보다도 먼저 액티브하게 된다. 이와 같이, WREQ와 OtherWREQ가 경합한 경우에, WREQ 쪽을 우선시키는 것은, 이하의 이유에 의한다. 즉, IEEE1394에서는, SCSI 등과는 다르고, 다른 노드로부터의 패킷이 전송 클록에 동기하여 잇달아 전송되어 온다. 따라서, 이들의 끊임없이 전송되어 오는 패킷을 우선하여 RAM(80)에 잇달아 격납할 필요가 있기 때문이다.
또한, 본 실시예에서는, CPU 인터페이스(60)나 포트용의 DMAC(54)로부터의 액세스 요구를 버퍼 매니저(70)가 접수하고 있는 동안은, A14에 나타내는 바와 같이, DMAC(44)의 액세스 요구는 소정의 기간만 기다리게 된다. 따라서, 링크코어(20)로부터의 RD와, 버퍼 매니저(70)로의 WDATA과는 동기하지 않는다. 이 이유에 의해, 본 실시예에서는, RD와 WDATA의 위상을 조정하기 위한 FIFO(34)를 설치하고 있다. 이 경우, FIFO(34)는, 위상조정을 위해 필요한 최저한의 단수(바람직하게는 3단 이하, 더욱 바람직하게는 2단 이하)를 구비하고 있으면 좋다.
패킷 분리 회로(180)에 포함되는 TAG 판별 회로(182)는, WDATA와 함께FIFO(34)로부터 출력되는 DTAG를 판별하고, WDATA가, 스타트(헤더의 최초), 헤더, 데이터, 트레일러의 어느쪽인지를 판정한다. 그리고, 포인터 갱신 회로(184)는, 이 판정결과에 의거하여, 헤더 포인터나 데이터 포인터의 갱신을 행한다. 다음에, 어드레스 발생 회로(188)는, 갱신된 헤더 포인터나 데이터 포인터에 의거하여, WDATA의 기록 어드레스인 WADR를 발생한다.
보다 구체적으로는, 예를 들면, WDATA가 스타트 또는 헤더라고 DTAG에 의거하여 판정된 경우는, 포인터 갱신 회로(184)가, 도 25a에 도시하는 바와 같이, 헤더 포인터(HP)의 인크리먼트(광의로는 갱신)를 행한다. 그리고, 어드레스 발생 회로(188)는, 도 23의 A15에 나타내는 바와 같이, 인크리먼트 되는 헤더 포인터에 따른 WADR를 발생한다.
다음에, WDATA가 데이터이면 DTAG에 의거하여 판정된 경우는, 포인터 갱신 회로(184)가, 도 25b에 도시하는 바와 같이, 데이터 포인터(DP)의 인크리먼트를 행한다. 이 데이터 포인터(DP)는, 패킷 정형 회로(160)에 의해 헤더의 제 4 쿼드라트에 채워넣어진 H4에 상당한다. 어드레스 발생 회로(188)는, 도 23의 A16에 나타내는 바와 같이, 인크리먼트 되는 데이터 포인터에 따른 WADR을 발생한다.
다음에, WDATA가 트레일러라고 DTAG에 의거하여 판정된 경우는, 포인터 갱신 회로(184)가, 도 25c에 도시하는 바와 같이, 헤더 포인터의 인크리먼트를 행한다. 그리고, 어드레스 발생 회로(188)는, 도 23의 A17에 나타내는 바와 같이, 인크리먼트 되는 헤더 포인터에 따른 WADR를 발생한다.
또, 최종적으로는 도 25d에 도시하는 바와 같이, 헤더 포인터는, 처리 대상으로 된 패킷의 헤더 부분의 아래쪽의 경계(다음의 패킷의 헤더 부분의 위쪽의 경계)를 가리키게 된다. 또한, 데이터 포인터는, 패킷의 데이터 부분의 아래쪽의 경계(다음 패킷의 데이터 부분의 위쪽의 경계)를 가리키게 된다. 헤드 포인터나 데이터 포인터의 최종 위치는, 수신에 실패가 없었던(RFAIL이 비액티브) 것을 조건으로, 도 6의 레지스터(46)내의 헤더 포인터 설정 레지스터나 데이터 포인터 설정 레지스터에 리스토어된다.
이상과 같이 하여, 패킷을 분리하여 헤더 영역과 데이터 영역에 기록하는 것이 가능하게 된다.
또, 헤더 영역과 데이터 영역의 경계 등의, RAM(80)을 분리하는 영역의 경계(도 16의 P1 내지 P6)의 설정은, CPU 인터페이스(60)를 통하여 CPU(66; 펌웨어 등)가, 도 6의 레지스터(46)에 포함되는 포인터 설정 레지스터에 대하여, 경계의 어드레스를 가리키는 포인터를 설정하는 것으로 실현된다.
또한, 데이터 영역이 복수의 영역으로 분리되는 경우(예를 들면 도 16에 도시하는 바와 같이 아이소크로노스 전송용과 비동기 전송용의 영역으로 분리되는 경우, 또는 제 1, 제 2 비동기 전송용의 영역으로 분리되는 경우 등)에는, 예를 들면 tcode 등의 패킷의 제어 정보에 의거하여, 분리된 복수의 영역의 어느 하나에 패킷의 데이터를 기록하도록 하는 것이 바람직하다.
보다 구체적으로는, 도 22에 도시하는 바와 같이, DMAC(44)가, 복수의 데이터 포인터, 예를 들면 제 1,제 2 데이터 포인터를 패킷 정형 회로(160)에 대하여 주도록 한다(3개 이상의 데이터 포인터를 주어도 좋다). 그리고, 패킷 정형회로(160)는, 예를 들면, 아이소크로노스 전송 시(또는 제 2 비동기 전송 시)에는 DMAC(44)로부터의 제 1 데이터 포인터를 선택하고, 비동기 전송시(또는 제 1 비동기 전송시)에는 DMAC(44)로부터의 제 2 데이터 포인터를 선택하도록 한다. 즉, 패킷 정형 회로(160)내의 패킷 진단 회로(142)가, tcode 등의 패킷의 제어 정보에 의거하여, 아이소크로노스 전송이 비동기 전송인지(또는 제 2 비동기 전송인지 제 1 비동기 전송인지)를 판별하고, 이 판별결과에 의거하여 신호 SEL를 제어한다. 그리고, 버퍼(168)를 통하여 시렉터(170)에 입력되는 제 1, 제 2 데이터 포인터의 어느 하나를 선택하도록 한다. 이로써, 아이소크로노스 전송(또는 제 2 비동기 전송)의 패킷에는 제 1 데이터 포인터가 채워져 들어가고, 비동기 전송(또는 제 1 비동기 전송)의 패킷에는 제 2 데이터 포인터가 채워져 들어가게 된다. 이 결과, 데이터 영역을 분리하는 특정한 영역에, 연속적으로 데이터를 격납하는 것이 가능하게 된다. 즉, 디지털 카메라에 있어서의 동화상 데이터를 아이소크로노스 전송용 데이터 영역에 연속적으로 격납하거나, 프린터에 있어서의 인자 데이터를 제 2 비동기 전송용 데이터 영역에 연속적으로 격납하거나 하는 것(제 1 비동기 전송용 데이터 영역에는 커맨드 데이터, 스테이터스 테이터 등의 제어용 데이터를 격납함)이 가능하게 된다.
또한, 본 실시예에서는 도 24b에 도시하는 바와 같이, 헤더의 뒤쪽에, spd(데이터 전송의 속도를 특정하기 위한 스피드 코드 정보), BC(버스에 접속되기 전에서의 노드에 대하여 송신된 패킷인지의 여부를 나타내는 브로드캐스트 정보), HCE(패킷에 에러가 있었는지의 여부를 나타내는 에러 스테이터스 정보), ACK(소스 노드로 되돌려 보낸 애크놀리지먼트 정보)가 부가된다. 이들의 spd, BC, HCE, ACK는, 도 22의 링크코어(20)내의 헤더&트레일러 생성회로(164)에 의해 생성되며, 버퍼(168), 시렉터(170)의 기능에 의해 부가된다.
또한, 도 22의 에러 체크 회로(166)는, 수신 패킷의 헤더 CRC를 체크하고, 수신 패킷의 헤더에 에러가 있는 경우에는, HCE를 1에 설정한다. 그리고, HCE가 1이 되면, RFAIL이 액티브하게 된다. 그리고, RFAIL이 액티브하게 되면, 데이터 포인터의 최종 위치(도 25d의 H4+(n+1))는, 도 6의 레지스터(46)내의 데이터 포인터 설정 레지스터에 리스토어되지 않는다. 이로써, 도 18b에서 설명한, 데이터 포인터(DP)를 원래로 되돌려 보낸 데이터(3)를 무효로 하는 처리가 실현된다.
또한, 도 26a에, 패킷이 셀프 ID 패킷인 경우에, RAM(80)의 헤더 영역에 격납되는 헤더 부분의 포맷을 도시하고, 도 26b에, 패킷이 셀프 ID 패킷 이외의 PHY 패킷인 경우에, 헤더 영역에 격납되는 헤더 부분의 포맷을 도시한다.
패킷이 셀프 ID 기간중의 셀프 ID 패킷인 경우에는, 도 26a에 도시하는 바와 같이, 셀프 ID 기간에 수신한 패킷인지의 여부를 나타내는 정보인 BR가 1로 된다. 한편, 셀프 ID 기간외의 링크 온 패킷이나 PHY 구성 패킷인 경우에는, 도 26b에 도시하는 바와 같이 BR이 0으로 된다. 이와 같이 하는 것으로, tcode가 같은 0xE 이더라도, 펌웨어는 이들의 패킷을 구별할 수 있게 된다.
또, 도 24b, 도 26a, 도 26b에서는, spd, BC, HCE, ACK, BR를, 헤더의 뒤쪽에 부가하고 있지만, 도 21b에서 설명하는 바와 같이, 이들의 spd, BC, HCE, ACK, BR를, 헤더의 선두쪽에 부가하도록 하여도 좋다.
4. 전자기기
다음에, 본 실시예의 데이터 전송 제어장치를 포함하는 전자기기의 예에 대하여 설명한다.
예를 들면 도 27a에 전자기기의 하나인 프린터의 내부 블록도를 도시하고, 도 28a에 그 외관도를 도시한다. CPU(마이크로 컴퓨터; 510)는 시스템 전체의 제어 등을 행한다. 조작부(511)는 프린터를 사용자가 조작하기 위한 것이다. ROM(516)에는, 제어 프로그램, 폰트 등이 격납되고, RAM(518)는 CPU(510)의 워크 영역으로서 기능한다. 표시 패널(519)은 프린터의 동작 상태를 사용자에게 알리기 위한 것이다.
PHY 칩(502), 데이터 전송 제어장치(500)를 통하여, 퍼스널 컴퓨터 등의 다른 노드로부터 보내여져 온 인자 데이터는, 버스(504)를 통하여 인자 처리부(512)에 직접 보내진다. 그리고, 인자 데이터는, 인자 처리부(512)에서 소정의 처리가 실시되고, 프린트 헤더 등으로 이루어지는 인자부(데이터를 출력하기 위한 장치; 514)에 의해 종이에 인자되어 출력된다.
도 27b에 전자기기의 하나인 스캐너의 내부 블록도를 도시하고, 도 28b에 그 외관도를 도시한다. CPU(520)는 시스템 전체의 제어 등을 행한다. 조작부(521)는 스캐너를 사용자가 조작하기 위한 것이다. ROM(526)에는 제어 프로그램 등이 격납되고, RAM(528)은 CPU(520)의 워크 영역으로서 기능한다.
광원, 광전 변환기 등으로 이루어지는 화상 판독부(데이터를 기록하기 위한 장치; 522)에 의해 원고의 화상이 판독되고, 판독된 화상의 데이터는 화상처리부(524)에 의해 처리된다. 그리고, 처리 후의 화상 데이터가 버스(505)를 통하여 데이터 전송 제어장치(500)에 직접 보내진다. 데이터 전송 제어장치(500)는, 이 화상 데이터에 헤더 등을 부가하는 것으로 패킷을 생성하고, PHY 칩(502)를 통하여 퍼스널 컴퓨터 등의 다른 노드에 송신한다.
도 27c에 전자기기의 하나인 CD-R 드라이브의 내부 블록도를 도시하고, 도 28c에 그 외관도를 도시한다. CPU(530)는 시스템 전체의 제어 등을 행한다. 조작부(531)는 CD-R을 사용자가 조작하기 위한 것이다. R0M(536)에는 제어 프로그램 등이 격납되며, RAM(538)은 CPU(530)의 워크 영역으로서 기능한다..
레이저, 모터, 광학계 등으로 이루어지는 판독 및 기록부(데이터를 넣기 위한 장치 또는 데이터를 기억하기 위한 장치; 533)에 의해 CD-R(532)로부터 판독된 데이터는, 신호 처리부(534)에 입력되고, 에러정정처리 등의 소정의 신호처리가 실시된다. 그리고, 신호처리가 실시된 데이터가, 버스(506)를 통하여 데이터 전송 제어장치(500)에 직접 보내진다. 데이터 전송 제어장치(500)는, 이 데이터에 헤더등을 부가하는 것으로 패킷을 생성하며, PHY 칩(502)을 통하여 퍼스널 컴퓨터 등의 다른 노드에 송신한다.
한편, PHY 칩(502), 데이터 전송 제어 장치(500)를 통하여, 다른 노드로부터 보내져 온 데이터는, 버스(506)를 통하여 신호처리부(534)에 직접 보내진다. 그리고, 신호 처리부(534)에 의해 이 데이터에 소정의 신호처리가 실시되고, 판독 및 기록부(533)에 의해 CD-R532에 기억된다.
또, 도 27a, 도 27b, 도 27c에 있어서, CPU(510, 520, 530)의 외에, 데이터전송 제어장치(500)에서의 데이터 전송제어를 위한 CPU를 별도로 설치하도록 하여도 좋다.
본 실시예의 데이터 전송 제어장치를 전자기기에 사용하는 것으로, 고속인 데이터 전송이 가능하게 된다. 따라서, 사용자가 퍼스널 컴퓨터 등에 의해 프린트 아웃의 지시를 행한 경우에, 적은 타임래그로 인자가 완료하게 된다. 또한, 스캐너의 화상 넣기 지시 후에, 적은 타임래그로 판독 화상을 사용자는 볼 수 있게 된다. 또한, CD-R로부터의 데이터의 판독이나, CD-R로의 데이터의 기록을 고속으로 행할 수 있게 된다. 더욱이, 예를 들면 하나의 호스트 시스템에 복수의 전자기기를 접속하여 이용하거나, 복수의 호스트 시스템에 복수의 전자기기를 접속하여 이용하는 것도 용이하게 된다.
또한 본 실시예의 데이터 전송 제어장치를 전자기기에 사용하는 것으로, CPU 상에서 동작하는 펌웨어의 처리 부하가 경감되고, 염가인 CPU나 저속의 버스를 사용하는 것이 가능하게 된다. 더욱이, 데이터 전송 제어장치의 저 비용화, 소규모 화를 도모할 수 있기 때문에, 전자기기의 저 비용화, 소규모화도 도모할 수 있게 된다.
또 본 실시예의 데이터 전송 제어장치를 적용할 수 있는 전자기기로서는, 상기 이외에도 예를 들면, 여러 가지의 광디스크 드라이브(CDROM, DVD), 광자기 디스크 드라이브(MO), 하드 디스크 드라이브, TV, VTR, 비디오 카메라, 오디오 기기, 전화기, 프로젝터, 퍼스널 컴퓨터, 전자수첩, 워드 프로세서 등 여러 가지를 생각할 수 있다.
또, 본 발명은 본 실시예에 한정되지 않고, 본 발명의 요지의 범위 내에서 여러 가지의 변형 실시가 가능하다.
예를 들면, 본 발명의 데이터 전송 제어장치의 구성은, 도 6에 도시하는 구성이 특히 바람직하지만, 이것에 한정되는 것은 아니다. 특히, 브로드캐스트 정보나 에러 스테이터스 정보나 자기 식별 기간에 수신한 패킷인지의 여부를 나타내는 정보를, 패킷의 제어 정보에 부가하는 발명이나, 시계열로 뒤쪽에 있는 소정의 정보를 패킷의 제어 정보의 선두쪽에 기록하는 발명에서는, 도 6 뿐만 아니라, 도 8등의 여러 가지의 구성을 채용할 수 있다.
또한, 본 발명은, IEEE1394 규격에서의 데이터 전송에 적용되는 것이 특히 바람직하지만, 이것에 한정되는 것은 아니다. 예를 들면 IEEE1394과 같은 사상에 의거하는 규격이나 IEEE1394을 발전시킨 규격에 있어서의 데이터 전송에도 본 발명은 적용할 수 있다.

Claims (26)

  1. 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어장치로서,
    각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형(整形)하는 패킷 정형 수단과,
    정형된 패킷의 제어 정보를 랜덤 액세스 가능한 기억수단의 제어 정보 영역에 기록하고, 정형된 패킷의 데이터를 상기 기억수단의 데이터 영역에 기록하는 패킷 분리 수단을 포함하며,
    상기 패킷 분리 수단이,
    상기 데이터 영역에 기록되는 데이터의 어드레스를 가리키는 데이터 포인터를 상기 패킷 정형 수단에 주고,
    상기 패킷 정형 수단이,
    상기 패킷 분리 수단으로부터 주어진 상기 데이터 포인터를 패킷의 제어 정보에 부가하는 것을 특징으로 하는 데이터 전송 제어장치.
  2. 제 1 항에 있어서,
    상기 패킷 정형 수단이,
    패킷의 적어도 제어 정보와 데이터를 구별하기 위한 태그 정보를 생성하는 동시에, 생성된 그 태그 정보를 패킷에 관련짓고,
    상기 패킷 분리 수단이,
    패킷에 관련지어진 상기 태그 정보에 의거하여, 패킷의 제어 정보를 상기 제어 정보 영역에 기록하며, 패킷의 데이터를 상기 데이터 영역에 기록하는 것을 특징으로 하는 데이터 전송 제어장치.
  3. 제 2 항에 있어서,
    상기 패킷 분리 수단이,
    패킷의 제어 정보가 기록되어 있으면, 패킷에 관련지어진 상기 태그 정보에 의거하여 판단한 경우에는, 상기 제어 정보 영역에 기록되는 제어 정보의 어드레스를 가리키는 제어 정보 포인터를 갱신하고, 패킷의 데이터가 기록되어 있으면, 상기 태그 정보에 의거하여 판단한 경우에는, 상기 데이터 영역에 기록하는 데이터의 어드레스를 가리키는 데이터 포인터를 갱신하는 것을 특징으로 하는 데이터 전송 제어장치.
  4. 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어장치로서,
    각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형하는 패킷 정형 수단과,
    정형된 패킷을 기억수단에 기록하는 기록 수단을 포함하고,
    상기 패킷 정형 수단이,
    버스에 접속되는 모든 노드에 대하여 송신된 패킷인지의 여부를 나타내는 브로드캐스트 정보를, 패킷의 제어 정보에 부가하는 것을 특징으로 하는 데이터 전송 제어장치.
  5. 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어장치로서,
    각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형하는 패킷 정형 수단과,
    정형된 패킷을 기억수단에 기록하는 기록 수단을 포함하고,
    상기 패킷 정형 수단이,
    패킷에 에러가 있었는지의 여부를 나타내는 에러 스테이터스 정보를, 패킷의 제어 정보에 부가하는 것을 특징으로 하는 데이터 전송 제어장치.
  6. 제 5 항에 있어서,
    정형된 패킷의 제어 정보를 상기 기억수단의 제어 정보 영역에 기록하고, 정형된 패킷의 데이터를 상기 기억수단의 데이터 영역에 기록하는 패킷 분리 수단을 포함하며,
    패킷에 에러가 있다고 판단된 경우에는, 상기 데이터 영역에 기록된 그 패킷의 데이터를 무효로 하는 것을 특징으로 하는 데이터 전송 제어장치.
  7. 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어장치로서,
    각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형하는 패킷 정형수단과,
    정형된 패킷을 기억수단에 기록하는 기록 수단을 포함하며,
    상기 패킷 정형 수단이,
    자기 식별 기간에 수신한 패킷인지의 여부를 나타내는 정보를, 패킷의 제어 정보에 부가하는 것을 특징으로 하는 데이터 전송 제어장치.
  8. 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어장치로서,
    각 노드로부터 전송되어 온 패킷을 상층이 사용할 수 있도록 정형하는 패킷 정형 수단과,
    정형된 패킷을 기억수단에 기록하는 기록 수단을 포함하고,
    상기 패킷 정형수단이,
    각 노드로부터 전송되어 온 패킷에 대하여 시계열로 뒤쪽에 소정의 정보를 부가하며,
    상기 기록 수단이,
    상기 소정의 정보를, 상기 기억수단에 있어서 패킷의 제어 정보의 선두쪽에 기록하는 것을 특징으로 하는 데이터 전송 제어장치.
  9. 제 8 항에 있어서,
    상기 소정의 정보가,
    패킷의 전송원으로 되돌려 보낸 애크놀리지먼트 정보, 데이터 전송의 속도를 특정하기 위한 스피드 코드 정보, 버스에 접속되는 모든 노드에 대하여 송신된 패킷인지의 여부를 나타내는 브로드캐스트 정보, 자기 식별 기간에 수신한 패킷인지의 여부를 나타내는 정보, 및 패킷에 에러가 있었는지의 여부를 나타내는 에러 스테이터스 정보의 적어도 하나인 것을 특징으로 하는 데이터 전송 제어장치.
  10. 제 1 항에 있어서,
    후단의 애플리케이션에 접속되는 제 1 버스와,
    그 데이터 전송 제어장치를 컨트롤하는 제 2 버스와,
    물리층의 디바이스에 전기적으로 접속되는 제 3 버스와,
    상기 기억수단에 전기적으로 접속되는 제 4 버스와,
    상기 제 1, 제 2, 제 3 버스의 어느 하나와 상기 제 4 버스와의 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정수단을 포함하는 것을 특징으로 하는 데이터 전송 제어장치.
  11. 제 4 항에 있어서,
    후단의 애플리케이션에 접속되는 제 1 버스와,
    그 데이터 전송 제어장치를 컨트롤하는 제 2 버스와,
    물리층의 디바이스에 전기적으로 접속되는 제 3 버스와,
    상기 기억수단에 전기적으로 접속되는 제 4 버스와,
    상기 제 1, 제 2, 제 3 버스의 어느 하나와 상기 제 4 버스와의 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정수단을 포함하는 것을 특징으로 하는 데이터 전송 제어장치.
  12. 제 5 항에 있어서,
    후단의 애플리케이션에 접속되는 제 1 버스와,
    그 데이터 전송 제어장치를 컨트롤하는 제 2 버스와,
    물리층의 디바이스에 전기적으로 접속되는 제 3 버스와,
    상기 기억수단에 전기적으로 접속되는 제 4 버스와,
    상기 제 1, 제 2, 제 3 버스의 어느 하나와 상기 제 4 버스와의 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정수단을 포함하는 것을 특징으로 하는 데이터 전송 제어장치.
  13. 제 7 항에 있어서,
    후단의 애플리케이션에 접속되는 제 1 버스와,
    그 데이터 전송 제어장치를 컨트롤하는 제 2 버스와,
    물리층의 디바이스에 전기적으로 접속되는 제 3 버스와,
    상기 기억수단에 전기적으로 접속되는 제 4 버스와,
    상기 제 1, 제 2, 제 3 버스의 어느 하나와 상기 제 4 버스와의 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정수단을 포함하는 것을 특징으로 하는 데이터 전송 제어장치.
  14. 제 8 항에 있어서,
    후단의 애플리케이션에 접속되는 제 1 버스와,
    그 데이터 전송 제어장치를 컨트롤하는 제 2 버스와,
    물리층의 디바이스에 전기적으로 접속되는 제 3 버스와,
    상기 기억수단에 전기적으로 접속되는 제 4 버스와,
    상기 제 1, 제 2, 제 3 버스의 어느 하나와 상기 제 4 버스와의 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정수단을 포함하는 것을 특징으로 하는 데이터 전송 제어장치.
  15. 제 1 항에 있어서,
    상기 패킷 정형 수단과 상기 기억수단과의 사이에 설치되는 FIFO를 포함하는 것을 특징으로 하는 데이터 전송 제어장치.
  16. 제 4 항에 있어서,
    상기 패킷 정형 수단과 상기 기억수단과의 사이에 설치되는 FIFO를 포함하는것을 특징으로 하는 데이터 전송 제어장치.
  17. 제 5 항에 있어서,
    상기 패킷 정형 수단과 상기 기억수단과의 사이에 설치되는 FIFO를 포함하는 것을 특징으로 하는 데이터 전송 제어장치.
  18. 제 7 항에 있어서,
    상기 패킷 정형 수단과 상기 기억수단과의 사이에 설치되는 FIFO를 포함하는 것을 특징으로 하는 데이터 전송 제어장치.
  19. 제 8 항에 있어서,
    상기 패킷 정형 수단과 상기 기억수단과의 사이에 설치되는 FIFO를 포함하는 것을 특징으로 하는 데이터 전송 제어장치.
  20. 제 1 항에 있어서,
    IEEE1394의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어장치.
  21. 제 4 항에 있어서,
    IEEE1394의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터전송 제어장치.
  22. 제 5 항에 있어서,
    IEEE1394의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어장치.
  23. 제 7 항에 있어서,
    IEEE1394의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어장치.
  24. 제 8 항에 있어서,
    IEEE1394의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어장치.
  25. 제 1 항 내지 제 24 항중 어느 한 항에 따른 데이터 전송 제어장치와,
    상기 데이터 전송 제어 장치 및 버스를 통하여 다른 노드로부터 수신한 데이터에 소정의 처리를 실시하는 장치와,
    처리가 실시된 데이터를 출력 또는 기억하기 위한 장치를 포함하는 것을 특징으로 하는 전자기기.
  26. 제 1 항 내지 제 24 항중 어느 한 항에 따른 데이터 전송 제어장치와,
    상기 데이터 전송 제어장치 및 버스를 통하여 다른 노드에 송신하는 데이터에 소정의 처리를 실시하는 장치와,
    처리가 실시되는 데이터를 넣기 위한 장치를 포함하는 것을 특징으로 하는 전자기기.
KR10-2000-7007150A 1998-10-27 1999-10-26 데이터 전송 제어장치 및 전자기기 KR100464468B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP98-321488 1998-10-27
JP32148898A JP3543647B2 (ja) 1998-10-27 1998-10-27 データ転送制御装置及び電子機器

Publications (2)

Publication Number Publication Date
KR20010024814A KR20010024814A (ko) 2001-03-26
KR100464468B1 true KR100464468B1 (ko) 2004-12-31

Family

ID=18133129

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-7007150A KR100464468B1 (ko) 1998-10-27 1999-10-26 데이터 전송 제어장치 및 전자기기

Country Status (8)

Country Link
US (1) US6839347B1 (ko)
EP (1) EP1049019B1 (ko)
JP (1) JP3543647B2 (ko)
KR (1) KR100464468B1 (ko)
CN (1) CN1146798C (ko)
DE (1) DE69935065T2 (ko)
TW (1) TW449696B (ko)
WO (1) WO2000025215A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3539287B2 (ja) * 1999-07-15 2004-07-07 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP3608441B2 (ja) 1999-07-15 2005-01-12 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US6639918B1 (en) * 2000-01-18 2003-10-28 Apple Computer, Inc. Method and apparatus for border node behavior on a full-duplex bus
JP4505985B2 (ja) * 2000-12-04 2010-07-21 ソニー株式会社 データ転送方法、データ転送装置、通信インターフェース方法および通信インターフェース装置
JP4166956B2 (ja) * 2001-01-12 2008-10-15 パイオニア株式会社 データ伝送システム、コネクション確立方法及び情報伝送装置
JP3870717B2 (ja) * 2001-05-14 2007-01-24 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US7324220B1 (en) * 2001-07-09 2008-01-29 Lexmark International, Inc. Print performance under the windows® operating system
US9836424B2 (en) 2001-08-24 2017-12-05 Intel Corporation General input/output architecture, protocol and related methods to implement flow control
DE60213616T2 (de) 2001-08-24 2007-08-09 Intel Corporation, Santa Clara Eine allgemeine eingabe-/ausgabearchitektur, protokoll und entsprechende verfahren zur umsetzung der flusssteuerung
US20030115513A1 (en) 2001-08-24 2003-06-19 David Harriman Error forwarding in an enhanced general input/output architecture and related methods
US7177971B2 (en) 2001-08-24 2007-02-13 Intel Corporation General input/output architecture, protocol and related methods to provide isochronous channels
US7734812B2 (en) * 2002-06-06 2010-06-08 International Business Machines Corporation Method and apparatus for processing outgoing internet protocol packets
JP2004056376A (ja) * 2002-07-18 2004-02-19 Fujitsu Ltd 半導体装置及びデータ転送制御方法
DE10302363A1 (de) * 2003-01-22 2004-08-05 Deutsche Thomson-Brandt Gmbh Verfahren zum Betreiben eines Netzwerks von Schnittstellenknoten und Schnittstelleneinrichtung
US7512695B2 (en) 2003-05-07 2009-03-31 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system to control the communication of data between a plurality of interconnect devices
US7443785B2 (en) * 2004-03-17 2008-10-28 Sony Ericsson Mobile Communications Ab Selective error correction for ad hoc networks having multiple communication modes
US7826457B2 (en) * 2004-05-11 2010-11-02 Broadcom Corp. Method and system for handling out-of-order segments in a wireless system via direct data placement
US20060176895A1 (en) * 2005-02-07 2006-08-10 Yakov Kamen Data delivery pipeline optimized by cell-based data cascade technology
US7996583B2 (en) * 2006-08-31 2011-08-09 Cisco Technology, Inc. Multiple context single logic virtual host channel adapter supporting multiple transport protocols
US7870306B2 (en) * 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
DE102017208824B4 (de) 2017-05-24 2022-12-29 Wago Verwaltungsgesellschaft Mbh Busumsetzer
KR101988171B1 (ko) * 2018-04-27 2019-06-11 벨로넥트 인코퍼레이션 접속된 노드들에 향상된 속도의 버스를 제공하기 위한 기기
DE102018115100A1 (de) * 2018-06-22 2019-12-24 Krohne Messtechnik Gmbh Verfahren zur Fehlerbehandlung bei Buskommunikation und Buskommunikationssystem
TW202203048A (zh) * 2020-07-10 2022-01-16 日商索尼半導體解決方案公司 通信裝置及通信方法、以及程式

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3152667B2 (ja) 1991-03-06 2001-04-03 日本放送協会 データチャンネル受信装置
US5815678A (en) * 1995-07-14 1998-09-29 Adaptec, Inc. Method and apparatus for implementing an application programming interface for a communications bus
EP0803821A3 (en) * 1996-04-26 1998-01-28 Texas Instruments Incorporated DMA channel assignment in a data packet transfer device
JPH1040211A (ja) 1996-04-30 1998-02-13 Texas Instr Inc <Ti> パケット化されたデータ通信インタフェース機器内での直接メモリアクセス優先順位を割り当てるための方法ならびにdmaチャンネル回路
JPH1023101A (ja) * 1996-07-02 1998-01-23 Fujitsu Ltd データ転送インタフェース回路及びデータ転送方法
JP3731263B2 (ja) * 1996-09-11 2006-01-05 ソニー株式会社 通信方法及び電子機器
JPH1117773A (ja) * 1997-06-20 1999-01-22 Sony Corp シリアルインタフェース回路
US6324178B1 (en) * 1998-05-26 2001-11-27 3Com Corporation Method for efficient data transfers between domains of differing data formats

Also Published As

Publication number Publication date
DE69935065T2 (de) 2007-06-28
US6839347B1 (en) 2005-01-04
CN1292121A (zh) 2001-04-18
EP1049019A4 (en) 2002-05-29
JP3543647B2 (ja) 2004-07-14
KR20010024814A (ko) 2001-03-26
EP1049019A1 (en) 2000-11-02
EP1049019B1 (en) 2007-02-07
DE69935065D1 (de) 2007-03-22
WO2000025215A1 (fr) 2000-05-04
TW449696B (en) 2001-08-11
CN1146798C (zh) 2004-04-21
JP2000134229A (ja) 2000-05-12

Similar Documents

Publication Publication Date Title
KR100464468B1 (ko) 데이터 전송 제어장치 및 전자기기
JP3543649B2 (ja) データ転送制御装置及び電子機器
KR100405250B1 (ko) 데이터 전송 제어 장치 및 전자 기기
JP3543648B2 (ja) データ転送制御装置及び電子機器
JP3584789B2 (ja) データ転送制御装置及び電子機器
US6804250B2 (en) Data communication system and node, and method of using the system and the node
JP4504497B2 (ja) バスとアプリケーション装置を連結するためメモリを利用する方法及びバスインタフェース
US6578095B1 (en) Data transfer control device for transferring data among a plurality of nodes and electronic equipment
JP3494040B2 (ja) データ転送制御装置及び電子機器
KR100311707B1 (ko) 데이타 통신 시스템, 데이타 통신 방법, 데이타 통신 장치 및 디지탈 인터페이스
KR100464469B1 (ko) 데이터 전송 제어 장치 및 전자기기
JP3539287B2 (ja) データ転送制御装置及び電子機器
JP2004173304A (ja) データ転送制御装置及び電子機器
JP2004118704A (ja) インターフェイス装置およびインターフェイス装置の制御方法

Legal Events

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

Payment date: 20111202

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20121130

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee