(57)【特許請求の範囲】
【請求項１】
データを格納する送信バッファと、
前記データと当該データのチェックコードを有するフレームを複数個含む情報ユニットを各フレームに分割して送信するリンク制御部と、
前記送信バッファのデータを、リンク上のビットレートよりも高速で読み出し、前記読み出したデータのチェックコードをチェックコード生成初期値を基に生成するとともに、当該生成結果を保持する前記チェックコード生成回路と、
前記チェックコード生成回路で生成されたチェックコードを判別し、前記判別結果に従って前記リンク制御部と前記チェックコード生成回路に対する処理を行うプロトコル制御部と、を有し、
前記プロトコル制御部は、
前記チェックコード生成回路で生成されたチェックコードが複数の情報ユニットに跨っている場合、前記情報ユニット毎の送信を前記リンク制御部に要求し、前記チェックコード生成回路で前記各情報ユニットに対応して生成された生成結果のうち、先の生成結果を次の情報ユニットのチェックコード生成初期値として前記チェックコード生成回路にセットし、
前記リンク制御部は、
前記チェックコード生成回路で前記各情報ユニットに対応して生成された生成結果と前記送信バッファから読み出したデータから前記各情報ユニットを構成し、当該各情報ユニットを順次複数のフレームに分割し、前記分割されたフレームの送信を、前記チェックコード生成回路によるチェックコードの生成とは非同期で行う、ことを特徴とするインタフェース制御装置。
【請求項２】
データと当該データのチェックコードを含むフレームを受信するリンク制御部と、
前記リンク制御部で受信されたフレームを格納する受信バッファと、
前記受信バッファからのデータを格納するメインメモリと、
前記受信バッファと前記メインメモリとの間のデータ転送を制御する入出力バス制御部と、
前記受信バッファのフレームを前記データ転送の速度よりも高速で読み出し、前記読み出したフレームのチェックコードをチェックコードチェック初期値を基にチェックするとともに、当該チェック結果を保持するチェックコードチェック回路と、
前記受信バッファの格納結果と前記チェックコードチェック回路のチェック結果を判別し、前記判別結果に従って前記入出力バス制御部と前記チェックコードチェック回路に対する処理を行うプロトコル制御部と、を有し、
前記プロトコル制御部は、
前記受信バッファに、情報ユニットを構成する複数のフレームが複数情報ユニット分格納され、且つ前記チェックコードチェック回路のチェック対象となるチェックコードが複数の情報ユニットに跨っている場合、前記情報ユニット毎の転送を前記入出力バス制御部に要求し、前記チェックコードチェック回路で前記各情報ユニットについてチェックされたチェック結果のうち、先のチェック結果を次の情報ユニットのチェックコードチェック初期値として前記チェックコードチェック回路にセットし、
前記入出力バス制御部は、
前記チェックコードチェック回路で前記各情報ユニットについてチェックされたチェック結果と前記受信バッファから読み出したデータとから前記各情報ユニットを構成し、当該各情報ユニットを順次前記メインメモリに転送し、当該転送を、前記チェックコードチェック回路によるチェックコードのチェックとは非同期で行う、ことを特徴とするインタフェース制御装置。
【請求項３】
データを格納する送信バッファと、
前記データと当該データのチェックコードを有するフレームを複数個含む情報ユニットを各フレームに分割して送信するとともに、前記フレームを受信するリンク制御部と、
前記送信バッファのデータを、リンク上のビットレートよりも高速で読み出し、前記読み出したデータのチェックコードをチェックコード生成初期値を基に生成するとともに、当該生成結果を保持する前記チェックコード生成回路と、
前記リンク制御部で受信されたフレームを格納する受信バッファと、
前記受信バッファからのデータを格納するメインメモリと、
前記受信バッファと前記メインメモリとの間のデータ転送を制御する入出力バス制御部と、
前記受信バッファのフレームを前記データ転送の速度よりも高速で読み出し、前記読み出したフレームのチェックコードをチェックコードチェック初期値を基にチェックするとともに、当該チェック結果を保持するチェックコードチェック回路と、
前記受信バッファの格納結果と前記チェックコードチェック回路のチェック結果および前記チェックコード生成回路で生成されたチェックコードを判別し、前記判別結果に従って前記入出力バス制御部と前記チェックコードチェック回路と前記リンク制御部および前記チェックコード生成回路に対する処理に対する処理を行うプロトコル制御部と、を有し、
前記プロトコル制御部は、
前記チェックコード生成回路で生成されたチェックコードが複数の情報ユニットに跨っている場合、前記情報ユニット毎の送信を前記リンク制御部に要求し、前記チェックコード生成回路で前記各情報ユニットに対応して生成された生成結果のうち、先の生成結果を次の情報ユニットのチェックコード生成初期値として前記チェックコード生成回路にセットし、
前記受信バッファに、情報ユニットを構成する複数のフレームが複数情報ユニット分格納され、且つ前記チェックコードチェック回路のチェック対象となるチェックコードが複数の情報ユニットに跨っている場合、前記情報ユニット毎の転送を前記入出力バス制御部に要求し、前記チェックコードチェック回路で前記各情報ユニットについてチェックされたチェック結果のうち、先のチェック結果を次の情報ユニットのチェックコードチェック初期値として前記チェックコードチェック回路にセットし、
前記リンク制御部は、
前記チェックコード生成回路で前記各情報ユニットに対応して生成された生成結果と前記送信バッファから読み出したデータから前記各情報ユニットを構成し、当該各情報ユニットを順次複数のフレームに分割し、前記分割されたフレームの送信を、前記チェックコード生成回路によるチェックコードの生成とは非同期で行い、
前記入出力バス制御部は、
前記チェックコードチェック回路で前記各情報ユニットについてチェックされたチェック結果と前記受信バッファから読み出したデータから前記各情報ユニットを構成し、当該各情報ユニットを順次前記メインメモリに転送し、当該転送を、前記チェックコードチェック回路によるチェックコードのチェックとは非同期で行う、ことを特徴とするインタフェース制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、中央処理装置や入出力装置等の処理装置間に接続される入出力インタフェースの制御方式に係り、特に一つ乃至は複数フレームで構成されるデータ情報に対して、一つのＦＣＳ(Frame Check Sequence)が付属する様なデータ転送プロトコルに於いて、ＦＣＳの生成、チェックを効率的に行うインタフェース制御方式に関する。
【０００２】
【従来の技術】
ＯＳＩ(Open System Interconnection)モデルに代表される様に、ネットワークアーキテクチャの構造を機能によって階層化し、各階層で様々なプロトコルを実現することは、自由度の高いネットワーク構築を可能にした。ＡＮＳＩ(Ameriacan National Standards Institute)で規格化されているファイバチャネルも同様に階層化されており、ファイバチャネル媒体を使用し、ＵＬＰ(上位レイヤプロトコル)としてＩＰ(Internet Protocol)やＳＣＳＩ(Small Computer System Interface)、ＦＣ−ＳＢ２(Single−Byte Command Code Sets Mapping Protocol−2)といったさまざまなプロトコルを実行することができる。
【０００３】
しかし、この様な階層化によって、上位レイヤプロトコルが送ろうとしたデータ量が下位レイヤプロトコルで１回あたり送信可能なデータ量よりも大きい場合、データの分割・組立といった処理が必要になる。
【０００４】
例えば、ファイバチャネルに於いて、光ファイバに代表される物理インタフェース上は、図２(ａ)に示す様なフレーム２００単位でデータ転送が行われるが、ファイバチャネルのＵＬＰであるＦＣ−ＳＢ２では、図２(ｂ)に示す様な情報ユニットＩＵ(Information Unit)２０１でデータ転送が行われるため、ＩＵからフレームへの分割・フレームからＩＵへの組立といった処理が必要となる。
【０００５】
フレーム２００は、４バイトの開始コード(ＳＯＦ)で始まり、２４バイトのヘッダ情報と最大２,１１２バイトのデータ、更にヘッダ情報とデータの誤り検出のためにＦＣＳとして４バイトのＣＲＣ(以下フレームＣＲＣ)を付加し、最後に４バイトの終了コード(ＥＯＦ)で終結した構造をしている。また情報ユニット２０１は、３２バイトのヘッダ情報と最大８,１６０バイトのデータ、更に必要なら４バイトのＣＲＣ(以下ＳＢ_ＣＲＣ)を付加した構造しており、情報ユニット２０１のヘッダ情報とデータ、ＳＢ_ＣＲＣは、フレーム２００のデータに分割してマッピングされる。ＳＢ_ＣＲＣは、図２(ｃ)に示す様に、一つあるいは複数ＩＵで構成されるＳＢデータ２０２のデータ部分の誤り検出のために付加される。
【０００６】
従来、ファイバチャネルに代表されるインタフェース制御装置では、下位レイヤのフレーム単位での処理を行う部位と、主にＵＬＰにしたがって処理を行う部位とを分け、ＰＣＩバスやマイクロチャネルといった入出力バスに接続してデータ転送を実現することが多い。つまり、下位レイヤと上位レイヤを分割することにより、光ファイバのビットレート向上に伴う変更や、ＵＬＰ変更に柔軟な構造となっており、さまざまなデータ転送系を構築することが可能となる。図８にインタフェース制御装置の従来例を示す。
【０００７】
インタフェース制御装置は、ファイバチャネルの下位レイヤを制御する下位インタフェース制御装置７００とＵＬＰを含むその他の制御を行う上位インタフェース制御装置７０１に分けることができ、両者は、入出力バス７０２で接続されている。
【０００８】
下位インタフェース制御装置７００は、光ファイバケーブル７０３上の光信号と送受信フレームとを変換、制御するリンク制御部７０４と、送受信フレームを格納する送信バッファ７０５、受信バッファ７０６と、ファイバチャネルのフレーム転送制御等をマイクロプログラムで行うＦＣプロトコル制御部７０７と、入出力バス制御部７０８で構成される。
【０００９】
上位インタフェース制御装置７０１は、メインメモリ７０９と中央処理装置７１０が入出力バス制御部７１１を介して下位インタフェース制御装置７００と接続する構造になっており、上位インタフェース制御装置７０１の一例としてパーソナルコンピュータがあげられる。
【００１０】
以下に、フレーム送信に関する従来例の動作を、図９のフローチャートを用いて簡単に説明する。
【００１１】
中央処理装置７１０は、送信データをメインメモリ７０９に格納し(８００)、下位インタフェース制御装置７００に対して送信指示を行う(８０１)。送信指示を受けた下位インタフェース制御装置７００のＦＣプロトコル制御部７０７は、送信データをメインメモリ７０９から送信バッファ７０５に格納するよう入出力バス制御部７０８に指示する(８０２)。指示を受けた入出力バス制御部７０８は、送信データをメインメモリ７０９から送信バッファ７０５に格納し(８０３)、格納終了を検出したＦＣプロトコル制御部７０７は、リンク制御部７０４に当該送信バッファのフレーム送信指示を行う(８０４)。フレーム送信指示を受けたリンク制御部７０４は送信バッファ７０５からフレームのヘッダ情報、フレームＣＲＣを生成、付加し、フレーム送信を行う(８０５)。
【００１２】
以下に、フレーム受信に関する従来例の動作を、図１０のフローチャートを用いて簡単に説明する。
【００１３】
下位インタフェース制御装置７００に受信されたフレームは、リンク制御部７０４でフレームのフレームＣＲＣがチェックされ、受信バッファ７０６に格納される(８１０)。更に、リンク制御部７０４からフレーム格納の通知を受けたＦＣプロトコル制御部７０７は、フレームを解析し、必要ならフレームデータをメインメモリ７０９に格納するよう入出力バス制御部７０８に指示する(８１１)。指示を受けた入出力バス制御部７０８は、フレームデータを受信バッファ７０６からメインメモリ７０９に格納し(８１２)、格納終了を検出したＦＣプロトコル制御部７０７は、中央処理装置７１０に対して格納データの処理を依頼する(８１３)。最後に、中央処理装置７１０で格納データが処理される(８１４)。
【００１４】
以上のインタフェース制御装置に於いて、ＦＣ−ＳＢ２を動作させた場合、複数フレームで構成されるＩＵや一つもしくは複数ＩＵで構成されるデータに付加されるＳＢ_ＣＲＣの生成、チェックは上位インタフェース制御装置７０１の中央処理装置７１０で処理され、下位インタフェース制御装置７００ではメインメモリ７０９上のＩＵをフレームに分割して送信したり、受信フレームのヘッダ情報からＩＵへの組み立てとメインメモリ７０９への格納を行う。図１１にＩＵ送信、図１２にＩＵ受信に関する従来装置での制御例のフローチャートを示す。
【００１５】
しかし、上述に様に、ＩＵ処理の他にＳＢ_ＣＲＣの生成、チェックも中央処理装置７１０で処理すると、中央処理装置７１０の負荷が増大し、プログラム実行のオーバヘッドのため、ＵＬＰ制御性能が低下する恐れがある。
【００１６】
そこでＳＢ_ＣＲＣの生成、チェックを下位インタフェース制御装置７００で行うことにより、上位インタフェース制御装置７０１にＳＢ_ＣＲＣの専用制御機構等の特別な機構を付加することなく、ＵＬＰ制御性能を向上させる方法を考える。
【００１７】
この様に、ＵＬＰの処理の一部を下位レイヤで行うことは上下のレイヤをバインドさせて処理させることを意味し、本来のレイヤ構造によるプロトコルの多様性や柔軟性に矛盾しているが、ＳＡＮ(Storage Area Network)やＩｎｔｅｒｎｅｔ 等のある特定の範囲で、上下レイヤのプロトコルの組合せが限定できる場合は性能向上に有用な方法であると考える。
【００１８】
データの分割・組立とそれに付随するＦＣＳ関する従来例としては、特開平９−１４９０８０号公報や特開平１０−３０３９４５号公報に開示されているが、上下レイヤをバインドしたFCSの処理については述べられていない。
【００１９】
【発明が解決しようとする課題】
しかし、上述に様に、ＳＢ_ＣＲＣの生成、チェックをマイクロプログラムで処理すると、中央処理装置７１０の負荷が増大し、プログラム実行のオーバヘッドのため、ＵＬＰ制御性能が低下する恐れがあるため、ＳＢ_ＣＲＣの生成、チェックを下位インタフェース制御装置７００で行うことにより、ＵＬＰ制御性能を維持しつつ、上位インタフェース制御装置７０１の汎用性を保つことを考える。
【００２０】
ＳＢ_ＣＲＣの生成、チェックを下位インタフェース制御装置７００で行う場合、次に示す問題がある。
【００２１】
第一の問題点は、ＳＢ_ＣＲＣをＦＣプロトコル制御部７０７で処理する場合、送受信バッファのデータをローカルメモリ７１２に格納してマイクロプログラムで計算するため、ＳＢ_ＣＲＣ生成、チェック用のメモリ領域が必要なことと、プログラム実行のオーバヘッドが大きいということである。図１３にＩＵ送信、図１４にＩＵ受信に関する従来装置での制御例のフローチャートを示す。
【００２２】
第二の問題点は、ＳＢ_ＣＲＣの生成、チェックの専用制御機構を送受信バッファ７０５、７０６の前後に付加する場合、ファイバチャネルの特徴の一つである複数ＵＬＰの同時動作や、ＳＢ_ＣＲＣを含むデータが複数同時に転送され得ることを考えると、単純に生成、チェックする回路を付加するだけでは対応しきれないということである。
【００２３】
第三の問題点は、下位インタフェース制御装置７００は数ギガビット／秒という高いビットレートでフレームを送受信していることから、ＳＢ_ＣＲＣ生成、チェックにかかる処理時間は無視できないということである。
【００２４】
本発明の第一の目的は、上記第一及び第二の問題点を克服し、データ転送プロトコルが多重動作する場合にも、柔軟に対応するＳＢ_ＣＲＣの生成、チェック方法を提供することにある。
【００２５】
本発明の第二の目的は、上記第一及び第三の問題点を克服し、ＳＢ_ＣＲＣの処理時間を低減もしくは無視可能な、ＳＢ_ＣＲＣの生成、チェック方法を提供することにある。
【００２６】
【課題を解決するための手段】
上記の目的を、下位インタフェース制御装置において、マイクロプログラム処理と専用制御機構を組み合わせて達成する。
【００２７】
本発明の下位インタフェース制御装置は、送信バッファのデータ格納単位をＩＵ単位まで拡張し、マイクロプログラムのＩＵ単位での送信要求を可能とする。更に、ＩＵ送信契機でＳＢ_ＣＲＣ生成を、ＳＢ_ＣＲＣを生成するためのＳＢ_ＣＲＣ計算回路と、生成初期値と生成結果とを保持しマイクロプログラムでリード、ライト可能なＳＢ_ＣＲＣ生成レジスタから構成されるＳＢ_ＣＲＣ生成回路で、ＩＵ送信とは非同期に行う。また、ＳＢ_ＣＲＣチェックを、ＳＢ_ＣＲＣをチェックするためのＳＢ_ＣＲＣ計算回路と、チェック初期値とチェック結果とを保持しマイクロプログラムでリード、ライト可能なＳＢ_ＣＲＣチェックレジスタから構成されるＳＢ_ＣＲＣチェック回路で、受信フレームから構成されたＩＵをメインメモリに転送する際、ＩＵ転送契機でＩＵ転送とは非同期に行う。つまりＩＵを送信、転送しながらＳＢ_ＣＲＣの生成、チェックを同時に行うことにより処理に係るオーバヘッド低減を実現する。
【００２８】
更に、マイクロプログラムのＩＵ送信要求やメインメモリへのＩＵ転送要求に必要な情報を格納するレジスタを複数用意し、複数同時に要求可能とすることで、ＳＢ_ＣＲＣが複数ＩＵに跨ぐ場合やデータ転送が多重に実行される場合にも柔軟に対応する。
【００２９】
また、受信フレームからＩＵを組み立て、メインメモリに転送する際に、当該フレームの受信バッファアドレスのチェイン情報で指示可能とすることで、ＩＵ転送のための特別なメモリは必要なく、つまり、同メモリに転送するオーバヘッドも削減できる。
【００３０】
ＳＢ_ＣＲＣ生成について簡単に説明する。フレームを正しく送信するためには、送信バッファからのデータ読み出し速度はリンク上のビットレートより高い必要があるが、本手法では、リンク上のビットレートの２倍以上の速度で読み出し可能な送信バッファを搭載することで、ＳＢ_ＣＲＣ生成のオーバヘッドを低減する。つまり、リンク上のビットレートに合わせた送信フレームのデータ読み出しを行いながら、ＳＢ_ＣＲＣ生成のデータ読み出しを非同期に行い、専用制御機構でＳＢ_ＣＲＣを生成する。また、図２(ａ)に示す様に、フレームには開始、終了コード(ＳＯＦ、ＥＯＦ)やヘッダ情報、フレームＣＲＣ等が付属され、更にフレーム間も定められた間隔を空ける必要があるため、送信フレームとＳＢ_ＣＲＣ生成データを非同期に読み出せば、ＳＢ_ＣＲＣ生成は先に完了する。これを利用し、ＳＢ_ＣＲＣ生成が複数ＩＵに跨る場合には、先に終了したＳＢ_ＣＲＣ生成の結果を、次のＩＵ送信におけるＳＢ_ＣＲＣ生成の初期値としてセットし、予め、ＩＵ送信要求を発行することにより、ＳＢ_ＣＲＣ生成のオーバヘッド無しにＩＵ送信が可能となる。
【００３１】
ＳＢ_ＣＲＣチェックについて簡単に説明する。受信バッファに格納されたフレームは、そのヘッダ情報から、マイクロプログラムによってＩＵに組み立てられる。組立られたＩＵは、入出力バスを介して上位インタフェース制御装置に転送されるわけだが、ここでも、ＳＢ_ＣＲＣ生成と同様に、入出力バスのデータ転送速度の２倍以上の速度で読み出し可能な受信バッファを搭載し、入出力バスへのデータを読み出しながら、ＳＢ_ＣＲＣチェックのデータ読み出しを非同期で行い、専用制御機構でＳＢ_ＣＲＣをチェックする。この場合も、入出力バスのデータ転送プロトコルのオーバヘッドから、入出力バスのデータ転送よりＳＢ_ＣＲＣ計算が先に完了するので、ＩＵチェックが複数ＩＵに跨る場合も、先に終了したＳＢ_ＣＲＣ計算結果を次のＩＵ転送におけるＳＢ_ＣＲＣチェックの初期値としてセットし、予め、ＩＵ転送要求を発行するすることにより、ＳＢ_ＣＲＣチェックのオーバヘッド無しにＩＵ転送が可能となる。また、この時のＩＵ転送要求は、受信バッファアドレスＡ−Ｂ−Ｅ−ＧといったＩＵを構成するフレーム位置の関連付けて指示可能である。
【００３２】
以上の様に、本発明の下位インタフェース制御装置は、ＦＣ−ＳＢ２のデータに付加されるＳＢ_ＣＲＣの生成、チェックといったＵＬＰの処理の一部を行うことによって、ＵＬＰの制御性能を向上させている。
【００３３】
図３に上記のＳＢ_ＣＲＣチェックの制御例を示す。ここでは、受信バッファのデータ読み出し速度が、入出力バスのデータ転送速度の４倍であり、ＩＵは４フレーム、ＳＢ_ＣＲＣは２ＩＵにまたがる場合の例を示す。
【００３４】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら詳細に説明する。
【００３５】
本実施例は、本発明におけるファイバチャネルインタフェース制御の好ましい形態の一例であり、本発明はこれに限るものではない。
【００３６】
図１は、本発明のインタフェース制御方法の一例を示すインタフェース制御装置の構成図である。本構成は、送受信バッファに、それぞれ２つのポートで独立にリード、ライト可能な４ポートメモリを採用し、リードポートをデータ転送用とＳＢ_ＣＲＣ生成、チェック用とに割り当て、それぞれが非同期に動作できることに特徴がある。
【００３７】
図１に示す様に、インタフェース装置制御装置は、従来例(図８)と同様に、ファイバチャネルの下位レイヤを制御する下位インタフェース制御装置１００と、ＵＬＰを含むその他の制御を行う上位インタフェース制御装置１０１に分けることができ、両者は、入出力バス１０２で接続されている。
【００３８】
下位インタフェース制御装置１００は光ファイバケーブル１０３上の光信号と送受信フレームとを変換、制御するリンク制御部１０４、送受信フレームを格納し、４ポートメモリで構成された送信バッファ１０５、受信バッファ１０６、ＩＵ単位に付属するＳＢ_ＣＲＣを生成、チェックするＳＢ_ＣＲＣ生成回路１１３、ＳＢ_ＣＲＣチェック回路１１４、ファイバチャネルのフレーム転送制御やＩＵ組立等、ファイバチャネルの下位レイヤプロトコル制御をマイクロプログラムで行い、内部にローカルメモリ１１２を有するＦＣプロトコル制御部１０７と、入出力バス制御部１０８で構成される。
【００３９】
送受信バッファ１０５、１０６は、図４(ａ)，(ｂ)で示されるように、送信バッファ１０５はＩＵ単位に、受信バッファ１０６はフレーム単位に分割されており、各領域はそれぞれ、送信バッファ＃と受信バッファ＃で指示することが可能となっている。
【００４０】
リンク制御部１０４には、ＦＣプロトコル制御部１０７がＩＵ送信制御情報を格納するためのリンク制御レジスタ１１５が存在する。リンク制御レジスタ１１５は、図５(ａ)に示される様に、送信制御情報、開始、終了コード、フレームヘッダ情報、送信ＩＵ長で構成され、更に送信バッファ＃に対応して４つのリンク制御レジスタ情報を格納することができる。ＦＣプロトコル制御部１０７からＩＵ送信要求を出されたリンク制御部１０４は、リンク制御部レジスタ１１５を参照し、送信バッファ１０５からデータを読み出しながらＩＵをフレームに分割してフレーム送信を行う。また、リンク制御レジスタ１１５の送信制御情報でＳＢ_ＣＲＣ生成が指示されていた場合は、ＳＢ_ＣＲＣ生成回路１１３でＩＵのＳＢ_ＣＲＣ生成を行う。このフレーム送信とＳＢ_ＣＲＣ生成は送信バッファのそれぞれ異なるリードポートから実行され、両者の動作は非同期に行われる。リンク制御レジスタ１１５が複数セットアップされている場合は、その優先度にしたがって、フレーム送信、ＳＢ_ＣＲＣ生成がそれぞれ独立に連続して実行される。
【００４１】
入出力バス制御部１０８には、ＦＣプロトコル制御部１０７が上位インタフェース制御装置１０１のメインメモリ１０９と送受信バッファ１０５、１０６間のデータ転送制御情報を格納するためのデータ転送制御レジスタ１１６が存在する。データ転送制御レジスタ１１６は、図５(ｂ)に示されるように、メインメモリ１０９のデータを送信バッファ１０５に転送するために用いられる送信バッファ用データ転送制御レジスタと、受信バッファ１０６のデータをメインメモリ１０９に転送するために用いられる受信バッファ用データ転送制御レジスタに分けることができる。送信バッファ用は、転送制御情報、転送元(メインメモリ)アドレス、転送長、転送先(送信バッファのアドレス)オフセット、送信バッファ＃、受信バッファ用は、転送制御情報、転送先(メインメモリ)アドレス、転送長、転送元(受信バッファのアドレス)オフセット、受信バッファ＃−チェイン情報で構成されており、それぞれ４つのデータ転送制御レジスタ情報を格納することができる。ここでいう受信バッファ＃−チェイン情報は、受信バッファ１０６からメインメモリ１０９へのデータ転送をＩＵ単位で行うための情報で、受信バッファ#を最大４つまで設定することができる。例えば、ＩＵを構成するフレームが、受信バッファ＃５、＃７、＃８、＃０の順に格納されている場合は、チェイン情報＃５−＃７−＃８−＃０をセットすればよい。入出力バス制御部１０８は、このチェイン情報に従って、ＩＵを組立てながらメインメモリ１０９に転送する。この様に本発明では、受信ＩＵを、ＩＵを構成するフレームが格納された受信バッファ＃のチェイン情報で取り扱い、このチェイン情報でＩＵ転送を可能とすることで、ＩＵを組み立てる専用のメモリ領域は必要ない。また、受信バッファ用データ転送制御レジスタの転送制御情報でＳＢ_ＣＲＣの計算が指示されていた場合は、ＳＢ_ＣＲＣチェック回路１１４でＩＵのＳＢ_ＣＲＣ計算を、更に、ＳＢ_ＣＲＣチェックが指示されていた場合は、ＩＵのＳＢ_ＣＲＣチェックを行う。この時、データ転送とＳＢ_ＣＲＣチェックは受信バッファのそれぞれ異なるリードポートから実行され、両者の動作は非同期に行われる。受信バッファ用データ転送制御レジスタが複数セットアップされている場合は、その優先度に従って、データ転送、ＳＢ_ＣＲＣチェックがそれぞれ独立に連続して実行される。
【００４２】
ＳＢ_ＣＲＣ生成回路１１３、ＳＢ_ＣＲＣチェック回路１１４には、それぞれリンク制御レジスタ１１５とデータ転送制御レジスタ１１６に対応した４つのＳＢ_ＣＲＣ生成初期レジスタ１１７とＳＢ_ＣＲＣチェック初期レジスタ１１８が存在し、リンク制御部１０４と入出力バス制御部１０８の指示で、ＳＢ_ＣＲＣ計算を初期レジスタ値から開始して、計算結果を同レジスタに格納する。また、このレジスタはＦＣプロトコル制御部１０７のマイクロプログラムでリード、ライト可能で、ＳＢ_ＣＲＣ初期値の仕様変更に柔軟に対応可能であり、更に、ＳＢ_ＣＲＣの計算が複数回に跨る場合、以前のＳＢ_ＣＲＣ計算結果を一旦ローカルメモリ１１２に格納し、続いて計算が必要なデータが準備できた段階で、改めてＳＢ_ＣＲＣ計算結果を初期レジスタに代入して、続きのＳＢ_ＣＲＣ計算をさせるといった制御も可能で、ＩＵの多重処理にも柔軟に対応することができる。
【００４３】
上位インタフェース制御装置１０１は、従来例(図８)と同様に、メインメモリ１０９と中央処理装置１１０が入出力バス制御部１１１を介して、下位インタフェース制御装置１００と接続する構造になっている。
【００４４】
以下に図１と図６のフローチャートを利用して、ＩＵ送信におけるデータの流れとＳＢ_ＣＲＣ生成方法を詳細に説明する。
【００４５】
まず、上位インタフェース制御装置１０１のメインメモリ１０９に送信すべきＩＵを準備した(６００)中央処理装置１１０は、入出力バス１０２を介して、下位インタフェース制御装置１００のＦＣプロトコル制御部１０７に対して、ＩＵ送信の準備ができたことを報告する(６０１)。
【００４６】
次に、ＩＵ送信準備完了の報告を受けたＦＣプロトコル制御部１０７は、送信バッファ１０５から空いている送信バッファ＃を確保し、データ転送制御レジスタ１１６に、この送信バッファ＃とオフセットアドレス、メインメモリ１０９のデータ転送元アドレス、データ転送長、転送制御情報をセットし、入出力バス制御部１０８に対してデータ転送要求を行う(６０２)。データ転送要求を受けた入出力バス制御部１０８は、データ転送制御レジスタ１１６に従って、メインメモリ１０９からデータを当該送信バッファに格納し、完了後、ＦＣプロトコル制御部１０７に終了報告を行う(６０３)。また、ＩＵ送信準備完了を連続して受けた場合は、以前要求したデータ転送が完了するしないに関らず、次の送信バッファ#を確保し、レジスタをセットして次のデータ転送を要求する。
【００４７】
次に、データ転送終了報告を受けたＦＣプロトコル制御部１０７は、ＳＢ_ＣＲＣの生成、付加が必要なら、データ転送終了した送信バッファ＃に対応したＳＢ_ＣＲＣ生成初期レジスタ１１７にＳＢ_ＣＲＣ初期値を、リンク制御レジスタ１１５にフレームの開始、終了コード、ヘッダ情報、ＩＵ長、更にＳＢ_ＣＲＣ生成、付加といった送信制御情報をセットし、リンク制御部１０４にＩＵ送信要求を行う(６０４)。ＩＵ送信要求を受けたリンク制御部１０４は、リンク制御レジスタ１１５に従って、ＩＵをフレームに分割しながら送信し(６０５)、更にＳＢ_ＣＲＣ生成をフレーム送信とは非同期に行う(６０６)。本実施例では、送信バッファ１０５の１つのポートからリンクのビットレートに合わせてデータを読み出し、フレーム送信、またフレーム毎に付加するフレームＣＲＣ生成を行い、他のポートからはＳＢ_ＣＲＣ生成のためのデータを読み出し、ＳＢ_ＣＲＣ生成回路１１３でＳＢ_ＣＲＣ生成する。
【００４８】
送信ＩＵへのＳＢ_ＣＲＣ付加が要求されている場合、分割した最終フレームのデータ部に生成したＳＢ_ＣＲＣを付加する必要があるが、課題を解決するための手段の項で示した様に、フレーム構造やフレーム送信プロトコルのオーバヘッドから、フレーム送信より先にＳＢ_ＣＲＣ生成が終了するので、問題なくＳＢ_ＣＲＣを付加することができる。
【００４９】
また、ＳＢ_ＣＲＣが２つのＩＵに跨って生成される様な場合は、初めのＩＵ送信でＦＣプロトコル制御部１０７は、ＳＢ_ＣＲＣ生成初期レジスタ１１７にＳＢ_ＣＲＣ初期値を、リンク制御レジスタ１１５の送信制御情報にＳＢ_ＣＲＣ生成と生成後報告をセットし、リンク制御部１０４にＩＵ送信要求を行う。ＩＵ送信要求を受けたリンク制御部１０４では、フレーム送信とＳＢ_ＣＲＣ生成を非同期に行い、当該ＩＵのＳＢ_ＣＲＣ生成が終了した時点で、ＦＣプロトコル制御部１０７に生成されたＳＢ_ＣＲＣを報告する。ＳＢ_ＣＲＣ生成終了の報告を受けたＦＣプロトコル制御部１０７は、先に要求したＩＵ送信が完了する前に、次のＩＵが格納されている送信バッファ＃に対応したＳＢ_ＣＲＣ生成初期レジスタ１１７に報告うけたＳＢ_ＣＲＣ値を、リンク制御レジスタ１１５の送信制御情報にＳＢ_ＣＲＣ生成と付加をセットし、リンク制御部１０４にＩＵ送信要求を行う。リンク制御部１０４では、先に要求されたＩＵ送信が完了していないものの、次のＳＢ_ＣＲＣ生成は非同期に動作可能なので、ＳＢ_ＣＲＣ生成回路１１３において、次のＳＢ_ＣＲＣ生成を行う。先のＩＵ送信が完了するとリンク制御部１０４では、続いて次のＩＵ送信がスタートし、リンク上には、フレームが切れ目なく送信されることになる。
【００５０】
以上説明した様に、ＳＢ_ＣＲＣ生成を下位インタフェース制御装置のＩＵ送信時、送信バッファからＳＢ_ＣＲＣ生成のデータとＩＵ送信を非同期に読み出すことで、ＳＢ_ＣＲＣ生成のオーバヘッド無しにＩＵを構成するフレームを送信することができる。
【００５１】
続いて、図１と図７のフローチャートを利用して、フレーム受信からＩＵ構築、更にはＩＵを上位インタフェース制御装置へ転送するデータの流れとＳＢ_ＣＲＣチェック方法を詳細に説明する。
【００５２】
光ファイバケーブル１０３から下位インタフェース制御装置１００に入力された信号は、リンク制御部１０４でフレームに構築され、受信バッファ１０６に格納される。更に、その受信バッファ＃は、ＦＣプロトコル制御部１０７に報告される。フレーム単位に付加されるフレームＣＲＣは、受信バッファ１０６に格納される際に、リンク制御部１０４でチェックされる(６１０)。フレーム受信報告を受けたＦＣプロトコル制御部１０７では、報告された受信バッファ＃に格納されているフレームのヘッダ部や開始、終了コード、更にはリンク制御部１０４でチェックされたフレームＣＲＣの合否を参照して、フレームの正当性や種類、構造、更にはＵＬＰの判断を行う(６１１)。受信フレームがＩＵを構成するフレームの1つである場合、ＦＣプロトコル制御部１０７ではフレームの受信バッファ＃をローカルメモリ１１２に格納し、ＩＵを構成する全フレームを受信するまで、上位インタフェース制御装置１０１へのＩＵ転送を保留する(６１２)。以上の判断は、ＦＣプロトコル制御部１０７のマイクロプログラムで行われるため、ＵＬＰの仕様変更や新しいＵＬＰに柔軟に対応することができる。
【００５３】
ＩＵを構成する全フレームを受信し、さらに当該ＩＵにＳＢ_ＣＲＣが含まれる場合、ＦＣプロトコル制御部１０７は、受信バッファ用データ転送制御レジスタ１１６にローカルメモリ１１２に格納しておいた受信バッファ＃のチェイン情報とオフセットアドレス、メインメモリ１０９のデータ転送先アドレス、データ転送長、転送制御情報を、対応するＳＢ_ＣＲＣチェック初期レジスタ１１８にＳＢ_ＣＲＣ初期値をセットし、入出力バス制御部１０８にデータ転送要求を行う(６１３)。
【００５４】
データ転送要求を受けた入出力バス制御部１０８は、データ転送制御レジスタ１１６に従って、受信バッファ＃をチェインさせＩＵを組立てながら、ＩＵをメインメモリ１０９に転送し(６１４)、更にＳＢ_ＣＲＣ計算をＩＵ転送とは非同期に行う(６１５)。本実施例では、受信バッファ１０６の1つのポートから入出力バスの転送レートに合わせてデータを読み出し、ＩＵ転送を行い、他のポートからはＳＢ_ＣＲＣ計算、チェックのためのデータを読み出し、ＳＢ_ＣＲＣチェック回路１１４でＳＢ_ＣＲＣを計算、チェックする。
【００５５】
また、ＳＢ_ＣＲＣが２つのＩＵに跨っている様な場合は、ＦＣプロトコル制御部１０７で、初めのＩＵを構成する全フレームを受信してから、ＳＢ_ＣＲＣチェック初期レジスタ１１８にＳＢ_ＣＲＣ初期値を、データ転送制御レジスタ１１６に受信バッファ#のチェイン情報、ＳＢ_ＣＲＣ計算、計算後報告の転送制御情報をセットし、入出力バス制御部１０８にＩＵ転送要求を行う。ＩＵ転送要求を受けた入出力バス制御部１０８では、ＩＵ転送とＳＢ_ＣＲＣ計算を非同期に行い、当該ＩＵのＳＢ_ＣＲＣ計算が終了した時点で、ＦＣプロトコル制御部１０７に計算したＳＢ_ＣＲＣを報告する。ＳＢ_ＣＲＣ計算終了の報告を受けたＦＣプロトコル制御部１０７は、次ＩＵを構成する全フレームの受信が完了していたら、先に要求したＩＵ転送が完了していなくても、ＳＢ_ＣＲＣチェック初期レジスタ１１８に報告を受けたＳＢ_ＣＲＣ値を、データ転送制御レジスタ１１６に次ＩＵを構成する受信バッファ＃のチェイン情報、ＳＢ_ＣＲＣ計算、チェックの転送制御情報をセットし、入出力バス制御部１０８にＩＵ転送要求を行う。入出力バス制御部１０８では先に要求されたＩＵ転送が完了していないものの、次のＳＢ_ＣＲＣ計算は非同期に動作可能なので、ＳＢ_ＣＲＣチェック回路１１４において次のＳＢ_ＣＲＣ計算、チェックを行う。先のＩＵ転送が完了すると入出力バス制御部１０８では、続いて次のＩＵ転送がスタートし、入出力バス１０２に効率よくデータを転送することができる。
【００５６】
以上説明した様に、ＳＢ_ＣＲＣチェックを下位インタフェース制御装置のＩＵ転送時、受信バッファからＳＢ_ＣＲＣチェックのデータとＩＵ転送を非同期に読み出すことで、ＳＢ_ＣＲＣチェックのオーバヘッド無しにＩＵを上位インタフェース制御装置に転送することができる。
【００５７】
以上ＳＢ_ＣＲＣＢ２の様に、ＩＵ(上位プロトコルの制御単位)が、複数のフレーム(下位プロトコルの制御単位)で構成される場合について詳細に説明したが、本発明はこれに止まることなく、上位プロトコルの制御単位が複数の下位プロトコルの制御単位で構成される様なデータ転送系において当て嵌めることができるのは、いうまでもない。
【００５８】
【発明の効果】
複数フレームに跨るＩＵのＳＢ_ＣＲＣ計算をデータ転送要求契機にデータ転送と非同期で行うことにより、ＳＢ_ＣＲＣ計算のオーバヘッドを無くし、データ転送を最大性能で実行することができる。
【００５９】
更に、データ転送要求を複数セット可能とすることで、ＩＵのチェインや、更に、そのＳＢ_ＣＲＣ計算が必要な場合にも、データ転送を最大性能で実行することができる。
【００６０】
ＳＢ_ＣＲＣ計算の初期値や結果をマイクロプログラムでライト、リード可能とすることにより、ＳＢ_ＣＲＣ計算の仕様変更や、ＳＢ_ＣＲＣ計算を多重に処理する必要がある場合も柔軟に対応できる。
【００６１】
受信フレームから組み立てたＩＵを処理する際、同ＩＵを受信フレームの格納バッファ＃のチェイン情報で処理可能とすることで、ＩＵを組み立てる専用のメモリが必要ない。
【図面の簡単な説明】
【図１】本発明のインタフェース制御装置の一実施例を示す構成図である。
【図２】（ａ）は本発明に関するインタフェースのフレーム構造を示した図、(ｂ)は本発明に関するインタフェースの情報ユニット構造を示した図、(ｃ)は本発明に関するインタフェースのＳＢデータ構造を示した図である。
【図３】本発明のインタフェース制御方法で、ＳＢ_ＣＲＣチェック制御の動作例を示した図である。
【図４】（ａ）は本実施例における送信バッファの構成図、(ｂ)は本実施例における受信バッファの構成図である。
【図５】（ａ）は本実施例におけるリンク制御レジスタの構成図、(ｂ)は本実施例におけるデータ転送制御レジスタの構成図、（ｃ）は本実施例におけるＳＢ_ＣＲＣ生成初期レジスタの構成図、(ｄ)は本実施例におけるＳＢ_ＣＲＣチェック初期レジスタの構成図である。
【図６】本実施例におけるＩＵ送信とＳＢ_ＣＲＣ生成方法を示すフローチャートである。
【図７】本実施例におけるＩＵ受信とＳＢ_ＣＲＣチェック方法を示すフローチャートである。
【図８】本発明の関するインタフェース制御装置の従来例を示す構成図である。
【図９】図８において、フレーム送信制御方法を示すフローチャートである。
【図１０】図８において、フレーム受信制御方法を示すフローチャートである。
【図１１】図８において、ＳＢ_ＣＲＣ生成を中央処理装置で実現した場合のＩＵ送信制御方法を示すフローチャートである。
【図１２】図８に於いて、ＳＢ_ＣＲＣチェック生成を中央処理装置で実現した場合のＩＵ受信制御方法を示すフローチャートである。
【図１３】図８に於いて、ＳＢ_ＣＲＣ生成をＦＣプロトコル制御部で実現した場合のＩＵ送信制御方法を示すフローチャートである。
【図１４】図８において、ＳＢ_ＣＲＣチェック生成をＦＣプロトコル制御部で実現した場合のＩＵ受信制御方法を示すフローチャートである。
【符号の説明】
１００…下位インタフェース制御装置、１０１…上位インタフェース制御装置、１０２…入出力バス、１０３…光ファイバケーブル、１０４…リンク制御部、１０５…送信バッファ、１０６…受信バッファ、１０７…ＦＣプロトコル制御部、１０８…入出力バス制御部、１０９…メインメモリ、１１０…中央処理装置、１１１…入出力バス制御部、１１２…ローカルメモリ、１１３…ＳＢ_ＣＲＣ生成回路、１１４…ＳＢ_ＣＲＣチェック回路、１１５…リンク制御レジスタ、１１６…データ転送制御レジスタ、１１７…ＳＢ_ＣＲＣ生成初期レジスタ、１１８…ＳＢ_ＣＲＣチェック初期レジスタ、２００…フレーム、２０１…情報ユニット、２０２…ＳＢデータ、７００…下位インタフェース制御装置、７０１…上位インタフェース制御装置、７０２…入出力バス、７０３…光ファイバケーブル、７０４…リンク制御部、７０５…送信バッファ、７０６…受信バッファ、７０７…ＦＣプロトコル制御部、７０８…入出力バス制御部、７０９…メインメモリ、７１０…中央処理装置、７１１…入出力バス制御部、７１２…ローカルメモリ。
【図１】
0004615122.tif 000002
【図２】
0004615122.tif 000003
【図３】
0004615122.tif 000004
【図４】
0004615122.tif 000005
【図５】
0004615122.tif 000006
【図６】
0004615122.tif 000007
【図７】
0004615122.tif 000008
【図８】
0004615122.tif 000009
【図９】
0004615122.tif 000010
【図１０】
0004615122.tif 000011
【図１１】
0004615122.tif 000012
【図１２】
0004615122.tif 000013
【図１３】
0004615122.tif 000014
【図１４】
0004615122.tif 000015