JP3610982B2 - データ転送制御装置及び電子機器 - Google Patents

データ転送制御装置及び電子機器 Download PDF

Info

Publication number
JP3610982B2
JP3610982B2 JP2004010701A JP2004010701A JP3610982B2 JP 3610982 B2 JP3610982 B2 JP 3610982B2 JP 2004010701 A JP2004010701 A JP 2004010701A JP 2004010701 A JP2004010701 A JP 2004010701A JP 3610982 B2 JP3610982 B2 JP 3610982B2
Authority
JP
Japan
Prior art keywords
data
area
packet
layer
bus
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP2004010701A
Other languages
English (en)
Other versions
JP2004173304A (ja
Inventor
義幸 神原
卓也 石田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2004010701A priority Critical patent/JP3610982B2/ja
Publication of JP2004173304A publication Critical patent/JP2004173304A/ja
Application granted granted Critical
Publication of JP3610982B2 publication Critical patent/JP3610982B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Small-Scale Networks (AREA)
  • Communication Control (AREA)

Description

本発明は、データ転送制御装置及びこれを含む電子機器に関し、特に、バスに接続される複数のノード間でIEEE1394などの規格に準じたデータ転送を行うデータ転送制御装置及びこれを含む電子機器に関する。
近年、IEEE1394と呼ばれるインターフェース規格が脚光を浴びている。このIEEE1394は、次世代のマルチメディアにも対応可能な高速シリアルバスインターフェースを規格化したものである。このIEEE1394によれば、動画像などのリアルタイム性が要求されるデータも扱うことができる。また、IEEE1394のバスには、プリンタ、スキャナ、CD−RWドライブ、ハードディスクドライブなどのコンピュータの周辺機器のみならず、ビデオカメラ、VTR、TVなどの家庭用電化製品も接続できる。このため、電子機器のデジタル化を飛躍的に促進できるものとして期待されている。
しかしながら、このIEEE1394に準拠したデータ転送制御装置には次のような課題があることが判明した。
即ち、現在のIEEE1394規格によれば最大で400Mbpsの転送速度が実現可能となっている。しかし、現実には、処理のオーバーヘッドの存在に起因して、システム全体の実転送速度はこれよりもかなり低くなっている。つまり、CPU上で動作するファームウェアやアプリケーションソフトウェアが、送信データを準備したり、受信データを取り込んだりするなどの処理に多くの時間を要してしまい、バス上での転送速度が速くても、結局、高速なデータ転送を実現できない。
特に、周辺機器に組み込まれるCPUは、パーソナルコンピュータなどのホストシステムに組み込まれるCPUに比べて処理能力が低い。このため、ファームウェア等の処理のオーバーヘッドの問題は、非常に深刻なものとなる。従って、このようなオーバーヘッドの問題を効果的に解消できる技術が望まれている。
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ファームウェア等の処理のオーバーヘッドを軽減し、小規模なハードウェアで高速なデータ転送を実現できるデータ転送制御装置及びこれが用いられる電子機器を提供することにある。
上記課題を解決するために、本発明は、バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、ノード間でのパケット転送のためのサービスを提供するリンク手段と、パケットを、制御情報と、第1の層用の第1のデータと、前記第1の層の上層である第2の層用の第2のデータに分離するパケット分離手段と、分離されたパケットの制御情報を、パケット記憶手段の制御情報領域に書き込み、分離されたパケットの第1の層用の第1のデータを、前記パケット記憶手段の第1のデータ領域に書き込み、分離されたパケットの第2の層用の第2のデータを、前記パケット記憶手段の第2のデータ領域に書き込む書き込み手段と、パケットの制御情報、データを書き込む領域を区別するための情報であるTAGを生成するTAG生成手段とを含み、前記パケット分離手段が、前記TAG生成手段により生成された前記TAGを用いて、パケットを、制御情報と、第1の層用の第1のデータと、第2の層用の第2のデータに分離するデータ転送制御装置に関係する。
また本発明では、前記第1のデータが、前記第1の層のプロトコルで使用されるコマンドデータであり、前記第2のデータが、アプリケーション層で使用されるデータであり、
前記第2のデータ領域の前記第2のデータだけを連続して読み出して、前記第2の層であるアプリケーション層のデバイスに転送してもよい。
また本発明では、前記アプリケーション層のデバイスに接続される第1のバスと、データ転送制御装置をコントロールする第2のバスと、物理層のデバイスに接続される第3のバスと、前記パケット記憶手段に接続される第4のバスと、前記第1の層のプロトコルをハードウェアにより実現する回路に接続される第5のバスと、前記第1、第2、第3、第5のバスのいずれかと前記第4のバスとの間にデータ経路を確立するための調停を行う調停手段とを含んでもよい。。
また本発明では、前記第1のデータ領域がORB(Operation Request Block)領域であり、前記第2のデータ領域がストリーム領域であってもよい。
また本発明は、バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、ノード間でのパケット転送のためのサービスを提供するリンク手段と、前記リンク手段を介して受信したパケットを、ランダムアクセス可能なパケット記憶手段に書き込む書き込み手段と、パケットの制御情報を、前記パケット記憶手段の制御情報領域に書き込み、パケットの第1の層(例えばトランザクション層)用の第1のデータを、前記パケット記憶手段の第1のデータ領域に書き込み、パケットの、前記第1の層の上層である第2の層(例えばアプリケーション層)用の第2のデータを、前記パケット記憶手段の第2のデータ領域に書き込むパケット分離手段とを含むことを特徴とする。
本発明によれば、パケットの制御情報(例えばヘッダ、フッター)は制御情報領域に書き込まれ、パケットの第1のデータ(例えばトランザクション層用のデータ)は第1のデータ領域に書き込まれ、パケットの第2のデータ(例えばアプリケーション層用のデータ)は第2のデータ領域に書き込まれる。このようにすれば、第2のデータ領域から第2のデータを連続して読み出して、第2の層に転送することができるようになる。これにより、データ転送を飛躍的に高速化できる。
なお本発明では、前記第1のデータが、前記第1の層のプロトコルで使用されるコマンドデータであり、前記第2のデータが、アプリケーション層で使用されるデータであることが望ましい。
また本発明は、前記第2のデータ領域がフルである場合には、前記書き込み手段による前記第2のデータ領域への前記第2のデータの書き込みを禁止するためにフル信号をアクティブにし、前記第2のデータ領域がエンプティである場合には、前記第2の層による前記第2のデータ領域からの前記第2のデータの読み出しを禁止するためにエンプティ信号をアクティブにする領域管理手段を含むことを特徴とする。このようにすれば、領域管理手段による管理だけで、第2のデータ領域への第2のデータの書き込み処理や、第2のデータからの第2のデータの読み出し処理を制御できるようになり、データ転送の自動化、更には高速化が図れる。
また本発明は、トランザクションを開始させる要求パケットを応答ノードに対して送信する際に、前記要求パケットに含まれるトランザクション識別情報の中に、応答ノードから応答パケットを受信した際に行う処理を指示するための指示情報を含ませ、応答ノードから応答パケットを受信した場合に、応答パケットのトランザクション識別情報が含む前記指示情報により指示される領域に、応答パケットの前記制御情報、前記第1、第2のデータを書き込むことを特徴とする。このようにすれば、応答ノードから応答パケットが返信されてきた時に、ファームウェア等が関与することなく、指示情報により指示される領域に応答パケットの制御情報、第1、第2のデータが自動的に書き込まれるようになる。従って、ファームウェア等の処理負担を格段に軽減できる。
また本発明は、バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、トランザクションを開始させる要求パケットを応答ノードに対して送信する際に、前記要求パケットに含まれるトランザクション識別情報の中に、応答ノードから応答パケットを受信した際に行う処理を指示するための指示情報を含ませる手段と、応答ノードから応答パケットを受信した場合に、応答パケットのトランザクション識別情報が含む前記指示情報により指示される処理を行う手段とを含むことを特徴とする。
本発明によれば、応答ノードから応答パケットが返信されてきた時に、トランザクション識別情報(例えばトランザクションラベル)に含ませた指示情報に応じた処理が行われるようになる。従って、応答パケットの返信時に行われる処理を自動化できるようになり、ファームウェア等の処理負担を軽減できると共に、データ転送の高速化を図れる。
また本発明は、応答ノードから応答パケットを受信した場合に、応答パケットのトランザクション識別情報が含む前記指示情報により指示される領域に、前記応答パケットの制御情報、データを書き込むことを特徴とする。なお、応答パケットが返信されてきた時に行う処理は、このような指示領域への書き込み処理には限定されない。
また本発明は、前記トランザクション識別情報の所与のビットが、前記指示情報を表すビットとして予め予約されることを特徴とする。このようにすれば、要求パケットのトランザクション識別情報に指示情報を含ませる処理や、応答パケットのトランザクション識別情報に基づき指示情報を判別する処理を、簡易で負荷の低い処理にすることが可能になる。
なお、前記トランザクション識別情報は、IEEE1394の規格におけるトランザクションラベルであることが望ましい。
また本発明は、バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、ノード間でのパケット転送のためのサービスを提供するリンク手段と、パケットを格納するためのランダムアクセス可能なパケット記憶手段と、前記リンク手段を介して各ノードから転送されてくるパケットを前記パケット記憶手段に書き込む書き込み手段と、前記パケット記憶手段に書き込まれたパケットを読み出し、前記リンク手段に渡す読み出し手段とを含み、前記パケット記憶手段が、パケットの制御情報が格納される制御情報領域と、パケットのデータが格納されるデータ領域とに分離され、前記データ領域が、第1の層用の第1のデータが格納される第1のデータ領域と、前記第1の層の上層である第2の層用の第2のデータが格納される第2のデータ領域とに分離されていることを特徴とする。
本発明によれば、パケット記憶手段が、制御情報領域、第1のデータ領域、第2のデータ領域に分離されるため、第2のデータ領域から第2のデータを連続して読み出したり、第2のデータ領域に第2のデータを連続して書き込むことができるようになる。これにより、データ転送を飛躍的に高速化できる。
また本発明は、前記第2のデータ領域に送信領域を確保するための送信領域スタートアドレスを記憶する第1のアドレス記憶手段と、前記第2のデータ領域に送信領域を確保するための送信領域エンドアドレスを記憶する第2のアドレス記憶手段と、前記第2のデータ領域に受信領域を確保するための受信領域スタートアドレスを記憶する第3のアドレス記憶手段と、前記第2のデータ領域に受信領域を確保するための受信領域エンドアドレスを記憶する第4のアドレス記憶手段とを含むことを特徴とする。このようすれば、第2の層(例えばアプリケーション層)のデバイスの特性に応じて、第2のデータ領域を、例えば、送信専用領域として利用したり、受信専用領域として利用したり、送信及び受信の共用領域として利用したりすることができるようになる。
また本発明は、前記送信領域スタートアドレス及び前記受信領域スタートアドレスが、前記第2のデータ領域のスタートアドレスに設定され、前記送信領域エンドアドレス及び前記受信領域エンドアドレスが、前記第2のデータ領域のエンドアドレスに設定されることを特徴とする。このようにすれば、第2のデータ領域を送信及び受信の共用領域として利用できるようになる。従って、他のノードから自ノードへの方向及び自ノードから他のノードへの方向という双方向でデータが転送される第2の層のデバイスに、最適なデータ転送制御装置を提供できる。しかも、送信時においても、受信時においても、第2のデータ領域の記憶容量を最大限に利用できるようになり、多くのデータを第2のデータ領域に記憶させることが可能になる。
また本発明は、前記送信領域スタートアドレス及び前記送信領域エンドアドレスの双方が、前記第2のデータ領域のスタートアドレス又はエンドアドレスのいずれか一方に設定され、前記受信領域スタートアドレスが前記第2のデータ領域のスタートアドレスに設定され、前記受信領域エンドアドレスが前記第2のデータ領域のエンドアドレスに設定されることを特徴とする。このようにすれば、第2のデータ領域を受信専用領域として利用できるようになる。これにより、他のノードから自ノードへの方向にしか大きなデータが流れないような第2の層のデバイスに、最適なデータ転送制御装置を提供できる。
また本発明は、前記受信領域スタートアドレス及び前記受信領域エンドアドレスの双方が、前記第2のデータ領域のスタートアドレス又はエンドアドレスのいずれか一方に設定され、前記送信領域スタートアドレスが前記第2のデータ領域のスタートアドレスに設定され、前記送信領域エンドアドレスが前記第2のデータ領域のエンドアドレスに設定されることを特徴とする。このようにすれば、第2のデータ領域を送信専用領域として利用できるようになる。これにより、自ノードから他のノードへの方向にしか大きなデータが流れないような第2の層のデバイスに、最適なデータ転送制御装置を提供できる。
また、本発明では、IEEE1394の規格に準拠したデータ転送を行うことが望ましい。
また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して他のノードから受信したデータに所与の処理を施す装置と、処理が施されたデータを出力又は記憶するための装置とを含むことを特徴とする。また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して他のノードに送信するデータに所与の処理を施す装置と、処理が施されるデータを取り込むための装置とを含むことを特徴とする。
本発明によれば、他のノードから転送されたデータを電子機器において出力したり記憶したりする処理、電子機器において取り込んだデータを他のノードに転送したりする処理を高速化することが可能になる。また、本発明によれば、データ転送制御装置を小規模化できると共に、データ転送を制御するファームウェアなどの処理負担を軽減できるため、電子機器の低コスト化、小規模化などを図ることも可能になる。
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
1.IEEE1394
まず、IEEE1394について簡単に説明する。
1.1 概要
IEEE1394(IEEE1394−1995、P1394.a)では100〜400Mbpsの高速なデータ転送が可能となっている(P1394.bでは800〜3200Mbps)。また、転送速度が異なるノードをバスに接続することも許される。
各ノードはツリー状に接続されており、1つのバスに最大で63個のノードが接続可能になっている。なお、バスブリッジを利用すれば約64000個のノードを接続することも可能である。
IEEE1394では、パケットの転送方式として非同期転送とアイソクロナス転送が用意されている。ここで非同期転送は、信頼性が要求されるデータの転送に好適な転送方式であり、アイソクロナス転送は、リアルタイム性が要求される動画像や音声などのデータの転送に好適な転送方式である。
1.2 層構造
IEEE1394の層構造(プロトコル構成)を図1に示す。
IEEE1394のプロトコルは、トランザクション層、リンク層、物理層により構成される。また、シリアルバスマネージメントは、トランザクション層、リンク、物理層をモニターしたり制御したりするものであり、ノードの制御やバスのリソース管理のための種々の機能を提供する。
トランザクション層は、上位層にトランザクション単位のインターフェース(サービス)を提供し、下層のリンク層が提供するインターフェースを通して、リードトランザクション、ライトトランザクション、ロックトランザクション等のトランザクションを実施する。
ここで、リードトランザクションでは、応答ノードから要求ノードにデータが転送される。一方、ライトトランザクションでは、要求ノードから応答ノードにデータが転送される。またロックトランザクションでは、要求ノードから応答ノードにデータが転送され、応答ノードがそのデータに処理を施して要求ノードに返信する。
トランザクション層のサービスは、図2(A)に示すように要求、表示、応答、確認という4つのサービスにより構成される。
ここで、トランザクション要求は、要求側がトランザクションを開始させるサービスであり、トランザクション表示は、要求が届いたことを応答側に通知するサービスである。また、トランザクション応答は、応答側の状態やデータを要求側に返すサービスであり、トランザクション確認は、応答側からの応答がきたことを要求側に通知するサービスである。
リンク層は、アドレッシング、データチェック、パケット送受信のためのデータフレーミング、アイソクロナス転送のためのサイクル制御などを提供する。
リンク層のサービスは、トランザクション層と同様に、図2(B)に示すように要求、表示、応答、確認という4つのサービスにより構成される。
ここで、リンク要求は、パケットを応答側に転送するサービスであり、リンク表示は、応答側によるパケットの受信サービスである。また、リンク応答は、応答側によるアクノリッジメントの転送サービスであり、リンク確認は、要求側によるアクノリッジメントの受信サービスである。
物理層は、リンク層により使用されるロジカルシンボルの電気信号への変換や、バスの調停や、バスの物理的インターフェースを提供する。
物理層及びリンク層は、通常、データ転送制御装置(インターフェースチップ)などのハードウェアにより実現される。また、トランザクション層は、CPU上で動作するファームウェア(処理手段)や、ハードウェアにより実現される。
なお、図3に示すように、IEEE1394のトランザクション層の一部の機能を含む上位のプロトコルとして、SBP-2(Serial Bus Protocol-2)と呼ばれるプロトコルが提案されている。
ここでSBP-2は、SCSIのコマンドセットをIEEE1394のプロトコル上で利用可能にするために提案されたものである。このSBP-2を用いれば、既存のSCSI規格の電子機器で使用されていたSCSIのコマンドセットに最小限の変更を加えて、IEEE1394規格の電子機器に使用できるようになる。従って、電子機器の設計や開発を容易化できる。また、SCSIのコマンドだけではなく、デバイス固有のコマンドもカプセル化して利用できるため、非常に汎用性が高い。
このSBP-2では、まず、イニシエータ(パーソナルコンピュータ等)が、ログインやフェッチ・エージェントの初期化のためのORB(Operation Request Block)を作成して、ターゲット(プリンタ、CD−RWドライブ等)に送る。次に、イニシエータは、コマンド(リードコマンド、ライトコマンド)を含むORB(コマンドブロックORB)を作成して、その作成したORBのアドレスを、ターゲットに知らせる。そして、ターゲットは、そのアドレスをフェッチすることにより、イニシエータが作成したORBを取得する。ORBに含まれるコマンドがリードコマンドであった場合には、ターゲットは、ブロックライトトランザクションを発行して、イニシエータのデータバッファ(メモリ)にターゲットのデータを送信する。一方、ORBに含まれるコマンドがライトコマンドであった場合には、ターゲットは、ブロックリードトランザクションを発行して、イニシエータのデータバッファからデータを受信する。
このSBP-2によれば、ターゲットは、自身が都合の良いときにトランザクションを発行して、データを送受信できる。従って、イニシエータとターゲットが同期して動く必要がなくなるため、データ転送効率を高めることができる。
なお、IEEE1394の上位プロトコルとしては、SBP-2以外にも、FCP(Function Control Protocol)と呼ばれるプロトコルなども提案されている。
2.全体構成
次に、本実施形態のデータ転送制御装置の全体構成の例について図4を用いて説明する。
図4において、PHYインターフェース10は、PHYデバイス(物理層のデバイス)とのインターフェースを行う回路である。
リンクコア20(リンク手段)は、リンク層のプロトコルやトランザクション層のプロトコルの一部をハードウェアにより実現する回路であり、ノード間でのパケット転送のための各種サービスを提供する。レジスタ22は、これらのプロトコルを実現したリンクコア20を制御するためのレジスタである。
FIFO(ATF)30、FIFO(ITF)32、FIFO(RF)34は、各々、非同期送信用、アイソクロナス送信用、受信用のFIFOであり、例えばレジスタや半導体メモリなどのハードウェアにより構成される。本実施形態では、これらのFIFO30、32、34の段数は非常に少ない。例えば1つのFIFOの段数は、好ましくは3段以下であり、更に好ましくは2段以下となる。
DMAC40(読み出し手段)、DMAC42(読み出し手段)、DMAC44(書き込み手段)は、各々、ATF用、ITF用、RF用のDMAコントローラである。これらのDMAC40、42、44を用いることで、CPU66に介入されることなく、RAM80とリンクコア20との間でのデータ転送が可能になる。なお、レジスタ46は、DMAC40、42、44などを制御するレジスタである。
ポートインターフェース50は、アプリケーション層のデバイス(例えばプリンタの印字処理を行うデバイス)とのインターフェースを行う回路である。本実施形態では、このポートインターフェース50を用いて、例えば8ビットのデータ転送が可能になっている。
FIFO(PF)52は、アプリケーション層のデバイスとの間でのデータ転送のためのFIFOであり、DMAC54は、PF用のDMAコントローラである。レジスタ56は、ポートインターフェース50やDMAC54を制御するレジスタである。
SBP-2コア84は、SBP-2のプロトコルの一部をハードウェアにより実現する回路である。レジスタ88は、SBP-2コア84を制御するためのレジスタである。DMAC(SBP-2用)86は、SBP-2コア84用のDMAコントローラである。
RAM領域管理回路300は、RAM80の各領域を管理するための回路である。RAM領域管理回路300は、RAM80の各領域がフルになったり、エンプティになった場合に、各種のフル信号、エンプティ信号を用いてDMAC40、42、44、54、86を制御する。
CPUインターフェース60は、データ転送制御装置をコントロールするCPU66とのインターフェースを行う回路である。CPUインターフェース60は、アドレスデコーダ62、データ同期化回路63、割り込みコントローラ64を含む。クロック制御回路68は、本実施形態で使用されるクロックを制御するものであり、PHYデバイス(PHYチップ)から送られてくるSCLKや、マスタークロックであるHCLKが入力される。
バッファマネージャ70は、RAM80とのインターフェースを管理する回路である。バッファマネージャ70は、バッファマネージャの制御のためのレジスタ72、RAM80へのバス接続を調停する調停回路74、各種の制御信号を生成するシーケンサ76を含む。
RAM80は、ランダムアクセス可能なパケット記憶手段として機能するものであり、その機能は例えばSRAM、SDRAM、DRAMなどにより実現される。
なおRAM80は、本実施形態のデータ転送制御装置に内蔵させることが特に望ましいが、その一部又は全部を外付けにすることも可能である。
図5に、RAM80のメモリマップの一例を示す。図5に示すように本実施形態では、RAM80が、ヘッダ領域(AR2、AR3、AR4、AR6)とデータ領域(AR5、AR7、AR8、AR9)に分離されている。そして、パケットのヘッダ(広義には制御情報)はヘッダ領域に格納され、パケットのデータ(ORB、ストリーム)はデータ領域に格納される。
また本実施形態では、図5に示すように、RAM80のデータ領域(AR5、AR7、AR8、AR9)が、ORB領域(AR5、AR7)とストリーム領域(AR8、AR9)に分離されている。
更に本実施形態では、RAM80が、受信領域(AR2、AR4、AR5、AR9)と送信領域(AR3、AR6、AR7、AR8)に分離されている。
なお、ORB(第1の層用の第1のデータ)は、上述したようにSBP-2用のデータ(コマンド)である。一方、ストリーム(第1の層より上層の第2の層用の第2のデータ)は、アプリケーション層用のデータ(プリンタの印字データ、CD−RWの読み出し・書き込みデータ、スキャナによる取り込み画像データ等)である。
また、AR1、AR2、AR3に示すHW(ハードウェア)用ページテーブル領域、HW用受信ヘッダ領域、HW用送信ヘッダ領域は、図4に示すSBP-2コア84(SBP-2をハードウェアにより実現する回路)が、ページテーブルや受信ヘッダや送信ヘッダを書き込んだり読み出したりするための領域である。
また、図5においてAR4、AR5、AR8、AR9に示す領域は、いわゆるリングバッファ構造になっている。
さて、図4のバス90(或いはバス92、94)は、アプリケーションに接続されるものである(第1のバス)。またバス95(或いはバス96)はデータ転送制御装置をコントロールし、或いはデータをリード・ライトするためのものであり、データ転送制御装置をコントロールするデバイス(例えばCPU)に電気的に接続される(第2のバス)。またバス100(或いはバス102、104、105、106、107、108、109)は、物理層のデバイス(PHYデバイス)に電気的に接続されるものである(第3のバス)。また、バス110は、ランダムアクセス可能な記憶手段であるRAM80に電気的に接続されるものである(第4のバス)。またバス99は、SBP-2コア84がハードウェアによりSBP-2を実現するためのヘッダ情報やページテーブル情報をリード・ライトするためのものである(第5のバス)。
バッファマネージャ70の調停回路74は、DMAC40、42、44、CPUインターフェース60、DMAC86、54からのバスアクセス要求の調停を行う。そして、この調停結果に基づいて、各々、バス105、107、109、96、99、94のいずれかと、RAM80のバス110との間にデータの経路が確立される(第1、第2、第3、第5のバスのいずれかと第4のバスとの間にデータ経路が確立される)。
本実施形態の1つの特徴は、ランダムアクセスが可能でありパケットを格納するRAM80を設けると共に、互いに分離されるバス90、95、99、100と、これらのバスをRAM80のバス110に接続するための調停回路74とを設けた点にある。
例えば図6に、本実施形態と構成の異なるデータ転送制御装置の例を示す。このデータ転送制御装置では、リンクコア902は、PHYインターフェース900、バス922を介してPHYデバイスと接続される。また、リンクコア902は、FIFO904、906、908、CPUインターフェース910、バス920を介してCPU912に接続される。そして、CPU912は、バス924を介して、CPUにローカルなメモリであるRAM914に接続される。
図6の構成のデータ転送制御装置を用いた場合のデータ転送の手法について図7を用いて説明する。PHYデバイス930を介して他のノードから送られてきた受信パケットは、バス922、データ転送制御装置932、バス920を介してCPU912が受け取る。そして、CPU912は、受け取った受信パケットをバス924を介してRAM914に一旦書き込む。そして、CPU912は、RAM914に書き込まれた受信パケットをバス924を介して読み出し、アプリケーション層が使用できるように加工し、バス926を介してアプリケーション層のデバイス934に転送する。
一方、アプリケーション層のデバイス934からのデータを転送する場合には、CPU912は、このデータをRAM914に書き込む。そして、RAM914のデータにヘッダを付加することでIEEE1394に準拠したパケットを生成する。そして生成されたパケットは、データ転送制御装置932、PHYデバイス930などを介して他のノードに送信される。
しかしながら、このような図7のデータ転送手法によると、CPU912の処理負担が非常に重くなる。従って、ノード間を接続するシリアルバスの転送速度が高速になっても、CPU912の処理のオーバーヘッドなどに起因して、システム全体の実転送速度は低くなり、結局、高速なデータ転送を実現できない。
これに対して、本実施形態では図8に示すように、データ転送制御装置120、アプリケーション層のデバイス124間のバス90と、CPUバス96と、データ転送制御装置120、RAM80間のバス110とが互いに分離されている。従って、CPUバス96をデータ転送の制御のみに使用できるようになる。また、バス90を占有して、データ転送制御装置120、アプリケーション層のデバイス124間でデータ転送を行うことができるようになる。例えば、データ転送制御装置120が組み込まれる電子機器がプリンタである場合には、バス90を占有して印字データを転送できるようになる。この結果、CPU66の処理負担を軽減でき、システム全体の実転送速度を高めることができる。またCPU66として安価なものを採用できると共に、CPUバス96として高速なバスを使用する必要性がなくなる。このため、電子機器の低コスト化、小規模化を図れるようになる。
3.本実施形態の特徴
3.1 データ領域の分離(ORB領域とストリーム領域への分離)
本実施形態の第1の特徴は、図4のRAM80を、図5に示すようにヘッダ領域(AR2、AR3、AR4、AR6)とデータ領域(AR5、AR7、AR8、AR9)に分離すると共に、データ領域を、ORB領域(AR5、AR7)とストリーム領域(AR8、AR9)に分離している点にある。
即ち、RAMをヘッダ領域とデータ領域に分離することで、ファームウェアは、ヘッダ領域からヘッダを連続して読み出したり、ヘッダ領域にヘッダを連続して書き込むことができるようになる。従って、ファームウェアの処理負担をある程度軽減できるという利点がある。しかしながら、データ転送の更なる高速化という観点からは、ヘッダ領域とデータ領域の分離だけでは不十分であることが判明した。
例えば図9では、受信パケットがヘッダとデータに分離され、ヘッダ1、2、3がヘッダ領域に書き込まれ、データ1、2、3がデータ領域に書き込まれている。
ここで、データには、前述のように、SBP-2(第1の層)用のORB(第1のデータ)と、上層であるアプリケーション層(第2の層)用のストリームとがある。従って、RAMをヘッダ領域とデータ領域に分離しただけでは、図9のD1、D2、D3に示すように、データ領域においてORBとストリームとが混在するようになってしまう。
このため、例えば、RAMからアプリケーション層のデバイスにストリームを転送する場合には、次のような処理が必要になる。即ち、まず、読み出しアドレス(データポインタ)をD4の位置に設定してストリーム11、12、13を読み出し、次に、読み出しアドレスをD5の位置に設定してストリーム21、22、23を読み出す。その後、読み出しアドレスをD6の位置に設定してストリーム31、32、33を読み出す。
このように、RAMを単にヘッダ領域とデータ領域に分離しただけでは、アプリケーション層のデバイスへのストリーム転送の際に、ファームウェアによる読み出しアドレスの制御等が必要になり、ファームウェアの処理負担をそれほど軽減できない。また、データ領域から連続してストリームを読み出すことができないため、データ転送制御装置の実転送速度をそれほど向上できない。
一方、図10では、データ領域をORB領域とストリーム領域に分離している。このようにすれば、ファームウェア(トランザクション層)は、ORB領域からORB1、2、3を連続して読み出すことができる。また、ファームウェアを介在させることなく、ストリーム11〜33をRAMのストリーム領域から連続して読み出し、アプリケーション層のデバイスへ転送できるようになる。即ち、図11に示すように、他のノード123(例えばパーソナルコンピュータ)とアプリケーション層のデバイス(例えばプリンタの印字処理を行うデバイス)との間で、ファームウェア(CPU)66の介在無しに、ストリーム(例えば印字データ)を高速に転送できるようになる。この結果、図9に比べて、ファームウェアの処理負担を格段に軽減できると共に、データ転送を飛躍的に高速化できるようになる。
なお、図10では、本実施形態のデータ転送制御装置120がストリームを受信する場合(方向DR1に示すように他のノード123からアプリケーション層のデバイス124にストリームを転送する場合)について示している。しかしながら、データ転送制御装置120がストリームを送信する場合(方向DR2に示すようにアプリケーション層のデバイス124から他のノード123にストリームを転送する場合)においても、データ領域を送信ORB領域(図5のAR7)と送信ストリーム領域(AR8)に分離することで、データ転送の高速化を図れる。
さて、データ領域をORB領域とストリーム領域に分離すると、次のような効果も得られる。
例えば図12では、RAM領域管理回路300がストリーム領域の管理を行っている。より具体的には、ストリーム領域に多くのストリームが書き込まれて、ストリーム領域がフルになると、RAM領域管理回路300は、信号STRMFULLをアクティブにする。すると、このSTRMFULLを受けたDMAC44(書き込み手段)は、RAMへの書き込み要求WREQをアクティブにしないようにする。これにより、ストリーム領域にストリームが書き込まれないようになる。
一方、ストリーム領域から多くのストリームが読み出されて、ストリーム領域がエンプティになると、RAM領域管理回路300は、信号STRMEMPTYをアクティブにする。すると、このSTRMEMPTYを受けたDMAC54(読み出し手段)は、RAMへの読み出し要求RREQをアクティブにしないようにする。これにより、ストリーム領域からストリームが読み出されないようになる(アプリケーション層のデバイスにストリームが転送されないようになる)。
以上のように、データ領域をORB領域とストリーム領域に分離すれば、ストリーム領域がフルであればストリーム領域への書き込みを禁止し、エンプティであれば読み出しを禁止するという簡単な制御を行うだけで済むようになる。従って、ファームウェアを介在させることなくデータ転送を制御できるようになる。この結果、ファームウェアの処理負担を軽減できる。また、処理能力が低いファームウェアが関与せず、ハードウェアによりデータ転送が制御されるため、データ転送を格段に高速化できるようになる。
3.2 トランザクションラベルを利用した書き込み領域の切り替え
IEEE1394においては、各トランザクションを識別するための情報として、トランザクションラベルtlと呼ばれるものが使用される。
即ち、トランザクションの要求ノードは、要求パケットの中にトランザクションラベルtlを含ませて、応答ノードに送信する。そして、この要求パケットを受信した応答ノードは、応答パケットの中に、上記と同一のtlを含ませて、要求ノードに返信する。要求ノードは、返信された応答パケットに含まれるtlを調べることで、その応答パケットが、自身が要求したトランザクションに対応する応答であることを確認できるようになる。
トランザクションラベルtlは、応答ノードとの関係においてユニークであれば十分である。より具体的には、例えば要求ノードLが応答ノードMに対してtl=Nのトランザクションを発行した場合には、そのトランザクションが未完了の間は、要求ノードLは応答ノードMに対して、tl=Nが付けられた他のトランザクションを発行することはできない。即ち、各トランザクションは、トランザクションラベルtlとソースIDとディスティネーションIDとによりユニークに特定されることになる。逆に言えば、トランザクションラベルtlは、上記の制約が守られている限り、どのような値を使うこともでき、他のノードは、どのようなtlも受け入れなければならない。
さて、要求ノードが要求パケットを送信し、応答パケットの返信を待つ場合、応答パケットが返信されてきた際に行う処理が、既に決まっている場合がある。そこで、本実施形態は、上記のようなトランザクションラベルtlの性質に着目して、次のような手法を採用している。
即ち、図13(A)に示すように、トランザクションを開始させる要求パケットを応答ノードに対して送信する際に、要求パケットに含まれるトランザクションラベルtl(広義にはトランザクション識別情報)の中に、応答パケットの返信時に行うべき処理を指示する指示情報を含ませる。そして、応答ノードから応答パケットを受信した際に、tlに含まれる指示情報に応じた処理を実行するようにする。
このようにすれば、応答パケットが返送されてきた際に、ファームウェアが関与することなく、tlに含まれる指示情報に応じた処理をハードウェアにより実行できるようになる。これにより、ファームウェアの処理負担を軽減できると共に、データ転送の高速化を図れるようになる。
より具体的には、本実施形態では、応答ノードから応答パケットを受信した場合に、tlに含まれる指示情報により指示される領域に、その応答パケットを格納するようにしている。
即ち図13(B)に示すように、トランザクションラベルtlのビット5、4を、指示情報を表すビットとして予め予約しておく。
そして、返信されてきた応答パケットをHW(ハードウェア)用領域に書き込む場合には、要求パケットのtlのビット5を1にセットして、応答ノードに送信する。一方、返信されてきた応答パケットをFW(ファームウェア)用領域に書き込む場合には、要求パケットのtlのビット5を0にセットして、応答ノードに送信する。
また、返信されてきた応答パケットをストリーム領域に書き込む場合には、要求パケットのtlのビット4を1にセットして、応答ノードに送信する。一方、返信されてきた応答パケットをORB領域に書き込む場合には、要求パケットのtlのビット4を0にセットして、応答ノードに送信する。
このようにすれば、応答パケットが返信されてきた時に、図14に示すように応答パケットのヘッダ、データがRAMの各領域に書き込まれるようになる。
即ち、tl=1×××××(×は、ドント・ケアという意味)である場合には、応答パケットのヘッダは、HW用受信ヘッダ領域に書き込まれ、tl=0×××××である場合には、FW用受信ヘッダ領域に書き込まれる。
また、tl=11××××である場合には、応答パケットのデータは、HW用受信ストリーム領域に書き込まれ、tl=10××××である場合には、HW用受信ORB領域に書き込まれる。またtl=01××××である場合には、応答パケットのデータは、FW用受信ストリーム領域に書き込まれ、tl=00××××である場合には、FW用受信ORB領域に書き込まれる。
このようにすることで、ファームウェアを介在させることなく、応答パケットのヘッダ、データを、ハードウェア(回路)によりRAMの各領域に自動的に書き込むことができるようになる。そして、RAMに応答パケットを書き込む処理を行うハードウェアの構成も簡素化でき、データ転送制御装置の小規模化を図れる。
また、図10で説明したように、パケットのヘッダをヘッダ領域に、ORBをORB領域に、ストリームをストリーム領域に書き込むことができるようになるため、ファームウェアの処理負担の軽減化、データ転送の高速化も図れるようになる。
図15に、tlに基づいてRAMの各領域にパケットのヘッダ、データを書き込む処理の詳細な例を示す。
まず、受信パケットの最初のクワドレットに含まれるデスティネーションIDが、自ノードのIDと一致するか否かを判断する(ステップS1)。そして、自ノード宛のパケットでなかった場合には、そのパケットは破棄する(ステップS2)。
次に、受信パケットの最初のクワドレットに含まれるトランザクションコードtcodeを調べ、受信パケットが、ブロック・リード・レスポンスのパケットなのか否かを判断する(ステップS3)。そして、ブロック・リード・レスポンスのパケットでない場合には、ステップS10に移行する。
次に、受信パケットの最初のクワドレットに含まれるトランザクションラベルtlのビット5、4をステップS4、S5、S6で判断し、ビット5、4が(1、1)の場合にはステップS7に、(1、0)の場合にはステップS8に、(0、1)の場合にはステップS9に、(0、0)の場合にはステップS10に移行する。
そして、ステップS7に移行した場合にはHW用受信ストリーム領域に、ステップS8に移行した場合にはHW用受信ORB領域に、ステップS9に移行した場合にはFW用受信ストリーム領域に、ステップS10に移行した場合にはFW用受信ORB領域に、受信パケットのデータを転送する。そして、tlのビット5が1の場合には、受信パケットのヘッダをHW用受信ヘッダ領域に転送し(ステップS11)、tlのビット5が0の場合には、受信パケットのヘッダをFW用受信ヘッダ領域に転送する(ステップS12)。
なお、図15のステップS3では、受信パケットがブロック・リード・レスポンスのパケットではない場合にステップS10に移行している。これは、ブロック・リード・レスポンス以外の受信パケットの大半は、コマンドを含むパケットであると考えられ、コマンドを含むパケットは、FW用受信ORB領域、FW用受信ヘッダ領域に格納して、ファームウェアに処理させるのが妥当であると考えられるからである。
3.3 受信ストリーム領域、送信ストリーム領域の切り分け
本実施形態では図16に示すように、ストリーム領域(第2のデータ領域)に送信ストリーム領域を確保するための送信領域スタートアドレスTS、送信領域エンドアドレスTEを記憶するレジスタTSR(第1のアドレス記憶手段)、TER(第2のアドレス記憶手段)を設けている。また、ストリーム領域に受信ストリーム領域を確保するための受信領域スタートアドレスRS、受信領域エンドアドレスREを記憶するレジスタRSR(第3のアドレス記憶手段)、RER(第4のアドレス記憶手段)を設けている。
なお、本実施形態では、レジスタTSR、TER、RSR、RERは、ファームウェア(CPU)により書き換え可能なレジスタになっている。但し、図16においてレジスタTSR、RERの少なくとも一方については、固定値を記憶するようにして、ファームウェアが書き換えられないようにしてもよい。
また、図16では、受信ストリーム領域の上に送信ストリーム領域が位置しているが、受信ストリーム領域の下に送信ストリーム領域が位置するようにしてもよい。そして、この場合には、レジスタRSR、TERの少なくとも一方を、固定値を記憶するようにして、ファームウェアが書き換えられないようにしてもよい。
図16に示すようなレジスタTSR、TER、RSR、RERを設けることで、図17(A)、(B)、(C)、(D)に示すような、種々のモードでの領域確保が可能になる。
例えば、図17(A)の第1のモードでは、レジスタTSRが記憶する送信領域スタートアドレスTS、レジスタRSRが記憶する受信領域スタートアドレスRSが、ストリーム領域のスタートアドレスSに設定されている。また、レジスタTERが記憶する送信領域エンドアドレスTE、レジスタRERが記憶する受信領域エンドアドレスREが、ストリーム領域のエンドアドレスEに設定されている。
この第1のモードによれば、ストリーム領域の全領域を、送信用及び受信用の両方に共用できるようになる。
また、図17(B)の第2のモードでは、送信領域スタートアドレスTS、送信領域エンドアドレスTE、受信領域スタートアドレスRSが、ストリーム領域のスタートアドレスSに設定され、受信領域エンドアドレスREがストリーム領域のエンドアドレスEに設定されている(TS及びTEをEに設定してもよい)。
この第2のモードによれば、ストリーム領域の全領域を受信ストリーム領域として使用できるようになる。
また、図17(C)の第3のモードでは、送信領域スタートアドレスTSがストリーム領域のスタートアドレスSに設定され、受信領域スタートアドレスRS、受信領域エンドアドレスRE、送信領域エンドアドレスTEがストリーム領域のエンドアドレスEに設定されている(RS及びREをSに設定してもよい)。
この第3のモードによれば、ストリーム領域の全領域を送信ストリーム領域として使用できるようになる。
また、図17(D)の第4のモードでは、送信領域スタートアドレスTSがストリーム領域のスタートアドレスSに設定され、送信領域エンドアドレスTE及び受信領域スタートアドレスRSが、ストリーム領域の境界アドレスBに設定され、受信領域エンドアドレスREがストリーム領域のエンドアドレスEに設定されている。
この第4のモードによれば、ストリーム領域の一部の領域を送信ストリーム領域に使用し、他の領域を受信ストリーム領域に使用できるようになる。
例えば、CD−RWドライブ、ハードディスクドライブなどの電子機器では、図11のDR1、DR2の双方向でストリームが転送される。そして、通常、DR1方向のストリーム転送とDR2方向のストリーム転送とが同じ時間に行われることはない。従って、この場合には、図17(A)に示す第1のモードで領域を確保することが望ましい。このようにすれば、ストリーム領域の記憶容量が例えば4Kバイトであった場合には、送信時においても受信時においても、4Kバイトの記憶容量を確保できるようになり、RAMを効率的に使用できるようになる。
なお、図18の比較例では、ストリーム領域に送信ストリーム領域と受信ストリーム領域を確保するために、ストリーム領域のスタータドレスSを記憶するレジスタSR、ストリーム領域の境界アドレスBを記憶するレジスタBR、ストリーム領域のエンドアドレスEを記憶するレジスタERを設けている。
しかしながら、この図18の比較例では、図17(B)、(C)、(D)に示す第2、第3、第4のモードの設定はできるが、図17(A)に示す第1のモードの設定はできない。従って、CD−RWドライブ、ハードディスクドライブにデータ転送制御装置を組み込んだ場合には、図17(D)の第4のモードのように領域を確保しなければならず、図17(A)の第1のモードに比べて、RAMを効率的に使用できないという欠点がある。
さて、プリンタなどの電子機器では、図11の片方向DR1でストリームが転送される(データ転送制御装置がストリームを受信する)。従って、この場合には、図17(B)の第2のモードで領域を確保し、全領域を受信ストリーム領域に設定することが望ましい。このようにすれば、ストリーム領域の全領域を有効利用してストリームを転送できるようになる。
また、スキャナやCD−ROMなどの電子機器では、図11の片方向DR2でストリームが転送される(データ転送制御装置がストリームを送信する)。従って、この場合には、図17(C)の第3のモードで領域を確保し、全領域を送信ストリーム領域に設定することが望ましい。このようにすれば、ストリーム領域の全領域を有効利用してストリームを転送できるようになる。
なお、ストリーム領域をキャッシュメモリのように使用する電子機器では、図17(D)に示すような第4のモードで領域を確保することが望ましい。
4. 詳細例
4.1 受信側の詳細な構成
次に受信側の詳細な構成について説明する。図19に、リンクコア20(リンク手段)、FIFO34、DMAC44(書き込み手段)の詳細な構成の一例を示す。
リンクコア20は、バス監視回路130、直列・並列変換回路132、パケット整形回路160を含む。
ここで、バス監視回路130は、PHYインターフェース10を介してPHYデバイスに接続される8ビット幅のデータバスD、2ビット幅のコントロールバスCTLを監視する回路である。
直列・並列変換回路132は、データバスDのデータを32ビットのデータに変換する回路である。
パケット整形回路160は、各ノードから転送されてきたパケットを上層が使用できるように整形する回路である。例えば図20(A)に、IEEE1394規格の、非同期でブロックデータを有するパケットのフォーマットを示す。一方、図20(B)に、RAM80のヘッダ領域に格納される、非同期受信でブロックデータを有するパケットのヘッダ部分のフォーマットを示す。このように本実施形態では、図20(A)に示すフォーマットのパケットを、ファームウェアなどの上層が使用できるように、図20(B)に示すフォーマットのパケットに整形している。
パケット整形回路160は、パケット診断回路142、シーケンサ167、バッファ168、セレクタ170を含み、パケット診断回路142は、TAG生成回路162、ステータス生成回路164、エラーチェック回路166を含む。
ここでパケット診断回路142は、パケットの診断を行う回路である。TAG生成回路162は、パケットのヘッダ、データ等を書き込む領域を区別するための情報であるTAGを生成する回路であり、ステータス生成回路164は、パケットに付加する各種のステータスを生成する回路である。また、エラーチェック回路166は、パケットに含まれるパリティやCRCなどのエラーチェック情報をチェックしてエラーを検出する回路である。
シーケンサ167は各種の制御信号を生成するものである。バッファ168、セレクタ170は、直列・並列変換回路132からのDI、パケット診断回路142からのステータス、DMAC44からのデータポインタDPのいずれかを、パケット診断回路142からの信号SELにより選択するためのものである。
FIFO34は、リンコア20からの出力データであるRDの位相と、RAM80への書き込みデータであるWDATAの位相とを調整するためのバッファとして機能するものであり、FIFO状態判断回路35を含む。FIFO状態判断回路35は、FIFO34が空になると、信号EMPTYをアクティブにし、FIFO34がフルになると、信号FULLをアクティブにする。
DMAC44は、パケット分離回路180、アクセス要求実行回路190、アクセス要求発生回路192を含む。
ここでパケット分離回路180は、パケット整形回路160により整形されたパケットをTAG(DTAG)に基づいてデータ、ヘッダ等に分離して、RAMの各領域(図5参照)に書き込む処理を行う。
アクセス要求実行回路190は、リンクコア20からのアクセス要求を実行するための回路である。アクセス要求実行回路190は、FIFO状態判断回路35からのFULLがアクティブになると、FFULLをアクティブにする。パケット整形回路160内のシーケンサ167は、FFULLがアクティブでないことを条件に、RD(RxData)のストローブ信号であるRDSをアクティブにする。
なおRFAILは、受信における失敗を、シーケンサ167がアクセス要求実行回路190に対して知らせるための信号である。
アクセス要求発生回路192は、RAM80へのアクセス要求を発生するための回路である。アクセス要求発生回路192は、バッファマネージャ70からの書き込みアクノリッジメントであるWACKやFIFO状態判断回路35からのEMPTYなどを受け、書き込み要求であるWREQをバッファマネージャ70に出力する。
4.2 パケットの分離及びRAMの各領域への書き込み
TAG生成回路162は、図21に示すような4ビットのTAGを生成している。そして、リンクコア20は、パケット(図20(B)参照)のスタート(最初の1クワドレット)、ヘッダ、データ(ORB、ストリーム)をRDとしてFIFO34に出力する際に、この生成された4ビットのTAGも同時にFIFO34に出力する。そして、本実施形態では、このTAGを利用することで、パケットを分離し、RAMの各領域に書き込んでいる(図5、図10参照)。
より具体的には、図19のTAG判別回路182が、FIFO34から出力されるDTAG(=TAG)を判別し、FIFO34の出力WDATAの書き込み領域を決める。そして、アドレス発生回路188が含むポインタ更新回路184が、この決められた領域において、ポインタ(データポインタ、ヘッダポインタ)を順次更新(インクリメント、デクリメント)する。そして、アドレス発生回路188は、この順次更新されるポインタが指すアドレスを発生して、WADRとしてバッファマネージャ70に出力する。このようにすることで、パケットのヘッダ、ORB、ストリームが、図5に示すようなRAMの各領域に書き込まれるようになる。
なお、アドレス発生回路188は、データポインタDP(受信ORB領域のデータポインタ、受信ストリーム領域のデータポインタ等)をパケット整形回路160に出力しており、パケット整形回路160は、このデータポインタをパケットのヘッダに埋め込んでいる(図20(B)のC30参照)。これにより、ヘッダ領域に格納されるヘッダとデータ領域に格納されるデータとを対応づけることが可能になる。
さて、TAG生成回路162は、図13(A)、(B)で説明したトランザクションラベルtlを用いて図21のTAGを生成し、FIFO34に出力する。例えば、リンクコア20の出力RDがヘッダであり、トランザクションラベルtlが1×××××(×は、ドント・ケアという意味)であった場合には、TAG生成回路162は(1001)又は(1010)というTAGを生成する。これにより、図14に示すように、受信パケットのヘッダがHW(ハードウェア)用受信ヘッダ領域に書き込まれるようになる。なお、ここでHW(ハードウェア)用とは、図4のSBP-2コア84用という意味である。
また、リンクコア20の出力RDがヘッダであり、tlが0×××××であった場合には、TAG生成回路162は(0001)又は(0010)というTAGを生成する。これにより、図14に示すように、受信パケットのヘッダがFW用受信ヘッダ領域に書き込まれるようになる。
また、RDがデータでありtlが11××××の場合には、(1101)というTAGを生成する。これにより、受信パケットのデータ(ストリーム)がHW用受信ストリーム領域に書き込まれるようになる。
また、RDがデータでありtlが10××××の場合には、(1100)というTAGを生成する。これにより、受信パケットのデータ(ORB)がHW用受信ORB領域に書き込まれるようになる。
また、RDがデータでありtlが01××××の場合には、(0101)というTAGを生成する。これにより、受信パケットのデータ(ストリーム)がFW用受信ストリーム領域に書き込まれるようになる。
また、RDがデータでありtlが00××××の場合には、(0100)というTAGを生成する。これにより、受信パケットのデータ(ORB)がFW用受信ORB領域に書き込まれるようになる。
本実施形態では以上のようにトランザクションラベルtlを利用することで、パケットの分離及びRAMの各領域への書き込みを実現している。
4.3 ストリーム領域の管理及びスタート・エンドアドレスの設定
図22に、DMAC44、54、レジスタ46、56、RAM領域管理回路300の詳細な構成例を示す。
まず、図22に示す各種のポインタレジスタ310、312、314、316、318、320、322、324について説明する。本実施形態では、RAMの各領域の管理のために、図23に示すような各種のポインタレジスタを設けている。ファームウェア(CPU)は図4のCPUインターフェース60を介して、これらのポインタレジスタに記憶されるポインタのアドレスを随時読み出すことができる。
ここで処理済みヘッダポインタレジスタUHPRは、処理済み(使用済み)のヘッダと未処理のヘッダとの境界RB21を指すポインタUHPを記憶する。受信済みヘッダポインタレジスタPHPRは、受信済みの最新(post)のヘッダと未受信のヘッダとの境界RB31を指すポインタPHPを記憶する。
また、処理済みORBポインタレジスタUOPRは、処理済みのORBと未処理のORBとの境界RB22を指すポインタUOPを記憶する。受信済みORBポインタレジスタPOPRは、受信済みの最新のORBと未受信のORBとの境界RB32を指すポインタPOPを記憶する。
なお、バスリセットヘッダポインタレジスタBHPRは、バスリセット発生前に受信したパケットのヘッダと、バスリセット発生後に受信したパケットのヘッダとの境界RB11を指すポインタBHPを記憶するレジスタである。また、バスリセットORBポインタレジスタBOPRは、バスリセット発生前に受信したパケットのORBと、バスリセット発生後に受信したパケットのORBとの境界RB12を指すポインタBOPを記憶するレジスタである。これらのレジスタBHPR、BOPRを設けることで、ファームウェアがバスリセットの発生場所を容易に検出できるようになる。これにより、バスリセット発生後に行われるファームウェアの処理負担を大幅に軽減できる。
図22の説明に戻る。図22のレジスタ310、314、318は、各々、受信済みヘッダポインタ、受信済みORBポインタ、受信済みストリームポインタを記憶するレジスタである。これらのレジスタ310、314、318は、アドレス発生回路188から、各々、WHADR(ヘッダ領域でのアドレス)、WOADR(ORB領域でのアドレス)、WSADR(ストリーム領域でのアドレス)を受ける。また、レジスタ310、314、318は、リンクコア20からの信号RXCOMP(受信が完了した時にアクティブになる信号)を受ける。そして、レジスタ310、314、318は、このRXCOMPがアクティブになるタイミングで、アドレス発生回路188からのWHADR、WOADR、WSADRを取り込み、記憶する。このようにすることで、図23の境界RB31、RB32等のアドレスを記憶できるようになる。
また、レジスタ312、316は、各々、バスリセットヘッダポインタ、バスリセットORBポインタを記憶するレジスタである。これらのレジスタ312、316は、リンクコア20からの信号BRIP(バスリセット中にアクティブになる信号)を受ける。そして、レジスタ312、316は、このBRIPがアクティブになるタイミングで、レジスタ310、314に記憶されているアドレスを取り込み、記憶する。このようにすることで、図23の境界RB11、RB12のアドレスを記憶できるようになる。
また、レジスタ320、322、324は、各々、処理済みヘッダポインタ、処理済みORBポインタ、処理済みストリームポインタを記憶するレジスタである。
また、スタート・エンドアドレスレジスタ326は、図5に示す各領域のスタートアドレス、エンドアドレスを記憶する。より具体的には、図16で説明した送信領域スタートアドレスTS、送信領域エンドアドレスTE、受信領域スタートアドレスRS、受信領域エンドアドレスREを記憶するレジスタ(送信領域スタートアドレスレジスタTSR、送信領域エンドアドレスレジスタTER、受信領域スタートアドレスレジスタRSR、受信領域エンドアドレスレジスタRER)により構成される。そして、アドレス発生回路188、332は、レジスタ326からのスタートアドレス、エンドアドレスに基づいてアドレスの発生を制御する。より具体的には、スタートアドレスを開始点として順次ポインタを更新する。そして、ポインタがエンドアドレスに到達した場合に、ポインタをスタートアドレスに戻すなどの制御を行う(リングバッファ構造の場合)。
RAM領域管理回路300は、受信ヘッダ領域管理回路302、受信ORB領域管理回路304、受信ストリーム領域管理回路306を含む。
そして、受信ヘッダ領域管理回路302は、レジスタ310からの受信済みヘッダポインタやレジスタ320からの処理済みヘッダポインタを受け、受信ヘッダ領域がフルであることを知らせる信号HDRFULLをアクセス要求発生回路192に出力する。
また、受信ORB領域管理回路304は、レジスタ314からの受信済みORBポインタやレジスタ322からの処理済みORBポインタを受け、受信ORB領域がフルであることを知らせる信号ORBFULLをアクセス要求発生回路192に出力する。
また、受信ストリーム領域管理回路306は、レジスタ318からの受信済みストリームポインタやレジスタ324からの処理済みストリームポインタを受け、受信ストリーム領域がフルであることを知らせる信号STRMFULLをアクセス要求発生回路192に出力する。また、受信ストリーム領域がエンプティであることを知らせる信号STRMEMPTYをアクセス要求発生回路334に出力する。
アクセス要求発生回路192、334は、これらのフル信号、エンプティ信号を受けて、書き込み要求WREQ、読み出し要求RREQをバッファマネージャー70に出力するか否かを決めることになる。
このように、本実施形態では、受信ストリーム領域の管理は、受信ストリーム領域管理回路306というハードウェアが行い、ファームウェアが関与しない。従って、図12において説明したように、ファームウェアの処理負担を軽減できると共に、データ転送を格段に高速化できるようになる。
5.電子機器
次に、本実施形態のデータ転送制御装置を含む電子機器の例について説明する。
例えば図24(A)に電子機器の1つであるプリンタの内部ブロック図を示し、図25(A)にその外観図を示す。CPU(マイクロコンピュータ)510はシステム全体の制御などを行う。操作部511はプリンタをユーザが操作するためのものである。ROM516には、制御プログラム、フォントなどが格納され、RAM518はCPU510のワーク領域として機能する。表示パネル519はプリンタの動作状態をユーザに知らせるためのものである。
PHYデバイス502、データ転送制御装置500を介して、パーソナルコンピュータなどの他のノードから送られてきた印字データは、バス504を介して印字処理部512に直接送られる。そして、印字データは、印字処理部512にて所与の処理が施され、プリントヘッダなどからなる印字部(データを出力するための装置)514により紙に印字されて出力される。
図24(B)に電子機器の1つであるスキャナの内部ブロック図を示し、図25(B)にその外観図を示す。CPU520はシステム全体の制御などを行う。操作部521はスキャナをユーザが操作するためのものである。ROM526には制御プログラムなどが格納され、RAM528はCPU520のワーク領域として機能する。
光源、光電変換器などからなる画像読み取り部(データを取り込むための装置)522により原稿の画像が読み取られ、読み取られた画像のデータは画像処理部524により処理される。そして、処理後の画像データがバス505を介してデータ転送制御装置500に直接送られる。データ転送制御装置500は、この画像データにヘッダなどを付加することでパケットを生成し、PHYデバイス502を介してパーソナルコンピュータなどの他のノードに送信する。
図24(C)に電子機器の1つであるCD−RWドライブの内部ブロック図を示し、図25(C)にその外観図を示す。CPU530はシステム全体の制御などを行う。操作部531はCD−RWをユーザが操作するためのものである。ROM536には制御プログラムなどが格納され、RAM538はCPU530のワーク領域として機能する。
レーザ、モータ、光学系などからなる読み取り&書き込み部(データを取り込むための装置又はデータを記憶するための装置)533によりCD−RW532から読み取られたデータは、信号処理部534に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、バス506を介してデータ転送制御装置500に直接送られる。データ転送制御装置500は、このデータにヘッダなどを付加することでパケットを生成し、PHYデバイス502を介してパーソナルコンピュータなどの他のノードに送信する。
一方、PHYデバイス502、データ転送制御装置500を介して、他のノードから送られてきたデータは、バス506を介して信号処理部534に直接送られる。そして、信号処理部534によりこのデータに所与の信号処理が施され、読み取り&書き込み部533によりCD−RW532に記憶される。
なお、図24(A)、(B)、(C)において、CPU510、520、530の他に、データ転送制御装置500でのデータ転送制御のためのCPUを別に設けるようにしてもよい。
また、図24(A)、(B)、(C)ではRAM501(図4のRAM80に相当)がデータ転送制御装置500の外部に設けられているが、RAM501をデータ転送制御装置500に内蔵させてもよい。
本実施形態のデータ転送制御装置を電子機器に用いることで、高速なデータ転送が可能になる。従って、ユーザがパーソナルコンピュータなどによりプリントアウトの指示を行った場合に、少ないタイムラグで印字が完了するようになる。また、スキャナへの画像取り込みの指示の後に、少ないタイムラグで読み取り画像をユーザは見ることができるようになる。また、CD−RWからのデータの読み取りや、CD−RWへのデータの書き込みを高速に行うことができるようになる。更に、例えば1つのホストシステムに複数の電子機器を接続して利用したり、複数のホストシステムに複数の電子機器を接続して利用したりすることも容易になる。
また本実施形態のデータ転送制御装置を電子機器に用いることで、CPU上で動作するファームウェアの処理負担が軽減され、安価なCPUや低速のバスを用いることが可能になる。更に、データ転送制御装置の低コスト化、小規模化を図れるため、電子機器の低コスト化、小規模化も図れるようになる。
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ(CD−ROM、DVD)、光磁気ディスクドライブ(MO)、ハードディスクドライブ、TV、VTR、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、ワードプロセッサなど種々のものを考えることができる。
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
例えば、本発明のデータ転送制御装置の構成は、図4に示す構成が特に望ましいが、これに限定されるものではない。
また、パケットの分離手法、パケット記憶手段の各領域へのパケットの書き込み手法、読み出し手法も、図5、図10で説明した手法に限定されるものではない。
また、第1のデータはトランザクション層用のデータ、第2のデータはアプリケーション層用のデータであることが特に望ましいが、本発明の第1、第2のデータはこれに限定されるものではない。
また、応答パケットのトランザクション識別情報が含む指示情報に基づいて行う処理は、図14で説明したような、指示情報により指示される領域への応答パケット(ヘッダ、データ)の書き込み処理であることが特に望ましいが、これに限定されるものではない。
また、本発明は、IEEE1394規格でのデータ転送に適用されることが特に望ましいが、これに限定されるものではない。例えばIEEE1394と同様の思想に基づく規格やIEEE1394を発展させた規格におけるデータ転送にも本発明は適用できる。
IEEE1394の層構造について示す図である。 図2(A)、(B)は、トランザクション層やリンク層が提供する各種のサービスについて説明するための図である。 SBP-2について説明するための図である。 本実施形態のデータ転送制御装置の構成例を示す図である。 RAM(パケット記憶手段)の分離(分割)手法について説明するための図である。 比較例の構成について示す図である。 図6の構成によるデータ転送の手法について説明するための図である。 本実施形態のデータ転送の手法について説明するための図である。 データ領域をORB領域とストリーム領域に分離しない手法について説明するための図である。 データ領域をORB領域とストリーム領域に分離する手法について説明するための図である。 他のノードとアプリケーション層のデバイスとの間のストリーム転送の様子を示す図である。 エンプティ信号とフル信号を用いたストリーム領域の管理手法について説明するための図である。 図13(A)、(B)は、トランザクションラベルについて説明するための図である。 トランザクションラベルを利用して、RAMの各領域にパケットのヘッダ、データを書き込む手法について説明するための図である。 トランザクションラベルを利用して、RAMの各領域にパケットのヘッダ、データを書き込む処理の詳細について説明するための図である。 送信ストリーム領域を確保するためのアドレスTS、TE、受信ストリーム領域を確保するためのアドレスRS、REを記憶するレジスタTSR、TER、RSR、RERを設ける手法について説明するための図である。 図17(A)、(B)、(C)、(D)は、領域確保の種々のモードについて説明するための図である。 比較例の領域確保の手法について説明するための図である。 受信側の詳細な構成について示す図である。 図20(A)は、IEEE1394規格の、非同期でブロックデータを有するパケットのフォーマットであり、図20(B)は、RAMに格納される、非同期受信でブロックデータを有するパケットのヘッダ部分のフォーマットである。 TAGについて説明するための図である。 DMAC、レジスタ、RAM領域管理回路の詳細な構成について示す図である。 各種のポインタレジスタについて説明するための図である。 図24(A)、(B)、(C)は、種々の電子機器の内部ブロック図の例である。 図25(A)、(B)、(C)は、種々の電子機器の外観図の例である。
符号の説明
10 PHYインターフェース、 20 リンクコア、 22 レジスタ、30 FIFO(ATF)、 32 FIFO(ITF)、 34 FIFO(RF)、 40 DMAC(ATF用)、 42 DMAC(ITF用)、 44 DMAC(RF用)、 46 レジスタ、 50 ポートインターフェース、 52 FIFO(PF)、 54 DMAC(PF用)、 56 レジスタ、 60 CPUインターフェース、 62 アドレスデコーダ、 63 データ同期化回路、 64 割り込みコントローラ、 66 CPU、 68 クロック制御回路、 70 バッファマネージャ、 72 レジスタ、 74 調停回路、 76 シーケンサ、80 RAM(パケット記憶手段)、 84 SBP-2コア、 86 DMAC(SBP-2用)、 90、92、94 バス(第1のバス)、 95、96 バス(第2のバス)、 99 バス(第5のバス)、 100、102、104、105、106、107、108、109 バス(第3のバス)、 110 バス(第4のバス)、 120 データ転送制御装置、 122 PHYデバイス、 124 アプリケーション層のデバイス 130 バス監視回路、 132 直列・並列変換回路、 142 パケット診断回路、 160 パケット整形回路、 162 TAG生成回路、 164 ステータス生成回路、 166 エラーチェック回路、 167 シーケンサ、 168 バッファ、 170 セレクタ、 180 パケット分離回路、 182 TAG判別回路、 184 ポインタ更新回路、 188 アドレス発生回路、 190 アクセス要求実行回路、 192 アドレス要求発生回路、 300 RAM領域管理回路、302 受信ヘッダ領域管理回路、 304 受信ORB領域管理回路、 306 受信ストリーム領域管理回路、 310 受信済みヘッダポインタレジスタ(PHPR)、 312 バスリセットヘッダポインタレジスタ(BHPR)、 314 受信済みORBポインタレジスタ(POPR)、 316 バスリセットORBポインタレジスタ(BOPR)、 318 受信済みストリームポインタレジスタ(PSPR) 320 処理済みヘッダポインタレジスタ(UHPR)、 322 処理済みORBポインタレジスタ(UOPR)、 324 処理済みストリームポインタレジスタ(USPR)、 326 スタート・エンドアドレスレジスタ、 332 アドレス発生回路 334 アクセス要求発生回路

Claims (7)

  1. バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、
    ノード間でのパケット転送のためのサービスを提供するリンク手段と、
    パケットを、制御情報と、第1の層用の第1のデータと、前記第1の層の上層である第2の層用の第2のデータに分離するパケット分離手段と、
    分離されたパケットの制御情報を、パケット記憶手段の制御情報領域に書き込み、分離されたパケットの第1の層用の第1のデータを、前記パケット記憶手段の第1のデータ領域に書き込み、分離されたパケットの第2の層用の第2のデータを、前記パケット記憶手段の第2のデータ領域に書き込む書き込み手段と、
    パケットの制御情報、データを書き込む領域を区別するための情報であるTAGを生成するTAG生成手段とを含み、
    前記パケット分離手段が、
    前記TAG生成手段により生成された前記TAGを用いて、パケットを、制御情報と、第1の層用の第1のデータと、第2の層用の第2のデータに分離することを特徴とするデータ転送制御装置。
  2. 請求項1において、
    前記第1のデータが、前記第1の層のプロトコルで使用されるコマンドデータであり、前記第2のデータが、アプリケーション層で使用されるデータであり、
    前記第2のデータ領域の前記第2のデータだけを連続して読み出して、前記第2の層であるアプリケーション層のデバイスに転送することを特徴とするデータ転送制御装置。
  3. 請求項1又は2において、
    前記アプリケーション層のデバイスに接続される第1のバスと、
    データ転送制御装置をコントロールする第2のバスと、
    物理層のデバイスに接続される第3のバスと、
    前記パケット記憶手段に接続される第4のバスと、
    前記第1の層のプロトコルをハードウェアにより実現する回路に接続される第5のバスと、
    前記第1、第2、第3、第5のバスのいずれかと前記第4のバスとの間にデータ経路を確立するための調停を行う調停手段とを含むことを特徴とするデータ転送制御装置。
  4. 請求項1乃至3のいずれかにおいて、
    前記第1のデータ領域がORB(Operation Request Block)領域であり、前記第2のデータ領域がストリーム領域であることを特徴とするデータ転送制御装置。
  5. 請求項1乃至4のいずれかにおいて、
    IEEE1394の規格に準拠したデータ転送を行うことを特徴とするデータ転送制御装置。
  6. 請求項1乃至5のいずれかのデータ転送制御装置と、
    前記データ転送制御装置及びバスを介して他のノードから受信したデータに所与の処理を施す装置と、
    処理が施されたデータを出力又は記憶するための装置とを含むことを特徴とする電子機器。
  7. 請求項1乃至5のいずれかのデータ転送制御装置と、
    前記データ転送制御装置及びバスを介して他のノードに送信するデータに所与の処理を施す装置と、
    処理が施されるデータを取り込むための装置とを含むことを特徴とする電子機器。
JP2004010701A 2004-01-19 2004-01-19 データ転送制御装置及び電子機器 Expired - Fee Related JP3610982B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004010701A JP3610982B2 (ja) 2004-01-19 2004-01-19 データ転送制御装置及び電子機器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004010701A JP3610982B2 (ja) 2004-01-19 2004-01-19 データ転送制御装置及び電子機器

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP20125099A Division JP3608441B2 (ja) 1999-07-15 1999-07-15 データ転送制御装置及び電子機器

Publications (2)

Publication Number Publication Date
JP2004173304A JP2004173304A (ja) 2004-06-17
JP3610982B2 true JP3610982B2 (ja) 2005-01-19

Family

ID=32709422

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004010701A Expired - Fee Related JP3610982B2 (ja) 2004-01-19 2004-01-19 データ転送制御装置及び電子機器

Country Status (1)

Country Link
JP (1) JP3610982B2 (ja)

Also Published As

Publication number Publication date
JP2004173304A (ja) 2004-06-17

Similar Documents

Publication Publication Date Title
JP3843667B2 (ja) データ転送制御装置及び電子機器
JP3608441B2 (ja) データ転送制御装置及び電子機器
JP2000134229A (ja) データ転送制御装置及び電子機器
JP3584789B2 (ja) データ転送制御装置及び電子機器
JP3780776B2 (ja) データ転送制御装置及び電子機器
JP3539287B2 (ja) データ転送制御装置及び電子機器
JP3494041B2 (ja) データ転送制御装置及び電子機器
JP3494040B2 (ja) データ転送制御装置及び電子機器
JP3606133B2 (ja) データ転送制御装置及び電子機器
JP3610982B2 (ja) データ転送制御装置及び電子機器
JP3494042B2 (ja) データ転送制御装置及び電子機器
JP2000224195A (ja) データ伝送装置
JPH1117710A (ja) シリアルインタフェース回路
JP3606145B2 (ja) データ転送制御装置及び電子機器
JP4582180B2 (ja) データ伝送装置
JP2001177544A (ja) データ転送制御装置、情報記憶媒体及び電子機器

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040928

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041011

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081029

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091029

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101029

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101029

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111029

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121029

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121029

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131029

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees