(57)【要約】【課題】オーバーフローが発生してもパケット単位でのデータ転送を保証する。【解決手段】ＩＯ処理装置１は、複数の連続する固定長パケットからなるストリームデータをパケット長より小さい第１のデータ単位で順次入力するストリーム入力制御部１１と、前記パケット長と異なる第２のデータ単位でデータをバス上へ順次出力するバスマスタ動作制御部１３と、バスバスタ動作制御部１３によりバス３上へデータが出力されるまでの間、ストリーム入力制御部１１により入力されるデータを前記第２のデータ単位で蓄積する転送バッファ１２と、転送バッファ１２においてオーバーフローが発生した場合、少なくともストリーム入力制御部１１におけるデータ入力を一時停止することによってオーバーフローを解消し、パケット単位でのデータ欠落が生じた状態で、ストリーム入力制御部１１におけるデータ入力が再開するよう制御する転送バッファ入力制御部１４とを有している。【選択図】      図１
2007323345.tif 000002
【特許請求の範囲】
【請求項１】
複数の連続する固定長パケットからなるストリームデータをパケット長より小さい第１のデータ単位で順次入力する入力制御部と、
前記パケット長と異なる第２のデータ単位でデータをバス上へ順次出力する出力制御部と、
前記出力制御部によりバス上へデータが出力されるまでの間、前記入力制御部により入力されるデータを前記第２のデータ単位で蓄積する転送バッファと、
前記転送バッファにおいてオーバーフローが発生した場合、少なくとも前記入力制御部におけるデータ入力を一時停止することによってオーバーフローを解消し、パケット単位でのデータ欠落が生じた状態で、前記入力制御部におけるデータ入力が再開するよう制御する転送バッファ入力制御部と
を具備することを特徴とする入出力処理装置。
【請求項２】
前記転送バッファ入力制御部は、パケットを構成する一部のデータが前記転送バッファに入った状態で前記オーバーフローが発生した場合には、前記入力制御部におけるデータ入力を一時停止すると共に前記転送バッファ中の少なくとも前記一部のデータを廃棄することによってオーバーフローを解消し、後続するパケットの先頭位置から前記入力制御部におけるデータ入力が再開するよう制御する特徴とする請求項１記載の入出力処理装置。
【請求項３】
前記転送バッファ入力制御部は、前記廃棄を前記第２のデータ単位で実行することを特徴とする請求項２記載の入出力処理装置。
【請求項４】
前記第２のデータ単位は、前記第１のデータ単位よりも大きく、前記パケット長よりも小さいことを特徴とする請求項１乃至３のいずれかに記載の入出力処理装置。
【請求項５】
前記パケット長は192バイト長であり、前記第１のデータ単位は16バイト単位であり、前記第２のデータ単位は128バイト単位であることを特徴とする請求項１乃至３のいずれかに記載の入出力処理装置。
【請求項６】
入出力デバイスとバスとの間に接続される入出力処理装置と、前記バスを介して前記入出力処理装置に接続されるホストシステムとを具備するコンピュータシステムであって、
前記入出力処理装置は、
複数の連続する固定長パケットからなるストリームデータをパケット長より小さい第１のデータ単位で順次入力する入力制御部と、
前記パケット長と異なる第２のデータ単位でデータをバス上へ順次出力する出力制御部と、
前記出力制御部によりバス上へデータが出力されるまでの間、前記入力制御部により入力されるデータを前記第２のデータ単位で蓄積する転送バッファと、
前記転送バッファにおいてオーバーフローが発生した場合、少なくとも前記入力制御部におけるデータ入力を一時停止することによってオーバーフローを解消し、パケット単位でのデータ欠落が生じた状態で、前記入力制御部におけるデータ入力が再開するよう制御する転送バッファ入力制御部とを具備し、
前記ホストシステムは、前記入出力処理装置から前記バス上へ出力されるデータを受信し、前記パケット長のデータ単位で処理を行うことを特徴とするコンピュータシステム。
【請求項７】
前記転送バッファ入力制御部は、パケットを構成する一部のデータが前記転送バッファに入った状態で前記オーバーフローが発生した場合には、前記入力制御部におけるデータ入力を一時停止すると共に前記転送バッファ中の少なくとも前記一部のデータを廃棄することによってオーバーフローを解消し、後続するパケットの先頭位置から前記入力制御部におけるデータ入力が再開するよう制御する特徴とする請求項６記載のコンピュータシステム。
【請求項８】
前記転送バッファ入力制御部は、前記廃棄を前記第２のデータ単位で実行することを特徴とする請求項７記載のコンピュータシステム。
【請求項９】
前記第２のデータ単位は、前記第１のデータ単位よりも大きく、前記パケット長よりも小さいことを特徴とする請求項６乃至８のいずれかに記載のコンピュータシステム。
【請求項１０】
前記パケット長は192バイト長であり、前記第１のデータ単位は16バイト単位であり、前記第２のデータ単位は128バイト単位であることを特徴とする請求項６乃至８のいずれかに記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスクロックで動作するバスを介してホストシステムと接続され、入出力デバイスとホストシステムとの間での入出力処理を行う入出力処理装置及び同入出力処理装置を有するコンピュータシステムに関する。
【背景技術】
【０００２】
パーソナルコンピュータに代表されるコンピュータシステムは、ＰＣＩ（Peripheral Component Interconnect）バスのようなバスクロックで動作するバスを有するのが一般的である。このバスには、各種の入出力デバイス（ＩＯデバイス）を利用するホストシステムが接続される。このバスにはまた、入出力処理装置（ＩＯ処理装置）も接続される。ＩＯ処理装置はバスクロックにより動作して、ＩＯデバイスとホストシステムとの間の入出力処理を行う。
【０００３】
各種の入出力処理装置の中には、パケットストリームデータ転送におけるＩＯ処理を行うものがある。この種のＩＯ処理装置は、一般に、連続した複数パケットからなるストリームデータを入力して、パケット長と異なる処理単位でデータを転送バッファに蓄積した後、バス上へ出力する。
【０００４】
バス上での処理に遅延が発生したような場合には、転送バッファ内では入力処理速度に対して十分な出力処理速度が得られなくなり、オーバーフローが生じる。このような場合、適切な対処を行わないと、パケット中の一部のデータが欠落した状態の壊れたパケットがバスへ出力されてしまい、ホストシステム側で不具合が生じることとなる。
【０００５】
なお、バッファにオーバーフローが生じた場合の対処法としては様々なものが提案されている。例えば、特許文献１には、バッファにオーバーフローが発生してフレーム中の一部のパケットが欠損した場合に、そのフレームを廃棄することにより、不整合フレームの発生を防止する技術が開示されている。
【特許文献１】特開２００４−３２０１５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記特許文献１では、不整合フレームの発生を防止するはできるものの、フレームそのものを廃棄してしまうため、欠損していないパケットについても無駄に廃棄してしまうこととなる。また、フレームを受けるシステム側においても転送済みのフレーム前半部の廃棄処理をしなければならないという欠点がある。
【０００７】
本発明は上記実情に鑑みてなされたものであり、転送バッファにおいてオーバーフローが発生してもパケット単位でのデータ転送を保証することが可能な入出力処理装置及び同入出力処理装置を有するコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る入出力処理装置は、複数の連続する固定長パケットからなるストリームデータをパケット長より小さい第１のデータ単位で順次入力する入力制御部と、前記パケット長と異なる第２のデータ単位でデータをバス上へ順次出力する出力制御部と、前記出力制御部によりバス上へデータが出力されるまでの間、前記入力制御部により入力されるデータを前記第２のデータ単位で蓄積する転送バッファと、前記転送バッファにおいてオーバーフローが発生した場合、少なくとも前記入力制御部におけるデータ入力を一時停止することによってオーバーフローを解消し、パケット単位でのデータ欠落が生じた状態で、前記入力制御部におけるデータ入力が再開するよう制御する転送バッファ入力制御部とを具備することを特徴とする。
【０００９】
本発明に係るコンピュータシステムは、入出力デバイスとバスとの間に接続される入出力処理装置と、前記バスを介して前記入出力処理装置に接続されるホストシステムとを具備するコンピュータシステムであって、前記入出力処理装置は、複数の連続する固定長パケットからなるストリームデータをパケット長より小さい第１のデータ単位で順次入力する入力制御部と、前記パケット長と異なる第２のデータ単位でデータをバス上へ順次出力する出力制御部と、前記出力制御部によりバス上へデータが出力されるまでの間、前記入力制御部により入力されるデータを前記第２のデータ単位で蓄積する転送バッファと、前記転送バッファにおいてオーバーフローが発生した場合、少なくとも前記入力制御部におけるデータ入力を一時停止することによってオーバーフローを解消し、パケット単位でのデータ欠落が生じた状態で、前記入力制御部におけるデータ入力が再開するよう制御する転送バッファ入力制御部とを具備し、前記ホストシステムは、前記入出力処理装置から前記バス上へ出力されるデータを受信し、前記パケット長のデータ単位で処理を行うことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、転送バッファにおいてオーバーフローが発生してもパケット単位でのデータ転送を保証することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して、本発明の実施の形態を説明する。
【００１２】
図１は、本発明の一実施形態に係るコンピュータシステムの構成例を示すブロック図である。
【００１３】
図１に示されるコンピュータシステムは、例えばパーソナルコンピュータを構成し、入出力処理装置１（以下、ＩＯ処理装置１）、ホストシステム２、バス３、入出力デバイス１０（以下、ＩＯデバイス１０）などを含む。ＩＯ処理装置１は、ＩＯデバイス１０とバス３との間に接続されている。ホストシステム２は、バス３を介してＩＯ処理装置１に接続されている。バス３は、例えばＰＣＩバスである。
【００１４】
ＩＯデバイス１０は、ストリーム入力制御部１１、転送バッファ１２、バスマスタ動作制御部（データ出力制御部）１３、転送バッファ入力制御部１４、および転送バッファ出力制御部１５を含む。一方、ホストシステム２は、システムメモリ２１および制御部２２を含む。
【００１５】
ＩＯ処理装置１は、パケットストリームデータ転送におけるＩＯ処理を行うものであり、ハードウェアとして実現される。このＩＯ処理装置１は、ＩＯデバイス１０からパケットストリームとして入力されるデータについて、バス３を介して接続されるホストシステム２のシステムメモリ２１への転送出力動作を行うものである。ＩＯ処理装置１に入力されるパケットストリームは、連続する複数の固定長パケットから構成され、各パケットは１９２バイト固定長のパケットサイズを有し、１バイト単位での転送が可能なバイトストリームである。
【００１６】
ストリーム入力制御部１１は、入力されるストリームデータを９２バイト固定長のパケット長よりも小さい１６バイト単位で順次入力し、転送バッファ１２へ出力する制御を行うものである。
【００１７】
転送バッファ１２は、バスマスタ動作制御部１３によってバス３上へデータが出力されるまでの間、ストリーム入力制御部１１により入力されるデータを１２８バイト単位で蓄積する、複数段の記憶部を有するメモリである。この転送バッファ１２は、転送バッファ入力制御部と転送バッファ出力制御部によって１２８バイト×４段のＦＩＦＯとして動作するように制御される。
【００１８】
バスマスタ動作制御部１３は、転送バッファ１２から１２８バイトのデータを順次入力し、ホストシステム２側のシステムメモリ２１に対するライト処理を実現するためにデータをバス３上へ出力する制御を行うものである。
【００１９】
転送バッファ入力制御部１４は、転送バッファ１２のＦＩＦＯとしての動作の入力制御と、オーバーフロー発生時の制御を行う。この転送バッファ入力制御部１４は、ストリーム入力制御部１１や転送バッファ１２を制御するための情報や、転送バッファ出力制御部１５から得られる情報を用いることにより、転送バッファ１２中のデータの状況を認識することができるようになっている。
【００２０】
この転送バッファ入力制御部１４は、転送バッファ１２においてオーバーフローが発生した場合、少なくともストリーム入力制御部１１におけるデータ入力を一時停止することによってオーバーフローを解消し、パケット単位でのデータ欠落が生じた状態で、ストリーム入力制御部におけるデータ入力が再開するよう制御する。特に、パケットを構成する一部のデータが転送バッファ１２に入った状態でオーバーフローが発生した場合には、ストリーム入力制御部１１におけるデータ入力を一時停止すると共に転送バッファ１２中の少なくとも上記一部のデータを廃棄することによってオーバーフローを解消し、後続するパケットの先頭位置からストリーム入力制御部１１におけるデータ入力が再開するよう制御する。但し、転送バッファ入力制御部１４は、上記廃棄を１２８バイトのデータ単位（即ち、転送バッファ１２内の個々の記憶部の単位）で実行する。
【００２１】
転送バッファ出力制御部１５は、転送バッファ１２のＦＩＦＯとしての動作の出力制御を行う。例えば、転送バッファ入力制御部１４から得られる情報に従って転送バッファ１２を制御するほか、バスマスタ動作制御部１３を制御したり、データ出力を示す情報を転送バッファ入力制御部１４に通知したりすることもできる。
【００２２】
一方、ホストシステム２は、ＩＯ処理装置１からバス３上へ出力されるデータを受信し、当該データを上記パケット長のデータ単位で処理する。システムメモリ２１は、ＩＯ処理装置１からバス３を介して転送されてくるデータを１９２バイト単位で処理するために所定の記憶領域（バッファ）を形成している。制御部２２は、オペレーティングシステムや所定のアプリケーションなどを実行することにより、システムメモリ２１に蓄積されるデータを１９２バイト単位で処理する。
【００２３】
図２は、ＩＯ処理装置１の基本的な動作の一例を説明するための概念図である。
【００２４】
前述したように、ストリームとして入力され、バスへライト出力されるデータは、１９２バイト固定長のパケットで構成される。
【００２５】
図２では、１９２バイト固定長のパケットデータについて、パケットの先頭の１バイト目から６４バイト目までの６４バイト分をａ部、６５バイト目から１２８バイト目までの６４バイト分をｂ部、１２９バイト目からパケットの最後の１９２バイト目までの６４バイト分をＣ部と示している。
【００２６】
ストリーム入力制御部１１は、処理開始時にパケットの先頭を検出し、以後、１６バイト単位で入力したデータを、ＦＩＦＯとして動作するよう入力制御された転送バッファ１２へ出力する。
【００２７】
バスマスタ動作制御部１３は、転送バッファ１２に１２８バイト以上のデータが蓄積されると、バス３が使用可能になるのを待ち、転送バッファ出力制御部１５によってＦＩＦＯとして動作するよう出力制御された転送バッファ１２からデータを入力し、バス３上へライト出力を行い、システムメモリ２１へデータを転送する動作を、１２８バイト単位で行う。バスマスタ動作制御部１３によりバス３が使用可能になってからの１２８バイトデータ出力処理時間は、ストリーム入力制御部１１による１６バイト単位の処理での１２８バイト分のデータ入力処理時間より十分早い。
【００２８】
バスマスタ動作制御部１３がバス３を使用可能になるのを待つ時間は、システムの状態に依存し、一時的に単位時間当たりに、転送バッファ１２へストリーム入力制御部１１によって入力されるデータ量が、バスマスタ動作制御部１３によって出力されるデータ量を上回る状態に対して、転送バッファ１２は１２８バイト×４＝５１２バイト分までデータを蓄積できる。５１２バイト分までデータを蓄積した状態で、さらに、ストリーム入力制御部でデータ入力が発生すると、転送バッファ入力制御部１４により転送バッファ１２のオーバーフロー状態が検出され、ストリーム入力制御部１１は転送バッファ入力制御部１４からの指示により入力したデータを転送バッファ１２へ出力せず、それ以後について入力を停止する。
【００２９】
オーバーフロー状態は、バスマスタ動作制御部１３により転送バッファ１２からバス３へデータが出力される、または、転送バッファ入力制御部１４により転送バッファ１２中のデータが破棄される動作により、転送バッファ１２中に新たなデータの入力が可能となる空き容量が発生すると解除される。転送バッファ１２中の空き容量が発生すると、転送バッファ入力制御部１４はストリーム入力制御部１１へ指示を行い、ストリーム入力制御部１１は、入力ストリームについてパケットの先頭を検出し、以後、１６バイト単位で入力したデータを、転送バッファ１２へ入力する。
【００３０】
図３は、システムメモリ２１に形成された所定の記憶領域に蓄積されるデータの状況を説明するための概念図である。図３に示すように、バス３を介してホストシステム２に転送された１２８バイト単位のデータは、システムメモリ２１上の所定の記憶領域では、１９２バイト単位（パケット長）で順次記憶され、制御部２２によりそのデータ処理が行われることになる。もし、パケット長のデータの一部が欠けている場合、データ処理において不具合が生じる可能性がある。
【００３１】
図４は、オーバーフロー発生時の転送バッファ内の状況を示す３つのケースを説明するための概念図である。
【００３２】
オーバーフロー発生時、転送バッファ入力制御部１４は転送バッファ１２内のデータについて、図４の（ａ）に示すケース１または（ｃ）に示すケース３の場合のように、１９２バイト固定長パケットの先頭１バイト目からの入力でオーバーフローが発生した場合、転送バッファ１２中の出力転送サイズの１２８バイト単位での先頭のデータがパケットデータの先頭となるデータから、転送バッファ１２中の最後のパケットの途中までを入力したデータまでを破棄し、転送バッファ１２に空きを作る。
【００３３】
図４の（ａ）に示すケース１の例の１９２バイト固定長パケットの１２９バイト目からの入力でオーバーフローが発生した場合、１２８バイト単位での先頭のデータがパケットの先頭のデータとなる、４つめの最後の１２８バイトデータ“3a,3b”が破棄される。この破棄により空き容量が発生することによってオーバーフローが解除され、以後に検出されるパケットの先頭“4a,4b”の１２８バイト分から入力される。
【００３４】
図４の（ｃ）に示すケース３の例の１９２バイト固定長パケットの６５バイト目からの入力でオーバーフローが発生した場合、１２８バイト単位での先頭のデータがパケットの先頭のデータとなる、３つめの１２８バイトデータ“3a,3b”から４つめの最後の１２８バイトデータ“3c,4a”までが破棄される。この破棄により空き容量が発生することによってオーバーフローが解除され、以後に検出されるパケットの先頭“5a,5b”の１２８バイト分から入力される。
【００３５】
図４の（ｂ）に示すケース２の例の１９２バイト固定長パケットの先頭１バイト目からの入力でオーバーフローが発生した場合、転送バッファ１２中のデータはそのまま保持され、バスマスタ動作制御部１３による出力により空き容量が発生したときにオーバーフローが解除され、以後に検出されるパケットの先頭の１２８バイト分から入力される。
【００３６】
図５は、図４に示したケース１〜３に対応してシステムメモリ２１の記憶領域に形成されるデータの状況をそれぞれ説明するための概念図である。
【００３７】
図４の（ａ）に示すケース１では、オーバーフローを解消するために１９２バイト固定長パケットに相当するデータ“3a,3b,3c”が廃棄された。この場合、データ転送先のシステムメモリ２１においては、図５の(ａ)に示すように、データ配列が乱れることなく、１９２バイト固定長のデータ“3a,3b,3c”が除かれた状態でデータが記憶されて処理される。
【００３８】
図４の（ｂ）に示すケース２では、オーバーフローを解消するために１９２バイト固定長パケットに相当するデータ“4a,4b,4c”が廃棄された。この場合、データ転送先のシステムメモリ２１においては、図５の(ｂ)に示すように、データ配列が乱れることなく、１９２バイト固定長のデータ“4a,4b,4c”が除かれた状態でデータが記憶されて処理される。
【００３９】
図４の（ｃ）に示すケース３では、オーバーフローを解消するために２つの１９２バイト固定長パケットに相当するデータ“4a,4b,4c”および“5a,5b,5c”が廃棄された。この場合、データ転送先のシステムメモリ２１においては、図５の(ｃ)に示すように、データ配列が乱れることなく、１９２バイト固定長のデータ“4a,4b,4c”および１９２バイト固定長のデータ“5a,5b,5c”が除かれた状態でデータが記憶されて処理される。
【００４０】
図６は、図４の（ｂ）に示したケース２に対応する動作の一例を示すタイミングチャートである。
【００４１】
図６に示されるように、バス３上での処理に遅延が生じたために、バッファ１、２、３、４の順にデータが満たされて行き、１９２バイト固定長パケット“4a,4b,4c”の先頭１バイト目からの入力でオーバーフローが発生した場合、転送バッファ１２中のデータ“1b,1c”“2a,2b”“2c,3a”“3b,3c”はそのまま保持され、バスマスタ動作制御部１３による出力により空き容量が発生したときにオーバーフローが解除され、以後に検出されるパケットの先頭“5a,5b”の１２８バイト分から入力される。
【００４２】
図７は、図４の（ｃ）に示したケース３に対応する動作の一例を示すタイミングチャートである。
【００４３】
図７に示されるように、バス３上での処理に遅延が生じたために、バッファ１、２、３、４の順にデータが満たされて行き、１９２バイト固定長パケット“4a,4b,4c”の６５バイト目からの入力でオーバーフローが発生した場合、１２８バイト単位での先頭のデータがパケットの先頭のデータとなる、３つめの１２８バイトデータ“3a,3b”から４つめの最後の１２８バイトデータ“3c,4a”までが破棄される。この破棄により空き容量が発生することによってオーバーフローが解除され、以後に検出されるパケットの先頭“5a,5b”の１２８バイト分から入力される。
【００４４】
このように上記実施形態によれば、入力されるストリームを構成する固定長パケットと異なる固定長の出力転送サイズで動作するＩＯ処理装置において、転送バッファのオーバーフローによるパケット中データの欠落した壊れたパケットが発生しなくなり、パケット単位でのデータが保証され、ホストシステム側で出力結果を利用する際に壊れたパケットの処理を考慮する必要がなくなる。
【００４５】
なお、上記実施形態では、パケット長よりも小さいデータ単位でデータをバッファリングしてシステムメモリ２１へ転送する場合の例を挙げたが、代わりに、パケット長よりも大きいデータ単位でデータをバッファリングしてシステムメモリ２１へ転送するように変形実施することも可能である。
【００４６】
本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００４７】
【図１】本発明の一実施形態に係るコンピュータシステムの構成例を示すブロック図。
【図２】ＩＯ処理装置の基本的な動作の一例を説明するための概念図。
【図３】システムメモリに形成された所定の記憶領域に蓄積されるデータの状況を説明するための概念図。
【図４】オーバーフロー発生時の転送バッファ内の状況を示す３つのケースを説明するための概念図。
【図５】図４に示したケース１〜３に対応してシステムメモリの記憶領域に形成されるデータの状況をそれぞれ説明するための概念図。
【図６】図４の（ｂ）に示したケース２に対応する動作の一例を示すタイミングチャート。
【図７】図４の（ｃ）に示したケース３に対応する動作の一例を示すタイミングチャート。
【符号の説明】
【００４８】
１…入出力処理装置（ＩＯ処理装置）、２…ホストシステム、３…バス、１０…入出力デバイス（ＩＯデバイス）、１１…ストリーム入力制御部、１２…転送バッファ、１３…バスマスタ動作制御部（データ出力制御部）、１４…転送バッファ入力制御部、１５…転送バッファ出力制御部、２１…システムメモリ、２２…制御部。
【図１】
2007323345.tif 000003
【図２】
2007323345.tif 000004
【図３】
2007323345.tif 000005
【図４】
2007323345.tif 000006
【図５】
2007323345.tif 000007
【図６】
2007323345.tif 000008
【図７】
2007323345.tif 000009