(57)【要約】【課題】データを並列受信して、受信したデータ順を変えずに先頭より処理することができる情報処理装置、情報処理方法、その記録媒体およびプログラムを提供する。【解決手段】通信手段１０は、Ｗｅｂサーバと通信を行なう。制御手段１１は、データを複数のブロックに仮想的に分割して複数のブロックデータとする。複数の受信手段１２は、通信手段１０を介して複数のブロックデータの一部を並列に受信する。複数のＦＩＦＯ手段１３は、複数の受信手段１２の各々が受信したブロックデータを記憶し、記憶した順にブロックデータを出力する。処理手段１４は、データにおけるブロックデータの並びに応じて複数のＦＩＦＯ手段１３より選択的にブロックデータを読み出して処理する。【選択図】  図１
2005018631.tif 000002
【特許請求の範囲】
【請求項１】
データを提供する情報提供装置よりネットワークを介して所望のデータを取得し処理する情報処理装置であって、
前記情報提供装置と通信を行なう通信手段と、
前記データを複数のブロックに分割して複数のブロックデータとする分割手段と、
前記通信手段を介して複数の前記ブロックデータの一部を受信する複数の受信手段と、
複数の前記受信手段の各々に対して設置され、前記受信手段が受信した前記ブロックデータを記憶し、記憶した順に前記ブロックデータを出力する複数の一時記憶手段と、
前記データにおける前記ブロックデータの並びに応じて前記複数の一時記憶手段から前記ブロックデータを読み出して処理する処理手段と
を具備することを特徴とする情報処理装置。
【請求項２】
前記複数の一時記憶手段における記憶可能な最大のデータ量と、前記ブロックデータのデータ量とが同じ大きさであることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数の受信手段は、前記複数のブロックデータの一部を時分割して受信することを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記処理手段は、前記複数の一時記憶手段より時分割で選択的に前記ブロックデータを読み出して処理することを特徴とする請求項１から請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
前記分割手段は、前記データを分割することによるブロック数が前記複数の受信手段の数より多くなるように分割することを特徴とする請求項１から請求項４のいずれか１項に記載の情報処理装置。
【請求項６】
前記複数の受信手段の内利用する受信手段の数、前記ブロック数、前記ブロックデータのデータ容量を前記受信手段により受信を開始する前に決定する制御手段を更に具備し、
前記分割手段は、前記制御手段の決定に応じて前記データの分割を行なうことを特徴とする請求項１から請求項５のいずれか１項に記載の情報処理装置。
【請求項７】
前記制御手段は、前記通信手段が前記ネットワークを介して前記情報提供装置と通信する際の通信速度を基に、前記複数の受信手段の内利用する受信手段の数、前記ブロック数、前記ブロックデータのデータ容量を決定することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記制御手段は、前記情報提供装置のオペレーティングシステムの種類を基に、前記複数の受信手段の内利用する受信手段の数、前記ブロック数、前記ブロックデータのデータ容量を決定することを特徴とする請求項６または請求項７に記載の情報処理装置。
【請求項９】
前記一時記憶手段はＦＩＦＯであることを特徴とする請求項１から請求項８のいずれか１項に記載の情報処理装置。
【請求項１０】
データを提供する情報提供装置よりネットワークを介して所望のデータを取得する通信手段を備える情報処理装置を用いた情報処理方法であって、
前記データを複数のブロックに分割して複数のブロックデータとする第１のステップと、
前記通信手段を介して複数の前記ブロックデータの一部を複数の受信手段から受信する第２のステップと、
複数の前記受信手段が受信した前記ブロックデータを、前記受信手段に対応して設置された複数の一時記憶手段に記憶する第３のステップと、
前記データにおける前記ブロックデータの並びに応じて前記複数の一時記憶手段から前記ブロックデータを読み出して処理する第４のステップと
を有することを特徴とする情報処理方法。
【請求項１１】
前記複数の一時記憶手段における記憶可能な最大のデータ量と、前記ブロックデータのデータ量とが同じ大きさであることを特徴とする請求項１０に記載の情報処理方法。
【請求項１２】
データを提供する情報提供装置よりネットワークを介して所望のデータを取得する通信手段を備える情報処理装置用のプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記データを複数のブロックに分割して複数のブロックデータとする第１のステップと、
前記通信手段を介して複数の前記ブロックデータの一部を複数の受信手段から受信する第２のステップと、
複数の前記受信手段が受信した前記ブロックデータを、前記受信手段に対応して設置された複数の一時記憶手段に記憶する第３のステップと、
前記データにおける前記ブロックデータの並びに応じて前記複数の一時記憶手段から前記ブロックデータを読み出して処理する第４のステップと
を情報処理装置に実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１３】
前記複数の一時記憶手段における記憶可能な最大のデータ量と、前記ブロックデータのデータ量とが同じ大きさであることを特徴とする請求項１２に記載の記録媒体。
【請求項１４】
データを提供する情報提供装置よりネットワークを介して所望のデータを取得する通信手段を備える情報処理装置用のプログラムであって、
前記データを複数のブロックに分割して複数のブロックデータとする第１のステップと、
前記通信手段を介して複数の前記ブロックデータの一部を複数の受信手段から受信する第２のステップと、
複数の前記受信手段が受信した前記ブロックデータを、前記受信手段に対応して設置された複数の一時記憶手段に記憶する第３のステップと、
前記データにおける前記ブロックデータの並びに応じて前記複数の一時記憶手段から前記ブロックデータを読み出して処理する第４のステップと
を情報処理装置に実行させるためのプログラム。
【請求項１５】
前記複数の一時記憶手段における記憶可能な最大のデータ量と、前記ブロックデータのデータ量とが同じ大きさであることを特徴とする請求項１４に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データの送受信および処理が可能な情報処理装置、情報処理方法、その記録媒体およびプログラムに関するものである。
【０００２】
【従来の技術】
近年、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂなどの普及により、インターネットではＷｅｂサーバを利用した情報の閲覧が可能である。また、利用者は、インターネット経由でＷｅｂサーバが提供するデータやプログラムなどをダウンロードすることもできる。この際、インターネット経由でのデータ利用は、ローカルコンピュータからのデータ利用にくらべダウンロード等のスピードが非常に遅いことが多い。この対策として、より早くデータをダウンロードする為、Ｗｅｂサーバにあるデータを受信する際に、複数のＨＴＴＰプロトコルに準拠した通信回線（セッション）を複数開き同一のデータを分割して、分割したデータを並列にダウンロードする技術が利用されている。
【０００３】
具体的には、ＦＴＰプロトコルによりファイルを転送する際に、ファイルの分割数及びＴＣＰセッションの数を、ＴＣＰプロトコルのウインドウサイズと、ネットワークの往復遅延時間及び回線速度とに基づいて決定し、この数でファイルを分割すると共にＴＣＰセッションをデータ転送用に複数確立して、データ転送を行なうことが開示されている（例えば、特許文献１参照。）。
【０００４】
【特許文献１】
特開平８−３０５６４３号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、データをダウンロードして直ちに利用したい場合であって、そのデータが例えば圧縮状態にある場合には、ダウンロードしたデータに対して直ちにデコード処理をしなければならない。そのため、上述したように分割したデータを並列してダウンロードしても、分割したデータが揃って初めてデータがデコード処理可能となる。すなわち、分割したデータが揃うまで待つために、デコード処理が始まる迄の時間がかかってしまうという問題がある。
【０００６】
この発明は、上述した事情を考慮してなされたもので、データを並列受信して、受信したデータ順を変えずに先頭より処理することができる情報処理装置、情報処理方法、その記録媒体およびプログラムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
この発明は、上述した課題を解決すべくなされたもので、本発明による情報処理装置においては、データを提供する情報提供装置よりネットワークを介して所望のデータを取得し処理する情報処理装置であって、情報提供装置と通信を行なう通信手段と、データを複数のブロックに分割して複数のブロックデータとする分割手段と、通信手段を介して複数のブロックデータの一部を受信する複数の受信手段と、複数の受信手段の各々に対して設置され、受信手段が受信したブロックデータを記憶し、記憶した順にブロックデータを出力する複数の一時記憶手段と、データにおけるブロックデータの並びに応じて複数の一時記憶手段からブロックデータを読み出して処理する処理手段とを具備することを特徴とする。
【０００８】
また、本発明による情報処理方法においては、データを提供する情報提供装置よりネットワークを介して所望のデータを取得する通信手段を備える情報処理装置を用いた情報処理方法であって、データを複数のブロックに分割して複数のブロックデータとする第１のステップと、通信手段を介して複数のブロックデータの一部を複数の受信手段から受信する第２のステップと、複数の受信手段が受信したブロックデータを、受信手段に対応して設置された複数の一時記憶手段に記憶する第３のステップと、データにおけるブロックデータの並びに応じて複数の一時記憶手段からブロックデータを読み出して処理する第４のステップとを有することを特徴とする。
【０００９】
また、本発明による記録媒体は、データを提供する情報提供装置よりネットワークを介して所望のデータを取得する通信手段を備える情報処理装置用のプログラムを記録したコンピュータ読み取り可能な記録媒体であって、データを複数のブロックに分割して複数のブロックデータとする第１のステップと、通信手段を介して複数のブロックデータの一部を複数の受信手段から受信する第２のステップと、複数の受信手段が受信したブロックデータを、受信手段に対応して設置された複数の一時記憶手段に記憶する第３のステップと、データにおけるブロックデータの並びに応じて複数の一時記憶手段からブロックデータを読み出して処理する第４のステップとを情報処理装置に実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００１０】
また、本発明によるプログラムは、データを提供する情報提供装置よりネットワークを介して所望のデータを取得する通信手段を備える情報処理装置用のプログラムであって、データを複数のブロックに分割して複数のブロックデータとする第１のステップと、通信手段を介して複数のブロックデータの一部を複数の受信手段から受信する第２のステップと、複数の受信手段が受信したブロックデータを、受信手段に対応して設置された複数の一時記憶手段に記憶する第３のステップと、データにおけるブロックデータの並びに応じて複数の一時記憶手段からブロックデータを読み出して処理する第４のステップとを情報処理装置に実行させるためのプログラムである。
【００１１】
これにより、本発明の情報処理装置、情報処理方法、その記録媒体およびプログラムにおいては、データを複数のブロックに分割して複数のブロックデータとして、通信手段を介して複数のブロックデータの一部を複数の受信手段により受信して、複数の受信手段が受信したブロックデータを、受信手段に対応して設置された複数の一時記憶手段に記憶して、データにおけるブロックデータの並びに応じて複数の一時記憶手段より選択的にブロックデータを読み出して処理するので、データを受信して、受信したデータ順を変えずに先頭より処理することができる。これにより、例えばデータが受信した順に処理可能なデータである場合には、データ全てを受信し終える前に、ブロックデータ単位での処理が可能となる。すなわち、データの処理を高速化することができる。
【００１２】
【発明の実施の形態】
以下、図面を用いて本発明の実施形態について説明する。
まず、本発明の一実施形態としてＪＰＥＧ圧縮された画像データをネットワーク経由で受信してデコード処理する情報処理装置の概略構成について説明する。本実施形態では、特に、情報処理装置は、ネットワーク経由でＪＰＥＧスペーシャル圧縮された画像データを分割して並列に受信し、受信したＪＰＥＧスペーシャル圧縮された画像データに対してデコード処理を行なう。このＪＰＥＧスペーシャル圧縮された画像データのデコード処理には、画像データの先頭から順次データが必要となるため、分割ダウンロードを並行処理で行なう場合には、データの先頭からデコード処理が必要となる。この為、本発明の効果を示す実施形態としては格好のものである。
【００１３】
図１は、本発明の一実施形態における情報処理装置の概略構成を示す図である。図１に示すように、情報処理装置１は、通信手段１０と、制御手段１１と、受信手段１・１２、受信手段２・１２、…受信手段Ｎ・１２（以下、単に受信手段１２とする）と、ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）手段１・１３、ＦＩＦＯ手段２・１３、…、ＦＩＦＯ手段Ｎ・１３（以下、ＦＩＦＯ手段１３とする）と処理手段１４とを備える構成である。通信手段１０は、種々のデータをインターネット上のＷｅｂサーバ（不図示）より受信したり、Ｗｅｂサーバ（情報提供装置）にアクセスして転送速度やＷｅｂサーバのオペレーティングシステム（ＯＳ）ソフトウエアの種別を調べたりする。
【００１４】
また、制御手段１１は、通信手段１０を介してダウンロードするファイルデータを適切なブロックに分割したり、Ｎ個ある受信手段１２の内の幾つを起動するかなどを決定したりする。尚、本実施形態においては、制御手段１１は、ブロックのデータ容量であるブロック容量を定めてブロックに分割する。
【００１５】
また、受信手段１２は、制御手段１１によりブロックに分割されたブロックデータを受信する。尚、受信手段１２は、図１に示すようにＮ個（Ｎは２以上の自然数）の受信手段１・１２〜受信手段Ｎ・１２から構成される。ＦＩＦＯ手段１３は、Ｎ個の受信手段１２にそれぞれに対応して存在し、受信手段１２が受信したデータを順次記憶し、先に記憶したデータから順次出力するメモリである。尚、ＦＩＦＯ手段１３は、図１に示すようにＮ個のＦＩＦＯ１・１３〜ＦＩＦＯＮ・１３より構成されている。
【００１６】
処理手段１４は、ＦＩＦＯ手段１３が其々出力するＪＰＥＧスペーシャル圧縮された画像データをまとめて、デコード処理を行なう。表示手段１５は、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）や液晶ディスプレイなどの表示装置であり、処理手段１４がデコード処理した画像データを表示する。尚、本実施形態においては、処理手段１４が処理した画像データを表示手段１５において表示しているが、この限りではなく、処理手段１４が処理した画像データをプリンタなどの印刷手段で印刷するなどの形態であってもよい。
【００１７】
上述した受信手段１２と処理手段１４は、ＯＳが１つのアプリケーションの処理を行なう場合の最小単位であるスレッドでそれぞれ構成され、時分割並列処理が可能である。また、情報処理装置１が、２つ以上のＣＰＵ（中央演算装置）を具備する場合には、備えるＣＰＵの個数までのスレッドを時分割ではなく、並列に処理する。
【００１８】
また、制御手段１１は、外部の要因に基づき、実際に利用する受信手段１２の個数や、転送元ファイルのブロック容量を決定する。このブロック容量が決まることにより、制御手段１１は、転送すべきファイルサイズから分割ブロックを決定する。尚、上述した外部の要因とは、例えば転送元となるＷｅｂサーバのＯＳの種類と、セッションの確立時間である。このセッションの確立時間に関する情報は、データ転送に先立ってＷｅｂサーバにアクセスする際に、取得可能である。
【００１９】
以下に、本実施形態における外部の要因（ＷｅｂサーバのＯＳの種類と、セッションの確立時間）に応じたブロック容量例および分割例を示し説明する。
図２は、本実施形態における外部の要因に応じたブロック容量例および分割例を示す図である。図２においては、外部の要因に応じたブロック容量例および分割例としてパタンＡ、Ｂ、Ｃの３種類を示している。図２に示すように外部の要因の項目として項目３１「ＷｅｂサーバのＯＳの種類」と項目３２「セッション確立時間」がある。また、分割例として項目３３「受信手段数」と項目３４「分割数」があり、ブロック容量例として項目３５「ブロック容量」がある。
【００２０】
まず、各パタンにおける外部の要因例について説明する。パタンＡでは、ＷｅｂサーバのＯＳ（項目３１）＝ＸＸ２０００であり、セッション確立時間（項目３２）は１秒である。また、パタンＢでは、ＷｅｂサーバのＯＳ（項目３１）＝ＡＢＣであり、セッション確立時間（項目３２）が０．９９９秒であるので１秒未満としている。また、パタンＣでは、ＷｅｂサーバのＯＳ（項目３１）＝ＸＹＺであり、セッション確立時間（項目３２）が１．００１秒であるので１秒以上としている。また、本実施形態における情報処理装置１は、１Ｍ（メガ）バイトのデータ（ブロックデータ）を５秒でダウンロードする能力があるとする。
【００２１】
次に、上述した外部の要因を基に制御手段１１が決定する分割例およびブロック容量例について説明する。図２に示すように、パタンＡの場合には、制御手段１１は、転送元ファイルのブロック容量（項目３５）＝ｘｘおよびセッション回数＝１を決定することで、利用する受信手段１２の個数（項目３３）＝１を決定する。これにより、制御手段１１は、転送元ファイルの分割数（項目３４）＝１を定める。
【００２２】
また、パタンＢの場合には、制御手段１１は、利用する受信手段１２の個数（項目３３）＝４、転送元ファイルのブロック容量（項目３５）＝ｙｙと決定する。これにより、制御手段１１は、転送元ファイルの分割数（項目３４）＝１２も定める。
【００２３】
同様に、パタンＣの場合には、制御手段１１は、利用する受信手段１２の個数（項目３３）＝３、転送元ファイルのブロック容量（項目３５）＝ｚｚと決定する。これにより、制御手段１１は、転送元ファイルの分割数（項目３４）＝６も定める。
【００２４】
尚、図２に示す関係はデータのダウンロードが開始される前に制御手段１１が予め決定する。また、制御手段１１が決定するブロック容量は、ダウンロード対象となるファイルサイズを分割数で除算したバイト数以上のバイト数であって、１Ｍバイト単位の値となる。
【００２５】
次に、図２に示した各パタンにおける具体例を示し、各パタンにおける通信時間例および受信例について説明する。図３は、図２に示した各パタンにおける通信時間例および受信例を示す図である。図３に示すように、パタンＡ〜Ｃの全てにおいてダウンロード対象となるファイルの容量は１２Ｍバイトである。また、制御手段１１が、パタンＡでブロック容量＝１２Ｍバイト、パタンＢでブロック容量＝１Ｍバイト、パタンＣでブロック容量＝２Ｍバイトと決定しているとする。
【００２６】
また、図３において、ｔａは、パタンＡにおける１つの受信手段１２のダウンロード時間（セッション確立時間を含む）を示し、約６１秒である。また、ｔｂ１〜ｔｂ４は、パタンＢにおける４つの受信手段１２のダウンロード時間を示し、約１８秒である。また、ｔｃ１〜ｔｃ３は、パタンＣにおける３つの受信手段１２のダウンロード時間を示し、約２２秒である。ここで、ダウンロード時間ｔａ、ｔｂ１〜ｔｂ４、ｔｃ１〜ｔｃ３の本数の違いは、図２に示した受信手段１２の利用数の違いである。
【００２７】
また、ダウンロード時間ｔａにおいて、ＳＡは、パタンＡにおけるセッション確立時間であり、ＤＡは、パタンＡにおけるセッション確立後の１ブロック容量分のデータ（ブロックデータ）をダウンロード処理するために要する時間（以下、１ブロックダウンロード時間とする）である。同様に、ダウンロード時間ｔｂ１〜ｔｂ４およびｔｃ１〜ｔｃ３において、ＳＢおよびＳＣは、パタンＢおよびパタンＣのセッション確立時間であり、ＤＢおよびＤＣは、パタンＢおよびパタンＣの１ブロックダウンロード時間を示している。
【００２８】
これにより、パタンＡにおいては、セッション確立時間ＳＡ＝１秒であり１ブロックダウンロード時間ＤＡ＝１２Ｍバイト＊５秒＝６０秒なので、ダウンロード時間は約６１秒となる。尚、パタンＡにおいて受信手段数＝１なのは、ＷｅｂサーバのＯＳであるＸＸ２０００が、例えば、Ｗｉｎｄｏｗｓ（登録商標）２０００のような、複数セッションの同時ダウンロードを許していないＯＳである為である。また、この場合にはダウンロードするファイルを分割する意味が無い為、分割数は１である。
【００２９】
パタンＢにおいては、セッション確立時間ＳＢ＝１秒未満であり１ブロックダウンロード時間ＤＢ＝１Ｍバイト＊５秒＝５秒でセッション回数＝３回なので、ダウンロード時間ｔｂ１〜ｔｂ４の各々は、約１８秒となる。ここで、セッション回数が３回であるのは、セッション確立時間ＳＢが１秒未満と短い為、１つの受信手段１２が３回セッションを確立しても無駄がないという設計思想があるためである。このように、セッション回数を増やすことは、１ブロックダウンロード時間が短縮されるので、処理手段１４がデータ処理を開始する時間がより短縮される。但し、セッション回数を増やしすぎるとセッション確立時間ＳＢに要する時間が増えるので、情報処理装置１とダウンロード先のＷｅｂサーバ間の通信状態や通信能力を考慮してバランスをとることが必要である。
【００３０】
パタンＣにおいては、セッション確立時間ＳＣ＝１秒以上であり１ブロックダウンロード時間ＤＣ＝２Ｍバイト＊５秒＝１０秒でセッション回数＝２回なので、ダウンロード時間ｔｃ１〜ｔｃ３の各々は、約２２秒となる。ここで、セッション回数が２回であるのは、セッション確立時間ＳＣが１秒以上と長い為、１つの受信手段１２が２回セッションとなるようにセッションの確立のしなおす回数を抑えた設計思想があるためである。この場合であっても、セッションの確立のしなおしがない場合に比べると、１回目の１ブロックダウンロードを終えた時点で処理手段１４がデータ処理を開始できるので、データ処理の効率が向上している。
【００３１】
以上に示したように、パタンＢやパタンＣの場合の情報処理装置１においては、例えば、圧縮処理された複数枚の画像データをダウンロードする場合に、途中までダウンロードした分の画像データを圧縮解凍して表示することで、従来より高速な画像表示が実現できる。また、ダウンロード先のＷｅｂサーバのＯＳを検知することで、情報処理装置１は、パタンＡのように、マルチセッションダウンロードを許していないＯＳにも対応することができる。但し、パタンＡの場合は、情報処理装置１のダウンロード時間は従来と変わらない。
【００３２】
尚、上述したパタンＡ〜Ｃにおいては、パタンＢが最も早くダウンロードできるが、現実的には、受信処理などを時分割処理する為、図３に示した理論値以上のダウンロード時間を要することに注意する必要がある。
【００３３】
次に、図２に示したパタンＣの場合における情報処理装置１の具体的な構成例を示し、上述した実施形態の具体的な実施例の説明を行う。
図４は、図２に示したパタンＣの場合における情報処理装置１の具体的な構成例である。本実施例では、図４に示すように、ネットワーク上のＪＰＥＧスペーシャル圧縮されたデータファイル４１（データ長５．２３Ｍバイト）を３つの受信手段１２である受信スレッド４２が並列処理にてダウンロードする処理および、処理手段１４であるデコードスレッドが複数のＦＩＦＯ手段１３よりダウンロードされたデータを読み出してデコードする処理について説明する。
【００３４】
また、本実施例では、パタンＣに示すように、ネットワーク側のデータファイル４１は、１Ｍ単位で、６つの仮想的なブロック（１Ｍ×５と０．２３Ｍ×１）に分割される。図４には、データファイル４１が上から順に１番目から６番目までの仮想的な６つのブロックに分割されている様子を示している。また、受信スレッド＃０・４２（受信手段１・１２）は、１番目と４番目のブロックを順次ダウンロードしＦＩＦＯ１・１３へ入力する。同様に、受信スレッド＃１・４２（受信手段２・１２）は、２番目と５番目のブロックを順次ダウンロードしＦＩＦＯ２・１３へ入力する。同様に、受信スレッド＃２・４２（受信手段３・１２）は、３番目と６番目のブロックを順次ダウンロードしＦＩＦＯ３・１３へデータを入力する。
【００３５】
この時、データファイル４１の６番目のブロックは、ファイルサイズが端数となり、０．２３Ｍバイトである。尚、以下の説明において受信スレッド＃０・４２、受信スレッド＃１・４２、受信スレッド＃２・４２をまとめて受信スレッド４２と呼ぶこととする。また、上述したようにＦＩＦＯ１・１３、ＦＩＦＯ２・１３、ＦＩＦＯ３・１３をまとめてＦＩＦＯ手段１３とする。
【００３６】
次に、ダウンロードに際して、受信スレッド４２は、Ｗｅｂサーバに対し、転送すべき圧縮ファイル（データファイル４１）の何バイト目からダウンロードするかの指示が可能であるため、この仕組みを利用する。必要な量、この場合では１Ｍバイト（但し、６番目のブロックの時は０．２３Ｍバイト）を受信したところでセッションを切断し、これ以上ダウンロードしないようにすれば、転送元ファイル（データファイル４１）の任意の部分を取得することができる。すなわち、情報処理装置１は、Ｗｅｂサーバより転送元ファイルにおける所望のブロックを転送することが可能となる。
【００３７】
また、受信スレッド４２がダウンロードしたデータを、ＦＩＦＯ手段１３へ挿入する処理は、１２８Ｋバイトのバッファ単位で挿入する処理である。各ＦＩＦＯ手段１３の容量は、ダウンロードされるデータのブロックサイズ（＝データファイル４１におけるブロックのブロック容量）に応じて構成される。本実施例では、ブロックサイズは１Ｍバイトであるため、図４に示すように、ＦＩＦＯ手段１３は、１２８Ｋバイトのバッファ１３ｃを８個備える構成であり、これにより１バイト分の構成となっている。ここで、注意すべき点は、各受信スレッド４２は、１Ｍバイトのデータを全てダウンロードしてバッファに挿入するのでなく、最大１２８Ｋバイト単位でダウンロードしてＦＩＦＯ手段１３に挿入する。
【００３８】
各ＦＩＦＯ手段１３には、変数記憶領域１３ｄに書き込み済ポジション変数ｗｒＰｏｓｉｔｉｏｎが格納されていて、各ＦＩＦＯ手段１３内でいくつバッファ１３ｃに書き込みが完了したかを示す。尚、書き込み済ポジション変数ｗｒＰｏｓｉｔｉｏｎは、０から開始する番号であり、＋１するとバッファ１３ｃのバッファ番号（本実施形態では１〜８）となる。すなわち、各バッファ１３ｃは８個である為、ＦＩＦＯ手段１３の８個目のバッファ１３ｃに書き込み完了した場合は、書き込み済ポジション変数ｗｒＰｏｓｉｔｉｏｎ＝７である。また、８個目を超えたバッファ１３ｃへの書き込みは、すでにデータがバッファ１３ｃより取り出されていることを前提に再度先頭のバッファ１３ｃから書き込みを行なう。この場合、書き込み済ポジション変数ｗｒＰｏｓｉｔｉｏｎは、８以降の数字で示すことで、２度目（またはそれ以上の回数）の書き込みであるか否かを判別できる。
【００３９】
実施例である図４においては、ＦＩＦＯ１・１３については、２番目のバッファ１３ｃに対して２度目の書き込み中で、１番目のバッファ１３ｃに対して２度目の書き込み済みなので、書き込み済ポジション変数ｗｒＰｏｓｉｔｉｏｎ＝８である。また、ＦＩＦＯ２・１３およびＦＩＦＯ３・１３については、双方ともに、５番目のバッファ１３ｃに対して１度目の書き込み中で、４番目のバッファ１３ｃに対して１度目の書き込み済みなので、書き込み済ポジション変数ｗｒＰｏｓｉｔｉｏｎ＝３である。
【００４０】
ＦＩＦＯ手段１３からのデータの取出しは、本実施例ではデコードスレッド４４が行なう。デコードスレッド４４（図１の処理手段１４）は、ＦＩＦＯ１・１３⇒ＦＩＦＯ２・１３⇒ＦＩＦＯ３・１３⇒ＦＩＦＯ１・１３⇒ＦＩＦＯ２・１３⇒ＦＩＦＯ３・１３⇒、…と受信済みのデータを順次１Ｍづつ取り出す。取り出す際には、最大１２８Ｋバイトのバッファ単位で取り出し、それを各ＦＩＦＯ手段１３から最大８個取り出す。この取り出しにより、デコードスレッド４４は、ネットワーク側のＷｅｂサーバにあるファイル構成順序とおなじ構成でデータをデコードできる。
【００４１】
ＦＩＦＯ手段１３内のバッファ１３ｃの内いくつ読み出し完了したかは、変数記憶領域４３に格納されるポジション変数ｒｄＰｏｓｉｔｉｏｎで示される。変数記憶領域４３は、上述した３つのＦＩＦＯ手段１３の全体につき一つ備えられている。また、ポジション変数ｒｄＰｏｓｉｔｉｏｎは、０から開始する番号で記録されている。すなわち、図４のように、デコードスレッド４４が、ＦＩＦＯ１・１３の５番目のバッファ１３ｃを読み込み中の場合には、４番目のバッファを読み込み完了しているため、ポジション変数ｒｄＰｏｓｉｔｉｏｎ＝３が格納されている。
【００４２】
図４では、初めにＦＩＦＯ１・１３にデータが蓄積され始め、それをデコードスレッド４４が取り出している。その間には、時分割並列処理にて受信スレッド＃１・４２、受信スレッド＃２・４２にもデータが蓄積し始める。ここでいう時系列並行処理とは、受信スレッド＃１・４２がデータファイル４１の２番目のブロックを順次ダウンロードして、ＦＩＦＯ２・１３の１番目のバッファ１３ｃにデータを書き込むときに生じる書き込み待ち時間を利用して、受信スレッド＃２・４３がデータファイル４１の３番目のブロックを順次ダウンロードして、ＦＩＦＯ３・１３の１番目のバッファ１３ｃにデータを書き込む処理のこという。ここで、あるバッファ１３ｃより全てのデータが読み出された場合には、もうそのバッファ１３ｃ内にデータを保持している必要が無いため、そのバッファ１３ｃは開放される。また、受信スレッド４２は、開放されたバッファ１３ｃに新たに受信したデータの上書きをする。
【００４３】
ここで、図４に示した受信スレッド＃０・４２およびＦＩＦＯ１・１３に注目して説明する。図４のＦＩＦＯ１・１３は、上から４番目のバッファ１３ｃまで読み込み完了しているので、１〜４番目のバッファ１３ｃを開放済みである。これにより、受信スレッド＃０・４２が、１〜２番目のバッファ１３ｃに２度目の書き込みを行なっている。すなわち、受信スレッド＃０・４２が、Ｗｅｂサーバ側のデータファイル４１から、４Ｍバイト目以降のデータの読み込みを開始している。図４に示すように、受信スレッド＃０・４２は、既に４Ｍバイトから１２８Ｋバイト分はデータを受信済みでありＦＩＦＯ１・１３の先頭のバッファに記録済みである。更に、現在、受信スレッド＃０・４２は、４Ｍと１２８Ｋバイト目以降のデータをダウンロードして、ＦＩＦＯ１・１３の２番目のバッファ１３ｃに記録中である。
【００４４】
以上に示したように、デコードスレッド４４が一つのＦＩＦＯ手段１３からデータの読み込み中に、他のＦＩＦＯ手段１３に新たに受信したデータが蓄積されているため、情報処理装置１としては、受信待ち時間無くデータ受信ができている。すなわち、受信スレッド４２が受信しＦＩＦＯ手段１３に挿入したデータを、デコードスレッド４４が、ＦＩＦＯ１・１３⇒ＦＩＦＯ２・１３⇒ＦＩＦＯ３・１３⇒ＦＩＦＯ１・１３⇒ＦＩＦＯ２・１３⇒ＦＩＦＯ３・１３⇒、…と順次読み込める可能性が高いといえる。これにより、デコードスレッド４４は、高速なデコード処理を行なうことができる。
【００４５】
また、ＦＩＦＯ１・１３、ＦＩＦＯ２・１３、ＦＩＦＯ３・１３の各データ格納最大サイズは１Ｍバイトであり、受信スレッド４２の受信するブロックサイズに合わせて構成されている。これにより、デコードスレッド４４におけるデコード処理速度が受信スレッド４２による受信速度に追いついてしまうことで、データの受信の為のＦＩＦＯ手段１３からの受信待ちとなりにくい構成となっている。
【００４６】
また、仮に、ＦＩＦＯ手段１３のデータ格納最大サイズが例えば５１２Ｋバイトであって、受信スレッド４２が受信するブロックサイズの１Ｍバイトより小さい場合には、以下の不具合が起こり得る。例えば、受信スレッド４２がＦＩＦＯ手段１３に１２８Ｋバイトのバッファ１３ｃの格納サイズ単位で受信データを挿入する際に、デコードスレッド４４のデコード処理が遅い場合にはＦＩＦＯ手段１３の記憶容量フル（最大記憶容量となるデータを記憶した状態）となる状態が発生し、受信データを挿入できない無駄が発生する。
【００４７】
また、仮に、ＦＩＦＯ手段１３のデータ格納最大サイズが例えば２Ｍバイトと、受信スレッド４２が受信するブロックサイズの１Ｍバイトより大きい場合には、以下の不具合が起こり得る。例えば、受信スレッド４２がＦＩＦＯ手段１３に受信データを挿入する際、受信するブロックサイズ以上のＦＩＦＯデータ格納領域には、ダウンロード対象であるデータファイル４１の４Ｍバイト目以降のデータを受信スレッド４２が挿入することになるが、デコードスレッド４４にとっては、最初から１Ｍバイト分のデータの次に必要なデータは１Ｍから２Ｍまでのデータが必要なのであり、４Ｍバイト目以降のデータは早急に必要ではないため、多少の無駄となる。このため、ＦＩＦＯ手段１３のデータ格納最大サイズは、受信スレッド４２の受信するブロックサイズに合わせて構成されていることが最適である。
【００４８】
次に、ＦＩＦＯ手段１３における、データ書き込みとデータ取り出しについて詳細に説明する。データの書き込み、読み出しに関連するＦＩＦＯ手段１３の排他制御に関してはカウンティングセマフォを利用する。図４に示すように、各ＦＩＦＯ手段１３について、書込許可セマフォ１３ａ、読出許可セマフォ１３ｂが存在する。これらの書込許可セマフォ１３ａおよび読出許可セマフォ１３ｂは、カウンティングセマフォであり、ＦＩＦＯ手段１３のバッファ１３ｃに対する書き込み／読み出し制御に利用されている。
【００４９】
書込許可セマフォ１３ａのカウント初期値はバッファ１３ｃの数と同じ８であり、読出許可セマフォ１３ｂのカウント初期値は０となっている。受信スレッド４２がセマフォを取得すると書込許可セマフォ１３ａのカウント値がひとつ減り、０になると、セマフォ取得ができなくなる。これにより、受信スレッド４２が書込許可セマフォ１３ａのセマフォを開放するまで待ちが発生し排他制御が達成される。また、受信スレッド４２が書込許可セマフォ１３ａのセマフォを開放すると、読出許可セマフォ１３ｂのカウント値がひとつ増える。
【００５０】
次に、受信スレッド４２がＦＩＦＯ手段１３にデータ書込みを行なう処理について説明する。
図５は、受信スレッド４２がＦＩＦＯ手段１３にデータ書込みを行なう処理を示すフローチャートである。まず、データ書込みの処理に先立って、受信スレッド４２は、Ｗｅｂサーバから１Ｍバイト分のデータを受信する為に、ネットワークを介してＷｅｂサーバとセッションを確立する。尚、セッションの確立後には、Ｗｅｂサーバ側のデータファイル４１のどの部分から読み込むかの指定が可能である。
【００５１】
次に、ステップ４０１において、受信スレッド４２は、Ｗｅｂサーバとのセッションが確立したら、これからダウンロードするデータを、どのバッファ１３ｃに書き込むかについて、書き込み済ポジション変数ｗｒＰｏｓｉｔｉｏｎを参照することで算出し、該当するバッファ１３ｃを検索する。具体的には、受信スレッド４２は、各ＦＩＦＯ手段１３の書き込み済ポジション変数ｗｒＰｏｓｉｔｉｏｎを用いて以下の式１により、ＦＩＦＯ手段１３の先頭からのバッファ番号を算出する。
バッファ番号＝（ｗｒＰｏｓｉｔｉｏｎ＋１）％８  …  式１
尚、式１において、「％」は、たとえば任意の変数Ｘ，Ｙに対してＸ％Ｙとした場合に、ＸをＹで除算した際の余りの値を示す演算子であるとする。これにより、受信スレッド４２は、算出したバッファ番号のバッファ１３ｃを検索する。
【００５２】
次に、ステップ４０２において、受信スレッド４２は、検索したバッファ１３ｃが空いているか否かを判定するため、書込許可セマフォ１３ａを取得する。すなわち、書込許可セマフォ１３ａが取得できれば、バッファ１３ｃが空いていて利用できることになる。また、書込許可セマフォ１３ａが取得できない場合は、読み込みタスクがＦＩＦＯ手段１３を読みきれず、ＦＩＦＯ手段１３のバッファ１３ｃがデータで一杯の状態である。この時、受信スレッド４２において、セマフォ待ちが発生する。
【００５３】
次に、ステップ４０３において、受信スレッド４２は、ＦＩＦＯ手段１３にデータの書込みを行なう。具体的には、受信スレッド４２は、書込許可セマフォ１３ａの初期値は８なので、少なくともバッファ１３ｃの８個分はセマフォ待ちが発生することなく書き込みが可能となる。すなわち、受信スレッド４２は、８回セマフォを取得でき、ネットワーク上から当該バッファ１３ｃへ最大１２８Ｋバイトのデータの書き込みを行なう。書き込み完了後、図４に示した各バッファ１３ｃに存在するバッファマネジメントテーブル内のｓｔａｒｔＰｏｓ変数１３ｅにファイルの先頭を０バイトとしたときに、何バイト目からデータが書き込まれているか記載され、ｅｎｄＰｏｓ変数１３ｆに、何バイト目までデータが書き込まれているかを記載する。
【００５４】
上述したｓｔａｒｔＰｏｓ変数１３ｅとｅｎｄＰｏｓ変数１３ｆは、ファイルの末尾などに端数が存在するとき、バッファ１３ｃの記憶領域が完全に埋まらないため、どこまでデータが書き込まれているかを指定する必要が有る為に管理する変数である。尚、図４においては、図を見やすくするためにＦＩＦＯ手段１３中の一番上のバッファ１３ｃのｓｔａｒｔＰｏｓ変数とｅｎｄＰｏｓ変数にのみ符号１３ｅ、１３ｆを付与したが、図４からも明らかなように、他の７つのバッファ１３ｃの其々が、ｓｔａｒｔＰｏｓ変数１３ｅとｅｎｄＰｏｓ変数１３ｆを有する。
【００５５】
次に、ステップ４０４において、受信スレッド４２は、バッファ１３ｃへのデータの書き込みを終えると、書き込み済ポジション変数ｗｒＰｏｓｉｔｉｏｎをインクリメントする。次に、ステップ４０５において、受信スレッド４２は、読出許可セマフォ１３ｂを開放する。読出許可セマフォ１３ｂが開放されれば、下記に説明するデコードスレッド４４が読み出し待ちとなっている場合、読出許可セマフォ１３ｂのセマフォが取得できるようになり、ただちに読み出しが可能となる。
【００５６】
次に、デコードスレッド４４がバッファ１３ｃよりデータを読み出してデコードする処理について説明する。
図６は、デコードスレッド４４がバッファ１３ｃよりデータを読み出してデコードする処理を示すフローチャートである。ここで、バッファ１３ｃより読み出すデータは、ＪＰＥＧスペーシャル圧縮された画像ファイルの一部なので、ファイルの先頭から順次デコード処理する必要がある。そこで、ステップ５０１において、デコードスレッド４４は、上記ポジション変数ｒｄＰｏｓｉｔｉｏｎを参照してデータを読み出す対象となるバッファ１３ｃを検索する。
【００５７】
具体的には、デコードスレッド４４は、既に読み込みを終えたバッファ番号を示すポジション変数ｒｄＰｏｓｉｔｉｏｎを基に、どのＦＩＦＯ手段１３を読み出すかを示すＦＩＦＯ番号を以下の式２を用いて算出する。
ＦＩＦＯ番号＝（（ｒｄＰｏｓｉｔｉｏｎ＋１）／８）％３  …  式２
但し式２の「％」は、上述した式１で示した演算子と同じである。
次に、デコードスレッド４４は、ＦＩＦＯ番号で指定されたＦＩＦＯ手段１３におけるバッファグループ（８つのバッファ１３ｃ）内の何れのバッファ１３ｃよりデータを読み出すかを示す読み出しバッファ番号を以下の式３を用いて算出する。
読み出しバッファ番号＝（ｒｄＰｏｓｉｔｉｏｎ＋１）％８  …  式３
但し式３の「％」は、上述した式１で示した演算子と同じである。
以上の式２および式３により求めたＦＩＦＯ番号およびバッファ番号を基に、デコードスレッド４４は、バッファ１３ｃを検索する。
【００５８】
次に、ステップ５０２において、デコードスレッド４４は、検索したバッファ１３ｃに対してデータが読み出せる状態か否かを、検索したバッファ１３ｃを有するＦＩＦＯ手段１３の読出許可セマフォ１３ｂのセマフォを取得することで判定する。ここで、デコードスレッド４４が読出許可セマフォ１３ｂのセマフォを取得できた場合には、データがバッファ１３ｃに書き込み済みの状態なので、そのバッファ１３ｃからデータ読み出しに移行できる。また、デコードスレッド４４が読出許可セマフォ１３ｂのセマフォを取得できない場合には、データがバッファ１３ｃにまだ書き込まれておらず、読み出しの用意ができていない為、セマフォ待ちが発生する。
【００５９】
セマフォが取得できた場合には、ステップ５０３に進み、デコードスレッド４４は、読み出し対象となるバッファ１３ｃのデータがデコード処理のために必要なデータであるか否かを判定する。具体的には、データのデコードに際して、データは全て必要であるが、ファイルフォーマットのうち、データのヘッダにおいて読み込む必要の無いものがたまたま全て今対象としているバッファ１３ｃのデータである場合（ステップ５０３のＮｏ）には、デコードスレッド４４は、バッファ１３ｃからのデータの読み出しをスキップして、ステップ５０５へ進む。また、対象としているバッファ１３ｃのデータがデコードに必要な場合（ステップ５０３のＹｅｓ）には、ステップ５０４に進み、デコードスレッド４４は、バッファ１３ｃからデータの読み出しを行いデコード処理に利用する。
【００６０】
次に、ステップ５０５において、デコードスレッド４４は、データをデコード処理に利用した後、次のデータ読み出しのため、ｒｄＰｏｓｉｔｉｏｎをインクリメントする。次に、ステップ５０６において、デコードスレッド４４は、今扱っているバッファ１３ｃを不要なバッファ１３ｃとして受信スレッド４２が再利用できる様に書込許可セマフォ１３ａを開放する。書込許可セマフォ１３ａが開放されれば、上述したように、受信スレッド４２がデータを書き込むことが可能となる。また、データのデコード処理が更に必要であれば、デコードスレッド４４は、図６に示したステップ５０１〜５０６の処理を再度行なう。
【００６１】
以上に示すように、本実施形態の情報処理装置１においては、Ｗｅｂサーバにあるデータを高速に並列受信し、しかもデータ順を変えずに先頭より処理することができる。これにより、情報処理装置１は、圧縮画像などをダウンロードしてデコードして表示するときに、従来と比べて高速な画像表示を行なうことができる。
尚、上述した実施形態では、情報処理装置１が行なう各処理は、ソフトウエア処理として説明を行ったが、この限りではなく、各処理の一部もしくは全てがハードウェア処理において達成されてもよい。また、情報処理装置１は、図示していないが、マウスやキーボードなどの入力装置を具備してもよい。
【００６２】
また、図１に示した情報処理装置１の各処理部は、専用のハードウェアにより実現されるものであってもよく、また、各処理部はメモリおよびＣＰＵにより構成され、各処理部の機能を実現する為のプログラムをメモリに読み込んで実行することによりその機能を実現させるものであってもよい。
また、上記メモリは、ハードディスク装置や光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、ＣＤ−ＲＯＭ等の読み出しのみが可能な記録媒体、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような揮発性のメモリ、あるいはこれらの組み合わせによるコンピュータ読み取り、書き込み可能な記録媒体より構成されるものとする。
【００６３】
また、図１において各種処理を行なう処理部の機能を実現する為のプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各処理を行っても良い。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【００６４】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００６５】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現する為のものであっても良い。さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００６６】
また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体およびプログラムプロダクトは、本発明の範疇に含まれる。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【００６７】
【発明の効果】
以上説明したように、本発明の情報処理装置、情報処理方法、その記録媒体およびプログラムにおいては、データを複数のブロックに分割して複数のブロックデータとして、通信手段を介して複数のブロックデータの一部を複数の受信手段により受信して、複数の受信手段が受信したブロックデータを、受信手段に対応して設置された複数の一時記憶手段に記憶して、データにおけるブロックデータの並びに応じて複数の一時記憶手段より選択的にブロックデータを読み出して処理するので、データを受信して、受信したデータ順を変えずに先頭より処理することができる。これにより、例えばデータが受信した順に処理可能なデータである場合には、データ全てを受信し終える前に、ブロックデータ単位での処理が可能となる。すなわち、データの処理を高速化することができる。具体的には、圧縮画像などをダウンロードしてデコードして表示するときに、高速な表示を実現することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態における情報処理装置の概略構成を示す図である。
【図２】本実施形態における外部の要因に応じたブロック容量例および分割例を示す図である。
【図３】図２に示した各パタンにおける通信時間例および受信例を示す図である。
【図４】図２に示したパタンＣの場合における情報処理装置１の具体的な構成例を示す図である。
【図５】受信スレッド４２がＦＩＦＯ手段１３にデータ書込みを行なう処理を示すフローチャートである。
【図６】デコードスレッド４４がバッファ１３ｃよりデータを読み出してデコードする処理を示すフローチャートである。
【符号の説明】
１      情報処理装置
１０    通信手段
１１    制御手段
１２    受信手段１、受信手段２、…、受信手段Ｎ
１３    ＦＩＦＯ１、ＦＩＦＯ２、…、ＦＩＦＯＮ
１３ａ  書込許可セマフォ
１３ｂ  読出許可セマフォ
１３ｃ  バッファ
１３ｄ  変数記憶領域
１３ｅ  ｓｔａｒｔＰｏｓ変数
１３ｆ  ｅｎｄＰｏｓ変数
１４    処理手段
１５    表示手段
４１    データファイル
４２    受信スレッド＃０、受信スレッド＃１、受信スレッド＃２
４３    変数記憶領域
４４    レコードスレッド
【図１】
2005018631.tif 000003
【図２】
2005018631.tif 000004
【図３】
2005018631.tif 000005
【図４】
2005018631.tif 000006
【図５】
2005018631.tif 000007
【図６】
2005018631.tif 000008