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

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

Info

Publication number
KR20010051014A
KR20010051014A KR1020000060230A KR20000060230A KR20010051014A KR 20010051014 A KR20010051014 A KR 20010051014A KR 1020000060230 A KR1020000060230 A KR 1020000060230A KR 20000060230 A KR20000060230 A KR 20000060230A KR 20010051014 A KR20010051014 A KR 20010051014A
Authority
KR
South Korea
Prior art keywords
data
transfer
transmission
packet
circuit
Prior art date
Application number
KR1020000060230A
Other languages
English (en)
Other versions
KR100381646B1 (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 KR20010051014A publication Critical patent/KR20010051014A/ko
Application granted granted Critical
Publication of KR100381646B1 publication Critical patent/KR100381646B1/ko

Links

Classifications

    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40058Isochronous transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40006Architecture of a communication node
    • H04L12/40013Details regarding a bus controller
    • 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/40084Bus arbitration

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Small-Scale Networks (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

본 발명은 펌웨어 처리의 오버헤드를 경감시키고, 소규모의 하드웨어로 고속의 데이터 전송을 실현할 수 있는 데이터 전송 제어 장치, 전자 기기를 제공하는 것이 목적이다. IEEE1394 규격의 데이터 전송 제어 장치에 있어서, SBP-2 코어에 의해 연속 패킷 전송(HW 전송) 처리가 실행되고 있는 동안에, CPU가 FW 전송 스타트 커맨드를 발행한 경우에, 조정 회로는 연속 패킷 전송에 있어서의 1개의 트랜잭션(또는 1개의 패킷 전송)의 완료를 기다리고 FW 전송을 허가한다. HWStart와 FWStart가 동시에 액티브로 된 경우는 FW 전송을 우선한다. RAM의 헤더 영역이, 통상의 헤더 영역과 HW용 헤더 영역으로 분리되어 있으며, 어드레스 발생 회로가, 조정 회로부터의 HWDMARun에 의거하여, 통상의 헤더 영역과 HW용 헤더 영역의 어느 쪽의 어드레스를 발생할지를 전환한다. RAM의 데이터 영역이 ORB 영역과, SBP-2 코어용의 스트림 영역으로 분리되어 있다.

Description

데이터 전송 제어 장치 및 전자 기기{Data transfer control device and electronic equipment}
본 발명은 데이터 전송 제어 장치 및 이것을 포함하는 전자 기기에 관한 것으로, 특히, 버스에 접속되는 복수의 노드간에서 IEEE1394 등의 규격에 따른 데이터 전송을 행하는 데이터 전송 제어 장치 및 이것을 포함하는 전자 기기에 관한 것이다.
최근, IEEE1394라고 불리는 인터페이스 규격이 각광을 받고 있다. 상기 IEEE1394는 차세대의 멀티미디어에도 대응 가능한 고속 직렬 버스 인터페이스를 규격화한 것이다. 상기 IEEE1394에 의하면, 동화상 등의 실시간성이 요구되는 데이터도 취급할 수 있다. 또한, IEEE1394의 버스에는 프린터, 스캐너, CD-RW 드라이브, 하드 디스크 드라이브 등의 컴퓨터의 주변 기기 뿐만 아니라, 비디오 카메라, VTR, TV 등의 가정용 전화 제품도 접속할 수 있다. 이 때문에, 전자 기기의 디지털화를 비약적으로 촉진할 수 있을 것으로 기대되고 있다.
그런데, 상기 IEEE1394에 있어서는, 버스에 전자 기기가 새롭게 접속되거나, 버스로부터 전자 기기가 분리되기도 하며, 버스에 접속되는 노드가 증감하면, 소위 버스 리세트가 발생한다. 그리고 버스 리세트가 발생하면 노드의 토폴로지 정보가 클리어되고, 그 후, 토폴로지 정보가 자동적으로 재설정된다. 즉, 버스 리세트의 발생후, 트리 식별(루트 노드의 결정), 자기 식별이 행해지며, 그 후, 동기 리소스 매니저 등의 관리 노드가 결정된다. 그리고 통상의 패킷 전송이 개시된다.
그러나, 상기 IEEE1394에 준거한 데이터 전송 제어 장치에는 다음과 같은 과제가 있음이 판명되었다.
즉, 현재의 IEEE1394 규격에 의하면 최대로 400Mbps의 전송 속도가 실현 가능해지고 있다. 그러나, 현실적으로는, 처리의 오버헤드의 존재에 기인하여, 시스템 전체의 실전송 속도는 이것보다도 상당히 낮아지고 있다. 결국, CPU상에서 동작하는 펌웨어(처리 수단)가, 전송 데이터를 준비하거나, 전송 데이터를 패킷으로 분할하거나, 전송 개시 커맨드를 발행하기도 하는 등의 처리에 많은 시간을 요하게 되어, 버스상에서의 전송 속도가 빠르더라도, 결국, 고속의 데이터 전송을 실현할 수 없다.
특히, 주변기기에 장착되는 CPU는 퍼스널 컴퓨터 등의 호스트 시스템에 장착되는 CPU와 비교하여 처리 능력이 낮다. 이 때문에, 펌웨어 등의 처리의 오버 헤드의 문제는, 대단히 심각하게 된다. 따라서, 이러한 오버헤드의 문제를 효과적으로 해소할 수 있는 기술이 요구되고 있다.
도 1은 IEEE1394의 층 구조에 대하여 도시하는 도면.
도 2는 SBP-2에 대하여 설명하기 위한 도면.
도 3은 SBP-2의 데이터 전송 처리의 개략에 대하여 설명하기 위한 도면.
도 4는 데이터(스트림)를 타깃으로부터 이니시에이터에 전송하는 경우의 커맨드 처리에 대하여 설명하기 위한 도면.
도 5는 데이터(스트림)를 이니시에이터로부터 타깃에 전송하는 경우의 커맨드 처리에 대하여 설명하기 위한 도면.
도 6a 내지 도 6c는 페이지 테이블에 대하여 설명하기 위한 도면.
도 7은 본 실시예의 데이터 전송 제어 장치의 구성예를 도시하는 도면.
도 8은 RAM(패킷 기억 수단)의 분리(분할) 수법에 대하여 설명하기 위한 도면.
도 9는 본 실시예의 데이터 전송의 수법에 대하여 설명하기 위한 도면.
도 10은 SBP-2 코어(전송 실행 회로)의 구성예를 도시하는 도면.
도 11은 메인 제어 회로의 동작을 설명하기 위한 플로우 챠트.
도 12는 페이지 테이블의 생성 수법에 대하여 설명하기 위한 도면.
도 13은 패킷의 페이로드 분할 수법에 대하여 설명하기 위한 도면.
도 14는 전송 실행 제어 회로의 동작을 설명하기 위한 플로우 챠트.
도 15는 페이로드 분할 회로의 동작을 설명하기 위한 플로우 챠트.
도 16은 송신 헤더 생성 회로, 트랜잭션 제어 회로의 동작에 대하여 설명하기 위한 플로우 챠트.
도 17은 HW 전송과 FW 전송의 조정 수법에 대하여 설명하기 위한 도면.
도 18은 본 실시예의 조정 회로를 포함하는 DMAC의 구성예에 대하여 도시하는 도면.
도 19a 및 도 19b는 조정 회로의 동작을 설명하기 위한 상태 천이도.
도 20은 조정 회로의 동작을 설명하기 위한 상태 천이도.
도 21은 FWStart보다도 먼저 HWStart가 액티브로 된 경우의 타이밍 파형도.
도 22는 FWStart와 HWStart가 동시에 액티브로 된 경우의 타이밍 파형도.
도 23은 HWStart보다도 먼저 FWStart가 액티브로 된 경우의 타이밍 파형도.
도 24는 조정 회로부터의 HWDMARun에 의거하여, HW용 헤더 영역과 통상의 헤더 영역의 어느 쪽의 어드레스를 발생할지를 전환하는 수법에 대하여 설명하기 위한 도면.
도 25a 및 도 25b는 데이터 영역을 ORB 영역과 스트림 영역으로 분리하는 수법에 대하여 설명하기 위한 도면.
도 26은 상대 노드와 애플리케이션층의 디바이스 사이의 스트림 전송의 모양을 도시하는 도면.
도 27a 및 도 27b는 트랜잭션 라벨에 대하여 설명하기 위한 도면.
도 28은 트랜잭션 라벨을 이용하여, RAM의 각 영역에 패킷의 헤더, 데이터(ORB, 스트림)를 기록하는 수법에 대하여 설명하기 위한 도면.
도 29a 내지 도 29c는 여러 가지 전자 기기의 내부 블록도의 예.
도 30a 내지 도 30c는 여러 가지 전자 기기의 외관도의 예.
* 도면의 주요 부분에 대한 부호의 설명 *
10...PHY 인터페이스 20...링크 코어(링크 수단)
22...레지스터 300...RAM 영역 관리 회로
60...CPU 인터페이스 62...어드레스 디코더
63...데이터 동기화 회로 64...인터럽트 컨트롤러
68...클록 제어 회로
본 발명은 이상과 같은 기술적 과제를 감안하여 이루어진 것으로, 그 목적으로 하는 것은, 펌웨어 등의 처리의 오버헤드를 경감시키고, 소규모의 하드웨어로 고속의 데이터 전송을 실현할 수 있는 데이터 전송 제어 장치 및 이것이 사용되는 전자 기기를 제공하는 것에 있다.
상기 과제를 해결하기 위해서 본 발명은 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어 장치로서, 하드웨어에 의한 연속 패킷 전송을 지시하는 제 1 스타트 커맨드를 처리 수단이 발행한 경우에, 전송 데이터를 일련의 패킷으로 분할하고, 분할된 일련의 패킷을 연속 전송하는 처리를 실행하는 전송 실행 회로와, 상기 전송 실행 회로에 의해 연속 패킷 전송 처리가 실행되고 있는 동안에, 패킷 전송을 지시하는 제 2 스타트 커맨드를 처리 수단이 발행한 경우에는, 연속 패킷 전송에 있어서의 1개의 트랜잭션 또는 1개의 패킷 전송의 완료를 기다리며, 상기 제 2 스타트 커맨드에 의한 패킷 전송을 허가하는 조정 회로를 포함하는 것을 특징으로 한다.
본 발명에 의하면, 처리 수단이 제 1 스타트 커맨드를 발행하면, 하드웨어에 의해, 전송 데이터가 복수의 패킷으로 분할되어 연속 전송된다. 따라서, 처리 수단은, 제 1 스타트 커맨드를 발행한 후에는, 연속 패킷 전송이 완료하는 것을 기다리는 것만으로 충분하기 때문에, 처리 수단의 처리 부담을 각별히 경감시킬 수 있다.
그리고, 일단, 이러한 연속 패킷 전송이 개시되어 버리면, 모든 패킷의 전송이 완료할 때까지, 어느 정도의 대기 시간이 필요하게 된다. 따라서, 연속 패킷 전송의 완료를 기다리는 것으로는, 제 2 스타트 커맨드에 의한 패킷 전송에 좋지 못한 상황이 생길 가능성이 있다.
본 발명에 의하면, 한창 연속 패킷이 전송될 때, 제 2 스타트 커맨드에 의한 패킷 전송을 인터럽트 시킬 수 있기 때문에, 연속 패킷 전송이 모두 완료하는 것을 기다리지 않고서, 제 2 스타트 커맨드에 의한 패킷 전송을 실행할 수 있게 된다. 따라서, 상기와 같은 좋지 못한 상황이 생기는 것을 효과적으로 방지할 수 있다.
또한, 본 발명은 상기 전송 실행 회로가, 상대 노드의 기억 수단에 페이지 테이블이 존재하는 경우에는, 해당 페이지 테이블을 상대 노드로부터 패치하는 페이지 테이블 패치 회로와, 상대 노드의 기억 수단에 페이지 테이블이 존재하지 않는 경우에는, 페이지 경계 정보에 의거하여 가상적인 페이지 테이블을 생성하는 페이지 테이블 생성 회로와, 페이로드 사이즈의 패킷으로 전송 데이터를 분할하는 페이로드 분할 회로와, 데이터 전송의 실행을 제어하는 전송 실행 제어 회로와, 상대 노드에 송신하는 요구 패킷의 제어 정보를 생성하는 제어 정보 생성 회로의 적어도 1개를 포함하는 것을 특징으로 한다. 이러한 회로 블록을 포함시키는 것으로, 페이지 테이블의 패치·생성 처리나, 패킷의 페이로드 분할 처리나, 데이터 전송의 실행을 제어하는 처리나, 요구 패킷의 제어 정보(헤더 등)를 생성하는 처리 등을 하드웨어에 의해 실행할 수 있게 된다. 이로써, 처리 수단의 부담을 대폭 경감시킬 수 있다.
또한, 본 발명은 상기 조정 회로가, 상기 전송 실행 회로에 의한 전송 개시 요구시에 액티브로 되는 제 1 스타트 신호와, 상기 제 2 스타트 커맨드에 의한 전송 개시 요구시에 액티브로 되는 제 2 스타트 신호와, 전송 완료 시에 액티브로 되는 완료신호를 받고, 상기 제 1 스타트 신호가 액티브로 된 후에 상기 제 2 스타트 신호가 액티브로 된 경우에는, 상기 제 1 스타트 신호에 의한 전송 처리를 먼저 스타트시키며, 상기 완료신호가 액티브로 된 후에, 상기 제 2 스타트 신호에 의한 전송 처리를 스타트시키는 것을 특징으로 한다. 이와 같이 하면, 제 1 스타트 신호가 제 2 신호보다도 먼저 액티브로 된 경우에는, 제 1 스타트 신호에 의한 전송 처리(트랜잭션, 패킷 전송)를 실행하며, 그 전송 처리의 완료를 기다리고, 제 2 스타트 신호에 의한 전송 처리를 실행할 수 있게 된다.
또한, 본 발명은 상기 조정 회로가, 상기 전송 실행 회로에 의한 전송 개시 요구시에 액티브로 되는 제 1 스타트 신호와, 상기 제 2 스타트 커맨드에 의한 전송 개시 요구시에 액티브로 되는 제 2 스타트 신호와, 전송 완료 시에 액티브로 되는 완료신호를 받고, 상기 제 1, 제 2 스타트 신호가 동시에 액티브로 된 경우에는, 상기 제 2 스타트 신호에 의한 전송 처리를 우선하는 것을 특징으로 한다. 이와 같이 하면, 예를 들어, 상대 노드로부터 요구 패킷이 전송되어 온 경우 등에, 상기 요구 패킷에 대하여 즉시 응답 패킷을 돌려 줄 수 있게 된다.
또한, 본 발명은 상기 조정 회로가, 상기 전송 실행 회로에 의한 전송 개시 요구시에 액티브로 되는 제 1 스타트 신호와, 상기 제 2 스타트 커맨드에 의한 전송 개시 요구시에 액티브로 되는 제 2 스타트 신호와, 전송 완료 시에 액티브로 되는 완료신호를 받고, 상기 제 2 스타트 신호가 액티브로 된 후에 상기 제 1 스타트 신호가 액티브로 된 경우에는, 상기 제 2 스타트 신호에 의한 전송 처리를 먼저 스타트시키며, 상기 완료신호가 액티브로 된 후에, 상기 제 1 스타트 신호에 의한 전송 처리를 스타트시키는 것을 특징으로 한다. 이와 같이 하면, 제 2 스타트 신호가 제 1 신호보다도 먼저 액티브로 된 경우에는, 제 2 스타트 신호에 의한 전송 처리(트랜잭션, 패킷 전송)를 실행하며, 그 전송 처리의 완료를 기다리고, 제 1 스타트 신호에 의한 전송 처리를 실행할 수 있게 된다.
또한, 본 발명은 패킷의 제어 정보가 격납되는 제어 정보 영역과 패킷의 데이터가 격납되는 데이터 영역을 가지고, 랜덤 액세스 가능한 패킷 기억 수단과, 상기 패킷 기억 수단으로의 기록 어드레스를 발생하는 어드레스 발생 회로를 포함하며, 상기 패킷 기억 수단의 상기 제어 정보 영역이, 제 1 제어 정보 영역과, 상기 전송 실행 회로에 의해 제어 정보가 기록되는 제 2 제어 정보 영역으로 분리되어 있으며, 상기 어드레스 발생 회로가, 상기 조정 회로로부터의 조정결과에 의거하여, 제 1 제어 정보 영역의 어드레스와 제 2 제어 정보 영역의 어드레스의 어느 쪽의 어드레스를 발생할지를 전환하는 것을 특징으로 한다. 이와 같이 하면, 제 1, 제 2 제어 정보 영역의 어드레스를 간소한 처리로 전환할 수 있게 된다. 그리고, 이러한 어드레스 전환이 가능하게 되는 것으로, 제 2 제어 정보 영역에 대하여, 전송 실행 회로가 생성한 제어 정보를 연속하여 판독하여, 하드웨어에 의한 제어 정보의 생성·기록 처리의 간소화를 도모할 수 있다.
또한, 본 발명은 패킷의 제어 정보가 격납되는 제어 정보 영역과 패킷의 데이터가 격납되는 데이터 영역을 가지고, 랜덤 액세스 가능한 패킷 기억 수단을 포함하며, 상기 패킷 기억 수단의 상기 데이터 영역이, 제 1 층용의 제 1 데이터가 격납되는 제 1 데이터 영역과, 상기 전송 실행 회로에 의한 연속 패킷 전송의 대상으로 되는 제 2 층용의 제 2 데이터가 격납되는 제 2 데이터 영역으로 분리되어 있는 것을 특징으로 한다. 본 발명에 의하면, 패킷의 제어 정보(예를 들면 헤더, 푸터)는 제어 정보 영역에 격납되고, 패킷의 제 1 데이터(예를 들면 트랜잭션층용의 데이터)는 제 1 데이터 영역에 격납되며, 패킷의 제 2 데이터(예를 들면 애플리케이션층용의 데이터)는 제 2 데이터 영역에 격납된다. 이와 같이 하면, 제 2 데이터 영역으로부터 제 2 데이터를 연속하여 판독하고, 제 2 층에 전송할 수 있게 된다. 이로써, 데이터 전송을 비약적으로 고속화 할 수 있다.
또한, 본 발명에서는 상기 제 1 데이터가, 상기 제 1 층의 포로토콜에서 사용되는 커맨드 데이터이고, 상기 제 2 데이터가, 애플리케이션층에서 사용되는 데이터인 것이 바람직하다.
또한, 본 발명은 트랜잭션을 개시시키는 요구 패킷을 상대 노드에 대하여 송신할 때, 상기 요구 패킷에 포함되는 트랜잭션 식별정보 중에, 상대 노드로부터 응답 패킷을 수신하였을 때 행하는 처리를 지시하기 위한 지시정보를 포함하고, 상대 노드로부터 응답 패킷을 수신한 경우에, 응답 패킷의 트랜잭션 식별정보가 포함하는 상기 지시정보에 의거하여, 응답 패킷의 제어 정보, 제 1, 제 2 데이터를, 각각, 상기 제어 정보 영역, 상기 제 1, 제 2 데이터 영역에 기록하는 것을 특징으로 한다. 상기와 같이 하면, 응답 노드로부터 응답 패킷이 회신되어 왔을 때에, 펌웨어 등의 처리 수단이 관여하지 않고서, 지시정보에 의해 지시되는 영역에 응답 패킷의 제어 정보, 제 1, 제 2 데이터가 자동적으로 기록되게 된다. 따라서, 처리 수단의 처리부담을 각별히 경감시킬 수 있다.
또한, 본 발명에서는, IEEE1394의 규격에 준거한 데이터 전송을 행하는 것이 바람직하다.
또한, 본 발명에 따른 전자 기기는, 상기의 어느 한 데이터 전송 장치와, 상기 데이터 전송 제어 장치 및 버스를 통하여 다른 노드로부터 수신한 데이터에 주어진 처리를 실시하는 장치와, 처리가 실시된 데이터를 출력 또는 기억하기 위한 장치를 포함하는 것을 특징으로 한다. 또한 본 발명에 따른 전자 기기는, 상기의 어느 한 데이터 전송 제어 장치와, 상기 데이터 전송 제어 장치 및 버스를 통하여 다른 노드에 송신하는 데이터에 주어진 처리를 실시하는 장치와, 처리가 실시되는 데이터를 집어넣기 위한 장치를 포함하는 것을 특징으로 한다.
본 발명에 의하면, 다른 노드로부터 전송된 데이터를 전자 기기에 있어서 출력하거나 기억하는 처리, 전자 기기에 있어서 들어간 데이터를 다른 노드에 전송하는 처리를 고속화하는 것이 가능하게 된다. 또한, 본 발명에 의하면, 데이터 전송 제어 장치를 소규모화 할 수 있는 동시에, 데이터 전송을 제어하는 펌웨어 등의 처리부담을 경감시킬 수 있기 때문에, 전자 기기의 저 비용화, 소규모화 등을 도모하는 것도 가능하게 된다.
이하, 본 발명이 적합한 실시예에 대하여 도면을 참조하여 상세하게 설명한다.
1. IEEE1394
먼저, IEEE1394에 대하여 간단히 설명한다.
1.1 개요
IEEE1394(IEEE1394-1995, P1394.a)에서는 100 내지 400Mbps의 고속인 데이터 전송이 가능해지고 있다(P1394.b에서는 800 내지 32OOMbps). 또한, 전송 속도가 다른 노드를 버스에 접속하는 것도 허용된다.
각 노드는 트리형으로 접속되어 있고, 1개의 버스에 최대로 63개의 노드가 접속 가능하게 되어 있다. 또한, 버스 브리지를 이용하면 약 64OOO개의 노드를 접속하는 것도 가능하다.
IEEE1394에서는, 패킷의 전송방식으로서 비동기 전송과 동기 전송이 준비되어 있다. 여기서 비동기 전송은, 신뢰성이 요구되는 데이터의 전송에 적합한 전송방식이며, 동기 전송은 실시간성이 요구되는 동화상이나 음성 등의 데이터의 전송에 적합한 전송방식이다.
1.2 층 구조
IEEE1394의 층 구조(포로토콜 구성)를 도 1에 도시한다.
IEEE1394의 포로토콜은 트랜잭션층, 링크층, 물리층에 의해 구성된다. 또한, 직렬 버스 매니지먼트는, 트랜잭션층, 링크층, 물리층을 모니터하거나 제어하는 것으로, 노드의 제어나 버스의 리소스 관리를 위한 여러 가지 기능을 제공한다.
트랜잭션층은 상위층에 트랜잭션 단위의 인터페이스(서비스)를 제공하고, 하층의 링크층이 제공하는 인터페이스를 통하여, 리드(read) 트랜잭션, 라이트(write) 트랜잭션, 로크(lock) 트랜잭션 등의 트랜잭션을 실시한다.
여기서, 리드 트랜잭션에서는, 응답 노드로부터 요구 노드에 데이터가 전송된다. 한편, 라이트 트랜잭션에서는, 요구 노드로부터 응답 노드에 데이터가 전송된다. 또한 로크 트랜잭션에서는, 요구 노드로부터 응답 노드에 데이터가 전송되며, 응답 노드가 그 데이터에 처리를 실시하여 요구 노드에 회신한다.
링크층은 어드레싱, 데이터 체크, 패킷 송수신을 위한 데이터 프레이밍, 동기 전송을 위한 사이클 제어 등을 제공한다.
물리층은 링크층에 의해 사용되는 로지컬 심벌(logical symbol)의 전기신호로의 변환이나, 버스의 조정이나, 버스의 물리적 인터페이스를 제공한다.
1.3 SBP-2
그런데, 도 2에 도시하는 바와 같이, IEEE1394의 트랜잭션층의 일부의 기능을 포함하는 상위의 포로토콜로서, SBP­2(Serial Bus Protocol-2)라고 불리는 포로토콜이 제안되어 있다.
여기서 SBP-2는 SCSI의 커맨드 세트를 IEEE1394의 포로토콜상에서 이용 가능하게 하기 위해서 제안된 것이다. 상기 SBP-2를 사용하면, 기존의 SCSI 규격의 전자 기기에서 사용되어 있던 SCSI의 커맨드 세트에 최소한의 변경을 가하여, IEEE1394 규격의 전자 기기에 사용할 수 있게 된다. 따라서, 전자 기기의 설계나 개발을 용이화 할 수 있다. 또한, SCSI의 커맨드 뿐만 아니라, 디바이스 고유의 커맨드도 캡슐화 하여 이용할 수 있기 때문에, 범용성이 매우 높다.
도 3에 도시하는 바와 같이 SBP-2에서는, 우선, 이니시에이터(initiator; 예를 들면 퍼스널 컴퓨터)에 의해 작성된 로그인(ORB; Operation Request Block)을 사용하여 로그인 처리가 행해진다(단계(T1)). 다음에, 더미 ORB를 사용하여 패치 에이전트의 초기화가 행해진다(단계(T2)). 그리고, 노멀 커맨드 ORB를 사용하여 커맨드 처리가 행해지고(단계(T3)), 맨마지막에, 로그아웃 ORB를 사용하여 로그아웃 처리가 행해진다(단계 T4).
단계(T3)의 커맨드 처리에 있어서는, 도 4의 A1로 도시하는 바와 같이, 이니시에이터가 라이트 요구 패킷을 전송하고(라이트 요구 트랜잭션을 발행하고), 타깃의 도어 벨 레지스터를 링한다. 그렇게 하면, A2로 나타내는 바와 같이, 타깃이 리드 요구 패킷을 전송하며, 이니시에이터가 대응하는 리드 응답 패킷을 돌려준다. 이로써, 이니시에이터가 작성한 ORB(노멀 커맨드 ORB)가, 타깃의 데이터 버퍼에 패치된다. 그리고, 타깃은 패치된 ORB에 포함되는 커맨드를 해석한다.
그리고, ORB에 포함되는 커맨드가 SCSI의 리드 커맨드인 경우에는, A3으로 나타내는 바와 같이, 타깃은 일련의 라이트 요구 패킷을 이니시에이터에 전송한다. 이로써, 예를 들면 타깃의 미디어(CD-RW)로부터 판독된 데이터(스트림)가, 이니시에이터의 데이터 버퍼에 전송되게 된다.
한편, ORB에 포함되는 커맨드가 SCSI의 라이트 커맨드인 경우에는, 도 5의 B1로 나타내는 바와 같이, 타깃이 리드 요구 패킷을 이니시에이터에 전송하고, 이니시에이터가 대응하는 리드 응답 패킷을 되돌린다. 이로써, 이니시에이터의 데이터 버퍼에 격납되어 있는 데이터(스트림)가 타깃에 전송되며, 타깃의 미디어에 기록되는 것이다(타깃이 프린터인 경우에는 인쇄된다).
상기 SBP-2에 의하면, 타깃은 자신이 상황이 좋을 때에 요구 패킷을 전송하고(트랜잭션을 발행하고), 데이터를 송수신 할 수 있다. 따라서, 이니시에이터와 타깃이 동기하여 작동할 필요가 없어지기 때문에, 데이터 전송 효율을 높일 수 있다.
또한, IEEE1394의 상위 포로토콜로서는, SBP-2 이외에도, FCP(Function Control Protocol)라고 불리는 포로토콜 등도 제안되어 있다.
그런데, 타깃, 이니시에이터간에서 데이터 전송을 행하는 경우, 도 6a와 같이 이니시에이터(상대 노드)의 데이터 버퍼(기억 수단)에 페이지 테이블이 존재하는 경우와, 존재하지 않는 경우가 있다.
그리고, 페이지 테이블이 존재하는 경우에는, 도 6b에 도시하는 바와 같이, 이니시에이터가 작성한 ORB 중에는, 그 페이지 테이블의 어드레스나 엘리먼트의 수가 포함된다. 그리고, 전송 데이터의 어드레스(판독 어드레스, 기록 어드레스)는, 상기 페이지 테이블을 사용하여 간접 어드레스 지정된다.
한편, 페이지 테이블이 존재하지 않는 경우에는, 도 6c에 도시하는 바와 같이, ORB의 중에는 어드레스와 데이터 길이가 포함되고, 전송 데이터의 어드레스가 직접 어드레스 지정된다.
2. 전체 구성
다음에, 본 실시예의 데이터 전송 제어 장치의 전체 구성의 예에 대하여 도 7을 사용하여 설명한다.
도 7에 있어서, PHY 인터페이스(10)는, PHY 디바이스(물리층의 디바이스)와의 인터페이스를 행하는 회로이다.
링크 코어(20; 링크 수단)는 링크층의 포로토콜이나 트랜잭션층의 포로토콜의 일부를 하드웨어에 의해 실현하는 회로이고, 노드간에서의 패킷 전송을 위한 각종 서비스를 제공한다. 레지스터(22)는 링크코어(20)를 제어하기 위한 레지스터이다.
FIFO(Asynchronous Transmission Fifo; 30), FIFO(Isochronous Transmission Fifo; 32), FIFO(Reception Fifo; 34)는, 각각, 비동기 송신용, 동기 송신용, 수신용의 FIFO이며, 예를 들면 레지스터나 반도체 메모리 등의 하드웨어에 의해 구성된다. 본 실시예에서는, 이들의 FIF0(30, 32, 34)의 단수는 대단히 적다. 예를 들면 11개의 FIFO의 단수는, 바람직하게는 3단 이하이고, 더욱 바람직하게는 2단 이하로 된다.
DMAC(40; 판독 수단), DMAC(42; 판독 수단), DMAC(44; 기록 수단)은, 각각, ATF용, ITF용, RF용의 DMA 컨트롤러이다. 상기 DMAC(4O, 42, 44)를 사용하는 것으로, CPU(66)에 개입되지 않고서, RAM(80)과 링크코어(20) 사이에서의 데이터 전송이 가능하게 된다. 또한, 레지스터(46)는, DMAC(4O, 42, 44) 등을 제어하기 위한 레지스터이다.
포트 인터페이스(50)는 애플리케이션층의 디바이스(예를 들면 프린터의 인자 처리를 행하는 디바이스)와의 인터페이스를 행하는 회로이다.
FIFO(PF; 52)는 애플리케이션층의 디바이스와의 사이에서의 데이터 전송을 위한 FIFO이고, DMAC(54)는 PF용의 DMA 컨트롤러이다. 레지스터(56)는 포트 인터페이스(50)나 DMAC(54)를 제어하는 레지스터이다.
SBP-2 코어(84; 전송 실행 회로)는 SBP-2의 포로토콜의 일부나 트랜잭션층의 일부를 하드웨어에 의해 실현하는 회로이다. 상기 SBP-2 코어(84)의 기능에 의해, 전송 데이터를 일련의 패킷으로 분할하고, 분할된 일련의 패킷을 연속 전송하는 처리가 가능하게 된다. 또한, 레지스터(88)는, SBP-2 코어(84)를 제어하기 위한 레지스터이며, DMAC(SBP-2용; 86)는 SBP-2 코어(84)용의 DMA 컨트롤러이다.
RAM 영역 관리 회로(300)는 RAM(80)의 각 영역을 관리하기 위한 회로이다. RAM 영역 관리 회로(300)는 RAM(80)의 각 영역이 가득 차게 되거나, 텅비게 된 경우에, 각종의 풀(full) 신호, 엠티(empty) 신호를 사용하여 DMAC(40, 42, 44, 54, 86)를 제어한다.
CPU 인터페이스(60)는 데이터 전송 제어 장치를 컨트롤하는 CPU(66; 처리 수단)와의 인터페이스를 행하는 회로이다. CPU 인터페이스(60)는 어드레스 디코더(62), 데이터 동기화 회로(63), 인터럽트 컨트롤러(64)를 포함한다. 클록 제어 회로(68)는, 본 실시예에서 사용되는 클록을 제어하는 것이며, PHY 디바이스(PHY 칩)로부터 보내져오는 SCLK(데이터 전송 제어 장치의 시스템 로크)나, HCLK(CPU66의 동작 클록)이 입력된다.
버퍼 매니저(70)는 RAM(80)과의 인터페이스를 관리하는 회로이다. 버퍼 매니저(70)는, 버퍼 매니저의 제어를 위한 레지스터(72), RAM(80)로의 버스 접속을 조정하는 조정 회로(74), 각종의 제어신호를 생성하는 시퀀서(76)를 포함한다.
RAM(80)은 랜덤 액세스 가능한 패킷 기억 수단으로서 기능을 하는 것이며, 그 기능은 예를 들면 SRAM, SDRAM, DRAM 등에 의해 실현된다.
또한, RAM(80)은 본 실시예의 데이터 전송 제어 장치에 내장시키는 것이 특히 바람직하지만, 그 일부 또는 전부를 외장으로 하는 것도 가능하다.
도 8에, RAM(80)의 메모리 맵의 일 예를 도시한다. 도 8에 도시하는 바와 같이 본 실시예에서는, RAM(80)이 헤더 영역(AR2, AR3, AR4, AR6)과 데이터 영역(AR5, AR7, AR8, AR9)으로 분리되어 있다. 그리고, 패킷의 헤더(광의로는 제어 정보)는 헤더 영역에 격납되고, 패킷의 데이터(ORB, 스트림)는 데이터 영역에 격납된다.
또한, 본 실시예에서는, 도 8에 도시하는 바와 같이, RAM(80)의 데이터 영역(AR5, AR7, AR8, AR9)이, ORB 영역(AR5, AR7)과 스트림 영역(AR8, AR9)으로 분리되어 있다.
더욱이, 본 실시예에서는, RAM(80)이 수신영역(AR2, AR4, AR5, AR9)과 송신영역(AR3, AR6, AR7, AR8)으로 분리되어 있다.
또한, ORB(제 1 층용의 제 1 데이터)는, 상술한 바와 같이 SBP-2용의 데이터(커맨드)이다. 한편, 스트림(제 1 층보다 상층의 제 2 층용의 제 2 데이터)은, 애플리케이션층용의 데이터(프린터의 인자 데이터, CD-RW의 판독·기록 데이터, 스캐너에 의한 취입 화상 데이터 등)이다.
또한, AR1, AR2, AR3으로 나타내는 HW(하드웨어)용 페이지 테이블 영역, HW용 수신 헤더 영역, HW용 송신 헤더 영역은, 도 7에 도시하는 SBP-2 코어(84)가, 페이지 테이블이나 수신 헤더나 송신 헤더를 기록하거나 판독하기 위한 영역이다.
또한, 도 8에 있어서 AR4, AR5, AR8, AR9로 나타내는 영역은, 소위 링 버퍼 구조로 되어 있다.
그런데, 도 7의 버스(90; 또는 버스(92, 94))는, 애플리케이션에 접속되는 것이다(제 1 버스). 또한 버스(95; 또는 버스(96))는 데이터 전송 제어 장치를 컨트롤하고, 또는 데이터를 리드·라이트하기 위한 것이며, 데이터 전송 제어 장치를 컨트롤하는 디바이스(예를 들면 CPU)에 전기적으로 접속된다(제 2 버스). 또한 버스(100; 또는 버스(102, 104, 105, 106, 107, 108, 109))는, 물리층의 디바이스(PHY 디바이스)에 전기적으로 접속되는 것이다(제 3 버스). 또한, 버스(110)는 랜덤 액세스 가능한 기억 수단인 RAM(80)에 전기적으로 접속되는 것이다(제 4 버스). 또한 버스(99)는, SBP-2 코어(84)가 하드웨어에 의해 SBP-2를 실현하기 위한 헤더 정보나 페이지 테이블 정보를 리드·라이트하기 위한 것이다(제 5 버스).
버퍼 매니저(70)의 조정 회로(74)는 DMAC(40, 42, 44), CPU 인터페이스(60), DMAC(86, 54)로부터의 버스 액세스 요구의 조정을 행한다. 그리고, 상기 조정 결과에 의거하여, 각각, 버스(105, 107, 109, 96, 99, 94)의 어느 하나와, RAM(80)의 버스(110) 사이에 데이터의 경로가 확립된다(제 1, 제 2, 제 3, 제 5 버스의 어느 하나와 제 4 버스 사이에 데이터 경로가 확립된다).
본 실시예의 하나의 특징은, 랜덤 액세스가 가능하고 패킷을 격납하는 RAM(80)을 형성하는 동시에, 서로 분리되는 버스(90, 95, 99, 100)와, 이들의 버스를 RAM(80)의 버스(110)에 접속하기 위한 조정 회로(74)를 설치한 점에 있다.
상기한 바와 같이 하는 것으로 도 9에 도시하는 바와 같이, 데이터 전송 제어 장치(120), 애플리케이션층의 디바이스(124)간의 버스(90)와, CPU 버스(96)와, 데이터 전송 제어 장치(120), RAM(80)간의 버스(110)를 분리할 수 있다. 따라서, CPU 버스(96)를 데이터 전송의 제어에만 사용할 수 있게 된다. 또한, 버스(90)를 점유하여, 데이터 전송 제어 장치(120), 애플리케이션층의 디바이스(124)간에서 데이터 전송을 행할 수 있게 된다. 예를 들면, 데이터 전송 제어 장치(120)가 장착되는 전자 기기가 프린터인 경우에는, 버스(90)를 점유하여 인자 데이터를 전송할 수 있게 된다. 상기의 결과, CPU(66)의 처리 부담을 경감시킬 수 있고, 시스템 전체의 실전송 속도를 높일 수 있다. 또한 CPU(66)에서 염가인 것을 채용할 수 있는 동시에, CPU 버스(96)로서 고속의 버스를 사용할 필요성이 없어진다. 이 때문에, 전자 기기의 저 비용화, 소규모화를 도모할 수 있게 된다.
3. SBP-2 코어(전송 실행 회로)의 구성
도 10에, 도 7의 SBP-2 코어(84)의 구성예를 도시한다. SBP-2 코어(84)는 전송 데이터를 일련의 패킷으로 자동적으로 분할하고, 분할된 일련의 패킷을 연속 전송하기 위한 회로이며, 주로 도 4의 A3, 도 5의 B1로 나타내는 패킷 전송을 하드웨어에 의해 실행한다.
메인 제어 회로(200)는 SBP-2 코어(84)의 전체를 제어하기 위한 회로이며, 레지스터(202, 204, 206, 208)를 포함한다.
여기서, 레지스터(202, 204, 206)는, 각각, 데이터 전송(하드웨어 SBP-2 처리)의 스타트 커맨드, 포즈 커맨드, 리쥼(resume) 커맨드를 펌웨어(CPU)가 발행하기 위한 레지스터이다. 즉, 펌웨어가 레지스터(202)에 1을 기록하면, 전송 데이터를 일련의 패킷으로 분할하여 연속 전송하는 처리가 개시한다. 그리고, 상기 전송 처리중에, 펌웨어가 레지스터(204)에 1을 기록하면, 데이터 전송 처리가 포즈되고, 레지스터(206)에 1을 기록하면, 포즈되어 있던 데이터 전송 처리가 재개된다.
레지스터(208)는 페이지 테이블의 존재, 비존재를 설정하기 위한 레지스터이다. 즉, 펌웨어는 이니시에이터로부터의 ORB를 해석하여, 이니시에이터의 데이터 버퍼에 페이지 테이블이 존재하지 않는다고 판단한 경우에는, 레지스터(208)에 1을 기록한다. 한편, 존재한다고 판단한 경우(도 6a의 경우)는, 레지스터(208)에 O을 기록한다.
페이지 테이블 패치회로(210)는 이니시에이터(상대 노드)의 데이터 버퍼(기억 수단)에 페이지 테이블이 존재하는 경우에, 그 페이지 테이블을 이니세이터로부터 패치하기 위한 처리를 행하는 회로이다. 더욱 구체적으로는, 페이지 테이블 패치 회로(210)는, 송신 헤더 생성 회로(260)에 페이지 테이블의 패치를 지시하고, 패치가 완료하면, 페이지 테이블 어드레스나 페이지 테이블 사이즈의 갱신을 페이지 테이블 생성 회로(220)에 지시한다.
페이지 테이블 생성 회로(220)는 이니시에이터의 데이터 버퍼에 페이지 테이블이 존재하지 않는 경우에, 가상적인 페이지 테이블을 생성하는 회로이다. 보다 구체적으로는, 메인 제어 회로(200)로부터 페이지 테이블의 생성이 지시되면, 주어진 알고리듬에 따라서 페이지 테이블을 생성한다. 그리고, 생성된 페이지 테이블을, 엘리먼트 보유 회로(230)나 버퍼 인터페이스(290)를 통하여 RAM의 HW용 페이지 테이블 영역에 기록하기 위한 처리를 행한다.
또한, 페이지 테이블이 존재하는지의 여부는, 상술한 바와 같이, 레지스터(208)의 설정치에 의거하여 판단된다. 또한, 페이지 테이블 패치회로(210), 페이지 테이블 생성 회로(220)에 의해 패치 또는 생성된 페이지 테이블은, RAM의 HW용 페이지 테이블 영역(도 8의 AR1)에 격납된다.
페이지 테이블 생성 회로(220)가 포함하는 레지스터(222)에는, 이니시에이터로부터의 ORB에 의해 지정된 페이지 경계 사이즈가 설정된다. 또한 레지스터(224, 226)에는, 페이지 테이블이 존재하는 경우에는, ORB에 의해 지정된 페이지 테이블 어드레스, 페이지 테이블 사이즈(엘리먼트수)가 설정된다(도 6b 참조). 한편, 페이지 테이블이 존재하지 않는 경우에는, 전송 데이터의 선두 어드레스와 데이터 길이가 설정된다(도 6c 참조). 또한 엘리먼트 카운터(228)는 페이지 테이블의 생성시에, 페이지 테이블의 엘리먼트수(엘리먼트 포인터)를 카운트하는 처리를 행한다.
엘리먼트 보유 회로(230)는 SBP-2 코어의 처리대상으로 되는 페이지 테이블 엘리먼트의 정보를 보유하는 회로이고, 페이지 테이블 엘리먼트의 세그먼트 길이를 보유하는 레지스터(232)와, 세그먼트 오프셋 어드레스를 보유하는 레지스터(234)를 포함한다.
전송 실행 제어 회로(240)는 SBP-2 코어에 의한 데이터 전송(스트림 전송)의 실행을 제어하는 회로이고, 레지스터(242, 244)를 포함한다. 그리고, 레지스터(242)는, 현재 처리중의 페이지 테이블 엘리먼트의 번호를 표시한다. 또한 레지스터(244)에는, 데이터 전송을 개시하는 페이지 테이블 엘리먼트의 번호가, 펌웨어에 의해 설정된다. 이로써, 펌웨어는 임의의 페이지 테이블 엘리먼트로부터의 데이터 전송을 개시할 수 있게 된다.
페이로드 분할 회로(250)는 전송 데이터를, 페이로드 사이즈의 패킷으로 분할하는 처리를 행한다. 페이로드 분할 회로(250)가 포함하는 레지스터(252)에는, ORB에 의해 지정된 최대 페이로드 사이즈가 설정된다. 또한 레지스터(254)는 실제의 페이로드 사이즈를 표시한다. 페이로드 분할 회로(250)는, RAM의 HW 페이지 테이블 영역(도 8의 AR1)으로부터 판독되어 레지스터(232)에 보유되는 페이지 테이블 엘리먼트의 세그먼트 길이와, 레지스터(252)에 설정된 최대 페이로드 사이즈에 의거하여, 페이로드 분할 처리를 행하게 된다.
송신 헤더 생성 회로(260)는 펌웨어에 의해 설정된 스피드 코드나 데스티네이션(destination) ID 등에 의거하여, 도 4의 A3, 도 5의 B1의 각 요구 패킷의 헤더를 생성하는 처리를 행한다. 그리고, 생성된 헤더는 RAM의 HW용 송신 헤더 영역(도 8의 AR3)에 격납된다. 이와 같이 본 실시예에서는, 연속 전송되는 일련의 요구 패킷의 헤더가 하드웨어에 의해 자동 생성되기 때문에, 펌웨어의 처리 부담을 대폭 경감시킬 수 있다.
트랜잭션 제어 회로(270)는 링크코어 등의 외부의 회로 블록으로부터의 에러 정보나 스테이터스(status) 정보를 받고, 트랜잭션의 실행을 위한 여러 가지 처리를 행한다. 그리고, 트랜잭션의 실행이 완료하면, 트랜잭션 완료 신호(TComp)를 액티브하여 페이지 테이블 패치회로(210)나 페이로드 분할 회로(250)에 알린다. 이와 같이 본 실시예의 SBP-2 코어는, 패킷 단위가 아니라, 트랜잭션 단위로 데이터 전송 처리를 관리하고 있다.
스플릿 타이머(280)는 트랜잭션의 개시 시에 스플릿 타임을 로드하고, 카운트 다운을 개시한다. 그리고, 카운트치가 O가 되면, 타임 아웃이 된 것을 트랜잭션 제어 회로(270)에 전달한다.
버퍼 인터페이스(290)는 도 7의 버퍼 매니저(70)와의 인터페이스로서 기능을 하는 회로이다. SBP-2 코어(84)의 각 블록은, 상기 버퍼 인터페이스(290)를 통하여, 버퍼 매니저(70)에 대하여 RAM(80)로의 액세스를 요구하게 된다.
3.1 메인 제어 회로
다음에, 메인 제어 회로(200)의 동작에 대하여 도 11의 플로우 챠트를 사용하여 설명한다.
우선, HW용 페이지 테이블 영역에 이미 격납되어 있는 페이지 테이블을 사용하는지의 여부를 판단하여(단계 S1), 사용하는 경우에는 단계(S5)로, 사용하지 않는 경우에는 단계(S2)로 이행한다. 이미 HW용 페이지 테이블 영역에 격납되어 있는 페이지 테이블을 사용하는지의 여부의 설정은, 펌웨어가 주어진 레지스터에 주어진 설정치를 기록하는 것으로 실현된다.
다음에, 도 10의 레지스터(208)의 설정치에 의거하여, 이니시에이터의 데이터 버퍼에 페이지 테이블이 존재하는지의 여부를 판단한다(단계(S2)). 그리고, 존재하는 경우에는, 페이지 테이블 패치회로(210)에 대하여, 페이지 테이블의 패치처리의 개시를 지시한다(단계(S3)). 한편, 존재하지 않는 경우에는, 페이지 테이블 생성 회로(220)에 대하여, 페이지 테이블의 생성처리의 개시를 지시한다(단계(S4)).
그리고, 페이지 테이블의 패치 또는 생성처리가 완료하면, 전송 실행 제어 회로(240)에 대하여, 전송 실행 처리(스트림 데이터 태스크)의 개시를 지시한다(단계(S5)).
또한, 본 실시예의 페이지 테이블 생성 회로(220)는 이하에 설명하는 바와 같은 수법으로 페이지 테이블을 생성한다.
예를 들면 도 12에 도시하는 바와 같이, 전송 데이터의 선두 어드레스(SA)가 페이지 경계(PBO, PB1)간에 있고, 종료 어드레스(EA)가 페이지 경계(PB4, PB5)간에 있었다고 한다. 상기의 경우에, 페이지 테이블 생성 회로(220)는, 페이지 경계(PB1, PB4)간(제 K, 제 L 페이지 경계간)의 페이지 테이블의 엘리먼트수가, 1(광의로는 소정 수)이 되는 가상적인 페이지 테이블을 생성한다.
보다 구체적으로는, 선두 어드레스(SA)와 페이지 경계(PB1)간이 X 종의 페이지 테이블 엘리먼트(제 1 페이지 테이블 엘리먼트)가 되고, 페이지 경계(PB1, PB4)간이 Y종의 페이지 테이블 엘리먼트(제 2 페이지 테이블 엘리먼트)가 되며, 페이지 경계(PB4)와 종료 어드레스(EA)간이 Z 종의 페이지 테이블 엘리먼트(제 3 페이지 테이블 엘리먼트)가 되는 3 페이지의 페이지 테이블을 생성한다.
단, 전송 데이터의 선두 어드레스(SA)가 페이지 경계(PB1; 제 K 페이지 경계)상에 있는 경우에는, X 종의 페이지 테이블 엘리먼트는 생성되지 않고, 2 페이지의 페이지 테이블로 된다. 또한, 전송 데이터의 종료 어드레스(EA)가 페이지 경계(PB4; 제 L 페이지 경계)상에 있는 경우에는, Z 종의 페이지 테이블 엘리먼트는 생성되지 않고, 2 페이지의 페이지 테이블이 된다. 더욱이, 전송 데이터의 선두 어드레스(SA)가 페이지 경계(PB0, PB1)간에 있고, 종료 어드레스(EA)가 페이지 경계(PB0, PB1)간 또는 PB1상에 있는 경우에는, SA, EA간이 X 종의 페이지 테이블 엘리먼트로 되는 1 페이지의 페이지 테이블이 생성된다.
또한, 본 실시예에서는 도 10의 페이로드 분할 회로(250)가, 최대 페이로드 사이즈가 페이지 경계 사이즈의 약수로 되는 페이로드 사이즈의 패킷으로, 전송 데이터를 분할하고 있다. 즉 도 13에 있어서, 최대 페이로드 사이즈(Max PLS)가 페이지 경계 사이즈(PBS)의 약수로 되는 패킷 분할이 행해진다.
상기와 같이, 최대 페이로드 사이즈(MaxPLS)를 페이지 경계 사이즈(PBS)의 약수로 하면, 예를 들면 도 13의 C1이나 C2로 나타내는 바와 같이, 페이지 경계(PB나 PB3)에 있어서 패킷의 페이로드가 페이지 경계를 걸치지 않게 된다. 따라서, 본 실시예와 같이 PB1, PB4간의 페이지 테이블 엘리먼트수가 1로 되는 페이지 테이블을 생성한 경우에도, 페이지 경계를 넘지 않는다는 제약을 준수하면서 데이터 전송을 행할 수 있게 된다.
3.2 전송 실행(스트림 태스크) 제어 회로
다음에, 전송 실행 제어 회로(240)의 동작에 대하여 도 14의 플로우 챠트를 사용하여 설명한다.
우선, 도 10의 커런트 엘리먼트 번호의 레지스터(242)에, 레지스터(244)의 스타트 엘리먼트 번호를 로드한다(단계(S40)). 그리고, 커런트 엘리먼트 번호의 페이지 테이블 엘리먼트를, RAM의 HW용 페이지 테이블 영역으로부터 판독하는 처리를 행한다(단계(S41)). 더욱 구체적으로는, 전송 실행 제어 회로(240)는 처리대상으로 되는 페이지 테이블 엘리먼트의 판독을 버퍼 인터페이스(290)에 지시한다. 그렇게 하면, 버퍼 인터페이스(290)는, 처리대상으로 되는 페이지 테이블 엘리먼트를 RAM의 HW용 페이지 테이블 영역으로부터 판독하며, 페이지 테이블 엘리먼트의 세그먼트 길이를 레지스터(232)에, 세그먼트 오프셋 어드레스를 레지스터(234)에 기록한다.
다음에, 페이로드 분할 회로(250)에 대하여 페이로드 분할 처리의 개시를 지시한다(단계(S42)).
다음에, 현재의 페이지 테이블 엘리먼트의 처리를 종료하였는지의 여부를 판단하여(단계(S43)), 종료하지 않고 있는 경우에는 단계(S42)로 되돌아간다. 한편, 종료한 경우에는, 모든 페이지 테이블 엘리먼트의 처리를 종료하였는지의 여부를 판단하고(단계(S44)), 종료하고 있지 않는 경우에는, 커런트 엘리먼트 번호를 +1하여(단계(S45)), 단계(S41)로 되돌아간다.
또한, 모든 페이지 테이블 엘리먼트의 처리를 종료하였는지의 여부는, 레지스터(226)의 페이지 테이블 사이즈를 8로 나눈 것으로 얻어지는 엘리먼트수와, 커런트 엘리먼트 번호를 비교하는 것으로 판단한다.
3.3 페이로드 분할 회로
다음에, 페이로드 분할 회로(250)의 동작에 대하여 도 15의 플로우 챠트를 사용하여 설명한다. 페이로드 분할 회로(2501)는 도 13에 도시하는 바와 같이 페이로드 사이즈의 패킷으로 전송 데이터를 분할하는 처리를 행하는 것이다.
우선, 도 10의 레지스터(232)에 격납되는 페이지 테이블 엘리먼트의 세그먼트 길이의 잔여 바이트수가, 최대 페이로드 사이즈 이상으로 되어 있는지의 여부를 판단한다(단계(S51)). 그리고, 잔여 바이트수가 최대 페이로드 사이즈 이상으로 되어 있는 경우에는, 패킷의 페이로드 사이즈를 최대 페이로드 사이즈에 설정한다(단계(S52)). 한편, 도 13의 C3이나 C4로 나타내는 바와 같이, 잔여 바이트수가 최대 페이로드 사이즈보다도 작게 되어 있는 경우에는, 패킷의 페이로드 사이즈를 잔여 바이트수에 설정한다(단계(S53)).
페이로드 사이즈의 설정후, 트랜잭션의 실행처리의 개시(송신 헤더의 생성)를 송신 헤더 생성 회로(260)에 지시한다(단계(S54)). 그리고, 트랜잭션 제어 회로(270)로부터의 신호(TComp)에 의해 트랜잭션의 완료가 알려지면, 엘리먼트 보유회로(230)에 대하여, 레지스터(232, 234)에 격납되어 있는 페이지 테이블 엘리먼트의 세그먼트 길이(잔여 바이트수), 세그먼트 오프셋 어드레스(선두 어드레스)의 갱신을 지시한다(단계(S55)).
다음에, 메인 제어 회로(200)로부터의 신호(Pause)에 의거하여, 처리를 포즈하는지의 여부를 판단한다(단계(S56)). 즉, 신호(Pause)가 액티브로 된 경우에는 처리를 포즈한다. 그리고 포즈된 경우에는, 신호(Pause)가 비액티브로 된 것을 조건으로, 처리를 리쥼한다(단계(S5)7).
3.4 송신 헤더 생성 회로, 트랜잭션 제어 회로
다음에, 송신 헤더 생성 회로(260), 트랜잭션 제어 회로(270)의 동작에 대하여 도 16의 플로우 챠트를 사용하여 설명한다.
우선, 요구 패킷의 헤더를 생성하여, HW용 송신 헤더 영역(도 8의 AR3)에 기록한다(단계(S61)). 더 구체적으로는, 도 4의 A3과 같이 이니시에이터에 데이터를 송신하는 경우에는, 라이트 요구(블록 라이트 요구) 패킷의 헤더를 HW용 송신 헤더 영역에 기록한다. 한편, 도 5의 B1과 같이 이니시에이터로부터 데이터를 수신하는 경우나, 페이지 테이블을 패치하는 경우에는, 리드 요구 패킷의 헤더를 HW용 송신 헤더 영역에 기록한다.
다음에, 전송의 스타트 신호(HWStart)를 액티브로 하여 전송의 개시를 지시하며(단계(S62)), 이니시에이터로부터의 ACK의 수신을 기다린다(단계(S63)).
다음에, 송신 패킷이 리드 요구 패킷인 경우에는, ACK 펜딩인지의 여부를 판단하고(단계(S65)), ACK 펜딩이 아닌 경우에는 단계(S72)로 이행하여 에러 포즈 상태로 한다. 한편, ACK 펜딩인 경우에는, 스플릿 타이머의 기동을 지시하고(단계(S66)), 응답 패킷의 수신을 기다린다(단계(S67)).
다음에, 응답 패킷의 수신이 퍼팩트인지의 여부를 판단하고(단계(S68)), DCE인 경우에는 재차 응답 패킷이 수신되는 것을 기다리며, 퍼팩트인 경우에는 단계(S69)로 이행하고, 그 밖의 경우에는 단계(S72)로 이행하여 에러 포즈 상태로 한다. 그리고, 단계(S69)로 이행한 경우에는 스플릿 타이머의 정지를 지시하며, 신호(TComp)를 액티브로 하여 전송 데이터의 포인터를 갱신한다(단계S70).
한편, 송신 패킷이 라이트 요구 패킷인 경우에는, 우선, ACK 펜딩인지의 여부를 판단한다(단계S71). 그리고, ACK 펜딩인 경우에는 단계(S66)로 이행하고, ACK 컴플리트인 경우에는 단계(S70)로 이행하며, 그 이외의 경우에는 단계(S72)로 이행하여 에러 포즈 상태로 한다.
또한, 단계(S72)로 이행하여 처리가 에러 포즈가 된 경우에는, 처리가 리즘된 것을 조건으로, 단계(S62)로 이행한다(단계(S73)). 즉, 상기 경우에는, HW용 송신 헤더 영역에 이미 기록되어 있는 송신 헤더를 재이용하여, 전송을 재개하게 된다.
4. HW(하드웨어) 전송과 FW(펌웨어) 전송의 조정
이상과 같이 본 실시예에 의하면, 도 4의 A3이나 도 5의 B1로 나타내는 연속 패킷 전송이 하드웨어에 의해 자동 실행된다. 보다 구체적으로는, 먼저, 펌웨어가, 연속 패킷 전송을 지시하는 HW 전송 스타트 커맨드(제 1 스타트 커맨드)를 발행한다(도 10의 레지스터(202)에 1을 기록한다). 그렇게 하면, SBP-2 코어가, 페이지 테이블의 패치 또는 생성처리, 페이로드 분할처리, 송신 헤더의 생성처리, 각 패킷의 전송 스타트 처리, 에러처리 등을 하드웨어에 의해 자동 실행한다. 이로써, 페이지 테이블분의 전송 데이터(ORB)의 리드 커맨드나 라이트 커맨드로 지정되는 사이즈의 전송 데이터)가, 일련의 패킷으로 분할되어 자동 전송되게 된다. 그리고, 모든 패킷의 전송이 완료하면, 그것이, 인터럽트 등을 사용하여 펌웨어에 알리게 한다. 따라서, 펌웨어는 HW 전송 스타트 커맨드를 발행한 후는, 연속 패킷 전송이 완료하는 것을 기다리는 것만으로 충분하다. 상기 결과, 펌웨어의 처리부담을 각별하게 경감할 수 있게 되고, 데이터 전송 제어 장치의 실전송 속도를 대폭 향상시킬 수 있다.
그런데, 이러한 연속 패킷 전송(HW 전송)을 지시하는 HW 전송 스타트 커맨드이외에도, 단일 패킷 전송을 지시하는 FW 전송 스타트 커맨드(제 2 스타트 커맨드)를 펌웨어가 발행하는 경우가 있다. 예를 들면, 상대 노드로부터 요구 패킷이 전송되어 온 경우에는, 그 요구 패킷에 대응하는 응답 패킷을 상대 노드에 전송할 필요가 있다. 상기의 경우에는, 그 응답 패킷을 전송하기 위한 FW 전송 스타트 커맨드를 펌웨어가 발행한다. 그리고, 응답 패킷은 상대 노드의 스플릿 타이머가 타임 아웃이 되기 전에 전송하여야 한다. 따라서, 펌웨어는 요구 패킷을 받아들이고 나서, 가능하면 빠른 시기에, FW 전송 스타트 커맨드를 발행하여 응답 패킷을 전송할 필요가 있다.
그런데, 일단, HW 전송(연속 패킷 전송)이 개시하여 버리면, 모든 패킷의 전송이 완료할 때까지, 어느 정도의 대기 시간이 필요하게 된다. 특히, 전송 데이터의 사이즈가 큰 경우에는, 상기 대기 시간은 대단히 길어진다. 따라서, HW 전송의 완료를 기다리고 있었다면, 상대 노드의 스플릿 타이머가 타임 아웃하여 버리는 등의 좋지 못한 상황이 생길 가능성이 있다.
그래서, 본 실시예에서는, HW 전송기간에, FW 전송 스타트 커맨드가 발행된 경우에는, HW 전송에 있어서의 1개의 트랜잭션(또는 1개의 패킷 전송)의 완료를 기다리고, FW 전송(FW 전송 스타트 커맨드에 의한 패킷 전송)을 허가하는 조정을 행하고 있다.
예를 들면 도 17에서는, E1에 있어서 HW 전송 스타트 커맨드가 발행되어 있고 이로써 E2로 나타내는 바와 같이 HW 전송이 스타트한다. 상기 경우에 E3과 같이 FW 전송 스타트 커맨드가 발행되면, E4로 나타내는 바와 같이 트랜잭션(4)의 완료를 기다리고 FW 전송에 의한 1개의 패킷 전송이 행해진다. 그리고, FW 전송이 완료하면, E5로 나타내는 바와 같이 HW 전송이 재개한다.
상기와 같이 하는 것으로, HW 전송이 한창일 때에 FW 전송을 인터럽트 하는 것이 가능하게 되고, HW 전송의 완료를 기다리지 않고서, FW 전송을 실행할 수 있게 된다. 이로써, FW 전송이 기다리게 되는 것으로 상대 노드의 스플릿 타이머가 타임 아웃하여 버리는 좋지 못한 상황을 방지할 수 있다.
또한, 도 17의 E4로 도시하는 바와 같이, 1개의 트랜잭션의 완료를 기다려 FW 전송이 행해지기 때문에, HW 전송에 전송 에러가 생기는 등의 좋지 못한 상황도 생기지 않는다.
또한, 1개의 트랜잭션의 완료후, 다음 트랜잭션이 개시하기까지의 기간은 하층의 링크코어나 PHY 디바이스가 SBP-2 코어에 의해 점유되어 있지 않다. 따라서, 상기 기간에 FW 전송의 처리를 인터럽트하면, SBP-2 코어에 의해 점유되어 있지 않은 링크코어나 PHY 디바이스를 이용하여 패킷을 전송할 수 있게 되어, 안성마춤이다.
또한, 이상에서는, 1개의 트랜잭션(요구 패킷과 그 요구 패킷에 대응하는 응답 패킷)의 완료를 기다려 FW 전송을 행하게 하는 경우에 대하여 설명하였지만, 1개의 패킷 전송의 완료를 기다려 FW 전송을 행하게 하는 것도 가능하다.
4.1 조정 회로의 구성 및 동작
다음에, 본 실시예의 조정 회로의 구성 및 동작에 대하여 구체적으로 설명한다. 도 18에, 도 7의 DMAC(40)의 상세한 구성예를 도시한다.
도 18에 있어서, DMAC(4O)는, 조정 회로(400)와 액세스 요구 발생 회로(410)와 어드레스 발생 회로(420)와 액세스 요구 실행 회로(430)를 포함한다.
여기서 조정 회로(400)는 HW 전송과 FW 전송의 조정을 행하는 회로이다. 보다 구체적으로는, HW 전송의 실행중에, FW 전송 스타트 커맨드가 발행된 경우에는, HW 전송에 있어서의 1개의 트랜잭션(또는 1개의 패킷 전송)의 완료를 기다리고, FW 전송 스타트 커맨드에 의한 패킷 전송을 허가하는 조정을 행한다.
예를 들면, CPU(펌웨어)가 HW 전송 스타트 커맨드(제 1 스타트 커맨드)를 발행하고, 레지스터(202)에 1을 기록하면, SBP-2 코어(84; 전송 실행 회로)에 의한 HW 전송이 스타트한다. 그리고, 도 16의 단계(S63)에 도시하는 바와 같이, SBP-2 코어(84)는 각 패킷(트랜잭션)의 전송 개시를 요구할 때마다 HWStart(제 1 스타트 신호)를 1(액티브)로 한다.
한편, CPU가 FW 전송 스타트 커맨드(제 2 스타트 커맨드)를 발행하여, 레지스터(440)에 1을 기록하면, FW 전송의 개시가 요구되고, FWStart(제 2 스타트 신호)가 액티브로 된다.
그리고, 조정 회로(4OO)는 이들의 HWStart, FWStart나, 링크코어(20)로부터의 COmp, NotComp, SelfID를 받아, 조정처리를 행하게 된다.
액세스 요구발생회로(410)는 버퍼 매니저(70)로부터의 판독 애크놀리지먼트인 RACK나 FIFO(30)로부터의 FULL을 받아, 판독 요구인 RREQ를 버퍼 매니저(70)에 출력한다.
어드레스 발생 회로(420)는 조정 회로(400)로부터의 HWDMARun, RealGo, 버퍼 매니저(70)로부터의 RDATA 등을 받고, RAM(80)의 판독 어드레스인 RADR를 발생한다.
액세스 요구 실행 회로(430)는 조정 회로(400)로부터의 RealGo, FIFO(30)로부터의 EMPTY, 링크코어(20)로부터의 각종 제어 신호를 받아, 액세스 요구를 실행하는 처리를 행한다.
도 19a, 도 19b, 도 20에, 조정 회로(400)의 상태 천이도를 도시한다.
도 19a에 있어서, 상태(SO0)에서는 HWRequested=0으로 되어 있다. 그리고, 이 상태에서, HWStart=1 또한 SelfID(자기 식별 기간 신호)=O이 되면 , 다음의 클록으로 상태(S01)로 이행하며, HWRequested=1이 된다. 즉, 자기 식별 기간 중에서는 없을 때에 HWStart가 1이 되면, HW 전송이 요구된 것을 나타내는 신호인 HWRequested가 1이 된다.
또한, 도 19b에 있어서, 상태(S10)에서는 FWRequested=0으로 되어 있다. 그리고, 상기 상태에서, FWStart=1 또한 SelfID=O이 되면, 다음 클록에서 상태(S11)로 이행하고, FWRequested=1이 된다. 즉, 자기 식별 기간중이 아닐 때에 FWStartr가 1이 되면 , FW 전송이 요구된 것을 나타내는 신호인 FWRequested가 1이 된다.
도 20에 있어서, 상태(S20)에서는, HWGo, FWGo, HWDXIARun, FWDMARun, HWComp, FWComp, HWNot Comp, FWNot Comp가 O으로 되어 있다.
상태(S20)에서 HWRequested=1(도 19a의 상태(S01)) 또한 FWRequested=O이 되면, 다음 클록에서 상태(S21)로 이행하고, HW 전송을 스타트시키는 신호인 HWGo=1이 된다. 그리고, 다음 클록에서 HWGo=0, HWDMARun=1이 된다(상태(S22)).
다음에, 링크코어(20)로부터의 전송 완료 신호인 Comp=1이 되면, 다음 클록에서 HWComp=1, HWDMARun=O이 된다(상태(S23)). 한편, 전송이 정확하게 완료하지 않는 것을 나타내는 신호인 NotComp=1이 되면, 다음 클록에서 HWNotComp=1, HWDMARun=0이 된다(상태(S24)).
한편, 상태(S20)에 있어서 FWRequested=1(도 19b의 상태(S11))이 되면, 다음 클록에서 상태(S25)로 이행하고, FW 전송을 스타트시키는 신호인 FWGo=1이 된다. 그리고, 다음 클록에서 FWGo=0, FWDMARun=1이 된다(상태(S26)).
다음에, Comp=1이 되면, 다음 클록에서 FWComp=1, FWDMARun=0이 된다(상태(S27)). 한편, NotComp=1이 되면, 다음 클록에서 FWNotComp=1, FWDMARun=O이 된다(상태(S28)).
다음에, 조정 회로(400)의 동작을 도 21, 도 22, 도 23의 타이밍 파형도를 사용하여 설명한다.
도 21은 FWStart(제 2 스타트 신호)보다도 먼저 HWStart(제 1 스타트 신호)가 액티브로 된 경우의 타이밍 파형도이다.
도 21의 F1로 나타내는 바와 같이 SBP-2 코어(84)로부터의 HWStart가 1이 되면, F2로 나타내는 바와 같이 HWReqested=1이 된다(도 19a의 상태(SO1)). 그렇게 하면, F3에 도시하는 바와 같이 HWGo=1이 되고(도 20의 상태(S21)), F4로 나타내는 바와 같이, 어드레스 발생 회로(420), 액세스 요구 실행 회로(430)로의 출력인 Real Go=1이 된다. 이로써, 어드레스 발생 회로(420), 액세스 요구 실행 회로(430)에 의한 HW 전송 처리가 개시된다.
HWGo=1이 되면, F5로 나타내는 바와 같이, 어드레스 발생 회로(420)로의 출력인 HWDMARun=1이 된다(상태(S22)). 그리고, 트랜잭션(패킷 전송)이 완료하고, F6으로 나타내는 바와 같이 링크코어(20)로부터의 완료 신호(Comp=1)가 되면, F7, F8로 나타내는 바와 같이 HWComp=1, HWDMARun=0이 된다(상태(S23)). 그리고, F9로 나타내는 바와 같이 HWRequested=0으로 되돌아간다(도 19a의 상태(SOO)).
한편, HW 전송중에 FW 전송 스타트 커맨드가 발행된 경우, 즉, F10으로 나타내는 바와 같이 HWStart=1로 되고 나서 Comp=1이 되기 전에 FWStart=1이 된 경우에는, F11로 나타내는 바와 같이 FWRequested=1이 된다(도 19b의 상태(S11)). 그러나, 상기 경우에는, F12로 나타내는 바와 같이, 즉시 FWGo=1로는 되지 않는다. 그리고, F7로 나타내는 바와 같이 HWCornp=1이 된 후에, F13으로 나타내는 바와 같이 FWGo=1이 되고(상태(S25)), F14로 나타내는 바와 같이 Real Go=1이 된다.
FWGo=1이 되면, F16으로 나타내는 바와 같이, 레지스터(440; 레지스터(46))로의 출력인 FWDMARun=1이 된다. 이로써, FWDMARun=0으로 되돌아갈 때까지, CPU에 의한 레지스터(440)로의 기록이 마스크된다.
그리고, F17로 나타내는 바와 같이 완료 신호(Comp=1)가 되면, F18, F19로 나타내는 바와 같이 FWComp=1, FWDMARun=O이 된다(상태(S27)). 다음에, F20으로 나타내는 바와 같이 FWRequested=0으로 되돌아간다(도 19b의 상태(S10)). 그리고, F21로 나타내는 바와 같이 HW 전송이 재개된다.
이상과 같이 본 실시예에서는, HWStart=1이 된 후에 FWStart=1이 된 경우에는, HW 전송이 먼저 스타트하고, HW 전송에 있어서의 1개의 트랜잭션이 완료한 후에, FW 전송이 스타트한다. 그리고, FW 전송이 완료하면, HW 전송이 재개한다.
도 22는 HWStart와 FWStart가 동시에 액티브로 된 경우의 타이밍 파형도이다.
도 22의 G1, G2로 나타내는 바와 같이 HWStart와 FWStart가 동시에 1이 된 경우에는, G3으로 나타내는 바와 같이 FW 전송이 우선된다. 이것은 도 20의 상태(S20, S21)로부터 분명한 바와 같이, 도 22의 G4로 나타내는 바와 같이 FWRequested=1이 되면, HWRequested가 O인지 1인지에 상관없이, FWGo=1이 되기 때문이다. 그리고, G5로 나타내는 바와 같이 FW 전송이 완료한 후에, G6에 도시하는 바와 같이 HW 전송이 스타트한다.
이상과 같이 본 실시예에서는, HWStart와 FWStart가 동시에 1이 된 경우에는, FW 전송을 우선하여 먼저 스타트시킨다. 상기와 같이 하는 것으로, 상대 노드로부터의 요구 패킷에 대하여 즉시 응답 패킷을 돌려 줄 수 있게 된다.
도 23은 HWStart보다도 먼저 FWStart가 액티브로 된 경우의 타이밍 파형도이다.
도 23의 H1, H2로 나타내는 바와 같이, FWStart 쪽이 HWStart보다도 먼저 1이 되면, 우선, H3으로 나타내는 바와 같이 FW 전송이 먼저 스타트한다. 그리고, H4로 나타내는 바와 같이 FW 전송에 의한 1개의 패킷 전송이 완료한 후에, H5로 나타내는 바와 같이 HW 전송이 스타트한다.
이상과 같이 본 실시예에서는, FWStart=1이 된 후에 HWStart=1이 된 경우에는, FW 전송이 먼저 스타트하고, FW 전송이 완료한 후에, HW 전송이 스타트한다. 상기와 같이 하는 것으로, 상대 노드로부터의 요구 패킷에 대하여 즉시 응답 패킷을 돌려 줄 수 있게 된다.
4.2 HW용 헤더 영역, 통상 헤더 영역간의 어드레스 전환
그런데, 본 실시예에서는, 헤더 영역(제어 정보 영역)이, 도 8의 AR2, AR3으로 나타내는 바와 같은, SBP-2 코어에 의해 헤더(제어 정보)가 기록되는 HW용 헤더 영역(제 2 제어 정보 영역)과, AR4, AR6으로 나타내는 바와 같은, 펌웨어나 링크 코어 등에 의해 기록되는 통상의 헤더 영역(제 1 제어 정보 영역)으로 분리되어 있다.
상기한 바와 같이, SBP-2 코어에 전용의 HW용 헤더 영역을 설치하는 것으로, SBP-2 코어는 생성한 헤더를 연속하여 HW용 헤더 영역에 기록할 수 있게 된다. 이로써, SBP-2 코어의 처리나 회로 구성을 간소화 할 수 있게 된다. 즉, HW용 헤더 영역과 통상의 헤더 영역이 분리되어 있지 않으면, SBP-2 코어가 생성한 헤더와, 그 이외의 헤더와가 헤더 영역에서 혼재하게 되어 버린다. 이로써, 헤더의 기록시의 어드레스 제어가 복잡화 하고, SBP-2 코어의 회로 규모가 증대화 한다는 문제가 생긴다. 본 실시예와 같이 SBP-2 코어에 전용의 HW용 헤더 영역을 설치하면, 이러한 문제를 해결할 수 있으며, SBP-2 코어의 회로의 소규모화를 도모할 수 있게 된다.
그리고, 본 실시예에서는, 도 10의 어드레스 발생 회로(420)가, 조정 회로(400)로부터의 조정결과인 신호 HWDMARun에 의거하여, HW용 헤더 영역과 통상의 헤더 영역의 어느 쪽의 어드레스를 발생할지를 전환하고 있다.
더욱 구체적으로는, 예를 들면 도 24에 도시하는 바와 같이, HWDMARun=1의 경우(HW 전송의 경우)에는, 포인터(PTR)를 HW용 송신 헤더 영역(AR3)에 설정한다. 그리고, 포인터(PTR)를 갱신하는 것으로, SBP-2 코어에 의해 생성된 송신 헤더의 기록 어드레스를 발생한다.
한편, HWDMARun=0의 경우(HW 전송이 아닌 경우)에는, 포인터(PTR)가 송신 헤더 영역(AR6)에 설정되도록, 포인터(PTR)를 전환한다. 그리고, 포인터(PTR)를 갱신하는 것으로, 펌웨어 등에 의해 생성되는 송신 헤더의 기록 어드레스를 발생한다.
이상과 같이 본 실시예에서는, 조정 회로(400)로부터의 신호(HWDMARun)를 이용할 뿐이라는 간이한 수법으로, HW용 헤더 영역, 통상 헤더 영역간의 어드레스 전환에 성공하고 있다. 그리고, 이러한 어드레스 전환이 가능하게 되는 것으로, SBP-2 코어에 전용의 HW용 헤더 영역에 대하여, SBP-2 코어가 생성한 헤더를 연속하여 기록할 수 있게 된다. 상기의 결과, 연속 전송되는 일련의 패킷의 헤더를 하드웨어에 의해 생성하는 것이 용이하게 된다.
5. 데이터 영역의 분리(ORB 영역과 스트림 영역으로의 분리)
본 실시예에서는, 도 7의 RAM(80; 패킷 기억 수단)을, 도 8에 도시하는 바와 같이 헤더 영역(AR2, AR3, AR4, AR6)과 데이터 영역(AR5, AR7, AR8, AR9)으로 분리하는 동시에, 데이터 영역을, ORB 영역(AR5, AR7)과 스트림 영역(AR8, AR9)으로 분리하고 있다.
즉, RAM을 헤더 영역과 데이터 영역으로 분리하는 것으로, 펌웨어는, 헤더 영역에서 헤더를 연속하여 판독하거나, 헤더 영역에 헤더를 연속하여 기록할 수 있게 된다. 따라서, 펌웨어의 처리 부담을 어느 정도 경감시킬 수 있다는 이점이 있다. 그러나, 데이터 전송의 더욱 고속화라는 관점에서는, 헤더 영역과 데이터 영역의 분리만으로는 불충분함이 판명되었다.
예를 들면, 도 25a에서는, 패킷이 헤더와 데이터로 분리되고, 헤더(1, 2, 3)가 헤더 영역에 격납되며, 데이터(1, 2, 3)가 데이터 영역에 격납되어 있다.
여기서, 데이터에는, 상술한 바와 같이, SBP-2(제 1 층)용의 ORB(제 1 데이터)와, 상층인 애플리케이션층(제 2 층)용의 스트림이 있다. 따라서, RAM을 헤더 영역과 데이터 영역으로 분리하는 것만으로는, 도 25a의 D1, D2, D3으로 나타내는 바와 같이, 데이터 영역에서 ORB와 스트림이 혼재하게 되어 버린다.
이 때문에, 예를 들면, RAM으로부터 애플리케이션층의 디바이스에 스트림을 전송하는 경우에는, 다음과 같은 처리가 필요하게 된다. 즉, 우선, 데이터 포인터를 D1의 위치에 설정하여 스트림(11, 12, 13)을 판독하고, 다음에, 데이터 포인터를 D2의 위치로 변경하여 스트림(21, 22, 23)을 판독한다. 그 후, 데이터 포인터를 D3의 위치로 변경하여 스트림(31, 32, 33)을 판독한다.
상기와 같이, RAM을 단순하게 헤더 영역과 데이터 영역으로 분리하는 것만으로는, 애플리케이션층의 디바이스로의 스트림 전송 시에, 데이터 포인터의 위치를 번잡하게 전환하는 제어가 필요하게 되어, 처리의 복잡화나 회로의 대규모화라는 사태를 초래한다. 또한, 데이터 영역으로부터 연속하여 스트림을 판독할 수 없기 때문에, 데이터 전송 제어 장치의 실전송 속도를 그 만큼 향상시킬 수 없다.
한편, 도 25b에서는, 데이터 영역을 ORB 영역과 스트림 영역으로 분리하고 있다. 상기와 같이 하면, 펌웨어는 ORB 영역으로부터 ORB1, 2, 3을 연속하여 판독할 수 있게 된다. 또한, 상술한 SBP-2 코어(84)의 기능을 이용하여, 펌웨어를 개재시키지 않고서 스트림(11 내지 33)을 RAM의 스트림 영역으로부터 연속하여 판독하고, 애플리케이션층의 디바이스로 전송할 수 있게 된다. 즉, 도 26에 도시하는 바와 같이, 상대 노드(123; 예를 들면 퍼스널 컴퓨터)와 애플리케이션층의 디바이스(예를 들면 프린터의 인자처리를 행하는 디바이스) 사이에서, 펌웨어(CPU; 66)의 개재 없이, 스트림(예를 들면 인자 데이터)을 고속으로 전송할 수 있게 된다. 상기의 결과, 도 25a와 비교하여, 펌웨어의 처리 부담을 각별히 경감시킬 수 있는 동시에, 데이터 전송을 비약적으로 고속화할 수 있게 된다.
또한, 데이터 전송 제어 장치(120)가 스트림을 수신하는 경우 뿐만 아니라, 스트림을 송신하는 경우에도, 데이터 영역을 송신 ORB 영역(도 8의 AR7)과 송신 스트림 영역(AR8)으로 분리하는 것으로, 데이터 전송의 고속화를 도모할 수 있다. 즉 도 26의 방향(DR1)에 도시하는 바와 같이 상대 노드(123)로부터 애플리케이션층의 디바이스(124; 자기 노드)에 스트림을 전송하는 경우 뿐만 아니라, 방향(DR2)으로 나타낸 바와 같이 애플리케이션층의 디바이스(124)로부터 상대 노드(123)에 스트림을 전송하는 경우에 있어서도, 데이터 전송의 고속화를 도모할 수 있다.
6. 트랜잭션 라벨을 이용한 기록 영역의 전환
IEEE1394에 있어서는, 각 트랜잭션을 식별하기 위한 정보로서, 트랜잭션 라벨(t1)이라고 불리는 것이 사용된다.
즉, 트랜잭션의 요구 노드는 요구 패킷 중에 트랜잭션 라벨(t1)을 포함시키고, 응답 노드에 송신한다. 그리고, 상기 요구 패킷을 수신한 응답 노드는, 응답 패킷 중에, 상기와 동일한 t1을 포함하여, 요구 노드에 회신한다. 요구 노드는, 회신된 응답 패킷으로 포함되는 t1을 조사하는 것으로, 그 응답 패킷이, 자신이 요구한 트랜잭션에 대응하는 응답인 것을 확인할 수 있게 된다.
트랜잭션 라벨(t1)은 응답 노드와의 관계에 있어서 독특하기에 충분하다. 더욱 구체적으로는, 예를 들면 요구 노드(ND1)가 응답 노드(ND2)에 대하여 t1=TN1의 트랜잭션을 발행한 경우에는, 그 트랜잭션이 미완료인 동안은, 요구 노드(ND1)는 응답 노드(ND2)에 대하여, t1=TN1이 붙여진 다른 트랜잭션을 발행할 수는 없다. 즉, 각 트랜잭션은 트랜잭션 라벨(t1)과 소스 ID와 데스티네이션 ID에 의해 독특하게 특정되게 된다. 반대로 말하면, 트랜잭션 라벨(t1)은, 상기의 제약이 지켜지고 있는 한, 어떠한 값을 사용하는 것도 가능하게 되며, 다른 노드는, 어떠한 t1도 받아들일 수 없게 된다.
그런데, 요구 노드가 요구 패킷을 송신하고, 응답 패킷의 회신을 기다리는 경우, 응답 패킷이 회신되어 왔을 때에 행하는 처리가, 이미 결정되어 있는 경우가 있다. 그래서, 본 실시예는, 상기와 같은 트랜잭션 라벨(t1)의 성질에 착안하여, 다음과 같은 수법을 채용하고 있다.
즉, 도 27a에 도시하는 바와 같이, 트랜잭션을 개시시키는 요구 패킷을 응답 노드에 대하여 송신할 때에, 요구 패킷으로 포함되는 트랜잭션 라벨(t1; 광의로는 트랜잭션 식별 정보) 중에, 응답 패킷의 회신 시에 행해야 될 처리를 지시하는 지시정보를 포함하게 한다. 그리고, 응답 노드로부터 응답 패킷을 수신하였을 때에, t1에 포함되는 지시정보에 따른 처리를 실행하도록 한다.
상기와 같이 하면, 응답 패킷이 반송되어 왔을 때에, 펌웨어가 관여하지 않고서, t1에 포함되는 지시정보에 따른 처리를, SBP-2 코어(84) 등의 하드웨어에 의해 실행할 수 있게 된다. 이로써, 펌웨어의 처리 부담을 경감시킬 수 있는 동시에, 데이터 전송의 고속화를 도모할 수 있다.
더욱 구체적으로는, 본 실시예에서는, 응답 노드로부터 응답 패킷을 수신한 경우에, t1에 포함되는 지시정보에 의해 지시되는 영역에, 그 응답 패킷을 격납하 도록 하고 있다.
즉 도 27b에 도시하는 바와 같이, 트랜잭션 라벨(t1)의 비트(5, 4)를, 지시정보를 나타내는 비트로서 미리 예약하여 둔다.
그리고, 회신되어 온 응답 패킷을 HW(하드웨어)용 영역에 기록하는 경우에는, 요구 패킷의 t1의 비트(5)를 1에 세트하고, 응답 노드에 송신한다. 한편, 회신되어 온 응답 패킷을 FW(펌웨어)용 영역에 기록하는 경우에는, 요구 패킷의 t1의 비트(5)를 0에 세트하며, 응답 노드에 송신한다.
또한, 회신되어 온 응답 패킷을 스트림 영역에 기록하는 경우에는, 요구 패킷의 t1의 비트(4)를 1에 세트하고, 응답 노드에 송신한다. 한편, 회신되어 온 응답 패킷을 ORB 영역에 기록하는 경우에는, 요구 패킷의 t1의 비트(4)를 O에 세트하며, 응답 노드에 송신한다.
상기와 같이 하면, 응답 패킷이 회신되어 왔을 때에, 도 28에 도시하는 바와 같이 응답 패킷의 헤더, 데이터가 RAM의 각 영역에 기록되게 된다.
즉, t1=1×××××(×는 돈·케어의 의미)인 경우에는, 응답 패킷의 헤더는, HW용 수신 헤더 영역에 기록하고, t1=0×××××인 경우에는, FW용 수신 헤더 영역에 기록된다. 또한, t1=11××××인 경우에는, 응답 패킷의 데이터는, HW용 수신 스트림 영역에 기록되고, t1=1O××××인 경우에는, HW용 페이지 테이블 영역에 기록된다. 또한 t1=O1××××인 경우에는, 응답 패킷의 데이터는, FW용 수신 스트림 영역에 기록되고, t1=00××××인 경우에는, FW용 수신 ORB 영역에 기록된다.
상기와 같이 하는 것으로, 펌웨어를 개재시키지 않고서, 응답 패킷의 헤더, 데이터를, 하드웨어(회로)에 의해 RAM의 각 영역에 자동적으로 기록할 수 있게 된다. 그리고, RAM에 응답 패킷을 기록하는 처리를 행하는 하드웨어의 구성도 간소화 할 수 있고, 데이터 전송 제어 장치의 소규모화를 도모할 수 있다.
또한, 도 25b에서 설명하는 바와 같이, 패킷의 헤더를 헤더 영역에, 0RB를 ORB 영역에, 스트림을 스트림 영역에 자동적으로 기록할 수 있기 때문에, 하드웨어의 처리의 간소화, 데이터 전송의 고속화도 도모할 수 있게 된다.
7. 전자 기기
다음에, 본 실시예의 데이터 전송 제어 장치를 포함하는 전자 기기의 예에 대하여 설명한다.
예를 들면 도 29a에 전자 기기의 1개인 프린터의 내부 블록도를 도시하고, 도 30a에 그 외관도를 도시한다. CPU(마이크로 컴퓨터; 510)는 시스템 전체의 제어 등을 행한다. 조작부(511)는 프린터를 사용자가 조작하기 위한 것이다. ROM(516)에는, 제어 프로그램, 폰트 등이 격납되고, RAM(518)은 CPU(510)의 워크 영역으로서 기능을 한다. 표시 패널(519)은 프린터의 동작 상태를 사용자에게 알리기 위한 것이다.
PHY 디바이스(502), 데이터 전송 제어 장치(500)를 개재시켜, 퍼스널 컴퓨터 등의 다른 노드로부터 보내져 온 인자 데이터는, 버스(504)를 개재시켜 인자 처리부(512)에 직접 보내진다. 그리고, 인자 데이터는, 인자 처리부(512)에서 주어진 처리가 실시되고, 프린트 헤더 등으로 이루어지는 인자부(데이터를 출력하기 위한 장치; 514)에 의해 종이에 인자되어 출력된다.
도 29b에 전자 기기의 하나인 스캐너의 내부 블록도를 도시하고, 도 30b에 그 외관도를 도시한다. CPU(520)는 시스템 전체의 제어 등을 행한다. 조작부(521)는 스캐너를 사용자가 조작하기 위한 것이다. ROM(526)에는 제어 프로그램 등이 격납되며, RAM(528)은 CPU(52O)의 워크 영역으로서 기능을 한다.
광원, 광전변환기 등으로 이루어지는 화상 판독부(데이터를 집어넣기 위한 장치; 522)에 의해 원고의 화상이 판독되고, 판독된 화상의 데이터는 화상 처리부(524)에 의해 처리된다. 그리고, 처리후의 화상 데이터가 버스(505)를 통하여 데이터 전송 제어 장치(500)에 직접 보내진다. 데이터 전송 제어 장치(500)는, 상기 화상 데이터에 헤더 등을 부가하는 것으로 패킷을 생성하며, PHY 디바이스(502)를 통하여 퍼스널 컴퓨터 등의 다른 노드에 송신한다.
도 29c에 전자 기기의 1개인 CD-RW 드라이브의 내부 블록도를 도시하고, 도 30c에 그 외관도를 도시한다. CPU(530)는 시스템 전체의 제어 등을 행한다. 조작부(531)는 CD-RW를 사용자가 조작하기 위한 것이다. ROM(536)에는 제어 프로그램 등이 격납되고, RAM(538)은 CPU(530)의 워크 영역으로서 기능을 한다. 레이저, 모터, 광학계 등으로 이루어지는 판독 & 기록부(데이터를 집어넣기 위한 장치 또는 데이터를 기억하기 위한 장치; 533)에 의해 CD-RW(532)로부터 판독된 데이터는, 신호 처리부(534)에 입력되며, 에러 정정 처리 등의 주어진 신호처리가 실시된다. 그리고, 신호처리가 실시된 데이터가, 버스(506)를 통하여 데이터 전송 제어 장치(500)에 직접 보내진다. 데이터 전송 제어 장치(500)는 상기 데이터에 헤더 등을 부가하는 것으로 패킷을 생성하고, PHY 디바이스(502)를 통하여 퍼스널 컴퓨터 등의 다른 노드에 송신한다.
한편, PHY 디바이스(502), 데이터 전송 제어 장치(500)를 통하여, 다른 노드로부터 보내져 온 데이터는, 버스(506)를 통하여 신호 처리부(534)에 직접 보내진다. 그리고, 신호 처리부(534)에 의해 상기 데이터에 주어진 신호처리가 실시되고, 판독&기록부(533)에 의해 CD-RW(532)에 기억된다.
또한, 도 29a, 도 29b, 도 29c에 있어서, CPU(51O, 520, 530) 외에, 데이터 전송 제어 장치(50O)에서의 데이터 전송제어를 위한 CPU를 별로로 설치하여도 좋다.
또한, 도 29a, 도 29b, 도 29c에서는 RAM(501; 도 7의 RAM(80)에 상당)이 데이터 전송 제어 장치(500)의 외부에 설치되어 있지만, RAM(501)을 데이터 전송 제어 장치(500)에 내장시켜도 좋다.
본 실시예의 데이터 전송 제어 장치를 전자 기기에 사용하는 것으로, 고속인 데이터 전송이 가능하게 된다. 따라서, 사용자가 퍼스널 컴퓨터 등에 의해 프린트 아웃의 지시를 행한 경우에, 적은 타임래그로 인자가 완료하게 된다. 또한, 스캐너의 화상 집어넣음의 지시후에, 적은 타임래그로 판독 화상을 사용자는 볼 수 있게 된다. 또한, CD-RW로부터의 데이터의 판독이나, CD-RW에서의 데이터의 기록을 고속으로 행할 수 있게 된다. 또한, 예를 들면 1개의 호스트 시스템에 복수의 전자 기기를 접속하여 이용하거나, 복수의 호스트 시스템에 복수의 전자 기기를 접속하여 이용하는 것도 용이하게 된다.
또한 본 실시예의 데이터 전송 제어 장치를 전자 기기에 사용하는 것으로, CPU 상에서 동작하는 펌웨어의 처리 부담이 경감되고, 염가의 CPU나 저속의 버스를 사용하는 것이 가능하게 된다. 더욱이, 데이터 전송 제어 장치의 저비용화, 소규모화를 도모할 수 있기 때문에, 전자 기기의 저비용화, 소규모화도 도모할 수 있게 된다.
또 본 실시예의 데이터 전송 제어 장치를 적용할 수 있는 전자 기기로서는, 상기 이외에도 예를 들면, 여러 가지 광디스크 드라이브(CD-ROM, DVD), 광자기 디스크 드라이브(MO), 하드 디스크 드라이브, TV, VTR, 비디오 카메라, 오디오, 전화기, 프로젝터, 퍼스널 컴퓨터, 전자수첩, 워드프로세서 등 여러 가지를 생각할 수 있다.
또한, 본 발명은 본 실시예에 한정되지 않으며, 본 발명의 요지의 범위내에서 여러 가지 변형 실시가 가능하다.
예를 들면, 본 발명의 데이터 전송 제어 장치의 구성은, 도 7에 도시하는 구성이 특히 바람직하지만, 이것에 한정되는 것은 아니다.
또한, 전송 실행 회로(SBP-2 코어)의 구성도 도 10에 도시하는 구성이 특히 바람직하지만, 이것에 한정되는 것은 아니며, 적어도, 처리 수단(펌웨어)이 제 1 스타트 커맨드(HW 전송 스타트 커맨드)를 발행한 경우에, 전송 데이터를 일련의 패킷으로 분할하여 연속 전송하기 위한 회로이면 좋다. 예를 들면 전송 실행 회로는, 페이지 테이블 패치 회로, 페이지 테이블 생성 회로, 페이로드 분할 회로, 전송 실행 제어 회로, 송신 헤더 생성 회로(제어 정보 생성 회로) 등의 회로 블록을 포함하는 것이 바람직하지만, 이들의 회로 블록의 일부를 포함하지 않는 구성으로 할 수 있다.
또한, 조정 회로의 조정 수법도, 도 21, 도 22, 도 23 등으로 설명한 수법이 특히 바람직하지만, 이것에 한정되는 것은 아니다.
또한, 패킷의 분리 수법, 패킷 기억 수단의 각 영역으로의 패킷의 기록 수법, 판독 수법도, 도 8, 도 25b에서 설명한 수법에 한정되는 것은 아니다.
또한, 제 1 데이터는 트랜잭션층용의 데이터, 제 2 데이터는 애플리케이션층용의 데이터인 것이 특히 바람직하지만, 본 발명의 제 1, 제 2 데이터는 이것에 한정되는 것은 아니다.
또한, 본 발명은 IEEE1394 규격에서의 데이터 전송에 적용되는 것이 특히 바람직하지만, 이것에 한정되는 것은 아니다. 예를 들면 IEEE1394와 같은 사상에 의거하는 규격이나 IEEE1394를 발전시킨 규격에 있어서의 데이터 전송에도 본 발명은 적용할 수 있다.
본 발명의 데이터 전송 제어 장치 및 이것이 사용되는 전자 기기는, 펌웨어 등의 처리의 오버헤드를 경감시키고, 소규모의 하드웨어로 고속의 데이터 전송을 실현할 수 있다.

Claims (11)

  1. 버스에 접속되는 복수의 노드간에서의 데이터 전송을 위한 데이터 전송 제어 장치에 있어서,
    하드웨어에 의한 연속 패킷 전송을 지시하는 제 1 스타트 커맨드를 처리 수단이 발행한 경우에, 전송 데이터를 일련의 패킷으로 분할하고, 분할된 일련의 패킷을 연속 전송하는 처리를 실행하는 전송 실행 회로와,
    상기 전송 실행 회로에 의해 연속 패킷 전송 처리가 실행되고 있는 동안에, 패킷 전송을 지시하는 제 2 스타트 커맨드를 처리 수단이 발행한 경우에는, 연속 패킷 전송에 있어서의 1개의 트랜잭션 또는 1개의 패킷 전송의 완료를 기다리고, 상기 제 2 스타트 커맨드에 의한 패킷 전송을 허가하는 조정 회로를 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  2. 제 1 항에 있어서,
    상기 전송 실행 회로가,
    상대 노드의 기억 수단에 페이지 테이블이 존재하는 경우에는, 해당 페이지 테이블을 상대 노드로부터 패치하는 페이지 테이블 패치 회로와, 상대 노드의 기억 수단에 페이지 테이블이 존재하지 않는 경우에는, 페이지 경계 정보에 의거하여 가상적인 페이지 테이블을 생성하는 페이지 테이블 생성 회로와, 페이로드 사이즈의 패킷으로 전송 데이터를 분할하는 페이로드 분할 회로와, 데이터 전송의 실행을 제어하는 전송 실행 제어 회로와, 상대 노드에 송신하는 요구 패킷의 제어 정보를 생성하는 제어 정보 생성 회로의 적어도 1개를 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  3. 제 1 항에 있어서,
    상기 조정 회로가,
    상기 전송 실행 회로에 의한 전송 개시 요구시에 액티브로 되는 제 1 스타트 신호와, 상기 제 2 스타트 커맨드에 의한 전송 개시 요구시에 액티브로 되는 제 2 스타트 신호와, 전송 완료 시에 액티브로 되는 완료 신호를 받고, 상기 제 1 스타트 신호가 액티브로 된 후에 상기 제 2 스타트 신호가 액티브로 된 경우에는, 상기 제 1 스타트 신호에 의한 전송 처리를 먼저 스타트시키며, 상기 완료 신호가 액티브로 된 후에, 상기 제 2 스타트 신호에 의한 전송 처리를 스타트시키는 것을 특징으로 하는 데이터 전송 제어 장치.
  4. 제 1 항에 있어서,
    상기 조정 회로가,
    상기 전송 실행 회로에 의한 전송 개시 요구시에 액티브로 되는 제 1 스타트 신호와, 상기 제 2 스타트 커맨드에 의한 전송 개시 요구시에 액티브로 되는 제 2 스타트 신호와, 전송 완료 시에 액티브로 되는 완료 신호를 받고, 상기 제 1, 제 2 스타트 신호가 동시에 액티브로 된 경우에는, 상기 제 2 스타트 신호에 의한 전송 처리를 우선하는 것을 특징으로 하는 데이터 전송 제어 장치.
  5. 제 1 항에 있어서,
    상기 조정 회로가,
    상기 전송 실행 회로에 의한 전송 개시 요구시에 액티브로 되는 제 1 스타트 신호와, 상기 제 2 스타트 커맨드에 의한 전송 개시 요구시에 액티브로 되는 제 2 스타트 신호와, 전송 완료 시에 액티브로 되는 완료 신호를 받고, 상기 제 2 스타트 신호가 액티브로 된 후에 상기 제 1 스타트 신호가 액티브로 된 경우에는, 상기 제 2 스타트 신호에 의한 전송 처리를 먼저 스타트시키며, 상기 완료 신호가 액티브로 된 후에, 상기 제 1 스타트 신호에 의한 전송 처리를 스타트시키는 것을 특징으로 하는 데이터 전송 제어 장치.
  6. 제 1 항에 있어서,
    패킷의 제어 정보가 격납되는 제어 정보 영역과 패킷의 데이터가 격납되는 데이터 영역을 가지며, 랜덤 액세스 가능한 패킷 기억 수단과,
    상기 패킷 기억 수단으로의 기록 어드레스를 발생하는 어드레스 발생 회로를 포함하고,
    상기 패킷 기억 수단의 상기 제어 정보 영역이, 제 1 제어 정보 영역과, 상기 전송 실행 회로에 의해 제어 정보가 기록되는 제 2 제어 정보 영역으로 분리되어 있으며,
    상기 어드레스 발생 회로가, 상기 조정 회로로부터의 조정 결과에 의거하여, 제 1 제어 정보 영역의 어드레스와 제 2 제어 정보 영역의 어드레스의 어느 쪽의 어드레스를 발생할지를 전환하는 것을 특징으로 하는 데이터 전송 제어 장치.
  7. 제 1 항에 있어서,
    패킷의 제어 정보가 격납되는 제어 정보 영역과 패킷의 데이터가 격납되는 데이터 영역을 가지고, 랜덤 액세스 가능한 패킷 기억 수단을 포함하며,
    상기 패킷 기억 수단의 상기 데이터 영역이, 제 1 층용의 제 1 데이터가 격납되는 제 1 데이터 영역과, 상기 전송 실행 회로에 의한 연속 패킷 전송의 대상으로 되는 제 2 층용의 제 2 데이터가 격납되는 제 2 데이터 영역으로 분리되어 있는 것을 특징으로 하는 데이터 전송 제어 장치.
  8. 제 7 항에 있어서,
    트랜잭션을 스타트시키는 요구 패킷을 상대 노드에 대하여 송신할 때에, 상기 요구 패킷에 포함되는 트랜잭션 식별 정보 중에, 상대 노드로부터 응답 패킷을 수신하였을 때에 행하는 처리를 지시하기 위한 지시 정보를 포함시키고,
    상대 노드로부터 응답 패킷을 수신한 경우에, 응답 패킷의 트랜잭션 식별 정보가 포함하는 상기 지시 정보에 의거하여, 응답 패킷의 제어 정보, 제 1, 제 2 데이터를, 각각, 상기 제어 정보 영역, 상기 제 1, 제 2 데이터 영역에 기록한 것을 특징으로 하는 데이터 전송 제어 장치.
  9. 제 1 항에 있어서,
    IEEE1394의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어 장치.
  10. 제 1 항 내지 제 9 항 중 어느 한 항에 기재된 데이터 전송 제어 장치와,
    상기 데이터 전송 제어 장치 및 버스를 통하여 다른 노드로부터 수신한 데이터에 주어진 처리를 실시하는 장치와,
    처리가 실시된 데이터를 출력 또는 기억하기 위한 장치를 포함하는 것을 특징으로 하는 전자 기기.
  11. 제 1 항 내지 제 9 항 중 어느 한 항에 기재된 데이터 전송 제어 장치와,
    상기 데이터 전송 제어 장치 및 버스를 통하여 다른 노드로부터 수신한 데이터에 주어진 처리를 실시하는 장치와,
    처리가 실시된 데이터를 집어넣기 위한 장치를 포함하는 것을 특징으로 하는 전자 기기.
KR10-2000-0060230A 1999-10-15 2000-10-13 데이터 전송 제어 장치 및 전자 기기 KR100381646B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP99-293590 1999-10-15
JP29359099A JP3843667B2 (ja) 1999-10-15 1999-10-15 データ転送制御装置及び電子機器

Publications (2)

Publication Number Publication Date
KR20010051014A true KR20010051014A (ko) 2001-06-25
KR100381646B1 KR100381646B1 (ko) 2003-04-26

Family

ID=17796700

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0060230A KR100381646B1 (ko) 1999-10-15 2000-10-13 데이터 전송 제어 장치 및 전자 기기

Country Status (6)

Country Link
US (1) US6947442B1 (ko)
EP (1) EP1093252A3 (ko)
JP (1) JP3843667B2 (ko)
KR (1) KR100381646B1 (ko)
CN (1) CN1201242C (ko)
TW (1) TW498208B (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328349B2 (en) 2001-12-14 2008-02-05 Bbn Technologies Corp. Hash-based systems and methods for detecting, preventing, and tracing network worms and viruses
US20040073617A1 (en) 2000-06-19 2004-04-15 Milliken Walter Clark Hash-based systems and methods for detecting and preventing transmission of unwanted e-mail
US7200105B1 (en) * 2001-01-12 2007-04-03 Bbn Technologies Corp. Systems and methods for point of ingress traceback of a network attack
EP1430669B1 (de) * 2001-09-26 2005-05-11 Siemens Aktiengesellschaft Verfahren zur verarbeitung konsistenter datensätze
JP3636160B2 (ja) 2002-04-26 2005-04-06 セイコーエプソン株式会社 データ転送制御装置、電子機器及びデータ転送制御方法
JP2004021613A (ja) 2002-06-17 2004-01-22 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP2005250683A (ja) * 2004-03-02 2005-09-15 Renesas Technology Corp マイクロコンピュータ
DE102004038212A1 (de) 2004-08-05 2006-03-16 Robert Bosch Gmbh FlexRay-Kommunikationsbaustein
WO2006062067A1 (ja) * 2004-12-07 2006-06-15 Advantest Corporation 試験装置
US8059551B2 (en) * 2005-02-15 2011-11-15 Raytheon Bbn Technologies Corp. Method for source-spoofed IP packet traceback
US7792137B2 (en) * 2006-07-05 2010-09-07 Abidanet, Llc Self-organized and self-managed ad hoc communications network
US20110246138A1 (en) * 2010-04-01 2011-10-06 Yi-Jen Chung Hardware status detecting circuit for generating one hardware status detecting signal having information of multiple hardware status detectors, related hardware status identifying circuit, related hardware status detecting system, and related methods
JP5811073B2 (ja) 2012-11-07 2015-11-11 株式会社デンソー 電子制御装置
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US10078361B2 (en) 2014-10-08 2018-09-18 Apple Inc. Methods and apparatus for running and booting an inter-processor communication link between independently operable processors
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10191852B2 (en) 2016-02-29 2019-01-29 Apple Inc. Methods and apparatus for locking at least a portion of a shared memory resource
US10191859B2 (en) 2016-03-31 2019-01-29 Apple Inc. Memory access protection apparatus and methods for memory mapped access between independently operable processors
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US10551902B2 (en) 2016-11-10 2020-02-04 Apple Inc. Methods and apparatus for providing access to peripheral sub-system registers
US10346226B2 (en) 2017-08-07 2019-07-09 Time Warner Cable Enterprises Llc Methods and apparatus for transmitting time sensitive data over a tunneled bus interface
US10331612B1 (en) 2018-01-09 2019-06-25 Apple Inc. Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
US11381514B2 (en) 2018-05-07 2022-07-05 Apple Inc. Methods and apparatus for early delivery of data link layer packets
US10430352B1 (en) 2018-05-18 2019-10-01 Apple Inc. Methods and apparatus for reduced overhead data transfer with a shared ring buffer
US10585699B2 (en) 2018-07-30 2020-03-10 Apple Inc. Methods and apparatus for verifying completion of groups of data transactions between processors
US10719376B2 (en) 2018-08-24 2020-07-21 Apple Inc. Methods and apparatus for multiplexing data flows via a single data structure
US10838450B2 (en) 2018-09-28 2020-11-17 Apple Inc. Methods and apparatus for synchronization of time between independently operable processors
US10789110B2 (en) 2018-09-28 2020-09-29 Apple Inc. Methods and apparatus for correcting out-of-order data transactions between processors
JP7270387B2 (ja) * 2019-01-15 2023-05-10 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、およびプログラム
CN111193650B (zh) * 2019-12-10 2021-12-24 中国航空工业集团公司西安航空计算技术研究所 一种基于sae as5643标准的节点收发控制装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440752A (en) * 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5343473A (en) * 1992-08-07 1994-08-30 International Business Machines Corporation Method of determining whether to use preempt/resume or alternate protocol for data transmission
EP0684719A1 (en) 1994-05-25 1995-11-29 International Business Machines Corporation Method and apparatus for transmission of high priority traffic on low speed communication links
US5822568A (en) * 1996-05-20 1998-10-13 Advanced Micro Devices, Inc. System for improving the real-time functionality of a personal computer which employs an interrupt servicing DMA controller
JPH10178438A (ja) * 1996-12-18 1998-06-30 Sony Corp データ通信システム、データ通信装置および方法
JP3733699B2 (ja) * 1997-06-20 2006-01-11 ソニー株式会社 シリアルインタフェース回路
US6473816B1 (en) * 1997-12-04 2002-10-29 Canon Kabushiki Kaisha Apparatus and method for determining bus use right
US6032261A (en) * 1997-12-30 2000-02-29 Philips Electronics North America Corp. Bus bridge with distribution of a common cycle clock to all bridge portals to provide synchronization of local buses, and method of operation thereof
JP3277874B2 (ja) * 1998-01-29 2002-04-22 日本電気株式会社 Ieee1394ブリッジ
US6523058B1 (en) * 1998-09-29 2003-02-18 Stmicroelectronics Inc. State machine driven transport protocol interface
US6574688B1 (en) * 1999-01-05 2003-06-03 Agere Systems Inc. Port manager controller for connecting various function modules
US6584539B1 (en) * 1999-03-19 2003-06-24 Sony Corporation Method and system for message broadcast flow control on a bus bridge interconnect
US6693905B1 (en) * 1999-04-09 2004-02-17 Matsushita Electric Industrial Co., Ltd. Data exchange unit
US6633547B1 (en) * 1999-04-29 2003-10-14 Mitsubishi Electric Research Laboratories, Inc. Command and control transfer
US6374319B1 (en) * 1999-06-22 2002-04-16 Philips Electronics North America Corporation Flag-controlled arbitration of requesting agents
US6463489B1 (en) * 1999-08-26 2002-10-08 Sony Corporation System and method for effectively performing isochronous data transfers

Also Published As

Publication number Publication date
JP2001119415A (ja) 2001-04-27
EP1093252A3 (en) 2002-11-13
KR100381646B1 (ko) 2003-04-26
EP1093252A2 (en) 2001-04-18
CN1293410A (zh) 2001-05-02
US6947442B1 (en) 2005-09-20
TW498208B (en) 2002-08-11
CN1201242C (zh) 2005-05-11
JP3843667B2 (ja) 2006-11-08

Similar Documents

Publication Publication Date Title
KR100381646B1 (ko) 데이터 전송 제어 장치 및 전자 기기
US7050042B2 (en) Control system for controlling an imaging device and a personal computer wherein imaging device control conditions may be freely set between the imaging device and the personal computer
US7145921B2 (en) Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure
KR100405250B1 (ko) 데이터 전송 제어 장치 및 전자 기기
JP3780776B2 (ja) データ転送制御装置及び電子機器
KR100459743B1 (ko) 데이터 전송 제어 장치 및 전자기기
KR20010090768A (ko) 전자 장치, 및 인터페이스 유닛의 버스 초기화 위상에서디지털 시리얼 데이터를 처리하는 방법
KR100746900B1 (ko) 전자장치, 및 전자장치의 물리층 회로의 상태를 제어하는방법
JP4703074B2 (ja) 電子ネットワークにおけるコンテクストを切り換える装置及び方法
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
KR100381645B1 (ko) 데이터 전송 제어 장치 및 전자기기
KR100464469B1 (ko) 데이터 전송 제어 장치 및 전자기기
JP2000032005A (ja) デ―タ通信システム、デ―タ通信方法、デ―タ通信装置、デジタルインタフェ―ス及び記憶媒体
JP3610982B2 (ja) データ転送制御装置及び電子機器
JP2004118704A (ja) インターフェイス装置およびインターフェイス装置の制御方法
JP2000022718A (ja) データ伝送システム

Legal Events

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

Payment date: 20120322

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee