JP4362199B2 - データ伝送装置 - Google Patents
データ伝送装置 Download PDFInfo
- Publication number
- JP4362199B2 JP4362199B2 JP2000090125A JP2000090125A JP4362199B2 JP 4362199 B2 JP4362199 B2 JP 4362199B2 JP 2000090125 A JP2000090125 A JP 2000090125A JP 2000090125 A JP2000090125 A JP 2000090125A JP 4362199 B2 JP4362199 B2 JP 4362199B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- transmission
- data
- buffer
- reception
- 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
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
- Communication Control (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータと光ディスクドライブ等の周辺機器との間で伝送路を介してデータやコマンド等をパケット単位で伝送するデータ伝送装置に関するものである。
【0002】
【従来の技術】
近年、AV機器やコンピュータ機器等を接続するディジタルインターフェースとして、IEEE1394方式が注目されている。この方式は、コンピュータ機器間の通信のみならず、AV機器間での通信にも用いることができるものである。これは、IEEE1394方式に、アシンクロナス(asynchronous)通信とアイソクロノス(isochronous)通信とが定義されているためである。アシンクロナス通信は、コンピュータデータの伝送のような、リアルタイム性が要求されず、しかも信頼性がより要求されるデータの伝送に用いられる。アイソクロノス通信は、動画のAVデータ等のような、信頼性以上にリアルタイム性が要求されるデータの伝送に用いられる。したがって、一般的に、IEEE1394方式を用いて、例えばコンピュータデータを光ディスクドライブ等に格納したり、光ディスクドライブから記録済みのコンピュータデータを読み出したりする際には、アシンクロナス通信が採用される。なお、アシンクロナス通信を用いたイニシエータとターゲットとの間の通信プロトコルについては、SBP−2(serial bus protocol - 2)が現在ANSIにて審議されている。このSBP−2規格では、Login、QueryLogin、AbortTask等のタスク管理コマンドや、ページテーブルを用いた間接アドレス指定のデータ伝送が定義されている。
【0003】
ターゲット側における従来のデータ伝送装置は、送信専用バッファと受信専用バッファとを持ち、その各々のサイズは最大転送パケットサイズと等しいのが通例である。これらのバッファを構成するFIFO(first-in-first-out)バッファは、それぞれATF(asynchronous transmission FIFO buffer)及びARF(asynchronous reception FIFO buffer)と呼ばれる。しかも、従来は単一の中央処理ユニット(CPU:central processing unit)が、ATF及びARFの管理等の処理をプログラムに従って実行していた。
【0004】
【発明が解決しようとする課題】
ところが、従来のデータ伝送装置ではCPUの負荷が非常に大きくなってきた。CPUは、要求パケット(request packet)及び応答パケット(response packet)の作成並びにATFへの書き込み、ARFからの受信パケットの読み出し及び受信パケット中のヘッダフィールドの解析といった各処理のみならず、イニシエータが発行したタスク管理コマンドに対する適切な処理をも実行しなければならない。また、データ伝送中にイニシエータがタスク管理コマンドを発行したり、ターゲット側のコンフィギュレーションROM(config#ROM)やCSR(control and status registers)へのアクセス要求をデータ伝送中にイニシエータが発行したりした場合には、データ伝送の一時停止や再開の処理をCPUが管理しなければならない。更に、ページテーブルを用いたデータ伝送の要求がイニシエータから発行された場合には、イニシエータからのページテーブルデータの取得と、該ページテーブルデータに基づくデータ伝送の実行とをCPUが1ページ毎に制御しなければならない。したがって、従来のデータ伝送装置は、CPUのファームウェア処理によるオーバーヘッドが大きく、データ伝送に長い時間がかかるという問題を有していた。
【0005】
本発明の目的は、CPUのファームウェア処理によるオーバーヘッドを低減し、以て高速データ伝送を実現することにある。
【0006】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ヘッダフィールドとデータフィールドとからなるパケットを単位として伝送路を介して相手機器と通信を行うデータ伝送装置において、送信専用バッファと、受信専用バッファと、送受信兼用バッファと、送信するパケットの内容に応じてその格納先を送信専用バッファか送受信兼用バッファかに振り分けるための送信用フィルタと、受信したパケットの内容に応じてその格納先を受信専用バッファか送受信兼用バッファかに振り分けるための受信用フィルタと、送信すべき情報を含んだパケットを作成したり、受信したパケットから必要な情報を取り出したりするためのパケット処理回路と、送信専用バッファ又は送受信兼用バッファに格納されたパケットを伝送路上の電気信号に変換したり、受信された伝送路上の電気信号を受信専用バッファ又は送受信兼用バッファに格納するパケットに変換したりするための送受信回路と、パケット処理回路を起動するための中央処理ユニット(CPU)とを備えた構成を採用し、受信用フィルタは、ある要求パケットに対して対をなす応答パケットが受信された場合には該受信した応答パケットを送受信兼用バッファに格納するとともに応答検出の旨をパケット処理回路に知らせ、前記要求パケットに対してそれ以外のパケットが受信された場合には該受信したパケットを受信専用バッファに格納するとともに一時停止命令をパケット処理回路へ発行する機能を有することとしたものである。
【0007】
前記パケット処理回路は、送信用フィルタに与えた要求パケットの数をカウントするための要求パケットカウンタと、送受信兼用バッファから読み出した応答パケットの数をカウントするための応答パケットカウンタと、前記一時停止命令に応答して、新たな要求パケットの作成を停止させ、かつ応答パケットカウンタの値と要求パケットカウンタの値との一致でCPUへの一時停止完了通知がなされるように指示するための一時停止コントローラとを備える。これにより、データ伝送動作中に該動作に関係のないパケットを受信した場合には、その受信時点でのトランザクションが完結した時点でデータ伝送が一時停止し、送信専用バッファ、受信専用バッファ及び送受信兼用バッファをCPUが自由に使用できることとなる。更に、一時停止完了通知の後にCPUからのデータ伝送再起動命令を受け付けるための手段をパケット処理回路が備えることが好ましい。
【0008】
また、本発明に係る他のデータ伝送装置は、送信専用バッファと、受信専用バッファと、送受信兼用バッファと、送信するパケットの内容に応じてその格納先を送信専用バッファか送受信兼用バッファかに振り分けるための送信用フィルタと、受信したパケットの内容に応じてその格納先を受信専用バッファか送受信兼用バッファかに振り分けるための受信用フィルタと、送信すべき情報を含んだパケットを作成したり、受信したパケットから必要な情報を取り出したりするためのパケット処理回路と、送信専用バッファ又は送受信兼用バッファに格納されたパケットを伝送路上の電気信号に変換したり、受信された伝送路上の電気信号を受信専用バッファ又は送受信兼用バッファに格納するパケットに変換したりするための送受信回路と、相手機器中の記憶場所の間接アドレス指定に用いられるページテーブルデータを格納するためのページテーブルメモリと、パケット処理回路を制御するためのパケット転送制御回路と、該パケット転送制御回路を起動するための中央処理ユニット(CPU)とを備えた構成を採用したものである。しかも、パケット転送制御回路は、ページテーブルを用いたデータ伝送の要求を受信専用バッファを介してCPUが受け取り、該CPUにより該パケット制御回路が起動された場合には、相手機器からページテーブルデータを取得するための要求パケットをパケット処理回路に作成させ、該パケット処理回路が送受信兼用バッファを介して取得したページテーブルデータをページテーブルメモリに格納し、かつ該ページテーブルメモリに格納されたページテーブルデータにより指定された相手機器中の記憶場所へのアクセスのための他の要求パケットをパケット処理回路に作成させる機能を有することとしたものである。これにより、パケット転送制御回路が起動された後は、ページテーブルを用いたデータ伝送がCPUの介入なしに自動的に実行される。
【0009】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を詳細に説明するが、これによって本発明の技術的範囲が制限されるものではないのはもちろんである。
【0010】
図1は、本発明の一実施の形態のデータ伝送装置の構成図である。1はコマンドを発行したり、データを送受信したりするホストPC(以降イニシエータとも呼ぶ)であり、2は光ディスクドライブ(以降ターゲットとも呼ぶ)である。ホストPC1と光ディスクドライブ2とは、IEEE1394シリアルバス3を介して接続されている。4は送受信回路で、物理層コントローラ(PHY)41とリンク層コントローラ(LINK)42とからなっている。PHY41は、1394バス3のイニシャライズ、データのエンコード/デコード、アービトレーション、バイアス電圧の出力/検出等の機能を持ち、LINK42は、誤り訂正符号(CRC)の生成/検出、パケットの生成/検出等の機能を持つ。5はコマンド等を受信するための受信専用バッファ(ARF)であり、6はステータス等を送信するための送信専用バッファ(ATF)であり、7はデータを送受信するための送受信兼用バッファ(DTRF:data transmission and reception FIFO buffer)である。8は受信したパケットの内容に応じてその格納先をARF5かDTRF7かに振り分けるための受信用フィルタ(RFIL)であり、9は送信するパケットの内容に応じてその格納先をATF6かDTRF7かに振り分けるための送信用フィルタ(TFIL)である。更に10は、受信されたパケットから必要なデータのみを抜き出し、光ディスクコントローラ(ODC:optical disk controller)14にDMAコントローラ(DMAC:direct memory access controller)13及びDMAバスを介して転送するためのデータに変換したり、或いは光ディスク16からヘッド17を介して読み出されたデータに所定のアナログ信号処理を施すアナログ信号処理回路15を経てODC14で復調や誤り訂正処理等が施されたデータに、ヘッダを付与したり、パケット化を行うパケット処理回路(PPRC:packet processor)である。11はCPU、12はCPU11に接続されたレジスタである。
【0011】
図2A〜EはIEEE1394で定義されている非同期パケットの一部のフォーマットを示している。IEEE1394では、動作の要求を行うための要求パケットと、要求パケットによって要求された動作の結果を返すための応答パケットとが定義されている。いずれのパケットに対しても、パケットを受信した場合には、パケットの受信状態を示すACKパケット(acknowledge packet)を相手機器に返す。ACKパケットは、処理完了を示すack#complete、受信は完了したが処理中であることを示すack#pending、再送要求を示すack#busy等の状態を示す。要求パケットと応答パケットとは通常対をなして使用されるが、ACKパケットの内容によってはACKパケットの受信で処理が完了する場合もある。
【0012】
図2A,B及びDは、それぞれBWRQパケット(write request for data block packet:データブロック書き込み要求パケット)、QWRQパケット(write request for data quadlet packet:データクワッドレット書き込み要求パケット)、BRRQパケット(read request for data block packet:データブロック読み出し要求パケット)である。書き込み要求(BWRQ及びQWRQ)パケットに対する応答パケットとして図2Cに示すWRSパケット(write response packet:書き込み応答パケット)が定義されており、またBRRQパケットに対する応答パケットとして図2Eに示すBRRSパケット(read response for data block packet:データブロック読み出し応答パケット)が定義されている。いずれの場合もパケットの種類を識別するtcode(transaction code)と、tl(transaction label、トランザクション固有のタグ情報)とが含まれており、また応答パケットの場合には、応答状態を示すrcode(response code)が含まれている。したがって、tcodeによりトランザクションの種類が識別でき、またtlにより対をなす要求パケットと応答パケットとを認識することができる。なお、詳細についてはIEEE1394−1995規格書を参照されたい。
【0013】
図3A〜Eは、図1の光ディスクドライブ2における内部パケット構成を示す説明図であって、図2A〜Eの各々に対応している。図3A〜E中の斜線部分は、リザーブ領域である。送信される内部パケットに対しては、header#CRCやdata#CRCの計算やsource#IDの付加等のパケットの再構成がLINK42で行われる。また、内部パケットが受信されたものである場合には、それはLINK42による誤り検出・訂正等の結果である。
【0014】
前記RFIL8は、データ受信時には、イニシエータ1からのデータの送信を要求するBRRQパケットに対応するデータフィールドにデータが含まれたBRRSパケットが受信された場合には、その受信されたBRRSパケットの格納先をDTRF7にし、それ以外のパケットが受信された場合には、その格納先をARF5にするように動作する。またイニシエータ1にデータを送信する時には、RFIL8は、受信されたパケット中のtcodeとrcodeとtlとから、送信するデータをデータフィールドに含むBWRQパケットに対して対をなすWRSパケットが受信されたと判断されると、受信したパケットをDTRF7に格納するとともに応答検出の旨をPPRC10に知らせ、それ以外のパケットが受信された場合には、受信したパケットをARF5に格納するとともに一時停止命令をPPRC10へ発行するように動作する。前記TFIL9は、データ伝送時において、送信するパケットをATF6に格納するか、或いはDTRF7に格納するかを、送信するパケットのtcodeにより選択する。
【0015】
図4は、図1中のパケット処理回路(PPRC)10の詳細構成を示している。PPRC10は、ヘッダフィールド書き込み回路(HFW:header field write circuit)20と、データフィールド書き込み回路(DFW:data field write circuit)21と、ヘッダフィールド読み出し回路(HFR:header field read circuit)22と、データフィールド読み出し回路(DFR:data field read circuit)23と、処理コントローラ(PRCC:process controller)30とを備えている。PRCC30は、要求パケットカウンタ31と、応答パケットカウンタ32と、一時停止コントローラ33とを備えている。HFW20は、イニシエータ1からのデータ受信時にはデータの送信を要求するためのBRRQパケットを作成し、イニシエータ1へのデータ送信時にはデータを含むBWRQパケットのヘッダフィールドを作成して、いずれもTFIL9に与える。また、HFW20は、CPU11からレジスタ12を経由して与えられたペイロード(payload)サイズに応じてパケット内のデータ長(data#length)を決定し、大量のデータを複数のパケットに分割して伝送する場合には、ヘッダフィールド内のtlの値をパケット毎に変え、デスティネーションオフセット(destination#offset)を更新する。DFW21は、イニシエータ1へデータを送信する場合に、HFW20が作成してTFIL9に与えたBWRQパケットヘッダの後に、HFW20から与えられたdata#lengthの値に応じて、DMAC13からデータを受け取ってTFIL9に与える。要求パケットカウンタ31は、TFIL9に与えた要求パケットの数をカウントする。HFR22は、イニシエータ1からのデータ受信時にはBRRQパケットに対するBRRSパケットのヘッダフィールドを読み出し、イニシエータ1へのデータ送信時にはBWRQパケットに対するWRSパケットのヘッダフィールドを読み出して、それぞれrcodeの確認を行う。rcodeが処理完了(resp#complete)以外の場合には、その旨がPRCC30及びレジスタ12を経由してCPU11に通知される。DFR23は、イニシエータ1からのデータ受信時に、HFR22がBRRSパケットのヘッダフィールドを読み出した後、HFR22から与えられたdata#lengthの値に応じて、DTRF7からデータを読み出しながらDMAC13に転送する。応答パケットカウンタ32は、DTRF7から読み出した応答パケットの数をカウントし、かつデータ伝送累積数をカウントして、要求パケットカウンタ31の値と応答パケットカウンタ32の値とが一致し、かつレジスタ12を経由してCPU11から与えられたデータ伝送総数とデータ伝送累積数とが一致した時点でデータ伝送終了と判断して、レジスタ12を経由してCPU11に知らせる。一時停止コントローラ33は、データ伝送においてPPRC10が発行した要求パケットに対する応答パケット以外のパケット受信をRFIL8が検出すると、HFW20に対して新たなパケットヘッダの作成を停止させ、応答パケットカウンタ32に対して要求パケットカウンタ31の値との一致で一時停止完了をレジスタ12を経由してCPU11に知らせるように指示する。
【0016】
図5は、SBP−2を用いてイニシエータ1とターゲット2との間でデータの伝送を行う場合の、基本的なプロトコルの動作説明図である。イニシエータ1がターゲット2からデータを読み込む場合、つまりイニシエータ1がREADコマンドを発行した場合の動作について、図5を用いて説明する。データ伝送を行う前には種々のやり取りが行われるが、ここでは説明を省略する。
【0017】
(1)データを伝送しようとすると、まずイニシエータ1は、ターゲット2側のCSR空間に定義されているORB#POINTERレジスタ宛に、自らのシステムメモリ内に作成しておいたORB(operation request block)のアドレスをデータフィールドに含むBWRQパケットを発行し、ターゲット2側のORB#POINTERレジスタに書き込む。ORBは、イニシエータ1からのコマンドを含むものである。これに対して、ターゲット2は、rcodeが処理完了(resp#complete)を示すWRSパケットを返す。
【0018】
(2)ターゲット2は、ORBが格納されたイニシエータ1のシステムメモリアドレスに対して、BRRQパケットを発行する。イニシエータ1は、このBRRQパケットを受信すると、その応答パケットであるBRRSパケットのデータフィールドにORBを格納し送信する。このようにして、ターゲット2はイニシエータ1からORB、つまりコマンドを受け取る。
【0019】
(3)ターゲット2は、受け取ったORBを解析し、READコマンドであった場合、伝送すべきデータが準備できると、そのデータをデータフィールドに含んだBWRQパケットを、READコマンドが含まれるORBで指定されたイニシエータ1のシステムメモリアドレスに対して発行し、データを書き込む。このとき、BWRQパケットの大きさは、IEEE1394バス3の伝送速度等に依存するために、大量のデータを伝送しようとすると、データを複数個のBWRQパケットに分割して、伝送を行うことになる。このとき、伝送のタイミングとしては、1つのトランザクションが完了する、つまりターゲット2がBWRQパケットに対して処理完了(ack#complete)を示すACKパケットを受信したか、或いは受信完了処理中(ack#pending)を示すACKパケットを受信し、その後BWRQパケットに対して対となるresp#completeのWRSパケットを受信したことを確認しながら行われる。
【0020】
(4)ORBで指定されたデータ長の伝送が全て終了すると、ターゲット2は、予めイニシエータ1が指定したアドレスにREADコマンドに対するステータスをBWRQパケットを用いて書き込む。
【0021】
以上で、READコマンドに関する一連の動作が完了するが、これらのトランザクションのうち、ターゲット2から送られたBWRQパケットをイニシエータ1が受信できない場合、再送要求を示すACKパケットをイニシエータ1が返すことにより、リトライ(再送)を行うことができる。
【0022】
同様に、WRITEコマンドの場合は、データの伝送時には、イニシエータ1のシステムメモリ中に格納されたデータを、ターゲット2がBRRQパケットを利用して読み込み、光ディスク16に書き込む。
【0023】
図6A〜Cは、READコマンドの実行中にイニシエータ1がターゲット2側の不図示のコンフィギュレーションROMへのアクセスを要求するBRRQパケットを発行した場合のタイミングチャートである。DTRF7の容量は2×kクワッドレットであるものとする。ここに、kは最大転送パケットサイズである。具体的には、本実施形態では、伝送速度が200Mbps(いわゆるS200)であるものとし、1パケットに含まれ得る伝送可能なデータ長は1024バイト(256クワッドレット)であるものとする。つまり、DTRF7のバッファサイズは、データを伝送する際に用いられるパケット、つまりSBP−2プロトコルの場合は、READコマンドではBWRQパケット、WRITEコマンドではBRRSパケットであるので、これらのパケットサイズの2倍であるものとする。なお、パケットのデータフィールドの最大サイズは伝送速度に応じてIEEE1394規格により定義されている。
【0024】
図6A〜Cの例では、1回のREADコマンドでイニシエータ1から要求されるデータ長を4096バイトとする。したがって、4096バイトのデータを伝送するためには、データを伝送するパケットのデータフィールドのサイズが1024バイトであるので、4回に分けてデータ伝送が行われる。
【0025】
(1)CPU11はREADコマンドを確認後、光ディスク16から必要なデータを読み出すために初期設定を行う。このとき、CPU11は、レジスタ12を経由してHFW20に、READコマンドで指定されたデータ格納先を示すイニシエータ1のシステムメモリのアドレス、イニシエータ1のID等のヘッダ情報を書き込む。
【0026】
(2)CPU11がレジスタ12を介してHFW20にデータ伝送起動をかけると、HFW20はCPU11から与えられた情報を用いて、最初の1024バイトのデータを伝送するためのBWRQ#1パケットのヘッダを作成し、TFIL9を経由してDTRF7に書き込む。このとき、要求パケットカウンタ31はカウントアップされ値は1となる。
【0027】
(3)続いてDFW21はDMAC13から1024バイトのデータを順次受け取り、TFIL9を経由してこれをDTRF7に書き込む。このとき、HFW20はRFIL8にBWRQ#1パケットのtlを渡す。こうして1024バイトのデータを含んだBWRQ#1パケットが1394バス3上に送出され、イニシエータ1に送られる。
【0028】
(4)更にHFW20は次の1024バイトのデータを伝送するためのBWRQ#2パケットのヘッダを作成してTFIL9を経由してDTRF7に書き込む。このとき、要求パケットカウンタ31はカウントアップされ値は2となる。またこのとき、ヘッダフィールド内のdestination#offsetは、先に送信したBWRQ#1パケットのdestination#offsetに1024を加えた値となっており、またtlはインクリメントされている。
【0029】
(5)続いてDFW21はDMAC13から1024バイトのデータを順次受け取り、これを1020バイトまでTFIL9を経由してDTRF7に書き込む。最後の4バイトを書き込まないのは、BWRQ#2パケットを1394バス3上に送出させないためである。このままPPRC10はBWRQ#1パケットの応答待ちとなる。
【0030】
(6)BWRQ#1パケットを受信したイニシエータ1は、このBWRQ#1パケットに対するWRSパケットを返送する。
【0031】
(7)ターゲット2が受信したWRSパケットはRFIL8に与えられる。RFIL8は、この受信パケットのtcodeがWRSパケットのそれであり、かつtlがBWRQ#1パケットのそれと一致し、かつrcodeがresp#completeであることを確認して、応答パケットカウンタ32に応答検出信号を送る。PPRC10は、この応答検出信号によってトランザクションの正常終了を確認する。このとき、応答パケットカウンタ32はカウントアップされ値は1になる。
【0032】
(8)応答検出信号を受け取った応答パケットカウンタ32は、DFW21に通知して、この通知を受けたDFW21はBWRQパケット#2の最後の4バイトをTFIL9を経由してDTRF7に書き込む。このとき、HFW20はRFIL8にBWRQ#2パケットのtlを渡す。こうして1024バイトのデータを含んだBWRQ#2パケットが1394バス3上に送出され、イニシエータ1に送られる。
【0033】
(9)更にHFW20は次の1024バイトのデータを伝送するためのBWRQ#3パケットのヘッダを作成して、TFIL9を経由してDTRF7に書き込む。このとき、要求パケットカウンタ31はカウントアップされ値は3となる。またこのとき、ヘッダフィールド内のdestination#offsetは、先に送信したBWRQ#2パケットのdestination#offsetに1024を加えた値となっており、またtlはインクリメントされている。
【0034】
(10)続いてDFW21はDMAC13から1024バイトのデータを順次受け取り、これを1020バイトまでTFIL9を経由してDTRF7に書き込む。最後の4バイトを書き込まないのは、BWRQ#3パケットを1394バス3上に送出させないためである。このままPPRC10はBWRQ#2パケットの応答待ちとなる。
【0035】
(11)BWRQ#2パケットを受信したイニシエータ1は、不図示のコンフィギュレーションROMへのアクセスを要求するBRRQパケット(図6A中のハッチング)を発行し、続いてBWRQ#2パケットに対するWRSパケットを返送する。
【0036】
(12)ターゲット2が受信したBRRQパケットはRFIL8に与えられる。この受信パケットのtcodeは期待しているWRSパケットのそれではないので、CPU11宛のパケットを受信したことをCPU11に通知し、同パケットをARF5に格納する。CPU11はこの通知を受けるが、データ伝送中なので一時停止完了待ちとなる。同時にRFIL8は、一時停止コントローラ33に対して一時停止命令を出す。
【0037】
一時停止命令を受けた一時停止コントローラ33はHFW20に対して、新たな要求パケットの作成を停止するように命令し、また応答パケットカウンタ32に対して、要求パケットカウンタ31と値が一致した場合にはレジスタ12を経由してCPU11に一時停止完了を通知するように命令する。
【0038】
ターゲット2が続いて受信したWRSパケットはRFIL8に与えられる。RFIL8は、この受信パケットのtcodeがWRSパケットのそれであり、かつtlがBWRQ#2パケットのそれと一致し、かつrcodeがresp#completeであることを確認して、応答パケットカウンタ32に応答検出信号を送る。PPRC10は、この応答検出信号によってトランザクションの正常終了を確認する。このとき、応答パケットカウンタ32はカウントアップされ値は2になる。
【0039】
(13)応答検出信号を受け取った応答パケットカウンタ32は、要求パケットカウンタ31とまだ値が一致していないのでDFW21に通知して、この通知を受けたDFW21はBWRQ#3パケットの最後の4バイトをTFIL9を経由してDTRF7に書き込む。このとき、HFW20はRFIL8にBWRQ#3パケットのtlを渡す。こうして1024バイトのデータを含んだBWRQ#3パケットが1394バス3上に送出され、イニシエータ1に送られる。このとき、HFW20は新たなBWRQパケットのヘッダを作成しない。
【0040】
(14)BWRQ#3パケットを受信したイニシエータ1は、このBWRQ#3パケットに対するWRSパケットを返送する。
【0041】
(15)ターゲット2が受信したWRSパケットはRFIL8に与えられる。RFIL8は、この受信パケットのtcodeがWRSパケットのそれであり、かつtlがBWRQ#3パケットのそれと一致し、かつrcodeがresp#completeであることを確認して、応答パケットカウンタ32に応答検出信号を送る。PPRC10は、この応答検出信号によってトランザクションの正常終了を確認する。このとき、応答パケットカウンタ32はカウントアップされ値は3になり、要求パケットカウンタ31の値と等しくなるので、応答パケットカウンタ32はレジスタ12経由でCPU11に対して一時停止完了の通知をする。またこの時点でARF5、ATF6及びDTRF7は共に空になっており、CPU11が自由にパケットの送受信を行うことができる状態になっている。
【0042】
(16)一時停止完了通知を受けたCPU11は、先にイニシエータ1から受け取っていたBRRQパケットに対するBRRSパケットを作成し、これをATF6に書き込む。このBRRSパケットは1394バス3上に送出され、イニシエータ1に返される。
【0043】
(17)CPU11は続けてトランザクションを起こす必要があれば行い、不要になった時点でHFW20に対してレジスタ12を介してデータ伝送再起動を命令する。
【0044】
(18)PPRC10は最後の1024バイトのデータ伝送を#3のトランザクション同様に行ってデータ伝送を終了し、CPU11に伝送終了を通知してデータ伝送が終了する。
【0045】
以上述べてきたように、本実施形態によれば、ARF5及びATF6に加えてDTRF7を設け、これらのバッファを状況に応じて使い分けることにより、ファームウェアのオーバーヘッドを少なくして、高速なデータ伝送が可能になる。また、データ伝送動作中に該動作に関係のないパケットをターゲット2が受信した場合には、その受信時点でのトランザクションが完結した時点でデータ伝送が一時停止し、再起動をかけるまでの間CPU11が自由に他のトランザクションを実行することができる。
【0046】
図7は、本発明の他の実施の形態のデータ伝送装置の構成図である。これは、図1の構成にパケット転送制御回路(PTRC:packet transmission controller)18と、ページテーブルメモリ(PTM:page table memory)19とを付加したものである。PTM19は、イニシエータ1中の記憶場所の間接アドレス指定に用いられるページテーブルデータを格納するためのメモリである。PTRC18は、PPRC10とCPU11との間に介在し、PPRC10を制御するようにCPU11により起動される。詳細に説明すると、PTRC18は、ページテーブルを用いたデータ伝送の要求をARF5を介してCPU11が受け取ると、該CPU11により起動されて、イニシエータ1からページテーブルデータを取得するためのBRRQパケットをPPRC10に作成させ、該PPRC10がDTRF7を介して取得したページテーブルデータをPTM19に格納し、かつ該PTM19に格納されたページテーブルデータにより指定されたイニシエータ1中の記憶場所へのアクセスのための要求パケット(例えばBWRQパケット)をPPRC10に作成させる。
【0047】
図8は、ページテーブルを用いたデータ伝送の要求を伴うREADコマンドをイニシエータ1が発行した場合の動作説明図である。イニシエータ1は、まず自らのシステムメモリ内にページテーブルデータ(P.T.DATA)を作成する。ここでは、n(nは整数)ページのテーブルが作成されるものとする。このページテーブルの先頭アドレスがPTA(ページテーブルアドレス)である。ページ1は、データ格納先を示すイニシエータ1のシステムメモリのアドレス(ADR1)と、データ長(LENGTH1)とを含んでいる。他のページも同様である。
【0048】
(1)データを伝送しようとすると、まずイニシエータ1は、ターゲット2側のCSR空間に定義されているORB#POINTERレジスタ宛に、自らのシステムメモリ内に作成しておいたORBのアドレスをデータフィールドに含むBWRQパケットを発行し、ターゲット2側のORB#POINTERレジスタに書き込む。これに対して、ターゲット2は、rcodeが処理完了(resp#complete)を示すWRSパケットを返す。
【0049】
(2)ターゲット2は、ORBが格納されたイニシエータ1のシステムメモリアドレスに対して、BRRQパケットを発行する。イニシエータ1は、このBRRQパケットを受信すると、その応答パケットであるBRRSパケットのデータフィールドにORBを格納し送信する。このようにして、ターゲット2はイニシエータ1からORB、つまりコマンドを受け取る。このORBの中には、ページテーブルの存在を示す情報と、PTAと、ページ数nとが含まれている。
【0050】
(3)ターゲット2は、ORBを解析してページテーブルの存在を確認した後、nページのページテーブルデータを読み出すべく、イニシエータ1のアドレスPTAに対してBRRQパケットを発行する。イニシエータ1は、このBRRQパケットに対して、所要のページテーブルデータを含んだBRRSパケットをターゲット2へ返す。ターゲット2は、受け取ったページテーブルデータを解析し、その結果をPTM19に格納する。
【0051】
(4)ターゲット2は、伝送すべきページ1のデータが準備できると、そのデータをデータフィールドに含んだBWRQパケットを、ADR1で指定されたイニシエータ1のシステムメモリアドレスに対して発行し、データを書き込む。このとき、LENGTH1がペイロードサイズを越えている場合には、ページ1のデータを複数個のBWRQパケットに分割して、伝送を行うことになる。伝送のタイミングとしては、1つのトランザクションが完了する、つまりターゲット2がBWRQパケットに対して処理完了(ack#complete)を示すACKパケットを受信したか、或いは受信完了処理中(ack#pending)を示すACKパケットを受信し、その後BWRQパケットに対して対となるresp#completeのWRSパケットを受信したことを確認しながら行われる。そして、指定された全ページのデータ伝送が完了するまで、PTM19が繰り返し参照される。
【0052】
そして、ORBで指定されたデータ長の伝送が全て終了すると、図示を省略するが、ターゲット2は、予めイニシエータ1が指定したアドレスにREADコマンドに対するステータスをBWRQパケットを用いて書き込む。このシーケンスは、図5中の(4)と同様である。
【0053】
図9A及びBは、READコマンドの実行に際してページテーブルを用いる場合のタイミングチャートである。ここでは、ページ数nを2とする。ただし、図7中のターゲット2は、WRITEコマンドの実行に際してページテーブルを用いる場合にも対処できるものである。
【0054】
(1)CPU11は、イニシエータ1から取得したORBで示された情報を元に、ページテーブルアドレスPTAと、ページ数nと、ペイロードサイズと、tcodeと、tlの初期値とをPTRC18に設定した後で、このPTRC18を起動する。
【0055】
(2)PTRC18は、イニシエータ1からページテーブルデータを取得するためのBRRQ#0パケットを作成するように、PRCC30を介してHFW20を制御する。
【0056】
(3)HFW20はBRRQ#0パケットを作成し、TFIL9を経由してATF6に書き込む。こうしてBRRQ#0パケットが1394バス3上に送出され、イニシエータ1に送られる。
【0057】
(4)PRCC30は、BRRQ#0パケットに対してイニシエータ1から返されるACKパケット及びBRRS#0パケットを受け取るまで待つ。
【0058】
(5)ターゲット2が受信したBRRS#0パケットは、RFIL8を経由してDTRF7に書き込まれる。この受信パケットのtcodeがBRRSパケットのそれであり、かつtlがBRRQ#0パケットのそれと一致することがRFIL8により確認されると、PRCC30はDTRF7からヘッダ#0を読み出すようにHFR22を起動する。更にPRCC30は、受信したBRRS#0パケットのrcodeがresp#completeであることを条件として、当該パケット中のデータ#0を読み出すようにDFR23を起動する。DFR23は、HFR22が読み出したヘッダ情報を元にデータ#0をDTRF7から読み出し、これをPRCC30へ送る。
【0059】
(6)PTRC18は、PRCC30からデータ#0、すなわちページテーブルデータを受け取り、これをPTM19に書き込む。
【0060】
(7)PTRC18は、PTM19からページ1の情報(ADR1及びLENGTH1)を読み出し、この情報を元に、ページ1のデータをイニシエータ1へ伝送するためのBWRQ#11パケットを作成するように、PRCC30を介してHFW20を制御する。
【0061】
(8)HFW20はヘッダ#11を、DFW21はデータ#11をそれぞれ作成し、TFIL9を経由してDTRF7に書き込む。こうしてBWRQ#11パケットが1394バス3上に送出され、イニシエータ1に送られる。このとき、LENGTH1がペイロードサイズを越えている場合には、ページ1のデータが複数個のBWRQパケットに分割される。その結果、イニシエータ1では、ADR1から始まる記憶場所にLENGTH1の長さのデータが格納される。
【0062】
(9)PTRC18は、PTM19からページ2の情報(ADR2及びLENGTH2)を更に読み出し、この情報を元に、ページ2のデータをイニシエータ1へ伝送するためのBWRQ#21パケットを作成するように、PRCC30を介してHFW20を制御する。
【0063】
(10)HFW20はヘッダ#21を、DFW21はデータ#21をそれぞれ作成し、TFIL9を経由してDTRF7に書き込む。こうしてBWRQ#21パケットが1394バス3上に送出され、イニシエータ1に送られる。このとき、LENGTH2がペイロードサイズを越えている場合には、ページ2のデータが複数個のBWRQパケットに分割される。その結果、イニシエータ1では、ADR2から始まる記憶場所にLENGTH2の長さのデータが格納される。
【0064】
(11)この後、PTRC18は所要の全データ送信が正常に終了したことを確認するか、又は途中で異常終了したことを確認すると、CPU11へ割り込み信号INT(正常終了の場合はcomplete、異常終了の場合はerror)をアサートして送信処理の終了を伝える。
【0065】
以上述べてきたように、本実施形態によれば、ARF5及びATF6に加えてDTRF7を設け、これらのバッファを状況に応じて使い分けることにより、ファームウェアのオーバーヘッドを少なくして、高速なデータ伝送が可能になる。また、PTRC18が起動された後は、ページテーブルを用いたデータ伝送がCPU11の介入なしに自動的に実行される。
【0066】
【発明の効果】
以上のとおり、本発明によれば、従来のCPUファームウェア処理の一部をハードウェアに分担させることとしたので、高速データ伝送を実現することができる。
【図面の簡単な説明】
【図1】本発明に係るデータ伝送装置を備えた光ディスクドライブの内部構成例を示すブロック図である。
【図2A】図1中のIEEE1394バス上のBWRQパケットの構成を示す説明図である。
【図2B】図1中のIEEE1394バス上のQWRQパケットの構成を示す説明図である。
【図2C】図1中のIEEE1394バス上のWRSパケットの構成を示す説明図である。
【図2D】図1中のIEEE1394バス上のBRRQパケットの構成を示す説明図である。
【図2E】図1中のIEEE1394バス上のBRRSパケットの構成を示す説明図である。
【図3A】図1の光ディスクドライブにおける内部BWRQパケットの構成を示す説明図である。
【図3B】図1の光ディスクドライブにおける内部QWRQパケットの構成を示す説明図である。
【図3C】図1の光ディスクドライブにおける内部WRSパケットの構成を示す説明図である。
【図3D】図1の光ディスクドライブにおける内部BRRQパケットの構成を示す説明図である。
【図3E】図1の光ディスクドライブにおける内部BRRSパケットの構成を示す説明図である。
【図4】図1中のパケット処理回路の詳細構成例を示すブロック図である。
【図5】図1におけるREADコマンド実行時の動作説明図である。
【図6A】図1における各部の動作を示すタイミングチャートである。
【図6B】図6Aに続くタイミングチャートである。
【図6C】図6Bに続くタイミングチャートである。
【図7】本発明に係るデータ伝送装置を備えた光ディスクドライブの他の内部構成例を示すブロック図である。
【図8】図7におけるREADコマンド実行時の動作説明図である。
【図9A】図7における各部の動作を示すタイミングチャートである。
【図9B】図9Aに続くタイミングチャートである。
【符号の説明】
1 ホストPC(イニシエータ)
2 光ディスクドライブ(ターゲット)
3 IEEE1394シリアルバス
4 送受信回路
5 受信専用バッファ(ARF)
6 送信専用バッファ(ATF)
7 送受信兼用バッファ(DTRF)
8 受信用フィルタ(RFIL)
9 送信用フィルタ(TFIL)
10 パケット処理回路(PPRC)
11 中央処理ユニット(CPU)
12 レジスタ
13 DMAコントローラ(DMAC)
14 光ディスクコントローラ(ODC)
15 アナログ信号処理回路
16 光ディスク
17 光ヘッド
18 パケット転送制御回路(PTRC)
19 ページテーブルメモリ(PTM)
20 ヘッダフィールド書き込み回路(HFW)
21 データフィールド書き込み回路(DFW)
22 ヘッダフィールド読み出し回路(HFR)
23 データフィールド読み出し回路(DFR)
30 処理コントローラ(PRCC)
31 要求パケットカウンタ
32 応答パケットカウンタ
33 一時停止コントローラ
41 物理層コントローラ(PHY)
42 リンク層コントローラ(LINK)
Claims (4)
- ヘッダフィールドとデータフィールドとからなるパケットを単位として伝送路を介して相手機器と通信を行うデータ伝送装置であって、
送信専用バッファと、
受信専用バッファと、
送受信兼用バッファと、
送信するパケットの内容に応じてその格納先を前記送信専用バッファか前記送受信兼用バッファかに振り分けるための送信用フィルタと、
受信したパケットの内容に応じてその格納先を前記受信専用バッファか前記送受信兼用バッファかに振り分けるための受信用フィルタと、
送信すべき情報を含んだパケットを作成したり、受信したパケットから必要な情報を取り出したりするためのパケット処理回路と、
前記送信専用バッファ又は前記送受信兼用バッファに格納されたパケットを前記伝送路上の電気信号に変換したり、受信された前記伝送路上の電気信号を前記受信専用バッファ又は前記送受信兼用バッファに格納するパケットに変換したりするための送受信回路と、
前記パケット処理回路を起動するための中央処理ユニットとを備え、
前記受信用フィルタは、ある要求パケットに対して対をなす応答パケットが受信された場合には該受信した応答パケットを前記送受信兼用バッファに格納するとともに応答検出の旨を前記パケット処理回路に知らせ、前記要求パケットに対してそれ以外のパケットが受信された場合には該受信したパケットを前記受信専用バッファに格納するとともに一時停止命令を前記パケット処理回路へ発行する機能を有することを特徴とするデータ伝送装置。 - 請求項1記載のデータ伝送装置において、
前記パケット処理回路は、
前記送信用フィルタに与えた要求パケットの数をカウントするための要求パケットカウンタと、
前記送受信兼用バッファから読み出した応答パケットの数をカウントするための応答パケットカウンタと、
前記一時停止命令に応答して、新たな要求パケットの作成を停止させ、かつ前記応答パケットカウンタの値と前記要求パケットカウンタの値との一致で前記中央処理ユニットへの一時停止完了通知がなされるように指示するための一時停止コントローラとを備えたことを特徴とするデータ伝送装置。 - 請求項2記載のデータ伝送装置において、
前記パケット処理回路は、前記一時停止完了通知の後に前記中央処理ユニットからのデータ伝送再起動命令を受け付けるための手段を更に備えたことを特徴とするデータ伝送装置。 - ヘッダフィールドとデータフィールドとからなるパケットを単位として伝送路を介して相手機器と通信を行うデータ伝送装置であって、
送信専用バッファと、
受信専用バッファと、
送受信兼用バッファと、
送信するパケットの内容に応じてその格納先を前記送信専用バッファか前記送受信兼用バッファかに振り分けるための送信用フィルタと、
受信したパケットの内容に応じてその格納先を前記受信専用バッファか前記送受信兼用バッファかに振り分けるための受信用フィルタと、
送信すべき情報を含んだパケットを作成したり、受信したパケットから必要な情報を取り出したりするためのパケット処理回路と、
前記送信専用バッファ又は前記送受信兼用バッファに格納されたパケットを前記伝送路上の電気信号に変換したり、受信された前記伝送路上の電気信号を前記受信専用バッファ又は前記送受信兼用バッファに格納するパケットに変換したりするための送受信回路と、
前記相手機器中の記憶場所の間接アドレス指定に用いられるページテーブルデータを格納するためのページテーブルメモリと、
前記パケット処理回路を制御するためのパケット転送制御回路と、
前記パケット転送制御回路を起動するための中央処理ユニットとを備え、
前記パケット転送制御回路は、ページテーブルを用いたデータ伝送の要求を前記受信専用バッファを介して前記中央処理ユニットが受け取り、該中央処理ユニットにより該パケット転送制御回路が起動された場合には、前記相手機器からページテーブルデータを取得するための要求パケットを前記パケット処理回路に作成させ、前記パケット処理回路が前記送受信兼用バッファを介して取得したページテーブルデータを前記ページテーブルメモリに格納し、かつ該ページテーブルメモリに格納されたページテーブルデータにより指定された前記相手機器中の記憶場所へのアクセスのための他の要求パケットを前記パケット処理回路に作成させる機能を有することを特徴とするデータ伝送装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000090125A JP4362199B2 (ja) | 1999-04-09 | 2000-03-29 | データ伝送装置 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11-102275 | 1999-04-09 | ||
JP10227599 | 1999-04-09 | ||
JP10227499 | 1999-04-09 | ||
JP11-102274 | 1999-04-09 | ||
JP2000090125A JP4362199B2 (ja) | 1999-04-09 | 2000-03-29 | データ伝送装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000354083A JP2000354083A (ja) | 2000-12-19 |
JP4362199B2 true JP4362199B2 (ja) | 2009-11-11 |
Family
ID=27309665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000090125A Expired - Fee Related JP4362199B2 (ja) | 1999-04-09 | 2000-03-29 | データ伝送装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4362199B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4261992B2 (ja) * | 2003-06-10 | 2009-05-13 | パイオニア株式会社 | 情報データの送受信装置及び送受信方法 |
CN114116553B (zh) * | 2021-11-30 | 2023-01-20 | 海光信息技术股份有限公司 | 数据处理装置、方法以及系统 |
-
2000
- 2000-03-29 JP JP2000090125A patent/JP4362199B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000354083A (ja) | 2000-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6651119B2 (en) | Method for allocating priorities to plurality of DMA engines for processing data packets based on bus phase and transactions status | |
US5721955A (en) | System for transferring portion of data to host from buffer if size of packet is greater than first threshold value but less than second threshold value | |
US7069350B2 (en) | Data transfer control system, electronic instrument, and data transfer control method | |
JPH05502314A (ja) | データ転送方法 | |
US20070180336A1 (en) | Multi-initiator control unit and method | |
US6279052B1 (en) | Dynamic sizing of FIFOs and packets in high speed serial bus applications | |
JP2001036588A (ja) | データ転送制御装置及び電子機器 | |
JP2001036548A (ja) | データ転送制御装置及び電子機器 | |
JP3400772B2 (ja) | パケット送受信処理装置 | |
EP1253520B1 (en) | Apparatus for issuing command for high-speed serial interface | |
JP3733699B2 (ja) | シリアルインタフェース回路 | |
US6693905B1 (en) | Data exchange unit | |
US5961614A (en) | System for data transfer through an I/O device using a memory access controller which receives and stores indication of a data status signal | |
JP4362199B2 (ja) | データ伝送装置 | |
JP3539287B2 (ja) | データ転送制御装置及び電子機器 | |
US7085855B1 (en) | Data transfer control device and electronic equipment | |
US7346714B2 (en) | Notification of completion of communication with a plurality of data storage areas | |
US6654380B1 (en) | Data exchange unit | |
JP3838606B2 (ja) | シーケンス処理装置 | |
JP4582180B2 (ja) | データ伝送装置 | |
JP2002251260A (ja) | データ送受信システム | |
JPH11149455A (ja) | メモリディスク共有方法及びその実施装置 | |
JP2001337911A (ja) | Usb−atapiインターフェイスシステムとこれに用いるatapi−usb変換機器 | |
JPH05502316A (ja) | データ記憶サブシステム | |
JP3610982B2 (ja) | データ転送制御装置及び電子機器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070125 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090716 |
|
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: 20090721 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090817 |
|
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: 20120821 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |