JP2005018800A - Multi-initiator control device and method - Google Patents
Multi-initiator control device and method Download PDFInfo
- Publication number
- JP2005018800A JP2005018800A JP2004230560A JP2004230560A JP2005018800A JP 2005018800 A JP2005018800 A JP 2005018800A JP 2004230560 A JP2004230560 A JP 2004230560A JP 2004230560 A JP2004230560 A JP 2004230560A JP 2005018800 A JP2005018800 A JP 2005018800A
- Authority
- JP
- Japan
- Prior art keywords
- command
- packet
- initiator
- control circuit
- circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
Description
本発明は、コンピュータと周辺装置等との間でコマンドやデータを伝送路を介して伝送する際に使用されるプロトコルに対するシーケンス処理技術に関する。 The present invention relates to a sequence processing technique for a protocol used when a command or data is transmitted between a computer and a peripheral device via a transmission line.
AV(audio-visual)機器やコンピュータ機器等を接続する次世代インターフェイスとして、IEEE1394方式が注目されている。これは、IEEE1394方式に、非同期(asyncronous)通信とアイソクロナス(isochronous)通信とが定義されているためである。非同期通信は、コンピュータと記録メディア等との間のデータ転送のように、リアルタイム性よりも信頼性をより要求される通信に用いられる。アイソクロナス通信は、動画等のAVデータのような、信頼性よりもリアルタイム性が要求される通信に用いられる。したがって、IEEE1394方式を用いて、例えばコンピュータデータをDVD−RAM(digital versatile disc - random access memory)ドライブ装置等に格納したり、DVD−RAMドライブ装置から記録済みのコンピュータデータを読み出したりする際には、一般的に非同期通信によりデータを伝送する。 The IEEE 1394 system has attracted attention as a next-generation interface for connecting AV (audio-visual) devices and computer devices. This is because the IEEE 1394 system defines asynchronous communication and isochronous communication. Asynchronous communication is used for communication that requires more reliability than real-time performance, such as data transfer between a computer and a recording medium. Isochronous communication is used for communication that requires real-time performance rather than reliability, such as AV data such as moving images. Therefore, when storing computer data in, for example, a DVD-RAM (digital versatile disc-random access memory) drive device, or reading recorded computer data from the DVD-RAM drive device using the IEEE 1394 method. Generally, data is transmitted by asynchronous communication.
コンピュータ等の機器(イニシエータ(initiator))と周辺装置(ターゲット(target))との間でIEEE1394方式の非同期通信を行う場合のプロトコルとして、SBP−2(serial bus protocol-2)がある。以下、コンピュータがこのSBP−2に従ってDVD−RAMドライブ等のターゲットからデータを読み込む場合における、コマンド処理シーケンスについて説明する。 There is SBP-2 (serial bus protocol-2) as a protocol for performing IEEE1394 asynchronous communication between a device such as a computer (initiator) and a peripheral device (target). Hereinafter, a command processing sequence when the computer reads data from a target such as a DVD-RAM drive in accordance with SBP-2 will be described.
SBP−2のコマンドは、READ、WRITE等のコマンド系のコマンドと、LOGIN、QUERY LOGIN、ABORT TASK、ABORT TASK SET等のマネージメント系(タスク管理系)のコマンドとに分けることができる。 SBP-2 commands can be divided into command commands such as READ and WRITE, and management commands (task management commands) such as LOGIN, QUERY LOGIN, ABORT TASK, and ABORT TASK SET.
図9は、マネージメント系のコマンドであるLOGINコマンドを実行するためのコマンド処理シーケンスを示す説明図である。図9を参照して、LOGINコマンドのコマンド処理シーケンスを説明する。 FIG. 9 is an explanatory diagram showing a command processing sequence for executing a LOGIN command which is a management command. A command processing sequence of the LOGIN command will be described with reference to FIG.
(1)イニシエータは、QRRQ(quadlet read request)パケットを発行することにより、ターゲットの固有情報(機器情報等)の取得を行う。一般にこの固有情報全体はコンフィグレーションROM(configROM)と呼ばれる領域に格納されており、この固有情報にはターゲットのMANAGEMENT_AGENTレジスタのアドレスも含まれている。 (1) The initiator obtains target specific information (device information, etc.) by issuing a QRRQ (quadlet read request) packet. Generally, the entire unique information is stored in an area called a configuration ROM (configROM), and this unique information includes the address of the target MANAGEMENT_AGENT register.
(2)ターゲットは、イニシエータからのQRRQパケットに応答して、configROMのデータをQRRS(quadlet read response)パケットとしてイニシエータに返す。QRRQパケット及びQRRSパケットが送信されるこれらの処理(1),(2)は、イニシエータがconfigROMのデータを全て取得するまで続く。 (2) In response to the QRRQ packet from the initiator, the target returns configROM data as a QRRS (quadlet read response) packet to the initiator. These processes (1) and (2) in which the QRRQ packet and the QRRS packet are transmitted continue until the initiator acquires all the data in the configROM.
(3)イニシエータは、BWRQ(block write request)パケットを発行して、ORB(operation request block)を格納しているメモリのアドレスをMANAGEMENT_AGENTレジスタに書き込む。ORBは、イニシエータによって予め用意されており、MANAGEMENT_AGENTレジスタは、ターゲットのCSR(control and status register)空間に定義されている。 (3) The initiator issues a BWRQ (block write request) packet and writes the address of the memory storing the ORB (operation request block) in the MANAGEMENT_AGENT register. The ORB is prepared in advance by the initiator, and the MANAGEMENT_AGENT register is defined in a target CSR (control and status register) space.
(4)ターゲットは、イニシエータからのBWRQパケットに応答して、WRS(write response)パケットをイニシエータに返す。 (4) In response to the BWRQ packet from the initiator, the target returns a WRS (write response) packet to the initiator.
(5)ターゲットは、イニシエータに対してBRRQ(block read request)パケットを発行して、イニシエータがORBをターゲットに送信することを要求する。ORBは、MANAGEMENT_AGENTレジスタに格納されたアドレスに位置している。 (5) The target issues a BRRQ (block read request) packet to the initiator and requests that the initiator transmit an ORB to the target. The ORB is located at the address stored in the MANAGEMENT_AGENT register.
(6)イニシエータは、ターゲットからのBRRQパケットに応答して、BRRS(block read response)パケットをターゲットに返す。BRRSパケットのデータフィールドには、ORBが格納されている。このようにして、ORBがイニシエータからターゲットに送信される。 (6) In response to the BRRQ packet from the target, the initiator returns a BRRS (block read response) packet to the target. The ORB is stored in the data field of the BRRS packet. In this way, the ORB is transmitted from the initiator to the target.
(7)ターゲットは、イニシエータからORBを受信し、受信したORBの内容を解析する。 (7) The target receives the ORB from the initiator and analyzes the content of the received ORB.
(8)ターゲットは、受信したORBがLOGINコマンドを表すことがわかると、LOGINコマンドを実行する。コマンド実行の際のLogin ResponseにCOMMAND_AGENTレジスタのベースアドレスが示されている。 (8) When the target knows that the received ORB represents a LOGIN command, the target executes the LOGIN command. The base address of the COMMAND_AGENT register is shown in Login Response when executing the command.
(9)LOGINコマンドの実行が終了した後、ターゲットは、LOGINコマンドの実行結果を示すステータス情報を作成する。 (9) After the execution of the LOGIN command is completed, the target creates status information indicating the execution result of the LOGIN command.
(10)ターゲットは、BWRQパケットを発行することにより、ステータス情報をイニシエータに送信する。ステータス情報は、ORBによって指定される所定のアドレス(イニシエータのStatus_FIFOアドレス)に格納される。 (10) The target sends status information to the initiator by issuing a BWRQ packet. The status information is stored at a predetermined address (Status_FIFO address of the initiator) specified by the ORB.
(11)イニシエータは、ターゲットからのBWRQパケットに応答して、WRSパケットをターゲットに返す。 (11) In response to the BWRQ packet from the target, the initiator returns a WRS packet to the target.
(12)ターゲットは、イニシエータからのWRSパケットのrCodeがresp_completeであるか否かを判定する。イニシエータからのWRSパケットのrCodeがresp_completeである場合は、LOGINコマンドに関する一連のコマンド処理シーケンスが完了する。 (12) The target determines whether or not the rCode of the WRS packet from the initiator is resp_complete. When the rCode of the WRS packet from the initiator is resp_complete, a series of command processing sequences related to the LOGIN command is completed.
図10は、コマンド系のREADコマンドを実行するためのコマンド処理シーケンスを示す説明図である。図10のシーケンスは、図9を参照して説明したLOGINコマンドの処理シーケンスが終了した後に実行される。図10を参照して、READコマンドのコマンド処理シーケンスを説明する。 FIG. 10 is an explanatory diagram showing a command processing sequence for executing a command-type READ command. The sequence of FIG. 10 is executed after the processing sequence of the LOGIN command described with reference to FIG. A command processing sequence of the READ command will be described with reference to FIG.
(21)イニシエータは、READコマンドを表すORBを作成する。READコマンドを表すORBは、データ数、最大パケット長、転送方向、転送方法等、READコマンドを実行するために必要な情報を定義する。 (21) The initiator creates an ORB representing the READ command. The ORB representing the READ command defines information necessary for executing the READ command, such as the number of data, the maximum packet length, the transfer direction, and the transfer method.
(22)イニシエータは、QWRQ(quadlet write request)パケットをターゲットのAGENT_RESETレジスタに書き込み、初期化させる。なお、AGENT_RESETレジスタは、ターゲットのCSR空間に定義されている。 (22) The initiator writes a QWRQ (quadlet write request) packet to the target AGENT_RESET register and initializes it. The AGENT_RESET register is defined in the target CSR space.
(23)ターゲットは、イニシエータからのQWRQパケットに応答して、WRSパケットをイニシエータに返す。 (23) In response to the QWRQ packet from the initiator, the target returns a WRS packet to the initiator.
(24)イニシエータは、BWRQパケットを発行することにより、ORBを格納しているメモリのアドレスをORB_POINTERレジスタに書き込む。なお、ORB_POINTERレジスタは、ターゲットのCSR空間に定義されている。 (24) The initiator writes the address of the memory storing the ORB to the ORB_POINTER register by issuing a BWRQ packet. The ORB_POINTER register is defined in the target CSR space.
(25)ターゲットは、イニシエータからのBWRQに応答して、WRSをイニシエータに返す。 (25) In response to BWRQ from the initiator, the target returns WRS to the initiator.
(26)ターゲットは、BRRQパケットを発行して、イニシエータがORBをターゲットに送信することを要求する。ORBは、ORB_POINTERレジスタに格納されたアドレス、すなわち、イニシエータにおけるそのメモリアドレスに位置している。 (26) The target issues a BRRQ packet to request that the initiator send an ORB to the target. The ORB is located at the address stored in the ORB_POINTER register, that is, its memory address in the initiator.
(27)イニシエータは、ターゲットからのBRRQパケットに応答して、BRRSパケットをターゲットに返す。BRRSパケットのデータフィールドにはORBが格納されている。このようにして、ORBがイニシエータからターゲットに送信される。 (27) In response to the BRRQ packet from the target, the initiator returns a BRRS packet to the target. The ORB is stored in the data field of the BRRS packet. In this way, the ORB is transmitted from the initiator to the target.
(28)ターゲットは、イニシエータからORBを受信し、受信したORBの内容を解析する。 (28) The target receives the ORB from the initiator and analyzes the content of the received ORB.
(29)ターゲットは、受信したORBがREADコマンドを表すことがわかると、READコマンドを実行する。READコマンドの実行により、以下の(30)、(31)が繰り返される。これは、転送すべきデータのサイズが大きい場合には、そのデータを複数のパケットに分割して転送するためである。転送すべきデータは、ターゲットによって用意される。 (29) When it is found that the received ORB represents the READ command, the target executes the READ command. By executing the READ command, the following (30) and (31) are repeated. This is because when the size of data to be transferred is large, the data is divided into a plurality of packets and transferred. The data to be transferred is prepared by the target.
(30)ターゲットは、BWRQパケットを発行して、ORBによって指定されるアドレスにデータを格納する。 (30) The target issues a BWRQ packet and stores data at the address specified by the ORB.
(31)イニシエータは、ターゲットからのBWRQパケットに応答して、WRSパケットをターゲットに返す。処理(30)及び(31)は1つのトランザクションを構成する。1つのトランザクションが正常に終了したことが確認された後に、次のトランザクションが実行される。 (31) In response to the BWRQ packet from the target, the initiator returns a WRS packet to the target. Processes (30) and (31) constitute one transaction. After confirming that one transaction has been completed normally, the next transaction is executed.
(32)データ転送処理シーケンスが正常に終了した後、ターゲットは、READコマンドの実行結果を示すステータス情報を作成する。 (32) After the data transfer processing sequence ends normally, the target creates status information indicating the execution result of the READ command.
(33)ターゲットは、BWRQパケットを発行することにより、ステータス情報をイニシエータに送信する。ステータス情報は、ORBによって指定される所定のアドレスに格納される。 (33) The target sends status information to the initiator by issuing a BWRQ packet. The status information is stored at a predetermined address designated by the ORB.
(34)イニシエータは、ターゲットからのBWRQパケットに応答して、WRSパケットをターゲットに返す。 (34) In response to the BWRQ packet from the target, the initiator returns a WRS packet to the target.
(35)ターゲットは、イニシエータからのWRSパケットのrCodeがresp_completeであるか否かを判定する。イニシエータからのWRSパケットのrCodeがresp_completeである場合には、READコマンドに関する一連のコマンド処理シーケンスが完了する。 (35) The target determines whether or not the rCode of the WRS packet from the initiator is resp_complete. When the rCode of the WRS packet from the initiator is resp_complete, a series of command processing sequences related to the READ command is completed.
なお、図には示されていないが、図9,10において、ターゲットは、イニシエータからのパケットを受信すると、ACK(Acknowledge)パケットをイニシエータに返す。同様に、イニシエータは、ターゲットからのパケットを受信すると、ACKパケットをターゲットに返す。 Although not shown in the figure, in FIGS. 9 and 10, when receiving a packet from the initiator, the target returns an ACK (Acknowledge) packet to the initiator. Similarly, when the initiator receives a packet from the target, the initiator returns an ACK packet to the target.
イニシエータ及びターゲットは、書き込み要求パケット(例えば、BWRQパケットやQWRQパケット)の受信に成功した場合には、パケットの受信に成功したことを示す“Ack_complete”というコードを有するACKパケットを返す。この場合、WRSパケットを返さず、次の処理に進む。イニシエータ及びターゲットは、“Ack_pending”というコードを有するACKパケットを返す場合には、WRSパケットを返す。また、イニシエータ及びターゲットは、パケットを受信することができない状態である場合には、パケットを受信することができない状態であることを示す“Ack_busy”というコードを有するACKパケットを返す。データ転送シーケンスにおいて、ターゲットからのBWRQパケットに対してイニシエータが“Ack_busy”というコードを有するACKパケットをターゲットに返した場合には、ターゲットはBWRQパケットをイニシエータに再送信する。 When the initiator and the target successfully receive a write request packet (for example, a BWRQ packet or a QWRQ packet), the initiator and the target return an ACK packet having a code “Ack_complete” indicating that the packet has been successfully received. In this case, the WRS packet is not returned and the process proceeds to the next process. When the initiator and the target return an ACK packet having the code “Ack_pending”, the initiator and the target return a WRS packet. When the initiator and the target cannot receive the packet, the initiator and the target return an ACK packet having a code “Ack_busy” indicating that the packet cannot be received. In the data transfer sequence, when the initiator returns an ACK packet having a code “Ack_busy” to the BWRQ packet from the target, the target retransmits the BWRQ packet to the initiator.
以上のようにして、イニシエータとターゲットとの間でデータ転送処理を行うことができる。SBP−2では、1つのバス上で、ターゲット1台に対してイニシエータを最大63台接続することが可能である。 As described above, data transfer processing can be performed between the initiator and the target. In SBP-2, a maximum of 63 initiators can be connected to one target on one bus.
図11はSBP−2を処理する従来のシーケンス処理装置90の構成を示すブロック図である。物理層コントローラ91は、IEEE1394バス20の初期化、アービトレーション、バイアス電圧の制御等の機能を有している。リンクコア回路92は、物理層コントローラ91を介してバス20上のパケットを受信する。リンクコア回路92は、パケットに対して誤り検出符号の作成/検出、パケットへの符号の付加、コードの検出(例えば、ACKパケットのコード検出)等を行う。またリンクコア回路92は、物理層コントローラ91を介してパケットをバス20に出力する。更に、リンクコア回路92は、パケットの転送が失敗した場合にそのパケットの転送を再度試みるリトライ機能を有している。
FIG. 11 is a block diagram showing a configuration of a conventional
パケットフィルタ93は、リンクコア回路92が出力したパケットを受け取り、このパケットのヘッダフィールドの内容を解析する。パケットフィルタ93は、その解析結果に応じて、シーケンス制御回路99又は転送制御回路96に制御信号を与えるとともに、受信パケットをパケット処理回路95に出力する。パケット処理回路95は、シーケンス制御回路99又は転送制御回路96から制御され、入力されたパケットを処理し、コマンド受信バッファ97へのコマンドの出力、又はDMA(direct memory access)バス6を介して受信データの外部への出力を行う。シーケンス制御回路99は、接続された1台のイニシエータに対するコマンド処理シーケンスの実行及び制御を行う。
The packet filter 93 receives the packet output from the
このように、図11の従来のシーケンス処理装置は、1台のイニシエータとの間のコマンド処理シーケンスを行っていた。 As described above, the conventional sequence processing apparatus shown in FIG. 11 performs a command processing sequence with one initiator.
従来のシーケンス処理装置において2台以上のイニシエータのシーケンス処理を行うには、2台目以降のイニシエータに対するシーケンス処理、及びそれぞれのイニシエータの管理を、全てファームウェアで行う必要があった。この場合、CPU(central processing unit)にかかる負荷が非常に大きくなる。 In order to perform the sequence processing of two or more initiators in the conventional sequence processing apparatus, it is necessary to perform all the sequence processing for the second and subsequent initiators and the management of each initiator by firmware. In this case, the load on the CPU (central processing unit) becomes very large.
特に、DVD−RAM等の光ディスク装置によって取り扱われる大量のデータを転送する必要がある場合には、CPUの負荷が飛躍的に増大する。その結果、CPUによって実行されるファームウェアのオーバーヘッドが増大し、IEEE1394方式を採用することによって本来実現されるべき、高速シリアルバスインターフェイスとしての高い実効転送レートを実現することが非常に困難になる。また、ファームウェアにこのような処理を全てさせると、CPUの負荷が大きくなるため、シーケンス処理装置を光ディスク装置等の他のシステムへ組み込むことは不可能であった。 In particular, when it is necessary to transfer a large amount of data handled by an optical disk device such as a DVD-RAM, the load on the CPU increases dramatically. As a result, the overhead of firmware executed by the CPU increases, and it becomes very difficult to realize a high effective transfer rate as a high-speed serial bus interface that should be originally realized by adopting the IEEE 1394 method. Further, if the firmware performs all such processes, the load on the CPU increases, so that it is impossible to incorporate the sequence processing apparatus into another system such as an optical disk apparatus.
このように、従来のシーケンス処理装置は、実際にはイニシエータが1台の場合にしか対応できなかった。このため、拡張性が低く、複数のイニシエータが接続されたネットワーク環境ではあまり効果的に使用することができなかった。 As described above, the conventional sequence processing apparatus can actually cope with only one initiator. For this reason, the expandability is low and it cannot be used effectively in a network environment in which a plurality of initiators are connected.
本発明は、2台以上の機器に対するコマンド処理シーケンスを行うことができるマルチイニシエータ制御装置を提供することを目的とする。 It is an object of the present invention to provide a multi-initiator control apparatus that can perform a command processing sequence for two or more devices.
前記課題を解決するため、請求項1の発明が講じた手段は、伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御装置であって、送信すべきパケットを前記伝送路に送信する一方、前記伝送路からパケットを受信し、誤り検出を行って出力するリンクコア回路と、前記リンクコア回路が受信したパケットを解析し、その結果を出力するパケットフィルタと、各々、対応する機器との間のコマンド処理シーケンスを制御する複数のコマンド制御回路と、前記複数のコマンド制御回路のうちの1つにシーケンス実行許可を与えるマルチ制御回路と、前記許可を与えられたコマンド制御回路が出力する情報を有するパケットを前記送信すべきパケットとして生成し、前記リンクコア回路に出力して送信させる一方、前記リンクコア回路が受信して出力したパケットを前記パケットフィルタが出力する解析結果に従って出力するパケット処理回路と、前記パケット処理回路が出力するパケットに含まれるコマンドを実行するCPU(central processing unit)とを備えたものである。
In order to solve the above-mentioned problem, the means taken by the invention of
請求項1の発明によると、マルチイニシエータ制御装置からパケットを送信し、これに応答して機器が送信するパケットに含まれるコマンドを、マルチイニシエータ制御装置は実行することができる。このようなコマンド処理シーケンスの実行は、コマンド制御回路によって行われるため、CPUがコマンド処理シーケンスの実行に関与することはない。また、マルチイニシエータ制御装置がいずれの機器との間のコマンド処理シーケンスを行うかを、マルチ制御回路が制御する。このため、CPUの負荷を低減することが可能になる。 According to the first aspect of the present invention, the multi-initiator control device can execute a command included in the packet transmitted by the device in response to the transmission of the packet from the multi-initiator control device. Since the execution of such a command processing sequence is performed by the command control circuit, the CPU is not involved in the execution of the command processing sequence. Further, the multi-control circuit controls which device the multi-initiator control apparatus performs a command processing sequence with. For this reason, it becomes possible to reduce the load on the CPU.
また、請求項2の発明では、請求項1に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、対応する機器が出力し、当該対応する機器との間のコマンド処理シーケンスに必要な情報を格納して、これを前記シーケンス実行許可が与えられると出力するものであり、前記マルチ制御回路は、前記リンクコア回路が受信して出力するパケットに含まれる、当該パケットを送信した機器との間のコマンド処理シーケンスに必要な情報を、前記パケットフィルタの出力に応じて、前記複数のコマンド制御回路のうち当該機器に対応するものに出力して格納させるものであり、前記パケット処理回路は、前記シーケンス実行許可を与えられたコマンド制御回路が出力する情報を有するパケットを生成して出力し、これに応答して当該コマンド制御回路に対応する機器が出力したパケットを、受信して出力するものである。 According to a second aspect of the present invention, in the multi-initiator control device according to the first aspect, each of the plurality of command control circuits is output by a corresponding device, and in a command processing sequence with the corresponding device. The necessary information is stored and output when the sequence execution permission is given. The multi-control circuit transmits the packet included in the packet received and output by the link core circuit. Information necessary for a command processing sequence with the device is output and stored in the command control circuit corresponding to the device according to the output of the packet filter, and the packet processing The circuit generates and outputs a packet having information output from the command control circuit given the sequence execution permission, Packets device is output in response to record corresponding to the command control circuit is configured to receive and output.
請求項2の発明によると、複数のコマンド制御回路を効率よく制御して、コマンド処理シーケンスの一連のトランザクションを処理することができる。 According to the second aspect of the present invention, it is possible to efficiently control a plurality of command control circuits and process a series of transactions in a command processing sequence.
また、請求項3の発明では、請求項1に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、対応する機器から送信されたコマンドフェッチ要求パケットの情報を格納し、前記マルチ制御回路から前記シーケンス実行許可が与えられた場合に、当該機器に対してコマンドフェッチ動作を行うものである。 According to a third aspect of the present invention, in the multi-initiator control device according to the first aspect, each of the plurality of command control circuits stores information of a command fetch request packet transmitted from a corresponding device, and When the sequence execution permission is given from the control circuit, a command fetch operation is performed on the device.
請求項3の発明によると、コマンド制御回路は、各機器から受け取ったコマンドフェッチ要求パケットの情報を保持しているので、シーケンス実行許可が与えられるとただちにコマンドフェッチ動作に移行することができる。このため、効率的、かつ高速な動作を行うことができる。
According to the invention of
また、請求項4の発明では、請求項3に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、データ転送処理シーケンスの実行中であっても、対応する機器からのコマンドフェッチ要求を受け取るものである。 According to a fourth aspect of the present invention, in the multi-initiator control device according to the third aspect, each of the plurality of command control circuits fetches a command from a corresponding device even during execution of a data transfer processing sequence. Receive requests.
請求項4の発明によると、ある機器がコマンド実行中であっても、他の機器のコマンドフェッチ要求を処理することができる。このため、コマンド処理の状態に関係なく、それぞれの機器からのアクセスに対応することができる。
According to the invention of
また、請求項5の発明では、請求項1に記載のマルチイニシエータ制御装置において、前記複数のコマンド制御回路は、それぞれ、コマンド処理シーケンスを行うためのアドレスを格納するレジスタを有するものであり、前記レジスタのアドレスは、当該レジスタが属するコマンド制御回路の対応する機器のノード番号に応じて、前記複数のコマンド制御回路のうちの基準とするもののレジスタのアドレスを、所定の値を単位としてアドレス拡張して得られたものである。 According to a fifth aspect of the present invention, in the multi-initiator control device according to the first aspect, each of the plurality of command control circuits includes a register for storing an address for performing a command processing sequence, The address of the register is an address expansion of the register address of the reference of the plurality of command control circuits in units of a predetermined value according to the node number of the corresponding device of the command control circuit to which the register belongs. It was obtained.
請求項5の発明によると、基準とするコマンド制御回路のレジスタのアドレスをアドレス拡張し、レジスタのアドレスを求めるため、接続される機器が複数の場合であっても、それぞれの機器がアクセスするレジスタのアドレスをCPUが管理する必要がない。このため、CPUの負荷が低減され、機器が1台の場合と同様に高速に動作することができる。
According to the invention of
また、請求項6の発明では、請求項1に記載のマルチイニシエータ制御装置において、前記マルチ制御回路は、コマンド処理シーケンスが終了する毎に前記複数の機器から1つを所定の順で選択して、前記複数のコマンド制御回路のうち選択された機器に対応したものに前記シーケンス実行許可を与えるものである。 According to a sixth aspect of the present invention, in the multi-initiator control device according to the first aspect, the multi-control circuit selects one of the plurality of devices in a predetermined order every time a command processing sequence is completed. The sequence execution permission is given to the command control circuit corresponding to the selected device.
請求項6の発明によると、接続されている各機器について順にコマンド実行許可を与えるか否かを判定するので、機器間のコマンド実行頻度のばらつきを小さくし、コマンドを実行する機会が一部の機器に偏らないようにすることができる。
According to the invention of
また、請求項7の発明は、請求項1に記載のマルチイニシエータ制御装置において、前記パケット処理回路が当該マルチイニシエータ制御装置の外部との間で行うデータ転送の制御を行う転送制御回路を更に備え、前記パケット処理回路は、前記パケットフィルタが出力するパケットから転送すべきデータを取り出して前記転送制御回路に出力する一方、前記転送制御回路に転送されて来たデータからパケットを生成して前記リンクコア回路に出力するものである。
The invention according to claim 7 is the multi-initiator control device according to
請求項7の発明によると、データ転送処理シーケンスは転送制御回路によって制御されるため、CPUがデータ転送処理シーケンスの実行に関与することはない。このため、データ転送処理シーケンスの実行中におけるCPUの負荷を低減し、データ転送を高速に行うことができる。 According to the invention of claim 7, since the data transfer processing sequence is controlled by the transfer control circuit, the CPU is not involved in the execution of the data transfer processing sequence. For this reason, it is possible to reduce the load on the CPU during execution of the data transfer processing sequence and perform data transfer at high speed.
また、請求項8の発明は、請求項1に記載のマルチイニシエータ制御装置において、前記CPUが前記複数のコマンド制御回路にシーケンス実行許可を与えることができるように構成されているものである。
The invention according to claim 8 is the multi-initiator control device according to
請求項8の発明によると、CPUがコマンドフェッチの動作タイミングを制御することが可能なため、ファームウェアからのシーケンス制御に対する自由度が増し、ファームウェアの仕様に同期化させてシーケンス処理を行うことが可能となる。 According to the invention of claim 8, since the CPU can control the operation timing of the command fetch, the degree of freedom for the sequence control from the firmware is increased, and the sequence processing can be performed in synchronization with the specification of the firmware. It becomes.
また、請求項9の発明は、請求項1に記載のマルチイニシエータ制御装置において、前記複数の機器のそれぞれのノード番号と、ノード番号を識別するためのフィールドにおけるビットの位置とが対応付けられており、前記機器のそれぞれを、前記フィールドにおけるビットの位置で識別するように構成されているものである。
The invention according to
請求項9の発明によると、各機器のノード番号を1ビットで簡潔に表現するため、より多くの機器が接続された場合であっても、機器の管理を小規模の回路で行うことが可能となる。
According to the invention of
また、請求項10の発明は、伝送路を介して接続された複数の機器の各々との間でパケットを単位として通信を行うマルチイニシエータ制御方法であって、前記複数の機器のうちの1つからコマンドフェッチ要求を受けたことを記憶しているか否かを判定するステップと、コマンドフェッチ要求を受けたことを記憶していると判定したときは、当該機器からコマンドをフェッチして実行するステップとを備え、前記複数の機器から1つを所定の順で選択することを繰り返し、選択された機器について前記判定を行うステップと前記コマンドを実行するステップとを行うものである。
The invention of
請求項10の発明によると、接続されている各機器について順にコマンド実行許可を与えるか否かを判定するので、コマンドを実行する機会が一部の機器に偏らないようにすることができる。
According to the invention of
以上のように、本発明によると、複数のイニシエータを接続した場合でもCPUの負荷を大きくすることがないので、複数のイニシエータを接続し、かつ、データ転送を高速に行うことができるマルチイニシエータ制御装置及び方法を提供することができる。 As described above, according to the present invention, even when a plurality of initiators are connected, the load on the CPU is not increased. Therefore, multi-initiator control capable of connecting a plurality of initiators and performing data transfer at high speed. Apparatus and methods can be provided.
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、ここで示す実施の形態によって本発明の技術的範囲が限定されるものではない。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. The technical scope of the present invention is not limited by the embodiment shown here.
図1は、本発明の実施形態に係るマルチイニシエータ制御装置を用いたデータ転送システムのブロック図である。図1のデータ転送システムは、光ディスクドライブ1と、光ディスクドライブ1に接続されている、機器としてのイニシエータ11,12,13とを備えている。イニシエータ11〜13は、例えばパーソナルコンピュータ(PC)である。光ディスクドライブ1は、ターゲットとしてのマルチイニシエータ制御装置2と、DVD−RAMコントローラ3と、ヘッド4と、DVD−RAMディスク5とを備えている。
FIG. 1 is a block diagram of a data transfer system using a multi-initiator control device according to an embodiment of the present invention. The data transfer system in FIG. 1 includes an
各イニシエータ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に書き込む。
The
図2は、本発明の実施形態に係る図1のマルチイニシエータ制御装置のブロック図である。図2において、マルチイニシエータ制御装置2は、CPU31と、物理層コントローラ(PHY)41と、リンクコア回路(LINK)42と、パケットフィルタ43と、マルチ制御回路44と、パケット処理回路45と、転送制御回路46と、コマンド受信バッファ47と、制御レジスタ48と、コマンド制御回路51,52,53とを備えている。
FIG. 2 is a block diagram of the multi-initiator control device of FIG. 1 according to the embodiment of the present invention. In FIG. 2, the
図2において、CPU31、リンクコア回路42、マルチ制御回路44、転送制御回路46、コマンド制御回路51〜53は、制御レジスタ48に対してデータの書き込み、読み出しをすることができる。また、パケットフィルタ43は、制御レジスタ48の内容を読み出しすることができる。以下では例として、SBP−2(serial bus protocol-2)をプロトコルとして用いて、イニシエータとターゲットとの間でデータ転送を行うものとして説明する。
In FIG. 2, the
物理層コントローラ41は、バス21〜23の初期化、アービトレーション、バイアス電圧の制御等の機能を有している。物理層コントローラ41は、バス21〜23上の電気信号をパケットに変換してリンクコア回路42に出力したり、リンクコア回路42から受け取ったパケットを電気信号に変換してバス21〜23に出力する。
The
リンクコア回路42は、物理層コントローラ41からパケットを受信する。リンクコア回路42は、受信したパケットに対して誤り検出符号の検出、コードの検出(例えば、ACKパケットのコード検出)等を行った後、パケットフィルタ43及びパケット処理回路45に出力する。また、リンクコア回路42は、パケット処理回路45から受け取った、送信すべきパケットに対する誤り検出符号の作成及び付加を行い、物理層コントローラ41に送信する。更に、リンクコア回路42は、パケットの転送に失敗した場合に、そのパケットの転送を再度試みるリトライ機能を有している。
The
パケットフィルタ43は、リンクコア回路42からパケットを受け取り、そのパケットのヘッダフィールドの内容を解析する。パケットフィルタ43は、その解析結果に応じて、このパケットをコマンド受信バッファ47に格納するべきか否かを決定し、パケット処理回路45に通知する。また、パケットフィルタ43は、受信したパケットの送信元のイニシエータのノード番号をエンコードし、マルチ制御回路44及び転送制御回路46に制御信号として出力する。更に、パケットフィルタ43は、受け取ったパケットに含まれる情報をマルチ制御回路44及び転送制御回路46に出力する。
The
マルチ制御回路44は、リンクコア回路42が受信したパケットに含まれる情報をパケットフィルタ43から受け取り、パケットフィルタ43が出力する制御信号に応じて、コマンド制御回路51〜53に格納させる。また、マルチ制御回路44は、コマンド制御回路51〜53のうちの1つにシーケンス実行許可を与え、許可を与えられたコマンド制御回路が出力する情報をパケット処理回路45に出力する。
The
パケット処理回路45は、マルチ制御回路44の制御の下で動作し、パケットフィルタ43がコマンド受信バッファ47に格納するべきであると決定したパケットをコマンド受信バッファ47に格納させる。コマンド受信バッファ47に格納されたパケットは、CPU31から読み出し可能な状態となる。また、パケット処理回路45は、マルチ制御回路44から受け取った情報を含むパケットを生成し、送信すべきパケットとしてリンクコア回路42に出力する。
The
転送制御回路46は、CPU31が出力するREAD/WRITE等の転送コマンド実行要求を、制御レジスタ48を介して受け取り、パケット処理回路45とDVD−RAMコントローラ3との間でパケットを転送する。
The
例えば、READコマンドを実行する場合には、転送制御回路46は、CPU31からの実行要求に基づいて、DVD−RAMディスク5に記録されたデータをDVD−RAMコントローラ3及びDMAバス6を介して読み出し、パケット処理回路45に出力する。パケット処理回路45は、転送制御回路46から受け取ったデータを分割して複数のパケットに格納し、これらのパケットをリンクコア回路42及び物理層コントローラ41を介してバス21〜23に出力する。
For example, when executing the READ command, the
また、WRITEコマンドを実行する場合には、パケット処理回路45は、バス21〜23から物理層コントローラ41及びリンクコア回路42を介してパケットを受け取り、パケットからデータを取り出して転送制御回路46に出力する。転送制御回路46は、受け取ったデータをDMAバス6を介してDVD−RAMコントローラ3に出力し、DVD−RAMディスク5に記録させる。このようなパケット生成処理及びパケット転送処理は、転送制御回路46によって制御される。
When executing the WRITE command, the
このように、転送制御回路46がデータ転送処理シーケンスを行うので、CPU31がデータ転送処理シーケンスの実行に関与することはない。このため、データ転送処理シーケンスにおけるCPU31の負荷を低減することが可能になり、IEEE1394に準拠した高速データ転送を実現することができる。
Thus, since the
IEEE1394では、転送速度に応じて1パケットで転送可能なデータ長(最大ペイロードサイズ)が規定されている。本実施形態では、転送速度はS400(転送速度約400Mbit/sec)であるとし、この場合、1パケットで転送可能なデータ長は2048バイトである。 In IEEE 1394, a data length (maximum payload size) that can be transferred in one packet is defined according to the transfer rate. In this embodiment, it is assumed that the transfer rate is S400 (transfer rate of about 400 Mbit / sec). In this case, the data length that can be transferred in one packet is 2048 bytes.
コマンド制御回路51,52,53は、それぞれイニシエータ11,12,13に対応しており、対応するイニシエータからコマンドフェッチ要求を受け取って、そのイニシエータとの間のコマンド処理シーケンスを制御する。マルチ制御回路44は、コマンド制御回路51〜53のシーケンス実行を管理している。マルチ制御回路44及びコマンド制御回路51〜53は、SBP−2におけるコマンド処理シーケンスに必要なエージェントレジスタ(AGENT_REGISTER)を有している。
The
図3は、図2のマルチ制御回路44及びコマンド制御回路51のレジスタについての説明図である。コマンド制御回路52,53のレジスタの構成は、コマンド制御回路51と同様であるので図示を省略する。
FIG. 3 is an explanatory diagram of the registers of the
マルチ制御回路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のレジスタは、コマンド系のコマンドをフェッチするためのアドレス等を格納する。
The
コマンド制御回路51〜53は、それぞれ、対応するイニシエータ11〜13との間のコマンド処理シーケンスに必要な情報を格納する。このような情報には、イニシエータ11〜13のうち対応するものが出力するコマンドフェッチ要求パケットの情報と、DOORBELLレジスタへのアクセスがあったことを示す情報とがある。
The
コマンド制御回路51〜53は、それぞれの対応するイニシエータ11〜13からコマンドフェッチ要求パケットの情報を受信して保持し、マルチ制御回路44からシーケンス実行許可が得られていないパケットの情報をキューイング、すなわち、未処理のコマンドをキューイングすることができる。コマンドフェッチ要求パケットは、例えばBWRQパケット、QWRQパケットであって、BWRQパケットの場合は、コマンドフェッチ対象のアドレスを含んでいる。
The
イニシエータ11〜13が、コマンド制御回路51〜53のそれぞれに対してコマンドフェッチ要求を行う際のアクセス方法としては、次の2種類がある。すなわち、BWRQパケットを用いてコマンドフェッチ対象のアドレス(ORB(operation request block)の格納先のアドレス)を書き込むORB_POINTERレジスタへのアクセスと、QWRQパケットを用いたDOORBELLレジスタへのアクセスとである。コマンド制御回路51は、コマンドフェッチ対象のアドレスをORB_POINTERレジスタR13に格納し、DOORBELLレジスタR14へのアクセスがあった場合には、アクセスがあったことを記憶、すなわち、このアクセスがあったことを示す情報を格納する。コマンド制御回路52,53に関しても同様である。
There are the following two types of access methods when the
図4は、アドレス拡張についての説明図である。コマンド制御回路51の各エージェントレジスタのアドレスは、ベースアドレス(Base Address)を基準とし、これにそれぞれ所定の値を加算したアドレスに設定しておく。ベースアドレスは、コマンド制御回路51のAGENT_STATEレジスタR11のアドレスである。コマンド制御回路52の各エージェントレジスタのアドレスは、コマンド制御回路51の同種のレジスタのアドレスにそれぞれ20h(hは16進数表示を表す)を加算したアドレスとし、コマンド制御回路53の各エージェントレジスタのアドレスは、コマンド制御回路51の同種のレジスタのアドレスにそれぞれ40hを加算したアドレスとしておく。すなわち、コマンド制御回路51,52,53のレジスタのアドレス領域は、それぞれベースアドレス、ベースアドレス+20h、ベースアドレス+40hから始まる。
FIG. 4 is an explanatory diagram of address expansion. The address of each agent register of the
パケットフィルタ43は、コマンド処理シーケンスにおいて、イニシエータ11〜13から受信したパケットを解析し、パケットの送信元のイニシエータがアクセスしてきたアドレスとエージェントレジスタのアドレスとを比較し、マルチ制御回路44に通知する。
The
また、パケットフィルタ43は、LOGINしているイニシエータのノード番号に対応付けて、例えば20h間隔でアドレス拡張して受信パケットを解析し、その結果を制御信号としてマルチ制御回路44に出力する。パケットフィルタ43には、CPU31からベースアドレス及びイニシエータ11〜13のノード番号が予め設定されている。
Further, the
パケットフィルタ43は、パケットの送信元がイニシエータ11である場合は、そのノード番号に基づき、アドレス拡張を行わない。この場合、パケットフィルタ43は、ベースアドレスから決定されるエージェントレジスタのアドレスと受信したアドレスとを比較し、アクセスされるレジスタを示す制御信号を生成して、マルチ制御回路44に出力する。また、パケットフィルタ43は、パケットの送信元がイニシエータ12である場合は、そのノード番号に基づき、イニシエータ11のベースアドレスに20hを加算したアドレスから決定されるエージェントレジスタのアドレスと受信したアドレスとを比較し、アクセスされるレジスタを示す制御信号を生成して、マルチ制御回路44に出力する。更に、パケットフィルタ43は、パケットの送信元がイニシエータ13である場合は、そのノード番号に基づき、イニシエータ11のベースアドレスに40hを加算したアドレスから決定されるエージェントレジスタのアドレスと受信したアドレスとを比較し、アクセスされるレジスタを示す制御信号を生成して、マルチ制御回路44に出力する。
When the packet transmission source is the
マルチ制御回路44は、コマンド制御回路51〜53のレジスタのうちパケットフィルタ43が出力する制御信号で示されたものにアクセスして、コマンドフェッチ要求パケットの情報を必要に応じて格納させる。
The
このようにエージェントレジスタのアドレスを管理することにより、CPU31からのアドレス管理が簡潔になる。受信したパケットの送信元のイニシエータのノード番号からアドレスを求めるので、IEEE1394規格で1つのローカルバスに対して接続可能な最大のノード数である63ノードのイニシエータを接続した場合であっても、エージェントレジスタのアドレス管理のために回路規模を大きくする必要がない。なお、ベースアドレスからのアドレス拡張を20h単位で行う場合について説明したが、アドレス拡張の単位は他の値としてもよい。
By managing the address of the agent register in this way, address management from the
図5は、イニシエータのノード番号の管理方法を示す説明図である。本実施形態においては、マルチイニシエータ制御装置2に接続されているイニシエータの数は3台であるので、これらを3ビットのフィールドで識別することとする。すなわち、ビットN1が“1”であるとき、イニシエータ11を示し、同様にビットN2又はN3が“1”であるとき、それぞれイニシエータ12又は13を示しているものとする。
FIG. 5 is an explanatory diagram showing a method of managing the node number of the initiator. In the present embodiment, since the number of initiators connected to the
例えば、イニシエータ11,12,13のノード番号がそれぞれffc0h,ffc1h,ffc2hであるとし、受信したパケットにノード番号ffc0hが指定されているとする。この場合、パケットフィルタ43は、“001”をマルチ制御回路44に出力して、パケットがイニシエータ11から送られて来たことを通知する。
For example, it is assumed that the node numbers of the
また、パケット処理回路45は、マルチ制御回路44が出力するデータの3ビットのフィールドに表されたノード番号を、ffc0h等の16ビットのノード番号に変換して、パケットに組み込む。
Further, the
このように、16ビットのノード番号を1ビットで表現し、管理することになるので、ノード番号を扱うマルチ制御回路44等の回路を簡略化することができる。ここで、イニシエータ11〜13のノード番号と、ビットN1,N2,N3の位置との対応関係は、1対1の関係であればどのようなものであってもよい。もちろん、マルチ制御回路44等において、各ノード番号をそのまま用いるようにしてもよい。
Thus, since the 16-bit node number is expressed and managed by 1 bit, a circuit such as the
図6は、図2のマルチ制御回路44におけるコマンド実行処理のシーケンスを示すフローチャートである。ここでは、イニシエータ11,12,13のノード番号がそれぞれNode1,Node2,Node3であるものとして説明する。また、イニシエータ11〜13は、コマンド制御回路51〜53のそれぞれに対するコマンドフェッチ要求の際に、ORB_POINTERレジスタへのアクセスを行うものとして説明する。
FIG. 6 is a flowchart showing a sequence of command execution processing in the
マルチ制御回路44は、まず、ステップS11において、Node1のイニシエータ11のコマンド処理シーケンスが未完了であるか否かを判定する。すなわち、マルチ制御回路44は、コマンド制御回路51がコマンドフェッチ要求を受け、未処理のコマンドをキューイングしているか否かを判定し、キューイングしていたらステップS12に移行し、キューイングしていなかったらステップS13に移行する。
First, in step S11, the
ステップS12では、マルチ制御回路44は、コマンド制御回路51にシーケンス実行許可を与える。コマンド制御回路51は、格納しているコマンドフェッチ対象のアドレスを用い、Node1のイニシエータ11からコマンドを取って来る。すなわち、コマンド制御回路51は、コマンドフェッチ対象のアドレスをパケット処理回路45に通知し、パケット処理回路45は、このアドレスを含んだパケットを生成し、リンクコア回路42及びバス21を経由してイニシエータ11に送信する。これに応答して、イニシエータ11はコマンドを含んだパケットを送信し、このパケットはバス21、リンクコア回路42及びパケット処理回路45を経由してコマンド受信バッファ47に格納される。CPU31は、このパケットに含まれるコマンドを実行する。このようにして、コマンドをフェッチして実行する一連のトランザクションを行うことができる。コマンドの実行が終了したら、ステップS13に処理を進める。
In step S <b> 12, the
ステップS13では、マルチ制御回路44は、Node2のイニシエータ12のコマンド処理シーケンスが未完了であるか否かを判定する。すなわち、マルチ制御回路44は、コマンド制御回路52がコマンドフェッチ要求を受け、未処理のコマンドをキューイングしているか否かを判定し、キューイングしていたらステップS14に移行し、キューイングしていなかったらステップS15に移行する。
In step S13, the
ステップS14では、マルチ制御回路44は、コマンド制御回路52にシーケンス実行許可を与える。コマンド制御回路52は、ステップS12と同様に、Node2のイニシエータ12からコマンドを取って来て、そのコマンドをCPU31に実行させ、コマンドの実行を終了したら、ステップS15に処理を進める。
In step S <b> 14, the
ステップS15では、マルチ制御回路44は、Node3のイニシエータ13のコマンド処理シーケンスが未完了であるか否かを判定する。すなわち、マルチ制御回路44は、コマンド制御回路53がコマンドフェッチ要求を受け、未処理のコマンドをキューイングしているか否かを判定し、キューイングしていたらステップS16に移行し、キューイングしていなかったらステップS11に戻る。
In step S15, the
ステップS16では、マルチ制御回路44は、コマンド制御回路53にシーケンス実行許可を与える。コマンド制御回路53は、ステップS12と同様に、Node3のイニシエータ13からコマンドを取って来て、そのコマンドをCPU31に実行させ、コマンドの実行を終了したら、ステップS11に戻る。その後は、同様のシーケンスを繰り返す。
In step S <b> 16, the
以上のように、マルチ制御回路44は、接続されたイニシエータによるコマンド実行の状態を常に管理し、コマンド実行許可を与えるか否かの判定をそれぞれのイニシエータに対して順に平等に行うので、コマンドを実行する頻度のばらつきがイニシエータ間で生じることを防ぐことができる。
As described above, the
なお、イニシエータ11〜13が、コマンドフェッチ要求の際にDOORBELLレジスタへのアクセスを行った場合についても、イニシエータ11〜13からコマンドを取って来る際の動作が複雑である点を除けば、同様である。この場合は、イニシエータ11に関しては、ステップS12に代えて次のような動作を行う。
The same applies to the case where the
すなわち、コマンド制御回路51は、ORB_POINTERレジスタR13に格納しているアドレスをイニシエータ11に送信し、これに応答して、イニシエータ11は次に参照すべきORBを指し示すポインタを含んだパケットを送信する。コマンド制御回路51は、このポインタをパケット処理回路45に通知し、パケット処理回路45は、このポインタを含んだパケットを生成してイニシエータ11に送信する。これに応答して、イニシエータ11はコマンドを含んだパケットを送信する。CPU31は、このパケットのコマンドを実行する。イニシエータ12,13に関しても、それぞれステップS14,S16に代えて同様の動作を行えばよい。
That is, the
また、イニシエータが3台の場合について説明したが、イニシエータの数はこれには限らない。すなわち、イニシエータの数が、IEEE1394規格で規定されている1つのローカルバスに対して接続可能な最大の数(63台)までの場合には、各イニシエータに対応したコマンド制御回路を備えることにより、同様に処理を行うことができる。 Further, the case where there are three initiators has been described, but the number of initiators is not limited to this. That is, when the number of initiators is up to the maximum number (63 units) connectable to one local bus defined in the IEEE 1394 standard, by providing a command control circuit corresponding to each initiator, Processing can be performed similarly.
図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)パケットのフォーマットを示す。
7A to 7E are explanatory diagrams showing the format of a packet used inside the
図8A〜8Eは、IEEE1394バス21〜23上のパケットのフォーマットを示す説明図である。図8A〜8Eは、それぞれ図7A〜7Eに示されるフォーマットに対応する。
8A to 8E are explanatory diagrams showing the format of packets on the IEEE 1394
リンクコア回路42は、パケットをバス21〜23に送信する際には、図7A〜7Eのフォーマットのパケットを受け取り、このパケットからheader_CRCやdata_CRC等のCRC(cyclic redundancy check)コードを求める。リンクコア回路42は、受け取ったパケットにこれらのCRCコードのフィールドを追加し、得られた図8A〜8Eのフォーマットのパケットを物理層コントローラ41に出力する。
When transmitting a packet to the
また、リンクコア回路42は、パケットをバス21〜23から受信する際には、図8A〜8Eのフォーマットのパケットを受け取り、このパケットに含まれるheader_CRC領域やdata_CRC領域を参照して、CRCによる誤り検出を行う。リンクコア回路42は、誤り検出後のパケットを図7A〜7Eのフォーマットでパケットフィルタ43及びパケット処理回路45に出力する。
When the
以下では、図2のマルチイニシエータ制御装置2の動作を説明する。まず、LOGINコマンドの実行について説明する。マルチイニシエータ制御装置2は、イニシエータ11との間で図9のコマンド処理シーケンスを実行する。イニシエータ11との間のLOGINコマンドのコマンド処理シーケンスが終了すると、CPU31は、LOGINしたイニシエータ11のノード番号に対応する制御レジスタ48内の1ビットをイネーブルにする。同様にして、イニシエータ12,13との間でLOGIN処理が行われる。この一連のLOGIN処理によって、イニシエータ11,12,13に、それぞれコマンド制御回路51,52,53が割り当てられる。
Below, operation | movement of the
次に、READコマンドの実行について説明する。マルチイニシエータ制御装置2とイニシエータ11〜13との間のコマンド処理シーケンスは、コマンド制御回路51〜53がコマンドをキューイングすることができるようになっている点を除くと、図10と同様である。
Next, execution of the READ command will be described. The command processing sequence between the
イニシエータ11は、READコマンドを実行するためにAGENT_RESETレジスタR12にQWRQパケットを送信する。次に、イニシエータ11は、BWRQパケットをイニシエータ11に対応するコマンド制御回路51に送信し、ORB_POINTERレジスタR13にコマンド制御回路51がアクセスすべきORBのアドレスを書き込む。マルチ制御回路44は、コマンド制御回路51〜53の状態を管理し、例えばコマンド制御回路51にシーケンス実行許可を与えると、コマンド制御回路51はコマンドフェッチを実行する。
The
コマンド受信バッファ47は、イニシエータ11から受信したコマンドを含むパケットを格納する。CPU31は、コマンド受信バッファ47からコマンドを読み出し、READコマンドを実行するために転送制御回路46を起動する。転送制御回路46は、DMAバス6を介してDVD−RAMコントローラ3からDVD−RAMディスク5のデータを読み出し、パケット処理回路45に出力する。パケット処理回路45は、入力されたデータをパケットにして、リンクコア回路42に出力する。
The
また、イニシエータ11に対するデータ転送シーケンス実行中に、イニシエータ12からはWRITEコマンドの、イニシエータ13からはREADコマンドのコマンドフェッチ要求パケットを受信したとする。この場合、イニシエータ12に対応するコマンド制御回路52は、データ転送シーケンスの実行中であっても、イニシエータ12からのコマンドフェッチ要求を受け取る。すなわち、コマンド制御回路52は、マルチ制御回路44からの制御信号に従って、コマンドフェッチのためにアクセスすべきアドレスを格納し、シーケンス実行許可を待つ。同様に、イニシエータ13に対応するコマンド制御回路53は、データ転送シーケンスの実行中であっても、イニシエータ13からのコマンドフェッチ要求を受け取り、シーケンス実行許可を待つ。
Further, assume that a command fetch request packet of the WRITE command is received from the
マルチ制御回路44は、イニシエータ11に対するデータ転送処理シーケンスが終了すると、コマンド制御回路52におけるコマンドのキューイング状態、すなわち、コマンド制御回路52がコマンドフェッチ要求を受けているか否かを調べる。キューイングされていると認識した場合には、マルチ制御回路44は、コマンド制御回路52に対してシーケンス実行許可を与える。コマンド制御回路52は、マルチ制御回路44からシーケンス実行許可を受けると、イニシエータ12に対してコマンド処理シーケンスを実行する。パケット処理回路45は、受信したパケットをコマンド受信バッファ47に格納する。
When the data transfer processing sequence for the
CPU31は、コマンドをコマンド受信バッファ47から読み出し、WRITEコマンドを実行するために転送制御回路46を起動する。転送制御回路46は、イニシエータ12からデータを読み出すために、リンクコア回路42にパケットを転送する。転送制御回路46は、イニシエータ12から受信したデータをリンクコア回路42を介して読み出し、DMAバス6及びDVD−RAMコントローラ3を介して、DVD−RAMディスク5に対して書き込む。指定された量の転送データがDVD−RAMディスク5に書き込まれた後、転送制御回路46は、イニシエータ12に対してステータス情報を送信して、データ転送処理シーケンスが終了する。
The
マルチ制御回路44は、イニシエータ12に対するコマンド処理シーケンスが終了すると、コマンド制御回路53におけるコマンドのキューイング状態を調べ、キューイングされていると認識した場合には、コマンド制御回路53に対してシーケンス実行許可を与える。コマンド制御回路53は、マルチ制御回路44からシーケンス実行許可を受けると、イニシエータ13に対してコマンドフェッチを行い、コマンド受信バッファ47に受信パケットを格納する。その後、同様に、CPU31は転送制御回路46を起動し、READコマンドを実行する。
When the command processing sequence for the
以上のように、本実施形態のマルチイニシエータ制御装置2では、コマンド制御回路51,52,53は、それぞれが対応するイニシエータに対するコマンド処理シーケンスを行い、マルチ制御回路44は、コマンド制御回路51,52,53を制御して、複数のイニシエータとの間のシーケンスを可能にする。このため、CPU31は、コマンドフェッチ等のコマンド処理シーケンスを行う必要がない。また、CPU31は、コマンド受信バッファ47に格納されたコマンドを実行するが、データ転送処理シーケンスは、転送制御回路46によって行われる。したがって、効率的なシーケンス制御及びデータ転送制御が可能であり、CPU31の負荷を大きくすることなく、複数のイニシエータの管理を行うことができる。
As described above, in the
(変形例)
本変形例においては、マルチ制御回路44に代わってCPU31が、制御レジスタ48を介してコマンド制御回路51〜53にシーケンス実行許可を与え、コマンドをフェッチするタイミングを制御する例について説明する。
(Modification)
In the present modification, an example will be described in which the
例えば、転送制御回路46が行うデータ転送処理シーケンスは、基本的にはハードウェアだけで処理を行うことができる。ところが、イニシエータから受信するコマンドの処理には、ハードウェアだけでは処理できず、ファームウェアによる処理が必要な場合がある。また、データ転送処理シーケンスを行っているときであっても、転送データにエラーが生じ、これに対処するためのファームウェアによる処理が必要な場合等がある。
For example, the data transfer processing sequence performed by the
このような場合、CPU31が実行するファームウェアによる処理は、ハードウェアによる処理に追いつかない場合があるため、CPU31がコマンド処理シーケンスを制御する必要がある。
In such a case, the process performed by the firmware executed by the
図2,3を参照して説明する。イニシエータ11,12のLOGINコマンドの処理が終わっているものとする。イニシエータ11は、コマンド制御回路51のORB_POINTERレジスタR13に対して、BWRQパケットを送信する。マルチ制御回路44が、イニシエータ11に対応するコマンド制御回路51にシーケンス実行許可を与えると、コマンド制御回路51は、イニシエータ11に対してコマンドフェッチを行う。パケット処理回路45は、このときのイニシエータ11からの受信パケットをコマンド受信バッファ47に格納する。CPU31はコマンド受信バッファ47のコマンドを読み出し、実行する。このコマンドは、ファームウェアによる処理が必要なコマンドであるとする。
This will be described with reference to FIGS. It is assumed that the LOGIN command processing of the
このときCPU31は、制御レジスタ48を介して、コマンド制御回路52をシーケンス実行許可待ちにする。CPU31がイニシエータ11のコマンドを実行中に、イニシエータ12から入力された、例えばREADコマンドのコマンドフェッチ対象のアドレスは、コマンド制御回路52に格納される。
At this time, the
CPU31は、イニシエータ11のコマンド処理が終了すると、マルチ制御回路44に対してシーケンス実行許可を与え、マルチ制御回路44は、コマンド制御回路52に対してシーケンス実行許可を与える。シーケンス実行許可を得たコマンド制御回路52は、イニシエータ12のコマンドをフェッチする。パケット処理回路45は、イニシエータ12から受信したパケットをコマンド受信バッファ47に格納する。CPU31はコマンド受信バッファ47のコマンドを読み出し、イニシエータ12のコマンドを実行する。
When the command processing of the
以上のように、本変形例によると、コマンド処理シーケンスの起動タイミングをCPU31から任意に制御することができるため、コマンド処理シーケンスとCPU31の動作との間で同期をとることができ、CPU31からのシーケンスの管理が容易となる。
As described above, according to the present modification, the start timing of the command processing sequence can be arbitrarily controlled from the
以上の実施形態では、イニシエータがDVD−RAMディスクとの間でデータを転送する例について説明したが、他の形式の光ディスク、磁気ディスク等のデータ記録媒体等との間でデータを転送する場合も同様である。 In the above embodiment, the example in which the initiator transfers data to and from the DVD-RAM disk has been described. However, the data may be transferred to and from other types of data recording media such as optical disks and magnetic disks. It is the same.
1 光ディスクドライブ
2 マルチイニシエータ制御装置
3 DVD−RAMコントローラ
4 ヘッド
5 DVD−RAMディスク
6 DMAバス
11,12,13 イニシエータ(機器)
21,22,23 IEEE1394シリアルバス(伝送路)
31 CPU
41 物理層コントローラ
42 リンクコア回路
43 パケットフィルタ
44 マルチ制御回路
45 パケット処理回路
46 転送制御回路
47 コマンド受信バッファ
48 制御レジスタ
51,52,53 コマンド制御回路
DESCRIPTION OF
21, 22, 23 IEEE 1394 serial bus (transmission path)
31 CPU
41
Claims (10)
送信すべきパケットを前記伝送路に送信する一方、前記伝送路からパケットを受信し、誤り検出を行って出力するリンクコア回路と、
前記リンクコア回路が受信したパケットを解析し、その結果を出力するパケットフィルタと、
各々、対応する機器との間のコマンド処理シーケンスを制御する複数のコマンド制御回路と、
前記複数のコマンド制御回路のうちの1つにシーケンス実行許可を与えるマルチ制御回路と、
前記許可を与えられたコマンド制御回路が出力する情報を有するパケットを前記送信すべきパケットとして生成し、前記リンクコア回路に出力して送信させる一方、前記リンクコア回路が受信して出力したパケットを前記パケットフィルタが出力する解析結果に従って出力するパケット処理回路と、
前記パケット処理回路が出力するパケットに含まれるコマンドを実行するCPU(central processing unit)とを備えた
マルチイニシエータ制御装置。 A multi-initiator control device that performs communication in units of packets with each of a plurality of devices connected via a transmission path,
A link core circuit that transmits a packet to be transmitted to the transmission line, receives a packet from the transmission line, performs error detection, and outputs the link core circuit;
A packet filter for analyzing the packet received by the link core circuit and outputting the result;
A plurality of command control circuits each for controlling a command processing sequence with a corresponding device;
A multi-control circuit for granting sequence execution permission to one of the plurality of command control circuits;
A packet having information output from the command control circuit to which the permission is given is generated as the packet to be transmitted, and is output and transmitted to the link core circuit, while a packet received and output by the link core circuit is generated. A packet processing circuit that outputs in accordance with an analysis result output by the packet filter;
A multi-initiator control device comprising: a CPU (central processing unit) that executes a command included in a packet output from the packet processing circuit.
前記複数のコマンド制御回路は、それぞれ、
対応する機器が出力し、当該対応する機器との間のコマンド処理シーケンスに必要な情報を格納して、これを前記シーケンス実行許可が与えられると出力するものであり、
前記マルチ制御回路は、
前記リンクコア回路が受信して出力するパケットに含まれる、当該パケットを送信した機器との間のコマンド処理シーケンスに必要な情報を、前記パケットフィルタの出力に応じて、前記複数のコマンド制御回路のうち当該機器に対応するものに出力して格納させるものであり、
前記パケット処理回路は、
前記シーケンス実行許可を与えられたコマンド制御回路が出力する情報を有するパケットを生成して出力し、これに応答して当該コマンド制御回路に対応する機器が出力したパケットを、受信して出力するものである
ことを特徴とするマルチイニシエータ制御装置。 The multi-initiator control device according to claim 1,
Each of the plurality of command control circuits is
The corresponding device outputs, stores information necessary for the command processing sequence with the corresponding device, and outputs this when the sequence execution permission is given,
The multi-control circuit includes:
Information necessary for a command processing sequence with a device that has transmitted the packet, included in a packet received and output by the link core circuit, is output from the plurality of command control circuits according to the output of the packet filter. Among them, it is output and stored in the one corresponding to the device,
The packet processing circuit includes:
Generates and outputs a packet having information output from the command control circuit given the sequence execution permission, and receives and outputs a packet output by a device corresponding to the command control circuit in response to the packet A multi-initiator control device characterized by
前記複数のコマンド制御回路は、それぞれ、
対応する機器から送信されたコマンドフェッチ要求パケットの情報を格納し、前記マルチ制御回路から前記シーケンス実行許可が与えられた場合に、当該機器に対してコマンドフェッチ動作を行う
ことを特徴とするマルチイニシエータ制御装置。 The multi-initiator control device according to claim 1,
Each of the plurality of command control circuits is
A multi-initiator that stores information of a command fetch request packet transmitted from a corresponding device and performs a command fetch operation on the device when the sequence execution permission is given from the multi-control circuit. Control device.
前記複数のコマンド制御回路は、それぞれ、
データ転送処理シーケンスの実行中であっても、対応する機器からのコマンドフェッチ要求を受け取る
ことを特徴とするマルチイニシエータ制御装置。 The multi-initiator control device according to claim 3,
Each of the plurality of command control circuits is
A multi-initiator control device that receives a command fetch request from a corresponding device even during execution of a data transfer processing sequence.
前記複数のコマンド制御回路は、それぞれ、
コマンド処理シーケンスを行うためのアドレスを格納するレジスタを有するものであり、
前記レジスタのアドレスは、当該レジスタが属するコマンド制御回路の対応する機器のノード番号に応じて、前記複数のコマンド制御回路のうちの基準とするもののレジスタのアドレスを、所定の値を単位としてアドレス拡張して得られたものである
ことを特徴とするマルチイニシエータ制御装置。 The multi-initiator control device according to claim 1,
Each of the plurality of command control circuits is
It has a register that stores an address for performing a command processing sequence,
The address of the register is the address of the register of the reference of the plurality of command control circuits, in units of a predetermined value, according to the node number of the corresponding device of the command control circuit to which the register belongs. A multi-initiator control device obtained by the method described above.
前記マルチ制御回路は、
コマンド処理シーケンスが終了する毎に前記複数の機器から1つを所定の順で選択して、前記複数のコマンド制御回路のうち選択された機器に対応したものに前記シーケンス実行許可を与える
ことを特徴とするマルチイニシエータ制御装置。 The multi-initiator control device according to claim 1,
The multi-control circuit includes:
Each time a command processing sequence ends, one of the plurality of devices is selected in a predetermined order, and the sequence execution permission is given to the one corresponding to the selected device among the plurality of command control circuits. Multi-initiator control device.
前記パケット処理回路が当該マルチイニシエータ制御装置の外部との間で行うデータ転送の制御を行う転送制御回路を更に備え、
前記パケット処理回路は、
前記パケットフィルタが出力するパケットから転送すべきデータを取り出して前記転送制御回路に出力する一方、前記転送制御回路に転送されて来たデータからパケットを生成して前記リンクコア回路に出力する
ことを特徴とするマルチイニシエータ制御装置。 The multi-initiator control device according to claim 1,
The packet processing circuit further comprises a transfer control circuit for controlling data transfer to / from the outside of the multi-initiator control device,
The packet processing circuit includes:
Extracting data to be transferred from the packet output by the packet filter and outputting it to the transfer control circuit, while generating a packet from the data transferred to the transfer control circuit and outputting the packet to the link core circuit. A featured multi-initiator control device.
前記CPUが前記複数のコマンド制御回路にシーケンス実行許可を与えることができるように構成されている
ことを特徴とするマルチイニシエータ制御装置。 The multi-initiator control device according to claim 1,
A multi-initiator control device configured to allow the CPU to give sequence execution permission to the plurality of command control circuits.
前記複数の機器のそれぞれのノード番号と、ノード番号を識別するためのフィールドにおけるビットの位置とが対応付けられており、前記機器のそれぞれを、前記フィールドにおけるビットの位置で識別するように構成されている
ことを特徴とするマルチイニシエータ制御装置。 The multi-initiator control device according to claim 1,
A node number of each of the plurality of devices is associated with a bit position in a field for identifying the node number, and each of the devices is configured to be identified by a bit position in the field. A multi-initiator control device.
前記複数の機器のうちの1つからコマンドフェッチ要求を受けたことを記憶しているか否かを判定するステップと、
コマンドフェッチ要求を受けたことを記憶していると判定したときは、当該機器からコマンドをフェッチして実行するステップとを備え、
前記複数の機器から1つを所定の順で選択することを繰り返し、選択された機器について前記判定を行うステップと前記コマンドを実行するステップとを行う
マルチイニシエータ制御方法。 A multi-initiator control method for performing communication in units of packets with each of a plurality of devices connected via a transmission path,
Determining whether a command fetch request has been received from one of the plurality of devices is stored;
A step of fetching and executing a command from the device when it is determined that the command fetch request is stored.
A multi-initiator control method that repeatedly selects one of the plurality of devices in a predetermined order, and performs the determination and the command execution for the selected device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004230560A JP2005018800A (en) | 2000-12-05 | 2004-08-06 | Multi-initiator control device and method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000370375 | 2000-12-05 | ||
JP2004230560A JP2005018800A (en) | 2000-12-05 | 2004-08-06 | Multi-initiator control device and method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001366445A Division JP2002244991A (en) | 2000-12-05 | 2001-11-30 | Method and device for controlling multi-initiator |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005018800A true JP2005018800A (en) | 2005-01-20 |
JP2005018800A5 JP2005018800A5 (en) | 2005-06-23 |
Family
ID=34196416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004230560A Pending JP2005018800A (en) | 2000-12-05 | 2004-08-06 | Multi-initiator control device and method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005018800A (en) |
-
2004
- 2004-08-06 JP JP2004230560A patent/JP2005018800A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1389760B1 (en) | Data transfer control system, program and data transfer control method | |
US20070180336A1 (en) | Multi-initiator control unit and method | |
JP3584789B2 (en) | Data transfer control device and electronic equipment | |
US7460531B2 (en) | Method, system, and program for constructing a packet | |
KR100405250B1 (en) | Data transfer control device and electronic apparatus | |
US20040057448A1 (en) | Information processing system, information processing apparatus, and information processing method | |
US7127530B2 (en) | Command issuing apparatus for high-speed serial interface | |
JP3733699B2 (en) | Serial interface circuit | |
US6580711B1 (en) | Serial interface circuit and signal processing method of the same | |
KR19990006761A (en) | Data transmitter, data receiver, data transmitter and data transmission method | |
EP1033658B1 (en) | Communication apparatus with means for allocating alternate designation information to each function unit, and communication system with two such communication apparatus | |
JP3539287B2 (en) | Data transfer control device and electronic equipment | |
JP2005018800A (en) | Multi-initiator control device and method | |
JP2000224195A (en) | Data transmitter | |
JP4582180B2 (en) | Data transmission equipment | |
JPH1117710A (en) | Serial interface circuit | |
JP2002244991A (en) | Method and device for controlling multi-initiator | |
JP4514411B2 (en) | Inter-bus communication interface device | |
JP3606145B2 (en) | Data transfer control device and electronic device | |
JP3610982B2 (en) | Data transfer control device and electronic device | |
JP2004228835A (en) | Data transfer method and data transfer system | |
JPH11308300A (en) | Serial interface circuit | |
JP2006330968A (en) | Serial data transmission/reception method and serial data transmission/reception device | |
JP2003023471A (en) | Packet transmission/reception processing circuit | |
JPH11308301A (en) | Serial interface circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041130 |
|
A621 | Written request for application examination |
Effective date: 20041130 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A131 | Notification of reasons for refusal |
Effective date: 20080122 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A521 | Written amendment |
Effective date: 20080324 Free format text: JAPANESE INTERMEDIATE CODE: A523 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080415 |
|
A02 | Decision of refusal |
Effective date: 20080819 Free format text: JAPANESE INTERMEDIATE CODE: A02 |