(57)【要約】【課題】ＩＥＥＥ１３９４でＳＢＰ２による通信を実行させる場合の処理速度の向上を図る。【解決手段】ＬＳＩであるＯＨＣＩ部において、これまでのＯＨＣＩに対応するＯＨＣＩユニットとともに、ＳＢＰ２に特化したハードウェアのデータ送受信系であるＳＢＰ２ユニットを設ける。そして、ＳＢＰ２によりReadデータ、Writeデータを転送するときには、そのトランザクションにおける所定のシーケンスを、ソフトウェアを介在させずに、ＳＢＰ２ユニットとInitiatorの間でのハードウェア間での通信により行うようにする。【選択図】図７
2009290545.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータインターフェース規格の下で規定される所定の共通化規格に準拠して形成され、上記データインターフェース規格に対応する外部バスと、所定規格による内部バスとの間でデータ伝送を行うようにして設けられる第１の伝送部と、
上記外部バスと上記内部バスとの間に設けられて、上記データインターフェース規格の上位で規定される所定の通信プロトコルに対応するデータ伝送を行うもので、ハードウェアにより形成され、上記第１の伝送部を利用した場合にはソフトウェアによる処理が介在する所定のシーケンスについては、ソフトウェアを介在させることなく自己と外部バスとの間でのハードウェア間データ伝送を行うように構成される第２の伝送部と、
を備える情報処理装置。
【請求項２】
上記第２の伝送部は、
上記通信プロトコルにて規定される所定のコマンドに対応したトランザクションにおける所定のシーケンスについて、上記ハードウェア間データ伝送を実行するようにされている、
請求項１に記載の情報処理装置。
【請求項３】
上記第２の伝送部は、
上記通信プロトコルにて規定されるファイル読み出しコマンドに対応したトランザクションにおける読み出しデータの転送のためのシーケンスについて、少なくともハードウェア間データ伝送を実行するようにされている、
請求項２に記載の情報処理装置。
【請求項４】
上記第２の伝送部は、
上記通信プロトコルにて規定されるファイル書き込みコマンドに対応したトランザクションにおける書き込みデータの転送のためのシーケンスについて、少なくともハードウェア間データ伝送を実行するようにされている、
請求項２に記載の情報処理装置。
【請求項５】
上記第２の伝送部は、
自身が対応すべき上記通信プロトコルにおける所定のエージェント機能に対応するレジスタへのアクセスに対するレスポンスと、これに続く、コマンド内容を示すデータを受け取るまでの処理について、少なくとも、ハードウェア間データ伝送を実行する、
請求項１に記載の情報処理装置。
【請求項６】
上記第２の伝送部は、
上記外部バスに伝送すべきデータに対して、上記データインターフェース規格により規定されるパケットのヘッダ、フッタを付加するヘッダ・フッタ付加手段を備える、
請求項１に記載の情報処理装置。
【請求項７】
上記第２の伝送部は、
上記外部バスから伝送されてきた、上記データインターフェース規格により規定されるパケット形式のデータから、ヘッダ、フッタを除去するヘッダ・フッタ除去手段を備える、
請求項１に記載の情報処理装置。
【請求項８】
上記第２の伝送部は、
上記通信プロトコルにおいて規定される所定のエージェント機能にのみ対応してハードウェア間データ伝送を行うようにされている、
請求項１に記載の情報処理装置。
【請求項９】
上記第２の伝送部は、
少なくとも、上記外部バス経由でこの情報処理装置が受けた、エージェント機能対応のレジスタへのアクセスが示すアドレスが、上記所定のエージェント機能に対応する対象エージェント機能対応レジスタのアドレスと同じである場合に、ハードウェア間データ伝送を実行するようにされている、
請求項８に記載の情報処理装置。
【請求項１０】
上記第２の伝送部は、
上記外部バスと接続される相手側情報処理装置が有する、上記ハードウェア間データ伝送により伝送されるデータのための離散バッファ領域を示すページテーブルの総サイズが所定以上である場合においては上記ページテーブルを複数のページテーブル部分に分割設定し、
上記相手側情報処理装置に対してページテーブル要求を行う際には、上記ページテーブル部分ごとに分けて要求を行うように構成される、
請求項１に記載の情報処理装置。
【請求項１１】
所定のデータインターフェース規格の下で規定される所定の共通化規格に準拠して形成され、上記データインターフェース規格に対応する外部バスと、所定規格による内部バスとの間でデータの伝送を行うようにして設けられる第１の伝送部と、
上記外部バスと上記内部バスとの間に設けられて、上記データインターフェース規格の上位で規定される所定の通信プロトコルに対応するデータの伝送を行うもので、ハードウェアにより形成される第２の伝送部とを備える情報処理装置における情報処理方法であって、
上記第１の伝送部を利用した場合にはソフトウェアによる処理が介在する所定のシーケンスを実行すべきときには、上記第２の伝送部により、ソフトウェアを介在させることなく外部バスとの間でのハードウェア間データ伝送を行うようにする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＩＥＥＥ１３９４などのデータインターフェース規格の下でデータ転送を実行するようにされる情報処理装置と、このような情報処理装置に対応した情報処理方法とに関するものである。
【背景技術】
【０００２】
データインターフェース規格の１つとしてＩＥＥＥ１３９４が知られている。
また、現状においては、ＩＥＥＥ１３９４上でＯＨＣＩ（Open Host Controller Interface）を実装することがしばしば行われている。例えば、機器が備えるＩＥＥＥ１３９４のハードウェア構成(例えば通信ボード)をＯＨＣＩ準拠とすることで、レジスタ構成やデータ構造などが共通化され、例えば、ソフトウェアからみれば同等の扱いでデータ転送のコントロールを行うことが可能になるとともに、ドライバ次第で、ＩＥＥＥ１３９４上で動作させる各種の上位通信プロトコルにも対応できることになり、広い汎用性を有するものとなる。
【０００３】
特許文献１には、ＩＥＥＥ１３９４における非同期転送の速度を向上させるために、既存の大容量保持回路をバッファとして利用する技術が開示されている。
特許文献２には、ＯＨＣＩ（1394OHCI）を用いたIEEE1394ディジタルシリアルデータのインタフェース装置が記載されている。
【０００４】
【特許文献１】特開２００２−１３５２７０号公報
【特許文献２】特開２００１−３２６６７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
例えば特許文献１にもあるように、データインターフェースによるデータ転送にあたり、転送速度の向上、高速化は、常に１つの主たる課題となる。
本願発明としても、例えば所定規格によるデータインターフェースの環境において、データ転送速度の向上が図られるようにすることを、その目的、課題とするものである。
【課題を解決するための手段】
【０００６】
そこで本発明は上記した課題を考慮して、情報処理装置として次のように構成する。
つまり、所定のデータインターフェース規格の下で規定される所定の共通化規格に準拠して形成され、上記データインターフェース規格に対応する外部バスと、所定規格による内部バスとの間でデータの伝送を行うようにして設けられる第１の伝送部と、外部バスと内部バスとの間に設けられて、データインターフェース規格の上位で規定される所定の通信プロトコルに対応するデータ伝送を行うもので、ハードウェアにより形成され、上記第１の伝送部を利用した場合にはソフトウェアによる処理が介在する所定のシーケンスについては、ソフトウェアを介在させることなく自己と外部バスとの間でのハードウェア間データ伝送を行うように構成される第２の伝送部とを備えることとした。
【０００７】
上記構成では、先ず、所定の共通化規格に対応した第１の伝送部を備えることで、この第１の伝送部をソフトウェア制御することにより、汎用性のあるデータ伝送、通信を行える。これとともに、第２伝送部を備えることで、本願のデータインターフェース規格の上位通信プロトコルに対応する所定のシーケンスについては、この第２伝送部と外部バスとの間での、ソフトウェアが介在しないハードウェア間データ伝送を行うようにした。
【発明の効果】
【０００８】
つまり、上位通信プロトコルによる通信においては、第２伝送部によるハードウェア間データ伝送が適宜実行されることになるが、これにより、これまでに実行していたソフトウェアの処理は省略されることとなる。この結果、データ転送速度は大幅に向上されることになる。
【発明を実施するための最良の形態】
【０００９】
本実施の形態において、本願発明に基づく情報処理装置は、データ通信（データインターフェース）規格としてＩＥＥＥ１３９４に対応するデータ転送（送受信）機能が与えられているものとする。そのうえで、ＯＨＣＩ（Open Host Controller Interface）といわれる標準化規格に準拠した構成を採っているものとする。
【００１０】
図１は、本実施の形態に対応するデータ送受信システムの一構築例を示している。
この図に示されるデータ送受信システムは、ビデオカメラ装置１と編集装置２とから成るものとしている。
ビデオカメラ装置１は、撮像部、ビデオ信号処理部、メディアドライブなどを備え、撮像部にて撮像して得られる画像から所定形式による動画データを生成し、この動画データを所定のメディア（記憶媒体）に記憶させることが可能とされている。
さらに、所定規格によるデータインターフェース機能を実装することで、そのデータインターフェース経由で接続した他の機器などと、上記動画データなどをはじめとするデータ転送が可能なようにもされている。そして、このようなデータインターフェース機能の１つとして、ＩＥＥＥ１３９４を実装するものである。
この図では、ＩＥＥＥ１３９４のデータインターフェースにより、ビデオカメラ装置１と、編集装置２とを接続している態様を示している。
【００１１】
編集装置２は、この場合には、パーソナルコンピュータ（以降、パーソナルコンピュータについてはＰＣと表記する場合もある）とされ、例えば所定のアプリケーションソフトウェアがインストールされることでビデオ編集機能を有する。そして、この編集装置２も、データインターフェース機能の１つとしてＩＥＥＥ１３９４を実装しており、ここでは、上記のようにビデオカメラ装置１とＩＥＥＥ１３９４経由で接続されているものである。
なお、編集装置２としては、例えばビデオカメラ装置１に対応可能な専用の編集用機器などとされてもよい。
【００１２】
このようにしてＩＥＥＥ１３９４経由で接続されたビデオカメラ装置１と編集装置２との間では、例えば、ビデオカメラ装置１側に装填されているメディアに記録されている動画データを編集装置２側が受信して取り込んで、例えばＨＤＤ(ハードディスクドライブ)などの記憶装置に記憶させることができる。編集装置２側では、編集用のアプリケーションソフトウェアを利用することで、ＨＤＤに記憶した動画データの編集を行うことができる。
また、逆に、編集装置２側の記憶装置に記憶されている動画データなどのデータをビデオカメラ装置１側に転送して、例えばビデオカメラ装置１に装填されているメディアに記憶させることも可能とされる。
また、動画データの送受信だけではなく、静止画データや音声データなども送受信可能であり、さらに、このようなコンテンツデータのほか、例えばプログラムや設定情報などをはじめとする各種のデータ、情報なども必要に応じて送受信することが可能である。
【００１３】
図２は、ビデオカメラ装置１における、ＩＥＥＥ１３９４のデータインターフェース機能に関連した部位の構成例を示している。
ＣＰＵ(Central Processing Unit)１１は、いわゆる演算装置といわれるもので、例えばここでは図示していないＲＯＭ若しくはＨＤＤなどに代表される副記憶装置に記憶されているプログラムを実行することにより、少なくとも、ＩＥＥＥ１３９４による通信に関する制御・処理を実行する。また、このために、ビデオカメラ装置１には、例えばＩＥＥＥ１３９４（ＯＨＣＩ準拠）の通信に対応するドライバ（ソフトウェア）がインストールされる。
【００１４】
メモリ１２は、例えばＲＡＭなどとされて、ＣＰＵ１１の演算処理に応じて、適宜、ＣＰＵ１１が扱うべきデータが保持される。
【００１５】
ビデオカメラ装置１では、ＩＥＥＥ１３９４による通信機能に対応して、上記ＣＰＵ１１と、ＯＨＣＩ部１３。バッファメモリ１５とをＰＣＵバス１４により接続している。
【００１６】
ＯＨＣＩ部１３は、例えば自身が実装される自己側ノード（この場合はビデオカメラ装置１となる）と、ＩＥＥＥ１３９４バス３により接続される外部のノードとの間での、データ送受信を司る部位とされる。つまり、この場合には、ＰＣＩバス１４(内部バス)とＩＥＥＥ１３９４バス３(外部バス)との間での双方向のデータ伝送を行う。そのうえで、ＯＨＣＩ部１３は、ＯＨＣＩに対応、準拠した通信が行われるようにして構成されている。
バッファメモリ１５は、ＯＨＣＩ部１３を介してやりとりされるデータを必要に応じて書き込むことのできる記憶領域である。
なお、例えば実際においては、この図に示される部位は、ＬＳＩ(Large Scale Integration)などによるハードウェア部品として構成することができる。
【００１７】
ＯＨＣＩは、例えばＩＥＥＥ１３９４データインターフェース規格上で、例えば特定メーカ(ベンダ)のコントローラチップに依存することなく、汎用のドライバにより通信が行えるようにすることを目的として定められた標準化規格(共通化規格)である。
【００１８】
図３は、ＯＨＣＩ部１３としての一般的な内部構成例を示している。
この図に示すようにして、ＯＨＣＩ部１３は、ＯＨＣＩユニット２１、ＰＣＩバスインターフェースブロック(PCI Bus Interface)２２、ＩＥＥＥ１３９４リンク層・物理層ブロック（IEEE1394 Link and PHY）２３から成る。
【００１９】
ＰＣＩバスインターフェースブロック２２は、ＰＣＩバス１４とＯＨＣＩユニット２１との間で、ＰＣＩバス規格に対応するデータ入出力を実行する。
ＩＥＥＥ１３９４リンク層・物理層ブロック（IEEE1394 Link and PHY）２３は、ＯＨＣＩユニット２１とＩＥＥＥ１３９４バス３との間で、ＩＥＥＥ１３９４規格に対応するデータ入出力を実行する。
【００２０】
ＯＨＣＩユニット２１は、図示するようにして、IT(Isochronous Transmit)DMA(Direct Memory Access)ブロック、IT FIFO(First-In First-Out)ブロック、AT(Asynchronous Transmit) Request DMAブロック、AT Request FIFOブロック、AT Response DMAブロック、AT Response FIFOブロック、Physical Response Unit、AT Physical Response FIFOブロック、Physical Read Request Receiveブロック、Physical Read Request FIFOブロック、Physical Write Request Receiveブロック、Physical Write Request FIFOブロック、General Request Receive DMAブロック、AR(Asynchronous Receive) Request FIFOブロック、General Response Receive DMAブロック、AR Response FIFOブロック、IR(Isochronous Receive) DMAブロック、IR FIFOブロック、Self-ID Receive DMAブロック、Self-ID Receive FIFOブロック、内部レジスタ（Internal Registers）ブロックを、図示するようにして備えて成る。ここで、DMAの名称を有するブロック(DMAブロック)はDMA転送を実行するDMAコントローラであり、FIFOの名称を有するブロック(FIFOブロック)は、FIFOによるデータ入出力を実行することのできるコントローラである。
【００２１】
IT DMAブロック、IT FIFOブロックから成る部位は、アイソクロナス通信での送信に対応する動作を実行する系である。
AT Request DMAブロック、AT Request FIFOブロックから成る部位は、アシンクロナス通信でのリクエストの送信に対応する動作を実行する系である。
AT Response DMAブロック、AT Response FIFOブロックから成る部位は、アシンクロナス通信でのレスポンスの送信に対応する動作を実行する系である。
Physical Response Unit、AT Physical Response FIFOブロックから成る部位は、ＯＨＣＩで規定されるPhysical Responseの送信に対応する動作を実行する系である。
Physical Read Request Receiveブロック、Physical Read Request FIFOブロックから成る部位は、Physical Read Requestの受信に対応する動作を実行する系である。
Physical Write Request Receiveブロック、Physical Write Request FIFOブロックから成る部位は、Physical Write Requestの受信に対応する動作を実行する系である。
General Request Receive DMAブロック、AR Request FIFOブロックから成る部位は、アシンクロナスでのリクエストの受信に対応する動作を実行する系である。
General Response Receive DMAブロック、AR Response FIFOブロックから成る部位は、アシンクロナスでのレスポンスの受信に対応する動作を実行する系である。
IR DMAブロック、IR FIFOブロックから成る部位は、アイソクロナス通信での受信に対応する動作を実行する系である。
Self-ID Receive DMAブロック、Self-ID Receive FIFOブロックから成る部位は、ＯＨＣＩで規定されるSelf-IDの受信に対応する動作を実行する系である。
内部レジスタ（Internal Registers）は、リクエスト、レスポンスの送受信に応じて、この動作に利用されるべき所定の値がセットされる部位である。
これらの部位は、ソフトウェア（ドライバ）によりコントロールされる。なお、このソフトウェアとしての処理は、例えばＣＰＵ１１がそのプログラムを実行することで実現される。
【００２２】
このようにしてＩＥＥＥ１３９４のデータインターフェースにおいてＯＨＣＩに準拠した構成を採ることとした場合、上記もしたようにソフトウェアがＯＨＣＩ部１３を利用して通信制御を実行することになる。このために、ソフトウェアにより多様な通信方式、機能などに対応できることになるので、この点で非常に広い汎用性、多機能性を有している。これが、標準化対応と共に、ＯＨＣＩを採用することのおおきな利点の１つとなっている。
【００２３】
例えば、ＩＥＥＥ１３９４の上位通信プロトコルの１つとしてＳＢＰ(Serial Bus Protocol)−２やといわれる、ＳＣＳＩ(Small Computer System Interface)を基としたコマンドセットに対応するデータ通信プロトコルが知られている。なお、ＳＢＰ−２ではアシンクロナス通信によりデータ伝送を行う。また、AV/C Commandといわれる、ＡＶ機器間での映像音声データの同期伝送をアイソクロナス通信により実現する通信プロトコルも知られている。上記図３に示すようなＯＨＣＩ部１３を備えていれば、例えばＳＢＰ２に対応するソフトウェア(ドライバ)を実装(インストール)することでＳＢＰ−２によるデータ通信が可能になるし、AV/C Commandに対応するソフトウェアを実装することで、AV/C Commandに応じたデータ伝送、通信を実行することも可能になる。
【００２４】
しかしながら、ＯＨＣＩ部１３によるデータ伝送にはソフトウェアの処理が介在する。例えば上記ＳＢＰ−２の場合であれば、個々のＩＥＥＥ１３９４のパケットをシステムメモリ上に形成する必要がある。このようにして、データ伝送に際してソフトウェアの処理が介在することで、例えばＣＰＵの処理負担が重くなり、転送速度もその分低下することになる。
この問題は、例えば高速に処理を実行できる高性能なＣＰＵのセットを採用すれば解決できる。しかし、例えば本実施の形態のビデオカメラ装置１をはじめとする機器では、低消費電力化などを優先して、低消費電力仕様の組み込み機器用ＣＰＵが採用される。このようなＣＰＵは、処理性能にも限界があることから、データ転送速度の低下の問題が無視できなくなってくる。
【００２５】
そこで、本実施の形態としては、例えば上記低消費電力仕様の組み込み機器用のような処理性能に限界のあるＣＰＵを採用した場合においても、充分なデータ転送速度の高速化が図られるように構成することとした。以降、この点について説明を行っていく。
なお、以降においては、本実施の形態のビデオカメラ装置１により、ＯＨＣＩ準拠のＩＥＥＥ１３９４のデータインターフェース環境で、ＳＢＰ−２により通信を実行する場合に対応する構成を例に挙げて述べていく。
【００２６】
図４は、本実施の形態において備えられるＯＨＣＩ部１３の内部構成例を示している。なお、この図において図３と同一部分には同一符号を付して説明を省略する。
この図に示すようにして、本実施の形態におけるＯＨＣＩ部１３は、ＰＣＩバスインターフェースブロック２２とＩＥＥＥ１３９４リンク層・物理層ブロック（IEEE1394 Link and PHY）２３との間のＯＨＣＩバスに対応する系において、図３に示したＯＨＣＩユニット２１（第１の伝送部）に加えて、ＳＢＰ２ユニット３０（第２の伝送部）を設けることとしている。
【００２７】
ＳＢＰ２ユニット３０は、ＳＢＰ２に対応する所定の機能をハードウェアにより実現するようにして構成される部位である。
ＳＢＰ２では、ＩＥＥＥ１３９４でいうノード（Node）について、命令を発行する側のNodeをInitiatorといい、この命令に応答するNodeをTargetとして規定している。また、ＳＢＰ２では、TargetにおけるAgent（エージェント）機能として、Command Block Agent、Management Agentが規定される。本実施の形態のＳＢＰ２ユニット３０では、これらのAgent機能うち、Command Block Agentに対応する機能を与えることとしている。
なお、ＳＢＰ２ユニット３０として、Management Agentにも対応した構成を与えることは可能であるが、この場合には、ハードウェア構成が複雑になり、設計・製造等も難しくなってくる。そこで、本実施の形態のＳＢＰ２ユニット３０としては、ハードウェア構成の複雑さと、後述するデータ転送速度の向上効果の有効性とのバランスを考慮して、Command Block Agentのみに対応したハードウェアの構成としている。
【００２８】
図示するようにして、ＳＢＰ２ユニット３０は、Command Block Agent Unit３１、AT FAM(File Access Mode) DMAブロック３２、Header・Footer Add Block３３、AT FAM FIFOブロック３４、AR_FAM DMAブロック３５、Header・Footer Remove Block３６、AR_FAM FIFOブロック３７を備えて構成される。
【００２９】
Command Block Agent Unit３１は、ＳＢＰ−２対応ブロック３０の中核となる部位であって、ハードウェアにより、Command Block Agentに対応する処理を実行するようにして構成される。例えばCommand Block Agent Unit３１は、Command Block Agentに対応するために、Fetch Agent State Machine 及びPage Table FIFOに対応するハードウェア構成を備える。
【００３０】
AT FAM DMAブロック３２は、DMAコントローラとして、アシンクロナス転送によりファイルアクセスモードで送信すべきCommand Block Agent対応のデータ(Readデータなど)を、ＰＣＩバス側からＤＭＡ(Direct Memory Access)で読み込み、Header・Footer Add Block３３に渡す。
Header・Footer Add Block３３は、入力したデータに対してデータに対してヘッダとフッタを付加して、ＩＥＥＥ１３９４により規定されるパケットの構造とし、AT FAM FIFOブロック３４に出力する。なお、フッタには、エラーチェックコードであるＣＲＣが含まれるが、このＣＲＣも、例えばHeader・Footer Add Block３３にて生成する。
AT FAM FIFOブロック３４は、入力されるデータをシリアルデータとしてＩＥＥＥ１３９４リンク層・物理層ブロック２３に渡して、ＩＥＥＥ１３９４バス３上を伝送させる。
【００３１】
また、AR_FAM FIFOブロック３７は、ＩＥＥＥ１３９４バス３からＩＥＥＥ１３９４リンク層・物理層ブロック２３を介して得られるCommand Block Agent対応のパケット（Writeデータ、Command Block ORB、Page Tableなど）を入力し、Header・Footer Remove Block３６に渡す。
Header・Footer Remove Block３６は、渡されたパケットからヘッダ、フッタを取り除いてデータ部分を取り出し、AR_FAM DMAブロック３５に渡す。
AR_FAM DMAブロック３５は、渡されたデータをＤＭＡ転送によりＰＣＩバスインターフェースブロック２２に渡す。これにより、例えばＰＣＩバス１４と接続されているシステムメモリ(メモリ１２)などに対して、ＣＰＵ１１を介在することなくＤＭＡによりデータの書き込みが行われる。
【００３２】
ここまでの説明から分かるように、本実施の形態では、ハードウェア（Header・Footer Add Block３３、Header・Footer Remove Block３６）によりＩＥＥＥ１３９４パケットのヘッダ、フッタの付加、除去の処理を行える。例えば、ＯＨＣＩユニット２１を使用する場合には、このヘッダ、フッタの付加、除去の処理も、ソフトウェアの処理が介在する。つまり、このようにして、ハードウェアによりヘッダ、フッタについての処理が行われることで、ソフトウェアによる割り込み処理に要する時間が短縮され、その分、データ転送速度の向上に寄与することになる。
【００３３】
ここで、本実施の形態の場合、ＳＢＰ２ユニット３０は、先に述べたように、Command Block Agentのみに対応したハードウェア構成を有し、例えばManagement Agentなどの他のAgentには対応させないこととしている。このために、ＳＢＰ２ユニット３０を備えるＯＨＣＩ部１３としては、Command Block Agentに対応するパケットについてはＳＢＰ２ユニット３０に渡し、これ以外のManagement Agentなどに対応するパケットについては、適正に、ＳＢＰ２ユニット３０が受け付けることなく、ＯＨＣＩユニット２１に渡して処理してもらえるようにする仕組みが必要になる。本実施の形態としては、この仕組みを次のようにして与える。
【００３４】
先ず、ＳＢＰ２において規定されている、Command Block Agentに対応するCommand Block Agent Register(対象エージェント機能対応レジスタ)は、本実施の形態では、Command Block Agent Unit３１が処理するものとする。
Command Block Agent Registerを図５に示す。Command Block Agent Registerとしては、AGENT_STATE , AGENT_RESET , ORB_POINTER , DOORBELL , UNSOLICITED_STATUS_ENABLEが規定されている。また、各Registerには、オフセットアドレス(Relative offset)が規定されており、オフセットアドレスは、それぞれ、AGENT_STATEが00h、AGENT_RESETが04h、ORB_POINTERが08h、DOORBELLが10h、UNSOLICITED_STATUS_ENABLEが14hとなっている。
【００３５】
Command Block Agent Registerの実際のアドレスは、ＳＢＰ２により規定されるLogin Responseにおけるcommand block agent(Fetch Agent CSR Base Address)に対して、上記図５に示される対応のオフセットアドレスを加算したものとなる。つまり、例えばDOORBELLであれば、Login Responseにおけるcommand block agentに格納される値に対して、10hを加算して得られる値が、当該DOORBELLのアドレスとなる。
ソフトウェアによりコントロールされるManagement Agentは、Fetch Agent CSR base address registerをはじめとする所要のregisterをセットしてstart bit（login flag）をセットする。ＳＢＰ２ユニット３０のCommand Block Agent Unit３１は、このstart bitがセットされることに応じて受信可能な状態となるようにする。
この後において、Command Block Agent Unit３１は、例えばパケット（quadlet write）の受信に応じて、下記の条件が満たされているか否かを判定する。
（source ID==Initiator）&&(Fetch Agent CSR base address＋00h〜1Ch)
つまり、受信パケット（quadlet write）がInitiatorであるnodeからのものであり、それがCommand Block Agent Registerに対応するものであるか、あるいはCommand Block Agent Register以外のRegisterに対応するものであるかどうかをみる。
【００３６】
上記の条件判定のためには、Fetch Agent CSR base address registerを参照する。本実施の形態に対応して規定したFetch Agent CSR base address register(s)を図６に示す。
CSR base address registerは、図６（ａ）に示すFetch Agent CSR base address Hi registerと、図６（ｂ）に示すFetch Agent CSR base address Lo registerとから成る。
図６（ａ）のFetch Agent CSR base address Hi registerは、３２ビットであり、上位１６ビットは、Node IDの領域とされて、現在Login中のInitiatorのNode IDを示す。下位１６ビットのoffset_hiは、４８ビットから成るFetch Agent CSR base addressの上位１６ビットとなる。図６（ｂ）のFetch Agent CSR base address Lo registerの３２ビットは、offset_loとされて、Fetch Agent CSR base addressの下位３２ビットとなる。つまり、Fetch Agent CSR base address Hi register のoffset_hiとFetch Agent CSR base address Lo registerのoffset_loとにより、Fetch Agent CSR base addressが表される。
【００３７】
上記の条件判定にあたっては、例えば先ず、Fetch Agent CSR base address Hi registerの上位１６ビットが示すNode IDと、source IDとを比較して、一致しているか否かについて判定する。
ここで、Node IDとsource IDが一致していなければ、この段階で条件を満たさないことになるので、受信パケットは、例えばManagement Agentに対応するものであるとして、ＯＨＣＩユニット２１に渡す。
これに対して、Node IDとsource IDが一致しているのであれば、次に、受信パケット（quadlet write）が示すアドレスが、Fetch Agent CSR base address＋00h〜1Chの範囲内であるかについても判定する。このときにも、Fetch Agent CSR base address registerを参照して、Fetch Agent CSR base addressを取得し、これに00h、1Chを加算することで、Fetch Agent CSR base address＋00h〜1Chとしての実際のアドレスを特定できる。そして、受信パケット（quadlet write）が示すアドレスが、Fetch Agent CSR base address＋00h〜1Chの範囲内であるとの判定結果が得られると、ここではじめて条件を満たすことになるので、Command Block Agent Unit３１は、受信パケットを受け付けて処理を実行する。これに対して、受信パケット（quadlet write）が示すアドレスが、Fetch Agent CSR base address＋00h〜1Chの範囲外であるとの判定結果が得られたとすると、条件を満たさなくなるので、この場合にも、受信パケットをＯＨＣＩユニット２１に渡す。
本実施の形態では、このようにしてパケットの振り分けを行う。
【００３８】
そして、上記のようにしてＯＨＣＩ部１３においてＳＢＰ２ユニット３０を設けることにより、ＳＢＰ２におけるRead、Writeなどに応じたデータ転送を実行したときの処理速度は、以降において述べるようにして、大幅に向上されるものである。
【００３９】
ここで、図７、図８のシーケンス図は、上記図４に示した実施の形態のＯＨＣＩ部１３、即ちＳＢＰ対応ブロック３０を備えるＯＨＣＩ部１３を実装した場合の、ＰＣ(編集装置２)とビデオカメラ装置１との間でのReadコマンド(File read Command:ファイル読み出しコマンド)に応じたトランザクションを示している。
これに対して図９、図１０は、先に図３に示した、ＳＢＰ２ユニット３０が設けられていない一般的なＯＨＣＩ部１３を実装した例（一般例）の場合の、ＰＣとビデオカメラ装置１との間でのFile read Commandに応じたトランザクションを示している。
なお、File read Commandは、InitiatorがTargetからデータ読出を行うためのコマンドであり、従って、ファイルのデータは、TargetからInitiatorに転送するものとなる。
【００４０】
先ず、実施の形態に対応する図７、図８においては、トランザクションを成す各処理を実行する部位として、PC Initiator、OHCI Unit、CBA Unit、Interrupt Handler、OHCI Task、Transaction Task、CBA Task、other taskが示されている。
ＳＢＰ２では、命令を発行するInitiatorと、この命令に応答するTargetとが規定されるが、この場合には、PC(編集装置２)がInitiatorとなり、ビデオカメラ装置１がTargetとなる。
PC Initiatorは、InitiatorであるＰＣを表す。なお、ここでのPC Initiatorは、ＯＨＣＩに準拠したＩＥＥＥ１３９４対応の通信ボードなどのハードウェアが相当する。
【００４１】
OHCI Unitは、ＯＨＣＩ部１３におけるＯＨＣＩユニット２１に相当する部位であり、ハードウェア層での処理となる。従って、上記PC InitiatorとOHCI Unitとの間でのデータ伝送（転送）はハードウェア同士でのやりとりになる。
【００４２】
CBA Unitは、Command Block Agent(CBA) Unit３１に対応するが、ここでは、ＯＨＣＩ部１３のＳＢＰ２ユニット２１における相当する部位として扱ってよい。ＳＢＰ２ユニット２１もハードウェア（H/W）により構成されるので、PC InitiatorとCBA Unitとの間でのデータ伝送もハードウェア間でのやりとりになる。
【００４３】
Interrupt Handler、OHCI Task、Transaction Task、CBA Task、及びother taskは、それぞれＳＢＰ２対応のドライバが実行するタスクとなる。other taskは、Interrupt Handler、OHCI Task、Transaction Task、CBA Task以外の所定のタスクとなる。即ち、Interrupt Handler、OHCI Task、Transaction Task、CBA Task、及びother taskが、ＳＢＰ２に対応するソフトウェア処理(タスク)となる。なお、Interrupt Handler、OHCI Task、Transaction Task、CBA Task、及びother taskについてはOHCIソフトウェア（OHCI S/W）ともいう。
【００４４】
図７、図８においては、File Read Commandに対応するトランザクションを、シーケンスseq1〜seq4により順次区分して示している。
先ず、シーケンスseq1は、PC InitiatorがTargetに対してDoorBellを送信したことに応答して、Target側にてＯＲＢ(Operation Request Block)を取得してレジスタに保持するまでの処理となる。
シーケンスseq1では、先ず、PC InitiatorがDoorBellを送信する。ＯＨＣＩ部１３においては、ＯＨＣＩユニット２１（OHCI Unit）とＳＢＰ２ユニット３０（CBA Unit）とが備えられているが、このDoorBellについては、ＳＢＰ２ユニット３０（CBA Unit）が受け付ける。以降のPC Initiator側との送受信も、ＳＢＰ２ユニット３０（CBA Unit）側が実行する。
【００４５】
CBA Unitは、DoorBellを受け取ると、ソフトウェアの介在無しに、直ちにDoorBellに対するResponseをPC Initiatorに返す。
次に、CBA Unitは、ORB Pointer Read Request（ORB Ptr Read Req）を送信する。PC Initiatorからは、ORB Pointer Read Requestに対するレスポンスとして、ORB Pointer Read Responseが返される。CBA Unitは、これを受信する。このORB Pointer Read Responseには、ＯＲＢをフェッチ（Fetch）しているPC Initiator側のMemory Addressが示されている。
そこで、CBA Unitは、ORB Read Requestを送信する。
PC Initiatorからは、ORB Read Requestに対するレスポンス（ORB Read Response（ORB Read Resp））として、File Read CommandとしてのCommand Block ORBを返送する。
【００４６】
図２５は、File Read CommandとしてのCommand Block ORBの構造を示している。
このCommand Block ORBのcdb[0]には、図示するようにして4’hC3が格納されているが、これにより、現Command Block ORB がFile Read Commandであることを示す。
【００４７】
ここで、上記Command Block ORBにおけるp(page_table_present_bit:1bit)の領域には1を格納しているものとする。p=1であるときには、現Command Block ORBにおけるdata_descriptorにより示されるアドレスにPage Tableが保持されていることを示す。
【００４８】
シーケンスseq2は、上記Command Block ORBの受信に応じて、TargetがPC Initiator側からPage Tableを取得するための処理となる。
ここでは先ず、CBA Unitが、上記data_descriptorにより示されるアドレスに対してPage Table Requestを送信する。
これに応答して、PC InitiatorからCBA Unitに対しては、Page Table Responseとして、Page Table ListのCommand Block ORB(ORB_page_table)を返送する。
CBA Unitは、受信したPage Table Listを保持する。これとともに、コマンドに応じた値をセットしたうえで、例えばＤＭＡ転送を実行してメモリ１２(又はバッファメモリ１５)に書き込んで保持させる。
図２６は、ORB_page_tableの構造を示している。この構造において、少なくとも、図において示すCommand ORBとPage Table Listの部分がメモリ１２(又はバッファメモリ１５)において保持される。これにより、Targetのソフトウェアが、このCommand ORBとPage Table Listを直接参照させるようにできる。例えばこれまでにおいて、OHCIソフトウェアがCommand ORB、Page Table Listを参照しようとするときにはＩＥＥＥ１３９４のアシンクロナスパケットをチェックして解釈する必要があった。これに対して、本実施の形態であれば、OHCIソフトウェアは、メモリ１２において指定されたCommand ORB、Page Table Listのためのメモリ領域にアクセスすることで、例えばどのようなコマンドがリクエストされているのかを認識でき、Page Table Listの内容を認識できる。
【００４９】
この後、CBA UnitはOHCIソフトウェアのInterrupt Handlerに対してInterrupt(割込要求)を出力（assert）する。
この割り込み要求に応答して、OHCIソフトウェアでは、図示するようにして処理を実行する。OHCIソフトウェアは、Command ORBとPage Table Listを読み出し、エラーチェックを実行する。また、送信用descriptorと送信データが格納されるTarget側のメモリアドレスをセットする。このメモリアドレスのセットにはOutput More descriptorを利用する。この際、Output More descriptorによっては、メモリアドレスと転送データサイズが指定されるようにする。本実施の形態では、送信先アドレス、packet lengthは、CBA Unitが指定するようにされており、OHCIソフトウェアが指定する必要はない。
そして、run Bitをセットする。なお、このときに用いるContextはSBP2 transmit Contextとなる。
【００５０】
シーケンスseq3(図７−図８)は、ファイルのデータ(Readデータ：読み出しデータ)を転送するための処理となる。
Readデータは、上記シーケンスseq2でのOHCIソフトウェアの処理によって、ＩＥＥＥ１３９４パケットのヘッダ、フッタが付加されていない状態で、バッファメモリ１５に書き込まれる。
CBA Unitは、バッファメモリ１５から指定されたサイズ分のReadデータを読み出して、Data Write RequestとしてPC Initiatorに送信する。この際には、readデータは、SBP2ユニット３０におけるAT FAM(File Access Mode) DMAブロック３２、Header・Footer Add Block３３、AT FAM FIFOブロック３４を通過することで、ＩＥＥＥ１３９４パケットのヘッダ・フッタが付加されて、ＩＥＥＥ１３９４バス３経由でPC Initiatorに対して送信されることになる。
PC Initiatorは、Data Write Requestを受信するとData Write Response(ACK : Acknowledge)を返送してくる。CBA Unitは、このData Write Responseを受信したことに応じて、次のReadデータ（Data Write Request）の送信を行う。これを必要なReadデータの転送量に応じて繰り返す。
【００５１】
CBA Unitは、最後のReadデータ（Data Write Request）の送信と，これに応答したData Write Responseの受信を完了すると、File Read Commandに応じたデータ転送の正常終了を、OHCIソフトウェアに通知する。このために、CBA Unitは、Desc(Descriptor)Completeによる割り込み要求をInterrupt Handlerに対して行う。これに応じてOHCIソフトウェアは、図に示すタスク間での処理を実行する。これにより、メモリにおけるReadデータの開放が行われる。
【００５２】
また、シーケンスseq4として、CBA Unitは、Desc(Descriptor)Completeによる割り込みの後、PC Initiatorに対してステイタス（status block notice）を返す。次に、CBA Unitは、PC Initiatorからのstatus block noticeに応答したACKを受信すると、ORB Completeとしての割り込み要求をInterrupt Handlerに出力する。これを受けて、OHCIソフトウェアにおける所定のタスクは、ORB Completeに対応する処理を図のようにして実行する。これにより、File Read Commandに応じたトランザクションが完了する。
【００５３】
次に、上記図７、図８に示した本実施の形態との比較として、図９、図１０により、図３のＯＨＣＩ部１３の構成に対応した一般例の場合における、同じFile Read Commandに対応するトランザクションについて説明する。確認のために、図３に示される、一般例としてのＯＨＣＩ部１３は、SBP2ユニット３０が省略されたOHCIユニット２１のみを備える構成となる。実施の形態に対応する図４の構成では、ＯＨＣＩ部１３において、ＯＨＣＩユニット２１とＳＢＰ2ユニット３０が備えられていたことに応じて、図７、図８においては、Target側のハードウェアとして、OHCI UnitとCBA Unitが示されていた。これに対して、図３の一般的構成では、上記もしているように、SBP2ユニット３０が省略されてOHCIユニット２１のみを備えるので、Target側のハードウェアとしてはOHCI Unitのみとなっている。
【００５４】
図９、図１０においても、File Read Commandに対応するトランザクションを、シーケンスseq1〜seq4により順次区分して示している。
図７、図８と同様に、シーケンスseq1は、PC InitiatorがTargetに対してDoorBellを送信したことに応答して、Target側にてＯＲＢ(Operation Request Block)を取得してレジスタに保持するための処理である。
図９のシーケンスseq1においても、先ず、PC InitiatorがDoorBellを送信する。
OHCI Unitは、DoorBellを受け取ったことに応じて、Interrupt Handlerに対して割り込み要求（Interrupt）を出力する。これに応答して、OHCIソフトウェアは、図示するようにして処理を実行する。この過程において、Transaction TaskからのWrite Responseに応じて、OHCI Unitは、DoorBellに応答したレスポンス(Write Response)をPC Initiatorに返す。
また、CBA Taskは、TR_DATA.indicateが渡されたことに応じて、ORB Pointer RequestをOHCI Unitに渡す。これを受けて、OHCI Unitは、PC Initiatorに対してORB Pointer Readを送信する。PC Initiatorは、ORB Pointer Read Requestに対するレスポンスとして、ORB Pointer Read Responseを返送してくる。OHCI Unitは、これを受信したことに応じて、Interrupt Handlerに対してInterruptを出力する。OHCIソフトウェアは、このInterruptに応答して、図示するようにしてORB Pointer Read Responseの受信に対応する処理を実行し、CBA TaskにてTR_DATA.confirmationを受け取る段階にまで至ると、次にCBA TaskからOHCI Unitに対してORB Read Requestを出力する。OHCI Unitは、これに応答して、PC Initiatorに対してORB Read Requestを送信する。
【００５５】
PC Initiatorからは、ORB Read Requestに対するレスポンス（ORB Read Response（ORB Read Resp））として、File Read CommandとしてのCommand Block ORBを返送する。File Read CommandとしてのCommand Block ORBの構造は、図２５にて先に説明したとおりである。
ここでも、上記Command Block ORBにおけるp(page_table_present_bit:1bit)の領域には1を格納しており、これにより、現Command Block ORBにおけるdata_descriptorにより示されるアドレスにPage Tableが保持されていることを示しているものとする。
【００５６】
Command Block ORBを受け取ったOHCI Unitは、ここでもInterrupt Handlerに対してInterruptを出力する。これに応じてOHCIソフトウェアはCommand Block ORBの受信に対応した処理を実行し、CBA TaskにてTR_DATA.confirmationを受け取る段階にまで至ると、次にCBA TaskからOHCI Unitに対してPage Table Read Requestを送信する。
【００５７】
シーケンスseq2（TargetがPC Initiator側からPage Tableを取得するための処理）において、先ずOHCI Unitは、CBA TaskからのPage Table Read Requestの受信に応答して、PC Initiatorに対してPage Table Read Requestを送信する。
これに応答して、PC InitiatorからOHCI Unitに対しては、Page Table Responseとして、Page Table ListのCommand Block ORB(ORB_page_table)を返送する。
OHCI Unitは、Command Block ORB（Page Table List）の受信に応じてInterruptを出力して、OHCIソフトウェアにより、Command Block ORB（Page Table List）の受信に応じた処理を実行させる。OHCIソフトウェアは、Command ORBとPage Table Listを読み出し、エラーチェックを実行する。また、送信用descriptorと送信データが格納されるTarget側のメモリアドレスをセットする。次に、CBA Taskは、OHCI Unitに対してrun Bitをセットする。
なお、ORB_page_tableの構造は、図２６により示したとおりである。
【００５８】
シーケンスseq3(図９−図１０)は、ファイルのデータ(Readデータ)を転送するための処理となる。
Readデータは、上記シーケンスseq2でのOHCIソフトウェアの処理によって、ＩＥＥＥ１３９４パケットのヘッダ、フッタを付加した状態でバッファメモリ１５に書き込まれる。
OHCI Unitは、バッファメモリ１５からReadデータを読み出して、Data Write RequestとしてPC Initiatorに送信する。PC Initiatorは、Data Write Requestを受信するとData Write Response(ACK : Acknowledge)を返送してくる。OHCI Unitは、このData Write Responseを受信したことに応じて、次のReadデータ（Data Write Request）の送信を行う。これを必要なReadデータの転送量に応じて繰り返す。
【００５９】
OHCI Unitは、最後のReadデータ（Data Write Request）の送信と，これに応答したData Write Responseの受信を完了すると、Interruptによる割り込み要求をInterrupt Handlerに対して行って、File Read Commandに応じたデータ転送の正常終了を、OHCIソフトウェアに通知する。これに応じてOHCIソフトウェアは、図に示すタスク間での処理（RQPkt (DataQueue)、Req Receive (Mailbox)、TR_DATA.indicate (EventFlag)の受け渡し）を実行する。
【００６０】
シーケンスseq4は、先ず、CBA TaskがTR_DATA.indicate (EventFlag)を受けたことに応じて、Status Block Noticeのパケットを生成し、OHCI Unitに対して渡す。OHCI Unitは、このStatus Block NoticeのパケットをPC Initiatorに対して送信する。
OHCI Unitは、PC Initiatorからのstatus block noticeに応答したACKを受信すると、ReqTxCompleteとしてのInterruptをInterrupt Handlerに対して出力する。これを受けて、OHCIソフトウェアにおける所定のタスクは、ORB Completeに対応する処理を図のようにして実行し、CBA Taskからother Taskに対してRead Complete Noticeが出力されることにより、File Read Commandに対応するトランザクションが終了する。
【００６１】
ここで、図７、図８が対応する本実施の形態と、図９、図１０が対応する一般例とを比較してみる。
先ず、一般例では、図９のシーケンスseq1におけるDoorBellの受信に応答したPC Initiatorへのレスポンスの送信から、これに続くシーケンスseq2におけるPC InitiatorへのPage Table Read Requestの送信までの処理において、PC Initiatorから送信されるDoorBell、ORB Pointer Read Response、ORB Read Responseを受信するごとに、OHCIソフトウェアの処理が介在する。
これに対して、図７、図８では、同じシーケンスseq1におけるDoorBellの受信に応答したPC Initiatorへのレスポンスの送信から、これに続くシーケンスseq2におけるPC InitiatorへのPage Table Read Requestの送信までの処理は、OHCIソフトウェアの処理が介在することなく、SBP2ユニット３０（CBA Unit）によりハードウェアの処理として実行されるようになっている（ハードウェア間データ伝送）。
【００６２】
また、シーケンスseq4において、図１０では、最後のData Write Responseの受信に応答して、OHCI Unitは、Interruptを出力してOHCIソフトウェアに処理を実行させ、CBA Taskにて生成されて出力されるStatus Block Notice(パケット)を受信してからでなければPC Initiatorに対してStatus Block Noticeを送信できない。これに対して、本実施の形態では、CBA Unitは、図８に示したように、最後のData Write Responseの受信に応答してInterruptを出力するものの、PC Initiatorに対するStatus Block Noticeの送信は、OHCIソフトウェアからのパケットの受信を待つことなく、Data Write Responseの受信後のタイミングで自己が実行できる（ハードウェア間データ伝送）。
【００６３】
このようにして、本実施の形態では、これまでと比較すると、File Read Commandに応じたトランザクションについて、ソフトウェア層での処理が大幅に削減される。これにより、本実施の形態では、Readデータの転送に要する時間をこれまでよりも大幅に短縮することができ、結果として、データ転送速度も大幅に高速化が図られることとなった。
この効果は、これまでの説明から理解されるように、OHCI部１３において、OHCIユニット２０に加えてSBP2ユニット３０を備えたことにより得られる。即ち、上記した特定のシーケンスについては、ハードウェアであるSBP2ユニット３０のみによってInitiator側との通信が行えるようにしたものである。
例えば、図７、図８のシーケンスseq1に対応したOHCIソフトウェアの手順はSBP2において典型的であり、決まり切ったものとなっている。このために、ソフトウェア層の処理を省略しても、Initiatorとの間で正常にコマンドのやりとりすることが保証さえされれば、以降のPage Table Listの取得、及びReadデータの転送に支障はない。本実施の形態ではこのことに着目して、上記した特定の手順などについて、SBP2ユニット３０(CBA Unit)により実行できるように構成したものである。
【００６４】
本実施の形態では、SBP2による通信時においてソフトウェアによる処理をSBP2ユニット３０(CBA Unit)によるハードウェアの処理に置き換える構成を、上記File Read Commandに対応するトランザクションだけではなく、File Write Command（ファイル書き込みコマンド）に対応するトランザクションについても与えることとしている。そこで、続いては、図１１、図１２と、図１３、図１４とを参照して、File Write Commandに対応する実施の形態、一般例の各トランザクションについて説明する。
【００６５】
先ず、実施の形態に対応する図１１、図１２から説明する。
この図においても、File Write Commandに対応するトランザクションは、シーケンスseq1〜seq4により区分して示されている。
【００６６】
先ず、シーケンスseq１については、そのシーケンスの流れは、図７（［実施の形態：File Read Command対応のトランザクション］）と同様となっている。
ただし、PC InitiatorからのORB Read Requestに対するレスポンス（ORB Read Response）としてのCommand Block ORBは、この場合、File Write Commandとしてのものとなる。
このFile Write CommandとしてのCommand Block ORBの構造は、図２７に示すものとなる。その構造自体は、図２５に示したFile Read CommandとしてのCommand Block ORBと同じであるが、cdb[0]において図示するようにして4’hC4を格納しており、これにより、現Command Block ORB がFile Write Commandであることを示す。
また、この場合にも、Command Block ORBにおけるp(page_table_present_bit:1bit)の領域には1を格納しているものとする。
【００６７】
また、続くシーケンスseq2も、そのシーケンスの流れは図７と同様であり、TargetがPC Initiator側からPage Tableを取得するための処理となる。
この場合においても、CBA Unitは、受信したPage Table List(図２６)を例えばバッファメモリ１５に保持するとともに、ＤＭＡ転送によりメモリ１２に書き込んで保持させる。これにより、図７、図８に示した場合と同様に、OHCIソフトウェアは、メモリ１２において指定されたCommand ORB、Page Table Listのためのメモリ領域にアクセスしさえすれば、これらのCommand ORB、Page Table Listの内容を認識できることになる。
また、シーケンスseq2におけるOHCIソフトウェアの処理としては、Command ORBとPage Table Listを読み出し、エラーチェックを実行する。また、Input More descriptorを利用してメモリアドレス(転送先のバッファのアドレス)と転送データサイズ(受信データサイズ)をセットする。そして、run Bitをセットする。なお、このときに用いるContextはSBP2 receive Contextとなる。
【００６８】
上記したFile Write Commandのシーケンスseq１，seq2によっても、CBA Unitが、DoorBellを受信してからPC Initiatorに対してPage table Requestをするまでの処理は、OHCIソフトウェアの処理は介在せずに、ハードウェアのみによって実行されるようになっていることが分かる。
【００６９】
シーケンスseq3（図１１、図１２）は、PC Initiatorから転送されるファイルのデータ(Writeデータ：書き込みデータ)をTarget側にて受け取るための処理となる。
シーケンスseq3では、先ず、CBA UnitがPC Initiatorに対してData Read Requestを出力する。これに応答して、PC InitiatorからCBA Unitに対しては、Data Read Responseとして、先に指定された受信データサイズに応じたサイズのWriteデータをＩＥＥＥ１３９４パケット形式で送信してくる。
図４のSBP2ユニット３０において、CBA Unitは、上記のようにして送信されてくるＩＥＥＥ１３９４パケット形式のWriteデータを、ＩＥＥＥ１３９４リンク層・物理層ブロック２３から受け取ると、AR_FAM FIFOブロック３７、Header・Footer Remove Block３６、AR_FAM DMAブロック３５の順で通過させる。これにより、Writeデータは、Header・Footer Remove Block３６によるハードウェア処理によってＩＥＥＥ１３９４パケットのヘッダ、フッタが取り除かれる。そして、このようにしてヘッダ・フッタが除去されたデータを、例えばバッファメモリ１５に転送する。このシーケンスを、必要なWriteデータの転送量に応じて繰り返す。
CBA Unitは、最後のData Read requestに応じたWriteデータ受信が正常に終了したとされると、DescCompleteによる割り込み要求をInterrupt Handlerに対して行うことで、このことをOHCIソフトウェアに通知する。これに応じてOHCIソフトウェアは、図７、図８のトランザクションの場合と同様にして、タスク間での処理を実行してデータをコピーする。
なお、図１１、図１２のシーケンスseq3においては、Data Read ResponseとしてWriteデータを受け取るその都度に応じたOHCIソフトウェアの処理が実行されておらず、ハードウェア間データ伝送となっていることに留意されたい。
【００７０】
シーケンスseq4におけるシーケンスの手順は図７、図８により示したトランザクションの場合に準ずる。
つまり、CBA Unitは、DescComplete による割り込み要求を行った後、OHCIソフトウェアから応答を待つことなく、PC Initiatorに対して、ステイタス（status block notice）を自己で生成して送信する。つぎにPC Initiatorから送信されたACKを受信すると、ORB Completeとしての割り込み要求をInterrupt Handlerに出力し、OHCIソフトウェアにおける所定のタスクにより、ORB Completeに対応する図の処理を実行させる。
ここまでで、実施の形態としてのFile Write Commandに対応するトランザクションが終了する。
【００７１】
次に、図１３、図１４により、File Write Commandに対応する一般例のトランザクションについて説明する。この図においても、File Read Commandに対応するトランザクションを、シーケンスseq1〜seq4により順次区分して示す。
【００７２】
図１３のシーケンスseq1においても、先ず、PC InitiatorがDoorBellを送信する。これに応じて、TargetとしてのOHCI Unit及びOHCIタスクは、図９の場合と同様のシーケンスを行い、最終的にCBA TaskからOHCI Unitに対してPage Table Read Requestを送信するまでの処理を実行する。ただし、PC InitiatorからのORB Read Requestに対するレスポンス（ORB Read Response）としてのCommand Block ORBは、図１１の場合と同様に、File Write Command（図２７）としてのものとなる。
また、この場合にも、Command Block ORBにおけるp(page_table_present_bit:1bit)の領域には1を格納しているものとする。
【００７３】
続くシーケンスseq2としても、図９の場合と同様の手順を実行して、Targetは、PC Initiator側からPage Tableを取得する。また、CBA TaskがOHCI Unitに対してrun Bitをセットする。
【００７４】
シーケンスseq3(図１３、図１４)は、PC Initiatorから転送されるファイルのデータ(Writeデータ)をTarget側にて受け取るための処理となる。
この場合にも、シーケンスseq3では、先ず、OHCI UnitがPC Initiatorに対してData Read Requestを出力する。これに応答して、PC InitiatorからOHCI Unitに対しては、Data Read Responseとして、先に指定された受信データサイズに応じたサイズのWriteデータをＩＥＥＥ１３９４パケット形式で送信してくる。
OHCI Unitは、WriteデータであるData Read Responseを受け取ることに応じて、Interrupt Handlerに対してInterruptを出力して、WriteデータのパケットをOHCIソフトウェアに渡す。なお、このときには、Writeデータのパケットは、ヘッダ・フッタを有した構造となっている。
OHCIソフトウェアの各Taskにより、図示するようにして、RSPkt(DataQueue)、Resp Receive (Mailbox)、TR_DATA. confirmation (EventFlag)、Notify(Mailbox)が実行されることで、パケットからヘッダ・フッタが取り除かれて、Writeデータの実体が取り出され、メモリにコピーされる。そして、CBA Taskは、Callback（EventFlag）を受けて、OHCI Unitに対してStatus Bock Noticeを出力することで、runビットをセットする（set AT Request Data Transmit ContextControl.run）
OHCI Unitは、runビットがセットされたこと（Status Bock Noticeを受けたこと）に応じて、PC Initiatorに対してData Read Requestを送信し、PC InitiatorからのData Read Response(Writeデータ)を受ける。このようにして、Targetは、シーケンスseq3として、Data Read Requestの送信と、Data Read Responseの受信に応答したOHCIソフトウェアによるパケット処理からなるトランザクションを、Writeデータの転送量に応じて繰り返す。
【００７５】
そして、最後のData Read Requestの送信と、これに応答したData Read Responseの受信に応じたOHCIソフトウェアによる上記のトランザクションが完了すると、シーケンスseq4としての処理に移る。
シーケンスseq4では、先ず、Callback (EventFlag)を受けたCBA Taskが、Status Block Noticeのパケットを生成してOHCI Unitに対して渡す。OHCI UnitはPC Initiatorに対して、このStatus Block Noticeパケットを送信する。次に、Status Block Noticeに応答したACKを受信すると、OHCIソフトウェアにおける所定のタスクにより、ORB Completeに対応する処理を図のようにして実行する。これで一般例でのFile Write Commandに対応するトランザクションが終了する。
【００７６】
上記図１１、図１２と、図１３、図１４とを比較して分かるように、File Write Commandに対応するトランザクションにおいても、File Read Commandの場合と同様に、実施の形態では、シーケンスseq1におけるDoorBellの受信に応答したPC Initiatorへのレスポンスの送信から、これに続くシーケンスseq2におけるPC InitiatorへのPage Table Read Requestの送信までの処理において、OHCIソフトウェアの処理が介在しないようにされている。
また、シーケンスseq4においても、実施の形態では、PC Initiatorに対するStatus Block Noticeの送信について、CBA UnitがOHCIソフトウェアからのパケットの受信を待つことなく、Data Write Responseの受信後のタイミングで自己が実行できるようになっている。
【００７７】
さらに、File Write Commandに対応するトランザクションでは、一般例では、図１３、図１４に示したように、シーケンスseq3でのWriteデータ転送に際して、WriteデータのData Read Responseが返されてくる都度、OHCIソフトウェアに割り込み処理を実行させて、ヘッダ・フッタ除去などのパケット処理と、データコピーを実行させる必要があり、Data Read RequestのPC Initiatorに対する送信は、CBA Taskからの応答を待つ必要がある。
これに対して、本実施の形態では、図１１、図１２のシーケンスseq3として示すように、PC Initiator に対するData Read Requestの送信とData Read Responseの受信からなるトランザクションは、OHCIソフトウェアが介在することなく、ハードウェアで行っている（ハードウェア間データ伝送）。
【００７８】
このようにして、本実施の形態は、File Write Commandに対応するトランザクションにおいても、特定のシーケンスについては、ソフトウェアが介在することなく、CBA Unit、即ちハードウェアにより独立して実行できるようになっているものであり、これにより、データ転送速度の高速化が図られるものである。
【００７９】
ところで、これまでの説明から理解されるように、本実施の形態では、SBP2ユニット３０（CBA Unit）によりInitiatorから送信されてくるCommand Block ORB、Page Table (Page Table List)を受け取ることができるようにされている。
ここで、Page Tableの総データサイズは、Initiator側でのデータのData Bufferの状態（離散数）に応じて異なってくる。このために、Page Tableの総データサイズが、SBP2 ORB_Page Table receive DMAのためのバッファサイズと、Command Block Agent Unit３１が備えるとされるPage Table FIFOのサイズを越える可能性を想定しておく必要がある。
【００８０】
そこで、本実施の形態としては、次に述べるようにして上記の場合に対応する。
図２８（ａ）は、File Read CommandあるいはFile Write Commandに応じたCommand Block(CB) ORBと、このCommand Block ORBとともに転送されるべきPage Tableの全体(Page Table elements)を示している。例えばTarget側では、ここで示されるCommand Block ORBとPage Tableとがフェッチされる必要がある。
このPage Tableは、図２８（ｂ）に示すようにして、N個のグループ(分割単位)に分割することができる。このようにして得られる分割単位に対して、ここではID(PgTbID[1]〜PgTbID[N]を与えて個々を区別している。
ここで、Page Tableを何個のグループに分割するのかについて、つまり分割数Ｎをいくつとするのかは、Initiator側にて設定されるPage Tableの総データサイズと、SBP2 ORB_Page Table Receive DMA controllerのための総バッファサイズとにより例えばTarget側にて求めることができる。
本実施の形態では、この分割数NをCBA Unit(Command Block Agent Unit３１)により、即ちハードウェアにより求めることができるように構成する。
【００８１】
そして、上記図２８（ｂ）に示すようにして分割されるPage TableのN個の分割単位をSBP2 ORB_Page Table Receive DMA controllerのバッファに転送するときには、図２８（ｃ）に示すコンポーネント(component)を形成する。このコンポーネントは、図示するようにして、Command Block ORBに１つの分割単位を連結したものとして形成される。
このコンポーネントは、図２６に示すように、ORB_page_tableの構造を有するものとなる。コンポーネントにおけるCommand Block ORBは、先頭のthis_ORBからCdb[11]までの領域に対応し、Page Tableの分割単位(グループ)は、data_length(page table length, data length)から最後までの領域が相当する。また、１つの分割単位は、Command Block ORBに続くpage_table_length、data_lengthと、これに続くPage Table Listから成る。なお、Page Table Listは、ORB_page_tableのフォーマットに従って、この場合にも、図示するようにして、segment_length、segment_bass_hi、segment_bass_loから成る８バイトによるpage_elementが1以上連続して配置される構造を有するものとされる。
【００８２】
そして、このようにして形成したコンポーネントにより、initiatorから、SBP2 ORB_Page Table Receive DMA controllerのバッファに対して転送することになる。従って、Page tableを全て転送するには、コンポーネントの転送をＮ回繰り返すことになる。
【００８３】
また、さらに或るコンポーネントのPage Tableの分割単位について、一度でバッファに全てを転送して書き込むことができなかった場合には、図２８（ｄ）のPgTbID[j]を有するグループの例のように、書き込むことができずに残ったグループ部分(PgTbID[j’])を、さらにコンポーネント化して、再度、バッファに転送する。
【００８４】
そして、上記図２８により説明したようにして、Page TableをN個に分割する場合には、InitiatorからTargetに対するPage Table Listの転送も、分割単位に応じてN回実行することになる。この場合の、実施の形態におけるFile Read Commandに応じたトランザクション例を、図１５、図１６に示す。
なお、図１５、図１６では、Page Tableを2(N=2)個に分割した場合を例に挙げることとする。
【００８５】
図１５におけるシーケンスseq１は、図７と同様となる。
また、続くシーケンスseq2によるPage Table取得の処理としても、図７、図８と同様となるが、ここでは、CBA Unitは、2個に分割されるPage Tableのうち、前半のPage Tableの分割単位から成るPage Table Listを格納したCommand Block ORB(ORB_page_table)を要求するPage Table RequestをInitiatorに送信する。これに応答して、Initiatorからは、前半のPage Tableの分割単位から成るPage Table Listを格納したCommand Block ORB(ORB_page_table)を返してくる。
【００８６】
シーケンスseq3(図１５−図１６)は、ファイルのデータ(Readデータ)を転送するためのシーケンスであり、そのシーケンスの手順自体は、図７、図８と同様である。ただし、この場合のシーケンスseq3は、Readデータのうち、上記シーケンスseq2により取得したPage Table List（Page Table element）が示すData bufferにのみデータを転送する。なお、このデータの転送を完了したときには、図示するようにして、CBA Unitは、DescCompleteによる割り込み要求をInterrupt Handlerに対して行ってOHCIソフトウェアに必要な処理を実行させることで、メモリのデータを開放する。
【００８７】
そして、この場合のCBA Unitは、シーケンスseq3においてInterrupt Handlerに対してDescCompleteを出力したとされると、これに続けて、シーケンスseq4として、再び、Page Table RequestをInitiatorに対して送信する。このときのPage Table Requestは、残る後半のPage Tableの分割単位から成るPage Table ListのCommand Block ORB(ORB_page_table)を要求するものとなる。これに応答しては、Initiatorは、後半のPage Tableの分割単位から成るPage Table Listを格納したCommand Block ORB(ORB_page_table)を返してくる。
【００８８】
シーケンスseq5は、Readデータを転送するためのシーケンスとして、上記シーケンスseq4により取得したPage Table List（Page Table element）が示すData bufferにデータを転送する。これにより、全てのReadデータがinitiator側のData bufferに書き込まれたことになる。
【００８９】
続くシーケンスseq6は、図７、図８のシーケンスseq4と同様の終了処理手順を実行する。このシーケンスseq6の完了を以て、File Read Commandに応じたトランザクションが完了する。
【００９０】
また、図１５、図１６との比較として、一般例でのFile Read Commandに応じたトランザクションについて、同じくPage tableを2(N=2)個に分割した場合の例を図１７、図１８に示す。
先ず、図１７、図１８のシーケンスseq1、seq2は、先に図９、図１０に示した一般例でのFile Read Commandに応じたトランザクションの場合と同様となる。ただし、シーケンスseq2においては、上記図１５、図１６と同様にして、Target側は、2個に分割されるPage Tableのうち、前半のPage Tableの分割単位に対応するPage Table ListのCommand Block ORB(ORB_page_table)をInitiatorから受け取る。
シーケンスseq3（図１７−図１８）では、図９、図１０と同様のシーケンスにより、Readデータを転送するが、ここでも、図１５、図１６と同じく、Readデータのうち、上記シーケンスseq2により取得したPage Table List（Page Table element）が示すData bufferにのみデータを転送する。
シーケンスseq4では、残る後半のPage Tableの分割単位から成るPage Table Listを格納するCommand Block ORB(ORB_page_table)をInitiatorから受け取るための処理を実行する。
そして、シーケンスseq5では、シーケンスseq2と同じ手順で、上記シーケンスseq4により取得したPage Table List（Page Table element）が示すData bufferにデータを転送する。
続くシーケンスseq6は、図９、図１０のシーケンスseq4と同様の終了処理を実行する。このシーケンスseq6の終了を以て、File Read Commandに応じたトランザクションが完了する。
【００９１】
また、Page tableを2(N=2)個に分割した場合として、本実施の形態での、File Write Commandに応じたトランザクション例についても、図１９、図２０により示しておく。
【００９２】
先ず、図１９におけるシーケンスseq１、シーケンスseq2は、図１１と同様となる。ただし、ここでのシーケンスseq2において、CBA Unitは、2個に分割されるPage Tableのうち、前半のPage Tableの分割単位から成るPage Table Listを格納したCommand Block ORB(ORB_page_table)を要求するPage Table RequestをInitiatorに送信する。これに応答して、Initiatorからは、前半のPage Tableの分割単位から成るPage Table Listを格納したCommand Block ORB(ORB_page_table)を返してくる。
【００９３】
シーケンスseq3（図１９−図２０）は、InitiatorからWriteデータを受け取るためのシーケンスであり、そのシーケンスの手順自体は、図１１、図１２と同様である。ただし、この場合のシーケンスseq3は、Writeデータのうち、上記シーケンスseq2により取得したPage Table List（Page Table element）が示すData bufferからのみ、データを受け取るための処理となる。このデータの受け取りを完了したときには、図示するようにして、CBA Unitは、DescCompleteによる割り込み要求をInterrupt Handlerに対して行ってOHCIソフトウェアに必要な処理を実行させることで、メモリにデータをコピーする。
【００９４】
そして、この場合のCBA Unitは、シーケンスseq3においてInterrupt Handlerに対してDescCompleteを出力したとされると、これに続けて、シーケンスseq4として、再び、Page Table RequestをInitiatorに対して送信する。これにより、残る後半のPage Tableの分割単位から成るPage Table Listを格納するCommand Block ORB(ORB_page_table)をInitiatorから受け取るためのシーケンスが実行される。
【００９５】
シーケンスseq5は、Target側にてWriteデータを受け取るためのシーケンスとして、上記シーケンスseq4により取得した、後半のPage Tableの分割単位に対応するPage Table List（Page Table element）が示すData bufferからデータを受け取るための処理を実行する。
【００９６】
続くシーケンスseq6は、図１１、図１２のシーケンスseq4と同様の終了処理手順を実行する。このシーケンスseq6の完了を以て、File Write Commandに応じたトランザクションが完了する。
【００９７】
また、図１９、図２０との比較として、一般例でのFile Write Commandに応じたトランザクションにつきいて、同じくPage Tableを2(N=2)個に分割した場合の例を図２１、図２２、図２３に示す。
図２１において、はじめのシーケンスseq1、seq2は、先に図９に示した一般例でのFile Write Commandに応じたトランザクションの場合と同様となる。ただし、シーケンスseq2においては、上記図１９、図２０の場合と同様にして、Target側は、2個に分割されるPage Tableのうち、前半のPage Tableの分割単位に対応するPage Table Listを格納するCommand Block ORB(ORB_page_table)をInitiatorから受け取る。
シーケンスseq3(図２１−図２２)では、図１３、図１４と同様のシーケンスにより、Target側にてWriteデータを受け取るが、ここでは、図１９、図２０のシーケンスseq3と同じく、Writeデータのうち、上記シーケンスseq2により取得したPage Table ListのPage elementが示すData bufferからのみデータを受け取る。
シーケンスseq4(図２２)では、先のシーケンスseq2と同じ手順により、残る後半のPage Tableの分割単位から成るPage Table ListのCommand Block ORB(ORB_page_table)をInitiatorから受け取るための処理を実行する。そして、シーケンスseq5(図２２−図２３)では、Targetは、シーケンスseq2と同じ手順で、上記シーケンスseq4により取得したPage Table ListのPage elementが示すData bufferからデータを受け取る。
続くシーケンスseq6は、図１３、図１４のシーケンスseq4と同様の終了処理を実する。このシーケンスseq6の終了を以て、File Write Commandに応じたトランザクションが完了する。
【００９８】
そして、本実施の形態のトランザクションにおいては、図１５、図１６、及び図１９、図２０には反映されていないが、図２８を参照して述べた、Page TableをN個に分割設定する処理は、ソフトウェアではなく、ハードウェアであるSBP2ユニット３０（Command Block Agent Unit３１）が実行するようにして構成される。このPage Tableの分割設定の結果に従い、同じく、Command Block Agent Unit３１が、図１５、図１６、及び図１９、図２０におけるシーケンスseq2、seq4において送信すべきPage Table Requestを生成して送信するものである。
【００９９】
なお、上記のFile Read Commandに対応する図１５、図１６と、図１７、図１８とを比較してみても、先の図７、図８、また、図９、図１０と同様にして、本実施の形態では、特定のシーケンスについては、OHCIソフトウェアの処理を介在させることなく、ハードウェアであるCBA Unitが処理を実行するようにされている。また、File Write Commandに対応する図１９、図２０と、図２１、図２２、図２３との比較からも同様のことがいえる。
【０１００】
ところで、これまでにおいては、SBP2ユニット３０を利用して特定のシーケンスについてOHCIソフトウェアの処理を介在させないようにしたトランザクション（SBP2ユニット対応トランザクション）については、File Read CommandとFile Write Commandに対応する場合を例に挙げて説明を行ってきた。
【０１０１】
本実施の形態のもとでは、SBP2ユニット対応トランザクションを、SBP2で規定されるFile Read CommandとFile Write Command以外の全てのコマンドにも対応して適用することは可能である。
しかしながら、本実施の形態の実際としては、SBP2ユニット対応トランザクションについては、File Read CommandとFile Write Commandにのみ適用することとしている。これは次のような理由による。
例えば、上記したようにSBP2ユニット対応トランザクションを全てのコマンドに適用することは可能ではあるが、この場合には、SBP2ユニット３０について、これらの全てのコマンドに対応できるように構成する必要が出てくるが、SBP2ユニット対応トランザクションに対応させるべきコマンドが多くなるほど、SBP2ユニット３０のハードウェア構成は複雑化していき、回路、プロセスの設計なども難しくなっていく。
【０１０２】
そこで、例えば、SBP2で規定される各種のコマンドに応じたトランザクションのうちで、高速な処理が優先されるものが何であるのかを考えてみると、先ず、上記のFile Read CommandとFile Write Commandが挙がる。File Read CommandとFile Write Commandの下でやりとりされるReadデータ若しくはWriteデータは、ファイルのデータであるためにサイズが大きく、特に図１に示す構成のシステムでは、動画像のデータであるために、非常に大きなサイズとなるからである。現に、File Read CommandとFile Write Commandに応じたトランザクションについて、本実施の形態のSBP2ユニット対応トランザクションとした場合には、例えば３倍以上の高速化が図られたことが実験で確認されている。これに対して、他のコマンドについて、SBP2ユニット対応トランザクションを適用しても、高速化が顕著に現れる結果にはなりにくい。
【０１０３】
また、SBP2ユニット３０を備えない、OHCIユニット２１のみから成る一般のＯＨＣＩ部１３は、現実には、OHCIに準拠するIEEE1394通信用の汎用チップとして広く普及しており、このような汎用チップをソフトウェアで制御してSBP2に従った通信、トランザクション（OHCIユニット対応トランザクション）を実行させる、ということについての技術は或る確立されているという状況がある。このことを考慮すると、顕著な高速化が現れないコマンドについてまでSBP2ユニット３０を適用してOHCIユニット２１を逆に不要としてしまうことは、これまでのソフトウェアの資産を活かせなくなるという点で好ましいとはいえない。つまり、コマンドに応じて、適宜、SBP2ユニット対応トランザクションとOHCIユニット対応トランザクションとを使い分けることの方が効率的であるといえる。
【０１０４】
このようなことを考慮した結果として、本実施の形態では、File Read CommandとFile Write Commandに対応するトランザクションについてのみ、SBP2ユニット対応トランザクションを適用し、残るコマンドについては、例えば少なくともデータのやりとりに関して、これまでと同じOHCIユニット対応トランザクションを少なくとも一部にて適用することとした。
ただし、必要に応じて、上記した高速化の顕著性、ソフトウェア資産の活用、及びSBP2ユニット３０としてのハードウェア構成の複雑化などを考慮したうえで、File Read Command、File Write Command以外の一部コマンドに対応するトランザクションについても、SBP2ユニット対応トランザクションを適用することについては、特に妨げられるべきものではない。
【０１０５】
ここで、OHCIユニット対応トランザクションが適用されるコマンドとして、File Open Commandを例に挙げることとして、そのトランザクション例を図２４に示す。
この図においては、トランザクション全体を、シーケンスseq1、seq2、seq3の順で区分して示している。
【０１０６】
先ず、シーケンスseq1では、PC InitiatorがTargetに対してDoorBellを送信している。これに応じては、本実施の形態のようにOHCI部１３がSBP2ユニット３０を備える場合、先に述べたようにして、DoorBellは、SBP2ユニット３０側のCBA Unitが受け付ける。CBA Unitは、DoorBellの受信に応答して、OHCIソフトウェアの処理を介在させることなく、ただちにResponseをTarget側に返す。また、続けてORB Pointer Read RequestをPC Initiatorに対して送信する。PC Initiatorは、ORB Pointer Read Request の受信に応答して、CBA Unitに対してORB Pointer Read Responseを返す。このORB Pointer Read Responseには、ＯＲＢをフェッチ（Fetch）しているPC Initiator側のMemory Addressが示されている。
そこで、CBA Unitは、ORB Read Requestを受信したことに応じて、PC Initiatorに対してORB Read Requestを送信する。PC Initiatorは、ORB Read Requestに応答するORB Read Responseとして、File Open CommandとしてのCommand Block ORBを返送する。File Open CommandとしてのCommand Block ORBは、例えば図２５に示した構造におけるcdb[0]に対して、C0hを格納する。
【０１０７】
この場合のCBA Unitは、Command Block ORBの受信に応答してInterrupt Handlerに対してORBfetchを出力して割り込み要求を行う。これに応じて、OHCIソフトウェアは、図示する処理を実行する。
なお、ここまでの処理をみて分かるように、TargetがDoorBellの受信(Command Block Agent Registerへのアクセス)から、Command Block ORBを受け取るまでの処理は、先のFile Read CommandとFile Write Commandに対応するトランザクションと同様にして、ソフトウェアを介在させることなく、CBA UnitとPC Initiatorとの間でのハードウェアによる処理となっている。
【０１０８】
続くシーケンスseq2では、上記シーケンスseq1によりOHCI TaskからCBA Taskに対してORB:OPEN:EV_ORBFCH (EventFlag)が実行されたことに応じて、CBA TaskからOHCI Unit(OHCIユニット２１)に対してFile Name Read Requestを出力する。
File Name Read Requestを受け付けたことに応じてOHCI Taskは、PC Initiatorに対して、Read Request Blockを送信する。
PC Initiatorは、Read Request Blockの受信に応答して先ずAcknowledge(ACK)を返送する。OHCI Unitは、ACKの受信に応じて、Interrupt HandlerにReqTxCompleteによる割り込みを行う。これにより図示するようにして、Interrupt HandlerからOHCI Task, Transaction Task間でのソフトウェア処理が実行されることで、OHCIソフトウェア側にて、Read Request Blockの送信が成功したことが認識される。
次に、PC Initiatorは、ACKの出力に続けて、Read Response Blockを返してくる。これを受信したOHCI Unitは、Interrupt Handlerに対してRead Response Blockのパケットを渡して割り込みを行う。これに応じて、OHCIソフトウェアによる所要の処理（INT_RSPKT (DataQueue)、RX:READ_B_RES、File Name Read Resp :EV_DONE(EventFlag)、psmChkFileType、psmOpenFile）などが実行される。このOHCIソフトウェアの処理により、例えばTarget側にてファイル名が取得できることになる。
このシーケンスseq2としての処理が、これまでと同様にしてソフトウェアを介在させた処理となっているものであり、このために、シーケンスseq2では、CBA Unit（SBP2ユニット３０）に代わり、OHCI Unit（ＯＨＣＩユニット２１）が処理を実行している。
【０１０９】
上記したシーケンスseq2におけるOHCIソフトウェアの処理が完了すると、シーケンスseq3として、CBA TaskがOHCI Unitに対してstatus block noticeを返す。これを受けて、OHCI Unit は、status block noticeをPC Initiatorに送信する。PC Initiatorは、status block noticeの受信に応答したACKを返してくる。OHCI Unitは、このACKの受信に応答して割り込みをかけ、OHCIソフトウェアにより図示する処理を実行させ、最終的にCBA TaskからCBA Unitに対してシーケンスの終了通知が行われることを以て、File Open Commandに対応するトランザクションが終了する。
【０１１０】
なお、これまでに説明してきた実施の形態においては、Targetに対応するNodeは、ビデオカメラ装置１としているが、これに限定されるものではない。本願発明は、当然のこととして、他のビデオカメラ装置以外に実装されるＩＥＥＥ１３９４データインターフェース機能に適用できる。
また、上記実施の形態では、データインターフェース規格としてＩＥＥＥ１３９４を例に挙げると共に、このＩＥＥＥ１３９４における共通化規格としてＯＨＣＩを挙げ、さらに、ＩＥＥＥ１３９４の上位通信プロトコルとしてＳＢＰ２を挙げている。しかし、本願発明の下では、これらのデータインターフェース規格、共通化規格、また、上位通信プロトコルについては、特に限定されるべきものではない。
【図面の簡単な説明】
【０１１１】
【図１】本発明の実施の形態に対応するシステム構成例を示す図である。
【図２】実施の形態のビデオカメラ装置におけるＩＥＥＥ１３９４データインターフェースに関連する部位を示すブロック図である。
【図３】一般例に対応したＯＨＣＩ部の構成例を示すブロック図である。
【図４】実施の形態に対応するＯＨＣＩ部の構成例を示すブロック図である。
【図５】Command Block Agent Registerを示す図である。
【図６】Fetch Agent CSR base address registerを示す図である。
【図７】実施の形態に対応するReadコマンド(File read Command)に応じたトランザクションを示すシーケンス図である。
【図８】図７に続くトランザクションを示すシーケンス図である。
【図９】一般例に対応するReadコマンド(File read Command)に応じたトランザクションを示すシーケンス図である。
【図１０】図９に続くトランザクションを示すシーケンス図である。
【図１１】実施の形態に対応するWriteコマンド(File Write Command)に応じたトランザクションを示すシーケンス図である。
【図１２】図１１に続くトランザクションを示すシーケンス図である。
【図１３】一般例に対応するWriteコマンド(File Write Command)に応じたトランザクションを示すシーケンス図である。
【図１４】図１３に続くトランザクションを示すシーケンス図である。
【図１５】実施の形態に対応するReadコマンド(File read Command)に応じたトランザクションとして、Page Table Listを分割した場合のトランザクションを示すシーケンス図である。
【図１６】図１５に続くトランザクションを示すシーケンス図である。
【図１７】一般例に対応するReadコマンド(File read Command)に応じたトランザクションとして、Page Table Listを分割した場合のトランザクションを示すシーケンス図である。
【図１８】図１７に続くトランザクションを示すシーケンス図である。
【図１９】実施の形態に対応するWriteコマンド(File Write Command)に応じたトランザクションとして、Page Table Listを分割した場合のトランザクションを示すシーケンス図である。
【図２０】図１９に続くトランザクションを示すシーケンス図である。
【図２１】一般例に対応するWriteコマンド(File Write Command)に応じたトランザクションとして、Page Table Listを分割した場合のトランザクションを示すシーケンス図である。
【図２２】図２１に続くトランザクションを示すシーケンス図である。
【図２３】図２２に続くトランザクションを示すシーケンス図である。
【図２４】実施の形態に対応するFile Open Commandに応じたトランザクションを示すシーケンス図である。
【図２５】File Read CommandとしてのCommand Block ORBの構造を示す図である。
【図２６】ORB_page_tableを示す図である。
【図２７】File Write CommandとしてのCommand Block ORBの構造を示す図である。
【図２８】Page Table分割の概念を示す図である。
【符号の説明】
【０１１２】
１  ビデオカメラ装置、２  編集装置（ＰＣ）、３  ＩＥＥＥ１３９４バス、１１  ＣＰＵ、１２  メモリ、１３  ＯＨＣＩ部、１５  バッファメモリ、２１  ＯＨＣＩユニット、２２  ＰＣＩバスインターフェースブロック、２３  ＩＥＥＥ１３９４リンク層・物理層ブロック、３０ＳＢＰ２ユニット、３１  Command Block Agent Unit、３２  AT FAM DMAブロック、３３  Header・Footer Add Block、３４  AT FAM FIFOブロック、３５  AR_FAM DMAブロック、３６  Header・Footer Remove Block、３７  AR_FAM FIFOブロック
【図１】
2009290545.tif 000003
【図２】
2009290545.tif 000004
【図３】
2009290545.tif 000005
【図４】
2009290545.tif 000006
【図５】
2009290545.tif 000007
【図６】
2009290545.tif 000008
【図７】
2009290545.tif 000009
【図８】
2009290545.tif 000010
【図９】
2009290545.tif 000011
【図１０】
2009290545.tif 000012
【図１１】
2009290545.tif 000013
【図１２】
2009290545.tif 000014
【図１３】
2009290545.tif 000015
【図１４】
2009290545.tif 000016
【図１５】
2009290545.tif 000017
【図１６】
2009290545.tif 000018
【図１７】
2009290545.tif 000019
【図１８】
2009290545.tif 000020
【図１９】
2009290545.tif 000021
【図２０】
2009290545.tif 000022
【図２１】
2009290545.tif 000023
【図２２】
2009290545.tif 000024
【図２３】
2009290545.tif 000025
【図２４】
2009290545.tif 000026
【図２５】
2009290545.tif 000027
【図２６】
2009290545.tif 000028
【図２７】
2009290545.tif 000029
【図２８】
2009290545.tif 000030