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

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

Info

Publication number
KR20010024815A
KR20010024815A KR1020007007151A KR20007007151A KR20010024815A KR 20010024815 A KR20010024815 A KR 20010024815A KR 1020007007151 A KR1020007007151 A KR 1020007007151A KR 20007007151 A KR20007007151 A KR 20007007151A KR 20010024815 A KR20010024815 A KR 20010024815A
Authority
KR
South Korea
Prior art keywords
data
packet
transmission
control information
bus
Prior art date
Application number
KR1020007007151A
Other languages
English (en)
Other versions
KR100459743B1 (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 KR20010024815A publication Critical patent/KR20010024815A/ko
Application granted granted Critical
Publication of KR100459743B1 publication Critical patent/KR100459743B1/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
    • 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/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
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Small-Scale Networks (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

처리의 오버헤드를 경감하여, 소규모인 하드웨어로 고속 데이터 전송을 실현할 수 있는 데이터 전송 제어 장치 및 전자기기를 제공하는 것이 목적이다. IEEE 1394의 데이터 전송에 있어서, 패킷 결합 회로(280)가 패킷의 헤더, 데이터를 RAM(80)의 헤더, 데이터 영역으로부터 판독하여 결합한다. 헤더(CRC)의 생성 기간을 이용하여 데이터 포인터를 취득한다. 헤더, 데이터 중 어느 하나가 판독되어 있는지를 tcode에 의해 판단하여, 헤더 포인터 또는 데이터 포인터를 인크리먼트한다. 데이터 영역으로의 데이터 입력 사이에 헤더를 생성한다. 송신 패킷 영역을 분리하는 한 채널로부터 패킷이 송신되어 있는 사이에 다른 채널 데이터를 입력한다. 연결 포인터를 사용하여 다른 채널의 패킷을 연속하여 판독한다. 전송처로부터의 ACK 코드를 송신원 채널로 귀환 기록한다. 기본 헤더를 재기록하여 헤더를 순차 작성하여, 반복 회수가 0이 될 때까지 패킷을 연속 전송한다.

Description

데이터 전송 제어 장치 및 전자기기{Data transfer controller and electronic device}
최근, IEEE 1394라 불리는 인터페이스 규격이 각광을 받고 있다. 이 IEEE 1394는 차세대 멀티미디어에도 대응 가능한 고속 시리얼 버스 인터페이스를 규격화한 것이다. 이 IEEE 1394에 의하면, 동화상 등의 리얼 타임성이 요구되는 데이터도 취급할 수 있다. 또, IEEE 1394의 버스에는 프린터, 스캐너, CD-R 드라이브, 하드 디스크 드라이브 등의 컴퓨터 주변 기기뿐만 아니라, 비디오 카메라, VTR, TV 등의 가정용 전화 제품도 접속할 수 있다. 이 때문에, 전자기기의 디지털화를 비약적으로 촉진할 수 있는 것으로서 기대되고 있다.
이러한 IEEE 1394의 개요에 대해서는, 예를 들면 「IEEE 1394 하이·퍼포먼스·시리얼 버스의 개요」(Interface Apr. 1996의 1 내지 10항), 「PC 주변 기기용 버스 규격군 총람」(Interface Jan. 1997의 106항 내지 116항), 「IEEE 1394-1995(Fire Wire)의 리얼 타임 전송 모드와 멀티미디어 대응 프로토콜」(Interface Jan. 1997의 136 내지 146항)에 개시되어 있다. 또, IEEE 1394에 준거한 데이터 전송 제어 장치로서는, 텍사스·인스투르먼트사 제품인 TSB12LV31 등이 알려져 있다.
그렇지만, 이 IEEE 1394에 준거한 데이터 전송 제어 장치에는 다음과 같은 과제가 있는 것이 판명되었다.
즉, 현재의 IEEE 1394 규격에 의하면 최대 400Mbps의 전송 속도가 실현 가능하게 되어 있다. 그러나, 현실적으로는, 처리의 오버헤드 존재에 기인하여, 시스템 전체의 실전송 속도는 이보다도 꽤 낮게 되어 있다. 즉, CPU 상에서 동작하는 펌 웨어나 애플리케이션 소프트가 송신 데이터를 준비하거나, 수신 데이터를 설치하거나 하는 등의 처리에 많은 시간을 요해버려, 버스 상에서의 전송 속도가 빨라도 결국, 고속 데이터 전송을 실현하지 못한다.
특히, 주변 기기에 설치되는 CPU는 퍼스널 컴퓨터 등의 호스트 시스템에 설치되는 CPU에 비해 처리 능력이 낮다. 이 때문에, 펌 웨어나 애플리케이션 소프트 처리의 오버헤드 문제는 대단히 심각한 것이 된다. 따라서, 이러한 오버헤드 문제를 효과적으로 해소할 수 있는 기술이 기대되고 있다.
본 발명은 데이터 전송 제어 장치 및 이것을 포함하는 전자기기에 관한 것이다.
도 1a, 도 1b, 도 1c는 비동기 전송과 동기 전송에 대해서 설명하기 위한 도면.
도 2a, 도 2b는 트리 식별에 대해서 설명하기 위한 도면.
도 3은 자기 식별에 대해서 설명하기 위한 도면.
도 4a, 도 4b, 도 4c, 도 4d는 셀프 ID 패킷 등의 물리층 패킷의 포맷을 도시하는 도면.
도 5는 IEEE 1394의 프로토콜 구성에 대해서 도시하는 도면.
도 6은 본 실시예의 데이터 전송 제어 장치의 구성예를 도시하는 도면.
도 7은 헤더(제어 정보) 영역과 데이터 영역의 분리에 대해서 설명하기 위한 도면.
도 8은 본 실시예의 비교예의 구성예에 대해서 도시하는 도면.
도 9는 도 8의 구성에 의한 데이터 전송 수법에 대해서 설명하기 위한 도면.
도 10은 데이터 전송 수법의 다른 예에 대해서 설명하기 위한 도면.
도 11은 본 실시예의 데이터 전송 수법에 대해서 설명하기 위한 도면.
도 12는 헤더 영역에 격납되는 헤더와 데이터 영역에 격납되는 데이터를 결합하여, 송신 패킷을 조립하는 수법에 대해서 설명하기 위한 도면.
도 13은 RAM으로부터 판독된 헤더로부터 데이터 포인터를 취득하고, 취득한 데이터 포인터를 사용하여, 패킷 헤더와 데이터를 결합하는 수법에 대해서 설명하기 위한 도면.
도 14는 헤더 영역에 격납하는 헤더에 데이터 포인터를 포함시키는 수법에 대해서 설명하기 위한 도면.
도 15a, 도 15b는 데이터 입력 처리 사이에, 헤더 작성 및 기록 처리를 행하는 수법에 대해서 설명하기 위한 도면.
도 16a, 도 16b는 도 15a, 도 15b의 경우의 펌 웨어 처리를 설명하기 위한 플로 챠트.
도 17은 RAM의 각 영역의 사이즈를 가변 제어하는 수법에 대해서 설명하기 위한 도면.
도 18a, 도 18b는 송신 패킷 영역을 다수 채널로 분리하는 수법에 대해서 설명하기 위한 도면.
도 19는 송신 패킷 영역을 다수 채널로 분리한 경우의 펌 웨어 처리에 대해서 설명하기 위한 도면.
도 20a, 도 20b는 송신 패킷 영역을 다수 채널로 분리한 경우의 펌 웨어 처리에 대해서 설명하기 위한 플로 챠트.
도 21a, 도 21b도 송신 패킷 영역을 다수 채널로 분리한 경우의 펌 웨어 처리에 대해서 설명하기 위한 플로 챠트.
도 22a, 도 22b, 도 22c, 도 22d는 연결 포인터를 사용하는 수법에 대해서 설명하기 위한 도면.
도 23a, 도 23b, 도 23c는 패킷의 송신원 채널에 ACK 코드를 귀환 기록하는 수법에 대해서 설명하기 위한 도면.
도 24a, 도 24b는 기본 헤더를 재기록하여 패킷을 연속 전송하는 수법에 대해서 설명하기 위한 도면.
도 25a, 도 25b는 기본 헤더를 재기록하여 패킷을 연속 전송하는 수법의 이점에 대해서 설명하기 위한 도면.
도 26은 기본 헤더를 재기록하여 패킷을 연속 전송할 경우의 펌 웨어 처리에 대해서 설명하기 위한 플로 챠트.
도 27은 송신 측 구성의 일례를 도시하는 도면.
도 28은 송신 측 동작에 대해서 설명하기 위한 타이밍 파형도.
도 29a는 IEEE 1394 규격의 비동기 패킷의 포맷, 도 29b는 RAM의 헤더 영역에 격납되는 비동기 송신 패킷의 헤더 부분의 포맷.
도 30a, 도 30b는 헤더 포인터와 데이터 포인터의 갱신에 대해서 설명하기 위한 도면.
도 31a, 도 31b, 도 31c는 각종 전자기기의 내부 블록도의 예.
도 32a, 도 32b, 도 32c는 각종 전자기기의 외관도의 예.
본 발명은 이상과 같은 기술적 과제에 비추어 이루어진 것으로, 그 목적으로 하는 곳은 펌 웨어나 애플리케이션 소프트 등의 처리의 오버헤드를 경감하여, 소규모 하드웨어로 고속 데이터 전송을 실현할 수 있는 데이터 전송 제어 장치 및 이것이 사용되는 전자기기를 제공함에 있다.
상기 과제를 해결하기 위해 본 발명은 버스에 접속되는 다수의 노드 사이에서의 데이터 전송을 위한 데이터 전송 제어 장치로, 랜덤 액세스 가능한 기억 수단이 상층에 의해 패킷의 제어 정보가 기록되어 있는 제어 정보 영역과 상층에 의해 패킷 데이터가 기록되어 있는 데이터 영역으로 분리되어 있을 경우에 있어서, 패킷의 제어 정보를 상기 기억 수단의 상기 제어 정보 영역으로부터 판독하여, 해당 제어 정보와 쌍을 이루는 패킷의 데이터를 상기 기억 수단의 상기 데이터 영역으로부터 판독하는 패킷 결합 수단과, 판독된 패킷을 각 노드에 전송하기 위한 서비스를 제공하는 링크 수단을 포함하는 것을 특징으로 한다.
본 발명에 의하면, 랜덤 액세스 가능한 기억 수단이 제어 정보 영역과 데이터 영역으로 분리되어 있다. 그리고, 제어 정보 영역에는 예를 들면 펌 웨어 등의 상층에 의해 제어 정보가 기록되며, 데이터 영역에는 예를 들면 애플리케이션 소프트나 펌 웨어 등의 상층에 의해 데이터가 기록되어 있다(설치되어 있다). 그리고, 본 발명에서는, 패킷 결합 수단이 제어 정보 영역으로부터 제어 정보를 판독함과 동시에, 데이터 영역으로부터 이 제어 정보와 쌍을 이루는 데이터를 판독하여 결합한다. 그리고, 제어 정보와 데이터에 의해 프레임이 구성되는 패킷이 링크 수단을 통해 각 노드에 전송된다.
본 발명에 의하면, 상층은 패킷을 송신하는 순서에 의존하지 않고, 제어 정보나 데이터를 기억 수단에 기록할 수 있다. 또, 상층은 송신해야 할 패킷의 데이터를 데이터 영역에 연속하여 기록할 수 있다. 또, 제어 정보 영역의 제어 정보와 데이터 영역의 데이터를 결합하여 패킷을 조립하는 처리에 상층이 관여할 필요가 없다. 이상에 의해 본 발명에 의하면, 상층의 처리 부담을 각별히 경감할 수 있게 된다.
또, 본 발명은 상기 패킷 결합 수단이 상기 데이터 영역으로부터 판독되는 데이터의 어드레스를 가리키는 데이터 포인터를 상기 제어 정보 영역으로부터 판독된 제어 정보로부터 취득하여, 취득한 데이터 포인터를 사용하여 상기 데이터 영역으로부터 데이터를 판독하는 것을 특징으로 한다. 이렇게 하면, 제어 정보와 쌍이 되는 데이터를 적절히 데이터 영역으로부터 판독할 수 있게 됨과 동시에, 제어 정보와 데이터를 결합하여 패킷을 조립하는 처리의 간소화를 도모할 수 있다.
또, 본 발명은 상기 패킷 결합 수단이 패킷의 제어 정보의 에러 체크 정보를 상기 링크 수단이 생성하는 기간을 이용하여, 제어 정보로부터 데이터 포인터를 취득하는 것을 특징으로 한다. 이렇게 하면, 처리 시간에 부질없이 생기는 것을 방지할 수 있어, 처리 고속화를 도모할 수 있다.
또, 본 발명은 상기 패킷 결합 수단이 패킷의 제어 정보가 판독되어 있으면, 패킷의 제어 정보에 포함되는 패킷 포맷 식별 정보에 근거하여 판단한 경우에는, 상기 제어 정보 영역으로부터 판독되는 제어 정보의 어드레스를 가리키는 제어 정보 포인터를 갱신하고, 패킷의 데이터가 판독되어 있으면, 상기 패킷 포맷 식별 정보에 근거하여 판단한 경우에는, 상기 데이터 영역으로부터 판독되는 데이터의 어드레스를 가리키는 데이터 포인터를 갱신하는 것을 특징으로 한다. 이렇게 하면, 제어 정보 포인터의 갱신 처리와 데이터 포인터의 갱신 처리를 패킷 포맷 식별 정보를 이용하여 전환, 패킷의 제어 정보와 데이터를 결합할 수 있게 된다. 이로써, 제어 정보와 데이터 결합 처리의 간소화를 도모할 수 있다.
또, 본 발명은 상기 데이터 영역으로의 데이터 설치 처리 사이에, 제어 정보를 작성하여 해당 제어 정보를 상기 제어 정보 영역에 기록하는 제어 정보 작성 수단과, 데이터의 설치 처리와 제어 정보의 기록 처리 양쪽이 완료한 것을 조건으로, 패킷의 송신 개시를 명령하는 송신 개시 수단을 포함하는 것을 특징으로 한다. 이렇게 하면 데이터 설치 처리와, 제어 정보의 생성 및 기록 처리를 병렬로 행할 수 있어, 처리 효율화를 도모할 수 있게 된다.
또, 본 발명은 버스에 접속되는 다수의 노드 사이에서의 데이터 전송을 위한 데이터 전송 제어 장치로, 랜덤 액세스 가능한 기억 수단의 송신 패킷 영역이 다수의 채널로 분리되어 있을 경우에 있어서, 상기 다수의 채널에 격납되는 패킷 중에서, 데이터 설치 처리와 제어 정보의 기록 처리 양쪽이 완료한 패킷의 송신 개시를 명령하는 송신 개시 수단과, 송신 개시가 명령된 패킷을 송신 패킷 영역이 대응하는 채널로부터 판독하는 판독 수단과, 판독된 패킷을 각 노드에 전송하기 위한 서비스를 제공하는 링크 수단을 포함하는 것을 특징으로 한다.
본 발명에 의하면, 기억 수단의 송신 패킷 영역이 다수의 채널로 분리된다. 그리고, 패킷의 준비(데이터의 설치 처리 및 제어 정보의 생성 및 기록 처리)가 완료하여, 송신 개시 수단이 송신 개시를 명령하면, 대응하는 채널로부터 패킷이 판독, 송신된다. 따라서, 본 발명에 의하면, 한 채널로부터의 패킷의 송신 개시를 명령한 후에, 그 송신 완료를 기다리지 않고, 다른 채널의 패킷을 준비하는 것 등이 가능해진다. 이 결과, 처리 시간의 낭비를 없앨 수 있어, 처리 효율화를 도모할 수 있다.
또, 본 발명은 상기 다수의 채널 중 한 채널로부터 패킷이 송신되고 있는 사이에, 다른 채널의 패킷에 대한 데이터 설치를 지시하는 수단을 포함하는 것을 특징으로 한다. 이렇게 하면, 한 채널에서의 패킷의 송신 처리와, 다른 채널에서의 데이터의 설치 처리를 병렬로 행하는 것이 가능해진다. 이 결과, 다수의 패킷을 연속하여 송신할 경우에, 처리를 대폭 효율화할 수 있다.
또, 본 발명은 데이터 설치 중 플래그가 클리어되어 있는 것을 조건으로, 데이터 설치를 지시함과 동시에 해당 데이터 설치 중 플래그를 셋하고, 데이터 설치가 종료한 것을 조건으로, 해당 데이터 설치 중 플래그를 클리어하는 수단과, 송신 중 플래그가 클리어되어 있는 것을 조건으로, 패킷의 송신 개시를 명령함과 동시에 해당 송신 중 플래그를 셋하며, 패킷 송신이 종료한 것을 조건으로, 해당 송신 중 플래그를 클리어하는 수단을 포함하는 것을 특징으로 한다. 이렇게 데이터 설치 중 플래그나 송신 중 플래그를 사용함으로써, 한 채널의 데이터 처리가 행해지고 있는 사이에 다른 채널의 데이터 입력 처리가 행해지거나, 한 채널의 송신 처리가 행해지고 있는 사이에 다른 채널의 송신 처리가 행해져버린다는 사태를 회피할 수 있다. 그리고, 한 프로그램을 사용하여, 다수 채널로부터의 패킷 송신 처리를 멀티태스크와 같이 실행하는 것이 가능해진다.
또, 본 발명은 각 채널에 격납되는 각 패킷이 패킷끼리를 연결하기 위한 연결 포인터를 포함하며, 상기 판독 수단이 상기 송신 개시 수단에 의해 한 채널의 패킷 송신 개시가 명령된 경우에, 상기 연결 포인터를 사용하여, 다른 채널의 패킷을 연속하여 순차 판독하는 것을 특징으로 한다. 이렇게 하면, 한 채널의 패킷 송신 개시를 명령하는 것 만으로, 다른 채널의 패킷이 연속하여 순차 판독되어 송신되게 되어, 펌 웨어 등의 상층의 처리 부담을 각별히 경감할 수 있다.
또, 본 발명은 패킷의 전송처로부터 반송되어 오는 승인 정보를 송신 패킷 영역의 다수의 채널 중 해당 패킷의 송신원의 채널로 귀환 기록하는 귀환 기록 수단을 포함하는 것을 특징으로 한다. 이렇게 하면, 송신 패킷과, 그 전송처로부터 돌아오는 승인 정보를 1대 1로 대응시키는 것이 가능해진다. 이로써, 어느 승인 정보가 어느 패킷에 대응하는 것인지를 펌 웨어 등의 상층이 용이하게 인식할 수 있게 된다.
또, 본 발명은 버스에 접속되는 다수의 노드 사이에서의 데이터 전송을 위한 데이터 전송 제어 장치로, 기억 수단에 기록된 패킷을 판독하는 판독 수단과, 판독된 패킷을 각 노드에 전송하기 위한 서비스를 제공하는 링크 수단과, 패킷의 전송처로부터 반송되어 오는 승인 정보를 반송되어 온 승인 정보를 확인하지 않고서 연속 전송할 수 있는 패킷수 이상의 개수만큼 기억하는 수단을 포함하는 것을 특징으로 한다. 이렇게 하면, 펌 웨어 등의 상층은 반송되어 오는 승인 정보를 확인하지 않고 연이어 패킷의 송신 개시를 명령할 수 있게 된다. 이 결과, 처리 효율화를 도모할 수 있다.
또, 본 발명은 버스에 접속되는 다수의 노드 사이에서의 데이터 전송을 위한 데이터 전송 제어 장치로, 송신 반복 회수 정보를 설정하는 수단과, 기본 제어 정보를 작성하는 제어 정보 작성 수단과, 패킷의 송신 개시를 명령하는 송신 개시 수단과, 패킷의 송신 개시가 명령된 경우에, 상기 기본 제어 정보를 재기록함으로써, 연속 전송되는 패킷의 데이터와 쌍을 이루는 제어 정보를 순차 생성하는 제어 정보 재기록 수단과, 데이터와 순차 생성된 제어 정보에 의해 프레임이 구성되는 패킷을 송신 반복 회수 정보가 주어진 값이 될 때까지 연속 전송하는 수단을 포함하는 것을 특징으로 한다.
본 발명에 의하면, 송신 반복 회수 정보를 설정함과 동시에 기본 제어 정보를 작성하여 송신 개시를 명령하면, 자동적으로 기본 제어 정보로부터 제어 정보가 생성되며, 송신 반복하여 회수 정보가 주어진 값(예를 들면 0)이 될 때까지 패킷이 연속 전송된다. 이로써, 펌 웨어의 처리 부담을 늘리지 않고, 다수의 패킷을 연속 전송하여, 큰 사이즈의 데이터를 다른 노드에 전송할 수 있게 된다.
또한, 본 발명에서는, 상기 기본 제어 정보가 상기 송신 반복 회수 정보와, 랜덤 액세스 가능한 기억 수단의 데이터 영역으로부터 판독되는 데이터의 어드레스를 가리키는 데이터 포인터와, 트랜잭션 식별 정보를 포함하며, 상기 제어 정보 재기록 수단이 상기 송신 반복 회수 정보, 상기 데이터 포인터 및 상기 트랜잭션 식별 정보를 재기록하는 것이 바람직하다.
또, 본 발명은 후단의 애플리케이션에 접속되는 제 1 버스와, 해당 데이터 전송 제어 장치를 컨트롤하는 제 2 버스와, 물리층의 디바이스에 전기적으로 접속되는 제 3 버스와, 상기 기억 수단에 전기적으로 접속되는 제 4 버스와, 상기 제 1, 제 2, 제 3 버스 중 어느 하나와 상기 제 4 버스 사이와의 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정 수단을 포함하는 것을 특징으로 한다.
본 발명에 의하면, 서로 분리되는 제 1, 제 2, 제 3 버스가 설치된다. 그리고 조정 수단 조정에 의해, 이들 제 1, 제 2, 제 3 버스 중 어느 하나와, 랜덤 액세스 가능한 기억 수단의 제 4 버스와의 사이에 데이터 경로가 확립된다. 이렇게 함으로써, 다른 노드로부터 물리층의 디바이스를 통해 수신한 패킷을 원하는 배치에서 기억 수단에 격납하는 것이 가능해진다. 또, 패킷의 제어 정보 판독이나 기록은 제 2 버스를 사용하여 행하며, 패킷의 데이터 판독이나 기록은 제 1 버스를 사용하여 행하는 것도 가능해진다. 이로써, 트랜잭션층이나 애플리케이션층 등의 상층의 처리 부담을 경감할 수 있다. 또, 제 1, 제 2 버스로서 저속 버스를 채용하거나, 데이터 전송 제어 장치를 컨트롤하는 디바이스로서 저속이고 염가인 디바이스를 채용할 수 있다. 이 결과, 데이터 전송 제어 장치의 소규모화, 저 코스트화를 도모할 수 있게 된다.
또한, 제 1, 제 2, 제 3, 제 4 버스는 각각 애플리케이션, 데이터 전송 제어 장치를 컨트롤하는 디바이스, 물리층의 디바이스, RAM에 적어도 전기적으로 접속되어 있으면 되며, 이들 버스 상에 다른 디바이스를 개재시켜도 된다.
또, 본 발명에서는, IEEE 1394의 규격에 준거한 데이터 전송을 행하는 것이 바람직하다.
또, 본 발명에 관련되는 전자기기는 상기 중 어느 한 데이터 전송 제어 장치와, 상기 데이터 전송 제어 장치 및 버스를 통해 다른 노드로부터 수신한 데이터에 주어진 처리를 실시하는 장치와, 처리가 실시된 데이터를 출력 또는 기억하기 위한 장치를 포함하는 것을 특징으로 한다. 또, 본 발명에 관련되는 전자기기는 상기 중 어느 한 데이터 전송 제어 장치와, 상기 데이터 전송 제어 장치 및 버스를 통해 다른 노드에 송신하는 데이터에 주어진 처리를 실시하는 장치와, 처리가 실시되는 데이터를 입력하기 위한 장치를 포함하는 것을 특징으로 한다.
본 발명에 의하면, 다른 노드로부터 전송된 데이터를 전자기기에 있어서 출력하거나 기억하거나 하는 처리, 전자기기에 있어서 입력한 데이터를 다른 노드에 전송하거나 하는 처리를 고속화하는 것이 가능해진다. 또, 본 발명에 의하면, 데이터 전송 제어 장치를 소규모화할 수 있음과 동시에, 데이터 전송을 제어하는 펌 웨어 등의 처리 부담을 경감할 수 있기 때문에, 전자기기의 저 코스트화, 소규모화 등을 도모하는 것도 가능해진다.
이하, 본 발명이 적합한 실시예에 대해서 도면을 사용하여 상세히 설명한다. 1. IEEE 1394
우선, IEEE 1394의 개요에 대해서 간단히 설명한다.
1.1 데이터 전송 속도, 접속 토폴로지
IEEE 1394(IEEE 1394-1995, P1394. a)에서는 100 내지 400Mbps의 고속 데이터 전송이 가능하게 되어 있다(P1394. b에서는 800 내지 3200Mbps). 또, 전송 속도가 다른 노드를 버스에 접속하는 것도 허락된다.
각 노드는 트리 형상으로 접속되어 있으며, 1개의 버스에 최대 63개의 노드가 접속 가능하게 되어 있다. 또한, 버스 브리지를 이용하면 약 64000개의 노드를 접속하는 것도 가능하다.
전원이 투입되거나 도중에서 디바이스가 꼼짝 못하게 되면, 버스 리셋이 발생하여, 접속 토폴로지에 관한 정보가 모두 클리어된다. 그리고, 버스 리셋 후, 트리 식별(루트 노드 결정), 자기 식별이 행해진다. 그 후, 동기 리소스 매니저, 사이클 마스터, 버스 매니저 등의 관리 노드가 결정된다. 그리고, 통상의 패킷 전송이 개시된다.
1.2 전송 방식
IEEE 1394에서는, 패킷의 전송 방식으로서, 신뢰성이 요구되는 데이터 전송에 적합한 비동기 전송과, 리얼 타임성이 요구되는 동화상이나 음성 등의 데이터 전송에 적합한 동기 전송이 준비되어 있다.
도 1a에 비동기 서브 액션 예를 도시한다. 1개의 서브 액션은 조정, 패킷 전송, 승인으로 이루어진다. 즉, 데이터 전송에 앞서, 우선, 버스 사용권에 관한 조정이 행해진다. 그리고 소스(전송원) 노드로부터 데스티네이션(전송처) 노드로 패킷이 전송된다. 이 패킷의 헤더에는 소스 ID와 데스티네이션 ID가 포함된다. 데스티네이션 노드는 이 데스티네이션 ID를 읽어, 자체 노드당 패킷인지의 여부를 판단한다. 데스티네이션 노드는 패킷을 받아들이면, 소스 노드에 승인(ACK) 패킷을 돌려준다.
패킷 전송과 ACK 사이에는 승인 갭이 존재한다. 또, 1개의 서브 액션과 다음 서브 액션 사이에는 서브 액션 갭이 존재한다. 그리고, 서브 액션 갭에 상당하는 일정 버스·아이돌 시간이 경과하지 않으면, 다음 서브 액션의 조정을 개시할 수 없다. 이로써 서브 액션 상호의 충돌이 회피된다.
도 1b에 동기 서브 액션 예를 도시한다. 동기 전송은 브로드캐스트(버스에 접속되는 모든 노드에 전송)에서 실행되기 때문에, 패킷 수신 시에 ACK는 반송되지 않는다. 또, 동기 전송에서는, 노드 ID가 아니라 채널 번호를 사용하여 패킷 전송이 행해진다. 또한, 서브 액션 사이에는 동기 갭이 존재한다.
도 1c에 데이터 전송 시의 버스 모양을 도시한다. 동기 전송은 사이클 마스터가 일정 주기마다 사이클 스타트 패킷을 발생함으로써 개시한다. 이로써, 1개의 채널당, 125μs마다 적어도 1개의 패킷을 전송할 수 있게 된다. 이 결과, 동화상이나 음성 등의 리얼 타임성이 요구되는 데이터 전송이 가능해진다.
비동기 전송은 동기 전송 사이에 행해진다. 즉, 동기 전송 쪽이 비동기 전송보다도 우선 순위가 높게 되어 있다. 이것은 도 1c에 도시하는 바와 같이, 동기 갭의 시간을 비동기 전송의 서브 액션 갭의 시간보다도 짧게 함으로써 실현된다.
1.3 트리 식별
트리 식별은 버스 리셋 후에 행해진다. 트리 식별에 의해 노드 사이의 친자 관계나 루트 노드가 결정된다.
우선, 리프 노드(1개의 노드에 밖에 접속되어 있지 않은 노드)가 인접하는 노드에 페어런트 노티파이를 보낸다. 예를 들면 도 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가 루트가 된다. 또한, IEEE 1394에서는, 모든 노드가 루트가 될 가능성이 있다.
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)는 이하의 관리 기능을 갖는다.
첫째로, 동기 전송에 필요한 각종 리소스를 제공한다. 예를 들면, 채널 번호 레지스터나 대역 폭 레지스터를 제공한다. 둘째로, 버스 매니저의 1D를 나타내는 레지스터를 제공한다. 세째로, 버스 매니저가 없을 경우에, 간이적인 버스 매니저가 되는 역할을 갖는다.
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를 사용하여, IEEE 1394의 프로토콜 구성(층 구조)에 대해서 설명한다.
IEEE 1394의 프로토콜은 물리층, 링크층, 트랜잭션층에 의해 구성된다. 또, 시리얼 버스 매니지먼트는 물리층, 링크층, 트랜잭션층을 모니터하거나 제어하거나 하는 것으로, 노드 제어나 버스의 리소스 관리를 위한 각종 기능을 제공한다.
물리층은 링크층에 의해 사용되는 로컬 심볼을 전기 신호로 변환하거나, 버스 조정을 행하거나, 버스의 물리적 인터페이스를 정의한다.
링크층은 어드레싱, 데이터 체크, 데이터 프레이밍, 사이클 제어 등을 제공한다.
트랜잭션층은 리드, 라이트, 록 등의 트랜잭션을 행하기 위한 프로토콜을 정의한다.
물리층 및 링크층은 통상 데이터 전송 제어 장치(인터페이스 칩) 등의 하드웨어에 의해 실현된다. 또, 트랜잭션층은 CPU 상에서 동작하는 펌 웨어나 하드웨어에 의해 실현된다.
2. 전체 구성
다음으로, 본 실시예의 전체 구성에 대해서 도 6을 사용하여 설명한다.
도 6에 있어서, PHY 인터페이스(10)는 물리층의 프로토콜을 실현하는 PHY 칩과의 인터페이스를 행하는 회로이다.
링크 코어(20)(링크 수단)는 링크층의 프로토콜이나 트랜잭션층의 프로토콜 일부를 실현하는 회로로, 노드 사이에서의 패킷 전송을 위한 각종 서비스를 제공한다. 레지스터(22)는 이들 프로토콜을 실현한 링크 코어(20)를 제어하기 위한 레지스터이다.
FIFO(ATF)(30), FIFO(ITF)(32), FIFO(RF)(34)는 각각 비동기 송신용, 동기 송신용, 수신용 FIFO로, 예를 들면 레지스터나 반도체 메모리 등의 하드웨어에 의해 구성된다. 본 실시예에서는, 이들 FIFO(30, 32, 34)의 단수는 대단히 적다. 예를 들면 1개의 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)와 달리 대단히 단수가 많은 것이 된다(예를 들면 1개의 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)의 데이터에 헤더를 부가함으로써 IEEE 1394에 준거한 패킷을 생성한다. 그리고 생성된 패킷은 데이터 전송 제어 장치(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(904, 906)에 송신 패킷을 입력해야만 한다. 예를 들면, 패킷(1)(헤더(1), 데이터(1)), 패킷(2)(헤더(2), 데이터(2)), 패킷(3)(헤더(3), 데이터(3))을 송신할 경우에는, 헤더(1), 데이터(1), 헤더(2), 데이터(2), 헤더(3), 데이터(3)와 같은 순서로 FIFO(904, 906)에 송신 패킷을 입력해야만 한다. 따라서, CPU(912)에 의한 나열 전환 처리가 필요해져, CPU(912)의 처리 부하가 대단히 무거워진다. 이것은 결국, 시스템 전체의 실전송 속도 저하라는 사태를 초래한다.
이에 대해, 도 6의 본 실시예에서는, RAM(80)의 기억 영역이 헤더 영역과 데이터 영역으로 분리된다. 보다 구체적으로는, 도 12에 도시하는 바와 같이, 헤더 영역에 격납된 헤더와 데이터 영역에 격납된 데이터가 하드웨어에 의해 결합되며, 각 노드에 전송해야 할 송신 패킷이 조립된다. 따라서, CPU(66)의 처리 부하가 도 8에 비해 대단히 가벼워져, 시스템 전체의 실전송 속도를 향상할 수 있다. 또, CPU(66)로서 염가인 것을 채용할 수 있음과 동시에 CPU(66)에 접속되는 버스도 저속인 것으로 되기 때문에, 데이터 전송 제어 장치나 전자기기의 소규모화, 저 코스트화를 도모할 수 있게 된다.
또, 본 실시예에 의하면, 헤더는 헤더 영역에 정리되어 격납되며, 데이터도 데이터 영역에 정리되어 격납된다. 따라서, 헤더나 데이터의 판독 처리나 기록 처리의 간단화를 도모할 수 있어, 처리의 오버헤드를 경감화할 수 있다. 예를 들면, 도 11의 수법으로 데이터 전송을 행할 경우에는, CPU(66)는 CPU 버스(96)를 통해 헤더 영역에만 액세스하여 헤더를 판독하거나 기록하거나 하는 것 만으로 데이터 전송을 제어할 수 있게 된다. 또, 애플리케이션층의 디바이스(124)는 데이터 영역의 데이터를 연속하여 버스(90)를 통해 판독하거나, 데이터를 연속하여 데이터 영역에 기록하거나 하는 것이 가능해진다.
그런데 본 실시예에 있어서의 패킷의 헤더와 데이터의 결합 처리는 보다 구체적으로는 예를 들면 이하와 같이 하여 실현한다.
즉, 도 13에 도시하는 바와 같이, 본 실시예에서는, DMAC(40)(광의로는 판독 수단) 내의 패킷 결합 회로(280)가 판독하여 어드레스(RADR)를 지정한다. 그리고, 패킷의 헤더(광의로는 제어 정보)를 랜덤 액세스 가능한 RAM(80)의 헤더 영역(광의로는 제어 정보 영역)으로부터 판독하여, 이 헤더와 쌍을 이루는 데이터를 RAM(80)의 데이터 영역으로부터 판독한다. 이렇게 하여, 헤더와 데이터가 결합되어, 송신 패킷이 조립된다. 그리고, 이 송신 패킷은 FIFO(30), 패킷 전송을 위한 각종 서비스를 제공하는 링크 코어(20) 및 PHY 칩을 통해 각 노드에 전송된다.
여기서, 헤더 작성 및 헤더 영역으로의 기록은 CPU(66)의 헤더 작성부(300)가 행한다. 또, 데이터 영역으로의 데이터 입력은 데이터 입력 지시부(302)로부터의 지시에 따르며, 예를 들면 애플리케이션층의 디바이스가 행한다. 또, 패킷의 송신 개시 명령은 송신 개시부(304)가 발행한다. 또한, 도 13의 헤더 작성부(300), 데이터 입력 지시부(302), 송신 개시부(304), 반복 회수 설정부(306)의 기능은 CPU(66)의 하드웨어와 펌 웨어에 의해 실현된다.
또한, 도 14에 도시하는 바와 같이, 헤더 영역의 각 헤더에는 데이터 영역으로부터의 데이터 판독 어드레스를 가리키는 데이터 포인터가 헤더 작성부(300)에 의해 부가되어 있다. 도 13에 도시하는 바와 같이, 패킷 결합 회로(280)는 헤더 영역으로부터 RDATA로서 판독된 헤더로부터 이 데이터 포인터를 취득하고, 취득한 데이터 포인터를 사용하여, 데이터 영역으로부터 데이터를 판독한다. 이렇게 함으로써, 패킷 결합 회로(280)의 판독 처리를 간소화할 수 있다.
도 8의 구성에서는, 송신하는 순서, 즉 헤더, 데이터 순서로 FIFO에 송신 패킷을 입력해야만 한다. 따라서, 도 15a에 도시하는 바와 같이, 우선 펌 웨어가 헤더 작성 및 기록을 행하고, 다음으로 애플리케이션층의 디바이스로부터의 데이터를 입력, 마지막으로 송신 개시를 명령한다는 패턴으로 밖에 패킷을 송신하지 못한다. 이 때문에, 처리 고속화를 실현하지 못한다.
한편, 본 실시예에서는, 도 15b에 도시하는 바와 같이, 애플리케이션층의 디바이스로부터의 데이터를 데이터 영역에 입력하고 있는 사이에 펌 웨어(헤더 작성부(300))는 헤더의 작성 처리 및 헤더 영역으로의 기록 처리를 행할 수 있다. 그리고, 펌 웨어(송신 개시부(304))는 데이터 입력 처리와 헤더의 기록 처리 양쪽이 종료한 것을 조건으로, 패킷의 송신 개시 명령을 발행한다. 이렇게 본 실시예에 의하면, 펌 웨어의 처리 부담을 각별히 경감할 수 있음과 동시에, 처리의 고속화를 도모할 수 있게 된다.
또한, 도 16a에 비교예에 있어서의 펌 웨어 처리의 플로 챠트 예를 도시하고, 도 16b에 본 실시예에 있어서의 펌 웨어 처리의 플로 챠트 예를 도시한다.
도 16a에서는, 펌 웨어는 헤더 작성 및 기록을 행한 후에(스텝(S1)), 데이터 입력을 지시하며(스텝(S2)), 마지막으로 송신 개시 명령을 발행한다(스텝(S3)).
한편, 도 16b에서는, 펌 웨어는 우선 데이터 입력 지시만을 행하며(스텝(S11)), 그 후, 헤더 작성 및 기록을 행한다(스텝(S12)). 그리고, 데이터 입력이 종료했는지의 여부를 판단하여(스텝(S13)), 종료한 경우에는 송신 개시 명령을 발행한다(스텝(S14)). 이렇게 함으로써, 데이터의 입력 처리와 헤더 작성 및 기록 처리를 병렬로 행할 수 있게 된다.
또한, 본 실시예에서는 도 17에 도시하는 바와 같이, RAM(80)의 헤더 영역을 수신용, 송신용 영역으로 분리하는 것이 바람직하다. 또, 데이터 영역을 수신용, 송신용 영역으로 분리하거나, 동기 전송용, 비동기 전송용 영역으로 분리하도록 해도 된다. 또, 헤더 영역과 데이터 영역 외에, 이들 영역으로 분리된 CPU(66)의 워크 영역을 설치하는 것이 바람직하다.
더욱이, RAM(80)의 기억 영역이 다수의 영역으로 분리될 경우에는, 각 영역 사이즈를 가변 제어하는 것이 바람직하다. 보다 구체적으로는 도 17에 도시하는 바와 같이, 각 영역 경계의 어드레스를 가리키는 포인터(P1 내지 P6)를 가변 제어한다. 이렇게 하면, 애플리케이션에 따른 최적 영역 분할을 실현할 수 있다. 이 경우, RAM(80)의 각 영역 사이즈는 전원 투입 후도 다이내믹하게 가변 제어할 수 있는 것이 바람직하다. 이렇게 하면, 수신 처리 시에는 수신용 영역을 넓게 하고, 송신 처리 시에는 송신용 영역을 넓게 하는 것이 가능해져, 한정된 리소스를 유효 이용할 수 있게 된다.
그런데, 도 18a에서는, RAM에 설치되는 송신 패킷 영역이 1개의 채널 밖에 갖고 있지 않다. 따라서, 도 18a에서는, 우선, 이 한 채널에 패킷(1)을 기록(헤더 작성 및 기록, 데이터 입력), 기록이 완료하면 패킷(1)의 송신 개시를 명령한다. 다음으로, 동일 채널에 패킷(2)을 기록, 기록이 완료하면 패킷(2)의 송신 개시를 명령하게 된다.
이에 대해, 도 18b에서는, RAM의 송신 패킷 영역이 다수의 채널로 분리되어 있다. 따라서, 도 18b에서는, 우선 채널(CH1)에 패킷(1)을 기록, 기록이 완료하면 패킷(1)의 송신 개시를 명령한다. 그리고, CH1로부터 패킷(1)을 송신하고 있는 사이에, 채널(CH2)에 패킷(2)을 기록, 기록이 완료하면 패킷(2)의 송신 개시를 명령한다. 마찬가지로, CH2로부터 패킷(2)을 송신하고 있는 사이에, CH3에 패킷(3)을 기록, CH3으로부터 패킷을 송신하고 있는 사이에, CH4에 패킷(4)을 기록한다.
도 18a에서는, 패킷의 기록 처리와 송신 처리가 시퀀셜하게 행해지기 때문에, 처리 시간에 낭비가 생긴다. 이에 대해, 도 18b에서는, 한 채널로부터의 패킷의 송신 처리(판독 처리)와, 다른 채널로의 패킷의 기록 처리가 병렬로 행해진다. 따라서, 처리 시간 낭비를 생략할 수 있어, 처리 고속화를 도모할 수 있다.
다음으로, 다수 채널을 사용한 패킷 송신의 상세함에 대해서, 도 19, 도 20a, 도 20b, 도 21a, 도 21b를 사용하여 설명한다.
도 19에 도시하는 SUB1, SUB2, SUB3, SUB4는 각각 도 20a, 도 20b, 도 21a, 도 21b에 도시하는 서브 루틴(1, 2, 3, 4)을 나타내는 것이다. 그리고, 이들 SUB1 내지 SUB4는 모두 1개의 메인 루틴으로부터 분기한다.
우선, 도 19의 E1에 도시하는 바와 같이 채널(CH1)에 있어서 SUB1 처리가 행해진다. SUB1 처리에서는, 도 20a에 도시하는 바와 같이, 데이터 입력 중 플래그가 셋되어 있는지의 여부를 판단하여(스텝(T11)), 셋되어 있지 않을 경우에는 데이터 영역에 갭이 있는지의 여부를 조사한다(스텝(T12)). 그리고, 갭이 있을 경우에는, 데이터 입력을 지시한다(스텝(T13)). 이로써, 애플리케이션층의 디바이스 등으로부터 RAM에 데이터가 입력된다. 그리고, 데이터 입력 지시 후, 데이터 입력 중 플래그를 셋한다(스텝(T14)).
SUB2 처리에서는, 도 20b에 도시하는 바와 같이, 우선 데이터 입력 중 플래그가 셋되어 있는지의 여부를 판단한다(스텝(T21)). 그리고, 도 19의 E2에서는, E1의 SUB1의 스텝(T14)(도 20a)에 있어서 데이터 입력 중 플래그가 셋되어 있다. 따라서, 다음 스텝으로 이행하여, 데이터 입력이 종료하고 있는지의 여부를 판단한다(스텝(T22)). 그리고, 도 19의 E2에서는, 데이터 입력이 종료하고 있기 때문에, 다음 스텝으로 이행하여, 채널(CH1)의 송신 가능 플래그를 셋한다(스텝(T23)). 이 송신 가능 플래그는 상술한 데이터 입력 중 플래그나 후술하는 송신 중 플래그와 달리 채널마다 설치된다. 송신 가능 플래그를 셋한 후, 데이터 입력 중 플래그를 클리어한다(스텝(T24)).
SUB3 처리에서는, 도 21a에 도시하는 바와 같이, 우선, 송신 중 플래그가 셋되어 있는지의 여부를 판단하여(스텝(T31)), 셋되어 있지 않을 경우에는 송신 가능 플래그가 셋되어 있는지의 여부를 판단한다(스텝(T32)). 그리고, 도 19의 E3에서는, E2의 SUB2의 스텝(T23)(도 20b)에 있어서, 송신 가능 플래그가 셋되어 있다. 따라서, 다음 스텝으로 이행하여, 송신 개시를 명령한다(스텝(T33)). 그리고, 송신 개시 명령 후에, 송신 중 플래그를 셋한다(스텝(T34)).
SUB4 처리에서는, 도 21b에 도시하는 바와 같이, 우선, 송신 중 플래그가 셋되어 있는지의 여부를 판단한다(스텝(T41). 그리고, 도 19의 E4에서는, E3의 SUB3의 스텝(T34)(도 21a)에 있어서 송신 중 플래그가 셋되어 있다. 따라서, 다음 스텝으로 이행하여, 송신이 종료하고 있는지의 여부를 판단한다(스텝(T42)). 그리고, 도 19의 E4에서는, 송신이 이미 종료하고 있기 때문에, 다음 스텝으로 이행하여, 송신 가능 플래그 및 송신 중 플래그를 클리어한다(스텝(T43, T44)).
도 19의 E2의 SUB2에서는, 도 20b의 스텝(T22, T23)에 도시하는 바와 같이, 데이터 입력이 종료한 것을 조건으로, 그 채널의 송신 가능 플래그가 셋된다. 그리고, E3의 SUB3에서는, 도 21a의 스텝(T32, T33)에 도시하는 바와 같이, 송신 가능 플래그가 셋된 것을 조건으로, 그 채널로부터의 송신이 개시된다. 즉, 이러한 송신 가능 플래그를 채널마다 설치함으로써, 그 채널의 데이터 입력이 종료한 것을 조건으로 그 채널 송신을 개시할 수 있게 된다.
또, 도 19의 E2의 SUB2는 도 20b의 스텝(T22, T24)에 도시하는 바와 같이, 데이터 입력이 종료한 것을 조건으로 데이터 입력 중 플래그를 클리어한다. 그리고, 이렇게 데이터 입력 중 플래그가 클리어되면(셋되어 있지 않으면), E5의 SUB1이 데이터 입력을 지시할 수 있게 된다(도 20a의 스텝(T11, T13)). 즉, 이러한 데이터 입력 중 플래그를 사용함으로써, 한 채널의 데이터 입력 처리가 행해지고 있는 사이에 다른 채널의 데이터 입력 처리가 행해져버린다는 사태를 회피할 수 있다.
또, 도 19의 E6의 SUB4는 도 21b의 스텝(T42, T44)에 도시하는 바와 같이, 송신이 종료한 것을 조건으로 송신 중 플래그를 클리어한다. 그리고, 이렇게 송신 중 플래그가 클리어되면(셋되어 있지 않으면), E7의 SUB3이 송신 개시를 명령할 수 있게 된다(도 21a의 스텝(T31, T33)). 즉, 이러한 송신 중 플래그를 사용함으로써, 한 채널의 송신 처리가 행해지고 있는 사이에 다른 채널의 송신 처리가 행해져버린다는 사태를 회피할 수 있다.
이상과 같이 함으로써, 메인 루틴과 서브 루틴(SUB1 내지 SUB4)으로 이루어지는 1개의 프로그램(펌 웨어)을 사용하여, 다수 채널로부터의 패킷의 송신 처리를 멀티태스크와 같이 실행할 수 있게 된다.
또한, 다수 채널을 사용한 패킷 전송에 있어서는, 각 패킷이 패킷끼리를 연결하기 위한 연결 포인터를 갖는 것이 바람직하다. 예를 들면 도 22a에서는, 연결 포인터(1, 2, 3)에 의해 각각 패킷(1 및 3, 2 및 4, 3 및 2)이 연결된다. 그리고, 패킷(1)의 송신 개시가 명령되면, 연결 포인터(1)에 의해 패킷(3)이 판독되고, 도 22b에 도시하는 바와 같이 패킷(3)이 송신된다. 그리고, 패킷(3)이 송신되면, 연결 포인터(3)에 의해 패킷(2)이 판독되고, 도 22c에 도시하는 바와 같이 패킷(2)이 송신된다. 그리고, 패킷(2)이 송신되면, 연결 포인터(2)에 의해 패킷(4)이 판독되고, 도 22d에 도시하는 바와 같이 패킷(4)이 송신된다.
이렇게 하면, 펌 웨어가 1인 채널 패킷의 송신 개시를 명령하는 것 만으로, 다른 채널의 패킷이 연속하여 순차 판독되고 송신되게 된다. 따라서, 펌 웨어는 다른 채널의 패킷에 대해서는 송신 개시를 명령할 필요가 없어진다. 이 결과, 펌 웨어의 처리 부담을 각별히 경감할 수 있다.
그런데, IEEE 1394에서는, 도 1a에서 설명한 바와 같이, 소스 노드가 패킷을 전송하면, 데스티네이션 노드는 소스 노드에 ACK 코드를 돌려 준다. 이 경우, 이 ACK 코드 내용을 소스 노드의 펌 웨어가 확인할 수 있도록 어떠한 기억 수단에 격납해두는 것이 바람직하다. 그리고, 도 23a에서는, 패킷(1)의 송신에 대해 돌아온 4비트의 ACK 코드를 4비트의 레지스터(940)에 격납하고 있다. 그리고, 패킷(2) 송신에 대해 ACK 코드가 돌아온 경우에는, 이 패킷(2)에 대한 ACK 코드를 레지스터(940)에 표서한다. 즉, 레지스터(940)의 ACK 코드는 늘 최신의 것으로 갱신된다.
그렇지만, 도 23a의 수법에서는, 다수의 패킷을 연속하여 송신한 경우에, 어떤 패킷의 ACK 코드가 레지스터(940)에 격납되어 있는 것인지를 모르게 된다. 레지스터(940)에는 1개의 ACK 코드 밖에 격납할 수 없기 때문이다.
이 문제를 회피하는 한 수법으로서, 패킷(1)의 송신에 대해 돌아온 ACK 코드를 펌 웨어가 레지스터(940)로부터 판독하여 확인한 후에 패킷(2)의 송신 개시를 명령한다는 수법을 생각할 수 있다. 그렇지만, 이 수법에서는, 펌 웨어는 패킷(1)의 ACK 코드가 돌아올 때까지, 패킷(2)의 송신 개시 명령 발행을 기다려야만 하게 된다. 이 때문에, 처리 고속화가 방해된다. 특히, 도 18b와 같이 다수 채널을 사용하여 패킷을 송신할 경우에, 다수 채널을 갖는 것의 이점을 살릴 수 없게 된다.
그래서, 도 23b에서는, 패킷의 전송처(데스티네이션 노드)로부터 반송되어 오는 ACK 코드(승인 정보)를 송신 패킷 영역의 다수의 채널 중 그 패킷의 송신원 채널로 귀환 기록하도록 하고 있다. 즉, 도 23b에 도시하는 바와 같이, 채널(CH1)의 패킷(1)의 송신에 대해 돌아온 ACK 코드는 CH1로 귀환 기록되며, 채널(CH2)의 패킷(2)의 송신에 대해 돌아온 ACK 코드는 CH2로 돌아간다.
이렇게 함으로써, 각 패킷과 반송되어 온 ACK 코드가 1대 1로 대응하게 되어, 어느 패킷에 대해 어느 ACK 코드가 돌아왔는지를 펌 웨어는 간단하고 또한 확실하게 확인할 수 있게 된다.
또, 도 23c에 도시하는 바와 같이, 펌 웨어가 패킷(1) 송신에 대해 돌아 오는 ACK 코드를 확인하지 않고서 패킷(2)의 송신 개시를 명령하여, 그 후에, 돌아온 ACK 코드를 확인하도록 할 수도 있다. 즉, 송신 준비(헤더 생성 및 기록, 데이터 입력)가 갖추어진 단계에서 곧 송신 개시를 명령하여, 비어 있는 시간을 가늠하여, 나중에 ACK 코드를 확인하도록 한다. 이렇게 함으로써, 더한 처리 고속화를 도모할 수 있게 된다.
또한, 하드웨어의 간소화, 펌 웨어 처리 부담 경감화, 처리 고속화 관점으로부터는 도 23b, 도 23c와 같이 패킷의 ACK 코드를 송신원 채널로 귀환 기록하는 수법을 채용하는 것이 특히 바람직하다. 그렇지만, 본 실시예는 도 23b, 도 23c의 수법에 한정되는 것은 아니다. 즉, 패킷의 전송처로부터 반송되어 오는 ACK 코드를 반송되어 오는 ACK 코드를 확인하지 않고서 연속 전송할 수 있는 패킷수 이상의 개수만큼 기억할 수 있는 수단이 있으면 된다. 예를 들면, ACK 코드를 확인하지 않고서 연속 전송할 수 있는 패킷수가 4개일 경우에는, 4개 이상의 ACK 코드를 기억할 수 있는 레지스터(16비트 이상의 레지스터)를 준비한다. 그리고, 바람직하게는, 어떠한 순서로 ACK 코드가 돌아온 것인지를 확인할 수 있도록 해둔다. 이렇게 하면, 패킷을 연속 전송한 경우에도, 패킷과 ACK 코드와의 대응 관계를 유지해두는 것이 가능해진다.
그런데, 도 24a에서는, 패킷(1)(헤더(1), 데이터(1))을 RAM에 기록, 그 송신 개시를 명령하고, 패킷(2)(헤더(2), 데이터(2))을 기록, 그 송신 개시를 명령하며, 패킷(3)(헤더(3), 데이터(3))을 기록, 그 송신 개시를 명령한다는 패킷(1, 2, 3)을 송신하고 있다.
그렇지만, 패킷(1, 2, 3)이 동종의 패킷으로, 헤더(1, 2, 3)가 동일한 것일 경우(예를 들면 큰 사이즈의 데이터를 다수의 페이 로드로 분할하여 송신할 경우)에는, 도 24a의 수법에서는, 펌 웨어의 헤더 작성 처리가 낭비임과 동시에, RAM의 기억 영역도 쓸데 없이 사용되어버린다. 또, 패킷(1, 2, 3)을 송신하기 위해, 펌 웨어는 3회의 송신 개시 명령을 발행해야만 한다. 따라서, 도 24a에서는, 펌 웨어의 처리 부담이 무거워짐과 동시에, 한정된 리소스를 유효 이용하지 못한다.
이에 대해, 도 24b에서는, 도 13의 헤더 작성부(300)(펌 웨어)가 기본이 되는 헤더를 1개 작성한다. 이 기본 헤더는 도 24b에 도시하는 바와 같이 데이터 포인터, RPN, t1 등을 포함한다.
여기서, 데이터 포인터는 데이터 영역으로부터 판독되는 데이터의 어드레스를 가리키는 것이다. 또, RPN은 도 13의 반복 회수 설정부(306)에 의해 설정되는 송신 반복 회수 정보이다. 또, t1(트랜잭션 레이블)은 각 노드로부터의 트랜잭션을 식별하기 위한 정보로서 IEEE 1394에서 규격화되어 있는 것이다. 응답 측은 요구 측으로부터의 패킷에 포함되는 트랜잭션 레이블과 동일한 것을 응답 측 패킷에 포함시켜, 요구 측에 돌려줄 필요가 있다. 따라서, 각 트랜잭션마다 t1의 재기록 처리가 필요해진다.
도 13의 송신 개시부(304)가 송신 개시를 명령하면, 헤더 재기록 회로(310)가 도 24b에 도시하는 바와 같은 기본 헤더를 순차 재기록한다. 즉, 기본 헤더의 RPN을 디크리먼트 또는 인크리먼트(광의로는 갱신)하면서 기본 헤더의 데이터 포인터나 t1을 재기록한다. 이 재기록은 RPN이 예를 들면 0(주어진 값)이 될 때까지 행해진다. 이렇게 기본 헤더를 재기록함으로써, 연속 전송되는 패킷의 데이터와 쌍을 이루는 헤더가 패킷을 송신할 때마다 순차 작성된다. 이렇게 함으로써, 도 24a에 비해, 펌 웨어의 처리 부담을 각별히 경감할 수 있음과 동시에, 헤더가 점유하는 기억 영역의 크기도 작게 할 수 있다.
예를 들면, 도 24a의 수법에서는, 도 25a에 도시하는 바와 같이, 패킷을 송신할 때마다 펌 웨어는 헤더 작성 및 기록과, 송신 개시 명령을 행해야만 한다. 이에 대해, 도 24b의 수법에서는, 도 25b, 도 26에 도시하는 바와 같이, 펌 웨어는 처음에 RPN 설정(스텝(U1))과 기본 헤더 작성 및 기록(스텝(U2))을 행하고, 송신 개시를 명령하면(스텝(U3)), 그 후는 자동적으로 기본 헤더가 재기록되어, 데이터 입력, 송신이 반복된다. 따라서, 도 25a에 비해 펌 웨어의 처리 부담을 경감할 수 있다.
또한, 송신 반복 회수 정보(RPN)를 기본 헤더에 포함시키지 않고, 소정의 레지스터 등에 격납하도록 해도 된다.
3.2 구성
다음으로 송신 측 구성에 대해서 설명한다. 도 27에 FIFO(30), DMAC(40)의 상세한 구성의 일례를 도시한다.
위상 조정용 버퍼로서 기능하는 FIFO(30)는 FIFO 상태 판단 회로(31)를 포함한다. FIFO 상태 판단 회로(31)는 FIFO가 0이 되면, EMPTY를 액티브하게 하고, FIFO가 풀이 되면, FULL을 액티브하게 한다.
DMAC(40)는 패킷 결합 회로(280), 액세스 요구 실행 회로(290), 액세스 요구 발생 회로(292), ACK 기록 요구 발생 회로(294), ACK 기록 데이터 & 어드레스 발생 회로(296)를 포함한다.
패킷 결합 회로(280)는 헤더를 RAM(80)의 헤더 영역으로부터 판독하고, 데이터를 데이터 영역으로부터 판독하며, 이들 헤더와 데이터에 의해 프레임이 구성되는 송신 패킷을 조립하는 회로이다(도 12 참조). 패킷 결합 회로(280)는 포인터 갱신 회로(284), 어드레스 발생 회로(288)를 포함한다.
포인터 갱신 회로(284)는 RAM(80)으로부터 헤더나 데이터를 판독하기 위한 헤더 포인터(광의로는 제어 정보 포인터)나 데이터 포인터를 갱신하기 위한 회로로, 데이터 포인터 취득 회로(285)를 포함한다. 데이터 포인터 취득 회로(285)는 RAM(80)으로부터 판독된 RDATA로부터 데이터 포인터를 취득하는 회로로, tcode 판별 회로(286)를 포함한다. tcode 판별 회로(286)는 tcode(트랜잭션 코드. 광의로는 패킷 포맷 식별 정보)를 판별하는 회로로, 이 tcode를 판별함으로써, 패킷의 헤더와 데이터 중 어느 하나가 판독되고 있는지를 판단할 수 있다.
어드레스 발생 회로(288)는 포인터 갱신 회로(284)의 출력 등을 받아, RAM(80)의 판독 어드레스(RADR)를 발생하는 회로이다.
액세스 요구 실행 회로(290)는 FIFO 상태 판단 회로(31)로부터의 EMPTY가 액티브해지면, FIFOIN을 액티브하게 한다. 링크 코어(20)는 FIFOIN이 액티브하지 않는 것을 조건으로, TD(TxData)의 스트로브 신호인 TDS를 액티브하게 한다.
또한, TFAIL은 송신에 있어서의 실패를 링크 코어(20)가 액세스 요구 실행 회로(290)에 대해 알리기 위한 신호이다.
액세스 요구 발생 회로(292)는 버퍼 매니저(70)로부터의 판독 승인인 RACK나 FIFO 상태 판단 회로(31)로부터의 FULL을 받아, 판독 요구인 RREQ를 버퍼 매니저(70)에 출력한다.
ACK 기록 요구 발생 회로(294)는 링크 코어(20)로부터의 TCMP나 버퍼 매니저(70)로부터의 WACK를 받아, WREQ를 버퍼 매니저(70)에 출력한다. 또, ACK 기록 데이터 & 어드레스 발생 회로(296)는 링크 코어(20)로부터의 TACK를 받아, 송신 패킷의 채널에 귀환 기록하는 ACK 코드를 WDATA로서 출력하여, ACK를 귀환 기록하는 어드레스를 WADR로서 출력한다.
3.3 송신측 동작
다음으로, 송신 측 동작의 상세함에 대해서 도 28의 타이밍 파형도 등을 사용하여 설명한다.
우선, 링크 코어(20)의 동작에 대해서 설명한다.
송신 개시를 알리는 TSTART가 액티브해지면, 도 28의 B1에 도시한 바와 같이, 링크 코어(20)는 스트로브 신호인 TDS를 사용하여 FIFO(30)로부터 TD를 입력한다. 이 경우, 링크 코어(20)에는 헤더(H0 내지 H3), 데이터(D0 내지 Dn) 순으로 TD가 입력된다.
또한, 도 29a에 시리얼 버스 상에서 전송되는 비동기 패킷의 포맷(IEEE 1394 규격)을 도시한다. 한편, 도 29b에 RAM(80)의 헤더 영역에 격납되는 비동기 송신 패킷의 헤더 부분의 포맷을 도시한다. 동일 도면에 도시하는 바와 같이 헤더의 제 4 쿼드라트는 데이터 포인터가 되어 있다.
그런데, 도 28의 B2에 도시하는 위치에서는, 링 코어(20)는 TDS를 액티브하지 않는다. 따라서, B3에 도시하는 바와 같이, 헤더의 제 4 쿼드라트인 H4는 링크 코어(20)에 입력되지 않는다. 도 29b에 도시하는 바와 같이 제 4 쿼드라트인 H4는 데이터 포인터로, 링크 코어(20)는 이 데이터 포인터를 필요로 하지 않기 때문이다. 그리고, 링크 코어(20)는 B3에 도시하는 기간에 있어서, 헤더(CRC)(도 29a 참조)를 생성하여 헤더에 부가하는 처리를 행하고 있다.
하나의 패킷 송신 처리가 종료하면, 링크 코어(20)는 B4에 도시하는 바와 같이 TCMP를 액티브하게 한다. 그리고, 송신의 데스티네이션 노드로부터 PHY 칩을 통해 돌아온 ACK 코드를(도 1a, 도 23b, 도 23c 참조), B5에 도시하는 바와 같이 TACK로서 DMAC(40)에 출력한다. 이 ACK 코드는 ACK 기록 요구 발생 회로(294), ACK 기록 데이터 & 어드레스 발생 회로(296)에 의해, RAM(80)의 헤더 영역의 헤더로 귀환 기록되게 된다(도 29b의 제 7 쿼드라트).
다음으로, FIFO(30)의 동작에 대해서 설명한다.
FIFO(30)는 버퍼 매니저(70)로부터의 RDATA를 받아, TD로서 링크 코어(20)에 출력한다.
FIFO(30) 내의 FIFO 상태 판단 회로(31)는 내장하는 카운터에 의해, FIFO(30)의 데이터수(FIFO 카운트)를 카운트한다. 그리고, FIF0(30)가 0(데이터수=0)이 된 경우에는, 도 28의 B6에 도시하는 바와 같이 EMPTY를 액티브하게 한다. 또, FIFO(30)가 풀(데이터수=2)이 된 경우에는, B7에 도시하는 바와 같이 FULL을 액티브(H레벨)하게 한다. FIFO(30)가 0이 된 것은 EMPTY, FIFOIN에 의해, DMAC(40) 내의 액세스 요구 실행 회로(290)나 링크 코어(20)에 전해진다. 또, FIF0(30)가 풀이 된 것은 FULL 에 의해 DMAC(40) 내의 액세스 요구 발생 회로(292)에 전해진다.
다음으로, DMAC(40)의 동작에 대해서 설명한다.
액세스 요구 발생 회로(292)는 B8에 도시하는 바와 같이, FULL이 비액티브(L레벨)인 것(FIFO(34)가 풀이 아닌 것)을 조건으로 RREQ를 액티브하게 한다. 그리고, 버퍼 매니저(70)로부터 RACK를 받아들이면, RREQ를 비액티브하게 한다.
또한, 본 실시예에서는, 송신 시의 버스 조정에 있어서는, DMAC(40)(혹은 DMAC(42))로부터의 액세스 요구의 우선 순위를 가장 높게 하고 있다. 따라서, DMAC(40)로부터의 RREQ와, CPU 인터페이스(60)나 포트용 DMAC(54)로부터의 액세스 요구(Other RREQ)가 경합한 경우에는, RREQ 쪽이 우선한다. 한편, RREQ보다도 먼저, CPU 인터페이스(60)나 포트용 DMAC(54)로부터의 액세스 요구가 있는 경우에는, B9에 도시하는 바와 같이, DMAC(40)의 액세스 요구는 주어진 기간만큼 기다리게 된다. 따라서, 버퍼 매니저(70)로부터의 RDATA와, 링크 코어(20)로의 TD와는 동기하지 않는다. 이 이유에 의해, 본 실시예에서는, RDATA와 TD 위상을 조정하기 위한 FIFO(30)를 설치하고 있다. 이 경우, FIFO(30)는 위상 조정을 위해 필요한 최저한의 단수(바람직하게는 3단 이하, 더욱 바람직하게는 2단 이하)를 구비하고 있으면 된다.
그런데, 송신이 개시하면, 포인터 갱신 회로(284)가 도 30a에 도시하는 바와 같이 헤더 포인터(HP)의 인크리먼트(광의로는 갱신)를 행한다. 그리고, 어드레스 발생 회로(288)는 도 28의 B10에 도시하는 바와 같이, 인크리먼트되는 헤더 포인터에 따른 RADR을 발생한다. 이렇게 하여, RDATA의 헤더 부분이 RAM(80)으로부터 순차 판독된다.
RDATA로서 H4가 판독되면, 패킷 결합 회로(280)에 포함되는 데이터 포인터 취득 회로(285)가 이 H4를 데이터 포인터(DP)로서 취득한다. 보다 구체적으로는, RDATA로서 H0이 판독되면, 데이터 취득 회로(285) 내의 tcode 판별 회로(286)가 H0에 포함되는 tcode(도 29b 참조)를 판별한다. 그리고, 헤더의 예를 들면 제 4 쿼드라트에 데이터 포인터가 있으면 tcode(광의로는 패킷 포맷 식별 정보)에 근거하여 판단된 경우에는, RDATA로서 H4가 판독되었을 때에, 데이터 포인터 취득 회로(285)가 이 H4를 취득한다. 즉, 도 28의 B11에 도시하는 바와 같이, RDATA의 H4가 데이터 포인터로서 취득되어, RADR로서 출력된다.
또한, 본 실시예에서는, B3, B11에 도시하는 바와 같이, 링크 코어(20)가 헤더(CRC)를 생성하고 있는 기간을 이용하여, RDATA로부터 데이터 포인터인 H4를 취득하고 있다. 즉, 본 실시예에서는, 헤더(CRC) 생성은 링크 코어(20)가 행하여, DMAC(40)는 이에 관여하지 않는다. 한편, 데이터 포인터 취득은 DMAC(40)가 행하여, 링크 코어(20)는 이에 관여하지 않는다. 본 실시예에서는, 이것에 착안하여, 도 29a에 있어서 헤더(CRC)가 배치되는 제 4 쿼드라트에 도 29b에 도시하는 바와 같이 데이터 포인터를 배치하고 있다. 그리고, 헤더(CRC)가 생성되는 기간을 이용하여, RDTA로부터 데이터 포인터인 H4를 취득하도록 하고 있다. 이렇게 함으로써, 처리 시간에 쓸데 없이 생기는 것을 방지할 수 있게 된다.
데이터 포인터가 취득되면, 포인터 갱신 회로(284)가 도 30b에 도시하는 바와 같이, 취득된 데이터 포인터인 H4의 인크리먼트를 행한다. 그리고, 어드레스 발생 회로(288)는 도 28의 B12에 도시하는 바와 같이, 인크리먼트되는 데이터 포인터에 따른 RADR을 발생한다. 이렇게 하여, RDATA의 데이터 부분이 RAM(80)으로부터 순차 판독된다.
하나의 패킷 송신 처리가 종료하여, B4에 도시하는 바와 같이 TCMP가 액티브해지면, ACK 기록 요구 발생 회로(294)가 B13에 도시하는 바와 같이 WREQ을 액티브하게 한다. 그리고, 링크 코어(20)로부터 ACK 기록 데이터 & 어드레스 발생 회로(296)에 대해 TACK를 사용하여 보내진 ACK 코드가 B14에 도시하는 바와 같이 WDATA로서 출력된다. 또, 이 때에, ACK 코드의 기록 어드레스인 HP+7이 WADR로서 출력된다. 이렇게 함으로써, 도 23b, 도 23c에서 설명한 바와 같이, 패킷의 송신원 채널에 대해, 데스티네이션 노드로부터의 ACK 코드를 귀환 기록하는 것이 가능해진다.
또한, WADR이 HP+7이 되는 것은 도 29b에 도시하는 바와 같이 ACK 코드는 헤더의 제 7 쿼드라트로 귀환 기록되기 때문이다.
이상과 같이 하여, 헤더 영역으로부터의 헤더와 데이터 영역으로부터의 데이터를 결합하여, 송신 패킷을 조립하는 것이 가능해진다.
특히, 본 실시예에서는, 헤더와 데이터 결합은 DMAC(40)가 행하여, 링크(20)는 이에 관여할 필요가 없다. 따라서, 링크 코어(20)의 회로 구성이나 처리를 간소화할 수 있게 된다.
또, 본 실시예에서는, 데이터 포인터 취득 회로(285)가 RDATA로부터 데이터 포인트(H4)를 취득하고, 이 취득된 데이터 포인터에 근거하여 RADR이 발생하여, 데이터가 판독된다. 이렇게 함으로써, 그 헤더에 대응하는 데이터를 적절하게 결합할 수 있게 된다. 또, 헤더와 데이터 결합 처리에 필요한 회로 구성을 간소화할 수 있게 된다.
또한, 헤더 영역과 데이터 영역의 경계 등의 RAM(80)을 분리하는 영역의 경계(도 17의 P1 내지 P6) 설정은 CPU 인터페이스(60)를 통해 CPU(66)(펌 웨어 등)가 도 6의 레지스터(46)에 포함되는 포인터 설정 레지스터에 대해, 경계 어드레스를 가리키는 포인터를 설정함으로써 실현된다.
4. 전자기기
다음으로, 본 실시예의 데이터 전송 제어 장치를 포함하는 전자기기의 예에 대해서 설명한다.
예를 들면 도 31a에 전자기기의 하나인 프린터의 내부 블록도를 도시하며, 도 32a에 그 외곽도를 도시한다. CPU(마이크로 컴퓨터)(510)는 시스템 전체 제어 등을 행한다. 조작부(511)는 프린터를 사용자가 조작하기 위한 것이다. ROM(516)에는 제어 프로그램, 폰트 등이 격납되며, RAM(518)은 CPU(510)의 워크 영역으로서 기능한다. 표시 패널(519)은 프린터의 동작 상태를 사용자에게 알리기 위한 것이다.
PHY 칩(502), 데이터 전송 제어 장치(500)를 통해 퍼스널 컴퓨터 등의 다른 노드로부터 보내져 온 인자 데이터는 버스(504)를 통해 인자 처리부(512)에 직접 보내진다. 그리고, 인자 데이터는 인자 처리부(512)에서 주어진 처리가 실시되며, 프린트 헤더 등으로 이루어지는 인자부(데이터를 출력하기 위한 장치)(514)에 의해 종이에 인자되어 출력된다.
도 31b에 전자기기의 하나인 스캐너의 내부 블록도를 도시하며, 도 32b에 그 외관도를 도시한다. CPU(520)는 시스템 전체 제어 등을 행한다. 조작부(521)는 스캐너를 사용자가 조작하기 위한 것이다. ROM(526)에는 제어 프로그램 등이 격납되며, RAM(528)은 CPU(520)의 워크 영역으로서 기능한다.
광원, 광전 변환기 등으로 이루어지는 화상 판독부(데이터를 입력하기 위한 장치)(522)에 의해 원고 화상이 판독되고, 판독된 화상 데이터는 화상 처리부(524)에 의해 처리된다. 그리고, 처리 후의 화상 데이터가 버스(505)를 통해 데이터 전송 제어 장치(500)에 직접 보내진다. 데이터 전송 제어 장치(500)는 이 화상 데이터에 헤더 등을 부가함으로써 패킷을 생성하여, PHY 칩(502)을 통해 퍼스널 컴퓨터 등의 다른 노드에 송신한다.
도 31c에 전자기기의 하나인 CD-R 드라이브의 내부 블록도를 도시하며, 도 32c에 그 외관도를 도시한다. CPU(530)는 시스템 전체 제어 등을 행한다. 조작부(531)는 CD-R을 사용자가 조작하기 위한 것이다. ROM(536)에는 제어 프로그램 등이 격납되며, RAM(538)은 CPU(530)의 워크 영역으로서 기능한다.
레이저, 모터, 광학계 등으로 이루어지는 판독 & 기록부(데이터를 입력하기 위한 장치 또는 데이터를 기억하기 위한 장치)(533)에 의해 CD-R(532)로부터 판독된 데이터는 신호 처리부(534)에 입력되며, 에러 정정 처리 등의 주어진 신호 처리가 실시된다. 그리고, 신호 처리가 실시된 데이터가 버스(506)를 통해 데이터 전송 제어 장치(500)에 직접 보내진다. 데이터 전송 제어 장치(500)는 이 데이터에 헤더 등을 부가함으로써 패킷을 생성하여, PHY 칩(502)을 통해 퍼스널 컴퓨터 등의 다른 노드에 송신한다.
한편, PHY 칩(502), 데이터 전송 제어 장치(500)를 통해 다른 노드로부터 보내져 온 데이터는 버스(506)를 통해 신호 처리부(534)에 직접 보내진다. 그리고, 신호 처리부(534)에 의해 이 데이터에 주어진 신호 처리가 실시되고, 판독 & 기록부(533)에 의해 CD-R(532)에 기억된다.
또한, 도 31a, 도 31b, 도 31c에 있어서, CPU(510, 520, 530) 외에, 데이터 전송 제어 장치(500)에서의 데이터 전송 제어를 위한 CPU를 별도로 설치하도록 해도 된다.
본 실시예의 데이터 전송 제어 장치를 전자기기에 사용함으로써, 고속 데이터 전송이 가능해진다. 따라서, 사용자가 퍼스널 컴퓨터 등에 의해 프린트 아웃 지시를 행한 경우에, 적은 타임 레그로 인자가 완료하게 된다. 또, 스캐너로의 화상 입력 지시 후에, 적은 타임 레그로 판독 화상을 사용자는 볼 수 있게 된다. 또, CD-R로부터의 데이터 판독이나 CD-R로의 데이터 기록을 고속으로 행할 수 있게 된다. 더욱이, 예를 들면 하나의 호스트 시스템에 다수의 전자기기를 접속하여 이용하거나, 다수의 호스트 시스템에 다수의 전자기기를 접속하여 이용하거나 하는 것도 용이해진다.
또, 본 실시예의 데이터 전송 제어 장치를 전자기기에 사용함으로써, CPU 상에서 동작하는 펌 웨어의 처리 부하가 경감되어, 염가 CPU나 저속 버스를 사용하는 것이 가능해진다. 더욱이, 데이터 전송 제어 장치의 저 코스트화, 소규모화를 도모할 수 있기 때문에, 전자기기의 저코스트화, 소규모화도 도모할 수 있게 된다.
또한, 본 실시예의 데이터 전송 제어 장치를 적용할 수 있는 전자기기로서는 상기 이외에도 예를 들면, 각종 광 디스크 드라이브(CDROM, DVD), 광 자기 디스크 드라이브(MO), 하드 디스크 드라이브, TV, VTR, 비디오 카메라, 오디오 기기, 전화기, 프로젝터, 퍼스널 컴퓨터, 전자 수첩, 워드 프로세서 등 각종의 것을 생각할 수 있다.
또한, 본 발명은 본 실시예에 한정되지 않고, 본 발명의 요지의 범위 내에서 각종 변형 실시가 가능하다.
예를 들면, 본 발명의 데이터 전송 제어 장치 구성은 도 6에 도시하는 구성이 특히 바람직하지만, 이에 한정되는 것은 아니다. 예를 들면, 송신 패킷 영역을 다수 채널로 분리하는 발명에 있어서는, 기억 수단을 제어 정보 영역과 헤더 영역으로 분리하지 않도록 해도 된다. 또, 승인 정보를 확인하지 않고 연속 전송할 수 있는 패킷수 이상의 개수만큼 승인 정보를 기억해두는 발명에 있어서는, 도 6 뿐만 아니라 도 8 등의 각종 구성을 채용할 수 있다.
또, 본 발명은 IEEE 1394 규격에서의 데이터 전송에 적용되는 것이 특히 바람직하지만, 이에 한정되는 것은 아니다. 예를 들면 IEEE 1394와 동일한 사상에 근거하는 규격이나 IEEE 1394를 발전시킨 규격에 있어서의 데이터 전송에도 본 발명은 적용할 수 있다.

Claims (34)

  1. 버스에 접속되는 다수의 노드 사이에서의 데이터 전송을 위한 데이터 전송 제어 장치로서,
    랜덤 액세스 가능한 기억 수단이, 상층에 의해 제어 정보가 기록되어 있는 제어 정보 영역과 상층에 의해 데이터가 기록되어 있는 데이터 영역으로 분리되어 있을 경우에 있어서, 패킷의 제어 정보를 상기 기억 수단의 상기 제어 정보 영역으로부터 판독하여, 해당 제어 정보와 쌍을 이루는 패킷의 데이터를 상기 기억 수단의 상기 데이터 영역으로부터 판독하는 패킷 결합 수단과,
    판독된 패킷을 각 노드에 전송하기 위한 서비스를 제공하는 링크 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  2. 제 1 항에 있어서, 상기 패킷 결합 수단이,
    상기 데이터 영역으로부터 판독되는 데이터의 어드레스를 가리키는 데이터 포인터를 상기 제어 정보 영역으로부터 판독된 제어 정보로부터 취득하고, 취득한 데이터 포인터를 사용하여 상기 데이터 영역으로부터 데이터를 판독하는 것을 특징으로 하는 데이터 전송 제어 장치.
  3. 제 2 항에 있어서, 상기 패킷 결합 수단이,
    패킷 제어 정보의 에러 체크 정보를 상기 링크 수단이 생성하는 기간을 이용하여, 제어 정보로부터 데이터 포인터를 취득하는 것을 특징으로 하는 데이터 전송 제어 장치.
  4. 제 1 항에 있어서, 상기 패킷 결합 수단이,
    패킷 제어 정보가 판독되어 있으면, 패킷 제어 정보에 포함되는 패킷 포맷 식별 정보에 근거하여 판단한 경우에는, 상기 제어 정보 영역으로부터 판독되는 제어 정보 어드레스를 가리키는 제어 정보 포인터를 갱신하고, 패킷의 데이터가 판독되어 있으면, 상기 패킷 포맷 식별 정보에 근거하여 판단한 경우에는, 상기 데이터 영역으로부터 판독되는 데이터의 어드레스를 가리키는 데이터 포인터를 갱신하는 것을 특징으로 하는 데이터 전송 제어 장치.
  5. 제 2 항에 있어서, 상기 패킷 결합 수단이,
    패킷 제어 정보가 판독되어 있으면, 패킷 제어 정보에 포함되는 패킷 포맷 식별 정보에 근거하고 판단한 경우에는, 상기 제어 정보 영역으로부터 판독되는 제어 정보의 어드레스를 가리키는 제어 정보 포인터를 갱신하고, 패킷의 데이터가 판독되어 있으면, 상기 패킷 포맷 식별 정보에 근거하여 판단한 경우에는, 상기 데이터 영역으로부터 판독되는 데이터의 어드레스를 가리키는 데이터 포인터를 갱신하는 것을 특징으로 하는 데이터 전송 제어 장치.
  6. 제 3 항에 있어서, 상기 패킷 결합 수단이,
    패킷 제어 정보가 판독되어 있으면, 패킷 제어 정보에 포함되는 패킷 포맷 식별 정보에 근거하여 판단한 경우에는, 상기 제어 정보 영역으로부터 판독되는 제어 정보의 어드레스를 가리키는 제어 정보 포인터를 갱신하고, 패킷의 데이터가 판독되어 있으면, 상기 패킷 포맷 식별 정보에 근거하여 판단한 경우에는, 상기 데이터 영역으로부터 판독되는 데이터의 어드레스를 가리키는 데이터 포인터를 갱신하는 것을 특징으로 하는 데이터 전송 제어 장치.
  7. 제 1 항에 있어서, 상기 데이터 영역으로의 데이터 입력 처리 사이에, 제어 정보를 작성하여 해당 제어 정보를 상기 제어 정보 영역에 기록하는 제어 정보 작성 수단과,
    데이터의 입력 처리와 제어 정보의 기록 처리 양쪽이 완료한 것을 조건으로, 패킷의 송신 개시를 명령하는 송신 개시 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  8. 제 2 항에 있어서, 상기 데이터 영역으로의 데이터 입력 처리 사이에, 제어 정보를 작성하여 해당 제어 정보를 상기 제어 정보 영역에 기록하는 제어 정보 작성 수단과,
    데이터의 입력 처리와 제어 정보의 기록 처리 양쪽이 완료한 것을 조건으로, 패킷의 송신 개시를 명령하는 송신 개시 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  9. 제 3 항에 있어서, 상기 데이터 영역으로의 데이터 입력 처리 사이에, 제어 정보를 작성하여 해당 제어 정보를 상기 제어 정보 영역에 기록하는 제어 정보 작성 수단과,
    데이터의 입력 처리와 제어 정보의 기록 처리 양쪽이 완료한 것을 조건으로, 패킷의 송신 개시를 명령하는 송신 개시 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  10. 제 4 항에 있어서, 상기 데이터 영역으로의 데이터 입력 처리 사이에, 제어 정보를 작성하여 해당 제어 정보를 상기 제어 정보 영역에 기록하는 제어 정보 작성 수단과,
    데이터의 입력 처리와 제어 정보의 기록 처리 양쪽이 완료한 것을 조건으로, 패킷의 송신 개시를 명령하는 송신 개시 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  11. 버스에 접속되는 다수의 노드 사이에서의 데이터 전송을 위한 데이터 전송 제어 장치로서,
    랜덤 액세스 가능한 기억 수단의 송신 패킷 영역이 다수의 채널로 분리되어 있을 경우에 있어서, 상기 다수의 채널에 격납되는 패킷 중에서, 데이터의 입력 처리와 제어 정보의 기록 처리 양쪽이 완료한 패킷의 송신 개시를 명령하는 송신 개시 수단과,
    송신 개시가 명령된 패킷을 송신 패킷 영역이 대응하는 채널로부터 판독하는 판독 수단과,
    판독된 패킷을 각 노드에 전송하기 위한 서비스를 제공하는 링크 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  12. 제 11 항에 있어서, 상기 다수의 채널 중 한 채널로부터 패킷이 송신되고 있는 사이에, 다른 채널의 패킷에 대한 데이터 입력을 지시하는 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  13. 제 11 항에 있어서, 데이터 입력 중 플래그가 클리어되어 있는 것을 조건으로, 데이터 입력을 지시함과 동시에 해당 데이터 입력 중 플래그를 셋하여, 데이터 입력이 종료한 것을 조건으로, 해당 데이터 입력 중 플래그를 클리어하는 수단과,
    송신 중 플래그가 클리어되어 있는 것을 조건으로, 패킷의 송신 개시를 명령함과 동시에 해당 송신 중 플래그를 셋하여, 패킷 송신이 종료한 것을 조건으로, 해당 송신 중 플래그를 클리어하는 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  14. 제 12 항에 있어서, 데이터 입력 중 플래그가 클리어되어 있는 것을 조건으로, 데이터 입력을 지시함과 동시에 해당 데이터 입력 중 플래그를 셋하고, 데이터 입력이 종료한 것을 조건으로, 해당 데이터 입력 중 플래그를 클리어하는 수단과,
    송신 중 플래그가 클리어되어 있는 것을 조건으로, 패킷의 송신 개시를 명령함과 동시에 해당 송신 중 플래그를 셋하고, 패킷 송신이 종료한 것을 조건으로, 해당 송신 중 플래그를 클리어하는 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  15. 제 11 항에 있어서, 각 채널에 격납되는 각 패킷이 패킷끼리를 연결하기 위한 연결 포인터를 포함하며,
    상기 판독 수단이,
    상기 송신 개시 수단에 의해 한 채널 패킷의 송신 개시가 명령된 경우에, 상기 연결 포인터를 사용하여, 다른 채널의 패킷을 연속하여 순차 판독하는 것을 특징으로 하는 데이터 전송 제어 장치.
  16. 제 12 항에 있어서, 각 채널에 격납되는 각 패킷이 패킷끼리를 연결하기 위한 연결 포인터를 포함하며,
    상기 판독 수단이,
    상기 송신 개시 수단에 의해 한 채널 패킷의 송신 개시가 명령된 경우에, 상기 연결 포인터를 사용하여, 다른 채널 패킷을 연속하여 순차 판독하는 것을 특징으로 하는 데이터 전송 제어 장치.
  17. 제 13 항에 있어서, 각 채널에 격납되는 각 패킷이 패킷끼리를 연결하기 위한 연결 포인터를 포함하며,
    상기 판독 수단이,
    상기 송신 개시 수단에 의해 한 채널 패킷의 송신 개시가 명령된 경우에, 상기 연결 포인터를 사용하여, 다른 채널 패킷을 연속하여 순차 판독하는 것을 특징으로 하는 데이터 전송 제어 장치.
  18. 제 11 항에 있어서, 패킷 전송처로부터 반송되어 오는 승인 정보를 송신 패킷 영역의 다수의 채널 중 해당 패킷의 송신원 채널로 귀환 기록하는 귀환 기록 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  19. 제 12 항에 있어서, 패킷 전송처로부터 반송되어 오는 승인 정보를 송신 패킷 영역의 다수의 채널 중 해당 패킷의 송신원 채널로 귀환 기록하는 귀환 기록 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  20. 제 13 항에 있어서, 패킷 전송처로부터 반송되어 오는 승인 정보를 송신 패킷 영역의 다수의 채널 중 해당 패킷의 송신원 채널로 귀환 기록하는 귀환 기록 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  21. 제 15 항에 있어서, 패킷 전송처로부터 반송되어 오는 승인 정보를 송신 패킷 영역의 다수의 채널 중 해당 패킷의 송신원 채널로 귀환 기록하는 귀환 기록 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  22. 버스에 접속되는 다수의 노드 사이에서의 데이터 전송을 위한 데이터 전송 제어 장치로서,
    기억 수단에 기록한 패킷을 판독하는 판독 수단과,
    판독된 패킷을 각 노드에 전송하기 위한 서비스를 제공하는 링크 수단과,
    패킷 전송처로부터 반송되어 오는 승인 정보를, 반송되어 온 승인 정보를 확인하지 않고 연속 전송할 수 있는 패킷수 이상의 개수만큼 기억하는 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  23. 버스에 접속되는 다수의 노드 사이에서의 데이터 전송을 위한 데이터 전송 제어 장치로서,
    송신 반복 회수 정보를 설정하는 수단과,
    기본 제어 정보를 작성하는 제어 정보 작성 수단과,
    패킷의 송신 개시를 명령하는 송신 개시 수단과,
    패킷의 송신 개시가 명령된 경우에, 상기 기본 제어 정보를 재기록함으로써, 연속 전송되는 패킷의 데이터와 쌍을 이루는 제어 정보를 순차 생성하는 제어 정보 재기록 수단과,
    데이터와 순차 생성된 제어 정보에 의해 프레임이 구성되는 패킷을 송신 반복 회수 정보가 주어진 값이 될 때까지 연속 전송하는 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  24. 제 23 항에 있어서, 상기 기본 제어 정보가,
    상기 송신 반복 회수 정보와, 랜덤 액세스 가능한 기억 수단의 데이터 영역으로부터 판독되는 데이터의 어드레스를 가리키는 데이터 포인터와, 트랜잭션 식별 정보를 포함하며,
    상기 제어 정보 재기록 수단이,
    상기 송신 반복 회수 정보, 상기 데이터 포인터 및 상기 트랜잭션 식별 정보를 재기록하는 것을 특징으로 하는 데이터 전송 제어 장치.
  25. 제 1 항에 있어서, 후단의 애플리케이션에 접속되는 제 1 버스와,
    해당 데이터 전송 제어 장치를 컨트롤하는 제 2 버스와,
    물리층의 디바이스에 전기적으로 접속되는 제 3 버스와,
    상기 기억 수단에 전기적으로 접속되는 제 4 버스와,
    상기 제 1, 제 2, 제 3 버스 중 어느 하나와 상기 제 4 버스 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  26. 제 11 항에 있어서, 후단의 애플리케이션에 접속되는 제 1 버스와,
    해당 데이터 전송 제어 장치를 컨트롤하는 제 2 버스와,
    물리층의 디바이스에 전기적으로 접속되는 제 3 버스와,
    상기 기억 수단에 전기적으로 접속되는 제 4 버스와,
    상기 제 1, 제 2, 제 3 버스 중 어느 하나와 상기 제 4 버스 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  27. 제 22 항에 있어서, 후단의 애플리케이션에 접속되는 제 1 버스와,
    해당 데이터 전송 제어 장치를 컨트롤하는 제 2 버스와,
    물리층의 디바이스에 전기적으로 접속되는 제 3 버스와,
    상기 기억 수단에 전기적으로 접속되는 제 4 버스와,
    상기 제 1, 제 2, 제 3 버스 중 어느 하나와 상기 제 4 버스 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  28. 제 23 항에 있어서, 후단의 애플리케이션에 접속되는 제 1 버스와,
    해당 데이터 전송 제어 장치를 컨트롤하는 제 2 버스와,
    물리층의 디바이스에 전기적으로 접속되는 제 3 버스와,
    상기 기억 수단에 전기적으로 접속되는 제 4 버스와,
    상기 제 1, 제 2, 제 3 버스 중 어느 하나와 상기 제 4 버스 사이에 데이터 경로를 확립하기 위한 조정을 행하는 조정 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  29. 제 1 항에 있어서, IEEE 1394의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어 장치.
  30. 제 11 항에 있어서, IEEE 1394의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어 장치.
  31. 제 22 항에 있어서, IEEE 1394의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어 장치.
  32. 제 23 항에 있어서, IEEE 1394의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어 장치.
  33. 제 1 항 내지 제 32 항 중 어느 한 항의 데이터 전송 제어 장치와,
    상기 데이터 전송 제어 장치 및 버스를 통해 다른 노드로부터 수신한 데이터에 주어진 처리를 실시하는 장치와,
    처리가 실시된 데이터를 출력 또는 기억하기 위한 장치를 포함하는 것을 특징으로 하는 전자기기.
  34. 제 1 항 내지 제 32 항 중 어느 한 항의 데이터 전송 제어 장치와,
    상기 데이터 전송 제어 장치 및 버스를 통해 다른 노드에 송신하는 데이터에 주어진 처리를 실시하는 장치와,
    처리가 실시되는 데이터를 입력하기 위한 장치를 포함하는 것을 특징으로 하는 전자기기.
KR10-2000-7007151A 1998-10-27 1999-10-26 데이터 전송 제어 장치 및 전자기기 KR100459743B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20010024815A true KR20010024815A (ko) 2001-03-26
KR100459743B1 KR100459743B1 (ko) 2004-12-03

Family

ID=18133140

Family Applications (1)

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

Country Status (8)

Country Link
US (1) US6854020B1 (ko)
EP (1) EP1043661B1 (ko)
JP (1) JP3543648B2 (ko)
KR (1) KR100459743B1 (ko)
CN (1) CN1138211C (ko)
DE (1) DE69918053T2 (ko)
TW (1) TW451136B (ko)
WO (1) WO2000025217A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100964657B1 (ko) * 2002-12-07 2010-06-21 엘지전자 주식회사 홈 네트워크 시스템의 데이터 다운로드 방법

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3608441B2 (ja) 1999-07-15 2005-01-12 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP4591736B2 (ja) * 2001-02-21 2010-12-01 ソニー株式会社 情報処理装置および方法、記録媒体、並びにプログラム
JP3870717B2 (ja) * 2001-05-14 2007-01-24 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US7586914B2 (en) 2001-09-27 2009-09-08 Broadcom Corporation Apparatus and method for hardware creation of a DOCSIS header
US8185943B1 (en) * 2001-12-20 2012-05-22 Mcafee, Inc. Network adapter firewall system and method
US7761605B1 (en) 2001-12-20 2010-07-20 Mcafee, Inc. Embedded anti-virus scanner for a network adapter
JP3671925B2 (ja) 2002-03-20 2005-07-13 セイコーエプソン株式会社 データ転送制御装置、電子機器及びデータ転送制御方法
FR2850508B1 (fr) * 2003-01-23 2005-11-11 Canon Europa Nv Procede d'insertion et de traitement d'informations pour le controle par un noeud de la diffusion d'un flux de donnees traversant un reseau de base d'un reseau heterogene, et noeuds correspondants
EP1553738A1 (en) * 2004-01-12 2005-07-13 Thomson Licensing S.A. Method and apparatus for generating data packets
CN101322110A (zh) * 2005-11-09 2008-12-10 诺基亚公司 通过直接存储器访问控制器提供数据串行化的装置、方法和计算机程序产品
EP1903437A3 (en) 2006-07-31 2008-10-22 Seiko Epson Corporation Update data transmission method, firmware writing system, and update data transmission program
US20080071770A1 (en) * 2006-09-18 2008-03-20 Nokia Corporation Method, Apparatus and Computer Program Product for Viewing a Virtual Database Using Portable Devices
JP5459470B2 (ja) * 2009-06-10 2014-04-02 富士ゼロックス株式会社 情報処理装置およびプログラム
EP2597832B1 (en) * 2011-11-02 2016-12-28 Renesas Electronics Europe Limited Message buffer controller
US9555186B2 (en) 2012-06-05 2017-01-31 Tandem Diabetes Care, Inc. Infusion pump system with disposable cartridge having pressure venting and pressure feedback
JP2015119255A (ja) * 2013-12-17 2015-06-25 Necエンジニアリング株式会社 送信装置、及び、送信方法
JP7270387B2 (ja) * 2019-01-15 2023-05-10 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、およびプログラム
CN114765494A (zh) * 2021-01-14 2022-07-19 瑞昱半导体股份有限公司 具有数据重用机制的数据传输方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0574140A1 (en) * 1992-05-29 1993-12-15 Hewlett-Packard Company Network adapter which places a network header and data in separate memory buffers
JP3093543B2 (ja) 1993-12-20 2000-10-03 富士通株式会社 フレーム通信装置
JPH0879310A (ja) 1994-08-31 1996-03-22 Kawasaki Steel Corp 送信用バッファデータ格納方法及び送信用バッファデータ格納装置
GB9516777D0 (en) * 1995-08-16 1995-10-18 Int Computers Ltd Network coupler
EP0804008B1 (en) * 1996-04-26 2006-11-15 Texas Instruments Incorporated Apparatus for data packet transfer control
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 データ転送インタフェース回路及びデータ転送方法
JP3525734B2 (ja) 1997-04-25 2004-05-10 ソニー株式会社 情報記録装置及び方法、情報再生装置及び方法
JP3733699B2 (ja) * 1997-06-20 2006-01-11 ソニー株式会社 シリアルインタフェース回路
US6324178B1 (en) * 1998-05-26 2001-11-27 3Com Corporation Method for efficient data transfers between domains of differing data formats

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100964657B1 (ko) * 2002-12-07 2010-06-21 엘지전자 주식회사 홈 네트워크 시스템의 데이터 다운로드 방법

Also Published As

Publication number Publication date
DE69918053D1 (de) 2004-07-22
DE69918053T2 (de) 2005-07-07
TW451136B (en) 2001-08-21
CN1138211C (zh) 2004-02-11
CN1292120A (zh) 2001-04-18
US6854020B1 (en) 2005-02-08
JP2000134230A (ja) 2000-05-12
JP3543648B2 (ja) 2004-07-14
EP1043661A4 (en) 2002-04-24
WO2000025217A1 (fr) 2000-05-04
KR100459743B1 (ko) 2004-12-03
EP1043661B1 (en) 2004-06-16
EP1043661A1 (en) 2000-10-11

Similar Documents

Publication Publication Date Title
KR100459743B1 (ko) 데이터 전송 제어 장치 및 전자기기
KR100381646B1 (ko) 데이터 전송 제어 장치 및 전자 기기
EP1088448B1 (en) A method of and apparatus for partitioning, scaling and displaying video and/or graphics across several display devices
US6775245B1 (en) Data transfer control device and electronic equipment
KR100464468B1 (ko) 데이터 전송 제어장치 및 전자기기
US6519268B1 (en) Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure
US7013354B1 (en) Channel protocol for IEEE 1394 data transmission
KR100405250B1 (ko) 데이터 전송 제어 장치 및 전자 기기
EP0939529B1 (en) Destination node, data communication system, method of controlling a destination node and method of operating a data communication system
KR100407095B1 (ko) 데이터 통신 시스템 및 데이터 통신 방법
JP3780776B2 (ja) データ転送制御装置及び電子機器
US7130315B1 (en) Method of and apparatus for utilizing extended AV/C command and response frames including transaction label and common result/error code
US6041286A (en) Apparatus for and method of accurately obtaining the cycle time of completion of transmission of video frames within an isochronous stream of data transmitted over an IEEE 1394 serial bus network
KR100311707B1 (ko) 데이타 통신 시스템, 데이타 통신 방법, 데이타 통신 장치 및 디지탈 인터페이스
JP2000196624A (ja) 伝送管理装置、情報処理装置及び情報伝送システム
KR100464469B1 (ko) 데이터 전송 제어 장치 및 전자기기
JP2000134242A (ja) データ転送制御装置及び電子機器
EP2111003A1 (en) Data transfer control device and electronic equipment
JP4046846B2 (ja) データ通信システム及びデータ通信装置
JP2000032005A (ja) デ―タ通信システム、デ―タ通信方法、デ―タ通信装置、デジタルインタフェ―ス及び記憶媒体
JPH11252153A (ja) データ通信システム、データ通信装置及びデータ通信方法
JPH11261621A (ja) データ通信システム、データ通信装置、データ通信方法及び記憶媒体
JP2000356980A (ja) 映像表示方法、映像表示装置及び映像出力装置
JP2004173304A (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: 20111028

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20121114

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee