(57)【特許請求の範囲】
【請求項１】
自ノードとシリアルインタフェースバスを介して接続された他ノード間でパケットの送受信を行うシリアルインタフェース回路であって、
自ノードから他ノードへの要求パケットを生成し、上記シリアルインタフェースバスに送出し、当該要求パケットに対する応答パケットに対する受信処理を行うデータ処理回路と、
受信した応答パケットにエラーが有るか否かを判別し、エラーがある場合にはそのエラー内容を判別するエラー判別回路と、
受信したパケットにあるトランザクションコードおよびラベルをチェックし、イニシエータからターゲットである上記データ処理回路に対しての応答パケットであるかその他のパケットであるかの分別を行い、応答パケットのみを上記データ処理回路に入力させる分別回路と、を有し、
上記エラー判別回路は、
要求パケットに対する適当な応答パケットが返ってきたか否かの判別を行い、不適当な応答パケットである場合には、送信した要求に不適当な応答パケットが返ってきたエラーであると判別し、
適当な応答パケットが返ってきたと判別すると、その応答がコンプリート(Complete)、ビジー(Busy)、ペンディング(Pending)、であるかで異なる判別処理を行い、
コンプリートの場合には、要求に対応した受信または送信あるかを判別し、要求の対応しない場合には送信した要求に不適当な応答パケットが返ってきたエラーであると判別し、要求に対応する場合には、エラーなしのコンプリートであると判別し、
ビジーの場合には、再送信を行うリトライ動作を行い、このリトライ回数が、あらかじめ設定したリトライ制限回数に達したか否かの判別を行い、リトライ制限回数に達していると相手がビジーであるエラーと判別し、
ペンディングンの場合には、応答パケットをあらかじめ設定した時間内に受信したか否かを判別し、時間内に受信したかった場合には規定時間内に応答が戻らないというエラーであると判別する
シリアルインタフェース回路。
【請求項２】
上記エラー判別回路は、エラーを検出すると上記データ処理回路のパケットの送受信処理を停止させる
請求項１記載のシリアルインタフェース回路。
【請求項３】
エラーレジスタを有し、
上記エラー判別回路は、エラーを検出した場合にはエラー内容を上記エラーレジスタにセットする
請求項１記載のシリアルインタフェース回路。
【請求項４】
エラーレジスタを有し、
上記エラー判別回路は、エラーを検出した場合にはエラー内容を上記エラーレジスタにセットする
請求項２記載のシリアルインタフェース回路。
【請求項５】
上記エラーレジスタにエラー内容がセットされている場合には、上記データ処理回路を初期化する制御回路
を有する請求項３記載のシリアルインタフェース回路。
【請求項６】
上記エラーレジスタにエラー内容がセットされている場合には、上記データ処理回路を初期化する制御回路
を有する請求項４記載のシリアルインタフェース回路。
【請求項７】
上記エラー判別回路はエラーを検出すると上記制御回路にエラーを検出した旨を知らせ、
上記制御回路は、エラー検出の知らせを受けて上記エラーレジスタの読み出しを行い、上記初期化処理を行う
請求項５記載のシリアルインタフェース回路。
【請求項８】
上記エラー判別回路はエラーを検出すると上記制御回路にエラーを検出した旨を知らせ、
上記制御回路は、エラー検出の知らせを受けて上記エラーレジスタの読み出しを行い、上記初期化処理を行う
請求項６記載のシリアルインタフェース回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディジタルシリアルインタフェース回路に係り、特にＨＤＤ（Ｈard Disk Drive) 、ＤＶＤ(Digital Video Disk)−ＲＯＭ、ＣＤ(Compact Disk)−ＲＯＭ、テープストリーマ(Tape Streamer) 等のストレージ装置に接続するシリアルインタフェース回路に関するものである。
【０００２】
【従来の技術】
近年、マルチメディア・データ転送のためのインタフェースとして、高速データ転送、リアルタイム転送を実現するＩＥＥＥ（The Institute of Electrical and Electronic Engineers) １３９４、Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｓｉｒｉａｌ  Ｂｕｓが規格化された。
【０００３】
このＩＥＥＥ１３９４シリアルインタフェースのデータ転送においては、ネットワーク内で行われる転送動作をサブアクションと呼び、２つのサブアクションが規定されている。
一つは、従来のRequest,Acknowledge の要求、受信確認を行うアシンクロナス（Asynchronous) 転送であり、他の一つはあるノードから１２５μｓに１回必ずデータが送られるアイソクロナス(Isochronous) 転送である。
【０００４】
このように、２つの転送モードを有するＩＥＥＥ１３９４シリアルインタフェースでのデータは、パケット単位で転送が行われるが、ＩＥＥＥ１３９４規格では、取り扱う最小データの単位は１クワドレット(quadlet) （＝４バイト＝３２ビット）である。
【０００５】
ＩＥＥＥ１３９４規格では、通常、コンピュータデータは、図７に示すように、アシンクロナス転送を用いて行われる。
アシンクロナス転送は、図７（ａ）に示すように、バスを獲得するためのアービトレーション（ａｒｂ）、データを転送するパケットトランスミッション、およびアクノリッジメント（ａｃｋ）の３つの遷移状態をとる。
【０００６】
そして、パケットトランスミッションの実行は、図７（ｂ）に示すようなフォーマットで行われる。
転送パケットの第１クワドレットは、１６ビットのデスティネーションＩＤ(destination ID)領域、６ビットのトランザクション  ラベルｔｌ(transaction label) 領域、２ビットのリトライ  コードｒｔ(retry code)領域、４ビットのトランザクション  コードｔｃｏｄｅ(transaction code) 領域、および４ビットのプライオリティｐｒｉ(priority)領域から構成されている。
デスティネーションＩＤ領域はこのノードのバスナンバーとノードナンバー、プライオリティ領域は優先レベルを示す。
【０００７】
第２クワドレットおよび第３クワドレットは、１６ビットのソースＩＤ(source ID) 領域、および４８ビットのデスティネーション  オフセット(destination
offset)領域により構成されている。
ソースＩＤ領域はこのパケットを送ったノードＩＤを示し、デスティネーション・オフセット領域はハイ(High)およびロー(Low) の連続した領域からなり、デスティネーション  ノードのアドレス空間のアドレスを示す。
【０００８】
第４クワドレットは、１６ビットのデータ長(data length) 領域、および１６ビットのイクステンディド・トランザクション・コード(extended tcode)領域に構成されている。
データ長領域は受信したパケットのバイト数を示し、イクステンディド tcode領域はｔｃｏｄｅがロック・トランザクション(Lock transaction)の場合、このパケットのデータが行う実際のロック動作(Lock Action) を示す領域である。
【０００９】
データフィールド領域(data field)の前のクワドレットに付加されたヘッダＣＲＣ（header CRC) 領域は、パケットヘッダの誤り検出符号である。
また、データ領域(data field)の後のクワドレットに付加されたデータＣＲＣ（data CRC) 領域は、データフィールドの誤り検出符号である。
【００１０】
【発明が解決しようとする課題】
ところで、上述したように、アシンクロナス転送で行われる通常のコンピュータデータの転送では、そのプロトコルとして、ＳＢＰ−２(Serial Bus Protocol-2) が用いられる。
このプロトコルによると、ストレージデバイス(Storage Device)であるターゲット(Target)からホストコンピュータ(Host Computer) であるイニシエータ(Initiator) にデータを転送するときは、ストレージデバイスからホストコンピュータのメモリへデータを書き込む形で、またホストコンピュータからターゲットにデータを転送するときは、ストレージデバイスがホストコンピュータのメモリのデータを読み出す形で転送が行われる。
【００１１】
しかしながら、ストレージデバイスに格納される、あるいはストレージデバイスから読み出される大容量のデータをＩＥＥＥ１３９４規格のパケットにして、送受信するための、いわゆるトランザクション・レイヤ(Transaction Layer) をコントロールする処理系回路システムが未だ確立されていない。
また、トラザクション系における通信エラーの検出、判別回路も実現する必要がある。
【００１２】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、大容量のデータを所定の規格に合わせたパケットにして送受信することができ、また、エラーが発生した場合にその判別を行うことができ、円滑な送受信処理をすることができるシリアルインタフェース回路を提供することにある。
【００１３】
【課題を解決するための手段】
上記目的を達成するため、本発明は、自ノードとシリアルインタフェースバスを介して接続された他ノード間でパケットの送受信を行うシリアルインタフェース回路であって、自ノードから他ノードへの要求パケットを生成し、上記シリアルインタフェースバスに送出し、当該要求パケットに対する応答パケットに対する受信処理を行うデータ処理回路と、受信した応答パケットにエラーが有るか否かを判別し、エラーがある場合にはそのエラー内容を判別するエラー判別回路と、受信したパケットにあるトランザクションコードおよびラベルをチェックし、イニシエータからターゲットである上記データ処理回路に対しての応答パケットであるかその他のパケットであるかの分別を行い、応答パケットのみを上記データ処理回路に入力させる分別回路と、を有し、上記エラー判別回路は、要求パケットに対する適当な応答パケットが返ってきたか否かの判別を行い、不適当な応答パケットである場合には、送信した要求に不適当な応答パケットが返ってきたエラーであると判別し、適当な応答パケットが返ってきたと判別すると、その応答がコンプリート(Complete)、ビジー(Busy)、ペンディング(Pending)、であるかで異なる判別処理を行い、コンプリートの場合には、要求に対応した受信または送信あるかを判別し、要求の対応しない場合には送信した要求に不適当な応答パケットが返ってきたエラーであると判別し、要求に対応する場合には、エラーなしのコンプリートであると判別し、ビジーの場合には、再送信を行うリトライ動作を行い、このリトライ回数が、あらかじめ設定したリトライ制限回数に達したか否かの判別を行い、リトライ制限回数に達していると相手がビジーであるエラーと判別し、ペンディングンの場合には、応答パケットをあらかじめ設定した時間内に受信したか否かを判別し、時間内に受信したかった場合には規定時間内に応答が戻らないというエラーであると判別する。
【００１４】
また、本発明では、上記エラー判別回路は、エラーを検出すると上記データ処理回路のパケットの送受信処理を停止させる。
【００１５】
また、本発明では、エラーレジスタを有し、上記エラー判別回路は、エラーを検出した場合にはエラー内容を上記エラーレジスタにセットする。
【００１６】
また、本発明では、上記エラーレジスタにエラー内容がセットされている場合には、上記データ処理回路を初期化する制御回路を有する。
【００１７】
また、本発明では、上記エラー判別回路はエラーを検出すると上記制御回路にエラーを検出した旨を知らせ、上記制御回路は、エラー検出の知らせを受けて上記エラーレジスタの読み出しを行い、上記初期化処理を行う。
【００１８】
また、本発明の回路によれば、データ処理回路において、自ノードから他ノードへの要求パケットが生成され、シリアルインタフェースバスに送出される。
そして、他ノードからの要求パケットに対する応答パケットが受信されて所定の処理が行われる。
また、応答パケットはエラー判別回路にも入力される。エラー判別回路では、受信した応答パケットにエラーが有るか否かが検出され、かつエラーがある場合にはそのエラー内容が判別される。
たとえば、エラー判別回路でエラーが検出されると、データ処理回路のパケットの送受信処理が停止され、また、そのエラー内容がエラーレジスタにセットさされるとともに、エラーを検出した旨が制御回路に知らされる。すなわち、エラー割り込みが行われる。
制御回路では、エラー検出の知らせを受けると、エラーレジスタの内容の読み出しが行われ、データ処理回路に対する初期化処理が行われる。
【００１９】
【発明の実施の形態】
図１は、本発明に係るＩＥＥＥ１３９４シリアルインタフェース回路の一実施形態を示すブロック構成図である。
なお、このシリアルインタフェース回路は、アシンクロナス通信で扱われるコンピュータデータの転送を行うことを目的として構成されている。このため、図１においては、アイソクロナス通信系回路の具体的な構成は図示していない。
【００２０】
このシリアルインタフェース回路は、リンク／トランザクション・レイヤ集積回路１０、フィジカル・レイヤ回路２０、ストレージデバイスとしての図示しないハードディスクドライバ（ＨＤＤ）のコントローラ３０、ホストコンピュータとしてのローカルプロセッサ４０により構成されている。
【００２１】
リンク／トランザクション・レイヤ集積回路１０は、リンク・レイヤ回路１００およびトランザクション・レイヤ回路１２０が集積化されて構成され、ローカルプロセッサ４０の制御の下、アシンクロナス転送の制御、並びにフィジカル・レイヤ回路２０の制御を行う。
【００２２】
リンク・レイヤ回路１００は、図１に示すように、リンクコア(Link Core))１０１、ＣＰＵインタフェース回路（Sub-CPU I/F ）１０２、アシンクロナス通信で用いられる送信用ＦＩＦＯ（AT-FIFO:First-In First-Out) １０３、受信用ＦＩＦＯ（AR-FIFO)１０４、受信パケットを判別する分別回路(DeMux) １０５、セルフＩＤ用リゾルバ(Resolver)１０６、およびコントロールレジスタ（Control Registers 、以下ＣＲという）１０７により構成されている。
【００２３】
リンクコア１０１は、コマンドやコンピュータデータが転送されるアシンクロナス通信用パケットおよびアイソクロナス通信用パケットの送信回路、受信回路、これらパケットのＩＥＥＥ１３９４シリアルバスＢＳを直接ドライブするフィジカル・レイヤ回路２０とのインタフェース回路、１２５μｓ毎にリセットされるサイクルタイマ、サイクルモニタやＣＲＣ回路から構成されている。
また、図示しないハードディスクから読み出され、トランザクション・レイヤ回路１２０で所定の送信パケットとして生成されたコンピュータデータの送信処理等を行う。
たとえば、後述するトランザクション・レイヤ回路１２０のトランザクションコントローラ１２６から送るべきデータがある旨の知らせを受けるとフィジカル・レイヤ回路２０を経由して１３９４シリアルバスのアービトレーションを行いバスを確保する。
なお、図１では、上述したように、アイソクロナス通信系のＦＩＦＯ等は省略している。
【００２４】
ＣＰＵインタフェース回路１０２は、ローカルプロセッサ４０と送信用ＦＩＦＯ１０３、受信用ＦＩＦＯ１０４とのアシンクロナス通信用パケットの書き込み、読み出し等の調停、並びに、ローカルプロセッサ４０とＣＲ１０７との各種データの送受信の調停を行う。
たとえば、イニシエータとしてのホストコンピュータからＩＥＥＥ１３９４インタフェースバスＢＳを送信され、受信用ＦＩＦＯに格納されたストレージデバイスとしてのハードディスクのコントロール用コマンドをローカルプロセッサ４０に伝送する。
【００２５】
ローカルプロセッサ４０からは、コンピュータデータを送受信するためにトランザクション・レイヤ回路１２０を起動させるためのデータがＣＰＵインタフェース１０２を通してＣＲ１０７にセット（ＡＤＰst＝１）される。
【００２６】
送信用ＦＩＦＯ１０３には、ＩＥＥＥ１３９４シリアルバスＢＳに伝送させるアシンクロナス通信用パケットが格納され、格納データはリンクコア１０１に与えられる。
【００２７】
また、受信用ＦＩＦＯ１０４は、ＩＥＥＥ１３９４シリアルバスＢＳを伝送されてきたアシンクロナス通信用パケット、たとえばストレージデバイスとしてのハードディスクのコントロール用コマンド等が、分別回路１０５により格納される。
【００２８】
分別回路１０５は、リンクコア１０１を介したアシンクロナス通信用パケットの第１クワドレッドにあるトランザクションコードｔｃｏｄｅ(Transaction code)およびトランザクションラベルｔｌ(Transaction label) をチェックし、イニシエータであるホストコンピュータからターゲットであるトランザクション・レイヤ回路に対しての応答パケット(Response Packet) であるかその他のパケットであるかの分別を行い、応答パケットのみをトランザクション・レイヤ回路１２０に入力させ、その他のパケットを受信用ＦＩＦＯ１０４に格納する。
【００２９】
なお、分別のチェックに用いられるトランザクションラベルｔｌは共通に「ａ」にセットされ、ｔｃｏｄｅ(Transaction code)は、書き込み(Write) の要求（request)および応答(Response)、読み出し(Read)の要求（Read request) および応答(Read Response) で異なるデータがセットされる。
具体的には、ｔｃｏｄｅは、書き込み要求（Write request)でクワドレット書き込み(Quadlet Write) の場合には「０」、ブロック書き込み(Block Write) の場合には「１」にセットされる。
また、書き込み応答(Write Response)の場合には「２」にセットされる。
読み出し要求（Read request) でクワドレット読み出し(Quadlet Read)の場合には「４」、ブロック読み出し(Block Read)の場合には「５」にセットされる。
また、読み出し応答(Read Response) の場合には「６／７」にセットされる。
【００３０】
リゾルバ１０６は、ＩＥＥＥ１３９４シリアルインタフェースバスＢＳを伝送されてきたセルフＩＤパケットを解析し、ＣＲ１０７に格納する。また、エラーチェック、ノード数のカウント等の機能も有する。
【００３１】
トランザクション・レイヤ回路１２０は、コンピュータ周辺機器（本実施形態ではハードディスク）のデータをＳＢＰ−２(Serial Bus Protocol-2) 規格に基づいて、アシンクロナスパケットとして自動的に送信、受信をする機能を備えている。
また、トランザクション・レイヤ回路１２０は、リトライ(Retry) 機能並びにスプリットタイムアウト(Split Timeout) 検出機能を備えている。
リトライ機能は、要求パケットを送信した後、ack busy* のＡｃｋコードが返ってきた場合、該当する要求パケットを再送信する機能である。パケットを再送信する場合、送信パケットの第１クワドレッドにある２ビットのｒｔ領域を「００」から「０１」にセットしてコアリンク１０１に知らせ送信する。
スプリットタイムアウト(Split Timeout) 検出機能は、応答パケットが返ってくるまでのタイムアウトを検出する機能である。
【００３２】
このトランザクション・レイヤ回路１２０は、トランスポートデータインタフェース回路１２１、要求パケット生成回路(SBPreq)１２２、応答パケットデコード回路(SBPRsp)１２３、要求用ＦＩＦＯ(Request FIFO:ADPTF)１２４、応答用ＦＩＦＯ(Response FIFO:ADPRF) １２５、およびトランザクションコントローラ１２６により構成されている。
そして、要求パケット生成回路１２２、応答パケットデコード回路１２３、要求用ＦＩＦＯ１２４、応答用ＦＩＦＯ１２５、およびトランザクションコントローラ１２６によりデータ処理回路ＡＤＰが構成される。
【００３３】
トランスポートデータインタフェース回路１２１は、ＨＤＤコントローラ３０と要求パケット生成回路１２２、応答パケットデコード回路１２３とのデータの送受信の調停を行う。
【００３４】
要求パケット生成回路１２２は、リンク・レイヤ回路１００のＣＲ１０７からデータ転送起動の指示を受けると、送信（書き込み）の場合、ＳＢＰ−２規格に従ってトランスポートデータインタフェース回路１２１を介して得た図示しないハードディスクに記録されたコンピュータデータをパケットに分けられるように１個以上のデータに分け、ＣＲ１０７にセットされた転送データ長等のデータに基づいてＳＢＰプロトコルのアドレスを算出し、パケット毎に増加する１３９４バスアドレスとトランザクションラベルｔｌ（＝ａ）やトランザクションコードｔｃｏｄｅ（たとえば１または５）等を設定した４クラドレットからなる１３９４ヘッダを付加して要求用ＦＩＦＯ１２４に格納する。
また、受信（読み出し）の場合には、ＳＢＰ−２規格に従って、ＣＲ１０７にセットされた転送データ長等のデータに基づいてＳＢＰプロトコルのアドレスを算出し、パケット毎に増加する１３９４バスアドレスとトランザクションラベルｔｌ（＝ａ）やトランザクションコードｔｃｏｄｅ（たとえば１または５）等を設定し、指定されたアドレス、データ長分の１３９４ブロック読み出し要求コマンド(Block read Request Command)を１個以上のパケットにして要求用ＦＩＦＯ１２４に格納する。
【００３５】
なお、要求パケット生成回路１２２は、送信および受信時には、ＣＲ１０７にて指定される最大長データmax-payload を受けて送信する要求パケットに対する応答パケットの最大データ長を計算する。
この最大データ長（バイト）maxpl は次式に基づいて求められる。
【００３６】
【数１】
maxpl ＝２(max,Payload+2)         …（１）
【００３７】
応答パケットデコード回路１２３は、受信時に応答用ＦＩＦＯ１２５に格納されたデータを読み出し、１３９４ヘッダを取り除いて、データを所定のタイミングでトランスポートデータインタフェース回路１２１を介してＨＤＤコントローラ３０に出力する。
【００３８】
要求用ＦＩＦＯ１２４は、送信（書き込み）時にはパケット化された送信データが格納され、受信（読み出し）の場合には、１３９４ブロック読み出し要求コマンドが格納される。
なお、要求用ＦＩＦＯ１２４は、送るべきデータを記憶しているときは、その旨を示すたとえばローレベル（「０」）でアクティブの信号ＥＭＴをトランザクションコントローラ１２６に出力する。
【００３９】
応答用ＦＩＦＯ１２５は、受信（読み出し）の場合には、ホストコンピュータ側から１３９４シリアルバスＢＳを伝送されてきた受信データが格納される。
なお、応答用ＦＩＦＯ１２５は、残りの記憶容量を示す信号をトランザクションコントローラ１２６に出力する。
【００４０】
トランザクションコントローラ１２６は、送信時に要求用ＦＩＦＯ１２４に格納されたパケット化された送信データ、および受信時に要求用ＦＩＦＯ１２４に格納された１３９４ブロック読み出し要求コマンド（要求パケット）のリンク・レイヤコア回路１００のリンクコア１０１への出力制御を行う。
また、送信時に、リンク・レイヤ回路１００の分別回路１０５からの応答パケットを受けて、そのリトライコードｒｃｏｄｅをＣＲ１０７に書き込み、受信時には分別回路１０５からの応答パケットを応答用ＦＩＦＯ１２５に格納する。
【００４１】
また、トランザクションコントローラ１２６は、図２に示すように、応答パケット（他ノードからの受信確認であるAcknowledge も含む）にエラーが有るか否かを判別し、エラーがある場合にはそのエラー内容を判別し、要求パケット生成回路１２２、応答パケットデコード回路１２３、要求用ＦＩＦＯ１２４および応答用パケット１２５の処理を信号Ｓ１２６で停止させるエラー判別回路１２６１を有している。
【００４２】
書き込み（送信）および読み出し（受信）のトランザクションの場合、受け取る受信確認(Acknowledge) または応答パケットに関しては、たとえば図３に示すようなエラーが発生する可能性があり、エラー判別回路１２６１は、エラーがあることを検出すると、要求パケット生成回路１２２、応答パケットデコード回路１２３、要求用ＦＩＦＯ１２４および応答用パケット１２５の処理を停止させるとともに、これらのエラーの内容を判別し、たとえば内容に応じたエラーコードをＣＲ１０７のエラーレジスタにセットする。また、エラーがあることを検出すると割り込み信号(Interrupt) 用のＣＲ１０７に割り込みビットをセットしてローカルプロセッサ４０にエラーを検出したことを知らせる。
【００４３】
ここで、図３の各エラーコードの内容について説明する。
エラーコードＥＲＣ「０」は、エラーなし、「１」は送信した要求に不適当なａｃｋコードが返ってきた、「２」は受信した応答に不適当なａｃｋコードを返した、「３」は規定時間内に応答が戻らない、「４」はリトライ制限の回数、要求パケットを送っても相手がビジーである、「５」はバスリセットが発生した、「６」は不適当なｒｃｏｄｅ(response code) を受信した、「７」は指定ノード以外からの応答パケットを受信した、「８」は実行しているトランザクションとは異なるｔｃｏｄｅ(transaction code)を受信した、という内容である。
【００４４】
ここで、図２に示すエラー判別回路の書き込み（受信）時の動作を図４のフローチャートを参照しつつ説明し、その後、ＳＢＰ−２規格で決められたパケットを転送する場合のコンピュータデータの通常の送信および受信動作を説明する。
【００４５】
エラー判別回路１２６１においては、まず、要求パケットに対する適当なａｃｋコード（応答パケット）が返ってきたか否かの判別が行われる（Ｓ１）。
ステップＳ１で不適当なａｃｋコードである場合には、コード「１」の送信した要求に不適当なａｃｋコードが返ってきたエラーであると判別される。
ステップＳ１で適当はａｃｋコードが返ってきたと判別されると、その応答がコンプリート(Complete)、ビジー(Busy)、ペンディング(Pending) 、であるかで異なる判別処理が行われる。
【００４６】
コンプリートの場合には、読み出しであるか書き込みであるかが判別され、読み出しであると不適当な応答である場合にはコード「１」のエラーであると判別され、書き込みである場合にはコンプリートであると判別される（Ｓ３）。
【００４７】
ビジーの場合には、再送信を行うリトライ動作が行われるが、このリトライ
回数が、あらかじめ設定したリトライ制限回数に達したか否かの判別が行われる（Ｓ４）。
ステップＳ４において、リトライ制限回数に達していないと判別した場合にはステップＳ１の動作、すなわち要求パケットの再送信動作が行われる。
一方、リトライ制限回数に達していると、コード「４」のリトライ制限の回数だけ要求パケットを送っても相手がビジーであるエラーと判別される。
【００４８】
ペンディングンの場合には、ステップＳ５〜Ｓ９の判別動作が順に行われる。
まず、ステップＳ５においては、応答パケットをあらかじめ設定した時間内に受信したか否かの判別が行われる。
ステップＳ５において、応答パケットがあらかじめ設定した時間内に返ってこなかった場合には、コード「３」の規定時間内に応答が戻らないというエラーであると判別される。
一方、規定時間内に応答が戻った場合には、ステップＳ６の処理に移行する。
【００４９】
ステップＳ６においては、受信した応答に不適当なａｃｋコードを返したか否かの判別が行われる。
ステップＳ６において、受信した応答に不適当なａｃｋコードを返した場合には、コード２の不適当なａｃｋコードを返したエラーであると判別される。
一方、適当なａｃｋコードを返した場合には、ステップＳ７の処理に移行する。
【００５０】
ステップＳ７においては、適当なｒｃｏｄｅ(response code) を受信したか否かの判別が行われる。
ステップＳ７において、不適当なｒｃｏｄｅを受信した場合には、コード「６」の不適当なｒｃｏｄｅを受信したエラーであると判別される。
一方、適当なｒｃｏｄｅを受信した場合には、ステップＳ８の処理に移行する。
【００５１】
ステップＳ８においては、ソース(source)ＩＤが正常であるか否かの判別が行われる。
ステップＳ８において、ソースＩＤが異常であると判別されると、コード「７」の指定ノード以外からの応答パケットを受信したエラーであると判別される。
一方、正常なソースＩＤを受信した場合には、ステップＳ９の処理に移行する。
【００５２】
ステップＳ９においては、受信したｔｃｏｄｅ(transaction code)が正常であるか否かの判別が行われる。
ステップＳ９において、受信したｔｃｏｄｅが異常であると判別されると、コード「８」の実行しているトランザクションとは異なるｔｃｏｄｅを受信したエラーであると判別される。
一方、正常なｔｃｏｄｅを受信した場合にはエラーなし（コンプリート）として処理される。
【００５３】
エラー判別回路１２６１では、上述したようにエラーがあることが検出されると、信号Ｓ１２６が要求パケット生成回路１２２、応答パケットデコード回路１２３、要求用ＦＩＦＯ１２４および応答用パケット１２５に出力されて、それらの処理が停止させる処理が行われる。
そして、エラーの内容に応じたエラーコードがＣＲ１０７のエラーレジスタにセットされ、また、エラーがあることを検出すると割り込み信号(Interrupt) 用のＣＲ１０７に割り込みビットがセットされる。これにより、ローカルプロセッサ４０にエラーにより割り込む要求があることが報知される。
これにより、ローカルプロセッサ４０により、ＣＲ１０７の内容が読み出され、ＣＲ１０７を介して、トランザクション・レイヤ回路１２０に対する初期化（リセット）処理が行われる。
【００５４】
次に、上記構成において、ＳＢＰ−２規格で決められたパケットを転送する場合のコンピュータデータの通常の送信および受信動作を説明する。
【００５５】
まず、送信動作、すなわち、ターゲットであるハードディスクからイニシエータであるホストコンピュータにデータを転送するときであって、ストレージデバイス（ハードディスク）からホストコンピュータのメモリへデータを書き込む動作を行う場合について説明する。
【００５６】
ホストコンピュータから１３９４シリアルバスＢＳを転送されてきたＳＢＰ−２規格に基づいたＯＲＢ(Operation Request Block)等のパケットデータがフィジカル・レイヤ回路２０、リンク・レイヤ回路１００のリンクコア１０１を介して分別回路１０５に入力される。
【００５７】
分別回路１０５では、受信パケットを受けてホストコンピュータからターゲットであるトランザクション・レイヤ回路に対しての応答パケット(Response Packet) であるかその他のパケットであるかの分別が行われる。
そしてこの場合、その他のパケットであることから受信データが受信用ＦＩＦＯ１０４に格納される。
受信用ＦＩＦＯ１０４に格納されたＯＲＢ等の受信データは、ＣＰＵインタフェース回路１０２を介してローカルプロセッサ４０に入力される。
ローカルプロセッサ４０では、ＣＰＵインタフェース回路１０２を介してＯＲＢの内容に従ってＣＲ１０７のトランザクション・レイヤ回路用レジスタの初期化が行われる。
これにより、トランザクション・レイヤ回路１２０が起動される。
【００５８】
起動されたトランザクション・レイヤ回路１２０では、要求パケット生成回路１２２において、トランスポートインタフェース１２１を介してＨＤＤコントローラ３０に対してのデータの要求が始められる。
要求に応じ、トランスポートインタフェース１２１を介して送られてきた送信データは、要求パケット生成回路１２２においてＳＢＰ−２規格に従ってトランスポートデータインタフェース回路１２１を介して得た図示しないハードディスクに記録されたコンピュータデータをパケットに分けられるように１個以上のデータに分けられ、ＣＲ１０７にセットされた転送データ長等のデータに基づいてＳＢＰプロトコルのアドレスが算出され、パケット毎に増加する１３９４バスアドレスとトランザクションラベルｔｌ（＝ａ）やトランザクションコードｔｃｏｄｅ（たとえば１または５）等が設定された４クラドレットからなる１３９４ヘッダが付加されて要求用ＦＩＦＯ１２４に格納される。
【００５９】
要求用１ＦＩＦＯ１２４に１つの１３９４パケットサイズ以上のデータが格納されると、そのデータはトランザクションコントローラ１２６によりリンク・レイヤ回路１００のリンクコア１０１に送られる。
そして、リンクコア１０１によって、フィジカル・レイヤ回路２０を介して１３９４シリアルバスＢＳに対しアービトレーションが掛けられる。
これにより、バスの獲得ができたならば、転送データを含む書き込み要求パケット(Write Request Packet)がフィジカル・レイヤ回路２０、１３９４シリアルバスＢＳを介してホストコンピュータに送信される。
【００６０】
送信後、ホストコンピュータから書き込み要求パケットに対するＡｃｋコードと、場合によっては書き込み応答パケット(Write Response Packet) が送られてきて、フィジカル・レイヤ回路２０、リンク・レイヤ回路１００のリンクコア１０１を介して分別回路１０５に入力される。
【００６１】
分別回路１０５では、受信パケットのトランザクションコードｔｃｏｄｅおよびトランザクションラベルｔｌのチェックが行われ、ホストコンピュータからターゲットであるトランザクション・レイヤ回路１２０に対しての応答パケット(Response Packet) であると判別されると、その応答パケットがトランザクション・レイヤ回路１２０のトランザクションコントローラ１２６に入力される。
【００６２】
トランザクションコントローラ１２６では、入力された応答パケットのＡｃｋコードと応答コード(Response code) が正常ならば次のデータのリンクコア１０１への送出が行われる。
以上の動作が繰り返されて、コンピュータデータのホストコンピュータのメモリへの書き込み（送信）動作が行われる。
【００６３】
以上の送信に関するトランザクション・レイヤ回路１２０の動作の概略を図４に示す。
【００６４】
次に、受信動作、すなわち、ホストコンピュータからターゲットにデータを転送するときであって、ストレージデバイス（ハードディスク）がホストコンピュータのメモリのデータを読み出す動作を行う場合について説明する。
【００６５】
ホストコンピュータから１３９４シリアルバスＢＳを転送されてきたＳＢＰ−２規格に基づいたＯＲＢ(Operation Request Block)等のパケットデータがフィジカル・レイヤ回路２０、リンク・レイヤ回路１００のリンクコア１０１を介して分別回路１０５に入力される。
【００６６】
分別回路１０５では、受信パケットを受けてホストコンピュータからターゲットであるトランザクション・レイヤ回路に対しての応答パケット(Response Packet) であるかその他のパケットであるかの分別が行われる。
そしてこの場合、その他のパケットであることから受信データが受信用ＦＩＦＯ１０４に格納される。
受信用ＦＩＦＯ１０４に格納されたＯＲＢ等の受信データは、ＣＰＵインタフェース回路１０２を介してローカルプロセッサ４０に入力される。
ローカルプロセッサ４０では、ＣＰＵインタフェース回路１０２を介してＯＲＢの内容に従ってＣＲ１０７のトランザクション・レイヤ回路用レジスタの初期化が行われる。
これにより、トランザクション・レイヤ回路１２０が起動される。
【００６７】
起動されたトランザクション・レイヤ回路１２０では、要求パケット生成回路１２２において、ＳＢＰ−２規格に従って、ＣＲ１０７にセットされた転送データ長等のデータに基づいてＳＢＰプロトコルのアドレスが算出され、パケット毎に増加する１３９４バスアドレスとトランザクションラベルｔｌ（＝ａ）やトランザクションコードｔｃｏｄｅ（たとえば１または５）等が設定され、指定されたアドレス、データ長分の１３９４ブロック読み出し要求コマンド(Block read Request Command)がパケット化されて要求用ＦＩＦＯ１２４に格納される。
【００６８】
要求用ＦＩＦＯ１２４に格納された読み出し要求コマンドパケットは、トランザクションコントローラ１２６によりリンク・レイヤ回路１００のリンクコア１０１に送られる。
そして、リンクコア１０１によって、フィジカル・レイヤ回路２０を介して１３９４シリアルバスＢＳに対しアービトレーションが掛けられる。
これにより、バスの獲得ができたならば、読み出し要求パケット(Read Request Packet) がフィジカル・レイヤ回路２０、１３９４シリアルバスＢＳを介してホストコンピュータに送信される。
【００６９】
送信後、ホストコンピュータから読み出し要求パケットに対するＡｃｋコードと、指定されたデータ長分のデータを含んだ読み出し応答パケット（Read Response Packet) が送られてきて、フィジカル・レイヤ回路２０、リンク・レイヤ回路１００のリンクコア１０１を介して分別回路１０５に入力される。
【００７０】
分別回路１０５では、受信パケットのトランザクションコードｔｃｏｄｅおよびトランザクションラベルｔｌのチェックが行われ、ホストコンピュータからターゲットであるトランザクション・レイヤ回路に対しての応答パケット(Response Packet) であると判別されると、その応答パケットがトランザクション・レイヤ回路１２０のトランザクションコントローラ１２６に入力される。
【００７１】
トランザクションコントローラ１２６では、分別回路１０５からの応答パケットが応答用ＦＩＦＯ１２５に格納される。
応答用ＦＩＦＯ１２５に格納されたデータは、応答パケットデコード回路１２３によって読み出され、１３９４ヘッダが取り除かれて、所定のタイミングでトランスポートデータインタフェース回路１２１を介してＨＤＤコントローラ３０に出力される。
以上の動作が繰り返されて、コンピュータデータのストレージデバイス（ハードディスク）への書き込み（受信）動作が行われる。
【００７２】
以上の受信に関するトランザクション・レイヤ回路１２９の動作の概略を図５に示す。
【００７３】
以上説明したように、本実施形態によれば、ストレージデバイスが接続され、ストレージデバイスのデータを読み出し、自己指定のトランザクションラベルを付加して送信アシンクロナスパケットとしてシリアルインタフェースバスＢＳに送出し、他ノードのデータを当該ストレージデバイスへ転送する場合に、自己指定のラベルを付加した要求パケットを生成してシリアルインタフェースバスＢＳに送出し、他ノードからのこの要求パケットに対する応答パケットを受信し、応答パケットからデータ部を取り出してストレージデバイスへ転送するデータ処理回路としてのトランザクション・レイヤ回路１２０を設けたので、ストレージデバイスに格納される、あるいはストレージデバイスから読み出される大容量のデータをＳＢＰ−２規格に合わせたＩＥＥＥ１３９４パケットにして送受信することができ、ＩＥＥＥ１３９４シリアルバスインタフェースのアシンクロナスパケットを用いて大容量のデータ転送を実現することができる。
そして、ＳＢＰ−２規格に基づいたＯＲＢのフェッチ、データ転送、イニシエータへのステイタス送信といったシーケンスを簡略化でき、ディスクドライバ、テープストリーマ等のコンピュータ周辺機器のデータをＩＥＥＥ１３９４シリアルバスに接続する際に最適な設計が可能となる。
【００７４】
また、応答パケットにエラーが有るか否かを判別し、エラーがある場合にはそのエラー内容を判別し、要求パケット生成回路１２２、応答パケットデコード回路１２３、要求用ＦＩＦＯ１２４および応答用パケット１２５の処理を信号Ｓ１２６で停止させるエラー判別回路１２６１を設けたので、エラーが発生した場合にその判別を行うことができ、制御系回路の付加を軽減でき的確な送受信処理をすることができる。
【００７５】
さらに、トランザクション・レイヤ回路１２０に要求用ＦＩＦＯ１２４および応答用ＦＩＦＯ１２５を設けるとともに、リンク・レイヤ回路１００に送信用ＦＩＦＯ１０３および受信用ＦＩＦＯ１０４を設けたので、要求用ＦＩＦＯ１２４および応答用ＦＩＦＯ１２５によるデータのやりとりと並列して、データ以外の通常の１３９４パケットの送受信を行うことできる。
【００７６】
また、リンクコア１０１を介したアシンクロナス通信用パケットの第１クワドレッドにあるトランザクションコードｔｃｏｄｅ(Transaction code)およびトランザクションラベルｔｌ(Transaction label) をチェックし、イニシエータであるホストコンピュータからターゲットであるトランザクション・レイヤ回路に対しての応答パケット(Response Packet) であるかその他のパケットであるかの分別を行い、応答パケットのみをトランザクション・レイヤ回路１２０に入力させ、その他のパケットを受信用ＦＩＦＯ１０４に格納する分別回路１０５を設けたので、たとえばトランザクション・レイヤ回路１２０側で致命的なエラーがおきてデータの読み出し／書き込み動作が止まってしまったとしても、データの次の入力されてくるコマンドの読み出しができなることがなく、データの読み出し／書き込みの状況にかかわりなくコマンドの受信を円滑に行うことができる利点がある。
【００７７】
【発明の効果】
以上説明したように、本発明によれば、大容量のデータを所定の規格に合わせたパケットにして送受信することができることはもとより、エラーが発生した場合にその判別を行うことができ、制御系回路の付加を軽減でき、的確な送受信処理をすることができる。
【図面の簡単な説明】
【図１】本発明に係るＩＥＥＥ１３９４シリアルインタフェース回路の一実施形態を示すブロック構成図である。
【図２】本発明に係るエラー判別回路を示すブロック図である。
【図３】エラーコードの一例を示す図である。
【図４】エラー判別動作を説明するためのフローチャートである。
【図５】本発明に係るトランザクション・レイヤ回路における送信動作の概略を示す図である。
【図６】本発明に係るトランザクション・レイヤ回路における受信動作の概略を示す図である。
【図７】ＩＥＥＥ１３９４規格のアシンクロナス転送を説明するための図である。
【符号の説明】
１０…リンク／トランザクションレイヤ集積回路、２０…フィジカル・レイヤ回路、３０…ＨＤＤコントローラ、４０…ローカルプロセッサ、１００，１００ａ…リンク・レイヤ回路、１０１…リンクコア、１０２…ＣＰＵインタフェース回路、１０３…アシンクロナス送信用ＦＩＦＯ、１０４…アシンクロナス受信用ＦＩＦＯ、１０５，１０５ａ…分別回路、１０６…リゾルバ、１０７…コントロールレジスタ、１２０…トランザクション・レイヤ回路、１２１…トランスポートデータインタフェース回路、１２１…要求パケット生成回路、１２３…応答パケットデコード回路、１２４…要求用ＦＩＦＯ、１２５…応答用ＦＩＦＯ、１２６…トランザクションコントローラ、１２６１…エラー判別回路。
【図１】
0003837843.tif 000002
【図２】
0003837843.tif 000003
【図３】
0003837843.tif 000004
【図４】
0003837843.tif 000005
【図５】
0003837843.tif 000006
【図６】
0003837843.tif 000007
【図７】
0003837843.tif 000008