(57)【要約】【課題】  ２台以上の機器に対するコマンド処理シーケンスを行うことができるマルチイニシエータ制御装置を提供する。【解決手段】  伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御装置であって、受信したパケットを解析し、その結果を出力するパケットフィルタと、各々、対応する機器との間のコマンド処理シーケンスを制御する複数のコマンド制御回路と、前記複数のコマンド制御回路のうちの１つにシーケンス実行許可を与えるマルチ制御回路と、前記許可を与えられたコマンド制御回路が出力する情報を有するパケットを生成して送信させる一方、受信したパケットを前記パケットフィルタが出力する解析結果に従って出力するパケット処理回路とを備える。【選択図】      図２
2005018800.tif 000002
【特許請求の範囲】
【請求項１】
伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御装置であって、
送信すべきパケットを前記伝送路に送信する一方、前記伝送路からパケットを受信し、誤り検出を行って出力するリンクコア回路と、
前記リンクコア回路が受信したパケットを解析し、その結果を出力するパケットフィルタと、
各々、対応する機器との間のコマンド処理シーケンスを制御する複数のコマンド制御回路と、
前記複数のコマンド制御回路のうちの１つにシーケンス実行許可を与えるマルチ制御回路と、
前記許可を与えられたコマンド制御回路が出力する情報を有するパケットを前記送信すべきパケットとして生成し、前記リンクコア回路に出力して送信させる一方、前記リンクコア回路が受信して出力したパケットを前記パケットフィルタが出力する解析結果に従って出力するパケット処理回路と、
前記パケット処理回路が出力するパケットに含まれるコマンドを実行するＣＰＵ（central processing unit）とを備えた
マルチイニシエータ制御装置。
【請求項２】
請求項１に記載のマルチイニシエータ制御装置において、
前記複数のコマンド制御回路は、それぞれ、
対応する機器が出力し、当該対応する機器との間のコマンド処理シーケンスに必要な情報を格納して、これを前記シーケンス実行許可が与えられると出力するものであり、
前記マルチ制御回路は、
前記リンクコア回路が受信して出力するパケットに含まれる、当該パケットを送信した機器との間のコマンド処理シーケンスに必要な情報を、前記パケットフィルタの出力に応じて、前記複数のコマンド制御回路のうち当該機器に対応するものに出力して格納させるものであり、
前記パケット処理回路は、
前記シーケンス実行許可を与えられたコマンド制御回路が出力する情報を有するパケットを生成して出力し、これに応答して当該コマンド制御回路に対応する機器が出力したパケットを、受信して出力するものである
ことを特徴とするマルチイニシエータ制御装置。
【請求項３】
請求項１に記載のマルチイニシエータ制御装置において、
前記複数のコマンド制御回路は、それぞれ、
対応する機器から送信されたコマンドフェッチ要求パケットの情報を格納し、前記マルチ制御回路から前記シーケンス実行許可が与えられた場合に、当該機器に対してコマンドフェッチ動作を行う
ことを特徴とするマルチイニシエータ制御装置。
【請求項４】
請求項３に記載のマルチイニシエータ制御装置において、
前記複数のコマンド制御回路は、それぞれ、
データ転送処理シーケンスの実行中であっても、対応する機器からのコマンドフェッチ要求を受け取る
ことを特徴とするマルチイニシエータ制御装置。
【請求項５】
請求項１に記載のマルチイニシエータ制御装置において、
前記複数のコマンド制御回路は、それぞれ、
コマンド処理シーケンスを行うためのアドレスを格納するレジスタを有するものであり、
前記レジスタのアドレスは、当該レジスタが属するコマンド制御回路の対応する機器のノード番号に応じて、前記複数のコマンド制御回路のうちの基準とするもののレジスタのアドレスを、所定の値を単位としてアドレス拡張して得られたものである
ことを特徴とするマルチイニシエータ制御装置。
【請求項６】
請求項１に記載のマルチイニシエータ制御装置において、
前記マルチ制御回路は、
コマンド処理シーケンスが終了する毎に前記複数の機器から１つを所定の順で選択して、前記複数のコマンド制御回路のうち選択された機器に対応したものに前記シーケンス実行許可を与える
ことを特徴とするマルチイニシエータ制御装置。
【請求項７】
請求項１に記載のマルチイニシエータ制御装置において、
前記パケット処理回路が当該マルチイニシエータ制御装置の外部との間で行うデータ転送の制御を行う転送制御回路を更に備え、
前記パケット処理回路は、
前記パケットフィルタが出力するパケットから転送すべきデータを取り出して前記転送制御回路に出力する一方、前記転送制御回路に転送されて来たデータからパケットを生成して前記リンクコア回路に出力する
ことを特徴とするマルチイニシエータ制御装置。
【請求項８】
請求項１に記載のマルチイニシエータ制御装置において、
前記ＣＰＵが前記複数のコマンド制御回路にシーケンス実行許可を与えることができるように構成されている
ことを特徴とするマルチイニシエータ制御装置。
【請求項９】
請求項１に記載のマルチイニシエータ制御装置において、
前記複数の機器のそれぞれのノード番号と、ノード番号を識別するためのフィールドにおけるビットの位置とが対応付けられており、前記機器のそれぞれを、前記フィールドにおけるビットの位置で識別するように構成されている
ことを特徴とするマルチイニシエータ制御装置。
【請求項１０】
伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御方法であって、
前記複数の機器のうちの１つからコマンドフェッチ要求を受けたことを記憶しているか否かを判定するステップと、
コマンドフェッチ要求を受けたことを記憶していると判定したときは、当該機器からコマンドをフェッチして実行するステップとを備え、
前記複数の機器から１つを所定の順で選択することを繰り返し、選択された機器について前記判定を行うステップと前記コマンドを実行するステップとを行う
マルチイニシエータ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータと周辺装置等との間でコマンドやデータを伝送路を介して伝送する際に使用されるプロトコルに対するシーケンス処理技術に関する。
【背景技術】
【０００２】
ＡＶ（audio-visual）機器やコンピュータ機器等を接続する次世代インターフェイスとして、ＩＥＥＥ１３９４方式が注目されている。これは、ＩＥＥＥ１３９４方式に、非同期(asyncronous)通信とアイソクロナス(isochronous)通信とが定義されているためである。非同期通信は、コンピュータと記録メディア等との間のデータ転送のように、リアルタイム性よりも信頼性をより要求される通信に用いられる。アイソクロナス通信は、動画等のＡＶデータのような、信頼性よりもリアルタイム性が要求される通信に用いられる。したがって、ＩＥＥＥ１３９４方式を用いて、例えばコンピュータデータをＤＶＤ−ＲＡＭ（digital versatile disc - random access memory）ドライブ装置等に格納したり、ＤＶＤ−ＲＡＭドライブ装置から記録済みのコンピュータデータを読み出したりする際には、一般的に非同期通信によりデータを伝送する。
【０００３】
コンピュータ等の機器（イニシエータ（initiator））と周辺装置（ターゲット（target））との間でＩＥＥＥ１３９４方式の非同期通信を行う場合のプロトコルとして、ＳＢＰ−２（serial bus protocol-2）がある。以下、コンピュータがこのＳＢＰ−２に従ってＤＶＤ−ＲＡＭドライブ等のターゲットからデータを読み込む場合における、コマンド処理シーケンスについて説明する。
【０００４】
ＳＢＰ−２のコマンドは、ＲＥＡＤ、ＷＲＩＴＥ等のコマンド系のコマンドと、ＬＯＧＩＮ、ＱＵＥＲＹ  ＬＯＧＩＮ、ＡＢＯＲＴ  ＴＡＳＫ、ＡＢＯＲＴ  ＴＡＳＫ  ＳＥＴ等のマネージメント系（タスク管理系）のコマンドとに分けることができる。
【０００５】
図９は、マネージメント系のコマンドであるＬＯＧＩＮコマンドを実行するためのコマンド処理シーケンスを示す説明図である。図９を参照して、ＬＯＧＩＮコマンドのコマンド処理シーケンスを説明する。
【０００６】
（１）イニシエータは、ＱＲＲＱ（quadlet read request）パケットを発行することにより、ターゲットの固有情報（機器情報等）の取得を行う。一般にこの固有情報全体はコンフィグレーションＲＯＭ（configROM）と呼ばれる領域に格納されており、この固有情報にはターゲットのMANAGEMENT＿AGENTレジスタのアドレスも含まれている。
【０００７】
（２）ターゲットは、イニシエータからのＱＲＲＱパケットに応答して、configROMのデータをＱＲＲＳ（quadlet read response）パケットとしてイニシエータに返す。ＱＲＲＱパケット及びＱＲＲＳパケットが送信されるこれらの処理（１），（２）は、イニシエータがconfigROMのデータを全て取得するまで続く。
【０００８】
（３）イニシエータは、ＢＷＲＱ（block write request）パケットを発行して、ＯＲＢ（operation request block）を格納しているメモリのアドレスをMANAGEMENT＿AGENTレジスタに書き込む。ＯＲＢは、イニシエータによって予め用意されており、MANAGEMENT＿AGENTレジスタは、ターゲットのＣＳＲ（control and status register）空間に定義されている。
【０００９】
（４）ターゲットは、イニシエータからのＢＷＲＱパケットに応答して、ＷＲＳ（write response）パケットをイニシエータに返す。
【００１０】
（５）ターゲットは、イニシエータに対してＢＲＲＱ（block read request）パケットを発行して、イニシエータがＯＲＢをターゲットに送信することを要求する。ＯＲＢは、MANAGEMENT＿AGENTレジスタに格納されたアドレスに位置している。
【００１１】
（６）イニシエータは、ターゲットからのＢＲＲＱパケットに応答して、ＢＲＲＳ（block read response）パケットをターゲットに返す。ＢＲＲＳパケットのデータフィールドには、ＯＲＢが格納されている。このようにして、ＯＲＢがイニシエータからターゲットに送信される。
【００１２】
（７）ターゲットは、イニシエータからＯＲＢを受信し、受信したＯＲＢの内容を解析する。
【００１３】
（８）ターゲットは、受信したＯＲＢがＬＯＧＩＮコマンドを表すことがわかると、ＬＯＧＩＮコマンドを実行する。コマンド実行の際のLogin ResponseにCOMMAND＿AGENTレジスタのベースアドレスが示されている。
【００１４】
（９）ＬＯＧＩＮコマンドの実行が終了した後、ターゲットは、ＬＯＧＩＮコマンドの実行結果を示すステータス情報を作成する。
【００１５】
（１０）ターゲットは、ＢＷＲＱパケットを発行することにより、ステータス情報をイニシエータに送信する。ステータス情報は、ＯＲＢによって指定される所定のアドレス（イニシエータのStatus＿FIFOアドレス）に格納される。
【００１６】
（１１）イニシエータは、ターゲットからのＢＷＲＱパケットに応答して、ＷＲＳパケットをターゲットに返す。
【００１７】
（１２）ターゲットは、イニシエータからのＷＲＳパケットのrCodeがresp＿completeであるか否かを判定する。イニシエータからのＷＲＳパケットのrCodeがresp＿completeである場合は、ＬＯＧＩＮコマンドに関する一連のコマンド処理シーケンスが完了する。
【００１８】
図１０は、コマンド系のＲＥＡＤコマンドを実行するためのコマンド処理シーケンスを示す説明図である。図１０のシーケンスは、図９を参照して説明したＬＯＧＩＮコマンドの処理シーケンスが終了した後に実行される。図１０を参照して、ＲＥＡＤコマンドのコマンド処理シーケンスを説明する。
【００１９】
（２１）イニシエータは、ＲＥＡＤコマンドを表すＯＲＢを作成する。ＲＥＡＤコマンドを表すＯＲＢは、データ数、最大パケット長、転送方向、転送方法等、ＲＥＡＤコマンドを実行するために必要な情報を定義する。
【００２０】
（２２）イニシエータは、ＱＷＲＱ（quadlet write request）パケットをターゲットのAGENT＿RESETレジスタに書き込み、初期化させる。なお、AGENT＿RESETレジスタは、ターゲットのＣＳＲ空間に定義されている。
【００２１】
（２３）ターゲットは、イニシエータからのＱＷＲＱパケットに応答して、ＷＲＳパケットをイニシエータに返す。
【００２２】
（２４）イニシエータは、ＢＷＲＱパケットを発行することにより、ＯＲＢを格納しているメモリのアドレスをORB＿POINTERレジスタに書き込む。なお、ORB＿POINTERレジスタは、ターゲットのＣＳＲ空間に定義されている。
【００２３】
（２５）ターゲットは、イニシエータからのＢＷＲＱに応答して、ＷＲＳをイニシエータに返す。
【００２４】
（２６）ターゲットは、ＢＲＲＱパケットを発行して、イニシエータがＯＲＢをターゲットに送信することを要求する。ＯＲＢは、ORB＿POINTERレジスタに格納されたアドレス、すなわち、イニシエータにおけるそのメモリアドレスに位置している。
【００２５】
（２７）イニシエータは、ターゲットからのＢＲＲＱパケットに応答して、ＢＲＲＳパケットをターゲットに返す。ＢＲＲＳパケットのデータフィールドにはＯＲＢが格納されている。このようにして、ＯＲＢがイニシエータからターゲットに送信される。
【００２６】
（２８）ターゲットは、イニシエータからＯＲＢを受信し、受信したＯＲＢの内容を解析する。
【００２７】
（２９）ターゲットは、受信したＯＲＢがＲＥＡＤコマンドを表すことがわかると、ＲＥＡＤコマンドを実行する。ＲＥＡＤコマンドの実行により、以下の（３０）、（３１）が繰り返される。これは、転送すべきデータのサイズが大きい場合には、そのデータを複数のパケットに分割して転送するためである。転送すべきデータは、ターゲットによって用意される。
【００２８】
（３０）ターゲットは、ＢＷＲＱパケットを発行して、ＯＲＢによって指定されるアドレスにデータを格納する。
【００２９】
（３１）イニシエータは、ターゲットからのＢＷＲＱパケットに応答して、ＷＲＳパケットをターゲットに返す。処理（３０）及び（３１）は１つのトランザクションを構成する。１つのトランザクションが正常に終了したことが確認された後に、次のトランザクションが実行される。
【００３０】
（３２）データ転送処理シーケンスが正常に終了した後、ターゲットは、ＲＥＡＤコマンドの実行結果を示すステータス情報を作成する。
【００３１】
（３３）ターゲットは、ＢＷＲＱパケットを発行することにより、ステータス情報をイニシエータに送信する。ステータス情報は、ＯＲＢによって指定される所定のアドレスに格納される。
【００３２】
（３４）イニシエータは、ターゲットからのＢＷＲＱパケットに応答して、ＷＲＳパケットをターゲットに返す。
【００３３】
（３５）ターゲットは、イニシエータからのＷＲＳパケットのrCodeがresp＿completeであるか否かを判定する。イニシエータからのＷＲＳパケットのrCodeがresp＿completeである場合には、ＲＥＡＤコマンドに関する一連のコマンド処理シーケンスが完了する。
【００３４】
なお、図には示されていないが、図９，１０において、ターゲットは、イニシエータからのパケットを受信すると、ＡＣＫ（Acknowledge）パケットをイニシエータに返す。同様に、イニシエータは、ターゲットからのパケットを受信すると、ＡＣＫパケットをターゲットに返す。
【００３５】
イニシエータ及びターゲットは、書き込み要求パケット（例えば、ＢＷＲＱパケットやＱＷＲＱパケット）の受信に成功した場合には、パケットの受信に成功したことを示す“Ack＿complete”というコードを有するＡＣＫパケットを返す。この場合、ＷＲＳパケットを返さず、次の処理に進む。イニシエータ及びターゲットは、“Ack＿pending”というコードを有するＡＣＫパケットを返す場合には、ＷＲＳパケットを返す。また、イニシエータ及びターゲットは、パケットを受信することができない状態である場合には、パケットを受信することができない状態であることを示す“Ack＿busy”というコードを有するＡＣＫパケットを返す。データ転送シーケンスにおいて、ターゲットからのＢＷＲＱパケットに対してイニシエータが“Ack＿busy”というコードを有するＡＣＫパケットをターゲットに返した場合には、ターゲットはＢＷＲＱパケットをイニシエータに再送信する。
【００３６】
以上のようにして、イニシエータとターゲットとの間でデータ転送処理を行うことができる。ＳＢＰ−２では、１つのバス上で、ターゲット１台に対してイニシエータを最大６３台接続することが可能である。
【００３７】
図１１はＳＢＰ−２を処理する従来のシーケンス処理装置９０の構成を示すブロック図である。物理層コントローラ９１は、ＩＥＥＥ１３９４バス２０の初期化、アービトレーション、バイアス電圧の制御等の機能を有している。リンクコア回路９２は、物理層コントローラ９１を介してバス２０上のパケットを受信する。リンクコア回路９２は、パケットに対して誤り検出符号の作成／検出、パケットへの符号の付加、コードの検出（例えば、ＡＣＫパケットのコード検出）等を行う。またリンクコア回路９２は、物理層コントローラ９１を介してパケットをバス２０に出力する。更に、リンクコア回路９２は、パケットの転送が失敗した場合にそのパケットの転送を再度試みるリトライ機能を有している。
【００３８】
パケットフィルタ９３は、リンクコア回路９２が出力したパケットを受け取り、このパケットのヘッダフィールドの内容を解析する。パケットフィルタ９３は、その解析結果に応じて、シーケンス制御回路９９又は転送制御回路９６に制御信号を与えるとともに、受信パケットをパケット処理回路９５に出力する。パケット処理回路９５は、シーケンス制御回路９９又は転送制御回路９６から制御され、入力されたパケットを処理し、コマンド受信バッファ９７へのコマンドの出力、又はＤＭＡ（direct memory access）バス６を介して受信データの外部への出力を行う。シーケンス制御回路９９は、接続された１台のイニシエータに対するコマンド処理シーケンスの実行及び制御を行う。
【００３９】
このように、図１１の従来のシーケンス処理装置は、１台のイニシエータとの間のコマンド処理シーケンスを行っていた。
【発明の開示】
【発明が解決しようとする課題】
【００４０】
従来のシーケンス処理装置において２台以上のイニシエータのシーケンス処理を行うには、２台目以降のイニシエータに対するシーケンス処理、及びそれぞれのイニシエータの管理を、全てファームウェアで行う必要があった。この場合、ＣＰＵ（central processing unit）にかかる負荷が非常に大きくなる。
【００４１】
特に、ＤＶＤ−ＲＡＭ等の光ディスク装置によって取り扱われる大量のデータを転送する必要がある場合には、ＣＰＵの負荷が飛躍的に増大する。その結果、ＣＰＵによって実行されるファームウェアのオーバーヘッドが増大し、ＩＥＥＥ１３９４方式を採用することによって本来実現されるべき、高速シリアルバスインターフェイスとしての高い実効転送レートを実現することが非常に困難になる。また、ファームウェアにこのような処理を全てさせると、ＣＰＵの負荷が大きくなるため、シーケンス処理装置を光ディスク装置等の他のシステムへ組み込むことは不可能であった。
【００４２】
このように、従来のシーケンス処理装置は、実際にはイニシエータが１台の場合にしか対応できなかった。このため、拡張性が低く、複数のイニシエータが接続されたネットワーク環境ではあまり効果的に使用することができなかった。
【００４３】
本発明は、２台以上の機器に対するコマンド処理シーケンスを行うことができるマルチイニシエータ制御装置を提供することを目的とする。
【課題を解決するための手段】
【００４４】
前記課題を解決するため、請求項１の発明が講じた手段は、伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御装置であって、送信すべきパケットを前記伝送路に送信する一方、前記伝送路からパケットを受信し、誤り検出を行って出力するリンクコア回路と、前記リンクコア回路が受信したパケットを解析し、その結果を出力するパケットフィルタと、各々、対応する機器との間のコマンド処理シーケンスを制御する複数のコマンド制御回路と、前記複数のコマンド制御回路のうちの１つにシーケンス実行許可を与えるマルチ制御回路と、前記許可を与えられたコマンド制御回路が出力する情報を有するパケットを前記送信すべきパケットとして生成し、前記リンクコア回路に出力して送信させる一方、前記リンクコア回路が受信して出力したパケットを前記パケットフィルタが出力する解析結果に従って出力するパケット処理回路と、前記パケット処理回路が出力するパケットに含まれるコマンドを実行するＣＰＵ（central processing unit）とを備えたものである。
【００４５】
請求項１の発明によると、マルチイニシエータ制御装置からパケットを送信し、これに応答して機器が送信するパケットに含まれるコマンドを、マルチイニシエータ制御装置は実行することができる。このようなコマンド処理シーケンスの実行は、コマンド制御回路によって行われるため、ＣＰＵがコマンド処理シーケンスの実行に関与することはない。また、マルチイニシエータ制御装置がいずれの機器との間のコマンド処理シーケンスを行うかを、マルチ制御回路が制御する。このため、ＣＰＵの負荷を低減することが可能になる。
【００４６】
また、請求項２の発明では、請求項１に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、対応する機器が出力し、当該対応する機器との間のコマンド処理シーケンスに必要な情報を格納して、これを前記シーケンス実行許可が与えられると出力するものであり、前記マルチ制御回路は、前記リンクコア回路が受信して出力するパケットに含まれる、当該パケットを送信した機器との間のコマンド処理シーケンスに必要な情報を、前記パケットフィルタの出力に応じて、前記複数のコマンド制御回路のうち当該機器に対応するものに出力して格納させるものであり、前記パケット処理回路は、前記シーケンス実行許可を与えられたコマンド制御回路が出力する情報を有するパケットを生成して出力し、これに応答して当該コマンド制御回路に対応する機器が出力したパケットを、受信して出力するものである。
【００４７】
請求項２の発明によると、複数のコマンド制御回路を効率よく制御して、コマンド処理シーケンスの一連のトランザクションを処理することができる。
【００４８】
また、請求項３の発明では、請求項１に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、対応する機器から送信されたコマンドフェッチ要求パケットの情報を格納し、前記マルチ制御回路から前記シーケンス実行許可が与えられた場合に、当該機器に対してコマンドフェッチ動作を行うものである。
【００４９】
請求項３の発明によると、コマンド制御回路は、各機器から受け取ったコマンドフェッチ要求パケットの情報を保持しているので、シーケンス実行許可が与えられるとただちにコマンドフェッチ動作に移行することができる。このため、効率的、かつ高速な動作を行うことができる。
【００５０】
また、請求項４の発明では、請求項３に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、データ転送処理シーケンスの実行中であっても、対応する機器からのコマンドフェッチ要求を受け取るものである。
【００５１】
請求項４の発明によると、ある機器がコマンド実行中であっても、他の機器のコマンドフェッチ要求を処理することができる。このため、コマンド処理の状態に関係なく、それぞれの機器からのアクセスに対応することができる。
【００５２】
また、請求項５の発明では、請求項１に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、コマンド処理シーケンスを行うためのアドレスを格納するレジスタを有するものであり、前記レジスタのアドレスは、当該レジスタが属するコマンド制御回路の対応する機器のノード番号に応じて、前記複数のコマンド制御回路のうちの基準とするもののレジスタのアドレスを、所定の値を単位としてアドレス拡張して得られたものである。
【００５３】
請求項５の発明によると、基準とするコマンド制御回路のレジスタのアドレスをアドレス拡張し、レジスタのアドレスを求めるため、接続される機器が複数の場合であっても、それぞれの機器がアクセスするレジスタのアドレスをＣＰＵが管理する必要がない。このため、ＣＰＵの負荷が低減され、機器が１台の場合と同様に高速に動作することができる。
【００５４】
また、請求項６の発明では、請求項１に記載のマルチイニシエータ制御装置において、前記マルチ制御回路は、コマンド処理シーケンスが終了する毎に前記複数の機器から１つを所定の順で選択して、前記複数のコマンド制御回路のうち選択された機器に対応したものに前記シーケンス実行許可を与えるものである。
【００５５】
請求項６の発明によると、接続されている各機器について順にコマンド実行許可を与えるか否かを判定するので、機器間のコマンド実行頻度のばらつきを小さくし、コマンドを実行する機会が一部の機器に偏らないようにすることができる。
【００５６】
また、請求項７の発明は、請求項１に記載のマルチイニシエータ制御装置において、前記パケット処理回路が当該マルチイニシエータ制御装置の外部との間で行うデータ転送の制御を行う転送制御回路を更に備え、前記パケット処理回路は、前記パケットフィルタが出力するパケットから転送すべきデータを取り出して前記転送制御回路に出力する一方、前記転送制御回路に転送されて来たデータからパケットを生成して前記リンクコア回路に出力するものである。
【００５７】
請求項７の発明によると、データ転送処理シーケンスは転送制御回路によって制御されるため、ＣＰＵがデータ転送処理シーケンスの実行に関与することはない。このため、データ転送処理シーケンスの実行中におけるＣＰＵの負荷を低減し、データ転送を高速に行うことができる。
【００５８】
また、請求項８の発明は、請求項１に記載のマルチイニシエータ制御装置において、前記ＣＰＵが前記複数のコマンド制御回路にシーケンス実行許可を与えることができるように構成されているものである。
【００５９】
請求項８の発明によると、ＣＰＵがコマンドフェッチの動作タイミングを制御することが可能なため、ファームウェアからのシーケンス制御に対する自由度が増し、ファームウェアの仕様に同期化させてシーケンス処理を行うことが可能となる。
【００６０】
また、請求項９の発明は、請求項１に記載のマルチイニシエータ制御装置において、前記複数の機器のそれぞれのノード番号と、ノード番号を識別するためのフィールドにおけるビットの位置とが対応付けられており、前記機器のそれぞれを、前記フィールドにおけるビットの位置で識別するように構成されているものである。
【００６１】
請求項９の発明によると、各機器のノード番号を１ビットで簡潔に表現するため、より多くの機器が接続された場合であっても、機器の管理を小規模の回路で行うことが可能となる。
【００６２】
また、請求項１０の発明は、伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御方法であって、前記複数の機器のうちの１つからコマンドフェッチ要求を受けたことを記憶しているか否かを判定するステップと、コマンドフェッチ要求を受けたことを記憶していると判定したときは、当該機器からコマンドをフェッチして実行するステップとを備え、前記複数の機器から１つを所定の順で選択することを繰り返し、選択された機器について前記判定を行うステップと前記コマンドを実行するステップとを行うものである。
【００６３】
請求項１０の発明によると、接続されている各機器について順にコマンド実行許可を与えるか否かを判定するので、コマンドを実行する機会が一部の機器に偏らないようにすることができる。
【発明の効果】
【００６４】
以上のように、本発明によると、複数のイニシエータを接続した場合でもＣＰＵの負荷を大きくすることがないので、複数のイニシエータを接続し、かつ、データ転送を高速に行うことができるマルチイニシエータ制御装置及び方法を提供することができる。
【発明を実施するための最良の形態】
【００６５】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、ここで示す実施の形態によって本発明の技術的範囲が限定されるものではない。
【００６６】
図１は、本発明の実施形態に係るマルチイニシエータ制御装置を用いたデータ転送システムのブロック図である。図１のデータ転送システムは、光ディスクドライブ１と、光ディスクドライブ１に接続されている、機器としてのイニシエータ１１，１２，１３とを備えている。イニシエータ１１〜１３は、例えばパーソナルコンピュータ（ＰＣ）である。光ディスクドライブ１は、ターゲットとしてのマルチイニシエータ制御装置２と、ＤＶＤ−ＲＡＭコントローラ３と、ヘッド４と、ＤＶＤ−ＲＡＭディスク５とを備えている。
【００６７】
各イニシエータ１１，１２，１３とマルチイニシエータ制御装置２との間は、それぞれ伝送路としてのＩＥＥＥ１３９４シリアルバス（以下では単にバスと称する）２１，２２，２３を介して接続されている。マルチイニシエータ制御装置２は、ＤＭＡバス６を介してＤＶＤ−ＲＡＭコントローラ３に接続されている。ＤＶＤ−ＲＡＭコントローラ３は、ヘッド４を介してＤＶＤ−ＲＡＭディスク５から読み出されたデータに復調等の信号処理を行い、マルチイニシエータ制御装置２に転送し、また、マルチイニシエータ制御装置２から転送されてきたデータに変調等の信号処理を行い、ヘッド４を介してＤＶＤ−ＲＡＭディスク５に書き込む。
【００６８】
図２は、本発明の実施形態に係る図１のマルチイニシエータ制御装置のブロック図である。図２において、マルチイニシエータ制御装置２は、ＣＰＵ３１と、物理層コントローラ（ＰＨＹ）４１と、リンクコア回路（ＬＩＮＫ）４２と、パケットフィルタ４３と、マルチ制御回路４４と、パケット処理回路４５と、転送制御回路４６と、コマンド受信バッファ４７と、制御レジスタ４８と、コマンド制御回路５１，５２，５３とを備えている。
【００６９】
図２において、ＣＰＵ３１、リンクコア回路４２、マルチ制御回路４４、転送制御回路４６、コマンド制御回路５１〜５３は、制御レジスタ４８に対してデータの書き込み、読み出しをすることができる。また、パケットフィルタ４３は、制御レジスタ４８の内容を読み出しすることができる。以下では例として、ＳＢＰ−２（serial bus protocol-2）をプロトコルとして用いて、イニシエータとターゲットとの間でデータ転送を行うものとして説明する。
【００７０】
物理層コントローラ４１は、バス２１〜２３の初期化、アービトレーション、バイアス電圧の制御等の機能を有している。物理層コントローラ４１は、バス２１〜２３上の電気信号をパケットに変換してリンクコア回路４２に出力したり、リンクコア回路４２から受け取ったパケットを電気信号に変換してバス２１〜２３に出力する。
【００７１】
リンクコア回路４２は、物理層コントローラ４１からパケットを受信する。リンクコア回路４２は、受信したパケットに対して誤り検出符号の検出、コードの検出（例えば、ＡＣＫパケットのコード検出）等を行った後、パケットフィルタ４３及びパケット処理回路４５に出力する。また、リンクコア回路４２は、パケット処理回路４５から受け取った、送信すべきパケットに対する誤り検出符号の作成及び付加を行い、物理層コントローラ４１に送信する。更に、リンクコア回路４２は、パケットの転送に失敗した場合に、そのパケットの転送を再度試みるリトライ機能を有している。
【００７２】
パケットフィルタ４３は、リンクコア回路４２からパケットを受け取り、そのパケットのヘッダフィールドの内容を解析する。パケットフィルタ４３は、その解析結果に応じて、このパケットをコマンド受信バッファ４７に格納するべきか否かを決定し、パケット処理回路４５に通知する。また、パケットフィルタ４３は、受信したパケットの送信元のイニシエータのノード番号をエンコードし、マルチ制御回路４４及び転送制御回路４６に制御信号として出力する。更に、パケットフィルタ４３は、受け取ったパケットに含まれる情報をマルチ制御回路４４及び転送制御回路４６に出力する。
【００７３】
マルチ制御回路４４は、リンクコア回路４２が受信したパケットに含まれる情報をパケットフィルタ４３から受け取り、パケットフィルタ４３が出力する制御信号に応じて、コマンド制御回路５１〜５３に格納させる。また、マルチ制御回路４４は、コマンド制御回路５１〜５３のうちの１つにシーケンス実行許可を与え、許可を与えられたコマンド制御回路が出力する情報をパケット処理回路４５に出力する。
【００７４】
パケット処理回路４５は、マルチ制御回路４４の制御の下で動作し、パケットフィルタ４３がコマンド受信バッファ４７に格納するべきであると決定したパケットをコマンド受信バッファ４７に格納させる。コマンド受信バッファ４７に格納されたパケットは、ＣＰＵ３１から読み出し可能な状態となる。また、パケット処理回路４５は、マルチ制御回路４４から受け取った情報を含むパケットを生成し、送信すべきパケットとしてリンクコア回路４２に出力する。
【００７５】
転送制御回路４６は、ＣＰＵ３１が出力するＲＥＡＤ／ＷＲＩＴＥ等の転送コマンド実行要求を、制御レジスタ４８を介して受け取り、パケット処理回路４５とＤＶＤ−ＲＡＭコントローラ３との間でパケットを転送する。
【００７６】
例えば、ＲＥＡＤコマンドを実行する場合には、転送制御回路４６は、ＣＰＵ３１からの実行要求に基づいて、ＤＶＤ−ＲＡＭディスク５に記録されたデータをＤＶＤ−ＲＡＭコントローラ３及びＤＭＡバス６を介して読み出し、パケット処理回路４５に出力する。パケット処理回路４５は、転送制御回路４６から受け取ったデータを分割して複数のパケットに格納し、これらのパケットをリンクコア回路４２及び物理層コントローラ４１を介してバス２１〜２３に出力する。
【００７７】
また、ＷＲＩＴＥコマンドを実行する場合には、パケット処理回路４５は、バス２１〜２３から物理層コントローラ４１及びリンクコア回路４２を介してパケットを受け取り、パケットからデータを取り出して転送制御回路４６に出力する。転送制御回路４６は、受け取ったデータをＤＭＡバス６を介してＤＶＤ−ＲＡＭコントローラ３に出力し、ＤＶＤ−ＲＡＭディスク５に記録させる。このようなパケット生成処理及びパケット転送処理は、転送制御回路４６によって制御される。
【００７８】
このように、転送制御回路４６がデータ転送処理シーケンスを行うので、ＣＰＵ３１がデータ転送処理シーケンスの実行に関与することはない。このため、データ転送処理シーケンスにおけるＣＰＵ３１の負荷を低減することが可能になり、ＩＥＥＥ１３９４に準拠した高速データ転送を実現することができる。
【００７９】
ＩＥＥＥ１３９４では、転送速度に応じて１パケットで転送可能なデータ長（最大ペイロードサイズ）が規定されている。本実施形態では、転送速度はＳ４００（転送速度約４００Mbit/sec）であるとし、この場合、１パケットで転送可能なデータ長は２０４８バイトである。
【００８０】
コマンド制御回路５１，５２，５３は、それぞれイニシエータ１１，１２，１３に対応しており、対応するイニシエータからコマンドフェッチ要求を受け取って、そのイニシエータとの間のコマンド処理シーケンスを制御する。マルチ制御回路４４は、コマンド制御回路５１〜５３のシーケンス実行を管理している。マルチ制御回路４４及びコマンド制御回路５１〜５３は、ＳＢＰ−２におけるコマンド処理シーケンスに必要なエージェントレジスタ（AGENT＿REGISTER）を有している。
【００８１】
図３は、図２のマルチ制御回路４４及びコマンド制御回路５１のレジスタについての説明図である。コマンド制御回路５２，５３のレジスタの構成は、コマンド制御回路５１と同様であるので図示を省略する。
【００８２】
マルチ制御回路４４は、エージェントレジスタとして、MANAGEMENT＿AGENTレジスタＲ１０を有している。MANAGEMENT＿AGENTレジスタＲ１０は、ＬＯＧＩＮ等のマネージメント系のコマンドをフェッチするためのアドレスを格納する。コマンド制御回路５１は、エージェントレジスタとしてAGENT＿STATEレジスタＲ１１、AGENT＿RESETレジスタＲ１２、ORB＿POINTERレジスタＲ１３、DOORBELLレジスタＲ１４及びUNSOLICITED＿STATUSレジスタＲ１５を有している。コマンド制御回路５２，５３も同様のレジスタを有している。コマンド制御回路５１〜５３のレジスタは、コマンド系のコマンドをフェッチするためのアドレス等を格納する。
【００８３】
コマンド制御回路５１〜５３は、それぞれ、対応するイニシエータ１１〜１３との間のコマンド処理シーケンスに必要な情報を格納する。このような情報には、イニシエータ１１〜１３のうち対応するものが出力するコマンドフェッチ要求パケットの情報と、DOORBELLレジスタへのアクセスがあったことを示す情報とがある。
【００８４】
コマンド制御回路５１〜５３は、それぞれの対応するイニシエータ１１〜１３からコマンドフェッチ要求パケットの情報を受信して保持し、マルチ制御回路４４からシーケンス実行許可が得られていないパケットの情報をキューイング、すなわち、未処理のコマンドをキューイングすることができる。コマンドフェッチ要求パケットは、例えばＢＷＲＱパケット、ＱＷＲＱパケットであって、ＢＷＲＱパケットの場合は、コマンドフェッチ対象のアドレスを含んでいる。
【００８５】
イニシエータ１１〜１３が、コマンド制御回路５１〜５３のそれぞれに対してコマンドフェッチ要求を行う際のアクセス方法としては、次の２種類がある。すなわち、ＢＷＲＱパケットを用いてコマンドフェッチ対象のアドレス（ＯＲＢ（operation request block）の格納先のアドレス）を書き込むORB＿POINTERレジスタへのアクセスと、ＱＷＲＱパケットを用いたDOORBELLレジスタへのアクセスとである。コマンド制御回路５１は、コマンドフェッチ対象のアドレスをORB＿POINTERレジスタＲ１３に格納し、DOORBELLレジスタＲ１４へのアクセスがあった場合には、アクセスがあったことを記憶、すなわち、このアクセスがあったことを示す情報を格納する。コマンド制御回路５２，５３に関しても同様である。
【００８６】
図４は、アドレス拡張についての説明図である。コマンド制御回路５１の各エージェントレジスタのアドレスは、ベースアドレス（Base Address）を基準とし、これにそれぞれ所定の値を加算したアドレスに設定しておく。ベースアドレスは、コマンド制御回路５１のAGENT＿STATEレジスタＲ１１のアドレスである。コマンド制御回路５２の各エージェントレジスタのアドレスは、コマンド制御回路５１の同種のレジスタのアドレスにそれぞれ２０ｈ（ｈは１６進数表示を表す）を加算したアドレスとし、コマンド制御回路５３の各エージェントレジスタのアドレスは、コマンド制御回路５１の同種のレジスタのアドレスにそれぞれ４０ｈを加算したアドレスとしておく。すなわち、コマンド制御回路５１，５２，５３のレジスタのアドレス領域は、それぞれベースアドレス、ベースアドレス＋２０ｈ、ベースアドレス＋４０ｈから始まる。
【００８７】
パケットフィルタ４３は、コマンド処理シーケンスにおいて、イニシエータ１１〜１３から受信したパケットを解析し、パケットの送信元のイニシエータがアクセスしてきたアドレスとエージェントレジスタのアドレスとを比較し、マルチ制御回路４４に通知する。
【００８８】
また、パケットフィルタ４３は、ＬＯＧＩＮしているイニシエータのノード番号に対応付けて、例えば２０ｈ間隔でアドレス拡張して受信パケットを解析し、その結果を制御信号としてマルチ制御回路４４に出力する。パケットフィルタ４３には、ＣＰＵ３１からベースアドレス及びイニシエータ１１〜１３のノード番号が予め設定されている。
【００８９】
パケットフィルタ４３は、パケットの送信元がイニシエータ１１である場合は、そのノード番号に基づき、アドレス拡張を行わない。この場合、パケットフィルタ４３は、ベースアドレスから決定されるエージェントレジスタのアドレスと受信したアドレスとを比較し、アクセスされるレジスタを示す制御信号を生成して、マルチ制御回路４４に出力する。また、パケットフィルタ４３は、パケットの送信元がイニシエータ１２である場合は、そのノード番号に基づき、イニシエータ１１のベースアドレスに２０ｈを加算したアドレスから決定されるエージェントレジスタのアドレスと受信したアドレスとを比較し、アクセスされるレジスタを示す制御信号を生成して、マルチ制御回路４４に出力する。更に、パケットフィルタ４３は、パケットの送信元がイニシエータ１３である場合は、そのノード番号に基づき、イニシエータ１１のベースアドレスに４０ｈを加算したアドレスから決定されるエージェントレジスタのアドレスと受信したアドレスとを比較し、アクセスされるレジスタを示す制御信号を生成して、マルチ制御回路４４に出力する。
【００９０】
マルチ制御回路４４は、コマンド制御回路５１〜５３のレジスタのうちパケットフィルタ４３が出力する制御信号で示されたものにアクセスして、コマンドフェッチ要求パケットの情報を必要に応じて格納させる。
【００９１】
このようにエージェントレジスタのアドレスを管理することにより、ＣＰＵ３１からのアドレス管理が簡潔になる。受信したパケットの送信元のイニシエータのノード番号からアドレスを求めるので、ＩＥＥＥ１３９４規格で１つのローカルバスに対して接続可能な最大のノード数である６３ノードのイニシエータを接続した場合であっても、エージェントレジスタのアドレス管理のために回路規模を大きくする必要がない。なお、ベースアドレスからのアドレス拡張を２０ｈ単位で行う場合について説明したが、アドレス拡張の単位は他の値としてもよい。
【００９２】
図５は、イニシエータのノード番号の管理方法を示す説明図である。本実施形態においては、マルチイニシエータ制御装置２に接続されているイニシエータの数は３台であるので、これらを３ビットのフィールドで識別することとする。すなわち、ビットＮ１が“１”であるとき、イニシエータ１１を示し、同様にビットＮ２又はＮ３が“１”であるとき、それぞれイニシエータ１２又は１３を示しているものとする。
【００９３】
例えば、イニシエータ１１，１２，１３のノード番号がそれぞれｆｆｃ０ｈ，ｆｆｃ１ｈ，ｆｆｃ２ｈであるとし、受信したパケットにノード番号ｆｆｃ０ｈが指定されているとする。この場合、パケットフィルタ４３は、“００１”をマルチ制御回路４４に出力して、パケットがイニシエータ１１から送られて来たことを通知する。
【００９４】
また、パケット処理回路４５は、マルチ制御回路４４が出力するデータの３ビットのフィールドに表されたノード番号を、ｆｆｃ０ｈ等の１６ビットのノード番号に変換して、パケットに組み込む。
【００９５】
このように、１６ビットのノード番号を１ビットで表現し、管理することになるので、ノード番号を扱うマルチ制御回路４４等の回路を簡略化することができる。ここで、イニシエータ１１〜１３のノード番号と、ビットＮ１，Ｎ２，Ｎ３の位置との対応関係は、１対１の関係であればどのようなものであってもよい。もちろん、マルチ制御回路４４等において、各ノード番号をそのまま用いるようにしてもよい。
【００９６】
図６は、図２のマルチ制御回路４４におけるコマンド実行処理のシーケンスを示すフローチャートである。ここでは、イニシエータ１１，１２，１３のノード番号がそれぞれNode１，Node２，Node３であるものとして説明する。また、イニシエータ１１〜１３は、コマンド制御回路５１〜５３のそれぞれに対するコマンドフェッチ要求の際に、ORB＿POINTERレジスタへのアクセスを行うものとして説明する。
【００９７】
マルチ制御回路４４は、まず、ステップＳ１１において、Node１のイニシエータ１１のコマンド処理シーケンスが未完了であるか否かを判定する。すなわち、マルチ制御回路４４は、コマンド制御回路５１がコマンドフェッチ要求を受け、未処理のコマンドをキューイングしているか否かを判定し、キューイングしていたらステップＳ１２に移行し、キューイングしていなかったらステップＳ１３に移行する。
【００９８】
ステップＳ１２では、マルチ制御回路４４は、コマンド制御回路５１にシーケンス実行許可を与える。コマンド制御回路５１は、格納しているコマンドフェッチ対象のアドレスを用い、Node１のイニシエータ１１からコマンドを取って来る。すなわち、コマンド制御回路５１は、コマンドフェッチ対象のアドレスをパケット処理回路４５に通知し、パケット処理回路４５は、このアドレスを含んだパケットを生成し、リンクコア回路４２及びバス２１を経由してイニシエータ１１に送信する。これに応答して、イニシエータ１１はコマンドを含んだパケットを送信し、このパケットはバス２１、リンクコア回路４２及びパケット処理回路４５を経由してコマンド受信バッファ４７に格納される。ＣＰＵ３１は、このパケットに含まれるコマンドを実行する。このようにして、コマンドをフェッチして実行する一連のトランザクションを行うことができる。コマンドの実行が終了したら、ステップＳ１３に処理を進める。
【００９９】
ステップＳ１３では、マルチ制御回路４４は、Node２のイニシエータ１２のコマンド処理シーケンスが未完了であるか否かを判定する。すなわち、マルチ制御回路４４は、コマンド制御回路５２がコマンドフェッチ要求を受け、未処理のコマンドをキューイングしているか否かを判定し、キューイングしていたらステップＳ１４に移行し、キューイングしていなかったらステップＳ１５に移行する。
【０１００】
ステップＳ１４では、マルチ制御回路４４は、コマンド制御回路５２にシーケンス実行許可を与える。コマンド制御回路５２は、ステップＳ１２と同様に、Node２のイニシエータ１２からコマンドを取って来て、そのコマンドをＣＰＵ３１に実行させ、コマンドの実行を終了したら、ステップＳ１５に処理を進める。
【０１０１】
ステップＳ１５では、マルチ制御回路４４は、Node３のイニシエータ１３のコマンド処理シーケンスが未完了であるか否かを判定する。すなわち、マルチ制御回路４４は、コマンド制御回路５３がコマンドフェッチ要求を受け、未処理のコマンドをキューイングしているか否かを判定し、キューイングしていたらステップＳ１６に移行し、キューイングしていなかったらステップＳ１１に戻る。
【０１０２】
ステップＳ１６では、マルチ制御回路４４は、コマンド制御回路５３にシーケンス実行許可を与える。コマンド制御回路５３は、ステップＳ１２と同様に、Node３のイニシエータ１３からコマンドを取って来て、そのコマンドをＣＰＵ３１に実行させ、コマンドの実行を終了したら、ステップＳ１１に戻る。その後は、同様のシーケンスを繰り返す。
【０１０３】
以上のように、マルチ制御回路４４は、接続されたイニシエータによるコマンド実行の状態を常に管理し、コマンド実行許可を与えるか否かの判定をそれぞれのイニシエータに対して順に平等に行うので、コマンドを実行する頻度のばらつきがイニシエータ間で生じることを防ぐことができる。
【０１０４】
なお、イニシエータ１１〜１３が、コマンドフェッチ要求の際にDOORBELLレジスタへのアクセスを行った場合についても、イニシエータ１１〜１３からコマンドを取って来る際の動作が複雑である点を除けば、同様である。この場合は、イニシエータ１１に関しては、ステップＳ１２に代えて次のような動作を行う。
【０１０５】
すなわち、コマンド制御回路５１は、ORB＿POINTERレジスタＲ１３に格納しているアドレスをイニシエータ１１に送信し、これに応答して、イニシエータ１１は次に参照すべきＯＲＢを指し示すポインタを含んだパケットを送信する。コマンド制御回路５１は、このポインタをパケット処理回路４５に通知し、パケット処理回路４５は、このポインタを含んだパケットを生成してイニシエータ１１に送信する。これに応答して、イニシエータ１１はコマンドを含んだパケットを送信する。ＣＰＵ３１は、このパケットのコマンドを実行する。イニシエータ１２，１３に関しても、それぞれステップＳ１４，Ｓ１６に代えて同様の動作を行えばよい。
【０１０６】
また、イニシエータが３台の場合について説明したが、イニシエータの数はこれには限らない。すなわち、イニシエータの数が、ＩＥＥＥ１３９４規格で規定されている１つのローカルバスに対して接続可能な最大の数（６３台）までの場合には、各イニシエータに対応したコマンド制御回路を備えることにより、同様に処理を行うことができる。
【０１０７】
図７Ａ〜７Ｅは、図２のマルチイニシエータ制御装置２の内部で使用されるパケットのフォーマットを示す説明図である。図７Ａ〜７Ｅにおいて、斜線の領域はリザーブ領域を示す。より具体的には、図７Ａは、ＢＷＲＱ（block write request）パケットのフォーマットを示す。図７Ｂは、ＱＷＲＱ（quadlet write request）パケットのフォーマットを示す。図７Ｃは、ＷＲＳ（write response）パケットのフォーマットを示す。図７Ｄは、ＢＲＲＱ（block read request）パケットのフォーマットを示す。図７Ｅは、ＢＲＲＳ（block read response）パケットのフォーマットを示す。
【０１０８】
図８Ａ〜８Ｅは、ＩＥＥＥ１３９４バス２１〜２３上のパケットのフォーマットを示す説明図である。図８Ａ〜８Ｅは、それぞれ図７Ａ〜７Ｅに示されるフォーマットに対応する。
【０１０９】
リンクコア回路４２は、パケットをバス２１〜２３に送信する際には、図７Ａ〜７Ｅのフォーマットのパケットを受け取り、このパケットからheader＿CRCやdata＿CRC等のＣＲＣ（cyclic redundancy check）コードを求める。リンクコア回路４２は、受け取ったパケットにこれらのＣＲＣコードのフィールドを追加し、得られた図８Ａ〜８Ｅのフォーマットのパケットを物理層コントローラ４１に出力する。
【０１１０】
また、リンクコア回路４２は、パケットをバス２１〜２３から受信する際には、図８Ａ〜８Ｅのフォーマットのパケットを受け取り、このパケットに含まれるheader＿CRC領域やdata＿CRC領域を参照して、ＣＲＣによる誤り検出を行う。リンクコア回路４２は、誤り検出後のパケットを図７Ａ〜７Ｅのフォーマットでパケットフィルタ４３及びパケット処理回路４５に出力する。
【０１１１】
以下では、図２のマルチイニシエータ制御装置２の動作を説明する。まず、ＬＯＧＩＮコマンドの実行について説明する。マルチイニシエータ制御装置２は、イニシエータ１１との間で図９のコマンド処理シーケンスを実行する。イニシエータ１１との間のＬＯＧＩＮコマンドのコマンド処理シーケンスが終了すると、ＣＰＵ３１は、ＬＯＧＩＮしたイニシエータ１１のノード番号に対応する制御レジスタ４８内の１ビットをイネーブルにする。同様にして、イニシエータ１２，１３との間でＬＯＧＩＮ処理が行われる。この一連のＬＯＧＩＮ処理によって、イニシエータ１１，１２，１３に、それぞれコマンド制御回路５１，５２，５３が割り当てられる。
【０１１２】
次に、ＲＥＡＤコマンドの実行について説明する。マルチイニシエータ制御装置２とイニシエータ１１〜１３との間のコマンド処理シーケンスは、コマンド制御回路５１〜５３がコマンドをキューイングすることができるようになっている点を除くと、図１０と同様である。
【０１１３】
イニシエータ１１は、ＲＥＡＤコマンドを実行するためにAGENT＿RESETレジスタＲ１２にＱＷＲＱパケットを送信する。次に、イニシエータ１１は、ＢＷＲＱパケットをイニシエータ１１に対応するコマンド制御回路５１に送信し、ORB＿POINTERレジスタＲ１３にコマンド制御回路５１がアクセスすべきＯＲＢのアドレスを書き込む。マルチ制御回路４４は、コマンド制御回路５１〜５３の状態を管理し、例えばコマンド制御回路５１にシーケンス実行許可を与えると、コマンド制御回路５１はコマンドフェッチを実行する。
【０１１４】
コマンド受信バッファ４７は、イニシエータ１１から受信したコマンドを含むパケットを格納する。ＣＰＵ３１は、コマンド受信バッファ４７からコマンドを読み出し、ＲＥＡＤコマンドを実行するために転送制御回路４６を起動する。転送制御回路４６は、ＤＭＡバス６を介してＤＶＤ−ＲＡＭコントローラ３からＤＶＤ−ＲＡＭディスク５のデータを読み出し、パケット処理回路４５に出力する。パケット処理回路４５は、入力されたデータをパケットにして、リンクコア回路４２に出力する。
【０１１５】
また、イニシエータ１１に対するデータ転送シーケンス実行中に、イニシエータ１２からはＷＲＩＴＥコマンドの、イニシエータ１３からはＲＥＡＤコマンドのコマンドフェッチ要求パケットを受信したとする。この場合、イニシエータ１２に対応するコマンド制御回路５２は、データ転送シーケンスの実行中であっても、イニシエータ１２からのコマンドフェッチ要求を受け取る。すなわち、コマンド制御回路５２は、マルチ制御回路４４からの制御信号に従って、コマンドフェッチのためにアクセスすべきアドレスを格納し、シーケンス実行許可を待つ。同様に、イニシエータ１３に対応するコマンド制御回路５３は、データ転送シーケンスの実行中であっても、イニシエータ１３からのコマンドフェッチ要求を受け取り、シーケンス実行許可を待つ。
【０１１６】
マルチ制御回路４４は、イニシエータ１１に対するデータ転送処理シーケンスが終了すると、コマンド制御回路５２におけるコマンドのキューイング状態、すなわち、コマンド制御回路５２がコマンドフェッチ要求を受けているか否かを調べる。キューイングされていると認識した場合には、マルチ制御回路４４は、コマンド制御回路５２に対してシーケンス実行許可を与える。コマンド制御回路５２は、マルチ制御回路４４からシーケンス実行許可を受けると、イニシエータ１２に対してコマンド処理シーケンスを実行する。パケット処理回路４５は、受信したパケットをコマンド受信バッファ４７に格納する。
【０１１７】
ＣＰＵ３１は、コマンドをコマンド受信バッファ４７から読み出し、ＷＲＩＴＥコマンドを実行するために転送制御回路４６を起動する。転送制御回路４６は、イニシエータ１２からデータを読み出すために、リンクコア回路４２にパケットを転送する。転送制御回路４６は、イニシエータ１２から受信したデータをリンクコア回路４２を介して読み出し、ＤＭＡバス６及びＤＶＤ−ＲＡＭコントローラ３を介して、ＤＶＤ−ＲＡＭディスク５に対して書き込む。指定された量の転送データがＤＶＤ−ＲＡＭディスク５に書き込まれた後、転送制御回路４６は、イニシエータ１２に対してステータス情報を送信して、データ転送処理シーケンスが終了する。
【０１１８】
マルチ制御回路４４は、イニシエータ１２に対するコマンド処理シーケンスが終了すると、コマンド制御回路５３におけるコマンドのキューイング状態を調べ、キューイングされていると認識した場合には、コマンド制御回路５３に対してシーケンス実行許可を与える。コマンド制御回路５３は、マルチ制御回路４４からシーケンス実行許可を受けると、イニシエータ１３に対してコマンドフェッチを行い、コマンド受信バッファ４７に受信パケットを格納する。その後、同様に、ＣＰＵ３１は転送制御回路４６を起動し、ＲＥＡＤコマンドを実行する。
【０１１９】
以上のように、本実施形態のマルチイニシエータ制御装置２では、コマンド制御回路５１，５２，５３は、それぞれが対応するイニシエータに対するコマンド処理シーケンスを行い、マルチ制御回路４４は、コマンド制御回路５１，５２，５３を制御して、複数のイニシエータとの間のシーケンスを可能にする。このため、ＣＰＵ３１は、コマンドフェッチ等のコマンド処理シーケンスを行う必要がない。また、ＣＰＵ３１は、コマンド受信バッファ４７に格納されたコマンドを実行するが、データ転送処理シーケンスは、転送制御回路４６によって行われる。したがって、効率的なシーケンス制御及びデータ転送制御が可能であり、ＣＰＵ３１の負荷を大きくすることなく、複数のイニシエータの管理を行うことができる。
【０１２０】
（変形例）
本変形例においては、マルチ制御回路４４に代わってＣＰＵ３１が、制御レジスタ４８を介してコマンド制御回路５１〜５３にシーケンス実行許可を与え、コマンドをフェッチするタイミングを制御する例について説明する。
【０１２１】
例えば、転送制御回路４６が行うデータ転送処理シーケンスは、基本的にはハードウェアだけで処理を行うことができる。ところが、イニシエータから受信するコマンドの処理には、ハードウェアだけでは処理できず、ファームウェアによる処理が必要な場合がある。また、データ転送処理シーケンスを行っているときであっても、転送データにエラーが生じ、これに対処するためのファームウェアによる処理が必要な場合等がある。
【０１２２】
このような場合、ＣＰＵ３１が実行するファームウェアによる処理は、ハードウェアによる処理に追いつかない場合があるため、ＣＰＵ３１がコマンド処理シーケンスを制御する必要がある。
【０１２３】
図２，３を参照して説明する。イニシエータ１１，１２のＬＯＧＩＮコマンドの処理が終わっているものとする。イニシエータ１１は、コマンド制御回路５１のORB＿POINTERレジスタＲ１３に対して、ＢＷＲＱパケットを送信する。マルチ制御回路４４が、イニシエータ１１に対応するコマンド制御回路５１にシーケンス実行許可を与えると、コマンド制御回路５１は、イニシエータ１１に対してコマンドフェッチを行う。パケット処理回路４５は、このときのイニシエータ１１からの受信パケットをコマンド受信バッファ４７に格納する。ＣＰＵ３１はコマンド受信バッファ４７のコマンドを読み出し、実行する。このコマンドは、ファームウェアによる処理が必要なコマンドであるとする。
【０１２４】
このときＣＰＵ３１は、制御レジスタ４８を介して、コマンド制御回路５２をシーケンス実行許可待ちにする。ＣＰＵ３１がイニシエータ１１のコマンドを実行中に、イニシエータ１２から入力された、例えばＲＥＡＤコマンドのコマンドフェッチ対象のアドレスは、コマンド制御回路５２に格納される。
【０１２５】
ＣＰＵ３１は、イニシエータ１１のコマンド処理が終了すると、マルチ制御回路４４に対してシーケンス実行許可を与え、マルチ制御回路４４は、コマンド制御回路５２に対してシーケンス実行許可を与える。シーケンス実行許可を得たコマンド制御回路５２は、イニシエータ１２のコマンドをフェッチする。パケット処理回路４５は、イニシエータ１２から受信したパケットをコマンド受信バッファ４７に格納する。ＣＰＵ３１はコマンド受信バッファ４７のコマンドを読み出し、イニシエータ１２のコマンドを実行する。
【０１２６】
以上のように、本変形例によると、コマンド処理シーケンスの起動タイミングをＣＰＵ３１から任意に制御することができるため、コマンド処理シーケンスとＣＰＵ３１の動作との間で同期をとることができ、ＣＰＵ３１からのシーケンスの管理が容易となる。
【０１２７】
以上の実施形態では、イニシエータがＤＶＤ−ＲＡＭディスクとの間でデータを転送する例について説明したが、他の形式の光ディスク、磁気ディスク等のデータ記録媒体等との間でデータを転送する場合も同様である。
【図面の簡単な説明】
【０１２８】
【図１】本発明の実施形態に係るマルチイニシエータ制御装置を用いたデータ転送システムのブロック図である。
【図２】本発明の実施形態に係る図１のマルチイニシエータ制御装置のブロック図である。
【図３】図２のマルチ制御回路及びコマンド制御回路のレジスタについての説明図である。
【図４】アドレス拡張についての説明図である。
【図５】イニシエータのノード番号の管理方法を示す説明図である。
【図６】図２のマルチ制御回路におけるコマンド実行処理のシーケンスを示すフローチャートである。
【図７Ａ】図２のマルチイニシエータ制御装置の内部で使用されるＢＷＲＱパケットのフォーマットを示す説明図である。
【図７Ｂ】図２のマルチイニシエータ制御装置の内部で使用されるＱＷＲＱパケットのフォーマットを示す説明図である。
【図７Ｃ】図２のマルチイニシエータ制御装置の内部で使用されるＷＲＳパケットのフォーマットを示す説明図である。
【図７Ｄ】図２のマルチイニシエータ制御装置の内部で使用されるＢＲＲＱパケットのフォーマットを示す説明図である。
【図７Ｅ】図２のマルチイニシエータ制御装置の内部で使用されるＢＲＲＳパケットのフォーマットを示す説明図である。
【図８Ａ】ＩＥＥＥ１３９４バス上のＢＷＲＱパケットのフォーマットを示す説明図である。
【図８Ｂ】ＩＥＥＥ１３９４バス上のＱＷＲＱパケットのフォーマットを示す説明図である。
【図８Ｃ】ＩＥＥＥ１３９４バス上のＷＲＳパケットのフォーマットを示す説明図である。
【図８Ｄ】ＩＥＥＥ１３９４バス上のＢＲＲＱパケットのフォーマットを示す説明図である。
【図８Ｅ】ＩＥＥＥ１３９４バス上のＢＲＲＳパケットのフォーマットを示す説明図である。
【図９】ＬＯＧＩＮコマンドを実行するためのコマンド処理シーケンスを示す説明図である。
【図１０】ＲＥＡＤコマンドを実行するためのコマンド処理シーケンスを示す説明図である。
【図１１】従来のシーケンス処理装置の構成を示すブロック図である。
【符号の説明】
【０１２９】
１  光ディスクドライブ
２  マルチイニシエータ制御装置
３  ＤＶＤ−ＲＡＭコントローラ
４  ヘッド
５  ＤＶＤ−ＲＡＭディスク
６  ＤＭＡバス
１１，１２，１３  イニシエータ（機器）
２１，２２，２３  ＩＥＥＥ１３９４シリアルバス（伝送路）
３１  ＣＰＵ
４１  物理層コントローラ
４２  リンクコア回路
４３  パケットフィルタ
４４  マルチ制御回路
４５  パケット処理回路
４６  転送制御回路
４７  コマンド受信バッファ
４８  制御レジスタ
５１，５２，５３  コマンド制御回路
【図１】
2005018800.tif 000003
【図２】
2005018800.tif 000004
【図３】
2005018800.tif 000005
【図４】
2005018800.tif 000006
【図５】
2005018800.tif 000007
【図６】
2005018800.tif 000008
【図７Ａ】
2005018800.tif 000009
【図７Ｂ】
2005018800.tif 000010
【図７Ｃ】
2005018800.tif 000011
【図７Ｄ】
2005018800.tif 000012
【図７Ｅ】
2005018800.tif 000013
【図８Ａ】
2005018800.tif 000014
【図８Ｂ】
2005018800.tif 000015
【図８Ｃ】
2005018800.tif 000016
【図８Ｄ】
2005018800.tif 000017
【図８Ｅ】
2005018800.tif 000018
【図９】
2005018800.tif 000019
【図１０】
2005018800.tif 000020
【図１１】
2005018800.tif 000021