トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 マルチイニシエータ制御装置及びその方法
【発明者】 【氏名】伊藤 裕隆

【氏名】田平 由弘

【要約】 【課題】2台以上の機器に対するコマンド処理シーケンスを行うことができるマルチイニシエータ制御装置を提供する。

【解決手段】伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御装置であって、受信したパケットを解析し、その結果を出力するパケットフィルタと、各々、対応する機器との間のコマンド処理シーケンスを制御する複数のコマンド制御回路と、前記複数のコマンド制御回路のうちの1つにシーケンス実行許可を与えるマルチ制御回路と、前記許可を与えられたコマンド制御回路が出力する情報を有するパケットを生成して送信させる一方、受信したパケットを前記パケットフィルタが出力する解析結果に従って出力するパケット処理回路とを備える。
【特許請求の範囲】
【請求項1】 伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御装置であって、送信すべきパケットを前記伝送路に送信する一方、前記伝送路からパケットを受信し、誤り検出を行って出力するリンクコア回路と、前記リンクコア回路が受信したパケットを解析し、その結果を出力するパケットフィルタと、各々、対応する機器との間のコマンド処理シーケンスを制御する複数のコマンド制御回路と、前記複数のコマンド制御回路のうちの1つにシーケンス実行許可を与えるマルチ制御回路と、前記許可を与えられたコマンド制御回路が出力する情報を有するパケットを前記送信すべきパケットとして生成し、前記リンクコア回路に出力して送信させる一方、前記リンクコア回路が受信して出力したパケットを前記パケットフィルタが出力する解析結果に従って出力するパケット処理回路と、前記パケット処理回路が出力するパケットに含まれるコマンドを実行するCPU(central processing unit)とを備えたマルチイニシエータ制御装置。
【請求項2】 請求項1に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、対応する機器が出力し、当該対応する機器との間のコマンド処理シーケンスに必要な情報を格納して、これを前記シーケンス実行許可が与えられると出力するものであり、前記マルチ制御回路は、前記リンクコア回路が受信して出力するパケットに含まれる、当該パケットを送信した機器との間のコマンド処理シーケンスに必要な情報を、前記パケットフィルタの出力に応じて、前記複数のコマンド制御回路のうち当該機器に対応するものに出力して格納させるものであり、前記パケット処理回路は、前記シーケンス実行許可を与えられたコマンド制御回路が出力する情報を有するパケットを生成して出力し、これに応答して当該コマンド制御回路に対応する機器が出力したパケットを、受信して出力するものであることを特徴とするマルチイニシエータ制御装置。
【請求項3】 請求項1に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、対応する機器から送信されたコマンドフェッチ要求パケットの情報を格納し、前記マルチ制御回路から前記シーケンス実行許可が与えられた場合に、当該機器に対してコマンドフェッチ動作を行うことを特徴とするマルチイニシエータ制御装置。
【請求項4】 請求項3に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、データ転送処理シーケンスの実行中であっても、対応する機器からのコマンドフェッチ要求を受け取ることを特徴とするマルチイニシエータ制御装置。
【請求項5】 請求項1に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、コマンド処理シーケンスを行うためのアドレスを格納するレジスタを有するものであり、前記レジスタのアドレスは、当該レジスタが属するコマンド制御回路の対応する機器のノード番号に応じて、前記複数のコマンド制御回路のうちの基準とするもののレジスタのアドレスを、所定の値を単位としてアドレス拡張して得られたものであることを特徴とするマルチイニシエータ制御装置。
【請求項6】 請求項1に記載のマルチイニシエータ制御装置において、前記マルチ制御回路は、コマンド処理シーケンスが終了する毎に前記複数の機器から1つを所定の順で選択して、前記複数のコマンド制御回路のうち選択された機器に対応したものに前記シーケンス実行許可を与えることを特徴とするマルチイニシエータ制御装置。
【請求項7】 請求項1に記載のマルチイニシエータ制御装置において、前記パケット処理回路が当該マルチイニシエータ制御装置の外部との間で行うデータ転送の制御を行う転送制御回路を更に備え、前記パケット処理回路は、前記パケットフィルタが出力するパケットから転送すべきデータを取り出して前記転送制御回路に出力する一方、前記転送制御回路に転送されて来たデータからパケットを生成して前記リンクコア回路に出力することを特徴とするマルチイニシエータ制御装置。
【請求項8】 請求項1に記載のマルチイニシエータ制御装置において、前記CPUが前記複数のコマンド制御回路にシーケンス実行許可を与えることができるように構成されていることを特徴とするマルチイニシエータ制御装置。
【請求項9】 請求項1に記載のマルチイニシエータ制御装置において、前記複数の機器のそれぞれのノード番号と、ノード番号を識別するためのフィールドにおけるビットの位置とが対応付けられており、前記機器のそれぞれを、前記フィールドにおけるビットの位置で識別するように構成されていることを特徴とするマルチイニシエータ制御装置。
【請求項10】 伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御方法であって、前記複数の機器のうちの1つからコマンドフェッチ要求を受けたことを記憶しているか否かを判定するステップと、コマンドフェッチ要求を受けたことを記憶していると判定したときは、当該機器からコマンドをフェッチして実行するステップとを備え、前記複数の機器から1つを所定の順で選択することを繰り返し、選択された機器について前記判定を行うステップと前記コマンドを実行するステップとを行うマルチイニシエータ制御方法。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、コンピュータと周辺装置等との間でコマンドやデータを伝送路を介して伝送する際に使用されるプロトコルに対するシーケンス処理技術に関する。
【0002】
【従来の技術】AV(audio-visual)機器やコンピュータ機器等を接続する次世代インターフェイスとして、IEEE1394方式が注目されている。これは、IEEE1394方式に、非同期(asyncronous)通信とアイソクロナス(isochronous)通信とが定義されているためである。非同期通信は、コンピュータと記録メディア等との間のデータ転送のように、リアルタイム性よりも信頼性をより要求される通信に用いられる。アイソクロナス通信は、動画等のAVデータのような、信頼性よりもリアルタイム性が要求される通信に用いられる。したがって、IEEE1394方式を用いて、例えばコンピュータデータをDVD−RAM(digital versatile disc - random access memory)ドライブ装置等に格納したり、DVD−RAMドライブ装置から記録済みのコンピュータデータを読み出したりする際には、一般的に非同期通信によりデータを伝送する。
【0003】コンピュータ等の機器(イニシエータ(initiator))と周辺装置(ターゲット(target))との間でIEEE1394方式の非同期通信を行う場合のプロトコルとして、SBP−2(serial bus protocol-2)がある。以下、コンピュータがこのSBP−2に従ってDVD−RAMドライブ等のターゲットからデータを読み込む場合における、コマンド処理シーケンスについて説明する。
【0004】SBP−2のコマンドは、READ、WRITE等のコマンド系のコマンドと、LOGIN、QUERY LOGIN、ABORT TASK、ABORTTASK SET等のマネージメント系(タスク管理系)のコマンドとに分けることができる。
【0005】図9は、マネージメント系のコマンドであるLOGINコマンドを実行するためのコマンド処理シーケンスを示す説明図である。図9を参照して、LOGINコマンドのコマンド処理シーケンスを説明する。
【0006】(1)イニシエータは、QRRQ(quadlet read request)パケットを発行することにより、ターゲットの固有情報(機器情報等)の取得を行う。一般にこの固有情報全体はコンフィグレーションROM(configROM)と呼ばれる領域に格納されており、この固有情報にはターゲットのMANAGEMENT_AGENTレジスタのアドレスも含まれている。
【0007】(2)ターゲットは、イニシエータからのQRRQパケットに応答して、configROMのデータをQRRS(quadlet read response)パケットとしてイニシエータに返す。QRRQパケット及びQRRSパケットが送信されるこれらの処理(1),(2)は、イニシエータがconfigROMのデータを全て取得するまで続く。
【0008】(3)イニシエータは、BWRQ(block write request)パケットを発行して、ORB(operation request block)を格納しているメモリのアドレスをMANAGEMENT_AGENTレジスタに書き込む。ORBは、イニシエータによって予め用意されており、MANAGEMENT_AGENTレジスタは、ターゲットのCSR(control andstatus register)空間に定義されている。
【0009】(4)ターゲットは、イニシエータからのBWRQパケットに応答して、WRS(write response)パケットをイニシエータに返す。
【0010】(5)ターゲットは、イニシエータに対してBRRQ(block read request)パケットを発行して、イニシエータがORBをターゲットに送信することを要求する。ORBは、MANAGEMENT_AGENTレジスタに格納されたアドレスに位置している。
【0011】(6)イニシエータは、ターゲットからのBRRQパケットに応答して、BRRS(block read response)パケットをターゲットに返す。BRRSパケットのデータフィールドには、ORBが格納されている。このようにして、ORBがイニシエータからターゲットに送信される。
【0012】(7)ターゲットは、イニシエータからORBを受信し、受信したORBの内容を解析する。
【0013】(8)ターゲットは、受信したORBがLOGINコマンドを表すことがわかると、LOGINコマンドを実行する。コマンド実行の際のLogin ResponseにCOMMAND_AGENTレジスタのベースアドレスが示されている。
【0014】(9)LOGINコマンドの実行が終了した後、ターゲットは、LOGINコマンドの実行結果を示すステータス情報を作成する。
【0015】(10)ターゲットは、BWRQパケットを発行することにより、ステータス情報をイニシエータに送信する。ステータス情報は、ORBによって指定される所定のアドレス(イニシエータのStatus_FIFOアドレス)に格納される。
【0016】(11)イニシエータは、ターゲットからのBWRQパケットに応答して、WRSパケットをターゲットに返す。
【0017】(12)ターゲットは、イニシエータからのWRSパケットのrCodeがresp_completeであるか否かを判定する。イニシエータからのWRSパケットのrCodeがresp_completeである場合は、LOGINコマンドに関する一連のコマンド処理シーケンスが完了する。
【0018】図10は、コマンド系のREADコマンドを実行するためのコマンド処理シーケンスを示す説明図である。図10のシーケンスは、図9を参照して説明したLOGINコマンドの処理シーケンスが終了した後に実行される。図10を参照して、READコマンドのコマンド処理シーケンスを説明する。
【0019】(21)イニシエータは、READコマンドを表すORBを作成する。READコマンドを表すORBは、データ数、最大パケット長、転送方向、転送方法等、READコマンドを実行するために必要な情報を定義する。
【0020】(22)イニシエータは、QWRQ(quadlet write request)パケットをターゲットのAGENT_RESETレジスタに書き込み、初期化させる。なお、AGENT_RESETレジスタは、ターゲットのCSR空間に定義されている。
【0021】(23)ターゲットは、イニシエータからのQWRQパケットに応答して、WRSパケットをイニシエータに返す。
【0022】(24)イニシエータは、BWRQパケットを発行することにより、ORBを格納しているメモリのアドレスをORB_POINTERレジスタに書き込む。なお、ORB_POINTERレジスタは、ターゲットのCSR空間に定義されている。
【0023】(25)ターゲットは、イニシエータからのBWRQに応答して、WRSをイニシエータに返す。
【0024】(26)ターゲットは、BRRQパケットを発行して、イニシエータがORBをターゲットに送信することを要求する。ORBは、ORB_POINTERレジスタに格納されたアドレス、すなわち、イニシエータにおけるそのメモリアドレスに位置している。
【0025】(27)イニシエータは、ターゲットからのBRRQパケットに応答して、BRRSパケットをターゲットに返す。BRRSパケットのデータフィールドにはORBが格納されている。このようにして、ORBがイニシエータからターゲットに送信される。
【0026】(28)ターゲットは、イニシエータからORBを受信し、受信したORBの内容を解析する。
【0027】(29)ターゲットは、受信したORBがREADコマンドを表すことがわかると、READコマンドを実行する。READコマンドの実行により、以下の(30)、(31)が繰り返される。これは、転送すべきデータのサイズが大きい場合には、そのデータを複数のパケットに分割して転送するためである。転送すべきデータは、ターゲットによって用意される。
【0028】(30)ターゲットは、BWRQパケットを発行して、ORBによって指定されるアドレスにデータを格納する。
【0029】(31)イニシエータは、ターゲットからのBWRQパケットに応答して、WRSパケットをターゲットに返す。処理(30)及び(31)は1つのトランザクションを構成する。1つのトランザクションが正常に終了したことが確認された後に、次のトランザクションが実行される。
【0030】(32)データ転送処理シーケンスが正常に終了した後、ターゲットは、READコマンドの実行結果を示すステータス情報を作成する。
【0031】(33)ターゲットは、BWRQパケットを発行することにより、ステータス情報をイニシエータに送信する。ステータス情報は、ORBによって指定される所定のアドレスに格納される。
【0032】(34)イニシエータは、ターゲットからのBWRQパケットに応答して、WRSパケットをターゲットに返す。
【0033】(35)ターゲットは、イニシエータからのWRSパケットのrCodeがresp_completeであるか否かを判定する。イニシエータからのWRSパケットのrCodeがresp_completeである場合には、READコマンドに関する一連のコマンド処理シーケンスが完了する。
【0034】なお、図には示されていないが、図9,10において、ターゲットは、イニシエータからのパケットを受信すると、ACK(Acknowledge)パケットをイニシエータに返す。同様に、イニシエータは、ターゲットからのパケットを受信すると、ACKパケットをターゲットに返す。
【0035】イニシエータ及びターゲットは、書き込み要求パケット(例えば、BWRQパケットやQWRQパケット)の受信に成功した場合には、パケットの受信に成功したことを示す“Ack_complete”というコードを有するACKパケットを返す。この場合、WRSパケットを返さず、次の処理に進む。イニシエータ及びターゲットは、“Ack_pending”というコードを有するACKパケットを返す場合には、WRSパケットを返す。また、イニシエータ及びターゲットは、パケットを受信することができない状態である場合には、パケットを受信することができない状態であることを示す“Ack_busy”というコードを有するACKパケットを返す。データ転送シーケンスにおいて、ターゲットからのBWRQパケットに対してイニシエータが“Ack_busy”というコードを有するACKパケットをターゲットに返した場合には、ターゲットはBWRQパケットをイニシエータに再送信する。
【0036】以上のようにして、イニシエータとターゲットとの間でデータ転送処理を行うことができる。SBP−2では、1つのバス上で、ターゲット1台に対してイニシエータを最大63台接続することが可能である。
【0037】図11はSBP−2を処理する従来のシーケンス処理装置90の構成を示すブロック図である。物理層コントローラ91は、IEEE1394バス20の初期化、アービトレーション、バイアス電圧の制御等の機能を有している。リンクコア回路92は、物理層コントローラ91を介してバス20上のパケットを受信する。リンクコア回路92は、パケットに対して誤り検出符号の作成/検出、パケットへの符号の付加、コードの検出(例えば、ACKパケットのコード検出)等を行う。またリンクコア回路92は、物理層コントローラ91を介してパケットをバス20に出力する。更に、リンクコア回路92は、パケットの転送が失敗した場合にそのパケットの転送を再度試みるリトライ機能を有している。
【0038】パケットフィルタ93は、リンクコア回路92が出力したパケットを受け取り、このパケットのヘッダフィールドの内容を解析する。パケットフィルタ93は、その解析結果に応じて、シーケンス制御回路99又は転送制御回路96に制御信号を与えるとともに、受信パケットをパケット処理回路95に出力する。パケット処理回路95は、シーケンス制御回路99又は転送制御回路96から制御され、入力されたパケットを処理し、コマンド受信バッファ97へのコマンドの出力、又はDMA(direct memory access)バス6を介して受信データの外部への出力を行う。シーケンス制御回路99は、接続された1台のイニシエータに対するコマンド処理シーケンスの実行及び制御を行う。
【0039】このように、図11の従来のシーケンス処理装置は、1台のイニシエータとの間のコマンド処理シーケンスを行っていた。
【0040】
【発明が解決しようとする課題】従来のシーケンス処理装置において2台以上のイニシエータのシーケンス処理を行うには、2台目以降のイニシエータに対するシーケンス処理、及びそれぞれのイニシエータの管理を、全てファームウェアで行う必要があった。この場合、CPU(central processing unit)にかかる負荷が非常に大きくなる。
【0041】特に、DVD−RAM等の光ディスク装置によって取り扱われる大量のデータを転送する必要がある場合には、CPUの負荷が飛躍的に増大する。その結果、CPUによって実行されるファームウェアのオーバーヘッドが増大し、IEEE1394方式を採用することによって本来実現されるべき、高速シリアルバスインターフェイスとしての高い実効転送レートを実現することが非常に困難になる。また、ファームウェアにこのような処理を全てさせると、CPUの負荷が大きくなるため、シーケンス処理装置を光ディスク装置等の他のシステムへ組み込むことは不可能であった。
【0042】このように、従来のシーケンス処理装置は、実際にはイニシエータが1台の場合にしか対応できなかった。このため、拡張性が低く、複数のイニシエータが接続されたネットワーク環境ではあまり効果的に使用することができなかった。
【0043】本発明は、2台以上の機器に対するコマンド処理シーケンスを行うことができるマルチイニシエータ制御装置を提供することを目的とする。
【0044】
【課題を解決するための手段】前記課題を解決するため、請求項1の発明が講じた手段は、伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御装置であって、送信すべきパケットを前記伝送路に送信する一方、前記伝送路からパケットを受信し、誤り検出を行って出力するリンクコア回路と、前記リンクコア回路が受信したパケットを解析し、その結果を出力するパケットフィルタと、各々、対応する機器との間のコマンド処理シーケンスを制御する複数のコマンド制御回路と、前記複数のコマンド制御回路のうちの1つにシーケンス実行許可を与えるマルチ制御回路と、前記許可を与えられたコマンド制御回路が出力する情報を有するパケットを前記送信すべきパケットとして生成し、前記リンクコア回路に出力して送信させる一方、前記リンクコア回路が受信して出力したパケットを前記パケットフィルタが出力する解析結果に従って出力するパケット処理回路と、前記パケット処理回路が出力するパケットに含まれるコマンドを実行するCPU(central processing unit)とを備えたものである。
【0045】請求項1の発明によると、マルチイニシエータ制御装置からパケットを送信し、これに応答して機器が送信するパケットに含まれるコマンドを、マルチイニシエータ制御装置は実行することができる。このようなコマンド処理シーケンスの実行は、コマンド制御回路によって行われるため、CPUがコマンド処理シーケンスの実行に関与することはない。また、マルチイニシエータ制御装置がいずれの機器との間のコマンド処理シーケンスを行うかを、マルチ制御回路が制御する。このため、CPUの負荷を低減することが可能になる。
【0046】また、請求項2の発明では、請求項1に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、対応する機器が出力し、当該対応する機器との間のコマンド処理シーケンスに必要な情報を格納して、これを前記シーケンス実行許可が与えられると出力するものであり、前記マルチ制御回路は、前記リンクコア回路が受信して出力するパケットに含まれる、当該パケットを送信した機器との間のコマンド処理シーケンスに必要な情報を、前記パケットフィルタの出力に応じて、前記複数のコマンド制御回路のうち当該機器に対応するものに出力して格納させるものであり、前記パケット処理回路は、前記シーケンス実行許可を与えられたコマンド制御回路が出力する情報を有するパケットを生成して出力し、これに応答して当該コマンド制御回路に対応する機器が出力したパケットを、受信して出力するものである。
【0047】請求項2の発明によると、複数のコマンド制御回路を効率よく制御して、コマンド処理シーケンスの一連のトランザクションを処理することができる。
【0048】また、請求項3の発明では、請求項1に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、対応する機器から送信されたコマンドフェッチ要求パケットの情報を格納し、前記マルチ制御回路から前記シーケンス実行許可が与えられた場合に、当該機器に対してコマンドフェッチ動作を行うものである。
【0049】請求項3の発明によると、コマンド制御回路は、各機器から受け取ったコマンドフェッチ要求パケットの情報を保持しているので、シーケンス実行許可が与えられるとただちにコマンドフェッチ動作に移行することができる。このため、効率的、かつ高速な動作を行うことができる。
【0050】また、請求項4の発明では、請求項3に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、データ転送処理シーケンスの実行中であっても、対応する機器からのコマンドフェッチ要求を受け取るものである。
【0051】請求項4の発明によると、ある機器がコマンド実行中であっても、他の機器のコマンドフェッチ要求を処理することができる。このため、コマンド処理の状態に関係なく、それぞれの機器からのアクセスに対応することができる。
【0052】また、請求項5の発明では、請求項1に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、コマンド処理シーケンスを行うためのアドレスを格納するレジスタを有するものであり、前記レジスタのアドレスは、当該レジスタが属するコマンド制御回路の対応する機器のノード番号に応じて、前記複数のコマンド制御回路のうちの基準とするもののレジスタのアドレスを、所定の値を単位としてアドレス拡張して得られたものである。
【0053】請求項5の発明によると、基準とするコマンド制御回路のレジスタのアドレスをアドレス拡張し、レジスタのアドレスを求めるため、接続される機器が複数の場合であっても、それぞれの機器がアクセスするレジスタのアドレスをCPUが管理する必要がない。このため、CPUの負荷が低減され、機器が1台の場合と同様に高速に動作することができる。
【0054】また、請求項6の発明では、請求項1に記載のマルチイニシエータ制御装置において、前記マルチ制御回路は、コマンド処理シーケンスが終了する毎に前記複数の機器から1つを所定の順で選択して、前記複数のコマンド制御回路のうち選択された機器に対応したものに前記シーケンス実行許可を与えるものである。
【0055】請求項6の発明によると、接続されている各機器について順にコマンド実行許可を与えるか否かを判定するので、機器間のコマンド実行頻度のばらつきを小さくし、コマンドを実行する機会が一部の機器に偏らないようにすることができる。
【0056】また、請求項7の発明は、請求項1に記載のマルチイニシエータ制御装置において、前記パケット処理回路が当該マルチイニシエータ制御装置の外部との間で行うデータ転送の制御を行う転送制御回路を更に備え、前記パケット処理回路は、前記パケットフィルタが出力するパケットから転送すべきデータを取り出して前記転送制御回路に出力する一方、前記転送制御回路に転送されて来たデータからパケットを生成して前記リンクコア回路に出力するものである。
【0057】請求項7の発明によると、データ転送処理シーケンスは転送制御回路によって制御されるため、CPUがデータ転送処理シーケンスの実行に関与することはない。このため、データ転送処理シーケンスの実行中におけるCPUの負荷を低減し、データ転送を高速に行うことができる。
【0058】また、請求項8の発明は、請求項1に記載のマルチイニシエータ制御装置において、前記CPUが前記複数のコマンド制御回路にシーケンス実行許可を与えることができるように構成されているものである。
【0059】請求項8の発明によると、CPUがコマンドフェッチの動作タイミングを制御することが可能なため、ファームウェアからのシーケンス制御に対する自由度が増し、ファームウェアの仕様に同期化させてシーケンス処理を行うことが可能となる。
【0060】また、請求項9の発明は、請求項1に記載のマルチイニシエータ制御装置において、前記複数の機器のそれぞれのノード番号と、ノード番号を識別するためのフィールドにおけるビットの位置とが対応付けられており、前記機器のそれぞれを、前記フィールドにおけるビットの位置で識別するように構成されているものである。
【0061】請求項9の発明によると、各機器のノード番号を1ビットで簡潔に表現するため、より多くの機器が接続された場合であっても、機器の管理を小規模の回路で行うことが可能となる。
【0062】また、請求項10の発明は、伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御方法であって、前記複数の機器のうちの1つからコマンドフェッチ要求を受けたことを記憶しているか否かを判定するステップと、コマンドフェッチ要求を受けたことを記憶していると判定したときは、当該機器からコマンドをフェッチして実行するステップとを備え、前記複数の機器から1つを所定の順で選択することを繰り返し、選択された機器について前記判定を行うステップと前記コマンドを実行するステップとを行うものである。
【0063】請求項10の発明によると、接続されている各機器について順にコマンド実行許可を与えるか否かを判定するので、コマンドを実行する機会が一部の機器に偏らないようにすることができる。
【0064】
【発明の実施の形態】以下、本発明の実施の形態について、図面を参照しながら説明する。なお、ここで示す実施の形態によって本発明の技術的範囲が限定されるものではない。
【0065】図1は、本発明の実施形態に係るマルチイニシエータ制御装置を用いたデータ転送システムのブロック図である。図1のデータ転送システムは、光ディスクドライブ1と、光ディスクドライブ1に接続されている、機器としてのイニシエータ11,12,13とを備えている。イニシエータ11〜13は、例えばパーソナルコンピュータ(PC)である。光ディスクドライブ1は、ターゲットとしてのマルチイニシエータ制御装置2と、DVD−RAMコントローラ3と、ヘッド4と、DVD−RAMディスク5とを備えている。
【0066】各イニシエータ11,12,13とマルチイニシエータ制御装置2との間は、それぞれ伝送路としてのIEEE1394シリアルバス(以下では単にバスと称する)21,22,23を介して接続されている。マルチイニシエータ制御装置2は、DMAバス6を介してDVD−RAMコントローラ3に接続されている。DVD−RAMコントローラ3は、ヘッド4を介してDVD−RAMディスク5から読み出されたデータに復調等の信号処理を行い、マルチイニシエータ制御装置2に転送し、また、マルチイニシエータ制御装置2から転送されてきたデータに変調等の信号処理を行い、ヘッド4を介してDVD−RAMディスク5に書き込む。
【0067】図2は、本発明の実施形態に係る図1のマルチイニシエータ制御装置のブロック図である。図2において、マルチイニシエータ制御装置2は、CPU31と、物理層コントローラ(PHY)41と、リンクコア回路(LINK)42と、パケットフィルタ43と、マルチ制御回路44と、パケット処理回路45と、転送制御回路46と、コマンド受信バッファ47と、制御レジスタ48と、コマンド制御回路51,52,53とを備えている。
【0068】図2において、CPU31、リンクコア回路42、マルチ制御回路44、転送制御回路46、コマンド制御回路51〜53は、制御レジスタ48に対してデータの書き込み、読み出しをすることができる。また、パケットフィルタ43は、制御レジスタ48の内容を読み出しすることができる。以下では例として、SBP−2(serial bus protocol-2)をプロトコルとして用いて、イニシエータとターゲットとの間でデータ転送を行うものとして説明する。
【0069】物理層コントローラ41は、バス21〜23の初期化、アービトレーション、バイアス電圧の制御等の機能を有している。物理層コントローラ41は、バス21〜23上の電気信号をパケットに変換してリンクコア回路42に出力したり、リンクコア回路42から受け取ったパケットを電気信号に変換してバス21〜23に出力する。
【0070】リンクコア回路42は、物理層コントローラ41からパケットを受信する。リンクコア回路42は、受信したパケットに対して誤り検出符号の検出、コードの検出(例えば、ACKパケットのコード検出)等を行った後、パケットフィルタ43及びパケット処理回路45に出力する。また、リンクコア回路42は、パケット処理回路45から受け取った、送信すべきパケットに対する誤り検出符号の作成及び付加を行い、物理層コントローラ41に送信する。更に、リンクコア回路42は、パケットの転送に失敗した場合に、そのパケットの転送を再度試みるリトライ機能を有している。
【0071】パケットフィルタ43は、リンクコア回路42からパケットを受け取り、そのパケットのヘッダフィールドの内容を解析する。パケットフィルタ43は、その解析結果に応じて、このパケットをコマンド受信バッファ47に格納するべきか否かを決定し、パケット処理回路45に通知する。また、パケットフィルタ43は、受信したパケットの送信元のイニシエータのノード番号をエンコードし、マルチ制御回路44及び転送制御回路46に制御信号として出力する。更に、パケットフィルタ43は、受け取ったパケットに含まれる情報をマルチ制御回路44及び転送制御回路46に出力する。
【0072】マルチ制御回路44は、リンクコア回路42が受信したパケットに含まれる情報をパケットフィルタ43から受け取り、パケットフィルタ43が出力する制御信号に応じて、コマンド制御回路51〜53に格納させる。また、マルチ制御回路44は、コマンド制御回路51〜53のうちの1つにシーケンス実行許可を与え、許可を与えられたコマンド制御回路が出力する情報をパケット処理回路45に出力する。
【0073】パケット処理回路45は、マルチ制御回路44の制御の下で動作し、パケットフィルタ43がコマンド受信バッファ47に格納するべきであると決定したパケットをコマンド受信バッファ47に格納させる。コマンド受信バッファ47に格納されたパケットは、CPU31から読み出し可能な状態となる。また、パケット処理回路45は、マルチ制御回路44から受け取った情報を含むパケットを生成し、送信すべきパケットとしてリンクコア回路42に出力する。
【0074】転送制御回路46は、CPU31が出力するREAD/WRITE等の転送コマンド実行要求を、制御レジスタ48を介して受け取り、パケット処理回路45とDVD−RAMコントローラ3との間でパケットを転送する。
【0075】例えば、READコマンドを実行する場合には、転送制御回路46は、CPU31からの実行要求に基づいて、DVD−RAMディスク5に記録されたデータをDVD−RAMコントローラ3及びDMAバス6を介して読み出し、パケット処理回路45に出力する。パケット処理回路45は、転送制御回路46から受け取ったデータを分割して複数のパケットに格納し、これらのパケットをリンクコア回路42及び物理層コントローラ41を介してバス21〜23に出力する。
【0076】また、WRITEコマンドを実行する場合には、パケット処理回路45は、バス21〜23から物理層コントローラ41及びリンクコア回路42を介してパケットを受け取り、パケットからデータを取り出して転送制御回路46に出力する。転送制御回路46は、受け取ったデータをDMAバス6を介してDVD−RAMコントローラ3に出力し、DVD−RAMディスク5に記録させる。このようなパケット生成処理及びパケット転送処理は、転送制御回路46によって制御される。
【0077】このように、転送制御回路46がデータ転送処理シーケンスを行うので、CPU31がデータ転送処理シーケンスの実行に関与することはない。このため、データ転送処理シーケンスにおけるCPU31の負荷を低減することが可能になり、IEEE1394に準拠した高速データ転送を実現することができる。
【0078】IEEE1394では、転送速度に応じて1パケットで転送可能なデータ長(最大ペイロードサイズ)が規定されている。本実施形態では、転送速度はS400(転送速度約400Mbit/sec)であるとし、この場合、1パケットで転送可能なデータ長は2048バイトである。
【0079】コマンド制御回路51,52,53は、それぞれイニシエータ11,12,13に対応しており、対応するイニシエータからコマンドフェッチ要求を受け取って、そのイニシエータとの間のコマンド処理シーケンスを制御する。マルチ制御回路44は、コマンド制御回路51〜53のシーケンス実行を管理している。マルチ制御回路44及びコマンド制御回路51〜53は、SBP−2におけるコマンド処理シーケンスに必要なエージェントレジスタ(AGENT_REGISTER)を有している。
【0080】図3は、図2のマルチ制御回路44及びコマンド制御回路51のレジスタについての説明図である。コマンド制御回路52,53のレジスタの構成は、コマンド制御回路51と同様であるので図示を省略する。
【0081】マルチ制御回路44は、エージェントレジスタとして、MANAGEMENT_AGENTレジスタR10を有している。MANAGEMENT_AGENTレジスタR10は、LOGIN等のマネージメント系のコマンドをフェッチするためのアドレスを格納する。コマンド制御回路51は、エージェントレジスタとしてAGENT_STATEレジスタR11、AGENT_RESETレジスタR12、ORB_POINTERレジスタR13、DOORBELLレジスタR14及びUNSOLICITED_STATUSレジスタR15を有している。コマンド制御回路52,53も同様のレジスタを有している。コマンド制御回路51〜53のレジスタは、コマンド系のコマンドをフェッチするためのアドレス等を格納する。
【0082】コマンド制御回路51〜53は、それぞれ、対応するイニシエータ11〜13との間のコマンド処理シーケンスに必要な情報を格納する。このような情報には、イニシエータ11〜13のうち対応するものが出力するコマンドフェッチ要求パケットの情報と、DOORBELLレジスタへのアクセスがあったことを示す情報とがある。
【0083】コマンド制御回路51〜53は、それぞれの対応するイニシエータ11〜13からコマンドフェッチ要求パケットの情報を受信して保持し、マルチ制御回路44からシーケンス実行許可が得られていないパケットの情報をキューイング、すなわち、未処理のコマンドをキューイングすることができる。コマンドフェッチ要求パケットは、例えばBWRQパケット、QWRQパケットであって、BWRQパケットの場合は、コマンドフェッチ対象のアドレスを含んでいる。
【0084】イニシエータ11〜13が、コマンド制御回路51〜53のそれぞれに対してコマンドフェッチ要求を行う際のアクセス方法としては、次の2種類がある。すなわち、BWRQパケットを用いてコマンドフェッチ対象のアドレス(ORB(operation request block)の格納先のアドレス)を書き込むORB_POINTERレジスタへのアクセスと、QWRQパケットを用いたDOORBELLレジスタへのアクセスとである。コマンド制御回路51は、コマンドフェッチ対象のアドレスをORB_POINTERレジスタR13に格納し、DOORBELLレジスタR14へのアクセスがあった場合には、アクセスがあったことを記憶、すなわち、このアクセスがあったことを示す情報を格納する。コマンド制御回路52,53に関しても同様である。
【0085】図4は、アドレス拡張についての説明図である。コマンド制御回路51の各エージェントレジスタのアドレスは、ベースアドレス(Base Address)を基準とし、これにそれぞれ所定の値を加算したアドレスに設定しておく。ベースアドレスは、コマンド制御回路51のAGENT_STATEレジスタR11のアドレスである。コマンド制御回路52の各エージェントレジスタのアドレスは、コマンド制御回路51の同種のレジスタのアドレスにそれぞれ20h(hは16進数表示を表す)を加算したアドレスとし、コマンド制御回路53の各エージェントレジスタのアドレスは、コマンド制御回路51の同種のレジスタのアドレスにそれぞれ40hを加算したアドレスとしておく。すなわち、コマンド制御回路51,52,53のレジスタのアドレス領域は、それぞれベースアドレス、ベースアドレス+20h、ベースアドレス+40hから始まる。
【0086】パケットフィルタ43は、コマンド処理シーケンスにおいて、イニシエータ11〜13から受信したパケットを解析し、パケットの送信元のイニシエータがアクセスしてきたアドレスとエージェントレジスタのアドレスとを比較し、マルチ制御回路44に通知する。
【0087】また、パケットフィルタ43は、LOGINしているイニシエータのノード番号に対応付けて、例えば20h間隔でアドレス拡張して受信パケットを解析し、その結果を制御信号としてマルチ制御回路44に出力する。パケットフィルタ43には、CPU31からベースアドレス及びイニシエータ11〜13のノード番号が予め設定されている。
【0088】パケットフィルタ43は、パケットの送信元がイニシエータ11である場合は、そのノード番号に基づき、アドレス拡張を行わない。この場合、パケットフィルタ43は、ベースアドレスから決定されるエージェントレジスタのアドレスと受信したアドレスとを比較し、アクセスされるレジスタを示す制御信号を生成して、マルチ制御回路44に出力する。また、パケットフィルタ43は、パケットの送信元がイニシエータ12である場合は、そのノード番号に基づき、イニシエータ11のベースアドレスに20hを加算したアドレスから決定されるエージェントレジスタのアドレスと受信したアドレスとを比較し、アクセスされるレジスタを示す制御信号を生成して、マルチ制御回路44に出力する。更に、パケットフィルタ43は、パケットの送信元がイニシエータ13である場合は、そのノード番号に基づき、イニシエータ11のベースアドレスに40hを加算したアドレスから決定されるエージェントレジスタのアドレスと受信したアドレスとを比較し、アクセスされるレジスタを示す制御信号を生成して、マルチ制御回路44に出力する。
【0089】マルチ制御回路44は、コマンド制御回路51〜53のレジスタのうちパケットフィルタ43が出力する制御信号で示されたものにアクセスして、コマンドフェッチ要求パケットの情報を必要に応じて格納させる。
【0090】このようにエージェントレジスタのアドレスを管理することにより、CPU31からのアドレス管理が簡潔になる。受信したパケットの送信元のイニシエータのノード番号からアドレスを求めるので、IEEE1394規格で1つのローカルバスに対して接続可能な最大のノード数である63ノードのイニシエータを接続した場合であっても、エージェントレジスタのアドレス管理のために回路規模を大きくする必要がない。なお、ベースアドレスからのアドレス拡張を20h単位で行う場合について説明したが、アドレス拡張の単位は他の値としてもよい。
【0091】図5は、イニシエータのノード番号の管理方法を示す説明図である。本実施形態においては、マルチイニシエータ制御装置2に接続されているイニシエータの数は3台であるので、これらを3ビットのフィールドで識別することとする。すなわち、ビットN1が“1”であるとき、イニシエータ11を示し、同様にビットN2又はN3が“1”であるとき、それぞれイニシエータ12又は13を示しているものとする。
【0092】例えば、イニシエータ11,12,13のノード番号がそれぞれffc0h,ffc1h,ffc2hであるとし、受信したパケットにノード番号ffc0hが指定されているとする。この場合、パケットフィルタ43は、“001”をマルチ制御回路44に出力して、パケットがイニシエータ11から送られて来たことを通知する。
【0093】また、パケット処理回路45は、マルチ制御回路44が出力するデータの3ビットのフィールドに表されたノード番号を、ffc0h等の16ビットのノード番号に変換して、パケットに組み込む。
【0094】このように、16ビットのノード番号を1ビットで表現し、管理することになるので、ノード番号を扱うマルチ制御回路44等の回路を簡略化することができる。ここで、イニシエータ11〜13のノード番号と、ビットN1,N2,N3の位置との対応関係は、1対1の関係であればどのようなものであってもよい。もちろん、マルチ制御回路44等において、各ノード番号をそのまま用いるようにしてもよい。
【0095】図6は、図2のマルチ制御回路44におけるコマンド実行処理のシーケンスを示すフローチャートである。ここでは、イニシエータ11,12,13のノード番号がそれぞれNode1,Node2,Node3であるものとして説明する。また、イニシエータ11〜13は、コマンド制御回路51〜53のそれぞれに対するコマンドフェッチ要求の際に、ORB_POINTERレジスタへのアクセスを行うものとして説明する。
【0096】マルチ制御回路44は、まず、ステップS11において、Node1のイニシエータ11のコマンド処理シーケンスが未完了であるか否かを判定する。すなわち、マルチ制御回路44は、コマンド制御回路51がコマンドフェッチ要求を受け、未処理のコマンドをキューイングしているか否かを判定し、キューイングしていたらステップS12に移行し、キューイングしていなかったらステップS13に移行する。
【0097】ステップS12では、マルチ制御回路44は、コマンド制御回路51にシーケンス実行許可を与える。コマンド制御回路51は、格納しているコマンドフェッチ対象のアドレスを用い、Node1のイニシエータ11からコマンドを取って来る。すなわち、コマンド制御回路51は、コマンドフェッチ対象のアドレスをパケット処理回路45に通知し、パケット処理回路45は、このアドレスを含んだパケットを生成し、リンクコア回路42及びバス21を経由してイニシエータ11に送信する。これに応答して、イニシエータ11はコマンドを含んだパケットを送信し、このパケットはバス21、リンクコア回路42及びパケット処理回路45を経由してコマンド受信バッファ47に格納される。CPU31は、このパケットに含まれるコマンドを実行する。このようにして、コマンドをフェッチして実行する一連のトランザクションを行うことができる。コマンドの実行が終了したら、ステップS13に処理を進める。
【0098】ステップS13では、マルチ制御回路44は、Node2のイニシエータ12のコマンド処理シーケンスが未完了であるか否かを判定する。すなわち、マルチ制御回路44は、コマンド制御回路52がコマンドフェッチ要求を受け、未処理のコマンドをキューイングしているか否かを判定し、キューイングしていたらステップS14に移行し、キューイングしていなかったらステップS15に移行する。
【0099】ステップS14では、マルチ制御回路44は、コマンド制御回路52にシーケンス実行許可を与える。コマンド制御回路52は、ステップS12と同様に、Node2のイニシエータ12からコマンドを取って来て、そのコマンドをCPU31に実行させ、コマンドの実行を終了したら、ステップS15に処理を進める。
【0100】ステップS15では、マルチ制御回路44は、Node3のイニシエータ13のコマンド処理シーケンスが未完了であるか否かを判定する。すなわち、マルチ制御回路44は、コマンド制御回路53がコマンドフェッチ要求を受け、未処理のコマンドをキューイングしているか否かを判定し、キューイングしていたらステップS16に移行し、キューイングしていなかったらステップS11に戻る。
【0101】ステップS16では、マルチ制御回路44は、コマンド制御回路53にシーケンス実行許可を与える。コマンド制御回路53は、ステップS12と同様に、Node3のイニシエータ13からコマンドを取って来て、そのコマンドをCPU31に実行させ、コマンドの実行を終了したら、ステップS11に戻る。その後は、同様のシーケンスを繰り返す。
【0102】以上のように、マルチ制御回路44は、接続されたイニシエータによるコマンド実行の状態を常に管理し、コマンド実行許可を与えるか否かの判定をそれぞれのイニシエータに対して順に平等に行うので、コマンドを実行する頻度のばらつきがイニシエータ間で生じることを防ぐことができる。
【0103】なお、イニシエータ11〜13が、コマンドフェッチ要求の際にDOORBELLレジスタへのアクセスを行った場合についても、イニシエータ11〜13からコマンドを取って来る際の動作が複雑である点を除けば、同様である。この場合は、イニシエータ11に関しては、ステップS12に代えて次のような動作を行う。
【0104】すなわち、コマンド制御回路51は、ORB_POINTERレジスタR13に格納しているアドレスをイニシエータ11に送信し、これに応答して、イニシエータ11は次に参照すべきORBを指し示すポインタを含んだパケットを送信する。コマンド制御回路51は、このポインタをパケット処理回路45に通知し、パケット処理回路45は、このポインタを含んだパケットを生成してイニシエータ11に送信する。これに応答して、イニシエータ11はコマンドを含んだパケットを送信する。CPU31は、このパケットのコマンドを実行する。イニシエータ12,13に関しても、それぞれステップS14,S16に代えて同様の動作を行えばよい。
【0105】また、イニシエータが3台の場合について説明したが、イニシエータの数はこれには限らない。すなわち、イニシエータの数が、IEEE1394規格で規定されている1つのローカルバスに対して接続可能な最大の数(63台)までの場合には、各イニシエータに対応したコマンド制御回路を備えることにより、同様に処理を行うことができる。
【0106】図7A〜7Eは、図2のマルチイニシエータ制御装置2の内部で使用されるパケットのフォーマットを示す説明図である。図7A〜7Eにおいて、斜線の領域はリザーブ領域を示す。より具体的には、図7Aは、BWRQ(block write request)パケットのフォーマットを示す。図7Bは、QWRQ(quadlet write request)パケットのフォーマットを示す。図7Cは、WRS(write response)パケットのフォーマットを示す。図7Dは、BRRQ(block read request)パケットのフォーマットを示す。図7Eは、BRRS(block read response)パケットのフォーマットを示す。
【0107】図8A〜8Eは、IEEE1394バス21〜23上のパケットのフォーマットを示す説明図である。図8A〜8Eは、それぞれ図7A〜7Eに示されるフォーマットに対応する。
【0108】リンクコア回路42は、パケットをバス21〜23に送信する際には、図7A〜7Eのフォーマットのパケットを受け取り、このパケットからheader_CRCやdata_CRC等のCRC(cyclic redundancy check)コードを求める。リンクコア回路42は、受け取ったパケットにこれらのCRCコードのフィールドを追加し、得られた図8A〜8Eのフォーマットのパケットを物理層コントローラ41に出力する。
【0109】また、リンクコア回路42は、パケットをバス21〜23から受信する際には、図8A〜8Eのフォーマットのパケットを受け取り、このパケットに含まれるheader_CRC領域やdata_CRC領域を参照して、CRCによる誤り検出を行う。リンクコア回路42は、誤り検出後のパケットを図7A〜7Eのフォーマットでパケットフィルタ43及びパケット処理回路45に出力する。
【0110】以下では、図2のマルチイニシエータ制御装置2の動作を説明する。まず、LOGINコマンドの実行について説明する。マルチイニシエータ制御装置2は、イニシエータ11との間で図9のコマンド処理シーケンスを実行する。イニシエータ11との間のLOGINコマンドのコマンド処理シーケンスが終了すると、CPU31は、LOGINしたイニシエータ11のノード番号に対応する制御レジスタ48内の1ビットをイネーブルにする。同様にして、イニシエータ12,13との間でLOGIN処理が行われる。この一連のLOGIN処理によって、イニシエータ11,12,13に、それぞれコマンド制御回路51,52,53が割り当てられる。
【0111】次に、READコマンドの実行について説明する。マルチイニシエータ制御装置2とイニシエータ11〜13との間のコマンド処理シーケンスは、コマンド制御回路51〜53がコマンドをキューイングすることができるようになっている点を除くと、図10と同様である。
【0112】イニシエータ11は、READコマンドを実行するためにAGENT_RESETレジスタR12にQWRQパケットを送信する。次に、イニシエータ11は、BWRQパケットをイニシエータ11に対応するコマンド制御回路51に送信し、ORB_POINTERレジスタR13にコマンド制御回路51がアクセスすべきORBのアドレスを書き込む。マルチ制御回路44は、コマンド制御回路51〜53の状態を管理し、例えばコマンド制御回路51にシーケンス実行許可を与えると、コマンド制御回路51はコマンドフェッチを実行する。
【0113】コマンド受信バッファ47は、イニシエータ11から受信したコマンドを含むパケットを格納する。CPU31は、コマンド受信バッファ47からコマンドを読み出し、READコマンドを実行するために転送制御回路46を起動する。転送制御回路46は、DMAバス6を介してDVD−RAMコントローラ3からDVD−RAMディスク5のデータを読み出し、パケット処理回路45に出力する。パケット処理回路45は、入力されたデータをパケットにして、リンクコア回路42に出力する。
【0114】また、イニシエータ11に対するデータ転送シーケンス実行中に、イニシエータ12からはWRITEコマンドの、イニシエータ13からはREADコマンドのコマンドフェッチ要求パケットを受信したとする。この場合、イニシエータ12に対応するコマンド制御回路52は、データ転送シーケンスの実行中であっても、イニシエータ12からのコマンドフェッチ要求を受け取る。すなわち、コマンド制御回路52は、マルチ制御回路44からの制御信号に従って、コマンドフェッチのためにアクセスすべきアドレスを格納し、シーケンス実行許可を待つ。同様に、イニシエータ13に対応するコマンド制御回路53は、データ転送シーケンスの実行中であっても、イニシエータ13からのコマンドフェッチ要求を受け取り、シーケンス実行許可を待つ。
【0115】マルチ制御回路44は、イニシエータ11に対するデータ転送処理シーケンスが終了すると、コマンド制御回路52におけるコマンドのキューイング状態、すなわち、コマンド制御回路52がコマンドフェッチ要求を受けているか否かを調べる。キューイングされていると認識した場合には、マルチ制御回路44は、コマンド制御回路52に対してシーケンス実行許可を与える。コマンド制御回路52は、マルチ制御回路44からシーケンス実行許可を受けると、イニシエータ12に対してコマンド処理シーケンスを実行する。パケット処理回路45は、受信したパケットをコマンド受信バッファ47に格納する。
【0116】CPU31は、コマンドをコマンド受信バッファ47から読み出し、WRITEコマンドを実行するために転送制御回路46を起動する。転送制御回路46は、イニシエータ12からデータを読み出すために、リンクコア回路42にパケットを転送する。転送制御回路46は、イニシエータ12から受信したデータをリンクコア回路42を介して読み出し、DMAバス6及びDVD−RAMコントローラ3を介して、DVD−RAMディスク5に対して書き込む。指定された量の転送データがDVD−RAMディスク5に書き込まれた後、転送制御回路46は、イニシエータ12に対してステータス情報を送信して、データ転送処理シーケンスが終了する。
【0117】マルチ制御回路44は、イニシエータ12に対するコマンド処理シーケンスが終了すると、コマンド制御回路53におけるコマンドのキューイング状態を調べ、キューイングされていると認識した場合には、コマンド制御回路53に対してシーケンス実行許可を与える。コマンド制御回路53は、マルチ制御回路44からシーケンス実行許可を受けると、イニシエータ13に対してコマンドフェッチを行い、コマンド受信バッファ47に受信パケットを格納する。その後、同様に、CPU31は転送制御回路46を起動し、READコマンドを実行する。
【0118】以上のように、本実施形態のマルチイニシエータ制御装置2では、コマンド制御回路51,52,53は、それぞれが対応するイニシエータに対するコマンド処理シーケンスを行い、マルチ制御回路44は、コマンド制御回路51,52,53を制御して、複数のイニシエータとの間のシーケンスを可能にする。このため、CPU31は、コマンドフェッチ等のコマンド処理シーケンスを行う必要がない。また、CPU31は、コマンド受信バッファ47に格納されたコマンドを実行するが、データ転送処理シーケンスは、転送制御回路46によって行われる。したがって、効率的なシーケンス制御及びデータ転送制御が可能であり、CPU31の負荷を大きくすることなく、複数のイニシエータの管理を行うことができる。
【0119】(変形例)本変形例においては、マルチ制御回路44に代わってCPU31が、制御レジスタ48を介してコマンド制御回路51〜53にシーケンス実行許可を与え、コマンドをフェッチするタイミングを制御する例について説明する。
【0120】例えば、転送制御回路46が行うデータ転送処理シーケンスは、基本的にはハードウェアだけで処理を行うことができる。ところが、イニシエータから受信するコマンドの処理には、ハードウェアだけでは処理できず、ファームウェアによる処理が必要な場合がある。また、データ転送処理シーケンスを行っているときであっても、転送データにエラーが生じ、これに対処するためのファームウェアによる処理が必要な場合等がある。
【0121】このような場合、CPU31が実行するファームウェアによる処理は、ハードウェアによる処理に追いつかない場合があるため、CPU31がコマンド処理シーケンスを制御する必要がある。
【0122】図2,3を参照して説明する。イニシエータ11,12のLOGINコマンドの処理が終わっているものとする。イニシエータ11は、コマンド制御回路51のORB_POINTERレジスタR13に対して、BWRQパケットを送信する。マルチ制御回路44が、イニシエータ11に対応するコマンド制御回路51にシーケンス実行許可を与えると、コマンド制御回路51は、イニシエータ11に対してコマンドフェッチを行う。パケット処理回路45は、このときのイニシエータ11からの受信パケットをコマンド受信バッファ47に格納する。CPU31はコマンド受信バッファ47のコマンドを読み出し、実行する。このコマンドは、ファームウェアによる処理が必要なコマンドであるとする。
【0123】このときCPU31は、制御レジスタ48を介して、コマンド制御回路52をシーケンス実行許可待ちにする。CPU31がイニシエータ11のコマンドを実行中に、イニシエータ12から入力された、例えばREADコマンドのコマンドフェッチ対象のアドレスは、コマンド制御回路52に格納される。
【0124】CPU31は、イニシエータ11のコマンド処理が終了すると、マルチ制御回路44に対してシーケンス実行許可を与え、マルチ制御回路44は、コマンド制御回路52に対してシーケンス実行許可を与える。シーケンス実行許可を得たコマンド制御回路52は、イニシエータ12のコマンドをフェッチする。パケット処理回路45は、イニシエータ12から受信したパケットをコマンド受信バッファ47に格納する。CPU31はコマンド受信バッファ47のコマンドを読み出し、イニシエータ12のコマンドを実行する。
【0125】以上のように、本変形例によると、コマンド処理シーケンスの起動タイミングをCPU31から任意に制御することができるため、コマンド処理シーケンスとCPU31の動作との間で同期をとることができ、CPU31からのシーケンスの管理が容易となる。
【0126】以上の実施形態では、イニシエータがDVD−RAMディスクとの間でデータを転送する例について説明したが、他の形式の光ディスク、磁気ディスク等のデータ記録媒体等との間でデータを転送する場合も同様である。
【0127】
【発明の効果】以上のように、本発明によると、複数のイニシエータを接続した場合でもCPUの負荷を大きくすることがないので、複数のイニシエータを接続し、かつ、データ転送を高速に行うことができるマルチイニシエータ制御装置及び方法を提供することができる。
【出願人】 【識別番号】000005821
【氏名又は名称】松下電器産業株式会社
【出願日】 平成13年11月30日(2001.11.30)
【代理人】 【識別番号】100077931
【弁理士】
【氏名又は名称】前田 弘 (外7名)
【公開番号】 特開2002−244991(P2002−244991A)
【公開日】 平成14年8月30日(2002.8.30)
【出願番号】 特願2001−366445(P2001−366445)